MjAwMS0xMi0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IENoZWNrIGlmIGR5bm9iaiBpcyBub3QgTlVMTAoJYmVmb3JlIGxvb2tpbmcgZm9yIC5laF9mcmFtZV9oZHIgc2VjdGlvbi4KCSogZWxmLWVoLWZyYW1lLmMgKF9iZmRfZWxmX3dyaXRlX3NlY3Rpb25fZWhfZnJhbWVfaGRyKTogSWYKCS5laF9mcmFtZV9oZHIgc2VjdGlvbiBpcyBiZWluZyBzdHJpcHBlZCBmcm9tIG91dHB1dCwgZG9uJ3QgZG8KCWFueXRoaW5nLgoKMjAwMS0xMi0yNyAgVG9tIFJpeCAgPHRyaXhAcmVkaGF0LmNvbT4KCgkqIGNvZmYtcnM2MDAwLmMgKHhjb2ZmX2dlbmVyYXRlX3J0aW5pdCk6IENsZWFuIGRhdGFfYnVmZmVyIGFsbG9jL2ZyZWUuCgkqIGNvZmY2NC1yczYwMDAuYyAoeGNvZmY2NF9nZW5lcmF0ZV9ydGluaXQpOiBTYW1lLgoJKHhjb2ZmX3dyaXRlX2FyY2hpdmVfY29udGVudHNfYmlnKTogUmV3cml0ZS4KCSh4Y29mZl93cml0ZV9hcm1hcF9iaWcpOiBSZXdyaXRlLgoJKHhjb2ZmX3dyaXRlX29uZV9hcm1hcF9iaWcpOiBEZWxldGUuCgkqIGxpYnhjb2ZmLmggOiBDbGVhbiB1cC4KCjIwMDEtMTItMjEgIFRvbSBSaXggIDx0cml4QHJlZGhhdC5jb20+CgogICAgICAgICogeGNvZmZsaW5rLmMgKGJmZF94Y29mZl9saW5rX2dlbmVyYXRlX3J0aW5pdCk6IE5ldyBmdW5jdGlvbi4KCUludGVyZmFjZSB0byBsaW5rZXIgZm9yIGdlbmVyYXRpb24gb2YgX19ydGluaXQuCgkqIGxpYnhjb2ZmLmggKHN0cnVjdCB4Y29mZl9iYWNrZW5kX2RhdGFfcmVjKTogQWRkIG5ldyBvcHMgdG8geGNvZmYKCWJhY2tlbmQgdG8gZ2VuZXJhdGUgc3BlY2lhbCBsaW5rZXIgc3ltYm9sIF9fcnRpbml0LgoJKiBjb2ZmLXJzNjAwMC5jIChiZmRfeGNvZmZfYmFja2VuZF9kYXRhLCBiZmRfcG1hY194Y29mZl9iYWNrZW5kX2RhdGEpCgk6ICBBZGQgbmV3IHJ0aW5pdCBvcHMKCSogY29mZjY0LXJzNjAwMC5jIChiZmRfeGNvZmZfYWl4NV9iYWNrZW5kX2RhdGEsCgliZmRfeGNvZmZfYmFja2VuZF9kYXRhKTogU2FtZS4KCSogYmZkLWluLmg6IEFkZCBiZmRfeGNvZmZfbGlua19nZW5lcmF0ZV9ydGluaXQuCgkqIGJmZC1pbjIuaCA6IFJlZ2VuZXJhdGUuCgoyMDAxLTEyLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKF9iZmRfc3BhcmNfZWxmX2hvd3RvX3RhYmxlKTogRml4IGRzdF9tYXNrIGZvcgoJUl9TUEFSQ19ESVNQMzIuICBTdXBwb3J0IFJfU1BBUkNfUExUMzIuCgkoc3BhcmNfcmVsb2NfbWFwKTogQWRkIEJGRF9SRUxPQ18xNl9QQ1JFTCBhbmQgQkZEX1JFTE9DX1NQQVJDX1BMVDMyLgoJKGVsZjMyX3NwYXJjX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBSX1NQQVJDX1BMVDMyLgoJKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfaG93dG9fdGFibGUpOiBGaXggZHN0X21hc2sgZm9yCglSX1NQQVJDX0RJU1AzMi4gIFN1cHBvcnQgUl9TUEFSQ19QTFQzMiBhbmQgUl9TUEFSQ19QTFQ2NC4KCShzcGFyY19yZWxvY19tYXApOiBBZGQgQkZEX1JFTE9DXzE2X1BDUkVMLCBCRkRfUkVMT0NfNjRfUENSRUwKCWFuZCBCRkRfUkVMT0NfU1BBUkNfUExUMzIuCgkoc3BhcmM2NF9lbGZfY2hlY2tfcmVsb2NzKTogSGFuZGxlIFJfU1BBUkNfUExUMzIgYW5kIFJfU1BBUkNfUExUNjQuCgkoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChiZmRfcmVsb2NfY29kZV90eXBlKTogQWRkIEJGRF9SRUxPQ19TUEFSQ19QTFQzMi4KCSogYmZkLWluMi5oLCBsaWJiZmQuaDogUmVidWlsdC4KCjIwMDEtMTItMjAgIFRvbSBSaXggIDx0cml4QHJlZGhhdC5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX2NvbXB1dGVfc2VjdGlvbl9maWxlX3Bvc2l0aW9ucyk6IEFkZCBzcGVjaWFsIEFJWAoJbG9hZGVyIGFsaWdubWVudCBvZiB0ZXh0IHNlY3Rpb24uCgoyMDAxLTEyLTIwICBKYXNvbiBUaG9ycGUgIDx0aG9ycGVqQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnLmJmZCAobWlwcy1kZWMtbmV0YnNkKik6IERlbGV0ZSBhbGlhcyBmb3IgbWlwcyplbC0qLW5ldGJzZCouCgoJKiBjb25maWcuYmZkIChhcm0tKi1uZXRic2RlbGYqKTogQWRkIHRhcmdldC4KCSogY29uZmlndXJlLmluOiBJbmNsdWRlIG5ldGJzZC1jb3JlLmxvIGZvciBuYXRpdmUgYXJtLSotbmV0YnNkKi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0xMi0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZmNvZGUuaCAoZWxmX3NsdXJwX3N5bWJvbF90YWJsZSk6IFRlc3QgZWxmX2VsZnNlY3Rpb25zIGZvciBOVUxMLAoJYXMgY2FuIGhhcHBlbiB3aXRoIGEgY29yZSBmaWxlLCBiZWZvcmUgZGVyZWZlcmVuY2luZy4KCjIwMDEtMTItMTkgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckByZWRoYXQuY29tPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9ncm9rX3BzaW5mbyk6IEZpeCBjb3B5LWFuZC1wYXN0ZSBlcnJvcjoKCXRhcmdldCBpcyBpMzg2IChub3QgbWlwcyksIGFuZCBzaXplIG9mIGRlc2NkYXRhIGlzIDEyNCAobm90IDEyOCkuCgoyMDAxLTEyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi1laC1mcmFtZS5jIChfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWUpOiBJZiBuZXdfc2l6ZQoJaXMgMCwgdGVtcG9yYXJpbHkgZ3JvdyBpdCB0byBtaW5pbWFsIENJRSBzaXplLgoJKF9iZmRfZWxmX3dyaXRlX3NlY3Rpb25fZWhfZnJhbWUpOiBJZiBpbnB1dCAuZWhfZnJhbWUgc2VjdGlvbiB3b3VsZAoJZW5kIHVwIGVtcHR5LCBidWlsZCBhIGZha2UgbWluaW1hbCBDSUUuCgoyMDAxLTEyLTE5ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGJmZF9lbGYzMl9pYTY0X2hwdXhfYmlnX3ZlYyk6IE5ldyB2ZWN0b3IgZm9yCglpYTY0Ki0qLWhwdXgqIHRhcmdldC4KCShiZmRfZWxmNjRfaWE2NF9ocHV4X2JpZ192ZWMpOiBMaWtld2lzZS4KCSogdGFyZ2V0cy5jOiBEaXR0by4KCSogY29uZmlndXJlLmluOiBEaXR0by4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogUmVwbGFjZSB1c2Ugb2YKCWFsbG9jYSB3aXRoIGJmZF9tYWxsb2MuCgkoZ2V0X2xvY2FsX3N5bV9oYXNoKTogTGlrZXdpc2UuCgkoZWxmTk5faHB1eF9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IE5ldyBmdW5jdGlvbi4KCSNpbmNsdWRlIGVsZk5OLXRhcmdldC5oIGFnYWluIHdpdGggdmFsdWVzIGZvciBJQTY0IEhQLVVYIHZlY3Rvci4KCjIwMDEtMTItMTggIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckByZWRoYXQuY29tPgoKICAgICAgICAqIGVsZi5jIChhc3NpZ25fZmlsZV9wb3NpdGlvbnNfZm9yX3NlZ21lbnRzKTogRG9uJ3Qgc29ydCBQVF9OT1RFCiAgICAgICAgc2VjdGlvbnMgb2YgY29yZWZpbGVzLiAgQWxzbyBpdCBtYWtlcyBubyBzZW5zZSB0byBzb3J0IGlmIGNvdW50ID09IDEuCgoyMDAxLTEyLTE4ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChfYmZkX2VsZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBBbHNvIGNvcHkgR1AuCgoyMDAxLTEyLTE4ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChfYmZkX2VsZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBVcGRhdGUgY29tbWVudHMuCgoyMDAxLTEyLTE4ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZi1iZmQuaCAoX2JmZF9lbGZfY29weV9wcml2YXRlX2JmZF9kYXRhKTogTmV3LiBQcm90b3R5cGUuCgkoX2JmZF9taXBzX2VsZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBSZW1vdmVkLgoKCSogZWxmLmMgKF9iZmRfZWxmX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldy4gQ29weSBlX2ZsYWdzIGluCgl0aGUgRUxGIGhlYWRlci4KCgkqIGVsZjMyLWkzNzAuYyAoPz9fZWxmX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IFJlbW92ZWQuCgkoYmZkX2VsZj8/X2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBSZW1vdmVkLgoJKiBlbGYzMi1tMzJyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmM6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1wcGMuYzogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmM6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmM6IExpa2V3aXNlLgoKCSogZWxmNjQtbWlwcy5jIChiZmRfZWxmNjRfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IFJlbW92ZWQuCgoJKiBlbGZ4eC10YXJnZXQuaCAoYmZkX2VsZk5OX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBEZWZpbmVkCgl0byBfYmZkX2VsZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEuCgoyMDAxLTEyLTE4ICBNYXJ0aW4gU2Nod2lkZWZza3kgIDxzY2h3aWRlZnNreUBkZS5pYm0uY29tPgoKCSogZWxmMzItczM5MCAoZWxmX3MzOTBfY2hlY2tfcmVsb2NzKTogUGFzcyBhZGRlbmQgdG8KCWdjX3JlY29yZF92dGVudHJ5LgoJKiBlbGY2NC1zMzkwIChlbGZfczM5MF9jaGVja19yZWxvY3MpOiBMaWtld2lzZS4KCUZpeCBieSBBbmRyZWFzIEphZWdlciA8YWpAc3VzZS5kZT4uCgoyMDAxLTEyLTE4ICBKYXNvbiBUaG9ycGUgIDx0aG9ycGVqQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlndXJlLmhvc3Q6IENvcnJlY3RseSBtYXRjaCBhbGwgTmV0QlNEL21pcHMKCWhvc3RzLgoKMjAwMS0xMi0xOCAgbWF0dGhldyBncmVlbiAgPG1yZ0BldGVybmEuY29tLmF1PgoKCSogY29uZmlnLmJmZCAobTY4Ki0qLW5ldGJzZGVsZiopOiBOZXcgdGFyZ2V0LgoJKG02OCotKi1uZXRic2QpOiBBbHNvIGluY2x1ZGUgYmZkX2VsZjMyX202OGtfdmVjLgoJKG02OCotKi1uZXRic2Rhb3V0Kik6IE5ldyBhbGlhcyBmb3IgbTY4Ki0qLW5ldGJzZC4KCjIwMDEtMTItMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmbGluay5oIChzaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBTa2lwIGFub255bW91cyB2ZXJzaW9uIHRhZy4KCShlbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24pOiBEb24ndCBjb3VudCBhbm9ueW1vdXMgdmVyc2lvbiB0YWcuCgoyMDAxLTEyLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi1laC1mcmFtZS5jIChzdHJ1Y3QgY2llKTogQWRkIG1ha2VfbHNkYV9yZWxhdGl2ZS4KCShzdHJ1Y3QgZWhfY2llX2ZkZSk6IEFkZCBsc2RhX2VuY29kaW5nLCBsc2RhX29mZnNldCwKCW1ha2VfbHNkYV9yZWxhdGl2ZS4KCShyZWFkX3ZhbHVlLCB3cml0ZV92YWx1ZSk6IE5ldy4KCShfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWUpOiBJbmljaWFsaXplCglsc2RhX2VuY29kaW5nLCBsc2RhX29mZnNldCBhbmQgbWFrZV9sc2RhX3JlbGF0aXZlLgoJKF9iZmRfZWxmX2VoX2ZyYW1lX3NlY3Rpb25fb2Zmc2V0KTogSWYgbWFrZV9sc2RhX3JlbGF0aXZlLAoJcmVxdWVzdCBubyBkeW5hbWljIHJlbG9jIGZvciBMU0RBIGZpZWxkIG9mIEZERS4KCShfYmZkX2VsZl93cml0ZV9zZWN0aW9uX2VoX2ZyYW1lKTogSGFuZGxlIG1ha2VfbHNkYV9yZWxhdGl2ZS4KCUlmIGEgbm9uLURXX0VIX1BFX2Fic3B0ciB2YWx1ZSBpcyAwLCBkb24ndCBhZGp1c3QgaXQgYnkgYmFzZQoJb3IgcGNyZWwuICBGaXggYWRkcmVzcyBjb21wdXRhdGlvbiBmb3IgRFdfRUhfUEVfcGNyZWwgcmVsb2NzLgoJVXBkYXRlIExTREEgZmllbGQgaWYgTFNEQSBlbmNvZGluZyBpcyBEV19FSF9QRV9wY3JlbCwgYmVjYXVzZQoJLiBtaWdodCBoYXZlIGNoYW5nZWQgZHVlIHRvIGRlbGV0ZWQgRkRFIG9yIENJRXMuCgoyMDAxLTEyLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi1zdHJ0YWIuYyAoc3RydWN0IGVsZl9zdHJ0YWJfaGFzaF9lbnRyeSk6IEFkZCB1Lm5leHQuCgkobGFzdF9lcSk6IFJlbW92ZS4KCShfYmZkX2VsZl9zdHJ0YWJfZmluYWxpemUpOiBEb24ndCB1c2UgYSBoYXNoIHRhYmxlIGZvciBsYXN0CgljaGFyYWN0ZXIgY2hhaW5zLCBpbnN0ZWFkIHVzZSBhbiBhcnJheS4KCjIwMDEtMTItMTggIEphc29uIFRob3JwZSAgPHRob3JwZWpAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBlbGYuYyAoZWxmY29yZV9uZXRic2RfZ2V0X2x3cGlkKTogTmV3IGZ1bmN0aW9uLgoJKGVsZmNvcmVfZ3Jva19uZXRic2RfcHJvY2luZm8pOiBOZXcgZnVuY3Rpb24uCgkoZWxmY29yZV9ncm9rX25ldGJzZF9ub3RlKTogTmV3IGZ1bmN0aW9uLgoJKGVsZmNvcmVfcmVhZF9ub3Rlcyk6IENhbGwgZWxmY29yZV9ncm9rX25ldGJzZF9ub3RlIHRvIHByb2Nlc3MKCU5ldEJTRCBFTEYgY29yZSBmaWxlIG5vdGVzLgoKMjAwMS0xMi0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZmNvZGUuaCAoc3RydWN0IGJmZF9wcmVzZXJ2ZSk6IE5ldy4KCShlbGZfb2JqZWN0X3ApOiBSZXBsYWNlIHByZXNlcnZlZF8qIHZhcnMgd2l0aCBpbnN0YW5jZSBvZiBhYm92ZS4KCVNhdmUgYW5kIHJlc3RvcmUgYXJjaF9pbmZvIHBvaW50ZXIgcmF0aGVyIHRoYW4gYXJjaCwgbWFjaCBzbyB0aGF0Cgltb3JlIGNhc2VzIGNhbiBiZSByZXN0b3JlZC4gIFNhdmUgYW5kIHJlc3RvcmUgbmV3IHNlY3Rpb25fdGFpbCwKCXNlY3Rpb25faHRhYiBzdHJ1Y3R1cmUsIGFuZCBpbml0IGFwcHJvcHJpYXRlbHkuICBNb3ZlICJyZXN0IG9mCglzZWN0aW9uIGhlYWRlciIgY29kZSBzbyB0aGF0IGlfc2hkcnAgbmVlZHMgbm8gTlVMTCBpbml0aWFsaXNhdGlvbi4KCUZyZWUgb2xkIHNlY3Rpb25faHRhYiBvbiBzdWNjZXNzLgoJKiBlbGZjb3JlLmggKGVsZl9jb3JlX2ZpbGVfcCk6IExpa2V3aXNlLgoKMjAwMS0xMi0xNyAgVG9tIFJpeCAgPHRyaXhAcmVkaGF0LmNvbT4KCgkqIGNvZmZjb2RlLmggKHNlY190b19zdHlwX2ZsYWdzKTogQWRkIFNUWVBfRVhDRVBUIGFuZCBTVFlQX1RZUENISyBmb3IKCXhjb2ZmLgoKMjAwMS0xMi0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYtYmZkLmggKGVsZl9kaXNjYXJkZWRfc2VjdGlvbik6IERlZmluZS4KCSogZWxmbGluay5oIChlbGZfbGlua19pbnB1dF9iZmQpOiBVc2UgaXQuCgkoZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3ApOiBMaWtld2lzZS4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCB3YXJuIGFib3V0CglvdmVyZmxvd3MgZm9yIHBjIHJlbGF0aXZlIHJlbG9jcyBhZ2FpbnN0IGRpc2NhcmRlZCBzZWN0aW9ucy4KCjIwMDEtMTItMTcgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZvcm1hdHRpbmcuCgkqIGVsZjY0LW1pcHMuYzogQWRkIG1vc3Qgb2YgdGhlIGZpeGVzIGFuZCB0d2Vha3MgZG9uZSBpbiBlbGYzMi1taXBzLmMKCW92ZXIgdGhlIGxhc3QgbW9udGhzLiBBZGQgc29tZSBjb2RlIGZvciBtaXBzMTYgaGFuZGxpbmcuCgkobWlwc19lbGY2NF9jaGVja19taXBzMTZfc3R1YnMpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19lbGY2NF9zdHViX3NlY3Rpb25fcCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBDaGFuZ2UgaW50ZXJmYWNlIHRvIHN1cHBvcnQgbWlwczE2LgoJKG1pcHNfZWxmNjRfcGVyZm9ybV9yZWxvY2F0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTEyLTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVN1cHBvcnQgZm9yIG1vcmUgdGhhbiA2NGsgRUxGIHNlY3Rpb25zLgoJKiBlbGYtYmZkLmggKGVsZl9zaXplX2luZm8gPHN3YXBfc3ltYm9sX291dD4pOiBBZGQgc2huZHggcGFyYW0uCgkoYmZkX2VsZjMyX3N3YXBfc3ltYm9sX2luKTogTGlrZXdpc2UuCgkoYmZkX2VsZjMyX3N3YXBfc3ltYm9sX291dCk6IExpa2V3aXNlLgoJKGJmZF9lbGY2NF9zd2FwX3N5bWJvbF9pbik6IExpa2V3aXNlLgoJKGJmZF9lbGY2NF9zd2FwX3N5bWJvbF9vdXQpOiBMaWtld2lzZS4KCShlbGZfcmVsb2NfY29va2llKTogQWRkIGxvY3N5bV9zaG5keCBmaWVsZC4gIE1ha2UgbG9jc3ltcyBhIFBUUi4KCShlbGZfb2JqX3RkYXRhKTogQWRkIG51bV9lbGZfc2VjdGlvbnMsIHN5bXRhYl9zaG5keF9oZHIgYW5kCglzeW10YWJfc2huZHhfc2VjdGlvbi4KCShlbGZfbnVtc2VjdGlvbnMpOiBEZWZpbmUuCgkoZWxmX3N5bXRhYl9zaG5keCk6IERlZmluZS4KCSogZWxmLmMgKHNldHVwX2dyb3VwKTogVXNlIGVsZl9udW1zZWN0aW9ucyByYXRoZXIgdGhhbiBoZWFkZXIgZV9zaG51bS4KCShiZmRfZWxmX2ZpbmRfc2VjdGlvbik6IExpa2V3aXNlLgoJKGJmZF9zZWN0aW9uX2Zyb21fZWxmX2luZGV4KTogTGlrZXdpc2UuCgkoYmZkX3NlY3Rpb25fZnJvbV9zaGRyKTogTGlrZXdpc2UuICBIYW5kbGUgU0hUX1NZTVRBQl9TSE5EWC4KCShiZmRfc2VjdGlvbl9mcm9tX3Jfc3ltbmR4KTogUmVhZCBzeW1ib2wgc2huZHggZXh0ZW5zaW9uLCBhbmQKCXRyYW5zbGF0ZSBzdF9zaG5keCBmb3IgPiBTSE5fSElSRVNFUlZFLgoJKGFzc2lnbl9zZWN0aW9uX251bWJlcnMpOiBTa2lwIHJlc2VydmVkIHNlY3Rpb25zLiAgQXNzaWduCglzeW10YWJfc2huZHhfc2VjdGlvbiBhbmQgZWxmX251bXNlY3Rpb25zLiAgRXhjbHVkZSByZXNlcnZlZAoJc2VjdGlvbnMgZnJvbSBlX3NobnVtLiAgU2V0IHVwIHN5bXRhYl9zaG5keF9oZHIuCgkoX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogSGFuZGxlIHN5bXRhYl9zaG5keF9oZHIuCgkobWFwX3NlY3Rpb25zX3RvX3NlZ21lbnRzKTogRG9uJ3QgbWFwIGVoX2ZyYW1lX2hkciB1bmxlc3MgcmVxdWlyZWQuCgkoYXNzaWduX2ZpbGVfcG9zaXRpb25zX2V4Y2VwdF9yZWxvY3MpOiBVc2UgZWxmX251bXNlY3Rpb25zIHJhdGhlcgoJdGhhbiBoZWFkZXIgZV9zaG51bS4gIFNraXAgcmVzZXJ2ZWQgc2VjdGlvbnMgYW5kIHN5bXRhYl9zaG5keF9zZWN0aW9uLgoJKHByZXBfaGVhZGVycyk6IFNldCBuYW1lIGZvciBzeW10YWJfc2huZHhfaGRyLgoJKF9iZmRfZWxmX2Fzc2lnbl9maWxlX3Bvc2l0aW9uc19mb3JfcmVsb2NzKTogVXNlIGVsZl9udW1zZWN0aW9ucy4KCShfYmZkX2VsZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBMaWtld2lzZS4gIFNraXAgcmVzZXJ2ZWQgc2VjdGlvbnMuCgkoX2JmZF9lbGZfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uKTogQ2hlY2sgYmZkX3thYnMsY29tLHVuZH1fc2VjdGlvbgoJZmlyc3QuICBVc2UgZWxmX3NlY3Rpb25fZGF0YSBpZiBhdmFpbGFibGUuICBVc2UgZWxmX251bXNlY3Rpb25zLgoJU3RhcnQgc2NhbiBhdCBpbmRleCAxLgoJKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSApOiBDb21tZW50IGZpeGVzLgoJKE1BUF9PTkVTWU1UQUIpOiBEZWZpbmUgYWJvdmUgU0hOX0hJT1MuCgkoTUFQX0RZTlNZTVRBQik6IExpa2V3aXNlLgoJKE1BUF9TVFJUQUIpOiBMaWtld2lzZS4KCShNQVBfU0hTVFJUQUIpOiBMaWtld2lzZS4KCShNQVBfU1lNX1NITkRYKTogTmV3IGRlZmluZS4KCShfYmZkX2VsZl9jb3B5X3ByaXZhdGVfc3ltYm9sX2RhdGEpOiBIYW5kbGUgc3ltdGFiX3NobmR4X3NlY3Rpb24uCgkoc3dhcF9vdXRfc3ltcyk6IFN3YXAgb3V0IFNIVF9TWU1UQUJfU0hORFggc2VjdGlvbiB0b28uCgkqIGVsZmNvZGUuaCAoZWxmX3N3YXBfc3ltYm9sX2luKTogQWRkIHNobmR4IHBhcmFtLCBhbmQgaGFuZGxlIHNobmR4CglleHRlbnNpb24uCgkoZWxmX3N3YXBfc3ltYm9sX291dCk6IExpa2V3aXNlLgoJKGVsZl9vYmplY3RfcCk6IFNldCBlbGZfbnVtc2VjdGlvbnMsIGFuZCB1c2UgaW5zdGVhZCBvZiBlX3NobnVtLgoJSW5pdGlhbGlhbGlzZSByZXNlcnZlZCBlbGZfZWxmc2VjdGlvbnMgdG8gcG9pbnQgYXQgc2hkclswXS4gIFJlbW92ZQoJcmVkdW5kYW50IGJmZF9yZWxlYXNlIGNhbGxzLgoJKGVsZl9zbHVycF9zeW1ib2xfdGFibGUpOiBSZWFkIHN5bWJvbCBzaG5keCBleHRlbnNpb24sIGFuZCB1c2Ugd2l0aAoJZWxmX3N3YXBfc3ltYm9sX2luLiAgVHJhbnNsYXRlIHN0X3NobmR4IGZvciA+IFNITl9ISVJFU0VSVkUgdG9vLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wpOiBSZWFkIHN5bWJvbCBzaG5keAoJZXh0ZW5zaW9uLCBhbmQgdXNlIHdpdGggZWxmX3N3YXBfc3ltYm9sX2luLgoJKGVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IExpa2V3aXNlLiAgQWxzbyB0cmFuc2xhdGUgc3Rfc2huZHgKCWZvciBlbGYgc2VjdGlvbnMgPiBTSE5fSElSRVNFUlZFLgoJKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogQWRqdXN0IGVsZl9zd2FwX3N5bWJvbF9vdXQKCWNhbGwuCgkoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8pOiBBZGQgbG9jc3ltX3NobmR4IGFuZCBzeW1zaG5keGJ1Zi4KCShlbGZfYmZkX2ZpbmFsX2xpbmspOiBBbGxvY2F0ZSB0aGUgYWJvdmUsIGFuZCB0aWR5IGNvZGUgYWxsb2NhdGluZwoJb3RoZXIgYnVmZmVycy4gIFVzZSBlbGZfbnVtc2VjdGlvbnMgaW5zdGVhZCBvZiBlX3NobnVtLiAgQWRqdXN0CgllbGZfc3dhcF9zeW1ib2xfb3V0IGNhbGxzLgoJKGVsZl9saW5rX291dHB1dF9zeW0pOiBTd2FwIG91dCBzeW1ib2wgc2huZHggZXh0ZW5zaW9uIHRvby4KCShlbGZfbGlua19mbHVzaF9vdXRwdXRfc3ltcyk6IEFuZCBmbHVzaCB0aGVtIHRvIGRpc2suCgkoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IFVzZSBTSE5fQkFELiAgQWRqdXN0IGVsZl9zd2FwX3N5bWJvbF9vdXQKCWNhbGxzLgoJKGVsZl9nY19tYXJrKTogUmVhZCBzeW1ib2wgc2huZHggZXh0ZW5zaW9uLCBhbmQgdXNlIHdpdGgKCWVsZl9zd2FwX3N5bWJvbF9pbi4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBMaWtld2lzZSwgIFRyYW5zbGF0ZSBzdF9zaG5keCBmb3IgZWxmIHNlY3Rpb25zCgk+IFNITl9ISVJFU0VSVkUgdG9vLiAgVXNlIFNITl9CQUQuCgkoZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3ApOiBVc2Ugc3ltYm9sIHNobmR4IGV4dGVuc2lvbnMgd2l0aAoJZWxmX3N3YXBfc3ltYm9sX2luLiAgVHJhbnNsYXRlIHN0X3NobmR4ID4gU0hOX0hJUkVTRVJWRSB0b28uCgkoZWxmX2JmZF9kaXNjYXJkX2luZm8pOiBSZWFkIHN5bWJvbCBzaG5keCBleHRlbnNpb24uICBEb24ndCBhdHRlbXB0Cgl0byBjb250aW51ZSBhZnRlciBhIGJmZCBlcnJvci4KCSogZWxmLW0xMDIwMC5jIChtbjEwMjAwX2VsZl9yZWxheF9zZWN0aW9uKTogT25seSByZWFkIGxvY2FsIHN5bXMuCglTdGFzaCB0aGVtIGltbWVkaWF0ZWx5IHRvIHN5bXRhYl9oZHItPmNvbnRlbnRzIHJhdGhlciB0aGFuIGxhdGVyCglpbiBtdWx0aXBsZSBwbGFjZXMuICBDbGVhbiB1cCBhZnRlcndhcmRzLiAgUmVhZCBzeW1ib2wgc2huZHgKCWV4dGVuc2lvbiwgYW5kIHVzZSB3aXRoIHN3YXBfc3ltYm9sX2luLiAgVHJhbnNsYXRlIFNITl9VTkRFRiwKCVNITl9BQlMsIFNITl9DT01NT04gYW5kIGVsZiBzZWN0aW9ucyA+IFNITl9ISVJFU0VSVkUgdG8gYmZkCglzZWN0aW9ucyB0b28uICBSZW1vdmUgZGVhZCBjb2RlLgoJKG1uMTAyMDBfZWxmX3JlbGF4X2RlbGV0ZV9ieXRlcyk6IFVzZSBzeW1ib2wgc2huZHggZXh0ZW5zaW9uCgl3aGVuIHN3YXBwaW5nIGluIHN5bWJvbHMuICBUaWR5IGNvZGUgYWRqdXN0aW5nIGdsb2JhbCBzeW1zLgoJRG9uJ3Qgc3dhcCBpbiBnbG9iYWwgc3ltcy4KCShtbjEwMjAwX2VsZl9zeW1ib2xfYWRkcmVzc19wKTogTGlrZXdpc2UuICBSZW1vdmUgZXh0c3ltcyBwYXJhbS4KCShtbjEwMjAwX2VsZl9nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVudHMpOiBSZWFkIHN5bWJvbCBzaG5keAoJZXh0ZW5zaW9uLCBhbmQgdXNlIHdpdGggc3dhcF9zeW1ib2xfaW4uICBSZW5hbWUgInNpemUiIC0+ICJhbXQiCgl0byBtYXhpbWl6ZSBjb2RlIGluIGNvbW1vbiB3aXRoIG90aGVyIGZpbGVzLiAgVHJhbnNsYXRlIHN0X3NobmR4Cglmb3IgPiBTSE5fSElSRVNFUlZFIHRvby4gIFJlbW92ZSBkZWFkIGNvZGUuCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IE9ubHkgcmVhZCBsb2NhbCBzeW1zLgoJU3Rhc2ggdGhlbSBpbW1lZGlhdGVseSB0byBzeW10YWJfaGRyLT5jb250ZW50cyByYXRoZXIgdGhhbiBsYXRlcgoJaW4gbXVsdGlwbGUgcGxhY2VzLiAgQ2xlYW4gdXAgYWZ0ZXJ3YXJkcy4gIFJlYWQgc3ltYm9sIHNobmR4CglleHRlbnNpb24sIGFuZCB1c2Ugd2l0aCBzd2FwX3N5bWJvbF9pbi4gIFJlbW92ZSBkZWFkIGNvZGUuCgkobW4xMDMwMF9lbGZfcmVsYXhfZGVsZXRlX2J5dGVzKTogQXMgZm9yIGVsZi1tMTAyMDAuYy4KCShtbjEwMzAwX2VsZl9zeW1ib2xfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkobW4xMDMwMF9lbGZfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzKTogTGlrZXdpc2UuCgkqIGVsZjMyLWg4MzAwLmMgKGVsZjMyX2g4X3JlbGF4X3NlY3Rpb24pOiBBcyBmb3IgZWxmLW0xMDMwMC5jLgoJKGVsZjMyX2g4X3JlbGF4X2RlbGV0ZV9ieXRlcyk6IExpa2V3aXNlLgoJKGVsZjMyX2g4X3N5bWJvbF9hZGRyZXNzX3ApOiBMaWtld2lzZS4KCShlbGYzMl9oOF9nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVudHMpOiBMaWtld2lzZS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBSZWFkIHN5bWJvbCBzaG5keAoJZXh0ZW5zaW9uLCBhbmQgdXNlIHdpdGggc3dhcF9zeW1ib2xfaW4uCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9jaGVja19yZWxvY3MpOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jIChpMzcwX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IEFkanVzdCBjYWxsIHRvCgliZmRfZWxmMzJfc3dhcF9zeW1ib2xfb3V0LgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyk6IFRyYW5zbGF0ZQoJZWxmIHNlY3Rpb25zID4gU0hOX0hJUkVTRVJWRSB0b28uCgkqIGVsZjMyLW02OGsuYyAoYmZkX202OGtfZWxmMzJfY3JlYXRlX2VtYmVkZGVkX3JlbG9jcyk6IE9ubHkgcmVhZAoJbG9jYWwgc3ltcy4gIFJlYWQgc3ltYm9sIHNobmR4IGV4dGVuc2lvbiwgYW5kIHVzZSB3aXRoIHN3YXBfc3ltYm9sX2luLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IFVzZQoJZWxmX251bXNlY3Rpb25zIHJhdGhlciB0aGFuIGhlYWRlciBlX3NobnVtLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsYXhfc2VjdGlvbik6IEFzIGZvciBlbGYtbTEwMzAwLmMuCgkoc2hfZWxmX3JlbGF4X2RlbGV0ZV9ieXRlcyk6IExpa2V3aXNlLgoJKHNoX2VsZl9nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVudHMpOiBMaWtld2lzZS4gIE9ubHkgcmVhZCBsb2NhbAoJc3ltYm9scy4KCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9zeW1ib2xfcHJvY2Vzc2luZyk6IFVzZSBhbiB1bnNpZ25lZCBpbnQgdG8KCWhvbGQgc2VjdGlvbiBpbmRleC4gIFVzZSBlbGZfbnVtc2VjdGlvbnMgcmF0aGVyIHRoYW4gZV9zaG51bS4KCVJlbmFtZSAiaW5kZXgiIC0+ICJpbmR4IiB0byBhdm9pZCBzaGFkb3dpbmcgd2FybmluZy4KCSh2ODUwX2VsZl9hZGRfc3ltYm9sX2hvb2spOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsYXhfc2VjdGlvbik6IE9ubHkgcmVhZCBsb2NhbCBzeW1zLgoJUmVhZCBzeW1ib2wgc2huZHggZXh0ZW5zaW9uLCBhbmQgdXNlIHdpdGggc3dhcF9zeW1ib2xfaW4uCgkqIGVsZjMyLXhzdG9ybXkxNi5jICh4c3Rvcm15MTZfZWxmX3JlbGF4X3NlY3Rpb24pOiBMaWtld2lzZS4KCVRyYW5zbGF0ZSBTSE5fQ09NTU9OIGFuZCBlbGYgc2VjdGlvbnMgPiBTSE5fSElSRVNFUlZFIHRvby4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3JlbGF4X3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGZOTl9pYTY0X2FpeF9hZGRfc3ltYm9sX2hvb2spOiBVc2UgZWxmX251bXNlY3Rpb25zLgoKCSogZWxmLW0xMDMwMC5jIChtbjEwMzAwX2VsZl9nY19tYXJrX2hvb2spOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2hlY2tzCgliZWZvcmUgY2FsbGluZyBiZmRfc2VjdGlvbl9mcm9tX2VsZl9pbmRleCBvbiBsb2NhbCBzeW1zLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKiBlbGYzMi1hdnIuYyAoZWxmMzJfYXZyX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKiBlbGYzMi1jcmlzLmMgKGNyaXNfZWxmX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKiBlbGYzMi1kMTB2LmMgKGVsZjMyX2QxMHZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCSogZWxmMzItbTMyci5jIChtMzJyX2VsZl9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCSogZWxmMzItbWNvcmUuYyAobWNvcmVfZWxmX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLW9wZW5yaXNjLmMgKG9wZW5yaXNjX2VsZl9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLXMzOTAuYyAoZWxmX3MzOTBfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjMyLXhzdG9ybXkxNi5jICh4c3Rvcm15MTZfZWxmX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKiBlbGY2NC1taXBzLmMgKG1pcHNfZWxmNjRfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjY0LW1taXguYyAobW1peF9lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjY0LXBwYy5jIChwcGM2NF9lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjY0LXMzOTAuYyAoZWxmX3MzOTBfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgoyMDAxLTEyLTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCUhhc2ggYmZkIHNlY3Rpb25zIGZvciBmYXN0IGxvb2t1cCBhbmQgY3JlYXRlLgoJKiBiZmQuYyAoc3RydWN0IF9iZmQpOiBBZGQgc2VjdGlvbl9odGFiLCBzZWN0aW9uX3RhaWwuCgkqIGxpYmJmZC1pbi5oIChfYmZkX2RlbGV0ZV9iZmQpOiBEZWNsYXJlLgoJKGJmZF9zZWN0aW9uX2hhc2hfbmV3ZnVuYyk6IERlY2xhcmUuCgkqIG9wbmNscy5jIChfYmZkX25ld19iZmQpOiBGcmVlIG1lbW9yeSBvbiBmYWlsdXJlLiAgSW5pdAoJc2VjdGlvbl9odGFiIGFuZCBzZWN0aW9uX3RhaWwuCgkoX2JmZF9kZWxldGVfYmZkKTogTmV3IGZ1bmN0aW9uLgoJKGJmZF9vcGVucik6IFVzZSBpdC4KCShiZmRfZmRvcGVucik6IExpa2V3aXNlLgoJKGJmZF9vcGVuc3RyZWFtcik6IExpa2V3aXNlLgoJKGJmZF9vcGVudyk6IExpa2V3aXNlLgoJKGJmZF9jbG9zZSk6IExpa2V3aXNlLgoJKGJmZF9jbG9zZV9hbGxfZG9uZSk6IExpa2V3aXNlLgoJKGJmZF9yZWxlYXNlKTogQ29tbWVudC4KCSogc2VjdGlvbi5jIChzdHJ1Y3Qgc2VjdGlvbl9oYXNoX2VudHJ5KTogTmV3LgoJKGJmZF9zZWN0aW9uX2hhc2hfbmV3ZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShzZWN0aW9uX2hhc2hfbG9va3VwKTogRGVmaW5lLgoJKGJmZF9zZWN0aW9uX2luaXQpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCgliZmRfbWFrZV9zZWN0aW9uX2FueXdheS4KCShiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSk6IExvb2t1cCB2aWEgaGFzaCB0YWJsZS4KCShiZmRfZ2V0X3VuaXF1ZV9zZWN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShiZmRfbWFrZV9zZWN0aW9uX29sZF93YXkpOiBSZXdyaXRlIHRvIHVzZSBoYXNoIHRhYmxlLgoJKGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5KTogTGlrZXdpc2UuCgkoYmZkX21ha2Vfc2VjdGlvbik6IExpa2V3aXNlLiAgUmV0dXJuIE5VTEwgZm9yIGF0dGVtcHRzIHRvIG1ha2UKCUJGRF97QUJTLENPTSxVTkQsSU5EfV9TRUNUSU9OX05BTUUuCgkoX2JmZF9zdHJpcF9zZWN0aW9uX2Zyb21fb3V0cHV0KTogQWRqdXN0IHNlY3Rpb25fdGFpbCBpZiBuZWVkZWQuCgkqIGNvbmZpZ3VyZS5pbjogQnVtcCBiZmQgdmVyc2lvbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMS0xMi0xNSAgVGhpZW1vIFNldWZlciA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9saW5rX2hhc2hfZW50cnkpOiBOZXcgbGluayBoYXNoLgoJKG1pcHNfZWxmNjRfaGlnaCk6IE5ldyBGdW5jdGlvbi4KCShtaXBzX2VsZjY0X2hpZ2hlcik6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfaGlnaGVzdCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfaW5mb190b19ob3d0b19yZWwpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2luZm9fdG9faG93dG9fcmVsYSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfd3JpdGVfcmVsKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF93cml0ZV9yZWxhKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9saW5rX2hhc2hfbmV3ZnVuYyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfaGkxNl9yZWxvYyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfaGlnaGVyX3JlbG9jKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9oaWdoZXN0X3JlbG9jKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9ncHJlbDE2X3JlbG9jKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9ncHJlbDE2X3JlbG9jYSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfbGl0ZXJhbF9yZWxvYyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfZ3ByZWwzMl9yZWxvYyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc2hpZnQ2X3JlbG9jKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9nb3QxNl9yZWxvYyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfYXNzaWduX2dwKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9maW5hbF9ncCk6IExpa2V3aXNlLgoJKGdwcmVsMTZfd2l0aF9ncCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfYWRkaXRpb25hbF9wcm9ncmFtX2hlYWRlcnMpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2dvdF9vZmZzZXRfZnJvbV9pbmRleCk6IExpa2V3aXNlLgoJKF9taXBzX2VsZjY0X2dvdF9pbmZvKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9zaWduX2V4dGVuZCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfb3ZlcmZsb3dfcCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfZ2xvYmFsX2dvdF9pbmRleCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc29ydF9oYXNoX3RhYmxlX2YpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X3NvcnRfaGFzaF90YWJsZSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc3dhcF9tc3ltX291dCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfY3JlYXRlX2xvY2FsX2dvdF9lbnRyeSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfbG9jYWxfZ290X2luZGV4KTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9nb3RfcGFnZSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfZ290MTZfZW50cnkpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2xvY2FsX3JlbG9jYXRpb25fcCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfbmV4dF9yZWxvY2F0aW9uKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9jcmVhdGVfZHluYW1pY19yZWxvY2F0aW9uKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfb2J0YWluX2NvbnRlbnRzKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9wZXJmb3JtX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2Fsd2F5c19zaXplX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfZ2Nfc3dlZXBfaG9vayk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfY3JlYXRlX2dvdF9zZWN0aW9uKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9yZWNvcmRfZ2xvYmFsX2dvdF9zeW1ib2wpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2NyZWF0ZV9tc3ltX3NlY3Rpb24pOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2FsbG9jYXRlX2R5bmFtaWNfcmVsb2NhdGlvbnMpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2NoZWNrX3JlbG9jcyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfb3V0cHV0X2V4dHN5bSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc3dhcF9ncHRhYl9pbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc3dhcF9ncHRhYl9vdXQpOiBMaWtld2lzZS4KCShncHRhYl9jb21wYXJlKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9maW5hbF9saW5rKTogTGlrZXdpc2UuCgkocHJldl9yZWxvY19hZGRlbmQpOiBSZW1lbmJlciBhZGRlbmQgb2YgcHJldmlvdXMgcGFydHMgb2YgYSBjb21iaW5lZAoJcmVsb2MuCgkoRUxGX01JUFNfR1BfT0ZGU0VUKTogTmV3IGRlZmluZS4KCShTVFVCX0xXLFNUVUJfTU9WRSxTVFVCX0pBTFIsU1RVQl9MSTE2KTogTGlrZXdpc2UuCgkoTUlQU19GVU5DVElPTl9TVFVCX1NJWkUpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2hvd3RvX3JlbCk6IEZpeCBIT1dUTyBkZWZpbmVzLgoJKG1pcHNfZWxmNjRfaG93dG9fcmVsYSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc3dhcF9yZWxvY2Ffb3V0KTogRml4IHNpZ25lZG5lc3MuCgkobWlwc19lbGY2NF9iZV9zd2FwX3JlbG9jX2luKTogVXNlIEVMRjY0KiBpbnN0ZWFkIG9mIEVMRjMyKi4KCShtaXBzX2VsZjY0X2JlX3N3YXBfcmVsb2NhX2luKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9iZV9zd2FwX3JlbG9jX291dCk6IExpa2V3aXNlLiBQcmVzZXJ2ZSBleHRlbmRlZCB0eXBlIGluZm8uCgkobWlwc19lbGY2NF9iZV9zd2FwX3JlbG9jYV9vdXQpOiBMaWtld2lzZS4KCjIwMDEtMTItMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmLWJmZC5oIChfYmZkX2VsZl9tYXliZV9zdHJpcF9laF9mcmFtZV9oZHIpOiBOZXcgcHJvdG90eXBlLgoJKiBlbGYtZWgtZnJhbWUuYyAoc3RydWN0IGVoX2ZyYW1lX2hkcl9pbmZvKTogQWRkIHN0cmlwLgoJKF9iZmRfZWxmX2Rpc2NhcmRfc2VjdGlvbl9laF9mcmFtZSk6IERvbid0IGNyZWF0ZSAuZWhfZnJhbWVfaGRyCglzZWNfaW5mbyBoZXJlLiAgRnJlZSBlaGJ1Zi4KCShfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWVfaGRyKTogRG9uJ3Qgc2l6ZSB0aGUgc2VjdGlvbgoJaWYgaGRyX2luZm8tPnN0cmlwLgoJKF9iZmRfZWxmX21heWJlX3N0cmlwX2VoX2ZyYW1lX2hkcik6IE5ldy4KCSogZWxmbGluay5oIChzaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsIGl0LgoKMjAwMS0xMi0xNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9kaXNjYXJkX2luZm8pOiBGaXggc2VnZmF1bHQgd2hlbiBkeW5vYmogTlVMTC4KCjIwMDEtMTItMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmLWJmZC5oIChlbnVtIGVsZl9saW5rX2luZm9fdHlwZSk6IE5ldy4KCShzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEpOiBSZW1vdmUgc3RhYl9pbmZvIGFuZCBtZXJnZV9pbmZvCglmaWVsZHMsIGFkZCBzZWNfaW5mbyBhbmQgc2VjX2luZm9fdHlwZS4KCShzdHJ1Y3QgZWxmX29ial90ZGF0YSk6IEFkZCBlaF9mcmFtZV9oZHIgZmllbGQuCgkoX2JmZF9lbGZfZGlzY2FyZF9zZWN0aW9uX2VoX2ZyYW1lKTogTmV3IHByb3RvdHlwZS4KCShfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWVfaGRyKTogTGlrZXdpc2UuCgkoX2JmZF9lbGZfZWhfZnJhbWVfc2VjdGlvbl9vZmZzZXQpOiBMaWtld2lzZS4KCShfYmZkX2VsZl93cml0ZV9zZWN0aW9uX2VoX2ZyYW1lKTogTGlrZXdpc2UuCgkoX2JmZF9lbGZfd3JpdGVfc2VjdGlvbl9laF9mcmFtZV9oZHIpOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGVsZi1laC1mcmFtZS5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmLWVoLWZyYW1lLmMuCgkoZWxmLWVoLWZyYW1lLmxvKTogTmV3LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KCSogY29uZmlndXJlLmluIChlbGYpOiBBZGQgZWxmLWVoLWZyYW1lLmxvLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGVsZi5jIChfYmZkX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogU3VwcG9ydCBQVF9HTlVfRUhfRlJBTUUuCgkobWFwX3NlY3Rpb25zX3RvX3NlZ21lbnRzKTogQ3JlYXRlIFBUX0dOVV9FSF9GUkFNRSBpZiByZXF1ZXN0ZWQuCgkoZ2V0X3Byb2dyYW1faGVhZGVyX3NpemUpOiBUYWtlIGludG8gYWNjb3VudCBQVF9HTlVfRUhfRlJBTUUKCXNlZ21lbnQuCgkoX2JmZF9lbGZfcmVsYV9sb2NhbF9zeW0pOiBVc2Ugc2VjX2luZm9fdHlwZSBhbmQgc2VjX2luZm8uCgkoX2JmZF9lbGZfcmVsX2xvY2FsX3N5bSk6IExpa2V3aXNlLgoJKF9iZmRfZWxmX3NlY3Rpb25fb2Zmc2V0KTogTGlrZXdpc2UuICBDYWxsCglfYmZkX2VsZl9laF9mcmFtZV9zZWN0aW9uX29mZnNldCB0b28uCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlIHNlY19pbmZvX3R5cGUgYW5kCglzZWNfaW5mby4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYtZWgtZnJhbWUuYzogTmV3IGZpbGUuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRG9uJ3Qgb3B0aW1pemUgU0hGX01FUkdFCgkuc3RhYiBzZWN0aW9ucy4gIFNldCBzZWNfaW5mb190eXBlLCB1c2Ugc2VjX2luZm8gaW5zdGVhZAoJb2YgbWVyZ2VfaW5mbyBhbmQgc3RhYl9pbmZvLgoJKGVsZl9saW5rX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogQ3JlYXRlIC5laF9mcmFtZV9oZHIgc2VjdGlvbgoJaWYgLS1laC1mcmFtZS1oZHIuCgkoZWxmX2JmZF9maW5hbF9saW5rKTogV3JpdGUgLmVoX2ZyYW1lX2hkciBzZWN0aW9uLgoJKGVsZl9saW5rX3NlY19tZXJnZV9zeW1zKTogVXNlIHNlY19pbmZvX3R5cGUgYW5kIHNlY19pbmZvLgoJKGVsZl9saW5rX2lucHV0X2JmZCk6IExpa2V3aXNlLgoJQ2FsbCBfYmZkX2VsZl93cml0ZV9zZWN0aW9uX2VoX2ZyYW1lIHRvIHdyaXRlIC5laF9mcmFtZSBzZWN0aW9ucy4KCShlbGZfYmZkX2Rpc2NhcmRfaW5mbyk6IEFkZCBvdXRwdXRfYmZkIGFyZ3VtZW50LgoJQ2FsbCBfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWUgYW5kCglfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWVfaGRyLgoJKGVsZl9zZWN0aW9uX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzKTogVXNlIHNlY19pbmZvX3R5cGUsIG5vdCBzZWN0aW9uCgluYW1lcy4KCSogYmZkLWluLmggKGJmZF9lbGYzMl9kaXNjYXJkX2luZm8sIGJmZF9lbGY2NF9kaXNjYXJkX2luZm8pOiBBZGp1c3QKCXByb3RvdHlwZXMuCgkqIGJmZC1pbjIuaCAoYmZkX2VsZjMyX2Rpc2NhcmRfaW5mbywgYmZkX2VsZjY0X2Rpc2NhcmRfaW5mbyk6IExpa2V3aXNlLgoKMjAwMS0xMi0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN5bXMuYyAoX2JmZF9nZW5lcmljX3JlYWRfbWluaXN5bWJvbHMpOiBFYXJseSByZXR1cm4gZm9yCglubyBzeW1ib2xzLiAgUGF0Y2ggZnJvbSBGcmVlQlNEIGZvbGs7IGV4YWN0IG9yaWdpbiB1bmtub3duLgoKMjAwMS0xMi0xMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZmNvZGUuaCAoZWxmX3N3YXBfZWhkcl9vdXQpOiBBZGp1c3QgdmFsdWUgd3JpdHRlbiBmb3IgZV9zaG51bQoJYW5kIGVfc2hzdHJuZHggaWYgb3V0IG9mIHJhbmdlLgoJKGVsZl9vYmplY3RfcCk6IFJlYWQgZXh0ZW5kZWQgdmFsdWVzIGZvciBlX3NobnVtIGFuZCBlX3Noc3RybmR4Cglmcm9tIHRoZSBmaXJzdCBzZWN0aW9uIGhlYWRlci4gIEFsbG9jYXRlIHNwYWNlIGluIGVsZl9lbGZzZWN0aW9ucwoJZm9yIHJlc2VydmVkIHNlY3Rpb25zIGFuZCBzZXQgdG8gTlVMTHMuCgkoZWxmX3dyaXRlX3NoZHJzX2FuZF9laGRyKTogU2V0IG92ZXJmbG93IGZpZWxkcyBpbiBmaXJzdCBzZWN0aW9uCgloZWFkZXIuICBTa2lwIHJlc2VydmVkIHNlY3Rpb25zIGluIGVsZl9lbGZzZWN0aW9ucy4gIFJlbW92ZQoJZHVwbGljYXRlIHNpemUgY2FsY3VsYXRpb24uCgoyMDAxLTEyLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBDb3Jpbm5hIFZpbnNjaGVuICA8dmluc2NoZW5AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmFtOiBBZGQgc3VwcG9ydCBmb3IgeHN0b3JteTE2LgoJKiBhcmNodXJlcy5jOiBBZGQgc3VwcG9ydCBmb3IgeHN0b3JteTE2LgoJKiBjb25maWcuYmZkOiBBZGQgc3VwcG9ydCBmb3IgeHN0b3JteTE2LgoJKiBjb25maWd1cmUuaW46IEFkZCBzdXBwb3J0IGZvciB4c3Rvcm15MTYuCgkqIHJlbG9jLmM6IEFkZCBzdXBwb3J0IGZvciB4c3Rvcm15MTYuCgkqIHRhcmdldHMuYzogQWRkIHN1cHBvcnQgZm9yIHhzdG9ybXkxNi4KCSogY3B1LXhzdG9ybXkxNi5jOiBOZXcgZmlsZS4KCSogZWxmMzIteHN0b3JteTE2LmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlZC4KCjIwMDEtMTItMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogZWxmLmMgKGFzc2lnbl9maWxlX3Bvc2l0aW9uc19mb3Jfc2VnbWVudHMpOiBDb21iaW5lIHNlbnRhbmNlCglmcmFnbWVudHMgaW50byBhIHNpbmdsZSBzZW50YW5jZSBpbiBvcmRlciB0byBwZXJtaXQgYmV0dGVyCgl0cmFuc2xhdGlvbiBpbnRvIGZvcmVpZ24gbGFuZ3VhZ2VzLgoKMjAwMS0xMi0wNyAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXMzOTAuYyAoZWxmMzJfczM5MF9ncm9rX3Byc3RhdHVzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMpOiBEZWZpbmUuCgoyMDAxLTEyLTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBSZXZlcnQKCTIwMDEtMDktMTQgY2hhbmdlLgoKMjAwMS0xMi0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYuYyAoX2JmZF9lbGZfcmVsYV9sb2NhbF9zeW0pOiBPbmx5IGNhbGwKCV9iZmRfbWVyZ2VkX3NlY3Rpb25fb2Zmc2V0IGlmIG1lcmdlX2luZm8gaXMgbm9uLU5VTEwuCgkoX2JmZF9lbGZfcmVsX2xvY2FsX3N5bSwgX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQpOiBOZXcuCgkqIGVsZi1iZmQuaCAoX2JmZF9lbGZfcmVsX2xvY2FsX3N5bSwgX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQpOiBOZXcKCXByb3RvdHlwZXMuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IFVzZQoJX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQuCgkoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBVc2UgX2JmZF9lbGZfcmVsX2xvY2FsX3N5bS4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlCglfYmZkX2VsZl9zZWN0aW9uX29mZnNldCBhbmQgX2JmZF9lbGZfcmVsX2xvY2FsX3N5bS4KCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IFVzZQoJX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQuCgkqIGVsZjMyLWNyaXMuYyAoY3Jpc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY3JlYXRlX2R5bmFtaWNfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXMzOTAuYyAoZWxmX3MzOTBfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXBwYy5jIChwcGM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1zMzkwLmMgKGVsZl9zMzkwX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2luc3RhbGxfZHluX3JlbG9jKTogTGlrZXdpc2UuCgoyMDAxLTEyLTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChjbG9iYmVyX21pbGxpY29kZV9zeW1ib2xzKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYKCWFscmVhZHkgZm9yY2VkIGxvY2FsLgoKMjAwMS0xMi0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBDb21iaW5lCglmcmFnbWVudGVkIHNlbnRlbmNlIHBhcnRzIGludG8gYSB3aG9sZSBzZW50ZW5jZSB0byBwZXJtaXQKCWJldHRlciB0cmFuc2xhdGlvbiBpbnRvIGZvcmVpZ24gbGFuZ3VhZ2VzLgoKMjAwMS0xMi0wNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDEtMTItMDUgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBNYWtlZmlsZS5hbTogc3BsaXQgdXAgQkZEX0xJQlMgbGlrZSBzdGF0ZW1lbnRzIGluIEJGRDMyX0xJQlMgYW5kCglCRkQ2NF9MSUJTLCBtYWtlIHRoZSBsYXR0ZXIgZGVwZW5kaW5nIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgQkZENjQuCglBZGQgYXJjaGl2ZTY0LmMgc291cmNlIGZpbGUuCgkqIGFyY2hpdmU2NC5jOiBOZXcgZmlsZSBpbXBsZW1lbnRpbmcgYmZkX2VsZjY0X2FyY2hpdmVfc2x1cnBfYXJtYXAKCWFuZCBiZmRfZWxmNjRfYXJjaGl2ZV93cml0ZV9hcm1hcCwgY29kZSBmcm9tIGVsZjY0LW1pcHMuYwoJKiBhcmNoaXZlLmMgKGJmZF9zbHVycF9hcm1hcCk6IEFkZCBFTEY2NCBhcmNoaXZlIHN1cHBvcnQuCgkqIGNvbmZpZy5iZmQgKG1pcHMqLSotaXJpeDYqKTogQWxsb3cgd2l0aCBCRkQ2NCBvbmx5LgoJKG1pcHM2NCplbC0qLWxpbnV4Kik6IExpa2V3aXNlLgoJKG1pcHMqZWwtKi1saW51eCopOiBMaWtld2lzZS4gUmVvcmRlciBlbnRyaWVzLgoJKiBjb25maWd1cmUuaW4gKGJmZF9saWJzKTogRGVmaW5lIGluIGRlcGVuZGVuY3kgb2YgQkZENjQgYW5kCglBQ19TVUJTVCBpdC4KCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X3NsdXJwX2FybWFwKTogUmVtb3ZlLCB1c2UKCWJmZF9lbGY2NF9hcmNoaXZlX3NsdXJwX2FybWFwIGluc3RlYWQuCgkobWlwc19lbGY2NF93cml0ZV9hcm1hcCk6IFJlbW92ZSwgdXNlIGJmZF9lbGY2NF9hcmNoaXZlX3dyaXRlX2FybWFwCglpbnN0ZWFkLgoKMjAwMS0xMi0wNCAgVGhpZW1vIFNldWZlciA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCgkqIGNvbmZpZy5iZmQ6IFJlbW92ZSB0cmFpbGluZyBibGFua3MuCgkqIGVsZjMyLW1pcHMuYyAoZ3ByZWwxNl93aXRoX2dwKTogUmVtb3ZlIHN1cGVyZmx1b3VzIGNhc3RzLgoKMjAwMS0xMi0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1kMTB2LmMgKGVsZl9kMTB2X2hvd3RvX3RhYmxlKTogQWRqdXN0IGJpdC1zaXplIG9mCglSX0QxMFZfMTBfUENSRUxfTCwgUl9EMTBWXzEwX1BDUkVMX1IsIFJfRDEwVl8xOCwKCVJfRDEwVl8xOF9QQ1JFTC4gIENoZWNrIDEwX1BDUkVMIHJlbG9jYXRpb25zIGFzIHNpZ25lZC4KCURpc2FibGUgcG9pbnRsZXNzIG92ZXJmbG93IGNoZWNraW5nIG9mIE5PTkUgYW5kIDMyLgoKMjAwMS0xMi0wNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHJlbG9jLmMgKGJmZF9pbnN0YWxsX3JlbG9jYXRpb24pOiBDb3JyZWN0IHJlbG9jIGFkZHJlc3MgdGVzdC4KCShiZmRfcGVyZm9ybV9yZWxvY2F0aW9uKTogRm9ybWF0dGluZyBmaXguCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZSBmb3IgMjAwMS0xMi0wMiByZWxvYy5jIGNoYW5nZS4KCjIwMDEtMTItMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChMSU5HVUFTKTogQWRkIHRyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHBvL3RyLnBvOiBJbXBvcnQgZnJvbSB0cmFuc2xhdGlvbiBwcm9qZWN0J3Mgd2ViIHNpdGUuCgoyMDAxLTEyLTAzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChocHBhX2dldF9zdHViX2VudHJ5KTogUmVtb3ZlIGRlYnVnIG1lc3NhZ2UgdGhhdAoJaGFwcGVucyB0byB0cmlnZ2VyIG9uIHVuZGVmaW5lZCBzeW1ib2xzLgoJKGZpbmFsX2xpbmtfcmVsb2NhdGUpOiBSZXR1cm4gYmZkX3JlbG9jX3VuZGVmaW5lZCBmb3IgdW5kZWZpbmVkCglzdHVicy4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBzYXkgd2UgY2FuJ3QgaGFuZGxlIGEgcmVsb2MKCWlmIHdlIGhhdmUgYWxyZWFkeSB3YXJuZWQgYWJvdXQgYW4gdW5kZWZpbmVkIHN5bWJvbC4KCjIwMDEtMTItMDIgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBlbGYzMi1taXBzLmMgKE5FV0FCSV9QKTogTmV3IGRlZmluZS4KCShVU0VfUkVMKTogUmVtb3ZlLCByZXBsYWNlZCBieQoJKGVsZl9iYWNrZW5kX21heV91c2VfcmVsX3ApOiBOZXcgZGVmaW5lLgoJKGVsZl9iYWNrZW5kX21heV91c2VfcmVsYV9wKTogTGlrZXdpc2UuCgkoZWxmX2JhY2tlbmRfZGVmYXVsdF91c2VfcmVsYV9wKTogTGlrZXdpc2UuCgkoZWxmX21pcHNfaG93dG9fdGFibGUpOiBSZW5hbWUgdG8gZWxmX21pcHNfaG93dG9fdGFibGVfcmVsLgoJRml4IHNvbWUgcmVsb2NhdGlvbiBkZWZpbml0aW9ucy4KCShlbGZfbWlwc19ob3d0b190YWJsZV9yZWxhKTogTmV3IFJFTEEgcmVsb2NhdGlvbiBkZWZpbml0aW9ucyBmb3IKCU5ld0FCSSBzdXBwb3J0LgoJKG1pcHMzMl82NGJpdF9yZWxvYyk6IFVzZSB0aGUgcmVuYW1lZCBlbGZfbWlwc19ob3d0b190YWJsZV9yZWwuCgkoYmZkX2VsZjMyX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKG1pcHNfcnR5cGVfdG9faG93dG8pOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX29iamVjdF9wKTogVHlwby4KCShlbGZfYmFja2VuZF9zaWduX2V4dGVuZF92bWEpOiBSZW9yZGVyZWQgdG9nZXRoZXIgd2l0aCBtYW55IG90aGVyCglkZWZpbmVzIG5lYXJieSB0byByZXNlbWJsZSB0aGUgb3JkZXIgb2YgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWRlcgoJZmlsZS4KCjIwMDEtMTItMDIgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBjb2ZmLW1pcHMuYyAobWlwc19iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBSZXBsYWNlCglCRkRfUkVMT0NfTUlQU19HUFJFTCBieSBCRkRfUkVMT0NfR1BSRUwxNi4KCSogcGUtbWlwcy5jIChtaXBzX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfcmVsb2NfbWFwKTogTGlrZXdpc2UuIFJlcGxhY2UKCUJGRF9SRUxPQ19NSVBTX0dQUkVMMzIgYnkgQkZEX1JFTE9DX0dQUkVMMzIuCgkqIGVsZjY0LW1pcHMuYyAobWlwc19yZWxvY19tYXApOiBMaWtld2lzZS4KCSogcmVsb2MuYyAoQkZEX1JFTE9DX01JUFNfR1BSRUwpOiBSZW1vdmUuCgkoQkZEX1JFTE9DX01JUFNfR1BSRUwzMik6IFJlbW92ZS4KCjIwMDEtMTEtMzAgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfYWRkX2RlZmF1bHRfc3ltYm9sKTogTmV3LgoJKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IENhbGwgZWxmX2FkZF9kZWZhdWx0X3N5bWJvbCAoKQoJdG8gY3JlYXRlIGFuIGluZGlyZWN0IHN5bWJvbCBmcm9tIHRoZSBkZWZhdWx0IGZvciB0aGUgc3ltYm9sCgl3aXRoIHRoZSBkZWZhdWx0IHZlcnNpb24gaWYgbmVlZGVkLgoKMjAwMS0xMS0yOSAgIlBldGVyLlNjaGF1ZXIiIDxQZXRlci5TY2hhdWVyQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+CgoJKiBlbGYuYyAoZWxmY29yZV9ncm9rX3Byc3RhdHVzKTogRG8gbm90IG92ZXJ3aXRlIHRoZSBjb3JlIHNpZ25hbAoJaWYgaXQgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgYW5vdGhlciB0aHJlYWQuCgoyMDAxLTExLTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKEFMUEhBX0VMRl9HT1RfRU5UUllfUkVMT0NTX1hMQVRFRCk6IERlZmluZWQuCgkoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IFRyYW5zbGF0ZSBsb2NhbF9nb3RfZW50cmllcwoJZm9yIFNUVF9TRUNUSU9OIHN5bWJvbCB0byBTSEZfTUVSR0Ugc2VjdGlvbiB0aGUgZmlyc3QgdGltZQoJd2Ugc2VlIGl0LgoJKiBlbGZ4eC1pYTY0LmMgKHN0cnVjdCBlbGZOTl9pYTY0X2xvY2FsX2hhc2hfZW50cnkpOiBBZGQKCXNlY19tZXJnZV9kb25lLgoJKGdldF9sb2NhbF9zeW1faGFzaCk6IE5ldywgZXh0cmFjdGVkIGZyb20gZ2V0X2R5bl9zeW1faW5mby4KCShnZXRfZHluX3N5bV9pbmZvKTogVXNlIGl0LgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IFRyYW5zbGF0ZSBsb2NhbCBkeW4gZW50cmllcwoJZm9yIFNUVF9TRUNUSU9OIHN5bWJvbCB0byBTSEZfTUVSR0Ugc2VjdGlvbiB0aGUgZmlyc3QgdGltZQoJd2Ugc2VlIGl0LgoKMjAwMS0xMS0yNyAgSC5KLiBMdSA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZGlzY2FyZF9pbmZvKTogU2tpcCBpZiB0aGUgaW5wdXQgYmZkIGlzbid0CglFTEYuCgoyMDAxLTExLTI2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBzdGFicy5jIChfYmZkX2Rpc2NhcmRfc2VjdGlvbl9zdGFicyk6IFVzZSBQQVJBTVMgaW4gZnVuY3Rpb24KCXByb3RvdHlwZXMuCgoyMDAxLTExLTI0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBEZWNyZWFzZSBkZWZhdWx0IHN0dWIKCWdyb3VwIHNpemVzIHRvIGFjY29tbW9kYXRlIGMrKy4KCjIwMDEtMTEtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGNsZWFyCglyZWxvY2F0aW9ucyBpbiBub24tYWxsb2NlZCBzZWN0aW9ucyBhZ2FpbnN0IGdsb2JhbCBzeW1ib2xzCglkZWZpbmVkIGluIHNoYXJlZCBsaWJyYXJ5IGJlaW5nIGJ1aWx0LgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTExLTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi5jIChfYmZkX2VsZl9yZWxhX2xvY2FsX3N5bSk6IE5ldy4KCSogZWxmbGluay5oIChlbGZfbGlua19pbnB1dF9iZmQpOiBEb24ndCBjb25zaWRlciBlbXB0eQoJbWVyZ2VkIHNlY3Rpb25zIGFzIHJlbW92ZWQgaW4gcmVsb2NhdGlvbiB0ZXN0cy4KCSogZWxmLWJmZC5oIChfYmZkX2VsZl9yZWxhX2xvY2FsX3N5bSk6IEFkZCBwcm90b3R5cGUuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSByZWxvY3MKCWFnYWluc3QgU1RUX1NFQ1RJT04gc3ltYm9sIG9mIFNIRl9NRVJHRSBzZWN0aW9uLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItYXZyLmMgKGVsZjMyX2F2cl9yZWxvY2F0ZV9zZWN0aW9uKTogQ2FsbAoJX2JmZF9lbGZfcmVsYV9sb2NhbF9zeW0uCgkqIGVsZjMyLWNyaXMuYyAoY3Jpc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1kMTB2LmMgKGVsZjMyX2QxMHZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgoJKiBlbGYzMi1oODMwMC5jIChlbGYzMl9oOF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWkzNzAuYyAoaTM3MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pODYwLmMgKGVsZjMyX2k4NjBfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW9wZW5yaXNjLmMgKG9wZW5yaXNjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItczM5MC5jIChlbGZfczM5MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtbW1peC5jIChtbWl4X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXBwYy5jIChwcGM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1zMzkwLmMgKGVsZl9zMzkwX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYtbTEwMjAwLmMgKG1uMTAyMDBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLW0xMDMwMC5jIChtbjEwMzAwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UgZm9yCgkhcGFydGlhbF9pbnBsYWNlIHJlbG9jcy4gSGFuZGxlIHJlbG9jcyBhZ2FpbnN0IFNUVF9TRUNUSU9OCglzeW1ib2wgb2YgU0hGX01FUkdFIGZvciBwYXJ0aWFsX2lucGxhY2UgcmVsb2NzLgoKMjAwMS0xMS0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBwby9NYWtlLWluIChkaXN0Y2xlYW4pOiBNb3ZlIFNSQy1QT1RGSUxFUy5pbiBhbmQKCUJMRC1QT1RGSUxFUy5pbiB0byBtYWludGFpbmVyLWNsZWFuIHRhcmdldC4KCjIwMDEtMTEtMjEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IFRlc3Qgcl9zeW1uZHggcmF0aGVyCgl0aGFuIHN5bV9zZWMtPm91dHB1dF9zZWN0aW9uIHRvIGRldGVjdCByZWxvY3MgYWdhaW5zdCBkaXNjYXJkZWQKCXNlY3Rpb25zLgoKMjAwMS0xMS0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19pbnB1dF9iZmQpOiBBc3NlcnQgcl9zeW1uZHggIT0gMCB3aGVuCglkaXNjYXJkaW5nIHJlbG9jYXRpb25zLgoKMjAwMS0xMS0xOSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBzZWN0aW9uLmMgKGJmZF9pc19jb25zdF9zZWN0aW9uKTogTmV3IG1hY3JvLiAgUmV0dXJuIHRydWUgaWYgdGhlCglnaXZlbiBzZWNpdG9uIGlzIG9uZSBvZiB0aGUgc3BlY2lhbCwgY29uc3RhbnQsIHNlY3Rpb25zLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmZnZW4uYyAoY29mZl9jb3VudF9saW5lbnVtYmVycyk6IFVzZSBiZmRfaXNfY29uc3Rfc2VjdGlvbi4KCShjb2ZmX3dyaXRlX25hdGl2ZV9zeW1ib2wpOiBVc2UgYmZkX2lzX2NvbnN0X3NlY3Rpb24uCgoyMDAxLTExLTE5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChjbG9iYmVyX21pbGxpY29kZV9zeW1ib2xzKTogRGVjIGR5bnN0ciByZWZjb3VudC4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogRG9uJ3QgY29uc2lkZXIgdW5kZWZpbmVkCgltaWxsaWNvZGUgc3ltcyBhcyBjYW5kaWRhdGVzIGZvciBpbXBvcnQgc3R1YnMuCgoJKiBlbGYzMi1ocHBhLmMgKFBMQUJFTF9QTFRfRU5UUllfU0laRSk6IERlbGV0ZS4KCShhbGxvY2F0ZV9QSUNfY2FsbHMpOiBSZW5hbWUgdG8gYWxsb2NhdGVfcGx0X3N0YXRpYy4KCShhbGxvY2F0ZV9keW5yZWxvY3MpOiBNb3ZlIG1vc3Qgb2YgY29kZSBoYW5kbGluZyAucGx0IGVudHJpZXMgdG8uLgoJKGFsbG9jYXRlX3BsdF9zdGF0aWMpOiAuLmhlcmUuICBEb24ndCBkcm9wIHBsYWJlbCBlbnRyaWVzLgoKMjAwMS0xMS0xOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogbW1vLmM6IEFkanVzdCBkb2N1bWVudGF0aW9uIHRhZ3MgdG8gdXNlIHRleGluZm8gNCBmZWF0dXJlcy4KCjIwMDEtMTEtMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogc2VjdGlvbi5jIChiZmRfaXNfY29uc3Rfc2VjdGlvbik6IE5ldyBtYWNyby4gIFJldHVybiB0cnVlIGlmIHRoZQoJc2VjdGlvbiBwb2ludGVyIHJlZmVycyB0byBvbmUgb2YgdGhlIHNwZWNpYWwsIGNvbnN0YW50IHNlY3Rpb25zLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBjb2ZmZ2VuLmMgKGNvZmZfY291bnRfbGluZW51bWJlcnMpOiBPbmx5IHVwZGF0ZSB0aGUgbGluZSBudW1iZXIKCWNvdW50IGluIG5vbi1zcGVjaWFsIHNlY3Rpb25zLgoJKGNvZmZfd3JpdGVfbmF0aXZlX3N5bWJvbCk6IE9ubHkgdXBkYXRlIHRoZSBsaW5lIG51bWJlciBmaWxlCglwb3NpdGlvbiBpbiBub24tc3BlY2lhbCBzZWN0aW9ucy4KCjIwMDEtMTEtMTUgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZWxmbGluay5oIChlbGZfcmVsb2Nfc3ltYm9sX2RlbGV0ZWRfcCk6IENhdGNoIGFsbCByZWxvY3MgYWdhaW5zdAoJbG9jYWwgc3ltcyBmcm9tIGRpc2NhcmRlZCBzZWN0aW9ucy4gIFVwZGF0ZSBjb21tZW50LgoKMjAwMS0xMS0xNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHBvL1NSQy1QT1RGSUxFUy5pbjogUmVnZW5lcmF0ZS4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaW5wdXRfYmZkKTogQ29tcGxhaW4gYWJvdXQgYWxsIHJlbG9jcwoJYWdhaW5zdCBsb2NhbCBzeW1zIGZyb20gZGlzY2FyZGVkIHNlY3Rpb25zLiAgSyZSIGZpeGVzLgoJKGVsZl9yZWxvY19zeW1ib2xfZGVsZXRlZF9wKTogRG9uJ3QgdHJ5IHRvIHN3YXAgaW4gZXh0ZXJuYWwgc3ltcy4KCUsmUiBmaXhlcy4KCjIwMDEtMTEtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IERpc3JlZ2FyZAoJb3ZlcmZsb3dzIGluIHRoZSAuc3RhYiBzZWN0aW9uLgoKMjAwMS0xMS0xNCAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBiZmQtaW4uaCAoYmZkX2VsZjMyX2Rpc2NhcmRfaW5mbyk6IEFkZCBwcm90b3R5cGUuCgkoYmZkX2VsZjY0X2Rpc2NhcmRfaW5mbyk6IExpa2V3aXNlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9yZWxvY19jb29raWUpOiBOZXcuCgkoc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEpOiBBZGQgZWxmX2JhY2tlbmRfZGlzY2FyZF9pbmZvLAoJZWxmX2JhY2tlbmRfaWdub3JlX2Rpc2NhcmRlZF9yZWxvY3MsIGFuZCBlbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uLgoJKF9iZmRfZWxmMzJfcmVsb2Nfc3ltYm9sX2RlbGV0ZWRfcCk6IEFkZCBwcm90b3R5cGUuCgkoX2JmZF9lbGY2NF9yZWxvY19zeW1ib2xfZGVsZXRlZF9wKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9lbGYzMl9taXBzX2Rpc2NhcmRfaW5mbyk6IE5ldy4KCShfYmZkX2VsZjMyX21pcHNfaWdub3JlX2Rpc2NhcmRlZF9yZWxvY3MpOiBOZXcuCgkoX2JmZF9lbGYzMl9taXBzX3dyaXRlX3NlY3Rpb24pOiBOZXcuCgkoZWxmX2JhY2tlbmRfZGlzY2FyZF9pbmZvKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3dyaXRlX3NlY3Rpb24pOiBEZWZpbmUuCgkqIGVsZmNvZGUuaCAoZWxmX2JmZF9kaXNjYXJkX2luZm8pOiBEZWZpbmUuCgkoZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3ApOiBEZWZpbmUuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaW5wdXRfYmZkKTogQ2hlY2sKCWVsZl9zZWN0aW9uX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzLiAgQ2FsbAoJYmVkLT5lbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uIGlmIGF2YWlsYWJsZS4KCShlbGZfcmVsb2Nfc3ltYm9sX2RlbGV0ZWRfcCk6IE5ldy4KCShlbGZfYmZkX2Rpc2NhcmRfaW5mbyk6IE5ldy4KCShlbGZfc2VjdGlvbl9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcyk6IE5ldy4KCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX2Rpc2NhcmRfaW5mbyk6IERlZmluZS4KCShlbGZfYmFja2VuZF9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcyk6IERlZmluZS4KCShlbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uKTogRGVmaW5lLgoJKGVsZk5OX2JlZCk6IEFkZCBlbGZfYmFja2VuZF9kaXNjYXJkX2luZm8sCgllbGZfYmFja2VuZF9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcywgYW5kCgllbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uLgoJKiBsaWJiZmQtaW4uaCAoX2JmZF9kaXNjYXJkX3NlY3Rpb25fc3RhYnMpOiBBZGQgcHJvdG90eXBlLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCSogc3RhYnMuYyAoX2JmZF9kaXNjYXJkX3NlY3Rpb25fc3RhYnMpOiBOZXcuCgoyMDAxLTExLTE0ICBNYXJ0aW4gU2Nod2lkZWZza3kgIDxzY2h3aWRlZnNreUBkZS5pYm0uY29tPgoKCSogZWxmMzItczM5MC5jIChlbGZfczM5MF9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlIHRoZSAidW5yZXNvbHZlZF9yZWxvYyIKCXNjaGVtZSB0byBnZXQgcmlkIG9mIGFuIHVnbHkgY29tcGxpY2F0ZWQgdGVzdC4KCSogZWxmNjQtczM5MC5jIChlbGZfczM5MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTExLTE0ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjcHUtaTM4Ni5jIChiZmRfeDg2XzY0X2FyY2hfaW50ZWxfc3ludGF4LGJmZF94ODZfNjRfYXJjaCk6IFVzZQoJeDg2LTY0IGZvciBkaXNwbGF5LgoKMjAwMS0xMS0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuYyAoc3RydWN0IGxpbmVfaGVhZCkgW3RvdGFsX2xlbmd0aF06IENoYW5nZSB0eXBlIHRvCgliZmRfdm1hLgoJKHN0cnVjdCBkd2FyZjJfZGVidWcpOiBBZGQgZHdhcmZfc3RyX2J1ZmZlciBhbmQgZHdhcmZfc3RyX3NpemUuCgkoc3RydWN0IGNvbXBfdW5pdCk6IEFkZCBzdGFzaCBhbmQgb2Zmc2V0X3NpemUuCgkocmVhZF84X2J5dGVzKTogUmV0dXJuIGJmZF92bWEuCgkocmVhZF9pbmRpcmVjdF9zdHJpbmcpOiBOZXcuCgkocmVhZF9hdHRyaWJ1dGUpOiBIYW5kbGUgRFdfRk9STV9zdHJwLgoJKGRlY29kZV9saW5lX2luZm8pOiBTdXBwb3J0IDY0LWJpdCBEV0FSRiBmb3JtYXQuCgkoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBMaWtld2lzZS4KCShwYXJzZV9jb21wX3VuaXQpOiBTZXQgb2Zmc2V0X3NpemUgYW5kIHN0YXNoLgoKMjAwMS0xMS0xMyAgS2VpdGggV2Fsa2VyIDxrZWl0aC53YWxrZXJAYXJtLmNvbT4KCgkqIGR3YXJmMi5jIChyZWFkX2F0dHJpYnV0ZV92YWx1ZSk6IE5ldyBmdW5jdGlvbiB0byBoYW5kbGUKCURXX0ZPUk1faW5kaXJlY3QuCgkocmVhZF9hdHRyaWJ1dGUpOiBVc2UgaXQuCgoyMDAxLTExLTEzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuYyAoZGVjb2RlX2xpbmVfaW5mbyk6IFByb3Blcmx5IGRlYWwgd2l0aCB1bmtub3duIHN0YW5kYXJkCglvcGNvZGVzLgoKMjAwMS0xMS0xMyAgSm9obiBNYXJzaGFsbCAgPGptYXJzaGFsbEBhY20ub3JnPgoJICAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBzZWN0aW9uLmMgKGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5KTogRG9uJ3QgaW5jcmVtZW50IHNlY3Rpb25faWQKCWFuZCB0aGUgQkZEJ3Mgc2VjdGlvbl9jb3VudCBpZiBhZGRpbmcgdGhlIHNlY3Rpb24gZmFpbGVkLgoJKiB2bXMuYyAodm1zX25ld19zZWN0aW9uX2hvb2spOiBBZGp1c3QgZm9yIGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5CgljaGFuZ2UuCgoyMDAxLTExLTEyICBPcmphbiBGcmliZXJnICA8b3JqYW5mQGF4aXMuY29tPgoKCSogZWxmMzItY3Jpcy5jIChjcmlzX2VsZl9ncm9rX3Byc3RhdHVzKTogQWRqdXN0IHZhbHVlcyB0byBtYXRjaCBuZXcKCWNvcmUgZHVtcCBmb3JtYXQuCgoyMDAxLTExLTExICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IENhbGwKCV9iZmRfZWxmX3N0cnRhYl9zaXplIGluc3RlYWQgb2YgX2JmZF9zdHJpbmd0YWJfc2l6ZS4KCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IENoYW5nZQoJZHluc3RyIHR5cGUgdG8gYHN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKicuCgoyMDAxLTExLTExICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBlbGYtc3RydGFiLmMgKF9iZmRfZWxmX3N0cnRhYl9maW5hbGl6ZSk6IE1ha2UgZmlyc3QgdmFyaWFibGUgaQoJc2l6ZV90LiAgUmVuYW1lIHNlY29uZCBpIHRvIGouCgoyMDAxLTExLTEwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBiaW5hcnkuYzogSW5jbHVkZSBzYWZlLWN0eXBlLmggYWZ0ZXIgYmZkLmggYW5kIHN5c2RlcC5oLgoKMjAwMS0xMS0xMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IERvbid0IGNvcHkgU1ROX1VOREVGCglyZWxvY3MgaW50byBzaGFyZWQgbGlicy4KCSogZWxmMzItY3Jpcy5jIChjcmlzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWkzNzAuYyAoaTM3MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1zMzkwLmMgKGVsZl9zMzkwX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCgkqIGVsZi5jIChiZmRfc2VjdGlvbl9mcm9tX3Jfc3ltbmR4KTogTmV3IGZ1bmN0aW9uLgoJKiBlbGYtYmZkLmggKExPQ0FMX1NZTV9DQUNIRV9TSVpFKTogRGVmaW5lLgoJKHN0cnVjdCBzeW1fc2VjX2NhY2hlKTogTmV3LgoJKGJmZF9zZWN0aW9uX2Zyb21fcl9zeW1uZHgpOiBEZWNsYXJlLgoJKHN0cnVjdCBiZmRfZWxmX3NlY3Rpb25fZGF0YSk6IENoYW5nZSBsb2NhbF9keW5yZWwgdHlwZSB0byBQVFIuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaW5wdXRfYmZkKTogRG9uJ3QgdGVzdCBmb3IgcmVtb3ZlZCBsaW5rb25jZQoJcmVsb2NzIHdoZW4gcmVsb2NhdGFibGUuICBEb24ndAl6ZXJvIGVudGlyZSByZWxvYywganVzdCB6ZXJvIHRoZQoJYWRkZW5kIGFuZCBzeW0uCgkqIGVsZjMyLWhwcGEuYyAoc3RydWN0IGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogQWRkIHN5bV9zZWMuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCBpdC4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IFRyYWNrIGR5bmFtaWMgcmVsb2NzIG5lZWRlZCBmb3IgbG9jYWwKCXN5bXMgb24gYSBwZXItc2VjdGlvbiBiYXNpcyBhcyB3ZSBkbyBmb3IgZ2xvYmFscy4KCShlbGYzMl9ocHBhX2djX3N3ZWVwX2hvb2spOiBVcGRhdGUgZm9yIGxvY2FsX2R5bnJlbCBjaGFuZ2UuCgkoYWxsb2NhdGVfZHlucmVsb2NzKTogV2FybmluZyBmaXguCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBhbGxvY2F0ZSByZWxvY3Mgd2hlbgoJc2VjdGlvbiBoYXMgYmVlbiBkaXNjYXJkZWQuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogRG9uJ3QgY29weSBTVE5fVU5ERUYgcmVsb2NzCglpbnRvIHNoYXJlZCBsaWJzLgoJKiBlbGYzMi1pMzg2LmMgKHN0cnVjdCBlbGZfaTM4Nl9saW5rX2hhc2hfdGFibGUpOiBBZGQgc3ltX3NlYy4KCShlbGZfaTM4Nl9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCBpdC4KCShlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBUcmFjayBkeW5hbWljIHJlbG9jcyBuZWVkZWQgZm9yIGxvY2FsCglzeW1zIG9uIGEgcGVyLXNlY3Rpb24gYmFzaXMgYXMgd2UgZG8gZm9yIGdsb2JhbHMuCgkoZWxmX2kzODZfZ2Nfc3dlZXBfaG9vayk6IFVwZGF0ZSBmb3IgbG9jYWxfZHlucmVsIGNoYW5nZS4KCVJlbW92ZSBkZWFkIGNvZGUuCgkoYWxsb2NhdGVfZHlucmVsb2NzKTogV2FybmluZyBmaXguCgkoZWxmX2kzODZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgYWxsb2NhdGUgcmVsb2NzIHdoZW4KCXNlY3Rpb24gaGFzIGJlZW4gZGlzY2FyZGVkLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBjb3B5IFNUTl9VTkRFRiByZWxvY3MKCWludG8gc2hhcmVkIGxpYnMuCgkqIGVsZjMyLXMzOTAuYyAoc3RydWN0IGVsZl9zMzkwX2xpbmtfaGFzaF90YWJsZSk6IEFkZCBzeW1fc2VjLgoJKGVsZl9zMzkwX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBJbml0IGl0LgoJKGVsZl9zMzkwX2NoZWNrX3JlbG9jcyk6IFRyYWNrIGR5bmFtaWMgcmVsb2NzIG5lZWRlZCBmb3IgbG9jYWwKCXN5bXMgb24gYSBwZXItc2VjdGlvbiBiYXNpcyBhcyB3ZSBkbyBmb3IgZ2xvYmFscy4KCShlbGZfczM5MF9nY19zd2VlcF9ob29rKTogVXBkYXRlIGZvciBsb2NhbF9keW5yZWwgY2hhbmdlLgoJUmVtb3ZlIGRlYWQgY29kZS4KCShhbGxvY2F0ZV9keW5yZWxvY3MpOiBXYXJuaW5nIGZpeC4KCShlbGZfczM5MF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBhbGxvY2F0ZSByZWxvY3Mgd2hlbgoJc2VjdGlvbiBoYXMgYmVlbiBkaXNjYXJkZWQuCgkoZWxmX3MzOTBfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGNvcHkgU1ROX1VOREVGIHJlbG9jcwoJaW50byBzaGFyZWQgbGlicy4KCSogZWxmNjQtcHBjLmMgKHN0cnVjdCBwcGNfbGlua19oYXNoX3RhYmxlKTogQWRkIHN5bV9zZWMuCgkocHBjNjRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IEluaXQgaXQuCgkocHBjNjRfZWxmX2NoZWNrX3JlbG9jcyk6IFRyYWNrIGR5bmFtaWMgcmVsb2NzIG5lZWRlZCBmb3IgbG9jYWwKCXN5bXMgb24gYSBwZXItc2VjdGlvbiBiYXNpcyBhcyB3ZSBkbyBmb3IgZ2xvYmFscy4KCShwcGM2NF9lbGZfZ2Nfc3dlZXBfaG9vayk6IFVwZGF0ZSBmb3IgbG9jYWxfZHlucmVsIGNoYW5nZS4KCShhbGxvY2F0ZV9keW5yZWxvY3MpOiBDYWxsIHRoZSBjb3JyZWN0IHJlY29yZF9keW5hbWljX2R5bWJvbAoJZnVuY3Rpb24uICBXYXJuaW5nIGZpeC4KCShwcGM2NF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgYWxsb2NhdGUgcmVsb2NzIHdoZW4KCXNlY3Rpb24gaGFzIGJlZW4gZGlzY2FyZGVkLgoJKHBwYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRG9uJ3QgY29weSBTVE5fVU5ERUYgcmVsb2NzCglpbnRvIHNoYXJlZCBsaWJzLgoJKiBlbGY2NC1zMzkwLmMgKHN0cnVjdCBlbGZfczM5MF9saW5rX2hhc2hfdGFibGUpOiBBZGQgc3ltX3NlYy4KCShlbGZfczM5MF9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCBpdC4KCShlbGZfczM5MF9jaGVja19yZWxvY3MpOiBUcmFjayBkeW5hbWljIHJlbG9jcyBuZWVkZWQgZm9yIGxvY2FsCglzeW1zIG9uIGEgcGVyLXNlY3Rpb24gYmFzaXMgYXMgd2UgZG8gZm9yIGdsb2JhbHMuCgkoZWxmX3MzOTBfZ2Nfc3dlZXBfaG9vayk6IFVwZGF0ZSBmb3IgbG9jYWxfZHlucmVsIGNoYW5nZS4KCVJlbW92ZSBkZWFkIGNvZGUuCgkoYWxsb2NhdGVfZHlucmVsb2NzKTogV2FybmluZyBmaXguCgkoZWxmX3MzOTBfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgYWxsb2NhdGUgcmVsb2NzIHdoZW4KCXNlY3Rpb24gaGFzIGJlZW4gZGlzY2FyZGVkLgoJKGVsZl9zMzkwX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBjb3B5IFNUTl9VTkRFRiByZWxvY3MKCWludG8gc2hhcmVkIGxpYnMuCgoyMDAxLTExLTA4ICBNYXJ0aW4gU2Nod2lkZWZza3kgIDxzY2h3aWRlZnNreUBkZS5pYm0uY29tPgoKCSogZWxmMzItczM5MDogTWFqb3IgcmV3b3JrIHRoYXQgaW50cm9kdWNlcyBhbGwgcmVjZW50IGNoYW5nZXMgdG8KCXRoZSBzMzkwIGJhY2tlbmRzLiAgR2V0IGEgY2xvc2VyIG1hdGNoIHRvIGVsZjMyLWkzODYuCgkoZWxmX3MzOTBfcmVsb2NhdGVfc2VjdGlvbik6IE1ha2UgdXNlIG9mIGR5bmFtaWMgc2VjdGlvbiBzaG9ydC1jdXRzLgoJTG9jYWxpc2UgdmFycywgYW5kIGRlbGF5IHNldHRpbmcuICBCZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLCByZXBsYWNlCglCRkRfQVNTRVJUIHdpdGggYWJvcnQuICBDaGVjayBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDIHRvIHNlZSBpZiBhCglzeW1ib2wgaXMgbm90IGRlZmluZWQgaW4gdGhlIHJlZ3VsYXIgb2JqZWN0IGZpbGUgYW5kIHRyZWFkIHRoZSB3ZWFrCglkZWZpbml0aW9uIGFzIHRoZSBub3JtYWwgb25lLiAgRG9uJ3QgZGlzY2FyZCByZWxvY3MgZm9yIHVuZGVmd2VhayBvcgoJdW5kZWZpbmVkIHN5bWJvbHMgYW5kIGNoZWNrICFERUZfUkVHVUxBUiBhcyB3ZWxsIGFzIERFRl9EWU5BTUlDIGluCgl0ZXN0IGZvciBhdm9pZGVkIGNvcHkgcmVsb2NzLiAgUmVpbnN0YXRlIGZ1ZGdlIGZvciB1bnJlc29sdmVkIHJlbG9jcwoJaW4gZGVidWdnaW5nIHNlY3Rpb25zLgoJKGVsZjMyX3MzOTBfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogSGFuZGxlIG5vY29weXJlbG9jLiAgRG9uJ3QgZG8gY29weQoJcmVsb2MgcHJvY2Vzc2luZyBmb3Igd2Vha2RlZnMuICBSZW1vdmUgcmVkdW5kYW50IGNhc3RzIGFuZCBhYm9ydHMuCglEZWxheSBzZXR0aW5nIG9mIHZhcnMgdW50aWwgbmVlZGVkLiAgTW92ZSBjcmVhdGlvbiBvZiBkeW5hbWljIHN5bWJvbHMKCWFuZCBhbGxvY2F0aW9uIG9mIC5wbHQgYW5kIC5yZWxhLnBsdCB0byBhbGxvY2F0ZV9keW5yZWxvY3MuICBSZXBsYWNlCglCRkRfQVNTRVJUIHdpdGggYWJvcnQuICBEaXNjYXJkIC5wbHQgZW50cmllcyBmb3IgZXZlcnl0aGluZyB3aXRoCglwbHQucmVmY291bnQgPD0gMC4KCShlbGZfczM5MF9jaGVja19yZWxvY3MpOiAgRG9uJ3QgYWxsb2NhdGUgc3BhY2UgZm9yIGR5bmFtaWMgcmVsb2NzLAoJLmdvdCBvciAucmVsZ290IGhlcmUgYnV0IGRvIGl0IGluIGFsbG9jYXRlX2R5bnJlbG9jcy4gIFJlZmVyZW5jZSBjb3VudAoJcG9zc2libGUgLnBsdCBhbmQgLmdvdCBlbnRyaWVzLiAgRG9uJ3QgdGVzdCBpbnB1dCBzZWN0aW9uIFNFQ19SRUFET05MWQoJaGVyZSB0byB0cnkgdG8gYXZvaWQgY29weSByZWxvY3MsIGFuZCBrZWVwIGR5bl9yZWxvY3MgcmVnYXJkbGVzcyBvZgoJRUxGX0xJTktfTk9OX0dPVF9SRUYuICBEb24ndCBzZXQgREZfVEVYVFJFTCBoZXJlLiAgRGVsYXkgc2V0dGluZyBvZgoJdmFyaWFibGVzIHVudGlsIG5lZWRlZC4gIFJlbW92ZSBzZXBhcmF0ZSBzd2l0Y2ggc3RtdCBmb3IgY3JlYXRpbmcgLmdvdAoJc2VjdGlvbi4gIEluaXRpYWxpc2UgbG9jYWxfZ290X3JlZmNvdW50cyB0byAwLiAgQ2FjaGUgcG9pbnRlciB0bwoJInNyZWxvYyIgc2VjdGlvbiBpbiBlbGZfc2VjdGlvbl9kYXRhLiBUd2VhayBjb25kaXRpb24gdW5kZXIgd2hpY2ggLmdvdAoJY3JlYXRlZC4gIFJlcG9ydCBmaWxlcyB3aXRoIGJhZCByZWxvY2F0aW9uIHNlY3Rpb24gbmFtZXMuCgkoZWxmX3MzOTBfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgY29weSByZWxvY3MgZm9yIHN5bWJvbHMgdGhhdAoJaGF2ZSBiZWVuIGZvcmNlZCBsb2NhbC4gIFVzZSBzYW1lIHRlc3QgdG8gZGVjaWRlIGlmIHdlIGNhbiB1c2UgYQoJcmVsYXRpdmUgcmVsb2MgZm9yIGdvdCBhcyBlbGZfczM5MF9yZWxvY2F0ZV9zZWN0aW9uLiAgRXhwYW5kIFNITl9VTkRFRgoJY29tbWVudC4gIE1vdmUgZXhwcmVzc2lvbnMgb3V0IG9mIGZ1bmN0aW9uIGNhbGxzLiAgUmVwbGFjZSBCRkRfQVNTRVJUCgl3aXRoIGFib3J0LgoJKGVsZl9zMzkwX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTWlncmF0ZSBjb21tb24gY29kZSBvdXQgb2Ygc3dpdGNoCglzdGF0ZW1lbnQuICBSZXBsYWNlIEJGRF9BU1NFUlQgd2l0aCBhYm9ydC4KCShlbGZfczM5MF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsIHJlYWRvbmx5X2R5bnJlbG9jcy4gUmVuYW1lICJpIgoJdG8gImliZmQiLiAgQWxsb2NhdGUgc3BhY2UgZm9yIGxvY2FsIGR5biByZWxvY3MuICBVc2UgREZfVEVYVFJFTCBmbGFnCglpbnN0ZWFkIG9mIGxvb2tpbmcgdXAgc2VjdGlvbiBuYW1lcyBmb3IgRFRfVEVYVFJFTC4gIFJlcGxhY2UKCUJGRF9BU1NFUlQgd2l0aCBhYm9ydC4gIFplcm8gb3V0IHRoZSBkeW5hbWljIGFsbG9jYXRlZCBjb250ZW50IHNwYWNlLgoJQWRkIGEgY29tbWVudCB0byByZW1pbmQgdXMgdGhhdCBvbmUgZGF5IHRoaXMgb3VnaHQgdG8gYmUgZml4ZWQuCgkoc3RydWN0IGVsZl9zMzkwX2xpbmtfaGFzaF9lbnRyeSk6IFJlbmFtZSAicm9vdCIgdG8gImVsZiIuCgkoc3RydWN0IGVsZl9zMzkwX2xpbmtfaGFzaF90YWJsZSk6IExpa2V3aXNlLgoJKGVsZl9zMzkwX2xpbmtfaGFzaF9uZXdmdW5jKTogUmVuYW1lIHRvIGxpbmtfaGFzaF9uZXdmdW5jIGFuZCBnZXQKCXJpZCBvZiB1bm5lY2Vzc2FyeSBjYXN0cy4KCShzdHJ1Y3QgZWxmX3MzOTBfZHluX3JlbG9jcyk6IEFkZCAic2VjIiwgYW5kICJwY19jb3VudCIgZmllbGRzLgoJUmVtb3ZlICJzZWN0aW9uIiBmaWVsZC4KCShlbGZfczM5MF9nY19zd2VlcF9ob29rKTogU3dlZXAgZHluX3JlbG9jcyBhbmQgbG9jYWxfZHlucmVsLgoJUmVmZXJlbmNlIGNvdW50IHBvc3NpYmxlIC5wbHQgZW50cmllcy4gIERvbid0IGRlYWxsb2NhdGUgLmdvdCBhbmQKCS5yZWxnb3Qgc3BhY2UgaGVyZS4KCShzdHJ1Y3QgZWxmX3MzOTBfcGNyZWxfcmVsb2NzX2NvcGllZCk6IFJlbmFtZSB0byBlbGZfczM5MF9keW5fcmVsb2NzLgoJVXBkYXRlIGNvbW1lbnQuCgkoc3RydWN0IGVsZl9zMzkwX2xpbmtfaGFzaF9lbnRyeSk6IFJlbmFtZSBwY3JlbF9yZWxvY3NfY29waWVkIHRvCglkeW5fcmVsb2NzLgoJKGVsZl9zMzkwX2Rpc2NhcmRfY29waWVzKTogIERlbGV0ZS4KCShlbGZfczM5MF9saW5rX2hhc2hfdHJhdmVyc2UpOiBEZWxldGUuCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rKTogRGVsZXRlLiAgKGllLiB1c2UgcmVndWxhciBmaW5hbCBsaW5rCglyYXRoZXIgdGhhbiBnYyB2YXJpZXR5KS4KCShzdHJ1Y3QgZWxmX3MzOTBfbGlua19oYXNoX3RhYmxlKTogQWRkIHNnb3QsIHNnb3RwbHQsIHNyZWxnb3QsIHNwbHQsCglzcmVscGx0LCBzZHluYnNzLCBzcmVsYnNzIGZpZWxkcy4KCShlbGZfczM5MF9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCB0aGVtLgoJKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wpOiBEZWZpbmUuCgkoYWxsb2NhdGVfZHlucmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKGNyZWF0ZV9nb3Rfc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9jYW5fcmVmY291bnQpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBEZWZpbmUuCgkoZWxmX3MzOTBfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX3MzOTBfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkocmVhZG9ubHlfZHlucmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKiBlbGY2NC1zMzkwLmM6IExpa2V3aXNlLgoKMjAwMS0xMS0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFMpOiBBZGQgZWxmLXN0cnRhYi5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmLXN0cnRhYi5jLgoJKGVsZi1zdHJ0YWIubG8pOiBBZGQgcnVsZS4KCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCgkqIGNvbmZpZ3VyZS5pbiAoZWxmKTogQWRkIGVsZi1zdHJ0YWIubG8uCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogZWxmLWJmZC5oIChlbGZfc3RydGFiX2hhc2gpOiBGb3J3YXJkIGRlY2xhcmUuCgkoc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUpOiBDaGFuZ2UgZHluc3RyIHR5cGUgdG8KCXN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKi4KCShzdHJ1Y3QgZWxmX29ial90ZGF0YSk6IENoYW5nZSBzdHJ0YWJfcHRyIHR5cGUgdG8KCXN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKi4KCShfYmZkX2VsZl9zdHJ0YWJfaW5pdCwgX2JmZF9lbGZfc3RydGFiX2ZyZWUsIF9iZmRfZWxmX3N0cnRhYl9hZGQsCglfYmZkX2VsZl9zdHJ0YWJfYWRkcmVmLCBfYmZkX2VsZl9zdHJ0YWJfZGVscmVmLAoJX2JmZF9lbGZfc3RydGFiX2NsZWFyX2FsbF9yZWZzLCBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSwKCV9iZmRfZWxmX3N0cnRhYl9vZmZzZXQsIF9iZmRfZWxmX3N0cnRhYl9lbWl0LAoJX2JmZF9lbGZfc3RydGFiX2ZpbmFsaXplKTogTmV3IHByb3RvdHlwZXMuCgkqIGVsZi1zdHJ0YWIuYzogTmV3IGZpbGUuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogVXNlIF9iZmRfZWxmX3N0cnRhYl9hZGQKCWFuZCBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSBpbnN0ZWFkIG9mIF9iZmRfc3RyaW5ndGFiIGNhbGxzLgoJQ2FsbCBfYmZkX2VsZl9zdHJ0YWJfZGVscmVmIGlmIERUX05FRURFRCBlbnRyeSBpcyBub3QgbmVlZGVkIG9yCgl3aGVuIGZvcmNpbmcgZHluYW1pYyBzeW1ib2wgdG8gbG9jYWwuCgkoZWxmX2xpbmtfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsCglfYmZkX2VsZl9zdHJ0YWJfaW5pdCBpbnN0ZWFkIG9mIGVsZl9zdHJpbmd0YWJfaW5pdC4KCShlbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZSwgY2hhbmdlCglkeW5zdHIgdHlwZS4gIFVzZSBfYmZkX2VsZl9zdHJ0YWIgZnVuY3Rpb25zIGluc3RlYWQgb2YKCV9iZmRfc3RyaW5ndGFiIGNhbGxzLgoJKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBfYmZkX2VsZl9zdHJ0YWIgZnVuY3Rpb25zIGluc3RlYWQgb2YKCV9iZmRfc3RyaW5ndGFiIGNhbGxzLiAgRm9yIERUX1JVTlBBVEggYW5kIFZlcmRhdXggdmRhX25hbWUgZmllbGRzLAoJY2FsbCBfYmZkX2VsZl9zdHJ0YWJfYWRkcmVmLiAgQ2FsbCBlbGZfZmluYWxpemVfZHluc3RyLgoJKGVsZl9hZGp1c3RfZHluc3RyX29mZnNldHMsIGVsZl9maW5hbGl6ZV9keW5zdHIpOiBOZXcgZnVuY3Rpb25zLgoJKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogQ2FsbCBfYmZkX2VsZl9zdHJ0YWJfZGVscmVmIHdoZW4gZm9yY2luZwoJZHluYW1pYyBzeW1ib2wgdG8gbG9jYWwuCgkoZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uKTogTGlrZXdpc2UuCgkoZWxmX2JmZF9maW5hbF9saW5rKTogQ2FsbCBfYmZkX2VsZl9zdHJ0YWJfZW1pdCBpbnN0ZWFkIG9mCglfYmZkX3N0cmluZ3RhYl9lbWl0LgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sKTogQ2hhbmdlIGR5bnN0cgoJdHlwZS4gIENhbGwgX2JmZF9lbGZfc3RydGFiIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mCglfYmZkX3N0cmluZ3RhYiBmdW5jdGlvbnMuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYuYyAoX2JmZF9lbGZfaW5pdF9yZWxvY19zaGRyKTogTGlrZXdpc2UuCgkoZWxmX2Zha2Vfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShhc3NpZ25fc2VjdGlvbl9udW1iZXJzKTogQ2FsbCBfYmZkX2VsZl9zdHJ0YWJfY2xlYXJfYWxsX3JlZnMKCW9uIHNoc3RydGFiIGhhc2ggdGFibGUsIGNhbGwgX2JmZF9lbGZfc3RydGFiX2FkZHJlZiBvbiBlYWNoIHNlY3Rpb24KCW5hbWUgaW4gdGhlIG91dHB1dC4gIENhbGwgX2JmZF9lbGZfc3RydGFiX2ZpbmFsaXplIGFuZAoJdXNlIF9iZmRfZWxmX3N0cnRhYl9vZmZzZXQgdG8gZmluYWxpemUgc2hfbmFtZSBzZWN0aW9uIGhlYWRlciBmaWVsZHMuCgkoX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogVXNlIF9iZmRfZWxmX3N0cnRhYl9zaXplCglpbnN0ZWFkIG9mIF9iZmRfc3RyaW5ndGFiX3NpemUuCgkocHJlcF9oZWFkZXJzKTogQ2hhbmdlIHNoc3RydGFiIHR5cGUuCglVc2UgX2JmZF9lbGZfc3RydGFiIGNhbGxzIGluc3RlYWQgb2YgX2JmZF9zdHJpbmd0YWIgY2FsbHMuCgoyMDAxLTExLTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmbGluay5oIChlbGZfbGlua19pbnB1dF9iZmQgPHJlbW92ZWQgbGlua29uY2UgcmVsb2NzPik6IEZpeAoJYmFkIHN5bXRhYiBzZWdmYXVsdC4gIEZvcm1hdHRpbmcgYW5kIHdhcm5pbmcgZml4ZXMuICBJbXByb3ZlCgllcnJvciBtZXNzYWdlIGZvciBpbnRlcm5hdGlvbmFsaXNhdGlvbi4KCjIwMDEtMTEtMDYgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaW5wdXRfYmZkKTogQ29tcGxhaW4gYWJvdXQgcmVsb2NzIGFnYWluc3QKCWRpc2NhcmRlZCBzZWN0aW9ucy4KCjIwMDEtMTEtMDMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmTk5fYmVkKTogQ29ycmVjdCB3YW50X2dvdF9zeW0sIHdhbnRfZHluYnNzIG9yZGVyLgoKMjAwMS0xMS0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IERvbid0IGNyZWF0ZQoJZHluYW1pYyByZWxvY2F0aW9uIGZvciBzeW1ib2xzIGRlZmluZWQgaW4gcmVndWxhciBvYmplY3RzIHdoZW4KCWNyZWF0aW5nIGV4ZWN1dGFibGVzLgoKMjAwMS0xMS0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKEFMTF9MSU5HVUFTKTogQWRkICJmciIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogcG8vZnIucG86IE5ldyBmaWxlLgoKCSogY29mZmdlbi5jIChjb2ZmX29iamVjdF9wKTogQWRkIGNvbW1lbnQgdG8gSC5KLidzIHJlY2VudCBwYXRjaC4KCjIwMDEtMTEtMDIgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBzb20uYyAoc2V0dXBfc2VjdGlvbnMpOiBJbml0aWFsaXplIHN1YnNwYWNlX3NlY3Rpb25zLgoKMjAwMS0xMS0wMiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogY29mZmdlbi5jIChjb2ZmX29iamVjdF9wKTogUmV0dXJuIDAgaWYgdGhlIGhlYWRlciBpcyB0b28gYmlnLgoKMjAwMS0xMS0wMiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBlbGZjb3JlLmggKGVsZl9jb3JlX2ZpbGVfcCk6IFByZXNlcnZlIGFuZCBjbGVhciBhYmZkIHNlY3Rpb24KCWluZm9ybWF0aW9uLiAgU2F2ZSBiZmQgYXJjaCBhbmQgbWFjaCB2YWx1ZXMuICBSZXN0b3JlIG9uIGVycm9yLgoKMjAwMS0xMS0wMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogUmVuYW1lIHRvIG1hcmtfUElDX2NhbGxzLgoJKGFsbG9jYXRlX1BJQ19jYWxscyk6IE5ldyBmdW5jdGlvbi4KCShhbGxvY2F0ZV9keW5yZWxvY3MpOiBEb24ndCBhbGxvY2F0ZSBwaWNfY2FsbCBwbHQgZW50cmllcyBoZXJlLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQ2FsbCBhbGxvY2F0ZV9QSUNfY2FsbHMuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBSZW1vdmUgZGVhZCBjb2RlLgoKMjAwMS0xMS0wMiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBlbGYzMi1jcmlzLmMgKGNyaXNfZWxmX2dyb2tfcHJzdGF0dXMpOiBOZXcgZnVuY3Rpb24uCgkoY3Jpc19lbGZfZ3Jva19wc2luZm8pOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ3Jva19wcnN0YXR1cyk6IERlZmluZS4KCShlbGZfYmFja2VuZF9ncm9rX3BzaW5mbyk6IERlZmluZS4KCjIwMDEtMTEtMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGY2NC1wcGMuYyAocHBjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDb3JyZWN0IGJyYW5jaAoJcHJlZGljdGlvbiBiaXRzLgoKMjAwMS0xMC0zMSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGRlbWV0cmlvdS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfaGkxNl9yZWxvYyk6IEhhbmRsZSBQQy1yZWxhdGl2ZQoJcmVsb2NhdGlvbnMgcHJvcGVybHkuCgoyMDAxLTEwLTMxICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IERvbid0IGNsZWFyIHRoZSB2aXNpYmlsaXR5CglmaWVsZCBmb3IgcmVsb2NhdGVhYmxlLgoKMjAwMS0xMS0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IERvbid0IGNvdW50CgkucGx0IHJlbG9jcyBpbiBEVF9SRUxBU1ouCgoyMDAxLTEwLTI5ICBOSUlCRSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+CgoJKiBjb25maWcuYmZkOiBTdXBwb3J0cyBzaDMvc2g0L3NoM2ViL3NoNGViLXVua25vd24tbGludXgtZ251Cgl0YXJnZXRzLgoKMjAwMS0xMC0zMSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiB0YXJnZXRzLmM6IEZpeCB0eXBvOiBiZmRfbW1vX21taXhfdmVjID0+IGJmZF9tbW9fdmVjLgoKMjAwMS0xMC0zMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogTWFrZWZpbGUuYW0gKEFMTF9NQUNISU5FUyk6IEFkZCBjcHUtbW1peC5sby4KCShCRkQ2NF9CQUNLRU5EUyk6IEFkZCBlbGY2NC1tbWl4LmxvIGFuZCBtbW8ubG8uCgkoQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGVsZjY0LW1taXguYyBhbmQgbW1vLmMuCglSZWdlbmVyYXRlIGRlcGVuZGVuY2llcy4KCSogY29uZmlndXJlLmluIChiZmRfZWxmNjRfbW1peF92ZWMsIGJmZF9tbW9fdmVjKTogTmV3IHZlY3RvcnMuCgkqIGNvbmZpZy5iZmQ6IFtCRkQ2NF0gKG1taXgtKi0qKTogTmV3IGNhc2UuCgkqIGNwdS1tbWl4LmMsIG1tby5jLCBlbGY2NC1tbWl4LmM6IE5ldyBmaWxlcy4KCSogYXJjaHVyZXMuYyAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF9hcmNoX21taXguCgkoYmZkX21taXhfYXJjaCk6IERlY2xhcmUuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX21taXhfYXJjaC4KCSogdGFyZ2V0cy5jIChlbnVtIGJmZF9mbGF2b3VyKTogQWRkIGJmZF90YXJnZXRfbW1vX2ZsYXZvdXIuCgkoYmZkX2VsZjY0X21taXhfdmVjLCBiZmRfbW1vX3ZlYyk6IERlY2xhcmUuCgkoYmZkX3RhcmdldF92ZWN0KSBbQkZENjRdOiBBZGQgYmZkX2VsZjY0X21taXhfdmVjIGFuZAoJYmZkX21tb19tbWl4X3ZlYy4KCSogcmVsb2MuYzogQWRkIE1NSVggcmVsb2NhdGlvbnMuCgkqIGJmZC5jIChzdHJ1Y3QgX2JmZCwgdGRhdGEpOiBBZGQgbW1vX2RhdGEuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDEtMTAtMzAgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IFNldCB0aGUgTE1BIGJhc2VkIG9uIHRoZQoJcF9wYWRkciBvZiB0aGUgc2VnbWVudCB0aGF0IGNvbnRhaW5zIGl0LgoJKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IElmIHRoZSBMTUEgZm9yIGEgc2VnbWVudCBpcyBrbm93biwgdXNlIGl0Cglmb3IgbWF0Y2hpbmcgc2VjdGlvbnMgdG8gc2VnbWVudHMuCgkoYXNzaWduX2ZpbGVfcG9zaXRpb25zX2Zvcl9zZWdtZW50cyk6IFVzZSB0aGUgTE1BIHdoZW4gYWRqdXN0aW5nCglmb3IgaW50ZXItc2VjdGlvbiBhbGlnbm1lbnQgcGFkZGluZy4KCjIwMDEtMTAtMjkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogUkVBRE1FOiBGaXggYSB0eXBvLgoKMjAwMS0xMC0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBlWFhpZ2VuLmMgKF9iZmRfWFhfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24pOiBDb3B5Cgl0aW1lc3RhbXAgdG8gdGltZV90IGZvciBjdGltZS4KCjIwMDEtMTAtMjQgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZWxmMzItY3Jpcy5jIChjcmlzX3JlbG9jX3R5cGVfbG9va3VwKTogQ2hhbmdlIGxvb3AgdG8gdXNlCgl1bnNpZ25lZCwgaW5jcmVhc2luZyBpbmRleC4KCjIwMDEtMTAtMjMgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX21vZGlmeV9zZWdtZW50X21hcCk6IENoZWNrCgltICE9IE5VTEwgYmVmb3JlIGFjY2Vzc2luZyBpdC4KCjIwMDEtMTAtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lucHV0X2JmZCk6IFplcm8gdGhlIHJlbG9jIGluc3RlYWQgb2YgZG9pbmcKCWJmZF9yZWxvY190eXBlX2xvb2t1cCAoYmZkLCBCRkRfUkVMT0NfTk9ORSkgYXMgYmZkX3JlbG9jX3R5cGVfbG9va3VwCglkb2Vzbid0IGFjY2VwdCBCRkRfUkVMT0NfKiBvbiBzb21lIHRhcmdldHMsIGVnLiBocHBhLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2xpbmtfaGFzaF9lbnRyeSk6IFJlbW92ZSBwbHRfYWJzLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGFsbG9jYXRlX2R5bnJlbG9jcyk6IEFsd2F5cyBhbGxvY2F0ZSAuZ290IHJlbG9jcyBpZiBzaGFyZWQuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogT3V0cHV0IHRoZW0gdG9vLiAgU2ltaWxhcmx5Cgljb25zb2xpZGF0ZSAucGx0IHJlbG9jIGNvZGUsIGFuZCBubyBsb25nZXIgaW5pdGlhbGlzZSAucGx0Cgl3aGVuIGEgcmVsb2MgaXMgb3V0cHV0LgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogT25seSBpbml0aWFsaXNlIC5wbHQgZW50cmllcwoJd2hlbiBubyByZWxvYyBpcyBvdXRwdXQuCgoJRnJvbSBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+CgkqIGVsZjMyLWhwcGEuYyAoZmluYWxfbGlua19yZWxvY2F0ZSk6IENhbGwgYmZkX3NldF9lcnJvciBmb3IKCXVucmVhY2hhYmxlIGJyYW5jaGVzLgoKMjAwMS0xMC0yMiAgSC5KLiBMdSA8aGpsQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFdJTjMyTElCQUREKTogVXNlIC1MLi4vbGliaWJlcnR5IGZvcgoJbWlwcyotKi1saW51eCouCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDEtMTAtMjEgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogY29uZmlndXJlLmluIChXSU4zMkxJQkFERCk6IEluY2x1ZGUgLUwuLi9saWJpYmVydHkvcGljIC1saWJlcnR5CglpZiBzaGFyZWQgbGlicmFyeSBpcyBlbmFibGVkIG9ubHkgZm9yIExpbnV4IGhvc3RzLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDAxLTEwLTIxICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoV0lOMzJMSUJBREQpOiBDaGVjayBpZiBQSUNGTEFHIGlzIGRlZmluZWQgaW4KCS4uL2xpYmliZXJ0eS9NYWtlZmlsZSBpbnN0ZWFkIG9mICRlbmFibGVfc2hhcmVkLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDAxLTEwLTIxICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWNyaXMuYyAoY3Jpc19yZWxvY190eXBlX2xvb2t1cCk6IFVzZSBpbnQgZm9yIGluZGV4LiAgQ292ZXIKCWluZGV4IDAuCgoyMDAxLTEwLTIwICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoV0lOMzJMSUJBREQpOiBJbmNsdWRlIC1MLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eQoJaWYgc2hhcmVkIGxpYnJhcnkgaXMgZW5hYmxlZC4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwMS0xMC0yMCAgSC5KLiBMdSA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1jcmlzLmMgKGNyaXNfcmVsb2NfdHlwZV9sb29rdXApOiBBbGxvdyBpbmRleCAwLgoKMjAwMS0xMC0xOSAgSC5KLiBMdSA8aGpsQGdudS5vcmc+CgoJKiBlbGZjb2RlLmggKGVsZl9vYmplY3RfcCk6IERvbid0IGNsZWFyIERfUEFHRUQgaWYgdGhlIHNlY3Rpb24KCXNpemUgaXMgZW1wdHkuCgoyMDAxLTEwLTE4ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzNzAuYyAoaTM3MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IElnbm9yZSBSX1hYWF9OT05FLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTEwLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHNlY3Rpb24uYyAoX2JmZF9zdHJpcF9zZWN0aW9uX2Zyb21fb3V0cHV0KTogRG9uJ3QgY291bnQKCVNFQ19FWENMVURFIHNlY3Rpb25zIGFzIHJlZmVyZW5jZXMuICBTZXQgU0VDX0VYQ0xVREUuCgoyMDAxLTEwLTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmLW0xMDIwMC5jIChtbjEwMjAwX2VsZl9yZWxheF9zZWN0aW9uKTogQ2FzdCBhc3NpZ25tZW50IHRvCglFbGZfSW50ZXJuYWxfU2hkci5jb250ZW50cyBub3cgdGhhdCBpdCdzIG5vIGxvbmdlciBhIFBUUi4KCSogZWxmLW0xMDMwMC5jIChtbjEwMzAwX2VsZl9yZWxheF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWg4MzAwLmMgKGVsZjMyX2g4X3JlbGF4X3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChiZmRfbTY4a19lbGYzMl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxheF9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbGF4X3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3JlbGF4X3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLmMgKHNldHVwX2dyb3VwKTogV2FybmluZyBmaXhlcy4KCSogZWxmbGluay5oIChlbGZfbGlua19zb3J0X3JlbG9jcyk6IExpa2V3aXNlLgoJKiBwZHAxMS5jIChzbHVycF9yZWxvY190YWJsZSk6IExpa2V3aXNlLgoKMjAwMS0xMC0xNiAgSmVmZiBIb2xjb21iICA8amVmZmhAcmVkaGF0LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfc29ydF9yZWxvY3MpOiBSZW1vdmUgdW5uZWNlc3NhcnkgcG9pbnRlcgoJY2FzdHMuCgoyMDAxLTEwLTE1ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaW5wdXRfYmZkKTogU2V0IHR5cGUgdG8gQkZEX1JFTE9DX05PTkUKCWZvciByZWxvY2F0aW9ucyBhZ2FpbnN0IGRpc2NhcmRlZCBsaW5rLW9uY2Ugc2VjdGlvbi4KCjIwMDEtMTAtMTUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBSZXBvcnQgc29tZSBkZXRhaWwgb24KCWJmZF9yZWxvY19vdXRvZnJhbmdlIGFuZCBzaW1pbGFyIGVycm9ycy4KCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IFRlc3QgaW5kLT5yb290LnR5cGUKCXJhdGhlciB0aGFuIGluZC0+d2Vha2RlZi4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjY0LXBwYy5jIChwcGM2NF9lbGZfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2hhc2hfY29weV9pbmRpcmVjdCk6IExpa2V3aXNlLgoKMjAwMS0xMC0xNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCSAgICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBNZXJnZSBkeW5fcmVsb2MKCWNvdW50cyBmb3IgYWxpYXNlcyBpbnN0ZWFkIG9mIGFib3J0aW5nLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjY0LXBwYy5jIChwcGM2NF9lbGZfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBMaWtld2lzZS4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBTZXQgcGx0Lm9mZnNldAoJdG8gLTEgZm9yIG5vbi1mdW5jdGlvbiBzeW1ib2xzLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmMzItczM5MC5jIChlbGZfczM5MF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmNjQtcHBjLmMgKHBwYzY0X2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmNjQtczM5MC5jIChlbGZfczM5MF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBSZWZlciB0bwoJcGx0Lm9mZnNldCBpbnN0ZWFkIG9mIHBsdC5yZWZjb3VudCB3aGVuIHNldHRpbmcgdG8gLTEuCgoyMDAxLTEwLTEyICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IFRyZWF0IFJfQVJNX1RITV9QQzIyCglsaWtlIFJfQVJNX1BDMjQuICBJbmNsdWRlIHJlbG9jIG51bWJlciBpbiBlcnJvciBtZXNzYWdlIGFib3V0Cgl1bnJlc29sdmFibGUgcmVsb2NzLgoKMjAwMS0xMC0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX3NvcnRfY21wMik6IERvbid0IG1peCBQTFQgYW5kIG5vbi1QTFQKCXJlbG9jYXRpb25zIGFnYWluc3QgdGhlIHNhbWUgc3ltYm9sIGluIC5yZWx7LGF9LmR5biBzZWN0aW9uLgoKMjAwMS0xMC0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhb3V0LWVuY2FwLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBhb3V0eC5oOiBMaWtld2lzZS4KCSogYXJjaGl2ZS5jOiBMaWtld2lzZS4KCSogYm91dC5jOiBMaWtld2lzZS4KCSogY29mZjY0LXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZmNvZGUuaDogTGlrZXdpc2UuCgkqIGNvZmZnZW4uYzogTGlrZXdpc2UuCgkqIGNvZmZsaW5rLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYzogTGlrZXdpc2UuCgkqIGVjb2ZmLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tMzJyLmM6IExpa2V3aXNlLgoJKiBsaWJjb2ZmLWluLmg6IExpa2V3aXNlLgoJKiBsaWJlY29mZi5oOiBMaWtld2lzZS4KCSogbGlieGNvZmYuaDogTGlrZXdpc2UuCgkqIG5sbTMyLWkzODYuYzogTGlrZXdpc2UuCgkqIHBkcDExLmM6IExpa2V3aXNlLgoJKiBzZWN0aW9uLmM6IExpa2V3aXNlLgoJKiBzb20uYzogTGlrZXdpc2UuCgkqIHNvbS5oOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBsaWJjb2ZmLmg6IExpa2V3aXNlLgoKMjAwMS0xMC0xMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZi5jIChlbGZfbWFwX3N5bWJvbHMpOiBEb24ndCBjcmVhdGUgbmV3IHNlY3Rpb24gc3ltYm9sczsgVXNlCglleGlzdGluZyBzZWN0aW9uIHN5bXMuICBVcGRhdGUgY29tbWVudHMuCgkoY29weV9wcml2YXRlX2JmZF9kYXRhKTogRm9ybWF0dGluZyBmaXhlcy4KCShlbGZjb3JlX2dyb2tfd2luMzJwc3RhdHVzKTogTGlrZXdpc2UuCgkoc3dhcF9vdXRfc3ltcyk6IExpa2V3aXNlLiAgUmVtb3ZlIHVubmVjZXNzYXJ5IGxldmVsIG9mIGJyYWNlcy4KCjIwMDEtMTAtMDkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBiZmRfZWxmX3NlY3Rpb25fZGF0YSk6IFJlbmFtZSAiZ3JvdXAiIHRvCgkiZ3JvdXBfbmFtZSIuCgkoZWxmX2dyb3VwX25hbWUpOiBEZWZpbmUuCgkoZWxmX25leHRfaW5fZ3JvdXApOiBEZWZpbmUuCgkqIGVsZi5jOiBNYWtlIHVzZSBvZiBlbGZfZ3JvdXBfbmFtZSBhbmQgZWxmX25leHRfaW5fZ3JvdXAgdGhyb3VnaG91dC4KCShzZXR1cF9ncm91cCk6IERvbid0IHVzZSBzZWMtPmxpbmVubyBmb3IgU0hUX0dST1VQIHNlY3Rpb24gdG8gc3RvcmUKCWZpcnN0IG1lbWJlciBzZWN0aW9uOyBJbnN0ZWFkIHVzZSBlbGZfbmV4dF9pbl9ncm91cC4KCShiZmRfc2VjdGlvbl9mcm9tX3NoZHIpOiBMaWtld2lzZS4KCShzZXRfZ3JvdXBfY29udGVudHMpOiBMaWtld2lzZS4gIFVzZSBlbGZfc2VjdGlvbl9zeW1zLCBub3Qgc2VjLT5zeW1ib2wuCgoyMDAxLTEwLTA5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEpOiBBZGQgImdyb3VwIiBhbmQKCSJuZXh0X2luX2dyb3VwIi4gIEZpeCBncCBhbmQgZ3Bfc2l6ZSBjb21tZW50cy4KCSogZWxmLmMgKHVuaW9uIGVsZl9pbnRlcm5hbF9ncm91cCk6IE5ldy4KCShzZXR1cF9ncm91cCk6IE5ldyBmdW5jdGlvbi4KCShfYmZkX2VsZl9tYWtlX3NlY3Rpb25fZnJvbV9zaGRyKTogU2V0IEJGRCBmbGFncyBmb3IgU0hUX0dST1VQLgoJQ2FsbCBzZXR1cF9ncm91cCBmb3IgU0hGX0dST1VQIHNlY3Rpb25zLgoJKGJmZF9zZWN0aW9uX2Zyb21fc2hkcik6IEJ1aWxkIGEgQkZEIHNlY3Rpb24gZm9yIFNIVF9HUk9VUC4KCShlbGZfZmFrZV9zZWN0aW9ucyk6IFNldCBoZWFkZXIgdHlwZSBmb3IgU0VDX0dST1VQLCBhbmQgaGVhZGVyCglmbGFncyBmb3Igc2VjdGlvbnMgaW4gYSBncm91cC4KCShzZXRfZ3JvdXBfY29udGVudHMpOiBOZXcgZnVuY3Rpb24uCgkoX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogQ2FsbCBpdC4KCShhc3NpZ25fc2VjdGlvbl9udW1iZXJzKTogU2V0IHNoX2xpbmsgZm9yIFNIVF9HUk9VUC4KCgkqIGVsZmxpbmsuaCAoZ2NfbWFya19ob29rKTogSGFuZGxlIHNlY3Rpb24gZ3JvdXBzLgoJKiBlbGZ4eC10YXJnZXQuaDogQWRkIFNFQ19HUk9VUCB0byBhcHBsaWNhYmxlX2ZsYWdzLgoJKiBzZWN0aW9uLmMgKFNFQ19HUk9VUCk6IERlZmluZS4KCShzdHJ1Y3Qgc2VjKTogQ29tbWVudCBmaXhlcy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmLmMgKGJmZF9lbGZfcHJpbnRfc3ltYm9sKTogRm9ybWF0dGluZyBmaXg7IG1pZ3JhdGUgZXhwcmVzc2lvbgoJb3V0IG9mIGZ1bmN0aW9uIGFyZ3MuCgkoX2JmZF9lbGZfY2Fub25pY2FsaXplX3JlbG9jKTogU2ltaWxhcmx5LgoJKF9iZmRfZWxmX2dldF9zeW10YWIpOiBIZXJlIHRvby4KCShfYmZkX2VsZl9jYW5vbmljYWxpemVfZHluYW1pY19zeW10YWIpOiBBbmQgaGVyZS4KCSogZWxmY29kZS5oIChlbGZfc2x1cnBfc3ltYm9sX3RhYmxlKTogRG9uJ3QgcmVjYWxjdWxhdGUgc2l6ZSBmb3IKCWJmZF9icmVhZCwgYW5kIHJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0LgoKMjAwMS0xMC0wOCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogYmZkL2NvbmZpZy5iZmQgKHRhcmdfY3B1KTogQWRkIGFybTllLSotZWxmLgoKMjAwMS0xMC0wNiAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZHdhcmYyLmMgKGNvbXBfdW5pdF9maW5kX25lYXJlc3RfbGluZSk6IENoZWNrIGZvciBlbmQgb2YKCWNvbXBpbGF0aW9uIHVuaXQuCgoyMDAxLTEwLTA2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYmZkLmMgKGJmZF9hc3NlcnQpOiBSZXBvcnQgYmZkIHZlcnNpb24uCgkoX2JmZF9hYm9ydCk6IExpa2V3aXNlLgoKCSogZWxmbGluay5oIChlbGZfbGlua19pbnB1dF9iZmQpOiBEb24ndCB6ZXJvIGRpc2NhcmRlZCBsaW5rLW9uY2UKCXNlY3Rpb24gc3ltIHZhbHVlcy4gIEluc3RlYWQgcmVwbGFjZSBhbnkgcmVsb2NzIGFnYWluc3QgdGhlbSB3aXRoCglyZWxvY3MgYWdhaW5zdCBTVE5fVU5ERUYsIHdoaWNoIGhhcyBhIHplcm8gdmFsdWUuCgoJKiBlbGYzMi1hcmMuYyAoZWxmX2FyY19ob3d0b190YWJsZSk6IFNldCBwYXJ0aWFsX2lucGxhY2UgZm9yIGFsbAoJcmVsb2NzLgoKMjAwMS0xMC0wNSAgSmVmZiBMYXcgPGxhd0ByZWRoYXQuY29tPgoKCSogc29tLmggKHNvbV9leGVjX2RhdGEpOiBOZXcgZmllbGQgInZlcnNpb25faWQiLgoJKiBzb20uYyAoc29tX29iamVjdF9zZXR1cCk6IFJlY29yZCB0aGUgdmVyc2lvbl9pZCBpZiBpdAoJZXhpc3RzLgoJKHNvbV9wcmVwX2hlYWRlcnMpOiBEbyBub3QgaW5pdGlhbGl6ZSB2ZXJzaW9uX2lkIGhlcmUuCgkoc29tX2ZpbmlzaF93cml0aW5nKTogSW5pdGlhbGl6ZSB2ZXJzaW9uX2lkIGhlcmUuCgoyMDAwLTEwLTA1ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19ob3d0b190YWJsZSk6IEZpeCBzb21lIHJlbG9jYXRpb24gaG93dG9zCglhY2NvcmRpbmcgdG8gdGhlIE1JUFMvU0dJIEVMRjY0IEFCSSBEcmFmdC4KCShtaXBzX2VsZl9zb3J0X2hhc2hfdGFibGUpOiBUeXBvLgoKMjAwMS0xMC0wNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IENvbW1lbnQgdHlwby4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IEJhaWwgb3V0IGFmdGVyCgljb3B5aW5nIGZsYWdzIGlmIHRoaXMgaXMgYSB3ZWFrZGVmLgoKMjAwMS0xMC0wNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkpOiBSZW9yZ2FuaXNlIGZvciBiZXR0ZXIKCXBhY2tpbmcuCgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX3JlY29yZF9nbG9iYWxfZ290X3N5bWJvbCk6IFNldCBnb3Qub2Zmc2V0Cgl0byAxIHJhdGhlciB0aGFuIDAgdG8gYXZvaWQgY29uZnVzaW5nIGNvcHlfaW5kaXJlY3Rfc3ltYm9sLgoJKG1pcHNfZWxmX3NvcnRfaGFzaF90YWJsZV9mKTogQ29tcGFyZSBnb3Qub2Zmc2V0IGFnYWluc3QgMS4KCgkqIE1ha2VmaWxlLmFtIChCRkRfSF9ERVBTKTogQWRkIHN5bWNhdC5oLiAgRW5zdXJlIGV2ZXJ5dGhpbmcKCWRlcGVuZHMgb24gJChCRkRfSCkgJChCRkRfSF9ERVBTKSAkKExPQ0FMX0hfREVQUyksIG5vdCBqdXN0IHRob3NlCgliYWNrZW5kcyB3ZSBjb25maWd1cmUuICBSdW4gIm1ha2UgZGVwLWFtIi4KCShpbnN0YWxsLWRhdGEtbG9jYWwpOiBJbnN0YWxsIHN5bWNhdC5oLgoJKiBkZXAtaW4uc2VkOiBSZW1vdmUgc3ltY2F0LmggZnJvbSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMS0xMC0wMyAgVmFzc2lsaSBLYXJwb3YgIDxtYWxjQHB1bHNlc29mdC5jb20+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEhhbmRsZSBub2NvcHlyZWxvYy4KCjIwMDEtMTAtMDMgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBlbGY2NC1taXBzLmMgKGVsZl9iYWNrZW5kX21heV91c2VfcmVsYV9wKTogTmV3IGRlZmluZS4KCShlbGZfYmFja2VuZF9kZWZhdWx0X3VzZV9yZWxhX3ApOiBOZXcgZGVmaW5lLgoKMjAwMS0xMC0wMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9oYXNoX2NvcHlfaW5kaXJlY3QpOiBGaXggdHlwb3MgaW4gbGFzdAoJY2hhbmdlLgoKCSogY29uZmlndXJlLmluIChBQ19PVVRQVVQgPGJmZC1pbjMuaD4pOiBSZW1vdmUgdmVyc2lvbi5oLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmFtIChCRkRfSF9GSUxFUyk6IEFkZCB2ZXJzaW9uLmguCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBwby9TUkMtUE9URklMRVMuaW46IFJlZ2VuZXJhdGUuCgoJKiBlbGZsaW5rLmggKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogQ29weSBmbGFncyB0byB3ZWFrZGVmIHVzaW5nCgllbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCBzbyB0aGF0IGJhY2tlbmQgaGFzIGEgY2hhbmNlIHRvCgljb3B5IG90aGVyIG5lY2Vzc2FyeSBmaWVsZHMuCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEpOiBVcGRhdGUgZGVzY3JpcHRpb24gb2YKCWVsZl9iYWNrZW5kX2NvcHlfaW5kaXJlY3Rfc3ltYm9sLgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBCYWlsIG91dCBhZnRlcgoJY29weWluZyBmbGFncyBpZiB0aGlzIGlzIGEgd2Vha2RlZi4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2hhc2hfY29weV9pbmRpcmVjdCk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfYWl4X2FkZF9zeW1ib2xfaG9vayk6IFVzZSBlbGZfbGlua19oYXNoX2xvb2t1cCByYXRoZXIKCXRoYW4gYmZkX2xpbmtfaGFzaF9sb29rdXAuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgZG8gY29weQoJcmVsb2MgcHJvY2Vzc2luZyBmb3Igd2Vha2RlZnMuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmNjQtcHBjLmMgKHBwYzY0X2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCjIwMDEtMTAtMDIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGY2NC1wcGMuYyAocHBjNjRfZWxmX2NoZWNrX3JlbG9jcyk6IFVzZSBhIGxvY2FsIHZhciBhbmQgY2FzdAoJcmVzdWx0IG9mIEVMRjY0X1JfVFlQRSB0byBlbnVtIGJlZm9yZSB1c2luZyBpbiBhIHN3aXRjaC4KCShwcGM2NF9lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkocHBjNjRfZWxmX2djX3N3ZWVwX2hvb2spOiBMaWtld2lzZS4KCShwcGM2NF9lbGZfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoKMjAwMS0xMC0wMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHZlcnNpb24uaDogTmV3IGZpbGUuCgkqIGJmZC1pbi5oOiAoQkZEX1ZFUlNJT04pOiBTdWJzdGl0dXRlIGJmZF92ZXJzaW9uLgoJKEJGRF9WRVJTSU9OX0RBVEUpOiBEZWZpbmUuCgkoQkZEX1ZFUlNJT05fU1RSSU5HKTogRGVmaW5lLgoJKiBjb25maWd1cmUuaW46IEFDX1NVQlNUIGJmZF92ZXJzaW9uLCBiZmRfdmVyc2lvbl9kYXRlIGFuZAoJYmZkX3ZlcnNpb25fc3RyaW5nLgoJKEFDX09VVFBVVCA8YmZkLWluMy5oPik6IERlcGVuZCBvbiB2ZXJzaW9uLmguCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5hbTogUnVuICJtYWtlIGRlcC1hbSIuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogYmZkLWluLmg6IEluY2x1ZGUgInN5bWNhdC5oIi4KCShDT05DQVQ0KTogUmVkZWZpbmUgYXMgZm9yIG9sZCBDQVQ0LgoJKiBhb3V0LWFybS5jOiBVc2UgZXF1aXZhbGVudCBDT05DQVQqIG1hY3JvIGluIHBsYWNlIG9mIENBVCogbWFjcm9zLgoJQWRkIHdhcm5pbmcgcmVnYXJkaW5nIHdoaXRlc3BhY2UuCgkqIGFvdXQtY3Jpcy5jOiBMaWtld2lzZS4KCSogYW91dC1uczMyay5jOiBMaWtld2lzZS4KCSogYW91dC1zcGFyY2xlLmM6IExpa2V3aXNlLgoJKiBhb3V0LXRpYzMwLmM6IExpa2V3aXNlLgoJKiBhb3V0MC5jOiBMaWtld2lzZS4KCSogYXJtbmV0YnNkLmM6IExpa2V3aXNlLgoJKiBkZW1vNjQuYzogTGlrZXdpc2UuCgkqIGVsZi1iZmQuaDogTGlrZXdpc2UuCgkqIGdlbi1hb3V0LmM6IExpa2V3aXNlLgoJKiBob3N0LWFvdXQuYzogTGlrZXdpc2UuCgkqIGhwMzAwYnNkLmM6IExpa2V3aXNlLgoJKiBocDMwMGhwdXguYzogTGlrZXdpc2UuCgkqIGkzODZhb3V0LmM6IExpa2V3aXNlLgoJKiBpMzg2YnNkLmM6IExpa2V3aXNlLgoJKiBpMzg2ZHluaXguYzogTGlrZXdpc2UuCgkqIGkzODZmcmVlYnNkLmM6IExpa2V3aXNlLgoJKiBpMzg2bGludXguYzogTGlrZXdpc2UuCgkqIGkzODZseW54LmM6IExpa2V3aXNlLgoJKiBpMzg2bWFjaDMuYzogTGlrZXdpc2UuCgkqIGkzODZuZXRic2QuYzogTGlrZXdpc2UuCgkqIGxpYmFvdXQuaDogTGlrZXdpc2UuCgkqIG02OGs0a25ldGJzZC5jOiBMaWtld2lzZS4KCSogbTY4a2xpbnV4LmM6IExpa2V3aXNlLgoJKiBtNjhrbHlueC5jOiBMaWtld2lzZS4KCSogbTY4a25ldGJzZC5jOiBMaWtld2lzZS4KCSogbTg4a21hY2gzLmM6IExpa2V3aXNlLgoJKiBtaXBzYnNkLmM6IExpa2V3aXNlLgoJKiBuZXdzb3MzLmM6IExpa2V3aXNlLgoJKiBuczMya25ldGJzZC5jOiBMaWtld2lzZS4KCSogcGM1MzItbWFjaC5jOiBMaWtld2lzZS4KCSogcGRwMTEuYzogTGlrZXdpc2UuCgkqIHJpc2NpeC5jOiBMaWtld2lzZS4KCSogc3BhcmNsaW51eC5jOiBMaWtld2lzZS4KCSogc3BhcmNseW54LmM6IExpa2V3aXNlLgoJKiBzcGFyY25ldGJzZC5jOiBMaWtld2lzZS4KCSogc3Vub3MuYzogTGlrZXdpc2UuCgkqIHRhcmdldHMuYzogTGlrZXdpc2UuCgkqIHZheG5ldGJzZC5jOiBMaWtld2lzZS4KCSogdm1zLWhkci5jOiBMaWtld2lzZS4KCjIwMDEtMTAtMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBiZmQtaW4uaDogUmVtb3ZlIGNvbW1lbnRzIHJlZ2FyZGluZyBnZW5lcmF0ZWQgZmlsZXMuCgkqIGxpYmJmZC1pbi5oOiBMaWtld2lzZS4KCSogbGliY29mZi1pbi5oOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBsaWJiZmQuaDogTGlrZXdpc2UuCgkqIGxpYmNvZmYuaDogTGlrZXdpc2UuCgoyMDAxLTA5LTMwICBrYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4KCSAgICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfaG93dG9fdGFibGUsIFJfU0hfUkVMMzIpOiBNYWtlCglwYXJ0aWFsX2lucGxhY2UsIG1hdGNoaW5nIGFzc2VtYmxlciBvdXRwdXQuICBTZXQgc3JjX21hc2sgdG8KCWFsbCBvbmVzLgoJKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRGVsZXRlIG1pc3BsYWNlZCBjb21tZW50LgoJRm9yIHJlbG9jYXRhYmxlIGxpbmtpbmcgYWdhaW5zdCBzZWN0aW9uIHN5bWJvbCwgY2FsbAoJX2JmZF9yZWxvY2F0ZV9jb250ZW50cyBmb3IgcGFydGlhbF9pbnBsYWNlIHJlbG9jcyBhbmQgYWRqdXN0CglyZWwtPnJfYWRkZW5kIGZvciBvdGhlcnMuCgk8Y2FzZSBSX1NIX0RJUjMyLCBSX1NIX1JFTDMyPjogRmV0Y2ggcGFydGlhbF9pbnBsYWNlIGFkZGVuZCB3aXRoCgliZmRfZ2V0XzMyLCBub3QgYXQgcmVsLT5yX2FkZGVuZC4KCjIwMDEtMDktMzAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBTZXQgaW5kIHJlZmNvdW50cyB0bwoJdGhlIG9sZCBkaXIgcmVmY291bnQsIHNvIHdlIGluZGlyZWN0bHkgc2V0IHRoZW0gdG8gaW5pdF9yZWZjb3VudC4KCVNob3J0LWNpcmN1aXQgYXNzZXJ0cyB3aGVuIHdlJ3ZlIGp1c3QgdmVyaWZpZWQgdGhleSBhcmUgdHJ1ZS4KCjIwMDEtMDktMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBzZWN0aW9uLmMgKHN0cnVjdCBzZWMpOiBSZW1vdmUga2VwdF9zZWN0aW9uLgoJKFNURF9TRUNUSU9OKTogUmVtb3ZlIGtlcHRfc2VjdGlvbiBpbml0aWFsaXNhdGlvbi4KCShiZmRfbWFrZV9zZWN0aW9uX2FueXdheSk6IEhlcmUgdG9vLgoJKiBlY29mZi5jIChiZmRfZGVidWdfc2VjdGlvbik6IFJlbW92ZSBrZXB0X3NlY3Rpb24gaW5pdGlhbGlzYXRpb24uCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9saW5rX2lucHV0X2JmZCk6IERvbid0IHRlc3Qga2VwdF9zZWN0aW9uLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lucHV0X2JmZCk6IFNldCBkaXNjYXJkZWQgbGluay1vbmNlIHNlY3Rpb24KCXN5bWJvbHMgdG8gemVybywgYW5kIHJlbW92ZSBhbGwgY29kZSBpbnZvbHZlZCB3aXRoIGtlcHRfc2VjdGlvbgoJYW5kIHRyYWNraW5nIHNlY3Rpb24gc3ltYm9sIHZhbHVlcy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmUuaW46IEJ1bXAgdmVyc2lvbiBudW1iZXIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDktMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGY2NC1wcGMuYyAoc3RydWN0IHBwY19keW5fcmVsb2NzKTogTmV3LgoJKElTX0FCU09MVVRFX1JFTE9DKTogRGVmaW5lLgoJKHN0cnVjdCBwcGNfbGlua19oYXNoX2VudHJ5KTogTmV3LgoJKHN0cnVjdCBwcGNfbGlua19oYXNoX3RhYmxlKTogTmV3LgoJKHBwY19oYXNoX3RhYmxlKTogRGVmaW5lLgoJKGxpbmtfaGFzaF9uZXdmdW5jKTogTmV3IGZ1bmN0aW9uLgoJKHBwYzY0X2VsZl9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGNyZWF0ZV9nb3Rfc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShwcGM2NF9lbGZfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsIGNyZWF0ZV9nb3Rfc2VjdGlvbi4gIFN0YXNoCglwb2ludGVycyB0byBvdXIgZHluYW1pYyBzZWN0aW9ucyBpbiBoYXNoIHRhYmxlLgoJKHBwYzY0X2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCShwcGM2NF9lbGZfY2hlY2tfcmVsb2NzKTogUmVtb3ZlIERFQlVHIGNvZGUuICBVc2Ugc2hvcnQtY3V0cyB0bwoJZHluYW1pYyBzZWN0aW9ucy4gIExvY2FsaXNlIHZhcnMuICBNb2RpZnkgY29kZSBmb3IgcmVmY291bnRzCglzdGFydGluZyBmcm9tIHplcm8uICBEb24ndCBhbGxvY2F0ZSBoZXJlLCBvciBmb3JjZSBzeW1ib2xzIGR5bmFtaWMuCglEb24ndCBjb3B5IGFsbCByZWxvY3MgaWYgc2hhcmVkLCBzZWxlY3Qgb25lcyB3ZSBuZWVkLiAgQWRkIGNvZGUKCXRvIHRyYWNrIHBvc3NpYmxlIGNvcHkgcmVsb2NzIGZvciBub24tc2hhcmVkIGxpbmsuCgkocHBjNjRfZWxmX2djX21hcmtfaG9vayk6IFVwZGF0ZSBjb21tZW50LgoJKHBwYzY0X2VsZl9nY19zd2VlcF9ob29rKTogU3dlZXAgZHlucmVsb2NzIHRvby4KCShwcGM2NF9lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogUmVtb3ZlIERFQlVHIGNvZGUuICBSZXdyaXRlIC5wbHQKCWNvZGUgZm9yIHJlZmVyZW5jZSBjb3VudGluZyBnYXJiYWdlIGNvbGxlY3Rpb24uICBEb24ndCBjcmVhdGUgLnBsdAoJZW50cmllcyBmb3IgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgY29tcGx5IHdpdGggQUJJIG5hbWluZyBjb252ZW50aW9uLAoJYW5kIGRvbid0IGFsbG9jYXRlIC5wbHQgc3BhY2UgaGVyZS4gIFVzZSBzaG9ydC1jdXRzIHRvIGR5bmFtaWMKCXNlY3Rpb25zLiAgSWYgcG9zc2libGUsIGtlZXAgZHluYW1pYyByZWxvY2F0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nCgljb3B5IHJlbG9jcy4gIFJlbW92ZSBjb25mdXNlZCBjb21tZW50cy4KCShwcGNfYWRqdXN0X2R5bmluZHgpOiBEZWxldGUuCgkoV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCk6IERlZmluZS4KCShhbGxvY2F0ZV9keW5yZWxvY3MpOiBOZXcgZnVuY3Rpb24uCgkocmVhZG9ubHlfZHlucmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKHBwYzY0X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBSZXdyaXRlLiAgQWxsb2NhdGUgbG9jYWwgLmdvdAoJc3BhY2UgaGVyZSwgYW5kIGNhbGwgYWxsb2NhdGVfZHlucmVsb2NzIHRvIGFsbG9jYXRlIHNwYWNlIGZvcgoJZ2xvYmFsIC5wbHQsIC5nb3QgYW5kIHJlbG9jIHNlY3Rpb25zLiAgVXNlIHNob3J0LWN1dHMgdG8gZHluYW1pYwoJc2VjdGlvbnMuICBDYWxsIHJlYWRvbmx5X2R5bnJlbG9jcyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkCglEVF9URVhUUkVMLiAgRG9uJ3QgZ2VuZXJhdGUgc2VjdGlvbiBzeW1ib2xzIGhlcmUsIHRoZSBnZW5lcmljCglFTEYgbGlua2VyIGNvZGUgZG9lcyBpdCBmb3IgdXMuCgkocHBjNjRfZWxmX2ZpbmFsX2xpbmspOiBDYWxsIHJlZ3VsYXIgRUxGIGJhY2tlbmQgbGlua2VyIHJhdGhlciB0aGFuCglnYyB2YXJpZXR5LCBzaW5jZSB3ZSBkbyBvdXIgb3duIC5nb3QgaGFuZGxpbmcuCgkocHBjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSZW1vdmUgREVCVUcgY29kZS4gIE1ha2UgdXNlIG9mCglkeW5hbWljIHNlY3Rpb24gc2hvcnQtY3V0cy4gIExvY2FsaXNlIHZhcnMsIGFuZCBkZWxheSBzZXR0aW5nLgoJSGFuZGxlIHVua25vd24gcmVsb2NzIGluIG1haW4gc3dpdGNoIHN0YXRlbWVudC4gIFJlcGxhY2UgdWdseQoJY29tcGxpY2F0ZWQgdGVzdHMgZm9yIHVucmVzb2x2YWJsZSByZWxvY3Mgd2l0aCBhIHNpbXBsZSBkaXJlY3QKCXNjaGVtZSB1c2luZyAidW5yZXNvbHZlZF9yZWxvYyIgdmFyLiAgVGVzdCBFTEZfU1RfVklTSUJJTElUWQoJYmVmb3JlIGFsbG93aW5nIGFuIHVuZGVmaW5lZCBzeW0gaW4gYSBzaGFyZWQgbGliLiAgRG8gUl8qX0RTIHRlc3RzCglhZnRlciBtYWluIHN3aXRjaCwgd2hlbiB3ZSd2ZSBzZXQgYWRkZW5kLiAgRG8gbm9uLWFkZGVuZCBpbnNuCgl0d2Vha3MgYmVmb3JlIG1haW4gc3dpdGhjLiAgSWdub3JlIGlucHV0X3NlY3Rpb24tPnZtYSB3aGVuCgljYWxjdWxhdGluZyByZWxvYyBvZmZzZXRzIGFzIGl0J3MgYWx3YXlzIHplcm8uICBSZXdyaXRlIGR5bmFtaWMKCXJlbG9jIGhhbmRsaW5nLiAgQ29uc29saWRhdGUgUl8qX0hBIGhhbmRsaW5nLiAgSGFuZGxlIG1vcmUgcmVsb2NzLgoJKHBwYzY0X2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBSZW1vdmUgREVCVUcgY29kZS4gIE1ha2UgdXNlCglvZiBkeW5hbWljIHNlY3Rpb24gc2hvcnQtY3V0cy4gIFJlb3JnYW5pc2UgLnBsdCBoYW5kbGluZyBjb2RlLgoJUmVtb3ZlIGNvbmZ1c2VkIGNvbW1lbnRzLiAgVGFrZSBub3RlIG9mIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTC4KCU1vdmUgZXhwcmVzc2lvbnMgb3V0IG9mIHN3YXBfcmVsb2NhX291dCBmdW5jdGlvbiBjYWxscy4KCShwcGM2NF9lbGZfcmVsb2NfdHlwZV9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShwcGM2NF9lbGZfaW5mb190b19ob3d0byk6IE1vdmUgY29tbW9uIGV4cHJlc3Npb24gdG8gbG9jYWwgdmFyLgoJKHBwYzY0X2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFJlbW92ZSBERUJVRyBjb2RlLiAgTWFrZSB1c2UKCW9mIGR5bmFtaWMgc2VjdGlvbiBzaG9ydC1jdXRzLiAgRG9uJ3QgZmlkZGxlIHdpdGggc2VjdGlvbiBzeW1zCgloZXJlIGFzIHRoZSBFTEYgbGlua2VyIGRvZXMgaXQgZm9yIHVzLgoJKGVsZl9iYWNrZW5kX2Nhbl9yZWZjb3VudCk6IERlZmluZS4KCShiZmRfZWxmNjRfYmZkX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcyk6IERlZmluZS4KCShlbGZfYmFja2VuZF8qLCBiZmRfZWxmNjRfYmZkXyogZGVmaW5lcyk6IFNvcnQuCgoyMDAxLTA5LTI5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2xpbmtfbG9jYWxfZHluYW1pY19lbnRyeSk6IEFkZCBpbml0X3JlZmNvdW50LgoJKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGNhbl9yZWZjb3VudC4KCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF9uZXdmdW5jKTogR2V0IHJpZCBvZiBhIGZldyBjYXN0cy4gIFNldAoJZ290LnJlZmNvdW50IGFuZCBwbHQucmVmY291bnQgZnJvbSBpbml0X3JlZmNvdW50LgoJKF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9pbml0KTogU2V0IHVwIGluaXRfcmVmY291bnQuCgkoX2JmZF9lbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBSZWZlcmVuY2UgZ290L3BsdC5yZWZjb3VudAoJcmF0aGVyIHRoYW4gZ290L3BsdC5vZmZzZXQsIGFuZCB0ZXN0IGZvciA8PSAwIHJhdGhlciB0aGFuIC0xLgoJKiBlbGZsaW5rLmggKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IFNldCBpbml0X3JlZmNvdW50IHRvIC0xLgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoJKGVsZk5OX2JlZCk6IEluaXQgY2FuX3JlZmNvdW50LgoJKiBsaW5rZXIuYyAoX2JmZF9saW5rX2hhc2hfbmV3ZnVuYyk6IEdldCByaWQgb2YgYSBmZXcgY2FzdHMuCgkoX2JmZF9nZW5lcmljX2xpbmtfaGFzaF9uZXdmdW5jKTogTGlrZXdpc2UuCgkqIGVsZjMyLWNyaXMuYyAoY3Jpc19lbGZfY2hlY2tfcmVsb2NzKTogTW9kaWZ5IGZvciByZWZjb3VudHMKCXN0YXJ0aW5nIGZyb20gemVyby4KCShlbGZfYmFja2VuZF9jYW5fcmVmY291bnQpOiBEZWZpbmUuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBNb2RpZnkgZm9yIHJlZmNvdW50cwoJc3RhcnRpbmcgZnJvbSB6ZXJvLgoJKGVsZjMyX2hwcGFfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBNYWtlIHN0YXRpYyB0byBhZ3JlZSB3aXRoCglwcm90b3R5cGUuCgkoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IE1vZGlmeSBmb3IgcmVmY291bnRzCglzdGFydGluZyBmcm9tIHplcm8uCgkoYWxsb2NhdGVfZHlucmVsb2NzKTogU2V0IHBsdC9nb3Qub2Zmc2V0IHJhdGhlciB0aGFuICoucmVmY291bnQuCgkoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRXhwYW5kIFNITl9VTkRFRiBjb21tZW50LgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogVXNlIGxvY2FsIHZhciBzbyBsaW5lIDwgODAgY2hhcnMuCgkoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoJKGVsZl9pMzg2X2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTWFrZSBzdGF0aWMgdG8gYWdyZWUgd2l0aAoJcHJvdG90eXBlLiAgRm9ybWF0dGluZyBmaXguCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfY2hlY2tfcmVsb2NzKTogTW9kaWZ5IGZvciByZWZjb3VudHMKCXN0YXJ0aW5nIGZyb20gemVyby4KCShlbGZfYmFja2VuZF9jYW5fcmVmY291bnQpOiBEZWZpbmUuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX2NoZWNrX3JlbG9jcyk6IE1vZGlmeSBmb3IgcmVmY291bnRzCglzdGFydGluZyBmcm9tIHplcm8uCgkoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoJKiBlbGYzMi1zMzkwLmMgKGVsZl9zMzkwX2NoZWNrX3JlbG9jcyk6IE1vZGlmeSBmb3IgcmVmY291bnRzCglzdGFydGluZyBmcm9tIHplcm8uCgkoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoJKiBlbGY2NC1zMzkwLmMgKGVsZl9zMzkwX2NoZWNrX3JlbG9jcyk6IE1vZGlmeSBmb3IgcmVmY291bnRzCglzdGFydGluZyBmcm9tIHplcm8uCgkoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IE1vZGlmeSBmb3IgcmVmY291bnRzCglzdGFydGluZyBmcm9tIHplcm8uCgkoZWxmX2JhY2tlbmRfY2FuX3JlZmNvdW50KTogRGVmaW5lLgoKCSogc29tLmMgKHNvbV93cml0ZV9zeW1ib2xfc3RyaW5ncyk6IENhc3QgY3VycmVudF9vZmZzZXQgaW4KCWJmZF9zZWVrIGNhbGwgdG8gbWF0Y2ggcGFyYW0gdHlwZS4KCjIwMDEtMDktMjggIEouIEJyb2JlY2tlciA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogc29tLmMgKHNvbV93cml0ZV9zeW1ib2xfc3RyaW5ncyk6IEZpeCBpbmNvcnJlY3QgdHlwZSBvZgoJY3VycmVudF9vZmZzZXQgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uIEZpeGVzIGEgYnVpbGQKCWZhaWx1cmUgb24gSFBVWC0xMS4wMC4KCjIwMDEtMDktMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGZ4eC10YXJnZXQuaCBbc2VjdGlvbl9mbGFnc106IEFkZCBTRUNfQVJDSF9CSVRfMCwgU0VDX1NNQUxMX0RBVEEsCglTRUNfTUVSR0UsIFNFQ19TVFJJTkdTLgoKCSogc2VjdGlvbi5jIChTRUNfQVJDSF9CSVRfMCk6IE5ldzsgcmVwbGFjZSB1bnVzZWQgU0VDX0JBTElHTi4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMjAwMS0wOS0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcmVsb2NfdHlwZV9sb29rdXApOiBEb24ndCBtYXAgYmZkCglyZWxvYyBjb2RlIHVzaW5nIHg4Nl82NF9yZWxvY19tYXAuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogVXBkYXRlIGNvbW1lbnQgc2luY2Ugd2UKCW5vIGxvbmdlciBhbGxvY2F0ZSBoZXJlLiAgTG9jYWxpc2Ugc29tZSB2YXJzIHRvIGJsb2NrcyB3aGVyZSB0aGV5CglhcmUgdXNlZC4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IENvcnJlY3QgYSBjb21tZW50LiAgRGVsYXkKCXNldHRpbmcgb2YgdmFycyB1bnRpbCBuZWVkZWQuCgkoYWxsb2NhdGVfZHlucmVsb2NzKTogRG9uJ3QgY3JlYXRlIGEgLnBsdCBlbnRyeSB3aXRob3V0IGEgcmVsb2MKCXdoZW4gc3ltYm9sIHZpc2liaWx0eSBtYWtlcyBhIGZ1bmN0aW9uIGxvY2FsLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTW92ZSBleHByZXNzaW9ucyBvdXQgb2YKCXN3YXBfcmVsb2NhX291dCBmdW5jdGlvbiBjYWxscy4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2llcy4gIENvbW1lbnQgdHlwbyBmaXguCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IE1pZ3JhdGUgY29tbW9uIGNvZGUgb3V0IG9mCglzd2l0Y2ggc3RhdGVtZW50LgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBVcGRhdGUgY29tbWVudCBzaW5jZSB3ZQoJbm8gbG9uZ2VyIGFsbG9jYXRlIGhlcmUuICBMb2NhbGlzZSBzb21lIHZhcnMgdG8gYmxvY2tzIHdoZXJlIHRoZXkKCWFyZSB1c2VkLiAgUmVtb3ZlIHNlcGFyYXRlIHN3aXRjaCBzdG10IGZvciBjcmVhdGluZyAuZ290IHNlYy4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBDb3JyZWN0IGEgY29tbWVudC4gIFJlbW92ZQoJcmVkdW5kYW50IGNhc3RzIGFuZCBhYm9ydHMuICBEZWxheSBzZXR0aW5nIG9mIHZhcnMgdW50aWwgbmVlZGVkLgoJKGFsbG9jYXRlX2R5bnJlbG9jcyk6IFJlbW92ZSByZWR1bmRhbnQgY2FzdHMgYW5kIGFib3J0cy4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBNb3ZlIGNvbW1lbnQuCgkoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTW92ZSBleHByZXNzaW9ucyBvdXQgb2YgZnVuY3Rpb24KCWNhbGxzLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4gIENvbW1lbnQgdHlwbyBmaXguCgkoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBNaWdyYXRlIGNvbW1vbiBjb2RlIG91dCBvZgoJc3dpdGNoIHN0YXRlbWVudC4KCShlbGZfYmFja2VuZF8qIGRlZmluZXMpOiBTb3J0LgoKCSogZWxmMzItaTM4Ni5jIChhbGxvY2F0ZV9keW5yZWxvY3MpOiBEb24ndCBjcmVhdGUgYSAucGx0IGVudHJ5Cgl3aXRob3V0IGEgcmVsb2Mgd2hlbiBzeW1ib2wgdmlzaWJpbHR5IG1ha2VzIGEgZnVuY3Rpb24gbG9jYWwuCgoyMDAxLTA5LTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEZpeCBkZXRlY3Rpb24gb2YKCWNvbmZsaWN0aW5nIGZsb2F0IGZsYWdzLgoKMjAwMS0wOS0yNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWkzODYgKGVsZl9pMzg2X2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogRGVmaW5lLgoJKHN0cnVjdCBlbGZfaTM4Nl9saW5rX2hhc2hfZW50cnkpOiBSZW5hbWUgInJvb3QiIHRvICJlbGYiLgoJKHN0cnVjdCBlbGZfaTM4Nl9saW5rX2hhc2hfdGFibGUpOiBMaWtld2lzZS4KCShsaW5rX2hhc2hfbmV3ZnVuYyk6IEdldCByaWQgb2YgdW5uZWNlc3NhcnkgY2FzdHMuCgkoZWxmX2kzODZfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IExpa2V3aXNlLgoJKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IEluaXRpYWxpc2UgbG9jYWxfZ290X3JlZmNvdW50cyB0byAwLgoJRG9uJ3QgdGVzdCBpbnB1dCBzZWN0aW9uIFNFQ19SRUFET05MWSBoZXJlIHRvIHRyeSB0byBhdm9pZCBjb3B5CglyZWxvY3MsIGFuZCBrZWVwIGR5bl9yZWxvY3MgcmVnYXJkbGVhcyBvZiBFTEZfTElOS19OT05fR09UX1JFRi4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBDaGVjayBvdXRwdXQgc2VjdGlvbiBTRUNfUkVBRE9OTFkKCWhlcmUgdG8gcHJvcGVybHkgdGVzdCB3aGV0aGVyIHdlIG5lZWQgY29weSByZWxvY3MuICBEbyBzbyBmb3Igd2VhawoJc3ltcyB0b28uCgoJKiBlbGYzMi1ocHBhIChlbGYzMl9ocHBhX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogRGVmaW5lLgoJKHN0cnVjdCBlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZSk6IFJlbmFtZSAicm9vdCIgdG8gImVsZiIuCgkoc3R1Yl9oYXNoX25ld2Z1bmMpOiBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IGNhc3RzLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IEluaXRpYWxpc2UgbG9jYWxfZ290X3JlZmNvdW50cyB0byAwLgoJRG9uJ3QgdGVzdCBpbnB1dCBzZWN0aW9uIFNFQ19SRUFET05MWSBoZXJlIHRvIHRyeSB0byBhdm9pZCBjb3B5CglyZWxvY3MsIGFuZCBrZWVwIGR5bl9yZWxvY3MgcmVnYXJkbGVhcyBvZiBFTEZfTElOS19OT05fR09UX1JFRi4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IENoZWNrIG91dHB1dCBzZWN0aW9uIFNFQ19SRUFET05MWQoJaGVyZSB0byBwcm9wZXJseSB0ZXN0IHdoZXRoZXIgd2UgbmVlZCBjb3B5IHJlbG9jcy4gIERvIHNvIGZvciB3ZWFrCglzeW1zIHRvby4KCjIwMDEtMDktMjYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBiZmQuYyAoX2JmZF9kZWZhdWx0X2Vycm9yX2hhbmRsZXJsKTogRGVmaW5lIHVzaW5nIFZQQVJBTVMsCglWQV9PUEVOLCBWQV9GSVhFREFSRywgVkFfQ0xPU0UuCgkoYmZkX2FyY2hpdmVfZmlsZW5hbWUpOiBDYXN0IGJmZF9tYWxsb2MgYXJnIHRvIHRoZSBjb3JyZWN0IHNpemUuCgoyMDAxLTA5LTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX2J1aWxkX3BsdCk6IEZpeCAucGx0WzMyNzY4K10gc2xvdAoJY29tcHV0YXRpb24uCgoyMDAxLTA5LTI1ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wOS0yNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWkzODYuYzogQWRkIGNvbW1lbnQgcmUgbGlua2VyIGZ1bmN0aW9uIG5hbWVzIGFuZCBvcmRlcmluZy4KCShlbGZfaTM4Nl9saW5rX2hhc2hfbmV3ZnVuYyk6IFJlbmFtZSB0byBsaW5rX2hhc2hfbmV3ZnVuYy4KCShlbGZfaTM4Nl9ncm9rX3Byc3RhdHVzKTogTW92ZSBiZWZvcmUgbGlua2VyIGZ1bmN0aW9ucy4KCShlbGZfaTM4Nl9ncm9rX3BzaW5mbyk6IExpa2V3aXNlLgoJKGVsZl9pMzg2X2Zha2Vfc2VjdGlvbnMpOiBNb3ZlIHNvIHRoYXQgZnVuY3Rpb25zIGFyZSBvcmRlcmVkLgoJKGVsZl9pMzg2X3JlbG9jX3R5cGVfY2xhc3MpOiBMaWtld2lzZS4gIENvbW1lbnQgZnVuY3Rpb24gcHVycG9zZS4KCjIwMDEtMDktMjUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYzMi1ocHBhLmM6IFJlbmFtZSBvY2N1cnJlbmNlcyBvZiAiaHBsaW5rIiB0byAiaHRhYiIKCXRocm91Z2hvdXQgZmlsZS4KCgkqIGVsZjMyLWhwcGEuYzogKExPTkdfQlJBTkNIX1BJQ19JTl9TSExJQik6IERlbGV0ZS4gIFJlbW92ZSBhbGwKCWNvZGUgaGFuZGxpbmcgdGhpcyBvcHRpb24uCgkoTE9OR19CUkFOQ0hfVklBX1BMVCk6IExpa2V3aXNlLgoJKFJFTEFUSVZFX0RZTlJFTE9DUyk6IERlZmluZSBhcyB6ZXJvLgoJKHN0cnVjdCBlbGYzMl9ocHBhX2R5bl9yZWxvY19lbnRyeSk6IEFkZCAic2VjIiwgYW5kCgkicGNfY291bnQiIGZpZWxkcy4gIFJlbW92ZSAic2VjdGlvbiIgZmllbGQuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBSZW5hbWUgcmVsb2NfZW50cmllcyB0byBkeW5fcmVsb2NzLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogRG9uJ3QgYWxsb2NhdGUgc3BhY2UgZm9yIGR5bmFtaWMKCXJlbG9jcyBoZXJlLiAgSW5zdGVhZCwgcmVjb3JkIGFsbCBuZWVkZWQgZHluYW1pYyByZWxvY3MgdmlhCglkeW5fcmVsb2NzIGFuZCBsb2NhbF9keW5yZWwuICBDYWNoZSBwb2ludGVyIHRvICJzcmVsb2MiIHNlY3Rpb24KCWluIGVsZl9zZWN0aW9uX2RhdGEuCgkoZWxmMzJfaHBwYV9nY19zd2VlcF9ob29rKTogU3dlZXAgZHluX3JlbG9jcyBhbmQgbG9jYWxfZHlucmVsLgoJKGFsbG9jYXRlX3BsdF9hbmRfZ290X2FuZF9kaXNjYXJkX3JlbG9jcyk6IFJlbmFtZSB0bwoJYWxsb2NhdGVfZHlucmVsb2NzLiAgQWxsb2NhdGUgcmF0aGVyIHRoYW4gZGlzY2FyZGluZyBkeW4gcmVsb2NzLgoJKHJlYWRvbmx5X2R5bnJlbG9jcyk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IE1hcmsgb3V0cHV0X2JmZCB1bnVzZWQuCglDYWxsIHJlYWRvbmx5X2R5bnJlbG9jcyB0byBkZXRlcm1pbmUgbmVlZCBmb3IgRFRfVEVYVFJFTC4KCVJlbmFtZSAiaSIgdG8gImliZmQiLiAgQWxsb2NhdGUgc3BhY2UgZm9yIGxvY2FsIGR5biByZWxvY3MuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTWFrZSB1c2Ugb2YgY2FjaGVkIHNyZWxvYy4KCShlbGYzMl9ocHBhX3JlbG9jX3R5cGVfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcyk6IERlZmluZS4KCjIwMDEtMDktMjUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBiZmRfZWxmX3NlY3Rpb25fZGF0YSk6IEFkZCAibG9jYWxfZHlucmVsIgoJYW5kICJzcmVsb2MiIGZpZWxkcy4KCSogZWxmMzItaTM4Ni5jIChzdHJ1Y3QgZWxmX2kzODZfZHluX3JlbG9jcyk6IEFkZCAic2VjIiwgYW5kCgkicGNfY291bnQiIGZpZWxkcy4gIFJlbW92ZSAic2VjdGlvbiIgZmllbGQuCgkoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogRG9uJ3Qgc2V0IERGX1RFWFRSRUwgaGVyZS4gIERvbid0CglhbGxvY2F0ZSBzcGFjZSBmb3IgZHluYW1pYyByZWxvY3MgaGVyZS4gIEluc3RlYWQsIHJlY29yZCBhbGwKCW5lZWRlZCBkeW5hbWljIHJlbG9jcyB2aWEgZHluX3JlbG9jcyBhbmQgbG9jYWxfZHlucmVsLiAgQ2FjaGUKCXBvaW50ZXIgdG8gInNyZWxvYyIgc2VjdGlvbiBpbiBlbGZfc2VjdGlvbl9kYXRhLgoJKGVsZl9pMzg2X2djX3N3ZWVwX2hvb2spOiBTd2VlcCBkeW5fcmVsb2NzIGFuZCBsb2NhbF9keW5yZWwuCgkoYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzKTogUmVuYW1lIHRvCglhbGxvY2F0ZV9keW5yZWxvY3MuICBBbGxvY2F0ZSByYXRoZXIgdGhhbiBkaXNjYXJkaW5nIGR5biByZWxvY3MuCgkocmVhZG9ubHlfZHlucmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IENhbGwgcmVhZG9ubHlfZHlucmVsb2NzLgoJUmVuYW1lICJpIiB0byAiaWJmZCIuICBBbGxvY2F0ZSBzcGFjZSBmb3IgbG9jYWwgZHluIHJlbG9jcy4KCShlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogTWFrZSB1c2Ugb2YgY2FjaGVkIHNyZWxvYy4KCjIwMDEtMDktMjQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYtYmZkLmggKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBQYXNzIGluIHRoZSBlbnRpcmUKCXJlbG9jIHJhdGhlciB0aGFuIGp1c3QgdGhlIHR5cGUuCgkoX2JmZF9lbGZfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBlbGYuYyAoX2JmZF9lbGZfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jX3R5cGVfY2xhc3MpOiBMaWtld2lzZS4KCSogZWxmMzItY3Jpcy5jIChlbGZfY3Jpc19yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmMgKGVsZjMyX202OGtfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgkqIGVsZjMyLXMzOTAuYyAoZWxmX3MzOTBfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NfdHlwZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jX3R5cGVfY2xhc3MpOiBMaWtld2lzZS4KCSogZWxmNjQtczM5MC5jIChlbGZfczM5MF9yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jX3R5cGVfY2xhc3MpOiBMaWtld2lzZS4KCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaDogRm9ybWF0dGluZyBmaXhlcy4KCShlbGZfbGlua19zb3J0X3JlbG9jcyk6IE1ha2UgImNvdW50IiBhbmQgInNpemUiIGJmZF9zaXplX3R5cGUuCglDYWxsIGJmZF96bWFsbG9jIHJhdGhlciB0aGFuIGNhbGxvYy4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0IG9mCglvLT5jb250ZW50cyB0byBQVFIuICBVcGRhdGUgY2FsbCB0byBlbGZfYmFja2VuZF9yZWxvY190eXBlX2NsYXNzLgoKMjAwMS0wOS0yMiAgSm9obiBSZWlzZXIgIDxqcmVpc2VyQEJpdFdhZ29uLmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQWxsb3cgZm9yIG5vIHNlY3Rpb24gaGVhZGVyIGF0IGFsbCBpbgoJbm9uLUVUX1JFTCBmaWxlcy4gIEhvbm9yIDAgZm9yIGVfc2hudW0sIGVfc2hzdHJuZHgsIGVfc2hvZmYuCgoyMDAxLTA5LTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZnh4LWlhNjQuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nIG1lc3NhZ2VzLgoJKiBjb2ZmLW1jb3JlLmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZyBtZXNzYWdlcy4KCSogY29mZi1wcGMuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nIG1lc3NhZ2VzLgoJKiBjb2ZmY29kZS5oOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmcgbWVzc2FnZXMuCgkqIGVsZjMyLW1pcHMuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nIG1lc3NhZ2VzLgoJKiBlbGY2NC1hbHBoYS5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmcgbWVzc2FnZXMuCgkqIGxpYmJmZC5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmcgbWVzc2FnZXMuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDEtMDktMjEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBNYWtlZmlsZS5hbTogUnVuICJtYWtlIGRlcC1hbSIuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogYW91dHguaDogRm9ybWF0dGluZyBmaXhlcy4KCSogbWVyZ2UuYyAoX2JmZF9tZXJnZWRfc2VjdGlvbl9vZmZzZXQpOiBCcmVhayBsaW5lIGF0IDgwIGNoYXJzLgoKCSogbGlua2VyLmM6IFJlcGxhY2UgYmZkX2dldF9maWxlbmFtZSB3aXRoIGJmZF9hcmNoaXZlX2ZpbGVuYW1lCglpbiBlcnJvciBtZXNzYWdlLgoKMjAwMS0wOS0yMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGJmZC5jIChiZmRfYXJjaGl2ZV9maWxlbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBhb3V0LWFkb2JlLmM6IFJlcGxhY2UgYmZkX2dldF9maWxlbmFtZSB3aXRoIGJmZF9hcmNoaXZlX2ZpbGVuYW1lCglpbiBlcnJvciBtZXNzYWdlcyB3aGVyZSB0aGUgYmZkIGlzIGFuIGlucHV0IGJmZC4KCSogYW91dC1jcmlzLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWFybS5jOiBMaWtld2lzZS4KCSogY29mZi1tY29yZS5jOiBMaWtld2lzZS4KCSogY29mZi1wcGMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXNoLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXRpYzU0eC5jOiBMaWtld2lzZS4KCSogY29mZi10aWM4MC5jOiBMaWtld2lzZS4KCSogY29mZjY0LXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZmNvZGUuaDogTGlrZXdpc2UuCgkqIGNvZmZnZW4uYzogTGlrZXdpc2UuCgkqIGNvZmZsaW5rLmM6IExpa2V3aXNlLgoJKiBlY29mZmxpbmsuYzogTGlrZXdpc2UuCgkqIGVsZi1ocHBhLmg6IExpa2V3aXNlLgoJKiBlbGYuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWFybS5oOiBMaWtld2lzZS4KCSogZWxmMzItY3Jpcy5jOiBMaWtld2lzZS4KCSogZWxmMzItZ2VuLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1ocHBhLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tMzJyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1zMzkwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXY4NTAuYzogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1nZW4uYzogTGlrZXdpc2UuCgkqIGVsZjY0LXBwYy5jOiBMaWtld2lzZS4KCSogZWxmNjQtczM5MC5jOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYzogTGlrZXdpc2UuCgkqIGVsZjY0LXg4Ni02NC5jOiBMaWtld2lzZS4KCSogZWxmbGluay5oOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jOiBMaWtld2lzZS4KCSogaWVlZS5jOiBMaWtld2lzZS4KCSogaWhleC5jOiBMaWtld2lzZS4KCSogbGliYmZkLmM6IExpa2V3aXNlLgoJKiBwZHAxMS5jOiBMaWtld2lzZS4KCSogcGUtbWlwcy5jOiBMaWtld2lzZS4KCSogcGVpY29kZS5oOiBMaWtld2lzZS4KCSogc3JlYy5jOiBMaWtld2lzZS4KCSogeGNvZmZsaW5rLmM6IExpa2V3aXNlLgoKCSogZWxmMzItYXJtLmg6IE1ha2UgX2JmZF9lcnJvcl9oYW5kbGVyIGNhbGxzIEsmUiBjb21wYXRpYmxlLgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9jcmVhdGVfbGlua2VyX3NlY3Rpb24pOiBCZXR0ZXIgZ3JhbW1hciBmb3IKCWVycm9yIG1lc3NhZ2UuCgoJKiBjb2ZmLW1jb3JlLmMgKGNvZmZfbWNvcmVfcmVsb2NhdGVfc2VjdGlvbik6IEludGVybmFsaW9uYWxpc2UKCWVycm9yIG1lc3NhZ2UuCgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9hZGRfc3ltYm9sX2hvb2spOiBDb25zdGlmeSBzdHRfdHlwZXMuCglDb25zb2xpZGF0ZSBlcnJvciBtZXNzYWdlcywgYW5kIHNwbGl0IGxvbmcgbWVzc2FnZXMgdG8gdHdvIGxpbmVzLgoKMjAwMS0wOS0yMCAgSm9obiBSZWlzZXIgIDxqcmVpc2VyQEJpdFdhZ29uLmNvbT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IENvb3JkaW5hdGUgaW5mby0+c3ltYm9saWMKCWFuZCBpbmZvLT5hbGxvd19zaGxpYl91bmRlZmluZWQuCgkqIGVsZjMyLWNyaXMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWhwcGEuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jOiBMaWtld2lzZS4KCSogZWxmMzItczM5MC5jOiBMaWtld2lzZS4KCSogZWxmMzItc2guYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNwYXJjLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtaHBwYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtcHBjLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1zMzkwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jOiBMaWtld2lzZS4KCSogZWxmNjQteDg2LTY0LmM6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmM6IExpa2V3aXNlLgoKMjAwMS0wOS0xOCAgQnJ1bm8gSGFpYmxlICA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPgoKCSogYW91dHguaDogSW5jbHVkZSAic2FmZS1jdHlwZS5oIiBpbnN0ZWFkIG9mIDxjdHlwZS5oPi4KCShhb3V0X2xpbmtfd3JpdGVfc3ltYm9scyk6IFVzZSBJU0RJR0lUIGluc3RlYWQgb2YgaXNkaWdpdC4KCSogYXJjaGl2ZS5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKF9iZmRfZ2VuZXJpY19yZWFkX2FyX2hkcl9tYWcpOiBVc2UgSVNESUdJVCBpbnN0ZWFkIG9mIGlzZGlnaXQuCgkqIGFyY2h1cmVzLmM6IEluY2x1ZGUgInNhZmUtY3R5cGUuaCIgaW5zdGVhZCBvZiA8Y3R5cGUuaD4uCgkoYmZkX2RlZmF1bHRfc2Nhbik6IFVzZSBJU0RJR0lUIGluc3RlYWQgb2YgaXNkaWdpdC4KCSogYmZkLmM6IEluY2x1ZGUgInNhZmUtY3R5cGUuaCIgaW5zdGVhZCBvZiA8Y3R5cGUuaD4uCgkoYmZkX3NjYW5fdm1hKTogVXNlIElTWERJR0lUL0lTRElHSVQvSVNMT1dFUiBpbnN0ZWFkIG9mCglpc3hkaWdpdC9pc2RpZ2l0L2lzbG93ZXIuCgkqIGJpbmFyeS5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKG1hbmdsZV9uYW1lKTogVXNlIElTQUxOVU0gaW5zdGVhZCBvZiBpc2FsbnVtLgoJKiBjcHUtdjg1MC5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKHNjYW4pOiBVc2UgSVNESUdJVCBpbnN0ZWFkIG9mIGlzZGlnaXQuCgkqIGhvc3RzL2FscGhhdm1zLmg6IERvbid0IGluY2x1ZGUgPGN0eXBlLmg+LgoJKiBpZWVlLmM6IEluY2x1ZGUgInNhZmUtY3R5cGUuaCIgaW5zdGVhZCBvZiA8Y3R5cGUuaD4uCgkoaWVlZV9vYmplY3RfcCk6IFVzZSBUT1VQUEVSIGluc3RlYWQgb2YgdG91cHBlci4KCSogaWhleC5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKGloZXhfYmFkX2J5dGUpOiBVc2UgSVNQUklOVCBpbnN0ZWFkIG9mIGlzcHJpbnQuCgkqIG1lcmdlLmM6IERvbid0IGluY2x1ZGUgPGN0eXBlLmg+LgoJKiBvYXN5cy5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKG9hc3lzX3dyaXRlX3NlY3Rpb25zKTogVXNlIElTRElHSVQgaW5zdGVhZCBvZiBpc2RpZ2l0LgoJKiBwZHAxMS5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKGFvdXRfbGlua193cml0ZV9zeW1ib2xzKTogVXNlIElTRElHSVQgaW5zdGVhZCBvZiBpc2RpZ2l0LgoJKiBwcGNib290LmM6IEluY2x1ZGUgInNhZmUtY3R5cGUuaCIgaW5zdGVhZCBvZiA8Y3R5cGUuaD4uCgkobWFuZ2xlX25hbWUpOiBVc2UgSVNBTE5VTSBpbnN0ZWFkIG9mIGlzYWxudW0uCgkqIHNvbS5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKHNvbV9zZXRfcmVsb2NfaW5mbyk6IFVzZSBJU1VQUEVSL0lTTE9XRVIvSVNESUdJVCBpbnN0ZWFkIG9mCglpc3VwcGVyL2lzbG93ZXIvaXNkaWdpdC4KCShzb21fZGVjb2RlX3N5bWNsYXNzKTogVXNlIFRPVVBQRVIgaW5zdGVhZCBvZiB0b3VwcGVyLgoJKiBzcmVjLmM6IEluY2x1ZGUgInNhZmUtY3R5cGUuaCIgaW5zdGVhZCBvZiA8Y3R5cGUuaD4uCgkoc3JlY19iYWRfYnl0ZSk6IFVzZSBJU1BSSU5UIGluc3RlYWQgb2YgaXNwcmludC4KCShzcmVjX3NjYW4pOiBVc2UgSVNTUEFDRSBpbnN0ZWFkIG9mIGlzc3BhY2UuCgkqIHN0YWJzLmM6IEluY2x1ZGUgInNhZmUtY3R5cGUuaCIgaW5zdGVhZCBvZiA8Y3R5cGUuaD4uCgkoX2JmZF9saW5rX3NlY3Rpb25fc3RhYnMpOiBVc2UgSVNESUdJVCBpbnN0ZWFkIG9mIGlzZGlnaXQuCgkqIHN5bXMuYzogSW5jbHVkZSAic2FmZS1jdHlwZS5oIgoJKGlzbG93ZXIsIHRvdXBwZXIpOiBSZW1vdmUgbWFjcm8gZGVmaW5pdGlvbnMuCgkoYmZkX2RlY29kZV9zeW1jbGFzcyk6IFVzZSBUT1VQUEVSIGluc3RlYWQgb2YgdG91cHBlci4KCSogdm1zLWdzZC5jOiBEb24ndCBpbmNsdWRlIDxjdHlwZS5oPi4KCSogdm1zLWhkci5jOiBJbmNsdWRlICJzYWZlLWN0eXBlLmgiIGluc3RlYWQgb2YgPGN0eXBlLmg+LgoJKF9iZmRfdm1zX3dyaXRlX2hkcik6IFVzZSBJU0xPV0VSL1RPVVBQRVIgaW5zdGVhZCBvZgoJaXNsb3dlci90b3VwcGVyLgoJKiB2bXMtdGlyLmM6IERvbid0IGluY2x1ZGUgPGN0eXBlLmg+LgoKMjAwMS0wOS0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGxpYmJmZC5jIChiZmRfYnJlYWQpOiBOZXcgZnVuY3Rpb24gcmVwbGFjaW5nIGJmZF9yZWFkIHdpdGhvdXQKCXJlZHVuZGFudCBwYXJhbXMuICBBbGxvdyByZWFkcyB1cCB0byAoc2l6ZV90KSAtMiBpbiBsZW5ndGguCgkoYmZkX2J3cml0ZSk6IFNpbWlsYXJseSBmb3IgYmZkX3dyaXRlLgoJKHJlYWxfcmVhZCk6IFJldHVybiBhIHNpemVfdC4KCShiZmRfcmVhZCk6IENhbGwgYmZkX2JyZWFkLgoJKGJmZF93cml0ZSk6IENhbGwgYmZkX2J3cml0ZS4KCSh3YXJuX2RlcHJlY2F0ZWQpOiBOZXcgZnVuY3Rpb24gdG8gYW5ub3kgZXZlcnlib2R5LgoJKGJmZF9nZXRfZmlsZV93aW5kb3cpOiBEb24ndCBjYWxsIGJmZF9zZXRfZXJyb3IgdW5uZWNlc3NhcmlseS4KCSogYmZkLWluLmggKGJmZF9icmVhZCwgYmZkX2J3cml0ZSwgd2Fybl9kZXByZWNhdGVkKTogRGVjbGFyZS4KCShiZmRfcmVhZCwgYmZkX3dyaXRlKTogRGVmaW5lIGFzIG1hY3JvLgoJKiBhaXgzODYtY29yZS5jOiBSZXBsYWNlIGNhbGxzIHRvIGJmZF9yZWFkIHdpdGggYmZkX2JyZWFkLCBhbmQKCWxpa2V3aXNlIGZvciBiZmRfd3JpdGUuICBFbnN1cmUgZnVuY3Rpb24gYXJncyBhcmUgY29ycmVjdCBzaXplIGJ5Cgl1c2luZyBjYXN0cyBvciBsb2NhbCB2YXJzLiAgSW4gc29tZSBjYXNlcywgcmVtb3ZlIHVubmVjZXNzYXJ5CgljYXN0cy4gIEZvcm1hdHRpbmcgZml4ZXMsIGluIHNvbWUgY2FzZXMgcmVtb3ZpbmcgYSBsYXJnZSBleHByZXNzaW9uCglmcm9tIGZ1bmN0aW9uIGFyZ3MgYnkgdXNpbmcgYSBsb2NhbCB2YXIuICBSZXBsYWNlIENPTlNUIHdpdGggY29uc3QuCglNb2RpZnkgdmFyaWFibGUgdHlwZXMgdG8gYXZvaWQgd2FyaW5ncy4gIFVzZSBjYXN0cyB0byBhdm9pZAoJd2FybmluZ3Mgd2hlbiB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGluIHVuc2lnbmVkIGV4cHJlc3Npb25zLgoJKiBhb3V0LWFkb2JlLmM6IExpa2V3aXNlLgoJKiBhb3V0LWFybS5jOiBMaWtld2lzZS4KCSogYW91dC1jcmlzLmM6IExpa2V3aXNlLgoJKiBhb3V0LWVuY2FwLmM6IExpa2V3aXNlLgoJKiBhb3V0LW5zMzJrLmM6IExpa2V3aXNlLgoJKiBhb3V0LXRhcmdldC5oOiBMaWtld2lzZS4KCSogYW91dC10aWMzMC5jOiBMaWtld2lzZS4KCSogYW91dGYxLmg6IExpa2V3aXNlLgoJKiBhb3V0eC5oOiBMaWtld2lzZS4KCSogYXJjaGl2ZS5jOiBMaWtld2lzZS4KCSogYXJjaHVyZXMuYzogTGlrZXdpc2UuCgkqIGJmZC1pbi5oOiBMaWtld2lzZS4KCSogYmZkLmM6IExpa2V3aXNlLgoJKiBiaW5hcnkuYzogTGlrZXdpc2UuCgkqIGJvdXQuYzogTGlrZXdpc2UuCgkqIGNhY2hlLmM6IExpa2V3aXNlLgoJKiBjaXNjby1jb3JlLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWEyOWsuYzogTGlrZXdpc2UuCgkqIGNvZmYtYWxwaGEuYzogTGlrZXdpc2UuCgkqIGNvZmYtYXJtLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWg4MzAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWkzODYuYzogTGlrZXdpc2UuCgkqIGNvZmYtaTg2MC5jOiBMaWtld2lzZS4KCSogY29mZi1pOTYwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWlhNjQuYzogTGlrZXdpc2UuCgkqIGNvZmYtbTY4ay5jOiBMaWtld2lzZS4KCSogY29mZi1tODhrLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZi1zaC5jOiBMaWtld2lzZS4KCSogY29mZi1zcGFyYy5jOiBMaWtld2lzZS4KCSogY29mZi1zdGdvMzIuYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljMzAuYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljNTR4LmM6IExpa2V3aXNlLgoJKiBjb2ZmLXRpYzgwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXc2NS5jOiBMaWtld2lzZS4KCSogY29mZi16OGsuYzogTGlrZXdpc2UuCgkqIGNvZmY2NC1yczYwMDAuYzogTGlrZXdpc2UuCgkqIGNvZmZjb2RlLmg6IExpa2V3aXNlLgoJKiBjb2ZmZ2VuLmM6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jOiBMaWtld2lzZS4KCSogY29mZnN3YXAuaDogTGlrZXdpc2UuCgkqIGNvcmVmaWxlLmM6IExpa2V3aXNlLgoJKiBjcHUtYXJjLmM6IExpa2V3aXNlLgoJKiBjcHUtaDgzMDAuYzogTGlrZXdpc2UuCgkqIGNwdS1oODUwMC5jOiBMaWtld2lzZS4KCSogY3B1LWk5NjAuYzogTGlrZXdpc2UuCgkqIGNwdS1pYTY0LW9wYy5jOiBMaWtld2lzZS4KCSogY3B1LW5zMzJrLmM6IExpa2V3aXNlLgoJKiBjcHUtcGRwMTEuYzogTGlrZXdpc2UuCgkqIGNwdS1wai5jOiBMaWtld2lzZS4KCSogY3B1LXNoLmM6IExpa2V3aXNlLgoJKiBjcHUtdzY1LmM6IExpa2V3aXNlLgoJKiBjcHUtejhrLmM6IExpa2V3aXNlLgoJKiBkd2FyZjEuYzogTGlrZXdpc2UuCgkqIGR3YXJmMi5jOiBMaWtld2lzZS4KCSogZWNvZmYuYzogTGlrZXdpc2UuCgkqIGVjb2ZmbGluay5jOiBMaWtld2lzZS4KCSogZWNvZmZzd2FwLmg6IExpa2V3aXNlLgoJKiBlbGYtYmZkLmg6IExpa2V3aXNlLgoJKiBlbGYtaHBwYS5oOiBMaWtld2lzZS4KCSogZWxmLW0xMDIwMC5jOiBMaWtld2lzZS4KCSogZWxmLW0xMDMwMC5jOiBMaWtld2lzZS4KCSogZWxmLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1hcmMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWFybS5oOiBMaWtld2lzZS4KCSogZWxmMzItYXZyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1jcmlzLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1nZW4uYzogTGlrZXdpc2UuCgkqIGVsZjMyLWg4MzAwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1ocHBhLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pODYwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tMzJyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jOiBMaWtld2lzZS4KCSogZWxmMzItb3BlbnJpc2MuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXBqLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXMzOTAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLWxpbi5jOiBMaWtld2lzZS4KCSogZWxmMzItc2guYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNwYXJjLmM6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtaHBwYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtbWlwcy5jOiBMaWtld2lzZS4KCSogZWxmNjQtcHBjLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1zMzkwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jOiBMaWtld2lzZS4KCSogZWxmNjQteDg2LTY0LmM6IExpa2V3aXNlLgoJKiBlbGZhcm0tbmFiaS5jOiBMaWtld2lzZS4KCSogZWxmY29kZS5oOiBMaWtld2lzZS4KCSogZWxmY29yZS5oOiBMaWtld2lzZS4KCSogZWxmbGluay5jOiBMaWtld2lzZS4KCSogZWxmbGluay5oOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jOiBMaWtld2lzZS4KCSogZWxmeHgtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBmb3JtYXQuYzogTGlrZXdpc2UuCgkqIGhhc2guYzogTGlrZXdpc2UuCgkqIGhwMzAwaHB1eC5jOiBMaWtld2lzZS4KCSogaHBwYWJzZC1jb3JlLmM6IExpa2V3aXNlLgoJKiBocHV4LWNvcmUuYzogTGlrZXdpc2UuCgkqIGkzODZhb3V0LmM6IExpa2V3aXNlLgoJKiBpMzg2ZHluaXguYzogTGlrZXdpc2UuCgkqIGkzODZsaW51eC5jOiBMaWtld2lzZS4KCSogaTM4Nmx5bnguYzogTGlrZXdpc2UuCgkqIGkzODZtYWNoMy5jOiBMaWtld2lzZS4KCSogaTM4Nm1zZG9zLmM6IExpa2V3aXNlLgoJKiBpMzg2b3M5ay5jOiBMaWtld2lzZS4KCSogaWVlZS5jOiBMaWtld2lzZS4KCSogaWhleC5jOiBMaWtld2lzZS4KCSogaXJpeC1jb3JlLmM6IExpa2V3aXNlLgoJKiBsaWJhb3V0Lmg6IExpa2V3aXNlLgoJKiBsaWJiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGxpYmJmZC5jOiBMaWtld2lzZS4KCSogbGliY29mZi1pbi5oOiBMaWtld2lzZS4KCSogbGliZWNvZmYuaDogTGlrZXdpc2UuCgkqIGxpYmllZWUuaDogTGlrZXdpc2UuCgkqIGxpYm5sbS5oOiBMaWtld2lzZS4KCSogbGlicGVpLmg6IExpa2V3aXNlLgoJKiBsaWJ4Y29mZi5oOiBMaWtld2lzZS4KCSogbGlua2VyLmM6IExpa2V3aXNlLgoJKiBseW54LWNvcmUuYzogTGlrZXdpc2UuCgkqIG02OGtsaW51eC5jOiBMaWtld2lzZS4KCSogbWVyZ2UuYzogTGlrZXdpc2UuCgkqIG1pcHNic2QuYzogTGlrZXdpc2UuCgkqIG5ldGJzZC1jb3JlLmM6IExpa2V3aXNlLgoJKiBubG0uYzogTGlrZXdpc2UuCgkqIG5sbTMyLWFscGhhLmM6IExpa2V3aXNlLgoJKiBubG0zMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBubG0zMi1wcGMuYzogTGlrZXdpc2UuCgkqIG5sbTMyLXNwYXJjLmM6IExpa2V3aXNlLgoJKiBubG1jb2RlLmg6IExpa2V3aXNlLgoJKiBubG1zd2FwLmg6IExpa2V3aXNlLgoJKiBuczMyay5oOiBMaWtld2lzZS4KCSogb2FzeXMuYzogTGlrZXdpc2UuCgkqIG9wbmNscy5jOiBMaWtld2lzZS4KCSogb3NmLWNvcmUuYzogTGlrZXdpc2UuCgkqIHBjNTMyLW1hY2guYzogTGlrZXdpc2UuCgkqIHBkcDExLmM6IExpa2V3aXNlLgoJKiBwZS1taXBzLmM6IExpa2V3aXNlLgoJKiBwZVhYaWdlbi5jOiBMaWtld2lzZS4KCSogcGVpY29kZS5oOiBMaWtld2lzZS4KCSogcHBjYm9vdC5jOiBMaWtld2lzZS4KCSogcHRyYWNlLWNvcmUuYzogTGlrZXdpc2UuCgkqIHJlbG9jLmM6IExpa2V3aXNlLgoJKiByZWxvYzE2LmM6IExpa2V3aXNlLgoJKiByaXNjaXguYzogTGlrZXdpc2UuCgkqIHJzNjAwMC1jb3JlLmM6IExpa2V3aXNlLgoJKiBzY281LWNvcmUuYzogTGlrZXdpc2UuCgkqIHNlY3Rpb24uYzogTGlrZXdpc2UuCgkqIHNvbS5jOiBMaWtld2lzZS4KCSogc3BhcmNsaW51eC5jOiBMaWtld2lzZS4KCSogc3BhcmNseW54LmM6IExpa2V3aXNlLgoJKiBzcmVjLmM6IExpa2V3aXNlLgoJKiBzdGFicy5jOiBMaWtld2lzZS4KCSogc3Vub3MuYzogTGlrZXdpc2UuCgkqIHN5bXMuYzogTGlrZXdpc2UuCgkqIHRhcmdldHMuYzogTGlrZXdpc2UuCgkqIHRla2hleC5jOiBMaWtld2lzZS4KCSogdHJhZC1jb3JlLmM6IExpa2V3aXNlLgoJKiB2ZXJzYWRvcy5jOiBMaWtld2lzZS4KCSogdm1zLWdzZC5jOiBMaWtld2lzZS4KCSogdm1zLWhkci5jOiBMaWtld2lzZS4KCSogdm1zLW1pc2MuYzogTGlrZXdpc2UuCgkqIHZtcy10aXIuYzogTGlrZXdpc2UuCgkqIHZtcy5jOiBMaWtld2lzZS4KCSogdm1zLmg6IExpa2V3aXNlLgoJKiB4Y29mZmxpbmsuYzogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCgkqIGJmZC5jIChzdHJ1Y3QgX2JmZCk6IE1ha2UgIndoZXJlIiBhbmQgIm9yaWdpbiIgdW5zaWduZWQuCgkqIGJmZC1pbi5oIChmaWxlX3B0cik6IENoYW5nZSBmcm9tIGEgbG9uZyBpbnQgdG8gYSBiZmRfc2lnbmVkX3ZtYS4KCSh1ZmlsZV9wdHIpOiBEZWZpbmUuCgkoYmZkX3RlbGwpOiBSZXR1cm4gYSB1ZmlsZV9wdHIuCgkqIGxpYmJmZC5jIChiZmRfdGVsbCk6IExpa2V3aXNlLgoJKGJmZF9zZWVrKTogVXNlIGJmZF9zaXplX3R5cGUgbG9jYWxzLiAgRG9uJ3QgY2FsbCBiZmRfc2V0X2Vycm9yCgl1bm5lY2Vzc2FyaWx5LgoJKiBhaXgzODYtY29yZS5jOiBUZXN0ICE9IDAgZm9yIGJmZF9zZWVrIGVycm9ycyByYXRoZXIgdGhhbiA8IDAuCgkqIGFvdXRmMS5oOiBMaWtld2lzZS4KCSogc29tLmM6IExpa2V3aXNlLgoJKiBjYWNoZS5jIChiZmRfY2FjaGVfbG9va3VwX3dvcmtlcik6IEd1YXJkIGFnYWluc3QgYWJmZC0+d2hlcmUKCWxhcmdlciB0aGFuIHVuc2lnbmVkIGxvbmcgY2FuIHJlcHJlc2VudC4KCgkqIGxpYmJmZC5jIChiZmRfbWFsbG9jKTogVGFrZSBhIGJmZF9zaXplX3R5cGUgYXJnLiAgRXJyb3IgaWYKCXNpemUgb3ZlcmZsb3dzIHNpemVfdC4KCShiZmRfcmVhbGxvYyk6IExpa2V3aXNlLgoJKGJmZF96bWFsbG9jKTogTGlrZXdpc2UuCgkqIG9wbmNscy5jIChiZmRfYWxsb2MpOiBMaWtld2lzZS4KCShiZmRfemFsbG9jKTogTGlrZXdpc2UuCgkqIGxpYmJmZC1pbi5oIChiZmRfbWFsbG9jLCBiZmRfcmVhbGxvYywgYmZkX3ptYWxsb2MpOiBVcGRhdGUuCgkoYmZkX2FsbG9jLCBiZmRfemFsbG9jKTogVXBkYXRlLgoKCSogbGliYmZkLmMgKGJmZF9nZXRfOCk6IE1hc2sgd2l0aCAweGZmIGluIGNhc2UgY2hhciBpcyBtb3JlIHRoYW4KCTggYml0cy4KCShiZmRfZ2V0X3NpZ25lZF84KTogTGlrZXdpc2UuCgkoSF9QVVRfNjQsIEhfUFVUXzMyLCBIX1BVVF8xNiwgSF9QVVRfOCwKCUhfUFVUX1M2NCwgSF9QVVRfUzMyLCBIX1BVVF9TMTYsIEhfUFVUX1M4LAoJSF9HRVRfNjQsIEhfR0VUXzMyLCBIX0dFVF8xNiwgSF9HRVRfOCwKCUhfR0VUX1M2NCwgSF9HRVRfUzMyLCBIX0dFVF9TMTYsIEhfR0VUX1M4KTogRGVmaW5lIGFuZCB1c2UuCgkqIGxpYmFvdXQuaDogTGlrZXdpc2UgZGVmaW5lIGFuZCB1c2UgaGVyZS4KCSogYW91dC1hZG9iZS5jOiBVc2UgSF9HRVRfKiBhbmQgSF9QVVRfKiBtYWNyb3MuCgkqIGFvdXQtYXJtLmM6IExpa2V3aXNlLgoJKiBhb3V0LWVuY2FwLmM6IExpa2V3aXNlLgoJKiBhb3V0LW5zMzJrLmM6IExpa2V3aXNlLgoJKiBhb3V0LXRpYzMwLmM6IExpa2V3aXNlLgoJKiBhb3V0ZjEuaDogTGlrZXdpc2UuCgkqIGFvdXR4Lmg6IExpa2V3aXNlLgoJKiBib3V0LmM6IExpa2V3aXNlLgoJKiBjb2ZmLWFscGhhLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWg4MzAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWk5NjAuYzogTGlrZXdpc2UuCgkqIGNvZmYtaWE2NC5jOiBMaWtld2lzZS4KCSogY29mZi1tODhrLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZi1zaC5jOiBMaWtld2lzZS4KCSogY29mZi1zcGFyYy5jOiBMaWtld2lzZS4KCSogY29mZi1zdGdvMzIuYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljMzAuYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljODAuYzogTGlrZXdpc2UuCgkqIGNvZmYtdzY1LmM6IExpa2V3aXNlLgoJKiBjb2ZmLXo4ay5jOiBMaWtld2lzZS4KCSogY29mZjY0LXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZmdlbi5jOiBMaWtld2lzZS4KCSogY29mZmxpbmsuYzogTGlrZXdpc2UuCgkqIGNvZmZzd2FwLmg6IExpa2V3aXNlLgoJKiBlY29mZi5jOiBMaWtld2lzZS4KCSogZWNvZmZzd2FwLmg6IExpa2V3aXNlLgoJKiBlbGYuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYzogTGlrZXdpc2UuCgkqIGVsZjY0LW1pcHMuYzogTGlrZXdpc2UuCgkqIGhwMzAwaHB1eC5jOiBMaWtld2lzZS4KCSogaTM4NmR5bml4LmM6IExpa2V3aXNlLgoJKiBpMzg2bHlueC5jOiBMaWtld2lzZS4KCSogaTM4Nm1zZG9zLmM6IExpa2V3aXNlLgoJKiBpMzg2b3M5ay5jOiBMaWtld2lzZS4KCSogbGlicGVpLmg6IExpa2V3aXNlLgoJKiBubG0zMi1hbHBoYS5jOiBMaWtld2lzZS4KCSogbmxtMzItaTM4Ni5jOiBMaWtld2lzZS4KCSogbmxtMzItcHBjLmM6IExpa2V3aXNlLgoJKiBubG1jb2RlLmg6IExpa2V3aXNlLgoJKiBubG1zd2FwLmg6IExpa2V3aXNlLgoJKiBvYXN5cy5jOiBMaWtld2lzZS4KCSogcGRwMTEuYzogTGlrZXdpc2UuCgkqIHBlLW1pcHMuYzogTGlrZXdpc2UuCgkqIHBlWFhpZ2VuLmM6IExpa2V3aXNlLgoJKiBwZWljb2RlLmg6IExpa2V3aXNlLgoJKiByaXNjaXguYzogTGlrZXdpc2UuCgkqIHN1bm9zLmM6IExpa2V3aXNlLgoJKiB4Y29mZmxpbmsuYzogTGlrZXdpc2UuCgkqIGVsZmNvZGUuaDogKHB1dF93b3JkLCBnZXRfd29yZCwgcHV0X3NpZ25lZF93b3JkLCBnZXRfc2lnbmVkX3dvcmQpOgoJUmVuYW1lIHRvIEhfUFVUX1dPUkQsIEhfR0VUX1dPUkQsIEhfUFVUX1NJR05FRF9XT1JELCBIX0dFVF9TSUdORURfV09SRC4KCSogY29mZi1yczYwMDAuYyAoUFVUV09SRCwgUFVUSEFMRiwgUFVUQllURSk6IERvbid0IGRlZmluZS4gVXNlCgllcXVpdmFsZW50IEhfUFVUXyogbWFjcm8gaW5zdGVhZC4KCShHRVRXT1JELCBHRVRIQUxGLCBHRVRCWVRFKTogU2ltaWxhcmx5LgoJKiBjb2ZmNjQtcnM2MDAwLmMgKFBVVFdPUkQsIFBVVEhBTEYsIFBVVEJZVEUpOiBMaWtld2lzZS4KCShHRVRXT1JELCBHRVRIQUxGLCBHRVRCWVRFKTogTGlrZXdpc2UuCgkqIGNvZmZzd2FwLmggKFBVVFdPUkQsIFBVVEhBTEYsIFBVVEJZVEUpOiBMaWtld2lzZS4KCgkqIGJmZC1pbi5oIChzdHJ1Y3Qgb3JsKTogQ2hhbmdlICJwb3MiIHRvIGEgdW5pb24uCgkqIGFyY2hpdmUuYyAoX2JmZF9jb21wdXRlX2FuZF93cml0ZV9hcm1hcCk6IFVzZSBpdCBpbnN0ZWFkIG9mIGNhc3RzLgoJKGJzZF93cml0ZV9hcm1hcCk6IEhlcmUgdG9vLgoJKGNvZmZfd3JpdGVfYXJtYXApOiBBbmQgaGVyZS4KCSogY29mZi1yczYwMDAuYyAoeGNvZmZfd3JpdGVfYXJtYXBfb2xkKTogQW5kIGhlcmUuCgkoeGNvZmZfd3JpdGVfb25lX2FybWFwX2JpZyk6IEFuZCBoZXJlLgoJKHhjb2ZmX3dyaXRlX2FybWFwX2JpZyk6IEFuZCBoZXJlLgoJKiBlY29mZi5jIChfYmZkX2Vjb2ZmX3dyaXRlX2FybWFwKTogQW5kIGhlcmUuCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF93cml0ZV9hcm1hcCk6IEFuZCBoZXJlLgoKCSogYW91dGYxLmggKHN1bm9zX3NldF9hcmNoX21hY2gpOiBNYWtlICJtYWNoIiBwYXJhbSBhbiBlbnVtLgoJKiBlbGYtbTEwMzAwLmMgKGVsZl9tbjEwMzAwX21hY2gpOiBSZXR1cm4gYW4gdW5zaWduZWQgbG9uZy4KCSogZWxmMzItaDgzMDAuYyAoZWxmMzJfaDhfbWFjaCk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX21hY2gpOiBMaWtld2lzZS4KCSogc3BhcmNseW54LmMgKE5BTUUobHlueCxzZXRfYXJjaF9tYWNoKSk6IExpa2V3aXNlLgoKCSogYWl4Mzg2LWNvcmUuYyAoYWl4Mzg2X2NvcmVfZmlsZV9wKTogUmVtb3ZlIHJlZHVuZGFudCBiZmRfcmVsZWFzZQoJY2FsbHMuCgkoYWl4Mzg2X2NvcmVfdmVjKTogVHlwbyBmaXguCgoJKiBhb3V0LWFybS5jOiBJbmNsdWRlIGxpYmFvdXQuaCBhbmQgYW91dC9hb3V0NjQuaCBhZnRlciBOX1RYVEFERFIKCWV0Yy4gdG8gYXZvaWQgcmVkZWZpbmVkIG1hY3JvIHdhcm5pbmcuCgkoTVkocHV0X3JlbG9jKSk6IFVzZSBiZmRfdm1hIGZvciAidmFsdWUiIHJhdGhlciB0aGFuIGxvbmcuCgkoTVkoZml4X3BjcmVsXzI2KSk6IExpa2V3aXNlLgoJKiBhb3V0LW5zMzJrLmMgKE1ZKHB1dF9yZWxvYykpOiBMaWtld2lzZS4KCSogYW91dC1jcmlzLmMgKE1ZKHN3YXBfZXh0X3JlbG9jX291dCkpOiBMaWtld2lzZSBmb3Igcl9hZGRlbmQuCgkqIGFvdXR4LmggKE5BTUUoYW91dCxzd2FwX2V4dF9yZWxvY19vdXQpKTogTGlrZXdpc2UuCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZSBmb3IgbXlfb2Zmc2V0LgoKCSogYW91dC1lbmNhcC5jOiBJbmNsdWRlICJmaWxlIiwgbm90IDxmaWxlPiBmb3IgYmludXRpbHMgaGVhZGVycy4KCShlbmNhcF9vYmplY3RfcCk6IEhhbGYgYmFrZWQgYXR0ZW1wdCB0byBmaXggY29tcGlsZSBlcnJvcnMgaW4KCWNvZGUgZGVhbGluZyB3aXRoICJtYWdpYyIuCgoJKiBhb3V0LW5zMzJrLmM6IEluY2x1ZGUgImZpbGUiLCBub3QgPGZpbGU+IGZvciBiaW51dGlscyBoZWFkZXJzLgoJKF9iZmRfbnMzMmtfcmVsb2NhdGVfY29udGVudHMpOiBnZXRfZGF0YSBhbmQgcHV0X2RhdGEgbWFuaXB1bGF0ZQoJYmZkX3ZtYSdzIHJhdGhlciB0aGFuIGxvbmdzLgoJKiBjcHUtbnMzMmsuYyAobnMzMmtfc2lnbl9leHRlbmQpOiBEZWxldGUuCgkoX2JmZF9uczMya19nZXRfZGlzcGxhY2VtZW50KTogUmV0dXJuIGEgYmZkX3ZtYSwgZG9uJ3QgcGFzcyBpbiBvZmZzZXQuCgkoX2JmZF9uczMya19nZXRfaW1tZWRpYXRlKTogTGlrZXdpc2UuICBBZGQgY29kZSBmb3IgOCBieXRlIHZhbHVlcywKCXJlbW92ZSBjYXNlIDMuCgkoX2JmZF9uczMya19wdXRfZGlzcGxhY2VtZW50KTogQWNjZXB0IGEgYmZkX3ZtYSwgZG9uJ3QgcGFzcyBpbiBvZmZzZXQuCglVc2UgdW5zaWduZWQgY29tcGFyaXNvbnMuCgkoYmZkX25zMzJrX3B1dF9pbW1lZGlhdGUpOiBMaWtld2lzZSwgYW5kIGFkZCBjb2RlIGZvciA4IGJ5dGUgdmFsdWVzLgoJKGRvX25zMzJrX3JlbG9jKTogZ2V0X2RhdGEgYW5kIHB1dF9kYXRhIG9wZXJhdGUgb24gYmZkX3ZtYSdzLgoJKF9iZmRfZG9fbnMzMmtfcmVsb2NfY29udGVudHMpOiBMaWtld2lzZS4KCSogbnMzMmsuaCAoX2JmZF9uczMya19nZXRfZGlzcGxhY2VtZW50KTogVXBkYXRlIHByb3RvdHlwZS4KCShfYmZkX25zMzJrX2dldF9pbW1lZGlhdGUpOiBMaWtld2lzZS4KCShfYmZkX25zMzJrX3B1dF9kaXNwbGFjZW1lbnQpOiBMaWtld2lzZS4KCShfYmZkX25zMzJrX3B1dF9pbW1lZGlhdGUpOiBMaWtld2lzZS4KCShiZmRfcmVsb2Nfc3RhdHVzX3R5cGUpOiBMaWtld2lzZS4KCgkqIGFvdXR4LmggKE5BTUUoYW91dCxmaW5kX25lYXJlc3RfbGluZSkpOiBSZW5hbWUgJ3AnIHRvICdjb2xvbicKCXRvIGF2b2lkIHNoYWRvd2luZy4KCSogcGRwMTEuYyAoTkFNRShhb3V0LGZpbmRfbmVhcmVzdF9saW5lKSk6IExpa2V3aXNlLgoJKiBjb2ZmLWg4MzAwLmMgKGg4MzAwX3JlbG9jMTZfZXh0cmFfY2FzZXMpOiBSZW1vdmUgc2hhZG93aW5nICJ2YWx1ZSIuCgkqIGNvZmYtcHBjLmMgKGVudW0gcmVmX2NhdGVnb3J5KTogUmVuYW1lICJkYXRhIiB0byAidG9jZGF0YSIgdG8KCWF2b2lkIHNoYWRvd2luZy4KCShyZWNvcmRfdG9jKTogVXNlIGEgYmZkX3NpZ25lZF92bWEgZm9yIG91cl90b2Nfb2Zmc2V0LgoJKiBjb2ZmY29kZS5oIChjb2ZmX3dyaXRlX3JlbG9jcyk6IFJlbmFtZSAiaSIgdG8gYXZvaWQgc2hhZG93aW5nLgoJKiBlbGYuYyAoYmZkX2VsZl9nZXRfYmZkX25lZWRlZF9saXN0KTogUmVuYW1lICJsaW5rIiB2YXIgdG8gYXZvaWQKCXNoYWRvdyB3YXJuaW5nLgoJKF9iZmRfZWxmY29yZV9zdHJuZHVwKTogTGlrZXdpc2UgZm9yICJkdXAiLgoJKiBlbGYzMi1jcmlzLmMgKGNyaXNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiAic3ltbmFtZSIgaW5zdGVhZCBvZgoJIm5hbWUiIHRvIGF2b2lkIHNoYWRvd2luZy4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBSZW1vdmUgZHVwbGljYXRlCglkZWZpbml0aW9uIG9mICJvZmYiLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX21vZGlmeV9zZWdtZW50X21hcCk6IFJlbW92ZSBkdXBsaWNhdGUKCWRlZmluaXRpb24gb2YgInMiLgoJKF9iZmRfbWlwc19lbGZfZmluYWxfbGluayk6IFJlbmFtZSAiaSIgdG8gImoiLiAgUmVtb3ZlIGR1cGxpY2F0ZQoJInNlY3BwIi4KCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogUmVuYW1lIGlubmVyICJpbmR4IgoJdG8gYXZvaWQgc2hhZG93aW5nLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFJlbmFtZSAibGluayIgdG8gInNobGluayIKCXRvIGF2b2lkIHNoYWRvd2luZy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBMaWtld2lzZS4KCShlbGZfYmZkX2ZpbmFsX2xpbmspOiBSZW1vdmUgZHVwbGljYXRlIGlubmVybW9zdCAib2ZmIiB2YXIuCgkqIG9hc3lzLmMgKG9hc3lzX3dyaXRlX2RhdGEpOiBSZW5hbWUgaW5uZXJtb3N0ICJwIiB0byAic3ltIi4KCSogcmVsb2MxNi5jIChiZmRfY29mZl9yZWxvYzE2X3JlbGF4X3NlY3Rpb24pOiBSZW5hbWUgImkiIHBhcmFtIHRvCgkiaW5wdXRfc2VjdGlvbiIuCgkqIHNvbS5jIChzb21fcHJlcF9mb3JfZml4dXBzKTogUmVuYW1lIGlubmVyICJpIiB0byAiaiIuCgkqIHN1bm9zLmMgKHN1bm9zX2FkZF9keW5hbWljX3N5bWJvbHMpOiBMb2NhbGlzZSAicyIgdmFyLgoJKHN1bm9zX3dyaXRlX2R5bmFtaWNfc3ltYm9sKTogUmVtb3ZlIHVudXNlZCB2YXJzLgoJKiBzeW1zLmMgKF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lKTogUmVtb3ZlIGR1cGxpY2F0ZQoJaW5uZXJtb3N0ICJkaXJlY3RvcnlfbmFtZSIgYW5kICJmaWxlX25hbWUiIHZhcnMuCgkqIHRla2hleC5jIChmaXJzdF9waGFzZSk6IFJlbmFtZSBsb2NhbCB2YXIgInR5cGUiIHRvICJzdHlwZSIuCgkodGVraGV4X3dyaXRlX29iamVjdF9jb250ZW50cyk6IFJlbmFtZSBpbm5lcm1vc3QgInMiIHRvICJzeW0iLgoJKiB2bXMtZ3NkLmMgKHZtc19zZWNmbGFnX2J5X25hbWUpOiBDaGFuZ2UgInNpemUiIHBhcmFtIHRvICJoYXNzaXplIiwKCWRvaW5nIGNvbXBhcmlzb24gYXQgY2FsbGVyLgoJKHZtc19lc2VjZmxhZ19ieV9uYW1lKTogTGlrZXdpc2UuCgkqIHZtcy10aXIuYyAoZXRpcl9zdG8pOiBSZW5hbWUgaW5uZXJtb3N0ICJwc2VjdCIgdG8gInBzZWN0MSIuCgkqIHhjb2ZmbGluay5jICh4Y29mZl9saW5rX2lucHV0X2JmZCk6IERlbGV0ZSBkdXBsaWNhdGUgaW5uZXJtb3N0ICJvIi4KCSh4Y29mZl93cml0ZV9nbG9iYWxfc3ltYm9sKTogUmVuYW1lICJwIiBwYXJhbSB0byAiaW5mIi4KCgkqIGNpc2NvLWNvcmUuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCShjaXNjb19jb3JlX2ZpbGVfZmFpbGluZ19jb21tYW5kKTogQWRkIEFUVFJJQlVURV9VTlVTRUQuCgkoY2lzY29fY29yZV9maWxlX2ZhaWxpbmdfc2lnbmFsKTogTGlrZXdpc2UuCgkoY2lzY29fY29yZV9maWxlX21hdGNoZXNfZXhlY3V0YWJsZV9wKTogTGlrZXdpc2UuCgkqIGhwdXgtY29yZS5jIChocHV4X2NvcmVfY29yZV9maWxlX2ZhaWxpbmdfc2lnbmFsKTogTGlrZXdpc2UuCgkqIG5ldGJzZC1jb3JlLmMgKG5ldGJzZF9jb3JlX2ZpbGVfbWF0Y2hlc19leGVjdXRhYmxlX3ApOiBMaWtld2lzZS4KCSogb3NmLWNvcmUuYyAob3NmX2NvcmVfY29yZV9maWxlX21hdGNoZXNfZXhlY3V0YWJsZV9wKTogTGlrZXdpc2UuCgkqIHNjbzUtY29yZS5jIChzY281X2NvcmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcCk6IExpa2V3aXNlLgoKCSogY29mZi1hcm0uYyAoY29mZl9hcm1fbGlua19oYXNoX3RhYmxlKTogVXNlIGJmZF9zaXplX3R5cGUgZm9yCgl0aHVtYl9nbHVlX3NpemUgYW5kIGFybV9nbHVlX3NpemUuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbGlua19oYXNoX3RhYmxlKTogTGlrZXdpc2UgaGVyZS4KCgkqIGNvZmY2NC1yczYwMDAuYzogR3JvdXAgcHJvdG90eXBlcyB0b2dldGhlci4KCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FyY2hfbWFjaCk6IEFkZCBBVFRSSUJVVEVfVU5VU0VELgoJKGJ1eV9hbmRfcmVhZCk6IFJlbW92ZSAic2VlayIgcGFyYW0uICBDaGFuZ2UgInNpemUiIHRvIGJmZF9zaXplX3R5cGUuCgoJKiBjcHUtYXJjLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGNwdS1oODUwMC5jOiBMaWtld2lzZS4KCSogY3B1LWk5NjAuYzogTGlrZXdpc2UuCgkqIGNwdS1wai5jOiBMaWtld2lzZS4KCSogY3B1LXNoLmM6IExpa2V3aXNlLgoJKiBjcHUtdzY1LmM6IExpa2V3aXNlLgoJKiBjcHUtejhrLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1oODMwMC5jOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jOiBMaWtld2lzZS4KCSogaHB1eC1jb3JlLmM6IExpa2V3aXNlLgoJKiB2ZXJzYWRvcy5jOiBMaWtld2lzZS4KCgkqIGNwdS1oODMwMC5jIChiZmRfZGVmYXVsdF9zY2FuX251bV9tYWNoKTogRG9uJ3QgZGVjbGFyZS4KCSogY3B1LWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjcHUtaTk2MC5jOiBMaWtld2lzZS4KCSogY3B1LXo4ay5jOiBMaWtld2lzZS4KCgkqIGNwdS1pYTY0LW9wYy5jOiBDb3JyZWN0IGNvbW1lbnQuCgoJKiBkd2FyZjIuYyAoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBSZW1vdmUgdW51c2VkIHZhci4KCgkqIGVsZi1iZmQuaCAoZWxmX3NpemVfaW5mbyk6IENoYW5nZSBjb3VudCBwYXJhbSBvZiB3cml0ZV9vdXRfcGhkcnMKCXRvIHVuc2lnbmVkLgoJKGJmZF9lbGYzMl93cml0ZV9vdXRfcGhkcnMpOiBMaWtld2lzZS4KCShiZmRfZWxmNjRfd3JpdGVfb3V0X3BoZHJzKTogTGlrZXdpc2UuCgkoZWxmX2xpbmtlcl9zZWN0aW9uX3BvaW50ZXJzKTogQ2hhbmdlIGFkZGVuZCB0byBiZmRfdm1hLgoJKF9iZmRfZWxmX2ZpbmRfcG9pbnRlcl9saW5rZXJfc2VjdGlvbik6IExpa2V3aXNlLgoJKF9iZmRfZWxmY29yZV9tYWtlX3BzZXVkb3NlY3Rpb24pOiBDaGFuZ2Ugc2l6ZSBwYXJhbSB0byBzaXplX3QgYW5kCglmaWxlcG9zIHRvIHVuc2lnbmVkIGZpbGVfcHRyLgoJKF9iZmRfZWxmY29yZV9zdHJuZHVwKTogQ2hhbmdlIG1heCBwYXJhbSB0byBzaXplX3QuCgkqIGVsZi5jIChfYmZkX2VsZmNvcmVfbWFrZV9wc2V1ZG9zZWN0aW9uKTogQXMgYWJvdmUuCgkoX2JmZF9lbGZjb3JlX3N0cm5kdXApOiBMaWtld2lzZS4KCShfYmZkX2VsZl9maW5kX3BvaW50ZXJfbGlua2VyX3NlY3Rpb24pOiBMaWtld2lzZS4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBSZXR1cm4gYW4gaW50LCBhbmQgY2hhbmdlCglpbnNuIGFuZCBzeW1fdmFsdWUgdG8gaW50cy4KCgkqIGVsZi5jIChlbGZfcmVhZCk6IE1ha2UgIm9mZnNldCIgcGFyYW0gYSBmaWxlX3B0ciwgInNpemUiIGEKCWJmZF9zaXplX3R5cGUuCgkoZWxmY29yZV9yZWFkX25vdGVzKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBDaGFuZ2Ugc3ltX2ZsYWdzCglwYXJhbSBmcm9tIHVuc2lnbmVkIGNoYXIgdG8gaW50LgoJKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogSWYgVVNFX1JFTCwgY2FzdCAicmVsIiBhcHByb3ByaWF0ZWx5Cglmb3IgaW5mb190b19ob3d0byBjYWxsLgoJKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKGVsZjMyX2FybV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgYWRkX2R5bmFtaWNfZW50cnkuCgoJKiBlbGYzMi1jcmlzLmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKGVsZl9jcmlzX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBhZGRfZHluYW1pY19lbnRyeS4KCgkqIGVsZjMyLWg4MzAwLmMgKGVsZjMyX2g4X2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBNYWtlIHN0YXRpYy4KCShlbGYzMl9oOF9vYmplY3RfcCk6IExpa2V3aXNlLgoJKGVsZjMyX2g4X21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4KCShlbGYzMl9oOF9yZWxheF9zZWN0aW9uKTogQ2FzdCBnYXAgdG8gaW50IHNvIHNpZ25lZCBjb21wYXJpc29ucyB3b3JrLgoKCSogZWxmMzItaHBwYS5jIChhZGRfZHluYW1pY19lbnRyeSk6IERlZmluZSBtYWNyby4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBpdC4KCSogZWxmMzItaTM3MC5jIChhZGRfZHluYW1pY19lbnRyeSk6IERlZmluZSBtYWNyby4KCShpMzcwX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgaXQuCgkoaTM3MF9ub29wKTogTWFrZSBzdGF0aWMuCgkqIGVsZjMyLWkzODYuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBEZWZpbmUgbWFjcm8uCgkoZWxmX2kzODZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIGl0LgoJKiBlbGYzMi1tNjhrLmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKGVsZl9tNjhrX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBpdC4KCSogZWxmMzItcHBjLmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKHBwY19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIGl0LgoJKiBlbGYzMi1zMzkwLmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKGVsZl9zMzkwX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBpdC4KCSogZWxmNjQtYWxwaGEuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBEZWZpbmUgbWFjcm8uCgkoZWxmNjRfYWxwaGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIGl0LgoJKiBlbGY2NC1ocHBhLmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKGVsZjY0X2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIGl0LgoJKiBlbGY2NC1wcGMuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBEZWZpbmUgbWFjcm8uCgkocHBjNjRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBpdC4KCSogZWxmNjQtczM5MC5jIChhZGRfZHluYW1pY19lbnRyeSk6IERlZmluZSBtYWNyby4KCShlbGZfczM5MF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgaXQuCgkqIGVsZjY0LXNwYXJjLmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKHNwYXJjNjRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBpdC4KCSogZWxmNjQteDg2LTY0LmMgKGFkZF9keW5hbWljX2VudHJ5KTogRGVmaW5lIG1hY3JvLgoJKGVsZjY0X3g4Nl82NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgaXQuCgkqIGVsZnh4LWlhNjQuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBEZWZpbmUgbWFjcm8uCgkoZWxmTk5faWE2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgaXQuCgoJKiBlbGYzMi12ODUwLmMgKFNFWFQyNCk6IE1vZGlmeSB0byBhdm9pZCBzaWduZWQvdW5zaWduZWQgd2FybmluZy4KCSh2ODUwX2VsZl9wZXJmb3JtX3JlbG9jYXRpb24pOiBNYWtlICJyX3R5cGUiIHBhcmFtIHVuc2lnbmVkLgoKCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X3NsdXJwX29uZV9yZWxvY190YWJsZSk6IEp1c3QgcmV0dXJuCglmYWxzZSBpZiB0aGUgZmlyc3QgbWFsbG9jIGZhaWxzIHJhdGhlciB0aGFuIGdvaW5nIHZpYSBlcnJvcl9yZXR1cm4uCgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9wbHRfZW50cnlfb2Zmc2V0KTogVXNlIGEgYmZkX3ZtYSBmb3IKCSJpbmRleCIgcGFyYW0uCgkoc3BhcmM2NF9lbGZfcGx0X3B0cl9vZmZzZXQpOiBMaWtld2lzZSwgYW5kIGZvciAibWF4IiBwYXJhbSB0b28uCgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lucHV0X2JmZCk6IHMvaW5nb3JlZC9pZ25vcmVkLyBpbiBlcnJvciBtZXNzYWdlLgoKCSogZWxmeHgtaWE2NC5jIChnbG9iYWxfc3ltX2luZGV4KTogUmV0dXJuIGEgbG9uZy4KCgkqIGllZWUuYyAoZ2V0X3N5bWJvbCk6IFVzZSBpbnQgcmF0aGVyIHRoYW4gY2hhciBwYXJhbS4KCShpZWVlX3NsdXJwX3NlY3Rpb25zKTogTW92ZSAic2VjdGlvbiIgdmFyIHRvIGlubmVyIGJsb2Nrcy4KCShjb3B5X2V4cHJlc3Npb24pOiBEb24ndCBpbml0ICJ2YWx1ZSIgdG8gemVybyBvciB3b3JyeSBhYm91dAoJY2xlYXJpbmcgdG8gemVybyBhZnRlciB1c2luZy4KCShpZWVlX3dyaXRlX2RlYnVnX3BhcnQpOiBSZW5hbWUgIm91dHB1dF9idWZmZXIiIHRvICJvYnVmZiIgdG8gYXZvaWQKCXNoYWRvd2luZy4KCgkqIGloZXguYyAoaWhleF93cml0ZV9yZWNvcmQpOiBNYWtlICJjb3VudCIgdmFyIGEgc2l6ZV90LCAiYWRkciIgYW4KCXVuc2lnbmVkIGludC4KCgkqIGxpYmJmZC1pbi5oIChCRkRfQUxJR04pOiBBZGQgY2FzdCB0byBhdm9pZCBzaWduZWQvdW5zaWduZWQgd2FybmluZy4KCShiZmRfd3JpdGVfYmlnZW5kaWFuXzRieXRlX2ludCk6IFBhc3MgYW4gdW5zaWduZWQgaW50IHZhbHVlIHBhcmFtLgoKCSogbWlwc2JzZC5jIChtaXBzX2ZpeF9qbXBfYWRkcik6IEFkZCAiZXJyb3JfbWVzc2FnZSIgcGFyYW0uCgoJKiBwYzUzMi1tYWNoLmMgKE1ZTlNYKTogRGVsZXRlLgoJKG5zMzJrYW91dF9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBEZWZpbmUgcHJvdG90eXBlIHdpdGhvdXQgTVlOU1guCgkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogQ29ycmVjdCBwcm90b3R5cGUuCgoJKiBwZWljb2RlLmggKHBlX0lMRl9idWlsZF9hX2JmZCk6IFVzZSBhbiB1bnNpZ25lZCBpbnQgcGFyYW0gcmF0aGVyCgl0aGFuIHVuc2lnbmVkIHNob3J0LgoKCSogc2VjdGlvbi5jIChiZmRfc2V0X3NlY3Rpb25fY29udGVudHMpOiBSZW1vdmUgcmVkdW5kYW50Cgkib2Zmc2V0IDwgMCIgdGVzdC4gIENoZWNrIHRoYXQgImNvdW50IiBkb2Vzbid0IG92ZXJmbG93IHNpemVfdC4KCShiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBMaWtld2lzZS4KCgkqIHNvbS5jIChzb21fZml4dXBfZm9ybWF0cyk6IEFkZCBtaXNzaW5nIGJyYWNlcy4KCShzb21fcmVsb2NfYWRkZW5kKTogUGFzcyBhIGJmZF92bWEgZm9yICJhZGRlbmQiLgoKCSogc3JlYy5jIChzcmVjX3dyaXRlX3JlY29yZCk6IFBhc3MgInR5cGUiIGFzIGFuIHVuc2lnbmVkIGludC4KCShzcmVjX3dyaXRlX3N5bWJvbHMpOiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgdmFyLgoKCSogdGFyZ2V0cy5jIChfYmZkX3RhcmdldF92ZWN0b3IpOiBTb3J0IGVudHJpZXMuICBTb3J0IGV4dGVybnMKCXRvIG1hdGNoLgoJKiBjb25maWd1cmUuaW46IFNvcnQgdG8gbWF0Y2guICBCdW1wIHZlcnNpb24gbnVtYmVyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiB0ZWtoZXguYyAobW92ZV9zZWN0aW9uX2NvbnRlbnRzKTogQXNzZXJ0IG9mZnNldCA9PSAwLgoKCSogdmVyc2Fkb3MuYyAobmV3X3N5bWJvbF9zdHJpbmcpOiBDb25zdGlmeSBhcmcuCgkocHJvY2Vzc19lc2QpOiBVc2UgYmZkX3VuZF9zZWN0aW9uX3B0ciByYXRoZXIgdGhhbiAmYmZkX3VuZF9zZWN0aW9uLgoJKHZlcnNhZG9zX2dldF9zeW1ib2xfaW5mbyk6IE1ha2Ugc3RhdGljLgoJKHZlcnNhZG9zX3ByaW50X3N5bWJvbCk6IExpa2V3aXNlLgoJKHZlcnNhZG9zX2dldF9yZWxvY191cHBlcl9ib3VuZCk6IExpa2V3aXNlLgoJKHZlcnNhZG9zX2Nhbm9uaWNhbGl6ZV9yZWxvYyk6IExpa2V3aXNlLgoKMjAwMS0wOS0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lucHV0X2JmZCk6IEZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UuCgoyMDAxLTA5LTE3ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBkd2FyZjEuYyAocGFyc2VfZGllKTogVGFrZSBhIG5ldyBhcmcgZm9yIHRoZSBlbmQgb2YgdGhlCglzZWN0aW9uLiBSZXR1cm4gZmFsc2UgaWYgZGllIGlzIGJleW9uZCB0aGUgc2VjdGlvbi4KCShwYXJzZV9mdW5jdGlvbnNfaW5fdW5pdCk6IFBhc3MgdGhlIGVuZCBvZiB0aGUgc2VjdGlvbiB0bwoJcGFyc2VfZGllICgpLgoJKF9iZmRfZHdhcmYxX2ZpbmRfbmVhcmVzdF9saW5lKTogTGlrZXdpc2UuCgoyMDAxLTA5LTE0ICBNaWNoYWVsIFJhdWNoIDxtcmF1Y2hAbmV0YnNkLm9yZz4KCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBUcmVhdCBSX1NQQVJDX1VBMzIKCWp1c3QgbGlrZSBSX1NQQVJDXzMyLgoKMjAwMS0wOS0xNCAgS2V2aW4gTG8gPGtldmxvQG9wZW5ic2Qub3JnPgoKCSogY29uZmlndXJlLmJmZDogQWRkIGFybS1vcGVuYnNkIHRhcmdldC4KCjIwMDEtMDktMTQgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBjb25maWcuYmZkOiBDaGFuZ2UgbWFjaGluZSB0cmlwbGV0cyBmcm9tIG1pcHMqZWwqLSogdG8gbWlwcyplbC0qLgoJQWRkIHN1cHBvcnQgZm9yIG1pcHM2NC4KCjIwMDEtMDktMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItb3BlbnJpc2MuYyAoRUxGX01BQ0hJTkVfQUxUMSk6IERlZmluZSBhcyBFTV9PUEVOUklTQ19PTEQuCgoyMDAxLTA5LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBHZXQgdGhlIG1hY2hpbmUgY29kZSBmcm9tIHRoZSBlbGYKCWJhY2tlbmQgZGF0YS4KCSogZWxmLW0xMDIwMC5jIChFTEZfTUFDSElORV9DT0RFKTogUmVkZWZpbmUgdG8gRU1fTU4xMDIwMC4KCShFTEZfTUFDSElORV9BTFQxKTogRGVmaW5lIHRvIEVNX0NZR05VU19NTjEwMjAwLgoJKiBlbGYtbTEwMzAwLmMgKEVMRl9NQUNISU5FX0NPREUpOiBSZWRlZmluZSB0byBFTV9NTjEwMzAwLgoJKEVMRl9NQUNISU5FX0FMVDEpOiBEZWZpbmUgdG8gRU1fQ1lHTlVTX01OMTAzMDAuCgkqIGVsZi1hcmMuYyAoYXJjX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogRG9uJ3Qgb3ZlcnJpZGUKCWVfbWFjaGluZSwgaXQncyBub3cgcHJvcGVybHkgc2V0IGluIHByZXBfaGVhZGVycy4KCSogZWxmMzItYXZyLmMgKGVsZjMyX2F2cl9vYmplY3RfcCk6IEFjY2VwdCBib3RoIEVNX0FWUiBhbmQKCUVNX0FWUl9PTEQuCgkoRUxGX01BQ0hJTkVfQUxUMSk6IERlZmluZSB0byBFTV9BVlJfT0xELgoJKiBlbGYtZDEwdi5jIChFTEZfTUFDSElORV9DT0RFKTogUmVkZWZpbmUgdG8gRU1fRDEwVi4KCShFTEZfTUFDSElORV9BTFQxKTogRGVmaW5lIHRvIEVNX0NZR05VU19EMTBWLgoJKiBlbGYtZDMwdi5jIChFTEZfTUFDSElORV9DT0RFKTogUmVkZWZpbmUgdG8gRU1fRDMwVi4KCShFTEZfTUFDSElORV9BTFQxKTogRGVmaW5lIHRvIEVNX0NZR05VU19EMzBWLgoJKiBlbGYtZnIzMC5jIChFTEZfTUFDSElORV9DT0RFKTogUmVkZWZpbmUgdG8gRU1fRlIzMC4KCShFTEZfTUFDSElORV9BTFQxKTogRGVmaW5lIHRvIEVNX0NZR05VU19GUjMwLgoJKiBlbGYtbTMyci5jIChFTEZfTUFDSElORV9DT0RFKTogUmVkZWZpbmUgdG8gRU1fTTMyUi4KCShFTEZfTUFDSElORV9BTFQxKTogRGVmaW5lIHRvIEVNX0NZR05VU19NMzJSLgoJKiBlbGYzMi1wai5jIChFTEZfTUFDSElORV9BTFQxKTogREVmaW5lIHRvIEVNX1BKX09MRC4KCSogZWxmLXY4NTAuYyAoRUxGX01BQ0hJTkVfQ09ERSk6IFJlZGVmaW5lIHRvIEVNX1Y4NTAuCgkoRUxGX01BQ0hJTkVfQUxUMSk6IERlZmluZSB0byBFTV9DWUdOVVNfVjg1MC4KCjIwMDEtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9zZWN0aW9uX2ZsYWdzKTogTmV3LgoJKGVsZjY0X2FscGhhX2Zha2Vfc2VjdGlvbnMpOiBNYXAgU0VDX1NNQUxMX0RBVEEgdG8gU0hGX0FMUEhBX0dQUkVMLgoKMjAwMS0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBEbyBub3QKCWFwcGx5IEhJTlQgcmVsb2NhdGlvbnMgYWdhaW5zdCBkeW5hbWljIHN5bWJvbHMuCgoyMDAxLTA5LTExICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBsaW5rZXIuYyAobGlua19hY3Rpb24pOiBDaGFuZ2UgQ09NTU9OX1JPV1xkZWZ3IGZyb20gQ1JFRiB0byBDT00uCgoyMDAxLTA5LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmNjQtYWxwaGEuYzogRGVsZXRlIGFsbCB1bnVzZWQgRVJJQ19uZXZlcmRlZiBhbmQgcnRoX25vdGRlZiBjb2RlLgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsYXhfd2l0aF9saXR1c2UpOiBOb3Agb3V0IGdwZGlzcAoJZm9sbG93aW5nIGEgY2FsbCB0byBhIG5lYXIgZnVuY3Rpb24uCgoyMDAxLTA5LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IFNvZnQgZmFpbAoJcmVsb2NhdGlvbiBlcnJvcnMuICBGYWlsIGdwLXJlbGF0aXZlIHJlbG9jYXRpb25zIGFnYWluc3QKCWR5bmFtaWMgc3ltYm9scy4KCjIwMDEtMDktMDggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBDaGVjayAhREVGX1JFR1VMQVIKCWFzIHdlbGwgYXMgREVGX0RZTkFNSUMgaW4gdGVzdCBmb3IgYXZvaWRlZCBjb3B5IHJlbG9jcy4KCShhbGxvY2F0ZV9wbHRfYW5kX2dvdF9hbmRfZGlzY2FyZF9yZWxvY3MpOiBMaWtld2lzZS4KCSogZWxmMzItaHBwYS5jIChlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzKTogTGlrZXdpc2UuCgoyMDAxLTA5LTA3ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEZpeCBvdmVyZmxvdyBoYW5kbGluZwoJb2YgUl9NSVBTX1BDMTYuCgoyMDAxLTA5LTA2ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X2hvd3RvX3RhYmxlX3JlbCk6IEZpeCByZWxvY2F0aW9uIEhPV1RPCglkZWZpbml0aW9ucy4KCShtaXBzX2VsZjY0X2hvd3RvX3RhYmxlX3JlbCk6IExpa2V3aXNlLgoKMjAwMS0wOS0wNSAgVG9tIFJpeCA8dHJpeEByZWRoYXQuY29tPgoKCSogeGNvZmZsaW5rLmMgKGJmZF94Y29mZl9pbXBvcnRfc3ltYm9sKTogSGFuZGxlIGltcG9ydCBmaWxlIFhNQ19YTwoJYW5kIHN5c2NhbGwgc3ltYm9scy4KCSh3cml0ZV9nbG9iYWxfc3ltYm9sKSA6IFNhbWUuCgkoYmZkX3hjb2ZmX2V4cG9ydF9zeW1ib2wpOiBSZW1vdmUgdW51c2VkIHN5c2NhbGwgcGFyYW0uCgkqIGxpYnhjb2ZmLmg6IENoYW5nZSBwcm90b3R5cGUgb2YgYmZkX3hjb2ZmX2V4cG9ydCBzeW1ib2wgYW5kCgliZmRfeGNvZmZfaW1wb3J0X3N5bWJvbC4KCSogYmZkLWluLmg6IFNhbWUuCgkqIGJmZC1pbjIuaCA6IFJlZ2VuZXJhdGUuCgoyMDAxLTA5LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoU0tJUF9IT1dUTyk6IE5ldy4KCShlbGY2NF9hbHBoYV9ob3d0b190YWJsZSk6IFVzZSBpdCB0byByZW1vdmUgZGVhZCBFQ09GRiByZWxvY3MuCglGaXggc2l6ZXMgb2YgMTYtYml0IG1lbSBmb3JtYXQgcmVsb2NzLgoJKGVsZjY0X2FscGhhX3JlbG9jX21hcCk6IFVwZGF0ZSB0byBtYXRjaC4KCShlbGY2NF9hbHBoYV9yZWxheF93aXRoX2xpdHVzZSk6IFVzZSBHUFJFTDE2IGFzIGFwcHJvcHJpYXRlLgoJKGVsZjY0X2FscGhhX3JlbGF4X3dpdGhvdXRfbGl0dXNlKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfY2hlY2tfcmVsb2NzKTogSGFuZGxlIEdQUkVMMTYuCgkoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfQUxQSEFfVVNFUl8qKTogUmVtb3ZlLgoJKEJGRF9SRUxPQ19BTFBIQV9HUFJFTF9ISTE2LCBCRkRfUkVMT0NfQUxQSEFfR1BSRUxfTE8xNik6IE5ldy4KCSogYmZkLWluMi5oLCBsaWJiZmQuaDogUmVidWlsZC4KCjIwMDEtMDktMDQgIEplZmYgTGF3IDxsYXdAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLWg4MzAwLmMgKGVsZjMyX2g4X3JlbGF4X3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaDhfcmVsYXhfZGVsZXRlX2J5dGVzKTogTGlrZXdpc2UuCgkoZWxmMzJfaDhfc3ltYm9sX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKGVsZjMyX2g4X2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyk6IExpa2V3aXNlLgoJKGJmZF9lbGYzMl9iZmRfcmVsYXhfc2VjdGlvbik6IERlZmluZS4KCShiZmRfZWxmMzJfYmZkX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyk6IExpa2V3aXNlLgoKCSogZWxmMzItaDgzMDAuYyAoc3BlY2lhbCk6IE5ldyBmdW5jdGlvbi4KCShoOF9lbGZfaG93dG9fdGFibGUpOiBVc2UgaXQgZm9yIFNQRUNJQUxfRlVOQ1RJT04gZmllbGQgaW4KCWFsbCByZWxvY2F0aW9ucy4KCShlbGYzMl9oOF9maW5hbF9saW5rX3JlbG9jYXRlKTogVHJlYXQgUl9IOF9ESVIyNEE4IGxpa2UgMzJiaXQKCXJlbG9jYXRpb25zLiAgRml4IHByb2JsZW1zIHdpdGggdGhlIHRydWUgMjRiaXQgcmVsb2MgUl9IOF9ESVIyNFI4LgoJRml4IG1pbm9yIHByb2JsZW1zIHdpdGggOGJpdCBhbmQgMTZiaXQgUEMgcmVsYXRpdmUgcmVsb2NhdGlvbnMuCgoyMDAxLTA5LTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB2bXMtdGlyLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIHZtcy1oZHIuYzogTGlrZXdpc2UuCgkqIHZtcy1nc2QuYzogTGlrZXdpc2UuCgkqIHZtcy1taXNjLmM6IExpa2V3aXNlLgoKMjAwMS0wOC0zMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2NoZWNrX3JlbG9jcyk6IFJlcG9ydCBmaWxlbmFtZQoJd2l0aCBiYWQgcmVsb2NhdGlvbi4KCjIwMDEtMDgtMzEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoJICAgIEphc29uIEVja2hhcmR0ICA8amxlQHJlZGhhdC5jb20+CgoJKiBiZmQvYXJjaHVyZXMuYzogQWRkIG1pcHNpc2EzMiBhbmQgbWlwc2lzYTY0LiBSZW1vdmUgbWlwczMyLAoJbWlwczMyXzRrIGFuZCBtaXBzNjQuCgkqIGJmZC9hb3V0eC5oOiBSZW1vdmUgYmZkX21hY2hfbWlwczMyLCBiZmRfbWFjaF9taXBzMzJfNGssCgliZmRfbWFjaF9taXBzNjQuICBBZGQgYmZkX21hY2hfbWlwc2lzYTMyLCBiZmRfbWFjaF9taXBzaXNhNjQuCgkqIGJmZC9jcHUtbWlwcy5jOiBEaXR0by4KCSogYmZkL2VsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogRGl0dG8uCgkqIGJmZC9iZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAxLTA4LTMxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBEdXBsaWNhdGUgbWVtb3J5Cgl2YWx1ZSBpbnRvIFJfQUxQSEFfUkVMQVRJVkUncyBhZGRlbmQuCgkoZWxmNjRfYWxwaGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgoyMDAxLTA4LTMxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IERvIG5vdCByaWdodHNoaWZ0CglyZWNvbXB1dGVkIGFkZGVuZCBkdXJpbmcgcmVsb2NhdGFibGUgbGluayBpZiBub3QgVVNFX1JFTC4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX3Byb3BhZ2F0ZV92dGFibGVfZW50cmllc191c2VkKTogRml4IG9mZi1ieS1vbmUKCWVycm9yLgoKMjAwMS0wOC0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IFJldmVydCB0aGUgbGFzdAoJMiBjaGFuZ2VzLgoJKF9iZmRfbWlwc19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogQWxsb2NhdGUgZHluYW1pYwoJcmVsb2NhdGlvbnMgZm9yIHdlYWsgZGVmaW5pdGlvbnMuCgoyMDAxLTA4LTMwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFMpOiBBZGQgZWxmMzItaDgzMDAubG8uCgkoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGVsZjMyLWg4MzAwLmMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKMjAwMS0wOC0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IERvbid0IGNyZWF0ZQoJZHluYW1pYyByZWxvY2F0aW9uIGZvciB1bmRlZmluZWQgd2VhayBzeW1ib2xzIHdoZW4gY3JlYXRpbmcKCWV4ZWN1dGFibGVzLiBDaGVjayBoLT5yb290LnJvb3QudHlwZSwgaW5zdGVhZCBvZiBoLT5yb290LnR5cGUuCgoyMDAxLTA4LTI5ICBKb2VsIFNoZXJyaWxsIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnLmJmZCAoaVszNDU2XTg2LSotcnRlbXMqLCBtNjgqLSotcnRlbXMqKTogQ2hhbmdlCglkZWZhdWx0IGZyb20gY29mZiB0byBlbGYuCgoyMDAxLTA4LTI5ICBKZWZmIExhdyA8bGF3QHJlZGhhdC5jb20+CgoJKiBlbGYzMi1oODMwMC5jIChoOF9lbGZfaG93dG9fdGFibGUpOiBBZGQgbmV3IFBDIHJlbGF0aXZlCglyZWxvY2F0aW9ucy4KCShoOF9yZWxvY19tYXApOiBTaW1pbGFybHkuCgkoZWxmMzJfaDhfZmluYWxfbGlua19yZWxvY2F0ZSk6IFJlbW92ZSBpbmNvcnJlY3Qgb3ZlcmZsb3cgdGVzdHMuCglBZGQgc3VwcG9ydCBmb3IgUEMgcmVsYXRpdmUgcmVsb2NhdGlvbnMuCgoJKiBlbGYzMi1oODMwMC5jOiBQdXQgYWxsIHByb3RvdHlwZXMgdG9nZXRoZXIuCgkoZWxmMzJfaDhfaW5mb190b19ob3d0byk6IFBhcmFtZXRlciBlbGZfcmVsb2MgaXMgdXNlZC4KCShlbGYzMl9oOF9maW5hbF9saW5rX3JlbG9jYXRlKTogTmV3IGZ1bmN0aW9uIGZvciBsaW5rZXIuCgkoZWxmMzJfaDhfcmVsb2NhdGVfc2VjdGlvbik6IFNpbWlsYXJseS4KCShlbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9uKTogRGVmaW5lLgoKCSogY3B1LWg4MzAwLmMgKGg4MzAwX3NjYW4sIGNvbXBhdGlibGUpOiBQcm90b3R5cGUuCgkoaDgzMDBfc2Nhbik6IEhhbmRsZSBhcmNoaXRlY3R1cmU6bWFjaGluZSBlbmNvZGluZ3MgdHlwaWNhbGx5Cglmb3VuZCBpbiBsaW5rZXIgc2NyaXB0cy4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IERvIG5vdCB0cnkgdG8gZG8gSDggbWFjaGluZSByZWNvZ25pdGlvbgoJaGVyZS4KCSogZWxmMzItaDgzMDAuYzogIEFkZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCShlbGYzMl9oOF9tYWNoLCBlbGYzMl9oOF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTmV3IGZ1bmN0aW9ucy4KCShlbGYzMl9oOF9vYmplY3RfcCk6IFNpbWlsYXJseS4KCjIwMDEtMDgtMjkgIFRvbSBSaXggPHRyaXhAcmVkaGF0LmNvbT4KCgkqIHhjb2ZmbGluay5jICh4Y29mZl9saW5rX2FkZF9zeW1ib2xzKTogIEZpeCBYVFlfTEQgc3ltYm9sIHRoYXQKCWRvZXMgbm90IGZvbGxvdyBhIFhUWV9TRC4KCjIwMDEtMDgtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiB0YXJnbWF0Y2guc2VkOiBEZWxldGUgY2FzZSBzdGF0ZW1lbnRzLgoJKiBjb25maWcuYmZkIDxwb3dlcnBjLSotYWl4KiBlbnRyeT46IFNlbGVjdCA2NCBiaXQgeGNvZmYgZm9yCglhaXg0LjMgYW5kIGFib3ZlLgoKMjAwMS0wOC0yOSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmFtIChlbGYzMi1oODMwMC5sbyk6IE5ldyB0YXJnZXQuCgkqIGNvbmZpZy5iZmQgKGg4MzAwKi0qLWVsZik6IE5ldyBjYXNlLgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGYzMl9oODMwMF92ZWMpOiBOZXcgY2FzZS4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEFkZCBjYXNlIGZvciBiZmRfYXJjaF9oODMwMC4KCSogcmVsb2MuYyAoQkZEX1JFTE9DX0g4X0RJUjE2QTgpOiBOZXcgcmVsb2NhdGlvbi4KCShCRkRfUkVMT0NfSDhfRElSMTZSOCwgQkZEX1JFTE9DX0g4X0RJUjI0QTgpOiBMaWtld2lzZS4KCShCRkRfUkVMT0NfSDhfRElSMjRSOCwgQkZEX1JFTE9DX0g4X0RJUjMyQTE2KTogTGlrZXdpc2UuCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldCBiZmRfZWxmMzJfaDgzMDBfdmVjKTogTmV3IGV4dGVybiBkZWNsYXJhdGlvbi4KCSogZWxmMzItaDgzMDAuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluLCBiZmQtaW4yLmgsIGxpYmJmZC5oLCBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wOC0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBzcGFyY2x5bnguYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogY29mZi1tY29yZS5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1wai5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBubG0zMi1zcGFyYy5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBvYXN5cy5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBwZHAxMS5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBwZS1taXBzLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIHJpc2NpeC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoKMjAwMS0wOC0yNyAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBlbGYzMi1pMzg2LmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGVsZjMyLXBwYy5jOiBMaWtld2lzZS4KCSogZWxmMzItc2gtbGluLmM6IExpa2V3aXNlLgoJKiBlbGZhcm0tbmFiaS5jOiBMaWtld2lzZS4KCjIwMDEtMDgtMjcgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9ncm9rX3Byc3RhdHVzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9pMzg2X2dyb2tfcHNpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8pOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfZ3Jva19wcnN0YXR1cyk6IE5ldyBmdW5jdGlvbi4KCShwcGNfZWxmX2dyb2tfcHNpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8pOiBMaWtld2lzZS4KCSogZWxmMzItc2gtbGluLmMgKGVsZjMyX3NobGluX2dyb2tfcHJzdGF0dXMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfc2hsaW5fZ3Jva19wc2luZm8pOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ3Jva19wcnN0YXR1cyk6IERlZmluZS4KCShlbGZfYmFja2VuZF9ncm9rX3BzaW5mbyk6IExpa2V3aXNlLgoJKiBlbGZhcm0tbmFiaS5jIChlbGYzMl9hcm1fbmFiaV9ncm9rX3Byc3RhdHVzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2FybV9uYWJpX2dyb2tfcHNpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8pOiBMaWtld2lzZS4KCjIwMDEtMDgtMjcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY3JlYXRlX2R5bmFtaWNfcmVsb2NhdGlvbik6IEFkZCBtb3JlCglzYW5pdHkgY2hlY2suCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBDcmVhdGUgZHluYW1pYyByZWxvY2F0aW9uIGZvcgoJc3ltYm9scyB3aXRoIHdlYWsgZGVmaW5pdGlvbiBvciB0aGUgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUgoJYml0IGlzIG5vdCBzZXQuCgoyMDAxLTA4LTI3ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfaGlkZV9zeW1ib2wpOiBBZGQgcHJvdG90eXBlLgoJKF9iZmRfbWlwc19lbGZfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBMaWtld2lzZS4KCShfYmZkX2VsZjMyX21pcHNfZ3Jva19wcnN0YXR1cyk6IExpa2V3aXNlLgoJKF9iZmRfZWxmMzJfbWlwc19ncm9rX3BzaW5mbyk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfaGlkZV9zeW1ib2wpOiBNYWtlIGl0IHN0YXRpYyBhbmQgY2FzdCB0bwoJYHN0cnVjdCBtaXBzX2VsZl9saW5rX2hhc2hfZW50cnkgKicuCgkoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE1ha2UgaXQgc3RhdGljLgoKMjAwMS0wOC0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBtaXBzYnNkLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGhwMzAwaHB1eC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBpMzg2YW91dC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBpMzg2bHlueC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBpMzg2bWFjaDMuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogaTM4Nm1zZG9zLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGkzODZvczlrLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgoyMDAxLTA4LTI3ICBMaW51cyBOb3JkYmVyZyAgPGxpbnVzQHN3b3guc2U+CgkgICAgVG9yYmpvcm4gR3Jhbmx1bmQgIDx0ZWdlQHN3b3guY29tPgoJICAgIFN0YWZmYW4gVWxmYmVyZyAgPHN0YWZmYW51QHN3b3guc2U+CgkgICAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBwb3dlcnBjNjQgdGFyZ2V0LiAgQWRkIHBvd2VycGM2NCB2ZWN0b3JzIHRvCgl0YXJnNjRfc2VsdmVjcyBmb3IgMzIgYml0IHBvd2VycGMgdGFyZ2V0cy4KCSogTWFrZWZpbGUuYW0gKEJGRDY0X0JBQ0tFTkRTKTogQWRkIGVsZjY0LXBwYy5sby4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmNjQtcHBjLmMuCglSdW4gIm1ha2UgZGVwLWFtIi4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGVsZjY0X3Bvd2VycGMgdmVjcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjcHUtcG93ZXJwYy5jOiBEZWZhdWx0IHRvIGJmZF9tYWNoX3BwY182MjAgZW50cnkgZm9yIDY0IGJpdC4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEVNX1BQQzY0IGZvciA2NCBiaXQgcHBjIGVsZiB0YXJnZXQuCgkqIHRhcmdldHMuYzogQWRkIGJmZF9lbGY2NF9wb3dlcnBjX3ZlYyBhbmQgYmZkX2VsZjY0X3Bvd2VycGNsZV92ZWMuCgkqIGVsZjY0LXBwYy5jOiBOZXcgZmlsZS4KCSogcmVsb2MuYzogQWRkIHBvd2VycGM2NCByZWxvY3MuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAxLTA4LTI3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZWxmMzItbTY4ay5jIChlbGYzMl9tNjhrX2NoZWNrX3JlbG9jcyk6IFNldCBERl9URVhUUkVMIGlmIHRoZQoJcmVsb2MgaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShlbGYzMl9tNjhrX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBERl9URVhUUkVMIGZsYWcgaW5zdGVhZCBvZgoJbG9va2luZyB1cCBzZWN0aW9uIG5hbWVzIGZvciBEVF9URVhUUkVMLgoJKGVsZjMyX202OGtfcmVsb2NfdHlwZV9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9yZWxvY190eXBlX2NsYXNzKTogRGVmaW5lLgoKMjAwMS0wOC0yNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQtczM5MC5jIChlbGZfczM5MF9jaGVja19yZWxvY3MpOiBTZXQgREZfVEVYVFJFTCBpZiB0aGUKCXJlbG9jIGlzIGFnYWluc3QgcmVhZC1vbmx5IHNlY3Rpb24uCgkoZWxmX3MzOTBfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIERGX1RFWFRSRUwgZmxhZyBpbnN0ZWFkIG9mCglsb29raW5nIHVwIHNlY3Rpb24gbmFtZXMgZm9yIERUX1RFWFRSRUwuCgkoZWxmX3MzOTBfcmVsb2NfdHlwZV9jbGFzcyk6IE5ldy4KCShlbGZfYmFja2VuZF9yZWxvY190eXBlX2NsYXNzKTogRGVmaW5lLgoKCSogZWxmMzItczM5MC5jIChlbGZfczM5MF9jaGVja19yZWxvY3MpOiBTZXQgREZfVEVYVFJFTCBpZiB0aGUKCXJlbG9jIGlzIGFnYWluc3QgcmVhZC1vbmx5IHNlY3Rpb24uCgkoZWxmX3MzOTBfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIERGX1RFWFRSRUwgZmxhZyBpbnN0ZWFkIG9mCglsb29raW5nIHVwIHNlY3Rpb24gbmFtZXMgZm9yIERUX1RFWFRSRUwuCgkoZWxmX3MzOTBfcmVsb2NfdHlwZV9jbGFzcyk6IE5ldy4KCShlbGZfYmFja2VuZF9yZWxvY190eXBlX2NsYXNzKTogRGVmaW5lLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfY2hlY2tfcmVsb2NzKTogU2V0IERGX1RFWFRSRUwgaWYgdGhlIHJlbG9jCglpcyBhZ2FpbnN0IHJlYWQtb25seSBzZWN0aW9uLgoJKHBwY19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIERGX1RFWFRSRUwgZmxhZyBpbnN0ZWFkIG9mCglsb29raW5nIHVwIHNlY3Rpb24gbmFtZXMgZm9yIERUX1RFWFRSRUwuCgkocHBjX2VsZl9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgoyMDAxLTA4LTI2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGYzMi1jcmlzLmMgKGNyaXNfZWxmX2NoZWNrX3JlbG9jcyk6IFNldCBERl9URVhUUkVMIGlmIHRoZQoJcmVsb2MgaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShlbGZfY3Jpc19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgREZfVEVYVFJFTCBmbGFnIGluc3RlYWQgb2YKCWxvb2tpbmcgdXAgc2VjdGlvbiBuYW1lcyBmb3IgRFRfVEVYVFJFTC4KCShlbGZfY3Jpc19yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfY2hlY2tfcmVsb2NzKTogU2V0IERGX1RFWFRSRUwgaWYgdGhlIHJlbG9jIGlzCglhZ2FpbnN0IHJlYWQtb25seSBzZWN0aW9uLgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgkoc2hfZWxmX3JlbG9jX3R5cGVfY2xhc3MpOiBOZXcuCgkoc2hfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBERl9URVhUUkVMIGZsYWcgaW5zdGVhZCBvZgoJbG9va2luZyB1cCBzZWN0aW9uIG5hbWVzIGZvciBEVF9URVhUUkVMLgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9jaGVja19yZWxvY3MpOiBTZXQgREZfVEVYVFJFTCBpZiB0aGUKCXJlbG9jIGlzIGFnYWluc3QgcmVhZC1vbmx5IHNlY3Rpb24uCgkoZWxmMzJfYXJtX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBERl9URVhUUkVMIGZsYWcgaW5zdGVhZCBvZgoJbG9va2luZyB1cCBzZWN0aW9uIG5hbWVzIGZvciBEVF9URVhUUkVMLgoJKGVsZjMyX2FybV9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgoyMDAxLTA4LTI1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBvYXN5cy5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQWRkIHVudXNlZAoJYXR0cmlidXRlIGZvciBwYXJhbWV0ZXIuCgkqIGVsZi5jIChfYmZkX2VsZl9yZWxvY190eXBlX2NsYXNzKTogTGlrZXdpc2UuCgoJKiB2ZXJzYWRvcy5jIChnZXRfNCk6IE1ha2Ugc3RhdGljLgoJKGdldF8xMCk6IE1ha2Ugc3RhdGljLgoJQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCShwcm9jZXNzX2VzZCk6IEZpeCBjYWxsIHRvIHZlcnNhZG9zX25ld19zeW1ib2wuCgoyMDAxLTA4LTI1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGNvZmYtYTI5ay5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBjb2ZmLWFwb2xsby5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBjb2ZmLWFybS5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBjb2ZmLWk4NjAuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogY29mZi1yczYwMDAuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogY29mZi10aWM4MC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYtbTEwMjAwLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGVsZi1tMTAzMDAuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogZWxmMzItYXJtLmg6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGVsZjMyLWQxMHYuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogZWxmMzItbTMyci5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1tY29yZS5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1vcGVucmlzYy5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1zaC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1zcGFyYy5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi12ODUwLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGVsZmFybS1uYWJpLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkqIGVsZmFybS1vYWJpLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgoyMDAxLTA4LTI1ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19hYmlfbmFtZSk6IFJldHVybiB0aGUgcmlnaHQgQUJJIHN0cmluZyBmb3IKCUVfTUlQU19BQklfTzY0IGFuZCBFX01JUFNfQUJJX0VBQkk2NAoKMjAwMS0wOC0yNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKF9iZmRfZWxmX21lcmdlX3NlY3Rpb25zKTogRmFpbCBpZiBub3QgdXNpbmcgYW4gRUxGCgloYXNoIHN0cnVjdHVyZS4KCjIwMDEtMDgtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogZWxmLWJmZC5oIChlbGZfaGFzaF90YWJsZSk6IFJldmVydCBkZWZpbml0aW9uLgoJKGlzX2VsZl9oYXNoX3RhYmxlKTogTmV3IG1hY3JvLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFRlc3QKCWlzX2VsZl9oYXNoX3RhYmxlIGJlZm9yZSBhY2Nlc3NpbmcgRUxGIG9ubHkgZmllbGRzIGluIGhhc2gKCXN0cnVjdHVyZS4KCShlbGZfbGlua19jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IEZhaWwgaWYgbm90IHVzaW5nIGFuIEVMRgoJaGFzaCBzdHJ1Y3R1cmUuCgkoZWxmX2FkZF9keW5hbWljX2VudHJ5KTogRmFpbCBpZiBub3QgdXNpbmcgYW4gRUxGIGhhc2gKCXN0cnVjdHVyZS4KCShlbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wpOiBGYWlsIGlmIG5vdCB1c2luZyBhbgoJRUxGIGhhc2ggc3RydWN0dXJlLgoJKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IEZhaWwgaWYgbm90IHVzaW5nIGFuIEVMRiBoYXNoCglzdHJ1Y3R1cmUuCgkoZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEZhaWwgaWYgbm90IHVzaW5nIGFuIEVMRgoJaGFzaCBzdHJ1Y3R1cmUuCgkoZWxmX2JmZF9maW5hbF9saW5rKTogRmFpbCBpZiBub3QgdXNpbmcgYW4gRUxGIGhhc2gKCXN0cnVjdHVyZS4KCjIwMDEtMDgtMjQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi1iZmQuaCAoZWxmX2hhc2hfdGFibGUpOiBSZXR1cm4gTlVMTCBpZiB0aGUgbGlua2VyIGhhc2gKCXRhYmxlIGlzIG5vdCBhbiBFTEYgbGlua2VyIGhhc2ggdGFibGUuCgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX3RhYmxlX2luaXQpOiBTZXQgdGhlIGxpbmtlciBoYXNoCgl0YWJsZSB0eXBlIHRvIGJmZF9saW5rX2VsZl9oYXNoX3RhYmxlLgoKCSogZWxmeHgtdGFyZ2V0LmggKGJmZF9lbGZOTl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IFJldmVydAoJdGhlIGxhc3QgY2hhbmdlLgoKCSogbGlua2VyLmMgKF9iZmRfbGlua19oYXNoX3RhYmxlX2luaXQpOiBTZXQgdGhlIGxpbmtlciBoYXNoCgl0YWJsZSB0eXBlIHRvIGJmZF9saW5rX2dlbmVyaWNfaGFzaF90YWJsZS4KCjIwMDEtMDgtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYmZkLmMgKGJmZF9hbHRfbWFjaF9jb2RlKTogTmV3IGZ1bmN0aW9uLgoJKiBiZmQtaW4yLmg6IFJlYnVpbHQuCgoyMDAxLTA4LTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFRlc3QgdGhlIHJpZ2h0CglgdHlwZScgZmllbGQgaW4gdGhlIGhhc2ggZW50cnkgd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGZvbGxvdyBhCglsaW5rLgoKMjAwMS0wOC0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX3NvcnRfY21wMSk6IFNvcnQgUkVMQVRJVkUgcmVsb2NzIGZpcnN0LCBub3QKCWxhc3QuCgkoZWxmX2xpbmtfc29ydF9yZWxvY3MpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgoJKiBlbGY2NC1hbHBoYS5jIChzdHJ1Y3QgYWxwaGFfZWxmX2xpbmtfaGFzaF9lbnRyeSk6IEFkZCByZWx0ZXh0IGZsYWcuCgkoZWxmNjRfYWxwaGFfY2hlY2tfcmVsb2NzKTogU2V0IGl0IGlmIHNlY3Rpb24gdGhpcyByZWxvYyBpcyBhZ2FpbnN0CglpcyByZWFkLW9ubHkuICBTZXQgREZfVEVYVFJFTCBpZiBhIFJFTEFUSVZFIHJlbG9jIGlzIG5lZWRlZCBhZ2FpbnN0CglyZWFkLW9ubHkgc2VjdGlvbi4KCShlbGY2NF9hbHBoYV9jYWxjX2R5bnJlbF9zaXplcyk6IFNldCBERl9URVhUUkVMIGZsYWcgaWYgcmVsb2NhdGlvbgoJaXMgaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShlbGY2NF9hbHBoYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgREZfVEVYVFJFTCBmbGFnLCBkb24ndAoJY2hlY2sgc2VjdGlvbiBuYW1lcy4KCShlbGY2NF9hbHBoYV9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgoyMDAxLTA4LTI0ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogbGlua2VyLmMgKF9iZmRfZ2VuZXJpY19saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMpOiBSZXBsYWNlIGFsbG9jYSgpCglieSBiZmRfbWFsbG9jKCkuCgoyMDAxLTA4LTIzICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IFNldCBERl9URVhUUkVMIGlmCgl0aGUgcmVsb2MgaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShlbGY2NF94ODZfNjRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIERGX1RFWFRSRUwgZmxhZyBpbnN0ZWFkCglvZiBsb29raW5nIHVwIHNlY3Rpb24gbmFtZXMgZm9yIERUX1RFWFRSRUwuCgkoZWxmNjRfeDg2XzY0X3JlbG9jX3R5cGVfY2xhc3MpOiBOZXcuCgkoZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcyk6IERlZmluZS4KCjIwMDEtMDgtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIHN5bXMuYyAoYmZkX3ByaW50X3N5bWJvbF92YW5kZik6IEFkZCBhYmZkIHRvIGFyZy4KCSogYmZkLWluMi5oIChiZmRfcHJpbnRfc3ltYm9sX3ZhbmRmKTogUmVnZW5lcmF0ZWQuCgoJKiBhb3V0eC5oIChOQU1FKGFvdXQscHJpbnRfc3ltYm9sKSk6IFBhc3MgYWJmZCB0bwoJYmZkX3ByaW50X3N5bWJvbF92YW5kZi4KCSogY29mZmdlbi5jIChjb2ZmX3ByaW50X3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGYuYyAoYmZkX2VsZl9wcmludF9zeW1ib2wpOiBMaWtld2lzZS4KCSogaWVlZS5jIChpZWVlX3ByaW50X3N5bWJvbCk6IExpa2V3aXNlLgoJKiBubG1jb2RlLmggKG5sbV9wcmludF9zeW1ib2wpOiBMaWtld2lzZS4KCSogb2FzeXMuYyAob2FzeXNfcHJpbnRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIHBkcDExLmMgKE5BTUUoYW91dCxwcmludF9zeW1ib2wpKTogTGlrZXdpc2UuCgkqIHNvbS5jIChzb21fcHJpbnRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIHNyZWMuYyAoc3JlY19wcmludF9zeW1ib2wpOiBMaWtld2lzZS4KCSogdGVraGV4LmMgKHRla2hleF9wcmludF9zeW1ib2wpOiBMaWtld2lzZS4KCSogdmVyc2Fkb3MuYyAodmVyc2Fkb3NfcHJpbnRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIHZtcy5jICh2bXNfcHJpbnRfc3ltYm9sKTogTGlrZXdpc2UuCgoJKiBlbGYuYyAoX2JmZF9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IFJlcGxhY2UgZnByaW50Zl92bWEKCXdpdGggYmZkX2ZwcmludGZfdm1hLgoJKGJmZF9lbGZfcHJpbnRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIHN5bXMuYyAoYmZkX3ByaW50X3N5bWJvbF92YW5kZik6IExpa2V3aXNlLgoKMjAwMS0wOC0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBhb3V0ZjEuaCAoc3Vub3Nfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogU2lsZW5jZSBjb21waWxlIHRpbWUKCXdhcm5pbmcuCgkqIGxpYmFvdXQuaCAoTl9TRVRfRFlOQU1JQyk6IFNpbGVuY2UgY29tcGlsZSB0aW1lIHdhcm5pbmcuCgoJKiBib3V0LmM6IEFkZCBtaXNzaW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMuICBGaXggZm9ybWF0dGluZy4KCSogY29mZi16OGsuYzogQWRkIG1pc3NpbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4gIEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLXc2NS5jOiBBZGQgbWlzc2luZyBmdW5jdGlvbiBwcm90b3R5cGVzLiAgRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtaDg1MDAuYzogQWRkIG1pc3NpbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4gIEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWg4MzAwLmM6IEFkZCBtaXNzaW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMuICBGaXggZm9ybWF0dGluZy4KCSogY29mZi10aWM1NHguYzogQWRkIG1pc3NpbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4gIEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLXRpYzMwLmM6IEFkZCBtaXNzaW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMuICBGaXggZm9ybWF0dGluZy4KCSogY29mZi1tNjhrLmM6IEFkZCBtaXNzaW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMuICBGaXggZm9ybWF0dGluZy4KCSogY29mZi1yczYwMDAuYzogQWRkIG1pc3NpbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4gIEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLXNoLmM6IEFkZCBtaXNzaW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMuICBGaXggZm9ybWF0dGluZy4KCjIwMDEtMDgtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmLWJmZC5oIChlbnVtIGVsZl9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MuCgkoX2JmZF9lbGZfcmVsb2NfdHlwZV9jbGFzcyk6IE5ldy4KCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgkoZWxmTk5fYmVkKTogQWRkIGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MuCgkqIGVsZi5jIChfYmZkX2VsZl9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IFNldCBERl9URVhUUkVMIGlmIHRoZSByZWxvYwoJaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgREZfVEVYVFJFTCBmbGFnIGluc3RlYWQgb2YKCWxvb2tpbmcgdXAgc2VjdGlvbiBuYW1lcyBmb3IgRFRfVEVYVFJFTC4KCShlbGZfaTM4Nl9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX2NoZWNrX3JlbG9jcyk6IFNldCBERl9URVhUUkVMIGlmIHRoZQoJcmVsb2MgaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShlbGYzMl9zcGFyY19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgREZfVEVYVFJFTCBmbGFnIGluc3RlYWQgb2YKCWxvb2tpbmcgdXAgc2VjdGlvbiBuYW1lcyBmb3IgRFRfVEVYVFJFTC4KCShlbGYzMl9zcGFyY19yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX2NoZWNrX3JlbG9jcyk6IFNldCBERl9URVhUUkVMIGlmIHRoZQoJcmVsb2MgaXMgYWdhaW5zdCByZWFkLW9ubHkgc2VjdGlvbi4KCShzcGFyYzY0X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgREZfVEVYVFJFTCBmbGFnIGluc3RlYWQgb2YKCWxvb2tpbmcgdXAgc2VjdGlvbiBuYW1lcyBmb3IgRFRfVEVYVFJFTC4KCShzcGFyYzY0X2VsZl9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgkqIGVsZnh4LWlhNjQuYyAoc3RydWN0IGVsZk5OX2lhNjRfbGlua19oYXNoX3RhYmxlKTogQWRkIHJlbHRleHQgZmllbGQuCgkoZWxmTk5faWE2NF9oYXNoX3RhYmxlX2NyZWF0ZSk6IENsZWFyIGlhNjRfaW5mby4KCShnZXRfcmVsb2Nfc2VjdGlvbik6IFNldCBERl9URVhUUkVMIGlmIHRoZSByZWxvYyBpcyBhZ2FpbnN0IHJlYWQtb25seQoJc2VjdGlvbi4KCShlbGZOTl9pYTY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBpYTY0X2luZm8tPnJlbHRleHQgZmxhZwoJaW5zdGVhZCBvZiBsb29raW5nIHVwIHNlY3Rpb24gbmFtZXMgZm9yIERUX1RFWFRSRUwuCgkoZWxmTk5faWE2NF9yZWxvY190eXBlX2NsYXNzKTogTmV3LgoJKGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MpOiBEZWZpbmUuCgkqIGVsZmxpbmsuaCAoc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQWRkIHNwYXJlIERUX05VTEwgdGFncy4KCShzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhKTogTmV3LgoJKGVsZl9saW5rX3NvcnRfY21wMSwgZWxmX2xpbmtfc29ydF9jbXAyLCBlbGZfbGlua19zb3J0X3JlbG9jcyk6IE5ldy4KCShlbGZfYmZkX2ZpbmFsX2xpbmspOiBDYWxsIGVsZl9saW5rX3NvcnRfcmVsb2NzLgoJQ29udmVydCBvbmUgc3BhcmUgRFRfTlVMTCBpbnRvIERUX1JFTENPVU5UIHJlc3AuIERUX1JFTEFDT1VOVCBpZgoJbmVjZXNzYXJ5LgoKMjAwMS0wOC0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKHg4Ni1ic2RpKTogTm8gY29yZWZpbGUgc3VwcG9ydC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wOC0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBjb2ZmLXN0Z28zMi5jIChDT0ZGX1NFQ1RJT05fQUxJR05NRU5UX0VOVFJJRVMpOiBBZGQgbWlzc2luZwoJY29tbWEuCgoyMDAxLTA4LTIxICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29mZi1nbzMyLmM6IE1ha2UgRFdBUkYyIHNlY3Rpb25zIHVzZSBhbiBhbGlnbm1lbnQgb2YgMC4gIFNldAoJdGhlIGFsaWdubWVudCBvZiBkd2FyZjIgbGlua29uY2Ugc2VjdGlvbnMgdG8gMC4KCSogY29mZi1zdG8zMi5jOiBMaWtld2lzZS4KCjIwMDEtMDgtMjAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvZmYtc3BhcmMuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogZWxmMzItczM5MC5jOiBMaWtld2lzZS4KCSogZWxmMzItaTk2MC5jOiBMaWtld2lzZS4KCSogYW91dC10YXJnZXQuaDogTGlrZXdpc2UuCgoyMDAxLTA4LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYtYmZkLmggKGVsZl9vYmpfdGRhdGEpOiBBZGQgbnVtX3NlY3Rpb25fc3ltcy4KCShlbGZfbnVtX3NlY3Rpb25fc3ltcyk6IE5ldyBmb3IgbnVtX3NlY3Rpb25fc3ltcy4KCgkqIGVsZi5jIChlbGZfbWFwX3N5bWJvbHMpOiBTZXQgbnVtX3NlY3Rpb25fc3ltcy4KCShfYmZkX2VsZl9zeW1ib2xfZnJvbV9iZmRfc3ltYm9sKTogQ2hlY2sgbnVtX3NlY3Rpb25fc3ltcyBmb3IKCXRoZSBzZWN0aW9uIHN5bWJvbCBpbmRleC4KCjIwMDEtMDgtMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogZWxmeHgtdGFyZ2V0LmggKGJmZF9lbGZOTl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IE5ldmVyCglzZWxlY3QgdGhlIGdlbmVyaWMgaGFzIHRhYmxlIGNyZWF0b3IuICBBbGwgZWxmIGJhY2tlbmRzIG5lZWQgZWxmCglzcGVjaWZpYyBmaWVsZHMgaW4gdGhlIGhhc2ggdGFibGUuCgoyMDAxLTA4LTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYXJjaGl2ZS5jIChvZmZzZXRvZik6IFJlbW92ZSBkZWZpbmUuCgkqIGVsZi5jOiBMaWtld2lzZS4KCSogb2FzeXMuYzogTGlrZXdpc2UKCSogc3lzZGVwLmggKG9mZnNldG9mKTogRGVmaW5lLgoKMjAwMS0wOC0xNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGJmZC5jIChiZmRfZ2V0X2dwX3NpemUpOiBSZXR1cm4gYW4gdW5zaWduZWQgaW50LgoJKGJmZF9zZXRfZ3Bfc2l6ZSk6IE1ha2UgcGFyYW0gdW5zaWduZWQuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfYWRkX3N5bWJvbF9ob29rKTogVXNlIGVsZl9ncF9zaXplIHJhdGhlcgoJdGhhbiBjYWxsaW5nIGJmZF9nZXRfZ3Bfc2l6ZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfYWRkX3N5bWJvbF9ob29rKTogTGlrZXdpc2UuCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9hZGRfc3ltYm9sX2hvb2spOiBMaWtld2lzZS4KCjIwMDEtMDgtMTcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBsaW5rZXIuYyAoZGVmYXVsdF9maWxsX2xpbmtfb3JkZXIpOiBIYW5kbGUgZm91ciBieXRlIGZpbGwgdmFsdWUuCgoyMDAxLTA4LTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfb3V0cHV0X2FyY2hfc3ltcyk6IEFkZCBtaXNzaW5nCglwcm90b3R5cGUuCgkqIG5sbTMyLWFscGhhLmMgKG5sbV9hbHBoYV93cml0ZV9leHRlcm5hbCk6IEZpeCB3YXJuaW5nLgoKCSogZWxmNjQtbWlwcy5jIChVTlVTRURfUkVMT0MpOiBEZWZpbmUuCgkobWlwc19lbGY2NF9ob3d0b190YWJsZV9yZWwpOiBVc2UgaXQuCgkobWlwc19lbGY2NF9ob3d0b190YWJsZV9yZWxhKTogSGVyZSB0b28uCgkobWlwc19lbGY2NF93cml0ZV9yZWxvY3MpOiBGaXggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmcuCgoJKiBjb2ZmY29kZS5oIChjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvCglzaWxlbmNlIHdhcm5pbmcuCgkqIGNvZmZnZW4uYyAoY29mZl9wcmludF9zeW1ib2wpOiBGaXggd2FybmluZ3MuCgkoY29mZl9maW5kX25lYXJlc3RfbGluZSk6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfbGlua19pbnB1dF9iZmQpOiBMaWtld2lzZS4KCSogY29mZi1hbHBoYS5jIChhbHBoYV9jb252ZXJ0X2V4dGVybmFsX3JlbG9jKTogTGlrZXdpc2UuCgkqIGZvcm1hdC5jIChiZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMpOiBMaWtld2lzZS4KCShiZmRfc2V0X2Zvcm1hdCk6IExpa2V3aXNlLgoJKiBjb2ZmLWlhNjQuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCSogZWxmNjQtYWxwaGEuYyAoc3RydWN0IGFscGhhX2VsZl9saW5rX2hhc2hfZW50cnkpOiBNYWtlIGFkZGVuZAoJc2lnbmVkIHRvIHNpbGVuY2Ugd2FybmluZ3MuCgkoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2ZpbmRfcmVsb2NfYXRfb2ZzKTogRml4IHdhcm5pbmdzLgoJKGVsZjY0X2FscGhhX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2ZpbmFsX2xpbmspOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9yZWxheF9zZWN0aW9uKTogUmVtb3ZlIHJlZHVuZGFudCBhc3NpZ24gdG8gaW5mby5nb3RlbnQuCgkoZWxmNjRfYWxwaGFfbWVyZ2VfZ290cyk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBhcmdzLgoJKGVsZjY0X2FscGhhX3NpemVfZ290X3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZnh4LWlhNjQuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCShlbGZOTl9pYTY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggd2FybmluZy4KCShlbGZOTl9pYTY0X3Vud2luZF9lbnRyeV9jb21wYXJlKTogTWFrZSBwYXJhbXMgY29uc3QuCgoyMDAxLTA4LTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnLmJmZCAodGFyZzY0X3NlbHZlY3MpOiBOZXcuCgk8cG93ZXJwYy0qLWFpeCogZW50cnk+OiBVc2UgaXQgaGVyZSBpbnN0ZWFkIG9mIGluZWZmZWN0dWFsICNpZmRlZi4KCgkqIGJmZC1pbi5oIChCRkRfVkVSU0lPTik6IFJlbW92ZSB3cm9uZyBjb21tZW50LgoJKEJGRF9ERUZBVUxUX1RBUkdFVF9TSVpFKTogTmV3LgoJKEJGRF9BUkNIX1NJWkUpOiBDb21tZW50LgoJKiBjb25maWd1cmUuaW4gKHRhcmdldF9zaXplKTogTmV3LiAgU2V0IGluc3RlYWQgb2YgdGFyZ2V0NjQgaW4KCXNlbHZlY3MgY2FzZSBzdGF0ZW1lbnQuICBTZXQgdGFyZ2V0NjQgZnJvbSBpdC4KCShiZmRfZGVmYXVsdF90YXJnZXRfc2l6ZSk6IE5ldy4gIFNldCBmcm9tIHRhZ2V0X3NpemUuIEFDX1NVQlNULgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDgtMTcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBiZmQuYyAoZW51bSBiZmRfZXJyb3IpOiBBZGQgYmZkX2Vycm9yX3dyb25nX29iamVjdF9mb3JtYXQuCgkoYmZkX2Vycm1zZ3MpOiBBZGQgY29ycmVzcG9uZGluZyBtZXNzYWdlLgoJKiBhcmNoaXZlLmMgKGJmZF9nZW5lcmljX2FyY2hpdmVfcCk6IERvbid0IHJlbGVhc2UgYmZkX2FyZGF0YSB3aGVuCglmaW5kaW5nIGFuIGFyY2hpdmUgdGhhdCBjb250YWlucyBkaWZmZXJlbnQgZm9ybWF0IG9iamVjdCBmaWxlcy4KCVJldHVybiBiZmRfZXJyb3Jfd3Jvbmdfb2JqZWN0X2Zvcm1hdCBmb3IgdGhpcyBjYXNlLgoJKiBmb3JtYXQuYzogRm9ybWF0dGluZyBmaXhlcy4gIHMvQ09OU1QvY29uc3QvLgoJKGJmZF9jaGVja19mb3JtYXRfbWF0Y2hlcyk6IEFjY2VwdCBhcmNoaXZlcyB0aGF0IGdpdmUKCWJmZF9lcnJvcl93cm9uZ19vYmplY3RfZm9ybWF0IGlmIG5vIGZ1bGwgbWF0Y2ggaXMgZm91bmQuICBUaWR5Cgljb2RlIGhhbmRsaW5nIG1hdGNoaW5nX3ZlY3Rvci4gIERvbid0IHJldHVybiBhIHBvaW50ZXIgdG8gZnJlZWQKCW1lbW9yeSBpbiBgbWF0Y2hpbmcnLiAgSGFuZGxlIGFtYmlndW91cyBtYXRjaGVzIGFzIGZvciBwYXJ0aWFsCglhcmNoaXZlIG1hdGNoZXMuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDEtMDgtMTUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBsaWJpZWVlLmggKGNvbW1vbl9oZWFkZXJfdHlwZSk6IEFkZCBsYXN0X2J5dGUgZmllbGQuCgoJKiBpZWVlLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuICBTb21lIGZvcm1hdCBmaXhlcy4KCShzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcl9zdHJ1Y3QpOiBNb3ZlIGZvciBhdmFpbGFiaWxpdHkgdG8gcHJvdG90eXBlcy4KCShpZWVlX3BhcnRfYWZ0ZXIpOiBOZXcgZnVuY3Rpb24uCgkoaWVlZV9zbHVycF9kZWJ1Zyk6IFVzZSBpdCBoZXJlLgoJKGllZWVfc2Vlayk6IFBhc3MgaW4gaWVlZV9kYXRhX3N0cnVjdCByYXRoZXIgdGhhbiBiZmQuICBVc2UKCWllZWVfcGFydF9hZnRlciB0byBzZXQgbGFzdF9ieXRlIHRvIG9uZSBwYXN0IGVuZCBvZiBjdXJyZW50IHBhcnQuCglVcGRhdGUgY2FsbGVycy4KCShpZWVlX3Bvcyk6IFBhc3MgaW4gaWVlZV9kYXRhX3N0cnVjdCByYXRoZXIgdGhhbiBiZmQuCglVcGRhdGUgY2FsbGVycy4KCShwYXJzZV9leHByZXNzaW9uKTogRG9uJ3QgZ28gYmV5b25kIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgcGFydC4KCShpZWVlX3NsdXJwX2V4dGVybmFsX3N5bWJvbHMpOiBDb3JyZWN0IHR5cGUgcGFzc2VkIHRvIHJlYWRfMmJ5dGVzLgoJKGllZWVfZ2V0X3N5bXRhYl91cHBlcl9ib3VuZCwgaWVlZV9nZXRfc3ltdGFiLAoJaWVlZV9nZXRfc3ltYm9sX2luZm8sIGllZWVfcHJpbnRfc3ltYm9sLCBpZWVlX25ld19zZWN0aW9uX2hvb2ssCglpZWVlX2dldF9yZWxvY191cHBlcl9ib3VuZCwgaWVlZV9jYW5vbmljYWxpemVfcmVsb2MsIGJsb2NrLAoJaWVlZV9zZXRfc2VjdGlvbl9jb250ZW50cywgaWVlZV93cml0ZV9vYmplY3RfY29udGVudHMsCglpZWVlX21ha2VfZW1wdHlfc3ltYm9sKTogTWFrZSBzdGF0aWMuCgkoaWVlZV9hcmNoaXZlX3ApOiBDb3JyZWN0IGNvbW1lbnRzIHJlZ2FyZGluZyBiZmRfcmVhZC4KCShpZWVlX29iamVjdF9wKTogU2ltaWxhcmx5LgoJKGllZWVfbWtvYmplY3QpOiBNb3ZlIGl0LiAgQ2xlYXIgb3V0cHV0X3B0cl9zdGFydCwgb3V0cHV0X3B0ciwKCW91dHB1dF9wdHJfZW5kLCBpbnB1dF9wdHJfc3RhcnQsIGlucHV0X3B0ciwgaW5wdXRfcHRyX2VuZCwKCWlucHV0X2JmZCwgb3V0cHV0X2JmZCwgb3V0cHV0X2J1ZmZlci4KCShkb19hc19yZXBlYXQpOiBXcml0ZSBvdXQgaWVlZV9zZXRfY3VycmVudF9wY19lbnVtIHZhbHVlIGFzIGZvcgoJZG9fd2l0aF9yZWxvY3MsIGllLiBhcyBhIHN5bWJvbCBmb3IgcmVsb2NhdGFibGUgZmlsZXMuCgkoaWVlZV92ZWMpOiBBZGQgY29tbWVudHMgc2hvd2luZyBmdW5jdGlvbnMgcmVmZXJlbmNlZCBieSBtYWNyb3MuCgoyMDAxLTA4LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGFvdXQtdGljMzAuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4gIEZpeCBmb3JtYXR0aW5nLgoJKiBhb3V0LW5zMzJrLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuICBGaXggZm9ybWF0dGluZy4KCSogcGVYWGlnZW4uYzogQWRkIG1pc3NpbmluZyBwcm90b3R5cGVzLiAgRml4IGZvcm1hdHRpbmcuCgkqIGFvdXQtYWRvYmUuYzogQWRkIG1pc3NpbmluZyBwcm90b3R5cGVzLiAgRml4IGZvcm1hdHRpbmcuCgoyMDAxLTA4LTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZjMyLXY4NTAuYzogQWRkIG1pc3NpbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4KCUZpeCBzb21lIGZvcm1hdHRpbmcuCgoJKiBjcHUtdjg1MC5jOiBBZGQgbWlzc2luZyBmdW5jdGlvbiBwcm90b3R5cGUuCglGaXggc29tZSBmb3JtYXR0aW5nLgoKMjAwMS0wOC0xMSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIG5ldyBmaWVsZHMKCSdlbGZfYmFja2VuZF9zcHJpbnRmX3ZtYScgYW5kICdlbGZfYmFja2VuZF9mcHJpbnRmX3ZtYScuCgkoYmZkX2VsZl9zcHJpbnRmX3ZtYSk6IFJlbmFtZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8KCSdfYmZkX2VsZl9zcHJpbnRmX3ZtYScuCgkoYmZkX2VsZl9mcHJpbnRmX3ZtYSk6IFJlbmFtZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8KCSdfYmZkX2VsZl9mcHJpbnRmX3ZtYScuCgkqIGJmZC5jIChiZmRfc3ByaW50Zl92bWEpOiBEbyBub3QgaW52b2tlIGJmZF9lbGZfc3ByaW50Zl92bWEKCWRpcmVjdGx5LCBpbnN0ZWFkIGluZGlyZWN0IHZpYSB0aGUgZWxmX2JhY2tlbmRfZGF0YSBzdHJ1Y3R1cmUuCgkoYmZkX2ZwcmludGZfdm1hKTogRG8gbm90IGludm9rZSBiZmRfZWxmX2ZwcmludGZfdm1hIGRpcmVjdGx5LAoJaW5zdGVhZCBpbmRpcmVjdCB2aWEgdGhlIGVsZl9iYWNrZW5kX2RhdGEgc3RydWN0dXJlLgoJKiBlbGYuYyAoYmZkX2VsZl9zcHJpbnRmX3ZtYSk6IFJlbmFtZSB0byBfYmZkX2VsZl9zcHJpbnRmX3ZtYS4KCShiZmRfZWxmX2ZwcmludGZfdm1hKTogUmVuYW1lIHRvIF9iZmRfZWxmX2ZwcmludGZfdm1hLgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmX2JhY2tlbmRfc3ByaW50Zl92bWEpOiBJbml0aWFsaXNlIGlmIG5vdAoJYWxyZWFkeSBkZWZpbmVkLgoJKGVsZl9iYWNrZW5kX2ZwcmludGZfdm1hKTogSW5pdGlhbGlzZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogSW5pdGlhbGlzZSB0aGUKCWVsZl9iYWNrZW5kX3NwcmludGZfdm1hIGFuZCBlbGZfYmFja2VuZF9mcHJpbnRmX3ZtYSBmaWVsZHMuCgoyMDAxLTA4LTEwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC1zcGFyYy5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1jcmlzLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1ocHBhLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1zMzkwLmM6IExpa2V3aXNlLgoKMjAwMS0wOC0xMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9lbGZfb2JqZWN0X3ApOiBNYWtlIHN0YXRpYy4KCUFkZCBwcm90b3R5cGVzIHdoZXJlIG5lZWRlZC4KCjIwMDEtMDgtMTAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC5jIChiZmRfc3ByaW50Zl92bWEpOiBGaXggYSB0eXBvIGluIHRoZSBsYXN0IGNoYW5nZS4KCShiZmRfZnByaW50Zl92bWEpOiBMaWtld2lzZS4KCjIwMDEtMDgtMTAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC5jIChiZmRfc3ByaW50Zl92bWEpOiBEb24ndCByZXR1cm4gdm9pZC4KCShiZmRfZnByaW50Zl92bWEpOiBMaWtld2lzZS4KCjIwMDEtMDgtMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIC1Xc3RyaWN0LXByb3RvdHlwZXMgYW5kIC1XbWlzc2luZy1wcm90b3R5cGVzCgl0byBidWlsZCB3YXJuaW5ncy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wOC0xMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZi5jIChiZmRfZWxmX3NwcmludGZfdm1hKTogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gcXVpZXQKCXdhcm5pbmcgaWYgbm90IEJGRDY0LiAgQWRkIGJyYWNlcyBzbyBlbWFjcyBhdXRvIGZvcm1hdCB3b3Jrcy4KCShiZmRfZWxmX2ZwcmludGZfdm1hKTogTGlrZXdpc2UuCgoJKiBsaWJ4Y29mZi5oIChzdHJ1Y3QgeGNvZmZfYmFja2VuZF9kYXRhX3JlYyk6IENvbnN0aWZ5IHNyYyBwYXJhbQoJb2YgX3hjb2ZmX3N3YXBfbGQqLgoJKiBjb2ZmLXJzNjAwMC5jICh4Y29mZl9zd2FwX2xkaGRyX2luKTogTW9kaWZ5IHR5cGUgb2YgZXh0ZXJuYWwKCXBhcmFtIHRvIGFncmVlIHdpdGggbGlieGNvZmYuaC4KCSh4Y29mZl9zd2FwX2xkaGRyX291dCk6IExpa2V3aXNlLgoJKHhjb2ZmX3N3YXBfbGRzeW1faW4pOiBMaWtld2lzZS4KCSh4Y29mZl9zd2FwX2xkc3ltX291dCk6IExpa2V3aXNlLgoJKHhjb2ZmX3N3YXBfbGRyZWxfaW4pOiBMaWtld2lzZS4KCSh4Y29mZl9zd2FwX2xkcmVsX291dCk6IExpa2V3aXNlLgoJKHhjb2ZmX2NyZWF0ZV9jc2VjdF9mcm9tX3NtY2xhcyk6IExpa2V3aXNlLgoJKiBjb2ZmNjQtcnM2MDAwLmM6IEFkZCBtaXNzaW5nIHByb3RvdHlwZXMuCgkoeGNvZmY2NF9zd2FwX2xkaGRyX2luKTogTW9kaWZ5IHR5cGUgb2YgZXh0ZXJuYWwgcGFyYW0gdG8gYWdyZWUKCXdpdGggbGlieGNvZmYuaC4KCSh4Y29mZjY0X3N3YXBfbGRoZHJfb3V0KTogTGlrZXdpc2UuCgkoeGNvZmY2NF9zd2FwX2xkc3ltX2luKTogTGlrZXdpc2UuCgkoeGNvZmY2NF9zd2FwX2xkc3ltX291dCk6IExpa2V3aXNlLgoJKHhjb2ZmNjRfc3dhcF9sZHJlbF9pbik6IExpa2V3aXNlLgoJKHhjb2ZmNjRfc3dhcF9sZHJlbF9vdXQpOiBMaWtld2lzZS4KCSh4Y29mZjY0X3BwY19yZWxvY2F0ZV9zZWN0aW9uKTogTWFrZSBzdGF0aWMuCgkoeGNvZmY2NF9zbHVycF9hcm1hcCk6IExpa2V3aXNlLgoJKHhjb2ZmNjRfYXJjaGl2ZV9wKTogTGlrZXdpc2UuCgkoeGNvZmY2NF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUpOiBMaWtld2lzZS4KCSh4Y29mZjY0X3NpemVvZl9oZWFkZXJzKTogTGlrZXdpc2UuCgkoeGNvZmY2NF9pc19saW5lbm9fY291bnRfb3ZlcmZsb3cpOiBMaWtld2lzZS4KCSh4Y29mZjY0X2lzX3JlbG9jX2NvdW50X292ZXJmbG93KTogTGlrZXdpc2UuCgkoeGNvZmY2NF9sb2FkZXJfc3ltYm9sX29mZnNldCk6IExpa2V3aXNlLgoJKHhjb2ZmNjRfbG9hZGVyX3JlbG9jX29mZnNldCk6IExpa2V3aXNlLgoJKiBlbGY2NC1nZW4uYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCjIwMDEtMDgtMDkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChiZmRfZWxmX3NwcmludGZfdm1hKTogQ2hlY2sgRUxGQ0xBU1M2NCBvbmx5IGluIEJGRDY0LgoJKGJmZF9lbGZfZnByaW50Zl92bWEpOiBMaWtld2lzZS4KCjIwMDEtMDgtMDkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC1pbi5oIChiZmRfZWxmX3NwcmludGZfdm1hLCBiZmRfZWxmX2ZwcmludGZfdm1hKTogTW92ZWQKCXRvIC4uLgoJKiBlbGYtYmZkLmg6IEhlcmUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCgoyMDAxLTA4LTA5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmQtaW4uaCAoYmZkX3NwcmludGZfdm1hKTogTmV3IHByb3RvdHlwZS4KCShiZmRfZnByaW50Zl92bWEpOiBMaWtld2lzZS4KCShiZmRfZWxmX3NwcmludGZfdm1hKTogTGlrZXdpc2UuCgkoYmZkX2VsZl9mcHJpbnRmX3ZtYSk6IExpa2V3aXNlLgoJKGJmZF9wcmludGZfdm1hKTogTmV3LiBEZWZpbmVkIHdpdGggYmZkX2ZwcmludGZfdm1hLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGVkLgoKCSogYmZkLmMgKGJmZF9zcHJpbnRmX3ZtYSk6IE5ldy4gRGVmaW5lZC4KCShiZmRfZnByaW50Zl92bWEpOiBMaWtld2lzZS4KCgkqIGVsZi5jIChiZmRfZWxmX3NwcmludGZfdm1hKTogTmV3LiBEZWZpbmVkLgoJKGJmZF9lbGZfZnByaW50Zl92bWEpOiBMaWtld2lzZS4KCjIwMDEtMDgtMDkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb2ZmLXJzNjAwMC5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKHhjb2ZmX3BwY19yZWxvY2F0ZV9zZWN0aW9uLCB4Y29mZl9pc19saW5lbm9fY291bnRfb3ZlcmZsb3csCgl4Y29mZl9pc19yZWxvY19jb3VudF9vdmVyZmxvdywgeGNvZmZfbG9hZGVyX3N5bWJvbF9vZmZzZXQsCgl4Y29mZl9sb2FkZXJfcmVsb2Nfb2Zmc2V0KTogTWFrZSBzdGF0aWMuCgkqIGR3YXJmMS5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBkd2FyZjIuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCShzdHJ1Y3QgYWJicmV2X2luZm8pOiBNb3ZlIGRlZmluaXRpb24uCgkoc3RydWN0IGF0dHJfYWJicmV2LCBBQkJSRVZfSEFTSF9TSVpFLCBBVFRSX0FMTE9DX0NIVU5LKTogTGlrZXdpc2UuCgkqIGVsZi5jOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLgoJKiBlbGYzMi1nZW4uYzogTGlrZXdpc2UuCgkqIGVsZjMyLWkzODYuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jOiBMaWtld2lzZS4KCShwcGNfZWxmX3NvcnRfcmVsYSk6IFVzZSBQVFIgaW5zdGVhZCBvZiAidm9pZCAqIi4KCSogZWxmbGluay5oOiBBZGQgbWlzc2luZyBwcm90b3R5cGVzLiAgRm9ybWF0dGluZyBmaXhlcy4KCSogbWVyZ2UuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCShsYXN0NF9lcSk6IFVzZSBQVFIgaW5zdGVhZCBvZiAidm9pZCAqIi4KCShsYXN0X2VxKTogTGlrZXdpc2UuCgkqIHN5bXMuYzogQWRkIG1pc3NpbmcgcHJvdG90eXBlcy4KCjIwMDEtMDgtMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogYmZkLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAxLTA4LTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFyYy5jIChSX0FSQ19CMjJfUENSRUwpOiBDaGFuZ2UgJ3BhcnRpYWxfaW5wbGFjZScgdG8KCXRydWUgKHRoaXMgdGFyZ2V0IHVzZXMgUkVMIHJlbG9jYXRpb25zKSBhbmQgJ3BjcmVsX29mZnNldCcgdG8KCWZhbHNlICh0aGUgUEMgaXMgaW1wbGllZCwgbm90IHN0b3JlZCBpbiB0aGUgb2Zmc2V0KS4KCjIwMDEtMDgtMDggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJMTk5OS0xMC0xOSAgTGludXMgTm9yZGJlcmcgIDxsaW51c0Bzd294LnNlPgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIHdhbnRfZ290X3N5bS4KCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX3dhbnRfZ290X3N5bSk6IERlZmluZS4KCShlbGZOTl9iZWQpOiBBZGQgZWxmX2JhY2tlbmRfd2FudF9nb3Rfc3ltLgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbik6IERlZmluZQoJX0dMT0JBTF9PRkZTRVRfVEFCTEVfIG9ubHkgaWYgYmVkLT53YW50X2dvdF9zeW0uCgoyMDAxLTA4LTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMi5jIChzdHJ1Y3QgZHdhcmYyX2RlYnVnKTogQWRkIHNlYywgc2VjX2luZm9fcHRyIGFuZCBzeW1zLgoJKGZpbmRfcmVsYV9hZGRlbmQpOiBOZXcgZnVuY3Rpb24uCgkocGFyc2VfY29tcF91bml0KTogQ2FsbCBpdCB0byBmaW5kIHRoZSBhYmJyZXYgb2Zmc2V0IGFkZGVuZC4KCShfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IEluaXRpYWxpemUgYW5kIG1haW50YWluIHRoZSBuZXcKCW1lbWJlcnMgb2YgZHdhcmYyX2RlYnVnIGFzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpcyByZWFkLgoKMjAwMS0wOC0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBjb2ZmLXNoLmMgKHNoX2NvZmZfcmVsb2NfdHlwZV9sb29rdXApOiBQcm92aWRlIGZvciBzaC1jb2ZmCgl0YXJnZXRzIGFzIHdlbGwgYXMgc2gtcGUuCgoyMDAxLTA4LTAzICBCZW4gSGFycmlzIDxiamgyMUBuZXRic2Qub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogSW5jbHVkZSBvZmZzZXQgb2YKCXJlbG9jIGZyb20gc3RhcnQgb2Ygc2VjdGlvbiB3aGVuIGNvbXB1dGluZyB2YWx1ZSBmb3IgUl9BUk1fUkVMMzIKCXJlbG9jLgoKMjAwMS0wOC0wMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglGcm9tICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZjMyLWkzODYuYyAoYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzKTogRG9uJ3QKCWtlZXAgcmVsb2NzIGZvciB1bmRlZmluZWQgc3ltcyBpZiB0aGVyZSBhcmUgbm8gZHluYW1pYyBzZWN0aW9ucyBpbgoJZXhlY3V0YWJsZS4KCSogZWxmMzItaHBwYS5jIChhbGxvY2F0ZV9wbHRfYW5kX2dvdF9hbmRfZGlzY2FyZF9yZWxvY3MpOiBMaWtld2lzZS4KCjIwMDEtMDgtMDIgIFBhdWwgU29rb2xvdnNreSAgPHBhdWwuc29rb2xvdnNreUB0ZWNobm9sb2dpc3QuY29tPgoKCSogY29mZmxpbmsuYyAoY29mZl9saW5rX2NoZWNrX2FyX3N5bWJvbHMpOiBhbHNvIHNlYXJjaCBmb3IKCV9faW1wX19zeW1ib2wgYXMgd2VsbCBhcyBfc3ltYm9sLgoJKiBsaW5rZXIuYyAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX2FyY2hpdmVfc3ltYm9scyk6IGFsc28KCXNlYXJjaCBmb3IgX19pbXBfX3N5bWJvbCBhcyB3ZWxsIGFzIF9zeW1ib2wuCgoyMDAxLTA4LTAxICBBZGFtIE5lbWV0ICA8YW5lbWV0QGxueHcuY29tPgoKCSogZWxmLmMgKGVsZl9zb3J0X3NlY3Rpb25zKTogUmV0dXJuIHplcm8gb25seSBhcyB0aGUgbGFzdCBzdGVwLgoKMjAwMS0wOC0wMSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBjb25maWcuYmZkIChhcm0tdnh3b3Jrcyk6IENoYW5nZSBuYW1lIG9mIGRlZmluZSBmcm9tIFZYV09SS1MgdG8KCUFSTV9DT0ZGX0JVR0ZJWC4KCShhcm0tZXBvYy1wZSk6IERlZmluZSBBUk1fQ09GRl9CVUdGSVguCgljb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogUmVwbGFjZSBWWFdPUktTIHdpdGgKCUFSTV9DT0ZGX0JVR0ZJWC4KCjIwMDEtMDctMzAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogbGliZWNvZmYuaCAoX2JmZF9lY29mZl9zdHlwX3RvX3NlY19mbGFncyk6IENoYW5nZWQgcmV0dXJuIHR5cGUKCXRvIG1hdGNoIGNvcnJlc3BvbmRpbmcgYmZkX2NvZmZfYmFja2VuZCBkYXRhIG1lbWJlci4KCjIwMDEtMDctMjQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBNYWtlZmlsZS5hbTogVXBkYXRlIGRlcGVuZGVuY2llcyB3aXRoICJtYWtlIGRlcC1hbSIuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlCgoyMDAxLTA3LTE1ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbSAocG8vU1JDLVBPVEZJTEVTLmluKTogVXNlIHRtcC5zcmMgaW5zdGVhZCBvZiB0bXAuCgkocG8vQkxELVBPVEZJTEVTLmluKTogVXNlIHRtcC5ibGQgaW5zdGVhZCBvZiB0bXAuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMS0wNy0xMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfY2hlY2tfcmVsb2NzKTogU2V0IHRoZSBBTExPQ3xMT0FECglmbGFncyB3aGVuIGNyZWF0aW5nIHRoZSByZWxvYyBzZWN0aW9uIGlmIHRoZSBBTExPQyBmbGFnIGluIHRoZQoJc291cmNlIHNlY3Rpb24gaXMgc2V0LgoKMjAwMS0wNy0xMSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiByZWxvYy5jIChiZmRfcmVsb2NfY29kZV90eXBlKTogQWRkIElBNjQgcmVsb2NzCglCRkRfUkVMT0NfSUE2NF9MVE9GRl9GUFRSMzJNU0IgYW5kIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFIzMkxTQgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBlbGZ4eC1pYTY0LmMgKGlhNjRfaG93dG9fdGFibGUpOiBEZWZpbmUgaG93IHRvIGhhbmRsZQoJbmV3IHJlbG9jYXRpb25zLgoJKGVsZk5OX2lhNjRfcmVsb2NfdHlwZV9sb29rdXApOiBIYW5kbGUgbmV3IHJlbG9jYXRpb25zLgoJKGVsZk5OX2lhNjRfY2hlY2tfcmVsb2NzKTogTGlrZXdpc2UuCgkoZWxmTk5faWE2NF9pbnN0YWxsX3ZhbHVlKTogTGlrZXdpc2UuCgkoZWxmTk5faWE2NF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTA3LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKF9iZmRfc3BhcmNfZWxmX2hvd3RvX3RhYmxlKTogUmVtb3ZlIHN1cHBvcnQgZm9yCglSX1NQQVJDX1VBNjQuCgkoZWxmMzJfc3BhcmNfY2hlY2tfcmVsb2NzKTogTGlrZXdpc2UuCglPbmx5IGNyZWF0ZSAucmVsYSBzZWN0aW9uIGZvciBhbGxvY2VkIHNlY3Rpb25zIGluIHNoYXJlZCBsaWJyYXJpZXMuCgkoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJUmVtb3ZlIHJlZHVuZGFudCBjaGVjay4KCU9wdGltaXplIHVuYWxpZ25lZCByZWxvYyB1c2FnZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFJlbW92ZSByZWR1bmRhbnQKCWNoZWNrLgoKMjAwMS0wNy0xMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfY2hlY2tfcmVsb2NzKTogT25seSB1c2UgdGhlIHNhbWUKCUFMTE9DfExPQUQgZmxhZ3MgYXMgdGhlIHNvdXJjZSBzZWN0aW9uIGZvciBkZWJ1Z2dpbmcgc2VjdGlvbnMKCXdoZW4gY3JlYXRpbmcgdGhlIHJlbG9jIHNlY3Rpb24uCgoyMDAxLTA3LTA1ICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBsaW5rZXIuYyAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wsIGNhc2UgQklHKTogVXNlCgl0aGUgc2VjdGlvbiBvZiB0aGUgYmlnZ2VyIHN5bWJvbC4KCgkqIHN5bXMuYyAoYmZkX2lzX2xvY2FsX2xhYmVsKTogUmV0dXJuIGZhbHNlIGlmIEJTRl9TRUNUSU9OX1NZTS4KCjIwMDEtMDctMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc2NuaGRyX2luKTogRm9yIHNlY3Rpb25zIGNvbnRhaW5pbmcKCXVuaW5pdGlhbGlzZWQgZGF0YSwgb25seSBzZXQgdGhlaXIgc2l6ZSB0byBzX3BhZGRyIGlmIHRoaXMgZG9lcwoJbm90IHJlc2V0IHRoZWlyIHNpemUgdG8gemVyby4gIE1TJ3MgbGF0ZXN0IGNvbXBpbGVycyB3aWxsIHNldAoJc19wYWRkciB0byB6ZXJvLgoKMjAwMS0wNy0wNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkL2VsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKToKCUhhbmRsZSBiZmRfbWFjaF9taXBzNDQwMCwgYmZkX21hY2hfbWlwczQ2MDAgYW5kCgliZmRfbWFjaF9taXBzNTAwMC4KCjIwMDEtMDctMDMgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAc29mdGhvbWUubmV0PgoKCSogYmZkLmMgKGJmZF9nZXRfc2lnbl9leHRlbmRfdm1hKTogU3VwcG9ydCBESkdQUCBDT0ZGIHRhcmdldHMuCgoJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfbGlua19pbnB1dF9iZmQpOiBTa2lwIHNlY3Rpb24gc3ltYm9scyBmcm9tCglzZWN0aW9ucyBiZWluZyBkaXNjYXJkZWQuCgoyMDAxLTA2LTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmY29yZS5oIChlbGZfY29yZV9maWxlX3ApOiBDYWxsIGJmZF9zZWN0aW9uX2Zyb21fcGhkciBkaXJlY3RseQoJaW5zdGVhZCBvZiBfYmZkX2VsZmNvcmVfc2VjdGlvbl9mcm9tX3BoZHIuCgkqIGVsZi1iZmQuaCAoX2JmZF9lbGZjb3JlX3NlY3Rpb25fZnJvbV9waGRyKTogUmVtb3ZlLgoJKiBlbGYuYyAoX2JmZF9lbGZjb3JlX3NlY3Rpb25fZnJvbV9waGRyKTogUmVtb3ZlLgoJKF9iZmRfZWxmY29yZV9tYWtlX3BzZXVkb3NlY3Rpb24pOiBFeHBlZGl0ZSB0YWlsLWNhbGwuCgkoZWxmY29yZV9ncm9rX3Byc3RhdHVzKTogTGlrZXdpc2UuCgkoZWxmY29yZV9ncm9rX2x3cHN0YXR1cyk6IExpa2V3aXNlLgoJKGJmZF9nZXRfZWxmX3BoZHJfdXBwZXJfYm91bmQpOiBMaWtld2lzZS4KCShlbGZjb3JlX21ha2Vfbm90ZV9wc2V1ZG9zZWN0aW9uKTogRm9ybWF0dGluZy4KCShfYmZkX2VsZmNvcmVfc3RybmR1cCk6IEZvcm1hdHRpbmcuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfc3ltX2lzX2dsb2JhbCk6IEZvcm1hdHRpbmcuCgkoX2JmZF9lbGYzMl9taXBzX2dyb2tfcHJzdGF0dXMpOiBFeHBlZGl0ZSB0YWlsLWNhbGwuCgoyMDAxLTA2LTI5ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGVsZi1iZmQuaDogQWRkIHByb3RvdHlwZXMgZm9yIF9iZmRfZWxmY29yZV9tYWtlX3BzZXVkb3NlY3Rpb24KCWFuZCBfYmZkX2VsZmNvcmVfc3RybmR1cC4KCShzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBlbGZfYmFja2VuZF9ncm9rX3Byc3RhdHVzCglhbmQgZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8uCgkqIGVsZi5jIChfYmZkX2VsZmNvcmVfbWFrZV9wc2V1ZG9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGVsZmNvcmVfZ3Jva19wcnN0YXR1cyk6IFVzZSBpdC4KCShlbGZjb3JlX21ha2Vfbm90ZV9wc2V1ZG9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmY29yZV9zdHJuZHVwKTogIFJlbmFtZSB0by4uLgoJKF9iZmRfZWxmY29yZV9zdHJuZHVwKTogSGVyZSwgYW5kIG1ha2UgZ2xvYmFsLgoJKGVsZmNvcmVfZ3Jva19wc2luZm8pOiBVc2UgX2JmZF9lbGZjb3JlX3N0cm5kdXAuCgkoZWxmY29yZV9ncm9rX25vdGUpOiBDYWxsIGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMKCWFuZCBlbGZfYmFja2VuZF9ncm9rX3BzaW5mbyBpZiBhdmFpbGFibGUuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9lbGYzMl9taXBzX2dyb2tfcHJzdGF0dXMpOiBOZXcgZnVuY3Rpb24uCgkoX2JmZF9lbGYzMl9taXBzX2dyb2tfcHNpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8pOiBEZWZpbmUuCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9ncm9rX3Byc3RhdHVzKTogRGVmYXVsdCB0byBOVUxMLgoJKGVsZl9iYWNrZW5kX2dyb2tfcHNpbmZvKTogTGlrZXdpc2UuCgkoZWxmTk5fYmVkKTogSW5jbHVkZSBlbGZfYmFja2VuZF9ncm9rX3Byc3RhdHVzIGFuZAoJZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8uCgoyMDAxLTA2LTI5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBDaGVjayBpZgoJaHBsaW5rLT5zZ290IGlzIE5VTEwgYmVmb3JlIGZpbGxpbmcgR09ULiAgQ2hlY2sgaWYgaHBsaW5rLT5zcGx0CglpcyBOVUxMIGJlZm9yZSBmaWxsaW5nIFBMVC4KCjIwMDEtMDYtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBSZXZlcnQgMTk5OS0wNC0xMC4KCjIwMDEtMDYtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogRG9uJ3QgbWFrZSBzeW1zIGR5bmFtaWMKCWhlcmUuLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogLi5ub3IgaGVyZS4uCgkoYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzKTogLi4gaW5zdGVhZCBkbyBzbyBoZXJlCglhZnRlciBnYyBoYXMgcnVuLgoKCSogZWxmMzItaHBwYS5jIChSRUxBVElWRV9EWU5BTUlDX1JFTE9DUyk6IERlbGV0ZS4KCShJU19BQlNPTFVURV9SRUxPQyk6IERlZmluZS4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF9lbnRyeSk6IEFsd2F5cyBpbmNsdWRlIHJlbG9jX2VudHJpZXMgZmllbGQuCgkoaHBwYV9saW5rX2hhc2hfbmV3ZnVuYyk6IEFsd2F5cyBpbml0IGl0LgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogTWFyayBzeW1ib2xzIGFzIEVMRl9MSU5LX05PTl9HT1RfUkVGIHRvCgljcmVhdGUgQ09QWSByZWxvY3Mgb25seSB3aGVuIHRoZSByZWxvYyBpcyBpbiBhIHJlYWQtb25seSBzZWN0aW9uLgoJSW5zdGVhZCwgYWxsb2NhdGUgc3BhY2UgZm9yIGEgZHluYW1pYyByZWxvYyB0byByZWZlcmVuY2UgdGhlCglsaWJyYXJ5IHN5bWJvbCBkaXJlY3RseS4gIEtlZXAgdHJhY2sgb2Ygc3BhY2Ugd2UgYWxsb2NhdGUgdXNpbmcKCXJlbG9jc19lbnRyaWVzLgoJKGhwcGFfZGlzY2FyZF9jb3BpZXMpOiBEZWxldGUsIGFuZCBtb3ZlIGNvZGUgdG8uLgoJKGFsbG9jYXRlX3BsdF9hbmRfZ290KTogLi5oZXJlLiAgUmVuYW1lIHRvCglhbGxvY2F0ZV9wbHRfYW5kX2dvdF9hbmRfZGlzY2FyZF9yZWxvY3MuICBSZW1vdmUgdW5uZWVkZWQgZHluYW1pYwoJcmVsb2NzIGZvciBub24tc2hhcmVkIGxpbmsuCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVcGRhdGUgY2FsbHMgdG8gYWJvdmUuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogV3JpdGUgb3V0IHRoZSBkeW5hbWljIHJlbG9jcyB1c2VkCglpbiBsaWV1IG9mIENPUFkgcmVsb2NzLgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBEb24ndCBtYWtlIHN5bXMgZHluYW1pYwoJaGVyZS4uCgkoZWxmX2kzODZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogLi5ub3IgaGVyZS4uCgkoYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzKTogLi4gaW5zdGVhZCBkbyBzbyBoZXJlCglhZnRlciBnYyBoYXMgcnVuLgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEZpeCBhIGNvbW1lbnQuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiA8Ul8zODZfMzIsIFJfMzg2X1BDMzI+KTogUmVhcnJhbmdlIGNvZGUKCWludm9sdmVkIGluIHdyaXRpbmcgcmVsb2Mgb3V0LgoKMjAwMS0wNi0yNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzIDxSXzM4Nl8zMiwgUl8zODZfUEMzMj4pOgoJRW5zdXJlIHN5bXMgYXJlIGR5bmFtaWMgaWYgd2UgbWlnaHQgYmUgZW1pdHRpbmcgYSByZWxvYy4KCShhbGxvY2F0ZV9wbHRfYW5kX2dvdF9hbmRfZGlzY2FyZF9yZWxvY3MpOiBEb24ndCBkaXNjYXJkIHJlbG9jcwoJZm9yIHVuZGVmd2VhayBvciB1bmRlZmluZWQgc3ltcy4uCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiA8Ul8zODZfMzIsIFJfMzg2X1BDMzI+KTogLi4gYW5kIGVtaXQuCgoJKiBlbGYzMi1pMzg2LmMgKGFsbG9jYXRlX3BsdF9hbmRfZ290X2FuZF9kaXNjYXJkX3JlbG9jcyk6IERpc2NhcmQKCXJlbG9jcyB3aXRob3V0IEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUMgc2V0LgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24gPFJfMzg2XzMyLCBSXzM4Nl9QQzMyPik6IFJlbW92ZQoJcmVkdW5kYW50IGJmZF9saW5rX2hhc2hfZGVmaW5lZCwgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrIHRlc3QuCgoyMDAxLTA2LTI0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjcHUtaTk2MC5jIChzY2FuXzk2MF9tYWNoKTogRG9uJ3QgbW9kaWZ5IGNvbnN0IGNoYXIgKi4gVXNlCglzdHJuY2FzZWNtcC9zdHJjYXNlY21wIGluc3RlYWQgb2Ygc3RybmNtcC9zdHJjbXAuCgoyMDAxLTA2LTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24gPFJfMzg2XzMyLCBSXzM4Nl9QQzMyPik6CglDaGVjayBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDIHRvIHNlZSBpZiBhIHN5bWJvbCBpcyBub3QgZGVmaW5lZAoJaW4gdGhlIHJlZ3VsYXIgb2JqZWN0IGZpbGUgYW5kIHRyZWF0IHRoZSB3ZWFrIGRlZmluaXRpb24gYXMKCXRoZSBub3JtYWwgb25lLgoKMjAwMS0wNi0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiA8Ul8zODZfR09UMzI+KTogVGlnaHRlbgoJdW5yZXNvbHZlZF9yZWxvYyB0ZXN0IHRvIGV4Y2x1ZGUgY2FzZXMgd2hlcmUgd2UgdXNlICJyZWxvY2F0aW9uIgoJYmVmb3JlIHNldHRpbmcgaXQgdG8gcG9pbnQgaW50byB0aGUgLmdvdC4gIFJlaW5zdGF0ZSBmdWRnZSBmb3IKCXVucmVzb2x2ZWQgcmVsb2NzIGluIGRlYnVnZ2luZyBzZWN0aW9ucy4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFJlcGxhY2UgdWdseQoJY29tcGxpY2F0ZWQgdGVzdHMgZm9yIHVucmVzb2x2YWJsZSByZWxvY3Mgd2l0aCBhIHNpbXBsZSBkaXJlY3QKCXNjaGVtZSB1c2luZyAidW5yZXNvbHZlZF9yZWxvYyIgdmFyLgoKCSogZWxmMzItaTM4Ni5jIChzdHJ1Y3QgZWxmX2kzODZfcGNyZWxfcmVsb2NzX2NvcGllZCk6IFJlbmFtZSB0bwoJZWxmX2kzODZfZHluX3JlbG9jcy4gIFVwZGF0ZSBjb21tZW50LgoJKHN0cnVjdCBlbGZfaTM4Nl9saW5rX2hhc2hfZW50cnkpOiBSZW5hbWUgcGNyZWxfcmVsb2NzX2NvcGllZCB0bwoJZHluX3JlbG9jcy4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBSZW1vdmUgYSBCRkRfQVNTRVJULCBjaGFuZ2UKCW90aGVycyB0byBhYm9ydHMuCgkoYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzKTogUmVwbGFjZSBCRkRfQVNTRVJUIHdpdGgKCWFib3J0LgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLiAgVGlkeSBSXzM4Nl9HT1QzMiBhbmQgZXJyb3IKCWhhbmRsaW5nIGNvZGUuCgoJQXZvaWQgY3JlYXRpbmcgQ09QWSByZWxvY3MgaWYgcG9zc2libGUuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogVHdlYWsgY29uZGl0aW9uIHVuZGVyCgl3aGljaCAuZ290IGNyZWF0ZWQuICBNYXJrIHN5bWJvbHMgdXNlZCBieSBSXzM4Nl8zMiBhbmQgUl8zODZfUEMzMgoJcmVsb2NzIGFzIEVMRl9MSU5LX05PTl9HT1RfUkVGIHRvIGNyZWF0ZSBDT1BZIHJlbG9jcyBvbmx5IHdoZW4gdGhlCglyZWxvYyBpcyBpbiBhIHJlYWQtb25seSBzZWN0aW9uLiAgSW5zdGVhZCwgYWxsb2NhdGUgc3BhY2UgZm9yIGEKCWR5bmFtaWMgcmVsb2MgdG8gcmVmZXJlbmNlIHRoZSBsaWJyYXJ5IHN5bWJvbCBkaXJlY3RseS4gIEtlZXAKCXRyYWNrIG9mIHNwYWNlIHdlIGFsbG9jYXRlIHVzaW5nIHBjcmVsX3JlbG9jc19jb3BpZWQuCgkoZGlzY2FyZF9jb3BpZXMpOiBEZWxldGUsIGFuZCBtb3ZlIGNvZGUgdG8gLi4KCShhbGxvY2F0ZV9wbHRfYW5kX2dvdCk6IC4uaGVyZS4gIFJlbmFtZSB0bwoJYWxsb2NhdGVfcGx0X2FuZF9nb3RfYW5kX2Rpc2NhcmRfcmVsb2NzLiAgUmVtb3ZlIHVubmVlZGVkIGR5bmFtaWMKCXJlbG9jcyBmb3Igbm9uLXNoYXJlZCBsaW5rLgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVwZGF0ZSBjYWxscyB0byBhYm92ZSBmdW5jdGlvbnMuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFdyaXRlIG91dCB0aGUgZHluYW1pYyByZWxvY3MuICBBZGQKCW1vcmUgdWdseSBsb2dpYyB0byBhdm9pZCAidW5yZXNvbHZhYmxlIHJlbG9jYXRpb24iIGVycm9yLiAgVXNlCglodGFiIHNob3J0Y3V0IGluIHBsYWNlIG9mIGVsZl9oYXNoX3RhYmxlIG1hY3JvLgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogQWxsb3cgdGhhdCBkeW5hbWljIC5nb3QgbWF5Cglub3QgYWx3YXlzIGJlIGNyZWF0ZWQgbm93LgoKMjAwMS0wNi0yMCAgQm8gVGhvcnNlbiAgPGJvQHN1c2UuY28udWs+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggbGlua2luZyBvZgoJc2hhcmVkIGxpYnJhcmllcy4KCjIwMDEtMDYtMTggIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBjb25maWd1cmUuaG9zdCAobWlwczY0LSotbGludXgpOiBSZWZvcm1hdC4KCjIwMDEtMDYtMjEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQWx3YXlzCglhbGxvY2F0ZSBsb2NhbCAuZ290IHNwYWNlLiAgVXNlIHNob3J0Y3V0cyBmcm9tIGhhc2ggdGFibGUgZm9yIC5nb3QKCWFuZCAucGx0IHJhdGhlciB0aGFuIGNvbXBhcmluZyBzZWN0aW9uIG5hbWVzLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogVXNlIGxvY2FsX3BsdF9yZWZjb3VudHMgdmFyIHJhdGhlciB0aGFuCglhZGp1c3RpbmcgaW5kZXggaW50byBsb2NhbF9nb3RfcmVmY291bnRzIHRvIGRvY3VtZW50IHdoYXQgd2UgYXJlCglyZWFsbHkgZG9pbmcuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogU2ltaWxhcmx5IGZvciBsb2NhbF9wbHRfb2Zmc2V0cy4KCVRpZHkgLmdvdCBhbmQgLnBsdCBlcnJvciBjaGVja2luZy4KCjIwMDEtMDYtMjAgIENhdGhlcmluZSBNb29yZSAgPGNsbUByZWRoYXQuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6CgllbGZfYmFja2VuZF9lbWl0X3JlbG9jczogTmV3IGZpZWxkOiBGdW5jdGlvbiBmb3IgZW1pdHRpbmcKCXJlbG9jcy4KCWVsZl9iYWNrZW5kX2NvdW50X3JlbG9jczogTmV3IGZpZWxkOiBGdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcKCXRoZSBudW1iZXIgb2YgcmVsb2NzIHRvIGJlIGVtaXR0ZWQuCgkqIGVsZnh4LXRhcmdldC5oOiBQcm92aWRlIGRlZmF1bHQgKE5VTEwpIHZhbHVlcyBmb3IKCWVsZl9iYWNrZW5kX2VtaXRfcmVsb2NzIGFuZCBlbGZfYmFja2VuZF9jb3VudF9yZWxvY3MuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uKTogTWFrZSB0aGUgaGFzaCB0YWJsZQoJYmlnIGVub3VnaCB0byBob2xkIHRoZSByZWxvY3MgY291bnRlZCBieSBlaXRoZXIgcmVsb2NfY291bnQgb3IKCW8tPnJlbG9jX2NvdW50LgoJKGVsZl9iZmRfZmluYWxfbGluaykgZW1pdF9yZWxvY3M6IE5ldyBib29sZWFuLCBzZXQgaWYgcmVsb2NzCglzaG91bGQgYmUgZW1pdHRlZCwgZWl0aGVyIGJlY2F1c2Ugb2YgYSBjb21tYW5kIGxpbmUgb3B0aW9uCglzdG9yZWQgaW4gdGhlIGluZm8gc3RydWN0dXJlIG9yIGJlY2F1c2UgdGhlIHRhcmdldCBwcm92aWRlcyBhCglzcGVjaWFsIHJlbG9jIGVtaXR0aW5nIGZ1bmN0aW9uLgoJSWYgdGhlIHRhcmdldCBwcm92aWRlcyBhIHJlbG9jIGNvdW50aW5nIGZ1bmN0aW9uIHVzZSBpdCwKCXVubGVzcyBwZXJmb3JtaW5nIGEgcmVsb2NhdGFibGUgbGluayBvciBlbWl0dGluZyBhbGwgcmVsb2NzLgoJQWxzbyBzZXQgdGhlIFNFQ19SRUxPQyBmbGFnIG9uIGFueSBvdXRwdXQgc2VjdGlvbiB3aGljaCB3aWxsCgljb250YWluIHJlbG9jcy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBlbWl0X3JlbG9jczogTmV3IGJvb2xlYW4sIHNldCBpZiByZWxvY3MKCXNob3VsZCBiZSBlbWl0dGVkLCBlaXRoZXIgYmVjYXVzZSBvZiBhIGNvbW1hbmQgbGluZSBvcHRpb24KCXN0b3JlZCBpbiB0aGUgaW5mbyBzdHJ1Y3R1cmUgb3IgYmVjYXVzZSB0aGUgdGFyZ2V0IHByb3ZpZGVzIGEKCXNwZWNpYWwgcmVsb2MgZW1pdHRpbmcgZnVuY3Rpb24uCglJZiB0aGUgdGFyZ2V0IHByb3ZpZGVzIGEgcmVsb2MgZW1pdHRpbmcgZnVuY3Rpb24sIHVzZSBpdCwKCXVubGVzcyBwZXJmb3JtaW5nIGEgcmVsb2NhdGFibGUgbGluayBvciBlbWl0dGluZyBhbGwgcmVsb2NzLgoKMjAwMS0wNi0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbHdheXMKCWFsbG9jYXRlIGxvY2FsIC5nb3Qgc3BhY2UuCgoyMDAxLTA2LTE5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggY3JlYXRpb24gb2YKCWR5bmFtaWMgc3ltYm9scy4KCjIwMDEtMDYtMTggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZWxmbGluay5oIChzdHJ1Y3QgZWxmX2Fzc2lnbl9zeW1fdmVyc2lvbl9pbmZvKTogUmVtb3ZlIG1lbWJlcgoJZXhwb3J0X2R5bmFtaWMuICBBbGwgdXNlcnMgY2hhbmdlZCB0byB1c2UgaW5mbyBtZW1iZXIuCglOQU1FKGJmZF9lbGYsc2l6ZV9keW5hbWljX3NlY3Rpb25zKSk6IFJlbW92ZSBwYXJhbWV0ZXIKCWV4cG9ydF9keW5hbWljLCBpbnN0ZWFkIHVzZSBtZW1iZXIgaW4gcGFyYW1ldGVyIGluZm8uCgkqIGJmZC1pbi5oIChiZmRfZWxmMzJfc2l6ZV9keW5hbWljX3NlY3Rpb25zLAoJYmZkX2VsZjY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDEtMDYtMTggIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2luZm9fZmFpbGVkKTogQWRkIGEgbmV3IGZpZWxkLCB2ZXJkZWZzLgoJKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBQYXNzIHZlcmRlZnMgdG8KCWVsZl9leHBvcnRfc3ltYm9sLgoJKGVsZl9leHBvcnRfc3ltYm9sKTogQ2hlY2sgZWlmLT52ZXJkZWZzIHRvIGRlY2lkZSBpZiBhIHN5bWJvbAoJc2hvdWxkIGJlIGV4cG9ydGVkLgoKMjAwMS0wNi0xNyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9saW5rX2hhc2hfZW50cnkpOiBBZGQgYSBuZXcgZmllbGQsCglyZWFkb25seV9yZWxvYywgdG8gcmVjb3JkIGlmIGEgcmVsb2NhdGlvbiBpbiB0aGUgLnJlbC5keW4KCXNlY3Rpb24gaXMgYWdhaW5zdCBhIHJlYWQtb25seSBzZWN0aW9uLgoJKG1pcHNfZWxmX2xpbmtfaGFzaF9uZXdmdW5jKTogSW5pdGlhbGl6ZSB0aGUgcmVhZG9ubHlfcmVsb2MKCWZpZWxkIHRvIGZhbHNlLgoJKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogUmVjb3JkIGlmIHRoZXJlIGlzIGEgcmVsb2NhdGlvbgoJaW4gdGhlIC5yZWwuZHluIHNlY3Rpb24gYWdhaW5zdCBhIHJlYWQtb25seSBzZWN0aW9uIGJ5IHNldHRpbmcKCURGX1RFWFRSRUwgb3IgcmVhZG9ubHlfcmVsb2MuCgkoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IENvcHkgcmVhZG9ubHlfcmVsb2MgaWYKCWl0IGlzIHRydWUuCgkoX2JmZF9taXBzX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBSZWNvcmQgREZfVEVYVFJFTCBpZgoJdGhlcmUgaXMgYSByZWxvY2F0aW9uIGluIHRoZSAucmVsLmR5biBzZWN0aW9uIGFnYWluc3QgYQoJcmVhZC1vbmx5IHNlY3Rpb24uCgkoX2JmZF9taXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBTZXQgRFRfVEVYVFJFTCBpZgoJREZfVEVYVFJFTCBpcyBzZXQuCgoyMDAxLTA2LTEyICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGNvZmZjb2RlLmggKHN0eXBfZmxhZ3NfdG9fc2VjX2ZsYWdzKTogQ2hhbmdlIHRvIGEgYm9vbGVhbgoJZnVuY3Rpb24uICBNb3ZlIGZsYWd3b3JkIHJlc3VsdCBpbnRvIHBhcmFtZXRlciBsaXN0LiAgUmVtb3ZlCgljb21tZW50IGFib3V0IHNldHRpbmcgYmZkX2Vycm9yX2hhbmRsZXIgdG8gaW50ZXJjZXB0IGZhaWx1cmUKCXJlc3VsdHMuCgkqIGNvZmZnZW4uYyAobWFrZV9hX3NlY3Rpb25fZnJvbV9maWxlKTogRXhhbWluZSByZXN1bHQgb2YKCWNhbGxpbmcgYmZkX2NvZmZfc3R5cF90b19zZWNfZmxhZ3MgYW5kIHBhc3MgYSBmYWlsdXJlIGJhY2sgdG8KCWNhbGxlci4KCSogZWNvZmYuaCAoc3R5cF9mbGFnc190b19zZWNfZmxhZ3MpOiBDaGFuZ2UgdG8gYSBib29sZWFuCglmdW5jdGlvbi4gIE1vdmUgZmxhZ3dvcmQgcmVzdWx0IGludG8gcGFyYW1ldGVyIGxpc3QuCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCSogbGliZWNvZmYuaDogUmVnZW5lcmF0ZS4KCjIwMDEtMDYtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogYW91dHguaCAoYWRqdXN0X3pfbWFnaWMpOiBPbmx5IHBhZCB0aGUgdGVzeHQgc2VjdGlvbiBpZiB0aGUgZGF0YQoJc2VjdGlvbiBpcyBnb2luZyB0byBmb2xsb3cgaXQuCgoyMDAxLTA2LTEyICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AcmVkaGF0LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX3Byb3BhZ2F0ZV92dGFibGVfZW50cmllcyk6IFJlcGxhY2UgRklMRV9BTElHTgoJd2l0aCB0aGUgZmlsZV9hbGlnbiBlbnRyeSBmcm9tIGVsZl9iYWNrZW5kX2RhdGEuCgkoZWxmX2djX3NtYXNoX3VudXNlZF92dGVudHJ5X3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZl9nY19yZWNvcmRfdnRlbnRyeSk6IExpa2V3aXNlLgoKMjAwMS0wNi0xMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZmxpbmsuaDogV2hpdGVzcGFjZSBjaGFuZ2VzLgoJKGVsZl9saW5rX3JlYWRfcmVsb2NzX2Zyb21fc2VjdGlvbik6IFVzZSAidW5zaWduZWQgaW50IiBpdGVyYXRvcgoJcmF0aGVyIHRoYW4gInVuc2lnbmVkIGNoYXIiLgoJKGVsZl9saW5rX291dHB1dF9yZWxvY3MpOiBMaWtld2lzZS4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBMaWtld2lzZS4KCShlbGZfcmVsb2NfbGlua19vcmRlcik6IExJa2V3aXNlLgoJKiBlbGYuYzogcy9DT05TVC9jb25zdC8uICBXaGl0ZXNwYWNlIGNoYW5nZXMuCgkqIGVsZjMyLW1pcHMuYzogRm9ybWF0dGluZyBmaXguCgoJKiBNYWtlZmlsZS5hbSAoU09VUkNFX0hGSUxFUyk6IEluY2x1ZGUgeGNvZmYtdGFyZ2V0LmgsIHJlbW92ZSB4Y29mZi5oLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogcG8vTWFrZS1pbjogUmVtb3ZlIHRyYWlsaW5nIHRhYi4KCjIwMDEtMDYtMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3BsdDBfZW50cnkpOiBDb3JyZWN0IGVycm9yIGluIGxhc3QKCWNoYW5nZS4KCShlbGYzMl9hcm1fcGx0X2VudHJ5KTogTGlrZXdpc2UuCgoyMDAxLTA2LTA4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6IEtlZXAgbmFtZXMgZm9yIGdsb2JhbCBzZWN0aW9uIHN5bWJvbHMuCgoyMDAxLTA2LTA3ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb25maWcuYmZkOiBQdXQgYmFjayBlY29mZiBmb3IgTGludXgvbWlwcy4gRmlybXdhcmVzIG9uIHNvbWUKCU1JUFMtYmFzZWQgbWFjaGluZXMgbmVlZCBpdC4KCjIwMDEtMDYtMDcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9vYmplY3RfcCk6IFNldCB0aGUgYmFkIHN5bXRhYgoJZm9yIFNHSSBvbmx5LgoKCSogY29uZmlnLmJmZDogUmVtb3ZlIGVjb2ZmIGZyb20gTGludXgvbWlwcy4KCjIwMDEtMDYtMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogQWRkIGFuCglhc3NlcnRpb24uCgkoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IEZpeCBWVEVOVFJZIHJlbG9jYXRpb247IHNldCBhbgoJYWxpZ25tZW50IG9mIDggZm9yIC5yZWxhIHNlY3Rpb25zOyBoYW5kbGUgZnVydGhlciByZWxvY2F0aW9ucy4KCjIwMDEtMDYtMDYgIENocmlzdGlhbiBHcm9lc3NsZXIgPGNwZ0BhbGFkZGluLmRlPgoKCSogY29mZi16OGsuYzogRml4IGZvcm1hdHRpbmcuCglGaXggaG93dG9zOiBob3d0by0+c2l6ZSB3YXMgYWx3YXlzIDEuCgoyMDAxLTA2LTA1ICBUaGllbW8gU2V1ZmVyICA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCgkqIGNvbmZpZ3VyZS5ob3N0IChtaXBzNjQqLSotbGludXgqKTogRGVmaW5lLgoKMjAwMS0wNi0wNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfZGlzY2FyZF9jb3BpZXMpOiBSZW5hbWUgdG8KCWRpc2NhcmRfY29waWVzLCBhbmQgdXNlIGVsZl9saW5rX2hhc2hfZW50cnkgYXJnIHJhdGhlciB0aGFuCgllbGZfaTM4Nl9saW5rX2hhc2hfZW50cnkuCgkoZWxmX2kzODZfbGlua19oYXNoX3RyYXZlcnNlKTogRGVsZXRlLgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFkanVzdCBjYWxsIHRvIGRpc2NhcmRfY29waWVzLgoJVGlkeSBzaXppbmcgb2YgZHluYW1pYyBzZWN0aW9ucy4KCShlbGZfaTM4Nl9jaGVja19yZWxvY3MgPFJfMzg2XzMyLCBSXzM4Nl9QQzMyPik6IFJlZmVyZW5jZSBjb3VudAoJcG9zc2libGUgLnBsdCBlbnRyaWVzLgoJKGVsZl9pMzg2X2djX3N3ZWVwX2hvb2spOiBMaWtld2lzZS4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBEaXNjYXJkIC5wbHQgZW50cmllcyBmb3IKCWV2ZXJ5dGhpbmcgd2l0aCBwbHQucmVmY291bnQgPD0gMC4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogRG9uJ3QgYWxsb2NhdGUgLmdvdCBhbmQKCS5yZWxnb3Qgc3BhY2UgaGVyZS4KCShlbGZfaTM4Nl9nY19zd2VlcF9ob29rKTogLi5hbmQgbm8gbmVlZCB0byBkZWFsbG9jYXRlIGhlcmUuLgoJKGVsZl9pMzg2X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IC4uYW5kIGRvbid0IGFsbG9jYXRlIC5wbHQgYW5kCgkucmVsLnBsdCBoZXJlLi4KCShhbGxvY2F0ZV9wbHRfYW5kX2dvdCk6IC4uaW5zdGVhZCBkbyBpdCBhbGwgaGVyZS4gIE5ldyBmdW5jdGlvbi4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbGxvY2F0ZSBsb2NhbCAuZ290IHNwYWNlIGFuZAoJY2FsbCBhbGxvY2F0ZV9wbHRfYW5kX2dvdC4gIE5vIG5lZWQgdG8gemFwIC5yZWxnb3QgaWYgbm90IGR5bmFtaWMuCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rKTogRGVsZXRlLiAgKGllLiB1c2UgcmVndWxhciBmaW5hbCBsaW5rCglyYXRoZXIgdGhhbiBnYyB2YXJpZXR5KS4KCShXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MKTogRGVmaW5lLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBVc2UgaXQgaGVyZSBhbmQgY29ycmVjdCBoYW5kbGluZyBvZgoJUl8zODZfR09UMzIuICBQcm92aWRlIHNlY3Rpb24gYW5kIG9mZnNldCBmb3IgInVucmVzb2x2YWJsZQoJcmVsb2NhdGlvbiIgZXJyb3IgbWVzc2FnZS4KCShlbGZfaTM4Nl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBDb3JyZWN0IGhhbmRsaW5nIG9mIFJfMzg2X0dPVDMyLgoKCSogZWxmMzItaTM4Ni5jIChzdHJ1Y3QgZWxmX2kzODZfbGlua19oYXNoX3RhYmxlKTogQWRkIHNnb3QsCglzZ290cGx0LCBzcmVsZ290LCBzcGx0LCBzcmVscGx0LCBzZHluYnNzLCBzcmVsYnNzIGZpZWxkcy4KCShlbGZfaTM4Nl9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCB0aGVtLgoJKGNyZWF0ZV9nb3Rfc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShlbGZfaTM4Nl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IFNldCB0byBhYm92ZS4KCShlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBVc2Ugc2hvcnRjdXRzIGZyb20gaGFzaCB0YWJsZSByYXRoZXIgdGhhbgoJY2FsbGluZyBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZS4KCShlbGZfaTM4Nl9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoZWxmX2kzODZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmX2kzODZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1ocHBhLmMgKGFsbG9jYXRlX3BsdF9hbmRfZ290KTogU2tpcCBpbmRpcmVjdCBhbmQgd2FybmluZyBzeW1zLgoKMjAwMS0wNi0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX29iamVjdF9wKTogQ2hlY2sgRUxGT1NBQklfTElOVVgKCWFuZCBFTEZPU0FCSV9IUFVYLgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfb2JqZWN0X3ApOiBMaWtld2lzZS4KCjIwMDEtMDYtMDIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGFvdXQtY3Jpcy5jIChNQUNIVFlQRV9PSyk6IE5ldy4gRGVmaW5lZC4KCjIwMDEtMDYtMDIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogc2VjdGlvbi5jIChfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQpOiBIYW5kbGUgTlVMTAoJb3V0cHV0X3NlY3Rpb24uCgoyMDAxLTA2LTAyICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb25maWcuYmZkIChwb3dlcnBjLSotYWl4KiwgcG93ZXJwYy0qLWJlb3MqLCByczYwMDAtKi0qKTogQWRkCglyczYwMDBjb2ZmNjRfdmVjIG9ubHkgaWYgQkZENjQgaXMgZGVmaW5lZC4KCShwb3dlcnBjNjQtKi1haXgqKTogRW5hYmxlIG9ubHkgaWYgQkZENjQgaXMgZGVmaW5lZC4KCjIwMDEtMDYtMDIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNvZmYtaWE2NC5jIChpYTY0Y29mZl9vYmplY3RfcCk6IFJld3JpdGUgd2l0aAoJZXh0ZXJuYWxfUEVJX0RPU19oZHIgYW5kIGV4dGVybmFsX1BFSV9JTUFHRV9oZHIuCgoyMDAxLTA2LTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgUEM4CglyZWxvY2F0aW9uLCBzbWFsbCByZWZvcm1hdHRpbmcuCgoyMDAxLTA1LTI5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBSX1g4Nl82NF82NC4KCShlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMS0wNS0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IERvbid0IE5FRURfUExUIGZvcgoJbWlsbGljb2RlLiAgRG9uJ3QgYWxsb2NhdGUgLmdvdCBhbmQgLnJlbGEuZ290IHNwYWNlIGhlcmUuLgoJKGVsZjMyX2hwcGFfZ2Nfc3dlZXBfaG9vayk6IC4uYW5kIG5vIG5lZWQgdG8gZGVhbGxvY2F0ZSBoZXJlLi4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IC4uYW5kIGRvbid0IGFsbG9jYXRlIC5wbHQgYW5kCgkucmVsYS5wbHQgaGVyZS4uCgkoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogLi5ub3IgaGVyZS4uCgkoYWxsb2NhdGVfcGx0X2FuZF9nb3QpOiAuLmluc3RlYWQgZG8gaXQgYWxsIGhlcmUuICBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbGxvY2F0ZSBsb2NhbCAuZ290IHNwYWNlIGFuZAoJY2FsbCBhbGxvY2F0ZV9wbHRfYW5kX2dvdC4gIE5vIG5lZWQgdG8gemFwIC5nb3QgaWYgbm90IGR5bmFtaWMuCgkoZWxmMzJfaHBwYV9maW5hbF9saW5rKTogQ2FsbCByZWd1bGFyIGJmZF9maW5hbF9saW5rIGluc3RlYWQgb2YKCWdjX2NvbW1vbl9maW5hbF9saW5rLgoJKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wpOiBEZWZpbmUuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlIGl0IGhlcmUuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBSZW1vdmUgc3VwZXJmbHVvdXMgdGVzdCBvZgoJZHluYW1pY19zZWN0aW9uc19jcmVhdGVkLgoJKGhwcGFfdHlwZV9vZl9zdHViKTogRG9uJ3QgTE9OR19CUkFOQ0hfVklBX1BMVCBpZiBtaWxsaWNvZGUgc3ltLgoKMjAwMS0wNS0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0Xzg2XzY0X3NpemVfaW5mbyk6IFJlbW92ZSwgd2UgY2FuIHVzZSB0aGUKCWdlbmVyaWMgdmVyc2lvbiBzaW5jZSB3ZSB3YW50IGEgaGFzaHNpemUgb2YgNC4KCShlbGZfYmFja2VuZF9zaXplX2luZm8pOiBMaWtld2lzZS4KCjIwMDEtMDUtMjggIFRoaWVtbyBTZXVmZXIgIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogZWxmbGluay5oIChlbGZfbGlua19zaXplX3JlbG9jX3NlY3Rpb24pOiBVc2UgYmZkX3ptYWxsb2MgaW5zdGVhZCBvZgoJYSB6ZXJvaW5nIGxvb3AuCgkoZWxmX2xpbmtfb3V0cHV0X3JlbG9jcyk6IEhhbmRsZSBNSVBTIEVMRjY0IHJlbG9jYXRpb25zIGNvcnJlY3RseS4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBMaWtld2lzZS4KCShlbGZfcmVsb2NfbGlua19vcmRlcik6IExpa2V3aXNlLgoJKGVsZl9maW5pc2hfcG9pbnRlcl9saW5rZXJfc2VjdGlvbik6IFR5cG8uIEhhbmRsZSBNSVBTIEVMRjY0CglyZWxvY2F0aW9ucyBjb3JyZWN0bHkuCgoyMDAxLTA1LTI4ICBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CgoJKiBlbGYzMi1hcm0uaDogZml4IFBMVCBnZW5lcmF0aW9uIGZvciBiaWcgZW5kaWFuIEFSTQoKMjAwMS0wNS0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBTZXQgdXAgLnBsdCBlbnRyaWVzCglmb3Igc3ltYm9scyBmb3JjZWQgbG9jYWwgdGhhdCBuZWVkIHBsYWJlbHMuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBEb24ndCBhbGxvY2F0ZSBzcGFjZSBpbgoJLnBsdC5yZWxhIGZvciBsb2NhbCBzeW1zIGlmIG5vbi1zaGFyZWQuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IE1hc2sgbHNiIG9mIHBsdC5vZmZzZXQuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBBYm9ydCBpZiBsc2Igb2YgcGx0Lm9mZnNldCBzZXQuCgkoY2xvYmJlcl9taWxsaWNvZGVfc3ltYm9scyk6IENvcnJlY3QgY29tbWVudC4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoKMjAwMS0wNS0yOCAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogcmVsb2MuYzogQWRkIEJGRF9SRUxPQ19TUEFSQ19VQTE2IGFuZCBCRkRfUkVMT0NfU1BBUkNfVUE2NC4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCSogZWxmMzItc3BhcmMuYzogRW5hYmxlIEJGRF9SRUxPQ19TUEFSQ19VQTE2LCBCRkRfUkVMT0NfU1BBUkNfVUEzMgoJYW5kIEJGRF9SRUxPQ19TUEFSQ19VQTY0IG1hcHBpbmcKCSogZWxmNjQtc3BhcmMuYzogTGlrZXdpc2UuCgoyMDAxLTA1LTI1ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFMpOiBSZW1vdmUgY29mZi1wbWFjLmxvLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IFJlbW92ZSBjb2ZmLXBtYWMuYy4KCShjb2ZmLXJzNjAwMC5sbyk6IFJlbW92ZSB0aGUgb2xkIGRlcGVuZGVuY3kuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKCSogY29uZmlndXJlLmluIChwbWFjX3hjb2ZmX3ZlYyk6IFJlcGxhY2UgY29mZi1wbWFjLmxvIHdpdGgKCWNvZmYtcnM2MDAwLmxvLgoKMjAwMS0wNS0yNSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY29mZi1yczYwMDAuYyAocnM2MDAwY29mZl92ZWMpOiBVc2UgcnM2MDAwY29mZl9jb3JlX3AsCglyczYwMDBjb2ZmX2NvcmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcCwKCXJzNjAwMGNvZmZfY29yZV9maWxlX2ZhaWxpbmdfY29tbWFuZCBhbmQKCXJzNjAwMGNvZmZfY29yZV9maWxlX2ZhaWxpbmdfc2lnbmFsIG9ubHkgaWYgQUlYX0NPUkUgaXMKCWRlZmluZWQuCgkocG1hY194Y29mZl92ZWMpOiBMaWtld2lzZS4KCSogY29mZjY0LXJzNjAwMC5jIChyczYwMDBjb2ZmNjRfdmVjKTogTGlrZXdpc2UuCgoyMDAxLTA1LTI1ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEByZWRoYXQuY29tPgoKCSogZWxmeHgtaWE2NC5jIChhbGxvY2F0ZV9keW5yZWxfZW50cmllcyk6IERvbid0IGFsbG9jYXRlIGFuIGVudHJ5Cglmb3IgX19HTE9CX0RBVEFfUFRSIG9uIEFJWDUuICBDbGVhbiB1cCBzb21lIHJlbG9jYXRpb24gYnVncy4KCjIwMDEtMDUtMjUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCgkqIGxpYmNvZmYuaDogTGlrZXdpc2UuCgoyMDAxLTA1LTI1ICBBbGFuIE1vZHJhICA8YW1vZHJhQG9uZS5uZXQuYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGFsbG93Cgl1bmRlZmluZWQgbWlsbGljb2RlIHN5bXMgaW4gc2hhcmVkIGxpYnMuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IFR1cm4gQkZEX0FTU0VSVHMgaW50byBhYm9ydHMuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoyMDAxLTA1LTI0ICBUb20gUml4IDx0cml4QHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5hbSBjb2ZmLXBtYWMgYmZkIG5vdyBkZWZpbmVkIGluIGNvZmYtcnM2MDAwLmMKCXhjb2ZmLXRhcmdldC5oIG5vdCB1c2VkIHRvIGRlZmluZSByczYwMDAgb3IgcHBjIGJmZC4KCSogTWFrZWZpbGUuaW4gc2FtZQoKCSogYmZkLWluLmggOiAoc3RydWN0IGxpbmVub19jYWNoZV9lbnRyeSkgcHJvbW90ZSBlbGVtZW50ICJvZmZzZXQiCgl0byA2NCBiaXQuCgoJKiBjb2ZmLXJzNjAwMC5jIDogTWFueSBjaGFuZ2VzIGZvciA2NCBiaXQgc3VwcG9ydC4gIE1vdmUgY29tbW9uCgkzMi82NCBjb2RlIHRvIHhjb2ZmbGluay5jLiAgRXhwbGljdGx5IGRlZmluZSB0aGUgcnM2MDAwY29mZl92ZWMKCWFuZCBwbWFjX3hjb2ZmX3ZlYwoKCSogY29mZjY0LXJzNjAwMC5jIDogTWFueSBjaGFuZ2VzIGZvciA2NCBiaXQgc3VwcG9ydC4gIDY0IGJpdAoJbGlua2VyIG5vdyBzdXBwb3J0ZWQuICBFeHBsaWN0bHkgZGVmaW5lIHRoZSByczYwMDBjb2ZmNjRfdmVjLgoKCSogY29mZmNvZGUuaCA6IChjb2ZmX3NldF9hcmNoX21hY2hfaG9vaykgeGNvZmYgNjQgYml0IHN1cHBvcnQKCShjb2ZmX3ByaW50X2F1eCkgc2FtZQoJKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKSBzYW1lCgkoY29mZl9zbHVycF9saW5lX3RhYmxlKSBzYW1lCgoJKiBjb2ZmZ2VuLmMgOiAoY29mZl9maXhfc3ltYm9sX25hbWUpIGZvcm1hdHRpbmcKCShjb2ZmX21hbmdsZV9zeW1ib2xzKSB4Y29mZiA2NCBiaXQgc3VwcG9ydAoJKGNvZmZfd3JpdGVfc3ltYm9sKSBzYW1lCgkoY29mZl93cml0ZV9hbGllbl9zeW1ib2wpIHNhbWUKCShjb2ZmX3dyaXRlX25hdGl2ZV9zeW1ib2wpIHNhbWUKCShjb2ZmX3dyaXRlX3N5bWJvbHMpIHNhbWUKCShjb2ZmX2dldF9zeW1ib2xfaW5mbykgc2FtZQoJKGJmZF9jb2ZmX2dldF9zeW1lbnQpIHNhbWUKCShjb2ZmX3ByaW50X3N5bWJvbCkgc2FtZQoKCSogY29uZmlnLmJmZCA6IGFkZCBwb3dlcnBjNjQtKi1haXgqIHRhcmdldAoKCSogbGliY29mZi1pbi5oIDogZm9ybWF0dGluZwoKCSogbGliY29mZi5oIDogbW92ZSB4Y29mZiBleHRlcm4gZGVjbGFyYXRpb25zIHRvIGxpYnhjb2ZmLmgKCgkqIGxpYnhjb2ZmLmggOiBOZXcgZmlsZQoKCSogeGNvZmZsaW5rLmMgOiBNYW55IGNoYW5nZXMgZm9yIHhjb2ZmNjQgc3VwcG9ydC4gIE1vdmUgY29tbW9uCglzdHJ1Y3R1cmVzIHRvIGluY2x1ZGUvY29mZi94Y29mZi5oLiAgTW92ZSBzcGVjaWZpYyBzdHJ1Y3R1cmUgdG8KCWJhY2tlbmRzIGNvZmYtcnM2MDAwLmMgYW5kIGNvZmY2NC1yczYwMDAuYy4gIFVzZSBuZXcgYmFja2VuZAoJZnVuY3Rpb25zLCBkZWZpbmVkIGluIGxpYnhjb2ZmLmgsIHRvIGlzb2xhdGUgMzIvNjQgZGVwZW5kZW5jaWVzLgoKCShiZmRfeGNvZmZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKSA6IHNwZWNpYWwgX19ydGluaXQgc3ltYm9sIGZvcgoJYWl4NC4yKyAtYmluaXRmaW5pLgoKCSh4Y29mZl9idWlsZF9sZHN5bXMpIDogaGFuZGxlIHNwZWNpYWwgX19ydGluaXQgc3ltYm9sLgoKMjAwMS0wNS0yMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9zbHVycF9yZWxvY190YWJsZSk6IEZpeCB0eXBvCglzL0VOVElSRVMvRU5UUklFUy8uCgoyMDAxLTA1LTIzICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoKCSogcmVsb2MuYyAoYmZkX3JlbG9jX2NvZGVfcmVhbCk6IEFkZCBNSVBTIEVMRjY0IHJlbG9jYXRpb25zLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogYW91dHguaCAoYW91dF9AdmFye3NpemV9X21hY2hpbmVfdHlwZSk6IEFkZCBNSVBTIHIxMmsgc3VwcG9ydC4KCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfbWlwczEyMDAwKTogRGVmaW5lLgoJKiBjcHUtbWlwcy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIE1JUFMgcjEyayBzdXBwb3J0LgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEFkZCBNSVBTIHIxMmsKCXN1cHBvcnQuCgkoX2JmZF9taXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2Ugb2ZmaWNpYWwgYmZkIHR5cGVkZWYuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogZWxmeHgtdGFyZ2V0Lmg6IERvIG5vdCByZWRlZmluZSBiZmRfZWxmTk5fYmZkX21ha2VfZGVidWdfc3ltYm9sLgoKMjAwMS0wNS0yMyAga2F6IEtvamltYSAgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CgoJKiBlbGYzMi1zaC5jIChlbGZfc2hfcGx0MF9lbnRyeV9iZSwgZWxmX3NoX3BsdDBfZW50cnksCgllbGZfc2hfcGx0X2VudHJ5X2JlLCBlbGZfc2hfcGx0X2VudHJ5LCBlbGZfc2hfcGljX3BsdF9lbnRyeV9iZSwKCWVsZl9zaF9waWNfcGx0X2VudHJ5KTogTmV3IFBMVCBjb2RlLCB0aGF0IGRvZXMgbm90IHVzZSByMiwgc2luY2UKCXRoYXQgaXMgdXNlZCBieSBHQ0MuCgoyMDAxLTA1LTIzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGVsZi1iZmQuaCAoTlVNX1NIRFJfRU5UUklFUyk6IE5ldyBtYWNybzogY29tcHV0ZSB0aGUgbnVtYmVyCglvZiBlbnRyaWVzIGluIGEgc3RydWN0dXJlZCBzZWN0aW9uLgoJKiBlbGYuYzogVXNlIG5ldyBtYWNyby4KCSogZWxmMzItaTM4Ni5jOiBVc2UgbmV3IG1hY3JvLgoJKiBlbGYzMi1taXBzLmM6IFVzZSBuZXcgbWFjcm8uCgkqIGVsZjY0LWFscGhhLmM6IFVzZSBuZXcgbWFjcm8uCgkqIGVsZjY0LXNwYXJjLmM6IFVzZSBuZXcgbWFjcm8uCgkqIGVsZmNvZGUuaDogVXNlIG5ldyBtYWNyby4KCSogZWxmbGluay5oOiBVc2UgbmV3IG1hY3JvLgoKMjAwMS0wNS0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBiZmRpbnQudGV4aTogUmVwbGFjZSAtb2Zvcm1hdCB3aXRoIC0tb2Zvcm1hdC4KCjIwMDEtMDUtMjEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGR3YXJmMi5jIChkZWNvZGVfbGluZV9pbmZvKTogRml4IGVycm9yIG1lc3NhZ2UuCgkocmVhZF9hYmJyZXZzKTogRml4IHRlc3QgZm9yIG9mZnNldCBhcyBzdWdnZXN0ZWQgYnkgQWxhbiBNb2RyYSBhbmQKCWFkanVzdCBlcnJvciBtZXNzYWdlLgoKMjAwMS0wNS0xOCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBSZXZlcnQgdGhlIGxhc3QKCWNoYW5nZS4KCjIwMDEtMDUtMTcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoY2xvYmJlcl9taWxsaWNvZGVfc3ltYm9scyk6IFRlbXBvcmFyaWx5IHNldAoJRUxGX0xJTktfRk9SQ0VEX0xPQ0FMIHRvIHN1aXQgMjAwMS0wNC0zMCBjaGFuZ2UuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IEFkZCBhbiBhc3NlcnQgdG8gY2hlY2sgcGx0Lm9mZnNldC4KCjIwMDEtMDUtMTcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBTZXQgdGhlCgl2ZXJzaW9uIGRlZmluaXRpb24gdG8gYmFzZW5hbWUgb2YgdGhlIG91dHB1dCBmaWxlbmFtZS4KCjIwMDEtMDUtMTcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogU2V0IERUX05FRURFRCB0bwoJYmFzZW5hbWUgb2YgdGhlIGJmZCBmaWxlbmFtZS4KCjIwMDEtMDUtMTYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCgkqIHNlY3Rpb24uYyAoYXNlY3Rpb24pOiBBZGQgbGlua2VyX2hhc19pbnB1dCBmaWVsZC4KCShTVERfU0VDVElPTik6IEFkanVzdCBpbml0aWFsaXphdGlvbiB0byBzdWl0LgoJKiBlY29mZi5jIChiZmRfZGVidWdfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAxLTA1LTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IERvbid0IHJlbGF4CgluZWdhdGl2ZSAzMi1iaXQgb3BlcmFuZHMgdG8gMTYgb3BlcmFuZHMgd2hlbiB0aGUgb3BlcmFuZCBpcwoJZ29pbmcgdG8gYmUgemVyby1leHRlbmRlZCBieSB0aGUgbW9kaWZpZWQgb3Bjb2RlLgoKMjAwMS0wNS0xMiAgUGV0ZXIgVGFyZ2V0dCAgPHBldGVyLnRhcmdldHRAYXJjY29yZXMuY29tPgoKCSogY3B1LWFyYy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIGVudHJ5ICdiYXNlJyByZXByZXNlbnRpbmcgb2xkCgluYW1lIGZvciAnYXJjNScgY29yZSB2ZXJzaW9ucy4KCShiZmRfYXJjX2FyY2gpOiBNYWtlIGJmZF9tYWNoX2FyY182IGRlZmF1bHQuCgoJKiBlbGYzMi1hcmMuYyAoYXJjX2VsZl9vYmplY3RfcCk6IE1ha2UgRV9BUkNfTUFDSF9BUkM2IGRlZmF1bHQKCWFyY2hpdGVjdHVyZS4KCShhcmNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBNYWtlIGJmZF9tYWNoX2FyY182IGRlZmF1bHQuCgoyMDAxLTA1LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZnh4LWlhNjQuYyAoaXNfdW53aW5kX3NlY3Rpb25fbmFtZSk6IENvbnNpZGVyIGxpbmtvbmNlIHVud2luZAoJc2VjdGlvbnMgYXMgd2VsbC4KCShlbGZOTl9pYTY0X2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBNYXAgLmdudS5saW5rb25jZS5pYTY0dW53LkZPTwoJdG8gLmdudS5saW5rb25jZS50LkZPTyB0ZXh0IHNlY3Rpb24uCgoyMDAxLTA1LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG1lcmdlLmMgKHN0cnVjdCBzZWNfbWVyZ2VfaGFzaF9lbnRyeSk6IEFkZCB1LmVudHNpemUgYW5kIHUuc3VmZml4CglmaWVsZHMsIGNoYW5nZSBzZWMgaW50byBzZWNpbmZvLgoJKHN0cnVjdCBzZWNfbWVyZ2VfaW5mbyk6IEFkZCBjaGFpbiwgcmVtb3ZlIGxhc3QgZmllbGRzLgoJKHN0cnVjdCBzZWNfbWVyZ2Vfc2VjX2luZm8pOiBBZGQgbmV4dCwgc2VjLCBwc2VjaW5mbyBmaWVsZHMuCgkoc2VjX21lcmdlX2hhc2hfbG9va3VwKTogSWYgbG9va3VwIGNvdWxkIG5vdCB1c2UgYSBzdHJpbmcgb25seQoJYmVjYXVzZSBpdCBoYXMgYmFkIGFsaWdubWVudCwgbWFyayB0aGUgb2xkIHN0cmluZyBmb3IgZGVsZXRpb24uCgkoc2VjX21lcmdlX2FkZCk6IEFkZCBzZWNpbmZvIGFyZ3VtZW50LiBEb24ndCBjb21wdXRlIGVudHJ5J3MKCXBvc2l0aW9uLCBpbnN0ZWFkIHJlY29yZCB0aGUgc2VjdGlvbi4KCShzZWNfbWVyZ2VfZW1pdCk6IFVwZGF0ZSBmb3IgdGhlIHNlYyBpbnRvIHNlY2luZm8gY2hhbmdlIGluCglzdHJ1Y3Qgc2VjX21lcmdlX2hhc2hfZW50cnkuCgkoX2JmZF9tZXJnZV9zZWN0aW9uKTogT25seSByZWNvcmQgdGhlIHNlY3Rpb24gZm9yIG1lcmdpbmcsIGRlZmVyCglwdXR0aW5nIHN0cmluZ3MgaW50byB0aGUgaGFzaCB0YWJsZS4KCShjbXBsZW5ndGhlbnRyeSwgbGFzdDRfZXEsIGxhc3RfZXEsIHJlY29yZF9zZWN0aW9uLCBtZXJnZV9zdHJpbmdzLAoJX2JmZF9tZXJnZV9zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbnMuCgkoX2JmZF9tZXJnZWRfc2VjdGlvbl9vZmZzZXQpOiBVcGRhdGUgZm9yIHRoZSBzZWNfbWVyZ2VfaGFzaF9lbnRyeQoJY2hhbmdlcy4KCSogbGliYmZkLWluLmggKF9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBBZGQgcHJvdG90eXBlLgoJKF9iZmRfbm9saW5rX2JmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCSogbGliYmZkLmg6IExpa2V3aXNlLgoJKGJmZF9nZW5lcmljX21lcmdlX3NlY3Rpb25zKTogQWRkIHByb3RvdHlwZS4KCSogdGFyZ2V0cy5jIChCRkRfSlVNUF9UQUJMRV9MSU5LKTogQWRkIF9iZmRfbWVyZ2Vfc2VjdGlvbnMuCgkoc3RydWN0IGJmZF90YXJnZXQpOiBMaWtld2lzZS4KCSogYmZkLmMgKGJmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCSogYmZkLWluMi5oOiBSZWJ1aWx0LgoJKiBlbGYuYyAoX2JmZF9lbGZfbWVyZ2Vfc2VjdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkqIGVsZi1iZmQuaCAoX2JmZF9lbGZfbWVyZ2Vfc2VjdGlvbnMpOiBBZGQgcHJvdG90eXBlLgoJKiBlbGZ4eC10YXJnZXQuaCAoYmZkX2VsZk5OX2JmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCSogcmVsb2MuYyAoYmZkX2dlbmVyaWNfbWVyZ2Vfc2VjdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkqIHZtcy5jICh2bXNfYmZkX21lcmdlX3NlY3Rpb25zKTogTmV3IGZ1bmN0aW9uLgoJKiBhb3V0LWFkb2JlLmMgKGFvdXRfMzJfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBhb3V0LXRhcmdldC5oIChNWV9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGFvdXQtdGljMzAuYyAoTVlfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBiaW5hcnkuYyAoYmluYXJ5X2JmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCSogYm91dC5jIChiX291dF9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGNvZmYtYWxwaGEuYyAoX2JmZF9lY29mZl9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGNvZmZjb2RlLmMgKGNvZmZfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBjb2ZmLW1pcHMuYyAoX2JmZF9lY29mZl9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGkzODZtc2Rvcy5jIChtc2Rvc19iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGkzODZvczlrLmMgKG9zOWtfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBpZWVlLmMgKGllZWVfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBpaGV4LmMgKGloZXhfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBubG0tdGFyZ2V0LmggKG5sbV9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIG9hc3lzLmMgKG9hc3lzX2JmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCSogcHBjYm9vdC5jIChwcGNib290X2JmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCSogc29tLmMgKHNvbV9iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIHNyZWMuYyAoc3JlY19iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIHRla2hleC5jICh0ZWtoZXhfYmZkX21lcmdlX3NlY3Rpb25zKTogRGVmaW5lLgoJKiB2ZXJzYWRvcy5jICh2ZXJzYWRvc19iZmRfbWVyZ2Vfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIHhjb2ZmLXRhcmdldC5oIChfYmZkX3hjb2ZmX2JmZF9tZXJnZV9zZWN0aW9ucyk6IERlZmluZS4KCjIwMDEtMDUtMTEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogZHdhcmYxLmMgKF9iZmRfZHdhcmYxX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2hhbmdlIHR5cGUgb2YgJ2FkZHInCgl0byBiZSB1bnNpZ25lZCBsb25nLCBpbiBvcmRlciB0byBtYXRjaCBpdHMgdXNlLgoKMjAwMS0wNS0xMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogbGlua2VyLmMgKF9iZmRfZ2VuZXJpY19saW5rX2FkZF9vbmVfc3ltYm9sKTogQ2hlY2sgbG9vcCBvbgoJaW5kaXJlY3Qgc3ltYm9scy4KCjIwMDEtMDUtMDkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRml4IGEgdHlwby4gQWxsb2NhdGUKCXZlcnN5bWhkci0+c2hfc2l6ZSBieXRlcyBmb3IgZXh0dmVyc3ltIGluc3RlYWQgb2YgaGRyLT5zaF9zaXplLgoJUmVtb3ZlIHRoZSB1bnVzZWQgdmVyaWFibGUgYGR5bnZlcicuCgoyMDAxLTA1LTA4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGNvZmYtaTM4Ni5jIChjb2ZmX2kzODZfcmVsb2MpOiBEb24ndCBkdW1wIGNvcmUgaWYgb3V0cHV0X2JmZCBpcwoJTlVMTCBvciBpcyBub3QgQ09GRi4KCShjb2ZmX2kzODZfcnR5cGVfdG9faG93dG8pOiBEb24ndCBkdW1wIGNvcmUgaWYgb3V0cHV0IHNlY3Rpb24KCW93bmVyIGlzIG5vdCBDT0ZGLgoKMjAwMS0wNS0wNyAgVGhpZW1vIFNldWZlciA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCgkqIGVjb2ZmLmMgKGJmZF9kZWJ1Z19zZWN0aW9uKTogRml4IGluaXRpYWxpemF0aW9uLgoJKiBlbGYuYyAoX2JmZF9lbGZfc2x1cnBfdmVyc2lvbl90YWJsZXMpOiBDaGFuZ2UgbWF4aWR4IHRvIHVuc2lnbmVkLCBpdAoJaXMgYWx3YXlzIGEgcG9zaXRpdmUgaW50ZWdlci4gQ2FzdCBhd2F5IHNpZ24gbWlzbWF0Y2guCgkqIGVsZjMyLW1pcHMuYzogRml4IG1pc2xlYWRpbmcgY29tbWVudCBhbmQgdHlwby4KCShfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbik6IFJlbW92ZSB1bnVzZWQgYXR0cmlidXRlLCB1c2UKCWNvcnJlY3QgZGF0YSB0eXBlLgoJKiBlbGZsaW5rLmM6IEZpeCB0eXBvLgoJKF9iZmRfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogUmVtb3ZlIHN1cGVyZmx1b3VzIGluaXRpYWxpemF0aW9uLgoJKiBlY29mZnN3YXAuaCAoZWNvZmZfc3dhcF9mZHJfaW4pOiBDYXN0IGF3YXkgc2lnbiBtaXNtYXRjaC4KCjIwMDEtMDUtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChTUkVMMTYsIFNSRUwzMiwgU1JFTDY0KTogU2V0IHBjcmVsX29mZnNldCB0cnVlLgoKMjAwMS0wNS0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBTZXQKCUVGX0FSTV9IQVNFTlRSWSBpZiB0aGUgc3RhcnQgYWRkcmVzcyBpcyBzZXQuCgoyMDAxLTA1LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIHRhcmdldHMuYyAoX2JmZF90YXJnZXRfdmVjdG9yX2VudHJpZXMpOiBDb21wdXRlIHZhbHVlIGJhc2VkIG9uCgl0aGUgc2l6ZSBvZiB0aGUgX2JmZF90YXJnZXRfdmVjdG9yIGFuZCBub3QgYmZkX3RhcmdldF92ZWN0b3IuCgoyMDAxLTA1LTAzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZjb2RlLmg6IEluY2x1ZGUgImxpYmliZXJ0eS5oIi4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogU2V0CgllbGZfZHRfbmFtZSAoYWJmZCkgdG8gYmFzZW5hbWUgb2YgdGhlIGJmZCBmaWxlbmFtZS4KCShOQU1FKGJmZF9lbGYsc2l6ZV9keW5hbWljX3NlY3Rpb25zKSk6IFNldCB2bl9maWxlIHRvIGJhc2VuYW1lCglvZiB0aGUgYmZkIGZpbGVuYW1lLgoKMjAwMS0wNS0wMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQtZ2VuLmMgKGVsZl9nZW5lcmljX2luZm9fdG9faG93dG8pOiBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KCShlbGZfZ2VuZXJpY19pbmZvX3RvX2hvd3RvX3JlbCk6IExpa2V3aXNlLgoJKiBjb2ZmLWFscGhhLmMgKHJlbG9jX25pbCk6IExpa2V3aXNlLgoJKGFscGhhX2Vjb2ZmX2JhZF9mb3JtYXRfaG9vayk6IExpa2V3aXNlLgoJKGFscGhhX2FkanVzdF9yZWxvY19vdXQpOiBMaWtld2lzZS4KCShhbHBoYV9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShhbHBoYV9jb252ZXJ0X2V4dGVybmFsX3JlbG9jKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jX25pbCk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX3JlbG9jX2JhZCk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX3JlbG9jX2dwZGlzcCk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2luZm9fdG9faG93dG8pOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9hZGRfc3ltYm9sX2hvb2spOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9jcmVhdGVfZ290X3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9pc19sb2NhbF9sYWJlbF9uYW1lKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfbWVyZ2VfaW5kX3N5bWJvbHMpOiBMaWtld2lzZS4KCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkobWlwc19lbGY2NF9nZXRfcmVsb2NfdXBwZXJfYm91bmQpOiBMaWtld2lzZS4KCSogbmxtMzItYWxwaGEuYyAobmxtX2FscGhhX21hbmdsZV9yZWxvY3MpOiBMaWtld2lzZS4KCShubG1fYWxwaGFfZ2V0X3B1YmxpY19vZmZzZXQpOiBMaWtld2lzZS4KCjIwMDEtMDUtMDIgIEpvaGFuIFJ5ZGJlcmcgIDxqcnlkYmVyZ0BvcGVuY29yZXMub3JnPgoKCSogZWxmMzItb3BlbnJpc2MuYyAob3BlbnJpc2NfZWxmX2hvd3RvX3RhYmxlKTogRG8gbm90IGNvbXBsYWluCglhYm91dCBvdmVyZmxvdyBpbiBSX09QRU5SSVNDX0xPXzE2X0lOX0lOU04gYW5kCglSX09QRU5SSVNDX0hJXzE2X0lOX0lOU04uSW5kZXg6IGJmZC9lbGYzMi1vcGVucmlzYy5jCgoyMDAxLTA0LTMwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogU2V0IGR5bmluZHggdG8gLTEKCW9ubHkgZm9yIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTC4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoKCSogZWxmbGluay5oIChlbGZfZml4X3N5bWJvbF9mbGFncyk6IFNldCBFTEZfTElOS19GT1JDRURfTE9DQUwKCWlmIHRoZSBzeW1ib2wgaGFzIGhpZGRlbiBvciBpbnRlcm5hbCB2aXNpYmlsaXR5LgoKMjAwMS0wNC0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChmaW5hbF9saW5rX3JlbG9jYXRlKTogQnJhbmNoIHRvIC4rOCBmb3IKCWNhbGxzIHRvIHVuZGVmaW5lZCB3ZWFrIHN5bWJvbHMuCgoyMDAxLTA0LTMwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+LCBBbmRyZWFzIFNjaHdhYiA8c2Nod2FiQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBDb3JyZWN0IHRlc3QgZm9yCglSX1g4Nl82NF9HT1RQQ1JFTCwgZG9uJ3QgdXNlIGFzc2lnbm1lbnRzIGluc3RlYWQgb2YgY29tcGFyaXNvbnMuCgoyMDAxLTA0LTI3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogT25seSBzd2FwCglvdXQgaGFuZGxlZCBlbnRyaWVzLgoJKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBTZXQgdXAgR09UIGVudHJpZXMuCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggR09UUENSRUwgY2FsY3VsYXRpb24uCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBNZXJnZSBlbnRyaWVzIGZvciBHT1RQQ1JFTCBhbmQKCUdPVDMyLgoKMjAwMS0wNC0yNyAgU2VhbiBNY05laWwgPHNlYW5AbWNuZWlsLmNvbT4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBhcm0tdnh3b3JrcyB0YXJnZXQuCgkqIGNvZmYtYXJtIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogQWRkIGluIHN5bWJvbCB2YWx1ZSB0bwoJYWRkZW5kIChmcm8gVlh3b3JrcyB0YXJnZXRzKS4KCjIwMDEtMDQtMjYgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogVmVyaWZ5IGlmIHJfc3ltbmR4IGlzCgl2YWxpZC4KCjIwMDEtMDQtMjUgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiBiZmQtaW4uaCAoYmZkX2NhY2hlX2Nsb3NlKTogRGVjbGFyZSBuZXdseSBleHBvcnRlZCBmdW5jdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDQtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbWVyZ2UuYyAoc3RydWN0IHNlY19tZXJnZV9oYXNoX2VudHJ5KTogQWRkIGFsaWdubWVudCBmaWVsZC4KCShzdHJ1Y3Qgc2VjX21lcmdlX2hhc2gpOiBSZW1vdmUgYWxpZ25tZW50X3Bvd2VyLgoJKHNlY19tZXJnZV9oYXNoX25ld2Z1bmMpOiBDbGVhciBhbGlnbm1lbnQuCgkoc2VjX21lcmdlX2hhc2hfbG9va3VwKTogUGFzcyBhbGlnbm1lbnQgYXMgYXJndW1lbnQuCglVc2UgaGFzaHAtPnJvb3QubmV4dCwgbm90IGhhc2hwLT5uZXh0IHRvIHdhbGsgdGhlIGhhc2ggY2hhaW4uCglJZiBhIHN0cmluZyBhbHJlYWR5IGluIHRoZSBoYXNodGFibGUgZG9lcyBub3QgaGF2ZSByZXF1aXJlZAoJYWxpZ25tZW50LCBjcmVhdGUgYSBuZXcgaGFzaHRhYmxlIGVudHJ5LgoJKHNlY19tZXJnZV9pbml0KTogUmVtb3ZlIGFsaWdubWVudF9wb3dlciBhcmd1bWVudC4KCShzZWNfbWVyZ2VfYWRkKTogQWRkIGFsaWdubWVudCBhcmd1bWVudC4KCShzZWNfbWVyZ2VfZW1pdCk6IEFsaWdubWVudCBpcyBub3cgYSBwZXItZW50aXR5IHRoaW5nLCBub3QgcGVyCglzZWN0aW9uLgoJKF9iZmRfbWVyZ2Vfc2VjdGlvbik6IFNhbml0eSBjaGVjayBldmVuIG5vbi1TRUNfU1RSSU5HUyBzZWN0aW9ucwoJZm9yIHByb3BlciBhbGlnbm1lbnQuCglQYXNzIGFsaWdubWVudCBpbmZvcm1hdGlvbiB0byBzZWNfbWVyZ2VfYWRkLgoKMjAwMS0wNC0yNCAgQ2hyaXN0aWFuIEdyb2Vzc2xlciAgPGNwZ0BhbGFkZGluLmRlPgoKCSogY29mZi16OGsuYyAoZXh0cmFfY2FzZSk6IGFkZGVkIGhhbmRsZXIgZm9yIFJfRElTUDcsIFJfQ0FMTFIKCWFuZCBSX1JFTDE2IHJlbG9jIHR5cGVzOyBhY2NlcHQgb2RkIHZhbHVlcyBmb3IgUl9SRUwxNiB0eXBlCgoyMDAxLTA0LTI0ICBKb2hhbiBSeWRiZXJnICA8anJ5ZGJlcmdAb3BlbmNvcmVzLm9yZz4KCgkqIGNwdS1vcGVucmlzYy5jOiBOZXcgZmlsZS4KCSogZWxmMzItb3BlbnJpc2MuYzogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5hbSAoQUxMX01BQ0hJTkVTKTogQWRkIGNwdS1vcGVucmlzYy5sby4KCShBTExfTUFDSElORVNfQ0ZJTEVTKTogQWRkIGNwdS1vcGVucmlzYy5jLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGVsZjMyLW9wZW5yaXNjLmxvLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBlbGYzMi1vcGVucmlzYy5jLgoJKGNwdS1vcGVucmlzYy5sbywgZWxmMzItb3BlbnJpc2MubG8pOiBOZXcgcnVsZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlZC4KCSogY29uZmlnLmJmZDogKG9wZW5yaXNjLSotZWxmKTogTmV3IHRhcmdldC4KCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfb3BlbnJpc2NfdmVjKTogTmV3IHZlY3Rvci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGVkLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGVkLgoJKiByZWxvYy5jOiBBZGQgT3BlblJJU0MgcmVsb2NhdGlvbnMuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX29wZW5yaXNjX3ZlYyk6IERlY2xhcmUuCgkoYmZkX3RhcmdldF92ZWN0KTogQWRkIGJmZF9lbGYzMl9vcGVucmlzY192ZWMuCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6IEFkZCBiZmRfYXJjaF9vcGVucmlzYy4KCShiZmRfb3BlbnJpc2NfYXJjaCk6IERlY2xhcmUuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX29wZW5yaXNjX2FyY2guCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBBZGQgYmZkX2FyY2hfb3BlbnJpc2MuCgoyMDAxLTA0LTIzICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jOiBBZGQgYysrIHZ0YWJsZSBoYWNrLgoJU21hbGwgd2hpdGVzcGFjZSBhbmQgY29tbWVudCBjaGFuZ2VzLgoKMjAwMS0wNC0xOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9wbHQwX2VudHJ5KTogRml4IGluc3RydWN0aW9ucy4KCShlbGY2NF94ODZfNjRfcGx0X2VudHJ5KTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogRml4IFBMVDAgZ2VuZXJhdGlvbi4KCShlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRml4IFBMVCBnZW5lcmF0aW9uLgoKMjAwMS0wNC0xNyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBlbGYzMi1jcmlzLmM6IFR3ZWFrIGNvbW1lbnRzIHJlbGF0ZWQgdG8gZHluYW1pYyBsaW5raW5nLgoJKGNyaXNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBXaGVuIG5vdCBjcmVhdGluZyBzaGFyZWQgb2JqZWN0LCBmaWxsCglpbiB0aGUgLmdvdCB0YWJsZSBmb3IgYW55IHN5bWJvbCBub3QgaW4gdGhlIGR5bmFtaWMgc3ltYm9sIHRhYmxlLgoJKGVsZl9jcmlzX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFdoZW4gbm90IGNyZWF0aW5nIHNoYXJlZCBvYmplY3QsCglvbmx5IGVtaXQgYSAuZ290LnJlbGEgcmVsb2MgaWYgdGhlIHN5bWJvbCBpcyBpbiB0aGUgZHluYW1pYyBzeW1ib2wKCXRhYmxlLgoJKGNyaXNfZWxmX2NoZWNrX3JlbG9jcyk6IFVzZSB2YXJpYWJsZSByX3R5cGUgaW4gYWxsIHBsYWNlcyByYXRoZXIKCXRoYW4gdGhlIG9yaWdpbmFsIGV4cHJlc3Npb24uICBBZGQgZGVmYXVsdCBjYXNlIGluIHN3aXRjaCBmb3IKCXJlbG9jIHR5cGVzLgoJKGVsZl9jcmlzX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEl0ZXJhdGUgb3ZlcgoJZWxmX2NyaXNfZGlzY2FyZF9leGNlc3NfcHJvZ3JhbV9keW5hbWljcyB3aGVuIG5vdCBjcmVhdGluZyBzaGFyZWQKCWxpYnJhcnkuCgkoZWxmX2NyaXNfZGlzY2FyZF9leGNlc3NfZHNvX2R5bmFtaWNzKTogUmVuYW1lZCBmcm9tCgllbGZfY3Jpc19kaXNjYXJkX2NvcGllcy4gIENvcnJlY3QgdHlwbywgcy9SZWwvUmVsYS8uCgkoZWxmX2NyaXNfZGlzY2FyZF9leGNlc3NfcHJvZ3JhbV9keW5hbWljcyk6IE5ldy4KCjIwMDEtMDQtMTQgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IFVzZQoJYmZkX2NvZmZfc3dhcF9maWxlaGRyX291dCBpbnN0ZWFkIG9mIGNvZmZfc3dhcF9maWxlaGRyX291dC4KCjIwMDEtMDQtMTQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDEtMDQtMTQgIEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzZWN0aW9uLmMgKFNURF9TRUNUSU9OKTogQWRkIGVudHNpemUuCgoyMDAxLTA0LTEzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBzZWN0aW9uLmMgKFNFQ19NRVJHRSk6IERlZmluZSBuZXcgZmxhZyBmb3IgbWVyZ2luZy4KCShTRUNfU1RSSU5HUyk6IExpa2V3aXNlLgoJKGVudHNpemUpOiBOZXcgZmllbGQuCgoyMDAxLTA0LTEzICBSb2dlciBTYXlsZSAgPHJvZ2VyQG1ldGFwaG9yaWNzLmNvbT4KCgkqIGNvZmYtaTM4Ni5jIChUQVJHRVRfU1lNKTogU0VDX1JFQURPTkxZIGlzIGFuIGFwcGxpY2FibGUgc2VjdGlvbgoJZmxhZyBvbiBwZS1pMzg2IHRhcmdldHMuCgoyMDAxLTA0LTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGxpYmJmZC1pbi5oIChfYmZkX21lcmdlX3NlY3Rpb24pOiBOZXcuCgkoX2JmZF93cml0ZV9tZXJnZWRfc2VjdGlvbik6IE5ldy4KCShfYmZkX21lcmdlZF9zZWN0aW9uX29mZnNldCk6IE5ldy4KCSogbGliYmZkLmg6IFJlYnVpbHQuCgkqIGxpbmtlci5jIChfYmZkX2dlbmVyaWNfbGlua19vdXRwdXRfc3ltYm9scyk6IEhhbmRsZQoJZGlzY2FyZF9zZWNfbWVyZ2UuCgkqIGFvdXR4LmggKGFvdXRfbGlua193cml0ZV9zeW1ib2xzKTogTGlrZXdpc2UuCgkqIHBkcDExLmMgKGFvdXRfbGlua193cml0ZV9zeW1ib2xzKTogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQ2FsbCBfYmZkX21lcmdlX3NlY3Rpb24uCgkoZWxmX2JmZF9maW5hbF9saW5rKTogQWRqdXN0IGdsb2JhbCBzeW1ib2xzIHBvaW50aW5nIGludG8gU0VDX01FUkdFCglzZWN0aW9ucy4KCShlbGZfbGlua19zZWNfbWVyZ2Vfc3ltcyk6IE5ldy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBDYWxsIF9iZmRfbWVyZ2VkX3NlY3Rpb25fb2Zmc2V0CglhbmQgX2JmZF93cml0ZV9tZXJnZWRfc2VjdGlvbi4KCUhhbmRsZSBkaXNjYXJkX3NlY19tZXJnZS4KCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSk6IEFkZCBtZXJnZV9pbmZvCglmaWVsZC4KCShzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEpOiBMaWtld2lzZS4KCSogZWxmLmMgKF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3NoZHIpOiBTZXQgU0VDX01FUkdFIGFuZAoJU0VDX1NUUklOR1Mgc2VjdGlvbiBmbGFncyBhbmQgZW50c2l6ZSBmcm9tIHRoZWlyIEVMRiBjb3VudGVycGFydHMuCgkoX2JmZF9lbGZfbGlua19oYXNoX3RhYmxlX2luaXQpOiBJbml0aWFsaXplIG1lcmdlX2luZm8uCgkoZWxmX2Zha2Vfc2VjdGlvbnMpOiBTZXQgU0hGX01FUkdFLCBTSEZfU1RSSU5HUyBhbmQgc2hfZW50c2l6ZQoJZnJvbSB0aGVpciBCRkQgY291bnRlcnBhcnRzLgoJKiBtZXJnZS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuYW06IEFkZCBzdHJ0YWIubG8uCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgoKMjAwMS0wNC0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogRm9yIG5vbi1kZWZhdWx0IHZpc2liaWxpdGllcywKCW9ubHkgaGlkZSBzeW1ib2xzIG1hcmtlZCBTVFZfSU5URVJOQUwgb3IgU1RWX0hJRERFTi4KCjIwMDEtMDQtMDUgIFN0ZXZlbiBKLiBIaWxsICA8c2poaWxsQGNvdHcuY29tPgoKCSogY29uZmlnLmJmZCAobWlwcyplbCotKi1saW51eC1nbnUqKTogVXNlIHRyYWRpdGlvbmFsIGxpdHRsZQoJZW5kaWFuIE1JUFMgRUxGIHRhcmdldC4KCSogY29uZmlnLmJmZCAobWlwcyotKi1saW51eC1nbnUqKTogVXNlIHRyYWRpdGlvbmFsIGJpZyBlbmRpYW4KCU1JUFMgRUxGIHRhcmdldC4KCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjY0X3RyYWRiaWdtaXBzX3ZlYyk6IE5ldy4gVHJhZGl0aW9uYWwKCTY0Yml0IGJpZyBlbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoJKGJmZF9lbGY2NF90cmFkbGl0dGxlbWlwc192ZWMpOiBOZXcuIFRyYWRpdGlvbmFsIDY0Yml0IGxpdHRsZQoJZW5kaWFuIE1JUFMgRUxGIHRhcmdldC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGVsZjMyLW1pcHMuYyAoSVJJWF9DT01QQVQpOiBIYW5kbGUgdHJhZGl0aW9uYWwgNjRiaXQgYW5kCglsaXR0bGUgZW5kaWFuIHRhcmdldHMuCgkobWlwc19lbGZfc3ltX2lzX2dsb2JhbCk6IEhhbmRsZSB0cmFkaXRpb25hbCB0YXJnZXRzLgoKCSogZWxmNjQtbWlwcy5jIChiZmRfZWxmNjRfdHJhZGJpZ21pcHNfdmVjKTogTmV3LiBUcmFkaXRpb25hbAoJNjRiaXQgYmlnIGVuZGlhbiBNSVBTIEVMRiB0YXJnZXQuCgkoYmZkX2VsZjY0X3RyYWRsaXR0bGVtaXBzX3ZlYyk6IE5ldy4gVHJhZGl0aW9uYWwgNjRiaXQgbGl0dGxlCgllbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoKCSogdGFyZ2V0cy5jOiAoX2JmZF90YXJnZXRfdmVjdG9yKTogQWRkIGJmZF9lbGY2NF90cmFkYmlnbWlwc192ZWMKCWFuZCBiZmRfZWxmNjRfdHJhZGxpdHRsZW1pcHNfdmVjLgoKMjAwMS0wNC0wNSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2Zha2Vfc2VjdGlvbnMpOiBUcmVhdCAiLnJlbG9jIiBhcyBhbgoJb3JkaW5hcnkgInByb2diaXRzIiBzZWN0aW9uLgoKMjAwMS0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZmxpbmsuaCAoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBDYWxsIGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sCgl3aGVuIC1Cc3ltYm9saWMgY2F1c2VzIGEgc3ltYm9sIHRvIG5vIGxvbmdlciBuZWVkIGEgLnBsdCBlbnRyeS4KCjIwMDEtMDQtMDMgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZWZpLWFwcC1pYTMyLmMgKEFMSUdOX1NFQ1RJT05TX0lOX0ZJTEUpOiBEZWxldGVkLgoKMjAwMS0wMy0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWZpLWFwcC1pYTMyLmMgKFBFSV9UQVJHRVRfU1VCU1lTVEVNKTogUmVuYW1lIGZyb20gLi4uCgkoUEVJX0RFRkFVTFRfVEFSR0VUX1NVQlNZU1RFTSk6IFRoaXMuCgoyMDAxLTAzLTI2ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1nZW4uYyAoZWxmMzJfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzKTogTmV3LiBDaGVjawoJaWYgdGhlcmUgYXJlIGFueSByZWxvY2F0aW9ucyBmb3IgZ2VuZXJpYyBFTEYuCgkoYmZkX2VsZjMyX2JmZF9saW5rX2FkZF9zeW1ib2xzKTogRGVmaW5lZCB0bwoJZWxmMzJfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzLgoJKiBlbGY2NC1nZW4uYyAoZWxmNjRfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzKTogTmV3LiBDaGVjawoJaWYgdGhlcmUgYXJlIGFueSByZWxvY2F0aW9ucyBmb3IgZ2VuZXJpYyBFTEYuCgkoYmZkX2VsZjY0X2JmZF9saW5rX2FkZF9zeW1ib2xzKTogRGVmaW5lZCB0bwoJZWxmNjRfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzLgoKMjAwMS0wMy0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmFtIChCVUlMRF9DRklMRVMpOiBOZXcgdmFyaWFibGU6IExpc3Qgb2YgQyBzb3VyY2UKCWZpbGVzIGNyZWF0ZWQgaW4gYnVpbGQgZGlyZWN0b3J5LgoJKEJVSUxEX0hGSUxFUyk6IE5ldyB2YXJpYWJsZTogTGlzdCBvZiBoZWFkZXIgZmlsZXMgY3JlYXRlZCBpbgoJYnVpbGQgZGlyZWN0b3J5LgoJKFBPVEZJTEVTKTogRGVsZXRlLgoJKHBvL1BPVEZJTEVTLmluKTogUmVwbGFjZSBydWxlIHdpdGggZW1wdHkgZW50cnkuCgkocG8vU1JDLVBPVEZJTEVTLmluKTogTmV3IHJ1bGU6IENyZWF0ZSBhIGxpc3Qgb2Ygc291cmNlIGZpbGVzCglpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KCShwby9CTEQtUE9URklMRVMuaW4pOiBOZXcgcnVsZTogQ3JlYXRlIGEgbGlzdCBvZiBzb3VyY2UgZmlsZXMKCWluIHRoZSBidWlsZCBkaXJlY3RvcnkuCgkoTU9TVExZQ0xFQU4pOiBEbyBub3QgZGVsZXRlIHNvdXJjZSBmaWxlcyBjcmVhdGVkIGluIGJ1aWxkCglkaXJlY3RvcnkuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmUuaW46IEluc2VydCBTUkMtUE9URklMRVMuaW4gYW5kIEJMRC1QT1RGSUxFUy5pbgoJaW50byBwby9NYWtlZmlsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogcG8vTWFrZS1pbjogUmVwbGFjZSBvY2N1cnJlbmNlcyBvZiBQT1RGSUxFUyB3aXRoIFNSQy1QT1RGSUxFUwoJYW5kIEJMRF9QT1RGSUxFUy4KCUFkZCAuLiB0byB0aGUgc2VhcmNoIHBhdGggd2hlbiBidWlsZGluZyBiZmQucG90LgoJRGVsZXRlIFBPVEZJTEVTIHdoZW4gcGVyZm9ybWluZyBkaXN0Y2xlYW4uCglBZGQgY29tbWVudCBkZXNjcmliaW5nIHdoeSBkaXN0Y2xlYW4gaXMgYnJva2VuIGluIG1haW50YWluZXIgbW9kZS4KCSogcG8vUE9URklMRVMuaW46IERlbGV0ZS4KCSogcG8vU1JDLVBPVEZJTEVTLmluOiBOZXcgZmlsZS4KCSogcG8vQkxELVBPVEZJTEVTLmluOiBOZXcgZmlsZS4KCSogcG8vYmZkLnBvdDogUmVnZW5lcmF0ZS4KCjIwMDEtMDMtMjIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZWxmMzItY3Jpcy5jOiBTaGxpYiBhbmQgUElDIHN1cHBvcnQuICBQQ1JFTCB0d2Vha3MuCgkoZWxmX2NyaXNfZGlzY2FyZF9jb3BpZXMsIGVsZl9jcmlzX2FkanVzdF9nb3RwbHRfdG9fZ290LAoJZWxmX2NyaXNfdHJ5X2ZvbGRfcGx0X3RvX2dvdCwgZWxmX2NyaXNfbGlua19oYXNoX25ld2Z1bmMsCgllbGZfY3Jpc19saW5rX2hhc2hfdGFibGVfY3JlYXRlLCBlbGZfY3Jpc19hZGp1c3RfZHluYW1pY19zeW1ib2wsCgllbGZfY3Jpc19zaXplX2R5bmFtaWNfc2VjdGlvbnMsIGVsZl9jcmlzX2ZpbmlzaF9keW5hbWljX3N5bWJvbCwKCWVsZl9jcmlzX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zLGVsZl9jcmlzX2hpZGVfc3ltYm9sKTogTmV3CglmdW5jdGlvbnMuCgkoY3Jpc19lbGZfaG93dG9fdGFibGUpIDxSX0NSSVNfOF9QQ1JFTCwgUl9DUklTXzE2X1BDUkVMLAoJUl9DUklTXzMyX1BDUkVMPjogQ29ycmVjdCBjb21tZW50cy4gIFNldCBwY3JlbF9vZmZzZXQgdG8gZmFsc2UuCgk8Ul9DUklTX0NPUFksIFJfQ1JJU19HTE9CX0RBVCwgUl9DUklTX0pVTVBfU0xPVCwgUl9DUklTX1JFTEFUSVZFLAoJUl9DUklTXzE2X0dPVCwgUl9DUklTXzMyX0dPVCwgUl9DUklTXzE2X0dPVFBMVCwgUl9DUklTXzMyX0dPVFBMVCwKCVJfQ1JJU18zMl9HT1RSRUwsIFJfQ1JJU18zMl9QTFRfR09UUkVMLCBSX0NSSVNfMzJfUExUX1BDUkVMPjoKCU5ldyBIT1dUTyBtZW1iZXJzIGZvciBuZXcgcmVsb2NzLgoJKGNyaXNfcmVsb2NfbWFwKTogTWFwIG5ldyByZWxvY3MuCgkoRUxGX0RZTkFNSUNfSU5URVJQUkVURVIpOiBEZWZpbmUuCgkoUExUX0VOVFJZX1NJWkUpOiBEZWZpbmUuCgkoZWxmX2NyaXNfcGx0MF9lbnRyeSwgZWxmX2NyaXNfcGx0X2VudHJ5LCBlbGZfY3Jpc19waWNfcGx0MF9lbnRyeSwKCWVsZl9jcmlzX3BpY19wbHRfZW50cnkpOiBOZXcsIFBMVCB0ZW1wbGF0ZXMuCgkoc3RydWN0IGVsZl9jcmlzX3BjcmVsX3JlbG9jc19jb3BpZWQsIHN0cnVjdAoJZWxmX2NyaXNfbGlua19oYXNoX2VudHJ5LCBzdHJ1Y3QgZWxmX2NyaXNfbGlua19oYXNoX3RhYmxlKTogTmV3LgoJKGVsZl9jcmlzX2xpbmtfaGFzaF90cmF2ZXJzZSwgZWxmX2NyaXNfaGFzaF90YWJsZSk6IERlZmluZS4KCShjcmlzX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBDaGVjayB0aGF0IDE2LWJpdCBHT1QgcmVsb2NzIGhhdmUKCXBvc2l0aXZlIHZhbHVlcy4gIEFkanVzdCBQQ1JFTCByZWxvY3MgdG8gYmUgcmVsYXRpdmUgdG8gbG9jYXRpb24KCWFmdGVyIHJlbG9jYXRpb24uCgkoY3Jpc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSByZWxvY2F0aW9ucyB0byBkeW5hbWljCglvYmplY3RzLiAgSGFuZGxlIG5ldyByZWxvY2F0aW9ucy4gIENhbGwgZXJyb3IgaGFuZGxlciB3aGVuIHNlZWluZwoJbm9uLVBJQyByZWxvY2F0aW9uIGZvciByZWFkLW9ubHkgc2VjdGlvbnMgd2hpbGUgZ2VuZXJhdGluZyBzaGFyZWQKCW9iamVjdC4KCShjcmlzX2VsZl9jaGVja19yZWxvY3MpOiBTZXQgcmVmZXJlbmNlIGNvdW50cyBmb3IgR09UIGFuZCBQTFQKCWVudHJpZXMuCgkoYmZkX2VsZjMyX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlLAoJZWxmX2JhY2tlbmRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLAoJZWxmX2JhY2tlbmRfc2l6ZV9keW5hbWljX3NlY3Rpb25zLAoJZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc3ltYm9sLAoJZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMsCgllbGZfYmFja2VuZF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucywgYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rLAoJZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wsIGVsZl9iYWNrZW5kX3dhbnRfZ290X3BsdCwKCWVsZl9iYWNrZW5kX3BsdF9yZWFkb25seSwgZWxmX2JhY2tlbmRfd2FudF9wbHRfc3ltLAoJZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplLCBlbGZfYmFja2VuZF9wbHRfaGVhZGVyX3NpemUpOgoJRGVmaW5lLgoKCSogcmVsb2MuYzogKEJGRF9SRUxPQ19DUklTX0NPUFksIEJGRF9SRUxPQ19DUklTX0dMT0JfREFULAoJQkZEX1JFTE9DX0NSSVNfSlVNUF9TTE9ULCBCRkRfUkVMT0NfQ1JJU19SRUxBVElWRSwKCUJGRF9SRUxPQ19DUklTXzMyX0dPVCwgQkZEX1JFTE9DX0NSSVNfMTZfR09ULAoJQkZEX1JFTE9DX0NSSVNfMzJfR09UUExULCBCRkRfUkVMT0NfQ1JJU18xNl9HT1RQTFQsCglCRkRfUkVMT0NfQ1JJU18zMl9HT1RSRUwsIEJGRF9SRUxPQ19DUklTXzMyX1BMVF9HT1RSRUwsCglCRkRfUkVMT0NfQ1JJU18zMl9QTFRfUENSRUwpOiBOZXcgcmVsb2NzLgoJKiBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKMjAwMS0wMy0yMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEdpdmUgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuCglhIHJlbG9jYXRpb24gaXMgbm90IHJlY29nbml6ZWQuCgoyMDAxLTAzLTIxICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NldF9ncCk6IENoZWNrIHNlYy0+b3V0cHV0X3NlY3Rpb24KCW5vbi1OVUxMIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlLgoKMjAwMS0wMy0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgdGhlIHJlZHVuZGVudCBBQ19BUkdfUFJPR1JBTS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwMS0wMy0yMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IG5lZWQgdGhlCglyZWxvY2F0aW9uIHZhbHVlIHdoZW4gcmVzb2x2aW5nIGEgcmVmZXJlbmNlIGZyb20gYSBkZWJ1Z2dpbmcKCXNlY3Rpb24uCgoyMDAxLTAzLTE2ICBTY290dCBUaG9tYXNvbiAgPFNUaG9tYXNvQGhpaS5jb20+CgoJKiBjb2ZmNjQtcnM2MDAwLmMgKHhjb2ZmNjRfc3dhcF9zeW1fb3V0KTogRml4IHN5bnRheCBlcnJvcnMuCgkoeGNvZmY2NF9zd2FwX3N5bV9vdXQpOiBGaXggc3ludGF4IGVycm9ycy4KCjIwMDEtMDMtMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEZpeCB3YXJuaW5nLgoKMjAwMS0wMy0xNSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBBZGQgbWF5YmVfcGljX2NhbGwuCgkoaHBwYV9saW5rX2hhc2hfbmV3ZnVuYyk6IEluaXQgaXQuCgkoaHBwYV90eXBlX29mX3N0dWIpOiBPbmx5IHVzZSBub24tUElDIHRvIFBJQyBjYWxsIHN0dWIgaWYgY2FsbGVyCglzZWN0aW9uIGFwcGVhcnMgdG8gYmUgbm9uLVBJQy4KCShmaW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBTZXQgbWF5YmVfcGljX2NhbGwgZm9yIGFueQoJcG9zc2libGUgY2FuZGlkYXRlIGZ1bmN0aW9uLCBhbmQgc2V0IHBpY19jYWxsIGZvciB0aG9zZSB0aGF0IHdpbGwKCW9ubHkgaGF2ZSBhIC5wbHQgZW50cnkgZm9yIHRoZSBQSUMgY2FsbCBzdHViLgoJKGhwcGFfaGFuZGxlX1BJQ19jYWxscyk6IFNldCBtYXliZV9waWNfY2FsbC4KCjIwMDEtMDMtMTIgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBPbmx5IHJlbG9jYXRpb24KCVJfU0hfRElSOFdQKiByZWxvY3MgaWYgdGhleSdyZSBhZ2FpbnN0IGV4dGVybmFsIHN5bWJvbHMsIGVsc2UKCXRoZXkncmUganVzdCBmb3IgcmVsYXhpbmcuICBWYWxpZGF0ZSB0aGUgcmVsb2MgdmFsdWVzLgoKMjAwMS0wMy0xMiAgU3RlZmFuIEdldWtlbiA8bWFpbEBzdGVmYW4tZ2V1a2VuLmRlPgoKCSogYmluYXJ5LmMgKGJmZF9leHRlcm5hbF9iaW5hcnlfYXJjaGl0ZWN0dXJlKTogRGVjbGFyZS4KCShiaW5hcnlfb2JqZWN0X3ApOiBJZiBiZmRfZXh0ZXJuYWxfYmluYXJ5X2FyY2hpdGVjdHVyZSBpcyBkZWZpbmVkLAoJc2V0IHRoZSBhcmNoaXRlY3R1cmUgdG8gdGhpcyBzdHJpbmcuCgoyMDAxLTAzLTExICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBEb24ndCBtYWtlIFBMVAoJZW50cmllcyB0aGF0IGNvdWxkIHNlcnZlIGFzIGEgZGVmaW5pdGlvbiBmb3IgYSB3ZWFrIHN5bWJvbC4KCjIwMDEtMDMtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNb3N0IGZpbGVzOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZXMgdXNpbmcgUGVybCBzY3JpcHQgY3JlYXRlZAoJYnkgS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPi4KCjIwMDEtMDMtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBDb25kaXRpb25hbGlzZQoJcHJpb3IgcGF0Y2ggb24gISBkZWZpbmVkIE9MRF9BUk1fQUJJLgoKMjAwMS0wMy0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IGhhbmRsaW5nIG9mCglzb21lIHJlbG9jYXRpb24gdmFsdWVzLgoKMjAwMS0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IENsZWFyIGJpdCB6ZXJvCglvZiBvZmZzZXQgaW4gQkxYKDEpIGluc3RydWN0aW9uLgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogQ2xlYXIgYml0IHplcm8gb2YKCW9mZnNldCBpbiBCTFgoMSkgaW5zdHJ1Y3Rpb24uCglGaXggZm9ybWF0dGluZy4KCjIwMDEtMDMtMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY190eXBlX2xvb2t1cCk6IEFkZAoJQkZEX1JFTE9DX1RIVU1CX1BDUkVMX0JMWC4KCjIwMDEtMDMtMDYgIElnb3IgU2hldmx5YWtvdiAgPGlnb3JAd2luZHJpdmVyLmNvbT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9kZWZhdWx0X3NjYW4pOiBBZGQgQ29sZGZpcmUgQ1BVcy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjcHUtbTY4ay5jOiBBZGQgQ29sZGZpcmUgQ1BVcyBmb3IgYXJjaCB0YWJsZS4KCSogaWVlZS5jIChpZWVlX3dyaXRlX3Byb2Nlc3Nvcik6IFNldCBwcm9wZXIgaWQgZm9yCglDb2xkZmlyZSBDUFVzLgoKMjAwMS0wMy0wMSAgRC5KLiBCYXJyb3cgPGRqYmFycm93QGRlLmlibS5jb20sYmFycm93X2RqQHlhaG9vLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHMzOTAgdGFyZ2V0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAxLTAyLTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgcmVsb2NhdGlvbgoJdG8gYWRkZW5kLgoKMjAwMS0wMi0yOCAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogZWxmMzItYXJtLmg6IFVwZGF0ZSBtZW50aW9ucyBvZiByZW5hbWVkIEVGX3h4IGNvbnN0YW50cy4KCShlbGYzMl9hcm1fcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IEhhbmRsZSBBUk0gRUFCSSB2ZXJzaW9uIDIuCgoyMDAxLTAyLTI3ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsYmZkX2ZyZWVfY2FjaGVkX2luZm8pKTogUmV0dXJuIHRydWUgaWYKCWFiZmQtPnRkYXRhLmFvdXRfZGF0YSA9PSBOVUxMLgoKMjAwMS0wMi0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYzogQ29ycmVjdCBmaWVsZCBzZWxlY3RvciBpbiBzdHViIGNvbW1lbnRzLgoJKGNsb2JiZXJfbWlsbGljb2RlX3N5bWJvbHMpOiBGb3JtYXR0aW5nIGZpeC4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcCB2ZXJzaW9uIHRvIDIuMTEuOTAuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuYW0gKENGSUxFUyk6IFJlbmFtZSB0byBTT1VSQ0VfQ0ZJTEVTLgoJKENGSUxFUyk6ICRTT1VSQ0VfQ0ZJTEVTICsgZ2VuZXJhdGVkIEMgZmlsZXMuCgkoUE9URklMRVMpOiBJbmNsdWRlICRIRklMRVMgbm90ICRTT1VSQ0VfSEZJTEVTLgoJUnVuICJtYWtlIGRlcC1hbSIKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGRvYy9NYWtlZmlsZS5pbjogVGhpcyB0b28uCgoyMDAxLTAyLTI2ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBjeWdudXMuY29tPgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2FpeF9hZGRfc3ltYm9sX2hvb2spOiBSZW1vdmUgb2Jzb2xldGUKCWNvbW1lbnRzLgoKMjAwMS0wMi0yNiAgTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpIFtDT0ZGX1dJVEhfUEUgdmVyc2lvbl06IFRpZHkKCXVwLCByZXBsYWNpbmcgbXVsdGlwbGUgaWYgc3RhdGVtZW50cyB3aXRoIGEgc3dpdGNoLgoJKGhhbmRsZV9DT01EQVQpOiBOZXcgZnVuY3Rpb24uCgoyMDAxLTAyLTI2ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb2ZmY29kZS5oIChzdHlwX3RvX3NlY19mbGFncykgW0NPRkZfV0lUSF9QRSB2ZXJzaW9uXTogSXNzdWUKCWEgd2FybmluZyBmb3Igc2VjdGlvbiBmbGFncyB3ZSBkbyBub3QgaGFuZGxlIGluc3RlYWQgb2YKCWFib3J0aW5nLgoKMjAwMS0wMi0yNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKHg4Nl82NF9lbGZfaG93dG9fdGFibGUpOiBGaXggb3JkZXIgb2YgZW50cmllcy4KCjIwMDEtMDItMjIgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb25maWcuYmZkICh0YXJnX2NwdSk6IEFkZCB2ZWN0b3JzIGZvciBpYTY0LSotYWl4KiAoYWthIE1vbnRlcmV5KS4KCSogY29uZmlndXJlLmluOiBBZGQgb2JqZWN0cyBmb3IgZWxmNjRfaWE2NF9haXggdmVjdG9ycy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY29uZmlndXJlLmhvc3Q6IFJlY29nbml6ZSBpYTY0LSotYWl4Ki4KCSogZWxmeHgtaWE2NC5jOiBBZGQgaG9va3MgZm9yIEVMRjY0IG9uIEFJWDUuICBEZWZpbmUgbmV3IHZlY3RvcnMKCWZvciBBSVguICBBSVg1IHJlcXVpcmVzIG1vc3QgcmVsb2NhdGlvbnMgdG8gYmUgZHluYW1pYyAoKmFsbCoKCWJpbmFyaWVzIGFyZSBzb21ld2hhdCBzaW1pbGFyIHRvIHNoYXJlZCBsaWJyYXJpZXMpLgoJKiB0YXJnZXRzLmM6IEFkZCBlbGY2NF9pYTY0X2FpeCB2ZWN0b3JzLgoKMjAwMS0wMi0yMSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBjcHUtaWE2NC1vcGMuYyAoZWxmNjRfaWE2NF9vcGVyYW5kc306IEZpeCB0eXBvOiBlcnJvciBzdHJpbmcgZm9yCglDOCBzYWlkICIxIiBpbnN0ZWFkIG9mICI4Ii4gIENsYXJpZnkgZXJyb3Igc3RyaW5nIGZvciBJTU0yMjoKCSJzaWduZWQgaW50ZWdlciIgaW5zdGVhZCBvZiBqdXN0ICJpbnRlZ2VyIi4KCjIwMDEtMDItMjAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgbWFrZQoJUExUIGVudHJpZXMgdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIGRlZmluaXRpb24gZm9yIGEgd2VhayBzeW1ib2wuCgoyMDAxLTAyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IG1ha2UgUExUCgllbnRyaWVzIHRoYXQgY291bGQgc2VydmUgYXMgYSBkZWZpbml0aW9uIGZvciBhIHdlYWsgc3ltYm9sLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCjIwMDEtMDItMTggIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRD4KCgkqIGNvbmZpZ3VyZS5pbjogUmVjb2duaXplIEZyZWVCU0QvYXJtLCBGcmVlQlNEL1Bvd2VyUEMsIGFuZCB0cmVhdAoJRnJlZUJTRC9pMzg2LUNVUlJFTlQgZGlmZmVyZW50bHkgdW50aWwgSSBjYW4gZmlndXJlIG91dCB0aGUgbmVlZGVkCgljb3JlZmlsZSBjaGFuZ2VzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5iZmQ6IFJlY29nbml6ZSBGcmVlQlNEL3g4Ni02NCwgRnJlZUJTRC9pYTY0LCBGcmVlQlNEL2FybSwKCUZyZWVCU0QvUG93ZXJQQywgYW5kIEZyZWVCU0Qvc3BhcmM2NC4KCjIwMDEtMDItMTggIGxhcnMgYnJpbmtob2ZmICA8bGFyc0Bub2NyZXcub3JnPgoKCSogTWFrZWZpbGUuYW06IEFkZCBQRFAtMTEgYS5vdXQgdGFyZ2V0LgoJKiBjb25maWcuYmZkOiBMaWtld2lzZS4KCSogY29uZmlndXJlLmluOiBMaWtld2lzZS4KCSogdGFyZ2V0cy5jOiBMaWtld2lzZS4KCSogYXJjaHVyZXMuYzogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogTGlrZXdpc2UuICBBZGQgUERQLTExIHJlbG9jYXRpb25zLgoJKiBsaWJiZmQuaDogQWRkIFBEUC0xMSByZWxvY2F0aW9ucy4KCSogcmVsb2MuYzogTGlrZXdpc2UuCgkqIGNwdS1wZHAxMS5jOiBOZXcgZmlsZS4KCSogcGRwMTEuYzogTmV3IGZpbGUuCgoJKiBsaWJhb3V0LmggKEdFVF9XT1JEKSBbQVJDSF9TSVpFPT0xNl06IERlZmluZS4KCShHRVRfU1dPUkQpIFtBUkNIX1NJWkU9PTE2XTogTGlrZXdpc2UuCgkoR0VUX1NXT1JEKSBbQVJDSF9TSVpFPT0xNl06IExpa2V3aXNlLgoJKFBVVF9XT1JEKSBbQVJDSF9TSVpFPT0xNl06IExpa2V3aXNlLgoJKEdFVF9NQUdJQyk6IE5ldyBtYWNyby4KCShQVVRfTUFHSUMpOiBMaWtld2lzZS4KCSogYW91dC10YXJnZXQuaCAoTVkob2JqZWN0X3ApKTogVXNlIEdFVF9NQUdJQyB0byByZWFkIG1hZ2ljIHdvcmQuCgoyMDAxLTAyLTE4ICBKaW0gS2luZ2RvbiAgPGpraW5nZG9uQGVuZ3Iuc2dpLmNvbT4KCgkqIGlyaXgtY29yZS5jIChpcml4X2NvcmVfY29yZV9maWxlX3ApOiBTZXQgdGhlIGFyY2hpdGVjdHVyZSAoR0RCCgltdWx0aWFyY2ggbmVlZHMgaXQpLgoKMjAwMS0wMi0xOCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19pbnB1dF9iZmQpOiBJZ25vcmUgaW52YWxpZCBzZWN0aW9uIHN5bWJvbAoJaW5kZXguCgoyMDAxLTAyLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHZtcy1taXNjLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMS0wMi0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB2bXMuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAxLTAyLTE0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYuYyAoZWxmX2ZpbmRfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoX2JmZF9lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBDYWxsIGVsZl9maW5kX2Z1bmN0aW9uICgpIHRvIGZpbmQKCXRoZSBmaWxlIG5hbWUgYW5kIGZ1bmN0aW9uIG5hbWUuCgoyMDAxLTAyLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZWNvZmYuYyAoYmZkX2RlYnVnX3NlY3Rpb24pOiBVcGRhdGUgdG8gaW5pdGlhbGlzZSBuZXcgZmllbGRzIGluCglhc2VjdGlvbiBzdHJ1Y3R1cmUuCgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogUmVtb3ZlIHBlaWdlbi5jCgkoQkZENjRfQkFDS0VORFMpOiBBZGQgcGVwaWdlbi5jCglBZGQgcnVsZXMgdG8gY3JlYXRlIHBlaWdlbi5jIGFuZCBwZXBpZ2VuLmMgZnJvbSBwZVhYaWdlbi5jLgoKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogIFJlZ2VuZXJhdGUuCgkqIHBvL1BPVEZJTEVTLmluOiBSZWdlbmVyYXRlLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKMjAwMS0wMi0xNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogbGliY29mZi1pbi5oIChwZV90ZGF0YSk6IEFkZCBtZW1iZXJzIHRhcmdldF9zdWJzeXN0ZW0gYW5kCglmb3JjZV9taW5pbXVtX2FsaWdubWVudC4KCjIwMDEtMDItMTQgIEJvIFRob3JzZW4gIDxib0BzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmM6IFNtYWxsIGZvcm1hdHRpbmcgZml4ZXMgYW5kIHJlYXJyYW5nZW1lbnRzIG9mIGNvZGUuCgkoZWxmNjRfODZfNjRfc2l6ZV9pbmZvKTogU3RydWN0IGFkZGVkIHRvIGZpeCBhIHByb2JsZW0KCXdpdGggdGhlIGhhc2h0YWJsZSBzdHJpbmcgZW50cmllcy4KCShlbGY2NF94ODZfNjRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogQWRkIGdlbmVyYXRpb24gb2YgLmdvdC5wbHQuCgkoZWxmNjRfeDg2XzY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEEgRklYTUUgcmVtb3ZlZC4KCShlbGY2NF94ODZfNjRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRml4IGEgZHluYW1pYyBlbnRyeSBhbmQKCXJlbW92ZSB0aGUgRklYTUUgZm9yIHRoaXMuCgkoZWxmNjRfeDg2XzY0X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEZpeCBjaGVjayBmb3IgdW5uZWVkZWQgLnBsdAoJc2VjdGlvbi4gQWxzbyByZW1vdmVkIHRoZSBGSVhNRSBmb3IgaXQuCgkoeDg2XzY0X2VsZl9ob3d0b190YWJsZSk6IFVzZSBiZmRfZWxmX2dlbmVyaWNfcmVsb2MuCgkoRUxGX0RZTkFNSUNfSU5URVJQUkVURVIpOiBGaXggdGhlIG5hbWUgb2YgdGhlIGR5bmFtaWMgbGlua2VyLgoJKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IEVuYWJsZSAuZ290LnBsdCB3cml0aW5nLgoKMjAwMS0wMi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9maW5hbF9saW5rKTogU2V0IF9fZ3AgaWYgcmVxdWlyZWQKCWFuZCBub3QgdXNlciBwcm92aWRlZC4KCjIwMDEtMDItMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogdm1zLmMgKHZtc19wcmludF9zeW1ib2wpOiBSZW1vdmUgdW5yZWFjaGFibGUgY29kZS4KCgkqIHJzNjAwMC1jb3JlLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMS0wMi0xMyAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBwZWljb2RlLmggKGNvZmZfc3dhcF9maWxlaGRyX291dCkgW0NPRkZfSU1BR0VfV0lUSF9QRV06IERlZmluZQoJYXMgX2JmZF9YWGlfb25seV9zd2FwX2ZpbGVoZHJfb3V0LgoJKHBlX21rb2JqZWN0KSBbUEVJX0ZPUkNFX01JTklNVU1fQUxJR05NRU5UXTogU2V0CglwZS0+Zm9yY2VfbWluaW11bV9hbGlnbm1lbnQgdG8gVFJVRS4KCShwZV9ta29iamVjdCkgW1BFSV9UQVJHRVRfU1VCU1lTVEVNXTogU2V0IHBlLT50YXJnZXRfc3Vic3lzdGVtIHRvCglQRUlfVEFSR0VUX1NVQlNZU1RFTS4KCShwZV9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogQ2FsbAoJX2JmZF9YWF9wcmludF9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbigpIGluc3RlYWQgb2YKCV9iZmRfcGVfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24oKS4KCShwZV9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhKTogQ2FsbAoJX2JmZF9YWF9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbigpIGluc3RlYWQgb2YKCV9iZmRfcGVfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24oKS4KCShjb2ZmX2JmZF9jb3B5X3ByaXZhdGVfc2VjdGlvbl9kYXRhKTogRGVmaW5lIGFzCglfYmZkX1hYX2JmZF9jb3B5X3ByaXZhdGVfc2VjdGlvbl9kYXRhIGluc3RlYWQgb2YKCV9iZmRfcGVfYmZkX2NvcHlfcHJpdmF0ZV9zZWN0aW9uX2RhdGEuCgkoY29mZl9nZXRfc3ltYm9sX2luZm8pOiBEZWZpbmUgYXMgX2JmZF9YWF9nZXRfc3ltYm9sX2luZm8gaW5zdGVhZAoJb2YgYSBfYmZkX3BlX2dldF9zeW1ib2xfaW5mby4KCgkqIHBlaWdlbi5jOiBEZWxldGUuCgoJKiBwZVhYaWdlbi5jOiBSZW5hbWVkIGZyb20gcGVpZ2VuLmMuCgkoQ09GRl9XSVRIX1hYKTogRGVmaW5lIHRoaXMgbWFjcm8gKHdpbGwgZ2V0IGV4cGFuZGVkIGludG8KCUNPRkZfV0lUSF9wZXAgb3IgQ09GRl9XSVRIX3BlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGlzIGJlaW5nCgljb21waWxlZCBhcyBwZWlnZW4uYyBvciBwZXBpZ2VuLmMuCglbQ09GRl9XSVRIX3BlcF06IEluY2x1ZGUgImNvZmYvaWE2NC5oIiBpbnN0ZWFkIG9mICJjb2ZmL2kzODYuaCIgdG8KCWRlZmluZSB0aGUgY2Fub25pY2FsIFBFUCBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4KCShfYmZkX1hYaV9zd2FwX2FvdXRoZHJfb3V0KTogSWYgcGUtPmZvcmNlX21pbmltdW1fYWxpZ25tZW50IGlzIGluCgllZmZlY3QsIGVuZm9yY2UgbWluaW11bSBmaWxlIGFuZCBzZWN0aW9uIGFsaWdubWVudHMuICBJZgoJZXh0cmEtPlN1YnN5c3RlbSBpcyBJTUFHRV9TVUJTWVNURU1fVU5LTk9XTiwgc2V0IGl0IHRvCglwZS0+dGFyZ2V0X3N1YnN5c3RlbSAodGhpcyBkZWZhdWx0cyB0byBJTUFHRV9TVUJTWVNURU1fVU5LTk9XTiwKCXNvLCBieSBkZWZhdWx0LCB0aGlzIGlzIGEgbm8tb3ApLgoKCSogbGlicGVpLmg6IFJlbmFtZSBDT0ZGX1dJVEhfUEVQIHRvIENPRkZfV0lUSF9wZXAuCgkoX2JmZF9YWF9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbik6IEFkZCBtYWNyb3MgdG8gbWFwCglfYmZkX1hYZm9vIHRvIF9iZmRfcGVwZm9vIGlmIENPRkZfV0lUX1BFUCBpcyBkZWZpbmVkIGFuZCB0bwoJX2JmZF9wZWZvbyBpZiBpdCdzIG5vdCBkZWZpbmVkLiAgVXNlIHRoZXNlIG1hY3JvcyB0byBkZWZpbmUKCWNvZmYgc3dhcCBtYWNyb3MuCgoJKiBsaWJjb2ZmLmggKHBlX3RkYXRhKTogQWRkIG1lbWJlcnMgdGFyZ2V0X3N1YnN5c3RlbSBhbmQKCWZvcmNlX21pbmltdW1fYWxpZ25tZW50LgoKCSogZWZpLWFwcC1pYTY0LmMgKENPRkZfV0lUSF9wZXApOiBSZW5hbWUgQ09GRl9XSVRIX1BFUCB0bwoJQ09GRl9XSVRIX3BlcC4KCShQRUlfVEFSR0VUX1NVQlNZU1RFTSk6IFJlbmFtZSBmcm9tIFBFSV9ERUZBVUxUX1RBUkdFVF9TVUJTWVNURU0uCgoJKiBjb25maWd1cmUuaW4gKGJmZF9lZmlfYXBwX2lhNjRfdmVjKTogVXNlIHBlcGlnZW4ubG8gaW5zdGVhZCBvZgoJcGVpZ2VuLmxvLgoKCSogY29mZi1pYTY0LmM6IFJlbmFtZSBDT0ZGX1dJVEhfUEVQIHRvIENPRkZfV0lUSF9wZXAuCgkoQU9VVFNaKTogUmVuYW1lIFBFUDY0QU9VVFNaIGFuZCBQRVA2NEFPVVRIRFIgdG8gUEVQQU9VVFNaIGFuZAoJUEVQQU9VVEhEUi4KCgkqIE1ha2VmaWxlLmluIChCRkQ2NF9CQUNLRU5EUyk6IE1lbnRpb24gcGVwaWdlbi5sby4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBNZW50aW9uIHBlcGlnZW4uYwoJKHBlaWdlbi5jKTogQWRkIHJ1bGUgdG8gZ2VuZXJhdGUgZnJvbSBwZVhYaWdlbi5jLgoJKHBlcGlnZW4uYyk6IERpdHRvLgoJKHBlcGlnZW4ubG8pOiBMaXN0IGRlcGVuZGVuY2llcyBmb3IgcGVwaWdlbi5sby4KCjIwMDEtMDItMTMgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2V0X2dwKTogSGFuZGxlIHdlYWsgJGdsb2JhbCQuICBJZgoJJGdsb2JhbCQgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQsIHNldCBpdHMgdmFsdWUgaGVyZS4KCjIwMDEtMDItMDkgIEJvIFRob3JzZW4gIDxib0BzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9jaGVja19yZWxvY3MpOiBTZXQgLnJlbGEuZ290IHNlY3Rpb24KCWFsaWdubWVudCB0byAzLgoJKGVsZjY0X3g4Nl82NF9jaGVja19yZWxvY3MpOiBXcml0ZSBSX1g4Nl82NF9HT1RQQ1JFTCBHT1QgZW50cnkKCWFuZCByZWxvY2F0aW9uLgoJKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IGZvcm1hdHRpbmcuCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggYWRkZW5kIGZvciByZWxvY2F0aW9uIG9mCglSX1g4Nl82NF8oOHwxNnwzMnxQQzh8UEMxNnxQQzMyKS4KCjIwMDEtMDItMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGVsZjY0LXg4Ni02NC5jICh4ODZfNjRfZWxmX2hvd3RvKTogRml4IG5hbWUgb2YgUl9YODZfNjRfR09UUENSRUwuCgoyMDAxLTAyLTExICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IFVzZSBmaWxlX2FsaWduIGZvciBTWU1UQUIKCWFsaWdubWVudC4KCjIwMDEtMDItMTEgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY3JlYXRlX2R5bmFtaWNfcmVsb2NhdGlvbik6IFVuZG8gcGF0Y2gKCWZyb20gMjAwMC0xMC0xMy4gIERvIG5vdCBhZGQgdGhlIHN5bWJvbCdzIHZhbHVlIGZvciBSX01JUFNfUkVMMzIKCXJlbG9jYXRpb25zIGFnYWluc3QgZHluc3ltIHN5bWJvbHMuCgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX2hvd3RvX3RhYmxlKTogRml4IHRoZSBjb21tZW50IG9uCgl0aGUgUl9NSVBTXzI2IHJlbG9jYXRpb24uCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBVc2UgKHAgKyA0KSBpbnN0ZWFkIG9mIHAgZm9yCgl0aGUgUl9NSVBTXzI2IHJlbG9jYXRpb24uCgkobWlwc19lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogRml4IHRoZSBjb21tZW50IG9uIHRoZSBSX01JUFMxNl8yNgoJcmVsb2NhdGlvbi4KCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X2hvd3RvX3RhYmxlX3JlbCk6IEZpeCB0aGUgY29tbWVudCBvbgoJdGhlIFJfTUlQU18yNiByZWxvY2F0aW9uLgoJKG1pcHNfZWxmNjRfaG93dG9fdGFibGVfcmVsYSk6IExpa2V3aXNlLgoKCSogZWxmMzItbWlwcy5jIChzdHJ1Y3QgbWlwc19lbGZfbGlua19oYXNoX2VudHJ5KTogQWRkZWQgbm9fZm5fc3R1YgoJbWVtYmVyIHRvIG1hcmsgc3ltYm9scyB0aGF0IGhhdmUgbm9uLUNBTEwgcmVsb2NhdGlvbnMgYWdhaW5zdAoJdGhlbS4KCShtaXBzX2VsZl9saW5rX2hhc2hfbmV3ZnVuYyk6IEluaXRpYWxpemUgbm9fZm5fc3R1Yi4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEhhbmRsZSBSX01JUFNfQ0FMTDE2IGxpa2UKCVJfTUlQU19HT1QxNi4KCShfYmZkX21pcHNfZWxmX2NoZWNrX3JlbG9jcyk6IFNldCBub19mbl9zdHViIGZvciBhIHN5bWJvbCBpZiBhCglub24tQ0FMTCByZWxvY2F0aW9uIGFnYWluc3QgaXQgaXMgZW5jb3VudGVyZWQuCgkoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE1lcmdlIG5vX2ZuX3N0dWIgYXMgd2VsbC4KCShfYmZkX21pcHNfZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IE9ubHkgY3JlYXRlIGEgc3R1YiBpZgoJbm9fZm5fc3R1YiBpcyBub3Qgc2V0LgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9vdXRwdXRfZXh0c3ltKTogR2V0IHRoZSBvdXRwdXQgc2VjdGlvbgoJaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVhbCBzeW1ib2wgZm9yIGluZGlyZWN0IG9uZXMuCglDaGVjayBub19mbl9zdHViIHRvIGZpbmQgb3V0IGlmIGEgc3ltYm9sIGhhcyBhIGZ1bmN0aW9uIHN0dWIKCWluZGVlZC4KCjIwMDEtMDItMTEgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIE1ha2VmaWxlLmFtIChzdGFtcC1saWIpOiByYW5saWIgdGhlIGxpYmJmZC5hIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMS0wMi0wOSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBlbGZ4eC1pYTY0LmMgKGlzX3Vud2luZF9zZWN0aW9uX25hbWUpOiBOZXcgZnVuY3Rpb24uICBSZXR1cm5zCgl0cnVlIGlmIHNlY3Rpb24gbmFtZSBpcyBhbiB1bndpbmQgdGFibGUgc2VjdGlvbiBuYW1lLgoJKGVsZk5OX2lhNjRfYWRkaXRpb25hbF9wcm9ncmFtX2hlYWRlcnMpOiBDb3VudCBlYWNoIHVud2luZCBzZWN0aW9uCglzZXBhcmF0ZWx5LgoJKGVsZk5OX2lhNjRfbW9kaWZ5X3NlZ21lbnRfbWFwKTogSW5zdGFsbCBvbmUgdW53aW5kIHByb2dyYW0gaGVhZGVyCglmb3IgZWFjaCB1bndpbmQgc2VwYXJhdGUgc2VjdGlvbi4gIE5vdGU6IG5vcm1hbGx5IHRoZSBsaW5rZXIKCXNjcmlwdCBtZXJnZXMgdGhlIHVud2luZCBzZWN0aW9ucyB0aGF0IGdvIGludG8gYSBzaW5nbGUgc2VnbWVudCwKCXNvIHRoaXMgc3RpbGwgZ2VuZXJhdGVzIGF0IG1vc3Qgb25lIHVud2luZCBwcm9ncmFtIGhlYWRlciBwZXIKCXNlZ21lbnQuCgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfc2VjdGlvbl9mcm9tX3NoZHIpOiBBY2NlcHQgYW55IHNlY3Rpb24KCW5hbWUgZm9yIFNIVF9JQV82NF9VTldJTkQsIG5vdCBqdXN0IC5JQV82NC51bndpbmQuCgkoZWxmTk5faWE2NF9mYWtlX3NlY3Rpb25zKTogTWFyayBzZWN0aW9ucyB3aXRoIG5hbWVzIHRoYXQgc3RhcnQKCXdpdGggLklBXzY0LnVud2luZCBidXQgbm90IHdpdGggLklBXzY0LnVud2luZF9pbmZvIGFzIGFuIElBLTY0Cgl1bndpbmQgc2VjdGlvbi4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTmV3IGZ1bmN0aW9uLgoJVXNlIGl0IHRvIG1ha2Ugc2hfaW5mbyBpbiB1bndpbmQgc2VjdGlvbiBwb2ludCB0byB0aGUgdGV4dCBzZWN0aW9uCglpdCBhcHBsaWVzIHRvLgoKMjAwMS0wMi0wOSAgTWFydGluIFNjaHdpZGVmc2t5ICA8c2Nod2lkZWZza3lAZGUuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmFtOiBBZGQgbGludXggdGFyZ2V0IGZvciBTLzM5MC4KCSogYXJjaHVyZXMuYzogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy5iZmQ6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBlbGYuYzogTGlrZXdpc2UuCgkqIGxpYmJmZC5oOiBMaWtld2lzZS4KCSogdGFyZ2V0cy5jOiBMaWtld2lzZS4KCSogY3B1LXMzOTAuYzogTmV3IGZpbGUuCgkqIGVsZjMyLXMzOTAuYzogTmV3IGZpbGUuCgkqIGVsZjY0LXMzOTAuYzogTmV3IGZpbGUuCgoyMDAxLTAyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogcGVpZ2VuLmMgKF9iZmRfcGVfZ2V0X3N5bWJvbF9pbmZvKTogU3VwcHJlc3MgYWRkaXRpb24gb2YKCUltYWdlQmFzZS4gIFRoaXMgaGFzIGFscmVhZHkgYmVlbiBkb25lIGJ5IGNvZmZfc3dhcF9oZHJfaW4uCgoyMDAxLTAyLTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldyBmdW5jdGlvbi4KCjIwMDEtMDItMDkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfY2hlY2tfcmVsb2NzKTogRG9uJ3QgdHJ1c3QgcmVsb2NfY291bnQuCgkoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMS0wMi0wOSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiBlbGYzMi1zcGFyYy5jIChfYmZkX3NwYXJjX2VsZl9ob3d0b190YWJsZSk6IFRyZWF0IFJfU1BBUkNfVUEzMgoJc2ltaWxhciB0byBSX1NQQVJDXzMyLgoJKiBlbGY2NC1zcGFyYy5jCShzcGFyYzY0X2VsZl9ob3d0b190YWJsZSk6IExpa2V3aXNlLgoKMjAwMS0wMi0wOCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBSZXNlcnZlIFJfMzg2X1BDMzIKCXJlbG9jYXRpb24gZW50cmllcyBmb3Igd2VhayBkZWZpbml0aW9ucyB3aGVuIGJ1aWxkaW5nIERTTyB3aXRoCgktQnN5bWJvbGljLgoKMjAwMS0wMi0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGFscGhhX2VsZl9keW5hbWljX3N5bWJvbF9wKTogUmVzcGVjdCB3ZWFrbmVzcwoJYmVmb3JlIHZpc2liaWxpdHkuICBMb2NhbGx5IGRlZmluZWQgcHJvdGVjdGVkIHN5bWJvbHMgYXJlIG5vdAoJZHluYW1pYy4KCjIwMDEtMDItMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5iZmQ6IEVuYWJsZSBjb2ZmNjQgZm9yIHJzNjAwMC0qLiAgUGF0Y2ggZnJvbQoJPGh6b2xpQGF1c3Rpbi5pYm0uY29tPi4KCjIwMDEtMDItMDcgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb2ZmZ2VuLmMgKGNvZmZfZmluZF9uZWFyZXN0X2xpbmUpOiBJZiBzdGFicyBpbmZvIGlzIHN1Y2Nlc3NmdWxseQoJZm91bmQsIGRvIG5vdCBhdHRlbXB0IHRvIGZpbmQgZHdhcmYyIGluZm8gYmVmb3JlIHJldHVybmluZy4KCjIwMDEtMDItMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmbGluay5oIChpc19nbG9iYWxfc3ltYm9sX2RlZmluaXRpb24pOiBSZW5hbWUgdG8KCWlzX2dsb2JhbF9kYXRhX3N5bWJvbF9kZWZpbml0aW9uIGFuZCBoYXZlIGl0IHJlamVjdCBmdW5jdGlvbgoJc3ltYm9scy4KCShlbGZfbGlua19pc19kZWZpbmVkX2FyY2hpdmVfc3ltYm9sKTogVXNlIHJlbmFtZWQgZnVuY3Rpb24uCgoyMDAxLTAyLTA3ICBUb2RkIFZpZXJsaW5nICA8dHZAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBsaWJiZmQtaW4uaCAoYmZkX3RhcmdldF92ZWN0b3IpOiBDaGFuZ2UgZXh0ZXJuIGFycmF5IHRvIHBvaW50ZXIuCgkqIGxpYmJmZC5oIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IExpa2V3aXNlLgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogUmVuYW1lIHRvIF9iZmRfdGFyZ2V0X3ZlY3RvciBhbmQKCW1ha2Ugc3RhdGljOyBjcmVhdGUgcG9pbnRlciByZWZlcmVuY2UgbmFtZWQgYmZkX3RhcmdldF92ZWN0b3IuCgkoX2JmZF90YXJnZXRfdmVjdG9yX2VudHJpZXMpOiBDYWxjdWxhdGUgdGhpcyBiYXNlZCBvbiB0aGUgYXJyYXkKCXR5cGVkIF9iZmRfdGFyZ2V0X3ZlY3Rvci4KCjIwMDEtMDItMDYgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9keW5hbWljX3N5bWJvbF9wKTogT25seSBoaWRkZW4gYW5kCglpbnRlcm5hbCBzeW1ib2xzIGFyZSBub3QgZHluYW1pYy4KCSogZWxmNjQtYWxwaGEuYyAoYWxwaGFfZWxmX2R5bmFtaWNfc3ltYm9sX3ApOiBMaWtld2lzZS4KCjIwMDEtMDItMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogUmVtb3ZlIGVsZjY0LWlhNjQuYywgc28KCXRoYXQgaXQgd2lsbCBub3QgYmUgcHVsbGVkIGludG8gdGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBtYWtlIHVwCglwby9QT1RGSUxFUy5pbi4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIHBvL2JmZC5wb3Q6ICBSZWdlbmVyYXRlLgoKMjAwMS0wMi0wNiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfZmlsZWhkcl9pbik6IFJlbW92ZSB0aGUgZV9tYWdpYwoJY2hlY2tpbmcuCgkocGVfYmZkX29iamVjdF9wKTogUmV3cml0ZSB3aXRoIGV4dGVybmFsX1BFSV9ET1NfaGRyIGFuZAoJZXh0ZXJuYWxfUEVJX0lNQUdFX2hkci4KCjIwMDEtMDItMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZWxmLW0xMDIwMC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDEtMDItMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3JlbG9jKTogRG8gbm90IGNvbnZlcnQgcmVsb2MgYWRkZW5kIHRvIFBDCglyZWwsIGl0IHdpbGwgYmUgaGFuZGxlZCBsYXRlciBvbi4KCjIwMDEtMDItMDIgIEZyZWQgRmlzaCAgPGZuZkBuaW5lbW9vbnMuY29tPgoKCSogTWFrZWZpbGUuaW46IEZpeCB0eXBvLgoKMjAwMS0wMi0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYtbTEwMzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMS0wMS0zMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9lbGZfZ2V0X3N5bWJvbF90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dldF9zeW1ib2xfdHlwZSk6IERlZmluZS4KCShlbGY2NF9ocHBhX29iamVjdF9wKTogU2V0IGFyY2hpdGVjdHVyZSBhbmQgbWFjaGluZSBmcm9tIGVsZgoJaGVhZGVyIGZsYWdzLgoKMjAwMS0wMS0zMCAgQ3VydGlzIEwuIEphbnNzZW4gIDxjbGphbnNzQGNhLnNhbmRpYS5nb3Y+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9maW5kX25lYXJlc3RfbGluZSk6IFF1ZXJ5IGR3YXJmMgoJYmVmb3JlIG1kZWJ1Zy4KCjIwMDEtMDEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfZHluYW1pY19zeW1ib2xfcCk6IFJldHVybiBmYWxzZQoJZm9yIG5vbi1kZWZhdWx0IHZpc2liaWxpdHkuCgkqIGVsZjY0LWFscGhhLmMgKGFscGhhX2VsZl9keW5hbWljX3N5bWJvbF9wKTogTGlrZXdpc2UsIGJ1dAoJZGVsZXRlIHVnbHkgbWFjcm8gYW5kIHJlcGxhY2Ugd2l0aCBwcmV0dHkgZnVuY3Rpb24uCgoyMDAxLTAxLTI1ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29mZi1nbzMyLmM6IFVwZGF0ZSBjb3B5cmlnaHQuCgkqIGNvZmYtc3RnbzMyLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWdvMzIuYyAoQ09GRl9MT05HX0ZJTEVOQU1FUyk6IERlZmluZS4KCSogY29mZi1zdGdvMzIuYyAoQ09GRl9MT05HX0ZJTEVOQU1FUyk6IExpa2V3aXNlLgoJKiBjb2ZmLWdvMzIuYyAoQ09GRl9TRUNUSU9OX0FMSUdOTUVOVF9FTlRSSUVTKTogUmVtb3ZlIC5ic3MgZW50cnkuCgkqIGNvZmYtc3RnbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IExpa2V3aXNlLgoKMjAwMS0wMS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgkqIGxpYmJmZC5oOiBMaWtld2lzZS4KCjIwMDEtMDEtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjIwMDEtMDEtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIHZtcy1taXNjLmMgKF9iZmRfdm1zX25leHRfcmVjb3JkKTogUmV0dXJuIC0xIGlmIFBSSVYodm1zX2J1ZikKCWlzIE5VTEwgb3IgUFJJVih2bXNfcmVjKSBpcyBvdXRzaWRlIG9mIHRoZSBidWZmZXIuCgoyMDAxLTAxLTIzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmY2NC1yczYwMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtYXJtLmM6IExpa2V3aXNlLgoJKiBjb2ZmZ2VuLmM6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jOiBMaWtld2lzZS4KCSogY29mZi1tY29yZS5jOiBMaWtld2lzZS4KCSogY29mZi1taXBzLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXBtYWMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogZWxmMzIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWZyMzAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWkzNzAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWk4NjAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW0zMnIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmM6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYzogTGlrZXdpc2UuCgkqIGVsZmxpbmsuYzogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaDogTGlrZXdpc2UuCgkqIGVsZi1tMTAyMDAuYzogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYzogTGlrZXdpc2UuCgkqIGVsZnh4LWlhNjQuYzogTGlrZXdpc2UuCgoJKiBhb3V0eC5oOiBGaXggZm9ybWF0dGluZy4KCSogYmZkLmM6IExpa2V3aXNlLgoJKiBiZmQtaW4yLmg6IExpa2V3aXNlLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGNwdS1pMzg2LmM6IExpa2V3aXNlLgoJKiBjcHUtbTY4aGMxMS5jOiBMaWtld2lzZS4KCSogZHdhcmYyLmM6IExpa2V3aXNlLgoJKiBlbGY2NC14ODYtNjQuYzogTGlrZXdpc2UuCgkqIGZvcm1hdC5jOiBMaWtld2lzZS4KCSogZnJlZWJzZC5oOiBMaWtld2lzZS4KCSogaGFzaC5jOiBMaWtld2lzZS4KCSogaHAzMDBocHV4LmM6IExpa2V3aXNlLgoJKiBocHBhYnNkLWNvcmUuYzogTGlrZXdpc2UuCgkqIGhwdXgtY29yZS5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMjIgIEJvIFRob3JzZW4gIDxib0BzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmM6IEFkZGVkIFBJQyBzdXBwb3J0IGZvciBYODYtNjQuCgkoZWxmNjRfeDg2XzY0X2xpbmtfaGFzaF9uZXdmdW5jKTogRnVuY3Rpb24gYWRkZWQuCgkoZWxmNjRfeDg2XzY0X2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfY2hlY2tfcmVsb2NzKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfZGlzY2FyZF9jb3BpZXMpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgcmVsb2NhdGlvbiBvZiBQSUMgc2VjdGlvbnMuCgoyMDAxLTAxLTIxICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBNYWtlZmlsZS5hbSAoaW5zdGFsbC1kYXRhLWxvY2FsKTogTWFrZSB1c2Ugb2YgJChERVNURElSKS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAxLTAxLTIxICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtYTI5ay5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDEtMDEtMTkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogUmVwb3J0IGZpbGVzIHdpdGggYmFkCglyZWxvY2F0aW9uIHNlY3Rpb24gbmFtZXMuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFJlcG9ydCBmaWxlcyB3aXRoIGJhZCByZWxvY2F0aW9uCglzZWN0aW9uIG5hbWVzIGFuZCByZXR1cm4gZmFsc2UuCgoyMDAxLTAxLTE3ICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCgkqIHRhcmdldHMuYzogQWxwaGFiZXRpemUgbGlzdCBvZiB4dmVjcy4KCjIwMDEtMDEtMTQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb25maWcuYmZkOiBBZGQgbGludXggdGFyZ2V0IHZhcmlhbnQgZm9yIGVsZnh4LWhwcGEuCgkqIGNvbmZpZ3VyZS5pbjogUmVjb2duaXplIGJmZF9lbGYzMl9ocHBhX2xpbnV4X3ZlYyBhbmQKCWJmZF9lbGY2NF9ocHBhX2xpbnV4X3ZlYy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBlbGY2NC1ocHBhLmM6IEluY2x1ZGUgZWxmNjQtdGFyZ2V0LmggYWdhaW4gdG8gc3VwcG9ydCBsaW51eAoJdGFyZ2V0IHZhcmlhbnQuCgkoZWxmNjRfaHBwYV9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IFNldCBFTEZPU0FCSV9MSU5VWCBmb3IgbGludXguCgkqIGVsZjMyLWhwcGEuYzogSW5jbHVkZSBlbGYzMi10YXJnZXQuaCBhZ2FpbiB0byBzdXBwb3J0IGxpbnV4Cgl0YXJnZXQgdmFyaWFudC4KCShlbGYzMl9ocHBhX3Bvc3RfcHJvY2Vzc19oZWFkZXJzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX3Bvc3RfcHJvY2Vzc19oZWFkZXJzKTogRGVmaW5lLgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkIGJmZF9lbGY2NF9ocHBhX2xpbnV4X3ZlYyBhbmQKCWJmZF9lbGYzMl9ocHBhX2xpbnV4X3ZlYy4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBBZGQgdGV4dF9zZWdtZW50X2Jhc2UsCglhbmQgZGF0YV9zZWdtZW50X2Jhc2UgZmllbGRzLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSApOiBJbml0IHRoZW0uCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBVcGRhdGUgY29tbWVudHMuCgkoaHBwYV9yZWNvcmRfc2VnbWVudF9hZGRyKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IENhbGwgaXQuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBSX1BBUklTQ19TRUdSRUwzMi4KCShlbGYzMl9ocHBhX2ZpbmFsX2xpbmspOiBOZXcgZnVuY3Rpb24uCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rKTogRGVmaW5lIHRvIGNhbGwgaXQuCgkoaHBwYV91bndpbmRfZW50cnlfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCSogY2FjaGUuYyAoYmZkX29wZW5fZmlsZSk6IENyZWF0ZSBmaWxlcyBpbiB3cml0ZStyZWFkIG1vZGUuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9ob3d0b190YWJsZSk6IFNldCBiaXRzaXplIHZhbHVlIGZvcgoJU0VHUkVMMzIgYW5kIG51bWVyb3VzIG90aGVyIHJlbG9jcy4gIENoYW5nZSBkdXBsaWNhdGUKCVJfUEFSSVNDX05PTkUgcmVsb2NzIHRvIFJfUEFSSVNDX1VOSU1QTEVNRU5URUQuCgoJKiBvcG5jbHMuYyAoYmZkX2Zkb3BlbnIpOiBBZGQgcGFyZW5zIGxpa2UgdGhlIGNvbW1lbnQgc2F5cyBhcm91bmQKCU9fQUNDTU9ERS4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBjcmVhdGUKCS5wbHQgZW50cmllcyBmb3IgRFRfSU5JVCBhbmQgRFRfRklOSS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YKCURUX0lOSVQgYW5kIERUX0ZJTkkuCgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVXNlIDE2LWJpdAoJb2Zmc2V0cyBmb3Igc3R1YiAucGx0IGFjY2VzcyBpZiB3aWRlIG1vZGUuICBDaGVjayBvZmZzZXQgaW4gcmFuZ2UuCgoyMDAxLTAxLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9ob3d0b190YWJsZSk6IFJlbW92ZSBzcHVyaW91cyBibGFuawoJbGluZS4KCgkqIGNvZmZjb2RlLmggKGNvZmZfY2Fub25pY2FsaXplX3JlbG9jKTogUmVtb3ZlIHNwdXJpb3VzIGJsYW5rCglsaW5lLgoKMjAwMS0wMS0xMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvbmZpZ3VyZS5pbiAoW2JmZF9lbGY2NF94ODZfNjRfdmVjXSk6IFNldCB0YXJnZXQ2NC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wMS0xMSAgUGV0ZXIgVGFyZ2V0dCAgPHBldGVyLnRhcmdldHRAYXJjY29yZXMuY29tPgoKCSogYmZkLWluMi5oIChiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF9tYWNoX2FyY181LAoJYmZkX21hY2hfYXJjXzYsIGJmZF9tYWNoX2FyY183LCBiZmRfbWFjaF9hcmNfOCBmb3IgQVJDIHZhcmlhbnRzLgoJKiBjcHUtYXJjLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgZW50cmllcyBmb3IgdmFyaWFudHMuCgkoYmZkX2FyY19hcmNoKSBTZXQgZGVmYXVsdCB0byBiZmRfbWFjaF9hcmNfNS4KCShhcmNfZ2V0X21hY2gpIERvbid0IGFzc3VtZSBtYWNoaW5lIG5hbWVzIHByZWZpeGVkIGFyYy0gYmVmb3JlCgl0ZXN0aW5nLgoJKiBlbGYzMi1hcmMuYyAoYXJjX2VsZl9vYmplY3RfcCk6IFNldCBtYWNoaW5lIG51bWJlciBiYXNlZCBvbiBuZXcKCXNlbGVjdGlvbnMuCgkoYXJjX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKSBMaWtld2lzZS4KCShFTEZfTUFDSElORV9DT0RFKSBVc2UgRU1fQVJDLgoKMjAwMS0wMS0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvZmYtYXJtLmMgKExPQ0FMX0xBQkVMX1BSRUZJWCk6IENoYW5nZSBkZWZpbml0aW9uIHRvICIiLgoKMjAwMS0wMS0wNyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIFJFQURNRTogUmVwbGFjZSBgYnVnLWdudS11dGlsc0BnbnUub3JnJyB3aXRoCglgYnVnLWJpbnV0aWxzQGdudS5vcmcnLgoKMjAwMS0wMS0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBzb20uYzogRml4IGZvcm1hdHRpbmcuCgoyMDAxLTAxLTAzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGVjb2Zmc3dhcC5oOiBGaXggZm9ybWF0dGluZy4KCSogZWxmLWJmZC5oOiBMaWtld2lzZS4KCSogZWxmYXJtLW5hYmkuYzogTGlrZXdpc2UuCgkqIGVsZmFybS1vYWJpLmM6IExpa2V3aXNlLgoJKiBlbGZjb2RlLmg6IExpa2V3aXNlLgoJKiBlbGZjb3JlLmg6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmM6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmg6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmM6IExpa2V3aXNlLgoJKiBlbGZ4eC10YXJnZXQuaDogTGlrZXdpc2UuCgkqIGxpYmJmZC5jOiBMaWtld2lzZQoJKiBsaW5rZXIuYzogTGlrZXdpc2UuCgkqIGx5bngtY29yZS5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcGM1MzItbWFjaC5jOiBGaXggZm9ybWF0dGluZy4KCSogcGUtYXJtLmM6IExpa2V3aXNlLgoJKiBwZS1pMzg2LmM6IExpa2V3aXNlLgoJKiBwZS1taXBzLmM6IExpa2V3aXNlLgoJKiBwZS1wcGMuYzogTGlrZXdpc2UuCgkqIHBlLXNoLmM6IExpa2V3aXNlLgoJKiBwZWktbWlwcy5jOiBMaWtld2lzZS4KCSogcGVpLXNoLmM6IExpa2V3aXNlLgoJKiBwZWljb2RlLmg6IExpa2V3aXNlLgoJKiBwcGNib290LmM6IExpa2V3aXNlLgoJKiBwdHJhY2UtY29yZS5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMDEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcmVsb2MuYzogRml4IGZvcm1hdHRpbmcuCgkqIHJpc2NpeC5jOiBMaWtld2lzZS4KCSogcnM2MDAwLWNvcmUuYzogTGlrZXdpc2UuCgkqIHhjb2ZmLXRhcmdldC5oOiBMaWtld2lzZS4KCjIwMDAtMTItMjkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQWxzbyByZXN0b3JlIHRoZSBiZmQgbWFjaCBmaWVsZCBvbgoJZXJyb3IsIGJ5IGNhbGxpbmcgYmZkX2RlZmF1bHRfc2V0X2FyY2hfbWFjaCB3aXRoIGluY29taW5nCgl2YWx1ZXMuCgoyMDAwLTEyLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHZheG5ldGJzZC5jOiBGaXggZm9ybWF0dGluZy4KCSogdmVyc2Fkb3MuYzogTGlrZXdpc2UuCgkqIHZtcy1nc2QuYzogTGlrZXdpc2UuCgkqIHZtcy1oZHIuYzogTGlrZXdpc2UuCgkqIHZtcy1taXNjLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBhcmNoaXZlLmMgKGNvZmZfd3JpdGVfYXJtYXApOiBEb24ndCB3cml0ZSBtb3JlIHRoYW4gc3ltYm9sX2NvdW50CglgYXJjaGl2ZV9tZW1iZXJfZmlsZV9wdHIncy4KCjIwMDAtMTItMjUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogdm1zLXRpci5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTItMjMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogdm1zLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiB2bXMuaDogTGlrZXdpc2UuCgoyMDAwLTEyLTIxICBTYW50ZXJpIFBhYXZvbGFpbmVuIDxzYW50dHVAc3NoLmNvbT4KCgkqIHZtcy1oZHIuYzogSW5jbHVkZSBhbGxvY2EuaCBpZiBIQVZFX0FMTE9DQV9IIGlzIGRlZmluZWQuCgoJKiBwZWljb2RlLmggKHBlX0lMRl9vYmplY3RfcCk6IEFkZCBjb25zdCB0byBpbXBvcnQgb2YgVEFSR0VUX0xJVFRMRV9TWU0uCgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX2dlbmVyaWNfcmVsb2MpOiBBZGQgY2FzdCB0byBhdm9pZCAodm9pZCAqKQoJYXJpdGhtZXRpYy4KCgkqIGVsZjMyLWZyMzAuYzogQWRkIGNhc3RzIHRvIGF2b2lkICh2b2lkICopIGFyaXRobWV0aWMuCgoJKiBjb2ZmY29kZS5oIChzdHlwX3RvX3NlY19mbGFncyk6IEFkZCBlbXB0eSBzdGF0ZW1lbnQgYWZ0ZXIgbGFiZWwuCgoyMDAwLTEyLTIxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBsaWJiZmQuYyAoYmZkX2dldF9iaXRzKTogQWRkZWQKCShiZmRfcHV0X2JpdHMpOiBMaWtld2lzZQoJKiBiZmQtaW4uaDogRGVjbGFyZWQgdGhlIGFib3ZlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMC0xMi0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB0YXJnZXRzLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiB0ZWtoZXguYzogTGlrZXdpc2UuCgkqIHRyYWQtY29yZS5jOiBMaWtld2lzZS4KCjIwMDAtMTItMTkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogc2NvNS1jb3JlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBzZWN0aW9uLmM6IExpa2V3aXNlLgoJKiBzcGFyY2xpbnV4LmM6IExpa2V3aXNlLgoJKiBzcGFyY2x5bnguYzogTGlrZXdpc2UuCgkqIHNwYXJjbmV0YnNkLmM6IExpa2V3aXNlLgoJKiBzcmVjLmM6IExpa2V3aXNlLgoJKiBzdGFicy5jOiBMaWtld2lzZS4KCSogc3RhYi1zeW1zLmM6IExpa2V3aXNlLgoJKiBzdW5vcy5jOiBMaWtld2lzZS4KCSogc3ltcy5jOiBMaWtld2lzZS4KCSogc3lzZGVwLmg6IExpa2V3aXNlLgoKMjAwMC0xMi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvZmYtYXJtLmMgKEVYVFJBX1NfRkxBR1MpOiBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeQoJZGVmaW5lZC4KCSogZXBvYy1wZS1hcm0uYyAoRVhUUkFfU19GTEFHUyk6IERlZmluZS4KCSogZXBvYy1wZWktYXJtLmMgKEVYVFJBX1NfRkxBR1MpOiBEZWZpbmUuCgoyMDAwLTEyLTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogdm1zLW1pc2MuYyAoX2JmZF92bXNfZ2V0X3JlY29yZCk6IEFkZCBkZWZhdWx0IGNhc2UgdG8KCWZpbGVfZm9ybWF0IHN3aXRjaC4KCjIwMDAtMTItMTUgIE1pbG9zbGF2IFRybWFjIDxtaXRyQHZvbG55LmN6PgoKCSogZWxmY29yZS5oIChlbGZfY29yZV9maWxlX3ApOiBNb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbQoJaGVhZGVycyBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWFkIHRoZW0uCgoyMDAwLTEyLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHBlaWdlbi5jOiBGaXggZm9ybWF0dGluZy4KCSogc29tLmM6IExpa2V3aXNlLgoJKiBzb20uaDogTGlrZXdpc2UuCgoyMDAwLTEyLTEzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHBlaWdlbi5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTItMTIgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqICBlbGZ4eC1pYTY0LmMgKGdldF9keW5fc3ltX2luZm8pOiBDYXN0ICVwIGFyZ3VtZW50IHRvIHZvaWQgKi4KCjIwMDAtMTItMDggIE1hcmsgU2FsdGVyICA8bXNhbHRlckByZWRoYXQuY29tPgoKCSogYmluYXJ5LmMgKGJpbmFyeV9zZXRfc2VjdGlvbl9jb250ZW50cyk6IElnbm9yZSBzZWN0aW9ucwoJd2l0aCB6ZXJvIHNpemUuCgoyMDAwLTEyLTEyICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIG02OGtsaW51eC5jOiBGaXggZm9ybWF0dGluZy4KCSogbTY4a25ldGJzZC5jOiBMaWtld2lzZS4KCSogbWlwc2JzZC5jOiBMaWtld2lzZS4KCSogbmV0YnNkLWNvcmUuYzogTGlrZXdpc2UuCgkqIG5ldGJzZC5oOiBMaWtld2lzZS4KCSogbmV3c29zMy5jOiBMaWtld2lzZS4KCSogbmxtMzItYWxwaGEuYzogTGlrZXdpc2UuCgkqIG5sbTMyLWkzODYuYzogTGlrZXdpc2UuCgkqIG5sbTMyLXBwYy5jOiBMaWtld2lzZS4KCSogbmxtMzItc3BhcmMuYzogTGlrZXdpc2UuCgkqIG5sbWNvZGUuaDogTGlrZXdpc2UuCgkqIG5sbXN3YXAuaDogTGlrZXdpc2UuCgkqIG5sbS10YXJnZXQuaDogTGlrZXdpc2UuCgkqIG5zMzJrbmV0YnNkLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0xMCAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IERvbid0IGNvbXBsYWluIGFib3V0IHVuZGVmaW5lZAoJc3ltYm9scyBpbiBzaGFyZWQgb2JqZWN0cyBpZiBhbGxvd19zaGxpYl91bmRlZmluZWQgaXMgdHJ1ZS4KCjIwMDAtMTItMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjcHUtc2guYzogRml4IGZvcm1hdHRuZy4KCSogZWxmLmM6IEZpeCBmb3JtYXR0bmcuCgkqIGVsZjMyLW1pcHMuYzogRml4IGZvcm1hdHRuZy4KCSogZWxmMzItc2guYzogRml4IGZvcm1hdHRuZy4KCSogZWxmNjQtYWxwaGEuYzogRml4IGZvcm1hdHRuZy4KCjIwMDAtMTItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBQYXNzCglkd2FyZjJfZmluZF9saW5lX2luZm8gYXMgbGFzdCBwYXJhbWV0ZXIgdG8gaW52b2NhdGlvbiBvZgoJX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluZF9uZWFyZXN0X2xpbmUpOiBQYXNzCglkd2FyZjJfZmluZF9saW5lX2luZm8gYXMgbGFzdCBwYXJhbWV0ZXIgdG8gaW52b2NhdGlvbiBvZgoJX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUuCgoyMDAwLTEyLTA4ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogTW92ZSBkd2FyZjIubG8gZnJvbSBoZXJlLi4uCgkoQkZEX0xJQlMpOiAuLi50byBoZXJlLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IE1vdmUgZHdhcmYyLmMgZnJvbSBoZXJlLi4uCgkoQkZEX0xJQlNfQ0ZJTEVTKTogLi4udG8gaGVyZS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIGR3YXJmLmxvIGZyb20gdGhlIGVsZiBzaGVsbCB2YXJpYWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBsaWJjb2ZmLWluLmggKGNvZmZfdGRhdGEpOiBBZGQgcG9pbnRlciBkd2FyZjJfZmluZF9saW5lX2luZm8uCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCSogY29mZmdlbi5jIChjb2ZmX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2FsbAoJX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUuCgkqIGR3YXJmMi5jIChfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IEFkZCBwYXJhbWV0ZXIuIFVwZGF0ZQoJYWNjb3JkaW5nbHkuCgkocmVhZF9hYmJyZXZzKTogTGlrZXdpc2UKCShkZWNvZGVfbGluZV9pbmZvKTogTGlrZXdpc2UuCgkocGFyc2VfY29tcF91bml0KTogTGlrZXdpc2UuCgkoY29tcF91bml0X2ZpbmRfbmVhcmVzdF9saW5lKTogTGlrZXdpc2UuCgkqIGxpYmJmZC1pbi5oIChfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBlbGYuYyAoX2JmZF9lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBVcGRhdGUgY2FsbC4KCSogZWxmLWJmZC5oIChlbGZfb2JqX3RkYXRhKTogQ2hhbmdlIGR3YXJmMl9maW5kX2xpbmVfaW5mbyB0byB0eXBlIFBUUi4KCSogZHdhcmYyLmMgKGNvbmNhdF9maWxlbmFtZSk6IFVzZSBJU19BQlNPTFVURV9QQVRILgoJKiBjb2ZmY29kZS5oIChTVFlQX1hDT0ZGX0RFQlVHLCBTVFlQX0RFQlVHX0lORk8pOiBOZXcgbWFjcm9zLgoJKHNlY190b19zdHlwX2ZsYWdzKTogVXNlIHRoZW0uIEhhbmRsZSBEV0FSRjIgc2VjdGlvbnMuCgkoc3R5cF90b19zZWNfZmxhZ3MpOiBIYW5kbGUgRFdBUkYyIHNlY3Rpb25zLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmRfbmVhcmVzdF9saW5lKTogQWRkIHBhcmFtZXRlciB0byBjYWxsCgl0byBfYmZkX2ZpbmRfbmVhcmVzdF9saW5lLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBBZGQgcGFyYW1ldGVyIHRvCgljYWxsIHRvIF9iZmRfZmluZF9uZWFyZXN0X2xpbmUuCgoyMDAwLTEyLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmZnZW4uYzogRml4IGZvcm1hdHRpbmcuCgkqIGVsZi1tMTAzMDAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWkzODYuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWk5NjAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jOiBMaWtld2lzZS4KCSogZWxmMzItdjg1MC5jOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYzogTGlrZXdpc2UuCgkqIGVsZjY0LWhwcGEuYzogTGlrZXdpc2UuCgkqIGVsZjY0LW1pcHMuYzogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1wcGMuYzogRml4IGZvcm1hdHRpbmcuCgkqIGVsZjY0LXg4Ni02NC5jOiBMaWtld2lzZS4KCjIwMDAtMTItMDYgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCUZyb20gIFJhbGYgQmFlY2hsZSAgPHJhbGZAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAoZWxmMzJfbWlwc19tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQWx3YXlzIHBlcm1pdAoJQkZEcyBjb250YWluaW5nIG5vIHNlY3Rpb25zIG9yIGVtcHR5IC50ZXh0LCAuZGF0YSBvciAuYnNzIHNlY3Rpb25zCgl0byBiZSBtZXJnZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZmxhZ3MuCgoyMDAwLTEyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGVsZjMyLW0zMnIuYzogRml4IGZvcm1hdHRpbmcuCgkqIGVsZjMyLW02OGhjMTEuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGhjMTIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wai5jOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1mcjMwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBlbGYzMi1ocHBhLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pODYwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pOTYwLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1hcm0uaDogRml4IGZvcm1hdHRpbmcuCgkqIGVsZjMyLWF2ci5jOiBMaWtld2lzZS4KCSogZWxmMzItY3Jpcy5jOiBMaWtld2lzZS4KCSogZWxmMzItZDEwdi5jOiBMaWtld2lzZS4KCSogZWxmMzItZDMwdi5jOiBMaWtld2lzZS4KCSogZWxmLWhwcGEuaDogTGlrZXdpc2UuCgkqIGVsZi1tMTAyMDAuYzogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYzogTGlrZXdpc2UuCgoyMDAwLTEyLTAxICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIGFvdXR4LmggKE5BTUUoYW91dCxtYWNoaW5lX3R5cGUpKTogQWRkIGJmZF9tYWNoX21pcHMzMiBhbmQKCWJmZF9tYWNoX21pcHMzMl80ay4gIFVwZGF0ZSBGSVhNRSBjb21tZW50LgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9taXBzMzIpOiBOZXcgY29uc3RhbnQuCgkoYmZkX21hY2hfbWlwczRLLCBiZmRfbWFjaF9taXBzMzJfNGspIFJlbmFtZSB0aGUgZm9ybWVyIHRvCgl0aGUgbGF0dGVyLCByZW51bWJlciBpdC4KCSogYmZkLWluMi5oIChiZmRfbWFjaF9taXBzMzIpOiBOZXcgY29uc3RhbnQuCgkoYmZkX21hY2hfbWlwczRLLCBiZmRfbWFjaF9taXBzMzJfNGspIFJlbmFtZSB0aGUgZm9ybWVyIHRvCgl0aGUgbGF0dGVyLCByZW51bWJlciBpdC4KCSogY3B1LW1pcHMuYyAoSV9taXBzMzIpOiBOZXcgY29uc3RhbnQuCgkoSV9taXBzNEssIElfbWlwczMyXzRrKTogUmVuYW1lIHRoZSBmb3JtZXIgdG8gdGhlIGxhdHRlci4KCShhcmNoX2luZm9fc3RydWN0KTogQWRkIGJmZF9tYWNoX21pcHMzMiBlbnRyeSwgcmVwbGFjZQoJYmZkX21hY2hfbWlwczRLIGVudHJ5IHdpdGggYmZkX21hY2hfbWlwczMyXzRrIGVudHJ5LgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX2lzYSk6IEFkZCBFX01JUFNfQVJDSF8zMiBjYXNlLgoJKGVsZl9taXBzX21hY2gpOiBMaWtld2lzZS4gIEFsc28sIHJlcGxhY2UgRV9NSVBTX01BQ0hfTUlQUzMyCgl3aXRoIEVfTUlQU19NQUNIX01JUFMzMl80Sy4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBSZXBsYWNlCgliZmRfbWFjaF9taXBzNEsgd2l0aCBiZmRfbWFjaF9taXBzMzJfNGsgY2FzZSwgYWRkCgliZmRfbWFjaF9taXBzMzIgY2FzZS4KCShfYmZkX21pcHNfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBHZW5lcmFsaXplIElTQSBtaXhpbmcKCWNvbXBhcmlzb24gd2l0aCBzdXBwb3J0IGZvciBNSVBTMzIuCgkoX2JmZF9taXBzX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogUHJpbnQgSVNBIG5hbWUgZm9yCglNSVBTMzIuCgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsbWFjaGluZV90eXBlKSk6IEFkZCBjYXNlcyBmb3IKCWJmZF9tYWNoX21pcHM1IGFuZCBiZmRfbWFjaF9taXBzNjQuCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX21pcHM1LCBiZmRfbWFjaF9taXBzNjQpOiBOZXcgY29uc3RhbnRzLgoJKiBiZmQtaW4yLmggKGJmZF9tYWNoX21pcHM1LCBiZmRfbWFjaF9taXBzNjQpOiBMaWtld2lzZS4KCSogY3B1X21pcHMuYyAoSV9taXBzNSwgSV9taXBzNjQpOiBOZXcgZGVmaW5pdGlvbnMuCgkoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZCBlbnRyaWVzIGZvciBiZmRfbWFjaF9taXBzNSBhbmQKCWJmZF9tYWNoX21pcHM2NC4KCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19pc2EsIGVsZl9taXBzX21hY2gsCglfYmZkX21pcHNfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBBZGQgY2FzZXMgZm9yCglFX01JUFNfQVJDSF81IGFuZCBFX01JUFNfQVJDSF82NC4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBBZGQgY2FzZXMgZm9yCgliZmRfbWFjaF9taXBzNSBhbmQgYmZkX21hY2hfbWlwczY0LgoKCSogYW91dHguaCAoTkFNRShhb3V0LG1hY2hpbmVfdHlwZSkpOiBBZGQgYQoJYmZkX21hY2hfbWlwc19zYjEgY2FzZS4KCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfbWlwc19zYjEpOiBOZXcgY29uc3RhbnQuCgkqIGJmZC1pbjIuaCAoYmZkX21hY2hfbWlwc19zYjEpOiBOZXcgY29uc3RhbnQuCgkqIGNwdS1taXBzLmMgKElfc2IxKTogTmV3IGNvbnN0YW50LgoJKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgZW50cnkgZm9yIGJmZF9tYWNoX21pcHNfc2IxLgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX21hY2gpOiBBZGQgY2FzZSBmb3IKCUVfTUlQU19NQUNIX1NCMS4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBBZGQgY2FzZSBmb3IKCWJmZF9tYWNoX21pcHNfc2IxLgoKMjAwMC0xMi0wMSAgSm9lbCBTaGVycmlsbCA8am9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGFybS0qLXJ0ZW1zKiwgYTI5ay0qcnRlbXMqKTogTmV3IHRhcmdldHMuCgkoc3BhcmMqLSotcnRlbXNlbGYqLCBzcGFyYyotKi1ydGVtc2FvdXQqKTogTmV3IHRhcmdldHMuCgkoc3BhcmMqLSotcnRlbXMqKTogU3dpdGNoZWQgZnJvbSBhLm91dCB0byBFTEYuCgoyMDAwLTExLTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5hbSAoQkZENjRfQkFDS0VORFMpOiBBZGQgZWxmNjQteDg2LTY0LmxvCglCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmNjQteDg2LTY0LmMKCShlbGY2NC14ODYtNjQubG8pOiBBZGQgZGVwZW5kZW5jaWVzLgoJKiBhcmNodXJlcy5jIChERVNDUklQVElPTik6IEFkZCBiZmRfbWFjaF94ODZfNjQsCgliZmRfbWFjaF94ODZfNjRfaW50ZWxfc3ludGF4LgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogVXNlIEVNX3g4Nl82NCBmb3IgNjRiaXQgb3V0cHV0LgoJKiBjb25maWcuYmZkICh4ODZfNjQpOiBBZGQuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIGJmZF9lbGY2NF94ODZfNjRfdmVjLgoJKiBjcHUtaTM4Ni5jIChiZmRfeDg2XzY0X2FyY2hfaW50ZWxfc3ludGF4LCBiZmRfeDg2XzY0X2FyY2gpOiBBZGQuCgkoYmZkX2kzODZfYXJjaCwgaTgwODZfYXIpOiBMaW5rIGluLgoJKiBlbGY2NC14ODYtNjQuYzogTmV3IGZpbGUuCgkqIHJlbG9jLmMgKEVOVU1ET0MpOiBBZGQgQkZEX1JFTE9DX1g4Nl82NCouCgkqIHRhcmdldHMuYyAoYmZkX2VsZjY0X3g4Nl82NF92ZWMpOiBBZGQuCgkoYmZkX3RhcmdldF92ZWN0KTogQWRkIGJmZF9lbGY2NF94ODZfNjRfdmVjLgoKMjAwMC0xMS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB4Y29mZmxpbmsuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTExLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFvdXR4Lmg6IEZpeCBmb3JtYXR0aW5nLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogTGlrZXdpc2UuCgkqIGNhY2hlLmM6IExpa2V3aXNlLgoJKiBjaXNjby1jb3JlLmM6IExpa2V3aXNlLgoJKiBjb2ZmNjQtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmY29kZS5oOiBMaWtld2lzZS4KCSogY29mZnN3YXAuaDogTGlrZXdpc2UuCgkqIGNvcmVmaWxlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhb3V0LWFkb2JlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmNjQtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmZ2VuLmM6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMjcgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGxpYmNvZmYtaW4uaCAoY29mZl90ZGF0YSk6IEFkZCBgc3RyaW5nc193cml0dGVuJyBmbGFnLgoJKG9ial9jb2ZmX3N0cmluZ3Nfd3JpdHRlbik6IE5ldyBhY2Nlc3NvciBtYWNybyBmb3IgYWJvdmUuCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2ZpbmFsX2xpbmspOiBTYXkgdGhhdCB3ZSB3cm90ZSB0aGUKCXN0cmluZ3MuCgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogTm8gbmVlZCB0byB3cml0ZSBvdXQKCXRoZSBzdHJpbmcgdGFibGUgaWYgaXQncyBhbHJlYWR5IGJlZW4gZG9uZS4KCjIwMDAtMTEtMjIgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBvYmplY3QgdG8KCXdlYWsgdW5kZWZpbmVkIHN5bWJvbHMuCgoyMDAwLTExLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfYXJtXzVURSk6IERlZmluZS4KCShiZmRfbWFjaF9hcm0rWFNjYWxlKTogRGVmaW5lLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY190eXBlX2xvb2t1cCk6IEFjY2VwdAoJQkZEX1JFTE9DX0FSTV9QQ1JFTF9CTFguCgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9mbGFncyk6IFNldCBmbGFncyBmb3IgNXQsIDV0ZSBhbmQKCVhTY2FsZSBtYWNoaW5lIG51bWJlcnMuCgoJKiBjb25maWcuYmZkICh4c2NhbGUtZWxmKTogQWRkIHRhcmdldC4KCSh4c2NhbGUtY29mZik6IEFkZCB0YXJnZXQuCgoJKiBjcHUtYXJtLmM6IEFkZCB4c2NhbGUgbWFjaGluZSBuYW1lLgoJQWRkIHY1dCwgdjV0ZSBhbmQgWFNjYWxlIG1hY2hpbmUgbnVtYmVycy4KCjIwMDAtMTEtMjMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYWl4Mzg2LWNvcmUuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTExLTIyICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWlhNjQuYyAoaG93dG9fdGFibGUpOiBVc2UgRU1QVFlfSE9XVE8uCgkoaW5fcmVsb2NfcCk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBwYXJhbWV0ZXJzLgoJKiBjcHUtaWE2NC1vcGMuYyAoaW5zX3JzdmQsIGV4dF9yc3ZkLCBpbnNfY29uc3QsIGV4dF9jb25zdCk6IExpa2V3aXNlLgoJKGluc19pbW1zX3NjYWxlZCk6IEluaXRpYWxpemUgc2lnbl9iaXQgYXQgZnVuY3Rpb24gZW50cnkuCgkoZWxmNjRfaWE2NF9vcGVyYW5kcyk6IEFkZCBtaXNzaW5nIGluaXRpYWxpemVycy4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3JlbG9jLCBlbGZOTl9pYTY0X3JlbG9jX3R5cGVfbG9va3VwLAoJZWxmTk5faWE2NF9pbmZvX3RvX2hvd3RvLCBlbGZOTl9pYTY0X2Zha2Vfc2VjdGlvbnMsCgllbGZOTl9pYTY0X2FkZF9zeW1ib2xfaG9vaywgZWxmTk5faWE2NF9pc19sb2NhbF9sYWJlbF9uYW1lLAoJZWxmTk5faWE2NF9sb2NhbF9oYXNoX3RhYmxlX2luaXQsIGdldF9mcHRyLCBnZXRfcGx0b2ZmLAoJZWxmTk5faWE2NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBBZGQgQVRUUklCVVRFX1VOVVNFRCBmb3IgdW51c2VkCglwYXJhbWV0ZXJzLgoJKGVsZk5OX2lhNjRfaW5mb190b19ob3d0byk6IEluaXRpYWxpemUgZnJlZV9yZWxvY3MsIGZyZWVfY29udGVudHMsCglhbmQgZnJlZV9leHRzeW1zIGF0IGZ1bmN0aW9uIGVudHJ5LgoJKGVsZk5OX2FkZF9zeW1ib2xfaG9vayk6IEFkZCB1bnNpZ25lZCBjYXN0IHRvIGJmZF9nZXRfZ3Bfc2l6ZSByZXN1bHQuCgkoZWxmTk5faWE2NF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgaC4KCShnZXRfZ290KTogRGVsZXRlIHVudXNlZCBsb2NhbCBzcmVsLgoJKGVsZk5OX2lhNjRfY2hlY2tfcmVsb2NzKTogSW5pdGlhbGl6ZSBkeW5yZWxfdHlwZSB3aGVuIGRlY2xhcmVkLgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IERlbGV0ZSB1bnVzZWQgbG9jYWwgZHluaW5keC4KCjIwMDAtMTEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1hMjlrLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWk5NjAuYzogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZi1zdGdvMzIuYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljNTR4LmM6IExpa2V3aXNlLgoJKiBjb2ZmLXc2NS5jOiBMaWtld2lzZS4KCSogY3B1LWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjcHUtaHBwYS5jOiBMaWtld2lzZS4KCSogY3B1LW5zMzJrLmM6IExpa2V3aXNlLgoJKiBlY29mZi5jOiBMaWtld2lzZS4KCSogZWNvZmZsaW5rLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY19sb29wKTogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nLCBhbmQKCXJlbW92ZSBwb3NzaWJpbGl0eSBvZiBpbmZpbml0ZSBsb29wLgoKMjAwMC0xMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhaXgzODYtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCSogYW91dC1hZG9iZS5jOiBMaWtld2lzZS4KCSogYW91dC1hcm0uYzogTGlrZXdpc2UuCgkqIGFvdXQtZW5jYXAuYzogTGlrZXdpc2UuCgkqIGFvdXQtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGFvdXQtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBhb3V0LXRpYzMwLmM6IExpa2V3aXNlLgoJKiBhb3V0ZjEuaDogTGlrZXdpc2UuCgkqIGFvdXR4Lmg6IExpa2V3aXNlLgoJKiBhcmNoaXZlLmM6IExpa2V3aXNlLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogTGlrZXdpc2UuCgkqIGJmZC5jOiBMaWtld2lzZS4KCSogYm91dC5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBjcmVhdGUKCXBsdG9mZiBlbnRyaWVzIGZvciBEVF9JTklUIGFuZCBEVF9GSU5JLgoJKGVsZk5OX2lhNjRfZmluYWxfbGluayk6IERvbid0IHNldCBEVF9JTklUL0ZJTkkgZW50cmllcy4KCShlbGZOTl9pYTY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgZmlsbCBpbiBEVF9JTklUL0ZJTkkKCWVudHJpZXMuCgoyMDAwLTExLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBJUExUIHJlbG9jcy4KCShhbGxvY2F0ZV9keW5yZWxfZW50cmllcyk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLiAgU2V0IFJFTCBhZGRlbmRzIGNvcnJlY3RseS4KCShzZXRfcGx0b2ZmX2VudHJ5KTogTGlrZXdpc2UuCgkoaWE2NF9ob3d0b190YWJsZSk6IFJlbW92ZSBSX0lBNjRfU0VHQkFTRSwgYW5kIFJfSUE2NF9FUExUW01MXVNCCgkoZWxmTk5faWE2NF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfaW5zdGFsbF92YWx1ZSk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfSUE2NF9TRUdCQVNFKTogUmVtb3ZlLgoJKEJGRF9SRUxPQ19JQTY0X0VQTFRNU0IsIEJGRF9SRUxPQ19JQTY0X0VQTFRMU0IpOiBSZW1vdmUuCgoyMDAwLTExLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNwdS1hMjlrLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjcHUtYWxwaGEuYzogTGlrZXdpc2UuCgkqIGNwdS1hcm0uYzogTGlrZXdpc2UuCgkqIGNwdS1hdnIuYzogTGlrZXdpc2UuCgkqIGNwdS1kMTB2LmM6IExpa2V3aXNlLgoJKiBjcHUtaDg1MDAuYzogTGlrZXdpc2UuCgkqIGNwdS1ocHBhLmM6IExpa2V3aXNlLgoJKiBjcHUtaTM3MC5jOiBMaWtld2lzZS4KCSogY3B1LWkzODYuYzogTGlrZXdpc2UuCgkqIGNwdS1pOTYwLmM6IExpa2V3aXNlLgoJKiBjcHUtaWE2NC1vcGMuYzogTGlrZXdpc2UuCgkqIGNwdS1pYTY0LmM6IExpa2V3aXNlLgoJKiBjcHUtbTMyci5jOiBMaWtld2lzZS4KCSogY3B1LW02OGhjMTEuYzogTGlrZXdpc2UuCgkqIGNwdS1tNjhoYzEyLmM6IExpa2V3aXNlLgoJKiBjcHUtbTY4ay5jOiBMaWtld2lzZS4KCSogY3B1LW04OGsuYzogTGlrZXdpc2UuCgkqIGNwdS1taXBzLmM6IExpa2V3aXNlLgoJKiBjcHUtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGNwdS1wai5jOiBMaWtld2lzZS4KCSogY3B1LXBvd2VycGMuYzogTGlrZXdpc2UuCgkqIGNwdS1zaC5jOiBMaWtld2lzZS4KCSogY3B1LXNwYXJjLmM6IExpa2V3aXNlLgoJKiBjcHUtdGljNTR4LmM6IExpa2V3aXNlLgoJKiBjcHUtdjg1MC5jOiBMaWtld2lzZS4KCSogY3B1LXZheC5jOiBMaWtld2lzZS4KCSogY3B1LXc2NS5jOiBMaWtld2lzZS4KCSogY3B1LXdlMzJrLmM6IExpa2V3aXNlLgoJKiBjcHUtejhrLmM6IExpa2V3aXNlLgoJKiBkd2FyZjEuYzogTGlrZXdpc2UuCgkqIGR3YXJmMi5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1hcm0uYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZi1zaC5jOiBMaWtld2lzZS4KCSogY29mZi1zcGFyYy5jOiBMaWtld2lzZS4KCSogY29mZi10aWMzMC5jOiBMaWtld2lzZS4KCSogY29mZi10aWM1NHguYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljODAuYzogTGlrZXdpc2UuCgkqIGNvZmYtdzY1LmM6IExpa2V3aXNlLgoJKiBjb2ZmLXdlMzJrLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXo4ay5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9jaGVja19yZWxvY3MpOiBDcmVhdGUgdGhlIHJlbG9jCglzZWN0aW9uIHdpdGggdGhlIHNhbWUgQUxMT0N8TE9BRCBmbGFncyBhcyB0aGUgc291cmNlIHNlY3Rpb24uCgoyMDAwLTExLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbGF4X29wdF9jYWxsKTogT25seSBjaGVjayBiaXRzIHVzZWQKCWJ5IFNUT19BTFBIQSBjb25zdGFudHMuCgoyMDAwLTExLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtcG1hYy5jOiBGaXggZm9ybWF0dGluZy4KCSogY29mZi1wcGMuYzogTGlrZXdpc2UuCgoyMDAwLTExLTEzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFsc28gYWRkIGluZGlyZWN0CglzeW1ib2xzIGZvciBjb21tb24gc3ltYm9scyB3aXRoIHRoZSBkZWZhdWx0IHZlcnNpb24uCgoyMDAwLTExLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBzZWN0aW9uLmMgKFNURF9TRUNUSU9OKTogU2V0IGdjX21hcmsgZmxhZy4KCjIwMDAtMTEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1pOTYwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW02OGsuYzogTGlrZXdpc2UuCgkqIGNvZmYtbTg4ay5jOiBMaWtld2lzZS4KCSogY29mZi1tY29yZS5jOiBMaWtld2lzZS4KCSogY29mZi1taXBzLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0xMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IElnbm9yZSBSX1NIX05PTkUgcmVsb2NzLgoKMjAwMC0xMS0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWg4MzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWkzODYuYzogTGlrZXdpc2UuCgkqIGNvZmYtaTg2MC5jOiBMaWtld2lzZS4KCSogY29mZi1pOTYwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWlhNjQuYzogTGlrZXdpc2UuCgoyMDAwLTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFyY2hpdmUuYzogRml4IGZvcm1hdHRpbmcuCgkqIGFyY2h1cmVzLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmNjRfaWE2NF9maW5hbF9saW5rKTogTmV3IGxvY2FsIHVud2luZF9vdXRwdXRfc2VjLgoJU2V0IGl0IGJlZm9yZSBiZmRfZWxmNjRfYmZkX2ZpbmFsX2xpbmsgY2FsbC4gIFVzZSBpdCBhZnRlciB0aGUgY2FsbC4KCSogc2VjdGlvbi5jIChiZmRfc2V0X3NlY3Rpb25fY29udGVudHMpOiBDYWxsIG1lbWNweSBpZgoJc2VjdGlvbi0+Y29udGVudHMgc2V0IGFuZCBsb2NhdGlvbiBub3QgZXF1YWwgdG8gY29udGVudHMgcGx1cyBvZmZzZXQuCgoyMDAwLTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGJmZC1pbi5oOiBGaXggZm9ybWF0dGluZy4KCSogYmZkLWluMi5oOiBMaWtld2lzZS4KCSogYmZkLmM6IExpa2V3aXNlLgoJKiBiaW5hcnkuYzogTGlrZXdpc2UuCgkqIGJvdXQuYzogTGlrZXdpc2UuCgkqIGNvZmYtYTI5ay5jOiBMaWtld2lzZS4KCSogY29mZi1hbHBoYS5jOiBMaWtld2lzZS4KCSogY29mZi1hcG9sbG8uYzogTGlrZXdpc2UuCgkqIGNvZmYtYXV4LmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhaXgzODYtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCSogYW91dGYxLmg6IExpa2V3aXNlLgoJKiBhb3V0eC5oOiBMaWtld2lzZS4KCSogYXJjaHVyZXMuYzogTGlrZXdpc2UuCgkqIGFybW5ldGJzZC5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMDcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb2ZmLWg4MzAwLmMgKHNwZWNpYWwpOiBBZGp1c3QgcmVsb2MgYWRkcmVzcy4KCjIwMDAtMTEtMDYgIFN0ZXZlIEVsbGNleSA8c2plQGN1cC5ocC5jb20+CgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9pYTY0X2VsZjY0LCBiZmRfbWFjaF9pYTY0X2VsZjMyKTogQWRkIGRlZmluZXMKCXRvIGRpZmZlcmVudGlhdGUgZWxmMzIgYW5kIGVsZjY0IG9uIGlhNjQuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmJmZDogQWRkIHRhcmdldCBmb3IgImlhNjQqLSotaHB1eCoiLgoJKiBjb25maWd1cmUuaW46IEFkZCBiZmRfZWxmMzJfaWE2NF9iaWdfdmVjIHRvIHNlbHZlY3Mgc3dpdGNoLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNwdS1pYTY0LmMgKGJmZF9pYTY0X2VsZjMyX2FyY2gpOiBBZGQgZWxmMzIgYXJjaCBpbmZvIHN0cnVjdHVyZS4KCSogdGFyZ2V0cy5jOiBBZGQgYmZkX3RhcmdldCBiZmRfZWxmMzJfaWE2NF9iaWdfdmVjLgoKCSogTWFrZWZpbGUuYW06IE1ha2UgZWxmMzItaWE2NC5jIGFuZCBlbGY2NC1pYTY0LmMgZGVyaXZlZCBvYmplY3RzCglmcm9tIGVsZnh4LWlhNjQuYy4gIEFkZCBkZXBlbmVuY3kgcnVsZXMgZm9yIG1ha2luZyBlbGYzMi1pYTY0LmxvLgoJKiBNYWtlZmlsZS5pbjogUmVnbmVyYXRlLgoJKiBlbGY2NC1pYTY0LmM6IERlbGV0ZWQuCgkqIGVsZnh4LWlhNjQuYzogTmV3IGZpbGUsIHBhcmFtYXRlcml6ZWQgdmVyc2lvbiBvZiBlbGY2NC1pYTY0LmMuCgoyMDAwLTExLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFvdXQtYWRvYmUuYzogRml4IGZvcm1hdHRpbmcuCgkqIGFvdXQtYXJtLmM6IExpa2V3aXNlLgoJKiBhb3V0LWNyaXMuYzogTGlrZXdpc2UuCgkqIGFvdXQtZW5jYXAuYzogTGlrZXdpc2UuCgkqIGFvdXQtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGFvdXQtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBhb3V0LXRpYzMwLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsd2F5cyBwZXJtaXQKCUJGRHMgY29udGFpbmluZyBubyBzZWN0aW9ucyB0byBiZSBtZXJnZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZmxhZ3MuCgoyMDAwLTExLTA0ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogU3VwcHJlc3MgZXJyb3IgbWVzc2FnZQoJaWYgYSByZWxvY2F0aW9uIGZvciBhbiB1bmRlZmluZWQgc3ltYm9sIGFsc28gcmVzdWx0cyBpbiBhbgoJb3ZlcmZsb3cuCgoyMDAwLTExLTA2ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIFN1biBDaG9ydXMuCgoyMDAwLTExLTA1ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlndXJlLmluOiBSZWNvZ25pemUgYWxwaGEtKi1mcmVlYnNkKi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0wMiAgTHVjaWFubyBHZW1tZSA8aXNoaXRhd2FAeWFob28uY29tPgoKCSogc3JlYy5jIChDSFVOSyk6IFJlbmFtZSB0byBERUZBVUxUX0NIVU5LLgoJKENodW5rKTogTmV3IGdsb2JhbCB2YXJpYWJsZSBzZXQgYnkgYSBwYXJhbWV0ZXIgaW4gb2JqY29weS5jLgoJKFMzRm9yY2VkKTogTmV3IGdsb2JhbCB2YXJpYWJsZSBzZXQgYnkgYSBwYXJhbWV0ZXIgaW4KCW9iamNvcHkuYy4KCShzcmVjX3NldF9zZWN0aW9uX2NvbnRlbnRzKTogSWYgUzNGb3JjZWQgaXMgdHJ1ZSwgYWx3YXlzIGdlbmVyYXRlCglTMyByZWNvcmRzLgoJKHNyZWNfd3JpdGVfc2VjdGlvbik6IFVzZSAnQ2h1bmsnIHRvIGxpbWl0IG1heGltdW0gbGVuZ3RoIG9mIFMKCXJlY29yZHMuCgoyMDAwLTExLTAyICBQZXIgTHVuZGJlcmcgIDxwbHVuZGlzQGNoYW9zZGV2Lm9yZz4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBpWzM0NTZdODYtY2hhb3NkZXYtc3Rvcm0tY2hhb3MuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTEwLTMxICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogT25seSBoYW5kbGUKCUVGX1NPRlRfRkxPQVQgaWYgaXQgaXMgZGVmaW5lZC4KCjIwMDAtMTAtMjcgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IERvbid0IHJlZnVzZQoJYXR0ZW1wdHMgdG8gbWl4IFBJQyBjb2RlIHdpdGggbm9uLVBJQywganVzdCBtYXJrIHRoZSBvdXRwdXQgYXMKCWJlaW5nIHBvc2l0aW9uIGRlcGVuZGVudC4KCShlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLiAgUHJpbnQgYW4gZXJyb3IKCW1lc3NhZ2UgZm9yIEVGX1NPRlRfRkxPQVQgbWlzbWF0Y2hlcy4gIERpc3BsYXkgZGlhZ25vc3RpY3MgZm9yCglhbGwgbWlzbWF0Y2hlcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KCjIwMDAtMTAtMjUgIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogaWVlZS5jIChpZWVlX2FyY2hpdmVfcCk6IFBsdWcgb25lIG9mIG1hbnkgcG9zc2libGUKCW1lbW9yeSBsZWFrcyBpbiBlcnJvciBoYW5kbGluZy4KCjIwMDAtMTAtMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSwKCWVsZjMyX3NwYXJjX29iamVjdF9wLCBlbGYzMl9zcGFyY19maW5hbF93cml0ZV9wcm9jZXNzaW5nKToKCVN1cHBvcnQgdjhwbHVzYi4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSwKCXNwYXJjNjRfZWxmX29iamVjdF9wKTogU3VwcG9ydCB2OWIuCgkqIGFyY2h1cmVzLmM6IERlY2xhcmUgdjhwbHVzYiBhbmQgdjliIG1hY2hpbmVzLgoJKiBiZmQtaW4yLmg6IERpdHRvLgoJKiBjcHUtc3BhcmMuYzogRGl0dG8uCgoyMDAwLTEwLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHNob2dnb3RoLmN5Z251cy5jb20+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQ2xlYXIgdGhlIGxvY2F0aW9uCglvZiBhIEdPVCByZWxvYy4KCgkqIGVsZjMyLXBwYy5jIChTWU1CT0xfUkVGRVJFTkNFU19MT0NBTCk6IE5ldyBtYWNyby4KCShTWU1CT0xfQ0FMTFNfTE9DQUwpOiBOZXcgbWFjcm8uCgkocHBjX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBVc2UgU1lNQk9MX0NBTExTX0xPQ0FMLgoJKHBwY19lbGZfY2hlY2tfcmVsb2NzKTogVXNlIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMLgoJKHBwY19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVXNlIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMLgoJKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFVzZSBmbGFnIHZhcmlhYmxlIHRvIGRldGVybWluZQoJd2hldGhlciB0aGUgcmVsb2NhdGlvbiByZWZlcnMgdG8gYSBsb2NhbCBzeW1ib2wuCglUZXN0IHdoZXRoZXIgYSBQTFRSRUwyNCByZWxvYyB3aWxsIHByb2R1Y2UgYSByZWxvYyBieSBsb29raW5nCgl0byBzZWUgd2hldGhlciBhIFBMVCBlbnRyeSB3YXMgbWFkZS4KCjIwMDAtMTAtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAc2hvZ2dvdGguY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IG1ha2UgUExUCgllbnRyaWVzIHRoYXQgY291bGQgc2VydmUgYXMgYSBkZWZpbml0aW9uIGZvciBhIHdlYWsgc3ltYm9sLgoKMjAwMC0xMC0xMyAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJRnJvbSAgUmFsZiBCYWVjaGxlICA8cmFsZkBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19yZWxvY2F0aW9uKTogTmV3IGFyZ3VtZW50Cglsb2NhbF9wLiAgQWRkIHN5bWJvbCB2YWx1ZSBvbmx5IGZvciBub24tUl9NSVBTX1JFTDMyIHJlbG9jYXRpb25zCglhZ2FpbnN0IGxvY2FsIHN5bWJvbHMuCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFVuZG8gcGF0Y2ggZnJvbSAyMDAwLTEwLTAxLgoKMjAwMC0xMC0xMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoc3RydWN0IHNlYyk6IEFkZCBrZXB0X3NlY3Rpb24uCgkoc3RydWN0IGJmZF9jb21kYXRfaW5mbyk6IFJlbW92ZSBzZWMsIHdlIGNhbiB1c2UgYWJvdmUuCgkoU1REX1NFQ1RJT04pOiBBZGQgaW5pdGlhbGl6ZXIuCgkoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBJbml0IGhlcmUgdG9vLgoKCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCXplcm9pbmcgb2YgYGZsYWdzJy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBTZXQgYWxsIGFzZWN0aW9uLT5zeW1ib2wtPnZhbHVlJ3MgaGVyZSwgYW5kCglmdWRnZSB2YWx1ZXMgZm9yIGRpc2NhcmRlZCBsaW5rLW9uY2Ugc2VjdGlvbiBzeW1ib2xzLgoKCSogZWxmNjQtaHBwYS5jOiBJbmNsdWRlIGFsbG9jYS1jb25mLmgKCjIwMDAtMTAtMTEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6IFJldmVydCAyMDAwLTEwLTA3IGNoYW5nZXMuCgoJKiBpZWVlLmMgKGllZWVfbWFrZV9lbXB0eV9zeW1ib2wpOiBPb3BzLCBiZmRfemFsbG9jIG5lZWRzIGFub3RoZXIgYXJnLgoKMjAwMC0xMC0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGllZWUuYyAoaWVlZV9tYWtlX2VtcHR5X3N5bWJvbCk6IFVzZSBiZmRfemFsbG9jLCBub3QgYmZkX3ptYWxsb2MuCgoyMDAwLTEwLTEwICBUb20gUml4IDx0cml4QHJlZGhhdC5jb20+CgoJKiBzZWN0aW9uLmMgKGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5KTogUmVsZWFzZSBuZXdzZWN0IHB0ciB3aGVuCgluZXdzZWN0LT5zeW1ib2wgZmFpbHMgdG8gYWxsb2MuICBVc2UgYmZkX3JlbGVhc2UgaW5zdGVhZCBvZiBmcmVlLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbQoKCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3Vud2luZF9lbnRyeV9jb21wYXJlX2JmZCk6IE5ldy4KCShlbGY2NF9pYTY0X3Vud2luZF9lbnRyeV9jb21wYXJlKTogTmV3LgoJKGVsZjY0X2lhNjRfZmluYWxfbGluayk6IFNvcnQgdGhlIC5JQV82NC51bndpbmQgc2VjdGlvbi4KCjIwMDAtMTAtMDcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGZsaW5rLmggKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IERvbid0IGNyZWF0ZSB2YXJpb3VzIHRhZ3MgaWYKCS5keW5zdHIgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbGluay4gIERvbid0IHNldCBmaXJzdCBkeW5zeW0gZW50cnkKCWlmIGR5bnN5bWNvdW50IGlzIHplcm8uCgkoZWxmX2JmZF9maW5hbF9saW5rKTogRG9uJ3QgdHJ5IHRvIHN3YXAgb3V0IGR5bmFtaWMgc3ltcyBpZgoJLmR5bnN5bSBleGNsdWRlZCBmcm9tIHRoZSBsaW5rLiAgRG9uJ3QgdHJ5IHRvIHdyaXRlIGFueSBkeW5hbWljCglzZWN0aW9ucyBleGNsdWRlZCBmcm9tIHRoZSBsaW5rLgoKCSogZWxmLmMgKHN3YXBfb3V0X3N5bXMpOiBIYW5kbGUgZ2xvYmFsIHNlY3Rpb24gc3ltYm9scy4KCjIwMDAtMTAtMDUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcGVpZ2VuLmMgKF9iZmRfcGVpX3N3YXBfc2NuaGRyX291dCk6IG5vdGUgZXh0ZW5kZWQgcmVsb2NzCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FsaWdubWVudF9ob29rKTogcmVhZCBleHRlbmRlZCByZWxvYyBjb3VudAoJKGNvZmZfd3JpdGVfcmVsb2NzKTogd3JpdGUgZXh0ZW5kZWQgcmVsb2MgY291bnQKCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IGFjY291bnQgZm9yIGV4dGVuZGVkIHJlbG9jcwoKMjAwMC0xMC0wNSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBlbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzCglmaWVsZC4KCSogZWxmLmMgKF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3NoZHIpOiBDYWxsIHRoZQoJZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFncyBmdW5jdGlvbi4KCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3NlY3Rpb25fZnJvbV9zaGRyKTogRGVsZXRlIGZsYWcgY29udmVyc2lvbgoJY29kZS4KCShlbGY2NF9pYTY0X3NlY3Rpb25fZmxhZ3MpOiBOZXcgZnVuY3Rpb24gY29udGFpbmluZyBmbGFnIGNvbnZlcnNpb24KCWNvZGUuCgkoZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFncyk6IERlZmluZSB0byBlbGY2NF9pYTY0X3NlY3Rpb25fZmxhZ3MuCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzKTogRGVmaW5lLgoJKGVsZk5OX2JlZCk6IEluaXRpYWxpemUgZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFncyBmaWVsZC4KCjIwMDAtMTAtMDIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogQ29ycmVjdCBjYWxsIHRvCglfYmZkX2VsZjMyX2djX3JlY29yZF92dGFibGUuICBDb3JyZWN0IGEgY29tbWVudC4KCjIwMDAtMTAtMDEgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCUZyb20gIFJhbGYgQmFlY2hsZSAgPHJhbGZAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IE1hcmsgZ2xkCglwcm9kdWNlcyBiaW5hcmllcyB3aXRoIGdvdFsxXSA9IDB4ODAwMDAwMDEgdG8gZGlmZmVyZW5jaWF0ZSB0aGVtCglmb3IgdGhlIGR5bmFtaWMgbGlua2VyIGZyb20gdGhlIGJyb2tlbiBiaW5hcmllcyBwcm9kdWNlZCBieSBvbGQKCXZlcnNpb25zLgoKMjAwMC0wOS0zMCAgUGV0ciBTb3JmYSA8cGV0cnNAc2NvLmNvbT4KCgkqIGVsZi5jIChlbGZjb3JlX2dyb2tfcHN0YXR1cyk6IENoZWNrIGZvciBzaXplIG9mIHB4c3RhdHVzX3QuCgkoZWxmY29yZV9ncm9rX2x3cHN0YXR1cyk6IENoZWNrIGZvciBzaXplIG9mIGx3cHhzdGF0dXNfdC4KCSogY29uZmlndXJlLmluOiBBZGQgY2hlY2sgZm9yIHB4c3RhdHVzX3QgYW5kIGx3cHhzdGF0dXNfdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0yNyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJRGVmaW5lIHR3byBiZmRfdGFyZ2V0cyBmb3IgYWJzZW5jZSBhbmQgcHJlc2VuY2Ugb2YgbGVhZGluZwoJdW5kZXJzY29yZSBvbiBzeW1ib2xzLiAgTWFrZSBzdXJlIHRvIG9ubHkgbGluayBzYW1lIGtpbmQuCgkqIGVsZjMyLWNyaXMuYyAoY3Jpc19lbGZfb2JqZWN0X3AsCgljcmlzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nLCBjcmlzX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhLAoJY3Jpc19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldy4KCShlbGZfYmFja2VuZF9vYmplY3RfcCwgZWxmX2JhY2tlbmRfZmluYWxfd3JpdGVfcHJvY2Vzc2luZywKCWJmZF9lbGYzMl9iZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSwKCWJmZF9lbGYzMl9iZmRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IERlZmluZS4KCTxUYXJnZXQgdmVjdG9yIGRlZmluaXRpb24+OiBJbmNsdWRlIGVsZjMyLXRhcmdldC5oIHR3aWNlIHdpdGgKCWRpZmZlcmVudCBtYWNybyBzZXR0aW5nczoKCShUQVJHRVRfTElUVExFX1NZTSk6IEZpcnN0IGFzIGJmZF9lbGYzMl9jcmlzX3ZlYywgdGhlbiBhcwoJYmZkX2VsZjMyX3VzX2NyaXNfdmVjLgoJKFRBUkdFVF9MSVRUTEVfTkFNRSk6IEZpcnN0IGFzICJlbGYzMi1jcmlzIiwgdGhlbiAiZWxmMzItdXMtY3JpcyIuCgkoZWxmX3N5bWJvbF9sZWFkaW5nX2NoYXIpOiBGaXJzdCBhcyAwLCB0aGVuICdfJy4KCShJTkNMVURFRF9UQVJHRVRfRklMRSk6IERlZmluZSBmb3Igc2Vjb25kIGluY2x1ZGUgb2YgZWxmMzItdGFyZ2V0LmguCgkqIGNvbmZpZy5iZmQgKGNyaXMtKi0qKTogQWRkIGJmZF9lbGYzMl91c19jcmlzX3ZlYyB0byB0YXJnX3NlbHZlY3MuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX2NyaXNfdmVjLCBjcmlzX2FvdXRfdmVjKTogTmV3IHZlY3Rvci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiB0YXJnZXRzLmM6IERlY2xhcmUgYmZkX2VsZjMyX3VzX2NyaXNfdmVjLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0yOSAgTW9tY2hpbCBWZWxpa292ICA8dmVsY29AZmFkYXRhLmJnPgoKCSogZWxmMzItYXJtLmggKGFybV9hZGRfdG9fcmVsKTogQ29ycmVjdGx5IGFkanVzdCB0aGUgYWRkZW5kIGZvcgoJUl9BUk1fVEhNX1BDMjIgcmVsb2NhdGlvbnMuCgoyMDAwLTA5LTI5ICBOSUlCRSBZdXRha2EgPGduaWliZUBjaHJvb3Qub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBEb24ndCBiZmRfcmVsZWFzZSBydW5wYXRoLgoKMjAwMC0wOS0yOSAgTW9tY2hpbCBWZWxpa292IDx2ZWxjb0BmYWRhdGEuYmc+CgoJKiBlbGYuYyAoZWxmX2Zha2Vfc2VjdGlvbnMpOiBEbyBub3QgbWFyayB0aGUgc2VjdGlvbiBTSFRfTk9CSVRTIGlmCglpcyBoYXMgdGhlIFNFQ19IQVNfQ09OVEVOVFMgZmxhZyBzZXQuCgoyMDAwLTA5LTI4ICCB1nJqYW4gRnJpYmVyZyAgPG9yamFuZkBheGlzLmNvbT4KCSAgICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGFvdXQtY3Jpcy5jIChOX1RYVEFERFIpOiBEZWZpbmUuCgoyMDAwLTA5LTI4ICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBzb20uYzogSW5jbHVkZSBhbGxvY2EtY29uZi5oLgoJKiBNYWtlZmlsZS5hbTogIm1ha2UgZGVwLWFtIgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDAtMDktMjcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKHBsdF9zdHViKTogTmV3LgoJKFBMVF9TVFVCX0VOVFJZKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogQ2hhbmdlIG11bHRpX3N1YnNwYWNlIHRvIHBhY2tlZAoJYm9vbGVhbi4gIEFkZCBuZWVkX3BsdF9zdHViLCBoYXNfMTJiaXRfYnJhbmNoIGFuZCBoYXNfMTdiaXRfYnJhbmNoLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IEluaXQgdG8gc3VpdC4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IFNldCBoYXNfMTJiaXRfYnJhbmNoIGFuZAoJaGFzXzE3Yml0X2JyYW5jaCBhcyBhcHByb3ByaWF0ZS4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IFNldCBuZWVkX3BsdF9zdHViIGZvcgoJbm9uLWxvY2FsIGZ1bmN0aW9ucy4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IENvcnJlY3Qgc2V0dGluZyBvZiByZWx0ZXh0LgoJQWRkIHNwYWNlIGZvciBwbHRfc3R1YiBhcyBuZWVkZWQuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBQb2ludCAucGx0IGVudHJpZXMgZm9yIGdsb2JhbAoJZnVuY3Rpb25zIGF0IHBsdF9zdHViLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBXcml0ZSBwbHRfc3R1Yi4KCShlbGYzMl9ocHBhX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogTGVhdmUgLnBsdCBleGVjdXRhYmxlLgoKCSogZWxmMzItaHBwYS5oIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBBZGQgZ3JvdXBfc2l6ZSBwYXJhbS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBMaWtld2lzZS4gIFVzZSBpdCBpbnN0ZWFkCglvZiBmaXhlZCBzaXplLCBhbmQgaWYgbmVnYXRpdmUsIGRpc2FibGUgaGFuZGxpbmcgb2YgaW5wdXQgc2VjdGlvbnMKCWJlZm9yZSBzdHViIHNlY3Rpb24uICBTZXQgdXAgZGVmYXVsdCBzdHViIGdyb3VwIHNpemUgZGVwZW5kaW5nCglvbiBkZXRlY3RlZCBicmFuY2ggcmVsb2NzLgoJKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBVc2UgbHJzZWwgYW5kIHJyc2VsIGZvciBpbXBvcnQgc3R1YnMgdG8KCWVuc3VyZSBkaWZmZXJlbnQgb2Zmc2V0cyBmcm9tIHN5bV92YWx1ZSBhcmVuJ3Qgcm91bmRlZCB0bwoJZGlmZmVyZW50IDJrIGJsb2Nrcy4gIFVzZSBscnNlbCBhbmQgcnJzZWwgZm9yIG90aGVyIHN0dWJzIHRvbyBmb3IKCWNvbnNpc3RlbmN5IHJhdGhlciB0aGFuIG5lY2Vzc2l0eS4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBSX1BBUklTQ19ESVIxNEYuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaG93dG9fdGFibGUpOiBBZGQgUl9QQVJJU0NfRElSMTRGIHJlbG9jLgoJKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBHZW5lcmF0ZSB0aGVtLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUgdGhlbS4KCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogTGlrZXdpc2UuCgkoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEFkZCBtaXNzaW5nIGVfbGRzZWwgYW5kIGVfcmRzZWwgY2FzZXMuCgoyMDAwLTA5LTI2ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogUHJlc2VydmUgYW5kIGNsZWFyIGFiZmQgc2VjdGlvbgoJaW5mb3JtYXRpb24uICBSZXN0b3JlIGF0IGVycm9yLgoKMjAwMC0wOS0yNiAgUGF1bCBTb2tvbG92c2t5ICA8UGF1bC5Tb2tvbG92c2t5QHRlY2hub2xvZ2lzdC5jb20+CgoJKiBwZWlnZW4uYyAoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX2luKTogSWYgc29tZSBEYXRhRGlyZWN0b3J5CglpcyBlbXB0eSwgbWFrZSBzdXJlIHRoYXQgaXRzIHJ2YSBhbHNvIDAuIE5UIGxvYWRlciBkaXNsaWtlcwoJaGF2aW5nIG90aGVyd2lzZS4KCjIwMDAtMDktMjYgIFN0ZXZlIEVsbGNleSA8c2plQGN1cC5ocC5jb20+CgoJKiBzb20uYyAoc29tX2JmZF9kZXJpdmVfbWlzY19zeW1ib2xfaW5mbyk6IE1ha2Ugd2VhayBzeW1ib2xzCglnbG9iYWwgYnkgZGVmYXVsdC4KCjIwMDAtMDktMjEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogRml4IHdlYWsgc3ltIGhhbmRsaW5nIGluCgljdXJyZW50bHkgdW51c2VkIFJFTEFUSVZFX0RZTkFNSUNfUkVMT0NTIGNvZGUuCgkoaHBwYV9kaXNjYXJkX2NvcGllcyk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFNpemUgYGlucHV0X2xpc3QnIGFycmF5IGNvcnJlY3RseS4gIENvcnJlY3QKCWNvbW1lbnRzLiAgRG9uJ3QgY2hlY2sgbm9uLWNvZGUgb3V0cHV0IHNlY3Rpb25zIGZvciBzdHViIGdyb3VwaW5nLgoKMjAwMC0wOS0yMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoYmZkX2dldF91bmlxdWVfc2VjdGlvbl9uYW1lKTogUmV0dXJuIE5VTEwgaWYKCWJmZF9tYWxsb2MgZmFpbHMuCgoyMDAwLTA5LTE5ICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9jcHUzMl9wbHQwX2VudHJ5KTogQ2hhbmdlIHRoZSBQTFQgZW50cnkgMAoJaW5zdHJ1Y3Rpb24gc2VxdWVuY2UgdG8gYWN0dWFsbHkgd29yay4KCShlbGZfbTY4a19maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IENoYW5nZSB0aGUgcGF0Y2gtaW4gb2Zmc2V0CglhY2NvcmRpbmdseS4KCjIwMDAtMDktMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBVc2UKCV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSB0byBhcHBseSB0aGUgcmVsb2NhdGlvbiBhZ2FpbnN0IGEgc2VjdGlvbgoJc3ltYm9sLCB3aGVuIGRvaW5nIHJlbG9jYXRhYmxlIGxpbmtzLgoKMjAwMC0wOS0xOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zdHViX2hhc2hfZW50cnkpOiBSZW5hbWUgaW5wdXRfc2VjdGlvbgoJdG8gaWRfc2VjLgoJKHN0dWJfaGFzaF9uZXdmdW5jKTogSGVyZSB0b28uCgkoaHBwYV9hZGRfc3R1Yik6IEFuZCBoZXJlLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogUmVtb3ZlIHN0dWJfc2VjdGlvbl9jcmVhdGVkLAoJcmVsb2Nfc2VjdGlvbl9jcmVhdGVkLCBmaXJzdF9pbml0X3NlYyBhbmQgZmlyc3RfZmluaV9zZWMuICBBZGQKCXN0dWJfZ3JvdXAuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCB0byBzdWl0LgoJKGhwcGFfZ2V0X3N0dWJfZW50cnkpOiBBZGQgc3VwcG9ydCBmb3IgZ3JvdXBpbmcgc3R1YiBzZWN0aW9ucy4KCShocHBhX2FkZF9zdHViKTogTGlrZXdpc2UuICBSZW1vdmUgc2VjX2NvdW50IHBhcmFtIGFuZCBpbml0L2ZpbmkKCXNlY3Rpb24gY29kZS4gIEluZGV4IHN0dWIgdmFycyBieSBzZWN0aW9uLT5pZC4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBMaWtld2lzZS4gIFJlbW92ZSBkdXBsaWNhdGVkIGZ1bmN0aW9uCglleGl0IHBhdGhzLiAgWmFwIGFsbG9jYXRpb24gb2YgYWJvdmUgcmVtb3ZlZCB2YXJzLiAgUmVmaW5lCglsaW5rLW9uY2UgdGVzdC4KCgkqIGVsZjMyLWhwcGEuaCAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogQWRkIG91dHB1dF9iZmQgcGFyYW0uCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuCgkoaHBwYV9nZXRfc3R1Yl9lbnRyeSk6IFBhc3MgaW4gcG9pbnRlciB0byBlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZQoJcmF0aGVyIHRoYW4gcG9pbnRlciB0byBiZmRfbGlua19pbmZvLgoJKGhwcGFfYWRkX3N0dWIpOiBMaWtld2lzZS4KCShmaW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCgoyMDAwLTA5LTE3ICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoKCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBEb24ndCB0cnkgdG8gYnVpbGQgc3R1YnMgZm9yIGRpc2NhcmRlZAoJbGluay1vbmNlIHNlY3Rpb25zLgoKMjAwMC0wOS0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zaC5jIChFTEZfTUFYUEFHRVNJWkUpOiBEZWZpbmUgdG8gMTI4LCB0byBtYXRjaAoJbGQvZW11bHBhcmFtcy9zaGVsZi5zaC4KCjIwMDAtMDktMTAgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIGVsZjMyLW02OGsuYyAoYmZkX202OGtfZWxmMzJfY3JlYXRlX2VtYmVkZGVkX3JlbG9jcyk6IE5ldyBmdW5jdGlvbi4KCSogYmZkLWluLmggKGJmZF9tNjhrX2VsZjMyX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBBZGQgZGVjbGFyYXRpb24uCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDktMTUgIEtlbm5ldGggQmxvY2sgIDxLZW5uZXRoLkJsb2NrQGNvbXBhcS5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxheF93aXRoX2xpdHVzZSk6IGxkIHBlcmZvcm1zCglMSVRVU0UgcmVsb2NhdGlvbnMgaW5jb3JyZWN0bHkgaWYgLXJlbGF4IGlzIHNwZWNpZmllZCBvbiB0aGUgbGQKCWNvbW1hbmQgbGluZSBhbmQgdGhlIGRpc3BsYWNlbWVudCBmaWVsZCBvZiB0aGUgbG9hZCBvciBzdG9yZQoJaW5zdHJ1Y3Rpb24gaXMgbm9uLXplcm8uIChQYXRjaCBieSBwYXVsLndpbmFsc2tpQGNvbXBhcS5jb20pCgoyMDAwLTA5LTE1ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChocHBhX2FkZF9zdHViKTogRG9udCBzZXQgZmlyc3RfaW5pdF9zZWMgYW5kCglmaXJzdF9maW5pX3NlYyBoZXJlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEluc3RlYWQgY29ycmVjdGx5IGZpbmQgdGhlIGZpcnN0IC5pbml0CglhbmQgLmZpbmkgc2VjdGlvbiBoZXJlLgoKMjAwMC0wOS0xNSAgRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCgkqIGVsZjMyLWhwcGEuYyAoY2xvYmJlcl9taWxsaWNvZGVfc3ltYm9scyk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IENhbGwgaXQuCgoyMDAwLTA5LTE0ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2xpbmtfaGFzaF9lbnRyeSk6IE1ha2UgcGljX2NhbGwKCXBhY2tlZC4gIEFkZCBwbGFiZWwsIHBsdF9hYnMgcGFja2VkIGJvb2xlYW5zLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBJbml0IG5ldyBmaWVsZHMuCgkoUExBQkVMX1BMVF9FTlRSWV9TSVpFKTogRGVmaW5lLgoJKGhwcGFfc3R1Yl9uYW1lKTogVXNlIHNpemVfdCBsZW4gdmFycy4KCShocHBhX2FkZF9zdHViKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9idWlsZF9zdHVicyk6IExpa2V3aXNlLgoJKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBLaWxsIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBBbHdheXMgZ2VuZXJhdGUgYSBwbHQgZW50cnkgZm9yIFBMQUJFTHMKCWlmIGR5bmFtaWMgbGlua2luZy4gIE11bmdlIHRoZSBsb2NhbCBwbHQgb2Zmc2V0cyBpbnRvCglsb2NhbF9nb3RfcmVmY291bnRzLiAgU2V0IGgtPnBsYWJlbCBmb3IgYWxsIGdsb2JhbCBQTEFCRUxzLiAgVXNlCglzaXplX3QgbGVuIHZhcnMuICBBZGQgYXNzZXJ0IGZvciBwbGFiZWwgYWRkZW5kLgoJKGVsZjMyX2hwcGFfZ2Nfc3dlZXBfaG9vayk6IFN3ZWVwIGxvY2FsIHBsdCBlbnRyaWVzIHRvby4KCShlbGYzMl9ocHBhX2hpZGVfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgdGhyb3cgYXdheSBwbHQgZW50cmllcwoJd2l0aCBoLT5wbGFiZWwgc2V0LiAgRG9uJ3QgbWFrZSBwbHQgZW50cmllcyB0byBoYXZlIGR5bmFtaWMgc3ltcwoJd2hlbiB0aGV5IGhhdmUgYmVlbiBmb3JjZWQgbG9jYWwuICBJZiBwbHQgZW50cnkgaXMgdXNlZCBieSBhCglwbGFiZWwsIG1ha2UgaXQgUExBQkVMX1BMVF9FTlRSWV9TSVpFLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogU2V0IHBsdF9hYnMgZm9yIGluaXQgZm5zLgoJU2V0IHVwIC5wbHQgb2Zmc2V0cyBmb3IgbG9jYWwgc3ltcy4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBJbml0aWFsaXNlIHBsdCBlbnRyaWVzIGZvciBsb2NhbAoJc3ltcy4gIExlYXZlIHdlYWsgdW5kZWZpbmVkIHBsYWJlbHMgemVyby4gIE1ha2UgZ2xvYmFsIHBsYWJlbAoJcmVsb2NzIGFnYWluc3QgZnVuY3Rpb24gc3ltYm9sLCBhbmQgbGVhdmUgdGhlIGFkZGVuZCB6ZXJvLgoJVXNlICpBQlMqIERJUjMyIHJlbG9jcyBpbnN0ZWFkIG9mIFNFR1JFTDMyIGZvciBkeW5hbWljIGdvdCByZWxvY3MuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBTZXQgdXAgSVBMVCByZWxvY3MgZm9yCglub24tZHluYW1pYyBzeW1zLiAgSW5pdCBleHRyYSBwbHQgZm9yIHBsYWJlbHMuICBVc2UgKkFCUyogRElSMzIKCXJlbG9jcyBpbnN0ZWFkIG9mIFNFR1JFTDMyIGZvciBkeW5hbWljIGdvdCByZWxvY3MuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFJlc2VydmUgb25lIG1vcmUgLmdvdCBlbnRyeS4KCShlbGZfYmFja2VuZF9nb3RfaGVhZGVyX3NpemUpOiBBZGp1c3QuCgkoZWxmMzJfaHBwYV9zZXRfZ3ApOiBDYWxjdWxhdGUgYW4gImlkZWFsIiBMVFAuCgoJKiBlbGYzMi1ocHBhLmMgKExPTkdfQlJBTkNIX1ZJQV9QTFQpOiBEZWZpbmUuCgkoaHBwYV90eXBlX29mX3N0dWIpOiBVc2UgaXQgaW5zdGVhZCBvZiAjaWYgMAoJKGhwcGFfZGlzY2FyZF9jb3BpZXMpOiBVc2UgaXQgaGVyZSB0b28uCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbmQgaGVyZS4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBSZW1vdmUgYG9mZnNldCcgZmllbGQuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogQW5kIGhlcmUuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IEFuZCBoZXJlLiAgSW5zdGVhZCBrZWVwIHRyYWNrIG9mIHN0dWIKCW9mZnNldCB1c2luZyBfcmF3X3NpemUuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9idWlsZF9zdHVicyk6IExpa2V3aXNlLgoJKGhwcGFfc2l6ZV9vbmVfc3R1Yik6IExpa2V3aXNlLiAgUmVzaXplIHJlbG9jIHNlY3Rpb24gdG9vLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2FkZF9zdHViKTogQ29ycmVjdCBmaXJzdF9pbml0X3NlYyBhbmQKCWZpcnN0X2Zpbmlfc2VjIGhhbmRsaW5nLiAgRG9uJ3Qgc2VhcmNoIGZvciByZWxvYyBzZWN0aW9uIG9yIHNldAoJaHBsaW5rLT5yZWxvY19zZWN0aW9uX2NyZWF0ZWQgaGVyZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBJbnN0ZWFkIHNlYXJjaCBmb3IgcmVsb2Mgc2VjdGlvbnMsIGFuZAoJc2V0IHJlbG9jX3NlY3Rpb25fY3JlYXRlZCBoZXJlLgoJKGhwcGFfaGFuZGxlX1BJQ19jYWxscyk6IFNldCBFTEZfTElOS19IQVNIX05FRURTX1BMVC4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IE1ha2UgYSAucGx0IGVudHJ5IGZvciBEVF9JTklUCglhbmQgRFRfRklOSS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogU2V0IERUX0lOSVQgYW5kIERUX0ZJTkkuCgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBSZXBsYWNlIGBlbGZfaGFzaF90YWJsZSAoaW5mbyknCgl3aXRoIGBocGxpbmstPnJvb3QuJy4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfZ2Nfc3dlZXBfaG9vayk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX3NldF9ncCk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKCUZyb20gIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgkqIGVsZjMyLWhwcGEuYyAoaHBwYV90eXBlX29mX3N0dWIpOiBHZW5lcmF0ZSBpbXBvcnQgc3R1YnMgZm9yCglkZWZpbmVkIHdlYWsgc3ltYm9scyBpbiBzaGFyZWQgbGlua3MuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IENhbGxzIHRvIGRlZmluZWQgd2VhayBzeW1ib2xzIGluIHNoYXJlZAoJb2JqZWN0cyBtdXN0IGdvIHZpYSBpbXBvcnQgc3R1YnMsIGFzIHRoZSB0YXJnZXQgbWlnaHQgbm90IGJlIGtub3duCglhdCBsaW5rIHRpbWUuCgoyMDAwLTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9ob3d0b190YWJsZSk6IE1vdmVkIFJfU0hfR09UMzIsIFJfU0hfUExUMzIsCglSX1NIX0NPUFksIFJfU0hfR0xPQl9EQVQsIFJfU0hfSk1QX1NMT1QsIFJfU0hfUkVMQVRJVkUsCglSX1NIX0dPVE9GRiwgUl9TSF9HT1RQQykgdG8gdGhlIHJhbmdlIGZyb20gMTYwIHRvIDE2Ny4gIFJlcGxhY2VkCgl0aGUgb3JpZ2luYWwgZW50cmllcyB3aXRoIEVNUFRZX0hPV1RPcywgYW5kIGFkZGVkIG5ldyBvbmVzIHRvIGZpbGwKCWluIHRoZSBnYXAuCgkoc2hfZWxmX2luZm9fdG9faG93dG8pOiBNYWtlIHN1cmUgdGhlIG5ldyBnYXAgaXNuJ3QgdXNlZC4KCShzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wOS0xMyAgQW5kZXJzIE5vcmxhbmRlciAgPGFub3JsYW5kQGFjYy51bXUuc2U+CgoJKiBjcHUtbWlwcy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIG1pcHM6NEsKCSogYmZkLWluMi5oIChiZmRfbWFjaF9taXBzNEspOiBOZXcgZGVmaW5lLgoJKiBhcmNodXJlcy5jOiBBZGQgYmZkX21hY2hfbWlwczRLIHRvIGNvbW1lbnQuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogUmV0dXJuCglFX01JUFNfQVJDSF8yIGZvciBiZmRfbWFjaF9taXBzNEsuCgoyMDAwLTA5LTEzICBNYXJjbyBGcmFuemVuIDxtYXJjb2ZAdGh5cm9uLmNvbT4KCgkqIHNvbS5jIChzb21fd3JpdGVfc3ltYm9sX3N0cmluZ3MpOiBEbyBub3QgdXNlZCBmaXhlZCBidWZmZXJzLAoJdXNlIHNpemVfdCBhcyBhIGNvdW50ZXIuCgkoc29tX3dyaXRlX3NwYWNlX3N0cmluZ3MpOiBTaW1pbGFybHkuCgoyMDAwLTA5LTEyICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX3JlbG9jYXRlX3BjMjYpOiBOZXcgZnVuY3Rpb24KCWFuZCBwcm90b3R5cGUuCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9zZWN0aW9uKTogSW52b2tlIG5ldyBmdW5jdGlvbiBmcm9tIGhlcmUuCgoyMDAwLTA5LTExICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IE1ha2UgZGVidWdfc2VjX25hbWVzCglzdGF0aWMuCgoyMDAwLTA5LTEwICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBjb2ZmLW02OGsuYyAoYmZkX202OGtfY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogRW1pdCA4IE5VTHMgZm9yCgl0YXJnZXQgc2VjdGlvbiBuYW1lIGluc3RlYWQgb2YgZHVtcGluZyBjb3JlIHdoZW4gdGhlIHRhcmdldCBzeW1ib2wgaXMKCXVuZGVmaW5lZC4KCjIwMDAtMDktMDkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcmlzY2l4LmM6IFJlbW92ZSBERUZVTi4KCjIwMDAtMDktMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBEbyBub3QKCWluaXRpYWxpc2UgZmxhZ3MgaW4gb3V0cHV0IGJmZCBpZiB0aGUgaW5wdXQgYmZkIGlzIHRoZSBkZWZhdWx0CglhcmNoaXRlY3R1cmUgd2l0aCB0aGUgZGVmYXVsdCBmbGFncy4KCjIwMDAtMDktMDggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYXJjaGl2ZS5jOiBGaXggZm9ybWF0dGluZy4KCSogY29mZi1hcm0uYzogTGlrZXdpc2UuCgkqIGRvYy9jaGV3LmM6IExpa2V3aXNlLgoKMjAwMC0wOS0wOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoYmZkX2dldF91bmlxdWVfc2VjdGlvbl9uYW1lKTogUHV0IGEgZG90IGJlZm9yZSB0aGUKCW51bWVyaWMgc3VmZml4LgoKMjAwMC0wOS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBkb2MvY2hldy5jOiBSZW1vdmUgYWxsIHVzZXMgb2YgREVGVU4gYW5kIERFRlVOX1ZPSUQuCgkqIGVsZi5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDktMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnLmJmZCAoc2gtKi1saW51eCopOiBBZGRlZC4KCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfc2hsaW5fdmVjLCBiZmRfZWxmMzJfc2hibGluX3ZlYyk6IE5ldy4KCSogdGFyZ2V0cy5jOiBEZWNsYXJlIHRoZW0uCgkqIGVsZjMyLXNoLWxpbi5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuYW06IENvbXBpbGUgaXQuCgkqIGVsZjMyLXNoLmM6IERvbid0IG92ZXJyaWRlIGRlZmluZXMgZnJvbSBlbGYzMi1zaC1saW4uYy4KCSogY29uZmlndXJlLCBNYWtlZmlsZS5pbjogUmVidWlsdC4KCjIwMDAtMDktMDYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHhjb2ZmbGluay5jICh4Y29mZl9saW5rX2lucHV0X2JmZCk6IEluY2x1ZGUgdGhlIC50b2Nic3MKCXBzZWR1by1zZWN0aW9uIHdoZW4gZGV0ZXJtaW5pbmcgd2hlcmUgdGhlIFRPQyBlbmRzLgoKCSogY29mZi1yczYwMDAuYyAoX2JmZF94Y29mZl9zd2FwX2F1eF9vdXQpOiBVc2UgYmZkX2hfcHV0XzE2IHRvCglvdXRwdXQgeF90dm5keCBhcyBpdCBpcyBvbmx5IHR3byBieXRlcyB3aWRlLgoKCSogY29mZi1yczYwMDAuYyAoeGNvZmZfaG93dG9fdGFibGUpOiBBIG1vZGlmaWFibGUgYnJhbmNoLWFic29sdXRlCglyZWxvYyBpcyAyNiBvciAzMiBiaXRzIHdpZGUuCgoJKiBjb2ZmLXJzNjAwMC5jIChfYmZkX3hjb2ZmX3J0eXBlMmhvd3RvKTogVGhlIGJpdHNpemUgaXMgaXJyZWxldmFudAoJZm9yIHJlbG9jcyB0aGF0IGRvbid0IGNoYW5nZSBhbnl0aGluZy4gIEFsc28gbG9vayBhdCB0aGUgZnVsbAoJNiBiaXRzIG9mIGJpdHNpemUuCgoyMDAwLTA5LTA2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnLmJmZCAoYXJtKi0qLXVjbGludXgqKTogTmV3IHRhcmdldC4KCjIwMDAtMDktMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlOiBSZWJ1aWx0IHdpdGggbmV3IGxpYnRvb2wubTQuCgoyMDAwLTA5LTA2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChiZmRfZ2V0X3VuaXF1ZV9zZWN0aW9uX25hbWUpOiBBdm9pZCBjKysgcmVzZXJ2ZWQKCXdvcmQgZm9yIHZhcmlhYmxlIG5hbWUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDktMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoJKiBkb2MvYmZkaW50LnRleGk6IFJlbW92ZSBDVlMgZGF0ZSBzdHJpbmcgLSBpdCBmb2lscyBjb21wYXJlcyB3aXRoCglsb2NhbCB2ZXJzaW9ucy4KCjIwMDAtMDktMDUgIFN0ZXZlbiBKb2huc29uICA8c2Jqb2huc29uQG96ZW1haWwuY29tLmF1PgoKCSogY3B1LXBvd2VycGMuYyAgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGRlZCBNUEM4NjAgRmFtaWx5IGVudHJ5LgoKMjAwMC0wOS0wNSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCglTaGFyZWQgbGlicmFyeSBhbmQgUElDIHN1cHBvcnQuCgkqIGVsZjMyLWhwcGEuYyAoUExUX0VOVFJZX1NJWkUpOiBOZXcuCgkoR09UX0VOVFJZX1NJWkUpOiBOZXcuCgkoRUxGX0RZTkFNSUNfSU5URVJQUkVURVIpOiBOZXcuCgkoU1RVQl9TVUZGSVgpOiBEZWZpbmUuCgkoTE9OR19CUkFOQ0hfUElDX0lOX1NITElCKTogRGVmaW5lLgoJKFJFTEFUSVZFX0RZTkFNSUNfUkVMT0NTKTogRGVmaW5lLgoJKGVudW0gZWxmMzJfaHBwYV9zdHViX3R5cGUpOiBOZXcuCgkoc3RydWN0IGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2VudHJ5KTogUmVuYW1lIG9mZnNldCB0bwoJc3R1Yl9vZmZzZXQuICBBZGQgYSBudW1iZXIgb2YgbmV3IGZpZWxkcy4KCShzdHJ1Y3QgZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBOZXcuCgkoc3RydWN0IGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogQWRkIG51bWVyb3VzIGZpZWxkcy4gIFJlbW92ZQoJZ2xvYmFsX3ZhbHVlLgoJKGVsZjMyX2hwcGFfaGFzaF90YWJsZSk6IFJlbmFtZSB0byBocHBhX2xpbmtfaGFzaF90YWJsZS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF9sb29rdXApOiBSZW5hbWUgdG8gaHBwYV9zdHViX2hhc2hfbG9va3VwLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX25ld2Z1bmMpOiBSZW5hbWUgdG8gc3R1Yl9oYXNoX25ld2Z1bmMuICBJbml0CgluZXcgZmllbGRzLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogVXNlIGFib3ZlIGZ1bmN0aW9uLiBJbml0IG5ldwoJZmllbGRzLgoJKGVsZjMyX2hwcGFfc3R1Yl9uYW1lKTogUmVuYW1lIHRvIGhwcGFfc3R1Yl9uYW1lLiAgUGFzcyBpbiByZWxvYwoJaW5zdGVhZCBvZiBhZGRlbmQsIGFuZCByZW1vdmUgc3ltX25hbWUgZnJvbSBhcmdzLiAgRG9uJ3QgdXNlCglzeW1ib2wgbmFtZSBmb3IgbG9jYWwgc3ltcywgaW5zdGVhZCB1c2Ugc3ltIGluZGV4LgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogUmVuYW1lIHRvIGhwcGFfdHlwZV9vZl9zdHViLCBhbmQgcmV0dXJuCglzdHViIHR5cGUgcmF0aGVyIHRoYW4gc2l6ZS4gIFBhc3MgaW4gaGFzaCBhbmQgaGFuZGxlIGltcG9ydCBzdHViCgljYXNlLiAgQWxzbyBwYXNzIGluIHJlbG9jIGluc3RlYWQgb2Ygb2Zmc2V0IHNvIHdlIGNhbiBjYWxjdWxhdGUKCVBDUkVMMjJGIGFuZCBQQ1JFTDEyRiBicmFuY2hlcyBwcm9wZXJseS4KCShlbGYzMl9ocHBhX2J1aWxkX29uZV9zdHViKTogUmVuYW1lIHRvIGhwcGFfYnVpbGRfb25lX3N0dWIuICBCdWlsZAoJaW1wb3J0IGFuZCBleHBvcnQgc3R1YnMgdG9vLgoJKGVsZjMyX2hwcGFfc2l6ZV9vbmVfc3R1Yik6IFJlbmFtZSB0byBocHBhX3NpemVfb25lX3N0dWIuICBIYW5kbGUKCWltcG9ydCBhbmQgZXhwb3J0IHN0dWIgc2l6aW5nLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGhwcGFfZGlzY2FyZF9jb3BpZXMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERlZmluZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBTdGFzaCBwYXJhbXMgaW4gbGluayBoYXNoIHRhYmxlLCBhbmQgbW92ZQoJc29tZSBsb2NhbCB2YXJzIGludG8gdGhlIGxpbmsgaGFzaCB0YWJsZSB0b28uICBGb3Igc2hhcmVkIGxpbmtzLAoJdHJ1bmRsZSBvdmVyIGZ1bmN0aW9uIHN5bXMsIGdlbmVyYXRpbmcgZXhwb3J0IHN0dWJzLiAgSGFuZGxlCglQQ1JFTDIyRiBicmFuY2hlcy4gIEJyZWFrIG91dCBzdHViIGNyZWF0aW9uIGNvZGUgZnJvbSBoZXJlLi4KCShocHBhX2FkZF9zdHViKTogLi4gdG8gaGVyZS4gIE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX2ZpbmFsX2xpbmspOiBSZW5hbWUgdG8gZWxmMzJfaHBwYV9zZXRfZ3AsIGFuZCBkb24ndAoJY2FsbCB0aGUgYmZkIGxpbmtlci4gIFVzZSBlbGZfZ3AgdG8gcmVjb3JkIGdsb2JhbCBwb2ludGVyLgoJQ2FsY3VsYXRlIGEgdmFsdWUgZnJvbSBzZWN0aW9ucyBpZiAkZ2xvYmFsJCBpcyBtaXNzaW5nLgoJKGJmZF9lbGYzMl9iZmRfZmluYWxfbGluayk6IERlZmluZSBhcyBfYmZkX2VsZjMyX2djX2NvbW1vbl9maW5hbF9saW5rLgoJKGVsZjMyX2hwcGFfZ2NfbWFya19ob29rKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2djX21hcmtfaG9vayk6IERlZmluZS4KCShlbGYzMl9ocHBhX2djX3N3ZWVwX2hvb2spOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ2Nfc3dlZXBfaG9vayk6IERlZmluZS4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogUmVuYW1lIHRvIGZpbmFsX2xpbmtfcmVsb2NhdGUuCglBZGQgcmVsIHRvIGFyZ3MsIGFuZCByZW1vdmUgaG93dG8sIGlucHV0X2JmZCwgb2Zmc2V0LCBhZGRlbmQsCglzeW1fbmFtZSBhcyB3ZSBjYW4gcmVjYWxjdWxhdGUgdGhlc2UgbG9jYWxseS4gIEhhbmRsZSBjYWxscyB0bwoJZHluYW1pYyBvYmplY3RzLCBleHRyYSBQSUMgcmVsb2NzLCBQQ1JFTDIyRiBicmFuY2hlcy4gIENoYW5nZQoJaGFuZGxpbmcgb2YgdW5kZWZpbmVkIHdlYWsgc3ltcy4gIENoZWNrIHRoYXQgc3R1YnMgYXJlIGluIHJhbmdlLgoJT25seSBsb29rIGZvciBpbXBvcnQgc3R1YnMgb24gUENSRUwxN0YgYW5kIFBDUkVMMjJGIHJlbG9jcy4gIEFkZAoJbWVzc2FnZSBvbiBoaXR0aW5nIGEgRFBSRUwyMUwgcmVsb2MgdGhhdCBuZWVkcyBmaXhpbmcuICBTdWJ0cmFjdAoJb2ZmIFBDIGZvciBQQ1JFTDE0Ri4gIEJyZWFrIG91dCBjb2RlIHRoYXQgZG9lcyBhIHN0dWIgbG9va3VwIGZyb20KCWhlcmUuLgoJKGhwcGFfZ2V0X3N0dWJfZW50cnkpOiAuLnRvIGhlcmUuICBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9pbnNuKTogTWVyZ2UgaW50byBmaW5hbF9saW5rX3JlbG9jYXRlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSBnb3QgYW5kIHBsdCByZWxvY3MsIGR5bmFtaWMKCXJlbG9jcywgZXRjLiBldGMuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IERlZmluZS4KCShlbGZfYmFja2VuZF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKSBEZWZpbmUuCgkoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfYnVpbGRfc3R1YnMpOiBDYWxsIGl0LiAgUGFzcyBsaW5rX2luZm8gdG8KCWhwcGFfYnVpbGRfb25lX3N0dWIuCgkoZWxmMzJfaHBwYV9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbgoJdG8gY3JlYXRlIC5wbHQgYW5kIC5nb3QgdGhlbiBzZXQgLnBsdCBmbGFncyBjb3JyZWN0bHkuCgkoZWxmX2JhY2tlbmRfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBEZWZpbmUuCgkoZWxmMzJfaHBwYV9vYmplY3RfcCk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9vYmplY3RfcCk6IERlZmluZS4KCShlbGYzMl9ocHBhX2VsZl9nZXRfc3ltYm9sX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ2V0X3N5bWJvbF90eXBlKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2Nhbl9nY19zZWN0aW9ucyk6IERlZmluZS4KCShlbGZfYmFja2VuZF93YW50X2dvdF9wbHQpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfcGx0X2FsaWdubWVudCk6IFNldCB0byAyLgoJKGVsZl9iYWNrZW5kX3BsdF9yZWFkb25seSk6IERlZmluZS4KCShlbGZfYmFja2VuZF93YW50X3BsdF9zeW0pOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplKTogUmVzZXJ2ZSBvbmUgZW50cnkuCgoJKiBlbGYzMi1ocHBhLmggKGVsZjMyX2hwcGFfYnVpbGRfc3R1YnMpOiBEb24ndCBwYXNzIHN0dWIgYmZkLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFBhc3MgaW4gbXVsdGlfc3Vic3BhY2UuCgkoZWxmMzJfaHBwYV9zZXRfZ3ApOiBEZWNsYXJlLgoKCSogc2VjdGlvbi5jIChTRUNfSEFTX0dPVF9SRUYpOiBEZWZpbmUgbmV3IGZsYWcgZm9yIGFzZWN0aW9uLgoJKGJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBSX1BBUklTQ19QQ1JFTDEyRi4KCShlbGY2NF9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFJlbW92ZSB0aGUgRklYTUUgYXQgYmZkX3phbGxvYwoJY29tbWVudC4KCglGcm9tICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfY2hlY2tfcmVsb2NzKTogRml4IGEgd2FybmluZy4KCShlbGY2NF9ocHBhX21hcmtfZXhwb3J0ZWRfZnVuY3Rpb25zKTogU2V0IGR5bl9oLT5zdF9zaG5keC4KCShlbGY2NF9ocHBhX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rKTogVGVzdCBkeW5faC0+c3Rfc2huZHggaGFzCgliZWVuIHVwZGF0ZWQgaW4gZmluaXNoX2R5bmFtaWNfc3ltYm9sIGJlZm9yZSBtb2RpZnlpbmcgZnVuY3Rpb24KCXN5bWJvbC4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2hvd3RvX3RhYmxlKTogUmVzdHJ1Y3R1cmUgaW50byBncm91cHMgb2YKCWVpZ2h0IGVudHJpZXMuICBSZXBsYWNlIE5VTEwgd2l0aCBiZmRfZWxmX2dlbmVyaWNfcmVsb2MuICBBZGQKCVJfUEFSSVNDX0dOVV9WVEVOVFJZLCBSX1BBUklTQ19HTlVfVlRJTkhFUklUIGFuZCBSX1BBUklTQ19QQ1JFTDEyRi4KCShfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogSGFuZGxlIFJfUEFSSVNDX0dOVV9WVCouICBBZGQgc29tZQoJY29tbWVudHMuICBIYW5kbGUgZm9ybWF0ID09IDEyIGZvciBSX0hQUEFfUENSRUxfQ0FMTC4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlIFJfUEFSSVNDX1BDUkVMMTJGLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBMaWtld2lzZS4gIFJlZm9ybWF0IHNvbWUgY29tbWVudHMuCgkoZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEV4cG9zZSBpdCBmb3IgQVJDSF9TSVpFID09IDMyLgoKCUZyb20gRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IEFjY2VwdCB0aGUgU3lzVi9FTEYKCXN0eWxlIG9mIGxvY2FsIGxhYmVscyBhcyB3ZWxsLgoKMjAwMC0wOS0wMyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IHRyeSB0byByZWxvY2F0ZQoJcmVmZXJlbmNlcyB0byB1bmRlZmluZWQgc3ltYm9scyBpbiBkZWJ1Z2dpbmcgc2VjdGlvbnMuCgoyMDAwLTA5LTAyICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWxvYy5jIChCRkRfUkVMT0NfU0hfQ09QWSwgQkZEX1JFTE9DX1NIX0dMT0JfREFULAoJQkZEX1JFTE9DX1NIX0pNUF9TTE9ULCBCRkRfUkVMT0NfU0hfUkVMQVRJVkUsCglCRkRfUkVMT0NfU0hfR09UUEMpOiBNb3ZlIHRoZW0gZnJvbSB0aGUgTUlQUyBzZWN0aW9uIHRvIHRoZSBTSAoJc2VjdGlvbi4KCjIwMDAtMDktMDIgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGJmZF9lbGYzMl9iZmRfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IERlZmluZSBtYWNyby4KCShlbGYzMl9pODYwX2lzX2xvY2FsX2xhYmVsX25hbWUpOiBOZXcgZnVuY3Rpb24gYW5kIHByb3RvdHlwZS4KCjIwMDAtMDktMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEluY3JlYXNlIHZlcnNpb24gbnVtYmVyIHRvIDIuMTAuOTEuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0wMiAgRGFuaWVsIEJlcmxpbiA8ZGJlcmxpbkByZWRoYXQuY29tPgoKCSogZWxmLmMgKF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3NoZHIpOiBBZGQKCS5nbnUubGlua29iY2Uud2kuIHRvIHRoZSBsaXN0IG9mIGRlYnVnIHNlY3Rpb24gbmFtZXMuCgoyMDAwLTA5LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZHdhcmYyLmMgKGZpbmRfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbjogTG9jYXRlIGEgc2VjdGlvbgoJY29udGFpbmluZyBkd2FyZjIgZGVidWcgaW5mb3JtYXRpb24uCgkoYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IEZpbmQgYWxsIHNlY3Rpb25zIGNvbnRhaW5pbmcKCWRlYnVnIGluZm9ybWF0aW9uIGFuZCBpbmNsdWRlIHRoZW0gaW4gdGhlIHN0YXNoLgoKMjAwMC0wOS0wMSAgTmlpYmUgWXV0YWthICA8Z25paWJlQG0xN24ub3JnPiwgS2F6IEtvamltYSAgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+LCBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKFJfU0hfR09UMzIsIFJfU0hfUExUMzIsIFJfU0hfQ09QWSwgUl9TSF9HTE9CX0RBVCwKCVJfU0hfSk1QX1NMT1QsIFJfU0hfUkVMQVRJVkUsIFJfU0hfR09UT0ZGLCBSX1NIX0dPVFBDKTogTmV3LgoJKHNoX3JlbG9jX21hcCk6IEFkZCBuZXcgcmVsb2NzLgoJKHNoX2VsZl9jaGVja19yZWxvY3MsIHNoX2VsZl9saW5rX2hhc2hfbmV3ZnVuYywKCXNoX2VsZl9saW5rX2hhc2hfdGFibGVfY3JlYXRlLCBzaF9lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLAoJc2hfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucywgc2hfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCwKCXNoX2VsZl9maW5pc2hlX2R5bmFtaWNfc2VjdGlvbnMsIHNoX2VsZl9kaXNjYXJkX2NvcGllcyk6IE5ldwoJZnVuY3Rpb25zLgoJKEVMRl9EWU5BTUlDX0lOVEVSUFJFVEVSLCBQTFRfRU5UUllfU0laRSk6IERlZmluZS4KCShlbGZfc2hfcGx0MF9lbnRyeV9iZSwgZWxmX3NoX3BsdDBfZW50cnlfbGUsCgllbGZfc2hfcGx0X2VudHJ5X2JlLCBlbGZfc2hfcGx0X2VudHJ5X2xlLAoJZWxmX3NoX3BpY19wbHRfZW50cnlfYmUsIGVsZl9zaF9waWNfcGx0X2VudHJ5X2xlKToKCU5ldyBhcnJheSBjb25zdGFudHMuCgkoZWxmX3NoX3BsdDBfZW50cnksIGVsZl9zaF9wbHRfZW50cnksIGVsZl9zaF9waWNfcGx0X2VudHJ5KToKCU5ldyB2YXJpYWJsZXMuCgkoZWxmX3NoX3NpemVvZl9wbHQsIGVsZl9zaF9wbHRfcGx0MF9vZmZzZXQsCgllbGZfc2hfcGx0MF9saW5rZXJfb2Zmc2V0LCBlbGZfc2hfcGx0MF9nb3RpZF9vZmZzZXQsCgllbGZfc2hfcGx0X3RlbXBfb2Zmc2V0LCBlbGZfc2hfcGx0X3N5bWJvbF9vZmZzZXQsCgllbGZfc2hfcGx0X3JlbG9jX29mZnNldCk6IERlZmluZS4KCShlbGZfc2hfcGNyZWxfcmVsb2NzX2NvcGllZCwgZWxmX3NoX2xpbmtfaGFzaF9lbnRyeSwKCWVsZl9zaF9saW5rX2hhc2hfdGFibGUpOiBOZXcgc3RydWN0cy4KCShzaF9lbGZfbGlua19oYXNoX3RyYXZlcnNlLCBzaF9lbGZfaGFzaF90YWJsZSk6IE5ldyBtYWNyb3MuCgkoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24sIHNoX2VsZl9jaGVja19yZWxvY3MpOiBIYW5kbGUgbmV3CglyZWxvY2F0aW9uIHR5cGVzLgoJKGVsZl9iYWNrZW5kX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zLAoJYmZkX2VsZjMyX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlLAoJZWxmX2JhY2tlbmRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLAoJZWxmX2JhY2tlbmRfc2l6ZV9keW5hbWljX3NlY3Rpb25zLAoJZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc3ltYm9sLAoJZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMsIGVsZl9iYWNrZW5kX3dhbnRfZ290X3BsdCwKCWVsZl9iYWNrZW5kX3BsdF9yZWFkb25seSwgZWxmX2JhY2tlbmRfd2FudF9wbHRfc3ltLAoJZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplLCBlbGZfYmFja2VuZF9wbHRfaGVhZGVyX3NpemUpOgoJRGVmaW5lLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfU0hfQ09QWSwgQkZEX1JFTE9DX1NIX0dMT0JfREFULAoJQkZEX1JFTE9DX1NIX0pNUF9TTE9ULCBCRkRfUkVMT0NfU0hfUkVMQVRJVkUsIEJGRF9SRUxPQ19TSF9HT1RQQyk6CglOZXcgcmVsb2NzLgoJKiBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWJ1aWx0LgoKMjAwMC0wOS0wMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogUmV2ZXJ0IDIwMDAtMDgtMjcKCWNoYW5nZS4KCjIwMDAtMDgtMzEgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9tZXJnZV9wcml2YXRlX2RhdGEpOiBJZiBpYmZkJ3MgZWxmIGhlYWRlciBmbGFncwoJbm90IGluaXRpYWxpemVkLCBzZXQgdGhlbSB0byBpbmRpY2F0ZSB0aGUgU0gxIGluc3RydWN0aW9uIHNldC4KCjIwMDAtMDgtMzEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYWNpbmNsdWRlLm00OiBJbmNsdWRlIGxpYnRvb2wgYW5kIGdldHRleHQgbWFjcm9zIGZyb20gdGhlCgl0b3AgbGV2ZWwuCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDgtMjkgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckBzZWFkb2cuY3lnbnVzLmNvbT4KCgkqIGVsZi5jOiBFbGltaW5hdGUgcmVmZXJlbmNlcyB0byBfX3NwYXJjdjkgbWFjcm87IHJlcGxhY2Ugd2l0aAoJYXV0b2NvbmYgdmFyaWFibGVzIEhBVkVfUFNJTkZPMzJfVCBldGMuCgkqIGNvbmZpZ3VyZS5pbjogQXV0by1jb25maWd1cmUgSEFWRV9QU0lORk9fMzJfVCwgSEFWRV9QUlBTSU5GTzMyX1QsCglIQVZFX1BTVEFUVVMzMl9ULCBIQVZFX1BSU1RBVFVTMzJfVCwgSEFWRV9QUlNUQVRVUzMyX1RfUFJfV0hPLgoJKiBjb25maWcuaW46IERpdHRvLgoJKiBhY2luY2x1ZGUubTQgKEJGRF9IQVZFX1NZU19QUk9DRlNfVFlQRSkgZGVmaW5lIF9TWVNDQUxMMzIgc28gaXQgY2FuCglkZXRlY3QgdGhlIGFib3ZlIHR5cGVkZWZzLiAgKEJGRF9IQVZFX1NZU19QUk9DRlNfVFlQRV9NRU1CRVIpOiBEaXR0by4KCSogYWNsb2NhbC5tNDogRGl0dG8uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDgtMjcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IEtlZXAgaW5mbyBvbiByZWxvY3MgY29waWVkCglmb3IgYW55IHNoYXJlZCBsaW5rLCBub3QganVzdCBzaGFyZWQgLUJzeW1ib2xpYy4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsIGVsZl9pMzg2X2Rpc2NhcmRfY29waWVzIG9uCglhbnkgc2hhcmVkIGxpbmssIGFuZCBwYXNzIGxpbmsgaW5mbyB0byBpdC4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVcGRhdGUgY29tbWVudC4KCShlbGZfaTM4Nl9kaXNjYXJkX2NvcGllcyk6IE1vZGlmeSB0byBkaXNjYXJkIHJlbG9jcyBmb3Igc3ltYm9scwoJdGhhdCBoYXZlIGJlZW4gZm9yY2VkIGxvY2FsLgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IGNvcHkgcmVsb2NzIGZvciBzeW1ib2xzCgl0aGF0IGhhdmUgYmVlbiBmb3JjZWQgbG9jYWwuCgoyMDAwLTA4LTI0ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PiAmIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFsbG93IGNvbW1vbgoJc3ltYm9scyB0byBoYXZlIGFuIGFsaWdubWVudCBvZiAxIGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBhbmQKCW5vdCBvdmVycmlkZGVuIGJ5IG90aGVyIGRlZmluaXRpb25zLgoKMjAwMC0wOC0yMiAgRG91ZyBLd2FuIDxka3dhbkB0cmFuc21ldGEuY29tPgoKCSogY29mZi13NjUuYyAoQ1JFQVRFX0xJVFRMRV9DT0ZGX1RBUkdFVCk6IEZpeCB0eXBvLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9mbGFncyk6IEFkZCBkZXRlY3Rpb24gb2YgdzY1IGFyY2hpdGVjdHVyZS4KCjIwMDAtMDgtMjIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi1iZmQuaCAoZWxmX2xpbmtfaGFzaF90YWJsZSk6IEFkZCBydW5wYXRoLgoKCSogYmZkLWluLmggKGJmZF9lbGZfZ2V0X3J1bnBhdGhfbGlzdCk6IE5ldyBwcm90b3R5cGUuCgkqIGJmZC1pbjIuaDogUmVidWlsdC4KCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdCk6IEluaXRpYWxpemUgdGhlCgkicnVucGF0aCIgZmllbGQgdG8gTlVMTC4KCShiZmRfZWxmX2dldF9ydW5wYXRoX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFJlY29yZCBEVF9SUEFUSCBhbmQKCURUX1JVTlBBVEggZW50cmllcy4KCjIwMDAtMDgtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pIFtSX1NIX0lORDEyVywKCVJfU0hfRElSOFdQTiwgUl9TSF9ESVI4V1BaLCBSX1NIX0RJUjhXUExdOiBIYW5kbGUgdGhlbQoJZXhwbGljaXRseS4gIEltcHJvdmUgdmFsaWRhdGlvbiBvZiByX3R5cGUuCgoyMDAwLTA4LTIxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFplcm8gb3V0IHRoZQoJZHluYW1pYyBhbGxvY2F0ZWQgY29udGVudCBzcGFjZS4gIEFkZCBhIGNvbW1lbnQgdG8gcmVtaW5kIHVzIHRoYXQKCW9uZSBkYXkgdGhpcyBvdWdodCB0byBiZSBmaXhlZC4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjEgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGVsZjMyX2k4NjBfcmVsb2NhdGVfcGMxNik6IEp1c3Qgd3JpdGUgdGhlIGltbWVkaWF0ZQoJZmllbGQgd2l0aCB0aGUgbmV3bHkgcmVsb2NhdGVkIHZhbHVlIGluc3RlYWQgb2YgYWRkaW5nIGl0IHRvIHRoZQoJZXhpc3RpbmcgaW1tZWRpYXRlIGZpZWxkLgoJKGVsZjMyX2k4NjBfcmVsb2NhdGVfc3BsaXRuKTogTGlrZXdpc2UuCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9oaWdoYWRqKTogTGlrZXdpc2UuCgoyMDAwLTA4LTE2ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX3JlbG9jYXRlX3BjMTYpOiBJbXBsZW1lbnRlZCBmdW5jdGlvbiAoaXQKCXdhcyBwcmV2aW91c2x5IGp1c3QgYSBzdHViKS4KCjIwMDAtMDgtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9jcmVhdGVfZ290X3NlY3Rpb24pOiBEb24ndCBhYm9ydCgpLgoJRm9ybWF0dGluZyBmaXhlcy4KCShfYmZkX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKMjAwMC0wOC0xNiAgQW5kcmV3IE1hY2xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFNldCByZWxvY2F0aW9uIGFkZHJlc3MKCWZvciB1bmRlZmluZWQgc3ltYm9scyB0byBiZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uLgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgYWxsb2NhdGUKCWZvdXIgZXh0cmEgZW50cmllcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAucmVsYS5wbHQgc2VjdGlvbi4KCShzcGFyYzY0X2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBBZGp1c3QgdGhlIG9mZnNldCBpbiB0aGUgLnJlbGEucGx0CglzZWN0aW9uIHRvIGFjY291bnQgZm9yIHRoZSBmb3VyIHJlc2VydmVkIGVudHJpZXMgaW4gdGhlIC5wbHQgc2VjdGlvbi4KCjIwMDAtMDgtMTUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHhjb2ZmbGluay5jIChfYmZkX3BwY194Y29mZl9yZWxvY2F0ZV9zZWN0aW9uKTogQWRkIG9yaSByMCxyMCwwCgl0byB0aGUgbGlzdCBvZiBOT1BzIHdlIHJlY29nbml6ZSBhZnRlciBhIGJyYW5jaC1hbmQtbGluay4KCVVzZSB0aGUgb3JpIE5PUCB3aGVuIG9uZSBpcyBuZWVkZWQuCgoJKiBjb2ZmLXJzNjAwMC5jIChfYmZkX3hjb2ZmX3NsdXJwX2FybWFwKTogRmluaXNoIGltcGxlbWVudGF0aW9uCglmb3IgbGFyZ2UgYXJjaGl2ZXMuCgoyMDAwLTA4LTE0ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBlbGY2NC1pYTY0LmMgKGVsZjY0X2lhNjRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEhhbmRsZQoJRUZfSUFfNjRfUkVEVUNFREZQLCBFRl9JQV82NF9DT05TX0dQLCBhbmQgRUZfSUFfNjRfTk9GVU5DREVTQ19DT05TX0dQLgoJKGVsZjY0X2lhNjRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLiAgQWxzbyBoYW5kbGUKCUVGX0lBXzY0X0FCU09MVVRFLgoKMjAwMC0wOC0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IE1ha2UgaXQgc3RhdGljLgoKMjAwMC0wOC0xMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAuYyAoZWxmMzJfaTg2MF9yZWxvY2F0ZV9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGk4NjBfZmluYWxfbGlua19yZWxvY2F0ZSk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jYXRlX3NwbGl0bik6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jYXRlX3BjMTYpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9oaWdoYWRqKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2k4NjBfaG93dG8pOiBNaW5vciBhZGp1c3RtZW50cyB0byBzb21lIHJlbG9jYXRpb25zLgoJKGVsZl9pbmZvX3RvX2hvd3RvX3JlbCk6IERlZmluZS4KCShlbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9uKTogRGVmaW5lLgoKMjAwMC0wOC0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMTAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jX2xvb3ApOiBNYWtlIExBU1RfU1lNQk9MX1NFQ1RJT04gc3RhdGljLgoKMjAwMC0wOC0wOCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAuYyAoZWxmMzJfaTg2MF9ob3d0b190YWJsZSk6IFVwZGF0ZWQgc29tZSBmaWVsZHMuCgoyMDAwLTA4LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGllZWUuYyAoaWVlZV93cml0ZV9kZWJ1Z19wYXJ0KTogUmV3cml0ZSBhIGNvbW1lbnQuCgkqIGVsZjY0LWlhNjQuYzogRml4IGEgdHlwby4KCjIwMDAtMDgtMDUgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGVsZjMyX2k4NjBfaG93dG9fdGFibGUpOiBOZXcgc3RydWN0dXJlLgoJKGxvb2t1cF9ob3d0byk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jX3R5cGVfbG9va3VwKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2k4NjBfaW5mb190b19ob3d0b19yZWxhKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9jb2RlX3RvX2hvd3RvX2luZGV4KTogTmV3IHN0cnVjdHVyZS4KCShlbGZfaW5mb190b19ob3d0byk6IFJlLWRlZmluZSBhcyBlbGYzMl9pODYwX2luZm9fdG9faG93dG9fcmVsYS4KCShiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogUmUtZGVmaW5lIGFzCgllbGYzMl9pODYwX3JlbG9jX3R5cGVfbG9va3VwLgoKMjAwMC0wOC0wNCAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBzb20uYyAoc3RydWN0IGZpeHVwX2Zvcm1hdCk6IENvbnN0aWZ5IGBmb3JtYXQnLgoJKHNvbV9ocHBhX2hvd3RvX3RhYmxlKTogVXNlIFNPTV9IT1dUTyBtYWNyby4KCSh0cnlfcHJldl9maXh1cCwgaHBwYV9zb21fcmVsb2MpOiBEZWNvcmF0ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKHNvbV9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShjb21wYXJlX3N1YnNwYWNlcyk6IFJlbW92ZSB1bnVzZWQgYGNvdW50MScsIGBjb3VudDInLgoJKHNvbV9iZWdpbl93cml0aW5nKTogUmVtb3ZlIHVudXNlZCBgdG90YWxfcmVsb2Nfc2l6ZScuCgkoc29tX2JmZF9kZXJpdmVfbWlzY19zeW1ib2xfaW5mbyk6IERlY29yYXRlIHVudXNlZCBwYXJhbWV0ZXIuCgkoc29tX3ByaW50X3N5bWJvbCwgc29tX2JmZF9pc19sb2NhbF9sYWJlbF9uYW1lKTogTGlrZXdpc2UuCgkoc29tX3NldF9yZWxvY19pbmZvKTogQ29uc3RpZnkgYGNwJy4gUmVtb3ZlIHVudXNlZCBgYWRkZW5kJy4KCShzb21fZmluZF9uZWFyZXN0X2xpbmUpOiBEZWNvcmF0ZSB1bnVzZWQgcGFyYW1ldGVyKHMpLgoJKHNvbV9zaXplb2ZfaGVhZGVycywgc29tX2dldF9zeW1ib2xfaW5mbywgc29tX3dyaXRlX2FybWFwKTogTGlrZXdpc2UuCgkoc29tX2JmZF9saW5rX3NwbGl0X3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDgtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBzZWN0aW9uLmM6IFJlc3RvcmUgYmFja2VkIG91dCBjb2RlLgoJKiBlbGYuYzogUmVzdG9yZSBiYWNrZWQgb3V0IGNvZGUuCgkoY29weV9wcml2YXRlX2JmZF9kYXRhKTogRml4IGJ1ZyBwcmV2ZW50aW5nIHN0aXBwZWQgZHluYW1pYwoJYmluYXJpZXMgZnJvbSB3b3JraW5nLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA4LTAzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBzZWN0aW9uLmM6IEJhY2sgb3V0IHRoZSBjaGFuZ2UgbWFkZSBieSBOaWNrIENsaWZ0b24KCTxuaWNrY0BjeWdudXMuY29tPiBvbiAyMDAwLTA3LTMxLiBJdCBicmVha3Mgc3RyaXBwaW5nIGR5bmFtaWMKCWJpbmFyaWVzLgoJKiBiZmQtaW4yLmg6IExpa2V3aXNlLgoJKiBlbGYuYzogTGlrZXdpc2UuCgoyMDAwLTA4LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY19sb29wKTogV2FybmluZyByZW1vdmFsLgoKMjAwMC0wNy0zMSAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ184NjBfKik6IE5ldyBiZmQgcmVsb2NzIGZvciBpODYwLgoJKiBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0zMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHNlY3Rpb24uYyAoc3RydWN0IHNlYyk6IEFkZCBuZXcgYm9vbGVhbiBmaWVsZCAnc2VnbWVudF9tYXJrJy4KCShTVERfU0VDVElPTik6IEluaXRpYWxpc2UgbmV3IGZpZWxkIHRvIHplcm8uCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBlbGYuYyAoY29weV9wcml2YXRlX2JmZF9kYXRhKTogUmVvcmdhbmlzZSBzZWN0aW9uIHRvIHNlZ21lbnQKCW1hcHBpbmcgdG8gY29wZSB3aXRoIG1vdmVkIHNlY3Rpb25zIHJlcXVpcmluZyBuZXcgc2VnbWVudHMsCglhbmQgb3ZlcmxhcHBpbmcgc2VnbWVudHMuCgkoU0VHTUVOVF9FTkQpOiBOZXcgbWFjcm86IFJldHVybiB0aGUgZW5kIGFkZHJlc3Mgb2YgYSBzZWdtZW50LgoJKElTX0NPTlRBSU5FRF9CWV9WTUEpOiBOZXcgbWFjcm86IERldGVybWluZSBpZiBhIHNlZ21lbnQKCWNvbnRhaW5zIGEgc2VjdGlvbiBieSBjb21wYXJpbmcgdGhlaXIgVk1BIGFkZHJlc3Nlcy4KCShJU19DT05UQUlORURfQllfTE1BKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgYSBzZWdtZW50Cgljb250YWlucyBhIHNlY3Rpb24gYnkgY29tcGFyaW5nIHRoZWlyIExNQSBhZGRyZXNzZXMuCgkoSU5DTFVERV9TRUNUSU9OX0lOX1NFR01FTlQpOiBOZXcgbWFjcm86IERldGVybWluZSBpZiBhCglzZWN0aW9uIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBhIHNlZ21lbnQuCgkoU0VHTUVOVF9BRlRFUl9TRUdNRU5UKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgb25lIHNlZ21lbnQKCWZvbGxvd3MgYW5vdGhlciBpbiBtZW1vcnkuCgkoU0VHTUVOVF9PVkVSTEFQU19TRUdNRU5UKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgdHdvCglzZWdtZW50cyBvdmVybGFwLgoKMjAwMC0wNy0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGNwdS1pODYwLmM6IEFkZGVkIGNvbW1lbnRzLgoKCSogZWxmMzItaTg2MC5jIChUQVJHRVRfTElUVExFX1NZTSk6IERlZmluZWQgdG8KCWJmZF9lbGYzMl9pODYwX2xpdHRsZV92ZWMuCgkoVEFSR0VUX0xJVFRMRV9OQU1FKTogRGVmaW5lZCB0byAiZWxmMzItaTg2MC1saXR0bGUiLgoJKEVMRl9NQVhQQUdFU0laRSk6IENoYW5nZWQgdG8gNDA5Ni4KCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYyk6IERlY2xhcmF0aW9uIG9mCgluZXcgdGFyZ2V0LgoJKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkZWQgYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYy4KCgkqIGNvbmZpZy5iZmQgKGk4NjAtc3RhcmRlbnQtc3lzdjQqLCBpODYwLXN0YXJkZW50LWVsZiopOiBBZGRlZAoJY29uZmlnIGZvciBsaXR0bGUgZW5kaWFuIGVsZjMyIGk4NjAuCgkodGFyZ19kZWZ2ZWMpOiBEZWZpbmUgZm9yIHRoZSBuZXcgY29uZmlnIGFib3ZlCglhcyAiYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYyIuCgkodGFyZ19zZWx2ZWNzKTogRGVmaW5lIGZvciB0aGUgbmV3IGNvbmZpZyBhYm92ZQoJYXMgImJmZF9lbGYzMl9pODYwX3ZlYyBiZmRfZWxmMzJfaTg2MF9saXR0bGVfdmVjIgoKCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfaTg2MF9saXR0bGVfdmVjKTogQWRkZWQgcmVjb2duaXRpb24KCW9mIG5ldyB0YXJnZXQgdmVjLgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDctMjcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX21lcmdlX3N5bWJvbCk6IFRha2Ugb25lIG1vcmUgYXJndW1lbnQsCglkdF9uZWVkZWQsIHRvIGluZGljYXRlIGlmIHRoZSBzeW1ib2wgY29tZXMgZnJvbSBhIERUX05FRURFRAoJZW50cnkuIERvbid0IG92ZXJpZGUgdGhlIGV4aXN0aW5nIHdlYWsgZGVmaW5pdGlvbiBpZiBkdF9uZWVkZWQKCWlzIHRydWUuCgkoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogUGFzcyBkdF9uZWVkZWQgdG8KCWVsZl9tZXJnZV9zeW1ib2wgKCkuCgoyMDAwLTA3LTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbGlua19zaXplX3JlbG9jX3NlY3Rpb24pOiBaZXJvZXMgdGhlIHNlY3Rpb24ncwoJYWxsb2NhdGVkIGNvbnRlbnRzLgoKMjAwMC0wNy0yNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmhvc3QgKCotKi1haXgqKTogQUlYIGhhcyAnbG9uZyBsb25nJyBhbHdheXMuCgoJKiBjb2ZmLXJzNjAwMC5jICh4Y29mZl93cml0ZV9vbmVfYXJtYXBfYmlnKTogTmV3IHByb2NlZHVyZS4KCSh4Y29mZl93cml0ZV9hcm1hcF9iaWcpOiBXcml0ZSBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGFybWFwcy4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzX2JpZyk6IERvbid0IHVwZGF0ZSB0aGUgb2Zmc2V0CglvZiB0aGUgc3ltYm9sIHRhYmxlLCB4Y29mZl93cml0ZV9hcm1hcCB3aWxsIGRvIGl0LgoKMjAwMC0wNy0yMyAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogVXNlIGFiZmQgaW5zdGVhZAoJb2YgZHlub2JqIGZvciBTR0lfQ09NUEFUIGNoZWNrcy4KCjIwMDAtMDctMjEgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIGNvZmYtbTY4ay5jIChiZmRfbTY4a19jb2ZmX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBOZXcgZnVuY3Rpb24uCgkqIGJmZC1pbi5oIChiZmRfbTY4a19jb2ZmX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBBZGQgZGVjbGFyYXRpb24uCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDctMjEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogRGV0ZWN0IG91dCBvZgoJcmFuZ2Ugc3ltYm9sIGluZGljZXMgaW4gcmVsb2NzIGFuZCBpc3N1ZSBhbiBlcnJvciBtZXNzYWdlLgoKMjAwMC0wNy0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChOQU1FKGJmZF9lbGYsc2l6ZV9keW5hbWljX3NlY3Rpb25zKSk6IERvbid0IGNoZWNrCglpbmZvLT5uZXdfZHRhZ3Mgd2hlbiBzZXR0aW5nIERUX0ZMQUdTXzEuIEl0IHdpbGwgb25seSBiZSBzZXQKCWJ5IHRoZSBuZXcgbGlua2VyIG9wdGlvbnMuIEl0IHNob3VsZG4ndCBicmVhayBhbnl0aGluZy4KCjIwMDAtMDctMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBTZXQgRFRfRkxBR1NfMQoJb25seSBpZiBpbmZvLT5uZXdfZHRhZ3MgaXMgdHJ1ZS4KCjIwMDAtMDctMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBTZXQKCURUX1JVTlBBVEggYW5kIERUX0ZMQUdTIG9ubHkgaWYgaW5mby0+bmV3X2R0YWdzIGlzIHRydWUuCgoyMDAwLTA3LTIwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChBTExfTUFDSElORVMpOiBBZGQgY3B1LWNyaXMubG8uCgkoQUxMX01BQ0hJTkVTX0NGSUxFUyk6IEFkZCBjcHUtY3Jpcy5jLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGFvdXQtY3Jpcy5sbyBhbmQgZWxmMzItY3Jpcy5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgYW91dC1jcmlzLmMgYW5kIGVsZjMyLWNyaXMuYy4KCShjcHUtY3Jpcy5sbywgYW91dC1jcmlzLmxvLCBlbGYzMi1jcmlzLmxvKTogTmV3IHJ1bGVzLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCSogYWNsb2NhbC5tNDogUmVidWlsZC4KCSogYW91dHguaCAoTkFNRShhb3V0LG1hY2hpbmVfdHlwZSkpOiBBZGQgY2FzZSBmb3IgYmZkX2FyY2hfY3Jpcy4KCSogYXJjaHVyZXMuYyAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF9hcmNoX2NyaXMuCgkoYmZkX2NyaXNfYXJjaCk6IERlY2xhcmUuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX2NyaXNfYXJjaC4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoJKiBjb25maWcuYmZkOiAoY3Jpcy0qLSopOiBOZXcgdGFyZ2V0LgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGYzMl9jcmlzX3ZlYywgY3Jpc19hb3V0X3ZlYyk6IE5ldyB2ZWN0b3JzLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBBZGQgYmZkX2FyY2hfY3Jpcy4KCSogbGliYmZkLmg6IFJlYnVpbGQuCgkqIGxpYmFvdXQuaCAoZW51bSBtYWNoaW5lX3R5cGUpOiBBZGQgTV9DUklTLgoJKiByZWxvYy5jOiBBZGQgQ1JJUyByZWxvY2F0aW9ucy4KCSogdGFyZ2V0cy5jIChiZmRfZWxmMzJfY3Jpc192ZWMsIGNyaXNfYW91dF92ZWMpOiBEZWNsYXJlLgoJKGJmZF90YXJnZXRfdmVjdCk6IEFkZCBiZmRfZWxmMzJfY3Jpc192ZWMgYW5kIGNyaXNfYW91dF92ZWMuCgkqIGNwdS1jcmlzLmMsIGFvdXQtY3Jpcy5jLCBlbGYzMi1jcmlzLmM6IE5ldyBmaWxlcy4KCSogcG8vUE9URklMRVMuaW4sIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFsc28gc2V0CglERl9URVhUUkVMIGlmIERUX1RFWFRSRUwgaXMgc2V0LgoJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBBbHNvCglzZXQgREZfU1lNQk9MSUMgZm9yIHN5bWJvbGljIGxpbmsuIEFsc28gc2V0IERUX1JVTlBBVEggaWYKCURUX1JQQVRIIGlzIHNldC4KCVNldCB0aGUgRFRfRkxBR1MgYW5kIERUX0ZMQUdTXzEgZW50cmllcyBpZiBuZWNlc3NhcnkuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmQtaW4uaCAoYmZkX2VsZl9zZXRfZHRfbmVlZGVkX3NvbmFtZSk6IE5ldy4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKCSogZWxmLWJmZC5oIChlbGZfb2JqX3RkYXRhKTogQWRkIGR0X3NvbmFtZS4KCShlbGZfZHRfc29uYW1lKTogTmV3LgoKCSogZWxmLmMgKGJmZF9lbGZfc2V0X2R0X25lZWRlZF9zb25hbWUpOiBOZXcuCgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFkZCB0aGUgRFRfTkVFREVECgllbnRyeSBpZiB0aGUgc2hhcmVkIG9iamVjdCBsb2FkZWQgYnkgRFRfTkVFREVEIGlzIHVzZWQgdG8KCXJlc29sdmUgdGhlIHJlZmVyZW5jZSBpbiBhIHJlZ3VsYXIgb2JqZWN0LgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKF9iZmRfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBIYW5kbGUgRFRfQ09ORklHLAoJRFRfREVQQVVESVQgYW5kIERUX0FVRElUIGFzIHN0cmluZ3MuCgoyMDAwLTA3LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZm9ybWF0LmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKF9iZmRfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBGaXggRFRfQ0hFQ0tTVU0uCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYuYyAoX2JmZF9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IEhhbmRsZSBEVF9CSU5EX05PVywKCURUX0lOSVRfQVJSQVksIERUX0ZJTklfQVJSQVksIERUX0lOSVRfQVJSQVlTWiwgRFRfRklOSV9BUlJBWVNaLAoJRFRfUlVOUEFUSCwgRFRfRkxBR1MsIERUX1BSRUlOSVRfQVJSQVksIERUX1BSRUlOSVRfQVJSQVlTWiwKCURUX1BMVFBBRFNaLCBEVF9NT1ZFRU5ULCBEVF9NT1ZFU1osIERUX0ZFQVRVUkUsIERUX1BPU0ZMQUdfMSwKCURUX1NZTUlOU1osIERUX1NZTUlORU5ULCBEVF9DT05GSUcsIERUX0RFUEFVRElULCBEVF9BVURJVCwKCURUX1BMVFBBRCwgRFRfTU9WRVRBQiwgRFRfU1lNSU5GTywgRFRfUkVMQUNPVU5ULCBEVF9SRUxDT1VOVCwKCURUX0ZMQUdTXzEsIERUX1VTRUQgYW5kIERUX0NIRUNLU1VNLgoKMjAwMC0wNy0xOCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZWxmLmMgKGJmZF9lbGZfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSwgYmZkX2VsZl9nZXRfYXJjaF9zaXplKTogTW92ZQoJcmVuYW1lZCBmdW5jdGlvbnMgZnJvbSBoZXJlLi4uCgkoYXNzaWduX3NlY3Rpb25fbnVtYmVycyk6IFVzZSByZW5hbWVkIGZ1bmN0aW9ucy4KCShwcmVwX2hlYWRlcnMpOiBVc2UgcmVuYW1lZCBmdW5jdGlvbnMuCgoJKiBiZmQuYyAoYmZkX2dldF9zaWduX2V4dGVuZF92bWEsIGJmZF9nZXRfYXJjaF9zaXplKTogLi4uVG8gaGVyZS4KCSogYmZkLWluLmggKGJmZF9nZXRfc2lnbl9leHRlbmRfdm1hLCBiZmRfZ2V0X2FyY2hfc2l6ZSk6IFVwZGF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0xOCAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogQWRkCglwYXJlbnRoZXNpcyBpbiBpZiBzdGF0ZW1lbnQuCgoyMDAwLTA3LTE3ICBLb3VuZGlueWEgSyAgPGtrQGRkZW9yZy5zb2Z0Lm5ldD4KCglFbmFibGUgdGhlIHN1cHBvcnQgZm9yIFRyYWRpdGlvbmFsIE1JUFMuCgkqIGVsZjMyLW1pcHMuYyAoSVJJWF9DT01QQVQpOiBSZWNvZ25pemUgYmZkX2VsZjMyX3RyYWRiaWdtaXBzX3ZlY2FuZAoJcmV0dXJuIGljdF9ub25lIGFwcHJvcHJpYXRlbHkgZm9yIHRyYWRpdGlvbmFsIG1pcHMgdGFyZ2V0cy4KCShTVFVCX0xXKTogQ2hhbmdlIDB4OGY5OTgwMDAgdG8gMHg4Zjk5ODAxMCBmb3IgdHJhZGl0aW9uYWwgbWlwcy4KCShTVFVCX01PVkUpOiBDb25kaXRpb25hbGl6ZSBmb3IgdHJhZGl0b25hbCBtaXBzLgoJKFNUVUJfTEkxNik6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfbW9kaWZ5X3NlZ21lbnRfbWFwKTogQ29uZGl0aW9uYWxpemUgdG8gYXZvaWQgbWFraW5nCglyb29tIGZvciBSVFBST0MgaGVhZGVyLgoJKF9iZmRfbWlwc19lbGZfbW9kaWZ5X3NlZ21lbnRfbWFwKTogRm9yIGEgbm9ybWFsIG1pcHMgZXhlY3V0YWJsZSBzZXQKCXRoZSBwZXJtaXNzaW9uIGZvciB0aGUgUFRfRFlOQU1JQyBhcyByZWFkLCB3cml0ZSBhbmQgZXhlY3V0ZS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IENoZWNrIGZvciB0aGUgc3ltYm9sIF9EWU5BTUlDX0xJTktJTkcKCWZvciB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IEFkZCB0aGUgc3ltYm9sCglfRFlOQU1JQ19MSU5LSU5HIGZvciB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IEFkZCB0aGUgc3ltYm9sIF9fUkxEX01BUAoJaW4gY2FzZSBvZiB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBDcmVhdGUgYSBzdHViIG9ubHkgaWYgYSBQTFQKCWVudHJ5IGlzIHJlcXVpcmVkLiBGb3IgYSBmdW5jdGlvbiBpZiBQTFQgaXMgbm90IHJlcXVpcmVkIHRoZW4gc2V0IHRoZQoJY29ycmVzcG9uZGluZyBoYXNoIHRhYmxlIGVudHJ5IHRvIDAuCgkoX2JmZF9taXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBZGQgRFRfREVCVUcgZW50cnkgZm9yCgl0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBmb3IgYSB1bmRlZmluZWQgc3ltYm9sIGluIGEKCXNoYXJlZCBvYmplY3Qgc2V0IHRoZSB2YWx1ZSB0byAwLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogQ2hlY2sgZm9yIHRoZSBzeW1ib2wKCV9EWU5BTUlDX0xJTktJTkcgZm9yIHRyYWRpdG9uYWwgbWlwcy4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IENoZWNrIGZvciB0aGUgc3ltYm9sIF9fUkxEX01BUAoJZm9yIHRyYWRpdG9uYWwgbWlwcy4KCjIwMDAtMDctMTUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGFvdXR4LmggKHRyYW5zbGF0ZV90b19uYXRpdmVfc3ltX2ZsYWdzKTogSGFuZGxlIEJTRl9MT0NBTC4KCjIwMDAtMDctMTIgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYmJmZC5jIChiZmRfc2Vlayk6IGZpeCAnc2VlayBiZXlvbmQgRU9GJyBlcnJvciB3aGVuIHdyaXRpbmcKCW91dCBhIHN0cnVjdHVyZSB0aGF0IGlzIEJGRF9JTl9NRU1PUlkuCgoyMDAwLTA3LTExICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmNjQtaHBwYS5jIChnZXRfZHluX25hbWUpOiBQYXNzIGluIHNlY3Rpb24gcG9pbnRlciBpbnN0ZWFkIG9mCgliZmQgcG9pbnRlci4gIFByaW50IHNlY3Rpb24gaWQgaW5zdGVhZCBvZiBiZmQgcG9pbnRlciBmb3IgbG9jYWwKCXN5bXMuICBQcmVmaXggYWRkZW5kIHdpdGggYCsnIGZvciBnbG9iYWwgc3ltcyBhcyB3ZWxsIGFzIGxvY2FsLgoJQ29ycmVjdCBjYWxjdWxhdGlvbiBvZiBuYW1lIGNvbXBvbmVudCBsZW5ndGhzLgoJKGVsZjY0X2hwcGFfY2hlY2tfcmVsb2NzKTogVXBkYXRlIGNhbGwgdG8gZ2V0X2R5bl9uYW1lLgoKCUZyb20gRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFVwZGF0ZSBjYWxscyBoZXJlIHRvby4KCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IEZpeCBzb21lIHdhcm5pbmdzLgoJKGVsZjY0X2hwcGFfbW9kaWZ5X3NlZ21lbnRfbWFwKTogTGlrZXdpc2UuCgoyMDAwLTA3LTExICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoYmZkX2VsZl9nZXRfc2lnbl9leHRlbmRfdm1hKTogUmV0dXJuIHRlbmRlbmN5IG9mIFZNQQoJYWRkcmVzc2VzIHRvIGJlICJuYXR1cmFsbHkiIHNpZ24gZXh0ZW5kZWQuICBSZXR1cm4gLTEgaWYgdW5rbm93bi4KCSogYmZkLWluLmggKGJmZF9lbGZfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSk6IEFkZCBkZWNsYXJhdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0xMSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZWNvZmZzd2FwLmggKGVjb2ZmX2dldF9vZmYsIGVjb2ZmX3B1dF9vZmYpOiBBZGQgRUNPRkZfU0lHTkVEXzMyCglhbmQgRUNPRl9TSUdORURfNjQgdG8gbGlzdCB3YXlzIHRvIGV4dHJhY3QgYW4gb2Zmc2V0LgoJKGVjb2ZmX3N3YXBfZmRyX2luLCBlY29mZl9zd2FwX2Zkcl9vdXQsIGVjb2ZmX3N3YXBfcGRyX2luLAoJZWNvZmZfc3dhcF9wZHJfb3V0LCBlY29mZl9zd2FwX2V4dF9pbiwgZWNvZmZfc3dhcF9leHRfb3V0KToKCVVwZGF0ZS4KCSogZWxmNjQtbWlwcy5jIChFQ09GRl9TSUdORURfNjQpOiBEZWZpbmUgaW5zdGVhZCBvZiBFQ09GRl82NC4KCSogZWxmMzItbWlwcy5jIChFQ09GRl9TSUdORURfMzIpOiBEZWZpbmUgaW5zdGVhZCBvZiBFQ09GRl8zMi4KCjIwMDAtMDctMTEgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogVXNlIGJmZF9zZXRfc3RhcnRfYWRkcmVzcyBhbmQgbm90CgliZmRfZ2V0X3N0YXJ0X2FkZHJlc3MuCgkoZWxmX3N3YXBfZWhkcl9pbik6IFNpZ24gZXh0ZW5kIGVfZW50cnkgd2hlbiBhcHBsaWNhYmxlLgoJKGVsZl9zd2FwX2VoZHJfb3V0KTogRGl0dG8uCgoyMDAwLTA3LTEwICBBbGV4YW5kZXIgQWdhbmljaGV2ICA8QUFnYW5pY2hldkBoeXBlcmNvbS5jb20+CgoJKiBhcmNodXJlcy5jIChiZmRfZGVmYXVsdF9zY2FuKTogQWRkIHNldCBvZiBiZmRfbWFjaF8gY2FzZXMgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgYmludXRpbHMuCgoyMDAwLTA3LTEwICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChiZmRfbWFrZV9zZWN0aW9uX2FueXdheSk6IFN0YXJ0IHNlY3Rpb25faWQgYXQgMHgxMC4KCShTVERfU0VDVElPTik6IEF2b2lkIG5lZ2F0aXZlIGlkcywgaW5zdGVhZCB1c2UgMCB0byAzLgoKCUZyb20gUnlhbiBCcmFkZXRpY2ggIDxyYnJhZGV0aWNoQHVzd2VzdC5uZXQ+CgkqIGR3YXJmMS5jIChwYXJzZV9kaWUpOiBDdXJlIHNpZ25lZC91bnNpZ25lZCBjaGFyIHdhcm5pbmdzLgoJKHBhcnNlX2xpbmVfdGFibGUpOiBEaXR0by4KCShfYmZkX2R3YXJmMV9maW5kX25lYXJlc3RfbGluZSk6IERpdHRvLgoJKiBzeW1zLmMgKGNtcGluZGV4ZW50cnkpOiBSZW1vdmUgZXh0cmEgYConIGZyb20gcGFyYW1zLgoKMjAwMC0wNy0wOSAgS291bmRpbnlhIEsgIDxra0BkZGVvcmcuc29mdC5uZXQ+CgoJKiBlbGYzMi1taXBzLmMgKHNvcnRfZHluYW1pY19yZWxvY3MpOiBOZXcgRnVuY3Rpb24uCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IENhbGwgc29ydF9keW5hbWljX3JlbG9jcwoJdmlhIHFzb3J0IHRvIHNvcnQgdGhlIGR5bmFtaWMgcmVsb2NhdGlvbnMgaW4gaW5jcmVhc2luZyByX3N5bW5keAoJdmFsdWUuCgoyMDAwLTA3LTA5ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2R5bl9oYXNoX3RhYmxlX2luaXQpOiBBZGQKCUFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGFyZ3MuCgkoZ2V0X29wZCk6IExpa2V3aXNlLgoJKGdldF9wbHQpOiBMaWtld2lzZS4KCShnZXRfZGx0KTogTGlrZXdpc2UuCgkoZ2V0X3N0dWIpOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjY0X2hwcGFfbGlua19vdXRwdXRfc3ltYm9sX2hvb2spOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IERlbGV0ZSB1bnVzZWQgdmFyLgoJKGVsZjY0X2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9maW5hbGl6ZV9vcGQpOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2ZpbmFsaXplX2R5bnJlbG9jKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9tb2RpZnlfc2VnbWVudF9tYXApOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogQWRkCglBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBhcmdzLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KCShlbGZfaHBwYV9yZWNvcmRfc2VnbWVudF9hZGRycyk6IEFkZCBwYXJldGhlc2VzLgoJKGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBDb25zdGlmeSBkeW5fbmFtZS4KCglGcm9tICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoJKiBjb25maWcuYmZkOiBBZGQgaHBwYSo2NCotKi1saW51eC1nbnUgNjQtYml0IHRhcmdldCwgYW5kCglyZWFycmFuZ2UgY2FzZSBzdGF0ZW1lbnQgc28gdGhhdCBpdCBnZXRzIHByZWZlcnJlZCB0byAzMi1iaXQgb25lcy4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IFVzZQoJYXNlY3Rpb24tPmlkIGluc3RlYWQgb2YgYWRkcmVzcyBvZiBhc2VjdGlvbiBzdHJ1Y3R1cmUuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFVzZSBqdXN0IG9uZSBzdHViIHNlY3Rpb24KCWZvciAuaW5pdCogYW5kIC5maW5pKi4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IE1hc2sgcG9pbnRlcnMKCWFuZCBhZGRlbmRzIHVzZWQgaW4gc3R1YiBuYW1lcyB0byAzMiBiaXRzLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IERvbid0IHN1bSBhZGRlbmQKCXR3aWNlIGZvciBSX1BBUklTQ19HUFJFTDY0LiAgVXNlIGJmZF9wdXRfMzIgZm9yIFJfUEFSSVNDX1BDUkVMMzIsCglub3QgYmZkX3B1dF82NC4gIEZpeCBtaW5vciBjb21tZW50IHR5cG8gYW5kIGZvcm1hdHRpbmcuCgoJQ2hhbmdlcyB0byBjcmVhdGUgbXVsdGlwbGUgbGlua2VyIHN0dWJzLCBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5CgliZWZvcmUgdGhlIHNlY3Rpb24gd2hlcmUgdGhleSBhcmUgcmVxdWlyZWQuCgkqIGVsZjMyLWhwcGEuYzogRG9uJ3QgaW5jbHVkZSBocHBhX3N0dWJzLmguCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfZW50cnkpOiBBZGQgYSBwb2ludGVyIHRvIHRoZSBzdHViIHNlY3Rpb24uCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfdGFibGUpOiBEZWxldGUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBEZWxldGUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBVc2UgcGxhaW4gYmZkX2hhc2hfdGFibGUgZm9yCglzdHViX2hhc2hfdGFibGUsIGFuZCBzdG9yZSB0aGUgc3RydWN0IGhlcmUgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgoJRGVsZXRlIG91dHB1dF9zeW1ib2xfY291bnQuICBBZGQgb2Zmc2V0IGFycmF5LiAgQ2hhbmdlCglnbG9iYWxfdmFsdWUgdG8gYSBiZmRfdm1hLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2xvb2t1cCk6IFVzZSB0YWJsZSBpbnN0ZWFkIG9mIHRhYmxlLT5yb290LgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX3RyYXZlcnNlKTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfbmFtZV9vZl9zdHViKTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX2xvb2t1cCk6IERlbGV0ZS4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90cmF2ZXJzZSk6IERlbGV0ZS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF90YWJsZV9pbml0KTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogUGFzcyBpbnB1dCBzZWN0aW9uIGFuZCBvZmZzZXQgcmF0aGVyCgl0aGFuIGxvY2F0aW9uIGFuZCBjYWxjdWxhdGUgbG9jYXRpb24gaGVyZS4gIERvbid0IHBhc3MgbmFtZSBhcyBhbGwKCXN0dWJzIGFyZSBub3cgdGhlIHNhbWUgc2l6ZS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF9uZXdmdW5jKTogSW5pdCBuZXcgZmllbGRzLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IExpa2V3aXNlLCBhbmQgc3R1Yl9oYXNoX3RhYmxlCgl0b28uCgkoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IENhc3QgZW51bXMgdG8gaW50IGJlZm9yZQoJY29tcGFyaW5nIGFnYWluc3QgaW50cy4gIFJld3JpdGUgc3R1YiBoYW5kbGluZyBjb2RlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IE1ha2Ugcl90eXBlIGFuZCByX3N5bW5keCB1bnNpZ25lZC4KCUNhc2UgZW51bXMgdG8gaW50IGJlZm9yZSBjb21wYXJpbmcgYWdhaW5zdCBpbnRzLiAgUmVtb3ZlCgliZmRfcmVsb2NfZGFuZ2Vyb3VzIGNhc2UuCgkoZWxmMzJfaHBwYV9idWlsZF9vbmVfc3R1Yik6IFJld3JpdGUuCgkoZWxmMzJfaHBwYV9zaXplX29uZV9zdHViKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfYnVpbGRfc3R1YnMpOiBSZXdyaXRlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFBhc3MgaW4gbGlua2VyIGNhbGwtYmFjayBmdW5jdGlvbnMuCglSZXdyaXRlIHN0dWItaGFuZGxpbmcgc3BlY2lmaWMgY29kZS4KCgkqIGVsZjMyLWhwcGEuaCAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogVXBkYXRlIHByb3RvdHlwZS4KCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9keW5faGFzaF9lbnRyeSk6IEZpeCBhIGNvbW1lbnQgdHlwby4KCgkqIGhwcGFfc3R1YnMuaDogRGVsZXRlLgoJKiBNYWtlZmlsZS5hbSAoU09VUkNFX0hGSUxFUyk6IFJlbW92ZSBocHBhX3N0dWJzLmgKCShlbGYzMi1ocHBhLmxvKTogUmVtb3ZlIGhwcGFfc3R1YnMuaCBmcm9tIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoJKiBlbGYtaHBwYS5oIChfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogSGFuZGxlIGVfbmxzZWwgYW5kCgllX25scnNlbC4KCgkqIGxpYmhwcGEuaCAoaHBwYV9maWVsZF9hZGp1c3QpOiBDb3JyZWN0IGVfbnNlbCBjYXNlLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBNZW50aW9uIHRoZSBvZmZzZXQKCWFuZCBzZWN0aW9uIG5hbWUgZm9yIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQgZXJyb3IgbWVzc2FnZS4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogUHJpbnQgcmVhc29ucyBmb3IgcmV0dXJuaW5nCgliZmRfcmVsb2Nfbm90c3VwcG9ydGVkLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIG91dHB1dF9iZmQuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUKCXVuZGVmaW5lZCB3ZWFrIHN5bWJvbHMgZm9yIGFsbCByZWxvY3MuCgkoZWxmMzJfaHBwYV9zaXplX29mX3N0dWIpOiBBZGp1c3QgY2FsY3VsYXRpb24gYnkgOCBzaW5jZSBicmFuY2gKCW9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIG9uZSBwYXN0IHRoZSBkZWxheSBzbG90LgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEFjY291bnQgZm9yIHJlbG9jIGFkZGVuZCB3aGVuIGNhbGN1bGF0aW5nCglicmFuY2ggZGVzdGluYXRpb24uICBQdXQgYWRkZW5kIGludG8gc3R1YiBuYW1lIHRvby4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogQWNjb3VudCBmb3IgcmVsb2MgYWRkZW5kIGFuZAoJYWRqdXN0IGJ5IDggd2hlbiBkZWNpZGluZyB3aGV0aGVyIGEgbGlua2VyIHN0dWIgaXMgbmVlZGVkLiAgUHV0CglhZGRlbmQgaW50byBzdHViIG5hbWUgYXMgZm9yIGFib3ZlLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogQ2hhbmdlIHNpZ25lZC91bnNpZ25lZCBvbgoJdmFyaW91cyBhcmdzIGFuZCB2YXJzLgoJKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIZXJlIHRvby4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBSZW5hbWUgaW5kZXggLT4gaW5keC4gIFVzZSBlX2luZHggZm9yCglpbm5lciBibG9jayB2YXIgdG8gYXZvaWQgc2hhZG93aW5nLgoKCSogZWxmMzItaHBwYS5oIChfYmZkX2VsZjMyX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiAgTWFrZSBgZmllbGQnIGFyZwoJdW5zaWduZWQuCgkqIGVsZjY0LWhwcGEuaCAoX2JmZF9lbGY2NF9ocHBhX2dlbl9yZWxvY190eXBlKTogRGl0dG8uCgkqIGVsZi1ocHBhLmggKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBEaXR0by4KCShlbGZfaHBwYV9mYWtlX3NlY3Rpb25zKTogUmVuYW1lIGxvY2FsIHZhciB0byBhdm9pZCBzaGFkb3dpbmcuCgoJKiBsaWJocHBhLmg6IENoYW5nZSBwcmFjdGljYWxseSBhbGwgdW5zaWduZWQgaW50cyB0byBwbGFpbiBpbnRzLgoJUmVtb3ZlIHRlc3RzIG9uIGdjYyB2ZXJzaW9uLiAgSW5zdGVhZCB1c2UgQVRUUklCVVRFX1VOVVNFRCBmb3IKCXByb3RvdHlwZXMuCgoJRnJvbSBSeWFuIEJyYWRldGljaCAgPHJicmFkZXRpY2hAdXN3ZXN0Lm5ldD4KCSogbGliaHBwYS5oIChocHBhX29wY29kZV90eXBlKTogTmV3IGVudW0gdG8gcmVwbGFjZSAjZGVmaW5lJ3MuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IE1vZGlmeSB0bwoJc3VpdCBhYm92ZS4KCUZyb20gIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBVcGRhdGUgdGhlIG9wY29kZSBjb25zdGFudHMKCXRvIHRoZSBuZXcgT1BfKiBvbmVzLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBDb25zb2xpZGF0ZSBmcmVlaW5nIG9uCgllcnJvciBleGl0LiAgQmFpbCBvdXQgZWFybGllciBvbiBwbGFiZWwgcmVsb2NzIHRoYXQgd2UgYXJlbid0CglpbnRlcmVzdGVkIGluLiAgRG9uJ3QgdGVsbCBlbGYzMl9ocHBhX3N0dWJfaGFzaF9sb29rdXAgdG8gY29weQoJc3RyaW5nLCBhbmQgdGhlbiBkb24ndCBmcmVlIG91ciBjb3B5LgoJKGVsZjMyX2hwcGFfYnVpbGRfb25lX3N0dWIpOiBNYWtlIGluc24gdW5zaWduZWQgaW50LgoKCSogbGliaHBwYS5oIChiZmRfaHBwYV9pbnNuMmZtdCk6IDIyIGJpdCBicmFuY2hlcyBhcmUgb25seQoJYXZhaWxhYmxlIHdpdGggQkwsIG5vdCBCRSBhbmQgQkxFLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogQWRkIHNvbWUgbW9yZSBleGFtcGxlCgljb2RlIGZvciBlbGYgYXJnIHJlbG9jcy4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogUmVwbGFjZSBib29sZWFuIGlzX2xvY2FsCglhcmd1bWVudCB3aXRoIGVsZl9saW5rX2hhc2hfZW50cnkgaC4gIEhhbmRsZSB1bmRlZmluZWQgd2VhawoJc3ltYm9scy4gIE1vdmUgJGdsb2JhbCQgbG9va3VwIGZyb20gaGVyZS4uLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IC4uLnRvIGhlcmUuICBSZXR1cm4gY29ycmVjdCBlcnJvcgoJbWVzc2FnZSBmb3Igbm9uLWhhbmRsZWQgcmVsb2NzLgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogQ29ycmVjdGx5IHRlc3QgYnJhbmNoIHJhbmdlLiAgUHJldmlvdXMKCXdyb25nIHRlc3Qgd2FzIC0weDNmZmZmIHRvICsweDQwMDAwLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IFJfUEFSSVNDX0RJUjE3UiwKCVJfUEFSSVNDX0RJUjE3RiwgYW5kIFJfUEFSSVNDX0RJUjIxTCBhcmUgZm9yIGFic29sdXRlIGJyYW5jaGVzOwoJSGFuZGxlIHRoZW0gYXMgc3VjaC4KCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogRml4IGEgdHlwby4KCgkqIGxpYmhwcGEuaCAoR0VUX0ZJRUxELCBHRVRfQklULCBNQVNLLCBDQVRFTkFURSwgRUxFVkVOKTogRGVsZXRlLgoJKGFzc2VtYmxlXzMsIGFzc2VtYmxlXzYsIGFzc2VtYmxlXzEyLCBhc3NlbWJsZV8xNiwgYXNzZW1ibGVfMTZhLAoJYXNzZW1ibGVfMTcsIGFzc2VtYmxlXzIxKTogRGVsZXRlLgoJU3VwcGx5IGRlZmluZXMgZm9yIGFsbCA2NCBwb3NzaWJsZSBvcGNvZGVzLgoJKGJmZF9ocHBhX2luc24yZm10KTogQWRkIGJmZCBhcmd1bWVudCwgYW5kIHVzZSB0byBzZWxlY3Qgd2lkZSBtb2RlCglmb3JtYXRzLiAgSGFuZGxlIENPTUlDTFIuCgkoaHBwYV9yZWJ1aWxkX2luc24pOiBEZWxldGUgYmZkIGFyZ3VtZW50LiAgSGFuZGxlIGZvcm1hdHMgMTAsIC0xMSwKCS0xMCwgLTE2LCAxNiwgMjIuCgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfZWxmX3JlbG9jYXRlX2luc24pOiBDb21wbGV0ZSByZXdyaXRlLgoJKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBNYWpvciByZXdyaXRlLgoJKGVsZjMyX2hwcGFfYnVpbGRfb25lX3N0dWIpOiBNb2RpZnkgaHBwYV9lbGZfcmVsb2NhdGVfaW5zbiBjYWxscwoJdG8gc3VpdC4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBEb24ndCBmcmVlIHN0dWJfbmFtZSB0d2ljZS4gIFJlYWQgaW4gYWxsCgl0aGUgbG9jYWwgc3ltcyAtIGRpZCB0aGlzIGNvZGUgZ2V0IGRlbGV0ZWQgYWNjaWRlbnRhbGx5PyAgSWdub3JlCgl1bmRlZmluZWQgYW5kIHVuZGVmd2VhayBzeW1zLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGluayk6IE1vdmUgaHBwYV9pbmZvIHRvIG91dGVybW9zdAoJYmxvY2suICBVc2UgaXQgaW5zdGVhZCBvZiBlbGY2NF9ocHBhX2hhc2hfdGFibGUgKGluZm8pLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBVc2UgaHBwYV9pbmZvIGluc3RlYWQgb2YKCWVsZjY0X2hwcGFfaGFzaF90YWJsZSAoaW5mbykuCgoJKiBsaWJocHBhLmggKHJlX2Fzc2VtYmxlXzMsIHJlX2Fzc2VtYmxlXzEyLCByZV9hc3NlbWJsZV8xNiwKCXJlX2Fzc2VtYmxlXzE3LCByZV9hc3NlbWJsZV8yMSwgcmVfYXNzZW1ibGVfMjIpOiBEb24ndCBtYXNrIGluc24uCgkoaHBwYV9yZWJ1aWxkX2luc24pOiBNYXNrIGltbWVkaWF0ZSBiaXRzIGhlcmUgaW5zdGVhZC4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IE1hc2sgaGVyZSB0b28uCgoyMDAwLTA3LTA4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChzdHJ1Y3Qgc2VjKTogQWRkIGlkIGZpZWxkLiAgVGlkeSBjb21tZW50IGZvcm1hdHRpbmcuCgkoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBTZXQgaWQuCgkoU1REX1NFQ1RJT04pOiBJbml0IGlkIHRvby4KCUNoYW5nZSBDT05TVCB0byBjb25zdCB0aHJvdWdob3V0LgoJKiBhcmNodXJlcy5jIChiZmRfYXJjaF9pbmZvKTogVGlkeSBjb21tZW50LgoJKGJmZF9hcmNoX2xpc3QpOiBDaGFuZ2UgYSBDT05TVCB0byBjb25zdC4KCSogbGliYmZkLWluLmg6IFRpZHkgY29tbWVudHMgYW5kIHJlcGxhY2UgQ09OU1Qgd2l0aCBjb25zdC4KCSogZWxmLWJmZC5oOiBMaWtld2lzZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogbGliY29mZi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0wNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBhcmNoaXZlLmMgKF9iZmRfd3JpdGVfYXJjaGl2ZV9jb250ZW50cyk6IEFkZCBhbiBpbmZvcm1hdGl2ZQoJY29tbWVudC4KCjIwMDAtMDctMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogc3JlYy5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDYtMDUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTUFJTlRBSU5FUlM6IG5ldwoKMjAwMC0wNy0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogRG8gbm90IGlnbm9yZSB0aGUgc3ltYm9sCgl2YWx1ZSBvZiBQQy1yZWxhdGl2ZSBvZmZzZXRzLgoKMjAwMC0wNy0wMyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoYWxwaGFfZWxmX3NpemVfaW5mbyk6IE5ldy4KCShlbGZfYmFja2VuZF9zaXplX2luZm8pOiBEZWZpbmUgdG8gYWxwaGFfZWxmX3NpemVfaW5mby4KCSogZWxmY29kZS5oIChlbGZfc2l6ZV9pbmZvKTogQ2hhbmdlIGhhc2ggYnVja2V0IHNpemUgdG8gNC4KCjIwMDAtMDctMDMgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmMzItbWlwcy5jOiBJbmNsdWRlIGVsZjMyLXRhcmdldC5oIGFnYWluIGZvciB0aGUgdHJhZGl0aW9uYWwKCU1JUFMgdGFyZ2V0cy4KCjIwMDAtMDctMDMgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogZWxmMzItYXZyLmMgKGJmZF9lbGYzMl9iZmRfcmVsb2NfdHlwZV9sb29rdXApOgoJQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGFyZ3VtZW50cyB0byBhdm9pZCB3YXJuaW5ncy4KCShhdnJfaW5mb190b19ob3d0b19yZWxhKTogTGlrZXdpc2UuCgkoZWxmMzJfYXZyX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKGVsZjMyX2F2cl9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoZWxmMzJfYXZyX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDctMDMgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfd3JpdGVfZ2xvYmFsX3N5bSk6IFR1cm4gYSB3ZWFrIHN5bWJvbCBpbnRvCglhbiBleHRlcm5hbCBzeW1ib2wgZm9yIGEgbm9uLXNoYXJlZCwgbm9uLXJlbG9jYXRhYmxlIGxpbmsuCgoyMDAwLTA3LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29mZmxpbmsuYyAoSVNfRVhURVJOQUwpOiBOZXcgbWFjcm86IFJldHVybiB0cnVlIGlmIHRoZSBzeW1ib2wKCWlzIGFuIGV4dGVybmFsIHN5bWJvbC4KCShJU19XRUFLX0VYVEVSTkFMKTogTmV3IG1hY3JvOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3ltYm9sIGlzIGEgd2VhawoJZXh0ZXJuYWwgc3ltYm9sLgoKMjAwMC0wNy0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiByZWxvYzE2LmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wNy0wMSAgS291bmRpbnlhIEsgIDxra0BkZGVvcmcuc29mdC5uZXQ+CgoJKiBjb25maWcuYmZkOiBDaGFuZ2UgdGFyZ19kZWZ2ZWMgYW5kIHRhcmdfc2VsdmVjcyBmb3IgbWlwcyotKi1zeXN2NCoKCXRvIGFkZCBhIG5ldyB0YXJnZXQgZm9yIHRyYWRpdGlvbmFsIG1pcHMgaS5lCgliZmRfZWxmMzJfdHJhZGJpZ21pcHNfdmVjIGFuZCBiZmRfZWxmMzJfdHJhZGxpdHRsZW1pcHNfdmVjLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX3RyYWRiaWdtaXBzX3ZlYyk6IERlY2xhcmUgYW5kIHB1dCBpbgoJYmZkX3RhcmdldF92ZWN0b3IuCgkoYmZkX2VsZjMyX3RyYWRsaXR0bGVtaXBzX3ZlYyk6IExpa2V3aXNlLgoJKiBlbGZ4eC10YXJnZXQuaDogQWRkIG1hY3JvIElOQ0xVREVEX1RBUkdFVF9GSUxFIHdoaWNoIGlzIG1vcmUgYSB0ZXN0Cgl0byBzZWUgdGhhdCBlbGZOTl9iZWQgZG9lcyBub3QgZ2V0IHJlZGVmaW5lZCBldmVuIGlmIHRoZSB0YXJnZXQgZmlsZQoJaXMgaW5jbHVkZWQgdHdpY2UgZm9yIGEgY2hpcC4gU2VlIGVsZjMyLW1pcHMuYy4KCjIwMDAtMDctMDEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBNYWtlZmlsZS5hbSAoREVQKTogRml4IDIwMDAtMDYtMjIuICBncmVwIGFmdGVyIHJ1bm5pbmcgZGVwLnNlZAoJKENMRUFORklMRVMpOiBBZGQgREVQQS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTMwICBESiBEZWxvcmllICA8ZGpAY3lnbnVzLmNvbT4KCgkqIHBlaWNvZGUuaCAoY29mZl9zd2FwX2ZpbGVoZHJfaW4pOiBjYW4ndCB1c2UgZV9tYWdpYyBiZWNhdXNlIHdlCgljYW4ndCBhc3N1bWUgdGhlIFBFIGhlYWRlciBpcyBhdCAweDgwLgoKMjAwMC0wNi0yOSAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIHN5bXMuYyAoX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUpOiBVc2UgSVNfQUJTT0xVVEVfUEFUSC4KCjIwMDAtMDYtMjggIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBnbzMyc3R1Yi5oOiBVcGRhdGUgc3R1Yi4KCjIwMDAtMDYtMjYgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfYXZyNSk6IERlZmluZS4KCSogYmZkLWluMi5oIChiZmRfbWFjaF9hdnI1KTogRGVmaW5lLgoJKiBjcHUtYXZyLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBSZW5hbWUgYmZkX21hY2hfYXZyNCB0bwoJYmZkX21hY2hfYXZyNSwgYWRkIGJmZF9tYWNoX2F2cjQuICBVcGRhdGUgY29tbWVudHMuCgkoY29tcGF0aWJsZSk6IFVwZGF0ZSBjb21tZW50LiAgQWRkIG1pc3NpbmcgdGVzdC4KCSogZWxmMzItYXZyLmMgKGF2cl9maW5hbF9saW5rX3JlbG9jYXRlKTogU3VwcG9ydCA4SyB3cmFwCglmb3IgYXZyMiBhbmQgYXZyNC4gIFNpbXBsaWZ5IDhLIHdyYXAgY29kZS4KCShiZmRfZWxmX2F2cl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogUmVjb2duaXplIGJmZF9tYWNoX2F2cjUuCgkoZWxmMzJfYXZyX29iamVjdF9wKTogUmVjb2duaXplIEVfQVZSX01BQ0hfQVZSNS4KCjIwMDAtMDYtMjYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1oODMwMC5jOiBGaXggZm9ybWF0dGluZy4KCSogY3B1LWg4MzAwLmM6IExpa2V3aXNlLgoKMjAwMC0wNi0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBQcmludCBgKGxvY2FsKScKCWZvciBsb2NhbCBzeW1ib2xzIHdob3NlIG5hbWVzIGFyZSB1bmtub3duLgoKMjAwMC0wNi0yMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIE1ha2VmaWxlLmFtIChERVApOiBncmVwIGZvciBsZWFkaW5nIGAvJyBpbiBERVAxLCBhbmQgZmFpbCBpZiB3ZQoJZmluZCBvbmUuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBkb2MvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmN5LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCjIwMDAtMDYtMjAgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE1hcCB0byB0aGUgbmV3IGZ1bmN0aW9uLgoKMjAwMC0wNi0yMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGFyY2hpdmUuYyAobm9ybWFsaXplKTogQ29ycmVjdCBwb2ludGVyIGNvbXBhcmlzb24gd2hlbiBjaGVja2luZwoJZm9yIGJhY2tzbGFzaGVzLgoJKGJmZF9ic2RfdHJ1bmNhdGVfYXJuYW1lKTogTGlrZXdpc2UuCgkoYmZkX2dudV90cnVuY2F0ZV9hcm5hbWUpOiBMaWtld2lzZS4KCjIwMDAtMDYtMjAgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX29ial90ZGF0YSk6IERlZmluZSBwZXIgQkZEIElyaXggNSB2aXJ0dWFsCglzZWN0aW9ucyBlbGZfe3RleHQsZGF0YX1fe3NlY3Rpb24sc3ltYm9sfS4KCSogZWxmMzItbWlwcy5jOiBtaXBzX2VsZl97dGV4dCxkYXRhfV97c2VjdGlvbixzeW1ib2x9eyxfcHRyfTogUmVtb3ZlLgoJKF9iZmRfbWlwc19lbGZfaGlkZV9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wpOiBNYXAgdG8gdGhlIG5ldyBmdW5jdGlvbi4KCShfYmZkX21pcHNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IENoYW5nZSB0byB1c2UgbmV3IHBlciBCRkQKCWRlZmluaXRpb25zIG9mIG1pcHNfZWxmX3t0ZXh0LGRhdGF9X3tzZWN0aW9uLHN5bWJvbH0uCgkobWlwc19lbGZfbG9jYWxfcmVsb2NhdGlvbl9wKTogVHJ5IHRvIGZpbmQgdGhlIGRpcmVjdCBzeW1ib2wKCWJhc2VkIG9uIG5ldyBjaGVja19mb3JjZWQgYXJndW1lbnQuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBVc2UgbmV3IHZlcnNpb24gb2YKCW1pcHNfZWxmX2xvY2FsX3JlbG9jYXRpb25fcC4KCShtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkobWlwc19lbGZfc29ydF9oYXNoX3RhYmxlKTogT25seSBhc3NlcnQgdGhhdCBoYXZlIGVub3VnaCBHT1QKCXNwYWNlLgoJKG1pcHNfZWxmX2dvdDE2X2VudHJ5KTogTWF0Y2ggYWxsIDMyIGJpdHMgdG8gdGhlIGV4aXN0aW5nIEdPVAoJZW50cnkgaWYgdGhlIHJlbG9jYXRpb24gYmFzZWQgb24gdGhlIG5ldyBleHRlcm5hbCBhcmd1bWVudC4KCShtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19yZWxvY2F0aW9uKTogQXNzZXJ0IHRoYXQgd2UgaGF2ZSBhCglzZWN0aW9uIGNvbnRlbnRzIGFsbG9jYXRlZCB3aGVyZSB3ZSBjYW4gc3dhcCBvdXQgdGhlIGR5bmFtaWMKCXJlbG9jYXRpb25zLgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogRmluZCB0aGUgcmVhbCBoYXNoLXRhYmxlIGVudHJ5Cgljb3JyZWN0bHkgYnkgdXNpbmcgaC0+cm9vdC5yb290LnR5cGUuICBPbmx5IGNyZWF0ZSBhIGR5bmFtaWMKCXJlbG9jYXRpb24gZW50cnkgaWYgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIGEgc2hhcmVkIGxpYnJhcnkuCglDcmVhdGUgYW4gZXh0ZXJuYWwgR09UIGVudHJ5IGZvciB0aGUgR09UMTYgcmVsb2NhdGlvbiBpZiB0aGUKCXN5bWJvbCB3YXMgZm9yY2VkIGxvY2FsLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgYXNzZXJ0IHRoZXJlIGlzIGEKCWR5bmFtaWMgaW5kZXggaWYgdGhlIHN5bWJvbCB3YXMgZm9yY2VkIGxvY2FsLgoKMjAwMC0wNi0yMCAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoKCSogZWxmMzItbWlwcy5jOiBGaXggdHlwb3MgaW4gY29tbWVudHMuCgoyMDAwLTA2LTE5ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIHJzNjAwMC1jb3JlLmM6IFdyYXAgZGVmaW5pdGlvbiBvZiBgdW5pb24gVm1JbmZvJyB3aXRoaW4gI2lmZGVmCglDT1JFX1ZFUlNJT05fMS4KCjIwMDAtMDYtMTggIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogTWFrZWZpbGUuaW4sIGJmZC1pbjIuaCwgbGliYmZkLmgsIGNvbmZpZ3VyZTogUmVidWlsZC4KCSogTWFrZWZpbGUuYW0gKEFMTF9NQUNISU5FUywgQUxMX01BQ0hJTkVTX0NGSUxFUywgQkZEMzJfQkFDS0VORFMsCglCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgNjhoYzEyLCA2OGhjMTEgZmlsZXMuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX202OGhjMTJfdmVjKTogUmVjb2duaXplLgoJKGJmZF9lbGYzMl9tNjhoYzExX3ZlYyk6IExpa2V3aXNlLgoJKiBjb25maWcuYmZkICh0YXJnX2NwdSk6IFJlY29nbml6ZSA2OGhjMTIgYW5kIDY4aGMxMS4KCVN1cHBvcnRzIDY4aGMxMSAmIDY4aGMxMiAgYXQgdGhlIHNhbWUgdGltZS4KCSogdGFyZ2V0cy5jIChiZmRfZWxmMzJfbTY4aGMxMl92ZWMpOiBEZWNsYXJlIGFuZCBwdXQgaW4KCWJmZF90YXJnZXRfdmVjdG9yLgoJKGJmZF9lbGYzMl9tNjhoYzExX3ZlYyk6IExpa2V3aXNlLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogUmVjb2duaXplIGJmZF9hcmNoX202OGhjMTIgYW5kIDY4aGMxMS4KCSogYXJjaHVyZXMuYyAoYmZkX202OGhjMTJfYXJjaCk6IERlZmluZSBhbmQgcmVnaXN0ZXIgaW4gZ2xvYmFsIGxpc3QKCShiZmRfbTY4aGMxMV9hcmNoKTogTGlrZXdpc2UuCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19NNjhIQzExX0hJOCwgQkZEX1JFTE9DX002OEhDMTFfTE84LAoJQkZEX1JFTE9DX002OEhDMTFfM0IpOiBEZWZpbmUuCgkqIGNwdS1tNjhoYzEyLmMsIGVsZjMyLW02OGhjMTIuYzogTmV3IGZpbGVzIGZvciA2OGhjMTIgc3VwcG9ydC4KCSogY3B1LW02OGhjMTEuYywgZWxmMzItbTY4aGMxMS5jOiBOZXcgZmlsZXMgZm9yIDY4aGMxMSBzdXBwb3J0LgoKMjAwMC0wNi0xOCAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGZfYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGluZm8gYXJndW1lbnQgdG8KCWVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sLgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjY0LWlhNjQuYyAoZWxmNjRfaWE2NF9oYXNoX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogTGlrZXdpc2UuCgkoZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uKTogTGlrZXdpc2UuCgoyMDAwLTA2LTE4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb2ZmLWkzODYuYyAoY29mZl9pMzg2X3JlbG9jKTogRG9uJ3QgcmV0dXJuIGluIGNhc2Ugb2YKCW91dHB1dF9iZmQgPT0gKGJmZCAqKSBOVUxMIGlmIENPRkZfV0lUSF9QRSBpcyBkZWZpbmVkLgoJQ29tcGVuc2F0ZSBQRSByZWxvY2F0aW9ucyB3aGVuIGxpbmtpbmcgd2l0aCBub24tUEUgb2JqZWN0CglmaWxlcyB0byBnZW5lcmF0ZSBhIG5vbi1QRSBleGVjdXRhYmxlLgoKMjAwMC0wNi0xNyAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogRXhwbGljaXRseSB3cml0ZQoJR09UIGVudHJpZXMgaWYgd2UncmUgZG9pbmcgYSBzdGF0aWMgbGluayBvciAtQnN5bWJvbGljIGxpbmsuCgoyMDAwLTA2LTE1ICBVbGYgQ2FybHNzb24gIDx1bGZjQGVuZ3Iuc2dpLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRqdXN0X3JlbG9jcyk6IENoZWNrIGZvciBhbmQgY2FsbCBiYWNrZW5kCglzcGVjaWZpZmljIHN3YXBfcmVsb2Nfe2luLG91dH0gYW5kIHN3YXBfcmVsb2NhX3tpbixvdXR9IGlmCglhdmFpbGFibGUuCgkoZWxmX2xpbmtfb3V0cHV0X3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZl9yZWxvY19saW5rX29yZGVyKTogTGlrZXdpc2UuCgoyMDAwLTA2LTE2ICBOaWNob2xhcyBEdWZmZWsgIDxuc2RAcmVkaGF0LmNvbT4KCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6ICNkZWZpbmUgY29uc3RhbnRzIGZvcgoJUG93ZXJQYyBhbmQgUlM2MDAwIG1hY2hpbmUgbnVtYmVycy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6ICNpZmRlZiBYQ09GRjY0LCBzZXQgYXJjaAoJdG8gYmZkX2FyY2hfcG93ZXJwYyBpbnN0ZWFkIG9mIGJmZF9hcmNoX3JzNjAwMC4gIFJlZmVyIHRvIFBvd2VyUGMKCWFuZCBSUzYwMDAgbWFjaGluZSBudW1iZXJzIHVzaW5nICNkZWZpbmVkIGNvbnN0YW50cyBmcm9tCglhcmNodXJlcy5jLgoJKiBjcHUtcG93ZXJwYy5jIChhcmNoX2luZm9fc3RydWN0KTogUmVmZXIgdG8gUG93ZXJQYyBhbmQgUlM2MDAwCgltYWNoaW5lIG51bWJlcnMgdXNpbmcgI2RlZmluZWQgY29uc3RhbnRzIGZyb20gYXJjaHVyZXMuYy4gIEFkZAoJZW50cmllcyBmb3IgRUM2MDNlLCA2MzAsIEEzNSwgUlM2NElJLCBSUzY0SUlJLCA3NDAwLiAgU3BlY2lmeQoJNjQtYml0IHdvcmRzIGluIDYyMCBlbnRyeS4KCSogY3B1LXJzNjAwMC5jIChhcmNoX2luZm9fc3RydWN0KTogQ3JlYXRlIHdpdGggZW50cmllcyBmb3IgUlMxLAoJUlNDLCBhbmQgUlMyLgoJKGJmZF9yczYwMDBfYXJjaCk6IENoYW5nZSBkZWZhdWx0IG1hY2hpbmUgdG8gMCAoYmZkX21hY2hfcnM2aykuCgoyMDAwLTA2LTE2ICBOaWNob2xhcyBEdWZmZWsgIDxuc2RAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfbWtvYmplY3RfaG9vayk6IFNldCB4Y29mZl90ZGF0YS54Y29mZjY0LgoJKiBsaWJjb2ZmLWluLmggKHN0cnVjdCB4Y29mZl90ZGF0YSk6IERlZmluZSB4Y29mZjY0IGZpZWxkLgoJKiBsaWJjb2ZmLmggKHN0cnVjdCB4Y29mZl90ZGF0YSk6IERlZmluZSB4Y29mZjY0IGZpZWxkLgoKMjAwMC0wNi0xNiAgTmljaG9sYXMgRHVmZmVrICA8bnNkQHJlZGhhdC5jb20+CgoJKiBiZmQtaW4uaCAoYmZkX2ZhbWlseV9jb2ZmKTogRGVmaW5lLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmZnZW4uYyAoY29mZl9jb3VudF9saW5lbnVtYmVycywgY29mZl9zeW1ib2xfZnJvbSwKCWNvZmZfZmluZF9uZWFyZXN0X2xpbmUpOiBDaGVjayBDT0ZGbmVzcyB1c2luZyBiZmRfZmFtaWx5X2NvZmYoKQoJaW5zdGVhZCBvZiBiZmRfdGFyZ2V0X2NvZmZfZmxhdm91ci4KCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2ZpbmFsX2xpbmspOiBMaWtld2lzZS4KCSogY3B1LW5zMzJrLmMgKGRvX25zMzJrX3JlbG9jKTogRG9uJ3Qgc3RyY21wKCkgdGFyZ2V0IG5hbWUgdG8KCWV4Y2x1ZGUgWENPRkYgZmlsZXMuCgkqIHJlbG9jLmMgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24sIGJmZF9pbnN0YWxsX3JlbG9jYXRpb24pOgoJTGlrZXdpc2UuCgkqIHRhcmdldHMuYyAoZW51bSBiZmRfZmxhdm91cik6IEFkZCBiZmRfdGFyZ2V0X3hjb2ZmX2ZsYXZvdXIuCgkqIHhjb2ZmLXRhcmdldC5oIChUQVJHRVRfU1lNKTogVXNlIGJmZF90YXJnZXRfeGNvZmZfZmxhdm91ci4KCSogeGNvZmZsaW5rLmMgKFhDT0ZGX1hWRUNQKTogRGVsZXRlLgoJKGJmZF94Y29mZl9saW5rX3JlY29yZF9zZXQsIGJmZF94Y29mZl9pbXBvcnRfc3ltYm9sLAoJYmZkX3hjb2ZmX2V4cG9ydF9zeW1ib2wsIGJmZF94Y29mZl9saW5rX2NvdW50X3JlbG9jLAoJYmZkX3hjb2ZmX3JlY29yZF9saW5rX2Fzc2lnbm1lbnQsCgliZmRfeGNvZmZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogUmVwbGFjZSBYQ09GRl9YVkVDUCgpIHdpdGgKCWNoZWNrIGZvciBiZmRfdGFyZ2V0X3hjb2ZmX2ZsYXZvdXIuCgoyMDAwLTA2LTE2ICBOaWNob2xhcyBEdWZmZWsgIDxuc2RAcmVkaGF0LmNvbT4KCgkqIHJzNjAwMC1jb3JlLmM6IFN1cHBvcnQgNjQtYml0IGNvcmUgZmlsZXMsIHN1cHBvcnQgcHJlLTQuMyBjb3JlCglmaWxlcyBvbiBBSVggNC4zLgoJKHJlYWRfaGRyKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMGNvZmZfY29yZV9wKTogU3RvcmUgbXN0c2F2ZSBvciBfX2NvbnRleHQ2NCBzdHJ1Y3QgaW5zdGVhZAoJb2YgdHJ5aW5nIHRvIGV4dHJhY3QgaW5kaXZpZHVhbCByZWdpc3RlcnMuICBTZXQgYWJmZC0+YXJjaF9pbmZvCgl0byBtYXRjaCB0aGUgYXJjaGl0ZWN0dXJlIHRoYXQgY3JlYXRlZCB0aGUgY29yZSBmaWxlLgoJKHJzNjAwMGNvZmZfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWxldGUuCgkqIHhjb2ZmLXRhcmdldC5oIChyczYwMDBjb2ZmX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlLgoKMjAwMC0wNi0xNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogdm1zLW1pc2MuYyAoX2JmZF92bXNfbmV4dF9yZWNvcmQpOiBSZXR1cm4gLTEgaWYgUFJJVih2bXNfcmVjKQoJaXMgTlVMTC4KCjIwMDAtMDYtMTMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDYtMTMgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHBlaWNvZGUuaCAocGVfSUxGX29iamVjdF9wKTogVXNlIFRBUkdFVF9MSVRUTEVfU1lNIGluc3RlYWQgb2YKCWFybXBlaV9saXR0bGVfdmVjLgoKMjAwMC0wNi0wOCAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFVwZGF0ZSB0byBzaG93IHRoaXMgaXMgdGhlIENWUyBtYWlubGluZS4KCjIwMDAtMDYtMDcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1kMTB2LmM6IEluY2x1ZGUgZWxmL2QxMHYuaAoJKGVudW0gcmVsb2NfdHlwZSk6IERlbGV0ZS4KCSogZWxmMzItZDMwdi5jOiBJbmNsdWRlIGVsZi9kMzB2LmgKCShlbnVtIHJlbG9jX3R5cGUpOiBEZWxldGUuCgoJKiBNYWtlZmlsZS5hbTogUnVuICJtYWtlIGRlcC1hbSIgdG8gcmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaG93dG9fdGFibGUpOiBSZW1vdmUgRU1QVFlfSE9XVE9zLgoJKGVsZjMyX2kzODZfdnRpbmhlcml0X2hvd3RvLCBlbGYzMl9pMzg2X3Z0ZW50cnlfaG93dG8pOiBEZWxldGUgYW5kCgltb3ZlIEhPV1RPcyBpbnRvIGVsZl9ob3d0b190YWJsZS4KCShSXzM4Nl9zdGFuZGFyZCwgUl8zODZfZXh0X29mZnNldCk6IERlZmluZS4KCShSXzM4Nl9leHQsIFJfMzg2X3Z0X29mZnNldCwgUl8zODZfdnQpOiBEZWZpbmUuCgkoZWxmX2kzODZfcmVsb2NfdHlwZV9sb29rdXApOiBNb2RpZnkgY2FsY3VsYXRpb24gb2YgaW5kZXggaW50bwoJZWxmX2hvd3RvX3RhYmxlIHNpbmNlIHdlJ3ZlIHJlbW92ZWQgdGhlIHBhZGRpbmcuCgkoZWxmX2kzODZfaW5mb190b19ob3d0b19yZWwpOiBMaWtld2lzZS4KCShlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA2LTA2ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmX2dyb2tfcHJfc3RhdHVzKTogRWxpbWluYXRlIHJlZmVyZW5jZSB0byBwcmdyZWdzZXRfdC4KCjIwMDAtMDYtMDUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBEb24ndCBmbGFnCglhbiBlcnJvciB3aGVuIHNlZWluZyBhbiB1bmRlZmluZWQgc3ltYm9sIHdpdGggaGlkZGVuL2ludGVybmFsCglhdHRyaWJ1dGUuIEl0IGlzIGhhbmRsZWQgaW4gKl9yZWxvY2F0ZV9zZWN0aW9uICgpLgoKMjAwMC0wNi0wNSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfZml4X3N5bWJvbF9mbGFncyk6IEZvbGxvdyB0aGUgbGluayBmb3IgdGhlCglpbmRpcmVjdCBzeW1ib2wgZm9yIHRoZSBFTEZfTElOS19OT05fRUxGIGJpdC4KCShlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogRG9uJ3Qgb3V0cHV0IHRoZSBpbmRpcmVjdCBzeW1ib2wgZXZlbgoJaWYgdGhlIEVMRl9MSU5LX05PTl9FTEYgYml0IGlzIHNldC4KCjIwMDAtMDYtMDEgIEouVC4gQ29ua2xpbiAgPGp0Y0ByZWRiYWNrLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04Ni0qLW5ldGJzZGVsZiopOiBOZXcgdGFyZ2V0LgoJKGlbMzQ1Nl04Ni0qLW5ldGJzZGFvdXQqKTogTmV3IHRhcmdldC4KCShpWzM0NTZdODYtKi1uZXRic2QqKTogQWRkIGJmZF9lbGYzMl9pMzg2X3ZlYyB0byB0YXJnX3NlbHZlY3MuCgkoaVszNDU2XTg2LSotb3BlbmJzZCopOiBMaWtld2lzZS4KCjIwMDAtMDUtMzAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHRyYWQtY29yZS5jOiBGcm9tIGhwdXgtY29yZS5jLCBpbmNsdWRlIDxkaXJlbnQuaD4gb3IKCTxzeXMvbmRpci5oPiB3aGVuIHBvc3NpYmxlLgoKMjAwMC0wNS0zMSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBlbGYuYyAoX2JmZF9lbGZfc2x1cnBfdmVyc2lvbl90YWJsZXMpOiBDb3JyZWN0IHJlYWRpbmcgb2YgdmVyc2lvbgoJZGVmaW5pdGlvbnMuICBXZSBtdXN0IG5vdCBhc3N1bWUgdGhleSBhcmUgc29ydGVkIGluIHRoZSBmaWxlCglhY2NvcmRpbmcgdG8gdGhlaXIgaW5kZXggbnVtYmVycy4KCjIwMDAtMDUtMzEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYtaHBwYS5oOiAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IFVzZSBlX3JzZWwgZmllbGQKCXNlbGVjdG9yIGZvciBSX1BBUklTQ19QQ1JFTDE3Ui4gIFJfUEFSSVNDX0RJUjE3UiBhbmQKCVJfUEFSSVNDX0RJUjE3RiBhcmUgZm9yIGFic29sdXRlIGJyYW5jaGVzOyBIYW5kbGUgdGhlbSBhcyBzdWNoLgoKMjAwMC0wNS0zMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNwdS1pOTYwLmMgKHNjYW5fOTYwX21hY2gpOiBBY2NlcHQgODA5NjBLQSwgODA5NjBLQiwKCTgwOTYwQ0EsIDgwOTYwTUMgYXMgdmFsaWQgbWFjaGluZSBuYW1lcy4KCjIwMDAtMDUtMzAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBDbGVhciB0aGUKCXZpc2liaWxpdHkgYml0cyBpZiB0aGUgc3ltYm9sIGlzIHVuZGVmaW5lZC4gQ29ycmVjdGx5IGhhbmRsZQoJd2VhayB1bmRlZmluZWQgc3ltYm9scyB3aXRoIGhpZGRlbiBhbmQgaW50ZXJuYWwgYXR0cmlidXRlcy4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQWx3YXlzIHR1cm4gdGhlCglzeW1ib2wgaW50byBsb2NhbCBpZiBpdCBoYXMgdGhlIGhpZGRlbiBvciBpbnRlcm5hbCBhdHRyaWJ1dGUuCgoyMDAwLTA1LTI5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogcHBjYm9vdC5jOiAgQWRkIHBhY2tlZCBhdHRyaWJ1dGUgaWYgY29tcGlsaW5nIHdpdGggR0NDLgoKMjAwMC0wNS0yOSAgQW5hdG9seSBWb3JvYmV5ICA8bWVsbG9uQHBvYm94LmNvbT4KCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdCk6IEluaXRpYWxpemUgZHlubG9jYWwuCgoyMDAwLTA1LTI2ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmY29yZV9ncm9rX3Byc3RhdHVzLCBlbGZjb3JlX2dyb2tfcHN0YXR1cywKCWVsZmNvcmVfZ3Jva19wc2luZm8pOiBBZGQgY29kZSB0byBhbGxvdyBkZWJ1Z2dpbmcgYSAzMi1iaXQKCWNvcmVmaWxlIG9uIGEgNjQtYml0IChTcGFyYyBTb2xhcmlzKSBob3N0LiAgQWxzbyBjbGVhbiB1cAoJYSBmZXcgb2xkIGNvbW1lbnRzLgoKMjAwMC0wNS0yNiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIE1ha2VmaWxlLmFtOiBVcGRhdGUgZGVwZW5kZW5jaWVzIHdpdGggIm1ha2UgZGVwLWFtIgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIHN5c2RlcC5oIChnZXR0ZXh0LCBkZ2V0dGV4dCwgZGNnZXR0ZXh0LCB0ZXh0ZG9tYWluLAoJYmluZHRleHRkb21haW4pOiBSZXBsYWNlIGRlZmluZXMgd2l0aCB0aG9zZSBmcm9tIGludGwvbGliZ2V0dGV4dC5oCgl0byBxdWlldGVuIGdjYyB3YXJuaW5ncy4KCjIwMDAtMDUtMjYgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBhb3V0eC5oIChmaW5kX25lYXJlc3RfbGluZSk6IFVzZSBJU19BQlNPTFVURV9QQVRILgoKCSogYXJjaGl2ZS5jIChub3JtYWxpemUsIGJmZF9ic2RfdHJ1bmNhdGVfYXJuYW1lLAoJYmZkX2dudV90cnVuY2F0ZV9hcm5hbWUpIFtIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTV06IFN1cHBvcnQKCWZpbGUgbmFtZXMgd2l0aCBiYWNrc2xhc2hlcy4KCgkqIGNhY2hlLmMgKGJmZF9vcGVuX2ZpbGUpIFtfX01TRE9TX19dOiBEb24ndCB1bmxpbmsgdGhlIGZpbGUKCWJlZm9yZSBvcGVuaW5nIGl0LgoKCSogc3lzZGVwLmg6IEluY2x1ZGUgZmlsZW5hbWVzLmguCgoyMDAwLTA1LTI2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogb3BuY2xzLmMgKGJmZF9jbG9zZV9hbGxfZG9uZSk6IE1hc2sgZmlsZSBwZXJtcyB3aXRoIDA3Nzcgbm90IDB4Nzc3LgoKMjAwMC0wNS0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxheF9zZWN0aW9uKTogTmV3LgoJKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBPcHRpbWl6ZSB0YWlsIGNhbGwgaW50byBicmFuY2ggYWx3YXlzCglpZiBwb3NzaWJsZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX3NwYXJjX3JlbGF4X3NlY3Rpb24pOiBOZXcuCgoyMDAwLTA1LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LXNwYXJjLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBmdW5jdGlvbiBwYXJhbWV0ZXJzLgoJUmVtb3ZlIHVudXN1ZWQgdmFyaWFibGVzLgoJKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDaGFuZ2Ugcl9zeW1uZHggdHlwZSB0byB1bnNpZ25lZCBsb25nLgoJKHNwYXJjNjRfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBGaXggc2hhcmVkIGxpYnJhcnkgY2FzZSBmcm9tCglwcmV2aW91cyBmaXgsIHNvIHRoYXQgc2hhcmVkIGxpYnMgcmVhbGx5IGRvbid0IGluZmx1ZW5jZSB0YXJnZXRzCglleHRlbnNpb24gbWFzayBhbmQgbWVtb3J5IG1vZGVsLgoKMjAwMC0wNS0yMyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IENoZWNrCgloLT5yb290Lm90aGVyIG5vdCBoLT5vdGhlci4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBhIHR5cG8uCgoyMDAwLTA1LTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBhbGxvdyB0aGUKCXVuZGVmaW5lZCBzeW1ib2wgd2l0aCB0aGUgbm9uLWRlZmF1bHQgdmlzaWJpbGl0eSBhdHRyaWJ1dGVzLgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wNS0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWlhNjQuYyAoaWE2NF9ob3d0b190YWJsZSk6IEFkZCBQQ1JFTDYwQiwgUENSRUwyMUJJLAoJUENSRUwyMiwgUENSRUw2NEkuICBaZXJvIHNpemUgb2Ygc3BlY2lhbCByZWxvY3MuCgkoZWxmNjRfaWE2NF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKFVTRV9CUkwsIG9vcl9icmwsIG9vcl9pcCk6IE5ldy4KCShlbGY2NF9pYTY0X3JlbGF4X3NlY3Rpb24pOiBOZXcuCgkoZWxmNjRfaWE2NF9jaGVja19yZWxvY3MpOiBIYW5kbGUgUENSRUw2MEIsIFBDUkVMMjIsIFBDUkVMNjRJLgoJKGVsZjY0X2lhNjRfaW5zdGFsbF92YWx1ZSk6IExpa2V3aXNlLCBwbHVzIFBDUkVMMjFCSS4KCShlbGY2NF9pYTY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShiZmRfZWxmNjRfYmZkX3JlbGF4X3NlY3Rpb24pOiBOZXcuCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19JQTY0X1BDUkVMMjFCSSk6IE5ldy4KCShCRkRfUkVMT0NfSUE2NF97UENSRUwyMixQQ1JFTDYwQixQQ1JFTDY0SX0pOiBOZXcuCgkqIGJmZC1pbjIuaCwgbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIDogQWRkIHBlaWdlbi5sbyB0byBNSVBTIFBFIHRhcmdldHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMjIgIE1vbWNoaWwgVmVsaWtvdiAgPHZlbGNvQGZhZGF0YS5iZz4KCgkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfdmVyaWZ5X2VuZGlhbl9tYXRjaCk6IENvbXBhcmUgZW5kaWFuZXNzCglvbmx5IGlmIGl0IGlzIGtub3duIGZvciBib3RoIGlucHV0IGFuZCBvdXRwdXQgYmZkcy4gU2VwYXJhdGUKCWVycm9yIG1lc3NhZ2Ugc3RyaW5ncyBhcyBpbiBzb21lIGxhbmd1YWdlcywgaXQgbWF5IGJlIG5lY2Vzc2FyeQoJdG8gY2hhbmdlIG1vcmUgdGhhbiBvbmUgcGxhY2UgaW4gdGhlIHN0cmluZyB0byBjaGFuZ2UgYmV0d2VlbgoJJ2JpZycgYW5kICdsaXR0bGUnLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IFJlbW92ZSBpbmxpbmUKCWVuZGlhbmVzcyBjaGVja3MsIGNhbGwgX2JmZF9nZW5lcmljX3ZlcmlmeV9lbmRpYW5fbWF0Y2goKSBpbnN0ZWFkLgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4KCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4gVmVyaWZ5CgllbmRpYW5lc3MgYmVmb3JlIGNoZWNraW5nIGJmZCBmbGF2b3Vycy4KCjIwMDAtMDUtMjIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IENsZWFyIHRoZSB2aXNpYmlsaXR5CglmaWVsZCBmb3Igc3ltYm9scyBub3QgZGVmaW5lZCBsb2NhbGx5LgoKMjAwMC0wNS0xOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGxpYmhwcGEuaCAocmVfYXNzZW1ibGVfMywgcmVfYXNzZW1ibGVfMTIsIHJlX2Fzc2VtYmxlXzE2LAoJcmVfYXNzZW1ibGVfMTcsIHJlX2Fzc2VtYmxlXzIxLCByZV9hc3NlbWJsZV8yMik6IERvbid0IG1hc2sgaW5zbi4KCShocHBhX3JlYnVpbGRfaW5zbik6IE1hc2sgaW1tZWRpYXRlIGJpdHMgaGVyZSBpbnN0ZWFkLgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogTWFzayBoZXJlIHRvby4KCjIwMDAtMDUtMTggIE1vbWNoaWwgVmVsaWtvdiA8dmVsY29AZmFkYXRhLmJnPgoKCSogZWxmbGluay5oIChlbGZfYmZkX2ZpbmFsX2xpbmssIGVsZl9saW5rX2lucHV0X2JmZCk6IFdoZW4gZW1pdGluZwoJcmVsb2NzIGZvciBhbiBleGVjdXRhYmxlLCBlbnN1cmUgdGhhdCB0aGV5IGFyZSB2aXJ0dWFsIGFkZHJlc3Nlcy4KCjIwMDAtMDUtMTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy5iZmQgKGhwcGEqNjQqLSotaHB1eDExKik6IE5ldyB0YXJnZXQgdHJpcGxldC4KCjIwMDAtMDUtMTcgIFMuIEJoYXJhZHdhaiBZYWRhdmFsbGkgIDxzYnlAc2NydWdzLmxrZy5kZWMuY29tPgoJICAgIFJpY2sgR29ydG9uCSAgICAgICAgICAgIDxnb3J0b25Ac2NydWdzLmxrZy5kZWMuY29tPgoKCSogZWxmbGluay5oOiBBZGQgZW1pdHJlbG9jYXRpb25zIHN1cHBvcnQ6IHdoZW4gZW5hYmxlZCwgcmVsb2NhdGlvbgoJaW5mb3JtYXRpb24gYW5kIHJlbG9jYXRpb24gc2VjdGlvbnMgYXJlIHB1dCBpbnRvIGZpbmFsIG91dHB1dAoJZXhlY3V0YWJsZXMuICBJZiB0aGUgZW1pdHJlbG9jYXRpb25zIGZsYWcgaXMgc2V0LCBkbyB0aGUgZm9sbG93aW5nOgoJKGVsZl9iZmRfZmluYWxfbGluayk6IEVtaXQgcmVsb2NhdGlvbiBzZWN0aW9ucy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBDb21wdXRlIHJlbG9jYXRpb24gc2VjdGlvbiBjb250ZW50cy4KCShlbGZfZ2Nfc2VjdGlvbnMpOiBEb24ndCBjbGVhbiByZWxvY2F0aW9uIHNlY3Rpb25zLgoKMjAwMC0wNS0xNiAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBzb20uYyAoc29tX2RlY29kZV9zeW1jbGFzcyk6ICBSZWNvZ25pemUgd2VhayBzeW1ib2xzLgoKMjAwMC0wNS0xNiAgU3phYm9sY3MgU3pha2Fjc2l0cyA8c3pha2FARi1TZWN1cmUuY29tPgoKCSogcGVpZ2VuLmMgKHBlX3ByaW50X2lkYXRhKTogVW5kbyBwYXJ0IG9mIDIwMDAtMDUtMTIgY2hhbmdlIHRoYXQKCXJlYWQgaWRhdGEgc2VjdGlvbiBvbmx5IGZyb20gZGF0YW9mZi4KCShwZV9wcmludF9lZGF0YSk6IENvcnJlY3RseSBjaGVjayBmb3IgdmFsaWQgZWF0X21lbWJlci4KCjIwMDAtMDUtMTYgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxheF9kZWxldGVfYnl0ZXMpOiBIYW5kbGUgUl9TSF9TV0lUQ0g4LgoKMjAwMC0wNS0xNCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy5iZmQgKGFybWViLSotZWxmLCBhcm0qYi0qLWxpbnV4LWdudSopOiBOZXcgdGFyZ2V0cy4KCjIwMDAtMDUtMTIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogI2lmZGVmIEJGRDY0IHJzNjAwMGNvZmY2NF92ZWMKCgkqIHBlaWdlbi5jIChwZV9wcmludF9pZGF0YSk6IExvb2sgZm9yIC5pZGF0YSBzZWN0aW9uIGFuZCBwcmludAoJaW5mbyBldmVuIGlmIGRhdGEgZGlyZWN0b3J5IGhhcyB6ZXJvIGVudHJpZXMuICBSZWFkIGlkYXRhIHNlY3Rpb24KCXN0YXJ0aW5nIGZyb20gZGF0YW9mZiwgYW5kIGFkanVzdCBhbGwgZGF0YSBvZmZzZXRzIHRvIHN1aXQuICBDYXN0CglhbGwgYmZkX3ZtYSB2YXJzIHRvIHVuc2lnbmVkIGxvbmcgYmVmb3JlIHBhc3NpbmcgdG8gZnByaW50Zi4KCSogcGVpZ2VuLmMgKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LCBsb29rIGZvciAuZWRhdGEgc2VjdGlvbgoJYW5kIHByaW50IGluZm8gZXZlbiBpZiBkYXRhIGRpcmVjdG9yeSBoYXMgemVybyBlbnRyaWVzLiAgQ2FzdAoJYWxsIGJmZF92bWEgdmFycyB0byB1bnNpZ25lZCBsb25nIGJlZm9yZSBwYXNzaW5nIHRvIGZwcmludGYuCgoJRnJvbSBTemFib2xjcyBTemFrYWNzaXRzIDxzemFrYUBGLVNlY3VyZS5jb20+CgkqIHBlaWdlbi5jIChwZV9wcmludF9pZGF0YSk6IFVzZSBiZmRfc2VjdGlvbl9zaXplIHJhdGhlciB0aGFuIGRhdGEKCWRpcmVjdG9yeSBzaXplIHdoaWNoIG1heSBiZSBib2d1cy4KCSogcGVpZ2VuLmMgKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LgoKMjAwMC0wNS0wOSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZi5jIChiZmRfc2VjdGlvbl9mcm9tX3NoZHIpOiBEb24ndCBzZXQgdXNlX3JlbGFfcCBpZiByZWxhCglzZWN0aW9uIGlzIGVtcHR5LgoJKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsbG93IGZvciBzcGFjZSBwb3NzaWJseSB0YWtlbiB1cCBieSBlbGYKCWhlYWRlcnMgd2hlbiBjYWxjdWxhdGluZyBzZWdtZW50IHBoeXNpY2FsIGFkZHJlc3MgZnJvbSBsbWEuCgoyMDAwLTA1LTA4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogdmVyc2Fkb3MuYyAodmVyc2Fkb3Nfc2Nhbik6IEluaXQgc3RyaW5nbGVuIGFuZCBwYXNzXzJfZG9uZS4KCgkqIHRyYWQtY29yZS5jICh0cmFkX3VuaXhfY29yZV9maWxlX3ApOiBSZXR1cm4KCWJmZF9lcnJvcl93cm9uZ19mb3JtYXQgcmF0aGVyIHRoYW4gYmZkX2Vycm9yX2ZpbGVfdHJ1bmNhdGVkLgoKCSogcGVpZ2VuLmMgKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9vdXQpOiBQYXNzIEltYWdlQmFzZSB0bwoJYWRkX2RhdGFfZW50cnkuICBEYXRhRGlyZWN0b3J5IHZpcnR1YWwgYWRkcmVzcyBpcyByZWxhdGl2ZS4KCShwZV9wcmludF9pZGF0YSk6IEFjY291bnQgZm9yIHJlbGF0aXZlIERhdGFEaXJlY3RvcnkgdmlydHVhbAoJYWRkcmVzc2VzLiAgRG9uJ3QgdHJhc2ggZGF0YXNpemUgaW5zaWRlIFBPV0VSUENfTEVfUEUgY29kZS4KCShwZV9wcmludF9lZGF0YSk6IFNpbWlsYXJseS4KCglGcm9tIFN6YWJvbGNzIFN6YWthY3NpdHMgPHN6YWthQEYtU2VjdXJlLmNvbT4KCSogcGVpZ2VuLmMgKGRpcl9uYW1lcyk6IEFkZCBEZWxheSBJbXBvcnQgRGlyZWN0b3J5LgoJKHBlX3ByaW50X2lkYXRhKTogIEFsd2F5cyBzZWFyY2ggZm9yIGJmZCBzZWN0aW9uIGNvbnRhaW5pbmcKCWlkYXRhIGFkZHJlc3MgcmF0aGVyIHRoYW4gbG9va2luZyB1cCBzZWN0aW9uIG5hbWUuICBQcmludCB0aGlzCglzZWN0aW9uIG5hbWUgcmF0aGVyIHRoYW4gLmlkYXRhLgoJKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LiAgQWxzbyBwcmludCBzb21lIGZpZWxkcyBhcyAlMDhseC4KCShfYmZkX3BlX3ByaW50X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogUHJpbnQgUmVzZXJ2ZWQxIGZpZWxkIGFzCglXaW4zMlZlcnNpb24uCgoyMDAwLTA1LTA1ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIHhjb2ZmLmg6IFJlbmFtZSB0byB4Y29mZi10YXJnZXQuaAoJKiBNYWtlZmlsZS5hbTogQ2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgeGNvZmYuaCB0byB4Y29mZi10YXJnZXQuaAoJKiBjb2ZmLXJzNjAwMC5jOiBEaXR0by4KCSogY29mZjY0LXJzNjAwMC5jOiBEaXR0by4KCSogY29mZi1wbWFjLmM6IERpdHRvLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMDUgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2ssIGNvZmZfc2V0X2ZsYWdzKToKCUNoYW5nZSBVODAyVE9DNjRNQUdJQyB0byBVODAzWFRPQ01BR0lDLgoKMjAwMC0wNS0wNCAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHNlYWRvZy5jeWdudXMuY29tPgoKCSogZWxmLmMgKGJmZF9lbGZfZ2V0X2FyY2hfc2l6ZSk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuIDMyIHwgNjQgfCAtMS4KCSogYmZkLWluLmg6IFByb3RvdHlwZSBiZmRfZWxmX2dldF9hcmNoX3NpemUuCgkqIGJmZC1pbjIuaDogUHJvdG90eXBlIGJmZF9lbGZfZ2V0X2FyY2hfc2l6ZS4KCjIwMDAtMDUtMDQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBsaWJocHBhLmggKEhQUEFfUl9DT05TVEFOVCk6IENhc3QgYXJndW1lbnQgdG8gYmZkX3NpZ25lZF92bWEuCgoyMDAwLTA1LTAzICBNYXJ0aW4gdi4gTIH2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBSZXNldCBkeW5pbmR4IGZvcgoJaGlkZGVuIGFuZCBpbnRlcm5hbCBzeW1ib2xzLgoJKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogQ2xlYXIgTkVFRFNfUExUIGZvciBzeW1ib2xzIHdpdGgKCXZpc2liaWxpdHkuCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBEbyBub3QKCWFzc2lnbiBhIFBMVCBvciBHT1QgZW50cnkgdG8gc3ltYm9scyB3aXRoIGhpZGRlbiBhbmQKCWludGVybmFsIHZpc2liaWxpdHkuCgoyMDAwLTA1LTAzICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29mZi1nbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IEFkZCBlbnRyeSBmb3IKCXRoZSAuYnNzIHNlY3Rpb24uCgkqIGNvZmYtc3RnbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IExpa2V3aXNlLgoKMjAwMC0wNS0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IFVzZSBFTEZPU0FCSV9OT05FIGluc3RlYWQgb2YKCUVMRk9TQUJJX1NZU1YuCgoyMDAwLTA1LTAyICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IFJlc3RvcmUgYmZkX2VsZjMyX2hwcGFfdmVjLgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFMpOiBSZXN0b3JlIGVsZjMyLWhwcGEubG8uICBSZWdlbmVyYXRlCglkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0wMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGVmaS1hcHAtaWEzMi5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWZpLWFwcC1pYTMyLmMuCgkoQkZENjRfQkFDS0VORFMpOiBEZWxldGUgY29mZi1pYTY0LmxvLiAgQWRkIGVmaS1hcHAtaWE2NC5sby4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBEZWxldGUgY29mZi1pYTY0LmMuICBBZGQgZWZpLWFwcC1pYTY0LmMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKMjAwMC0wNS0wMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvbmZpZy5iZmQ6IFJlLWVuYWJsZSBlbGYzMi1ocHBhLiAgSXQgbm93IGNvbXBpbGVzLCBldmVuIGlmIGl0Cglkb2Vzbid0IHdvcmsgdmVyeSB3ZWxsLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaW50ZXJuYWxfc2hkcik6IERlZmluZS4KCShlbGZfaHBwYV9mYWtlX3NlY3Rpb25zKTogaGRyIGlzIGVsZl9ocHBhX2ludGVybmFsX3NoZHIuCglTZXQgaGRyLT5zX3R5cGUgdG8gMSBpZiBBUkNIX1NJWkUgPT0gMzIuCgkoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEFkZCBwcm90b3R5cGUuCgkoZWxmX2hwcGFfaW5mb190b19ob3d0byk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2luZm9fdG9faG93dG9fcmVsKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShlbGZfaHBwYV9pc19sb2NhbF9sYWJlbF9uYW1lKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfZmFrZV9zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShlbGZfaHBwYV9ob3d0b190YWJsZSk6IEZ1bGx5IGluaXRpYWxpc2UgYWxsIGVudHJpZXMuCgkoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIGFyZ3MuCgkoZWxmX2hwcGFfaW5mb190b19ob3d0byk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2luZm9fdG9faG93dG9fcmVsKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nLCBlbGZfaHBwYV9hZGRfc3ltYm9sX2hvb2ssCgllbGZfaHBwYV91bm1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMsCgllbGZfaHBwYV9yZW1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMsCgllbGZfaHBwYV9yZWNvcmRfc2VnbWVudF9hZGRycywgZWxmX2hwcGFfZmluYWxfbGluaywKCWVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24sIGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUsCgllbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogQ29tcGlsZSBvbmx5IGlmIEFSQ0hfU0laRSA9PSA2NCB1bnRpbAoJZWxmMzItaHBwYS5jIG1lc3MgaXMgY2xlYW5lZCB1cC4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogTWFrZSBpbnNuIGFuZCByX3R5cGUgdW5zaWduZWQKCWludC4gIERlbGV0ZSByX2ZpZWxkLiAgSW4gY2FzZSBSX1BBUklTQ19QQ1JFTDIxTCwgZG9uJ3Qgc2V0CglyX2ZpZWxkIHRoZW4gY2FsbCBocHBhX2ZpZWxkX2FkanVzdCBpbmxpbmUgZnVuYyB3aXRoIHZhcmlhYmxlCglyX2ZpZWxkIGFyZywgaW5zdGVhZCBjYWxsIGhwcGFfZmllbGRfYWRqdXN0IHdpdGggZml4ZWQgYXJnLgoJSW4gY2FzZSBSX1BBUklTQ19QQ1JFTDIyRiwgZG9uJ3Qgc2V0IHJfZmllbGQuCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IENoYW5nZSBhcmdzIGFuZCByZXR1cm4gdHlwZSB0byB1bnNpZ25lZAoJaW50LiAgQ2FsbCByZV9hc3NlbWJsZV8qIGZ1bmNzIHRvIGRvIHRoZSB3b3JrLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogRG9uJ3QgYXNzdW1lIDMyIGJpdCB3aGVuCglzaWduIGV4dGVuZGluZy4KCgkqIGxpYmhwcGEuaCAoSFBQQV9SX0NPTlNUQU5UKTogRG9uJ3QgYXNzdW1lIDMyIGJpdCB3aGVuIHNpZ24KCWV4dGVuZGluZy4KCShzaWduX2V4dGVuZCk6IE1hc2sgZmlyc3QgYmVmb3JlIHNpZ24gZXh0ZW5kaW5nLgoJKGxvd19zaWduX2V4dGVuZCk6IFJld3JpdGUgd2l0aG91dCBjb25kaXRpb24gZXhwcmVzc2lvbi4KCShvbmVzLCBkaXNfYXNzZW1ibGVfMywgZGlzX2Fzc2VtYmxlXzEyLCBkaXNfYXNzZW1ibGVfMTYsCglkaXNfYXNzZW1ibGVfMTcsIGRpc19hc3NlbWJsZV8yMSwgZGlzX2Fzc2VtYmxlXzIyKTogRGVsZXRlLgoJKGFzc2VtYmxlXzMsIGFzc2VtYmxlXzYsIGFzc2VtYmxlXzEyLCBhc3NlbWJsZV8xNiwgYXNzZW1ibGVfMTZhLAoJYXNzZW1ibGVfMTcsIGFzc2VtYmxlXzIxLCBzaWduX3VuZXh0LCBsb3dfc2lnbl91bmV4dCk6IFJldHVybgoJcmVzdWx0IGFzIGZ1bmN0aW9uIHJldHVybiB2YWx1ZSByYXRoZXIgdGhhbiB0aHJvdWdoIHBvaW50ZXIgYXJnLgoJQWNjZXB0IHVuc2lnbmVkIGludCBhcmdzLCBhbmQgcmV0dXJuIHVuc2lnbmVkIGludC4KCShyZV9hc3NlbWJsZV8zKTogTmV3LiAgQ29tYmluZXMgZnVuY3Rpb24gb2YgZGlzX2Fzc2VtYmxlXzMgd2l0aAoJcmUtYXNzZW1ibHkgb2Ygb3Bjb2RlIGFuZCBpbW1lZGlhdGUuCgkocmVfYXNzZW1ibGVfMTIpOiBMaWtld2lzZS4KCShyZV9hc3NlbWJsZV8xNik6IExpa2V3aXNlLgoJKHJlX2Fzc2VtYmxlXzE3KTogTGlrZXdpc2UuCgkocmVfYXNzZW1ibGVfMjEpOiBMaWtld2lzZS4KCShyZV9hc3NlbWJsZV8yMik6IExpa2V3aXNlLgoJKGhwcGFfZmllbGRfYWRqdXN0KTogUmV3cml0ZSBhbmQgZG9jdW1lbnQsIHBheWluZyBhdHRlbnRpb24gdG8KCXNpemUgb2YgdHlwZXMgYW5kIHNpZ25lZC91bnNpZ25lZCBpc3N1ZXMuCgkoZ2V0X29wY29kZSk6IFNoaWZ0IGJlZm9yZSBtYXNraW5nLgoJKEZETFcpOiBSZW5hbWUgdG8gRkxEVy4KCShiZmRfaHBwYV9pbnNuMmZtdCk6IENoYW5nZSBhcmcgdG8gdW5zaWduZWQgaW50LiAgRGVsZXRlIGZtdC4KCShocHBhX3JlYnVpbGRfaW5zbik6IENoYW5nZSBhcmdzIGFuZCByZXR1cm4gdmFsdWUgdG8gdW5zaWduZWQKCWludC4gIE1ha2UgdXNlIG9mIHJlX2Fzc2VtYmxlXyouICBDb3JyZWN0IGNhc2UgMTEuCgoJKiBkZXAtaW4uc2VkOiBIYW5kbGUgLi4vb3Bjb2Rlcy8uCgkqIE1ha2VmaWxlLmFtIChTT1VSQ0VfSEZJTEVTKTogQWRkIGVsZi1ocHBhLmgsIGVsZjMyLWhwcGEuaCwKCWVsZjY0LWhwcGEuaCwgaHBwYV9zdHVicy5oLCB4Y29mZi5oLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IFJlc3RvcmUgZWxmMzItaHBwYS5jLgoJUmVtb3ZlIGVsZjY0LWhwcGEubG8sIGNwdS1pYTY0LmxvLCBlbGY2NC1pYTY0LmxvLCBlbGZhcm0tb2FiaS5sbywKCWVsZmFybS1uYWJpLmxvIGRlcGVuZGVuY2llcyBvdXRzaWRlIG9mIGF1dG8tZGVwZW5kZW5jeSBhcmVhLgoJUmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlLmluIChUUkFEX0hFQURFUik6IFRlc3Qgbm9uLW51bGwgYmVmb3JlCglBQ19ERUZJTkVfVU5RVU9URUQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIHJlbG9jLmM6IEZpeCBtaXMtc3BlbGxpbmcgaW4gY29tbWVudC4KCjIwMDAtMDUtMDEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb2ZmLXNoLmMgKGJmZF9jb2ZmX3NtYWxsX3N3YXBfdGFibGUpOiBGaXggRnJpIEFwciAyOCBjaGFuZ2UuCgkqIHZtcy5jICh2bXNfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlKTogUmV0dXJuIE5VTEwuCgoyMDAwLTA0LTI4ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggQ29weSBjaGFuZ2VzIG1pc3Rha2VubHkgZG9uZSB0byBsaWJjb2ZmLmggaW4KCTQvMjQvMjAwMCBwYXRjaC4KCjIwMDAtMDQtMjkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGxpYmJmZC1pbi5oOiBDb3JyZWN0bHkgY2hlY2sgR0NDIHZlcnNpb24uCgkqIGJmZC1pbi5oOiBMaWtld2lzZS4KCSogbGliaHBwYS5oOiBMaWtld2lzZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDQtMjggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDY0X0JBQ0tFTkRTLCBCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQKCWNvZmZkdS1yczYwMDAue2xvLGN9LgoJKGNvZmYtcG1hYy5sbywgY29mZi1yczYwMDAubG8sIGNvZmY2NC1yczYwMDAubG8pOiBBZGQgZGVwZW5kZW5jeQoJb24geGNvZmYuaAoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogeGNvZmYuaDogTmV3IGZpbGUuCgkqIGNvZmYtcG1hYy5jOiBVc2UgeGNvZmYuaCBpbnN0ZWFkIG9mIGNvZmYtcnM2MDAwLmMuCgkqIGNvZmYtcnM2MDAwLmM6IE1vdmUgYWxsIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5lcyB0aGF0IGFyZQoJY29tbW9uIHRvIHRoZSB4Y29mZiBiYWNrZW5kcyBpbnRvIHhjb2ZmLmgKCSogY29mZjY0LXJzNjAwMC5jOiBEaXR0bywKCjIwMDAtMDQtMjggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29mZi1taXBzLmMgKG1pcHNfZWNvZmZfYmFja2VuZF9kYXRhKTogIEFkZCBpbml0aWFsaXphdGlvbiBvZgoJX2JmZF9jb2ZmX2ZvcmNlX3N5bW5hbWVzIGluIHN0cmluZ3MgYW5kCglfYmZkX2NvZmZfZGVidWdfc3RyaW5nX3ByZWZpeF9sZW5ndGggdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCgkqIGNvZmYtc2guYzogKGJmZF9jb2ZmX3NtYWxsX3N3YXBfdGFibGUpOiBEaXR0by4KCjIwMDAtMDQtMjggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29mZi1hbHBoYS5jIChhbHBoYV9lY29mZl9iYWNrZW5kX2RhdGEpOiBBZGQgaW5pdGlhbGl6YXRpb24gb2YKCV9iZmRfY29mZl9mb3JjZV9zeW1uYW1lcyBpbiBzdHJpbmdzIGFuZAoJX2JmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgoKMjAwMC0wNC0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfZ2Nfc3dlZXBfaG9vayk6ICBSZXR1cm4gaWYgZHlub2JqIE5VTEwuCglDaGVjayBsb2NhbF9nb3RfcmVmY291bnRzIGJlZm9yZSBkZXJlZmVyZW5jaW5nLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IENoZWNrIHNwbHQgIT0gTlVMTAoJYmVmb3JlIGRlY2lkaW5nIHdlIGRvbid0IG5lZWQgUl9QUENfUExUMzIgcmVsb2NhdGlvbi4KCShwcGNfZWxmX2djX3N3ZWVwX2hvb2spOiBDaGVjayBsb2NhbF9nb3RfcmVmY291bnRzIGJlZm9yZQoJZGVyZWZlcmVuY2luZy4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IEZpeCBjb21tZW50LgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBSZWZlcmVuY2UgY291bnQgLmdvdCBhbmQKCS5wbHQgZW50cmllcy4KCShlbGZfaTM4Nl9nY19zd2VlcF9ob29rKTogR2FyYmFnZSBjb2xsZWN0IC5nb3QgYW5kIC5wbHQgZW50cmllcy4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBSZWNvZ25pemUgdW51c2VkIC5wbHQgZW50cmllcy4KCShlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogQWxsb3cgZm9yIC5wbHQgdG8gZ28gbWlzc2luZy4KCShlbGZfaTM4Nl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBVc2Ugc2FtZSB0ZXN0IHRvIGRlY2lkZSBpZiB3ZQoJY2FuIHVzZSBhIHJlbGF0aXZlIHJlbG9jIGZvciBnb3QgYXMgZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbi4KCShiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmspOiBEZWZpbmUgdG8gdXNlIGdjIGZvcm0gb2YgZmluYWwgbGluay4KCjIwMDAtMDQtMjYgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogUmVtb3ZlIGV4dHJhbmVvdXMgYmZkX3Bvd2VycGNfNjRfYXJjaC4KCjIwMDAtMDQtMjQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKGNvZmY2NC1yczYwMDAubG8pOiBOZXcgcnVsZS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvZmYtcnM2MDAwLmMgKHhjb2ZmX21rb2JqZWN0LCB4Y29mZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEsCgl4Y29mZl9pc19sb2NhbF9sYWJlbF9uYW1lLCB4Y29mZl9ydHlwZTJob3d0bywKCXhjb2ZmX3JlbG9jX3R5cGVfbG9va3VwLCB4Y29mZl9zbHVycF9hcm1hcCwgeGNvZmZfYXJjaGl2ZV9wLAoJeGNvZmZfcmVhZF9hcl9oZHIsIHhjb2ZmX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSwgeGNvZmZfd3JpdGVfYXJtYXAsCgl4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzKTogTm8gbG9uZ2VyIHN0YXRpYywgYW5kIHByZWZpeCB3aXRoIF9iZmRfLgoJKE5PX0NPRkZfU1lNQk9MUyk6IERlZmluZS4KCSh4Y29mZjY0X3N3YXBfc3ltX2luLCB4Y29mZjY0X3N3YXBfc3ltX291dCwgeGNvZmY2NF9zd2FwX2F1eF9pbiwKCXhjb2ZmNjRfc3dhcF9hdXhfb3V0KTogTmV3IGZ1bmN0aW9uczsgaGFuZGxlIHhjb2ZmIHN5bWJvbCB0YWJsZXMKCWludGVybmFsbHkuCgkoTUlOVVNfT05FKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2hvd3RvX3RhYmwsIHhjb2ZmX3JlbG9jX3R5cGVfbG9va3VwKTogQWRkIDY0IGJpdCBQT1MKCXJlbG9jYXRpb24uCgkoY29mZl9TV0FQX3N5bV9pbiwgY29mZl9TV0FQX3N5bV9vdXQsIGNvZmZfU1dBUF9hdXhfaW4sCgljb2ZmX1NXQVBfYXV4X291dCk6IE1hcCB0byB0aGUgbmV3IGZ1bmN0aW9ucy4KCSogY29mZjY0LXJzNjAwMC5jOiBOZXcgZmlsZS4KCSogbGliY29mZi5oIChiZmRfY29mZl9iYWNrZW5kX2RhdGEpOiBBZGQgbmV3IGZpZWxkcwoJX2JmZF9jb2ZmX2ZvcmNlX3N5bW5hbWVzX2luX3N0cmluZ3MgYW5kCglfYmZkX2NvZmZfZGVidWdfc3RyaW5nX3ByZWZpeF9sZW5ndGguCgkoYmZkX2NvZmZfZm9yY2Vfc3ltbmFtZXNfaW5fc3RyaW5ncywKCWJmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoKTogTmV3IG1hY3JvcyBmb3IgYWJvdmUgZmllbGRzLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IEhhbmRsZSBYQ09GRjY0IG1hZ2ljLgoJU2V0IG1hY2hpbmUgdG8gNjIwIGZvciBYQ09GRjY0LiAgVXNlIGJmZF9jb2ZmX3N3YXBfc3ltX2luIGluc3RlYWQKCW9mIHVzaW5nIGNvZmZfc3dhcF9zeW1faW4gZGlyZWN0bHkuCgkoRk9SQ0VfU1lNTkFNRVNfSU5fU1RSSU5HUyk6IE5ldyBtYWNybywgZGVmaW5lZCBmb3IgWENPRkY2NC4KCShjb2ZmX3NldF9mbGFncykgU2V0IG1hZ2ljIGZvciBYQ09GRjY0LgoJKGNvZmZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogQWRkIHN5bWJvbCBuYW1lIGxlbmd0aCB0bwoJc3RyaW5nIHNlY3Rpb24gbGVuZ3RoIGlmIGJmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIGlzCgl0cnVlLgoJKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogRG9uJ3QgZG8gcmVsb2Mgb3ZlcmZsb3cgZm9yIFhDT0ZGNjQuCgkoY29mZl9zbHVycF9saW5lX3RhYmxlKTogVXNlIGJmZF9jb2ZmX3N3YXBfbGluZW5vX2luIGluc3RlYWQgb2YKCXVzaW5nIGNvZmZfc3dhcF9saW5lbm9faW4gZGlyZWN0bHkuCgkoYmZkX2NvZmZfYmFja2VuZF9kYXRhKTogQWRkIF9iZmRfY29mZl9mb3JjZV9zeW1uYW1lc19pbl9zdHJpbmdzCglhbmQgX2JmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIGZpZWxkcy4KCSogY29mZmdlbi5jIChjb2ZmX2ZpeF9zeW1ib2xfbmFtZSwgY29mZl93cml0ZV9zeW1ib2xzKTogRm9yY2UKCXN5bWJvbCBuYW1lcyBpbnRvIHN0cmluZ3MgdGFibGUgd2hlbgoJYmZkX2NvZmZfZm9yY2Vfc3ltbmFtZXNfaW5fc3RyaW5ncyBpcyB0cnVlLgoJKiBjb2Zmc3dhcC5oIChNQVhfU0NOSERSX05SRUxPQywgTUFYX1NDTkhEUl9OTE5OTywgR0VUX1JFTE9DX1ZBRERSLAoJU0VUX1JFTE9DX1ZBRERSKTogTmV3IG1hY3Jvcy4KCShjb2ZmX3N3YXBfcmVsb2NfaW4sIGNvZmZfc3dhcF9yZWxvY19vdXQpOiBVc2UgYWJvdmUgbWFjcm9zLgoJKGNvZmZfc3dhcF9hdXhfaW4sIGNvZmZfc3dhcF9hdXhfb3V0KTogUmVtb3ZlIFJTNjAwMENPRkZfQwoJY29kZS4KCShjb2ZmX3N3YXBfYW91dGhkcl9pbiwgY29mZl9zd2FwX2FvdXRoZHJfb3V0KTogSGFuZGxlIFhDT0ZGNjQKCWNoYW5nZXMgd2l0aGluIFJTNjAwMENPRkZfQyBzcGVjaWZpYyBjb2RlLgoJKGNvZmZfc3dhcF9zY25oZHJfb3V0KTogVXNlIFBVVF9TQ05IRFJfTkxOTk8sIFBVVF9TQ05IRFJfTlJFTE9DLAoJTUFYX1NDTkhEUl9OUkVMT0MsIGFuZCBNQVhfU0NOSERSX05MTk5PLgoJKiByZWxvYy5jIChiZmRfcGVyZm9ybV9yZWxvY2F0aW9uLCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKToKCUV4dGVuZCBleGlzdGluZyBoYWNrIG9uIHRhcmdldCBuYW1lLgoJKiB4Y29mZmxpbmsuYyAoWENPRkZfWFZFQ1ApOiBFeHRlbmQgZXhpc3RpbmcgaGFjayBvbgoJdGFyZ2V0IG5hbWUuCgkqIGNvZmYtdGljNTR4LmMgKHRpY29mKTogS2VlcCB1cCB0byBkYXRlIHdpdGggbmV3IGZpZWxkcwoJaW4gYmZkX2NvZmZfYmFja2VuZF9kYXRhLgoJKiBjb25maWcuYmZkOiBBZGQgYmZkX3Bvd2VycGNfNjRfYXJjaCB0byB0YXJnX2FyY2ggYW5kIGRlZmluZQoJdGFyZ19zZWx2ZWNzIHRvIGluY2x1ZGUgcnM2MDAwY29mZjY0X3ZlYyBmb3IgcnM2MDAwLgoJKiBjb25maWd1cmUuaW46IEFkZCByczYwMDBjb2ZmNjRfdmVjIGNhc2UuCgkqIGNwdS1wb3dlcnBjLmM6IE5ldyBiZmRfYXJjaF9pbmZvX3R5cGUuCgoyMDAwLTA0LTI0ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWcuYmZkOiBPbmx5IGRpc2FibGUgZWxmMzItaHBwYSB2ZWN0b3JzLCBub3QgYWxsIG9mIHRoZQoJQlNEIGFuZCBPU0YgY29uZmlndXJhdGlvbiBzdXBwb3J0LiAgUHJvdmlkZSAoZGlzYWJsZWQpIGNsYXVzZXMKCWZvciBQQTY0IHN1cHBvcnQuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGNsYXVzZSBmb3IgUEE2NCBzdXBwb3J0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkIGJmZF9lbGY2NF9ocHBhX3ZlYy4KCShiZmRfZWxmNjRfaHBwYV92ZWMpOiBEZWNsYXJlLgoKCSogTWFrZWZpbGUuYW0gKEJGRDY0X0JBQ0tFTkRTKTogQWRkIGVsZjY0LWhwcGEubG8KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmNjQtaHBwYS5jCgkoZWxmNjQtaHBwYS5sbyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgoKCSogZWxmNjQtaHBwYS5jLCBlbGY2NC1ocHBhLmg6IE5ldyBmaWxlcyB3aXRoIFBBNjQgc3VwcG9ydC4KCjIwMDAtMDQtMjQgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBsaWJocHBhLmggKGRpc19hc3NlbWJsZV8xNik6IE5ldyBmdW5jdGlvbi4KCShwYV9hcmNoKTogQWRkZWQgcGEyMHcgZWxlbWVudC4KCjIwMDAtMDQtMjQgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oOiBBZGQgcHJvdG90eXBlcyBmb3IgYmZkX2VsZjMyX3dyaXRlX3JlbG9jcywKCWJmZF9lbGYzMl9zbHVycF9yZWxvY190YWJsZSwgYmZkX2VsZjY0X3dyaXRlX3JlbG9jcywgYW5kCgliZmRfZWxmNjRfc2x1cnBfcmVsb2NfdGFibGUuCgoJKiBlbGZjb2RlLmggKGVsZl93cml0ZV9yZWxvY3MsIGVsZl9zbHVycF9yZWxvY190YWJsZSk6IE5ldwoJZGVmaW5pdGlvbnMgdG8gZ2V0IGV4dGVybmFsIG5hbWVzLgoJKGVsZl93cml0ZV9yZWxvY3MpOiBSZW5hbWVkIGZyb20gd3JpdGVfcmVsb2NzIGFuZCBtYWtlIGdsb2JhbC4KCShlbGZfc2x1cnBfcmVsb2NfdGFibGUpOiBNYWtlIGdsb2JhbC4KCShfYmZkX2VsZixzaXplX2luZm8pOiBVc2UgZWxmX3dyaXRlX3JlbG9jcyBpbnN0ZWFkIG9mIHdyaXRlX3JlbG9jcy4KCgkqIGFyY2hpdmUuYyAoaHB1eF91aWRfZ2lkX2VuY29kZSk6IE5ldyBmdW5jdGlvbi4KCShiZmRfYXJfaGRyX2Zyb21fZmlsZXN5c3RlbSk6IFVzZSBpdCBpZiBIUFVYX0xBUkdFX0FSX0lEUyBpcwoJZGVmaW5lZCBhbmQgdGhlIElEIGlzIGdyZWF0ZXIgdGhhbiA5OTk5OS4KCShiZmRfZ2VuZXJpY19zdGF0X2FyY2hfZWx0KTogSWYgSFBVWF9MQVJHRV9BUl9JRFMgaXMgZGVmaW5lZCBkZWNvZGUKCXNwZWNpYWwgdWlkL2dpZCBmaWVsZHMgaW50byAzMiBiaXQgdmFsdWVzLgoKMjAwMC0wNC0yMSAgTWF0dGhldyBHcmVlbiAgPG1yZ0BjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkIE5ldEJTRC9zcGFyYzY0IHN1cHBvcnQuCgoyMDAwLTA0LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoJICAgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoJICAgIFRpbW90aHkgV2FsbCA8dHdhbGxAY3lnbnVzLmNvbT4KCSAgICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQUxMX01BQ0hJTkVTKTogQWRkIGNwdS1pYTY0LmxvLgoJKEFMTF9NQUNISU5FU19DRklMRVMpOiBBZGQgY3B1LWlhNjQuYy4KCShCRkQ2NF9CQUNLRU5EUyk6IEFkZCBlbGY2NC1pYTY0LmxvLgoJKEJGRDY0X0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBlbGY2NC1pYTY0LmMuCgkoY3B1LWlhNjQubG8sIGVsZjY0LWlhNjQubG8pOiBOZXcgcnVsZXMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoJKiBhcmNodXJlcy5jIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUpOiBBZGQgYmZkX2FyY2hfaWE2NC4KCShiZmRfaWE2NF9hcmNoKTogRGVjbGFyZS4KCShiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCBiZmRfaWE2NF9hcmNoLgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgkqIGNvbmZpZy5iZmQ6IChpYTY0Ki0qLWxpbnV4LWdudSosIGlhNjQqLSotZWxmKik6IE5ldyB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGNvbmZpZ3VyZS5ob3N0OiAoaWE2NC0qLWxpbnV4Kik6IE5ldyBob3N0LgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGY2NF9pYTY0X2xpdHRsZV92ZWMsIGJmZF9lbGY2NF9pYTY0X2JpZ192ZWMsCgliZmRfZWZpX2FwcF9pYTY0X3ZlYywgYmZkX2VmaV9hcHBfaWE2NF92ZWMpOiBOZXcgdmVjdG9ycy4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEFkZCBiZmRfYXJjaF9pYTY0LgoJKiBsaWJiZmQuaDogUmVidWlsZC4KCSogcmVsb2MuYzogQWRkIElBLTY0IHJlbG9jYXRpb25zLgoJKiB0YXJnZXRzLmMgKGJmZF9lbGY2NF9pYTY0X2xpdHRsZV92ZWMsIGJmZF9lbGY2NF9pYTY0X2JpZ192ZWMpOgoJRGVjbGFyZS4KCShiZmRfdGFyZ2V0X3ZlY3QpOiBBZGQgYmZkX2VsZjY0X2lhNjRfbGl0dGxlX3ZlYy4KCSogY3B1LWlhNjQtb3BjLmMsIGNwdS1pYTY0LmMsIGVsZjY0LWlhNjQuYzogTmV3IGZpbGVzLgoKMjAwMC0wNC0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWQzMHYuYyAoYmZkX2VsZl9kMzB2X3JlbG9jKTogRG9uJ3QgbW9kaWZ5IHNlY3Rpb24KCWNvbnRlbnRzIHdoZW4gcGVyZm9ybWluZyBhIHBhcnRpYWwgbGluay4KCShiZmRfZWxmX2QzMHZfcmVsb2NfMjEpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFJlc3RyaWN0IDE5OTgtMTItMTAKCXBhdGNoIHRvIHN5bWJvbHMgZGVmaW5lZCBieSBhIHNoYXJlZCBvYmplY3QuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBTaW1pbGFybHkuCgoyMDAwLTA0LTE5ICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJSyZSIGNvbXBpbGVyIGZpeGVzLgoJKiBkd2FyZjIuYyAoY29uY2F0X2ZpbGVuYW1lKTogQXZvaWQgc3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbi4KCSogaWVlZS5jIChpZWVlX2dldF9zeW10YWIpOiBEb24ndCBpbml0aWFsaXNlIHVuaW9uIGluIHN0cnVjdC4KCjIwMDAtMDQtMTEgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDY0X0JBQ0tFTkRTKTogTWVudGlvbiBjb2ZmLWlhNjQubG8uCgkoQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogTWVudGlvbiBjb2ZmLWlhNjQuYwoJKGNvZmYtaWE2NC5sbyk6IEFkZCBkZXBlbmRlbmN5LgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogY29mZi1pYTY0LmM6IE5ldyBmaWxlLgoJKiBlZmktYXBwLWlhMzIuYzogRGl0dG8uCgkqIGVmaS1hcHAtaWE2NC5jOiBEaXR0by4KCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2spOiBIYW5kbGUgSUE2NE1BR0lDLgoJKGNvZmZfc2V0X2ZsYWdzKTogRGl0dG8uCgkoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpIFtJQTY0XTogU2V0IG1hZ2ljIG51bWJlciB0byBaTUFHSUMuCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04Ni0qLWxpbnV4LWdudSopOiBNZW50aW9uIGJmZF9lZmlfYXBwX2lhMzJfdmVjLgoJKiBjb25maWd1cmUuaW4gKGVsZik6IEhhbmRsZSBiZmRfZWZpX2FwcF9pYTMyIGFuZCBiZmRfZWZpX2FwcF9pYTY0X3ZlYy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBsaWJwZWkuaCAoR0VUX09QVEhEUl9JTUFHRV9CQVNFKTogTmV3IG1hY3JvLgoJKFBVVF9PUFRIRFJfSU1BR0VfQkFTRSk6IERpdHRvLgoJKEdFVF9PUFRIRFJfU0laRV9PRl9TVEFDS19SRVNFUlZFKTogRGl0dG8uCgkoUFVUX09QVEhEUl9TSVpFX09GX1NUQUNLX1JFU0VSVkUpOiBEaXR0by4KCShHRVRfT1BUSERSX1NJWkVfT0ZfU1RBQ0tfQ09NTUlUKTogRGl0dG8uCgkoUFVUX09QVEhEUl9TSVpFX09GX1NUQUNLX0NPTU1JVCk6IERpdHRvLgoJKEdFVF9PUFRIRFJfU0laRV9PRl9IRUFQX1JFU0VSVkUpOiBEaXR0by4KCShQVVRfT1BUSERSX1NJWkVfT0ZfSEVBUF9SRVNFUlZFKTogRGl0dG8uCgkoR0VUX09QVEhEUl9TSVpFX09GX0hFQVBfQ09NTUlUKTogRGl0dG8uCgkoUFVUX09QVEhEUl9TSVpFX09GX0hFQVBfQ09NTUlUKTogRGl0dG8uCgkoR0VUX1BEQVRBX0VOVFJZKTogRGl0dG8uCgkqIHBlaWdlbi5jIChfYmZkX3BlaV9zd2FwX2FvdXRoZHJfaW4pIFtDT0ZGX1dJVEhfUEVQNjRdOiBEb24ndCByZWFkCglkYXRhX3N0YXJ0LiAgVXNlIGFib3ZlIG1hY3JvcyB0byByZWFkIGZpZWxkcyB0aGF0IGFyZSA2NCBiaXQgd2lkZSBmb3IKCUNPRkZfV0lUSF9QRVA2NC4gIERvbid0IHRydW5jYXRlIGVudHJ5IGFuZCB0ZXh0X3N0YXJ0IHRvIDMyIGJpdHMuCgkoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX291dCkgW1BFSV9GT1JDRV9NSU5JTVVNX0FMSUdOTUVOVF06IEZvcmNlCglGaWxlQWxpZ25tZW50IGFuZCBTZWN0aW9uQWxpZ25tZW50IHRvIG1pbmltdW0gYWxpZ25tZW50IGlmIHRoZXkKCWFyZSB6ZXJvLgoJKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9vdXQpIFtQRUlfREVGQVVMVF9UQVJHRVRfU1VCU1lTVEVNXTogU2V0CglTdWJzeXN0ZW0gdG8gZGVmYXVsdCBQRUlfREVGQVVMVF9UQVJHRVRfU1VCU1lTVEVNLgoJKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9vdXQpIFtDT0ZGX1dJVEhfUEVQNjRdOiBEb24ndCBzZXQgZGF0YV9zdGFydC4KCVVzZSBhYm92ZSBtYWNyb3MgdG8gd3JpdGUgZmllbGRzIHRoYXQgYXJlIDY0IGJpdCB3aWRlIGZvcgoJQ09GRl9XSVRIX1BFUDY0LgoJKHBlX3ByaW50X3BkYXRhKTogU2V0IFBEQVRBX1JPV19TSVpFIHRvIDMqOCBmb3IgQ09GRl9XSVRIX1BFUDY0LAoJNSo0IG90aGVyd2lzZS4gIFRoaXMgc2hvdWxkIGJlIHJpZ2h0IGZvciBJQS0zMiBhbmQgSUEtNjQsIGJ1dCBtYXkKCWJlIHdyb25nIGZvciBwbGF0Zm9ybXMuICBVc2UgUERBVEFfUk9XX1NJWkUgaW5zdGVhZCBvZiBoYXJkY29kZWQKCXZhbHVlIG9mIDIwIGJ5dGVzLiAgTW9kaWZ5IHByaW50aW5nIGZvciBDT0ZGX1dJVEhfUEVQNjQgdG8gcHJpbnQKCWJlZ2luIGFkZHJlc3MsIGVuZCBhZGRyZXNzLCBhbmQgdW53aW5kIGluZm8gYWRkcmVzcyBvbmx5LiAgVXNlCglHRVRfUERBVEFfRU5UUlkoKSB0byByZWFkIC5wZGF0YSBlbnRyaWVzLiAgVXNlIGZwcmludGZfdm1hKCkgdG8KCXByaW50IGFkZHJlc3Nlcy4KCSh0YmwpOiBBZGQgU0VDVElPTiwgUkVMMzIsIFJFU0VSVkVEMSwgTUlQU19KTVBBRERSMTYsIERJUjY0LCBhbmQKCUhJR0gzQURKIHJlbG9jYXRpb24gbmFtZXMuCgkoX2JmZF9wZV9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogUHJpbnQgU3Vic3lzdGVtIG5hbWUgaW4gbGVnaWJsZSBmb3JtLgoJKiB0YXJnZXRzLmM6IERlY2xhcmUgYmZkX2VmaV9hcHBfaWEzMl92ZWMgYW5kCgliZmRfZWZpX2FwcF9pYTY0X3ZlYy4KCShiZmRfdGFyZ2V0X3ZlY3Rvcik6IE1lbnRpb24gYmZkX2VmaV9hcHBfaWEzMl92ZWMgYW5kCgliZmRfZWZpX2FwcF9pYTY0X3ZlYy4KCjIwMDAtMDQtMTcgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBiZmQtaW4yLmg6IEFkZCBwcm90b3R5cGVzIGZvciB0aWM1NHggbG9hZCBwYWdlIGFjY2Vzcy4KCSogYmZkLWluLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmYtdGljNTR4LmM6IEFkZCBsb2FkIHBhZ2UgZnVuY3Rpb25zOyBhbGxvdyBiZmRfYXJjaF91bmtub3duCglpbiBjdXN0b21pemVkIF9zZXRfYXJjaF9tYWNoIGZ1bmN0aW9uLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hbGlnbm1lbnRfaG9vayk6IFNldCBzZWN0aW9uIGxvYWQgcGFnZSBpZgoJdGhlIGFwcHJvcHJpYXRlIG1hY3JvIGlzIGRlZmluZWQuCgkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogUmVhZCBzZWN0aW9uIGxvYWQgcGFnZS4KCjIwMDAtMDQtMTMgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmg6IFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZS4KCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9lbGZfaTIwX3JlbG9jKTogRG9uJ3QgdXNlIFUgc3VmZml4LgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEFuZCBoZXJlLgoKCSogZWxmMzItZDMwdi5jIChNQVgzMik6IERvbid0IHVzZSBMTCBzdWZmaXguCgkoTUlOMzIpOiBEZWZpbmUgaW4gdGVybXMgb2YgTUFYMzIuCgkoYmZkX2VsZl9kMzB2X3JlbG9jKTogTWFrZSByZWxvY2F0aW9uIGEgYmZkX3NpZ25lZF92bWEuCgoJKiBjb2ZmLWEyOWsuYyAoU0lHTl9FWFRFTkRfSFdPUkQpOiBSZXBsYWNlIHdpdGggbW9yZSBjb25jaXNlCglleHByZXNzaW9uLgoKCSogcGVpY29kZS5oIChwZV9JTEZfYnVpbGRfYV9iZmQpOiBSZW1vdmUgVUwgZnJvbSBoZXggY29uc3RhbnRzLgoKMjAwMC0wNC0xMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGRlcC1pbi5zZWQ6IE1hdGNoIHNwYWNlIGJlZm9yZSBmaWxlIG5hbWUsIG5vdCBhZnRlci4KCSogTWFrZWZpbGUuYW06IFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIHJlbG9jLmMgKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBJbiBjb21wbGFpbl9vdmVyZmxvd19iaXRmaWVsZAoJY2FzZSwgYWxsb3cgYWRkcmVzcyB3cmFwLWFyb3VuZCBzdHVwaWRseSByZW1vdmVkIDIwMDAtMDMtMTcuICBTaWduCglleHRlbmQgd2l0aG91dCBhbiBpZiBzdGF0ZW1lbnQuCgoyMDAwLTA0LTExICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogY29mZi1taXBzLmMgKG1pcHNfZ3ByZWxfcmVsb2MpOiBUZXN0IGZvciAxNiBiaXQgcmFuZ2UgdXNpbmcKCXNpZ25lZCBxdWFudGl0ZXMuCgkqIGVsZjMyLW1pcHMuYyAoZ3ByZWwxNl93aXRoX2dwKTogTGlrZXdpc2UuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IFRlc3QgcmFuZ2UKCWhlcmUgdXNpbmcgLTB4NDAwMDAsIG5vdCAoaW50KTB4ZmZmYzAwMDAuCgkoZWxmMzJfaHBwYV9zaXplX29mX3N0dWIpOiBMaWtld2lzZS4KCjIwMDAtMDQtMTEgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2ZmLXRpYzU0eC5jOiBOb3cgYnVpbGRzIHdpdGggYWxsIHRhcmdldHMuCgkqIE1ha2VmaWxlLmFtOiBBZGQgY29mZi90aWM1NHguaCB0byBjb2ZmLXRpYzU0eC5vIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FyY2hfbWFjaF9ob29rKTogRWxpbWluYXRlIHdhcm5pbmcgb24KCXVuaXRpYWxpemVkIHZhcmlhYmxlLgoKMjAwMC0wNC0wNyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChXQVJOX0NGTEFHUyk6IFNldCB0byAtVyAtV2FsbCBieSBkZWZhdWx0LiAgQWRkCgktLWVuYWJsZS1idWlsZC13YXJuaW5ncyBvcHRpb24uCgkqIE1ha2VmaWxlLmFtIChBTV9DRkxBR1MsIFdBUk5fQ0ZMQUdTKTogQWRkIGRlZmluaXRpb25zLgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlOiBSZS1nZW5lcmF0ZS4KCjIwMDAtMDQtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiByZWxvYy5jOiBBZGQgQkZEX1JFTE9DX0FSTV9QQ1JFTF9CTFggYW5kCglCRkRfUkVMT0NfVEhVTUJfUENSRUxfQkxYLgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlCglSX0FSTV9YUEMyNSBhbmQgUl9BUk1fVEhNX1BDMjIuCgoJKiBlbGZhcm0tbmFiaS5jIChlbGYzMl9hcm1faG93dG9fKTogRml4IGRlZmluaXRpb25zIG9mCglSX0FSTV9YUEMyNSBhbmQgUl9BUk1fVEhNX1hQQzIyLgoJKGVsZjMyX2FybV9yZWxvY19tYXApOiBNYWtlIEJGRF9SRUxPQ197QVJNfFRIVU1CfV9QQ1JFTF9CTFggdG8KCVJfQVJNX1tYUEMyNXxUSE1fWFBDMjJdLgoKCSogZWxmYXJtLW9hYmkuYzogRGVmaW5lIE9MRF9BUk1fQUJJIGFuZCBjaGFuZ2UgaW5jbHVkZSBmcm9tCgllbGYvYXJtLW9hYmkuaCB0byBlbGYvYXJtLmgKCgkqIE1ha2VmaWxlLmFtOiBGaXggZGVwZW5kZW5jeSBmb3IgZWxmYXJtLW9hYmkuYwoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTA2ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGZjb3JlLmggKGVsZl9jb3JlX2ZpbGVfcCk6IHByZXNlcnZlIHZhbHVlIG9mIHRkYXRhIGF0IGVudHJ5LAoJYW5kIHJlc3RvcmUgaXQgb24gZmFpbHVyZS4gIFJlbGVhc2UgbmV3bHkgYWxsb2NhdGVkIHRkYXRhIG9uCglmYWlsdXJlLgoKMjAwMC0wNC0wNyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZHdhcmYyLmMgKHN0cnVjdCBkd2FyZjJfZGVidWcpOiBOZXcgZmllbGQgZHdhcmZfbGluZV9zaXplLgoJKGRlY29kZV9saW5lX2luZm8pOiBTZXQgaXQuICBSZXBvcnQgZXJyb3IgaWYgdW5pdC0+bGluZV9vZmZzZXQgaXMKCWVxdWFsIHRvIG9yIGxhcmdlciB0aGFuIGl0LgoKMjAwMC0wNC0wNyAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIHRhcmdldHMuYzogQWRkZWQgdmVjcyBmb3IgdGljNTR4LgoJKiByZWxvYy5jOiBBZGRlZCByZWxvY3MgZm9yIHRpYzU0eC4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWd1cmU6IEFkZCBUSSBDT0ZGIHZlY3MgZm9yIHRpYzU0eC4KCSogY29uZmlndXJlLmluOiBEaXR0by4KCSogY29uZmlnLmJmZCAodGFyZ19jcHUpOiBSZWNvZ25pemUgbmV3IHRpYzU0eCB0YXJnZXQuCgkqIGNvZmZjb2RlLmggKGNvZmZfc2x1cnBfc3ltYm9sX3RhYmxlKTogQWRkaXRpb25zIGZvciBUSSBDT0ZGIGhhbmRsaW5nLgoJKiBiZmQtaW4yLmg6IEFkZCB0aWM1NHggdGFyZ2V0IGFuZCByZWxvY2F0aW9ucy4KCSogTWFrZWZpbGUuYW0sIE1ha2VmaWxlLmluOiBBZGQgdGljNTR4IHRhcmdldC4KCSogYXJjaHVyZXMuYyAoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgdGljNTR4IHRhcmdldC4KCSogY29mZi10aWM1NHguYzogTmV3LgoJKiBjcHUtdGljNTR4LmM6IE5ldy4KCjIwMDAtMDQtMDYgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckBzZWFkb2cuY3lnbnVzLmNvbT4KCgkqIGVsZmNvcmUuaCAoZWxmX2NvcmVfZmlsZV9wKTogY2FsbCBiYWNrZW5kX29iamVjdF9wIHdoaWNoCgl0aGVyZWJ5IGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gdXBkYXRlIHRoZSBhcmNoL21hY2hpbmUgdHlwZS4KCjIwMDAtMDQtMDYgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NsdXJwX3N5bWJvbF90YWJsZSk6IEhhbmRsZSBDX1NUQVRMQUIgc3RvcmFnZQoJY2xhc3MuICBIYW5kbGUgU0VDX0NMSU5LIGFuZCBTRUNfQkxPQ0sgZmxhZ3MuCgkqIHNlY3Rpb24uYzogQWRkIFNFQ19DTElOSyBhbmQgU0VDX0JMT0NLIGZsYWdzLgoJKiBiZmQtaW4yLmg6IEFkZCBTRUNfQ0xJTksgYW5kIFNFQ19CTE9DSyBmbGFncy4KCjIwMDAtMDQtMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3NldF9wcml2YXRlX2ZsYWdzKTogT25seSBjaGVjayBmb3IKCUVGX0lOVEVSV09SSyBpZiB0aGlzIGlzIGFuIHVua25vd24gRUFCSS4KCShlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IENoZWNrIEVBQkkgdmVyc2lvbgoJbnVtYmVycy4gIE9ubHkgY2hlY2sgRUZfeHh4IGZsYWdzIGlmIHRoZSBFQUJJIHZlcnNpb24gbnVtYmVyCglpcyB1bmtub3duLgoJKGVsZjMyX2FybV9jaGVja19wcml2YXRlX2JmZF9kYXRhKTogT25seSBjaGVjayBFRl94eHggZmxhZ3MKCWlmIHRoZSBFQUJJIHZlcnNpb24gbnVtYmVyIGlzIHVua25vd24uCgkoZWxmMzJfYXJtX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBPbmx5IGRlY29kZSBFRl94eHggZmxhZ3MKCWlmIHRoZSBFQUJJIHZlcnNpb24gbnVtYmVyIGlzIHVua25vd24uCgoyMDAwLTA0LTA1ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYy5jIChfYmZkX3JlbG9jYXRlX2NvbnRlbnRzKTogQWRkIEJGRF9SRUxPQ19TSF9MT09QX1NUQVJUIGFuZAoJQkZEX1JFTE9DX1NIX0xPT1BfRU5ELgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfaG93dG9fdGFiKTogQ2hhbmdlIHNwZWNpYWxfZnVuYyB0bwoJc2hfZWxmX2lnbm9yZV9yZWxvYyBmb3IgYWxsIGVudHJpZXMgdGhhdCBzaF9lbGZfcmVsb2MgdXNlZCB0byBpZ25vcmUuCglBZGQgZW50cmllcyBmb3IgUl9TSF9MT09QX1NUQVJUIGFuZCBSX1NIX0xPT1BfRU5ELgoJKHNoX2VsZl9yZWxvY19sb29wKTogTmV3IGZ1bmN0aW9uLgoJKHNoX2VsZl9yZWxvYyk6IE5vIG5lZWQgdG8gdGVzdCBmb3IgYWx3YXlzLXRvLWJlLWlnbm9yZWQgcmVsb2NzCglhbnkgbW9yZS4KCShzaF9yZWwpOiBBZGQgZW50cmllcyBmb3IgQkZEX1JFTE9DX1NIX0xPT1Bfe1NUQVJULEVORH0uCgkoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBIYW5kbGUgQkZEX1JFTE9DX1NIX0xPT1Bfe1NUQVJULEVORH0uCgkqIGJmZC1pbjIuaCwgbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTA0ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogcG8vYmZkLnBvdDogUmVnZW5lcmF0ZS4KCgkqIE1ha2VmaWxlLmFtOiBSZW1vdmUgZXh0cmFuZW91cyBta2RlcCBjb21tZW50LgoJKE1LREVQKTogVXNlIGdjYyAtTU0gcmF0aGVyIHRoYW4gbWtkZXAuCgkoREVQKTogUXVvdGUgd2hlbiBwYXNzaW5nIHZhcnMgdG8gc3ViLW1ha2UuICBBZGQgd2FybmluZwoJbWVzc2FnZSB0byBlbmQuCgkoREVQMSk6IFJld3JpdGUgZm9yICJnY2MgLU1NIi4KCShDTEVBTkZJTEVTKTogQWRkIERFUDIuCglVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDAtMDQtMDMgIEtldmluIEJ1ZXR0bmVyICA8a2V2aW5iQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZGVkIGNvcmVmaWxlIHN1cHBvcnQgZm9yIEFJWCA0LjMuICBJbiBwYXJ0aWN1bGFyLAoJQUlYX0NPUkVfRFVNUFhfQ09SRSB3aWxsIGJlIGRlZmluZWQgaW4gYWRkaXRpb24gdG8gQUlYX0NPUkUgd2hlbgoJY29tcGlsaW5nIHJzNjAwMC1jb3JlLmMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAwLTA0LTAzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjYWNoZS5jIChiZmRfb3Blbl9maWxlKTogVW5saW5rIHRoZSBvdXRwdXQgZmlsZSBvbmx5IGlmCglpdCBoYXMgbm9uLXplcm8gc2l6ZS4KCjIwMDAtMDQtMDEgIEtlbiBCbG9jayBVU0cgIDxibG9ja0B6azMuZGVjLmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBlbWl0CglyZWxhdGl2ZSByZWxvY2F0aW9ucyBmb3Igbm9uLWxvYWRlZCBzZWN0aW9ucyBpbiBzaGFyZWQgb2JqZWN0cy4KCShlbGY2NF9hbHBoYV9jaGVja19yZWxvY3MpOiBTaW1pbGFybHkuCgoyMDAwLTA0LTAzICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGFvdXR4LmggKE5BTUUoYW91dCxyZWxvY190eXBlX2xvb2t1cCkpOiBBZGQgQkZEX1JFTE9DXzggYW5kCglCRkRfUkVMT0NfMTYgdG8gc3dpdGNoIGZvciBleHRlbmRlZCByZWxvY3MuCgkoTVlfc3dhcF9leHRfcmVsb2NfaW4pOiBOZXcuCgkoTVlfc3dhcF9leHRfcmVsb2Nfb3V0KTogTmV3LgoJKE5BTUUoYW91dCxzbHVycF9yZWxvY190YWJsZSkpOiBVc2UgTVlfc3dhcF9leHRfcmVsb2NfaW4gcmF0aGVyCgl0aGFuIE5BTUUoYW91dCxzd2FwX2V4dF9yZWxvY19pbikgZm9yIGV4dGVuZGVkIHJlbG9jcy4KCShOQU1FKGFvdXQsc3F1aXJ0X291dF9yZWxvY3MpKTogU2ltaWxhcmx5IHVzZQoJTVlfc3dhcF9leHRfcmVsb2Nfb3V0LgoJKGFvdXRfbGlua19yZWxvY19saW5rX29yZGVyKTogVXNlIE1ZX3B1dF9leHRfcmVsb2MgaWYgZGVmaW5lZC4KCjIwMDAtMDQtMDMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1oODMwMC5jIChoODMwMF9yZWxvYzE2X2V4dHJhX2Nhc2VzKTogQWRkIGJzcjoxNiAtPiBic3I6OCB0bwoJdGhlIFJfUENSV09SRF9CIGNhc2UuCgoyMDAwLTAzLTMxICBUaG9tYXMgZGUgTGVsbGlzICA8dGRlbEB3cnMuY29tPgoKCSogc3JlYy5jIDogU2V0IENIVU5LIHNpemUgdG8gMTYgYnl0ZXMgdG8gcHJldmVudCBkb3dubG9hZCBmYWlsdXJlcwoJb24gc29tZSB0YXJnZXRzLgoJKiBpaGV4LmMgOiBEaXR0by4KCjIwMDAtMDMtMzAgIERvbmFsZCBMaW5kc2F5ICA8ZGxpbmRzYXlAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfZ2VuZXJpY19yZWxvYyk6IG5ldyBmdW5jdGlvbi4gIEFsbAoJSE9XVE8gcmVmZXJlbmNlcyB0byBiZmRfZWxmX2dlbmVyaWNfcmVsb2MsIHRoYXQgaGF2ZQoJcGFydGlhbF9pbnBsYWNlID09IHRydWUsIG5vdyB1c2UgdGhlIG5ldyBmdW5jdGlvbi4gIFRoZSBmdW5jdGlvbgoJaXMgYmFzZWQgb24gdGhlIHJlY2VudCByZXdyaXRlIG9mIG0zMnJfZWxmX2xvMTZfcmVsb2MoKSwgYW5kCglleHRlbmRzIGl0cyBmaXhlcyB0byB0aGUgUl9NMzJSX3sxNiwyNCwzMn0gcmVsb2NzLgoJVGhlIG5ldyBsb2dpYyBpbiBtMzJyX2VsZl9sbzE2X3JlbG9jKCkgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kCglpdCBpbnN0ZWFkIGNhbGxzIHRoZSBuZXcgcm91dGluZSB0byBvYnRhaW4gdGhhdCBmdW5jdGlvbmFsaXR5LgoKMjAwMC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWF2ci5jIChlbGYzMl9hdnJfZ2NfbWFya19ob29rLCBlbGYzMl9hdnJfZ2Nfc3dlZXBfaG9vaywKCWVsZjMyX2F2cl9jaGVja19yZWxvY3MsIGF2cl9maW5hbF9saW5rX3JlbG9jYXRlLAoJZWxmMzJfYXZyX3JlbG9jYXRlX3NlY3Rpb24sIGJmZF9lbGZfYXZyX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcsCgllbGYzMl9hdnJfb2JqZWN0X3ApOiBBZGQgcHJvdG90eXBlcy4KCShlbGYzMl9hdnJfZ2NfbWFya19ob29rKTogQWRkIGRlZmF1bHQgZm9yIGgtPnJvb3QudHlwZS4KCShiZmRfZWxmX2F2cl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTWFrZSBzdGF0aWMuCgoyMDAwLTAzLTI3ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY3B1LWF2ci5jOiBOZXcgZmlsZS4gIEJGRCBzdXBwb3J0IHJvdXRpbmVzIGZvciBBVlIgYXJjaGl0ZWN0dXJlLgoJKiBhcmNodXJlcy5jIChiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIEFWUiBhcmNoaXRlY3R1cmUuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgcmVmZXJlbmNlIHRvIEFWUiBhcmNoaXRlY3R1cmUgaW5mby4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEhhbmRsZSBiZmRfYXJjaF9hdnIuCgkqIHJlbG9jLmM6IEFkZCB2YXJpb3VzIEFWUiByZWxvY2F0aW9uIGVudW1zLgoJKiB0YXJnZXRzLmMgKGJmZF9lbGYzMl9hdnJfdmVjKTogRGVjbGFyZSBhbmQgYWRkIHRvIHRhcmdldCB2ZWN0b3IKCWxpc3QuCgkqIE1ha2VmaWxlLmFtOiBBZGQgc3VwcG9ydCBmb3IgQVZSIGVsZi4KCSogY29uZmlndXJlLmluOiBMaWtld2lzZS4KCSogY29uZmlnLmJmZDogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFRoaXMgdG9vLgoJKiBiZmQtaW4yLmg6IEFuZCB0aGlzLgoJKiBsaWJiZmQuaDogQW5kIHRoaXMuCgoyMDAwLTAzLTI0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9tZXJnZV9pbmRfc3ltYm9scyk6IEFkZCBwcm90b3R5cGUuCgkoZWxmNjRfYWxwaGFfZmluZF9yZWxvY19hdF9vZnMpOiBMaWtld2lzZS4KCjIwMDAtMDMtMTcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiByZWxvYy5jIChiZmRfY2hlY2tfb3ZlcmZsb3cpOiBJbiBjYXNlIGNvbXBsYWluX292ZXJmbG93X2JpdGZpZWxkLAoJZmxhZyBhbiBvdmVyZmxvdyBpZiB0aGUgYml0ZmllbGQgaXMgb3V0c2lkZSAtMioqbiB0byAyKipuLTEuICBUaGUKCWFsbG93YWJsZSByYW5nZSB1c2VkIHRvIGJlIC0yKioobi0xKSB0byAyKipuLTEuCgkqIHJlbG9jLmMgKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBTYW1lIGhlcmUuICBBbHNvIHJlcGxhY2UKCSJib29sZWFuIG92ZXJmbG93IiB3aXRoICJiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgZmxhZyIuCgoyMDAwLTAzLTE0ICBEb3VnIEV2YW5zICA8ZGplQGNhc2V5LnRyYW5zbWV0YS5jb20+CgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX2xvMTZfcmVsb2MpOiBSZXdyaXRlLgoKMjAwMC0wMy0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiByZWxvYzE2LmMgKGJmZF9jb2ZmX3JlbG9jMTZfcmVsYXhfc2VjdGlvbik6IENvdW50IHRoZSB0b3RhbCBudW1iZXIKCW9mIHNocmlua3MgcHJvcGVybHksIGluY2x1ZGluZyB0aGUgbGFzdCByZWxvYy4KCjIwMDAtMDMtMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1oODMwMC5jIChoODMwMF9yZWxvYzE2X2V4dHJhX2Nhc2VzKTogRml4IHRoZSBzYW5pdHkKCWNoZWNrIGZvciBSX01PVkwyLgoKMjAwMC0wMy0xMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGllZWUuYyAoaWVlZV9hcmNoaXZlX3ApOiBSZXR1cm4gYmZkX2Vycm9yX3dyb25nX2Zvcm1hdCBvbgoJYSBmb3JtYXQgbWlzbWF0Y2ggcmF0aGVyIHRoYW4gYW4gImVycm9yIiBmcm9tIGJmZF9yZWFkIHN1Y2ggYXMKCWJmZF9lcnJvcl9maWxlX3RydW5jYXRlZC4KCjIwMDAtMDMtMTAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRG8gcHJvcGVyCglzaWduLWV4dGVuc2lvbiBhbmQgYmlnLWVuZGlhbiBjb21wZW5zYXRpb24gZm9yCglSX01JUFNfNjQgZXZlbiBpbiBsZCAtci4KCjIwMDAtMDMtMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfbmV4dF9yZWxvY2F0aW9uKTogUmVuYW1lIGZyb20KCW1pcHNfZWxmX25leHRfbG8xNl9yZWxvY2F0aW9uLCBhbmQgZ2VuZXJhbGl6ZSB0byBsb29rCglmb3IgYW55IHJlbG9jYXRpb24gdHlwZS4KCShlbGZfbWlwc19ob3d0b190YWJsZSk6IE1ha2UgUl9NSVBTX1BDMTYgcGNyZWxfb2Zmc2V0LgoJKGVsZl9taXBzX2dudV9yZWxfaGkxNik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTF9ISTE2LgoJKGVsZl9taXBzX2dudV9yZWxfbG8xNik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTF9MTzE2LgoJKGVsZl9taXBzX2dudV9yZWwxNl9zMik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTDE2X1MyLgoJKGVsZl9taXBzX2dudV9wY3JlbDY0KTogSG93dG8gZm9yIFJfTUlQU19QQzY0LgoJKGVsZl9taXBzX2dudV9wY3JlbDMyKTogSG93dG8gZm9yIFJfTUlQU19QQzMyLgoJKGJmZF9lbGYzMl9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBBZGQgbmV3IHJlbG9jcy4KCShtaXBzX3J0eXBlX3RvX2hvd3RvKTogTGlrZXdpc2UuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBIYW5kbGUgbmV3IHJlbG9jcy4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSRUxfSEkxNi9SRUxfTE8xNiByZWxvY3MKCWFyZSBwYWlyZWQuICBUaGUgYWRkZW5kIGZvciBSX01JUFNfR05VX1JFTDE2X1MyCglpcyBzaGlmdGVkIHJpZ2h0IHR3byBiaXRzLgoKMjAwMC0wMy0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHJlbG9jLmMgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24pOiBVbmRvIGVtYWNzIGZvcm1hdHRpbmcgb2YKCWNvbW1lbnQsIGFuZCBlbnN1cmUgaXQgZG9lc24ndCBoYXBwZW4gYWdhaW4uCgkoYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IFNhbWUgaGVyZS4KCShfYmZkX3JlbG9jYXRlX2NvbnRlbnRzKTogRG9uJ3QgYm90aGVyIGFzc2lnbmluZyB1bnVzZWQgc2lnbm1hc2sKCXNoaWZ0IHJlc3VsdC4gIEZpeCB0eXBvcyBpbiBjb21tZW50cy4KCVJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRocm91Z2hvdXQgZmlsZS4KCjIwMDAtMDMtMDcgIERvdWcgRXZhbnMgIDxkamVAY2FzZXkudHJhbnNtZXRhLmNvbT4KCgkqIHJlbG9jLmMgKHJlbG9jX2hvd3RvX3N0cnVjdCk6IEZpeCBwYXJ0aWFsX2lucGxhY2UgY29tbWVudC4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMjAwMC0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHBlaWNvZGUuaCAoc3RydWN0IHBlX0lMRl92YXJzKTogQWRkIHN5bV9wdHJfdGFibGUgYW5kCglzeW1fcHRyX3B0ciBmaWVsZHMuCgkoU0laRU9GX0lMRl9TWU1fUFRSX1RBQkxFKTogRGVmaW5lLgoJKFNJWkVPRl9JTEZfU1RSSU5HUyk6IFJlZGVmaW5lLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sLXJlbG9jKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlcyBhIHN5bWJvbAoJcmVsYXRpdmUgcmVsb2MsIGFzIG9wcG9zZWQgdG8gYSBzZWN0aW9uIHJlbGF0aXZlIHJlbG9jLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sKTogU2V0IHRoZSBjbGFzcyBvZiBsb2NhbCBzeW1ib2xzIHRvIENfU1RBVAoJbm90IENfTEFCRUwuCglBZGQgbGVuZ3RoIG9mIHN5bWJvbCdzIHByZWZpeCB0byBzdHJpbmcgcG9pbnRlci4KCVN0b3JlIGEgcG9pbnRlciB0byB0aGUgc3ltYm9sIGluIHRoZSBzeW1ib2wgcG9pbnRlciB0YWJsZS4KCShwZV9JTEZfYnVpbGRfYV9iZmQpOiBEbyBub3QgYnVpbGQgLmlkYXRhJDIgb3IgLmlkYXRhJDcuCglJbml0aWFsaXNlIHRoZSBzeW1ib2wgcG9pbnRlciB0YWJsZS4KCVN0b3JlIHRoZSBoaW50IGluIHRoZSBIaW50L05hbWUgdGFibGUuCglNYWtlIHRoZSBqdW1wIHJlbG9jIGJlIHN5bWJvbCByZWFsdGl2ZSwgbm90IHNlY3Rpb24gcmVsYXRpdmUuCglDcmVhdGUgYW4gaW1wb3J0IHN5bWJvbCBmb3IgaW1wb3J0ZWQgY29kZS4KCjIwMDAtMDMtMDYgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmLmMgKHN3YXBfb3V0X3N5bXMpOiAgQ2hlY2sgZm9yIG51bGwgdHlwZV9wdHIuCgoyMDAwLTAzLTAxICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGFvdXQtdGFyZ2V0LmggKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBSZW1vdmUgdW51c2VkCglhbmQgdW51c2FibGUgIiNpZiBDSE9PU0VfUkVMT0NfU0laRSIuCgkqIHBjNTMyLW1hY2guYyAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBuZXRic2QuaCAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBocDMwMGhwdXguYyAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBmcmVlYnNkLmggKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBEaXR0by4KCSogYW91dC10aWMzMC5jICh0aWMzMF9hb3V0X3dyaXRlX29iamVjdF9jb250ZW50cyk6IERpdHRvLgoKMjAwMC0wMi0yOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcGVpY29kZS5oIChqdGFiKTogTWFrZSBpdCBzdGF0aWMuCgoJKiBjb2ZmLXNoLmMgKHNoX2FsaWduX2xvYWRfc3Bhbik6IERlY2xhcmVkIGlmIENPRkZfV0lUSF9QRSBpcwoJZGVmaW5lZCBhbmQgQ09GRl9JTUFHRV9XSVRIX1BFIGlzIG5vdCBkZWZpbmVkLgoJKF9iZmRfc2hfYWxpZ25fbG9hZF9zcGFuKTogRGVmaW5lZCBhcyBzaF9hbGlnbl9sb2FkX3NwYW4gaWYKCUNPRkZfV0lUSF9QRSBpcyBkZWZpbmVkIGFuZCBDT0ZGX0lNQUdFX1dJVEhfUEUgaXMgbm90IGRlZmluZWQuCgoyMDAwLTAzLTAxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1hcm0uYyAoYmZkX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogTWFrZQoJJ3N5bW5keCcgc2lnbmVkIHRvIHByZXZlbnQgY29tcGlsZSB0aW1lIHdhcm5pbmcuCgoJKiBjb2ZmLW1jb3JlLmM6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlIGZvciBwZV9vYmplY3RfcC4KCgkqIGNvZmYtc2guYzogQWRkICIjaWZuZGVmIENPRkZfSU1BR0VfV0lUSF9QRSIgYXJvdW5kIHN0YXRpYwoJZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCB1c2VkIHdoZW4gQ09GRl9JTUFHRV9XSVRIX1BFIGlzCglkZWZpbmVkLgoJKHN0cnVjdCBzaF9vcGNvZGUpOiBDaGFuZ2UgdHlwZSBvZiAnZmxhZ3MnIGZpZWxkIHRvIHVuc2lnbmVkCglsb25nIHNvIHRoYXQgaXQgY2FuIGhvbGQgdGhlIFVTRVNBUyBmbGFnLgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBJbml0aWFsaXNlICd0YXJnZXRfbmFtZScuCgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX3JlbGF4X3NlY3Rpb24pOiBJbml0aWFsaXNlCgknc3ltX3NlYycuCgoJKiBlbGYzMi1pMzcwLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBmdW5jdGlvbgoJcGFyYW1ldGVycy4KCVJlbW92ZSB1bnVzdWVkIHZhcmlhYmxlcyBhbmQgY29kZS4KCShlbGZfYmFja2VuZF9hZGRfc3ltYm9sX2hvb2spOiBGaXggcHJvdG90eXBlLgoKCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19nY19zd2VlcF9ob29rKTogSW5pdGlhbGlzZSAnc2dvdCcgYW5kCgknc3JlbGdvdCcuCgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEluaXRpYWxpc2UKCSdvbGRpbnN0Jy4KCgkqIGVsZjMyLW1pcHMuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGZ1bmN0aW9uCglwYXJhbWV0ZXJzLgoJUmVtb3ZlIHVudXN1ZWQgdmFyaWFibGVzIGFuZCBjb2RlLgoJKGVsZl9iYWNrZW5kX2FkZF9zeW1ib2xfaG9vayk6IEZpeCBwcm90b3R5cGUuCgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IFVzZSAnZmxhZ3MnLgoKCSogZWxmbGluay5oIChlbGZfYmZkX2xpbmtfYWRkX3N5bWJvbHMpOiBBZGQgQVRUUklCVVRFX1VOVVNFRAoJdG8gdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlci4KCgkqIHBlLW1pcHMuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGZ1bmN0aW9uCglwYXJhbWV0ZXJzLgoJVXNlIEVNUFRZX0hPV1RPIHRvIGluaXRpYWxpc2UgZW1wdHkgaG93dG8gc2xvdHMuCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCgkqIHBlaWNvZGUuaCAocGVfSUxGX2J1aWxkX2FfYmZkKTogSW5pdGlhbGlzZSBpZDYuCgoyMDAwLTAzLTAxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBhb3V0eC5oIChhb3V0X2xpbmtfaW5wdXRfc2VjdGlvbl9zdGQpOiBQYXNzICJ0cnVlIiB0bwoJdGhlIHVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2suCgkoYW91dF9saW5rX2lucHV0X3NlY3Rpb25fZXh0KTogTGlrZXdpc2UuCgkqIGJvdXQuYyAoZ2V0X3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvZmYtYTI5ay5jIChjb2ZmX2EyOWtfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLWFscGhhLmMgKGFscGhhX2Vjb2ZmX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW4pOgoJTGlrZXdpc2UuCgkoYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtaTk2MC5jIChjb2ZmX2k5NjBfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLW1jb3JlLmMgKGNvZmZfbWNvcmVfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYyAobWlwc19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmMgKGNvZmZfcHBjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi1zaC5jIChzaF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtdGljODAuYyAoY29mZl90aWM4MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLW0xMDIwMC5jIChtbjEwMjAwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1kMTB2LmMgKGVsZjMyX2QxMHZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jIChpMzcwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBMaWtld2lzZS4KCSogcGUtbWlwcy5jIChjb2ZmX3BlX21pcHNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChiZmRfZ2VuZXJpY19nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVuKTogTGlrZXdpc2UuCgkqIHJlbG9jMTYuYyAoX2JmZF9wcGNfeGNvZmZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFBhc3MgImZhbHNlIiB0byB0aGUKCXVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2sgd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyeSB3aXRoCgktQnN5bWJvbGljIGFuZCB1bmRlZmluZWQgc3ltYm9scyBhcmUgYWxsb3dlZC4gT3RoZXJ3aXNlLCBwYXNzCgkidHJ1ZSIuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCShlbGYzMl9taXBzX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50KTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDItMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbTogQWRkIHJ1bGVzIHRvIGJ1aWxkIHBlW2ldLXtzaHxtaXBzfS5sbyBvYmplY3RzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIG1pcHMgYW5kIHNoIHBlIHZlY3RvcnMuCgkqIGNvbmZpZ3VyZTogcmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBhcm0td2luY2UsIG1pcHMtcGUgYW5kIHNoLXBlCgl0YXJnZXRzLgoKCSogdGFyZ2V0cy5jOiBBZGQgbWlwcyBhbmQgc2ggcGUgdmVjdG9ycy4KCgkqIGxpYnBlaS5oIChjb2ZmX2ZpbmFsX2xpbmtfcG9zdHNjcmlwdCk6IE9ubHkgZGVmaW5lIGlmIG5vdAoJYWxyZWFkeSBkZWZpbmVkLgoKCSogY29mZmNvZGUuaDogQWRkIHN1cHBvcnQgZm9yIFdpbkNFIG1hZ2ljIG51bWJlcnMuCgoJKiBwZWlnZW4uYyAocGVfcHJpbnRfcmVsb2MpOiBVcGRhdGUgY29tbWVudCBhbmQgcmVhcnJhbmdlCglhcHBlbmRpbmcgb2YgbmV3bGluZSBjaGFyYWN0ZXIuCgoJKiBwZWljb2RlLmg6IEFkZCBzdXBwb3J0IGZvciBJbWFnZSBMaWJyYXJ5IEZvcm1hdC4KCShwZV9JTEZfdmFycyk6IFN0cnVjdHVyZSBjb250YWluaW5nIGRhdGEgdXNlZCBieSBJTEYgY29kZS4KCShwZV9JTEZfbWFrZV9hX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uICBDcmVhdGUgYSBzZWN0aW9uIGJhc2VkCglvbiBJTEYgZGF0YS4KCShwZV9JTEZfbWFrZV9hX3JlbG9jKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlIGEgcmVsb2MgYmFzZWQgb24KCUlMRiBkYXRhLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlIGEgc3ltYm9sIGJhc2VkCglvbiBJTEYgZGF0YS4KCShwZV9JTEZfc2F2ZV9yZWxvY3MpOiBOZXcgZnVuY3Rpb24uICBTdG9yZSB0aGUgcmVsb2NzIGNyZWF0ZWQKCWJ5IHBlX0lMRl9tYWtlX2FfcmVsb2MgaW4gYSBzZWN0aW9uLgoJKHBlX0lMRl9idWlsZF9hX2JmZCk6IE5ldyBmdW5jdGlvbi4gIENyZWF0ZSBhIEJGRCBkZXNjcmliaW5nCglhbiBJTEYgb2JqZWN0LgoJKHBlX0lMRl9vYmplY3RfcCk6IE5ldyBmdW5jdGlvbi4gIFJldHVybiBhIGJmZF90YXJnZXQgcG9pbnRlcgoJZm9yIGFuIElMRiBvYmplY3QuCgkocGVfYmZkX29iamVjdF9wKTogSWYgYW4gSUxGIG9iamVjdCBpcyBkZXRlY3RlZCBjYWxsCglwZV9JTEZfb2JqZWN0X3Agb24gaXQuCgoJKiBjb2ZmLWFybS5jOiBBZGQgc3VwcG9ydCBmb3IgV2luQ0UgcmVsb2NzIHdoaWNoIGFyZSBkaWZmZXJlbnQKCWZyb20gbm9ybWFsIEFSTSBDT0ZGIHJlbG9jcy4KCSogcGUtYXJtLmM6IFVuc2V0IFRBUkdFVF9VTkRFUlNDT1JFIGZvciBhIFdpbkNFIHRhcmdldC4KCgkqIGNvZmYtc2guYzogQWRkIHN1cHBvcnQgZm9yIHNoLXBlIHRhcmdldC4KCSogcGUtc2guYzogTmV3IGZpbGUuICBTdXBwb3J0IGNvZGUgZm9yIHNoLXBlIHRhcmdldC4KCSogcGVpLXNoLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBjb2RlIGZvciBzaC1wZSB0YXJnZXQuCgoJKiBwZS1taXBzLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBjb2RlIGZvciBtaXBzLXBlIHRhcmdldC4KCSogcGVpLW1pcHMuYzogTmV3IGZpbGUuICBTdXBwb3J0IGNvZGUgZm9yIG1pcHMtcGUgdGFyZ2V0LgoKMjAwMC0wMi0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogRG9uJ3QgYnVtcAoJYXJjaGl0ZWN0dXJlIGlmIHRoZSBvYmplY3QgY2F1c2luZyB0aGUgYnVtcCBpcyBkeW5hbWljLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogTGlrZXdpc2UsCglhbmQgYWxzbyBkb24ndCBpdCBmb3IgbWVtb3J5IG9yZGVyaW5nLgoJKHNwYXJjNjRfZWxmX3dyaXRlX3JlbG9jcyk6IFRha2Ugc3JjX3JlbGEgb3V0IG9mIHRoZSBsb29wLgoKMjAwMC0wMi0yNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBkd2FyZjIuYyAocmVhZF9hYmJyZXZzKTogVXNlIF9yYXdfc2l6ZSBkaXJlY3RseSByYXRoZXIgdGhhbgoJY2FsbGluZyBiZmRfZ2V0X3NlY3Rpb25fc2l6ZV9iZWZvcmVfcmVsb2MuCgkoZGVjb2RlX2xpbmVfaW5mbyk6IExpa2V3aXNlLgoJKF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogTGlrZXdpc2UuCgoyMDAwLTAyLTI3ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogTWFrZWZpbGUuYW0gKHN0YW1wLWxpYik6IFVzZSAkKExJQlRPT0wpIC0tY29uZmlnIHRvIGdldCB0aGUKCW5hbWUgb2YgdGhlIGxpYnRvb2wgZGlyZWN0b3J5LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCjIwMDAtMDItMjUgIFJvZG5leSBCcm93biAoUm9kbmV5QnJvd25AcG1zYy5jb20pCgoJKiBzb20uYyAoU09NX0hPV1RPKTogRGVmaW5lLgoJKHNvbV9ocHBhX2hvd3RvX3RhYmxlKTogVXNlIGl0LgoKMjAwMC0wMi0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcuYmZkOiBFbmFibGUgNjQgYml0IHN1cHBvcnQgZm9yIEdOVS9MaW51eC9zcGFyYy4KCgkqIGNvbmZpZy5iZmQ6IEVuYWJsZSA2NCBiaXQgc3VwcG9ydCBmb3IgU29sYXJpczcrL3NwYXJjLgoKMjAwMC0wMi0yNCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBzb20uYyAoc29tX21pc2Nfc3ltYm9sX2luZm8pOiAgQWRkIGZpZWxkCglzZWNvbmRhcnlfZGVmLgoJKHNvbV9iZmRfZGVyaXZlX21pc2Nfc3ltYm9sX2luZm8pOiAgSW5pdGlhbGl6ZQoJc2Vjb25kYXJ5X2RlZi4KCShzb21fYnVpbGRfYW5kX3dyaXRlX3N5bWJvbF90YWJsZSk6IEtlZXAgdHJhY2sKCW9mIHNlY29uZGFyeV9kZWYgZmllbGQuCgkoc29tX3NsdXJwX3N5bWJvbF90YWJsZSk6IFNldCBCU0ZfV0VBSyBzeW1ib2wgZmxhZwoJaWYgc2Vjb25kYXJ5X2RlZiBmaWVsZCBpcyBzZXQuCgkoc29tX2JmZF9hcl93cml0ZV9zeW1ib2xfc3R1ZmYpOiBJbml0aWFsaXplCglzZWNvbmRhcnlfZGVmLgoKMjAwMC0wMi0yMyAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBkd2FyZjIuYyAocmVhZF9hZGRyZXNzKTogUmVhZCAxNi1iaXRzIGFkZHJlc3Nlcy4KCShwYXJzZV9jb21wX3VuaXQpOiBBY2NlcHQgYWRkcl9zaXplID09IDIuCgoyMDAwLTAyLTIzICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBiZmQtaW4uaDogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoKMjAwMC0wMi0yMyAgTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPgoKCSogY3B1LWkzNzAuYzogTmV3IGZpbGUuCgkqIGVsZjMyLWkzNzAuYzogIE5ldyBmaWxlLgoJKiBhcmNodXJlcy5jIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUpOiBBZGQgYmZkX2FyY2hfaTM3MC4KCShiZmRfaTM3MF9hcmNoKTogTmV3LgoJKGJmZF9hcmNodXJlc19saXN0KTogQWRkIGJmZF9pMzcwX2FyY2guCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBBZGQgYmZkX2FyY2hfaTM3MC4KCSogTWFrZWZpbGUuYW06IEFkZCBzdXBwb3J0IGZvciBJQk0gMzcwIGVsZi4KCSogY29uZmlnLmJmZDogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbjogTGlrZXdpc2UuCgkqIGxpYmJmZC5oIChiZmRfcmVsb2NfY29kZV9yZWFsX25hbWVzKTogTGlrZXdpc2UuCgkqIHJlbG9jLmMgKGJmZF9yZWxvY19jb2RlX3R5cGUpOiBMaWtld2lzZS4KCSogdGFyZ2V0cy5jOiBMaWtld2lzZS4KCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDItMjIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9pbmZvX3RvX2hvd3RvX3JlbCk6IEdpdmUgYSB3YXJuaW5nIGZvcgoJaW52YWxpZCByZWxvY2F0aW9uIHR5cGVzLCBhbmQgY2hhbmdlIHRoZW0gdG8gUl8zODZfTk9ORS4KCjIwMDAtMDItMjIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogSWYgYSB2ZXJzaW9uIHN5bWJvbCBpcwoJbm90IGRlZmluZWQsIGRvbid0IGFkZCBhIHNlY29uZCBFTEZfVkVSX0NIUi4KCgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9maW5hbF9saW5rKTogQ2FsbCBvdXRwdXRfZXh0c3ltIGZvciBnbG9iYWwKCXN5bWJvbHMgY29udmVydGVkIHRvIGxvY2FsIHN5bWJvbHMgZXZlbiB3aGVuIHN0cmlwcGluZyBhbGwKCXN5bWJvbHMuCgkoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IFByb2Nlc3MgZ2xvYmFsIHN5bWJvbHMgY29udmVydGVkIHRvCglsb2NhbCBzeW1ib2xzIGV2ZW4gaWYgdGhleSBhcmUgYmVpbmcgc3RyaXBwZWQuCgoyMDAwLTAyLTIxICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBhcmNodXJlcy5jIChiZmRfb2N0ZXRzX3Blcl9ieXRlKTogUmV0dXJuIHVuc2lnbmVkIGludC4KCShiZmRfYXJjaF9tYWNoX29jdGV0c19wZXJfYnl0ZSk6IERpdHRvLgoJKiBsaWJiZmQuYyAoYmZkX3JlYWQsIGJmZF9zZWVrKTogUXVlbGwgc2lnbmVkIHZzLiB1bnNpZ25lZAoJY29tcGFyaXNvbiB3YXJuaW5nLgoJKiBzZWN0aW9uLmMgKGJmZF9nZXRfc2VjdGlvbl9zaXplX2JlZm9yZV9yZWxvYyk6IFF1ZWxsIHNpZ25lZAoJdnMuIHVuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZy4KCShiZmRfZ2V0X3NlY3Rpb25fc2l6ZV9hZnRlcl9yZWxvYyk6IFNhbWUgaGVyZS4gIEZpeCBwYXJlbnRoZXNlcyB0b28uCgkqIHRyYWQtY29yZS5jICh0cmFkX3VuaXhfY29yZV9maWxlX3ApOiBDb3JyZWN0IDIwMDAtMDEtMjcKCWNoYW5nZS4gIFdoYXQgd2FzIEkgdGhpbmtpbmc/CgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX3N3ZWVwKTogU2tpcCBub24tZWxmIGlucHV0IGJmZHMuCgkoZWxmX2djX3NlY3Rpb25zKTogU2FtZSBoZXJlLgoJKGVsZl9nY19jb21tb25fZmluYWxpemVfZ290X29mZnNldHMpOiBBbmQgaGVyZS4KCjIwMDAtMDItMjEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCUVMRiBIUFBBIGRvZXNuJ3Qgd29yayBhdCBwcmVzZW50OyByZW1vdmUgaXQgdW50aWwgaXQgZG9lcy4KCSogY29uZmlnLmJmZDogQ29tbWVudCBvdXQgc2V0dGluZyB0YXJnX2RlZnZlYyB0bwoJYmZkX2VsZjMyX2hwcGFfdmVjLgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkoQkZEMzJfQkFDS0VORFMpOiBSZW1vdmUgZWxmMzItaHBwYS5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBSZW1vdmUgZWxmMzItaHBwYS5jLgoJKFNPVVJDRV9IRklMRVMpOiBSZW1vdmUgZWxmMzItaHBwYS5oIGFuZCBocHBhX3N0dWJzLmguCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogQ29tbWVudCBvdXQgYmZkX2VsZjMyX2hwcGFfdmVjLgoKMjAwMC0wMi0xOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2spOiBVc2UgZnJlZSgpLCBiZWNhdXNlIHRoZXJlCglpcyBubyBiZmRfZnJlZSgpLiAgUmV2ZXJ0IGJmZF9mcmVlIHBhcnQgb2YgcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wMi0xOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2spOiBEb24ndCB1c2UgdmFyaWFibGUtc2l6ZQoJYXJyYXlzLgoJKGNvZmZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogVXNlIGJmZF9mcmVlIHRvIHBhaXIKCWJmZF9tYWxsb2MuCgkoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBMaWtld2lzZS4KCgkqIGNvZmYtcnM2MDAwLmMgKHhjb2ZmX2hvd3RvX3RhYmxlXzE2KTogTmV3IHZhcmlhYmxlLgoJKHhjb2ZmX3J0eXBlMmhvd3RvKTogSGFuZGxlIDE2LWJpdCB2YXJpYW50cyBvZiAzMi1iaXQgcmVsb2NzLgoKMjAwMC0wMi0xOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBjb2ZmLXJzNjAwMC5jIChYQ09GRkFSTUFHQklHKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2FyX2ZpbGVfaGRyX2JpZyk6IE5ldyBzdHJ1Y3R1cmUuCgkoU0laRU9GX0FSX0ZJTEVfSERSX0JJRyk6IE5ldyBtYWNyby4KCSh4Y29mZl9hcl9oZHJfYmlnKTogTmV3IHN0cnVjdHVyZS4KCShTSVpFT0ZfQVJfSERSX0JJRyk6IE5ldyBtYWNyby4KCSh4Y29mZl9iaWdfZm9ybWF0X3ApOiBOZXcgbWFjcm8uCgkoeGNvZmZfYXJkYXRhX2JpZyk6IE5ldyBtYWNyby4KCShhcmNoX3hoZHJfYmlnKTogTmV3IG1hY3JvLgoJKHhjb2ZmX3NsdXJwX2FybWFwKTogSGFuZGxlIGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX2FyY2hpdmVfcCk6IERldGVjdCBsYXJnZSBhcmNoaXZlcy4KCSh4Y29mZl9yZWFkX2FyX2hkcik6IEhhbmRsZSBsYXJnZSBhcmNoaXZlcy4KCSh4Y29mZl9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUpOiBIYW5kbGUgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfZ2VuZXJpY19zdGF0X2FyY2hfZWx0KTogSGFuZGxlIGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX3dyaXRlX2FybWFwX29sZCk6IFJlbmFtZSBmcm9tIHhjb2ZmX3dyaXRlX2FybWFwLgoJKHhjb2ZmX3dyaXRlX2FybWFwX2JpZyk6IE5ldyBmdW5jdGlvbi4KCSh4Y29mZl93cml0ZV9hcm1hcCk6IE5ldyBmdW5jdGlvbiwgZGlzcGF0Y2ggdG8gX29sZCBvciBfYmlnLgoJKHhjb2ZmX3dyaXRlX2FyY2hpdmVfY29udGVudHNfb2xkKTogUmVuYW1lIGZyb20KCXhjb2ZmX3dyaXRlX2FyY2hpdmVfY29udGVudHMuCgkoeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50c19iaWcpOiBOZXcgZnVuY3Rpb24uCgkoeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50cyk6IE5ldyBmdW5jdGlvbiwgZGlzcGF0Y2ggdG8gX29sZCBvcgoJX2JpZy4KCjIwMDAtMDItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlKTogUmVtb3ZlIGNvcHlfaW5kaXJlY3QKCWFuZCBoaWRlX3N5bWJvbCBtZW1iZXJzLgoJKGVsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IFJlbW92ZS4KCShlbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogUmVtb3ZlLgoJKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGVsZl9iYWNrZW5kX2NvcHlfaW5kaXJlY3Rfc3ltYm9sCglhbmQgZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wuCgkoX2JmZF9lbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBEZWNsYXJlLgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IERlY2xhcmUuCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IFJlbW92ZSB0YWJsZSBhcmd1bWVudC4KCShfYmZkX2VsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBMaWtld2lzZS4KCShfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdCk6IERvbid0IGluaXQga2lsbGVkIG1lbWJlcnMuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogVXNlIHRoZSBiZWQgZnVuY3Rpb24KCXBvaW50ZXJzIG5vdCBlbGZfbGlua19oYXNoX3tjb3B5X2luZGlyZWN0LGhpZGVfc3ltYm9sfS4KCShlbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24pOiBMaWtld2lzZS4KCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogRGVmYXVsdC4KCShlbGZfYmFja2VuZF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZk5OX2JlZCk6IFVwZGF0ZSBmb3IgbmV3IG1lbWJlcnMuCgoyMDAwLTAyLTE3ICBLZXZpbiBCdWV0dG5lciAgPGtldmluYkByZWRoYXQuY29tPgoKCSogcnM2MDAwLWNvcmUuYyAoQ09SRV9EQVRBX1NJWkVfRklFTEQsIENPUkVfQ09NTV9GSUVMRCwgU0FWRV9GSUVMRCwKCVNUQUNLX0VORF9BRERSKTogRGVmaW5lIGZvciBuZXcgY29yZSBmaWxlIGZvcm1hdC4KCShMT0FERVJfT0ZGU0VUX0ZJRUxELCBMT0FERVJfUkVHSU9OX1NJWkUsIENPUkVfRFVNUCk6IE5ldyBkZWZpbmVzCglmb3IgaGFuZGxpbmcgdGhlIHZhZ2FyaWVzIG9mIHRoZSB2YXJpb3VzIGNvcmUgZmlsZSBzdHJ1Y3R1cmVzIHVzZWQKCWJ5IEFJWCBvdmVyIHRoZSB5ZWFycy4KCShyczYwMDBjb2ZmX2NvcmVfcCwgcnM2MDAwY29mZl9jb3JlX2ZpbGVfbWF0Y2hlc19leGVjdXRhYmxlLAoJUnM2a0NvckRhdGEpOiBVc2UgYWJvdmUgZGVmaW5lcyB0byBhZGFwdCBjb2RlIHRvIHVzZSBBSVggNC4zJ3MKCWNvcmVfZHVtcHggc3RydWN0dXJlLgoKMjAwMC0wMi0xNyAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfc2gyLCBiZmRfbWFjaF9zaF9kc3ApOiBOZXcgbWFjcm9zLgoJKGJmZF9tYWNoX3NoM19kc3ApOiBMaWtld2lzZS4KCShiZmRfbWFjaF9zaDQpOiBSZWluc3RhdGUuCgkoYmZkX2RlZmF1bHRfc2Nhbik6IFJlY29nbml6ZSA3NDEwLCA3NzA4LCA3NzI5IGFuZCA3NzUwLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmYtc2guYyAoc3RydWN0IHNoX29wY29kZSk6IGZsYWdzIGlzIG5vIGxvbmdlciBzaG9ydC4KCShVU0VTQVMsIFVTRVNBU19SRUcsIFVTRVNSOCwgU0VUU0FTLCBTRVRTQVNfUkVHKTogTmV3IG1hY3Jvcy4KCShzaF9vcGNvZGU0MSwgc2hfb3Bjb2RlNDIpOiBJbnRlZ3JhdGUgYXMgc2hfb3Bjb2RlNDEuCgkoc2hfb3Bjb2RlMDEsIHNoX29wY29kZTAyLCBzaF9vcGNvZGU0MCk6IEFkZCBzaC1kc3Agb3Bjb2Rlcy4KCShzaF9vcGNvZGU0MSwgc2hfb3Bjb2RlNCwgc2hfb3Bjb2RlODApOiBMaWtld2lzZS4KCShzaF9vcGNvZGVzKTogTm8gbG9uZ2VyIGNvbnN0LgoJKHNoX2RzcF9vcGNvZGVmMCwgc2hfZHNwX29wY29kZWYpOiBOZXcgYXJyYXlzLgoJKHNoX2luc25fdXNlc19yZWcpOiBDaGVjayBmb3IgVVNFU0FTIGFuZCBVU0VTUjguCgkoc2hfaW5zbl9zZXRzX3JlZywgc2hfaW5zbnNfY29uZmxpY3QpOiBDaGVjayBmb3IgU0VUU0FTLgoJKF9iZmRfc2hfYWxpZ25fbG9hZF9zcGFuKTogUmV0dXJuIGVhcmx5IGZvciBTSDQuCglNb2RpZnkgc2hfb3Bjb2RlcyBsb29rdXAgdGFibGUgZm9yIHNoLWRzcCAvIHNoMy1kc3AuCglUYWtlIGludG8gYWNjb3VudCB0aGF0IGZpZWxkIGIgb2YgYSBwYXJhbGxlbCBwcm9jZXNzaW5nIGluc24KCWNvdWxkIGJlIG1pc3Rha2VuIGZvciBhIHNlcGFyYXRlIGluc24uCgkqIGNwdS1zaC5jIChhcmNoX2luZm9fc3RydWN0KTogTmV3IGFycmF5IGVsZW1lbnRzIGZvcgoJc2gyLCBzaC1kc3AgYW5kIHNoMy1kc3AuCglSZWluc3RhdGUgZWxlbWVudCBmb3Igc2g0LgoJKFNIMl9ORVhULCBTSF9EU1BfTkVYVCwgU0gzX0RTUF9ORVhUKTogTmV3IG1hY3Jvcy4KCShTSDRfTkVYVCk6IFJlaW5zdGF0ZS4KCShTSDNfTkVYVCwgU0gzRV9ORVhUKTogQWRqdXN0LgoJKiBlbGYtYmZkLmggKF9zaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IERlY2xhcmUuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9zZXRfcHJpdmF0ZV9mbGFncyk6IE5ldyBmdW5jdGlvbi4KCShzaF9lbGZfY29weV9wcml2YXRlX2RhdGEsIHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzKTogTGlrZXdpc2UuCgkoc2hfZWxmX21lcmdlX3ByaXZhdGVfZGF0YSk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9vYmplY3RfcCwgYmZkX2VsZjMyX2JmZF9zZXRfcHJpdmF0ZV9iZmRfZmxhZ3MpOiBEZWZpbmUuCgkoYmZkX2VsZjMyX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBEZWZpbmUuCgkoYmZkX2VsZjMyX2JmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ2hhbmdlIHRvCglzaF9lbGZfbWVyZ2VfcHJpdmF0ZV9kYXRhLgoKMjAwMC0wMi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUpOiBBZGQgY29weV9pbmRpcmVjdCBhbmQKCWhpZGVfc3ltYm9sIG1lbWJlcnMuCgkoZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogTmV3LgoJKGVsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBOZXcuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQnJlYWsgb3V0IGNvcHkgZnJvbQoJaW5kaXJlY3QgbmV3IG5ldyBzeW1ib2wgdG8gZWxmLmMuCgkoZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uKTogQnJlYWsgb3V0IHByaXZhdGl6YXRpb24gb2YKCW5vbi1leHBvcnRlZCBzeW1ib2wgdG8gZWxmLmMuCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IE5ldy4KCShfYmZkX2VsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBOZXcuCgkoX2JmZF9lbGZfbGlua19oYXNoX3RhYmxlX2luaXQpOiBJbml0IGNvcHlfaW5kaXJlY3QgYW5kIGhpZGVfc3ltYm9sLgoKMjAwMC0wMi0xMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBzZWN0aW9uLmMgKF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCk6IEFkZCBpbmZvIHBhcmFtZXRlci4KCUlmIGl0IHBhc3NlZCBhcyBub24tTlVMTCwgdXNlIGl0IHRvIGNoZWNrIHdoZXRoZXIgYW55IGlucHV0IEJGRAoJaGFzIGFuIGlucHV0IHNlY3Rpb24gd2hpY2ggdXNlcyB0aGlzIG91dHB1dCBzZWN0aW9uLiAgQ2hhbmdlIGFsbAoJY2FsbGVycy4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKCSogYmZkLWluLmg6IE1vdmUgZGVjbGFyYXRpb25zIG9mIGJmZF9nZXRfZWxmX3BoZHJfdXBwZXJfYm91bmQgYW5kCgliZmRfZ2V0X2VsZl9waGRycyBpbiBmcm9tIGJmZC1pbjIuaCwgY29ycmVjdGluZyBwYXRjaCBvZgoJMTk5OS0xMS0yOS4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMjAwMC0wMi0xMCAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIGNvZmZzd2FwLmggKGNvZmZfc3dhcF9zeW1faW4pOiBBZGQgaG9vayBTV0FQX1NZTV9JTl9QT1NUIHRvCglhbGxvdyBmaW5hbCBtb2RpZmljYXRpb25zIG9mIHN3YXBwZWQtaW4gc3ltYm9sLgoJKGNvZmZfc3dhcF9zeW1fb3V0KTogRGl0dG8gd2l0aCBTV0FQX1NZTV9PVVRfUE9TVC4KCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9yZWxvY3MpOiBVc2UgbWFjcm8KCVNFQ1RJT05fUkVMQVRJVkVfQUJTT0xVVEVfU1lNQk9MX1AgaWYgZGVmaW5lZCB0byBkZXRlcm1pbmUgd2hldGhlcgoJc3ltYm9sIGluZGV4IHNob3VsZCBiZSBzZXQgdG8gLTEuCgoyMDAwLTAyLTEwICBUb3NoaXlhc3UgTW9yaXRhICh0b3NoaS5tb3JpdGFAc2VnYS5jb20pCgoJKiBjb2ZmLXNoLmMgKFVTRVMxX1JFRywgVVNFUzJfUkVHLCBTRVRTMV9SRUcsIFNFVFMyX1JFRywKCVVTRVNGMV9SRUcsIFVTRVNGMl9SRUcsIFNFVFNGMV9SRUcsIFNFVFNGMl9SRUcpOiBOZXcgbWFjcm9zLgoJKiAoc2hfaW5zbl9zZXRzX3JlZywgc2hfaW5zbl9zZXRzX2ZyZWcpOiBOZXcgcHJvdG90eXBlcy4KCSogKHNoX2luc25fc2V0c19yZWcsIHNoX2luc25fdXNlc19vcl9zZXRzX3JlZywgc2hfaW5zbnNfc2V0c19mcmVnLAoJc2hfaW5zbnNfdXNlc19vcl9zZXRzX2ZyZWcpOiBOZXcgZnVuY3Rpb25zLgoJKiAoc2hfaW5zbl91c2VzX3JlZywgc2hfaW5zbl91c2VzX2ZyZWcpOiBVc2UgbmV3IG1hY3Jvcy4KCSogKHNoX2luc25zX2NvbmZsaWN0KTogVXNlIG5ldyBmdW5jdGlvbnMgYW5kIG5ldyBtYWNyb3MgdG8KCWRldGVjdCBjb25mbGljdHMgd2hlbiB0d28gaW5zdHJ1Y3Rpb25zIGJvdGggc2V0IHNhbWUgaW50ZWdlciByZWdpc3RlcnMsCglib3RoIHNldCBzYW1lIGZwIHJlZ2lzdGVyLCBhbmQgYm90aCBzZXQgc3BlY2lhbCByZWdpc3Rlci4KCjIwMDAtMDItMDkgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2ZmZ2VuLmMgKGNvZmZfcmVhbF9vYmplY3RfcCk6IFNldCBhcmNoL21hY2ggaW5mbyBwcmlvciB0bwoJc3dhcHBpbmcgaW4gc2VjdGlvbnMsIHNvIHRoYXQgdGhlIHN3YXBwaW5nIHJvdXRpbmVzIGhhdmUgYWNjZXNzIHRvCgl0aGUgYXJjaC9tYWNoIGluZm8uCgoyMDAwLTAyLTA4IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvZmYtZ28zMi5jOiBVcGRhdGUgY29tbWVudC4gVXBkYXRlIGNvcHlyaWdodC4KCjIwMDAtMDEtMjcgIFRob21hcyBkZSBMZWxsaXMgIDx0ZGVsQHdpbmRyaXZlci5jb20+CgoJKiBzeW1zLmMgKGJmZF9kZWNvZGVfc3ltY2xhc3MpCglUd28gbmV3IGNsYXNzIGNoYXJhY3RlcnMgd2VyZSBhZGRlZCAtICdWJyBhbmQgJ3YnLiAgVGhlCgltZWFuaW5nIG9mICdXJyBpcyBub3cgcmVzdHJpY3RlZCB0byBqdXN0IHdlYWsgbm9uLW9iamVjdAoJc3ltYm9scy4gIFRoaXMgYWxsb3dzIGRpZmZlcmVudGlhdGlvbiBiZXR3ZWVuLCBmb3IgZXhhbXBsZSwKCXdlYWsgZnVuY3Rpb25zIHZzIHdlYWsgb2JqZWN0cy4gIG5tIGZvciBleGFtcGxlIG5vdyBkdW1wczoKCSdXJyA9IHdlYWsgZ2xvYmFsCgkndycgPSB3ZWFrIHVucmVzb2x2ZWQKCSdWJyA9IHdlYWsgZ2xvYmFsIG9iamVjdAoJJ3YnID0gd2VhayB1bnJlc29sdmVkIG9iamVjdAoKCShiZmRfaXNfdW5kZWZpbmVkX3N5bWNsYXNzKTogTmV3IGZ1bmN0aW9uLiAgUmV0dXJuIHRydWUgaWYgdGhlCglnaXZlbiBzeW1ib2wgY2xhc3MgcmVwcmVzZW50cyBhbmQgdW5kZWZpbmVkL3VucmVzb2x2ZWQgc3ltYm9sLgoKCShiZmRfc3ltYm9sX2luZm8pOiBVc2UgYmZkX2lzX3VuZGVmaW5lZF9zeW1jbGFzcyB0byBjaGVjayBmb3IKCXVucmVzb2x2ZWQgc3ltYm9scy4KCgkqIGJmZC1pbjIuaDogQWRkIHByb3RvdHlwZSBmb3IgYmZkX2lzX3VuZGVmaW5lZF9zeW1ib2woKS4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZ2V0X3N5bWJvbF90eXBlKTogSWYgYSBzeW1ib2wgaGFzIHRoZQoJU1RUX0FSTV8xNkJJVCBmbGFnIHNldCwgYnV0IGl0IGlzIG5vdCBhdHRhY2hlZCB0byBhIGRhdGEgb2JqZWN0CglyZXR1cm4gU1RUX0FSTV8xNkJJVCBzbyB0aGF0IGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBjb2RlIGJ5IHRoZQoJZGlzYXNzZW1ibGVyLgoKMjAwMC0wMS0yNyAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogY29mZi1pMzg2LmMgKGkzY29mZl9vYmplY3RfcCk6IFJlbW92ZSBwcm90b3R5cGUuCglVcGRhdGUgY29weXJpZ2h0LgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IEFkZCBjb25zdAoJdG8gbmFtZS4gIFVwZGF0ZSBjb3B5cmlnaHQuCgoJKiB0cmFkLWNvcmUuYyAodHJhZF91bml4X2NvcmVfZmlsZV9wKTogQ2FzdCBjb3JlX3JlZ3NlYwoJYXNzaWdubWVudCB0byBhdm9pZCB3YXJuaW5nLiAgVXBkYXRlIGNvcHlyaWdodC4KCjIwMDAtMDEtMjQgIFJvYmVydCBMaXBlICAocm9iZXJ0bEBzY28uY29tKQoKCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBHZXQgYnVmZiB2aWEgYmZkX21hbGxvYwoJaW5zdGVhZCBvZiB1c2luZyBHTlUgQyBleHRlbnNpb24uCgoyMDAwLTAxLTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogbGliYmZkLmMgKGJmZF9yZWFkKTogRG8gbm90IGF0dGVtcHQgdG8gZ2V0IGEgbmVnYXRpdmx5IHNpemVkCglhbW91bnQgZnJvbSBhIGJmZF9pbl9tZW1vcnkgc3RydWN0dXJlLgoJKGJmZF9zZWVrKTogRG8gbm90IGFsbG93IHNlZWtzIHBhc3QgdGhlIGVuZCBvZiBhIGJmZF9pbl9tZW1vcnkKCXN0cnVjdHVyZS4KCjIwMDAtMDEtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsaW5rZXIuYyAoZGVmYXVsdF9pbmRpcmVjdF9saW5rX29yZGVyKTogb29wcyAtIGZpeCBpbmNvcnJlY3RseQoJYXBwbGllZCBwYXRjaCBmcm9tIFRpbSBXYWxsLgoKMjAwMC0wMS0xMyAgVGltb3RoeSBXYWxsICh0d2FsbEB0aWFjLm5ldD4KCgkqIGNvZmZjb2RlLmg6IFVzZSBiZmRfY29mZl94eHggaW5zdGVhZCBvZiB0aGUgbWFjcm8gWFhYICh3aGVyZSB4eHgKCT0gc2NuaHN6LCBmaWxoc3osIHJlbHN6LCBhb3V0c3osIGV0YykKCgkqIGNvZmZzd2FwLmg6IERpdHRvLgoKMjAwMC0wMS0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl90aHVtYl90b19hcm1fc3R1Yik6IEZpeCBvZmZzZXQgaW4gYnJhbmNoIHRvCglpbnRlcndvcmsgdGh1bWIgdG8gYXJtIHN0dWIuCgoyMDAwLTAxLTEzICBUaW1vdGh5IFdhbGwgKHR3YWxsQHRpYWMubmV0PgoKCSogYXJjaHVyZXMuYyAoYmZkX29jdGV0c19wZXJfYnl0ZSk6IE5ldyBmdW5jdGlvbjogUmV0dXJuCgl0YXJnZXQgYnl0ZSBzaXplLgoJKGJmZF9hcmNoX21hY2hfb2N0ZXRzX3Blcl9ieXRlKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdGFyZ2V0CglieXRlIHNpemUuCgoJKiBzZWN0aW9uLmM6IERpc3Rpbmd1aXNoIGJldHdlZW4gb2N0ZXRzIGFuZCBieXRlcyBmb3IgdXNhZ2Ugb2YKCV9jb29rZWRfc2l6ZSwgIF9yYXdfc2l6ZSwgYW5kIG91dHB1dF9vZmZzZXQuICBDbGFyaWZ5CglkZXNjcmlwdGlvbiBvZiBiZmRfc2V0X3NlY3Rpb25fY29udGVudHMuCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBjb2ZmZ2VuLmM6IEluZGljYXRlIHRoYXQgdGhlIG9mZnNldCBwYXJhbWV0ZXIgaXMgaW4gYnl0ZXMsIG5vdAoJb2N0ZXRzLgoKCSogY29mZmxpbmsuYyAoYmZkX2NvZmZfbGlua19pbnB1dF9iZmQpOiBVc2UgYmZkX29jdGV0c19wZXJfYnl0ZQoJd2hlcmUgYXBwcm9wcmlhdGUgdG8gZ2V0IHRoZSBvY3RldCBvZmZzZXQgd2hlbiBjYWxsaW5nCgliZmRfc2V0X3NlY3Rpb25fY29udGVudHMuCgkoYmZkX2NvZmZfcmVsb2NfbGlua19vcmRlcik6IERpdHRvLgoKCSogbGlua2VyLmMgKGJmZF9nZW5lcmljX3JlbG9jX2xpbmtfb3JkZXIpOiBEaXR0by4KCShfYmZkX2RlZmF1bHRfbGlua19vcmRlcik6IERpdHRvLgoKCSogcmVsb2MuYyAoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbik6ICBEaXN0aW5ndWlzaCBiZXR3ZWVuIG9jdGV0cwoJYW5kIGJ5dGVzLiAgVXNlIG9jdGV0cyB3aGVuIGluZGV4aW5nIGludG8gb2N0ZXQgZGF0YTsgdXNlIGJ5dGVzCgl3aGVuIGNhbGN1bGF0aW5nIHRhcmdldCBhZGRyZXNzZXMuCgkoYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IERpdHRvLgoKCSogc3JlYy5jIChzcmVjX3dyaXRlX3NlY3Rpb24pOiBEaXR0by4KCjIwMDAtMDEtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLW1jb3JlLmMgKENPRkZfREVGQVVMVF9TRUNUSU9OX0FMSUdOTUVOVF9QT1dFUik6IENoYW5nZSBmcm9tCgkzIHRvIDIuICBUaGlzIGFsbG93cyA0IGJ5dGUgc2l6ZWQgc2VjdGlvbnMsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IKCWRsbHRvb2wgdG8gYnVpbGQgZnVuY3Rpb25pbmcgRExMcy4KCjIwMDAtMDEtMTAgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvbmZpZy5iZmQgKGFybSotKi1saW51eC1nbnUqKTogTWF0Y2ggaW5zdGVhZCBvZiBhcm0qLSotbGludXgtZ251LgoJKGFybSotKi1jb25peCopOiBOZXcgdGFyZ2V0LgoKMjAwMC0wMS0xMCAgRWdvciBEdWRhICA8ZGVvQGxvZ29zLW0ucnU+CgoJKiBjb25maWcuYmZkOiBJbmNsdWRlIGVsZjMyX2kzODYgdmVjdG9yIHRvIHRhcmdldCBsaXN0IGZvciBjeWd3aW4KCWFuZCBtaW5ndy4KCgkqIGNvbmZpZy5pbjogVW5kZWZpbmUgSEFWRV9XSU4zMl9QU1RBVFVTX1QuCgkqIGNvbmZpZ3VyZS5pbjogVGVzdCBmb3Igc3RydWN0dXJlIHdpbjMyX3BzdGF0dXNfdCBpbgoJPHN5cy9wcm9jZnMuaD4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogZWxmLmMgKGVsZmNvcmVfZ3Jva193aW4zMnBzdGF0dXMpOiBOZXcgZnVuY3Rpb246IHByb2Nlc3MKCXdpbjMyX3BzdGF0dXNfdCBub3RlcyBpbiBlbGYgY29yZSBmaWxlLgoJKGVsZmNvcmVfZ3Jva19ub3RlKTogRGV0ZWN0IHdpbjMyX3BzdGF0dXMgbm90ZXMuCgoyMDAwLTAxLTAzICBNYXJ0aW4gdi4gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IFByb2Nlc3Mgc3ltYm9sCgl2aXNpYmlsaXR5LgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IENvbWJpbmUgdmlzaWJpbGl0aWVzLgoJKiBlbGYuYyAoYmZkX2VsZl9wcmludF9zeW1ib2wpOiBJbnRlcnByZXQgc3Rfb3RoZXIgYXMgdmlzaWJpbGl0eS4KCkZvciBvbGRlciBjaGFuZ2VzIHNlZSBDaGFuZ2VMb2ctOTg5OQoMCkxvY2FsIFZhcmlhYmxlczoKbW9kZTogY2hhbmdlLWxvZwpsZWZ0LW1hcmdpbjogOApmaWxsLWNvbHVtbjogNzQKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpFbmQ6Cg==