MjAwMC0wNi0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChjLWNvbW1vbi5vKTogRG9uJ3QgZGVwZW5kIG9uIGMtdHJlZS5oIG9yIGMtbGV4LmguCgkqIGMtY29tbW9uLmMgKHJpZHBvaW50ZXJzKTogRGVjbGFyZS4KCSogYy1jb21tb24uaCAoZW51bSByaWQpOiBEZWNsYXJlLgoJKE5PUklEKTogTGlrZXdpc2UuCgkocmlkcG9pbnRlcnMpOiBMaWtld2lzZS4KCSogYy1sZXguYyAocmlkcG9pbnRlcnMpOiBEb24ndCBkZWNsYXJlLgoJKGluaXRfbGV4KTogSW5pdGlhbGl6ZSByaWRwb2ludGVycy4KCSogYy1sZXguaCAoZW51bSByaWQpOiBEb24ndCBkZWNsYXJlLgoJKE5PUklEKTogTGlrZXdpc2UuCgkoUklEX0ZJUlNUX01PRElGSUVSKTogTGlrZXdpc2UuCgkocmlkcG9pbnRlcnMpOiBMaWtld2lzZS4KCjIwMDAtMDYtMzAgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEvc29tLmggKEFTTV9XRUFLRU5fTEFCRUwpOiBFeHBvcnQgd2VhayBkYXRhIHN5bWJvbHMgc28gdGhhdCB0aGV5CgloYXZlIGdsb2JhbCBzY29wZS4KCjIwMDAtMDYtMzAgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW52b2tlLnRleGkgKC1XcmV0dXJuLXR5cGUpOiBJbiBDKyssIGEgbWlzc2luZyByZXR1cm4gdHlwZSBpcwoJYWx3YXlzIGFuIGVycm9yLgoKMjAwMC0wNi0zMCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVuCgl0eXBlcyBhbmQgdHlwZSBkZWNscyBmb3IgYWxpZ25tZW50LgoKMjAwMC0wNi0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcC50ZXhpOiBEb2N1bWVudCAjcHJhZ21hIEdDQyBkZXBlbmRlbmN5CgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlKTogU2V0IGRhdGUgdG8gdW5rbm93bi4KCShfY3BwX2NvbXBhcmVfZmlsZV9kYXRlKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWRfaW5jbHVkZV9maWxlKTogU2V0IGZpbGUgZGF0ZS4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgaW5jbHVkZV9maWxlKTogQWRkIGRhdGUgbWVtYmVyLgoJKF9jcHBfY29tcGFyZV9maWxlX2RhdGUpOiBQcm90b3R5cGUuCgkqIGNwcGxpYi5jIChwYXJzZV9pbmNsdWRlKTogQWRkIHRyYWlsIHBhcmFtZXRlci4gQWRqdXN0LgoJKGRvX2luY2x1ZGUpOiBBZGp1c3QgcGFyc2VfaW5jbHVkZSBjYWxsLgoJKGRvX2ltcG9ydCk6IExpa2V3aXNlLgoJKGRvX2luY2x1ZGVfbmV4dCk6IExpa2V3aXNlLgoJKGdjY19wcmFnbWFzKTogQWRkIGRlcGVuZGVuY3kgcHJhZ21hLgoJKGRvX3ByYWdtYV9kZXBlbmRlbmN5KTogTmV3IHByYWdtYS4KCjIwMDAtMDYtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9sb2Nfb3BlcmFuZHMpOiBEb24ndCBhYm9ydCBvbiBjb2RlcyB0aGF0IGhhdmUKCW5vIG9wZXJhbmRzLgoKMjAwMC0wNi0yOSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogUmV0dXJuIE5PX1JFR1MgZm9yCglhIHZvbGF0aWxlIG1lbSBhbmQgRlJfUkVHUy4KCjIwMDAtMDYtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIGMtY29tbW9uLmgsIG5vdCBjLWxleC5oIG9yIGMtdHJlZS5oLgoJKiBjLWNvbW1vbi5oIChmbGFnX2NvbnN0X3N0cmluZ3MpOiBEZWNsYXJlLgoJKHdhcm5fZm9ybWF0KTogTGlrZXdpc2UuCgkoZmxhZ190cmFkaXRpb25hbCk6IExpa2V3aXNlLgoJKGZsYWdfaXNvYzk5KTogTGlrZXdpc2UuCgkod2Fybl9wYXJlbnRoZXNlcyk6IExpa2V3aXNlLgoJKHdhcm5fY29udmVyc2lvbik6IExpa2V3aXNlLgoJKENfVFlQRV9PQkpFQ1RfUCk6IExpa2V3aXNlLgoJKENfVFlQRV9JTkNPTVBMRVRFX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKENfVFlQRV9PQkpFQ1RfT1JfSU5DT01QTEVURV9QKTogTGlrZXdpc2UuCgkoQ19FWFBfT1JJR0lOQUxfQ09ERSk6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkobHZhbHVlX3ApOiBMaWtld2lzZS4KCShkZWZhdWx0X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShjb21tb25fdHlwZSk6IExpa2V3aXNlLgoJKiBjLXRyZWUuaCAoQ19UWVBFX09CSkVDVF9QKTogUmVtb3ZlLgoJKENfVFlQRV9JTkNPTVBMRVRFX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKENfVFlQRV9PQkpFQ1RfT1JfSU5DT01QTEVURV9QKTogTGlrZXdpc2UuCgkoQ19FWFBfT1JJR0lOQUxfQ09ERSk6IExpa2V3aXNlLgoJKGNvbW1vbl90eXBlKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShsdmFsdWVfcCk6IExpa2V3aXNlLgoJKGZsYWdfY29uc3Rfc3RyaW5ncyk6IExpa2V3aXNlLgoJKHdhcm5fZm9ybWF0KTogTGlrZXdpc2UuCgkod2Fybl9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoZmxhZ190cmFkaXRpb25hbCk6IExpa2V3aXNlLgoJKGZsYWdfaXNvYzk5KTogTGlrZXdpc2UuCgkod2Fybl9wYXJlbnRoZXNlcyk6IExpa2V3aXNlLgoKMjAwMC0wNi0yOSAgSmFtZXMgRS4gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saW51eC5oIChMSU5LX1NQRUMpOiBDaGFuZ2Ugc28uMSB0byBzby4yLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChNT0RFU19USUVBQkxFX1ApOiBPbmx5IHRpZSBpZiBtb2RlIGNsYXNzIGlzIHRoZQoJc2FtZS4gIE9ubHkgdGllIFhGbW9kZSB3aXRoIFhGbW9kZS4KCjIwMDAtMDYtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtZGVjbC5jLCB0aW1ldmFyLmMsIHRsaW5rLmM6IEluY2x1ZGUgaW50bC5oLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcHMuCgoyMDAwLTA2LTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChtYWluKTogT24gYW4gSUEtNjQsIG1ha2UgZmxhZ191bndpbmRfdGFibGVzIGRlZmF1aXQKCXRvIHRydWUuCgoyMDAwLTA2LTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKEpNUF9CVUZfU0laRSk6IFNpemUgaXMgaW4gUG1vZGUgdW5pdHMsIG5vdAoJYnl0ZXM6IHJlbW92ZSB0aGUgbXVsdGlwbHkgYnkgOC4KCjIwMDAtMDYtMjkgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogcnRsLmMgOiBSZXZlcnQgTkxTIGNoYW5nZXMuCgkqIGdjYy5jIDogRml4IGJ1ZyBpbiBkaXNwbGF5X2hlbHAgaW50cm9jZWQgYnkgbXkgbGFzdCBjaGFuZ2VzLgoKV2VkIEp1biAyOCAyMTowOTozMyAyMDAwICAgUmFqYSBSIEhhcmluYXRoIDxoYXJpbmF0aEBjcy51bW4uZWR1PgoKCSogZGJ4b3V0LmMgKGRieG91dF9zeW1ib2wsIGNhc2UgUkVTVUxUX0RFQ0wsIFZBUl9ERUNMKTogVXNlCglERUNMX0NPTlRFWFQsIG5vdCBERUNMX0ZJRUxEX0NPTlRFWFQuCgoyMDAwLTA2LTI5ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBmbG93LmMgKGZsb3dfZGVwdGhfZmlyc3Rfb3JkZXJfY29tcHV0ZSk6IEZpeCBhbGdvcml0aG0uCgoyMDAwLTA2LTI4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGMtZGVjbC5jIDogTWFyayBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbi4KCShwYXJtbGlzdF90YWdzX3dhcm5pbmcpOiBVc2UgZGlzdGluY3QgbWVzc2FnZXMgaW5zdGVhZAoJb2YgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuCgkqIGRpYWdub3N0aWMuYyAodl9tZXNzYWdlX3dpdGhfZGVjbCk6IE1hcmsgc3RyaW5nIGZvciB0cmFuc2xhdGlvbi4KCSogZ2NjLmM6IE1hcmsgbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKGRpc3BsYXlfaGVscCk6IENvbWJpbmUgbWVzc2FnZXMgaW50byBvbmUgc3RyaW5nIHdoZXJlIG5lY2Vzc2FyeS4KCSogbWlwcy10ZmlsZTogQWRkIGludGwuaC4gTWFyayBtZXNzYWdlcyBmb3IgdHJhbnNsYXRpb24uCgkqIHJ0bC5jIChmYXRhbF93aXRoX2ZpbGVfYW5kX2xpbmUpOiBNb2RpZnkgZnVuY3Rpb24gZm9yIE5MUy4gTWFyawoJbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKiB0aW1ldmFyLmM6IE1hcmsgbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKiB0bGluay5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoKV2VkIEp1biAyOCAxNTozOToyNiAyMDAwICBEb25uIFRlcnJ5IChkb25udGVAbWljcm9zb2Z0LmNvbSkKCgkqIGkzODYtaW50ZXJpeC5oIChTVFJJUF9OQU1FX0VOQ09ESU5HKTogRGVjbGFyZSBfbmV3X25hbWUgcHJvcGVybHkuCgoJKiBhbHBoYS9hbHBoYS1pbnRlcml4Lmg6IERlbGV0ZSByZWR1bmRhbnQgLUFzeXN0ZW0oaW50ZXJpeCksCgl1c2UgLWlzeXN0ZW0gaW5zdGVhZCBvZiAtaWRpcmFmdGVyLgoJKiBpMzg2L2kzODYtaW50ZXJpeC5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9sb2Nfb3BlcmFuZHMpOiBEb24ndCBzdXBwb3J0ID4xIGJ5dGUgb3V0cHV0Cgl1bmxlc3MgRFdBUkYyX0RFQlVHR0lOR19JTkZPIGlzIGRlZmluZWQuCgkoQVNNX09VVFBVVF9EV0FSRl8qKTogV3JhcCBub3JtYWwgb3V0cHV0IGRlZnMgd2l0aCAjaWZuZGVmcy4KCjIwMDAtMDYtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc3VtbWFyaXplX2luc24pOiBJZ25vcmUgU0NSQVRDSC4KCjIwMDAtMDYtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3BwbGV4LmMgKG91dHB1dF9saW5lX2NvbW1hbmQpOiBPdXRwdXQgY29ycmVjdCAjbGluZSBpZiBhIGhlYWRlcgoJaXMgaW5jbHVkaW5nIGl0c2VsZiBhbmQgaXMgbm90IHByb3RlY3RlZCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbi4KCjIwMDAtMDYtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlKTogSWYgb3BlbigyKSByZXR1cm5zIEVNRklMRSBvcgoJRU5GSUxFLCBjbG9zZSBhbGwgY2FjaGVkIGZpbGUgZGVzY3JpcHRvcnMgYW5kIHRyeSBhZ2Fpbi4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzCgllYWNoIGhlYWRlciBpcyBpbmNsdWRlZC4KCShjbG9zZV9jYWNoZWRfZmQpOiBOZXcgZnVuY3Rpb24uCgkqIGNwcGhhc2guaCAoc3RydWN0IGluY2x1ZGVfZmlsZSk6IFJlbmFtZSBiZWZvcmUgdG8KCWluY2x1ZGVfY291bnQ7IGFsbCB1c2VycyB1cGRhdGVkLiAgTWFrZSBpbmNsdWRlX2NvdW50IGFuZCBzeXNwCgl1bnNpZ25lZCBzaG9ydC4KCSogY3BwaW5pdC5jIChjcHBfZmluaXNoKTogSWYgLUgsIHJlcG9ydCBoZWFkZXJzIHRoYXQgY291bGQgdXNlCglyZWluY2x1ZGUgZ3VhcmRzLgoJKHJlcG9ydF9taXNzaW5nX2d1YXJkKTogTmV3IGZ1bmN0aW9uLgoKV2VkIEp1biAyOCAxNDo0Njo1OCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKHByb2xvZ3VlX3NldF9nb3QpOiBTZXQgbGVuZ3RoX2ltbWVkaWF0ZSBmaWVsZC4KCSh0ZXN0cWlfY2Nub18xKTogIEFkZCBtaXNzaW5nICdAJyBjaGFyYWN0ZXIuCgoyMDAwLTA2LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyk6IFVzZQoJRFdBUkZfRlJBTUVfUkVHTlVNLgoKMjAwMC0wNi0yNyAgQW5kcmV3IE1hY2xlb2QgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoQVNNX09VVFBVVF9EV0FSRl9EQVRBMik6IFByb3ZpZGUgZGVmYXVsdCB3aGVuIG5vCgl1bnNpZ25lZCBtYWNyb3MgYXZhaWxhYmxlLgoKMjAwMC0wNi0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogU3BlY2lhbCBjYXNlCgllcGlsb2d1ZV9kZWFsbG9jYXRlX3N0YWNrLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQpIFtjYXNlIERdOiBFbWl0Cgljb21wbGV0ZXJzIGZvciBVTk9SREVSRUQgYW5kIE9SREVSRUQgYXMgd2VsbC4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYnVub3JkZXJlZCwgYm9yZGVyZWQpOiBOZXcuCgkoc3Vub3JkZXJlZCwgc29yZGVyZWQpOiBOZXcuCgpUdWUgSnVuIDI3IDEyOjE0OjEyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2VuYXR0cnRhYi5jICh3cml0ZV9hdHRyX3ZhbHVlKTogRG8gbm90IGFib3J0IGZvciBDT05TVF9JTlQgb3BlcmFuZHMuCgkqIGkzODYuYyAoaXg4Nl9hdHRyX2xlbmd0aF9kZWZhdWx0KTogS2lsbC4KCShpeDg2X2F0dHJfbGVuZ3RoX2ltbWVkaWF0ZV9kZWZhdWx0LCBpeDg2X2F0dHJfbGVuZ3RoX2FkZHJlc3NfZGVmYXVsdCk6CglOZXcuCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfYXR0cl9sZW5ndGhfZGVmYXVsdCk6IEtpbGwKCShpeDg2X2F0dHJfbGVuZ3RoX2ltbWVkaWF0ZV9kZWZhdWx0LCBpeDg2X2F0dHJfbGVuZ3RoX2FkZHJlc3NfZGVmYXVsdCk6CglBZGQgcHJvdG90eXBlCgkqIGkzODYubWQgKGF0dHJpYnV0ZSB0eXBlKTogQWRkICJ0ZXN0Ii4KCShhdHRyaWJ1dGUgbGVuZ3RoX3ByZWZpeCk6IEtpbGwuCgkoYXR0cmlidXRlIGxlbmd0aF9vcGNvZGUpOiBLaWxsLgoJKGF0dHJpYnV0ZSBpMzg3LCBtb2RlLCBsZW5ndGhfaW1tZWRpYXRlLCBsZW5ndGhfYWRkcmVzcywgcHJlZml4X2RhdGExNiwKCXByZWZpeF9yZXAsIHByZWZpeF8wZiwgbW9kcm0pOiBOZXcuCgkoYXR0cmlidXRlIGxlbmd0aCk6IENvbXB1dGUgdXNpbmcgdGhlIG5ldyBhdHRyaWJ1dGVzLgoJKGF0dHJpYnV0ZSBwZW50X3ByZWZpeCk6IE5ldy4KCShhdHRyaWJ1dGUgcGVudF9wYWlyKTogQ29tcHV0ZSB1c2luZyBwZW50X3ByZWZpeC4KCShhbGwgaW5zbiBwYXR0ZXJucyk6IFNldCBtb2RlLG1vZHJtIGFuZCBpbW1lZGlhdGVfbGVuZ3RoIGF0dHJpYnV0ZXMgd2hlcmUKCW5lZWRlZC4KCShjbXBzaSBwYXR0ZXJucyk6IENvbXB1dGUgc2l6ZXMgcHJvcGVybHkgZm9yIHRlc3QgaW5zdHJ1Y3Rpb24uCgkobW92c2ksIG1vdmhpIHBhdHRlcm5zKTogQ29tcHV0ZSBzaXplcyBwcm9wZXJseSBmb3IgZWF4IHNob3J0Y3V0cy4KCShtb3ZzdHJpY3RoaV94b3IsIG1vdnN0cmljdHFpX3hvcik6IE5ldyBwYXR0ZXJucy4KCShhbmRzaS9hbmRoaSk6IFVzZSBzcGxpdHRlcnMgdG8gZ2VuZXJhdGUgeG9yIGluc3RydWN0aW9ucy4KCSh4b3JxaV9leHRfMSk6IE5ldyBwYXR0ZXJuLgoJKG1vdnN0cmljdGhpLT5tb3ZzdHJpY3RoaV94b3IgcGVlcDIpOiBOZXcuCgpUdWUgSnVuIDI3IDEyOjAzOjAzIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkcWlfbG93XzEpOiBSZW1vdmUuCgoyMDAwLTA2LTI3ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIDE3NTBhLmg6IE1hcmsgaGVscCBzdHJpbmdzIGZvciBvcHRpb25zL3N3aXRjaGVzIGZvciB0cmFuc2xhdGlvbi4KCSogYTI5ay5oOiBMaWtld2lzZS4KCSogYWxwaGEuaDogTGlrZXdpc2UuCgkqIGFybS5oOiBMaWtld2lzZS4KCSogcGUuaDogTGlrZXdpc2UuCgkqIHJpc2NpeC5oOiBMaWtld2lzZS4KCSogYzR4Lmg6IExpa2V3aXNlLgoJKiBjbGlwcGVyLmg6IExpa2V3aXNlLgoJKiBjb252ZXguaDogTGlrZXdpc2UuCgkqIGVseHNpLmg6IExpa2V3aXNlLgoJKiBmcjMwLmg6IExpa2V3aXNlLgoJKiBmeDgwLmg6IExpa2V3aXNlLgoJKiBoODMwMC5oOiBMaWtld2lzZS4KCSogaTM3MC5oOiBMaWtld2lzZS4KCSogY3lnd2luLmg6IExpa2V3aXNlLgoJKiBkZ3V4Lmg6IExpa2V3aXNlLgoJKiBkamdwcC5oOiBMaWtld2lzZS4KCSogaTM4Ni5oOiBMaWtld2lzZS4KCSogb3NmMWVsZi5oOiBMaWtld2lzZS4KCSogb3Nmcm9zZS5oOiBMaWtld2lzZS4KCSogc2NvNS5oOiBMaWtld2lzZS4KCSogd2luMzIuaDogTGlrZXdpc2UuCgkqIGk4NjAuaDogTGlrZXdpc2UuCgkqIHBhcmFnb24uaDogTGlrZXdpc2UuCgkqIGk5NjAuaDogTGlrZXdpc2UuCgkqIGlhNjQuaDogTGlrZXdpc2UuCgkqIG0zMnIuaDogTGlrZXdpc2UuCgkqIG1jb3JlLmg6IExpa2V3aXNlLgoJKiBtaXBzLmg6IExpa2V3aXNlLgoJKiBtbjEwMzAwLmg6IExpa2V3aXNlLgoJKiBuczMyay5oOiBMaWtld2lzZS4KCSogcGRwMTEuaDogTGlrZXdpc2UuCgkqIHBqLmg6IExpa2V3aXNlLgoJKiBhaXguaDogTGlrZXdpc2UuCgkqIGFpeDQxLmg6IExpa2V3aXNlLgoJKiBhaXg0My5oOiBMaWtld2lzZS4KCSogYmVvcy5oOiBMaWtld2lzZS4KCSogcnM2MDAwLmg6IExpa2V3aXNlLgoJKiBzeXN2NC5oOiBMaWtld2lzZS4KCSogbGludXguaDogTGlrZXdpc2UuCgkqIGxpbnV4NjQuaDogTGlrZXdpc2UuCgkqIHNwNjQtZWxmLmg6IExpa2V3aXNlLgoJKiBzcGFyYy5oOiBMaWtld2lzZS4KCSogc3BsZXQuaDogTGlrZXdpc2UuCgkqIHY4NTAuaDogTGlrZXdpc2UuCgkqIGNvbnZleC5oIChUQVJHRVRfU1dJVENIRVMpOiBQcm92aWRlIGRlc2NyaXB0aW9ucyBhbmQgbWFyayB0aGVtCglmb3IgdHJhbnNsYXRpb24uCgkqIHNwODZ4LWFvdXQuaDogUmVtb3ZlIGJvZ3VzIGZpcnN0IGRlZmluaXRpb24gb2YgU1VCVEFSR0VUX1NXSVRDSEVTLgoJUHJvcGVybHkgZG9jdW1lbnQgb3B0aW9uIGFuZCBtYXJrIGZvciB0cmFuc2xhdGlvbi4KCSogc3A4NngtZWxmLmg6IExpa2V3aXNlLgoKMjAwMC0wNi0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJQWRkIE1NWCBhbmQgU1NFIHJlZ2lzdGVycyB0byBpMzg2IG1hY2hpbmUgZGVzY3JpcHRpb24uCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfY29uc3RhbnRfYWxpZ25tZW50LCBpeDg2X2RhdGFfYWxpZ25tZW50LAoJaXg4Nl9sb2NhbF9hbGlnbm1lbnQpOiBEZWNsYXJlLgoKCSogaTM4Ni5oIChUQVJHRVRfTU1YLCBUQVJHRVRfU1NFKTogTmV3LgoJKEZJUlNUX1BTRVVET19SRUdJU1RFUiwgRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLAoJUkVHX0FMTE9DX09SREVSLCBIQVJEX1JFR05PX05SRUdTLCBIQVJEX1JFR05PX01PREVfT0ssCglSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyxSRUdfQ0xBU1NfRlJPTV9MRVRURVIsCgllbnVtIHJlZ19jbGFzcywgSElfUkVHSVNURVJfTkFNRVMpOiBBZGRlZCBNTVgvU1NFIHJlZ2lzdGVycy4KCShGSVJTVF9TU0VfUkVHLCBMQVNUX1NTRV9SRUcsIFNTRV9SRUdOT19QKTogTmV3LgoJKEZJUlNUX01NWF9SRUcsIExBU1RfTU1YX1JFRywgTU1YX1JFR05PX1AsIE1NWF9SRUdfUCk6IE5ldyBtYWNyb3MuCgkoUkVUVVJOX0lOX01FTU9SWSk6IEhhbmRsZSBNTVgvU1NFLgoJKFJFR19QQVJNX1NUQUNLX1NQQUNFKTogQWRkZWQgc28gdGhlIGZpcnN0IHRocmVlIFRJbW9kZSBwYXJhbWV0ZXJzCglhbHNvIGdldCBzdGFjayBzcGFjZS4KCShNVVNUX1BBU1NfSU5fU1RBQ0spOiBBZGRlZCBUSW1vZGUgdG8gdGhlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShDVU1VTEFUSVZFX0FSR1MpOiBBZGRlZCBzc2VfbnJlZ3MsIHNzZV9yZWdubyBhbmQgc3NlX3dvcmRzLgoJKE1NWF9SRUdJU1RFUl9OQU1FUyk6IE5ldy4KCShBTElHTl9NT0RFXzEyOCk6IE5ldyBtYWNyby4KCShDT05TVEFOVF9BTElHTk1FTlQpOiBDb2RlIG1vdmVkIG91dC1vZi1saW5lOyBqdXN0IGNhbGwgdGhlIGZ1bmN0aW9uLgoJKERBVEFfQUxJR05NRU5UKTogTGlrZXdpc2UuCgkoTE9DQUxfQUxJR05NRU5UKTogTGlrZXdpc2UuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNYWtlIE1NWC9TU0UgcmVncyBmaXhlZCBpZiBub3QKCVRBUkdFVF9NTVgvVEFSR0VUX1NTRS4KCShWQUxJRF9TU0VfUkVHX01PREUsIFZBTElEX01NWF9SRUdfTU9ERSk6IE5ldyBtYWNyb3MuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogJ3knIGZvciBNTVggcmVncy4KCShTRUNPTkRBUllfTUVNT1JZX05FRURFRCk6IEJlIGNvbnNlcnZhdGl2ZSBhYm91dCBjb3B5aW5nIGJldHdlZW4KCVNTRS9NTVggcmVncyBhbmQgc29tZXRoaW5nIGVsc2UuCgkoQ0xBU1NfTUFYX05SRUdTKTogMSBmb3IgU1NFIGFuZCBNTVggcmVncy4KCShSRUdJU1RFUl9NT1ZFX0NPU1QpOiAxMCBpZiB0cnlpbmcgdG8gbW92ZSBiZXR3ZWVuIE1NWCBhbmQgU1NFIHJlZ3MsCgkzIGlmIG1vdmluZyBiZXR3ZWVuIE1NWCByZWdzIGFuZCBzb21ldGhpbmcgZWxzZS4KCgkqIGkzODYuYyAocmVnX2NsYXNzKTogQWRkIFNTRV9SRUdTLCBNTVhfUkVHUy4KCShyZWdjbGFzc19tYXApOiBBZGQgTU1YL1NTRSByZWdpc3RlcnMuCgkocHJpbnRfb3BlcmFuZCk6IEFkZCBjb2RlIHRvIHByaW50IFhNTVdPUkQgYXMgYXBwcm9wcmlhdGUuCgkoaXg4Nl9zcGxpdF9tb3ZkaSk6IEFib3J0IGZvciBNTVggcmVncy4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IEFsc28gYWxsb3cgU1NFX1JFR1MKCShmdW5jdGlvbl9hcmdfYWR2YW5jZSwgZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UKCShwcmludF9yZWcpOiBTdXBwb3J0ICdtJy4gIEFkZCBjYXNlIGZvciBUSW1vZGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFRBUkdFVF9TU0UgaW1wbGllcyBUQVJHRVRfTU1YLgoJKGl4ODZfY29uc3RhbnRfYWxpZ25tZW50LCBpeDg2X2RhdGFfYWxpZ25tZW50LCBpeDg2X2xvY2FsX2FsaWdubWVudCk6CglOZXcgZnVuY3Rpb25zLgoKCSogY29uZmlnL2kzODYvdW5peC5oIChWQUxVRV9SRUdOTyk6IFZFQ1RPUl9NT0RFIHZhbHVlcyBnbyB0bwoJRklSU1RfU1NFX1JFRy4KCSogY29uZmlnL2kzODYvcHR4NC1pLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBSZXR1cm4gTU1YIHZhbHVlcyBpbgoJbWVtb3J5LgoJKiBjb25maWcvaTM4Ni9zeXN2NC5oIChSRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODZlbGYuaCAoUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoKMjAwMC0wNi0yNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogc3NhLmMgKHN0cnVjdCByZW5hbWVfc2V0X2RhdGEpOiBDaGFuZ2UgdGhlIG5hbWUgb2YgZmllbGQKCSdzZXRfZGVzdCcgdG8gJ29sZF9yZWcnLiAgQWRkIGNvbW1lbnRzLgoJKHN0cnVjdCByZW5hbWVfY29udGV4dCk6IENoYW5nZSB0aGUgbmFtZSBvZiAnc2V0X2RhdGEnIHRvCgknbmV3X3JlbmFtZXMnLiAgQWRkIG5ldyBmaWVsZCAnZG9uZV9yZW5hbWVzJy4KCShjcmVhdGVfZGVsYXllZF9yZW5hbWUpOiBOZXcgZnVuY3Rpb24uCgkoYXBwbHlfZGVsYXllZF9yZW5hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKHJlbmFtZV9pbnNuXzEpOiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMuICBIYW5kbGUgQ0xPQkJFUlMuICBIYW5kbGUKCVNVQlJFR3MgYW5kIHNpbWlsYXIgYnkgZW1pdHRpbmcgYSBtb3ZlLgoJKG5ld19yZWdpc3RlcnNfZm9yX3VwZGF0ZXMpOiBEZWxldGUsIGZ1bmN0aW9uYWxpdHkgbW92ZWQgdG8KCWFwcGx5X2RlbGF5ZWRfcmVuYW1lcy4KCShyZW5hbWVfYmxvY2spOiBIYW5kbGUgbW92ZXMgZW1pdHRlZCBieSByZW5hbWVfaW5zbl8xIGJ5IHB1dHRpbmcKCXRoZW0gaW50byBhIFNFUVVFTkNFIHdpdGggdGhlIG9yaWdpbmFsIGluc24uICBBZGQgc2FuaXR5IGNoZWNrcwoJYW5kIGNvbW1lbnRzLgoJKHJlbmFtZV9lcXVpdmFsZW50X3JlZ3NfaW5faW5zbik6IERvbid0IGhhbmRsZSBTVUJSRUdzIHNwZWNpYWxseS4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzKTogRXhwYW5kIFNFUVVFTkNFcyBvdXQgdG8gaW5kaXZpZHVhbCBpbnNucy4KCjIwMDAtMDYtMjYgIEFuZHJldyBNYWNsZW9kIDxhbWFjbGVvZEBjeWdudXMuY29tPgoJICAgIEphc29uIE1lcnJpbGwgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuaCAoZW51bSBkd2FyZl9jYWxsX2ZyYW1lX2luZm8pOiBBZGQKCURXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkqIGR3YXJmMm91dC5jICh1bmlvbiBkd19jZmlfb3BybmRfc3RydWN0KTogQWRkIGEgcG9pbnRlciB0byBhCglkd19sb2NfZGVzY3Jfc3RydWN0IGVudHJ5LgoJKHN0cnVjdCBjZmFfbG9jKTogTmV3IHN0cnVjdHVyZSB0byB0cmFjayBhIENGQSBsb2NhdGlvbi4KCShsb29rdXBfY2ZhKTogVGFrZSBhIGNmYV9sb2MgcGFyYW1ldGVyIGluc3RlYWQgb2YgYSByZWcgYW5kIGFuIG9mZnNldC4KCShsb29rdXBfY2ZhXzEpOiBUYWtlIGEgY2ZhX2xvYyBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHJlZyBhbmQgYW4KCW9mZnNldCwgcGx1cyBoYW5kbGUgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lvbi4KCShkZWZfY2ZhXzEpOiBVc2UgdG8gYmUgZHdhcmYyb3V0X2RlZl9jZmEsIG9ubHkgbm93IGl0IHVzZXMgYQoJY2ZhX2xvYyByZWNvcmQuCgkoZHdhcmYyb3V0X2RlZl9jZmEpOiBFbnRyeSBwb2ludCBtYWludGFpbmVkIGZvciBjb21wYXRpYmlsaXR5LgoJKGR3YXJmX2NmaV9uYW1lKTogQWRkIERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkoY2ZhX3JlZywgY2ZhX29mZnNldCk6IFJlcGxhY2Ugd2l0aCBjZmFfbG9jIHJlY29yZCAnY2ZhJy4KCShjZmFfc3RvcmVfcmVnLCBjZmFfc3RvcmVfb2Zmc2V0KTogUmVwbGFjZSB3aXRoIGNmYV9sb2MgJ2NmYV9zdG9yZScuCgkoaW5pdGlhbF9yZXR1cm5fc2F2ZSwgZHdhcmYyb3V0X3N0YWNrX2FkanVzdCk6IFVzZSBjZmEucmVnLCBub3QKCWNmYV9yZWcuCgkoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBVc2UgbmV3IGNmYV9sb2MgcmVjb3Jkcy4gUmVjb2duaXplIHJ0bAoJc2VxdWVuY2VzIGZvciB0aGUgbmV3IERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24gcmVjb3JkLgoJKGR3YXJmMm91dF9mcmFtZV9kZWJ1Zyk6IFVzZSBuZXcgdmFyaWFibGVzL2ZpZWxkcy5BCgkob3V0cHV0X2NmaSk6IEhhbmRsZSBEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uLgoJKG91dHB1dF9jZmFfbG9jKTogTmV3IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgQ0ZJIHJlY29yZCBmb3IKCURXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkoZ2V0X2NmYV9mcm9tX2xvY19kZXNjcik6IE5ldyBmdW5jdGlvbiB0byBnZXQgYSBjZmFfbG9jIHJlY29yZCBmcm9tCglhIGR3X2xvY19kZXNjciBzZXF1ZXVuY2UuCgkoYnVpbGRfbG9jX2Rlc2NyKTogQnVpbGQgYSBkd19sb2NfZGVzY3IgZnJvbSBhIGNmYV9sb2MgcmVjb3JkLgoJKGR3YXJmX3N0YWNrX29wX25hbWUsIG5ld19sb2NfZGVzY3IsIGFkZF9sb2NfZGVzY3IsIHNpemVfb2ZfbG9jX2Rlc2NyLAoJc2l6ZV9vZl9sb2NzLCBvdXRwdXRfbG9jX29wZXJhbmRzLCBvdXRwdXRfbG9jX3NlcXVlbmNlKTogTW92ZSBpbnRvCgl1bndpbmQgaW5mbyBzZWN0aW9uLgoJKiBmcmFtZS5oIChmcmFtZV9zdGF0ZSk6IEFkZCBiYXNlX29mZnNldCBhbmQgaW5kaXJlY3QgZmllbGRzLgoJKiBmcmFtZS1kd2FyZjIuYyAoZGVjb2RlX3N0YWNrX29wKTogTmV3IGZ1bmN0aW9uIHRvIGludGVycHJldCBhCglkd19sb2NfZGVzY3Igb3BlcmF0aW9uLgoJKGV4ZWN1dGVfY2ZhX2luc24pOiBBZGQgc3VwcG9ydCBmb3IgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lvbi4KCShzdHJ1Y3QgZnJhbWVfc3RhdGUpOiBBZGQgYmFzZSBvZmZzZXQgYW5kIGluZGlyZWN0IGZpZWxkcy4KCSogbGliZ2NjMi5jIChuZXh0X3N0YWNrX2xldmVsKTogU3VwcG9ydCBpbmRpcmVjdCBsb2FkaW5nIGZvciBDRkEuCgoyMDAwLTA2LTI2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCB3YXJuIGFib3V0IGBsb25nIGxvbmcnIGluIEM5OS4KCU1ha2Ugd2FybmluZ3MgYWJvdXQgaW1wbGljaXQgaW50IGJlIHBlZHdhcm5zIGluIEM5OS4gIERvbid0IHdhcm4KCWFib3V0IGR1cGxpY2F0ZSB0eXBlIHF1YWxpZmllcnMgaW4gQzk5LgoJKHN0YXJ0X2Z1bmN0aW9uKTogTWFrZSB3YXJuaW5nIGFib3V0IGltcGxpY3QgaW50IHJldHVybiB0eXBlIGJlIGEKCXBlZHdhcm4gaW4gQzk5LgoJKiBjLWxleC5jICh5eWxleCk6IERvbid0IHdhcm4gYWJvdXQgYGxvbmcgbG9uZycgaW4gQzk5LgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBJbiBDOTksIGFsd2F5cyBwZWR3YXJuIGFib3V0CglgcmV0dXJuJyB3aXRoIG5vIHZhbHVlIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZC4KCjIwMDAtMDYtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLXR5cGVjay5jIChwZWR3YXJuX2M5OSk6IE5ldy4KCSogZGlhZ25vc3RpYy5jICh2ZXJyb3IsIHZ3YXJuaW5nLCB2cGVkd2Fybik6IEV4cG9ydC4KCSogdG9wbGV2Lmg6IFByb3RvdHlwZSB0aGVtLgoKMjAwMC0wNi0yNiAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjLXR5cGVjay5jIChkaWdlc3RfaW5pdCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgbm9kZSB3aGVuCglUUkVFX1RZUEUgKGluaXQpICA9PSBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA2LTI2ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogRG9uJ3Qgc2V0IE1TR0ZNVCBvciBHTVNHRk1UIHRvIG5vLAoJdGVzdCBmb3IgbXNnZm10IHdpdGhvdXQgcGF0aCBpbnN0ZWFkLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA2LTI1IFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBnZW5nZW5ydGwuYyAoc3BlY2lhbF9ydHgpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwMC0wNi0yNiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbWtsaWJnY2MuaW4gKExJQjJGVU5DUyk6IEFkZCBtaXNzaW5nIHNwYWNlLgoKMjAwMC0wNi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiB0cmVlLmggKGVudW0gdHJlZV9pbmRleCk6IEFkZCB2ZWN0b3IgdHlwZSBub2Rlcy4KCUFkZCBhY2Nlc3NvciBtYWNyb3MgZm9yIHRoZW0uCgkoVFlQRV9SRVBSRVNFTkFUSU9OX1RZUEUpOiBOZXcgbWFjcm8uCgkqIHRyZWUuYyAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IEJ1aWxkIHRoZXNlIG5vZGVzLgoJKGZpbmlzaF92ZWN0b3JfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uYyAodHlwZV9mb3JfbW9kZSk6IEhhbmRsZSB2ZWN0b3IgbW9kZXMuCgkqIHRtLnRleGkgKFZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QKTogRG9jdW1lbnQuCgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEVzLgoJKiBkd2FyZi5oIChlbnVtIGR3YXJmX2Z1bmRhbWVudGFsX3R5cGUpOiBBZGQgMTI4IGJpdCBpbnRlZ2Vycy4KCSogZHdhcmYyb3V0LmMgKGxvb2t1cF90eXBlX2RpZSk6IEhhbmRsZSBWRUNUT1JfVFlQRXMuCgkoZ2VuX3R5cGVfZGllKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGR3YXJmX2Z1bmRfdHlwZV9uYW1lKTogSGFuZGxlIDEyOCBiaXQgaW50ZWdlcnMuCgkoZnVuZGFtZW50YWxfdHlwZV9jb2RlKTogTGlrZXdpc2UuCgkodHlwZV9pc19mdW5kYW1lbnRhbCk6IFZFQ1RPUl9UWVBFcyBhcmVuJ3QuCgkob3V0cHV0X3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEVzLgoKMjAwMC0wNi0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvYXJtLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCSogY29uZmlnL2FybS5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMjUgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogYWNsb2NhbC5tNCAoQU1fV0lUSF9OTFMpOiBTZXQgY3JlYXRlX2NhdGFsb2dzPW5vIGlmIG5vIGNhdGFsb2cKCWNvbXBpbGVyIGZvdW5kLgoJQU1fR05VX0dFVFRFWFQ6IERvbid0IHNldCBDQVRBTE9HUyBpZiBjcmVhdGVfY2F0YWxvZ3M9bm8uCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMjUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLmNhPgoKCSogY29uZmlnL3ZheC92YXguaCAoVEFSR0VUX1NXSVRDSEVTKTogUHJvdmlkZSBkZXNjcmlwdGlvbnMuCgoyMDAwLTA2LTI1IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBta2xpYmdjYy5pbjogUHJlZmVyIExJQjFBU01GVU5DUyBvdmVyIExJQjJGVU5DUyB3aGVuIGdlbmVyYXRpbmcKCWxpYmdjYy5hLgoKMjAwMC0wNi0yNCAgTWFyYyBFc3BpZSA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogY29sbGVjdDIuYyAocmVzb2x2ZV9saWJfbmFtZSk6IE1vdmUgJy8nIGNoZWNrIG91dCBvZiBsb29wLgoKMjAwMC0wNi0yNCAgRGlyayBEdWVsbG1hbm4gIDxEaXJrLkR1ZWxsbWFubkBjZXJuLmNoPgoKCSogZ2luY2x1ZGUvc3RkZGVmLmggKE5VTEwpOiBkZWZpbmUgZm9yIG5vbi1nbnUgQysrIHBhcnNlcnMgYXMgMC4KCjIwMDAtMDYtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfZGVjbF9jbGVhbnVwKTogRW1pdCBhIGR1bW15IGluc24gYWZ0ZXIKCWxhc3RfdW5jb25kaXRpb25hbF9jbGVhbnVwLgoKMjAwMC0wNi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiB0cmVlLmRlZiAoVkVDVE9SX1RZUEUpOiBOZXcgbm9kZSB0eXBlLgoJKiB0cmVlLmg6IEFkanVzdCBzb21lIGNvbW1lbnRzIHRvIHJlZmxlY3QgYWRkaXRpb24gb2YgdmVjdG9yIHR5cGVzLgoJKFRZUEVfVkVDVE9SX1NVQlBBUlRTKTogTmV3IG1hY3JvLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IEhhbmRsZSBWRUNUT1JfVFlQRS4KCSogYy1jb252ZXJ0LmMgKGNvbnZlcnQpOiBMaWtld2lzZS4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBIYW5kbGUgdmVjdG9yIG1vZGVzLgoJKGNvbnZlcnRfdG9fdmVjdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiBjb252ZXJ0LmggKGNvbnZlcnRfdG9fdmVjdG9yKTogRGVjbGFyZS4KCSogZXhwci5jIChjb252ZXJ0X21vdmUpOiBIYW5kbGUgdmVjdG9yIG1vZGVzLgoJKiBleHBtZWQuYyAoZXh0cmFjdF9iaXRfZmllbGQpOiBEb24ndCBhYm9ydCBmb3IgdmVjdG9yIG1vZGVzLgoKMjAwMC0wNi0yNCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAoYXZyX2hhcmRfcmVnbm9fbW9kZV9vayk6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9hZGpfZnJhbWVfcHRyLCBvdXRfc2V0X3N0YWNrX3B0cik6CglOZXcgZnVuY3Rpb25zLCBjb21tb24gY29kZSBtb3ZlZCBmcm9tIGZ1bmN0aW9uX3twcm9sb2d1ZSxlcGlsb2d1ZX0KCWFuZCBleHRlbmRlZCB0byBzdXBwb3J0IHRoZSAtbXRpbnktc3RhY2sgb3B0aW9uLgoJKGZ1bmN0aW9uX3Byb2xvZ3VlLCBmdW5jdGlvbl9lcGlsb2d1ZSk6IFVzZSB0aGVtLgoJVXNlIGxvOC9oaTggY29uc2lzdGVudGx5IGZvciBhc20gb3V0cHV0IHJlYWRhYmlsaXR5LgoJKGF2cl9oYXJkX3JlZ25vX21vZGVfb2spOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEZpeCB0eXBvLiAgQWRkIC1tdGlueS1zdGFjay4KCShVTklUU19QRVJfV09SRCk6IERlZmluZSBhcyA0IChub3QgMSkgd2hlbiBjb21waWxpbmcgbGliZ2NjMi5jLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IENhbGwgdGhlIGF2cl9oYXJkX3JlZ25vX21vZGVfb2sgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgqbW92X3NwX3IpOiBBZGQgc3VwcG9ydCBmb3IgLW10aW55LXN0YWNrLgoJV3JpdGUgU1BIIGJlZm9yZSBTUEwuCgkoKm1vdnFpKTogTm8gbmVlZCB0byBkaXNhYmxlIGludGVycnVwdHMgZm9yIGp1c3Qgb25lICJvdXQiCglpbiBhbHRlcm5hdGl2ZSA1LiAgQ2hhbmdlIGxlbmd0aCBhdHRyaWJ1dGUgZnJvbSA0IHRvIDEuCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlMgKF9fcHJvbG9ndWVfc2F2ZXNfXywgX19lcGlsb2d1ZV9yZXN0b3Jlc19fKToKCVdyaXRlIFNQSCBiZWZvcmUgU1BMLgoKMjAwMC0wNi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBydGwudGV4aSAoVmVjdG9yIE9wZXJhdGlvbnMpOiBOZXcgbm9kZS4KCShBcml0aG1ldGljKTogQWRkIHNzX3BsdXMsIHVzX3BsdXMsIHNzX21pbnVzLCB1c19taW51cy4KCShDb252ZXJzaW9ucyk6IEFkZCBzc190cnVuY2F0ZSwgdXNfdHJ1bmNhdGUuCgkqIHJ0bC5kZWYgKFZFQ19NRVJHRSwgVkVDX1NFTEVDVCwgVkVDX0NPTkNBVCwgVkVDX1JFT1JERVIsCglWRUNfQ09OU1QsIFZFQ19EVVBMSUNBVEUsIFNTX1BMVVMsIFNTX01JTlVTLCBTU19UUlVOQ0FURSwKCVVTX1RSVU5DQVRFKTogTmV3IHJ0eCBjb2Rlcy4KCSogbWFjaG1vZGUuZGVmOiBBZGQgdmVjdG9yIG1vZGVzLgoJKiBtYWNobW9kZS5oIChlbnVtIG1vZGVfY2xhc3MpOiBBZGQgTU9ERV9WRUNUT1JfSU5UIGFuZAoJTU9ERV9WRUNUT1JfRkxPQVQuCgkoSU5URUdFUl9NT0RFX1ApOiBDaGVjayBmb3IgTU9ERV9WRUNUT1JfSU5ULgoJKEZMT0FUX01PREVfUCk6IENoZWNrIGZvciBNT0RFX1ZFQ1RPUl9GTE9BVC4KCShWRUNUT1JfTU9ERV9QKTogTmV3LgoKMjAwMC0wNi0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcC50ZXhpOiBDbGFyaWZ5ICNwcmFnbWEgR0NDIG5hbWVzcGFjZS4KCjIwMDAtMDYtMjQgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogYWNsb2NhbC5tNChBTV9HTlVfR0VUVEVYVCk6IElmIExJTkdVQVMgaXNuJ3Qgc2V0LCBidWlsZAoJYWxsIGNhdGFsb2dzIHNwZWNpZmllZCBpbiBBTExfTElOR1VBUy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHJlbG9hZF9vdXRkaSsxKTogSGFuZGxlCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDY0IGNhc2UgY29ycmVjdGx5LgoJKGFkZGRpM19pbnNuX3NwMzIrMSwgYWRkZGkzX2luc25fc3AzMisyLCBhbmRzaTMrMik6IExpa2V3aXNlLgoKMjAwMC0wNi0yMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYWxpYXMuYyAoZml4ZWRfc2NhbGFyX2FuZF92YXJ5aW5nX3N0cnVjdF9wKTogRG9uJ3QgZXhhbWluZQoJc3RydWN0IHZzLiBzY2FsYXItbmVzcyB3aGVuIC1mbm8tc3RyaWN0LWFsaWFzaW5nLgoKMjAwMC0wNi0yMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGxpYi5jIChzdHJ1Y3QgcHJhZ21hX2VudHJ5KTogTmV3IHN0cnVjdHVyZS4KCShwcmFnbWFfZGlzcGF0Y2gpOiBQcmFnbWEgZGlzcGF0Y2hlci4KCSh0b3BfcHJhZ21hcywgZ2NjX3ByYWdtYXMpOiBOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShkb19wcmFnbWEpOiBVc2UgcHJhZ21hX2Rpc3BhdGNoLgoJKGRvX3ByYWdtYV9nY2MpOiBOZXcgcHJhZ21hIGhhbmRsZXIuCgkqIGNwcC50ZXhpOiBVcGRhdGUuCgoyMDAwLTA2LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGNvbXB1dGVfYXJndW1lbnRfYWRkcmVzc2VzKTogRm9yY2Ugc3RhY2sgc2xvdHMgaW50bwoJYWxpYXMgc2V0IDAuCgkqIGV4cHIuYyAoZW1pdF9wdXNoX2luc24pOiBGb3JjZSBwdXNoZXMgaW50byBhbGlhcyBzZXQgMC4KCjIwMDAtMDYtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcmVkX3JlbF9tdXRleCk6IE9ubHkgdGFrZSBvbmUgcmVnaXN0ZXIuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IEFkanVzdCB0byBtYXRjaC4KCjIwMDAtMDYtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IEFsd2F5cyBjYWxsIHRpbWV2YXJfcHJpbnQuCgkqIE1ha2VmaWxlLmluIChjYWxscy5vKTogRGVwZW5kIG9uIFRJTUVWQVJfSC4KCjIwMDAtMDYtMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAoY29uc3RhbnRfZGVzY3JpcHRvcik6IE1ha2UgY29udGVudHMgdW5zaWduZWQgY2hhci4KCShtYXJrX2NvbnN0X2hhc2hfZW50cnkpOiBBZGp1c3QuCgkoY29uc3RfaGFzaCk6IEp1c3QgaGFzaCB0aGUgY29kZSBvZiB1bmtub3duIG5vZGVzLgoJKGNvbXBhcmVfY29uc3RhbnRfMSk6IEFkanVzdCBmb3IgdW5zaWduZWQgY2hhci4KCVVzZSBsYW5ndWFnZSBzcGVjaWZpYyBleHBhbmRlciBvbiB1bmtub3duIG5vZGVzLgoJKHJlY29yZF9jb25zdGFudF8xKTogTGlrZXdpc2UuCgoyMDAwLTA2LTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChjcHBfbWFrZV9zeXN0ZW1faGVhZGVyKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsaWIuaDogUHJvdG90eXBlIGl0LgoJKiBjcHBsaWIuYyAoZG9fbGluZSwgZG9fcHJhZ21hX3N5c3RlbV9oZWFkZXIpOiBVc2UgaXQuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBVc2UgaXQuCgoJKiBmaXgtaGVhZGVyLmMgKGNoZWNrX21hY3JvX25hbWVzKTogQ2FzdCBzZWNvbmQgYXJnIG9mCgljcHBfZGVmaW5lZCB0byBjb25zdCB1bnNpZ25lZCBjaGFyICouCgkocmVhZF9zY2FuX2ZpbGUpOiBNYWtlIGdldGNoYXJfY2FsbCBjb25zdCB1bnNpZ25lZCBjaGFyLgoKMjAwMC0wNi0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYzogSW5jbHVkZSBzcGxheS10cmVlLmgsIG5vdCBoYXNodGFiLmguCgkocmVkdW5kYW50X2luY2x1ZGVfcCwgbWFrZV9JSEFTSCwgaGFzaF9JSEFTSCwgZXFfSUhBU0gpOiBEZWxldGUuCgkoZGVzdHJveV9pbmNsdWRlX2ZpbGVfbm9kZSk6IE5ldy4KCShfY3BwX2luaXRfaW5jbHVkZV9oYXNoKTogUmVuYW1lIF9jcHBfaW5pdF9pbmNsdWRlX3RhYmxlLgoJQ3JlYXRlIGEgc3BsYXkgdHJlZSwgbm90IGEgaGFzaCB0YWJsZS4KCShvcGVuX2luY2x1ZGVfZmlsZSk6IExvb2sgdXAgdGhlIHBhdGggaW4gdGhlIGluY2x1ZGUgdGFibGUsCglkbyB0aGUgbXVsdGlwbGUgaW5jbHVkZSBvcHRpbWl6YXRpb24gaGVyZSwgZXRjLgoJKGNwcF9pbmNsdWRlZCk6IFdhbGsgdGhlIHBhdGguCgkoZmluZF9pbmNsdWRlX2ZpbGUpOiBKdXN0IHdhbGsgdGhlIHBhdGggY2FsbGluZwoJb3Blbl9pbmNsdWRlX2ZpbGUsIG9yIGNhbGwgaXQgZGlyZWN0bHkgZm9yIGFuIGFic29sdXRlIHBhdGguCgkoX2NwcF9mYWtlX2loYXNoKTogUmVuYW1lIF9jcHBfZmFrZV9pbmNsdWRlIGFuZCB1cGRhdGUgZm9yIG5ldwoJc2NoZW1lLgoJKHJlYWRfaW5jbHVkZV9maWxlKTogVXBkYXRlIGZvciBuZXcgc2NoZW1lLiAgRG9uJ3QgY2xvc2UgdGhlCglmaWxlIHVubGVzcyByZWFkaW5nIGZhaWxzLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlLCBjcHBfcmVhZF9maWxlKTogVHdlYWsgZm9yIG5ldyBzY2hlbWUuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBpaGFzaCwgTkVWRVJfUkVJTkNMVURFKTogRGVsZXRlLgoJKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBOZXcuCgkoTkVWRVJfUkVSRUFELCBET19OT1RfUkVSRUFELCBDUFBfSU5fU1lTVEVNX0hFQURFUik6IE5ldwoJbWFjcm9zLgoJKENQUF9QRURBTlRJQywgQ1BQX1dUUkFESVRJT05BTCk6IFVwZGF0ZS4KCVVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwaW5pdC5jOiBJbmNsdWRlIHNwbGF5LXRyZWUuaC4KCShjcHBfcmVhZGVyX2luaXQsIGNwcF9jbGVhbnVwKTogVXBkYXRlLgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogQ2hhbmdlIGloYXNoIGZpZWxkIHRvCgknc3RydWN0IGluY2x1ZGVfZmlsZSAqaW5jJy4gIFJlbW92ZSBzeXN0ZW1faGVhZGVyX3AuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBDaGFuZ2UgYWxsX2luY2x1ZGVfZmlsZXMgdG8gYQoJc3RydWN0IHNwbGF5X3RyZWVfcyAqLgoKCSogY3BwbGV4LmM6IFVwZGF0ZSBhbGwgcmVmZXJlbmNlcyB0byBjcHBfYnVmZmVyLT5paGFzaCBhbmQvb3IKCWNwcF9idWZmZXItPnN5c3RlbV9oZWFkZXJfcC4KCShjcHBfcG9wX2J1ZmZlcik6IENsb3NlIGZpbGUgaGVyZSwgb25seSBpZiBET19OT1RfUkVSRUFELgoKCSogTWFrZWZpbGUuaW4gKFNQTEFZX1RSRUVfSCk6IE5ldyBtYWNyby4KCShjcHBmaWxlcy5vLCBjcHBpbml0Lm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKV2VkIEp1biAyMSAxMTowNTo0OCAyMDAwICBNYXJ0aW4gQnVjaGhvbHogPG1hcnRpbkB4ZW1hY3Mub3JnPgoKCSogaW52b2tlLnRleGkgKGcrKyk6ICJnKysiIGlzIG5vdCBhIHNjcmlwdCBhbnltb3JlLgoKMjAwMC0wNi0yMCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBmdW5jdGlvbi5jIChyb3VuZF9kb3duKTogRGVsZXRlIG9ic29sZXRlIHByb3RvdHlwZS4KCgkqIHBhLmggKENQUF9TUEVDKTogQWRkIHdoaXRlc3BhY2UgYWZ0ZXIgLURfX1NURENfRVhUX18uCgoyMDAwLTA2LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW46IFVzZSAndGVzdCBhID0gYicgbm90ICd0ZXN0IGEgPT0gYicuCgkqIGNvbmZpZ3VyZTogUmVnZW4uCgoJKiBNYWtlZmlsZS5pbiAoZml4LWhlYWRlcik6IExpbmsgd2l0aCAkKExJQlMpIG5vdCAkKEhPU1RfTElCUykuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIEhPU1RfSU5UTExJQlMuCgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IERvbid0IHdhcm4gYWJvdXQgJCBpbiBpZGVudGlmaWVycyBpZgoJc2tpcHBpbmcuCgoyMDAwLTA2LTIwICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZy9wYS9wYS5oKFRBUkdFVF9TV0lUQ0hFUyk6IFJlcXVpcmUgYmludXRpbHMgMi4xMCBvciBsYXRlcgoJZm9yIFBBIDIuMC4KCk1vbiBKdW4gMTkgMjM6MjY6NDAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogVGFrZSBSRUdfSU5DIG5vdGVzIGludG8gYWNjb3VudC4KCjIwMDAtMDYtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcGFyc2UuaW4gKHVuZGVjbGFyZWRfdmFyaWFibGVfbm90aWNlKTogTW92ZWQgdG8gYy10eXBlY2suYy4KCShwcmltYXJ5OiBJREVOVElGSUVSKTogSnVzdCBjYWxsIGJ1aWxkX2V4dGVybmFsX3JlZi4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UuYzoKCVJlZ2VuZXJhdGUuCgkqIGMtbGV4LmMgKGxhc3RpZGRlY2wpOiBSZW1vdmUuCgkoeXlsZXgpOiBSZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgbGFzdGlkZGVjbCB3aXRoIGxvY2FsCgl2YXJpYWJsZXMuCgoJKiBjLXR5cGVjay5jIChidWlsZF9leHRlcm5hbF9yZWYpOiBOZXcgZnVuY3Rpb24uICBUcmVhdCBkZWNscwoJd2l0aCBDX0RFQ0xfQU5USUNJUEFURUQgbW9zdGx5IHRoZSBzYW1lIGFzIG5vbmV4aXN0ZW50IGRlY2xzLgoJTG9vayB1cCB0aGUgZGVjbCBmcm9tIHRoZSBpZCBoZXJlLiAgQ2FsbCBsb29rdXBfb2JqY19pdmFyLgoJKiBjLWxhbmcuYyAobG9va3VwX29iamNfaXZhcik6IFN0dWIuCgkqIG9iamMvb2JqYy1hY3QuYyAobG9va3VwX29iamNfaXZhcik6IE5ldyBmdW5jdGlvbi4KCgkqIGMtdHJlZS5oOiBQcm90b3R5cGUgbG9va3VwX29iamNfaXZhciBhbmQgYnVpbGRfZXh0ZXJuYWxfcmVmLgoJKiBjLWxleC5oOiBEb24ndCBkZWNsYXJlIGxhc3RpZGRlY2wuCgoyMDAwLTA2LTE5ICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChJRl9DT05EKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShUSEVOX0NMQVVTRSk6IExpa2V3aXNlLgoJKEVMU0VfQ0xBVVNFKTogTGlrZXdpc2UuCgkoV0hJTEVfQ09ORCk6IExpa2V3aXNlLgoJKFdISUxFX0JPRFkpOiBMaWtld2lzZS4KCShET19DT05EKTogTGlrZXdpc2UuCgkoRE9fQk9EWSk6IExpa2V3aXNlLgoJKFJFVFVSTl9FWFBSKTogTGlrZXdpc2UuCgkoRVhQUl9TVE1UX0VYUFIpOiBMaWtld2lzZS4KCShGT1JfSU5JVF9TVE1UKTogTGlrZXdpc2UuCgkoRk9SX0NPTkQpOiBMaWtld2lzZS4KCShGT1JfRVhQUik6IExpa2V3aXNlLgoJKEZPUl9CT0RZKTogTGlrZXdpc2UuCgkoU1dJVENIX0NPTkQpOiBMaWtld2lzZS4KCShTV0lUQ0hfQk9EWSk6IExpa2V3aXNlLgoJKENBU0VfTE9XKTogTGlrZXdpc2UuCgkoQ0FTRV9ISUdIKTogTGlrZXdpc2UuCgkoR09UT19ERVNUSU5BVElPTik6IExpa2V3aXNlLgoJKENPTVBPVU5EX0JPRFkpOiBMaWtld2lzZS4KCShBU01fQ1ZfUVVBTCk6IExpa2V3aXNlLgoJKEFTTV9TVFJJTkcpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUUyk6IExpa2V3aXNlLgoJKEFTTV9JTlBVVFMpOiBMaWtld2lzZS4KCShBU01fQ0xPQkJFUlMpOiBMaWtld2lzZS4KCShERUNMX1NUTVRfREVDTCk6IExpa2V3aXNlLgoJKFNUTVRfRVhQUl9TVE1UKTogTGlrZXdpc2UuCgkoTEFCRUxfU1RNVF9MQUJFTCk6IExpa2V3aXNlLgoKCSogYy1jb21tb24uZGVmOiBBZGRlZCBkb2N1bWVuZXRpb24gZm9yIFNSQ0xPQywgRVhQUl9TVE1ULAoJQ09NUE9VTkRfU1RNVCwgREVDTF9TVE1ULCBJRl9TVE1ULCBGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwKCVJFVFVSTl9TVE1ULCBCUkVBS19TVE1ULCBDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVCwgR09UT19TVE1ULAoJTEFCRUxfU1RNVCwgQVNNX1NUTVQsIFNDT1BFX1NUTVQsIENBU0VfTEFCRUwsIFNUTVRfRVhQUi4KCjIwMDAtMDYtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtY2hlY2tpbmcpOiBVcGRhdGUgLS1oZWxwIGRvYyB0byByZWZsZWN0CgluZXcgZGVmYXVsdHMuICBFbnN1cmUgJGFjX3NhdmVfSUZTIGlzIHNldCBiZWZvcmUgJElGUyBpcyBjaGFuZ2VkLgoKU3VuIEp1biAxOCAyMTo0MjoxNSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NzZS5jIChpbnNlcnRfaW5zbl9lbmRfYmIpOiBBbHdheXMgcHV0IGFmdGVyIE5PVEVfSU5TTl9CQVNJQ19CTE9DSy4KCgkqIGZ1bmN0aW9uLmMgKHB1dF92YXJfaW50b19zdGFjayk6IERvbid0IHJlZmVyZW5jZSBERUNMXyBmaWVsZHMKCWlmIGlucHV0IGlzIGEgU0FWRV9FWFBSLgoJVXNlIHNldF9tZW1fYXR0cmlidXRlcyBpbiBDT01QTEVYIGNhc2UuCgoyMDAwLTA2LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAocHJvY2Vzc19mb3JfdW53aW5kX2RpcmVjdGl2ZSk6IERlY2xhcmUuCgkoaWE2NF9maWxlX3N0YXJ0KTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBRERMX1JFR05PX1ApOiBEb24ndCBjb21wYXJlIHVuc2lnbmVkIGFnYWluc3QgMC4KCShHUl9SRUdOT19QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogTWFueSBwcm90b3R5cGVzLgoJKGlhNjRfcmVnX251bWJlcnMpOiBDb25zdGlmeS4KCShpYTY0X2lucHV0X3JlZ19uYW1lcywgaWE2NF9sb2NhbF9yZWdfbmFtZXMpOiBMaWtld2lzZS4KCShpYTY0X3NlY3Rpb25fdGhyZXNob2xkKTogTWFrZSB1bnNpZ25lZC4KCShpYTY0X3ByaW50X29wZXJhbmQpOiBDb25zdGlmeS4KCShmaXhfcmFuZ2UpOiBDb25zdGlmeS4KCShpYTY0X2luaXRfYnVpbHRpbnMpOiBEb24ndCBjb21wYXJlIHNpZ25lZCB2cyB1bnNpZ25lZC4KCShpYTY0X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEVYVFJBX0NPTlNUUkFJTlQpOiBOZXcuCgkoQ09OU1RSQUlOVF9PS19GT1JfUSk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGlfaW50ZXJuYWwpOiBVc2UgUSBmb3IgZnA8LT5tZW0uCgkobW92c2ZfaW50ZXJuYWwsIG1vdmRmX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY21vdmRpX2ludGVybmFsKTogUmV3cml0ZSBzbyB0aGF0IGNvbnN0cmFpbnRzIGFuZCBwcmVkaWNhdGVzIG1hdGNoOwoJc2ltcGxpZnkgc3BsaXR0ZXJzLgoJKGNtb3ZzaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fU1BFQyk6IEFkZCAteCBmb3IgZ2FzLgoJKEFTTV9GSUxFX1NUQVJUKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZmlsZV9zdGFydCk6IE5ldy4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSBwcmVkLnJlbC5tdXRleC4KCShlbWl0X3ByZWRpY2F0ZV9yZWxhdGlvbl9pbmZvKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcmVkX3JlbF9tdXRleCk6IE5ldy4KCSogY29uZmlnL2lhNjQvbGludXguaCAoQVNNX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9GSUxFX1NUQVJUKTogRGVmaW5lLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBGaXggdGhpbmtvCglmaWx0ZXJpbmcgZ2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlcy4KCjIwMDAtMDYtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGFkZF9jX3RyZWVfY29kZXMpOiBGaXggZGVmaW5pdGlvbiBmb3IgdHJhZGl0aW9uYWwgQy4KCjIwMDAtMDYtMTcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSwgJyV2MycgY2FzZSk6IERvIG5vdCBhYm9ydCBpZiBwYXRjaCBsZXZlbCBpcwoJbm90IHByZXNlbnQgYW5kIHRoZXJlIGlzIGEgZmllbGQgYWZ0ZXIgYSAnLScuCgoyMDAwLTA2LTE3ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9jaGVjay50cGw6ICBmaW5pc2ggdGhlIGltcGxlbWVudGF0aW9uIG9mIG11bHRpcGxlIHRlc3RzCglmb3IgYSBzaW5nbGUgZml4CgkqIGZpeGluYy9pbmNsaGFjay5kZWYoY3RybF9xdW90ZXNfZGVmKTogYWRkIGEgc2Vjb25kIHRlc3QKCShpb19xdW90ZXNfZGVmKTogYWRkIGEgc2Vjb25kIHRlc3QKCSh2YXJpb3VzKTogcmVvcmRlciBgZmlsZXMnIHNvIHRoYXQgImxpbWl0cy5oIiBpcyBuZXZlciBmaXJzdAoJKiBmaXhpbmMvdGVzdHMvYmFzZS8qOiB1cGRhdGUgdGhlIHRlc3Rpbmcgb3V0cHV0CgpTYXQgSnVuIDE3IDEwOjMzOjU5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY2MudGV4aTogUmVtb3ZlIHJlZmVyZW5jZSB0byBzdHVwaWQuYy4KCjIwMDAtMDYtMTYgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfdHJlZV9jb2RlX3R5cGUpOiBOZXcgYXJyYXkuCgkoY190cmVlX2NvZGVfbGVuZ3RoKTogTGlrZXdpc2UuCgkoY190cmVlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKGFkZF9jX3RyZWVfY29kZXMpOiBOZXcgZnVuY3Rpb24uCgoJKiBjLWNvbW1vbi5oIChhZGRfY190cmVlX2NvZGVzKTogRGVjbGFyZS4KCShlbnVtIGNfdHJlZV9jb2RlKTogTmV3IGVudW0uCgoJKiBjLWxleC5jIChpbml0X3BhcnNlKTogQWRkZWQgY2FsbCB0byBhZGRfY190cmVlX2NvZGVzLgoKMjAwMC0wNi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoY3RybF9xdW90ZXNfZGVmLCBpb19xdW90ZXNfZGVmKTogTW9kaWZ5CglzZWxlY3QgcGF0dGVybiB0byBhbHNvIG1hdGNoIG1hY3JvIGRlZnMgd2l0aCBvbmx5IG9uZSBhcmd1bWVudC4KClRodSBKdW4gMTUgMTg6NTY6MTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaTM4Ni5tZDogQ3JlYXRlIG5ldyBbcmlnaHQsbGVmdF0gcm90YXRlIGFuZCByaWdodCBzaGlmdAoJcGF0dGVybnMgdG8gb3B0aW1pemUgc2hpZnQgYnkgMSBiaXQgZm9yIGNlcnRhaW4gaWEzMiBwcm9jZXNzb3JzLgoJVXBkYXRlIHBhdHRlcm5zIHdoaWNoIHBlcmZvcm0gbGVmdCBzaGlmdHMgdG8gb3B0aW1pemUgc2hpZnQgYnkKCTEgYml0IGZvciBjZXJ0YWluIGlhMzIgcHJvY2Vzc29ycy4KCSogaTM4Ni5jIChjb25zdF9pbnRfMV9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCSogaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBIYW5kbGUgY29uc3RfaW50XzFfb3BlcmFuZC4KCSogaTM4Ni1wcm90b3MuaCAoY29uc3RfaW50XzFfb3BlcmFuZCk6IFByb3RvdHlwZS4KCldlZCBKdW4gMTQgMjM6NDY6MjYgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbWlwcy5jIChtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IEZpeCBicmFjZXMgZm9yIG5lc3RlZCBpZi4KCjIwMDAtMDYtMTQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jICh0b2NfaGFzaF9lcSk6IFVzZSBDT0RFX0xBQkVMX05VTUJFUiB0byBjb21wYXJlCglMQUJFTF9SRUZzLgoKMjAwMC0wNi0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZsaWN0LmMgKGNvbmZsaWN0X2dyYXBoX2NvbXB1dGUpOiBEb24ndCBsb29rIGZvciBSRUdfSU5DLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBEb24ndCBlbWl0CglhdXRvLWluYyBjb2RlLgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IEVtaXQgc3BhY2UgYmVmb3JlIG1lbSBhbGlhcyBzZXQuCgoyMDAwLTA2LTE0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBGaXggdHlwbyBpbiBlYXJsaWVyIGNoYW5nZS4KCShwcmludF9vcGVyYW5kKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgbmVnIGFuZCBvcC4KCSh0b2NfaGFzaF9tYXJrX2VudHJ5KTogRml4IHByb3RvdHlwZS4KCjIwMDAtMDYtMTQgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKElGX0NPTkQpOiBNb3ZlZCBoZXJlIGZyb20gY3AvY3AtdHJlZS5oLgoJKFRIRU5fQ0xBVVNFKTogTGlrZXdpc2UuCgkoRUxTRV9DTEFVU0UpOiBMaWtld2lzZS4KCShXSElMRV9DT05EKTogTGlrZXdpc2UuCgkoV0hJTEVfQk9EWSk6IExpa2V3aXNlLgoJKERPX0NPTkQpOiBMaWtld2lzZS4KCShET19CT0RZKTogTGlrZXdpc2UuCgkoUkVUVVJOX0VYUFIpOiBMaWtld2lzZS4KCShFWFBSX1NUTVRfRVhQUik6IExpa2V3aXNlLgoJKEZPUl9JTklUX1NUTVQpOiBMaWtld2lzZS4KCShGT1JfQ09ORCk6IExpa2V3aXNlLgoJKEZPUl9FWFBSKTogTGlrZXdpc2UuCgkoRk9SX0JPRFkpOiBMaWtld2lzZS4KCShTV0lUQ0hfQ09ORCk6IExpa2V3aXNlLgoJKFNXSVRDSF9CT0RZKTogTGlrZXdpc2UuCgkoQ0FTRV9MT1cpOiBMaWtld2lzZS4KCShDQVNFX0hJR0gpOiBMaWtld2lzZS4KCShHT1RPX0RFU1RJTkFUSU9OKTogTGlrZXdpc2UuCgkoQ09NUE9VTkRfQk9EWSk6IExpa2V3aXNlLgoJKEFTTV9DVl9RVUFMKTogTGlrZXdpc2UuCgkoQVNNX1NUUklORyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRTKTogTGlrZXdpc2UuCgkoQVNNX0lOUFVUUyk6IExpa2V3aXNlLgoJKEFTTV9DTE9CQkVSUyk6IExpa2V3aXNlLgoJKERFQ0xfU1RNVF9ERUNMKTogTGlrZXdpc2UuCgkoU1RNVF9FWFBSX1NUTVQpOiBMaWtld2lzZS4KCShMQUJFTF9TVE1UX0xBQkVMKTogTGlrZXdpc2UuCgkoU0NPUEVfQkVHSU5fUCk6IExpa2V3aXNlLgoJKFNDT1BFX0VORF9QKTogTGlrZXdpc2UuCgkoU0NPUEVfU1RNVF9CTE9DSyk6IExpa2V3aXNlLgoJKFNDT1BFX05VTExJRklFRF9QKTogTGlrZXdpc2UuCgkoU0NPUEVfTk9fQ0xFQU5VUFNfUCk6IExpa2V3aXNlLgoJKFNDT1BFX1BBUlRJQUxfUCk6IExpa2V3aXNlLgoJKEFTTV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoU1RNVF9MSU5FTk8pOiBMaWtld2lzZS4KCShTVE1UX0xJTkVOT19GT1JfRk5fUCk6IExpa2V3aXNlLgoKCSogYy1jb21tb24uZGVmOiBOZXcgZmlsZS4gQWRkZWQgU1JDTE9DLCBTSVpFT0ZfRVhQUiwgQVJST1dfRVhQUiwKCUFMSUdOT0ZfRVhQUiwgRVhQUl9TVE1ULCBDT01QT1VORF9TVE1ULCBERUNMX1NUTVQsIElGX1NUTVQsCglGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwgUkVUVVJOX1NUTVQsIEJSRUFLX1NUTVQsCglDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVCwgR09UT19TVE1ULCBMQUJFTF9TVE1ULCBBU01fU1RNVCwKCVNDT1BFX1NUTVQsIENBU0VfTEFCRUwsIFNUTVRfRVhQUi4KCgkqIGdlbmNoZWNrLmMgKHRyZWVfY29kZXNbXSk6IEFkZGVkICcjaW5jbHVkZSAiYy1jb21tb24uZGVmIicuCgoyMDAwLTA2LTE0ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogZ2NjLmMgKG1haW4pOiBRdWlldCBjb21waWxlciB3YXJuaW5ncy4gIGFyZ3YgaXMgYXNzdW1lZCB0byBiZQoJd3JpdGFibGUgaW4gcGFydHMgb2YgdGhlIEdDQyBjb2RlLgoKCSogY29uZmlnL2VsZm9zLmggKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IE1ha2UgcHJpbnRmCglzcGVjaWZpY2F0aW9uIG1hdGNoIGNhc3QuCgpXZWQgSnVuIDE0IDA5OjI1OjU3IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogUmV2ZXJ0IEFDX1RZUEVfR0VUR1JPVVBTIHBhdGNoIGZyb20gSnVuZSAxMy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgkqIHN5cy1wcm90b3MuaDogU2ltaWxhcmx5LgoKV2VkIEp1biAxNCAwMzozOTo1OCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogaWZjdnQuYyAoRURHRV9DT01QTEVYKTogTW92ZSBkZWZpbml0aW9uIC4uLgoJKiBiYXNpYy1ibG9jay5oIChFREdFX0NPTVBMRVgpOiAuLi4gaGVyZS4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogU3BlY2lmeSB0aGUgcmVnaXN0ZXIgd2hlbgoJZ2VuZXJhdGluZyBSRUdfTk9OTkVHIG5vdGVzIGFuZCBkb24ndCBnZW5lcmF0ZSBkdXBsaWNhdGVzLgoKMjAwMC0wNi0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKFRZUEVfVVNFUl9BTElHTiwgREVDTF9VU0VSX0FMSUdOKTogRGVmaW5lLgoJKHN0cnVjdCB0cmVlX3R5cGUsIHN0cnVjdCB0cmVlX2RlY2wpOiBBZGQgdXNlcl9hbGlnbiBtZW1iZXIuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogU2V0IERFQ0xfVVNFUl9BTElHTi4KCShwbGFjZV91bmlvbl9maWVsZCk6IElmIEJJR0dFU1RfRklFTERfQUxJR05NRU5UIGlzIGRlZmluZWQKCWFuZCBERUNMX1VTRVJfQUxJR04gMCwgY2FwIGFsaWdubWVudCB0byB0aGlzIHZhbHVlLgoJKHBsYWNlX2ZpZWxkKTogTGlrZXdpc2UuCgkoZmluYWxpemVfdHlwZV9zaXplKTogU2V0IFRZUEVfVVNFUl9BTElHTi4KCShsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJKGluaXRpYWxpemVfc2l6ZXR5cGVzKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyk6IFNldCBUWVBFX1VTRVJfQUxJR04gcmVzcC4KCURFQ0xfVVNFUl9BTElHTiB0byAxLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogU2V0IERFQ0xfVVNFUl9BTElHTi4KCSh4ZmVyX3RhZyk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkoZmluaXNoX3N0cnVjdCk6IFNldCBERUNMX1VTRVJfQUxJR04gcmVzcC4gVFlQRV9VU0VSX0FMSUdOLgoJKGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBTZXQgREVDTF9VU0VSX0FMSUdOLgoJKGV4cGFuZF9hbm9uX3VuaW9uX2RlY2wpOiBMaWtld2lzZS4KCSogdHJlZS5jIChtYWtlX25vZGUpOiBTZXQgREVDTF9VU0VSX0FMSUdOIHJlc3AuIFRZUEVfVVNFUl9BTElHTi4KCShidWlsZF9pbmRleF90eXBlKTogU2V0IFRZUEVfVVNFUl9BTElHTi4KCShidWlsZF9yYW5nZV90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IExpa2V3aXNlLgoJKiB0bS50ZXhpIChCSUdHRVNUX0ZJRUxEX0FMSUdOTUVOVCk6IERvY3VtZW50IHRoZSBjaGFuZ2VkIG1lYW5pbmcuCgoyMDAwLTA2LTEzICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW46IFVzZSAtLWVuYWJsZS1jaGVja2luZz1taXNjLHRyZWUsZ2MgYnkgZGVmYXVsdCBpZgoJbm8gLS1lbmFibGUtY2hlY2tpbmcgb3B0aW9uIGlzIGdpdmVuIGFuZCBmb3IKCS0tZW5hYmxlLWNoZWNraW5nPXllcy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxpYmdjYzIuYyAoaWE2NF90aHJvd19oZWxwZXIpOiBVc2UgX19idWlsdGluX3JldHVybl9hZGRyZXNzLgoJKF9fdGhyb3cpOiBEb24ndCBwYXNzIHRoZSBhZGRyZXNzIG9mIGEgbGFiZWwuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogVXNlCgljdXJyZW50X2Z1bmN0aW9uX2lzX2xlYWYuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4gIE1vZGlmeSByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eAoJaW5zdGVhZCBvZiByZWdfbmFtZXNbUkVUVVJOX0FERFJFU1NfUkVHTlVNXS4KCShpYTY0X2luaXRfbWFjaGluZV9zdGF0dXMpOiBSZXNldCByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChSRVRVUk5fQUREUkVTU19QT0lOVEVSX1JFR05VTSk6IFJlbmFtZQoJZnJvbSBSRVRVUk5fQUREUkVTU19SRUdOVU0uICBVcGRhdGUgYWxsIHVzZXMuCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIHJldHVybl9hZGRyZXNzX3BvaW50ZXJfcnR4OyByZXR1cm4KCXplcm8gaW5zdGVhZCBvZiBudWxsIG9uIGZhaWx1cmUuCgkoRUxJTUlOQUJMRV9SRUdTKTogQWRkIHJhLT5iMCBlbGltaW5hdGlvbi4KCShDQU5fRUxJTUlOQVRFKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKElOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogTGlrZXdpc2UuCgkoUkVHSVNURVJfTkFNRVMpOiBVc2UgYW4gaWxsZWdhbCBhc3NlbWJsZXIgbmFtZSBmb3IKCVJFVFVSTl9BRERSRVNTX1BPSU5URVJfUkVHTlVNLgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoZW51bSByZWdfY2xhc3MpOiBSZW1vdmUgRlJfSU5UX1JFR1MsIEZSX0ZQX1JFR1MsCglHUl9BTkRfRlJfSU5UX1JFR1MsIEdSX0FORF9GUl9GUF9SRUdTLgoJKFJFR19DTEFTU19OQU1FUyk6IExpa2V3aXNlLgoJKFJFR19DTEFTU19DT05URU5UUyk6IExpa2V3aXNlLgoJKEZSX0ZQX1JFR05PX1AsIEZSX0lOVF9SRUdOT19QKTogUmVtb3ZlLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFJlbW92ZSByZWZlcmVuY2VzIHRvIHRoZW0uCgkoUkVHTk9fUkVHX0NMQVNTKTogTGlrZXdpc2UuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogTGlrZXdpc2UuCgkoQ0xBU1NfTUFYX05SRUdTKTogTGlrZXdpc2UuCgkoUkVHSVNURVJfTU9WRV9DT1NUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCopOiBSZXBsYWNlICJlIiBjb25zdHJhaW50cyB3aXRoICJmIi4KCShtb3ZxaV9pbnRlcm5hbCk6IFNwZWNpYWwgY2FzZSBtb3ZlcyBmcm9tIHplcm8uCgkobW92aGlfaW50ZXJuYWwsIG1vdnNpX2ludGVybmFsKTogTGlrZXdpc2UuCgkobW92ZGlfaW50ZXJuYWwpOiBMaWtld2lzZS4gIEZpbGwgb3V0ICJmIiBjb25zdHJhaW50cy4KCShtb3ZzZl9pbnRlcm5hbCk6IEZpbGwgb3V0ICJyIiBjb25zdHJhaW50cy4KCShtb3ZkZl9pbnRlcm5hbCk6IExpa2V3aXNlLgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoaW5zbl9kZWFkX3ApOiBLZWVwIHNldHMgdG8gUElDX09GRlNFVF9UQUJMRV9SRUdOVU0KCWFsaXZlIGJlZm9yZSByZWxvYWQuCgoJKiBoYWlmYS1zY2hlZC5jIChzdHJ1Y3QgZGVwcyk6IEFkZCBpbl9wb3N0X2NhbGxfZ3JvdXBfcC4KCShhZGRfZGVwZW5kZW5jZSk6IEhhbmRsZSBub3RlcyBiZXR3ZWVuIFNDSEVEX0dST1VQX1AgaW5zbnMuCgkocmVtb3ZlX2RlcGVuZGVuY2UpOiBBbHdheXMgZGVmaW5lLgoJKHNldF9zY2hlZF9ncm91cF9wKTogTmV3LgoJKHNjaGVkX2FuYWx5emVfMik6IFVzZSBpdC4KCShzY2hlZF9hbmFseXplX2luc24pOiBEb24ndCBzcGVjaWFsLWNhc2UgbmFrZWQgdXNlcy4gIExvb2sgZm9yCglhbmQgZXh0ZW5kIGluX3Bvc3RfY2FsbF9ncm91cF9wLgoJKHNjaGVkX2FuYWx5emUpOiBDbGVhciBzdGFsZSBTQ0hFRF9HUk9VUF9QLiAgU2V0IGluX3Bvc3RfY2FsbF9ncm91cF9wLgoJKGluaXRfZGVwcyk6IENsZWFyIGluX3Bvc3RfY2FsbF9ncm91cF9wLgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoc3Vic3QpOiBVc2UgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFIGFuZAoJQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFX1AgaW5zdGVhZCBvZiBDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkUKCWFuZCBoYXJkLWNvZGVkIHRlc3RzLgoJKHNpbXBsaWZ5X3NldCk6IExpa2V3aXNlLgoJKGdlbl9sb3dwYXJ0X2Zvcl9jb21iaW5lKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZmluZF9yZWcpOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAoZmluZF9mcmVlX3JlZyk6IExpa2V3aXNlLgoJKiByZWNvZy5jIChyZWdpc3Rlcl9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKGluaXRfcmVnX3NldHNfMSk6IExpa2V3aXNlLgoJKHJlY29yZF9vcGVyYW5kX2Nvc3RzLCByZWdjbGFzcyk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBMaWtld2lzZS4KCSogZmxvdy5jIChtYXJrX3VzZWRfcmVncyk6IENvbmRpdGlvbmFsbHkgc2V0IFJFR19DSEFOR0VTX01PREUuCgkqIGxvY2FsLWFsbG9jLmMgKHN0cnVjdCBxdHkpOiBSZW5hbWUgY2hhbmdlc19zaXplIHRvIGNoYW5nZXNfbW9kZS4KCVVwZGF0ZSBhbGwgcmVmZXJlbmNlcy4KCSogcmVncy5oIChzdHJ1Y3QgcmVnX2luZm9fZGVmKTogTGlrZXdpc2UuCgkoUkVHX0NIQU5HRVNfTU9ERSk6IFJlbmFtZSBmcm9tIFJFR19DSEFOR0VTX1NJWkUuCgkqIHRtLnRleGkgKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERSk6IERvY3VtZW50LgoJKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERV9QKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFKTogUmVuYW1lLgoJKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERV9QKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEzMi1yZWdzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGE2NC1yZWdzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERSk6IE5ldy4KCShDTEFTU19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IE5ldy4KCSogY29uZmlnL2F2ci9hdnIuaCAoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogY29uZmlnL2QzMHYvZDMwdi5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMTMgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogY29uZmlndXJlLmluOiBBZGQgQUNfVFlQRV9HRVRHUk9VUFMgdGVzdC4KCSogc3lzLXByb3Rvcy5oOiBVc2UgR0VUR1JPVVBTX1QgKiBmb3Igc2Vjb25kIGFyZyBvZiBnZXRncm91cHMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cGxvdy5jIChzZXRfbWVtX2F0dHJpYnV0ZXMpOiBEbyBub3RoaW5nIGZvciBOVUxMIHR5cGUuCgpUdWUgSnVuIDEzIDE0OjQ1OjEwIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9tNjhrL29wZW5ic2QuaCAoQVNNX1NQRUMpOiBwYXNzIGRvd24gb3B0aW9ucyB0byBhc3NlbWJsZXIKCWNvcnJlY3RseS4KCjIwMDAtMDYtMTMgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92eGZfaW50ZXJuYWwpOiBBZGQgbWlzc2luZyAiZSIgdG8gbGRmL3N0Zi4KClR1ZSBKdW4gMTMgMTQ6MDU6MzUgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGdlbnN1cHBvcnQubyk6IFJlbW92ZSBib2d1cyAkKEhPU1RfUFJFRklYKSByZWZlcmVuY2UuCgoyMDAwLTA2LTEzICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbihBTExfTElOR1VBUyk6IENoYW5nZWQgZW5fVUsgdG8gZW5fR0IuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMDcgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWd1cmUuaW46ICBBZGp1c3QgRnJlZUJTRCBiaXRzIHRvIG1hdGNoIGNoYW5nZXMgdG8gY29uZmlnLmd1ZXNzLgoJV2Ugbm93IGRlZmF1bHQgdG8gRUxGIGZvciB0aGUgaTM4NiwgYW5kIGEub3V0IGlzIHRoZSBzcGVjaWFsIGNhc2UuCgkqIGNvbmZpZ3VyZTogIFJlYnVpbHQuCgpUdWUgSnVuIDEzIDEwOjA1OjMwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRGVsZXRlIG5vdGVzIGJldHdlZW4gY2MwIHNldHRlciBhbmQKCXVzZXIgd2hlbiByZXN0YXJ0aW5nIGZyb20gc2V0dGVyLgoKMjAwMC0wNi0xMyAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiB2YXguaCAoSU5ERVhfVEVSTV9QKTogRGVmaW5lIGV2YWx1YXRpb24gb3JkZXIgb2YgJiYncyBpbiB8fCBhbmQKCWNhc3QgdG8gc3F1ZWxjaCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoyMDAwLTA2LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoaGFuZGxlX2RpcmVjdGl2ZSk6IFByaW50IG5vbi1OVUwtdGVybWluYXRlZCBzdHJpbmcKCXdpdGggJS4qcy4KCjIwMDAtMDYtMTIgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAoZGVhZF9vcl9wcmVkaWNhYmxlKTogRG9uJ3QgZG8gY29uZGl0aW9uYWwgZXhlY3V0aW9uCglwYXRoIGlmIHRoZSBtYWNoaW5lIG5lZWRzIGV4dHJhIHN1cHBvcnQgdG8gZG8gY29uZGl0aW9uYWwKCWV4ZWN1dGlvbi4KCk1vbiBKdW4gMTIgMTc6MDQ6MTcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCwgY2FzZSBNRU0pOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMKCXRvIHByaW50IHRoZSBhbGlhcyBzZXQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSwgREVDTF8qIG5vZGVzIGFuZCBjYXNlICd0Jyk6IFNpbWlsYXJseS4KCjIwMDAtMDYtMTIgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogY29uZmlnL2Zsb2F0LXZheC5oOiBBZGQgR0ZMT0FUIGRlZmluZXMuCgpNb24gSnVuICAxMiAgOTo0NDowMCAyMDAwICBNYXJrIEtsZWluICA8bWtsZWluQGRpcy5jb20+CgoJKiBjb25maWd1cmUuaW46IFVwZGF0ZSB0bSBkZXBlbmRlbmNpZXMgZm9yIE1QRS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZ2VuZ2VucnRsLmMgKG9ic3RhY2tfYWxsb2NfcnR4KTogQ29ycmVjdCB0aGUgYWxsb2NhdGVkIHNpemUuCgoyMDAwLTA2LTEyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBhaXg0MS5oIChTVUJUQVJHRVRfU1dJVENIRVMpOiBEZWxldGUgdGhyZWFkcy4KCShDUFBfU1BFQyk6IENoYW5nZSBtdGhyZWFkcyB0byBwdGhyZWFkLgoJKExJQl9TUEVDKTogTGlrZXdpc2UuCgkoU1RBUlRGSUxFX1NQRUMpOiBMaWtld2lzZS4KCSogYWl4NDMuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogRGVsZXRlIHRocmVhZHMuCgkoQ1BQX1NQRUMpOiBDaGFuZ2UgbXRocmVhZHMgdG8gcHRocmVhZC4KCShMSUJfU1BFQyk6IExpa2V3aXNlLgoJKFNUQVJURklMRV9TUEVDKTogTGlrZXdpc2UuCgkqIHJzNjAwMC1wcm90b3MuaCAocmVnX29yX2FyaXRoX2NpbnRfb3BlcmFuZCk6IE5ldy4KCSogcnM2MDAwLmMgKHJlZ19vcl9hcml0aF9jaW50X29wZXJhbmQpOiBOZXcuCgkobnVtX2luc25zX2NvbnN0YW50X3dpZGUpOiBEZWNvcmF0ZSB1bnNpZ25lZCBjb25zdGFudC4KCSogcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCByZWdfb3JfYXJpdGhfY2ludF9vcGVyYW5kLgoJKiByczYwMDAubWQgKGFkZHNpMyk6IFVzZSBuZXcgcHJlZGljYXRlLgoJKHN1YnNpMywgYWRkZGkzLCBzdWJkaTMpOiBMaWtld2lzZS4KCjIwMDAtMDYtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChsYW5nX2dldF9hbGlhc19zZXQpOiBGaXggdHlwby4KCjIwMDAtMDYtMTIgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWdzKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJKGxpZmVfYW5hbHlzaXMpOiBSZW1vdmUgUFJPUF9BVVRPSU5DIGlmIHJ1bm5pbmcgYWZ0ZXIgcmVsb2FkLgoJKHByb3BhZ2F0ZV9vbmVfaW5zbik6IFBST1BfQVVUT0lOQyBpcyBhbHdheXMgb2ZmIGFmdGVyIHJlbG9hZC4KCjIwMDAtMDYtMTEgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWdzKTogRG9uJ3QgY2FsbCBmaW5kX2F1dG9faW5jIGFmdGVyIHJlbG9hZAoJaGFzIHJ1bi4KCjIwMDAtMDYtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJiLXJlb3JkZXIuYyAoYnVpbGRfc2NvcGVfZm9yZXN0KTogSW5pdGlhbGl6ZSB2YXJpYWJsZQoJYGN1cnJfc2NvcGUnLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBMaWtld2lzZSBmb3IgdmFyaWFibGVzCglgc2F2ZV9wZW5kaW5nX3N0YWNrX2FkanVzdCcgYW5kIGBzYXZlX3N0YWNrX3BvaW50ZXJfZGVsdGEnLgoKCSogaTM4Ni5jIChmdW5jdGlvbl9hcmdfYWR2YW5jZSwgZnVuY3Rpb25fYXJnKTogQ2FzdCB0byBhdm9pZAoJc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogaTM4Ni5oIChNRU1PUllfTU9WRV9DT1NUKTogTGlrZXdpc2UuCgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jayk6IEluaXRpYWxpemUgdmFyaWFibGVzCglgZWxzZV9zdGFydCcgYW5kIGBlbHNlX2VuZCcuCgoJKiBsaWJnY2MyLmggKF9fZWhfYWxsb2MsIF9fZWhfZnJlZSk6IFByb3RvdHlwZS4KCgkqIHJlZ3JlbmFtZS5jIChycl9yZXBsYWNlX3JlZyk6IEluaXRpYWxpemUgdmFyaWFibGUgYGRlc3Rfc3VicmVnbm8nLgoKMjAwMC0wNi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJpbnRsLmEpOiBEZXBlbmQgb24gaW50bC5hbGwuCgoyMDAwLTA2LTA5ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoYy1wYXJzZS5vKTogQWxzbyBkZXBlbmQgb24gb3V0cHV0LmguCgoyMDAwLTA2LTA5ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIG1jb3JlLXByb3Rvcy5oOiBkaXNjYXJkcyBjb25zdCB3YXJuaW5nIHJlbW92YWwuCgkqIG1jb3JlLmM6IGRpc2NhcmRzIGNvbnN0IHdhcm5pbmcgcmVtb3ZhbC4KCjIwMDAtMDYtMDkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc206IERlY2xhcmUgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlIGF0Cgl0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgoKMjAwMC0wNi0wOSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiByZWFsLmg6ICBBZGQgcHJvdG90eXBlIGZvciBsZGV4cC4KCjIwMDAtMDYtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdnYy1ub25lLmMsIGdnYy1zaW1wbGUuYywgZ2djLXBhZ2UuYyAoZ2djX2FsbG9jX29iaik6IFJlbmFtZQoJaXQgZ2djX2FsbG9jLCBkcm9wIHNlY29uZCBhcmd1bWVudCwgbmV2ZXIgY2xlYXIgcmV0dXJuZWQgbWVtb3J5LgoJKiBnZ2MtY29tbW9uLmMgKGdnY19hbGxvY19zdHJpbmcpOiBVc2UgZ2djX2FsbG9jLgoJKGdnY19hbGxvY19jbGVhcmVkKTogTmV3LgoJKiBnZ2MuaDogUHJvdG90eXBlIGdnY19hbGxvYyBhbmQgZ2djX2FsbG9jX2NsZWFyZWQsIG5vdAoJZ2djX2FsbG9jX29iai4gIFJlbW92ZSBnZ2NfYWxsb2MgbWFjcm8uCgkoZ2djX2FsbG9jX3J0eCwgZ2djX2FsbG9jX3J0dmVjLCBnZ2NfYWxsb2NfdHJlZSk6IFVzZSBnZ2NfYWxsb2MuCgoJKiBydGwuYyAocnR2ZWNfYWxsb2MpOiBDbGVhciB0aGUgdmVjdG9yIGFsd2F5cy4KCShydHhfYWxsb2MpOiBDbGVhciB0aGUgZmlyc3Qgd29yZCBhbHdheXMuICBSZW1vdmUgZGlydHkKCW9ic3RhY2sgdHJpY2tzICh0aGlzIHJvdXRpbmUgaXMgbm8gbG9uZ2VyIGEgYm90dGxlbmVjaykuCgkqIHRyZWUuYyAobWFrZV9ub2RlKTogQ2xlYXIgdGhlIG5ldyBub2RlIGFsd2F5cy4KCShtYWtlX3RyZWVfdmVjKTogTGlrZXdpc2UuCgkodHJlZV9jb25zKTogQ2xlYXIgdGhlIGNvbW1vbiBzdHJ1Y3R1cmUgYWx3YXlzLgoJKGJ1aWxkMSk6IExpa2V3aXNlOyBhbHNvLCBjbGVhciBUUkVFX0NPTVBMRVhJVFkuCgkqIGdlbmdlbnJ0bC5jOiBVc2UgcHV0cyB3aGVyZXZlciBwb3NzaWJsZS4gIFJlbW92ZSBleHRyYQoJbmV3bGluZXMuCgkoZ2VuZGVmKTogQ2xlYXIgdGhlIGZpcnN0IHdvcmQgb2YgYW4gUlRYIGluIHRoZSBnZW5lcmF0b3IKCWZ1bmN0aW9uLCBpcnJlc3BlY3RpdmUgb2YgZ2djX3AuICBJbml0aWFsaXplICcwJyBzbG90cyB0bwoJTlVMTC4KCShnZW5sZWdlbmQpOiBEb24ndCBnZW5lcmF0ZSBvYnN0YWNrX2FsbG9jX3J0eCByb3V0aW5lLCBqdXN0IGEKCXRoaW4gd3JhcHBlciBtYWNybyBhcm91bmQgb2JzdGFja19hbGxvYy4KCgkqIHN0bXQuYyAoZXhwYW5kX2ZpeHVwKTogVXNlIGdnY19hbGxvYy4KCSogYy10eXBlY2suYyAoYWRkX3BlbmRpbmdfaW5pdCk6IFVzZSBnZ2NfYWxsb2MuCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogQ2xlYXIgQ09OU1RfRE9VQkxFX0NIQUlOKHRlbSkuCgkqIHZhcmFzbS5jIChpbW1lZF9kb3VibGVfY29uc3QpOiBTZXQgQ09OU1RfRE9VQkxFX01FTShyKSB0bwoJY29uc3QwX3J0eCB3aGVuIGl0IGlzIGNyZWF0ZWQuCgkoaW1tZWRfcmVhbF9jb25zdF8xKTogU2V0IENPTlNUX0RPVUJMRV9DSEFJTihyKSB0byBOVUxMX1JUWCBpZgoJd2UgYXJlIG5vdCBpbiBhIGZ1bmN0aW9uLgoKCSogdHJlZS5jICh0cmVlX2NsYXNzX2NoZWNrX2ZhaWxlZCk6IE1ha2Ugc2Vjb25kIGFyZyBhbiBpbnQuCgkqIHRyZWUuaDogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDAtMDYtMDkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHRyZWUuaCAoVk9JRF9UWVBFX1ApOiBEb24ndCBsb29rIGF0IHRoZSBUWVBFX01BSU5fVkFSSUFOVAoJb2YgYW4gZXJyb3JfbWFya19ub2RlLgoKRnJpIEp1biAgOSAyMDozNToxMyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXNtX291dHB1dF9zZWN0aW9uX25hbWUpOiBidWdmaXguCgoyMDAwLTA2LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogdGltZXZhci5kZWY6IEFkZCBUVl9FWFBBTkQuCgkqIHRpbWV2YXIuYyAodGltZXZhcl9wcmludCk6IFVwZGF0ZSB0aW1pbmcgaW5mb3JtYXRpb24uCgkqIGNhbGxzLmMgKHRyeV90b19pbnRlZ3JhdGUpOiBQdXNoIHRvIFRWX0lOVEVHUkFUSU9OIGZvciBpbmxpbmluZy4KCgkqIHN0bXQuYyAoZXhwYW5kX3JldHVybik6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA2LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IEFsc28gYXZvaWQgd3JhcHBpbmcgYXV0by1idWlsZC5oIHdpdGggSU5fR0NDLgoKCSogc2Nhbi10eXBlcy5zaCAoVkFMVUUpIFdyYXAgdXNlIHdpdGggZG91YmxlIHF1b3RlcyB0byBwcm90ZWN0Cgl2YXJpYWJsZSBhZ2FpbnN0IGZpbGVuYW1lIGV4cGFuc2lvbiB3aGVuIGl0IGNvbnRhaW5zICJjaGFyICoiLgoKCSogc3lzdGVtLmggKFNTSVpFX01BWCk6IERlbGV0ZSBiYWNrdXAgZGVmaW5pdGlvbi4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfaW5jbHVkZV9maWxlKTogVXNlIElOVFRZUEVfTUFYSU1VTShzc2l6ZV90KQoJaW5zdGVhZCBvZiBTU0laRV9NQVguCgoyMDAwLTA2LTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgd2hldGhlciBnYXMgc3VwcG9ydHMgLXJlbGF4LgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsdC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9SRUxBWF9TUEVDKTogRGVmaW5lLgoJKEVYVFJBX1NQRUNTKTogQWRkIGFzbV9yZWxheC4KCShBU01fU1BFQyk6IEFkZCAlKGFzbV9yZWxheCkuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tcmVsYXggYW5kIC1tbm8tcmVsYXguCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKExJTktfQVJDSF9TUEVDKTogUmVuYW1lIHRvIExJTktfU1BFQy4KCShMSU5LX1NQRUMpOiBQYXNzIC1yZWxheCB0byBsaW5rZXIgdW5sZXNzIC1tbm8tcmVsYXggb3IgLXIuCgkoQVNNX1NQRUMpOiBBZGQgJShhc21fcmVsYXgpLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoTElOS19TUEVDLCBBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAob3V0cHV0X3NpYmNhbGwpOiBJZiBIQVZFX0FTX1JFTEFYX09QVElPTiwKCW5ldmVyIHVzZSBzZXRoaS9qbXBsIGZvciBsZWFmIHRhaWwgY2FsbHMuICBVc2Ugb3Igd2l0aCByczIgJWcwCglpbnN0ZWFkIG9mIG1vdiwgc28gdGhhdCBnYXMgY2FuIGZ1cnRoZXIgb3B0aW1pemUgaXQuCgoyMDAwLTA2LTA4ICBKYW1lcyBFLiBXaWxzb24gIDx3aWxzb25AYmxldGNobGV5cGFyay5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKHNpemVfb2ZfZGllLCBjYXNlIGR3X3ZhbF9jbGFzc19jb25zdCk6IFVzZQoJc2l6ZV9vZl9zbGViMTI4LgoJKHZhbHVlX2Zvcm1hdCwgY2FzZSBkd192YWxfY2xhc3NfY29uc3QpOiBVc2Ugc2RhdGEgZm9ybWF0LgoJKG91dHB1dF9kaWUpOiBDYWxsIG91dHB1dF9zbGViMTI4LgoKMjAwMC0wNi0wOCAgSmFtZXMgRS4gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoQVNNX09VVFBVVF9EV0FSRl9EQVRBOCk6IEFkZCBuZXcgbWFjcm8gdGhhdCB1c2VzCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1AuICBSZW5hbWUgb2xkIG1hY3JvIHRvCglBU01fT1VUUFVUX0RXQVJGX0NPTlNUX0RPVUJMRS4KCShvdXRwdXRfZGllLCBjYXNlIGR3X3ZhbF9jbGFzc191bnNpZ25lZF9jb25zdCk6IENvcnJlY3QgY2FsbCB0bwoJQVNNX09VVFBVVF9EV0FSRl9EQVRBOC4KCShvdXRwdXRfZGllLCBjYXNlIGR3X3ZhbF9jbGFzc19sb25nX2xvbmcpOiBVc2UKCUFTTV9PVVRQVVRfRFdBUkZfQ09OU1RfRE9VQkxFLgoJKiB0cmVlLmMgKGhvc3RfaW50ZWdlcnApOiBBY2NlcHQgdW5zaWduZWQgSE9TVF9XSURFX0lOVCB2YWx1ZXMgd2hlbgoJcG9zIGlzIHplcm8uCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X291dHB1dF9lbmRfcHJvbG9ndWUpOiBBZGQuCgkob3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRml4IG1pc3BlbGxpbmcuCgkob3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLCBvdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW9yZGVyIHRvCgltYXRjaCBpYTY0LmMgZGVmaW5pdGlvbiBvcmRlci4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IEFkZCBjb21tZW50LgoJKGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogU2V0IFJUWF9GUkFNRV9SRUxBVEVEX1Agb24gc3RhY2sgcmVzdG9yZSBpbnNucy4KCVVzZSByMyBpbnN0ZWFkIG9mIHIyIGZvciBsYXJnZSBzdGFjayByZXN0b3Jlcy4KCShpYTY0X291dHB1dF9lbmRfcHJvbG9ndWUpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc19zZXQpOiBFbWl0ICIucmVzdG9yZSBzcCIgZm9yIGVwaWxvZ3VlIHN0YWNrIHJlc3RvcmVzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEZVTkNUSU9OX0VORF9QUk9MT0dVRSk6IERlZmluZS4KCjIwMDAtMDYtMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlX2ZpZWxkcyk6IERvbid0IHNlZ2ZhdWx0IG9uIGZpZWxkcyB3aXRoCglpbmNvbXBsZXRlIHR5cGVzLgoKMjAwMC0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZyYW1lLmMgKGVuZF9mZGVfc29ydCk6IFJlbW92ZSBleHRyYW5lb3VzIGVycmF0aWMgYXJyYXkgdGVzdC4KCjIwMDAtMDYtMDggIERlbmlzIFBlcmNoaW5lIDxkeXBAcGVyY2hpbmUuY29tPgoKCSogZnJhbWUuYyAoc3RhcnRfZmRlX3NvcnQpOiBEb24ndCBtYWxsb2MgKDApLgoKMjAwMC0wNi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1kZWNsLmMgKHB1c2hkZWNsKTogRG8gbm90IGNhbGwgQ09NUExFVEVfVFlQRV9QIG9uCgllcnJvcl9tYXJrX25vZGUuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFRoZSB0cmFuc3BhcmVudF91bmlvbl9mbGFnIG1lYW5zCglkaWZmZXJlbnQgdGhpbmdzIGZvciB1bmlvbnMgYW5kIGFycmF5cy4gIERvIG5vdCBpbnNwZWN0IGl0Cgl3aXRoIFRZUEVfVFJBTlNQQVJFTlRfVU5JT04uCgoyMDAwLTA2LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGxpYi5jIChkb19pZmRlZiwgZG9faWZuZGVmKTogRG9uJ3Qgc2VnZmF1bHQgaWYgcGFyc2VfaWZkZWYKCXJldHVybmVkIE5VTEwuCgpXZWQgSnVuICA3IDIwOjM0OjMzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhc21fb3V0cHV0X3NlY3Rpb25fbmFtZSk6IG91dHB1dCBzZWN0aW9uCglhdHRyaWJ1dGVzLgoJKiBjb25maWcvYXZyL2xpYmdjYy5TICgudGV4dC5saWJnY2MpOiBkZWNsYXJlIHNlY3Rpb24gYXR0cmlidXRlcy4KCjIwMDAtMDYtMDYgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZnJhbWUuaCAoc3RydWN0IHVud2luZF9pbmZvX3B0cik6IENvbGxhcHNlIHZlcnNpb24sIGZsYWdzLCBhbmQgbGVuZ3RoCglmaWVsZHMgaW50byBoZWFkZXIgZmllbGQuCgkoSUE2NF9VTldfSERSX0xFTkdUSCwgSUE2NF9VTldfSERSX0ZMQUdTLCBJQTY0X1VOV19IRFJfVkVSU0lPTik6IE5ldwoJbWFjcm9zIHRvIGFjY2VzcyBsZW5ndGgsIGZsYWdzLCBhbmQgdmVyc2lvbiBpbmZvIGZyb20gaGVhZGVyIGZpZWxkLgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZG9fZnJhbWVfc2V0dXBfYXV4KTogRGVsZXRlIGhlcmUuCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKF9fZG9fZnJhbWVfc2V0dXBfYXV4KTogQWRkIGhlcmUuCgkoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogRml4IGNhbGxlci4KCSogY29uZmlnL2lhNjQvZnJhbWUtaWE2NC5jIChnZXRfdW53aW5kX3JlY29yZCk6IENoYW5nZSBwYXJhbWV0ZXIKCXByb2xvZ3VlX2ZsYWcgdG8gaGVhZGVyLiAgUGFzcyB0byByZWFkX1BfcmVjb3JkLgoJKHJlYWRfUF9yZWNvcmQpOiBOZXcgYXJndW1lbnQgaGVhZGVyLiAgSW1wbGVtZW50IFA0IGZvcm1hdC4KCU11bHRpcGx5IFA3X1RfU0laRSBieSAxNi4KCShleGVjdXRlX29uZV9pYTY0X2Rlc2NyaXB0b3IpOiBOZXcgc3RhdGljIGxvY2FsIHJlZ2lvbl9oZWFkZXIuICBQYXNzIHRvCglnZXRfdW53aW5kX3JlY29yZC4gIENvcHkgciB0byByZWdpb25faGVhZGVyIGlmIHIgaXMgYSBoZWFkZXIgcmVjb3JkLgoJKHByaW50X2FsbF9yZWNvcmRzKTogTGlrZXdpc2UuCgkoX19idWlsZF9pYTY0X2ZyYW1lX3N0YXRlKTogVXNlIElBNjRfVU5XX0hEUl9MRU5HVEguCgkoX19nZXRfcGVyc29uYWxpdHksIF9fZ2V0X2V4Y2VwdF90YWJsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHByb2Nlc3Nfc2V0KTogRG8gbm90IGRpdmlkZSBvZmZzZXRzIGJ5IDQuCgoyMDAwLTA2LTA2ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ19JTkxJTkUpOiBBZGRlZC4KCSogYWNsb2NhbC5tNCAoQU1fV0lUSF9OTFMpOiBFbmFibGUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgYnkgZGVmYXVsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGNfbGFuZ3VhZ2Vfa2luZCk6IE5ldyB0eXBlLgoJKGNfbGFuZ3VhZ2UpOiBOZXcgdmFyaWFiLmUKCSogYy1jb21tb24uYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogRG9uJ3QgcHV0IHN0cnVjdHVyZXMgaW4KCW5vbi16ZXJvIGFsaWFzIHNldHMgaW4gQysrLgoJKiBjLWRlY2wuYyAoY19sYW5ndWFnZSk6IERlZmluZSBpdC4KCSogYy1sZXguYyAoZG9pbmdfb2JqY190aGFuZyk6IFJlbW92ZS4KCSogYy10cmVlLmggKGRvaW5nX29iamNfdGhhbmcpOiBNYWtlIGl0IGEgbWFjcm8uCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogU2V0IGNfbGFuZ3VhZ2UsIG5vdAoJZG9pbmdfb2JqY190aGFuZy4KCjIwMDAtMDYtMDYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X21heGltdW1fd2lkdGgpOiBSZW1vdmUuCgkoZG9pbmdfbGluZV93cmFwcGluZyk6IFR3ZWFrLgoJKGRpYWdub3N0aWNfYnVmZmVyKTogTmV3IG9iamVjdC4KCShnbG9iYWxfb3V0cHV0X2J1ZmZlcik6IE5ldyBvYmplY3QuCgkob3V0cHV0X2Rlc3Ryb3lfcHJlZml4KTogTmV3IGZ1bmN0aW9uLgoJKGRlZmF1bHRfaW5pdGlhbGl6ZV9idWZmZXIpOiBMaWtld2lzZS4KCShyZXNoYXBlX2RpYWdub3N0aWNfYnVmZmVyKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IExpa2V3aXNlLgoJKG91dHB1dF9jbGVhcik6IFR3ZWFrLgoJKGxpbmVfd3JhcHBlcl9wcmludGYpOiBBZGp1c3QgY2FsbCB0byBpbml0X291dHB1dF9idWZmZXIuCgkodmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiBMaWtld2lzZS4gIFVzZQoJb3V0cHV0X2Rlc3Ryb3lfcHJlZml4LgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBMaWtld2lzZS4KCgkqIGRpYWdub3N0aWMuaCAoc3RydWN0IG91dHB1dF9idWZmZXIpOiBDb25zdGlmeSBwcmVmaXguCgkoaW5pdF9vdXRwdXRfYnVmZmVyLCBvdXRwdXRfZ2V0X3ByZWZpeCk6IENvbnN0aWZ5LgoJKGRpYWdub3N0aWNfbWVzc2FnZV9sZW5ndGhfcGVyX2xpbmUpOiBMaWtld2lzZS4KCShyZXNoYXBlX2RpYWdub3N0aWNfYnVmZmVyKTogRGVjbGFyZS4KCShkZWZhdWx0X2luaXRpYWxpemVfYnVmZmVyKTogRGVjbGFyZS4KCShpbml0aWFsaXplX2RpYWdub3N0aWNzKTogRGVjbGFyZS4KCShkaWFnbm9zdGljX2J1ZmZlcik6IERlY2xhcmUgbmV3IG9iYmplY3QuCgoJKiB0b3BsZXYuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oCgkoZGlzcGxheV9oZWxwKTogRG9jdW1lbnQgZGlhZ25vc3RpYyBmb3JtYXR0aW5nIG9wdGlvbnMuCgkoZGVjb2RlX2Zfb3B0aW9uKTogSGFuZGxlIGRpYWdub3N0aWMgZm9ybWF0dGluZyBvcHRpb25zLgoJKG1haW4pOiBTZXR1cCBpbml0aWFsaXphdGlvbiBmb3IgZGlhZ25vc3RpYyBtZXNzYWdlcyBvdXRwdXR0ZXIuCgoJKiB0b3BsZXYuaCAoc2V0X21lc3NhZ2VfbGVuZ3RoKTogUmVtb3ZlLgoKCSogTWFrZWZpbGUuaW4gKHRvcGxldi5vKTogRGVwZW5kcyB1cG9uIGRpYWdub3N0aWMuaAoKCSogaW52b2tlLnRleGkgOiBEb2N1bWVudCBkaWFnbm9zdGljcyBmb3JtYXR0aW5nIG9wdGlvbnMuCgpUdWUgSnVuICA2IDE5OjI1OjMyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY29uZmlndXJlLmluIChNYWtlIHRoZSBsaW5rcyk6IFR5cG8gZml4IDogdGhlIGZpbGUgdGhhdCBtdXN0IGJlCglpbmNsdWRlZCB3aXRob3V0ICNpZmRlZiBJTl9HQ0MgaXMgYGF1dG8taG9zdC5oJywgbm90IGBhdXRvLWNvbmZpZy5oJy4KCSogY29uZmlndXJlOiBGaWxlIHJlYnVpbHQuCgoyMDAwLTA2LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZWgtY29tbW9uLmggKEVIX0FMTE9DX1NJWkUsIEVIX0FMTE9DX0FMSUdOKTogTmV3ICNkZWZpbmVzLgoJKGVoX2NvbnRleHQpOiBBZGQgYWxsb2NfbWFzayBhbmQgYWxsb2NfYnVmZmVyIGVtZXJnZW5jeSBmYWxsYmFjawoJc3BhY2UuCgkqIGxpYmdjYzIuYyAoX19laF9hbGxvYyk6IE1vdmVkIGZyb20gY3AvZXhjZXB0aW9uLmNjLiBGYWxsYmFjayBvbgoJZW1lcmdlbmN5IGVoX2NvbnRleHQgYnVmZmVyLCBpZiBtYWxsb2MgZmFpbHMuCgkoX19laF9mcmVlKTogTW92ZWQgZnJvbSBjcC9leGNlcHRpb24uY2MuIFJlbGVhc2UgdG8gZW1lcmdlbmN5CgllaF9jb250ZXh0IGJ1ZmZlciwgaWYgYXBwcm9wcmlhdGUuCgoyMDAwLTA2LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogZXhwci5jIChzdG9yZV9leHByKTogRml4IHR5cG8uCgoyMDAwLTA2LTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtNjhrLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBNb3ZlIHByb3RvdHlwZSAuLi4KCgkqIG02OGstcHJvdG9zLmggKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiAuLi4gaGVyZS4KCgkqIG02OGsubWQgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBEZWxldGUgcHJvdG90eXBlcy4KCSh1bnR5cGVkX2NhbGwpOiBJbnZva2UgR0VOX0NBTEwoKSwgbm90IGdlbl9jYWxsKCkuCgoJKiBuZXh0c3RlcC5jOiBJbmNsdWRlIHN5c3RlbS5oIGFuZCB0b3BsZXYuaC4KCShnZXRfZGlyZWN0aXZlX2xpbmUpOiBEb24ndCBwcm90b3R5cGUuCgkoaGFuZGxlX3ByYWdtYSk6IE1hcmsgcGFyYW1ldGVycyB3aXRoIEFUVFJJQlVURV9VTlVTRUQgYW5kIGNvbnN0aWZ5LgoKCSogbmV4dHN0ZXAuaCAoaGFuZGxlX3ByYWdtYSk6IFByb3RvdHlwZS4KCShTRUNUSU9OX0ZVTkNUSU9OKTogUHJvdG90eXBlIEZVTkNUSU9OKCkuICBNb3ZlIHByb3RvdHlwZSBvZgoJb2JqY19zZWN0aW9uX2luaXQgLi4uCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiAuLi4gaGVyZS4KClR1ZSBKdW4gIDYgMDg6MTc6MjYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHNkYm91dC5jIChzdHJ1Y3Qgc2RiX2ZpbGUpOiBOQU1FIG5vdyBjb25zdC4KCShzZGJvdXRfaW5pdCk6IGlucHV0X2ZpbGVfbmFtZSBub3cgY29uc3QuCgkoc2Rib3V0X3N0YXJ0X25ld19zb3VyY2VfZmlsZSk6IEZJTEVOQU1FIG5vdyBjb25zdC4KCSogc2Rib3V0LmMgKHNkYm91dF9pbml0LCBzZGJvdXRfc3RhcnRfbmV3X3NvdXJjZV9maWxlKTogUmVmbGVjdCBhYm92ZS4KCjIwMDAtMDYtMDYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBIYW5kbGUgY29tcGxleCBkYXRhIHR5cGVzLgoKMjAwMC0wNi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIGV4cGxvdy5jIChtYXliZV9zZXRfdW5jaGFuZ2luZyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tLi4uCgkoc2V0X21lbV9hdHRyaWJ1dGVzKTogSGVyZS4KCSogZXhwci5oOiBEZWNsYXJlIGl0LgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogQ2FsbCBpdC4KCjIwMDAtMDYtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IE1pbmQgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFCgl3aGlsZSBsb29raW5nIGZvciBhIHJlZ2lzdGVyIHRvIGluaGVyaXQgZnJvbS4KCjIwMDAtMDYtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5zb21hLnJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLnJlYWR5KTogTG9zZS4KCShsaWJnY2MubWspOiBKdXN0IHVzZSBtdiwgbm90IG1vdmUtaWYtY2hhbmdlLgoJKExJQkdDQ19ERVBTKTogTmV3IG1hY3JvLgoJKGxpYmdjYy5hKTogVXNlIGl0LgoJKHN0bXAtbXVsdGlsaWIpOiBMaWtld2lzZS4KCSogbWtsaWJnY2MuaW4gKHN0bXAtZGlycyk6IE5ldyB0YXJnZXQuICBNYWtlIGV2ZXJ5dGhpbmcgZGVwZW5kIG9uCglpdCByYXRoZXIgdGhhbiB0aGUgZGlyZWN0b3JpZXMgdGhlbXNlbHZlcy4KCShMSUIyQUREKTogRGVwZW5kIG9uIHRoZSBsaXN0IGZpbGUgcmF0aGVyIHRoYW4gJ2ZvcmNlJy4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCwgY2FzZSBDT05EX0VYUFIpOiBFbGlkZSBjb252ZXJzaW9uIGJldHdlZW4KCWN2LXF1YWxpZmllZCB2ZXJzaW9ucyBvZiB0eXBlcy4KCk1vbiBKdW4gIDUgMTQ6MDY6MTggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzaG9ydF9icmFuY2gpOiBDb3JyZWN0IGVycm9yIGluIHJhbmdlCgljb21wdXRhdGlvbi4KCjIwMDAtMDYtMDUgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogTmV3IGluY2x1ZGUgaGFja3MgZm9yIHVsdHJpeC4KCSogKG5lc3RlZF91bHRyaXgpOiBSZXBsYWNlZCBieSB1bHRyaXhfbmVzdGVkX3N2Yy4KCSogKHVsdHJpeF9hdG9mX3BhcmFtKTogdGVzdF90ZXh0IHN0cmluZyBhZGRlZC4KCSogKHVsdHJpeF9pZmRlZik6IE1vZGlmaWVkIHNlbGVjdCBzdHJpbmcuCgoyMDAwLTA2LTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBvYmpjL29iamMtYWN0LmMgKGdlbmVyYXRlX21ldGhvZF9kZXNjcmlwdG9ycyk6IFJlZ2lzdGVyCglvYmpjX21ldGhvZF9wcm90b3R5cGVfdGVtcGxhdGUgYXMgYSBHQyByb290LgoJKGNvbXBfbWV0aG9kX3dpdGhfcHJvdG8pOiBSZWdpc3RlciBmdW5jdGlvbl90eXBlIGFzIGEgR0Mgcm9vdC4KCShjb21wX3Byb3RvX3dpdGhfcHJvdG8pOiBSZXBsYWNlIGZ1bmN0aW9uX3R5cGUxIGFuZAoJZnVuY3Rpb25fdHlwZTIgd2l0aCBhIHR3by1lbGVtZW50IGFycmF5OyByZWdpc3RlciBpdCBhcyBhIEdDIHJvb3QuCgoJKGdlbmVyYXRlX3Byb3RvY29scywgYnVpbGRfcHJvdG9jb2xfaW5pdGlhbGl6ZXIsCglnZW5lcmF0ZV9wcm90b2NvbF9saXN0LCBidWlsZF9jYXRlZ29yeV9pbml0aWFsaXplciwKCWJ1aWxkX3NoYXJlZF9zdHJ1Y3R1cmVfaW5pdGlhbGl6ZXIpOiBEbyBub3QgY2FjaGUgY2FzdF90eXBlCglhbmQvb3IgY2FzdF90eXBlMi4KCjIwMDAtMDYtMDUgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogQWRkIG1pc3NpbmcgYXJndW1lbnQgdG8gc2V0X21lbV9hdHRyaWJ1dGVzCgljYWxsLgoKMjAwMC0wNi0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoVk9JRF9UWVBFX1ApOiBOZXcgbWFjcm8uCgkoQ09NUExFVEVfT1JfVk9JRF9UWVBFX1ApOiBVc2UgVk9JRF9UWVBFX1AuCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBWT0lEX1RZUEVfUC4KCShnZXRfcGFybV9pbmZvKTogTGlrZXdpc2UuCgkoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGNvbWJpbmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoJKGludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwZW5kX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTGlrZXdpc2UuCgkoZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluIChwcmltYXJ5KTogTGlrZXdpc2UuCgkqIGMtcGFyc2UueSwgYy1wYXJzZS5jLCBjLXBhcnNlLmg6IFJlZ2VuZXJhdGUuCgkqIG9iamMvb2JqYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCk1vbiBKdW4gIDUgMDY6NDY6MjggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBJZiBjb21wbmVudCBpcyBhZGRyZXNzYWJsZSwgdXNlIGFsaWFzCglzZXQgb2YgY29tcG9uZW50LgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSk6IExpa2V3aXNlLgoKMjAwMC0wNi0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogUmVtb3ZlIGR5bl9zdHJpbmcubwoJKGR5bi1zdHJpbmcubyk6IERlbGV0ZSBydWxlLgoJKiBkeW4tc3RyaW5nLmM6IERlbGV0ZSBmaWxlCgkqIGR5bi1zdHJpbmcuaDogTGlrZXdpc2UuCgoyMDAwLTA2LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoaW50bC4qKTogSG9ub3Igbm9uLXplcm8gZXhpdCBjb2RlcyBpbiB0aGUgaW50bAoJc3ViZGlyLgoKMjAwMC0wNi0wMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYWxpYXMuYyAocmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzKTogRG9uJ3QgaW5zcGVjdAoJREVDTF9OT05BRERSRVNTQUJMRV9QIG9mIG5vbi1GSUVMRF9ERUNMIGNvbXBvbmVudHMgb2Ygc3RydWN0dXJlcy4KClNhdCBKdW4gIDMgMTk6MDU6MzAgMjAwMCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBpZmN2dC5jIChwcm9jZXNzX2luc25zKTogSWYgSUZDVlRfTU9ESUZZX0lOU04gaXMgZGVmaW5lZCwgY2FsbAoJaXQgd2l0aCB0aGUgcGF0dGVybiB0byBkbyBtYWNoaW5lIGRlcGVuZGVudCB3b3JrLgoJKGNvbmRfZXhlY19wcm9jZXNzX2lmX2Jsb2NrKTogSWYgSUZDVlRfTU9ESUZZX1RFU1RTIGlzIGRlZmluZWQsCgl1c2UgaXQgdG8gbW9kaWZ5IHRoZSB0cnVlL2ZhbHNlIHRlc3RzIHVzZWQgaW4gY29uZGl0aW9uYWwKCWV4ZWN1dGlvbi4gIElmIElGQ1ZUX01PRElGWV9GSU5BTCBhbmQgSUZDVlRfTU9ESUZZX0NBTkNFTCBhcmUKCWRlZmluZWQsIGludm9rZSB0aGVtIGlmIHRoZSBjb252ZXJzaW9uIHRvIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbgoJd2FzIHN1Y2Nlc3NmdWwgb3Igbm90LgoKCSogdG0udGV4aSAoSUZDVlRfTU9ESUZZX1RFU1RTKTogRG9jdW1lbnQuCgkoSUZDVlRfTU9ESUZZX0lOU04pOiBEaXR0by4KCShJRkNWVF9NT0RJRllfRklOQUwpOiBEaXR0by4KCShJRkNWVF9NT0RJRllfQ0FOQ0VMKTogRGl0dG8uCgpTYXQgSnVuICAzIDE1OjI2OjEzIDIwMDAgIE1hdHQgS3JhYWkgPGtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHU+CgoJKiB0b3BsZXYuYyAobWFpbik6IEZpeCBtaXNzcGVsbGluZ3Mgb2YgcG9zc2liaWxpdHkgYW5kIGxhbmd1YWdlLgoKMjAwMC0wNi0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFsaWFzLmMgKHJlY29yZF9hbGlhc19zdWJzZXQpOiBJbml0aWFsaXplIGhhc196ZXJvX2NoaWxkIGluIHRoZQoJc3VwZXJzZXQuCgoyMDAwLTA2LTAzICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCSogYXJtLm1kICh1bnR5cGVkX2NhbGwpOiBVc2UgR0VOX0NBTEwgbWFjcm8uCgoyMDAwLTA2LTAyICBQZWtrYSBOaWthbmRlciAgPHBuckB0ZWxkYW5leC50Y20uaHV0LmZpPgoKCSogTWFrZWZpbGUuaW46IFVzZSAkKE1BS0UpIG5vdCAibWFrZSIKCkZyaSBKdW4gIDIgMTk6MzE6MDMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKHN0cnVjdCBhbGlhc19zZXRfZW50cnkpOiBOZXcgZmllbGQgaGFzX3plcm9fY2hpbGQuCgkobWVtX2luX2Rpc2pvaW50X2FsaWFzX3NldHNfcCk6IFJldHVybiAwIGlmIHNldCBpbiBlaXRoZXIgYXNlLgoJKGdldF9hbGlhc19zZXQpOiBJZiBsYW5ndWFnZS1kZXBlbmRlbnQgcm91dGluZSBzZXQgVFlQRV9BTElBU19TRVQsCglkbyBub3RoaW5nLgoJQ2FsbCByZWNvcmRfY29tcG9uZW50X2FsaWFzZXMgZm9yIGFnZ3JlZ2F0ZSB0eXBlcy4KCShyZWNvcmRfYWxpYXNfc3Vic2V0KTogU2V0IGhhc196ZXJvX2NoaWxkLgoJKHJlY29yZF9jb21wb25lbnRfYWxpYXNlcywgY2FzZSBBUlJBWV9UWVBFKTogRG8gbm90aGluZyBpZgoJVFlQRV9OT05BTElBU0VTX0NPTVBPTkVOVC4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMsIGNhc2UgUkVDT1JEX1RZUEUpOiBUZXN0CglERUNMX05PTkFERFJFU1NBQkxFX1AuCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFNldCBERUNMX05PTkFERFJFU1NBQkxFX1AgaW5zdGVhZAoJb2YgVFJFRV9BRERSRVNTQUJMRS4KCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IE9ubHkgdGVzdAoJVFlQRV9UUkFOU1BBUkVOVF9VTklPTiBmb3IgVU5JT05fVFlQRS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChmdW5jdGlvbl9jYW5ub3RfaW5saW5lX3ApOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAoZmluaXNoX3JlY29yZF9sYXlvdXQpOiBEb24ndCBjYWxsCglyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfaW50X2NzdCk6IFVzZSBzdHJ1Y3QgdHJlZV9jb21tb24uCgkoc3RydWN0IHRyZWVfcmVhbF9jc3QsIHN0cnVjdCB0cmVlX3N0cmluZyk6IExpa2V3aXNlLgoJKHN0cnVjdCB0cmVlX2NvbXBsZXgsIHN0cnVjdCB0cmVlX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShzdHJ1Y3QgdHJlZV9saXN0LCBzdHJ1Y3QgdHJlZV92ZWMsIHN0cnVjdCB0cmVlX2V4cCk6IExpa2V3aXNlLgoJKHN0cnVjdCB0cmVlX2Jsb2NrLCBzdHJ1Y3QgdHJlZV90eXBlLCBzdHJ1Y3QgdHJlZV9kZWNsKTogTGlrZXdpc2UuCgkoVFlQRV9UUkFOU1BBUkVOVF9VTklPTik6IFVzZSBVTklPTl9UWVBFX0NIRUNLLgoJKFRZUEVfTk9OQUxJQVNFU19DT01QT05FTlQpOiBOZXcgbWFjcm8uCgkoVFlQRV9BTUJJRU5UX0JPVU5ERURORVNTKTogVXNlIEZVTkNUSU9OX1RZUEVfQ0hFQ0suCgkoREVDTF9OT05BRERSRVNTQUJMRV9QKTogTmV3IG1hY3JvLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBSZW9yZGVyIGJpdHMgZm9yIGNsYXJpdHkgb2YgaG93IG1hbnkgbGVmdDsKCWFkZCBub25fYWRyZXNzYWJsZS4KCjIwMDAtMDYtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5zb21hLnJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLmEpOiBBbHNvIGRlcGVuZCBvbiAkKExJQjJBREQpLgoJKiBta2xpYmdjYy5pbiAoZm9yY2UpOiBOZXcgdGFyZ2V0LgoJTWFrZSBMSUIyQUREIHN0dWZmIGRlcGVuZCBvbiBpdC4KCjIwMDAtMDYtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbGlhcy5jIChsYW5nX2dldF9hbGlhc19zZXQpOiBSZW1vdmUuCgkoZ2V0X2FsaWFzX3NldCk6IENhbGwgaXQgZGlyZWN0bHksIG5vdCBpbmRpcmVjdGx5LgoJKiBjLWNvbW1vbi5jIChsYW5nX2dldF9hbGlhc19zZXQpOiBSZW5hbWUgZnJvbSBjX2dldF9hbGlhc19zZXQuCgkqIGMtY29tbW9uLmggKGNfZ2V0X2FsaWFzX3NldCk6IERvbid0IGRlY2xhcmUuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHNldCBsYW5nX2dldF9hbGlhc19zZXQuCgkqIGV4cHIuaCAobGFuZ19nZXRfYWxpYXNfc2V0KTogRGVjbGFyZSBhcyBmdW5jdGlvbiwgbm90IHBvaW50ZXIuCgoyMDAwLTA2LTAyICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9zZXJ2ZXIuYyhzaWdfaGFuZGxlcik6ICByZXN1bWUgY2xvc2luZyBzZXJ2ZXIgb24gU0lHUElQRQoJKHNlcnZlcl9zZXR1cCk6ICBkZWZpbmUgdGhlIHNlcnZlcidzIG1hc3RlciBwaWQKCShjbG9zZV9zZXJ2ZXIpOiAgYWN0dWFsbHkgZG8gdGhlIGRlZWQgSUZGIHdlIGFyZSB0aGUgc2VydmVyJ3MgbWFzdGVyCgoyMDAwLTA2LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfZ2V0X2FsaWFzX3NldCk6IENoZWNrIHdoZXRoZXIgc2lnbmVkX3R5cGUgZGlkIG5vdAoJcmV0dXJuIGl0cyBhcmd1bWVudCBiZWZvcmUgY2FsbGluZyBnZXRfYWxpYXNfc2V0IG9uIHRoZSByZXN1bHQuCgoyMDAwLTA2LTAyICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfbG9hZCk6IEZpeCB0eXBvLCBHRVRfTU9ERSBub3QgR0VUX0NPREUuCgpGcmkgSnVuICAyIDAwOjIyOjUyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKENQUF9TUEVDKTogQWRkIC1EX19OT01BQ1NBVkVfXyBmb3IgLW1ub21hY3NhdmUuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNYWMgcmVnaXN0ZXJzIGFyZSBjYWxsIHVzZWQKCWZvciBUQVJHRVRfTk9NQUNTQVZFLgoJKE5PTUFDU0FWRV9CSVQpOiBEZWZpbmUuCgkoVEFSR0VUX05PTUFDU0FWRSk6IERlZmluZS4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgIm5vbWFjc2F2ZSIuCgoyMDAwLTA2LTAyICBUb3NoaXlhc3UgTW9yaXRhICA8dG9zaGkubW9yaXRhQHNlZ2EuY29tPgoKCSogc2gubWQgKHVudHlwZWRfY2FsbCk6IFJlbW92ZSBleGNlc3MgcGFyYW1ldGVycwoKMjAwMC0wNi0wMSAgTG9yZW4gSi4gUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG9zZl9uYW1lc3BhY2VfYSk6IFJlbGF4IGV4cHJlc3Npb24gdG8KCW1hdGNoIHRoYXQgdXNlZCBiZWZvcmUgdGhlIGNvbnZlcnNpb24gdG8gY19maXggc3R5bGUuCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCjIwMDAtMDYtMDEgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogdmFycmF5LmggKFZBUlJBWV9QVVNIX0dFTkVSSUNfUFRSLCBWQVJSQVlfUFVTSF9DSEFSX1BUUik6IEZpeAoJbWFjcm8gYXJndW1lbnQgdHlwby4KCjIwMDAtMDYtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jIChtYXliZV9tYWNyb2V4cGFuZCk6IFVzZSBDUFBfV1RSQURJVElPTkFMLiAgSW1wcm92ZQoJZXJyb3IgbWVzc2FnZS4KCSogY3BwbGliLmMgKHBhcnNlX2luY2x1ZGUpOiBSZW1vdmUgc3VwcG9ydCBmb3IgVkFYLUMKCSIjaW5jbHVkZSBzdGFybGV0IiBtaXNmZWF0dXJlLgoKMjAwMC0wNS0zMSBMYXVyeW5hcyBCaXZlaW5pcyA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGNwcGZpbGVzLmM6IGNvbmRpdGlvbmFsbHkgZGVmaW5lIE9fQklOQVJZLgoJKG9wZW5faW5jbHVkZV9maWxlKTogcGFzcyBPX0JJTkFSWSB0byBvcGVuKCkuCgoyMDAwLTA2LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTk2MC5jIChpOTYwX2JyX3ByZWRpY3Rfb3Bjb2RlKTogUmVtb3ZlLgoJKGk5NjBfcHJpbnRfb3BlcmFuZCkgWytdOiBFbWl0IGJyYW5jaCBwcmVkaWN0aW9uIGhpbnRzLgoJKGk5NjBfZnVuY3Rpb25fYXJnKTogUmV0dXJuIGVhcmx5IGZvciBWT0lEbW9kZS4KCShpOTYwX3JvdW5kX2FsaWduKTogUmV0dXJuIGVhcmx5IGZvciBpbmNvbXBsZXRlIHR5cGVzLgoJKiBpOTYwLmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IE5ldy4KCSogaTk2MC5tZCAoYWxsIGNvbmRpdGlvbmFsIGJyYW5jaGVzKTogQWRkICIlKyIuCgpUaHUgSnVuICAxIDEyOjI0OjIxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhbGlhcy5jIChnZXRfYWxpYXNfc2V0KTogRG9uJ3QgY2FsbCBsYW5ndWFnZS1zcGVjaWZpYyByb3V0aW5lIG1vcmUKCXRoYW4gaXMgbmVlZGVkIGFuZCBjbGVhbiB1cCBjb2RlIGEgYml0LgoJKiBjLWNvbW1vbi5jIChjX2dldF9hbGlhc19zZXQpOiBBbGwgcmVmZXJlbmNlcyB3aG9zZSB0eXBlCglpcyBjaGFyIGdldCBhbGlhcyBzZXQgMCwgYnV0IGNoYXJhY3RlciB0eXBlcyBuZWVkIG5vdC4KCSogdmFyYXNtLmMgKG1ha2VfZnVuY3Rpb25fcnRsKTogRG9uJ3QgY2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkobWFrZV9kZWNsX3J0bCk6IERvbid0IGNhbGwgaXQgZm9yIEZVTkNUSU9OX0RFQ0wuCgoyMDAwLTA2LTAxICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy90ZXN0cy9iYXNlLy4uLjogbmV3IGJhc2UgcmVzdWx0IGZpbGVzCgpUaHUgSnVuICAxIDA5OjM3OjM1IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3VzZV9mY29taV9jb21wYXJlKTogTWFrZSBnbG9iYWwuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfdXNlX2Zjb21pX2NvbXBhcmUpOiBEZWNsYXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqZnBfamNjXzMsICpmcF9qY2NfNCk6IERpc2FibGUgaWYgd2UKCXdpbGwgdXNlIEZDT01JLgoKMjAwMC0wNi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjLWRlY2wubyk6IERlcGVuZCBvbiAkKEVYUFJfSCksIG5vdCBleHByLmguCgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgbGFuZ19nZXRfYWxpYXNfc2V0IGZpcnN0IHRoaW5nLgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc2RhdGFfc3ltYm9saWNfb3BlcmFuZCk6IENvbnNpZGVyIHNtYWxsCglDT05TVEFOVF9QT09MX0FERFJFU1NfUCBhZGRyZXNzZXMgZm9yIC5zZGF0YS4KCSogY29uZmlnL2lhNjQvc3lzdjQuaCAoU0VMRUNUX1JUWF9TRUNUSU9OKTogTmV3LgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfZXhwYW5kX3ByZWRpY3Rpb24pOiBSZW1vdmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfcHJlZGljdGlvbik6IE1vdmUgY29kZSAuLi4KCShpYTY0X3ByaW50X29wZXJhbmQpIFsrXTogLi4uIGhlcmUuICBVc2UgY3VycmVudF9vdXRwdXRfaW5zbi4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGFsbCBicmFuY2gvY2FsbCBwYXR0ZXJucyk6IFVzZSAlKy4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pbnNucyk6IERvbid0IGV2ZXIgaWdub3JlIGNsb2JiZXJzLgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKG1lcmdlX2lmX2Jsb2NrKTogQmUgcHJlcGFyZWQgZm9yIEpPSU4gdG8gaGF2ZSBubwoJcmVtYWluaW5nIGVkZ2VzLgoJKGZpbmRfaWZfYmxvY2spOiBBbGxvdyBUSEVOIHdpdGggbm8gb3V0Z29pbmcgZWRnZXMuCgkqIGZsb3cuYyAobWVyZ2VfYmxvY2tzX25vbW92ZSk6IFJlbW92ZSBhIGJhcnJpZXIgbm90IGZvbGxvd2luZwoJYSBqdW1wIGFzIHdlbGwuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIG1lbV9zZXRfbGlzdCAuLi4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogLi4uIGhlcmUuICBBbHNvIHRyYWNrIGJsb2NrcyB3aXRoCglubyBzdWNjZXNzb3JzOyBkb24ndCBzY2FuIGluc25zIGlmICEgUFJPUF9TQ0FOX0RFQURfQ09ERS4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IFJldmVydCAwNS0xOCBjaGFuZ2UuCgoyMDAwLTA1LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW52b2tlLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIGZvciAtZmd1aWRpbmctZGVjbHMuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBGaXggdHlwbyBsYXN0IGNoYW5nZS4KCjIwMDAtMDUtMzEgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogY29uZmlndXJlLmluIChlbmFibGUtbmxzKTogRW5hYmxlIGlmIGJ1aWxkID09IGhvc3QsIGkuZS4gd2hlbgoJbm90IGJ1aWxkaW5nIGEgY2FuYWRpYW4gY3Jvc3MgY29tcGlsZXIuCgkoZW5hYmxlLW1haW50YWluZXItbW9kZSk6IEFkZGVkIGZvciB1c2Ugd2l0aCBpMThuLgoJKiBhY2xvY2FsLm00IChBTV9HTlVfR0VUVEVYVCk6IE9ubHkgYnVpbGQgY2F0YWxvZ3MgdGhhdCBhcmUgYQoJY3Jvc3Mgc2VjdGlvbiBvZiBBTExfTElOR1VBUyBhbmQgTElOR1VBUy4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwMC0wNS0zMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvY2hlY2sudHBsOiByZXdvcmsgdG8gdXNlIHRlc3QgcmVzdWx0IHRyZWUKCSogZml4aW5jL01ha2VmaWxlLmluOiBjaGFuZ2UgaW52b2NhdGlvbiBvZiBjaGVjayBzY3JpcHQKCSogZml4aW5jL2NoZWNrLmRpZmY6IE5vIGxvbmdlciBuZWVkZWQKCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZQoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiAgYWRkIG5ldyB0ZXN0cwoJKiBmaXhpbmMvdGVzdHMvYmFzZS9hcmNoL2k5NjAvYXJjaEk5NjAuaDogIE5ldyB0ZXN0IHJlc3VsdAoJKiBmaXhpbmMvdGVzdHMvYmFzZS9jdXJzZXMuaDogbW9kaWZpZWQgdGVzdCByZXN1bHQKCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3RkaW8uaDogZGl0dG8KCSogZml4aW5jL3Rlc3RzL2Jhc2UvdGltZS5oOiBkaXR0bwoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvYXNtLmg6IGRpdHRvCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9zdGF0Lmg6IGRpdHRvCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy93YWl0Lmg6IGRpdHRvCgpXZWQgTWF5IDMxIDEzOjE3OjIwIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogZXhjZXB0LmMgKGNsZWFyX2Z1bmN0aW9uX2VoX3JlZ2lvbik6IERvIG5vdCBmcmVlIE5VTEwuCgpXZWQgTWF5IDMxIDA4OjA3OjUyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYy1kZWNsLm8pOiBEZXBlbmQgb24gcnRsLmggYW5kIGV4cHIuaC4KCSogYWxpYXMuYyAoc3RydWN0IGFsaWFzX2VudHJ5KTogYWxpYXNfc2V0IGlzIEhPU1RfV0lERV9JTlQuCgkoUkVHX0JBU0VfVkFMVUUpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdCB0byB1bnNpZ25lZC4KCShnZXRfYWxpYXNfc2V0X2VudHJ5KTogQUxJQVNfU0VUIGFyZyBpcyBIT1NUX1dJREVfSU5ULgoJKGZpbmRfYmFzZV9kZWNsKTogTmV3IGZ1bmN0aW9uLCBmcm9tIGNfZmluZF9iYXNlX2RlY2wgaW4gYy1jb21tb24uYy4KCShuZXdfYWxpYXNfc2V0KTogTW92ZWQgZnJvbSB0cmVlLmM7IHJldHVybiBpcyBIT1NUX1dJREVfSU5ULgoJKGdldF9hbGlhc19zZXQpOiBMaWtld2lzZS4KCU1ham9yIHJld29yayB0byBkbyBtb3JlIHRoaW5ncyBhbmQgYWxsb3cgbGFuZ3VhZ2Utc3BlY2lmaWMgY29kZQoJdG8ganVzdCBoYW5kbGUgc3BlY2lhbC1jYXNlcy4KCShyZWNvcmRfYWxpYXNfc3Vic2V0KTogQXJncyBhcmUgSE9TVF9XSURFX0lOVC4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzKTogTG9jYWwgdmFycyBhcmUgSE9TVF9XSURFX0lOVC4KCURvbid0IGhhbmRsZSBDT01QTEVYX0VYUFIuCgkoZ2V0X3ZhcmFyZ3NfYWxpYXNfc2V0KTogTW92ZWQgZnJvbSBidWlsdGlucy5jLgoJKGdldF9mcmFtZV9hbGlhc19zZXQpOiBOZXcgZnVuY3Rpb24uCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3JldHVybl9hZGRyZXNzKTogVXNlIGZyYW1lIGFsaWFzIHNldC4KCShleHBhbmRfYnVpbHRpbl9zZXRqbXAsIGV4cGFuZF9idWlsdGluX2xvbmdqbXApOiBVc2UgYWxpYXMgc2V0Cglmb3Igc2V0am1wIGJ1ZmZlci4KCShnZXRfbWVtb3J5X3J0eCk6IFJld29yayB0byB1c2Ugc2V0X21lbV9hdHRyaWJ1dGVzLgoJKGdldF92YXJhcmdzX2FsaWFzX3NldCk6IERlbGV0ZWQgZnJvbSBoZXJlLgoJKiBjLWNvbW1vbi5jIChjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IEFsaWFzIHNldHMgbm93IEhPU1RfV0lERV9JTlQuCgkoY19maW5kX2Jhc2VfZGVjbCk6IERlbGV0ZWQgZnJvbSBoZXJlLgoJKGNfZ2V0X2FsaWFzX3NldCk6IFJlbW92ZSBtYW55IGNhc2VzIGFuZCByZXdvcmsgdG8ganVzdCBoYW5kbGUKCUMtc3BlY2lmaWMgY2FzZXMuCgkqIGMtY29tbW9uLmggKGNfZ2V0X2FsaWFzX3NldCk6IFJldHVybnMgSE9TVF9XSURFX0lOVC4KCSogYy1kZWNsLmMgKHJ0bC5oLCBleHByLmgpOiBOb3cgaW5jbHVkZWQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyBvbiBhcnJheSB0eXBlcy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJU2V0IFRSRUVfQUREUkVTU0FCTEUgZm9yIGFsbCBmaWVsZHMgdGhhdCBhcmUgbm90IGJpdGZpZWxkcy4KCSogYy10eXBlY2suYyAoY29tbW9uX3R5cGUpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyBmb3IgYXJyYXkuCgkqIGNhbGxlci1zYXZlLmMgKHNldHVwX3NhdmVfYXJlYXMpOiBSZXdvcmsgcmVnaXN0ZXIgbG9vcCBmb3IgdW5zaWduZWQuCglTZXQgYWxsIHNhdmUgYXJlYXMgdG8gdGhlIGZyYW1lIGFsaWFzIHNldC4KCSogY2FsbHMuYyAoaW5pdGlhbGllX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogQ2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkoY29tcHV0ZV9hcmd1bWVudF9hZGRyZXNzZXMsIGV4cGFuZF9jYWxsKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChzZXRfbWVtX2F0dHJpYnV0ZXMpOiBOZXcgZnVuY3Rpb24uCgkoc3RhYmlsaXplKTogVXNlIE1FTV9DT1BZX0FUVFJJQlVURVMgYW5kIGZvcmNlX3JlZy4KCSogZXhwci5jIChzdHJ1Y3QgbW92ZV9ieV9waWVjZXMpOiBSZW1vdmUge3RvLGZyb219X3tzdHJ1Y3QscmVhZG9ubHl9LgoJTEVOIGFuZCBPRkZTRVQgbm93IEhPU1RfV0lERV9JTlQuCgkoY2xlYXJfYnlfcGllY2VzKTogU2ltaWxhciBjaGFuZ2VzLgoJKG1vdmVfYnlfcGllY2VzKTogTEVOIG5vdyBIT1NUX1dJREVfSU5UOyBkb24ndCBzZXQgZGVsZXRlZCBmaWVsZHMuCgkobW92ZV9ieV9waWVjZXNfbmluc25zKTogTm93IHJldHVybnMgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShtb3ZlX2J5X3BpZWNlc18xKTogRG9uJ3QgdXNlIGRlbGV0ZWQgZmllbGRzLCB1c2UgTUVNX0NPUFlfQVRUUklCVVRFUy4KCShjbGVhcl9ieV9waWVjZXNfMSk6IExpa2V3aXNlLgoJKGVtaXRfcHVzaF9pbnNuKTogQ2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkoZXhwYW5kX2V4cHIsIGNhc2UgSU5ESVJFQ1RfUkVGKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHIsIGNhc2UgVkFSX0RFQ0wpOiBDYWxsIGNoYW5nZV9hZGRyZXNzLgoJKiBleHByLmggKEFERF9QQVJNX1NJWkUsIFNVQl9QQVJNX1NJWkUpOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQKCXRyZWVfbG93X2NzdC4KCShnZXRfdmFyYXJnc19hbGlhc19zZXQsIGdldF9mcmFtZV9hbGlhc19zZXQpOiBOZXcgZGVjbHMuCgkocmVjb3JkX2Jhc2VfdmFsdWUsIHJlY29yZF9hbGlhc19zdWJzZXQsIGxhbmdfZ2V0X2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKG5ld19hbGlhc19zZXQsIHNldF9tZW1fYXR0cmlidXRlcyk6IExpa2V3c2UuCgkqIGZ1bmN0aW9uLmMgKHN0cnVjdCB0ZW1wX3Nsb3QpOiBBTElBU19TRVQgaXMgSE9TVF9XSURFX0lOVC4KCShhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IExpa2V3aXNlLgoJQ2FuIHNwbGl0IHNsb3QgZXZlbiBpZiBhbGlhcyBzZXQgc2luY2UgY2FuIGNvcHkuCglTZXQgTUVNX0FMSUFTX1NFVCBhbmQgTUVNX1NFVF9JTl9TVFJVQ1RfUC4KCShhc3NpZ25fdGVtcCk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkocHV0X3Zhcl9pbnRvX3N0YWNrKTogUHJvcGVybHkgaGFuZGxlIFNBVkVfRVhQUi4KCShwdXRfYWRkcmVzc29mX2ludG9fc3RhY2spOiBMaWtld2lzZS4KCShhc3NpZ25fcGFybXMpOiBDYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCURlbGV0ZSAjaWYgMCBjb2RlLgoJKGZpeF9sZXhpY2FsX2FkZHJlc3MpOiBQdXQgcmVmZXJlbmNlIHRvIGNoYWluIGludG8gZnJhbWUgYWxpYXMgc2V0LgoJKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IENhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiByZWNvZy5jIChhZGpfb2Zmc2V0dGFibGVfb3BlcmFuZCk6IFVzZSBNRU1fQ09QWV9BVFRSSUJVVEVTLgoJKiByZWdtb3ZlLmMgKHRyeV9hcHBseV9zdGFja19hZGp1c3RtZW50KTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCwgbWFrZV9tZW1sb2MpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChhbHRlcl9yZWcpOiBNYWtlIGFsaWFzIHNldHMgZm9yIHNwaWxsZWQgcHNldWRvcy4KCSogcnRsLmRlZiAoTUVNKTogVXBkYXRlIGNvbW1lbnQuCgkqIHJ0bC5oIChNRU1fQUxJQVNfU0VUKTogTm93IHVzZXMgWENXSU5ULgoJKG1vdmVfYnlfcGllY2VzKTogQ2hhbmdlIGxlbmd0aCB0byBIT1NUX1dJREVfSU5ULgoJKHJlY29yZF9iYXNlX3ZhbHVlLCByZWNvcmRfYWxpYXNfc3Vic2V0KTogRGVsZXRlIGZyb20gaGVyZS4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IENhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJKiBzdG9yLWxheW91dC5jIChmaW5pc2hfcmVjb3JkX2xheW91dCk6IENhbGwgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzLmkKCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IENhbGwgaW5pdF9hbGlhc19vbmNlIGVhcmxpZXIuCgkqIHRyZWUuYyAobGFuZ19nZXRfYWxpYXNfc2V0LCBnZXRfYWxpYXNfc2V0LCBuZXdfYWxpYXNfc2V0KTogRGVsZXRlZAoJZnJvbSBoZXJlOiBub3cgaW4gYWxpYXMuYy4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV90eXBlKTogYWxpYXNfc2V0IGlzIEhPU1RfV0lERV9JTlQuCgkoc3RydWN0IHRyZWVfZGVjbCk6IExpa2V3aXNlLgoJKGdldF9hbGlhc19zZXQsIG5ld19hbGlhc19zZXQsIGxhbmdfZ2V0X2FsaWFzX3NldCk6IERlbGV0ZWQgZnJvbSBoZXJlLgoJKiB2YXJhc20uYyAobWFrZV9mdW5jdGlvbl9ydGwsIG1ha2VfZGVjbF9ydGwpOiBDYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCShvdXRwdXRfY29uc3RhbnRfZGVmLCBmb3JjZV9jb25zdF9tZW0pOiBMaWtld2lzZS4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX2Jsb2NrKTogSWYgYmxvY2sgaGFzIG5vIHN1Y2Nlc3NvcnMsIHN0b3JlcyB0bwoJZnJhbWUgYXJlIGRlYWQgaWYgbm90IHVzZWQuCgoyMDAwLTA1LTMxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogc3RtdCAoZXhwYW5kX2VuZF9jYXNlKTogUmVvcmRlciBjb252ZXJzaW9uIHNlcXVlbmNlIGZvciBqdW1wCgl0YWJsZSB0byBhdm9pZCBleHRyYSB0cnVuY2F0aW9ucy4KCldlZCBNYXkgMzEgMDE6MzE6NDIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaWZjdnQuYyAoY29uZF9leGVjX3Byb2Nlc3NfaWZfYmxvY2spOiBEbyBub3RoaW5nIGlmIHRoZSBsYXN0IGluc24KCWluIHRoZSBibG9jayBpcyBtb3JlIHRoYW4ganVzdCBhIHNpbXBsZSBjb25kaXRpb25hbCBicmFuY2guCgkobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogU2ltaWxhcmx5LgoKVHVlIE1heSAzMCAyMjoyNTo1NyAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIG9wdGFicy5jIChwcmVwYXJlX2Zsb2F0X2xpYl9jbXApOiBQcm90ZWN0ICpweCBhbmQgKnB5IGZyb20KCXF1ZXVlLgoKMjAwMC0wNS0zMCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBJZ25vcmUgSElHSAoJaW5zdHJ1Y3Rpb25zLiAgVHJlYXQgTE9fU1VNIG9wZXJhdGlvbnMgYXMgbG9hZGluZyB0aGUgZnVsbCBpbnRlZ2VyCgljb25zdGFudC4KCjIwMDAtMDUtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKGdldF9wb3NfZnJvbV9tYXNrKTogVGVzdCBleGFjdF9sb2cyIHJlc3VsdCBhcyBzaWduZWQuCgoyMDAwLTA1LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChlbWl0X2p1bXBfdG9fYmxvY2tfYWZ0ZXIpOiBQcm90ZWN0IHVzZSBvZiBIQVZFX3JldHVybi4KCjIwMDAtMDUtMzAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL3Rlc3RzLyo6ICBBZGRlZCBleHBlY3RlZCByZXN1bHQgZmlsZXMgZm9yIGZpeGluYydzIG1ha2UgY2hlY2sKCSogZml4aW5jL2ZpeGZpeGVzKGNoYXJfbWFjcm9fKl9maXgpOiBSZXN0b3JlIG9yaWdpbmFsIGFsZ29yaXRobQoKMjAwMC0wNS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoKnNldG5lX2ludGVybmFsKTogVXNlIG1hdGNoX29wZXJhdG9yCglpbnN0ZWFkIG9mIHdvcmtpbmcgZG93biBmcm9tIGluc24uCgoyMDAwLTA1LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpbnZva2UudGV4aSAoLVd0cmFkaXRpb25hbCk6IFVwZGF0ZSBXUlQgZnVuY3Rpb24gbWFjcm9zLgoKVHVlIE1heSAzMCAwOTo1NzozMiAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGV4Y2VwdC5jIChmcmVlX2V4Y2VwdGlvbl90YWJsZSk6IERvIG5vdCBmcmVlIE5VTEwuCgoyMDAwLTA1LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoZG9faWYpOiBEb24ndCBzYXZlIGFuZCByZXN0b3JlIG9ubHlfc2Vlbl93aGl0ZSBoZXJlLgoJKiBjcHBleHAuYyAoX2NwcF9wYXJzZV9leHByKTogU2F2ZSBhbmQgcmVzdG9yZSBvbmx5X3NlZW5fd2hpdGUKCWFuZCBza2lwcGluZyBoZXJlLgoKMjAwMC0wNS0yOSAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIGZsb3cuYyAobWFya191c2VkX3JlZyk6IElmIGEgcmVnaXN0ZXIgaXMgdW5jb25kaXRpb25hbGx5IGxpdmUsCglyZW1vdmUgYW55IGNvbmRpdGlvbmFsIGRlYXRoIGluZm9ybWF0aW9uLgoKMjAwMC0wNS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZpbmFsLmMgKGN1cnJlbnRfb3V0cHV0X2luc24pOiBOZXcuCgkoZmluYWxfc2Nhbl9pbnNuKTogU2V0IGl0LgoJKiBvdXRwdXQuaDogRGVjbGFyZSBpdC4KCjIwMDAtMDUtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzdG9yLWxheW91dC5jIChmaW5hbGl6ZV9yZWNvcmRfc2l6ZSk6IEZpeCB0eXBvLgoKCSoganVtcC5jIChyZWRpcmVjdF9qdW1wKTogRG9uJ3QgZW1pdCBOT1RFX0lOU05fRlVOQ1RJT05fRU5ECglpZiBubGFiZWwgaXMgbnVsbC4KCjIwMDAtMDUtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChjcHBfcmVhZGVyKTogUmVtb3ZlIGlmX3N0YWNrLiAgQ2hhbmdlCglwb3RlbnRpYWxfY29udHJvbF9tYWNybyB0byBhIGNwcF9oYXNobm9kZSAqLiAgQWRkIHNraXBwaW5nIGZsYWcuCgkqIGNwcGhhc2guaCAoc3RydWN0IGloYXNoKTogQ2hhbmdlIGNvbnRyb2xfbWFjcm8gdG8gYQoJY3BwX2hhc2hub2RlICogYW5kIHNob3J0ZW4gbmFtZSB0byBjbWFjcm8uCglBZGQgTkVWRVJfUkVJTkNMVURFIGNvbnN0YW50LgoKCSogY3BwZmlsZXMuYyAocmVkdW5kYW50X2luY2x1ZGVfcCk6IERyb3AgY3BwX3JlYWRlciBhcmd1bWVudC4KCUV4YW1pbmUgdGhlIGNtYWNybyBub2RlIGRpcmVjdGx5LCBubyBuZWVkIHRvIGNhbGwgY3BwX2RlZmluZWQuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUsIHJlYWRfaW5jbHVkZV9maWxlKTogU2V0IGNtYWNybyB0bwoJTkVWRVJfUkVJTkNMVURFLCBub3QgVSIiLgoJKiBjcHBsZXguYyAoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3Qgc2V0IG5ldy0+aWZfc3RhY2suCgkoY3BwX2dldF90b2tlbik6IElmIHBmaWxlLT5za2lwcGluZyBpcyB0cnVlLCBkaXNjYXJkIHRleHQgYW5kCglrZWVwIHNjYW5uaW5nIHVudGlsIHdlIGhpdCBhIGRpcmVjdGl2ZTsgZG9uJ3QgZXhwYW5kIG1hY3Jvcy4KCgkqIGNwcGxpYi5jIChzdHJ1Y3QgaWZfc3RhY2spOiBSZW1vdmUgaWZfc3VjY2VlZGVkLCBhZGQKCXdhc19za2lwcGluZy4gQ2hhbmdlIGNvbnRyb2xfbWFjcm8gdG8gYSBjcHBfaGFzaG5vZGUgKiBhbmQKCXNob3J0ZW4gbmFtZSB0byBjbWFjcm8uICBSZW1vdmUgdHlwZWRlZiBJRl9TVEFDSy4KCShwYXJzZV9pZmRlZiksIGRldGVjdF9pZl9ub3RfZGVmaW5lZCk6IFJldHVybiBhIGNwcF9oYXNobm9kZSAqLgoJKGNvbmRpdGlvbmFsX3NraXAsIHNraXBfaWZfZ3JvdXAsCgljb25zaWRlcl9kaXJlY3RpdmVfd2hpbGVfc2tpcHBpbmcpOiBEZWxldGUuCgkocHVzaF9jb25kaXRpb25hbCk6IE5ldy4KCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBEb24ndCBwcm9jZXNzIGRpcmVjdGl2ZXMgb3RoZXIgdGhhbgoJY29uZGl0aW9uYWxzIGlmIHdlIGFyZSBza2lwcGluZy4KCgkoZG9faWZkZWYsIGRvX2lmbmRlZiwgZG9faWYsIGRvX2Vsc2UsIGRvX2VsaWYsIGRvX2VuZGlmKToKCVVwZGF0ZSB0byBuZXcgc2NoZW1lLgoJKHZhbGlkYXRlX2Vsc2UpOiBTa2lwIHJlc3Qgb2YgbGluZSBoZXJlLCB1bmNvbmRpdGlvbmFsbHkuCgkoX2NwcF91bndpbmRfaWZfc3RhY2spOiBUaGUgc3RhY2sgaXMgcGVyLWJ1ZmZlci4gIEZvcmNlCglwZmlsZS0+c2tpcHBpbmcgb2ZmLgoKCShhbGwpOiBSZW1vdmUgYHNjYXJlIHF1b3RlcycgZnJvbSBlcnJvciBtZXNzYWdlcy4KCjIwMDAtMDUtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChlbWl0X3JldHVybl9pbnRvX2Jsb2NrKTogTmV3IGxpbmVfbm90ZSBhcmc7IGVtaXQgaXQuCgkodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IEF0dGVtcHQgdG8gbG9jYXRlIGEgbGluZSBub3RlCglmb3IgdGhlIGNsb3NlIGJyYWNlIHRvIGFjY29tcGFueSBIQVZFX3JldHVybi4gIE1vdmUgYWxsIGxpbmUgbm90ZXMKCWZvbGxvd2luZyB0aGUgZXBpbG9ndWUgdG8gYmVmb3JlIHRoZSBOT1RFX0lOU05fRVBJTE9HVUVfQkVHLgoKMjAwMC0wNS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvbmdsb25nLmggW19fYWxwaGFdIChjb3VudF9sZWFkaW5nX3plcm9zKTogTmV3LgoJKGNvdW50X3RyYWlsaW5nX3plcm9zKTogTmV3LgoJKENPVU5UX0xFQURJTkdfWkVST1NfMCk6IE5ldy4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV96ZXJvX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcuCgkoYWxwaGFfc3BsaXRfY29uZGl0aW9uYWxfbW92ZSk6IE5ldy4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBQcm90b3R5cGUgdGhlbS4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCShDUFBfQ1BVX0RFRkFVTFRfU1BFQyk6IEZpeCB0eXBvIGZvciBFVjY3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQ6IFVwZGF0ZSBmZnMgY2l4IGNvbW1lbnRhcnkuCgkoKnplX2FuZF9uZSk6IE5ldy4KCSgqbmFic3NmMiwgKm5hYnNkZjIpOiBOZXcuCgkoKm1vdltxaHNkXWljY19pbnRlcm5hbCk6IFVzZSBhZGRfb3BlcmFuZC4KCShpZl90aGVuX2Vsc2UgY29uc3RhbnQgc3BsaXR0ZXJzKTogTmV3LgoJKCpjbXBfc2FkZF9kaSwgKmNtcF9zYWRkX3NpLCAqY21wX3NhZGRfc2lkaSk6IE5ldy4KCSgqY21wX3NzdWJfZGksICpjbXBfc3N1Yl9zaSwgKmNtcF9zc3ViX3NpZGkpOiBOZXcuCgoyMDAwLTA1LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChmb3JjZV90b19tb2RlKSBbTUlOVVNdOiBDb252ZXJ0IHN1YnRyYWN0aW9uIGZyb20KCWEgY29uc3RhbnQgdG8gTkVHIG9yIE5PVCB3aGVuIGNvbmRpdGlvbnMgYWxsb3cuCgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogRG9uJ3QgY3JlYXRlIGFuIGlmX3RoZW5fZWxzZQoJdW5sZXNzIGJvdGggYXJncyBhcmUgZ2VuZXJhbF9vcGVyYW5kLiAgRG9uJ3QgY2Fub25pY2FsaXplIHBsdXMKCXRvIGlvciB1bmxlc3MgaXQgaGVscHMuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFNldCBub19uZXdfcHNldWRvcyBhZnRlciBmbG93MTsKCWluc3RlYWQgdHJhY2sgcmVnaXN0ZXJfbGlmZV91cF90b19kYXRlLiAgVG9nZ2xlIG5vX25ld19wc2V1ZG9zCglhcm91bmQgaWZfY29udmVydC4KCjIwMDAtMDUtMjggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF9jYnJhbmNoKTogRXNjYXBlICclJyBjaGFyYWN0ZXJzCglzbyBvdXRwdXRfb3BlcmFuZCBkb2Vzbid0IHNlZSB0aGVtLgoKU3VuIE1heSAyOCAxODozNzowNyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGxjbS5jIChtYWtlX3ByZWRzX29wYXF1ZSk6IEZpeCBjb21tZW50LgoJKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogVXNlIE5PUk1BTF9NT0RFIGluc3RlYWQgb2YKCU1PREVfVVNFU19JTl9FWElUX0JMT0NLLiAgQ2hhbmdlIGxlZnRvdmVyIGluc3RhbmNlIG9mCglGUF9NT0RFX05PTkUgdG8gbm9fbW9kZS4gIFJlbmFtZSBNT0RFX0FUX0VOVFJZIHRvIE5PUk1BTF9NT0RFLgoJSGFuZGxlIGluc2VydGlvbnMgYmVmb3JlIGFuIGV4aXN0aW5nIE5PVEVfSU5TTl9CQVNJQ19CTE9DSy4KCSogdG0udGV4aSAoT1BUSU1JWkVfTU9ERV9TV0lUQ0hJTkcpOiBSZWZlciB0byBOT1JNQUxfTU9ERS4KCShNT0RFX1VTRVNfSU5fRVhJVF9CTE9DSyk6IERlbGV0ZS4KCShNT0RFX0FUX0VOVFJZKSBSZW5hbWUgdG8gTk9STUFMX01PREUuCgkqIHNoLmggKE1PREVfVVNFU19JTl9FWElUX0JMT0NLKTogRGVsZXRlLgoJKE1PREVfQVRfRU5UUlkpOiBSZW5hbWUgdG8gTk9STUFMX01PREUuCgkoTU9ERV9ORUVERUQpOiBEb24ndCBsb29rIGZvciBVU0UuCgkoRVBJTE9HVUVfVVNFUyk6IERlZmluZS4KClN1biBNYXkgMjggMjM6MjY6NTkgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyIDxwaGRtQG1hY3FlbC5iZT4KCgkqIG1rbGliZ2NjLmluIChhbGwpOiBWYXJpYWJsZSBpbml0aWFsaXNlZCB0byBgbGliZ2NjJy4KCjIwMDAtMDUtMjggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRvcGxldi5oIChza2lwX2xlYWRpbmdfc3Vic3RyaW5nKTogTmV3IG1hY3JvLgoJKiB0b3BsZXYuYyAoZGVjb2RlX2Zfb3B0aW9uKTogVXNlIHNraXBfbGVhZGluZ19zdWJzdHJpbmcgaW5zdGVhZAoJb2Ygc3RybmNtcC4KCShkZWNvZGVfV19vcHRpb24pOiBMaWtld2lzZS4KCjIwMDAtMDUtMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiB0bS50ZXhpIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERvY3VtZW50IHRoYXQgaXQgY2FuCgltb2RpZnkgcmVnX25hbWVzLgoKMjAwMC0wNS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9vcGVyYW5kX2Nvc3RzKTogUHJvdGVjdCByZWdfY2hhbmdlc19zaXplCgl3aXRoIENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRS4KCgkqIGxvb3AuYyAoaW5zdHJ1bWVudF9sb29wX2JjdCk6IFNldCBKVU1QX0xBQkVMIG9uIHRoZSBuZXcgaW5zbi4KCjIwMDAtMDUtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChkaWRkbGVfcmV0dXJuX3ZhbHVlKTogQSBwY2Mtc3R5bGUgc3RydWN0IHJldHVybgoJcmV0dXJucyBhIHBvaW50ZXIuCgoyMDAwLTA1LTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jOiBSZWFkIGZpbGVzIGluLCB1c2luZyBtbWFwIGlmIHBvc3NpYmxlLCB0aGVuCglwcmVzY2FuIHRoZW0gc2VwYXJhdGVseS4KCShyZWFkX2ZpbGUsIHJlYWRfd2l0aF9yZWFkKTogTmV3IGZ1bmN0aW9ucy4KCSogY3BwbGV4LmM6IERvbid0IGRlZmluZSBVQ0hBUl9NQVguCgkoX2NwcF9yZWFkX2FuZF9wcmVzY2FuKTogUmVuYW1lIHRvIF9jcHBfcHJlc2Nhbi4gIERvbid0IHJlYWQKCXRoZSBmaWxlIGhlcmUuCgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiBBdXRvbWF0aWNhbGx5IGRlZmluZSBfX2NwbHVzcGx1cywKCV9fT0JKQ19fLCBfX0FTRUVNQkxFUl9fLCBfTEFOR1VBR0VfRk9SVFJBTiBoZXJlIHdoZW4gd2Ugc2VlCgl0aGUgcmVzcGVjdGl2ZSAtbGFuZyBzd2l0Y2guCgoJKiBjcHBoYXNoLmggKGVudW0gbm9kZV90eXBlLCBzdHJ1Y3QgaGFzaG5vZGUsIF9jcHBfbG9va3VwCglwcm90b3R5cGUpOiBNb3ZlIHRvLi4uCgkqIGNwcGxpYi5oOiAuLi4gaGVyZS4gIFJlbmFtZSBzdHJ1Y3QgaGFzaG5vZGUgdG8gc3RydWN0CgljcHBfaGFzaG5vZGUgYW5kIGdpdmUgaXQgYSB0eXBlZGVmLiAgUmVuYW1lIF9jcHBfbG9va3VwIHRvCgljcHBfbG9va3VwLiAgQWRkICdmZV92YWx1ZScgc2xvdCwgYSB1bmlvbiB0cmVlX25vZGUgKi4KCjIwMDAtMDUtMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaSk6IENvbnN0aWZ5ICduYW1lJy4KCgkqIHJlZ2NsYXNzLmMgW0NMQVNTX0NBTk5PVF9DSEFOR0VfU0laRV0KCShjbGFzc19jYW5fY2hhbmdlX3NpemUpOiBOZXcgdmFyaWFibGUuCgkocmVnX2NoYW5nZXNfc2l6ZSk6IE5ldyB2YXJpYWJsZS4KCShpbml0X3JlZ19zZXRzXzEpOiBJbml0aWFsaXNlIGNsYXNzX2Nhbl9jaGFuZ2Vfc2l6ZS4KCShyZWNvcmRfb3BlcmFuZF9jb3N0cyk6IFJlbW92ZSBzdWJyZWdfY2hhbmdlc19zaXplLgoJRG9uJ3QgcGFzcyBpdCBhcm91bmQuICBJbnN0ZWFkIHVwZGF0ZSByZWdfY2hhbmdlc19zaXplLgoJKHJlZ2NsYXNzKTogSW5pdGlhbGlzZSBhbmQgZnJlZSByZWdfY2hhbmdlc19zaXplLiAgSWYgYSByZWdpc3RlcgoJY2hhbmdlcyBzaXplLCBkb24ndCBwcmVmZXJlbmNlIGl0IHRvIGEgY2xhc3MgdGhhdCBjb250YWlucwoJcmVnaXN0ZXJzIHRoYXQgY2FuJ3QgY2hhbmdlIHNpemUuCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogRG9uJ3QgbG9vayBhdCBzdWJyZWdfY2hhbmdlc19zaXplLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHByaW50LXJ0bC5jIChyZWdfbmFtZXMpOiBSZW1vdmUgY29uc3QuCgkqIHJlZ2NsYXNzLmMgKHJlZ19uYW1lcyk6IExpa2V3aXNlLgoJKiByZWdzLmggKHJlZ19uYW1lcyk6IExpa2V3aXNlLgoJKiBoYXJkLXJlZy1zZXQuaCAocmVnX25hbWVzKTogTGlrZXdpc2UuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHVudHlwZWRfY2FsbCk6IFVzZSBHRU5fQ0FMTC4KCjIwMDAtMDUtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZG9lc19mdW5jdGlvbl9uZWVkX2dwKTogVGVzdAoJVEFSR0VUX1BST0ZJTElOR19ORUVEU19HUCBpbiB0aGUgaWYsIGluc3RlYWQgb2Ygd2l0aCBhbiBpZmRlZi4KCShhbHBoYV9leHBhbmRfcHJvbG9ndWUpOiBFbWl0IHByb2xvZ3VlX21jb3VudCBpZiBuZWVkZWQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChUQVJHRVRfUFJPRklMSU5HX05FRURTX0dQKTogRGVmYXVsdCB0byAwLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHByb2xvZ3VlX21jb3VudCk6IE5ldy4KCSogY29uZmlnL2FscGhhL2xpbnV4LmggKEZVTkNUSU9OX1BST0ZJTEVSKTogUmVtb3ZlLgoJKFRBUkdFVF9QUk9GSUxJTkdfTkVFRFNfR1ApOiBVbmRlZiBiZWZvcmUgcmVkZWZpbmluZy4KCSogY29uZmlnL2FscGhhL25ldGJzZC5oOiBMaWtld2lzZS4KCjIwMDAtMDUtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvZWxmLmggKFNFTEVDVF9TRUNUSU9OKTogTWlycm9yIEtlbm5lcidzIE1heSAxOQoJY2hhbmdlIHRvIGNvbmZpZy9lbGZvcy5oLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChyZXNvdXJjZS5vKTogRGVwZW5kIG9uIGV4Y2VwdC5oLgoJKiBleGNlcHQuaCAob3V0cHV0X2V4Y2VwdGlvbl90YWJsZV9kYXRhKTogUHJvdG90eXBlLgoJKiBnZW5jb25maWcuYyAoZ2VuX3BlZXBob2xlMik6IFByb3RvdHlwZS4KCSogZ2VuZW1pdC5jIChtYWluKTogSW5jbHVkZSBnZ2MuaC4KCSogZ2Vub3V0cHV0LmM6IFJldmVydCBwYXJ0cyBvZiBsYXN0IGNoYW5nZTogaW5jbHVkZSBlcnJvcnMuaAoJKG1haW4pOiBTZXQgcHJvZ25hbWUuCgkqIHJlY29nLmM6IEluY2x1ZGUgaGFyZC1yZWctc2V0LmggYmVmb3JlIHJlY29nLmguCgkqIHJlc291cmNlLmM6IEluY2x1ZGUgZXhjZXB0LmguCgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmggKGFscGhhX2FyZ19pbmZvX3JlZ192YWwpOiBQcm90ZWN0Cgl3aXRoIFJUWF9DT0RFLgoJKGFscGhhX3dyaXRlX2xpbmthZ2UpOiBQcm90ZWN0IHdpdGggQlVGU0laLgoJKGFscGhhX25lZWRfbGlua2FnZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChmdW5jdGlvbl9hcmcpOiBNb3ZlIFZNUyBjb2RlIGhlcmUuCgkoYWxwaGFfbGlua3NfYmFzZSk6IFJlbW92ZS4KCShhbHBoYV9saW5rcyk6IE5ldy4KCShtYXJrX2FscGhhX2xpbmtzX25vZGUsIG1hcmtfYWxwaGFfbGlua3MpOiBOZXcuCgkoYWxwaGFfd3JpdGVfb25lX2xpbmthZ2UpOiBOZXcuCgkoYWxwaGFfbmVlZF9saW5rYWdlKTogVXNlIGEgc3BsYXkgdHJlZS4gIEJ1aWxkIHRoZSBsaW5rYWdlIHN5bWJvbC4KCShhbHBoYV93cml0ZV9saW5rYWdlKTogVXNlIHNwbGF5X3RyZWVfZm9yZWFjaC4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChjYWxsX3Ztcyk6IFVzZSBhbHBoYV9uZWVkX2xpbmthZ2UKCXRvIGdldCB0aGUgbGlua2FnZSBzeW1ib2wuCgkoY2FsbF92YWx1ZV92bXMpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2VsZi5oIChvdXRwdXRfZmlsZV9kaXJlY3RpdmUpOiBSZW1vdmUgZGVjbC4KCShjdG9yc19zZWN0aW9uLCBkdG9yc19zZWN0aW9uKTogUHJvdG90eXBlLgoJKHNic3Nfc2VjdGlvbiwgc2RhdGFfc2VjdGlvbik6IFByb3RvdHlwZS4KCSogY29uZmlnL2FscGhhL3Ztcy5oIChGVU5DVElPTl9BUkcpOiBSZW1vdmUuCgkocmVhZG9ubHlfc2VjdGlvbiwgbGlua19zZWN0aW9uLCBsaXRlcmFsc19zZWN0aW9uKTogUHJvdG90eXBlLgoJKGN0b3JzX3NlY3Rpb24sIGR0b3JzX3NlY3Rpb24pOiBQcm90b3R5cGUuCgkodm1zX3ZhbGlkX2RlY2xfYXR0cmlidXRlX3ApOiBSZW1vdmUgZGVjbC4KCShhbHBoYV9hcmdfdHlwZSwgYWxwaGFfYXJnX2luZm9fcmVnX3ZhbCk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKGdldF9zZWNvbmRhcnlfbWVtKTogRG9uJ3Qgd2lkZW4gZmxvYXRpbmctcG9pbnQgbW9kZXMuCgoJKiBjb21iaW5lLmMgKHN1YnN0KTogSG9ub3VyIENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRSB3aGVuCglzdWJzdGl0dXRpbmcgdGhlIFJFRyBpbiBhIChzdWJyZWc6WCAocmVnOlkgLi4uKSkuCgoyMDAwLTA1LTI4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2xleF9saW5lKTogTWVyZ2UgdmVydGljYWwgc3BhY2UuICBGbGFnCglmaXJzdCB0b2tlbiBvZiBhIGxpbmUgQk9MLiAgVXBkYXRlIEVPRiBjb2RlIGZvciB0aGlzLgoJUmVtb3ZlIGlsbGVnYWwgZGlyZWN0aXZlIGNoZWNrIC0gaXQgYXBwZWFycyBpbiB0aGUgKG5vdAoJeWV0IGNvbW1pdHRlZCkgY2FsbGVyLgoJKiBjcHBsaWIuaCAoQk9MKTogTmV3IGZsYWcuCgoyMDAwLTA1LTI4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2luaXRfdG9rbGlzdCk6IE5vIGNvbW1lbnQgc3BhY2UgdG8gaW5pdGlhbGlzZS4KCShfY3BwX2ZyZWVfdG9rbGlzdCk6IE5vIGNvbW1lbnQgc3BhY2UgdG8gZnJlZS4KCShleHBhbmRfY29tbWVudF9zcGFjZSk6IFJlbW92ZS4KCShzYXZlX2NvbW1lbnRfc3BhY2UpOiBQbGFjZSB0aGUgY29tbWVudCBpbiB0aGUgY3VycmVudCB0b2tlbiBhbmQKCW5vdCBpbiBhIHNlcGFyYXRlIGNvbW1lbnQgc3BhY2UuCgkoX2NwcF9sZXhfbGluZSk6IFNhdmUgY29tbWVudHMgZHVyaW5nIHBsYWluIGNvZGUgYW5kICNkZWZpbmUKCWRpcmVjdGl2ZXMgb25seS4KCSogY3BwbGliLmggKHN0cnVjdCBfY3BwX3Rva2xpc3QpOiBSZW1vdmUgY29tbWVudCBzcGFjZS4KCjIwMDAtMDUtMjggIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmMgKHBhcnNlX2Fzc2VydGlvbik6IFN1cHBseSBleHRyYSBhcmd1bWVudCB0bwoJX2NwcF9pbml0X3Rva2xpc3QuCgkqIGNwcGxpYi5jIChkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogU2ltaWxhcmx5LgoJKiBjcHBoYXNoLmggKF9jcHBfaW5pdF90b2tsaXN0KSBVcGRhdGUuCgkoX2NwcF9leHBhbmRfdG9rZW5fc3BhY2UpOiBOZXcuCgkoRFVNTVlfVE9LRU4sIE5PX0RVTU1ZX1RPS0VOKTogTmV3LgoJKiBjcHBsZXguYyAoX2NwcF9pbml0X3Rva2xpc3QpOiBOZXcgYXJndW1lbnQuCgkocGFyc2Vfc3RyaW5nMik6IE5ldyBhcmd1bWVudCBtdWx0aWxpbmVfb2suCgkoc3BlbGxfdG9rZW4pOiBUYWtlIGEgY29uc3QgY3BwX3Rva2VuICouCgkoSU5JVF9OQU1FKTogUmVwbGFjZSB3aXRoIElOSVRfVE9LRU5fTkFNRS4gIFVwZGF0ZSB0b2tlbnNfdXNlZC4KCShTUEVMTF8gbWFjcm9zKTogUmVwbGFjZSB3aXRoIGVudW0uCgkoZXhwYW5kX3Rva2VuX3NwYWNlKTogUmVwbGFjZSB3aXRoIF9jcHBfZXhwYW5kX3Rva2VuX3NwYWNlLgoJVGFrZSBDT1VOVCBhcmd1bWVudC4KCShJU19ESVJFQ1RJVkUpOiBVcGRhdGUuCgkoX2NwcF9sZXhfbGluZSk6IFVwZGF0ZSB0b2tlbiBzdHJ1Y3R1cmUgYmVmb3JlIHBhcnNpbmcgbnVtYmVyLgoJRG9uJ3QgYXNzdW1lIHN0YXJ0IGF0IGJlZ2lubmluZyBvZiB0b2tlbiBsaXN0LgoJKHNhdmVfY29tbWVudCk6IFVzZSBJTklUX1RPS0VOX05BTUUuCgoyMDAwLTA1LTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKHN0YWdlMV93YXJuX2NmbGFncyk6IEFkZCAtV3N0cmljdC1wcm90b3R5cGVzCgktV21pc3NpbmctcHJvdG90eXBlcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBnY2MudGV4aTogUmVtb3ZlIGV4cGxhbmF0aW9uIG9mIE1EX0NBTExfUFJPVE9UWVBFUy4KCgkqIGJ1aWx0aW5zLmMsIGNhbGxzLmM6IENoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGdlbl9jYWxsXyogb3IKCWdlbl9zaWJjYWxsXyogdG8gR0VOX0NBTExfKiBhbmQgR0VOX1NJQkNBTExfKi4KCSogY2FsbHMuYyAoc3RydWN0X3ZhbHVlX3NpemVfcnR4KTogU2VwYXJhdGUgZGVmaW5pdGlvbiBmcm9tCglpbml0aWFsaXphdGlvbiB0byBhdm9pZCB1bnVzZWQgdmFyaWFibGUgd2FybmluZy4KCgkqIGdlbmZsYWdzLmMgKGdlbl9tYWNybyk6IE5ldyBmdW5jdGlvbi4KCShnZW5fcHJvdG8pOiBDYWxsIGl0IGZvciBnZW5fY2FsbF8qIGFuZCBnZW5fc2liY2FsbF8qLgoJKGdlbl9ub25wcm90byk6IERlbGV0ZS4KCShnZW5faW5zbik6IFB1dCBhbGwgaW5zbnMgb24gdGhlIHNhbWUgb2JzdGFjay4KCShtYWluKTogR2VuZXJhdGUgcHJvdG90eXBlcyBmb3IgZXZlcnl0aGluZyB1bmNvbmRpdGlvbmFsbHkuCgoJKiBjb25maWd1cmUuaW46IEFkZCBBQ19DSEVDS19UWVBFKHNzaXplX3QpLiAgUmVtb3ZlIGNvbW1lbnRlZAoJb3V0IGNoZWNrIGZvciB3Y2hhcl90LgoJKiBhY2NvbmZpZy5oOiBBZGQgdGVtcGxhdGUgZm9yIHNzaXplX3QuICBSZW1vdmUgQFRPUEAuCgkqIHN5c3RlbS5oOiBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIGRlZmluaW5nIG1pc3NpbmcKCVRZUEVfTUFYL1RZUEVfTUlOIG1hY3Jvcy4gIFVzZSBpdCB0byBwcm92aWRlIGZhbGxiYWNrCglkZWZpbml0aW9ucyBvZiBVQ0hBUl9NQVggYW5kIFNTSVpFX01BWC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjMi5yZWFkeSk6IFJlbmFtZSB0byBsaWJnY2MucmVhZHkuCglEZXBlbmQgb24gJChMQU5HVUFHRVMpIGFzIHdlbGwgYXMgJChHQ0NfUEFUQ0hFUykgYW5kIGZpeGVkCgloZWFkZXJzLgoJKGNsZWFuKTogTm8gbmVlZCB0byBkZWxldGUgbGliZ2NjMS5hLCBsaWJnY2MxLWFzbS5hLAoJbGliZ2NjMi5hLCBvciBsaWJnY2MxLm51bGwuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJlY29nLm8pOiBEb24ndCBkZXBlbmQgb24gcmVzb3VyY2UuaC4KCSogcmVjb2cuYzogRG9uJ3QgaW5jbHVkZSByZXNvdXJjZS5oLgoJKHJlY29nX2xhc3RfYWxsb3dlZF9pbnNuKTogUmVtb3ZlLgoJKHJlY29nX25leHRfaW5zbik6IFJlbW92ZS4KCShzdHJ1Y3QgcGVlcDJfaW5zbl9kYXRhKTogTmV3LgoJKHBlZXAyX2luc25fZGF0YSwgcGVlcDJfY3VycmVudCk6IE5ldy4KCShwZWVwMl9uZXh0X2luc24pOiBOZXcuCgkocGVlcDJfcmVnbm9fZGVhZF9wLCBwZWVwMl9yZWdfZGVhZF9wKTogTmV3LgoJKHBlZXAyX2ZpbmRfZnJlZV9yZWdpc3Rlcik6IE5ldy4KCShwZWVwaG9sZTJfb3B0aW1pemUpOiBUcmFjayBsaWZlIGluZm9ybWF0aW9uIGJ5IGluc24gYXMgd2UgZ28uCgkqIHJlY29nLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCgkqIHJlc291cmNlLmMgKGZpbmRfZnJlZV9yZWdpc3RlciwgcmVnX2RlYWRfcCk6IFJlbW92ZS4KCSogcmVzb3VyY2UuaDogUmVtb3ZlIHRoZWlyIGRlY2xhcmF0aW9ucy4KCSogdG9wbGV2LmM6IEluY2x1ZGUgaGFyZC1yZWctc2V0LmggYmVmb3JlIHJlY29nLmguCgoJKiBnZW5jb25maWcuYyAobWF4X2luc25zX3Blcl9wZWVwMik6IE5ldy4KCShnZW5fcGVlcGhvbGUyKTogTmV3LgoJKG1haW4pOiBDYWxsIGl0LgoJKiBnZW5lbWl0LmMgKG91dHB1dF9wZWVwaG9sZTJfc2NyYXRjaGVzKTogR2VuZXJhdGUgY2FsbHMgdG8KCXBlZXAyX2ZpbmRfZnJlZV9yZWdpc3RlcjsgYWRqdXN0IHN1cnJvdW5kaW5nIGNvZGUuCgkobWFpbik6IEhhdmUgaW5zbi1lbWl0LmMgaW5jbHVkZSBoYXJkLXJlZy1zZXQuaCBiZWZvcmUgcmVjb2cuaC4KCSogZ2VucmVjb2cuYyAoY2hhbmdlX3N0YXRlKTogRG9uJ3QgdHJhY2sgbGFzdF9pbnNuLgoJKHdyaXRlX2FjdGlvbik6IFdyaXRlIGludG8gKl9wbWF0Y2hfbGVuIGJlZm9yZSBhY2NlcHRpbmcuCgkod3JpdGVfdHJlZSk6IEFkanVzdCBwZWVwaG9sZTJfaW5zbnMgYW5kIHN1YnJvdXRpbmVzIHRvIG1hdGNoLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYWxsIHBlZXBob2xlcyk6IFVzZSBwZWVwMl9yZWdub19kZWFkX3AuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoaGFyZF9mcF9yZWdpc3Rlcl9vcGVyYW5kKTogTWluZCB0aGUgbW9kZS4KCShoYXJkX2ludF9yZWdpc3Rlcl9vcGVyYW5kKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAocGVlcDIgcGF0dGVybnMpOiBVc2UgaGFyZF9pbnRfcmVnaXN0ZXJfb3BlcmFuZAoJYXMgbmVlZGVkOyB1c2UgcGVlcDJfcmVnX2RlYWRfcCBpbnN0ZWFkIG9mIGRlYWRfb3Jfc2V0X3AuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2VwaWxvZ3VlX2luc25zKTogRG9uJ3QgbW92ZSB0aGUKCWxpbmUgbm90ZSBhdCB0aGUgaGVhZCBvZiB0aGUgY2hhaW4uICBPbmx5IGZvcmNlIGEgbGluZW5vIG5vdGUKCWJlZm9yZSB0aGUgZW5kIG9mIGJsb2NrIDAuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZ2Vuc3VwcG9ydC5jIChjb2xsZWN0X2luc25fZGF0YSk6IFJlY29yZCB0aGUgbWF4aW11bSBudW1iZXIKCW9mIGFsdGVybmF0aXZlcywgbm90IHRoZSBsYXN0IHNlZW4uCgoJKiBnZW5vdXRwdXQuYzogRG9uJ3QgaW5jbHVkZSBlcnJvcnMuaC4KCShzdHJ1Y3QgZGF0YSk6IEFkZCBsaW5lbm8gbWVtYmVyLgoJKGhhdmVfZXJyb3IpOiBOZXcuCgkoc2Nhbl9vcGVyYW5kcyk6IFVzZSBtZXNzYWdlX3dpdGhfbGluZSBpbnN0ZWFkIG9mIGVycm9yLgoJKHZhbGlkYXRlX2luc25fYWx0ZXJuYXRpdmVzKTogTGlrZXdpc2UuCgkoZ2VuX2luc24pOiBBY2NlcHQgYW5kIHN0b3JlIHRoZSBwYXR0ZXJuJ3MgbGluZSBudW1iZXIuCgkoZ2VuX3BlZXBob2xlLCBnZW5fZXhwYW5kLCBnZW5fc3BsaXQpOiBMaWtld2lzZS4KCShtYWluKTogRG9uJ3Qgc2V0IHByb2duYW1lLiAgUGFzcyBsaW5lX25vIHRvIGdlbl9mb28uCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2QzMHYvZDMwdi5jIChkMzB2X3ByaW50X29wZXJhbmQpOiBIYW5kbGUgJzonLgoJKiBjb25maWcvZDMwdi9kMzB2LmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IEFjY2VwdCAnOicuCgkqIGNvbmZpZy9kMzB2L2QzMHYubWQgKGF0dHIgcHJlZGljYWJsZSk6IE5ldy4KCShhbGwgaW5zbiBwYXR0ZXJucyk6IE1hcmsgbm9uLXByZWRpY2FibGUgcGF0dGVybnM7IHVzZSAlOiBvbiB0aGUgcmVzdC4KCShhbmRzaTMqKTogVW5pZnkgaW50byBvbmUgcGF0dGVybi4KCShpb3JzaTMqLCB4b3JzaTMqKTogTGlrZXdpc2UuCgkocGVlcGhvbGUyIHBhdHRlcm5zKTogVXNlIHBlZXAyX3JlZ19kZWFkX3A7IHZlcmlmeSBub3QgYQoJY29uZGl0aW9uYWwgcmV0dXJuLgoJKG9sZCBjb25kX2V4ZWMgcGF0dGVybnMpOiBSZW1vdmUuCgkoZGVmaW5lX2NvbmRfZXhlYyk6IE5ldy4KClNhdCBNYXkgMjcgMTE6MDE6MjcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuaCAoVFJFRV9DT0RFX0xFTkdUSCk6IE5ldyBtYWNyby4KCSogYy1jb21tb24uYyAoY19maW5kX2Jhc2VfZGVjbCk6IFVzZSBpdC4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChtYWtlX25vZGUsIGNvcHlfbm9kZSwgZ2V0X2lkZW50aWZpZXIpOiBMaWtld2llLgoJKGZpcnN0X3J0bF9vcCwgY29udGFpbnNfcGxhY2Vob2xkZXJfcCwgc3Vic3RpdHV0ZV9pbl9leHByKTogTGlrZXdpc2UuCgkoYnVpbGQsIGJ1aWxkX250LCBidWlsZF9wYXJzZV9ub2RlLCBzaW1wbGVfY3N0X2VxdWFsKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAobWFrZV9yYW5nZSk6IExpa2V3aXNlLgoJKGZvbGQpOiBMaWtld2lzZTsgYWxzbyB1c2UgZmlyc3RfcnRsX29wLgoJKiBjLWl0ZXJhdGUuYyAoY29sbGVjdF9pdGVyYXRvcnMpOiBVc2UgZmlyc3RfcnRsX29wLgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xKTogTGlrZXdpc2U7IGFsc28gcmVuYW1lIFRZUEUgdG8gQ0xBU1MuCglVc2UgSVNfRVhQUl9DT0RFX0NMQVNTLgoJKHByZWV4cGFuZF9jYWxscyk6IExpa2V3aXNlLgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3RyZWVzKTogUmV3b3JrIHRvIHVzZSBmaXJzdF9ydGxfb3AKCWFuZCBUUkVFX0NPREVfTEVOR1RILgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogSWYgbm8gb3BlcmFuZHMsIG5vIHVudXNlZCB2YWx1ZS4KCjIwMDAtMDUtMjYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaV9pbnRlcm5hbDEpOiBVc2UgJyVhMScgcmF0aGVyCgl0aGFuICclMSglKiknLgoJKG1vdmRpX2ludGVybmFsNjQpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBDb3JyZWN0IG9yZGVyIG9mIG9wZXJhbmRzIGZvciBESW1vZGUKCWJvb2xlYW4gcGF0dGVybnMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChib29sZWFuX29yX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAoYm9vbGVhbl9vcl9vcGVyYXRvcik6IFByb3RvdHlwZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGJvb2xlYW5fb3Jfb3BlcmF0b3IuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBVc2UgYm9vbGVhbl9vcl9vcGVyYXRvciBpbnN0ZWFkIG9mCglib29sZWFuX29wZXJhdG9yIGZvciB0aGUgYm9vbGVhbiBwYXR0ZXJucyB3aXRob3V0IE5PVHMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyZWdfb3JfbG9naWNhbF9jaW50X29wZXJhbmQpOiBSZW5hbWUKCWZyb20gcmVnX29yX3VfY2ludF9vcGVyYW5kLiAgQ2hhbmdlIGNvbW1lbnQgYW5kIGJlaGF2aW91ci4KCShsb2dpY2FsX29wZXJhbmQpOiBDbGVhbiB1cCwgYWRkIGFzc2VydGlvbi4KCShub25fbG9naWNhbF9jaW50X29wZXJhbmQpOiBBbHNvIGNoZWNrIGZvcgoJcmVnX29yX2xvZ2ljYWxfY2ludF9vcGVyYW5kLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChpb3JzaTMpOiBVc2UgcmVnX29yX2xvZ2ljYWxfY2ludF9vcGVyYW5kCglpbiB0aGUgZXhwYW5kZXIuCgkoeG9yc2kzKTogTGlrZXdpc2UuCgkoaW9yZGkzKTogTGlrZXdpc2UuCgkoeG9yZGkzKTogTGlrZXdpc2UuCgoyMDAwLTA1LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChzdHJ1Y3QgcmVjb3JkX2xheW91dF9pbmZvKTogUmVuYW1lIHRvIChzdHJ1Y3QKCXJlY29yZF9sYXlvdXRfaW5mb19zKS4KCSogc3Rvci1sYXlvdXQuYyAoc3RhcnRfcmVjb3JkX2xheW91dCk6IFJlcGxhY2UKCWByZWNvcmRfbGF5b3V0X2luZm8nIHdpdGggYHJlY29yZF9sYXlvdXRfaW5mb19zJy4KCjIwMDAtMDUtMjYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZmxvdy5jIChmaW5kX2xhYmVsX3JlZnMpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IENhbGwgaXQgZm9yIGVhY2ggYWx0ZXJuYXRpdmUgb2YgYSBjYWxsCglwbGFjZWhvbGRlci4KCjIwMDAtMDUtMjYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogaWZjdnQuYyAoY29uZF9leGVjX2dldF9jb25kaXRpb24pOiBTZXQgdGVzdF9pZiB0byB0aGUgU0VUX1NSQwoJb2YgZ2V0X3BjLgoKMjAwMC0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9jb21wYXJpc29uX29wZXJhdG9yKTogRG9uJ3QgYmUKCXNvIHN0cmljdCBhYm91dCBESW1vZGUuCgkoYWxwaGFfc3dhcHBlZF9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoKnNldG5lX2ludGVybmFsKTogTmFtZSBpdC4gIEFsbG93CglhbnkgaW50ZWdlciBvdXRwdXQgbW9kZS4KCSgqc2V0Y2NfaW50ZXJuYWwpOiBMaWtld2lzZS4KCSgqc2V0Y2Nfc3dhcHBlZF9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKCptb3ZkaWNjX2ludGVybmFsLCAqbW92ZGljY19sYmMsICptb3ZkaWNjX2xicyk6IE5hbWUgdGhlbS4KCSgqbW92W3Foc11pY2NfaW50ZXJuYWwpOiBOZXcuCgkoKm1vdltxaHNdaWNjX2xiYywgKm1vdltxaHNdaWNjX2xicyk6IE5ldy4KCjIwMDAtMDUtMjUgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4LmggKENQUF9TUEVDKTogRGVmaW5lIF9fR0ZMT0FUIGFuZCBHRkxPQVQgd2hlbiAtbWcgaXMgc3BlY2lmaWVkLgoKMjAwMC0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAocmVvcmRlcl9ibG9ja19kZWYpOiBSZW9yZGVyIGVsZW1lbnRzIGZvciBzaXplLgoJUmVtb3ZlIGFkZF9qdW1wOyBhZGQgbmV4dDsgcmVwbGFjZSBmbGFncyB3aXRoIHZpc2l0ZWQuCgkocmJkX2luaXQpOiBSZW1vdmUuCgkoUkVPUkRFUl9CTE9DS19IRUFELCBSRU9SREVSX0JMT0NLX1ZJU0lURUQpOiBSZW1vdmUuCgkoUkVPUkRFUl9CTE9DS19GTEFHUywgUkVPUkRFUl9CTE9DS19JTkRFWCk6IFJlbW92ZS4KCShSRU9SREVSX0JMT0NLX0FERF9KVU1QLCBSRU9SREVSX0JMT0NLX0VGRl9IRUFEKTogUmVtb3ZlLgoJKFJFT1JERVJfQkxPQ0tfRUZGX0VORCwgUkVPUkRFUl9CTE9DS19TQ09QRSk6IFJlbW92ZS4KCShSQkkpOiBOZXcuCgkocmVvcmRlcl9pbmRleCwgcmVvcmRlcl9sYXN0X3Zpc2l0ZWQpOiBSZW1vdmUuCgkoc2tpcF9pbnNuc19hZnRlcl9ibG9jayk6IFJld3JpdGUgdG8gdXNlIGEgc3dpdGNoLgoJKGdldF9jb21tb25fZGVzdCk6IFJlbW92ZS4KCShjaGFpbl9yZW9yZGVyX2Jsb2Nrcyk6IFJlbW92ZS4KCShyZWNvcmRfZWZmZWN0aXZlX2VuZHBvaW50cyk6IFNwbGl0IG91dCBmcm9tIHJlb3JkZXJfYmFzaWNfYmxvY2tzLgoJKG1ha2VfcmVvcmRlcl9jaGFpbik6IExpa2V3aXNlLiAgTG9vcCB1bnRpbCBhbGwgYmxvY2tzIGFyZSBwbGFjZWQuCgkobWFrZV9yZW9yZGVyX2NoYWluXzEpOiBSZW5hbWVkIGZyb20gb2xkIG1ha2VfcmVvcmRlcl9jaGFpbi4KCU9ubHkgY29uc3RydWN0IHRoZSByZW9yZGVyIGNoYWluLCBkbyBub3QgbW92ZSBpbnNucy4gIFRyeSBoYXJkZXIKCXRvIHRhaWwgcmVjdXJzZS4KCShsYWJlbF9mb3JfYmIsIGVtaXRfanVtcF90b19ibG9ja19hZnRlcik6IE5ldy4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogVXNlIHRoZW0uICBEbyBidWxrIGJsb2NrIG1vdmVtZW50LiAgRXhhbWluZQoJYW5kIGFkanVzdCB0aGUganVtcCBpbnNucyBhcHByb3ByaWF0ZWx5LiAgRml4dXAgYmFzaWNfYmxvY2tfaW5mby4KCSh2ZXJpZnlfaW5zbl9jaGFpbik6IEFsd2F5cyBkZWZpbmUuCgkocmVsYXRlX2Jic193aXRoX3Njb3Blcyk6IENhbGwgeG1hbGxvYywgbm90IHhjYWxsb2MuICBGaXggdGhpbmtvCglpbiBhbGxvY2F0aW9uIHNpemUuCgkobWFrZV9uZXdfc2NvcGUpOiBEb24ndCB3cml0ZSB6ZXJvcyB0byBjYWxsb2MnZCBzcGFjZS4KCShidWlsZF9zY29wZV9mb3Jlc3QpOiBSZWx5IG9uIHhyZWFsbG9jIHRvIERUUlQuCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBEb24ndCBidWlsZCBsb29wIG5lc3QuICBEb24ndCBmYWlsIGlmCglwcm9maWxlX2FyY19mbGFnLiAgU3RyZWFtbGluZSBFSCB0ZXN0LgoKCSogZmxvdy5jIChyZWRpcmVjdF9lZGdlX3N1Y2MsIHJlZGlyZWN0X2VkZ2VfcHJlZCk6IE5ldy4KCSogYmFzaWMtYmxvY2suaDogRGVjbGFyZSB0aGVtLgoKMjAwMC0wNS0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChyZXNldF91c2VkX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKHVuc2hhcmVfYWxsX3J0bF9hZ2Fpbik6IENhbGwgaXQuCgoyMDAwLTA1LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAobWF5YmVfbWFjcm9leHBhbmQpOiBXYXJuIGFib3V0IGZ1bmN0aW9uLWxpa2UKCW1hY3JvcyB1c2VkIGluIG5vbi1mdW5jdGlvbiBjb250ZXh0LCBpZiAtV3RyYWRpdGlvbmFsLgoKMjAwMC0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJlY29nLmMgKHBlZXBob2xlMl9vcHRpbWl6ZSk6IFVzZSBJTlNOX1AuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAoc2VxX2NvbnRhaW5zX2p1bXApOiBOZXcuCgkobm9jZV90cnlfc3RvcmVfZmxhZ19jb25zdGFudHMpOiBVc2UgaXQgdG8gZmFpbCBjb252ZXJzaW9uLgoJKG5vY2VfdHJ5X3N0b3JlX2ZsYWdfaW5jLCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2spOiBMaWtld2lzZS4KCjIwMDAtMDUtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleGNlcHQuaCAoY2FuX3Rocm93KTogRGVjbGFyZSBpdC4KCSogZXhjZXB0LmMgKGNhbl90aHJvdyk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCSogcmVzb3VyY2UuYyAoZmluZF9kZWFkX29yX3NldF9yZWdpc3RlcnMpOiBVc2UgY2FuX3Rocm93LgoKMjAwMC0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFya19zZXRfMSk6IERvbid0IHJlY29yZCBjb25kaXRpb25hbGx5IGRlYWQgbWVtb3J5LgoKMjAwMC0wNS0yNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFVzZSBhbnlfY29uZGp1bXBfcCwgYW55X3VuY29uZGp1bXBfcAoJYW5kIHBjX3NldCBhdCB0aGUgcGxhY2Ugb2Ygc2ltcGxlanVtcF9wIGFuZCBjb25kanVtcF9wLgoJKiBjc2UuYyAocmVjb3JkX2p1bXBfZXF1aXYpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZW1pdCk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoZmluZF9uZXh0X3JlZik6IExpa2V3aXNlLgoJKiBmbG93LmMgKHRpZHlfZmFsbHRocnVfZWRnZSk6IExpa2V3aXNlLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCSogZ2NzZS5jIChkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfZ2V0X2NvbmRpdGlvbiwgbm9jZV9nZXRfY29uZGl0aW9uLAoJZGVhZF9vcl9wcmVkaWNhYmxlKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChjb3B5X2luc25fbGlzdCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHNjYW5fbG9vcCwgdmVyaWZ5X2RvbWluYXRvciwgZmluZF9hbmRfdmVyaWZ5X2xvb3BzLAoJZm9yX2VhY2hfaW5zbl9pbl9sb29wLCBjaGVja19kYnJhX2xvb3AsIGdldF9jb25kaXRpb24sCglpbnNlcnRfYmN0LCBsb2FkX21lbXMpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAoZmluZF9kZWFkX29yX3NldF9yZWdpc3RlcnMpOiBMaWtld2lzZS4KCSogc2liY2FsbHMuYyAoc2ltcGxlanVtcF9wKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSwgcmVnX2RlYWRfYWZ0ZXJfbG9vcCk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKGV4cGFuZF9ibG9ja19tb3ZlKTogQWRkIDY0LWJpdCBQb3dlclBDIGRvdWJsZXdvcmQgbW92ZQoJdG8gU1RSSU5HIGNhc2UuICBVc2UgZG91Ymxld29yZCBTVFJJTkcgbW92ZSBmb3IgVEFSR0VUX1BPV0VSUEM2NAoJd2hlbiB1bmFsaWduZWQuCgkqIHJzNjAwMC5oIChDT05TVF9PS19GT1JfTEVUVEVSX1AsICdKJyk6IHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIENPVU5UIGFuZCBGUkFNRSwgbm90IGNvdW50IGFuZCBmcmFtZS4KCShMRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogdW5zaWduZWQgSE9TVF9XSURFX0lOVCBoaWdoLgoJKiByczYwMDAubWQ6IE5hbWUgdmFyaW91cyBpbnRlcm5hbCBwYXR0ZXJucy4KCjIwMDAtMDUtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGp1bXAuYyAoaW52ZXJ0X2V4cF8xKTogUmVtb3ZlIGZpcnN0IGFyZ3VtZW50LCB1c2UgcGNfc2V0Cgl0byBnZXQgdGhlIGV4cHJlc3Npb24uCgkocmVkaXJlY3RfZXhwKTogTWFrZSBzdGF0aWM7IHJlZGlyZWN0IG9ubHkgdGhlIHBjX3NldCBleHByZXNzaW9uLAoJcmVtb3ZlIGZpcnN0IGFyZ3VtZW50LgoJKGludmVydF9leHApOiBSZW1vdmUgZmlyc3QgYXJndW1lbnQsIG1ha2Ugc3RhdGljLgoJKGp1bXBfb3B0aW1pemUpOiBVc2UgYW55X2NvbmRqdW1wX3AsIGFueV91bmNvbmRqdW1wX3AgYW5kCglhbnlfb25seWp1bXAgYXQgbW9zdCBwbGFjZXMgd2hlcmUgd2Ugb3JpZ2luYWx5IGRpZCBjb25kanVtcF9wCglhbmQgc2ltcGxlanVtcF9wLgoJKGp1bXBfYmFja19wLCBmb2xsb3dfanVtcHMsIHRocmVhZF9qdW1wcyk6IExpa2V3aXNlLgoJKGRlbGV0ZV9iYXJyaWVyX3N1Y2Nlc29ycyk6IFVzZSBwY19zZXQuCgkoaW52ZXJ0X2p1bXBfMSwgaW52ZXJ0X2p1bXAsIHJlZGlyZWN0X2p1bXBfMSwgcmVkaXJlY3RfanVtcCk6IFVwZGF0ZQoJY2FsbHMgb2YgaW52ZXJ0X2V4cCBhbmQgcmVkaXJlY3RfZXhwLgoJKiBydGwuaCAocmVkaXJlY3RfZXhwLCBpbnZlcnRfZXhwKTogUmVtb3ZlLgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHkpOiBVc2UgaW52ZXJ0X2p1bXAgYW5kIHJlZGlyZWN0X2p1bXAuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfZW5kX2JpbmRpbmdzKTogRml4IHRoaW5rbyBsYXN0IGNoYW5nZS4KCjIwMDAtMDUtMjUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCSAgICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jICAoZnVuY19laF9lbnRyeSk6IEFkZCBlbWl0dGVkIGZpZWxkLgoJKG5ld19laF9yZWdpb25fZW50cnkpOiBTZXQgZW1pdHRlZCBmaWVsZCB0byAwOwoJKG91dHB1dF9leGNlcHRpb25fdGFibGVfZW50cnkpOiBPbmx5IGVtaXQgcHJldmlvdXNseSB1bi1lbWl0dGVkIGRhdGEsCglhbmQgc2VuZCBpdCB0byB0aGUgZWhfZGF0YSBzZWN0aW9uLgoJKG91dHB1dF9leGNlcHRpb25fdGFibGUpOiBCcmVhayBvdXQgY29tbW9uIHBhcnRzLiBPdXRwdXQKCWV4Y2VwdGlvbiB0YWJsZSBmb3IgZW50aXJlIGNvbXBpbGF0aW9uIHVuaXQgdG8gZWhfZGF0YSBzZWN0aW9uLgoJKG91dHB1dF9leGNlcHRpb25fdGFibGVfZGF0YSk6IENvbW1vbiBwYXJ0cyBvZiBvdXRwdXRfZXhjZXB0aW9uX3RhYmxlLgoJU2VuZCBvdXRwdXQgdG8gZWhfZGF0YSBzZWN0aW9uLgoJKG91dHB1dF9mdW5jdGlvbl9leGNlcHRpb25fdGFibGUpOiBPdXRwdXQgZXhjZXB0aW9uIHRhYmxlIGRhdGEgZm9yCglhIHNpbmdsZSBmdW5jdGlvbiB0byBlaF9kYXRhIHNlY3Rpb24uCgkoZnJlZV9leGNlcHRpb25fdGFibGUpOiBOZXcgZXh0ZXJuYWwgdG8gZnJlZSB0aGUgdGFibGUuCgkqIGV4Y2VwdC5oIChmcmVlX2V4Y2VwdGlvbl90YWJsZSk6IEFkZCBwcm90b3R5cGUuCgkob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IEFkZCBwcm90b3R5cGUuCgkqIGZpbmFsLmMgKGZpbmFsX2VuZF9mdW5jdGlvbik6IE91dHB1dCBmdW5jdGlvbiBleGNlcHRpb24gdGFibGUKCWZvciBJQTY0X1VOV0lORF9JTkZPLgoJKGZpbmFsX3NjYW5faW5zbik6IEVtaXQgYW55IHVud2luZCBkaXJlY3RpdmVzIGZvciBhbiBpbnNuLgoKCSogZnJhbWUtZHdhcmYyLmM6IE5ldyBmaWxlIGNvbnRhaW5pbmcgYWxsIERXQVJGIDIgc3BlY2lmaWMgY29kZQoJZnJvbSBmcmFtZS5jLgoJKiBmcmFtZS5jOiBSZW1vdmUgYWxsIERXQVJGIDIgc3BlY2lmaWMgY29kZS4KCSogY29uZmlnL2lhNjQvZnJhbWUtaWE2NC5jOiBOZXcgZmlsZS4KCShndGhyZWFkX3N0dWZmKTogTWFrZSBhbGwgZ3RocmVhZCBhdmFpbGFibGUgd2l0aAoJSUE2NF9VTldJTkRfSU5GTy4KCShkd2FyZl9mZGUpOiBEZWZpbmUgYW4gSUE2NCBzdHJ1Y3QgZm9yIGR3YXJmX2ZkZS4KCShfX3JlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fcmVnaXN0ZXJfZnJhbWUpOiBNb3ZlIHRvIGNvbW1vbiBhcmVhIG9mIGZpbGUuCgkoX19yZWdpc3Rlcl9mcmFtZV9pbmZvX3RhYmxlLCBfX3JlZ2lzdGVyX2ZyYW1lX3RhYmxlKTogTW92ZSB0byBjb21tb24gaQoJYXJlYS4KCShfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mbywgX19kZXJlZ2lzdGVyX2ZyYW1lKTogTW92ZSB0byBjb21tb24gYXJlYS4KCShfX2ZyYW1lX2luaXQsIGZpbmRfZmRlKTogTmV3IHZlcnNpb25zIGZvciBJQTY0X1VOV0lORF9JTkZPLgoJKHJlYWRfdWxlYjEyOCk6IE5ldyB2ZXJzaW9uIGZvciBpYTY0LgoJKGdldF91bndpbmRfcmVjb3JkKTogUmVhZCB0aGUgbmV4dCBJQS02NCB1bndpbmQgcmVjb3JkLgoJKHJlYWRfUl9yZWNvcmQpOiBSZWFkIGEgcmVnaW9uIGhlYWRlciByZWNvcmQuCgkocHJvY2Vzc19hX2JfcmVnX2NvZGUpOiBYIHJlY29yZCBoZWxwZXIuCgkocmVhZF9YX3JlY29yZCk6IFJlYWQgYW4gWCBmb3JtYXQgcmVjb3JkLgoJKHJlYWRfQl9yZWNvcmQpOiBSZWFkIGEgQiBmb3JtYXQgcmVjb3JkLgoJKFAzX3JlY29yZF90eXBlcyk6IExpc3Qgb2YgcmVjb3JkIHR5cGVzIG1hdGNoaW5nIHRoZSBQMyBmb3JtYXQuCgkoUDdfcmVjb3JkX3R5cGVzKTogTGlzdCBvZiByZWNvcmQgdHlwZXMgbWF0Y2hpbmcgdGhlIFA3IGZvcm1hdC4KCShQOF9yZWNvcmRfdHlwZXMpOiBMaXN0IG9mIHJlY29yZCB0eXBlcyBtYXRjaGluZyB0aGUgUDggZm9ybWF0LgoJKHJlYWRfUF9yZWNvcmQpOiBSZWFkIGEgUCBmb3JtYXQgcmVjb3JkLgoJKGluaXRfaWE2NF9yZWdfbG9jKTogU2V0IGRlZmF1bHQgZmllbGRzIGZvciBhIHJlZ2lzdGVyLgoJKGluaXRfaWE2NF91bndpbmRfZnJhbWUpOiBTZXQgZGVmYXVsdHMgZm9yIGFsbCByZWdpc3RlciByZWNvcmRzLgoJKGV4ZWN1dGVfb25lX2lhNjRfZGVzY3JpcHRvcik6IEV4ZWN1dGUgb25lIGRlc2NyaXB0b3IgcmVjb3JkLgoJKHJzZV9hZGRyZXNzX2FkZCk6IENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgYSBsb2NhbCByZWcgaW4gbWVtb3J5LgoJKG5vcm1hbGl6ZV9yZWdfbG9jKTogVHVybiBhIGxvY2F0aW9uIGRlc2NyaXB0b3IgaW50byBhIG1lbW9yeSBhZGRyZXNzLgoJKG1heWJlX25vcm1hbGl6ZV9yZWdfbG9jKTogT25seSBub3JtYWxpemUgYSBkZXNjcmlwdG9yIGlmIGl0IGZhbGxzCgl3aXRoaW4gYSBzcGVjaWZpZWQgUEMgb2Zmc2V0IHJhbmdlLgoJKGdldF9yZWFsX3JlZ192YWx1ZSk6IEdpdmVuIGEgcmVnaXN0ZXIgbG9jYXRpb24sIHJldHJpZXZlIGl0cyB2YWx1ZS4KCShzZXRfcmVhbF9yZWdfdmFsdWUpOiBDaGFuZ2UgdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgbG9jYXRpb24uCgkoY29weV9yZWdfdmFsdWUpOiBDb3B5IHJlZyB2YWx1ZXMsIGlmIG5lZWRlZC4KCShjb3B5X3NhdmVkX3JlZ19zdGF0ZSk6IENvcHkgYWxsIHJlZ2lzdGVycyB0aGF0IG5lZWQgdG8gYmUgY29waWVkLgoJKHByb2Nlc3Nfc3RhdGVfYmV0d2Vlbik6IE5vcm1hbGl6ZSBhbGwgZnJhbWUgcmVnaXN0ZXIgcmVjb3JkcyB0aGF0CglmYWxsIHdpdGhpbiB0aGUgc3BlY2lmaWVkIFBDIHJhbmdlLgoJKGZyYW1lX3RyYW5zbGF0ZSk6IFRha2UgYSBwcm9jZXNzZWQgZnJhbWUgZGVzY3JpcHRpb24sIGFuZCB0dXJuCglldmVyeXRoaW5nIGludG8gYWRkcmVzc2VzLgoJKGJ1aWxkX2lhNjRfZnJhbWVfc3RhdGUgKTogRmluZCBhbmQgY3JlYXRlIGZyYW1lIHN0YXRlIHJlY29yZCBmb3IgYSBQQy4KCShnZXRfcGVyc29uYWxpdHkpOiBHZXQgdGhlIHBlcnNvbmFsaXR5IHJvdXRpbmUgZm9yIGEgZ2l2ZW4gZnJhbWUuCgkoZ2V0X2V4Y2VwdF90YWJsZSk6IEdldCB0aGUgZXhjZXB0aW9uIHRhYmxlIGZvciBhIGdpdmVuIGZyYW1lLgoJKHJlY29yZF9uYW1lKTogVW53aW5kIHJlY29yZCBuYW1lcyBmb3IgZGVidWdnaW5nLgoJKHByaW50X3JlY29yZCk6IFByaW50IGFuZCB1bndpbmQgcmVjb3JkLgoJKHByaW50X2FsbF9yZWNvcmRzKTogUHJpbnQgYW4gZW50aXJlIHVud2luZCBpbWFnZS4KCShfX2lhNjRfYmFja3RyYWNlKTogUHJpbnQgYSBiYWNrdHJhY2UuCgkoaWE2NF9iYWNrdHJhY2VfaGVscGVyKTogTmV3IGZ1bmN0aW9uLgoJKF9fcmVnaXN0ZXJfZnJhbWVfaW5mb19hdXgpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKF9fZG9fZnJhbWVfc2V0dXBfYXV4KTogTmV3IGZ1bmN0aW9uLgoKCSogZnJhbWUuaCAoZW51bSB1bndfcmVjb3JkX3R5cGUpOiBOZXcgdW53aW5kIHJlY29yZCB0eXBlcy4KCShzdHJ1Y3QgdW53X3BfcmVjb3JkLCB1bndfYl9yZWNvcmQsIHVud194X3JlY29yZCkgOiBOZXcgdW53aW5kIHJlY29yZHMuCgkoc3RydWN0IHVud19yX3JlY29yZCwgdW53aW5kX3JlY29yZCk6IE5ldyB1bndpbmQgcmVjb3JkIHN0cnVjdHMuCgkoc3RydWN0IHVud2luZF9pbmZvX3B0cik6IFVud2luZCBpbmZvcm1hdGlvbiBsYXlvdXQuCgkoSUE2NF9VTldfTE9DX1RZUEVfKik6IE1hY3JvcyBmb3IgZGlmZmVyZW50IHR5cGVzIGZvciBsb2NhdGlvbgoJZGVzY3JpcHRvcnMuCgkoc3RydWN0IGlhNjRfcmVnX2xvYyk6IFJlZ2lzdGVyIGxvY2F0aW9uIGRlc2NyaXB0aW9uLgoJKHN0cnVjdCBpYTY0X2ZyYW1lX3N0YXRlKTogTG9jYXRpb24gb2YgYWxsIHJlZ2lzdGVycyBpbiBhIGZyYW1lLgoJKHN0cnVjdCBvYmplY3QpOiBBZGQgcGNfYmFzZSBhbmQgZmRlX2VuZCBmb3IgSUE2NF9VTldJTkRfSU5GTy4KCSogbGliZ2NjMi5jIChfX2lhNjRfcGVyc29uYWxpdHlfdjEpOiBQZXJzb25hbGl0eSByb3V0aW5lLgoJKF9fY2FsY19jYWxsZXJfYnNwKTogQ2FsY3VsYXRlIHRoZSBic3AgcmVnaXN0ZXIgZm9yIHRoZSBjYWxsZXIncwoJZnJhbWUuCgkoaWE2NF90aHJvd19oZWxwZXIpOiBGaWd1cmUgb3V0IHdobyB0byByZXR1cm4gdG8gYW5kIHNldCB1cCB0aGUKCXJlZ2lzdGVycy4KCShfX3Rocm93KTogVGhyb3cgcm91dGluZS4KCgkqIG91dHB1dC5oIChhc3NlbWJsZV9laF9hbGlnbiwgYXNzZW1ibGVfZWhfbGFiZWwpOiBOZXcgZnVuY3Rpb25zCgl0byBnZW5lcmF0ZSBFSCBpbmZvIHdoZXJlIHdlIHdhbnQgaXQuCgkoYXNzZW1ibGVfZWhfaW50ZWdlcik6IE5ldyBmdW5jdGlvbi4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IE91dHB1dCBtb2R1bGUgbGV2ZWwgZXhjZXB0aW9uIHRhYmxlIGZvcgoJbm9uLWlhNjQgdGFyZ2V0cy4KCShtYWluKTogU2V0IGV4Y2VwdGlvbnNfdmlhX2xvbmdqdW1wIGFuZCBmbGFnX25ld19leGNlcHRpb25zIGJhc2VkCglvbiBJQTY0X1VOV0lORF9JTkZPIHRvby4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9laF9sYWJlbCk6IEdlbmVyYXRlIGEgbGFiZWwgdmlhCglBU01fT1VUUFVUX0VIX0xBQkVMIGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZC4KCShhc3NlbWJsZV9laF9hbGlnbik6IEdlbmVyYXRlIGFuIGFsaWdubWVudCBkaXJlY3RpdmUgdmlhCglBU01fT1VUUFVUX0VIX0FMSUdOIGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZC4KCShhc3NlbWJsZV9laF9sYWJlbCk6IEdlbmVyYXRlIGFuIGludGVnZXIgdmFsdWUgdmlhCglBU01fT1VUUFVUX0VIX3R5cGUgaWYgdGhleSBoYXZlIGJlZW4gc3BlY2lmaWVkLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHJ0eF9uZWVkc19iYXJyaWVyKTogQWRkIGZsdXNocnMuCgkoaWE2NF9pbml0X2J1aWx0aW5zKTogQWRkIF9fYnVpbHRpbl9pYTY0X2JzcAoJYW5kIF9fYnVpbHRpbl9pYTY0X2ZsdXNocnMuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IEFkZCBJQTY0X0JVSUxUSU5fQlNQIGFuZAoJSUE2NF9CVUlMVElOX0ZMVVNIUlMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoaWE2NF9idWlsdGlucyk6IEFkZCBJQTY0X0JVSUxUSU5fQlNQIGFuZAoJSUE2NF9CVUlMVElOX0ZMVVNIUlMuCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChmbHVzaHJzKTogTmV3IGluc24gdG8gZmx1c2ggdGhlIHJlZ2lzdGVyCglzdGFjay4gIEFkZCB0byB1bnNwZWMgbGlzdC4KCgkqIGNvbmZpZy9pYTY0L2NydGJlZ2luLmFzbSAoZnJhbWVfb2JqZWN0KTogQ2hhbmdlIHNpemUuCgkoX19kb19mcmFtZV9zZXR1cF9hdXgpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc206IGNhbGwgX19kb19mcmFtZV9zZXR1cF9hdXguCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMkFEREVIKTogQWRkLgoJKiBNYWtlZmlsZS5pbiAoTElCMkFEREVIKTogQWRkLgoJKExJQjJBREQpOiBVc2UgTElCMkFEREVILgoKMjAwMC0wNS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlY29nLmMgKG9mZnNldHRhYmxlX2FkZHJlc3NfcCk6IElmIG1vZGUgc2l6ZSBpcyB6ZXJvLCBhc3N1bWUKCUJJR0dFU1RfQUxJR05NRU5ULgoKMjAwMC0wNS0yNCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkuaGlhLm5yYy5jYT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIC1Xbm8tbG9uZy1sb25nIG9wdGlvbiBzdXBwb3J0IGFuZCBpbXByb3ZlCgloYW5kbGluZyBvZiB3YXJuaW5nIENGTEFHUyBmb3Igc3RhZ2VzIDEgYW5kIDIuCgkqIE1ha2VmaWxlLmluIChXQVJOX0NGTEFHUyk6IE1vdmUgZGVmaW5pdGlvbiB0byBjb25maWd1cmUuaW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCldlZCBNYXkgMjQgMTk6Mzc6NTMgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2NjLnRleGk6IFJlbW92ZSBjb250cmlidXRvciBsaXN0LiAgSW5zdGVhZCBpbmNsdWRlIGNvbnRyaWIudGV4aS4KCSogY29udHJpYi50ZXhpOiBOZXcgZmlsZS4KClRodSBNYXkgMjUgMDI6Mjc6MjIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbG9vcC5jIChiYXNpY19pbmR1Y3Rpb25fdmFyKTogQXZvaWQgZG91YmxlIHJlY29yZGluZyBvZiBhbiBpbmNyZW1lbnQuCgpUaHUgTWF5IDI1IDAyOjE5OjI3IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIEJhY2sgb3V0IHRoaXMgcGF0Y2g6CglUdWUgRGVjICA3IDE5OjIyOjA2IDE5OTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICogbG9vcC5oIChzdHJ1Y3QgaW5kdWN0aW9uKTogQWRkIG11bHRpX2luc25faW5jci4KCSAgKiBsb29wLmMgKGJhc2ljX2luZHVjdGlvbl92YXIpOiBOZXcgbXVsdGlfaW5zbl9pbmNyIGFyZ3VtZW50LgoJICBTZXQgaXQgaWYgd2Ugc2VhcmNoIGJhY2sgdGhyb3VnaCBwcmV2aW91cyBpbnNucyBmb3IgdGhlIGJpdi4KCSAgKHJlY29yZF9iaXYpOiBOZXcgbXVsdGlfaW5zbl9pbmNyIGFyZ3VtZW50OyBmaWxsIGluIHN0cnVjdCBpbmR1Y3Rpb24uCgkgIChzdHJlbmd0aF9yZWR1Y2UpOiBEaXNjYXJkIGFuIGl2IHdpdGggbXVsdGlwbGUgYml2cywgYW55IG9mCgkgIHdoaWNoIHJlcXVpcmUgbXVsdGlwbGUgaW5zbnMgdG8gaW5jcmVtZW50LgoKCSogbG9vcC5jIChjaGVja19pbnNuX2Zvcl9iaXZzKTogUmVtb3ZlIGJpdHMgY29waWVkIGZyb20gYWJvdmUgcGF0Y2guCgpUaHUgTWF5IDI1IDAyOjA5OjEwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHJ0bC5oIChsb2NfbWVudGlvbmVkX2luX3ApOiBEZWNsYXJlLgoJKiByZWxvYWQuYyAobG9jX21lbnRpb25lZF9pbl9wKTogTW92ZWQgZnJvbSBoZXJlLi4uCgkqIHJ0bGFuYWwuYyAobG9jX21lbnRpb25lZF9pbl9wKTogdG8gaGVyZS4gIE5vIGxvbmdlciBzdGF0aWMuCglGaXggbG9vcCBpbmNyZW1lbnQgZm9yICdFJyBoYW5kbGluZy4KCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBXaGVuIGRvaW5nIGJpdi0+Z2l2IGNvbnZlcnNpb24sCgl0YWtlIG11bHRpLWluc24gYml2IGluY3JlbWVudHMgaW50byBhY2NvdW50LgoKMjAwMC0wNS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2VuZF9iaW5kaW5ncyk6IExvb2sgdGhyb3VnaCBOT1RFcyB0byBmaW5kIGEKCUJBUlJJRVIuCgoyMDAwLTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBIYW5kbGUgY2xlYW51cHMgaW4gdGFpbC1yZWN1cnNpb24KCWFyZ3VtZW50cyBhbmFsb2dvdXNseSB0byBjbGVhbnVwcyBpbiBzaWJsaW5nIGNhbGxzLgoKMjAwMC0wNS0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc2ltcGxpZnktcnR4LmM6IFJlbmFtZSBtYWNybyBTSUdOX0VYVEVORCB0byBIV0lfU0lHTl9FWFRFTkQuCglBbGwgY2FsbGVycyBjaGFuZ2VkLgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9leHByLCBleHBhbmRfZXhwciwKCWV4cGFuZF9leHByX3VuYWxpZ25lZCk6IFNldCBpbl9jaGVja19tZW1vcnlfdXNhZ2Ugd2hpbGUgZW1pdHRpbmcKCWNoa3JfY2hlY2tfYWRkciBsaWJjYWxsLgoKMjAwMC0wNS0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBXaGVuIGNvbnN0cnVjdGluZyBhCgltdWx0aXBsaWVyL2Rpdmlzb3IsIGRvIG5vdCBleHBlY3QgY29uc3RfYmlub3AgdG8gY29ycmVjdGx5CglkZXRlcm1pbmUgaWYgb3ZlcmZsb3cgaGFzIG9jY3VycmVkLCBzbyBjaGVjayBleHBsaWNpdGx5LgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjLWRlY2wuYyAoYnVpbGRfZW51bWVyYXRvcik6IERvbid0IG1vZGlmeSB0aGUgdmFsdWUncyB0eXBlLAoJY29udmVydCBpdC4KCjIwMDAtMDUtMjQgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIG1pcHMuaCAoTElOS0VSX0VORElBTl9TUEVDKTogUGFzcyAtRUwgdG8gbGlua2VyIGJ5IGRlZmF1bHQuCgoyMDAwLTA1LTI0ICBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBSZWRlZmluZSBpbmhpYml0X2xpYmMgY29uZGl0aW9ucy4KCSogbGliZ2NjMi5jOiBSZW1vdmUgaW5oaWJpdF9saWJjIGNvbmRpdGlvbmFsIGRlZmluZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0yNCAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXdhcmUuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogIEZvciAtLWVuYWJsZS1sYW5ndWFnZXM9TElTVCwgY2hlY2sgZm9yIGVtcHR5IExJU1QuCgkqIGNvbmZpZ3VyZTogIFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTI0ICBMYXJzIEJyaW5raG9mZiAgPGxhcnNAbm9jcmV3Lm9yZz4KCgkqIHBkcDExLmggKFNUQUNLX0JPVU5EQVJZKTogRGVmaW5lLgoKMjAwMC0wNS0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogVXBkYXRlIGxpZmUgaW5mbyBnbG9iYWxseS4KCjIwMDAtMDUtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZW1pdC1ydGwuYyAodW5zaGFyZV9hbGxfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkodW5zaGFyZV9hbGxfcnRsKTogQ2FsbCBpdC4KCjIwMDAtMDUtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFRyZWF0ICdzdHJvbmdhcm0nIGFzIGlmIGl0IHdlcmUgJ2FybScgd2hlbgoJZGV0ZXJtaW5pbmcgY3B1IHR5cGUuCgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWcvYXJtL2FybS5jOiBDaGFuZ2UgJ2NoYXIgKicgdG8gJ2NvbnN0IGNoYXIgKicgZm9yIGNhc2VzCgl3aGVyZSBjb25zdGFudCBzdHJpbmdzIGFyZSBpbnZvbHZlZC4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKGFybV9jb25kaXRpb25fY29kZXMpOiBDaGFuZ2UgdHlwZSB0byAnY29uc3QKCWNoYXIgKicuCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogQ2hhbmdlICdjaGFyIConIHRvICdjb25zdCBjaGFyIConIGZvcgoJY2FzZXMgd2hlcmUgY29uc3RhbnQgc3RyaW5ncyBhcmUgaW52b2x2ZWQuCgpUdWUgTWF5IDIzIDE1OjA4OjMxIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKGdlbl9mYXJfYnJhbmNoLCBzcGxpdF9icmFuY2hlcyk6IFVwZGF0ZQoJdG8gcmVmbGVjdCBuZXcgcHJvdG90eXBlcyBmb3IgcmVkaXJlY3RfanVtcCBhbmQgaW52ZXJ0X2p1bXAuCgkoc2hfaW5zbl9sZW5ndGhfYWRqdXN0bWVudCk6IEdldCByaWQgb2YgY29uc3Qgd2FybmluZ3MuCgoyMDAwLTA1LTIzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGludm9rZS50ZXhpIChPcHRpb25zIGZvciBEZWJ1Z2dpbmcgWW91ciBQcm9ncmFtIG9yIEdDQyk6IFVwZGF0ZQoJdGhlIG5hbWVzIG9mIGR1bXAgZmlsZXMuCgpUdWUgTWF5IDIzIDEzOjU4OjUyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY29uZmlndXJlLmluIChOT19NSU5VU19DX01JTlVTX08pOiBGaXggdGhpbmtvIGluIHByZXZpb3VzIGZpeC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDUtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChTSUdOX0VYVEVORCk6IE5ldyBtYWNyby4KCShzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24sIHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IFVzZSBTSUdOX0VYVEVORC4gIE1ha2UgbG93CgloYWx2ZXMgb2YgKGxvdywgaGlnaCkgcGFpcnMgdW5zaWduZWQgaWYgdGhleSB3ZXJlbid0IGFscmVhZHkuCgkoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBDYXN0IElOVFZBTCB0byB1bnNpZ25lZCBiZWZvcmUKCWNvbXBhcmluZyB0byBhIE1PREVfQklUU0laRS4KCjIwMDAtMDUtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DSEVDS19ERUNMLCBnY2NfQUNfQ0hFQ0tfREVDTFMpOiBOZXcgbWFjcm9zCglyZXdyaXR0ZW4gZnJvbSB0aGUgaW50ZXJuYWxzIG9mIGdjY19BQ19ORUVEX0RFQ0xBUkFUSU9Oe1N9LgoKCSogY29uZmlndXJlLmluIChnY2NfQUNfQ0hFQ0tfREVDTFMpOiBDYWxsIHRoaXMgaW5zdGVhZCBvZgoJZ2NjX0FDX05FRURfREVDTEFSQVRJT05TLgoKCSogZHdhcmZvdXQuYzogRG9uJ3QgcHJvdG90eXBlIHRpbWUoKS4KCgkqIGdjYy5jOiBDaGVjayBIQVZFX0RFQ0xfKiBpbnN0ZWFkIG9mIE5FRURfREVDTEFSQVRJT05fKi4KCgkqIHN5c3RlbS5oOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jOiBMaWtld2lzZS4KCjIwMDAtMDUtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtZGVjbC5jIChwdXNoZGVjbCk6IEludmVydCBzZW5zZSBvZiB0ZXN0IGZvciBub24tZ2xvYmFsIHR5cGVzLgoKVHVlIE1heSAyMyAxODoxMTo0MiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBIb25vciBUUlVMWV9OT09QX1RSVU5DQVRJT04uCgoyMDAwLTA1LTIzICBKb25hdGhhbiBMYXJtb3VyICA8amxhcm1vdXJAcmVkaGF0LmNvLnVrPgoKCSogY29uZmlnL21pcHMvZWxmNjQuaCAoQ1RPUl9MSVNUU19ERUZJTkVEX0VYVEVSTkFMTFkpOiBEZWZpbmUKClR1ZSBNYXkgMjMgMDY6NTA6MjkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBSZW1vdmUgI2lmZGVmIEhBSUZBIHNpbmNlIG5vdyBvbmx5IHNjaGVkdWxlci4KCShhbHBoYV9zdGFydF9mdW5jdGlvbik6IE5ldmVyIHdyaXRlIC4ubmcgbGFiZWwgaWYgVk1TIG9yIE5ULgoJKGFscGhhX2FsaWduX2luc25zKTogUmVtb3ZlIEdQX0lOX1VTRSBhcmcuCglBbGlnbm1lbnQgbm93IHVuc2lnbmVkLgoJKGFscGhhX3Jlb3JnKTogRG9uJ3QgcGFzcyBHUF9JTl9VU0UgYXJnIHRvIGFscGhhX2FsaWduX2luc25zLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHByb2xvZ3VlX2xkZ3ApOiBTcGxpdCBpbnRvIG9uZSBkZWZpbmVfZXhwYW5kCglhbmQgdHdvIGRlZmluZV9pbnNuJ3MuCgoyMDAwLTA1LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogVXNlIHRydW5jX2ludF9mb3JfbW9kZS4KCjIwMDAtMDUtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IENoYW5nZSBybGktPnNpemUgdG8gcmxpLT5vZmZzZXQuCgoyMDAwLTA1LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IE1ha2Ugc3VyZQoJZXhpc3RpbmcgbGluZSBudW1iZXIgbm90ZXMgYXBwZWFyIGFmdGVyIHRoZSBwcm9sb2d1ZS4KCk1vbiBNYXkgMjIgMjE6NDk6MDAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9mbm5hbWUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHByaW50X29wZXJhbmQsIGNhc2UgJ34nKTogTmV3IGNhc2UuCgkoYWxwaGFfZXhwYW5kX3Byb2xvZ3VlKTogRW1pdCBwcm9sb2d1ZV9sZGdwIGluc24gaWYgbmVlZGVkLgoJKGFscGhhX3N0YXJ0X2Z1bmN0aW9uKTogU2V0IGFscGhhX2ZubmFtZS4KCVdyaXRlICJuZyIgbGFiZWwgaWYgbm8gbGRncDsgZG9uJ3Qgd3JpdGUgbGRncCBpbnNuLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogTmV3IGNhc2UgJ34nLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHByb2xvZ3VlX2xkZ3ApOiBOZXcgZGVmaW5lX2luc24uCgpNb24gTWF5IDIyIDExOjMwOjQ4IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBpbmNyZW1lbnQgTEFCRUxfTlVTRVMKCW9uIGRlbGV0ZWQgbGFiZWxzLgoKMjAwMC0wNS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdmFyYXNtLmMgKGVoX2ZyYW1lX3NlY3Rpb24pOiBSZXZlcnQgY2hhbmdlIHRvIGFyZ3VtZW50IGxpc3QuCgpNb24gTWF5IDIyIDEzOjE0OjAzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBvcHRhYnMuYyAoY2FuX2V4dGVuZF9wKTogQWxsb3cgdW5zaWduZWRwIHRvIGhhdmUgYW55IG5vbnplcm8gdmFsdWUuCgkoZ2VuX2V4dGVuZF9pbnNuLCBjYW5fZml4X3AsIGNhbl9mbG9hdF9wKTogTGlrZXdpc2UuCgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24sIGNhc2UgTk9URV9JTlNOX0ZVTkNUSU9OX0JFRyk6IFJlbW92ZQoJZGFuZ2xpbmcgImVsc2UiIHRoYXQgY2F1c2VzICJicmVhayIgdG8gYmUgY29uZGl0aW9uYWwuCglBbHNvIHJlbW92ZSB1bm5lZWRlZCBjb2RlIGF0IHN0YXJ0LgoKTW9uIE1heSAyMiAxNzozMTozNSAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIG02OGsvbTY4ay5oIChTVE9SRV9GTEFHX1ZBTFVFKTogTWFjcm8gc2V0IHRvICgtMSksIG5vdCAtMS4KCSogZng4MC9meDgwLmgsIGkzNzAvaTM3MC5oLCBtODhrL204OGsuaCAoU1RPUkVfRkxBR19WQUxVRSk6IERpdHRvLgoJKiBnbWljcm8vZ21pY3JvLmgsIHdlMzJrL3dlMzJrLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBEaXR0by4KCjIwMDAtMDUtMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3ZkZl9pbnNuX3Y5b25seV92aXMpOiBmemVybyBoYXMKCWp1c3Qgb25lIGFyZ3VtZW50LgoKTW9uIE1heSAyMiAwNjo1Nzo0OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAocmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmg6IENsZWFuIHVwIHNvbWUgZGVjbGFyYXRpb25zIGFuZCBjb21tZW50cy4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMpOiBOZXcgZGVjbGFyYXRpb24uCgkqIHRyZWUuYyAoZ2V0X2FsaWFzX3NldCk6IElmIHR5cGUgYW5kIGhhcyBhbGlhcyBzZXQsIHVzZSBpdC4KCjIwMDAtMDUtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBUcnkgdG8gc2ltcGxpZnkKCUlGX1RIRU5fRUxTRSB0byBhIHNldGNjIGZvcm0uCgkqIGp1bXAuYyAoY2FuX3JldmVyc2VfY29tcGFyaXNvbl9wKTogQmUgcHJlcGFyZWQgZm9yIGluc24gbnVsbC4KCjIwMDAtMDUtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN1bl9tYWxsb2MpOiBIYW5kbGUgYGNhbGxvYycuCgkoc3VuX21hbGxvYywgc3lzel9zdGR0eXBlc19mb3Jfc3VuKTogQWRkIHRlc3RfdGV4dC4KClN1biBNYXkgMjEgMTY6NDI6MzEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBIYW5kbGUgaTNfc3Vic3RfaW50b19pMiBjYXNlIHdoZW4gSTIgaXMKCW5vdCBhIFBBUkFMTEVMLgoKMjAwMC0wNS0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZkaSwgbW92ZGYpOiA2NC1iaXQgY2xlYW4tdXAuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZCk6IExpa2V3aXNlLgoKCSogZmluYWwuYyAoc3BsaXRfZG91YmxlKTogUmlnaHQgc2hpZnQgb2YgbmVnYXRpdmUgdmFsdWVzIGlzIG5vdAoJcG9ydGFibGUuCgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogU2NhbiBhbmQga2lsbCBkZWFkIGNvZGUuCgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9ydGwpOiBTdG9yZSB0aGUgY29waWVkIHJ0eC4KCjIwMDAtMDUtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGRpYWdub3N0aWMuYzogRWxpbWluYXRlIGltcGxpY2l0IGludC4KCSogZXhjZXB0LmMsIGdjYy5jOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkqIGZpbmFsLmMgKGZpbmFsX2VuZF9mdW5jdGlvbik6IE1hcmsgZmlsZSBhcmcgQVRUUklCVVRFX1VOVVNFRC4KCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IFVzZSBYVkVDIHRvIGluaXRpYWxpemUgdmVjdG9yCglzbG90IG9mICdzcGxpdCcuCgoJKiBwcmludC1ydGwuYzogSWYgREVCVUdfUkVHSVNURVJfTkFNRVMsIGRlZmluZSBzdGF0aWMKCWRlYnVnX3JlZ19uYW1lcyBpbnN0ZWFkIG9mIHN0YXRpYyByZWdfbmFtZXMuICBJZiBub3QsIGRlZmluZQoJZ2xvYmFsIHJlZ19uYW1lcy4KCSogcmVnY2xhc3MuYzogRG9uJ3QgZGVmaW5lIGdsb2JhbCByZWdfbmFtZXMgdW5sZXNzCglERUJVR19SRUdJU1RFUl9OQU1FUyBpcyBkZWZpbmVkLgoKCSogcmVsb2FkMS5jIChvcmRlcl9yZWdzX2Zvcl9yZWxvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKiB2YXJhc20uYzogSW5jbHVkZSBvdXRwdXQuaCBhZnRlciBkZWZhdWx0cy5oLiAgRGVmaW5lCgllaF9mcmFtZV9zZWN0aW9uIGFzIGZ1bmN0aW9uIG9mIG5vIGFyZ3MsIG5vdCBvZiB1bnNwZWNpZmllZCBhcmdzLgoKCSogZ2NjLmM6IENvbnN0aWZ5IGFyZ2J1ZjsgYXJndW1lbnRzIHRvIHN0b3JlX2FyZywKCXByb2Nlc3NfY29tbWFuZCwgbWFpbjsgZWxlbWVudHMgb2Ygc3RydWN0IGNvbW1hbmQgYW5kIHN0cnVjdAoJc3dpdGNoc3RyOyBsb2NhbCB2YXJpYWJsZXMgaW4gZXhlY3V0ZSwgcHJvY2Vzc19jb21tYW5kLCBtYWluLgoKMjAwMC0wNS0yMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiAgbWFueSBhcHBsaWNhdGlvbnMgb2YgY19maXg9Zm9ybWF0ICsgdGVzdHMKCSogZml4aW5jL2NoZWNrLmRpZmY6ICByZWdlbmVyYXRlZAoJKiBmaXhpbmMvZml4aW5jbC54OiAgcmVnZW5lcmF0ZWQKClNhdCBNYXkgMjAgMDk6MzA6NTUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmM6IENsYXJpZnkgc29tZSBjb21tZW50cy4KCShyZWNvcmRfYmFzZV92YWx1ZSk6IFJFR05PIGlzIHVuc2lnbmVkLgoJKiBydGwuaCAocmVjb3JkX2Jhc2VfdmFsdWUpOiBMaWtld2lzZS4KCgkqIGFsaWFzLmMgKGFsaWFzZXNfZXZlcnl0aGluZ19wKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIFFJbW9kZSBoZXJlLgoJKiBjLWNvbW1vbi5jIChjX2dldF9hbGlhc19zZXQpOiBEbyBpdCBoZXJlLgoJSGFuZGxlIEJJVF9GSUVMRF9SRUYgYnkgZ2V0dGluZyBhbGlhcyBpbmZvIGZvciBhcmcuCglVc2UgUE9JTlRFUl9UWVBFX1AuCgoyMDAwLTA1LTIwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIG1rbGliZ2NjLmluOiBSZXN0b3JlIHJ1bGUgdG8gY3JlYXRlICR7ZGlyfS4KClNhdCBNYXkgMjAgMDg6NDU6NDEgMjAwMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5tayk6IERlcGVuZCBvbiB4Z2NjJChleGVleHQpIGZvcgoJR0NDX0ZPUl9UQVJHRVQgdXNlZCBieSBNVUxUSUxJQlMuCgkqIG1rbGliZ2NjLmluOiBNYWtlIHN1cmUgZWFjaCAubyBmaWxlIGRlcGVuZHMgb24gdGhlCglkaXJlY3RvcnkgaXQgd2lsbCBiZSBpbi4KCU1ha2UgdGhlIG11bHRpbGliIGRpcmVjdG9yeSBkZXBlbmRzIGxpYmdjYy4KClNhdCBNYXkgMjAgMDg6Mjk6MjggMjAwMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGJvb3RzdHJhcCk6IFVuc2V0IExBTkdfTElCMkZVTkNTIGZvciBzdGFnZSAxLgoKU2F0IE1heSAyMCAwNzoyNzozNSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobWFrZV9yYW5nZSk6IEhhbmRsZSBkZWdlbmVyYXRlZCBpbnRlcnZhbHMuCglGaXhlcyBjLXRvcnR1cmUvZXhlY3V0ZS85OTEyMjEtMS5jCgpGcmkgTWF5IDE5IDE4OjE2OjMxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjc2UuYyAoY3NlX2Jhc2ljX2Jsb2NrKTogT25seSBjYWxsIGZpbmRfcmVnX25vdGUgaWYgUkVHX05PVEVTIG5vdCAwLgoJKiByZWxvYWQuYyAoZmluZF9lcXVpdl9yZWcpOiBMaWtld2lzZS4KCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IExpa2V3aXNlLgoJT25seSBjYWxsIHByb2xvZ3VlX2VwaWxvZ3VlX2NvbnRhaW5zIG9uIGluc25zLgoJKiBiYXNpYy1ibG9jay5oIChSRUdfU0VUX1RPX0hBUkRfUkVHX1NFVCk6IENhbGwgbmV3IGZ1bmN0aW9uLgoJKiBiYi1yZW9yZGVyLmMgKGhhcmQtcmVnLXNldC5oKTogSW5jbHVkZSBlYXJsaWVyLgoJKiBoYWlmYS1zY2hlZC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIHByZWRpY3QuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCShyZWdfc2V0X3RvX2hhcmRfcmVnX3NldCk6IE5ldyBmdW5jdGlvbi4KCSogYml0bWFwLmMgKHJlZ3MuaCwgYmFzaWMtYmxvY2suaCk6IE5vIGxvbmdlciBpbmNsdWRlLgoJKGJpdG1hcC5oKTogTm93IGluY2x1ZGUuCgkqIGNvbmZsaWN0LmMgKGhhcmQtcmVnLXNldC5oKTogSW5jbHVkZS4KCSogcHJvZmlsZS5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogc2JpdG1hcC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGhhcmQtcmVnLXNldC5oLCBiYXNpYy1ibG9jay5oKTogTGlrZXdpc2UuCgkqIGhhcmQtcmVnLXNldC5oIChyZWdfbmFtZXMpOiBOb3cgY29uc3RhbnQuCgkqIHJlZ3MuaCAocmVnX25hbWVzKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlZ19uYW1lcyk6IExpa2V3aXNlLgoJKiBsb29wLmggKGJhc2ljLWJsb2NrLmgpOiBObyBsb25nZXIgaW5jbHVkZS4KCShiaXRtYXAuaCk6IE5vdyBpbmNsdWRlLgoJKiByZWxvYWQxLmMgKG9yZGVyX3JlZ3NfZm9yX3JlbG9hZCk6IEF2b2lkIGxvb3Agb3ZlciByZWcgc2V0cy4KCSogTWFrZWZpbGUuaW4gKExPT1BfSCwgc2JpdG1hcC5vLCBwcm9maWxlLm8pOiBSZWZsZWN0IGFib3ZlIGNoYW5nZXMuCgkodG9wbGV2Lm8sIHByaW50LXJ0bC5vLCBjb25mbGljdC5vLCB1bnJvbGwubywgYml0bWFwLm8pOiBMaWtld2lzZS4KCjIwMDAtMDUtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGVkZ2VfZGVmKTogTmV3IGZpZWxkICJjb3VudCIuCgkoc3RydWN0IGJhc2ljX2Jsb2NrX2RlZik6IExpa2V3aXNlLgoJKiBmbG93LmMgKGVudHJ5X2V4aXRfYmxvY2tzKTogQWRkIGNvdW50IGZpbGVkcy4KCShzcGxpdF9lZGdlKTogS2VlcCBjb3VudCBpbmZvcm1hdGlvbiB1cC10by1kYXRlLgoJKGR1bXBfZWRnZV9pbmZvLCBkdW1wX2Zsb3dfaW5mbyk6IER1bXAgY291bnQgZmllbGRzLgoKCSogZmluYWwuYyAoY291bnRfaW5zdHJ1bWVudGVkX2VkZ2VzKTogUmVuYW1lIHRvIGVkZ2UgZnJvbSBhcmMuCgkoZW5kX2ZpbmFsKTogVXBkYXRlIHVzZXJzLgoJKiBwcm9maWxlLmM6IEluY2x1ZGUgZXhwci5oLCBiYXNpYy1ibG9jay5oLgoJKHN0cnVjdCBhZGpfbGlzdCwgQVJDX1RBUkdFVCwgQVJDX1NPVVJDRSwgQVJDX0NPVU5UKTogS2lsbC4KCShzdHJ1Y3QgYmJfaW5mbywgbGFiZWxfdG9fYmIsIGxhYmVsX3RvX2JiX3NpemUsIGJiX2dyYXBoKTogS2lsbC4KCShpZ25vcmVfbmV4dF9ub3RlLCByZXR1cm5fbGFiZWxfZXhlY3V0aW9uX2NvdW50KTogS2lsbC4KCShiYmdfZmlsZV9uYW1lLCBkYV9maWxlX25hbWUpOiBLaWxsLgoJKGVkZ2VfaW5mbywgYmJfaW5mbyk6IE5ldyBzdHJ1Y3R1cmVzLgoJKEVER0VfSU5GTywgQkJfSU5GTywgR0NPVl9JTkRFWF9UT19CQiwgQkJfVE9fR0NPVl9JTkRFWCk6IE5ldyBtYWNyb3MuCgkoY291bnRfaW5zdHJ1bWVudGVkX2VkZ2VzLCB0b3RhbF9udW1fZWRnZXMpOiBSZW5hbWUgdG8gZWRnZSBmcm9tIGFyYy4KCSh0b3RhbF9udW1fZWRnZXNfaW5zdHJ1bWVudGVkKTogTGlrZXdpc2UuCgkoaW5pdF9hcmMsIGV4cGFuZF9zcGFubmluZ190cmVlKTogS2lsbC4KCShmaWxsX3NwYW5uaW5nX3RyZWUsIHRhYmxlanVtcF9lbnRyeV9wKTogS2lsbC4KCShpbnN0cnVtZW50X2VkZ2VzKTogIFJld3JpdGUgZnJvbSBpbnN0cnVtZW50X2FyY3MgdG8gdXNlCgljb21taXRfZWRnZV9pbnNlcnRpb25zIGluZnJhc3RydWN0dXJlLgoJKGNvbXB1dGVfYnJhbmNoX3Byb2JhYmlsaXRpZXMpOiBSZW1vdmUgYXJndW1lbnRzOyByZXdyaXRlIGZvcgoJQ0ZHIGluZnJhc3RydWN0dXJlOyB1c2UgcnRsX2R1bXBfZmlsZSBkaXJlY3RseS4KCShicmFuY2hfcHJvYiwgZmluZF9zcGFubmluZ190cmVlKTogTGlrZXdpc2UuCgkodW5pb25fZ3JvdXBzLCBmaW5kX2dyb3VwKTogTmV3LgoJKGluaXRfYnJhbmNoX3Byb2IpOiBNYWtlIGJiZ19maWxlX25hbWUgYW5kIGRhX2ZpbGVfbmFtZSBsb2NhbC4KCShlbmRfYnJhbmNoX3Byb2IpOiBVc2UgcnRsX2R1bXBfZmlsZSBkaXJlY3RseS4KCShpbml0X2VkZ2VfcHJvZmlsZXIpOiBSZW5hbWUgdG8gZWRnZSBmcm9tIGFyYy4KCShvdXRwdXRfYXJjX3Byb2ZpbGVyKTogS2lsbC4KCShnZW5fZWRnZV9wcm9maWxlcik6IE5ldy4KCShvdXRwdXRfZnVuY19zdGFydF9wcm9maWxlcik6IFR1cm4gb2ZmIHByb2ZpbGluZy4gIE1ha2UgdGhlCgljb25zdHJ1Y3RvciBzdGF0aWMgd2hlbiB3ZSBjYW4uCgkqIHJ0bC5oIChicmFuY2hfcHJvYiwgZW5kX2JyYW5jaF9wcm9iKTogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiB0b3BsZXYuYyAoREZJX2Zsb3cpOiBSZW1vdmUuCgkoREZJX2NmZywgREZJX2xpZmUpOiBOZXcuCgkoZHVtcF9maWxlKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKGNvbXBpbGVfZmlsZSk6IENhbGwgZW5kX2JyYW5jaF9wcm9iIGlmIHByb2ZpbGVfYXJjX2ZsYWcgdG9vLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBNb3ZlIGZsb3cxIGNmZyBjcmVhdGlvbiB0byBERklfY2ZnLiAgRG8gZWRnZQoJcHJvZmlsaW5nIGFmdGVyIHRoZSBDRkcgaXMgYnVpbHQuICBNb3ZlIGZsb3cxIGxpZmUgYW5hbHlzaXMgdG8KCURGSV9saWZlLiAgQWx3YXlzIGVzdGltYXRlIHJlbWFpbmluZyBwcm9iYWJpbGl0aWVzLgoKMjAwMC0wNS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKGZpbmRfaWZfY2FzZV8yKTogRG9uJ3QgYWxsb3cgVEhFTiB0byBiZSBFWElULgoKCSogZmxvdy5jIChtYWtlX2VkZ2VzKTogVGhlIHNpYmxpbmcgY2FsbCBlZGdlIHRvIGV4aXQgaXMgYWJub3JtYWwuCgoyMDAwLTA1LTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChyZWRpcmVjdF9qdW1wKTogQWRkIGRlbGV0ZV91bnVzZWQgYXJndW1lbnQuICBEb24ndAoJcmVtb3ZlIGxhYmVscyBhbmQgY29kZSBmb2xsb3dpbmcgd2hlbiBMQUJFTF9OVVNFUyBnb2VzIHRvIHplcm8uCgkoaW52ZXJ0X2p1bXApOiBMaWtld2lzZS4KCShqdW1wX29wdGltaXplXzEpOiBGaXggcmVkaXJlY3QvaW52ZXJ0IGFyZ3VtZW50cy4KCShkb19jcm9zc19qdW1wLCB0aHJlYWRfanVtcHMpOiBMaWtld2lzZS4KCSogZmxvdy5jIChzcGxpdF9lZGdlKTogTGlrZXdpc2UuCgkqIHJlb3JnLmMgKG9wdGltaXplX3NraXApOiBMaWtld2lzZS4KCShyZW9yZ19yZWRpcmVjdF9qdW1wLCByZWxheF9kZWxheV9zbG90cywgZGJyX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYyAoaW5zdHJ1bWVudF9hcmNzKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoZmluZF9hbmRfdmVyaWZ5X2xvb3BzKTogTGlrZXdpc2UuICBGaXggaW5kZW50YXRpb24uCgkqIHJ0bC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCkZyaSBNYXkgMTkgMTI6MDU6MTMgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBzc2EuYyAoY29udmVydF9mcm9tX3NzYSk6IFRlbGwgbGlmZV9hbmFseXNpcyB3ZSBuZWVkIGRlYXRoCglub3Rlcy4KCShtYWtlX3JlZ3NfZXF1aXZhbGVudF9vdmVyX2JhZF9lZGdlcyk6IE9ubHkgbG9vayBhdCBhYm5vcm1hbAoJY3JpdGljYWwgZWRnZXMuCgoyMDAwLTA1LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKGZ1bmxpa2VfbWFjcm9leHBhbmQpOiBNYWtlIHN1cmUgbm90IHRvIHdhbGsgcDEKCXBhc3QgbDEgd2hlbiBkZWxldGluZyB3aGl0ZXNwYWNlIGFuZCBtYXJrZXJzLgoKCSogY3BwbGV4LmMgKF9jcHBfc2Nhbl91bnRpbCk6IENsZWFyIEFVWCBmaWVsZCBvZiB0b2tlbnMuCgkqIGNwcGxpYi5jIChkb191bmFzc2VydCk6IFB1dCB0aGUgbGlzdCB0byBjb21wYXJlIGFnYWluc3Qgb24KCXRoZSBzdGFjay4KCjIwMDAtMDUtMTkgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL1JFQURNRTogIGNsZWFuZWQgdXAgb2xkIGRvY3VtZW50YXRpb24KCSogZml4aW5jL2NoZWNrLmRpZmY6IHJlZ2VuZXJhdGVkICYgdmVyaWZpZWQgb24gT1NSNSBvbiBpeDg2CgkqIGZpeGluYy9jaGVjay50cGw6IGNvbXB1dGUgdGhlIGxpc3Qgb2YgbmVlZGVkIGRpcmVjdG9yaWVzCgllbWl0ICIjaWYgZGVmaW5lZChuYW1lKSIgYmVjYXVzZSBvZiBjb25mbGljdAoJb21pdCBtYWNoaW5lIG5hbWUgZGlmZmVyZW5jZXMgZnJvbSBvdXRwdXQgZGlmZmVyZW5jZXMKCSogZml4aW5jL2luY2xoYWNrLmRlZiggbTg4a19tdWx0aV9pbmNsICk6ICBVc2UgYHdyYXAnIGZ1bmN0aW9uCgkobWFjaGluZV9uYW1lKTogY2hhbmdlIHRlc3QgdGV4dCB0byB1c2UgYHNlZCcgbWFya2VycwoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbgoKRnJpIE1heSAxOSAwNjo0OTozNSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2VsZm9zLmggKFNFTEVDVF9TRUNUSU9OKTogRG9uJ3QgYWNjZXNzIERFQ0xfSU5JVElBTCBvZgoJYSBDT05TVFJVQ1RPUi4KCjIwMDAtMDUtMTggIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogZ2NjLnRleGkgKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBDb3JyZWN0IGV4YW1wbGUgYW5kIHVwZGF0ZQoJaXQgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgcHJhY3RpY2UuCgoyMDAwLTA1LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFU1RVRkYpOiBGaXggdHlwbyBpbiBzcGVsbGluZyBvZiBzLXVuZGVyLgoKMjAwMC0wNS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAoaW5zbl9kZXBlbmRhbnRfcCwgaW5zbl9kZXBlbmRhbnRfcF8xKTogTmV3LgoJKiBydGwuaCAoaW5zbl9kZXBlbmRhbnRfcCk6IERlY2xhcmUgaXQuCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogVXNlIGl0LgoKMjAwMC0wNS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKGV4cGFuZF9wcm9sb2d1ZSwgZXhwYW5kX2VwaWxvZ3VlKToKCTE2LWJpdCBhbmQgNjQtYml0IGNsZWFuLXVwLgoKMjAwMC0wNS0xOCBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKCotcGMtbXNkb3NkamdwcCk6IFNldCBmbG9hdF9mb3JtYXQgdG8gbm9uZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNS0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2Vub3Bpbml0LmM6IFVzZSAkIGZvciBlc2NhcGUgc2VxdWVuY2VzIGluIG9wdGFiIHBhdHRlcm5zLgoJUmVtb3ZlIGJhY2tzbGFzaGVzIGZyb20gb3B0YWIgcGF0dGVybnMuICBDaGFuZ2UgJEEsICRCLCAkQyB0bwoJZXhwYW5kIHRvIChpbnQpIHdoYXRldmVyIGluc3RlYWQgb2YganVzdCB3aGF0ZXZlcjsgcmVtb3ZlCglleHBsaWNpdCAoaW50KSBmcm9tIGFsbCBvcHRhYiBwYXR0ZXJucy4KCgkqIGdlbnN1cHBvcnQuYyAoeG1hbGxvYywgeHJlYWxsb2MsIHhzdHJkdXApOiBQcm92aWRlLgoJKiBnZW5hdHRyLmMsIGdlbmF0dHJ0YWIuYywgZ2VuY29kZXMuYywgZ2VuY29uZmlnLmMsIGdlbmVtaXQuYywKCWdlbmV4dHJhY3QuYywgZ2VuZmxhZ3MuYywgZ2Vub3Bpbml0LmMsIGdlbm91dHB1dC5jLCBnZW5wZWVwLmMsCglnZW5yZWNvZy5jOiBSZW1vdmUgcHJpdmF0ZSBjb3BpZXMgb2YgeG1hbGxvYywgeHJlYWxsb2MsIGFuZAoJeHN0cmR1cC4KCjIwMDAtMDUtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IEJhc2UgbWluaW11bSBpbnNuIGNvdW50IGR1cmluZwoJZmluZF9jcm9zc19qdW1wIG9uIEJSQU5DSF9DT1NULgoKMjAwMC0wNS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogT25seSBwcmludCBub3RlIGxpbmUgbnVtYmVyIGFzIHN0cmluZwoJaWYgYmV0d2VlbiBOT1RFX0lOU05fQklBUyBhbmQgTk9URV9JTlNOX01BWC4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG8gbm90aGluZyBmb3Igbm90ZSBsaW5lIG51bWJlciAwLgoKMjAwMC0wNS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBnY2MtY29tbW9uLmMgKGdnY19tYXJrX3J0eF9jaGlsZHJlbik6IE1hcmsgTk9URV9FWFBFQ1RFRF9WQUxVRQoJZnJvbSBOT1RFX0lOU05fRVhQRUNURURfVkFMVUUgbm90ZXMgYW5kIE5PVEVfU09VUkNFX0ZJTEUgZnJvbQoJTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgoyMDAwLTA1LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS91bmtub3duLWVsZi5oIChVTklRVUVfU0VDVElPTik6IFBsYWNlIGNvbnN0YW50LAoJdW5pbml0aWFsaXNlZCBkYXRhIGluIC5yb2RhdGEgbm90IC5ic3MsIGFuZCBkbyBub3QgaW50ZXJwcmV0IGFuCgllcnJvciBpbiB0aGUgaW5pdGlhbGlzYXRpb24gdmFsdWUgYXMgbWVhbmluZyB0aGF0IHRoZSB2YXJpYWJsZQoJc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgLmJzcyBzZWN0aW9uLgoKVGh1IE1heSAxOCAxMjoxMDoxOCAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGNvbmZpZ3VyZS5pbiAoTk9fTUlOVVNfQ19NSU5VU19PKTogVGVzdCBgJGFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vJywKCW5vdCBgJGFjX2N2X3Byb2dfY2NfY2NfY19vJy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDUtMTggIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBnNzcgdHlwZSBlbnRyaWVzLgoJKGc3N19pbnRlZ2VyX3R5cGVfbm9kZSwgZzc3X3VpbnRlZ2VyX3R5cGVfbm9kZSk6IE5ldy4KCShnNzdfbG9uZ2ludF90eXBlX25vZGUsIGc3N191bG9uZ2ludF90eXBlX25vZGUpOiBOZXcuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgdGhlbS4KCjIwMDAtMDUtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKHN1YnMgcGF0dGVybnMpOiBVc2UgJUcgdG8gbmVnYXRlLgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKG9rX2Zvcl9iY2xyKTogVGFrZSBhIEhPU1RfV0lERV9JTlQuCgkoc21hbGxfcG93ZXJfb2ZfdHdvKTogTGlrZXdpc2U7IHVzZSBleGFjdF9sb2cyLgoJKGFkZHNfc3Vic19vcGVyYW5kLCBvbmVfaW5zbl9hZGRzX3N1YnNfb3BlcmFuZCk6IFJlbW92ZS4KCShvdXRwdXRfYWRkc19zdWJzKTogUmVtb3ZlLgoJKHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kKTogTmV3LgoJKHNwbGl0X2FkZHNfc3Vicyk6IE5ldy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChDT05TVF9PS19GT1JfSik6IENhc3QgdG8gdW5zIEhPU1RfV0lERV9JTlQuCgkoQ09OU1RfT0tfRk9SX0wpOiBNYXRjaCBzdHJpY3QgYWRkcyBvcGVyYW5kcy4KCShDT05TVF9PS19GT1JfTik6IE1hdGNoIHN0cnVjdCBzdWJzIG9wZXJhbmRzLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGFkZHNfc3VicyBpbnNucyk6IFJlbW92ZS4KCShhZGRoaSBwYXR0ZXJucyk6IE91dHB1dCBhZGRzL3N1YnMgZGlyZWN0bHkuCgkoYWRkc2lfaDgzMDBoKTogTGlrZXdpc2UuCgkoYWRkaGkvYWRkc2kgc3BsaXR0ZXJzKTogTmV3LiAgRGVjb21wb3NlIHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kLgoKMjAwMC0wNS0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMgKHBhcnNlX2Fzc2VydGlvbik6IE5ldy4KCShsZXgpOiBDYWxsIGl0IGZvciBDUFBfSEFTSC4gIFJlbW92ZSBDUFBfQVNTRVJUSU9OIGNhc2UuCgkoX2NwcF9wYXJzZV9leHByKTogUmVtb3ZlIGNhc2UgJyMnLiAgRG9uJ3Qgc2V0CglwYXJzaW5nX2lmX2RpcmVjdGl2ZS4KCSogY3BwaGFzaC5jIChjb2xsZWN0X29iamxpa2VfZXhwYW5zaW9uLAoJY29sbGVjdF9mdW5saWtlX2V4cGFuc2lvbiwgY29sbGVjdF9wYXJhbXMsCglfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogVGhlIGxpc3Qgbm8gbG9uZ2VyIGhhcyBhIHRyYWlsaW5nCglWU1BBQ0UgdG9rZW4uCgkqIGNwcGhhc2guaCAoZW51bSBub2RlX3R5cGUpOiBBZGQgVF9BU1NFUlRJT04uCgkoc3RydWN0IGhhc2hub2RlKTogUmVtb3ZlIGFzY2hhaW4sIGFkZCBwcmVkLgoJKHN0cnVjdCBwcmVkaWNhdGUpOiBOZXcuCglVcGRhdGUgcHJvdG90eXBlcy4KCgkqIGNwcGxleC5jIChleHBhbmRfdG9rZW5fc3BhY2UpOiBIYW5kbGUgYm90aCBvZmZzZXQgYW5kCglub25vZmZzZXQgbGlzdHMuCgkoaW5pdF90b2tlbl9saXN0LCBfY3BwX2ZyZWVfdG9rZW5fbGlzdCwgX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBEZWxldGUuCgkoX2NwcF9pbml0X3Rva2xpc3QsIF9jcHBfY2xlYXJfdG9rbGlzdCwgX2NwcF9mcmVlX3Rva2xpc3QsCglfY3BwX3NsaWNlX3Rva2xpc3QsIF9jcHBfc3F1ZWV6ZV90b2tsaXN0LCBfY3BwX2VxdWl2X3Rva2VucywKCV9jcHBfZXF1aXZfdG9rbGlzdHMpOiBOZXcuCgkoX2NwcF9zY2FuX2xpbmUpOiBSZW5hbWUgdG8gX2NwcF9zY2FuX3VudGlsOyBhZGQgYWJpbGl0eSB0bwoJc3RvcCBhdCBhbnkgc2luZ2xlLWNoYXJhY3RlciB0b2tlbiwgbm90IGp1c3QgbmV3bGluZS4KCShfY3BwX2xleF90b2tlbik6IFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciAjZGVmaW5lIGFuZCAjaWYuCgkoY3BwX2dldF90b2tlbik6IEV4cGVjdCAjIGFzIGEgc2VwYXJhdGUgdG9rZW4gdHlwZS4gIFJlbW92ZQoJRElSRUNUSVZFIGNhc2UuCgkoX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuKTogUmVtb3ZlIERJUkVDVElWRSBjYXNlLgoJKF9jcHBfbGV4X2xpbmUsIF9jcHBfbGV4X2ZpbGUsIF9jcHBfaW5pdF9pbnB1dF9idWZmZXIpOiBVcGRhdGUuCgoJKiBjcHBsaWIuYyAoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBTZXQgZGlybm8gYW5kCglTWU5UQVhfSU5DTFVERSBiaXQgb2YgZmxhZ3MsIG5vdCBkaXJfaGFuZGxlciBhbmQgZGlyX2ZsYWdzLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFJ1biAjIDxudW1iZXI+IHRocm91Z2ggdGhlIHNhbWUgbG9naWMKCWFzIG5vcm1hbCBkaXJlY3RpdmVzLgoJKGRvX2RlZmluZSk6IERvbid0IHNldCBwYXJzaW5nX2RlZmluZV9kaXJlY3RpdmUuICBVc2UKCV9jcHBfc2Nhbl91bnRpbC4gIFRoZSBsaXN0IGRvZXMgbm90IGhhdmUgYSBWU1BBQ0UgYXQgdGhlIGVuZC4KCShkb19pZik6IFNhdmUsIGNsZWFyLCBhbmQgcmVzdG9yZSBvbmx5X3NlZW5fd2hpdGUgYXJvdW5kCglfY3BwX3BhcnNlX2V4cHIuCgkoc2tpcF9pZl9ncm91cCk6IHMvQ1BQX0RJUkVDVElWRS9DUFBfSEFTSC8KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogUmV3cml0ZS4KCgkqIGNwcGxpYi5oIChUVFlQRV9UQUJMRSk6IFJlbW92ZSBDUFBfQVNTRVJUSU9OLgoJKExJU1RfT0ZGU0VUKTogTmV3IGZsYWcuCgkoc3RydWN0IGNwcF90b2tsaXN0KTogUmVwbGFjZSBkaXJfaGFuZGxlciBhbmQgZGlyX2ZsYWdzIHdpdGgKCWRpcm5vIGFuZCBmbGFncy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBwYXJzaW5nX2lmX2RpcmVjdGl2ZSBhbmQKCXBhcnNpbmdfZGVmaW5lX2RpcmVjdGl2ZS4KCjIwMDAtMDUtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGJyb2tlbl9jYWJzKTogVXBkYXRlIGZpeCB0byBoYW5kbGUgY29tbWVudHMKCWZvbGxvd2luZyB0aGUgY2FicyBkZWNsIHdoaWNoIHRlcm1pbmF0ZSBvbiB0aGUgZm9sbG93aW5nIGxpbmUuCglBZGQgdGhlIGNvcnJlc3BvbmRpbmcgdGVzdF90ZXh0IGNhc2UuCgoyMDAwLTA1LTE4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoY3BwX3JlYWRlcl9pbml0KTogSW5pdGlhbGlzZSBjb2xfYWRqdXN0IGFuZAoJZGVmYXVsdCB0YWIgc3RvcCBzaXplLgoJKG5vX251bSwgT1BUX2Z0YWJzdG9wKTogTmV3LgoJKGhhbmRsZV9vcHRpb24pOiBIYW5kbGUgImZ0YWJzdG9wPSIgY29tbWFuZC1saW5lIG9wdGlvbi4KCShwcmludF9oZWxwKTogRG9jdW1lbnQgaXQuCgkqIGNwcGxleC5jIChDT0xVTU4pOiBSZW1vdmUuCgkoaGFuZGxlX25ld2xpbmUpOiBSZXNldCBjb2xfYWRqdXN0LgoJKHNraXBfd2hpdGVzcGFjZSk6IFVwZGF0ZSBjb2xfYWRqdXN0IGFzIHRhYnMgZW5jb3VudGVyZWQuCgkoX2NwcF9sZXhfbGluZSk6IFVwZGF0ZSB0byB1c2UgY29sX2FkanVzdC4gIENhbGwKCXNraXBfd2hpdGVzcGFjZSBmb3IgYWxsIHdoaXRlc3BhY2UuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBOZXcgbWVtYmVyIHRhYnN0b3AuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBOZXcgbWVtYmVyIGNvbF9hZGp1c3QuCgkoQ1BQX0JVRl9DT0wpOiBVcGRhdGUuCgkoQ1BQX0JVRl9DT0xVTU4pOiBOZXcuCgkqIGNwcC50ZXhpOiBEb2N1bWVudCAiLWZ0YWJzdG9wPSIgY29tbWFuZCBsaW5lIG9wdGlvbi4KCldlZCBNYXkgMTcgMTg6MTk6NDEgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjb25maWd1cmUuaW4gKE5PX01JTlVTX0NfTUlOVVNfTyk6IE1hY3JvIG1hZGUgYXZhaWxhYmUgZm9yIEFDX09VVFBVVAoJZmlsZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCldlZCBNYXkgMTcgMTg6MDY6MTIgMjAwMCAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbWtsaWJnY2MuaW4gQWRkIG1pc3NpbmcgLURMJG5hbWUgd2hlbiBjb21waWxpbmcgbW9kdWxlcyBpbiBsaWJnY2MxLmMuCgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogRG8gbm90IGJ1aWxkIFRJIG5vZGVzIHVubGVzcwoJSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBpcyA+PSA2NC4KCjIwMDAtMDUtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IFJlbW92ZSBpbmFjdGl2ZSBidXQgcmVhbCBpbnNucwoJaW4ganVtcC10by1uZXh0LWluc24gb3B0aW1pemF0aW9uLgoKMjAwMC0wNS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2FsbCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZwoJdW5sZXNzIE9QVElNSVpFX01PREVfU1dJVENISU5HLiAgQ29uZGl0aW9uYWxseSBzZXQgbm9fbmV3X3BzZXVkb3MuCglEb24ndCBjYWxsIHJlY29tcHV0ZV9yZWdfdXNhZ2UgaWYgbm9fbmV3X3BzZXVkb3MgaXMgdHJ1ZS4KCSogbGNtLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogTW92ZSBpZmRlZnMgb3V0c2lkZSBmdW5jdGlvbi4KCVJldHVybiB0cnVlIGlmIHdlIGRpZCB3b3JrOyB1cGRhdGUgZ2xvYmFsIGxpZmUgaW5mb3JtYXRpb24uCgkqIGJhc2ljLWJsb2NrLmggKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogVXBkYXRlIGRlY2wuCgoyMDAwLTA1LTE3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChleHBhbmRfbmFtZV9zcGFjZSk6IERvbid0IHVzZSBwdHJkaWZmX3QuCgoyMDAwLTA1LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYzogTmV3IGZlYXR1cmUsICNwcmFnbWEgc3lzdGVtX2hlYWRlci4KCSogY3BwLnRleGk6IERvY3VtZW50IHNwZWNpYWwgdHJlYXRtZW50IG9mIHN5c3RlbSBoZWFkZXJzLCBhbmQKCXRoZSB2YXJpb3VzIG1lY2hhbmlzbXMgdG8gZ2V0IGEgaGVhZGVyIHRoYXQgc3BlY2lhbCB0cmVhdG1lbnQuCgoyMDAwLTA1LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAob2Zmc2V0b2YpOiBEZWZpbmUgYXQgdGhlIHZlcnkgZW5kLCB0byBlbnN1cmUgd2UgcHJlZmVyCgl0aGUgcGxhdGZvcm0ncyBkZWZpbml0aW9uIGlmIGF2YWlsYWJsZS4KCjIwMDAtMDUtMTYgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYzogaW1wcm92ZSB0aGUgZGVidWcgZGlzcGxheXMsIGlnbm9yZSBTSUdQSVBFCgkqIGZpeGluYy9zZXJ2ZXIuYzogbGlrZXdpc2UKCSogZml4aW5jL2ZpeGZpeGVzLmMoIGNoYXJfbWFjcm9fZGVmX2ZpeCApOiBmaXggcmVnZXgKCSsgI2lmZGVmIGRlYnVnZ2luZyBjb2RlICsgdXNlICNkZWYgY29uc3RhbnQgZm9yCglzdWItcGF0dGVybiBjb3VudAoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKCBocHV4MTFfZmFic2YgKTogS2VlcCBIUC1VWCAxMSBmcm9tIHN0b21waW5nCglvbiBDKysgbWF0aCBuYW1lc3BhY2UKCjIwMDAtMDUtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChjaGFyX21hY3JvX3VzZV9maXgsIGNoYXJfbWFjcm9fZGVmX2ZpeCk6CglEb24ndCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHNwcmludGYuICBVc2UgYXNwcmludGYgdG8gYXZvaWQKCWJ1ZmZlciBvdmVyZmxvd3MuCgpXZWQgTWF5IDE3IDE3OjI3OjQ0IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGZsYWdzLmggKHdhcm5fdW51c2VkX2Z1bmN0aW9uLCB3YXJuX3VudXNlZF9sYWJlbCwKCXdhcm5fdW51c2VkX3BhcmFtZXRlciwgd2Fybl91bnVzZWRfdmFyaWFibGUsIHdhcm5fdW51c2VkX3ZhbHVlKToKCVJlcGxhY2UgYGB3YXJuX3VudXNlZCcnLgoJKHNldF9XdW51c2VkKTogQWRkIGRlY2xhcmF0aW9uLgoJKiB0b3BsZXYuYyAoc2V0X1d1bnVzZWQpOiBOZXcgZnVuY3Rpb24uCgkod2Fybl91bnVzZWRfZnVuY3Rpb24sIHdhcm5fdW51c2VkX2xhYmVsLCB3YXJuX3VudXNlZF9wYXJhbWV0ZXIsCgl3YXJuX3VudXNlZF92YXJpYWJsZSwgd2Fybl91bnVzZWRfdmFsdWUpOiBOZXcgdmFyaWFibGVzLgoJKFdfb3B0aW9ucyk6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiwgLVd1bnVzZWQtZnVuY3Rpb24sCgktV3VudXNlZC1sYWJlbCwgLVd1bnVzZWQtcGFyYW1ldGVyLCAtV3VudXNlZC12YXJpYWJsZSBhbmQKCS1XdW51c2VkLXZhbHVlLiAgRGVsZXRlIC1XdW51c2VkLiAgSGFuZGxlZCBpbiBkZWNvZGVfV19vcHRpb24uCgoJKiB0b3BsZXYuYyAoZGVjb2RlX1dfb3B0aW9uKTogVXBkYXRlIC1XdW51c2VkIGZsYWdzIGJ5IGNhbGxpbmcKCXNldF9XdW51c2VkLgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogRGl0dG8gZm9yIC1XYWxsLgoKCSogc3RtdC5jIChleHBhbmRfZXhwcl9zdG10LCBleHBhbmRfZXhwcl9zdG10LAoJd2Fybl9hYm91dF91bnVzZWRfdmFyaWFibGVzKTogUmVwbGFjZSB3YXJuX3VudXNlZCB3aXRoIG1vcmUKCWV4cGxpY2l0IHdhcm5fdW51c2VkX3ZhbHVlIGV0LmFsLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogRGl0dG8uCgkqIGMtdHlwZWNrLmMgKGludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIsCglpbnRlcm5hbF9idWlsZF9jb21wb3VuZF9leHByKTogRGl0dG8uCgkqIGMtZGVjbC5jIChwb3BsZXZlbCwgcG9wX2xhYmVsX2xldmVsKTogRGl0dG8uCgkqIHRvcGxldi5jIChjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zKTogUmVwbGFjZSB3YXJuX3VudXNlZCB3aXRoCgljaGVjayBmb3IgZWl0aGVyIHdhcm5fdW51c2VkX2Z1bmN0aW9uIG9yIHdhcm5fdW51c2VkX3ZhcmlhYmxlLgoKCSogZ2NjLjEsIGludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBEb2N1bWVudAoJLVd1bnVzZWQtZnVuY3Rpb24sIC1XdW51c2VkLWZ1bmN0aW9uLCAtV3VudXNlZC1sYWJlbCwKCS1XdW51c2VkLXBhcmFtZXRlciwgLVd1bnVzZWQtdmFyaWFibGUgYW5kIC1XdW51c2VkLXZhbHVlIG9wdGlvbnMuCgpXZWQgTWF5IDE3IDEwOjI4OjEyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogbWtsaWJnY2MuaW4gKGJ1aWxkaW5nIGxpYmdjYzEpIFtYbGliZ2NjMS5hXTogRmluZCBsaWJnY2MxLmMgaW4KCSQoc3JjZGlyKSwgbm90IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCjIwMDAtMDUtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZHNvX2hhbmRsZSk6IE1hcmsgaGlkZGVuIGlmIHRoZQoJYXNzZW1ibGVyIHN1cHBvcnRzIGl0LgoJKC5maW5pLCAuaW5pdCk6IFVzZSBhIGdwLXJlbGF0aXZlIGluZGlyZWN0IGNhbGwuCgkoX19kb19nbG9iYWxfZHRvcnNfYXV4KTogUHJlc2VydmUgdGhlIGdwOyByZWJ1bmRsZS4KCShfX2RvX2ZyYW1lX3NldHVwKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKC5JQV82NC51bndpbmQpOiBEb24ndCB0ZXJtaW5hdGUgd2l0aCAtMS4KCSguaW5pdCk6IFVzZSBhIGdwLXJlbGF0aXZlIGluZGlyZWN0IGNhbGwuCgkoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogUHJlc2VydmUgdGhlIGdwLgoKMjAwMC0wNS0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IEJlIHByZXBhcmVkIGZvciBhIHJldHVybgoJaW5zbiB0byBiZSBpbnNlcnRlZCBvbiB0aGUgZWRnZSB3aXRoIGEgbm9ybWFsIGp1bXAuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgbG9vayB0byBjcmVhdGUgcmV0dXJuIGlzbnMuCgoJKiBmbG93LmMgKGZsb3dfZGVsZXRlX2luc24pOiBEb24ndCBhZGp1c3QgcmVmZXJlbmNlIGNvdW50IG9mIG5vdGVzLgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IExpa2V3aXNlLgoJKHJldHVybmp1bXBfcCk6IFZlcmlmeSB0aGUgYXJndW1lbnQgaXMgYSBKVU1QX0lOU04uCgkqIHJ0bC5kZWYgKE5PVEUpOiBBZGQgNXRoIGVsZW1lbnQgZm9yIE5PVEVfSU5TTl9ERUxFVEVEX0xBQkVMLgoKMjAwMC0wNS0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAoc21hbGxfaW5zbl9wKTogVXNlIElOU05fUCgpIHRvIHJlcGxhY2UKCUdFVF9SVFhfQ0xBU1MgKEdFVF9DT0RFICgpKSA9PSAnaScuCgkobGFyZ2VfaW5zbl9wKTogRGl0dG8uCgkobTMycl9pc19pbnNuKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zbiBjb250YWlucwoJYW4gZXhlY3V0YWJsZSBpbnN0cnVjdGlvbi4KCShtMzJyX2FkanVzdF9pbnNuKTogVXNlIG0zMnJfaXNfaW5zbi4KCShtMzJyX3NjaGVkX3Jlb3JkZXIpOiBVc2UgbTMycl9pc19pbnNuLgoJKG0zMnJfc2NoZWRfdmFyaWFibGVfaXNzdWUpOiBVc2UgbTMycl9pc19pbnNuLgoKMjAwMC0wNS0xNiAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc2VsZWN0X3NlY3Rpb24pOiBUcmVhdCBDT05TVFJVQ1RPUiBsaWtlCglWQVJfREVDTC4KCgkqIHJzNjAwMC9zeXN2NC5oIChBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlLgoKCSogcnM2MDAwL3N5c3Y0LmggKENQUF9PU19MSU5VWF9TUEVDKTogRGVmaW5lIF9fdW5peCBhbmQgX19saW51eAoJYWNjb3JkaW5nIHRvIGdpdmVuIG9wdGlvbnMuCgpUdWUgTWF5IDE2IDEyOjE3OjMxIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1uMTAyMDAuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IERvIG5vdCBwcmVmZXIgREFUQV9SRUdTCglpZiBYIGhhcyBWT0lEbW9kZSBlaXRoZXIuCgkoTElNSVRfUkVMT0FEX0NMQVNTKTogU2ltaWxhcmx5LgoKCSogbW4xMDIwMC5tZCAoaW5kaXJlY3RfanVtcCwgdGFibGVqdW1wKTogVXNlICJyZWdpc3Rlcl9vcGVyYW5kIiwKCW5vdCAiZ2VuZXJhbF9vcGVyYW5kIiB0byBtYXRjaCB0aGUgcHJvY2Vzc29yJ3MgY2FwYWJpbGl0aWVzLgoKMjAwMC0wNS0xNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvUkVBRE1FOiAgY29ycmVjdGVkIHJldHVybiBhZGRyZXNzCgkqIGZpeGluYy9jaGVjay5kaWZmOiAgcmVnZW5lcmF0ZSwgbm93IHRoYXQgdGVzdCB3b3JrcwoJKiBmaXhpbmMvZml4Zml4ZXMuYyhmb3JtYXRfZml4LGZvcm1hdF93cml0ZSk6IHJlZm9ybWF0dGVkCgkoY2hhcl9tYWNyb19kZWZfZml4LGNoYXJfbWFjcm9fdXNlX2ZpeCk6IGNvcnJlY3RlZCBhbmQKCXJld3JvdGUgdG8gdXNlIHJlZ2V4IHRvIHBhcnNlIHRoZSB0ZXh0CgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IG1vcmUgdGVzdGluZwoJKiBmaXhpbmMvZml4aW5jbC54OiAgcmVnZW5lcmF0ZWQKCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IGFkZGVkIHNldmVyYWwgInRlc3RfdGV4dCIgYXR0cmlidXRlcwoJY2hhbmdlZCBzZXZlcmFsIGZpeGVzIHRvIHVzZSBgY19maXggPSBmb3JtYXQnCglyZS1hbHBoYWJldGl6ZWQgdGhlIGZpeGVzCgoJKiBmaXhpbmMvY2hlY2suZGlmZjogcmVnZW5lcmF0ZQoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgkqIGZpeGluYy9jaGVjay50cGw6IGFkZGVkIGBzcGFyYycgYW5kIGBuZXRpbmV0JyB0byB0aGUgbGlzdAoJb2YgY3JlYXRlZCBkaXJzCgoKMjAwMC0wNS0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEFTTV9PVVRQVVRfRFdBUkYyX0FERFJfQ09OU1QpOiBSZW1vdmUuCgoyMDAwLTA1LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gZnVsbCBqdW1wIHBhc3MgYmVmb3JlCglmaW5kX2Jhc2ljX2Jsb2NrcyBvZiBmbG93Mi4KCjIwMDAtMDUtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmM6IEZpeCB0eXBvcyBhbmQgY2xhcmlmeSBjb21tZW50YXJ5IGZyb20gbGFzdCBjaGFuZ2UuCgkoYW55X2NvbmRqdW1wX3ApOiBWZXJpZnkgU0VUX1NSQyBpcyBhbiBJRl9USEVOX0VMU0UuCgkoc2FmZV90b19yZW1vdmVfanVtcF9wKTogUmVtb3ZlLgoJKGNvbmRqdW1wX2xhYmVsKTogVXNlIHBjX3NldC4KCjIwMDAtMDUtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pbnNucyk6IERyb3AgVVNFIGFuZCBDTE9CQkVSIGluc25zCgl0aGF0IGdldCBpbiB0aGUgd2F5IGFmdGVyIHJlbG9hZC4KCShjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jayk6IFNraXAgYSBsYWJlbCBoZWFkaW5nIFRIRU4gYmxvY2suCgoyMDAwLTA1LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudF9wb29sKTogQWJvcnQgaW5zdGVhZCBvZiBjb252ZXJ0aW5nCgkoaW1wcm9wZXJseSkgZGVsZXRlZCBsYWJlbHMgdG8gemVyby4KCjIwMDAtMDUtMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZzIpOiBVcGRhdGUgY29tbWVudC4KCShjcHBfbGV4X2xpbmUpOiBObyBzcGVjaWFsIGFzc2VydGlvbiB0cmVhdG1lbnQgZm9yICcoJy4KCSogY3BwbGliLmMgKERJUkVDVElWRV9UQUJMRSk6IFJlbW92ZSBTWU5UQVhfQVNTRVJULgoJKiBjcHBsaWIuaCAoU1lOVEFYX0FTU0VSVCk6IFJlbW92ZS4KCk1vbiBNYXkgMTUgMjE6NDU6MzYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBqdW1wLmMgKGNvbmRqdW1wX3ApOiAgTWFyayBhcyBkZXByZWFjaGVkLgoJKGFueV9jb25kdW1wX3ApOiBOZXcuCgkoYW55X3VuY29uZHVtcF9wKTogTmV3LgoJKHBjX3NldCk6IE5ldy4KCShzYWZlX3RvX3JlbW92ZV9qdW1wX3ApOiBOZXcuCgkqIHJ0bC5oIChhbnlfY29uZHVtcF9wLCBhbnlfdW5jb25kanVtcF9wLCBwY19zZXQKCXNhZmVfdG9fcmVtb3ZlX2p1bXBfcCk6IERlY2xhcmUuCgpNb24gTWF5IDE1IDIxOjA3OjIwIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYzogUmUtaW5zdGFsbCBib3RoIHBhdGNoZXMgcmV2ZXJ0ZWQgYnkgbGFzdCBwYXRjaC4KCShzdHJ1Y3QgYXJnX2RhdGEpOiBOZXcgZmllbGQgdGFpbF9jYWxsX3JlZy4KCShpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogSW5pdGlhbGl6ZSB0YWlsX2NhbGxfcmVnCgkobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogTmV3IGFyZ3VtZW50IGZsYWdzLCB1c2UKCXRhaWxfY2FsbF9yZWcgd2hlbiBlbWl0aW5nIHRhaWwgY2FsbCBzZXF1ZW5jZS4KCShleHBhbmRfY2FsbCk6IFVwZGF0ZSBjYWxsIG9mIGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVyczsKCWNvcHkgdW5hZGp1c3RlZF9hcmdzX3NpemUgdG8gYWRqdXN0ZWRfYXJnc19zaXplLgoKTW9uIE1heSAxNSAxOTowMTo0MiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoc2Nhbl9sb29wLCBzdHJlbmd0aF9yZWR1Y2UsIGxvb3Bfb3B0aW1pemUpOiBDaGFuZ2UgdW5yb2xsX3AKCWFuZCBiY3RfcCBwYXJhbWV0ZXJzIHRvIGZsYWdzLgoJKiBsb29wLmggKExPT1BfVU5ST0xMLCBMT09QX0JDVCk6IE5ldyBjb25zdGFudHMuCgkqIHJ0bC5oIChsb29wX29wdGltaXplKTogVXBkYXRlIHByb3RvdHlwZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBVcGRhdGUgY2FsbCBvZiBsb29wX29wdGltaXplLgoKMjAwMC0wNS0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IE1vdmUgZXhwYW5kX3N0YXJ0X3RhcmdldF90ZW1wcyBjYWxsIGFmdGVyCglzdGFydF9zZXF1ZW5jZSgpLgoKMjAwMC0wNS0xNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmMgKHRyYWRfc3RyaW5naWZ5LCB3YXJuX3RyYWRfc3RyaW5naWZ5LAoJY29sbGVjdF9wYXJhbXMpOiBNYWtlIHNvbWUgcG9pbnRlcnMgcG9pbnRlcnMgdG8gY29uc3QuCgkqIGNwcGxleC5jIChhdXRvX2V4cGFuZF9uYW1lX3NwYWNlKSBHdWFyYW50ZWVkIHRvIGFsd2F5cwoJZXhwYW5kIGJ5IGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIuCgkoU1BFTExfQ0hBUiwgU1BFTExfTk9ORSk6IFRlbXBvcmFyaWx5IHJldmVyc2Ugb3JkZXIuCgkoc3RydWN0IHRva2VuX3NwZWxsaW5nKTogVXNlIGNvbnN0IFVfQ0hBUiAqIHJhdGhlciB0aGFuIFBUUi4KCShleHBhbmRfbmFtZV9zcGFjZSk6IEZpeCB1cCB0b2tlbiBwb2ludGVycyBpZiBuYW1lIHNwYWNlCglpcyBtb3ZlZCB3aGVuIGV4cGFuZGluZy4KCShJTklUX05BTUUsIGNwcF9zY2FuX2xpbmUsIHBhcnNlX25hbWUsIHBhcnNlX251bWJlciwKCXBhcnNlX3N0cmluZzIsIHNhdmVfY29tbWVudCwgc3BlbGxfdG9rZW4sIGNwcF9vdXRwdXRfbGlzdCk6CglVcGRhdGUgc28gdGhlIHJvdXRpbmVzIGhhbmRsZSB0b2tlbnMgd2l0aCBhIGRpcmVjdCBwb2ludGVyIHRvCgl0aGVpciB0ZXh0LCByYXRoZXIgdGhhbiBhbiBvZmZzZXQgaW50byB0aGUgdG9rZW4ncyBsaXN0J3MgbmFtZWJ1Zi4KCShfY3BwX2xleF9saW5lKTogUmVhcnJhbmdlIGZvciBjbGFyaXR5LgoKCSogY3BwbGliLmMgKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogU2ltaWxhcmx5LgoJKGRvX2RlZmluZSk6IE1ha2UgU1lNIGEgcG9pbnRlciB0byBjb25zdC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfbmFtZSk6IFJlcGxhY2Ugb2Zmc2V0IHdpdGggZGlyZWN0IHBvaW50ZXIuCgkoQ1BQX0lOVCwgQ1BQX0ZMT0FUKTogU3BlbGxpbmcgdHlwZSBzaG91bGQgYmUgU1BFTExfSURFTlQuCgkoVE9LX09GRlNFVCk6IERlbGV0ZS4KCShUT0tfTkFNRSk6IFVwZGF0ZS4KCjIwMDAtMDUtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJFVFVSTl9BRERSRVNTX09GRlNFVCk6IENvcnJlY3QgZm9yCgk2NC1iaXQgQUJJLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobG9naWNhbF9vcGVyYW5kKTogUmV3cml0ZSB0byB0YWtlIE1PREUKCWludG8gYWNjb3VudC4KCShsb2dpY2FsX3Vfb3BlcmFuZCk6IERlbGV0ZS4KCShub25fbG9naWNhbF9jaW50X29wZXJhbmQpOiBSZXdyaXRlIHRvIHRha2UgTU9ERSBpbnRvIGFjY291bnQuCgkobm9uX2xvZ2ljYWxfdV9jaW50X29wZXJhbmQpOiBEZWxldGUuCgkoYm9vbGVhbl9vcGVyYXRvcik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogQWRkIG5ldyAlcSBvcGVyYW5kLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgYm9vbGVhbl9vcGVyYXRvciwKCXJlbW92ZSBsb2dpY2FsX3Vfb3BlcmFuZCBhbmQgbm9uX2xvZ2ljYWxfdV9jaW50X29wZXJhbmQsCgl1cGRhdGUgbG9naWNhbF9vcGVyYW5kIGFuZCBub25fbG9naWNhbF9jaW50X29wZXJhbmQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBSZXdyaXRlIHRoZSBwYXR0ZXJucyBmb3IgcGVyZm9ybWluZwoJbG9naWNhbCBvcGVyYXRpb25zIHRvIHVzZSAlcS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaSk6IERvbid0IG1vZGlmeSBSVEwgaW4tcGxhY2UuCgkobW92ZGkpOiBNYWtlIHNpbWlsYXIgdG8gbW92c2kuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1ApOiBUaGVyZQoJaXMgbm8gc3VjaCB0aGluZyBhcyBhIERJbW9kZSBDT05TVF9ET1VCTEUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF90b2MpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF9jYnJhbmNoKTogRG9uJ3Qgb3V0cHV0IHByZWRpY3Rpb24KCWNvZGVzIHdoZW4gb2xkIG1uZW1vbmljcyBhcmUgaW4gdXNlLiAgUHJpbnQgcmVnaXN0ZXIgbmFtZXMKCWZvciBjYyByZWdpc3RlcnMgd2hlbiByZXF1ZXN0ZWQuCgoJKiBvcHRhYnMuYyAoZXhwYW5kX2Zsb2F0KTogRG9uJ3QgYWxsb3cgbW9kZSB3aWRlbmluZyB0aGF0IGNhdXNlcwoJZG91YmxlIHJvdW5kaW5nLgoKCSogaW52b2tlLnRleGkgKFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucyk6IFVwZGF0ZSAtbTY0Ly1tMzIKCWZsYWdzIHRvIHRoZWlyIGN1cnJlbnQgbmFtZXMgLW1haXg2NCBhbmQgLW1haXgzMi4KCjIwMDAtMDUtMTQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMod3JhcF9maXgpOiBuZXcgZml4IC0gaW5zZXJ0cyB0ZXh0IGJlZm9yZQoJYW5kL29yIGFmdGVyIGN1cnJlbnQgdGV4dCBvZiBmaWxlCgkqIGZpeGluYy9maXhsaWIuYyhtdXN0X21hbGxvYyk6CgkqIGZpeGluYy9maXhsaWIuaChtdXN0X21hbGxvYyk6ICsgcmVmb3JtYXR0aW5nCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IHJlcGxhY2UgdGhlICIxaSIgYW5kICIkYSIgc2VkIGNvbW1hbmRzCgl3aXRoIHVzYWdlcyBvZiBgYGNfZml4ID0gd3JhcDsnJwoJQWRkIHNldmVyYWwgdGVzdHMgYW5kIHVzZSB0aGUgYGBjX2ZpeCA9IGZvcm1hdCcnIGZpeGVyIG1vcmUuCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuCgkqIGZpeGluYy9jaGVjay5kaWZmOiByZWdlbgoJKiBmaXhpbmMvY2hlY2sudHBsOiBlbWl0IHRoZSBhc3NvY2lhdGVkIGhlYWRlciB3aXRoIHRoZSBtaXNzaW5nCgl0ZXN0IG1lc3NhZ2UKClN1biBNYXkgMTQgMTc6NTg6NTkgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBta2xpYmdjYy5pbiAoYnVpbGRpbmcgbGliZ2NjMSkgW1hsaWJnY2MxLmFdOiBEbyBub3QgdXNlIHVuc2V0Cgl2YXJpYWJsZXMgJHNyYyBhbmQgJGRzdC4KCjIwMDAtMDUtMTMgIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5oIChESUFHTk9TVElDU19TSE9XX1BSRUZJWF9PTkNFKTogTmV3IG1hY3JvLgoJKERJQUdOT1NUSUNTX1NIT1dfUFJFRklYX05FVkVSKTogTGlrZXdpc2UuCgkoRElBR05PU1RJQ1NfU0hPV19QUkVGSVhfRVZFUllfTElORSk6IExpa2V3aXNlLgoJKHN0cnVjdCBvdXRwdXRfYnVmZmVyOiBlbWl0dGVkX3ByZWZpeF9wLCBwcmVmaXhpbmdfcnVsZSk6IE5ldwoJZmllbGRzLgoJKHNldF9tZXNzYWdlX3ByZWZpeGluZ19ydWxlKTogRGVjbGFyZS4KCgkqIGRpYWdub3N0aWMuYzogKGN1cnJlbnRfcHJlZml4aW5nX3J1bGUpOiBOZXcgdmFyaWFibGUuCgkoc2V0X21lc3NhZ2VfcHJlZml4aW5nX3J1bGUpOiBEZWZpbmUuCgkob3V0cHV0X3NldF9wcmVmaXgpOiBBZGp1c3QgYnVmZmVyLT5lbWl0dGVkX3ByZWZpeF9wLgoJKGluaXRfb3V0cHV0X2J1ZmZlcik6IEFkanVzdCBJbml0aWFsaXphdGlvbi4KCShvdXRwdXRfZW1pdF9wcmVmaXgpOiBSZXdyaXRlLiAgVGFrZSBwcmVmaXhpbmcgcnVsZXMgaW50byBhY2NvdW50LgoKU2F0IE1heSAxMyAxMTowNTo0NyAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBEbyBub3QgZnJlZSBOVUxMLgoKMjAwMC0wNS0xMiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogZ3Roci1kY2UuaDogQWRkIHN1cHBvcnQgZm9yIGxpYm9iamMuCgkqIGd0aHItcG9zaXguaDogTGlrZXdpc2UuCgkqIGd0aHItc29sYXJpcy5oOiBMaWtld2lzZS4KCSogZ3Roci12eHdvcmtzLmg6IExpa2V3aXNlLgoJKiBndGhyLXNpbmdsZS5oOiBMaWtld2lzZS4KCSogZ3Roci13aW4zMi5oOiBMaWtld2lzZS4KCjIwMDAtMDUtMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLmMgKGZyMzBfbW92ZV9kb3VibGUpOiBOZXcgZnVuY3Rpb246ICBFbWl0IGNvZGUKCXRvIG1vdmUgYSBkb3VibGUgd29yZCB2YWx1ZS4KCShkaV9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBzdWl0YmFsZQoJZm9yIGEgZG91YmxlIHdvcmQgbW92ZSBvcGVyYXRpb24uCgkobm9uaW1tZWRpYXRlX2RpX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZQoJb3BlcmFuZCBpcyBhIERJbW9kZSByZWdpc3RlciBvciBNRU0uCgoJKiBjb25maWcvZnIzMC9mcjMwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBkaV9vcGVyYW5kIGFuZAoJbm9uaW1tZWRpYXRlX2RpX29wZXJhbmQuCgoJKiBjb25maWcvZnIzMC9mcjMwLXByb3Rvcy5oIEFkZCBmcjMwX21vdmVfZG91YmxlLCBkaV9vcGVyYW5kLCBhbmQKCW5vbmltbWVkaWF0ZV9kaV9vcGVyYW5kLgoKCSogY29uZmlnL2ZyMzAvZnIzMC5tZCAobW92ZGkpOiBOZXcgcGF0dGVybi4gIFJlcXVpcmVkIGJlY2F1c2UKCW90aGVyIHBhdHRlcm5zIGdlbmVyYXRlIERJbW9kZSByZXN1bHRzLgoJKG1vdmRpX2luc24pOiBOZXcgcGF0dGVybi4KCjIwMDAtMDUtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc3RydWN0IHNoYWRvd19zdW1tYXJ5KTogRGVmaW5lCgliaXRmaWVsZHMgYXMgdHlwZSB1bnNpZ25lZCBpbnQuCgpTYXQgTWF5IDEzIDAwOjA5OjU5IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL3QtYXZyOiBBZGRlZCBkZWZpbml0aW9uIG9mIEZMT0FUIHdoaWxlIGdlbmVyYXRlcwoJZnAtYml0LmMKCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBgTkVYVF9JTlNOIChpbnNuKScgc3Vic3RpdHV0ZWQgdG8gYGluc24nIGluCglwZWVwaG9sZXMgZm9yIHRzdCtqdW1wID0gc2Jycy9zYnJjIG9wdGltaXphdGlvbi4KCkZyeSBNYXkgMTIgMjA6MDM6MDAgQ0VTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKGVtaXRfcHVzaF9pbnNuKTogRG8gbm90IGFkanVzdCBzdGFjayBwb2ludGVyIHdoZW4KCXByZWFsbG9jYXRpbmcuCgpGcmkgTWF5IDEyIDE5OjAzOjU4IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogZ2djLXNpbXBsZS5jIChvZmZzZXRvZik6IE1hY3JvIGZhbGxiYWNrIGRlZmluaXRpb24gbW92ZWQgZnJvbSBoZXJlIC4uCgkqIHN5c3RlbS5oIChvZmZzZXRvZik6IC4uLiB0byBoZXJlLgoKMjAwMC0wNS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChmaW5hbC5vKTogRGVwZW5kIG9uIEJBU0lDX0JMT0NLX0guCgkqIGZpbmFsLmMgKGZpbmFsX2VuZF9mdW5jdGlvbik6IFVzZSBhcHBfZGlzYWJsZS4gIFJlYXJyYW5nZSBub3RlCgloYW5kbGluZyBpbnRvIGEgc3dpdGNoLiAgRW1pdCBkZWxldGVkIGxhYmVscy4KCShvdXRwdXRfYXNtX2xhYmVsKTogR2VuZXJhdGUgbGFiZWwgc3RyaW5ncyBmb3IgZGVsZXRlZCBsYWJlbHMuCgkqIGZsb3cuYyAodGFpbF9yZWN1cnNpb25fbGFiZWxfbGlzdCk6IE5ldy4KCShmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogU2V0IGxhYmVsX3ZhbHVlX2xpc3QgZGlyZWN0bHkuICBDb2xsZWN0IGxpc3QKCW9mIHRhaWwgcmVjdXJzaW9uIGxhYmVscyBmcm9tIGNhbGxfcGxhY2Vob2xkZXJzLiAgRG9uJ3QgYWRkIGRlbGV0ZWQKCWxhYmVscyB0byB0aGUgbGFiZWwgdmFsdWUgbGlzdC4KCShjbGVhbnVwX2NmZyk6IFVzZSBmcmVlX0VYUFJfTElTVF9saXN0LgoJKGZsb3dfZGVsZXRlX2luc25fY2hhaW4pOiBUdXJuIG5vbi1yZW1vdmFibGUgbGFiZWxzIGludG8gbm90ZXMuCgkoZmxvd19kZWxldGVfYmxvY2spOiBEb24ndCBkaXNhYmxlIGRlbGV0aW5nIHRoZSBibG9jayBiZWNhdXNlIG9mCglhIG5vbi1yZW1vdmFibGUgbGFiZWwuCgkodGFpbF9yZWN1cnNpb25fbGFiZWxfcCk6IE5ldy4KCShtZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzKTogRG9uJ3QgZGlzYWJsZSB0aGUgbWVyZ2UKCWJlY2F1c2Ugb2YgYSBsYWJlbC4KCShtZXJnZV9ibG9ja3NfbW92ZV9zdWNjZXNzb3Jfbm9qdW1wcyk6IExpa2V3aXNlLiAgQWxzbyBtb3ZlIGEKCWp1bXAgdGFibGUuCgkobWVyZ2VfYmxvY2tzKTogRGlzYWJsZSBhIG1lcmdlIGJlY2F1c2Ugb2YgdGFpbCByZWN1cnNpb24gbGFiZWxzLgoJKiBpZmN2dC5jIChtZXJnZV9pZl9ibG9jayk6IERvbid0IGRpc2FibGUgYSBtZXJnZSBiZWNhdXNlIG9mIGEgbGFiZWwuCglVc2UgYSBtb3JlIGFjY3VyYXRlIG1lYXN1cmUgb2Ygbm90IG1lcmdpbmcgdGhlIGpvaW4gYmxvY2suCgkoZmluZF9pZl9ibG9jayk6IERvbid0IGRpc2FibGUgY29udmVyc2lvbiBiZWNhdXNlIG9mIGEgbGFiZWwuCgkoZmluZF9pZl9jYXNlXzEsIGZpbmRfaWZfY2FzZV8yKTogTGlrZXdpc2UuCgkqIGp1bXAuYyAoZHVwbGljYXRlX2xvb3BfZXhpdF90ZXN0KTogUHJlc2VydmUgdGhlIGtpbmQgb2YgbGlzdAoJZWxlbWVudCB3aGVuIGNvcHlpbmcuCgkoc3F1ZWV6ZV9ub3Rlcyk6IEFsc28gbGVhdmUgRUggbm90ZXMuCgkobWFya19qdW1wX2xhYmVsKTogSWdub3JlIGRlbGV0ZWQgbGFiZWxzLiAgVXNlIGFuIElOU05fTElTVCBmb3IKCVJFR19MQUJFTCBub3Rlcy4KCShkZWxldGVfaW5zbik6IFByZXNlcnZlIExBQkVMX05BTUUgaW4gTk9URV9TT1VSQ0VfRklMRSB3aGVuCglkZWxldGluZyBhIGxhYmVsLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogUHJpbnQgTk9URV9TT1VSQ0VfRklMRSBmb3IKCU5PVEVfSU5TTl9ERUxFVEVEX0xBQkVMLiAgUHJpbnQgYFsjIGRlbGV0ZWRdJyBmb3IgYSBsYWJlbF9yZWYKCXJlZmVycmluZyB0byBhIGRlbGV0ZWQgbGFiZWwuICBDb252ZXJ0IHRhaWwgaGFuZGxpbmcgdG8gYSBzd2l0Y2guCgkqIHJ0bC5kZWYgKENPREVfTEFCRUwpOiBSZWFycmFuZ2UgZWxlbWVudHMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIE5PVEUKCWZvciBOT1RFX0lOU05fREVMRVRFRF9MQUJFTC4KCShOT1RFKTogRml4IGNvbW1lbnRhcnkuCgkqIHJ0bC5oIChSRUdfTEFCRUwpOiBVcGRhdGUgY29tbWVudGFyeSB3cnQgSU5TTl9MSVNULgoJKFJFR19DQ19TRVRURVIsIFJFR19DQ19VU0VSLCBSRUdfTElCQ0FMTCk6IExpa2V3aXNlLgoJKENPREVfTEFCRUxfTlVNQkVSLCBMQUJFTF9OQU1FKTogVXBkYXRlIGluZGV4LgoJKExBQkVMX05VU0VTLCBMQUJFTF9SRUZTKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IERvbid0IGNvcHkgTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgoyMDAwLTA1LTEyICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jKGZvcm1hdF93cml0ZSk6IGJ1Z2xldCAmIHJlbGF4ZWQgcnVsZXMKCSogZml4aW5jL2NoZWNrLmRpZmY6IHVwZGF0ZWQKCSogZml4aW5jL2luY2xoYWNrLmRlZjogY29ycmVjdGVkICYgYWRkZWQgc29tZSB0ZXN0X3RleHQtcwoJKiBmaXhpbmMvZ2VuZml4ZXM6IHJlbW92ZWQgdW5uZWVkZWQgb3B0aW9ucyB0byBhdXRvZ2VuIGludm9jYXRpb24KCSogZml4aW5jL2ZpeGluY2wudHBsOiBTcGVjaWZpZWQgdGhlIG91dHB1dCBmaWxlCgkqIGZpeGluYy9maXhmaXhlcy5jOiB2aXN1YWwgYXBwZWFyYW5jZQoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgoyMDAwLTA1LTEyICBaYWNrIFdlaW5iZXJnIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChJT191c2VfZml4LCBJT19kZWZuX2ZpeCwgQ1RSTF91c2VfZml4LAoJQ1RSTF9kZWZuX2ZpeCk6IERlbGV0ZS4KCShmaXhfY2hhcl9tYWNyb19kZWZpbmVzLCBmaXhfY2hhcl9tYWNyb191c2VzKTogUmVuYW1lIHRvCgljaGFyX21hY3JvX2RlZl9maXggYW5kIGNoYXJfbWFjcm9fdXNlX2ZpeCwgcmVzcGVjdGl2ZWx5LiAgUHV0Cgl0aGVtIGludG8gdGhlIEZJWFVQX1RBQkxFLiAgR2V0IHRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvciBmcm9tCglhIGNfZml4X2FyZy4KCgkoZm9ybWF0X3dyaXRlKTogTmV3IGZ1bmN0aW9uLgoJKGZvcm1hdF9maXgpOiBVc2UgaXQuCgoJKEZJWF9QUk9DX0hFQUQpOiBDb25zdGlmeSB0ZXh0IHBhcmFtZXRlci4KCShtYWNoaW5lX25hbWVfZml4KTogQ29uc3RpZnkgYWxsIGNoYXIgKnMuCgkqIGZpeHRlc3RzLmMgKHNraXBfcXVvdGUpOiBSZW1vdmUgZG91YmxlIHN0YXRpYy4KCgkqIGluY2xoYWNrLmRlZiAoaW9fZGVmX3F1b3RlcywgaW9fdXNlX3F1b3RlcywgY3RybF9kZWZfcXVvdGVzLAoJY3RybF91c2VfcXVvdGVzKTogVXBkYXRlIGZvciBuZXcgc2NoZW1lLgoJKiBmaXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogUmVkZWZpbmUgYXMKCURXQVJGMl9ERUJVRy4KCShEV0FSRjJfQVNNX0xJTkVfREVCVUdfSU5GTyk6IERlZmluZS4KCShBU01fT1VUUFVUX0RXQVJGMl9BRERSX0NPTlNUKTogRGVmaW5lLgoKMjAwMC0wNS0xMSAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGhwdXg4X2JvZ3VzX2lubGluZXMpOiBEZWxldGUgYnlwYXNzIGZvciBTQ08uCgkqIGZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jOiBSZXZlcnQgYm90aCAwNS0wOSBwYXRjaGVzLgoKMjAwMC0wNS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKHByaW50X29wZXJhbmQpOiBQcmludCBGUCBjb25zdGFudHMgaW4KCWhleGFkZWNpbWFsLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZzZiwgbW92ZGYpOiBVc2UgdGhlIGBGJyBjb25zdHJhaW50Cglmb3IgRlAgdmFsdWVzLgoKCSogbWtsaWJnY2MuaW4gKEVRKTogRGVmaW5lIGl0IHRvIGFuIGVxdWFsIHNpZ24gaW4gdGhlIE1ha2VmaWxlLAoJYW5kIHJlcGxhY2UgYW55IG9jY3VycmVuY2VzIG9mIGA9JyBpbiBtdWx0aWxpYiBkaXJzIHdpdGggYCQoRVEpJy4KCjIwMDAtMDUtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZml4aW5jL2ZpeGluY2wuYyAocnVuX2NvbXBpbGVzKTogRG9uJ3QgY3Jhc2ggb24gbnVsbCBwel9tYWNoaW5lLgoKMjAwMC0wNS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMsIGZpeGluYy9maXh0ZXN0cy5jOiBVcGRhdGUgY29tbWVudGFyeS4KClRodSBNYXkgMTEgMjI6Mjg6MDUgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5jIChqdW1wX292ZXJfb25lX2luc25fcCk6IE5ldyBkZWNsYXJhdGlvbi4KCSogY29uZmlnL2F2ci9hdnIuYyAoanVtcF9vdmVyX29uZV9pbnNuX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBOZXcgcGVlcGhvbGVzIGFkZGVkLiBPdXRwdXQgdGVzdCBhbmQKCWNvbmRpdGlvbmFsIGp1bXAgdG8gInNicmMiIG9yICJzYnJzIiBjb21tYW5kLgoKMjAwMC0wNS0xMSAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNwcG1haW4uYyAobWFpbik6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoKMjAwMC0wNS0xMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoZmluZF9leGNlcHRpb25faGFuZGxlcl9sYWJlbHNfMSk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX2V4Y2VwdGlvbl9oYW5kbGVyX2xhYmVscyk6IFNwbGl0IGludG8gdHdvIGZ1bmN0aW9ucywgZGl2ZQoJaW50byBDQUxMX1BMQUNFSE9MREVScyB3aGVuIGxvb2tpbmcgZm9yIGV4Y2VwdGlvbiBoYW5kbGVyIGxhYmVscy4KCjIwMDAtMDUtMTEgU3RhbiBDb3ggPHNjb3hAY3lnbnVzLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChyZXBsYWNlX3JlZ19pbl9ibG9jayk6IEltcHJvdmUgUkVHX0RFQUQgaGFuZGxpbmcuCgkqIHRpbWV2YXIuZGVmIChUVl9SRU5BTUVfUkVHSVNURVJTKTogTW92ZSBiZWZvcmUgVFZfU0NIRUQyLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgcmVncmVuYW1lX29wdGltaXplIGJlZm9yZSBzY2hlZDIuCgoyMDAwLTA1LTExICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChkb3VibGVfc2xhc2hfZml4KTogIG9ic29sZXRlCgkoZWxzZV9lbmRpZl9sYWJlbF9maXgpOiBvYnNvbGV0ZQoJKGZvcm1hdF9maXgpOiAgbmV3LCB1bnVzZWQgYXMgeWV0CgkobWFpbik6IG9ic29sZXRlCgkqIGZpeGluYy9maXhsaWIuaDogYWRkZWQgZml4IGRlc2NyaXB0aW9uIHN0cnVjdCBmb3IgdXNlIGJ5IGZvcm1hdF9maXgKCSogZml4aW5jL2ZpeGluY2wuYzogcmVtb3ZlZCB0aGUgc3RydWN0ICYgdGVzdCBmb3IgU0lHSU9UIGJlZnVyZSB1c2luZwoJKiBmaXhpbmMvTWFrZWZpbGUuaW46ICBjb21waWxlIGZpeGZpeGVzLmMgYW5kIGZpeHRlc3RzLmMgYXMgc2VwYXJhdGUKCW1vZHVsZXMuICBSZW1vdmVkIHRoZSB2ZXN0aWdlcyBvZiB0aGUgc2NyaXB0IHZlcnNpb24uCglBZGRlZCBzdXBwb3J0IGZvciAibWFrZSBjaGVjayIuCgkqIGZpeGluYy9jaGVjay5kaWZmOiBiYXNlIGRpZmYgZmlsZSAobmVlZHMgd29yayEhKQoJKiBmaXhpbmMvY2hlY2sudHBsOiBxdWlldCB0aGUgZml4dXAgb3V0cHV0CgkqIGZpeGluYy9maXh0ZXN0cy5jIChtYWluKTogb2Jzb2xldGUKCSogZml4aW5jL2ZpeGluY2wuc2g6ICBkb24ndCBib3RoZXIgY29weWluZyBmaXhpbmNsIHRvIC4uCgkqIGZpeGluYy9maXhpbmNsLnRwbDogIHByb3ZpZGUgZm9yIGFyZ3VtZW50cyB0byBjX2ZpeCByb3V0aW5lcwoKVGh1IE1heSAxMSAxMTo1NzowMiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSZW1vdmUgZGVhZCBjb2RlIGFmdGVyCgljb21iaW5lLgoKMjAwMC0wNS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2Z1bmxpa2VfZXhwYW5zaW9uKTogTWFrZSAiIyBpcyBub3QKCWZvbGxvd2VkIGJ5IGEgbWFjcm8gYXJndW1lbnQgbmFtZSIgYSBwZWR3YXJuLCBub3QgYW4gZXJyb3IuCglQcmVzZXJ2ZSB0aGUgIyBpbiB0aGUgb3V0cHV0LiAgU3VwcHJlc3MgdGhlIHdhcm5pbmcgaWYgbGFuZ19hc20uCgpUaHUgTWF5IDExIDAxOjE5OjMxIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbiAoaHBwYSo2NCotKi1ocHV4MTEqKTogTmV3IHRhcmdldCBmb3IgUEE2NCBzdXBwb3J0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA1LTEwIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogaTM4Ni94bS1kamdwcC5oIChYUkVGX0ZJTEVfTkFNRSk6IEFkZCBtaXNpbmcgYnJhY2UuCgoyMDAwLTA1LTEwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBGaXggYSB0eXBvLgoKV2VkIE1heSAxMCAyMTozMTo0NCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChpbnN2KTogQWRkIGNvbW1lbnQuCgoyMDAwLTA1LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5hLCBzdG1wLW11bHRpbGliKTogRGVwZW5kIG9uIEZQQklUIGFuZCBEUEJJVC4KCSogbWtsaWJnY2MuaW46IFJld3JpdGUgdG8gbm90IHVzZSBmdW5jdGlvbnMuICBEb24ndCBzaG9ydGN1dAoJZGVwZW5kZW5jaWVzIG9uIEZQQklUIGFuZCBEUEJJVC4KCjIwMDAtMDUtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGZpbmRfYXV0b19pbmMpOiBEbyBub3QgYmlhcyBSRUdfTl9SRUZTIGJ5IGxvb3BfZGVwdGgKCXdoZW4gb3B0aW1pc2luZyBmb3Igc2l6ZS4KCShtYXJrX3VzZWRfcmVnczopIERpdHRvLgoJKHRyeV9wcmVfaW5jcmVtZW50XzEpOiBEaXR0by4KCjIwMDAtMDUtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jIChsZXgpOiBVc2UgJS4qcyB0byBwcmludCBub24tTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgoJTWFrZSBlcnJvciBtZXNzYWdlIGZyaWVuZGxpZXIuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBoYXNobm9kZSk6IFVzZSBzdHJ1Y3QgaGFjayBmb3IgbmFtZQoJbWVtYmVyLgoJKiBjcHBoYXNoLmMgKHN0cnVjdCBoYXNoZHVtbXkpOiBOZXcuCgkoZXFfSEFTSE5PREUpOiBTZWNvbmQgYXJndW1lbnQgaXMgYSBoYXNoZHVtbXksIG5vdCBhIEhBU0hOT0RFLgoJKG1ha2VfSEFTSE5PREUpOiBObyBuZWVkIHRvIHNldCAtPm5hbWUgcG9pbnRlci4gIENvcnJlY3QKCXNldHRpbmcgb2YgcC4KCShjcHBfbG9va3VwKTogTWFrZSAnZHVtbXknIGEgc3RydWN0IGhhc2hkdW1teS4gIFRpZHkgdXAgYSBiaXQuCgoyMDAwLTA1LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogUmVtb3ZlIGFueSBzcGFyZSBiYl9ub3RlCglhZnRlciBjb21wbGV0aW9uLgoKMjAwMC0wNS0xMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6ICByZWdfc3ludGF4X3QgcmVfc3ludGF4X29wdGlvbnMgbXVzdCBiZSBzdGF0aWMKCjIwMDAtMDUtMTAgIEVyaWMgU2Nod2VpdHogIDxzY2h3ZWl0ekBub3J0ZWxuZXR3b3Jrcy5jb20+CgoJKiBkd2FyZm91dC5jIChkd2FyZm91dF9maW5pc2gpOiBDYWxsIHJldHJ5X2luY29tcGxldGVfdHlwZXMKCWFmdGVyIHdlIGVudGVyIC5kZWJ1Zy4KCjIwMDAtMDUtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9zdWJwcm9ncmFtX2RpZSk6IEZpeHVwIGRpZV9wYXJlbnQgZm9yIHRoZQoJYWJzdHJhY3QgaW5zdGFuY2Ugb2YgYSBuZXN0ZWQgaW5saW5lIGZ1bmN0aW9uLgoKCSogc3Rvci1sYXlvdXQuYyAoZmluaXNoX3JlY29yZF9sYXlvdXQpOiBmaW5hbGl6ZV90eXBlX3NpemUKCWJlZm9yZSBsYXlpbmcgb3V0IHRoZSBwZW5kaW5nX3N0YXRpY3MuCgpXZWQgMTAgTWF5IDA5OjM2OjQ3IDIwMDAgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHNwZWxsX3Rva2VuKTogTmV3IGZ1bmN0aW9uLgoJKHNwZWxsX3N0cmluZywgc3BlbGxfY29tbWVudCwgc3BlbGxfbmFtZSk6IGZvbGQgaW50bwoJc3BlbGxfdG9rZW4uCgkoSSwgUyk6IEFkZCBtYWNyb3MuCgkoRSwgSCk6IFJlbW92ZSBtYWNyb3MuCgkoc2F2ZV9jb21tZW50KTogU2F2ZSBjb21tZW50IG9wZW5pbmcgY2hhcmFjdGVycyB0b28uCgkoX2NwcF9sZXhfZmlsZSk6IFVwZGF0ZSB0byB1c2Ugc3BlbGxfdG9rZW4uICBUaWR5IHVwIGNvbW1lbnQKCWhhbmRsaW5nLgoJKiBjcHBsaWIuaCAoSSwgUyk6IEFkZCBtYWNyb3MuCgkoRSwgSCk6IFJlbW92ZSBtYWNyb3MuCgkoVFRZUEVfVEFCTEUpOiBVcGRhdGUgZW50cmllcyBmb3IgbmV3IHNwZWxsZXIuCgkoU1lOVEFYX0FTU0VSVCk6IFJlbW92ZS4KCldlZCAxMCBNYXkgMDk6MDg6MzAgMjAwMCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfbGluZSk6IE1haW50YWluIFBSRVZfV0hJVEVTUEFDRSBmbGFnCgl3aGVuIHJlbW92aW5nIGVzY2FwZWQgbmV3bGluZXMuICBSZXZlcnNlIHNlbnNlIG9mIHRlc3QgZm9yCgllc2NhcGVkIG5ld2xpbmUuCgoyMDAwLTA1LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogRG8gbm90IGRlbGV0ZSB0aGUgZmlyc3QKCWJiX25vdGUgd2UgcnVuIGFjcm9zcy4KCShjcmVhdGVfYmFzaWNfYmxvY2spOiBVc2UgcmVvcmRlcl9pbnNucyB0byBtb3ZlIGFuIGV4aXN0aW5nCgliYl9ub3RlIHRvIHRoZSBjb3JyZWN0IHBsYWNlLgoKMjAwMC0wNS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogSW5jcmVtZW50IGN1cnJlbnRseV9leHBhbmRpbmdfY2FsbAoJYmVmb3JlIGNhbGxpbmcgb3B0aW1pemVfdGFpbF9yZWN1cnNpb24uCgpUdWUgTWF5ICA5IDE4OjU0OjE2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogRml4IGVycm9ycyBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMDUtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5jICh1c2VkX2FyZyk6IFNraXAgb3ZlciBhIHNlbWljb2xvbiBhdCB0aGUgZW5kIG9mIHRoZQoJc3BsaXQtdXAgbG9vcDsgZG9uJ3QgYnJlYWsgb3V0IG9mIGl0LgoKCSogTWFrZWZpbGUuaW4gKFdBUk5fQ0ZMQUdTKTogQWRkIC1Xd3JpdGUtc3RyaW5ncy4KCSh0cmVlLm8pOiBEZXBlbmQgb24gb3V0cHV0LmguCgoJKiBjLWRlY2wuYyAocGVuZGluZ19pbnZhbGlkX3hyZWZfZmlsZSwKCWN1cnJlbnRfZnVuY3Rpb25fcHJvdG90eXBlX2ZpbGUpOiBDb25zdGlmeS4KCShwdXNoZGVjbCk6IENvbnN0aWZ5IGEgbG9jYWwgY2hhciAqLgoJKGRlZmluZV9sYWJlbCk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogYy1sZXguYyAoaW5pdF9wYXJzZSk6IENvbnN0aWZ5IHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlLgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIuCgkqIGMtdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogYy1wYXJzZS5pbjogQ29uc3RpZnkgZmlsZW5hbWUgbWVtYmVyIG9mICV1bmlvbiwgYW5kIGlmX3N0bXRfZmlsZS4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIGMtcGFyc2UuaCwgb2JqYy9vYmpjLXBhcnNlLnksCglvYmpjL29iamMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCgkqIGR3YXJmb3V0LmMgKGR3YXJmb3V0X2luaXQpOiBDb25zdGlmeSBtYWluX2lucHV0X2ZpbGVuYW1lIHBhcmFtZXRlci4KCSogZHdhcmZvdXQuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBDb25zdGlmeSBhIGxvY2FsIGNoYXIgKi4KCSogZmxhZ3MuaDogQ29uc3RpZnkgbWFpbl9pbnB1dF9maWxlbmFtZS4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogZ2VucmVjb2cuYyAobWFrZV9pbnNuX3NlcXVlbmNlKTogVXNlIGEgY2hhcmFjdGVyIGFycmF5IGZvcgoJY190ZXN0X3Bvcy4KCShtYWluKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkqIGlucHV0Lmg6IENvbnN0aWZ5IGlucHV0X2ZpbGVuYW1lLCBtYWluX2lucHV0X2ZpbGVuYW1lLCBhbmQKCWZpbGVfc3RhY2submFtZS4gIFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBvdXRwdXQuaDogRGVjbGFyZSBmaXJzdF9nbG9iYWxfb2JqZWN0X25hbWUgYW5kCgl3ZWFrX2dsb2JhbF9vYmplY3RfbmFtZSBoZXJlLCBhcyBjb25zdCBjaGFyICouCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSwgcHVzaF9zcmNsb2MsIGRlYnVnX3N0YXJ0X3NvdXJjZV9maWxlKToKCUNvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCShpbnB1dF9maWxlbmFtZSwgbWFpbl9pbnB1dF9maWxlbmFtZSk6IENvbnN0aWZ5LgoJKiB0b3BsZXYuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIHRyZWUuYzogSW5jbHVkZSBvdXRwdXQuaC4gIERvbid0IGRlY2xhcmUKCWZpcnN0X2dsb2JhbF9vYmplY3RfbmFtZSBvciB3ZWFrX2dsb2JhbF9vYmplY3RfbmFtZS4gIENsZWFuIHVwIHN0cmluZwoJYmFzaGluZyBpbiBnZXRfZmlsZV9mdW5jdGlvbl9uYW1lX2xvbmcuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfZGVjbCk6IENvbnN0aWZ5IGZpbGVuYW1lIG1lbWJlci4KCShpbnB1dF9maWxlbmFtZSk6IENvbnN0aWZ5LgoJVXBkYXRlIHByb3RvdHlwZXMuCgkqIHZhcmFzbS5jIChmaXJzdF9nbG9iYWxfb2JqZWN0X25hbWUsIHdlYWtfZ2xvYmFsX29iamVjdF9uYW1lKToKCUNvbnN0aWZ5LgoJKGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uLCBhc3NlbWJsZV92YXJpYWJsZSk6IENsZWFuIHVwIHN0cmluZyBiYXNoaW5nLgoKCSogZ2NjLmM6IENvbnN0aWZ5IGFsbCBzcGVjLXJlbGF0ZWQgc3RyaW5ncyBpbml0aWFsaXplZCwKCXRyYW5zaXRpdmVseSwgZnJvbSBzdHJpbmcgY29uc3RhbnRzLiAgQ29uc3RpZnkgYWxsIHN0cmluZ3MKCWFuZCBzdHJpbmcgdmFyaWFibGVzIHJlbGF0ZWQgdG8gbXVsdGlsaWJzLgoJKHNldF9zcGVjLCByZWFkX3NwZWNzKTogQ2FzdCBhcmd1bWVudCB0byBmcmVlIHRvIFBUUi4KCSh1c2VkX2FyZyk6IERvIG5vdCBtb2RpZnkgbXVsdGlsaWJfbWF0Y2hlcy4gIFVzZSBzdHJuY21wIHBsdXMKCWxlbmd0aCBjb21wYXJpc29uIHRvIGNvbXBhcmUgbXVsdGlsaWIgc3dpdGNoZXMuCgkqIGdlbm11bHRpbGliOiBDb25zdGlmeSBldmVyeXRoaW5nIGRlY2xhcmVkIGluIG11bHRpbGliLmguCgpUdWUgTWF5ICA5IDIyOjI4OjAzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBmbG93LmMgKGZsb3dfZGVsZXRlX2luc24pOiBVc2UgSU5TTl9ERUxFVEVEX1AgZm9yIG1hcmtpbmcgaW5zbgoJYXMgZGVsZXRlZC4KClR1ZSBNYXkgIDkgMjA6NTI6NDMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChleHRyYV9jb25zdHJhaW50KTogY2hhbmdlIGEgdHlwZSBvZgoJc2Vjb25kIGFyZ3VtZW50IGZyb20gY2hhciB0byBpbnQgdG8gYXZvaWQgd2FybmluZ3MuCgkoYXNtX291dHB1dF9ieXRlKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYXZyL2F2ci5jIChNQVhfTERfT0ZGU0VUKSBOZXcgbWFjcm8uCgkoaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBIYW5kbGUgZWxpbWluYXRpb24gZnJvbQoJRlJBTUVfUE9JTlRFUl9SRUdOVU0gdG8gU1RBQ0tfUE9JTlRFUl9SRUdOVU0uCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBVc2UgTUFYX0xEX09GRlNFVC4KCShsZWdpdGltaXplX2FkZHJlc3MpOiBMaWtld2lzZS4KCShvdXRfbW92cWlfcl9tcik6IExpa2V3aXNlLgoJKG91dF9tb3ZoaV9yX21yKTogTGlrZXdpc2UsIHVzZSBgZmF0YWxfaW5zbicgaW5zdGVhZCBvZiBgZmF0YWwnLgoJKG91dF9tb3ZzaV9yX21yKTogVXNlIE1BWF9MRF9PRkZTRVQuCgkob3V0X21vdnNpX21yX3IpOiBMaWtld2lzZS4KCShvdXRfbW92cWlfbXJfcik6IExpa2V3aXNlLgoJKG91dF9tb3ZoaV9tcl9yKTogTGlrZXdpc2UuCgkobm90aWNlX3VwZGF0ZV9jYyk6IENvcnJlY3QgQ0MgZm9yIHRoZSBhc2hycWkzIHdpdGggdGhlIHNoaWZ0Cgljb3VudCBhcyBDT05TVF9JTlQgIT0gNi4KCShhc2hscWkzX291dCk6IENvZGluZyBzdHlsZSBtb2RpZmljYXRpb25zLiBSdW4gYGZhdGFsX2luc24nIGlmCglzaGlmdCBjb3VudCBpcyBhIENPTlNUQU5UX1AsIGJ1dCBub3QgYSBDT05TVF9JTlQuCgkoYXNobGhpM19vdXQpOiBDb2Rpbmcgc3R5bGUgbW9kaWZpY2F0aW9ucy4KCShhc2hsc2kzX291dCk6IExpa2V3aXNlLgoJKGFzaHJoaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnNpM19vdXQpOiBMaWtld2lzZS4KCShsc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGxzaHJzaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnFpM19vdXQpOiBHZW5lcmF0ZSBzaGlmdCBmb3IgYW55IGtub3duIGNvbnN0YW50IGNvdW50IHdpdGhvdXQKCXNjcmF0Y2ggcmVnaXN0ZXIuIFJ1biBgZmF0YWxfaW5zbicgaWYgc2hpZnQgY291bnQgaXMgYSBDT05TVEFOVF9QLAoJYnV0IG5vdCBhIENPTlNUX0lOVC4KCShsc2hycWkzX291dCk6IENvZGluZyBzdHlsZSBtb2RpZmljYXRpb25zLiBSdW4gYGZhdGFsX2luc24nIGlmCglzaGlmdCBjb3VudCBpcyBhIENPTlNUQU5UX1AsIGJ1dCBub3QgYSBDT05TVF9JTlQuCgkoZXh0cmFfY29uc3RyYWludCk6IGNoYW5nZSBhIHR5cGUgb2YKCXNlY29uZCBhcmd1bWVudCBmcm9tIGNoYXIgdG8gaW50IHRvIGF2b2lkIHdhcm5pbmdzLgoJKGFzbV9vdXRwdXRfYnl0ZSk6IExpa2V3aXNlLgoJKGFzbV9maWxlX2VuZCk6IE91dHB1dCBzaXplIGdlbmVyYXRlZCBjb21tYW5kcyBjb3VudCBhcyBhIGhleAoJbnVtYmVyIHRvby4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKFJFVFVSTl9BRERSX1JUWCk6IE5ldyBtYWNyby4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChhZGRoaTMpOiBGcmFnbWVudCBjb21tZW50ZWQgYnkgJiYwIGlzCglyZW1vdmVkLgoJKGFzaGxxaTMpOiBWYWx1ZXMgb2YgImxlbmd0aCIgYXR0cmlidXRlIGNoYW5nZWQuIFNoaWZ0IGNvdW50Cgl1c2VzIGNvbnN0cmFpbnRzICduJyBpbnN0ZWFkIG9mICdpJy4KCShhc2hycWkzKTogTGlrZXdpc2UuIFZhbHVlcyBvZiAiY2MiIGF0dHJpYnV0ZSBjaGFuZ2VkLiBHZW5lcmF0ZQoJc2hpZnRzIHdpdGhvdXQgY2xvYmJlciByZWdpc3Rlci4KCShsc2hycWkzKTogU2hpZnQgY291bnQgdXNlcyBjb25zdHJhaW50cyAnbicgaW5zdGVhZCBvZiAnaScuCgkoY2FsbF9pbnNuKTogQ29ycmVjdCB0ZXN0IGZvciB3aGljaF9hbHRlcm5hdGl2ZSA9PSAxICh3YXMgMCkuCgkoY2FsbF92YWx1ZV9pbnNuKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYXZyL3QtYXZyOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBGTE9BVCB3aGlsZSBnZW5lcmF0ZXMKCWZwLWJpdC5jCgoyMDAwLTA1LTA5ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9jaGVjay50cGw6ICBUZW1wbGF0ZSBmb3IgY2hlY2tpbmcgZml4ZXMKCSogZml4aW5jL2luY2xoYWNrLmRlZjogIEFkZGVkICd0ZXN0X3RleHQnIGZvciBtYW55IGZpeGVzCglkaXNhYmxlIGhwdXg4X2JvZ3VzX2lubGluZXMgb24gU0NPCgkqIGZpeGluYy9maXhpbmMuc2NvOiAgT2gsIHllcywgd2UgZG9uJ3QgbmVlZCB0aGlzIGFueSBtb3JlLgoKVHVlIE1heSAgOSAxNjozMDoyNyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogUmVvcmdhbml6ZSBzb21ld2hhdCBpbiBvcmRlcgoJdG8gYXZvaWQgdW5uZWNlc2FyeSByZWNhbGN1bGF0aW9uIGluc2lkZSBsb29wIGFuZCBtYWtlCgl0YWlsIGNhbGwgZmFpbHVyZSBjb2RlIGNsZWFuZXIuCgpUdWUgTWF5ICA5IDA2OjMwOjIwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhbGlhcy5jIChub25sb2NhbF9yZWZlcmVuY2VfcCk6IE1pbm9yIHJlZm9ybWF0dGluZy4KCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogU2ltcGxpZnkgbG9naWMgZm9yCglDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0Ugc2luY2UgY2FuJ3QgaGF2ZSBTVUJSRUcgb3IgcHNldWRvcyBhbmQKCXNvbWUgc29tZSByZWZvcm1hdHRpbmcuCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NvbWJpbmUpOiBEb24ndCBhc3N1bWUgZXZlcnl0aGluZyBpbgoJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIGlzIGEgUkVHIGFuZCBjbGVhbiB1cCBjb2RlIGEgYml0LgoKMjAwMC0wNS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZpbmFsLmMgKGN1cnJlbnRfaW5zbl9wcmVkaWNhdGUpOiBOZXcuCgkoZmluYWxfc2Nhbl9pbnNuKTogU2V0IGl0LgoJKiBvdXRwdXQuaCAoY3VycmVudF9pbnNuX3ByZWRpY2F0ZSk6IERlY2xhcmUuCgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pbnNucyk6IE5ldyBhcmd1bWVudCBwcm9iX3ZhbC4KCUF0dGFjaCBpdCB0byBjYWxsIGluc25zLgoJKGNvbmRfZXhlY19wcm9jZXNzX2lmX2Jsb2NrKTogVHJhY2sgcHJvYmFiaWxpdHkgZm9yIHRydWUgYW5kCglmYWxzZSBicmFuY2hlcy4KCShkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCgkqIHByZWRpY3QuYyAoUFJPQl9ORVZFUiwgUFJPQl9WRVJZX1VOTElLRUxZKTogTmV3LgoJKFBST0JfVU5MSUtFTFksIFBST0JfRVZFTiwgUFJPQl9MSUtFTFkpOiBOZXcuCgkoUFJPQl9WRVJZX0xJS0VMWSwgUFJPQl9BTFdBWVMpOiBOZXcuCgkoZXN0aW1hdGVfcHJvYmFiaWxpdHksIGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBVc2UgdGhlbS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfZXhwYW5kX3ByZWRpY3Rpb24pOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogSGFuZGxlICdqJy4KCShpYTY0X2V4cGFuZF9wcmVkaWN0aW9uKTogTmV3LgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IERvbid0IGxvb2sgYXQgbm90ZXMuICBFbWl0IGJhcnJpZXJzCglhcyBuZWVkZWQgYWZ0ZXIgY2FsbHMuCgkoaWE2NF9lcGlsb2d1ZV91c2VzKTogTWFyayBiMCB1c2VkLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChiZXFfdHJ1ZSwgYmVxX2ZhbHNlKTogUmVtb3ZlLgoJKGJuZV90cnVlLCBibmVfZmFsc2UpOiBSZW1vdmUuCgkoZXFfcmV0dXJuLCBlcV9ub3RfcmV0dXJuLCBuZV9yZXR1cm4sIG5lX25vdF9yZXR1cm4pOiBSZW1vdmUuCgkoYnJfdHJ1ZSwgYnJfZmFsc2UpOiBOZXcuICBVc2UgcHJlZGljYXRlX29wZXJhdG9yIGFuZAoJaWE2NF9leHBhbmRfcHJlZGljdGlvbi4KCShyZXR1cm5fdHJ1ZSwgcmV0dXJuX2ZhbHNlKTogTGlrZXdpc2UuCgkoY2FsbF9pbnRlcm5hbCk6IFVzZSBpYTY0X2V4cGFuZF9wcmVkaWN0aW9uLiAgRG9uJ3QgZW1pdCBzdG9wIGJpdC4KCShjYWxsX2ludGVybmFsMSwgY2FsbF92YWx1ZV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfaW50ZXJuYWwxLCBjYWxsX211bHRpcGxlX3ZhbHVlc19pbnRlcm5hbDEpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9kaXJlY3RfcmV0dXJuKTogUmVxdWlyZSBmcmFtZSBzaXplIHplcm8uCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChleHRlbmRzZmRmMik6IFNwbGl0IG9ubHkgYWZ0ZXIgcmVsb2FkLgoKMjAwMC0wNS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAobWF5X3RyYXBfcCk6IENvbnNpZGVyIG9sZC1zdHlsZSBhbmQgdm9sYXRpbGUKCWFzbXMgdG8gdHJhcC4KCk1vbiBNYXkgIDggMTc6MTY6NDggMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChSRVRVUk5fQUREUl9SVFgpOiBVc2UgQ09VTlQgbm90IGNvdW50LgoKMjAwMC0wNS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAocHJlZGljYXRlX29wZXJhdG9yKTogRGVjbGFyZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGV4dGVuZHNmZGYyKTogU3BsaXQgdGhlIG5vcCBjYXNlIG91dAoJb2YgZXhpc3RlbmNlLgoKCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IENvcHkgYW5kIHBvc3QtcHJvY2VzcyBlYWNoIG1lbWJlcgoJb2YgdGhlIGRlZmluZV9pbnNuIHJ0dmVjIGluZGl2aWR1YWxseS4KCk1vbiAgOCBNYXkgMjI6MTc6MzUgMjAwMCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc3BlbGxfdG9rZW4pOiBOZXcgZnVuY3Rpb24uCgkoVE9LRU5fTEVOKTogQWRkIDEgZm9yIHdoaXRlc3BhY2UuCgkoX2NwcF9sZXhfZmlsZSk6IFVwZGF0ZSB0byB1c2Ugc3BlbGxfdG9rZW4uCgkqIGNwcGxpYi5oIChFKTogUmVtb3ZlLgoJKFRUWVBFX1RBQkxFKTogVXBkYXRlIENQUF9WU1BBQ0UgZW50cnkuCgoyMDAwLTA1LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogV2F0Y2ggb3V0IGZvciBjb25kaXRpb25hbAoJYnJhbmNoIHRvIG5leHQgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIG9uZSBvdXRnb2luZyBlZGdlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBFeGl0IGVhcmx5Cglmb3IgZ2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlczsgZG9uJ3Qgc3BlY2lhbCBjYXNlIF9fW0NEXVRPUl9MSVNUX187CgltaW5kIGdnY19wIGZvciBzdHJpbmcgYWxsb2NhdGlvbi4KCjIwMDAtMDUtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEVMSU1JTkFCTEVfUkVHUyk6IEZpeCBjb21tZW50LgoKMjAwMC0wNS0wOCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6ICBmaXhpbmMuc2NvIGlzIG5vIGxvbmdlciB1c2VkCglpPzg2LSotbXNkb3NkamdwcCogbm8gbG9uZ2VyIHVzZXMgZml4aW5jbHVkZXMKCSogZml4aW5jL2dlbmZpeGVzOiAgaW5jbGhhY2suc2ggYW5kIGZpeGluY2wuc2ggYXJlIG5vIGxvbmdlciBnZW5lcmF0ZWQKCSogZml4aW5jL2luY2xoYWNrLnNoOiAgZGVsZXRlZAoJKiBmaXhpbmMvaGFja3NoZWxsLnRwbDogIGRlbGV0ZWQKCSogZml4aW5jL2luY2xoYWNrLnRwbDogIGRlbGV0ZWQKCSogZml4aW5jL01ha2VmaWxlLmluOiAgUmVtb3ZlIGRlcGVuZGVuY2llcyBvbiBhYm92ZQoJKiBmaXhpbmMvZml4aW5jbC5zaDogICJETyBOT1QgRURJVCIgdGV4dCBtb2RpZmllZAoKMjAwMC0wNS0wOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbGludXguaDogUmVtb3ZlIHVuZGVmaW5lcyB3aGljaCBkaXNhYmxlZCAuY3Rvci8uZHRvcgoJc3VwcG9ydC4KCjIwMDAtMDUtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChMT09TRV9DRkxBR1MpOiBBZGQgL2cgbW9kaWZpZXJzIHRvIGJvdGggc2VkCglzdWJzdGl0dXRpb25zLgoKU3VuICA3IE1heSAwODo0Mzo1MyAyMDAwICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jOiBNb3ZlIG5ldyBsZXhlciBkZWZpbml0aW9ucyBhbmQgcHJvdG90eXBlcwoJdG8gdG9wLiAgQ29uZGl0aW9uYWwgaW5jbHVkZSB0aGVzZSBhbmQgdGhlIGNvZGUgaWYKCU5FV19MRVhFUiBpcyBkZWZpbmVkLiAgUmVuYW1lIGZ1bmN0aW9ucyB3aG9zZSBuYW1lcwoJY2xhc2ggaWYgdGhpcyBjb2RlIGluY2x1ZGVkLgoKU3VuIE1heSAgNyAwMDo1NDo1NyBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogcnRsLmRlZiAoQ09ORF9FWEVDKTogQ2xhcmlmeS4KCgkqIGkzODYubWQgKGV4dGVuZHNpZGkyKTogQ2xvYmJlciAocmVnOkNDIDE3KSBpbiB0aGUKCXNhbWUgZmFzaGlvbiBhcyB6ZXJvX2V4dGVuZHNpZGkyLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocHJlZGljYXRlX29wZXJhdG9yKTogTmV3LgoJKGlhNjRfcHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAnSicuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgQ09ORF9FWEVDLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEJSQU5DSF9DT1NUKTogRGVmaW5lLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZDogRG9jdW1lbnQgdXNlZCB1bnNwZWMgdmFsdWVzLgoJKGF0dHIgcHJlZGljYWJsZSk6IE5ldy4KCShtb3Z4ZiwgbW92eGZfaW50ZXJuYWwpOiBOZXcuCgkoZXh0ZW5kc2ZkZjIpOiBEb24ndCBjb21tZW50IG91dCBub3AuCgkoZmxvYXRkaWRmMik6IFJlbW92ZS4KCSh0cnVuY3hmc2YyLCB0cnVuY3hmZGYyLCBmbG9hdGRpeGYyKTogTmV3LgoJKGFic3NpMiwgYWJzZGkyKTogUHV0IHRoZSBuZWcgaW4gdGhlICJ0cnVlIiBzbG90LgoJKGNvbmRpdGlvbmFsIGJyYW5jaCBpbnN0cnVjdGlvbnMpOiBNYXJrIG5vdCBwcmVkaWNhYmxlLgoJKGNtb3YqX2ludGVybmFsKTogVXNlIHByZWRpY2F0ZV9vcGVyYXRvci4gIFNwbGl0IHRvIGNvbmRfZXhlYy4KCShhYnMqX2ludGVybmFsKTogTGlrZXdpc2UuCgkoYWxsb2MsIHNldF9ic3ApOiBNYXJrIG5vdCBwcmVkaWNhYmxlLgoJKGJhcnJpZXIsIGluc25fZ3JvdXBfYmFycmllciwgZmx1c2hfY2FjaGUpOiBMaWtld2lzZS4KCShkZWZpbmVfY29uZF9leGVjKTogTmV3LgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtZGVjbC5jOiBJbmNsdWRlICJ0bV9wLmgiLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogUmVhcnJhbmdlIGRlY2xzIHRvIHJlZHVjZSBpZmRlZiBtYWRuZXNzLgoJKGZldGNoYWRkX29wZXJhbmQsIGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCk6IERlY2xhcmUuCgkoaWE2NF9leHBhbmRfb3BfYW5kX2ZldGNoKTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBJbmNsdWRlICJ0b3BsZXYuaCIuICBLaWxsIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgkoc2V0am1wX29wZXJhbmQpOiBDb25zdGlmeSB2YXJpYWJsZXMgZm9yIFhTVFIuCgkoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkoaWE2NF9wcmludF9vcGVyYW5kKTogVXNlICVkIGZvciBleGFjdF9sb2cyOyBjYXN0IDMyLWJpdCBwcmludGVkCgl2YWx1ZXMgdG8gaW50LgoJKGlhNjRfYXNtX291dHB1dF9leHRlcm5hbCk6IENvbnN0aWZ5IG5hbWUuCgkocHJvY2Vzc19zZXQpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgZm9yIGZyYW1lIHNpemUuCgkocHJvY2Vzc19mb3JfdW53aW5kX2RpcmVjdGl2ZSk6IFByb3ZpZGUgc3dpdGNoIGRlZmF1bHQuCgkoaWE2NF9leHBhbmRfY29tcGFyZV9hbmRfc3dhcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKGlhNjRfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fT1VUUFVUX0JZVEUpOiBNYXNrIGFuZCBjYXN0IHZhbHVlIHRvIGludAoJZm9yIHByaW50aW5nLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChzZGF0YV9zeW1ib2xpY19vcGVyYW5kKTogTWFyayB1bnVzZWQgYXJncy4KCShzeW1ib2xpY19vcGVyYW5kLCBmdW5jdGlvbl9vcGVyYW5kLCBzZXRqbXBfb3BlcmFuZCk6IExpa2V3aXNlLgoJKHNoaWZ0X2NvdW50X29wZXJhbmQsIHNoaWZ0XzMyYml0X2NvdW50X29wZXJhbmQpOiBMaWtld2lzZS4KCShzaGxhZGRfb3BlcmFuZCwgZmV0Y2hhZGRfb3BlcmFuZCwgaWE2NF9mdW5jdGlvbl9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fZXBpbG9ndWUsIGlhNjRfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MsIGlhNjRfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCShpYTY0X3ByaW50X29wZXJhbmRfYWRkcmVzcywgaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKGNhbGxfbXVsdGlwbGVfdmFsdWVzX29wZXJhdGlvbik6IE1ha2UgZGVzdF9yZWdubyB1bnNpZ25lZC4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGwuZGVmIChERUZJTkVfQ09ORF9FWEVDKTogTmV3LgoJKiBtZC50ZXhpOiBEb2N1bWVudCBpdC4KCgkqIGdlbnN1cHBvcnQuYyAoaW5wdXRfZmlsZSk6IFJlbW92ZS4KCShzdHJ1Y3QgcXVldWVfZWxlbSk6IEFkZCBsaW5lbm8uCgkocnR4X3JlYWR5X3F1ZXVlKTogUmVtb3ZlLgoJKGVycm9ycyk6IE5ldy4KCShwcmVkaWNhYmxlX2RlZmF1bHQpOiBOZXcuCgkocHJlZGljYWJsZV90cnVlLCBwcmVkaWNhYmxlX2ZhbHNlKTogTmV3LgoJKGRlZmluZV9hdHRyX3F1ZXVlLCBkZWZpbmVfYXR0cl90YWlsKTogTmV3LgoJKGRlZmluZV9pbnNuX3F1ZXVlLCBkZWZpbmVfaW5zbl90YWlsKTogTmV3LgoJKGRlZmluZV9jb25kX2V4ZWNfcXVldWUsIGRlZmluZV9jb25kX2V4ZWNfdGFpbCk6IE5ldy4KCShvdGhlcl9xdWV1ZSwgb3RoZXJfdGFpbCk6IE5ldy4KCShxdWV1ZV9wYXR0ZXJuKTogTmV3LgoJKHByb2Nlc3NfcnR4KTogQWRkIHBhdHRlcm5zIHRvIHRoZSBhcHByb3ByaWF0ZSBxdWV1ZXMuCgkoaXNfcHJlZGljYWJsZSwgaWRlbnRpZnlfcHJlZGljYWJsZV9hdHRyaWJ1dGUpOiBOZXcuCgkobl9hbHRlcm5hdGl2ZXMsIGNvbGxlY3RfaW5zbl9kYXRhKTogTmV3LgoJKGFsdGVyX3ByZWRpY2F0ZV9mb3JfaW5zbiwgYWx0ZXJfdGVzdF9mb3JfaW5zbik6IE5ldy4KCShzaGlmdF9vdXRwdXRfdGVtcGxhdGUsIGFsdGVyX291dHB1dF9mb3JfaW5zbik6IE5ldy4KCShwcm9jZXNzX29uZV9jb25kX2V4ZWMsIHByb2Nlc3NfZGVmaW5lX2NvbmRfZXhlYyk6IE5ldy4KCShpbml0X21kX3JlYWRlcik6IFJlYWQgdGhlIGVudGlyZSBmaWxlLiAgUHJvY2VzcyBkZWZpbmVfY29uZF9leGVjLgoJKHJlYWRfbWRfcnR4KTogUmV0dXJuIGVsZW1lbnRzIGZyb20gdGhlIHF1ZXVlcy4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfc2V0XzEpOiBEb24ndCB1cGRhdGUgY29uZGl0aW9uYWwgbGlmZSBpbmZvCglpZiB0aGUgcmVnaXN0ZXIgaXMgbm90X2RlYWQuCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IEFkZCBnZW5ydGwuYyBhbmQgZ2VucnRsLmguCgkobW9zdGx5Y2xlYW4pOiBBbHNvIGRlbGV0ZSBmaXhpbmNsLCBmaXhpbmMuc2gsIGFuZAoJc3BlY3MucmVhZHksIGFuZCBtYWtlIGNsZWFuIGluIHRoZSBmaXhpbmMgc3ViZGlyLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChnZW5zdXBwb3J0Lm8pOiBDb21waWxlIGZvciB0aGUgaG9zdC4KCShob3N0LXByZWZpeCBnZW5zdXVwcnQubyk6IFJlbW92ZS4KCShnZW5mbGFncy5vKTogRGVwZW5kIG9uIGdlbnN1cHBvcnQuaCBhbmQgT0JTVEFDS19ILgoJKGdlbmF0dHJ0YWIubyk6IExpa2V3aXNlLgoJKGdlbmNvZGVzLm8pOiBEZXBlbmQgb24gZ2Vuc3VwcG9ydC5oLgoJKGdlbmVtaXQubywgZ2Vub3Bpbml0Lm8sIGdlbnJlY29nLm8sIGdlbmV4dHJhY3Qubyk6IExpa2V3aXNlLgoJKGdlbnBlZXAubywgZ2VuYXR0ci5vLCBnZW5vdXRwdXQubyk6IExpa2V3aXNlLgoKCSogZ2Vuc3VwcG9ydC5jIChvYnN0YWNrLCBydGxfb2JzdGFjayk6IE5ldy4KCShpbml0X21kX3JlYWRlcik6IEluaXRpYWxpemUgcnRsX29ic3RhY2suCgkqIGdlbnN1cHBvcnQuaCAocnRsX29ic3RhY2spOiBEZWNsYXJlLgoJKG1lc3NhZ2Vfd2l0aF9saW5lKTogRGVjbGFyZS4KCgkqIGdlbmF0dHIuYzogUmVtb3ZlIGFsbCB0cmFjZXMgb2Ygb2JzdGFjayBtYW5pcHVsYXRpb24uCgkqIGdlbmNvZGVzLmMsIGdlbmNvbmZpZy5jLCBnZW5lbWl0LmMsIGdlbmV4dHJhY3QuYzogTGlrZXdpc2UuCgkqIGdlbm9waW5pdC5jLCBnZW5vdXRwdXQuYywgZ2VucGVlcC5jLCBnZW5yZWNvZy5jOiBMaWtld2lzZS4KCgkqIGdlbmF0dHJ0YWIuYyAob2JzdGFjaywgcnRsX29ic3RhY2spOiBSZW1vdmUuCgkobWFpbik6IERvbid0IGluaXQgcnRsX29ic3RhY2suCgkqIGdlbmZsYWdzLmM6IExpa2V3aXNlLgoKCSogZ2VucmVjb2cuYyAobWVzc2FnZV93aXRoX2xpbmUpOiBNb3ZlIC4uLgoJKiBnZW5zdXBwb3J0LmM6IC4uLiBoZXJlLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IFJlbW92ZSBkZWFkIGNvZGUuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChzcGxpdF9lZGdlKTogRG9uJ3QgYWxsb2NhdGUgZ2xvYmFsX2xpdmVfYXRfc3RhcnQgZm9yCgl0aGUgbmV3IGJsb2NrIHVubGVzcyB0aGUgb2xkIGJsb2NrcyBoYWQgdGhlbSBhcyB3ZWxsLgoKCSogZmxvdy5jIChtYXJrX3NldF8xKTogUmVzcGVjdCBub3RfZGVhZCB3aGVuIHVwZGF0aW5nIHJlZ19saXZlLgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRG9uJ3QgdXNlIGFuIGluc25fYiBmcm9tCgl0ZXN0X2JiIGlmIGEgb3IgYiB1c2VzIHguCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmg6IFJlbW92ZSBjb25kaXRpb25hbCAjZGVmaW5lIG9mIF9fZXh0ZW5zaW9uX18uCgkqIHJ0bC5oOiBBZGQgX19leHRlbnNpb25fXyB0byBSVExfQ0hFQ0sxLCBSVExfQ0hFQ0syLAoJUlRMX0NIRUNLQzEsIFJUTF9DSEVDS0MyLCBhbmQgUlRWRUNfRUxUIG1hY3JvcwoJKEVOQUJMRV9SVExfQ0hFQ0tJTkcgb25seSkuCgkqIHRyZWUuaDogQWRkIF9fZXh0ZW5zaW9uX18gdG8gVFJFRV9DSEVDSywgVFJFRV9DTEFTU19DSEVDSywKCUNTVF9PUl9DT05TVFJVQ1RPUl9DSEVDSywgYW5kIEVYUFJfQ0hFQ0sgbWFjcm9zCgkoRU5BQkxFX1RSRUVfQ0hFQ0tJTkcgb25seSkuCgkqIHZhcnJheS5oOiBBZGQgX19leHRlbnNpb25fXyB0byBWQVJSQVlfQ0hFQ0sgbWFjcm8KCShFTkFCTEVfQ0hFQ0tJTkcgb25seSkuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFucnNoYUBhcm0uY29tKQoKCVVzZSBuZXcgdGFpbC1jYWxsaW5nIG1lY2hhbmlzbSBvbiBBUk0uCgkqIGFybS5tZCAoc2liY2FsbCwgc2liY2FsbF92YWx1ZSk6IE5ldyBleHBhbmRzLgoJKHNpYmNhbGxfaW5zbiwgc2liY2FsbF92YWx1ZV9pbnNuLCBzaWJjYWxsX2VwaWxvZ3VlKTogTmV3IGluc25zLgoJKHRhaWxjYWxsaW5nIHBlZXBob2xlcyk6IERlbGV0ZS4KCShwdXNoX211bHRpKTogU2ltcGxpZnkuCgkqIGFybS5jIChscl9zYXZlX2VsaW1pbmF0ZWQpOiBEZWxldGUgZGVmaW5pdGlvbi4KCShwYXR0ZXJuX3JlYWxseV9jbG9iYmVyc19sciwgZnVuY3Rpb25fcmVhbGx5X2Nsb2JiZXJzX2xyKTogRGVsZXRlLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBSZW1vdmUgY2hlY2tzIG9uIGxyX3NhdmVfZWxpbWluYXRlZC4KCShvdXRwdXRfYXJtX3Byb2xvZ3VlKTogUmVtb3ZlIG9sZCB0YWlsLWNhbGxpbmcgY29kZS4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogTmV3IHBhcmFtZXRlciwgcmVhbGx5X3JldHVybi4gIEFsbCBjYWxsZXJzCgljaGFuZ2VkLiAgSGFuZGxlIHRhaWwtY2FsbGluZyBlcGlsb2d1ZXMuCgkqIGFybS5oIChscl9zYXZlX2VsaW1pbmF0ZWQpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkoZnJhbWVfcG9pbnRlcl9uZWVkZWQpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGFybS1wcm90b3MuaCAoYXJtX291dHB1dF9lcGlsb2d1ZSk6IEFkanVzdCBwcm90b3R5cGUuCgoJKiBhcm0ubWQgKGlzX3RodW1iKTogRXhhbWluZSBzeW1ib2wgdGh1bWJfY29kZSwgbm90IGV4cHJlc3Npb24KCVRBUkdFVF9BUk0uCgkqIGFybS5jICh0aHVtYl9jb2RlKTogRGVmaW5lIGl0LgoJKGFybV9vdmVycmlkZV9vcHRpb25zKTogU2V0IGl0LgoJKiBhcm0uaCAodGh1bWJfY29kZSk6IERlY2xhcmUgaXQuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFucnNoYUBhcm0uY29tKQoKCSogYXJtLXByb3Rvcy5oIChhcm1fZGxsZXhwb3J0X25hbWVfcCwgYXJtX2RsbGltcG9ydF9uYW1lX3ApOiBDb25zdGlmeS4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgRWFybnNoYXcgKHJlYW5yc2hhQGFybS5jb20pCgoJKiBhcm0uYyAoYXJtX2dlbl9sb2FkX211bHRpcGxlLCBhcm1fZ2VuX3N0b3JlX211bGl0cGxlKTogRG9uJ3QgYWRkCglib2d1cyBjbG9iYmVyIHRvIGluc25zLgoJKGxvYWRfbXVsdGlwbGVfb3BlcmF0aW9uLCBzdG9yZV9tdWxpdHBsZV9vcGVyYXRpb24pOiBEb24ndCBjaGVjawoJZm9yIGl0LgoJKiBhcm0ubWQgKGxkbXNpX3Bvc3RpbmMsIHN0bXNpX3Bvc3RpbmMpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgoJKiBhcm0ubWQgKGFuZF9zY2MsIGlvcl9zY2MpOiBBZGQgbWlzc2luZyBtb2RlLgoKCSogYXJtLm1kIChjYWxsX3ZhbHVlX3N5bWJvbCk6IFJlbW92ZSBwcmVkaWNhdGUgZnJvbSBvcDIuCgoJKiBhcm0uaCAoU1BFQ0lBTF9NT0RFX1BSRURJQ0FURVMpOiBEZWZpbmUuCgpTYXQgTWF5ICA2IDA2OjI1OjU2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGdldF9zdWJ0YXJnZXQpOiBOZXcgZnVuY3Rpb24uCgkoZm9yY2Vfb3BlcmFuZCwgZXhwYW5kX2V4cHIsIGRvX3N0b3JlX2ZsYWcpOiBVc2UgaXQuCgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogRG9uJ3QgdGFrZSBzdHJsZW4gb2YgTkFNRSBpZiBudWxsLgoKMjAwMC0wNS0wNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogeGNvZmZvdXQuYyAoeGNvZmZfY3VycmVudF9pbmNsdWRlX2ZpbGUsCgl4Y29mZl9jdXJyZW50X2Z1bmN0aW9uX2ZpbGUsIHhjb2ZmX2xhc3RmaWxlKTogQ29uc3RpZnkgY2hhciAqLgoJKHhjb2Zmb3V0X3NvdXJjZV9maWxlLCB4Y29mZm91dF9zb3VyY2VfbGluZSk6IE1ha2UgZmlsZW5hbWUgJ2NvbnN0CgljaGFyIConLgoJKHhjb2Zmb3V0X2RlY2xhcmVfZnVuY3Rpb24pOiBNYWtlIG5hbWUgJ2NvbnN0IGNoYXIgKicuCgkoeGNvZmZvdXRfZW5kX2VwaWxvZ3VlKTogTWFrZSBmbmFtZSAnY29uc3QgY2hhciAqJwoJKiB4Y29mZm91dC5oICh4Y29mZl9jdXJyZW50X2luY2x1ZGVfZmlsZSwgeGNvZmZfbGFzdGZpbGUsCgl4Y29mZm91dF9kZWNsYXJlX2Z1bmN0aW9uLCB4Y29mZm91dF9zb3VyY2VfbGluZSk6IE1hdGNoIGFib3ZlLgoKCSogYWl4NDMuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiAtbXBvd2VycGM2NCB3aXRob3V0CgktbWFpeDY0CWlzIGVycm9yLgoJKiByczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IEZpeCBsb3NzYWdlIHR5cG8uCgkob3V0cHV0X2NicmFuY2gpOiBSZW1vdmUgImNyIiBkZWNvcmF0aW9uIGZvciBub3cuCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogTWFrZSBhbGlhcyAnY29uc3QgY2hhciAqJy4KClNhdCBNYXkgIDYgMDY6NTU6MzIgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9zaGlmdF93aXRoX2NudCk6IEJ1Z2ZpeCBmb3Igc2hpZnQgYnkKCWNvbnN0YW50IGNvdW50LgoKMjAwMC0wNS0wNSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZ2VuZml4ZXM6IEltcHJvdmUgdGhlIG1hdGNoaW5nIGZvciBtYWtlIHRhcmdldCBuYW1lcwoKMjAwMC0wNS0wNSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiAgRm9yIFRZUEVfREVDTHMgYXR0YWNoIHRoZQoJYXR0cmlidXRlIHRvIHRoZSBkZWNsLgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBQcm9wYWdhdGUgdGhlIFVTRUQgYXR0cmlidXRlIHRvIHRoZQoJdHlwZSBjb3B5LgoKMjAwMC0wNS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAocmVnX292ZXJsYXBfbWVudGlvbmVkX3ApOiBUcmVhdCBwYXJhbGxlbHMgaW4gdGhlCglzYW1lIHdheSBlbWl0X2dyb3VwX2xvYWQgZG9lcy4KCjIwMDAtMDUtMDUgTWFyayBFbGJyZWNodCA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogZ2NjLmMgKHNldF9pbnB1dCkgW0hBVkVfRE9TX1NUWUxFX0ZJTEVfU1lTVEVNXTogU2tpcCBkcml2ZSBuYW1lLgoKCSogdG9wbGV2LmMgKG91dHB1dF9maWxlX2RpcmVjdGl2ZSk6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoJKG1haW4pOiBMaWtld2lzZS4KCjIwMDAtMDUtMDUgUm9kbmV5IEJyb3duCTxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIHBhLmggKEZVTkNUSU9OX0FSR19BRFZBTkNFKTogV2FybmluZyByZW1vdmFsLgoKRnJpIE1heSAgNSAxMDoyOToyMSAyMDAwICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBjb25maWcvb3BlbmJzZC5oIChMSU5LX1NQRUMpOiBwYXNzIGNvcnJlY3QgZmxhZ3MgdG8gbGQKCXRvIHN1cHBvcnQgLXNoYXJlZCwgb24gcGxhdGZvcm1zIHdpdGggZHluYW1pYyBsaWJyYXJpZXMuCgpGcmkgTWF5ICA1IDEwOjI3OjA2IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogc3lzdGVtLmggKFNfSVNCTEspOiBQcm92aWRlIGZhbGxiYWNrIGRlZmluaXRpb24uCgoyMDAwLTA1LTA1ICBHZW9mZiBCZXJyeSAgPGdlb2ZmYkBib3BzLmNvbT4KCgkqIGV4dGVuZC50ZXhpIChFeHRlbmRlZCBBc20pOiBEb2N1bWVudCBpbmFiaWxpdHkgdG8gZ2l2ZSBhc20KCXN0YXRlbWVudHMgYWNjZXNzIHRvIGNvbmRpdGlvbiBjb2Rlcy4KCjIwMDAtMDUtMDUgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogdmFyYXNtLmMgKGFzbV9lbWl0X3VuaW5pdGlhbGlzZWQpOiBVc2UgMCwgbm90IE5VTEwKCWFzIGFyZyAyIG9mIFVOSVFVRV9TRUNUSU9OLgoKRnJpIE1heSAgNSAxMDoxMTo0MSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwcmVkaWN0LmM6IFJlbW92ZSBNYXkgNCBjaGFuZ2UuCgkqIGJiLXJlb3JkZXIuYyAobWFrZV9yZW9yZGVyX2NoYWluKTogRG8gbm90IHBlcmZvcm0gYmxvY2sgbW92ZW1lbnQKCWlmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBicmFuY2ggYXQgNTAtNTAgcHJvYmFiaWxpdHkuCgoyMDAwLTA1LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRml4IG1lcmdlIGVycm9yCglpbiBIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbiBjb2RlLgoKRnJpIE1heSAgNSAwNzo0Mzo1MCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X3NoaWZ0X3dpdGhfY250KTogR2VuZXRhcmUgYSBtb3JlIG9wdGltYWwKCXNoaWZ0IGN5Y2xlIGZvciB1bmtub3duIHNoaWZ0IGNvdW50LiBBbHNvIGdlbmVyYXRlcyBkZWMgKyBicnBsLgoJKGFzaGxxaTNfb3V0KTogRG9uJ3QgZ2VuZXJhdGUgZGVjICsgYnJwbCB3aGljaCBub3cgZ2VuZXJhdGVzIGJ5Cglgb3V0X3NoaWZ0X3dpdGhfY250Jy4KCShhc2hsaGkzX291dCk6IExpa2V3aXNlLgoJKGFzaGxzaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnFpM19vdXQpOiBMaWtld2lzZS4KCShhc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGFzaHJzaTNfb3V0KTogTGlrZXdpc2UuCgkobHNocnFpM19vdXQpOiBMaWtld2lzZS4KCShsc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGxzaHJzaTNfb3V0KTogTGlrZXdpc2UuCgoyMDAwLTA1LTA0IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGdjYy5jIChmcmVlX3NwbGl0X2RpcmVjdG9yaWVzKTogQ29ycmVjdCB0eXBvIGluIGV4cGxhbmF0aW9uCglvZiBtYWtlX3JlbGF0aXZlX3ByZWZpeC4KCjIwMDAtMDUtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBmbG9hdGluZy1wb2ludAoJY29tcGFyaXNvbiBjb2RlcyB0byBicmFuY2hfY29tcGFyaXNvbl9vcGVyYXRvci4KCjIwMDAtMDUtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBBbHdheXMgcmVzZXQgWCBpbiB0aGUgQSA9PSBCIGNhc2UuCgoyMDAwLTA1LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEZQQklUX0ZVTkNTKTogUmVtb3ZlIF9kZl90b191c2kuCgkoRFBCSVRfRlVOQ1MpOiBSZW1vdmUgX3NmX3RvX3VzaS4KCShzdG1wLW11bHRpbGliKTogUGFzcyBMSUIxQVNNU1JDIHRvIGxpYmdjYy5tay4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IEZhaWwgaWYgQSBvciBCIG1vZGlmaWVkCgliZXR3ZWVuIGNvbmRpdGlvbiBhbmQganVtcC4KCgkqIGxpYmdjYzIuYyAobmVhciBlaF9jb250ZXh0X3NwZWNpZmljKTogQ29tbWVudCAjZW5kaWYgc3RyaW5nLgoJKiBsb25nbG9uZy5oOiBEb24ndCB1c2Ugc3RyaW5ncyB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLgoKMjAwMC0wNS0wNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IEFkZCBvdXRwdXRfY2JyYW5jaC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY2NyX2JpdF9uZWdhdGVkX3ApOiBEZWxldGUuCgkocHJpbnRfb3BlcmFuZCk6IERlbGV0ZSAldCBhbmQgJVQgY29kZXMuCgkob3V0cHV0X2NicmFuY2gpOiBOZXcgZnVuY3Rpb24uICBTdXBwb3J0IGJyYW5jaCBwcmVkaWN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogVXNlIG91dHB1dF9jYnJhbmNoIGZvcgoJY29uZGl0aW9uYWwgYnJhbmNoZXMgYW5kIHJldHVybnMuCgoyMDAwLTA1LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IENhc3QgdG8gdW5zaWduZWQuCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5oIChzdHJ1Y3QgaW5saW5lX3JlbWFwKTogTWFrZSByZWdub19wb2ludGVyX2FsaWduIHVuc2lnbmVkLgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBNYWtlIGFsaWduIHVuc2lnbmVkLgoJKiBleHBsb3cuYyAocGx1c19jb25zdGFudF93aWRlKTogTWFrZSBsb3cgd29yZHMgdW5zaWduZWQuCgkqIGV4cG1lZC5jIChjaG9vc2VfbXVsdGlwbGllcik6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiAgTGlrZXdpc2UuCgkqIHRyZWUuaCAoYnVpbGRfaW50XzIpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9pbnRfMl93aWRlLCB0cmVlX2ludF9jc3RfbXNiKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogQWRkIGNhc3QgdG8gdW5zaWduZWQgY2hhciouCgkoaW5pdF9lbWl0KTogQ2hhbmdlIGNhc3QgdG8gdW5zaWduZWQgY2hhciouCgkqIHZhcmFzbS5jIChjb21wYXJlX2NvbnN0YW50XzEpOiBBZGQgY2FzdCB0byBjaGFyKi4KCSogZ2NzZS5jIChkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IENoYW5nZSBjYXN0IHRvIHVuc2lnbmVkIGludCouCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogTGlrZXdpc2UuCgoJKiBydGwuaCAoTUVNX1NFVF9JTl9TVFJVQ1RfUCk6IFVzZSBkbyB7IH0gd2hpbGUgKDApLgoKVGh1IE1heSAgNCAxNDozNzoyMyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogSWYgbm8gcHJlZGljdGlvbiB3YXMgZm91bmQsIHRoZW4KCXByZWRpY3QgdGhlIHN1Y2Nlc3NvciB0aGF0IGlzIHRoZSBuZXh0IHBoeXNpY2FsIGJsb2NrIChpZiBzdWNoIGEKCXN1Y2Nlc3NvciBleGlzdHMpLgoKMjAwMC0wNS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS90LWFscGhhIChMSUIyRlVOQ1NfRVhUUkEpOiBVc2UgcXJybmQuYXNtIGluIHBsYWNlLgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3lzdGVtLmg6IERvbid0IHdyYXAgPHN5cy90eXBlcy5oPiB3aXRoIEhBVkVfU1lTX1RZUEVTX0guCgoyMDAwLTA1LTA0ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGkzODYvY3lnd2luLmggKENQUF9QUkVERUZJTkVTKTogRG9uJ3QgZGVmaW5lIF9fU1REQ19fLiBNb3ZlCglhdHRyaWJ1dGUgbWFjcm9zIGZyb20gaGVyZSAuLi4KCShDUFBfU1BFQyk6IHRvIGhlcmUuCgkqIGkzODYvbWluZ3czMi5oIChDUFBfUFJFREVGSU5FUyk6IExpa2V3aXNlLgoJKENQUF9TUEVDKTogTGlrZXdpc2UuCgkqIGkzODYvY3J0ZGxsLmggKENQUF9QUkVERUZJTkVTKTogRGVsZXRlIGF0dHJpYnV0ZSBtYWNyb3MuCgoJKiBNYWtlZmlsZS5pbiAoJChIT1NUX1BSRUZJWF8xKWdlbnN1cHBvcnQubyk6IEFkZCBidWlsZCBydWxlLgoJKGxpYmdjYy5hKTogUGFzcyBMSUIxQVNNU1JDIHRvIGxpYmdjYy5tay4KCjIwMDAtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJiLXJlb3JkZXIuYyAoZ2V0X25leHRfYmJfbm90ZSwgZ2V0X3ByZXZfYmJfbm90ZSk6IFByb3RvdHlwZS4KCgkqIGRpYWdub3N0aWMgKHZidWlsZF9tZXNzYWdlX3N0cmluZywgYnVpbGRfbWVzc2FnZV9zdHJpbmcsCglidWlsZF9sb2NhdGlvbl9wcmVmaXgsIG91dHB1dF9nZXRfcHJlZml4LCBpbml0X291dHB1dF9idWZmZXIsCglvdXRwdXRfbm90aWNlLCB2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbiwKCXZfbWVzc2FnZV93aXRoX2RlY2wsIGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBEZS1jb25zdGlmeS4KCShzZXRfcmVhbF9tYXhpbXVtX2xlbmd0aCk6IFByb3RvdHlwZS4KCgkqIGRpYWdub3N0aWMuaCAoc3RydWN0IG91dHB1dF9idWZmZXIsIGluaXRfb3V0cHV0X2J1ZmZlciwKCW91dHB1dF9nZXRfcHJlZml4LCBvdXRwdXRfc2V0X3ByZWZpeCk6IERlLWNvbnN0aWZ5LgoKCSogZnVuY3Rpb24uYyAoaW5pdF9mdW5jdGlvbl9zdGFydCk6IENvbnN0aWZ5LgoKCSogZ2Vuc3VwcG9ydC5jIChyZW1vdmVfY29uc3RyYWludHMsIHByb2Nlc3NfcnR4KTogUHJvdG90eXBlLgoKCSogZ3Roci1wb3NpeC5oOiBJbmRlbnQgdXNlcyBvZiAjcHJhZ21hLgoKCSogb2JqYy9vYmpjLWFjdC5jIChnZ2NfbWFya19pbXBfbGlzdCwgZ2djX21hcmtfaGFzaF90YWJsZSk6CglQcm90b3R5cGUuCgoJKiBwcmVkaWN0LmMgKGZpbmRfZXhwZWN0ZWRfdmFsdWUpOiBEZWxldGUgcHJvdG90eXBlLgoJKGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBldl9yZWcnLgoKCSogc2JpdG1hcC5oIChkZWJ1Z19zYml0bWFwKTogUHJvdG90eXBlLgoKCSogc3NhLmMgKGNvbXB1dGVfY29hbGVzY2VkX3JlZ19wYXJ0aXRpb24pOiBQcm90b3R5cGUuCgoJKiBzdG9yLWxheW91dC5jIChkZWJ1Z19ybGkpOiBQcm90b3R5cGUuCgoJKiB0cmVlLmggKHJvdW5kX2Rvd24pOiBQcm90b3R5cGUuCgkoaW5pdF9mdW5jdGlvbl9zdGFydCk6IENvbnN0aWZ5LgoKMjAwMC0wNS0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oOiAjZGVmaW5lIF9fZXh0ZW5zaW9uX18gYXdheSBpZiBHQ0NfVkVSU0lPTiA8IDIwOTUKCShvdmVybHkgY29uc2VydmF0aXZlKS4gIENoYW5nZSBleHRlcm4gaW5saW5lIHdyYXBwZXJzIHRvCglzdGF0aWMgaW5saW5lLCBkZWZpbmUgdGhlbSBhbHdheXMsIHVzZSBQQVJBTVMgcHJvcGVybHkuCgkqIGNwcGxleC5jIChfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBEb24ndCBpc3N1ZSBwZWRhbnRpYwoJd2hpdGVzcGFjZSB3YXJuaW5ncyBmb3IgXGYgYW5kIFx2IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLgoKVGh1IE1heSAgNCAxMDowMzo1MCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IEZyZWUgdGhlIGZsb3cgZWRnZSBsaXN0IHdoZW4gaXQKCWlzIG5vIGxvbmdlciBuZWVkZWQKCjIwMDAtMDUtMDQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jbC9pbmNsaGFjay5kZWY6IGFkZGVkIGJyb2tlbl9jYWJzIC0KCVJlbW92ZSBgZXh0ZXJuIGRvdWJsZSBjYWJzJyBkZWNsYXJhdGlvbnMgZnJvbSBtYXRoLmgKCSogZml4aW5jbC9pbmNsaGFjay5zaDogcmVnZW4KCSogZml4aW5jbC9maXhpbmNsLng6IHJlZ2VuCgkqIGZpeGluY2wvZml4aW5jbC5jOiBSZW1vdmUgQk9HT1NJVFkgY29kZQoJKiBmaXhpbmNsL21rZml4aW5jLnNoOiBSZW1vdmUgY29kZSBmb3IgaW5zdGFsbGluZyAic2hlbGwiIHZlcnNpb24KClRodSBNYXkgIDQgMDk6NDU6MTIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHJ0bC5oIChNRU1fQ09QWV9BVFRSSUJVVEVTKTogQWxzbyBjb3B5IFJUWF9VTkNIQU5HSU5HX1AgYW5kCglNRU1fQUxJQVNfU0VULgoJKiBhbGlhcy5jIChjYW5vbl9ydHgpOiBEb24ndCBjb3B5IFJUWF9VTkNIQU5HSU5HX1Agb3IgTUVNX0FMSUFTX1NFVAoJd2hlbiBjYWxsaW5nIE1FTV9DT1BZX0FUVFJJQlVURVMuCgkqIGVtaXQtcnRsLmMgKG9wZXJhbmRfc3Vid29yZCwgY2hhbmdlX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogZXhwbG93LmMgKHN0YWJpbGl6ZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKHByb3RlY3RfZnJvbV9xdWV1ZSwgZW1pdF9tb3ZlX2luc25fMSk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBMaWtld2lzZS4KCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IERvbid0IGNvcHkgUlRYX1VOQ0hBTkdJTkdfUAoJd2hlbiBjYWxsaW5nIE1FTV9DT1BZX0FUVFJJQlVURVMuCgkobWFrZV9leHRyYWN0aW9uLCBzaW1wbGlmeV9zaGlmdF9jb25zdCwgZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUpOgoJTGlrZXdpc2UuCgkqIGNzZS5jIChnZW5fbG93cGFydF9pZl9wb3NzaWJsZSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmc18xLCBwdXJnZV9hZGRyZXNzb2ZfMSk6IExpa2V3aXNlLgoJKiBvcHRhYnMuYyAoZ2VuX21vdmVfaW5zbik6IExpa2V3aXNlLgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jIChhZGRfbWVtX2Zvcl9hZGRyKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2Fub25fdW5pb25fZGVjbCk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oNzMwMC5jIChmaXhfYml0X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL204OGsvbTg4ay5jIChsZWdpdGltaXplX2FkZHJlc3MsIGJsb2NrX21vdmVfbG9vcCk6IExpa2V3aXNlLgoJKGJsb2NrX21vdmVfbm9fbG9vcCwgYmxvY2tfbW92ZV9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChleHBhbmRfYmxvY2tfbW92ZV9tZW0pOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGdldF9hbGlnbmVkX21lbSk6IExpa2V3aXNlLgoJQ2xlYXIgTUVNX0FMSUFTX1NFVC4KCSogZmluYWwuYyAoYWx0ZXJfc3VicmVnKTogRG9uJ3QgY29weSBNRU1fQUxJQVNfU0VUIHdoZW4gY2FsbGluZwoJTUVNX0NPUFlfQVRUUklCVVRFUy4KCjIwMDAtMDUtMDMgIFJvYmVydCBMaXBlIDxyb2JlcnRsaXBlQHVzYS5uZXQ+CgoJKiBjb25maWd1cmUuaW4gKGlbMzQ1NjddODYtKi1pc2MqKSBbdG1ha2VfZmlsZV06IEFkZCB0LWkzODZiYXJlCgl0byBzdXBwcmVzcyBsaWJnY2MxLgoJKGlbMzQ1NjddODYtKi1zY28zLjJ2NSopIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zY28zLjJ2NCopIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zY28pIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zb2xhcmlzMikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXN5c3Y1KikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXN5c3Y0KikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXVkayopIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zeXN2KikgTGlrZXdpc2UuCgoyMDAwLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmggKFUpOiBOZXcgZGVmaW5lLCB0byBjb3JyZWN0IHR5cGUgb2Ygc3RyaW5nIGNvbnN0YW50cy4KCSh1c3RyY21wLCB1c3RybmNtcCwgdXN0cmxlbiwgdXhzdHJkdXAsIHVzdHJjaHIpOiBOZXcgd3JhcHBlcgoJcm91dGluZXMsIHRvIGRvIGNhc3RzIHdoZW4gcGFzc2luZyB1bnNpZ25lZCBzdHJpbmdzIHRvIGxpYmMuCgkqIGNwcGV4cC5jLCBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsIGNwcGluaXQuYywgY3BwbGliLmM6IFVzZSB0aGVtLgoKCSogY3BwZmlsZXMuYyAoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBNYWtlIGZpbGVuYW1lIGFuIFVfQ0hBUiAqLgoJKiBjcHBoYXNoLmMgKF9jcHBfcXVvdGVfc3RyaW5nKTogTWFrZSBzdHJpbmcgYW4gVV9DSEFSICouCgkqIGNwcGluaXQuYyAoZHVtcF9zcGVjaWFsX3RvX2J1ZmZlcik6IE1ha2UgbWFjcm8gbmFtZSBhbiBVX0NIQVIgKi4KCSogY3BwbGV4LmMgKHBhcnNlX2lmZGVmLCBwYXJzZV9pbmNsdWRlLCB2YWxpZGF0ZV9lbHNlKTogTWFrZQoJc2Vjb25kIGFyZ3VtZW50IGFuIFVfQ0hBUiAqLgoKCSogY3BwaW5pdC5jIChidWlsdGluX2FycmF5KTogTWFrZSBuYW1lIGFuZCB2YWx1ZSBVX0NIQVIgKiwgYWRkCglsZW5ndGggZmllbGQsIGNsZWFuIHVwIGluaXRpYWxpemVyLgoJKElTVEFCTEUpOiBBZGQgX19leHRlbnNpb25fXyB0byBkZXNpZ25hdGVkLQoJaW5pdGlhbGl6ZXJzIHZlcnNpb24uCgkqIGNwcGxleC5jIChDSEFSVEFCKTogTGlrZXdpc2UuCgoJKiBtYmNoYXIuYzogQWRkIGR1bW15IGV4dGVybmFsIGRlY2xhcmF0aW9uIHRvIHRoZSAhTVVMVElCWVRFX0NIQVJTCgljYXNlIHNvIHRoZSBmaWxlIHdvbid0IGJlIGVtcHR5LgoKV2VkIE1heSAgMyAyMTowMTo0NiAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChzdHJ1Y3QgcmVvcmRlcl9ibG9ja19kZWYpOiBNZW1iZXIgc3VjYyByZW1vdmVkLgoJKFJFT1JERVJfQkxPQ0tfU1VDQyk6IFJlbW92ZWQuCgkoZW51bSByZW9yZGVyX3NraXBfdHlwZSk6IFJlbW92ZWQuCgkoc2tpcF9pbnNuc19iZXR3ZWVuX2Jsb2NrKTogUmVuYW1lZCB0byBza2lwX2luc25zX2FmdGVyX2Jsb2NrLgoJUmVtb3ZlZCBzZWNvbmQgYXJndW1lbnQuIFJlbW92ZWQgZGVhZCBjb2RlIGFuZCBjbGVhbmVkIHVwLgoJKG1ha2VfcmVvcmRlcl9jaGFpbik6IFJlbW92ZWQgdXNlIG9mIFJFT1JERVJfQkxPQ0tfU1VDQy4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSB1c2Ugb2YgUkVPUkRFUl9TS0lQX0FGVEVSLiBSZW1vdmVkCglzZWNvbmQgcGFyYW1ldGVyIHRvIHNraXBfaW5zbnNfYWZ0ZXJfYmxvY2suCgpXZWQgTWF5ICAzIDEzOjI5OjU0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKHN0YXRpY3AsIGNhc2UgTEFCRUxfREVDTCk6IE5ldyBjYXNlLgoKMjAwMC0wNS0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdGFydC5lbmNhcCk6IERvIG5vdCBkZXBlbmQgb24gTElCR0NDMS4KCgkqIG1rbGliZ2NjMS5pbjogRml4IHR5cG8gbGFzdCBjaGFuZ2UuCgoyMDAwLTA1LTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChXQVJOX0NGTEFHUyk6IEFkZCAtcGVkYW50aWMgLVduby1sb25nLWxvbmcuCgkoTE9PU0VfQ0ZMQUdTKTogTmV3OiBDRkxBR1Mgd2l0aG91dCAtcGVkYW50aWMgYW5kIC1XdHJhZGl0aW9uYWwuCgkoR0NDX0NGTEFHUyk6IFVzZSBpdC4KCShMQU5HX0ZMQUdTX1RPX1BBU1MpOiBOZXc6IFNVQkRJUl9GTEFHU19UT19QQVNTIHdpdGggTE9PU0VfQ0ZMQUdTLgoJKiBjcC9NYWtlLWxhbmcuaW4sIGphdmEvTWFrZS1sYW5nLmluLCBmL01ha2UtbGFuZy5pbiwgY2gvTWFrZS1sYW5nLmluLAoJb2JqYy9NYWtlLWxhbmcuaW46IFVzZSBpdC4KCjIwMDAtMDUtMDMgIEphc29uIFIgVGhvcnBlICA8dGhvcnBlakB6ZW1idS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsc2hycWkyX2NtcG5vKTogVXNlIHEgbm90IHIgaW4gY29uc3RyYWludC4KCjIwMDAtMDUtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBta2xpYmdjYy5pbjogUmVzdHJpY3QgT0xEQ0M9R0NDIHRlc3QgdG8gbmF0aXZlLiAgRXF1YXRlCglMSUJHQ0MxIGVtcHR5IHdpdGggbGliZ2NjMS5udWxsLgoKV2VkIE1heSAgMyAxMjo1NTo0NiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2LCBjYXNlIE1BWF9FWFBSKTogRG9uJ3QgYWxsb3cgc2lnbmVkbmVzcwoJY2hhbmdlLgoKMjAwMC0wNS0wMyAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIHRyZWUuaCAodHJlZV9jb21tb24pOiBBZGQgYm91bmRlZF9mbGFnIG1lbWJlci4gIFJlbW92ZQoJaW5hY2N1cmF0ZSBjb21tZW50IGFib3V0IG51bWJlciBvZiByZW1haW5pbmcgYml0cy4KCShCT1VOREVEX0lORElSRUNUX1RZUEVfUCwgQk9VTkRFRF9QT0lOVEVSX1RZUEVfUCwKCUJPVU5ERURfUkVGRVJFTkNFX1RZUEVfUCwgTUFZQkVfQk9VTkRFRF9JTkRJUkVDVF9UWVBFX1AsCglNQVlCRV9CT1VOREVEX1BPSU5URVJfVFlQRV9QLCBNQVlCRV9CT1VOREVEX1JFRkVSRU5DRV9UWVBFX1AsCglUUkVFX0JPVU5ERUQsIFRZUEVfTUFJTl9WQVJJQU5UU19QSFlTSUNBTExZX0VRVUFMX1AsCglUWVBFX01BSU5fUEhZU0lDQUxfVkFSSUFOVCwgVFlQRV9CT1VOREVEKTogTmV3IG1hY3Jvcy4KCShUWVBFX1FVQUxfQk9VTkRFRCk6IE5ldyBjb25zdGFudC4KCShUWVBFX1FVQUxTKTogSGFuZGxlIGJvdW5kZWQgcXVhbGlmaWVyLgoJKFRSRUVfRVhQUl9RVUFMUywgVFJFRV9GVU5DX1FVQUxTKTogTmV3IG1hY3Jvcy4KCShUWVBFX0JPVU5ERURfVkFMVUUsIFRZUEVfQk9VTkRFRF9CQVNFLCBUWVBFX0JPVU5ERURfRVhURU5ULAoJVFlQRV9CT1VOREVEX1NVQlRZUEUsIFRZUEVfVU5CT1VOREVEX1ZBUklBTlQsIFRZUEVfUE9JTlRFUl9ERVBUSCwKCVRZUEVfQU1CSUVOVF9CT1VOREVETkVTUyk6IE5ldyBtYWNyb3MuCgkoTUFYX1BPSU5URVJfREVQVEgsIFZBX0xJU1RfUE9JTlRFUl9ERVBUSCk6IE5ldyBjb25zdGFudHMuCgkodHJlZV90eXBlKTogQWRkIHBvaW50ZXJfZGVwdGggbWVtYmVyLiAgUmVtb3ZlCglpbmFjY3VyYXRlIGNvbW1lbnQgYWJvdXQgbnVtYmVyIG9mIHJlbWFpbmluZyBiaXRzLgoJKERFQ0xfUE9JTlRFUl9ERVBUSCk6IEFkZCBtYWNyby4KCSh0cmVlX2RlY2wpOiBBZGQgcG9pbnRlcl9kZXB0aCBtZW1iZXIuCgpXZWQgTWF5ICAzIDIyOjUyOjUzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAodGVzdF9oYXJkX3JlZ19jbGFzcyk6IERlY2xhcmVkLgoJKiBjb25maWcvYXZyL2F2ci5jIChhc2hyaGkzX291dCk6IG9wdGltaXplZCBzaGlmdCBieSAxNS4KCShsc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGFzaHJzaTNfb3V0KTogYnVnZml4IGluIHNoaWZ0IGJ5IDguCgkodGVzdF9oYXJkX3JlZ19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2F2ci9hdnIubWQ6IEJ1Z2ZpeCBpbnNpZGUgY29uZGl0aW9ucyBpbiBwZWVwaG9sZXMuCgkoYXNobGhpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmFzaGxoaTNfaW5zbik6IHJlbmFtZWQgdG8gYXNobGhpMy4KCShhc2hsc2kzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqYXNobHNpM19pbnNuKTogcmVuYW1lZCB0byBhc2hsc2kzLgoJKGFzaHJxaTMpOiByZW1vdmVkIGRlZmluZV9leHBhbmQgb2YgdGhpcyBwYXR0ZXJuLgoJKCphc2hycWkzX2luc24pOiByZW5hbWVkIHRvIGFzaHJxaTMuCgkoYXNocmhpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmFzaHJoaTNfaW5zbik6IHJlbmFtZWQgdG8gYXNocmhpMy4KCShhc2hyc2kzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqYXNocnNpM19pbnNuKTogcmVuYW1lZCB0byBhc2hyc2kzLgoJKGxzaHJoaTMpOiByZW1vdmVkIGRlZmluZV9leHBhbmQgb2YgdGhpcyBwYXR0ZXJuLgoJKCpsc2hyaGkzX2luc24pOiByZW5hbWVkIHRvIGxzaHJoaTMuCgkobHNocnNpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmxzaHJzaTNfaW5zbik6IHJlbmFtZWQgdG8gbHNocnNpMy4KCjIwMDAtMDUtMDMgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLmM6IFJlcGxhY2luZyBpbmNsdXNpb24gb2YgInN0ZGlvLGgiIHdpdGgKCWluY2x1c2lvbiBvZiAic3lzdGVtLmgiLgoKV2VkIE1heSAgMyAxMTo0Mzo1MyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEFkZCBjaGVjayBmb3IKCVRSRUVfQVNNX1dSSVRURU4uCgoyMDAwLTA1LTAzICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogRm9yY2UgLW1jb25zdGFudC1ncAoJaWYgLW1hdXRvLXBpYyBpcyBvbi4KCShpYTY0X2VwaWxvZ3VlX3VzZXMpOiBNYXJrICJncCIgKHIxKSBhcyB1c2VkIGJ5IHRoZSBlcGlsb2d1ZSBpZgoJLW1jb25zdGFudC1ncCBpcyBpbiBlZmZlY3QgYW5kIGZ1bmN0aW9uLWRlc2NyaXB0b3JzIGFyZSBiZWluZyB1c2VkCgl0byBtYWtlIGluZGlyZWN0IGNhbGxzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1BU0tfQ09OU1RfR1ApOiBOZXcgbWFjcm8uCgkoTUFTS19BVVRPX1BJQyk6IERpdHRvLgoJKFRBUkdFVF9DT05TVF9HUCk6IERpdHRvLgoJKFRBUkdFVF9BVVRPX1BJQyk6IERpdHRvLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWNvbnN0YW50LWdwIGFuZCAtbWF1dG8tcGljIG9wdGlvbnMuCgkoQVNNX09VVFBVVF9ET1VCTEVfSU5UKTogRG9uJ3QgZ2VuZXJhdGUgQGZwdHIoKSBpZiAtbWF1dG8tcGljIG9yCgktbW5vLXBpYyBpcyBpbiBlZmZlY3QuCgkoQVNNX09VVFBVVF9YREFUQV9ET1VCTEVfSU5UKTogRGl0dG8uCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpKTogVXNlIGdlbl9sb2FkX2dwcmVsNjQoKSBpZgoJLW1hdXRvLXBpYyBpcyBpbiBlZmZlY3QuCgkoZ3ByZWw2NF9vZmZzZXQpOiBOZXcgcGF0dGVybi4KCShsb2FkX2dwcmVsNjQpOiBEaXR0by4KCShjYWxsKTogSGFuZGxlIC1tYXV0by1waWMgbGlrZSAtbW5vLXBpYyAoZG9uJ3QgdXNlIGZwdHIpLiAgSWYKCS1tY29uc3RhbnQtZ3AgaXMgaW4gZWZmZWN0LCBubyBuZWVkIHRvIHByZXNlcnZlIGdwIGFyb3VuZCBkaXJlY3QKCWNhbGxzLgoJKGNhbGxfdmFsdWUpOiBEaXR0by4KCSogY29uZmlnL2lhNjQvbGludXguaCAoUFJPRklMRV9CRUZPUkVfUFJPTE9HVUUpOiBEZWZpbmUuCgkoRlVOQ1RJT05fUFJPRklMRVIpOiBEZWZpbmUuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9PVVRQVVRfQ09OU1RSVUNUT1IpOiBEb24ndCBnZW5lcmF0ZQoJQGZwdHIoKSBkaXJlY3RpdmUgd2hlbiAtbW5vLXBpYyBvciAtbWF1dG8tcGljIGlzIGluIGVmZmVjdC4KCShBU01fT1VUUFVUX0RFU1RSVUNUT1IpOiBEaXR0by4KCjIwMDAtMDUtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IEFkZCBsaWJnY2MgbGliZ2NjLm1rLgoJKGxpYmdjYzEubnVsbCwgbGliZ2NjMS5jcm9zcywgbGliZ2NjMS5hKTogUmVtb3ZlIHRhcmdldHMuCgkobGliZ2NjMS1hc20uYSwgbGliZ2NjMS5TLCBsaWJnY2MyLmEpOiBSZW1vdmUgdGFyZ2V0cy4KCShta2xpYmdjYywgbGliZ2NjLm1rKTogTmV3IHRhcmdldHMuCgkobGliZ2NjLmEpOiBVc2UgbGliZ2NjLm1rLgoJKHN0bXAtbXVsdGlsaWIpOiBMaWtld2lzZS4KCShzdG1wLW11bHRpbGliLXN1Yik6IFJlbW92ZS4KCShtb3N0bHljbGVhbik6IERvbid0IGRlbGV0ZSBsaWJnY2MyIHRlbXAgZmlsZXMuCgkqIGNvbmZpZ3VyZS5pbiAoQUNfUFJPR19DQ19DX08pOiBBZGQuCgkoTk9fTUlOVVNfQ19NSU5VU19PKTogU3Vic3RpdHV0ZSBpdC4KCShhbGxfb3V0cHV0cyk6IEFkZCBta2xpYmdjYy4KCSogbWtsaWJnY2MuaW46IE5ldyBmaWxlLgoKMjAwMC0wNS0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBleHAuYyAob3BfdCk6IE1ha2UgYW4gaW50LgoKCSogcnRsYW5hbC5jIChkZWFkX29yX3NldF9yZWdub19wKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogRml4IHBhcmVudGhlc2lzLgoKCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IEZpeCBtYWNyb3MgdXNlZC4KCjIwMDAtMDUtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IEFsc28gZG9uJ3QgUFJPUF9SRUdfSU5GTyBmb3IKCWNhbGwtY2xvYmJlcmVkIHJlZ2lzdGVycyBvZiBhIGNhbGwuCgpXZWQgTWF5ICAzIDEyOjQwOjUzIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZ2Vuc3VwcG9ydC5jOiBOZXcgZmlsZS4KCSogZ2Vuc3VwcG9ydC5oOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKEhPU1RfUlRMKTogRGVwZW5kIG9uIGdlbnN1cHBvcnQuCgkoZ2Vuc3VwcG9ydC5vKSBOZXcgcnVsZS4KCSogZ2VuYXR0ci5jOiBVc2UgZ2Vuc3VwcG9ydCBmb3IgcmVhZGluZyAubWQgZmlsZXMuCgkqIGdlbmF0dHJ0YWIuYzogRGl0dG8uCgkqIGdlbmNvZGVzLmM6IERpdHRvLgoJKiBnZW5jb25maWcuYzogRGl0dG8uCgkqIGdlbmVtaXQuYzogRGl0dG8uCgkqIGdlbmV4dHJhY3QuYzogRGl0dG8uCgkqIGdlbmZsYWdzLmM6IERpdHRvLgoJKiBnZW5vcGluaXQuYzogRGl0dG8uCgkqIGdlbm91dHB1dC5jOiBEaXR0by4KCSogZ2VucGVlcC5jOiBEaXR0by4KCSogZ2VucmVjb2cuYzogRGl0dG8uCgkqIHJ0bC5kZWYgKGRlZmluZV9pbnNuX2FuZF9zcGxpdCk6IE5ldyBERUZfUlRMX0VYUFIuCgkqIG1kLnRleGkgKEluc24gU3BsaXR0aW5nKTogRG9jdW1lbnQgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoKVHVlIE1heSAgMiAwMDoyMDozMCAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZmxvdy5jICh2ZXJpZnlfZmxvd19pbmZvKTogQWRkZWQgdHdvIG1vcmUgc2FuaXR5IGNoZWNrcy4gVGhlCglmaXJzdCBjaGVja3MgdGhhdCB0aGUgYmxvY2tzIGFyZSBudW1iZXJlZCBjb25zZWN1dGl2ZWx5LiBUaGUgc2Vjb25kCgljaGVja3MgdGhhdCBuX2Jhc2ljX2Jsb2NrcyBpcyBhY3R1YWxseSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mCgliYXNpYyBibG9ja3MgaW4gdGhlIGluc24gY2hhaW4uCgoyMDAwLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaDogQWRkIGFjY2Vzc29yIG1hY3JvcyBmb3IgdG9rZW4gbGlzdHMuCgkqIGNwcGxpYi5jLCBjcHBoYXNoLmMsIGNwcGxleC5jOiBVc2UgdGhlbS4KCldlZCBNYXkgIDMgMDk6Mjk6MTcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX1JFRik6IERvbid0IGNoZWNrIGZvciBjaGVja2luZwoJbWVtb3J5IHVzYWdlIGlmIG5vdCBpbiBhIGZ1bmN0aW9uLgoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCwgY2FzZSBBRERSX0VYUFIpOiBPbmx5CglyZXR1cm4gYWRkcmVzcyBpZiBzdGF0aWMuCgpXZWQgTWF5ICAzIDEzOjE0OjQ5IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaWZjdnQuYyAobm9jZV90cnlfY21vdmVfYXJpdGgpOiAgVXNlIG1heV90cmFwX3AgdG8gdGhlc3QKCXdoZXRoZXIgYWRkcmVzcyBtYXkgdHJhcC4KClR1ZSBNYXkgIDIgMjM6Mzg6MzcgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIgKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogQ2hhbmdlZCBjb2RlIHRvIHRlc3QgZm9yCglFREdFX0ZBTExUSFJVIHJhdGhlciB0aGFuIG1ha2luZyBlcnJvbmVvdXMgYXNzdW1wdGlvbiB0aGF0IHRoZQoJZmlyc3Qgb3V0Z29pbmcgZWRnZSBpcyB0aGUgZmFsbC10aHJvdWdoIGVkZ2UuCgpUdWUgTWF5ICAyIDE4OjIwOjMxIDIwMDAgIERvbmFsZCBMaW5kc2F5ICA8ZGxpbmRzYXlAaG91bmQuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsZF92YV9saXN0LG1pcHNfdmFfc3RhcnQsbWlwc192YV9hcmcpOiBuZXcKCUFCSSBmb3IgdmFyYXJncywgYWNyb3NzIGFsbCBNSVBTLiBUaGlzIGlzIGluY29tcGF0aWJsZSBiZWNhdXNlIHRoZQoJdmFfbGlzdCAoX19idWlsdGluX3ZhX2xpc3QpIHN0cnVjdHVyZSBpcyBkaWZmZXJlbnQsIHNvIGEgY29tcGlsYXRpb24KCXVuaXQgcGFzc2luZyBhIHZhX2xpc3QgYW5kIGEgY29tcGlsYXRpb24gdW5pdCBiZWluZyBwYXNzZWQgb25lLCBzaG91bGQKCWJvdGggYmUgY29tcGlsZWQgd2l0aCB0aGUgc2FtZSBBQkkuIChUaGUgb2xkIHN0cnVjdHVyZSBoYWQgdHdvCglwb2ludGVycywgbm93IGl0IGhhcyB0aHJlZS4pCgpUdWUgTWF5ICAyIDE5OjE4OjQzIDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHN0cnVjdCByZW9yZGVyX2Jsb2NrX2RlZik6IFJlbW92ZSBtZW1iZXJzIGVuZCwKCWJsb2NrX2JlZ2luLCBhbmQgYmxvY2tfZW5kLgoJKFJFT1JERVJfQkxPQ0tfT0xEX0VORCk6IERlbGV0ZS4KCShSRU9SREVSX0JMT0NLX0JFR0lOKTogRGVsZXRlLgoJKFJFT1JERVJfQkxPQ0tfRU5EKTogRGVsZXRlLgoJKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogUmVtb3ZlIGRlYWQgY29kZS4KClR1ZSBNYXkgIDIgMTc6MDY6NTMgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAocmVtb3ZlX3Njb3BlX25vdGVzKTogQ2hlY2sgZm9yIGJvdGggdHlwZXMgb2Ygc2NvcGUKCW5vdGVzIGFzIHRoZSBlbmQgb2YgYSBiYXNpYyBibG9jayBiZWZvcmUgZGVsZXRpbmcuCgoyMDAwLTA1LTAyICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRml4IHNwZWxsaW5nIG9mICJuZWNlc3NhcnkiLgoKMjAwMC0wNS0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAoZGVidWdfaWdub3JlX2Jsb2NrKTogUmV0dXJuIGludC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9pZ25vcmVfYmxvY2spOiBMaWtld2lzZS4KCSogdG9wbGV2LmgsIGR3YXJmMm91dC5oOiBBZGp1c3QuCgkqIGVtaXQtcnRsLmMgKHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcyk6IFRlc3QgcmV0dXJuIHZhbHVlLgoKCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogRml4IHNwZWxsaW5nIG9mICJuZWNlc3NhcnkiLgoJKiB0b3BsZXYuYywgZmluYWwuYywgcnRsLmg6IEFkanVzdC4KCjIwMDAtMDUtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DSEVDS19QUk9HX1ZFUik6IE5ldyBtYWNyby4KCSogY29uZmlndXJlLmluOiBMb29rIGZvciBtYWtlaW5mbyBpbiB0aGUgdW5pZmllZCB0cmVlLCB0aGVuCglmb3IgYSBzeXN0ZW0gbWFrZWluZm8gd2hpY2ggaXMgc3VmZmljaWVudGx5IG5ldy4KCSogTWFrZWZpbGUuaW46IElmIGNvbmZpZ3VyZSBzYXlzIG1ha2VpbmZvIGlzIHRvbyBvbGQsIGRvbid0CglidWlsZCBvciBpbnN0YWxsIEluZm8gZG9jdW1lbnRhdGlvbi4KCjIwMDAtMDUtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9wYXJhbXMpOiBGaXggb2ZmLWJ5LW9uZSBlcnJvci4KCShkdW1wX2hhc2hfaGVscGVyKTogRHVtcCBhbGwgZm91ciBtYWNybyBub2RldHlwZXMuCgoyMDAwLTA1LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGhhc2guYyAodHJhZF9zdHJpbmdpZnkpOiBBZGp1c3QgcCBhZnRlciBzdHJpbmdpZmljYXRpb24gYXMKCXdlbGwuCgoyMDAwLTA1LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoQ1BQX1BPUCwgcGFyc2VfY2xlYW51cF90KTogRGVsZXRlLgoJKGNwcF9idWZmZXIpOiBSZW1vdmUgY2xlYW51cCwgc2Vlbl9lb2YsIG1hbnVhbF9wb3AgbWVtYmVycy4KCgkqIGNwcGZpbGVzLmMgKGZpbGVfY2xlYW51cCk6IERlbGV0ZS4KCSogY3BwaGFzaC5jIChtYWNyb19jbGVhbnVwKTogRGVsZXRlLgoJKGNvbGxlY3Rfb2JqbGlrZV9leHBhbnNpb24sIGNvbGxlY3RfZnVubGlrZV9leHBhbnNpb24sCgltYWNhcmcsIHNjYW5fYXJndW1lbnRzKTogUmVtb3ZlIENQUF9QT1AgY2FzZS4KCgkqIGNwcGxleC5jIChudWxsX2NsZWFudXApOiBEZWxldGUuCgkoY3BwX3BvcF9idWZmZXIpOiBEbyB0aGUgd29yayB0aGF0IHdhcyBkb25lIGluIHRoZSBjbGVhbnVwcwoJaGVyZS4gIENhbGwgX2NwcF91bndpbmRfaWZfc3RhY2sgZnJvbSBoZXJlLgoJKF9jcHBfZXhwYW5kX3RvX2J1ZmZlciwgY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LAoJY3BwX3NjYW5fYnVmZmVyKTogUnVuIHVudGlsIHdlIHNlZSBDUFBfRU9GIGFuZCB0aGUgdG9wIG9mCglzdGFjayBpcyB0aGUgYnVmZmVyIF9iZWxvd18gdGhlIG9uZSB3ZSBzdGFja2VkLgoJKGNwcF9nZXRfdG9rZW4pOiBBbHdheXMgcG9wIGFuIGV4aGF1c3RlZCBidWZmZXIuICBSZXR1cm4KCUNQUF9FT0YgdW5sZXNzIGl0J3MgYSBtYWNybyBidWZmZXIuICBEb24ndCBjYWxsIF9jcHBfaGFuZGxlX2VvZi4KCSogY3BwbGliLmMgKHNraXBfaWZfZ3JvdXApOiBEb24ndCBjYWxsIGNwcF9nZXRfdG9rZW4gdG8KCWluY3JlbWVudCB0aGUgbGluZSBudW1iZXIuCgkoX2NwcF9oYW5kbGVfZW9mKTogUmVuYW1lIHRvIF9jcHBfdW53aW5kX2lmX3N0YWNrLgoKCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSkgW3BhcnNpbmcgZ2V0Y2hhcigpXTogUnVuIHVudGlsCgl3ZSBzZWUgQ1BQX0VPRiBhbmQgdGhlIHRvcCBvZiBzdGFjayBpcyB0aGUgYnVmZmVyIF9iZWxvd18gdGhlCglvbmUgd2Ugc3RhY2tlZC4KCSogc2Nhbi1kZWNscy5jOiBMaWtld2lzZS4KCjIwMDAtMDUtMDIgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBIYW5kbGUgdGhlIGNhc2UKCXdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciB0aGUgc2Vjb25kIHRpbWUgb24gYSBkZWNsIHRoYXQKCWhhcyBoYWQgaXRzIHNlY3Rpb24gaW5mbyBjaGFuZ2VkIGluIHN1Y2ggYSB3YXkgYXMgdG8gbW92ZSBpdCBvdXQKCW9mIHNtYWxsIGRhdGEvYnNzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFRE9fU0VDVElPTl9JTkZPX1ApOiBOZXcgZGVmaW5pdGlvbi4KCjIwMDAtMDUtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChkZWFkX29yX3ByZWRpY2FibGUpOiBTZXQgbWVyZ2VfYmItPmVuZCB0byB0aGUgaW5zbiBiZWZvcmUKCXRoZSBzZXF1ZW5jZSB3ZSdyZSBtb3ZpbmcsIG5vdCB0byBtZXJnZV9iYi0+aGVhZC4KCjIwMDAtMDUtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGFscGhhKi0qLWxpbnV4LWdudWxpYmMxKikgW3RtYWtlX2ZpbGVdOiBSZW1vdmUKCXJlZmVyZW5jZSB0byBhbHBoYS90LWxpbnV4LgoJKGFscGhhKi0qLWxpbnV4LWdudSopOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCBlbWl0IHJlZyBub3RlcyBmb3IgYSBzaWJjYWxsLgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IFNraXAgZm9yX2VhY2hfc3VjY2Vzc29yX3BoaQoJaWYgbm90IGluIFNTQSBmb3JtLgoKCSogaWZjdnQuYyAoaWZfY29udmVydCk6IE9ubHkgdmVyaWZ5X2Zsb3dfaW5mbyBpZiBFTkFCTEVfQ0hFQ0tJTkcuCgoyMDAwLTA1LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogQ29weSBUUkVFX1JFQURPTkxZIGFuZAoJVFJFRV9USElTX1ZPTEFUSUxFLgoKMjAwMC0wNS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfZW1pdF9jbW92ZSk6IENvbmRpdGlvbmFsbHkgY29tcGlsZSBjYWxsIHRvCgllbWl0X2NvbmRpdGlvbmFsX21vdmUuCgoyMDAwLTA1LTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKExJTktfU1BFQyk6IFVzZSAvbGliL2xkLWxpbnV4LWlhNjQuc28uMQoJYXMgdGhlIGR5bmFtaWMgbGlua2VyLgoKMjAwMC0wNS0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAob3Blbl9pbmNsdWRlX2ZpbGUpOiBPcGVuIGZpbGUgaW4gYmxvY2tpbmcgbW9kZS4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IERvbid0IGZjbnRsKGZkLCBGX1NFVEZMLCAwKSBhbnltb3JlLgoJT25seSBleGNsdWRlIGJsb2NrIGRldmljZXMgYW5kIGRpcmVjdG9yaWVzLgoKCSogY3BwaGFzaC5jIChfY3BwX21ha2VfaGFzaG5vZGUpOiBSZW5hbWUgbWFrZV9IQVNITk9ERSwgbm93CglzdGF0aWMuICBBbGxvY2F0ZSB0aGUgaGFzaG5vZGUgYW5kIGl0cyBzdHJpbmcgaW4gdGhlIHNhbWUKCWJsb2NrIG9mIG1lbW9yeS4KCShkZWxfSEFTSE5PREUpOiBEb24ndCBmcmVlIGgtPm5hbWUuCgkoX2NwcF9sb29rdXApOiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgdGhpcyBzdHJpbmcsIGNyZWF0ZQoJb25lLCBvZiB0eXBlIFRfVk9JRC4KCShfY3BwX2xvb2t1cF9zbG90KTogRGVsZXRlLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwbGV4LmMgKG1heWJlX21hY3JvZXhwYW5kKTogQ2hlY2sgZm9yIGhwLT50eXBlID09IFRfVk9JRCwKCW5vdCBocCA9PSBOVUxMLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lLCBkb191bmRlZiwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0LAoJZG9fdW5hc3NlcnQsIGNwcF9kZWZpbmVkKTogVXNlIF9jcHBfbG9va3VwLiAgRG9uJ3QgY3JlYXRlIGEKCW5vZGUgaGVyZSwganVzdCBmaWxsIGluIHRoZSB2YWx1ZSBmaWVsZCBwcm9wZXJseS4gICJEZWxldGUiCgllbnRyaWVzIGJ5IHNldHRpbmcgdGhlIHZhbHVlIGZpZWxkIHRvIFRfVk9JRC4gIENoZWNrIGZvcgoJaHAtPnR5cGUgPT0gVF9WT0lELCBub3QgaHAgPT0gTlVMTC4KCgkqIE1ha2VmaWxlLmluIChjcHBsaWIubyk6IERvbid0IGRlcGVuZCBvbiAkKEhBU0hUQUJfSCkuCgkqIGNwcGVycm9yLmMsIGNwcGV4cC5jLCBjcHBsZXguYywgY3BwbGliLmM6ICBEb24ndCBpbmNsdWRlCgloYXNodGFiLmguCgoyMDAwLTA1LTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogRG8gbm90IGFkZAoJemVybyB0byBTUC4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoZXhwYW5kX2VwaWxvZ3VlKTogSWYgU1AgaXMgdG8gYmUKCWFkanVzdGVkIGJ5IGxlc3MgdGhhbiAyNTYgYnl0ZXMsIHVzZSByZXQgcmVnYXJkbGVzcyBvZiBoYXZpbmcgYW55CgljYWxsZWUtc2F2ZWQgcmVnaXN0ZXIgdG8gcmVzdG9yZS4KCjIwMDAtMDUtMDEgTGF1cnluYXMgQml2ZWluaXMgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiB0bS50ZXhpIChUQVJHRVRfSEFTX0ZfU0VURkxLVyk6IEZpeCB0eXBvLgoKMjAwMC0wNS0wMSBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb25maWcvaTM4Ni9kamdwcC5oIChJTlRfQVNNX09QKTogRGVmaW5lLgoJKENQUF9QUkVERUZJTkVTKTogUmVuYW1lIE1TRE9TIHRvIF9fTVNET1NfXy4KCShBU01fV0VBS0VOX0xBQkVMKTogRGVmaW5lLgoJKE1BU0tfQk5VMjEwKTogRGVmaW5lLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IERlZmluZS4KCShTVVBQT1JUU19XRUFLLCBTVVBQT1JUU19PTkVfT05MWSk6IERlZmluZS4KCShNQUtFX0RFQ0xfT05FX09OTFkpOiBEZWZpbmUuCgkoVU5JUVVFX1NFQ1RJT05fUCwgVU5JUVVFX1NFQ1RJT04pOiBEZWZpbmUuCgoyMDAwLTA1LTAxICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGkzODYvY3lnd2luLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgpNb24gTWF5ICAxIDE4OjIwOjA2IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhZGRyZXNzX2Nvc3QpOiByZW5hbWVkIHRvIGF2cl9hZGRyZXNzX2Nvc3QuCgkqIGNvbmZpZy9hdnIvYXZyLmggKEFERFJFU1NfQ09TVCk6IHVzZSBhdnJfYWRkcmVzc19jb3N0LgoKTW9uIE1heSAgMSAxNzo1MDo0NCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXNtX2ZpbGVfc3RhcnQpOiBvdXRwdXQgMCBhcyByMCBhbmQgMSBhcyByMSBpbgoJX190bXBfcmVnX18gYW5kIF9femVyb19yZWdfXyBpbml0aWFsaXphdGlvbi4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IE1hcmsgc2V0cyBldmVuIHdoZW4gdGhlIGluc24gaXMgZGVhZC4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IEZhaWwgdGhlIGNvbnZlcnNpb24gaWYgWCBpcwoJcmVmZXJlbmNlZCBiZXd0ZWVuIHRoZSBjb25kaXRpb24gYW5kIHRoZSBqdW1wLiAgRG9uJ3QgZGVsZXRlCglhbnl0aGluZyBidXQgdGhlIGp1bXAuCgpTdW4gQXByIDMwIDIyOjQ4OjI0IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHNjb3BlX2RlZik6IE5ldyBzdHJ1Y3QuCgkoc2NvcGVfZm9yZXN0X2luZm8pOiBOZXcgc3RydWN0LgoJKHN0cnVjdCByZW9yZGVyX2Jsb2NrX2RlZik6IE5ldyBtZW1iZXIgInNjb3BlIi4KCShSRU9SREVSX0JMT0NLX1NDT1BFKTogTmV3IG1hY3JvLgoJKHJlbGF0ZV9iYnNfd2l0aF9zY29wZXMpOiBOZXcgZnVuY3Rpb24gYW5kIHByb3RvdHlwZS4KCShtYWtlX25ld19zY29wZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3Njb3BlX2ZvcmVzdCk6IExpa2V3aXNlLgoJKHJlbW92ZV9zY29wZV9ub3Rlcyk6IExpa2V3aXNlLgoJKGluc2VydF9pbnRyYV8xKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2ludHJhX2JiX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2ludGVyX2JiX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkocmVidWlsZF9zY29wZV9ub3Rlcyk6IExpa2V3aXNlLgoJKGZyZWVfc2NvcGVfZm9yZXN0XzEpOiBMaWtld2lzZS4KCShmcmVlX3Njb3BlX2ZvcmVzdCk6IExpa2V3aXNlLgoJKGR1bXBfc2NvcGVfZm9yZXN0KTogTGlrZXdpc2UuCgkoZHVtcF9zY29wZV9mb3Jlc3RfMSk6IExpa2V3aXNlLgoJKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogU2V0IFJFT1JERVJfQkxPQ0tfU0NPUEUgZm9yIG5ldyBibG9jay4KCVVwZGF0ZSBSRU9SREVSX0JMT0NLX0VGRl9IRUFEIGFuZCBSRU9SREVSX0JMT0NLX0VGRl9FTkQgZm9yIG5ldwoJYmxvY2suCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBBZGRlZCBjYWxscyB0byBidWlsZF9zY29wZV9zY29wZV9mb3Jlc3QKCWFuZCByZW1vdmVfc2NvcGVfbm90ZXMgYmVmb3JlIHJlb3JkZXJpbmcgaXMgZG9uZS4gQWRkZWQgY2FsbHMgdG8KCXJlYnVpbGRfc2NvcGVfbm90ZXMsIGZyZWVfc2NvcGVfZm9yZXN0LCBhbmQgcmVvcmRlcl9ibG9ja3MgYWZ0ZXIKCWFmdGVyIHJlb3JkZXJpbmcgaXMgZG9uZS4KCjIwMDAtNDAtMzAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogIEFkZGVkIGRlZmluaXRpb25zIG5lZWRlZCBieSBPU1I1LAoJcmVtb3ZlZCB0d28gc3RhbGUgZW50cmllcyAoZGVmaW5lZCBhd2F5IHdpdGggT0xEX0NQUCkuCgkqIGZpeGluYy9pbmNsaGFjay5zaDogcmVnZW4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChkZWFkX29yX3ByZWRpY2FibGUpOiBNYW51YWxseSBzcXVlZXplIG5vbi1tb3ZhYmxlIG5vdGVzCglmcm9tIHRoZSBsYXN0IGluc24gaW4gdGhlIHNlcXVlbmNlLgoKMjAwMC0wNC0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKGNwcF9pZGNtcCk6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGliLmg6IFByb3RvdHlwZSBpdC4KCSogc2Nhbl9kZWNscy5jIChzY2FuX2RlY2xzKTogVXNlIGl0IHRvIGluc3BlY3QgdG9rZW4gbmFtZXMuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBMaWtld2lzZS4gIFNldCBzeXN0ZW1faGVhZGVyX3Agb24KCXRoZSBmaWxlIGJlaW5nIHJ1biB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IuCgkoY2hlY2tfbWFjcm9fbmFtZXMpOiBQcm92aWRlIGxlbmd0aCBvZiB0b2tlbiB0byBjcHBfZGVmaW5lZC4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgc3RhbGUgd2FybmluZyBtZXNzYWdlLgoKCSogY3BwZmlsZXMuYyAocmVkdW5kYW50X2luY2x1ZGVfcCk6IFByb3ZpZGUgbGVuZ3RoIG9mIHRva2VuIHRvCgljcHBfZGVmaW5lZC4KCSogY3BwaGFzaC5jIChfY3BwX21ha2VfaGFzaG5vZGUsIF9jcHBfbG9va3VwX3Nsb3QpOiBIYXNoCgl2YWx1ZXMgYXJlIHVuc2lnbmVkIGludC4KCShfY3BwX2xvb2t1cCwgX2NwcF9sb29rdXBfc2xvdCk6IERvIG5vdCBjYWxjdWxhdGUgdGhlIGxlbmd0aC4KCShfY3BwX2xvb2t1cF9zbG90KTogRG8gbm90IGNhbGN1bGF0ZSB0aGUgaGFzaCwgZWl0aGVyLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lLCBkb191bmRlZiwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0KToKCUhhc2hlcyBhcmUgdW5zaWduZWQgaW50LiAgQ2FsY3VsYXRlIGhhc2ggaGVyZSwgcGFzcyBieSB2YWx1ZQoJdG8gX2NwcF9sb29rdXBfc2xvdC4KCjIwMDAtMDQtMzAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogc2ltcGxpZnktcnR4LmMgKGNoZWNrX3ZhbHVlX3VzZWxlc3MpOiBEZWxldGUgZnVuY3Rpb24uCgkoZGlzY2FyZF91c2VsZXNzX2xvY3MpOiBEb24ndCBjYWxsIGl0OyBtYW5hZ2UgTl9VU0VMRVNfVkFMVUVTIGNvdW50ZXIKCWJ5IGhhbmQuCgkoY3NlbGliX2ludmFsaWRhdGVfcmVnbm8pOiBMaWtld2lzZS4KCShjc2VsaWJfaW52YWxpZGF0ZV9tZW1fMSk6IExpa2V3aXNlLgoJKHJlZmVyZW5jZXNfdmFsdWVfcCk6IFJlY29nbml6ZSB1c2VsZXNzIHZhbHVlcyBieSB0aGUgZmFjdCB0aGF0IHRoZXkKCWhhdmUgbm8gbG9jYXRpb25zLgoJKGRpc2NhcmRfdXNlbGVzc192YWx1ZXMpOiBMaWtld2lzZS4KCShjc2VsaWJfcmVjb3JkX3NldCk6IFRoaXMgbWF5IHR1cm4gYSB1c2VsZXNzIHZhbHVlCglpbnRvIGEgdXNlZnVsIG9uZS4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvZDMwdjogTmV3IHBvcnQuCgoJKiBjb25maWd1cmUuaW4gKGQzMHYtKik6IFNldCBmcCBmb3JtYXQuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgaXQuCgkoaWZjdnQubyk6IE5ldyB0YXJnZXQuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogUmVtb3ZlIGFsbCBjb2RlIHJlbGF0ZWQgdG8gaWYtY29udmVyc2lvbiwKCWFuZCBjb25kaXRpb25hbCBhcml0aG1ldGljLgoJKGZpbmRfaW5zZXJ0X3Bvc2l0aW9uKTogUmVtb3ZlLgoJKiB0aW1ldmFyLmRlZiAoVFZfSUZDVlQsIFRWX0lGQ1ZUMik6IE5ldy4KCSogdG9wbGV2LmMgKERGSV9jZSwgREZJX2NlMik6IE5ldy4KCShkdW1wX2ZpbGUpOiBBZGQgY2UgYW5kIGNlMiBkdW1wcy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIGlmX2NvbnZlcnQgYSBjb3VwbGUgbyB0aW1lcy4gIFNldAoJY3NlX25vdF9leHBlY3RlZCBhZnRlciBjc2UyLiAgRG9uJ3Qgc2V0IG5vX25ld19wc2V1ZG9zIHVudGlsCglhZnRlciBzY2hlZDEgb3IgcmVjb21wdXRlX3JlZ191c2FnZS4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvdC1jcnRiZSAoY3J0YmVnaW4ubyk6IEFkZCAiLUkuIi4KCShjcnRlbmQubywgY3J0YmVnaW5TLm8sIGNydGVuZFMubyk6IExpa2V3aXNlLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3RydWN0IHJlZ19jb25kX2xpZmVfaW5mbyk6IE5ldy4KCShzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBBZGQgcmVnX2NvbmRfZGVhZCBhbmQgcmVnX2NvbmRfcmVnLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBJbml0aWFsaXplIHRoZW0uCgkoZnJlZV9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERlc3RydWN0IHRoZW0uCgkobWFya19zZXRfMSk6IENvbnNpZGVyIGNvbmRpdGlvbmFsIGxpZmUgYmVmb3JlIGtpbGxpbmcgYSByZWdpc3Rlci4KCShtYXJrX3JlZ25vX2NvbmRfZGVhZCk6IE5ldy4KCShmcmVlX3JlZ19jb25kX2xpZmVfaW5mbyk6IE5ldy4KCShmbHVzaF9yZWdfY29uZF9yZWdfMSwgZmx1c2hfcmVnX2NvbmRfcmVnKTogTmV3LgoJKGlvcl9yZWdfY29uZCwgbm90X3JlZ19jb25kLCBuYW5kX3JlZ19jb25kKTogTmV3LgoJKG1hcmtfdXNlZF9yZWcpOiBSZWNvcmQgY29uZGl0aW9uYWwgbGlmZS4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2luc25zKTogRGlzYWJsZSBkZWF0aCBjb3VudGluZwoJc2FuaXR5IGNoZWNrIGZvciBIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbi4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVElNRVZBUl9IKTogTmV3LgoJKGdnYy1zaW1wbGUubywgZ2djLXBhZ2UubywgdG9wbGV2Lm8sIHRpbWV2YXIubyk6IFVzZSBpdC4KCSh0aW1ldmFyLmgpOiBSZW1vdmUgcnVsZS4KCjIwMDAtMDQtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvY3J0ZW5kLmFzbTogVXNlIEMgY29tbWVudHMgaW5zdGVhZCBvZiAjLgoJKiBjb25maWcvYWxwaGEvY3J0YmVnaW4uYXNtOiBMaWtld2lzZS4gIE1hcmsgX19kc29faGFuZGxlIGhpZGRlbi4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoU0VMRUNUX1NFQ1RJT04pOiBUcmVhdCBDT05TVFJVQ1RPUiBsaWtlIFZBUl9ERUNMLgoKMjAwMC0wNC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oIChlbnVtIG5vZGVfdHlwZTogVGFrZSBvdXQgVF9NQ09OU1QuCgkodW5pb24gaGFzaHZhbCk6IE1vdmUgaW50byBzdHJ1Y3QgaGFzaG5vZGUuCgkoc3RydWN0IGhhc2hub2RlKTogUGFjayB0aWdodGVyLiAgUmVtb3ZlIGZpbGUsIGxpbmUsIGNvbAoJbWVtYmVycy4KCSogY3BwaGFzaC5jOiBDb25zdGlmeSBtb3N0IG9mIHRoZSBtYWNyby1kZWZpbml0aW9uIHN0cnVjdHVyZXMuCgkoc3RydWN0IGRlZmluaXRpb24pOiBSZXBsYWNlIGJ5IHN0cnVjdCBvYmplY3RfZGVmbgoJYW5kIHN0cnVjdCBmdW5jdF9kZWZuLiAgUHV0IGZpbGUsIGxpbmUsIGNvbHVtbiBpbmZvcm1hdGlvbgoJaGVyZS4gIEFsbCB1c2VycyB1cGRhdGVkIHRvIG1hdGNoLgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24sIF9jcHBfbWFjcm9leHBhbmQpOiBSZW1vdmUgc3BlY2lhbAoJY2FzZSBmb3IgI2RlZmluZSBXT1JEIE9USEVSV09SRC4KCSogY3BwbGliLmMgKGRvX3VuZGVmKTogUmVtb3ZlIFRfTUNPTlNUIGNhc2UuCgoJKiBjcHBoYXNoLmg6IE1vdmUgc3RydWN0IHJlZmxpc3QsIHN0cnVjdCBkZWZpbml0aW9uLCBhbmQgdGhlCglERUZJTklUSU9OIHR5cGVkZWYgdG8gY3BwaGFzaC5jLiAgVXNlICdzdHJ1Y3QgZGVmaW5pdGlvbiAqJyBpbgoJdW5pb24gaGFzaHZhbC4gIF9jcHBfZnJlZV9kZWZpbml0aW9uIHRha2VzIGEgSEFTSE5PREUgcG9pbnRlci4KCSogY3BwaGFzaC5jIChfY3BwX2ZyZWVfZGVmaW5pdGlvbik6IEZyZWUgZGF0YSBwb2ludGVkIHRvIGJ5CglNQ09OU1QsIFhDT05TVCwgTUFDUk8sIGFuZCBGTUFDUk8gbm9kZXMgcHJvcGVybHkuCgkoX2NwcF9jcmVhdGVfZGVmaW5pdGlvbiwgZGVsX0hBU0hOT0RFKTogSnVzdCBjYWxsCglfY3BwX2ZyZWVfZGVmaW5pdGlvbiB0byBjbGVhciBvdXQgYSBoYXNobm9kZS4KCSogY3BwbGliLmMgKGRvX3ByYWdtYV9wb2lzb24pOiBMaWtld2lzZS4KClNhdCBBcHIgMjkgMTI6MjU6MTcgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEZJUlNUX0RBVEFfUkVHTlVNLAoJTEFTVF9EQVRBX1JFR05VTSwgRklSU1RfQUREUkVTU19SRUdOVU0sIExBU1RfQUREUkVTU19SRUdOVU0sCglGSVJTVF9FWFRFTkRFRF9SRUdOVU0sIExBU1RfRVhURU5ERURfUkVHTlVNKTogTmV3IG1hY3Jvcy4KCShSRUdOT19TUF9QKTogUmVkZWZpbmUgaW4gdGVybXMgb2YgU1RBQ0tfUE9JTlRFUl9SRUdOVU0uCgkoUkVHTk9fREFUQV9QLCBSRUdOT19BRERSRVNTX1AsIFJFR05PX0VYVEVOREVEX1AsCglSRUdOT19BTTMzX1ApOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiB0aGUgbmV3IG1hY3Jvcy4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSwgUkVHTk9fUkVHX0NMQVNTKTogTGlrZXdpc2UuCgkoRlVOQ1RJT05fVkFMVUUsIExJQkNBTExfVkFMVUUsIEZVTkNUSU9OX1ZBTFVFX1JFR05PX1AsCglTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShTVEFDS19QT0lOVEVSX1JFR05VTSwgRlJBTUVfUE9JTlRFUl9SRUdOVU0sCglBUkdfUE9JTlRFUl9SRUdOVU0sIFNUQVRJQ19DSEFJTl9SRUdOVU0pOiBMaWtld2lzZS4gIE1vdmVkLgoKU2F0IEFwciAyOSAwMToxODo0NSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZ21vdmUuYyAoc3RydWN0IHJlY29yZF9zdGFja19tZW1yZWZzX2RhdGEpOiBOZXcuCgkocmVjb3JkX3N0YWNrX21lbXJlZnMpOiBOZXcgZnVuY3Rpb24uCgkoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBVc2UgaXQuCgpTYXQgQXByIDI5IDAxOjE1OjI3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoY2FsbHNfZnVuY3Rpb25fMSk6ICBQcm9wZXJseSBoYW5kbGUgVFJFRV9MSVNUIGV4cHJlc3Npb25zOwoJdXNlIHNwZWNpYWxfZnVuY3Rpb25fcCB0byBkZXRlY3QgYWxsb2NhLgoKRnJpIEFwciAyOCAxNjozMDozMyAyMDAwICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBnY2MudGV4aTogRml4ZXMgZm9yIG1ha2VpbmZvIDQuMCAtLWh0bWwuCgoyMDAwLTA0LTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBwY3AuaDogRGVsZXRlIGZpbGUuCgoyMDAwLTA0LTI4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKGZ1bmN0aW9uX2VwaWxvZ3VlKTogQ2xlYW4gdXAgZmxhZ3Mgd2hlbiB0aGUgbGFzdCBpbnNuCglpbiBhIGZ1bmN0aW9uIGlzIGEgYmFycmllci4KCjIwMDAtMDQtMjggIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogY29uZmlndXJlLmluIChzcGFyYy1oYWwtc29sYXJpczIqKTogcHJvdGVjdCBbXSBnbG9iIGZyb20KCW15IGV4cGFuc2lvbi4KCShtaXBzKi0qLWVjb2ZmKiwgbWlwcyotKi1lbGYqLCBtaXBzKi0qLSopOiB1c2UgTUFTS18gZGVmaW5lcwoJcmF0aGVyIHRoYW4gaGFyZC1jb2RlZCBjb25zdGFudHMgaW4gdGFyZ2V0X2NwdV9kZWZhdWx0Mi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGdldF9jYWxsZWVfZm5kZWNsKTogRXh0cmFjdCB0aGUgaW5pdGlhbCB2YWx1ZSBmcm9tCglhIHJlYWRvbmx5IGRlY2wuCgoyMDAwLTA0LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdmFyYXNtLmMgKHJlY29yZF9jb25zdGFudF8xKTogUmVjb3JkIHRoZSBDT0RFX0xBQkVMIHdoZW4KCXRha2luZyB0aGUgYWRkcmVzcyBvZiBhIExBQkVMX1JFRi4KCjIwMDAtMDQtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwpOiBSZXR1cm4gdGhlCglhZGp1c3RtZW50OyBkb24ndCBkbyB0aGUgc3RhY2sgYWRqdXN0LgoJKGV4cGFuZF9jYWxsKTogQ2FsbCBjb21wdXRlX2FyZ3VtZW50X2Jsb2NrX3NpemUgcmlnaHQgYmVmb3JlCglhbGxvY2F0aW5nIHRoZSBibG9jazsgdXBkYXRlIGNvbW1lbnQ7IGRvbid0IGRvIGFsaWdubWVudCBzYW5pdHkKCWNoZWNraW5nIGZvciBzaWJsaW5nIGNhbGw7IHVzZSBhcmdzX3NpemUgaW5zdGVhZCBvZgoJdW5hZGp1c3RlZF9hcmdzX3NpemUgYmVmb3JlIGFyZ3Nfc2l6ZSBpcyBhZGp1c3RlZC4gIFVzZQoJY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwgdG8gY29tcHV0ZSBzdGFjayBhZGp1c3QKCWZvciBtdXN0X3ByZWFsbG9jYXRlIGNhc2UuCgoJKiBleHByLmMgKHB1c2hfYmxvY2spOiBSZW1vdmUgc2hhZG93IGB0ZW1wJyBpbiBpbm5lciBzY29wZS4KCjIwMDAtMDQtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsCglub3RlX2RlZmVycmFsX29mX2RlZmluZWRfaW5saW5lX2Z1bmN0aW9uIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uCgljYW4ndCBiZSBpbmxpbmVkLgoKMjAwMC0wNC0yOCAgU2NvdHQgQmFtYnJvdWdoICA8c2NvdHRiQG5ldHdpbmRlci5vcmc+CgoJKiBjcHBsZXguYyAoX2NwcF9zY2FuX2xpbmUpOiBGaXggYnVmZmVyIG92ZXJ3cml0ZS4KCjIwMDAtMDQtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uKTogRml4IHNkYiBUSU1FVkFSIHR5cG8uCgoyMDAwLTA0LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0aW1ldmFyLmMgKGluaXRfdGltZXZhcik6IERlQU5TSWZ5IGZ1bmN0aW9uIGRlZmluaXRpb24uCgoyMDAwLTA0LTI3ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRpbWV2YXIubyk6IERlcGVuZCBvbiBmbGFncy5oLgoJKiB0aW1ldmFyLmMgKHVudXNlZF9zdGFja19pbnN0YW5jZXMpOiBOZXcgdmFyaWFibGUuCgkodGltZXZhcl9wdXNoKTogVGFrZSBhIHRpbWV2YXJfc3RhY2tfZGVmIGZyb20KCXVudXNlZF9zdGFja19pbnN0YW5jZXMgaWYgYXZhaWxhYmxlLgoJKHRpbWV2YXJfcG9wKTogUHVzaCB0aGUgcG9wcGVkIHRpbWV2YXJfc3RhY2tfZGVmIG9udG8KCXVudXNlZF9zdGFja19pbnN0YW5jZXMuCgkoVElNRVZBUl9FTkFCTEUpOiBOZXcgbWFjcm8uCgkodGltZXZhcl9kZWYpOiBNYWtlIHN0YW5kYWxvbmUgYSAxLWJpdCBmaWVsZC4gIEFkZCBmaWVsZCB1c2VkLgoJKGdldF90aW1lKTogUmVuYW1lIHBhcmFtZXRlciB0byBub3cuICBSZXR1cm4gYWZ0ZXIgY2xlYXJpbmcgaXQgaWYKCW5vdCBUSU1FVkFSX0VOQUJMRS4KCShpbml0X3RpbWV2YXIpOiBEbyBub3RoaW5nIGlmIG5vdCBUSU1FVkFSX0VOQUJMRS4KCSh0aW1ldmFyX3BvcCk6IExpa2V3aXNlLgoJKHRpbWV2YXJfc3RvcCk6IExpa2V3aXNlLgoJKHRpbWV2YXJfcHVzaCk6IExpa2V3aXNlLiAgTWFyayB0aGUgdGltaW5nIHZhcmlhYmxlIGFzIHVzZWQuCgkodGltZXZhcl9zdGFydCk6IExpa2V3aXNlLgoJKHRpbWV2YXJfcHJpbnQpOiBEbyBub3RoaW5nIGlmIG5vdCBUSU1FVkFSX0VOQUJMRS4gIERvbid0IHByaW50Cgl0aW1ldmFycyB0aGF0IHdlcmUgbmV2ZXIgdXNlZC4KCjIwMDAtMDQtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IFJFRkVSRU5DRV9UWVBFUyBhcmUKCWFsd2F5cyBUUkVFX1JFQURPTkxZLgoKMjAwMC0wNC0yNyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBpMzg2LmggKEZVTkNUSU9OX0JMT0NLX1BST0ZJTEVSX0VYSVQpOiBHZW5lcmF0ZSBtZW0gcmVmZXJlbmNlCglmb3IgY2FsbCBpbnN0cnVjdGlvbiB3aXRoIG1vZGUgUUltb2RlLgoKMjAwMC0wNC0yNyAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHRpbWV2YXIuby4KCSh0b3BsZXYubyk6IERlcGVuZCBvbiB0aW1ldmFyLmguCgkoZ2djLXNpbXBsZS5vKTogTGlrZXdpc2UuCgkoZ2djLXBhZ2Uubyk6IExpa2V3aXNlLgoJKHRpbWV2YXIubyk6IE5ldyBydWxlLgoJKHRpbWV2YXIuaCk6IE5ldyBydWxlLgoKCSogdGltZXZhci5oOiBOZXcgZmlsZS4KCSogdGltZXZhci5jOiBMaWtld2lzZS4KCSogdGltZXZhci5kZWY6IExpa2V3aXNlLgoKCSogdG9wbGV2LmggKGdjX3RpbWUsIHBhcnNlX3RpbWUsIHZhcmNvbnN0X3RpbWUpOiBSZW1vdmUuCgkqIHRvcGxldi5jOiBVc2UgdGltZXZhcl9wdXNoIGFuZCB0aW1ldmFyX3BvcCBpbnN0ZWFkIG9mIFRJTUVWQVIKCXRocm91Z2hvdXQuCgkoVElNRVZBUik6IFJlbW92ZSBtYWNyby4KCShnY190aW1lLCBwYXJzZV90aW1lLCB2YXJjb25zdF90aW1lLCBpbnRlZ3JhdGlvbl90aW1lLCBqdW1wX3RpbWUsCgljc2VfdGltZSwgZ2NzZV90aW1lLCBsb29wX3RpbWUsIGNzZTJfdGltZSwgYnJhbmNoX3Byb2JfdGltZSwKCWZsb3dfdGltZSwgY29tYmluZV90aW1lLCByZWdtb3ZlX3RpbWUsIHNjaGVkX3RpbWUsCglsb2NhbF9hbGxvY190aW1lLCBnbG9iYWxfYWxsb2NfdGltZSwgZmxvdzJfdGltZSwgcGVlcGhvbGUyX3RpbWUsCglzY2hlZDJfdGltZSwgZGJyX3NjaGVkX3RpbWUsIHJlb3JkZXJfYmxvY2tzX3RpbWUsCglyZW5hbWVfcmVnaXN0ZXJzX3RpbWUsIHNob3J0ZW5fYnJhbmNoX3RpbWUsIHN0YWNrX3JlZ190aW1lLAoJdG9fc3NhX3RpbWUsIGZyb21fc3NhX3RpbWUsIGZpbmFsX3RpbWUsIHN5bW91dF90aW1lLCBkdW1wX3RpbWUsCglhbGxfdGltZSk6IFJlbW92ZS4KCShjb21waWxlX2ZpbGUpOiBEb24ndCBpbml0aWFsaXplIHRpbWUgdmFyaWFibGVzLiAgQ2FsbAoJaW5pdF90aW1ldmFyIGFuZCBzdGFydCBUVl9UT1RBTCB0aW1lci4gIENhbGwgdGltZXZhcl9wcmludCBpbnN0ZWFkCglvZiBtYW55IGNhbGxzIHRvIHByaW50X3RpbWUuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IEFkZCB0aW1pbmcgZm9yIHJlbG9hZF9jc2VfcmVncy4KCShnZXRfcnVuX3RpbWUpOiBSZW1vdmVkIHRvIHRpbWV2YXIuYy4KCShwcmludF90aW1lKTogTGlrZXdpc2UuCgkoZ2V0X3J1bl90aW1lKTogSW1wbGVtZW50IHVzaW5nIFRWX1RPVEFMIHRpbWUgdmFyaWFibGUuCgkocHJpbnRfdGltZSk6IEdldCB0b3RhbCBydW4gdGltZSBmcm9tIGdldF9ydW5fdGltZS4KCSogZ2djLXBhZ2UuYyAoZ2djX2NvbGxlY3QpOiBQdXNoIGFuZCBwb3AgVFZfR0MgaW5zdGVhZCBvZgoJY29tcHV0aW5nIGVsYXBzZWQgdGltZSBleHBsaWNpdGx5LgoJKiBnZ2Mtc2ltcGxlLmMgKGdnY19jb2xsZWN0KTogTGlrZXdpc2UuCgkoZ2NfdGltZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCjIwMDAtMDQtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChjb21iaW5lX3BlbmRpbmdfc3RhY2tfYWRqdXN0bWVudF9hbmRfY2FsbCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfY2FsbCk6IFVzZSBpdC4KCjIwMDAtMDQtMjcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZsb3cuYyAobWFya19zZXRfMSk6ICBIYW5kbGUgTUVNcyBpbiBaRVJPX0VYVFJBQ1QvU0lHTl9FWFRSQUNUCglmaWVsZHMuCgpUaHUgQXByIDI3IDEyOjQ3OjAwIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92aGkpOiBTaW1wbGlmeS4gIFByZWZlciBkYXRhCglyZWdpc3RlcnMuCgpUaHUgQXByIDI3IDE3OjMzOjA1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZnVuY3Rpb24uYyAoZXBpbG9ndWVfZG9uZSk6IFBhc3Mgd2hvbGUgaW5zbiB0byByZWNvcmRfaW5zbnMuCgpUaHUgQXByIDI3IDE2OjU1OjI4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlLmMgKENTRV9BRERSRVNTX0NPU1QpOiBSZW1vdmUuCgkoZmluZF9iZXN0X2FkZHIpOiBBZGQgbmV3IHBhcmFtZXRlciAiTU9ERSIsIHVzZSBhZGRyZXNzX2Nvc3QgaW5zdGVhZAoJb2YgQ1NFX0FERFJFU1NfQ09TVAoJKGFkZHJlc3NfY29zdCk6IE5ldy4KCShmb2xkX3J0eCk6IFVwZGF0ZSBjYWxsIG9mIGZpbmRfYmVzdF9hZGRyLgoJKiBydGwuaCAoYWRkcmVzc19jb3N0KTogRGVjbGFyZS4KCSogbG9vcC5jIChnZW5lcmFsX2luZHVjdGlvbl92YXIpOiBBZGQgbmV3IHBhcmFtZXRlciAiTU9ERSIsIHVzZQoJYWRkcmVzc19jb3N0IGluc3RlYWQgb2YgQUREUkVTU19DT1NUCgkoaW5pdF9sb29wKTogVXNlIGFkZHJlc3NfY29zdCBpbnN0ZWFkIG9mIEFERFJFU1NfQ09TVC4KCShjaGVja19pbnNuX2Zvcl9naXZzKTogVXBkYXRlIGNhbGwgb2YgZ2VuZXJhbF9pbmR1Y3Rpb25fdmFyLgoJKGZpbmRfbWVtX2dpdnMpOiBMaWtld2lzZS4KCShjb25zZWNfc2V0c19naXYpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChBRERSRVNTX0NPU1QpOiBDYWxsIGl4ODZfYWRkcmVzc19jb3N0LgoJKiBpMzg2LmMgKGl4ODZfYWRkcmVzc19jb3N0KTogTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2FkZHJlc3NfY29zdCk6IERlY2xhcmUuCgpUaHUgQXByIDI3IDExOjQ1OjE2IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92cWkpOiBTaW1wbGlmeS4gIFByZWZlciBkYXRhCglyZWdpc3RlcnMuCgpUaHUgQXByIDI3IDE2OjExOjAwIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZXhwci5jIChzdG9yZV9leHByKTogVXNlIGNsZWFyX3N0b3JhZ2UgaW5zdGVhZCBvZiBkaXJlY3QgbWVtc2V0CglsaWJjYWxsLgoKVGh1IEFwciAyNyAxMDozNjo1MSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9hZGRyZXNzX2Nvc3QpOiBUZXN0CglBU0hJRlQsIEFORCBhbmQgTEFCRUxfUkVGLgoKVGh1IEFwciAyNyAxNTowODo0NiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGludm9rZS50ZXhpICgtZm9wdGltaXplLXNpYmxpbmctY2FsbHMpOiBGaXguCgpUaHUgQXByIDI3IDE0OjU0OjIyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChsb2FkX21lbXMpICBEb24ndCB1c2UgaGFyZCByZWdpc3RlcnMgZm9yIHRoZSBob2lzdGluZy4KCgkqIHVucm9sbC5jICh1bnJvbGxfbG9vcCk6IEF2b2lkIG92ZXJmbG93IGluIHRoZSBuX2l0ZXJhdGlvbnMKCWNhbGN1bGF0aW9uOyByZW5hbWUgY29uc3RfZXF1aXYgYXJyYXkgaW4gdGhlIHByZWNvbmRpdGlvbmluZyBjb2RlCglmcm9tIGxvb3BfdW5yb2xsIHRvIGxvb3BfdW5yb2xsX3ByZWNvbmRpdGlvbgoKMjAwMC0wNC0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3RydWN0IHByb3BhZ2F0ZV9ibG9ja19pbmZvKTogUmVtb3ZlIG5ld19kZWFkLCBuZXdfbGl2ZTsKCWFkZCBuZXdfc2V0LgoJKHByb3BhZ2F0ZV9vbmVfaW5zbik6IENsZWFyIGl0LiAgRG9uJ3QgdXBkYXRlIHJlZ19saXZlIGhlcmUuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IFVwZGF0ZSBmb3IgcGJpIG1lbWJlciBjaGFuZ2VzLgoJKGZyZWVfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCShtYXJrX3NldF8xKTogS25vdyB0aGF0IHplcm9fZXh0cmFjdCwgc2lnbl9leHRyYWN0LCBhbmQKCXN0cmljdF9sb3dfcGFydCBkb24ndCBraWxsIHRoZWlyIGFyZ3VtZW50LiAgQWx0ZXIgaGFyZCBzdWJyZWdzLgoJVXBkYXRlIG5ld19zZXQgZm9yIG5vbi1DTE9CQkVSIHNldHMuICBVcGRhdGUgcmVnX2xpdmUuCgkoZmluZF9hdXRvX2luYyk6IFVwZGF0ZSByZWdfbGl2ZSwgbm90IG5ld19kZWFkLgoJKG1hcmtfdXNlZF9yZWcpOiBVcGRhdGUgcmVnX2xpdmUsIG5vdCBuZXdfbGl2ZS4gIEV4YW1pbmUgbmV3X3NldAoJdG8gZGV0ZXJtaW5lIGlmIHRoZSByZWcgaW4gcXVlc3Rpb24gd2FzIHNldCB0aGlzIGluc24uICBPbmx5IHVwZGF0ZQoJcmVnIGluZm8gd2l0aCBQUk9QX1JFR19JTkZPLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoYWxsb2NhdGVfcmVnX2xpZmVfZGF0YSk6IFNldCBtYXhfcmVnbm8gaGVyZSAuLi4KCShsaWZlX2FuYWx5c2lzKTogLi4uIG5vdCBoZXJlLgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEZvcmNlIHN0YWNrIHBvaW50ZXIKCWxpdmUgYXQgZW5kLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAocmVkaXJlY3RfZXhwXzEpOiBSZXdvcmsgZnJvbSBvbGQgcmVkaXJlY3RfZXhwLiAgTmV2ZXIKCWNvbW1pdCBjaGFuZ2UgZ3JvdXAgY2hhbmdlcy4KCShpbnZlcnRfZXhwXzEpOiBTaW1pbGFybHkuCgkocmVkaXJlY3RfZXhwLCBpbnZlcnRfZXhwKTogVXNlIHRoZW0uCgkocmVkaXJlY3RfanVtcF8xKTogTmV3LgoJKGludmVydF9qdW1wXzEpOiBOZXcuCgkoanVtcF9vcHRpbWl6ZV8xKTogUmVtb3ZlIGNvZGUgc3Vic3VtZWQgYnkgY29uZGV4ZWMuYy4KCSogcnRsLmggKGludmVydF9qdW1wXzEsIHJlZGlyZWN0X2p1bXBfMSk6IERlY2xhcmUuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChkZWFkX29yX3NldF9yZWdub19wKTogVXNlIGZpbmRfcmVnbm9fbm90ZS4KCgkqIGdlbmNvbmZpZy5jIChtYWluKTogU2V0IGFsbCBIQVZFX2ZvbyB0byAxLgoKCSogZ3JhcGguYyAobm9kZV9kYXRhKTogVXNlIEdFVF9OT1RFX0lOU05fTkFNRSBpbnN0ZWFkIG9mIGxvY2FsIGFycmF5LgoKMjAwMC0wNC0yNiAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtZnNzYSBmbGFnLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoY291bnRfcmVnX3NldHNfMSk6IFJlbW92ZS4KCShjb3VudF9yZWdfc2V0cywgY291bnRfcmVnX3JlZmVyZW5jZXMpOiBSZW1vdmUuCgkocmVjb21wdXRlX3JlZ191c2FnZSk6IEltcGxlbWVudCB3aXRoIHVwZGF0ZV9saWZlX2luZm8uCglSZWFsbG9jYXRlIGxpZmUgZGF0YS4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHVwZGF0ZV9saWZlX2luZm8pOiBDb25zaWRlciBibG9ja3MgbnVsbCB0byBtZWFuIHRoZQoJdW5pdmVyc2FsIHNldC4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IExpa2V3aXNlLgoJKGxpZmVfYW5hbHlzaXMpOiBEbyB0aGF0IGluc3RlYWQgb2YgY29sbGVjdGluZyBhbGxfYmxvY2tzLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAodGlkeV9mYWxsdGhydV9lZGdlKTogRG9uJ3QgZGVsZXRlIHRoZSBqdW1wIHdoZW4gaXQncwoJYSBzdGlsbC12YWxpZCBjb25kaXRpb25hbCBqdW1wLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoaW52ZXJ0X2p1bXApOiBBbHdheXMgaW52ZXJ0IFJFR19CUl9QUk9CLiAgRG8gaXQgY29ycmVjdGx5LgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IHJ1biBlc3RpbWF0ZV9wcm9iYWJpbGl0eS4KCSogZmxvdy5jIChjYWxjdWxhdGVfbG9vcF9kZXB0aCk6IFJlbW92ZS4KCSogb3V0cHV0LmggKGNhbGN1bGF0ZV9sb29wX2RlcHRoKTogRG9uJ3QgZGVjbGFyZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBFeHBhbmQgY2FsY3VsYXRlX2xvb3BfZGVwdGgKCWlubGluZTsgcnVuIGVzdGltYXRlX3Byb2JhYmlsaXR5IGF0IHRoZSBzYW1lIHRpbWUuCgoyMDAwLTA0LTI2ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5oOiAifj0iIGlzIG5vdCBhIHNpbmdsZSBwcC10b2tlbi4KCSogY3BwbGV4LmM6IENvcnJlY3QgY29tbWVudGFyeS4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfc2V0XzEpOiBOZXcgYXJndW1lbnRzIGNvZGUgYW5kIGZsYWdzOyB1cGRhdGUgYWxsCgljYWxsZXJzLiAgVHJhY2sgcmVnbm9fZmlyc3QgYW5kIHJlZ25vX2xhc3Q7IGRvIEhBUkRfUkVHTk9fTlJFR1MKCXRlc3QgaW4gb25lIHBsYWNlLiAgVGlkeSBmbGFncyB0ZXN0cy4gIERvbid0IGJpYXMgUkVHX05fUkVGUyBieQoJbG9vcF9kZXB0aCB3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuICBEbyBuZXdfZGVhZCB1cGRhdGUgYWZ0ZXIKCWVtaXR0aW5nIFJFR19VTlVTRUQgbm90ZXMuICBNZXJnZSBtYXJrX3NldF9yZWcgY29kZS4KCShtYXJrX3NldF9yZWcpOiBSZW1vdmUuCgkocHJvcGFnYXRlX29uZV9pbnNuKTogVXNlIG1hcmtfc2V0XzEgZm9yIGNhbGwtY2xvYmJlcmVkIHJlZ2lzdGVyczsKCWFycmFuZ2UgdG8gbm90IGVtaXQgUkVHX1VOVVNFRCBub3Rlcy4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYXV0b19pbmMpOiBVc2UgcGJpLT5iYiBpbnN0ZWFkIG9mIEJMT0NLX0ZPUl9JTlNOLgoJKiBzc2EuYyAoY29udmVydF9mcm9tX3NzYSk6IERvbid0IHJ1biBjb21wdXRlX2JiX2Zvcl9pbnNuLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX29uZV9pbnNuKTogQnJlYWsgb3V0IGZyb20gcHJvcGFnYXRlX2Jsb2NrLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCShmcmVlX3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogTGlrZXdpc2UuCgkocHJvcGFnYXRlX2Jsb2NrKTogVXNlIHRoZW0uICBFeHBvcnQuCgkqIGJhc2ljLWJsb2NrLmg6IERlY2xhcmUgdGhlbSBhbGwuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAobGlmZV9hbmFseXNpcyk6IERlY2xhcmUgaGVyZSAuLi4KCSogb3V0cHV0Lmg6IC4uLiBub3QgaGVyZS4KCSogZmxvdy5jIChsaWZlX2FuYWx5c2lzKTogUmVtb3ZlIG5yZWdzIHBhcmFtZXRlcjsgcmVwbGFjZQoJcmVtb3ZlX2RlYWRfY29kZSB3aXRoIGZsYWdzLiAgUmVtb3ZlIHNzYSBkZWFkIGNvZGUgY2hlY2suCglPbmx5IGluaXQgYWxpYXMgYW5hbHlzaXMgaWYgd2UnbGwgdXNlIGl0LgoJKiByZWctc3RhY2suYyAocmVnX3RvX3N0YWNrKTogVXBkYXRlIGxpZmVfYW5hbHlzaXMgYXJndW1lbnRzLgoJKiBzc2EuYyAoY29udmVydF90b19zc2EpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmbG93X2RlbGV0ZV9ibG9jayk6IFJlbmFtZSBmcm9tIGRlbGV0ZV9ibG9jay4gIEV4cG9ydC4KCSogYmFzaWMtYmxvY2suaCAoZmxvd19kZWxldGVfYmxvY2spOiBEZWNsYXJlLgoKMjAwMC0wNC0yNiAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBWZXJpZnkgaW5zbnMgd2l0aCBJTlNOX1AgYmVmb3JlCgl0YWtpbmcgYSBQQVRURVJOIG9mIGl0LgoKMjAwMC0wNC0yNiAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc3BlbGxfb3RoZXIsIHNwZWxsX2NoYXIpOiBSZW1vdmUuCgkoU1BFTExfQ0hBUik6IE5ldy4KCSh0b2tlbl9zcGVsbGluZywgdHJpZ3JhcGhfbWFwKTogVXNlIHVuc2lnbmVkIGNoYXJzLgoJKF9jcHBfbGV4X2xpbmUpOiBUaWR5IHVwIHRoZSBzd2l0Y2ggc3RhdGVtZW50LgoJKiBjcHBsaWIuaDogSW1wbGVtZW50IHNwZWxsX2NoYXIgd2l0aCBzcGVsbF9zdHJpbmcuCgkoQyk6IE5ldy4KCjIwMDAtMDQtMjYgIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIHBhL3BhMzItcmVncy5oIChIQVJEX1JFR05PX01PREVfT0spOiBXYXJuaW5nIHJlbW92YWwuCgkqIHBhL3BhNjQtcmVncy5oIChIQVJEX1JFR05PX01PREVfT0spOiBXYXJuaW5nIHJlbW92YWwuCgoyMDAwLTA0LTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkd2FyZjJvdXQuYyAoZHdfY2ZpX29wcm5kX3N0cnVjdCwgZHdfZmRlX3N0cnVjdCwgYWRkX2ZkZV9jZmksCglyZWdfc2F2ZSwgZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIsIGR3YXJmMm91dF9kZWZfY2ZhLAoJZHdhcmYyb3V0X3dpbmRvd19zYXZlLCBkd2FyZjJvdXRfYXJnc19zaXplLCBkd2FyZjJvdXRfcmVnX3NhdmUsCglkd2FyZjJvdXRfcmV0dXJuX3NhdmUsIGR3YXJmMm91dF9yZXR1cm5fcmVnLAoJZHdhcmYyb3V0X3N0YWNrX2FkanVzdCwgZHdhcmYyb3V0X2ZyYW1lX2RlYnVnLCBwcmltYXJ5X2ZpbGVuYW1lLAoJYWRkX0FUX2xibF9pZCwgYWRkX0FUX2xibF9vZmZzZXQsIHR5cGVfdGFnLCBkZWNsX3N0YXJ0X2xhYmVsLAoJZ2VuX2NvbXBpbGVfdW5pdF9kaWUsIGR3YXJmMm91dF9pbml0KTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGR3YXJmMm91dC5oIChkd2FyZjJvdXRfaW5pdCk6IExpa2V3aXNlLgoKCSogZHdhcmZvdXQuYyAoZmlsZW5hbWVfZW50cnksIHByaW1hcnlfZmlsZW5hbWUsIGxhc3RfZmlsZW5hbWUsCgl0eXBlX3RhZywgb3V0cHV0X2NvbXBpbGVfdW5pdF9kaWUsIGR3YXJmb3V0X2luaXQpOiBMaWtld2lzZS4KCgkqIHRyZWUuaCAoZHdhcmYyb3V0X2RlZl9jZmEsIGR3YXJmMm91dF93aW5kb3dfc2F2ZSwKCWR3YXJmMm91dF9hcmdzX3NpemUsIGR3YXJmMm91dF9yZWdfc2F2ZSwgZHdhcmYyb3V0X3JldHVybl9zYXZlLAoJZHdhcmYyb3V0X3JldHVybl9yZWcpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGV4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRml4IGRlc2NyaXB0aW9uIG9mIHB1cmUKCWF0dHJpYnV0ZS4KCjIwMDAtMDQtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogaW50ZWdyYXRlLmMgKG91dHB1dF9pbmxpbmVfZnVuY3Rpb24pOiBEbyBjbGVhciBERUNMX0RFRkVSX09VVFBVVAoJYmVmb3JlIGNhbGxpbmcgcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDAtMDQtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IFJlbW92ZSBlcnJvbmVvdXMgY29tbWl0IG9mICNpZiAwLyNlbmRpZiBpbgoJbGFzdCBwYXRjaC4KCjIwMDAtMDQtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBFbWl0IGJhcnJpZXIgYWZ0ZXIgdW5jb25kaXRpb25hbCBqdW1wLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEaXNhYmxlIHRhaWwgY2FsbCBnZW5lcmF0aW9uIG9uY2UKCXJ0eF9lcXVhbF9mdW5jdGlvbl92YWx1ZV9tYXR0ZXJzIGlzIGZhbHNlLgoKCSogcmVnLXN0YWNrLmMgKGNvbnZlcnRfcmVnc18xKTogVHJlYXQgRURHRV9BQk5PUk1BTF9DQUxMIGVkZ2VzCglsaWtlIEVER0VfRUggZWRnZXMuCgoyMDAwLTA0LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChhZGRfYm91bmRfaW5mbyk6IERvbid0IGNyYXNoIG9uIGFuIHVuZXhwYW5kZWQgU0FWRV9FWFBSLgoKCSogZHdhcmZvdXQuYyAob3V0cHV0X2RlY2wpOiBJZ25vcmUgTkFNRVNQQUNFX0RFQ0xzLgoKCSogZHdhcmYyb3V0LmMgKGdlbl9zdWJwcm9ncmFtX2RpZSk6IFRoZSBjbGFzcy1zY29wZSBkZWNsYXJhdGlvbiBESUUKCWlzIHRoZSBwcmltYXJ5IERJRSBmb3IgYSBtZW1iZXIgZnVuY3Rpb24uCgkoZ2VuX2RlY2xfZGllKTogQ2FsbCBzZXRfZGVjbF9vcmlnaW5fc2VsZiBoZXJlLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfZGVjbCk6IEFuZCBoZXJlLgoJKiBpbnRlZ3JhdGUuYyAob3V0cHV0X2lubGluZV9mdW5jdGlvbik6IE5vdCBoZXJlLgoJRG9uJ3QgY2xlYXIgREVDTF9JTkxJTkUgdW50aWwgYWZ0ZXIgY2FsbGluZyByZXN0X29mX2NvbXBpbGF0aW9uLgoJKHNldF9kZWNsX29yaWdpbl9zZWxmKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogdHJlZS5oOiBBZGQgcHJvdG90eXBlLgoJKiB0b3BsZXYuYyAobm90ZV9kZWZlcnJhbF9vZl9kZWZpbmVkX2lubGluZV9mdW5jdGlvbik6IE9ubHkgd3JpdGUKCW91dCBhYnN0cmFjdCBpbnN0YW5jZSBmb3IgYWN0dWFsIGlubGluZXMuCgoyMDAwLTA0LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogUmV0dXJuCglFWFRFTkRFRF9SRUdTIG9ubHkgaWYgVEFSR0VUX0FNMzMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdnNpLCBhZGRzaSk6IEF2b2lkIGV4cG9zaW5nCglTUF9SRUdTIHRvIHJlZ2lzdGVyIGFsbG9jYXRpb24gYW5kIHJlbG9hZGluZyB1bmxlc3MgYWJzb2x1dGVseQoJbmVjZXNzYXJ5LgoJKG1vdnNpMyk6IFJlbW92ZSBzcGVjaWFsLWNhc2Ugb2YgYWRkaW5nIG5vbi1jb25zdGFudHMgdG8gU1AuCgoyMDAwLTA0LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhY2xvY2FsLm00IChnY2NfQUNfTkVFRF9ERUNMQVJBVElPTik6IFRoaXMgbWFjcm8gbm93IHJlcXVpcmVzCglJTkNMVURFUyB0byBzZWFyY2ggYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IG9mIGl0cyBvd24uICBBbHNvIGl0Cglub3cgYWNjZXB0cyBvcHRpb25hbCBBQ1RJT04tSUYtTkVFREVEIGFuZCBBQ1RJT04tSUYtTk9ULU5FRURFRAoJcGFyYW1ldGVycy4gIEFsc28gaXQgZG9lcyBub3QgY2FsbCBBQ19ERUZJTkUuCgkoZ2NjX0FDX05FRURfREVDTEFSQVRJT05TKTogTGlrZXdpc2UuICBBbHNvIHRoaXMgbWFjcm8gbm93IGNhbGxzCglBQ19ERUZJTkUgYW5kIHByb3ZpZGVzIGZvciBhdXRvbWF0aWMgZW50cmllcyBmb3IgYXV0b2hlYWRlci4KCShnY2NfQUNfRlVOQ19QUklOVEZfUFRSKTogQ2xlYW51cCBDIGNvZGUgaW4gdGVzdC4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX0FDX05FRURfREVDTEFSQVRJT05TKTogU2F2ZSBhbmQgcmVzdG9yZSBDRkxBR1MKCXNvIHdlIGNhbiBwYXNzIC1JIGZsYWdzIGFuZCBpbmNsdWRlIGdhbnNpZGVjbC5oL3N5c3RlbS5oIGluIHRoaXMKCXRlc3QuCgoJKiBhY2NvbmZpZy5oOiBEZWxldGUgYWxsIE5FRURfREVDTEFSQVRJT05fKiBlbnRyaWVzLgoKMjAwMC0wNC0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNjb25maWcuaCAoRU5BQkxFX1NURF9OQU1FU1BBQ0UsIEVOQUJMRV9DSEVDS0lORywKCUVOQUJMRV9UUkVFX0NIRUNLSU5HLCBFTkFCTEVfUlRMX0NIRUNLSU5HLCBFTkFCTEVfR0NfQ0hFQ0tJTkcsCglFTkFCTEVfR0NfQUxXQVlTX0NPTExFQ1QpOiBEZWxldGUgZW50cmllcy4KCgkqIGNvbmZpZ3VyZS5pbiAoRU5BQkxFX1NURF9OQU1FU1BBQ0UsIEVOQUJMRV9DSEVDS0lORywKCUVOQUJMRV9UUkVFX0NIRUNLSU5HLCBFTkFCTEVfUlRMX0NIRUNLSU5HLCBFTkFCTEVfR0NfQ0hFQ0tJTkcsCglFTkFCTEVfR0NfQUxXQVlTX0NPTExFQ1QpOiBVc2UgdGhyZWUgYXJndW1lbnQgZm9ybSBvZiBBQ19ERUZJTkUKCWZvciB0aGVzZSBtYWNyb3MuICBDbGVhbiB1cCBzcGFjaW5nIGFuZCBsaW5ld3JhcHMuCgoyMDAwLTA0LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogVXNlIGdldF9jYWxsZWVfZm5kZWNsLgoKCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogUHJpbnQgdGhlIGNoYWluIG9mIGFuIF9FWFBSLgoKVHVlIEFwciAyNSAxNjoxNjowNCAyMDAwICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgkJCSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoJCQkgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtOiBBZGQgSUEtNjQgdW53aW5kIHN1cHBvcnQuICBDb3JyZWN0IGFsbG9jCglhbmQgZ3Agc2F2ZS9yZXN0b3JlIHByb2JsZW1zLgoJKiBjb25maWcvaWE2NC9jcnRlbmQuYXNtOiBBZGQgSUEtNjQgdW53aW5kIHN1cHBvcnQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9jb21wdXRlX2ZyYW1lX3NpemUpOiBEb24ndCBpbmNsdWRlIHByX3NpemUKCWluIGZyX3BhZF9zaXplIGNhbGN1bGF0aW9uLgoJKHNhdmVfcmVzdG9yZV9pbnNucyk6IE1vdmUgUFIgc2F2ZSBhcmVhLiAgQ29ycmVjdCB1c2VzIG9mCglSVFhfRlJBTUVfUkVMQVRFRF9QLgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogTWFyayBhbGxvYyB3aXRoIFJUWF9GUkFNRV9SRUxBVEVEX1AuCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBBZGQgZWhfZXBpbG9ndWUgc3VwcG9ydC4KCShpYTY0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRW1pdCAucHJvbG9ndWUgZGlyZWN0aXZlLgoJKGlhNjRfaW5pdF9tYWNoaW5lX3N0YXR1cywgaWE2NF9tYXJrX21hY2hpbmVfc3RhdHVzKTogTmV3IGZ1bmN0aW9ucy4KCShpYTY0X292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaW5pdF9tYWNoaW5lX3N0YXR1cyBhbmQKCW1hcmtfbWFjaGluZV9zdGF0dXMuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgYnNwIHJlYWRzIGFuZCB3cml0ZXMuCgkoc3BpbGxfb2Zmc2V0LCBzcF9vZmZzZXQsIHNwaWxsX29mZnNldF9lbWl0dGVkLCB0bXBfcmVnLCB0bXBfc2F2ZWQpOgoJTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkocHJvY2Vzc19zZXQsIHByb2Nlc3NfZm9yX3Vud2luZF9kaXJlY3RpdmUpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfWERBVEFfQ0hBUiwgQVNNX09VVFBVVF9YREFUQV9TSE9SVCwKCUFTTV9PVVRQVVRfWERBVEFfSU5ULCBBU01fT1VUUFVUX1hEQVRBX0RPVUJMRV9JTlQsIEFTTV9PVVRQVVRfRUhfQ0hBUiwKCUFTTV9PVVRQVVRfRUhfU0hPUlQsIEFTTV9PVVRQVVRfRUhfSU5ULCBBU01fT1VUUFVUX0VIX0RPVUJMRV9JTlQpOiBOZXcKCW1hY3Jvcy4KCShFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IERlZmluZSB0byBJQV82NC51bndpbmQgc2VjdGlvbi4KCShJQTY0X1VOV0lORF9JTkZPLCBIQU5ETEVSX1NFQ1RJT04sIElBNjRfVU5XSU5EX0VNSVQpOiBEZWZpbmUuCgkoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBEZWZpbmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGJzcF92YWx1ZSwgc2V0X2JzcCwgZWhfZXBpbG9ndWUpOiBOZXcgcGF0dGVybnMuCgoyMDAwLTA0LTI1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogbWFrZSB0aGUgcmVtb3ZhbCBvZiBvbGQgcHJvZ3JhbXMgbW9yZQoJcm9idXN0CgkqIGZpeGluYy9ta2ZpeGluYy5zaDogdXNlIHRoZSB0d28gbmV3IHRhcmdldHMgaW4gdGhlIE1ha2VmaWxlOgoJaW5zdGFsbC1iaW4gYW5kIGluc3RhbGwtc2gKCjIwMDAtMDQtMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoRlVOQ1RJT05fQVRUUklCVVRFX0lOTElOQUJMRV9QKTogSWYgbm90CglkZWZpbmVkLCBkZWZpbmUgdG8gcmV0dXJuIHplcm8uCgkoZnVuY3Rpb25fY2Fubm90X2lubGluZV9wKTogSWYgYSBmdW5jdGlvbiBoYXMgYW55IHRhcmdldAoJc3BlY2lmaWMgYXR0cmlidXRlcywgdGhlbiB1c2UgdGhlIG1hY3JvCglGVU5DVElPTl9BVFRSSUJVVEVfSU5MSU5BQkxFX1AgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBkZWNpZGUKCXdoZXRoZXIgaXQgY2FuIGJlIGlubGluZWQuICBJZiBpdCBjYW5ub3QsIGlzc3VlIGEgc3VpdGFibGUKCWV4cGxhbmF0aW9uLgoKCSogdG0udGV4aTogQWRkIGEgbmV3IG5vZGUgJ0lubGluaW5nJyB0byBkb2N1bWVudCB0aGUgbmV3IG1hY3JvCglGVU5DVElPTl9BVFRSSUJVVEVfSU5MSU5BQkxFX1AuCgoyMDAwLTA0LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBBZGQgJ21hcHBlZCcgZmxhZzsgZml4Cgljb21tZW50YXJ5LgoKMjAwMC0wNC0yNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJUmVzdG9yZSBwcmV2aW91cyBwYXRjaCwgcGx1cyB0aGUgZm9sbG93aW5nIGZpeGVzOgoKCSogY3BwaGFzaC5jIChfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogVGVzdCBQUkVWX1dISVRFU1BBQ0UgaW4KCWZsYWdzLCBub3QgQ1BQX09QRU5fUEFSRU4uCgkqIGNwcGxleC5jIChleHBhbmRfdG9rZW5fc3BhY2UsIGluaXRfdG9rZW5fbGlzdCwKCWNwcF9mcmVlX3Rva2VuX2xpc3QpOiBQdXQgdGhlIGR1bW15IHRva2VuIGF0IGxpc3QtPnRva2Vuc1stMV0uCgkoX2NwcF9sZXhfbGluZSwgX2NwcF9sZXhfZmlsZSk6IHRva2VuIGxpc3QgaXMgMC1iYXNlZC4KClR1ZSBBcHIgMjUgMTQ6MDY6NDAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgpUdWUgQXByIDI1IDE0OjUxOjA3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBGaXggdHlwbyBpbiB0aGUgbGFzdCBjaGVja2luLgoKVHVlIEFwciAyNSAwNzozMzoxMiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBTaW1wbGlmeSB0byB1c2UgZXhpc3RpbmcKCWZ1bmN0aW9ucy4KCShjb21wdXRlX3JlY29yZF9tb2RlKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogdHJlZS5oIChjb21wdXRlX3JlY29yZF9tb2RlKTogTmV3IGRlY2xhcmF0aW9uLgoKMjAwMC0wNC0yNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBSZXZlcnQgbXkgcGF0Y2ggYmVsb3cgdW50aWwgY2F1c2Ugb2YgYnVpbGQgZmFpbHVyZXMKCWRldGVybWluZWQuCgoyMDAwLTA0LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChjb21iaW5lX2luc3RydWN0aW9ucyk6IEFkZCBtaXNzaW5nIGFyZ3VtZW50Cgl0byB0cnlfY29tYmluZS4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRGVsYXkgc2liY2FsbCBvcHRpbWl6YXRpb24KCXVudGlsIGFmdGVyIGVtaXRfZWhfY29udGV4dC4KCjIwMDAtMDQtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogRG8gbm90IHRyeSB0byBjb21iaW5lIGEKCXNlcXVlbmNlIG9mIGluc25zIHdoZW4gdGhlIHNlY29uZCBpbnNuIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEKCW5vdGUuCgpNb24gQXByIDI0IDE3OjM0OjE4IDIwMDAgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogZ2NjLmMgKGxvYWRfc3BlY3MpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHJlYWRfc3BlY3MpOiBVc2UgaXQuCgoJKiBnY2MuYyAobG9va3VwX2NvbXBpbGVyKTogTWFrZSBtdWx0aXBsZSBwYXNzZXMgZm9yIGNhc2UKCWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgoKMjAwMC0wNC0yNCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmM6IHJlcGxhY2UgSFNQQUNFX0JFRk9SRSB3aXRoIFBSRVZfV0hJVEVTUEFDRS4KCSogY3BwaGFzaC5oIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IG5ldy4KCSogY3BwbGV4LmMgKGhhbmRsZV9uZXdsaW5lLCBjcHBfZnJlZV90b2tlbl9saXN0LAoJaW5pdF90cmlncmFwaF9tYXAsIHRyaWdyYXBoX29rLCB0cmlncmFwaF9yZXBsYWNlLAoJYmFja3NsYXNoX3N0YXJ0LCBza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfbGluZV9jb21tZW50LAoJc2tpcF93aGl0ZXNwYWNlLCBwYXJzZV9uYW1lLCBwYXJzZV9udW1iZXIsIHBhcnNlX3N0cmluZywKCWNvcHlfY29tbWVudCwgX2NwcF9sZXhfbGluZSwgc3BlbGxfY2hhciwgc3BlbGxfc3RyaW5nLAoJc3BlbGxfY29tbWVudCwgc3BlbGxfbmFtZSwgc3BlbGxfb3RoZXIsIF9jcHBfbGV4X2ZpbGUsCglfY3BwX291dHB1dF9saXN0KTogbmV3LgoJKGV4cGFuZF9uYW1lX3NwYWNlKTogdGFrZSBsZW5ndGggYXJndW1lbnQuCgkoaW5pdF90b2tlbl9saXN0KTogYWRkIGNvbW1lbnQgbGlzdCBpbml0aWFsaXNhdGlvbi4KCShjcHBfc2Nhbl9saW5lKTogdXNlIGF1dG9fZXhwYW5kX25hbWVfc3BhY2UuICBQUkVWX1dISVRFU1BBQ0UKCWluc3RlYWQgb2YgSFNQQUNFX0JFRk9SRS4KCgkqIGNwcGxpYi5jIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IG5ldwoJKiBjcHBsaWIuaCAoY3BwX25hbWUsIFBSRVZfV0hJVEVTUEFDRSwgUFJFVl9DT01NRU5ULAoJRElHUkFQSCwgVU5TSUdORURfSU5ULCBUT0tfTkFNRSk6IG5ldy4KCShIU1BBQ0VfQkVGT1JFKTogZGVsZXRlLgoJKFRUWVBFX1RBQkxFKTogcmVhcnJhbmdlLgoJKHN0cnVjdCBjcHBfdG9rbGlzdCk6IHVwZGF0ZS4KCjIwMDAtMDQtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19IRUFERVJfU1RSSU5HLCBnY2NfQUNfRlVOQ19QUklOVEZfUFRSLAoJZ2NjX0FDX0NfVk9MQVRJTEUsIGdjY19BQ19GVU5DX01LRElSX1RBS0VTX09ORV9BUkcpOiBVc2UgdGhlIHRocmVlCglhcmd1bWVudCBmb3JtIG9mIEFDX0RFRklORS4KCgkqIGNvbmZpZ3VyZS5pbiAoREVGQVVMVF9MSU5LRVIsIERFRkFVTFRfQVNTRU1CTEVSLAoJSEFWRV9JTlRUWVBFU19ILCBQQUNLQUdFLCBWRVJTSU9OLCBFTkFCTEVfV0lOMzJfUkVHSVNUUlksCglXSU4zMl9SRUdJU1RSWV9LRVksIEhBVkVfR0FTX1NVQlNFQ1RJT05fT1JERVJJTkcsIEhBVkVfR0FTX1dFQUssCglIQVZFX0dBU19ISURERU4sIEhBVkVfQVNfUkVHSVNURVJfUFNFVURPX09QLCBBU19TUEFSQzY0X0ZMQUcsCglIQVZFX0FTX09GRlNFVEFCTEVfTE8xMCwgRU5BQkxFX05FV19HWFhfQUJJKTogTGlrZXdpc2UuCgoJKiBhY2NvbmZpZy5oOiBEZWxldGUgc3R1YnMgbWFkZSByZWR1bmRhbnQgYnkgMy1hcmcgQUNfREVGSU5FLgoKMjAwMC0wNC0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKEdDQ19GT1JfVEFSR0VULCBHQ0NfQ0ZMQUdTLCBMSUJHQ0MyX0lOQ0xVREVTLAoJZGVkdWNlZC5oKTogVXNlIC1pc3lzdGVtLCBub3QgLUksIGZvciBpbmNsdWRpbmcgc3lzdGVtIGhlYWRlcnMuCgoyMDAwLTA0LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2ZyMzAvZnIzMC5tZCAoYWRkc2kzKTogRG8gbm90IHVzZSBzbWFsbCBhZGQgaW5zdHJ1Y3Rpb24gaWYKCXRoZSBzb3VyY2UgcmVnaXN0ZXIgaXMgdGhlIGZyYW1lIHBvaW50ZXIgb3IgYXJnIHBvaW50ZXIuCgkoYWRkc2kzX3NtYWxsX2ludCk6IERpc2FsbG93IGlmIHNvdXJjZSByZWdpc3RlciBpcyB0aGUgZnJhbWUKCXBvaW50ZXIgb3IgYXJnIHBvaW50ZXIuCgoyMDAwLTA0LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKEVOVU1fQklURklFTERTX0FSRV9VTlNJR05FRCk6IERlbGV0ZSByZWR1bmRhbnQKCWNhbGwgdG8gQUNfTVNHX1JFU1VMVC4KCjIwMDAtMDQtMjQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGludm9rZS50ZXhpOiBDb3JyZWN0IGdyYW1tYXRpY2FsIGVycm9ycywgZG9jdW1lbnQKCS1mbm8tZ251LWtleXdvcmRzIGFzIGlkZW50aWNhbCB0byAtZm5vLWFzbSBmb3IgQysrLgoKMjAwMC0wNC0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNsb2NhbC5tNDogKEdDQ19IRUFERVJfU1RSSU5HLCBHQ0NfTkVFRF9ERUNMQVJBVElPTiwKCUdDQ19ORUVEX0RFQ0xBUkFUSU9OUywgR0NDX0ZVTkNfVkZQUklOVEZfRE9QUk5ULAoJR0NDX0ZVTkNfUFJJTlRGX1BUUiwgR0NDX1BST0dfTE5fUywgR0NDX1BST0dfTE4sIEdDQ19DX1ZPTEFUSUxFLAoJQUNfR0NDX0NfTE9OR19ET1VCTEUsIEdDQ19GVU5DX01LRElSX1RBS0VTX09ORV9BUkcsCglFR0NTX1BST0dfSU5TVEFMTCk6IFJlbmFtZSBhdXRvY29uZiBtYWNyb3Mgd2l0aCBwcmVmaXggZ2NjX0FDXy4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfR0NDX0NfTE9OR19ET1VCTEUsIEdDQ19QUk9HX0xOLCBHQ0NfUFJPR19MTl9TLAoJR0NDX0NfVk9MQVRJTEUsIEVHQ1NfUFJPR19JTlNUQUxMLCBHQ0NfSEVBREVSX1NUUklORywKCUdDQ19GVU5DX1ZGUFJJTlRGX0RPUFJOVCwgR0NDX0ZVTkNfUFJJTlRGX1BUUiwKCUdDQ19ORUVEX0RFQ0xBUkFUSU9OUywgR0NDX0ZVTkNfTUtESVJfVEFLRVNfT05FX0FSRyk6IEludm9rZSB3aXRoCgluZXcgbWFjcm9zIG5hbWVzLgoKMjAwMC0wNC0yNCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjLXByYWdtYS5jIChwdXNoX2FsaWdubWVudCk6IFVzZSBCSVRTX1BFUl9VTklUIG1hY3JvLgoJKHBvcF9hbGlnbm1lbnQpOiBMaWtld2lzZS4KCShoYW5kbGVfcHJhZ21hX3Rva2VuKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI0ICBSb2JlcnQgTGlwZSA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogdHJlZS5oICh0cmVlX2RlY2wpOiBNZW1iZXIgYG1vZGUnIG5vdyBFTlVNX0JJVEZJRUxELgoKMjAwMC0wNC0yNCAgSGlyb3l1a2kgTWFjaGlkYSA8bWFjaGlkYUBzbS5zb255LmNvLmpwPgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFVwZGF0ZSByZWdfbm9uemVyb19iaXRzIG9mCgluZXdpMnBhdCBiZWZvcmUgbmV3cGF0LgoKTW9uIEFwciAyNCAxMDoxOTo0OCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogU2ltcGxpZnkgdGVzdCB0byBJTlNOX1AuCgkocmVjb3JkX2dpdik6IEF0dGVtcHQgdG8gc2ltcGxpZnkgdGhlIGFkZCB2YWx1ZSwgdXNlIENPTlNUQU5UX1AKCWV4cHJlc3Npb25zIGluc3RlYWQgb2YgQ09OU1RfSU5ULgoJKGV4cHJlc3NfZnJvbV8xKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVncy5oIChyZWdfbl9tYXgpOiBEb24ndCBkZWNsYXJlLgoJKiBmbG93LmMgKHJlZ19uX21heCk6IERvbid0IGRlZmluZS4KCSogcmVnY2xhc3MuYyAocmVudW1iZXIpOiBEb24ndCBpbml0aWFsaXplIHRvIHplcm8uCgkocmVnbm9fYWxsb2NhdGVkKTogTGlrZXdpc2UuCgkocmVnX25fbWF4KTogRGVmaW5lLgoJKGFsbG9jYXRlX3JlZ19pbmZvKTogRG9uJ3QgaW5pdGlhbGl6ZSB1bm5lY2Vzc2FyaWx5LgoKTW9uIEFwciAyNCAwMDoyMTozNiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnZW5hdHRydGFiLmMgKGZpbmRfYXR0cik6IEluaXRpYWxpemUgdW5zaWduZWRfcCwgZnVuY191bml0c19wCglhbmQgYmxvY2thZ2VfcCBpbiB0aGUgbmV3bHkgYWxsb2NhdGVkIGF0dHJpYnV0ZS4KClN1biBBcHIgMjMgMjA6MTY6NDkgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChhZGRzaSk6IGBpbmM0JyBvbiBhZGRyZXNzCglyZWdpc3RlcnMgZG9lcyBub3QgbW9kaWZ5IGNjLCBidXQgYGluYycgb24gYW4gZXh0ZW5kZWQKCXJlZ2lzdGVyIGRvZXMuCgpTdW4gQXByIDIzIDE2OjI0OjM1IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiByZWxvYWQuYyAoZmluZF9lcXVpdl9yZWcpOiBDaGVja3MgYWxsIHZhbHVlbm8gcmVncwoJYXMgYSByZWxvYWRfcmVnX3AgcmVncy4KCjIwMDAtMDQtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9vYmpsaWtlX2V4cGFuc2lvbik6IEFkZCBzYW5pdHkgY2hlY2suCgkoc3BlY2lhbF9zeW1ib2wpOiBSZW1vdmUgY2FzZSBUX0NPTlNULCBUX1hDT05TVCwgVF9NQ09OU1QuICBJZgoJdGhlIGJ1ZmZlciBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZXR1cm4uICBNYXJrIF9fREFURV9fIGFuZAoJX19USU1FX18gYXMgWENPTlNUIG5vZGVzLCBub3QgTUNPTlNULgoJKF9jcHBfbWFjcm9leHBhbmQpOiBBdm9pZCBwdXNoaW5nIGFuIGVtcHR5IGJ1ZmZlci4KCShmdW5saWtlX21hY3JvZXhwYW5kKTogRG9uJ3QgcG9wIHRva2VuX2J1ZmZlciBoZXJlLgoKU3VuIEFwciAyMyAxODozNzo1MyAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHTk9fSU5fUkFOR0VfUCk6IE5ldyBtYWNyby4KCShSRUdOT19EQVRBX1AsIFJFR05PX0FERFJFU1NfUCwgUkVHTk9fU1BfUCk6IE5ldyBtYWNyb3MuCgkoUkVHTk9fRVhURU5ERURfUCwgUkVHTk9fQU0zM19QKTogTmV3IG1hY3Jvcy4KCShSRUdOT19PS19GT1JfQkFTRV9QKTogRGVmaW5lIGluIHRlcm1zIG9mIHRoZW0uCgkoUkVHTk9fT0tfRk9SX0JJVF9CQVNFX1AsIFJFR05PX09LX0ZPUl9JTkRFWF9QKTogTGlrZXdpc2UuCgkoUkVHX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgdGhlIFJFR05PIG1hY3JvLgoJKFJFR19PS19GT1JfQklUX0JBU0VfUCwgUkVHX09LX0ZPUl9JTkRFWF9QKTogTGlrZXdpc2UuCgpTdW4gQXByIDIzIDIyOjIzOjA4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChzaW1wbGlmeV9naXZfZXhwcik6ICBCZSBtb3JlIGFncmVzc2l2ZSBvbiBzaW1wbGlmeWluZwoJY29uc3RhbnQgTVVMVCBnaXZzLgoKMjAwMC0wNC0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgZGVmaW5pdGlvbik6IE1vdmUgZmlsZSwgbGluZSwgY29sIG1lbWJlcnMuLi4KCShzdHJ1Y3QgaGFzaG5vZGUpOiAuLi4gaGVyZS4gIEFsc28gYWRkICdkaXNhYmxlZCcgZmxhZy4KCShlbnVtIG5vZGVfdHlwZSk6IEFkZCBUX1ZPSUQsIFRfWENPTlNULCBUX0ZNQUNSTywgYW5kCglUX0lERU5USVRZLiAgUmVtb3ZlIFRfRElTQUJMRUQuCglVcGRhdGUgcHJvdG90eXBlcy4KCgkqIGNwcGhhc2guYyAoX2NwcF9kdW1wX2RlZmluaXRpb24pOiBTcGxpdCBvdXQgZHVtcF9ERUZJTklUSU9OLgoJKGNvbGxlY3RfZXhwYW5zaW9uKTogU3BsaXQgaW50byBjb2xsZWN0X29iamxpa2VfZXhwYW5zaW9uIGFuZAoJY29sbGVjdF9mdW5saWtlX2V4cGFuc2lvbi4KCShfY3BwX21hY3JvZXhwYW5kKTogU3BsaXQgb3V0IHNjYW5fYXJndW1lbnRzLCBzdHJpbmdpZnksIGFuZAoJZnVubGlrZV9tYWNyb2V4cGFuZC4KCShfY3BwX2NvbXBhcmVfZGVmcyk6IFJlbmFtZSBjb21wYXJlX2RlZnMsIG1ha2Ugc3RhdGljLgoJKF9jcHBfbWFrZV9oYXNobm9kZSk6IEluaXRpYWxpemUgaHAtPmRpc2FibGVkLgoJKG1hY3JvX2NsZWFudXApOiBBZGp1c3QgZm9yIG5ldyB0b2tlbiB0eXBlcy4gIENsZWFyCgltLT5kaXNhYmxlZC4KCShfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogTW92ZSBjb2RlIGhlcmUgdG8gZGV0ZXJtaW5lIHdoYXQKCXNvcnQgb2YgbWFjcm8gaXQgaXMsIGFuZCBjb2RlIHRvIGNoZWNrIGZvciByZWRlZmluaXRpb25zLCBmcm9tCglkb19kZWZpbmUuICBJbXBsZW1lbnQgYSBmZXcgc2ltcGxlIGNhc2VzIHdpdGhvdXQgY3JlYXRpbmcgYQoJZnVsbCBERUZJTklUSU9OLgoJKF9jcHBfbWFjcm9leHBhbmQsIHNwZWNpYWxfc3ltYm9sLCBfY3BwX2R1bXBfZGVmaW5pdGlvbik6CglIYW5kbGUgdGhlIHNpbXBsZSBjYXNlcy4KCShwdXNoX21hY3JvX2V4cGFuc2lvbik6IFNldCBidWYtPmhhc19lc2NhcGVzIGFuZCBocC0+ZGlzYWJsZWQKCWhlcmUuCgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBDaGFuZ2UgTUNPTlNUIHRvIFhDT05TVAoJZXZlcnl3aGVyZS4KCSogY3BwbGV4LmMgKG1heWJlX21hY3JvZXhwYW5kKTogSGFuZGxlIElERU5USVRZIG1hY3JvcyBoZXJlOwoJZml4IGNoZWNrIGZvciBkaXNhYmxlZCBhbmQgZnVuY3Rpb24tbGlrZSBtYWNyb3MuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBNb3ZlIG1vc3QgbG9naWMgdG8KCV9jcHBfY3JlYXRlX2RlZmluaXRpb24uCgkoZG9fdW5kZWYpOiBIYW5kbGUgbmV3IHNwZWNpYWwgdG9rZW4gdHlwZXMuCgpTdW4gQXByIDIzIDE0OjI3OjQ0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChtYXliZV9lbGltaW5hdGVfYml2XzEpOiBVc2UgR0VUX0NPREUgKHgpID09IENPTlNUX0lOVCBpbnN0ZWFkCglvZiBDT05TVEFOVF9QIGZvciBtdWx0X3ZhbDsgYWx3YXlzIHVzZSB2YWxpZGF0ZV9jaGFuZ2UgdG8gdXBkYXRlIGluc24uCgoyMDAwLTA0LTIyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHRyYWRfc3RyaW5naWZ5LCBhZGRfcGF0KTogTmV3IGZ1bmN0aW9ucy4KCShjb2xsZWN0X2V4cGFuc2lvbik6IFJlc3RvcmUgc3VwcG9ydCBmb3IgLXRyYWRpdGlvbmFsIHN5bnRheC4KCVVzZSB0cmFkX3N0cmluZ2lmeSBhbmQgYWRkX3BhdC4KCShfY3BwX21hY3JvZXhwYW5kKTogUmVzdG9yZSBzdXBwb3J0IGZvciAtdHJhZGl0aW9uYWwgc2VtYW50aWNzLgoJKiBjcHBsZXguYyAoX2NwcF9zY2FuX2xpbmUpOiBEb24ndCBjaGFuZ2Ugc3BhY2VfYmVmb3JlIGlmIHdlCglnZXQgYSBDT01NRU5UIHRva2VuLgoJKF9jcHBfbGV4X3Rva2VuKTogUHJvdmlkZSBDT01NRU5UIHRva2VucyB0byBjYWxsZXIgaWYKCXRyYWRpdGlvbmFsIGFuZCBwYXJzaW5nX2RlZmluZV9kaXJlY3RpdmUuCgkoc2tpcF9jb21tZW50KTogV2FybiBhYm91dCAvLyBjb21tZW50cyBpZiAtV3RyYWRpdGlvbmFsLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogRml4IHR5cG8uICBDcmVhdGUgRU1QVFkgbm9kZXMgd2l0aAoJcHJvcGVyIG5vZGUgdHlwZS4KCShkb191bmRlZik6IERvbid0IHdhcm4gYWJvdXQgdW5kZWZpbmluZyBFTVBUWSBub2Rlcy4KClNhdCBBcHIgMjIgMjI6MzU6MzggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IEZpeCBiaXYgcmVtb3ZhbCBjb2RlLgoKMjAwMC0wNC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBFeGFtaW5lIGJvdGggc2lkZXMgb2YKCWEgYnJhbmNoIGZvciBubyBleGl0cy4gIFVzZSA5MCUgbm90IDUwJSBmb3IgcHJlZGljdCB0YWtlbi4KCVJlb3JnIGZvciBvbmUgY29weSBvZiBub3RlIGdlbmVyYXRpb24gY29kZS4KCjIwMDAtMDQtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWcpOiBIYWNrIGFyb3VuZCByczYwMDAgZWxpbWluYWJsZSBwaWMgcmVnLgoKMjAwMC0wNC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoaW5pdF9vdXRwdXRfYnVmZmVyKTogRG9uJ3QgaW5pdGlhbGl6ZSBmb3JtYXRfYXJncy4KCShvdXRwdXRfY2xlYXIpOiBMaWtld2lzZS4KCShvdXRwdXRfcHJpbnRmKTogVXNlIHZhX2NvcHkuCgkodmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiBMaWtld2lzZS4KCSh2X21lc3NhZ2Vfd2l0aF9kZWNsKTogTGlrZXdpc2UuCgkobGluZV93cmFwcGVyX3ByaW50Zik6IFZBX1NUQVJUIGluZm9yIGJ1ZmZlci5mb3JtYXRfYXJncyBkaXJlY3RseS4KCSogc3lzdGVtLmggKHZhX2NvcHkpOiBQcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCgoyMDAwLTA0LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jIChleHBlY3RlZF92YWx1ZV90b19icl9wcm9iKTogRG9uJ3QgYm9tYiBpZiBvcDEgb2YKCXRoZSBjb2xsZWN0ZWQgY29uZGl0aW9uIGlzIG5vdCBhIGNvbnN0YW50LgoKMjAwMC0wNC0yMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5oOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChkaWFnbm9zdGljLm8pOiBEZXBlbmRzIG9uIGRpYWdub3N0aWMuaAoKCSogZGlhZ25vc3RpYy5jOiBUd2Vhay4gIFJhdGlvbmFsaXplIHRoZSBvdXRwdXQgbG9naWMuICBBZGp1c3QKCXZhcmlvdXMgZnVuY3Rpb24gcHJvdG90eXBlcy4KCShkaWFnbm9zdGljLmgpOiAjaW5jbHVkZS4KCShzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcik6IE1vdmUgaW50byBkaWFnbm9zdGljLmguCgkoZ2V0X291dHB1dF9wcmVmaXgpOiBSZW5hbWUgdG8gb3V0cHV0X2dldF9wcmVmaXguICBFeHBvcnQuCgkoaW5pdF9vdXRwdXRfYnVmZmVyKTogRXhwb3J0LiBCcmVhayBvdXQuICBBZGp1c3QgaW5pdGlhbGl6YXRpb24uCgkob3V0cHV0X3NwYWNlX2xlZnQsIG91dHB1dF9hcHBlbmQpOiBFeHBvcnQuCgkob3V0cHV0X25ld2xpbmUpOiBSZW5hbWUgdG8gb3V0cHV0X2FkZF9uZXdsaW5lLiAgRXhwb3J0LgoJKG91dHB1dF9jbGVhcik6IE51bGxpZnkgYWRkaXRpb25hbCBvdXRwdXRfYnVmZmVyIGZpZWxkcy4KCShvdXRwdXRfcHV0cyk6IFJlbmFtZSB0byBvdXRwdXRfYWRkX3N0cmluZy4gIEV4cG9ydC4KCShkdW1wX291dHB1dCk6IFJlbmFtZSB0byBvdXRwdXRfZmx1c2hfb24uICBFeHBvcnQuCgkoYnVpbGRfbG9jYXRpb25fcHJlZml4KTogQ29uc3RpZnkgcmV0dXJuLXR5cGUuCgkoZW1pdF9vdXRwdXRfcHJlZml4KTogUmVuYW1lIHRvIG91dHB1dF9lbWl0X3ByZWZpeC4gRXhwb3J0LgoJKHNldF9yZWFsX21heGltdW1fbGVuZ3RoKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9zZXRfbWF4aW11bV9sZW5ndGgpOiBEaXR0bwoJKG91dHB1dF9jbGVhcik6IERpdHRvLgoJKG91dHB1dF9hZGRfY2hhcmFjdGVyKTogRGl0dG8uCgkob3V0cHV0X2FkZF9pbnRlZ2VyKTogRGl0dG8uCgkob3V0cHV0X2FkZF9zcGFjZSk6IERpdHRvLgoJKG91dHB1dF9mb3JtYXQpOiBEaXR0by4KCShvdXRwdXRfcHJpbnRmKTogQWRqdXN0IGJ1ZmZlciBpbml0aWFsaXphdGlvbi4KCSh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbik6IERpdHRvLgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBEaXR0by4gIEFkanVzdCBjYWxsIHRvIG91dHB1dF9wdXRzCglhbmQgZ2V0X291dHB1dF9wcmVmaXguCgkoZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbik6IEFkanVzdCBidWZmZXIgaW5pdGlhbGl6YXRpb24uCgpTYXQgQXByIDIyIDA2OjQ1OjA0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHByZWV4cGFuZF9jYWxscywgY2FzZSBDQUxMX0VYUFIpOiBEb24ndCBsb29rIGF0IFRZUEVfU0laRQoJb2YgVk9JRF9UWVBFLgoKRnJpIEFwciAyMSAxODozMzowOSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHTk9fUkVHX0NMQVNTKTogVXNlIE5PX1JFR1MgaW5zdGVhZAoJb2YgZXhwbGljaXQgMC4KCkZyaSBBcHIgMjEgMTg6MzA6MDAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IFByb3ZpZGUgbW9yZQoJYWNjdXJhdGUgZGF0YSBhYm91dCBTUCBtb3Zlcy4KCkZyaSBBcHIgMjEgMTg6Mjg6MjggMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEFERElUSU9OQUxfUkVHSVNURVJfTkFNRVMpOiBBZGRlZAoJYWxpYXNlcyB0byBBTTMzIHJlZ2lzdGVycy4KCkZyaSBBcHIgMjEgMTg6MjY6MTcgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR19DTEFTU19DT05URU5UUyk6IEFkZGVkIHJlZ2lzdGVyIDE2Cgl0byBhbGwgRVhURU5ERUQgYml0bWFwcy4KCkZyaSBBcHIgMjEgMTg6MTc6MTIgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChtbjEwMzAwX2FkZHJlc3NfY29zdCk6IERlY2xhcmUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoQUREUkVTU19DT1NUKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfYWRkcmVzc19jb3N0KTogTmV3IGZ1bmN0aW9uLgoKRnJpIEFwciAyMSAxODoxMTo1NiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdmRpLCBtb3ZkZik6IERvIG5vdCB1c2UgYG1vdnUnIHdoZW4KCXRoZSBvcGVyYW5kIGlzIG5vdCBjb25zdGFudC4KCkZyaSBBcHIgMjEgMTQ6NTg6MjkgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IENoZWNrcyBhbGwgdmFsdWVubyBhbmQgcmVnbm8gcmVncwoJYXMgYSBjYWxsLWNsb2JiZXJlZCByZWdzLgoKRnJpIEFwciAyMSAxMzozMDoyNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogcnRsLmM6IFVzZSBOT1RFX0lOU05fUkVQRUFURURfTElORV9OVU1CRVIgYW5kIE5PVEVfSU5TTl9SQU5HRV9CRUcuCgkqIHJ0bC5oOiBMaWtld2lzZS4KCSogcnRsLmRlZjogVXBkYXRlIGNvbW1lbnQuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbik6IFVzZSBOT1RFX0lOU05fUkVQRUFURURfTElORV9OVU1CRVIuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYyAoYnJhbmNoX3Byb2IpOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya19ydHhfY2hpbGRyZW4pOiBVc2UgTk9URV9JTlNOX1JBTkdFX0JFRy4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9hbmFseXplLCB1bmxpbmtfb3RoZXJfbm90ZXMpOiBMaWtld2lzZS4KCShyZWVtaXRfbm90ZXMpOiBMaWtld2lzZTsgYWxzbyB1c2UgZW51bSBpbnNuX25vdGUuCgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IE9ubHkgc2V0IERFQ0xfTU9ERSBpZiBub3QgYWxyZWFkeSBzZXQuCgkocGxhY2VfZmllbGQpOiBQcm9wZXJseSBjb21wdXRlIGtub3cgYW5kIGFjdHVhbCBhbGlnbm1lbnQuCgoJKiBnZW5nZW5ydGwuYyAoZ2VuY29kZSk6IFdyaXRlIG9ic3RhY2tfYWxsb2NfcnR4IGZ1bmN0aW9uIHN0YXJ0CglpbiBwcm9wZXIgZm9ybWF0LgoKCSogY3NlLmMgKGNzZV9pbnNuKTogSW4gKHNldCBSRUcwIFJFRzEpIGNhc2UsIHJlbW92ZSBhIFJFR19FUVVBTAoJbm90ZSBmb3IgUkVHMS4KCjIwMDAtMDQtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoc3RydWN0IGFyZywgc3RydWN0IGFyZ2xpc3QpOiBDb25zdC1pZnkgc3RyaW5ncy4KCSh3YXJuX3RyYWRfc3RyaW5naWZ5LCBkdXBsaWNhdGVfYXJnX3ApOiBOZXcgaGVscGVyIGZ1bmN0aW9ucy4KCShjb2xsZWN0X2V4cGFuc2lvbik6IFJld3JpdGUgdG8gc2NhbiBvdmVyIGEgdG9rZW4gbGlzdC4KCVJlbW92ZSAtdHJhZGl0aW9uYWwgc3VwcG9ydC4KCShjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogUmVuYW1lIHRvIGNvbGxlY3RfcGFyYW1zOyByZXdyaXRlCgl0byBzY2FuIG92ZXIgYSB0b2tlbiBsaXN0LgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBBZGp1c3QgdG8gc2NhbiBhIHRva2VuIGxpc3QuCgkoX2NwcF9tYWNyb2V4cGFuZCk6IFJlbW92ZSAtdHJhZGl0aW9uYWwgc3VwcG9ydC4KCShfY3BwX2NvbXBhcmVfZGVmcyk6IFdoaXRlc3BhY2UgaXMgbm93IGNhbm9uaWNhbGl6ZWQuCgkoY29tcF9kZWZfcGFydCk6IERlbGV0ZSBmdW5jdGlvbi4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxleC5jIChpbml0X3Rva2VuX2xpc3QpOiBEb24ndCBzZXQgbGluZW5vIGlmIHRoZXJlIGlzIG5vCglidWZmZXIuCgkocGVkYW50aWNfd2hpdGVzcGFjZSk6IE5ldyBmdW5jdGlvbi4KCShfY3BwX3NjYW5fbGluZSk6IE1hcmsgdG9rZW5zIHRoYXQgaGFkIGhzcGFjZSBiZWZvcmUuICBEb24ndAoJY29uc3VtZSBhIG5ld2xpbmUuICBVc2UgcGVkYW50aWNfd2hpdGVzcGFjZS4KCShfY3BwX2xleF90b2tlbik6IFJlbW92ZSBzdXBwb3J0IGZvciAtdHJhZGl0aW9uYWwgbWFjcm9zLgoJKF9jcHBfZ2V0X2RlZmluZV90b2tlbik6IERlbGV0ZS4KCShfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBEbyB0aGUgcmVhbCB3b3JrIGhlcmUuICBVc2UKCXBlZGFudGljX3doaXRlc3BhY2UuCgkoX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IEluaXRpYWxpemUgcGZpbGUtPmRpcmVjdGJ1Zi4KCgkqIGNwcGxpYi5jIChnZXRfbWFjcm9fbmFtZSk6IERlbGV0ZS4KCShkb19kZWZpbmUpOiBSZWFkIHRoZSBlbnRpcmUgbGluZSBpbnRvIHBmaWxlLT5kaXJlY3RidWYsIHRoZW4KCWZlZWQgdGhlIHRva2VuIGxpc3QgdG8gX2NwcF9jcmVhdGVfZGVmaW5pdGlvbi4KCSogY3BwbGliLmggKEhTUEFDRV9CRUZPUkUpOiBuZXcgZGVmaW5lLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIGEgdG9rbGlzdCBtZW1iZXIsICJkaXJlY3RidWYiLgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IE5ldyBoZXVyaXN0aWM6IGlmIGEganVtcAoJYnJhbmNoZXMgYXJvdW5kIGEgYmxvY2sgd2l0aCBubyBzdWNjZXNzb3JzLCBwcmVkaWN0IGl0IHRha2VuLgoJRGlzZW50YW5nbGUgY29udHJvbCBmbG93LgoKMjAwMC0wNC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoZW1pdF9pdl9hZGRfbXVsdCk6IFJldmVydCBsYXN0IGNoYW5nZS4KCjIwMDAtMDQtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChlbnVtIGNwcF90dHlwZSk6IEFkZCB0b2tlbiB0eXBlcyBmb3IgYWxsCglwdW5jdHVhdG9ycy4gIERpc3Rpbmd1aXNoIHBwLW51bWJlcnMgZnJvbSB2YWxpZCBDIG51bWJlcnMuCglHaXZlIHNvbWUgdG9rZW5zIGJldHRlciBuYW1lcy4gIEluaXRpYWxpemUgZnJvbSBtYWNyby4KCShzdHJ1Y3QgY3BwX25hbWUsIGNwcF90b2tlbiwgY3BwX3Rva2xpc3QpOiBOZXcgZGF0YQoJc3RydWN0dXJlcy4KCVVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsZXguYyAoYnVtcF9jb2x1bW4sIGV4cGFuZF9uYW1lX3NwYWNlLAoJZXhwYW5kX3Rva2VuX3NwYWNlLCBpbml0X3Rva2VuX2xpc3QsIGNwcF9vdXRwdXRfbGlzdCwKCV9jcHBfc2Nhbl9saW5lKTogIE5ldyBmdW5jdGlvbnMuCgkob3V0cHV0X2xpbmVfY29tbWFuZCk6IEFkZCB0aGlyZCBhcmd1bWVudCwgbmV3IGxpbmUgbnVtYmVyLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBleHAuYywgY3BwaGFzaC5jLCBjcHBsaWIuYywgc2Nhbi1kZWNscy5jOiBVcGRhdGUgZm9yIG5ldwoJdG9rZW4gbmFtZXMuCgoyMDAwLTA0LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfZmxvYXR1bnMpOiBFbWl0IG1pc3NpbmcgYmFycmllci4KCjIwMDAtMDQtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcykgW0FfQUxJQVNdOiBTZXQgVFJFRV9VU0VEIG9uIHRoZQoJb2JqZWN0IHBvaW50ZWQgdG8uCgpUaHUgQXByIDIwIDE0OjE5OjE4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChlbWl0X2l2X2FkZF9tdWx0KTogIFNpbXBsaWZ5IGl0J3MgaW5wdXQgYW5kIGVtaXQKCVJFR19FUVVBTCBub3RlIGV4cGxhaW5pbmcgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEF2b2lkIHVubmVjZXNhcnkgcHJlY2FsY3VsYXRpb24KCWFuZCBvdXRnb2luZyBwYXJhbWV0ZXJzIHNwYWNlIGd1YXJkaW5nIGZvciBzaWJsaW5nIGNhbGxzLgoJKHN0b3JlX29uZV9hcmcpOiBMaWtld2lzZS4KClRodSBBcHIgMjAgMDg6MDE6MDcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRvcGxldi5jIChlbnVtIGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlKTogQWRkIERGSV9zaWJsaW5nLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBXcml0ZSBzaWJsaW5nIGR1bXAgZmlsZSBhbmQgYWNjb3VudAoJZm9yIHRpbWUgYXMganVtcCB0aW1lLgoJKiBpbnZva2UudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gb24gZHVtcCBmbGFncy4KCjIwMDAtMDQtMTkgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogYXZyLmM6ICNpbmNsdWRlICJzeXN0ZW0uaCIgaW5zdGVhZCBvZiA8c3RkaW8uaD4gYW5kIDxzdGRsaWIuaD4uCgoyMDAwLTA0LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogUmVwcmVzZW50IGFuIGVtcHR5IG1hY3JvIHdpdGgKCSJcciBcciAiIG5vdCBqdXN0ICJcciAiLgoJKF9jcHBfbWFjcm9leHBhbmQpOiBDb3JyZWN0IGNvbmRpdGlvbiBmb3IgdGhlIGZvbyAoICkgc3BlY2lhbAoJY2FzZS4KCSh1bnNhZmVfY2hhcnMpOiBIYW5kbGUgRU9GIGFzIHNlY29uZCBhcmd1bWVudC4KCShwdXNoX21hY3JvX2V4cGFuc2lvbik6IFNpbXBsaWZ5IHRlc3QgZm9yIHJlbW92aW5nIGVzY2FwZSBhdAoJZW5kLiAgRG8gbm90IHRyaW0gYm90aCBlc2NhcGVzIGlmIHRoZXJlIGlzIG5vIHRleHQgaW4gYmV0d2Vlbi4KCjIwMDAtMDQtMTkgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoRFdBUkYyX0FERFJfU0laRSk6IE5ldyBtYWNyby4gIFVzZSBpdCBpbnN0ZWFkCglvZiBQVFJfU0laRSwgd2hlbiBhcHByb3ByaWF0ZS4KCjIwMDAtMDQtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzeXN0ZW0uaCAoT05MWV9JTlRfRklFTERTKTogTWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuCgkoVVNFX0VOVU1fQklURklFTERTKTogRml4IHR5cG8uCgpXZWQgQXByIDE5IDEyOjE0OjU1IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFNldCBybGktPm9mZnNldF9hbGlnbiBwcm9wZXJseS4KCjIwMDAtMDQtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pcHMuaCAoQklUU19QRVJfV09SRCwgVU5JVFNfUEVSX1dPUkQsIFVOSVRTX1BFUl9GUFJFRywKCUlOVF9UWVBFX1NJWkUsIExPTkdfVFlQRV9TSVpFLCBQT0lOVEVSX1NJWkUsIFBPSU5URVJfQk9VTkRBUlksCglQQVJNX0JPVU5EQVJZKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3RzLgoKV2VkIEFwciAxOSAxMjowMjozNyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKHByZWNvbXB1dGVfYXJndW1lbnRzKTogUmVtb3ZlIG11c3RfcHJlYWxsb2NhdGUgYW5kCglhcmdzX3NpemUgY2FsbHMuCgkoZXhwYW5kX2NhbGwpOiBVcGRhdGUgY2FsbCBvZiBwcmVjb21wdXRlX2FyZ3VtZW50cy4KCgkqIGxvb3AuYyAoY2hlY2tfaW5zbl9mb3JfYml2cywgZm9yX2V2ZXJ5X2luc25faW5fbG9vcCwKCWNoZWNrX2luc25fZm9yX2dpdnMpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShzdHJlbmd0aF9yZWR1Y2UpIC4uLiBoZXJlOyB1c2UgZm9yX2V2ZXJ5X2luc25faW5fbG9vcCB0byBjYWxsCgljaGVja19pbnNuX2Zvcl9naXZzLgoJKiBsb29wLmggKGZvcl9ldmVyeV9pbnNuX2luX2xvb3ApOiBEZWNsYXJlLgoJKGxvb3BfaW5zbl9jYWxsYmFjayk6IE5ldyB0eXBlLgoKMjAwMC0wNC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYV9wb2lzb24pOiAgU3RyaW5ncyBpbiB0aGUgdG9rZW4gYnVmZmVyIGFyZQoJbm90IG51bC10ZXJtaW5hdGVkLgoKVHVlIEFwciAxOCAxNjowNDoxMiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChTRUxFQ1RfU0VDVElPTik6IFVzZSBkYXRhX3NlY3Rpb24gaWYKCWZsYWdfcGljIGFuZCBSRUxPQy4KCjIwMDAtMDQtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNjY3AuYywgY2V4cC55LCBjZXhwLmMsIGNjY3AuMTogUmVtb3ZlZC4KCgkqIGNvbmZpZ3VyZS5pbjogRGVsZXRlIC0tZGlzYWJsZS1jcHBsaWIgb3B0aW9uIGFuZCBhbGwKCXJlZmVyZW5jZXMgdG8gY3BwX21haW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBDQ0NQLCBDQ0NQX09CSlMsCglAY3BwX21haW5ALCBjY2NwLmMsIGNleHAuYywgY2V4cC55LCBjZXhwLm91dHB1dCwgY2V4cC5vLAoJY2NjcC5vLCBjY2NwLCBvciBjcHBtYWluLiAgTGluayBjcHBtYWluLm8gc3RyYWlnaHQgdG8KCWNwcCQoZXhlZXh0KS4gIEFkZCAtLW5vLWhlYWRlcnMgdG8gbWFrZWluZm8gY29tbWFuZCBsaW5lIHdoZW4KCWdlbmVyYXRpbmcgSU5TVEFMTC4gIEluc3RhbGwgYW5kIHVuaW5zdGFsbCBjcHAuMSBtYW5wYWdlLCBub3QKCWNjY3AuMS4KCSogaW5zdGFsbC50ZXhpOiBEZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gY2V4cC55L2NleHAuYy4KCURlbGV0ZSBhbmNpZW50IGluc3RydWN0aW9ucyBmb3IgY29tcGlsaW5nIEdDQyBvbiAzYjEuCgkqIElOU1RBTEw6IFJlZ2VuZXJhdGUuCgoJKiBjcHBmaWxlcy5jLCBjcHBsaWIuaCwganVtcC5jLCBwcm90b2l6ZS5jLCBjLWxleC5jLCBtaXBzL3QtZWNvZmYsCgltaXBzL3QtZWxmLCBtaXBzL3QtcjM5MDA6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGNjY3AuYy4KCSogY29udmV4LmgsIGZ4ODAuaCwgbTY4ay5oLCBwZHAxMS5oOiBSZW1vdmUgcmVmZXJlbmNlcyB0bwoJY2V4cC5jL2NleHAueS4KCSogeG0tbGludXguaCwgeG0tb3MyLmgsIHJvbXAuaDogUmVtb3ZlIGRlZmluaXRpb24gb2YgQlNUUklORywKCXdoaWNoIGlzIG5vIGxvbmdlciB0ZXN0ZWQgYW55d2hlcmUuCgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiBEb24ndCBydW4gZXJyb3IgbWVzc2FnZSB0aHJvdWdoCglnZXR0ZXh0IHR3aWNlLgoKVHVlIEFwciAxOCAxNDoxNjo0NyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmxpY3QuYyAoY29uZmxpY3RfZ3JhcGhfYWRkKTogUGFzcyBlbnVtIHR5cGUgdG8gaHRhYl9maW5kX3Nsb3QuCgkqIGNwcGVycm9yLmMgKGhhc2h0YWIuaCk6IE5vdyBpbmNsdWRlLgoJKiBjcHBleHAuYyAoaGFzaHRhYi5oKTogTGlrZXdpc2UuCgkqIGNwcGxleC5jIChoYXNodGFiLmgpOiBMaWtld2lzZS4KCSogY3BwZmlsZXMuYyAoaGFzaHRhYi5oKTogTGlrZXdpc2UuCgkoZmluZF9pbmNsdWRlX2ZpbGUsIF9jcHBfY2FsY19oYXNoLCBjcHBfcmVhZF9maWxlKTogUGFzcyBlbnVtIHR5cGUKCXRvIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaC4KCSogY3BwaGFzaC5jIChoYXNodGFiLmgpOiBOb3cgaW5jbHVkZS4KCShfY3BwX2xvb2t1cF9zbG90KTogSU5TRVJUIGlzIG5vdyBlbnVtIGluc2VydF9vcHRpb24uCgkqIGNwcGhhc2guaCAoX2NwcF9sb29rdXBfc2xvdCk6IExpa2V3aXNlLgoJKiBjcHBpbml0LmMgKGhhc2h0YWIuaCk6IEluY2x1ZGUgZWFybGllci4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogUGFzcyBlbnVtIHRvIGh0YWJfZmluZF9zbG90LgoJKiBjcHBsaWIuYyAoaGFzaHRhYi5oKTogTm93IGluY2x1ZGUuCgkoZG9fZGVmaW5lLCBkb191bmRlZik6IFBhc3MgZW51bSB0eXBlIHRvIF9jcHBfbG9va3VwX3Nsb3QuCgkoZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0KTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9ydHhfQ09OU1RfSU5UKTogUGFzcyBlbnVtIHRvCglodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2guCgkqIHNpbXBsaWZ5LXJ0eC5jIChjc2VsaWJfbG9va3VwX21lbSwgY3NlbGliX2xvb2t1cCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHR5cGVfaGFzaF9hZGQpOiBMaWtld2lzZS4KCShidWlsZDEpOiBNaW5vciBjbGVhbnVwLgoKCSogZ2djLWNvbW1vbi5jOiBBZGQgbWlzc2luZyBibGFua3MuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfT0ZGU0VUX0FMSUdOLgoJKiB0cmVlLmggKERFQ0xfT0ZGU0VUX0FMSUdOKTogRml4IHR5cG8gaW4gY29tbWVudC4KCgkqIHN0bXQuYyAobWFya19jYXNlX25vZGUpOiBOZXcgZnVuY3Rpb24uCgkobWFya19jYXNlX25lc3RpbmcpOiBDYWxsIGl0LgoKCSogZXhwbWVkLmMgKGVtaXRfc3RvcmVfZmxhZyk6IElmIGNvbXBhcmluZyB0d28td29yZCBpbnRlZ2VyCgl3aXRoIHplcm8sIGNhbiBvcHRpbWl6ZSBORSwgRVEsIEdFLCBhbmQgTFQuCgoJKiBjLWRlY2wuYyAobWFya19iaW5kaW5nX2xldmVsKTogVXNlICdmb3InIGluc3RlYWQgb2YgYHdoaWxlJy4KCSogY29uZmxpY3QuYzogTWlub3IgY2xlYW51cHMuCgkqIG9wdGFicy5jOiBBZGQgYmxhbmsgbGluZQoJKiBzaW1wbGlmeS1ydHguYzogTWlub3IgY2xlYW51cHMuCgoyMDAwLTA0LTE4ICBTdGFuIENveCAgPHNjb3hAY3lnbnVzLmNvbT4KCgkqIGdlbmdlbnJ0bC5jIChnZW5sZWdlbmQpOiBGaXggbWlzc3BlbGxpbmcuCgoyMDAwLTA0LTE4ICBSb2JlcnQgTGlwZSAgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGNvbmZpZ3VyZS5pbiAoRU5VTV9CSVRGSUVMRFNfQVJFX1VOU0lHTkVEKTogQWRkZWQuICBDaGVjayB0aGF0CgliaXRmaWVsZHMgb2YgdGhlIGhvc3QgY29tcGlsZXIgYXJlIG5vdCBzaWduZWQgcXVhbnRpdGllcy4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHN5c3RlbS5oIChVU0VfRU5VTV9CSVRGSUVMRFMpOiBBZGRlZC4KCShFTlVNX0JJVEZJRUxEUyk6IEFkZGVkLgoJKiBydGwuaCAocnR4X2RlZik6IE1lbWJlcnMgYGNvZGUnLCBgbW9kZScsIG5vdyBFTlVNX0JJVEZJRUxELgoJKFNIT1JUX0VOVU1fQlVHKTogRGVsZXRlZC4KCSogdHJlZS5oICh0cmVlX2NvbW1vbik6IE1lbWJlcnMgYGNvZGUnLCBgbW9kZScsIGBidWlsdF9pbl9jbGFzcycsCglub3cgRU5VTV9CSVRGSUVMRC4KCSogY29uZmlnL2kzODYveG0tc2NvLmggKE9OTFlfSU5UX0ZJRUxEUyk6IERlbGV0ZWQuCgkoQ09ERV9GSUVMRF9CVUcpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsveC1hcG9sbG82OCAoQ0MpOiBEZWxldGVkIFNIT1JUX0VOVU1fQlVHLgoJKE9MRF9DQyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay94LWNjdXIgKFhfQ0ZMQUdTKTogTGlrZXdpc2UuCgoyMDAwLTA0LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogRG9uJ3QgY2FsbCBDUFBfQlVNUF9MSU5FIHdoZW4gdGhlCgltYXJrIGlzIGFjdGl2ZS4KCjIwMDAtMDQtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jIChsZXgpOiBEb24ndCBhc3N1bWUgdG9rZW5zIGFyZSBOVUwgdGVybWluYXRlZC4KCSogY3BwbGliLmMgKGRvX2luY2x1ZGUsIGRvX2ltcG9ydCwgZG9faW5jbHVkZV9uZXh0LAoJcmVhZF9saW5lX251bWJlciwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkKTogTGlrZXdpc2UuCgkqIGNwcGhhc2guYyAoY29sbGVjdF9leHBhbnNpb24pOiBMaWtld2lzZS4KCShzcGVjaWFsX3N5bWJvbCwgX2NwcF9tYWNyb2V4cGFuZCk6IENoZWNrIHJldHVybiBmcm9tCgljcHBfZmlsZV9idWZmZXIuCgkqIGNwcGhhc2guaCAoQ1BQX05VTF9URVJNSU5BVEUsIENQUF9OVUxfVEVSTUlOQVRFX1EpOiBEZWxldGUKCW1hY3Jvcy4gIERlbGV0ZSBhbGwgdXNlcy4KCgkqIGdjYy5kZy9jcHAtbWkuYzogQWRkIHR3byBtb3JlIHRlc3QgY2FzZXMuCgkqIGdjYy5kZy9jcHAtbWluZC5oLCBnY2MuZGcvY3BwLW1pbmRwLmg6IE5ldyBmaWxlcy4KCjIwMDAtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBEb24ndCBsb29rIHVwIG5ldyBibG9jayBhZ2Fpbi4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IElmIG5vIGVwaWxvZ3VlIGluIHJ0bCwgZm9yY2UgbGFzdCBibG9jayBsYXN0LgoKMjAwMC0wNC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IFVzZSBoYXJkX2Z1bmN0aW9uX3ZhbHVlIHRvCgljb21wdXRlIHRoZSBSVEwgdG8gdXNlIGZvciBERUNMX1JFU1VMVC4KCk1vbiBBcHIgMTcgMjM6MzU6MjkgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGF0aGxvbl9jb3N0KTogRml4IGxlYSwgZGl2aWRlIGFuZCBYRm1vZGUgbW92ZSBjb3N0cy4KCSh4ODZfaW50ZWdlcl9ERm1vZGVfbW92ZXMsIHg4Nl9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LAoJIHg4Nl9tZW1vcnlfbWlzbWF0Y2hfc3RhbGwpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCShpeDg2X2FkanVzdF9jb3N0KTogSGFuZGxlIE1FTU9SWV9CT1RIIG9uIHBsYWNlcyBNRU1PUllfU1RPUkUgd2FzIG9ubHkKCWFsbG92ZWQ7IGZpeCBsb2FkIHBlbmFsdGllcyBmb3IgQXRobG9uLgoJKiBpMzg2LmggKHg4Nl9pbnRlZ2VyX0RGbW9kZV9tb3ZlcywgeDg2X3BhcnRpYWxfcmVnX2RlcGVuZGVuY3ksCgl4ODZfbWVtb3J5X21pc21hdGNoX3N0YWxsKTogRGVjbGFyZS4KCShUQVJHRVRfSU5URUdFUl9ERk1PREVfTU9WRVMsIFRBUkdFVF9QQVJUSUFMX1JFR19ERVBFTkRFTkNZLAoJIFRBUkdFVF9NRU1PUllfTUlTTUFUQ0hfU1RBTEwpOiBOZXcuCgkqIGkzODYubWQgKGF0aGxvbiBzY2hlZHVsaW5nIHBhcmFtZXRlcnMpOiBGaXggbGF0ZW5jaWVzIGFjY29yZGluZyB0bwoJQXRobG9uIE9wdGltaXphdGlvbiBNYW51YWwuCgkoc2FoZiwgeGNoZywgZmxkY3csIGxlYXZlIGluc3RydWN0aW9uIHBhdHRlcm5zKTogU2V0IGF0aGxvbl9kZWNvZGUgdG8KCXZlY3Rvci4KCShmc3FydCBpbnN0cnVjdGlvbiBwYXR0ZXJucyk6IFNldCBhdGhsb25fZGVjb2RlIHRvIGRpcmVjdC4KCShtb3ZoaV8xKTogUHJvbW90ZSBmb3IgVEFSR0VUX1BBUlRJQUxfUkVHX0RFUEVOREVOQ1kgYW5kIGZvcgoJUEFSVElBTF9SRUdJU1RFUl9TVEFMTCB3aXRoICFUQVJHRVRfSElNT0RFX01BVEggbWFjaGluZXMuCgkobW92cWlfMSk6IEhhbmRsZSBwcm9tb3RpbmcgY29ycmVjdGx5IGZvciBUQVJHRVRfUEFSVElBTF9SRUdfREVQRU5ERU5DWQoJYW5kIFRBUkdFVF9QQVJUSUFMX1JFR0lTVEVSX1NUQUxMIG1hY2hpbmVzLgoJKHB1c2hkZl9ub2ludGVnZXIpOiBOZXcgcGF0dGVybi4KCShwdXNoZGZfaW50ZWdlcik6IFJlbmFtZSBmcm9tIHB1c2hkZi4KCShtb3ZkZl9ub2ludGdlcik6IEVuYWJsZSBmb3IgIVRBUkdFVF9JTlRFR0VSX0RGTU9ERV9NT1ZFUyBtYWNoaW5lcy4KCShtb3ZkZl9pbnRnZXIpOiBEaXNhYmxlIGZvciAhVEFSR0VUX0lOVEVHRVJfREZNT0RFX01PVkVTIG1hY2hpbmVzLgoKMjAwMC0wNC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoY2Fub25pY2FsaXplX2NvbmRpdGlvbik6IEFkZCBXQU5UX1JFRyBhcmd1bWVudC4KCVN0b3AgdGhlIHNlYXJjaCBpZiB3ZSBtYXRjaCBpdC4KCSogZXhwci5oIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogVXBkYXRlIGRlY2wuCgkqIHByZWRpY3QuYyAoZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IFVzZSBpdC4gIFRyYWNrIGxhc3QKCWV4cGVjdGVkIHZhbHVlIG5vdGUuCgkoZmluZF9leHBlY3RlZF92YWx1ZSk6IFJlbW92ZS4KCgkqIHJlb3JnLmMgKG1vc3RseV90cnVlX2p1bXApOiBBbHdheXMgdXNlIEJSX1BST0IgaWYgcHJlc2VudC4KCjIwMDAtMDQtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGFjbG9jYWwubTQgKEFNX0dOVV9HRVRURVhUKTogRG9uJ3QgQUNfUkVRVUlSRShbQUNfRlVOQ19NTUFQXSkuCgkoQUNfRlVOQ19NTUFQX0ZJTEUpOiBOZXcgbWFjcm8sIHRlc3RzIHJlYWQtb25seSBwcml2YXRlIG1hcCBvZgoJYSBwbGFpbiBmaWxlLgoJKiBjb25maWd1cmUuaW46IENhbGwgQUNfRlVOQ19NTUFQX0ZJTEUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKCSogaW50bC9sb2FkbXNnY2F0LmM6IFRlc3QgSEFWRV9NTUFQX0ZJTEUgbm90IEhBVkVfTU1BUC4KCSogZml4aW5jL2ZpeGluY2wuYzogTGlrZXdpc2UuCgoyMDAwLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZXhwZWN0KTogTmV3LgoJKGV4cGFuZF9idWlsdGluKTogQ2FsbCBpdC4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9FWFBFQ1QpOiBOZXcuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERlY2xhcmUgX19idWlsdGluX2V4cGVjdC4KCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IGl0LgoKCSogcHJlZGljdC5jIChleHBlY3RlZF92YWx1ZV90b19icl9wcm9iKTogTmV3LgoJKGZpbmRfZXhwZWN0ZWRfdmFsdWUpOiBOZXcuCgkqIGJhc2ljLWJsb2NrLmggKGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEludm9rZSBpdC4KCgkqIHJ0bC5oIChOT1RFX0VYUEVDVEVEX1ZBTFVFKTogTmV3LgoJKE5PVEVfSU5TTl9FWFBFQ1RFRF9WQUxVRSk6IE5ldy4KCSogcnRsLmMgKG5vdGVfaW5zbl9uYW1lKTogVXBkYXRlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogUmVvcmcgTk9URV9MSU5FX05VTUJFUiBzcGVjaWFsCgljYXNlczsgaGFuZGxlIE5PVEVfSU5TTl9FWFBFQ1RFRF9WQUxVRS4KCjIwMDAtMDQtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogQ2Fubm90IHVzZQoJbGVhZiBzaWJjYWxsIGRlbGF5IHNsb3QgaWYgZmxhZ19waWMuCgkob3V0cHV0X3NpYmNhbGwpOiBBbHdheXMgZW1pdCBjYWxsIGZvciBsZWFmIHNpYmNhbGwgaWYgZmxhZ19waWMuCgoyMDAwLTA0LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc3RtcC1maXhwcm90byk6IEFja25vd2xlZGdlIGVycm9ycyBpbiBmaXhwcm90by4KCgkqIGZpeHByb3RvOiBJZiBmaXgtaGVhZGVyIGZhaWxzLCBleGl0IHdpdGggYW4gZXJyb3IuCgpNb24gQXByIDE3IDE0OjU5OjM2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlLmMgKHN0cnVjdCBjaGVja19kZXBlbmRlbmNlX2RhdGEpOiBOZXcuCgkoY2hlY2tfZGVwZW5kZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShpbnZhbGlkYXRlKTogVXNlIGNoZWNrX2RlcGRlbmVuY2UuCgoyMDAwLTA0LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyb3V0LmMgKERXQVJGX0NJRV9EQVRBX0FMSUdOTUVOVCk6IEFkanVzdCwgbm93IHRoYXQKCVVOSVRTX1BFUl9XT1JEIGlzIHVuc2lnbmVkLgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9jb21tb24pOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50LgoKMjAwMC0wNC0xNiAgRGF2ZSBQaXR0cyAgPGRwaXR0c0Bjb3p4LmNvbT4KCgkqIE1ha2VmaWxlLmluICgkKHNyY2RpcikvYy1wYXJzZS55OiBjLXBhcnNlLmluKTogRW5jbG9zZSB0aGUgd2hvbGUKCW1lc3NhZ2UgaW4gcXVvdGVzLiBPdGhlcndpc2UsIElCTSdzIG1ha2UgcHJvZ3JhbSB0cmVhdHMgdGhlICcjJyBhcyB0aGUKCXN0YXJ0IG9mIGEgY29tbWVudCBhbmQgaWdub3JlcyB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lLgoKCSogYy1sZXguYyAoeXlsZXgpOiBDaGFuZ2UgZm9yIEVCQ0RJQywgbG93ZXIgY2FzZSBjaGFyYWN0ZXJzIHByZWNlZGUKCXVwcGVyIGNhc2UuCgkqIGNjY3AuYyAoaW5pdGlhbGl6ZV9jaGFyX3N5bnRheCk6IEFsbG93IGZvciBob2xlcyBpbiBFQkNESUMuCgkqIGNleHAueSAoaW5pdGlhbGl6ZV9yYW5kb21fanVuayk6IExpa2V3aXNlLgoJKiBjcHBmaWxlcy5jIChmaW5kX2luY2x1ZGVfZmlsZSk6IENhc3QgYWxsb2NhIHJldHVybiB2YWx1ZS4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX3N0YW5kYXJkX2luY2x1ZGVzKTogTGlrZXdpc2UuCgkqIGNwcGxpYi5jIChjcHBfZGVmaW5lLCBjcHBfdW5kZWYpOiBMaWtld2lzZS4KCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IFVzZSBJU1BSSU5ULgoJKiBmaW5hbC5jIChvdXRwdXRfYXNtX2luc24pOiBBbGxvdyBmb3IgaG9sZXMgaW4gRUJDRElDLgoJKiBmb2xkLWNvbnN0LmMgKENIQVJNQVNLKTogTmV3LgoJKHJlYWxfaGV4X3RvX2YpOiBVc2UgaXQuCgkqIHJlYWwuYyAoQ0hBUk1BU0spOiBOZXcuCgkoZXRvYXNjLCBhc2N0b2VnKTogVXNlIGl0LgoJKGFzY3RvZWcpOiBFQkNESUMgbG93ZXIgY2FzZSBjaGFyYWN0ZXJzIHByZWNlZGUgdXBwZXIgY2FzZS4KCgkqIGkzNzAuYyAobXZzX2FkZF9sYWJlbCk6IENoYW5nZSBzcGFjaW5nIGZvciBjb2RpbmcgY29udmVudGlvbnMuCgkqIGkzNzAuaCAoQVNNX09VVFBVVF9DQVNFX0xBQkVMKTogQ2hhbmdlIHRvIHRoZSBkYXRhIENTRUNUIGZvciB0aGUKCW91dHB1dGluZyBjYXNlIHZlY3RvcnMuCgkoQVNNX09VVFBVVF9DQVNFX0VORCk6IE5ldywgcHV0IGFzc2VtYmxlciBiYWNrIGludG8gY29kZSBDU0VDVC4KCShBU01fT1VUUFVUX0FERFJfVkVDX0VMVCwgQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogUmVtb3ZlIHBhZ2UgY2hlY2ssCglzaW5jZSB2ZWN0b3IgaW4gaW4gdGhlIGRhdGEgQ1NFQ1QuCgkoQVNNX09VVFBVVF9SRUdfUE9QLCBBU01fT1VUUFVUX1JFR19QVVNIKTogUmVzdG9yZSB0byBjb3JyZWN0IG9wZXJhdGlvbi4KCSogaTM3MC5tZCAoTWFueSBwYXR0ZXJucyk6IFB1dCB0aGUgbGVuZ3RoIGluIHRoZSBYTCBkaXJlY3RpdmVzLgoJKG1vdmRpKTogUHV0IGJhY2sgU1RNIGFuZCBNVkMgaW4gZGVmaW5pdGlvbi4KCShmbG9hdHNpZGYyKTogQ29ycmVjdCBUQVJHRVRfRUxGX0FCSSBwYXR0ZXJuIGFuZCBhZGQgYmFjayB0aGUgTEUzNzAKCXBhdHRlcm4gdXNpbmcgdGhlIFRDQS4KCSogb2UuaCAoQ1BQX1NQRUMpOiBBZGRlZCB0byBhbGxvdyB0cmlncmFwaHMuCgkqIHhtLW9lLmggKEhPU1RfQklUU19QRVJfTE9OR0xPTkcpOiBDaGFuZ2UgdG8gMzIuIElCTSdzIGNvbXBpbGVyIGRvZXMKCW5vdCBzdXBwb3J0IHRoZSAibG9uZyBsb25nIiB0eXBlLgoKMjAwMC0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBOZXcKCWZ1bmN0aW9uLgoJKG1pcHNfcmVnX21vZGVfb2tfZm9yX2Jhc2VfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFJFR19PS19TVFJJQ1RfUCk6IERvbid0IGRlZmluZS4KCShSRUdfT0tfRk9SX0lOREVYX1ApOiBEZWZpbmUgdW5jb25kaXRpb25hbGx5LgoJKFJFR19NT0RFX09LX0ZPUl9CQVNFX1ApOiBVc2UgbWlwc19yZWdfbW9kZV9va19mb3JfYmFzZV9wLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFVzZSBtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHMxNl9zaW1wbGVfbWVtb3J5X29wZXJhbmQpOiBBZGp1c3Qgbm93Cgl0aGF0IEdFVF9NT0RFX1NJWkUgaXMgdW5zaWduZWQuCgkobWlwc19yZWdfbW9kZV9va19mb3JfYmFzZV9wKTogRGVmaW5lLgoJKG1pcHNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBMaWtld2lzZS4gIEFkanVzdCBub3cKCXRoYXQgR0VUX01PREVfU0laRSBpcyB1bnNpZ25lZC4KCShibG9ja19tb3ZlX2xvb3ApOiBNYWtlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdW5zaWduZWQuCgkoZXhwYW5kX2Jsb2NrX21vdmUpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmcpOiBNYWtlIHRoZSBsb29wIGNvdW50ZXIgdW5zaWduZWQgdG8gbWF0Y2ggdGhlCglib3VuZGFyeSBjb25kaXRpb24uCgoyMDAwLTA0LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsLmggKGVudW0gaW5zbl9ub3RlKTogTmV3IGVudW1lcmF0aW9uLiAgU3Vic3VtZQoJTk9URV9JTlNOX0RFTEVURUQgYW5kIGZyaWVuZHMuCgkoR0VUX05PVEVfSU5TTl9OQU1FKTogQWRqdXN0IGluZGV4IGJ5IE5PVEVfSU5TTl9CSUFTLgoJKiBydGwuYyAobm90ZV9pbnNuX25hbWUpOiBUd2VhayBzdHJpbmcgb3JkZXIuCgoyMDAwLTA0LTE1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAoX2NwcF9yZWFkX2FuZF9wcmVzY2FuKTogRW5sYXJnZSBsZW4gYnkgc2V0dGluZyBpdAoJdG8gb2Zmc2V0ICogMi4KCgkqIGNwcGxleC5jIChvdXRwdXRfbGluZV9jb21tYW5kKTogUmVtb3ZlIGRlYnVnZ2luZyBwcmludHMuCgkoY3BwX291dHB1dF90b2tlbnMpOiBEb24ndCB3cml0ZSBvdXQgYSB6ZXJvLWxlbmd0aCBidWZmZXIgb3IKCXRyeSB0byBzZWUgaWYgaXQgaGFzIGEgbmV3bGluZSBpbiBpdC4KCShfY3BwX2V4cGFuZF90b19idWZmZXIpOiBDb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGJlZm9yZSBwdXNoaW5nLgoJKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IE1vdmUgc2hpZnQtZG93biBvZiBwdXNoYmFjayBieXRlcyB0bwoJdGhlIGVuZCBvZiB0aGUgbG9vcC4gIFVzZSBtZW1tb3ZlLiAgRG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YKCXRoZSBidWZmZXIuICBSZW1vdmUgdHJhaWxpbmcgbmV3bGluZXMgZnJvbSBlcnJvciBtZXNzYWdlcy4KCjIwMDQtMDQtMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oIChTWU5UQVhfSU5DTFVERSwgU1lOVEFYX0FTU0VSVCwgZGlyZWN0aXZlX2hhbmRsZXIpOiBuZXcuCgkqIGNwcGxpYi5jOiBBZGQgbmV3IHN5bnRheCBmbGFncyB0byBkaXJlY3RpdmUgdGFibGUsIGFuZAoJc3VwcG9ydGluZyBtYWNyb3MuCgoyMDAwLTA0LTE1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBZZXMsIHRoZSB4ODYgY2FuIHBvcCA2NGsgYXQgb25jZQoJdXNpbmcgcmV0ICROLgoKMjAwMC0wNC0xNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogdG9wbGV2LmMgKGRpc3BsYXlfaGVscCk6IFByZWZpeCAiZiIgdG8gInNjaGVkLXZlcmJvc2U9Ii4KCSogaGFpZmEtc2NoZWQuYzogVXBkYXRlIC1mc2NoZWQtdmVyYm9zZSBjb21tZW50cyB0byB1c2UgIj0iLgoKU2F0IEFwciAxNSAxMDo1OToxOSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGdnYy1wYWdlLm8pOiBOb3cgaW5jbHVkZXMgdG9wbGV2LmguCgkqIGdnYy1wYWdlLmMgKHRvcGxldi5oKTogTm93IGluY2x1ZGVkLgoJKGdjX3RpbWUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZ2djX2NvbGxlY3QpOiBUSU1FIG5vdyBsb25nLgoJKiB0b3BsZXYuYyAocGFyc2VfdGltZSwgdmFyYXNtX3RpbWUsIGdjX3RpbWUpOiBTdGlsbCBnbG9iYWw7IGFsbAoJb3RoZXJzIHN0YXRpYy4KCSogdG9wbGV2LmggKGdjX3RpbWUsIHBhcnNlX3RpbWUsIGdjX3RpbWUpOiBOZXcgZGVjbGFyYXRpb25zLgoKCSogdG9wbGV2LmM6IE1ha2UgKl90aW1lIHZhcmlhYmxlIGxvbmcgdG8gcmVkdWNlIGNoYW5jZSBvZiBvdmVyZmxvdy4KCShUSU1FVkFSKTogTGlrZXdpc2UgZm9yIGBvdGltZScuCgkocHJpbnRfdGltZSk6IEFyZyBpcyBub3cgbG9uZzsgY29tcHV0ZSBwZXJjZW50YWdlIGluIEZQIGFuZCByb3VuZC4KCSogdG9wbGV2LmggKHByaW50X3RpbWUpOiBBcmcgaXMgbG9uZy4KCgkqIHRyZWUuYzogTWlub3Igd2hpdGVzcGFjZSBjaGFuZ2VzLgoKCSogY29uZmlndXJlLmluIChhbHBoYSotKi0qKTogQWRkIGNvbmZpZy9hbHBoYS90LWFscGhhLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGxpYmdjYzIuYyAoX19maXh1bnN0ZkRJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zdGZkaS4KCShfX2ZpeHVuc3hmREkpOiBSZW5hbWVkIGZyb20gX19maXh1bnN4ZmRpLgoJKF9fZml4dW5zZGZESSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc2RmZGkuCgkoX19maXh1bnNzZkRJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zc2ZkaS4KCShfX2Zsb2F0ZGlzZik6IFVzZSBwcm9wZXIgdHlwZSBpbiBSRVBfQklUIG1hY3JvLgoJKF9fZml4dW5zeGZTSSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc3hmc2kuCgkoX19maXh1bnNkZlNJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zZGZzaS4KCShfX2ZpeHVuc3NmU0kpOiBSZW5hbWVkIGZyb20gX19maXh1bnNzZnNpLgoJKiBsaWJnY2MyLmg6IEFkZCBjYXNlcyBmb3IgTUlOX1VOSVRTX1BFUl9XT1JEID4gNC4KCUNoYW5nZSBsb2NhdGlvbiBvZiBtYWNyb3MgYW5kIHVwcGVyLWNhc2Ugc29tZSBuYW1lcyBhcyBhYm92ZS4KCSogbG9uZ2xvbmcuaCAoW2FscGhhXSk6IFVzZSBQQVJBTVMsIG5vdCBfX1AgaW4gZGVjbCBvZiBfX3VkaXZfX3Fybm5kLgoJKiBjb25maWcvYWxwaGEvdC1hbHBoYSwgY29uZmlnL2FscGhhL3Fybm5kLmFzbTogTmV3IGZpbGVzLgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogQWRkIGNhc3QgdG8gcmVtb3ZlIHdhcm5pbmcuCgkoaW1tZWRfcmVhbF9jb25zdF8xKTogT25seSB1c2UgQ09OU1RbMDFdX1JUWCBpZiBub3QgaW4gbmVzdGVkIGZ1bmN0aW9uLgoKCSogZmxvdy5jIChjb3VudF9iYXNpY19ibG9ja3MsIGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBSZW1vdmUgbGFzdCBjaGFuZ2UuCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBJZiBoYXZlIFJFR19FSF9SRUdJT04sIHVwZGF0ZQoJcmVnaW9uIG51bWJlciB0byAtMS4KCjIwMDAtMDQtMTUgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2FoQGFybS5jb20pCgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBVbm1hcmsgZXZlcnl0aGluZywgdGhlbgoJY2FsbCB1bnNoYXJlX2FsbF9ydGwuCgoJKiBhcm0ubWQgKG1vdmhpKTogUkVHTk9fUE9JTlRFUl9BTElHTiBpcyBub3cgYml0cy4KCkZyaSBBcHIgMTQgMTY6NTg6NDUgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19kaXZkaTMsIF9fbW9kZGkzLCBfX3VkaXZkaTMsIF9fdW1vZGRpMyk6CglVc2UgLnMxIG5vdCAuczAgZm9yIGFsbCBGUCBpbnN0cnVjdGlvbnMuCgoyMDAwLTA0LTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAoY3BwX291dHB1dF90b2tlbnMsIGNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCk6IE5ldyBwdWJsaWMKCWludGVyZmFjZXMuCgkoc2FmZV9md3JpdGUsIG91dHB1dF9saW5lX2NvbW1hbmQpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShjcHBfZXhwYW5kX3RvX2J1ZmZlcik6IE5vdyBwcml2YXRlIHRvIGNwcGxpYi4KCShjcHBfc2Nhbl9idWZmZXIpOiBUYWtlIGEgcHJpbnRlci4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxpYi5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCShjcHBfcHJpbnRlcik6IE5ldy4KCShjcHBfYnVmZmVyKTogUmVtb3ZlIGxhc3Rfbm9taW5hbF9mbmFtZS4KCShjcHBfcmVhZGVyKTogUmVtb3ZlIGxpbmVuby4KCgkqIGNwcG1haW4uYzogVXNlIGEgY3BwX3ByaW50ZXIuCgkqIGZpeC1oZWFkZXIuYzogTm8gbmVlZCB0byBpbmhpYml0IGxpbmUgY29tbWFuZHMuICBDYWxsCgljcHBfc3RhcnRfcmVhZCB3aXRoIG5vIHByaW50ZXIuCgoJKiBjcHBlcnJvci5jIChjcHBfbm90aWNlX2Zyb21fZXJybm8pOiBQcm92aWRlIGRlZmF1bHQgbmFtZS4KCSogY3BwZmlsZXMuYyAobWFrZV9JSEFTSCwgX2NwcF9mYWtlX2loYXNoKTogTmV3IGZ1bmN0aW9ucy4KCShmaW5kX2luY2x1ZGVfZmlsZSwgY3BwX3JlYWRfZmlsZSk6IFVzZSBtYWtlX0lIQVNILgoJKGZpbGVfY2xlYW51cCk6IFNldCBjb250cm9sX21hY3JvIGFuZCBjbGVhcgoJaW5wdXRfc3RhY2tfbGlzdGluZ19jdXJyZW50IGhlcmUuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBEb24ndCBvdXRwdXQgZW50ZXJpbmctZmlsZSBtYXJrZXIuCgkqIGNwcGhhc2guYyAoc3BlY2lhbF9zeW1ib2wpOiBMb29rIGZvciB0aGUgbGluZSBudW1iZXIgaW4gdGhlCglidWZmZXIsIG5vdCB0aGUgcmVhZGVyLgoJKF9jcHBfbWFjcm9leHBhbmQpOiBObyBuZWVkIHRvIGRpc2FibGUgbGluZSBjb21tYW5kcy4KCShfY3BwX2R1bXBfZGVmaW5pdGlvbik6IE5vIG5lZWQgdG8gZ2VuZXJhdGUgbGluZSBjb21tYW5kcy4KCShkdW1wX2hhc2hfaGVscGVyKTogUmVtb3ZlIGV4Y2VzcyBuZXdsaW5lIGZyb20gb3V0cHV0LgoJKiBjcHBpbml0LmMgKGR1bXBfc3BlY2lhbF90b19idWZmZXIpOiBObyBuZWVkIHRvIGdlbmVyYXRlIGxpbmUKCWNvbW1hbmRzLgoJKGNwcF9wcmludGVyX2luaXQpOiBOZXcuCgkoY3BwX3N0YXJ0X3JlYWQpOiBUYWtlIGEgcHJpbnRlciwgYW5kIHN0YXJ0IGl0IHVwIGlmIGl0J3Mgbm90CglOVUxMLiAgTm8gbmVlZCB0byBnZW5lcmF0ZSBsaW5lIGNvbW1hbmRzLgoJKGNwcF9maW5pc2gpOiBFeHBlY3Qgbm8gYnVmZmVycyBzdGFja2VkIGF0IGFsbC4gIFRha2UgYQoJcHJpbnRlciBhcmd1bWVudCwgYW5kIGZsdXNoIHRoZSBvdXRwdXQgYnVmZmVyIGlmIGl0J3Mgbm90CglOVUxMLgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBSZXR1cm4gRU9GIGlmIHRoZXJlJ3Mgbm8gYnVmZmVyLgoJRG9uJ3QgcHV0IHR3byBoYXNoZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBhc3NlcnRpb24uCgkoY3BwX2dldF90b2tlbik6IERvbid0IGluY3JlbWVudCBwZmlsZS0+bGluZW5vIG9yIGVtaXQgbGluZQoJY29tbWFuZHMgaGVyZS4gIFJldHVybiBFT0YgaWYgdGhlcmUncyBubyBidWZmZXIgd2hlbiB3ZSBnZXQKCUVPRi4KCSogY3BwbGliLmMgKGRvX2RlZmluZSwgc2tpcF9pZl9ncm91cCk6CglObyBuZWVkIHRvIGRpc2FibGUgbGluZSBjb21tYW5kcy4KCShfY3BwX291dHB1dF9saW5lX2NvbW1hbmQpOiBEZWxldGUgZnVuY3Rpb24uCgkoZG9fbGluZSk6IERvbid0IGVtaXQgbGluZSBjb21tYW5kcyBoZXJlLCBidXQgc2V0IHRoaW5ncyB1cCBzbwoJdGhleSB3aWxsIGJlIGVtaXR0ZWQgaWYgbmVjZXNzYXJ5LiAgVXNlIF9jcHBfZmFrZV9paGFzaCB0bwoJbWFrZSB1bmlxdWUgbm9taW5hbF9mbmFtZXMgaWYgbmVjZXNzYXJ5LgoJKGRvX2VsaWYsIGRvX2Vsc2UsIF9jcHBfaGFuZGxlX2VvZik6IENhbGwgY3BwX2Vycm9yX3dpdGhfbGluZQoJd2l0aCAwIGZvciBjb2x1bW4sIG5vdCAtMS4KCShfY3BwX2hhbmRsZV9lb2YpOiBEb24ndCBzZXQgdGhlIGNvbnRyb2wgbWFjcm8gaGVyZS4gIERvbid0CgljbGVhciBpbnB1dF9zdGFja19saXN0aW5nX2N1cnJlbnQgaGVyZS4gIERvbid0IGVtaXQgbGluZQoJY29tbWFuZHMuCgoyMDAwLTA0LTE0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKExJTktfU1RBUlRfU09MQVJJU19TUEVDKTogRGVmaW5lIHRvIGVtcHR5CglhbHdheXMsIHVzZSB0aGUgZGVmYXVsdCBTVlI0IHN0YXJ0IGFkZHJlc3MuCgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKExJTktfU1BFQyk6IERvbid0IGRlZmluZS4KCShMSU5LX1NITElCX1NQRUMpOiBEZWZpbmUuCgkoTElOS19TVEFSVF9ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgkoTElOS19PU19ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEVOREZJTEVfU1BFQyk6IFVzZSB0aGUgJShlbmRmaWxlXyopIG1hY3Jvcy4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaS5hc20gKF9fZWFiaSk6IENhbGwgX19pbml0IHJhdGhlciB0aGFuCglfX2RvX2dsb2JhbF9jdG9ycyB0byBoYW5kbGUgY29uc3RydWN0b3JzLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFNUQVJURklMRV9BRFNfU1BFQyk6IFVzZSBjcnRiZWdpbi4KCShTVEFSVEZJTEVfWUVMTE9XS05JRkVfU1BFQyk6IExpa2V3aXNlLgoJKFNUQVJURklMRV9NVk1FX1NQRUMpOiBMaWtld2lzZS4KCShTVEFSVEZJTEVfU0lNX1NQRUMpOiBMaWtld2lzZS4KCShFTkRGSUxFX0FEU19TUEVDKTogVXNlIGNydGVuZC4KCShFTkRGSUxFX1lFTExPV0tOSUZFX1NQRUMpOiBMaWtld2lzZS4KCShFTkRGSUxFX01WTUVfU1BFQyk6IExpa2V3aXNlLgoJKEVOREZJTEVfU0lNX1NQRUMpOiBMaWtld2lzZS4KCShTVEFSVEZJTEVfU09MQVJJU19TUEVDKTogVXNlIGNydGJlZ2luL2NydGJlZ2luUy4KCShFTkRGSUxFX1NPTEFSSVNfU1BFQyk6IFVzZSBjcnRlbmQvY3J0ZW5kUy4KCShTVEFSVEZJTEVfTElOVVhfU1BFQyk6IFVzZSBjcnRiZWdpblMgZm9yIHNoYXJlZCBvYmplY3RzLgoJKEVOREZJTEVfTElOVVhfU1BFQyk6IFVzZSBjcnRlbmRTIGZvciBzaGFyZWQgb2JqZWN0cy4KCSogY29uZmlnL3JzNjAwMC90LXBwY2NvbW0gKExJQjJGVU5DU19FWFRSQSk6IERvbid0IGJ1aWxkIGVhYmktY3RvcnMuby4KCShFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEJ1aWxkIGNydGJlZ2luUy9jcnRlbmRTLgoJKENSVFNUVUZGX1RfQ0ZMQUdTX1MpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaS1jdG9ycy5jOiBEZWxldGUuCgoJKiBjb25maWcvcnM2MDAwL2VhYmktY2kuYXNtIChfX2luaXQpOiBBbGlnbiBzdGFjayB0byAxNi1ieXRlCglib3VuZGFyeS4KCShfX2ZpbmkpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9lYWJpLWNuLmFzbSAoX19pbml0KTogQWxsb3cgZm9yIDE2LWJ5dGUgc3RhY2sgZnJhbWUuCglib3VuZGFyeS4KCShfX2ZpbmkpOiBMaWtld2lzZS4KCkZyaSBBcHIgMTQgMTY6MDk6MDIgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChmb3JjZV90b19tb2RlLCBjYXNlIExTSElGVFJUKTogQ2hlY2sgdGhhdCBzaGlmdCBzaGlmdAoJcGx1cyBtYXNrIHNpemUgaXMgc21hbGxlciBvciBlcXVhbCB0byB0aGUgbW9kZSBzaXplLgoKRnJpIEFwciAxNCAxODowNzozMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCwgY2FzZSBOT1RFKTogRG9uJ3QgYmxvdyB1cCBpZiBOT1RFX0JBU0lDX0JMT0NLCglub3QgeWV0IHNldC4KCgkqIGV4cHIuYyAocmVsb2FkLmgpOiBOb3cgaW5jbHVkZWQuCgkoZW1pdF9ibG9ja19tb3ZlKTogU2V0IHZvbGF0aWxlX29rIHdoZW4gY2hlY2tpbmcgZm9yIG1vdnN0ci4KCShlbWl0X21vdmVfMSk6IENoZWNrIGZvciByZXBsYWNlbWVudHMgaW4gYWRkcmVzc2VzIGluIG11bHRpLXdvcmQgY2FzZS4KCSogTWFrZWZpbGUuaW4gKGV4cHIubyk6IE5vdyBpbmNsdWRlcyByZWxvYWQuaC4KCgkqIGZsb3cuYyAoY291bnRfYmFzaWNfYmxvY2tzKTogUmVtb3ZlIHVudXNlZCB2YXIgUFJFVl9DQUxMLgoJTmV2ZXIgaGF2ZSBhIExJQkNBTEwgZW5kIGEgYmFzaWMgYmxvY2suCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IExpa2V3aXNlLgoJUmVvcmdhbml6ZSBDQUxMX0lOU04gY2FzZXMuCgoJKiBzYml0bWFwLmggKEVYRUNVVEVfSUZfU0VUX0lOX1NCSVRNQVApOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgpGcmkgQXByIDE0IDEwOjU0OjIyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9faWE2NF9ub25sb2NhbF9nb3RvKTogRHJvcCBvYnNvbGV0ZQoJY29tcGxldGVycyBmcm9tIG1vdi5yZXQgaW5zdHJ1Y3Rpb24uCgoyMDAwLTA0LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdik6IERvbid0IGRpc3RyaWJ1dGUgYW5kIHdpZGVuCgltdWx0aXBseSBhY3Jvc3MgcGx1cyBmb3Igbm9uLXNpemV0eXBlIHVuc2lnbmVkIHR5cGVzLgoKMjAwMC0wNC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IERvbid0IGF1dG9pbmMgZWxpbWluYWJsZSByZWdpc3RlcnMuCglJZiB0aGUgb3JpZ2luYWwgc291cmNlIGlzIGRlYWQgaW4gdGhlIGluY3IgaW5zbiwgaXQncyBkZWFkIG5vdy4KCkZyaSBBcHIgMTQgMDc6NDA6MzIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogUHJvcGVybHkgY29tcGFyZSBLTk9XTl9BTElHTiB0bwoJc2VlIGlmIERFQ0xfQklUX0ZJRUxEIG5lZWRzIHRvIHN0aWxsIGJlIHNldC4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfdHlwZSk6IE1ha2UgUFJFQ0lTSU9OIDkgYml0cyBhbmQgTU9ERSA3LgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlLCBjYXNlIElOVEVHRVJfVFlQRSk6IERvbid0IGNhbGwKCXByaW50X2ludF9jc3Rfb2N0YWwgd2l0aCBzb21ldGhpbmcgdGhhdCdzIG5vdCBhbiBJTlRFR0VSX0NTVC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9lbWl0X2Zsb2F0dW5zKTogRW5zdXJlIHdlIHBhc3MgYSBSRUcKCWFuZCBub3QgYSBTVUJSRUcgdG8gYSBGTE9BVCBydGwuCgpUaHUgQXByIDEzIDE5OjM5OjU2IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAodHJ5X3NwbGl0KTogQXZvaWQgaW5maW5pdGUgbG9vcCBpZiB0aGUgc3BsaXQKCXJlc3VsdHMgaW4gYSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBpbnNuLgoKMjAwMC0wNC0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChleHBhbmRfYmxvY2tfbW92ZSk6IFBhc3MgYWxpZ25tZW50Cglhcmd1bWVudCB0byBtb3ZlX2J5X3BpZWNlcyBpbiBiaXRzLCBub3QgYnl0ZXMuCgoJKiBjb25maWcvbWlwcy9saW51eC5oIChDUFBfUFJFREVGSU5FUyk6IEFsc28gZGVmaW5lIF9fUElDX18gYW5kCglfX3BpY19fIGZvciBsaXR0bGUgZW5kaWFuLgoKMjAwMC0wNC0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaDogQWRkIHByb3RvdHlwZSBmb3IKCXVub19jb21wYXJpc29uX29wZXJhdG9yLgoKVGh1IEFwciAxMyAxNTo1NTowOCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGFsaWFzLmMgKG5vbmxvY2FsX3JlZmVyZW5jZV9wKTogVGFrZSBjYXJlIG9mIENBTExfSU5TTlMncyBmdXNhZ2UuCgkqIGNhbGxzLmMgKEVDRl9QVVJFKTogTmV3IGZsYWcuCgkoZW1pdF9jYWxsXzEpOiBIYW5kbGUgRUNGX1BVUkUgY2FsbHMuCgkoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IFVuc2V0IEVDRl9QVVJFIGZsYWcgdG9vLgoJKHByZWNvbXB1dGVfYXJndW1lbnRzKTogUHJlY29tcHV0ZSBmb3IgRUNGX1BVUkUgdG9vLgoJKGV4cGFuZF9jYWxsKTogSGFuZGxlIEVDRl9QVVJFIGNhbGxzIHRvby4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogUmVuYW1lIG5vX3F1ZXVlIGFyZ3VtZW50IHRvIGZuX3R5cGUsCglhY2NlcHQgdmFsdWUgb2YgMiBhcyBwdXJlIGZ1bmN0aW9uLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlLCBlbWl0X2xpYnJhcnlfY2FsbCk6IFJlbmFtZSBub19xdWV1ZSBhcmd1bWVudAoJdG8gZm5fdHlwZS4KCSogb3B0YWJzLmMgKHByZXBhcmVfY21wX2luc24pOiBQYXNzIGZuX3R5cGUgMiB0byBtZW1jbXAgY2FsbC4KCgkqIHRyZWUuaCAoREVDTF9JU19QVVJFKTogTmV3IG1hY3JvLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBBZGQgcHVyZV9mbGFnLgoJKiBjLWNvbW1vbi5jIChlbnVtIGF0dHJzKTogQWRkIGF0dHJpYnV0ZSAicHVyZSIuCgkoaW5pdF9hdHRyaWJ1dGVzKTogSW5pdGlhbGl6ZSBhdHRyaWJ1dGUgInB1cmUiCgkoZGVjbF9hdHRyaWJ1dGVzKTogSGFuZGxlIGF0dHJpYnV0ZSAicHVyZSIuCgkqIGV4dGVuZC50ZXhpIChBdHRyaWJ1dGUgInB1cmUiKTogRG9jdW1lbnQuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogQWRkIChtZW06QkxLIChzY3JhdGNoKSkgdG8gImVxdWFsIGZyb20iCglpbiBwdXJlIGZ1bmN0aW9uLgoJKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlKTogU3VwcG9ydCBhdHRyaWJ1dGUgInB1cmUiLgoKMjAwMC0wNC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBIYW5kbGUgZGlncmFwaHMuICBEb24ndCBudWxsLXRlcm1pbmF0ZQoJdGhlIHRva2VuIGV4Y2VwdCBmb3IgbnVtYmVycyBhbmQgaWRlbnRpZmllcnMuCgpUaHUgQXByIDEzIDAwOjA5OjE2IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2JpbmFyeV9vcGVyYXRvciwKCWl4ODZfZXhwYW5kX3VuYXJ5X29wZXJhdG9yKTogQ2hlY2sgbm9fbmV3X3BzZXVkb3MKCWluc3RlYWQgb2YgcmVsb2FkX2luX3Byb2dyZXNzIGFuZCByZWxvYWRfY29tcGxldGVkLgoJKGl4ODZfc3BsaXRfYXNobGRpLCBpeDg2X3NwbGl0X2FzaHJkaSwKCWl4ODZfc3BsaXRfbHNocmRpKTogQ2hlY2sgbm9fbmV3X3BzZXVkb3MgaW5zdGVhZAoJb2YgcmVsb2FkX2NvbXBsZXRlZC4KCjIwMDAtMDQtMTIgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2FkZHJlc3NvZik6IFVuc2hhcmUgYW55IHNoYXJlZCBydGwgY3JlYXRlZCBieQoJcHVyZ2VfYWRkcmVzc29mIGFuZCBpdHMgY2hpbGRyZW4uCgoyMDAwLTA0LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBWT0lEX1RZUEUgbm9kZXMgYXJlIG5ldmVyCglhZ2dyZWdhdGVzLgoKMjAwMC0wNC0wNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbGludXguaCAoU1VCVEFSR0VUX0FTTV9TUEVDKTogVXNlIHByb3BlciBmbGFncyBpZgoJbm90IGNvbXBpbGluZyBQSUMgY29kZSwgYWRkIGZsYWdzIGZvciBtYWJpPTY0LgoJKFNVQlRBUkdFVF9DUFBfU0laRV9TUEVDKTogTmV3LgoJKFNVQlRBUkdFVF9DUFBfU1BFQyk6IE5ldy4KCShDUFBfUFJFREVGSU5FUyk6IERlZmluZSBfX1BJQ19fIGFuZCBfX3BpY19fLiAgUElDIGNvZGUgaXMgZGVmYXVsdAoJZm9yIE1JUFMvTGludXggYW5kIGxvdHMgb2YgY29kZSBuZWVkcyB0aGVzZSBkZWZpbmVzLgoKV2VkIEFwciAxMiAyMjo0NDoxMSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHJlb3JnLmMgKGZpbGxfc2xvdHNfZnJvbV90aHJlYWQpOiBDaGVjayBzaWRlX2VmZmVjdHNfcCB3aGVuCgl0cnlpbmcgdGhlICJvcHBvc2l0ZSBhcml0aG1ldGljIiBhcHByb2FjaC4KCldlZCBBcHIgMTIgMjA6NTE6MjAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoU1RSVUNUX1ZBTFVFKTogSnVzdCAwIGZvciBUQVJHRVRfSElUQUNISS4KCShzdHJ1Y3Qgc2hfYXJncyk6IEFkZCBuZXcgZmllbGQgZm9yY2VfbWVtLgoJKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogSW5pdGlhbGl6ZSBpdC4KCShGVU5DVElPTl9BUkcsIEZVTkNUSU9OX0FSR19BRFZBTkNFKTogQWN0IG9uIGl0LgoKV2VkIEFwciAxMiAxNzoyMDo0MSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRG8gbm90IHJldmVyc2UgYXJncyBpbiAiZXF1YWwgZnJvbSIgZmllbGQuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEVtaXRfbGliY2FsbF9ibG9jayBmb3IgY29uc3QgYW5kIHB1cmUKCWZ1bmN0aW9uLgoKV2VkIEFwciAxMiAxNjowMDoyNSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogRG9uJ3QgZW5hYmxlIG9wdGltaXphdGlvbiBmb3IgZml4ZWQKCXJlZ2lzdGVycyB3aGVuIGVuY291bnRlcmluZyBhIEJBUlJJRVIuCgpXZWQgQXByIDEyIDE1OjU0OjExIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtY21wKTogRG8gZXhwYW5zaW9uIGV2ZW4gd2l0aAoJIUhBVkVfY21wc3Ryc2ksIGRvIGxpYmNhbGwgd2hlbiBnZW5fc3RyY21wc2kgZmFpbHMuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvIE5PX0RFRkVSX1BPUCB1bmNvbmRpdGlvbmFsbHkgb25jZQoJc3RhY2sgaXMgcHJvcGVybHkgYWxpZ25lZDsgYWRkIHNhbml0eSBjaGVja2luZyBmb3IgYWxpZ25lZAoJc3RhY2sgcG9pbnRlci4KCShleHBhbmRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBBZGQgc2FuaXR5IGNoZWNraW5nIGZvciBhbGlnbmVkCglzdGFjayBwb2ludGVyLgoKV2VkIEFwciAxMiAwNzo1MTo1NCAyMDAwICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBDaGFuZ2UgM3JkIGFyZyB0bwoJbG9jYXRlX2FuZF9wYWRfcGFybSB0byBkaXNyZWdhcmQgdGhlIHNldHRpbmcgb2YgcGFydGlhbC4KCldlZCBBcHIgMTIgMDg6NDc6MzggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuYyAodW5zYXZlX2V4cHJfbm93X3IsIHVuc2FmZV9mb3JfcmVldmFsKTogUHJvcGVybHkgZG8gVFJFRV9MSVNULgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IEZvciBDQUxMX1BMQUNFSE9MREVSLCBvdXRwdXQgdGhlCglDQUxMX0lOU04gZnJvbSB0aGUgbm9ybWFsIGNhc2UuCgpGcmkgQXByICA3IDEyOjIzOjA0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jICh4ODZfc3ViX2VzcF80LCB4ODZfc3ViX2VzcF84LCB4ODZfYWRkX2VzcF80LCB4ODZfYWRkX2VzcF84KToKCU5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGl4ODZfZW1pdF9lcGlsb2d1ZV9hZGp1c3RtZW50KTogRG8gbm90IGF0dGVtcHQgdG8gdXNlIHBvcCBmb3IgdGhlCglhZGp1c3RtZW50LgoJKiBpMzg2LmggKHg4Nl9zdWJfZXNwXzQsIHg4Nl9zdWJfZXNwXzgsIHg4Nl9hZGRfZXNwXzQsIHg4Nl9hZGRfZXNwXzgpOgoJRGVjbGFyZSwKCShUQVJHRVRfU1VCX0VTUF80LCBUQVJHRVRfU1VCX0VTUF84LCBUQVJHRVRfQUREX0VTUF80LAoJIFRBUkdFVF9BRERfRVNQXzgpOiBOZXcgbWFjcm9zLgoJKiBpMzg2Lm1kOiBBZGQgcGVlcDJzIHRvIGNvbnZlcnQgZXNwIGFkanVzdG1lbnRzIHRvIHB1c2ggYW5kIHBvcAoJaW5zdHJ1Y3Rpb25zLgoJKHB1c2hzaV9wcm9sb2d1ZSwgcG9wc2lfZXBpbG9ndWUpOiBOZXcgcGF0dGVybnMuCgoyMDAwLTA0LTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHJlYWwuYyAodG9lNjQpOiBSZW1vdmUgc3RhbGUgI2VuZGlmIGZyb20gdGhlIGxhc3QgY2hhbmdlLgoKMjAwMC0wNC0xMiAgU3RlcGhlbiBMIE1vc2hpZXIgIDxtb3NoaWVyQG1lZGlhb25lLm5ldD4KCgkqIHJlYWwuaCAoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IENvbW1lbnQuCgkqIHJlYWwuYyAodG9lNjQpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wNC0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBvYmpjL29iamMtYWN0LmM6IEluY2x1ZGUgZ2djLmguCgkob2JqY190cmVlX2luZGV4LCBvYmpjX2dsb2JhbF90cmVlcyk6IENvbnZlcnQgbW9zdCBvZiB0aGUKCXN0YXRpYyB0cmVlIHZhcmlhYmxlcyBpbnRvIGEgc3RhdGljIGFycmF5IHdpdGggcHJldmlvdXMgbmFtZXMKCWFzIGRlZmluZXMuCgkob2JqY19lbGxpcHNpc19ub2RlKTogTmV3IHZhcmlhYmxlLgoJKGxhbmdfaW5pdCk6IENhbGwgb2JqY19hY3RfcGFyc2VfaW5pdCBhbmQgY19wYXJzZV9pbml0LgoJQ3JlYXRlIG9iamNfZWxsaXBzaXNfbm9kZS4KCShidWlsZF9zZWxlY3Rvcl90cmFuc2xhdGlvbl90YWJsZSk6IFVzZSBvYmpjX2VsbGlwc2lzX25vZGUgaW5zdGVhZAoJb2YgKHRyZWUpMS4KCShoYWNrX21ldGhvZF9wcm90b3R5cGUpOiBMaWtld2lzZS4KCShnZXRfYXJnX3R5cGVfbGlzdCk6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZF9kZWYpOiBMaWtld2lzZS4KCShjb250aW51ZV9tZXRob2RfZGVmKTogTGlrZXdpc2UuCgkoZ2VuX21ldGhvZF9kZWNsKTogTGlrZXdpc2UuCgkoZ2djX21hcmtfaW1wX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoZ2djX21hcmtfaGFzaF90YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShvYmpjX2FjdF9wYXJzZV9pbml0KTogTmV3IGZ1bmN0aW9uLgoJKiBvYmpjL29iamMtYWN0LmggKG9iamNfZWxsaXBzaXNfbm9kZSk6IEFkZCBleHRlcm4gdmFyaWFibGUuCgkqIGMtcGFyc2UuaW4gKGNfcGFyc2VfaW5pdCk6IEZvciBvYmpjIGFkZCByb290cyBvZiBvYmpjIHNwZWNpZmljCglsb2NhbCB0cmVlIHZhcmlhYmxlcy4KCSogb2JqYy9vYmpjLXBhcnNlLnk6IFJlYnVpbHQuCgkqIG9iamMvb2JqYy1wYXJzZS5jOiBSZWJ1aWx0LgoJKG9wdF9wYXJtX2xpc3QpOiBVc2Ugb2JqY19lbGxpcHNpc19ub2RlIGluc3RlYWQgb2YgKHRyZWUpMS4KCldlZCBBcHIgMTIgMDE6MDA6NDQgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGNzZS5jIChkZWxldGVfdHJpdmlhbGx5X2RlYWRfaW5zbnMpOiBBbHNvIGRlbGV0ZSBpbnNucwoJdGhhdCBjb3B5IGEgcmVnaXN0ZXIgdG8gaXRzZWxmIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpcwoJYSBzdHJpY3RfbG93X3BhcnQuCgoyMDAwLTA0LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBBZGQgbmV3X2RlYWQsIG5ld19saXZlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IEluaXRpYWxpemUgdGhlbS4gIFVzZSB0aGVtIGluIHBhcmFsbGVsIGluc3RlYWQKCW9mIG9uZSB0bXAgdmFyaWFibGUsIGllIHJldmVydCBtdWNoIG9mIHRoZSAwNDA4IGFuZCAwNDA3IGZ1bmN0aW9uYWwKCWNoYW5nZXMsIGJ1dCBrZWVwIHRoZSBzdHJ1Y3R1cmFsIGNoYW5nZXMuCgkobWFya19zZXRfcmVncyk6IFRha2UgbmV3X2RlYWQgZnJvbSBwcm9wYWdhdGVfYmxvY2tfaW5mbyBpbnN0ZWFkLgoJKG1hcmtfc2V0XzEsIG1hcmtfc2V0X3JlZyk6IExpa2V3aXNlLgoJKG1hcmtfdXNlZF9yZWdzKTogTGlrZXdpc2Ugd2l0aCBuZXdfbGl2ZS4KCShtYXJrX3VzZWRfcmVnKTogTGlrZXdpc2UuICBSZXZlcnQgMDQwOCBjaGFuZ2UuCgoyMDAwLTA0LTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaDogKElOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCk6IFJlbW92ZSBEd2FyZjIKCXJlc3RyaWN0aW9uLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBSZW1vdmUgRHdhcmYyIHJlc3RyaWN0aW9uLgoKMjAwMC0wNC0xMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvZWxmb3MuaCAoU0VMRUNUX1NFQ1RJT04pOiBEZWNpZGUgd2hldGhlciB0byB1c2UgYSBkYXRhIG9yCgljb25zdCBzZWN0aW9uIHRvIG91dHB1dCBhIENPTlNUUlVDVE9SIGJhc2VkIG9uIHRoZSBzYW1lIGNvbmRpdGlvbnMKCXVzZWQgZm9yIFZBUl9ERUNMcy4KClR1ZSBBcHIgMTEgMDk6NTU6NTkgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGEvbG9uZy1kb3VibGUuaCAoRklYX1RSVU5DVEZTSTJfTElCQ0FMTCk6IFR3ZWFrIGZvciBQQTY0LgoJKiBwYS9wYS1wcm90b3MuaCAob3V0cHV0X2NhbGwpOiBBZGQgYWRkaXRpb25hbCBhcmd1bWVudCBpbmRpY2F0aW5nCglpZiB0aGUgY2FsbCBpcyBhIHNpYmxpbmcvdGFpbCBjYWxsLgoJKGNvbXB1dGVfemRlcGRpX29wZXJhbmRzLCBvdXRwdXRfNjRiaXRfYW5kKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbnMuCgkoY29tcHV0ZV82NGJpdF9pb3IsIGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmcsIGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogTGlrZXdpc2UKCSogcGEvcGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEFsd2F5cyBzZXQgZmxhZ19waWMgZm9yIFRBUkdFVF82NEJJVC4KCShlbWl0X21vdmVfc2VxdWVuY2UpOiBaZXJvIGV4dGVuZCBjZXJ0YWluIGNvbnN0YW50cyBhcyBuZWVkZWQKCWZvciBUQVJHRVRfNjRCSVQuCgkoY29tcHV0ZV96ZGVwZGlfb3BlcmFuZHMsIG91dHB1dF82NGJpdF9hbmQpOiBOZXcgZnVuY3Rpb25zLgoJKG91dHB1dF82NGJpdF9pb3IsIGZ1bmN0aW9uX2FyZyk6IExpa2V3aXNlLgoJKGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IsIGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9mcmFtZV9zaXplLCBocHBhX2V4cGFuZF9wcm9sb2d1ZSk6IEhhbmRsZSBUQVJHRVRfNjRCSVQuCgkoaHBwYV9leHBhbmRfZXBpbG9ndWUsIHJldHVybl9hZGRyX3J0eCwgaHBwYV92YV9hcmcpOiBMaWtld2lzZS4KCShocHBhX2J1aWx0aW5fc2F2ZXJlZ3MsIG91dHB1dF9jYnJhbmNoLCBvdXRwdXRfYmIpOiBMaWtld2lzZS4KCShvdXRwdXRfYnZiKTogTGlrZXdpc2UuCgkob3V0cHV0X21pbGxpY29kZV9jYWxsKTogUmV0dXJuIHBvaW50ZXIgaXMgaW4gJXIyIGZvciBUQVJHRVRfNjRCSVQuCgkob3V0cHV0X2NhbGwpOiBOZXcgYXJndW1lbnQgJ3NpYmNhbGwnLiAgR2VuZXJhdGUgc2liY2FsbCBzZXF1ZW5jZXMKCWFzIG5lZWRlZC4KCShwcmludF9vcGVyYW5kKTsgSGFuZGxlIGNhc2VzICdRJywgJ3AnLCBhbmQgJ3onIGZvciBUQVJHRVRfNjRCSVQuICBGb3IKCShvdXB1dF9hcmdfZGVzY3JpcHRvcik6IERvIG5vdCBlbWl0IGFyZ3VtZW50IGRlc2NyaXB0b3JzIGZvcgoJVEFSR0VUXzY0QklULgoJKiBwYS9wYS5oIChUQVJHRVRfUEFfMTEsIFRBUkdFVF9QQV8yMCk6IE9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5CglkZWZpbmVkLgoJKFRBUkdFVF82NEJJVCwgUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBEZWZpbmUuCgkoRlVOQ1RJT05fT0tfRk9SX1NJQkFMTCk6IERlZmluZS4KCShDUFBfUEExMF9TUEVDLCBDUFBfUEExMV9TUEVDLCBDUFBfUEEyMF9TUEVDKTogRGVmaW5lLgoJKENQUF9DUFVfREVGQVVMVF9TUEVDLCBTVUJUQVJHRVRfRVhUUkFfU1BFQ1MsIEVYVFJBX1NQRUNTKTogTGlrZXdpc2UuCgkoQ1BQX1NQRUMpOiBVc2UgbmV3IHNwZWMgaW5mcmFzdHJ1Y3R1cmUuCgkoQklUU19QRVJfV09SRCwgVU5JVFNfUEVSX1dPUkQpOiBIYW5kbGUgVEFSR0VUXzY0QklULgoJKFNUQUNLX0JPVU5EQVJZLCBGVU5DVElPTl9CT1VOREFSWSwgUElDX09GRlNFVF9UQUJMRV9SRUdOVU0pOiBMaWtld2lzZS4KCShSRVRVUk5fSU5fTUVNT1JZLCBFWFRSQV9DT05TVFJBSU5ULCBGSVJTVF9QQVJNX09GRlNFVCk6IExpa2V3aXNlLgoJKFJFR19QQVJNX1NUQUNLX1NQQUNFLCBTVEFDS19QT0lOVEVSX09GRlNFVCk6IExpa2V3aXNlLgoJKFNUQUNLX0RZTkFNSUNfT0ZGU0VULCBGVU5DVElPTl9WQUxVRSk6IExpa2V3aXNlLgoJKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSwgRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBMaWtld2lzZS4KCShUUkFNUE9MSU5FX1RFTVBMQVRFLCBUUkFNUE9MSU5FX1NJWkUpOiBMaWtld2lzZS4KCShJTklUSUFMSVpFX1RSQU1QT0xJTkUsIExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IExpa2V3aXNlLgoJKENPTlNUX09LX0ZPUl9MRVRURVJfUCwgTU9WRV9SQVRJTyk6IExpa2V3aXNlLgoJKEZVTkNUSU9OX0FSRyk7IENhbGwgb3V0IHRvIEMgY29kZS4KCShGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IExpa2V3aXNlLgoJKE1BWF9CSVRTX1BFUl9XT1JELCBNQVhfTE9OR19UWVBFX1NJWkUsIE1BWF9XQ0hBUl9UWVBFX1NJWkUpOiBEZWZpbmUuCgkoTUlOX1VOSVRTX1BFUl9XT1JEKTogTGlrZXdpc2UuCgkqIHBhL3BhLm1kIChjbXBkaSk6IE5ldyBleHBhbmRlci4KCShzY2MgcGF0dGVybnMsIG1vdnN0cnNpKTogTm90IGF2YWlsYWJsZSBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGNvbmRpdGlvbmFsIGFyaXRobWV0aWMpOiBOZXcgcGF0dGVybnMuCgkoYWJzZGkyLCBzbWluZGkzLCB1bWluZGkzLCBzbWF4ZGkzLCB1bWF4ZGkzKTogTmV3IHBhdHRlcm5zLgoJKG1vdnNpY2MpOiBOb3QgYXZhaWxhYmxlIGlmIG1vZGVzIG9uIGFsbCB0aGUgb3BlcmFuZHMgdG8gbm90IG1hdGNoLgoJKG1vdmRpY2MpOiBOZXcgZXhwYW5kZXIgYW5kIGFzc29jaWF0ZWQgcGF0dGVybnMuCgkoNjRiaXQgYnJhbmNoZXMpOiBOZXcgcGF0dGVybnMuCgkocHJlX2xvYWQsIHBvc3Rfc3RvcmUpOiBHZW5lcmF0ZSBhcHByb3ByaWF0ZSBjb2RlIGZvciBUQVJHRVRfNjRCSVQuCgkocHJlX2xkZCwgcG9zdF9zdGQpOiBOZXcgcGF0dGVybnMuCgkoNjRiaXQgYWRkaWwsIGxvYWQgbG93IHBhcnQpOiBOZXcgcGF0dGVybnMuCgkoc3BlY2lhbCBtb3ZzZiBjb25zdGFudCk6IE5vdCBhdmFpbGFibGUgZm9yIFRBUkdFVF82NEJJVC4KCShtb3ZzZiwgbW92ZGYgZXhwYW5kZXJzKTogRm9yY2UgY29uc3RhbnRzIGludG8gbWVtb3J5LgoJKDMyYml0IG1vdmRmL21vdmRpIHBhdHRlcm5zKTogRGlzYWJsZSBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IG1vdmRmL21vdmRpIHBhdHRlcm5zKTogTmV3IHBhdHRlcm5zLgoJKHplcm9fZXh0ZW5kcWlkaTIsIHplcm9fZXh0ZW5kaGlkaTIsIHplcm9fZXh0ZW5kc2lkaTIpOiBOZXcgcGF0dGVybnMKCWZvciBUQVJHRVRfNjRCSVQuCgkoZXh0ZW5kcWlkaTIsIGV4dGVuZGhpZGkyLCBleHRlbmRzaWRpMik6IFNpbWlsYXJseS4KCShhZGRkaTMgZXhwYW5kZXIpOiBBbGxvdyAiYXJpdGhfb3BlcmFuZCIgZm9yIHNlY29uZCBpbnB1dC4KCSgzMmJpdCBhZGRkaTMsIHN1YmRpMywgdWFkZGNtKTogRGlzYWJsZSBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGFkZGRpMywgc3Vic2kzLCB1YWRkY20pOiBOZXcgcGF0dGVybnMgZm9yIFRBUkdFVF82NEJJVC4KCShtdWxzaTMgZXhwYW5kZXIpOiBSZXZhbXAgc2xpZ2h0bHkgc28gaXQgc3VwcG9ydHMgVEFSR0VUXzY0QklUIHRvby4KCShtdWxkaTMpOiBOZXcgZXhwYW5kZXIgZm9yIFRBUkdFVF82NEJJVC4KCShkaXZzaTMsIHVkaXZzaTMsIG1vZHNpMywgdW1vZHNpMyk6IEZvdXJ0aCBvcGVyYW5kIG11c3QgYmUgKHJlZzpTSSAyKQoJZm9yIFRBUkdFVF82NEJJVC4KCSgzMmJpdCBhbmRkaTMsIGlvcmRpMywgeG9yZGkzLCBhbmRjbSwgbmVnZGkyLCB1YWRkY20pOiBEaXNhYmxlCglwYXR0ZXJucyBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGFuZGRpMywgaW9yZGkzLCB4b3JkaTMsIGFuZGNtLCBuZWdkaTIsIHVhZGRjbSwgc2hhZGQpOiBOZXcKCXBhdHRlcm5zIGZvciBUQVJHRVRfNjRCSVQuCgkoNjRiaXQgYml0IGluc2VydGlvbi9leHRyYWN0aW9ucyk6IE5ldyBwYXR0ZXJucyBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IHNoaWZ0cy9yb3RhdGVzKTogTmV3IHBhdHRlcm5zL2V4cGFuZGVycyBmb3IgVEFSR0VUXzY0QklULgoJKHNpYmNhbGxfZXBpbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkoY2FzZXNpKTogVHdlYWsgZm9yIFRBUkdFVF82NEJJVC4KCShjYWxsIGV4cGFuZGVycyk6IFNldCAmIHVzZSB0aGUgb3V0Z29pbmcgYXJndW1lbnQgcG9pbnRlci4gIFVzZSB0aGUKCTY0Yml0IGNhbGwgcGF0dGVybnMgYXMgbmVlZGVkLiBBZGQgYWRkaXRpb25hbCBhcmcgdG8gb3V0cHV0X2NhbGwuCgkoY2FsbF9pbnRlcm5hbF9yZWdfNjRiaXQsIGNhbGxfdmFsdWVfaW50ZXJuYWxfcmVnXzY0Yml0KTogTmV3IHBhdHRlcm4uCgkoc2liY2FsbCwgc2liY2FsbF9pbnRlcm5hbF9zeW1yZWYpOiBOZXcgZXhwYW5kZXJzLgoJKHNpYmNhbGxfdmFsdWUsIHNpYmNhbGxfdmFsdWVfaW50ZXJuYWxfc3ltcmVmCgkoaW50ZXJzcGFjZV9qdW1wKTogVHVybiBpbnRvIGFuIGV4cGFuZGVyICsgbWF0Y2hpbmcgcGF0dGVybnMuCgkoY2Fub25pY2FsaXplX2Z1bmNwdHJfZm9yX2NvbXBhcmUpOiBOb3QgbmVlZGVkIGZvciBUQVJHRVRfNjRCSVQuCgkqIHBhL3BhNjQtcmVncy5oOiBFbGltaW5hdGUgdHJpZ3JhcGggc2VxdWVuY2VzLgoJKiBwYS9wYTY0LXN0YXJ0LmggKFRBUkdFVF9QQV8yMCk6IEZpeCB0eXBvLgoKMjAwMC0wNC0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMsIGNwcGhhc2guYywgY3BwaGFzaC5oLCBjcHBsZXguYywgY3BwbGliLmMsCgljcHBsaWIuaCwgY3BwbWFpbi5jLCBmaXgtaGVhZGVyLmMsIHNjYW4tZGVjbHMuYzogUmVwbGFjZQoJY3BwX3Rva2VuIHdpdGggY3BwX3R0eXBlIGV2ZXJ5d2hlcmUuCgkqIGNwcGVycm9yLmMsIGNwcGhhc2guYywgY3BwbGV4LmMsIGNwcGxpYi5jLCBzY2FuLWRlY2xzLmM6CglSZXBsYWNlIGNwcF9idWZfbGluZV9hbmRfY29sIHdpdGggQ1BQX0JVRl9MSU5FIGFuZC9vcgoJQ1BQX0JVRl9DT0wuICBMaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhcmUgdW5zaWduZWQgaW50LCBub3QKCWxvbmcuCgkqIGNwcGxleC5jIChjcHBfYnVmX2xpbmVfYW5kX2NvbCk6IERlbGV0ZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyLCBzdHJ1Y3QgY3BwX3JlYWRlcik6IENoYW5nZQoJJ2xvbmcgbGluZW5vJyB0byAndW5zaWduZWQgaW50IGxpbmVubycuCgkoQ1BQX0JVRl9MSU5FLCBDUFBfQlVGX0NPTCk6IE5ldyBtYWNyb3MuCgoyMDAwLTA0LTExICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBleHRlbmQudGV4aTogSVNPIEM5OSBpcyBub3QgYSBkcmFmdCBhbnltb3JlLgoJKiBpbnZva2UudGV4aTogSVNPIEMrKyBpcyBub3QgYSBkcmFmdCBhbnltb3JlLgoJKiBjcHAudGV4aTogX19jcGx1c3BsdXMgaXMgcmVxdWlyZWQgYnkgdGhlIElTTyBzdGFuZGFyZC4KCgkqIGV4dGVuZC50ZXhpICgtZnRoaXMtaXMtdmFyaWFibGUpOiBVbmRvY3VtZW50LgoJKiBmbGFncy5oICh3YXJuX3RlbXBsYXRlX2RlYnVnZ2luZyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogZ2NjLjEgKC1mYWxsLXZpcnR1YWwsIC1mZW51bS1pbnQtZXF1aXYsIC1mdGhpcy1pcy12YXJpYWJsZSwKCS1XZW51bS1jbGFzaCwgLVd0ZW1wbGF0ZS1kZWJ1Z2dpbmcpOiBVbmRvY3VtZW50LgoKMjAwMC0wNC0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKEhPU1RfSU5UKTogTmV3IG1hY3JvOiBEZWNsYXJlIGEgSE9TVF9XSURFX0lOVAoJaW50ZWdlci4KCShIT1NUX1VJTlQpOiBOZXcgbWFjcm86IERlY2xhcmUgYW4gdW5zaWduZWQgSE9TVF9XSURFX0lOVAoJaW50ZWdlci4KCShBUk1fU0lHTl9FWFRFTkQpOiBVc2UgSE9TVF9VSU5ULgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBQcmV2ZW50IHdhcm5pbmdzIGFib3V0IHJlZGVmaW5pdGlvbnMuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IFByZXZlbnQgd2FybmluZ3MgYWJvdXQgcmVkZWZpbml0aW9ucy4KCShJTkNPTUlOR19SRVRVUk5fQUREUl9SVFgpOiBPbmx5IGRlZmluZSBpZiBEd2FyZjIgaXMgc3VwcG9ydGVkLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBPbmx5IGRlZmluZSBpZiBEd2FyZjIgaXMgc3VwcG9ydGVkLgoKCSogY29uZmlnL2FybS9hcm0uYzogKGNvbnN0X29rX2Zvcl9hcm0pOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9nZW5fY29uc3RhbnQpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9jYW5vbmljYWxpemVfY29uc3RhbnQpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9yZWxvYWRfaW5faGkpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9yZWxvYWRfb3V0X2hpKTogVXNlIEhPU1RfVUlOVC4KCShvdXRwdXRfbXVsdGlfaW1tZWRpYXRlKTogVXNlIEhPU1RfVUlOVC4KCShpbnRfbG9nMik6IFVzZSBIT1NUX1VJTlQuCgkoYXJtX3Bva2VfZnVuY3Rpb25fbmFtZSk6IFVzZSBIT1NUX1VJTlQuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFVzZSBhcm1fdm9sYXRpbGVfZnVuYygpLgoJKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IFVzZSBhcm1fc3RyaXBfbmFtZV9lbmNvZGluZygpLgoKTW9uIEFwciAxMCAxNTo0MDo1OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc2JpdG1hcC5jIChzYml0bWFwX2Ffc3Vic2V0X2JfcCk6IFJld29yayBsb29wIHRvIGF2b2lkIHBvdGVudGlhbAoJb2Ygc2VxdWVuY2UgcG9pbnQgcHJvYmxlbXMuCgoyMDAwLTA0LTEwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsLmRlZiAoQVNISUZULCBST1RBVEUsIEFTSElGVFJULCBMU0hJRlRSVCwgUk9UQVRFUlQpOgoJUmVjb21tZW50LgoJKiB0cmVlLmRlZiAoTFNISUZUX0VYUFIsIFJTSElGVF9FWFBSKTogUmVjb21tZW50LgoKTW9uIEFwciAxMCAwNzoyMToxMyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc2JpdG1hcC5oOiBXaGl0ZXNwYWNlIGNoYW5nZXMgYW5kIHVzZSB1cHBlci1jYXNlIG1hY3JvIGFyZ3MuCgkoc3RydWN0IHNpbXBsZV9iaXRtYXBfZGVmKTogQWxsIHNpemVzIG5vdyB1bnNpZ25lZC4KCShFWEVDVVRFX0lGX1NFVF9JTl9TQklUTUFQKTogSW50ZXJuYWwgdmFycyBub3cgX1ggaW5zdGVhZCBvZiBYXy4KCSogc2JpdG1hcC5jIChzYml0bWFwX2FsbG9jKTogTl9FTE1TIG5vdyB1bnNpZ25lZDsgYWxzbyBsb2NhbCB2YXJzLgoJKHNiaXRtYXBfdmVjdG9yX2FsbG9jKTogUGFybXMgYW5kIGxvY2FsIHZhcnMgbm93IHVuc2lnbmVkLgoJKHNiaXRtYXBfemVybyk6IENhc3QgYnplcm8gYXJnIHRvIFBUUi4KCShzYml0bWFwX3ZlY3Rvcl96ZXJvLCBzYml0bWFwX3ZlY3Rvcl9vbmUpOiBQYXJtIGFuZCBMb2NhbCB2YXIgdW5zaWduZWQuCgkoc2JpdG1hcF91bmlvbl9vZl9kaWZmcyk6IENoYW5nZSBsb29wIGluZGV4IHRvIHVuc2lnbmVkIGFuZCByZXdvcmsKCWxvb3AgdG8gbWFrZSBzdHJ1Y3R1cmUgY2xlYXJlci4KCShzYml0bWFwX25vdCwgc2JpdG1hcF9kaWZmZXJlbmNlLCBzYml0bWFwX2FfYW5kX2IpOiBMaWtld2lzZS4KCShzYml0bWFwX2Ffb3JfYiwgc2JpdG1hcF9hX3N1YnNldF9iX3AsIHNiaXRtYXBfYV9vcl9iX2FuZF9jKTogTGlrZXdpc2UuCgkoc2JpdG1hcF9hX2FuZF9iX29yX2MpOiBMaWtld2lzZS4KCShzYml0bWFwX2ludGVyc2VjdGlvbl9vZl9zdWNjcyk6IE1pbm9yIGNsZWFudXBzLgoJKHNiaXRtYXBfaW50ZXJzZWN0aW9uX29mX3ByZWRzLCBzYml0bWFwX3VuaW9uX29mX3N1Y2NzKTogTGlrZXdpc2UuCgkoc2JpdG1hcF91bmlvbl9vZl9wcmVkcyk6IExpa2V3aXNlLgoJKHNiaXRtYXBfZmlyc3Rfc2V0X2JpdCwgZHVtcF9zYml0bWFwKTogTG9jYWwgdmFyaWFibGVzIG5vdyB1bnNpZ25lZC4KCShkZWJ1Z19zYml0bWFwKTogTmV3IGZ1bmN0aW9uLgoKCSogYy1jb252ZXJ0LmMgKGNvbnZlcnQpOiBIYW5kbGUgUkVGRVJFTkNFX1RZUEUgbGlrZSBQT0lOVEVSX1RZUEUuCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCgkqIGV4cG1lZC5jIChpbml0X2V4cG1lZCk6IERvbid0IGZyZWUgb2JqZWN0cyB3ZSBtYWtlLgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4X0NPTlNUX0lOVCwgaW5pdF9lbWl0X29uY2UpOiBNaW5vciBjbGVhbnVwcy4KCgkqIGV4cHIuYyAoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IENvcnJlY3Qgc29tZSBXSVRIX1JFQ09SRF9FWFBSIGNhc2VzLgoJKGV4cGFuZF9leHByLCBjYXNlIENPTlZFUlRfRVhQUik6IFBhc3MgcHJvcGVyIGFsaWdubWVudCB0byBzdG9yZV9maWVsZC4KCgkqIGdjc2UuYyAoZXhwcl9oYXNoX3RhYmxlX3NpemUpOiBOb3cgdW5zaWduZWQuCgkoY29tcHV0ZV9hZV9nZW4pOiBMb2NhbCB2YXJpYWJsZSBgaScgbm93IHVuc2lnbmVkLgoJKGNvbXB1dGVfYWVfa2lsbCwgcHJlX2luc2VydF9jb3BpZXMsIHByZV9kZWxldGUsIHByZV9nY3NlKTogTGlrZXdpc2UuCgkoY29tcHV0ZV90cmFuc291dCwgaG9pc3RfY29kZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfbG9jYWxfcHJvcGVydGllcyk6IExpa2V3aXNlLCBhbHNvIGhhc2hfdGFibGVfc2l6ZS4KCShhbGxvY19leHByX2hhc2hfdGFibGUpOiBOX0lOU05TIG5vdyB1bnNpZ25lZC4KCShkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IE1hcmsgYXJnIEYgYXMgdW51c2VkLgoKCSogcmVncmVuYW1lLmM6IE1pbm9yIGNsZWFudXBzLCBpbmNsdWRpbmcgY2hhbmcgc29tZSB2YXJpYWJsZXMKCXRvIHVuc2lnbmVkIGludC4KCjIwMDAtMDQtMTAgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHNraXBfYmxvY2tfY29tbWVudCk6IFVzZSBwb2ludGVyIGFyaXRobWV0aWMgcmF0aGVyCgl0aGFuIEdFVEMgKCkuCgkqIGNwcGhhc2guaDogKENQUF9CVU1QX0JVRkZFUl9MSU5FX0NVUiwgQ1BQX0JVTVBfTElORV9DVVIpOiBOZXcuCgoyMDAwLTA0LTEwICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBpbnZva2UudGV4aSAoLWZuby1nbnUta2V5d29yZHMpOiBSZW1vdmUgY2xhc3NvZiwgaGVhZG9mLAoJX19jbGFzc29mX18sIGFuZCBfX2hlYWRvZl9fIGZyb20gdGhlIGxpc3Qgb2YgZ251IGtleXdvcmRzLgoJKC1hbnNpKTogUmVtb3ZlIC1mb3BlcmF0b3ItbmFtZXMgZnJvbSBsaXN0IG9mIGltcGxpZWQgb3B0aW9ucy4KCURvIG5vdCBjYWxsIGl0IEFOU0kgQysrLgoJKC1mb3BlcmF0b3ItbmFtZXMpOiBEb2N1bWVudCBhcyAtZm5vLW9wZXJhdG9yLW5hbWVzLgoKMjAwMC0wNC0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jICh0aW1lc3RhbXApOiBEZWxldGUuCgkoZGVsX0hBU0hOT0RFKTogSWYgdHlwZSBpcyBUX01DT05TVCwgZnJlZSB2YWx1ZS5jcHZhbC4KCShzcGVjaWFsX3N5bWJvbCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuICBSZW1vdmUKCVRfVkVSU0lPTi4gIFRyZWF0IFRfU1REQyBsaWtlIFRfQ09OU1QgdW5sZXNzCglTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMuICBSZW5kZXIgYm90aCBfX0RBVEVfXyBhbmQgX19USU1FX18KCXdoZW4gb25lIGlzIGVuY291bnRlcmVkLCB0aGVuIGNvbnZlcnQgdGhlbSBpbnRvIFRfTUNPTlNUCglub2Rlcy4KCSogY3BwaW5pdC5jIChidWlsdGluX2FycmF5KTogdmVyc2lvbl9zdHJpbmcgaXMgVF9NQ09OU1QuCglfX1NURENfXyBoYXMgYSAiMSIgaW4gaXRzIGNwdmFsLiAgRG9uJ3QgaGF2ZSBhIHRlcm1pbmF0b3IKCWVudHJ5LiAgQ2xlYW4gdXAgd2hpY2ggZW50cmllcyBhcmUgZHVtcGVkLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBPbmx5IF9fU1REQ19fIGdldHMgdGhlIHNwZWNpYWwKCS10cmFkaXRpb25hbCB0cmVhdG1lbnQuICBDb3VudCB0aGUgbGVuZ3RoIG9mIGJ1aWx0aW5fYXJyYXkuCglSZW5kZXIgdmVyc2lvbl9zdHJpbmcgaGVyZS4KCSogY3BwaGFzaC5oOiBSZW1vdmUgVF9WRVJTSU9OLiAgQWRkIFRfTUNPTlNULgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgdGltZWJ1Zi4KCjIwMDAtMDQtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnZW5yZWNvZy5jIChwcmVkKTogVXBkYXRlIGNvbXBhcmlzb25fb3BlcmF0b3IgZm9yIHRoZSB1bm9yZGVyZWQKCW9wZXJhdG9ycy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobm9fY29tcGFyaXNvbl9vcGVyYXRvcik6IERpc2FsbG93IHVub3JkZXJlZAoJb3BlcmF0b3JzLgoJKGZjbW92X2NvbXBhcmlzb25fb3BlcmF0b3IpOiBBbGxvdyBVTk9SREVSRUQvT1JERVJFRC4KCSh1bm9fY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShwdXRfY29uZGl0aW9uX2NvZGUpOiBIYW5kbGUgVU5PUkRFUkVEL09SREVSRUQuCgkodW5zaWduZWRfY29tcGFyaXNvbik6IExpa2V3aXNlLgoJKGl4ODZfZnBfY29tcGFyZV9tb2RlKTogQnJva2VuIG91dCBvZiBpeDg2X2V4cGFuZF9mcF9jb21wYXJlLgoJKGl4ODZfdXNlX2Zjb21pX2NvbXBhcmUsIGl4ODZfcHJlcGFyZV9mcF9jb21wYXJlX2FyZ3MpOiBMaWtld2lzZS4KCShpeDg2X2V4cGFuZF9mcF9jb21wYXJlKTogVXNlIHRoZW0uICBUYWtlIHNjcmF0Y2ggYXMgYXJndW1lbnQsCgl1cGRhdGUgYWxsIGNhbGxlcnMuICBIYW5kbGUgYWxsIDggdW5vcmRlcmVkIG9wZXJhdG9ycy4KCShpeDg2X2V4cGFuZF9zZXRjYyk6IExvc2UgdGhlIHVub3JkZXJlZCBhcmd1bWVudCwgdXBkYXRlIGFsbCBjYWxsZXJzLgoJKGl4ODZfZXhwYW5kX2JyYW5jaCk6IExpa2V3aXNlLiAgRG9uJ3QgZnVsbHkgZXhwYW5kIGZwIGJyYW5jaGVzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9leHBhbmRfZnBfY29tcGFyZSk6IERlY2xhcmUuCgkoaXg4Nl9leHBhbmRfYnJhbmNoLCBpeDg2X2V4cGFuZF9zZXRjYyk6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3Vub3JkZXJlZCwgc29yZGVyZWQpOiBOZXcuCgkoc3VuZXEsIHN1bmdlLCBzdW5ndCwgc3VubGUsIHN1bmx0LCBzbHRndCk6IE5ldy4KCShidW5vcmRlcmVkLCBib3JkZXJlZCk6IE5ldy4KCShidW5lcSwgYnVuZ2UsIGJ1bmd0LCBidW5sZSwgYnVubHQsIGJsdGd0KTogTmV3LgoJKCpmcF9qY2NfMSwgKmZwX2pjY18yLCAqZnBfamNjXzMsICpmcF9qY2NfNCk6IE5ldy4KCSgqZnBfamNjXzUsICpmcF9qY2NfNiwgYW5kIHNwbGl0dGVycyk6IE5ldy4KCjIwMDAtMDQtMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWcvYXJtL2FybS5oIChBUk1fTkFNRV9FTkNPRElOR19MRU5HVEhTKTogU3RyaXAgYConIHRvby4KClN1biBBcHIgIDkgMTU6MTY6MTQgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGkzODYubWQgKGZpeF90cnVuY3NmaGkyLCBmaXhfdHJ1bmNkZmhpMiwKCWZpeF90cnVuY3hmaGkyKTogTmV3IHBhdHRlcm5zLgoJKiBpMzg2LmMgKG91dHB1dF9maXhfdHJ1bmMpOiBIYW5kbGUgY29udmVydGluZyB0byBISW1vZGUuCgoyMDAwLTA0LTA4ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogc3NhLmMgKGNvbnZlcnRfdG9fc3NhKTogRWxpbWluYXRlIGRlYWQgY29kZSB3aGVuIGNhbGxpbmcKCWxpZmVfYW5hbHlzaXMuCgkoY29udmVydF9mcm9tX3NzYSk6IENhbGwgY29tcHV0ZV9iYl9mb3JfaW5zbiBiZWZvcmUgbGlmZV9hbmFseXNpcy4KCShmb3JfZWFjaF9zdWNjZXNzb3JfcGhpKTogQ2hhbmdlIHBhcmFtZXRlciB0byBiYXNpY19ibG9jay4KCShjb2FsZXNjZV9yZWdzX2luX3N1Y2Nlc3Nvcl9waGlfbm9kZXMpOiBMaWtld2lzZS4KCShjb2FsZXNjZV9yZWdzX2luX2NvcGllcyk6IExpa2V3aXNlLgoJKGNvbXB1dGVfY29hbGVzY2VkX3JlZ19wYXJ0aXRpb24pOiBVc2UgYmFzaWNfYmxvY2sgaW5zdGVhZCBvZiBpbmRleC4KCSogcnRsLmggKGNvbnZlcnRfdG9fc3NhKTogRGVsZXRlLgoJKGNvbnZlcnRfZnJvbV9zc2EpOiBMaWtld2lzZS4KCShzdWNjZXNzb3JfcGhpX2ZuKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLgoJKGluX3NzYV9mb3JtKTogTGlrZXdpc2UuCgkqIGJhc2ljLWJsb2NrLmggKGNvbnZlcnRfdG9fc3NhKTogTW92ZWQgZnJvbSBydGwuaC4KCShjb252ZXJ0X2Zyb21fc3NhKTogTGlrZXdpc2UuCgkoc3VjY2Vzc29yX3BoaV9mbik6IExpa2V3aXNlLgoJKGluX3NzYV9mb3JtKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLiAgQ2hhbmdlIHBhcmFtZXRlciB0byBiYXNpY19ibG9jay4KCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IFBhc3MgYSBiYXNpY19ibG9jayB0bwoJZm9yX2VhY2hfc3VjY2Vzc29yX3BoaS4KCjIwMDAtMDQtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWcpOiBVc2UgcmVnX3NldF9wIHRvIGRldGVybWluZSBpZiBhIHJlZ2lzdGVyCgl3YXMgbW9kaWZpZWQgaW4gdGhlIGN1cnJlbnQgaW5zbi4KCjIwMDAtMDQtMDggIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0vdGh1bWIubWQ6IERlbGV0ZS4KCSogYXJtL3RodW1iLXByb3Rvcy5oOiBEZWxldGUuCgoyMDAwLTA0LTA4ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCU1lcmdlIGNoYW5nZXMgZnJvbSBtZXJnZWQtYXJtLXRodW1iLWJhY2tlbmQtYnJhbmNoIG9udG8gdHJ1bmsuCgoJMjAwMC0wNC0wOCAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIE1lcmdlIHRydW5rIGNvZGUgZnJvbSB0YWcgbWVyZ2VkLWFybS10aHVtYi1iYWNrZW5kLW1lcmdlXzIwMDAwNDA4CglpbnRvIGJyYW5jaC4KCgkqIGFybS5tZCAobm9wKTogVXNlIHRoZSBzdGFuZGFyZCBSVEwgZXhwcmVzc2lvbi4gIERvbid0IGNvZGUgYXMgYQoJZGVmaW5lX2V4cGFuZC4KCSgqYXJtX25vcCwgKnRodW1iX25vcCk6IERlbGV0ZS4KCgkqIGFybS5jIChjb25zdF9va19mb3JfYXJtKTogRG9uJ3QgdXNlIEFOU0kgZXh0ZW5zaW9ucyBmb3IgZGVmaW5pbmcKCWNvbnN0YW50cy4gIFVzZSBjYXN0cyBpbnN0ZWFkLgoJKGFybV9nZW5fY29uc3RhbnQsIGFybV9ydHhfY29zdHMsIGFybV9yZWxvYWRfaW5faGksIGFybV9yZWxvYWRfb3V0X2hpLAoJb3V0cHV0X211bHRpX2ltbWVkaWF0ZSwgYXJtX3Bva2VfZnVuY3Rpb25fbmFtZSk6IExpa2V3aXNlLgoJKiBhcm0uaCAoQVJNX0xFR0lUSUlNSVpFX1JFTE9BRF9BRERSRVNTLCBBUk1fU0lHTl9FWFRFTkQsCglNQVNLX1JFVFVSTl9BREREUik6IExpa2V3aXNlLgoKCTIwMDAtMDMtMzEgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBNZXJnZSB0cnVuayBjb2RlIGZyb20gdGFnIG1lcmdlZC1hcm0tdGh1bWItYmFja2VuZC1tZXJnZV8yMDAwMDMyNQoJaW50byBicmFuY2guCgoJKiBhcm0ubWQgKGVoX2VwaWxvZ3VlKTogTmV3IGZ1bmN0aW9uLgoJKiBhcm0uaCAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBNb3ZlIHRvIGhlcmUgLi4uCgkqIGFybS5jOiAuLi4gZnJvbSBoZXJlLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBTdXBwb3J0IGVwaWxvZ3VlcyBmb3IgX19idWlsdGluX2VoX3JldHVybi4KCSh0aHVtYl9leGl0KTogRXh0cmEgcGFyYW1ldGVyIGVoX29mcy4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCglIYW5kbGUgZXBpbG9ndWVzIGZvciBfX2J1aWx0aW5fZWhfcmV0dXJuLiAgTWFrZSBiaXQtZmllbGRzIHVuc2lnbmVkLgoKCTIwMDAtMDMtMzAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBSZXN0b3JlIGRlZmluaXRpb24uCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fU1BFQyk6IFJlc3RvcmUgZGVmaW5pdGlvbi4KCShTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKEFTTV9TUEVDKTogUmVtb3ZlIGRlZmluaXRpb24uCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogUmVtb3ZlIGRlZmluaXRpb24uCgoJMjAwMC0wMy0yNiAgQmVybmQgU2NobWlkdCA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IERpc2FibGUgLWZzY2hlZHVsZS1pbnNucyBmb3IgVGh1bWIuCgoJMjAwMC0wMy0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCglWYXJpb3VzIGZvcm1hdGluZyB0aWR5dXBzLCBlbGltaW5hdGlvbiBvZiBjb21waWxlIHRpbWUKCXdhcm5pbmdzIGFuZCBzeW5jaHJvbmlzYXRpb24gd2l0aCBpbnRlcm5hbCBzb3VyY2VzOgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFzc2VtYmxlX2FsaWduKTogQWRkIHByb3RvdHlwZS4KCShnZW5fcm90YXRlZF9oYWxmX2xvYWQpOiBSZW5hbWUgdG8gYXJtX2dlbl9yb3RhdGVkX2hhbGZfbG9hZC4KCShnZW5fY29tYXByZV9yZWcpOiBSZW5hbWUgdG8gYXJtX2dlbl9jb21wYXJlX3JlZy4KCShhcm1fcmV0dXJuX2FkZHJfcnR4KTogUmVuYW1lIHRvIGFybV9yZXR1cm5fYWRkci4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IEluY2x1ZGUgZXhjZXB0LmguCglEZWZpbmUgc2hvcnRlciB0eXBlbmFtZXMgZm9yIHN0cmljdCBtaW5pcG9vbF9ub2RlIGFuZCBzdHJ1Y3QKCW1pbmlwb29sX2ZpeC4KCShhcm1fcmV0dXJuX2luX21lbW9yeSk6IEZvciBXaW5DRSByZXR1cm4gYWxsIHN0cnVjdHVyZXMgPD0gMzIgYml0cwoJaW4gbWVtb3J5LgoJKGdlbl9yb3RhdGVkX2hhbGZfbG9hZCk6IFJlbmFtZSB0byBhcm1fZ2VuX3JvdGF0ZWRfaGFsZl9sb2FkLgoJKGdlbl9jb21hcHJlX3JlZyk6IFJlbmFtZSB0byBhcm1fZ2VuX2NvbXBhcmVfcmVnLgoKCSogY29uZmlnL2FybS9hcm0uaCAoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRGVmaW5lIGlmIG5vdAoJYWxyZWFkeSBkZWZpbmVkLgoJKEFTTV9TUEVDKTogRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgkoQVNNX09VVFBVVF9ERUZfRlJPTV9ERUNMUyk6IERlZmluZS4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBSZW5hbWUgcmVmZXJlbmNlcyB0byBnZW5fcm90YXRlZF9oYWxmX2xvYWQgdG8KCWFybV9nZW5fcm90YXRlZF9oYWxmX2xvYWQsIGFuZCByZWZlcmVuY2VzIHRvIGdlbl9jb21hcHJlX3JlZyB0bwoJYXJtX2dlbl9jb21wYXJlX3JlZy4KCShpbmRpcmVjdF9qdW1wKTogIE9ubHkgYWNjZXB0IHJlZ2lzdGVyIG9wZXJhbmRzLgoJKGxvYWRfaW5kaXJlY3RfanVtcCk6IEtlZXAgdGhpcyBwYXR0ZXJuIHNpbmNlIGNvbWJpbmUgY2FuIGdlbmVyYXRlCglpdC4KCgkqIGNvbmZpZy9hcm0vY29mZi5oOiBJbmNsdWRlIGFvdXQuaC4KCShNVUxUSUxJQl9ERUZBVUxUUyk6IE9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogTW92ZSBkZWZpbml0aW9uCglpbnRvIGFybS5oIChzbyB0aGF0IENPRkYgcG9ydHMgY2FuIHN1cHBvcnQgdGh1bWIgYmFzZWQgYWxpYXNlcykuCgkoQVNNX1NQRUMpOiBNb3ZlIGRlZmluaXRpb24gaW50byBhcm0uaAoKCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogUmVtb3ZlCglyZWR1bmRhbnQgYXBjcyBzcGVjLgoJKEFTTV9TUEVDKTogTW92ZSBkZWZpbml0aW9uIHRvIGFybS5oCgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBNb3ZlIGRlZmluaXRpb24gdG8gYXJtLmgKCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYuaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBBZGQgc3VwcG9ydAoJZm9yIGVudHJpZXMgaW4gdGhlIC5ic3Mgc2VjdGlvbgoKCTIwMDAtMDMtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oIChUSFVNQl9JTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IFBhc3MgMAoJdG8gdGh1bWJfZmFyX2p1bXBfdXNlZF9wLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKHRodW1iX2Zhcl9qdW1wX3VzZWRfcCk6IFRha2UgYQoJc2luZ2xlIGludGVnZXIgcGFyYW1ldGVyLgoKCSogY29uZmlnL2FybS9hcm0uYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgdHdvIG5ldwoJZmllbGRzLCAnZmFyX2p1bXBfdXNlZCcgYW5kICdhcmdfcG9pbnRlcl9saXZlJy4KCSh0aHVtYl9mYXJfanVtcF91c2VkX3ApOiBPbmNlIHRoZSBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIHRoYXQKCWZhciBqdW1wcyBtaWdodCBiZSB1c2VkLCBhbHdheXMgcmV0dXJuIHRydWUuCglJZiBiZWluZyBjYWxsZWQgZnJvbSB0aGUgaW5pdGlhbCBlbGltaW5hdGlvbiBvZmZzZXQgbWFjcm8gdGhlbgoJZG8gbm90IGJvdGhlciB0byBwZXJmb3JtIHRoZSB0ZXN0IGlmIHRoZSBhcmcgcG9pbnRlciBpcyBub3QKCWJlaW5nIHVzZWQuCgkodGh1bWJfdW5leHBhbmRfZXBpbG9ndWUpOiBQYXNzIDEgdG8gdGh1bWJfZmFyX2p1bXBfdXNlZF9wKCkuCgkob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogUGFzcyAxIHRvIHRodW1iX2Zhcl9qdW1wX3VzZWRfcCgpLgoKCTIwMDAtMDMtMjMgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0uYyAob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IEhhbmRsZSBtb3JlIGNhc2VzIHdoZXJlIHdlIGNhbgoJcmV0dXJuIGZyb20gYSBmdW5jdGlvbiB3aXRoIGFuIGxkciBpbnN0cnVjdGlvbi4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgoJKiBhcm0uYyAodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgY2xvYmJlciB0aGUgZnJhbWUgcG9pbnRlcgoJaWYgd2UgbmVlZCB0byBwdXNoIGEgbGFyZ2Ugc3RhY2sgZnJhbWUgYW5kIHRoZXJlIGFyZSBubyBjYWxsZWUtc2F2ZWQKCXJlZ2lzdGVycy4KCgkqIGFybS5jIChhcm1fZGVidWdnZXJfYXJnX29mZnNldCk6IEFuIG9mZnNldCBvZiAwIGlzIGFsc28gdmFsaWQKCWluIEFSTSBjb2RlIGlmIHRoZSBmcmFtZSBwb2ludGVyIGhhcyBiZWVuIGVsaW1pbmF0ZWQuCgoJKiBhcm0ubWQgKGVwaWxvZ3VlLCAqZXBpbG9ndWVfaW5zbnMsIGNvbnN0dGFibGVfKiwgYWxpZ25fNCk6IFJlbnVtYmVyCgl1bnNwZWNfdm9sYXRpbGUgYXJndW1lbnRzIHRvIGF2b2lkIGR1cGxpY2F0ZXMuCgkoY29uc3R0YWJsZV8xLCBjb25zdHRhYmxlXzIpOiBGaXhlcyBmb3IgYmlnLWVuZGlhbiBtb2RlLgoKCSogYXJtLm1kIChhbGwgQVJNLW1vZGUgbG9hZCBpbnNucyk6IEFkZCBuZWdfcG9vbF9yYW5nZSBhdHRyaWJ1dGUKCWFzIGFwcHJvcHJpYXRlLgoKCVJlLXdyaXRlIGNvbnN0YW50IHBvb2wgY29kZS4KCSogYXJtLmMgKG1pbmlwb29sX25vZGUsIG1pbmlwb29sX2ZpeCk6IE5ldyB0eXBlcy4KCShtaW5pZml4KTogRGVsZXRlIHR5cGUuCgkoYXJtX2FkZF9taW5pcG9vbF9jb25zdGFudCk6IERlbGV0ZS4KCShhcm1fY29tcHV0ZV9taW5pcG9vbF9vZmZzZXRzLCBhcm1fZmluZF9iYXJyaWVyLAoJYXJtX2ZpbmRfbWluaXBvb2xfY29uc3RhbnQsIGZpeHVwX2NvbXBhcmUsIHNvcnRfZml4dXBzKTogTGlrZXdpc2UuCgkoZ2V0X2p1bXBfdGFibGVfc2l6ZSk6IE5vdyByZXR1cm5zIEhPU1RfV0lERV9JTlQuCgkobW92ZV9taW5pcG9vbF9maXhfZm9yd2FyZF9yZWYsIGFkZF9taW5pcG9vbF9mb3J3YXJkX3JlZik6IE5ldwoJZnVuY3Rpb25zLgoJKG1vdmVfbWluaXBvb2xfZml4X2JhY2t3YXJkX3JlZiwgYWRkX21pbmlwb29sX2JhY2t3YXJkX3JlZik6IExpa2V3aXNlLgoJKGFzc2lnbl9taW5pcG9vbF9vZmZzZXRzLCBhcm1fcHJpbnRfdmFsdWUpOiBMaWtld2lzZS4KCShkdW1wX21pbmlwb29sKTogUmV3cml0ZS4KCShhcm1fYmFycmllcl9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKGNyZWF0ZV9maXhfYmFycmllcik6IE5ldyBmdW5jdGlvbi4KCShwdXNoX21pbmlwb29sX2JhcnJpZXIpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9taW5pcG9vbF9maXgpOiBSZWNvcmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZml4dXAKCXJlcXVpcmVkLgoJKG5vdGVfaW52YWxpZF9jb25zdGFudHMpOiBSZW1vdmUgcHVzaCBmb3IgKFVOU1BFQyAzKS4gIERvbid0CgljaGVjayB0aGUgbW9kZSBvZiB3aGF0IG5lZWRzIGZpeGluZy4KCShhcm1fcmVvcmcpOiBSZXdyaXRlLgoKCTIwMDAtMDMtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoaW5kaXJlY3RfanVtcCk6IEZvcmNlIGNvbnN0YW50IGFkZHJlc3NlcyBpbnRvCglhIHJlZ2lzdGVyLgoKCTIwMDAtMDMtMDEgIEJlcm5kIFNjaG1pZHQgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5tZDogQWRkIHNwbGl0dGVyIHRvIHR1cm4gU0YgbW92ZXMgaW50byBTSSBtb3Zlcy4KCgkyMDAwLTAyLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogTWFrZSBzdXJlIHRoYXQgc3RhY2sKCWFkanVzdCBpcyB3b3JkIGFsaWduZWQuCgkodGh1bWJfZXhwYW5kX2VwaWxvZ3VlKTogTWFrZSBzdXJlIHRoYXQgc3RhY2sgYWRqdXN0IGlzIHdvcmQKCWFsaWduZWQuCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fRklMRV9TVEFSVCk6IEZpeCB0eXBlIG9mIHZlcnNpb24gc3RyaW5nLgoKCTIwMDAtMDItMjQgIEJlcm5kIFNjaG1pZHQgPGJlcm5kc0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoVEhVTUJfR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWxsb3cgZnJhbWUKCXBvaW50ZXIgcmVsYXRpdmUgYWRkcmVzc2VzLgoKCTIwMDAtMDItMTAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGZpbmRfYmFycmllcik6IEZpbmQgdGhlIGxhc3QgYmFycmllciB3aXRoaW4gdGhlIGFsbG93ZWQKCXJhbmdlLgoKCTIwMDAtMDItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogUmVwbGFjZSBQUk9UTyB3aXRoIFBBUkFNUy4KCgkyMDAwLTAyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoRlVOQ1RJT05fUFJPRklMRVIpOiBSZW5hbWUgdG8KCUFSTV9GVU5DVElPTl9QUk9GSUxFUi4KCgkqIGNvbmZpZy9hcm0vbmV0YnNkLmggKEZVTkNUSU9OX1BST0ZJTEVSKTogUmVuYW1lIHRvCglBUk1fRlVOQ1RJT05fUFJPRklMRVIuCgoJKiBjb25maWcvYXJtL2xpbnV4LW9sZGxkLmg6IEltcG9ydGVkIGZyb20gbWFpbmxpbmUgc291cmNlcy4KCgkyMDAwLTAyLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtOiBNZXJnZSBpbiB0aHVtYiBmdW5jdGlvbnMgZnJvbQoJbGliMXRodW1iLmFzbS4KCgkqIGNvbmZpZy9hcm0vbGliMXRodW1iLmFzbTogRGVsZXRlLgoKCTIwMDAtMDItMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jOiBTeWNocm9uaXNlZCB3aXRoIGN1cnJlbnQgUmVkIGhhdCBsb2NhbAoJc291cmNlcy4KCSogY29uZmlnL2FybS9hcm0uaDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBEaXR0by4KCgkyMDAwLTAyLTAyICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGFybS5jIChzb2Z0X2RmX29wZXJhbmQpOiBSZWplY3QgU1VCUkVHcyBjb250YWluaW5nIGEgY29uc3RhbnQuCgoJKiBhcm0uYyAoYXJtX2dlbl9tb3ZzdHJxaSk6IEdlbmVyYXRlIGhhbGZ3b3JkIHN0b3JlcyByYXRoZXIgdGhhbiB0d28KCWJ5dGUgc3RvcmVzLgoKCTIwMDAtMDItMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3RodW1iLmMgKHRodW1iX2V4aXQpOiBBZGRpdGlvbmFsIGZpeCBmb3Igc2FtZSBidWcuCgoJKiBjb25maWcvYXJtL2FybS5tZCAoZXBpbG9ndWUpOiBGaXggcnRsIGNoZWNraW5nIGFib3J0IGJlY2F1c2UKCShyZXR1cm4pIHdhcyBlbWl0ZWQgdXNpbmcgYW4gZW1pdF9pbnNuKCkgY2FsbC4KCgkyMDAwLTAxLTMxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogRml4IGJ1ZyBnZW5lcmF0aW5nCgl0aHVtYiBzdGFjayBmcmFtZS4KCSh0aHVtYl9leGl0KTogTW92ZSBmcmFtZSBwb2ludGVyIGJhY2sgaW50byBoYXJkIGZyYW1lIHBvaW50ZXIKCXJlZ2lzdGVyIGlmIGJhY2t0cmFjaW5nIGlzIGJlaW5nIHVzZWQuCgoJMjAwMC0wMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIE1lcmdlIHRydW5rIGNvZGUgZnJvbSB0YWcgbWVyZ2VkLWFybS10aHVtYi1iYWNrZW5kLW1lcmdlXzIwMDAwMTEzCglpbnRvIGJyYW5jaC4KCgkxOTk5LTEyLTE1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChuZWdfcG9vbF9vZmZzZXQpOiBQcm92aWRlIGRlZmF1bHQgZm9yIG5ldwoJYXR0cmlidXRlLgoJKGFybV9tb3ZzaV9pbnNuKTogQWRkIG5lZ19wb29sX29mZnNldCBhdHRyaWJ1dGUuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9maW5kX2JhcnJpZXIpOiBSZXBsYWNlIGFyZyBGSVggd2l0aCBhbgoJcnR4IGZvciB0aGUgaW5zbiB0aGF0IHN0YXJ0cyB0aGUgc2NhbiBhbmQgYW4gdW5zaWduZWQgbG9uZyBmb3IgaXRzCglhZGRyZXNzLiAgQWRkIE1JTl9PRkZTRVQgYW5kIFBJTlNFUlRFRCBhcmdzLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCUNoYW5nZSBzY2FuIHRvIGlnbm9yZSBpbnNucyBiZWZvcmUgTUlOX09GRlNFVC4gIFN0b3JlIHNpemUgb2YgaW5zZXJ0ZWQKCWluc3RydWN0aW9ucyBpbiAqUElOU0VSVEVELgoJKHN0cnVjdCBtaW5pcG9vbF9maXh1cCk6IEFkZCBNSU5fQUREUkVTUyBlbHQuCgkoc29ydF9maXh1cHMpOiBDb21wdXRlIGl0LgoJKGFybV9yZW9yZyk6IENoYW5nZXMgdG8gc3VwcG9ydCBpbnNlcnRpbmcgcG9vbHMgYmVmb3JlIHRoZSBpbnNuIHRvIGJlCglmaXhlZCB1cC4KCgkxOTk5LTEyLTA4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKE1VTFRJTElCX0RFRkFVTFRTKTogQWRkICJtYXJtIi4KCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoTVVMVElMSUJfREVGQVVMVFMpOiBBZGQgIm1hcm0iLgoJKiBjb25maWcvYXJtL2NvZmYuaCAoTVVMVElMSUJfREVGQVVMVFMpOiBBZGQgIm1hcm0iLgoKCVdlZCBOb3YgIDMgMTA6MDQ6MDcgMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vc2VtaS5oIChUQVJHRVRfVkVSU0lPTik6IERvIG5vdCBkZWZpbmUgaWYgYWxyZWFkeQoJZGVmaW5lZC4KCShUQVJHRVRfREVGQVVMVCk6IERvIG5vdCBkZWZpbmUgaWYgYWxyZWFkeSBkZWZpbmVkLgoKCVR1ZSBOb3YgIDIgMTA6Mzc6MjUgMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhbmRkaTMpOiBBbGxvdyBkaXNqb2ludCBzb3VyY2Ugb3BlcmFuZHMuCgkoaW9yZGkzKTogQWxsb3cgZGlzam9pbnQgc291cmNlIG9wZXJhbmRzLgoJKHhvcmRpMyk6IEFsbG93IGRpc2pvaW50IHNvdXJjZSBvcGVyYW5kcy4KCShuZWdkaTIpOiBQZXJtaXQgY29uc3RydWN0aW9uIGZvciBBUk0gYW5kIFRodW1iLgoJKGFybV9uZWdkaTIpOiBSZW5hbWVkIHZlcnNpb24gb2Ygb2xkIG5lZ2RpMiBwYXR0ZXJuLgoJKHRodW1iX25lZ2RpMik6IE5ldyBwYXR0ZXJuOiBPbmx5IHBlcm1pdCBub24tb3ZlcmxhcHBpbmcKCXNvdXJjZSBhbmQgZGVzdGluYXRpb24uCgoJRnJpIE9jdCAyOSAxODo1MjozOCAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogRW1pdCBhIFVTRSBvZiB0aGUKCXNjcmF0Y2ggbG93IHJlZ2lzdGVyIHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgZGVsZXRlZC4KCglGcmkgT2N0IDI5IDE1OjIzOjQ4IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3BlLmggKEFSTV9QRSk6IERlZmluZS4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV92YWxpZF9tYWNoaW5lX2RlY2xfYXR0cmlidXRlKTogQWxsb3cKCWludGVyZmFjZWFybSBhdHRyaWJ1dGUgaWYgdGhpcyBpcyBhIFBFIHRvb2xjaGFpbi4KCShvdXRwdXRfcmV0dXJuX2luc3RydWN0aW9uKTogRG8gbm90IGVtaXQgYW55dGhpbmcgaWYgdGhlIGZ1bmN0aW9uCgloYXMgdGhlIG5ha2VkIGF0dHJpYnV0ZSBzZXQuCgkoaXNfY2FsbGVkX2luX0FSTV9tb2RlKTogSWYgdGhlIGZ1bmN0aW9uIGhhcyB0aGUgaW50ZXJmYWNlYXJtCglhdHRyaWJ1dGUgdGhlbiByZXR1cm4gdHJ1ZS4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBEbyBub3QgZ2VuZXJhdGUgYSBwcm9sb2d1ZSBmb3IgbmFrZWQKCWZ1bmN0aW9ucy4KCSh0aHVtYl9leHBhbmRfZXBpbG9ndWUpOiBEbyBub3QgZ2VuZXJhdGUgYW4gZXBpbG9naWUgZm9yIGEgbmFrZWQKCWZ1bmN0aW9uLgoJKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IERvIG5vdCBib3RoZXIgaWYgdGhlIGZ1bmN0aW9uIGlzIG5ha2VkLgoJU3RyaXAgUEUgZW5jb2RpbmcgZnJvbSBmdW5jdGlvbiBuYW1lIGJlZm9yZSBlbWl0dGluZy4KCglUaHUgT2N0IDI4IDExOjA1OjEzIDE5OTkgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHBpY19sb2FkX2FkZHIpOiBGaXggY29uc3RyYWludHMuCgoJKiBhcm0ubWQgKGNhc2VzaV9pbnNuKTogRml4IG1pcy1hcHBsaWVkIHBhdGNoLgoKCSogYXJtLm1kICgiY29yZSIgZnVuY3Rpb24gdW5pdCk6IEFkZCBydWxlcyBmb3Igc2luZ2xlLSBhbmQKCW11bHRpLWN5Y2xlIGluc25zLgoJKEFsbCBUQVJHRVRfVEhVTUIgcGF0dGVybnMpOiBBZGQgInR5cGUiIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbgoJd2hlcmUgbmVlZGVkLgoJKiBhcm0uYyAoYXJtX2FkanVzdF9jb3N0KTogUmVkdWNlIHRoZSBjb3N0IG9mIGEgZGF0YSBkZXBlbmRlbmN5IGlmCgl0aGUgZm9sbG93aW5nIGluc24gaXMgYSBDQUxMLgoKCSogYXJtLmMgKHRodW1iX2V4cGFuZF9lcGlsb2d1ZSk6IEFkZCBhIHVzZSBvZiB0aGUgYWRqdXN0ZWQgc3RhY2sKCXBvaW50ZXIuCgkqIGFybS5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IE5haWwgZG93biB0aGUKCUFSTV9IQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNIHdoZW4gVEFSR0VUX0FQQ1NfRlJBTUUuCgkoRlJBTUVfUE9JTlRFUl9SRVFVSVJFRCk6IE9ubHkgY2hlY2sgVEFSR0VUX0FQQ1NfRlJBTUUgaWYgVEFSR0VUX0FSTS4KCglXZWQgT2N0IDI3IDE0OjQwOjQ4IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2xpbnV4LWdhcy5oOiBvb3BzIC0gdGhpcyBmaWxlIHdhcyBtaXNzZWQgb3V0IHdoZW4gdGhlCglicmFuY2ggd2FzIGNyZWF0ZWQuLi4KCglUdWUgT2N0IDI2IDE3OjA3OjM4IDE5OTkgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiB0aHVtYi5jOiBEZWxldGVkLiAgTW92ZSBjb250ZW50cyB0byAuLi4KCSogYXJtLmM6IC4uLiBoZXJlLgoJKiB0LWFybS1hb3V0LCB0LWFybS1jb2ZmLCB0LWFybS1lbGYsIHQtbGludXgsIHQtbmV0YnNkLCB0LXNlbWk6IFJlbW92ZQoJcnVsZSBmb3IgdGh1bWIubwoJKiBjb25maWd1cmUuaW4gKGFybSotKi0qKTogUmVtb3ZlIHRodW1iLm8gZnJvbSBleHRyYV9vYmpzIGxpc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW4uCgoJKiBhcm0tcHJvdG9zLmg6IFVzZSBSVFhfQ09ERSBhbmQgdGlkeSB1cCBsb25nIGxpbmVzLiAgRG9uJ3QKCWRlY2xhcmUgYSBwcm90b3R5cGUgZm9yIGFzbV9vdXRwdXRfYWxpZ24oKTsKCgkqIGFybS5jICh0aHVtYl9jb25kaXRpb25fY29kZSk6IERlbGV0ZS4KCShhcm1fcHJpbnRfb3BlcmFuZCk6IEFsd2F5cyB1c2UgYXJtX2NvbmRpdGlvbl9jb2RlIGFycmF5LgoKCSogYXJtLmMgKHRodW1iX3JldHVybl9hZGRyX3J0eCk6IERlbGV0ZS4KCShhcm1fc2F2ZV9tYWNoaW5lX3N0YXR1cywgYXJtX3Jlc3RvcmVfbWFjaGluZV9zdGF0dXMpOiBEZWxldGUuCgkoYXJtX2luaXRfbWFjaGluZV9zdGF0dXMsIGFybV9tYXJrX21hY2hpbmVfc3RhdHVzKTogTmV3IGZ1bmN0aW9ucy4KCShhcm1faW5pdF9leHBhbmRlcnMpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkoYXJtX3JldHVybl9hZGRyKTogUmVuYW1lZCBmcm9tIGFybV9yZXR1cm5fYWRkcl9ydHguICBSZXdyaXRlLgoJKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IERlbGV0ZSBjb2RlIHJlZmVyZW5jaW5nIHRodW1iX3JldHVybl9hZGRyX3J0eC4KCSogYXJtLmggKFJFVFVSTl9BRERSX1JUWCk6IENhbGwgYXJtX3JldHVybl9hZGRyKCkuCgoJVHVlIE9jdCAyNiAxMzoyNDoxNiAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIDogRml4IGFybS0qLWFvdXQgdGFyZ2V0IHRvIHVzZSBuZXcgdC1hcm0tYW91dAoJc2NyaXB0LgoJKiBjb25maWcvYXJtL3QtYXJtLWFvdXQ6IE5ldyBmaWxlOiBNYWtlZmlsZSBzY3JpcHQgZm9yIGFybS0qLWFvdXQKCXRhcmdldHMuCgoJVHVlIE9jdCAyNiAxMToyNzoxMiAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS90aHVtYi5jIChvdXRwdXRfdGh1bWJfcHJvbG9ndWUpOiBGaXggYnVnIGNyZWF0aW5nCglzdGFjayBiYWNrdHJhY2Ugc3RydWN0dXJlLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IEFkZCBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBpbgoJYXJtL3BlLmguCgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IEZpeCBzZWxlY3Rpb24gb2YKCWF0dHJpYnV0ZXMgb2YgZGVmYXVsdCBwcm9jZXNzb3IuCgoJKiBjb25maWcvYXJtL2NvZmYuaDogRGVsZXRlIG5lZWRsZXNzICNpbmNsdWRlLgoKCSogY29uZmlnL2FybS9wZS5jOiBEZWxldGUgdW51c2VkIGNvZGUuCgoJKiBjb25maWcvYXJtL3BlLmggKENQUF9ERUZJTkVTKTogRGVsZXRlCgkoU1VCVEFSR0VUX0NQUF9TUEVDKTogRGVmaW5lLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBVc2UgQVJNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRS4KCgkqIGNvbmZpZy9hcm0vdC1wZTogQWRkIC1ESW5oaWJpdF9saWJjIHRvIGFsbG9mIGxpYmdjYy5hIHRvIGJ1aWxkLgoKCU1vbiBPY3QgMjUgMTU6NDI6MDkgMTk5OSAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIGFybS5oIChUQVJHRVRfQVBDU19GUkFNRSk6IFJlbmFtZWQgZnJvbSBUQVJHRVRfQVBDUyAtLSBhbGwgdXNlcwoJdXBkYXRlZC4KCShDQU5fREVCVUdfV0lUSE9VVF9GUCk6IERlZmluZS4KCShGSVhFRF9SRUdJU1RFUlMpOiBNYWtlIHIxMSBjYWxsLXNhdmVkLgoJKENBTExfVVNFRF9SRUdJU1RFUlMpOiBMaWtld2lzZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IEZpeCByMTEgaWYgVEFSR0VUX0FQQ1NfRlJBTUUuCgkoRlJBTUVfUE9JTlRFUl9SRVFVSVJFRCk6IENvcnJlY3QgbG9naWMgZm9yIGRldGVybWluaW5nIHdoZW4gYQoJZnJhbWUtcG9pbnRlciBpcyByZXF1aXJlZC4KCShUQVJHRVRfREVGQVVMVCk6IE1ha2UgZGVmYXVsdCBzZXR0aW5nIGluY2x1ZGUgQVJNX0ZMQUdfQVBDU19GUkFNRS4KCSogYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogV2FybiBhYm91dCAtbW5vLWFwY3MtZnJhbWUgYW5kIC1nCglpZiB0aGUgdGFyZ2V0IG5vcm1hbGx5IG5lZWRzIGEgc3RhY2sgZnJhbWUgaW4gbm9uLWxlYWYgZnVuY3Rpb25zLgoJKHVzZV9yZXR1cm5faW5zbik6IENvcnJlY3QgbG9naWMgZm9yIGRldGVybWluaW5nIHdoZW4gYSByZXR1cm4KCWluc3RydWN0aW9uIGNhbiBiZSB1c2VkLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBIYW5kbGUgdGhlIGZyYW1lLXBvaW50ZXIgcmVnaXN0ZXIgYXMKCWEgbm9ybWFsIHJlZ2lzdGVyIHdoZW4gbm90IFRBUkdFVF9BUENTX0ZSQU1FLgoJKGFybV9vdXRwdXRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkob3V0cHV0X2Z1bmNfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkqIG5ldGJzZC5oIHNlbWkuaCAoVEFSR0VUX0RFRkFVTFQpOiBBZGQgQVJNX0ZMQUdfQVBDU19GUkFNRS4KCgkqIGFybS5jICh1c2VfcmV0dXJuX2luc24pOiBObyBuZWVkIHRvIGNoZWNrIGZsb2F0aW5nIHBvaW50IHJlZ3MgaWYKCVRBUkdFVF9TT0ZUX0ZMT0FULgoJKGFybV9maW5kX21pbmlwb29sX2NvbnN0YW50KTogQ29ycmVjdCB0eXBvOyB1c2UgR0VUX0NPREUgdG8gZ2V0Cgl0aGUgY29kZSBvZiB2YWx1ZSBzdG9yZWQgaW4gdGhlIG1pbmlwb29sIGFycmF5LgoJKGFybV9hZGRfbWluaXBvb2xfY29uc3RhbnQpOiBMaWtld2lzZS4KCjIwMDAtMDQtMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJhc2ljLWJsb2NrLmggKGNvbmZsaWN0X2dyYXBoX2VudW1fZm4pOiBLJlIgZml4LgoKMjAwMC0wNC0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdHJlZS5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IE5ldyBmdW5jdGlvbi4KCgkqIHRyZWUuaCAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBEZWNsYXJlLgoKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogQ2FsbCBgdHJlZV9leHByX25vbm5lZ2F0aXZlX3AnIHRvCgllbGlkZSBzb21lIHNpZ25fY29tcGFyZSB3YXJuaW5ncy4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgpTYXQgQXByICA4IDAwOjIxOjUxIEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBpMzg2Lm1kIChhc2hyc2kzLCBhc2hyaGkzLCBhc2hycWkzKTogRml4IHR5cG8uCgoJKiBpMzg2Lm1kIChmbG9hdGhpc2YyLCBmbG9hdGhpZGYyLCBmbG9hdGhpeGYyKTogTmV3IHBhdHRlcm5zLgoJKiBpMzg2LmMgKHByaW50X29wZXJhbmQpOiBVc2UgdGhlIHByb3BlciBzdWZmaXggZm9yIGEgMzg3IEhJbW9kZQoJb3BlcmFuZC4gIEFib3J0IGlmIGEgMzg3IG9wZXJhbmQgaGFzIGFuIHVuc3VwcG9ydGVkIHNpemUuCgoyMDAwLTA0LTA4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9jaGFyY29uc3QpOiBOdWxsIGRvZXMgbm90IGVuZCBjaGFyYWN0ZXIKCWNvbnN0YW50cy4KCSogY3BwaW5pdC5jIChJU1RBQkxFKTogTnVsbCBjaGFyYWN0ZXIgaGFuZGxlZCBhcyB3aGl0ZXNwYWNlLgoJKiBjcHBsZXguYyAobnVsbF93YXJuaW5nKTogIG5ldyBmdW5jdGlvbi4KCShza2lwX3N0cmluZyk6IEVtaXQgd2FybmluZyBpZiBudWxscyBlbmNvdW50ZXJlZC4KCShfY3BwX3NraXBfaHNwYWNlKTogRW1pdCB3YXJuaW5nIGlmIG51bGxzIGVuY291bnRlcmVkLgoJKF9jcHBfbGV4X3Rva2VuKTogRW1pdCB3YXJuaW5nIGlmIG51bGxzIGVuY291bnRlcmVkLiAgRHJvcAoJdGhlbS4KCSogY3BwLnRleGk6IFVwZGF0ZS4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGxvb3BfZGVwdGgpOiBSZW1vdmUuCgkocmVnX25leHRfdXNlLCBjYzBfbGl2ZSwgbWVtX3NldF9saXN0KTogUmVwbGFjZSB3aXRoIC4uLgoJKHN0cnVjdCBwcm9wYWdhdGVfYmxvY2tfaW5mbyk6IE5ldy4KCShsaWZlX2FuYWx5c2lzKTogRG9uJ3QgYWxsb2NhdGUgcmVnX25leHRfdXNlLgoJKHByb3BhZ2F0ZV9ibG9ja19kZWxldGVfaW5zbik6IEJyZWFrIG91dCBvZiBwcm9wYWdhdGVfYmxvY2suCglVc2UgZmxvd19kZWxldGVfaW5zbiB0byB1bmxpbmsgcmF0aGVyIHRoYW4gdXNlIE5PVEVfSU5TTl9ERUxFVEVELgoJKHByb3BhZ2F0ZV9ibG9ja19kZWxldGVfbGliY2FsbCk6IExpa2V3aXNlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IENyZWF0ZSBhIHByb3BhZ2F0ZV9ibG9ja19pbmZvIHN0cnVjdCB0byBwYXNzCgl0byBzdWJyb3V0aW5lcy4gIEFsbG9jYXRlIG9uZSBub3QgdHdvIHRlbXBvcmFyeSByZWdzZXRzLiAgRG9uJ3QKCWNsb2JiZXIgbWVtb3J5IGZvciBjb25zdCBjYWxscy4gIExvb2sgZm9yIGNsb2JiZXJzIGluCglDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UuCgkobWFya19zZXRfcmVncyk6IFJlY29nbml6ZSBDT05EX0VYRUMuCgkobWFya19zZXRfcmVnKTogQnJlYWsgb3V0IG9mIG1hcmtfc2V0XzEuCgkobWFya191c2VkX3JlZyk6IEJyZWFrIG91dCBvZiBtYXJrX3VzZWRfcmVncy4KCShtYXJrX3VzZWRfcmVncyk6IFJlY29nbml6ZSBDT05EX0VYRUMuCgkoaW5zbl9kZWFkX3ApOiBVc2UgcHJvcGFnYXRlX2Jsb2NrX2luZm8gc3RydWN0LgoJKGxpYmNhbGxfZGVhZF9wLCBpbnZhbGlkYXRlX21lbXNfZnJvbV9hdXRvaW5jKTogTGlrZXdpc2UuCgkoZmluZF9hdXRvX2luYywgdHJ5X3ByZV9pbmNyZW1lbnRfMSk6IExpa2V3aXNlLgoJKHByaW50X3J0bF93aXRoX2JiKTogRHVtcCByZWdzIGxpdmUgYXQgZW5kIHRvby4KCShjb3VudF9yZWdfc2V0c18xKTogUGFzcyBpbiBsb29wX2RlcHRoLgoJKGNvdW50X3JlZ19zZXRzLCBjb3VudF9yZWdfcmVmZXJlbmNlcyk6IExpa2V3aXNlLgoJKHJlY29tcHV0ZV9yZWdfdXNhZ2UpOiBQcm92aWRlIGl0LgoKMjAwMC0wNC0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjb25mbGljdC5vKTogRGVwZW5kIG9uICQoUlRMX0gpIGFuZCAkKEJBU0lDX0JMT0NLX0gpCglub3QgdGhlIHJhdyBmaWxlcy4KCjIwMDAtMDQtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChkb19lbGlmKTogU2tpcCB0aGUgcmVzdCBvZiB0aGUgbGluZSBpZiB3ZSdyZQoJbm90IGdvaW5nIHRvIGJvdGhlciBldmFsdWF0aW5nIGl0LgoJKHNraXBfaWZfZ3JvdXApOiBDbGVhciBwZmlsZS0+b25seV9zZWVuX3doaXRlLiAgUmVvcmRlciBsb29wCgl0byBhdm9pZCBwb2ludGxlc3MgY2FsbHMgdG8gdGhlIGxleGVyLgoKRnJpIEFwciAgNyAxMTo1MDo1NCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IERlbGV0ZSBzdGRpby5oIGFuZCBjdHlwZS5oIGluY2x1ZGVzLgoKMjAwMC0wNC0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IGVtaXRfcXVldWUgaWYgd2UncmUgdHJ5aW5nIGEgc2liY2FsbC4KCjIwMDAtMDQtMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3QtbGludXg2NCAodGNydGJlZ2luUy5vLCB0Y3J0ZW5kUy5vKTogUmVtb3ZlLgoKMjAwMC0wNC0wNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IEJ1aWxkIGNydGJlZ2luUyBhbmQgY3J0ZW5kUyBsaWtlIGNydGJlZ2luIGFuZAoJY3J0ZW5kIHNvIHRoZXkgY2FuIGJlIG11bHRpbGliYmVkLgoJKFNUQUdFU1RVRkYpOiBSZW1vdmUgcy1jcnQgYW5kIHMtY3J0Uy4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogRmFpbAoJaWYgd2UgZGlzY292ZXIgd2UgbmVlZCBhIHBzZXVkbyBhbmQgbm9fbmV3X3BzZXVkb3MgaXMgdHJ1ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChuZTpESSBpbnNuKTogTmV3LgoJKHRydW5jdGZzZjIsIHNuZSk6IEVtaXQgTkUgaW5zdGVhZCBvZiBub24tY2Fub25pY2FsIExUVS4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGwuZGVmIChDT05EX0VYRUMpOiBOZXcuCgkqIHJ0bC5oIChDT05EX0VYRUNfVEVTVCwgQ09ORF9FWEVDX0NPREUpOiBOZXcuCgkqIHRtLnRleGkgKE1BWF9DT05ESVRJT05BTF9FWEVDVVRFKTogRG9jdW1lbnQuCgoJKiBnZW5jb25maWcuYyAoaGF2ZV9jb25kX2FyaXRoX2ZsYWcpOiBSZW1vdmUuCgkoaGF2ZV9jb25kX2V4ZWNfZmxhZyk6IE5ldy4KCSh3YWxrX2luc25fcGFydCk6IERldGVjdCBDT05EX0VYRUMsIG5vdCBhcml0aG1ldGljIGluIElGX1RIRU5fRUxTRS4KCShtYWluKTogUHJpbnQgSEFWRV9jb25kaXRpb25hbF9leGVjdXRpb24uCgoJKiBoYWlmYS1zY2hlZC5jIChoYWlmYV9jbGFzc2lmeV9pbnNuKTogUmVjb2duaXplIENPTkRfRVhFQy4KCShzY2hlZF9hbmFseXplX2luc24sIHByaW50X3BhdHRlcm4pOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAocmVnX3JlZmVyZW5jZWRfcCk6IExpa2V3aXNlLgoJKG5vdGVfc3RvcmVzLCBkZWFkX29yX3NldF9yZWdub19wKTogTGlrZXdpc2UuCgkocmVnX292ZXJsYXBfbWVudGlvbmVkX3ApOiBSZXdyaXRlIHRvIHVzZSBhIHN3aXRjaC4KCgkqIGdnYy5oIChzdHJ1Y3QgcnR4X2RlZik6IEZvcndhcmQgZGVjbGFyZS4KCgkqIHByaW50LXJ0bC5jIChkZWJ1Z19ydHhfcmFuZ2UpOiBOZXcuCgkqIHJ0bC5oIChkZWJ1Z19ydHhfcmFuZ2UpOiBEZWNsYXJlLgoKCSogdmFycmF5LmggKFZBUlJBWV9BQ1RJVkVfU0laRSwgVkFSUkFZX1BPUF9BTEwpOiBOZXcuCgoJKiBnY3NlLmMgKGdjc2VfbWFpbik6IERvbid0IHJlYnVpbGQgdGhlIENGRyBoZXJlLgoJKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogTGlrZXdpc2UuCgkqIHNzYS5jIChjb252ZXJ0X3RvX3NzYSk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IERvIGl0IGhlcmUgaW5zdGVhZC4gIENvbWJpbmUKCXNlcXVlbnRpYWwgY2FsbHMgdG8gVElNRVZBUi4gIENvbnNpc3RlbnRseSB1c2UgYGluc25zJyBpbnN0ZWFkIG9mCglgZ2V0X2luc25zKCknLiAgQWx3YXlzIHNwbGl0IGluc25zIGFmdGVyIHJlbG9hZCB3aGVuIG9wdGltaXppbmcuCgoJKiBiYXNpYy1ibG9jay5oIChtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogRGVjbGFyZS4KCSh0aWR5X2ZhbGx0aHJ1X2VkZ2UpOiBEZWNsYXJlLgoJKiBmbG93LmMgKG1lcmdlX2Jsb2Nrc19ub21vdmUpOiBEb2N1bWVudCBhcyBtZXJnaW5nIGludG8gcHJldmlvdXMKCWJsb2Nrcy4gIFJlbW92ZSBjcnVmdCBmcm9tIGJldHdlZW4gYmxvY2tzOyByZW1vdmUgYWxsIGVkZ2VzIG91dCBvZiBBLgoJKHRpZHlfZmFsbHRocnVfZWRnZSk6IEV4cG9ydC4KCjIwMDAtMDQtMDYgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzc2EuYyAoY29tcHV0ZV9jb25zZXJ2YXRpdmVfcmVnX3BhcnRpdGlvbik6IERlY2xhcmUgd2l0aAoJdm9pZCBhcmd1bWVudHMuCgkqIHRvcGxldi5jIChjbGVhbl9kdW1wX2ZpbGUpOiBSZW1vdmUgcHJldmlvdXNseS1kZWxldGVkIGZ1bmN0aW9uCglpbmFkdmVydGFudGx5IG1lcmdlZCBiYWNrIGluLgoJKiBjb25mbGljdC5jIChjb25mbGljdF9ncmFwaF9hZGQpOiBVc2UgYSBzaW5nbGUgY2FsbCB0bwoJaHRhYl9maW5kX3Nsb3QgdG8gbG9vayB1cCBhbmQgaW5zZXJ0LgoKMjAwMC0wNC0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGdlbnJlY29nLmMgKCopOiBSZW5hbWUgX2xhc3RfaW5zbiB0byBsYXN0X2luc24uCgkobWFrZV9pbnNuX3NlcXVlbmNlKTogU2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGVlcGhvbGUyIEMgdGVzdAoJdG8gYmUgYXQgdGhlIGxhc3QgaW5zbi4KCjIwMDAtMDQtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGNvbXB1dGVfZmxvd19kb21pbmF0b3JzKTogRnJlZSB3b3JrbGlzdC4KCjIwMDAtMDQtMDYgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGZsb3cuYyAoY29tcHV0ZV9mbG93X2RvbWluYXRvcnMpOiBQcm9jZXNzIGJsb2NrcyBGSUZPIG5vdCBMSUZPLgoKMjAwMC0wNC0wNiAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5oIChJTlNOX1ApOiBOZXcgbWFjcm8uCgkoc3VjY2Vzc29yX3BoaV9mbik6IE5ldyB0eXBlZGVmLgoJKGZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkpOiBOZXcgcHJvdG90eXBlLgoJKGluX3NzYV9mb3JtKTogTmV3IHZhcmlhYmxlLgoJKFBISV9OT0RFX1ApOiBMaWtld2lzZS4KCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEFkZCB0byBuZXdfbGl2ZV9hdF9lbmQgZnJvbQoJcGhpIG5vZGVzIGluIHN1Y2Nlc3NvcnMuCgkobWFya191c2VkX3JlZ3MpOiBBZGQgUEhJIGNhc2UuCgkoc2V0X3BoaV9hbHRlcm5hdGl2ZV9yZWcpOiBOZXcgZnVuY3Rpb24uCgkobGlmZV9hbmFseXNpcyk6IEFzc2VydCB0aGF0IGRlYWQgY29kZSBlbGltaW5hdGlvbiBpcyBub3Qgc2VsZWN0ZWQKCXdoZW4gaW4gU1NBIGZvcm0uCgkqIHRvcGxldi5jICh0b19zc2FfdGltZSk6IE5ldyB2YXJpYWJsZS4KCShmcm9tX3NzYV90aW1lKTogTGlrZXdpc2UuCgkoY29tcGlsZV9maWxlKTogWmVybyB0b19zc2FfdGltZSBhbmQgZnJvbV9zc2FfdGltZS4KCVByaW50IHRpbWUgdG8gY29udmVydCB0byBhbmQgZnJvbSBTU0EuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFRpbWUgY29udmVydF90b19zc2EgYW5kIGNvbnZlcnRfZnJvbV9zc2EuCgkocHJpbnRfdGltZSk6IENvbXB1dGUgcGVyY2VudCBmcmFjdGlvbiBhcyBpbnRlZ2VyLgoJKiBzc2EuYyAoUEhJX05PREVfUCk6IE1vdmVkIHRvIHJ0bC5oLgoJKGNvbnZlcnRfdG9fc3NhKTogQ2hlY2sgaWYgd2UncmUgYWxyZWFkeSBpbiBTU0EuCglEb24ndCBlbGltaW5hdGUgZGVhZCBjb2RlIGluIGxpZmVfYW5hbHlzaXMuCglSZXJ1biBmbG93IGFuZCBsaWZlIGFuYWx5c2lzIGF0IGJvdHRvbS4KCShlbGltaW5hdGVfcGhpKTogVXNlIGNhbm9uaWNhbCByZWdub3Mgd2hlbiBhZGRpbmcgbm9kZXMuCgkobWFya19yZWdfaW5fcGhpKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfcGhpX2FuZF9jb3B5X3JlZ3MpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogUmVydW4gbGlmZSBhbmFseXNpcyBhdCB0b3AuCglVc2UgY29hbGVzY2VkIHBhcnRpdGlvbi4KCUNoZWNrIGZvciByZW1vdmluZyBhIHBoaSBub2RlIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgoJKGNvbXB1dGVfY29hbGVzY2VkX3JlZ19wYXJ0aXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoY29hbGVzY2VfcmVnc19pbl9jb3BpZXMpOiBMaWtld2lzZS4KCShjb2FsZXNjZV9yZWdfaW5fcGhpKTogTGlrZXdpc2UuCgkoY29hbGVzY2VfcmVnc19pbl9zdWNjZXNzb3JfcGhpX25vZGVzKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLgoJKHJlbmFtZV9jb250ZXh0KTogTmV3IHN0cnVjdC4KCShyZW5hbWVfYmxvY2spOiBVc2UgYSByZW5hbWVfY29udGV4dCB3aXRoIHJlbmFtZV9pbnNuXzEuICBXaGVuCglyZW5hbWluZyBzZXRzIG9mIGEgc3VicmVnLCBlbWl0IGEgY29weSBvZiB0aGUgZW50aXJlIHJlZyBmaXJzdC4KCShyZW5hbWVfaW5zbl8xKTogVHJlYXQgZGF0YSBhcyBhIHJlbmFtZV9jb250ZXh0ICouICBTYXZlIGN1cnJlbnQKCWluc24gaW4gc2V0X2RhdGEuCgkocmVuYW1lX3NldF9kYXRhKTogQWRkIGZpZWxkIHNldF9pbnNuLgoJKiBNYWtlZmlsZS5pbiAoSEFTSFRBQl9IKTogTW92ZSB1cCBpbiBmaWxlLgoJKE9CU1RBQ0tfSCk6IE5ldyBtYWNyby4KCShjb2xsZWN0Mi5vKTogVXNlIE9CU1RBQ0tfSCBpbiBkZXBlbmRlbmNpZXMuCgkoc2Rib3V0Lm8pOiBMaWtld2lzZS4KCShlbWl0LXJ0bC5vKTogTGlrZXdpc2UuCgkoc2ltcGxpZnktcnR4Lm8pOiBMaWtld2lzZS4KCShmaXgtaGVhZGVyLm8pOiBMaWtld2lzZS4KCShPQkpTKToJQWRkIGNvbmZsaWN0Lm8uCgkoY29uZmxpY3Qubyk6IE5ldyBydWxlLgoJKiBiYXNpYy1ibG9jay5oOiBJbmNsdWRlIHBhcnRpdGlvbi5oLgoJKGNvbmZsaWN0X2dyYXBoKTogTmV3IHR5cGVkZWYuCgkoY29uZmxpY3RfZ3JhcGhfZW51bV9mbik6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX25ldyk6IE5ldyBwcm90b3R5cGUuCgkoY29uZmxpY3RfZ3JhcGhfZGVsZXRlKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfYWRkKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX2VudW0pOiBMaWtld2lzZS4KCShjb25mbGljdF9ncmFwaF9tZXJnZV9yZWdzKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfcHJpbnQpOiBMaWtld2lzZS4KCShjb25mbGljdF9ncmFwaF9jb21wdXRlKTogTGlrZXdpc2UuCgkqIGNvbmZsaWN0LmM6IE5ldyBmaWxlLgoKMjAwMC0wNC0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGxpbmsuYyAocmVhZF9yZXBvX2ZpbGVzKTogRG9uJ3QgbG9vayBmb3IgLnJwbyBpbmZvIGZvcgoJbGlua2VyIGZsYWdzLgoKVGh1IEFwciAgNiAyMDozOToyNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5oIChTVFJVQ1RfVkFMVUUsIFJFVFVSTl9JTl9NRU1PUlkpOiBEZWZpbmUuCgpUaHUgQXByICA2IDE5OjM0OjA4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChfX191ZGl2c2kzX2k0KToKCSggX19TSDRfU0lOR0xFX18gLyBfX1NINF9TSU5HTEVfT05MWV9fIHZhcmlhbnQpOiB2YWx1ZSBmb3IgZnBzY3IKCW9ubHkgZGVwZW5kcyBvbiBGTU9WRF9XT1JLUy4KClRodSBBcHIgIDYgMTk6MTE6NDcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKF9fX3VkaXZzaTNfaTQpOiBXaGVuIHVzaW5nIGZtb3ZkLAoJbWFrZSBkb3VibGUgY29uc3RhbnQgOC1ieXRlIGFsaWduZWQuCgoyMDAwLTA0LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobW92dGZfaW5zbl9zcDMyLCBtb3Z0Zl9pbnNuX3Zpc19zcDMyLAoJbW92dGZfbm9fZV9pbnNuX3NwMzIsIG1vdnRmX2luc25faHFfc3A2NCwgbW92dGZfaW5zbl9ocV92aXNfc3A2NCwKCW1vdnRmX25vX2VfaW5zbl9zcDY0KTogQWNjZXB0IGxvYWRpbmcgMC4wIGludG8gR0VORVJBTF9SRUdTLgoJKG1vdnRmX2luc25fc3A2NCwgbW92dGZfaW5zbl92aXNfc3A2NCk6IExpa2V3aXNlLgoJQWNjZXB0IHN0b3JpbmcgR0VORVJBTF9SRUdTIGludG8gb2Zmc2V0YWJsZSBtZW1vcnkuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogRG9uJ3QgYWxsb3cKCWJ1aWxkaW5nIGEgVEZtb2RlIGNvbnN0YW50IG90aGVyIHRoYW4gMC4wTCBpbnRvIEdFTkVSQUxfUkVHUy4KCjIwMDAtMDQtMDYgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogcmVncmVuYW1lLmMgKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IEhhbmRsZSBubyBSRUdfQUxMT0NfT1JERVIuCgoyMDAwLTA0LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKENQUF9JU19NQUNST19CVUZGRVIsIEZPUldBUkQsIFBFRUtDKTogRGVsZXRlLgoJKG1hY3JvX2NsZWFudXApOiBObyBuZWVkIHRvIGNhc3QgcGJ1Zi0+bWFjcm8uCgkoY29sbGVjdF9leHBhbnNpb24pOiBVc2UgX2NwcF9nZXRfZGVmaW5lX3Rva2VuLiAgR290byBkb25lIGlmCglpdCByZXR1cm5zIFZTUEFDRS4gIFJlbW92ZSBjaGVjayBmb3IgdHJhaWxpbmcgc3BhY2UgYWZ0ZXIKCUNQUF9DT01NRU5ULgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBEb24ndCBkaWRkbGUgZmxhZ3MgaGVyZS4gIFJldHVybgoJZGlyZWN0bHkgb24gZXJyb3IuCgkodW5zYWZlX2NoYXJzKTogSGFuZGxlIGMxIGJlaW5nIEVPRi4KCShwdXNoX21hY3JvX2V4cGFuc2lvbik6IFVzZSB1bnNhZmVfY2hhcnMgZm9yIGJvdGggYWNjaWRlbnRhbC1wYXN0ZQoJY2hlY2tzLiAgRG9uJ3QgcHVzaCB0aGUgYnVmZmVyIHRpbGwgYWZ0ZXIgd2UncmUgZG9uZSB3aXRoCgl0aGVtLgoJKiBjcHBsZXguYyAoUEVFS0JVRiwgR0VUQlVGLCBGT1JXQVJEQlVGKTogTmV3LgoJKFBFRUtOLCBGT1JXQVJELCBHRVRDLCBQRUVLQyk6IFVzZSB0aGVtLgoJKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IHNldCBuZXctPmFsaW1pdC4gIFNldCBuZXctPm1hcmsKCWFwcHJvcHJpYXRlbHkuCgkoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBEb24ndCBOVUwgdGVybWluYXRlLgoJKF9jcHBfbGV4X3Rva2VuKTogRml4IC10cmFkaXRpb25hbCBtYWNybyBoYW5kbGluZy4gIERvbid0IHNraXAKCWhzcGFjZSBiZWZvcmUgY2FsbGluZyBfY3BwX3BhcnNlX2Fzc2VydGlvbi4gIFJlbW92ZSBhbGwgc2V0cwoJb2Ygb25seV9zZWVuX3doaXRlLiBUcmVhdCAnXGYnIGFzIGhzcGFjZS4gIERvbid0IGRvIGFueXRoaW5nCglzcGVjaWFsIHdpdGggJ1xuJyBoZXJlLgoJKG1heWJlX21hY3JvZXhwYW5kKTogSGFuZGxlIFRfRU1QVFkgaGFzaCBlbnRyaWVzIHdpdGhvdXQKCXB1c2hpbmcgYSBidWZmZXIgYXQgYWxsLgoJKGNwcF9nZXRfdG9rZW4pOiBIYW5kbGUgY2xlYXJpbmcgb25seV9zZWVuX3doaXRlIGhlcmUuICBIYW5kbGUKCWluY3JlbWVudGluZyB0aGUgbGluZSBudW1iZXIgaGVyZS4gIENsZWFyCglwb3RlbnRpYWxfY29udHJvbF9tYWNybyBhcyB3ZWxsIGFzIG9ubHlfc2Vlbl93aGl0ZSwgaWYKCWFwcHJvcHJpYXRlLgoJKGNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuKTogRG9uJ3QgZWF0IENQUF9QT1AgdG9rZW5zLgoJKF9jcHBfZ2V0X2RlZmluZV90b2tlbik6IE5ldyBmdW5jdGlvbiwgYmFzaWNhbGx5IGxpa2UKCV9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbiB3YXMgYnV0IGRvZXNuJ3QgZWF0IGhvcml6b250YWwgc3BhY2UuCglEb24ndCBkbyBhbnl0aGluZyB3aXRoIG9ubHlfc2Vlbl93aGl0ZSBoZXJlLgoJKF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbik6IEp1c3QgY2FsbCBfY3BwX2dldF9kZWZpbmVfdG9rZW4KCXJlcGVhdGVkbHkgdGlsbCBpdCByZXR1cm5zIG5vbi1oc3BhY2UuCgoJKiBjcHBsaWIuYyAoUEVFS04sIEZPUldBUkQsIEdFVEMsIFBFRUtDKTogRGVsZXRlLgoJKGNvbmRpdGlvbmFsX3NraXAsIHNraXBfaWZfZ3JvdXApOiBSZXR1cm4gaW50LgoJKERJUkVDVElWRV9UQUJMRSk6IENoYW5nZSBvcmlnaW4gb2YgYWxsIGNvbmRpdGlvbmFsIGRpcmVjdGl2ZXMKCXRvICJDT05EIi4KCShUUkFEX0RJUkVDVF9QKTogTmV3IG1hY3JvLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uICBJc3N1ZQoJYW4gZXJyb3IgZm9yIGEgYm9ndXMgZGlyZWN0aXZlLCB1bmxlc3MgLWxhbmctYXNtLiAgVXNlCglUUkFEX0RJUkVDVF9QLiBMb29wIGNhbGxpbmcgaGFuZGxlciBmdW5jdGlvbnMgdGlsbCBvbmUgcmV0dXJucwoJemVyby4KCShnZXRfbWFjcm9fbmFtZSk6IERvbid0IGRpZGRsZSBmbGFncyBoZXJlLgoJKGRvX2RlZmluZSk6IERpZGRsZSBmbGFncyBoZXJlLiAgVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCUNyZWF0ZSBUX0VNUFRZIG5vZGVzIGZvciAjZGVmaW5lIG1hY3JvIC8qIG5vdGhpbmcgKi8uCgkoZG9fdW5kZWYpOiBEb24ndCBjb3B5IHRoZSBuYW1lLiAgVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCVVzZSBocC0+bmFtZSB3aGVuIGNhbGxpbmcgcGFzc190aHJ1X2RpcmVjdGl2ZS4KCShkb19pZiwgZG9fZWxzZSwgZG9fZWxpZiwgZG9faWZkZWYsIGRvX2lmbmRlZiwgY29uZGl0aW9uYWxfc2tpcCk6CglSZXR1cm4gdGhlIHJlc3VsdCBvZiBjb25kaXRpb25hbF9za2lwIGFuZC9vciBza2lwX2lmX2dyb3VwLgoJRG9uJ3QgY2FsbCBfY3BwX291dHB1dF9saW5lX2NvbW1hbmQuCgkoY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nKTogVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCUlzc3VlIC1XdHJhZGl0aW9uYWwgd2FybmluZ3MgYXMgYXBwcm9wcmlhdGUuICBEb24ndCBjb21wbGFpbgoJYWJvdXQgdW5yZWNvZ25pemVkIGRpcmVjdGl2ZXMuICBJZiB3ZSBhcmUgdG8gc3RvcCBza2lwcGluZywKCXJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBkaXJlY3RpdmUgdGhhdCBlbmRlZCB0aGUgc2tpcC4KCShza2lwX2lmX2dyb3VwKTogVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4gIFR1cm4gb2ZmIG1hY3JvCglleHBhbnNpb24gYW5kIGxpbmUgY29tbWFuZHMgd2hpbGUgc2tpcHBpbmcuICBSZXR1cm4gdGhlIHJlc3VsdAoJb2YgY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nLCBpZiBub256ZXJvLgoJKGRvX2VuZGlmKTogSnVzdCBzZXQgcG90ZW50aWFsX2NvbnRyb2xfbWFjcm8gaGVyZS4KCSh2YWxpZGF0ZV9lbHNlKTogVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogRG9uJ3Qgc2F2ZSBwb2ludGVycyBpbnRvIHRoZQoJdG9rZW5fYnVmZmVyIGFjcm9zcyBjYWxscyB0byB0aGUgbGV4ZXIuICBVc2UKCV9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCgkqIGNwcGxpYi5oIChjcHBfYnVmZmVyKTogUmVtb3ZlIGFsaW1pdCBhbmQgY29sbm8uICBNYWtlIG1hcmsgYQoJcG9pbnRlciwgbm90IGFuIG9mZnNldC4gIFJlcGxhY2UgJ2RhdGEnLCB3aGljaCB3YXMgYSBnZW5lcmljCglwb2ludGVyLCB3aXRoICdtYWNybycsIHdoaWNoIHBvaW50cyB0byBhIHN0cnVjdCBoYXNobm9kZS4KCShjcHBfcmVhZGVyKTogQWRkICdwb3RlbnRpYWxfY29udHJvbF9tYWNybycgcG9pbnRlci4KCSogY3BwaGFzaC5oIChUX1VOVVNFRCk6IFJlcGxhY2Ugd2l0aCBUX0VNUFRZLgoJKENQUF9CVUZfR0VULCBDUFBfRk9SV0FSRCk6IERlbGV0ZS4KCShDUFBfSU5fQ09MVU1OXzEsIEFESkFDRU5UX1RPX01BUkspOiBOZXcgbWFjcm9zLgoJKENQUF9JU19NQUNST19CVUZGRVIsIENQUF9TRVRfQlVGX01BUkssIENQUF9HT1RPX0JVRl9NQVJLLAoJQUNUSVZFX01BUktfUCk6IFVwZGF0ZS4KCShfY3BwX2dldF9kZWZpbmVfdG9rZW4pOiBOZXcgaW50ZXJuYWwgZnVuY3Rpb24uCgkqIGNwcGZpbGVzLmMgKHJlYWRfaW5jbHVkZV9maWxlKTogRG9uJ3Qgc2V0IGZwLT5hbGltaXQgb3IgZnAtPmNvbG5vLgoKMjAwMC0wNC0wNSAgIEJlbmphbWluIEtvc25payAgPGJrb3pAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQW5kIGhlcmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYWNjb25maWcuaDogQWRkIEVOQUJMRV9TVERfTkFNRVNQQUNFIHRvIHNldCBmbGFnX2hvbm9yX3N0ZCBpZgoJLS1lbmFibGUtbGlic3RkY3h4LXYzIGlzIHBhc3NlZCBhdCBjb25maWd1cmUgdGltZS4KCSogY29uZmlnLmguaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZmluYWwuYyAoZmluYWwpOiBVc2UgeGNhbGxvYyB0byBhbGxvY2F0ZSBsaW5lX25vdGVfZXhpc3RzLgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogRnJlZSB0aGUgdGVtcF9zbG90cy4KCShhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IFVzZSB4bWFsbG9jIHRvIGFsbG9jYXRlIHRlbXBfc2xvdHMuCgkoY29tYmluZV90ZW1wX3Nsb3QpOiBGcmVlIHRlbXBfc2xvdHMgd2hlbiB0aGV5IGdldCBjb21iaW5lZC4KCShwdXJnZV9hZGRyZXNzb2YpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiBzdG10LmMgKG1hcmtfZ290b19maXh1cCk6IE1hcmsgdGhlIGZpeHVwIGl0c2VsZi4KCShleHBhbmRfZml4dXApOiBBbGxvY2F0ZSB0aGUgZml4dXAgd2l0aCBnZ2NfYWxsb2Nfb2JqLgoKCSogZ2djLmg6IEluY2x1ZGUgdmFycmF5LmguCgkoZ2djX3BlbmRpbmdfdHJlZXMpOiBEZWNsYXJlLgoJKGdnY19tYXJrX3RyZWVfY2hpbGRyZW4pOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZ2djX21hcmtfdHJlZSk6IEp1c3QgcHVzaCB1bm1hcmtlZCB0cmVlcyBvbiBnZ2NfcGVuZGluZ190cmVlcy4KCSogZ2djLWNvbW1vbi5jIChnZ2NfcGVuZGluZ190cmVlcyk6IE5ldyB2YXJpYWJsZS4KCShnZ2NfbWFya19yb290cyk6IENhbGwgZ2djX21hcmtfdHJlZXMuCgkoZ2djX21hcmtfdHJlZV9jaGlsZHJlbik6IFJlbmFtZSB0byBnZ2NfbWFya190cmVlcy4gIFByb2Nlc3MgYWxsCgl0aGUgZ2djX3BlbmRpbmdfdHJlZXMuCgkqIE1ha2VmaWxlLmluIChHR0NfSCk6IE5ldyB2YXJpYWJsZS4gIFVzZSBpdCB0aHJvdWdob3V0IGluIHBsYWNlCglvZiBnZ2MuaC4KClRodSBBcHIgIDYgMDA6MzA6NTAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBBY2NvbW1vZGF0ZSBhbiB1bnNpZ25lZAoJR0VUX01PREVfU0laRS4KCldlZCBBcHIgIDUgMjM6MTc6MTAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guYyAoc2hfaW5zbl9sZW5ndGhfYWRqdXN0bWVudCk6IE5ldyBmdW5jdGlvbi4KCSogc2gtcHJvdG9zLmggKHNoX2luc25fbGVuZ3RoX2FkanVzdG1lbnQpOiBEZWNsYXJlLgoJKiBzaC5oIChBREpVU1RfSU5TTl9MRU5HVEgpOiBVc2UgaXQuCgpXZWQgQXByICA1IDEyOjM1OjE4IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogb3B0YWJzLmMgKGVtaXRfbGliY2FsbF9ibG9jayk6IFJlbW92ZSBzcHVyaW91cyBSRUdfRVFVQUwgbm90ZXMKCWZyb20gdGhlIGluc24gd2hlcmUgUkVHX1JFVFZBTCBpcyBhZGRlZC4KCShlbWl0X25vX2NvbmZsaWN0X2Jsb2NrKTogRGl0dG8uCgoJKiBtZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IENsYXJpZnkgd2hlbiBtb3ZYIGlzIG5lZWRlZC4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbikgW01JTlVTXTogRG8gbm90IHJlcGxhY2UKCWFsbCAob3AgKG1pbnVzIEEgQikgMCkgd2l0aCAob3AgQSBCKS4KCldlZCBBcHIgIDUgMTg6MDM6MzEgMjAwMCAgVG9zaGl5YXN1IE1vcml0YSAgKHRvc2hpLm1vcml0YUBzZWdhLmNvbSkKCQkJICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5tZCAoYmxvY2tfbHVtcF9yZWFsX2k0KTogQWRkIG1pc3NpbmcgY2xvYmJlciBvZiBUX1JFRwoJKGJsb2NrX2x1bXBfcmVhbCk6IExpa2V3aXNlLgoKMjAwMC0wNC0wNSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQG5ldGJzZC5vcmc+CgoJKiBtaXBzLmggKE1BU0tfREVCVUdfQSwgTUFTS19ERUJVR19CLCBNQVNLX0RFQlVHX0MpOiBaZXJvIHRoZQoJcmVtYWluaW5nIG5vbi16ZXJvIGRlYnVnZ2luZyBtYXNrcy4KCldlZCBBcHIgIDUgMDk6NDQ6MDcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYmFzaWMtYmxvY2suaCAodmVyaWZ5X2Zsb3dfaW5mbyk6IERlY2xhcmUuCgkoZmxvd19sb29wX291dHNpZGVfZWRnZV9wKTogRGVjbGFyZS4KCSogZmxvdy5jICh2ZXJpZnlfZmxvd19pbmZvKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGNsZWFyX2xvZ19saW5rcywgZmxvd19sb29wX291dHNpZGVfZWRnZV9wKTogTGlrZXdpc2UuCgpXZWQgQXByICA1IDA5OjM0OjI2IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciA8cGhkbUBtYWNxZWwuYmU+CgoJKiBtNjhrL202OGstcHJvdG9zLmggKGZpbmFsaXplX3BpYyk6IFR1cm4gcHJvdG90eXBlIG9mZiB1c2luZyBgI2lmIDAnLAoJbm90IEMrKyBjb21tZW50cy4KCjIwMDAtMDQtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChzbmVkaV96ZXJvKzEsIG5lZ19zbmVkaV96ZXJvKzEsCglzbmVkaV96ZXJvX3RydW5jKzEsIHNlcWRpX3plcm8rMSwgbmVnX3NlcWRpX3plcm8rMSwKCXNlcWRpX3plcm9fdHJ1bmMrMSk6IEFsbG93IHNwbGl0cyBvbmx5IGlmIHJlZ2lzdGVycyBhcmUKCWRpZmZlcmVudC4KCjIwMDAtMDQtMDQgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogYWNjb25maWcuaDogQWRkIEhBVkVfR0FTX0hJRERFTi4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KCSogY29uZmlndXJlLmluOiBBZGQgdGVzdCBmb3IgLmhpZGRlbiBwc2V1ZG8tb3AgaW4gZ2FzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjcnRzdHVmZi5jOiBJbmNsdWRlIGF1dG8taG9zdC5oLgoJRW1pdCBhZGRpdGlvbmFsIC5oaWRkZW4gcHNldWRvLW9wIGZvciBfX2Rzb19oYW5kbGUgaWYgdGhlCglhc3NlbWJsZXIga25vd3MgYWJvdXQgaXQuCgoyMDAwLTA0LTA0ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGNwcGhhc2guYyAoX2NwcF9mcmVlX2RlZmluaXRpb24pOiBUZXN0IGFyZ25hbWVzLCBub3QgbmFyZ3MgPj0gMCwKCWJlZm9yZSBmcmVlaW5nIGFyZ25hbWVzLgoJKiBjcHBsaWIuYyAoZG9faWZuZGVmKTogQ2FzdCByZXR1cm4gdmFsdWUgb2YgeHN0cmR1cC4KCjIwMDAtMDQtMDUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IFBhdGNoIGZyb20gSm9uYXRoYW4KCVdhbHRvbiA8am9uYm95QGdvcmRpYW4uY29tPiB0byBtYWtlIG1lbW9yeSByZWZlcmVuY2VzIHdpdGggdXBkYXRlCgl3b3JrIHd0aWggLW1yZWduYW1lcy4KCjIwMDAtMDQtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlZ3JlbmFtZS5jIChyZWdub19maXJzdF91c2VfaW4pOiBXcmFwIHByb3RvdHlwZSBpbiBQQVJBTVMuCgkocmVncmVuYW1lX29wdGltaXplKTogUmVuYW1lIHZhcmlhYmxlcyBgZGVmX3VzZXMnIGFuZAoJYGV4dF9iYXNpY19ibG9ja3MnIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHNpbWlsYXJseSBuYW1lZAoJdHlwZWRlZnMgaW4gdHJhZGl0aW9uYWwgQy4KCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBGaXggdHlwbyBpbiBwcmV2aW91cwoJY2hhbmdlLgoKMjAwMC0wNC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChjb25zaWRlcl9hdmFpbGFibGUpOiBUZXN0IGZpeGVkX3JlZ3Mgbm90CglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTS4KCjIwMDAtMDQtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEFkZCBjcnRiZWdpbiwKCWNydGVuZC4KCShDUlRTVFVGRl9UX0NGTEFHU19TKTogRGVsZXRlIGRlZmluaXRpb24uCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1RBUlRGSUxFX0xJTlVYX1NQRUMpOiBBbHdheXMgdXNlIGNydGJlZ2luLgoJKEVOREZJTEVfTElOVVhfU1BFQyk6IEFsd2F5cyB1c2UgY3J0ZW5kLgoJKiBjb25maWd1cmUuaW4gKHBvd2VycGMtKi1saW51eC1nbnVsaWJjMSk6IERvbid0IGRlZmluZSBleHRyYV9wYXJ0cy4KCShwb3dlcnBjLSotbGludXgtZ251KTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaS5oOglEb24ndCBpbmNsdWRlIHN5c3Y0LmguCgkoTVVMVElMSUJfREVGQVVMVFMpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaWFpeC5oOiBEb24ndCBpbmNsdWRlIGVhYmkuaC4KCSogY29uZmlnL3JzNjAwMC9lYWJpbGUuaDogRGVsZXRlLgoJKiBjb25maWcvcnM2MDAwL2VhYmlsZXNpbS5oOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaXNpbS5oOiBEb24ndCBpbmNsdWRlIGVhYmkuaC4KCSogY29uZmlnL3JzNjAwMC9saW51eC5oOiBEb24ndCBpbmNsdWRlIHN5c3Y0LmguCgkoSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OKTogRG9uJ3QgcmVkZWZpbmUuCgkoTVVMVElMSUJfREVGQVVMVFMpOiBEb24ndCByZWRlZmluZS4KCSogY29uZmlnL3JzNjAwMC9ydGVtcy5oOiBEb24ndCBpbmNsdWRlIGVhYmkuaC4KCSogY29uZmlnL3JzNjAwMC9zb2wyLmg6IERvbid0IGluY2x1ZGUgc3lzdjRsZS5oLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0bGUuaDogRG9uJ3QgaW5jbHVkZSBzeXN2NC5oLgoJKiBjb25maWcvcnM2MDAwL3QtcHBjOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNnYXM6IENvcnJlY3QgY29tbWVudC4KCSogY29uZmlnL3JzNjAwMC90LXBwY29zOiBDb3JyZWN0IGNvbW1lbnQuICBEb24ndCBidWlsZAoJbXVsdGlsaWJzIGZvciAtZlBJQywgcmF0aGVyIHVzZSAtZlBJQyAtbXN0cmljdC1hbGlnbgoJYXMgZGVmYXVsdC4KCSogY29uZmlnL3JzNjAwMC90LXBwYzogRGVsZXRlLgoJKiBjb25maWcvcnM2MDAwL3Z4cHBjLmg6IERvbid0IGluY2x1ZGUgc3lzdjQuaC4KCSogY29uZmlnL3JzNjAwMC92eHBwY2xlLmg6IERlbGV0ZS4KCSogY29uZmlndXJlLmluOiBVc2UgbXVsdGlwbGUgaGVhZGVyIGZpbGVzIGZvciBwMnBjIEVMRiB0YXJnZXRzCglwb3dlcnBjLWVhYmlhaXgsIHBvd2VycGMtZWFiaXNpbSwgcG93ZXJwYy1ydGVtcywgcG93ZXJwY2xlLWVhYmksCglwb3dlcnBjbGUtZWFiaXNpbSwgcG93ZXJwYy1lbGYsIHBvd2VycGNsZS1lbGYsIHBvd2VycGMtbGludXgtZ251LAoJcG93ZXJwYy1saW51eC1nbnVsaWJjMSwgcG93ZXJwYy1zeXN2LCBwb3dlcnBjbGUtc3lzdiwKCXBvd2VycGMtdnh3b3JrcywgcG93ZXJwY2xlLXZ4d29ya3MuICBBc3N1bWUgR0FTIGZ1bmN0aW9uYWxpdHkgaXMKCWFsd2F5cyBhdmFpbGFibGUgZm9yIHRoZXNlIHBsYXRmb3Jtcy4KCjIwMDAtMDQtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jICh0cnlfdG9faW50ZWdyYXRlKTogSW5pdGlhbGl6ZSByZWdfcGFybV9zdGFja19zcGFjZS4KCjIwMDAtMDQtMDQgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBydWxlcyBmb3IgcmVncmVuYW1lLm8KCSogcmVncmVuYW1lLmM6IE5ldyBmaWxlLgoJKiBydGwuaCAocmVncmVuYW1lX29wdGltaXplKTogQWRkIHByb3RvdHlwZS4KCSogdG9wbGV2LmMgKHJlbmFtZV9yZWdpc3RlcnNfZHVtcCwgZmxhZ19yZW5hbWVfcmVnaXN0ZXJzKTogTmV3IHZhcmlhYmxlcwoJKGNvbXBpbGVfZmlsZSwgZGVjb2RlX2Rfb3B0aW9uKTogQWRkIHN1cHBvcnQgZm9yIC1mcmVuYW1lLXJlZ2lzdGVycy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCByZWdyZW5hbWVfb3B0aW1pemUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFSRF9SRUdOT19SRU5BTUVfT0ssIFJFTkFNRV9FWFRFTkRFRF9CTE9DS1MpOgoJTmV3IG1hY3Jvcy4KCjIwMDAtMDQtMDQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIE1ha2VmaWxlIChnY2NidWcpOiBOZXcgdGFyZ2V0LgoJKGRvYyk6IERlcGVuZCBvbiBpdC4KCSogZ2NjLnRleGkgKEJ1Z3MpOiBMaW5rIHN1Ym5vZGVzLgoJKGdjY2J1Zyk6IE5ldyBub2RlLgoJKiBnY2NidWcuaW4gKENBVEVHT1JJRVMpOiBSZW1vdmUgZ2MsIGhvc3QsIHByb2ZpbGluZywgbGliZ2NjLgoJRG9jdW1lbnQgc2V2ZXJpdGllcywgcHJpb3JpdGllcywgYW5kIGNsYXNzZXMgaW4gYnVnIGZvcm0uCgoyMDAwLTA0LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAodHJpZ3JhcGhfbWFwLCBzcGVjY2FzZSk6IENvbWJpbmUgaW50byBzaW5nbGUKCXRhYmxlLCBjaGFydGFiLgoJKE5PUk1BTCwgTk9OVFJJKTogTmV3IG1hY3Jvcy4KCShfY3BwX3JlYWRfYW5kX3ByZXNjYW4pOiBDaGFuZ2UgdG8gdXNlIHVuaWZpZWQgdGFibGUuICBVc2UKCWlzX2hzcGFjZSB0byB0ZXN0IGZvciB3aGl0ZXNwYWNlLgoKCSogZGJ4b3V0LmMgKENPTlRJTik6IElmIGl0IGRvZXNuJ3QgaGF2ZSB0byBkbyBhbnl0aGluZywgZ2l2ZSBpdCBhCglkZWZpbml0aW9uIHRoYXQgZG9lc24ndCBwcm92b2tlIHRoZSAiZW1wdHkgYm9keSBpbiBhbgoJaWYtc3RhdGVtZW50IiB3YXJuaW5nLgoKMjAwMC0wNC0wNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBGb3JjZSB0aGUgc291cmNlIHRvCgliZSBhIG1lbW9yeSBhZGRyZXNzLgoKMjAwMC0wNC0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwbGliLmMgKEQpOiBBZGp1c3QgdG8gY2FsbCBDT05DQVQyIG1hY3JvIHdpdGhvdXQgd2hpdGVzcGFjZS4KClR1ZSBBcHIgIDQgMTk6MTc6MjAgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChFQ0ZfTUFMTE9DLCBFQ0ZfTUFZX0JFX0FMTE9DQSwgRUNGX1JFVFVSTlNfVFdJQ0UsCgkgRUNGX0xPTkdKTVAsIEVDRl9GT1JLX09SX0VYRUMpOiAgTmV3IGNvbnN0YW50cy4KCShFQ0ZfSVNfQ09OU1QpOiBSZW5hbWUgdG8gRUNGX0NPTlNULgoJKHNwZWNpYWxfZnVuY3Rpb25fcCk6IE1ha2Ugc3RhdGljLCBjaGFuZ2UgaW50ZXJmYWNlLgoJKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlLCB0cnlfdG9faW50ZWdyYXRlKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoZXhwYW5kX2NhbGwpIC4uLiBoZXJlOyBjb252ZXJ0IG51bWJlciBvZiB2YXJpYWJsZXMgdG8gZmxhZ3MuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmx1ZV8xKTogTGlrZXdpc2UuCgkoc2V0am1wX2NhbGxfcCk6IE5ldyBmdW5jdGlvbi4KCShpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogQWNjZXB0cyBmbGFncyBhcyBhcmd1bWVudDsKCXJldHVybiBmbGFncy4KCShwcmVjb21wdXRlX2FyZ3VtZW50cyk6IExpa2V3aXNlLgoJKiB0cmVlLmggKHNwZWNpYWxfZnVuY3Rpb25fcCk6IFJlbW92ZS4KCShzZXRqbXBfY2FsbF9wKTogQWRkIHByb3RvdHlwZS4KCjIwMDAtMDQtMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFJUWF9PS19GT1JfT0ZGU0VUX1ApOiBMZWF2ZSBtaW5vciBtYXJnaW4KCXNvIHRoYXQgYWRkcmVzc2VzIGFyZSBvZmZzZXRhYmxlIGJ5IHVwIHRvIDE2IGJ5dGVzLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IERvbid0IGFsbG93IFJFRytSRUcgYWRkcmVzc2VzIGZvcgoJbm9uLW9wdGltaXppbmcgVEFSR0VUX0FSQ0gzMiBpbiBERiBvciBESSBtb2RlcyBiZWNhdXNlIGl0IGlzIG5vdAoJb2Zmc2V0YWJsZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobW92ZGlfaW5zbl9zcDY0X25vdmlzKTogTmV3IHBhdHRlcm4uCgkobW92ZGlfaW5zbl9zcDY0X3Zpcyk6IFJlbmFtZWQgZnJvbSBtb3ZkaV9pbnNuX3NwNjQuCgkobW92c2YpOiBEb24ndCBmb3JjZSBhbnkgY29uc3RhbnQgdG8gbWVtb3J5IGlmIHRhcmdldCBpcyBpbnRlZ2VyCgloYXJkIHJlZ2lzdGVyLgoJTW92ZSBmcF96ZXJvX29wZXJhbmQgY2hlY2sgYmVsb3cgdGhlIGNvbnN0MF9ydHggY2hlY2suCgkobW92dGYpOiBMaWtld2lzZS4gQWxzbyBhbGxvdyBmcF96ZXJvX29wZXJhbmQgZm9yIHN0b3JlcyBpbnRvCgltZW1vcnkuCgkobW92ZGYpOiBMaWtld2lzZS4gQWxzbyBhbGxvdyBmcF96ZXJvX29wZXJhbmQgZm9yIHN0b3JlcyBpbnRvCgltZW1vcnkgYW5kIGludG8gaW50ZWdlciBoYXJkIHJlZ2lzdGVycy4KCShjbGVhcl9kZiwgY2xlYXJfZGZwLCBtb3ZkZl9jb25zdF9pbnRyZWdfc3AzMiwKCW1vdmRmX2NvbnN0X2ludHJlZ19zcDY0KTogUmVtb3ZlLgoJKG1vdmRmX2luc25fc3AzMiwgbW92ZGZfbm9fZV9pbnNuX3NwMzIpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZAoJY29uZGl0aW9ucy4KCShtb3ZkZl9ub19lX2luc25fdjlfc3AzMik6IE5ldyBwYXR0ZXJuLgoJKG1vdmRmX2luc25fdjlvbmx5KTogUmVtb3ZlLgoJKG1vdmRmX2luc25fdjlvbmx5X25vdmlzLCBtb3ZkZl9pbnNuX3Y5b25seV92aXMpOiBOZXcgcGF0dGVybnMuCgkobW92ZGZfaW5zbl9zcDY0KTogUmVtb3ZlLgoJKG1vdmRmX2luc25fc3A2NF9ub3ZpcywgbW92ZGZfaW5zbl9zcDY0X3Zpcyk6IE5ldyBwYXR0ZXJucy4KCShtb3ZkZl9ub19lX2luc25fc3A2NCk6IEFsbG93IHN0b3JpbmcgMC4wIGludG8gbWVtb3J5LgoJKGZvbGxvd2luZyBzcGxpdHMpOiBSZXdyaXRlIGNvbmRpdGlvbnMuIEFkZCB0d28gbmV3IHNwbGl0cwoJZm9yIHN0b3JpbmcgMC4wIGludG8gbWVtb3J5IGFuZCByZWdpc3RlcnMuCgkoY2xlYXJfdGYsIGNsZWFyX3RmKzEsIGNsZWFyX3RmcCwgY2xlYXJfdGZwKzEpOiBSZW1vdmUuCgkobW92dGZfaW5zbl9zcDMyKTogUmVkbyBjb25zdHJhaW50cyBhbmQgY29uZGl0aW9ucy4KCShtb3Z0Zl9pbnNuX3Zpc19zcDMyKTogTmV3IHBhdHRlcm4uCgkobW92dGZfbm9fZV9pbnNuX3NwMzIpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZCBjb25kaXRpb25zLgoJKG1vdnRmX2luc25faHFfc3A2NCk6IExpa2V3aXNlLgoJKG1vdnRmX2luc25faHFfdmlzX3NwNjQpOiBOZXcgcGF0dGVybi4KCShtb3Z0Zl9pbnNuX3NwNjQpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZCBjb25kaXRpb25zLgoJKG1vdnRmX2luc25fdmlzX3NwNjQpOiBOZXcgcGF0dGVybi4KCShtb3Z0Zl9ub19lX2luc25fc3A2NCk6IFJlZG8gY29uc3RyYWludHMgYW5kIGNvbmRpdGlvbnMuCgkobW92dGZfbm9fZV9pbnNuX3NwNjQrMSk6IE5ldyBzcGxpdCBmb3Igc3RvcmluZyAwLjBMIGludG8gcmVnaXN0ZXJzCglvciBtZW1vcnkuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdmVycmlkZV9vcHRpb25zKTogQXNzdW1lIHY5IGlmIGVpdGhlcgoJLW12aXMgb3IgLW02NCB0byB0YWtlIGRvd24gdGhlIG51bWJlciBvZiB2YXJpb3VzIHJlbG9hZCBwYXR0ZXJucy4KClR1ZSBBcHIgIDQgMDA6NDE6NTMgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGEvcGEtNjQuaDogTmV3IGZpbGUuCgkqIHBhL3BhNjQtcmVncy5oOiBOZXcgZmlsZS4KCSogcGEvcGE2NC1zdGFydC5oOiBOZXcgZmlsZS4KCSogcGEvdC1wYTY0OiBOZXcgZmlsZS4KCSogcGEveG0tcGE2NGhwdXguaDogTmV3IGZpbGUuCgoyMDAwLTA0LTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzcGFyYy5jIChvdXRwdXRfcmVzdG9yZV9yZWdzKTogUHJvdG90eXBlLgoJKHNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcCk6IENvbnN0aWZpY2F0aW9uLgoKCSogZW1pdC1ydGwuYyAoY29uc3RfaW50X2h0YWJfaGFzaCwgY29uc3RfaW50X2h0YWJfZXEpOiBMaWtld2lzZS4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NzZV9kZWxldGVfbm9vcF9zZXQsIHJlbG9hZF9jc2Vfc2ltcGxpZnkpOgoJUHJvdG90eXBlLgoKCSogc2ltcGxpZnktcnR4LmMgKGVudHJ5X2FuZF9ydHhfZXF1YWxfcCk6IENvbnN0aWZpY2F0aW9uLgoJKGdldF92YWx1ZV9oYXNoLCBoYXNoX3J0eCk6IExpa2V3aXNlLgoKCSogc3NhLmMgKGNvbXB1dGVfY29uc2VydmF0aXZlX3JlZ19wYXJ0aXRpb24pOiBQcm90b3R5cGUuCgoJKiB0cmVlLmMgKG1hcmtfaGFzaF9lbnRyeSk6IFByb3RvdHlwZS4KCjIwMDAtMDQtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGJiLXJlb3JkZXIuYyAodmVyaWZ5X2luc25fY2hhaW4pOiAjaWZkZWYgb3V0IHVubGVzcyBFTkFCTEVfQ0hFQ0tJTkcuCgkqIGkzODYuaCAoRlVOQ1RJT05fQVJHX1JFR05PX1ApOiBSZW1vdmUgdW5uZWNlc3NhcnkgdGVzdCBmb3IgTiA+PSAwLgoJKiBpMzg2Lm1kIChjYWxsX3ZhbHVlLCBjYWxsX3ZhbHVlX3BvcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgJ2FkZHInLgoKCSogZ2NjLmMgKEMgc3BlY3MpOiBQYXNzIC1mbm8tc2hvdy1jb2x1bW4gdG8gdGhlIHByZXByb2Nlc3Nvci4KCSogb2JqYy9sYW5nLXNwZWNzLmg6IExpa2V3aXNlLgoKMjAwMC0wNC0wMyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogd3JhcCBsb25nIGxpbmVzLiAgTmV3IG1hY3JvcyBDUFBfSUNFLCBTWU5UQVhfRVJST1IKCWFuZCBTWU5UQVhfRVJST1IyLiBSZXBsYWNlIGAnIGluIG1lc3NhZ2VzIHdpdGggJycuCgkob3BfdG9fc3RyKTogTWFrZSByZS1lbnRyYW50LgoJKF9jcHBfcGFyc2VfZXhwcik6IEltcGxlbWVudCBuZXcgZXJyb3IgbWFjcm9zLiBVc2UgfCByYXRoZXIKCXRoYW4gfHwgdG8gbG9naWNhbGx5IG9yIDIgYm9vbGVhbiBpbnRlZ2Vycy4gIFNpbXBseSBleHByZXNzaW9uCgljaGVja2luZyB3ZSBoYXZlIGEgbGVmdCBvcGVyYW5kIGlmZiBuZWVkZWQuCgoyMDAwLTA0LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpYWdub3N0aWMubyk6IERlcGVuZCB1cG9uIGRpYWdub3N0aWMuYwoKMjAwMC0wNC0wMyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKFNVQlRBUkdFVF9FWFRSQV9MSU5LX1NQRUMpOiBGaXggdHlwb3MuCgoyMDAwLTA0LTAzICBGZWxpeCBMZWUgIDxmbGVlQGN5Z251cy5jb20+CgoJKiBmaXhpbmMvc2VydmVyLmMgKGZpbmRfc2hlbGwpOiBOZXcgZnVuY3Rpb24uICBBdm9pZCAkU0hFTEwuCgkocnVuX3NoZWxsKTogVXNlIGl0LgoKMjAwMC0wNC0wMyAgSm9uYXRoYW4gTGFybW91ciAgPGpsYXJtb3VyQHJlZGhhdC5jby51az4KCgkqIE1ha2VmaWxlLmluIChzdG1wLWludC1oZHJzKTogTWFrZSBpbmNsdWRlIHN1YmRpciBoZXJlLi4uCgkoc3RtcC1maXhwcm90byk6IC4uLnJhdGhlciB0aGFuIGhlcmUuCgpNb24gQXByICAzIDAwOjUwOjA2IDIwMDAgIEphc29uIEVja2hhcmR0IDxqbGVAY3lnbnVzLmNvbT4KCgkqIHBhLmMgKHByaW50X29wZXJhbmQpOiBDb21wdXRlICdiYXNlJyBvbmx5IGluc2lkZSB0aGUgY29kZSBwYXRocwoJdGhhdCB1c2UgaXQuCgoyMDAwLTA0LTAzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzdG9yLWxheW91dC5jIChieXRlX2Zyb21fcG9zKTogVXNlIFRSVU5DX0RJVl9FWFBSIHJhdGhlciB0aGFuCglDRUlMX0RJVl9FWFBSLgoKMjAwMC0wNC0wMyAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBpMzg2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSBib2d1cyBlbXB0eSBzdHJpbmdzLCBmaXggdHlwby4KCk1vbiBBcHIgIDMgMDA6MDI6NTkgMjAwMCAgQnJhZCBMdWNpZXIgPGx1Y2llckBtYXRoLnB1cmR1ZS5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYWxpYXMubyk6IERlcGVuZCBvbiAkKFRSRUVfSCkuCgoyMDAwLTA0LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmMgKGNwcF9zdGFydF9yZWFkKTogVHVybiBvZmYgLVd0cmFkaXRpb25hbCBpZgoJcHJvY2Vzc2luZyBDKysuCgkqIGNwcGxpYi5jIChfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBJbXByb3ZlIHdhcm5pbmdzIGZvcgoJdHJhZGl0aW9uYWwgQyBhbmQgaW5kZW50ZWQgZGlyZWN0aXZlcy4KCgkqIGVucXVpcmUuYywgZ3N5c2xpbWl0cy5oLCBsaW1pdHkuaCwgY29uZmlnL2NvbnZleC9maXhpbmMuY29udmV4LAoJZml4aW5jL2ZpeGluYy5pcml4LCBmaXhpbmMvZml4aW5jLnNjbywgZml4aW5jL2ZpeGluYy53cmFwLAoJZml4aW5jL2luY2xoYWNrLmRlZjogSW5kZW50IHRoZSAjIG9mICNpbmNsdWRlX25leHQgb25lIHNwYWNlLgoJKiBjcC9ydHRpLmM6IFVuLWluZGVudCAjaWYgYW5kICNlbmRpZi4KCgkqIGNwcGV4cC5jIChfY3BwX3BhcnNlX2V4cHIpOiBJZiBsZXggcmV0dXJucyAnIycsIGl0J3MgYQoJc3ludGF4IGVycm9yLCBidXQgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiBwcmludGVkLgoJKiBjcHBsZXguYyAoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBHaXZlIGEgbW9yZSBzcGVjaWZpYyBlcnJvcgoJbWVzc2FnZSB3aGVuIGNhbGxlZCB3aXRoIG5vdGhpbmcgcmVtYWluaW5nIG9uIHRoZSBsaW5lLgoJKF9jcHBfbGV4X3Rva2VuKTogSWYgX2NwcF9wYXJzZV9hc3NlcnRpb24gZmFpbHMsIHJldHVybiBhbgoJT1RIRVIgdG9rZW4sIG5vdCBhbiBBU1NFUlRJT04uCgkqIGNwcGxpYi5jIChkb19hc3NlcnQpOiBXaGVuIHdlIGNyZWF0ZSBhICdiYXNlJyBub2RlLCBjbGVhcgoJaXRzIGFzY2hhaW4gcG9pbnRlci4KCjIwMDAtMDQtMDIgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogIE5ldyB0eXBlZGVmIG9wX3QuICBzdHJ1Y3Qgb3BlcmF0aW9uIGFuZCBzdHJ1Y3QKCXRva2VuIHVwZGF0ZWQgdG8gdXNlIGl0LgoJKG9wX3RvX3N0cik6IE5ldyBmdW5jdGlvbi4KCShfY3BwX3BhcnNlX2V4cHIpOiBFcnJvciBtZXNzYWdlcyBtb2RpZmllZCB0byB1c2Ugb3BfdG9fc3RyLgoKMjAwMC0wNC0wMiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2Z1bmN0aW9uX2FyZyk6IENoZWNrIGZvciB2b2lkX3R5cGVfbm9kZQoJYmVmb3JlIGNoZWNraW5nIE1VU1RfUEFTU19JTl9TVEFDSy4KCjIwMDAtMDQtMDIgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogIE5ldyBGSU5JU0hFRCBkdW1teSB0b2tlbi4gIENvbWJpbmUgb3BlcmF0b3IgaW5pdGlhbAoJZmxhZ3MgYW5kIGluaXRpYWwgcHJpb3JpdHkgaW50byBhIHNpbmdsZSBjb25zdGFudC4gIE5ldwoJRVFVQUxJVFkgbWFjcm8uICBOZXcgb3BlcmF0b3IgZmxhZyBTSE9SVF9DSVJDVUlULgoJKF9wYXJzZV9jcHBfZXhwcik6IEltcGxlbWVudCBuZXcgY29uc3RhbnRzLiAgVGFrZSBsZWZ0IG9wZXJhbmQKCWNoZWNrcyBvdXQgb2YgcmVkdWN0aW9uIGxvb3AuICBIYW5kbGUgU0hPUlRfQ0lSQ1VJVC4gIEVuZCBvZgoJcGFyc2UgaW5kaWNhdGVkIGJ5IHJlZHVjaW5nIEZJTklTSEVEIHRva2VuLiAgUmVtb3ZlIG5ldyBsaW5lcwoJZnJvbSBjcHBfZXJyb3IgbWVzc2FnZXMuCgoyMDAwLTA0LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX3J0eF9DT05TVF9JTlQpOiBDcmVhdGUgY2FjaGVkIENPTlNUX0lOVHMgb24gdGhlCglwZXJtYW5lbnQgb2JzdGFjay4KCjIwMDAtMDQtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jOiBJbmNsdWRlIHN5bWNhdC5oLiAgQWRkICdvcmlnaW4nIGZpZWxkIHRvIHN0cnVjdAoJZGlyZWN0aXZlLiAgQWRkIG9yaWdpbiB2YWx1ZXMgdG8gRElSRUNUSVZFX1RBQkxFLiAgR2VuZXJhdGUKCXRoZSBzdHJpbmdzIGFuZCBmdW5jdGlvbiBuYW1lcyBvbiB0aGUgZmx5LiAgVGFrZSB0aGUgI3NjY3MKCWVudHJ5IG91dCBvZiB0aGUgdGFibGUgaWYgU0NDU19ESVJFQ1RJVkUgaXMgbm90IGRlZmluZWQuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogRGVjaWRlIGlmIHRoZSAjIHdhcyBhdCB0aGUgYmVnaW5uaW5nCglvZiB0aGUgbGluZSBoZXJlLiAgSXNzdWUgLXBlZGFudGljIHdhcm5pbmdzIGZvciBleHRlbmRlZAoJZGlyZWN0aXZlcyBoZXJlLiAgV2FybiBhYm91dCBLK1IgZGlyZWN0aXZlcyB3aXRoIHRoZSAjCglpbmRlbnRlZCwgYW5kIEM4OS9leHRlbmRlZCBkaXJlY3RpdmVzIHdpdGggdGhlICMgbm90IGluZGVudGVkLAoJaGVyZS4KCShkb19pbXBvcnQsIGRvX2luY2x1ZGVfbmV4dCwgZG9fd2FybmluZywgZG9faWRlbnQsIGRvX3NjY3MsCglkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogRG9uJ3QgaXNzdWUgcGVkYW50aWMgd2FybmluZyBoZXJlLgoKCSogY3BwaGFzaC5oOiBBZGQgQ1BQX1dUUkFESVRJT05BTCBtYWNyby4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbmFtZSB3YXJuX3N0cmluZ2lmeSB0bwoJd2Fybl90cmFkaXRpb25hbDsgdXBkYXRlIGNvbW1lbnRzLgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiBTZXQgd2Fybl90cmFkaXRpb25hbCBub3QKCXdhcm5fc3RyaW5naWZ5LgoJKiBjcHBoYXNoLmM6IFJlcGxhY2UgQ1BQX09QVElPTiAocGZpbGUsIHdhcm5fc3RyaW5naWZ5KSB3aXRoCglDUFBfV1RSQURJVElPTkFMIChwZmlsZSkuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IERvbid0IGRlY2lkZSBpZiBkaXJlY3RpdmVzIHNob3VsZAoJYmUgaWdub3JlZCBpbiAtdHJhZGl0aW9uYWwgbW9kZSBoZXJlLgoKCSogY3BwbGV4LmM6IENvcHkgSVNUQUJMRSBtYWNyb3MgZnJvbSBjcHBpbml0LmMsIGFuZCBhZGFwdCB0aGVtCgl0byBpbml0aWFsaXplIHNwZWNjYXNlW10gYW5kIHRyaWdyYXBoX21hcFtdLiAgRGVsZXRlIGFsbAoJcmVmZXJlbmNlcyB0byBwZmlsZS0+aW5wdXRfc3BlY2Nhc2UuICBBbHdheXMgdHJlYXQgJz8nIGFzIGEKCXNwZWNpYWwgY2hhcmFjdGVyLiAgUmVtb3ZlIHRhYmxlLWluaXRpYWxpemF0aW9uIGNvZGUgZnJvbQoJX2NwcF9pbml0X2lucHV0X2J1ZmZlci4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBpbnB1dF9zcGVjY2FzZSBmaWVsZC4KCSogY3BwaW5pdC5jIChjcHBfY2xlYW51cCk6IERvbid0IGZyZWUgaW5wdXRfc3BlY2Nhc2UuCgoyMDAwLTA0LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFU1RVRkYpOiBXaWxkY2FyZCBhbGwgZGVidWdnaW5nIGR1bXBzIGF0IG9uY2UuCgkobW9zdGx5Y2xlYW4pOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jIChydGxfZHVtcCwganVtcF9vcHRfZHVtcCwgZXRjKTogUmVtb3ZlLgoJKHN0cnVjdCBkdW1wX2ZpbGVfaW5mbywgZW51bSBkdW1wX2ZpbGVfaW5kZXgsIGR1bXBfZmlsZSk6IE5ldy4KCShvcGVuX2R1bXBfZmlsZSk6IFRha2UgYSBkdW1wX2ZpbGVfaW5kZXggbm90IGEgc3VmZml4LCBhbmQgYSBkZWNsCglub3QgYSBzdHJpbmcuICBDbGVhbiBvdXQgZmlsZSBpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvLiAgRG8gbm90aGluZwoJaWYgdGhlIGR1bXAgaXNuJ3QgZW5hYmxlZC4KCShjbG9zZV9kdW1wX2ZpbGUpOiBEbyBub3RoaW5nIGlmIHRoZSBkdW1wIGlzbid0IG9wZW4uICBEdW1wCglncmFwaCBkYXRhIGlmIHJlcXVlc3RlZC4KCShkdW1wX3J0bCwgY2xlYW5fZHVtcF9maWxlKTogUmVtb3ZlLgoJKGNvbXBpbGVfZmlsZSk6IERvbid0IGNsZWFuIHRoZSBkdW1wIGZpbGVzLiAgT25seSBmaW5hbGl6ZSAuYnAgZHVtcAoJaWYgZmxhZ190ZXN0X2NvdmVyYWdlIG9yIGZsYWdfYnJhbmNoX3Byb2JhYmlsaXRpZXMuICBPbmx5IGZpbmFsaXplCgkuY29tYmluZSBkdW1wIGlmIG9wdGltaXppbmcuICBJdGVyYXRlIG92ZXIgZHVtcF9maWxlIHRvIGZpbmFsaXplIHRoZQoJZ3JhcGggZHVtcHMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFVwZGF0ZSBmb3Igb3Blbl9kdW1wX2ZpbGUvY2xvc2VfZHVtcF9maWxlLgoJQ29udmVydCBhbGwgdXNlcyBvZiBkdW1wX3J0bC4KCShkZWNvZGVfZF9vcHRpb24pOiBJdGVyYXRlIG92ZXIgZHVtcF9maWxlIHRvIGltcGxlbWVudCAnYScgYW5kIHRvCglsb2NhdGUgcGFzcy1zcGVjaWZpYyBkdW1wcy4KCjIwMDAtMDQtMDEgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogUmVkZWZpbmUgcHJpb3JpdHkgY29uc3RhbnRzLgoJKF9jcHBfcGFyc2VfZXhwcik6IFJlcGxhY2UgbGVmdCBhbmQgcmlnaHQgcHJpb3JpdHkgc2NoZW1lIHdpdGgKCXNpbmdsZSBwcmlvcml0eSBsb2dpYy4gIE1vdmUgTE9HSUNBTCB0byBzYW1lIHBsYWNlIGFzIENPTVBBUkUuCglSZW1vdmUgYm9ndXMgY2hlY2sgZm9yIG11bHRpcGxlIHVuYXJ5ICsvLSBvcGVyYXRvcnMuCgoyMDAwLTA0LTAxICBOZWlsIEJvb3RoIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmM6IChfY3BwX3BhcnNlX2V4cHIpOiBOdW1lcmljYWwgY29uc3RhbnRzIGFyZSBwdXNoZWQKCXdpdGhpbiB0aGUgc3dpdGNoIHN0YXRlbWVudC4gIEJpbmFyeSBvcGVyYXRpb25zIGJyZWFrIG91dCBvZgoJdGhlIHN3aXRjaCBuYXR1cmFsbHkuICAnKCcgdG9rZW5zIGhhbmRsZWQgYnkgZm9yY2luZwoJaW1tZWRpYXRlIHNoaWZ0LiAgJyknIGhhbmRsZWQgYnkgZm9yY2luZyBpbW1lZGlhdGUgcmVkdWNlIHRvCgl0aGUgcHJldmlvdXMgJygnLiAgTmV3IGVycm9yIG1lc3NhZ2VzLgoKMjAwMC0wMy0zMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IERvbid0IHVzZSAlbCBmb3IgJ2xvdwoJcGFydCcsIGl0J3MgYWxyZWFkeSBpbiB1c2UuICBVc2UgJUsgaW5zdGVhZC4gIEFkZCBhIHJldHVybiBhdCB0aGUKCWVuZCBvZiB3aGF0IGlzIG5vdyAlSy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGVsZl9sb3cpOiBVc2UgJUsgaW5zdGVhZCBvZiAlbC4KClNhdCBBcHIgIDEgMDI6MDU6MjkgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBidWlsdGlucy5jICAoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiAgUGFzcyBwcm9wZXIgcGFyYW1ldGVycyB0bwoJYWxsb2NhdGVfZHluYW1pY19zdGFja19zcGFjZS4KCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiAgRG8gbm90IGFkanVzdCBzdGFjayBwb2ludGVyIGZvciBTSUIsCgl1cGRhdGUgc3RhY2tfcG9pbnRlcl9kZWx0YTsgZG8gbm90IHVwZGF0ZSBhcmdfc2l6ZV9zb19mYXIuCgkoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogVXNlIHN0YWNrX2RlbHRhIGluc3RlYWQgb2YKCXN0YWNrX3BvaW50ZXJfcGVuZGluZyBhbmQgYXJnX3NpemVfc29fZmFyLgoJKGV4cGFuZF9jYWxsKTogQWRkIHNhbml0eSBjaGVja2luZyBmb3Igc3RhY2tfcG9pbnRlcl9kZWx0YTsKCXNhdmUgYW5kIHJlc3RvcmUgc3RhY2tfcG9pbnRlcl9kZWx0YSBmb3IgU0lCLCB1c2UKCXN0YWNrX3BvaW50ZXJfZGVsdGEgZm9yIGFsaWdubWVudDsgZG8gbm90IHVwZGF0ZSBhcmdfc3BhY2Vfc29fZmFyLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogVXNlIHN0YWNrX3BvaW50ZXJfZGVsdGEgZm9yIGFsaWdubWVudC4KCShzdG9yZV9vbmVfYXJnKTogRG8gbm90IHVwZGF0ZSBhcmdfc3BhY2Vfc29fZmFyLgoJKiBleHBsb3cuYyAoYWRqdXN0X3N0YWNrLCBhbnRpX2FkanVzdF9zdGFjayk6IFVwZGF0ZQoJc3RhY2tfcG9pbnRlcl9kZWx0YS4KCShhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlKTogQWRkIHNhbml0eSBjaGVja2luZyBmb3IKCXN0YWNrX3BvaW50ZXJfZGVsdGEuCgkqIGV4cHIuYyAoaW5pdF9leHByLCBjbGVhcl9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IENsZWFyCglzdGFja19wb2ludGVyX2RlbHRhLgoJKGVtaXRfcHVzaF9pbnNuKTogVXBkYXRlIHN0YWNrX3BvaW50ZXJfZGVsdGEuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBleHByX3N0YXR1cyk6IEFkZCB4X3N0YWNrX3BvaW50ZXJfZGVsdGE7CglyZW1vdmUgeF9hcmdfc3BhY2Vfc29fZmFyLgoJKGFyZ19zcGFjZV9zb19mYXIpOiBSZW1vdmUuCgkoc3RhY2tfcG9pbnRlcl9kZWx0YSk6IE5ldyBtYWNyby4KCjIwMDAtMDMtMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oOiBNZXJnZSBzdHJ1Y3QgY3BwX29wdGlvbnMgaW50byBzdHJ1Y3QgY3BwX3JlYWRlci4KCVJlb3JkZXIgc3RydWN0IGNwcF9vcHRpb25zIGFuZCBzdHJ1Y3QgY3BwX3JlYWRlciBmb3IgYmV0dGVyCglwYWNraW5nLiAgUmVwbGFjZSBDUFBfT1BUSU9OUyBtYWNybyB3aXRoIENQUF9PUFRJT04gd2hpY2gKCXRha2VzIHR3byBhcmdzLiAgQ2hhbmdlIGFsbCAnY2hhcicgZmxhZ3MgdG8gJ3Vuc2lnbmVkIGNoYXInLgoJTW92ZSBzaG93X2NvbHVtbiBmbGFnIGludG8gc3RydWN0IGNwcF9vcHRpb25zLiAgRG9uJ3QKCXByb3RvdHlwZSBjcHBfb3B0aW9uc19pbml0LgoJKiBjcHBoYXNoLmgsIGNwcGVycm9yLmMsIGNwcGV4cC5jLCBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsCgljcHBpbml0LmMsIGNwcGxleC5jLCBjcHBsaWIuYzoKCVJlcGxhY2UgQ1BQX09QVElPTlMgKHBmaWxlKS0+d2hhdGV2ZXIgd2l0aAoJQ1BQX09QVElPTiAocGZpbGUsIHdoYXRldmVyKSwgYW5kIGxpa2V3aXNlIGZvcgoJb3B0cyA9IENQUF9PUFRJT05TIChwZmlsZSk7IC4uLiBvcHRzLT53aGF0ZXZlcjsKCgkqIGNwcGluaXQuYyAobWVyZ2VfaW5jbHVkZV9jaGFpbnMpOiBUYWtlIGEgY3BwX3JlYWRlciAqLgoJRXh0cmFjdCBDUFBfT1BUSU9OIChwZmlsZSwgcGVuZGluZykgYW5kIHdvcmsgd2l0aCB0aGF0CglkaXJlY3RseS4KCShjcHBfb3B0aW9uc19pbml0KTogRGVsZXRlLgoJKGNwcF9yZWFkZXJfaW5pdCk6IFR1cm4gb24gb24tYnktZGVmYXVsdCBvcHRpb25zIGhlcmUuCglBbGxvY2F0ZSB0aGUgcGVuZGluZyBzdHJ1Y3R1cmUgaGVyZS4KCShjbF9vcHRpb25zLCBlbnVtIG9wdF9jb2RlKTogRGVmaW5lIHRoZXNlIGZyb20gdGhlIHNhbWUgdGFibGUsCglrZXB0IGluIGEgbGFyZ2UgbWFjcm8uICBBZGQgLWZzaG93LWNvbHVtbiBhbmQgLWZuby1zaG93LWNvbHVtbgoJb3B0aW9ucy4KCgkqIGNwcGVycm9yLmMgKHZfbWVzc2FnZSk6IElmIHNob3dfY29sdW1uIGlzIG9mZiwgZG9uJ3QgcHJpbnQKCXRoZSBjb2x1bW4gbnVtYmVyLgoKCSogY3BwbWFpbi5jOiBVcGRhdGUgZm9yIG5ldyBpbnRlcmZhY2UuCgkqIGZpeC1oZWFkZXIuYzogTGlrZXdpc2UuCgoyMDAwLTAzLTMwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDMgKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpOiBBZGp1c3QgZm9yIG5ldwoJZGVmaW5pdGlvbi4KCSogTWFrZWZpbGUuaW4gKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpOiBJcyBub3cgdGhlIGZsYWdzIHRoYXQKCWFyZSBwYXNzZWQgdG8gYW55IGludm9jYXRpb24gb2YgQVJfRk9SX1RBUkdFVC4KCShBUl9DUkVBVEVfRk9SX1RBUkdFVCk6IE5ldyBtYWNyby4KCShBUl9FWFRSQUNUX0ZPUl9UQVJHRVQpOiBOZXcgbWFjcm8uCgkoT1JESU5BUllfRkxBR1NfVE9fUEFTUyk6IEFkZCBBUl9DUkVBVEVfRk9SX1RBUkdFVCwKCUFSX0VYVFJBQ1RfRk9SX1RBUkdFVC4KCShtYW55IHBsYWNlcyk6IFVzZSBBUl9DUkVBVEVfRk9SX1RBUkdFVCwgQVJfRVhUUkFDVF9GT1JfVEFSR0VUCglpbiBwbGFjZSBvZiBgJChBUl9GT1JfVEFSR0VUKSAkKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpJyBhbmQKCWAkKEFSX0ZPUl9UQVJHRVQpIHgnLiAgUGFzcyBBUl9DUkVBVEVfRk9SX1RBUkdFVCBhbmQKCUFSX0VYVFJBQ1RfRk9SX1RBUkdFVCB0byBzdWItbWFrZXMuCgoyMDAwLTAzLTMxICBOZWlsIEJvb3RoIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmM6IERlbGV0ZSBTS0lQX09QRVJBTkQuICBDb3JyZWN0IHByaW9yaXR5CglQQVJFTl9JTk5FUl9QUklPLgoJKF9jcHBfcGFyc2VfZXhwcik6IENoZWNrIGZvciBtdWx0aXBsZSB1bmFyeSArLy0gb3BlcmF0b3JzLgoJQ29ycmVjdCBwcmlvcml0aWVzIG9mICc6JyBhbmQgJz8nLiAgVHJlYXQgJyknIGFzIGhhdmluZyBhCgl2YWx1ZS4JRW5zdXJlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgbm90IHZvaWQuCgoyMDAwLTAzLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWxpYXMuYyAoY2Fub25fcnR4KTogTWFrZSBpdCBnbG9iYWwuCgkocnR4X2VxdWFsX2Zvcl9tZW1yZWZfcCk6IENPTlNUX0lOVCBlcXVhbGl0eSBpcyBub3cgcG9pbnRlcgoJZXF1YWxpdHkuCgkqIGNzZS5jIChzdHJ1Y3QgdGFibGVfZWx0KTogQWRkIGNhbm9uX2V4cC4KCShpbnNlcnQpOiBDbGVhciBpdC4KCShpbnZhbGlkYXRlKTogQ2Fub25pY2FsaXplIGV4cHJlc3Npb25zIG9ubHkgb25jZS4KCSogcnRsLmggKGNhbm9uX3J0eCk6IERlY2xhcmUuCgoyMDAwLTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGVtaXQtcnRsLm8pOiBEZXBlbmQgb24gSEFTSFRBQl9ILgoJKiBhbGlhcy5jIChyZWdfa25vd25fdmFsdWUpOiBBZGQgY29tbWVudHMuCgkoaW5pdF9hbGlhc19hbmFseXNpcyk6IExpa2V3aXNlLgoJKiBjc2UuYyAoZXhwX2VxdWl2X3ApOiBDT05TVF9JTlRzIGFyZSBlcXVhbCBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCglhZGRyZXNzLgoJKGNzZV9iYXNpY19ibG9jayk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIGVtaXQtcnRsLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGNvbnN0X2ludF9odGFiKTogTmV3IHZhcmlhYmxlLgoJKGNvbnN0X2ludF9odGFiX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoY29uc3RfaW50X2h0YWJfZXEpOiBMaWtld2lzZS4KCShydHhfaHRhYl9tYXJrXzEpOiBMaWtld2lzZS4KCShydHhfaHRhYl9tYXJrKTogTGlrZXdpc2UuCgkoZ2VuX3J0eF9DT05TVF9JTlQpOiBDYWNoZSBhbGwgQ09OU1RfSU5Ucy4KCSh1bnNoYXJlX2FsbF9ydHgpOiBGaXggZm9ybWF0dGluZy4KCShpbml0X2VtaXRfb25jZSk6IEluaXRpYWxpemUgY29uc3RfaW50X2h0YWIuCgkqIHJ0bC5jIChydHhfZXF1YWxfcCk6IENPTlNUX0lOVHMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUKCWFkZHJlc3MuCgkqIHJ0bC50ZXhpOiBEb2N1bWVudCB0aGUgZmFjdCB0aGF0IGFsbCBDT05TVF9JTlRzIHdpdGggdGhlIHNhbWUKCXZhbHVlIGFyZSBzaGFyZWQuCgoyMDAwLTAzLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuaCAoRlVOQ1RJT05fQk9VTkRBUlkpOiBSZWR1Y2UgdG8gMTI4IGJpdHMuCgoyMDAwLTAzLTMwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW46IENvbW1lbnQgb3V0IC0tZW5hYmxlLWMtY3BwbGliIHN0YW56YS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKVGh1IE1hciAzMCAwNjozMjo1MSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IFByb3Blcmx5IGNvbXB1dGUgZGlzcGxhY2VtZW50IGFuZAoJYWxpZ25tZW50IHdoZW4gb2Zmc2V0IGlzIHZhcmlhYmxlLgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgc3RvcmVfZml4ZWRfYml0X2ZpZWxkKTogRml4IG1vcmUKCWNhc2VzIG9mIGFsaWdubWVudCBpbiBieXRlcy4KClRodSBNYXIgMzAgMTM6MzA6NDAgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYy1wYXJzZS5pbiAoY2FzdF9leHByKTogTW92ZSBjaGFuZ2UgZnJvbSBNYXJjaCAyMSBpbnRvIGMtcGFyc2UuaW4KCXNpbmNlIGl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgYy1wYXJzZS55LgoJKiBvYmpjLXBhcnNlLmMsIG9iamMtcGFyc2UueTogUmVnZW5lcmF0ZWQuCgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogUGFzcyBhbGlnbm1lbnQgYXJndW1lbnQgdG8KCWVtaXRfYmxvY2tfbW92ZSBpbiBiaXRzLCBub3QgYnl0ZXMuCgpUaHUgTWFyIDMwIDA2OjMyOjUxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzX25pbnNucyk6IEZpeCBvbmUgbW9yZSBtaXNzaW5nIGFsaWduCgljb3JyZWN0aW9uLgoKCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IFNUUlVDVF9BTElHTiBpcyBpbiBiaXRzLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBQYXNzIGJpdCBhbGlnbm1lbnQgdG8gbWFya19yZWdfcG9pbnRlci4KCSogZXhwbG93LmMgKG1lbW9yeV9hZGRyZXNzLCBhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogTGlrZXdpc2UuCgkoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkoY2xlYXJfYnlfcGllY2VzKTogRml4IGVycm9yIGluIGxhc3QgY2hhbmdlLgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXQpOiBTZXQga25vd24gcmVnaXN0ZXJzIGFsaWdubWVudCBpbiBiaXRzLgoJKiBmdW5jdGlvbi5oIChyZWdub19wb2ludGVyX2FsaWduKTogTm93IHVuc2lnbmVkLgoJKiBjb25maWcvYXJtL2FybS5jIChhbGlnbmFibGVfbWVtb3J5X29wZXJhbmQpOiBSRUdOT19QT0lOVEVSX0FMSUdOCglpcyBpbiBiaXRzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGFsaWduZWRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAobWVtX21pbl9hbGlnbm1lbnQpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFsaWduZWRfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KCSh1bmFsaWduZWRfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KCShhbHBoYV9leHBhbmRfYmxvY2tfbW92ZSwgYWxwaGFfZXhwYW5kX2Jsb2NrX2NsZWFyKTogTGlrZXdpc2UuCglBbHNvIG1ha2UgYWxpZ25tZW50cyBhbmQgc2l6ZXMgdW5zaWduZWQgYW5kIHNvbWUgd2hpdGVzcGFjZSBjbGVhbnVwLgoJKGFscGhhX3ZhX3N0YXJ0KTogRG8gbm90aGluZyBpZiBWQUxJU1QncyB0eXBlIGlzIGVycm9yX21hcmtfbm9kZS4KCgkqIGJ1aWx0aW5zLmMgKGdldF9wb2ludGVyX2FsaWdubWVudCk6IFVzZSBob3N0X2ludGVnZXJwICYgdHJlZV9sb3dfY3N0LgoJKGV4cGFuZF9idWlsdGluX2FwcGx5KTogUGFzcyBhbGlnbm1lbnQgdG8gZW1pdF9ibG9ja19tb3ZlIGluIGJpdHMuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY3B5LCBleHBhbmRfYnVpbHRpbl92YV9jb3B5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWVtc2V0KTogTGlrZXdpc2UsIGJ1dCB0byBjbGVhcl9zdG9yYWdlLgoJKiBjYWxscy5jIChzYXZlX2ZpeGVkX2FyZ3VtZW50X2FyZWEpOiBMaWtld2lzZSwgdG8gbW92ZV9ieV9waWVjZXMuCgkocmVzdG9yZV9maXhlZF9hcmd1bWVudF9hcmVhKTogTGlrZXdpc2UuCgkoc3RvcmVfdW5hbGlnbmVkX2FyZ3VtZW50c19pbnRvX3BzZXVkb3MpOiBMaWtld2lzZSwgdG8gc3RvcmVfYml0X2ZpZWxkLgoJKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IExpa2V3aXNlLCB0byBlbWl0X2dyb3VwX2xvYWQuCgkoZXhwYW5kX2NhbGwpOiBMaWtld2lzZSwgdG8gZW1pdF9ncm91cF9zdG9yZSBhbmQgZW1pdF9ibG9ja19tb3ZlLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZSwgdG8gZW1pdF9ibG9ja19tb3ZlLgoJKHN0b3JlX29uZV9hcmcpOiBMaWtld2lzZSwgYW5kIHRvIGVtaXRfcHVzaF9pbnNuLgoJKiBleHBtZWQuYyAoZXh0cmFjdF9iaXRfZmllbGQpOiBBbGlnbm1lbnQgaXMgaW4gYml0cywgbm90IGJ5dGVzLgoJKGV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkLCBleHRyYWN0X3NwbGl0X2JpdF9maWVsZCk6IExpa2V3aXNlLgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzLCBtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBMaWtld2lzZS4KCShlbWl0X2Jsb2NrX21vdmUsIGVtaXRfZ3JvdXBfbG9hZCwgZW1pdF9ncm91cF9zdG9yZSk6IExpa2V3aXNlLgoJKGNsZWFyX2J5X3BpZWNlcywgY2xlYXJfc3RvcmFnZSwgZW1pdF9wdXNoX2luc24pOiBMaWtld2lzZS4KCShleHBhbmRfYXNzaWdtZW50LCBzdG9yZV9leHByLCBzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCk6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCwgZG9fanVtcCwgZG9fY29tcGFyZV9hbmRfanVtcCk6IExpa2V3aXNlLgoJKHN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCwgZ2V0X2lubmVyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdDsgc2l6ZXMgYW5kIHBvc2l0aW9ucyBIT1NUX1dJREVfSU5ULgoJKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBMaWtld2lzZS4KCShjb3B5X2Jsa21vZGVfZnJvbV9yZWdzKTogVXNlIFVOU0lHTkVEX0hPU1RfV0lERV9JTlQgZm9yIHNpemVzCglhbmQgcG9zaXRpb25zOyByZWluZGVudCBjb2RlLgoJKiBleHByLmggKGVtaXRfY21wX2luc24sIGVtaXRfY21wX2FuZF9qdW1wX2luc25zKTogQWxpZ25tZW50IHVuc2lnbmVkLgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IFBhc3MgYml0IGFsaWduIHRvIHN0b3JlX2JpdF9maWVsZC4KCShhc3NpZ25fcGFybXMpOiBMaWtld2lzZSB0byBlbWl0X2dyb3VwX3N0b3JlLgoJKiBvcHRhYnMuYyAocHJlcGFyZV9jbXBfaW5zbik6IEFsaWdubWVudCBpcyBpbiBiaXRzLgoJKGVtaXRfY21wX2FuZF9qdW1wX2luc25zLCBlbWl0X2NtcF9pbnNuKTogTGlrZXdpc2UsIGFuZCBhbHNvIHVuc2lnbmVkLgoJKiBzdG10LmMgKGV4cGFuZF92YWx1ZV9yZXR1cm4pOiBQYXNzIGFsaWduIGluIGJpdHMgdG8gZW1pdF9ncm91cF9sb2FkLgoJKGV4cGFuZF9yZXR1cm4pOiBMaWtld2lzZSB0byB7ZXh0cmFjdCxzdG9yZX1fYml0X2ZpZWxkLgoJKiBzdG9yLWxheW91dC5jIChnZXRfbW9kZV9hbGlnbm1lbnQpOiBNaW5vciBjbGVhbnVwLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBBbGlnbiBpcyBpbiBiaXRzLgoJKiBjb25maWcvc2gvc2guaCAoTU9WRV9CWV9QSUVDRVNfUCk6IExpa2V3aXNlLgoKMjAwMC0wMy0yOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmg6IFVuZG8gZWZmZWN0cyBvZiBwcmV2aW91cyBkZWx0YToKCShBU01fU1BFQyk6IERvIG5vdCBkZWZpbmUuCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRG8gbm90IGRlZmluZS4KCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmg6IChTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpIEZpeAoJdHlwby4KCjIwMDAtMDMtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBDYWxsIGluaXRpYWxpemVfZGVwZW5kZW5jeV9vdXRwdXQKCW9ubHkgYWZ0ZXIgcmVhZGluZyBpbiB0aGUgcHJpbWFyeSBzb3VyY2UgZmlsZS4KCjIwMDAtMDMtMjkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8KCV9fYnVpbHRpbl92YV9zdGFydCBhbmQgX19idWlsdGluX3ZhX2NvcHkgaXMgbm93IGVpdGhlciBhICd2YV9saXN0JwoJb3IgYSByZWZlcmVuY2UgdG8gYSB2YV9saXN0LgoJKiBidWlsdGlucy5jIChzdGFiaWxpemVfdmFfbGlzdCk6IFNpbXBsaWZ5IG5vdyB3ZSBkb24ndCBoYXZlIHRvCgl3b3JrIGFyb3VuZCBDIGFycmF5IGFkZHJlc3MgZGVjYXkuCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBIYW5kbGUgYXNzaWdubWVudCB0bwoJYSByZWZlcmVuY2UgcGFyYW1ldGVyIGJ5IHRha2luZyB0aGUgYWRkcmVzcyBvZiB0aGUgUkhTLgoJKiBnaW5jbHVkZS9zdGRhcmcuaCAodmFfc3RhcnQpOiBEb24ndCB0YWtlIGFkZHJlc3Mgb2YgZmlyc3QgcGFyYW1ldGVyLgoJKHZhX2NvcHkpOiBMaWtld2lzZS4KCShfX3ZhX2NvcHkpOiBMaWtld2lzZS4KCSogZ2luY2x1ZGUvdmFyYXJncy5oICh2YV9zdGFydCk6IExpa2V3aXNlLgoJKF9fdmFfY29weSk6IExpa2V3aXNlLgoKV2VkIE1hciAyOSAxNTo0NDo1MyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBpMzg2L2RqZ3BwLmg6IFJlbW92ZSBleHRyYW5lb3VzICIrIi4KCgkqIHN0bXQuYyAoc3RtdF9sb29wX25lc3RfZW1wdHkpOiBGaXggdGhpbmtvIGluIGxhc3QgY2hhbmdlLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBGaXggdHlwbyBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMDMtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogdHJlZS5jICh1bnNhdmVfZXhwcl8xKTogRG9uJ3QgbWVzcyB3aXRoIGEgVEFSR0VUX0VYUFIgdGhhdCBoYXNuJ3QKCWJlZW4gZXhwYW5kZWQuCgpXZWQgTWFyIDI5IDE1OjM5OjEwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChiaXRfZnJvbV9wb3MsIGJ5dGVfZnJvbV9wb3MpOiBOZXcgZnVuY3Rpb25zLgoJKHBvc19mcm9tX2J5dGUsIHBvc19mcm9tX2JpdCwgbm9ybWFsaXplX29mZnNldCk6IExpa2V3aXNlLgoJKG5vcm1hbGl6ZV9ybGksIHJsaV9zaXplX3NvX2ZhciwgcmxpX3NpemVfdW5pdF9zb19mYXIpOiBVc2UgdGhlbS4KCSogdHJlZS5jIChiaXRfcG9zaXRpb24sIGJ5dGVfcG9zaXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgoyMDAwLTAzLTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYzogTWlub3IgZm9ybWF0dGluZyBjaGFuZ2VzLwoJKiBjb25maWcvYXJtL2FybS5oIChTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBEZWZpbmUgaWYgbm90CglhbHJlYWR5IGRlZmluZWQuCgkoQVNNX1NQRUMpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCjIwMDAtMDMtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGNwcF9yZWFkX2ZpbGUpOiBEb24ndCBwYXNzIHplcm8tbGVuZ3RoIHN0cmluZyB0bwoJX2NwcF9jYWxjX2hhc2guCgoyMDAwLTAzLTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fZW51bWVyYXRpb25fdHlwZV9kaWUpOiBJZiBlbnVtIGhhcyBhIG5lZ2F0aXZlCgl2YWx1ZSwgZG9uJ3Qgb3V0cHV0IGl0IGFzIHVuc2lnbmVkLgoKV2VkIE1hciAyOSAxMDo1Mzo0OSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBzdG10LmMgKHN0bXRfbG9vcF9uZXN0X2VtcHR5KTogQWxsb3cgY2Z1bi0+c3RtdCB0byBiZSBOVUxMLgoKMjAwMC0wMy0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRG9uJ3Qgc3BlY2lhbCBjYXNlCgljcGx1c19tb2RlIHdoZW4gZGVjbGFyaW5nIGJ1aWx0aW4gYnplcm8vYmNtcCwgYWx3YXlzIGF2b2lkCglwcm90b3R5cGUgYXJndW1lbnRzLgoKMjAwMC0wMy0yOSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IEluaXRpYWxseSBzZXQgdGhlIHZhcmlhYmxlICJmaXhpbmNsdWRlcyIKCXRvIGEgbm9uLWZpbGUKCldlZCBNYXIgMjkgMTU6MDg6MDEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJQ29udmVydCBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgdG8gYW4gZXhwcmVzc2lvbi4KCSogY2FsbHMuYyAoUFVTSF9BUkdTX1JFVkVSU0VEKSBDaGFuZ2UgdG8gZXhwcmVzc2lvbi4KCShBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MsIFBVU0hfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdCB2YWx1ZS4KCShzdHJ1Y3QgYXJnX2RhdGEpOiBSZW1vdmUgI2lmZGVmIEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUy4KCShzYXZlX2ZpeGVkX2FyZ3VtZW50X2FyZWEsIHJlc3RvcmVfZml4ZWRfYXJndW1lbnRfYXJlYSk6Cgljb25kaXRpb25pemUgYnkgI2lmZGVmIFJFR19QQVJNX1NUQUNLX1NQQUNFIG9ubHkuCgkoZW1pdF9jYWxsKTogQ2hhbmdlICNpZmRlZnMgb24gQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTCgl0byBjb25kaXRpb25zLCBoYW5kbGUgUkVUVVJOX1BPUFNfQVJHUyBvbiBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MuCgkocHJlY29tcHV0ZV9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogQXZvaWQgI2lmZGVmcyBvbgoJQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTIGFuZCBQVVNIX0FSR1NfUkVWRVJTRUQuCgkoc3RpcmVfb25lX2FyZ3MpOiBMaWtld2lzZS4KCShleHBhbmRfY2FsbCk6IExpa2V3aXNlOyBjb25kaXRpb25pemUgUFVTSF9ST1VORElORyBjb2RlIGJ5IFBVU0hfQVJHUy4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogQWxpZ24gdG8gU1RBQ0tfQk9VTkRBUlkgb25seSBmb3IKCUFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUy4KCSogY29tYmluZS5jIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MsIFBVU0hfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdAoJdmFsdWUuCgkobm9uemVyb19iaXRzKTogQ29uZGl0aW9uaXplIFBVU0hfUk9VTkRJTkcgY29kZSBieSBVU0VfUFVTSC4KCSh1c2VfY3Jvc3Nlc19zZXRfcCk6IExpa2V3aXNlLgoJKiBhbGwgdGFyZ2V0cyAoQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTIGRlZmluZSk6IENoYW5nZSB0bwoJI2RlZmluZSBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgMS4KCSogaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IEhhbmRsZSBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MKCWZyYW1lcy4KCSogaTM4Ni5oIChNQVNLX05PX1BVU0hfQVJHUywgTUFTS19BQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpOiBOZXcKCWNvbnN0YW50cy4KCShUQVJHRVRfUFVTSF9BUkdTLCBUQVJHRVRfQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgcHVzaC1hcmdzLCBuby1wdXNoLWFyZ3MsCglhY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgYW5kIG5vLWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncy4KCShBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MsIFBVU0hfQVJHUyk6IE5ldyBtYWNyby4KCSogZXhwci5jIChBQ0NVTVVMQVRFX09VVEdPTkdfQVJHUywgUFVTSF9BUkdTKTogUHJvdmlkZSBkZWZhdWx0LgoJKHB1c2hfYmxvY2spOiBBdm9pZCBpZmRlZnMgb24gQUNDVU1VTEFURV9PVVRHT05HX0FSR1MKCWFuZCBQVVNIX1JPVU5ESU5HLgoJKGVtaXRfcHVzaF9pbnNuKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdC4KCShmaW5hbF9zY2FuX2luc24pOiBBdm9pZCBpZmRlZnMgb24gQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTLgoJKiBmdW5jdGlvbi5jIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpOiBQcm92aWRlIGRlZmF1bHQuCgkoU1RBQ0tfRFlOQU1JQ19PRkZTRVQpOiBEZWZpbmUgY29ycmVjdGx5IGZvciBib3RoCglBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgYW5kIG5vcm1hbCBtb2RlLgoJKiBpbnZva2UudGV4aSAoLW1wdXNoX2FyZ3MsIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzKTogRG9jdW1lbnQuCgkqIHRtLnRleGkgKFBVU0hfQVJHUyk6IERvY3VtZW50LgoJKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUywgUFVTSF9ST1VORElORyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKV2VkIE1hciAyOSAxMTo1MToxMyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZsYWdzLmggKGZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscyk6IERlY2xhcmUuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRmFpbCBzaWJjYWxsIHdoZW4KCSFmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMKCSogaW52b2tlLnRleGkgKGZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscyk6IERvY3VtZW50LgoJKiB0b3BsZXYuYyAoZmxhZ19vcHRpbWl6ZV9zaWJsaW5nX2NhbGxzKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShmX29wdGlvbnMpOiBBZGQgZmxhZ19vcHRpbWl6ZV9zaWJsaW5nX2NhbGxzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDb25kaXRpb25pemUKCW9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGxzIGJ5CglmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMuCgkobWFpbik6IFNldCBmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMgZm9yIC1PMi4KCSogc3RtdC5jIChleHBhbmRfcmV0dXJuKTogQ29uZGl0aW9uaXplIHRhaWwgcmVjdXJzaW9uIGJ5CglmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMuCgoyMDAwLTAzLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvYXR0LmggKExPQ0FMX0xBQkVMX1BSRUZJWCk6IERlZmluZS4KCShBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwsIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBVc2UgaXQuCgoyMDAwLTAzLTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0LmMgKGFkZF9laF90YWJsZV9lbnRyeSk6IE1hcmsgdHlwZV9pbmZvJ3MgYXMgcmVmZXJlbmNlZC4KCjIwMDAtMDMtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY29uZmlnL3JzNjAwMC9haXg0MS5oIChDUFBfU1BFQyk6IERlZmluZSBfQU5TSV9DX1NPVVJDRSBpZiAtYW5zaQoJaXMgZ2l2ZW4uCgkqIGNvbmZpZy9yczYwMDAvYWl4NDMuaCAoQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ1BQX1NQRUMpOiBNb3ZlZCB0by4uLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oOiB0aGVuIG1vZGlmaWVkIGxpa2V3aXNlLgoKMjAwMC0wMy0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bC5oOiBSZWRpc3RyaWJ1dGUgZW51bSByZWdfbm90ZSBkb2N1bWVudGF0aW9uLgoJS2lsbCB0cmFpbGluZyB3aGl0ZXNwYWNlLgoJKiBydGwuYyAocmVnX25vdGVfbmFtZSk6IEFkanVzdCB0byBtYXRjaCBlbnVtIHJlZ19ub3RlIHR3ZWVrcy4KCUtpbGwgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCjIwMDAtMDMtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGhhc2hfSUhBU0gpOiBKdXN0IHJldHVybiBpLT5oYXNoLgoJKGNwcF9pbmNsdWRlZCk6IFNldCBkdW1teS5oYXNoIHVzaW5nIF9jcHBfY2FsY19oYXNoLiAgVXNlCglodGFiX2ZpbmRfd2l0aF9oYXNoLgoJKGNwcF9yZWFkX2ZpbGUpOiBMaWtld2lzZS4KCShmaW5kX2luY2x1ZGVfZmlsZSk6IExpa2V3aXNlLiAgUHJvcGVybHkgaW5pdGlhbGl6ZQoJaWgtPm5zaG9ydC4gIFNoYXJlIGloLT5uYW1lIGFuZCBpaC0+bnNob3J0IGlmIHBvc3NpYmxlLgoJKiBjcHBoYXNoLmMgKF9jcHBfY2FsY19oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGhhc2hfSEFTSE5PREUpOiBKdXN0IHJldHVybiBoLT5oYXNoLgoJKF9jcHBfbG9va3VwKTogU2V0IGR1bW15Lmhhc2ggdXNpbmcgX2NwcF9jYWxjX2hhc2guICBVc2UKCWh0YWJfZmluZF93aXRoX2hhc2guCgkqIGNwcGhhc2guaDogUHJvdG90eXBlIF9jcHBfY2FsY19oYXNoLgoJKiBjcHBpbml0LmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBQcm92aWRlIGEgdmFsaWQgaGFzaAoJdG8gX2NwcF9tYWtlX2hhc2hub2RlLCB1c2luZyBfY3BwX2NhbGNfaGFzaC4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9leHBhbnNpb24pOiAjIGlzIG5vdCBhIHNwZWNpYWwgY2hhcmFjdGVyCglpbiBvYmplY3QtbGlrZSBtYWNyb3MuICBJbiAtdHJhZGl0aW9uYWwgbW9kZSwgLyoqLyBpcyBub3QKCXRva2VuIHBhc3RlIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIHRoZSBsaW5lLgoJKiBjcHBsaWIuYyAoZG9faW5jbHVkZSwgZG9faW1wb3J0LCBkb19pbmNsdWRlX25leHQpOiBJZgoJcGFyc2VfaW5jbHVkZSBmYWlscywgcmV0dXJuIGltbWVkaWF0ZWx5LgoKMjAwMC0wMy0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAocmV0dXJuIHBlZXBob2xlcyk6IFVwZGF0ZSB0byByZWZsZWN0IHRoZSBuZXcKCWNhbGwgaW5zbiBwYXR0ZXJucy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3ZvbGF0aWxlX2Z1bmMpOiBBbHNvIGNoZWNrCgljdXJyZW50X2Z1bmN0aW9uX25vdGhyb3cuCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbiwgb3V0cHV0X2Z1bmNfcHJvbG9ndWUpOiBVc2UgaXQuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSwgYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoKMjAwMC0wMy0yNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2NjLmMgKGhhbmRsZV9icmFjZXMpOiBJbiB7eCouLi59IGNhc2UsIGJyZWFrIG91dCBvZiBsb29wIGlmCglzd2l0Y2ggaXMgZm91bmQuCgpUdWUgTWFyIDI4IDExOjU1OjQ4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogU0laRSBub3cgc2lnbmVkLgoJRm9yIEVYUFJfU0laRSwgZG9uJ3QgZXZhbHVhdGUgc2l6ZTsganVzdCBuZWVkZWQgaWYgY29uc3RhbnQuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEZpeCBhIG51bWJlciBvZiBjYXNlcyB3aGVuIGZvbGRlZCB0cmVlIGlzCgl3cm9uZyB0eXBlLgoJKiBmdW5jdGlvbi5jIChmbHVzaF9hZGRyZXNzb2YpOiBSZWVuYWJsZS4KCSogdHJlZS5oIChmbHVzaF9hZGRyZXNzb2YpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGluZGVwZW5kZW50X2RlY29kZV9vcHRpb24pOiBMb29rIGF0IHN0cmluZ3NfcHJvY2Vzc2VkLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoTUlOSU1VTV9BVE9NSUNfQUxJR05NRU5UKTogQ2FzdCB0byB1bnNpZ25lZC4KClR1ZSBNYXIgMjggMDg6Mjk6NDYgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogc2liY2FsbC5jIChpZGVudGlmeV9jYWxsX3JldHVybl92YWx1ZSk6IEZpbmQgbGFzdCBjYWxsIGluIHRoZSBjaGFpbjsKCUFsbG93IHN0YWNrIGFkanVzdG1lbnQgYWZ0ZXIgZnVuY3Rpb24gY2FsbC4KCgkqIHJlZ21vdmUuYyAoc3RydWN0IGNzYV9tZW1saXN0KTogTWFrZSBtZW0gZmllbGQgcnR4ICouCgkocmVjb3JkX29uZV9zdGFja19yZWYpOiBBY2NlcHQgcnR4ICogaW5zdGVhZCBvZiBydHggYXMgcGFyYW1ldGVyLgoJKHRyeV9hcHBseV9zdGFja19hZGp1c3RtZW50KTogUmVwbGFjZSB3aG9sZSBNRU0gcnR4LgoJKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrKTogVXBkYXRlIGNhbGxzCgl0byByZWNvcmRfb25lX3N0YWNrX3JlZi4KCjIwMDAtMDMtMjggIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IE1hcmsgZW5kIG9mIGlucHV0IGJ1ZmZlciB3aXRoCgknXFwnIHJhdGhlciB0aGFuIGEgbnVsbCBjaGFyYWN0ZXIsIHNvIG51bGxzIGFyZSBub3Qgc3BlY2lhbC4gIEZpeAoJIlxcXG4iIGhhbmRsaW5nIGluIGVuZC1vZi1idWZmZXIgY29uZGl0aW9ucy4gIFVzZSB0cmlncmFwaCBtYXAgdG8KCXNwZWVkIHRyaWdyYXBoIGNvbnZlcnNpb24uCgkoX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IEluaXRpYWxpemUgdHJpZ3JhcGggbWFwLgoKMjAwMC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0XzM4N19iaW5hcnlfb3ApOiBDb3JyZWN0IGludGVsCgltb2RlIGFzc2VtYmx5IG91dHB1dCwgYW5kIGFkZCBzcGFjZXMgYWZ0ZXIgY29tbWFzIGluIEFUJlQKCW91dHB1dC4gIENvcnJlY3QgVW5peHdhcmUgYXNzZW1ibGVyIGNvbW1lbnQuICBEb2N1bWVudCBpbnB1dAoJY29uc3RyYWludHMuICBDb21tZW50IGZwIG9wZXJhdGlvbnMuICBSZWR1Y2UgcHJvZmxpZ2F0ZSBidWZmZXIKCXNpemUuICBSZW1vdmUgZXh0cmFuZW91cyBhYm9ydC4gIExvY2FsaXplIHRlbXAgdmFyLgoJKFNZU1YzODZfQ09NUEFUKTogRGVmaW5lLiAgQWRkICFTWVNWMzg2X0NPTVBBVCBjb2RlLgoJKG91dHB1dF9maXhfdHJ1bmMpOiBBZGQgc3BhY2VzIGFmdGVyIGNvbW1hcyBpbiBhc3NlbWJseSBvdXRwdXQuCgoyMDAwLTAzLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni1wcm90b3MuaCAoaXg4Nl9tYXRjaF9jY21vZGUpOiBEZWNsYXJlLgoJKiBpMzg2LmMgKGl4ODZfbWF0Y2hfY2Ntb2RlKTogTmV3LgoJKGl4ODZfZXhwYW5kX2ZwX2NvbXBhcmUpOiBVcGRhdGUgZm9yIHBhdHRlcm4gcmVuYW1lcy4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IExpa2V3aXNlLgoJKiBpMzg2LmggKEVYVFJBX0NDX01PREVTKTogQWRkIENDWi4KCShTRUxFQ1RfQ0NfTU9ERSk6IFVzZSBpdCBmb3IgRVEvTkUgemVyby4KCSogaTM4Ni5tZCAoY21wc2lfY2N6XzEpOiBOZXcuCgkoY21wcWlfY2N6XzEpOiBOZXcuCgkoKnRlc3RzaV9jY3pfMSk6IE5ldy4KCSh0ZXN0cWlfY2N6XzEpOiBOZXcuCgkoY21wc2lfY2Nub18xKTogUmVuYW1lIGZyb20gY21wc2lfMC4KCSh0ZXN0c2lfY2Nub18xKTogUmVuYW1lIGZyb20gdGVzdHNpXzEuCgkodGVzdHFpX2Njbm9fMSk6IFJlbmFtZSBmcm9tIHRlc3RxaV8xLgoJKCp0ZXN0cWlfZXh0X2Njel8wKTogUmVuYW1lIGZyb20gdGVzdHFpX2V4dF8wLgoJKHRlc3RxaV9leHRfY2Nub18wKTogUmVuYW1lIGZyb20gKnRlc3RxaV9leHRfMS4KCSgqY21waGlfMCk6IFVzZSBpeDg2X21hdGNoX2NjbW9kZS4KCSgqY21wcWlfZXh0XzIsICphZGRzaV8yLCAqYWRkaGlfMiwgKmFkZHFpXzIpOiBMaWtld2lzZS4KCSgqc3Vic2lfMiwgKnN1YmhpXzIsICpzdWJxaV8yLCAqdGVzdGhpXzEpOiBMaWtld2lzZS4KCSgqdGVzdHFpX2V4dF8xLCAqdGVzdHFpX2V4dF8yLCAqdGVzdHFpX2V4dF8zKTogTGlrZXdpc2UuCgkoKmFuZHNpXzIsICphbmRoaV8yLCAqYW5kcWlfMiwgKmFuZHFpX2V4dF8wX2NjKTogTGlrZXdpc2UuCgkoKmlvcnNpXzIsICppb3JoaV8yLCAqaW9ycWlfMik6IExpa2V3aXNlLgoJKCp4b3JzaV8yLCAqeG9yaGlfMiwgKnhvcnFpX2NjXzEpOiBMaWtld2lzZS4KCSgqb25lX2NtcGxzaTJfMiwgKm9uZV9jbXBsaGkyXzIsICpvbmVfY21wbHFpMl8yKTogTGlrZXdpc2UuCgkoKmFzaGxzaTNfY21wbm8sICphc2hsaGkzX2NtcG5vLCAqYXNobHFpM19jbXBubyk6IExpa2V3aXNlLgoJKCphc2hyc2kzX2NtcG5vLCAqYXNocmhpM19jbXBubywgKmFzaHJxaTNfY21wbm8pOiBMaWtld2lzZS4KCSgqbHNocnNpM19jbXBubywgKmxzaHJoaTNfY21wbm8sICpsc2hycWkzX2NtcG5vKTogTGlrZXdpc2UuCgkoYXBwcm9wcmlhdGUgcGVlcGhvbGVzKTogTGlrZXdpc2UuCgkoKmNtcGhpXzEsICpjbXBxaV9jY25vXzEsICpjbXBxaV8xKTogU3RhciBvdXQgbmFtZS4KCSgqc3Vic2lfMywgKnN1YmhpXzMsICpzdWJxaV8zKTogUmVtb3ZlLgoJKCpuZWdkaTJfMSsxIHNwbGl0dGVyKTogVXNlIENDWiBmb3IgbmVnIHBhdHRlcm5zLgoJKCpuZWdzaTJfY21wLCAqbmVnaGkyX2NtcCwgKm5lZ3FpMl9jbXApOiBSZW1vdmUuCgkoKm5lZ3NpMl9jbXB6KTogUmVuYW1lIGZyb20gKm5lZ3NpMl9jbXBubywgdXNlIENDWi4KCSgqbmVnaGkyX2NtcHosICpuZWdxaTJfY21weik6IFNpbWlsYXJseS4KCSh4ODZfc2hpZnRfYWRqXzEpOiBVc2UgQ0NaLgoJKCpkYnJhX2dlKzEsICpkYnJhX2dlKzIsIGZmc3NpMiwgZmZzc2lfMSk6IExpa2V3aXNlLgoKMjAwMC0wMy0yNyAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiByZXNvdXJjZS5oIChtYXJrX3Jlc291cmNlX3R5cGUpOiBOZXcuCgkqIHJlc291cmNlLmMgKGZpbmRfZGVhZF9vcl9zZXRfcmVnaXN0ZXJzLCBtYXJrX3RhcmdldF9saXZlX3JlZ3MsCglmaW5kX2ZyZWVfcmVnaXN0ZXIpOiBVc2UgbWFya19yZXNvdXJjZV90eXBlLgoJKG1hcmtfc2V0X3Jlc291cmNlcyk6IENoYW5nZSBpbmNsdWRlX2RlbGF5ZWRfZWZmZWN0cwoJdG8gbWFya19yZXNvdXJjZV90eXBlLgoJKiByZW9yZy5jIChzdGVhbF9kZWxheV9saXN0X2Zyb21fdGFyZ2V0LCB0cnlfbWVyZ2VfZGVsYXlfaW5zbnMsCglyZWR1bmRhbnRfaW5zbiwgZmlsbF9zaW1wbGVfZGVsYXlfc2xvdHMsIGZpbGxfc2xvdHNfZnJvbV90aHJlYWQpOgoJVXNlIG1hcmtfcmVzb3VyY2VfdHlwZS4KCjIwMDAtMDMtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2Lm1kIChjYWxsX3BvcF8wLCBjYWxsX3ZhbHVlX3BvcF8wKTogTmV3LgoJKGNhbGxfcG9wXzEpOiBSZW1vdmUgY29uc3RyYWludCBmcm9tIHVudXNlZCBhcmcuICBTdXBwb3J0IHNpYmNhbGxzLgoJKGNhbGxfdmFsdWVfcG9wXzEpOiBMaWtld2lzZS4KCShjYWxsXzAsIGNhbGxfdmFsdWVfMCk6IE5ldy4KCShjYWxsXzEsIGNhbGxfdmFsdWVfMSk6IFJlbW92ZSBjb25zdHJhaW50IGZyb20gdW51c2VkIGFyZy4KCjIwMDAtMDMtMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBpbnZva2UudGV4aSAoU3BlYyBGaWxlcyk6IERvY3VtZW50IG5ldyBzcGVjICUgY29tbWFuZCBjcmVhdGVkIGJ5CglUb20gVHJvbWV5J3MgcmVjZW50IHBhdGNoLgoKMjAwMC0wMy0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBsaWJnY2MyLmggKE1JTl9VTklUU19QRVJfV09SRCk6IERlZmluZSB0byBVTklUU19QRVJfV09SRAoJaWYgbm90IGRlZmluZWQuCgpNb24gTWFyIDI3IDA2OjA0OjIyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoJKiBsaWJnY2MyLmg6IFVzZSBNSU5fVU5JVFNfUEVSX1dPUkQsIG5vdCBVTklUU19QRVJfV09SRC4KClN1biBNYXIgMjYgMjA6MTU6MjYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogUmV0dXJuIGlmIG91dHB1dCBvciBpbnB1dCB0eXBlIGlzIEVSUk9SX01BUksuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBPbmx5IGxvb2sgYXQgREVDTF9CVUlMVF9JTl9OT05BTlNJCglhbmQgREVDTF9JTkxJTkUgaWYgRlVOQ1RJT05fREVDTC4KCShwdXNoZGVjbCwgcmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogTGlrZXdpc2UsIGZvciBERUNMX0lOTElORS4KCShzdG9yZV9wYXJtX2RlY2xzKTogQ2hlY2sgZm9yIHR5cGUgb2YgUEFSTV9ERUNMIGJlaW5nIEVSUk9SX01BUksuCglVc2UgREVDTF9XRUFLLCBub3QgREVDTF9SRVNVTFQsIHRvIGZsYWcgZm9yIGFscmVhZHkgc2Vlbi4KCShjb21iaW5lX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jIChnY2NfbWFya190cmVlX2NoaWxkcmVuLCBjYXNlICdkJyk6IFVzZSBERUNMX1JFU1VMVF9GTEQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IExpa2V3aXNlLgoJT25seSB0ZXN0IERFQ0xfUEFDS0VELCBERUNMX0lOTElORSwgREVDTF9CSVRfRklFTEQsIGFuZAoJREVDTF9UUkFOU1BBUkVOVF9VTklPTiBvbiBwcm9wZXIgZGVjbCB0eXBlcy4KCVByb3Blcmx5IGhhbmRseSBERUNMX0lOQ09NSU5HX1JUTCBhbmQgREVDTF9TQVZFRF9JTlNOUy4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBPbmx5IGNoZWNrIERFQ0xfUEFDS0VEIGFuZAoJREVDTF9CSVRfRklFTEQgb2YgRklFTERfREVDTC4KCSogdHJlZS5oIChERUNMX1JFU1VMVF9GTEQpOiBOZXcgbWFjcm8uCgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogQWRkIGNvZGUgdG8gaGFuZGxlIHZhcmlhYmxlLXNpemVkCglCTEttb2RlIGNhc2UuCgoyMDAwLTAzLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBQYXNzIHBhcm1zIG5vdCBvcmlnaW5hbCBleHAgdG8KCW9wdGltaXplX3RhaWxfcmVjdXJzaW9uLiAgTWluZCByZXR1cm4gdmFsdWUgaW5zdGVhZCBvZiBsb29raW5nCglmb3IgYSBiYXJyaWVyLgoJKiBzdG10LmMgKG9wdGltaXplX3RhaWxfcmVjdXJzaW9uKTogVGFrZSBwYXJhbWV0ZXIgbGlzdCwgbm90IGVudGlyZQoJY2FsbF9leHByLiAgTW92ZSBjaGVja3MgZm9yIGNhbGxfZXhwciBhbmQgY3VycmVudF9mdW5jdGlvbl9kZWNsIC4uLgoJKGV4cGFuZF9yZXR1cm4pOiAuLi4gaGVyZS4KCjIwMDAtMDMtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdjYy5jIChoYW5kbGVfYnJhY2VzKTogUmVjb2duaXplIGAlezxTfScgY29uc3RydWN0LgoJKFNXSVRDSF9PSywgU1dJVENIX0ZBTFNFLCBTV0lUQ0hfSUdOT1JFLCBTV0lUQ0hfTElWRSk6IE5ldwoJZGVmaW5lcy4KCShwcm9jZXNzX2NvbW1hbmQpOiBVc2UgdGhlbS4KCShjaGVja19saXZlX3N3aXRjaCk6IExpa2V3aXNlLgoJKGdpdmVfc3dpdGNoKTogU2tpcCBpZ25vcmVkIHN3aXRjaGVzLgoKMjAwMC0wMy0yNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBGaXggdHlwbyBpbiBlbGlkZSBvcHRpbWl6YXRpb25zCglmb3IgbWluaW1hbCBqdW1wIHBhc3MgdGVzdC4KCjIwMDAtMDMtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoZnVuY3Rpb25fY2Fubm90X2lubGluZV9wKTogRG8gaW5saW5lIGZ1bmN0aW9ucyB0aGF0CglyZXR1cm4gYHZvaWQnLgoKU3VuIE1hciAyNiAxMTozNzo1NSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUsIHNldF9zaXpldHlwZSk6IGVhcmx5X3R5cGVfbGlzdCBpcwoJbm93IGEgbGlzdCBvZiBUUkVFX0xJU1QgZW50cmllcywgbm90IHR5cGVzLgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBFbGltaW5hdGUgZHVwbGlhdGUgdHlwZSBzZXRzLgoKCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogRW5zdXJlIEJJVFNfUEVSX1dPUkQgaXMgc2lnbmVkIGluIE1BWC4KCSogY29uZmlnL2FybS9wZS5jIChhcm1fcGVfcmV0dXJuX2luX21lbW9yeSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZAoJaW50X2JpdF9wb3NpdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChmdW5jdGlvbl9hcmcpOiBMaWtld2lzZTsgYWxzbyByZW1vdmUgY2FzdAoJYW5kIG1ha2UgdmFyaWFibGVzIHVuc2lnbmVkIG9yIEhPU1RfV0lERV9JTlQgYW5kIHVzZSB0cmVlX2xvd19jc3QuCgkobWlwc19mdW5jdGlvbl92YWx1ZSk6IFVzZSBpbnRfYnl0ZV9wb3NpdGlvbiBhbmQgbWFrZSBIT1NUX1dJREVfSU5ULgoJKiBjb25maWcvbWlwcy9hYmk2NC5oIChTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogT2Zmc2V0cyBhcmUgdW5zaWduZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQklUU19QRVJfV09SRCwgVU5JVFNfUEVSX1dPUkQpOiBDYXN0IHRvIHVuc2lnbmVkLgoJKFVOSVRTX1BFUl9GUFJFRywgSU5UX1RZUEVfU0laRSwgTE9OR19UWVBFX1NJWkUpOiBMaWtld2lzZS4KCShQT0lOVEVSX1NJWkUsIFBPSU5URVJfQk9VTkRBUlksUEFSTV9CT1VOREFSWSk6IExpa2V3aXNlLgoJKEdQX1JFR19QLCBGUF9SRUdfUCwgTURfUkVHX1AsIFNUX1JFR19QKTogRW5zdXJlIHN1YnRyYWN0aW9uIHNpZ25lZC4KCShzdHJ1Y3QgbWlwc19hcmcpOiBhcmdfbnVtYmVyLCBhcmdfd29yZHMsIGZwX2FyZ193b3JkcywgYW5kCgludW1fYWRqdXN0cyBub3cgdW5zaWduZWQuCgkoRlVOQ1RJT05fQVJHX0JPVU5EQVJZKTogUmVtb3ZlIHVubmVlZGVkIGNhc3QuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzdHJ1Y3QgZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV9wYXJtcyk6CglOUkVHUyBub3cgdW5zaWduZWQuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogU1RBUlRCSVRQT1MgYXJnIG5vdyBIT1NUX1dJREVfSU5UCglhcyBpcyBCSVRQT1MgdmFyaWFibGU7IHVzZSBob3N0X2ludGVnZXJwIGFuZCBpbnRfYml0X3Bvc2l0aW9uLgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMik6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMyk6IEFyZyBCSVRQT1Mgbm93IEhPU1RfV0lERV9JTlQuCglWYXJpYWJsZSBSRUdOTyBub3cgdW5zaWduZWQuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZSk6IE5SRUdTIG5vdyB1bnNpZ25lZC4KCjIwMDAtMDMtMjYgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSoganVtcC5jIChtYXJrX2FsbF9sYWJlbHMpOiBIYW5kbGUgQ0FMTF9QTEFDRUhPTERFUnMuCgpTYXQgTWFyIDI1IDA5OjEyOjEwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBSZXdvcmsgZmllbGRzIHVzZWQgdG8gZGVzY3JpYmUgcG9zaXRpb25zIG9mIGJpdGZpZWxkcyBhbmQKCW1vZGlmeSBzaXplcyB0byBiZSB1bnNpZ25lZCBhbmQgdXNlIEhPU1RfV0lERV9JTlQuCgkqIGFsaWFzLmMgKHJlZ19rbm93bl92YWx1ZV9zaXplKTogTm93IHVuc2lnbmVkLgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCwgY2FzZSBBRERSX0VYUFIpOiBVc2UgYnl0ZV9wb3NpdGlvbi4KCShyZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCk6IFVzZSBiaXRzaXplX3plcm9fbm9kZS4KCShwdXNoX2luaXRfbGV2ZWwsIHBvcF9pbml0X2xldmVsLCBvdXRwdXRfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCglVc2UgYml0c2l6ZV91bml0X25vZGUgYW5kIGJpdHNpemVfb25lX25vZGUuCgkob3V0cHV0X3BlbmRpbmdfaW5pdF9lbGVtZW50cywgcHJvY2Vzc19pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCSogY29tYmluZS5jIChjb21iaW5lX21heF9yZWdubywgcmVnX3NpZ25fYml0X2NvcGllcyk6IE5vdyB1bnNpZ25lZC4KCShtYWtlX2V4dHJhY3Rpb24pOiBQb3NpdGlvbiBhbmQgbGVuZ3RoIEhPU1RfV0lERV9JTlQgYW5kIHVuc2lnbmVkCglIT1NUX1dJREVfSU5ULCByZXNwZWN0aXZlbHkuCgkoZ2V0X3Bvc19mcm9tX21hc2spOiBQYXNzZWQgaW4gdmFsdWUgaXMgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShudW1fc2lnbl9iaXRfY29waWVzKTogUmV0dXJucyB1bnNpZ25lZC4KCUJJVFdJRFRIIG5vdyB1bnNpZ25lZDsgcmV3b3JrIGFyaXRobWV0aWMuCglSZW1vdmUgcmVjdXJzaXZlIGNhbGwgZnJvbSBhcmcgdG8gTUFYLgoJKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zLCBpbml0X3JlZ19sYXN0X2FycmF5cyk6IE5SRUdTIG5vdyB1bnNpZ25lZC4KCShzZXR1cF9pbmNvbWluZ19wcm9tb3Rpb25zLCBjYW5fY29tYmluZV9wLCB0cnlfY29tYmluZSwgc2ltcGxpZnlfc2V0KToKCVJFR05PIG5vdyB1bnNpZ25lZC4KCShzZXRfbm9uemVyb19iaXRfYW5kX3NpZ25fY29waWVzKTogTlVNIG5vdyB1bnNpZ25lZC4KCShmaW5kX3NwbGl0X3BvaW50LCBleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uLCBtYWtlX2V4dHJhY3Rpb24pOiBMRU4KCW5vdyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULCBQT1Mgbm93IEhPU1RfV0lERV9JTlQuCgkobWFrZV9maWVsZF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBBZGQgY2FzdC4KCShleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uKTogTU9ERVdJRFRIIG5vdyB1bnNpZ25lZDsgcmV3b3JrIGFyaXRobWV0aWMuCgkoZm9yY2VfdG9fbW9kZSk6IFdJRFRIIG5vdyB1bnNpZ25lZDsgYWRkIGNhc3QuCgkoaWZfdGhlbl9lbHNlX2NvbmQpOiBTSVpFIG5vdyB1bnNpZ25lZC4KCShub256ZXJvX2JpdHMpOiBNT0RFX1dJRFRILCBSRVNVTFRfV0lEVEgsIGFuZCBXSURUSCBub3cgdW5zaWduZWQuCgkoZXh0ZW5kZWRfY291bnQpOiBOb3cgcmV0dXJucyB1bnNpZ25lZC4KCShzaW1wbGlmeV9zaGlmdF9jb25zdCk6IENPVU5UIHVuc2lnbmVkOyBhcmcgaXMgbm93IElOUFVUX0NPVU5ULgoJQWRkIFNJR05FRF9DT1VOVCB2YXJpYWJsZTsgTU9ERV9XT1JEUyBhbmQgRklSU1RfQ09VTlQgbm93IHVuc2lnbmVkLgoJKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBNT0RFX1dJRFRIIG5vdyB1bnNpZ25lZC4KCSh1cGRhdGVfdGFibGVfdGljayk6IFJFR05PIGFuZCBFTkRSRUdOTyBub3cgdW5zaWduZWQ7IG5ldyB2YXIgUi4KCShtYXJrX3VzZWRfcmVnc19jb21iaW5lKTogTGlrZXdpc2U7IHJld29yayBhcml0aG1ldGljLgoJKHJlY29yZF92YWx1ZV9mb3JfcmVnKTogUkVHTk8sIEVORFJFR05PLCBhbmQgSSBub3cgdW5zaWduZWQuCgkocmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzLCByZWdfZGVhZF9hdF9wLCBkaXN0cmlidXRlX25vdGVzKTogTGlrZXdpc2UuCgkocmVjb3JkX3Byb21vdGVkX3ZhbHVlKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKGdldF9sYXN0X3ZhbHVlX3ZhbGlkYXRlKTogUkVHTk8sIEVORFJFR05PLCBhbmQgSiBub3cgdW5zaWduZWQuCgkoZ2V0X2xhc3RfdmFsdWUpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkodXNlX2Nyb3NzZXNfc2V0X3ApOiBSRUdOTyBhbmQgRU5EUkVHTk8gbm93IHVuc2lnbmVkLgoJKHJlZ19kZWFkX3JlZ25vLCByZWdfZGVhZF9lbmRyZWdubyk6IE5vdyB1bnNpZ25lZC4KCShyZW1vdmVfZGVhdGgpOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKG1vdmVfZGVhdGhzKTogIFJFR05PLCBERUFEUkVHTk8sIERFQURFTkQsIE9VUkVORCwgYW5kIEkgbm93IHVuc2lnbmVkLgoJKHJlZ19iaXRmaWVsZF90YXJnZXRfcCk6IFJFR05PLCBSRUdOTywgRU5EUkVHTk8sIGFuZCBFTkRUUkVHTk8KCW5vdyB1bnNpZ25lZC4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBJTlBSRUMgYW5kIE9VVFBSRUMgbm93IHVuc2lnbmVkLgoJKiBjc2UuYyAoc3RydWN0IHF0eV90YWJsZV9lbGVtKTogRklSU1RfUkVHIGFuZCBMQVNUX1JFRyBub3cgdW5zaWduZWQuCgkoc3RydWN0IGNzZV9yZWdfaW5mbyk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShjYWNoZWRfcmVnbm8pOiBOb3cgdW5zaWduZWQuCgkoUkVHTk9fUVRZX1ZBTElEX1ApOiBBZGQgY2FzdC4KCShtYWtlX25ld19xdHksIG1ha2VfcmVnc19lcXYsIGRlbGV0ZV9yZWdfZXFpdik6IFJlZ25vIGFyZ3MgdW5zaWduZWQuCgkocmVtb3ZlX2ludmFsaWRfcmVncyk6IExpa2V3aXNlLgoJKHJlbW92ZV9pbnZhbGlkX3N1YnJlZ19yZWZzKTogTGlrZXdpc2U7IGFyZyBXT1JEIGFsc28gdW5zaWduZWQKCWFzIGFyZSB2YXJpYWJsZXMgRU5EIGFuZCBJLgoJKGdldF9jc2VfcmVnX2luZm8sIGluc2VydCk6IExpa2V3aXNlLgoJKG1lbnRpb25fcmVncywgaW52YWxpZGF0ZV9mb3JfY2FsbCk6IFJFR05PLCBFTkRSRUdOTywgYW5kIEkgdW5zaWduZWQuCgkoY2Fub25faGFzaCk6IExpa2V3aXNlLgoJKGluc2VydF9yZWdzLCBsb29rdXBfZm9yX3JlbW92ZSk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShpbnZhbGlkYXRlKTogUkVHTk8sIEVORFJFR05PLCBUUkVHTk8sIGFuZCBURU5EUkVHTk8gbm93IHVuc2lnbmVkLgoJTmV3IHZhcmlhYmxlIFJOLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3Bhcm1zLCBkYnhvdXRfcmVnX3Bhcm1zKTogRG9uJ3QgY2hlY2sgZm9yIFJFR05PIDwgMC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91X2ZyYW1lX2RlYnVnX2V4cHIpOiBSZW1vdmUgY2FzdC4KCSogZW1pdC1ydGwuYyAoc3VicmVnX3JlYWxwYXJ0X3ApOiBBZGQgY2FzdC4KCShvcGVyYW5kX3N1YndvcmQpOiBBcmcgSSBpcyBub3cgdW5zaWduZWQgYXMgaXMgdmFyIFBBUlRXT1JEUy4KCShvcGVyYW5kX3N1YndvcmRfZm9yY2UpOiBBcmcgSSBpcyBub3cgdW5zaWduZWQuCgkqIGV4Y2VwdC5jIChlaF9yZWdzKTogVmFyaWFibGUgSSBpcyBub3cgdW5zaWduZWQuCgkqIGV4cGxvdy5jIChoYXJkX2Z1bmN0aW9uX3ZhbHVlKTogQllURVMgaXMgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IFBvc2l0aW9uIGlzIEhPU1RfV0lERV9JTlQ7CglsZW5ndGggaXMgdW5zaWduZWQgSE9TVF9XSURFX0lOVDsgbGlrZXdpc2UgZm9yIGludGVybmFsIHZhcmlhYmxlcy4KCShzdG9yZV9zcGxpdF9iaXRfZmllbGQsIGV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9zcGxpdF9iaXRfZmllbGQsIHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOgoJTGlrZXdpc2UuCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3JfZmllbGRzLCBzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZmllbGQpOgoJUG9zaXRpb25zIGFyZSBIT1NUX1dJREVfSU5UIGFuZCBsZW5ndGhzIGFyZSB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKGV4cGFuZF9hc3NpZ25tZW50LCBleHBhbmRfZXhwciwgZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkoZG9fanVtcCk6IExpa2V3aXNlLgoJKG1vdmVfYnlfcGllY2VzLCBtb3ZlX2J5X3BpZWNlc19uaW5zbnMsIGNsZWFyX2J5X3BpZWNlcyk6CglNQVhfU0laRSBpcyBub3cgdW5zaWduZWQuCgkoZW1pdF9ncm91cF9sb2FkKTogQllURVBPUyBpcyBIT1NUX1dJREVfSU5UOyBCWVRFTEVOIGlzIHVuc2lnbmVkLgoJKGVtaXRfZ3JvdXBfc3RvcmUpOiBMaWtld2lzZS4KCShlbWl0X21vdmVfaW5zbik6IEkgbm93IHVuc2lnbmVkLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogVXNlIGhvc3RfaW50ZWdlcnAsIHRyZWVfbG93X2NzdCwgYW5kCgliaXRzaXplX3VuaXRfbm9kZS4KCShnZXRfaW5uZXJfcmVmZXJlbmNlKTogUmV0dXJuIGJpdHBvcyBhbmQgYml0c2l6ZSBhcyBIT1NUX1dJREVfSU5ULgoJUmV3b3JrIGFsbCBjYWxjdWxhdGlvbnMgdG8gdXNlIHRyZWVzIGFuZCBuZXcgZmllbGRzLgoJKiBleHByLmggKHByb21vdGVkX2lucHV0X2FyZyk6IFJlZ25vIG5vdyB1bnNpZ25lZC4KCShzdG9yZV9iaXRfZmllbGQsIGV4dHJhY3RfYml0X2ZpZWxkKTogQWRqdXN0IHR5cGVzIG9mIHBvcyBhbmQgc2l6ZS4KCShtYXJrX3NlZW5fY2FzZXMpOiBBcmcgaXMgSE9TVF9XSURFX0lOVC4KCSogZmxvdy5jICh2ZXJpZnlfd2lkZV9yZWdfMSk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCSogZm9sZC1jb25zdC5jIChkZWNvZGVfZmllbGRfcmVmZXJlbmNlKTogU2l6ZSBhbmQgcG9zIEhPU1RfV0lERV9JTlQ7CglwcmVjaXNpb25zIGFuZCBhbGlnbm1lbnRzIGFyZSB1bnNpZ25lZC4KCShvcHRpbWl6ZV9iaXRfZmllbGRfY29tcGFyZSwgZm9sZF90cnV0aG9wKTogTGlrZXdpc2UuCgkoaW50X2NvbnN0X2Jpbm9wKTogQWRqdXN0IHRocmVzaG9sZCBmb3Igc2l6ZV9pbnRfdHlwZV93aWRlIGNhbGwuCgkoZm9sZF9jb252ZXJ0KTogTGlrZXdpc2UuCgkoc2l6ZV9pbnRfdHlwZV93aWRlKTogTWFrZSB0YWJsZSBsYXJnZXIgYW5kIGZpeCB0aGlua28gdGhhdCBvbmx5CgloYWQgaGFsZiBvZiB0YWJsZSB1c2VkLgoJKGFsbF9vbmVzX21hc2tfcCwgZm9sZCk6IFByZWNpc2lvbnMgYXJlIHVuc2lnbmVkLgoJKiBmdW5jdGlvbi5jIChwdXRfcmVnX2luZm9fc3RhY2spOiBSRUdOTyBpcyB1bnNpZ25lZC4KCShpbnN0YW50aWF0ZV9kZWNsKTogU2l6ZSBpcyBIT1NUX1dJREVfSU5ULgoJKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IEkgaXMgdW5zaWduZWQuCgkoYXNzaWduX3Bhcm1zKTogUkVHTk8sIFJFR05PSSwgYW5kIFJFR05PUiBhcmUgdW5zaWduZWQuCgkocHJvbW90ZWRfaW5wdXRfYXJnKTogUkVHTk8gaXMgdW5zaWduZWQuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IHhfbWF4X3Bhcm1fcmVnIGlzIG5vdyB1bnNpZ25lZC4KCSogZ2NzZS5jIChtYXhfZ2NzZV9yZWdubyk6IE5vdyB1bnNpZ25lZC4KCShzdHJ1Y3QgbnVsbF9wb2ludGVyX2luZm8pOiBtaW5fcmVnIGFuZCBtYXhfcmVnIG5vdyB1bnNpZ25lZC4KCShsb29rdXBfc2V0LCBuZXh0X3NldCk6IFJFR05PIGFyZyBub3cgdW5zaWduZWQuCgkoY29tcHV0ZV9oYXNoX3RhYmxlKTogUkVHTk8gYW5kIEkgbm93IHVuc2lnbmVkLgoJKGhhbmRsZV9hdmFpbF9leHByKTogcmVnbnVtX2Zvcl9yZXBsYWNpbmcgbm93IHVuc2lnbmVkLgoJKGNwcm9wX2luc24pOiBSRUdOTyBub3cgdW5zaWduZWQuCgkoZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3NfMSk6IEJMT0NLX1JFRyBub3cgcG9pbnRlciB0byB1bnNpZ25lZC4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya190cmVlX2NoaWxkcmVuLCBjYXNlIEZJRUxEX0RFQ0wpOiBOZXcgY2FzZS4KCSogZ2xvYmFsLmMgKHNldF9wcmVmZXJlbmNlKTogU1JDX1JFR05PLCBERVNUX1JFR05PLCBhbmQgSSBub3cgdW5zaWduZWQuCgkqIGhhcmQtcmVnLXNldC5oIChyZWdfY2xhc3Nfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCSogaW50ZWdyYXRlLmMgKG1hcmtfc3RvcmVzKTogTEFTVF9SRUcgYW5kIEkgbm93IHVuc2lnbmVkOyBuZXcgVVJFR05PLgoJKiBqdW1wLmMgKG1hcmtfbW9kaWZpZWRfcmVnKTogSSBub3cgdW5zaWduZWQ7IGFkZCBjYXN0LgoJKHJ0eF9lcXVhbF9mb3JfdGhyZWFkX3ApOiBBZGQgY2FzdC4KCSogbG9vcC5jIChtYXhfcmVnX2JlZm9yZV9sb29wKTogTm93IHVuc2lnbmVkLgoJKHN0cnVjdF9tb3ZhYmxlKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKHRyeV9jb3B5X3Byb3ApOiBSRUdOTyBhcmcgdW5zaWduZWQuCgkocmVnc19tYXRjaF9wKTogWE4gYW5kIFlOIG5vdyB1bnNpZ25lZC4KCShjb25zZWNfc2V0c19pbnZhcmlhbnRfcCwgbWF5YmVfZWxpbWluYXRlX2Jpdik6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShzdHJlbmd0aF9yZWR1Y2UpOiBMaWtld2lzZTsgTlJFR1MgYWxzbyB1bnNpZ25lZC4KCShmaXJzdF9pbmNyZW1lbnRfZ2l2LCBsYXN0X2luY3JlbWVudF9naXYgdW5zaWduZWQpOiBOb3cgdW5zaWduZWQuCgkqIGxvb3AuaCAoc3RydWN0IGl2X2NsYXNzKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKG1heF9yZWdfYmVmb3JlX2xvb3AsIGZpcnN0X2luY3JlbWVudF9naXYsIGxhc3RfaW5jcmVtZW50X2dpdik6CglOb3cgdW5zaWduZWQuCgkqIG1hY2htb2RlLmggKG1vZGVfc2l6ZSwgbW9kZV91bml0X3NpemUpOiBOb3cgdW5zaWduZWQuCgkobW9kZV9mb3Jfc2l6ZSwgc21hbGxlc3RfbW9kZV9mb3Jfc2l6ZSk6IFBhc3Mgc2l6ZSBhcyB1bnNpZ25lZC4KCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCk6IEkgYW5kIE5XT1JEUyBub3cgdW5zaWduZWQuCgkoZXhwYW5kX3Vub3ApOiBJIG5vdyB1bnNpZ25lZC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRG9uJ3QgcHJpbnQgREVDTF9GSUVMRF9CSVRQT1MsIGJ1dCBkbwoJcHJpbnQgREVDTF9GSUVMRF9PRkZTRVQgYW5kIERFQ0xfRklFTERfQklUX09GRlNFVC4KCSogcmVhbC5jIChzaWduaWZpY2FuZF9zaXplKTogTm93IHJldHVybnMgdW5zaWduZWQuCgkqIHJlYWwuaCAoc2lnbmlmaWNhbmRfc2l6ZSk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWdfY2xhc3Nfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCShjaG9vc2VfaGFyZF9yZWdfbW9kZSk6IEJvdGggb3BlcmFuZHMgbm93IHVuc2lnbmVkLgoJKHJlY29yZF9yZWdfY2xhc3Nlcyk6IFJFR05PIGFuZCBOUiBub3cgdW5zaWduZWQuCgkocmVnX3NjYW4pOiBOUkVHUyBub3cgdW5zaWduZWQuCgkocmVnX3NjYW5fdXBkYXRlKTogb2xkX21heF9yZWdubyBub3cgdW5zaWduZWQuCgkocmVnX3NjYW5fbWFya19yZWZzKTogQXJnIE1JTl9SRUdOTyBhbmQgdmFyIFJFR05PIG5vdyB1bnNpZ25lZC4KCSogcmVsb2FkLmMgKGZpbmRfdmFsaWRfY2xhc3MpOiBCRVNUX1NJWkUgbm93IHVuc2lnbmVkLgoJKGZpbmRfZHVtbXlfcmVsb2FkKTogUkVHTk8sIE5XT1JEUywgYW5kCUkgbm93IHVuc2lnbmVkLgoJKGhhcmRfcmVnX3NldF9oZXJlX3ApOiBBcmdzIEJFR19SRUdOTyBhbmQgRU5EX1JFR05PIG5vdyB1bnNpZ25lZC4KCUxpa2V3aXNlIGZvciB2YXJpYWJsZSBSLgoJKHJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3ApOiBBcmdzIFJFR05PIGFuZCBFTkRfUkVHTk8gbm93IHVuc2lnbmVkLAoJYXMgYXJlIHZhcmlhYmxlcyBJTk5FUl9SRUdOTyBhbmQgSU5ORVJfRU5EUkVHTk87IGFkZCBuZXcgdmFyaWFibGUgUi4KCShmaW5kX2VxdWl2X3JlZyk6IEFkZCBjYXN0cy4KCShyZWdub19jbG9iYmVyZWRfcCk6IEFyZyBSRUdOTyBub3cgdW5zaWduZWQuCgkqIHJlbG9hZC5oIChzdHJ1Y3QgcmVsb2FkKTogTlJFR1Mgbm93IHVuc2lnbmVkLgoJKHJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3ApOiBSZWdubyBhcmdzIGFyZSB1bnNpZ25lZC4KCShyZWdub19jbG9iYmVyZWRfcCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlZ19tYXhfcmVmX3dpZHRoLCBzcGlsbF9zdGFja19zbG90X3dpZHRoKTogTm93IHVuc2lnbmVkLgoJKGNvbXB1dGVfdXNlX2J5X3BzZXVkb3MpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkoZmluZF9yZWcpOiBJIGFuZCBKIG5vdyB1bnNpZ25lZCwgbmV3IHZhcmlhYmxlIEssIGFuZCBjaGFuZ2UgbG9vcAoJdmFyaWFibGVzIGFjY29yZGluZ2x5OyBUSElTX05SRUdTIG5vdyB1bnNpZ25lZC4KCShhbHRlcl9yZWcpOiBJTkhFUkVOVF9TSVpFIGFuZCBUT1RBTF9TSVpFIG5vdyB1bnNpZ25lZC4KCShzcGlsbF9oYXJkX3JlZyk6IFJFR05PIGFyZyBub3cgdW5zaWduZWQ7IGFkZCBjYXN0cy4KCShmb3JnZXRfb2xkX3JlbG9hZHNfMSk6IFJFR05PLCBOUiwgYW5kIEkgbm93IHVuc2lnbmVkLgoJKG1hcmtfcmVsb2FkX3JlZ19pbl91c2UpOiBBcmcgUkVHTk8gYW5kIHZhcnMgTlJFR1MgYW5kIEkgbm93IHVuc2lnbmVkLgoJKGNsZWFyX3JlbG9hZF9yZWdfaW5fdXNlKTogQXJnIFJFR05PIGFuZCB2YXJzIE5SRUdTLCBTVEFSVF9SRUdOTywKCUVORF9SRUdOTywgQ09ORkxJQ1RfU1RBUlQsIGFuZCBDT05GTElDVF9FTkQgbm93IHVuc2lnbmVkLgoJKHJlbG9hZF9yZWdfZnJlZV9wLCByZWxvYWRfcmVnX3JlYWNoZXNfZW5kX3ApOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKGNob29zZV9yZWxvYWRfcmVncyk6IE1BWF9HUk9VUF9TSVpFIG5vdyB1bnNpZ25lZC4KCShlbWl0X3JlbG9hZF9pbnNucyk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShyZWxvYWRfY3NlX21vdmUyYWRkKTogQWRkIGNhc3QuCgkobW92ZTJhZGRfbm90ZV9zdG9yZSk6IFJFR05PIGFuZCBJIG5vdyB1bnNpZ25lZDsgbmV3IHZhcmlhYmxlIEVORFJFR05PCglhbmQgcmV3b3JrIGxvb3AuCgkqIHJlc291cmNlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMsIG1hcmtfc2V0X3Jlc291cmNlcyk6IE5ldwoJdmFyaWFibGUgUjsgUkVHTk8gYW5kIExBU1RfUkVHTk8gbm93IHVuc2lnbmVkLgoJKG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IEogYW5kIFJFR05PIG5vdyB1bnNpZ25lZC4KCSogcnRsLmMgKG1vZGVfc2l6ZSwgbW9kZV91bml0X3NpemUpOiBOb3cgdW5zaWduZWQuCgkqIHJ0bC5oICh1bmlvbiBydHVuaW9uX2RlZik6IE5ldyBmaWVsZCBydHVpbnQuCgkoWENVSU5UKTogTmV3IG1hY3JvLgoJKEFERFJFU1NPRl9SRUdOTywgUkVHTk8sIFNVQlJFR19XT1JEKTogTmV3IFhDVUlOVC4KCShvcGVyYW5kX3N1YndvcmQsIG9wZXJhbmRfc3Vid29yZF9mb3JjZSk6IFdvcmQgbnVtYmVyIGlzIHVuc2lnbmVkLgoJKGNob29zZV9oYXJkX3JlZ19tb2RlKTogT3BlcmFuZHMgYXJlIHVuc2lnbmVkLgoJKHJlZmVyc190by1yZWdub19wLCBkZWFkX29yX3NldF9yZWdub19wKTogUmVnbm8gYXJnIGlzIHVuc2lnbmVkLgoJKGZpbmRfcmVnbm9fbm90ZSwgZmluZF9yZWdub19mdXNhZ2UsIHJlcGxhY2VfcmVncyk6IExpa2V3aXNlLgoJKHJlZ25vX3VzZV9pbiwgY29tYmluZV9pbnN0cnVjdGlvbnMsIHJlbW92ZV9kZWF0aCk6IExpa2V3aXNlLgoJKHJlZ19zY2FuLCByZWdfc2Nhbl91cGRhdGUpOiBMaWtld2lzZS4KCShleHRlbmRlZF9jb3VudCk6IFJldHVybiBpcyB1bnNpZ25lZC4KCSogcnRsYW5hbC5jIChyZWZlcnNfdG9fcmVnbm9fcCk6IEFyZ3MgUkVHTk8gYW5kIEVORFJFR05PIGFuZCB2YXJzIEksCglJTk5FUl9SRUdOTywgYW5kIElOTkVSX0VORFJFR05PIG5vdyB1bnNpZ25lZDsgbmV3IHZhcmlhYmxlIFhfUkVHTk8uCgkocmVnX292ZXJsYXBfbWVudGlvbmVkX3ApOiBSRUdOTyBhbmQgRU5EUkVHTk8gbm93IHVuc2lnbmVkLgoJKHJlZ19zZXRfbGFzdF9maXJzdF9yZWdubywgcmVnX3NldF9sYXN0X2xhc3RfcmVnbm8pOiBOb3cgdW5zaWduZWQuCgkocmVnX3JlZ19sYXN0XzEpOiBGSVJTIGFuZCBMQVNUIG5vdyB1bnNpZ25lZC4KCShkZWFkX29yX3NldF9wKTogUkVHTk8sIExBU1RfUkVHTk8sIGFuZCBJIG5vdyB1bnNpZ25lZC4KCShkZWFkX29yX3NldF9yZWdub19wKTogQXJnIFRFU1RfUkVHTk8gYW5kIHZhcnMgUkVHTk8gYW5kIEVORFJFR05PCglub3cgdW5zaWduZWQuCgkoZmluZF9yZWdub19ub3RlLCByZWdub191c2VfaW4pOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKGZpbmRfcmVnbm9fZnVzYWdlKTogTGlrZXdpc2U7IGFsc28gdmFyIFJFR05PVEUgbm93IHVuc2lnbmVkLgoJKGZpbmRfcmVnX2Z1c2FnZSk6IFZhcmlhYmxlcyBSRUdOTywgRU5EX1JFR05PLCBhbmQgSSBub3cgdW5zaWduZWQuCgkocmVwbGFjZV9yZWdzKTogQXJnIE5SRUdTIG5vdyB1bnNpZ25lZC4KCSogc2Rib3V0LmMgKHNkYm91dF9wYXJtcywgc2Rib3V0X3JlZ19wYXJtcyk6IERvbid0IGNoZWNrIFJFR05PIDwgMC4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IFdJRFRIIG5vdyB1bnNpZ25lZC4KCShzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkoY3NlbGliX2ludmFsaWRhdGVfcmVnbm8pOiBBcmcgUkVHTk8gYW5kIHZhcmlhYmxlcyBFTkRSRUdOTywgSSwgYW5kCglUSElTX0xBU1Qgbm93IHVuc2lnbmVkLgoJKGNzZWxpYl9yZWNvcmRfc2V0KTogQWRkIGNhc3QuCgkqIHNzYS5jIChzc2FfbWF4X3JlZ19udW0pOiBOb3cgdW5zaWduZWQuCgkocmVuYW1lX2Jsb2NrKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBCaXQgcG9zaXRpb25zIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQ7CglzaXplcyBub3cgdW5zaWduZWQuCgkoYWxsX2Nhc2VzX2NvdW50KTogSnVzdCByZXR1cm4gLTEgbm90IC0yLgoJQ09VTlQsIE1JTlZBTCwgYW5kIExBU1RWQUwgbm93IEhPU1RfV0lERV9JTlQuCglSZXdvcmsgdGVzdHMgdG8gdXNlIHRyZWVzIHdoZW5ldmVyIHBvc3NpYmxlLgoJVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShtYXJrX3NlZW5fY2FzZXMpOiBDT1VOVCBhcmcgbm93IEhPU1RfV0lERV9JTlQ7CglMaWtld2lzZSB2YXJpYWJsZSBORVhUX05PREVfT0ZGU0VUOyBYTE8gbm93IHVuc2lnbmVkLgoJKGNoZWNrX2Zvcl9mdWxsX2VudW1lcmF0aW9uX2hhbmRpbmcpOiBCWVRFU19ORUVERUQsIEkgdG8gSE9TVF9XSURFX0lOVC4KCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZSk6IFNJWkUgYXJnIG5vdyB1bnNpZ25lZC4KCShzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogTGlrZXdpc2UuCgkobGF5b3V0X2RlY2wpOiBTaW1wbGlmeSBoYW5kaW5nIG9mIGEgc3BlY2lmaWVkIERFQ0xfU0laRV9VTklULgoJS05PV05fQUxJR04gaXMgbm93IGFuIGFsaWdubWVudCwgc28gc2ltcGxpZnkgY29kZS4KCURvbid0IHR1cm4gb2ZmIERFQ0xfQklUX0ZJRUxEIGlmIGZpZWxkIGlzIEJMS21vZGUsIGJ1dCBub3QgdHlwZS4KCShzdGFydF9yZWNvcmRfbGF5b3V0KTogUmVuYW1lZCBmcm9tIG5ld19yZWNvcmRfbGF5b3V0X2luZm8uCglVcGRhdGUgdG8gbmV3IGZpZWxkcy4KCShkZWJ1Z19ybGksIG5vcm1hbGl6ZV9ybGksIHJsaV9zaXplX3VuaXRfc29fZmFyLCBybGlfc2l6ZV9zb19mYXIpOgoJTmV3IGZ1bmN0aW9ucy4KCShwbGFjZV91bmlvbl9maWVsZCk6IFJlbmFtZWQgZnJvbSBsYXlvdXRfdW5pb25fZmllbGQuCglVcGRhdGUgdG8gdXNlIG5ldyBmaWVsZHMgaW4gcmxpLgoJKHBsYWNlX2ZpZWxkKTogUmVuYW1lZCBmcm9tIGxheW91dF9maWVsZC4KCU1ham9yIHJld3JpdGUgdG8gdXNlIG5ldyBmaWVsZHMgaW4gcmxpOyBwYXNzIGFsaWdubWVudCB0byBsYXlvdXRfZGVjbC4KCShmaW5hbGl6ZV9yZWNvcmRfc2l6ZSk6IFJld29yayB0byB1c2UgbmV3IGZpZWxkcyBpbiBybGkgYW5kIGhhbmRsZQoJdW5pb24uCgkoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IFJld29yayB0byBzaW1wbGlmeSBhbmQgdG8gdXNlIG5ldyBERUNMIGZpZWxkcy4KCShmaW5hbGl6ZV90eXBlX3NpemUpOiBNYWtlIHJvdW5kaW5nIG1vcmUgY29uc2lzdGVudC4KCShmaW5pc2hfdW5pb25fbGF5b3V0KTogRGVsZXRlZC4KCShsYXlvdXRfdHlwZSwgY2FzZSBWT0lEX1RZUEUpOiBEb24ndCBzZXQgVFlQRV9TSVpFX1VOSVQgZWl0aGVyLgoJKGxheW91dF90eXBlLCBjYXNlIFJFQ09SRF9UWVBFKTogQ2FsbCBuZXcgZnVuY3Rpb24gbmFtZXMuCgkoaW5pdGlhbGl6ZV9zaXpldHlwZXMpOiBTZXQgVFlQRV9JU19TSVpFVFlQRS4KCShzZXRfc2l6ZXR5cGUpOiBTZXQgVFlQRV9JU19TSVpFVFlQRSBlYXJsaWVyLgoJKGdldF9iZXN0X21vZGUpOiBVTklUIGlzIG5vdyB1bnNpZ25lZDsgcmVtb3ZlIGNhc3RzLgoJKiB0cmVlLmMgKGJpdF9wb3NpdGlvbik6IENvbXB1dGUgZnJvbSBuZXcgZmllbGRzLgoJKGJ5dGVfcG9zaXRpb24sIGludF9ieXRlX3Bvc2l0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF90eXBlX2hhc2hfc3RhdGlzdGljcyk6IENhc3QgdG8gcmVtb3ZlIHdhcm5pbmcuCgkoYnVpbGRfcmFuZ2VfdHlwZSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QgdG8gdHJ5IHRvIGhhc2guCgkoYnVpbGRfaW5kZXhfdHlwZSk6IExpa2V3aXNlOyBtYWtlIHN1YnR5cGUgb2Ygc2l6ZXR5cGUuCgkoYnVpbGRfaW5kZXhfMl90eXBlKTogUGFzcyBzaXpldHlwZSB0byBidWlsZF9yYW5nZV90eXBlLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogVXNlIHNpemVfaW50IGFuZCBiaXRzaXplX2ludCB0bwoJaW5pdGlhbGl6ZSBub2RlczsgYWRkIGJpdHNpemVfe3plcm8sb25lLHVuaXR9X25vZGUuCgkqIHRyZWUuaCAoREVDTF9GSUVMRF9DT05URVhUKTogVXNlIEZJRUxEX0RFQ0xfQ0hFQ0suCgkoREVDTF9CSVRfRklFTERfVFlQRSwgREVDTF9RVUFMSUZJRVIsIERFQ0xfRkNPTlRFWFQpOiBMaWtld2lzZS4KCShERUNMX1BBQ0tFRCwgREVDTF9CSVRfRklFTEQpOiBMaWtld2lzZS4KCShERUNMX0ZJRUxEX0JJVFBPUyk6IERlbGV0ZWQuCgkoREVDTF9GSUVMRF9PRkZTRVQsIERFQ0xfRklFTERfQklUX09GRlNFVCk6IE5ldyBmaWVsZHMuCgkoREVDTF9SRVNVTFQsIERFQ0xfU0FWRURfSU5TTlMpOiBVc2UgRlVOQ1RJT05fREVDTF9DSEVDSy4KCShERUNMX0ZSQU1FX1NJWkUsIERFQ0xfRlVOQ1RJT05fQ09ERSwgREVDTF9OT19TVEFUSUNfQ0hBSU4pOiBMaWtld2lzZS4KCShERUNMX0lOTElORSwgREVDTF9CVUlMVF9JTl9OT05BTlNJLCBERUNMX0lTX01BTExPQyk6IExpa2V3aXNlLgoJKERFQ0xfQlVJTFRfSU5fQ0xBU1MsIERFQ0xfU1RBVElDX0NPTlNUUlVDVE9SKTogTGlrZXdpc2UuCgkoREVDTF9TVEFUSUNfREVTVFJVQ1RPUiwgREVDTF9OT19DSEVDS19NRU1PUllfVVNBR0UpOiBMaWtld2lzZS4KCShERUNMX05PX0lOU1RSVU1FTlRfRlVOQ1RJT05fRU5UUllfRVhJVCwgREVDTF9OT19MSU1JVF9TVEFDSykgTGlrZXdpc2UuCgkoREVDTF9PUklHSU5BTF9UWVBFLCBUWVBFX0RFQ0xfU1VQUFJFU1NfREVCVUcpOiBVc2UgVFlQRV9ERUNMX0NIRUNLLgoJKERFQ0xfQVJHX1RZUEVfQVNfV1JJVEVOLCBERUNMX0FSR19UWVBFKTogVXNlIFBBUk1fREVDTF9DSEVDSy4KCShERUNMX0lOQ09NSU5HX1JUTCwgREVDTF9UUkFOU1BBUkVOVF9VTklPTik6IExpa2V3aXNlLgoJKERFQ0xfQUxJR04pOiBBZGp1c3QgdG8gbmV3IGZpZWxkIGluIHVuaW9uLgoJKERFQ0xfT0ZGU0VUX0FMSUdOKTogTmV3IGZpZWxkLgoJKERFQ0xfRVJST1JfSVNTVUVELCBERUNMX1RPT19MQVRFKTogVXNlIExBQkVMX0RFQ0xfQ0hFQ0suCgkoREVDTF9JTl9URVhUX1NFQ1RJT04pOiBVc2UgVkFSX0RFQ0xfQ0hFQ0suCgkodW5pb24gdHJlZV9kZWNsKTogQWRkIHN0cnVjdCBmb3IgYm90aCBhbGlnbnMuCgkoZW51bSB0cmVlX2luZGV4KTogQWRkIFRJX0JJVFNJWkVfe1pFUk8sT05FLFVOSVR9LgoJKGJpdHNpemVfemVyb19ub2RlLCBiaXRzaXplX29uZV9ub2RlLCBiaXRzaXplX3VuaXRfbm9kZSk6IEFkZGVkLgoJKHN0cnVjdCByZWNvcmRfbGF5b3V0X2luZm8pOiBSZXdvcmsgZmllbGRzIHRvIGhhdmUgb2Zmc2V0CglhbGlnbm1lbnQgYW5kIGJ5dGUgYW5kIGJpdCBwb3NpdGlvbi4KCShzdGFydF9yZWNvcmRfbGF5b3V0LCBwbGFjZV9maWVsZCk6IFJlbmFtZWQgZnJvbSBvbGQgbmFtZXMuCgkocmxpX3NpemVfc29fZmFyLCBybGlfc2l6ZV91bml0X3NvX2Zhciwgbm9ybWFsaXplX3JsaSk6IE5ldyBkZWNscy4KCShieXRlX3Bvc2l0aW9uLCBpbnRfYnl0ZV9wb3NpdGlvbik6IExpa2V3aXNlLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBDaGFuZ2UgdHlwZXMgb2YgcG9zaXRpb24gYW5kIGxlbmd0aC4KCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogTmV3IHZhcmlhYmxlIFI7IHVzZSBmb3Igc29tZSBsb29wcy4KCU1BWF9MT0NBTF9SRUdOVU0gYW5kIE1BWFJFR05VTSBub3cgdW5zaWduZWQuCgkoY2FsY3VsYXRlX2dpdl9pbmMpOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKGNvcHlfbG9vcF9ib2R5KTogUkVHTk8gYW5kIFNSQ19SRUdOTyBub3cgdW5zaWduZWQuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IENsZWFuIHVwIGhhbmRsaW5nIG9mIHNpemUgdXNpbmcKCWhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShkZWNvZGVfYWRkcl9jb25zdCk6IFVzZSBieXRlLCBub3QgYml0LCBwb3NpdGlvbi4KCShvdXRwdXRfY29uc3RydWN0b3IpOiBiaXRwb3MgYW5kIG9mZnNldHMgYXJlIEhPU1RfV0lERV9JTlQ7Cgl1c2UgdHJlZV9sb3dfY3N0IGFuZCBpbnRfYml0X3Bvc2l0aW9uLgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX2l2YXJfbGlzdF9pbml0aWFsaXplcik6IFVzZSBieXRlX3Bvc2l0aW9uLgoKRnJpIE1hciAyNCAyMDoxMzo0OSAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChSRU9SREVSX01PVkVEX0JMT0NLX0VORCk6IFJlbW92ZWQuCgkocmVvcmRlcl9ibG9ja19kZWYpOiBOZXcgbWVtYmVycyBlZmZfaGVhZCBhbmQgZWZmX2VuZC4KCShSRU9SREVSX0JMT0NLX0VGRl9IRUFELCBSRU9SREVSX0JMT0NLX0VGRl9FTkQpOiBOZXcgbWFjcm9zLgoJKHZlcmlmeV9pbnNuX2NoYWluKTogTmV3IGZ1bmN0aW9uLgoJKHNraXBfaW5zbnNfYmV0d2Vlbl9ibG9jayk6IEFkZCBjb2RlIHRvIHNraXAgZGVsZXRlZCBpbnNucy4KCUNoZWNrIGZvciBub3RlIGJlZm9yZSB1c2luZy4KCShjaGFpbl9yZW9yZGVyX2Jsb2Nrcyk6IFJlcGxhY2UgY2FsbHMgdG8gc2tpcF9pbnNuc19iZXR3ZWVuX2Jsb2NrCgl3aXRoIHJlZmVyZW5jZXMgdG8gUkVPUkRFUl9CTE9DS19FRkZfSEVBRCBhbmQgUkVPUkRFUl9CTE9DS19FRkZfRU5ELgoJQ2hlY2sgZm9yIG5vdGUgYmVmb3JlIHVzaW5nLgoJKG1ha2VfcmVvcmRlcl9jaGFpbik6IFVzZSBJTlRWQUwgcmF0aGVyIHRoYW4gWElOVCB0byBnZXQgUkVHX0JSX1BST0IuCgkoZml4dXBfcmVvcmRlcl9jaGFpbik6IFJlc3RydWN0dXJlLCBjbGVhbiB1cCwgZGVmZWN0IHJlbW92YWwuCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBSZW1vdmUgbGFzdF9pbnNuIGFuZCByZWZlcmVuY2VzIHRvIGl0LgoJTW92ZWQgaW5zbiBjaGFpbiB2ZXJpZmljYXRpb24gY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uIChzZWUgYWJvdmUpLgoJRGVsZXRlIGRlZmVjdGl2ZSBjb2RlIHRoYXQgc2V0cyBsYXN0IGluc24uCglJbml0aWFsaXplIFJFT1JERVJfQkxPQ0tfRUZGX0hFQUQgYW5kIFJFT1JERVJfQkxPQ0tfRUZGX0VORCBmb3IKCWFsbCBibG9ja3MuCgoyMDAwLTAzLTI1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChDUFBfU1BFQyk6IFJlbW92ZSBlcnJvbmVvdXMgc3BhY2UuCgoyMDAwLTAzLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHJlZS5jIChsYW5nX3NhZmVfZm9yX3Vuc2F2ZSk6IFJlbW92ZS4KCSh1bnNhZmVfZm9yX3JlZXZhbCk6IFRyYW5zbXV0ZSBhbmQgcmVuYW1lIGZyb20gc2FmZV9mb3JfdW5zYXZlLAoJYWxsb3dpbmcgZm9yIHR3byBsZXZlbHMgb2YgdW5zYWZlbmVzcy4gIFJlbW92ZSBsYW5nIGhvb2suCgkqIHRyZWUuaDogVXBkYXRlIGRlY2xhcmF0aW9ucy4KCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBSZW5hbWUgc2FmZV9mb3JfcmVldmFsIHRvIHRyeV90YWlsX2NhbGwuCglDcmVhdGUgdGVtcG9yYXJ5IFZBUl9ERUNMcyB0byBwcm90ZWN0IHZlcnkgdW5zYWZlX2Zvcl9yZWV2YWwgdHJlZXMuCglBbHdheXMgZmFpbCBzaWJjYWxscyB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIGNsZWFudXBzLgoKMjAwMC0wMy0yNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBXaGVuIHdlIGRlbGV0ZSBhbiBBRERSX1ZFQywKCWFsc28gZGVsZXRlIHRoZSBCQVJSSUVSIGZvbGxvd2luZyBpdCBpZiB0aGVyZSBpcyBvbmUuCgoyMDAwLTAzLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYnplcm8pOiBDb252ZXJ0IGBsZW5ndGgnIGFyZ3VtZW50Cgl0byBzaXpldHlwZS4KCjIwMDAtMDMtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc2liY2FsbC5jIChza2lwX2NvcHlfdG9fcmV0dXJuX3ZhbHVlKTogVXNlIE9VVEdPSU5HX1JFR05PIGZvcgoJY29tcGFyaXNvbiBpZiByZWdubydzIGFyZSBlcXVhbC4KCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdCk6IEFkZCBlY2ZfZmxhZ3MgYXJndW1lbnQuCglVc2UgRlVOQ1RJT05fSU5DT01JTkdfQVJHIGlmIGF2YWlsYWJsZSBhbmQgRUNGX1NJQkNBTEwuCgkoZXhwYW5kX2NhbGwpOiBVcGRhdGUgY2FsbGVyLgoJQXZvaWQgbWFraW5nIGEgc2libGluZyBjYWxsIGlmIGFyZ3VtZW50IHNpemUgb2YgdGhlIGNhbGxlZSBpcyBsYXJnZXIKCXRoYW4gYXJndW1lbnQgc2l6ZSBvZiB0aGUgY2FsbGVyLgoJQ2FsbCBoYXJkX2Z1bmN0aW9uX3ZhbHVlIHdpdGggb3V0Z29pbmcgc2V0IGlmIGluIHNpYmNhbGwgcGFzcy4KCVVzZSBGVU5DVElPTl9JTkNPTUlOR19BUkcgaWYgYXZhaWxhYmxlIGFuZCBFQ0ZfU0lCQ0FMTC4KCgkqIGZpbmFsLmMgKHBlcm1pdHRlZF9yZWdfaW5fbGVhZl9mdW5jdGlvbnMsIG9ubHlfbGVhZl9yZWdzX3VzZWQpOgoJQ2hhbmdlIExFQUZfUkVHSVNURVJTIGZyb20gYW4gYXJyYXkgaW5pdGlhbGl6ZXIgdG8gYWN0dWFsIGFycmF5CglpZGVudGlmaWVyLiBNb3ZlIHN0YXRpYyBnbG9iYWwgdmFyaWFibGUgaW50byB0aGUgZnVuY3Rpb24uCgkobGVhZl9mdW5jdGlvbl9wKTogQWxsb3cgU0lCTElOR19DQUxMX1AgY2FsbHMgZXZlbiBvdXRzaWRlIG9mCglzZXF1ZW5jZXMgZm9yIGxlYWYgZnVuY3Rpb25zLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogTGlrZXdpc2UuCgkqIHRtLnRleGkgKExFQUZfUkVHSVNURVJTKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBSZW1vdmUgdGhlIHVnbHkKCVRBUkdFVF9GTEFUIGxlYWYgZGlzYWJsaW5nIGhhY2suCgkoTEVBRl9SRUdJU1RFUlMpOiBDaGFuZ2VkIGZyb20gYW4gYXJyYXkgaW5pdGlhbGl6ZXIgdG8gYWN0dWFsIGFycmF5CglpZGVudGlmaWVyIHRvIGF2b2lkIGR1cGxpY2F0aW9uIGFuZCByZW1vdmUgdGhlIGFib3ZlIGhhY2suCgkoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoc2liY2FsbCk6IE5ldyBhdHRyIHR5cGUuIFVzZSBpdCBhbG1vc3QKCWFsd2F5cyBsaWtlIGNhbGwgYXR0cmlidXRlLgoJKGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogTmV3IGF0dHJpYnV0ZS4KCShzaWJjYWxsKTogTmV3IGRlbGF5IHR5cGUuCgkoc2liY2FsbCwgc2liY2FsbF92YWx1ZSwgc2liY2FsbF9lcGlsb2d1ZSk6IE5ldyBleHBhbmRzLgoJKHNpYmNhbGxfc3ltYm9saWNfc3AzMiwgc2liY2FsbF9zeW1ib2xpY19zcDY0LAoJc2liY2FsbF92YWx1ZV9zeW1ib2xpY19zcDMyLCBzaWJjYWxsX3ZhbHVlX3N5bWJvbGljX3NwNjQpOiBOZXcgaW5zbnMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19sZWFmX3JlZ3MpOiBOZXcgYXJyYXkuCgkoZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXksIG91dHB1dF9yZXN0b3JlX3JlZ3MsIG91dHB1dF9zaWJjYWxsKToKCU5ldyBmdW5jdGlvbnMuCgkob3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTW92ZSBwYXJ0IG9mIHRoZSBjb2RlIGludG8KCW91dHB1dF9yZXN0b3JlX3JlZ3MuCgkodWx0cmFfY29kZV9mcm9tX21hc2ssIHVsdHJhc3BhcmNfc2NoZWRfcmVvcmRlcik6IEhhbmRsZQoJVFlQRV9TSUJDQUxMLgoJKiBzcGFyYy1wcm90b3MuaCAob3V0cHV0X3NpYmNhbGwsIGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogTmV3Cglwcm90b3R5cGVzLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFJFVkVSU0lCTEVfQ0NfTU9ERSk6IFJldmVydCBKYW4sIDI1IGNoYW5nZQoJdW50aWwgaW5mcmFzdHJ1Y3R1cmUgaXMgZmluaXNoZWQuCgpGcmkgTWFyIDI0IDEzOjQ5OjQ1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGludGVncmF0ZS5jIChzYXZlX2Zvcl9pbmxpbmVfbm9jb3B5KTogQ2xlYXIgaW5fbm9ucGFybV9pbnNucyBoZXJlLgoJKHNhdmVfcGFybV9pbnNucyk6IE5vdCBoZXJlLgoKMjAwMC0wMy0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYnplcm8pOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgYnplcm8uCgoJKiBidWlsdGlucy5kZWY6IEFkZCBCVUlMVF9JTl9CWkVSTy4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFByb3ZpZGUgYnVpbHRpbgoJcHJvdG90eXBlICYgZnVuY3Rpb24gZm9yIGJ6ZXJvLgoKMjAwMC0wMy0yMyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKFRGIGZsb2F0aW5nIHBvaW50IGluc25zKTogVW5kbyAyMDAwLTAzLTIxCgljaGFuZ2UgYWRkaW5nIFRBUkdFVF9GUCB0byB0aGUgVEYgZmxvYXRpbmcgcG9pbnQgaW5zbnMsIGV4Y2VwdCBmb3IKCXRydW5jdGZzZjIsIHdoaWNoIGdlbmVyYXRlcyBkaXJlY3QgY2FsbHMgdG8gdHJ1bmNkZnNmMi4KCjIwMDAtMDMtMjMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFSR19QT0lOVEVSX0NGQV9PRkZTRVQpOiBOZXcgZGVmaW5pdGlvbiwKCXRyeSB0byBwcm90ZWN0IGFnYWluc3QgbWlkZGxlLWVuZCBjaGFuZ2VzIHRoYXQgYnJlYWsgYmluYXJ5Cgljb21wYXRpYmlsaXR5LgoJKERXQVJGX0ZSQU1FX1JFR0lTVEVSUyk6IE5ldyBkZWZpbml0aW9uLCBsaWtld2lzZSBmb3IgYmFja2VuZC4KCjIwMDAtMDMtMjQgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChsb2FkX2ltbWVkX2FkZHJlc3MpOiAgQWRkIERQIHJlZyBjbG9iYmVyLgoKVGh1IE1hciAyMyAxNzoxMDo0OCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBJZiBUQVJHRVQgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZSBhbmQKCWlzIHJlYWRvbmx5LCB3cml0ZSBhIENMT0JCRVIuCgoyMDAwLTAzLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBiY21wLgoKCSogYnVpbHRpbnMuZGVmOiBBZGQgQlVJTFRfSU5fQkNNUC4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFByb3ZpZGUgYnVpbHRpbgoJcHJvdG90eXBlICYgZnVuY3Rpb24gZm9yIGJjbXAuCgpUaHUgTWFyIDIzIDExOjM0OjM5IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocnR4X25lZWRzX2JhcnJpZXIsIGNhc2UgVU5TUEVDKTogTW92ZSBjYXNlIDYuLi4KCShydHhfbmVlZHNfYmFycmllciwgY2FzZSBVTlNQRUNfVk9MQVRJTEUpOiB0byBoZXJlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcl9yZXN0b3JlKTogQ2hhbmdlIFVOU1BFQyB0byBVTlNQRUNfVk9MQVRJTEUuCgpUaHUgTWFyIDIzIDE2OjA0OjQwIDIwMDAgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobW92ZGZfaW50ZXJuYWwxYSk6IERlbGV0ZSAoc2V0ICdmJywgJ0YnKQoJYWx0ZXJuYXRpdmUgd2hlbiB1c2luZyAtZnA2NCAtZ3AzMi4KCjIwMDAtMDMtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTik6IERlZmluZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGVmaW5lLgoKCSogZnJhbWUuaCAoZnJhbWVfc3RhdGUpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkqIGZyYW1lLmMgKGV4ZWN1dGVfY2ZhX2luc24pOiBKdXN0IGRvbid0IHJlY29yZCB0aGUgc2F2ZSBvZiBhIENGQSByZWcuCgkqIGxpYmdjYzIuYyAodGhyb3dfaGVscGVyKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKMjAwMC0wMy0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IERvbid0IHByb21vdGUgdGhlIHRlbXBvcmFyeS4KCjIwMDAtMDMtMjIgIFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBidWlsdGluLmMgKGdldF9wb2ludGVyX2FsaWdubWVudCk6IFVzZSBERUNMX1AgYW5kIFRZUEVfUCBtYWNyb3MuCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyxjaGVja19mb3JtYXRfaW5mbyx0cnV0aHZhbHVlX2NvbnZlcnNpb24sCgkgIGNfZ2V0X2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGRlZmF1bHRfY29udmVyc2lvbixidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChkZWNsX2NsYXNzX2NvbnRleHQsYWRkX2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUpOgoJTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGRlY2xfY2xhc3NfY29udGV4dCxvdXRwdXRfdHlwZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChzaW1wbGVfb3BlcmFuZF9wLGZvbGQpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChuYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAzLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgZHdhcmYyIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgdGhlIEFSTS4KCSogY29uZmlnL2FybS9hcm0uaCAoSU5DT01JTkdfUkVUVVJOX0FERFJfUlRYKTogRGVmaW5lLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBEZWZpbmUuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGVtaXRfbXVsdGlfcmVnX3B1c2gpOiBSZXR1cm4gcnR4LiAgQXR0YWNoCglSRUdfRlJBTUVfUkVMQVRFRF9FWFBSIG5vdGUuCgkoZW1pdF9zZm0pOiBMaWtld2lzZS4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogU2V0IFJUWF9GUkFNRV9SRUxBVEVEX1Agb24gZXZlcnl0aGluZy4KCSogZHdhcmYyb3V0LmMgKHJlZ19zYXZlKTogSGFuZGxlIHNhdmluZyBhIHJlZ2lzdGVyIHRvIGl0c2VsZi4KCShkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IEhhbmRsZSBhbiBpbnRlcm1lZGlhdGUgY2ZhIHJlZy4KCSogZXhjZXB0LmMgKGVoX3JlZ3MpOiBEb24ndCB1c2UgdGhlIHN0YXRpYyBjaGFpbiByZWcgaWYgaXQncwoJY2FsbGVlLXNhdmVkLgoJKiBmcmFtZS5oIChmcmFtZV9zdGF0ZSk6IEFkZCBjZmFfc2F2ZWQgZmllbGQuCgkqIGZyYW1lLmMgKGV4ZWN1dGVfY2ZhX2luc24pOiBTZXQgaXQuCgkqIGxpYmdjYzIuYyAodGhyb3dfaGVscGVyKTogRG9uJ3QgYWRqdXN0IHNwIGlmIGl0J3MgcmVzdG9yZWQgaW4KCXRoZSBlcGlsb2d1ZS4KCSogZnVuY3Rpb24uYyAoQVJHX1BPSU5URVJfQ0ZBX09GRlNFVCk6IERlZmF1bHQgdG8gRklSU1RfUEFSTV9PRkZTRVQuCglOb3cgdGFrZXMgYSBwYXJtLgoJKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IEFkanVzdC4KCSogdG0udGV4aTogQWRqdXN0LgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEFSR19QT0lOVEVSX0NGQV9PRkZTRVQpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9uczMyay9uczMyay5oIChBUkdfUE9JTlRFUl9DRkFfT0ZGU0VUKTogRG9uJ3QgZGVmaW5lLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVJHX1BPSU5URVJfQ0ZBX09GRlNFVCk6IFRha2UgYSBwYXJtLgoKCSogZHdhcmYyb3V0LmMgKHJlZ19udW1iZXIpOiBSZWZlciB0byBGSVJTVF9QU0VVRE9fUkVHSVNURVIuCgkoaW5pdGlhbF9yZXR1cm5fc2F2ZSk6IFVzZSBEV0FSRl9GUkFNRV9SRUdOVU0sIG5vdCByZWdfbnVtYmVyLgoKMjAwMC0wMy0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChUUkVFX0gpOiBEZXBlbmQgb24gYnVpbHRpbnMuZGVmLgoKCSogYnVpbHRpbnMuYyAoYnVpbHRfaW5fbmFtZXMpOiBVc2UgYnVpbHRpbnMuZGVmLgoKCSogdHJlZS5oIChidWlsdF9pbl9mdW5jdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wMy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoc2l6ZV9pbl9ieXRlcyk6IFJldHVybiBzaXplX3plcm9fbm9kZSwgbm90CglpbnRlZ2VyX3plcm9fbm9kZS4KCjIwMDAtMDMtMjIgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9mcC1iaXQuYyAocGFja19kKTogQ29ycmVjdCB0aGUgY2FzZSB3aGVuIGEgZGVub3JtYWwKCWlzIHJvdW5kZWQgdXAgYW5kIHN0b3BzIGJlaW5nIGRlbm9ybWFsLgoKMjAwMC0wMy0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChmdW5jdGlvbl9hcmcpOiBDaGVjayBmb3Igdm9pZF90eXBlX25vZGUKCWJlZm9yZSB1c2luZyBNVVNUX1BBU1NfSU5fU1RBQ0suCgoyMDAwLTAzLTIxICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIHJlZ21vdmUuYyAoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBDaGVjayB0aGF0Cgl0aGUgc3RhY2sgcG9pbnRlciBpcyBhIHZhbGlkIG1lbW9yeSBhZGRyZXNzLgoKV2VkIE1hciAyMiAxMTo0NDo1MCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYzogcmUtaW5zdGFsbCBNYXIgMTYgZW1pdF9saWJyYXJ5X2NhbGwgbWVyZ2UuCgoyMDAwLTAzLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChtZW1fbWluX2FsaWdubWVudCk6IElmIG5vdCBvcHRpbWl6aW5nLAoJd2UgY2Fubm90IGJlIHN1cmUgdGhhdCBpZiByZWxvYWRfY29tcGxldGVkIGJhc2UgcmVnaXN0ZXIgd2lsbAoJYmUgcHJvcGVybHkgYWxpZ25lZC4KCjIwMDAtMDMtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGRlbGV0ZV9ibG9jayk6IEZpeCB0eXBvIGxhc3QgY2hhbmdlLgoKMjAwMC0wMy0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2V4cHJfc3RtdCk6IFVzZSBDT01QTEVURV9UWVBFX09SX1ZPSURfUCwKCW5vdCBDT01QTEVURV9UWVBFX1AsIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uLgoKMjAwMC0wMy0yMSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGZsb2F0aW5nIHBvaW50IGluc25zKTogQWRkIFRBUkdFVF9GUCB0bwoJYWxsIGZsb2F0aW5nIHBvaW50IGluc25zIHRoYXQganVzdCB0ZXN0ZWQgdGhlIG1hY3JvCglUQVJHRVRfSEFTX1hGTE9BVElOR19MSUJTLgoJKG1vdnNmL21vdmRmIHJlY29nbml6ZXJzKTogQWRkIHNlcGFyYXRlIGluc25zIGlmIC1tbm8tZnAtcmVncyBpcwoJdXNlZCB0byBvbmx5IHVzZSB0aGUgZ3Bycy4KCjIwMDAtMDMtMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKENPTVBMRVRFX1RZUEVfUCk6IE5ldyBtYWNyby4KCShDT01QTEVURV9PUl9WT0lEX1RZUEVfUCk6IE5ldyBtYWNyby4KCShDT01QTEVURV9PUl9VTkJPVU5EX0FSUkFZX1RZUEVfUCk6IE5ldyBtYWNyby4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUsIGNhc2UgVk9JRF9UWVBFKTogRG9uJ3Qgc2V0IFRZUEVfU0laRS4KCSogYy1hdXgtaW5mby5jIChnZW5fdHlwZSk6IFVzZSB0aGVtLgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKHBvcGxldmVsLCBwdXNoZGVjbCwgc3RhcnRfZGVjbCwgZmluaXNoX2RlY2wsCglncm9rZGVjbGFyYXRvciwgZ3Jva3Bhcm1zLCBmaW5pc2hfc3RydWN0LCBzdGFydF9mdW5jdGlvbiwKCXN0b3JlX3Bhcm1fZGVjbHMsIGNvbWJpbmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKiBjLXBhcnNlLnkgKGNhc3RfZXhwcik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGUsIGNfc2l6ZW9mLCBjX3NpemVvZl9ub3dhcm4sCgljX3NpemVfaW5fYnl0ZXMsIGNfYWxpZ25vZiwgYnVpbGRfY29tcG9uZW50X3JlZiwKCWJ1aWxkX2luZGlyZWN0X3JlZiwgYnVpbGRfYXJyYXlfcmVmLCBjb252ZXJ0X2FyZ3VtZW50cywKCWJ1aWxkX2JpbmFyeV9vcCwgcG9pbnRlcl9kaWZmLCBidWlsZF91bmFyeV9vcCwgZGlnZXN0X2luaXQ6IExpa2V3aXNlLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogTGlrZXdpc2UuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogTGlrZXdpc2UuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZWRlZnMsIGRieG91dF90eXBlLCBkYnhvdXRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGxvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSwKCW91dHB1dF9lbnVtZXJhdGlvbl90eXBlX2RpZSwgb3V0cHV0X3N0cnVjdHVyZV90eXBlX2RpZSwKCW91dHB1dF91bmlvbl90eXBlX2RpZSwgb3V0cHV0X3R5cGUpOiBMaWtld2lzZS4KCSogZXhwci5jIChzYWZlX2Zyb21fcCwgZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogTGlrZXdpc2UuCgkqIHNkYm91dC5jIChzZGJvdXRfc3ltYm9sLCBzZGJvdXRfb25lX3R5cGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9hcnJheV90eXBlLCBidWlsZF9mdW5jdGlvbl90eXBlLAoJYnVpbGRfbWV0aG9kX3R5cGUsIGJ1aWxkX29mZnNldF90eXBlLCBidWlsZF9jb21wbGV4X3R5cGUpOiBMaWtld2lzZS4KCSogYy1wYXJzZS5jLCBjLXBhcnNlLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMC0wMy0yMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoKVHVlIE1hciAyMSAwOToyNDowMCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoZW5jb2RlX3NlY3Rpb25faW5mbyk6IHNldHMgU1lNQk9MX1JFRl9GTEFHIGlmCglkZWNsIGlzIGEgRlVOQ1RJT05fREVDTAoKTW9uIE1hciAyMCAxOTo1Mzo1MyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgYWJvcnQgaWYgbGVhZgoJZnVuY3Rpb24gdXNlcyBvdXRwdXQgcmVnaXN0ZXJzLiAgRG9uJ3Qgc2F2ZSBSUCBmb3IgbGVhZiBmdW5jdGlvbnMuCglEbyBzYXZlIFJQIGV2ZW4gaWYgbm8gZXBpbG9ndWUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoRklYRURfUkVHSVNURVJTKTogVW5tYXJrIGluL291dCByZWdpc3RlcnMuCgkoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IFVubWFyayBpbiByZWdpc3RlcnMuCgkoUkVHX0FMTE9DX09SREVSKTogTW92ZSBvdXQgcmVncyB1cCwgdG8gbmVhciB0aGUgdG9wLiAgTW92ZSBpbiByZWdzIHVwLAoJdG8gbmVhciB0aGUgbWlkZGxlLgoKMjAwMC0wMy0yMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGJ1bm9yZGVyZWQpOiBOZXcgZXhwYW5kZXIuCgkoYm9yZGVyZWQpOiBOZXcgZXhwYW5kZXIuCgkoYnVuZXEpOiBOZXcgZXhwYW5kZXIuCgkoYnVuZ2UpOiBOZXcgZXhwYW5kZXIuCgkoYnVuZ3QpOiBOZXcgZXhwYW5kZXIuCgkoYnVubGUpOiBOZXcgZXhwYW5kZXIuCgkoYnVubHQpOiBOZXcgZXhwYW5kZXIuCgkoYmx0Z3QpOiBOZXcgZXhwYW5kZXIuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChjY3JfYml0KTogSGFuZGxlIHVub3JkZXJlZCBjb21wYXJpc29ucy4KCShjY3JfYml0X25lZ2F0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogRm9yICVDLCBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBjcm9yIGZvciBVTkVRLAoJVU5MVCwgVU5HVCwgYW5kIExUR1QuICBGb3IgJVQgYW5kICV0LCB1c2UgY2NyX2JpdF9uZWdhdGVkX3AuCgoyMDAwLTAzLTIwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBzZGJvdXQuYyAoc2Rib3V0X29uZV90eXBlKTogQWRkIGJyYWNlcyB0byBhdm9pZCAiYW1iaWdvdXMgZWxzZSIKCXdhcm5pbmcuCgoJKiB0cmVlLmggKHNhZmVfZm9yX3Vuc2F2ZSk6IFByb3RvdHlwZS4KCjIwMDAtMDMtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWdtb3ZlLmMgKHN0YWNrX21lbXJlZl9wKTogRml4IHR5cG8sIHJlb3JnIGZvciByZWFkYWJpbGl0eS4KCShjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IERvbid0IGFsbG93IHNwIHJlZmVyZW5jZXMKCWluIHRoZSBzaWRlIG9mIGEgc2V0IHdlJ3JlIG5vdCBmaXhpbmcgdXAuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMKCWFmdGVyIGxpZmVfYW5hbHlzaXMuCgoyMDAwLTAzLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCBib3RoZXIgZ2VuZXJhdGluZyB0YWlsIGNhbGwKCXNlcXVlbmNlcyBpZiB0aGVyZSBhcmUgcGVuZGluZyBjbGVhbnVwcy4gIFVzZQoJZXhwYW5kX3N0YXJ0X3RhcmdldF90ZW1wcy9leHBhbmRfZW5kX3RhcmdldF90ZW1wcyB0byBlbGlkZQoJY2xlYW51cHMgY3JlYXRlZCBkdXJpbmcgc2liY2FsbCBleHBhbnNpb24uCgoyMDAwLTAzLTIwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFNldCAkSUZTIHRvIGEgdmFsdWUgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgb25lCglpbiB0aGUgLS1lbmFibGUtY2hlY2tpbmcgaGFuZGxpbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDMtMjAgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGMtcGFyc2UuaW4gKFNBVkVfV0FSTl9GTEFHUyk6IFVzZSBzaXplX2ludC4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UuYzoKCVJlZ2VuZXJhdGVkLgoKTW9uIE1hciAyMCAxMTo0MzoxNSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSoganVtcC5jIChkZWxldGVfbm9vcF9tb3Zlcyk6IFJlbW92ZSBjb2RlIGF0dGVtcHRpbmcgdG8KCWNvbWJpbmUgc3RhY2sgYWRqdXN0bWVudHMuCgoyMDAwLTAzLTE5ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBlbWl0LXJ0bC5jIChwdXNoX3RvX2Z1bGxfc2VxdWVuY2UsIGVuZF9mdWxsX3NlcXVlbmNlKTogTmV3IGZ1bmN0aW9ucy4KCSogZXhjZXB0LmMgKGVtaXRfY2xlYW51cF9oYW5kbGVyKTogVXNlIHRoZW0uCgkoZXhwYW5kX2VuZF9hbGxfY2F0Y2gpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnMpOiBMaWtld2lzZS4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogQ2xlYXIgY2F0Y2hfY2xhdXNlc19sYXN0LgoJKiBydGwuaCAocHVzaF90b19mdWxsX3NlcXVlbmNlLCBlbmRfZnVsbF9zZXF1ZW5jZSk6IERlY2xhcmUuCgkqIGV4Y2VwdC5oIChzdHJ1Y3QgZWhfc3RhdHVzKTogTmV3IGZpZWxkIHhfY2F0Y2hfY2xhdXNlc19sYXN0LgoJKGNhdGNoX2NsYXVzZXNfbGFzdCk6IE5ldyBkZWZpbmUuCgoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogRGVwZW5kIG9uIEhBU0hUQUJfSC4KCSogdHJlZS5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShzdHJ1Y3QgdHlwZV9oYXNoKTogUmVtb3ZlIG5leHQgZmllbGQuCgkoVFlQRV9IQVNIX1NJWkUpOiBSZW1vdmUuCgkoVFlQRV9IQVNIX0lOSVRJQUxfU0laRSk6IE5ldyBkZWZpbmUuCgkodHlwZV9oYXNoX3RhYmxlKTogQ2hhbmdlIHR5cGUgdG8gaHRhYl90LgoJKHR5cGVfaGFzaF9lcSwgdHlwZV9oYXNoX2hhc2gsIHByaW50X3R5cGVfaGFzaF9zdGF0aXN0aWNzLAoJbWFya19oYXNoX2VudHJ5KTogTmV3IGZ1bmN0aW9ucy4KCShpbml0X29ic3RhY2tzKTogQWxsb2NhdGUgdHlwZSBoYXNoLgoJKHR5cGVfaGFzaF9sb29rdXApOiBVc2UgaHRhYiBmdW5jdGlvbnMuCgkodHlwZV9oYXNoX2FkZCwgbWFya190eXBlX2hhc2gpOiBMaWtld2lzZS4KCShkdW1wX3RyZWVfc3RhdGlzdGljcyk6IENhbGwgcHJpbnRfdHlwZV9oYXNoX3N0YXRpc3RpY3MuCgoyMDAwLTAzLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByczYwMDAvdC1haXg0MTogTmV3IGZpbGUuCgoJKiBjb25maWd1cmUuaW4gKHtyczYwMDAscG93ZXJwY30taWJtLWFpeDQuWzEyXSopOiBVc2UgaXQuCgpTdW4gTWFyIDE5IDEzOjI3OjMwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdG0udGV4aSAoRHJpdmVyKTogRml4IHR5cG9zIGFuZCB0d2VhayBlbnRyeSBmb3IKCUlOQ0xVREVfREVGQVVMVFMuCglNb3ZlIG1pc3BsYWNlZCBTVFJVQ1RfRk9SQ0VfQkxLIGVudHJ5IC4uLgoJKFN0b3JhZ2UgTGF5b3V0KTogLi4uIHRvIGhlcmUuCgkoUnVuLXRpbWUgVGFyZ2V0KTogUmVjb21tZW5kIGhhdmluZyBUQVJHRVRfTUFTS18uLi4gaGVscGVyIG1hY3Jvcy4KCjIwMDAtMDMtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGRlbGV0ZV9ibG9jayk6IERlbGV0ZSB0aGUgYWRkcl92ZWMgYWxvbmcgd2l0aCB0aGUgYmxvY2suCgkoZmxvd19kZWxldGVfaW5zbik6IERlY3JlbWVudCBMQUJFTF9OVVNFUyB3aGVuIGRlbGV0aW5nIGluc25zIHRoYXQKCXJlZmVyZW5jZSBsYWJlbHMuCgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2KTogQXBwbHkgdHlwZSBjaGVjayBmb3IgZGVmaW5lZAoJb3ZlcmZsb3cgdG8gbXVsdGlwbHkgYXMgd2VsbCBhcyBkaXZpZGUuCgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IERvbid0IGFib3J0IG9uIGFueSB6ZXJvIHNpemVkIGRlY2wuCgoyMDAwLTAzLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogQ2hlY2sgdGhhdCBhbGwKCU5PVEVfSU5TTl9CTE9DS19CRUcgYW5kIE5PVEVfSU5TTl9CTE9DS19FTkQgbm90ZXMgaGF2ZSBhbgoJYXNzb2NpYXRlZCBOT1RFX0JMT0NLLgoJKiBmdW5jdGlvbi5oIChpZGVudGlmeV9ibG9ja3MpOiBVcGRhdGUgY29tbWVudHMuCgkocmVvcmRlcl9ibG9ja3MpOiBEZWNsYXJlLgoJKiBmdW5jdGlvbi5jIChpZGVudGlmeV9ibG9ja3MpOiBEb24ndCB0YWtlIHBhcmFtdGVycy4KCShyZW9yZGVyX2Jsb2Nrcyk6IERvbid0IHRha2UgcGFyYW1ldGVycy4KCSogbG9vcC5oIChmaW5kX2xvb3BfdHJlZV9ibG9ja3MpOiBSZW1vdmUuCgkodW5yb2xsX2Jsb2NrX3RyZWVzKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAobG9vcF9vcHRpbWl6ZSk6IERvbid0IGNhbGwgZmluZF9sb29wX3RyZWVfYmxvY2tzLiAgVXNlCglyZW9yZGVyX2Jsb2NrcyBpbnN0ZWFkIG9mIHVucm9sbF9ibG9ja190cmVlcy5oCgkqIHNpYmNhbGwuYyAob3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMpOiBMaWtld2lzZS4KCSogc3RtdC5jIChmaW5kX2xvb3BfdHJlZV9ibG9ja3MpOiBSZW1vdmUuCgkodW5yb2xsX2Jsb2NrX3RyZWVzKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2FsbCBmaW5kX2xvb3BfdHJlZV9ibG9ja3MKCWluIHdob2xlLWZ1bmN0aW9uIG1vZGUuCgkqIHRyZWUuaCAocmVvcmRlcl9ibG9ja3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoJKiBleHByLmM6IEluY2x1ZGUgaW50bC5oLgoJKiBNYWtlZmlsZS5pbiAoZXhwci5vKTogRGVwZW5kIG9uIGludGwuaC4KCjIwMDAtMDMtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuXzEpOiBDbGFyaWZ5IGNhbm5vdF9pbmxpbmUgbWVzc2FnZS4KCjIwMDAtMDMtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKHRyZWVfaW5kZXgpOiBSZW1vdmUgZW51bWVyYWxzIGZvciBpbnRlZ2VyIHR5cGVzLgoJKGludGVnZXJfdHlwZV9raW5kKTogTmV3IHR5cGUuCgkoaW50ZWdlcl90eXBlcyk6IE5ldyB2YXJpYWJsZS4KCShjaGFyX3R5cGVfbm9kZSk6IEFkanVzdC4KCShzaWduZWRfY2hhcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCSh1bnNpZ25lZF9jaGFyX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKHNob3J0X2ludGVnZXJfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoc2hvcnRfdW5zaWduZWRfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoaW50ZWdlcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCSh1bnNpZ25lZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX2ludGVnZXJfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkobG9uZ191bnNpZ25lZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX2xvbmdfdW5zaWduZWRfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaW50ZWdlcl90eXBlcyk6IE5ldyB2YXJpYWJsZS4KCShpbml0X29ic3RhY2tzKTogUmVnaXN0ZXIgaXQgYXMgYSByb290LgoKU2F0IE1hciAxOCAxNDozODowMCAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFVwZGF0ZSBQUkVWX0lOU04gYXMgd2VsbCBhcwoJTkVYVF9JTlNOLiBVcGRhdGUgbGFzdCBpbnNuIGluIGNoYWluLgoKMjAwMC0wMy0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2RlY2wpOiBEb24ndCBlbWl0IGFueXRoaW5nIGZvciB0eXBlcwoJd2l0aCBUWVBFX0RFQ0xfU1VQUFJFU1NfREVCVUcgc2V0LgoKMjAwMC0wMy0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFrZV9lZGdlcyk6IFVzZSBJTlRWQUwgdG8gYWNjZXNzIFJFR19FSF9SRUdJT04gdmFsdWUuCgoyMDAwLTAzLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni5jIChjYWxsX2luc25fb3BlcmFuZCk6IEFsd2F5cyBhbGxvdyBTWU1CT0xfUkVGLAoJY2FyZSBmb3IgSEFMRl9QSUNfUC4KCShleHBhbmRlcl9jYWxsX2luc25fb3BlcmFuZCk6IFJlbW92ZS4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IE5ldyBhcmcgYGVtaXRfcmV0dXJuJyB0byBjb250cm9sIHJldHVybiBpbnNuLgoJKiBpMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogaTM4Ni5tZCAoYWxsIGNhbGwgZXhwYW5kZXJzKTogUmVtb3ZlIHByZWRpY2F0ZXMsIHJlbW92ZSBzcGVjaWFsCgloYW5kbGluZyBmb3IgaGFsZi1waWMuCgkoKmNhbGxfMSwgKmNhbGxfdmFsdWVfMSk6IEhhbmRsZSBTSUJMSU5HX0NBTExfUCBpbnNucy4KCSgqY2FsbF9wb3BfcGljMiwgKmNhbGxfcGljMiwgKmNhbGxfdmFsdWVfcG9wXzIsICpjYWxsX3ZhbHVlXzIpOiBSZW1vdmUuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCjIwMDAtMDMtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGxhbmFsLmMgKHNpbmdsZV9zZXQpOiBSZWplY3QgaWYgdGhlIHBhcmFsbGVsIGhhcyBhbnl0aGluZwoJZXhjZXB0IFNFVCBvciBVU0Ugb3IgQ0xPQkJFUi4KCjIwMDAtMDMtMTcgIEplZmYgTGF3ICA8bGF3QGN5Z251cy5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHNpYmNhbGwuby4KCShzaWJjYWxsLm8pOiBOZXcuCgkqIHNpYmNhbGwuYzogTmV3IGZpbGUuCgkqIGNhbGxzLmMgKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogUHJvdmlkZSBkZWZhdWx0LgoJKEVDRl9JU19DT05TVCwgRUNGX05PVEhST1csIEVDRl9TSUJDQUxMKTogTmV3LgoJKGVtaXRfY2FsbF8xKTogUmVwbGFjZSBgaXNfY29uc3QnIGFuZCBgbm90aHJvdycgd2l0aCBgZWNmX2ZsYWdzJy4KCUVtaXQgc2liY2FsbCBwYXR0ZXJucyB3aGVuIHJlcXVlc3RlZC4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShleHBhbmRfY2FsbCk6IEdlbmVyYXRlIENBTExfUExBQ0VIT0xERVIgaW5zbnMgd2hlbiB0YWlsIGNhbGwKCWVsaW1pbmF0aW9uIHNlZW1zIGZlYXNhYmxlLgoJKiBmaW5hbC5jIChsZWFmX2Z1bmN0aW9uX3ApOiBTaWJsaW5nIGNhbGxzIGRvbid0IGRpc2NvdW50IGJlaW5nCglhIGxlYWYgZnVuY3Rpb24uCgkqIGZsb3cuYyAoSEFWRV9zaWJjYWxsX2VwaWxvZ3VlKTogUHJvdmlkZSBkZWZhdWx0LgoJKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBTaWJsaW5nIGNhbGxzIGRvbid0IHRocm93LgoJKG1ha2VfZWRnZXMpOiBNYWtlIGVkZ2UgZnJvbSBzaWJsaW5nIGNhbGwgdG8gRVhJVC4KCShwcm9wYWdhdGVfYmxvY2spOiBEb24ndCByZW1vdmUgc2liY2FsbF9lcGlsb2d1ZSBpbnNucy4KCSogZnVuY3Rpb24uYyAocHJvbG9ndWUsIGVwaWxvZ3VlKTogVHVybiBpbnRvIHZhcnJheXMuICBVcGRhdGUgYWxsIHVzZXMuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCShmaXh1cF92YXJfcmVmcyk6IFNjYW4gQ0FMTF9QTEFDRUhPTERFUiBzdWItc2VxdWVuY2VzLgoJKGlkZW50aWZ5X2Jsb2Nrc18xKTogTGlrZXdpc2UuICBCcmVhayBvdXQgZnJvbSAuLi4KCShpZGVudGlmeV9ibG9ja3MpOiAuLi4gaGVyZS4KCShyZW9yZGVyX2Jsb2Nrc18xKTogU2NhbiBDQUxMX1BMQUNFSE9MREVSLiAgQnJlYWsgb3V0IGZyb20gLi4uCgkocmVvcmRlcl9ibG9ja3MpOiAuLi4gaGVyZS4KCShpbml0X2Z1bmN0aW9uX2Zvcl9jb21waWxhdGlvbik6IFphcCBwcm9sb2d1ZS9lcGlsb2d1ZSBhcyB2YXJyYXlzLgoJKHJlY29yZF9pbnNucyk6IEV4dGVuZCBhIHZhcnJheSBpbnN0ZWFkIG9mIG1hbGxvY2luZyBuZXcgbWVtb3J5LgoJKGNvbnRhaW5zKTogUmVhZCBhIHZhcnJheSBub3QgYXJyYXkgb2YgaW50cy4KCShzaWJjYWxsX2VwaWxvZ3VlX2NvbnRhaW5zKTogTmV3LgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBFbWl0IGFuZCByZWNvcmQKCXNpYmNhbGxfZXBpbG9ndWUgcGF0dGVybnMuCgkoaW5pdF9mdW5jdGlvbl9vbmNlKTogQWxsb2NhdGUgcHJvbG9ndWUvZXBpbG9ndWUgdmFycmF5cy4KCSogZ2VuZmxhZ3MuYyAoZ2VuX2luc24pOiBUcmVhdCBzaWJjYWxsIHBhdHRlcm5zIGFzIGNhbGxzLgoJKiBpbnRlZ3JhdGUuYyAoc2F2ZV9wYXJtX2luc25zKTogUmVjdXJzZSBvbiBDQUxMX1BMQUNFSE9MREVSIHBhdHRlcm5zLgoJQnJva2VuIG91dCBmcm9tIC4uLgoJKHNhdmVfZm9yX2lubGluZV9ub2NvcHkpOiAuLi4gaGVyZS4KCShjb3B5X2luc25fbGlzdCk6IFJlY3Vyc2Ugb24gQ0FMTF9QTEFDRUhPTERFUiBwYXR0ZXJucy4KCUJyb2tlbiBvdXQgZnJvbSAuLi4KCShleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogLi4uIGhlcmUuCgkoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBIYW5kbGUgTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgkoc3Vic3RfY29uc3RhbnRzKTogSGFuZGxlICduJyBmb3JtYXRzLgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfbWluaW1hbCk6IE5ldy4KCShqdW1wX29wdGltaXplXzEpOiBOZXcgYXJnIGBtaW5pbWFsJzsgdXBkYXRlIGNhbGxlcnMuICBFbGlkZSBtb3N0CglvcHRpbWl6YXRpb25zIGlmIGl0J3Mgc2V0LgoJKiBydGwuYyAoY29weV9ydHgpOiBEbyBjb3B5IGp1bXAgJiBjYWxsIGZvciBpbnNucy4KCSogcnRsLmggKHN0cnVjdCBydHhfZGVmKTogRG9jdW1lbnQgdXNlIG9mIGp1bXAgYW5kIGNhbGwgZm9yIGluc25zLgoJKFNJQkxJTkdfQ0FMTF9QKTogTmV3LgoJKHNpYmNhbGxfdXNlX3QpOiBOZXcuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG8gaW5pdF9FWFBSX0lOU05fTElTVF9jYWNoZSBlYXJsaWVyLgoJSW52b2tlIG9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGxzLgoJKiB0cmVlLmMgKGxhbmdfc2FmZV9mb3JfdW5zYXZlKTogTmV3LgoJKHNhZmVfZm9yX3Vuc2F2ZSk6IE5ldy4KCSogdHJlZS5oIChsYW5nX3NhZmVfZm9yX3Vuc2F2ZSwgc2FmZV9mb3JfdW5zYXZlKTogRGVjbGFyZS4KCgkqIGFscGhhLmggKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogTmV3LgoJKiBhbHBoYS5tZCAoc2liY2FsbCwgc2liY2FsbF92YWx1ZSwgc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCSgqc2liY2FsbF9vc2ZfMSwgKnNpYmNhbGxfdmFsdWVfb3NmXzEpOiBOZXcuCgoyMDAwLTAzLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChlbmNvZGVfbWV0aG9kX3Byb3RvdHlwZSk6IFBhc3MgdHlwZXMsIG5vdAoJUEFSTV9ERUNMcywgdG8gaW50X3NpemVfaW5fYnl0ZXMuCgpGcmkgTWFyIDE3IDExOjUxOjM0IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1peDRyaWdodF8zb3ApOiBTd2FwICUxIGFuZCAlMiBpbiB0ZW1wbGF0ZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lhNjQvaWE2NC5oLAoJY29uZmlnL2lhNjQvaWE2NC5tZCwgY29uZmlnL2lhNjQveG0taWE2NC5oOiBGaXggY29weXJpZ2h0cyBhZ2Fpbi4KCkZyaSBNYXIgMTcgMDg6MDk6MTQgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIENsZWFuIHVwIHVzYWdlcyBvZiBUUkVFX0lOVF9DU1RfTE9XLgoJKiBjLXBhcnNlLmluIChSRVNUT1JFX1dBUk5fRkxBR1MpOiBVc2UgdHJlZV9sb3dfY3N0LgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLnksIG9iamMvb2JqYy1wYXJzZS5jOgoJUmVnZW5lcmF0ZWQuCgkqIGMtdHJlZS5oIChtaW5fcHJlY2lzaW9uKTogTW92ZSBkZWNsYXJhdGlvbiB0byBoZXJlLgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKGJ1aWxkX3VuYXJ5X29wLCBhZGRfcGVuZGluZ19pbml0KTogVXNlIGJpdF9wb3NpdGlvbi4KCShwZW5kaW5nX2luaXRfbWVtYmVyLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKHJlYWxseV9zdGFydF9pbmNyZW1lbnRhbF9pbml0LCBwdXNoX2luaXRfbGV2ZWwsIHBvcF9pbml0X2xldmVsKToKCURvbid0IG1ha2UgY29waWVzIG9mIG5vZGVzIG9yIG1vZGlmeSB0aGVtIGluIHBsYWNlLCB1c2UgY29uc2lzdGVudAoJdHlwZXMgd2hlbiB0cmFja2luZyBwb3NpdGlvbnMsIGFuZCB1c2UgdHJlZSByb3V0aW5lcyBjb21wdXRhdGlvbnMuCgkoc2V0X2luaXRfaW5kZXgsIG91dHB1dF9pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCShvdXRwdXRfcGVuZGluZ19pbml0X2VsZW1lbnRzLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGVfZmllbGRzKTogVXNlIGJpdF9wb3NpdGlvbiwgaG9zdF9pbnRlZ2VycCwKCXRyZWVfbG93X2NzdCBhbmQgaW50X2JpdF9wb3NpdGlvbjsgYWxzbyBtaW5vciBjbGVhbnVwLgoJKGRieG91dF90eXBlX21ldGhvZF8xLCBkYnhvdXRfcmFuZ2VfdHlwZSwgZGJ4b3V0X3R5cGUpOiBMaWtld2lzZS4KCShwcmludF9jc3Rfb2N0YWwpOiBQcmVjaXNpb24gaXMgdW5zaWduZWQuCgkoZGJ4b3V0X3N5bWJvbCk6IEVuc3VyZSBERUNMX0lOSVRJQUwgaXMgaW4tcmFuZ2UgYW5kIHVzZSB0cmVlX2xvd19jc3QuCgkqIGR3YXJmMm91dC5jIChjZWlsaW5nKTogSW5wdXQgYW5kIG91dHB1dCBhcmUgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShzaW1wbGVfdHlwZV9hbGlnbl9pbl9iaXRzKTogUmVzdWx0IGlzIHVuc2lnbmVkIGludC4KCVVzZSB0cmVlX2ludF9sb3dfY3N0IGFuZCBob3N0X2ludGVnZXJwLgoJKHNpbXBsZV90eXBlX3NpemVfaW5fYml0cyk6IFJlc3VsdCBpcyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKGZpZWxkX2J5dGVfb2Zmc2V0KTogUmVzdWx0IGlzIEhPU1RfV0lERV9JTlQuCglDaGFuZ2UgdHlwZXMgb2YgaW50ZXJuYWwgdmFyaWFibGVzIHNvIGFsaWdubWVudHMgYXJlIHVuc2lnbmVkIGludCwKCW9mZnNldHMgYXJlIEhPU1RfV0lERV9JTlQgYW5kIHNpemVzIGFyZSB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJVXNlIGhvc3RfaW50ZWdlcnAsIHRyZWVfbG93X2NzdCwgYW5kIGludF9iaXRfcG9zaXRpb24uCgkoYWRkX2JpdF9vZmZzZXRfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkoYWRkX2RhdGFfbWVtYmVyX2xvY2F0aW9uX2F0dHJpYnV0ZSk6IFVzZSB0cmVlX2NzdF9sb3cuCgkoYWRkX2JvdW5kX2luZm8pOiBVc2UgaG9zdF9pbnRlZ2VycCwgaW50ZWdlcl96ZXJvcCwgYW5kIGludGVnZXJfb25lcC4KCShhZGRfYml0X3NpemVfYXR0cmlidXRlKTogVXNlIHRyZWVfbG93X2NzdC4KCShhZGRfcHVyZV9vcl92aXJ0dWFsX2F0dHJpYnV0ZSwgZ2VuX2VudW1lcmF0aW9uX3R5cGVfZGllKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IFNpbWlsYXIgY2hhbmdlcyB0byBkd2FyZjJvdXQuYy4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBBUlJBWV9SRUYpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkqIGdlbm91dHB1dC5jIChuX29jY3VycmVuY2VzKTogUmV0dXJuIC0xIGZvciBudWxsIHN0cmluZy4KCShzdHJpcF93aGl0ZXNwYWNlKTogQWNjZXB0IG51bGwgc3RyaW5nIGFuZCBtYWtlIGludG8gZnVuY3Rpb24uCgkoc2Nhbl9vcGVyYW5kcyk6IFJlZmxlY3QgYWJvdmUgY2hhbmdlcy4KCSogc2Rib3V0LmMgKHBsYWluX3R5cGVfMSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkoc2Rib3V0X2ZpZWxkX3R5cGVzLCBzZGJvdXRfb25lX3R5cGUpOiBMaWtld2lzZTsgYWxzbyB1c2UgYml0X3Bvc2l0aW9uLgoJKiBzc2EuYyAocmVuYW1lX3JlZ2lzdGVycyk6IEFkZCBtaXNzaW5nIGNhc3Qgb2YgYXJnIHRvIGJ6ZXJvLgoJKiB0cmVlLmMgKGludF9zaXplX2luX2J5dGVzKTogQ2hlY2sgZm9yIHRvbyBiaWcgdG8gcmVwcmVzZW50LgoJKGJpdF9wb3NpdGlvbiwgaW50X2JpdF9wb3NpdGlvbiwgaG9zdF9pbnRlZ2VycCwgdHJlZV9sb3dfY3N0KTogTmV3IGZucy4KCSogdHJlZS5oIChob3N0X2ludGVnZXJwLCB0cmVlX2xvd19jc3QsIGJpdF9wb3NpdGlvbiwgaW50X2JpdF9wb3NpdGlvbik6CglOZXcgZGVjbGFyYXRpb25zLgoJKG1pbl9wcmVjaXNpb24pOiBEZWxldGUgZnJvbSBoZXJlLgoJKiB2YXJhc20uYyAoZGVjb2RlX2FkZHJfY29uc3QpOiBVc2UgaG9zdF9pbnRlZ2VycCwgYml0X3Bvc2l0aW9uLAoJYW5kIGludF9iaXRfcG9zaXRpb24uCgkqIG9iamMvb2JqYy1hY3QuYyAoZW5jb2RlX21ldGhvZF9wcm90b3R5cGUpOiBTaXplcyBhcmUgSE9TVF9XSURFX0lOVC4KCShlbmNvZGVfbWV0aG9kX2RlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2l2YXJfbGlzdF9pbml0aWFsaXplcik6IFVzZSBpbnRfYml0X3Bvc2l0aW9uLgoJKGdlbmVyYXRlX3NoYXJlZF9zdHJ1Y3R1cmVzKTogQ29udmVydCBzaXplLgoJKGVuY29kZV90eXBlLCBlbmNvZGVfY29tcGxldGVfYml0ZmllbGQpOiBVc2UgaW50ZWdlcl96ZXJvcC4KCShlbmNvZGVfYml0ZmllbGQpOiBVc2UgdHJlZV9sb3dfY3N0IGFuZCBpbnRfYml0X3Bvc2l0aW9uLgoKMjAwMC0wMy0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoQ1BQX1NQRUMpOiBGaXggdHlwby4KCjIwMDAtMDMtMTcgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNhbGwuYyAoc3BlY2lhbF9mdW5jdGlvbl9wKTogSXQgaXMgb25seSBtYWxsb2MgaWYgaXQgcmV0dXJucwoJUG1vZGUuCgoyMDAwLTAzLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChBU01fU1BFQywgQ1BQX1NQRUMsIExJTktfU1BFQyk6IFN1cHBvcnQgQzMzLgoJKEMzM19GTEFHLCBUQVJHRVRfQzNYKTogQWRkIG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW0zMyBvcHRpb24uCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9vdmVycmlkZV9vcHRpb25zKTogVGVzdCBmb3IgVEFSR0VUX0MzMy4KCjIwMDAtMDMtMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKFBBUkFMTEVMX0lOU05fRkxBRyk6IEFkZC4KCShQQVJBTExFTF9QQUNLX0ZMQUcpOiBEZWxldGUuCgkoVEFSR0VUX1NXSVRDSEVTKTogVXBkYXRlLgoJKFRBUkdFVF9QQVJBTExFTCk6IFVzZSBQQVJBTExFTF9JTlNOX0ZMQUcuCgpUaHUgTWFyIDE2IDE4OjUyOjMyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGaXggYSBmZXcgY2FzZXMgd2hlbiB0aGUgcmV0dXJuZWQgcmVzdWx0CglpcyBub3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgaW5wdXQuCgoyMDAwLTAzLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmcuCgoyMDAwLTAzLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJnY2MyLmg6IE1vdmUgcHJvdG90eXBlcyBhYm92ZSBtYWNyb3Mgd2l0aCB0aGUgc2FtZSBuYW1lLgoJV3JhcCBzb21lIGZ1bmN0aW9uIHByb3RvdHlwZXMgaW4gdGhlIGNvbmRpdGlvbmFsIHdoaWNoIGluZGljYXRlcwoJd2hldGhlciB0aGV5IGFyZSBzdXBwb3J0ZWQsIGkuZS4gIkJJVFNfUEVSX1VOSVQgPT0gOCIuCgoyMDAwLTAzLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYzogUmV2ZXJ0IGxhc3QgdHdvIGNoYW5nZXMuCgoyMDAwLTAzLTE2ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGZwLWJpdC5jIChfdW5wYWNrX2QpOiBJZiBOT19ERU5PUk1BTFMgaXMgZGVmaW5lZCwgYW55dGhpbmcgdGhhdAoJaGFzIGV4cG9uZW50IDAgaXMgYSB6ZXJvLgoKCSogc2ltcGxpZnktcnR4LmMgKGhhc2hfcnR4LCBjYXNlIE1FTS9SRUcpOiBUYWtlIGludG8gYWNjb3VudCB0aGF0CglIQVNIIG1heSBhbHJlYWR5IGJlIG5vbnplcm8uICBBZGQgY29kZS9tb2RlIGludG8gaGFzaCB2YWx1ZQoJaW1tZWRpYXRlbHkgYWZ0ZXIgcmVwZWF0IGxhYmVsLgoJKGNzZWxpYl9sb29rdXApOiBEb24ndCBsZWF2ZSB0aGUgaGFzaCB0YWJsZSBpbiBhbiBpbmNvbnNpc3RlbnQKCXN0YXRlIGJlZm9yZSBhIGhhc2ggbG9va3VwIG9wZXJhdGlvbi4KClRodSBNYXIgMTYgMTc6MDM6MTAgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFsbCBISSBhbmQgUUkgbW9kZSBub24tbW92ZSBwYXR0ZXJucyk6ICBDb25kaXRpb25pemUKCWJ5IFRBUkdFVF9bSFFdSU1PREVfTUFUSC4KCSogaTM4Ni5oICh4ODZfaGltb2RlX21hdGgsIHg4Nl9xaW1vZGVfbWF0aCwgeDg2X3Byb21vdGVfaGlfcmVncywKCXg4Nl9wcm9tb3RlX3FpX3JlZ3MpOiBEZWNsYXJlLgoJKFRBUkdFVF9ISU1PREVfTUFUSCwgVEFSR0VUX1FJTU9ERV9NQVRILCBUQVJHRVRfUFJPTU9URV9ISV9SRUdTLAoJVEFSR0VUX1BST01PVEVfUUlfUkVHUyk6IE5ldyBtYWNyb3MuCgkoUFJPTU9URV9NT0RFKTogTmV3IG1hY3JvLgoJKiBpMzg2LmMgKHg4Nl9oaW1vZGVfbWF0aCwgeDg2X3FpbW9kZV9tYXRoLCB4ODZfcHJvbW90ZV9oaV9yZWdzLAoJeDg2X3Byb21vdGVfcWlfcmVncyk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoKVGh1IE1hciAxNiAxNjo1MDo0NCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEJyZWFrIG91dCBmcm9tIC4uLjsgaGFuZGxlCglWT0lEbW9kZSBmdW5jdGlvbiBjYWxscyB0b28uCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiAuLi4gaGVyZS4KCShlbWl0X2xpYnJhcnlfY2FsbCk6IEltcGxlbWVudCBieSBjYWxsaW5nIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEuCgpUaHUgTWFyIDE2IDE2OjAxOjMwIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvIHNhbml0eSBjaGVja2luZyBvbiBhcmdfc3BhY2Vfc29fZmFyLgoJVXBkYXRlIGFyZ19zcGFjZV9zb19mYXIgb24gc3RhY2sgYWRqdXN0bWVudHMuCgkoZW1pdF9saWJyYXJ5X2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogTGlrZXdpc2U7IHRha2UgaW50bwoJYWNjb3VudCBhcmdfc3BhY2Vfc29fZmFyIGFuZCBwZW5kaW5nX3N0YWNrX2FkanVzdCB3aGVuIGNhbGN1bGNhdGluZwoJdGhlIGJvdW5kYXJ5LgoKVGh1IE1hciAxNiAwOTowMjoxOSAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZmxvdy5jOiBNb3ZlIGFsbCBiYXNpYyBibG9jayByZW9yZGVyaW5nIGNvZGUgaW50byBpdHMgb3duIGZpbGUuCgkoY3JlYXRlX2Jhc2ljX2Jsb2NrKTogRXh0ZXJuYWxpemUuCgkqIGJiLXJlb3JkZXIuYzogTmV3IGZpbGUuIENvcHkgYWxsIGJhc2ljIGJsb2NrIHJlb3JkZXJpbmcgY29kZSBmcm9tCglmbG93LmMgdG8gdGhpcyBmaWxlLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogRml4IGZlbmNlcG9zdCBlcnJvciBpbiBmb3ItbG9vcC4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSBicmFjZXMgZnJvbSBzaW5nbGUgc3RhdGVtZW50IGZvci1sb29wcy4KCSogYmFzaWMtYmxvY2suaDogQWRkIGRlY2xhcmF0aW9uIGZvciBjcmVhdGVfYmFzaWNfYmxvY2suCgkqIE1ha2VmaWxlLmluOiBBZGQgcnVsZXMgZm9yIGJiLXJlb3JkZXIuby4KCjIwMDAtMDMtMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChoYW5kbGVfb3B0aW9uKTogIEltcGxlbWVudCAjdW5hc3NlcnQgZGlyZWN0aXZlCglhcyAtQS0gY29tbWFuZCBsaW5lIG9wdGlvbi4KCShwcmludF9oZWxwKTogIFVwZGF0ZS4KCSogY3BwdGV4aS5jOiAgVXBkYXRlLgoKVGh1IE1hciAxNiAwMjoxNDoxNiAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBtZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IERvY3VtZW50IGBqdW1wJy4KCjIwMDAtMDMtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiBOb3Rocm93IGZ1bmN0aW9ucyBjYW4gc3RpbGwgaGF2ZSBub25sb2NhbAoJZ290b3MuCgoyMDAwLTAzLTE1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJTWVyZ2UgY2hhbmdlcyBmcm9tIG5ld3BwYy1icmFuY2ggb250byB0cnVuay4KCgkyMDAwLTAzLTE1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAodG9jX2hhc2hfdGFibGUpOiBVcGRhdGUgZm9yIG5ldyBoYXNoIHRhYmxlIGZ1bmN0aW9ucy4KCSh0b2NfaGFzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHRvY19oYXNoX2VxKTogTGlrZXdpc2UuCgkodG9jX2hhc2hfbWFya19lbnRyeSk6IExpa2V3aXNlLgoJKHRvY19oYXNoX21hcmtfdGFibGUpOiBMaWtld2lzZS4KCShvdXRwdXRfdG9jKTogTGlrZXdpc2UuCgkocnM2MDAwX2FkZF9nY19yb290cyk6IExpa2V3aXNlLgoKCTIwMDAtMDMtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogdC1haXg0MyAoQVJfRk9SX1RBUkdFVCk6IERlbGV0ZWQuICBNb3ZlZCBgLVgzMl82NCcuLi4KCShBUl9GTEFHU19GT1JfVEFSR0VUKTogaGVyZS4gIE5ldyBtYWNyby4KCgkyMDAwLTAzLTA1ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9mcG1lbV9vZmZzZXQsIHJzNjAwMF9mcG1lbV9zaXplLAoJZnBtZW1fb3BlcmFuZCkgRGVsZXRlLgoJKHhlcl9vcGVyYW5kKSBOZXcuCgkocnM2MDAwX3JlZ19uYW1lcywgYWx0X3JlZ19uYW1lcyk6IENoYW5nZSBmcG1lbSB0byB4ZXIuCgkobWFjaGluZV9mdW5jdGlvbik6IFJlbW92ZSBmcG1lbV9zaXplLCBmcG1lbV9vZmZzZXQsIHNhdmVfdG9jX3AuCgkocnM2MDAwX3NhdmVfbWFjaGluZV9zdGF0dXMsIHJzNjAwMF9yZXN0b3JlX21hY2hpbmVfc3RhdHVzLAoJcnM2MDAwX2luaXRfZXhwYW5kZXJzLCByczYwMDBfc3RhY2tfaW5mbywgZGVidWdfc3RhY2tfaW5mbyk6IFJlbW92ZQoJcmVmZXJlbmNlcyB0byBhYm92ZSB2YXJpYWJsZXMuCgkoZ3BjX3JlZ19vcGVyYW5kKTogVXNlIFhFUl9SRUdOT19QIGluc3RlYWQgb2YgRlBNRU1fUkVHTk9fUC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUkVHX0FMTE9DX09SREVSLCBSRUdJU1RFUl9OQU1FUywKCURFQlVHX1JFR0lTVEVSX05BTUVTKTogQ2hhZ25lIGZwbWVtIHRvIHhlci4KCShGUE1FTV9SRUdOT19QLCBGUE1FTV9SRUdOVU0pOiBEZWxldGUuCgkoWEVSX1JFR05PX1AsIFhFUl9SRUdOTyk6IE5ldy4KCShyczYwMDBfc3RhY2spOiBSZW1vdmUgZnBtZW1fcCwgZnBtZW1fb2Zmc2V0LCBmcG1lbV9zaXplLgoJKFBSRURJQ0FURV9DT0RFUyk6IENoYW5nZSBmcG1lbV9vcGVyYW5kIHRvIHhlcl9vcGVyYW5kLgoJKEhBUkRfUkVHTk9fTlJFR1MsIEhBUkRfUkVHTk9fTU9ERV9PSyk6IENoYW5nZSBGUE1FTV9SRUdOT19QIHRvCglYRVJfUkVHTk9fUC4KCShyZWdfY2xhc3MsIFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTLCBSRUdOT19SRUdfQ0xBU1MsCglSRUdfQ0xBU1NfRlJPTV9MRVRURVIsIENMQVNTX01BWF9OUkVHUyk6IENoYW5nZSBGUE1FTV9SRUdTIHRvIFhFUl9SRUdTLAkJYW5kIHJlbW92ZSBGTE9BVF9PUl9GUE1FTV9SRUdTLgoJKENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRSk6IENoYW5nZSB0byBGTE9BVF9SRUdTLgoKCTIwMDAtMDItMjkgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGFpeC5oIChGUF9TQVZFX0lOTElORSwgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTF9QUkVGSVgsCglURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKTogTW92ZSBoZXJlLi4uCgkqIHJzNjAwMC5oOiBmcm9tIGhlcmUuCgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9zZWxlY3Rfc2VjdGlvbik6IFByb3ZpZGUgcHJvdG90eXBlLgoJKHJzNjAwMF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBMaWtld2lzZS4KCShyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKHNkYXRhX3NlY3Rpb24pOiBMaWtld2lzZS4KCShzZGF0YTJfc2VjdGlvbik6IExpa2V3aXNlLgoJKHNic3Nfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBzeXN2NC5oIChyczYwMDBfc2VsZWN0X3NlY3Rpb24pOiBEZWxldGUgcHJvdG90eXBlLgoJKHJzNjAwMF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBMaWtld2lzZS4KCShyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKHNkYXRhX3NlY3Rpb24pOiBMaWtld2lzZS4KCShzZGF0YTJfc2VjdGlvbik6IExpa2V3aXNlLgoJKHNic3Nfc2VjdGlvbik6IExpa2V3aXNlLgoJKFJFR19TQVZFX0FSRUEpOiBEZWxldGUgZGVmaW5pdGlvbiBkdXBsaWNhdGVkIGluIHJzNjAwMC5oLgoKCSogc3lzdjQuaDogRGVsZXRlIHZhcmlvdXMgdW5uZWNlc3NhcnkgI3VuZGVmJ3MgYW5kIHB1dCBhIGNvbW1lbnQKCW9uIHRoZSByZW1haW5pbmcgb25lcy4KCUNoYW5nZSB2YXJpb3VzIGNvbW1lbnRzIGFjY29yZGluZyB0byBjb2Rpbmcgc3RhbmRhcmQuCgoJMjAwMC0wMi0yOSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChNUV9SRUdOTywgQ1IwX1JFR05PLCBDUjFfUkVHTk8sIENSMl9SRUdOTywKCUNSM19SRUdOTywgQ1I0X1JFR05PLCBNQVhfQ1JfUkVHTk8pOiBEZWZpbmUuCgkoQ1IwX1JFR05PX1ApIFJlbW92ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZ3BjX3JlZ19vcGVyYW5kLCBhbmQ2NF9vcGVyYW5kLCBhbmRfb3BlcmFuZCwKCXNldHVwX2luY29taW5nX3ZhcmFyZ3MsIG10Y3JmX29wZXJhdGlvbiwgcHJpbnRfb3BlcmFuZCwKCXJzNjAwMF9zdGFja19pbmZvLCByczYwMDBfZW1pdF9wcm9sb2d1ZSwgcnM2MDAwX2VtaXRfZXBpbG9ndWUpOgoJVXNlIHRoZSBhYm92ZSBtYWNyb3MuCgoJMjAwMC0wMi0yNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogQWRkZWQgYSBuZXcgYWx0ZXJuYXRpdmUgZm9yIGVhY2gKCXBhdHRlcm4gdGhhdCBoYWQgYSAneCcgYWx0ZXJuYXRpdmUgYnV0IG5vICd5JyBhbHRlcm5hdGl2ZS4KCUFkZGVkIGEgbmV3IHNwbGl0IGZvciBlYWNoIG9mIHRoZSBhYm92ZSBwYXR0ZXJucy4KCgkyMDAwLTAyLTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhaXg0MS5oIChBU01fQ1BVX1NQRUMpOiBEZWxldGUuCgkoQ1BQX0NQVV9TUEVDKTogRGVsZXRlLgoKCSogYWl4LmggKFJTNjAwMF9PVVRQVVRfQkFTRU5BTUUpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9MQUJFTCk6IERlZmluZS4KCShBU01fR0xPQkFMSVpFX0xBQkVMKTogRGVmaW5lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBEZWZpbmUuCgkqIHJzNjAwMC5oIChSUzYwMDBfT1VUUFVUX0JBU0VOQU1FKTogRG9uJ3QgZGVmaW5lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBEb24ndCBkZWZpbmUuCgkoQVNNX09VVFBVVF9MQUJFTCk6IERvbid0IGRlZmluZS4KCShBU01fR0xPQkFMSVpFX0xBQkVMKTogRG9uJ3QgZGVmaW5lLgoJKiBzeXN2NC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogVXNlIGFzc2VtYmxlX25hbWUgdG8gb3V0cHV0CgluYW1lcywgYW5kIEFTTV9PVVRQVVRfTEFCRUwgdG8gb3V0cHV0IGxhYmVscywgcmF0aGVyIHRoYW4KCWFzbV9mcHJpbnRmLgoJKEFTTV9PVVRQVVRfTEFCRUwpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9JTlQpOiBVc2UgYXNzZW1ibGVfbmFtZS4KCShBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBVc2UgYXNzZW1ibGVfbmFtZS4KCShTVFJJUF9OQU1FX0VOQ09ESU5HKTogRG9uJ3QgdW5kZWZpbmUgZmlyc3QuCgkoUlM2MDAwX09VVFBVVF9CQVNFTkFNRSk6IE1ha2UgZXF1aXZhbGVudCB0byBhc3NlbWJsZV9uYW1lIGZvcgoJRUxGLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEb24ndCBwcmVwZW5kIHVuZGVyc2NvcmVzIHRvIGxhYmVscwoJc3BlY2lmaWVkIHdpdGggJ2FzbScgZXZlbiB3aXRoIC1mbGVhZGluZy11bmRlcnNjb3JlLgoJKiByczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IFVzZSBhc3NlbWJsZV9uYW1lIHdoZW4gIVRBUkdFVF9BSVguCgkob3V0cHV0X2VwaWxvZyk6IExpa2V3aXNlLgoJKG91dHB1dF90b2MpOiBMaWtld2lzZS4KCSogdHJhbXAuYXNtOiBIYW5kbGUgLWZsZWFkaW5nLXVuZGVyc2NvcmUgY29ycmVjdGx5LgoKCSogcnM2MDAwLm1kIChidWlsdGluX3NldGptcF9yZWNlaXZlcik6IEFsc28gcnVuIGZvciAtZlBJQyBhbmQKCS1tbWluaW1hbC10b2MuCgkobm9ubG9jYWxfZ290b19yZWNlaXZlcik6IERlbGV0ZS4KCSogcnM2MDAwLmggKERPTlRfQUNDRVNTX0dCTFNfQUZURVJfRVBJTE9HVUUpOiBEZWxldGUuCgoJKiByczYwMDAuaCAoQVNNX09VVFBVVF9ERUYpOiBEb24ndCBkZWZpbmUuCgkoU0VUX0FTTV9PUCk6IERlZmluZS4KCSogc3lzdjQuaCAoQVNNX09VVFBVVF9ERUYpOiBEb24ndCB1bmRlZmluZS4KCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IERvbid0IGRlZmluZS4KCShBU01fTE9ORyk6IERlZmluZS4KCgkqIHJzNjAwMC5jIChyczYwMDBfZGxsX2ltcG9ydF9yZWYpOiBEZWxldGUsIG5vdCB1c2VkLgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9kbGxfaW1wb3J0X3JlZik6IERlbGV0ZS4KCgkqIHJzNjAwMC5oOiBBZGQgJ3UnIHRvIG1vcmUgY29uc3RhbnRzLgoKCTIwMDAtMDItMTggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5tZCAobWZjcitzaGlmdCk6IERlbGV0ZSBQb3dlclBDNjQgdmVyc2lvbi4KCgkyMDAwLTAyLTE1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAocmVnX29yX3VfY2ludF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKGxvZ2ljYWxfb3BlcmFuZCk6IEhhbmRsZSA2NC1iaXQgaG9zdHMuCgkobG9naWNhbF91X29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkobm9uX2xvZ2ljYWxfY2ludF9vcGVyYW5kKTogSGFuZGxlIDY0LWJpdCBob3N0cy4KCShub25fbG9naWNhbF91X2NpbnRfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogcnM2MDAwLmggKERBVEFfU0VDVElPTl9BU01fT1ApOiBBZGQgdGFiLgoJKFBSRURJQ0FURV9DT0RFUyk6IERlZmluZSBuZXcgZnVuY3Rpb25zLgoJKiByczYwMDAtcHJvdG9zLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9ucy4KCSogcnM2MDAwLm1kIChpb3JkaTMsIHhvcmRpMyk6IENvbnN0YW50IGludCBtdXN0IGJlIHVuc2lnbmVkIDMyLWJpdHMuCgkobW92ZGlfNjQpOiBCcmFja2V0IGNvZGUgaW50ZW5kZWQgZm9yIDY0LWJpdCBob3N0cy4gIENyZWF0ZQoJQ09OU1RfRE9VQkxFIGZvciAzMi1iaXQgdmFsdWVzLgoJKHNjYyBpbnNucyk6IEdlbmVyYXRlIERJbW9kZSBjb21wYXJlcy4KCShtZmNyIGluc25zKTogQ3JlYXRlIERJbW9kZSB2ZXJzaW9ucy4KCShzZ2UgbWF0Y2hlcnMpOiBOZXcgcGF0dGVybnMuCgoJMjAwMC0wMi0xNSAgR2FicmllbCBQYXViZXJ0ICA8cGF1YmVydEBpcmFtLmVzPgoKCSogcnM2MDAwLm1kOiBDb3JyZWN0IGluc3RydWN0aW9ucyBsZW5ndGggYXR0cmlidXRlcyBhbmQKCWNvbnN0cmFpbnRzIG9uIHVuc2lnbmVkIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLgoJKCpuZTApOiBEaXNhYmxlIGZvciBQb3dlclBDNjQuCgoJMjAwMC0wMi0xMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKG91dHB1dF9mdW5jdGlvbl9wcm9maWxlcik6IFVzZSAubG9uZyBmb3IgYSAzMi1iaXQKCXF1YW50aXR5LCBmaXggcHJvZmlsZTEuQyB0ZXN0IGZhaWx1cmUgdW5kZXIgLWZQSUMuCgoJKiByczYwMDAuYzogQWRkICd1JyB0byBtYW55IGNvbnN0YW50cyB0byBzdXBwcmVzcyB3YXJuaW5ncy4KCShjb25zdGFudF9wb29sX2V4cHJfMSk6IE1ha2Ugc3RhdGljLgoJKHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlKTogUmVtb3ZlIHVudXNlZCAncjInLgoJKiByczYwMDAuaDogQWRkICd1JyB0byBtYW55IGNvbnN0YW50cyB0byBzdXBwcmVzcyB3YXJuaW5ncy4KCgkqIHJzNjAwMC5jIChyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IFVzZSBMQ1RPQy4uMSB1bmRlciBBSVgKCWZvciB0aGUgc3RhcnQgb2YgdGhlIFRPQywgaW5zdGVhZCBvZiBMQ1RPQy4uMC4KCSogYWl4LmggKHRvY19zZWN0aW9uKTogVXNlIExDVE9DLi4xIHVuZGVyIEFJWCBmb3IgdGhlIHN0YXJ0CglvZiB0aGUgVE9DLgoJKiByczYwMDAubWQgKGxvYWRfdG9jX2FpeF9zaSk6IFVzZSBMQ1RPQy4uMS4KCShsb2FkX3RvY19haXhfZGkpOiBVc2UgTENUT0MuLjEuCgoJKiByczYwMDAuaCAoTEVHSVRJTUlaRV9BRERSRVNTKTogVHVybiBpbnRvIGEgZnVuY3Rpb24uCgkqIHJzNjAwMC5jIChyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTmV3IGZ1bmN0aW9uIGZyb20KCUxFR0lUSU1JWkVfQUREUkVTUy4gIE9ubHkgdXNlIGNyZWF0ZV9UT0NfcmVmZXJlbmNlIG9uCglzeW1ib2xzIGluIHRoZSBjb25zdGFudCBwb29sIHRoYXQgcmVhbGx5IGFyZSBUT0MgcmVmZXJlbmNlcy4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBGb3IgRUxGLCB3cml0ZSBUT0Mgb2Zmc2V0cyB1bmRlcgoJLWZQSUMgYXMgc3VidHJhY3Rpb25zIGluIHRoZSBpbnNuLgoJKG91dHB1dF90b2MpOiBGb3IgRUxGLCBkZWZpbmUgc3ltYm9scyBpbiBUT0MgYXMgbm9ybWFsIGxhYmVscywKCXRvIG1hdGNoIFJUTC4KCShjcmVhdGVfVE9DX3JlZmVyZW5jZSk6IFVzZSBnZW5fcnR4X1BMVVMgcmF0aGVyIHRoYW4gZ2VuX3J0eC4KCSogcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogUHJvdG90eXBlLgoJKGNyZWF0ZV9UT0NfcmVmZXJlbmNlKTogUHJvdG90eXBlIG9ubHkgd2hlbiBSVFhfQ09ERSBpcyBkZWZpbmVkLgoJKiByczYwMDAubWQgKG1vdnNpKTogT25seSB1c2UgY3JlYXRlX1RPQ19yZWZlcmVuY2Ugb24KCXN5bWJvbHMgaW4gdGhlIGNvbnN0YW50IHBvb2wgdGhhdCByZWFsbHkgYXJlIFRPQyByZWZlcmVuY2VzLgoKCSogcnM2MDAwLmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogRG9uJ3QgZGVmaW5lLgoJKiByczYwMDAuYyAocnM2MDAwX3Jlb3JnKTogRGVsZXRlLgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9yZW9yZyk6IERlbGV0ZS4KCgkyMDAwLTAyLTA5ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuaCAoSU5DT01JTkdfUkVUVVJOX0FERFJfUlRYKTogTmV3IG1hY3JvLgoKCSogYWl4LmggKFNFVFVQX0ZSQU1FX0FERFJFU1NFUyk6IERlZmluZS4KCSogcnM2MDAwLmMgW1RBUkdFVF9BSVhdIChpbnNuX2FmdGVyX3Rocm93KTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCVtUQVJHRVRfQUlYXSAocnM2MDAwX2FpeF9lbWl0X2J1aWx0aW5fdW53aW5kX2luaXQpOiBOZXcgZnVuY3Rpb24uCglbVEFSR0VUX0FJWF0gKHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlKTogTmV3IGZ1bmN0aW9uLgoJKiByczYwMDAtcHJvdG9zLmg6IFByb3RvdHlwZSByczYwMDBfZW1pdF9laF90b2NfcmVzdG9yZSwKCXJzNjAwMF9haXhfZW1pdF9idWlsdGluX3Vud2luZF9pbml0LgoJKiByczYwMDAubWQgKGVoX2VwaWxvZ3VlKSBbVEFSR0VUX0FJWF06IENhbGwKCXJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlIG9uIEFJWC4KCShyZXR1cm5fZWhfc2kpOiBVc2UgcjIuCgkocmV0dXJuX2VoX2RpKTogVXNlIHIyLgoKCSogYWl4NDMuaDogVHVybiBvbiBIQVNfSU5JVF9TRUNUSU9OIGFuZCBMRF9JTklUX1NXSVRDSCwKCXNpbmNlIHdlJ3JlIGJyZWFraW5nIGJpbmFyeSBjb21wYXRpYmlsaXR5IGFueXdheS4KCgkyMDAwLTAyLTA5ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oOiAoZ2V0X1RPQ19hbGlhc19zZXQsIHVzZXNfVE9DLAoJY29uc3RhbnRfcG9vbF9leHByX3ApOiBEZWNsYXJlIHRoZW0uCgkoY29uc3RhbnRfcG9vbF9leHByX3ApOiBEZWNsYXJlIGl0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jICh0b2NfbGFiZWxfbmFtZSk6IERlZmluZS4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCB0b2NfbGFiZWxfbmFtZS4KCShpbnB1dF9vcGVyYW5kKTogQWxsb3cgYW55IFRPQ19SRUxBVElWRV9FWFBSX1AuCgkoZ2V0X1RPQ19hbGlhc19zZXQsIGNvbnN0YW50X3Bvb2xfZXhwcl9wLCBjb25zdGFudF9wb29sX2V4cHJfMSwKCXVzZXNfVE9DKTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF9vcGVyYW5kKTogRGVsZXRlIG9sZCAnKicgY2FzZS4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBVc2UgTEVHSVRJTUFURV9DT05TVEFOVF9QT09MX0FERFJFU1NfUCwKCWFuZCBzdHJpcCBvZmYgcnRsIGZvciBUT0MgYmVmb3JlIGNhbGxpbmcgb3V0cHV0X2FkZHJfY29uc3QuCgkocnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUpOiBVc2UgdG9jX2xhYmVsX25hbWUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IE1ha2UgbXNjaGVkLXByb2xvZwoJdGhlIGRlZmF1bHQuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QT09MX0JBU0VfUCk6IERlbGV0ZS4KCShDT05TVEFOVF9QT09MX0VYUFJfUCwgVE9DX1JFTEFUSVZFX0VYUFJfUCk6IE5ldyBtYWNyb3MuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QT09MX0FERFJFU1NfUCk6IFVzZSBDT05TVEFOVF9QT09MX0VYUFJfUC4KCShMRUdJVElNSVpFX0FERFJFU1MsIExFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiBUdXJuIHN5bWJvbF9yZWZzCglpbnRvIGV4cGxpY2l0IFRPQ19SRUdJU1RFUiBvZmZzZXRzLgoJKFRPQ19SRUdJU1RFUik6IE5ldyBtYWNyby4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpLCBtb3ZkaSk6IEVtaXQgcnRsIHVuZGVyCglUQVJHRVRfVE9DIHRvIHJlZmVyZW5jZSBUT0NfUkVHSVNURVIuCgkobG9hZF90b2NfdjRfUElDXzFiKTogQWRkIDQgdG8gb2Zmc2V0IGZvciB0b2MgcmVsb2FkLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBDYWxsCgl1c2VzX1RPQyBiZWZvcmUgZW1pdHRpbmcgbGFiZWwgcmVmZXJlbmNlcy4KCgkyMDAwLTAyLTA1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKHN0YWNrX3RpZSk6IEZpeCB3YXJuaW5nLgoKCSogZWFiaS1jdG9ycy5jOiBVc2UgJ2FzbScgbmFtZXMgZm9yIHRoZSBzdGFydC9lbmQgdmFyaWFibGVzLAoJdG8gaGFuZGxlIC1mbGVhZGluZy11bmRlcnNjb3JlLgoJKiBzeXN2NC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogVXNlIGFzbV9mcHJpbnRmIGFuZCAlVS4KCShVU0VSX0xBQkVMX1BSRUZJWCk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMX1BSRUZJWCk6IFVzZSBhc21fZnByaW50ZiBhbmQgJUwuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IFVzZSBhc21fZnByaW50ZiBhbmQgJVUuCgkqIHQtcHBjY29tbSAoTVVMVElMSUJfTUFUQ0hFU19TWVNWKTogTm90ZSB0aGF0IGNhbGwtc3lzdiBhbmQKCWNhbGwtbGludXggY2FuIHVzZSB0aGUgc2FtZSBtdWx0aWxpYnMuCgkqIHQtcHBjZ2FzIChNVUxUSUxJQl9PUFRJT05TKTogRG9uJ3QgbmVlZCB0byBoYXZlIHNlcGFyYXRlIGNhbGwtc3lzdgoJYW5kIGNhbGwtbGludXggbXVsdGlsaWJzLiAgRG8gbXVsdGlsaWIgd2l0aCAtZmxlYWRpbmctdW5kZXJzY29yZS4KCShNVUxUSUxJQl9ESVJOQU1FUyk6IEZvbGxvdyBNVUxUSUxJQl9PUFRJT05TIGNoYW5nZS4KCShNVUxUSUxJQl9FWENFUFRJT05TKTogUmVtb3ZlIGNhbGwtbGludXggZXhjZXB0aW9ucy4gIEFkZCByZXN0cmljdGlvbnMKCXRvIGNhbGwtYWl4LgoKCSogc3lzdjQuaCAoQ1BQX1NZU1ZfU1BFQyk6IERlZmluZSBfU09GVF9GTE9BVCBmb3IgYWxsIHRob3NlIENQVXMgdGhhdAoJaGF2ZSBNQVNLX1NPRlRfRkxPQVQgc2V0LgoJKENQUF9GTE9BVF9ERUZBVUxUX1NQRUMpOiBOZXcgbWFjcm8uCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogU2V0IGBjcHBfZmxvYXRfZGVmYXVsdCcgdG8gdGhlIHZhbHVlIG9mCglDUFBfRkxPQVRfREVGQVVMVF9TUEVDLgoKCSogcnM2MDAwLmMgKGNjcl9iaXQpOiBBZGQgc29tZSBjb25zaXN0ZW5jeSBjaGVja3MgYW5kIGEgdmFyaWFibGUgJ3JlZycuCgkqIHJzNjAwMC5tZDogV2hpdGVzcGFjZSBjaGFuZ2UuCgkqIHN5c3Y0LmggKExJTktfVEFSR0VUX1NQRUMpOiBXaGl0ZXNwYWNlIGNoYW5nZS4KCSogc3lzdjRsZS5oIChMSU5LX1RBUkdFVF9TUEVDKTogV2hpdGVzcGFjZSBjaGFuZ2UuCgoJMjAwMC0wMi0wNSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChlaF9lcGlsb2d1ZSk6IE5ldyBleHBhbmRlci4KCShlaF9yZWdfcmVzdG9yZSk6IE5ldyBleHBhbmQvc3BsaXQvaW5zbiBjb21iaW5hdGlvbi4KCShyZXR1cm5fZWhfc2kpOiBOZXcgaW5zbi4KCShyZXR1cm5fZWhfZGkpOiBOZXcgaW5zbi4KCgkqIGVhYmktY2kuYXNtOiBQdXQgYSBsYWJlbCBhdCB0aGUgc3RhcnQgb2YgdGhlIC5laF9mcmFtZSBzZWN0aW9uLgoJKiBlYWJpLWNuLmFzbTogUHV0IGEgemVybyBhdCB0aGUgZW5kIG9mIHRoZSAuZWhfZnJhbWUgc2VjdGlvbi4KCSogZWFiaS1jdG9ycy5jIChfX2RvX2dsb2JhbF9jdG9ycyk6IFJlZ2lzdGVyIHRoaXMgb2JqZWN0J3MKCWZyYW1lLiAgQ2xlYW4gdXAuICBDYWxsIGF0ZXhpdCgpIGFmdGVyIHRoZSBjb25zdHJ1Y3RvcnMuCgkoX19kb19nbG9iYWxfZHRvcnMpOiBEZXJlZ2lzdGVyIHRoaXMgb2JqZWN0J3MgZnJhbWUuICBDbGVhbiB1cC4KCUFsbG93IGZvciByZWN1cnNpdmUgY2FsbHMgdG8gZXhpdCgpLgoJKiByczYwMDAuYyAoZml4dXBsYWJlbG5vKTogTmV3IHZhcmlhYmxlLgoJKiBzeXN2NC5oIChBU01fT1VUUFVUX0lOVCk6IERvbid0IGRvIC5maXh1cCBpZiBub3QKCVRBUkdFVF9SRUxPQ0FUQUJMRSwgaXQgc2xvd3MgZG93biBleGVjKCkgdW5kZXIgbGludXguCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSKTogRG8gLmZpeHVwIGlmIFRBUkdFVF9SRUxPQ0FUQUJMRS4KCgkqIGFpeC5oIChBU01fT1VUUFVUX0RXQVJGX0FERFJfVkFSKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREVMVEFfVkFSKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREVMVEEyKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREVMVEE0KTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9ERUxUQSk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9EQVRBNCk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX0RBVEEyKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfT0ZGU0VUNCk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX09GRlNFVCk6IE5ldyBtYWNyby4KCShVTkFMSUdORURfSU5UX0FTTV9PUCk6IE5ldyBtYWNybywgZmFrZSBkZWZpbml0aW9uLgoKCTIwMDAtMDItMDMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jIChyczYwMDBfc3JfYWxpYXNfc2V0KTogTmV3IHZhcmlhYmxlLgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogSW5pdGlhbGlzZSByczYwMDBfc3JfYWxpYXNfc2V0LgoJKHJzNjAwMF9lbWl0X3N0YWNrX3RpZSk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9hbGxvY2F0ZV9zdGFjayk6IFNwZWNpZnkgUlRYX0ZSQU1FX1JFTEFURURfUAoJaW4gYSB3YXkgdGhhdCBkd2FyZjJvdXQgY2FuIHVuZGVyc3RhbmQuCgkocnM2MDAwX2ZyYW1lX3JlbGF0ZWQpOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVc2UgcnM2MDAwX3NyX2FsaWFzX3NldC4gIFNwZWNpZnkKCVJUWF9GUkFNRV9SRUxBVEVEX1AgaW4gYSB3YXkgdGhhdCBkd2FyZjJvdXQgY2FuIHVuZGVyc3RhbmQuCglVc2UgcnM2MDAwX2VtaXRfc3RhY2tfdGllIHdoZW4gbmVlZGVkLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogVXNlIHJzNjAwMF9zcl9hbGlhc19zZXQuICBEb24ndCBzZXQKCVJUWF9GUkFNRV9SRUxBVEVEX1AuICBVc2UgcnM2MDAwX2VtaXRfc3RhY2tfdGllIHdoZW4gbmVlZGVkLgoJKiByczYwMDAubWQgKHN0YWNrX3RpZSk6IE5ldyBpbnNuLgoJKHJldHVybl9pbnRlcm5hbF9zaSk6IEFsbG93IHJldHVybiB2YWx1ZSB0byBiZSBpbiB0aGUgY291bnQKCXJlZ2lzdGVyLgoJKHJldHVybl9pbnRlcm5hbF9kaSk6IExpa2V3aXNlLgoKCSogcnM2MDAwLmMgKG91dHB1dF9taV90aHVuayk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHNwJy4KCgkyMDAwLTAyLTAzICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzeXN2NC5oIChMT0NBTF9MQUJFTF9QUkVGSVgpOiBEZWZpbmUsIGZvciB0aGUgdXNlIG9mIGRieGVsZi5oLgoKCTIwMDAtMDEtMzEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogTmV3IG1hY3JvLgoKCSogcnM2MDAwLm1kIChzdG13KTogVXNlIHRoZSByaWdodCBQT1dFUiBvcGNvZGUuCgkobG13KTogTGlrZXdpc2UuCgoJMjAwMC0wMS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnM2MDAwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHJzNjAwMC5jOiBJbmNsdWRlIHRtX3AuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiByczYwMDAuaDogTW92ZSBwcm90b3R5cGVzIHRvIHJzNjAwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogc3lzdjQuaDogTGlrZXdpc2UuCgoJMjAwMC0wMS0yOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogLi4vLi4vY29uZmlndXJlLmluOiBEZWxldGUgcG93ZXJwY2xlLSotd2lubnQqCglhbmQgcG93ZXJwY2xlLSotcGV8cG93ZXJwY2xlLSotY3lnd2luKi4KCSogLi4vLi4vY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY3lnd2luLmg6IERlbGV0ZS4KCSogcnM2MDAwLmggKE9CSkVDVF9XSU5ET1dTX05UKTogRGVsZXRlLgoJKFRBUkdFVF9XSU5ET1dTX05UKTogRGVsZXRlLgoJKEFCSV9OVCk6IERlbGV0ZS4KCShDQUxMX05UX0RMTElNUE9SVCk6IERlbGV0ZS4KCURlbGV0ZSBOVC1zcGVjaWZpYyBjb2RlLgoJKiByczYwMDAubWQsIHJzNjAwMC5jLCBzeXN2NC5oOiBEZWxldGUgTlQtc3BlY2lmaWMgY29kZS4KCSogd2luLW50Lmg6IERlbGV0ZS4KCSogdC13aW5udDogRGVsZXRlLgoJKiBudC1jaS5hc206IERlbGV0ZS4KCSogbnQtY24uYXNtOiBEZWxldGUuCgkqIG50c3RhY2suYXNtOiBEZWxldGUuCgoJMjAwMC0wMS0yNyAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogcnM2MDAwLmggKFNFTEVDVF9SVFhfU0VDVElPTik6IE1vdmUgdG8gYWl4LmguCgkoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCShBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfU0tJUCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0NBU0VfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCTIwMDAtMDEtMjcgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlKTogVXNlICJMQ0ciIGFuZAoJcmVsb2FkX3RvY19sYWJlbG5vIGZvciBub24tcHJvbG9ndWUgVE9DIHJlbG9hZHMuICBBbHNvLCBkb24ndAoJaW5jcmVtZW50IHJzNjAwMF9waWNfbGFiZWxubyBoZXJlLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogUGFzcyBUUlVFIHRvIHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlLAoJYW5kIGluY3JlbWVudCByczYwMDBfcGljX2xhYmVsbm8gaGVyZS4KCgkyMDAwLTAxLTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKGZjdGl3eik6IFVzZSAoc2V0IChyZWcpICh1bnNwZWM6REkgWyhmaXg6U0kgLi4uKV0pKQoJcmF0aGVyIHRoYW4gKHNldCAoc3VicmVnOlNJIChyZWcpKSAoZml4OlNJIC4uLikpIHNvIHRoYXQgcmVnaXN0ZXIKCWFsbG9jYXRpb24ga25vd3MgKHJlZykgaXMgZGVhZCBiZWZvcmUgdGhlIGluc24uCgoJMjAwMC0wMS0yMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChtb3ZzaV90b19jcik6IENvcnJlY3QgdHlwbyBpbiBvdXRwdXQgdGVtcGxhdGUuCgoJMjAwMC0wMS0xOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF9waWNfbGFiZWxubyk6IEFsd2F5cyBkZWZpbmUuCgkocnM2MDAwX3BpY19mdW5jX2xhYmVsbm8pOiBEZWxldGUuCgkobG13X29wZXJhdGlvbik6IENoZWNrIGZvciBhIHplcm8gYmFzZSByZWdpc3RlciwKCXdoaWNoIGRvZXNuJ3QgbWVhbiB3aGF0IHdlIHdhbnQuCgkoc3Rtd19vcGVyYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfb3BlcmFuZCk6IERlZmluZSBuZXcgJ2wnIG1vZGlmaWVyLgoJKHJzNjAwMF9zdGFja19pbmZvKTogV2UgbXVzdCBzYXZlIGFsbCA2NCBiaXRzIG9mIHRoZSByZWdpc3RlcnMKCWlmIFRBUkdFVF9QT1dFUlBDNjQuCgkocnM2MDAwX291dHB1dF9sb2FkX3RvY190YWJsZSk6IERlbGV0ZS4KCShyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfYWxsb2NhdGVfc3RhY2tfc3BhY2UpOiBEZWxldGUuCgkocnM2MDAwX2VtaXRfYWxsb2NhdGVfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X3Byb2xvZyk6IFVzZSByczYwMDBfZW1pdF9wcm9sb2d1ZS4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IENoYW5nZSBhIGZldyB2YXJpYWJsZSBuYW1lcyB0byBiZQoJbW9yZSBhY2N1cmF0ZS4gIFJlc3RvcmUgYWxsIDY0IGJpdHMgb2YgdGhlIHJlZ2lzdGVycyBpZgoJVEFSR0VUX1BPV0VSUEM2NC4gIE9ubHkgcmVzdG9yZSB0aGUgRlAgcmVnaXN0ZXJzIHdoaWNoIHdlcmUgdXNlZAoJaWYgdGhleSBhcmUgYmVpbmcgc2F2ZWQvcmVzdG9yZWQgb25lLWF0LWEtdGltZS4KCShvdXRwdXRfbWlfdGh1bmspOiBEZWxldGUgaW5lZmZpY2llbnQgY29kZSBnZW5lcmF0aW9uLgoJKG91dHB1dF9mdW5jdGlvbl9wcm9maWxlcik6IERvbid0IHVzZSByczYwMDBfb3V0cHV0X2xvYWRfdG9jX3RhYmxlLgoJKiByczYwMDAuaDogRGVjbGFyZSByczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSwKCXJzNjAwMF9hbGxvY2F0ZV9zdGFja19zcGFjZSwgc3Rtd19vcGVyYXRpb24uICBEb24ndCBkZWNsYXJlCglyczYwMDBfb3V0cHV0X2xvYWRfdG9jX3RhYmxlLgoJKiByczYwMDAubWQgKGVsZl9oaWdoKTogQWxsb3cgcmVnaXN0ZXIgMCwgYnV0IGRpc2NvdXJhZ2UgaXQKCWhlYXZpbHkuCgkoZWxmX2xvdyk6IFN1cHBvcnQgbG9hZGluZyBpbnRvIHJlZ2lzdGVyIDAuCgkobG9hZF90b2NfYWl4X3NpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfYWl4X2RpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfdjRfcGljX3NpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfdjRfcGljX2RpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfdjRfUElDXzEpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9QSUNfMWIpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9QSUNfMik6IE5ldyBwYXR0ZXJuLgoJKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogVXNlIHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlLgoJKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiBVc2UgcnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUuCgkocHJvbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkobW92ZXNpX2Zyb21fY3IpOiBOZXcgcGF0dGVybi4KCShzdG13KTogTmV3IHBhdHRlcm4uCgkoc2F2ZV9mcHJlZ3Nfc2kpOiBOZXcgcGF0dGVybi4KCShzYXZlX2ZwcmVnc19kaSk6IE5ldyBwYXR0ZXJuLgoKCTIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZCAobW92c2kpOiBEb24ndCB1c2UgZm9yY2VfcmVnIHdoZW4gbm9fbmV3X3BzZXVkb3MuCgkobW92ZGkpOiBMaWtld2lzZS4KCShtb3ZoaSk6IExpa2V3aXNlLgoJKG1vdnFpKTogTGlrZXdpc2UuCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChtb3ZzaV9nb3QpOiAndW5zcGVjIDgnIHJldHVybnMgYSBTSW1vZGUgcmVzdWx0LAoJYXQgcHJlc2VudC4KCShtb3ZzaV9nb3RfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShtb3ZzaV9nb3RfaW50ZXJuYWwrMSk6IExpa2V3aXNlLgoJKHNldF9zcCk6ICd1bnNwZWMgNycgZG9lcyBhIFNJbW9kZSBjbG9iYmVyLgoKCTIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZCAoZmxvYXRzaWRmMik6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIiwganVzdAoJYWxsb2NhdGUgYSBzdGFjayB0ZW1wb3JhcnkuCgkoZmxvYXRzaWRmMl9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGZsb2F0c2lkZjJfaW50ZXJuYWwrMSk6IExpa2V3aXNlLiAgRG9uJ3QgZG8gYml6emFyZSBoYWNrcwoJd2l0aCB1bnNwZWMuCgkoZmxvYXR1bnNzaWRmMik6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIiwganVzdAoJYWxsb2NhdGUgYSBzdGFjayB0ZW1wb3JhcnkuCgkoZmxvYXR1bnNzaWRmMl9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGZsb2F0dW5zc2lkZjJfaW50ZXJuYWwrMSk6IExpa2V3aXNlLiAgRG9uJ3QgZG8gYml6emFyZSBoYWNrcwoJd2l0aCB1bnNwZWMuCgkoZmxvYXRzaWRmMl9sb2FkYWRkcik6IERlbGV0ZS4KCShmbG9hdHNpZGYyX3N0b3JlMSk6IERlbGV0ZS4KCShmbG9hdHNpZGYyX3N0b3JlMik6IERlbGV0ZS4KCShmbG9hdHNpZGYyX2xvYWQpOiBEZWxldGUuCgkoZml4X3RydW5jZGZzaTIpOiBEb24ndCB1c2UgdGhlIGZwbWVtICJyZWdpc3RlciIsIGp1c3QKCWFsbG9jYXRlIGEgc3RhY2sgdGVtcG9yYXJ5LgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsX3NpKTogRGVsZXRlLgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsX2RpKTogRGVsZXRlLgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsKTogTmV3IGluc24uCgkoZml4X3RydW5jZGZzaTJfaW50ZXJuYWwrMSk6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIi4KCShmaXhfdHJ1bmNkZnNpMl9zdG9yZSk6IERlbGV0ZS4KCShmaXhfdHJ1bmNkZnNpMl9sb2FkKTogRGVsZXRlLgoJKGZjdGl3eik6IFByb2R1Y2UgZ2VuX2ZjdGl3ei4KCgkyMDAwLTAxLTE5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBlYWJpLmggKElOVk9LRV9fbWFpbik6IERlZmluZS4KCSogcnM2MDAwLmMgKHJzNjAwMF9zdGFja19pbmZvKTogRG9uJ3QgaGFuZGxlIGNhbGwgdG8gTkFNRV9fTUFJTgoJc3BlY2lhbGx5LgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkqIHJzNjAwMC5oIChzdHJ1Y3QgcnM2MDAwX3N0YWNrKTogRG9uJ3Qga2VlcCB0cmFjayBvZiB3aGV0aGVyCgl0aGlzIGlzIHRoZSBtYWluIHByb2dyYW0uCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF92YV9hcmcpOiBEZWxldGUgc29tZSB1bnVzZWQgdmFyaWFibGVzLgoKCTIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jIChyczYwMDBfdmFfYXJnKTogT24gQUlYLCBwYWRkaW5nIGZvciBzbWFsbCBhcmd1bWVudHMKCWdvZXMgYWZ0ZXIgdGhlIGFyZ3VtZW50LgoKCTIwMDAtMDEtMTIgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZDogRG9jdW1lbnQgJ3Vuc3BlYycgdmFsdWVzIHVzZWQuCgkoZXBpbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkobW92ZXNpX3RvX2NyX29uZSk6IE5ldyBleHBhbmRlci4KCShtb3Zlc2lfdG9fY3IgYW5kIGZvbGxvd2luZyk6IE5ldyBwYXR0ZXJuLgoJKGxtdyk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9pbnRlcm5hbF9zaSk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9pbnRlcm5hbF9kaSk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9hbmRfcmVzdG9yZV9mcHJlZ3Nfc2kpOiBOZXcgcGF0dGVybi4KCShyZXR1cm5fYW5kX3Jlc3RvcmVfZnByZWdzX2RpKTogTmV3IHBhdHRlcm4uCgkqIHJzNjAwMC5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgkqIHJzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IFVzZSBjdXJyZW50X2Z1bmN0aW9uX2lzX2xlYWYKCXJhdGhlciB0aGFuIHJzNjAwMF9jYWxsc19wLgoJKHJzNjAwMF9tYWtlc19jYWxscyk6IERlbGV0ZS4KCShsbXdfb3BlcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKG10Y3JmX29wZXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfZXBpbG9nKTogQ2FsbCByczYwMDBfZW1pdF9lcGlsb2d1ZSBhbmQgZmluYWwgaWYKCSFUQVJHRVRfU0NIRURfUFJPTE9HLCBpbnN0ZWFkIG9mIHdyaXRpbmcgdGV4dCB1bmNvbmRpdGlvbmFsbHkuCgoJMjAwMC0wMS0xMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYWl4NDMuaCAoU1VCU1VCVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgc3dpdGNoZXMuCgkqIGFpeDQxLmggKFNVQlNVQlRBUkdFVF9TV0lUQ0hFUyk6IERvY3VtZW50IHN3aXRjaGVzLgoJKiBhaXguaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgc3dpdGNoZXMuCgkqIHJzNjAwMC5oOiAoVEFSR0VUX1NXSVRDSEVTKTogRG9uJ3QgcHJpbnQgb3B0aW9ucyB0d2ljZS4gIE1ha2UKCXNjaGVkLXByb2xvZyBhbmQgc2NoZWQtZXBpbG9nIHRoZSBzYW1lLiAgRG9jdW1lbnQgYWxsIHRoZQoJc3dpdGNoZXMuCgkoVEFSR0VUX09QVElPTlMpOiBObyBsb25nZXIgYWxsb3cgLW1kZWJ1Zy0uCgoJMjAwMC0wMS0xMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmggKEFTTV9GSUxFX0VORCk6IE1vdmUgdG8gYWl4LmguCgkoRVhUUkFfU0VDVElPTlMpOiBNb3ZlIHRvIGFpeC5oLgoJKFJFQURPTkxZX0RBVEFfU0VDVElPTik6IE1vdmUgdG8gYWl4LmguCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBNb3ZlIHRvIGFpeC5oLgoJKFNFTEVDVF9TRUNUSU9OKTogTW92ZSB0byBhaXguaC4KCShKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBNb3ZlIHRvIGFpeC5oLgoJKElOVF9SRUdOT19QKTogVXNlIHN5bWJvbGljIG5hbWUgZm9yIEFSR19QT0lOVEVSX1JFR05VTS4KCShMSU5LX1JFR0lTVEVSX1JFR05VTSk6IE5ldyBkZWZpbml0aW9uLgoJKFJFVFVSTl9BRERSX1JUWCk6IFVzZSBzeW1ib2xpYyBuYW1lIGZvciBMSU5LX1JFR0lTVEVSX1JFR05VTS4KCShTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBEZWZpbmUgaW4gYSB3YXkgc3VpdGFibGUgZm9yIGJvdGgKCUFJWCBhbmQgU1ZSNC4KCSogc3lzdjQuaDogRGVsZXRlIHRoZSBjb2RlIGJldHdlZW4gdGhlIGluY2x1c2lvbiBvZiByczYwMDAuaAoJYW5kIHN2cjQuaC4KCShEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IERvbid0IGRlZmluZSwgaXQncyBkZWZpbmVkIGluIGVsZm9zLmguCgkoRlBfQVJHX01BWF9SRUcpOiBNb3ZlIGdlbmVyaWMgZGVmaW5pdGlvbiB0byByczYwMDAuaC4KCShSUzYwMDBfUkVHX1NBVkUpOiBNb3ZlIGdlbmVyaWMgZGVmaW5pdGlvbiB0byByczYwMDAuaC4KCShSUzYwMDBfU0FWRV9BUkVBKTogTW92ZSBnZW5lcmljIGRlZmluaXRpb24gdG8gcnM2MDAwLmguCgkqIHJzNjAwMC5tZCAoZmxvYXRzaWRmMl9sb2FkYWRkcik6IFRoZSBmaXJzdCBhcmcgaGVyZSBpcyBQbW9kZS4KCShmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbCk6IFJlbmFtZSB0byBmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbF9zaS4KCShmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbF9kaSk6IE5ldyBwYXR0ZXJuLgoJKGZpeF90cnVuY2Rmc2kyX3N0b3JlKTogVGhlIHNlY29uZCBhcmcgaGVyZSBpcyBQbW9kZSB0b28uCgkoZml4X3RydW5jZGZzaTJfbG9hZCk6IFRoZSBzZWNvbmQgYXJnIGhlcmUgaXMgUG1vZGUgdG9vLgoJKHRhYmxlanVtcGRpKTogTm93IHRoYXQgc3dpdGNoIHRhYmxlcyBob2xkIG9ubHkgU0ltb2RlIHZhbHVlcywKCWdjYyBuZWVkcyB0byBrbm93IGhvdyB0byBhZGQgdGhlbSB0byB0aGUgcGMgd2hpY2ggaXMgREltb2RlLgoJKiByczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pOiBVc2Ugc3ltYm9saWMgbmFtZSBmb3IKCUxJTktfUkVHSVNURVJfUkVHTlVNLgoJKG91dHB1dF9taV90aHVuaykgWyFUQVJHRVRfRUxGXTogRG9uJ3QgZGVmaW5lIHNwLCBpdCdzIG5vdCB1c2VkLgoJKG91dHB1dF90b2MpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlcyBzMSBhbmQgczIuCgkob3V0cHV0X2FzY2lpKTogVXNlIGZwdXRzIG5vdCBmcHJpbnRmIG9uIGEgdmFyaWFibGUgc3RyaW5nLgoKCTIwMDAtMDEtMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogQWRkIHBvd2VyMyBhcyBhbGlhcyBmb3IgNjMwLgoJKiBhaXg0My5oOiBSZXZlcnQgQXVnIDIgY2hhbmdlLgoJKEhBU19JTklUX1NFQ1RJT04pOiBEZWZpbmUsIG5vdCB2aXNpYmxlIHlldC4KCShMRF9JTklUX1NXSVRDSCk6IERlZmluZSwgbm90IHZpc2libGUgeWV0LgoJKiB0LWFpeDQzIChNVUxUSUxJQl9PUFRJT05TKTogUmV2ZXJ0IEF1ZyAyIGNoYW5nZS4KCgkyMDAwLTAxLTA0ICBKb2VsIFNoZXJyaWxsIChqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnL3JzNjAwMC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoKCTIwMDAtMDEtMDQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5oIChIQU5ETEVfUFJBR01BX1BBQ0spOiBEZWZpbmUuCgkoU0xPV19VTkFMSUdORURfQUNDRVNTKTogRGVmaW5lLgoJKENBU0VfVkVDVE9SX01PREUpOiBBbHdheXMgdXNlIDMyLWJpdCBvZmZzZXRzLgoJKEFTTV9GSUxFX0VORCk6IEdlbmVyYXRlIDY0LWJpdCBzeW1ib2wgaW4gNjQtYml0IG1vZGUuCgkoRVhUUkFfU0VDVE9JTl9GVU5DVElPTlMpOiBJbmRlbnQgLmNzZWN0IHBzZXVkby1vcC4KCSh0b2Nfc2VjdGlvbik6IExpa2V3aXNlIGFuZCAudG9jIHBzZXVkby1vcC4KCShBU01fREVDTEFSRV9GVU5DVElPTik6IExpa2V3aXNlLiAgQWxpZ24gdGV4dCBtb3JlIHN0cmljdGx5IGluCgk2NC1iaXQgbW9kZS4KCShURVhUX1NFQ1RJT05fQVNNX09QKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BRERfVkVDX0VMVCwgQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogQWx3YXlzIHVzZQoJMzItYml0IG9mZnNldHMuCgoJMTk5OS0xMi0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChUQVJHRVRfUE9XRVJQQzY0KTogTWFrZSBzdXJlCglVTklUU19QRVJfV09SRCBhbmQgQklUU19QRVJfV09SRCBhcmUgY29tcGlsZSB0aW1lIGNvbnN0YW50cyB3aGVuCgljb21waWxpbmcgbGliZ2NjMi4KCgkyMDAwLTAxLTA2ICBGcmFueiBTaXJsIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIHJzNjAwMC5oOiBNb3ZlIG1vcmUgc3R1ZmYgZnJvbSBoZXJlLi4uCgkqIGFpeC5oOiB0byBoZXJlLgoJKiBzeXN2NC5oOiBDbGVhbnVwIGFjY29yZGluZ2x5LgoJKiBuZXR3YXJlLmg6IExpa2V3aXNlCgoJMjAwMC0wMS0wNSAgRnJhbnogU2lybCA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiByczYwMDAuaDogQ29udGludWUgY2xlYW51cC4KCSogYWl4Lmg6IExpa2V3aXNlLgoJKiBseW54Lmg6IExpa2V3aXNlLgoJKiBuZXR3YXJlLmg6IExpa2V3aXNlLgoJKiBzb2wyLmg6IExpa2V3aXNlLgoJKiBzeXN2NC5oOiBMaWtld2lzZS4KCSogd2luLW50Lmg6IExpa2V3aXNlLgoKCSogcnM2MDAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkZXNjcmlwdGlvbnMuCgkoVEFSR0VUX09QVElPTlMpOiBMaWtld2lzZS4KCgkqIHN5c3Y0LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkZXNjcmlwdGlvbnMuCgkoU1VCVEFSR0VUX09QVElPTlMpOiBMaWtld2lzZS4KCgkqIHJzNjAwMC5tZDogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkyMDAwLTAxLTA0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJdnh3b3JrcyBwYXRjaGVzIGZyb20gdGhlIEN5Z251cyB0cmVlIG9yaWdpbmFsbHkgYnkKCU1pY2hhZWwgTWVpc3NuZXIgPG1laXNzbmVyQGN5Z251cy5jb20+IGFuZCBWbGFkaW1pciBNYWthcm92Cgk8dm1ha2Fyb3ZAY3lnbnVzLmNvbT4uCgkqIHN5c3Y0LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCB2eHdvcmtzLgoJKEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKExJQl9WWFdPUktTX1NQRUMpOiBOZXcgbWFjcm8uCgkoU1RBUlRGSUxFX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShFTkRGSUxFX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShMSU5LX1NUQVJUX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShMSU5LX09TX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShDUFBfT1NfVlhXT1JLU19TUEVDKTogTmV3IG1hY3JvLgoJKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IEFkZCBhbGwgdGhlIHZ4d29ya3Mgc3BlY3MuCgkqIHZ4cHBjLmg6IFJld3JpdGUgdG8gdXNlIHByb3BlciBjb25maWd1cmF0aW9uIG1ldGhvZC4KCSogdnhwcGNsZS5oOiBOZXcgZmlsZS4KCSogLi4vLi4vY29uZmlndXJlLmluOiBBZGQgcG93ZXJwY2xlLXdycy12eHdvcmtzKi4KCSogLi4vLi4vY29uZmlndXJlOiBSZWJ1aWx0LgoKCTIwMDAtMDEtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCglMb3RzIG9mIGNoYW5nZXMgdG8gcnM2MDAwLmgsIHN5c3Y0LmgsIGFpeC5oLAoJYWl4MzEuaCwgYWl4M25ld2FzLmgsIGFpeDQxLmgsIGFpeDQzLmgsIGJlb3MuaCwKCXdpdGggdGhlIGFpbSB0aGF0IHJzNjAwMC5oIGlzIHRoZSBmaXJzdCBoZWFkZXIKCWluY2x1ZGVkIGFuZCB0aGUgb3RoZXJzIG92ZXJyaWRlIGl0LgoJKiBhaXguaDogTmV3IGZpbGUuCgoJKiB4LWFpeDQxLWdsZDogUmVtb3ZlLgoJKiB4LWFpeDQzOiBSZW1vdmUuCgkqIHgtYWl4NDE6IFJlbW92ZSB0YXJnZXQtc3BlY2lmaWMgc3dpdGNoZXMsIGFuZCBkb24ndCBzcGVjaWZ5CgktV2wsLWJiaWd0b2MgYXMgd2UgZG9uJ3QgbmVlZCBpdCBhbnkgbW9yZS4KCSogLi4vLi4vY29uZmlndXJlLmluOiBVc2UgeC1haXg0MSBmb3IgcHBjIEFJWCA0LjEgYW5kIGFib3ZlLgoJVXNlIHQtYWl4NDMgZm9yIEFJWCA0LjMgYW5kIGFib3ZlLgoJKiAuLi8uLi9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogcnM2MDAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBzb21lIGluaXRpYWwgcHJvbG9nLXNjaGVkdWxpbmcKCW9wdGlvbnMsIHRoYXQgZG9uJ3QgZG8gYW55dGhpbmcgeWV0LgoJKE1BU0tfU0NIRURfUFJPTE9HKTogTmV3IG1hY3JvLgoJKE1BU0tfU0NIRURfRVBJTE9HKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9TQ0hFRF9QUk9MT0cpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX1NDSEVEX0VQSUxPRyk6IE5ldyBtYWNyby4KCgkyMDAwLTAxLTA0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYzogQ29ycmVjdCBjb21tZW50LCB0aGUgYG1pbmltYWwnIFRPQ3MgYXJlIGFjdHVhbGx5CglvbmUgcGVyIHRyYW5zbGF0aW9uIHVuaXQsIG5vdCBvbmUgcGVyIGZ1bmN0aW9uLgoJKG91dHB1dF90b2MpOiBBbHNvIGRvIGR1cGxpY2F0ZSBjb25zdGFudCBlbGltaW5hdGlvbgoJZm9yIHBlci10cmFuc2xhdGlvbi11bml0IFRPQ3MuCgoJKiByczYwMDAubWQgKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiBQdXQgaXQgYmFjayBhcyBiZWZvcmUuICBBZGQKCWEgY29tbWVudCBleHBsYWluaW5nIF9leGFjdGx5XyB3aGVuIHRoaXMgcGF0dGVybiBnZXRzIHVzZWQuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBOZXcgcGF0dGVybiBmb3IgYmV0dGVyIGNsYXJpdHkuCgkoaW5pdF92NF9waWMpOiBNb3ZlIGl0IGludG8gYSBzZWN0aW9uIGRlYWxpbmcgd2l0aCBUT0MgcmVnaXN0ZXJzLgoKCTE5OTktMTItMzAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jICh0b2NfaGFzaF90YWJsZSk6IE5ldyB2YXJpYWJsZS4KCShyczYwMDBfaGFzaF9jb25zdGFudCk6IE5ldyBmdW5jdGlvbi4KCSh0b2NfaGFzaF9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh0b2NfaGFzaF9lcSk6IE5ldyBmdW5jdGlvbi4KCSh0b2NfaGFzaF9tYXJrX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKHRvY19oYXNoX21hcmtfdGFibGUpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X3RvYyk6IERvbid0IG91dHB1dCBkdXBsaWNhdGUgVE9DIGVudHJpZXMgaW4KCWEgc2luZ2xlIGZpbGUuCgkocnM2MDAwX2FkZF9nY19yb290cyk6IEFkZCB0aGUgaGFzaCB0YWJsZSBhcyBhIEdDIHJvb3QuCgkqIHQtYWl4NDM6IE1vdmUgQVJfRk9SX1RBUkdFVCBhbmQgQ0xJQiBoZXJlIGZyb20geC1haXg0MywKCXdoZXJlIHRoZXkgY2xlYXJseSBzaG91bGRuJ3QgYmUuICBUaGlzIG1heSBuZWVkIHRvIGJlIGZpeGVkCglsYXRlciB3aGVuIHRoZXJlIGlzIGEgR05VIGFyIGZvciBBSVguCgkqIHgtYWl4NDM6IERvbid0IGRlZmluZSBDTElCIG9yIEFSX0ZPUl9UQVJHRVQuCglEb24ndCBkZWZpbmUgQk9PVF9MREZMQUdTIGFzIGl0IGlzIG5vdyBub3QgbmVjZXNzYXJ5LgoKCTE5OTktMTItMjkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jIChyczYwMDBfYnVpbGRfdmFfbGlzdCk6IFVzZSAnY2hhciAqJyByYXRoZXIgdGhhbiAndm9pZCAqJwoJZm9yIHZhX2xpc3Qgb24gQUlYLiAgVXNlIHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlIHJhdGhlciB0aGFuCgljb25zdHJ1Y3Rpbmcgb3VyIG93biB2ZXJzaW9uIG9uIHN2cjQuCgoJMTk5OS0xMi0xNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogdHJhbXAuYXNtIChfX3RyYW1wb2xpbmVfc2l6ZSk6IERlbGV0ZSBDWUdOVVMgTE9DQUwgY29tbWVudCwKCXNpbmNlIHBhdGVudGx5IGl0J3Mgbm90LgoKCTE5OTktMTItMDggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChub25sb2NhbF9nb3RvX3JlY2VpdmVyKTogVHVybiBpbnRvCglkZWZpbmVfZXhwYW5kL2RlZmluZV9pbnNuIHBhaXIsIGFuZCBoYW5kbGUgcmVzdG9yZSBvZiB0aGUKCVNWUjQgLWZwaWMgcmVnaXN0ZXIuCgpXZWQgTWFyIDE1IDE1OjQzOjM4IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGFjY29uZmlnLmggKEhBVkVfR0FTX1dFQUspOiBOZXcgZGVmaW5lLgoJKiBjb25maWd1cmUuaW4gKGFzc2VtYmxlciB3ZWFrIHN1cHBvcnQpOiBDaGVjayBmb3IgLndlYWsgc3VwcG9ydC4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlYnVpbHQuCgkqIHBhL3NvbS5oIChNQUtFX0RFQ0xfT05FX09OTFksIEFTTV9XRUFLRU5fTEFCRUwpOiBPbmx5IGRlZmluZSBpZgoJSEFWRV9HQVNfV0VBSyBpcyBkZWZpbmVkLgoKMjAwMC0wMy0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBEbyBub3QgcGFzcyAlYyB0bwoJYXNtX2ZwcmludGYoKS4KCjIwMDAtMDMtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfaW5jbHVkZV9maWxlLCBjcHBfcmVhZF9maWxlKTogVXNlIGl0LgoKMjAwMC0wMy0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBoYXNoLmMgKGR1bXBfaGFzaF9oZWxwZXIpOiBUYWtlIHRoZSBzbG90LCBub3QgdGhlIGVsZW1lbnQuCgpXZWQgTWFyIDE1IDE0OjI4OjU0IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHZlcmlmeV9mbG93X2luZm8pOiBDaGVjayBmb3IgdW5jb25kaXRpb25hbCByZXR1cm4uCgpXZWQgTWFyIDE1IDExOjM0OjI3IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHJlc3RvcmVfc3RhY2tfbm9ubG9jYWwpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9faWE2NF9ub25sb2NhbF9nb3RvKTogRGVsZXRlIHBhZGRpbmcgbm9wLgoJKF9faWE2NF9yZXN0b3JlX3N0YWNrX25vbmxvY2FsKTogTmV3LgoJKiBjb25maWcvaWE2NC90LWlhNjQgKExJQjFBU01GVU5DUyk6IEFkZCBfX3Jlc3RvcmVfc3RhY2tfbm9ubG9jYWwuCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9mb3JtYWxfcGFyYW1ldGVycyk6IERvIG5vdCBjb21wbGFpbiBhYm91dAoJcGFyYW1ldGVyIG5hbWVzIHRoYXQganVzdCBzdGFydCB3aXRoIGBfX1ZBX0FSR1NfXycuCgpXZWQgTWFyIDE1IDEzOjI2OjU4IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZoaV8xKTogUHJvbW90ZSBtb3Z3IGltbSwgcmVnIHRvIG1vdmwgaW1tLCByZWcgYW5kCgltb3Z3IHJlZywgcmVnIHRvIG1vdnp3bCByZWcsIHJlZyBvbiBQQVJUSUFMX1JFR0lTVEVSX1NUQUxMIG1hY2hpbmVzLgoJKiBpMzg2LmMgKHBlbnRpdW1wcm9fY29zdCk6IFNldCBtdWwgY29zdCB0byA0LgoJKHg4Nl91c2VfbW92eCk6IFNldCBmb3IgUFByby4KCldlZCBNYXIgMTUgMTM6MDc6MDUgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogc3RhY2tfYWxpZ25tZW50X25lZWRlZCBpcwoJU1RBQ0tfQk9VTkRBUlkgZm9yIGVtcHR5IGZyYW1lcyBub3cuCgoyMDAwLTAzLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3VuaW9uKTogUmVtb3ZlLgoJKGxheW91dF91bmlvbl9maWVsZCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gbGF5b3V0X3VuaW9uLgoJKGZpbmlzaF91bmlvbl9sYXlvdXQpOiBMaWtld2lzZS4KCShsYXlvdXRfZmllbGQpOiBIYW5kbGUgdW5pb25zIGJ5IGNhbGxpbmcgbGF5b3V0X3VuaW9uX2ZpZWxkLgoJKGZpbmlzaF9yZWNvcmRfbGF5b3V0KTogSGFuZGxlIHVuaW9ucy4KCShsYXlvdXRfdHlwZSk6IENvbWJpbmUgUkVDT1JEX1RZUEUsIFVOSU9OX1RZUEUsIGFuZAoJUVVBTF9VTklPTl9UWVBFIGhhbmRsaW5nLgoKV2VkIEZlYiAyMyAxMzowMDowNiBDRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxvdy5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogQXZvaWQgZG91YmxlIGxhYmVscyBpbiB0aGUgYmFzaWMgYmxvY2s7CgllbmQgb2YgYmFzaWMgYmxvY2sgaXMganVtcF9pbnNuLCBub3QgYmFycmllcjsgdXNlIGNyZWF0ZV9iYXNpY19ibG9jawoJaW5zdGVhZCBvZiBjcmVhdGluZyBiYXNpYyBibG9jayBieSBoYW5kLgoKMjAwMC0wMy0xNCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBBY2NvdW50IGZvciBiYXJyaWVycyB3aGVuIHdyaXRpbmcKCW92ZXIgTkVYVF9JTlNOIChsYXN0X2JiLT5lbmQpLgoJKHZlcmlmeV9mbG93X2luZm8pOiBBZGQgY2hlY2sgZm9yIG1pc3NpbmcgYmFycmllcnMuCgoyMDAwLTAzLTE0ICBHcmVnIE1jR2FyeSAgPGdrbUBnbnUub3JnPgoKCSogYy1sZXguaCAoZW51bSByaWQpOiBBZGQgUklEX0JPVU5ERUQgJiBSSURfVU5CT1VOREVELgoJKiBjLWxleC5jIChpbml0X2xleCk6IEhhbmRsZSBSSURfQk9VTkRFRCAmIFJJRF9VTkJPVU5ERUQuCgkqIGMtcGFyc2UuZ3BlcmYgKF9fYm91bmRlZCwgX19ib3VuZGVkX18sIF9fcHRyYmFzZSwgX19wdHJiYXNlX18sCglfX3B0cmV4dGVudCwgX19wdHJleHRlbnRfXywgX19wdHJ2YWx1ZSwgX19wdHJ2YWx1ZV9fLAoJX191bmJvdW5kZWQsIF9fdW5ib3VuZGVkX18pOiBOZXcga2V5d29yZHMuCgkqIGMtcGFyc2UuaW4gKFBUUl9WQUxVRSBQVFJfQkFTRSBQVFJfRVhURU5UKTogTmV3IHRva2Vucy4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIGMtcGFyc2UuaDogUmVnZW5lcmF0ZS4KCSogb2JqYy9vYmpjLXBhcnNlLnksIG9iamMvb2JqYy1wYXJzZS5jOiBSZWdlbmVyYXRlLgoKMjAwMC0wMy0xNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjc2VsaWIuaDogTmV3IGZpbGUuCgkqIGFsaWFzLmM6IEluY2x1ZGUgImNzZWxpYi5oIi4KCShmaXhlZF9zY2FsYXJfYW5kX3Zhcnlpbmdfc3RydWN0X3ApOiBBY2NlcHQgdGhlIGFkZHJlc3NlcyBvZiB0aGUKCU1FTXMgYXMgdHdvIG5ldyBhcmd1bWVudHMuCgkoZ2V0X2FkZHIpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGZpbmRfYmFzZV90ZXJtKTogSGFuZGxlIFZBTFVFcy4KCShtZW1yZWZzX2NvbmZsaWN0X3ApOiBMaWtld2lzZS4KCSh0cnVlX2RlcGVuZGVuY2UpOiBDYWxsIGdldF9hZGRyIG9uIHRoZSBhZGRyZXNzZXMuCglDYWxsIGZpeGVkX3NjYWxhcl9hbmRfdmFyeWluZ19zdHJ1Y3RfcCB3aXRoIGFkZHJlc3NlcyB0aGF0IGhhdmUgYmVlbgoJcGFzc2VkIHRocm91Z2ggZ2V0X2FkZHIgYW5kIGNhbm9uX3J0eC4KCSh3cml0ZV9kZXBlbmRlbmNlX3ApOiBNb3ZlIERJRkZFUkVOVF9BTElBU19TRVRTX1AgdGVzdCBmb3IgY29uc2lzdGVuY3kKCXdpdGggdHJ1ZV9kZXBlbmRlbmNlLgoJQ2FsbCBnZXRfYWRkciBvbiB0aGUgYWRkcmVzc2VzOyBkb24ndCBjYWxsIGNhbm9uX3J0eCBvbiB0aGUgTUVNcy4KCSogbG9vcC5jOiBJbmNsdWRlICJjc2VsaWIuaCIuCgkobG9hZF9tZW1zKTogUHJvY2VzcyBleHRlbmRlZCBiYXNpYyBibG9jayB0aGF0IGVudGVycyB0aGUgbG9vcCB3aXRoCgljc2VsaWIuICBVc2UgdGhhdCBpbmZvcm1hdGlvbiB0byBjaGFuZ2UgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNoYWRvdwoJcmVnaXN0ZXIgc28gdGhhdCBhIGNvbnN0YW50IGVxdWl2YWxlbmNlIGlzIHNlZW4gYnkgbGF0ZXIgcGFzc2VzLgoJKiByZWxvYWQxLmM6IEluY2x1ZGUgImNzZWxpYi5oIi4KCShyZWxvYWRfY3NlX2ludmFsaWRhdGVfcmVnbm8pOiBEZWxldGUgZnVuY3Rpb24uCgkocmVsb2FkX2NzZV9tZW1fY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2VfaW52YWxpZGF0ZV9tZW0pOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX2ludmFsaWRhdGVfcnR4KTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9yZWdub19lcXVhbF9wKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9jaGVja19jbG9iYmVyKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9yZWNvcmRfc2V0KTogTGlrZXdpc2UuCgkocmVnX3ZhbHVlcyk6IERlbGV0ZSBzdGF0aWMgdmFyaWFibGUuCgkoaW52YWxpZGF0ZV9yZWdub19ydHgpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX2RlbGV0ZV9ub29wX3NldCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocmVsb2FkX2NzZV9zaW1wbGlmeSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGJyb2tlbiBvdXQgb2YKCXJlbG9hZF9jc2VfcmVnc18xLgoJKHJlbG9hZF9jc2Vfbm9vcF9zZXRfcCk6IERlbGV0ZSB1bnVzZWQgYXJndW1lbnQgSU5TTi4KCUp1c3QgY2FsbCBydHhfZXF1YWxfZm9yX2NzZWxpYl9wIG9uIHNldCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLgoJKHJlbG9hZF9jc2VfcmVnc18xKTogQnJlYWsgb3V0IHNvbWUgY29kZSBpbnRvIHJlbG9hZF9jc2Vfc2ltcGxpZnkgYW5kCglyZWxvYWRfY3NlX2RlbGV0ZV9ub29wX3NldC4gIERlbGV0ZSBjb2RlIHRvIGtlZXAgdHJhY2sgb2YgdmFsdWVzOyB1c2UKCWNzZWxpYiBmdW5jdGlvbnMgaW5zdGVhZC4gIERlbGV0ZSBjb2RlIHRvIHB1c2gvcG9wIG9ic3RhY2tzLgoJKHJlbG9hZF9jc2Vfc2ltcGxpZnlfc2V0KTogVXNlIGNzZWxpYiB0byBmaW5kIGVxdWl2YWxlbnQgdmFsdWVzLgoJRGVsZXRlIGNvZGUgdG8gcHVzaC9wb3Agb2JzdGFja3MuCgkocmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBydGwuZGVmIChWQUxVRSk6IE5ldyBydHggY29kZS4KCSogcnRsLmggKHVuaW9uIHJ0dW5pb25fZGVmKTogTmV3IGVsdCBydF9jc2VsaWIuCgkoWDBDU0VMSUIsIENTRUxJQl9WQUxfUFRSKTogTmV3IG1hY3Jvcy4KCSogc2ltcGxpZnlfcnR4LmM6IEluY2x1ZGUgImdnYy5oIiwgIm9ic3RhY2suaCIsICJjc2VsaWIuaCIuCgkobmV3X2VsdF9saXN0LCBuZXdfZWx0X2xvY19saXN0LCB1bmNoYWluX29uZV92YWx1ZSwgY2xlYXJfdGFibGUsCgl1bmNoYWluX29uZV9lbHRfbGlzdCwgdW5jaGFpbl9vbmVfZWx0X2xvY19saXN0LCBjaGVja191c2VsZXNzX3ZhbHVlcywKCWRpc2NhcmRfdXNlbGVzc19sb2NzLCBkaXNjYXJkX3VzZWxlc3NfdmFsdWVzLCBlbnRyeV9hbmRfcnR4X2VxdWFsX3AsCgloYXNoX3J0eCwgbmV3X2NzZWxpYl92YWwsIGFkZF9tZW1fZm9yX2FkZHIsIGdldF92YWx1ZV9oYXNoLAoJY3NlbGliX2xvb2t1cF9tZW0sIGNzZWxpYl9zdWJzdF90b192YWx1ZXMsIGNzZWxpYl9pbnZhbGlkYXRlX3JlZ25vLAoJY3NlbGliX21lbV9jb25mbGljdF9wLCBjc2VsaWJfaW52YWxpZGF0ZV9tZW0sIGNzZWxpYl9pbnZhbGlkYXRlX3J0eCwKCWNzZWxpYl9yZWNvcmRfc2V0LCBjc2VsaWJfcmVjb3JkX3NldHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShjc2VsaWJfbG9va3VwLCBjc2VsaWJfdXBkYXRlX3ZhcnJheV9zaXplcywgY3NlbGliX2luaXQsCgljc2VsaWJfZmluaXNoLCBjc2VsaWJfcHJvY2Vzc19pbnNuLCBydHhfZXF1YWxfZm9yX2NzZWxpYl9wLAoJcmVmZXJlbmNlc192YWx1ZV9wKTogTmV3IGZ1bmN0aW9ucy4KCShNQVhfVVNFTEVTU19WQUxVRVMsIFJFR19WQUxVRVMpOiBOZXcgbWFjcm9zLgoJKHRhYmxlLCBjc2VsaWJfY3VycmVudF9pbnNuLCBuZXh0X3Vua25vd25fdmFsdWUsIGNzZWxpYl9ucmVncywKCW5fdXNlbGVzc192YWx1ZXMsIHJlZ192YWx1ZXMsIGNhbGxtZW0sIGNzZWxpYl9vYnN0YWNrLAoJY3NlbGliX3N0YXJ0b2JqLCBlbXB0eV92YWxzLCBlbXB0eV9lbHRfbGlzdHMsIGVtcHR5X2VsdF9sb2NfbGlzdHMpOgoJTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkqIHZhcnJheS5oICh1bmlvbiB2YXJyYXlfZGF0YV90YWcpOiBOZXcgZWx0IHRlLgoJKFZBUlJBWV9FTFRfTElTVF9JTklULCBWQVJSQVlfRUxUX0xJU1QpOiBOZXcgbWFjcm9zLgoJKiBNYWtlZmlsZS5pbiAocmVsb2FkMS5vLCBsb29wLm8sIHNpbXBsaWZ5LXJ0eC5vLCBhbGlhcy5vKTogVXBkYXRlCglkZXBlbmRlbmNpZXMuCgoyMDAwLTAzLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSk6IENhdGNoIHRoZSBjYXNlIHdoZXJlICUqIGlzIHVzZWQgaW4gYQoJc3Vic3RpdHV0aW9uIHBhdHRlcm4sIGJ1dCBpdCBoYXMgbm90IGJlZW4gaW5pdGlhbGlzZWQuCglJc3N1ZSBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSBpZiBhbiB1bnJlY29nbmlzZWQgb3BlcmF0b3IKCWlzIGVuY291bnRlcmVkIGluIGEgc3BlYyBzdHJpbmcuCgoyMDAwLTAzLTE0ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogZnVuY3Rpb24uYyAocHJlcGFyZV9mdW5jdGlvbl9zdGFydCk6IENvcnJlY3RseSBpbml0aWFsaXplCgljZnVuLT5zdGFja19hbGlnbm1lbnRfbmVlZGVkLgoKMjAwMC0wMy0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoZmluZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBhc3N1bWUgbnNob3J0IGlzIGEKCXN1YnN0cmluZyBvZiBuYW1lLgoKVHVlIE1hciAxNCAwODo0MjoyMSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW4gKGhwcGEgY29uZmlndXJhdGlvbnMpOiBBZGQgcGEzMi1yZWdzLmggdG8gdGhlCglsaXN0IG9mIHRtIGZpbGVzIGFzIGFwcHJvcHJpYXRlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIHBhLmMgKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbW92ZSBleHBsaWNpdCBrbm93bGVkZ2UgYWJvdXQgRlAKCXJlZ2lzdGVyIG51bWJlcmluZy4KCShocHBhX2V4cGFuZF9wcm9sb2d1ZSwgaHBwYV9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShmbXB5YWRkb3BlcmFuZHMsIGZtcHlzdWJvcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBwYS5oOiBSZW1vdmUgdmFyaW91cyBkZWZpbml0aW9ucyB3aGljaCBkZXBlbmQgb24ga25vd2luZwoJaG93IHJlZ2lzdGVycyBhcmUgbnVtYmVyZWQuCgkqIHBhMzItcmVncy5oOiBOZXcgZmlsZSB3aXRoIFBBMzIgcmVnaXN0ZXIgbnVtYmVyaW5nIHNwZWNpZmljCglkZWZpbml0aW9ucy4KCjIwMDAtMDMtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWdtb3ZlLmMgKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMpOiBOZXcuCgkoc3RhY2tfbWVtcmVmX3AsIHNpbmdsZV9zZXRfZm9yX2NzYSk6IE5ldy4KCShmcmVlX2NzYV9tZW1saXN0LCByZWNvcmRfb25lX3N0YWNrX21lbXJlZik6IE5ldy4KCSh0cnlfYXBwbHlfc3RhY2tfYWRqdXN0bWVudCk6IE5ldy4KCShjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IE5ldy4KCSogcnRsLmggKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgaXQuCgoJKiBpMzg2Lm1kOiBSZXZlcnQgMjAwMC0wMS0xNiBjaGFuZ2UuCgoyMDAwLTAzLTE0ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnY2NidWcuaW46IEFkZCB3ZWIgY2F0ZWdvcnksIGdjYyBzcGVjaWZpYyBjbGFzc2VzLgoKMjAwMC0wMy0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmFsaXplX3JlY29yZF9zaXplKTogRml4IHR5cG8uCgoyMDAwLTAzLTE0ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoKCSogYy10eXBlY2suYyAoY19hbGlnbm9mKTogRXJyb3Igb24gaW5jb21wbGV0ZSB0eXBlcy4KCSogZXh0ZW5kLnRleGkgKEFsaWdubWVudCk6IERvY3VtZW50IHRoaXMuCgoyMDAwLTAzLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jOiBJbmNsdWRlIG1rZGVwcy5oLgoJKGZpbmRfaW5jbHVkZV9maWxlLCByZWFkX2luY2x1ZGVfZmlsZSk6IFJlbW92ZSBfY3BwXyBwcmVmaXgKCWZyb20gbmFtZSwgbWFrZSBzdGF0aWMuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgb2YKCWRvX2luY2x1ZGUuCgoJKiBjcHBsaWIuYzogRG9uJ3QgaW5jbHVkZSBta2RlcHMuaC4KCShzdHJ1Y3QgZGlyZWN0aXZlKTogUmVtb3ZlIHR5cGUgZmllbGQuIFJlb3JkZXIgZW50cmllcy4gIFRoZQoJZnVuY3Rpb24gdGFrZXMgb25seSBvbmUgYXJndW1lbnQuCgkoc3RydWN0IGlmX3N0YWNrKTogTWFrZSB0eXBlIGZpZWxkIGFuIGludC4KCShkaXJlY3RpdmVfdGFibGUpOiBSZW5hbWUgdG8gZHRhYmxlLiAgR2VuZXJhdGUgaXQsIHRoZQoJcHJvdG90eXBlcyBvZiB0aGUgZGlyZWN0aXZlIGhhbmRsZXJzLCBhbmQgdGhlIGVudW0gZm9yIHRoZQoJZGlyZWN0aXZlIG51bWJlcnMsIGZyb20gYSB0ZW1wbGF0ZSBtYWNyby4KCShkb19pZm5kZWYsIGRvX2luY2x1ZGVfbmV4dCwgZG9faW1wb3J0KTogTmV3IGZ1bmN0aW9ucy4KCShkb19kZWZpbmUsIGRvX2luY2x1ZGUsIGRvX2VuZGlmLCBkb19pZmRlZiwgZG9faWYsIGRvX2Vsc2UsCglkb191bmRlZiwgZG9fbGluZSwgZG9fZWxpZiwgZG9fZXJyb3IsIGRvX3ByYWdtYSwgZG9fd2FybmluZywKCWRvX2lkZW50LCBkb19hc3NlcnQsIGRvX3VuYXNzZXJ0LCBkb19zY2NzKTogVGFrZSBvbmx5IG9uZQoJYXJndW1lbnQuCgkoZG9fc2Njcyk6IERlZmluZSBhbHdheXMsIGJ1dCBhbHRlciBiZWhhdmlvciBiYXNlZCBvbgoJU0NDU19ESVJFQ1RJVkUuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlLCBjb25zaWRlcl9kaXJlY3RpdmVfd2hpbGVfc2tpcHBpbmcpOgoJUmVzdHJ1Y3R1cmUgZm9yIG5ldyBkaXJlY3RpdmUgdGFibGUgbGF5b3V0LgoKCShwYXNzX3RocnVfZGlyZWN0aXZlKTogVGFrZSBhIGRpcmVjdGl2ZSBudW1iZXIsIG5vdCBhIHBvaW50ZXIKCXRvIGEgc3RydWN0IGRpcmVjdGl2ZS4KCShwYXJzZV9pbmNsdWRlKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IG9mIGRvX2luY2x1ZGUuCgkoZG9faW5jbHVkZSwgZG9faW1wb3J0LCBkb19pbmNsdWRlX25leHQpOiBVc2UgcGFyc2VfaW5jbHVkZQoJYW5kIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLgoJKGRvX2VsaWYsIGRvX2Vsc2UpOiBUZXN0IGZvciBUX0VMU0Ugc3BlY2lmaWNhbGx5IHdoZW4gY2hlY2tpbmcKCWZvciAjZWxpZi8jZWxzZSBhZnRlciAjZWxzZS4KCShwYXJzZV9pZmRlZik6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZiBkb19pZmRlZi4KCSh2YWxpZGF0ZV9lbHNlKTogRXhwZWN0IGEgbmFtZSBhcmcgd2l0aG91dCBhIGxlYWRpbmcgIy4KCShpZl9kaXJlY3RpdmVfbmFtZSk6IERlbGV0ZS4KCShjcHBfZGVmaW5lLCBjcHBfYXNzZXJ0LCBjcHBfdW5kZWYsIGNwcF91bmFzc2VydCk6IENhbGwKCWRpcmVjdGl2ZSBoYW5kbGVycyB3aXRoIG9ubHkgb25lIGFyZ3VtZW50LgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCShlbnVtIG5vZGVfdHlwZSk6IFJlbW92ZSBlbnRyaWVzIGZvciBkaXJlY3RpdmVzLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCgkqIGNwcGhhc2guYyAoZHVtcF9oYXNoX2hlbHBlcik6IE9ubHkgZHVtcCBub2RlcyBvZiB0eXBlCglUX01BQ1JPLiAgRW1pdCBhIG5ld2xpbmUgYWZ0ZXIgZWFjaCBkZWZpbml0aW9uLgoKMjAwMC0wMy0xNCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZ2NjYnVnLmluOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChhbGxfb3V0cHV0cyk6IEFkZCBnY2NidWcuCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWNvbW1vbik6IEluc3RhbGwgZ2NjYnVnLgoJKEdDQ0JVR19JTlNUQUxMX05BTUUpOiBOZXcgdmFyaWFibGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDMtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAocHV0X3Zhcl9pbnRvX3N0YWNrKTogVXNlIHR5cGVfZm9yX21vZGUgdG8gY2FsY3VsYXRlCglwYXJ0X3R5cGUuICBVc2UgTUVNX1NFVF9JTl9TVFJVQ1RfUC4KCSogZXhwci5jIChzdG9yZV9maWVsZCk6IEhhbmRsZSBDT05DQVQuCgkoc3RvcmVfY29uc3RydWN0b3IpOiBVc2UgZmllbGRzX2xlbmd0aC4KCSogdHJlZS5jIChmaWVsZHNfbGVuZ3RoKTogTmV3IGZuLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDAwLTAzLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX09CSlMpOiBBZGQgY3BwbGV4Lm8uCgkoY3BwbGV4Lm8pOiBOZXcgdGFyZ2V0LgoJKiBwby9QT1RGSUxFUy5pbjogQWRkIGNwcGxleC5jLgoKCSogY3BwbGV4LmMgKF9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIG51bGxfY2xlYW51cCwKCWNwcF9wdXNoX2J1ZmZlciwgY3BwX3BvcF9idWZmZXIsIGNwcF9zY2FuX2J1ZmZlciwKCWNwcF9leHBhbmRfdG9fYnVmZmVyLCBjcHBfYnVmX2xpbmVfYW5kX2NvbCwgY3BwX2ZpbGVfYnVmZmVyLAoJc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCwgc2tpcF9jb21tZW50LAoJY29weV9jb21tZW50LCBfY3BwX3NraXBfaHNwYWNlLCBfY3BwX3NraXBfcmVzdF9vZl9saW5lLAoJX2NwcF9wYXJzZV9uYW1lLCBza2lwX3N0cmluZywgcGFyc2Vfc3RyaW5nLAoJX2NwcF9wYXJzZV9hc3NlcnRpb24sIGNwcF9nZXRfdG9rZW4sIGNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuLAoJX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuLCBmaW5kX3Bvc2l0aW9uLAoJX2NwcF9yZWFkX2FuZF9wcmVzY2FuLCBfY3BwX2luaXRfaW5wdXRfYnVmZmVyKTogTW92ZSBoZXJlLgoJKG1heWJlX21hY3JvZXhwYW5kLCBfY3BwX2xleF90b2tlbik6IE5ldyBmdW5jdGlvbnMuCgoJKiBjcHBsaWIuYyAoU0tJUF9XSElURV9TUEFDRSwgZXZhbF9pZl9leHByLCBwYXJzZV9zZXRfbWFyaywKCXBhcnNlX2dvdG9fbWFyayk6IERlbGV0ZS4KCShfY3BwX2hhbmRsZV9lb2YpOiBOZXcgZnVuY3Rpb24uCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogUmVuYW1lIGZyb20gaGFuZGxlX2RpcmVjdGl2ZS4KCShfY3BwX291dHB1dF9saW5lX2NvbW1hbmQpOiBSZW5hbWUgZnJvbSBvdXRwdXRfbGluZV9jb21tYW5kLgoJKGRvX2lmLCBkb19lbGlmKTogQ2FsbCBfY3BwX3BhcnNlX2V4cHIgZGlyZWN0bHkuCgkqIGNwcGZpbGVzLmMgKF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBjYWxsCglpbml0X2lucHV0X2J1ZmZlciBoZXJlLgoJKiBjcHBoYXNoLmMgKHF1b3RlX3N0cmluZyk6IE1vdmUgaGVyZSwgcmVuYW1lIF9jcHBfcXVvdGVfc3RyaW5nLgoJKiBjcHBleHAuYyAoX2NwcF9wYXJzZV9leHByKTogRGlkZGxlIHBhcnNpbmdfaWZfZGlyZWN0aXZlCgloZXJlOyBwb3AgdGhlIHRva2VuX2J1ZmZlciBhbmQgc2tpcCB0aGUgcmVzdCBvZiB0aGUgbGluZSBoZXJlLgoJKiBjcHBpbml0LmMgKGNwcF9zdGFydF9yZWFkKTogQ2FsbCBfY3BwX2luaXRfaW5wdXRfYnVmZmVyCgloZXJlLgoKCSogY3BwaGFzaC5oIChDUFBfUkVTRVJWRSwgQ1BQX0lTX01BQ1JPX0JVRkZFUiwgQUNUSVZFX01BUktfUCk6CglEZWZpbmUgaGVyZS4KCShDUFBfU0VUX0JVRl9NQVJLLCBDUFBfR09UT19CVUZfTUFSSywgQ1BQX1NFVF9NQVJLLAoJQ1BQX0dPVE9fTUFSSyk6IE5ldyBtYWNyb3MuCgkoX2NwcF9xdW90ZV9zdHJpbmcsIF9jcHBfcGFyc2VfbmFtZSwgX2NwcF9za2lwX3Jlc3Rfb2ZfbGluZSwKCV9jcHBfc2tpcF9oc3BhY2UsIF9jcHBfcGFyc2VfYXNzZXJ0aW9uLCBfY3BwX2xleF90b2tlbiwKCV9jcHBfcmVhZF9hbmRfcHJlc2NhbiwgX2NwcF9pbml0X2lucHV0X2J1ZmZlciwKCV9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbiwKCV9jcHBfaGFuZGxlX2RpcmVjdGl2ZSwgX2NwcF9oYW5kbGVfZW9mLAoJX2NwcF9vdXRwdXRfbGluZV9jb21tYW5kKTogUHJvdG90eXBlIHRoZW0gaGVyZS4KCSogY3BwbGliLmggKGVudW0gY3BwX3Rva2VuKTogQWRkIENQUF9NQUNSTy4KCShDUFBfUkVTRVJWRSwgZ2V0X2RpcmVjdGl2ZV90b2tlbiwgY3BwX2dyb3dfYnVmZmVyLAoJcXVvdGVfc3RyaW5nLCBvdXRwdXRfbGluZV9jb21tYW5kKTogUmVtb3ZlLgoKMjAwMC0wMy0xMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBzdG10LmMgKGV4cGFuZF9lbmRfY2FzZSk6IFJBTkdFIG1heSBiZSBzaWduZWQsIGFuZCB3aGVuIGNoZWNraW5nCgl3aGV0aGVyIGl0IGlzIHRvbyBsYXJnZSB3ZSBtdXN0IGFsc28gdmVyaWZ5IHRoYXQgaXQgaXNuJ3QgbmVnYXRpdmUuCgoyMDAwLTAzLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZDogUmVtb3ZlIGFsbCB0cmFjZXMgb2YgVEFSR0VUX0xJVkVfRzAuCgkobW92c2lfemVyb19saXZlZzApOiBSZW1vdmUuCgkobW92c2ZfaW5zbl9ub3Zpc19saXZlZzApOiBSZW1vdmUuCgkobmVnc2kyKTogUmVtb3ZlLgoJKG5lZ3NpMl9ub3RfbGl2ZWcwKTogUmVuYW1lIHRvIG5lZ3NpMi4KCShvbmVfY21wbHNpMik6IFJlbW92ZS4KCShvbmVfY21wbHNpMl9ub3RfbGl2ZWcwKTogUmVuYW1lIHRvIG9uZV9jbXBsc2kyLgoJKG9uZV9jbXBsc2kyX2xpdmVnMCk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFRBUkdFVF9MSVZFX0cwLCBUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFLAoJTUFTS19MSVZFX0cwLCBNQVNLX0JST0tFTl9TQVZFUkVTVE9SRSk6IFJlbW92ZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IFJlbW92ZSBUQVJHRVRfTElWRV9HMCBpZi4KCShQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgemVyb19vcGVyYW5kLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYzogUmVtb3ZlIGFsbCB0cmFjZXMgb2YgVEFSR0VUX0xJVkVfRzAgYW5kCglUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFLgoJKHplcm9fb3BlcmFuZCk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwbGV0LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbWxpdmUtZzAsCgktbW5vLWxpdmUtZzAsIC1tYnJva2VuLXNhdmVyZXN0b3JlIGFuZCAtbW5vLWJyb2tlbi1zYXZlcmVzdG9yZQoJb3B0aW9ucy4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LWFvdXQuaCAoVEFSR0VUX0xJVkVfRzAsCglUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoVEFSR0VUX0xJVkVfRzAsIFRBUkdFVF9CUk9LRU5fU0FWRVJFU1RPUkUpOgoJUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChUQVJHRVRfTElWRV9HMCwgVEFSR0VUX0JST0tFTl9TQVZFUkVTVE9SRSk6CglSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmggKFRBUkdFVF9MSVZFX0cwLCBUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFKToKCVJlbW92ZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAocmV0dXJuX2RmX25vX2ZwdSk6IE5ldyBwYXR0ZXJuLgoKMjAwMC0wMy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IEZpeCBvZmYtYnktb25lIGVycm9yCgl0cnVuY2F0aW5nIGEgc3RyaW5nLiAgRG9uJ3QgYXNzdW1lIHRva2VucyBhcmUgbnVsIHRlcm1pbmF0ZWQuCglQcm9ibGVtIG5vdGVkIGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBzdXNlLmRlPgoKMjAwMC0wMy0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX25hbWVfYW5kX3NyY19jb29yZHNfYXR0cmlidXRlcyk6IE9ubHkgYWRkCglEV19BVF9NSVBTX2xpbmthZ2VfbmFtZSBmb3IgVFJFRV9QVUJMSUMgZGVjbHMuCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSX0NPTlNUKTogRG9uJ3Qgb3V0cHV0IHRyYWlsaW5nIG5ld2xpbmUuCgoyMDAwLTAzLTEzICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobmV3X3JlY29yZF9sYXlvdXRfaW5mbyk6IEZpeCB0eXBvIGluc2lkZSBpZmRlZgoJU1RSVUNUVVJFX1NJWkVfQk9VTkRBUlkuCgoyMDAwLTAzLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChyZWNvcmRfbGF5b3V0X2luZm9fcyk6IE5ldyBzdHJ1Y3R1cmUuCgkocmVjb3JkX2xheW91dF9pbmZvKTogTmV3IHR5cGUuCgkobmV3X3JlY29yZF9sYXlvdXRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfZmllbGQpOiBMaWtld2lzZS4KCShmaW5pc2hfcmVjb3JkX2xheW91dCk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfcmVjb3JkKTogUmVtb3ZlLgoJKG5ld19yZWNvcmRfbGF5b3V0X2luZm8pOiBOZXcgZnVuY3Rpb24uCgkobGF5b3V0X2ZpZWxkKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20gbGF5b3V0X3JlY29yZC4KCShmaW5hbGl6ZV9yZWNvcmRfc2l6ZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBMaWtld2lzZS4KCShmaW5hbGl6ZV90eXBlX3NpemUpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgZnJvbSBsYXlvdXRfdHlwZS4KCShmaW5pc2hfcmVjb3JkX2xheW91dCk6IExpa2V3aXNlLgoJKGxheW91dF90eXBlKTogVXNlIHRoZW0uCgoyMDAwLTAzLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmM6IERvbid0IGluY2x1ZGUgdmVyc2lvbi5oLgoJKHNwZWNpYWxfc3ltYm9sKSBbY2FzZSBUX1ZFUlNJT05dOiBMb29rIGZvciB0aGUgc3RyaW5nIGluCglocC0+dmFsdWUuY3B2YWw7IGRvbid0IHVzZSB2ZXJzaW9uX3N0cmluZy4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogU2V0IGhwLT52YWx1ZS5jcHZhbCBmb3IKCV9fVkVSU0lPTl9fIHRvIHZlcnNpb25fc3RyaW5nLgoJKiBNYWtlZmlsZS5pbiAoY3BwaGFzaC5vKTogVXBkYXRlIGRlcHMuCgoyMDAwLTAzLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJQ29udmVydCBjcHBsaWIgdG8gdXNlIGxpYmliZXJ0eS9oYXNodGFiLmMuCgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBNYWtlIGhhc2h0YWIgYW5kCglhbGxfaW5jbHVkZV9maWxlcyBvZiB0eXBlICdzdHJ1Y3QgaHRhYiAqJy4gIERlbGV0ZSBIQVNIU0laRQoJYW5kIEFMTF9JTkNMVURFX0hBU0hTSVpFIG1hY3Jvcy4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkoc3RydWN0IGhhc2hub2RlKTogUmVtb3ZlIG5leHQsIHByZXYsIGFuZCBidWNrZXRfaGRyIG1lbWJlcnMuCglNYWtlIGxlbmd0aCBhIHNpemVfdC4gIEFkZCBoYXNoIG1lbWJlci4KCShzdHJ1Y3QgaWhhc2gpOiBSZW1vdmUgbmV4dCBtZW1iZXIuICBBZGQgaGFzaCBtZW1iZXIuICBNYWtlCgluYW1lIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyLgoKCSogY3BwZmlsZXMuYzogSW5jbHVkZSBoYXNodGFiLmguCgkoaW5jbHVkZV9oYXNoKTogRGVsZXRlLgoJKElIQVNIU0laRSk6IE5ldyBtYWNyby4KCShoYXNoX0lIQVNILCBlcV9JSEFTSCwgX2NwcF9pbml0X2luY2x1ZGVfaGFzaCk6IE5ldyBmdW5jdGlvbnMuCgkoY3BwX2luY2x1ZGVkKTogRG8gdGhlIGhhc2ggbG9va3VwIGhlcmUuCgkoX2NwcF9maW5kX2luY2x1ZGVfZmlsZSk6IFJld3JpdGUuCgkoY3BwX3JlYWRfZmlsZSk6IFB1dCB0aGUgImZha2UiIGhhc2ggZW50cnkgaW50byB0aGUgaGFzaAoJdGFibGUuICBIb25vciB0aGUgY29udHJvbF9tYWNybywgaWYgaXQgdHVybnMgb3V0IHdlJ3ZlIHNlZW4KCXRoZSBmaWxlIGJlZm9yZS4gIERvbid0IHB1c2ggdGhlIGJ1ZmZlciBoZXJlLgoJKF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUpOiBQdXNoIHRoZSBidWZmZXIgaGVyZS4KCShPTU9ERVMpOiBOZXcgbWFjcm8uICBVc2UgaXQgd2hlbmV2ZXIgd2UgY2FsbCBvcGVuKDIpLgoKCSogY3BwaGFzaC5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShoYXNoX0hBU0hOT0RFLCBlcV9IQVNITk9ERSwgZGVsX0hBU0hOT0RFLCBkdW1wX2hhc2hfaGVscGVyLAoJX2NwcF9pbml0X21hY3JvX2hhc2gsIF9jcHBfZHVtcF9tYWNyb19oYXNoLCBfY3BwX21ha2VfaGFzaG5vZGUsCglfY3BwX2xvb2t1cF9zbG90KTogTmV3IGZ1bmN0aW9ucy4KCShIQVNIU0laRSk6IG5ldyBtYWNyby4KCShoYXNoZiwgX2NwcF9pbnN0YWxsLCBfY3BwX2RlbGV0ZV9tYWNybyk6IERlbGV0ZS4KCShfY3BwX2xvb2t1cCk6IFVzZSBoYXNodGFiLmggcm91dGluZXMuCgoJKiBjcHBpbml0LmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGNwcF9yZWFkZXJfaW5pdCk6IENhbGwgX2NwcF9pbml0X21hY3JvX2hhc2ggYW5kCglfY3BwX2luaXRfaW5jbHVkZV9oYXNoLiAgRG9uJ3QgYWxsb2NhdGUgaGFzaHRhYiBkaXJlY3RseS4KCShjcHBfY2xlYW51cCk6IEp1c3QgY2FsbCBodGFiX2RlbGV0ZSBvbiBwZmlsZS0+aGFzaHRhYiBhbmQKCXBmaWxlLT5hbGxfaW5jbHVkZV9maWxlcy4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogVXNlIF9jcHBfbWFrZV9oYXNobm9kZSBhbmQKCWh0YWJfZmluZF9zbG90IHRvIGFkZCBoYXNoIGVudHJpZXMuCgkoY3BwX2ZpbmlzaCk6IEp1c3QgY2FsbCBfY3BwX2R1bXBfbWFjcm9faGFzaC4KCSogY3BwbGliLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGRvX2RlZmluZSk6IFVzZSBfY3BwX2xvb2t1cF9zbG90IGFuZCBfY3BwX21ha2VfaGFzaG5vZGUgdG8KCWNyZWF0ZSBoYXNoIGVudHJpZXMuCgkoZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0KTogTGlrZXdpc2UuCgkoZG9faW5jbHVkZSk6IERvbid0IHB1c2ggdGhlIGJ1ZmZlciBoZXJlLiAgRG9uJ3QgaW5jcmVtZW50CglzeXN0ZW1faW5jbHVkZV9kZXB0aCB1bmxlc3MgX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSBzdWNjZWVkcy4KCShkb191bmRlZiwgZG9fdW5hc3NlcnQpOiBVc2UgX2NwcF9sb29rdXBfc2xvdCBhbmQgaHRhYl9jbGVhcl9zbG90CglvciBodGFiX3JlbW92ZV9lbHQuCgkoZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogVXNlIGFsbG9jYSB0byBjcmVhdGUgY29weS4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0wMy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwaW5pdC5jIChjbF9kaXJlY3RpdmVfaGFuZGxlcik6IE1vcmUgSyZSIGZpeGluZy4KClNhdCBNYXIgMTEgMjM6NTQ6MjYgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IEFsaWduIHNpemUgdG8KCVNUQUNLX0JPVU5EQVJZLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IEFkZCBtaXNzaW5nIHBhcmVudGhlc2VzLgoKMjAwMC0wMy0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwaW5pdC5jIChub19hcmcsIG5vX2Fzcywgbm9fZGlyLCBub19maWwsIG5vX21hYywgbm9fcHRoKToKCUNoYW5nZSBmcm9tIGNoYXJbXSB0byBtYWNyb3MuCgoyMDAwLTAzLTEyICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBVcGRhdGUgaW5kaXJlY3QgZnVuY3Rpb24KCWNhbGwgdG8gSyZSIEMuCgpTYXQgTWFyIDExIDE2OjE4OjEyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQURESVRJT05BTF9SRUdJU1RFUl9OQU1FUyk6IEZpeCB0eXBvIGluIGxvYzc5CgllbnRyeS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lhNjQvaWE2NC5oLAoJY29uZmlnL2lhNjQvaWE2NC5tZCwgY29uZmlnL2lhNjQveG0taWE2NC5oOiBGaXggY29weXJpZ2h0IG1lc3NhZ2VzLgoKMjAwMC0wMy0xMSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKHN0cnVjdCBwZW5kaW5nIG9wdGlvbik6IFJlcGxhY2UgdW5kZWYgd2l0aCBhCglwb2ludGVyIHRvIGEgZGlyZWN0aXZlIGhhbmRsaW5nIHJvdXRpbmUuCgkoc3RydWN0IGNwcF9wZW5kaW5nKTogUmVwbGFjZSBzZXBhcmF0ZSBhc3NlcnRfIGFuZCBkZWZpbmVfCglsaXN0cyB3aXRoIG9uZSBkaXJlY3RpdmVfIGxpc3QuCgkobmV3X3BlbmRpbmdfZGVmaW5lKTogUmVuYW1lIG5ld19wZW5kaW5nX2RpcmVjdGl2ZS4gRXh0cmEKCWFyZ3VtZW50IGlzIHRoZSBkaXJlY3RpdmUncyBoYW5kbGluZyByb3V0aW5lLgoJKGhhbmRsZV9vcHRpb24pOiBVcGRhdGUgdG8gdXNlIG5ld19wZW5kaW5nX2RpcmVjdGl2ZS4KCjIwMDAtMDMtMTEgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoZmlsZV9jbGVhbnVwLCBfY3BwX2ZpbmRfaW5jbHVkZV9maWxlLAoJcmVtYXBfZmlsZW5hbWUsIF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUsIGFjdHVhbF9kaXJlY3RvcnksCgloYWNrX3Ztc19pbmNsdWRlX3NwZWNpZmljYXRpb24pOiBSZXBsYWNlIGJjb3B5KCksIGluZGV4KCkgZXRjCgljYWxscy4gIEFkZCBjYXN0cyB0byBzb21lIGFsbG9jYXRpb25zLiAgTWFrZSBzb21lIHZhcmlhYmxlcwoJcG9pbnRlcnMgdG8gY29uc3QgW3Vuc2lnbmVkXSBjaGFyLgoJKiBjcHBoYXNoLmMgKF9jcHBfaW5zdGFsbCwgbWFjcm9fY2xlYW51cCwgY29sbGVjdF9leHBhbnNpb24sCgljb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogU2ltaWxhcmx5LgoJKiBjcHBpbml0LmMgKHN0cnVjdCBwZW5kaW5nX29wdGlvbiwgYXBwZW5kX2luY2x1ZGVfY2hhaW4sCgljcHBfb3B0aW9uc19pbml0LCBjcHBfcmVhZGVyX2luaXQsIGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMsCgljcHBfc3RhcnRfcmVhZCwgbmV3X3BlbmRpbmdfZGVmaW5lLCBoYW5kbGVfb3B0aW9uKTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuYyAoY3BwX2RlZmluZSwgY29weV9jb21tZW50LCBkb19kZWZpbmUsIGRvX2luY2x1ZGUsCglkb191bmRlZiwgZG9fZXJyb3IsIGRvX3dhcm5pbmcsIGRvX3ByYWdtYSwgZG9fcHJhZ21hX29uY2UsCglkb19wcmFnbWFfaW1wbGVtZW50YXRpb24sIGRldGVjdF9pZl9ub3RfZGVmaW5lZCwKCWRvX2lmZGVmLCBza2lwX2lmX2dyb3VwLCBjcHBfZ2V0X3Rva2VuLCBwYXJzZV9zdHJpbmcsCglkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuaCAoY3BwX2J1ZmZlciwgY3BwX29wdGlvbnMpOiBVcGRhdGUgdHlwZXMuICBVcGRhdGUKCWZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIG1rZGVwcy5jIChkZXBzX2FkZF90YXJnZXQsIGRlcHNfYWRkX2RlcCk6IGNhc3QgYWxsb2NhdGlvbnMuCgoyMDAwLTAzLTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJVXNlIGVtaXRfaW5zbl9iZWZvcmUgaWYgd2UncmUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlcXVlbmNlLgoKMjAwMC0wMy0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBNYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIHNvbWV0aGluZwoJYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEFsc28gc2V0IFRSRUVfTk9USFJPVyBmb3IKCWRlZmVycmVkIGlubGluZXMuCgoJKiBpbnZva2UudGV4aSAoQysrIERpYWxlY3QgT3B0aW9ucyk6IERvY3VtZW50IC1mbm8tZW5mb3JjZS1laC1zcGVjcy4KCjIwMDAtMDMtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoY2FuX3Rocm93KTogVXNlIElOVFZBTCBvbiBhIENPTlNUX0lOVC4KCShyZWFjaGFibGVfaGFuZGxlcnMpOiBMaWtld2lzZS4KCSogZmxvdy5jIChjb3VudF9iYXNpY19ibG9ja3MsIGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBMaWtld2lzZS4KCjIwMDAtMDMtMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IFVuZGVmaW5lIE1EX0VYRUNfUFJFRklYIGFuZAoJTURfU1RBUlRGSUxFX1BSRUZJWCBzaW5jZSB0aG9zZSBhcmUgbm90IG5lZWRlZCBvbiBsaW51eC4KCShBU01fRklMRV9TVEFSVCk6IE5ldywgZnJvbSBtaXBzL2dudS5oLgoKMjAwMC0wMy0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPiBhbmQgb3RoZXJzCgoJKiBNYWtlZmlsZS5pbiAoc3NhLm8pOiBOZXcgcnVsZS4KCShPQkpTKTogQWRkIHNzYS5vLgoJKFNUQUdFU1RVRkYpOiBBZGQgKi5zc2EgYW5kICoudXNzYS4KCShtb3N0bHljbGVhbik6IERlbGV0ZSAqLnNzYSwgKi51c3NhLCAqLyouc3NhLCAqLyoudXNzYS4KCSogcnRsLmRlZiAoUEhJKTogTmV3IFJUTCBleHByZXNzaW9uLgoJKiBydGwuaCAoY2xlYXJfbG9nX2xpbmtzKTogTmV3IGRlY2xhcmF0aW9uLgoJKGNvbnZlcnRfdG9fc3NhKTogTGlrZXdpc2UuCgkoY29udmVydF9mcm9tX3NzYSk6IExpa2V3aXNlLgoJKiBmbG93LmMgKHNwbGl0X2VkZ2UpOiBJZiB0aGUgZW50cnkgbm9kZSBmYWxscyB0aHJvdWdoIHRvIHRoZQoJc3BsaXQgZWRnZSdzIHNvdXJjZSBibG9jaywgc3BsaXQgdGhlIGVudHJ5IGVkZ2UuCgkoY2xlYXJfbG9nX2xpbmtzKTogTmV3IGZ1bmN0aW9uLgoJKiB0b3BsZXYuYyAoc3NhX2R1bXApOiBOZXcgdmFyaWFibGUuCgkoZmxhZ19zc2EpOiBMaWtld2lzZS4KCShmX29wdGlvbnMpOiBBZGQgInNzYSIuCgkoY29tcGlsZV9maWxlKTogQ3JlYXRlIFNTQSBkdW1wIGZpbGVzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBHbyB0byBhbmQgZnJvbSBTU0EgaWYgZW5hYmxlZC4KCShkZWNpZGVfZF9vcHRpb24pOiBIYW5kbGUgLWRlIGZvciBTU0EgZHVtcCBmaWxlcy4KCSogc3NhLmM6IE5ldyBmaWxlLgoKVGh1IE1hciAgOSAyMDowMTozOCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogRm9yIGEgQ0FMTF9FWFBSLCBzcGVjaWFsIGNhc2UgUEFSTV9ERUNMCglzYW1lIGFzIFZBUl9ERUNMLgoKMjAwMC0wMy0wOSAgQmVuamFtaW4gS29zbmlrICA8YmtvekBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2xpbnV4LmggKFdDSEFSX1RZUEUpOiBNYWtlIGNvbnNpc3RlbnQuCgpUaHUgTWFyICA5IDE4OjEwOjAyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9wYS9wYS1ocHV4MTAuaCAoTElCX1NQRUMpOiBDb3JyZWN0IHR5cG8gaW4gIXAgY2FzZS4KCShNRF9TVEFSVEZJTEVfUFJFRklYXzEpOiBOZXcgbWFjcm8uCgoyMDAwLTAzLTA5ICBSb2JlcnQgTGlwZSAgPHJvYmVydGxAc2NvLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogSW5jbHVkZSBzeXN0ZW0uaC4KCjIwMDAtMDMtMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKG5vdGhyb3dfZnVuY3Rpb25fcCk6IElmIC1mbm8tZXhjZXB0aW9ucywganVzdCByZXR1cm4uCgkoaW5pdF9laF9uZXN0aW5nX2luZm8pOiBMaWtld2lzZS4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfY29tbW9uKTogUmVuYW1lIHJhaXNlc19mbGFnIHRvIG5vdGhyb3dfZmxhZy4KCShUUkVFX05PVEhST1cpOiBSZW5hbWUgZnJvbSBUUkVFX1JBSVNFUy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBTZXQgaXQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEFkanVzdC4KCSogdHJlZS5jIChzdGFiaWxpemVfcmVmZXJlbmNlLCBidWlsZCwgYnVpbGQxKTogRG9uJ3Qgc2V0IFRSRUVfUkFJU0VTLgoJKHN0YWJpbGl6ZV9yZWZlcmVuY2VfMSwgZ2V0X3Vud2lkZW5lZCwgZ2V0X25hcnJvd2VyKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogQWRkICdub3Rocm93JyBwYXJtLiAgQWRkCglSRUdfRUhfUkVHSU9OIG5vdGUgYXMgYXBwcm9wcmlhdGUuCgkobGliZnVuY19ub3Rocm93KTogTmV3IGZuLgoJKGVtaXRfbGlicmFyeV9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IFVzZSBpdC4KCShleHBhbmRfY2FsbCk6IENoZWNrIFRSRUVfTk9USFJPVy4KCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsKTogU2tpcCBpbml0aWFsICcqJyB3aGVuIHNldHRpbmcKCURFQ0xfQVNTRU1CTEVSX05BTUUuCgoyMDAwLTAzLTA5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBtaXBzL2xpbnV4LmggKE5PX0lNUExJQ0lUX0VYVEVSTl9DKTogRGVmaW5lLgoJKFRBUkdFVF9NRU1fRlVOQ1RJT05TKTogRGVmaW5lLgoKMjAwMC0wMy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBpMzg2LmMgKGl4ODZfdmFsaWRfdHlwZV9hdHRyaWJ1dGVfcCk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoKCSogZXhjZXB0LmMgKGNhbl90aHJvdyk6IFNlZSB0aHJvdWdoIGEgU0VRVUVOQ0UuCgkobm90aHJvd19mdW5jdGlvbl9wKTogTmV3IGZuLgoJKiBleGNlcHQuaDogRGVjbGFyZSBpdC4KCSogZnVuY3Rpb24uYyAoY3VycmVudF9mdW5jdGlvbl9ub3Rocm93KTogTmV3IHZhci4KCShwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogSW5pdGlhbGl6ZSBpdC4KCSogb3V0cHV0Lmg6IERlY2xhcmUgaXQuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogU2V0IGl0LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogVXNlIGl0LgoKMjAwMC0wMy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogc3RybmNtcCByZXR1cm5zIDAgZm9yCgltYXRjaC4gIChjcHBfY29tcGFyZV9kZWZzKTogQ291bnQgdGhlIG51bCBzZXBhcmF0b3Igd2hlbgoJYWR2YW5jaW5nIG92ZXIgYXJndW1lbnQgbmFtZXMuCgoyMDAwLTAzLTA5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIHJlY29nLmMgKHByZXByb2Nlc3NfY29uc3RyYWludHMpOiBNYXRjaGluZyBjb25zdHJhaW50cyBhZmZlY3QKCXNhbWUgYWx0ZXJuYXRpdmUvZGlmZmVyZW50IG9wZXJhbmQsIG5vdCBzYW1lIG9wZXJhbmQvZGlmZmVyZW50CglhbHRlcm5hdGl2ZS4KCgkqIHJlbG9hZDEuYyAoZWxpbWluYXRlX3JlZ3NfaW5faW5zbik6IEhhbmRsZSBhZGRpdGlvbnMgb2YgZWxpbWluYWJsZQoJcmVnaXN0ZXIgYW5kIGEgY29uc3RhbnQgc3BlY2lhbGx5LgoKMjAwMC0wMy0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliZ2NjMi5oOiBOZXcgZmlsZS4KCSogbGliZ2NjMi5jOiBNb3ZlIG1hY3JvcywgdHlwZWRlZnMgYW5kIHByb3RvdHlwZXMgdG8gbGliZ2NjMi5oLgoKV2VkIE1hciAgOCAxNjoxOTo0MiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGlhNjQqLSotZWxmKiwgaWE2NCotKi1saW51eCopOiBOZXcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL2lhNjQ6IE5ldy4KCjIwMDAtMDMtMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfREVQUyk6IE5ldyBtYWNyby4KCShjcHBsaWIubywgY3BwaGFzaC5vLCBjcHBlcnJvci5vLCBjcHBleHAubywgY3BwZmlsZXMubyk6IFVzZQoJaXQgdG8gZGVjbGFyZSBkZXBzLgoJKiBjcHBlcnJvci5jOiBJbmNsdWRlIGNwcGhhc2guaC4KCSogY3BwZXhwLmM6IEluY2x1ZGUgY3BwaGFzaC5oLiAgUmVtb3ZlIE1VTFRJQllURV9DSEFSUwoJZGluZ2xlYmVycnkuCgkobGV4KTogRG9uJ3QgdXNlIENQUF9XQVJOX1VOREVGLgoJKF9jcHBfcGFyc2VfZXhwcik6IFJldHVybiBhbiBpbnQsIHRoZSB0cnV0aCB2YWx1ZS4KCSogY3BwZmlsZXMuYzogSW5jbHVkZSBjcHBoYXNoLmguCgkoX2NwcF9tZXJnZV9pbmNsdWRlX2NoYWlucyk6IE1vdmUgdG8gY3BwaW5pdC5jIGFuZCBtYWtlIHN0YXRpYy4KCSogY3BwaW5pdC5jIChpbmNsdWRlX2RlZmF1bHRzX2FycmF5KTogRGlzZW50YW5nbGUuCgkoY3BwX2NsZWFudXApOiBEb24ndCBmcmVlIHRoZSBpZiBzdGFjayBoZXJlLgoJKGNwcF9maW5pc2gpOiBQb3Agb2ZmIGFsbCBidWZmZXJzLCBub3QganVzdCBvbmUuCgkqIGNwcGxpYi5jIChldmFsX2lmX2V4cHIpOiBSZXR1cm4gaW50LgoJKGRvX3hpZmRlZik6IFJlbmFtZSBkb19pZmRlZi4KCShoYW5kbGVfZGlyZWN0aXZlKTogRG9uJ3QgdXNlIENQUF9QUkVQUk9DRVNTRUQuCgkoY3BwX2dldF90b2tlbik6IERvbid0IHVzZSBDUFBfQzg5LgoJKiBmaXgtaGVhZGVyLmM6IERvbid0IHVzZSBDUFBfT1BUSU9OUy4KCgkqIGNwcGxpYi5oOiBNb3ZlIFVfQ0hBUiwgZW51bSBub2RlX3R5cGUsIHN0cnVjdAoJZmlsZV9uYW1lX2xpc3QsIHN0cnVjdCBpaGFzaCwgaXNfaWRjaGFyLCBpc19pZHN0YXJ0LAoJaXNfbnVtY2hhciwgaXNfbnVtc3RhcnQsIGlzX2hzcGFjZSwgaXNfc3BhY2UsIENQUF9CVUZfUEVFSywKCUNQUF9CVUZfR0VULCBDUFBfRk9SV0FSRCwgQ1BQX1BVVFMsIENQUF9QVVRTX1EsIENQUF9QVVRDLAoJQ1BQX1BVVENfUSwgQ1BQX05VTF9URVJNSU5BVEUsIENQUF9OVUxfVEVSTUlOQVRFX1EsCglDUFBfQlVNUF9CVUZGRVJfTElORSwgQ1BQX0JVTVBfTElORSwgQ1BQX1BSRVZfQlVGRkVSLAoJQ1BQX1BSSU5UX0RFUFMsIENQUF9UUkFESVRJT05BTCwgQ1BQX1BFREFOVElDLCBhbmQgcHJvdG90eXBlcwoJb2YgX2NwcF9zaW1wbGlmeV9wYXRobmFtZSwgX2NwcF9maW5kX2luY2x1ZGVfZmlsZSwKCV9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUsIGFuZCBfY3BwX3BhcnNlX2V4cHIgdG8gY3BwaGFzaC5oLgoJTW92ZSBzdHJ1Y3QgaWZfc3RhY2sgdG8gY3BwbGliLmMuICBNb3ZlIHN0cnVjdCBjcHBfcGVuZGluZyB0bwoJY3BwaW5pdC5jLgoJQ2hhbmdlIGFsbCB1c2VzIG9mIFVfQ0hBUiB0byBiZSB1bnNpZ25lZCBjaGFyIGluc3RlYWQuCglEZWxldGUgQ1BQX1dBUk5fVU5ERUYsIENQUF9DODksIGFuZCBDUFBfUFJFUFJPQ0VTU0VELgoKMjAwMC0wMy0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdfZmRlX3N0cnVjdCk6IEFkZCAnbm90aHJvdycuCgkoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogU2V0IGl0LgoJKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBEb24ndCBlbWl0IEVIIHVud2luZCBpbmZvIGZvciBsZWF2ZXMuCgoJKiBmbG93LmMgKGNvdW50X2Jhc2ljX2Jsb2NrcywgZmluZF9iYXNpY19ibG9ja3NfMSk6IEEgcmV0aHJvdwoJY2FuIG9jY3VyIG91dHNpZGUgb2YgYW4gRUggcmVnaW9uLgoJKiBleGNlcHQuYzogQ29ycmVjdCBjb21tZW50cyBhYm91dCByZXRocm93IGJlaGF2aW9yLgoJKHJldGhyb3dfc3ltYm9sX21hcCk6IERvIG5vdGhpbmcgaWYgIWZsYWdfbmV3X2V4Y2VwdGlvbnMuCgoyMDAwLTAzLTA4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1ha2VfZWRnZXMpOiBBbHdheXMgY2FsbCBtYWtlX2VoX2VkZ2UgZm9yIGNhbGxzLgoKMjAwMC0wMy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKHBhcnNlX3VuZGVyZmxvd190LCBDUFBfTlVMTF9CVUZGRVIpOiBEZWxldGUuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBSZW1vdmUgZm5hbWUgYW5kIHVuZGVyZmxvdyBmaWVsZHMuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgZ2V0X3Rva2VuIGZpZWxkLgoJKHN0cnVjdCBpbmNsdWRlX2hhc2gpOiBSZW5hbWUgdG8gc3RydWN0IGloYXNoLiAgQWRkIHR5cGVkZWYgdG8KCUlIQVNILgoJKHN0cnVjdCBpZl9zdGFjayk6IFJlbW92ZSBmbmFtZSBmaWVsZC4KCShJRl9TVEFDS19GUkFNRSk6IFJlbmFtZSB0byBJRl9TVEFDSy4KCgkqIGNwcGVycm9yLmMgKHByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBUcnVzdCB0aGF0IHRoZXJlIGFyZSBubwoJbWFjcm8gYnVmZmVycyBiZWxvdyB0aGUgdG9wIGZpbGUgYnVmZmVyLgoJKiBjcHBmaWxlcy5jOiBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvICdzdHJ1Y3QgaW5jbHVkZV9oYXNoJwoJd2l0aCAnSUhBU0gnLiAgUmVuYW1lIGluaXRpYWxpemVfaW5wdXRfYnVmZmVyIHRvCglpbml0X2lucHV0X2J1ZmZlci4gIERvbid0IHNldCBvciByZWZlcmVuY2UgY3BwX2J1ZmZlci0+Zm5hbWUsCgl1c2UgYnVmZmVyLT5paGFzaC0+bmFtZSBpbnN0ZWFkLgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogVXNlIGNwcF9maWxlX2J1ZmZlci4gIFVzZSBOVUxMCglub3QgQ1BQX05VTExfQlVGRkVSLgoJKiBjcHBpbml0LmM6IFVzZSBOVUxMIG5vdCBDUFBfTlVMTF9CVUZGRVIsIElGX1NUQUNLIG5vdAoJSUZfU1RBQ0tfRlJBTUUsIElIQVNIIG5vdCBzdHJ1Y3QgaW5jbHVkZV9oYXNoLgoJKiBjcHBsaWIuYzogUmVuYW1lIGV2YWxfaWZfZXhwcmVzc2lvbiB0byBldmFsX2lmX2V4cHIuICBSZW1vdmUKCW51bGxfdW5kZXJmbG93LiAgVXNlIElGX1NUQUNLIG5vdCBJRl9TVEFDS19GUkFNRSwgSUhBU0ggbm90CglzdHJ1Y3QgaW5jbHVkZV9oYXNoLCBOVUxMIG5vdCBDUFBfTlVMTF9CVUZGRVIuICBSZW1vdmUgYWxsCglyZWZlcmVuY2VzIHRvIGNwcF9idWZmZXItPmZuYW1lIChkZWxldGUgZW50aXJlbHksIG9yIHVzZQoJLT5paGFzaC0+bmFtZSBpbnN0ZWFkKSBhbmQgSUZfU1RBQ0stPmZuYW1lLgoJKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IHNldCBuZXctPnVuZGVyZmxvdy4KCShkb19pbmNsdWRlKTogVXNlIGNwcF9maWxlX2J1ZmZlci4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9mb3JtYWxfcGFyYW1ldGVycyk6IFJlbW92ZSBkdXBsaWNhdGUKCWluY3JlbWVudCBvZiBhcmdzbGVuLiAgUGVkd2FybiBpbiBDOTkgbW9kZSBpZiBfX1ZBX0FSR1NfXyBpcwoJdXNlZCBhcyBhIG1hY3JvIGFyZ3VtZW50IG5hbWUuICBEb24ndCBhcHBlbmQgIi4uLiIgdG8gbmFtZWJ1ZgoJZm9yIHZhcmFyZ3MgbWFjcm9zLiAgQWZ0ZXIgd2UncmUgZG9uZSBzY2FubmluZywgZ28gdGhyb3VnaAoJbmFtZWJ1ZiBhbmQgbWFrZSBpdCBOVUwgc2VwYXJhdGVkLCBub3QgY29tbWEgc2VwYXJhdGVkLgoJKF9jcHBfY29tcGFyZV9kZWZzKTogUmVtb3ZlIHJlZ2lzdGVyIHRhZyBmcm9tIHZhcmlhYmxlcy4KCUV4cGVjdCBkZWZuLT5hcmduYW1lcyB0byBiZSBOVUwgc2VwYXJhdGVkLgoJKF9jcHBfZHVtcF9kZWZpbml0aW9uKTogRXhwZWN0IGRlZm4tPmFyZ25hbWVzIHRvIGJlIE5VTAoJc2VwYXJhdGVkIGFuZCBpbiBmb3J3YXJkIG9yZGVyLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mIGFyZ25hbWVzIGZpZWxkLgoKMjAwMC0wMy0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IEJlIHByZXBhcmVkIGZvciBzdHJsZW5zaQoJdG8gZmFpbC4gIERvbid0IHByZS1leHBhbmQgdGhlIHNvdXJjZSBvcGVyYW5kLgoKCSogaTM4Ni5tZCAoc3RybGVuc2kpOiBJbml0aWFsaXplIGVvc2NoYXIgYW5kIGFsaWduIGJlZm9yZSB1c2UuCgoyMDAwLTAzLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQVJSQVlfUkVGKTogU3RpbGwgY2hlY2sgZm9yIG1pc3NpbmcKCUNPTlNUUlVDVE9SIGVsZW1lbnQuCgoyMDAwLTAzLTA4ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY2V0dXMuY3lnbnVzLmNvbT4KCgkqIG1pcHMuYyAobWlwc19leHBhbmRfcHJvbG9ndWUpOiBJZiB0aGUgbGFzdAoJbmFtZWQgYXJndW1lbnQgaXMgdGhlIHZhcmFyZyBtYXJrZXIgInZhX2xpc3QiLCB0cmVhdCBpdCBhcwoJYW4gdW5uYW1lZCBhcmd1bWVudC4KCjIwMDAtMDMtMDggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF9wYXJtcyk6IFdoZW4gY29ycmVjdGluZyBmb3IgcHJvbW90ZWQKCWJpZy1lbmRpYW4gcGFyYW1ldGVycywgdXNlIHRoZSBtb2RlIG9mIHRoZSBERUNMX1JUTCByYXRoZXIKCXRoYW4gVU5JVFNfUEVSX1dPUkQuCgoyMDAwLTAzLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAobWFrZV9mbmFtZV9kZWNsKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAobWFrZV9mbmFtZV9kZWNsKTogRGVmaW5lLgoJKGRlY2xhcmVfaGlkZGVuX2NoYXJfYXJyYXkpOiBSZW1vdmUuCgkoZGVjbGFyZV9mdW5jdGlvbl9uYW1lKTogVXNlIG1ha2VfZm5hbWVfZGVjbC4KCSogYy1kZWNsLmMgKGNfbWFrZV9mbmFtZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IG1ha2VfZm5hbWVfZGVjbC4KClR1ZSBNYXIgIDcgMjM6NTA6MzEgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2NjcC5jIChoYW5kbGVfZGlyZWN0aXZlKTogSW5pdGlhbGl6ZSBiYWNrc2xhc2hfbmV3bGluZXNfcC4KCjIwMDAtMDMtMDcgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogcG8vUE9URklMRVMuaW46IFJlbW92ZSBjcHBhbGxvYy5jIGZyb20gZmlsZSBsaXN0LgoKMjAwMC0wMy0wNyAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAcG9ib3guY29tPgoKCSogcGouYyAocGpfZXhwYW5kX3Byb2xvZ3VlKTogY3VycmVudF9mdW5jdGlvbi0+YXJnc19pbmZvIGlzCglub3cgY3VycmVudF9mdW5jdGlvbl9hcmdzX2luZm8uCgoJKiBwai5oIChTVE9SRV9GTEFHX1ZBTFVFLCBVU0VSX0xBQkVMX1BSRUZJWCwKCUxPQ0FMX0xBQkVMX1BSRUZJWCwgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMLAoJQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCwgQVNNX09VVFBVVF9TS0lQKTogRGVmaW5lLgoKMjAwMC0wMy0wOCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoUFVUX1NEQl9UWVBFKTogRGVmaW5lIHNvIHRoYXQgdGhlIHR5cGUgaW5mbyBpcwoJb3V0cHV0IGFzIGhleGFkZWNpbWFsIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IG9jdGFsLgoKMjAwMC0wMy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChzcGVjaWFsX3N5bWJvbCk6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgY29tbWl0LgoKMjAwMC0wMy0wNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYyAoc3RydWN0IG9wZXJhdGlvbiwgbGVmdF9zaGlmdCwgcmlnaHRfc2hpZnQsCgljcHBfcGFyc2VfZXhwcik6IENoYW5nZSBzb21lICJjaGFyInMgdG8gIlVfQ0hBUiJzLCBhbmQgc29tZQoJImludCJzIHRvICJ1bnNpZ25lZCBpbnQicy4KCSogY3BwbGliLmMgKGRldGVjdF9pZl9ub3RfZGVmaW5lZCwgZG9fYXNzZXJ0LCBkb191bmFzc2VydCk6CglTaW1pbGFybHkuCgkqIGNwcGxpYi5oOiBVcGRhdGUgZm9yIGFib3ZlLgoJKiBta2RlcHMuYyAoZGVwc19pbml0LCBkZXBzX2NhbGNfdGFyZ2V0KTogQ2FzdCBwb2ludGVycwoJcmV0dXJuZWQgZnJvbSBhbGxvY2F0aW9ucy4KCgkqIGNwcGluaXQuYyAob3B0X2NvbXAsIHBhcnNlX29wdGlvbnMpOiBOZXcgZnVuY3Rpb25zLgoJKGhhbmRsZV9vcHRpb24pOiBVc2UgcGFyc2Vfb3B0aW9uIHRvIHBhcnNlIGEgc2luZ2xlIGNvbW1hbmQKCWxpbmUgb3B0aW9uLCB0aGF0IHBvc3NpYmx5IHRha2VzIGFuIGFyZ3VtZW50LgoJKGNwcF9oYW5kbGVfb3B0aW9ucyk6IFNvcnQgdGhlIGFycmF5IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zIG9uCglmaXJzdCBpbnZvY2F0aW9uIChub24tQVNDSUkgaG9zdHMgb25seSkuCgkocHJpbnRfaGVscCk6IFVwZGF0ZS4KCjIwMDAtMDMtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIG1rZGVwcy5jIChtdW5nZSk6IEZpeCBvZmYtYnktb25lIGJ1ZyBhbmQgaW5jb25zaXN0ZW5jaWVzIGluCgliYWNrc2xhc2ggY291bnRpbmcgbG9vcHMuICBQcm9ibGVtIG5vdGVkIGJ5IE1hdHQgS3JhYWkgPGtyYWFpQGdocy5jb20+LgoKCSogY3BwZmlsZXMuYyAoX2NwcF9maW5kX2luY2x1ZGVfZmlsZSk6IE1ha2Ugc3VyZSBpaC0+bmFtZSBpcwoJaW5pdGlhbGl6ZWQuCgkqIGNwcGluaXQuYyAoY3BwX2NsZWFudXApOiBGcmVlIGltcC0+bnNob3J0IGFsc28uCgoJKiBjcHBlcnJvci5jIChjcHBfcHJpbnRfY29udGFpbmluZ19maWxlcywKCWNwcF9wcmludF9maWxlX2FuZF9saW5lLCB2X2NwcF9tZXNzYWdlKTogUmVuYW1lIHRvCglwcmludF9jb250YWluaW5nX2ZpbGVzLCBwcmludF9maWxlX2FuZF9saW5lLCBhbmQgdl9tZXNzYWdlLgoJKiBjcHBleHAuYyAoY3BwX3BhcnNlX2V4cHIsIGNwcF9wYXJzZV9lc2NhcGUsIGNwcF9sZXgpOiBSZW5hbWUKCXRvIF9jcHBfcGFyc2VfZXhwciwgcGFyc2VfZXNjYXBlLCBhbmQgbGV4LgoJKHBhcnNlX2NoYXJjb25zdCk6IFJlbW92ZSBicm9rZW4gbXVsdGlieXRlIHN1cHBvcnQuCgkqIGNwcGZpbGVzLmMgKGluY2x1ZGVfaGFzaCk6IE1ha2Ugc3RhdGljLgoJKGNwcF9pbmNsdWRlZCk6IE5ldyBmdW5jdGlvbi4KCShtZXJnZV9pbmNsdWRlX2NoYWlucywgZmluZF9pbmNsdWRlX2ZpbGUsIGZpbmNsdWRlLAoJc2ltcGxpZnlfcGF0aG5hbWUpOiBSZW5hbWUgdG8gX2NwcF9tZXJnZV9pbmNsdWRlX2NoYWlucywKCV9jcHBfZmluZF9pbmNsdWRlX2ZpbGUsIF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUsIGFuZAoJX2NwcF9zaW1wbGlmeV9wYXRobmFtZS4KCSogY3BwaGFzaC5jIChjcHBfbG9va3VwLCBmcmVlX2RlZmluaXRpb24sIGRlbGV0ZV9tYWNybywKCWNwcF9pbnN0YWxsLCBjcmVhdGVfZGVmaW5pdGlvbiwgbWFjcm9leHBhbmQsIGNvbXBhcmVfZGVmcywKCWR1bXBfZGVmaW5pdGlvbik6IFJlbmFtZSB0byBfY3BwX2xvb2t1cCwgX2NwcF9mcmVlX2RlZmluaXRpb24sCglfY3BwX2RlbGV0ZV9tYWNybywgX2NwcF9pbnN0YWxsLCBfY3BwX2NyZWF0ZV9kZWZpbml0aW9uLAoJX2NwcF9tYWNyb2V4cGFuZCwgX2NwcF9jb21wYXJlX2RlZnMsIGFuZCBfY3BwX2R1bXBfZGVmaW5pdGlvbi4KCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFJlbmFtZSB0byBoYW5kbGVfb3B0aW9uLCBtYWtlCglzdGF0aWMuCgkqIGNwcGxpYi5jOiBSZW1vdmUgZXh0ZXJuIHByb3RvdHlwZSBvZiBjcHBfcGFyc2VfZXhwci4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxpYi5oOiBMaWtld2lzZS4gIFByb3RvdHlwZSBfY3BwX3BhcnNlX2V4cHIgaGVyZS4KCjIwMDAtMDMtMDcgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChQVFJESUZGX1RZUEUpOiBSZXZlcnQgYnJva2VuIGNoYW5nZTsKCVBUUkRJRkZfVFlQRSBzaG91bGQgYmUgYmFzZWQgc29sZWx5IG9uIFBtb2RlLgoJKFNJWkVfVFlQRSk6IGRpdHRvLgoKMjAwMC0wMy0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnRsLmggKHJ0dW5pb25fZGVmKTogQ29uc3RpZnkgbWVtYmVyIGBydHN0cicuCgkoZW1pdF9saW5lX25vdGVfYWZ0ZXIsIGVtaXRfbGluZV9ub3RlLCBlbWl0X2xpbmVfbm90ZV9mb3JjZSwKCWVtaXRfbm90ZSwgZGVjb2RlX2FzbV9vcGVyYW5kcyk6IENvbnN0aWZ5LgoKCSogY3NlLmMgKGNhbm9uX2hhc2gpOiBMaWtld2lzZS4KCgkqIGRieG91dC5jIChkYnhvdXRfYmxvY2spOiBMaWtld2lzZS4KCgkqIGRpYWdub3N0aWMuYyAoZmlsZV9hbmRfbGluZV9mb3JfYXNtLCB2X2Vycm9yX2Zvcl9hc20sCgl2X3dhcm5pbmdfZm9yX2FzbSk6IExpa2V3aXNlLgoKCSogZHdhcmZvdXQuYyAoZnVuY3Rpb25fc3RhcnRfbGFiZWwpOiBMaWtld2lzZS4KCgkqIGVtaXQtcnRsLmMgKGVtaXRfbGluZV9ub3RlX2FmdGVyLCBlbWl0X2xpbmVfbm90ZSwgZW1pdF9ub3RlLAoJZW1pdF9saW5lX25vdGVfZm9yY2UpOiBMaWtld2lzZS4KCgkqIGZpbmFsLmMgKGxhc3RfZmlsZW5hbWUsIGFzbV9pbnNuX2NvdW50LCBmaW5hbF9zY2FuX2luc24sCglvdXRwdXRfc291cmNlX2xpbmUpOiBMaWtld2lzZS4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBlbWl0X3N0YXR1cyk6IExpa2V3aXNlLgoKCSogZ2NzZS5jIChoYXNoX2V4cHJfMSk6IExpa2V3aXNlLgoKCSogZ2VuYXR0ci5jIChnZW5fYXR0ciwgbWFpbik6IExpa2V3aXNlLgoKCSogZ2VuYXR0cnRhYi5jIChzdHJ1Y3QgZnVuY3Rpb25fdW5pdCwgY3VycmVudF9hbHRlcm5hdGl2ZV9zdHJpbmcsCgl3cml0ZV9hdHRyX3ZhbHVlcSwgbl9jb21tYV9lbHRzLCBuZXh0X2NvbW1hX2VsdCwgYXR0cl9lcSwKCWF0dHJfbnVtZXJhbCwgY2hlY2tfYXR0cl90ZXN0LCBjaGVja19hdHRyX3ZhbHVlLAoJY29udmVydF9zZXRfYXR0cl9hbHRlcm5hdGl2ZSwgY29udmVydF9zZXRfYXR0ciwKCWNvbXB1dGVfYWx0ZXJuYXRpdmVfbWFzaywgc2ltcGxpZnlfYnlfZXhwbG9kaW5nLCBnZW5fYXR0ciwKCWdlbl91bml0KTogTGlrZXdpc2UuCgoJKiBnZW5mbGFncy5jIChnZW5faW5zbik6IExpa2V3aXNlLgoKCSogZ2VuZ2VucnRsLmMgKHR5cGVfZnJvbV9mb3JtYXQpOiBMaWtld2lzZS4KCgkqIGdlbm9waW5pdC5jIChnZW5faW5zbik6IExpa2V3aXNlLgoKCSogZ2Vub3V0cHV0LmMgKG5fb2NjdXJyZW5jZXMsIHByb2Nlc3NfdGVtcGxhdGUsIHByb2Nlc3NfdGVtcGxhdGUpOgoJTGlrZXdpc2UuCgoJKiBnZ2MtcGFnZS5jIChnZ2Nfc2V0X21hcmssIGdnY19tYXJrX2lmX2djYWJsZSwgZ2djX2dldF9zaXplKToKCUxpa2V3aXNlLgoKCSogZ2djLXNpbXBsZS5jIChnZ2Nfc2V0X21hcmssIGdnY19tYXJrX2lmX2djYWJsZSwgZ2djX2dldF9zaXplKToKCUxpa2V3aXNlLgoKCSogZ2djLmggKGdnY19tYXJrX3N0cmluZywgZ2djX21hcmssIGdnY19tYXJrX2lmX2djYWJsZSwKCWdnY19zZXRfbWFyaywgZ2djX2dldF9zaXplKTogTGlrZXdpc2UuCgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yLCBmaW5pc2hfb2JqYyk6IExpa2V3aXNlLgoKCSogb3B0YWJzLmMgKGluaXRfb25lX2xpYmZ1bmMpOiBMaWtld2lzZS4KCgkqIG91dHB1dC5oIChhc3NlbWJsZV9zdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoKCSogcmVjb2cuYyAoZGVjb2RlX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCgkqIHRyZWUuaCAoZW1pdF9saW5lX25vdGVfYWZ0ZXIsIGVtaXRfbGluZV9ub3RlLAoJZW1pdF9saW5lX25vdGVfZm9yY2UpOiBMaWtld2lzZS4KCgkqIHZhcmFzbS5jIChhc21fb3V0cHV0X2JzcywgYXNtX291dHB1dF9hbGlnbmVkX2JzcywKCWFzbV9lbWl0X3VuaW5pdGlhbGlzZWQsIGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uLAoJYXNzZW1ibGVfdmFyaWFibGUsIGNvbnN0X2hhc2gsIGNvbXBhcmVfY29uc3RhbnRfMSwKCWZpbmRfcG9vbF9jb25zdGFudCwgbWFya19jb25zdGFudF9wb29sLCBhc3NlbWJsZV9hbGlhcyk6IExpa2V3aXNlLgoKCSogeGNvZmZvdXQuaCAoREJYX0ZJTklTSF9TWU1CT0wpOiBMaWtld2lzZS4KCgkqIGFscGhhL2FscGhhLm1kIChjYWxsX3ZtcywgY2FsbF92YWx1ZV92bXMpOiBMaWtld2lzZS4KCgkqIGFybS9hb2YuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogYXJtL2FvdXQuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogYXJtL2FybS1wcm90b3MuaCAob3V0cHV0X2FzY2lpX3BzZXVkb19vcCwgYXJtX2RsbGV4cG9ydF9uYW1lX3AsCglhcm1fZGxsaW1wb3J0X25hbWVfcCk6IExpa2V3aXNlLgoKCSogYXJtL2FybS5jIChhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlLCBvdXRwdXRfYXNjaWlfcHNldWRvX29wKToKCUxpa2V3aXNlLgoKCSogYXJtL2FybS5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogTGlrZXdpc2UuCgoJKiBhcm0vZWxmLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIGFybS9wZS5jIChhcm1fZGxsZXhwb3J0X25hbWVfcCwgYXJtX2RsbGltcG9ydF9uYW1lX3AsCglhcm1fbWFya19kbGxleHBvcnQsIGFybV9tYXJrX2RsbGltcG9ydCwKCWFybV9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgoJKiBhcm0vdGVsZi5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTLAoJQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogYXJtL3RodW1iLmMgKHRodW1iX2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgoJKiBhcm0vdGh1bWIuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogYXZyL2F2ci5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBjbGlwcGVyL2NsaXguaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogZng4MC9meDgwLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIGkzODYvY3lnd2luLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogTGlrZXdpc2UuCgoJKiBpMzg2L2ZyZWVic2QuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogaTM4Ni9pMzg2LWludGVyaXguaCAoQVNNX09VVFBVVF9MSU1JVEVEX1NUUklORywKCUFTTV9PVVRQVVRfQVNDSUksIEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogTGlrZXdpc2UuCgoJKiBpMzg2L2kzODYtcHJvdG9zLmggKGFzbV9vdXRwdXRfZnVuY3Rpb25fcHJlZml4KTogTGlrZXdpc2UuCgoJKiBpMzg2L2kzODYuYyAoYXNtX291dHB1dF9mdW5jdGlvbl9wcmVmaXgpOiBMaWtld2lzZS4KCgkqIGkzODYvaTM4NmVsZi5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBpMzg2L29zZnJvc2UuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogaTM4Ni9wdHg0LWkuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogaTM4Ni9zY281LmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QsCglBU01fT1VUUFVUX0xJTUlURURfU1RSSU5HLCBBU01fT1VUUFVUX0FTQ0lJLAoJQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBMaWtld2lzZS4KCgkqIGkzODYvc3lzdjQuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogaTg2MC9wYXJhZ29uLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIGk4NjAvc3lzdjMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogbTMyci9tMzJyLmMgKG0zMnJfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoKCSogbWNvcmUtZWxmLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG1jb3JlL21jb3JlLmMgKG1jb3JlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCgkqIG1pcHMvZWxmLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG1pcHMvZWxmNjQuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogbWlwcy9pcmlzNi5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBtaXBzL21pcHMuaCAoQVNNX09VVFBVVF9JREVOVCk6IExpa2V3aXNlLgoKCSogbWlwcy9taXBzLm1kIChtb3ZkaSwgbW92c2kpOiBMaWtld2lzZS4KCgkqIG1pcHMvbmV0YnNkLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG5ldGJzZC5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBvcGVuYnNkLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIHB0eDQuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCwgQVNNX09VVFBVVF9MSU1JVEVEX1NUUklORywKCUFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIHJzNjAwMC9yczYwMDAuYyAocnM2MDAwX2FsbG9jYXRlX3N0YWNrX3NwYWNlLCBvdXRwdXRfZXBpbG9nLAoJb3V0cHV0X21pX3RodW5rLCBvdXRwdXRfdG9jKTogTGlrZXdpc2UuCgoJKiByczYwMDAvcnM2MDAwLm1kIChtb3ZzaSk6IExpa2V3aXNlLgoKCSogcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfSU5ULCBBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoKCSogdGFob2UvaGFycmlzLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIHY4NTAvdjg1MC5jIChwcmludF9vcGVyYW5kLCBwcmludF9vcGVyYW5kX2FkZHJlc3MsCgl2ODUwX2VuY29kZV9kYXRhX2FyZWEpOiBMaWtld2lzZS4KCjIwMDAtMDMtMDcgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoemVyb19leHRlbmRzaWRpMik6IEFsd2F5cyBmb3JjZSBvcGVyYW5kCglvbmUgdG8gbWVtb3J5IGZvciBtaXBzMTYuCgpNb24gTWFyICA2IDE1OjIyOjI5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmggKElOVF9DU1RfTFQsIElOVF9DU1RfTFRfVU5TSUdORUQpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgkoc3RydWN0IHRyZWVfaW50X2NzdCk6IGludF9jc3RfbG93IGlzIG5vdyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKGF0dHJpYnV0ZV9oYXNoX2xpc3QsIHR5cGVfaGFzaF9jYW5vbik6IGhhc2hjb2RlIGlzIG5vdyB1bnNpZ25lZC4KCSh0eXBlX2hhc2hfbG9va3VwLCB0eXBlX2hhc2hfYWRkLCB0eXBlX2hhc2hfbGlzdCk6IExpa2V3aXNlLgoJKG1pbl9wcmVjaXNpb24pOiBSZXN1bHQgaXMgdW5zaWduZWQuCgkoYWRkX2RvdWJsZSwgbmVnX2RvdWJsZSwgbXVsX2RvdWJsZSk6IExvdyB3b3JkIGlzIHVuc2lnbmVkLgoJKGxzaGlmdF9kb3VibGUsIHJzaGlmdF9kb3VibGUsIGxyb3RhdGVfZG91YmxlKTogTGlrZXdpc2UuCgkocnJvdGF0ZV9kb3VibGUsIGRpdl9hbmRfcm91bmRfZG91YmxlKTogTGlrZXdpc2UuCgkodHJlZV9mbG9vcl9sb2cyLCBjb21wYXJlX3RyZWVfaW50KTogTmV3IGZ1bmN0aW9ucy4KCShwcmVzZXJ2ZV9ydGxfZXhwcl90ZW1wcyk6IE5ldyBkZWNsYXJhdGlvbi4KCSogYy1jb21tb24uYyAoZGVjbGFyZV9oaWRkZW5fY2hhcl9hcnJheSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKGRlY2xfYXR0cmlidXRlcyk6IFVzZSB0cmVlX2xvZzIgdG8gZmluZCBhbGlnbm1lbnQuCglDaGVjayBmb3IgVFJFRV9JTlRfQ1NUX0hJR0ggZm9yIGZvcm1hdCBhcmdzLgoJKG1pbl9wcmVjaXNpb24pOiBOb3cgdW5zaWduZWQuCglVc2UgdHJlZV9mbG9vcl9sb2cyLgoJKHRydXRodmFsdWVfY29udmVyc2lvbik6IERlbGV0ZSBsb25nLWRpc2FibGVkIGNvZGUuCgkqIGMtZGVjbC5jIChmaW5pc2hfc3RydWN0KTogQ2xlYW4gdXAgdGVzdHMgb24gZmllbGQgd2lkdGguCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfdG9rZW4pOiBVc2UgdHJlZV9sb2cyIGZvciBhbGlnbm1lbnQuCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFVzZSB0cmVlX2ludF9jc3RfZXF1YWwuCgkoZGVmYXVsdF9jb252ZXJzaW9uLCBkaWdlc3RfaW5pdCk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBpbnRlZ2VyX2FsbF9vbmVzcCBhbmQgY29tcGFyZV90cmVlX2ludC4KCUZpeCB0eXBlIGVycm9ycyBpbiBmb3JtaW5nIG1hc2tzLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IENhc3QgVFJFRV9JTlRfQ1NUX0xPVyB0byBIT1NUX1dJREVfSU5ULgoJKiBleGNlcHQuYyAoZXhwYW5kX2VoX3JlZ2lvbl9zdGFydF90cmVlKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIGV4cHIuYyAoaXNfemVyb3NfcCwgY2FzZSBJTlRFR0VSX0NTVCk6IFVzZSBpbnRlZ2VyX3plcm9wLgoJKHN0b3JlX2ZpZWxkKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQ09OU1RSVUNUT1IpOiBVc2UgVFlQRV9TSVpFX1VOSVQuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQVJSQVlfUkVGKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoZG9fanVtcCwgY2FzZSBCSVRfQU5EX0VYUFIpOiBVc2UgdHJlZV9mbG9vcl9sb2cyLgoJKGRvX3N0b3JlX2ZsYWcpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCSogZm9sZC1jb25zdC5jIChlbmNvZGUsIGRlY29kZSk6IExvdyBwYXJ0IGlzIGFsd2F5cyB1bnNpZ25lZC4KCShmb3JjZV9maXRfdHlwZSwgYWRkX2RvdWJsZSwgbmVnX2RvdWJsZSwgbXVsX2RvdWJsZSk6IExpa2V3aXNlLgoJKGxzaGlmdF9kb3VibGUsIHJzaGlmdF9kb3VibGUsIGxyb3RhdGVfZG91YmxlKTogTGlrZXdpc2UuCgkocnJvdGF0ZV9kb3VibGUsIGRpdl9hbmRfcm91bmRfZG91YmxlLCBpbnRfY29uc3RfYmlub3ApOiBMaWtld2lzZS4KCShmb2xkX2NvbnZlcnQpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCShvcGVyYW5kX2VxdWFsX3AsIGNhc2UgSU5URUdFUl9DU1QpOiBVc2UgdHJlZV9pbnRfY3N0X2VxdWFsLgoJKGludmVydF90cnV0aHZhbHVlLCBjYXNlIElOVEVHRVJfQ1NUKTogTGlrZXdpc2UuCgkoZm9sZCk6IFVzZSBjb21wYXJlX3RyZWVfaW50OyBhZGQgY2FzdHMgZm9yIHVuc2lnbmVkIFRSRUVfSU5UX0NTVF9MT1cuCgkqIG1rZGVwcy5jIChkZXBzX2R1bW15X3RhcmdldHMpOiBNYWtlIEkgdW5zaWduZWQuCgkqIHJ0bC5oIChhZGRfZG91YmxlLCBuZWdfZG91YmxlLCBtdWxfZG91YmxlKTogTG93IHdvcmRzIGFyZSB1bnNpZ25lZC4KCShsc2hpZnRfZG91YmxlLCByc2hpZnRfZG91YmxlLCBscm90YXRlX2RvdWJsZSwgcnJvdGF0ZV9kb3VibGUpOgoJTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBVc2UgY29tcGFyZV90cmVlX2ludCBhbmQgbW9kZV9mb3Jfc2l6ZV90cmVlLgoJKGV4cGFuZF9lbmRfY2FzZSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKGVzdGltYXRlX2Nhc2VfY29zdHMpOiBDYXN0IFRSRUVfSU5UX0NTVF9MT1cgdG8gSE9TVF9XSURFX0lOVC4KCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZV90cmVlKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkobGF5b3V0X2RlY2wpOiBMaWtld2lzZS4KCShsYXlvdXRfcmVjb3JkLCBsYXlvdXRfdW5pb24pOiBNYWtlIHNpemVzIHVuc2lnbmVkLgoJKGxheW91dF90eXBlLCBjYXNlIFZPSURfVFlQRSk6IFRZUEVfU0laRSBtdXN0IGJlIGJpdHNpemV0eXBlLgoJKGxheW91dF90eXBlLCBjYXNlIFFVQUxfVU5JT05fVFlQRSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKiB0cmVlLmMgKHN0cnVjdCB0eXBlX2hhc2gpOiBoYXNoY29kZSBpcyB1bnNpZ25lZC4KCShidWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50LCB0eXBlX2hhc2hfbGlzdCk6IExpa2V3aXNlLgoJKHR5cGVfaGFzaF9sb29rdXAsIHR5cGVfaGFzaF9hZGQsIHR5cGVfaGFzaF9jYW5vbik6IExpa2V3aXNlLgoJKGF0dHJpYnV0ZV9oYXNoX2xpc3QsIGJ1aWxkX2FycmF5X3R5cGUsIGJ1aWxkX21ldGhvZF90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcGxleF90eXBlKTogTGlrZXdpc2UuCgkocmVhbF92YWx1ZV9mcm9tX2ludF9jc3QpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgkoaW50ZWdlcl9hbGxfb25lc3ApOiBBZGQgY2FzdHMuCgkodHJlZV9mbG9vcl9sb2cyLCBjb21wYXJlX3RyZWVfaW50KTogTmV3IGZ1bmN0aW9ucy4KCShidWlsZF9pbmRleF90eXBlKTogVXNlIHRyZWVfaW50X2NzdF9zZ24uCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoKMjAwMC0wMy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBoYXNoLmMgKGNvbGxlY3RfZXhwYW5zaW9uKTogQWxzbyBjYXRjaCAjIyBhdCBzdGFydCBvZiBtYWNyby4KCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsKTogRG9uJ3QgYWRkIGEgbnVtYmVyIHRvIG1lbWJlcnMgb2YKCWxvY2FsIGNsYXNzZXMuCgkobWFrZV9mdW5jdGlvbl9ydGwpOiBMaWtld2lzZS4KCjIwMDAtMDMtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZ2NzZS5jIChjb21wdXRlX2Nhbl9jb3B5KTogQWRqdXN0IGlmL2Vsc2UgYmxvY2tzIGZyb20gcnRoJ3MKCXBhdGNoIGZyb20gMjAwMC0wMS0yOC4KCjIwMDAtMDMtMDYgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL3NoL3NoLmM6IChiYXJyaWVyX2FsaWduKTogSGFuZGxlIGEgZGVsYXkgc2xvdCB0aGF0IGlzCglmaWxsZWQgd2l0aCBhbiBpbnNuIGZyb20gdGhlIGp1bXAgdGFyZ2V0LgoKMjAwMC0wMy0wNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9nbG9iYWxfbmFtZSk6IENvbnN0aWZ5IGNoYXIgKi4KCShjNHhfZXh0ZXJuYWxfcmVmKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKHN0cnVjdCBuYW1lX2xpc3QpOiBMaWtld2lzZS4KCjE5OTktMTItMTYgIEJlbiBDb2xsaW5zICA8YmNvbGxpbnNAZGViaWFuLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBQYXNzIGEgbmV3IE1VTFRJTElCX0VYQ0xVU0lPTlMgb3B0aW9uIGFzIHRoZSBzaXh0aAoJYXJndW1lbnQgdG8gZ2VubXVsdGlsaWIuCgkqIGdlbm11bHRpbGliOiBhY2NlcHQgbmV3IE1VTFRJTElCX0VYQ0xVU0lPTlMgb3B0aW9uIGFuZCBvdXRwdXQKCXRoZSBjb250ZW50cyBpbnRvIHRoZSBtdWx0aWxpYi5oIGhlYWRlci4KCSogZ2NjLmM6IERlY2xhcmUgbXVsdGlsaWJfZXhjbHVzaW9ucyBmb3IgdGhlIHNwZWNzIGZpbGUuCgkoc2V0X211bHRpbGliX2Rpcik6IFVzZSBpdC4KCShwcmludF9tdWx0aWxpYl9pbmZvKTogTGlrZXdpc2UuCgkqIHQtbGludXg2NDogRGVjbGFyZSBhcmd1bWVudHMgZm9yIG5ldyBNVUxUSUxJQl9FWENMVVNJT05TIG9wdGlvbgoJdG8gcGFzcyB0byBnZW5tdWx0aWxpYi4KCjIwMDAtMDMtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0X2luX2NsYXNzX25hbWVzLCBidWlsdF9pbl9uYW1lcyk6IENvbnN0aWZ5IGEKCWNoYXIqLgoKCSogZ21vbi1zb2wyLmMgKG1vbnN0YXJ0dXAsIG1vbmNvbnRyb2wpOiBDYXN0IHB0cnMgdG8gbG9uZywgbm90CglpbnQuCgkoX21jbGVhbnVwKTogRW5zdXJlIHZhbHVlIG1hdGNoZXMgZm9ybWF0IHNwZWNpZmllciBpbiBzcHJpbnRmLgoKCSogY3BwaGFzaC5jIChzcGVjaWFsX3N5bWJvbCk6IERvbid0IG5lZWRsZXNzbHkgY2FzdCBhd2F5Cgljb25zdC1uZXNzLgoKCSogY3BwaW5pdC5jIChiYXNlX25hbWUpOiBEZWxldGUgdW51c2VkIHByb3RvdHlwZS4KCgkqIG1rZGVwcy5jIChkZXBzX2luaXQpOiBNYWtlIGRlZmluaXRpb24gSyZSIHNhZmUuCgoJKiB0cmVlLmggKGJ1aWx0X2luX2NsYXNzX25hbWVzLCBidWlsdF9pbl9uYW1lcyk6IENvbnN0aWZ5IGEKCWNoYXIqLgoKMjAwMC0wMy0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZWxpZ2libGVfZm9yX2VwaWxvZ3VlX2RlbGF5KTogQWNjZXB0CglmbG9hdGluZyBwb2ludCBpbnN0cnVjdGlvbnMgZm9yIGVwaWxvZ3VlIGRlbGF5LgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9BUkNINjRfU1BFQyk6IFBhc3MgLW5vLXVuZGVjbGFyZWQtcmVncwoJdG8gZ2FzIGlmIGl0IHN1cHBvcnRzIC5yZWdpc3RlciBwc2V1ZG8uCgoJKiByZWFsLmggKE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUgdG8KCUxPTkdfRE9VQkxFX1RZUEVfU0laRSBpZiBub3QgZGVmaW5lZC4KCVVzZSBNQVhfTE9OR19ET1VCTEVfVFlQRV9TSVpFIGluc3RlYWQgb2YKCUxPTkdfRE9VQkxFX1RZUEVfU0laRSBpbiBwcmVwcm9jZXNzb3IgaWYgY2xhdXNlcy4KCSogcmVhbC5jOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmM6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYzogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NvbDItc2xkLTY0LmggKFRBUkdFVF9ERUZBVUxUKTogU2V0CglNQVNLX0xPTkdfRE9VQkxFXzEyOC4KCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoVEFSR0VUX0RFRkFVTFQpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwNjQtZWxmLmggKFRBUkdFVF9ERUZBVUxUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0IChUQVJHRVRfREVGQVVMVCk6IExpa2V3aXNlLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IERlZmluZS4KCShDUFBfQVJDSDMyX1NQRUMpOiBEZWZpbmUgX19MT05HX0RPVUJMRV8xMjhfXyBpZiBjb21waWxpbmcKCXdpdGggLW1sb25nLWRvdWJsZS0xMjguCgkoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIGRlcGVuZGluZyBvbiB0YXJnZXRfZmxhZ3MuCgkoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZS4KCShMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSBkZXBlbmRpbmcgb24gQ1BQIG1hY3Jvcy4KCShDQzFfU1BFQyk6IEluY2x1ZGUgLW1sb25nLWRvdWJsZS17NjQsMTI4fSBhcyBuZWVkZWQuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChTVUJUQVJHRVRfU1dJVENIRVMpOiBEZWZpbmUuCgkoQ1BQX1NVQlRBUkdFVF9TUEVDKTogRGVmaW5lIF9fTE9OR19ET1VCTEVfMTI4X18gaWYgY29tcGlsaW5nCgl3aXRoIC1tbG9uZy1kb3VibGUtMTI4LgoJKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSBkZXBlbmRpbmcgb24gdGFyZ2V0X2ZsYWdzLgoJKE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUuCgkoTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUgZGVwZW5kaW5nIG9uIENQUCBtYWNyb3MuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChNQVNLX0xPTkdfRE9VQkxFXzEyOCwKCVRBUkdFVF9MT05HX0RPVUJMRV8xMjgpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eC1hb3V0LmggKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX292ZXJyaWRlX29wdGlvbnMpOiBEaXNhbGxvdyA2NGJpdAoJbG9uZyBkb3VibGUgb24gVEFSR0VUX0FSQ0g2NC4KCjIwMDAtMDMtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5jIChmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwcik6IERvbid0IGZyZWUgc2xvdHMKCXRoYXQgaGF2ZSBiZWVuIHB1c2hlZCBpbnRvIGEgaGlnaGVyIGxldmVsLgoKCVJldmVydCB0aGlzIHBhdGNoOgoJMjAwMC0wMy0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCjIwMDAtMDMtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChBTExPQ0FfUkVHX1NFVCk6IFJlbW92ZS4KCShJTklUSUFMSVpFX1JFR19TRVQpOiBOZXcgbWFjcm8uCgkqIGZsb3cuYyAodXBkYXRlX2xpZmVfaW5mbyk6IFVzZSBpdC4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IExpa2V3aXNlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoYnVpbGRfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9yZWdpb24pOiBMaWtld2lzZS4KCjIwMDAtMDMtMDUgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZHdhcmYyb3V0LmMgKFVOQUxJR05FRF9XT1JEX0FTTV9PUCk6IFN1cHBvcnQgMiBieXRlcyBwb2ludGVyLgoJKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9DT05TVCk6IFVzZSBVTkFMSUdORURfV09SRF9BU01fT1AuCgkoRFdBUkZfQVJBTkdFU19QQURfU0laRSk6IE5ldyBkZWZpbmUuCgkob3V0cHV0X2FyYW5nZXMpOiBVc2UgaXQgdG8gcGFkIHRoZSBhZGRyZXNzIHJhbmdlIGhlYWRlci4KCShEV0FSRl9ST1VORCk6IEZpeCBmb3Igbm9uIHBvd2VyIG9mIDIgcm91bmRpbmcuCgoyMDAwLTAzLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIG1rZGVwcy5jIChkZXBzX2NhbGNfdGFyZ2V0KTogUmVtb3ZlIGluY29ycmVjdCAnY29uc3QnLgoKMjAwMC0wMy0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuZGVmIChSVExfRVhQUik6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiB0cmVlLmggKFJUTF9FWFBSX0hBU19OT19TQ09QRSk6IE5ldyBtYWNyby4KCSogZXhwci5jIChleHBhbmRfZXhwcik6IEhhbmRsZSBSVExfRVhQUl9IQVNfTk9fU0NPUEUuCgkqIGZ1bmN0aW9uLmMgKHByZXNlcnZlX3J0bF9leHByX3RlbXApOiBOZXcgZnVuY3Rpb24uCgkocHJlc2VydmVfcnRsX2V4cHJfdGVtcHMpOiBMaWtld2lzZS4KCShwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQpOiBVc2UgaXQuCgoJUmV2ZXJ0IHRoaXMgcGF0Y2g6CgkyMDAwLTAzLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKMjAwMC0wMy0wNCAgVGhvbWFzIFNjaHVzdGVyIDxUaG9tYXMuU2NodXN0ZXJAZ214Lm5ldD4KCgkqIHJlZ21vdmUuYyAoY29weV9zcmNfdG9fZGVzdCkgIERvIG5vdCBjcmVhdGUgc3JjLT5kZXN0IG1vdmUKCWZvciB1bmNoYW5naW5nIGRlc3RpbmF0aW9uLgoKMjAwMC0wMy0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBzZXF1ZW5jZV9zdGFjayk6IFJlbW92ZSBydGxfZXhwci4KCShzdHJ1Y3QgZW1pdF9zdGF1cyk6IExpa2V3aXNlLgoJKHNlcV9ydGxfZXhwcik6IFJlbW92ZS4KCSogdHJlZS5oIChmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwcik6IERvbid0IGRlY2xhcmUuCgkoc3RhcnRfc2VxdWVuY2VfZm9yX3J0bF9leHByKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoc3RhcnRfc2VxdWVuY2UpOiBEb24ndCBzZXQgc2VxdWVuY2VfcnRsX2V4cHIuCgkoc3RhcnRfc2VxdWVuY2VfZm9yX3J0bF9leHByKTogUmVtb3ZlLgoJKHB1c2hfdG9wbW9zdF9zZXF1ZW5jZSk6IERvbid0IHNhdmUgc2VxdWVuY2VfcnRsX2V4cHIuCgkocG9wX3RvcG1vc3Rfc2VxdWVuY2UpOiBSZW1vdmUgY29tbWVudCBhYm91dCBub3QgcmVzdG9yaW5nIGl0LgoJKGVuZF9zZXF1ZW5jZSk6IERvbid0IHNldCBzZXFfcnRsX2V4cHIuCgkoaW5pdF9lbWl0KTogRG9uJ3QgaW5pdGlhbGl6ZSBpdC4KCShtYXJrX3NlcXVlbmNlX3N0YWNrKTogRG9uJ3QgbWFyayBpdC4KCShtYXJrX2VtaXRfc3RhdHVzKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChwcm90ZWN0X3dpdGhfdGVybWluYXRlKTogVXNlCglzdGFydF9zZXF1ZW5jZV9mb3JfcnRsX2V4cHIsIG5vdCBzdGFydF9zZXF1ZW5jZS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBSVExfRVhQUik6IERvbid0IGNhbGwKCXByZXNlcnZlX3J0bF9leHByX3Jlc3VsdCBvciBmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwci4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBEb24ndCBzZXQgcnRsX2V4cHIuCgkocHJlc2VydmVfcnRsX2V4cHJfcmVzdWx0KTogUmVtb3ZlLgoJKGZyZWVfdGVtcHNfZm9yX3J0bF9leHByKTogTGlrZXdpc2UuCgkocG9wX3RlbXBfc2xvdHMpOiBMaWtld2lzZS4KCShtYXJrX3RlbXBfc2xvdCk6IERvbid0IG1hcmsgdGhlIHJ0bF9leHByLgoJKiBzdG10LmMgKGV4cGFuZF9zdGFydF9zdG10X2V4cHIpOiBVc2Ugc3RhcnRfc2VxdWVuY2UsIG5vdAoJc3RhcnRfc2VxdWVuY2VfZm9yX3J0bF9leHByLgoKMjAwMC0wMy0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogbWtkZXBzLmMsIG1rZGVwcy5oOiBOZXcgZmlsZXMuCgkqIHBvL1BPVEZJTEVTLmluOiBBZGQgdGhlbS4KCSogTWFrZWZpbGUuaW4gKExJQkNQUF9PQkpTKTogQWRkIG1rZGVwcy5vLgoJKGNwcGxpYi5vLCBjcHBpbml0Lm8pOiBEZXBlbmQgb24gbWtkZXBzLmguCgkobWtkZXBzLm8pOiBOZXcgdGFyZ2V0LgoKCSogY3BwZmlsZXMuYzogRGVsZXRlIGRlcHNfb3V0cHV0LgoJKiBjcHBpbml0LmM6IEluY2x1ZGUgbWtkZXBzLmguICBEZWxldGUga25vd25fc3VmZml4ZXMsCglPQkpFQ1RfU1VGRklYLCBhbmQgYmFzZV9uYW1lLgoJKGNwcF9jbGVhbnVwKTogVXNlIGRlcHNfZnJlZS4gIEZyZWUgaWhhc2gtPm5hbWUgd2hlbiBjbGVhcmluZwoJdGhlIGluY2x1ZGUgaGFzaC4KCShpbml0aWFsaXplX2RlcGVuZGVuY3lfb3V0cHV0KTogVXNlIGRlcHNfaW5pdCwKCWRlcHNfYWRkX3RhcmdldCwgZGVwc19jYWxjX3RhcmdldCwgYW5kIGRlcHNfYWRkX2RlcC4gIFJlbW92ZQoJYWxsIHRoZSB1bm5lY2Vzc2FyeSBzdHJpbmcgYmFzaGluZy4KCShjcHBfZmluaXNoKTogVXNlIGRlcHNfd3JpdGUuICBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgbmVzdGluZwoJbGV2ZWwuCgkqIGNwcGxpYi5jIChkb19pbmNsdWRlKTogVXNlIGRlcHNfYWRkX2RlcC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVwbGFjZSBkZXBzX2J1ZmZlciwKCWRlcHNfYWxsb2NhdGVkX3NpemUsIGRlcHNfc2l6ZSwgZGVwc19jb2x1bW4gbWVtYmVycyB3aXRoCglzaW5nbGUgcG9pbnRlciB0byBhIHN0cnVjdCBkZXBzLiAgRGVsZXRlIHByb3RvdHlwZSBvZgoJZGVwc19vdXRwdXQuCgoJKiBjcHBpbml0LmM6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgcGF0Y2guCgpTYXQgTWFyICA0IDExOjMyOjMwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtYWNobW9kZS5oIChtb2RlX2Zvcl9zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogU0laRSBub3cgc2lnbmVkLgoJKiBzdG9yLWxheW91dC5jIChtb2RlX2Zvcl9zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogTGlrZXdpc2UuCgkobW9kZV9mb3Jfc2l6ZV90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9kZWNsLCBsYXlvdXRfdHlwZSk6IENhbGwgaXQgYW5kIGNsZWFuIHVwIEJMS21vZGUgY2hlY2tzLgoJKiB0cmVlLmggKG1vZGVfZm9yX3NpemVfdHJlZSk6IE5ldyBkZWNsYXJhdGlvbi4KCgkqIHRvcGxldi5jIChkZWJ1Z19pZ25vcmVfYmxvY2spOiBNYXJrIGFyZyBCTE9DSyBhcyBwb3NzaWJseSB1bnVzZWQuCgoyMDAwLTAzLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoaXNfYm9keV9ibG9jayk6IE1vdmUuLi4KCSogZHdhcmZvdXQuYywgZHdhcmYyb3V0LmM6IC4uLmZyb20gaGVyZS4KCSogdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBEb24ndCByZW1vdmUgdGhlIGJvZHkgYmxvY2suCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRG8gY2FsbCByZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMKCXdoZW4gc2NoZWR1bGluZy4KCjIwMDAtMDMtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZy92YXgveG0tdm1zLmg6IERlZmluZSBPQkpFQ1RfU1VGRklYIGFuZCBFWEVDVVRBQkxFX1NVRkZJWC4KCgkqIGNwcGxpYi5oIChfZG9sbGFyX29rKTogTmV3IG1hY3JvLgoJKGlzX2lkY2hhciwgaXNfaWRzdGFydCk6IFVzZSBpdC4KCShJU3RhYmxlKTogUmVuYW1lIHRvIF9jcHBfSVN0YWJsZS4gIERlY2xhcmUgaXQgY29uc3QgaWYKCWdjYyA+PTIuNyBvciBDOTkuICBEZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gRkFLRV9DT05TVC4KCShpc19pZGNoYXIsIGlzX2lkc3RhcnQsIGlzX251bWNoYXIsIGlzX251bXN0YXJ0LCBpc19oc3BhY2UsCglpc19zcGFjZSk6IFVwZGF0ZSBmb3IgcmVuYW1lZCBJU3RhYmxlLgoKCSogY3BwaW5pdC5jOiBEZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gRkFLRV9DT05TVCBhbmQgQ0FUCgltYWNyb3MuIERlZmluZSBpbml0X0lTdGFibGUgYXMgZW1wdHkgbWFjcm8gaWYgZ2NjID49Mi43IG9yCglDOTkuIENoYW5nZSBUQUJMRSgpIHRvIElTVEFCTEUgYW5kIGhhcmRjb2RlIG5hbWUgb2YgdGFibGUuCgkoY3BwX3N0YXJ0X3JlYWQpOiBEb24ndCBjaGFuZ2UgdGhlIElTdGFibGUgYmFzZWQgb24KCWRvbGxhcnNfaW5faWRlbnQuCgoJKiBjcHBoYXNoLmMgKHVuc2FmZV9jaGFycyk6IEFkZCBwZmlsZSBhcmd1bWVudC4gIEFsbCBjYWxsZXJzCgljaGFuZ2VkLiAgSGFuZGxlICckJyBmb3IgY2hhcjEgY29ycmVjdGx5LgoJKiBjcHBsaWIuYyAoY3BwX2dldF90b2tlbik6IFVzZSBpc19udW1jaGFyIHdoZW4gcGFyc2luZyBudW1iZXJzLgoKCSogY3BwZXhwLmMgKHRva2VudGFiMik6IE1ha2UgY29uc3QuCgkoY3BwX2xleCk6IE1ha2UgdG9rdGFiIGNvbnN0LgoJKiBjcHBpbml0LmMgKGluY2x1ZGVfZGVmYXVsdHNfYXJyYXkpOiBNYWtlIGNvbnN0LgoJKGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMpOiBNYWtlIGRlZmF1bHRfaW5jbHVkZSBjb25zdC4KCjIwMDAtMDMtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Zyk6IEFkZCBjYXN0IHRvIHNpbGVuY2Ugd2FybmluZy4KCShkd2FyZjJvdXRfZGVjbCk6IEZ1bmN0aW9ucyBjYW4gbm93IGhhdmUgREVDTF9JR05PUkVEX1AuCgkoZ2VuX2RlY2xfZGllKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGR3YXJmb3V0X2ZpbGVfc2NvcGVfZGVjbCk6IExpa2V3aXNlLgoJKG91dHB1dF9kZWNsKTogTGlrZXdpc2UuCgoJKiB2YXJhc20uYyAobWFrZV9mdW5jdGlvbl9ydGwpOiBJZiB3ZSBjaGFuZ2UgdGhlIG5hbWUgdXNlZCBpbiB0aGUKCXJ0bCwgdXBkYXRlIERFQ0xfQVNTRU1CTEVSX05BTUUgYWNjb3JkaW5nbHkuCgkobWFrZV9kZWNsX3J0bCk6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBUd2VhayBmb3JtYXR0aW5nLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBmaW5kX2xvb3BfdHJlZV9ibG9ja3MgYmVmb3JlCglyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMuCgkoZGVidWdfaWdub3JlX2Jsb2NrKTogTmV3IGZuLgoJKiB0b3BsZXYuaDogRGVjbGFyZSBpdC4KCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogQ2FsbCBpdC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9pZ25vcmVfYmxvY2spOiBOZXcgZm4uCgkqIGR3YXJmMm91dC5oOiBEZWNsYXJlIGl0LgoJKiBmaW5hbC5jIChmaW5hbF9zdGFydF9mdW5jdGlvbik6IERvbid0IGNhbGwgcmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzCglpZiB3ZSBkaWQgaW5zbiBzY2hlZHVsaW5nLgoKMjAwMC0wMy0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFNldCBvcHRzLT5wZWRhbnRpYyBkaXJlY3RseS4KCSogY3BwbGliLmg6IERlbGV0ZSBTRVRfQ1BQX1BFREFOVElDLgoKRnJpIE1hciAgMyAxNDo1NjoxMiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogVXNlIGJpdGZpZWxkIGNhc2UgaWYKCXJlc3VsdCBpcyBhIFJFQ09SRF9UWVBFLgoKMjAwMC0wMy0wMyAgSm9uYXRoYW4gTGFybW91ciAgPGpsYXJtb3VyQGN5Z251cy5jby51az4KCgkqIG1pcHMvZWxmLmggKENUT1JfTElTVFNfREVGSU5FRF9FWFRFUk5BTExZKTogQWRkZWQuCgoyMDAwLTAzLTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZW1pdF9zZXRfY29uc3RfMSk6IFJlLW9yZGVyIGNhc2VzIHRvIHByZWZlcgoJYWRkaXRpb24gb3ZlciBjb21wbGltZW50cyBvdmVyIHNoaWZ0cy4KCkZyaSBNYXIgIDMgMTI6NDk6MjggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZV9ub3RlX3VzZSk6IEhhbmRsZSByZXR1cm4gcmVnaXN0ZXIgVVNFcy4KCVJFRyBjYXNlOiBIYW5kbGUgbXVsdGktaGFyZC1yZWdpc3RlciBoYXJkIHJlZ3MuCgpGcmkgTWFyICAzIDA3OjM4OjM0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtZC50ZXhpOiBEb2N1bWVudCB1c2Ugb2YgJyonIGluIGluc24gcGF0dGVybiBuYW1lLgoKMjAwMC0wMy0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjYWxscy5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBvcGVyYXRvciBuZXcgbWF5IG5vdCBiZSBtYWxsb2MtbGlrZS4KCgkqIGdjc2UuYyAoZHVtcF9oYXNoX3RhYmxlKTogUmVhbGx5IGZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMDMtMDIgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBhdnIuYyAocHJpbnRfb3BlcmFuZCk6IFVzZSBwcmludF9vcGVyYW5kX2FkZHJlc3MgaW5zdGVhZCBvZgoJb3V0cHV0X2FkZHJfY29uc3QuCgkqIGF2ci9saWJnY2MuUzogQ2xlYW51cCBjb2RlLgoKMjAwMC0wMy0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2VtaXRfc2V0X2NvbnN0XzEpOiBBbHNvIHRyeSBjICsgc21hbGwgY29uc3RhbnQuCgoyMDAwLTAzLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChUWVBFX0FMSUdOX1VOSVQpOiBOZXcgbWFjcm8uCgoyMDAwLTAzLTAyICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGkzODYuYzogKGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kKTogUmVqZWN0IENPTlNUX0lOVC4KCjIwMDAtMDMtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY3BwbGliLmggKENQUF9QRURBTlRJQyk6IE9ubHkgdHJ1ZSBpZiBzeXN0ZW1faGVhZGVyX3AgaXMgbm90IHNldAoJZm9yIHRoZSBidWZmZXIuCgkoU0VUX0NQUF9QRURBTlRJQyk6IE5ldyBtYWNyby4KCSogY3BwbGliLmMgKGRvX2luY2x1ZGUpOiBEb24ndCBib3RoZXIgY2hlY2tpbmcgc3lzdGVtX2hlYWRlcl9wLgoJKGRvX3dhcm5pbmcsIGRvX2lkZW50LCBkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogTGlrZXdpc2UuCgkqIGNwcGluaXQuYyAoY3BwX2hhbmRsZV9vcHRpb24pOiBVc2UgU0VUX0NQUF9QRURBTlRJQy4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBleHByX3N0YXR1cyk6IEFkZCB4X2FyZ19zcGFjZV9zb19mYXIuCgkoYXJnX3NwYWNlX3NvX2Zhcik6IE5ldyBtYWNyby4KCSogZXhwci5jIChpbml0X2V4cHIpOiBJbml0aWFsaXplIGl0LgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IFJlc2V0IGl0LgoJKGNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZSwgZXhwYW5kX2NhbGwpOiBVc2UgaXQuCgkoZXhwYW5kX2NhbGwsIHN0b3JlX29uZV9hcmcpOiBJbmNyZW1lbnQgaXQuCgpUaHUgTWFyICAyIDE3OjI3OjEzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50KTogU3RyaXAgb2ZmIGEgQ09OVkVSVF9FWFBSIHRvCglhIFVOSU9OX1RZUEUuCgoyMDAwLTAzLTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChjcHBfcmVhZF9maWxlKTogTmV3IGZ1bmN0aW9uLgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2V4cGFuc2lvbik6IE1ha2Ugc3VyZSB0byByZXNldCBsYXN0X3Rva2VuCgl0byBOT1JNIHdoZW4gd2UgaGl0IGEgc3RyaW5nLiAgSGFuZGxlIHRyYWlsaW5nIHdoaXRlc3BhY2UKCXByb3Blcmx5IHdoZW4gdGhlIGV4cGFuc2lvbiBpcyBlbXB0eS4KCShjcmVhdGVfZGVmaW5pdGlvbik6IERpc2FibGUgbGluZSBjb21tYW5kcyB3aGlsZSBwYXJzaW5nIHRoZQoJZGlyZWN0aXZlIGxpbmUuCgkoZHVtcF9kZWZpbml0aW9uKTogSWYgcGZpbGUtPmxpbmVubyA9PSAwLCBvdXRwdXQgYSBsaW5lCgljb21tYW5kIGFoZWFkIG9mIHRoZSBkdW1wLCBhbmQgYWRkIGEgdHJhaWxpbmcgbmV3bGluZS4KCgkqIGNwcGluaXQuYyAoYXBwZW5kX2luY2x1ZGVfY2hhaW4pOiBBZGQgZmlmdGggYXJndW1lbnQsIHdoaWNoCglpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgc3lzdGVtIGhlYWRlcnMgYXJlIEMrKyBhd2FyZS4KCShpbml0aWFsaXplX3N0YW5kYXJkX2luY2x1ZGVzKTogTmV3IGZ1bmN0aW9uLAoJYnJva2VuIG91dCBvZiByZWFkX2FuZF9wcmVzY2FuLiAgUGFzcyAnY3h4X2F3YXJlJyB2YWx1ZSBmcm9tCgl0aGUgaW5jbHVkZV9kZWZhdWx0c19hcnJheSBvbiB0byBhcHBlbmRfaW5jbHVkZV9jaGFpbi4KCShkdW1wX3NwZWNpYWxfdG9fYnVmZmVyKTogQ29uc3QtaWZ5IGNoYXIgYXJyYXkuCgkoYnVpbHRpbl9hcnJheSk6IERvbid0IGR1bXAgX19CQVNFX0ZJTEVfXy4KCShjcHBfc3RhcnRfcmVhZCk6IFVzZSBjcHBfcmVhZF9maWxlLiAgUmVvcmRlciBjb2RlIGZvcgoJY2xhcml0eS4gIERvbid0IG91dHB1dCBsaW5lIGNvbW1hbmRzIGhlcmUgZm9yIC1ELy1BLy1VCglzd2l0Y2hlcy4gIERvbid0IGNhbGwgZGVwc19vdXRwdXQgZm9yIGZpbGVzIGluY2x1ZGVkIHdpdGgKCS1pbmNsdWRlIG9yIC1pbWFjcm9zLgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IERvbid0IHBheSBhbnkgYXR0ZW50aW9uIHRvIHRoZSBzZWNvbmQKCWFyZ3VtZW50LgoJKGNwcF9leHBhbmRfdG9fYnVmZmVyKTogRGlzYWJsZSBsaW5lIGNvbW1hbmRzIHdoaWxlIHNjYW5uaW5nLgoJKG91dHB1dF9saW5lX2NvbW1hbmQpOiBXb3JrIGluIHRoZSBmaWxlIGJ1ZmZlci4KCSogY3BwbGliLmg6IFJlbW92ZSBub19yZWNvcmRfZmlsZSBmbGFnIGZyb20gc3RydWN0IGNwcF9yZWFkZXIuCglGaXggZm9ybWF0dGluZyBvZiBjb21tZW50cy4gIFByb3RvdHlwZSBjcHBfcmVhZF9maWxlLgoKVGh1IE1hciAgMiAxMzoyOTo0NiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogTWFrZSBzaXpldHlwZV9lbmRsaW5rCglyZWZlcmVuY2UgdGhlIGxhbmd1YWdlLWVxdWl2YWxlbnQgb2Ygc2l6ZXR5cGUuCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFRyZWF0IHNpemV0eXBlIGxpa2UgaXRzIGxhbmd1YWdlIGVxdWl2YWxlbnQuCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9iaW5vcCwgc2l6ZV9kaWZmb3ApOiBQdXQgYmFjayBjaGVja3MuCgkqIGdjc2UuYyAoZHVtcF9oYXNoX3RhYmxlKTogRml4IG1pbm9yIGVycm9yIGluIGxhc3QgY2hhbmdlLgoJKiBzdG9yLWxheW91dC5jIChzZXRfc2l6ZXR5cGUpOiBTZXQgVFlQRV9ET01BSU4gb2Ygc2l6ZXR5cGUuCglDbGVhciBUWVBFX3tORVhULE1BSU59X1ZBUklBTlQgYW5kIFRZUEVfe1BPSU5URVIsUkVGRVJFTkNFfV90byBvZgoJYWxsIHNpemV0eXBlcy4KClRodSBNYXIgIDIgMTI6NDg6NDUgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKSAgRG8gbm90IGF0dGVtcHQgdG8gY29tYmluZSBzdGFjayBhZGp1c3RtZW50cwoJd2l0aCBpbmhpYml0X2RlZmVyX3BvcCBzZXQuCgoyMDAwLTAzLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBBbGxvdyBmcm9udC1lbmRzIHRvIGV4cGxpY2l0bHkgc2V0Cgl0aGUgREVDTF9TSVpFIGZvciBhIEZJRUxEX0RFQ0wuCgoyMDAwLTAzLTAxICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay50cGw6IHJlbW92ZSB1bnVzZWQgc3ltbGlua3MKCSogZml4aW5jL1JFQURNRTogR0NDIE1haW50YWluZXIgaW5mbwoJKiBmaXhpbmMvaW5jbGhhY2suc2g6IHJlZ2VuCgkqIGZpeGluYy9maXhpbmNsLnNoOiByZWdlbgoKMjAwMC0wMy0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2V4cGFuc2lvbik6IFRyaW0gdHJhaWxpbmcgd2hpdGUgc3BhY2UKCWZyb20gbWFjcm8gZGVmaW5pdGlvbnMsIGJ1dCBkb24ndCBnbyBwYXN0IHRoZSBsYXN0IGluc2VydGlvbgoJcG9pbnQuCgpXZWQgTWFyICAxIDEyOjE0OjMxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtdWxxaTMpOiBOZXcgcGF0dGVybi4KCjIwMDAtMDItMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChDUFBfQVNTRVJUSU9OLCBDUFBfU1RSSU5HSVpFLCBDUFBfVE9LUEFTVEUpOiBOZXcKCXRva2VuIHR5cGVzLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIHBhcnNpbmdfaWZfZGlyZWN0aXZlIGFuZAoJcGFyc2luZ19kZWZpbmVfZGlyZWN0aXZlIGZsYWdzLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbW92ZSBvdXRwdXRfY29uZGl0aW9uYWxzIGZsYWcuCgkoY2hlY2tfbWFjcm9fbmFtZSk6IERlbGV0ZSBwcm90b3R5cGUuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBtYWNyb2RlZik6IERlbGV0ZS4KCShzdHJ1Y3QgcmVmbGlzdCk6IFNlcGFyYXRlIGZyb20gc3RydWN0IGRlZmluaXRpb24uCgkoc3RydWN0IGRlZmluaXRpb24pOiBSZW1vdmUgdW51c2VkIGZpZWxkcy4gIEFkZCBjb2x1bW4gbnVtYmVyLgoJKGNyZWF0ZV9kZWZpbml0aW9uKTogUmV0dXJucyBhIERFRklOSVRJT04gKi4gIFRha2VzIGEKCWNwcF9yZWFkZXIgKiBhbmQgYW4gaW50LgoKCSogY3BwaGFzaC5jIChTS0lQX1dISVRFX1NQQUNFKTogRGVsZXRlLgoJKFBFRUtDKTogQ29weSBkZWZuIGZyb20gY3BwbGliLmMuCgkocmVzdF9leHRlbnNpb24sIFJFU1RfRVhURU5TSU9OX0xFTkdUSCk6IERlbGV0ZS4KCShzdHJ1Y3QgYXJnKTogTmV3LgoJKHN0cnVjdCBhcmdsaXN0KTogU2ltcGxpZnkuCgkoY29sbGVjdF9leHBhbnNpb24pOiBSZXdyaXRlLiAgR2V0IHRva2VucyBieSBjYWxsaW5nCgljcHBfZ2V0X3Rva2VuLiAgQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuCgkoY29sbGVjdF9mb3JtYWxfcGFyYW1ldGVycyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZgoJY3JlYXRlX2RlZmluaXRpb24gYW5kIHJld29ya2VkIHRvIHVzZSBnZXRfZGlyZWN0aXZlX3Rva2VuLgoJKGNyZWF0ZV9kZWZpbml0aW9uKTogQWxsIHJlYWwgd29yayBpcyBub3cgaW4gY29sbGVjdF9leHBhbnNpb24KCWFuZCBjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzLiAgZG9fZGVmaW5lIGhhbmRsZXMgZmluZGluZyB0aGUKCW1hY3JvIG5hbWUuICBSZXR1cm4gYSBERUZJTklUSU9OLCBub3QgYSBNQUNST0RFRi4KCShtYWNyb2V4cGFuZCk6IFJlcGxhY2UgYmNvcHkgd2l0aCBtZW1jcHkgdGhyb3VnaG91dC4gIFJlcGxhY2UKCWNoYXJhY3Rlci1hdC1hLXRpbWUgY29weSBsb29wIHdpdGggbWVtY3B5IGFuZCBwb2ludGVyIGluY3JlbWVudHMuCgkoY29tcGFyZS1kZWZzKTogZDEtPmFyZ25hbWVzIC8gZDItPmFyZ25hbWVzIG1pZ2h0IGJlIG51bGwuCgoJKiBjcHBsaWIuYyAoY29weV9yZXN0X29mX2xpbmUpOiBEZWxldGUgZnVuY3Rpb24uCgkoc2tpcF9yZXN0X29mX2xpbmUpOiBEbyBhbGwgdGhlIHdvcmsgb3Vyc2VsdmVzLgoJKHNraXBfc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlX3N0cmluZyk6IFVzZSBza2lwX3N0cmluZy4KCShnZXRfbWFjcm9fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tYWNyb19uYW1lKTogRGVsZXRlLgoJKGNvcHlfY29tbWVudCk6IFVzZSBDUFBfUkVTRVJWRSBhbmQgQ1BQX1BVVENfUS4KCShjcHBfc2tpcF9oc3BhY2UpOiBVc2UgQ1BQX0JVTVBfTElORS4KCShoYW5kbGVfZGlyZWN0aXZlKTogSUNFIGlmIHdlJ3JlIGNhbGxlZCBvbiBhIG1hY3JvIGJ1ZmZlci4KCShkb19kZWZpbmUpOiBEZXRlcm1pbmUgbWFjcm8gbmFtZSBhbmQgdHlwZSAoZnVubGlrZS9vYmpsaWtlKQoJaGVyZS4gIEV4cHVuZ2UgYWxsIHVzZXMgb2YgTUFDUk9ERUYuCgkoY3BwX3B1c2hfYnVmZmVyKTogU2V0IGxpbmVfYmFzZSB0byBOVUxMLgoJKGRvX3VuZGVmLCByZWFkX2xpbmVfbnVtYmVyKTogRG9uJ3Qgd29ycnkgYWJvdXQgZ2V0dGluZyBhIFBPUCB0b2tlbi4KCShldmFsX2lmX2V4cHJlc3Npb24pOiBTZXQvcmVzZXQgcGFyc2luZ19pZl9kaXJlY3RpdmUgYXJvdW5kCgljcHBfcGFyc2VfZXhwci4gRG9uJ3QgY2xlYXIgb25seV9zZWVuX3doaXRlLgoJKHNraXBfaWZfZ3JvdXApOiBSZW1vdmUgb3V0cHV0X2NvbmRpdGlvbmFscyBsb2dpYy4gIFVzZQoJc2tpcF9yZXN0X29mX2xpbmUuCgkoY3BwX2dldF90b2tlbik6IFJldHVybiBBU1NFUlRJT04sIFNUUklOR0laRSwgYW5kIFRPS1BBU1RFCgl0b2tlbnMgdW5kZXIgYXBwcm9wcmlhdGUgY29uZGl0aW9ucy4KCShjcHBfdW5hc3NlcnQpOiBDYWxsIGRvX3VuYXNzZXJ0IG5vdCBkb19hc3NlcnQuICBPb3BzLgoKCSogY3BwZXhwLmMgKHBhcnNlX2RlZmluZWQpOiBOZXcgZnVuY3Rpb24sIGJyZWFrIG91dCBvZgoJY3BwX2xleC4KCShjcHBfbGV4KTogV2Ugbm93IGdldCBDUFBfQVNTRVJUSU9OIHRva2VucyBhbmQgY2FuIGNoZWNrIHRoZW0KCW91cnNlbHZlcywgd2l0aCBjcHBfZGVmaW5lZC4KCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbiwgcHJpbnRfaGVscCk6IERlbGV0ZSAtaWZvdXRwdXQuCgoJKiBnY2MuZGcvMjAwMDAyMDktMi5jOiBUdXJuIG9mZiAtcGVkYW50aWMtZXJyb3JzLgoJKiBnY2MuZGcvc3RycGFzdGUtMi5jOiBOZXcuCgoyMDAwLTAyLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZm9sZC1jb25zdC5jIChzaXplX2Jpbm9wKTogRG9uJ3QgYXNlcnQgaW5wdXRzIGFyZSB0aGUgc2FtZSBhbmQKCWhhdmUgVFlQRV9JU19TSVpFVFlQRSBzZXQuCgkoc2l6ZV9kaWZmb3ApOiBMaWtld2lzZS4KCjIwMDAtMDItMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmZvdXQuYyAob3V0cHV0X2Jsb2NrKTogT3V0cHV0IGFic3RyYWN0IGJsb2NrcyBldmVuIGlmIHRoZXkKCWRvbid0IGhhdmUgVFJFRV9BU01fV1JJVFRFTiBzZXQuCgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbCk6IENoZWNrIGZvciBudWxsIFJFRy4KCjIwMDAtMDMtMDEgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogYy1kZWNsLmMgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCk6IE1vdmUgdG8gdG9wbGV2LmMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBhZGQgY3VycmVudF9mdW5jdGlvbl9kZWNsIGFzIGEgZ2djCglyb290IGhlcmUuCgkqIGRieG91dC5jIChkYnhvdXRfc3ltYm9sKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGludC4KCShkYnhvdXRfc3ltYm9sX2xvY2F0aW9uLCBkYnhvdXRfc3ltcyk6IExpa2V3aXNlLgoJKGRieG91dF9ibG9jayk6IERvbid0IGVtaXQgTEJSQUMvUkJSQUMgcGFpcnMgZm9yIGJsb2NrcyB3aXRob3V0CglhbnkgbG9jYWxzLiBVc2UgY3VycmVudF9mdW5jdGlvbl9mdW5jX2JlZ2luX2xhYmVsIGlmIHNldC4KCSogZGJ4b3V0LmggKGRieG91dF9zeW1ib2wsIGRieG91dF9zeW1zKTogQ2hhbmdlIHJldHVybiB0eXBlLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwuCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogUmVzZXQgaXQuCgkqIHRvcGxldi5jIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpOiBEZWZpbmUgaXQgaGVyZS4KCShjdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwpOiBOZXcgdmFyaWFibGUuCgkobWFpbik6IEFkZCBib3RoIGFzIGdnYyByb290cy4KCSogdHJlZS5oIChjdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwpOiBEZWNsYXJlLgoKVHVlIEZlYiAyOSAxNDowNzowNCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NzZS5jOiBDbGVhbnVwcyB0aHJvdWdob3V0OiBtb3N0bHkgd2hpdGUtc3BhY2UsIGJ1dCBhbHNvCglzb21lIG1pbm9yIHJlYXJyYW5nZW1lbnQgb2YgY29kZS4KClR1ZSBGZWIgMjkgMTA6NDU6NTkgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGwpOiBEbyBub3QgYWJvcnQgaWYgRlVOQ1RJT05fQVJHCglyZXR1cm5zIGEgUEFSQUxMRUwuICBVc2UgZW1pdF9ncm91cF9sb2FkIGFuZCB1c2VfZ3JvdXBfcmVncwoJYXMgbmVlZGVkLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogU2ltaWxhcmx5LgoKCSogcGEvdC1wYTogVXNlIHF1YWRsaWIuYyBpbnN0ZWFkIG9mIHF1YWRsaWIuYXNtLgoJKiBwYS9xdWFkbGliLmFzbTogUmVtb3ZlLgoJKiBwYS9xdWFkbGliLmM6IE5ldyBmaWxlLgoKCSogY29uZmlndXJlLmluIChocHV4MTAsIGhwdXgxMSwgUEEzMiBtb2RlKTogVXNlIGkxMjggZmxvYXQgZm9ybWF0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTAyLTI5ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBjb25maWcvYXJtL2Nvbml4LWVsZi5oOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChhcm0qLSotY29uaXgqKTogTmV3IGNvbmZpZ3VyYXRpb24uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDItMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9ibG9ja19kaWUpOiBPdXRwdXQgYWJzdHJhY3QgYmxvY2tzIGV2ZW4gaWYgdGhleQoJZG9uJ3QgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCk1vbiBGZWIgMjggMjE6MDc6NTkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIEVsaW1pbmF0ZSBERUNMX0ZJRUxEX1NJWkUuCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0X2luX2NsYXNzX25hbWVzLCBidWlsdF9pbl9uYW1lcyk6IE5ldyB2YXJpYWJsZXMuCgkqIGMtZGVjbC5jIChmaW5pc2hfc3RydWN0KTogU2V0IHNwZWNpZmllZCBzaXplIGluIERFQ0xfU0laRS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogR2V0IGZpZWxkIHNpemUgZnJvbQoJREVDTF9TSVpFLCBub3QgREVDTF9GSUVMRF9TSVpFLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBSZW1vdmUgY29kZSB0aGF0IHByaW50cyBleHRyYSBibGFuawoJbGluZXMgaW4gc29tZSBjYXNlcy4KCVByb3Blcmx5IGhhbmRsZSBpbmxpbmUgYW5kIGJ1aWx0aW4gZnVuY3Rpb24gY2FzZXMuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogR2V0IHNwZWNpZmllZCBzaXplIGZyb20gREVDX1NJWkUuCgkqIHRyZWUuaCAoYnVpbHRfaW5fY2xhc3NfbmFtZWQsIGJ1aWx0X2luX25hbWVzKTogTmV3IGRlY2xhcmF0aW9ucy4KCSh1bmlvbiB0cmVlX2RlY2wpOiBSZW5hbWUgaW50ZXJuYWwgdW5pb25zIHRvIHUxIGFuZCB1MiBhbmQgY2hhbmdlCglzb21lIG9mIHRoZWlyIGNvbXBvbmVudHMuCglBZGQgbmV3IGZpZWxkIGJ1aWx0X2luX2NsYXNzLgoJKERFQ0xfQUxJR04sIERFQ0xfSU5DT01JTkdfUlRMLCBERUNMX1NBVkVEX0lOU05TLCBERUNMX0ZSQU1FX1NJWkUpOgoJUmVmbGVjdCBhYm92ZSBjaGFuZ2VzLgoJKERFQ0xfRlVOQ1RJT05fQ09ERSwgREVDTF9CVUlMVF9JTl9DTEFTUyk6IExpa2V3aXNlLgoJKERFQ0xfU0VUX0ZVTkNUSU9OX0NPREUsIERFQ0xfRklFTERfU0laRSk6IERlbGV0ZWQuCgkqIG9iamMvb2JqYy1hY3QuYyAob2JqY19jb3B5X2xpc3QpOiBVc2UgREVDTF9TSVpFLCBub3QgREVDTF9GSUVMRF9TSVpFLgoJKGVuY29kZV9maWVsZF9kZWNsKTogTGlrZXdpc2U7IGFsc28gcmVtb3ZlIG9ic29sZXRlIHRlc3QgZm9yIGJpdGZpZWxkLgoKMjAwMC0wMi0yOCAgRG1pdHJpIE1ha2Fyb3YgIDxkaW1Ad2luZHJpdmVyLmNvbT4KCgkqIGV4dGVuZC50ZXhpOiBEb2N1bWVudCBBUk0ncyBzdXBwb3J0IGZvciBsb25nL3Nob3J0IGNhbGxzLgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IEFSTSdzIC1tbG9uZy1jYWxscyBjb21tYW5kIGxpbmUgc3dpdGNoLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9pc19sb25nY2FsbF9wKTogQWRkIHByb3RvdHlwZS4KCShhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlKTogQWRkIHByb3RvdHlwZS4KCShhcm1fc2V0X2RlZmF1bHRfdHlwZV9hdHRyaWJ1dGUpOiBBZGQgcHJvdG90eXBlLgoJKGFybV9zdHJpcF9uYW1lX2VuY29kaW5nKTogQWRkIHByb3RvdHlwZS4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2N1bXVsYXRpdmVfYXJncyk6IHJlcGxhY2UKCWluaXRpYWxpc2F0aW9uIG9nICdsb25nX2NhbGxzJyBmaWVsZCB3aXRoIGluaXRpYWxpc2F0aW9uIG9mCgknY2FsbF9jb29raWUnIGZpZWxkLgoJKGVudW0gYXJtX3ByYWdtYV9lbnVtKTogTmV3IGVudW0uCgkoYXJtX3ByYWdtYV9sb25nX2NhbGxzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShhcm1fcHJvY2Vzc19wcmFnbWEpOiBBbHNvIHByb2Nlc3MgIiNwcmFnbWEgbG9uZ19jYWxsc19vZmYiLgoJKGFybV92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogQWNjZXB0IHNob3J0X2NhbGwgYXR0cmlidXRlLgoJKGFybV9jb21wX3R5cGVfYXR0cmlidXRlcyk6IENoZWNrIGxvbmcvc2hvcnQgY2FsbCBhdHRyaWJ1dGVzLgoJKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpOiAgTmV3IGZ1bmN0aW9uOiAgRW5jb2RlIGxvbmdfY2FsbAoJb3Igc2hvcnRfY2FsbCBhdHRyaWJ1dGUgaW4gZnVuY3Rpb24gbmFtZS4KCShhcm1fc2V0X2RlZmF1bHRfdHlwZV9hdHRyaWJ1dGVzKTogTmV3IGZ1bmN0aW9uOiBBc3NpZ24KCWRlZmF1bHQgYXR0cmlidXRlcyB0byBuZXdseSBkZWZpbmVkIHR5cGUuCgkoY3VycmVudF9maWxlX2Z1bmN0aW9uX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmCgl0aGUgc3ltYm9sIGlzIGEgZnVuY3Rpb24gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBjb21waWxlZC4KCShhcm1faXNfbG9uZ2NhbGxfcCk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYgdGhlCglpbmRpY2F0ZWQgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB2aWEgYSBsb25nIGNhbGwuCgkoYXJtX2dldF9zdHJpcF9sZW5ndGgpOiBOZXcgZnVuY3Rpb24uICBSZXR1cm5zIG51bWJlciBvZgoJcHJlZml4IGNoYXJhY3RlcnMgdG8gYmUgc3RyaXBwZWQgZnJvbSBhIGZ1bmN0aW9uJ3MgbmFtZS4KCShhcm1fc3RyaXBfbmFtZV9lbmNvZGluZyk6IE5ldyBmdW5jdGlvbi4gIFN0cmlwIHByZWZpeCBjaGFyYWN0ZXJzCglmcm9tIGEgZnVuY3Rpb24ncyBuYW1lLgoKCSogY29uZmlnL2FybS9hcm0uaCAoQ1VNVUxBVElWRV9BUkdTKTogUmVwbGFjZSAnbG9uZ19jYWxsJyBmaWVsZAoJd2l0aCAnY2FsbF9jb29raWUnLgoJKFNIT1JUX0NBTExfRkFHX0NIQVIpOiBEZWZpbmUuCgkoTE9OR19DQUxMX0ZBR19DSEFSKTogRGVmaW5lLgoJKEVOQ09ERURfU0hPUlRfQ0FMTF9BVFRSX1ApOiBEZWZpbmUuCgkoRU5DT0RFRF9MT05HX0NBTExfQVRUUl9QKTogRGVmaW5lLgoJKEFSTV9OQU1FX0VOQ09ESU5HX0xFTkdUSFMpOiBEZWZpbmUuCgkoU1RSSVBfTkFNRV9FTkNPRElORyk6IERlZmluZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogRGVmaW5lLCBhbmQgdXNlIHRvIHN0cmlwIG5hbWUgZW5jb2RpbmcuCgkoQVJNX0VOQ09ERV9DQUxMX1RZUEUpOiBEZWZpbmUuCgkoRU5DT0RFX1NFQ1RJT04pOiBJbnZva2UgQVJNX0VOQ09ERV9DQUxMX1RZUEUuCgkoQVJNX0RFQ0xBUkVfRlVOQ1RJT05fU0laRSk6IERlZmluZS4KCShTRVRfREVGQVVMVF9UWVBFX0FUVFJJQlVURVMpOiBEZWZpbmUuCgoJKiBjb25maWcvYXJtL2FybS5tZCAoY2FsbCk6IENhbGwgYXJtX2lzX2xvbmdjYWxsX3AgdG8gZGVjaWRlCglpZiBhIGxvbmcgY2FsbCBpcyBuZWVkZWQuCgkoY2FsbF92YWx1ZSk6IERpdHRvLgoJKGNhbGxfc3ltYm9sKTogRGl0dG8uCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogQWRkIGludm9jYXRpb24gb2YKCUFSTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUuCgoJKiBjb25maWcvYXJtL3BlLmggKEFSTV9QRV9GTEFHX0NIQVIpOiBEZWZpbmUuCgkoU1VCVEFSR0VUX05BTUVfRU5DT0RJTkdfTEVOR1RIUyk6IERlZmluZS4KCShBUk1fU1RSSVBfTkFNRV9FTkNPRElORyk6IFVuZGVmaW5lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBVbmRlZmluZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogVXNlIGFybV9zdHJpcF9uYW1lX2VuY29kaW5nLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBEaXR0by4KCShBU01fT1VUUFVUX0NPTU1PTik6IERpdHRvLgoJKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogRGl0dG8uCgoJKiBjb25maWcvYXJtL3BlLmMgKGFybV9kbGxleHBvcnRfbmFtZV9wKTogQ2hlY2sgZm9yCglBUk1fUEVfRkxBR19DSEFSLgoJKGFybV9kbGxpbXBvcnRfbmFtZV9wKTogRGl0dG8uCgkoYXJtX21hcmtfZGxsZXhwb3J0KTogVXNlIEFSTV9QRV9GTEFHX0NIQVIuCgkoYXJtX21hcmtfZGxsaW1wb3J0KTogRGl0dG8uCgpNb24gRmViIDI4IDIyOjExOjEyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKERXQVJGX0xJTkVfTUlOX0lOU1RSX0xFTkdUSCk6IERlZmluZS4KCjIwMDAtMDItMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB4Y29mZm91dC5jICh4Y29mZm91dF9iZWdpbl9mdW5jdGlvbik6IEZpeCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDItMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRtLnRleGk6IERvY3VtZW50IG5ldyB0YXJnZXQgc3dpdGNoLCBOT19CVUlMVElOX1dDSEFSX1RZUEUuCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IERlZmluZSBfX1dDSEFSX1RZUEVfXyBvbmx5IGlmCglOT19CVUlMVElOX1dDSEFSX1RZUEUgaXMgbm90IGRlZmluZWQuCgkoQ1BQX1dDSEFSX1RZUEUpOiBEZWxldGUuCgkqIGNjY3AuYyAobWFpbik6IERvbid0IGNoYW5nZSB3Y2hhcl90eXBlIGlmIGNwbHVzcGx1cy4KCShzcGVjaWFsX3N5bWJvbCwgaW5pdGlhbGl6ZV9idWlsdGlucyk6IEhvbm9yIE5PX0JVSUxUSU5fV0NIQVJfVFlQRS4KCjIwMDAtMDItMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS13aW5jZS1wZS5oIChTSVpFX1RZUEUpOiBEZWZpbmUgdG8gInVuc2lnbmVkIGxvbmciLgoKTW9uIEZlYiAyOCAxNDoyMToxNSAyMDAwICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9wYS9zb20uaCAoTUFLRV9ERUNMX09ORV9PTkxZKTogRGVmaW5lLgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBEZWZpbmUuCgpNb24gRmViIDI4IDEzOjA3OjE5IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogRG8gbm90IGVtaXQgVVNFLgoJKiBydGwuaCAoc3R1cGlkX2xpZmVfYW5hbHlzaXMpOiBSZW1vdmUuCgpNb24gRmViIDI4IDA3OjAzOjI3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmdW5jdGlvbi5jIChudW1iZXJfYmxvY2tzKTogUmVzZXQgbmV4dF9ibG9ja19pbmRleCBiYXNlZCBvbgoJd2hhdCBkZWJ1Z2dpbmcgZm9ybWF0IGlzIHVzZWQsIG5vdCB3aGF0IGlzIGRlZmluZWQuCgoJKiBsY20uYzogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQuCgkocmVnX2RpZXMsIHJlZ19iZWNvbWVzX2xpdmUpOiBQcm9wZXJseSBoYW5kbGUgbXVsdGlwbGUgaGFyZCByZWdzLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBY2NvdW50IGZvciB0aW1lIGluCglvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZy4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgY2FsbCBkZWxldGVfYmFycmllcl9zdWNjZXNzb3JzCglpZiBvbmx5IG1hcmtpbmcgbGFiZWxzLgoKTW9uIEZlYiAyOCAxMjo1Mzo1NyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBBdHRlbXB0IHRvIGNvbWJpbmUgc3RhY2sgYWRqdXN0bWVudHMgd2l0aAoJcGVuZGluZyBzdGFjayBhZGp1c3RtZW50cy4KCk1vbiBGZWIgMjggMTE6MzQ6NDMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbG9vcC5jIChyZWdfaW5fYmFzaWNfYmxvY2tfcCk6IERvbid0IGFib3J0IHdoZW4gZmFsbGluZyB0aHJvdWdoCgl0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KCjIwMDAtMDItMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBSZW1vdmUgbm90ZXMgZm9yIGVtcHR5CglibG9ja3MuCgkqIGZpbmFsLmMgKG5leHRfYmxvY2tfaW5kZXgpOiBSZW1vdmUuCgkobWF4X2Jsb2NrX2RlcHRoKTogTGlrZXdpc2UuCgkocGVuZGluZ19ibG9ja3MpOiBMaWtld2lzZS4KCShpbml0X2ZpbmFsKTogRG9uJ3QgaW5pdGlhbGl6ZSB0aGVtLgoJKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRG9uJ3Qgc2V0IG5leHRfYmxvY2tfaW5kZXguICBTZXQgdXAKCUJMT0NLX05VTUJFUi4KCShmaW5hbF9zY2FuX2luc24pOiBVc2UgQkxPQ0tfTlVNQkVSLCBub3QgbmV4dF9ibG9ja19pbmRleC4KCSogZnVuY3Rpb24uaCAobnVtYmVyX2Jsb2Nrcyk6IE5ldyBmdW5jdGlvbi4KCSogZnVuY3Rpb24uYyAoZ2V0X2Jsb2NrX3ZlY3Rvcik6IE5ldyBmdW5jdGlvbi4KCShpZGVudGlmeV9ibG9ja3MpOiBVc2UgaXQuCgkocmVvcmRlcl9ibG9ja3MpOiBTZXQgTk9URV9CTE9DSy4KCShudW1iZXJfYmxvY2tzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmRlZiAoQkxPQ0spOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgVFJFRV9BU01fV1JJVFRFTiBmbGFnLgoJKiB0cmVlLmggKEJMT0NLX05VTUJFUik6IE5ldyBtYWNyby4KCSh0cmVlX2Jsb2NrKTogQWRkIGJsb2NrX251bSBmaWVsZC4KCSogZGJ4b3V0LmMgKG5leHRfYmxvY2tfbnVtYmVyKTogUmVtb3ZlLgoJKGRieG91dF9pbml0KTogRG9uJ3Qgc2V0IGl0LgoJKGRieG91dF9ibG9jayk6IE9ubHkgb3V0cHV0IGJsb2NrcyB0aGF0IGhhdmUgVFJFRV9BU01fV1JJVFRFTgoJc2V0LiAgVXNlIEJMT0NLX05VTUJFUiwgcmF0aGVyIHRoYW4gbmV4dF9ibG9ja19udW0sIHRvIGRldGVybWluZQoJYmxvY2sgbnVtYmVycy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBbHdheXMgY2FsbAoJZmluZF9sb29wX3RyZWVfYmxvY2tzLiAgRml4IGluZGVudGF0aW9uLgoJKiBkd2FyZjJvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoZ2VuX2xleGljYWxfYmxvY2tfZGllKTogVXNlIEJMT0NLX05VTUJFUiwgbm90IG5leHRfYmxvY2tfbnVtYmVyLAoJdG8gZGV0ZXJtaW5lIGJsb2NrIG51bWJlcnMuCgkoZ2VuX2lubGluZWRfc3Vicm91dGluZV9kaWUpOiBMaWtld2lzZS4KCShnZW5fYmxvY2tfZGllKTogT25seSBvdXRwdXQgYmxvY2tzIHRoYXQgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCShkZWNsc19mb3Jfc2NvcGUpOiBEb24ndCBpbmNyZW1lbnQgbmV4dF9ibG9ja19udW1iZXIuCgkqIGR3YXJmb3V0LmMgKG5leHRfYmxvY2tfbnVtYmVyKTogUmVtb3ZlLgoJKG91dHB1dF9sZXhpY2FsX2Jsb2NrX2RpZSk6IFVzZSBCTE9DS19OVU1CRVIsIG5vdCBuZXh0X2Jsb2NrX251bWJlciwKCXRvIGRldGVybWluZSBibG9jayBudW1iZXJzLgoJKG91dHB1dF9pbmxpbmVkX3N1YnJvdXRpbmVfZGllKTogTGlrZXdpc2UuCgkob3V0cHV0X2Jsb2NrKTogT25seSBvdXRwdXQgYmxvY2tzIHRoYXQgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCShvdXRwdXRfZGVjbHNfZm9yX3Njb3BlKTogRG9uJ3QgaW5jcmVtZW50IG5leHRfYmxvY2tfbnVtYmVyLgoJKiBzZGJvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoc2Rib3V0X2Jsb2NrKTogVXNlIEJMT0NLX05VTUJFUi4KCShzZGJvdXRfYmVnaW5fYmxvY2spOiBTaW1wbGlmeS4KCSogeGNvZmZvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoeGNvZmZvdXRfYmxvY2spOiBVc2UgQkxPQ0tfTlVNQkVSLCBub3QgbmV4dF9ibG9ja19udW1iZXIuCgkoeGNvZmZvdXRfYmVnaW5fYmxvY2spOiBEb24ndCBzZXQgbmV4dF9ibG9ja19udW1iZXIuCgkoeGNvZmZvdXRfYmVnaW5fZnVuY3Rpb24pOiBMaWtld2lzZS4gVXNlIEJMT0NLX05VTUJFUiwgbm90CgluZXh0X2Jsb2NrX251bWJlci4KClN1biBGZWIgMjcgMTY6NDA6MzMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGNfc3RybGVuKTogVXNlIHNpemVfZGlmZm9wIGFuZCByZXR1cm4gc3NpemV0eXBlIHZhbHVlLgoJKGV4cGFuZF9idWlsdGluX3N0cmNweSk6IFBhc3MgY29ycmVjdCB0eXBlIHRvIHNpemVfYmlub3AuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogTGlrZXdpc2UuCglDbGVhbiB1cCBjb25kaXRpb25hbCBzdHJ1Y3R1cmUuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGNhbGwgc2V0X3NpemV0eXBlIHR3aWNlLgoJKGNvbXBsZXRlX2FycmF5X3R5cGUpOiBEb24ndCB1c2Ugc2l6ZV9iaW5vcCBmb3IgTUFYSU5ERVguCgkqIGMtdHlwZWNrLmMgKGNfc2l6ZW9mKTogVXNlIHNpemVfb25lX25vZGUgYW5kIFRZUEVfU0laRV9VTklULgoJKGNfc2l6ZW9mX25vd2FybiwgY19zaXplX2luX2J5dGVzKTogTGlrZXdpc2UuCgkoY19hbGlnbm9mKTogVXNlIHNpemVfb25lX25vZGUuCgkoYnVpbGRfdW5hcnlfb3ApOiBQYXNzIGFyZyBvZiBwcm9wZXIgdHlwZSB0byBzaXplX2Jpbm9wLgoJKHJlYWxseV9zdGFydF9pbmNyZW1lbnRhbF9pbml0LCBwdXNoX2luaXRfbGV2ZWwpOiBVc2Ugc2l6ZXR5cGUgZm9yCgljb25zdHJ1Y3RvcnssX2JpdCxfdW5maWxsZWR9X2luZGV4LgoJKHBvcF9pbml0X2xhYmVsLCBvdXRwdXRfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCgkob3V0cHV0X3BlbmRpbmdfaW5pdF9lbGVtZW50cywgcHJvY2Vzc19pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCSogY2FsbHMuYyAoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogRmllbGQgVkFSIGlzIHNzaXpldHlwZS4KCSogZXhwci5jIChzdG9yZV9leHByKTogVXNlIHNpemVfaW50LgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogVXNlIHByb3BlciB0eXBlcyBmb3Igc2l6ZV9iaW5vcCBhcmdzLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UsIGV4cGFuZF9leHByLCBjYXNlIEFSUkFZX1JFRik6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCk6IExpa2V3aXNlLgoJKHN0cmluZ19jb250YW50KTogUmV0dXJuIG9iamVjdCBvZiBzaXpldHlwZS4KCSogZXhwci5oIChTVUJfUEFSTV9TSVpFKTogQ2FsbCBzaXplX2RpZmZvcCBhbmQgcGFzcyBwcm9wZXIgdHlwZXMuCgkoQVJHU19TSVpFX1JUWCk6IENhbGwgQVJHU19TSVpFX1RSRUUuCgkoQVJHU19TSVpFX1RSRUUpOiBQYXNzIHByb3BlciB0eXBlcyB0byBzaXplX2Jpbm9wLgoJKiBmb2xkLWNvbnN0LmMgKGludF9jb25zdF9iaW5vcCk6IFJlZmluZSB3aGVuIHNpemVfaW50IGlzIGNhbGxlZC4KCShmb2xkX2NvbnZlcnQpOiBMaWtld2lzZS4KCShzaXplX2ludF93aWRlKTogUmV3b3JrIHRvIHRha2UgS0lORCBhcyBhcmcsIG9ubHkgdGFrZSBsb3cgb3JkZXIKCWJpdHMsIGhhbmRsZSBuZXcgc2l6ZXR5cGVfdGFiIGRhdGF0eXBlLCBhbmQgY2hhaW4gZW50cmllcyBpbgoJc2l6ZV90YWJsZS4KCShzaXplX2ludF90eXBlX3dpZGUpOiBOZXcgZnVuY3Rpb24uCgkoc2l6ZV9iaW5vcCk6IFZhbGlkYXRlIHR5cGVzIG9mIGFyZ3VtZW50cy4KCShzc2l6ZV9iaW5vcCk6IERlbGV0ZWQuCgkoc2l6ZV9kaWZmb3ApOiBOZXcgZnVuY3Rpb24uCgkoZXh0cmFjdF9tdWxkaXYpOiBPbmx5IGZvbGQgZGl2aXNpb24gaW50byBtdWx0aXBsaWNhdGlvbiBmb3Igc2l6ZXR5cGVzLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVc2Ugc2l6ZV9kaWZmb3AgYW5kIG1ha2Ugc3VyZQoJVkFSIGZpZWxkIGlzIG9mIHNzaXpldHlwZTsgYWxzbyBwYXNzIHByb3BlciB0eXBlIHRvIHNpemVfYmlub3AuCgkobG9jYXRlX2FuZF9wYWRfcGFybSwgcGFkX3RvX2FyZ19hbGlnbm1lbnQpOiBMaWtld2lzZS4KCShyb3VuZF9kb3duKTogRGVsZXRlZCBmcm9tIGhlcmUuCgkqIHN0b3JlLWxheW91dC5jIChzaXpldHlwZV90YWIpOiBOb3cgYW4gYXJyYXkuCgkoc2l6ZXR5cGVfc2V0LCBlYXJseV9yb290X2xpc3QpOiBOZXcgdmFyaWFibGVzLgoJKHZhcmlhYmxlX3NpemUpOiBVc2Ugc2l6ZV9vbmVfbm9kZS4KCShyb3VuZF91cCk6IFBhc3MgcHJvcGVyIHR5cGUgdG8gc2l6ZV9iaW5vcC4KCShyb3VuZF9kb3duKTogTW92ZWQgdG8gaGVyZSBhbmQgY29ycmVjdGVkIGFzIGFib3ZlLgoJKGxheW91dF9yZWNvcmQpOiBQYXNzIHByb3BlciBhcmcgdHlwZXMgdG8gc2l6ZV9iaW5vcC4KCShsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJSWYgc2l6ZXR5cGVfc2V0IGlzIHplcm8sIHJlY29yZCB0aGUgdHlwZSBqdXN0IGxhaWQgb3V0LgoJKG1ha2VfdW5zaWduZWRfdHlwZSk6IERvbid0IGNhbGwgc2V0X3NpemV0eXBlOwoJKG1ha2Vfc2lnbmVkX3R5cGUpOiBMaWtld2lzZTsgYWxzbywgY2FsbCBmaXh1cF9zaWduZWRfdHlwZS4KCShpbml0aWFsaXplX3NpemV0eXBlcyk6IE5ldyBmdW5jdGlvbi4KCShzZXRfc2l6ZXR5cGUpOiBNYWtlIGNvcHkgb2YgdHlwZXMsIHNldCBUWVBFX0lTX1NJWkVUWVBFLCBhbmQKCXNldCBuYW1lIG9mIGJpdHNpemV0eXBlIHRvICJiaXRfc2l6ZV90eXBlIi4KCUZpeCB1cCB0eXBlIG9mIHNpemVzIG9mIGFsbCB0eXBlcyBtYWRlIGJlZm9yZSBjYWxsLgoJKiB0bS50ZXhpIChST1VORF9UWVBFX1NJWkVfVU5JVCk6IE5ldyBtYWNyby4KCSogdHJlZS5jIChmaXhfc2l6ZXR5cGUpOiBEZWxldGVkLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogQ2FsbCBpbml0aWFsaXplX3NpemV0eXBlcy4KCShidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogRG9uJ3QgY2FsbCBmaXhfc2l6ZXR5cGUuCgkqIHRyZWUuaCAoVFlQRV9JU19TSVpFVFlQRSk6IE5ldyBtYWNyby4KCShpbml0aWFsaXplX3NpemV0eXBlKTogTmV3IGRlY2xhcmF0aW9uLgoJKGVudW0gc2l6ZV90eXBlX2tpbmQpOiBOZXcgdHlwZS4KCShzdHJ1Y3Qgc2l6ZXR5cGVfdGFiKTogRGVsZXRlZC4KCShzaXpldHlwZV90YWIpOiBOb3cgYXJyYXk7IGFkanVzdCBzaXpldHlwZSBtYWNyb3MuCgkoc2l6ZV9kaWZmb3AsIHNpemVfaW50X3R5cGVfd2lkZSk6IE5ldyBmdW5jdGlvbnMuCgkoc2l6ZV9pbnRfd2lkZSk6IENoYW5nZSBudW1iZXIgb2YgYXJncyBhbmQgdHlwZTsgYWNjZXNzIG1hY3JvcyBjaGFuZ2VkLgoJKHNzaXplX2ludCwgc2JpdHNpemVfaW50KTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL2k5NjAvaTk2MC5oIChST1VORF9UWVBFX1NJWkUpOiBVc2Ugc2l6ZV9pbnQuCgkoUk9VTkRfVFlQRV9TSVpFX1VOSVQpOiBOZXcgbWFjcm8uCgoyMDAwLTAyLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWxleC5jIChwdXRiYWNrX2J1ZmZlcik6IE1ha2UgJ2J1ZmZlcicgYW4gdW5zaWduZWQgY2hhciAqLgoKU3VuIEZlYiAyNyAwNzo0NDoxNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2Nvdi1pby5oIChfX2ZldGNoX2xvbmcsIF9fc3RvcmVfbG9uZywgX19yZWFkX2xvbmcsIF9fd3JpdGVfbG9uZyk6CglNYXJrIGFzIHBvc3NpYmx5IHVudXNlZC4KCgkqIGNzZS5jIChjc2VfaW5zbik6IERlbGV0ZSBkZWFkIGNvZGUgaW52b2x2aW5nIHRhYmxlanVtcC4KCVBhc3MgQ09ERV9MQUJFTCwgbm90IExBQkVMX1JFRiB0byBnZW5fanVtcCBhbmQgcmVzZXQgSU5TTl9DT0RFLgoKCSogTWFrZWZpbGUuaW4gKGxpYmNwcC5hKTogU3RhcnQgYnkgZGVsZXRpbmcgaXQuCgoyMDAwLTAyLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNwcGxpYi5oIChlbnVtIGZpbGVfY2hhbmdlX2NvZGUpOiBBZGRlZCByZW5hbWVfZmlsZS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBJZiBhIGZpbGVuYW1lIGlzIGdpdmVuLCBzZXQgZmlsZV9jaGFuZ2UgdG8KCXJlbmFtZV9maWxlLgoJKG91dHB1dF9saW5lX2NvbW1hbmQpOiBJZiBmaWxlX2NoYW5nZSBpcyByZW5hbWVfZmlsZSwgYWx3YXlzCglvdXRwdXQgYSAjIGRpcmVjdGl2ZSB3aXRoIHRoZSBmaWxlIG5hbWUuCgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hKTogQWNjZXB0ICNwcmFnbWEgd2l0aG91dCBjb25zZWN1dGl2ZSB0b2tlbi4KCjIwMDAtMDItMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9kZWNsX2Zvcl9pbmxpbmluZyk6IFByZXNlcnZlIFRSRUVfQUREUkVTU0FCTEUKCXdoZW4gY29weWluZyBhIFBBUk1fREVDTCBvciBSRVNVTFRfREVDTC4KCjIwMDAtMDItMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeC1oZWFkZXIuYyAocmVjb2duaXplZF9mdW5jdGlvbik6IEFsc28gZml4IHByb3RvdHlwZXMgZm9yCglmdW5jdGlvbnMgdGFraW5nICJ2b2lkIi4KCjIwMDAtMDItMjYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZDEuYyAoZG9fb3V0cHV0X3JlbG9hZCk6IENoZWNrIHJlZ19yZWxvYWRlZF92YWxpZCBiZWZvcmUKCWxvb2tpbmcgYXQgcmVnX3JlbG9hZGVkX2NvbnRlbnRzLgoKMjAwMC0wMi0yNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW4gKFNUTVBfRklYSU5DKTogTmV3IHRvZ2dsZS4KCShMSUJHQ0MyX0RFUFMpOiBEZWxldGUgYWxsIHJlZmVyZW5jZXMuCgkoc3RtcC1oZWFkZXJzKTogRGVsZXRlIHRhcmdldC4gIEFsbCByZWZlcmVuY2VzIGVpdGhlciBkZWxldGVkCglvciBjaGFuZ2VkIHRvIHN0bXAtaW50LWhlYWRlcnMuCgkoYWxsLmNyb3NzKTogRG9uJ3QgZGVwZW5kIG9uIHN0bXAtaGVhZGVycyBvciBTVE1QX0ZJWFBST1RPLgoJKExJQkNQUF9PQkpTKTogVGFrZSBvdXQgY3BwYWxsb2Muby4KCShjcHBhbGxvYy5vKTogRGVsZXRlIHRhcmdldC4KCShzdG1wLWludC1oZHJzKTogRGVwZW5kIG9uICQoU1RNUF9GSVhJTkMpLgoJKGdlbi1wcm90b3MsIGZpeC1oZWFkZXIpOiBMaW5rIHdpdGggbGliaWJlcnR5LmEuCgkqIGJ1aWxkLW1ha2U6IERvbid0IGNoYW5nZSBGSVhJTkNMVURFUy4gIE92ZXJyaWRlIFNUTVBfRklYSU5DCgl0byBlbXB0eS4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIHJlZnMgdG8gc3RyZXJyb3IuCgkqIGFjY29uZmlnLmg6IFRha2Ugb3V0IE5FRURfREVDTEFSQVRJT05fU1RSRVJST1IuCgkqIHN5c3RlbS5oOiBUYWtlIG91dCBzdHJlcnJvciBzdGFuemEuCgoJKiBjcHBlcnJvci5jIChteV9zdHJlcnJvcik6IERlbGV0ZSBmdW5jdGlvbi4KCShjcHBfZXJyb3JfZnJvbV9lcnJubywgY3BwX25vdGljZV9mcm9tX2Vycm5vKTogVXNlIHhzdHJlcnJvci4KCSogY3BwbWFpbi5jIChtYWluKTogQ2FsbCB4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUgZmlyc3QgdGhpbmcuCgkqIGNwcGFsbG9jLmM6IERlbGV0ZSBmaWxlLgoJKiBnZW4tcHJvdG9zLmM6IERvbid0IHByb3ZpZGUgeHJlYWxsb2MuCgoJKiBmaXhpbmMvZml4aW5jbC5jLCBmaXhpbmMvZml4bGliLmMsIGZpeGluYy9wcm9jb3Blbi5jOiBVc2UKCXhzdHJlcnJvciB0aHJvdWdob3V0LgoKMjAwMC0wMi0yNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmICh1bmRlZmluZV9udWxsKTogdGhlIGJ5cGFzcyBwYXR0ZXJuIG5lZWRzIHRvCgltYXRjaCBmb3IgRE9TIGhlYWRlcnMsIHRvby4KCSogZml4aW5jL2luY2xoYWNrLnNoLGZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDAtMDItMjYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9lbGZvcy5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogRG9uJ3QgZGVmaW5lLiAgVGhlIGRlZmF1bHQKCWlzIHJpZ2h0IGZvciBtb3N0IEVMRiB0YXJnZXRzLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoQVNNX09VVFBVVF9MQUJFTFJFRik6IERvbid0IGRlZmluZS4KCUxldCB0aGUgZGVmYXVsdCBmaWxlIHVzZSAlVSBwcm9wZXJseS4KCSogY29uZmlnL3NoL2VsZi5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogRG9uJ3QgZGVmaW5lLiAgVXNlIHRoZQoJZGVmYXVsdC4KCgkqIGNvbmZpZy9mcC1iaXQuYyAocGFja19kKTogUHJvcGVybHkgaGFuZGxlIHJvdW5kaW5nIG9mIGRlbm9ybWFsCgludW1iZXJzLgoKU2F0IEZlYiAyNiAwOTozOToxNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogQ29ycmVjdCBzcGVsbGluZyBlcnJvci4KCShkZWNvZGVfZF9vcHRpb24sIGRlY29kZV9mX29wdGlvbiwgbWFpbik6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHByaW50X3RpbWUpOiBBdm9pZCBTSUdGUEUgd2hlbiBhbGxfdGltZSBpcyB6ZXJvLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBVc2UgLnNldCBhdAoJdG8gdGVsbCBhc3NlbWJsZXIgaXQgaXMgcGVybWl0dGVkIHRvIGV4cGFuZCBsYXJnZSBjb25zdGFudHMuCgoyMDAwLTAyLTI1ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIHByb3RvaXplLmM6IChBVVhfSU5GT19TVUZGSVgpOiBOZXcgbWFjcm8uCgkoYXV4X2luZm9fc3VmZml4KTogVXNlLgoJKFNBVkVfU1VGRklYKTogTmV3IG1hY3JvLgoJKHNhdmVfc3VmZml4KTogVXNlLgoJKG11bmdlX2NvbXBpbGVfcGFybXMpOiBGaXggdHlwbyBpbiBOVUwuIERKR1BQIHN1cHBvcnRzIC9kZXYvbnVsbC4KCShnZW5fYXV4X2luZm9fZmlsZSk6IFVzZSBhdXhfaW5mb19zdWZmaXggaW5zdGVhZCBvZiAiLlgiLgoJKGVkaXRfZmlsZSk6IEhhbmRsZSA4LjMgcmVzdHJpY3Rpb24gZm9yIERPUy9ESkdQUCBmaWxlbmFtZXMuCgoJKiBpbnZva2UudGV4aSAoUnVubmluZyBQcm90b2l6ZSk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKMjAwMC0wMi0yNSBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBpMzg2L2RqZ3BwLmggKENQUF9QUkVERUZJTkVTKTogUmVtb3ZlIFVuaXggZGVmaW5lcy4KCjIwMDAtMDItMjUgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIHJ0bGFuYWwuYyAoZmluZF9sYXN0X3ZhbHVlKTogQWxsb3cgTlVMTF9SVFggZm9yIHZhbGlkX3RvLgoKMjAwMC0wMi0yNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJlYnVpbGQganVtcCBsYWJlbHMgaWYKCWNvbWJpbmVfaW5zdHJ1Y3Rpb25zIGhhcyBjcmVhdGVkIGEgbmV3IGRpcmVjdCBqdW1wLgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogQWRkIG5ld19kaXJlY3RfanVtcF9wIGFyZ3VtZW50LiAgU2V0IGl0Cgl3aGVuIGFwcHJvcHJpYXRlLgoJKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogQ2FsbCB0cnlfY29tYmluZSB3aXRoIG5ldyBhcmd1bWVudC4KCVJldHVybiBub24tbnVsbCB2YWx1ZSB3aGVuIG5ldyBkaXJlY3QganVtcCBpbnN0cnVjdGlvbiBpcyBjcmVhdGVkLgoJKiBydGwuaDogY29tYmluZV9pbnN0cnVjdGlvbnMgcmV0dXJucyBhbiBpbnQuCgpGcmkgRmViIDI1IDE5OjQ5OjA4IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNzZS5jIChjc2VfaW5zbik6IFJlcGxhY2UgdGhlIFBBVFRFUk4gb2YgdGhlIGluc24gd2l0aCBhbiBuZXcKCWp1bXAgd2hlbiBjaGFuZ2luZyBhIGNvbXB1dGVkIGp1bXAgaW50byBhIGp1bXAgdG8gYSBrbm93bgoJdGFyZ2V0LgoKRnJpIEZlYiAyNSAxOToyMjo0NCAyMDAwICBHcmFoYW0gU3RvdHQgPGdyYWhhbXNAcmNwLmNvLnVrPgoKCSogcmVzb3VyY2UuYyAobWFya19yZWZlcmVuY2VkX3Jlc291cmNlcyk6IENoYW5nZWQgdXNlIFNFVF9ERVNUICguLi4pCgl0byBYRVhQICguLi4sIDApIG9uIFJUTCBub2RlcyB3aGljaCBhcmUgbm90IFNFVCBvciBDTE9CQkVSLgoKCSogaTM4Ni5tZCAoZGVmaW5lX2V4cGFuZCAiY2xyc3Ryc2kiKTogRml4IHR5cG8uCgpGcmkgRmViIDI1IDE4OjQ5OjM5IDIwMDAgICJLLiBSaWNoYXJkIFBpeGxleSIgPHJpY2hAbWljcm91bml0eS5jb20+CgoJKiBydGwudGV4aTogRml4IHR5cG8uCgpGcmkgRmViIDI1IDIwOjAyOjM1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmMgKGNhbGNfbGl2ZV9yZWdzKTogTXVsdGlwbHkgdmFsdWUgYXNzaWduZWQgdG8gKkNPVU5UX1BUUiBieQoJVU5JVFNfUEVSX1dPUkQuICBDaGFuZ2UgY2FsbGVyIGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0LgoJKHJvdW5kZWRfZnJhbWVfc2l6ZSk6IFRha2UgaW50byBhY2NvdW50IHRoYXQgYXJndW1lbnQgcHVzaGVkIGhhcwoJY2hhbmdlZC4gIEZpeCBUQVJHRVRfQUxJR05fRE9VQkxFIHByb2JsZW0uCgoyMDAwLTAyLTI1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9ibG9jayk6IEV4cGxhaW4gdGhlIHJlYWwgcmVhc29uCgl3ZSBkZWxldGUgUkVHX1NBVkVfTk9URXMgb24gdGhlIGZpcnN0IGluc24gb2YgYSBibG9jay4KCURvbid0IGRlbGV0ZSBSRUdfU0FWRV9OT1RFUyBmb3IgTk9URV9JTlNOX1NFVEpNUC4KCjIwMDAtMDItMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnB1dC5oIChwdXNoX3NyY2xvYyk6IE5ldyBmdW5jdGlvbi4KCShwb3Bfc3JjbG9jKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChwdXNoX3NyY2xvYyk6IERlZmluZSBpdC4KCShwb3Bfc3JjbG9jKTogTGlrZXdpc2UuCgoyMDAwLTAyLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChsaWZlX2FuYWx5c2lzKTogV2hlbiBjb2xsZWN0aW5nIHJlZyBpbmZvLCBjbGVhcgoJcmVnc19ldmVyX2xpdmUuCgpUaHUgRmViIDI0IDIyOjA2OjUyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCglGaXggYnVnIGV4cG9zZWQgYnkgcmVsb2FkLmMgbm8gbG9uZ2VyIHJvdW5kaW5nIHRoZSBmcmFtZQoJc2l6ZSB0byBCSUdHRVNUX0FMSUdOTUVOVDoKCSogc2guYyAocm91bmRlZF9mcmFtZV9zaXplKTogTmV3IGZ1bmN0aW9uLgoJKHNoX2V4cGFuZF9wcm9sb2d1ZSwgc2hfZXhwYW5kX2VwaWxvZ3VlKTogVXNlIGl0LgoJKGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTGlrZXdpc2UuCgpUaHUgRmViIDI0IDIwOjA0OjExIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCglGaXggYnJlYWthZ2UgZnJvbSA2dGggRmViIHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMgY2hhbmdlOgoJKiBzaC1wcm90b3MuaCAoc2hfbmVlZF9lcGlsb2d1ZSk6IERlY2xhcmUuCgkqIHNoLmMgKHNoX25lZWRfZXBpbG9ndWVfa25vd24pOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHNoX25lZWRfZXBpbG9ndWUpOiBOZXcgZnVuY3Rpb24uCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBDbGVhciBuZWVkX2VwaWxvZ3VlX2tub3duLgoJKiBzaC5tZCAocmV0dXJuKTogU3BsaXQgaW50byBleHBhbmRlciAvIGluc24gcGF0dGVybi4KCU1ha2UgdGhlIGV4cGFuZGVyIGNvbmRpdGlvbmFsIG9uICEgc2hfbmVlZF9lcGlsb2d1ZSAoKS4KCjIwMDAtMDItMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYWNobW9kZS5oIChnZXRfbW9kZV9hbGlnbm1lbnQpOiBEZWNsYXJlLgoJKEdFVF9NT0RFX0FMSUdOTUVOVCk6IENhbGwgaXQuCgkqIHN0b3ItbGF5b3V0LmMgKGdldF9tb2RlX2FsaWdubWVudCk6IE5ldyBmdW5jdGlvbi4gTWFrZQoJc3VyZSBhbGlnbm1lbnQgaXMgYWx3YXlzIHBvd2VyIG9mIDIuCgoyMDAwLTAyLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBpMzg2Lmg6IFJlbW92ZSB1c2VsZXNzIGRlZmluaXRpb24gb2YgIkkzODYiIGFuZCBtaXNsZWFkaW5nCgljb21tZW50IGFib3ZlIGl0LgoKMjAwMC0wMi0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJlZS5oIChUUkVFX1NFVF9QRVJNQU5FTlQpOiBOZXcgbWFjcm8uICBEb2N1bWVudCBjb25kaXRpb25zCgl1bmRlciB3aGljaCBUUkVFX1BFUk1BTkVOVCB3aWxsIGJlIHNldC4KCSogdHJlZS5jIChtYWtlX25vZGUsIGNvcHlfbm9kZSwgbWFrZV90cmVlX3ZlYywgdHJlZV9jb25zLAoJYnVpbGQxKTogVXNlIFRSRUVfU0VUX1BFUk1BTkVOVC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRG9uJ3QgcmVwb3J0IHZhbHVlIG9mCglUUkVFX1BFUk1BTkVOVCBpZiBnZ2NfcCBpcyB0cnVlLgoKCSogYy1jb21tb24uYyAoY19nZXRfYWxpYXNfc2V0KTogRG9uJ3QgdXNlIFRSRUVfUEVSTUFORU5UIHRvCglkZWNpZGUgd2hldGhlciB0byBnaXZlIGEgdHlwZSBhIG5ldyBhbGlhcyBzZXQuCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0KTogTmV2ZXIgY29weSB0aGUgc3RyaW5nLgoJKiB0cmVlLmMgKG1ha2Vfbm9kZSk6IFNldCBERUNMX0lOX1NZU1RFTV9IRUFERVIgaXJyZXNwZWN0aXZlCglvZiB2YWx1ZSBvZiAnb2JzdGFjaycuCgoKMjAwMC0wMi0yNCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X3Byb2Nlc3NfYWZ0ZXJfcmVsb2FkKTogU3BsaXQgYWxsIGluc25zLgoKMjAwMC0wMi0yMyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjcHBsaWIuaCAoZW51bSBjcHBfdG9rZW4pOiBBZGRlZCBDUFBfV0NIQVIgYW5kIENQUF9XU1RSSU5HLgoJKiBjcHBsaWIuYyAoY3BwX2dldF90b2tlbik6IFByb2R1Y2UgdGhlbS4KCSogY3BwZXhwLmMgKGNwcF9sZXgpOiBIYW5kbGUgdGhlbS4KCjIwMDAtMDItMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY29tcF90eXBlX2F0dHJpYnV0ZXMpOiBTaW1wbHkgYW5kCgljb21tZW50IHRlc3RzIG9uIHR5cGUgYXR0cmlidXRlcy4KCldlZCBGZWIgMjMgMTY6NDI6MjEgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZmluYWwuYyAoc2hvcnRlbl9icmFuY2hlcyk6IE1ha2UgdmFsdWUgcGFzc2VkIHRvIExPT1BfQUxJR04KCWNvbmZvcm0gdG8gZG9jdW1lbnRhdGlvbi4KCSogc2guaCAoTE9PUF9BTElHTik6IElmIGFsaWduaW5nIGxvb3BzLCBjYWxsIHNoX2xvb3BfYWxpZ24KCXRvIGNoZWNrIGZvciBzcGVjaWFsIGNhc2VzLgoJKiBzaC1wcm90b3MuaCAoc2hfbG9vcF9hbGlnbik6IERlY2xhcmUuCgkqIHNoLmMgKHNoX2xvb3BfYWxpZ24pOiBEZWZpbmUuCgoyMDAwLTAyLTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoR0FTX0FTTV9TUEVDKTogUGFzcyAtbWdwMzIvLW1ncDY0IHRvIGdhcy4KCShTSVpFX1RZUEUpOiBJcyAzMiBiaXRzIHdoZW4gdXNpbmcgLW1ncDMyLgoJKFBUUkRJRkZfVFlQRSk6IERpdHRvLgoKV2VkIEZlYiAyMyAwNzoyNjoyNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGlhZ25vc3RpYy5jIChpbml0X291dHB1dF9idWZmZXIpOiBIYW5kbGUgY2FzZSBvZiBudWxsIFBSRUZJWC4KCjIwMDAtMDItMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogSWYgSU5fVEFSR0VUX0xJQlMgaXMgZGVmaW5lZCwgbWFrZQoJQklHR0VTVF9GSUVMRF9BTElHTk1FTlQgYSBjb25zdGFudC4KCjIwMDAtMDItMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9saW5lX2luZm8pOiBQdXQgdGhlIG1hcmtlciBmb3IgdGhlIGVuZCBvZgoJdGhlIGxpbmUgbnVtYmVyIGluZm8gYXQgdGhlIGFjdHVhbCBlbmQuCgkoZ2VuX3N0cnVjdF9vcl91bmlvbl90eXBlX2RpZSk6IFVzZSBkZWNsX2Z1bmN0aW9uX2NvbnRleHQKCXRvIGNoZWNrIGZvciBsb2NhbCBjbGFzc2VzLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfdHlwZSk6IExpa2V3aXNlLgoKVHVlIEZlYiAyMiAwMTozODo1NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBIYW5kbGUgcGFzcy1ieS1yZWZlcmVuY2UKCWZvciBhcmd1bWVudHMgd2l0aCBhIG1vZGUsIGJ1dCBubyB0eXBlLgoJKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogU2ltaWxhcmx5LgoJKiB0LXBhIChMSUIyRlVOQ1NfRVhUUkEpOiBBZGQgcXVhZGxpYi5hc20uCgkqIHBhL2xvbmdfZG91YmxlLmg6IE5ldyBmaWxlLgoJKiBjb25maWd1cmUuaW4gKGhwdXgxMCwgaHB1eDExIGNvbmZpZ3VyYXRpb25zKTogaHB1eDEwIGFuZCBocHV4MTEKCWJvdGggaGF2ZSAxMjhiaXQgd2lkZSBsb25nIGRvdWJsZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDItMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlZmF1bHRzLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZmxvdy5jIChnZXRfY29tbW9uX2Rlc3QsIGNoYWluX3Jlb3JkZXJfYmxvY2tzLCBtYWtlX3Jlb3JkZXJfY2hhaW4sCglmaXh1cF9yZW9yZGVyX2NoYWluLCBza2lwX2luc25zX2JldHdlZW5fYmxvY2spOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkobGlmZV9hbmFseXNpcyk6IFdyYXAgdmFyaWFibGUgYGknIHdpdGggbWFjcm8gRUxJTUlOQUJMRV9SRUdTLgoKCSogaGFpZmEtc2NoZWQuYyAocmFua19mb3Jfc2NoZWR1bGUpOiBEb24ndCBjYXN0IGF3YXkgY29uc3QtbmVzcy4KCgkqIGludGVncmF0ZS5jIChjb21wYXJlX2Jsb2NrcywgZmluZF9ibG9jayk6IExpa2V3aXNlLgoKCSogcnRsLmMgKGZhdGFsX3dpdGhfZmlsZV9hbmRfbGluZSk6IEFkZCBBVFRSSUJVVEVfUFJJTlRGXzIuCgoJKiBydGwuaCAoc2V0X2ZpbGVfYW5kX2xpbmVfZm9yX3N0bXQpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogc3RtdC5jIChzdG10X3N0YXR1cywgc2V0X2ZpbGVfYW5kX2xpbmVfZm9yX3N0bXQsCglleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgpNb24gRmViIDIxIDE3OjA2OjI3IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogQWRkZWQgdGhlIHBvaW50ZXIgaGV1cmlzdGljIHRvCgl0aGUgY29sbGVjdGlvbiBvZiBzdGF0aWMgYnJhbmNoIHByZWRpY3RvcnMuCgoyMDAwLTAyLTIxICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX1NQRUMpOiBBZGQgLW1maXg3MDAuCgkqIGludm9rZS50ZXhpICgtbWZpeDcwMDApOiBEb2N1bWVudC4KCjIwMDAtMDItMjEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoaW5pdF9vdXRwdXRfYnVmZmVyKTogTWFrZSBpdCBwb3NzaWJsZSB0byBvdXRwdXQgYXQKCWxlYXN0IDMyIGNoYXJhY3RlcnMgaWYgd2UncmUgZ2l2ZW4gYSB0b28gbG9uZyBwcmVmaXguCgoyMDAwLTAyLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBDYWxsCglsYW5nX2V4cGFuZF9jb25zdGFudCB0bwlzaW1wbGlmeSB0aGUgY29uc3RhbnQuCgoyMDAwLTAyLTIwICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYoc3RkaW9fdmFfbGlzdCk6Cgl0eXBlZGVmIG5lZWRzIHRvIGJlIGRpc2FibGVkLgoJKiBmaXhpbmMvaW5jbGhhY2suc2g6IHJlZ2VuCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuCgoyMDAwLTAyLTIwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogRG9uJ3QgcHJpbnQgYWRkcmVzc2VzIHdoZW4KCWZsYWdfZHVtcF91bm51bWJlcmVkLgoKMjAwMC0wMi0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3BhcmMuYyAoc3BhcmNfb3V0cHV0X3NjcmF0Y2hfcmVnaXN0ZXJzKTogTWFyayBwYXJhbWV0ZXIgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShzcGFyY192YV9hcmcsIHNwYXJjX2ZsYXRfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLAoJc3BhcmNfZmxhdF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBDYXN0IHZhbHVlIHRvIHVuc2lnbmVkIGluCgljb21wYXJpc29uLgoJKHNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGNtcCcuCgoJKiBzcGFyYy5tZDogQWRkIGRlZmF1bHQgY2FzZSBpbiBzd2l0Y2guCgoyMDAwLTAyLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy10eXBlY2suYyAoYWRkX3BlbmRpbmdfaW5pdCk6IERvbid0IGFib3J0IGZvciBtdWx0aXBsZQoJZmllbGRzIGF0IHRoZSBzYW1lIG9mZnNldC4KCShwZW5kaW5nX2luaXRfbWVtYmVyKTogVGVzdCB0aGUgY29ycmVjdCBtZW1iZXIuCgoyMDAwLTAyLTE5ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogZXhjZXB0LmMgKHN0YXJ0X2R5bmFtaWNfaGFuZGxlcikgOiBVc2UgVFlQRV9NT0RFIChpbnRlZ2VyX3R5cGVfbm9kZSkKCWluc3RlYWQgb2YgU0ltb2RlLgoJKHN0YXJ0X2NhdGNoX2hhbmRsZXIpIDogU2FtZS4KCjIwMDAtMDItMTkgIEJyYWQgTHVjaWVyICAobHVjaWVyQG1hdGgucHVyZHVlLmVkdSkKCgkqIE1ha2VmaWxlLmluOiBIYXZlIGZsb3cubyBkZXBlbmQgb24gJChFWFBSX0gpCgpTYXQgRmViIDE5IDE4OjQzOjEzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiBTZXQgREVDTF9TSVpFX1VOSVQuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMsIGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkoZmluaXNoX2RlY2wpOiBSZW1vdmUgLVdsYXJnZXItdGhhbiBjb2RlIGZyb20gaGVyZS4KCSogZmxhZ3MuaCAoaWRfY2xhc2hfbGVuKTogTm93IGludC4KCShsYXJnZXJfdGhhbl9zaXplKTogTm93IEhPU1RfV0lERV9JTlQuCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9pbnRfd2lkZSk6IE5vIG1vcmUgSElHSCBwYXJtOyBOVU1CRVIgaXMgc2lnbmVkLgoJQ2xlYW4gdXAgY2hlY2tpbmcgdG8gc2VlIGlmIGluIHRhYmxlLgoJKG1ha2VfYml0X2ZpZWxkX3JlZik6IFJlbW92ZSBleHRyYSBwYXJtIHRvIGJpdHNpemVfaW50LgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3RyZWVfY2hpbGRyZW4pOiBNYXJrIERFQ0xfU0laRV9VTklULgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCBERUNMX1NJWkVfVU5JVCBhbmQgVFlQRV9TSVpFX1VOSVQuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBVc2UgREVDTF9TSVpFX1VOSVQgZm9yIHN0YWNrIGNoZWNraW5nIHNpemUKCWFuZCBmb3IgY29tcHV0aW5nIHNpemUgb2YgZGVjbC4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBTZXQgREVDTF9TSVpFX1VOSVQuCglNb3ZlIC1XbGFyZ2VyLXRoYW4gY29kZSB0byBoZXJlLgoJKGxheW91dF9yZWNvcmQpOiBSZW1vdmUgZXh0cmEgYXJnIHRvIGJpdHNpemVfaW50LgoJU2V0IFRZUEVfQklORk9fU0laRV9VTklULgoJKGxheW91dF91bmlvbik6IFJlbW92ZSBleHRyYSBhcmcgdG8gYml0c2l6ZV9pbnQuCglVc2UgcHJvcGVyIHR5cGUgZm9yIHNpemUgb2YgUVVBTF9VTklPTi4KCShsYXlvdXRfdHlwZSk6IFJlbW92ZSBleHRyYSBhcmcgdG8gYml0c2l6ZV9pbnQuCgkqIHRvcGxldi5jIChpZF9jbGFzaF9sZW4pOiBOb3cgaW50LgoJKGxhcmdlcl90aGFuX3NpemUpOiBOb3cgSE9TVF9XSURFX0lOVC4KCShkZWNvZGVfV19vcHRpb24pOiBDbGVhbiB1cCBpZC1jbGFzaCBhbmQgbGFyZ2VyLXRoYW4tIGNhc2VzLgoJKiB0cmVlLmMgKGdldF9pZGVudGlmaWVyLCBtYXliZV9nZXRfaWRlbnRpZmllcik6IFJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShleHByX2FsaWduLCBjYXNlIEZVTkNUSU9OX0RFQ0wpOiBERUNMX0FMSUdOIGlzIG5vdCBkZWZpbmVkLgoJKiB0cmVlLmggKEJJTkZPX1NJWkVfVU5JVCwgVFlQRV9CSU5GT19TSVpFX1VOSVQsIERFQ0xfU0laRV9VTklUKTogTmV3LgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBOZXcgZmllbGQgc2l6ZV91bml0LgoJKHNpemVfaW50X3dpZGUpOiBObyBISUdIIG9wZXJhbmQ7IE5VTUJFUiBpcyBub3cgc2lnbmVkLgoJKHNpemVfaW50XzIpOiBEZWxldGVkLgoJKHNpemVfaW50LCBiaXRzaXplX2ludCk6IERvbid0IHVzZSBpdCBhbmQgcmV3b3JrIGFyZ3MuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSwgb3V0cHV0X2NvbnN0cnVjdG9yKTogVXNlIERFQ0xfU0laRV9VTklULgoKRnJpIEZlYiAxOCAyMDowMTo1OCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS9xdWFkbGliLmFzbSAoX1VfUUZndCwgX1VfUWZnZSk6IEZpeCBmbGFncyBmb3IgX1VfUWZjbXAgY2FsbC4KCjIwMDAtMDItMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBBZGQgYW4gZXhwbGFuYXRpb24gb2Ygd2h5Cgl5b3UgbWlnaHQgd2FudCB0aGUgLVdmbG9hdC1lcXVhbCBmbGFnLgoKRnJpIEZlYiAxOCAyMDowODo1NyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYml0bWFwLmMgKGJpdG1hcF9vcGVyYXRpb24pOiBBdm9pZCB1c2luZyAtMSBmb3IgaW5kZXggc2luY2UgdW5zaWduZWQuCgkqIGNwcGluaXQuYyAobmV3X3BlbmRpbmdfZGVmaW5lKTogQWRkIGNhc3QgdG8gYXZvaWQgd2FybmluZy4KCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZW51bSByZW9yZGVyX3NraXBfdHlwZSk6IE5ldyB0eXBlLgoJKHNraXBfaW5zbnNfYmV0d2Vlbl9ibGNvayk6IE5ldyBpdC4KCVJld29yayB0byBhdm9pZCB3YXJuaW5nIGFib3V0IHBvc3NpYmx5IHVuZGVmaW5lZCB2YXJpYWJsZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogTWFrZSB0aGlzcGFybV9ib3VuZGFyeSB1bnNpZ25lZC4KCSogZ2VucmVjb2cuYyAod3JpdGVfc3dpdGNoKTogQ2FzdCBYV0lOVCByZXN1bHQgdG8gaW50LgoJKiBsY20uYzogTWFueSBzdGF0aWMgZmNucyBhbmQgdmFycyBub3cgI2lmZGVmIE9QVElNSVpFX01PREVfU1dJVENISU5HLgoJKiBtaXBzLXRmaWxlLmMgKGluaXRfZmlsZSk6IE1ha2UgdHdvIHZlcnNpb25zIG9mIEZEUiBpbml0aWFsaXplcjoKCW9uZSBmb3IgTUlQUyBhbmQgb25lIGZvciBBbHBoYS4KCShnZXRfdGFnLCBjb3B5X29iamVjdCk6IEFkZCBjYXN0cyB0byBhdm9pZCB3YXJuaW5ncy4KCSogb3B0YWJzLmMgKGluaXRfb25lX2xpYmZ1bmMpOiBDYXN0IE5BTUUgdG8gKGNoYXIgKikuCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBNYWtlIFRZUEUgZW51bSByZWxvYWRfdHlwZS4KCSogc2JpdG1hcC5jIChkdW1wX3NiaXRtYXApOiBKIGlzIHVuc2lnbmVkOyBkb24ndCB1c2UgIjFMIi4KCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogSW5pdGlhbGl6ZSBVTlJPTExfTlVNQkVSLgoJKiB2YXJhc20uYyAoY29tcGFyZV9jb25zdGFudF8xKTogQWRkIGNhc3QgdG8gYXZvaWQgd2FybmluZy4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2xpYmNhbGwpOiBDYXN0IEZVTkMKCXRvIChjaGFyICopLgoJKGFscGhhX2V4cGFuZF91bmFsaWduZWRfbG9hZCwgYWxwaGFfZXhwYW5kX3VuYWxpZ25lZF9zdG9yZSk6CglDYXN0IHN3aXRjaCBvcGVyYW5kIG9mIHNpemUgdG8gaW50LgoJKGFscGhhX2V4cGFuZF9lcGlsb2d1ZSk6IEFsd2F5cyBpbml0aWFsaXplIGZwX29mZnNldCBhbmQgc2FfcmVnLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBBZGQgYWJvcnQKCWluIHVuaGFuZGxlZCBjYXNlLgoKMjAwMC0wMi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKEFTTV9PVVRQVVRfQUxJR04pOiBEbyBub3QgZ2VuZXJhdGUKCWFueXRoaW5nIGZvciBhbiBhbGlnbm1lbnQgb2YgemVyby4KCgkqIGNvbmZpZy9hcm0vdGh1bWIuaCAoQVNNX09VVFBVVF9BTElHTik6IERvIG5vdCBnZW5lcmF0ZQoJYW55dGhpbmcgZm9yIGFuIGFsaWdubWVudCBvZiB6ZXJvLgoKMjAwMC0wMi0xOCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnY2MudGV4aSAoQnVnIFJlcG9ydGluZyk6IFJlZmVyIHRvIGJ1Z3MuaHRtbC4KCShCdWcgTGlzdHMpOiBMaWtld2lzZS4KCSogc3lzdGVtLmggKEdDQ0JVR1VSTCk6IE5ldyBwcmVwcm9jZXNzb3IgZGVmaW5lLgoJKiBydGwuYyAoZmFuY3lfYWJvcnQpOiBVc2UgaXQuCgkqIGdjYy5jIChtYWluKTogTGlrZXdpc2UuCgoyMDAwLTAyLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChJTlNOX1ZPTEFUSUxFLCBTRVRfSU5TTl9WT0xBVElMRSwgdWlkX3ZvbGF0aWxlKTogUmVtb3ZlLgoJKGxpZmVfYW5hbHlzaXNfMSk6IFN1YnN1bWUgaW50byAuLi4KCShsaWZlX2FuYWx5c2lzKTogLi4uIGhlcmUuICBGb3JjZSBQUk9QX1JFR19JTkZPIG9mZiBhZnRlciByZWxvYWQuCglVc2UgdXBkYXRlX2xpZmVfaW5mbyBmb3IgdGhlIHJlbGF4YXRpb24uCgkodXBkYXRlX2xpZmVfaW5mbyk6IFVwZGF0ZSBSRUdfQkFTSUNfQkxPQ0sgZm9yIHJlZ2lzdGVycyBsaXZlIG9uCgllbnRyeSBhbmQgcmVnc19saXZlX2F0X3NldGptcC4KCShzZXRfbm9vcF9wKTogU2ltcGxpZnkuCgkobm90aWNlX3N0YWNrX3BvaW50ZXJfbW9kaWZpY2F0aW9uXzEpOiBSZW5hbWVkIGZyb20gcy9fMS8vLgoJKHJlY29yZF92b2xhdGlsZV9pbnNucyk6IFNwbGl0IGludG8gLi4uCgkoZGVsZXRlX25vb3BfbW92ZXMpOiAuLi4gaGVyZSwKCShub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb24pOiAuLi4gaGVyZSwKCShpbnNuX2RlYWRfcCk6IC4uLiBhbmQgaGVyZS4KCShwcm9wYWdhdGVfYmxvY2spOiBEb24ndCBxdWVyeSBJTlNOX1ZPTEFUSUxFLgoJKG1hcmtfdXNlZF9yZWdzKTogTWluZCAhUFJPUF9SRUdfSU5GTy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIG1hcmtfY29uc3RhbnRfZnVuY3Rpb24gaGVyZSwKCW5vdCBpbiBsaWZlX2FuYWx5c2lzLgoKRnJpIEZlYiAxOCAwMToyOToyMiBFU1QgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogbG9vcC5jIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogTmV3IGZ1bmN0aW9uLAoJYnJva2VuIG91dCBvZiBnZXRfY29uZGl0aW9uLgoJKGdldF9jb25kaXRpb24pOiBVc2UgaXQuCgkqIGV4cHIuaCAoY2Fub25pY2FsaXplX2NvbmRpdGlvbik6IFByb3RvdHlwZSBpdC4KCgkqIHRyZWUuaCAodHJlZV9pbnRfY3N0X21zYik6IERlY2xhcmUuCgkqIHRyZWUuYyAodHJlZV9pbnRfY3N0X21zYik6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMDItMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG10LmMgKHNldF9maWxlX2FuZF9saW5lX2Zvcl9zdG10KTogRG9uJ3QgY3Jhc2ggaWYgY2Z1bi0+c3RtdAoJaXNuJ3Qgc2V0LgoKCSogaW52b2tlLnRleGkgKC1mbWVzc2FnZS1sZW5ndGg9bik6IERvY3VtZW50LgoKMjAwMC0wMi0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBiaXRtYXAuYyAoYml0bWFwX29wZXJhdGlvbik6IERvbid0IGxlYWsgYml0bWFwIGVsZW1lbnRzLgoKMjAwMC0wMi0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBQdXQgYSBsaW5lIG5vdGUKCWFmdGVyIHRoZSBwcm9sb2d1ZS4KCjIwMDAtMDItMTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3RodW1iLmM6IFJlcGxhY2UgaW5jbHVkZXMgb2Ygc3lzdGVtIGhlYWRlcnMgd2l0aAoJI2luY2x1ZGUgInN5c3RlbS5oIi4KCjIwMDAtMDItMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGFscGhhLWxpbnV4KiwgYWxwaGEtbmV0YnNkKSBbZXh0cmFfcGFydHNdOgoJQWRkIGNydGJlZ2luUy5vIGFuZCBjcnRlbmRTLm8uCgkqIGFscGhhL2VsZi5oIChTVEFSVEZJTEVfU1BFQyk6IFVzZSBjcnRiZWdpblMuby4KCShFTkRGSUxFX1NQRUMpOiBVc2UgY3J0ZW5kUy5vLgoJKiBhbHBoYS90LWNydGJlIChjcnRiZWdpblMubywgY3J0ZW5kUy5vKTogTmV3IHRhcmdldHMuCgoJKiBhbHBoYS9jcnRiZWdpbi5hc20gKF9fZG9fZnJhbWVfdGFrZWRvd24pOiBNZXJnZSBpbnRvIC4uLgoJKF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCk6IC4uLiBoZXJlLiAgQ2FsbCBfX2N4YV9maW5hbGl6ZSBpZgoJc2hhcmVkIGFuZCBwcmVzZW50LgoJKF9fZHNvX2hhbmRsZSk6IE5ldyB2YXJpYWJsZS4KCSogYWxwaGEvY3J0ZW5kLmFzbSAoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogUmVtb3ZlIHJ1bnRpbWUKCWJpYXMgdG8gX19DVE9SX0VORF9fLgoKMjAwMC0wMi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzLWNydFMsIGNydGJlZ2luUywgY3J0ZW5kUyk6IFByZWZpeCB1c2FnZSB3aXRoICQoVCkuCgpXZWQgRmViIDE2IDIxOjQwOjA0IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGxvbmdsb25nLmggKF9fY2x6X3RhYik6IERlY2xhcmUgYXMgc3RhdGljIHRvIG1hdGNoIGRlZmluaXRpb24uCgoyMDAwLTAyLTE2IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGkzODYveG0tZGpncHAuaCAoTElCU1REQ1hYKTogRGVsZXRlLiBNb3ZlZCB0byBjb25maWcvaTM4Ni9kamdwcC5oLgoJKFhSRUZfRklMRV9OQU1FKTogRGVmaW5lLgoKCSogaTM4Ni9kamdwcC5oIChEQVRBX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKElERU5UX0FTTV9PUCk6IERlZmluZS4KCShURVhUX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKENQUF9TUEVDKTogRGVmaW5lLgoJKENUT1JTX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKENUT1JfU0VDVElPTl9GVU5DVElPTik6IFVzZSBpdC4KCShEVE9SU19TRUNUSU9OX0FTTV9PUCk6IERlZmluZS4KCShEVE9SX1NFQ1RJT05fRlVOQ1RJT04pOiBVc2UgaXQuCgoyMDAwLTAyLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiByZWctc3RhY2suYyAoZW1pdF9zd2FwX2luc24pOiBEbyBub3QgcHV0IGEgbmV3IGluc24gYmVmb3JlIGEKCU5PVEVfQkFTSUNfQkxPQ0suCgoJKiBmbG93LmMgKGR1bXBfcmVnc2V0LCBkZWJ1Z19yZWdzZXQsIGR1bXBfYmIsIGRlYnVnX2JiLAoJZGVidWdfYmJfbik6IE5ldyBmdW5jdGlvbnMuCgkoZHVtcF9mbG93X2luZm8sIHByaW50X3J0bF93aXRoX2JiKTogVXNlIGR1bXBfcmVnc2V0LgoJKiBiYXNpYy1ibG9jay5oOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9ucy4KCldlZCBGZWIgMTYgMjE6MDc6NTMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIGF2ciB0YXJnZXQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGludm9rZS50ZXhpOiBBZGQgQVZSIGludm9jYXRpb24gZG9jcy4KCSogaW5zdGFsbC50ZXhpOiBBZGQgaW5mb3JtYXRpb24gYWJvdXQgQVZSLgoJKiBtZC50ZXhpOiBBZGQgQVZSIGNvbnN0cmFpbnQgbGV0dGVycyBkZXNjcmlwdGlvbi4KCSogZXh0ZW5kLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBmb3IgQVZSIHNwZWNpZmljIGF0dHJpYnV0ZXMuCgoyMDAwLTAyLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGZpeGluYy9maXhpbmMuc3ZyNDogV3JhcCBieXRlb3JkZXIuaCB3aXRoIGV4dGVybiAiQyIuCgoyMDAwLTAyLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAoZW1pdF9pbnNuKTogTW92ZSBSVEwgY2hlY2sgaW50byBtYWtlX2luc25fcmF3LgoJKG1ha2VfaW5zbl9yYXcpOiBNb3ZlIFJUTCBjaGVjayBoZXJlLgoKMjAwMC0wMi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmVyc2lvbi5jOiBJbmNsdWRlIGdhbnNpZGVjbC5oIGFuZCB2ZXJzaW9uLmguCgoJKiB2ZXJzaW9uLmg6IFdyYXAgZW50aXJlIGZpbGUgaW4gbWFjcm8gX19HQ0NfVkVSU0lPTl9IX18uCgoJKiBjb25maWd1cmUuaW4gKGdjY192ZXJzaW9uKTogV2hlbiBzZXR0aW5nLCBuYXJyb3cgc2VhcmNoIHRvCglsaW5lcyBjb250YWluaW5nIGB2ZXJzaW9uX3N0cmluZycuCgoJKiBNYWtlZmlsZS5pbiAobWFpbnZlcnNpb24pOiBMaWtld2lzZS4KCShHQ0NfSCk6IE5ldyB2YXJpYWJsZS4KCShnY2MuaCk6IERlbGV0ZSB0YXJnZXQuCgkoZ2NjLm8sIGdjY3NwZWMubywgY3Bwc3BlYy5vKTogRGVwZW5kIG9uICQoR0NDX0gpLCBub3QgZ2NjLmguCgkodmVyc2lvbi5vKTogRGVwZW5kIG9uIHZlcnNpb24uaC4KCShkYnhvdXQubyk6IERvbid0IGRlcGVuZCBvbiBnY2MuaC4KCldlZCBGZWIgMTYgMTU6MDQ6NDkgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoJCQkgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogbWQudGV4aSAoU2ltcGxlIENvbnN0cmFpbnRzKTogQWRkIGl0ZW0gYWJvdXQgd2hpdGVzcGFjZS4KCSogZ2Vub3V0cHV0LmMgKHN0cmlwX3doaXRlc3BhY2UpOiBOZXcuCgkoc2Nhbl9vcGVyYW5kcykgW01BVENIX09QRVJBTkQsIE1BVENIX1NDUkFUQ0hdOiBDYWxsCglzdHJpcF93aGl0ZXNwYWNlIGZvciBjb25zdHJhaW50cy4KCVRlc3QgcG9pbnRlciB1c2luZyBOVUxMLCBub3QgMC4KCjIwMDAtMDItMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY3BwbGliLmMgKGRvX2xpbmUpOiBQZWR3YXJuIGZvciAjbGluZSA+IDMyNzY3LgoKCSogYy1sZXguYyAocmVhZGVzY2FwZSk6IFdhcm4gYWJvdXQgJ1x4JywgYnV0IGRvIG5vdCByZWplY3QgaXQuCgoyMDAwLTAyLTE1ICBKb25hdGhhbiBMYXJtb3VyICA8amxhcm1vdXJAcmVkaGF0LmNvLnVrPgoKCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKTogQWRkIG5ldyBfX0dOVUNfUEFUQ0hMRVZFTF9fIGRlZmluZQoJdG8gZGVmYXVsdCBjcHAgc3BlYy4KCShkb19zcGVjXzEpOiBBZGQgc3VwcG9ydCBmb3IgJXYzIHNwZWMgdXNlZCBieSBfX0dOVUNfUEFUQ0hMRVZFTF9fLgoJKiBjcHAudGV4aTogRG9jdW1lbnQgX19HTlVDX1BBVENITEVWRUxfXy4KCSogY3BwLjE6IExpa2V3aXNlLgoKCSogb2JqYy9sYW5nLXNwZWNzLmg6IEFkZCBuZXcgX19HTlVDX1BBVENITEVWRUxfXyBkZWZpbmUgdG8KCWRlZmF1bHQgc3BlYy4KCjIwMDAtMDItMTUgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWd1cmUuaW46IEFkZCBzdXBwb3J0IGZvciBhdnIgdGFyZ2V0LgoKV2VkIEZlYiAxNiAwMzoyMTo0MyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5oIChPVkVSUklERV9PUFRJT05TKTogRG9uJ3Qgc2V0IHNoX2FkZHJfZGlmZl92ZWNfbW9kZS4KCShzaF9hZGRyX2RpZmZfdmVjX21vZGUpOiBEb24ndCBkZWNsYXJlLgoJKiBzaC5jIChzaF9hZGRyX2RpZmZfdmVjX21vZGUpOiBEZWxldGUuCgpXZWQgRmViIDE2IDAxOjI3OjUyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLm1kIChtdWxzaTNfaGlnaHBhcnQpOiBBZGQgUkVHX0VRVUFMIG5vdGUgdG8gbGFzdCBpbnNuLgoKV2VkIEZlYiAxNiAwMDo1ODowNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5tZCAodWRpdnNpM19pMSwgZGl2c2kzX2kxLCB1bXVsaGlzaTNfaSwgbXVsaGlzaTNfaSk6IE5hbWUuCgkoc211bHNpM19oaWdocGFydF9pKTogTmFtZS4KCSh1ZGl2c2kzKTogV3JhcCBlbWl0dGVkIGluc25zIGluIFJFR19MSUJDQUxMIC8gUkVHX1JFVFZBTCBub3Rlcy4KCShkaXZzaTMsIG11bGhpc2kzLCB1bXVsaGlzaTMsIG11bHNpZGkzLCB1bXVsc2lkaTMpOiBMaWtld2lzZS4KCShzbXVsc2kzX2hpZ2hwYXJ0LCB1bXVsc2kzX2hpZ2hwYXJ0KTogTGlrZXdpc2UuCgoJKG11bHNpZGkzX2ksIHVtdWxzaWRpM19pKTogTWFrZSBydGwgZGVzY3JpYmUgb3BlcmF0aW9uCgljb3JyZWN0bHkgaW5kZXBlbmRlbnQgb2YgZW5kaWFubmVzcy4KCShtdWxzaWRpMywgdW11bHNpZGkzKTogTm93IGRlZmluZV9pbnNuLiAgSGlkZSBkZXRhaWxzIHRoYXQKCWNvbmZ1c2UgdGhlIG9wdGltaXplcnMuCgkobXVsc2lkaTMrMSwgdW11bHNpZGkzKzEpOiBOZXcgZGVmaW5lX3NwbGl0LgoKVHVlIEZlYiAxNSAyMzoyMjoyNiAyMDAwICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZDogR3VhcmQgaW5zbiBzcGxpdHMgYWdhaW5zdCBpbGxlZ2FsIHJlZ2lzdGVycy4KCSogY29uZmlnL3NoL3NoLmg6IENvcnJlY3QgY29tbWVudCBhYm91dCBtYWNyb3MuCgpUdWUgRmViIDE1IDIyOjMwOjM2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCQkJICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGNtLm8pOiBEZXBlbmQgb24gaW5zbi1hdHRyLmguCgkqIGJhc2ljLWJsb2NrLmggKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogRGVjbGFyZS4KCSogbGNtLmMgKHRtX3AuaCwgaW5zbi1hdHRyLmgpOiAjaW5jbHVkZS4KCShzZWdpbmZvLCBiYl9pbmZvKTogTmV3IHN0cnVjdHMuCgkoYW50aWMsIHRyYW5zcCwgY29tcCwgZGVsZXRlLCBpbnNlcnQpIDogTmV3IGZpbGUtc2NvcGUgc3RhdGljIHZhcmlhYmxlcy4KCShuZXdfc2VnaW5mbywgYWRkX3NlZ2luZm8sIG1ha2VfcHJlZHNfb3BhcXVlLCByZWdfZGllcyk6IE5ldyBmdW5jdGlvbnMuCgkocmVnX2JlY29tZXNfbGl2ZSwgb3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBMaWtld2lzZS4KCSogdG0udGV4aTogQWRkIGRlc2NyaXB0aW9uIG9mIG1vZGUgc3dpdGNoaW5nIG1hY3Jvcy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIG9wdGltaXplX21vZGVfc3dpdGNoaW5nLgoKCSogc2gtcHJvdG9zLmggKHJlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGZsZGlfb2ssIGZwc2NyX3NldF9mcm9tX21lbSk6IE5ldyBwcm90b3R5cGVzLgoJKiBzaC5oIChPUFRJTUlaQVRJT05fT1BUSU9OKTogUmVtb3ZlIHNoX2ZsYWdfcmVtb3ZlX2RlYWRfYmVmb3JlX2NzZSBzZXQuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCwgU0VDT05EQVJZX0lOUFVUX1JFTE9BRF9DTEFTUyk6CglEaXNhYmxlIGZsZGkgZm9yIChUQVJHRVRfU0g0ICYmICEgVEFSR0VUX0ZNT1ZEKS4KCShzaF9mbGFnX3JlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoTlVNX01PREVTX0ZPUl9NT0RFX1NXSVRDSElORywgT1BUSU1JWkVfTU9ERV9TV0lUQ0hJTkcpOiBOZXcgbWFjcm9zLgoJKE1PREVfVVNFU19JTl9FWElUX0JMT0NLLCBNT0RFX05FRURFRCwgTU9ERV9BVF9FTlRSWSk6IExpa2V3aXNlLgoJKE1PREVfUFJJT1JJVFlfVE9fTU9ERSwgRU1JVF9NT0RFX1NFVCk6IExpa2V3aXNlLgoJKiBzaC5jIChicm9rZW5fbW92ZSk6IERpc2FibGUgZmxkaSBmb3IgKFRBUkdFVF9TSDQgJiYgISBUQVJHRVRfRk1PVkQpLgoJKGJhcnJpZXJfYWxpZ24pOiBBbGxvdyBmb3IgSlVNUF9JTlNOUyBjb250YWluaW5nIGEgcGFyYWxsZWwuCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBSZW1vdmUgc2hfZmxhZ19yZW1vdmVfZGVhZF9iZWZvcmVfY3NlIHNldC4KCShmbGRpX29rKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9mcHNjcl9ydHgpOiBBZGQgZnBzY3JfcnR4IGFzIEdDIHJvb3QuCgkoZW1pdF9zZl9pbnNuKTogT25seSBnZW5lcmF0ZSBmcHUgc3dpdGNoZXMgd2hlbiBvcHRpbWl6ZSA8IDEuCgkoZW1pdF9kZl9pbnNuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2ZwX2JyYW5jaCwgZW1pdF9mcHNjcl91c2UsIHJlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBEZWxldGUuCgkoc2hfZmxhZ19yZW1vdmVfZGVhZF9iZWZvcmVfY3NlKTogRGVsZXRlLgoJKGdldF9mcmVlX3JlZywgZnBzY3Jfc2V0X2Zyb21fbWVtKTogTmV3IGZ1bmN0aW9ucy4KCSogc2gubWQgKG1vdmRmLCBtb3ZzZik6IFJlbW92ZSBub19uZXdfcHNldWRvcyBjb2RlLgoJKHJldHVybik6IFJlbW92ZSBlbWl0X2Zwc2NyX3VzZSAvIHJlbW92ZV9kZWFkX2JlZm9yZV9jc2UgY2FsbHMuCgoyMDAwLTAyLTE1ICBMb3JlbiBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogZ2luY2x1ZGUvc3RkZGVmLmg6IENvcnJlY3QgdXNhZ2Ugb2YgX0JTRF9SVU5FX1RfIGZvciBGcmVlQlNELgoKMjAwMC0wMi0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKFRSRUVfSCwgY29sbGVjdDIubywgZ2NjLmgsIG1pcHMtdGZpbGUubywgY2NjcC5vLAoJY3BwaGFzaC5vLCBjcHBpbml0Lm8sIHByb3RvaXplLm8sIHVucHJvdG9pemUubyk6IERlcGVuZCBvbiB2ZXJzaW9uLmguCgoJKiBjY2NwLmM6IEluY2x1ZGUgdmVyc2lvbi5oIGFuZC9vciBkb24ndCBkZWNsYXJlIGB2ZXJzaW9uX3N0cmluZycuCgkqIGNvbGxlY3QyLmM6IExpa2V3aXNlLgoJKiBhbHBoYS5jOiBMaWtld2lzZS4KCSogYXJtL2FvZi5oOiBMaWtld2lzZS4KCSogYXJtL2NvZmYuaDogTGlrZXdpc2UuCgkqIGFybS9lbGYuaDogTGlrZXdpc2UuCgkqIGFybS9wZS5oOiBMaWtld2lzZS4KCSogYXJtL3Rjb2ZmLmg6IExpa2V3aXNlLgoJKiBhcm0vdGVsZi5oOiBMaWtld2lzZS4KCSogYXJtL3RwZS5oOiBMaWtld2lzZS4KCSogYXJtL3Z4YXJtLmg6IExpa2V3aXNlLgoJKiBjb252ZXgvY29udmV4LmM6IExpa2V3aXNlLgoJKiBpMzg2L2RndXguYzogTGlrZXdpc2UuCgkqIGkzODYvc3VuMzg2Lmg6IExpa2V3aXNlLgoJKiBtODhrL204OGsuYzogTGlrZXdpc2UuCgkqIG1jb3JlL21jb3JlLXBlLmg6IExpa2V3aXNlLgoJKiBtaXBzL21pcHMuaDogTGlrZXdpc2UuCgkqIHJvbXAvcm9tcC5oOiBMaWtld2lzZS4KCSogc2gvc2guYzogTGlrZXdpc2UuCgkqIGNwcGhhc2guYzogTGlrZXdpc2UuCgkqIGNwcGluaXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIGdjYy5jOiBMaWtld2lzZS4KCSogZ2NjLmg6IExpa2V3aXNlLgoJKiBtaXBzLXRmaWxlLmM6IExpa2V3aXNlLgoJKiBwcm90b2l6ZS5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiB0cmVlLmg6IExpa2V3aXNlLgoKCSogdmVyc2lvbi5jICh2ZXJzaW9uX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiB2ZXJzaW9uLmg6IE5ldyBmaWxlLgoKMjAwMC0wMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIG1jb3JlLWVsZiBhbmQgbWNvcmUtcGUgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogTkVXUzogQWRkIG5vdGUgdGhhdCBNQ29yZSBwb3J0IGhhcyBiZWVuIGNvbnRyaWJ1dGVkLgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IGNvbW1hbmQgbGluZSBzd2l0Y2hlcyBmb3IgTUNvcmUgcG9ydC4KCSogaW5zdGFsbC50ZXhpOiBBZGQgTUNvcmUgdG8gbGlzdCBvZiBzdXBwb3J0ZWQgdGFyZ2V0cy4KCjIwMDAtMDItMTQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbGxlY3QyLmMgKG1haW4pIFtDT0xMRUNUX0VYUE9SVF9MSVNUXTogSWYgd2UgaGF2ZSBmcmFtZXMsCgl0aGVuIHdlIHdpbGwgbmVlZCB0byBpbXBvcnQgdGhlIGZyYW1lIGhhbmRsaW5nIGZ1bmN0aW9ucy4KCShzY2FuX3Byb2dfZmlsZSkgW0NPTExFQ1RfRVhQT1JUX0xJU1RdOiBXZSB3aWxsIGFsc28gbmVlZAoJdG8gaW1wb3J0IHRoZSBmcmFtZXMgdGhlbXNlbHZlcy4KCk1vbiBGZWIgMTQgMTM6MzE6MDEgMjAwMCAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgkJCSAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJhc2ljX2Jsb2NrLmg6IEFkZGVkIHByb3RvdHlwZSBmb3IgcmVvcmRlcl9iYXNpY19ibG9ja3MuCgkqIHRvcGxldi5jOiBDaGFuZ2VzIHRvIGFkZCAtZnJlb3JkZXItYmxvY2tzIGFuZCBncmFwaCBkdW1wIGFmdGVyCglibG9jayByZW9yZGVyaW5nIGlzIGRvbmUuCgkqIGZsb3cuYyAocmVvcmRlcl9ibG9ja19kZWYpOiBOZXcgc3RydWN0dXJlIGZvciB1c2UgZHVyaW5nIGJsb2NrCglyZW9yZGVyaW5nLgoJKFJFT1JERVJfQkxPQ0tfKik6IE5ldyBtYWNyb3MgdG8gYWNjZXNzIG1lbWJlcnMgb2YgYWJvdmUgc3RydWN0dXJlLgoJKHNraXBfaW5zbnNfYmV0d2Vlbl9ibG9jaywgZ2V0X2NvbW1vbl9kZXN0LCBjaGFpbl9yZW9yZGVyX2Jsb2NrcywKCW1ha2VfcmVvcmRlcl9jaGFpbiwgZml4dXBfcmVvcmRlcl9jaGFpbiwgcmVvcmRlcl9iYXNpY19ibG9ja3MpOiBOZXcKCWZ1bmN0aW9ucyBmb3IgYmxvY2sgcmVvcmRlcmluZy4KCk1vbiBGZWIgMTQgMTE6MjQ6NDQgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZ2NjLnRleGkgKFBhc3Nlcyk6IEZpeCB0eXBvLgoJKiBtZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IERpdHRvLgoJKiB0bS50ZXhpIChTdG9yYWdlIExheW91dCk6IERpdHRvLgoKMjAwMC0wMi0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IE9ubHkgZnJlZSB0aGUgb2xkIGRlZmluaXRpb24gaWYgaXQKCWFjdHVhbGx5IGhhZCBvbmUuCgoyMDAwLTAyLTEzICAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChyZWFkX2FuZF9wcmVzY2FuKTogV2hlbiBlbWl0dGluZyBkZWZlcnJlZAoJbmV3bGluZXMsIHRlc3Qgc3BlY2Nhc2VbXSBhZ2FpbiBpbnN0ZWFkCW9mIGNoZWNraW5nIGVhY2gKCXBvc3NpYmxlIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGluIHR1cm4uICBXaGVuIHdlIGVuY291bnRlciBcciwKCWxvb2sgYmVoaW5kIGZvciBcbiBmaXJzdCwgdGhlbiBhaGVhZC4KCjIwMDAtMDItMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNzZS5jIChjc2VfYWx0ZXJlZCk6IE5ldyBpbnRlcm5hbCBmbGFnLgoJKGNzZV9pbnNuKTogU2V0IGl0IGlmIHdlIGNoYW5nZWQgYW4gaW5zbi4KCShjc2VfbWFpbik6IENsZWFyIGNzZV9hbHRlcmVkIGJlZm9yZSBlYWNoIGJhc2ljIGJsb2NrLgoJT25seSBnYXJiYWdlIGNvbGxlY3QgaWYgY3NlX2FsdGVyZWQgaXMgdHJ1ZSBhZnRlcndhcmQuCgpTdW4gRmViIDEzIDE0OjEyOjI4IDIwMDAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogc3BhcmMvc29sMi5oIChMSUJfU1BFQyk6IExpbmsgLWxkbCBpZiBwcm9maWxpbmcuCgpTdW4gRmViIDEzIDEzOjIxOjU1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbik6IEZpeCB0eXBvLgoKU3VuIEZlYiAxMyAxMjo1Nzo1MiAyMDAwICBOZWlsIEJvb3RoIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogcHJlZml4LmMgKGNvbmNhdCwgbG9va3VwX2tleSk6IFVzZSB4bWFsbG9jIGFuZCB4cmVhbGxvYwoJY29uc2lzdGVudGx5LgoKMjAwMC0wMi0xMyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogZmxvdy5jIChmbG93X2xvb3BfdHJlZV9ub2RlX2FkZCk6IFVzZSBiZXR0ZXIgYWxnb3JpdGhtIGJ5IHBhc3NpbmcKCXByZXZpb3VzbHkgaW5zZXJ0ZWQgbm9kZSBpbnN0ZWFkIG9mIHJvb3Qgbm9kZS4JQ2FsbGVyIGNoYW5nZWQuCgoyMDAwLTAyLTEzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBiYXNpYy1ibG9jay5oIChGTE9XX0xPT1BfRklSU1RfQkxPQ0ssIEZMT1dfTE9PUF9MQVNUX0JMT0NLKTogRGVsZXRlLgoKMjAwMC0wMi0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3J0c3R1ZmYuYyAoX19kb19nbG9iYWxfY3RvcnNfYXV4LCBfX3JlZ19mcmFtZV9jdG9yLAoJX19kZXJlZ19mcmFtZV9kdG9yKTogQWRkIHByb3RvdHlwZSBhcmd1bWVudC4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9hY3RpdmVfcCwgX19ndGhyZWFkX29uY2UpOiBMaWtld2lzZS4KCgkqIGd0aHItcG9zaXguaCAoX19ndGhyZWFkX2FjdGl2ZV9wLCBfX2d0aHJlYWRfb25jZSk6IExpa2V3aXNlLgoKCSogZ3Roci1zb2xhcmlzLmggKF9fZ3RocmVhZF9hY3RpdmVfcCwgX19ndGhyZWFkX29uY2UpOiBMaWtld2lzZS4KCgkqIGd0aHItdnh3b3Jrcy5oIChfX2d0aHJlYWRfb25jZSk6IExpa2V3aXNlLgoKCSogZ3Roci13aW4zMi5oIChfX2d0aHJlYWRfYWN0aXZlX3AsIF9fZ3RocmVhZF9vbmNlKTogTGlrZXdpc2UuCgpTYXQgRmViIDEyIDAxOjQ0OjI2IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3NfdXNpbmdfbW92KTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiAuLi4gaGVyZS4gVXNlIG1vdiBpbnN0ZWFkIG9mIGFkZCB0byByZXN0b3JlCglzdGFjayBwb2ludGVyIGluIGZ1bmN0aW9ucyB3L28gc2F2ZWQgcmVnaXN0ZXJzLCBvdXRwdXQgTEVBVkUgbW9yZSBvZnRlbgoJb24gVEFSR0VUX1VTRV9MRUFWRSBtYWNoaW5lcy4KCjIwMDAtMDItMDcgIERtaXRyaSBNYWthcm92ICA8ZGltQHdycy5jb20+ICYgQmVybmQgU2NobWlkdCA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1faW5pdF9jdW11bGF0aXZlX2FyZ3MpOyBOZXcgZnVuY3Rpb246CglJbml0bGFpc2UgdGhlIENVTVVMQVRJRV9BUkdTIHN0cmN1dHVyZSBmb3IgYSBmdW5jdGlvbgoJZGVmaW5pdGlvbi4KCShhcm1fZnVuY3Rpb25fYXJnKTogTmV3IGZ1bmN0aW9uOiBEZXRlcm1pbmUgd2hlcmUgdG8gcGxhY2UgYQoJZnVuY3Rpb24ncyBhcmd1bWVudC4gIEFsc28gaGFuZGxlcyBkZWNpZGluZyB0aGUgZnVuY3Rpb24ncwoJY2FsbCBjb29raWUuCgkoY3VycmVudF9maWxlX2Z1bmN0aW9uX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmCgl0aGUgc3ltYm9sIGlzIGEgZnVuY3Rpb24gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBjb21waWxlZC4KCShhcm1faXNfbG9uZ19jYWxsX3ApOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZQoJaW5kaWNhdGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgdmlhIGEgbG9uZyBjYWxsLgoJKGFybV92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUKCWF0dHJpYnV0ZSBpcyBhIHZhbGlkLCBhcm0gc3BlY2lmaWMsIGF0dHJpYnV0ZS4KCShhcm1fY29tcF90eXBlX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYgdGhlCgl0d28gdHlwZXMgaGF2ZSBjb21wYXRpYmxlLCBhcm0gc3BlY2lmaWMsIGF0dHJpYnV0ZXMuCgoJKiBjb25maWcvYXJtL2FybS5oIChDVU1VTEFUSVZFX0FSR1MpOiBSZWRlZmluZSB0byBiZSBhCglzdHJ1Y3R1cmUuCgkoRlVOQ1RJT05fQVJHKTogUmVkZWZpbmUgdG8gY2FsbCBhcm1fZnVuY3Rpb25fYXJnLgoJKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVkZWZpbmUgdG8gdXNlIGNvcnJlY3QKCXN0cnVjdHVyZSBmaWVsZC4KCShJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFJlZGVmaW5lIHRvIGNhbGwKCWFybV9pbml0X2N1bXVsYXRpdmVfYXJncy4KCShGVU5DVElPTl9BUkdfQURWQU5DRSk6IFJlZGVmaW5lIHRvIHVzZSBjb3JyZWN0IHN0cnVjdHVyZQoJZmllbGQuCgkoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IFJlZGVmaW5lIHRvIHVzZSBjb3JyZWN0IHN0cnVjdHVyZQoJZmllbGQuCgkoQVJNX01BUktfTkVBUkJZX0ZVTkNUSU9OKTogTmV3IG1hY3JvOiBNYXJrIGFscmVhZHkgY29tcGlsZWQKCWZ1bmN0aW9ucy4KCShFTkNPREVfU0VDVElPTik6IEFkZCBjYWxsIHRvIEFSTV9NQVJLX05FQVJCWV9GVU5DVElPTi4KCShWQUxJRF9NQUNISU5FX1RZUEVfQVRUUklCVVRFKTogRGVmaW5lLgoJKENPTVBfVFlQRV9BVFRSSUJVVEVTKTogRGVmaW5lLgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGNhbGwpOiBDYWxsIGFybV9pc19sb25nX2NhbGxfcCB0byBkZWNpZGUKCWlmIGEgbG9uZyBjYWxsIGlzIG5lZWRlZC4KCShjYWxsX3ZhbHVlKTogQ2FsbCBhcm1faXNfbG9uZ19jYWxsX3AgdG8gZGVjaWRlIGlmIGEgbG9uZyBjYWxsCglpcyBuZWVkZWQuCgkoY2FsbF9zeW1ib2wpOiBDYWxsIGFybV9pc19sb25nX2NhbGxfcCB0byBkZWNpZGUgaWYgYSBsb25nIGNhbGwKCWlzIG5lZWRlZC4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlIGZvciBhcm1faXNfbG9uZ19jYWxsX3AuCgoyMDAwLTAyLTExICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogUkVBRE1FLkFWUjogTmV3IGZpbGUgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXZyIHBvcnRzLgoJKiBjb25maWcvYXZyOiBOZXcgZGlyZWN0b3J5IHdpdGggYXZyIHBvcnQgZmlsZXMuCgoyMDAwLTAyLTExICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKEZJWElOQ19ERUZTKTogUmVtb3ZlIHVubmVlZGVkIEBmaXhpbmNfZGVmc0AuCgoyMDAwLTAyLTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmM6IEZpeCBmb3JtYXR0aW5nLCB1cGRhdGUgY29tbWVudGFyeS4KCShkdW1wX2RlZmluaXRpb24pOiBUYWtlIHRocmVlIHNlcGFyYXRlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGEKCU1BQ1JPREVGIHN0cnVjdHVyZSBhcmd1bWVudC4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlIG9mIGR1bXBfZGVmaW5pdGlvbi4KCSogY3BwaW5pdC5jIChjcHBfZmluaXNoKTogVXBkYXRlIGNhbGwgb2YgZHVtcF9kZWZpbml0aW9uLgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IEFsd2F5cyBjcmVhdGUgbmV3IGhhc2ggZW50cnkgd2l0aAoJVF9NQUNSTyB0eXBlLiAgUmVtb3ZlIHJlZHVuZGFudCBjaGVjayBmb3IgcmVkZWZpbml0aW9uIG9mCglwb2lzb25lZCBpZGVudGlmaWVyLiAgVXBkYXRlIGNhbGwgb2YgZHVtcF9kZWZpbml0aW9uLgoJKGRvX3VuZGVmKTogRG9uJ3QgY2FsbCBjaGVja19tYWNyb19uYW1lLiAgUmVuYW1lIHN5bV9sZW5ndGggdG8KCWxlbi4KCShkb19lcnJvciwgZG9fd2FybmluZyk6IERvbid0IHVzZSBjb3B5X3Jlc3Rfb2ZfbGluZSBvcgoJU0tJUF9XSElURV9TUEFDRS4KCShkb193YXJuaW5nKTogRG9uJ3QgdXNlIHBlZHdhcm4gZm9yIHRoZSBhY3R1YWwgd2FybmluZywKCW9ubHkgdGhlIG5vdGljZSBhYm91dCBpdHMgbm90IGJlaW5nIGluIHRoZSBzdGFuZGFyZC4gIChGaXhlcwoJYnVnIHdpdGggI3dhcm5pbmcgaW4gc3lzdGVtIGhlYWRlcnMuKQoJKGRvX2lkZW50KTogU3RyaWN0ZXIgYXJndW1lbnQgY2hlY2tpbmcgLSBhY2NlcHQgb25seSBhIHNpbmdsZQoJc3RyaW5nIGFmdGVyICNpZGVudC4gIEFsc28sIG1hY3JvLWV4cGFuZCB0aGUgbGluZS4KCShkb194aWZkZWYpOiBVc2UgY3BwX2RlZmluZWQuICBEZS1vYmZ1c2NhdGUuCgoJKGRvX3ByYWdtYSk6IFNwbGl0IG91dCBzcGVjaWZpYyBwcmFnbWEgaGFuZGxpbmcgdG8gc2VwYXJhdGUKCWZ1bmN0aW9ucy4gIFVzZSBnZXRfZGlyZWN0aXZlX3Rva2VuLiAgVXBkYXRlIGNvbW1lbnRhcnkuICBEbwoJbm90IHBhc3Mgb24gI3ByYWdtYSBvbmNlIG9yICNwcmFnbWEgcG9pc29uIHRvIHRoZSBmcm9udCBlbmQuCgkoZG9fcHJhZ21hX29uY2UsIGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiwgZG9fcHJhZ21hX3BvaXNvbiwKCWRvX3ByYWdtYV9kZWZhdWx0KTogTmV3LgoKRmViIDExIDEyOjMwOjUzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogVGhlIGZpcnN0IG9wZXJhbmQgaW4gYSByZWxhdGlvbmFsCgljYW4gYmUgYSBDT05TVF9JTlQuCgkqIG9wdGFicy5jIChlbWl0X2NvbmRpdGlvbmFsX21vdmUpOiBIYW5kbGUgcmVsYXRpb25hbHMgd2hpY2gKCWhhdmUgYSBrbm93biB0cnVlL2ZhbHNlIHJlc3VsdC4KCjIwMDAtMDItMTEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBEb24ndCBpbnNlcnQKCWEgUkVUVVJOIGluc24gaW50byBhIGJsb2NrIHdoaWNoIGFscmVhZHkgZW5kcyB3aXRoIGEganVtcC4KCjIwMDAtMDItMTEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKEJVRl9MRU4pOiBJbmNyZWFzZSBhIGxvdC4KCjIwMDAtMDItMTEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCB0bV9wX2ZpbGUgc3BlY2lmaWNhdGlvbiBmb3IgdGh1bWIgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlnL2FybS90aHVtYi1wcm90b3MuaDogTmV3IGZpbGU6IFByb3RvdHlwZXMgZm9yIGV4cG9ydGVkCglmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aHVtYi5jLgoKMjAwMC0wMi0xMSAgUm9iZXJ0IExpcGUgIDxyb2JlcnRsQHNjby5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYm9vdHN0cmFwLWxlYW4pOiBSZW1vdmUgYWRkaXRpb25hbCBmaWxlcy4KCShib290c3RyYXAyLWxlYW4pOiBMaWtld2lzZS4KCShWT0xfRklMRVMpOiBMaXN0IG9mIGZpbGVzIGZvciBhYm92ZS4KCjIwMDAtMDItMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogUmVtb3ZlIHNwdXJpb3VzIGFyZ3VtZW50IHRvCgljcHBfbG9va3VwLgoKMjAwMC0wMi0xMSAgSm9lbCBTaGVycmlsbCAoam9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogKGkqODYtKi1ydGVtcyopOiBTd2FwcGVkIGVsZiBhbmQgY29mZgoJc3Rhbnphcy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wMi0xMSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBwYS1wcm90b3MuaDogV3JhcCBmdW5jdGlvbl9hcmdfcGFkZGluZyBpbiBUUkVFX0NPREUgI2lmZGVmLgoKRnJpIEZlYiAxMSAwMjo1OTowNSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5jLCBwYS5oOiBSZW1vdmUgdHJpZ3JhcGggc2VxdWVuY2VzIHdpdGhpbiBjb21tZW50cy4KCkZyaSBGZWIgMTEgMDI6NTE6NTYgMjAwMCAgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGludm9rZS50ZXhpIChQUEMgT3B0aW9ucyk6IC1tbm8tbmV3LW1uZW5vbWljcyAtPiAtbW9sZC1tbmVtb25pY3MuCgpGcmkgRmViIDExIDAyOjQ4OjMwIDIwMDAgIEJyYWQgTHVjaWVyICAobHVjaWVyQG1hdGgucHVyZHVlLmVkdSkKCgkqIHNiaXRtYXAuaDogTWFrZSBTQklUTUFQX0VMVF9CSVRTIHVuc2lnbmVkLgoKMjAwMC0wMi0xMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoZnBfemVyb19vcGVyYW5kKTogQ2hlY2sgZm9yIENPTlNUX0RPVUJMRS4KCjIwMDAtMDItMTEgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKEFTTV9HTE9CQUxJWkVfTEFCRUwpOiBVc2UgYzR4X2dsb2JhbF9sYWJlbC4KCShBU01fT1VUUFVUX0VYVEVSTkFMKTogVXNlIGM0eF9leHRlcm5hbF9yZWYuCgkoQVNNX09VVFBVVF9FWFRFUk5BTF9MSUJDQUxMKTogTGlrZXdpc2UuCgkoQVNNX0ZJTEVfRU5EKTogVXNlIGM0eF9maWxlX2VuZC4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2dsb2JhbF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCShjNHhfZXh0ZXJuYWxfcmVmLCBjNHhfZmlsZV9lbmQpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oIChjNHhfZ2xvYmFsX2xhYmVsKTogQWRkIHByb3RvdHlwZS4KCShjNHhfZXh0ZXJuYWxfcmVmLCBjNHhfZW5kX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDAtMDItMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jOiBEb24ndCBpbmNsdWRlIGNwcGhhc2guaC4KCShwYXJzZV9jaGFyY29uc3QsIGNwcF9sZXgpOiBVc2UgY3BwX2RlZmluZWQuCgkoY3BwX2xleCk6IFVzZSBnZXRfZGlyZWN0aXZlX3Rva2VuIHRocm91Z2hvdXQuICBSZW1vdmUKCXVubmVjZXNzYXJ5IGNhc2VzIGZyb20gc3dpdGNoLiAgTW92ZSBhc3NlcnRpb24taGFuZGxpbmcgY29kZQoJZG93biB0byBPVEhFUiBjYXNlLgoJKGNwcF9wYXJzZV9leHByKTogSWYgd2Ugc2VlICcrJyBvciAnLScsIGNoZWNrIHRoZSBjb250ZXh0IHRvCglkZXRlcm1pbmUgaWYgdGhleSBhcmUgdW5hcnkgb3IgYmluYXJ5IG9wZXJhdG9ycy4gIFN0cmVhbWxpbmUKCXRoZSBqdW1wcyBhIGJpdC4gIERvIG5vdCBjYWxsIHNraXBfcmVzdF9vZl9saW5lLgoKCSogY3BwbGliLmM6IE1ha2Ugc2tpcF9yZXN0X29mX2xpbmUgYW5kIGNwcF9za2lwX2hzcGFjZQoJc3RhdGljLiAgRXhwb3J0IGdldF9kaXJlY3RpdmVfdG9rZW4uICBVcGRhdGUgY29tbWVudGFyeS4KCShjcHBfZGVmaW5lZCk6IE5ldyBmdW5jdGlvbi4KCShkb19kZWZpbmUpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIFRfUENTVFJJTkcuICBDYWxsCglmcmVlX2RlZmluaXRpb24gdG8gcmVsZWFzZSBtZW1vcnkgZm9yIG9sZCBkZWZpbml0aW9uLCB3aGVuCglyZWRlZmluaW5nIGEgbWFjcm8uCgkoZXZhbF9pZl9leHByZXNzaW9uKTogU2V0IG9ubHlfc2Vlbl93aGl0ZSB0byAwIGJlZm9yZSBjYWxsaW5nCgljcHBfcGFyc2VfZXhwci4gIENhbGwgc2tpcF9yZXN0X29mX2xpbmUgYWZ0ZXIgaXQgcmV0dXJucy4KCShjcHBfcmVhZF9jaGVja19hc3NlcnRpb24pOiBEb24ndCBwcmVzZXJ2ZSBhIHBvaW50ZXIgaW50byB0aGUKCXRva2VuIGJ1ZmZlciBhY3Jvc3MgYSBjYWxsIHRvIGNwcF9nZXRfdG9rZW4uCgoJKiBNYWtlZmlsZS5pbiAoY3BwZXhwLm8pOiBEb24ndCBkZXBlbmQgb24gY3BwaGFzaC5oLgoJKiBjcHBmaWxlcy5jIChyZWR1bmRhbnRfaW5jbHVkZV9wKTogVXNlIGNwcF9kZWZpbmVkLgoJKiBjcHBoYXNoLmMgKGZyZWVfZGVmaW5pdGlvbik6IE5ldyBmdW5jdGlvbi4KCShkZWxldGVfbWFjcm8pOiBVc2UgaXQuICBVcGRhdGUgY29tbWVudGFyeS4KCSogY3BwaGFzaC5oOiBUeXBlZGVmIEhBU0hOT0RFIGhlcmUuICBQcm90b3R5cGUgY3BwX2xvb2t1cCBhbmQKCWZyZWVfZGVmaW5pdGlvbi4KCSogY3BwbGliLmg6IERvbid0IHR5cGVkZWYgSEFTSE5PREUgaGVyZS4gRGVsZXRlIFRfUENTVFJJTkcKCWZyb20gZW51bSBub2RlX3R5cGUuICBQcm90b3R5cGUgY3BwX2RlZmluZWQgYW5kIGdldF9kaXJlY3RpdmVfdG9rZW4uCglEb24ndCBwcm90b3R5cGUgY3BwX2xvb2t1cCwgc2tpcF9yZXN0X29mX2xpbmUsIG9yIGNwcF9za2lwX2hzcGFjZS4KCgkqIGZpeC1oZWFkZXIuYyAoY2hlY2tfbWFjcm9fbmFtZXMpOiBVc2UgY3BwX2RlZmluZWQuCgkocmVhZF9zY2FuX2ZpbGUpOiBTZXQgaW5oaWJpdF93YXJuaW5ncyBhbmQgaW5oaWJpdF9lcnJvcnMgaW4KCXRoZSBvcHRpb25zIHN0cnVjdHVyZS4KCjIwMDAtMDItMTAgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGMtcHJhZ21hLmMgKG1heGltdW1fZmllbGRfYWxpZ25tZW50KTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbi4KCjIwMDAtMDItMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9hYnN0cmFjdF9vcmlnaW5fYXR0cmlidXRlKTogQ2hlY2sgVFJFRV9DT0RFIChvcmlnaW4pCglyYXRoZXIgdGhhbiBkaWUtPmRpZV90YWcuCgpUaHUgRmViIDEwIDE2OjI2OjQ5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb21iaW5lLmMgKG1ha2VfZXh0cmFjdGlvbiwgZm9yY2VfdG9fbW9kZSk6IEF2b2lkIHdhcm5pbmcgb24KCW1peGVkLXNpZ25lZG5lc3MgY29uZGl0aW9uYWxzLgoJKG1ha2VfZmllbGRfYXNzaWdubWVudCwgbm9uemVyb19iaXRzKTogTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChzdG9yZV9maXhlZF9iaXRfZmllbGQpOiBBTElHTiBhcmcgbm93IHVuc2lnbmVkLgoJKHN0b3JlX3NwbGl0X2JpdF9maWVsZCwgZXh0cmFjdF9zcGxpdF9iaXRfZmllbGQpOiBMaWtld2lzZS4KCShleHRyYWN0X2ZpeGVkX2JpdF9maWVsZCwgc3RvcmVfYml0X2ZpZWxkLAoJKiBleHByLmM6IENoYW5nZSBhbGlnbm1lbnQgdG8gYmUgdW5zaWduZWQgZXZlcnl3aGVyZS4KCShtb3ZlX2J5X3BpZWNlcywgc3RvcmVfY29uc3RydWN0b3JfZmllbGQsIHN0b3JlX2NvbnN0cnVjdG9yKToKCUFsaWdubWVudCBwYXJtIGlzIHVuc2lnbmVkLgoJKGVtaXRfYmxvY2tfbW92ZSwgZW1pdF9ncm91cF9sb2FkLCBlbWl0X2dyb3VwX3N0b3JlKTogTGlrZXdpc2UuCgkoY2xlYXJfc3RvcmFnZSwgZW1pdF9wdXNoX2luc24sIGNvbXBhcmVfZnJvbV9ydHgpOiBMaWtld2lzZS4KCShkb19jb21wYXJlX3J0eF9hbmRfanVtcCk6IExpa2V3aXNlLgoJKG1vdmVfYnlfcGllY2VzX25pbnNucywgY2xlYXJfYnlfcGllY2VzKTogTGlrZXdpc2UuCglDb21wYXJlIGFsaWduIHdpdGggR0VUX01PREVfQUxJR05NRU5ULgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCk6IFBvaW50ZXIgdG8gYWxpZ25tZW50IGlzIHBvaW50ZXIgdG8gdW5zaWduZWQuCgkoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGNvcHlfYmxrbW9kZV9mcm9tX3JlZywgZW1pdF9wdXNoX2luc24pOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgkoZXhwYW5kX2Fzc2lnbm1lbnQpOiBMb2NhbCB2YXJzIGZvciBhbGlnbm1lbnQgbm93IHVuc2lnbmVkLgoJKHN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCwgZXhwYW5kX2V4cHIsIGRvX2p1bXApOiBMaWtld2lzZS4KCShkb19jb21wYXJlX2FuZF9qdW1wKTogTGlrZXdpc2UuCgkoc3RvcmVfZmllbGQpOiBDYWxsIG5ldyBmdW5jdGlvbiBleHByX2FsaWduLgoJKiBleHByLmggKGVtaXRfYmxvY2tfbW92ZSwgZW1pdF9ncm91cF9sb2FkLCBlbWl0X2dyb3VwX3N0b3JlKToKCUFsaWdubWVudCBhcmcgbm93IHVuc2lnbmVkLgoJKGNsZWFyX3N0b3JhZ2UsIGVtaXRfcHVzaF9pbnNuLCBjb21wYXJlX2Zyb21fcnR4KTogTGlrZXdpc2UuCgkoZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAsIHN0b3JlX2JpdF9maWVsZCk6IExpa2V3aXNlLgoJKGV4dHJhY3RfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAoYWRkX2RvdWJsZSk6IEFkZCBjYXN0IHRvIGVsaW1pbmF0ZSBzaWduZWRuZXNzIHdhcm5pbmcuCgkqIG1hY2htb2RlLmggKEdFVF9NT0RFX0FMSUdOTUVOVCk6IFJlc3VsdCBpcyB1bnNpZ25lZC4KCShnZXRfYmVzdF9tb2RlKTogQWxpZ25tZW50IGFyZyBpcyB1bnNpZ25lZC4KCSogcnRsLmggKG1vdmVfYnlfcGllY2VzKTogTGlrZXdpc2UuCgkqIHN0b3JlLWxheW91dC5jIChtYXhpbXVtX2ZpZWxkX2FsaWdubWVudCwgc2V0X2FsaWdubWVudCk6CglOb3cgdW5zaWduZWQuCgkobGF5b3V0X2RlY2wpOiBBbGlnbm1lbnQgYXJnIGlzIG5vdyB1bnNpZ25lZC4KCVJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShsYXlvdXRfcmVjb3JkLCBsYXlvdXRfdW5pb24sIGxheW91dF90eXBlKTogUmVtb3ZlIHVubmVlZGVkIGNhc3RzLgoJTG9jYWwgYWxpZ25tZW50IHZhcmlhYmxlcyBub3cgdW5zaWduZWQuCgkoZ2V0X2Jlc3RfbW9kZSk6IEFsaWdubWVudCBhcmcgbm93IHVuc2lnbmVkLgoJKiB0cmVlLmMgKGV4cHJfYWxpZ24pOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoZXhwcl9hbGlnbik6IExpa2V3aXNlLgoJKG1heGltdW1fZmllbGRfYWxpZ25tZW50LCBzZXRfYWxpZ25tZW50KTogTm93IHVuc2lnbmVkLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBBbGlnbm1lbnQgYXJndW1lbnQgaXMgbm93IHBvaW50ZXIgdG8gdW5zaWduZWQuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IEFkZCBjYXN0IHRvIGVsaW1pbmF0ZSB3YXJuaW5nLgoKVGh1IEZlYiAxMCAxMjo1Njo0NyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogSWYgb3AwIGFuZCBmaWVsZG1vZGUgYXJlIHRoZSBzYW1lIHNpemUsCgl0aGVuIHN0b3JlIGRpcmVjdGx5IGludG8gb3AwLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBXaGVuIGVtaXR0aW5nIGEgTk9URV9JTlNOX1NFVEpNUCwgc2VhcmNoIGZvcgoJdGhlIENBTExfSU5TTiwgYW5kIGVtaXQgdGhlIG5vdGUgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQuCgoyMDAwLTAyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS90aHVtYi5tZCAoZXBpbG9ndWUpOiBJbmNsdWRlIGEgKHJldHVybikgaW4gdGhlCglnZW5lcmF0ZWQgaW5zbiwgYW5kIGVtaXQgaXQgdXNpbmcgZW1pdF9qdW1wX2luc24gbm90CgllbWl0X2luc24uCgpUaHUgRmViIDEwIDE4OjI4OjU5IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fdGVtcCk6IENoYW5nZSB6ZXJvLXNpemVkIGFycmF5cyB0byBzaXplIDEuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogRG8gbm90IHVwZGF0ZQoJc3RhY2tfYWxpZ25tZW50X25lZWRlZAoJKiBpMzg2LmMgKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbW92ZSAjaWZkZWYgUFJFRkVSUkVEX0ZSQU1FX0JPVU5EQVJZLAoJYWRkIHNvbWUgc2FuaXR5IGNoZWNraW5nLCByZW1vdmUgb3B0aW1pemF0aW9uIGZvciBmdW5jdGlvbiB3aXRoCgl6ZXJvIGZyYW1lIHNpemUuCgoyMDAwLTAyLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogZ2djLXBhZ2UuYyAoZ2djX3BhZ2VfcHJpbnRfc3RhdGlzdGljcyk6IGJ6ZXJvIC0+IG1lbXNldC4KCgkqIGludGVncmF0ZS5jIChjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IFdyYXAgdmFyaWFibGUgYGFsaWdubWVudCcKCWluIG1hY3JvIEZSQU1FX0dST1dTX0RPV05XQVJELgoKCSogc3RtdC5jIChleHBhbmRfZW5kX2JpbmRpbmdzKTogRGVsZXRlIHVudXNlZCB2YXJpYWJsZS4KCgkqIHVucm9sbC5jIChpdGVyYXRpb25faW5mbyk6IE1hcmsgcGFyYW1ldGVyIGBsb29wJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKMjAwMC0wMi0xMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBmaXhpbmMvc2VydmVyLmMgKGxvYWRfZGF0YSk6IFJldHVybiBOVUxMIGlmIHRoZSBtYXJrZXIgbGluZSBpcwoJbm90IGZvdW5kLgoJKHJ1bl9zaGVsbCk6IElmIGxvYWRfZGF0YSByZXR1cm5zIE5VTEwsIHJldHJ5IHRoZSBjb21tYW5kIG9uY2UsIGluCglhIG5ldyBzaGVsbC4KCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDItMDkgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZ2NjL2ZpeGluY2x1ZGVzOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvZml4Y3BwOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvZml4aW5jLW50LnNlZDogICoqIERFTEVURUQgKioKCSogZ2NjL2p1c3QtZml4aW5jOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvTWFrZWZpbGUuaW46ICBSZW1vdmVkIG91dC1kYXRlZCBjb21tZW50YXJ5CgkqIGdjYy9jb25maWd1cmUuaW46IFJlbW92ZWQgZmFzdC1maXhpbmNsdWRlcyBkaXNhYmxlbWVudC4KCSogTUFJTlRBSU5FUlMoSWFuIFRheWxvcikgbW92ZWQgdG8gIldyaXRlIGFmdGVyIGFwcHJvdmFsIiBncm91cC4KCjIwMDAtMDItMDkgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogVW5jb21tZW50CglsYXN0IGNoYW5nZS4KCjIwMDAtMDItMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9pbnNuKTogRG9uJ3QgZGVsZXRlIHVzZXIgbGFiZWxzIGF0IC1PMC4KCjIwMDAtMDItMDkgIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBzY28uY29tPgoKCSogTWFrZWZpbGUuaW4gKGdlbi1wcm90b3MpOiBEb24ndCBkZXBlbmQgb24gSE9TVF9MSUJERVBTLgoJRG9uJ3QgbGluayB3aXRoIEhPU1RfTElCUy4KCjIwMDAtMDItMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQ29ycmVjdCAtLWhlbHAgdGV4dCBmb3IgLS13aXRoLWR3YXJmMi4KCVB1dCB0bS1kd2FyZjIuaCBhZnRlciBvdGhlciB0bSBmaWxlcywgaWYgaXQncyByZXF1ZXN0ZWQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL3RtLWR3YXJmMi5oOiAjdW5kZWYgUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFIGJlZm9yZQoJZGVmaW5pbmcgaXQuCgoyMDAwLTAyLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaDogUHJvdmlkZSBIQVNITk9ERSB0eXBlZGVmIGFuZCBmb3J3YXJkIGRlY2wgb2YKCXN0cnVjdCBoYXNobm9kZSBvbmx5LiAgS2lsbCBjcHBfaGFzaG5vZGUgdHlwZWRlZi4gIE1BQ1JPREVGLAoJREVGSU5JVElPTiwgc3RydWN0IGhhc2hub2RlLCBzdHJ1Y3QgbWFjcm9kZWYsIHN0cnVjdAoJZGVmaW5pdGlvbiwgc2Nhbl9kZWNscyBwcm90b3R5cGUsIGRlZmF1bHQgZGVmbiBvZgoJSU5DTFVERV9MRU5fRlVER0UgbW92ZWQgZWxzZXdoZXJlLgoKCSogY3BwaGFzaC5oOiBNQUNST0RFRiwgREVGSU5JVElPTiwgc3RydWN0IG1hY3JvZGVmLCBzdHJ1Y3QKCWRlZmluaXRpb24sIGFuZCBzdHJ1Y3QgaGFzaG5vZGUgbW92ZWQgaGVyZS4gUmVtb3ZlIHRoZSB1bnVzZWQKCSdwcmVkZWZpbmVkJyBmaWVsZCBmcm9tIHN0cnVjdCBkZWZpbml0aW9uLiAgUmVwbGFjZSB0aGUgJ2FyZ3MnCgl1bmlvbiB3aXRoIGl0cyBzb2xlIG1lbWJlci4gIEFsbCB1c2VycyB1cGRhdGVkIChjcHBoYXNoLmMpLgoJRGVsZXRlIEhBU0hTVEVQIGFuZCBNQUtFX1BPUyBtYWNyb3MsIGFuZCBoYXNoZiBwcm90b3R5cGUuICBBZGQKCW11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgoJKiBjcHBoYXNoLmMgKGhhc2hmKTogTWFrZSBzdGF0aWM7IHVzZSBiZXR0ZXIgYWxnb3JpdGhtOyBkcm9wCglIQVNIU0laRSBwYXJhbWV0ZXI7IHJldHVybiBhbiB1bnNpZ25lZCBpbnQuCgkoY3BwX2xvb2t1cCk6IERyb3AgSEFTSCBwYXJhbWV0ZXIuICBQRklMRSBwYXJhbWV0ZXIgaXMKCXVzZWQuIENhbGN1bGF0ZSBIQVNIU0laRSBtb2R1bHVzIGhlcmUuCgkoY3BwX2luc3RhbGwpOiBEcm9wIEhBU0ggcGFyYW1ldGVyLiBDYWxjdWxhdGUgSEFTSFNJWkUgbW9kdWx1cwoJaGVyZS4KCShjcmVhdGVfZGVmaW5pdGlvbik6IERyb3AgUFJFREVGSU5JVElPTiBwYXJhbWV0ZXIuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBEb24ndCBjYWxjdWxhdGUgYSBoYXNoIHZhbHVlIGhlcmUuCglEb24ndCBwYXNzIChrZXl3b3JkID09IE5VTEwpIHRvIGNyZWF0ZV9kZWZpbml0aW9uLgoKCSogc2Nhbi5oOiBQcm90b3R5cGUgc2Nhbl9kZWNscyBoZXJlLgoJKiBjcHBmaWxlcy5jOiBNb3ZlIElOQ0xVREVfTEVOX0ZVREdFIGRlZmF1bHQgZGVmbiBoZXJlLgoJKiBjcHBleHAuYywgY3BwZmlsZXMuYywgY3BwaW5pdC5jLCBjcHBsaWIuYywgZml4LWhlYWRlci5jOiBBbGwKCWNhbGxlcnMgb2YgY3BwX2xvb2t1cCBhbmQgY3BwX2luc3RhbGwgdXBkYXRlZC4KCgkqIGNwcGhhc2guYyAobWFjYXJnKTogSG9pc3QgYWxsIHRoZSBmbGFnIGRpZGRsaW5nIG91dCBvZiB0aGUKCWZ1bmN0aW9uLi4uCgkobWFjcm9leHBhbmQpOiAuLi4gYW5kIG91dCBvZiB0aGUgbG9vcCB0aGF0IGNhbGxzIG1hY2FyZy4KCVNraXAgb3ZlciB0aGUgaW5pdGlhbCBwYXJlbiBiZWZvcmUgbWFjcm8gYXJndW1lbnRzIHdpdGgKCWNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuOyBwb2ludCBtYXkgYmUgc29tZSBkaXN0YW5jZSBiZWZvcmUKCXRoYXQgcGFyZW4uICBBYm9ydCBpZiBpdCdzIG5vdCB0aGVyZS4KCgkqIGNwcGxpYi5jIChwYXJzZV9jbGVhcl9tYXJrKTogRGVsZXRlIGZ1bmN0aW9uLgoJKHBhcnNlX3NldF9tYXJrLCBwYXJzZV9nb3RvX21hcmspOiBNYWtlIHN0YXRpYy4KCShBQ1RJVkVfTUFSS19QKTogTmV3IG1hY3JvLgoJKHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQpOiBEbyBub3QgYnVtcCB0aGUgbGluZQoJaWYgQUNUSVZFX01BUktfUCBpcyB0cnVlLgoJKGNwcF9wb3BfYnVmZmVyKTogVGhlIGJ1ZmZlciB0byBiZSBwb3BwZWQgbWF5IG5vdCBoYXZlIGFuCglhY3RpdmUgbWFyay4KCShjcHBfZ2V0X3Rva2VuKTogV2hlbiBsb29raW5nIGZvciB0aGUgaW5pdGlhbCBwYXJlbiBiZWZvcmUKCW1hY3JvIGFyZ3VtZW50cywgb25seSBzZXQgYSBtYXJrIGluIGEgZmlsZSBidWZmZXIsIEFsd2F5cwoJcmV0dXJuIHRvIHRoYXQgbWFyayBiZWZvcmUgcHJvY2VlZGluZyB0byBjYWxsIG1hY3JvZXhwYW5kIG9yCglyZXR1cm4gYSBOQU1FIHRva2VuLgoKCSogY3BwbGliLmg6IFJlbW92ZSBwcm90b3R5cGVzIG9mIHBhcnNlX3NldF9tYXJrLAoJcGFyc2VfY2xlYXJfbWFyaywgcGFyc2VfZ290b19tYXJrLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbmFtZSAncHV0X291dF9jb21tZW50cycgdG8KCSdkaXNjYXJkX2NvbW1lbnRzJyBhbmQgaW52ZXJ0IGl0cyBzZW5zZS4KCSogY3BwaW5pdC5jLCBjcHBoYXNoLmMsIGNwcGxpYi5jOiBBbGwgdXNlcnMgb2YKCXB1dF9vdXRfY29tbWVudHMgY2hhbmdlZCB0byB1c2UgZGlzY2FyZF9jb21tZW50cywgd2l0aAoJb3Bwb3NpdGUgc2Vuc2UuCgoyMDAwLTAyLTA5ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBEb24ndCBkZWxldGUKCXRoZSBlZGdlIGZyb20gYSBibG9jayB0aGF0IGJvdGgganVtcHMgYW5kIGZhbGxzIHRocm91Z2ggdG8gdGhlCglmYWxsdGhydSBibG9jay4KCjIwMDAtMDItMDkgIFNjb3R0IEJhbWJyb3VnaCAgPHNjb3R0YkBuZXR3aW5kZXIub3JnPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKG1vdnNpKTogSW4gUElDIG1vZGUsIG1ha2Ugc3VyZSB0aGF0IGEKCWNvbnN0YW50IHNvdXJjZSBhZGRyZXNzIGlzIGxlZ2l0aW1hdGUuCgoyMDAwLTAyLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogSGFuZGxlIExBQkVMX1JFRgoJY29ycmVjdGx5LgoKCSogY29uZmlnL2FybS9hcm0uaCAoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogQWxsb3cgYW55dGhpbmcgd2hlbgoJZ2VuZXJhdGluZyBQSUMuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORCk6IERpc2FsbG93IHJlZmVyZW5jZXMgdG8gbGFiZWxzLgoKMjAwMC0wMi0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGNwcF9kZWZpbmUsIGNwcF91bmRlZik6IE1ha2Ugc3VyZSB0aGUgc3RhY2tlZCBidWZmZXIKCWVuZHMgd2l0aCBhIG5ld2xpbmUgYW5kIGEgTlVMLiAgRG9uJ3QgYmUgc28gY2xldmVyIG1hbmlwdWxhdGluZwoJc3RyaW5ncy4KCldlZCBGZWIgIDkgMTQ6MTg6MDggTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKSBBbGlnbiBzdGFjayBmcmFtZSB0byBjZnVuLT5zdGFja19hbGlnbm1lbnRfbmVlZGVkLAoJbm90IHRvIEJJR0dFU1RfQUxJR05NRU5ULgoKMjAwMC0wMi0wOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZHdhcmYyLmggKERXX0NGQV9HTlVfbmVnYXRpdmVfb2Zmc2V0X2V4dGVuZGVkKTogTmV3IGNvbnN0YW50LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmZfY2ZpX25hbWUpOiBQcmludCBuYW1lIG9mIG5ldyBjb25zdGFudC4KCShyZWdfc2F2ZSk6IFVzZSBEV19DRkFfR05VX25lZ2F0aXZlX29mZnNldF9leHRlbmRlZCB3aGVuIG5lZWRlZC4KCShvdXRwdXRfY2ZpKTogSGFuZGxlIG91dHB1dCBvZiBEV19DRkFfR05VX25lZ2F0aXZlX29mZnNldF9leHRlbmRlZC4KCSogZnJhbWUuYyAoZXhlY3V0ZV9jZmFfaW5zbik6IEhhbmRsZQoJRFdfQ0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQuCgoyMDAwLTAyLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jICh0aWR5X2ZhbGx0aHJ1X2VkZ2VzKTogU3BsaXQgb3V0IGZyb20gLi4uCgkoZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2Nrcyk6IC4uLiBoZXJlLgoJKGZpbmRfYmFzaWNfYmxvY2tzKTogVXNlIGl0LgoKVHVlIEZlYiAgOCAxNTo1MTo1MCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IERvIHNldCBSVFhfVU5DSEFOR0lOR19QIGZvciBUUkVFX1JFQURPTkxZLgoKMjAwMC0wMi0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW4gKEdFTl9QUk9UT1NfT0JKUyk6IFJlbW92ZSBsaWJjcHAuYS4KCShnZW5fcHJvdG9zLm8pOiBEb24ndCBkZXBlbmQgb24gY3BwbGliLmggb3IgY3BwaGFzaC5oLgoJKGZpeC1oZWFkZXIubyk6IERvbid0IGRlcGVuZCBvbiBjcHBoYXNoLmguCgoJKiBzY2FuLmMgKGhhc2hzdHIpOiBOZXcgZnVuY3Rpb24uCgkqIHNjYW4uaDogUHJvdG90eXBlIGl0LgoJKiBmaXgtaGVhZGVyLmM6IERvbid0IGluY2x1ZGUgY3BwaGFzaC5oLiAgVXNlIGhhc2hzdHIuCgkqIGdlbi1wcm90b3MuYzogRG9uJ3QgaW5jbHVkZSBjcHBoYXNoLmggb3IgY3BwbGliLmguICBVc2UKCWhhc2hzdHIuICBSZXBvcnQgaGFzaCB0YWJsZSBzdGF0aXN0aWNzLiAgQWRkIHByaXZhdGUKCWRlZmluaXRpb24gb2YgeHJlYWxsb2MuCgoyMDAwLTAyLTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpMzg2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IEZpeCB0eXBvIGluIG9wdGlvbiBuYW1lLgoKMjAwMC0wMi0wOCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogRG9uJ3QgcmVwbGFjZQoJanVtcHMgd2l0aCByZXR1cm5zIHVubGVzcyB0aGV5IGFyZSBqdW1wcyB0byB0aGUgZmFsbHRocnUgYmxvY2suCgpUdWUgRmViICA4IDA3OjUzOjU1IDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFkZHFpM19jYyk6IEZpeCBjb25zdHJhaW50cy4KClR1ZSBGZWIgIDggMDE6Mzk6NDUgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZnVuY3Rpb24uYyAoZW1pdF9yZXR1cm5faW50b19ibG9jayk6IFdyYXAgaW4gI2lmZGVmIEhBVkVfcmV0dXJuLgoKMjAwMC0wMi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGxpYi5jIChjcHBfZ2V0X3Rva2VuKTogQ2FsbCBDUFBfQlVNUF9MSU5FIGFmdGVyIHJlYWRpbmcgYQoJY2FycmlhZ2UgcmV0dXJuIGFmdGVyIGEgbWFjcm8gbmFtZS4KCjIwMDAtMDItMDcgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBpMzg2L2Jlb3MtZWxmLmg6IChBU01fSURFTlRJRllfR0NDKTogRGVmaW5lIHRvIG5vdGhpbmcKCXNvIHRoZSBnY2MyX2NvbXBpbGVkIHN5bWJvbCBkb2Vzbid0IGNvbmZ1c2UgQmVPUyBkZWJ1Z2dlcnMuCgoyMDAwLTAyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChkZXBzX291dHB1dCk6IENvdW50IHNwYWNlcnMgaW4gZGVwc19jb2x1bW4uCgoyMDAwLTAyLTA3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoaW5pdGlhbGl6ZV9kZXBlbmRlbmN5X291dHB1dCk6IElmIHRoZXJlIGlzIG5vCglzdWZmaXgsIGRvbid0IHRyeSB0byBsb29rIGZvciBrbm93biBzdWZmaXhlcy4gIFVzZSBzdHJyY2hyLgoJKGNwcF9zdGFydF9yZWFkKTogUmVtb3ZlIGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbi4KCk1vbiBGZWIgIDcgMTg6MzY6NDEgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZSk6IE5ldyBhcmd1bWVudAoJcHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5LgoJKGV4cGFuZF9jYWxsKTogdXBkYXRlIGNmdW4tPnByZWZlcnJlZF9zdGFja19ib3VuZGFyeSwgdXBkYXRlIGNhbGwgb2YKCWNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZQoJKGVtaXRfbGlicmFyeV9jYWxsKTogSW5jcmVhdGUgY2Z1bi0+cHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5Cgl0byBQUkVGRVJSRURfU1RBQ0tfQk9VTkRBUlkKCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoYWxsb2NhdGVfZHluYW1pY19zdGFja19zcGF2ZSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogU2V0CgljZnVuLT5wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogQWRkIHByZWZlcnJlZF9zdGFja19ib3VuZGFyeSBmaWVsZC4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBVcGRhdGUKCWNmdW4tPnByZWZlcnJlZF9zdGFja19ib3VuZGFyeSBhbmQgY2Z1bi0+c3RhY2tfYWxpZ25tZW50X25lZWRlZC4KCShjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IEFsaWduIGZyYW1lIHRvIHN0YWNrX2FsaWdubWVudF9uZWVkZWQgb25seS4KCSogaTM4Ni5jIChjb21wdXRlX2ZyYW1lX3NpemUpOiBVc2UgY2Z1bi0+cHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5LgoKMjAwMC0wMi0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKG15X3N0cmVycm9yLCBjcHBfZXJyb3IsIGNwcF9lcnJvcl93aXRoX2xpbmUsCgljcHBfZXJyb3JfZnJvbV9lcnJubywgY3BwX3dhcm5pbmcsIGNwcF93YXJuaW5nX3dpdGhfbGluZSwKCWNwcF9wZWR3YXJuLCBjcHBfcGVkd2Fybl93aXRoX2xpbmUsCgljcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBNb3ZlIHRvIGNwcGVycm9yLmMuCgkoY3BwX3ByaW50X2ZpbGVfYW5kX2xpbmUsIHZfY3BwX2Vycm9yLCB2X2NwcF93YXJuaW5nLAoJdl9jcHBfZXJyb3Jfd2l0aF9saW5lLCB2X2NwcF93YXJuaW5nX3dpdGhfbGluZSwKCWNwcF9tZXNzYWdlX2Zyb21fZXJybm8sIGNwcF9wZXJyb3Jfd2l0aF9uYW1lKTogRGVsZXRlLgoKCSogY3BwZXJyb3IuYyAoY3BwX3ByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBUYWtlIHN0YXJ0aW5nCglidWZmZXIgYXMgYXJndW1lbnQuCgkoY3BwX2ZpbGVfbGluZV9mb3JfbWVzc2FnZSk6IFJlbmFtZSB0byBjcHBfcHJpbnRfZmlsZV9hbmRfbGluZS4KCSh2X2NwcF9tZXNzYWdlKTogTm93IGNhbGxlZCBkaXJlY3RseSBieSBhbGwgZW50cnkgcG9pbnRzLgoJUmVtb3ZlIC0xIGNhc2UuCgkoY3BwX3BmYXRhbF93aXRoX25hbWUsIGNwcF9tZXNzYWdlKTogRGVsZXRlLgoJKGNwcF9ub3RpY2VfZnJvbV9lcnJubywgY3BwX2ljZSk6IE5ldyBmdW5jdGlvbnMuCgkoY3BwX25vdGljZSk6IElzIG5vdyBmb3IgcmVwb3J0aW5nIGVycm9yIGNvbmRpdGlvbnMsIGp1c3QKCXdpdGhvdXQgYW4gYXNzb2NpYXRlZCBmaWxlLgoJKGNwcF9lcnJvciwgY3BwX2Vycm9yX3dpdGhfbGluZSk6IERvbid0IGRvIGFueXRoaW5nIGlmCglvcHRzLT5pbmhpYml0X2Vycm9ycyBpcyBvbi4KCShjcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBUYWtlIGNvbHVtbiBhcmd1bWVudCBhbHNvLgoKCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGVzIG9mIGV4cG9ydGVkIGZ1bmN0aW9ucy4KCShzdHJ1Y3QgY3BwX29wdGlvbnMpOiBBZGQgaW5oaWJpdF9lcnJvcnMuCgoJKiBjcHBhbGxvYy5jLCBjcHBmaWxlcy5jOiBVc2UgZnByaW50ZiBub3QgY3BwX25vdGljZSBmb3IKCW5vbi1lcnJvciBtZXNzYWdlcy4gIEluY2x1ZGUgaW50bC5oLgoKCSogY3BwaW5pdC5jLCBjcHBtYWluLmM6IExpa2V3aXNlLiAgQWxzbywgdXNlCgljcHBfbm90aWNlX2Zyb21fZXJybm8gaW5zdGVhZCBvZiBjcHBfcGVycm9yX3dpdGhfbmFtZSBvcgoJY3BwX3BmYXRhbF93aXRoX25hbWUsIGFuZCBjcHBfbm90aWNlIGluc3RlYWQgb2YgY3BwX21lc3NhZ2UuCgoJKiBjcHBleHAuYywgY3BwaGFzaC5jLCBjcHBpbml0LmMsIGNwcGxpYi5jOiBVc2UgY3BwX2ljZSB0bwoJcmVwb3J0IGludGVybmFsIGVycm9ycy4KCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBTd2l0Y2ggYmNvcHkgdG8gbWVtY3B5LgoJR2l2ZSBjcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUgYSBkdW1teSBjb2x1bW4gYXJndW1lbnQuCgoJKiBjcHBsaWIuYyAoY29weV9yZXN0X29mX2xpbmUpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlOiBkb24ndAoJYmFpbCBvdXQgZWFybHkgaWYgd2UgaGl0IGEgbGluZSBjb21tZW50LgoKMjAwMC0wMi0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmxvd19kZWxldGVfaW5zbiwgbWFrZV9lZGdlLCByZW1vdmVfZWRnZSk6IEV4cG9ydC4KCSogYmFzaWMtYmxvY2suaDogRGVjbGFyZSB0aGVtLgoJKiBlbWl0LXJ0bC5oIChhY3RpdmVfaW5zbl9wKTogTmV3LgoJKG5leHRfYWN0aXZlX2luc24sIHByZXZfYWN0aXZlX2luc24pOiBVc2UgaXQuCgkqIHJ0bC5oOiBEZWNsYXJlIGl0LgoJKiBmdW5jdGlvbi5jIChlbWl0X3JldHVybl9pbnRvX2Jsb2NrKTogTmV3LgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBJbnNlcnQgcmV0dXJuIGluc25zIGluc3RlYWQKCW9mIGVwaWxvZ3VlcyB3aGVuIHBvc3NpYmxlLgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IFJlbW92ZSBjb2RlIHRvIGluc2VydCBhIHJldHVybiBpbnNuCglvbiB0aGUgZmFsbHRocnUgdG8gdGhlIGV4aXQgYmxvY2suCgoJKiBpMzg2LmMgKGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wKTogRmFpbCBmb3IgbGFyZ2UgcG9wZWQgYXJncwoJYW5kIGZvciBub24tZW1wdHkgc3RhY2sgZnJhbWVzLgoJKiBpMzg2Lm1kIChyZXR1cm4pOiBFeHBhbmQgdG8gcmV0dXJuLXBvcCBhcyBuZWVkZWQuCgoyMDAwLTAyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogQ2Fub25pY2FsaXplCgljb25zdGFudCB0byBvcDEgZm9yIHRlc3RpbmcuCgoyMDAwLTAyLTA2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoKmxkaV9vbl9vdmVyZmxvdyk6IE5ldyBwYXR0ZXJuLgoJKGZpeHVuc190cnVuY3FmcWkyKTogVXNlIGl0LgoKMjAwMC0wMi0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaXg4Nl9hZ2lfZGVwZW5kYW50KTogSGFuZGxlIHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2sKCWFzIGEgVFlQRV9MRUEgaW5zbi4KCgkqIGkzODYubWQgKHdpZGVuaW5nIGFuZCBwZWVwaG9sZXMpOiBNYXNrIHRoZSBjb25zdGFudCBpbnN0ZWFkIG9mCgl1c2luZyBnZW5fbG93cGFydC4KCjIwMDAtMDItMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfYW5kX3ByZXNjYW4pIFtjYXNlIFNQRUNDQVNFX1FVRVNUSU9OXTogQnVtcAoJaW5wdXQgcG9pbnRlciBiZWZvcmUgcG9zc2libHkgYnJhbmNoaW5nIG9mZiB0byB0aGUgYmFja3NsYXNoCgljb2RlLgoJKiBjcHBoYXNoLmMgKG1hY3JvZXhwYW5kKTogQ29ycmVjdGx5IGRlbGV0ZSBcciBlc2NhcGVzIHdoZW4KCXN0cmluZ2lmeWluZyBwYXJhbWV0ZXJzLgoJKiBjcHBsaWIuYyAoY29weV9yZXN0X29mX2xpbmUpOiBHbyBkaXJlY3RseSB0byBza2lwX2Jsb2NrX2NvbW1lbnQKCWlmIHdlIGNhbjsgYmFpbCBvdXQgZWFybHkgaWYgd2UgaGl0IGEgbGluZSBjb21tZW50LgoJKGhhbmRsZV9kaXJlY3RpdmUpOiBUcmVhdCAnIyAxMjMnIGluIGFuIC5TIGZpbGUganVzdCBsaWtlCgknIyA8cHVuY3R1YXRpb24+Jy4gIERpc2NhcmQgdGhlIHNoaWZ0ZWQgJyMnIGlmIHdlIGhpdCAnI1xuJy4KCVJldHVybiAxIGZvciAnIyBub3RfYV9kaXJlY3RpdmUnLgoJKGdldF9kaXJlY3RpdmVfdG9rZW4pOiBQb3AgbWFjcm8gYnVmZmVycyBoZXJlLCBzbyB0aGF0CgljcHBfZ2V0X3Rva2VuIGNhbid0IHNuZWFraWx5IG1vdmUgcGFzdCBhIG5ld2xpbmUuCglBZGQgc2FuaXR5IGNoZWNrcy4KCShjcHBfZ2V0X3Rva2VuKTogZ290byByYW5kb21jaGFyIGlmIGhhbmRsZV9kaXJlY3RpdmUgcmV0dXJucyAwLgoKCSogY3BwYWxsb2MuYzogVXBkYXRlIGNvcHlyaWdodC4KCSogY3BwbGliLmM6IE1lcmdlIGFsbCB0aGUgc3RhdGljIGZ1bmN0aW9uIHByb3RvdHlwZXMgaW50byBvbmUKCWJsb2NrLgoJKiBjcHBsaWIuaDogUmVtb3ZlICNpZiAwIGJsb2NrLgoKCSogY3BwZXJyb3IuYzogUmVtb3ZlICNpZmRlZiBFTUFDUyBibG9jay4KCSogY3BwbWFpbi5jOiBMaWtld2lzZS4KCSogY3BwaGFzaC5jOiBSZW1vdmUgI2lmIDAgYmxvY2tzLgoJKiBjcHBpbml0LmM6IFJlbW92ZSAjaWYgMCBibG9ja3MsIGFuZCB0aGUgLWxpbnQgb3B0aW9uLgoJKiBjcHBsaWIuYzogUmVtb3ZlICNpZiAwIGJsb2NrcyBhbmQgY29kZSByZWZlcmVuY2luZwoJcGNwX2luc2lkZV9pZiBvciBmb3JfbGludC4gIFJlbW92ZSBkdXBsaWNhdGUgZXJyb3IgbWVzc2FnZS4KCUZpeCBlcnJvciBtZXNzYWdlcyBmb3IgI2Vsc2UgYWZ0ZXIgI2Vsc2Ugb3IgI2VsaWYuICBSZWZvcm1hdC4KCVJlbW92ZSBhcmNoYWljIFRPRE8gbGlzdC4KCSogY3BwbGliLmg6IFJlbW92ZSBwY3BfaW5zaWRlX2lmIGFuZCBmb3JfbGludCBmbGFncy4KCjIwMDAtMDItMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGkzODYvb3NmMWVsZi5oOiBBZGQgbWlzc2luZyBiYWNrc2xhc2ggdG8gbXVsdGlsaW5lIHN0cmluZy4KCjIwMDAtMDItMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxvbmdsb25nLmggW3NwYXJjXSAodWRpdl9xcm5uZCk6IEF2b2lkIHN0cmluZ2lmeWluZyBtYWNybyBhcmcuCgoyMDAwLTAyLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYy1jb21tb24ubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkuCgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIGV4cHIuaC4KCgkqIGMtcHJhZ21hLmMgKG1hcmtfYWxpZ25fc3RhY2spOiBBZGQgcHJvdG90eXBlLgoKCSogY2FsbGVyLXNhdmUuYyAoYWRkX3N0b3JlZF9yZWdzKTogTGlrZXdpc2UuCgoJKiBjb21iaW5lLmMgKHJlY29yZF9wcm9tb3RlZF92YWx1ZSk6IExpa2V3aXNlLgoKCSogaTM4Ni5jIChpeDg2X3NjaGVkX3Jlb3JkZXJfcGVudGl1bSwgaXg4Nl9zY2hlZF9yZW9yZGVyX3Bwcm8pOgoJTGlrZXdpc2UuCgoJKiBjcHBpbml0LmMgKG5ld19wZW5kaW5nX2RlZmluZSk6IExpa2V3aXNlLgoKCSogY3BwbGliLmMgKHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQpOiBMaWtld2lzZS4KCgkqIGR3YXJmMm91dC5jIChzYXZlX3J0eCwgc3BsaWNlX2NoaWxkX2RpZSwgcmV2ZXJzZV9kaWVfbGlzdHMsCglBVF9jbGFzcywgQVRfZmxhZywgQVRfaW50LCBBVF91bnNpZ25lZCwgQVRfc3RyaW5nLCBBVF9yZWYsIEFUX2xvYywKCUFUX2FkZHIsIEFUX2xibCwgZ2V0X0FUX3JlZiwgZnJlZV9BVCwgZnJlZV9kaWUsIGxvY2FsX3Njb3BlX3AsCgljbGFzc19zY29wZV9wKTogTGlrZXdpc2UuCgoJKiBkd2FyZjJvdXQuaCAoZHdhcmYyb3V0X3NldF9kZW1hbmdsZV9uYW1lX2Z1bmMsCglkd2FyZjJvdXRfYWRkX2xpYnJhcnlfdW5pdF9pbmZvKTogTGlrZXdpc2UuCgoJKiBnZ2MuaCAoZ2djX3BhZ2VfcHJpbnRfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoKCSogaGFpZmEtc2NoZWQuYyAocHJvcGFnYXRlX2RlcHMpOiBMaWtld2lzZS4KCgkqIHJlZy1zdGFjay5jIChuZXh0X2ZsYWdzX3VzZXIsIHJlY29yZF9sYWJlbF9yZWZlcmVuY2VzKTogTGlrZXdpc2UuCgoJKiBydGwuaCAoc2V0X3N0YWNrX2NoZWNrX2xpYmZ1bmMpOiBMaWtld2lzZS4KCgkqIHRvcGxldi5oIChzZXRfZmF0YWxfZnVuY3Rpb24pOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jIChzZXRfZmF0YWxfZnVuY3Rpb24pOiBEZWxldGUgcHJvdG90eXBlLgoKCSogZGlhZ25vc3RpYy5jOiBEZWNvbnN0aWZ5IGZ1bmN0aW9ucyByZXR1cm5pbmcgbWFsbG9jJ2VkIHB0cnMuCgoyMDAwLTAyLTA1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBnaW5jbHVkZS9wcGMtYXNtLmggKEZVTkNfU1RBUlQpOiBVc2UgVVNFUl9MQUJFTF9QUkVGSVguCgkoRlVOQ19FTkQpOiBMaWtld2lzZS4KCjIwMDAtMDItMDUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNhbGxlci1zYXZlLmM6IEluY2x1ZGUgdG1fcC5oLgoKMjAwMC0wMi0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5hKTogQWRkICQoTElCR0NDMSkgdG8gbGliZ2NjLmEgYWZ0ZXIgJChMSUJHQ0MyKS4KCjIwMDAtMDItMDQgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY2NjcC5jIChtYWluKTogQ2hlY2sgJ2RpcicgZm9yIGEgTlVMTCBwb2ludGVyIGJlZm9yZSBwYXNzaW5nCglpdCB0byBzdHJjbXAuCgoyMDAwLTAyLTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiByZWNvZy5oOiBSZW1vdmUgTk9fTURfUFJPVE9UWVBFUyBpZmRlZnMuCgkqIGdlbmZsYWdzLmM6IFVzZSB0aGUgbWF4X29wZXJhbmRfMSBsb2dpYyBmcm9tIGdlbmVtaXQuYyB0bwoJY2FsY3VsYXRlIGhvdyBtYW55IGFyZ3VtZW50cyBnZW5faW5zbiBwcm90b3R5cGVzIGhhdmUuICBSZW1vdmUKCU5PX01EX1BST1RPVFlQRVMgaWZkZWZzIGZyb20gdGhlIGdlbmVyYXRlZCBmaWxlLgoJKiBnZW5vdXRwdXQuYzogRG9uJ3QgZGVmaW5lIE5PX01EX1BST1RPVFlQRVMgaW4gdGhlIGdlbmVyYXRlZAoJZmlsZS4gIENhc3QgZ2VuX2luc24gaW5pdGlhbGl6ZXJzIHRvIGluc25fZ2VuX2ZuLgoJKiBjb25maWcvYWxwaGEvdm1zLmg6IERvbid0IGRlZmluZSBOT19NRF9QUk9UT1RZUEVTLgoJKiBnY2MudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gb2YgTk9fTURfUFJPVE9UWVBFUy4KCjIwMDAtMDItMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoSERSKTogQWRkIG1hY2huYW1lLmguCgkoY2xlYW4pOiBMaWtld2lzZS4KCjIwMDAtMDItMDUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKGM0eF9jb21wYXJlX29wMCwgYzR4X2NvbXBhcmVfb3AxKTogTW92ZSAuLi4KCShjNHhfcmVnY2xhc3NfbWFwLCBjNHhfY2FsbGVyX3NhdmVfbWFwLCBjNHhfcnB0c19jeWNsZXMpOiBEaXR0by4KCShjNHhfY3B1X3ZlcnNpb24pOiBEaXR0by4KCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmg6IC4uLiBoZXJlLgoKMjAwMC0wMi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUpOiBEb24ndCBjYWxsCglnZW5fYWJzdHJhY3RfZnVuY3Rpb24gb24gb3VyIGNvbnRleHQgaWYgd2UncmUgYSBuZXN0ZWQgZnVuY3Rpb24uCgoyMDAwLTAyLTA1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoZml4dW5zX3RydW5jcWZxaTIpOiBSZXdyaXRlLgoJKiBjb25maWcvYzR4L2xpYmdjYy5TICh1Zml4X3RydW5jcWZoaTJuKTogRml4LgoKMjAwMC0wMi0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZ2VuZml4ZXMobWFjaG5hbWUuaCk6CglNb3ZlIHRoZSBmdW5jdGlvbmFsaXR5IGZyb20gZ2VuLW1hY2hpbmUuaCBpbnRvIHRoaXMgZmlsZS4KCVVOZGVmIE1OX05BTUVfUEFUIGlmIHRoZXJlIGFyZSBubyBuYW1lcyB0byBjaGFuZ2UuCglBbHNvLCBiZSBhIGxpdHRsZSBraW5kZXIgd2hlbiBBdXRvR2VuIGlzIG5vdCBwcmVzZW50LgoKCSogZml4aW5jL01ha2VmaWxlLmluKG1hY2huYW1lLmgpOgoJQ2hhbmdlIHRoZSBnZW5lcmF0aW9uIHJ1bGUgdG8gdXNlIGdlbmZpeGVzLgoKCSogZml4aW5jL2ZpeGZpeGVzLmMobWFjaGluZV9uYW1lKToKCW1hY2hpbmVfbmFtZV9maXgncyBmdW5jdGlvbmFsaXR5IG5vdyBkZXBlbmRlbnQgdXBvbiB3aGV0aGVyCglNTl9OQU1FX1BBVCBpcyBkZWZpbmVkLgoKCSogZml4aW5jL2ZpeHRlc3RzLmMobWFjaGluZV9uYW1lKToKCWRpdHRvLgoKCSogZml4aW5jL2ZpeGxpYi5jKG1uX2dldF9yZWdleHBzKTogY29uZGl0aW9uYWwgb24gZGVmaW5pdGlvbgoJb2YgTU5fTkFNRV9QQVQuCgoJKiBmaXhpbmMvZml4bGliLmgobW5fZ2V0X3JlZ2V4cHMpOgoJZGl0dG8KCgkqIGZpeGluYy9nZW4tbWFjaGluZS5oOiBERUxFVEVECgoyMDAwLTAyLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoU0FWRV9SRUdTX0ZJUlNUKTogUmVtb3ZlLgoJKGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBIYW5kbGUgb25seSBTQVZFX1JFR1NfRklSU1QgbW9kZS4KCShpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuICBVc2UgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjay4KCShpeDg2X2VtaXRfcmVzdG9yZV9yZWdzKTogUmVtb3ZlLgoJKGl4ODZfZW1pdF9lcGlsb2d1ZV9lc3BfYWRqdXN0bWVudCk6IFVzZSBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrCgl3aGVuIGEgZnJhbWUgcG9pbnRlciBpcyBpbiB1c2UuCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBIYW5kbGUgb25seSBTQVZFX1JFR1NfRklSU1QgbW9kZS4gIFVzZSBtb3YKCWluc3RlYWQgb2YgcG9wIHRvIHJlc3RvcmUgYSByZWdpc3RlciB3aGVuIHByb2ZpdGFibGU7IGVtaXQgbGVhdmUKCXdoZW4gcHJvZml0YWJsZS4KCShpeDg2X2F0dHJfbGVuZ3RoX2RlZmF1bHQpOiBIYW5kbGUgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjawoJYXMgYSBUWVBFX0xFQSBpbnNuLgoJKGl4ODZfYWRqdXN0X2Nvc3QpOiBIYW5kbGUgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjayBhcyBUWVBFX0FMVS4KCSogaTM4Ni5tZCAocHJvbG9ndWVfYWxsb2NhdGVfc3RhY2spOiBSZW1vdmUuCgkoZXBpbG9ndWVfZGVhbGxvY2F0ZV9zdGFjayk6IFJlbW92ZS4KCShwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrKTogTmV3LgoKMjAwMC0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGRpZGRsZV9yZXR1cm5fdmFsdWUpOiBSZXdvcmsgdG8gdXNlIGEgY2FsbGJhY2sgZnVuY3Rpb24uCglVc2UgY3VycmVudF9mdW5jdGlvbl9yZXR1cm5fcnR4IGlmIGl0J3MgYmVlbiBzZXQgdXAuCgkoZG9fY2xvYmJlcl9yZXR1cm5fcmVnLCBjbG9iYmVyX3JldHVybl9yZWdpc3Rlcik6IE5ldy4KCShkb191c2VfcmV0dXJuX3JlZywgdXNlX3JldHVybl9yZWdpc3Rlcik6IE5ldy4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogVXNlIHRoZW0uCgkqIHN0bXQuYyAoZXhwYW5kX251bGxfcmV0dXJuKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmg6IERlY2xhcmUgdGhlbS4KCSogZmxvdy5jIChtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBVc2UgZGlkZGxlX3JldHVybl92YWx1ZS4KCShtYXJrX3JlZyk6IENoYW5nZSBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUgZm9yIGNhbGxiYWNrLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IFJldmVydCAxOSBKYW4gY2hhbmdlLgoKRnJpIEZlYiAgNCAyMDoyNTo0MiAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiB0bS50ZXhpIChWYWx1ZXMgaW4gUmVnaXN0ZXJzKTogRml4IHR5cG86ICJmbyIgImZvciIuCgkoTWlzYyk6IFNheSB0aGUgc2NoZWR1bGVyLCBub3QgdGhlIEhhaWZhIHNjaGVkdWxlci4KCjIwMDAtMDItMDQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSoganVtcC5jIChtYXJrX2p1bXBfbGFiZWwpOiBBZGQgaW5fbWVtIHBhcmFtLCBjaGVjayBTWU1CT0xfUkVGcwoJd2hlbiBpbl9tZW0gaXMgc2V0LiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoKMjAwMC0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYvb3BlbmJzZC5oIChJTlRfQVNNX09QKTogRGVmaW5lLgoKRnJpIEZlYiAgNCAxMDo1MTozMCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiB0bS50ZXhpOiBGaXggdmFyaW91cyB0eXBvcy4KClRodSBGZWIgIDMgMTc6MTc6MzIgMjAwMCAgU3RldmUgRWxsY2V5IDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9wYS9wYS1ocHV4MTEuaCAoTElCX1NQRUMpOiBDb3JyZWN0IHR5cG8gaW4gIXAgY2FzZS4KCShNRF9TVEFSVEZJTEVfUFJFRklYXzEpOiBOZXcgbWFjcm8uCgpUaHUgRmViICAzIDE1OjA4OjEzIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZzdHJzaSwgY2xyc3Ryc2kpOiBTdXBwb3J0IHZhcmlhYmxlIHNpemVkIGNvcGllcywgYWxpZ24KCWRlc3RpbmF0aW9uIHdoZW4gbmVlZGVkLgoJKHN0cm1vdnNpLCBzdHJzZXRzaSk6IE5ldyBleHBhbmRlci4KCShzdHJtb3ZzaV8xLCBzdHJzZXRzaV8xKTogTmV3IHBhdHRlcm4uCgkqIGkzODYuaCAoTUFTS19OT19BTElHTl9TVFJPUCwgTUFTS19JTkxJTkVfQUxMX1NUUk9QLAoJVEFSR0VUX0FMSUdOX1NUUklOR09QUywgVEFSR0VUX0lOTElORV9BTExfU1RSSU5HT1BTKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpIEFkZCBhbGlnbi1zdHJpbmdvcHMgYW5kIGlubGluZS1hbGwtc3RyaW5nb3BzLgoJKiBpbnZva2UudGV4aSAoYWxpZ24tc3RyaW5nb3BzLCBpbmxpbmUtYWxsLXN0cmluZ29wcyk6IERvY3VtZW50LgoKV2VkIEZlYiAgMiAyMzowNDo0NyAyMDAwICAgS3Jpc3RlciBXYWxmcmlkc3NvbiA8Y2F0b0BkZi5sdGguc2U+CgoJKiBpMzg2L25ldGJzZC5oIChJTlRfQVNNX09QKTogRGVmaW5lLgoKMjAwMC0wMi0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKGNwcF9yZWFkZXIpOiBBZGQgbmV3IGZsYWcsIG5vX2RpcmVjdGl2ZXMuCgkqIGNwcGhhc2guYyAobWFjYXJnKTogU2V0IGl0LgoJKiBjcHBsaWIuYyAoaGFuZGxlX2RpcmVjdGl2ZSk6IElmIG5vX2RpcmVjdGl2ZXMgaXMgb24gYW5kIHdlCglmaW5kIGEgZGlyZWN0aXZlLCBpc3N1ZSBhbiBlcnJvciBhbmQgZGlzY2FyZCB0aGUgbGluZS4KCldlZCBGZWIgIDIgMTM6MDc6MTAgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBEZWxldGUgJ0UnIGNoZWNrIGZvcgoJRlAgY29uc3RhbnRzLiAgQWRkICEgVEFSR0VUX0ZQVSBjaGVjayBmb3IgRlAgY29uc3RhbnRzLgoKMjAwMC0wMi0wMiAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYmFzaWNfYmxvY2tzKTogRG9uJ3Qga2lsbCBsYWJlbF92YWx1ZV9saXN0CgloZXJlLgoJKGNsZWFudXBfY2ZnKTogS2lsbCBpdCBoZXJlLgoKV2VkIEZlYiAgMiAwODoxMjozMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9maWVsZCk6IEVuc3VyZSBBTElHTiBpcyBubyBzdHJpY3RlciB0aGFuIHRoZQoJYWxpZ25tZW50IG9mIEVYUC4KCjIwMDAtMDItMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9pbnNuKTogUGFydGlhbGx5IHJldmVydCAxOSBKYW4gY2hhbmdlOwoJZG9uJ3QgY29udmVydCB1bnVzZWQgY29kZSBsYWJlbHMgdG8gbm90ZXMgYXQgLU8wLgoKMjAwMC0wMi0wMiBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gcmVidWlsZF9qdW1wX2xhYmVscyBhZnRlcgoJc3BsaXRfYWxsX2luc25zIHRvIHJlY3JlYXRlIFJFR19MQUJFTCBub3RlcyBmb3IgZmxvdzIgcGFzcy4KCjIwMDAtMDItMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2LmMgKGdlbmVyYWxfbm9fZWxpbV9vcGVyYW5kKTogTmV3LgoJKG5vbm1lbW9yeV9ub19lbGltX29wZXJhbmQpOiBOZXcuCgkoaXg4Nl9leHBhbmRfbW92ZSk6IENvcHkgZWxpbWluYWJsZSBvcGVyYW5kcyBiZWZvcmUgYSBwdXNoLgoJKiBpMzg2LXByb3Rvcy5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgkqIGkzODYuaCAoQ0FOX0VMSU1JTkFURSk6IFNpbXBsaWZ5LgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogaTM4Ni5tZCAocHVzaCBpbnNucyk6IERvbid0IGFsbG93IGVsaW1pbmFibGUgcmVnaXN0ZXIgb3BlcmFuZHMuCgoyMDAwLTAyLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBGb2xsb3cgZXhwYW5kX2Z1bmN0aW9uX2VuZCBhbmQKCXJlcGxhY2UgQkxLbW9kZSB3aXRoIERFQ0xfUlRMJ3MgbW9kZS4KCjIwMDAtMDItMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZyYW1lLmMgKGZpbmRfZmRlKTogQ29udmVydCBmb3IgbG9vcCB0byBkby13aGlsZSBzbyBjb21waWxlcgoJc2VlcyBpdCdzIGFsd2F5cyBleGVjdXRlZCBhdCBsZWFzdCBvbmNlLgoJKiBsaWJnY2MyLmMgKEJCSU5CVUZTSVpFKTogS2lsbC4KCShfX2JiX2luaXRfcHJnKTogVXNlIGZnZXRzLgoJKF9fYmJfZXhpdF90cmFjZV9mdW5jKTogRG9uJ3QgcGFzdGUgc3RyaW5ncy4KCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogSW5pdGlhbGl6ZSB1bnJvbGxfdHlwZSwgbm90Cgl1bnJvbGxfbnVtYmVyLCBhbmQgdHdlYWsgbG9naWMgdG8gbWF0Y2guCgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2ludF9tb3ZjYyk6IEFkZCBleHBsaWNpdCAncmV0dXJuIDAnIGluCglhbGwgZmFpbHVyZSBwYXRocy4KCShpeDg2X2ZsYWdzX2RlcGVuZGFudCk6IExpa2V3aXNlLiAgRGlzZW50YW5nbGUgY29udHJvbCBmbG93LgoJKGl4ODZfc2NoZWRfcmVvcmRlcik6IEJyZWFrIGd1dHMgb3V0IHRvCglpeDg2X3NjaGVkX3Jlb3JkZXJfcGVudGl1bSBhbmQgaXg4Nl9zY2hlZF9yZW9yZGVyX3Bwcm8uCgkoaXg4Nl9zY2hlZF9yZW9yZGVyX3Bwcm8pOiBJbml0aWFsaXplIHBhaXIyIGFuZCBpbnNucCBiZWZvcmUKCWFueSBwb3NzaWJsZSB1c2UuCgoJKiBpMzg2LmggKE1BQ0hJTkVfU1RBVEVfU0FWRSwgTUFDSElORV9TVEFURV9SRVNUT1JFKTogRG9uJ3QKCXVzZSBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gIERvbid0IHNhdmUgYW5kIHJlc3RvcmUgZXNpLgoKCSogZml4aW5jL01ha2VmaWxlLmluIChmaXhpbmNsLnNoKTogRG9uJ3QgZGVwZW5kIG9uIGluY2xoYWNrLmRlZi4KCShtYWNobmFtZS5oKTogUmVtb3ZlIHNjcmlwdCB0byBzZXBhcmF0ZSBmaWxlLiAgVXNlIHR3by1zdGVwCglzZXF1ZW5jZSBzbyB0YXJnZXQgaXMgbm90IGNyZWF0ZWQgaWYgc2NyaXB0IGZhaWxzLgoJKiBmaXhpbmMvZ2VuLW1hY2huYW1lLmg6IE5ldyBmaWxlLiAgSGFuZGxlIGNhc2Ugd2hlcmUgbm8gbm9uLXJlc2VydmVkCglpZGVudGlmaWVycyBhcmUgZGVmaW5lZC4KCSogZml4aW5jL2ZpeGxpYi5jIChtbl9nZXRfcmVnZXhwcyk6IFJldHVybiBhIGZsYWc6IGlmIE1OX05BTUVfUEFUIGlzCglhbiBlbXB0eSBzdHJpbmcsIG1hY2hpbmVfbmFtZSBkb2Vzbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYXQKCWFsbC4KCShpc19jeHhfaGVhZGVyKTogQWRkIG1vcmUgY2FzZXMgdG8gcmVnZXhwLgoJKiBmaXhpbmMvZml4bGliLmg6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGZpeGluYy9maXh0ZXN0cy5jLCBmaXhpbmMvZml4Zml4ZXMuYzogVXBkYXRlIGNhbGxlcnMgb2YKCW1uX2dldF9yZWdleHBzLgoJKiBmaXhpbmMvZml4aW5jbC5jOiBEZWZpbmUgTk9fQk9HT1NJVFkuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChub19kb3VibGVfc2xhc2gsIGVsc2VfZW5kaWZfbGFiZWwpOiBJZmRlZiBvdXQuCgkoaHBfc3lzZmlsZSk6IEFkZCBtaXNzaW5nIGNvbW1hLgoJKG1hdGhfZXhjZXB0aW9uKTogUHV0IHRoZSB3cmFwcGVyIGlmZGVmcyBhdCB0aGUgYmVnaW5uaW5nIGFuZAoJdGhlIGVuZCBvZiB0aGUgZmlsZS4KCSogZml4aW5jL2ZpeGluY2wueCwgZml4aW5jL2luY2xoYWNrLnNoOiBSZWdlbmVyYXRlLgoKMjAwMC0wMi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNwYXJjLmMgKGZwX3plcm9fb3BlcmFuZCk6IFR1cm4gaW50byBhIG5vcm1hbCBwcmVkaWNhdGUuCglVc2UgQ09OU1QwX1JUWC4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCSogc3BhcmMuaCwgc3BhcmMtcHJvdG9zLmg6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCSogc3BhcmMubWQgKGZwIG1vdiBpbnNucyk6IFVzZSBmcF96ZXJvX29wZXJhbmQgZGlyZWN0bHkKCXdoZXJlIGFwcGxpY2FibGUuCgpXZWQgRmViICAyIDAyOjU5OjQ1IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHRtLnRleGkgKFZhbHVlcyBpbiBSZWdpc3RlcnMpOiBGaXggdHlwbyBpbiBIQVJEX1JFR05PX05SRUdTCglleGFtcGxlLgoKMjAwMC0wMi0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHNwZWNzLnJlYWR5KTogTmV3IHRhcmdldC4KCShmaXhpbmMuc2gpOiBEZXBlbmQgb24gYHNwZWNzLnJlYWR5JyBpbnN0ZWFkIG9mIGBzcGVjcycuCgoyMDAwLTAyLTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmaXhpbmMuaXJpeDogVXNlIHVuaXF1ZSBmaWxlbmFtZXMgZm9yIHdyaXRpbmcgaW50byAvdG1wLAoJKiBmaXhpbmMucHR4OiBMaWtld2lzZS4KCSogZml4aW5jLnNjbzogTGlrZXdpc2UuCgkqIGZpeGluYy5zdnI0OiBMaWtld2lzZS4KCSogZml4aW5jLndpbm50OiBMaWtld2lzZS4KCjIwMDAtMDItMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRzeXN0ZW0uaDogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjMi5hLCBzdG1wLW11bHRpbGliLCBjcnRiZWdpbi5vLCBjcnRlbmQubywKCXMtY3J0Uyk6IERlcGVuZCBvbiB0c3lzdGVtLmguCgoJKiBjcnRzdHVmZi5jOiBJbmNsdWRlIHRzeXN0ZW0uaC4KCSogZnJhbWUuYzogTGlrZXdpc2UuCgkqIGxpYmdjYzIuYzogTGlrZXdpc2UuCgpUdWUgRmViICAxIDE5OjUzOjI3IENFVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBFeHBhbmQgZm9yIHZhcmlhYmxlIHNpemVkCglsZW5ndGhzIHRvby4KCjIwMDAtMDItMDEgIERhdmlkIEJpbGxpbmdodXJzdCA8RGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbS5hdT4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKFNVQlRBUkdFVF9BU01fU1BFQykgOiBEZWZhdWx0IElTQSBiYXNlZAoJb24gQUJJLgoKVHVlIEZlYiAgMSAwMDo1Nzo0MCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBkd2FyZm91dC5jIChTSE9SVF9UWVBFX1NJWkUpOiBDb3JyZWN0IGRlZmF1bHQuCgoJKiB0bS50ZXhpIChUeXBlIExheW91dCk6IENvcnJlY3QgZW50cnkgZm9yIENIQVJfVFlQRV9TSVpFLgoKMjAwMC0wMS0zMSAgQ2hhbmRyYSBDaGF2dmEgPGNjaGF2dmFAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpIFtIQVZFX2NjMF06IFRyeWluZyB0byBjaGVjayB0aGUgbWlzc2VkCgljYXNlIDMtPjIgY29tYmluaW5nIChjb21iaW5pbmcgd2l0aCBzcGxpdHRpbmcpIGluIHdoaWNoIDIgaXMgQ0MwCglzZXR0ZXIvdXNlciBhbmQgMyBpcyB1c2VyLiBUaGUgcmVzdCBvZiBjYXNlcyAyLT4xIGFuZCAzLT4yIGFyZQoJY2hlY2tlZCBhdCB0aGUgYmVnaW5pbmcgb2YgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGFpZCBvZiBjYWxsaW5nCglmdW5jdGlvbiAnY2FuX2NvbWJpbmVfcCcuCgoyMDAwLTAxLTMxICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QHJlZGhhdC5jb20+CgoJKiBjY2NwLmMgKHN0cnVjdCBhcmdkYXRhKTogUmVkZWNsYXJlICduZXdsaW5lcycgZmllbGQgYXMgJ2ludCcuCgoyMDAwLTAxLTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAocmVkaXJlY3RfanVtcCk6IE1vdmUgYSBOT1RFX0lOU05fRlVOQ1RJT05fRU5EIHRvIHRoZQoJbmV3IGxhYmVsLgoKMjAwMC0wMS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2Fuc2lkZWNsLmggKFBST1RPLCBWUFJPVE8sIFBWUFJPVE8pOiBEZWxldGUgbWFjcm9zLgoKCSogc2JpdG1hcC5oIChzYml0bWFwX2ZpcnN0X3NldF9iaXQsIHNiaXRtYXBfbGFzdF9zZXRfYml0KToKCVBST1RPIC0+IFBBUkFNUy4KCjIwMDAtMDEtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGkzODYvMzg2YnNkLmgsIGkzODYvYmVvcy1wZS5oLCBpMzg2L2JzZDM4Ni5oLCBpMzg2L2NydGRsbC5oLAoJaTM4Ni9jeWd3aW4uaCwgaTM4Ni9kZ3V4LmgsIGkzODYvZGpncHAtcnRlbXMuaCwgaTM4Ni9kamdwcC5oLAoJaTM4Ni9mcmVlYnNkLmgsIGkzODYvZ251LmgsIGkzODYvaTM4Ni1hb3V0LmgsIGkzODYvaTM4Ni1jb2ZmLmgsCglpMzg2L2kzODYtaW50ZXJpeC5oLCBpMzg2L2kzODZlbGYuaCwgaTM4Ni9saW51eC5oLCBpMzg2L2x5bngtbmcuaCwKCWkzODYvbHlueC5oLCBpMzg2L21hY2guaCwgaTM4Ni9taW5ndzMyLmgsIGkzODYvbW9zcy5oLAoJaTM4Ni9uZXRic2QuaCwgaTM4Ni9uZXh0LmgsIGkzODYvb3BlbmJzZC5oLCBpMzg2L29zZjFlbGYuaCwKCWkzODYvcHR4NC1pLmgsIGkzODYvcnRlbXMuaCwgaTM4Ni9ydGVtc2VsZi5oLCBpMzg2L3Njby5oLAoJaTM4Ni9zZXF1ZW50LmgsIGkzODYvc3VuLmgsIGkzODYvc3lzdjQuaCwgaTM4Ni91d2luLmgsIGkzODYvdnN0YS5oLAoJaTM4Ni92eGkzODYuaCwgaTM4Ni93aW4tbnQuaCwgaTM4Ni93aW4zMi5oOgoJUmVtb3ZlIC1EaTM4NiAtQWNwdShpMzg2KSAtQW1hY2hpbmUoaTM4NikgZnJvbSBDUFBfUFJFREVGSU5FUy4KCgkqIGkzODYvb3NmMWVsZi5oLCBpMzg2L3Njb2RieC5oLCBpMzg2L3NlcS1zeXN2My5oLCBpMzg2L3N5c3Y1Lmg6CglBZGQgJShjcHBfY3B1KSB0byBDUFBfU1BFQy4KCgkqIGkzODYvb3NmMWVsZi5oLCBpMzg2L29zZmVsZi5oLCBpMzg2L29zZnJvc2UuaDoKCUFkZCAlKGNjMV9jcHUpIHRvIENDMV9TUEVDLgoKMjAwMC0wMS0yOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogQWNjZXB0IG9wdGlvbmFsIG51bWVyaWMgYXJndW1lbnQgdG8KCS1XZm9ybWF0IGFuZCBzZXQgd2Fybl9mb3JtYXQuCgkqIGMtY29tbW9uLmM6IERvbid0IGVtaXQgd2FybmluZyBhYm91dCBub24tY29uc3RhbnQgcHJpbnRmIGZvcm1hdAoJc3RyaW5nIHVubGVzcyB3YXJuX2Zvcm1hdCA+IDEuCgoyMDAwLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEubWQgKHJldHVybl9pbnRlcm5hbCk6IEFsbG93IGFmdGVyIHJlbG9hZCBvbmx5LgoKMjAwMC0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaXg4Nl9jb21wdXRlX2ZyYW1lX3NpemUpOiBPbWl0IHBhZGRpbmcxIGlmIHRoZQoJbG9jYWwgZnJhbWUgc2l6ZSBpcyB6ZXJvLgoKMjAwMC0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2V4cGFuZF9lcGlsb2d1ZSk6IERvbid0IGVtaXQgdGhlIHJldHVybiBpbnNuLgoJKiBhbHBoYS5oIChFUElMT0dVRV9VU0VTKTogTmV3LiAgTWFyayAkMjYgbGl2ZS4KCSogYWxwaGEubWQgKHJldHVybik6IFR1cm4gaW50byBhbiBleHBhbmRlci4KCShyZXR1cm5faW50ZXJuYWwpOiBEb24ndCB1c2UgJDI2LgoJKGVwaWxvZ3VlKTogRW1pdCB0aGUgcmV0dXJuIGluc24uCgoyMDAwLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEubWQgKG5lZ3RmMiwgYWJzdGYyKTogRml4IHdvcmQgb3JkZXIgdGhpbmtvLgoJKGV4dGVuZHNmdGYyKTogTmV3LgoJKHRydW5jdGZzZjIpOiBBdm9pZCBpbnRlcm1lZGlhdGUgcm91bmRpbmcgZXJyb3JzLgoKMjAwMC0wMS0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoZmluZF9wb3NpdGlvbik6IERyb3AgJ2NvbHAnIGFyZ3VtZW50LCByZXR1cm4gdGhlCgluZXcgbGluZSBiYXNlLgoJKHJlYWRfYW5kX3ByZXNjYW4pOiBBZGp1c3QgdG8gbWF0Y2guICBEb24ndCBldmVyIG1hbmlwdWxhdGUKCWxpbmUgb3IgbGluZV9iYXNlIGV4Y2VwdCB2aWEgZmluZF9wb3NpdGlvbi4KCjIwMDAtMDEtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcGFyc2UuaW46IEFwcGx5IFVscmljaCdzIGNoYW5nZXMgZnJvbSBjLXBhcnNlLnkuCgkqIGMtcGFyc2UueSwgb2JqYy9vYmpjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLmM6CglSZWdlbmVyYXRlLgoKMjAwMC0wMS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXJyb3IuYyAoY3BwX2ZpbGVfbGluZV9mb3JfbWVzc2FnZSk6IElmICdsaW5lJyBpcyB6ZXJvLAoJanVzdCBwcmludCAiPGNvbW1hbmQgbGluZT4iLiAgSWYgJ2ZpbGVuYW1lJyBpcyBudWxsIG9yIGFuCgllbXB0eSBzdHJpbmcsIHByaW50ICI8c3RkaW4+IiBmb3IgdGhlIGZpbGVuYW1lLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogRG9uJ3QgcHJpbnQgdGhlICdsb2NhdGlvbiBvZiB0aGUKCXByZXZpb3VzIGRlZmluaXRpb24nIG1lc3NhZ2UgaWYgd2UncmUgc3RpbGwgcGFyc2luZyB0aGUKCWNvbW1hbmQgbGluZS4KCShjcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBBbHdheXMgY2FsbAoJY3BwX2ZpbGVfbGluZV9mb3JfbWVzc2FnZS4KCjIwMDAtMDEtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IEZpeCB0eXBvLgoKMjAwMC0wMS0yOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jOiBBZGp1c3QgdmFyaWFibGUgbmFtZXMsIGNvbW1lbnRzLCBoZWxwIHN0cmluZ3MgdG8gYzk5LgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCSogYy1wYXJzZS55OiBMaWtld2lzZS4KCSogYy10cmVlLmg6IExpa2V3aXNlLgoJKiBjY2NwLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuaDogTGlrZXdpc2UuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4gIFJlY29nbml6ZSBvcHRpb25zIHdpdGggbmFtZXMgIio5OSIgYXMgd2VsbC4KCSogY3BwaW5pdC5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMjkgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGM0eC5oIChJTklUX1RBUkdFVF9PUFRBQlMpOiBBZGQgYWxsIG1pc3NpbmcgbG9jYWwgb3B0YWIgZW50cmllcy4KCSogYzR4LmM6IERlZmluZSB0aGUgb3B0YWIgcnR4IHZhbHVlcy4KCShjNHhfYWRkX2djX3Jvb3RzKTogQWRkIHRoZSBnZ2Mgcm9vdHMgZm9yIHRoZXNlIG9wdGFiIHJ0eCB2YWx1ZXMuCgkoYzR4X2VtaXRfbGliY2FsbCk6IFVzZSBuZXcgb3B0YWIgcnR4IHZhbHVlcy4KCShjNHhfZW1pdF9saWJjYWxsMyk6IExpa2V3aXNlLgoJKGM0eF9lbWl0X2xpYmNhbGxfbXVsaGkpOiBMaWtld2lzZS4KCSogYzR4LXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBmb3Igb3B0YWIgcnR4IHZhbHVlcyBhbmQgY2hhbmdlCglwcm90b3R5cGVzIGZvciBhYm92ZSBjNHhfZW1pdF9saWJjYWxsIGZ1bmN0aW9ucy4KCjIwMDAtMDEtMjkgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGM0eC5jIChjNHhfb3V0cHV0X2FzY2lpKTogUmVzdHJpY3QgbGluZSBsZW5ndGggb2Ygb3V0cHV0IHdoZW4gVEkKCXN5bnRheCBpcyB1c2VkLgoJKGM0eF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFVzZSByZWduYW1lcyBpbnRlYWQgb2YgZmxvYXRfcmVnX25hbWVzIHdoZW4KCVRJIHN5bnRheCBpcyB1c2VkLgoJKGM0eF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGM0eF9wcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGM0eC5oIChIT1NUX1dJREVfSU5UX1BSSU5UX0hFWCk6IFJlZGVmaW5lLgoJKiBjNHgubWQgKHNldF9oaWdoKTogRGlzYWJsZSBmb3IgVEFSR0VUX1RJLgoKMjAwMC0wMS0yOSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogYzR4LmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBDaGFuZ2UgdG8gcmVzdHJpY3QgdGhlIHJlbG9hZGluZwoJb2YgZnJhbWVwb2ludGVyICsgY29uc3RhbnQgdG8gQUREUl9SRUdTIGNsYXNzLgoJKiBjNHgubWQgKGFkZHFpMywgYWRkcWkzX25vY2xvYmJlcl9yZWxvYWQpOiBVcGRhdGUuCgkqIGM0eC5jIChzdGRfb3JfcmVnX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIGM0eC1wcm90b3MuaCAoc3RkX29yX3JlZ19vcGVyYW5kKTogUHJvdG90eXBlIGl0LgoKMjAwMC0wMS0yOSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogdC1jNHg6IENoYW5nZSBxaSxxZixkaSxkZiBpbnRvIHNpLHNmLGhpLGhmIHRvIGdlbmVyYXRlIHNhbWUKCQlvYmplY3QgbmFtZXMgYXMgbGliZ2NjMi5jLgoJKiBsaWJnY2MuUzogVXNlIG5ld2x5IGRlZmluZWQgbmFtZXMuCgpGcmkgSmFuICA3IDE5OjQ4OjA0IENFVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkqIHNiaXRtYXAuYyAoc2JpdG1hcF9maXJzdF9zZXRfYml0LCBzYml0bWFwX2xhc3Rfc2V0X2JpdCk6IE5ldwoJZnVuY3Rpb24uCgkqIHNiaXRtYXAuaCAoc2JpdG1hcF9maXJzdF9zZXRfYml0LCBzYml0bWFwX2xhc3Rfc2V0X2JpdCk6IERlY2xhcmUuCgkqIGJhc2ljX2Jsb2NrLmggKEZMT1dfTE9PUF9GSVJTVF9CTE9DSyk6IE5ldyBtYWNyby4KCShGTE9XX0xPT1BfTEFTVF9CTE9DSyk6IExpa2V3aXNlLgoKMjAwMC0wMS0yMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGxvb3ApOiBOZXcgZmllbGRzICdmaXJzdCcgYW5kICdsYXN0Jy4KCSogZmxvdy5jIChmbG93X2xvb3BzX2ZpbmQpOiBDb21wdXRlIGxvb3AtPmZpcnN0IGFuZCBsb29wLT5sYXN0LgoJKGZsb3dfbG9vcHNfZHVtcCk6IFVzZSBsb29wLT5maXJzdCB0byBjaGVjayBmb3IgTk9URV9JTlNOX0xPT1BfQkVHCglhbmQgbG9vcC0+bGFzdCB0byBjaGVjayBmb3IgTk9URV9JTlNOX0xPT1BfRU5ELgoKRnJpIEphbiAyOCAxMDo1Nzo1OCAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IFVzZSB0aGUgbmV3IEZJUlNUIGFuZCBMQVNUIGZpZWxkcwoJb2YgdGhlIGxvb3AgZGVzY3JpcHRvciByYXRoZXIgdGhhbiBIRUFERVIgYW5kIExBVENILiBBbHNvIGFkZGVkCgltaXNzaW5nIGJyZWFrIHN0YXRlbWVudHMgYXMgd2VsbCBtYWtpbmcgc29tZSBjb2Rpbmcgc3R5bGUgbW9kaWZpY2F0aW9ucwoJYXMgc3VnZ2VzdGVkIGJ5IE1pY2hhZWwgSGF5ZXMuCgoyMDAwLTAxLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSBkb19jbGVhbnVwIGFyZ3VtZW50LgoJQnJlYWsgb3V0IHRoYXQgY29kZSAuLi4KCShjbGVhbnVwX2NmZyk6IC4uLiBoZXJlLgoJKGNvbW1pdF9vbmVfZWRnZV9pbnNlcnRpb24pOiBEZXRlY3QgYSByZXR1cm4gaW5zdHJ1Y3Rpb24gYmVpbmcKCWVtaXR0ZWQgdG8gYW4gZWRnZS4gIEVtaXQgYSBiYXJyaWVyIGZvbGxvd2luZzsgY2xlYXIgZmFsbHRocnUuCgkoY29tbWl0X2VkZ2VfaW5zZXJ0aW9ucyk6IFZlcmlmeSBDRkcgY29uc2lzdGVuY3kuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IEtpbGwgdW51c2VkIHZhcmlhYmxlLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogVXNlIGluc2VydF9pbnNuX29uX2VkZ2UKCXRvIGluc2VydCB0aGUgZXBpbG9ndWUuCgoJKiBnY3NlLmMgKGdjc2VfbWFpbik6IEFkanVzdCBmb3IgZmluZF9iYXNpY19ibG9ja3MgY2hhbmdlLgoJKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogTGlrZXdpc2UuCgkqIG91dHB1dC5oOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmMgKHJlZ190b19zdGFjayk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IExpa2V3aXNlLiAgUnVuCgl0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zIGFmdGVyIHJlYnVpbGRpbmcgdGhlIENGRy4KCjIwMDAtMDEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZmxvdy5vKTogUmV2ZXJ0IDI0IEphbiBjaGFuZ2UuCgkqIGZsb3cuYyAobWFya19yZWdzX2xpdmVfYXRfZW5kKTogTGlrZXdpc2UuICBGb3JjZSBCTEttb2RlCglGVU5DVElPTl9WQUxVRSByZXN1bHQgdG8gREVDTF9SRVNVTFQncyBtb2RlLgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfaW5zbnMpOiBEb24ndCByZWNvbXB1dGUgcmVnIGluZm8KCWFmdGVyIHJlbG9hZC4KCjIwMDAtMDEtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogTWFrZSAtLWVuYWJsZS1jcHBsaWIgdGhlIGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZ2NjLmRnLzk5MDExOS0xLmM6IE5vIGxvbmdlciBleHBlY3RlZCB0byBmYWlsLgoKMjAwMC0wMS0yOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IERlbGV0ZSBhbiBvcHRpbWl6YXRpb24gdGhhdCBpcyBhbHNvIGRvbmUKCWJ5IG1lcmdlX2Jsb2NrcyBpbiBmbG93LgoKMjAwMC0wMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGlhZ25vc3RpYy5jIChidWlsZF9tZXNzYWdlX3N0cmluZywgb3V0cHV0X3ByaW50ZiwKCWxpbmVfd3JhcHBlcl9wcmludGYpOiBBZGQgQVRUUklCVVRFX1BSSU5URl8qLgoJKGJ1aWxkX2xvY2F0aW9uX3ByZWZpeCk6IEZpeCBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKMjAwMC0wMS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLm1kICh0cnVuY3Rmc2YyKTogTmV3LgoKMjAwMC0wMS0yNyAgQW5kcmV3IEhvYnNvbiAgPGFob2Jzb25AZW5nLm1pbmRzcHJpbmcubmV0PgoKCSogY29uZmlndXJlLmluIChhbHBoYS1kZWMtb3NmNSk6IEVuYWJsZSBNQVNLX1NVUFBPUlRfQVJDSC4KCjIwMDAtMDEtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYyAoY3BwX2hhbmRsZV9vcHRpb24pOiBSZWNvZ25pemUgQysrIGNvbW1lbnRzIHVuZGVyCgktc3RkPWdudTg5LgoJKiBjcHBsaWIuYyAoc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCk6IFNwbGl0IGNvZGUKCW91dCBvZi4uLgoJKHNraXBfY29tbWVudCkgLi4uIGhlcmUuICBQZXJtaXQgQysrIGNvbW1lbnRzIGluIHN5c3RlbQoJaGVhZGVycyBhbHdheXMuICBXYXJuIGFib3V0IEMrKyBjb21tZW50cyBpbiB1c2VyIGNvZGUgdW5kZXIKCS1zdGQ9Z251ODkgLXBlZGFudGljLgoJKGNvcHlfY29tbWVudCk6IFVzZSBza2lwX2NvbW1lbnQuCgkoY3BwX3NraXBfaHNwYWNlLCBjcHBfZ2V0X3Rva2VuKTogc2tpcF9jb21tZW50IGNhbiBubyBsb25nZXIKCXJldHVybiBFT0YuCgkoY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nLCBkb19lbHNlLCBkb19lbmRpZik6IENhbGwKCXZhbGlkYXRlX2Vsc2UgdW5jb25kaXRpb25hbGx5LgoJKHZhbGlkYXRlX2Vsc2UpOiBDaGVjayBDUFBfUEVEQU5USUMgaGVyZS4gIEFjY2VwdCBub24tY29tbWVudAoJdGV4dCBhZnRlciB0aGUgY29uZGl0aW9uYWwgaW4gYSBzeXN0ZW0gaGVhZGVyLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBBZGQgZmxhZwoJd2FybmVkX2NwbHVzcGx1c19jb21tZW50cy4KCjIwMDAtMDEtMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bCk6IFVuc2hhcmUgdmlydHVhbCBwYXJhbWV0ZXJzIHRvby4KCVVzZSB1bnNoYXJlX2FsbF9ydGxfMS4KCSh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBOZXcgZnVuY3Rpb24uCgkodW5zaGFyZV9hbGxfcnRsXzEpOiBOZXcgZnVuY3Rpb24gc3BsaXQgb3V0IG9mIHVuc2hhcmVfYWxsX3J0bC4KCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2FkZHJlc3NvZl8xKTogVXNlIHVuc2hhcmVfYWxsX3J0bF9hZ2FpbgoJcmF0aGVyIHRoYW4gcmVzZXR0aW5nIHRoZSAndXNlZCcgZmxhZ3Mgb3Vyc2VsZi4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIGN1cnJlbnRfZnVuY3Rpb25fZGVjbAoJdG8gdGhlIHVuc2hhcmVfYWxsX3J0bCBjYWxsLgoJKiB0cmVlLmg6IFByb3RvdHlwZSB1bnNoYXJlX2FsbF9ydGwuCgkqIHJ0bC5oOiBQcm90b3R5cGUgdW5zaGFyZV9hbGxfcnRsX2FnYWluIGhlcmUuCgoyMDAwLTAxLTI3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBnZW5vdXRwdXQuYyAob3V0cHV0X3Byb2xvZ3VlKTogSW5jbHVkZSBnZ2MuaCBpbiBnZW5lcmF0ZWQKCWZpbGVzLgoJKiBNYWtlZmlsZS5pbiAoaW5zbi1vdXRwdXQubyk6IERlcGVuZHMgb24gZ2djLmguCgoyMDAwLTAxLTI3ICBJYW4gRGFsbCAgPGlhbkBzaWJ5bC5iZXdhcmUuZHJvcGJlYXIuaWQuYXU+CgkgICAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogbnMzMmsveG0tbnMzMmsuaCAobWVtY3B5LCBtZW1zZXQsIG1lbWNtcCk6IERlbGV0ZS4KCVJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBvZiB4bS1uczMyay5oLgoJKiBuczMyay94bS1nZW5peC5oIChtZW1jcHksIG1lbXNldCwgbWVtY21wKTogQWRkIGRlZmluaXRpb25zLgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIG9mIHhtLW5zMzJrLmguCgkqIG5zMzJrL3htLW5ldGJzZC5oIChtZW1jcHksIG1lbXNldCwgbWVtY21wKTogTm8gbG9uZ2VyIHVuZGVmaW5lLgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIG9mIHhtLW5zMzJrLmguCgkqIG5zMzJrL25ldGJzZC5oIChUQVJHRVRfREVGQVVMVCk6IEVuYWJsZSBtdWx0aXBseS1hZGQgaW5zdHJ1Y3Rpb25zLgoKCSogbnMzMmsvbnMzMmsuaDogVXBkYXRlIGNvbW1lbnQgb24gbXVsdGlwbHktYWRkIGluc3RydWN0aW9ucy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgZG9jdW1lbnRhdGlvbiBzdHJpbmdzLgoJKERXQVJGX0ZSQU1FX1JFR05VTSk6IE92ZXJyaWRlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGQgY29tbWVudHMuCgkoU1VCU0VUX1ApOiBGb3JtYXQgdG8gcmVkdWNlIGxpbmUgbGVuZ3RoLgoJKFNNQUxMX1JFR0lTVEVSX0NMQVNTRVMpOiBNYWtlIGEgcnVuIHRpbWUgb3B0aW9uLgoJKEdPX0lGX05PTklOREVYRURfQUREUkVTUyk6IFJlZm9ybWF0LgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IEVuc3VyZSB0aGF0IGNmdW4gaXMgbm9uIE5VTEwgYmVmb3JlCglkZXJlZmVyZW5jaW5nIGl0LiAgQnJhY2VzIHRvIGF2b2lkICJhbWJpZ3VvdXMgZWxzZSIgd2VyZSBtaXNwbGFjZWQuCgkocmVnY2xhc3NfbWFwKTogZml4IHR5cG8gaW4gY29tbWVudC4KCSogbnMzMmsvbnMzMmsuYzogQWRkIHNwYWNlcyBiZWZvcmUgcGFyZW50aGVzZXMgZm9yIGNvbnNpc3RhbnQgc3R5bGUuCglQcmVmZXIgZ2VuX3J0eF9GT08oLi4uKSB0byBnZW5fcnR4KEZPTywuLi4pLgoJKHRyYWNlLCByZWdfb3JfbWVtX29wZXJhbmQpOiBEZWxldGUsIHVudXNlZCBmdW5jdGlvbi4KCShjYWxjX2FkZHJlc3NfY29zdCk6IFNtYWxsIG9mZnNldHMgYXJlIGNoZWFwZXIgdGhhbiBsYXJnZSBvbmVzLgoJKGV4cGFuZF9ibG9ja19tb3ZlKTogR2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgY29kZSB3aGVuIGJ5dGVzIGlzIGEKCWtub3duIGF0IGNvbXBpbGUgdGltZS4KCSogbnMzMmsvbnMzMmsubWQ6IEFsdGVybmF0ZSBjb25zdHJhaW50cyBmb3IgbXVsdGlwbHktYWRkIGluc3RydWN0aW9ucy4KCSh1ZGl2bW9kc2k0LCB1ZGl2bW9kaGk0LCB1ZGl2bW9kcWk0KTogVXNlIG5vbmltbWVkaWF0ZV9vcGVyYW5kCglpbnN0ZWFkIG9mIHJlZ19vcl9tZW1fb3BlcmFuZC4KCgkqIG5zMzJrL25zMzJrLm1kOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgb3Igc3RyaWN0ZXIgZm9yIG91dHB1dHMsCglub3QgZ2VuZXJhbF9vcGVyYW5kLiAgU2ltaWxhcmx5IHVzZSAiPXJtIiBvciBzdHJpY3Rlciwgbm90ICI9ZyIuCglGb3IgaW5wdXQgb3BlcmFuZHMsIHVzZSBzdHJpY3RlciBjb25zdHJhaW50cyB0aGFuICJnIiBpZiBub3QKCWdlbmVyYWxfb3BlcmFuZC4gIFNpbWlsYXJseSB1c2Ugc3RyaWN0ZXIgcHJlZGljYXRlIHRoYW4KCSJnZW5lcmFsX29wZXJhbmQiIHdoZW4gc3RyaWN0ZXIgY29uc3RyYWludHMgdGhhbiAiZyIgYXJlIHByZXNlbnQsCglleGNlcHQgZm9yIG1hdGNoaW5nIGNvbnN0cmFpbnRzLgoJKG1vdnN0cnNpKTogVXNlICJtZW1vcnlfb3BlcmFuZCIgZm9yIG9wZXJhbmRzIDAgYW5kIDEuCgkodHJ1bmNzaXFpMiwgdHJ1bmNzaWhpMiwgdHJ1bmNoaXFpMik6IFJlbW92ZS4KCSh1ZGl2bW9kZGlzaTRfaW50ZXJuYWwpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yIG9wZXJhbmQgMCwKCW5vdCByZWdfb3JfbWVtX29wZXJhbmQuCgkodWRpdm1vZGRpc2k0KTogRGl0dG8uCglVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yIG9wZXJhbmQgMSwgbm90IHJlZ19vcl9tZW1fb3BlcmFuZC4KCVVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBmb3Igb3BlcmFuZCAzLCBub3QgcmVnaXN0ZXJfb3BlcmFuZC4KCSh1ZGl2bW9kZGlxaTRfaW50ZXJuYWwpOiBVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3Igb3BlcmFuZCAxLCBub3QKCXJlZ19vcl9tZW1fb3BlcmFuZC4KCjIwMDAtMDEtMjcgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBndGhyLXBvc2l4Lmg6IEZpeCB0eXBvOyBjb21wYXRpYmlseSAtPiBjb21wYXRpYmlsaXR5LgoJKiBndGhyLXNpbmdsZS5oOiBMaWtld2lzZS4KCSogZ3Roci1zb2xhcmlzLmg6IExpa2V3aXNlLgoJKiBndGhyLXZ4d29ya3MuaDogTGlrZXdpc2UuCgkqIGd0aHItd2luMzIuaDogTGlrZXdpc2UuCgkqIGd0aHIuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmM6IEFkZCAiIChjcHBsaWIpIiB0byBlbmQgb2Ygc3RyaW5nIHByaW50ZWQgYnkKCS12IC8gLS12ZXJzaW9uLgoKMjAwMC0wMS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfbW92ZSk6IFVzZSBWT0lEbW9kZSB3aGVuCgl0ZXN0aW5nIGZvciBhIHNpZ25lZCBjb21wYXJpc29uLgoJKGFscGhhX2VtaXRfZmxvYXR1bnMpOiBOZXcuCgkqIGFscGhhLXByb3Rvcy5oOiBEZWNsYXJlIGl0LgoJKiBhbHBoYS5tZCAoZmxvYXR1bnNkaXNmMiwgZmxvYXR1bnNkaWRmMik6IE5ldy4KCShleHRlbmRzZmRmMik6IFRpZHkuCgoyMDAwLTAxLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKENDMV9TUEVDKTogSWYgY29tcGlsaW5nIC1tMzIgd2l0aCAtZyBidXQKCW5vIC1nIG9wdGlvbiBzcGVjaWZ5aW5nIGRlYnVnZ2luZyBmb3JtYXQsIGRlZmF1bHQgdG8gLWdzdGFicysuCgpXZWQgSmFuIDI2IDIyOjE5OjE0IDE5OTkgIEoib3JuIFJlbm5lY2tlICA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjYWxscy5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBOZXcgYXJndW1lbnQgZm9ya19vcl9leGVjLgoJKGV4cGFuZF9jYWxsKTogV2hlbiBwcm9maWxlX2FyY19mbGFnIGlzIHNldCBhbmQgdGhlIGZ1bmN0aW9uCglpcyBpbiB0aGUgZm9ya19vcl9leGVjIGdyb3VwLCBjYWxsIF9fYmJfZm9ya19mdW5jIGZpcnN0LgoJKiBsaWJnY2MyLmMsIF9iYiBtb2R1bGUgKF9fYmJfZm9ya19mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKF9fYmJfZXhpdF9mdW5jKTogSWYgZmNudGwgRl9TRVRMS1cgaXMgYXZhaWxhYmxlLCB1c2UgaXQgdG8gbG9jawoJb3V0cHV0IGZpbGUuCgkqIGNvbmZpZy9zdnI0LmggKFRBUkdFVF9IQVNfRl9TRVRMS1cpOiBEZWZpbmUuCgkqIHRyZWUuaCAoc3BlY2lhbF9mdW5jdGlvbl9wKTogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDAtMDEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5jIChhbHBoYV9zcGxpdF90Zm1vZGVfcGFpcik6IE5ldy4KCSogYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGFscGhhLm1kIChhYnN0ZjIsIG5lZ3RmMik6IE5ldy4KCShtb3Z0ZiBpbnNuKTogQWRkIGlucHV0IEcgY29uc3RyYWludC4KCShtb3Z0ZiBzcGxpdHRlcik6IFVzZSBhbHBoYV9zcGxpdF90Zm1vZGVfcGFpci4KCjIwMDAtMDEtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGkzODYvY3lnd2luLmg6IFBST1RPIC0+IFBBUkFNUy4KCjIwMDAtMDEtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcCk6IEhhbmRsZQoJVEFSR0VUX0FSQ0gzMiBhZ2Fpbi4gSGFuZGxlIE9SREVSRUQsIFVOKiBhbmQgTFRHVCBjb21wYXJpc29ucwoJdXNpbmcgX1FwX2NtcC9fUV9jbXAgYW5kIHRlc3RpbmcgdGhlIHJldHVybiB2YWx1ZS4KCShwcmludF9vcGVyYW5kKTogQ2FsbCByZXZlcnNlX2NvbmRpdGlvbl9tYXliZV91bm9yZGVyZWQgaWYKCXdlIGFyZSBoYW5kbGluZyBDQ0ZQbW9kZSBvciBDQ0ZQRW1vZGUuCglIYW5kbGUgT1JERVJFRCwgVU4qIGFuZCBMVEdUIGNvbXBhcmlzb25zLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGNtcHRmKTogVXNlIGV2ZW4gb24gVEFSR0VUX0FSQ0gzMgoJaWYgbm90IFRBUkdFVF9IQVJEX1FVQUQuCgkoc2VxLCBzbmUsIHNndCwgc2x0LCBzZ2UsIHNsZSwgYmVxLCBibmUsIGJndCwgYmx0LCBiZ2UsIGJsZSwKCWJ1bm9yZGVyZWQsIGJvcmRlcmVkLCBidW5ndCwgYnVubHQsIGJ1bmVxLCBidW5nZSwgYnVubGUsIGJsdGd0KToKCUNhbGwgc3BhcmNfZW1pdF9mbG9hdF9saWJfY21wIGV2ZW4gb24gVEFSR0VUX0FSQ0gzMi4KCUFkanVzdCBnZW5fYiogY2FsbHMgc28gdGhhdCB0aGV5IHJlZmxlY3QgcmV0dXJuIGNvbXBhcmlzb24gb2YKCXNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcC4KCjIwMDAtMDEtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2N2dCk6IERvIG5vdCBhc3N1bWUKCWluY29taW5nIG9wZXJhbmRzIGFycmF5IGlzIGxhcmdlIGVub3VnaCBmb3Igb25lIG1vcmUgb3BlcmFuZC4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19hcml0aCk6IExpa2V3aXNlLgoKMjAwMC0wMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluIChtYWNobmFtZS5oKTogU3VuT1MgNCBzZWQgY2FuJ3QgaGFuZGxlIGEKCWZpbGUgd2l0aCBvbmUgbGluZSBhbmQgbm8gdHJhaWxpbmcgbmV3bGluZS4KCVBhdGNoIGJ5IEthdmVoIEdoYXppIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1Pi4KCSogZml4aW5jL2ZpeHRlc3RzLmMgKG1hY2hpbmVfbmFtZV90ZXN0KTogRml4IGZlbmNlcG9zdCBlcnJvcgoJY2hlY2tpbmcgaWYgdGhlIG1hdGNoIGlzIG9uIHRoZSBsaW5lLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IFByb3ZpZGUgcmVnZXJyb3Igbm90IF9fcmVnZXJyb3IuCgoyMDAwLTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3BhcmMuYyAob3V0cHV0X2NicmFuY2gpOiBGaXggYWNjaWRlbnRhbCBzcXVhc2hpbmcgb2YgdGhlCglmcCBicmFuY2ggcHJlLWRlbGF5IG5vcC4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0cmVlLmRlZiAoVU5ORV9FWFBSKTogUmVtb3ZlLgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBEb24ndCBoYW5kbGUgaXQuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGRvX2p1bXAsIGRvX3N0b3JlX2ZsYWcpOiBMaWtld2lzZS4KCgkqIHJ0bC5kZWYgKFVOTkUpOiBSZW1vdmUuCgkoTFRHVCk6IEFkZC4KCSoganVtcC5jIChyZXZlcnNlX2NvbmRpdGlvbik6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShzd2FwX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKGNvbXBhcmlzb25fZG9taW5hdGVzX3ApOiBIYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmlzb25zLgoJKHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCk6IE5ldy4KCSogcnRsLmggKHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCk6IERlY2xhcmUuCgoJKiBzcGFyYy5jIChzZWxlY3RfY2NfbW9kZSk6IFVwZGF0ZSBmb3IgVU5ORS9MVEdULgoJKG91dHB1dF9jYnJhbmNoKTogVXNlIHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCBhbmQgTFRHVC4KCSogc3BhcmMuaCAoUkVWRVJTSUJMRV9DQ19NT0RFKTogQWx3YXlzIHRydWUuICBVcGRhdGUgZG9jcy4KCSogc3BhcmMubWQgKGJsdGd0KTogTmV3LgoKMjAwMC0wMS0yNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGVtaXRfaW5zbik6IE9ubHkgY2hlY2sgbWFjaGluZSBjbGFzcyBpbnNucyBmb3IKCWltcHJvcGVyIGVtaXNzaW9uIG9mIGEgUkVUVVJOLgoKMjAwMC0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChmbG93Lm8pOiBEZXBlbmQgb24gJChFWFBSX0gpLgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IFVzZSBoYXJkX2Z1bmN0aW9uX3ZhbHVlLCBpLmUuCglkdXBsaWNhdGUgdGhlIHN0cnVjdHVyZSBvZiBkaWRkbGVfcmV0dXJuX3ZhbHVlIGZvciBrZWVwaW5nIHJlZ3MgbGl2ZS4KCjIwMDAtMDEtMjYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuYyAoY3VycmVudF9sb29wX2luZm8pOiBEZWxldGUuCgkoY29uc2VjX3NldHNfaW52YXJpYW50X3ApOiBBZGQgbG9vcCBhcmd1bWVudCwgdXBkYXRlIGNhbGxlcnMuCgkoZ2V0X2NvbmRpdGlvbl9mb3JfbG9vcCk6IExpa2V3aXNlLgoJKGNvdW50X25vbmZpeGVkX3JlYWRzLCB1cGRhdGVfZ2l2X2Rlcml2ZSk6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X2dpdl9leHByLCBnZW5lcmFsX2luZHVjdGlvbl92YXIpOiBMaWtld2lzZS4KCShjb25zZWNfc2V0c19naXYsIHJlY29tYmluZV9naXZzKTogTGlrZXdpc2UuCgkobW92ZV9tb3ZhYmxlcyk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMsCglhZGQgbG9vcCBhcmd1bWVudCwgYW5kIHVwZGF0ZSBjYWxsZXJzLgoJKGZpbmRfbWVtX2dpdnMsIGNoZWNrX2ZpbmFsX3ZhbHVlKTogTGlrZXdpc2UuCgkocmVjb3JkX2dpdiwgbWF5YmVfZWxpbWluYXRlX2JpdiwgbWF5YmVfZWxpbWluYXRlX2Jpdl8xKTogTGlrZXdpc2UuCgkobG9vcF9pbnZhcmlhbnRfcCk6IFJlbmFtZSBmcm9tIGludmFyaWFudF9wLCBhZGQgbG9vcCBhcmd1bWVudCwgYW5kCgl1cGRhdGUgY2FsbGVycy4KCShiYXNpY19pbmR1Y3Rpb25fdmFyKTogQWRkIGxvb3AgYXJndW1lbnQsIGRlbGV0ZSBsb29wX2xldmVsIGFyZ3VtZW50LAoJYW5kIHVwZGF0ZSBjYWxsZXJzLgoJKiB1bnJvbGwuYyAoaXRlcmF0aW9uX2luZm8pOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzLAoJYWRkIGxvb3AgYXJndW1lbnQsIGFuZCB1cGRhdGUgY2FsbGVycy4KCShmaW5kX3NwbGl0dGFibGVfcmVncywgZmluZF9zcGxpdHRhYmxlX2dpdnMpOiBMaWtld2lzZS4KCShyZWdfZGVhZF9hZnRlcl9sb29wLCBsb29wX2ZpbmRfZXF1aXZfdmFsdWUpOiBMaWtld2lzZS4KCShmaW5hbF9iaXZfdmFsdWUsIGZpbmFsX2dpdl92YWx1ZSwgYmFja19icmFuY2hfaW5fcmFuZ2VfcCk6IExpa2V3aXNlLgoJKGJpdl90b3RhbF9pbmNyZW1lbnQpOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzOwoJdXBkYXRlIGNhbGxlcnMuCgkocHJlY29uZGl0aW9uX2xvb3BfcCk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2luZm8gYXJndW1lbnRzOwoJdXBkYXRlIGNhbGxlcnMuCgkqIGxvb3AuaCAoZ2V0X2NvbmRpdGlvbl9mb3JfbG9vcCk6IEFkZCBsb29wIGFyZ3VtZW50LgoJKGJpdl90b3RhbF9pbmNyZW1lbnQpOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzLgoJKHByZWNvbmRpdGlvbl9sb29wX3ApOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9pbmZvIGFyZ3VtZW50czsKCWFkZCBsb29wIGFyZ3VtZW50LgoJKGZpbmFsX2Jpdl92YWx1ZSk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHM7CglhZGQgbG9vcCBhcmd1bWVudC4KCShmaW5hbF9naXZfdmFsdWUsIGJhY2tfYnJhbmNoX2luX3JhbmdlX3ApOiBMaWtld2lzZS4KCjIwMDAtMDEtMjUgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBGaXggZm9yIG1pcHMxNi4KCjIwMDAtMDEtMjUgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtZ3BlcmYuaCkgOiBDaGFuZ2UgdGhlICJTZWUiIHBvaW50ZXIgdG8KCXBvaW50IHRvIHRoZSBuZXcgImdlbmVyYXRlZF9maWxlcyIgZG9jLgoKMjAwMC0wMS0yNSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvZnAtYml0LmMgKF91bm9yZF9mMik6IEZpeCB0eXBvLgoKMjAwMC0wMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1jb21tb24uYywgYy1kZWNsLmMsIGMtbGFuZy5jLCBjLWxleC5jLCBjLXBhcnNlLmluLCBjLXByYWdtYS5jLAoJYy10eXBlY2suYywgb2JqYy9vYmpjLWFjdC5jOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gb2JzdGFjawoJZnVuY3Rpb25zIG9ic29sZXRlZCBieSBHQywgc3VjaCBhcyBwdXNoX29ic3RhY2tzX25vY2hhbmdlLAoJZW5kX3RlbXBvcmFyeV9hbGxvY2F0aW9uLCBzYXZlYWxsb2MsIHNhdmVhYmxlX3RyZWVfY29ucywgZXRjLgoJYW5kIGNvZGUgd2hpY2ggZXhpc3RlZCBvbmx5IHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBjYWxsCgl0aGVtLiAgUmVtb3ZlIG5vdy11bnVzZWQgTkVTVEVEIGFyZ3VtZW50IGZyb20gc3RhcnRfZnVuY3Rpb247CglhbGwgY2FsbGVycyBjaGFuZ2VkLiAgRG8gbm90IGNoYW5nZSBiZWhhdmlvciBiYXNlZCBvbiBnZ2NfcC4KCVRoZSB1c2Ugb2YgdGhlIGl4cF9vYnN0YWNrIGluIGMtaXRlcmF0ZS5jIGFuZCB0aGUgdXRpbF9vYnN0YWNrCglpbiBvYmpjL29iamMtYWN0LmMgcmVtYWluOyB0aGVzZSBhcmUgbm90IG9ic29sZXRlZCBieSBnYXJiYWdlCgljb2xsZWN0aW9uLgoJKiBjLXRyZWUuaDogVXBkYXRlIHByb3RvdHlwZSBmb3Igc3RhcnRfZnVuY3Rpb24uCgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55OiBSZWJ1aWxkLgoKMjAwMC0wMS0yNSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh6ZXJvX2V4dGVuZHNpZGkyX2ludGVybmFsKTogRGlzYWJsZSBmb3IKCW1pcHMxNi4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzcGFyYy1wcm90b3MuaCAoc2VsZWN0X2NjX21vZGUpOiBEZWNsYXJlLgoJKiBzcGFyYy5jIChzZWxlY3RfY2NfbW9kZSk6IE5ldy4gIEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyZXMuCgkob3V0cHV0X2NicmFuY2gpOiBBbHdheXMgcmV2ZXJzZSB2aWEgY29kZSBjaGFuZ2UuICBIYW5kbGUKCXVub3JkZXJlZCBjb21wYXJlcy4gIEZhY3RvciB0ZXN0cyBhbmQgc3RyaW5nIHVwZGF0ZXMuCgkqIHNwYXJjLmggKFNFTEVDVF9DQ19NT0RFKTogU3BsaXQgb3V0IHRvIHNlbGVjdF9jY19tb2RlLgoJKFJFVkVSU0lCTEVfQ0NfTU9ERSk6IEFsc28gZXhjbHVkZSBDQ0ZQbW9kZS4KCSogc3BhcmMubWQgKGJ1bm9yZGVyZWQsIGJvcmRlcmVkKTogTmV3LgoJKGJ1bmd0LCBidW5sdCwgYnVuZXEsIGJ1bmdlLCBidW5sZSk6IE5ldy4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2luaXQpOiBVc2UgZ2djX2FkZF9ydHhfdmFycmF5X3Jvb3QuCgkqIGdnYy1jb21tb24uYyAoZ2djX2FkZF9ydHhfdmFycmF5X3Jvb3QpOiBOZXcuCgkoZ2djX21hcmtfcnR4X3ZhcnJheSk6IE5ldy4KCShnZ2NfbWFya19ydHhfdmFycmF5X3B0cik6IE5ldy4gIFNoaWZ0IGFsbCBnZ2NfbWFya19mb29fcHRyCglmdW5jdGlvbnMgZG93biBiZWxvdyBnZ2NfbWFya19mb28uCgkqIGdnYy5oIChnZ2NfYWRkX3J0eF92YXJyYXlfcm9vdCwgZ2djX21hcmtfcnR4X3ZhcnJheSk6IERlY2xhcmUuCgoyMDAwLTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IERvbid0IGFsbG9jYXRlIGEgc2Vjb25kYXJ5Cglmb3IgaW50ZWdyYWwgbW9kZSBtZW1vcmllcyBpbnRvIEZMT0FUX1JFR1MuICBSZWFycmFuZ2UgdGhlIG1vcmUKCWNvbXBsaWNhdGVkIG1lbW9yeSBleHByZXNzaW9uIGlud2FyZC4KCjIwMDAtMDEtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGluY2xoYWNrLmRlZjogRml4ZXMgdG8gcGxheSBuaWNlciB3aXRoIEZyZWVCU0QsIGFuZAoJY29ycmVjdGlvbnMgdG8gY29tbWVudHMuCgkoY3h4X3VucmVhZHkpOiBBZGQgc2VsZWN0IGV4cHJlc3Npb24uCgkoaXJpeF9zb2NrYWRkcik6IEFkZCBieXBhc3MgZXhwcmVzc2lvbi4KCShtYWNoaW5lX2Fuc2lfaF92YV9saXN0KTogTmV3IGZpeC4KCShzdGRpb192YV9saXN0KTogTm8gbmVlZCB0byBlZGl0IF9CU0RfVkFfTElTVF8uCglTcGxpdCBvdXQgYWRkaXRpb24gb2YgIiNpbmNsdWRlIDxzdGRhcmcuaD4iIHRvLi4uCgkoc3RkaW9fc3RkYXJnX2gpOiAuLi4gaGVyZS4KCShzeXN0eXBlc19mb3JfYWl4KTogUmVuYW1lIHRvIHN5c3R5cGVzX3N0ZGxpYl9zaXplX3QuICBBcHBseQoJdG8gc3RkbGliLmggYWxzby4gIERvIG5vdCBtdW5nZSBfQlNEX1NJWkVfVF8uCgkoc3lzel9zdGRsaWJfZm9yX3N1bik6IERlbGV0ZSBkdXBsaWNhdGUgZml4IGZvciB1bnByb3RlY3RlZAoJc2l6ZV90LgoJKHVsdHJpeF9pZmRlZik6IFRpZ2h0ZW4gdXAgc2VsZWN0IGV4cHJlc3Npb24uCgoJKiBmaXhpbmNsLnRwbDogRXhvcmNpc2UgJ2V4ZXNlbCcuICBSZXdyaXRlIGNhbGN1bGF0aW9ucyBvZgoJcmVfY3QgYW5kIG1heF9tYWNoIHRvIGF2b2lkIHVzZSBvZiBzaGVsbC4gIE1ha2UgcHJpbnRlZCBuYW1lcwoJbWF0Y2ggbmFtZXMgaW4gaW5jbGhhY2suZGVmLiAgVXNlIHN0YXRpYyBjb3B5cmlnaHQgZGF0ZS4KCURvbid0IGNvdW50IGNfdGVzdCBhbmQgdGVzdCBleHByZXNzaW9ucyBhcyByZXF1aXJpbmcgcmVnZXhfdAoJc2xvdHMuICBBZGQgc29tZSBjb21tZW50YXJ5LgoJKiBpbmNsaGFjay50cGw6IERvIG5vdCBpbmNsdWRlIHRoZSAnVGhpcyBzY3JpcHQgY29udGFpbnMgTgoJZml4dXAgc2NyaXB0cycgbGluZSBpZiBQUk9HUkFNIGlzIGRlZmluZWQuICBVc2Ugc3RhdGljCgljb3B5cmlnaHQgZGF0ZS4KCjIwMDAtMDEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmM6IGluY2x1ZGUgInZhcnJheS5oIiwgbm90IGR5bi1zdHJpbmcuaC4KCShBU01fT1VUUFVUX0RXQVJGMl9BRERSX0NPTlNULCBBU01fTkFNRV9UT19TVFJJTkcpOiBMb3NlLgoJKGFkZHJfY29uc3RfdG9fc3RyaW5nLCBhZGRyX3RvX3N0cmluZyk6IExvc2UuCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSX0NPTlNUKTogQ29weSBmcm9tIGR3YXJmb3V0LmMuCgkoc3RydWN0IGR3X3ZhbF9zdHJ1Y3QpOiB2YWxfYWRkciBpcyBub3cgYW4gcnR4LgoJKGFkZF9BVF9hZGRyLCBBVF9hZGRyLCBmcmVlX0FULCBvdXRwdXRfYXJhbmdlcyk6IEFkanVzdC4KCSh1c2VkX3J0eF92YXJyYXkpOiBOZXcgdmFycmF5LgoJKGR3YXJmMm91dF9pbml0KTogSW5pdGlhbGl6ZSBpdC4KCShzYXZlX3J0eCk6IE5ldyBmbi4KCShtZW1fbG9jX2Rlc2NyaXB0b3IsIGFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBDYWxsIGl0IGluc3RlYWQgb2YKCWFkZHJfdG9fc3RyaW5nLgoJKiBhcm0vdGVsZi5oLCBhcm0vdW5rbm93bi1lbGYuaCwgbW4xMDIwMC5oLCBtbjEwMzAwLmgsCglzcGFyYy9zcDY0LWVsZi5oOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBBU01fT1VUUFVUX0RXQVJGMl9BRERSX0NPTlNULgoJKiBNYWtlZmlsZS5pbiAoZHdhcmYyb3V0Lm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0wMS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaTM4Nl9kd2FyZl9vdXRwdXRfYWRkcl9jb25zdCk6IE5ldy4KCSogaTM4Ni5oIChBU01fT1VUUFVUX0RXQVJGX0FERFJfQ09OU1QpOiBOZXcuCgoJKiBkd2FyZjJvdXQuYyAobWVtX2xvY19kZXNjcmlwdG9yKTogQ2FsbCBBU01fU0lNUExJRllfRFdBUkZfQUREUgoJaWYgZGVmaW5lZC4KCSogZHdhcmZvdXQuYyAob3V0cHV0X21lbV9sb2NfZGVzY3JpcHRvcik6IExpa2V3aXNlLgoJKiBpMzg2LmMgKGkzODZfc2ltcGxpZnlfZHdhcmZfYWRkcik6IE5ldy4KCSogaTM4Ni5oIChBU01fU0lNUExJRllfRFdBUkZfQUREUik6IE5ldy4KCk1vbiBKYW4gMjQgMTY6NTY6MTAgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fdHlwZV9kaWUpOiBTZXQgY29tcGxldGUgaWYKCVRZUEVfU1RVQl9ERUNMIGlzIE5VTEwuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX3RyZWVfYnVpbHRpbik6IE1vdmUgLi4uCgkqIGMtY29tbW9uLmMgKGV4cGFuZF90cmVlX2J1aWx0aW4pOiAuLi4gaGVyZS4KCjIwMDAtMDEtMjUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuaCAoTE9PUF9JTkZPKTogTmV3IGFjY2Vzc29yIG1hY3JvLgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcCk6IFJlbmFtZSBmaWVsZCBgaW5mbycgdG8gYGF1eCcuCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogUmVwbGFjZSBsb29wLT5pbmZvIHdpdGggTE9PUF9JTkZPIChsb29wKS4KCShwcmVzY2FuX2xvb3AsIHN0cmVuZ3RoX3JlZHVjZSwgY2hlY2tfZGJyYV9sb29wLCBpbnNlcnRfYmN0KTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChsb29wX2l0ZXJhdGlvbnMsIHVucm9sbF9sb29wKTogTGlrZXdpc2UuCgoyMDAwLTAxLTI0ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvdC1jeWd3aW46IEFjY29tbW9kYXRlIG5ldyB3aW5zdXAgZGlyZWN0b3J5IGxheW91dAoJd2hlbiBzZWFyY2hpbmcgZm9yIGluY2x1ZGUgZmlsZXMuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsLmRlZjogQWRkIHVub3JkZXJlZCBmcCBjb21wYXJpc2lvbnMuCgkqIHRyZWUuZGVmOiBMaWtld2lzZS4KCSogdHJlZS5oOiBBZGQgSVNPIEMgOXggdW5vcmRlcmVkIGZwIGNvbXBhcmlzaW9uIGJ1aWx0aW5zLgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX3RyZWVfYnVpbHRpbik6IE5ldyBmdW5jdGlvbi4KCSogYy10eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IFVzZSBpdC4KCShidWlsZF9iaW5hcnlfb3ApOiBTdXBwb3J0IHVub3JkZXJlZCBjb21wYXJlcy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQWRkIHVub3JkZXJlZCBjb21wYXJlcy4KCgkqIGNvbWJpbmUuYyAoa25vd25fY29uZCk6IEhhbmRsZSByZXZlcnNlX2NvbmRpdGlvbiByZXR1cm5pbmcgVU5LTk9XTi4KCShyZXZlcnNpYmxlX2NvbXBhcmlzb25fcCk6IEFsbG93IFVOT1JERVJFRC9PUkRFUkVEIHRvIGJlIHJldmVyc2VkLgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBDaGVjayBGTE9BVF9NT0RFX1AgYmVmb3JlIHJldmVyc2luZy4KCShyZWNvcmRfanVtcF9lcXVpdik6IEhhbmRsZSByZXZlcnNlX2NvbmRpdGlvbiByZXR1cm5pbmcgVU5LTk9XTi4KCSoganVtcC5jIChyZXZlcnNlX2NvbmRpdGlvbik6IERvbid0IGFib3J0IGZvciBVTkxFIGV0YywgYnV0CglyZXR1cm4gVU5LTk9XTi4KCShzd2FwX2NvbmRpdGlvbik6IEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyZXMuCgkodGhyZWFkX2p1bXBzKTogQ2hlY2sgY2FuX3JldmVyc2UgYmVmb3JlIHJldmVyc2luZy4KCSogbG9vcC5jIChnZXRfY29uZGl0aW9uKTogTGlrZXdpc2UuICBBbGxvdyBVTk9SRVJFRC9PUkRFUkVEIHRvIGJlCglyZXZlcnNlZCBmb3IgRlAuCgoJKiBvcHRhYnMuYyAoY2FuX2NvbXBhcmVfcCk6IE5ldyBhcmd1bWVudCBDT0RFLiAgVmVyaWZ5IGJyYW5jaCBvcgoJc2V0Y2MgaXMgcHJlc2VudCBiZWZvcmUgYWNraW5nIGZvciBjbXBfb3B0YWIuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkocHJlcGFyZV9mbG9hdF9saWJfY21wLCBpbml0X29wdGFicyk6IEhhbmRsZSBVTk9SREVSRUQuCgkqIGV4cG1lZC5jIChkb19jbXBfYW5kX2p1bXApOiBVcGRhdGUgZm9yIGNhbl9jb21wYXJlX3AuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4gIFN1cHBvcnQgdW5vcmRlcmVkIGNvbXBhcmVzLgoJKGRvX2p1bXAsIGRvX3N0b3JlX2ZsYWcpOiBMaWtld2lzZS4KCSogZXhwci5oIChlbnVtIGxpYmZ1bmNfaW5kZXgpOiBBZGQgdW5vcmRlcmVkIGNvbXBhcmVzLgoKCSogTWFrZWZpbGUuaW4gKEZQQklUX0ZVTkNTKTogQWRkIF91bm9yZF9zZi4KCShEUEJJVF9GVU5DUyk6IEFkZCBfdW5vcmRfZGYuCgkqIGNvbmZpZy9mcC1iaXQuYyAoX3Vub3JkX2YyKTogTmV3LgoJKiBmcC10ZXN0LmMgKG1haW4pOiBUcnkgdW5vcmRlcmVkIGNvbXBhcmUgYnVpbHRpbnMuCgoJKiBhbHBoYS1wcm90b3MuaCAoYWxwaGFfZnBfY29tcGFyaXNvbl9vcGVyYXRvcik6IERlY2xhcmUuCgkqIGFscGhhLmMgKGFscGhhX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDaGVjayBtb2RlIHByb3Blcmx5LgoJKGFscGhhX3N3YXBwZWRfY29tcGFyaXNvbl9vcGVyYXRvcik6IExpa2V3aXNlLgoJKHNpZ25lZF9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkoYWxwaGFfZnBfY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyZXMuCgkqIGFscGhhLmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogYWxwaGEubWQgKGZwIGNvbXBhcmVzKTogVXNlIGFscGhhX2ZwX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkoYnVub3JkZXJlZCwgYm9yZGVyZWQpOiBOZXcuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0KTogVGhpbmtvIGluIG9wZXJhbmQgbWFuaXB1bGF0aW9uLgoJKiBhbHBoYS5tZCAobW92dGYpOiBOZXcgZXhwYW5kZXIsIGluc24sIGFuZCBzcGxpdHRlci4KCk1vbiBKYW4gMjQgMTk6NDk6NDcgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZy1zdGFjay5jIChzdWJzdF9zdGFja19yZWdzX3BhdCk6IEhhbmRsZSBjb3JyZWN0bHkgVVNFcyBvZgoJZGVhZCByZWdpc3RlcnMuCgpNb24gSmFuIDI0IDE3OjM3OjMxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmggKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFNldCB0byAyMS4KCShGSVhFRF9SRUdJU1RFUlMsIENBTExfVVNFRF9SRUdJU1RFUlMsCgkgUkVHX0FMTE9DX09SREVSKTogQWRkIGZyYW1lIHBvaW50ZXIKCShGUkFNRV9QT0lOVEVSX1JFR05VTSk6IFNldCB0byAyMAoJKEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0pOiBOZXcgbWFjcm8uCgkoRUxJTUlOQUJMRV9SRUdTKTogRWxpbWluYXRlIEFSR19QT0lOVEVSIGFuZCBGUkFNRV9QT0lOVEVSCgl0byBIQVJEX0ZSQU1FX1BPSU5URVIuCgkoUkVHTk9fT0tfRk9SX0JBU0VfUCk6IEFjY2VwdCBGUkFNRV9QT0lOVEVSX1JFR05VTQoJKFJFR19PS19GT1JfSU5ERVhfTk9OU1RSSUNUX1ApOiBMaWtld2lzZS4KCShSRUdfT0tfRk9SX0JBU0VfTk9OU1RSSUNUX1ApOiBMaWtld2lzZS4KCShISV9SRUdJU1RFUl9OQU1FUyk6IEFkZCAiZnJhbWUiLgoJKENBTl9FTElNSU5BVEUpOiBIYW5kbGUgRlJBTUVfUE9JTlRFUl9SRUdOVU0gZWxpbWluYXRpb24uCgkoZGVidWdfcmVnKTogSGFuZGxlIEZSQU1FX1BPSU5URVJfUkVHTlVNLgoJKHJlZ19jbGFzcyk6IEFkZCBhcmcgcG9pbnRlciBhbmQgZnJhbWUgcG9pbnRlciB0byBOT05fUV9SRUdTLAoJR0VORVJBTF9SRUdTIGFuZCBJTkRFWF9SRUdTLgoJKiBpMzg2LmMgKFNBVkVEX1JFR1NfRklSU1QpOiBuZXcgbWFjcm8uCgkoQVRfQlApOiBVc2UgaGFyZF9mcmFtZV9wb2ludGVyX3J0eCBpbnN0ZWFkIG9mIGZyYW1lX3BvaW50ZXJfcnR4CgkoaXg4Nl9kZWNvbXBvc2VfYWRkcmVzcywgbWVtb3J5X2FkZHJlc3NfbGVuZ3RoKTogTGlrZXdpc2UuCgkocmVnY2xhc3NfbWFwKTogQWRkIGZyYW1lIHBvaW50ZXIuCgkoY2FsbF9pbnNuX29wZXJhbmQpOiBIYW5kbGUgZnJhbWVfcG9pbnRlcl9ydHguCgkocmVnX25vX3NwX29wZXJhbmQpOiBMaWtld2lzZS4KCShpeDg2X2RlY29tcG9zZV9hZGRyZXNzKTogSGFuZGxlIGZyYW1lX3BvaW50ZXJfcnR4IGFzIHN0YWNrX3BvaW50ZXJfcnR4LgoJKHByaW50X29wZXJhbmQsIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBGaXggZm9ybWF0aW5nLgoJKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogTWFrZSBzdGF0aWMsIHVwZGF0ZSBwcm90b3R5cGUsIG5ldwoJcGFyYW1ldGVycyBwYWRkaW5nMSwgcGFkZGluZzIsIHVzZSBpeDg2X25zYXZlZF9yZWdzLCB1c2UKCXN0YWNrX2FsaWdubWVudF9uZWVkZWQuCgkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IEhhbmRsZSBGUkFNRV9QT0lOVEVSX1JFR05VTQoJdG8gSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSBjb252ZXJzaW9ucy4KCShpeDg2X2V4cGFuZF9wcm9sb2d1ZSk6IEhhbmRsZSBTQVZFRF9SRUdTX0ZJUlNUIHByb2xvZ3Vlcy4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IEhhbmRsZSBTQVZFRF9SRUdTX0ZJUlNUIGVwaWxvZ3Vlcy4KCShwcmludF9yZWcpOiBBYm9ydCBvbiBGUkFNRV9QT0lOVEVSX1JFR05VTQoKTW9uIEphbiAyNCAxNjo1MDowOCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgYWxpZ25lZF9vcGVyYW5kLgoJKiBpMzg2LmMgKGFsaWduZWRfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X2FsaWduZWRfcCk6IEtpbGwuCgkqIGkzODYubWQgKG1vdmhpXzEpOiBFbWl0IG1vdiBmb3IgYWxpZ25lZCBvcGVyYW5kcy4KCShwcm9tb3RpbmcgcGVlcDJzKTogVXNlIGFsaWduZWRfb3BlcmFuZC4KCjIwMDAtMDEtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChmaXhfY2hhcl9tYWNyb191c2VzKTogQ29ycmVjdCByZWd1bGFyCglleHByZXNzaW9uIHRvIGFsbG93IHVuZGVyc2NvcmVzIGluIG1hY3JvIG5hbWVzLgoJKGZpeF9jaGFyX21hY3JvX2RlZmluZXMpOiBJbmNyZW1lbnQgc2Nhbm5pbmcgcG9pbnRlci4KCjIwMDAtMDEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS9vc2YuaCAoVEFSR0VUX0hBU19YRkxPQVRJTkdfTElCUyk6IERlZmluZS4KCSogYWxwaGEvb3NmNS5oOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChhbHBoYS0qLW9zZjUpOiBBZGQgaXQgdG8gdG1fZmlsZS4KCgkqIGVtaXQtcnRsLmMgKG9wZXJhbmRfc3Vid29yZCk6IFN1cHBvcnQgVEZtb2RlIG9uIGEgNjQtYml0IHRhcmdldC4KCgkqIGFscGhhLXByb3Rvcy5oIChhbHBoYV9lbWl0X3hmbG9hdGluZ19hcml0aCk6IERlY2xhcmUuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0LCBmdW5jdGlvbl9hcmcpOiBEZWNsYXJlLgoJKiBhbHBoYS5jIChhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IENhbGwKCWFscGhhX2VtaXRfeGZsb2F0aW5nX2NvbXBhcmUgZm9yIFRGbW9kZSBjb21wYXJlcy4KCShhbHBoYV9sb29rdXBfeGZsb2F0aW5nX2xpYl9mdW5jKTogTmV3LgoJKGFscGhhX2NvbXB1dGVfeGZsb2F0aW5nX21vZGVfYXJnKTogTmV3LgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2xpYmNhbGwpOiBOZXcuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfYXJpdGgpOiBOZXcuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY29tcGFyZSk6IE5ldy4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19jdnQpOiBOZXcuCgkocHJpbnRfb3BlcmFuZCk6IEFkZCBkZWZhdWx0IGFib3J0IGNhc2UuCgkoZnVuY3Rpb25fYXJnKTogTWluZCBGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UuCgkqIGFscGhhLmggKFRBUkdFVF9IQVNfWEZMT0FUSU5HX0xJQlMpOiBOZXcuCgkoQklHR0VTVF9BTElHTk1FTlQpOiBJbmNyZWFzZSB0byAxMjggYml0cy4KCShSRVRVUk5fSU5fTUVNT1JZKTogVHJ1ZSBmb3IgVEYvVENtb2RlLgoJKEFMUEhBX0FSR19TSVpFKTogVEYvVENtb2RlIGlzIHBhc3NlZCBpbmRpcmVjdC4KCShGVU5DVElPTl9BUkcpOiBNb3ZlIHRvIGZ1bmN0aW9uX2FyZy4KCShGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkoQVNNX09VVFBVVF9MT05HX0RPVUJMRSk6IE5ldy4KCShBU01fT1VUUFVUX0RPVUJMRSk6IEFsd2F5cyBvdXRwdXQgYml0cy4KCSogYWxwaGEubWQgKGFkZHRmMywgZGl2dGYzLCBtdWx0ZjMsIHN1YnRmMywgY21wdGYpOiBOZXcuCgkoZml4X3RydW5jdGZkaTIsIGZsb2F0ZGl0ZjIsIGZsb2F0dW5zZGl0ZjIpOiBOZXcuCgkoZXh0ZW5kZGZ0ZjIsIHRydW5jdGZkZjIpOiBOZXcuCgoyMDAwLTAxLTIzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLXNsZC02NC5oIChUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUpOiBNb3ZlZC4uLgoJKiBjb25maWcvc3BhcmMvc29sMi5oOiAuLi4gaGVyZS4KCjIwMDAtMDEtMjQgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wcyk6IE5ldyBmaWVsZCBgbGV2ZWxzJy4KCSogZmxvdy5jIChmbG93X2xvb3BzX2xldmVsX2NvbXB1dGUpOiBUcmF2ZXJzZSBhbGwgb3V0ZXIgbG9vcHMuCgkoZmxvd19sb29wX2xldmVsX2NvbXB1dGUpOiBJbml0aWFsaXNlIGxldmVsIHRvIDEuCgkoZmxvd19sb29wc19maW5kKTogU2V0IGxvb3BzLT5sZXZlbHMuCgkoZmxvd19sb29wc19kdW1wKTogUHJpbnQgbG9vcHMtPmxldmVscy4KCjIwMDAtMDEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsaWJnY2MyLmMgKGR3YXJmX3JlZ19zaXplX3RhYmxlKTogU2l6ZSB3aXRoIERXQVJGX0ZSQU1FX1JFR0lTVEVSUy4KCSh0aHJvd19oZWxwZXIpOiBJdGVyYXRlIG92ZXIgRFdBUkZfRlJBTUVfUkVHSVNURVJTLgoKMjAwMC0wMS0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoZGJ4X3JlZ2lzdGVyX21hcCwgc3ZyNF9kYnhfcmVnaXN0ZXJfbWFwKTogTmV3LgoJKiBpMzg2LmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBVc2UgdGhlbS4KCSogaTM4Ni9iZW9zLWVsZi5oLCBpMzg2L2ZyZWVic2QtZWxmLmgsIGkzODYvaTM4NmVsZi5oOiBMaWtld2lzZS4KCSogaTM4Ni9saW51eC5oLCBpMzg2L29zZnJvc2UuaCwgaTM4Ni9wdHg0LWkuaDogTGlrZXdpc2UuCgkqIGkzODYvcnRlbXNlbGYuaCwgaTM4Ni9zY281LmgsIGkzODYvc3lzdjQuaDogTGlrZXdpc2UuCgkqIGkzODYvc2VxdWVudC5oOiBLaWxsIGluY29ycmVjdCBjb21tZW50LgoKMjAwMC0wMS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdnYy1wYWdlLmMgKHN0cnVjdCBwYWdlX2VudHJ5KTogTWFrZSBgY29udGV4dF9kZXB0aCcgYW4KCWB1bnNpZ25lZCBzaG9ydCcuCgkoc3RydWN0IGdsb2JhbHMpOiBMaWtld2lzZS4KCjIwMDAtMDEtMjMgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3ApOiBXaGVuIGNoZWNraW5nIGEgbG9vcCBmb3IKCXJldmVyc2FiaWxpdHksIGNoZWNrIHRoZSBzb3VyY2Ugb2YgYW55IHN0b3JlcyB0byBlbnN1cmUKCXRoZXkgZG9uJ3QgZGVwZW5kIG9uIGFuIGluaXRpYWwgdmFsdWUuCgoyMDAwLTAxLTIzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChBU01fT1VUUFVUX0JTUyk6IFJlZGVmaW5lLgoKMjAwMC0wMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYzogTW92ZSBkZWNsYXJhdGlvbnMgb2YgJ3B6X2ZuYW1lJyBhbmQKCSdwel9zY2FuJyBpbnRvIHNjb3BlIG9mIGVudGlyZSBmdW5jdGlvbi4gIE9ubHkgYWZmZWN0cwoJY29tcGlsZXMgd2l0aCAtRERFQlVHLgoKMjAwMC0wMS0yMiAgQWxhbiBNb2RyYSA8YWxhbkBTUFJJLkxldmVscy5VbmlTQS5FZHUuQXU+CgoJKiBjb25maWcvZWxmb3MuaCAoVU5JUVVFX1NFQ1RJT04pOiBSZXN0b3JlIHVuaW5pdGlhbGlzZWQgZGF0YQoJc2VjdGlvbiBuYW1pbmcgdG8gdGhhdCBwcmlvciB0byAyMDAwLTAxLTA3IHBhdGNoLgoJKiBjb25maWcvbWlwcy9lbGYuaCAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL21pcHMvZWxmNjQuaCAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL2kzODYvaW50ZXJpeC5jIChVTklRVUVfU0VDVElPTik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChVTklRVUVfU0VDVElPTik6IERpdHRvLgoKMjAwMC0wMS0yMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5jIChzb2Z0X2RmX29wZXJhbmQpOiBSZWplY3QgU1VCUkVHcyBjb250YWluaW5nIGEKCWNvbnN0YW50LgoKMjAwMC0wMS0yMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZml4aW5jL2luY2xoYWNrLnRwbDogVGVzdCBmb3IgZGlyZWN0b3J5IGJlZm9yZSB0cnlpbmcgdG8gY2QgaW50byBpdC4KCSogZml4aW5jL2ZpeGluY2wuc2gsIGZpeGluYy9pbmNsaGFjay5zaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoY2hhbmdlX25ld2xpbmVzKTogRGVsZXRlIGZ1bmN0aW9uLgoJKHN0cnVjdCBhcmdkYXRhKTogRGVsZXRlICduZXdsaW5lcycgYW5kICd1c2VfY291bnQnIGZpZWxkcy4KCShtYWNyb2V4cGFuZCk6IFJlbW92ZSBjb2RlIHJlZmVyZW5jaW5nIHRob3NlIGZpZWxkcy4KCjIwMDAtMDEtMjIgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuYyAobG9vcHNfaW5mbyk6IE5ldyB2YXJpYWJsZS4KCShsb29wX29wdGltaXplKTogQWxsb2NhdGUgbG9vcHMtPmFycmF5IGFuZCBmcmVlIGl0IG9uIGV4aXQuCglBbGxvY2F0ZSBtZW1vcnkgZm9yIGxvb3BzX2luZm8gYW5kIGFzc2lnbiB0byBlYWNoIGxvb3AsCglyZXBsYWNpbmcgYWxsb2NhLgoJKGZpbmRfYW5kX3ZlcmlmeV9sb29wcyk6IERvIG5vdCBhbGxvY2F0ZSBsb29wcy0+YXJyYXkuCgoyMDAwLTAxLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFjaGluZV9uYW1lX2ZpeCk6IERvbid0IGZyZWUgJ3NjcmF0Y2gnLgoKMjAwMC0wMS0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG1vdnNpX3BpY19sYWJlbF9yZWYpOiBBdm9pZCBjcmVhdGluZyBuZXcKCXBzZXVkb3MgaWYgZXhwYW5kZWQgYWZ0ZXIgZmlyc3QgZmxvdy4KCShtb3ZkaV9waWNfbGFiZWxfcmVmKTogTGlrZXdpc2UuCgoyMDAwLTAxLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBkbyBhZGRyX3ZlYyBvcHRpbWl6YXRpb25zIGF0IC1PMC4KCjIwMDAtMDEtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChmaXhpbmMuc2gpOiBEZXBlbmQgb24gc3BlY3MuCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogQWRkIHJ1bGUgdG8gY3JlYXRlIG1hY2huYW1lLmguCgkoZml4bGliLm8pOiBEZXBlbmQgb24gbWFjaG5hbWUuaC4KCSogZml4aW5jL2ZpeHRlc3RzLmMgKG1hY2hpbmVfbmFtZSk6IE5ldyB0ZXN0LgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFjaGluZV9uYW1lKTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGxpYi5jIChtbl9nZXRfcmVnZXhwcyk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gZm9yCgl0aGUgbWFjaGluZV9uYW1lIHRlc3QgYW5kIGZpeC4KCSogZml4aW5jL2ZpeGxpYi5oOiBQcm90b3R5cGUgaXQuCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG1hY2hpbmVfbmFtZSk6IFVzZSB0aGUgQyB0ZXN0IGFuZCBmaXguCgkqIGZpeGluYy9maXhpbmNsLngsIGZpeGluYy9pbmNsaGFjay5zaDogUmVidWlsZC4KCgkqIGdjYy5jIChkb19zcGVjXzEpIFtjYXNlIFBdOiBUYWtlIGNhcmUgbm90IHRvIGNyZWF0ZQoJaWRlbnRpZmllcnMgd2l0aCB0aHJlZSBsZWFkaW5nIG9yIHRyYWlsaW5nIHVuZGVyc2NvcmVzLgoKCSogZml4aW5jL01ha2VmaWxlLmluIChGSVhJTkNfREVGUyk6IEFkZCAtRElOX0dDQy4KCShmaXhpbmNsKTogRG9uJ3Qgc3BlY2lmeSBsaWJyYXJpZXMgdHdpY2Ugb24gbGluayBsaW5lLgoJKGdudS1yZWdleC5vKTogUmVtb3ZlIHNwZWNpYWwgcnVsZS4KCSogZml4aW5jL2dudS1yZWdleC5jOiBEZWZpbmUgUkVHRVhfTUFMTE9DIGlmIENfQUxMT0NBIHdhcwoJZGVmaW5lZCBieSBjb25maWcuaC4gIERvIG5vdCBkZWZpbmUgX1JFR0VYX1JFX0NPTVAuCgkocmVnY29tcCk6IEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgZmFzdG1hcC4KCSogZml4aW5jL2dudS1yZWdleC5oOiBEbyBub3QgZGVmaW5lIF9SRUdFWF9SRV9DT01QLgoKMjAwMC0wMS0yMCAgQnJhZCBMdWNpZXIgIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHByZWRpY3Qubyk6IERlcGVuZCBvbiAkKEVYUFJfSCksIG5vdCBleHByLmguCgoyMDAwLTAxLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBSZXBsYWNlIEZJUlNULCBMQVNUIGFuZCBCTlVNCglhcmd1bWVudHMgd2l0aCBCQi4gIFVwZGF0ZSBhbGwgY2FsbGVycy4gIFRpZHkgbGluZSB3cmFwcGluZy4KCjIwMDAtMDEtMTkgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAodHJ5X3NwbGl0KTogUmV0dXJuIGxhc3RfaW5zbiBpZiB3ZSBzcGxpdCB0aGUKCWxhc3RfaW5zbi4KClRodSBKYW4gMjAgMDE6MDE6MjMgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogUmVtb3ZlIHByb3RvdHlwZS4KCShpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogRGVjbGFyZS4KCSogaTM4Ni5jIChpeDg2X25zYXZlZF9yZWdzKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3ApOiAuLi4gaGVyZS4KCShpeDg2X2VtaXRfc2F2ZV9yZWdzKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiAuLi4gaGVyZS4KCShpeDg2X2VtaXRfZXBpbG9ndWVfZXNwX2FkanVzdG1lbnQsIGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3MpOiBCcmVhawoJb3V0IGZyb20gLi4uCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiAuLi4gaGVyZS4KCShpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IE1ha2Ugc3RhdGljLCBhZGQgcHJvdG90eXBlLgoJKGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBCcmVhayBvdXQgZnJvbSAuLi4KCSogaTM4Ni5oIChJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IC4uLiBoZXJlLgoKMjAwMC0wMS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVjb2cuaCAoT1VUX0ZDTik6IERlbGV0ZS4KCgkqIHZheC5tZDogQ2FsbCBgZ2V0X2luc25fdGVtcGxhdGUnIGluc3RlYWQgb2YgT1VUX0ZDTi4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGFsbG9jLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogY3BwZXJyb3IuYzogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuYzogTGlrZXdpc2UuCgkqIGNwcGxpYi5oOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGNvbmZpZy9hcm0vYXJtLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2ZyMzAvZnIzMC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9uZXh0c3RlcC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmM6IExpa2V3aXNlLgoJKiBjb25maWcvcGovcGouYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvdjg1MC92ODUwLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGkzNzAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogaTM3MC5jOiBJbmNsdWRlIHRtX3AuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiBpMzcwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBpMzcwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBpMzcwLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlYWwuYyAoZW5hbiwgZWluYW4sIGVpaXNuYW4sIGVpaXNuZWcsIG1ha2VfbmFuKTogV3JhcCBpbiBOQU5TLgoJKHRhcmdldF9pc2luZiwgdGFyZ2V0X2lzbmFuLCBlaXNuYW4pOiBNYXJrIHBhcmFtZXRlciB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGVpaXNpbmYpOiBXcmFwIGluIElORklOSVRZLgoJKGV0b2UxMTMsIGV0b2U2NCwgZXRvZTUzLCBldG9lMjQpOiBXcmFwIGxhYmVsIGBub25vcm0nIGluIElORklOSVRZLgoJKGlibXRvZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHJuZHNhdicuCgpXZWQgSmFuIDE5IDIwOjIzOjA2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKFBBU1NfSU5fUkVHX1ApOiBSZW1vdmUgZXh0cmFuZW91cyBwYXJhbnRoZXNpcy4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBBZGRlZCBtaXNzaW5nIHRhYi4KCjIwMDAtMDEtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogQ29ycmVjdCBkZXBlbmRlbmNpZXMgb2YgZml4aW5jbCBhbmQgZml4aW5jbC5vLgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoSU9fdXNlLCBDVFJMX3VzZSwgSU9fZGVmbiwgQ1RSTF9kZWZuKTogTmV3IGZpeGVzLgoJKGZpeF9jaGFyX21hY3JvX2RlZmluZXMsIGZpeF9jaGFyX21hY3JvX3VzZXMpOiBOZXcgZnVuY3Rpb25zLgoKCSogZml4aW5jL2ZpeGxpYi5jIChpc19jeHhfaGVhZGVyKTogRG8gdGhlIHRleHQgc2NhbiB3aXRoIGEgcmVnZXhwLgoJUmVjb2duaXplIEVtYWNzIG1vZGUgbWFya2VycyBhbHNvLgoJKiBmaXhpbmMvZml4dGVzdHMuYyAoZWxzZV9lbmRpZl9sYWJlbCk6IEZpeCBidWcgaW4gcmVjb2duaXRpb24gb2YKCUMrKyBjb21tZW50cyBpbiBDKysgaGVhZGVycy4gIENhbGwgaXNfY3h4X2hlYWRlciBvbmx5IGlmCgluZWNlc3NhcnkuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhdm9pZF9ib29sKTogQWRkIHNlbGVjdCBmb3IgdGhlIHByb2JsZW0gYW5kCglieXBhc3MgZm9yIG5jdXJzZXMuCgkoYnNkNDNfaW9fbWFjcm9zLCBpb19kZWZfcXVvdGVzLCBpb2N0bF9maXhfY3RybCk6IFJlcGxhY2Ugd2l0aC4uLgoJKGlvX2RlZl9xdW90ZXMsIGlvX3VzZV9xdW90ZXMsIGN0cmxfZGVmX3F1b3RlcywgY3RybF91c2VfcXVvdGVzKToKCS4uLiB0aGVzZSwgd2hpY2ggdXNlIHRoZSBuZXcgQyBmaXhlcy4KCShtYXRoX2V4Y2VwdGlvbik6IEVzY2FwZSBsaXRlcmFsICcrJyBpbiBieXBhc3MgZXhwcmVzc2lvbi4KCgkqIGZpeGluYy9maXhpbmNsLngsIGZpeGluYy9maXhpbmNsLnNoLCBmaXhpbmMvaW5jbGhhY2suc2g6CglSZWdlbmVyYXRlLgoKMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChyZWdfcmVmZXJlbmNlZF9wKTogQSBDTE9CQkVSIG9mIGEgTUVNIHVzZXMgYW55IFJFR3MKCWluc2lkZSB0aGUgTUVNLgoKMjAwMC0wMS0yMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbG9vcC5jIChsb29wX29wdGltaXplKTogQWxsb2NhdGUgbG9vcF9pbmZvIHN0cnVjdHVyZSBmb3IgZWFjaCBsb29wCglwcmlvciB0byBjYWxsaW5nIHNjYW5fbG9vcC4KCldlZCBKYW4gMTkgMTk6NTQ6MzggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guYyAoZmluZF9iYXJyaWVyLCBnZW5fYmxvY2tfcmVkaXJlY3QpOiBGaXggaW5kZW50YXRpb24uCgkoc3BsaXRfYnJhbmNoZXMsIGNhbGNfbGl2ZV9yZWdzKTogTGlrZXdpc2UuCgpXZWQgSmFuIDE5IDE5OjEyOjM2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLm1kIChmcHVfc2luZ2xlLCBmcF9tb2RlKTogTmV3IGF0dHJpYnV0ZXMuCgoyMDAwLTAxLTIwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBsb29wLmMgKGN1cnJlbnRfbG9vcF9pbmZvKTogUmVuYW1lZCBmcm9tIGxvb3BfaW5mb19kYXRhCglhbmQgY2hhbmdlZCB0byBhIHBvaW50ZXIuCgkobG9vcF9vcHRpbWl6ZSk6IEFsbG9jYXRlIGxvb3BfaW5mbyBzdHJ1Y3R1cmUgZm9yIGVhY2ggbG9vcAoJYW5kIGluaXRpYWxpc2UgdG8gemVyby4KCShzY2FuX2xvb3ApOiBTZXQgY3VycmVudF9sb29wX2luZm8uCgoJKiB1bnJvbGwuYyAobG9vcF9pdGVyYXRpb25zKTogRG9uJ3QgYWJvcnQgaWYgUkVHX1VTRVJWQVJfUCBzZXQKCW9uIGl0ZXJhdGlvbl92YXIuCgoyMDAwLTAxLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3R1cGlkLmM6IERpZSBkaWUgZGllLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IFJlbW92ZSBzdHVwaWQuby4KCShzdHVwaWQubyk6IExpa2V3aXNlLgoKCSogZXhjZXB0LmMgKGVtaXRfZWhfY29udGV4dCk6IERvbid0IGVtaXQgVVNFcyBmb3Igc3R1cGlkLgoJKiBleHBsb3cuYyAocHJvYmVfc3RhY2tfcmFuZ2UpOiBMaWtld2lzZS4KCSogZmxhZ3MuaCAob2JleV9yZWdkZWNscyk6IFJlbW92ZS4KCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IHJ1biB0cnlfbWVyZ2VfYmxvY2tzCgl3aGVuIG5vdCBvcHRpbWl6aW5nLgoJKGxpZmVfYW5hbHlzaXMpOiBMaW1pdCBkYXRhIGNvbGxlY3Rpb24gd2hlbiBub3Qgb3B0aW1pemluZy4KCShtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBBbHdheXMgbWFyayB0aGUgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KCShtYXJrX3VzZWRfcmVncyk6IFJlbW92ZSBkdW1teSBSRVRVUk4gY2FzZS4KCShwcmludF9ydGxfd2l0aF9iYik6IERvbid0IGNvbnN1bHQgb2JleV9yZWdkZWNscy4KCSogZnVuY3Rpb24uYyAodXNlX3ZhcmlhYmxlLCB1c2VfdmFyaWFibGVfYWZ0ZXIpOiBSZW1vdmUuCgkoYXNzaWduX3Bhcm1zKTogQ29uc3VsdCBvcHRpbWl6ZSBub3Qgb2JleV9yZWdkZWNscy4KCShleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBEb24ndCBlbWl0IFVTRXMgZm9yIHN0dXBpZC4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChidWlsZF9pbnNuX2NoYWluKTogRXhwb3J0LgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IEtpbGwgcmV0dXJuLXZhbHVlIFVTRQoJaGFuZGxpbmcgY29kZS4KCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEbyBzaW1wbGUganVtcCBvcHRpbWl6YXRpb25zIGFuZAoJZGVhZCBjb2RlIGVsaW1pbmF0aW9uLgoJKGNhbGN1bGF0ZV9jYW5fcmVhY2hfZW5kKTogUmVtb3ZlIGNoZWNrX2RlbGV0ZWQgYXJndW1lbnQuCgkoZGVsZXRlX2luc24pOiBQYXRjaCBvdXQgaW5zbnMgZXZlbiB3aGVuIG5vdCBvcHRpbWl6aW5nLgoJKiBsb2NhbC1hbGxvYy5jIChibG9ja19hbGxvYyk6IERvbid0IGRvIHR5aW5nIHdoZW4gbm90IG9wdGltaXppbmcuCgkqIHJ0bC5oICh1c2VfdmFyaWFibGUsIHVzZV92YXJpYWJsZV9hZnRlcik6IFJlbW92ZSBkZWNsYXJhdGlvbnMuCgkoYnVpbGRfaW5zbl9jaGFpbik6IERlY2xhcmUuCgkqIHN0bXQuYyAoZXhwYW5kX3ZhbHVlX3JldHVybik6IERvbid0IGVtaXQgVVNFcyBmb3Igc3R1cGlkLgoJKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBMaWtld2lzZS4KCShleHBhbmRfZGVjbCk6IExpa2V3aXNlLiAgQ29uc3VsdCBvcHRpbWl6ZSBub3Qgb2JleV9yZWdkZWNscy4KCSogdG9wbGV2LmMgKG9iZXlfcmVnZGVjbHMpOiBSZW1vdmUuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IERvbid0IHNldCBpdC4gIEtpbGwgc3R1cGlkIGluIGZhdm91ciBvZgoJZmxvdzEsIGxvY2FsLWFsbG9jLCBhbmQgcmVsb2FkLgoJKG1haW4pOiBEb24ndCBzZXQgb2JleV9yZWdkZWNscy4KCgkqIGNvbmZpZy9uZXh0c3RlcC5jIChoYW5kbGVfcHJhZ21hKTogTGlrZXdpc2UuCgoJKiBhbHBoYS9hbHBoYS5tZCAoYWxsb2NhdGVfc3RhY2spOiBEb24ndCBlbWl0IFVTRXMgZm9yIHN0dXBpZC4KCgkqIGFybS9hcm0uaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb24ndCBmaXggcmVnIDAgZm9yIHN0dXBpZC4KCjIwMDAtMDEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFscGhhLXByb3Rvcy5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGFscGhhLmM6IExpa2V3aXNlLgoJKiBlbGYuaDogTGlrZXdpc2UuCgkqIGg4MzAwLmM6IExpa2V3aXNlLgoJKiBpMzg2LXByb3Rvcy5oOiBMaWtld2lzZS4KCSogaTM4Ni5jOiBMaWtld2lzZS4KCSogbTMyci1wcm90b3MuaDogTGlrZXdpc2UuCgkqIG0zMnIuYzogTGlrZXdpc2UuCgkqIG1pcHMuYzogTGlrZXdpc2UuCgkqIG1pcHMubWQ6IExpa2V3aXNlLgoJKiBnbW9uLXNvbDIuYzogTGlrZXdpc2UuCgkqIHNwYXJjLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbnMzMmstcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbnMzMmsuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIG5zMzJrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBuczMyay1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogbnMzMmsubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmF4LXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHZheC5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogdmF4Lmg6IE1vdmUgcHJvdG90eXBlcyB0byB2YXgtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIHZheC5tZDogTGlrZXdpc2UuCgoJKiB2YXh2Lm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJvbXAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogcm9tcC5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogcm9tcC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gcm9tcC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogcm9tcC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB3ZTMyay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiB3ZTMyay5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogd2UzMmsuaDogTW92ZSBwcm90b3R5cGVzIHRvIHdlMzJrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoyMDAwLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IE1hcmsgcGFyYW1ldGVyIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGV4Y2VwdC5jIChlaF9yZWdzKTogTGlrZXdpc2UuCgoJKiBmaW5hbC5jIChvdXRwdXRfb3BlcmFuZCk6IExpa2V3aXNlLgoKCSogZm9sZC1jb25zdC5jICh0YXJnZXRfaXNpbmYsIHRhcmdldF9pc25hbik6IExpa2V3aXNlLgoKVHVlIEphbiAxOCAxNjoxOTo1NSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxodWJpY2thQGZyZWVzb2Z0LmN6PgoKCSogaTM4Ni5oIChCSUdHRVNUX0FMSUdOTUVOVCk6IFNldCB0byAxMjguCgkoQklHR0VTVF9GSUVMRF9BTElHTk1FTlQpOiBTZXQgdG8gKFRBUkdFVF9BTElHTl9ET1VCTEUgPyA2NCA6IDMyKQoKCSogaTM4Ni5tZCAobWVtc3RyKTogRG8gbm90IHVzZSByZXAgc3Rvc2IgZm9yIGNvdW50cyBkaXZpc2libGUgYnkgNAoJd2hlbiBvcHRpbWl6ZV9zaXplLgoJKGNscnN0cnNpKTogUmV3cml0ZS4KCShzdHJzZXRoaSwgc3Ryc2V0cWkpOiBOZXcgZXhwYW5kZXJzLgoJKHN0cnNldGhpXzEsIHN0cnNldHFpXzEsIHJlcF9zdG9zc2ksIHJlcF9zdG9zcWkpOiBOZXcgaW5zbiBwYXR0ZXJucy4KCShjbXBzdHJzaSk6IEVtaXQgY29tcGFyZSBpbnNuIGJlZm9yZSBjbXBzdHJzaV8xCgkoY21wc3Ryc2lfbnopOiB1c2UgZmxhZ3MsIHNldCB0eXBlIHRvIHN0ciwgcHJlZml4X2xlbmd0aCB0byAxLgoJKHN0cmxlbnNpXzEpOiBMaWtld2lzZS4KCShjbXBzdHJzaV8xKTogTGlrZXdpc2U7IGRvIG5vdCBvdXRwdXQgY29tcGFyZS4KCShzdHJsZW4gZXhwYW5kZXIpOiBEbyBub3QgdW5yb2xsIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCSgqc3Vic2kzX2NhcnJ5KTogUmVuYW1lIHRvIHN1YnNpM19jYXJyeQoJKGFkZHFpM19jYyk6IE5ldyBwYXR0ZXJuLgoJKiBpMzg2LmggKHByb2Nlc3Nvcl9jb3N0cyk6IEFkZCBtb3ZlX3JhdGlvIGZpZWxkLgoJKE1PVkVfUkFUSU8pOiBVc2UgbW92ZV9yYXRpbyBmaWVsZCwgc2V0IHRvIDMgZm9yIE9QVElNSVpFX1NJWkUKCSogaTM4Ni5jICgqX2Nvc3QpOiBTZXQgbW92ZV9yYXRpby4KCSh4ODZfdW5yb2xsX3N0cmxlbik6IEVuYWJsZSBmb3IgQXRobG9uLCBQUHJvIGFuZCBLNiB0b28uCgkoeDg2X2V4cGFuZF9zdHJsZW5zaV8xKTogUmV3cml0ZSB0aGUgbWFpbiBsb29wLgoKMjAwMC0wMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBHaXZlIEZMT0FUX1NUT1JFX0ZMQUdfVkFMVUUgYSBtb2RlLgoJKiBjc2UuYyAoZmluZF9jb21wYXJpc29uX2FyZ3MsIGZvbGRfcnR4KTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChzdWJzdF9jb25zdGFudHMpOiBMaWtld2lzZS4KCSogbG9vcC5jIChnZXRfY29uZGl0aW9uKTogTGlrZXdpc2UuCgoJKiB0bS50ZXhpIChGTE9BVF9TVE9SRV9GTEFHX1ZBTFVFKTogVXBkYXRlIGRvY3MuCgoJKiBhbHBoYS5oIChGTE9BVF9TVE9SRV9GTEFHX1ZBTFVFKTogVXNlIFJFQUxfVkFMVUVfQVRPRi4KCjIwMDAtMDEtMTggIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGMtcGFyc2UuaW4gKFNBVkVfV0FSTl9GTEFHUyk6IENyZWF0ZSBhbiBJTlRFR0VSX0NTVC4KCShSRVNUT1JFX1dBUk5fRkxBR1MpOiBVbnBhY2sgaXQuCglDaGFuZ2Ugc2VtYW50aWMgdHlwZSBvZiBleHRlbnNpb24gdG8gdHR5cGUuCgkqIGMtY29tbW9uLmMgKHNwbGl0X3NwZWNzX2F0dHJzKTogRXhwZWN0IGFuIElOVEVHRVJfQ1NULgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLnksCglvYmpjL29iamMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhsaWIuYzogQWRkIGNvcHlyaWdodCBub3RpY2UuCgkoY29tcGlsZV9yZSk6IE5ldyBmdW5jdGlvbi4KCSogZml4aW5jL2ZpeGxpYi5oOiBQcm90b3R5cGUgY29tcGlsZV9yZS4KCgkqIGZpeGluYy9maXhmaXhlcy5jLCBmaXhpbmMvZml4dGVzdHMuYywgZml4aW5jL2ZpeGluY2wuYzoKCVVzZSBjb21waWxlX3JlIHRvIGNvbXBpbGUgcmVndWxhciBleHByZXNzaW9ucy4KCgkqIGZpeGluYy9maXhpbmNsLmMgKGVncmVwX3Rlc3QpOiBEb24ndCBib3RoZXIgYXNraW5nIHJlZ2V4ZWMKCXdoZXJlIHRoZSBwYXR0ZXJuIG1hdGNoZWQuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdW5fbWVtY3B5KTogTW92ZSB0byBBQUJfc3VuX21lbWNweSwKCXVzZSAncmVwbGFjZScuCgkodWx0cml4X2Fuc2lfY29tcGF0KTogTGlrZXdpc2UuCgkoaW50ZXJhY3R2X2FkZDEpOiBSZW5hbWUgdG8gJ2lzY19vbWl0c193aXRoX3N0ZGMnLCByZW1vdmUgc2hlbGwgdGVzdCwKCWFkZCBlZ3JlcCB0ZXN0LgoJKGludGVyYWN0dl9hZGQyLCBpbnRlcmFjdHZfYWRkMyk6IERlbGV0ZS4KCSh4MTFfc3ByaW50Zik6IERvbid0IHVzZSBmaWxlbmFtZSBnbG9iLgoJKiBmaXhpbmMvZml4aW5jbC54LCBmaXhpbmMvaW5jbGhhY2suc2gsIGZpeGluYy9maXhpbmNsLnNoOgoJUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHByaW50LXJ0bC5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIHJlYWwuYzogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYzogTGlrZXdpc2UuCgkqIHNkYm91dC5oOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmM6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jOiBMaWtld2lzZS4KCSogc3R1cGlkLmM6IExpa2V3aXNlLgoJKiB4Y29mZm91dC5jOiBMaWtld2lzZS4KCSogeGNvZmZvdXQuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0b3BsZXYuYzogUFJPVE8gLT4gUEFSQU1TLgoJKiB0b3BsZXYuaDogTGlrZXdpc2UuCgkqIHRyZWUuYzogTGlrZXdpc2UuCgkqIHRyZWUuaDogTGlrZXdpc2UuCgkqIHVucm9sbC5jOiBMaWtld2lzZS4KCSogdmFyYXNtLmM6IExpa2V3aXNlLgoJKiB2YXJyYXkuYzogTGlrZXdpc2UuCgkqIHZhcnJheS5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlbG9hZC5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIHJlbG9hZC5oOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jOiBMaWtld2lzZS4KCSogcmVvcmcuYzogTGlrZXdpc2UuCgkqIHJlc291cmNlLmg6IExpa2V3aXNlLgoJKiBydGwuYzogTGlrZXdpc2UuCgkqIHJ0bC5oOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogc2JpdG1hcC5oOiBMaWtld2lzZS4KCSogc2Rib3V0LmM6IExpa2V3aXNlLgoJKiBzdGFjay5oOiBMaWtld2lzZS4KCSogc3RtdC5jOiBMaWtld2lzZS4KCSogc3lzdGVtLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWFjaG1vZGUuaDogUFJPVE8gLT4gUEFSQU1TLgoJKiBtYmNoYXIuaDogTGlrZXdpc2UuCgkqIG1pcHMtdGR1bXAuYzogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYzogTGlrZXdpc2UuCgkqIG9wdGFicy5jOiBMaWtld2lzZS4KCSogb3V0cHV0Lmg6IExpa2V3aXNlLgoJKiBwcmVmaXguYzogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYzogTGlrZXdpc2UuCgkqIHByb3RvaXplLmM6IExpa2V3aXNlLgoJKiByZWFsLmg6IExpa2V3aXNlLgoJKiByZWNvZy5jOiBMaWtld2lzZS4KCSogcmVjb2cuaDogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmM6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiByZWdzLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2djLWNvbW1vbi5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGdnYy1wYWdlLmM6IExpa2V3aXNlLgoJKiBnZ2Mtc2ltcGxlLmM6IExpa2V3aXNlLgoJKiBnZ2MuaDogTGlrZXdpc2UuCgkqIGdsb2JhbC5jOiBMaWtld2lzZS4KCSogZ3JhcGguYzogTGlrZXdpc2UuCgkqIGd0aHItd2luMzIuaDogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmM6IExpa2V3aXNlLgoJKiBoYWxmcGljLmg6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYzogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5oOiBMaWtld2lzZS4KCSoganVtcC5jOiBMaWtld2lzZS4KCSogbGNtLmM6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogbG9vcC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbmF0dHIuYzogUFJPVE8gLT4gUEFSQU1TLgoJKiBnZW5hdHRydGFiLmM6IExpa2V3aXNlLgoJKiBnZW5jaGVjay5jOiBMaWtld2lzZS4KCSogZ2VuY29kZXMuYzogTGlrZXdpc2UuCgkqIGdlbmNvbmZpZy5jOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jOiBMaWtld2lzZS4KCSogZ2VuZXh0cmFjdC5jOiBMaWtld2lzZS4KCSogZ2VuZmxhZ3MuYzogTGlrZXdpc2UuCgkqIGdlbmdlbnJ0bC5jOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmM6IExpa2V3aXNlLgoJKiBnZW5vdXRwdXQuYzogTGlrZXdpc2UuCgkqIGdlbnBlZXAuYzogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoQklORk9fVlBUUl9GSUVMRCk6IEF1Z21lbnQgZG9jdW1lbnRhdGlvbi4KCjIwMDAtMDEtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogYWNsb2NhbC5tNCAoQUNfRlVOQ19NTUFQX1pFUk8pOiBOZXcgbWFjcm8uCgkqIGNvbmZpZ3VyZS5pbiAoQUNfRlVOQ19NTUFQX1pFUk8pOiBVc2UgaW5zdGVhZCBvZiBBQ19GVU5DX01NQVAuCgkqIGdnYy1wYWdlLmM6IFJlcGxhY2UgSEFWRV9NTUFQIHdpdGggSEFWRV9NTUFQX1pFUk8uCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wMS0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogQWRkIHBlZXBob2xlIHRvIG1lcmdlIHN1Y2Nlc3NpdmUgc3RhY2sKCWFkanVzdHMuCgpTYXQgSmFuIDE1IDE1OjQxOjE0IEVTVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBnY3NlLmMgKGluc2VydF9pbnNuX2VuZF9iYik6IFVzZSBlbWl0X2Jsb2NrX2luc25fYmVmb3JlCglpbnN0ZWFkIG9mIGVtaXRfaW5zbl9iZWZvcmUuICBBbHNvIGhhbmRsZSBOT1RFX0lOU05fQkFTSUNfQkxPQ0sKCXdoZW4gd2Fsa2luZyBiYWNrd2FyZHMgdG8gZmluZCBhbGwgdGhlIHBhcmFtZXRlciBsb2FkcyB3aGVuCgl0aGUgYmFzaWMgYmxvY2sgZW5kcyBpbiBhIGNhbGwuCgoyMDAwLTAxLTE1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBsb29wLmMgKHRoaXNfbG9vcF9pbmZvKTogRGVsZXRlLgoJKHVpZF9sb29wKTogQWRkIGluIHBsYWNlIG9mIHVpZF9sb29wX251bS4gIEFsbCB1c2VzIHVwZGF0ZWQuCgkobG9vcF9udW1iZXJfZXhpdF9jb3VudCk6IERlbGV0ZSBhbmQgcmVwbGFjZSB3aXRoIGVudHJ5IGluIGxvb3AKCXN0cnVjdHVyZS4gIEFsbCB1c2VzIHVwZGF0ZWQuCgkobG9vcF9udW1iZXJfbG9vcF9zdGFydHMsIGxvb3BfbnVtYmVyX2xvb3BfZW5kcyk6IExpa2V3aXNlLgoJKGxvb3BfbnVtYmVyX2xvb3BfY29udCwgbG9vcF9udW1iZXJfY29udF9kb21pbmF0b3IpOiBMaWtld2lzZS4KCShsb29wX291dGVyX2xvb3ApOiBMaWtld2lzZS4KCShsb29wX2ludmFsaWQsIGxvb3BfbnVtYmVyX2V4aXRfbGFiZWxzKTogTGlrZXdpc2UuCgkobG9vcF91c2VkX2NvdW50X3JlZ2lzdGVyKTogRGVsZXRlIGFuZCByZXBsYWNlIHdpdGggZW50cnkgaW4KCWxvb3BfaW5mbyBzdHJ1Y3R1cmUuCgkoZmluZF9hbmRfdmVyaWZ5X2xvb3BzKTogQWRkIGxvb3BzIGFyZ3VtZW50LgoJKHZlcmlmeV9kb21pbmF0b3IsIG1hcmtfbG9vcF9qdW1wLCBwcmVzY2FuX2xvb3ApOiBSZXBsYWNlIGxvb3Bfc3RhcnQsCglsb29wX2VuZCwgZXRjLiBhcmd1bWVudHMgd2l0aCBsb29wIHN0cnVjdHVyZSBwb2ludGVyLiAgQWxsIGNhbGxlcnMKCWNoYW5nZWQuCgkobG9vcF9yZWdfdXNlZF9iZWZvcmVfcCwgc2Nhbl9sb29wLCBzdHJlbmd0aF9yZWR1Y2UpOiBMaWtld2lzZS4KCShjaGVja19kYnJhX2xvb3AsIG5leHRfaW5zbl9pbl9sb29wLCB0cnlfY29weV9wcm9wKTogTGlrZXdpc2UuCgkobG9hZF9tZW1zX2FuZF9yZWNvdW50X2xvb3BfcmVnc19zZXQsIGxvYWRfbWVtcyk6IExpa2V3aXNlLgoJKGluc2VydF9iY3QpOiBMaWtld2lzZS4KCShiYXNpY19pbmR1Y3Rpb25fdmFyKTogTmV3IGFyZ3VtZW50IGxldmVsLgoJKiBsb29wLmggKHN0cnVjdCBsb29wX2luZm8pOiBEZWxldGUgZmllbGRzIG51bSwgbG9vcHNfZW5jbG9zZWQsCgl2dG9wLCBhbmQgY29udC4gIEFkZCB1c2VkX2NvdW50X3JlZ2lzdGVyLgoJKHVpZF9sb29wKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKGxvb3BfbnVtYmVyX2V4aXRfY291bnQpOiBMaWtld2lzZS4KCShsb29wX251bWJlcl9sb29wX3N0YXJ0cywgbG9vcF9udW1iZXJfbG9vcF9lbmRzKTogTGlrZXdpc2UuCgkobG9vcF9udW1iZXJfbG9vcF9jb250LCBsb29wX251bWJlcl9jb250X2RvbWluYXRvcik6IExpa2V3aXNlLgoJKGxvb3Bfb3V0ZXJfbG9vcCwgbG9vcF91c2VkX2NvdW50X3JlZ2lzdGVyKTogTGlrZXdpc2UuCgkobG9vcF9pbnZhbGlkLCBsb29wX251bWJlcl9leGl0X2xhYmVscyk6IExpa2V3aXNlLgoJKHVucm9sbF9sb29wKTogUmVwbGFjZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMKCXdpdGggbG9vcCBzdHJ1Y3R1cmUgcG9pbnRlci4KCShsb29wX3ByZWNvbmRpdGlvbl9wLCBsb29wX2l0ZXJhdGlvbnMpOiBMaWtld2lzZS4KCUluY2x1ZGUgYmFzaWMtYmxvY2suaC4KCSogdW5yb2xsLmM6ICh1bnJvbGxfbG9vcCk6IFJlcGxhY2UgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzCgl3aXRoIGxvb3Agc3RydWN0dXJlIHBvaW50ZXIuCgkobG9vcF9wcmVjb25kaXRpb25fcCwgbG9vcF9pdGVyYXRpb25zKTogTGlrZXdpc2UuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wKTogTmV3IGVudHJpZXMgdnRvcCwgY29udCwKCWNvbnRfZG9taW5hdG9yLCBzdGFydCwgZW5kLCB0b3AsIHNjYW5fc3RhcnQsIGV4aXRfbGFiZWxzLAoJZXhpdF9jb3VudC4KCSogTWFrZWZpbGUuaW4gKExPT1BfSCk6IEFkZCBiYXNpYy1ibG9jay5oIHRvIGRlcGVuZGVuY2llcy4KCjIwMDAtMDEtMTUgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRlZmF1bHRzLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBVc2UgSVNESUdJVC4KCjIwMDAtMDEtMTQgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmluOiBSZWJ1aWx0IGZvciAyMDAwLTAxLTEzIGNoYW5nZSB0byBhY2NvbmZpZy5oLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGRwMTEtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogcGRwMTEuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIHBkcDExLmg6IE1vdmUgcHJvdG90eXBlcyB0byBwZHAxMS1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogcGRwMTEubWQ6IExpa2V3aXNlLgoKCSogMmJzZC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1uMTAzMDAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbW4xMDMwMC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogbW4xMDMwMC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gbW4xMDMwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogbW4xMDMwMC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtbjEwMjAwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIG1uMTAyMDAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIG1uMTAyMDAuaDogTW92ZSBwcm90b3R5cGVzIHRvIG1uMTAyMDAtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIG1uMTAyMDAubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaDgzMDAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogaDgzMDAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGg4MzAwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBoODMwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogaDgzMDAubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmFyYXNtLmMgKGFzbV9vdXRwdXRfYnNzKTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShhc21fZW1pdF91bmluaXRpYWxpc2VkKTogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19JTlRfQ09ORE1PVkUpOiBOZXcuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFVzZSBJU0FfSEFTX0lOVF9DT05ETU9WRS4KCjIwMDAtMDEtMTQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgdHVybiBvbiBleHRyYQoJYWxpZ25tZW50IGZvciBtaXBzMTYuCgoyMDAwLTAxLTE0ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc192YV9hcmcpOiBGaXggZnBydiBmb3IgdGhlIDMyIGJpdAoJZWFiaSwgYW5kIG1ha2Ugc3VyZSBxdWV1ZWQgUE9TVElOQ1JFTUVOVCBydGwgaXMgZW1pdHRlZCBhdAoJdGhlIHJpZ2h0IHBvaW50LgoKMjAwMC0wMS0xNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChQQURfVkFSQVJHU19ET1dOKTogRGVmaW5lLgoJKHN0ZF9leHBhbmRfYnVpbHRpbl92YV9hcmcpOiBVc2UgdGhlIGFib3ZlIG1hY3JvLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBBRF9WQVJBUkdTX0RPV04pOiBEZWZpbmUuCgkqIHRtLnRleGkgKFJlZ2lzdGVyIEFyZ3VtZW50cyk6IERvY3VtZW50IHRoZSBhYm92ZSBtYWNyby4KCjIwMDAtMDEtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChlbWl0X2luc24pOiBJZiBjaGVja2luZyBpcyBlbmFibGVkLCBtYWtlIHN1cmUKCXRoYXQgdGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdXNlZCB0byBlbWl0IGEganVtcAoJaW5zdHJ1Y3Rpb24uCgoJKiBqdW1wLmMgKHJldHVybl9qdW1wXzEpOiBDb3BlIHdpdGggYmVpbmcgcGFzc2VkIGEgbnVsbCBydHguCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBlaC1jb21tb24uaDogUFJPVE8gLT4gUEFSQU1TLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogZXJyb3JzLmM6IExpa2V3aXNlLgoJKiBlcnJvcnMuaDogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZXhjZXB0Lmg6IExpa2V3aXNlLgoJKiBleHBsb3cuYzogTGlrZXdpc2UuCgkqIGV4cG1lZC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogZXhwci5oOiBMaWtld2lzZS4KCSogZmluYWwuYzogTGlrZXdpc2UuCgkqIGZpeC1oZWFkZXIuYzogTGlrZXdpc2UuCgkqIGZsb3cuYzogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5oOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc2gtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogc2guYzogSW5jbHVkZSBpbnNuLWNvbmZpZy5oLCB0b3BsZXYuaCwgcmVjb2cuaCBhbmQgdG1fcC5oLgoJQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIHNoLmg6IE1vdmUgcHJvdG90eXBlcyB0byBzaC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgkqIHNoLm1kOiBMaWtld2lzZS4KCSogZWxmLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYXJjLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGFyYy5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogYXJjLmg6IE1vdmUgcHJvdG90eXBlcyB0byBhcmMtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIGFyYy5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkc3AxNnh4LXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGRzcDE2eHguYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGRzcDE2eHguaDogTW92ZSBwcm90b3R5cGVzIHRvIGRzcDE2eHgtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIGRzcDE2eHgubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29udmV4LXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGNvbnZleC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogY29udmV4Lmg6IE1vdmUgcHJvdG90eXBlcyB0byBjb252ZXgtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGVseHNpLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGVseHNpLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBlbHhzaS5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gZWx4c2ktcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIGVseHNpLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChSRUdJU1RFUl9NT1ZFX0NPU1QpOiBSZW1vdmUgcmVkdW5kYW50CgljYXNlIGZvciBtb3ZpbmcgZnJvbSBISS9MTy9ISV9MT19SRUcuICBUaGlzIG1ha2VzIHRoZSBiZWhhdmlvcgoJbWF0Y2ggdGhlIGNvbW1lbnQgZm9yIE1JUFMxNi4KCkZyaSBKYW4gMTQgMDA6Mjg6MDYgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZmxvdy5jIChzcGxpdF9lZGdlKTogRG8gbm90IGNhbGwgc2V0X2Jsb2NrX2Zvcl9pbnNuIGlmIHdlCglkbyBub3QgaGF2ZSBhIGJhc2ljX2Jsb2NrX2Zvcl9pbnNuIHN0cnVjdHVyZS4KCgkqIGZyMzAuaCAoVFJBTVBPTElORV9URU1QTEFURSk6IFVzZSBub3BzIHRvIGVuc3VyZSB0aGUgc3RhdGljIGNoYWluCglhbmQgZGVzdGluYXRpb24gZnVuY3Rpb25zIGFyZSAzMmJpdCBhbGlnbmVkIHdpdGhpbiB0aGUgdHJhbXBvbGluZS4KCShUUkFNUE9MSU5FX1NJWkUsIElOSVRJQUxJWkVfVFJBTVBPTElORSk6IENvcnJlc3BvbmRpbmcgY2hhbmdlcy4KCShUUkFNUE9MSU5FX0FMSUdOTUVOVCk6IERlZmluZS4KCgkqIGNzZS5jIChjc2VfaW5zbik6IFdoZW4gY2hhbmdpbmcgKHNldCAocGMpIChyZWcpKSB0bwoJKHNldCAocGMpIChsYWJlbF9yZWYpKSwgdmVyaWZ5IHRoZSBjaGFuZ2UgY3JlYXRlcyBhIHZhbGlkIGluc24uCgoJKiBmcjMwLmMgKGNhbGxfb3BlcmFuZCk6IFRpZ2h0ZW4gYW5kIHJld29yayB0byBtYXRjaCBydWxlcyBmb3IKCWNhbGwgUlRMIGV4cHJlc3Npb25zLgoJKiBmcjMwLmggKFBSRURJQ0FURV9DT0RFUywgY2FzZSBjYWxsX29wZXJhbmQpOiBPbmx5IGFsbG93IE1FTXMuCgkqIGZyMzAubWQgKGNhbGwgcGF0dGVybnMpOiBJbXByb3ZlIGNvbnN0cmFpbnRzLgoKVGh1IEphbiAxMyAyMzo0NDowMyAyMDAwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnIzMC5jIChmcjMwX2V4cGFuZF9lcGlsb2d1ZSk6IFJldmVydCBsYXN0IGNoYW5nZS4KCVVzZSBlbWl0X2p1bXBfaW5zbiBmb3IgdGhlIHJldHVybiBpbnNuLgoKVGh1IEphbiAxMyAxNDo0NjowMyAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoJCQkgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jOiBOZXcgZmlsZS4gUHJlbGltaW5hcnkgaW5mcmFzdHJ1Y3R1cmUgd29yayBmb3Igc3RhdGljCglicmFuY2ggcHJlZGljdGlvbiBhbmQgYmFzaWMgYmxvY2sgcmVvcmRlcmluZy4KCSogYmFzaWMtYmxvY2suaDogQWRkIHByb3RvdHlwZSBmb3IgZXN0aW1hdGVfcHJvYmFiaWxpdHkuCgkqIE1ha2VmaWxlLmluOiBBZGQgcnVsZXMgZm9yIHByZWRpY3Quby4KCjIwMDAtMDEtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGZpeGluY2x1ZGVzICh2YV9saXN0KTogVXNlIF9fbm90X3ZhX2xpc3RfXyBmb3IgdGhlIGR1bW15LgoJKiBmaXhpbmMvKjogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjY2NwLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogY2V4cC55OiBMaWtld2lzZS4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYzogTGlrZXdpc2UuCgkqIGNvbnZlcnQuaDogTGlrZXdpc2UuCgkqIGNzZS5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBkYnhvdXQuaDogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuYzogTGlrZXdpc2UuCgkqIGRvcHJpbnQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0Lmg6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuaDogTGlrZXdpc2UuCgkqIGR5bi1zdHJpbmcuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IFdyYXAgdmFyYWlibGUgYHN0cnVjdF92YWx1ZV9zaXplX3J0eCcgaW4KCW1hY3JvIGNvbmRpdGlvbmFscyBndWFyZGluZyB1c2UuCgoJKiBkd2FyZjJvdXQuYzogSW5jbHVkZSAidG1fcC5oIi4KCgkqIGZ1bmN0aW9uLmMgKGxvY2F0ZV9hbmRfcGFkX3Bhcm0pOiBNYXJrIHBhcmFtZXRlciB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYGNvbnRleHQnLgoKCSogcmVvcmcuYyAobWFrZV9yZXR1cm5faW5zbnMpOiBXcmFwIHByb3RvdHlwZSBpbiBtYWNybyBIQVZFX3JldHVybi4KCjIwMDAtMDEtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLmMgKGZyMzBfZXhwYW5kX2VwaWxvZ3VlKTogRW1pdCBVU0VzIG9mIHBvcCdlZAoJcmVnaXN0ZXIgdG8gcHJldmVudCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoyMDAwLTAxLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBsb25nbG9uZy5oIFtpMzg2XSAodWRpdl9xcm5uZCk6IFJlbmFtZSAnZCcgYXJndW1lbnQgdG8gJ2R2JwoJdG8gYXZvaWQgLVd0cmFkaXRpb25hbCB3YXJuaW5nLgoKMjAwMC0wMS0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogMTc1MGEtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogMTc1MGEuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIDE3NTBhLmg6IE1vdmUgcHJvdG90eXBlcyB0byAxNzUwYS1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogMTc1MGEubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYTI5ay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBhMjlrLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBhMjlrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBhMjlrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGlwcGVyLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGNsaXBwZXIuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGNsaXBwZXIuaDogTW92ZSBwcm90b3R5cGVzIHRvIGNsaXBwZXItcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KClRodSBKYW4gMTMgMTY6MDM6MDYgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZV9ub3RlX3N0b3JlKTogVXNlIEhBUkRfUkVHTk9fTlJFR1MuCgoyMDAwLTAxLTEzICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtbmV3LWd4eC1hYmkpOiBOZXcgb3B0aW9uLgoJKiBhY2NvbmZpZy5oIChFTkFCTEVfTkVXX0dYWF9BQkkpOiBOZXcgZGVmaW5lLgoJKiBNYWtlZmlsZS5pbiAoR1hYX0FCSV9GTEFHKTogTmV3IHZhcmlhYmxlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTAxLTEzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IFVzZSBGT1JDRV9TVFJVQ1RfQkxLLgoJKiB0bS50ZXhpIChGT1JDRV9TVFJVQ1RfQkxLKTogRG9jdW1lbnQuCgkqIGNvbmZpZy9jNHgvYzR4LmggKEZPUkNFX1NUUlVDVF9CTEspOiBOZXcgbWFjcm8uCgpXZWQgSmFuIDEyIDIzOjEyOjQ3IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL25zMzJrL25zMzJrLm1kOiBSZXZlcnQgSmFuIDkgY2hhbmdlLgoKCSogZ2VucmVjb2cuYyAobWF5YmVfYm90aF90cnVlXzIpOiBEbyBub3QgY29tcGFyZSBhIHByZWRpY2F0ZS10ZXN0Cgl0byBhIG1vZGUtdGVzdCwgaWYgdGhlIHByZWRpY2F0ZSBpcyBhZGRyZXNzX29wZXJhbmQuCgpXZWQgSmFuIDEyIDIyOjM0OjAwIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbWJpbmUuYyAoaWZfdGhlbl9lbHNlX2NvbmQpOiBCZSBjYXJlZnVsIGFib3V0IHdoYXQga2luZHMKCW9mIFJUTCBleHByZXNzaW9ucyBhcmUgcGFzc2VkIHRvIG9wZXJhbmRfc3Vid29yZC4KCgkqIGZsb3cuYyAoc3BsaXRfZWRnZSk6IElmIHdlIGhhdmUgdG8gaW5zZXJ0IGEgbmV3IGp1bXAsIG1ha2UKCXN1cmUgdG8gYXNzb2NpYXRlIGl0IHdpdGggYSBiYXNpYyBibG9jay4KCgkqIGZsb3cuYyAoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IEEgYmxvY2sgd2l0aCBvbmUgc3VjY2Vzc29yCgljYW4gZW5kIGluIGEgSlVNUF9JTlNOIHRoYXQgaXMgbm90IGEgc2ltcGxlanVtcC4KCjIwMDAtMDEtMTIgIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBzY28uY29tPgoKCSogaTM4Ni9zY281LmggKElOSVRfU0VDVElPTl9BU01fT1BfQ09GRik6IFJlbmFtZSBzZWN0aW9uIHRvICJjdG9yIi4KCShCVUlMRF9WQV9MSVNUX1RZUEUpOiBEZWZpbmUuCgkoRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBFeHBsaWN0bHkgZGVmaW5lIHRvIGJldHRlciBpbnRlcmFjdAoJd2l0aCBjcnRzdHVmZi5jLgoKMjAwMC0wMS0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjY2NwLmMgKGRvX3ByYWdtYSk6IEFkZCBjYXN0IHRvIChjaGFyICopLgoKMjAwMC0wMS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChpPzg2LSotYmVvc3twZSxlbGYsfSopOiBSZWNvZ25pemUuCgkqIGkzODYvdC1iZW9zLCBpMzg2L3gtYmVvcywgaTM4Ni94bS1iZW9zLmg6IE5ldyBmaWxlcy4KCSogaTM4Ni9iZW9zLWVsZi5oLCBpMzg2L2Jlb3MtcGUuaDogTmV3IGZpbGVzLgoKCSogTWFrZWZpbGUuaW4gKENST1NTX1NZU1RFTV9IRUFERVJfRElSKTogTmV3LgoJKiBjcm9zcy1tYWtlIChTWVNURU1fSEVBREVSX0RJUik6IERlZmluZSB1c2luZwoJQ1JPU1NfU1lTVEVNX0hFQURFUl9ESVIuCgoJKiBnY2MuYyAoTElCUkFSWV9QQVRIX0VOVik6IFByb3ZpZGUgZGVmYXVsdC4KCShwcm9jZXNzX2NvbW1hbmQpOiBVc2UgaXQuCgkobWFpbik6IExpa2V3aXNlLiAgS2lsbCB0cmFpbGluZyA9IGZyb20gZW52IHZhcnMuCgkoYnVpbGRfc2VhcmNoX2xpc3QpOiBQdXQgaXQgYmFjay4KCSogY29sbGVjdDIuYyAobWFpbik6IFVzZSBMSUJSQVJZX1BBVEhfRU5WLgoKCSogY29uZmlndXJlLmluIChHQ0NfTkVFRF9ERUNMQVJBVElPTlMpOiBBZGQgZW52aXJvbi4KCSogdG9wbGV2LmM6IFVzZSBORUVEX0RFQ0xBUkFUSU9OX0VOVklST04uCgoJKiB0bS50ZXhpIChGcmFtZSBMYXlvdXQpOiBEb2N1bWVudCBTTUFMTF9TVEFDSy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQ2hlY2sgaXQuCgoJKiBzeXN0ZW0uaDogVW5kZWYgYWxsb2NhIGFmdGVyIGluY2x1ZGluZyBnbGliYydzIDxzdGRsaWIuaD4sCglpZiBVU0VfQ19BTExPQ0EgaXMgZGVmaW5lZC4KCgkqIGdjYy5jIChzZXRfaW5wdXQpOiBOZXcgZm4uCgkobWFpbik6IEFmdGVyIGFsbCBpbnB1dCBmaWxlcyBhcmUgY29tcGlsZWQsIHJlc2V0IHRoZSBpbnB1dCBmaWxlCglpbmZvIHRvIHRoZSBmaXJzdC4KCgkqIGFjbG9jYWwubTQgKHJpbmRleCwgaW5kZXgpOiBJZiBhbHJlYWR5IGRlZmluZWQsIGRvbid0IGF0dGVtcHQKCXRvIHJlZGVmaW5lLgoKCSogZ2luY2x1ZGUvdmFyYXJncy5oOiAoX192YV9saXN0X18pOiBEZWZpbmUgaWZuZGVmLgoJKiBnaW5jbHVkZS9zdGRhcmcuaDogTGlrZXdpc2UuCgoJKiBnaW5jbHVkZS9zdGRkZWYuaCAoX19XQ0hBUl9UWVBFX18pIFtCRU9TXTogVXNlIGludAoJaW5zdGVhZCBvZiB1bnNpZ25lZCBjaGFyLgoKCSogaGFzaC5oICh0cnVlLCBmYWxzZSwgYm9vbGVhbik6IFVuZGVmIGJlZm9yZSBlbnVtLgoKCSogZXhwbWVkLmMgKGNob29zZV9tdWx0aXBsaWVyKTogQ2FzdCAmbWhpZ2hfbG8gYW5kICZtaGlnaF9oaSB0byBiZQoJcHJvcGVyIHR5cGUgb2YgIkhPU1RfV0lERV9JTlQgKiIsIHJhdGhlciB0aGFuIHRoZWlyIG5hdHVyYWwgdHlwZSBvZgoJInVuc2lnbmVkIEhPU1RfV0lERV9JTlQgKiIuCgoyMDAwLTAxLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzdnIzLmggKEFTTV9GSUxFX1NUQVJUKTogV3JhcCBpZi1jbGF1c2UgaW4gc3F1aWdseSBicmFja2V0cy4KCgkqIHJlY29nLmMgKG1lbW9yeV9hZGRyZXNzX3ApOiBNYXJrIHBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiByZWdjbGFzcy5jIChjaG9vc2VfaGFyZF9yZWdfbW9kZSk6IExpa2V3aXNlLgoKCSogcmVsb2FkLmMgKGZpbmRfdmFsaWRfY2xhc3MsIHN0cmljdF9tZW1vcnlfYWRkcmVzc19wKTogTGlrZXdpc2UuCgoJKiByZW9yZy5jIChvcHRpbWl6ZV9za2lwKTogV3JhcCBwcm90b3R5cGUgaW4gbWFjcm8gY29uZGl0aW9uYWxzLgoKMjAwMC0wMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYzogUFJPVE8gLT4gUEFSQU1TLgoJKiBjLWNvbW1vbi5oOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLWl0ZXJhdGUuYzogTGlrZXdpc2UuCgkqIGMtbGFuZy5jOiBMaWtld2lzZS4KCSogYy1sZXguYzogTGlrZXdpc2UuCgkqIGMtbGV4Lmg6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuYzogTGlrZXdpc2UuCgkqIGMtcHJhZ21hLmg6IExpa2V3aXNlLgoJKiBjLXRyZWUuaDogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmM6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0LmM6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0Lmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbTg4ay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBtODhrLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBtODhrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBtODhrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIG04OGsubWQ6IExpa2V3aXNlLgoKCSogdGVrWEQ4OC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG02OGstcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbTY4ay5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogbTY4ay5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gbTY4ay1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiBtb3QzMzAwLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xMiAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKHNwbGl0X2VkZ2VzKTogUGFzcyBlZGdlc2V0X3NpemUgYXMgc2Vjb25kIGFyZyB0bwoJZXh0cmFjdF9iaXRsc3QuCgkoZXh0cmFjdF9iaXRsaXN0KTogRGVjbGFyZSBiaXRsZW4uCgoyMDAwLTAxLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmcKCgkqIGNjY3AuYzogQWNjZXB0IGFuZCBpZ25vcmUgLWxhbmctZm9ydHJhbi4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IElzc3VlIC1XY2FzdC1xdWFsIHdhcm5pbmdzIGlmIHRoZQoJcXVhbGlmaWVycyBkb24ndCBtYXRjaCBhdCBhbnkgbGV2ZWwgb2YgcG9pbnRlcm5lc3MuCgoyMDAwLTAxLTEyICBSb2JlcnQgTGlwZSAgPHJvYmVydGxAc2NvLmNvbT4KCgkqIGkzODYvc3lzdjUuaCAoQ1BQX1NQRUMsIExJQlNQRUMpOiBBZGQgLXB0aHJlYWRULgoKMjAwMC0wMS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9yZWdfdW5hdmFpbGFibGUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHJlbG9hZF9yZWdfZnJlZV9wKTogVGVzdCBpdC4KCShyZWxvYWRfcmVnX2ZyZWVfZm9yX3ZhbHVlX3ApOiBUZXN0IGl0IGluc3RlYWQgb2YKCXJlbG9hZF9yZWdfdXNlZC4KCShjaG9vc2VfcmVsb2FkX3JlZ3NfaW5pdCk6IENvbXB1dGUgaXQuCgpXZWQgSmFuIDEyIDAzOjI0OjQxIDIwMDAgIFRvc2hpeWFzdSBNb3JpdGEgKHRvc2hpLm1vcml0YUBzZWdhLmNvbSkKCgkqIHJlb3JnLmMgKGZpbGxfc2xvdHNfZnJvbV90aHJlYWQpOiBDaGVjayBtb2RpZmllZF9pbl9wCgliZWZvcmUgcmVwbGFjaW5nLgoKV2VkIEphbiAxMiAwMzoyMDozMSAyMDAwICBKb2huIE1hcnNoYWxsIDxqb2huX3dfbWFyc2hhbGxAcGFsbS5jb20+CgoJKiBnY2MudGV4aSAoRnVuZGluZywgR05VL0xpbnV4LCBDb3B5aW5nLCBDb250cmlidXRvcnMpOiBGb3JtYXQKCXRoZXNlIG5vZGVzIGV2ZW4gaWYgSU5URVJOQUxTIGlzIG5vdCBzZXQuCgpXZWQgSmFuIDEyIDA5OjM5OjIyIDIwMDAgIE5pY2sgQnVycmV0dCAgPG5pY2suYnVycmV0dEBidGludGVybmV0LmNvbT4KCgkqIGdjc2UuYyAoZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3NfMSk6IENvcGUgd2hlbgoJZ2V0X2NvbmRpdGlvbiBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBjb25kaXRpb24uCgoyMDAwLTAxLTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuaCAoc2V0X21lc3NhZ2VfbGVuZ3RoKTogRGVjbGFyZS4KCgkqIGRpYWdub3N0aWMuYyAob2JzdGFja19jaHVua19hbGxvYyk6IERlZmluZSBtYWNyby4KCShvYnN0YWNrX2NodW5rX2ZyZWUpOiBMaWtld2lzZS4KCShzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcik6IE5ldyBkYXRhIHN0cnVjdHVyZS4KCSh2bWVzc2FnZSk6IFJlbW92ZS4KCShvdXRwdXRfbWF4aW11bV93aWR0aCk6IE5ldyB2YXJpYWJsZS4KCShkb2luZ19saW5lX3dyYXBwaW5nLCBzZXRfbWVzc2FnZV9sZW5ndGgsIGluaXRfb3V0cHV0X2J1ZmZlciwKCWdldF9vdXRwdXRfcHJlZml4LCBvdXRwdXRfc3BhY2VfbGVmdCwgZW1pdF9vdXRwdXRfcHJlZml4LAoJb3V0cHV0X25ld2xpbmUsIG91dHB1dF9hcHBlbmQsIG91dHB1dF9wdXRzLCBkdW1wX291dHB1dCwKCXZidWlsZF9tZXNzYWdlX3N0cmluZywgYnVpbGRfbWVzc2FnZV9zdHJpbmcsIGJ1aWxkX2xvY2F0aW9uX3ByZWZpeCwKCXZvdXRwdXRfbm90aWNlLCBvdXRwdXRfcHJpbnRmLCBsaW5lX3dyYXBwZXJfcHJpbnRmLAoJdmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiAgTmV3IGZ1bmN0aW9ucy4gSW1wbGVtZW50CglhdXRvbWF0aWMgbGluZSB3cmFwcGluZy4KCSh2X21lc3NhZ2Vfd2l0aF9kZWNsKTogTWFrZSBpdCBoYW5kbGUgYXV0b21hdGljIGxpbmUgd3JhcHBpbmcuCgkodl9lcnJvcl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBMaWtld2lzZS4KCSh2X3dhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lKTogTGlrZXdpc2UuCgkoYW5ub3VuY2VfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAxLTExIDE2OjI0IC0wODAwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogQ2hhbmdlIGxhbmdfYXNtIHRvIGNoYXIuCglBZGQgbGFuZ19mb3J0cmFuLgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBUYWtlIG91dCBfX1NURENfVkVSU0lPTl9fLCBpdCdzCglkb25lIGluIGNwcF9oYW5kbGVfb3B0aW9uIG5vdy4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogVGFrZSBvdXQgc3BlY2lhbCBjYXNlIGNvZGUgdXNlZCBvbmx5IGJ5CglfX1NURENfVkVSU0lPTl9fLgoJKGNwcF9oYW5kbGVfb3B0aW9uKTogVHVybiBvZmYgdHJpZ3JhcGhzIGFuZCB0cmlncmFwaCB3YXJuaW5ncwoJaWYgLXRyYWRpdGlvbmFsLiAgUmVjb2duaXplIC1sYW5nLWZvcnRyYW4gYW5kIHNldAoJbGFuZ19mb3J0cmFuLCBhbHNvIHR1cm4gb2ZmIGNwbHVzcGx1c19jb21tZW50cy4KCShwcmludF9oZWxwKTogRG9jdW1lbnQgLWxhbmctZm9ydHJhbi4KCSogY3BwbGliLmMgKGhhbmRsZV9kaXJlY3RpdmUpOiBJZ25vcmUgYCMgMTIzICJmaWxlIicgaWYKCWxhbmdfYXNtLiBJZ25vcmUgYWxsIGRpcmVjdGl2ZXMgb3RoZXIgdGhhbiBgIyAxMjMgImZpbGUiJyBpZgoJQ1BQX1BSRVBST0NFU1NFRC4KCShjcHBfZ2V0X3Rva2VuKTogSWYgLXRyYWRpdGlvbmFsLCBkb24ndCByZWNvZ25pemUgZGlyZWN0aXZlcwoJdW5sZXNzIHRoZSAjIGlzIGluIGNvbHVtbiAxLgoJKHBhcnNlX3N0cmluZyk6IElmIGxhbmdfZm9ydHJhbiBvciBsYW5nX2FzbSwgc2lsZW50bHkKCXRlcm1pbmF0ZSBzdHJpbmdzICgnJyBvciAiIikgYXQgZW5kIG9mIGxpbmUuCglSZW1vdmUgdW5uZWNlc3NhcnkgYnJhY2VzLgoKMjAwMC0wMS0xMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlc291cmNlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMpOiBNYXJrIGEgc2V0IHN0cmljdF9sb3dfcGFydAoJYXMgdXNlZC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9zZXRjYyk6IFJlLWVuYWJsZSBjbGVhciArIHNldAoJc3RyaWN0X2xvd19wYXJ0IHdoZW4gcG9zc2libGUuCgoyMDAwLTAxLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbGlhcy5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGJhc2ljLWJsb2NrLmg6IExpa2V3aXNlLgoJKiBiaXRtYXAuYzogTGlrZXdpc2UuCgkqIGJpdG1hcC5oOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYzogTGlrZXdpc2UuCgkqIGMtYXV4LWluZm8uYzogTGlrZXdpc2UuCgkqIGNhbGxlci1zYXZlLmM6IExpa2V3aXNlLgoJKiBjYWxscy5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluICh0b3BsZXYubyk6IERlcGVuZCBvbiByZWdzLmguCgoJKiBvdXRwdXQuaCAodGRlc2Nfc2VjdGlvbik6IFByb3RvdHlwZS4KCgkqIHJlZ2NsYXNzLmMgKGNvcHlfY29zdCk6IE1hcmsgcGFyYW1ldGVycyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBzZGJvdXQuYzogSW5jbHVkZSAidG1fcC5oIi4KCgkqIHRvcGxldi5jOiBJbmNsdWRlICJyZWdzLmgiLgoKVHVlIEphbiAxMSAxMTozNzo1OCAyMDAwICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBBZGQgRUggc3VwcG9ydC4KCjIwMDAtMDEtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHBhLmM6IEluY2x1ZGUgcmVjb2cuaCBhbmQgdG1fcC5oLgoJKGNvbXB1dGVfemRlcHdpX29wZXJhbmRzLCBjb21wdXRlX21vdnN0cnNpX2xlbmd0aCwKCXJlbW92ZV91c2VsZXNzX2FkZHRyX2luc25zLCBzdG9yZV9yZWcsIGxvYWRfcmVnLCBzZXRfcmVnX3BsdXNfZCwKCWZpbmRfYWRkcl9yZWcsIGltcG9ydF9taWxsaSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShwYV9jcHVfc3RyaW5nLCBwYV9hcmNoX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFBhc3MgYXJndW1lbnQgYG1vZGUnIHRvIHBpY19sYWJlbF9vcGVyYW5kLgoJKHJlYWRfb25seV9vcGVyYW5kKTogQWRkIGFyZ3VtZW50IGBtb2RlJy4KCShzaW5nbGVtb3ZlX3N0cmluZywgb3V0cHV0X21vdmVfZG91YmxlLCBvdXRwdXRfZnBfbW92ZV9kb3VibGUsCglvdXRwdXRfYmxvY2tfbW92ZSwgb3V0cHV0X2FuZCwgb3V0cHV0X2lvciwgb3V0cHV0X2FzY2lpLAoJcmVtb3ZlX3VzZWxlc3NfYWRkdHJfaW5zbnMsIG1pbGxpX25hbWVzLCBvdXRwdXRfbXVsX2luc24sCglvdXRwdXRfZGl2X2luc24sIG91dHB1dF9tb2RfaW5zbiwgb3V0cHV0X2FyZ19kZXNjcmlwdG9yLAoJb3V0cHV0X2NicmFuY2gsIG91dHB1dF9iYiwgb3V0cHV0X2J2Yiwgb3V0cHV0X2RicmEsICwKCW91dHB1dF9taWxsaWNvZGVfY2FsbCwgb3V0cHV0X2NhbGwsIGhwcGFfZW5jb2RlX2xhYmVsLAoJb3V0cHV0X3BhcmFsbGVsX21vdmIsIG91dHB1dF9wYXJhbGxlbF9hZGRiKTogQ29uc3RpZnkgYSBjaGFyKi4KCShocHBhX3ZhX3N0YXJ0KTogTWFyayBwYXJhbWV0ZXIgYHN0ZGFyZ19wJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkob3V0cHV0X3BhcmFsbGVsX2FkZGIpOiBSZW1vdmUgZXh0cmEgYXJnIHRvIGBjb25zdHJhaW5fb3BlcmFuZHMnCgoJKiBwYS5oOiAgTW92ZSBhbGwgcHJvdG90eXBlcyB0byBwYS1wcm90b3MuaC4KCShwYV9jcHVfc3RyaW5nLCBwYV9hcmNoX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgkoTEVHSVRJTUlaRV9BRERSRVNTKTogQ2FsbCBgc3ltYm9saWNfb3BlcmFuZCcgd2l0aCBtb2RlIGFyZ3VtZW50LgoKCSogcGEubWQ6IENhbGwgYGZ1bmN0aW9uX2xhYmVsX29wZXJhbmQnIHdpdGggbW9kZSBhcmd1bWVudC4KCUxpa2V3aXNlIGZvciBgcmVhZF9vbmx5X29wZXJhbmQnLgoJRml4IG5lc3Rpbmcgb2YgcGFyZW5zIGluIGNhbGwgdG8gYHN5bWJvbGljX29wZXJhbmQnLgoKMjAwMC0wMS0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaTg2MC1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBpODYwLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBpODYwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBpODYwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIGk4NjAubWQ6IExpa2V3aXNlLgoKVHVlIEphbiAxMSAxODo1OTozNSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZzdHJzaSBleHBhbmRlcik6IFJld3JpdGUuCgkobW92c3Ryc2lfMSBpbnNuKTogRGVsZXRlZC4KCShzdHJtb3ZoaSwgc3RybW92cWkgZXhwYW5kZXIpOiBOZXcgZXhwYW5kZXJzLgoJKG1vdnNoaV8xLCBtb3ZzcWlfMSwgcmVwX21vdnNpLCByZXBfbW92cWkpOiBOZXcgcGF0dGVybnMuCgkqIGkzODYuYyAoeDg2X3NpbmdsZV9zdHJpbmdvcCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkqIGkzODYuaCAoeDg2X3NpbmdsZV9zdHJpbmdvcCk6IERlY2xhcmUuCgkoVEFSR0VUX1NJTkdMRV9TVFJJTkdPUCk6IE5ldyBtYWNyby4KCjIwMDAtMDEtMTEgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3ZhX2FyZyk6IEZvciBFQUJJLCBlbWl0IHRoZSBxdWV1ZWQKCWludGVnZXIgdmFyYXJnIFBPU1RJTkNSRU1FTlQgYmVmb3JlIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUganVtcAoJZm9yIHRoZSBoYXJkIGZwIGNhc2UuCgkoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogUGFzcyBhIGNvcHkgb2YgQ1VNIHRvCglGVU5DVElPTl9BUkcuCgoJKiBjb25maWcvbWlwcy9taXBzLmggKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IE1vdmUgY2hlY2sKCWZvciBDT05TVEFOVF9BRERSRVNTX1AgYWJvdmUgd2hpbGUgbG9vcCBmb3Igc3VicmVnLgoKMjAwMC0wMS0xMSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9ibG9jayk6IFdoZW4gYSBwcm9sb2d1ZS9lcGlsb2d1ZSBpbnNuCglpcyBtYXJrZWQgZGVhZCwgdW5jb25kaXRpb25hbGx5IGNsZWFyIGxpYmNhbGxfaXNfZGVhZCBhbmQKCWluc25faXNfZGVhZCwgYW5kIG9ubHkgZHVtcCBydGwgaWYgd2FybmluZ3MgYXJlbid0IGJlaW5nCglzdXBwcmVzc2VkLgoKVHVlIEphbiAxMSAxNjoyNjo0NyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfYXR0cl9sZW5ndGhfZGVmYXVsdCk6IEhhbmRsZSBUWVBFX1NUUiBhbmQgVFlQRV9DTEQuCgkqIGkzODYubWQgKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFNldCB0byAyMC4KCShGSVhFRF9SRUdJU1RFUlMpOiBTZXQgZGlyZmxhZyBhcyBmaXhlZC4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogU2V0IGRpcmZsYWcgYXMgdXNlZC4KCShSRUdfQUxMT0NfT1JERVIpOiBTZXQgZGlyZmxhZyBhcyBsYXN0IG9uZS4KCShESVJGTEFHX1JFRyk6IE5ldyBtYWNyby4KCShNRF9BU01fQ0xPQkJFUlMpOiBBc20gY2xvYmJlciBkaXJmbGFnIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoJKEhJX1JFR0lTVEVSX05BTUVTKTogQWRkIGRpcmZsYWcuCgkoREVCVUZfUFJJTlRfUkVHKTogSGFuZGxlIGRpcmZsYWcuCgkqIGkzODYubWQgKHR5cGUgYXR0cmlidXRlKTogTmV3IGNsZCBhbmQgc3RyIHR5cGVzLgoJKGxlbmd0aF9vcGNvZGUgYXR0cmlidXRlKTogU2V0IGNsZCBhbmQgc3RyIHRvIDEuCgkobWVtb3J5IGF0dHJpYnV0ZSk6IFNldCBzdHIgdG8gdW5rbm93biAtIGl0IGlzIG5vdCBjbGVhciBmcm9tIHRoZQoJcGF0dGVybnMuCgkocGVudF9ucCBmdW5jdGlvbiB1bml0KTogUHJlZml4ZWQgc3RyaW5nIG9wZXJhdGlvbnMgdGFrZXMgMTIgY3ljbGVzCgltaW5pbWFsbHk7IGNsZCB0YWtlcyAyIGN5Y2xlcy4KCShwcHJvX3VvcHMgYXR0cmlidXRlKTogU3RyIGlzICJtYW55IiBhbmQgY2xkIGlzICJmZXciLgoJKHBwcm9fcDAgdW5pdCk6IEhhbmRsZSBjbGQgaGVyZS4KCShrNl9hbHV4IHVuaXQpOiBIYW5kbGUgY2xkIGFuZCBzdHIgdHlwZXMuCgkoazZfbG9hZCB1bml0KTogSXQgaXMgb2N1cGllZCBieSBzdHIgb3Bjb2Rlcy4KCShrNl9zdG9yZSB1bml0KTogSXQgaXMgb2N1cGllZCBieSBzdHIgb3Bjb2Rlcy4KCShhdGhsb25fZGVjb2RlKTogU3RyIGlzIHZlY3RvciBkZWNvZGVkLgoJKGF0aGxvbl9pZXUpOiBIYW5kbGUgc3RyIGFuZCBjbGQuCgkoY2xkIHBhdHRlcm4pOiBOZXcuCgkobW92c3Ryc2ksIGNscnN0ciwgY21wc3RyLCBzdHJsZW4gZXhwYW5kZXIpOiBFbWl0IGNsZCBpbnN0cnVjdGlvbgoJKG1vdnN0cnNpXzEsIGNscnN0cnNpXzEsIGNtcHN0cnNpXzEsIHN0cmxlbnNpXzEsCgljbXBzdHJzaV9uel8xIGluc24pOiBEbyBub3Qgb3V0cHV0IGNsZCBpbnN0cnVjdGlvbgoKVHVlIEphbiAxMSAwNjoxNDozOSAyMDAwICBEYXZpZCBTdGFybmVyIDxkc3Rhcm5lcjk4QGFhc2FhLm9mZS5vcmc+CgoJKiBnY2MudGV4aSAoRysrIGFuZCBHQ0MpOiBBZGQgSmF2YSBhbmQgQ2hpbGwuCgkoQnVnIENyaXRlcmEpOiBEb24ndCBsaXN0IGxhbmd1YWdlcy4KCgkqIGdjYy50ZXhpIChJbmNvbXBhdGliaWxpdGllcyk6IE5vIGxvbmdlciBjbGFpbSBtb3N0IEMgY29tcGlsZXJzCglhcmUgSyZSLgoKCSogZ2NjLnRleGkgKEcrKyBhbmQgR0NDKTogVXBkYXRlIG90aGVyIGZyb250LWVuZHMgbGlzdC4KClR1ZSBKYW4gMTEgMDU6NDk6MDEgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9zZXRjYyk6IEZpeCB0eXBvLgoJKGl4ODZfZXhwYW5kX21vdmNjKTogU2ltaWxhcmx5LgoKCSogQmFuZC1haWQgdW50aWwgaGFpZmEncyBiaXRzZXQgaW1wbGVtZW50YXRpb24gaXMgbnVrZWQuCgkqIGhhaWZhLXNjaGVkLmMgKGV4dHJhY3RfYml0bHN0KTogTmV3IHBhcmFtZXRlciBmb3Igc2l6ZSBvZiB0aGUKCWJpdHNldCBpbiBiaXRzLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4gIEF2b2lkIGxvb2tpbmcgYXQgdW5kZWZpbmVkCgliaXRzIGluIHRoZSBiaXRzZXQuCgkoZWRnZXNldF9iaXRzaXplKTogTmV3IHZhcmlhYmxlLgoJKHNjaGVkdWxlX3JlZ2lvbik6IEluaXRpYWxpemUgZWRnZXNldF9iaXRzaXplLgoKMjAwMC0wMS0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKG9wdGFicy5vKTogRGVwZW5kIG9uIHJlYWwuaAoJKHJlc291cmNlLm8pOiBEZXBlbmQgb24gaW5zbi1hdHRyLmgKCgkqIGJ1aWx0aW5zLmMgKHJlc3VsdF92ZWN0b3IpOiBXcmFwIHByb3RvdHlwZSBpbiBtYWNybyBjb25kaXRpb25zCglnb3Zlcm5pbmcgZGVmaW5pdGlvbiBhbmQgdXNlLgoKCSogYy1jb21tb24uYzogSW5jbHVkZSB0bV9wLmguCgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCgkqIGVsZm9zLmg6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBmaW5hbC5jIChhbGlnbl9mdXp6KTogV3JhcCBwcm90b3R5cGUgaW4gbWFjcm8gSEFWRV9BVFRSX2xlbmd0aC4KCShnZXRfYXR0cl9sZW5ndGgsIHNob3J0ZW5fYnJhbmNoZXMsIHByb2ZpbGVfYWZ0ZXJfcHJvbG9ndWUpOiBNYXJrCglwYXJhbWV0ZXIgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZm9sZC1jb25zdC5jIChleGFjdF9yZWFsX2ludmVyc2UpOiBXcmFwIHZhcmlhYmxlIGBpJyBpbgoJQ0hFQ0tfRkxPQVRfVkFMVUUuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBvcHRhYnMuYzogSW5jbHVkZSByZWFsLmguCgoJKiByZWFsLmggKGVyZWFsX2F0b2YpOiBBZGQgcHJvdG90eXBlIGFyZ3VtZW50cy4KCgkqIHJlc291cmNlLmM6IEluY2x1ZGUgaW5zbi1hdHRyLmguCgoJKiBzZGJvdXQuYyAoc2Rib3V0X3F1ZXVlX2Fub255bW91c190eXBlLAoJc2Rib3V0X2RlcXVldWVfYW5vbnltb3VzX3R5cGVzKTogV3JhcCBpbiBtYWNybwoJU0RCX0FMTE9XX0ZPUldBUkRfUkVGRVJFTkNFUy4KCShzZGJvdXRfaW5pdCwgc2Rib3V0X3N0YXJ0X25ld19zb3VyY2VfZmlsZSk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBXcmFwIHZhcmlhYmxlIGBvcDAnIGluIG1hY3JvIEhBVkVfcmV0dXJuLgoKCSogc3R1cGlkLmM6IEluY2x1ZGUgdG1fcC5oLgoKCSogdHJlZS5jIChyZWFsX3ZhbHVlX2Zyb21faW50X2NzdCk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoyMDAwLTAxLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpOTYwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGk5NjAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGk5NjAuaDogTW92ZSBwcm90b3R5cGVzIHRvIGk5NjAtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKMjAwMC0wMS0xMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb21iaW5lLmMgKGV4cGFuZF9maWVsZF9hc3NpZ25tZW50KTogRG8gbm90IGRpc2NhcmQgU1VCUkVHcwoJd2hpbGUgY29tcHV0aW5nIG5vbnplcm9fYml0cy4KCjIwMDAtMDEtMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHNpZ25lZCB2cwoJdW5zaWduZWQgY29uc3RhbnRzLgoJKiBjb25maWcvYXJtL2FybS5oOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHNpZ25lZCB2cwoJdW5zaWduZWQgY29uc3RhbnRzLgoKMjAwMC0wMS0wOSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBVc2UgYGxkcicgcmF0aGVyCgl0aGFuIGBsZG0nIHdpdGggb25seSBvbmUgcmVnaXN0ZXIuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChwdXNoX211bHRpKTogVXNlIGBzdHInIHJhdGhlciB0aGFuIGBzdG0nIHdpdGgKCW9ubHkgb25lIHJlZ2lzdGVyLgoKCSogY29uZmlnL2FybS9saW51eC1nYXMuaCAoQ0xFQVJfSU5TTl9DQUNIRSk6IFNheSB0aGF0IFIwIGlzCgljbG9iYmVyZWQuCgpTdW4gSmFuICA5IDE3OjUwOjIzIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL25zMzJrL25zMzJrLm1kIChsb2FkIG9yIHB1c2ggZWZmZWN0aXZlIGFkZHJlc3MpOiBPcGVyYW5kIDEKCW11c3QgaGF2ZSBTSW1vZGUuCgoyMDAwLTAxLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBlbGZvcy5oIChBU01fT1VUUFVUX0xJTUlURURfU1RSSU5HKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZAoJYXNzaWdubWVudCB1c2VkIGFzIHRydXRoIHZhbHVlLgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3RlbXApOiBNYXJrIHBhcmFtZXRlciBgZG9udF9wcm9tb3RlJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELiAgV3JhcCB2YXJpYWJsZSBgdW5zaWduZWRwJyB3aXRoIG1hY3JvCglQUk9NT1RFX0ZPUl9DQUxMX09OTFkuCgoJKiBnZW5yZWNvZy5jICh3cml0ZV9zdWJyb3V0aW5lKTogTWFyayB2YXJpYWJsZSBgb3BlcmFuZHMnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBvcHRhYnMuYyAocHJlcGFyZV9jbXBfaW5zbik6IE1hcmsgcGFyYW1ldGVyIGBhbGlnbicgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIHNkYm91dC5jIChzZGJvdXRfaW5pdCk6IExpa2V3aXNlIGZvciBwYXJhbWV0ZXIgYGFzbV9maWxlJy4KCShzZGJvdXRfYmVnaW5fYmxvY2ssIHNkYm91dF9lbmRfYmxvY2spOiBMaWtld2lzZSBmb3IgYGZpbGUnLgoKCSogdG9wbGV2LmMgKG5vdGVfZGVmZXJyYWxfb2ZfZGVmaW5lZF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZQoJZm9yIGBkZWNsJy4KCjIwMDAtMDEtMDkgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHguaDogVGlkeSB1cCBjb21tZW50cy4KCSogY29uZmlnL2M0eC5jOiBMaWtld2lzZS4KClN1biBKYW4gIDkgMDE6MDI6NTUgRVNUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGZvbGQtY29uc3QuYyAobHNoaWZ0X2RvdWJsZSwgcnNoaWZ0X2RvdWJsZSk6IEhhbmRsZQoJc2hpZnRpbmcgYnkgMiAqIEhPU1RfQklUU19QRVJfV0lERV9JTlQgY29ycmVjdGx5LgoKMjAwMC0wMS0wOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEluaXRpYWxpemUgY3NlX25vdF9leHBlY3RlZCBhcwoJaW4gcHJlcGFyZV9mdW5jdGlvbl9zdGFydCgpLgoKU2F0IEphbiAgOCAxMjoxMjo0NiAyMDAwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL3Y4NTAvdjg1MC5jIChleHBhbmRfZXBpbG9ndWUpOiBJbnRlcnJ1cHQgZnVuY3Rpb25zIG5vCglsb25nZXIgYWxsb2NhdGUgZXh0cmEgc3RhY2sgZm9yIGZ1bmN0aW9uIGNhbGxzLgoKMjAwMC0wMS0wOCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgubWQgKCpzdWJxZjNfc2V0KTogRml4IHR5cG8uCgoyMDAwLTAxLTA4ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChDQUxMRVJfU0FWRV9QUk9GSVRBQkxFKTogRGVmaW5lIGFzIDAuCgoyMDAwLTAxLTA3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAocHJvY2Vzc29yX3RhcmdldF90YWJsZSk6IEFkZCBwb3dlcjMgYXMgYWxpYXMgZm9yIDYzMC4KCSogYWl4NDMuaDogUmV2ZXJ0IEF1ZyAyIGNoYW5nZS4KCShIQVNfSU5JVF9TRUNUSU9OKTogRGVmaW5lLCBub3QgdmlzaWJsZSB5ZXQuCgkoTERfSU5JVF9TV0lUQ0gpOiBEZWZpbmUsIG5vdCB2aXNpYmxlIHlldC4KCSogdC1haXg0MyAoTVVMVElMSUJfT1BUSU9OUyk6IFJldmVydCBBdWcgMiBjaGFuZ2UuCgoJKiBnbGltaXRzLmggKF9fTE9OR19NQVhfXyk6IFJlY29nbml6ZSA2NC1iaXQgQUlYIHRvby4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBFeHBhbmQgbGQyIHNpemUgZnVydGhlci4KCShleHBvcnRfb2JqZWN0X2xzdCk6IENhc3QgYXNzaWdubWVudCB0byBhdm9pZCB3YXJuaW5nLgoJKG1haW4sIExEX0lOSVRfU1dJVENIKTogQWRkIEFJWCA0LjIrIC1iaW5pdGZpbmkgc3VwcG9ydC4KCShzY2FuX3Byb2dfZmlsZSwgQ09GRik6IERvIG5vdCBjb2xsZWN0IGluaXRpYWxpemF0aW9uIG9yCglmaW5hbGl6YXRpb24gZnVuY3Rpb25zIGdlbmVyYXRlZCBmb3IgZW50aXJlIHNoYXJlZCBvYmplY3QgaWYKCWluaXQvZmluaSBzdXBwb3J0IHByZXNlbnQuCgoyMDAwLTAxLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2VsZm9zLmg6IFRpZHkgdXAgZm9ybWF0dGluZyBvZiBtYXJjb3MuICBNYWtlIHN1cmUKCXRoYXQgLnNlY3Rpb24gZGlyZWN0aXZlcyBhcmUgYWx3YXlzIHByZWZpeGVkIGJ5IGEgdGFiLgoKCSogY29uZmlnL3N2cjQuaDogQWRkICNpbmNsdWRlICJlbGZvcy5oIiBhbmQgcmVtb3ZlIGR1cGxpY2F0ZQoJZGVmaW5pdGlvbnMuCgoyMDAwLTAxLTA3ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQHNnaS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHJlYWxfaGV4X3RvX2YpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uIG9mCglleHBvbi4KCkZyaSBKYW4gIDcgMDE6NTU6MzQgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGNydGVuZC5vKTogUGFzcyBAaW5oaWJpdF9saWJjQCB0byBjb21waWxhdGlvbiBvZgoJY3J0c3R1ZmYuYy4KCShjcnRiZWdpbi5vLCBzLWNydFMpOiBMaWtld2lzZS4KCjIwMDAtMDEtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5tZCAoYWRkZGlfMisxKTogTGltaXQgb2Zmc2V0IHN1Y2ggdGhhdCBpdCB3aWxsIGJlCglsb2FkYWJsZSB3aXRoIGEgc2luZ2xlIGxkYWgrbGRhIHBhaXIuCgkoYWRkZGlfMisyKTogRXhwbGljaXRseSBmYWlsIHNwbGl0IGlmIHdlIGNhbid0IG1ha2UgaXQgd29yay4KCjIwMDAtMDEtMDYgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcHJvdG9pemUuYzogQ29uZGl0aW9uYWxseSBpbmNsdWRlIHVuaXN0ZC5oLgoJKElTX1NBTUVfUEFUSF9DSEFSKTogTmV3IG1hY3JvLgoJKElTX1NBTUVfUEFUSCk6IE5ldyBtYWNyby4KCShDUExVU19GSUxFX1NVRkZJWCk6IE5ldyBtYWNyby4KCShjcGx1c19zdWZmaXgpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGlzX2Fic3BhdGgpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGluX3N5c3RlbV9pbmNsdWRlX2Rpcik6IEhhbmRsZSBET1Mgc3R5bGUgcGF0aG5hbWVzLgoJKGZpbGVfY291bGRfYmVfY29udmVydGVkKTogTGlrZXdpc2UuCgkoZmlsZV9ub3JtYWxseV9jb252ZXJ0aWJsZSk6IExpa2V3aXNlLgoJKGRpcmVjdG9yeV9zcGVjaWZpZWRfcCk6IExpa2V3aXNlLgoJKGZpbGVfZXhjbHVkZWRfcCk6IExpa2V3aXNlLgoJKGFic3BhdGgpOiBMaWtld2lzZS4KCShzaG9ydHBhdGgpOiBMaWtld2lzZS4KCShyZWZlcmVuY2VkX2ZpbGVfaXNfbmV3ZXIpOiBMaWtld2lzZS4KCShzYXZlX2RlZl9vcl9kZWMpOiBMaWtld2lzZS4KCShkb19wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkobWFpbik6IExpa2V3aXNlLgoJKGVkaXRfZmlsZSk6IExpa2V3aXNlLiBVc2UgcmVuYW1lIGluc3RlYWQgb2YgbGluay4KCShyZW5hbWVfY19maWxlKTogTGlrZXdpc2UuIERvbid0IHJlbmFtZSBzeXNjYWxscyBmaWxlLgoJKG11bmdlX2NvbXBpbGVfcGFyYW1zKTogRGVmaW5lIG51bGwgZGV2aWNlIGZvciBET1MgYmFzZWQgc3lzdGVtcy4KCShwcm9jZXNzX2F1eF9pbmZvX2ZpbGUpOiBVc2UgYmluYXJ5IG1vZGUgaWYgYXBwbGlhYmxlLgoJKGVkaXRfZmlsZSk6IExpa2V3aXNlLgoJKiBpbnZva2UudGV4aSAoUnVubmluZyBQcm90b2l6ZSk6IERvY3VtZW50IEMrKyBzdWZmaXhlcyB1c2VkLgoKCSogY2NjcC5jOiBEZWxldGUgUEFUSF9TRVBBUkFUT1IsIERJUl9TRVBBUkFUT1IgYW5kCglJU19ESVJfU0VQQVJBVE9SIG1hY3Jvcy4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGNwcGluaXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBwcmVmaXguYzogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaDogQW5kIG1vdmUgdG8gaGVyZS4KCgkqIHByZWZpeC5jICh1cGRhdGVfcGF0aCk6IEZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUuCgoyMDAwLTAxLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3NldF8xKTogVXNlIGxvb3BfZGVwdGgrMSBhcyByZWZlcmVuY2Ugd2VpZ2h0LgoJKGZpbmRfYXV0b19pbmMsIG1hcmtfdXNlZF9yZWdzLCB0cnlfcHJlX2luY3JlbWVudF8xKTogTGlrZXdpc2UuCgkoY291bnRfcmVnX3NldHNfMSwgY291bnRfcmVnX3JlZmVyZW5jZXMpOiBMaWtld2lzZS4KCShmbG93X2xvb3BzX2xldmVsX2NvbXB1dGUpOiBTdGFydCBjb3VudGluZyBhY3R1YWwgbG9vcCBkZXB0aCBhdCAxLgoJKGZsb3dfbG9vcHNfZmluZCk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWdjbGFzcyk6IFJlLWluc3RhdGUgSmFuIDQgMC1iYXNlZCBsb29wX2RlcHRoIGNoYW5nZS4KCjIwMDAtMDEtMDYgIEdhYnJpZWwgRG9zIFJlaXMgIDxkb3NyZWlzQGNtbGEuZW5zLWNhY2hhbi5mcj4KCgkqIGRlZmF1bHRzLmggKERXQVJGX0ZSQU1FX1JFR0lTVEVSUyk6IGlmIG5vdCBkZWZpbmVkLCBkZWZhdWx0IHRvCglGSVJTVF9QU0VVRE9fUkVHSVNURVIKCSogZHdhcmYyb3V0LmM6IERvbid0IGluY2x1ZGUgZnJhbWUuaAoJKiBkd2FyZm91dC5jOiBMaWtld2lzZQoJKiBNYWtlZmlsZS5pbiAoZHdhcmZvdXQubywgZHdhcmYyb3V0Lm8pOiBSZW1vdmUgZGVwZW5kZW5jZSBvbgoJZnJhbWUuaAoKVGh1IEphbiAgNiAxMzo0NDo1OSBDRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIGNvcnJlY3RseSBVU0VzIG9mCglkZWFkIHJlZ2lzdGVycy4KCgkqIGkzODYuYyAobW92c2Ygc3BsaXR0ZXIpOiBGaXggdHlwbyBpbiBteSBsYXN0IGNoZWNraW4uCgoyMDAwLTAxLTA1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogdmFyYXNtLmMgKElOX05BTUVEX1NFQ1RJT04pOiBBbGxvdyB0YXJnZXRzIHRvIHByb3ZpZGUgdGhlaXIKCW93biBkZWZpbml0aW9uIG9mIHRoaXMgbWFjcm8uCgkoYXNtX2VtaXRfdW5pbml0aWFsaXNlZCk6IEludm9rZSBVTklRVUVfU0VDVElPTiBpZiBlaXRoZXIKCWZsYWdfZGF0YV9zZWN0aW9ucyBvciBVTklRVUVfU0VDVElPTl9QIGFyZSB0cnVlLgoKCSogdG0udGV4aSAoVU5JUVVFX1NFQ1RJT04pOiBEb2N1bWVudCB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgZm9yCgl1bmluaXRpYWxpemVkIGRhdGEgZGVjbHMuCgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX3VuaXF1ZV9zZWN0aW9uKTogQ29wZSB3aXRoCgliZWluZyBjYWxsZWQgZm9yIHVuaW5pdGlhbGlzZWQgZGF0YS4KCgkqIGNvbmZpZy9pMzg2L2ludGVyaXguYyAoaTM4Nl9wZV91bmlxdWVfc2VjdGlvbik6IENvcGUgd2l0aAoJYmVpbmcgY2FsbGVkIGZvciB1bmluaXRpYWxpc2VkIGRhdGEuCgoJKiBjb25maWcvbWlwcy9lbGYuaCAoVU5JUVVFX1NFQ1RJT04pOiBDb3BlIHdpdGggYmVpbmcgY2FsbGVkCglmb3IgdW5pbml0aWFsaXNlZCBkYXRhLgoKCSogY29uZmlnL21pcHMvZWxmNjQuaCAoVU5JUVVFX1NFQ1RJT04pOiBDb3BlIHdpdGggYmVpbmcgY2FsbGVkCglmb3IgdW5pbml0aWFsaXNlZCBkYXRhLgoKCSogY29uZmlnL21pcHMvaXJpNmdsZC5oIChVTklRVUVfU0VDVElPTik6IENvcGUgd2l0aCBiZWluZyBjYWxsZWQKCWZvciB1bmluaXRpYWxpc2VkIGRhdGEuCgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKElOX05BTUVEX1NFQ1RJT04pOiBEZWZpbmUuCgkoVU5JUVVFX1NFQ1RJT05fUCk6IEFsd2F5cyBnZW5lcmF0ZSBhIHVuaXF1ZSBzZWN0aW9uIGlmCglmbGFnX2RhdGFfc2VjdGlvbnMgaXMgdHJ1ZS4KCShVTklRVUVfU0VDVElPTik6IEFsc28gZ2VuZXJhdGUgdW5pcXVlIHNlY3Rpb25zIGZvcgoJdW5pbml0aWFsaXNlZCBkYXRhLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBSZWRlZmluZSB0byB1c2UgbmFtZWRfc2VjdGlvbigpLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogUmVkZWZpbmUgdG8gdXNlCgluYW1lZF9zZWN0aW9uKCkuCgoyMDAwLTAxLTA2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L3QtYzR4IChUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBEb24ndCByZWRlZmluZSBTRiwgREYsCglTSSwgb3IgREkuCgoyMDAwLTAxLTA2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAodWRpdnFpMywgZGl2cWkzKTogRGVsZXRlLgoJKHVtb2RxaTMsIG1vZHFpMywgdWRpdmhpMywgZGl2aGkzLCB1bW9kaGkzLCBtb2RoaTMsIGZmc3FpMik6IExpa2V3aXNlLgoJKCpzbXVscWkzX2hpZ2hwYXJ0X25vY2xvYmJlciwgKnVtdWxxaTNfaGlnaHBhcnRfbm9jbG9iYmVyKTogTmV3LgoJKCpsc2hycWkzX2NvbnN0X25vY2xvYmJlciwgKmxzaHJxaTNfbm9uY29uc3Rfbm9jbG9iYmVyKTogTGlrZXdpc2UuCgkoKmFzaHJxaTNfY29uc3Rfbm9jbG9iYmVyLCAqYXNocnFpM19ub25jb25zdF9ub2Nsb2JiZXIpOiBMaWtld2lzZS4KCgkqIGM0eC5oIChJTklUX1RBUkdFVF9PUFRBQlMpOiBEZWZpbmUgdG8gaW5pdCBsaWJjYWxscy4KCjIwMDAtMDEtMDUgMTE6MjUgLTA4MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkuY29sdW1iaWEuZWR1PgoKCSogYy1kZWNsLmMgKGZpbmlzaF9lbnVtKTogU2ltcGxpZnkgY29kZSB0byBkZXRlcm1pbmUgbWluaW11bSBhbmQKCW1heGltdW0gdmFsdWVzIG9mIHRoZSBlbnVtLCBhbmQgY2FsY3VsYXRlIHRoZSB0eXBlLiAgUmVtb3ZlIGNoZWNrCglmb3IgRlVOQ1RJT05fREVDTHMgaW4gdGhlIHZhbHVlcyBsaXN0LCB3aGljaCBjYW5ub3QgaGFwcGVuLiAgUmVwbGFjZQoJdGhlIERFQ0xfSU5JVElBTCBvZiBlYWNoIGVudW1lcmF0aW9uIGNvbnN0YW50IHdpdGggYSBjb3B5IGNvbnZlcnRlZAoJdG8gdGhlIGVudW1lcmF0aW9uIHR5cGUuICBXaGVuIHVwZGF0aW5nIHZhcmlhbnQgdHlwZXMsIGRvbid0IGJvdGhlcgoJdXBkYXRpbmcgdGhlIHR5cGUgaXRzZWxmLgoKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogU2ltcGxpZnkgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMKCXdoZW4gd2VlZGluZyBvdXQgc3B1cmlvdXMgc2lnbmVkLXVuc2lnbmVkIHdhcm5pbmdzLiAgQWRkIG5ldwoJc3B1cmlvdXMgd2FybmluZyBjYXRlZ29yeTogaWYgdGhlIHVuc2lnbmVkIHF1YW50aXR5IGlzIGFuIGVudW0KCWFuZCBpdHMgbWF4aW11bSB2YWx1ZSBmaXRzIGluIHNpZ25lZF90eXBlKHJlc3VsdF90eXBlKS4gIFVwZGF0ZQoJY29tbWVudGFyeS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogV2FybiBoZXJlIGlmIG9uZSBhbHRlcm5hdGl2ZSBpcyBzaWduZWQKCWFuZCB0aGUgb3RoZXIgaXMgdW5zaWduZWQuCgoyMDAwLTAxLTA1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2ZyMzAvZnIzMC5oOiBSZW1vdmUgZXh0cmFuZW91cyBjb21tZW50cy4KCjIwMDAtMDEtMDUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBXaGVuIGRpc2FibGluZyBhIHJlbG9hZCwgYWxzbwoJc2V0IHJlbG9hZF9zcGlsbF9pbmRleCB0byAtMS4KCjIwMDAtMDEtMDQgIEpvZWwgU2hlcnJpbGwgKGpvZWxAT0FSY29ycC5jb20+CgoJKiBjb25maWd1cmUuaW4gKG02OCotKi1ydGVtc2NvZmYqKTogTmV3IHRhcmdldCwgZm9ybWFsIG5hbWUgZm9yCglvbGQgbTY4Ki0qLXJ0ZW1zKi4KCShtNjgqLSotcnRlbXNlbGYqKTogTmV3IHRhcmdldC4KCShtaXBzNjRvcmlvbi0qLXJ0ZW1zKik6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiB0bV9maWxlLgoJKHNwYXJjKi0qLXJ0ZW1zYW91dCopOiBOZXcgdGFyZ2V0LCBmb3JtYWwgbmFtZSBmb3Igb2xkIHNwYXJjKi0qLXJ0ZW1zKi4KCShzcGFyYyotKi1ydGVtc2VsZiopOiBOZXcgdGFyZ2V0LgoJKHNwYXJjKi0qLXJ0ZW1zKik6IE5vdyBlbGYgbm90IGEub3V0LgoJKiBjb25maWcvaTM4Ni9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvaTM4Ni9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvaTk2MC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvbTY4ay9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvbTY4ay9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvbWlwcy9ydGVtczY0Lmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9wYS9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvcnM2MDAwL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9zaC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvc2gvcnRlbXNlbGYuaDogSW5jbHVkZSBjb25maWcvcnRlbXMuaC4KCSogY29uZmlnL3NwYXJjL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9zcGFyYy9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oCgpUdWUgSmFuICA0IDIzOjU5OjI2IDIwMDAgIERlbmlzIENoZXJ0eWtvdiA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGZpbmFsLmMgKHNob3J0ZW5fYnJhbmNoZXMpOiBDb3JyZWN0bHkgY29tcHV0ZSBsZW5ndGggb2YKCWFzbXMgd2l0aG91dCBvcGVyYW5kcy4KClR1ZSBKYW4gIDQgMjI6NTU6NDEgMjAwMCAgU3RldmUgQ2hhbWJlcmxhaW4gPHNhY0Bwb2JveC5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCBwaiB0YXJnZXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL3BqOiBOZXcgZGlyZWN0b3J5LgoJKiBjb25maWcvcGovbGliMWZ1bmNzLlM6IE5ldyBmaWxlLgoJKiBjb25maWcvcGovbGludXguaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9wai9wai5jOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3BqLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3BqbC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3QtcGo6IE5ldyBmaWxlLgoJKiBjb25maWcvcGoveG0tcGouaDogTmV3IGZpbGUKClR1ZSBKYW4gIDQgMjI6MzA6MTYgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gc2hvcnRlbi1icmFuY2hlcyBiZWZvcmUKCXJlZy1zdGFjayBmb3Igbm93LgoKMjAwMC0wMS0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoSVNfWFhYX1JFRywgSVNfWFhYX1JFR05PKTogU3dhcCBiZWhhdmlvdXIgb2YKCW1hY3JvcyBzbyB0aGF0IHRoZXkncmUgY29uc2lzdGVudCB3aXRoIHRoZWlyIG5hbWVzLgoJKiBjb25maWcvYzR4L2M0eC5jIChJU19YWFhfUkVHLCBJU19YWFhfUkVHTk8pOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHgubWQgKElTX1hYWF9SRUcsIElTX1hYWF9SRUdOTyk6IExpa2V3aXNlLgoKMjAwMC0wMS0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgubWQgKCphZGRxaTNfbm9jbG9iYmVyX3JlbG9hZCk6IEVuc3VyZSB0aGF0IENDIG5ldmVyCgltb2RpZmllZCBpbmFkdmVydGVudGx5LgoKMjAwMC0wMS0wNCAgSm9lbCBTaGVycmlsbCA8am9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAodjg1MCotKi1ydGVtcyopOiBOZXcgdGFyZ2V0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy92ODUwL3J0ZW1zLmg6IE5ldyBmaWxlLgoKMjAwMC0wMS0wNCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBndGhyLXdpbjMyLmggKF9fZ3RocmVhZF9hY3RpdmVfcCk6IFN1cHBvcnQgTWluZ3cgTVQgcnVudGltZS4KCShfX2d0aHJlYWRfa2V5X2NyZWF0ZSk6IExpa2V3aXNlLgoJKF9fZ3RocmVhZF9rZXlfZHRvcik6ICBMaWtld2lzZS4KCShfX2d0aHJlYWRfb25jZSk6IEZpeCBsb2dpYy4KCShfX2d0aHJlYWRfa2V5X2RlbGV0ZSk6IENhc3QgYXdheSBjb25zdG5lc3MuCgoJKiBpMzg2L2N5Z3dpbi5oIChTVUJUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW10aHJlYWRzIG9wdGlvbi4KCSogaW52b2tlLnRleGk6IERvY3VtZW50LgoJKiBpMzg2L21pbmd3MzIuaCAoQ1BQX1NQRUMpOiBVc2UuCgkoTElCR0NDX1NQRUMpOiBMaWtld2lzZS4KCSogaTM4Ni9jcnRkbGwuaCAoTElCR0NDX1NQRUMpOiBMaWtld2lzZS4KCjIwMDAtMDEtMDQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC9zeXN2NC5oIChBU01fT1VUUFVUX0RFRik6IFVuZGVmaW5lLgoJKEhBTkRMRV9QUkFHTUFfUEFDSyk6IFVuZGVmaW5lLgoJKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IERlZmluZS4KCjIwMDAtMDEtMDQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGV4cG1lZC5jIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBBZGQgbW9kZSBhbmQgYWxpZ24gcGFyYW1ldGVycwoJdG8gZGVmYXVsdCBkZWZpbml0aW9uLgoJKHN0b3JlX2JpdF9maWVsZCk6IENhbGwgU0xPV19VTkFMSUdORURfQUNDRVNTIHdpdGggbW9kZSBhbmQgYWxpZ25tZW50LgoJKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IENhbGwgbWFjcm8gd2l0aCB3b3JkX21vZGUgYW5kIGFsaWdubWVudC4KCShleHRyYWN0X2JpdF9maWVsZCk6IENhbGwgbWFjcm8gd2l0aCByZWxldmFudCBtb2RlIGFuZCBhbGlnbm1lbnQuCgkqIGV4cHIuYyAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogQWRkIG1vZGUgYW5kIGFsaWduIHBhcmFtZXRlcnMKCXRvIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShtb3ZlX2J5X3BpZWNlcyk6IENhbGwgU0xPV19VTkFMSUdORURfQUNDRVNTIHdpdGggd29yZF9tb2RlCglhbmQgYWxpZ25tZW50LgoJKG1vdmVfYnlfcGllY2VzX25pbnNucyk6IExpa2V3aXNlLgoJKGNsZWFyX2J5X3BpZWNlcyk6IExpa2V3aXNlLgoJKGVtaXRfcHVzaF9pbnNuKTogTGlrZXdpc2UuCgkoc3RvcmVfZmllbGQpOiBDYWxsIG1hY3JvIHdpdGggcmVsZXZhbnQgbW9kZSBhbmQgYWxpZ25tZW50LgoJKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgoJKiByczYwMDAuaCAoSEFORExFX1BSQUdNQV9QQUNLKTogRGVmaW5lLgoJKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IERlZmluZS4KCShDQVNFX1ZFQ1RPUl9NT0RFKTogQWx3YXlzIHVzZSAzMi1iaXQgb2Zmc2V0cy4KCShBU01fRklMRV9FTkQpOiBHZW5lcmF0ZSA2NC1iaXQgc3ltYm9sIGluIDY0LWJpdCBtb2RlLgoJKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogSW5kZW50IC5jc2VjdCBwc2V1ZG8tb3AuCgkodG9jX3NlY3Rpb24pOiBMaWtld2lzZSBhbmQgLnRvYyBwc2V1ZG8tb3AuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT04pOiBMaWtld2lzZS4gIEFsaWduIHRleHQgbW9yZSBzdHJpY3RseSBpbgoJNjQtYml0IG1vZGUuCgkoVEVYVF9TRUNUSU9OX0FTTV9PUCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfQUREX1ZFQ19FTFQsIEFTTV9PVVRQVVRfQUREUl9ESUZGX0VMVCk6IEFsd2F5cyB1c2UKCTMyLWJpdCBvZmZzZXRzLgoKCSogYTI5ay5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBBZGQgTU9ERSBhbmQgQUxJR04gcGFyYW1ldGVycy4KCSogYWxwaGEuaCAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogTGlrZXdpc2UuCgkqIGFybS90aHVtYi5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBMaWtld2lzZS4KCSogZ21pY3JvLmggKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IExpa2V3aXNlLgoJKiBmcjMwLmggKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IExpa2V3aXNlLgoKVHVlIEphbiAgNCAxMTo0NDoxMyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiByZWdjbGFzcy5jOiBSZXZlcnQgbXkgSmFuIDQgY2hhbmdlIHRvIGxvb3AgY29zdCBjb21wdXRhdGlvbi4KClR1ZSBKYW4gIDQgMTk6MjI6MzkgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8aHViaWNrYUBmcmVlc29mdC5jej4KCgkqIHJlZ2NsYXNzLmMgKHJlZ2NsYXNzKTogRG8gbm90IG9iZXkgUkVHX05fUkVGUyBpbiBub24tb3B0aW1pemluZwoJY29tcGlsYXRpb24uCgoyMDAwLTAxLTA0ICBTdGFuIENveCAgPHNjb3hAY3lnbnVzLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKGJ1aWxkX2NvbnRyb2xfZmxvdyk6IENoYW5nZSB1bnJlYWNoYWJsZSBzaW1wbGUKCWxvb3AgdGVzdCB0byBjaGVjayBpZiBjdXJyZW50IGJsb2NrIGhhcyBvbmx5IG9uZSBwcmVkZWNlc3Nvci4KCShmaW5kX3JnbnMpOiBJbml0aWFsaXplIGRlZ3JlZS4gIFVzZSBkZXN0IGFzIGRlZ3JlZSBpbmRleCwgbm90IHNyYy4KCjIwMDAtMDEtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IEluaXRpYWxpemUgdmFyaWFibGUgYGljb2RlJy4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogTGlrZXdpc2UgZm9yCglgb2xkX3N0YWNrX2FyZ191bmRlcl9jb25zdHJ1Y3Rpb24nLgoKCSogY3BwaGFzaC5jIChtYWNyb2V4cGFuZCk6IExpa2V3aXNlIGZvciBgYXJncycgYW5kIGByZXN0X3plcm8nLgoKCSogZnVuY3Rpb24uYyAocGFkX3RvX2FyZ19hbGlnbm1lbnQpOiBMaWtld2lzZSBmb3IgYHNhdmVfdmFyJyBhbmQKCWBzYXZlX2NvbnN0YW50Jy4KCgkqIGdjYy5jIChleGVjdXRlKTogTGlrZXdpc2UgZm9yIGB1dCcgYW5kIGBzdCcuCgoJKiBnZW5hdHRydGFiLmMgKGF0dHJfcnR4KTogTGlrZXdpc2UgZm9yIGBydF92YWwnLgoKCSogZ2Vub3Bpbml0LmMgKGdlbl9pbnNuKTogTGlrZXdpc2UgZm9yIGBtMScsIGBtMicgYW5kIGBvcCcuCgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IExpa2V3aXNlIGZvciBgdGVtcDInLgoKCSogbG9jYWwtYWxsb2MuYyAoYmxvY2tfYWxsb2MpOiBMaWtld2lzZSBmb3IgYHIxJy4KCgkqIGxvb3AuYyAocmVjb21iaW5lX2dpdnMpOiBMaWtld2lzZSBmb3IgYGxpZmVfc3RhcnQnIGFuZCBgbGlmZV9lbmQnLgoKCSogcmVnLXN0YWNrLmMgKGNoZWNrX2FzbV9zdGFja19vcGVyYW5kcyk6IExpa2V3aXNlIGZvciBgY2xvYmJlcl9yZWcnLgoJKHN1YnN0X2FzbV9zdGFja19yZWdzKTogTGlrZXdpc2UgZm9yIGBjbG9iYmVyX3JlZycgYW5kIGBjbG9iYmVyX2xvYycuCgoJKiByZWdtb3ZlLmMgKGZpeHVwX21hdGNoXzEpOiBMaWtld2lzZSBmb3IgYGluc25fY29uc3QnLCBgZHN0X25vZGUnCglhbmQgYHNldDInLgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IExpa2V3aXNlIGZvciBgZ29hbF9hbHRlcm5hdGl2ZV9udW1iZXInCglhbmQgYGdvYWxfZWFybHljbG9iYmVyJy4KCgkqIHNjYW4tZGVjbHMuYyAoc2Nhbl9kZWNscyk6IExpa2V3aXNlIGZvciBgcHJldl9pZF9lbmQnLgoKCSogc2Rib3V0LmMgKHNkYm91dF9vbmVfdHlwZSk6IExpa2V3aXNlIGZvciBgbWVtYmVyX3NjbCcuCgoJKiBzdHVwaWQuYyAoc3R1cGlkX2xpZmVfYW5hbHlzaXMpOiBMaWtld2lzZSBmb3IgYGNoYWluJy4KCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IExpa2V3aXNlIGZvciBgY29weScuCgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UgZm9yIGBieXRlJy4KClR1ZSBKYW4gIDQgMTU6MzQ6MzQgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8aHViaWNrYUBmcmVlc29mdC5jej4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfbW92ZSk6IEFsbG93IHB1c2hlcyBvZiBtZW1vcnksIG9mZmxvYWQgdG8gbWVtb3J5CglhbGwgRlAgY29uc3RhbnRzIGZvciBjb25zdGFudC0+cmVnIG1vdmVzLgoJKGl4ODZfc3BsaXRfdG9fcGFydHMpOiBUcnkgdG8gY29udmVydCBtZW1vcnkgYWRkcmVzcyBpbnRvIGltbWVkaWF0ZQoJd2hlbiBhdmFpbGFibGUgaW4gdGhlIGNvbnN0YW50IHBvb2wuCgkqIGkzODYuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IEFsbG93IENPTlNUX0RPVUJMRS0+aW50ZWdlciByZWcKCW1vdmVzLgoJKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IFJldHVybiAxLgoJKiBpMzg2Lm1kIChwdXNoc2YpOiBOZXcgc3BsaXR0ZXIgdG8gY29udmVydCBjb25zdGFudCBwb29sIG1lbW9yeQoJcmVmZXJlbmNlIHRvIGltbWVkaWF0ZS4KCShtb3Y/Zik6IExpa2V3aXNlOyBkbyBub3QgYWxsb3cgQ09OU1RfRE9VQkxFIGZvciByZWcgbW92ZXMgYmVmb3JlCglyZWxvYWQuCgoyMDAwLTAxLTA0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGkzODYubWQgKGFzaGxzaTNfY21wbm8pOiBEb24ndCBhY2NlcHQgdmFyaWFibGVzIHNoaWZ0cy4KCShhc2hsaGkzX2NtcG5vLCBhc2hscWkzX2NtcG5vLCBhc2hyc2kzX2NtcG5vLCBhc2hyaGkzX2NtcG5vLAoJYXNocnFpM19jbXBubywgbHNocnNpM19jbXBubywgbHNocmhpM19jbXBubywgbHNocnFpM19jbXBubyk6IExpa2V3aXNlLgoJKHJvdGxzaTNfY21wbm8sIHJvdGxoaTNfY21wbm8sIHJvdGxxaTNfY21wbm8sIHJvdHJzaTNfY21wbm8sCglyb3RyaGkzX2NtcG5vLCByb3RycWkzX2NtcG5vKTogTGlrZXdpc2UuCgoyMDAwLTAxLTA0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZ2luY2x1ZGUvc3RkYm9vbC5oOiAgU3VwcG9ydCBjb21waWxhdGlvbiBhcyBDKysuCgpUdWUgSmFuICA0IDAxOjM1OjEzIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGZvbGQtY29uc3QuYyAobWFrZV9yYW5nZSk6IERvbid0IHRyeSB0byByZXZlcnNlIGFuIHVuYm91bmRlZCByYW5nZS4KClR1ZSBKYW4gIDQgMDA6MTg6NDYgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcmVnY2xhc3MuYyAocmVnY2xhc3MpOiBQcm9wZXJseSBjb21wdXRlIGxvb3BfY29zdC4gIEFkanVzdAoJY29tbWVudHMuCgoJKiByZWdjbGFzcy5jOiBGaXggbWlub3Igd2hpdGVzcGFjZSBwcm9ibGVtcy4KCjIwMDAtMDEtMDMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBOZXcgcGF0dGVybi4KCVJlc3RvcmUgdGhlIHBpYyByZWdpc3RlciBpZiByZXF1aXJlZC4KCjIwMDAtMDEtMDMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X2NoYXJfaW5mbyk6IFVwZGF0ZSBjb21tZW50LgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogUmVjb2duaXplICd6JyBtb2RpZmllciBpbiB0aGUgc2FtZSB3YXkgJ1onCgl3YXMgcmVjb2duaXplZC4gIEVtaXQgd2FybmluZyBmb3IgZm9ybWF0cyBuZXcgaW4gSVNPIEM5OSBvbmx5CglpZiBmbGFnX2lzb2M5eCBpcyBub3Qgc2V0LgoKTW9uIEphbiAgMyAxMjo1OTo1NCAyMDAwICBNYXJrIFAuIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvaXJpczZnbGQuaDogRml4IHR5cG8gaW4gLW1hYmk9bjMyIHNwZWNzLgoKTW9uIEphbiAgMyAxNTozMzozNyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxodWJpY2thQGZyZWVzb2Z0LmN6PgoKCSogY29tYmluZS5jIChleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uKTogRG8gbm90IGNvbnZlcnQgWkVST19FWFRFTkQgdG8KCVNJR05fRVhURU5ELCBjb252ZXJ0IFNJR05fRVhURU5EIHRvIFpFUk9fRVhURU5ELgoJKG1ha2VfY29tcG91bmRfb3BlcmF0aW9uKTogQ2hvb3NlIGNoZWFwZXIgYWx0ZXJuYXRpdmUgYmV0d2VlbgoJWkVST19FWFRFTkQgYW5kIFNJR05fRVhURU5EIHdoZW4gc2lnbiBiaXQgaXMgbm90IHNldC4KCgkqIHJlZ2NsYXNzLmMgKG9wX2Nvc3RzKTogUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZS4KCShyZWNvcmRfcmVnX2NsYXNzZXMpOiBOZXcgcGFyYW1ldGVyICJvcF9jb3N0cyIgYW5kICJyZWdfcHJlZiIuCgkocmVjb3JkX29wZXJhbmRfY29zdHMpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShzY2FuX29uZV9pbnNuKTogLi4uIGhlcmUuCgkoZHVtcF9yZWdjbGFzcyk6IE1ha2UgZHVtcHMgbmljZXIuCgkocmVnY2xhc3MpOiBEdW1wIHByZWZlcnJlbmNlcyBjaG9vc2VkIGFuZCBjaGFuZ2VzIGRvbmUgZHVyaW5nIHBhc3Nlcy4KCjIwMDAtMDEtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGdlbl9kZl9yZWcpOiBGaXggZm9yIDMyYml0IFNQQVJDLgoKMjAwMC0wMS0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZ2VuX2RmX3JlZyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oIChnZW5fZGZfcmVnKTogQWRkIHByb3RvdHlwZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3Z0Zl9ub19lX2luc25fc3A2NCsxLAoJbW92dGZfbm9fZV9pbnNuX3NwNjQrMiwgbW92dGZfbm9fZV9pbnNuX3NwNjQrMywgbW92dGZfY2Nfc3A2NCsxLAoJbW92dGZfY2NfcmVnX3NwNjQrMSk6IFVzZSBpdC4KCjIwMDAtMDEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9kZWNsX2Zvcl9pbmxpbmluZyk6IENsZWFyIFRSRUVfQUREUkVTU0FCTEUgb24KCWNvcGllZCBMQUJFTF9ERUNMcy4KCk1vbiBKYW4gIDMgMDI6NTQ6NDAgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF91bmFyeV9vcGVyYXRvcik6IEZ1bmN0aW9uCglkZWZpbml0aW9uIG1hZGUgdm9pZC4KCShpeDg2X2V4cGFuZF9iaW5hcnlfb3BlcmF0b3IpOiBVcGRhdGUgb3V0ZGF0ZWQgcHJlY2VkaW5nIGNvbW1lbnQuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfZXhwYW5kX3VuYXJ5X29wZXJhdG9yKTogVXBkYXRlCglwcm90b3R5cGUuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBGaXggb3B0aW9uLW5hbWUgdHlwby4KCjIwMDAtMDEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzeXN0ZW0uaCAoQ0VJTCk6IERlZmluZS4KCSogYnVpbHRpbnMuYyAoQ0VJTCk6IFJlbW92ZS4KCSogZXhwbWVkLmMgKENFSUwpOiBMaWtld2lzZS4KCSogZXhwci5jIChDRUlMKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKENFSUwpOiBMaWtld2lzZS4KCjIwMDAtMDEtMDIgIEZyYW56IFNpcmwgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCk6IEZpeCB0eXBvIGludHJvZHVjZWQgd2l0aCBsYXN0CglnY2MyIG1lcmdlLgoKMjAwMC0wMS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoQklORk9fTl9CQVNFVFlQRVMpOiBOZXcgbWFjcm8uCgoyMDAwLTAxLTAxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGV4cG1lZC5jIChlbWl0X3N0b3JlX2ZsYWcpOiBQcmV2ZW50IGxvc2luZyBhIHBlbmRpbmcgc3RhY2sKCWFkanVzdCB0aGUgc2FtZSB3YXkgd2UgcHJldmVudCBsb3NpbmcgcXVldWVkIGluY3JlbWVudHMuCgpTZWUgQ2hhbmdlTG9nLjIgZm9yIGVhcmxpZXIgY2hhbmdlcy4K