VHVlIERlYyAyMiAxNTowOToyNSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoY3Z0Lm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBjcC10cmVlLmggKGNoZWNrX3RlbXBsYXRlX3NoYWRvdywgcG9kX3R5cGVfcCk6IEFkZCBwcm90b3R5cGVzLgoKCSogY3Z0LmM6IEluY2x1ZGUgdG9wbGV2LmguCgoJKiBleGNlcHQuYyAoZ2V0X2VoX2NhdWdodCwgZ2V0X2VoX2hhbmRsZXJzKTogSGlkZSBwcm90b3R5cGVzIGFuZAoJZGVmaW5pdGlvbnMuCgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEluaXRpYWxpemUgdmFyaWFibGUgYGl0eXBlJy4KCgkqIGxleC5jICh5eWVycm9yKTogQ2FzdCB0aGUgYXJndW1lbnQgcGFzc2VkIHRvIGEgY3R5cGUgZnVuY3Rpb24gdG8KCWFuIHVuc2lnbmVkIGNoYXIuCgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9DOXhfbmFtZSk6IFdyYXAgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uCglpbiAiSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA+PSA2NCIuCgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogTWFyayBwYXJhbWV0ZXIgYGNvbnZlcnRfcCcgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCjE5OTgtMTItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFRZUEVfUkFJU0VTX0VYQ0VQVElPTlMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkqIHRyZWUuYyAoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBEb24ndCBjcmFzaCBvbiBlbXB0eSB0aHJvdwoJc3BlY3MuCgoxOTk4LTEyLTE4ICBESiBEZWxvcmllICA8ZGpAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IENoZWNrIGZvciBib3RoIGVycm9yX21hcmtfbm9kZQoJYW5kIE5VTExfTk9ERSBhZnRlciBjYWxsIHRvIGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uLgoKMTk5OC0xMi0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoaW50ZXJlc3Rpbmdfc2NvcGVfcCk6IE5ldyBmbi4KCShkdW1wX3NpbXBsZV9kZWNsKTogVXNlIGl0LgoJKGR1bXBfZXhwciwgY2FzZSBDT05TVFJVQ1RPUik6IEZvcmNlIGEgJiBmb3IgYSBQTUYuCgkoZHVtcF9leHByLCBjYXNlIE9GRlNFVF9SRUYpOiBQcmludCAtPiogaWYgYXBwcm9wcmlhdGUuCgoxOTk4LTEyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBEbyBjb252ZXJzaW9uCgl0byBjb3JyZWN0IHR5cGUgaGVyZSwgcmF0aGVyIHRoYW4gLi4uCgkoaW5zdGFudGlhdGVfdHlwZSk6IEhlcmUuCgoJKiBjcC10cmVlLmggKERFQ0xfVEVNUExBVEVfUEFSTV9QKTogTmV3IG1hY3JvLgoJKERFQ0xfVEVNUExBVEVfVEVNUExBVEVfUEFSTV9QKTogVXNlIGl0LgoJKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogUmVtb3ZlLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogRG9uJ3Qgc2V0IERFQ0xfQ09OVEVYVCBmb3IgYSB0ZW1wbGF0ZQoJcGFyYW1ldGVyLgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IFVzZSBERUNMX1RFTVBMQVRFX1BBUk1fUC4KCSogcHQuYyAocHVzaF9pbmxpbmVfdGVtcGxhdGVfcGFybXNfcmVjdXJzaXZlKTogU2V0IGl0LgoJKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogUmVtb3ZlLgoJKGNoZWNrX3RlbXBsYXRlX3NoYWRvdyk6IFVzZSBERUNMX1RFTVBMQVRFX1BBUk1fUC4KCShwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBTZXQgaXQuCgpXZWQgRGVjIDE2IDE2OjMzOjU4IDE5OTggIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmctc3BlY3MuaCAoZGVmYXVsdF9jb21waWxlcnMpOiBQYXNzIC1NRCwgLU1NRCBhbmQgLU1HIHRvIGNjMXBsdXMKCWlmIGNvbmZpZ3VyZWQgd2l0aCBjcHBsaWIuCgoxOTk4LTEyLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IE1ha2Ugc3VyZSBuc19iaW5kaW5nIGlzIGluaXRpYWxpemVkLgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVbmRvIGluYWR2ZXJ0ZW50IGNoYW5nZSBpbiBwcmV2aW91cwoJcGF0Y2guCgoxOTk4LTEyLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAocHVzaGNsYXNzKTogVHdlYWsgaGFuZGxpbmcgb2YgY2xhc3MtbGV2ZWwgYmluZGluZ3MuCgkocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBVcGRhdGUgcG9pbnRlci10by1tZW1iZXIKCWhhbmRsaW5nLgoJKGluc3RhbnRpYXRlX3R5cGUpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHBvcF9iaW5kaW5nKTogVGFrZSB0aGUgREVDTCB0byBwb3AsIG5vdCBqdXN0IHRoZSBuYW1lLgoJRGVhbCB3aXRoIGBzdHJ1Y3Qgc3RhdCcgaGFjay4KCShiaW5kaW5nX2xldmVsKTogQWRkIHRvIGRvY3VtZW50YXRpb24uCgkocHVzaF9iaW5kaW5nKTogQ2xlYXIgQklORElOR19UWVBFLgoJKGFkZF9iaW5kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbG9jYWxfYmluZGluZyk6IFVzZSBpdC4KCShwdXNoX2NsYXNzX2JpbmRpbmcpOiBMaWtld2lzZS4KCShwb3BsZXZlbCk6IEFkanVzdCBjYWxscyB0byBwb3BfYmluZGluZy4KCShwb3BsZXZlbF9jbGFzcyk6IExpa2V3aXNlLgoJKHB1c2hkZWNsKTogQWRqdXN0IGhhbmRsaW5nIG9mIFRZUEVfREVDTHM7IGFkZCBiaW5kaW5ncyBmb3IgaGlkZGVuCglkZWNsYXJhdGlvbnMgdG8gY3VycmVudCBiaW5kaW5nIGxldmVsLgoJKHB1c2hfY2xhc3NfbGV2ZWxfYmluZGluZyk6IExpa2V3aXNlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogQWRqdXN0IGhhbmRsaW5nIG9mIE9WRVJMT0FEcyBpbiBsb2NhbAoJYmluZGluZ3MuCgkobG9va3VwX25hbWVzcGFjZV9uYW1lKTogRG9uJ3QgY3Jhc2ggd2hlbiBjb25mcm9udGVkIHdpdGggYQoJVEVNUExBVEVfREVDTC4KCShsb29rdXBfbmFtZV9yZWFsKTogRG8gYHN0cnVjdCBzdGF0JyBoYWNrIGluIGxvY2FsIGJpbmRpbmcKCWNvbnRleHRzLgoJKGJ1aWxkX3B0cm1lbWZ1bmNfdHlwZSk6IEFkanVzdCBkb2N1bWVudGF0aW9uLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgYXZvaWQgYnVpbGRpbmcgcmVhbCBhcnJheSB0eXBlcyB3aGVuCglwcm9jZXNzaW5nIHRlbXBsYXRlcyB1bmxlc3MgcmVhbGx5IG5lY2Vzc2FyeS4KCShmaW5pc2hfbWV0aG9kKTogQWRqdXN0IGNhbGxzIHRvIHBvcF9iaW5kaW5nLgoJKiBkZWNsMi5jIChyZXBhcnNlX2Fic2RjbF9hc19leHByKTogUmVjdXJzaXZlbHkgY2FsbCBvdXJzZWx2ZXMsCglub3QgcmVwYXJzZV9kZWNsX2FzX2V4cHIuCgkoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBEZWFsIHdpdGggYSB0ZW1wbGF0ZS1pZCBhcyB0aGUgZnVuY3Rpb24gdG8KCWNhbGwgaW4gYSBNRVRIT0RfQ0FMTF9FWFBSLgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBUd2VhayBwb2ludGVyLXRvLW1lbWJlciBoYW5kbGluZy4KCShtYXliZV9hZGp1c3RfdHlwZXNfRm9yX2RlZHVjdGlvbik6IERvbid0IGRvIHBlY3VsaWFyIHRoaW5ncyB3aXRoCglNRVRIT0RfVFlQRXMgaGVyZS4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBIYW5kbGUgQ09NUE9ORU5UX1JFRnMuICBCdWlsZAoJcG9pbnRlci10by1tZW1iZXIgdHlwZXMgd2hlcmUgbmVjZXNzYXJ5LgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IERvbid0IGF2b2lkIGJ1aWxkaW5nIHJlYWwKCWFycmF5IHR5cGVzIHdoZW4gcHJvY2Vzc2luZyB0ZW1wbGF0ZXMgdW5sZXNzIHJlYWxseSBuZWNlc3NhcnkuCgkoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBDb21wYXJlIHRoZSBleGNlcHRpb24gbGlzdHMgY29ycmVjdGx5LgoKMTk5OC0xMi0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuZGVmIChDUExVU19CSU5ESU5HKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGNwLXRyZWUuaCAoTE9DQUxfQklORElOR19QKTogTmV3IG1hY3JvLgoJKGxhbmdfaWRlbnRpZmllcik6IFJlbmFtZSBsb2NhbF92YWx1ZSB0byBiaW5kaW5ncy4KCSh0cmVlX2JpbmRpbmcpOiBNYWtlIGBzY29wZScgb2YgdHlwZSBgdm9pZConLCBub3QgYHRyZWUnLgoJKEJJTkRJTkdfU0NPUEUpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShJREVOVElGSUVSX0xPQ0FMX1ZBTFVFKTogUmVtb3ZlLgoJKElERU5USUZJRVJfQ0xBU1NfVkFMVUUpOiBEb2N1bWVudC4KCShJREVOVElGSUVSX0JJTkRJTkcpOiBOZXcgbWFjcm8uCgkoSURFTlRJRklFUl9WQUxVRSk6IExpa2V3aXNlLgoJKFRJTUVfSURFTlRJRklFUl9USU1FKTogTGlrZXdpc2UuCgkoVElNRV9JREVOVElGSUVSX0ZJTEVJTkZPKTogTGlrZXdpc2UuCgkoSU1QTElDSVRfVFlQRU5BTUVfUCk6IExpa2V3aXNlLgoJKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlKTogUmVtb3ZlLgoJKHB1c2hfbG9jYWxfYmluZGluZyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX2NsYXNzX2JpbmRpbmcpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAocHVzaGNsYXNzKTogVXBkYXRlIGNvbW1lbnRzOyB1c2UgcHVzaF9jbGFzc19iaW5kaW5nLgoJKiBkZWNsLmMgKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlX3dpdGhfc2NvcGUpOiBSZW1vdmUuCgkoc2V0X2lkZW50aWZpZXJfbG9jYWxfdmFsdWUpOiBMaWtld2lzZS4KCShwdXNoX2JpbmRpbmcpOiBOZXcgZnVuY3Rpb24uCgkocG9wX2JpbmRpbmcpOiBMaWtld2lzZS4KCShiaW5kaW5nX2xldmVsKTogVXBkYXRlIGRvY3VtZW50YXRpb24uICBSZW1vdmUgc2hhZG93ZWQuCgkoQklORElOR19MRVZFTCk6IE5ldyBtYWNyby4KCShmcmVlX2JpbmRpbmdfbm9kZXMpOiBOZXcgdmFyaWFibGUuCgkocG9wbGV2ZWwpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuICBEb24ndCBtZXNzIHVwCglCTE9DS19WQVJzIHdoZW4gZG9pbmcgZm9yLXNjb3BlIGV4dGVuc2lvbi4gIFJlbW92ZSBlZmZlY3RpdmVseQoJZGVhZCBjb2RlLgoJKHB1c2hsZXZlbF9jbGFzcyk6IFR3ZWFrIGZvcm1hdHRpbmcuCgkocG9wbGV2ZWxfY2xhc3MpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkocHJpbnRfYmluZGluZ19sZXZlbCk6IExpa2V3aXNlLgoJKHN0b3JlX2JpbmRpbmdzKTogTGlrZXdpc2UuCgkocHVzaGRlY2wpOiBMaWtld2lzZS4KCShwdXNoZGVjbF9jbGFzc19sZXZlbCk6IExpa2V3aXNlLgoJKHB1c2hfY2xhc3NfbGV2ZWxfYmluZGluZyk6IExpa2V3aXNlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogVXBkYXRlIGNvbW1lbnRzLiAgQWRqdXN0IGZvciBuZXcKCW5hbWUtbG9va3VwIHNjaGVtZS4KCShsb29rdXBfbmFtZV9yZWFsKTogTGlrZXdpc2UuCgkobG9va3VwX25hbWVfY3VycmVudF9sZXZlbCk6IExpa2V3aXNlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkocmVxdWlyZV9jb21wbGV0ZV90eXBlc19mb3JfcGFybXMpOiBMaWtld2lzZS4gIFJlbW92ZSBtaXNsZWFkaW5nCgkjaWYgMCdkIGNvZGUuCgkoZ3Jva19wYXJtcyk6IExpa2V3aXNlLiAgRG9uJ3QgY2FsbAoJcmVxdWlyZV9jb21wbGV0ZV90eXBlc19mb3JfcGFybXMgaGVyZS4KCShncm9rX2N0b3JfcHJvcGVydGllcyk6IERvbid0IHRyZWF0IHRlbXBsYXRlcyBhcyBjb3B5Cgljb25zdHJ1Y3RvcnMuCgkoZ3JvcF9vcF9wcm9wZXJ0aWVzKTogT3IgYXMgYXNzaWdubWVudCBvcGVyYXRvcnMuCgkoc3RhcnRfZnVuY3Rpb24pOiBEb2N1bWVudC4gIEFkanVzdCBmb3IgbmV3IG5hbWUtbG9va3VwIHNjaGVtZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZG9fbG9jYWxfdXNpbmdfZGVjbCk6IFVzZSBwdXNoX2xvY2FsX2JpbmRpbmcuCgkqIGxleC5jIChiZWdpbl9kZWZpbml0aW9uX29mX2luY2xhc3NfaW5saW5lKTogTmV3IGZ1bmN0aW9uLCBzcGxpdAoJb3V0IGZyb20gLi4uCgkoZG9fcGVuZGluZ19pbmxpbmVzKTogSGVyZSwgYW5kIC4uLgoJKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiBIZXJlLgoJKGdldF90aW1lX2lkZW50aWZpZXIpOiBVc2UgVElNRV9JREVOVElGSUVSXyogbWFjcm9zLgoJKGluaXRfZmlsZW5hbWVfdGltZXMpOiBMaWtld2lzZS4KCShleHRyYWN0X2ludGVyZmFjZV9pbmZvKTogTGlrZXdpc2UuCgkoc3RlX3R5cGVkZWNsX2ludGVyZmFjZV9pbmZvKTogTGlrZXdpc2UuCgkoY2hlY2tfbmV3bGluZSk6IExpa2V3aXNlLgoJKGR1bXBfdGltZV9zdGF0aXN0aWNzKTogTGlrZXdpc2UuCgkoaGFuZGxlX2NwX3ByYWdtYSk6IExpa2V3aXNlLgoJKGRvX2lkZW50aWZpZXIpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFJldHVybiBjdG9yX2luaXRpYWxpemVyX29wdCB2YWx1ZS4KCShmbmRlZik6IFVzZSBpdC4KCShmbi5kZWZwZW4pOiBQYXNzIGFwcHJvcHJpYXRlIHZhbHVlcyB0byBzdGFydF9mdW5jdGlvbi4KCShwZW5kaW5nX2lubGluZSk6IFVzZSBmdW5jdG9yX3RyeV9ibG9jayB2YWx1ZSwgYW5kIHBhc3MKCWFwcHJvcHJpYXRlIHZhbHVlcyB0byBmaW5pc2hfZnVuY3Rpb24uCgkqIHB0LmMgKGlzX21lbWJlcl90ZW1wbGF0ZSk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uOyByZW1vdmUgaGFuZGxpbmcKCW9mIEZVTkNUSU9OX0RFQ0xzLiAgQXMgcGVyIG5hbWUsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGRlYWwgb25seSBpbgoJVEVNUExBVEVfREVDTHMuCgkoZGVjbF90ZW1wbGF0ZV9wYXJtX3ApOiBDaGFuZ2UgbmFtZSBvZiBvbGRkZWNsIHBhcmFtZXRlciB0byBkZWNsLgoJKGNoZWNrX3RlbXBsYXRlX3NoYWRvdyk6IEFkanVzdCBmb3IgbmV3IG5hbWUtbG9va3VwIHNjaGVtZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSh0c3Vic3RfZGVjbCk6IFR3ZWFrIHNvIGFzIG5vdCB0byBjb25mdXNlIG1lbWJlciB0ZW1wbGF0ZXMgd2l0aAoJY29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3JzLgoJKHVuaWZ5KTogSGFuZGxlIFVOSU9OX1RZUEVzLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX2lkZW50aWZpZXIpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkobGFuZ19wcmludF94bm9kZSk6IEFkanVzdCBmb3IgbmV3IG5hbWUtbG9va3VwIHNjaGVtZS4KCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBMaWtld2lzZS4KCShjX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCjE5OTgtMTItMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbGxvdyBmaWVsZCB3aXRoIHNhbWUgbmFtZSBhcyBjbGFzcwoJaW4gZXh0ZXJuICJDIi4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IERvbid0IGxpbWl0IGZpZWxkIGxvb2t1cCB0byB0eXBlcy4KCSogY2xhc3MuYyAoY2hlY2tfbWVtYmVyX2RlY2xfaXNfc2FtZV9pbl9jb21wbGV0ZV9zY29wZSk6IE5vIGVycm9yCglpZiBpY3YgYW5kIHggYXJlIHRoZSBzYW1lLgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IFR3ZWFrIGVycm9yIG1lc3NhZ2UuCgoxOTk4LTEyLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChzdGFydF9lbnVtKTogVXNlIHB1c2hfb2JzdGFja3MsIG5vdAoJZW5kX3RlbXBvcmFyeV9hbGxvY2F0aW9uLgoJKGZpbmlzaF9lbnVtKTogQ2FsbCBwb3Bfb2JzdGFja3MuCgoxOTk4LTEyLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgcmF0aGVyIHRoYW4KCWp1bmsuCgoxOTk4LTEyLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY2FuZGlkYXRlcyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jICh2YWxpZGF0ZV9saHMpOiBSZW1vdmUuCgkocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dAoJYW5kIHRoZW4gc3Vic3RhbnRpYWxseSByZXdvcmtlZCwgZnJvbSAuLi4KCShpbnN0YW50aWF0ZV90eXBlKTogVXNlIGl0LiAgU2ltcGxpZnkuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IENvbXBsYWluIHdoZW4gY2FsbGVyIGhhcyBpbmRpY2F0ZWQKCXRoYXQncyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uICBEb24ndCBjcmFzaCBpZiBpbnN0YW50aWF0ZV90eXBlCglmYWlscy4KCSogcHQuYzogU3Vic3RpdHV0ZSBgcGFyYW1ldGVycycgZm9yIGBwYXJhbXRlcnMnIHRocm91Z2hvdXQuCgkocHJpbnRfY2FuZGlkYXRlcyk6IERvbid0IG1ha2UgaXQgc3RhdGljLgoJKG1vc3Rfc3BlY2lhbGl6ZWRfaW5zdGFudGlhdGlvbik6IFNwbGl0IG91dCBmcm9tIC4uLgoJKG1vc3Rfc3BlY2lhbGl6ZWQpOiBIZXJlLgoKV2VkIERlYyAgOSAxNTozMzowMSAxOTk4ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAobGFuZ19pbml0X29wdGlvbnMpOiBJbml0aWFsaXplIGNwcGxpYi4KCSogZGVjbDIuYyAocGFyc2Vfb3B0aW9ucyxjcHBfaW5pdGlhbGl6ZWQpOiBSZW1vdmVkLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IE1vdmUgaW5pdGlhbGl6YXRpb24gb2YgY3BwbGliIHRvCglsYW5nX2luaXRfb3B0aW9ucy4KCjE5OTgtMTItMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBURU1QTEFURV9ERUNMLCBhcwoJd2VsbCBhcyB0aGUgVFlQRV9ERUNMLCB3aGVuIGEgdHlwZWRlZiBuYW1lIGlzIGFzc2lnbmVkIHRvIGEKCXByZXZpb3VzbHkgYW5vbnltb3VzIHR5cGUuCgoxOTk4LTEyLTA4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBjcC9leGNlcHQuYyAoY2FsbF9laF9pbmZvKTogVXNlIF9fc3RhcnRfY3BfaGFuZGxlciBpbnN0ZWFkIG9mCglfX2NwX2VoX2luZm8gZm9yIGdldHRpbmcgdGhlIGVoIGluZm8gcG9pbnRlci4gIEFkZCB0YWJsZV9pbmRleCB0bwoJZmllbGQgbGlzdC4KCShwdXNoX2VoX2NsZWFudXApOiBEb24ndCBpbmNyZW1lbnQgJ2hhbmRsZXJzJyBkYXRhIGZpZWxkLgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2spOiBEb24ndCBzZXQgdGhlICdjYXVnaHQnIGZpZWxkLgoKCSogY3AvZXhjZXB0aW9uLmNjIChDUF9FSF9JTkZPKTogTmV3IG1hY3JvIGZvciBnZXR0aW5nIHRoZQoJZXhjZXB0aW9uIGluZm8gcG9pbnRlciB3aXRoaW4gbGlicmFyeSByb3V0aW5lcy4KCShfX2NwX2VoX2luZm8pOiBVc2UgQ1BfRUhfSU5GTy4KCShfX3N0YXJ0X2NwX2hhbmRsZXIpOiBHZXQgZXhjZXB0aW9uIGluZm8gcG9pbnRlciwgc2V0IGNhdWdodCBmaWVsZCwKCWFuZCBpbmNyZW1lbnQgdGhlIGhhbmRsZXJzIGZpZWxkLiAgQXZvaWRzIHRoaXMgYmVpbmcgZG9uZSBieSBoYW5kbGVycy4KCShfX3VuY2F0Y2hfZXhjZXB0aW9uLCBfX2NoZWNrX2VoX3NwZWMpOiBVc2UgQ1BfRUhfSU5GTyBtYWNyby4KCSh1bmNhdWdodF9leGNlcHRpb24pOiBVc2UgQ1BfRUhfSU5GTyBtYWNyby4KClR1ZSBEZWMgIDggMTA6NDg6MjEgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZS1sYW5nLmluIChjeHhtYWluLm8pOiBEZXBlbmQgb24gJChERU1BTkdMRV9IKSwgbm90IGRlbWFuZ2xlLmgKCk1vbiBEZWMgIDcgMTc6NTY6MDYgMTk5OCAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBBZGQgc3VwcG9ydCBmb3IgXCBhcyBgbmF0dXJhbCcKCWNoYXJhY3RlcnMgaW4gZmlsZSBuYW1lcyBpbiAjbGluZSB0byBiZSBjb25zaXN0ZW50IHdpdGggI2luY2x1ZGUKCWhhbmRsaW5nLiAgV2Ugc3VwcG9ydCBlc2NhcGUgcHJvY2Vzc2luZyBpbiB0aGUgIyAxICIuLi4iIHZlcnNpb24gb2YKCXRoZSBjb21tYW5kLiAgU2VlIGFsc28gc3VwcG9ydCBpbiBjcC9sZXguYy4KCjE5OTgtMTItMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBjcC9kZWNsMi5jOiBzL2RhdGEvb3B0cy8gd2hlbiBpbml0aWFsaXppbmcgY3BwX3JlYWRlcgoJc3RydWN0dXJlLgoKMTk5OC0xMi0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChidWlsZF90eXBlbmFtZV90eXBlKTogU2V0IERFQ0xfQVJUSUZJQ0lBTC4KCgkqIGVycm9yLmMgKGR1bXBfc2ltcGxlX2RlY2wpOiBBbHNvIHByaW50IG5hbWVzcGFjZSBjb250ZXh0LgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAoYW1iaWd1b3VzX2RlY2wpOiBEb24ndCBwcmludCBvbGQgdmFsdWUgaWYgaXQncwoJZXJyb3JfbWFya19ub2RlLgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRml4IGhhbmRsaW5nIG9mIGxvY2FsIHR5cGVzIHNoYWRvd2VkCglieSBhIG5vbi10eXBlIGRlY2wuICBSZW1vdmUgb2Jzb2xldGUgY29kZS4KCSogY3AtdHJlZS5oIChERUNMX0ZVTkNUSU9OX1NDT1BFX1ApOiBOZXcgbWFjcm8uCgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mcGVybWlzc2l2ZS4KCSogZGVjbDIuYzogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaDogQWRkIGZsYWdfcGVybWlzc2l2ZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IElmIG5laXRoZXIgLWZwZXJtaXNzaXZlIG9yIC1wZWRhbnRpYwoJd2VyZSBzcGVjaWZpZWQsIHNldCBmbGFnX3BlZGFudGljX2Vycm9ycy4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBUdXJuIGRyb3BwZWQgcXVhbGlmaWVyIG1lc3NhZ2VzCgliYWNrIGludG8gcGVkd2FybnMuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoKMTk5OC0xMi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoY29lcmNlX25ld190eXBlKTogVXNlIHNhbWVfdHlwZV9wLgoJKGNvZXJjZV9kZWxldGVfdHlwZSk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChjaGVja19kdG9yX25hbWUpOiBSZXR1cm4gMSwgbm90IGVycm9yX21hcmtfbm9kZS4KCjE5OTgtMTItMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChoYW5kbGVfY3BfcHJhZ21hKTogRGlzYWJsZSAjcHJhZ21hIGludGVyZmFjZS9pbXBsZW1lbnRhdGlvbgoJaWYgTVVMVElQTEVfU1lNQk9MX1NQQUNFUy4KCgkqIHB0LmMgKGNoZWNrX3RlbXBsYXRlX3NoYWRvdyk6IE5ldyBmbi4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogVXNlIGl0LgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogTGlrZXdpc2UuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShzdGFydF9tZXRob2QpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IERvbid0IHRyeSB0byB1c2UgJ3QnIGlmIHdlJ3JlIGRlZmluaW5nLgoKCSogY2FsbC5jIChjaGVja19kdG9yX25hbWUpOiBKdXN0IHJldHVybiBhbiBlcnJvcl9tYXJrX25vZGUuCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IENvbXBsYWluIGFib3V0IHVzaW5nIG5vbi10ZW1wbGF0ZSBoZXJlLgoJKiBwYXJzZS55IChhcHBhcmVudF90ZW1wbGF0ZV90eXBlKTogTm90IGhlcmUuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IENvbXBsYWluIGFib3V0IHNwZWNpYWxpemF0aW9uCgl3aXRoIEMgbGlua2FnZS4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZ7bm8tLH1pbXBsaWNpdC1pbmxpbmUtdGVtcGxhdGVzLgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogRG9uJ3QgYXNzdW1lIHRoYXQgYW55IGludGVnZXIKCWFyZ3VtZW50IGlzIGludGVuZGVkIHRvIGJlIGEgY29uc3RhbnQtZXhwcmVzc2lvbi4KCjE5OTgtMTItMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChoYW5kbGVfdXNpbmdfZGVjbCk6IEZpeCBjb21tZW50LiAgRG9uJ3QgbG9va3VwCgljb25zdHJ1Y3RvcnMgaW4gYmFzZSBjbGFzc2VzLgoJKHZhbGlkYXRlX2xocyk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IERvbid0IHJldHVybiBhIFVTSU5HX0RFQ0wuCgoJKiBjcC10cmVlLmggKERFQ0xfQUNDRVNTKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoKCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBEb24ndCBzZXQgdGhlIGluaXRpYWxpemF0aW9uLWRvbmUKCWZsYWcgdW50aWwgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCgoxOTk4LTEyLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBDb21wbGFpbiBhYm91dCB1c2luZwoJZGVjbGFyYXRpb25zIGZvciBjbGFzcyBtZW1iZXJzLgoKMTk5OC0xMS0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBVc2Ugc2FtZV90eXBlX3AuCgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogRG9uJ3Qgd2FybiBhYm91dCBudWxsIGRlY2wgaW5zaWRlIGEKCWNsYXNzLgoKCSogcHQuYyAodW5pZnksIGNhc2UgT0ZGU0VUX1RZUEUpOiBQYXNzIGRvd24gJ3N0cmljdCcgcmF0aGVyIHRoYW4KCVVOSUZZX0FMTE9XX05PTkUuCgkoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogVXNlIFRZUEVfUFRSTUVNRlVOQ19GTl9UWVBFLgoJKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IFN0cmlwIGJhc2VsaW5rcy4KCkZyaSBOb3YgMjcgMTM6MDc6MjMgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZysrc3BlYy5jOiBEb24ndCBwcm90b3R5cGUgeG1hbGxvYy4KCjE5OTgtMTEtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBVc2UgVFlQRV9QVFJfUCB0byBjaGVjayBmb3IgcG9pbnRlcnMuCgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogRG8gY29tcGxhaW4gYWJvdXQgbnVsbCBmcmllbmQgZGVjbCBhdAoJZmlsZSBzY29wZS4KCjE5OTgtMTEtMjUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IENsZWFyIHRoZSB3aG9sZSBzdHJ1Y3QgbGFuZ190eXBlLCBub3QKCW9ubHkgdGhlIGZpcnN0IG11bHRpcGxlIG9mIHNpemVvZiAoaW50KS4KCjE5OTgtMTEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IEFuIGV4cGxpY2l0IHNwZWNpYWxpemF0aW9uIG9mIGEgc3RhdGljIGRhdGEKCW1lbWJlciBpcyBvbmx5IGEgZGVmaW5pdGlvbiBpZiBpdCBoYXMgYW4gaW5pdGlhbGl6ZXIuCgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogVXNlIGNwX2ZpbmlzaF9kZWNsIGZvciB0aGUgdGhyb3cgdGVtcC4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFBhc3MgRElSRUNUX0JJTkQgZG93biBpbnRvCgljcF9maW5pc2hfZGVjbC4KCSogaW5pdC5jIChleHBhbmRfZGVmYXVsdF9pbml0KTogQ2hlY2sgZm9yIERJUkVDVF9CSU5EIGluc3RlYWQgb2YKCURFQ0xfQVJUSUZJQ0lBTC4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVXNlIGJ1aWxkX2RlY2wuCgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogSnVzdCB1c2UgY29udmVydCwgbm90CglidWlsZF9yZWludGVycHJldF9jYXN0LgoKCSogbGV4LmMgKGhhbmRsZV9nZW5lcmljX3ByYWdtYSk6IFVzZSB0b2tlbl9idWZmZXIuCgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbnVsbCBmcmllbmQgZGVjbC4KCjE5OTgtMTEtMjQgIERhdmUgUGl0dHMgIDxkcGl0dHNAY296eC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKERFTUFOR0xFUl9QUk9HKTogTW92ZSB0aGUgb3V0cHV0IGFyZ3VtZW50cyB0byB0aGUKCWZpcnN0IHBvc2l0aW9uLgoJKiBsZXguYyAoY2hlY2tfbmV3bGluZSk6IFVzZSBJU0FMUEhBLgoJKHJlYWRlc2NhcGUpOiBVc2UgSVNHUkFQSC4KCSh5eWVycm9yKTogVXNlIElTR1JBUEguCgoxOTk4LTExLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IERvIG5vdCB1c2UgaW5pdGlhbAoJQ0xBU1NUWVBFX0FCU1RSQUNUX1ZJUlRVQUxTLgoJKiB0eXBlY2syLmMgKGFic3RyYWN0X3ZpcnR1YWxzX2Vycm9yKTogU2hvdyBsb2NhdGlvbiBvZiBhYnN0cmFjdAoJZGVjbGFyYXRpb24uCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlCglDTEFTU1RZUEVfQUJTVFJBQ1RfVklSVFVBTCwgcmF0aGVyIHRoYW4gcmVjYWxjdWxhdGUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IERvbid0IGJvdGhlciB3b3JraW5nIG91dCB3aGV0aGVyCglnZXRfYWJzdHJhY3RfdmlydHVhbHMgd2lsbCBkbyBhbnl0aGluZywganVzdCBkbyBpdC4KCjE5OTgtMTEtMjQgIEdyYWhhbSAgPGdyYWhhbXNAcmNwLmNvLnVrPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBSZW1vdmUgdW51c2VkIHN0YXRlbWVudC4KCjE5OTgtMTEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBDYXRjaCBpbnZhbGlkIG92ZXJsb2Fkcy4KCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBCdWlsZCB1cCBPVkVSTE9BRHMgcHJvcGVybHkgZm9yIGNvbnZlcnNpb24gb3BzLgoJKiBzZWFyY2guYyAobG9va3VwX2NvbnZlcnNpb25zKTogSGFuZGxlIGdldHRpbmcgcmVhbCBPVkVSTE9BRHMuCgkoYWRkX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuICBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkqIGNhbGwuYyAoYWRkX2NvbnZfY2FuZGlkYXRlKTogUGFzcyB0b3R5cGUgdG8gYWRkX2NhbmRpZGF0ZSBpbnN0ZWFkCglvZiBmbi4gIERvbid0IGFkZCBhIG5ldyBjYW5kaWRhdGUgaWYgdGhlIGxhc3Qgb25lIHdhcyBmb3IgdGhlIHNhbWUKCXR5cGUuCgkocHJpbnRfel9jYW5kaWRhdGVzKTogSGFuZGxlIGdldHRpbmcgYSB0eXBlIGFzIGEgZnVuY3Rpb24uCgkoam91c3QpOiBJZiB3ZSBnb3QgdHdvIGNvbnZlcnNpb24gY2FuZGlkYXRlcyB0byB0aGUgc2FtZSB0eXBlLAoJanVzdCBwaWNrIG9uZS4KCShidWlsZF9vYmplY3RfY2FsbCk6IExvc2UgJ3RlbXBsYXRlcycuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IEhhbmRsZSBnZXR0aW5nIHJlYWwgT1ZFUkxPQURzLgoKMTk5OC0xMS0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBJZiB0aGVyZSBhcmUgZWxlbWVudHMKCXRoYXQgZG9uJ3QgaGF2ZSBpbml0aWFsaXplcnMgYW5kIHRoZXkgbmVlZCB0byBoYXZlIGNvbnN0cnVjdG9ycwoJcnVuLCBzdXBwbHkgdGhlbSB3aXRoIGluaXRpYWxpemVycy4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEEgY2xhc3Mgd2l0aCBhIDAtd2lkdGggYml0ZmllbGQgaXMKCXN0aWxsIGVtcHR5LgoKMTk5OC0xMS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdAoJc3BlY2lhbGl6YXRpb24gdG8gdXNlIGZvciBhIHBhcnRpYWwgaW5zdGFudGlhdGlvbi4gIENvcnJlY3QKCXR5cG9zIGluIGEgY291cGxlIG9mIGNvbW1lbnRzLiAgQXZvaWQgY2FsbGluZyB1c2VzX3RlbXBsYXRlX3Bhcm1zCgltdWx0aXBsZSB0aW1lcy4KCjE5OTgtMTEtMjMgIEJlbmphbWluIEtvc25payAgPGJrb3pAY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBBZGQgY2FsbCB0bwoJYnVpbGRfbWFuZ2xlZF9DOXhfbmFtZSBmb3IgaW50VElfdHlwZV9ub2Rlcy4KCShidWlsZF9tYW5nbGVkX0M5eF9uYW1lKTogQWRkIHByb3RvdHlwZSwgZGVmaW5lLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIG5hbWVzIGZvcgoJVEltb2RlX3R5cGVfbm9kZS4KCjE5OTgtMTEtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG5hbWVkX2NsYXNzX2hlYWQpOiBVcGRhdGUgQ0xBU1NUWVBFX0RFQ0xBUkVEX0NMQVNTLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogU2V0IHRoaW5ncyB1cCBmb3IgMC13aWR0aCBiaXRmaWVsZHMKCWxpa2Ugd2UgZG8gZm9yIG90aGVycy4KCgkqIGRlY2wuYyAoY2hlY2tfdGFnX2RlY2wpOiBOZXcgZm4uCgkoc2hhZG93X3RhZyk6IFNwbGl0IG91dCBmcm9tIGhlcmUuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogQ2FsbCBpdC4KCjE5OTgtMTEtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYzogTG9zZSB3YXJuX2Fib3V0X3JldHVybl90eXBlLgoJKGdyb2tkZWNsYXJhdG9yKTogQWx3YXlzIGNvbXBsYWluIGFib3V0IGltcGxpY2l0IGludCwgZXhjZXB0IGZvcgoJYG1haW4gKCkgeyAuLi4gfScuCgoJKiBkZWNsLmMgKHRhZ19uYW1lKTogTmV3IGZuLgoJKHhyZWZfdGFnKTogQ29tcGxhaW4gYWJvdXQgdXNpbmcgdHlwZWRlZi1uYW1lIGFmdGVyIGNsYXNzLWtleS4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogQWxzbyBrZWVwIGdvaW5nIGlmIGZyb21fYXJyYXkuCgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBBbHNvIGhhbmRsZSB0aGUgb3V0cHV0IG9mCglidWlsZF9vZmZzZXRfcmVmLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBjb25zdHJ1Y3Rvcl9uYW1lIHdoZW4gY29tcGFyaW5nCglmaWVsZCBuYW1lIGFnYWluc3QgZW5jbG9zaW5nIGNsYXNzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2Fub24pOiBMaWtld2lzZS4KCjE5OTgtMTEtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHBvcGxldmVsKTogUmVtb3ZlIGNvZGUgdG8gaGFuZGxlIEtFRVAgPT0gMi4KCShmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCBjb25mdXNlIEJMT0NLLW9yZGVyIHdoZW4KCXByb2Nlc3NpbmcgYSBkZXN0cnVjdG9yLgoKMTk5OC0xMS0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVzX2Zvcl9wYXJtcyk6IENhbGwgbGF5b3V0X2RlY2wKCWFmdGVyIHdlJ3ZlIGNvbXBsZXRlZCB0aGUgdHlwZS4KCjE5OTgtMTEtMjEgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jICh2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCk6IEFsbG93IHVzaW5nIHRlbXBsYXRlcwoJZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KCjE5OTgtMTEtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglIYW5kbGUgc3BlY2lmeWluZyB0ZW1wbGF0ZSBhcmdzIHRvIG1lbWJlciBmdW5jdGlvbiB0ZW1wbGF0ZXMuCgkqIHRyZWUuYyAoYnVpbGRfb3ZlcmxvYWQpOiBBbHdheXMgY3JlYXRlIGFuIE9WRVJMT0FEIGZvciBhIHRlbXBsYXRlLgoJKiBzZWFyY2guYyAoYWRkX2NvbnZlcnNpb25zKTogSGFuZGxlIGZpbmRpbmcgYW4gT1ZFUkxPQUQuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCSogbGV4LmMgKGlkZW50aWZpZXJfdHlwZSk6IFNlZSB0aHJvdWdoIGEgYmFzZWxpbmsuCgkqIHBhcnNlLnkgKGRvX2lkKTogRG9uJ3QgY2FsbCBkb19pZGVudGlmaWVyIGlmIHdlIGdvdCBhIGJhc2VsaW5rLgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlLCBjYXNlIFRSRUVfTElTVCk6IFJlY3Vyc2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgYSBib29sZWFuIGNvbnN0YW50IGZvciBhcnJheQoJYm91bmRzLCBvZGQgYXMgdGhhdCBzb3VuZHMuCgoJKiBwdC5jICh1bmlmeSk6IEJlIG1vcmUgc3RyaWN0IGFib3V0IG5vbi10eXBlIHBhcm1zLCBleGNlcHQgZm9yCglhcnJheSBib3VuZHMuCgkoVU5JRllfQUxMT1dfSU5URUdFUik6IE5ldyBtYWNyby4KCjE5OTgtMTEtMTkgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIE1ha2UtbGFuZy5pbiAobWFuZGlyKTogUmVwbGFjZSBhbGwgdXNlcyBvZiAkKG1hbmRpcikgYnkgJChtYW4xZGlyKS4KCjE5OTgtMTEtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogQ2FsbAoJbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uIGJlZm9yZSBwdXNoX3RlbXBsYXRlX2RlY2wuCglEb24ndCBjYWxsIHB1c2hfdGVtcGxhdGVfZGVjbCBmb3IgYSBzcGVjaWFsaXphdGlvbi4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IERvIHJldHVybiBhIG1lbWJlciB0ZW1wbGF0ZSBjbGFzcy4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIGNsYXNzZXMuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQSBwYXJtIHR5cGUgbmVlZCBub3QgYmUgY29tcGxldGUuCgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBGaXggdGhpbmtvLgoKMTk5OC0xMS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoUFRSTUVNX0NTVF9DTEFTUyk6IEZpeCB0eXBvLgoJKGdsb2JhbF9kZWxldGVfZm5kZWNsKTogTmV3IHZhcmlhYmxlLgoJKiBkZWNsLmMgKGdsb2JhbF9kZWxldGVfZm5kZWNsKTogRGVmaW5lIGl0LgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGl0LgoJKiBpbml0LmMgKGJ1aWxkX2J1aWx0aW5fZGVsZXRlX2NhbGwpOiBVc2UgaXQuCgkqIHRyZWUuYyAobWFwY2FyKTogUmVjdXJzaXZlbHkgY2FsbCBtYXBjYXIgZm9yIHRoZSB0eXBlIG9mIEVYUFIKCW5vZGVzLgoKMTk5OC0xMS0xOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogQWx3YXlzIGNvbXBsYWluIGFib3V0IHVucmVzb2x2ZWQKCXR5cGUuCgoJKiB0cmVlLmMgKGx2YWx1ZV9wXzEpOiBBbiBJTkRJUkVDVF9SRUYgdG8gYSBmdW5jdGlvbiBpcyBhbiBsdmFsdWUuCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBBbHNvIHN1cHBvcnQgcmVmZXJlbmNlcyB0byBmdW5jdGlvbnMuCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IERvbid0IGRlY2F5IGEgZnVuY3Rpb24KCWlmIHRoZSB0YXJnZXQgaXMgYSByZWZlcmVuY2UgdG8gZnVuY3Rpb24uCgoJKiBzZWFyY2guYyAoYWRkX2NvbnZlcnNpb25zKTogR2V0IGFsbCB0aGUgb3ZlcmxvYWRzIGZyb20gYSBjbGFzcy4KCgkqIGRlY2wuYyAoZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBDb21wbGFpbiBhYm91dCBhbnkgY29uc3RydWN0b3IKCXRoYXQgd2lsbCB0YWtlIGEgc2luZ2xlIGFyZyBvZiB0aGUgY2xhc3MgdHlwZSBieSB2YWx1ZS4KCgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogQ2FuJ3QgY3JlYXRlIG9iamVjdHMgb2YKCWFic3RyYWN0IGNsYXNzZXMgdGhpcyB3YXkuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogTWVtYmVyIGZ1bmN0aW9ucyBvZiBsb2NhbCBjbGFzc2VzIGFyZSBub3QKCXB1YmxpYy4KCjE5OTgtMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMpOiBBZGQgZGVwZW5kZW5jeSBvbiBoYXNoLm8uCgoxOTk4LTExLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzKTogQ29tcGxhaW4gYWJvdXQgdmlydHVhbHMgd2l0aAoJbm8gZmluYWwgb3ZlcnJpZGVyLgoJKiB0eXBlY2syLmMgKGFic3RyYWN0X3ZpcnR1YWxzX2Vycm9yKTogUmVtb3ZlIGhhbmRsaW5nIGZvciB2aXJ0dWFscwoJd2l0aCBubyBmaW5hbCBvdmVycmlkZXIuCgkqIGNsYXNzLmMgKG92ZXJyaWRlX29uZV92dGFibGUpOiBEb24ndCBzZXQgREVDTF9BQlNUUkFDVF9WSVJUVUFMX1AKCW9uIHZpcnR1YWxzIHdpdGggbm8gZmluYWwgb3ZlcnJpZGVyLgoKCSogbGV4LmMgKHJlaW5pdF9wYXJzZV9mb3JfYmxvY2spOiBBZGQgYSBzcGFjZSBhZnRlciB0aGUgaW5pdGlhbCAnOicuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEb24ndCByZW1vdmUgemVyby13aWR0aCBiaXQtZmllbGRzIHVudGlsCglhZnRlciBsYXlvdXRfdHlwZS4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBEb24ndCBzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9hbm9uKTogQ29tcGxhaW4gYWJvdXQgbm9uLWZpZWxkcy4KCSogZGVjbDIuYyAoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogTm9ybWFsIGRhdGEgbWVtYmVycyBjYW4ndCBoYXZlIHRoZSBzYW1lCgluYW1lIGFzIHRoZSBjbGFzcywgZWl0aGVyLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2Fub24pOiBOZWl0aGVyIGNhbiBtZW1iZXJzIG9mIGFuCglhbm9ueW1vdXMgdW5pb24uCgoxOTk4LTExLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX0FMSUFTX1NFVCk6IERvY3VtZW50IGxhbmd1YWdlLWRlcGVuZGVudCB1c2VzLgoJKFRZUEVfQklORk8pOiBMaWtld2lzZS4KCShJU19BR0dSX1RZUEUpOiBUd2Vhay4KCShTRVRfSVNfQUdHUl9UWVBFKTogTmV3IG1hY3JvLgoJKENMQVNTX1RZUEVfUCk6IFR3ZWFrLgoJKGxhbmdfdHlwZSk6IEdyb3VwIG1hcmsgYml0ZmllbGRzIHRvZ2V0aGVyLiAgUmVtb3ZlIGxpbmVudW0uCgkoQ0xBU1NUWVBFX1NPVVJDRV9MSU5FKTogUmVtb3ZlIG1hY3JvLgoJKENMQVNTVFlQRV9NQVJLRURfTik6IE5ldyBtYWNyby4KCShTRVRfQ0xBU1NUWVBFX01BUktFRF9OKTogTGlrZXdpc2UuCgkoQ0xFQVJfQ0xBU1NUWVBFX01BUktFRF9OKTogTGlrZXdpc2UuCgkoQ0xBU1NfVFlQRV9NQVJLRURfKik6IFVzZSB0aGVtLgoJKFNFVF9DTEFTU1RZUEVfTUFSS0VEXyopOiBMaWtld2lzZS4KCShDTEVBUl9DTEFTU1RZUEVfTUFSS0VEXyopOiBMaWtld2lzZS4KCShURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8pOiBMaWtld2lzZS4KCShUWVBFX1RFTVBMQVRFX0lORk8pOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTXMgYXMgd2VsbC4KCShUWVBFTkFNRV9UWVBFX0ZVTExOQU1FKTogVXNlIFRZUEVfQklORk8gcmF0aGVyIHRoYW4gQ0xBU1NUWVBFX1NJWkUuCgkqIGNsYXNzLmMgKGNsYXNzX2NhY2hlX29ic3RhY2spOiBOZXcgdmFyaWFibGUuCgkoY2xhc3NfY2FjaGVfZmlyc3RvYmopOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0KTogRG9uJ3Qgc2V0IENMQVNTVFlQRV9TT1VSQ0VfTElORS4KCShwdXNoY2xhc3MpOiBGcmVlIHRoZSBjYWNoZSwgd2hlbiBhcHByb3ByaWF0ZS4KCShwb3BjbGFzcyk6IFRpZHkuCgkobWF5YmVfcHVzaF9jYWNoZV9vYnN0YWNrKTogVXNlIGNsYXNzX2NhY2hlX29ic3RhY2suCgkqIGRlY2wuYyAoaW5jbHVkZSBoYXNoLmgpLgoJKHR5cGVuYW1lX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkodHlwZW5hbWVfY29tcGFyZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBDaGVjayB0aGUgaGFzaCB0YWJsZSB0byBhdm9pZCBjcmVhdGluZwoJZHVwbGljYXRlcy4KCShidWlsZF9wdHJtZW1mdW5jX3R5cGUpOiBVc2UgU0VUX0lTX0FHR1JfVFlQRS4KCShncm9rZGVjbGFyYXRvcik6IFVzZSBDTEFTU19UWVBFX1AuCgkoeHJlZl9iYXNldHlwZXMpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLiAgRG9uJ3QgcHV0IGN1cnJlbnRfY2xhc3NfcmVmIG9uIHRoZQoJcGVybWFuZW50IG9ic3RhY2suCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogVXNlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfSU5GTwoJYW5kIFRZUEVfVElfQVJHUy4KCSogbGV4LmMgKG5vdGVfZ290X3NlbWljb2xvbik6IFVzZSBDTEFTU19UWVBFX1AuCgkobWFrZV9sYW5nX3R5cGUpOiBEb24ndCBjcmVhdGUgVFlQRV9MQU5HX1NQRUNJRklDIGFuZCBhc3NvY2lhdGVkCglmaWVsZHMgZm9yIHR5cGVzIG90aGVyIHRoYW4gY2xhc3MgdHlwZXMuICBEbyBjbGVhciBUWVBFX0FMSUFTX1NFVAoJZm9yIHR5cGVzIG90aGVyIHRoYW4gY2xhc3MgdHlwZXMsIHRob3VnaC4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBVc2UgQ0xBU1NfVFlQRV9QIGFuZAoJVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPLgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBEb24ndCBzZXQKCUNMQVNTVFlQRV9HT1RfU0VNSUNPTE9OLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFVzZSBURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8uCglDb2VyY2UgYXJndW1lbnRzIG9uIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogVXNlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfSU5GTy4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IENhbGN1bGF0ZSB0ZW1wbGF0ZSBhcmd1bWVudHMgb24gdGhlCgltb21lbnRhcnkgb2JzdGFjay4gIFRpZHkuCgkodHN1YnN0X3RlbXBsYXRlX2FyZ192ZWN0b3IpOiBVc2UgbWFrZV90ZW1wX3ZlYy4KCSh0c3Vic3RfYWdncl90eXBlKTogUHV0IHRlbXBsYXRlIGFyZ3VtZW50cyBvbiB0aGUgbW9tZW50YXJ5CglvYnN0YWNrLgoJKHRzdWJzdF9kZWNsKTogTGlrZXdpc2UuCgkodHN1YnN0KTogQ29weSB0aGUgYXJyYXkgYm91bmRzIGluZGV4IHRvIHRoZSBwZXJtYW5lbnQgb2JzdGFjawoJYmVmb3JlIGJ1aWxkaW5nIGluZGV4IHR5cGVzLiAgVXNlIG5ldyBtYWNyb3MuCgkodW5pZnkpOiBVc2UgbmV3IG1hY3Jvcy4KCShkb190eXBlX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9mbmZpZWxkc18xKTogVXNlIG5ldyBtYWNyb3MuCgkoZGZzX3B1c2hkZWNscyk6IEJ1aWxkIGVudmVsb3BlcyBvbiB0aGUgY2FjaGUgb2JzdGFjay4KCShkZnNfY29tcHJlc3NfZGVjbHMpOiBVc2UgbmV3IG1hY3Jvcy4KCShwdXNoX2NsYXNzX2RlY2xzKTogQnVpbGQgb24gdGhlIGNhY2hlIG9ic3RhY2suCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHlwZW9mKTogRG9uJ3Qgc2V0IENMQVNTVFlQRV9HT1RfU0VNSUNPTE9OLgoJKiBzaWduLmMgKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX29yX3JlZmVyZW5jZV90eXBlKTogVXNlCglTRVRfSVNfQUdHUl9UWVBFLgoJKiB0cmVlLmMgKG1ha2VfYmluZm8pOiBDaGVjayBDTEFTU19UWVBFX1AuCgkoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogQWRqdXN0LgoJKG1ha2VfdGVtcF92ZWMpOiBVc2UgcHVzaF9leHByZXNzaW9uX29ic3RhY2suCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogVXNlIG5ldyBtYWNyb3MuCgkoY29tcHR5cGVzKTogTGlrZXdpc2UuCgoxOTk4LTExLTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBBZGQgZGlhZ25vc3RpY3MgZm9yIGludmFsaWQgYXJyYXksIHJlZmVyZW5jZQoJYW5kIHBvaW50ZXIgdG8gbWVtYmVyIHR5cGVzLgoKMTk5OC0xMS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChteV9mcmllbmRseV9hYm9ydCk6IERvbid0IGZhdGFsIHR3aWNlIGluIGEgcm93LgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBVc2UgYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24uCglTaW1wbGlmeS4KCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogRml4IGN1dC1hbmQtcGFzdGUgZXJyb3IuCgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IENvbXBsYWluIGFib3V0IG5vbi1pbnRlZ3JhbCBzaXplLgoKCSogcGFyc2UueSAodW5hcnlfZXhwcik6IENvbXBsYWluIGFib3V0IGRlZmluaW5nIHR5cGVzIGluIHNpemVvZi4KCgkqIHR5cGVjay5jIChleHByX3NpemVvZik6IENvbXBsYWluIGFib3V0IHNpemVvZiBhbiBvdmVybG9hZGVkIGZuLgoKCSogcnR0aS5jIChidWlsZF94X3R5cGVpZCk6IENvbXBsYWluIGFib3V0IHR5cGVpZCB3aXRob3V0CglpbmNsdWRpbmcgPHR5cGVpbmZvPi4KCShnZXRfdHlwZWlkKTogTGlrZXdpc2UuICBDb21wbGFpbiBhYm91dCB0eXBlaWQgb2YgaW5jb21wbGV0ZSB0eXBlLgoJKGdldF90aW5mb19mbl9keW5hbWljKTogTGlrZXdpc2UuCgkoZ2V0X3R5cGVpZF8xKTogTm90IHN0YXRpYyBhbnltb3JlLgoJKiBleGNlcHQuYyAoYnVpbGRfZWhfdHlwZV90eXBlKTogVXNlIGdldF90eXBlaWRfMS4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBHaXZlIGVycm9ycyBmb3IgZHluYW1pY19jYXN0IHRvCglhbWJpZ3VvdXMgb3IgcHJpdmF0ZSBiYXNlcy4gIEZpeCB3YXJuaW5nIGZvciByZWZlcmVuY2UgY2FzdC4KCjE5OTgtMTEtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfVEVNUExBVEVfSU5TVEFOVElBVEVEKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFJlbW92ZSBzcGVjaWFsLWNhc2UgY29kZSB0byBkZWFsIHdpdGgKCXRlbXBsYXRlIGZyaWVuZHMsIGFuZCBqdXN0IGRvIHRoZSBvYnZpb3VzIHRoaW5nLgoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFR3ZWFrIGZvciBjbGFyaXR5LCBhbmQgYWxzbyB0bwoJY2xlYXIgREVDTF9JTklUSUFMIGZvciBhbiBpbnN0YW50aWF0aW9uIGJlZm9yZSBpdCBpcyBtZXJnZWQgd2l0aCBhCglzcGVjaWFsaXphdGlvbi4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEZpeCBpbmRlbnRhdGlvbi4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogSGFuZGxlIGJvdGggZGVmaW5pdGlvbnMgaW4gZnJpZW5kCglkZWNsYXJhdGlvbiBhbmQgb3V0c2lkZSBmcmllbmQgZGVjbGFyYXRpb25zLgoJKHRzdWJzdF9kZWNsKTogRG9uJ3QgY2xlYXIgREVDTF9JTklUSUFMIGZvciBhbiBpbnN0YW50aWF0aW9uLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogVHdlYWsgYWNjb3JkaW5nbHkuCgkoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlLgoKMTk5OC0xMS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogUHJvbW90ZSB3YXJuaW5nIGFib3V0IG5ha2VkCgltZW1iZXIgZnVuY3Rpb24gcmVmZXJlbmNlIHRvIGVycm9yLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBDb21wbGFpbiBhYm91dCBjb252ZXJ0aW5nIGFuIG92ZXJsb2FkZWQKCWZ1bmN0aW9uIHRvIHZvaWQuCgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBKdXN0IHJldHVybiBhIGxvbmUgc3RhdGljIG1lbWJlcgoJZnVuY3Rpb24uCgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogT25seSBjb21wbGFpbiBhYm91dCByZWFsIENPTlNUUlVDVE9ScywKCW5vdCBpbnRlcm5hbCBvbmVzLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBJbXByb3ZlIGVycm9yIGhhbmRsaW5nLgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQ29tcGxhaW4gYWJvdXQgbWFraW5nICdtYWluJyBhIHRlbXBsYXRlLgoKCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBEb24ndCBjb252ZXJ0IGZyb20gd2NoYXJfdFtdIHRvIGNoYXIqLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IEhhbmRsZSBhIEJJVF9OT1RfRVhQUiBhcm91bmQgYQoJVFlQRV9ERUNMIGluIGEgdGVtcGxhdGUuCgoxOTk4LTExLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKG15X2ZyaWVuZGx5X2Fib3J0KTogQWRkIFVSTCBpbiB0aGUgb3RoZXIgY2FzZSwgdG9vLgoKCSogZGVjbC5jIChzdHJ1Y3QgY3BfZnVuY3Rpb24pOiBBZGQgbmFtZWRfbGFiZWxfdXNlcy4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIGl0LgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogUmVzdG9yZSBpdC4KCShkZWZpbmVfbGFiZWwpOiBBbHNvIGNvbXBsYWluIGFib3V0IGp1bXBpbmcgaW50byB0aGUgc2NvcGUgb2YKCW5vbi1QT0Qgb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgY29uc3RydWN0b3JzLgoJKiB0cmVlLmMgKHBvZF90eXBlX3ApOiBOZXcgZm4uCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IENsZWFyIFRZUEVfQkVJTkdfREVGSU5FRCBzb29uZXIuCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IENhbGwgaW1wb3J0X2V4cG9ydF9kZWNsIGhlcmUuCgkoZ2V0X3RpbmZvX2ZuKTogTm90IGhlcmUuCgkqIHJlcG8uYyAocmVwb19nZXRfaWQpOiBBYm9ydCBpZiB3ZSBnZXQgY2FsbGVkIGZvciBhbiBpbmNvbXBsZXRlCgl0eXBlLgoKMTk5OC0xMS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBNYWtlIHN1cmUgZmlyc3QgYXJndW1lbnQgdG8KCV9fY3BfcHVzaF9leGNlcHRpb24gaXMgb2YgdHlwZSBgdm9pZConIHRvIGF2b2lkIHNwdXJpb3VzIGVycm9yCgltZXNzYWdlcy4KCjE5OTgtMTEtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRyeV9vbmVfb3ZlcmxvYWQpOiBUYWtlIG9yaWdfdGFyZ3MgYWdhaW4uICBPbmx5IGNoZWNrIGZvcgoJbWlzbWF0Y2hlcyBhZ2FpbnN0IHRoZW07IHdlIGRvbid0IGNhcmUgd2hhdCBhIHByZXZpb3VzIGNhbGwgZm91bmQuCgkocmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uKTogQWRqdXN0LgoKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IERvbid0IHJldHVybiBhbnl0aGluZyBmb3IgYSBub24tdHlwZQoJZmllbGQgZnJvbSBhIGRlcGVuZGVudCB0eXBlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVzb2x2ZSBTQ09QRV9SRUZzIG9mIHRoZSBjdXJyZW50IGNsYXNzCglpbiBhbiBhcnJheSBkZWNsYXJhdG9yLgoJKHN0YXJ0X2RlY2wpOiBQdXNoIGludG8gdGhlIGNsYXNzIGJlZm9yZSBsb29raW5nIGZvciB0aGUgZmllbGQuCgoxOTk4LTExLTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogSGFuZGxlIFJFRkVSRU5DRV9UWVBFLgoKMTk5OC0xMS0wOCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbGxvdyBuYW1lc3BhY2Utc2NvcGVkIG1lbWJlcnMgaWYgdGhleQoJYXJlIGZyaWVuZHMuCgoxOTk4LTExLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IERvbid0IG1lc3Mgd2l0aCB0aGUgZ2xvYmFsIHZhbHVlIG9mIGFuCgl1bi1tYW5nbGVkIERFQ0xfQVNTRU1CTEVSX05BTUUuCgoxOTk4LTExLTAzICBDaHJpc3RvcGhlciBGYXlsb3IgIDxjZ2ZAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW1vdmUgQ1lHV0lOIGNvbmRpdGlvbmFsCglzaW5jZSBDWUdXSU4gaXMgbm93IGFibGUgdG8gZGVhbCB3aXRoIHRyYXBwaW5nIHNpZ25hbHMuCgpTYXQgTm92ICA3IDE1OjQ4OjAyIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaDogRG9uJ3QgaW5jbHVkZSBnYW5zaWRlY2wuaC4KCSogZXhjZXB0aW9uLmNjOiBJbmNsdWRlIGdhbnNpZGVjbC5oIChzaW5jZSB3ZSBkb24ndCBpbmNsdWRlIGNvbmZpZy5oKQoJKiBnKytzcGVjLmM6IERvbid0IGluY2x1ZGUgZ2Fuc2lkZWNsLmguCgoxOTk4LTExLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgZGVmaW5lZF9pbl9jbGFzcy4gIERlY3JlYXNlCglzaXplIG9mIGR1bW15LgoJKERFQ0xfREVGSU5FRF9JTl9DTEFTU19QKTogTmV3IG1hY3JvLgoJKFRFTVBMQVRFX1BBUk1TX0ZPUl9JTkxJTkUpOiBEb2N1bWVudC4KCShjaGVja19zdGF0aWNfdmFyaWFibGVfZGVmaW5pdGlvbik6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IFNldCBERUNMX0RFRklORURfSU5fQ0xBU1NfUCwgaWYKCWFwcHJvcHJpYXRlLgoJKGNoZWNrX3N0YXRpY192YXJpYWJsZV9kZWZpbml0aW9uKTogU3BsaXQgb3V0IGZyb20gLi4uCgkoZ3Jva2RlY2xhcmF0b3IpOiBIZXJlLgoJKiBwdC5jIChjaGVja19kZWZhdWx0X3RtcGxfYXJncyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBIZXJlLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogRml4IGNvbW1lbnQuCgoxOTk4LTExLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChDUF9UWVBFX0NPTlNUX1ApOiBNYWtlIHswLDF9LXZhbHVlZC4KCShDUF9UWVBFX1ZPTEFUSUxFX1ApOiBMaWtld2lzZS4KCShDUF9UWVBFX1JFU1RSSUNUX1ApOiBMaWtld2lzZS4KCjE5OTgtMTEtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBVc2UgYnVpbGRfaW5kZXhfdHlwZSwgbm90IGJ1aWxkX2luZGV4XzJfdHlwZS4KCjE5OTgtMTEtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBCZSBtb3JlIGhlbHBmdWwuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBDYWxsIGltcG9ydF9leHBvcnRfY2xhc3MuCgoJKiBjcC10cmVlLmggKEVNUFRZX0NPTlNUUlVDVE9SX1ApOiBDaGVjayAhVFJFRV9IQVNfQ09OU1RSVUNUT1IuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogUHJvcGFnYXRlIFRSRUVfSEFTX0NPTlNUUlVDVE9SLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoKMTk5OC0xMS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogRml4IG9mZi1ieS1vbmUgZXJyb3IuCgoxOTk4LTExLTAyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIHBhcnNlLnkgKGFwcGFyZW50X3RlbXBsYXRlX3R5cGUpOiBOZXcgdHlwZS4KCShuYW1lZF9jb21wbGV4X2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSk6IFVzZSBpdC4KCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IE9uZSBuZXcgY29uZmxpY3QuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKMTk5OC0xMS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ09NUEFSRV9TVFJJQ1QpOiBOZXcgbWFjcm8uCgkoQ09NUEFSRV9CQVNFKTogTGlrZXdpc2UuCgkoQ09NUEFSRV9SRUxBWEVEKTogTGlrZXdpc2UuCgkoQ09NUEFSRV9SRURFQ0xBUkFUSU9OKTogTGlrZXdpc2UuCgkoc2FtZV90eXBlX3ApOiBMaWtld2lzZS4KCShzYW1lX29yX2Jhc2VfdHlwZV9wKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IFVzZSB0aGVtLCBpbiBwbGFjZSBvZiBjb21wdHlwZXMKCXdpdGggbnVtZXJpYyBhcmd1bWVudHMuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBMaWtld2lzZS4KCShjb252ZXJ0X2xpa2UpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCShpc19zdWJzZXEpOiBMaWtld2lzZS4KCShpc19wcm9wZXJseV9kZXJpdmVkX2Zyb20pOiBMaWtld2lzZS4KCShjb21wYXJlX2ljcyk6IExpa2V3aXNlLgoJKGpvdXN0KTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzXzEpOiBMaWtld2lzZS4KCShyZXNvbHZlc190b19maXhlZF90eXBlX3ApOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuICBSZW1vdmUgI2lmIDAnZCBjb2RlLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogTGlrZXdpc2UuICBVc2UgQ09NUEFSRV9SRURFQ0xBUkFUSU9OIGhlcmUuCgkocHVzaGRlY2wpOiBMaWtld2lzZS4KCShsb29rdXBfbmFtZV9yZWFsKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4gIENoZWNrIGZvciBpbGxlZ2FsIGFycmF5IGRlY2xhcmF0aW9ucy4KCShncm9rcGFybXMpOiBMaWtld2lzZS4KCShncm9rX29wX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogTGlrZXdpc2UuCgkobWFrZV9mcmllbmRfY2xhc3MpOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfYWdncl9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX3ZlY19pbml0KTogTGlrZXdpc2UuCgkqIHB0LmMgKGlzX21lbWJlcl90ZW1wbGF0ZV9jbGFzcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShpc19zcGVjaWFsaXphdGlvbl9vZik6IFVzZSBDT01QQVJFXyogYW5kIG5ldyBtYWNyb3MuCgkoY29tcF90ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IExpa2V3aXNlLgoJKGNvZXJjZV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKHRlbXBsYXRlX2FyZ3NfZXF1YWwpOiBMaWtld2lzZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCSh1bmlmeSk6IExpa2V3aXNlLgoJKGdldF9iaW5kaW5nc19yZWFsKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChjb3ZhcmlhbnRfcmV0dXJuX3ApOiBMaWtld2lzZS4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IExpa2V3aXNlLgoJKiBzaWcuYyAobWF0Y2hfbWV0aG9kX3R5cGVzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAodmVjX2JpbmZvX21lbWJlcik6IExpa2V3aXNlLgoJKGNwX3RyZWVfZXF1YWwpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogTGlrZXdpc2UuCgkoY29tcF9hcnJheV90eXBlcyk6IExpa2V3aXNlLiAgR2V0IGlzc3VlcyBpbnZvbHZpbmcgdW5rbm93biBhcnJheQoJYm91bmRzIHJpZ2h0LgoJKGNvbXB0eXBlcyk6IFVwZGF0ZSBjb21tZW50cy4gIFVzZSBuZXcgZmxhZ3MuCgkoY29tcF90YXJnZXRfdHlwZXMpOiBVc2UgbmV3IG1hY3Jvcy4KCShjb21wcGFybXMpOiBMaWtld2lzZS4KCShjb21wX3RhcmdldF9wYXJtcyk6IExpa2V3aXNlLgoJKHN0cmluZ19jb252X3ApOiBMaWtld2lzZS4KCShidWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfaW5kaXJlY3RfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCShjb21wX3B0cl90dHlwZXNfcmVhbCk6IExpa2V3aXNlLgoJKHB0cl9yZWFzb25hYmx5X3NpbWlsYXIpOiBMaWtld2lzZS4KCShjb21wX3B0cl90dHlwZXNfY29uc3QpOiBMaWtld2lzZS4KCjE5OTgtMTAtMzEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBGaXggY3V0LWFuZC1wYXN0ZSBlcnJvci4KCjE5OTgtMTAtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogUGFzcyBpbnRlZ2VyX3plcm9fbm9kZSwgbm90CglpbnRlZ2VyX3R3b19ub2RlLCB0byBidWlsZF92ZWNfZGVsZXRlLgoJKiBpbml0LmMgKGJ1aWxkX2FycmF5X2VoX2NsZWFudXApOiBSZW1vdmUuCgkoZXhwYW5kX3ZlY19pbml0X3RyeV9ibG9jayk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfdmVjX2luaXRfY2F0Y2hfY2xhdXNlKTogTGlrZXdpc2UuCgkoYnVpbGRfdmVjX2RlbGV0ZV8xKTogRG9uJ3QgZGVhbCB3aXRoIGNhc2UgdGhhdCBhdXRvX2RlbGV0ZV92ZWMKCW1pZ2h0IGJlIGludGVnZXJfdHdvX25vZGUgYW55bW9yZS4KCShleHBhbmRfdmVjX2luaXQpOiBSZXdvcmsgZm9yIGluaXRpYWxpemF0aW9uLWNvcnJlY3RuZXNzIGFuZAoJZXhjZXB0aW9uLWNvcnJlY3RuZXNzLgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IE1ha2UgbXV0dWFsIGV4Y2x1c2l2aXR5CglvZiBjYXNlcyBtb3JlIG9idmlvdXMuCgoxOTk4LTEwLTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBPSywgb25seSB3YXJuIGlmIG5vdCBsZXhpbmcuCglTaW1wbGlmeSBzdWdnZXN0ZWQgZml4LgoKCSogY3AtdHJlZS5oIChJREVOVElGSUVSX01BUktFRCk6IE5ldyBtYWNyby4KCSogc2VhcmNoLmMgKGxvb2t1cF9jb252ZXJzaW9ucyk6IFVzZSBicmVhZHRoX2ZpcnN0X3NlYXJjaC4KCShhZGRfY29udmVyc2lvbnMpOiBBdm9pZCBhZGRpbmcgdHdvIGNvbnZlcnNpb25zIHRvIHRoZSBzYW1lIHR5cGUuCgkoYnJlYWR0aF9maXJzdF9zZWFyY2gpOiBXb3JrIHdpdGggYmFzZSBiaW5mb3MsIHJhdGhlcgoJdGhhbiBiaW5mb3MgYW5kIGJhc2UgaW5kaWNlcy4KCShnZXRfdmlydHVhbF9kZXN0cnVjdG9yKTogQWRqdXN0LgoJKHRyZWVfaGFzX2FueV9kZXN0cnVjdG9yX3ApOiBBZGp1c3QuCgkoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBBZGp1c3QuCgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IEdlbmVyYWxpemUgY2hlY2sgZm9yIGluY29ycmVjdAoJbnVtYmVyIG9mIHRlbXBsYXRlIHBhcm1zLgoJKGlzX21lbWJlcl90ZW1wbGF0ZV9jbGFzcyk6ICNpZiAwLgoKMTk5OC0xMC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjYzFwbHVzKTogUHV0IENYWF9PQkpTLCBhbmQgdGhlbmNlIEBleHRyYV9jeHhfb2Jqc0AsCglsYXN0LgoKMTk5OC0xMC0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5waHlzLmNvbHVtYmlhLmVkdT4KCgkqIGxleC5jOiBDYWxsIGNoZWNrX25ld2xpbmUgZnJvbSBsYW5nX2luaXQgYWx3YXlzLiAgQWZ0ZXIKCWNhbGxpbmcgY3BwX3N0YXJ0X3JlYWQsIHNldCB5eV9jdXIgYW5kIHl5X2xpbSB0byByZWFkIGZyb20gdGhlCgljcHBsaWIgdG9rZW4gYnVmZmVyLgoKMTk5OC0xMC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IGNvbnNpZGVyIHRlbXBsYXRlcyBmb3IgYSBub3JtYWwKCW1hdGNoLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbm9uLWNvcHkKCWFzc2lnbm1lbnQgb3BzIGluIHVuaW9uIG1lbWJlcnMuCgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBEb24ndCBwYXNzIGF0X2VvZiB0byBpbXBvcnRfZXhwb3J0X3Z0YWJsZS4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IGNhbGwgaW1wb3J0X2V4cG9ydF9jbGFzcy4KCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogRG8gaW1wb3J0L2V4cG9ydCBzdHVmZi4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBMb3NlLgoJKGZpbmlzaF9maWxlKTogRG9uJ3QgY2FsbCBpdC4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgaXQuCgoJKiBpbml0LmMgKGJ1aWxkX2RlbGV0ZSk6IFJlc2V0IFRZUEVfSEFTX0RFU1RSVUNUT1IgaGVyZS4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBOb3QgaGVyZS4KCShzdGFydF9mdW5jdGlvbik6IERvIHNldCBERUNMX0lOSVRJQUwuCgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IENvbXBsYWluIGFib3V0IGRlZmF1bHQgdGVtcGxhdGUKCWFyZ3MgZm9yIGVuY2xvc2luZyBjbGFzc2VzLgoKCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogVHJlYXQgY29udmVyc2lvbiBmdW5jdGlvbnMKCWFzIGNvbWluZyBmcm9tIHRoZSBhcmd1bWVudCdzIGNsYXNzLgoJKiBjcC10cmVlLmggKERFQ0xfQ09OVl9GTl9QKTogTmV3IGZuLgoJKERFQ0xfREVTVFJVQ1RPUl9QKTogQWxzbyBjaGVjayBERUNMX0xBTkdVQUdFLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogVXNlIERFQ0xfQ09OVl9GTl9QLgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fbmFtZSk6IExpa2V3aXNlLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoJKiBwdC5jIChmbl90eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChhZGRfY29udmVyc2lvbnMpOiBMaWtld2lzZS4KCjE5OTgtMTAtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogQWxzbyBnZW5lcmF0ZSBMT09LVVBfRVhQUiBmb3IgUkVTVUxUX0RFQ0wuCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBBbHNvIGNoZWNrIGZvciB1c2luZyBSRVNVTFRfREVDTAoJZnJvbSBvdXRlciBjb250ZXh0LgoKMTk5OC0xMC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgdHlwZV9xdWFscywgcmF0aGVyIHRoYW4gY29uc3RwLAoJY29uc2lzdGVudGx5LgoKMTk5OC0xMC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogaW5zdGFudGlhdGVfdHlwZSBoZXJlLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogQW5kIGhlcmUuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IE5vdCBoZXJlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogTm8gbmVlZCB0byBjb25zIHVwIGFuIE9WRVJMT0FELgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogaW5zdGFudGlhdGVfdHlwZSBoZXJlLgoJKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogQW5kIGhlcmUuCgkqIGRlY2wuYyAoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IE5vdCBoZXJlLgoJKGdyb2twYXJtcyk6IE9yIGhlcmUuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBPciBoZXJlLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IFRha2UgdGhlIGFkZHJlc3Mgb2Ygb3ZlcmxvYWRlZAoJZnVuY3Rpb25zLCB0b28uCgkocmVxdWlyZV9pbnN0YW50aWF0ZWRfdHlwZSk6IExvc2UuCgkoY29udmVydF9hcmd1bWVudHMpOiBEb24ndCBoYW5kbGUgdW5rbm93biB0eXBlcyBoZXJlLgoJKGJ1aWxkX2NfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IEd1dC4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogRG9uJ3QgcmVxdWlyZV9pbnN0YW50aWF0ZWRfdHlwZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogRG9uJ3QgaW5zdGFudGlhdGVfdHlwZS4KCShidWlsZF9yZWludGVycHJldF9jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfY29uc3RfY2FzdCk6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuYyk6IFVzZSB0eXBlX3Vua25vd25fcC4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQWxzbyBkbyBkZWZhdWx0X2NvbnZlcnNpb24gb24gb3ZlcmxvYWRlZAoJZnVuY3Rpb25zLiAgSGFuZCB0aGVtIG9mZiB0byBvY3BfY29udmVydC4KCjE5OTgtMTAtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBEZWFsIHdpdGggVEVNUExBVEVfREVDTHMgdGhhdCBhcmUKCVZBUl9ERUNMcy4gIEhhbmRsZSB2dGFibGVzIHdob3NlIERFQ0xfQ09OVEVYVCBpcyBub3QgYSB0eXBlLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogVXNlIGJ1aWxkX2NwbHVzX2FycmF5X3R5cGUgdG8gYnVpbGQKCWFycmF5IHR5cGVzLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2VoX3NwZWMpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogU2ltcGxpZnkgdmVyeSBzbGlnaHRseS4KCjE5OTgtMTAtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDb21wbGFpbiBhYm91dCBhIHZhcmlhYmxlIHVzaW5nCgljb25zdHJ1Y3RvciBzeW50YXggY29taW5nIGJhY2sgbnVsbCBmcm9tIHN0YXJ0X2RlY2wuCgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBDb21wbGFpbiBhYm91dCB0cnlpbmcgdG8gbWFrZQoJYSBub24tY2xhc3MgdHlwZSBhIGZyaWVuZC4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFNldCBERUNMX0lOSVRJQUwgZm9yIGEgZGVmbiBoZXJlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTm90IGhlcmUuCgoxOTk4LTEwLTI2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERpc2FsbG93IGBleHBsaWNpdCcgaW4gYSBmcmllbmQgZGVjbGFyYXRpb24uCgoxOTk4LTEwLTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IE9ubHkgc2tpcCBhbm9ueW1vdXMgZmllbGRzCglpZiB0aGV5IGFyZSBiaXRmaWVsZHMuCgoJKiBjcC10cmVlLmRlZiAoVFlQRU9GX1RZUEUpOiBOZXcgY29kZS4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3JlYWwpOiBIYW5kbGUgaXQuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHlwZW9mKTogTmV3IGZuLgoJKiBwYXJzZS55ICh0eXBlc3BlYyk6IFVzZSBpdC4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoKMTk5OC0xMC0yNiAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY3AtdHJlZS5oIChGT1JNQVRfVkJBU0VfTkFNRSk6IE1ha2UgZGVmaW5pdGlvbiB1bmNvbmRpdGlvbmFsLgoKMTk5OC0xMC0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogRG9uJ3QgaGFuZGxlIHBtZiByZWZlcmVuY2VzCglzcGVjaWFsbHkuCgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogRG9uJ3QgdHJ5IHRvIGNvbnZlcnQgdG8gdGhlIGJhc2UgdHlwZQoJaWYgaXQncyBhbWJpZ3VvdXMgb3IgcGVkYW50aWMuCgoJKiB0eXBlY2syLmMgKGNoZWNrX2Zvcl9uZXdfdHlwZSk6IE9ubHkgZGVwZW5kIG9uIHBlZGFudGljIGZvcgoJQy1zdHlsZSBjYXN0cy4KCjE5OTgtMTAtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU2V0IERFQ0xfTk9OQ09OVkVSVElOR19QIGZvciBhbGwKCW5vbi1jb252ZXJ0aW5nIGNvbnN0cnVjdG9ycy4KCjE5OTgtMTAtMjQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBneHhpbnQudGV4aTogQ29ycmVjdCBkb2N1bWVudGF0aW9uIGZvciBuLCBOLCBRLCBhbmQgQi4KCjE5OTgtMTAtMjMgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwYXJzZS55IChjb25kaXRpb24pOiBDb252ZXJ0IFZBUl9ERUNMIGZyb20gcmVmZXJlbmNlIHRvIGluZGlyZWN0CglyZWZlcmVuY2UuCgoxOTk4LTEwLTIzICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2MgKF9fY3BfcG9wX2V4Y2VwdGlvbik6IEZyZWUgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbgoJdmFsdWUsIG5vdCB0aGUgcG90ZW50aWFsbHkgY29lcmNlZCBvbmUuCgoxOTk4LTEwLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogTWFrZWZpbGUuaW4gKGhhc2guaCk6IFJ1biBncGVyZiB3aGVuIG5lY2Vzc2FyeS4KCgkqIGNwLXRyZWUuaCAoQ1BfVFlQRV9SRUFET05MWSk6IFJlbW92ZS4KCShDUF9UWVBFX1ZPTEFUSUxFKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9RVUFMUyk6IE5ldyBtYWNyby4KCShDUF9UWVBFX0NPTlNUX1ApOiBMaWtld2lzZS4KCShDUF9UWVBFX1ZPTEFUSUxFX1ApOiBMaWtld2lzZS4KCShDUF9UWVBFX1JFU1RSSUNUX1ApOiBMaWtld2lzZS4KCShDUF9UWVBFX0NPTlNUX05PTl9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoY3BfYnVpbGRfdHlwZV92YXJpYW50KTogUmVuYW1lIHRvIC4uLgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGNfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsKTogRGVjbGFyZS4KCShTSUdOQVRVUkVfUE9JTlRFUl9OQU1FX0ZPUk1BVCk6IE1vZGlmeSB0byBhbGxvdyBgcmVzdHJpY3QnLgoJKFNJR05BVFVSRV9SRUZFUkVOQ0VfTkFNRV9GT1JNQVQpOiBMaWtld2lzZS4KCShjcF90eXBlX3F1YWxfZnJvbV9yaWQpOiBOZXcgZnVuY3Rpb24uCgkoY29tcHBhcm1zKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKGNwX3R5cGVfcXVhbHMpOiBOZXcgZnVuY3Rpb24uCgkoYXRfbGVhc3RfYXNfcXVhbGlmaWVkX3ApOiBMaWtld2lzZS4KCShtb3JlX3F1YWxpZmllZF9wKTogTGlrZXdpc2UuCgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBSZXBsYWNlIGNhbGxzIHRvCgljcF9idWlsZF90eXBlX3ZhcmlhbnQgd2l0aCBjcF9idWlsZF9xdWFsaWZpZWRfdHlwZS4gIFVzZQoJQ1BfVFlQRV9RVUFMUyB0byBnZXQgcXVhbGlmaWVycyBhbmQgYXRfbGVhc3RfYXNfcXVhbGlmaWVkX3AgdG8KCWNvbXBhcmUgdGhlbS4gIFVzZSBDUF9UWVBFXyogbWFjcm9zIHRvIGNoZWNrIHF1YWxpZmllcnMuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBMaWtld2lzZS4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChvdmVycmlkZXMpOiBDb21wYXJlIGFsbCBxdWFsaWZpZXJzLCBub3QganVzdCBgY29uc3QnLAoJb24gbWV0aG9kIGRlY2xhcmF0aW9ucy4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShjb252ZXJ0X3BvaW50ZXJfdG9fcmVhbCk6IExpa2V3aXNlLgoJKHR5cGVfcHJvbW90ZXNfdG8pOiBMaWtld2lzZS4KCSogZGVjbC5jIChjaGVja19mb3JfdW5pbml0aWFsaXplZF9jb25zdF92YXIpOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGNwX2ZpbmlzaF9kZWNsKTogVXNlIGNoZWNrX2Zvcl91bmluaXRpYWxpemVkX2NvbnN0X3Zhci4KCShncm9rZGVjbGFyYXRvcik6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuICBVcGRhdGUgdG8KCWhhbmRsZSBgcmVzdHJpY3QnLgoJKGdyb2tfY3Rvcl9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShyZXZlcl9zdGF0aWNfbWVtYmVyX2ZuKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tfbWV0aG9kX3F1YWxzKTogTGlrZXdpc2UuCgkoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfcmVhZG9ubHlfb3Jfdm9sYXRpbGUpOiBSZW5hbWUgdG8gLi4uCgkoZHVtcF9xdWFsaWZpZXJzKTogTmV3IGZ1bmN0aW9uLiAgSGFuZGxlIGByZXN0cmljdCcuCgkoZHVtcF90eXBlX3JlYWwpOiBVc2UgaXQuCgkoZHVtcF9hZ2dyX3R5cGUpOiBMaWtld2lzZS4KCShkdW1wX3R5cGVfcHJlZml4KTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3N1ZmZpeCk6IExpa2V3aXNlLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoJKGN2X2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKiBneHguZ3BlcmY6IEFkZCBfX3Jlc3RyaWN0IGFuZCBfX3Jlc3RyaWN0X18uCgkqIGd4eGludC50ZXhpOiBEb2N1bWVudCBgdScgYXMgdXNlZCBmb3IgYF9fcmVzdHJpY3QnLCBhbmQgYSBmZXcKCW90aGVyIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIGNvZGVzLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGVkLgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXQpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGJ1aWxkX21lbWJlcl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBBZGQgZW50cnkgZm9yIFJJRF9SRVNUUklDVC4KCShjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGNwX3R5cGVfcXVhbF9mcm9tX3JpZCk6IERlZmluZS4KCSogbGV4LmggKGVudW0gcmlkKTogQWRkIFJJRF9SRVNUUklDVC4KCSogbWV0aG9kLmMgKHByb2Nlc3NfbW9kaWZpZXJzKTogRGVhbCB3aXRoIGByZXN0cmljdCcuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCSh0c3Vic3RfYWdncl90eXBlKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkoY2hlY2tfY3ZfcXVhbHNfZm9yX3VuaWZ5KTogTGlrZXdpc2UuCgkodW5pZnkpOiBMaWtld2lzZS4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGJ1aWxkX2hlYWRvZik6IExpa2V3aXNlLgoJKGdldF90aW5mb192YXIpOiBMaWtld2lzZS4KCShidWlkbF9keW5hbWljX2Nhc3RfMSk6IExpa2V3aXNlLiAgRml4IGB2b2xhdGlsZScgaGFuZGxpbmcuCgkoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfYXR0cl9kZXNjKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV90aW5mb19mbik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoY292YXJpYW50X3JldHVybl9wKTogTGlrZXdpc2UuICBGaXggYHZvbGF0aWxlJyBoYW5kbGluZy4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IExpa2V3aXNlLgoJKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfbmFtZSk6IFRha2UKCXR5cGVfcXVhbHMsIG5vdCBjb25zdHAgYW5kIHZvbGF0aWxlcC4KCShidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfdHlwZSk6IExpa2V3aXNlLgoJKG1hdGNoX21ldGhvZF90eXBlcyk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCShidWlsZF9zaWduYXR1cmVfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlKTogTGlrZXdpc2UuCgkoY3BfYnVpbGRfdHlwZV92YXJpYW50KTogUmVuYW1lIHRvIC4uLgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlKTogTmV3IGZ1bmN0aW9uLiAgRGVhbCB3aXRoIGBfX3Jlc3RyaWN0Jy4KCShjYW5vbmljYWxfdHlwZV92YXJpYW50KTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IExpa2V3aXNlLgoJKG1hcGNhcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAocXVhbGlmX3R5cGUpOiBMaWtld2lzZS4KCShjb21tb25fdHlwZSk6IExpa2V3aXNlLgoJKGNvbXB0eXBlcyk6IExpa2V3aXNlLgoJKGNvbXBfY3ZfdGFyZ2V0X3R5cGVzKTogTGlrZXdpc2UuCgkoYXRfbGVhc3RfYXNfcXVhbGlmaWVkX3ApOiBEZWZpbmUuCgkobW9yZV9xdWFsaWZpZWRfcCk6IExpa2V3aXNlLgoJKGNvbXBfY3ZfcXVhbGlmaWNhdGlvbik6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkoY29tcHBhcm1zKTogTGlrZXdpc2UuCgkoaW5saW5lX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShzdHJpbmdfY29udl9wKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2luZGlyZWN0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2FycmF5X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShjb252ZXJ0X0Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkoY29tcF9wdHJfdHR5cGVzX3JlYWwpOiBMaWtld2lzZS4KCShjcF90eXBlX3F1YWxzKTogTmV3IGZ1bmN0aW9uLgoKMTk5OC0xMC0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChDUF9UWVBFX1JFQURPTkxZKTogTmV3IG1hY3JvIHRvIGhhbmRsZSBhcnJheXMuCgkoQ1BfVFlQRV9WT0xBVElMRSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIHRoZW0uCgkqIHRyZWUuYyAoY2Fub25pY2FsX3R5cGVfdmFyaWFudCk6IExpa2V3aXNlLgoKMTk5OC0xMC0yMiAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHBhcnNlLnkgKG5hbWVkX2NsYXNzX2hlYWQpOiBQdXNoIGludG8gY2xhc3Mgd2hpbGUgcGFyc2luZyB0aGUKCWJhc2UgY2xhc3MgbGlzdC4KCSogZGVjbDIuYyAocHVzaF9zY29wZSwgcG9wX3Njb3BlKTogTmV3IGZ1bmN0aW9ucy4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBEZWxheSBjbGVhbnVwIHVudGlsIGVuZCBvZiBmdWxsIGV4cHJlc3Npb24uCgoxOTk4LTEwLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IFVzZSBvZiBhIHR5cGUgaGVyZSBpcyBhbiBlcnJvci4KCjE5OTgtMTAtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglSZXZhbXAgcmVmZXJlbmNlcyB0byBtZW1iZXIgZnVuY3Rpb25zLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQ2FsbCBidWlsZF9jb21wb25lbnRfcmVmIGZvciBhCglyZWZlcmVuY2UgdG8gYSBtZW1iZXIgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogT25seSByZXR1cm4gYSBzaW5nbGUgZnVuY3Rpb24KCWlmIGl0J3Mgc3RhdGljLiAgT3RoZXJ3aXNlLCByZXR1cm4gYSBDT01QT05FTlRfUkVGLgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEhhbmRsZSBhIENPTVBPTkVOVF9SRUYuCgkoYnVpbGRfdW5hcnlfb3ApOiBIYW5kbGUgYWxsIHVua25vd24tdHlwZSB0aGluZ3MuCgkqIGRlY2wyLmMgKGFyZ19hc3NvYyk6IEhhbmRsZSBDT01QT05FTlRfUkVGLgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogQ29tcGxhaW4gaWYgdGhlIGZ1bmN0aW9uIHdlIGdldCBpcyBhCglub25zdGF0aWMgbWVtYmVyIGZ1bmN0aW9uLiAgUmVtb3ZlIGNvZGUgZm9yIGZpbmRpbmcgImNvbXBhdGlibGUiCglmdW5jdGlvbnMuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogSGFuZGxlIE5PUF9FWFBSLgoJKiB0cmVlLmMgKGJ1aWxkX2R1bW15X29iamVjdCk6IE5ldyBmbi4KCShtYXliZV9kdW1teV9vYmplY3QpOiBOZXcgZm4uCgkoaXNfZHVtbXlfb2JqZWN0KTogTmV3IGZuLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgdGhlbS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFVzZSBtYXliZV9kdW1teV9vYmplY3QuCgkqIGVycm9yLmMgKGR1bXBfZXhwciwgY2FzZSBPRkZTRVRfUkVGKTogVXNlIGlzX2R1bW15X29iamVjdC4KCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IFVzZSBtYXliZV9kdW1teV9vYmplY3QgYW5kCglpc19kdW1teV9vYmplY3QuCgkoYnVpbGRfb2Zmc2V0X3JlZik6IFVzZSBtYXliZV9kdW1teV9vYmplY3QuCgkocmVzb2x2ZV9vZmZzZXRfcmVmKTogVXNlIGlzX2R1bW15X29iamVjdC4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IENhbGwgYnVpbGRfZHVtbXlfb2JqZWN0LgoJKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogQ2FsbCBpc19kdW1teV9vYmplY3QuCgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBNYWtlIHN1cmUgZmllbGQgaXMgYSBmaWVsZC4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogRGVsZXRlIG9ic29sZXRlIGNvZGUuCgoJKiBwdC5jICh0c3Vic3QsIFRFTVBMQVRFKlBBUk0qKTogQWJvcnQgaWYgd2UgZG9uJ3QgaGF2ZSBhbnkgYXJncy4KCjE5OTgtMTAtMTggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jICh2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCk6IEZpeCB1c2luZy1kaXJlY3RpdmVzIG9mCglzdGQgaWYgc3RkIGlzIGlnbm9yZWQuCgoxOTk4LTEwLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogRml4IHRoaW5rby4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBFbWJlZGRlZCBhdHRycyBiaW5kIHRvIHRoZSByaWdodCwKCW5vdCB0aGUgbGVmdC4KCgkqIHBhcnNlLnkgKGZuLmRlZjIpOiBGaXggJ2F0dHJzJyBmb3JtYXQuCgoxOTk4LTEwLTE4ICBBbGFzdGFpciBKLiBIb3VnaHRvbiAgPGFqaDhAZG9jLmljLmFjLnVrPgoKCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IFVwZGF0ZS4KCSogcGFyc2UueSAoZXhwcl9vcl9kZWNsYXJhdG9yX2ludGVybik6IE5ldyBydWxlLgoJKGV4cHJfb3JfZGVjbGFyYXRvciwgZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yLCBwcmltYXJ5LAoJZnVuY3Rpb25hbF9jYXN0KTogVXNlIGl0LgoJKG5vdHlwZV9kZWNsYXJhdG9yX2ludGVybik6IE5ldyBydWxlLgoJKG5vdHlwZV9kZWNsYXJhdG9yLCBjb21wbGV4X25vdHlwZV9kZWNsYXJhdG9yKTogVXNlIGl0LgoKMTk5OC0xMC0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogU2V0IERFQ0xfQ09OVEVYVCB0byBuYW1lc3BhY2UgaWYgYXBwcm9wcmlhdGUuCgkoZ3Jva3ZhcmRlY2wpOiBMaWtld2lzZS4KClNhdCBPY3QgMTcgMjM6Mjc6MjAgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmVjKTogQ2FzdCAxc3QgYXJndW1lbnQgb2YgYGJ6ZXJvJyB0byAoUFRSKS4KCShhZGRfbWV0aG9kKTogTGlrZXdpc2UgZm9yIGFyZ3VtZW50cyAxICYgMiBvZiBgYmNvcHknLgoKCSogZGVjbC5jIChzaWduYWxfY2F0Y2gpOiBNYXJrIHdpdGggQVRUUklCVVRFX05PUkVUVVJOLgoKCSogcHQuYyAocHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogQ2FzdCAxc3QgYXJndW1lbnQgb2YKCWBiemVybycgdG8gKFBUUikuCgoJKiB0cmVlLmMgKGJ1aWxkX2Jhc2VfZmllbGRzKTogQ2FzdCBgYmFzZV9hbGlnbicgdG8gKGludCkgd2hlbgoJY29tcGFyaW5nIGFnYWluc3Qgb25lLgoKMTk5OC0xMC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEhhbmRsZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGZvciBtZW1iZXIKCXRlbXBsYXRlcyB3aGVyZSBzYWlkIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZQoJc3Vycm91bmRpbmcgY2xhc3MuCgoJKiBkZWNsLmMgKGV4cGFuZF9zdGF0aWNfaW5pdCk6IEJ1aWxkIGNsZWFudXBzIGJlZm9yZSBlbnRlcmluZyB0aGUKCWFub255bW91cyBmdW5jdGlvbiB1c2VkIHRvIGRvIHRoZW0gdG8gYXZvaWQgYWNjZXNzLWNoZWNraW5nCgljb25mdXNpb24uCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBBZGQgYmFjayBjYWxsIHRvIGNwbHVzX2RlY2xfYXR0cmlidXRlcwoJYWNjaWRlbnRhbGx5IHJlbW92ZWQgYnkgcHJldmlvdXMgY2hhbmdlLCBhbmQgbWFrZSBERUNMX1JUTCBoZXJlLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRG9uJ3QgbWFrZSBERUNMX1JUTCBoZXJlLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IERvbid0IGV4YW1pbmUgdW5pbnN0YW50aWF0ZWQKCWRlZmF1bHQgYXJndW1lbnRzLgoKMTk5OC0xMC0xNiAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBGaXggdW5hbGlnbmVkIGFjY2VzcyBvZiB3Y2hhcl90LgoKMTk5OC0xMC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBGaXggZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHByZXZpb3VzCgljaGFuZ2VzLiAgQ2hlY2sgZm9yIGR1cGxpY2F0ZSBtZXRob2QgZGVjbGFyYXRpb25zIGhlcmUuCgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBIYW5kbGUgRlVOQ1RJT05fREVDTCB2cyBURU1QTEFURV9ERUNMCgljb3JyZWN0bHk7IHN1Y2ggdGhpbmdzIG5ldmVyIG1hdGNoLgoJKGdyb2tmbmRlY2wpOiBEb24ndCBsb29rIGZvciBkdXBsaWNhdGUgbWV0aG9kcyBoZXJlLgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogRG9uJ3QgYXNzdW1lIG5hbWVzIGFyZSBtYW5nbGVkLgoJRG9uJ3QgYWRkIGJvZ3VzIG1lbWJlciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gYSBjbGFzcyBiZWZvcmUgdGhlCgljbGFzcyB0eXBlIGlzIGNvbXBsZXRlLgoJKGdyb2tmaWVsZCk6IFJlZm9ybWF0IGVycm9yIG1lc3NhZ2UuCgkqIG1ldGhvZC5jIChzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogRG9uJ3QgbWFuZ2xlIG5hbWVzIHdoaWxlCglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgoxOTk4LTEwLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogQ29tcGxhaW4gYWJvdXQgYSBwb2ludGVyIHRvIGRhdGEKCW1lbWJlciwgdG9vLgoJKiB0eXBlY2syLmMgKGJ1aWxkX21fY29tcG9uZW50X3JlZik6IERvbid0IGluZGlyZWN0IGEgcG9pbnRlciB0bwoJZGF0YSBtZW1iZXIuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgdW5kbyB0aGUgYWJvdmUuCgoJKiBjcC10cmVlLmggKERFQ0xfQ19CSVRfRklFTEQsIFNFVF9ERUNMX0NfQklUX0ZJRUxEKTogTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIGBiaXRmaWVsZCcuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBERUNMX0NfQklUX0ZJRUxEIGluc3RlYWQgb2YKCURFQ0xfQklUX0ZJRUxELgoJKiBkZWNsMi5jIChncm9rYml0ZmllbGQsIGdyb2tfYWxpZ25vZik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9hZGRyLCBleHByX3NpemVvZik6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogRG9uJ3QgY3Jhc2ggaWYgdGFraW5nIHRoZSBhZGRyZXNzCglyZXR1cm5zIGVycm9yX21hcmtfbm9kZS4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEFsc28gY2hlY2sgY3R5cGUgd2hlbiBjaGVja2luZyBmb3IgOjptYWluKCkuCgoxOTk4LTEwLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiA6Om1haW4gYW5kIF9fYnVpbHRpbl8qIGdldCBDIGxpbmthZ2UuCglEbyBtYW5nbGluZyBoZXJlLgoJKGdyb2tkZWNsYXJhdG9yKTogSW5zdGVhZCBvZiBoZXJlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTG9zZSBzcGVjaWFsIGhhbmRsaW5nIG9mIDo6bWFpbiBhbmQKCV9fYnVpbHRpbl8qLgoJKiBjcC10cmVlLmggKERFQ0xfTUFJTl9QKTogQ2hlY2sgZm9yIEMgbGlua2FnZS4KCgkqIHNwZXcuYyAoeXlsZXgpOiBDbGVhciBsb29raW5nX2Zvcl90eXBlbmFtZSBpZiB3ZSBnb3QKCSdlbnVtIHsgLi4uIH07Jy4KCjE5OTgtMTAtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChtYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzKTogSW1wcm92ZSBlcnJvcgoJbWVzc2FnZXMgZm9yIGNsYXNzIHdpdGggb25seSBwcml2YXRlIGNvbnN0cnVjdG9ycy4KCgkqIGNwLXRyZWUuZGVmIChUWVBFTkFNRV9UWVBFKTogQWRkIHRvIGRvY3VtZW50YXRpb24uCgkqIGNwLXRyZWUuaCAoVFlQRU5BTUVfVFlQRV9GVUxMTkFNRSk6IERvY3VtZW50LgoJKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IEJyb2tlbiBvdXQgZnJvbSAuLi4KCShtYWtlX3R5cGVuYW1lX3R5cGUpOiBVc2UgaXQuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCjE5OTgtMTAtMTQgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IENoZWNrIGFnYWluc3QgdHlwZV9yZWZlcnJlZF90by4KCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IENoZWNrIGZvciBkZWNsYXJhdG9yIG5hbWUgYmVmb3JlIGJ1aWxkaW5nCglERUNMX0FTU0VNQkxFUl9OQU1FLgoKMTk5OC0xMC0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFkZCBjb21tZW50LgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgbWFyayB0aGUgX1RZUEUgbm9kZSBmb3IKCW1lbWJlciBjbGFzcyB0ZW1wbGF0ZXMgYXMgYW4gaW5zdGFudGlhdGlvbi4KCjE5OTgtMTAtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEZpeCBteSB0aGlua28uCgoxOTk4LTEwLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0aW5mbzIuY2MgKGZhc3RfY29tcGFyZSk6IFJlbW92ZS4KCShiZWZvcmUpOiBKdXN0IHVzZSBzdHJjbXAuCgkqIHRpbmZvLmNjIChvcGVyYXRvcj09KTogSnVzdCB1c2Ugc3RyY21wLgoKMTk5OC0xMC0xMyAgS2xhdXMtR2VvcmcgQWRhbXMgIDxLbGF1cy1HZW9yZy5BZGFtc0BjaGVtaWUudW5pLWthcmxzcnVoZS5kZT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IERvbid0IGNoZWNrIGZvciBsaW5rYWdlIGluIGBleHRlcm4gIkMiJwoJZGVjbGFyYXRpb25zLgoKMTk5OC0xMC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoc3BlY2lhbGl6YXRpb25zX29mX3NhbWVfdGVtcGxhdGVfcCk6IFJlbW92ZS4KCSogc2VhcmNoLmMgKGdldF90ZW1wbGF0ZV9iYXNlKTogRG9uJ3QgdXNlIGl0LgoJKGdldF90ZW1wbGF0ZV9iYXNlX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKiBwdC5jIChzcGVjaWFsaXphdGlvbnNfb2Zfc2FtZV90ZW1wbGF0ZV9wKTogUmVtb3ZlLgoJKHVuaWZ5KTogRG9uJ3QgdXNlIGl0LgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEZpbmQgdGhlIGNvcnJlY3QgcGFyZW50IHdoZW4gc2V0dGluZwoJQ0xBU1NUWVBFX1RJX1RFTVBMQVRFLgoKMTk5OC0xMC0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGluZm8uY2MgKG9wZXJhdG9yPT0pOiBBbHdheXMgY29tcGFyZSBuYW1lcy4KCjE5OTgtMTAtMTIgIEhlcm1hbiB0ZW4gQnJ1Z2dlICA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBGaXggY3V0LWFuZC1wYXN0ZSBlcnJvci4KCjE5OTgtMTAtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluYy90eXBlaW5mbzogQWRkICNwcmFnbWEgaW50ZXJmYWNlLgoJKG9wZXJhdG9yIT0pOiBKdXN0IGNhbGwgb3BlcmF0b3I9PS4KCSogdGluZm8uY2M6IEFkZCAjcHJhZ21hIGltcGxlbWVudGF0aW9uLgoJKG9wZXJhdG9yPT0pOiBNb3ZlIGZyb20gaW5jL3R5cGVpbmZvIGFuZCB0aW5mbzIuY2MuCglDaGVjayBfX0NPTU1PTl9VTlJFTElBQkxFIGluc3RlYWQgb2YgX1dJTjMyLgoKCSogdHlwZWNrMi5jIChteV9mcmllbmRseV9hYm9ydCk6IEFkZCBVUkwuCgoxOTk4LTEwLTEyICBBbGFzdGFpciBKLiBIb3VnaHRvbiAgPGFqaDhAZG9jLmljLmFjLnVrPgoKCSogZGVjbC5jIChzdGFydF9tZXRob2QpOiBBZGRlZCBleHRyYSBwYXJhbWV0ZXIgZm9yIGF0dHJpYnV0ZXMuCgkqIGNwLXRyZWUuaCAoc3RhcnRfbWV0aG9kKTogVXBkYXRlIHByb3RvdHlwZS4KCSogcGFyc2UueSAoZm4uZGVmMik6IFVwZGF0ZSBzdGFydF9tZXRob2QgcGFyYW1ldGVyIGxpc3QuCgoxOTk4LTEwLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChzcGVjaWFsaXphdGlvbnNfb2Zfc2FtZV90ZW1wbGF0ZV9wKTogRGVjbGFyZS4KCSogcHQuYyAoc3BlY2lhbGl6YXRpb25zX29mX3NhbWVfdGVtcGxhdGVfcCk6IE5ldyBmdW5jdGlvbi4KCSh1bmlmeSk6IFVzZSBpdC4KCSogc2VhcmNoLmMgKGdldF90ZW1wbGF0ZV9iYXNlKTogVXNlIGl0LgoJKGdldF90ZW1wbGF0ZV9iYXNlX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoKMTk5OC0xMC0xMCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IEFkZCBuZXcgdmFyaWFibGUgYGpvaW5lcicgYW5kCglpbml0aWFsaXplIGl0IHByb3Blcmx5LgoKMTk5OC0xMC0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IFR3ZWFrIHRvIG1hdGNoIDE5OTgtMTAtMDcKCWNoYW5nZSB0byB2dGFibGUgdHlwZXMuCgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBBdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gY2F1c2VkIGJ5CgkxOTk4LTEwLTAzIGNoYW5nZS4KCjE5OTgtMTAtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IE5ldyBmbi4KCSh0cnlfb25lX292ZXJsb2FkKTogTGlrZXdpc2UuCgkodW5pZnkpOiBEb24ndCBmYWlsIG9uIHVua25vd24gdHlwZS4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4gIFVzZSByZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24KCXRvIGhhbmRsZSBhbiBvdmVybG9hZGVkIGFyZ3VtZW50LgoJKHRlbXBsYXRlX2FyZ3NfZXF1YWwpOiBTcGxpdCBvdXQuLi4KCShjb21wX3RlbXBsYXRlX2FyZ3MpOiBGcm9tIGhlcmUuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQWxzbyBhbGxvdyBhIHRlbXBsYXRlIHdpdGggbW9yZQoJcGFybXMgdGhhbiB3ZXJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgoJKiBjcC10cmVlLmg6IEFkZCB0ZW1wbGF0ZV9hcmdzX2VxdWFsLgoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IFJlbW92ZSBURU1QTEFURV9JRF9FWFBSIGNvZGUuCgpUaHUgT2N0ICA4IDE1OjU4OjMwIDE5OTggIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IFJldmVydCBteSAxOTk4LTA5LTI4CgljaGFuZ2UuCgpUaHUgT2N0ICA4IDA2OjAwOjE5IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHR5cGVjay5jICh1bnNpZ25lZF90eXBlKTogT25seSByZXR1cm4gVEl0eXBlIG5vZGVzIHdoZW4KCUhPU1RfQklUU19QRVJfV0lERV9JTlQgaXMgPj0gNjQgYml0cy4KCShzaWduZWRfdHlwZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGludFRJX3R5cGVfbm9kZSwgdW5zaWduZWRfaW50VElfdHlwZV9ub2RlKTogT25seSBkZWNsYXJlCgl3aGVuIEhPU1RfQklUU19QRVJfV0lERV9JTlQgaXMgPj0gNjQgYml0cy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE9ubHkgY3JlYXRlIFRJdHlwZSBub2RlcyB3aGVuCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UIGlzID49IDY0IGJpdHMuCgkqIGNwLXRyZWUuaCAoaW50VElfdHlwZV9ub2RlLCB1bnNpZ25lZF9pbnRUSV90eXBlX25vZGUpOiBPbmx5IGRlY2xhcmUKCXdoZW4gSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBpcyA+PSA2NCBiaXRzLgoKV2VkIE9jdCAgNyAxMjozMjo0NCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoaGFzaC5oKTogQWRkIC1MIEtSLUMgLUYgJywgMCwgMCcgZmxhZ3MgdG8gZ3BlcmYuCgkoZ3h4LmdwZXJmKTogVXBkYXRlIGNvbW1lbnRzIGRlc2NyaWJpbmcgaW52b2NhdGlvbiBmbGFncy4KCShoYXNoLmgpOiBSZWdlbmVyYXRlIHVzaW5nIGdwZXJmIDIuNy4xICgxOTk4MTAwNiBlZ2NzKS4KCjE5OTgtMTAtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBZGQgY29tbWVudGFyeSBvbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBjcC10cmVlLmggKHZ0YmxfcHRyX3R5cGVfbm9kZSk6IE5ldyB2YXJpYWJsZS4KCSogY2xhc3MuYyAoYnVpbGRfdnRibF9yZWYpOiBEb24ndCBpbmRpcmVjdCB0aHJvdWdoIHRoZSB2cHRyOyBpdCdzCglhbHJlYWR5IG9mIHRoZSByaWdodCB0eXBlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IE1ha2UgdGhlIHZwdHIgYmUgb2YgdHlwZSB2dGJsX3B0cl90eXBlX25vZGUuCglTaW1wbGlmeSBjb2RlIHRvIGdyb3cgdnRhYmxlLgoJKiBkZWNsLmMgKHZ0YmxfcHRyX3R5cGVfbm9kZSk6IERlZmluZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgaXQuCgoxOTk4LTEwLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5kZWYgKFBUUk1FTV9DU1QpOiBOZXcgdHJlZSBub2RlLgoJKiBjcC10cmVlLmggKHB0cm1lbV9jc3QpOiBOZXcgdHlwZS4KCShsYW5nX3R5cGUpOiBSZW1vdmUgbG9jYWxfdHlwZWRlY2xzLgoJKGR1bW15KTogSW5jcmVhc2UgdG8gMTIgYml0cyBmcm9tIDExLgoJKENMQVNTVFlQRV9MT0NBTF9UWVBFREVDTFMpOiBSZW1vdmUuCgkoUFRSTUVNX0NTVF9DTEFTUyk6IE5ldyBtYWNyby4KCShQVFJNRU1fQ1NUX01FTUJFUik6IExpa2V3aXNlLgoJKGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllcik6IE5ldyB2YXJpYWJsZS4KCShjdXJyZW50X2NsYXNzX3R5cGUpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uLgoJKGZpbmlzaF9zdHJ1Y3QpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKHVucmV2ZXJzZV9tZW1iZXJfZGVjbGFyYXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogQ2hhbmdlIHByb3RvdHlwZS4KCShncm9rX2VudW1fZGVjbHMpOiBSZW1vdmUuCgkoZml4dXBfYW5vbnltb3VzX3VuaW9uKTogTmV3IGZ1bmN0aW9uLgoJKGdyb2tfeF9jb21wb25lbnRzKTogQ2hhbmdlIHByb3RvdHlwZS4KCSh0c3Vic3RfY2hhaW4pOiBSZW1vdmUuCgkoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGaXggaW5kZW50YXRpb24uCgkoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmlzaF9tZW1iZXJfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX211bHRpcGxlX2RlY2xhcmF0b3JzKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGNsYXNzX3N0YWNrX25vZGVfdCk6IE5ldyB0eXBlLgoJKGN1cnJlbnRfY2xhc3NfYmFzZSk6IFJlbW92ZS4KCShjdXJyZW50X2NsYXNzX3N0YWNrKTogQ2hhbmdlIHR5cGUuCgkoY3VycmVudF9hY2Nlc3Nfc3BlY2lmaWVyKTogTmV3IHZhcmlhYmxlLgoJKGdyb3dfbWV0aG9kKTogUmVtb3ZlLgoJKGNoZWNrX21lbWJlcl9kZWNsX2lzX3NhbWVfaW5fY29tcGxldGVfc2NvcGUpOiBCcmVhayBvdXQgZnJvbQoJZmluaXNoX3N0cnVjdC4KCShtYWtlX21ldGhvZF92ZWMpOiBOZXcgZnVuY3Rpb24uCgkoZnJlZV9tZXRob2RfdmVjKTogTGlrZXdpc2UuCgkoYWRkX2ltcGxpY2l0bHlfZGVjbGFyZWRfbWVtYmVycyk6IEJyZWFrIG91dCBmcm9tIGZpbmlzaF9zdHJ1Y3RfMS4KCShmcmVlX21ldGhvZF92ZWNzKTogTmV3IHZhcmlhYmxlLgoJKGFkZF9tZXRob2QpOiBSZXdvcmsgZm9yIGRpcmVjdCB1c2UgZnJvbSBwYXJzZXIuCgkoaGFuZGxlX3VzaW5nX2RlY2wpOiBXYXRjaCBmb3IgTlVMTF9UUkVFIHdoaWxlIGl0ZXJhdGluZyB0aHJvdWdoCglDTEFTU1RZUEVfTUVUSE9EX1ZFQy4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBEb24ndCBidWlsZCBDTEFTU1RZUEVfTUVUSE9EX1ZFQyBoZXJlOwoJanVzdCBkbyBzb21lIGVycm9yLWNoZWNraW5nLgoJKHdhcm5faGlkZGVuKTogQ2hhbmdlIGl0ZXJhdGlvbiB0aHJvdWdoIENMQVNTVFlQRV9NRVRIT0RfVkVDLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFNpbXBsaWZ5LiAgVXNlIGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMuCgkoZmluaXNoX3N0cnVjdCk6IENoYW5nZSBwcm90b3R5cGUuICBTaW1wbGlmeTsgZmllbGRzIGFuZCBtZXRob2RzCglhcmUgYWxyZWFkeSBzZXQgdXAgYXQgdGhpcyBwb2ludC4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBTZXQgdXAgY3VycmVudF9jbGFzc19zdGFjay4KCShwdXNoY2xhc3MpOiBTYXZlIGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllci4KCShwb3BjbGFzcyk6IFJlc3RvcmUgaXQuCgkoY3VycmVudGx5X29wZW5fY2xhc3MpOiBTaW1wbGlmeS4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IFJlbW92ZSB1c2Ugb2YgQ0xBU1NUWVBFX0xPQ0FMX1RZUEVERUNMUy4KCSogZGVjbC5jIChzYXZlZF9zY29wZSk6IEFkZCBhY2Nlc3Nfc3BlY2lmaWVyLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogU2F2ZSBpdC4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBSZXN0b3JlIGl0LgoJKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IFVzZQoJZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbi4KCShwdXNodGFnKTogTGlrZXdpc2UuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBEb24ndCByZXR1cm4gYSB2YWx1ZS4KCShmaXh1cF9hbm9ueW1vdXNfdW5pb24pOiBCcmVhayBvdXQgZnJvbSBncm9rX3hfY29tcG9uZW50cy4KCShzaGFkb3dfdGFnKTogVXNlIGl0LgoJKHhyZWZfdGFnKTogQ29tcGxhaW4gYWJvdXQgdXNpbmcgYW4gZWxhYm9yYXRlZCB0eXBlIHNwZWNpZmllciB0bwoJcmVmZXJlbmNlIGEgdGVtcGxhdGUgdHlwZSBwYXJhbWV0ZXIgb3IgdHlwZWRlZiBuYW1lLgoJKHhyZWZfYmFzZXR5cGVzKTogRG9uJ3Qgc2V0IENMQVNTVFlQRV9MT0NBTF9UWVBFREVDTFMuCgkoY3VycmVudF9sb2NhbF9lbnVtKTogUmVtb3ZlLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBDYWxsIGZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24uCgkoZ3Jva19lbnVtX2RlY2xzKTogUmVtb3ZlLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IFNpbXBsaWZ5LgoJKGNoZWNrX2NsYXNzZm4pOiBDaGFuZ2UgaXRlcmF0aW9uIHRocm91Z2ggQ0xBU1NUWVBFX01FVEhPRF9WRUMuCgkoZ3Jva2ZpZWxkKTogRG9uJ3Qgc2V0IENMQVNTVFlQRV9MT0NBTF9UWVBFREVDTFMuCgkobWVyZ2VfZnVuY3Rpb25zKTogQWRkIHRvIGNvbW1lbnQuCgkoYXJnX2Fzc29jX3R5cGUpOiBQcm90b3R5cGUuCgkoYXJnX2Fzc29jKTogUGFzcyBhcyBtYW55IGFyZ3VtZW50cyBhcyB0aGVyZSBhcmUgcGFyYW1ldGVycy4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIFBUUk1FTV9DU1QuICBJbXByb3ZlIGhhbmRsaW5nIG9mCglPRkZTRVRfUkVGLgoJKiBleHByLmMgKGNwbHNfZXhwYW5kX2V4cHIpOiBSZW1vdmUgZGVhZCBjb2RlLiAgSGFuZGxlCglQVFJNRU1fQ1NULgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTG9va3VwIGZyaWVuZHMgd2hlbiBpbiBuZXN0ZWQgY2xhc3Nlcy4KCUNoYW5nZSBjb21tZW50cy4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRG8gbG9va3VwIGV2ZW4gZm9yIGNsYXNzZXMgdGhhdCBhcmUKCW9ubHkgcGFydGlhbGx5IGRlZmluZWQuCgkoZGVjbF9jb25zdGFudF92YWx1ZSk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IFJlbW92ZSBoYWNrIHdoZXJlIGJ5IFRZUEUgd2FzCglub3QgYSBUWVBFLiAgSGFuZGxlIFBUUk1FTV9DU1QuCgkoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IERvbid0IHBhc3MgYSBQQVJNX0RFQ0wgd2hlcmUgYSBUWVBFCglzaG91bGQgZ28uCgkqIHBhcnNlLnkgKGNvbXBvbmVudHMsIG5vdHlwZV9jb21wb25lbnRzLCBjb21wb25lbnRfZGVjbCwKCWNvbXBvbmVudF9kZWNsXzEsIGNvbXBvbmVudF9kZWNsYXJhdG9yLCBjb21wb25lbnRfZGVjbGFyYXRvcjApOgoJTm93IGFsbCBhcmUgaXR5cGUgcmF0aGVyIHRoYW4gdHR5cGUuICBSZXdvcmsgdG8gYWRkIG1lbWJlcnMgdG8KCWNsYXNzZXMgb24gdGhlIGZseS4KCSh0eXBlc3FwZWNxdWFsX3Jlc2VydmVkKTogVXNlIGNoZWNrX211bHRpcGxlX2RlY2xhcmF0b3JzLgoJKHN0cnVjdHNwKTogVXBkYXRlIGNsYXNzIHRvIGZpbmlzaF9jbGFzc19kZWZpbml0aW9uLgoJKGRvX3hyZWZfZGVmbik6IFVuc3BsaXQgaW50byBuYW1lZF9jbGFzc19oZWFkLgoJKGFjY2Vzc19zcGVjaWZpZXIpOiBTZXQgY3VycmVudF9hY2Nlc3Nfc3BlY2lmaWVyLgoJKiBwdC5jIChzZXRfY3VycmVudF9hY2Nlc3NfZnJvbV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IERvbid0IHRha2UgdGhlIHBhcmFtZXRlcnMuCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogTWFrZSBtb3JlIHJvYnVzdC4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEb24ndCB1c2UgY3VycmVudF9sb2NhbF9lbnVtLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgUFRSTUVNX0NTVC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVzZSBzZXRfY3VycmVudF9hY2Nlc3NfZnJvbV9kZWNsLAoJZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbiBhbmQgdW5yZXZlcnNlX21lbWJlcl9kZWNsYXJhdGlvbnMuICBTZXQKCWxpbmVuby9pbnB1dF9maWxlbmFtZSBiZWZvcmUgZ2VuZXJhdGluZyBpbXBsaWNpdCBtZW1iZXIgZnVuY3Rpb25zLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IERvbid0IGFzc3VtZSBiYWNrLXVuaWZpY2F0aW9uIGhhcHBlbnMKCW9ubHkgZm9yIHRoZSBsYXN0IGFyZ3VtZW50LgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogQ2FsbCBwdXNoY2xhc3MgYSBiaXQgZWFybGllci4KCSh0c3Vic3RfY2hhaW4pOiBSZW1vdmUuCgkodHN1YnN0X2VudW0pOiBVc2Ugc2V0X2N1cnJlbnRfYWNjZXNzX2Zyb21fZGVjbC4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogRml4IGluZGVudGF0aW9uLgoJKiBzZWFyY2guYyAobG9va3VwX2ZuZmllbGRzXzEpOiBDaGFuZ2UgaXRlcmF0aW9uIHRocm91Z2gKCUNMQVNTVFlQRV9NRVRIT0RfVkVDLgoJKGRmc19wdXNoZGVjbHMpOiBMaWtld2lzZS4KCShkZnNfY29tcHJlc3NfZGVjbHMpOiBMaWtld2lzZS4KCShhZGRfY29udmVyc2lvbnMpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogRG9uJ3QgdGFrZSBjb21wb25lbnRzLgoJQ2hhbmdlIGNhbGwgdG8gZmluaXNoX3N0cnVjdC4KCShmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9tZW1iZXJfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCB0YWtlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCglDaGFuZ2UgY2FsbCB0byBncm9rX3hfY29tcG9uZW50cy4gIENhbGwgZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsLgoJKGNoZWNrX211bHRpcGxlX2RlY2xhcmF0b3JzKTogTmV3IGZ1bmN0aW9uLgoJKiBzaWcuYyAoYXBwZW5kX3NpZ25hdHVyZV9maWVsZHMpOiBXb3JrIGZyb20gdGhlIFRZUEVfTUVUSE9EUywgbm90CglhIHBhc3NlZCBpbiBmaWVsZGxpc3QuCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBIYW5kbGUgUFRSTUVNX0NTVC4KCShtYXBjYXIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogQnVpbGQgUFRSTUVNX0NTVHMsIG5vdAoJSU5URUdFUl9DU1RzLCBmb3IgcG9pbnRlci10by1kYXRhIG1lbWJlcnMuCgoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IFJlc29sdmUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLCBpZgoJcG9zc2libGUuCgpUdWUgT2N0ICA2IDA3OjU3OjI2IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChzcGV3Lm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBjYWxsLmMgKGNvbXBhcmVfaWNzKTogSW5pdGlhbGl6ZSB2YXJpYWJsZXMgYGRlcmVmX2Zyb21fdHlwZTInLAoJYGRlcmVmX3RvX3R5cGUxJyBhbmQgYGRlcmVmX3RvX3R5cGUyJy4KCgkqIGV4Y2VwdC5jIChnZXRfZWhfdHlwZSk6IEhpZGUgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uLgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogUmVtb3ZlIHVudXNlZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBhcmd2ZWMnLgoKCSogc3Bldy5jOiBJbmNsdWRlIHRvcGxldi5oLgoKMTk5OC0xMC0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERvIHNhdmUgYW5kIHJlc3RvcmUgZmlsZSBwb3NpdGlvbi4KCjE5OTgtMTAtMDUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogQ2xlYXIKCW51bWVyaWNfb3V0cHV0X25lZWRfYmFyIGFmdGVyIF9fLgoKMTk5OC0xMC0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSXNzdWUgJ2luY29tcGxldGUgdHlwZScgZXJyb3IsCglpZiBjbGFzcyBpcyBub3QgZGVmaW5lZC4KCjE5OTgtMTAtMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBNb3ZlIGRlY2xhcmF0aW9uIG9mIHZhcmlhYmxlCglgZm4nIGludG8gdGhlIHNjb3BlIHdoZXJlIGl0IGlzIHVzZWQuICBEb24ndCBhY2Nlc3MgdmFyaWFibGUKCWBmbicgd2hlbiBpdCBpcyB1bmluaXRpYWxpemVkLCBpbnN0ZWFkIHVzZSBgZm5zJy4KCjE5OTgtMTAtMDQgIFRoZW9kb3JlIFBhcGFkb3BvdWxvICA8VGhlb2RvcmUuUGFwYWRvcG91bG9Ac29waGlhLmlucmlhLmZyPgoKCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBQcmludCBidWYgYXMgYSBzdHJpbmcgbm90IGFzIGEgcHJpbnRmIGZvcm1hdAoJdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0aGUgb3BlcmF0b3IlLiAgQ29uc2VxdWVudGx5LCBgJSUnIHNlcXVlbmNlcwoJaW4gZm9ybWF0IGFyZSBjb3BpZWQgYXMgYCUnIGluIGJ1Zi4KCjE5OTgtMTAtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHBvcF90aW5zdF9sZXZlbCk6IENhbGwgZXh0cmFjdF9pbnRlcmZhY2VfaW5mby4KCShpbnN0YW50aWF0ZV9kZWNsKTogRG9uJ3Qgc2F2ZSBhbmQgcmVzdG9yZSBmaWxlIHBvc2l0aW9uLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE1ha2Ugc3RhdGljcyBpbiBleHRlcm4gaW5saW5lcyBhbmQKCXRlbXBsYXRlcyBjb21tb24sIGlmIHBvc3NpYmxlIGFuZCB0aGUgdGFyZ2V0IGRvZXNuJ3Qgc3VwcG9ydCB3ZWFrCglzeW1ib2xzLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlbW92ZSByZWR1bmRhbnQgY2FsbHMgdG8KCWJ1aWxkX3R5cGVfdmFyaWFudCBhbmQgc29tZSBkdXBsaWNhdGVkIGNvZGUuCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcmVmZXJlbmNlX3R5cGUpOiBPbmx5IHRha2UgdGhlIHR5cGUgcGFybS4KCShidWlsZF9zaWduYXR1cmVfcG9pbnRlcl90eXBlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbWV0aG9kX3R5cGUpOiBBZGp1c3QuCgkqIGNwLXRyZWUuaDogVXBkYXRlLgoKMTk5OC0xMC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogTWFrZSBwZWR3YXJucyBhYm91dCBkcm9wcGVkIHF1YWxpZmllcnMKCWludG8gZnVsbC1mbGVkZ2VkIGVycm9ycy4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF92dGFibGVzKTogSW4gYWRkaXRpb24gdG8gdW5zZXR0aW5nCglUUkVFX1JFQURPTkxZLCByZW1vdmUgdG9wLWxldmVsIGNvbnN0IHR5cGUgcXVhbGlmaWVyLgoKMTk5OC0xMC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKGN1cnJlbnRfY2xhc3NfcHRyLCBjdXJyZW50X2NsYXNzX3JlZik6IENsYXJpZnkKCWRvY3VtZW50YXRpb24uCgkqIGN2dC5jIChvY3BfY29udmVydCk6IERvbid0IGV4cGVjdCBmb2xkIHRvIHJlbW92ZSBhbGwgdHJpdmlhbAoJTk9QIHR5cGUgY29udmVyc2lvbnMuCgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBVc2UgY29tcHR5cGVzIGRpcmVjdGx5OyBpZ25vcmUKCXF1YWxpZmllcnMgb24gdGhlIERFQ0wuCgkoZHVwbGljYXRlX2RlY2xzKTogUmVtb3ZlIHF1YWxpZmllciBjaGVja3Mgb24gREVDTC4KCShncm9rZGVjbGFyYXRvcik6IE1ha2UgdGhlIHR5cGUgYnVpbHQgdXAgaW5jbHVkZSB0b3AtbGV2ZWwKCXF1YWxpZmllcnMuCgkqIGRlY2wyLmMgKGRvX2R0b3JzKTogRml4IHNwZWxsaW5nIGVycm9yLgoJKiBlcnJvci5jIChkdW1wX3NpbXBsZV9kZWNsKTogRG9uJ3QgbG9vayBhdCBxdWFsaWZpZXJzIG9uIHRoZSBkZWNsCgl3aGVuIHByaW50aW5nIHR5cGUgaW5mb3JtYXRpb24uCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBBZGQgZG9jdW1lbnRhdGlvbi4gIERlYWwgd2l0aCB0aGUgZmFjdAoJdGhhdCB0eXBlIG9mIGFsbG9jYXRlZCBtZW1vcnkgbm93IGNvbnRhaW5zIHF1YWxpZmllcnMuCgkqIGxleC5jIChpc19nbG9iYWwpOiBJbXByb3ZlIGVycm9yLXJlY292ZXJ5LgoJKiBzaWcuYyAoYnVpbGRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIpOiBEb24ndCBjYXN0IGF3YXkgY29uc3QKCW9uIGZpZWxkcyBvZiBzaWd0YWJsZV9lbnRyeV90eXBlLgoJKiB0cmVlLmMgKGx2YWx1ZV90eXBlKTogRG9uJ3QgbG9vayBhdCB0b3AtbGV2ZWwgcXVhbGlmaWVycyBvbgoJZXhwcmVzc2lvbnMuCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IE1ha2Ugc3VyZSB0aGUgdHlwZSBvZiB0aGUgQ09NUE9ORU5UX1JFRgoJY29udGFpbnMgdG9wLWxldmVsIHF1YWxpZmllcnMsIGFzIGFwcHJvcHJpYXRlLiAgSW1wcm92ZQoJZXJyb3ItaGFuZGxpbmcuCgkoYnVpbGRfaW5kaXJlY3RfcmVmKTogU2ltcGxpZnkuICBEb24ndCBzdHJpcCB0b3AtbGV2ZWwgcXVhbGlmaWVycy4KCShidWlsZF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IEltcHJvdmUgZXJyb3ItcmVjb3ZlcnkuCgkodW5hcnlfY29tcGxleF9sdmFsdWUpOiBNYWtlIHRha2luZyB0aGUgYWRkcmVzcyBhIGJvdW5kIG1lbWJlcgoJZnVuY3Rpb24gYW4gZXJyb3IsIG5vdCBhIHNvcnJ5LgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBMb29rIGF0IHRoZSB0eXBlIHF1YWxpZmllcnMsIG5vdCB0aGUKCXF1YWxpZmllcnMgb24gdGhlIGV4cHJlc3Npb24gaXRzZWxmLgoKMTk5OC0xMC0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobWVyZ2VfZnVuY3Rpb25zKTogUmVtb3ZlIGR1cGxpY2F0ZXMuCgoJKiBkZWNsMi5jOiBBZGQgLWZ7bm8tLH1pbXBsaWNpdC1pbmxpbmUtdGVtcGxhdGVzLgoJKGltcG9ydF9leHBvcnRfZGVjbCk6IENoZWNrIGl0LgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogVGVtcGxhdGUgcGFybXMgYWxzbyB0YWtlIHByZWNlZGVuY2UKCW92ZXIgaW1wbGljaXQgdHlwZW5hbWUuICBPbmx5IHdhcm4gaWYgeXlsZXguCgoJKiB0eXBlY2suYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IE9ubHkgZm9sZCBpZiBpZmV4cCBpcyBhbgoJSU5URUdFUl9DU1QuCgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBDaGVjayBERUNMX0lOVEVSRkFDRV9LTk9XTgoJaW5zdGVhZCBvZiBsaW5rYWdlLgoKMTk5OC0xMC0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChGT1JNQVRfVkJBU0VfTkFNRSk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcG9pbnRlcik6IFVzZSBpdC4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogTGlrZXdpc2UuCgpUaHUgT2N0ICAxIDEwOjQzOjQ1IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBZGQgaW52b2NhdGlvbiBvZgoJU0VUX0RFRkFVTFRfREVDTF9BVFRSSUJVVEVTLCBpZiBkZWZpbmVkLgoJKHN0YXJ0X2Z1bmN0aW9uKTogQWRkIGludm9jYXRpb24gb2YKCVNFVF9ERUZBVUxUX0RFQ0xfQVRUUklCVVRFUywgaWYgZGVmaW5lZC4KCgkqIGxleC5jOiBSZXBsYWNlIG9jY3VycmVuY2VzIG9mIEhBTkRMRV9TWVNWX1BSQUdNQSB3aXRoCglIQU5ETEVfR0VORVJJQ19QUkFHTUFTLgoKMTk5OC0wOS0yOCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogQWx3YXlzIHBlcm1pdCB2b2xhdGlsZSBhc21zLgoKMTk5OC0wOS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBUaWdodGVuIGNoZWNrcyBmb3IgaW52YWxpZAoJZGVzdHJ1Y3RvcnMuICBJbXByb3ZlIGVycm9yLW1lc3NhZ2VzIGFuZCBlcnJvci1yZWNvdmVyeS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IERvbid0IGFzc3VtZSB0aGF0IG1hbmdsZWQgZGVzdHJ1Y3RvcgoJbmFtZXMgY29udGFpbiB0eXBlIGluZm9ybWF0aW9uLgoKMTk5OC0wOS0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlKTogUmVtb3ZlIGFzc2VydC4KCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IERvbid0IHByb2Nlc3MgYSBmaWVsZCB3aXRoIG5vCgluYW1lLgoJKGZpbmlzaF9hbm9uX3VuaW9uKTogQWxzbyBjb21wbGFpbiBhYm91dCBsb2NhbCBhbm9uIHVuaW9ucyB3aXRoIG5vCgltZW1iZXJzLgoKMTk5OC0wOS0yNSAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVzcGFjZV9uYW1lKTogSWYgdGhlIG5hbWUgaXMgYSBuYW1lc3BhY2UsCglyZXR1cm4gaXQgaW1tZWRpYXRlbHkuCgpGcmkgU2VwIDI1IDExOjQ1OjM4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAoZGVmaW5lX2Nhc2VfbGFiZWwpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlci4KCShjaGVja19qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKGdyb2tjbGFzc2ZuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2FnZ3JfaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfZGVsZXRlKTogTGlrZXdpc2UuCgkobWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkodW5zaGFyZV9iYXNlX2JpbmZvcyk6IEFkZCBwcm90b3R5cGUuCgkoc3RyaW5nX2NvbnZfcCk6IExpa2V3aXNlLgoJKG15X2ZyaWVuZGx5X2Fib3J0KTogTWFyayB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlcgoJYGNoZWNrY29uc3QnLCBhbGwgY2FsbGVycyBjaGFuZ2VkLgoJKGJ1aWxkX3R5cGVfY29udmVyc2lvbik6IE1hcmsgcGFyYW1ldGVyIGBjb2RlJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgY29udicuCgoJKiBkZWNsLmMgKHB1c2hfbmFtZXNwYWNlKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgZCcuCgkoZGVmaW5lX2Nhc2VfbGFiZWwpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBgZGVjbCcsIGFsbCBjYWxsZXJzCgljaGFuZ2VkLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSWYgIVVTRV9DUFBMSUIsIG1hcmsgcGFyYW1ldGVyCglgYXJnYycgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKGdyb2tjbGFzc2ZuKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgYGNuYW1lJywgYWxsIGNhbGxlcnMKCWNoYW5nZWQuCgkoY2hlY2tfamF2YV9tZXRob2QpOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVyIGBjdHlwZScuCgkoY29weV9hc3NpZ25tZW50X2FyZ19wKTogTWFyayBwYXJhbWV0ZXIgYHZpcnR1YWxwJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbCk6IExpa2V3aXNlIGZvciBwYXJhbWV0ZXIgYHByZXYnLgoKCSogZXhwci5jIChleHRyYWN0X2luaXQpOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVycyBgZGVjbCcgYW5kIGBpbml0Jy4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIKCWBhbGlhc190aGlzJywgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShleHBhbmRfYWdncl9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgc3VzcCcuCgkoYnVpbGRfeF9kZWxldGUpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBgdHlwZScsIGFsbCBjYWxsZXJzCgljaGFuZ2VkLgoKCSogbGV4LmMgKHNldF90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbyk6IE1hcmsgcGFyYW1ldGVyIGBwcmV2JyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKHJlYWRlc2NhcGUpOiBVc2UgKHVuc2lnbmVkKSB2YWx1ZSBpbiBzaGlmdC4KCShyZWFsX3l5bGV4KTogTGlrZXdpc2UuICBMaWtld2lzZS4gIEFsc28gY2FzdCBgc2l6ZW9mJyB0byBpbnQgd2hlbgoJY29tcGFyaW5nIHRvIGEgc2lnbmVkIHF1YW50aXR5LgoKCSogcHQuYyAobWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogUmVtb3ZlIHVudXNlZAoJcGFyYW1ldGVyIGBkZWNsJywgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkZCBicmFjZXMgYXJvdW5kIGVtcHR5IGJvZHkgaW4KCWFuIGVsc2Utc3RhdGVtZW50LgoJKGN1cnJlbnRfdGVtcGxhdGVfYXJncyk6IEluaXRpYWxpemUgdmFyaWFibGUgYGFyZ3MnLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgcHJldl9sb2NhbF9lbnVtJy4KCSh0c3Vic3RfZGVjbCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgcicuCgkoc2V0X21hbmdsZWRfbmFtZV9mb3JfdGVtcGxhdGVfZGVjbCk6IEluaXRpYWxpemUgdmFyaWFibGUKCWBjb250ZXh0Jy4KCgkqIHNwZXcuYyAoc2Nhbl90b2tlbnMpOiBDaGFuZ2UgdHlwZSBvZiBwYXJhbWV0ZXIgYG4nIHRvIHVuc2lnbmVkLgoJTGlrZXdpc2UgZm9yIHZhcmlhYmxlIGBpJy4KCSh5eWxleCk6IEluaXRpYWxpemUgdmFyaWFibGUgYHRycnInLgoKCSogdHlwZWNrLmMgKGNvbXBwYXJtcyk6IE1hcmsgdmFyaWFibGUgYHN0cmljdCcgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIHhyZWYuYyAoc2ltcGxpZnlfdHlwZSk6IENhc3QgYXJndW1lbnQgb2YgY3R5cGUgZnVuY3Rpb24gdG8KCWB1bnNpZ25lZCBjaGFyJy4KCjE5OTgtMDktMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2x2YWx1ZV92YWxpZCk6IFJlbW92ZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvbid0IGRpc2FsbG93IHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zLgoJKiB0cmVlLmMgKGx2YWx1ZV9wXzEpOiBOZXcgZnVuY3Rpb24sIGNvbWJpbmluZyBkdXBsaWNhdGVkCgljb2RlIGZyb20gLi4uCgkobHZhbHVlX3ApOiBVc2UgaXQuCgkocmVhbF9sdmFsdWVfcCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAobGFuZ3VhZ2VfbHZhbHVlX3ZhbGlkKTogUmVtb3ZlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogVHJlYXQgRlVOQ1RJT05fVFlQRXMgYXMgcmVhZG9ubHksIGV2ZW4gdGhvdWdoCgl0aGV5IGRvbid0IGhhdmUgVFJFRV9SRUFET05MWSBzZXQuCgkqIHR5cGVjazIuYyAocmVhZG9ubHlfZXJyb3IpOiBBZGQgY2FzZSBmb3IgRlVOQ1RJT05fREVDTHMuCgoxOTk4LTA5LTI0ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBzcGV3LmMgKHl5bGV4KTogR2l2ZSBkaWFnbm9zdGljLgoJKiBoYXNoLmggKGlzX3Jlc2VydmVkX3dvcmQpOiBBZGQgZXhwb3J0LgoJKiBneHguZ3BlcmY6IExpa2V3aXNlLgoJKiBsZXguaCAocmlkKTogQWRkIFJJRF9FWFBPUlQuCgkqIGxleC5jIChpbml0X3BhcnNlKTogTGlrZXdpc2UuCgpUdWUgU2VwIDIyIDIxOjAxOjE5IDE5OTggIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBNYWtlIHdhcm5pbmcgYSBmdWxsIHNlbnRlbmNlLgoKMTk5OC0wOS0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsX2xpc3QpOiBJbXByb3ZlIGVycm9yLXJlY292ZXJ5LgoKMTk5OC0wOS0yMiAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsb29ueS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBNb3ZlIGVycm9yIHRvIHBvaW50IHdoZXJlIG5hbWUKCXZhcmlhYmxlIGNhbiBiZSB1c2VkIGJ5IGR1bXBfdHlwZS4KCjE5OTgtMDktMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBJbXByb3ZlIGVycm9yLXJlY292ZXJ5LgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBMaWtld2lzZS4KCSogcHQuYyAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgoxOTk4LTA5LTIwICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IEZpbmRpbmcgbXVsdGlwbGUgbWVtYmVycyBpcyBhbHdheXMKCWFuIGVycm9yLgoKMTk5OC0wOS0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy1maWx0KTogIExpbmsgbGliaWJlcnR5LmEgYWZ0ZXIgY3h4bWFpbi5vLgoKTW9uIFNlcCAyMSAwMTo1MzowNSAxOTk4ICBGZWxpeCBMZWUgIDxmbGVlQGN5Z251cy5jb20+CgoJKiBsZXguYyAoaW5pdF9sZXgpOiBVc2UgZ2V0ZW52ICgiTEFORyIpLCBub3QgR0VUX0VOVklST05NRU5UICgpLgoKMTk5OC0wOS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKG1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MpOiBSZWZvcm1hdC4KCjE5OTgtMDktMTcgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBSZWFsaWduIHNvbWUgY29kZS4KCjE5OTgtMDktMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKHRpbmZvLm8pOiBVc2UgQ1hYRkxBR1Mgd2hlbiBjb21waWxpbmcuCgkodGluZm8yLm8pOiBMaWtld2lzZS4KCShleGNlcHRpb24ubyk6IExpa2V3aXNlLgoJKG5ldy5vKTogTGlrZXdpc2UuCgkob3BuZXcubyk6IExpa2V3aXNlLgoJKG9wbmV3bnQubyk6IExpa2V3aXNlLgoJKG9wdm5ldy5vKTogTGlrZXdpc2UuCgkob3B2bmV3bnQubyk6IExpa2V3aXNlLgoJKG9wZGVsLm8pOiBMaWtld2lzZS4KCShvcGRlbG50Lm8pOiBMaWtld2lzZS4KCShvcHZkZWwubyk6IExpa2V3aXNlLgoJKG9wdmRlbG50Lm8pOiBMaWtld2lzZS4KCjE5OTgtMDktMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogS2lsbCBfX2J1aWx0aW5fZnAgYW5kIF9fYnVpbHRpbl9zcC4KCjE5OTgtMDktMTUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogY2FsbC5jIChidWlsZF9maWVsZF9jYWxsKTogSGFuZGxlIHN0YXRpYyBkYXRhIG1lbWJlcnMgdG9vLgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFdoZW4gY29tcGFyaW5nIHBvaW50ZXIgdHlwZXMsIGNoZWNrCgl3aGV0aGVyIHJlZmVycmVkIHR5cGVzIG1hdGNoIGV2ZW4gaW4gc3RyaWN0ZXN0IG1vZGVzLgoKMTk5OC0wOS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaDogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGNsYXNzLmM6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UuCgkobWF5YmVfd2Fybl9hYm91dF9vdmVybHlfcHJpdmF0ZV9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBEZWNsYXJlIGhlcmUsIGFuZCBtYWtlIHN0YXRpYy4gIFJlbW92ZQoJdW5uZWNlc3NhcnkgcGFyYW1ldGVycy4gIFRpZHkgc2xpZ2h0bHkuICBVc2UKCW1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MuCgkoZmluaXNoX3N0cnVjdF8xKTogQWRqdXN0LiAgUmVtb3ZlIGNoZWNrIGZvciBwcml2YXRlIGNvbnN0cnVjdG9ycywKCW5vdyBkb25lIGVsc2V3aGVyZS4KCShmaW5pc2hfc3RydWN0KTogQWRqdXN0LgoKMTk5OC0wOS0xNSAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IE5vIG5lZWQgdG8gY2hlY2sgZm9yIG5ldwoJZXhjZXB0aW9uIG1vZGVsLgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogRGVsZXRlZC4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrKTogQWRkIGNhbGwgdG8gc3RhcnRfZGVjbF8xKCkuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IEFkZCBjYWxsIHRvIGVuZF9jYXRjaF9oYW5kbGVyKCkuCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBPbmx5IGNoZWNrIHRoZSBleGNlcHRpb24KCWxhbmd1YWdlIGlmIHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiB0YWJsZS4KCjE5OTgtMDktMTUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IE1hcmsgdGVtcG9yYXJ5IHN0YWNrIHNsb3RzCglhcyB1c2VkIHRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGggdmlydHVhbCBmdW5jdGlvbiB0YWJsZXMuCgoxOTk4LTA5LTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBBZGQgaGFzX25vbl9wcml2YXRlX3N0YXRpY19tZW1fZm4uCgkoQ0xBU1NUWVBFX0hBU19OT05fUFJJVkFURV9TVEFUSUNfTUVNX0ZOKTogTmV3IG1hY3JvLCB0byBhY2Nlc3MgaXQuCgkqIGNsYXNzLmMgKG1heWJlX2NsYXNzX3Rvb19wcml2YXRlX3ApOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogVXNlIGl0LgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3QpOiBTZXQgQ0xBU1NUWVBFX0hBU19OT05fUFJJVkFURV9TVEFUSUNfTUVNX0ZOIGlmCglhcHByb3ByaWF0ZS4KCgkqIHB0LmMgKGNoZWNrX3NwZWNpYWxpemF0aW9uX3Njb3BlKTogRml4IHNwZWxsaW5nIGVycm9yLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogUmVtb3ZlIGNvZGUgdG8gaGFuZGxlIGV4cGxpY2l0CglzcGVjaWFsaXphdGlvbnMgaW4gY2xhc3Mgc2NvcGU7IHRoZXkgYXJlIG5vdyBjb3JyZWN0bHkgZGlhZ25vc2VkCglhcyBlcnJvcnMuCgoxOTk4LTA5LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IERvbid0IGNvcHkgdHlwZXMgaWYgdGhlCglERUNMX0FCU1RSQUNUX09SSUdJTiBvZiB0aGUgbmV3IGRlY2wgbWF0Y2hlcyB0aGUgVFlQRV9OQU1FIG9mIHRoZQoJdHlwZS4KCjE5OTgtMDktMDkgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLWZzLnVzYy5lZHU+CgoJKiBjbGFzcy5jIChnZXRfZW5jbG9zaW5nX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKGlzX2Jhc2Vfb2ZfZW5jbG9zaW5nX2NsYXNzKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoZ2V0X2VuY2xvc2luZ19jbGFzcyk6IERlY2xhcmUuCgkoaXNfYmFzZV9vZl9lbmNsb3NpbmdfY2xhc3MpOiBMaWtld2lzZS4KCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIHRoZW0uCgoxOTk4LTA5LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQ2hlY2sgd2hldGhlciBNQVRIX0xJQlJBUlkgaXMKCW51bGwgdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIGl0LgoKCSogZXJyb3IuYyAoZHVtcF90eXBlX3JlYWwpOiBIYW5kbGUgTkFNRVNQQUNFX0RFQ0wuCgkqIHBhcnNlLnkgKGJhc2VfY2xhc3MuMSk6IEF2b2lkIGNyYXNoIG9uIGVycm9yLgoKMTk5OC0wOS0wOCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogSWYgY29udGV4dCBpcyBhIG5hbWVzcGFjZSwgdGhlIGNvZGUKCWlzIGluIGVycm9yLgoKMTk5OC0wOS0wOCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBwYXJzZS55IChub21vZHNfaW5pdGRjbDApOiBTZXQgdXAgdGhlIHBhcnNlciBzdGFjayBjb3JyZWN0bHkuCgoxOTk4LTA5LTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChhbm9ueW1vdXNfbmFtZXNwYWNlX25hbWUpOiBEZWNsYXJlLgoJKiBkZWNsLmM6IERlZmluZSBpdC4KCShwdXNoX25hbWVzcGFjZSk6IFVzZSBhbm9ueW1vdXNfbmFtZXNwYWNlX25hbWUsIHJhdGhlciB0aGFuIGxvY2FsCglzdGF0aWMgYW5vbl9uYW1lLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBJZiBhIG5hbWVzcGFjZSBpcyBuYW1lZAoJYW5vbnltb3VzX25hbWVzcGFjZV9uYW1lLCBjYWxsIGl0IHthbm9ueW1vdXN9LgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIHJlZmVyZW5jZXMgYW5kIHBvaW50ZXJzCglpbiBlcnJvciBtZXNzYWdlLgoKMTk5OC0wOS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAocHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogQ29uc2lzdGVudGx5IGFsbG9jYXRlCglhbmQgemVybyB0cGQucGFybXMgYmFzZWQgb24gbnRwYXJtcy4gIFVzZSB0cGQyLnBhcm1zLCBub3QKCXRwZC5wYXJtcywgd2hlcmUgYXBwcm9wcmlhdGUuCgpTdW4gU2VwICA2IDAwOjAwOjUxIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChJTkNMVURFUyk6IFVwZGF0ZSBhZnRlciByZWNlbnQgdG9wbGV2ZWwgZ2NjCglyZW9yZ2FuaXphdGlvbnMuCgoxOTk4LTA5LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChUSV9QRU5ESU5HX1NQRUNJQUxJWkFUSU9OX0ZMQUcpOiBSZW1vdmUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgaGFja2VyeSB0byBkZWFsIHdpdGggZXhwbGljaXQKCXNwZWNpYWxpemF0aW9ucyBpbiBjbGFzcyBzY29wZS4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNoZWNrX3NwZWNpYWxpemF0aW9uX3Njb3BlKTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX3NwZWNpYWxpemF0aW9uKTogQ2FsbCBpdC4KCShwcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglwdXNoX3RlbXBsYXRlX2RlY2wuICBDaGVjayBwYXJ0aWFsIHNwZWNpYWxpemF0aW9ucyBtb3JlCglzdHJpbmdlbnRseS4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBDYWxsIGl0LgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QgYXR0ZW1wdCB0byBoYW5kbGUgZXhwbGljaXQKCXNwZWNpYWxpemF0aW9ucyBpbiBjbGFzcyBzY29wZS4KCSh0ZW1wbGF0ZV9wYXJtX2RhdGEpOiBEb2N1bWVudC4gIEFkZCBjdXJyZW50X2FyZyBhbmQKCWFyZ191c2VzX3RlbXBsYXRlX3Bhcm1zLgoJKG1hcmtfdGVtcGxhdGVfcGFybSk6IFNldCBpdC4KCSh0c3Vic3RfYXJnX3R5cGVzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBUd2Vhay4KCjE5OTgtMDktMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBpbmMvdHlwZWluZm8gKHR5cGVfaW5mbzo6dHlwZV9pbmZvKGNvbnN0IGNoYXIqKSk6IE1ha2UKCWBleHBsaWNpdCcuCgoJKiBjcC10cmVlLmggKGhhc2hfdHJlZV9jb25zX3NpbXBsZSk6IE5ldyBtYWNyby4KCSogcHQuYyAodHN1YnN0X2FyZ190eXBlcyk6IE5ldyBmdW5jdGlvbi4gIFVzZSBoYXNoX3RyZWVfY29ucy4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBVc2UgbWFrZV90ZW1wX3ZlYywgaW5zdGVhZCBvZgoJbWFrZV90cmVlX3ZlYy4gIERvY3VtZW50IHRoaXMgYmVoYXZpb3IuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0LCBjYXNlcyBNRVRIT0RfVFlQRSwgRlVOQ1RJT05fVFlQRSk6IFVzZSB0c3Vic3RfYXJnX3R5cGVzLgoJUmVtb3ZlIGRlYWQgY29kZSAoYW5kIGFkZCBhc3NlcnRpb24gdG8gY2hlY2sgaXRzIGRlYWRuZXNzKS4gIEZpeAoJYnVnIHcuci50LiBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnMuCgoxOTk4LTA5LTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IEFsd2F5cyBtYWtlIGFydGlmaWNpYWxzIGNvbWRhdC4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCSogcHQuYyAobWFya19kZWNsX2luc3RhbnRpYXRlZCk6IExpa2V3aXNlLgoKMTk5OC0wOS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2dsb2JhbGx5X3F1YWxpZmllZF9tZW1iZXJfY2FsbF9leHByKToKCVJlbmFtZSB0byAuLi4KCShmaW5pc2hfcXVhbGlmaWVkX2NhbGxfZXhwcikuCgkqIHNlbWFudGljcy5jOiBMaWtld2lzZS4KCSogcGFyc2UueSAocHJpbWFyeSk6IFVzZSBpdC4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IFJlbW92ZSByZWR1bmRhbnQgY29kZS4KCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogQ2FsbCBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlIHRvCgloYW5kbGUgbWVtYmVycyBvZiByZWZlcmVuY2UgdHlwZS4gIEltcHJvdmUgZXJyb3IgcmVjb3ZlcnkuCgoxOTk4LTA5LTAzICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IERlY2xhcmUgd2Fybl9ub250ZW1wbGF0ZV9mcmllbmQuCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IFNldC4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtV25vbi10ZW1wbGF0ZS1mcmllbmQuCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBVc2UgdG8gdG9nZ2xlIG5vbi10ZW1wbGF0ZSBmdW5jdGlvbiB3YXJuaW5nLgoKMTk5OC0wOS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBEb24ndCByZXNvbHZlIENPTlNUX0RFQ0xzIHRvIHRoZWlyCgljb3JyZXNwb25kaW5nIElOVEVHRVJfQ1NUcyB3aGVuIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCSogcHQuYyAodHN1YnN0X2VudW0pOiBUd2VhayBhY2NvcmRpbmdseS4KCjE5OTgtMDktMDMgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBBZGQgd2FybmluZyBoZXJlLgoJKHB1c2hkZWNsKTogVHdlYWsuCgoxOTk4LTA5LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBUaWR5LgoJKiBzZWFyY2guYyAoZ2V0X2Jhc2VfZGlzdGFuY2VfcmVjdXJzaXZlKTogU2ltcGxpZnkuCgkoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBMaWtld2lzZS4KCgkqIHB0LmMgKHVuaWZ5KTogT25seSBzcGVjaWFsLWNhc2UgSU5URUdFUl9UWVBFIGlmIGl0IHVzZXMgdGVtcGxhdGUKCXBhcm1zLgoKV2VkIFNlcCAwMiAwOToyNToyOSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiAgQ2FsbCBIQU5ETEVfUFJBR01BIGJlZm9yZQoJSEFORExFX1NZU1ZfUFJBR01BIGlmIGJvdGggYXJlIGRlZmluZWQuICBHZW5lcmF0ZSB3YXJuaW5nIG1lc3NhZ2VzCglpZiB1bmtub3duIHByYWdtYXMgYXJlIGVuY291bnRlcmVkLgoJKGhhbmRsZV9zeXN2X3ByYWdtYSk6IEludGVycHJldCByZXR1cm4gY29kZSBmcm9tCgloYW5kbGVfcHJhZ21hX3Rva2VuICgpLiAgUmV0dXJuIHN1Y2Nlc3MvZmFpbHVyZSBpbmRpY2F0aW9uIHJhdGhlcgoJdGhhbiBuZXh0IHVucHJvY2Vzc2VkIGNoYXJhY3Rlci4KCShwcmFnbWFfZ2V0Yyk6IE5ldyBmdW5jdGlvbjogcmV0cmlldmVzIGNoYXJhY3RlcnMgZnJvbSB0aGUKCWlucHV0IHN0cmVhbS4gIERlZmluZWQgd2hlbiBIQU5ETEVfUFJBR01BIGlzIGRlZmluZWQuCgkocHJhZ21hX3VuZ2V0Yyk6IE5ldyBmdW5jdGlvbjogcmVwbGFjZXMgY2hhcmFjdGVycyBiYWNrIGludG8gdGhlCglpbnB1dCBzdHJlYW0uICBEZWZpbmVkIHdoZW4gSEFORExFX1BSQUdNQSBpcyBkZWZpbmVkLgoKMTk5OC0wOS0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAob3V0cHV0X3Z0YWJsZV9pbmhlcml0KTogVXNlICVjRElHSVQgaW4gdGhlIG9wZXJhbmRzLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogTGlrZXdpc2UuCgoxOTk4LTA5LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0ZSSUVORF9QU0VVRE9fVEVNUExBVEVfSU5TVEFOVElBVElPTik6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBVc2UgaXQuCgoxOTk4LTA5LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBBbHNvIGRvIGltcGxpY2l0IHR5cGVuYW1lIHRoaW5nIGZvcgoJYXJ0aWZpY2lhbCBUWVBFX0RFQ0xzLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogTGlrZXdpc2UuCgkobG9va3VwX2ZuZmllbGRzLCBsb29rdXBfZmllbGQpOiBBZGp1c3QgZm9yIGltcGxpY2l0IHR5cGVuYW1lIGtsdWRnZS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0b3IpOiBVc2UgZW50ZXJfc2NvcGVfb2YuCgkoZW50ZXJfc2NvcGVfb2YpOiBFeHRyYWN0IHR5cGUgZnJvbSBpbXBsaWNpdCB0eXBlbmFtZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkqIGxleC5jIChpZGVudGlmaWVyX3R5cGUpOiBIYW5kbGUgaW1wbGljaXQgdHlwZW5hbWUgd2hlbiBjaGVja2luZwoJZm9yIFNFTEZOQU1FLgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIGZsYWdfc3RyaWN0X3Byb3RvdHlwZS4KCSogbGV4LmMgKGRvX3Njb3BlZF9pZCwgZG9faWRlbnRpZmllcik6IERvbid0IGltcGxpY2l0bHlfZGVjbGFyZSBpZgoJLWZzdHJpY3QtcHJvdG90eXBlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSWYgLWZ7bm8sLX1zdHJpY3QtcHJvdG90eXBlIHdhc24ndAoJc3BlY2lmaWVkLCBzZXQgaXQgdG8gdGhlIHZhbHVlIG9mIHBlZGFudGljLgoKMTk5OC0wOS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvYyk6IEhhbmRsZSB0ZW1wbGF0ZS1pZCBleHByZXNzaW9ucyBhcyBhcmd1bWVudHMuCgoxOTk4LTA4LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IEhhbmRsZSBtZW1iZXIgZW51bXMgb2YgY2xhc3NlcyBkZWNsYXJlZCBpbgoJdGVtcGxhdGUgZnVuY3Rpb25zLgoKCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBTdHJpcCBhdHRyaWJ1dGVzIGJlZm9yZSBjYWxsaW5nCglncm9rdHlwZW5hbWUuCgoxOTk4LTA4LTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmgsIGRlY2wyLmM6IFJlbW92ZSBzdXBwb3J0IGZvciAtZmFsbC12aXJ0dWFsLAoJLWZlbnVtLWludC1lcXVpdmFsZW5jZSBhbmQgLWZuby1ub25udWxsLW9iamVjdHMuCgkqIGNsYXNzLmMgKGNoZWNrX2Zvcl9vdmVycmlkZSk6IFJlbW92ZSBzdXBwb3J0IGZvciAtZmFsbC12aXJ0dWFsLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IFJlbW92ZSBzdXBwb3J0IGZvciAtZmVudW0taW50LWVxdWl2YWxlbmNlLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IExpa2V3aXNlLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF92ZmllbGRfcmVmKTogUmVtb3ZlIHN1cHBvcnQgZm9yIC1mbm8tbm9ubnVsbC1vYmplY3RzLgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogTGlrZXdpc2UuCgpTdW4gQXVnIDMwIDIyOjE2OjMxIDE5OTggIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIE1ha2VmaWxlLmluIChJTlRFUkZBQ0UpOiBOZXcsIHNldCB0byAxLgoKMTk5OC0wOC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdCBERUNMX0NPTlRFWFQsIHdoZW4KCWNvbXBhcmluZyB3aXRoIGdsb2JhbF9uYW1lc3BhY2UuCgkoZHVtcF9hZ2dyX3R5cGUpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IElzc3VlIGVycm9yIG9uIGRlY2xhcmF0aW9uIG9mIGZyaWVuZAoJdGVtcGxhdGVzIHdpdGggZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnRzLgoKCSogcHQuYyAoY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0Cglmcm9tLi4uCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogSGVyZS4KCSh0c3Vic3QpOiBBdHRlbXB0IGJldHRlciBlcnJvci1yZWNvdmVyeS4KCjE5OTgtMDgtMjggIEJlbmphbWluIEtvc25payAgPGJrb3pAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogQWRkIGNoZWNrcyBmb3IKCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgoxOTk4LTA4LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBGaXggdGhpbmtvIGluIHByZXZpb3VzIGNoYW5nZS4KCjE5OTgtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChkZnNfc2VhcmNoLCBiaW5mb19mb3JfdnRhYmxlLCBkZnNfYmZ2X2hlbHBlcik6IE5ldyBmbnMuCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IENhbGwgYmluZm9fZm9yX3Z0YWJsZS4KCjE5OTgtMDgtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJQWRkIHN1cHBvcnQgZm9yIGRpc2NhcmRpbmcgdW51c2VkIHZpcnR1YWwgZnVuY3Rpb25zLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mdnRhYmxlLWdjLgoJKiBjcC10cmVlLmg6IEFkZCBmbGFnX3Z0YWJsZV9nYy4KCSogZGVjbDIuYyAob3V0cHV0X3Z0YWJsZV9pbmhlcml0KTogTmV3IGZuLgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IENhbGwgaXQuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeV9yZWYpOiBOZXcgZm4uCgkoYnVpbGRfdnRibF9yZWYpOiBDYWxsIGl0LgoKMTk5OC0wOC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfZW51bWVyYXRvcik6IFRha2UgdGhlIGVudW1lcmF0aW9uIHR5cGUgYXMgYQoJcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogRG9uJ3Qgc2V0IHRoZSBUUkVFX1RZUEUgZm9yIHRoZQoJZW51bWVyYXRpb24gY29uc3RhbnQgdmFsdWVzIGlmIHdlJ3JlIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbHMuCglEb24ndCBzZXQgdGhlIHR5cGUgZm9yIHRoZSBDT05TVF9ERUNMcyBlaXRoZXI7IHRoYXQncyBkb25lIGluCglidWlsZF9lbnVtZXJhdG9yLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBUYWtlIHRoZSBlbnVtZXJhdGlvbiB0eXBlIGFzIGEKCXBhcmFtZXRlci4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBEb24ndCByZXNvbHZlIGVudW1lcmF0aW9uIGNvbnN0YW50cyB3aGlsZQoJcHJvY2Vzc2luZyB0ZW1wbGF0ZSBkZWNsYXJhdGlvbnMsIGV2ZW4gaWYgdGhleSBoYXBwZW4gdG8gYmUKCVRFTVBMQVRFX1BBUk1fSU5ERVhzLgoKCSogcGFyc2UueSAoY3VycmVudF9lbnVtX3R5cGUpOiBOZXcgdmFyaWFibGUuCgkocHJpbWFyeSk6IERvbid0IGFsbG93IHN0YXRlbWVudC1leHByZXNzaW9uIGluIGxvY2FsIGNsYXNzZXMganVzdAoJYXMgd2UgZG9uJ3QgaW4gZ2xvYmFsIGNsYXNzZXMuCgkoc3RydWN0c3ApOiBVc2UgY3VycmVudF9lbnVtX3R5cGUuCgkoZW51bV9saXN0KTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogRG9uJ3QgY2hlY2sgZm9yIE5PUF9FWFBScyBpbnRyb2R1Y2VkIGJ5CglmaW5pc2hfZW51bTsgdGhleSBubyBsb25nZXIgb2NjdXIuCgoJKiBjcC10cmVlLmggKGZpbmlzaF9iYXNlX3NwZWNpZmllcik6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2UueSAoYmFzZV9jbGFzcyk6IFVzZSBpdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9iYXNlX3NwZWNpZmllcik6IERlZmluZSBpdC4KCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogV2FybiBvbiB1c2Ugb2YgdHlwZW5hbWUgb3V0c2lkZSBvZiB0ZW1wbGF0ZQoJZGVjbGFyYXRpb25zLgoKMTk5OC0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGhhbmRsZV9jcF9wcmFnbWEpOiBSZW1vdmUgI3ByYWdtYSB2dGFibGUuCgkqIGxhbmctb3B0aW9ucy5oOiBSZW1vdmUgK2Ugb3B0aW9ucy4KCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBEb24ndCBjaGVjayB3cml0ZV92aXJ0dWFscy4KCShmaW5pc2hfdnRhYmxlX3ZhcmRlY2wsIGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUsIGZpbmlzaF92dGJscywgZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENoZWNrIGZsYWdfZWxpZGVfY29uc3RydWN0b3JzLgoJKiBkZWNsMi5jOiBmbGFnX2VsaWRlX2NvbnN0cnVjdG9ycyBkZWZhdWx0cyB0byAxLgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBSZW1vdmUgcmV0dXJuX2xvYyBwYXJtLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IEFkanVzdC4KCgkqIHNlYXJjaC5jOiBUZWFyIG91dCBhbGwgbWlfbWF0cml4IGFuZCBtZW1vaXplIGNvZGUuCgkobG9va3VwX2ZpZWxkLCBsb29rdXBfZm5maWVsZHMpOiBVc2Ugc2NyYXRjaF90cmVlX2NvbnMuCgkqIGxhbmctb3B0aW9ucy5oOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBmb3IgLWZoYW5kbGUtZXhjZXB0aW9ucywKCS1mbWVtb2l6ZS1sb29rdXBzIGFuZCAtZnNhdmUtbWVtb2l6ZWQuCgkqIGNwLXRyZWUuaDogTG9zZSBtaV9tYXRyaXggYW5kIG1lbW9pemUgc3VwcG9ydC4KCSogZGVjbDIuYzogSWdub3JlIC1mbWVtb2l6ZS1sb29rdXBzIGFuZCAtZnNhdmUtbWVtb2l6ZWQuCgkqIGNsYXNzLmM6IExvc2Ugc3RydWN0IGNsYXNzX2xldmVsLgoJKHB1c2hjbGFzcywgcG9wY2xhc3MpOiBMb3NlIG1lbW9pemUgc3VwcG9ydC4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgoJTmV2ZXIgY2hhbmdlIEJJTkZPX0lOSEVSSVRBTkNFX0NIQUlOLgoJKiBpbml0LmMgKGVtaXRfYmFzZV9pbml0KTogQ2hhbmdlIG1vZGlmaWNhdGlvbiBvZgoJQklORk9fSU5IRVJJVEFOQ0VfQ0hBSU4gdG8gYW4gYXNzZXJ0LgoJKiBzZWFyY2guYyAoZ2V0X2Jhc2VfZGlzdGFuY2VfcmVjdXJzaXZlKTogTGlrZXdpc2UuCgkoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBMaWtld2lzZS4KCShsb29rdXBfbWVtYmVyKTogTGlrZXdpc2UuCgkoY29udmVydF9wb2ludGVyX3RvX3NpbmdsZV9sZXZlbCk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLiAgTG9zZSBzZXR0aW5nIFRSRUVfVklBXyogb24gVFJFRV9MSVNUcy4KCShsb29rdXBfZm5maWVsZHMpOiBMaWtld2lzZS4KCSogdHJlZS5jIChwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyk6IERvbid0IGNhbGwgdW5zaGFyZV9iYXNlX2JpbmZvcy4KCSh1bnNoYXJlX2Jhc2VfYmluZm9zKTogRG9uJ3QgY2FsbCBwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cy4KCShsYXlvdXRfYmFzZXR5cGVzKTogQ2FsbCBwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyBpbnN0ZWFkIG9mCgl1bnNoYXJlX2Jhc2VfYmluZm9zLgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQ2FsbCB1bnNoYXJlX2Jhc2VfYmluZm9zLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHJldmVyc2VfcGF0aCk6IFJlbW92ZSAnY29weScgcGFybTsgYWx3YXlzIG1ha2UgYQoJdGVtcG9yYXJ5IGNvcHkuCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BhdGgpOiBKdXN0IGNhbGwgaXQuCgkqIHNlYXJjaC5jIChjb21wdXRlX2FjY2Vzcyk6IExpa2V3aXNlLiAgRG9uJ3QgcmUtcmV2ZXJzZS4KCjE5OTgtMDgtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogVXNlIHJldmVyc2VfcGF0aC4KCShmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBNb3ZlIHdhcm5pbmdzIGZvciBpbmFjY2Vzc2libGUgYmFzZXMgdG8KCWxheW91dF9iYXNldHlwZXMuCgkobW9kaWZ5X29uZV92dGFibGUpOiBSZW1vdmUgY2hlY2sgb2YgVFJFRV9VU0VEIChiaW5mbykuCgkoZml4dXBfdnRhYmxlX2RlbHRhczEpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChCSU5GT19JTkhFUklUQU5DRV9DSEFJTik6IERvY3VtZW50IGhlcmUuCgkoeHJlZl90YWcpOiBSZW1vdmUgYmluZm9zIHBhcmFtZXRlci4KCShtYWtlX2JpbmZvKTogUmVtb3ZlIGNoYWluIHBhcmFtZXRlci4KCShyZXZlcnNlX3BhdGgpOiBBZGQgY29weSBwYXJhbWV0ZXIuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDaGFuZ2UgY2FsbHMgdG8geHJlZl90YWcuCgkoeHJlZl90YWcpOiBSZW1vdmUgYmluZm9zIHBhcmFtZXRlci4KCSh4cmVmX2Jhc2V0eXBlcyk6IENoYW5nZSBjYWxscyB0byBtYWtlX2JpbmZvLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IENoYW5nZSBjYWxscyB0byB4cmVmX3RhZy4KCShoYW5kbGVfY2xhc3NfaGVhZCk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IENoYW5nZSBjYWxscyB0byBtYWtlX2JpbmZvLgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IENoYW5nZSBjYWxscyB0byB4cmVmX3RhZy4KCShuYW1lZF9jb21wbGV4X2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSk6IExpa2V3aXNlLgoJKG5hbWVkX2NsYXNzX2hlYWQpOiBMaWtld2lzZS4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBDaGFuZ2UgY2FsbHMgdG8gcmV2ZXJzZV9wYXRoLgoJKGRmc19nZXRfdmJhc2VfdHlwZXMpOiBDaGFuZ2UgY2FsbHMgdG8gbWFrZV9iaW5mby4KCShnZXRfdmJhc2VfdHlwZXMpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiB0cmVlLmMgKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBDaGFuZ2UgY2FsbHMgdG8gbWFrZV9iaW5mby4KCShsYXlvdXRfYmFzZXR5cGVzKTogV2FybiBoZXJlIGFib3V0IGluYWNjZXNzaWJsZSBiYXNlcy4KCShtYWtlX2JpbmZvKTogUmVtb3ZlIGNoYWluIHBhcmFtZXRlci4KCShyZXZlcnNlX3BhdGgpOiBBZGQgY29weSBwYXJhbWV0ZXIuCgoxOTk4LTA4LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jOiAjaWYgMCBjb21wbGV0ZV90eXBlX3AuCgkqIGluaXQuYyAoYnVpbGRfamF2YV9jbGFzc19yZWYsIGJ1aWxkX25ld18xKTogUmVtb3ZlIHVudXNlZCBsb2NhbHMuCgkqIG1ldGhvZC5jIChwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVzKTogTGlrZXdpc2UuCgoJU3RvcCBzaGFyaW5nIGJpbmZvcyBmb3IgaW5kaXJlY3QgdmlydHVhbCBiYXNlcy4KCSogdHJlZS5jIChwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyk6IFVuc2hhcmUgdmJhc2VzLCB0b28uCgkobGF5b3V0X2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBDb3B5IHZiYXNlcywgdG9vLgoJKiBjcC10cmVlLmggKEJJTkZPX1ZJQV9QVUJMSUMsIEJJTkZPX0JBU0VJTklUX01BUktFRCwKCUJJTkZPX1ZCQVNFX0lOSVRfTUFSS0VEKTogUmVtb3ZlIG9ic29sZXRlIG1hY3Jvcy4KCShCSU5GT19QVVNIREVDTFNfTUFSS0VELCBTRVRfQklORk9fUFVTSERFQ0xTX01BUktFRCwKCUNMRUFSX0JJTkZPX1BVU0hERUNMU19NQVJLRUQpOiBOZXcgbWFjcm9zLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkLCBsb29rdXBfZm5maWVsZHMsIGxvb2t1cF9tZW1iZXIpOiBSZW1vdmUKCXJlZmVyZW5jZSB0byBCSU5GT19WSUFfUFVCTElDLgoJKG1hcmtlZF9wdXNoZGVjbHNfcCwgdW5tYXJrZWRfcHVzaGRlY2xzX3ApOiBOZXcgZm5zLgoJKHB1c2hfY2xhc3NfZGVjbHMpOiBVc2UgdGhlbS4KCShkZnNfcHVzaGRlY2xzKTogVXNlIFNFVF9CSU5GT19QVVNIREVDTFNfTUFSS0VELgoJKGRmc19jb21wcmVzc19kZWNscyk6IFVzZSBDTEVBUl9CSU5GT19QVVNIREVDTFNfTUFSS0VELgoKMTk5OC0wOC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfZW51bWVyYXRvcik6IFNldCBERUNMX0NPTlRFWFQgZm9yIHRoZQoJQ09OU1RfREVDTHMuCgoxOTk4LTA4LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChmaW5pc2hfZW51bSk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBVc2UgVFlQRV9WQUxVRVMsIHJhdGhlciB0aGFuIHRha2luZyBhCglWQUxVRVMgcGFyYW1ldGVyLiAgRG9uJ3QgdHJ5IHRvIGNvbXB1dGUgbWlucy9tYXhzIGlmCglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogVXNlIG5ldyBjYWxsaW5nIHNlcXVlbmNlIGZvciBmaW5pc2hfZW51bS4KCSogcHQuYyAodHN1YnN0X2VudW0pOiBMaWtld2lzZS4gIFRha2UgdGhlIG5ldyB0eXBlIGFzIGlucHV0LgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLiAgVHdlYWsuCglSZWdpc3RlciBlbnVtcyBvbiBpbnN0YW50aWF0aW9uIGxpc3QgYmVmb3JlIHN1YnN0aXR1dGluZwoJZW51bWVyYXRpb24gY29uc3RhbnRzLgoJKHRzdWJzdF9kZWNsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3Qgb2JsaXRlcmF0ZSB0aGUKCURFQ0xfVEVNUExBVEVfSU5GTyBmb3IgYSB0ZW1wbGF0ZSBpZiB3ZSdyZSBub3QgcmVwbGFjaW5nIGl0IHdpdGgKCWFueXRoaW5nLgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKV2VkIEF1ZyAyNiAxMDo1NDo1MSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBlcnJmbi5jOiBSZW1vdmUgc3RkYXJnLmgvdmFyYXJncy5oLgoJKiB0cmVlLmM6IExpa2V3aXNlLgoKMTk5OC0wOC0yNSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogT25seSBkbyB0eXBlbmFtZSBvdmVybG9hZGluZyBvbiBhbgoJSURFTlRJRklFUl9OT0RFIHRoYXQgaGFwcGVucyB0byBsb29rIGxpa2UgYSB0eXBlbmFtZSBpZiBpdCBhY3R1YWxseQoJaGFzIGEgdHlwZSBmb3IgdXMgdG8gdXNlLgoKMTk5OC0wOC0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbXBfY3ZfdGFyZ2V0X3R5cGVzKTogU3BsaXQgb3V0Li4uCgkoY29tcF90YXJnZXRfdHlwZXMpOiBGcm9tIGhlcmUuICBEb24ndCBhbGxvdyBjdi1xdWFsIGNoYW5nZXMgdW5kZXIKCWEgcG9pbnRlciBpZiBucHRycyA9PSAwLiAgRml4IE9GRlNFVF9UWVBFIGhhbmRsaW5nLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBQYXNzIDEgdG8gbnB0cnMuCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBVc2UgY29tcF9wdHJfdHR5cGVzLgoKMTk5OC0wOC0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNlYXJjaC5jIChkZXBlbmRlbnRfYmFzZV9wKTogRG9uJ3QgY29tcGFyZSBhIGJpbmZvIHRvCgljdXJyZW50X2NsYXNzX3R5cGU7IHVzZSB0aGUgVFJFRV9UWVBFIG9mIHRoZSBiaW5mbyBpbnN0ZWFkLgoKCSogY3AtdHJlZS5oIChDTEFTU19UWVBFX1ApOiBSZXZpc2UgZGVmaW5pdGlvbi4KCjE5OTgtMDgtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgZGlmZmVyZW50CglleGNlcHRpb25zIGZyb20gYW4gaW50ZXJuYWwgZGVjbCBldmVuIGlmIHBlZGFudGljLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDb252ZXJ0aW5nIGZyb20gcG0gb2YgdmJhc2UKCXRvIGRlcml2ZWQgaXMgYW4gZXJyb3IsIG5vdCBhIHNvcnJ5LgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBVc2UgY29udmVydF9wb2ludGVyX3RvX3JlYWwgZm9yICd0aGlzJy4KCSogY2xhc3MuYyAoZml4ZWRfdHlwZV9vcl9udWxsKTogUmVuYW1lIGZyb20KCXJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcC4gIFJldHVybiB0aGUgZHluYW1pYyB0eXBlIG9mIHRoZQoJZXhwcmVzc2lvbiwgaWYgZml4ZWQsIG9yIG51bGwuCgkocmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wKTogVXNlIGl0LiAgUmV0dXJuIDAgaWYgdGhlIGR5bmFtaWMgdHlwZQoJZG9lcyBub3QgbWF0Y2ggdGhlIHN0YXRpYyB0eXBlLgoJKGJ1aWxkX3ZiYXNlX3BhdGgpOiBSZW5hbWUgJ2FsaWFzX3RoaXMnIHRvICdub25udWxsJy4gIFVzZQoJcmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wIGFnYWluLgoKMTk5OC0wOC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogTW92ZSBzcGVjaWFsIGNhc2UgY29kZSBmb3IgZGVhbGluZyB3aXRoCgl0cmlja3kgZnJpZW5kIHRlbXBsYXRlcyBoZXJlIGZyb20gLi4uCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBIZXJlLgoKMTk5OC0wOC0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogUmVtb3ZlIHJlZHVuZGFudCBsaW5rYWdlIGNoZWNrLgoKMTk5OC0wOC0yNCAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogSGFuZGxlIHRoZSBjYXNlIHRoYXQgdmFsdHlwZQoJaXMgd2lkZXIgdGhhbiB0aGUgZnVuY3Rpb25zIHJldHVybiB0eXBlLgoKMTk5OC0wOC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NfVFlQRV9QKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIGl0IGluc3RlYWQgb2YgSVNfQUdHUl9UWVBFLgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBVbmRvIHByZXZpb3VzIGNoYW5nZS4KCjE5OTgtMDgtMjQgIEJlbmphbWluIEtvc25payAgPGJrb3pAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogRGVjbGFyZS4KCSogcHQuYyAoZGVjbF90ZW1wbGF0ZV9wYXJtX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBDaGVjayBkZWNscyBmb3IgcmVkZWNsYXJpbmcgdGVtcGxhdGUgcGFybXMuCgkoeHJlZl90YWcpOiBNYWtlIHJlZGVjbGFyYXRpb24gYW4gZXJyb3IsIHByaW50IGRlY2wuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IENoZWNrIGZpZWxkX2RlY2xzIGZvciByZWRlY2xhcmF0aW9uIGFzIHdlbGwuCgoxOTk4LTA4LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwcmltYXJ5KTogRml4IHVwIHRoZSB0eXBlIG9mIHN0cmluZyBjb25zdGFudHMuCgoxOTk4LTA4LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTW92ZSBjaGVjayBmb3Igb2RkIHVzZXMKCW9mIE5VTEwgdG8gYXZvaWQgZHVwbGljYXRlIHdhcm5pbmdzLgoKMTk5OC0wOC0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChsdmFsdWVfdHlwZSk6IEZpeCBmb3IgYXJyYXlzLgoJKiB0eXBlY2suYyAoc3RyaW5nX2NvbnZfcCk6IE5ldyBmbi4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVXNlIGl0LgoJKGJ1aWxkX3VuYXJ5X29wKTogVXNlIGx2YWx1ZV90eXBlLgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24sIGNvbnZlcnRfbGlrZSk6IFVzZSBzdHJpbmdfY29udl9wLgoJKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBVc2UgbHZhbHVlX3R5cGUuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBJZ25vcmUgLXRyYWRpdGlvbmFsLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogZmxhZ193cml0YWJsZV9zdHJpbmdzIGluaGliaXRzCglmbGFnX2NvbnN0X3N0cmluZ3MuCgoxOTk4LTA4LTI0ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBsYW5nLW9wdGlvbnMuaCAobGFuZ19vcHRpb25zKTogQWRkIGZjb25zdC1zdHJpbmdzIHRvIHRoZSBsaXN0CglvZiB2YWxpZCBvcHRpb25zLgoJKiBkZWNsMi5jIChsYW5nX2Zfb3B0aW9ucywgbGFuZ19kZWNvZGVfb3B0aW9uKTogTGlrZXdpc2UuCgoxOTk4LTA4LTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBEb24ndCB3YXJuIGFib3V0IGxvbmcgbG9uZyBjb25zdGFudHMgaWYKCXdlJ3JlIGFsbG93aW5nIGxvbmcgbG9uZy4KCjE5OTgtMDgtMjQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogVXNlIElERU5USUZJRVJfTkFNRVNQQUNFX1ZBTFVFIGluc3RlYWQgb2YKCWFjY2Vzc2luZyBiaW5kaW5ncyBkaXJlY3RseS4KCgkqIHNlYXJjaC5jIChteV90cmVlX2NvbnMpOiBSZWltcGxlbWVudC4KCgkqIGxhbmctc3BlY3MuaDogUmVtb3ZlIF9fSE9OT1JfU1RELgoJKiBpbmMvZXhjZXB0aW9uLCBpbmMvbmV3LCBpbmMvbmV3LmgsIGluYy90eXBlaW5mbzogTGlrZXdpc2UuCgoxOTk4LTA4LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENvbXBsYWluIGFib3V0IGluLWNsYXNzIGluaXRpYWxpemF0aW9uCglvZiBhZ2dyZWdhdGVzIGFuZC9vciByZWZlcmVuY2VzLgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBDbGVhciBJU19BR0dSX1RZUEUgZm9yCglURU1QTEFURV9UWVBFX1BBUk1zLgoKCSogZGVjbDIuYyAoZ3Jva19hcnJheV9kZWNsKTogQWRkIGNvbW1lbnQuCgkobWFya191c2VkKTogRG9uJ3QgaW5zdGFudGlhdGUgYW4gZXhwbGljaXQgaW5zdGFudGlhdGlvbi4KCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogUmVtb3ZlIGJvZ3VzIGNvbW1lbnQuICBGaXggY2hlY2sKCWZvciBwYXJ0aWFsIHNwZWNpYWxpemF0aW9ucy4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBEb24ndAoJU0VUX0RFQ0xfRVhQTElDSVRfSU5TVEFOVElBVElPTiBoZXJlLgoJKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBPciBoZXJlLgoJKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IERvIGl0IGhlcmUsIGluc3RlYWQuICBBZGQgY2hlY2tzIGZvcgoJZHVwbGljYXRlIGV4cGxpY2l0IGluc3RhbnRpYXRpb25zLCBldGMuICBUaWR5LgoJKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBJbXByb3ZlIGNvbW1lbnRzLiAgQ29tcGxhaW4gYWJvdXQgZXhwbGljaXQKCWluc3RhbnRpYXRpb25zIHdoZXJlIG5vIGRlZmluaXRpb24gaXMgYXZhaWxhYmxlLgoKCSogY3AtdHJlZS5oIChhbnNpX251bGxfbm9kZSk6IFJlbW92ZS4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBXYXJuIGFib3V0IGNvbnZlcnRpbmcgTlVMTCB0byBhbgoJYXJpdGhtZXRpYyB0eXBlLgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4gIFVzZQoJbnVsbF9wdHJfY3N0X3AgaW5zdGVhZCBvZiBleHBhbmRpbmcgaXQgaW5saW5lLgoJKiBkZWNsLmMgKGFuc2lfbnVsbF9ub2RlKTogUmVtb3ZlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTWFrZSBudWxsX25vZGUgYWx3YXlzIGhhdmUgaW50ZWdyYWwgdHlwZS4KCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogV2FybiBhYm91dCBjb252ZXJ0aW5nIE5VTEwgdG8gYW4KCWFyaXRobWV0aWMgdHlwZS4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBSZW1vdmUgaGFuZGxpbmcgb2YgYW5zaV9udWxsX25vZGUuCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IERvbid0IGNvbnZlcnQgTlVMTCB0byB2b2lkKiB0eXBlLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IEZpeCBOVUxMIHdhcm5pbmdzLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBXYXJuIGFib3V0IGNvbnZlcnRpbmcgTlVMTCB0byBhbgoJYXJpdGhtZXRpYyB0eXBlLgoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgoxOTk4LTA4LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlLCBub19saW5rYWdlX2hlbHBlciwgbm9fbGlua2FnZV9jaGVjayk6IE5ldyBmbi4KCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIG5vX2xpbmthZ2VfY2hlY2suCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBMaWtld2lzZS4KCShncm9rZm5kZWNsKTogTGlrZXdpc2UuICBNZW1iZXJzIG9mIGFub255bW91cyB0eXBlcyBoYXZlIG5vIGxpbmthZ2UuCgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogUmVtb3ZlIHVzZWxlc3MgY29kZS4KCjE5OTgtMDgtMjAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCUhhbmRsZSBuZXcnaW5nIG9mIEphdmEgY2xhc3Nlcy4KCSogaW5pdC5jIChidWlsZF9jbGFzc19jbGFzc3JlZik6ICBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfbmV3XzEpOiAgSWYgdHlwZSBpcyBUWVBFX0ZPUl9KQVZBOiAgQ2FsbCBfSnZfQWxsb2NPYmplY3Q7Cgljb25zdHJ1Y3RvciBkb2VzIG5vdCByZXR1cm4gdGhpczsgIGRvbid0IG5lZWQgdG8gZXhjZXB0aW9uLXByb3RlY3QuCgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiAgQ29weSBUWVBFX0ZPUl9KQVZBIGZsYWcuCgkqIGRlY2wyLmMgKGFjY2VwdGFibGVfamF2YV90eXBlKTogIEhhbmRsZSB0ZW1wbGF0ZS1kZXJpdmVkIHR5cGVzLgoKMTk5OC0wOC0yMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6ICBTdXBwcmVzcyB2dGFibGVzIGZvciBKYXZhIGNsYXNzZXMuCgoxOTk4LTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBBbHdheXMgbWVyZ2UgdGhlIG9sZCBhbmQgbmV3IHBhdHRlcm5zCglmb3IgdGVtcGxhdGVzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBuZXcgb25lIGhhcwoJREVDTF9JTklUSUFMLiAgRG9uJ3QgdGhyb3cgYXdheSBzcGVjaWFsaXphdGlvbnMuICBNZXJnZQoJREVDTF9TQVZFRF9UUkVFLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IFVzZSB0aGUgcmlnaHQgcGF0dGVybiB3aGVuIGNhbGN1bGF0aW5nIHRoZQoJY29tcGxldGUgYXJncyBmb3IgYSBuZXcgdGVtcGxhdGUgaW5zdGFuY2UuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IERlYWwgd2l0aCB0cmlja3kgZnJpZW5kIHRlbXBsYXRlCgljYXNlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KClRodSBBdWcgMjAgMDk6MDk6NDUgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaW5pdC5jIChidWlsZF9idWlsdGluX2RlbGV0ZV9jYWxsKTogQWRkIG1pc3NpbmcgYXNzZW1ibGVfZXh0ZXJuYWwKCWNhbGwuCgoxOTk4LTA4LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChub3R5cGVfdW5xdWFsaWZpZWRfaWQpOiBBbHNvIGFjY2VwdCB+QTxpbnQ+LgoKMTk5OC0wOC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogV2FybiBvbiB1c2Ugb2YgTlVMTCBpbgoJYXJpdGhtZXRpYy4KCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogV2FybiB3aGVuIE5VTEwgaXMgdGhyb3duLCBldmVuIHdpdGgKCS1hbnNpLiAgVXNlIGFuc2lfbnVsbF9ub2RlLCByYXRoZXIgdGhhbiBpbnRlZ2VyX3plcm9fbm9kZSwgaW4gdGhlCgl0aHJvd24gZXhwcmVzc2lvbi4KCgkqIGNwLXRyZWUuaCAoYW5zaV9udWxsX25vZGUpOiBOZXcgdmFyaWFibGUuCgkqIGRlY2wuYyAoYW5zaV9udWxsX25vZGUpOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGl0cyB0eXBlLgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IEluaXRpYWxpemUgaXRzIHZhbHVlLiAgVXNlIGFuc2lfbnVsbF9ub2RlCglmb3IgbnVsbF9ub2RlIGluIG5vbi1BTlNJIG1vZGUuCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogVXNlIGFuc2lfbnVsbF9ub2RlIGluCglwbGFjZSBvZiBudWxsX25vZGUgdG8gYXZvaWQgc3B1cmlvdXMgZXJyb3JzLgoKMTk5OC0wOC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoZW50ZXJfc2NvcGVfb2YpOiBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnkgKGNvbXBsZXhfZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogVXNlIGl0LgoJKiBzZW1hbnRpY3MuYyAoZW50ZXJfc2NvcGVfb2YpOiBOZXcgZnVuY3Rpb24uCgoxOTk4LTA4LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IE5vLCBoZXJlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENhdGNoIHBhcm0gd2l0aCBwb2ludGVyIHRvIGFycmF5IG9mCgl1bmtub3duIGJvdW5kIGhlcmUuLi4KCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IC4uLm5vdCBoZXJlLgoKCSogZ3h4aW50LnRleGk6IFJlbW92ZSBvYnNvbGV0ZSBkb2N1bWVudGF0aW9uIG9mIG92ZXJsb2FkaW5nIGNvZGUuCgoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogQWxzbyBzZXQgVFlQRV9TSVpFX1VOSVQuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IExpa2V3aXNlLgoKCSogdHJlZS5jIChsdmFsdWVfdHlwZSk6IEZpeCBmb3IgYXJyYXlzLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBVc2UgbHZhbHVlX3R5cGUuCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IElnbm9yZSAtdHJhZGl0aW9uYWwuCgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEb24ndCBtZXNzIHdpdGggZXJyb3JfbWFya19ub2RlLgoJKiBsZXguYyAoZG9fc2NvcGVkX2lkKTogVXNlIGNwX2Vycm9yLgoKCSogcnR0aS5jIChnZXRfdGluZm9fZm4pOiBEb24ndCBtZXNzIHdpdGggdGhlIGNvbnRleHQgZm9yIG5vdy4KCjE5OTgtMDgtMTcgIEJlbmphbWluIEtvc25payAgPGJrb3pAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbGxvdyBhbm9ueW1vdXMgdHlwZXMgdG8gYmUgY3YtcXVhbGlmaWVkLgoKTW9uIEF1ZyAxNyAxMDo0MDoxOCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjcC10cmVlLmggKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlKTogUHJvdmlkZSBwcm90b3R5cGUuCgoJKiBkZWNsMi5jIChkb19uYW1lc3BhY2VfYWxpYXMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBgYmluZGluZycKCWFuZCBgb2xkJy4KCkZyaSBBdWcgMTQgMTY6NDI6MjcgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgQkJJU09OIHRvIEJJU09OIHNvIHRoYXQgaXQgY2FuIGJlIHByb3Blcmx5Cglpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IG1ha2VmaWxlLgoKMTk5OC0wOC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZmluaXQtcHJpb3JpdHkuCgkqIGRlY2wyLmM6IExpa2V3aXNlLiAgQ2hlY2sgZmxhZ19pbml0X3ByaW9yaXR5IGluc3RlYWQgb2YKCVVTRV9JTklUX1BSSU9SSVRZLgoKCSogZGVjbDIuYyAoc2V0dXBfaW5pdHApOiBOZXcgZm4uCgkoc3RhcnRfb2JqZWN0cywgZmluaXNoX29iamVjdHMsIGRvX2N0b3JzKTogSGFuZGxlIGluaXRfcHJpb3JpdHkuCgkoZG9fZHRvcnMsIGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgoxOTk4LTA4LTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEh1c2ggd2FybmluZy4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuKTogQWxzbyBzZXQgREVDTF9JR05PUkVEX1AuCgoxOTk4LTA4LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAocHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IERvbid0IGFib3J0IHdoZW4gaW5zdGFudGlhdGluZyBhCglzeW50aGVzaXplZCBtZXRob2QuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSXNzdWUgZXJyb3JzIG9uIG5hbWVzcGFjZSBxdWFsaWZpZWQKCWRlY2xhcmF0b3JzIGluIHBhcmFtZXRlciBsaXN0cyBvciBpbiBjbGFzcyBzY29wZS4KCjE5OTgtMDgtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IERvbid0IGFib3J0IG9uIGJvZ3VzCglleHBsaWNpdCBpbnN0YW50aWF0aW9ucy4KCjE5OTgtMDgtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogVXNlIGNvbXBsZXRlX3R5cGVfb3JfZWxzZS4KCShjb21wbGV0ZV90eXBlX29yX2Vsc2UpOiBBbHdheXMgcmV0dXJuIE5VTExfVFJFRSBvbiBmYWlsdXJlLCBhcwoJZG9jdW1lbnRlZC4KCgkqIHB0LmMgKHRzdWJzdF9hZ2dyX3R5cGUpOiBQcm90b3R5cGUuCgkodHN1YnN0X2RlY2wpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIHRzdWJzdC4gIFNldAoJaW5wdXRfZmlsZW5hbWUgYW5kIGxpbmVubyBhcyBhcHByb3ByaWF0ZS4KCShwb3BfdGluc3RfbGV2ZWwpOiBSZXN0b3JlIHRoZSBmaWxlIGFuZCBsaW5lIG51bWJlciBzYXZlZCBpbgoJcHVzaF90aW5zdF9sZXZlbC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFNldCBpbnB1dF9maWxlbmFtZSBhbmQgbGluZW5vIGFzCglhcHByb3ByaWF0ZS4KCSh0c3Vic3QpOiBNb3ZlIF9ERUNMIHByb2Nlc3NpbmcgdG8gdHN1YnN0X2RlY2wuICBNYWtlIHN1cmUgdGhlCgljb250ZXh0IGZvciBhIFRZUEVOQU1FX1RZUEUgaXMgY29tcGxldGUuCgoJKiBkZWNsMi5jIChncm9rYml0ZmllbGQpOiBJc3N1ZSBlcnJvcnMgb24gYml0ZmllbGRzIGRlY2xhcmVkIHdpdGgKCWZ1bmN0aW9uIHR5cGUuCgkoZG9fZHRvcnMpOiBBcyBpbiBkb19jdG9ycywgcHJldGVuZCB0byBiZSBhIG1lbWJlciBvZiB0aGUgc2FtZQoJY2xhc3MgYXMgYSBzdGF0aWMgZGF0YSBtZW1iZXIgd2hpbGUgZ2VuZXJhdGluZyBhIGNhbGwgdG8gaXRzCglkZXN0cnVjdG9yLgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IEhhbmRsZSBOVUxMIHBvaW50ZXIKCWNvbnZlcnNpb25zLCBldmVuIGluIGNvbXBsZXggdmlydHVhbCBiYXNlIGNsYXNzIGhpZXJhcmNoaWVzLgoKMTk5OC0wOC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoRU5VTV9URU1QTEFURV9JTkZPKTogTmV3IG1hY3JvLgoJKFRZUEVfVEVNUExBVEVfSU5GTyk6IExpa2V3aXNlLgoJKFNFVF9UWVBFX1RFTVBMQVRFX0lORk8pOiBMaWtld2lzZS4KCShFTlVNX1RJX1RFTVBMQVRFKTogTGlrZXdpc2UuCgkoRU5VTV9USV9BUkdTKTogTGlrZXdpc2UuCgkobG9va3VwX25lc3RlZF90eXBlX2J5X25hbWUpOiBSZW1vdmUuCgkqIGRlY2wuYyAobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uKTogSGFuZGxlIGVudW1zLgoJKHN0YXJ0X2VudW0pOiBEb24ndCBjaGVjayBmb3IgcHJpbWFyeS10ZW1wbGF0ZSBlbnVtIGRlY2xhcmF0aW9ucwoJaGVyZS4KCShmaW5pc2hfZW51bSk6IENsZWFuIHVwLCBkb2N1bWVudC4gIE1ha2Ugc3VyZSB0ZW1wbGF0ZSBlbnVtCgljb25zdGFudHMgZ2V0IHRoZSBjb3JyZWN0IHR5cGUuCgkoYnVpbGRfZW51bWVyYXRvcik6IENvcHkgaW5pdGlhbGl6ZXJzIGZvciB0ZW1wbGF0ZSBlbnVtZXJhdGlvbnMsCgl0b28uCgkoZ3Jva19lbnVtX2RlY2xzKTogRG9jdW1lbnQuCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRG9jdW1lbnQgdXNlIG9mIExPT0tVUF9FWFBSIGEgYml0CgliZXR0ZXIuICBCdWlsZCBMT09LVVBfRVhQUnMgZm9yIGxvY2FsIHZhcmlhYmxlcywgZXZlbiBpZiB0aGV5IGFyZQoJVFJFRV9QRVJNQU5FTlQuCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogUmVtb3ZlIGZpZWxkX2NoYWluIHBhcmFtZXRlci4KCSh0ZW1wbGF0ZV9jbGFzc19kZXB0aCk6IEluY2x1ZGUgdGhlIGRlcHRoIG9mIHN1cnJvdW5kaW5nIGZ1bmN0aW9uCgljb250ZXh0cy4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBDaGVjayBmb3IgcHJpbWFyeS10ZW1wbGF0ZSBlbnVtIGRlY2xhcmF0aW9ucwoJaGVyZS4gIERlYWwgd2l0aCBlbnVtZXJhdGlvbiB0ZW1wbGF0ZXMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgY2FsbCB0c3Vic3RfZW51bSBkaXJlY3RseSwKCWNhbGwgdHN1YnN0IGluc3RlYWQsIHRvIGluc3RhbnRpYXRlIGVudW1zLiAgRGVhbCB3aXRoIGFsbAoJZmllbGRfY2hhaW4gaXNzdWVzIGhlcmUsIG5vdCBpbiB0c3Vic3RfZW51bS4KCShsb29rdXBfbmVzdGVkX3R5cGVfYnlfbmFtZSk6IFJlbW92ZS4KCSh0c3Vic3RfYWdncl90eXBlKTogUmV2aXNlIGhhbmRsaW5nIG9mIGVudW1lcmF0aW9uIHR5cGVzLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkodHN1YnN0X2V4cHIpOiBDYWxsIHRzdWJzdCwgbm90IHRzdWJzdF9lbnVtIGZvciBUQUdfREVGTnMuCgoxOTk4LTA4LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwdXNodGFnKTogRG9uJ3QgbWFuZ2xlIHRoZSBuYW1lIG9mIGEgVFlQRV9ERUNMIGlmIGl0Cgl1c2VzIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIG1ldGhvZC5jIChidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzKTogVXNlIHRoZSBmdWxsIHNldCBvZgoJdGVtcGxhdGUgYXJndW1lbnRzIGZvciB0c3Vic3QnaW5nLgoJKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBQYXNzIHRoZSBmdWxsIHNldCBvZiB0ZW1wbGF0ZQoJYXJndW1lbnRzIHRvIGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMsIG5vdCBqdXN0IHRoZQoJaW5uZXJtb3N0X2FyZ3MuCgkqIHB0LmMgKFRNUExfQVJHU19ERVBUSCk6IERlZmluZSB1c2luZwoJVE1QTF9BUkdTX0hBVkVfTVVMVElQTEVfTEVWRUxTLCBmb3IgY2xhcml0eS4KCShOVU1fVE1QTF9BUkdTKTogTmV3IG1hY3JvLgoJKGFkZF9vdXRlcm1vc3RfdGVtcGxhdGVfYXJncyk6IERlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgb3V0ZXIKCWFyZ3Mgd2lsbCBiZSBjb21wbGV0ZWx5IGRpc2NhcmRlZC4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBVc2UgdGhlIGZ1bGwgc2V0IG9mIHRlbXBsYXRlIGFyZ3VtZW50cwoJZm9yIHRzdWJzdCdpbmcuICBTaW1wbGlmeS4gIEFkZCBzb21lIGFzc2VydHMuICBJbXByb3ZlCgllcnJvciBtZXNzYWdlcy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBQYXNzIHRoZSBmdWxsIHNldCBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMKCXRvIGNvZXJjZV90ZW1wbGF0ZV9wYXJtcy4KCSh0c3Vic3QpOiBBZGQgYXNzZXJ0aW9uLgoJKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IERvbid0IGluc3RhbnRpYXRlIG1lbWJlciB0ZW1wbGF0ZQoJY2xhc3Nlcy4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERlYWwgd2l0aCBhIFRFTVBMQVRFX0lEX0VYUFIgd2hvc2UKCW5hbWUgaXMgYSBMT09LVVBfRVhQUiwgcmF0aGVyIHRoYW4gYW4gSURFTlRJRklFUl9OT0RFLgoKMTk5OC0wOC0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKHNldF9tYW5nbGVkX25hbWVfZm9yX2RlY2wpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gdm9pZC4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEEgbmFtZXNwYWNlLWxldmVsIGRlY2wgdGFrZXMgcHJpb3JpdHkKCW92ZXIgaW1wbGljaXQgdHlwZW5hbWUuICBBdm9pZCBkb2luZyB0aGUgc2FtZSBsb29rdXAgdHdpY2UuCgoJKiBzZWFyY2guYyAoZGVwZW5kZW50X2Jhc2VfcCk6IE5ldyBmbi4KCShkZnNfcHVzaGRlY2xzLCBkZnNfY29tcHJlc3NfZGVjbHMpOiBVc2UgaXQuCgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBEb24ndCB0cnkgdG8gaGFuZGxlCgl2aXJ0dWFsIGZ1bmN0aW9ucyBpZiB0aGUgdHlwZSBkb2Vzbid0IGhhdmUgYW55LgoKMTk5OC0wOC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IERvbid0IG1hbmdsZSB0aGUgbmFtZSBvZiBhIFRZUEVfREVDTCBpZiBpdAoJdXNlcyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKMTk5OC0wOC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuZGVmIChMT09LVVBfRVhQUik6IERvY3VtZW50LiAgUmVtb3ZlIHNlY29uZCBhcmd1bWVudC4KCSogY3AtdHJlZS5oIChERUNMX1RJX1RFTVBMQVRFKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvbid0IHVzZSBhIHNlY29uZCBhcmd1bWVudCwgb3IgYSB0eXBlLAoJd2hlbiBidWlsZGluZyBMT09LVVBfRVhQUnMuCgkoZG9faWRlbnRpZmllcik6IExpa2V3aXNlLgoJKGRvX3Njb3BlZF9pZCk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfZnVuY3Rpb24pOiBEb24ndCBuZWVkbGVzc2x5IGNhbGwKCWNvcHlfdG9fcGVybWFuZW50IG9yIGJ1aWxkX21pbi4KCSh0c3Vic3RfY29weSk6IFJlbW92ZSAjaWYgMCdkIGNvZGUuICB0c3Vic3QgaW50byBMT09LVVBfRVhQUnMgaWYKCW5lY2Vzc2FyeS4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuCgkqIHRyZWUuYyAobWFwY2FyLCBjYXNlIExPT0tVUF9FWFBSKTogRG9uJ3QgYmUgc29ycnk7IG1ha2UgYSBjb3B5LgoJKGJ1aWxkX21pbik6IENvcHkgdGhlIHR5cGUgdG8gdGhlIHBlcm1hbmVudCBvYnN0YWNrLCB0b28uCgoxOTk4LTA4LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogUmVtb3ZlIEJJKiBoYW5kbGluZy4KCShidWlsZF9idWlsdGluX2NhbGwpOiBSZW1vdmUuCgkoYnVpbGRfYnVpbHRpbl9kZWxldGVfY2FsbCk6IE5ldyBmbi4KCShidWlsZF9kZWxldGUpOiBVc2UgaXQuCgoxOTk4LTA3LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChQUk9DRVNTSU5HX1JFQUxfVEVNUExBVEVfREVDTF9QKTogTmV3IG1hY3JvLgoJKG1heWJlX2NoZWNrX3RlbXBsYXRlX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uKTogTmV3IGZ1bmN0aW9uLAoJc3BsaXQgb3V0IGZyb20gcHVzaHRhZyAgQ2FsbCBtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlLgoJKHB1c2h0YWcpOiBVc2UgaXQuICBVc2UgUFJPQ0VTU0lOR19SRUFMX1RFTVBMQVRFX0RFQ0xfUC4KCSh4cmVmX3RhZyk6IFVzZSBQUk9DRVNTSU5HX1JFQUxfVEVNUExBVEVfREVDTF9QLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogVXNlIFBST0NFU1NJTkdfUkVBTF9URU1QTEFURV9ERUNMX1AuCgkqIHB0LmMgKHRlbXBsYXRlX2NsYXNzX2RlcHRoX3JlYWwpOiBHZW5lcmFsaXphdGlvbiBvZiAuLi4KCSh0ZW1wbGF0ZV9jbGFzc19kZXB0aCk6IFVzZSBpdC4KCShyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFVzZSBkdXBsaWNhdGVfZGVjbHMgZm9yIGR1cGxpY2F0ZQoJZGVjbGFyYXRpb25zIG9mIHNwZWNpYWxpemF0aW9ucy4KCShtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogRml4IGNvbW1lbnQuCgkoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuICBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIG9uCgllcnJvbmVvdXMgY29kZS4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogRml4IGNvbW1lbnQuCgkodHN1YnN0LCBjYXNlIEZVTkNUSU9OX0RFQ0wpOiBEZWFsIHdpdGggYSBERUNMX1RJX1RFTVBMQVRFIHRoYXQgaXMKCWFuIElERU5USUZJRVJfTk9ERS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2Z1bmN0aW9uX2RlZmluaXRpb24pOiBVc2UKCXJlc2V0X3NwZWNpYWxpemF0aW9uIHRvIG5vdGUgdGhhdCB0ZW1wbGF0ZSBoZWFkZXJzIGRvbid0IGFwcGx5CglkaXJlY3RseSB0byBkZWNsYXJhdGlvbnMgYWZ0ZXIgdGhlIG9wZW5pbmcgY3VybHkgZm9yIGEgZnVuY3Rpb24uCgoxOTk4LTA3LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogVXNlIGN1cnJlbnRfbmFtZXNwYWNlIGluc3RlYWQgb2YKCURFQ0xfQ09OVEVYVCAoZGVjbCkgdG8gZGV0ZXJtaW5lIHdoZXJlIHdlIGdvLgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRml4IHR5cG8uCgoxOTk4LTA3LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IEJlIGxlbmllbnQgd2l0aCBtZW1iZXIgZnVuY3Rpb25zIHRvIGRlYWwKCXdpdGggbmVzdGVkIGZyaWVuZHMuCgoxOTk4LTA3LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDb252ZXJ0IGludGVnZXJfemVyb19ub2RlIHRvCglzc2l6ZXR5cGUgYmVmb3JlIHBhc3NpbmcgaXQgdG8gc2V0X3J0dGlfZW50cnkuCgkqIHR5cGVjazIuYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IEFsbG93IGNvbnZlcnNpb24gb2YgMAoJb2YgYW55IHNpemUgdG8gYSBwb2ludGVyLgoKMTk5OC0wNy0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoVElfVVNFU19URU1QTEFURV9QQVJNUyk6IFJlbW92ZS4KCShidWlsZF90ZW1wbGF0ZV9kZWNsX292ZXJsb2FkKTogUmVtb3ZlLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoaW5uZXJtb3N0X2FyZ3MpOiBSZW1vdmUgaXNfc3BlYyBwYXJhbWV0ZXIuCgkobW9zdF9zcGVjaWFsaXplZCwgbW9zdF9zcGVjaWFsaXplZF9jbGFzcyk6IFJlbW92ZSBkZWNsYXJhdGlvbnMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQWRkIGVudGVyaW5nX3Njb3BlIHBhcmFtZXRlci4KCShtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogQ2xlYW4gdXAgcHJvY2Vzc2luZyBvZiBtZW1iZXIgdGVtcGxhdGUKCXNwZWNpYWxpemF0aW9ucy4KCSogZGVjbC5jIChwdXNodGFnKTogRml4IGZvcm1hdHRpbmcuCgkobG9va3VwX3RhZyk6IEltcHJvdmUgaGFuZGxpbmcgb2YgcHNldWRvLWdsb2JhbCBsZXZlbHMuCgkobWFrZV90eXBlbmFtZV90eXBlKTogQWRqdXN0IGNhbGwgdG8gbG9va3VwX3RlbXBsYXRlX2NsYXNzLgoJKHNoYWRvd190YWcpOiBVc2UgbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uLgoJKHhyZWZfdGFnKTogSW1wcm92ZSBoYW5kbGluZyBvZiBtZW1iZXIgZnJpZW5kcy4KCShzdGFydF9mdW5jdGlvbik6IENhbGwgcHVzaF9uZXN0ZWRfY2xhc3MgYmVmb3JlCglwdXNoX3RlbXBsYXRlX2RlY2wuICBEb24ndCBjYWxsIHB1c2hfdGVtcGxhdGVfZGVjbCBmb3IKCXNwZWNpYWxpemF0aW9ucy4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBEb24ndCBjYWxsIHhyZWZfdGFnIGZvcgoJdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMuICBIYW5kbGUgVU5JT05fVFlQRXMgbGlrZSBSRUNPUkRfVFlQRXMuCgkoZ3Jva2NsYXNzZm4pOiBVc2Ugc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbC4KCShhcmdfYXNzb2NfY2xhc3MpOiBBZGp1c3QgY2FsbCB0byBpbm5lcm1vc3RfYXJncy4KCShtYXJrX3VzZWQpOiBEb24ndCBjYWxsIGluc3RhbnRpYXRlX2RlY2wgZm9yIGEgVEVNUExBVEVfREVDTC4KCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9uYW1lKTogSW1wcm92ZSBwcmludGluZyBvZiB0ZW1wbGF0ZQoJZnVuY3Rpb24gbmFtZXMuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBEb24ndCBjb21wYXJlIHR5cGVzIG9mIGRlY2xzIHRvIGRldGVybWluZQoJZnJpZW5kc2hpcCwgdW5sZXNzIGZsYWdfZ3VpZGluZ19kZWNscy4KCShtYWtlX2ZyaWVuZF9jbGFzcyk6IFBhcnRpYWwgc3BlY2lhbGl6YXRpb25zIGNhbm5vdCBiZSBmcmllbmRzLgoJKGRvX2ZyaWVuZCk6IFVzZSBzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsLiAgQ2FsbAoJcHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwgaW5zdGVhZCBvZiBwdXNoX3RlbXBsYXRlX2RlY2wuCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBSZW1vdmUgcHJvdG90eXBlLiAgR2l2ZSBpdAoJZXh0ZXJuYWwgbGlua2FnZS4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogQWRqdXN0IGNhbGwgdG8gaW5uZXJtb3N0X2FyZ3MuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbF9vdmVybG9hZCk6IFJlbW92ZS4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJzZS55ICguZmluaXNoX3RlbXBsYXRlX3R5cGUpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHRlbXBsYXRlX2RlZik6IFVzZSBmaW5pc2hfdGVtcGxhdGVfZGVjbC4gIFVzZSB0ZW1wbGF0ZV9leHRkZWYKCWluc3RlYWQgb2YgZXh0ZGVmLgoJKHRlbXBsYXRlX2V4dGRlZiwgdGVtcGxhdGVfZGF0YWRlZik6IE5ldyBub24tdGVybWluYWxzLCBjb250YWluaW5nCglvbmx5IHRob3NlIHJ1bGVzIGZvciB0aGluZ3Mgd2hpY2ggY2FuIGJlIHRlbXBsYXRlcy4KCShkYXRhZGVmKTogVGlkeS4KCSh0ZW1wbGF0ZV90eXBlLCBzZWxmX3RlbXBsYXRlX3R5cGUpOiBVc2UgLmZpbmlzaF90ZW1wbGF0ZV90eXBlLgoJKG5hbWVkX2NsYXNzX2hlYWQpOiBVc2UgbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uLgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBSZW1vdmUgY29udGV4dCBwYXJhbWV0ZXIuCgkoZ2V0X2NsYXNzX2JpbmRpbmdzKTogUmVtb3ZlIG91dGVyX2FyZ3MgcGFyYW1ldGVyLgoJKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBSZW1vdmUuCgkoYWRkX291dGVybW9zdF90ZW1wbGF0ZV9hcmdzKTogTmV3IGZ1bmN0aW9uLgoJKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogUmV0dXJuIHRoZSBzcGVjaWFsaXphdGlvbi4KCSh1bnJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHRzdWJzdF90ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKG1vc3Rfc3BlY2lhbGl6ZWQsIG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBQcm90b3R5cGUgaGVyZSBhcwoJc3RhdGljLgoJKG9yaWdpbmFsX3RlbXBsYXRlKTogUmVuYW1lIHRvIG1vc3RfZ2VuZXJhbF90ZW1wbGF0ZS4KCSh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkoc2V0X21hbmdsZWRfbmFtZV9mb3JfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoJKFRNUExfQVJHU19ERVBUSCk6IE5ldyBtYWNyby4KCShUTVBMX0FSR1NfSEFWRV9NVUxUSVBMRV9MRVZFTFMpOiBBZGp1c3QuCgkoVE1QTF9BUkdTX0xFVkVMKTogTmV3IG1hY3JvLgoJKFNFVF9UTVBMX0FSR1NfTEVWRUwpOiBMaWtld2lzZS4KCShUTVBMX0FSRyk6IExpa2V3aXNlLgoJKFNFVF9UTVBMX0FSRyk6IExpa2V3aXNlLgoJKFRNUExfQVJHU19ERVBUSCk6IExpa2V3aXNlLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IFVzZSBmaW5pc2hfdGVtcGxhdGVfZGVjbC4KCShtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dAoJZnJvbSB0c3Vic3QuCgkoaW5saW5lX25lZWRzX3RlbXBsYXRlX3Bhcm1zKTogVXNlIFRNUExfUEFSTVNfREVQVEguCgkobWF5YmVfYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBVc2UgbmV3IG1hY3Jvcy4KCShpc19tZW1iZXJfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShpc19tZW1iZXJfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCShhZGRfdG9fdGVtcGxhdGVfYXJncyk6IExpa2V3aXNlLiAgRGVhbCB3aXRoIG11bHRpcGxlIGxldmVscyBvZgoJYXJncy4KCShtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocmV0cmlldmVfc3BlY2lhbGl6YXRpb24pOiBBZGQgY29uc2lzdGVuY3kgY2hlY2suCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogUmV0dXJuIGZ1bGwgYXJndW1lbnQgbGlzdC4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFR3ZWFrIGZyaWVuZCBoYW5kbGluZy4gIFVzZSBmdWxsCglhcmd1bWVudCBsaXN0cy4gIFNpbXBsaWZ5LgoJKGN1cnJlbnRfdGVtcGxhdGVfYXJncyk6IFVzZSBuZXcgbWFjcm9zLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogQ2hhbmdlIGlsbC1uYW1lZCBtYWluYXJncyB0byBzcGVjYXJncy4KCUNoZWNrIHRoYXQgYSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGFjdHVhbGx5IHNwZWNpYWxpemVzIGF0IGxlYXN0CglvbmUgcGFyYW1ldGVyLiAgIEltcHJvdmUgZnJpZW5kIGhhbmRsaW5nLiAgTW9kaWZ5IGZvciBmdWxsCgl0ZW1wbGF0ZSBhcmd1bWVudHMuCgkoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IERvbid0IG1hbmdsZSB0aGUgbmFtZXMgb2YKCXNwZWNpYWxpemF0aW9ucy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBBZGQgZW50ZXJpbmdfc2NvcGUgcGFyYW1ldGVyLiAgVXNlIGl0IHRvCglhdm9pZCBmaW5kaW5nIGEgdGVtcGxhdGUgdHlwZSB3aGVuIGFuIGluc3RhbnRpYXRpb24gaXMgcmVxdWlyZWQuCglTaW1wbGlmeS4gIFVzZSBmdWxsIHRlbXBsYXRlIGFyZ3VtZW50cy4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogVXNlIHVucmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24uICBVc2UgbmV3CgltYWNyb3MuICBVc2UgZnVsbCB0ZW1wbGF0ZSBhcmd1bWVudHMuCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IFN1YnN0aXR1dGUsIHVzaW5nIHRzdWJzdF90ZW1wbGF0ZV9wYXJtcywKCWludG8gdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0bwoJcmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogU2ltcGxpZnkuICBVc2UgZnVsbCB0ZW1wbGF0ZQoJYXJndW1lbnRzLiAgQWRqdXN0IGNhbGxzIHRvIGdldF9jbGFzc19iaW5kaW5ncy4gIFVzZQoJU0VUX0lERU5USUZJRVJfVFlQRV9WQUxVRSB3aGVyZSBuZWVkZWQuICBJbXByb3ZlIGZyaWVuZCBoYW5kbGluZy4KCShpbm5lcm1vc3RfYXJncyk6IFVzZSBuZXcgbWFjcm9zLgoJKHRzdWJzdF9hZ2dyX3R5cGUpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIHRzdWJzdC4KCSh0c3Vic3QpOiBVc2UgdHN1YnN0X2FnZ3JfdHlwZSwgdHN1YnN0X3RlbXBsYXRlX3Bhcm1zLCBuZXcgY2FsbGluZwoJY29udmVudGlvbnMgZm9yIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcy4gIFJlZmluZSBoYW5kbGluZyBvZiBwYXJ0aWFsCglpbnN0YW50aWF0aW9ucy4gICBSZW1vdmUgY2FsbHMgdG8gY29tcGxldGVfdGVtcGxhdGVfYXJncy4KCVNpbXBsaWZ5LiAgQWRkIGNvbnNpc3RlbmN5IGNoZWNrcy4gIFVzZSBzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsCglhbmQgc2V0X21hbmdsZWRfbmFtZV9mb3JfdGVtcGxhdGVfZGVjbC4KCSh0c3Vic3RfY29weSk6IFVzZSB0c3Vic3RfYWdncl90eXBlLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogVXNlIGZ1bGwgdGVtcGxhdGUgYXJndW1lbnRzLgoJKG1vcmVfc3BlY2lhbGl6ZWQpOiBJbXByb3ZlIGZvcm1hdHRpbmcuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IEFkanVzdCBjYWxscyB0byBnZXRfY2xhc3NfYmluZGluZ3MuCgkoZ2V0X2JpbmRpbmdzX3JlYWwpOiBEb24ndCBjYWxsIGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MuCgkobW9zdF9zcGVjaWFsaXplZCk6IERvbid0IG92ZXJ3cml0ZSBpbnB1dDsgY3JlYXRlIGEgbmV3IGxpc3QuCgkobW9zdF9zcGVjaWFsaXplZF9jbGFzcyk6IFVzZSBtb3N0X2dlbmVyYWxfdGVtcGxhdGUuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBVc2UgdW5yZWdpc3Rlcl9zcGVjaWFsaXphdGlvbi4KCVVzZSBmdWxsIHRlbXBsYXRlIGFyZ3VtZW50cy4KCShpbnN0YW50aWF0ZV9kZWNsKTogVXNlIGZ1bGwgdGVtcGxhdGUgYXJndW1lbnRzLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogVXNlCgltYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24uCgkoZmluaXNoX21lbWJlcl9jbGFzc190ZW1wbGF0ZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoJKGZpbmlzaF90ZW1wbGF0ZV90eXBlKTogTGlrZXdpc2UuCgkodHlwZWNrLmMpOiBEb24ndCBjcmFzaCBhZnRlciBpc3N1aW5nIGEgY29tcGlsZXJfZXJyb3IuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBBZGp1c3Q7IHdlIHJlbW92ZWQgYSBzL3IgY29uZmxpY3QuCgoxOTk4LTA3LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IEhhbmRsZSBkZWZhdWx0LWluaXRpYWxpemF0aW9uLgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBQYXNzIDEgdG8gcG9wY2xhc3MuCgoJKiBwYXJzZS55IChkaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBBZGQgcHJlY2VkZW5jZSBkZWNsYXJhdGlvbgoJdG8gbm90eXBlX3VucXVhbGlmaWVkX2lkIGNhc2UuCgkqIE1ha2VmaWxlLmluIChFWFBFQ1QpOiBBZGp1c3QuCgoJKiB0cmVlLmMgKG92bF9tZW1iZXIpOiBGaXggZm9yIHNpbmdsZSBmdW5jdGlvbiBpbiBPVkwuCgoxOTk4LTA3LTI3ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBjLWxleC5jICh5eWxleCk6IEZpeCBib3VuZGFyeSBjb25kaXRpb25zIGluIGNoYXJhY3RlciBsaXRlcmFsIGFuZAoJc3RyaW5nIGxpdGVyYWwgbG9vcHMuCgoxOTk4LTA3LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBPSywgZG8gcmV0dXJuIHRoZSBmcm9tX29iaiB2YWx1ZQoJdW5sZXNzIGdvdF9vYmplY3QgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJtcy4KCgkqIHBhcnNlLnkgKG5lc3RlZF9uYW1lX3NwZWNpZmllcl8xKTogUHVsbCBvdXQgdGhlIFRZUEVfTUFJTl9WQVJJQU5ULgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWxzbyBjb21wbGFpbiBhYm91dCBsb2NhbCBlbnVtcy4KCgkqIGNwLXRyZWUuaDogQWRkIHByb3RvdHlwZSBmb3Igc2V0X2lkZW50aWZpZXJfbG9jYWxfdmFsdWUuCgkqIGRlY2wuYyAoc2V0X2lkZW50aWZpZXJfbG9jYWxfdmFsdWVfd2l0aF9zY29wZSk6IE1ha2Ugc3RhdGljLAoJcHJvdG90eXBlLgoJKiBzZWFyY2guYyAoY292YXJpYW50X3JldHVybl9wKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChidWlsZF90ZXJtaW5hdGVfaGFuZGxlciwgYWxsb2NfZWhfb2JqZWN0KTogTGlrZXdpc2UuCgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogT25seSBwdWxsIG91dCB0aGUgdHlwZSBvZiBhIGRlc3RydWN0b3IKCWlmIGl0J3MgYSB0ZW1wbGF0ZSB0eXBlIHBhcm0uCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IE5ldmVyIHJldHVybiB0aGUgZnJvbV9vYmogdmFsdWUuCgoxOTk4LTA3LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9ja19vbGQpOiBDYWxsIHN0YXJ0X2RlY2xfMSBmb3IKCWNhdGNoIHBhcm0uCgkqIGRlY2wuYyAoc3RhcnRfZGVjbF8xKTogQXZvaWQgZHVwbGljYXRlIGVycm9yLgoKCSogaW5pdC5jIChleHBhbmRfZGVmYXVsdF9pbml0KTogT25seSBwZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBpZgoJaXQgd2lsbCBkbyBzb21ldGhpbmcuCgoxOTk4LTA3LTIzICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBwYXJzZS55IChiYXNlX2NsYXNzKTogQ2hlY2sgZm9yIGludmFsaWQgYmFzZSBjbGFzcy4KCjE5OTgtMDctMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfdGVtcGxhdGUpOiBGb2xkIGluLi4uCgkoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IC4uLnRvIGhlcmUuICBIYW5kbGUgZGxsaW1wb3J0L2V4cG9ydC4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFBhc3MgYXRfZW9mIHRvIGltcG9ydF9leHBvcnRfdnRhYmxlLgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfY2xhc3MpOiBTcGxpdCBvdXQuLi4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBGcm9tIGhlcmUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IENhbGwgaW1wb3J0X2V4cG9ydF9jbGFzcyBpZiBhdF9lb2YuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogI2lmIDAgbXlzdGVyaW91cyBjb2RlIEkgd3JvdGUgYW5kIGhhdmUKCWZvcmdvdHRlbiB3aHkuCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuKTogSWYgdGhpcyBpcyBmb3IgYSBjbGFzcyB0eXBlLCBzZXQKCURFQ0xfQ09OVEVYVC4KCjE5OTgtMDctMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluYy9leGNlcHRpb246IENoYW5nZSB0ZXJtaW5hdGUgYW5kIHVuZXhwZWN0ZWQgdG8gKCkuCgoJKiBwYXJzZS55IChuYW1lZF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGVfZGVmbik6IEEKCW5hbWVkX2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSBmb2xsb3dlZCBieSAneycgb3IgJzonIGlzIGEgZGVmbi4KCjE5OTgtMDctMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoY2Fub25pY2FsX3R5cGVfdmFyaWFudCk6IE5ldyBmbiB0byBoYW5kbGUgYXJyYXlzLgoJKiBjcC10cmVlLmggKENBTk9OSUNBTF9UWVBFX1ZBUklBTlQpOiBSZW1vdmUuCgkqIHB0LmMgKHVuaWZ5LCBkZWZhdWx0IGNhc2UpOiBBbHNvIGZvbGQgYXJnLiAgRml4IGFycmF5IGJvdW5kcyBjYXNlLgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogVXNlIGJ1aWxkX292ZXJsb2FkX3ZhbHVlIGZvcgoJYXJyYXlzLgoKMTk5OC0wNy0yMCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKG1iY2hhci5oKTogI2luY2x1ZGUgaXQuCgkoR0VUX0VOVklST05NRU5UKTogTmV3IG1hY3JvLgoJKGluaXRfcGFyc2UpOiBTZXQgY2hhcmFjdGVyIHNldCBiYXNlZCBvbiBMQU5HIGVudmlyb25tZW50IHZhcmlhYmxlLgoJKHJlYWxfeXlsZXgpOiBIYW5kbGUgbXVsdGlieXRlIGNoYXJhY3RlcnMgaW4gY2hhcmFjdGVyIGxpdGVyYWxzLgoJKHJlYWxfeXlsZXgpOiBIYW5kbGUgbXVsdGlieXRlIGNoYXJhY3RlcnMgaW4gc3RyaW5nIGxpdGVyYWxzLgoKMTk5OC0wNy0xOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBMb29rIGZvciBjbGFzcyB2YWx1ZSBldmVuIGlmIHdlIGRvbid0CgloYXZlIGEgZ2xvYmFsIHZhbHVlLiAgRG8gaW1wbGljaXQgZGVjbGFyYXRpb24gaWYgcGFyc2luZyBpcyAyLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NhbGxfZXhwcik6IFBhc3MgMiBpZiB3ZSdyZSBkb2luZyBLb2VuaWcKCWxvb2t1cC4KCjE5OTgtMDctMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEb24ndCBwdXQgb3V0IGRlYnVnZ2luZwoJaW5mb3JtYXRpb24gZm9yIHR5cGVzIHRoYXQgdXNlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBEb24ndCBwdXQgb3V0IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmb3IKCWNvbXBpbGVyLWdlbmVyYXRlZCB0eXBlZGVmcy4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogRG9uJ3QgY3Jhc2ggd2hlbiBwcmVzZW50ZWQgd2l0aAoJaW50UUlfdHlwZV9ub2RlIG9yIHRoZSBsaWtlLgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF90cmFuc2xhdGlvbl91bml0KTogRml4IHNwZWxsaW5nIGVycm9yIGluCgljb21tZW50LgoKMTk5OC0wNy0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogUHVsbCBvdXQgc2luZ2xlIGZ1bmN0aW9uIGhlcmUuCgkoc2VsZWN0X2RlY2wpOiBOb3QgaGVyZS4KCSh1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwKTogVXNlIENQX0RFQ0xfQ09OVEVYVC4KCgkqIGRlY2wuYyAocXVhbGlmeV9sb29rdXApOiBUd2VhayBhZ2Fpbi4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERvbid0IG1lc3Mgd2l0aCB0aGUgY29udGV4dCBvZiB0aGUKCWluc3RhbnRpYXRpb24uCgkqIGRlY2wyLmMgKGN1cnJlbnRfZGVjbF9uYW1lc3BhY2UpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IKCXRlbXBsYXRlcy4KCgkqIHB0LmMgKHRzdWJzdCwgY2FzZSBGVU5DVElPTl9ERUNMKTogRml4IGdldHRpbmcgY29tcGxldGUgYXJncyBmb3IKCWEgbWVtYmVyIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgoKCSogdHJlZS5jIChvdmxfbWVtYmVyKTogVXNlIGRlY2xzX21hdGNoIHRvIGNvbXBhcmUgZnVuY3Rpb25zLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogQ2hlY2sgdGhlIGNvbnRleHQgb2YgYSBmdW5jdGlvbi4KCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBVc2Ugbm90eXBlX3VucXVhbGlmaWVkX2lkIGluc3RlYWQgb2YgSURFTlRJRklFUgoJaW4gS29lbmlnIGxvb2t1cCBzdXBwb3J0IHJ1bGVzLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NhbGxfZXhwcik6IEhhbmRsZSB0aGUgbmV3IGNhc2VzLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEhhbmRsZSBvdmVybG9hZGVkIG1ldGhvZHMuCgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogRG9uJ3QgY2FsbCBidWlsZF9zdGF0aWNfbmFtZSBmb3IgZXh0ZXJuICJDIi4KCjE5OTgtMDctMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29iamVjdF9jYWxsX2V4cHIpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLiAgSW5zdGVhZCwgY29udmVydAoJVFlQRV9ERUNMcyB0byBJREVOVElGSUVScyBoZXJlLCBpbiB0aGUgcHJlc2VuY2Ugb2YgdGVtcGxhdGVzLgoKMTk5OC0wNy0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChxdWFsaWZ5X2xvb2t1cCk6IEhhbmRsZSB0ZW1wbGF0ZXMuCgoJKiBkZWNsMi5jIChkb191c2luZ19kaXJlY3RpdmUpOiBEb24ndCBwYXNzIGFuY2VzdG9yLgoJKiBkZWNsLmMgKHB1c2hfdXNpbmdfZGlyZWN0aXZlKTogQ2FsY3VsYXRlIGFuY2VzdG9yLgoKCSogZGVjbDIuYyAoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBBbGxvdyBmb3IgdHlwZSBzaGFkb3dpbmcuCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBNb3ZlIHR5cGUgc2hhZG93aW5nIGhhbmRsaW5nIGZyb20gaGVyZS4uLgoJKGR1cGxpY2F0ZV9kZWNscyk6IC4uLnRvIGhlcmUuCgkqIGRlY2wuYyAoc2V0X2lkZW50aWZpZXJfbG9jYWxfdmFsdWVfd2l0aF9zY29wZSk6IE5ldyBmbi4KCShwdXNoZGVjbCk6IFVzZSBpdC4KCShzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZSwgbG9va3VwX3R5cGVfY3VycmVudF9sZXZlbCk6IE5ldyBmbnMuCgkqIGRlY2wyLmMgKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBIYW5kbGUgdHlwZXMgYW5kIGJpbmRpbmcgbGV2ZWwKCXN0dWZmIHByb3Blcmx5LgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRG9uJ3QgY2FsbCBtYXJrX3VzZWQgb24gYW4gT1ZFUkxPQUQuCgkqIGRlY2wuYyAoc2VsZWN0X2RlY2wpOiBFeHRyYWN0IGEgbG9uZSBmdW5jdGlvbiBmcm9tIGFuIE9WRVJMT0FELgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBOb3QgaGVyZSBhbnltb3JlLgoKCSogZGVjbDIuYyAoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IE1ha2Ugc3VyZSB3ZSBnZXQgYW4gaWRlbnRpZmllci4KCSogY2xhc3MuYyAoaGFuZGxlX3VzaW5nX2RlY2wpOiBJZ25vcmUgVFlQRV9ERUNMcy4KCgkqIGRlY2wuYyAocXVhbGlmeV9sb29rdXApOiBOZXcgZm4uCgkobG9va3VwX25hbWVfcmVhbCk6IFVzZSBpdC4KCjE5OTgtMDctMTYgIE1hcnRpbiB2LiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jIChhZGRfdXNpbmdfbmFtZXNwYWNlKTogV2hlbiBkaXJlY3RseSB1c2luZyBhIG5hbWVzcGFjZQoJdGhhdCB3YXMgaW5kaXJlY3QgYmVmb3JlLCBwcm9tb3RlIGl0LgoKCSogY3AtdHJlZS5oIChMT09LVVBfUFJFRkVSX1RZUEVTLCBMT09LVVBfUFJFRkVSX05BTUVTUEFDRVMsCglMT09LVVBfUFJFRkVSX0JPVEgsIExPT0tVUF9OQU1FU1BBQ0VTX09OTFksIExPT0tVUF9UWVBFU19PTkxZLAoJTE9PS1VQX1FVQUxJRklFUlNfT05MWSwgTE9PS1VQX1RFTVBMQVRFU19FWFBFQ1RFRCk6IE5ldyBtYWNyb3MuCgkqIGRlY2wuYyAoc2VsZWN0X2RlY2wpOiBSZXBsYWNlIHR3byBmbGFnIHBhcmFtZXRlcnMgYnkgb25lLgoJKHVucXVhbGlmaWVkX25hbWVzcGFjZV9sb29rdXApOiBMaWtld2lzZSwgcGFzcyBmbGFnLgoJKGxvb2t1cF9mbGFncyk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZV9yZWFsKTogQ29tcHV0ZSBmbGFncywgcGFzcyB0aGVtLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IENhbGwgd2l0aCB6ZXJvLWZsYWcuCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogQWRkIGZsYWcgcGFyYW1ldGVyLCBjb21wbGFpbiBvbmx5CglhY2NvcmRpbmcgdG8gZmxhZ3MuCgkobG9va3VwX3VzaW5nX25hbWVzcGFjZSwgcXVhbGlmaWVkX2xvb2t1cF91c2luZ19uYW1lc3BhY2UpOgoJQWRkIGZsYWcgcGFyYW1ldGVyLCBwYXNzIHRoZW0gdGhyb3VnaC4KCSogbGV4LmMgKGRvX3Njb3BlZF9pZCk6IENhbGwgd2l0aCB6ZXJvLWZsYWcuCgoxOTk4LTA3LTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSBjb21wdHlwZXMuCgoxOTk4LTA3LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vYmplY3RfY2FsbF9leHByKTogTW92ZSB0ZXN0IGZvciB0aGUKCWZ1bmN0aW9uIGNhbGxlZCBiZWluZyBhIFRZUEVfREVDTCB0byAuLi4KCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBIZXJlLgoKMTk5OC0wNy0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX2NsYXNzKTogQWxzbyBsb29rIGF0IHRlbXBsYXRlIGFyZ3VtZW50cywgaWYgYW55LgoJKGFyZ19hc3NvYyk6IEhhbmRsZSBlcnJvcl9tYXJrX25vZGUgYW5kIG11bHRpcGxlIGxldmVscyBvZiBUUkVFX0xJU1QuCgoJKiBsZXguYyAobG9va2luZ19mb3JfdHlwZW5hbWUpOiBEb24ndCBpbml0aWFsaXplLgoKCSogZGVjbDIuYyAoYW1iaWd1b3VzX2RlY2wpOiBDbGFyaWZ5IGVycm9yIG1lc3NhZ2UuCgoJKiBkZWNsLmMgKHB1c2hfdXNpbmdfZGlyZWN0aXZlKTogSXRlcmF0ZSBvdmVyIG5hbWVzcGFjZXMgdXNlZAoJaW5kaXJlY3RseS4KCjE5OTgtMDctMTUgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wyLmMgKGFkZF91c2luZ19uYW1lc3BhY2UpOiBJdGVyYXRlIG92ZXIgbmFtZXNwYWNlcyB1c2VkCglpbmRpcmVjdGx5LgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogQWNjZXB0IG5hbWVzcGFjZSBhbGlhc2VzIGFzIGxvY2Fscy4KCShjYXRfbmFtZXNwYWNlX2xldmVscyk6IElnbm9yZSBhbGlhc2VzLgoJKGR1cGxpY2F0ZV9kZWNscyk6IElnbm9yZSBkdXBsaWNhdGUgYWxpYXNlcy4KCSogZGVjbDIuYyAoZG9fbmFtZXNwYWNlX2FsaWFzKTogUHJvY2VzcyBibG9jayBsZXZlbCBuYW1lc3BhY2UKCWFsaWFzZXMuICBTdG9yZSBhbGlhcyB3aXRoIHB1c2hkZWNsLiAgUmVtb3ZlIG9kciBlcnJvcnMuCgkqIHBhcnNlLnkgKG5hbWVzcGFjZV9hbGlhcyk6IE5ldyBub24tdGVybWluYWwuCgkoZXh0ZGVmKTogVXNlIGl0LgoKMTk5OC0wNy0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX3R5cGUpOiBIYW5kbGUgTUVUSE9EX1RZUEUgbGlrZSBGVU5DVElPTl9UWVBFLgoJSGFuZGxlIFRFTVBMQVRFX1RZUEVfUEFSTS4KCShhcmdfYXNzb2MpOiBSZXdyaXRlLgoKCSogcHQuYyAoY29tcGxldGVfdGVtcGxhdGVfYXJncyk6IERvbid0IGxvb2sgYXQgdGhlIGNvbnRleHQgdW5sZXNzCgl3ZSBoYXZlIHRvLgoKCSogbWV0aG9kLmMgKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IEZpeCBuYW1lc3BhY2UgaGFuZGxpbmcuCgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBFeHRyYWN0IGEgbG9uZSBmdW5jdGlvbiBmcm9tIGFuCglPVkVSTE9BRC4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogSGFuZGxlIGdldHRpbmcgYSBuYW1lc3BhY2UKCWZvciBiYXNldHlwZSBpbiBhIGRlc3RydWN0b3IgY2FsbC4KCShjaGVja19kdG9yX25hbWUpOiBIYW5kbGUgZW51bXMuCgoJKiBwYXJzZS55ICh1c2luZ19kaXJlY3RpdmUpOiBOZXcgbm9udGVybWluYWwuCgkoZXh0ZGVmLCBzaW1wbGVfc3RtdCk6IFVzZSBpdC4KCjE5OTgtMDctMTQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jIChhZGRfZnVuY3Rpb24pOiBNb3ZlIGVycm9yIG1lc3NhZ2UgLi4uCgkoYXJnX2Fzc29jX25hbWVzcGFjZSk6IC4uLiBmcm9tIGhlcmUuCgoxOTk4LTA3LTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChuYW1lc3BhY2VfcXVhbGlmaWVyKTogRml4IG11bHRpcGxlIGxldmVsIGhhbmRsaW5nLgoJKiBkZWNsMi5jIChuYW1lc3BhY2VfYW5jZXN0b3IpOiBVc2UgQ1BfREVDTF9DT05URVhULgoJKGFyZ19hc3NvYyk6IERvbid0IHNraXAgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGEgZnVuY3Rpb24uCgpUdWUgSnVsIDE0IDIwOjA5OjIyIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHNlYXJjaC5jIChteV90cmVlX2NvbnMpOiBDbGVhbiB1cC4KCjE5OTgtMDctMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBEb24ndCB3YXJuIGFib3V0ICJjb25mdXNpbmciIGNvbnZlcnNpb25zIHRvIHRoZQoJc2FtZSB0eXBlLgoKMTk5OC0wNy0xNCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNsYXNzLmMgKHB1c2hfbmVzdGVkX2NsYXNzKTogQ29tcGxhaW4gYWJvdXQgbmFtZXNwYWNlcy4KCSogZGVjbC5jIChzdGFydF9kZWNsKTogRW50ZXIgdGhlIG9iamVjdCdzIG5hbWVzcGFjZS4KCShjcF9maW5pc2hfZGVjbCk6IExlYXZlIGl0LgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGNoZWNrX2RlY2xfbmFtZXNwYWNlKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9maWxlKTogQ2FsbCBpdC4KCSogcGFyc2UueSAoY29tcGxleF9kaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBTZXQgY29tcGxleGl0eQoJb2YgbmFtZXNwYWNlLXF1YWxpZmllZCBpZHMgdG8gLTEsIGVudGVyIHRoZSBuYW1lc3BhY2UuCgoJKiBtZXRob2QuYyAoYnVpbGRfdGVtcGxhdGVfZGVjbF9vdmVybG9hZCk6IEV4cGVjdCBfREVDTCBhcyBmaXJzdAoJcGFyYW1ldGVyLiAgUHV0IGNvbnRleHQgdGVtcG9yYXJpbHkgaW50byBjdXJyZW50X25hbWVzcGFjZS4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDaGFuZ2UgY2FsbGVyLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogQ2FsbCBtYXJrX3VzZWQgYW5kCgljb252ZXJ0X2Zyb21fcmVmZXJlbmNlIGZvciBuYW1lc3BhY2UgbWVtYmVycy4KCk1vbiBKdWwgMTMgMjM6MjU6MjggMTk5OCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHNlYXJjaC5jIChteV90cmVlX2NvbnMpOiBUaGUgYml0ZmllbGQgaXMgYXQgaW5kZXggMi4KCk1vbiBKdWwgMTMgMTc6MjE6MDEgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBGb3JtYXQgY2hhbmdlZCB0byB3b3JrIHdpdGggbmV3IC0taGVscCBzdXBwb3J0CglpbiBnY2MvdG9wbGV2LmMKCjE5OTgtMDctMTIgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IENoYW5nZSBjYWxscyBvZiBkb19pZGVudGlmaWVyLgoJRG8gS29lbmlnIGxvb2t1cCBpbiBDQUxMX0VYUFIuCgkoYXJnX2Fzc29jKTogSGFuZGxlIGVycm9yX21hcmsuCgkqIGxleC5jIChpc19nbG9iYWwpOiBOZXcgZnVuY3Rpb24uCgkoZG9faWRlbnRpZmllcik6IEV4cGVjdCBhcmd1bWVudHMgZm9yIEtvZW5pZyBsb29rdXAuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBBZGQgcnVsZXMgZm9yIGNhbGxzIG9mIHVucXVhbGlmaWVkIGZ1bmN0aW9uIGNhbGxzLgoJKGRvX2lkKTogQ2hhbmdlIGNhbGwgb2YgZG9faWRlbnRpZmllci4KCSogcHQuYyAoZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHIpOiBMaWtld2lzZS4KCShmaW5pc2hfY2FsbF9leHByKTogQWRkIGludGVnZXIgcGFyYW1ldGVyIHRvIGluZGljYXRlCglhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwLgoKCSogZGVjbC5jIChzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IE5ldyBmaWVsZCB1c2luZ19kaXJlY3RpdmVzLgoJKHB1c2hfdXNpbmdfZGVjbCk6IE5vdCBzb3JyeSBhbnltb3JlLgoJKHB1c2hfdXNpbmdfZGlyZWN0aXZlKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF90YWcpOiBVc2UgQ1BfREVDTF9DT05URVhUIHRvIGl0ZXJhdGUuCgkodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IE5ldyBmdW5jdGlvbiwgY29kZSBmcm9tIC4uLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiAuLi4gaGVyZS4KCSogZGVjbDIuYyAobG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IFBhc3MgdXNpbmcgbGlzdCBpbnN0ZWFkIG9mCglpbml0aWFsIHNjb3BlLgoJKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGRvX3RvcGxldmVsX3VzaW5nX2RlY2wpOiBVc2UgdGhlbS4KCShkb19sb2NhbF91c2luZ19kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IFN1cHBvcnQgYmxvY2stbGV2ZWwgZGlyZWN0aXZlcy4KCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBTdXBwb3J0IHVzaW5nIGRlY2xhcmF0aW9ucyBhbmQKCWRpcmVjdGl2ZXMuCgkobmFtZXNwYWNlX3F1YWxpZmllciwgbmFtZXNwYWNlX3VzaW5nX2RlY2wpOiBOZXcgbm9uLXRlcm1pbmFscy4KCgkqIHhyZWYuYyAoY2xhc3NuYW1lKTogTmV3IGZ1bmN0aW9uLgoJKEdOVV94cmVmX2hpZXIpOiBDaGFuZ2UgY2xhc3MgYW5kIGJhc2UgcGFyYW1ldGVycyB0byB0cmVlLgoJKiBkZWNsLmMgKHhyZWZfYmFzZXlwZXMpOiBDaGFuZ2UgY2FsbGVyLgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBMaWtld2lzZS4KCjE5OTgtMDctMTIgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLWZzLnVzYy5lZHU+CgoJKiB0eXBlY2suYyAoY29tcHR5cGVzLCBjYXNlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0pOiBBZGQgcGFyYW1ldGVyCgljb21wYXJpc29uLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSwgY2FzZSBURU1QTEFURV9ERUNMKTogSWYgaXQgaXMgYQoJdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyLCByZWNvcmQgaXRzIHVzZS4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtLCBjYXNlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0pOiBUcmF2ZXJzZQoJaXRzIHRlbXBsYXRlIGFyZ3VtZW50cyBpZiBleGlzdHMuCgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBOZXcgZnVuY3Rpb24gZXF1aXZhbGVudAoJdG8gY29lcmNlX3RlbXBsYXRlX3Bhcm1zIHdoZW4gSVNfVE1QTF9QQVJNIGlzIHRydWUuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIGl0LiAgUmVtb3ZlIHRoZSBJU19UTVBMX1BBUk0gcGFyYW1ldGVyLAoJYWxsIGNhbGxlcnMgY2hhbmdlZC4KCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWNjZXNzIEFSR0xJU1QgcHJvcGVybHkgd2hlbiBjcmVhdGluZyBhCgluZXcgdmVjdG9yLiAgT25seSBhY2NlcHQgaW1wbGljaXQgVFlQRV9ERUNMIGFzIHZhbGlkIGFyZ3VtZW50IGZvcgoJYSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2hlbiBpdCBpcyBhIGJhc2UgY2xhc3Mgb2YKCWN1cnJlbnRfY2xhc3NfdHlwZS4gIERvbid0IGRpc3BsYXkgZXJyb3IgbWVzc2FnZSB3aGVuIENPTVBMQUlOIGlzCglmYWxzZS4KCjE5OTgtMDctMTIgIEtsYXVzIEthZW1wZiAgKGtrYWVtcGZAcHJvZ2lzLmRlKQoKCSogcmVwby5jIChnZXRfYmFzZV9maWxlbmFtZSk6IFVzZSBmaWxlX25hbWVfbm9uZGlyZWN0b3J5LgoJKG9wZW5fcmVwb19maWxlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IEFkZCBwcm90b3R5cGUuCgoxOTk4LTA3LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogUHVsbCB0aGUgaWRlbnRpZmllciBvdXQgb2YgZGVjbGFyYXRvci4KCVVzZSBjcF9lcnJvciBhbmQgZnJpZW5kcy4KCSogZGVjbDIuYyAocXVhbGlmaWVkX2xvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBGaXggY2FsbCB0bwoJcHVycG9zZV9tZW1iZXIuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IERvbid0IGNhbGwgY29tcGxldGVfdHlwZSBvbiBhIG5hbWVzcGFjZS4KCShncm9rdmFyZGVjbCk6IFVzZSBERUNMX0NMQVNTX1NDT1BFX1AuCgkqIGN2dC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fcmVhbCk6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUgc29vbmVyLgoJKiBjbGFzcy5jICh3YXJuX2hpZGRlbik6IEZpeCBmb3IgT1ZFUkxPQUQuCglGcm9tIGdyYWhhbXNAcmNwLmNvLnVrOgoJKiBjcC10cmVlLmggKERFRkFSR19OT0RFX0NIRUNLKTogTmV3IG1hY3JvLgoJKERFRkFSR19MRU5HVEgsIERFRkFSR19QT0lOVEVSKTogVXNlIGl0LgoKU3VuIEp1bCAxMiAwMToyMDo1NyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnKysuMSAoLXRyYWRpdGlvbmFsKTogUmVtb3ZlIGR1cGxpY2F0ZWQgZG9jdW1lbnRhdGlvbi4KCjE5OTgtMDctMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBtZXRob2QuYyAoZmx1c2hfcmVwZWF0cyk6IEFkZCBucmVwZWF0cyBwYXJhbWV0ZXIuCgkoaXNzdWVfbnJlcGVhdHMpOiBMaWtld2lzZS4KCShpc19iYWNrX3JlZmVyZW5jZWFibGVfdHlwZSk6IE5ldyBmdW5jdGlvbi4gIERvbid0IGJhY2stcmVmZXJlbmNlCglURU1QTEFURV9UWVBFX1BBUk1zIGFzIHdlbGwgYXMgc2ltcGxlIHR5cGVzIGxpa2UgaW50ZWdlcnMuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlX3dpdGhfR2NvZGUpOiBMaWtld2lzZS4KCShsYXN0dHlwZSk6IFJlbW92ZS4KCShucmVwZWF0cyk6IExpa2V3aXNlLgoJKE5yZXBlYXRzKTogTGlrZXdpc2UuCgkoc3RhcnRfc3F1YW5nbGluZyk6IERvbid0IGNsZWFyIHRoZSB2YXJpYWJsZXMgcmVtb3ZlZCBhYm92ZS4KCShlbmRfc3F1YW5nbGluZyk6IExpa2V3aXNlLgoJKGZsdXNoX3JlcGVhdHMpOiBUaWR5LiAgVXNlIG5yZXBlYXRzIHBhcmFtZXRlciByYXRoZXIgdGhhbgoJTnJlcGVhdHMgZ2xvYmFsLgoJKGlzc3VlX25yZXBlYXRzKTogTGlrZXdpc2UsIGJ1dCB3aXRoIG5yZXBlYXRzIGdsb2JhbC4gIFVzZQoJaXNfYmFja3JlZmVyZW5jZWFibGVfdHlwZS4KCShidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IFRpZHkuICBBZGQgY29tbWVudC4gIFVzZQoJYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlLgoJKGJ1aWxkX3VuZGVyc2NvcmVfaW50KTogQ29tbWVudC4KCShidWlsZF9vdmVybG9hZF9zY29wZV9yZWYpOiBVc2UgYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlLgoJKGJ1aWxkX292ZXJsb2FkX2ludCk6IExpa2V3aXNlLgoJKGJ1aWxkX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBUaWR5LgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBVc2UgYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlLgoJKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBBZGQgY29tbWVudHMuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlX3dpdGhfR2NvZGUpOiBTcGxpdCBvdXQgZnJvbQoJYnVpbGRfbWFuZ2xlZF9uYW1lLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZSk6IFVzZSBpdC4KCShidWlsZF9tYW5nbGVkX25hbWUpOiBSZXdvcmsgdG8gdXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZQoJYW5kIHRvIG5vdCB1c2UgZ2xvYmFsIG5yZXBlYXRzL05yZXBlYXRzLiAgVGlkeS4KCShwcm9jZXNzX21vZGlmaWVycyk6IFRpZHkuCgkoY2hlY2tfYnR5cGUpOiBVc2UgaXNfYmFja3JlZmVyZW5jZWFibGVfdHlwZS4gIEFkZCBjb21tZW50LgoJUmVuYW1lIGBub2RlJyB0byBgdHlwZScuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogU2V0IG51bWVyaWNfb3V0cHV0X25lZWRfYmFyIGhlcmUuCglVc2UgYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlLiAgVGlkeS4KCShidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBUaWR5LiAgRG9uJ3QgdXNlIE5yZXBlYXRzLiAgVXNlCglidWlsZF9tYW5nbGVkX25hbWVfZm9yX3R5cGUuCgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IERvbid0IGxvb2sgYXQgREVDTF9URU1QTEFURV9JTkZPCglmb3IgVFlQRV9ERUNMcy4KCjE5OTgtMDctMDggIFZsYWRpbWlyIE4uIE1ha2Fyb3YgIDx2bWFrYXJvdkBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oICh3YXJuX2xvbmdfbG9uZyk6IERlZmluZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFkZCBmbGFnIGB3YXJuX2xvbmdfbG9uZycgYXMgZ3VhcmQgZm9yCgl3YXJuaW5nICJBTlNJIEMrKyBkb2VzIG5vdCBzdXBwb3J0IGBsb25nIGxvbmcnIi4KCSogZGVjbDIuYyAod2Fybl9sb25nX2xvbmcpOiBEZWZpbmUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogUGFyc2UgLVdsb25nLWxvbmcsIC1Xbm8tbG9uZy1sb25nIG9wdGlvbnMuCgoxOTk4LTA3LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogSGFuZGxlIGF0dHJpYnV0ZXMgYmV0d2VlbiAnY2xhc3MnIGFuZCBuYW1lLgoJKiBwYXJzZS55IChhZ2dyKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbiAoRVhQRUNURUQpOiBBZGp1c3QuCgoJKiBjcC10cmVlLmg6IERlY2xhcmUgZmxhZ19vcHRpb25hbF9kaWFncyBhbmQgd2Fybl9tdWx0aWNoYXIuCgkqIGRlY2wyLmM6IERlZmluZSB0aGVtLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IEhhbmRsZSB0aGVtLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mb3B0aW9uYWwtZGlhZ3MuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBEb24ndCBjb21wbGFpbiBhYm91dCBtdWx0aXBsZSBtZWFuaW5ncyBvZgoJbmFtZSBpZiAtZm5vLW9wdGlvbmFsLWRpYWdzLgoJKiBkZWNsLmMgKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogTGlrZXdpc2UuCgkqIGxleC5jIChyZWFsX3l5bGV4KTogQ2hlY2sgd2Fybl9tdWx0aWNoYXIuCgoxOTk4LTA3LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF90YWcpOiBVc2UgQ1BfREVDTF9DT05URVhULgoKCSogdHJlZS5jIChtYWtlX2JpbmZvKTogRml4IGxlbmd0aC4KCjE5OTgtMDYtMzAgIEJlbmphbWluIEtvc25payAgPGJrb3pAYmxpc3MubmFiaS5uZXQ+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBSZW1vdmUgd2Fybl90ZW1wbGF0ZV9kZWJ1Z2dpbmcuCgkqIGxhbmctb3B0aW9ucy5oOiBMaWtld2lzZS4KCk1vbiBKdW4gMjkgMjA6MTc6NDAgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhjZXB0LmMgKGJ1aWxkX2VoX3R5cGVfdHlwZV9yZWYpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBzdXNwJy4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcwoJYGZhbHNlX2xhYmVsX3J0eCcsIGBjYWxsX3J0eCcgYW5kIGByZXR1cm5fdmFsdWVfcnR4Jy4KCjE5OTgtMDYtMjkgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX3NyY2xvYyk6IE1ha2Ugc3VyZSB3ZSBhbGxvY2F0ZSB0aGlzIG5vZGUgb24gdGhlCglwZXJtYW5lbnQgb2JzdGFjay4KClNhdCBKdW4gMjcgMjM6MzQ6MTggMTk5OCAgRnJlZCBGaXNoICA8Zm5mQG5pbmVtb29ucy5jb20+CgoJKiBnKytzcGVjLmMgKE5FRURfTUFUSF9MSUJSQVJZKTogRGVmaW5lIHRvIDEgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCShsYW5nX3NwZWNpZmljX2RyaXZlcik6IEluaXRpYWxpemUgbmVlZF9tYXRoIHdpdGggTkVFRF9NQVRIX0xJQlJBUlkuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBPbmx5IGFkZCAtbG0gYXV0b21hdGljYWxseSBpZiBuZWVkX21hdGggaXMKCW5vbnplcm8uCgpTYXQgSnVuIDI3IDEyOjIyOjU2IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2UtbGFuZy5pbiAoZysrKTogRGVwZW5kIG9uIG1rc3RlbXAuby4gIExpbmsgaW4gbWtzdGVtcC5vCgpTYXQgSnVuIDI3IDA3OjM2OjA5IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChFWFBSX0gpOiBOZXcgZGVwZW5kZW5jeSB2YXJpYWJsZS4KCShkZWNsMi5vKTogRGVwZW5kIG9uICQoRVhQUl9IKS4KCSh0eXBlY2subyk6IExpa2V3aXNlLgoJKGluaXQubyk6IExpa2V3aXNlLgoJKGV4cHIubyk6IExpa2V3aXNlLgoKMTk5OC0wNi0yNSAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2VudW0pOiBQdXQgbG9jYWwgZW51bXMgb24gcGVybWFuZW50X29ic3RhY2suCgoxOTk4LTA2LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChjX2dldF9hbGlhc19zZXQpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGxhbmdfZ2V0X2FsaWFzX3NldC4KCjE5OTgtMDYtMjUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAobWFya19hbGxfcnVudGltZV9tYXRjaGVzKTogQWRkIGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogZXhjZXB0LmMgKG1hcmtfYWxsX3J1bnRpbWVfbWF0Y2hlcyk6IFNldCBUUkVFX1NZTUJPTF9SRUZFUkVOQ0VECglmbGFnIGZvciBhbGwgZnVuY3Rpb24gZGVjbHMgd2hpY2ggYXJlIGluIHRoZSBleGNlcHRpb24gdGFibGUuCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBDaGVjayBmb3IgQ0FUQ0hfQUxMX1RZUEUgbWF0Y2guCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogQ2FsbCBtYXJrX2FsbF9ydW50aW1lX21hdGNoZXMgdG8gbWFrZSBzdXJlCgljb2RlIGlzIGVtaXR0ZWQgZm9yIGFueSByZWZlcmVuY2VkIHJ0dGkgZnVuY3Rpb24uCgoxOTk4LTA2LTI1ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IFVzZSBuZXcgfCBzeW50YXggdG8gZWxpbWluYXRlCglzdHJpbmcgY29uY2F0ZW5hdGlvbi4KCjE5OTgtMDYtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BfREVDTF9DT05URVhUKTogTmV3IG1hY3JvLgoJKiBkZWNsMi5jIChpc19uYW1lc3BhY2VfYW5jZXN0b3IsIGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBVc2UgaXQuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IExpa2V3aXNlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX3R5cGUpOiBEb24ndCBzZXQKCURFQ0xfQ09OVEVYVC4KCjE5OTgtMDYtMjQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCglTZXQgREVDTF9DT05URVhUIGZvciBnbG9iYWxzIHRvIE5VTExfVFJFRSBpbnN0ZWFkIG9mIGdsb2JhbF9uYW1lc3BhY2UuCgkqIGNwLXRyZWUuaCAoRlJPQl9DT05URVhUKTogTmV3IG1hY3JvLgoJKERFQ0xfTUFJTl9QKTogOjptYWluIHNob3VsZCBoYXZlIGEgREVDTF9DT05URVhUIG9mIE5VTExfVFJFRS4KCSogZGVjbC5jIChuYW1lc3BhY2VfYmluZGluZyk6IFJlcGxhY2UgTlVMTF9UUkVFIHdpdGgKCWdsb2JhbF9uYW1lc3BhY2UuCgkoc2V0X25hbWVzcGFjZV9iaW5kaW5nLCBwb3BfbmFtZXNwYWNlLCBsb29rdXBfbmFtZV9yZWFsKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGlzX25hbWVzcGFjZV9hbmNlc3RvciwgbG9va3VwX3VzaW5nX25hbWVzcGFjZSk6CglMaWtld2lzZS4KCSogZGVjbC5jIChwdXNodGFnKTogVXNlIEZST0JfQ09OVEVYVC4KCShwdXNoZGVjbCwgbWFrZV90eXBlbmFtZV90eXBlLCBkZWZpbmVfZnVuY3Rpb24sIGdyb2tkZWNsYXJhdG9yKToKCUxpa2V3aXNlLgoJKiBkZWNsMi5jIChzZXRfZGVjbF9uYW1lc3BhY2UsIGRvX25hbWVzcGFjZV9hbGlhcyk6IExpa2V3aXNlLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCwgbG9va3VwX3RlbXBsYXRlX2NsYXNzLCB0c3Vic3QpOgoJTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRlY2xfbmFtZXNwYWNlKTogUmV0dXJuIGdsb2JhbF9uYW1lc3BhY2UgaWYgbm8gY29udGV4dC4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lKTogRXhwZWN0IG51bGwgYXMgY29udGV4dC4KCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogRG8gbm90aGluZyBmb3IgbnVsbAoJY29udGV4dHMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQWxsb3cgZm9yIG51bGwgaWRfY29udGV4dC4KCjE5OTgtMDYtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2lzX3RodW5rIGZvciB0aGUKCUFTTV9PVVRQVVRfTUlfVEhVTksgY2FzZSBhcyB3ZWxsLgoKMTk5OC0wNi0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwbHVzX3R5cGVfbWF0Y2hlcik6IEdldCBhIG1hdGNoX2luZm8gcG9pbnRlcgoJaW5zdGVhZCBvZiBhbiBleGNlcHRpb24gdGFibGUgZW50cnkgYXMgYSBwYXJhbWV0ZXIuCgoxOTk4LTA2LTIzICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBEb24ndCBjYWxsIHN0YXJ0X2NhdGNoX2hhbmRsZXIuCgkqIGV4Y2VwdC5jIChjYWxsX2VoX2luZm8pOiBSZW1vdmUgY29lcmNlZCBmaWVsZCBmcm9tIGRlY2xhcmF0aW9uLgoJKGJ1aWxkX2VoX3R5cGVfdHlwZV9yZWYpOiBOZXcgZnVuY3Rpb24gdG8gY3JlYXRlIGFuIGFkZHJlc3Mgb2YgYQoJcnR0aSBmdW5jdGlvbiBmb3IgdGhlIG5ldyBzdHlsZSBleGNlcHRpb24gdGFibGVzLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFNwbGl0IGZ1bmN0aW9uLCB0aGlzIGNvbnRhaW5zIHRoZQoJY29tbW9uIHBhcnQuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9ja19vbGQpOiBOZXcgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgcmVzdAoJb2YgZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrIHVuZGVyIG9sZCBzdHlsZSBleGNlcHRpb25zLgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogTmV3IGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIHJlc3QKCW9mIGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayB1bmRlciBuZXcgc3R5bGUgZXhjZXB0aW9ucy4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogT25seSBwb3AgdGhlIGZhbHNlIGxhYmVsIG9mZiB0aGUgc3RhY2sgdW5kZXIKCXRoZSBvbGQgc3R5bGUgb2YgZXhjZXB0aW9ucy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF90cnlfYmxvY2spOiBEb24ndCBjYWxsIHN0YXJ0X2NhdGNoX2hhbmRsZXIuCgkqIGV4Y2VwdGlvbi5jYyAoc3RydWN0IGNwX2VoX2luZm8pOiBBZGQgb3JpZ2luYWxfdmFsdWUgZmllbGQuCgkoX19jcGx1c190eXBlX21hdGNoZXIpOiBQZXJmb3JtIHR5cGUgbWF0Y2hpbmcgb24gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbgoJdmFsdWUsIGFuZCBpZiB3ZSBoYXZlIGEgbWF0Y2gsIHNldCB0aGUgY3VycmVudCB2YWx1ZS4KCShfX2NwX3B1c2hfZXhjZXB0aW9uKTogU2V0IHRoZSBvcmlnaW5hbCBleGNlcHRpb24gdmFsdWUuCgoxOTk4LTA2LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGpvdXN0KTogRml4IGNvbmZ1c2luZyBjb252ZXJzaW9uIHdhcm5pbmcuCgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogQWRkIHBsYWNlbWVudCBwYXJtLiAgQ2hlY2sKCUxPT0tVUF9TUEVDVUxBVElWRUxZLgoJKiBjcC10cmVlLmgsIGRlY2wyLmMsIGluaXQuYzogQWRqdXN0LgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IFVzZSBpdC4KCgkqIHB0LmMgKHRzdWJzdCk6IERpYWdub3NlIGNyZWF0aW5nIHZvaWQgZmllbGRzIG9yIHZhcmlhYmxlcy4KCk1vbiBKdW4gMjIgMDg6NTA6MjYgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGB0bXAnLgoKCSogY3AtdHJlZS5oIChjaGVja19kdG9yX25hbWUpOiBBZGQgcHJvdG90eXBlLgoKCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwoJYHB0cl90eXBlX25vZGUnLCBgcGFybScgYW5kIGBydmFsJy4KCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfdHlwZSk6IFVzZSBIT1NUX1dJREVfSU5UX1BSSU5UX0RFQyBzcGVjaWZpZXIKCWluIGNhbGwgdG8gZnByaW50Zi4KCShsYW5nX3ByaW50X3hub2RlKTogTGlrZXdpc2UuCgoJKiB0eXBlY2syLmMgKGVudW1fbmFtZV9zdHJpbmcpOiBDYXN0IGFyZ3VtZW50IHRvIHNwcmludGYgdG8gbG9uZwoJYW5kIHVzZSAlbGQgc3BlY2lmaWVyLgoKCSogeHJlZi5jIChHTlVfeHJlZl9lbmRfc2NvcGUpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMKCXNwZWNpZmllciBpbiBjYWxsIHRvIGZwcmludGYuCgkoR05VX3hyZWZfbWVtYmVyKTogQ2FzdCBhcmd1bWVudCB0byBzcHJpbnRmIHRvIGludC4KCkZyaSBKdW4gMTkgMjM6MjI6NDIgMTk5OCAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIHR5cGVjazIuYyAocG9wX2luaXRfbGV2ZWwpOiBXYXJuIGFib3V0IGltcGxpY2l0IHplcm8gaW5pdGlhbGl6YXRpb24KCW9mIHN0cnVjdCBtZW1iZXJzLgoKVGh1IEp1biAxOCAwOTozMjozMiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IFByb3RvdHlwZSBmdW5jdGlvbiBgY2hlY2tfamF2YV9tZXRob2QnLgoKMTk5OC0wNi0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IE1ha2UgY29uZmxpY3RpbmcgdXNlIG9mIGlkIGEgcGVkd2Fybi4KCSogZGVjbC5jIChwdXNoZGVjbF9jbGFzc19sZXZlbCk6IExpa2V3aXNlLgoKMTk5OC0wNi0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IElzc3VlIGFuIGVycm9yIHdoZW4gcHJlc2VudGVkCgl3aXRoIGFuIGludGVnZXIgKHJlYWwpIGNvbnN0YW50IHRoYXQgY2Fubm90IGJlIHNpbXBsaWZpZWQgdG8gYW4KCUlOVF9DU1QgKFJFQUxfQ1NUKS4KCgkqIGNwLXRyZWUuaCAoY19nZXRfYWxpYXNfc2V0KTogUmVtb3ZlIGRlY2xhcmF0aW9uIGFkZGVkIGluCgkxOTk4LTA2LTEzIGNoYW5nZSB0aGF0IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gY2hlY2tlZCBpbi4KCjE5OTgtMDYtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogQ2hhbmdlICUgaW4gZm9ybWF0IHN0cmluZ3MKCXRvICUlLgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IERvbid0IGJ1aWxkX3N0YXRpY19uYW1lIGZvciBkZWNscyB0aGF0CglhcmVuJ3QgYXQgbmFtZXNwYWNlIHNjb3BlLgoKCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogQ2F0Y2ggZGVmYXVsdC1pbml0aWFsaXphdGlvbiBvZgoJcmVmZXJlbmNlcy4KCjE5OTgtMDYtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBlcnJmbi5jIChjcF90aGluZyk6IEhhbmRsZSB0aGUgYCUlJyBmb3JtYXR0aW5nIHNlcXVlbmNlLgoKMTk5OC0wNi0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IENvbXBsYWluIGFib3V0IGdldHRpbmcgYSBuYW1lc3BhY2UKCW9yIGNsYXNzIHRlbXBsYXRlLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IFJlbW92ZSBjaGVjayBmb3IgbmFtZXNwYWNlcy4KCSogdHlwZWNrMi5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBMaWtld2lzZS4KCSogcGFyc2UueSAodGVtcGxhdGVfYXJnKTogQWRkIFBUWVBFTkFNRSBleHBhbnNpb24uCgoxOTk4LTA2LTE2ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogRG9uJ3QgYnVpbGQgZXh0ZXJuYWwgYXNzZW1ibGVyIG5hbWVzIGZvcgoJVFlQRU5BTUVzIGluIG90aGVyIG5hbWVzcGFjZXMgYXMgdGhlcmUgaXMgbm8gZGVjbGFyYXRvci4KCSogZXJyb3IuYyAoY3BfZmlsZV9vZiwgY3BfbGluZV9vZik6IERvbid0IGV4dHJhY3QgZmlsZSBvciBsaW5lIG51bWJlcgoJaW5mbyBmcm9tIERFQ0xfQ09OVEVYVCBpZiBpdCBpcyBOVUxMLgoKMTk5OC0wNi0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChjaGVja19kdG9yX25hbWUpOiBTcGxpdCBvdXQuCgkoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBVc2UgaXQuCgoJKiB0eXBlY2suYyAoYnVpbGRfc3RhdGljX2Nhc3QpOiBGaXggaGFuZGxpbmcgb2YgcG9pbnRlcnMgdG8gbWVtYmVycy4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogSnVzdCByZXR1cm4gbm90aGluZyBmcm9tIGEgY29uc3RydWN0b3IuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBDb21wbGFpbiBhYm91dCByZXR1cm5pbmcgYSB2b2lkCglleHByZXNzaW9uIGZyb20gYSBkZXN0cnVjdG9yLgoKMTk5OC0wNi0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKGFsdGVyX2FjY2Vzcyk6IEFjY2VwdCBhIEJJTkZPIGV4cGxhaW5pbmcgaG93IHRvIGdldAoJZnJvbSB0aGUgZW50aXR5IHdob3NlIGFjY2Vzc2VkIGlzIGJlaW5nIGFsdGVyZWQgdG8gdGhlIHR5cGUgZG9pbmcKCXRoZSBhbHRlcmluZy4KCShoYW5kbGVfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbiBjb250YWluaW5nIGNvZGUgc3BsaXQgb3V0IGZyb20gLi4uCgkoZmluaXNoX3N0cnVjdF8xKTogSGVyZS4KCgkqIGNwLXRyZWUuaCAoY29tcGxldGVfdHlwZV9vcl9lbHNlKTogRGVjbGFyZS4KCSogaW5pdC5jIChidWlsZF9uZXdfMSwgYnVpbGRfZGVsZXRlKTogVXNlIGl0LgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogVXNlIGNvbXBsZXRlX3R5cGUsIHJhdGhlciB0aGFuCglleHBhbmRpbmcgaXQgaW5saW5lLgoJKGNvbXBsZXRlX3R5cGVfb3JfZWxzZSk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9jb21wb25lbnRfcmVmKTogVXNlIGl0LgoJKHBvaW50ZXJfaW50X3N1bSk6IE1ha2Ugc3VyZSB0aGUgdHlwZSBwb2ludGVkIHRvIGlzIGNvbXBsZXRlLgoJKHBvaW50ZXJfZGlmZik6IExpa2V3aXNlLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFRyYXZlcnNlIHRoZSBUWVBFX0NPTlRFWFQgZm9yCgl0eXBlcy4KCgkqIHNlYXJjaC5jIChnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IE5vdGUgdGhhdCBtZW1iZXIgdGVtcGxhdGVzCgljYW5ub3Qgb3ZlcnJpZGUgdmlydHVhbCBmdW5jdGlvbnMuCgoxOTk4LTA2LTEyICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBJZiBERUNMQVJBVE9SIHR1cm5lZCBpbnRvCglhbiBlcnJvcl9tYXJrX25vZGUgZnJvbSBsb29rdXBfdGVtcGxhdGVfZnVuY3Rpb24sIHJldHVybiB0aGUgc2FtZS4KCShkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBBbHNvIG1ha2Ugc3VyZSBURU1QTEFURV9JRCBpc24ndCBhbgoJZXJyb3JfbWFya19ub2RlLCBiZWZvcmUgd2UgdHJ5IHRvIHJlYWQgaXRzIG9wZXJhbmRzLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSWYgd2UgZ290IGFuIGVycm9yX21hcmtfbm9kZSBmcm9tCgljaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbiwganVzdCByZXR1cm4gaXQgcmlnaHQgYmFjay4KCjE5OTgtMDYtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogRG9uJ3QgdHJlYXQgdGVtcGxhdGUtaWRzIHRoYXQgZG9uJ3QKCXNwZWNpZnkgYW55IHRlbXBsYXRlIGFyZ3VtZW50cyBhcyBlcXVpdmFsZW50IHRvIG9yZGluYXJ5CglpZGVudGlmaWVycy4gIFVzZSBPRkZTRVRfUkVGIGluc3RlYWQgb2YgU0NPUEVfUkVGIHRvIHJlZmVyIHRvCglwb2ludGVyLXRvLW1lbWJlcnMgZm9yIG1lbWJlciB0ZW1wbGF0ZXMuICBUaWR5IHNsaWdodGx5LgoJKiBjcC10cmVlLmRlZiAoVEVNUExBVEVfSURfRVhQUik6IFJldmlzZSBkb2N1bWVudGF0aW9uLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBIYW5kbGUgdGVtcGxhdGUtaWRzIGxpa2Ugb3JkaW5hcnkKCWlkZW50aWZpZXJzLCBmb3IgdGhlIG1vc3QgcGFydCwgYnV0IHN0b3JlIGEgVEVNUExBVEVfSURfRVhQUiBpbiB0aGUKCW9mZnNldCBwYXJ0IG9mIHRoZSBPRkZTRVRfUkVGLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBDaGFuZ2UgY2hlY2sgZm9yIHVua25vd24gdHlwZXMgdG8KCWxvb2sgZm9yIE9GRlNFVF9SRUZzLCBub3QgU0NPUEVfUkVGcy4KCjE5OTgtMDYtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChpc19tZW1iZXJfdGVtcGxhdGVfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBVc2UgaXQuCgoxOTk4LTA2LTExICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGVsbW8uY3lnbnVzLmNvbT4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIGNsYXNzZXMgdXNpbmcKCW1lbWJlciBmdW5jdGlvbnMgb2YgdGhlIGVuY2xvc2luZyBjbGFzcyBhcyBmcmllbmRzLgoKMTk5OC0wNi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNhbGwuYyAoY29udmVydF9kZWZhdWx0X2FyZyk6IE1ha2UgZ2xvYmFsLCBub3Qgc3RhdGljLgoJKGNvbnZlcnRfYXJnX2Zvcl9lbGxpcHNpcyk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhlcmUuCgkqIGNwLXRyZWUuaCAoY29udmVydF9kZWZhdWx0X2FyZyk7IERlY2xhcmUuCgkoY29udmVydF9hcmdfdG9fZWxsaXBzaXMpOiBMaWtld2lzZS4KCShkb19tZW1iZXJfaW5pdCk6IFJlbW92ZS4KCSogaW5pdC5jIChkb19tZW1iZXJfaW5pdCk6IFJlbW92ZTsgdGhpcyBjb2RlIGlzIGRlYWQuCgkoZXhwYW5kX21lbWJlcl9pbml0KTogUmVtb3ZlIG11Y2ggb2YgdGhpcyBjb2RlOyBpdCBpcyBkZWFkLgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBVc2UgY29udmVydF9kZWZhdWx0X2FyZyBhbmQKCWNvbnZlcnRfYXJnX2Zvcl9lbGxpcHNpcywgcmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgaGVyZS4KCgkqIGNhbGwuYyAoY29udmVydF9saWtlKTogRG9uJ3QgZmFpbCBzaWxlbnRseSBpZgoJYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24gZmFpbHMuICBBbHdheXMgcmV0dXJuIGVycm9yX21hcmtfbm9kZQoJZm9yIGZhaWx1cmUuCgoxOTk4LTA2LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoY292YXJpYW50X3JldHVybl9wKTogQ29tcGxhaW4gYWJvdXQgYW1iaWd1b3VzIGJhc2UuCgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IERpYWdub3NlIHJlZiB0byBuZXN0ZWQgdHlwZS4KCjE5OTgtMDYtMTAgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IENoZWNrIHRoYXQgSU5JVCBpc24ndCBhbiBlcnJvcl9tYXJrX25vZGUKCWJlZm9yZSBnaXZpbmcgZXJyb3IgYWJvdXQgaW52YWxpZCB0eXBlIGZvciBkZWZhdWx0IGFyZy4KCjE5OTgtMDYtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBGaXggdGhpbmtvLgoKMTk5OC0wNi0xMCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogTmV3IGFyZ2MvYXJndiBpbnRlcmZhY2UuCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNvZGVfb3B0aW9uKTogTmV3IGFyZ2MvYXJndiBpbnRlcmZhY2UuCgkqIGxhbmctc3BlY3MuaCAoZGVmYXVsdF9jb21waWxlcnMpOiBPbmx5IGNhbGwgY3BwIGlmIC1FLCAtTSBvciAtTU0gaXMKCXNwZWNpZmllZCBmb3IgY3BwbGliLWVuYWJsZWQgY29tcGlsZXJzLgoJKiBsZXguYyAobGFuZ19pbml0KTogRG9uJ3QgY2hlY2tfbmV3bGluZSBmb3IgY3BwbGliLgoJKGluaXRfcGFyc2UpOiBEb24ndCBpbml0aWFsaXplIGNwcGxpYiBoZXJlLgoKMTk5OC0wNi0xMCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTWFrZSBzdXJlIEZJRUxEIGhhcyBhIGxhbmdfc3BlY2lmaWMKCXBpZWNlIGJlZm9yZSBjaGVja2luZyBERUNMX01VVEFCTEVfUC4KCjE5OTgtMDYtMTAgIEpvaG4gQ2FyciAgPGpmY0BtaXQuZWR1PgoKCSogdHJlZS5jIChkZWJ1Z19iaW5mbyk6IE1ha2UgcHJpbnRmIGZvcm1hdCBtYXRjaCBhcmd1bWVudHMuCgoJKiBlcnJvci5jIChPQl9QVVRJKTogTWFrZSBwcmludGYgZm9ybWF0IG1hdGNoIGFyZ3VtZW50cy4KCjE5OTgtMDYtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IEhhbmRsZSBkZWZhdWx0LWluaXRpYWxpemF0aW9uLgoKCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogSGFuZGxlIHRocm93aW5nIE5VTEwuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVXNlIHJlc29sdmVfb2Zmc2V0X3JlZi4KCgkqIHNlYXJjaC5jIChjb21wdXRlX2FjY2Vzcyk6IE9ubHkgc3RyaXAgYW4gYW5vbnltb3VzIHVuaW9uCglmb3IgYSBGSUVMRF9ERUNMLgoKCSogY2FsbC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogVHdlYWsuCgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBSZXN0b3JlIGNvZGUgZm9yIGNvbnZlcnNpb24KCWZyb20gY2xhc3MgdHlwZXMuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBVc2UgaXQuICBDbGVhbiB1cC4KCgkqIHR5cGVjay5jIChjb21wX3B0cl90dHlwZXNfcmVhbCk6IEZpeCBjdi1xdWFsIGNvbXBhcmlzb25zLgoKMTk5OC0wNi0xMCAgQnJhbmtvIENpYmVqICA8YnJhbmtvLmNpYmVqQGhlcm1lcy5zaT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBEb24ndCB3YXJuIGFib3V0IHZvaWQgZXhwcmVzc2lvbnMgb24KCXJldHVybiBzdGF0ZW1lbnRzIGluIGZ1bmN0aW9ucyByZXR1cm5pbmcgdm9pZC4KCjE5OTgtMDYtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChmbl90eXBlX3VuaWZpY2F0aW9uKTogUmV2aXNlIGRvY3VtZW50YXRpb24uICBUaWR5LgoJKHR5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCjE5OTgtMDYtMDkgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJ5X2Jsb2NrKTogUmVuYW1lIGV4cGFuZF9zdGFydF9jYXRjaCwgYW5kIGRlbGV0ZQoJZXhwYW5kX2VuZF9jYXRjaC4KCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogUmVuYW1lIGV4cGFuZF9zdGFydF9jYXRjaCwgYW5kIGRlbGV0ZQoJZXhwYW5kX2VuZF9jYXRjaC4KCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfZWhfc3BlYyk6IFJlbmFtZSBleHBhbmRfc3RhcnRfY2F0Y2gsIGFuZCBkZWxldGUKCWV4cGFuZF9lbmRfY2F0Y2guCgoxOTk4LTA2LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IE5ldyBmbi4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogVXNlIGl0LgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuCgpNb24gSnVuICA4IDIwOjQ1OjUyIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChkZWNsMi5vKTogRGVwZW5kIG9uIGR3YXJmMm91dC5oIGFuZCBkd2FyZm91dC5oLgoKCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBgbWF5YmVfcHJpbnRfdGVtcGxhdGVfY29udGV4dCcgYW5kCglgbWF5YmVfbWFrZV9vbmVfb25seScuCgoJKiBkZWNsLmMgKGF1dG9fZnVuY3Rpb24pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBkZWNsJy4KCgkqIGRlY2wyLmM6IEluY2x1ZGUgZHdhcmYyb3V0LmggYW5kIGR3YXJmb3V0LmguCgoJKiBsZXguYzogUmVtb3ZlIHJlZHVuZGFudCBkZWNsYXJhdGlvbnMgb2YgYHNldF9mbG9hdF9oYW5kbGVyJyBhbmQKCWBhc21fb3V0X2ZpbGUnLgoKMTk5OC0wNi0wOCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBSZW1vdmUgTkVXX0VIX01PREVMIGNvbXBpbGUKCXRpbWUgZmxhZy4gIENhbGwgX19jcF9laF9pbmZvIGluc3RlYWQgb2YgX19jcF9leGNlcHRpb25faW5mby4KCSogZXhjZXB0aW9uLmNjIChzdHJ1Y3QgY3BfZWhfaW5mbyk6IFJlbW92ZSBORVdfRUhfTU9ERUwgZmxhZy4KCShfX2NwX2V4Y2VwdGlvbl9pbmZvKTogUmV0dXJuIG9mZnNldCBpbnRvIGNwX2VoX2luZm8gc3RydWN0dXJlIHRvCgltYXRjaCB3aGF0IHVzZSB0byBiZSB0aGUgc3RhcnQgb2YgdGhpcyBzdHJ1Y3R1cmUuCgkoX19jcF9laF9pbmZvKTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybiBhIHBvaW50ZXIgdG8gY3BfZWhfaW5mbyBzdHJ1Y3QuCgkoX19jcGx1c190eXBlX21hdGNoZXIsIF9fY3BfcHVzaF9leGNlcHRpb24pOiBSZW1vdmUgTkVXX0VIX01PREVMCgljb21waWxlIHRpbWUgZmxhZy4KCShfX3VuY2F0Y2hfZXhjZXB0aW9uLCBfX2NoZWNrX2VoX3NwZWMsIHN0ZDo6dW5jYXVnaHRfZXhjZXB0aW9uKTogQ2FsbAoJX19jcF9laF9pbmZvIGluc3RlYWQgb2YgX19jcF9leGNlcHRpb25faW5mby4KCjE5OTgtMDYtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBEaXNhYmxlIGlubGluaW5nIG9mIGV4dGVybiBpbmxpbmVzCgl3aXRoIHN0YXRpYyB2YXJpYWJsZXMuCgoxOTk4LTA2LTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogQ29ycmVjdCBwcmV2aW91cyBjaGFuZ2UgdG8gdXNlIGJ1aWxkLAoJbm90IGJ1aWxkX21pbi4KCjE5OTgtMDYtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogSGFuZGxlIHBvaW50ZXItdG8tbWVtYmVycyB3aGVyZSB0aGUKCW1lbWJlciBpcyBhIHRlbXBsYXRlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgoxOTk4LTA2LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGxhbmdfaW5pdCk6IFJlbW92ZSBmbGFnX2V4Y2VwdGlvbnMgPT0gMiBoYWNrLgoKMTk5OC0wNi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGVudmVsb3BlX2FkZF9kZWNsKTogVHdlYWsgZm9yIGltcGxpY2l0IHR5cGVuYW1lLgoKCSogY2FsbC5jIChqb3VzdCk6IEFsc28gd2FybiBhYm91dCBjb25mdXNpbmcgY29udmVyc2lvbiBvcC9jb25zdHJ1Y3RvcgoJb3ZlcmxvYWQgcmVzb2x1dGlvbi4KCgkqIHNwZXcuYyAoeXlsZXgpOiBBbHNvIHJldHVybiB0aGUgVFlQRV9ERUNMIGlmIGdvdF9vYmplY3QuCglEb24ndCBjbGVhciBnb3Rfb2JqZWN0IGFmdGVyICd+Jy4KCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBUd2VhayBkZXN0cnVjdG9yIGhhbmRsaW5nLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9jb3B5LCBjYXNlIE1FVEhPRF9DQUxMX0VYUFIpOiBEb24ndCBtZXNzIHdpdGgKCVRZUEVfTUFJTl9WQVJJQU5UIGZvciBkZXN0cnVjdG9ycy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vYmplY3RfY2FsbF9leHByKTogQ29tcGxhaW4gYWJvdXQgY2FsbGluZyBhCglUWVBFX0RFQ0wuCgoxOTk4LTA2LTA1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19wcmVfbGluaywgbGFuZ19zcGVjaWZpY19leHRyYV9vZmlsZXMpOgoJRGVmaW5lIC0gdXBkYXRlIG5lZWRlZCBieSBnY2MuYyBjaGFuZ2UuCgoxOTk4LTA2LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChjcF9wcmludGVycyk6IFVzZSAnbycgaW5zdGVhZCBvZiAnXycgZm9yIHRoZSBudWxsIGVudHJ5LgoKMTk5OC0wNi0wNSAgTWFydGluIHYuIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNwLXRyZWUuaCAoREVDTF9OQU1FU1BBQ0VfQUxJQVMsIE9SSUdJTkFMX05BTUVTUEFDRSk6IERlY2xhcmUuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEFkZCBuYW1lc3BhY2VzX29ubHkgcGFyYW1ldGVyLgoJSWYgc2V0LCByZXR1cm4gb25seSBOQU1FU1BBQ0VfREVDTHMuCgkoc2VsZWN0X2RlY2wpOiBMaWtld2lzZS4KCShpZGVudGlmaWVyX3R5cGVfdmFsdWUpOiBHaXZlIGFkZGl0aW9uYWwgcGFyYW1ldGVyLgoJKGxvb2t1cF9uYW1lX25vbmNsYXNzKTogTGlrZXdpc2UuCgkobG9va3VwX25hbWUpOiBMaWtld2lzZS4KCShmaW5kX2JpbmRpbmcpOiBTa2lwIG5hbWVzcGFjZSBhbGlhc2VzLgoJKGJpbmRpbmdfZm9yX25hbWUpOiBMaWtld2lzZS4KCShwdXNoX25hbWVzcGFjZSk6IENoZWNrIGZvciBuYW1lc3BhY2UgYWxpYXNlcy4KCShsb29rdXBfbmFtZV9uYW1lc3BhY2Vfb25seSk6IE5ldyBmdW5jdGlvbi4KCShiZWdpbl9vbmx5X25hbWVzcGFjZV9uYW1lcywgZW5kX29ubHlfbmFtZXNwYWNlX25hbWVzKTogTmV3IGZ1bmN0aW9ucy4KCSogZGVjbDIuYyAoc2V0X2RlY2xfbmFtZXNwYWNlKTogU2tpcCBuYW1lc3BhY2UgYWxpYXNlcy4KCShkb191c2luZ19kaXJlY3RpdmUpOiBMaWtld2lzZS4KCShkb19uYW1lc3BhY2VfYWxpYXMpOiBQcm9kdWNlIG5hbWVzcGFjZSBhbGlhc2VzLCBmaXggYWxpYXMKCXJlZGVjbGFyYXRpb24uCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IFN1cHBvcnQgU0NPUEVfUkVGLgoJKiBwYXJzZS55IChleHRkZWYpOiBXcmFwIGxvb2t1cCB3aXRoIG5hbWVzcGFjZV9vbmx5IGZvciBuYW1lc3BhY2UKCWFsaWFzZXMgYW5kIHVzaW5nIGRlY2xhcmF0aW9ucy4KCjE5OTgtMDYtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAocmVhbGx5X292ZXJsb2FkZWRfZm4pOiBPbmx5IHNlZSB0aHJvdWdoIG9uZSBUUkVFX0xJU1QuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBDbGVhbiB1cCBORVdfRVhQUiBjYXNlLgoKMTk5OC0wNi0wNCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCglTdWdnZXN0ZWQgYnkgQnJlbmRhbiBLZWhvZQoJKiBkZWNsMi5jIChkb190b3BsZXZlbF91c2luZ19kZWNsKTogV2hlbiBkZWNsIGlzIGEgVFlQRV9ERUNMLAoJdHJlYXQgaXQgYXMgdXNpbmcgOjpkZWNsLgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX3R5cGUpOiBQcm9jZXNzIHVua25vd25fdHlwZV9ub2RlIGFuZCBPRkZTRVRfVFlQRS4KCgkqIHRyZWUuYyAobWFwY2FyKTogU3VwcG9ydCBORVdfRVhQUi4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFN1cHBvcnQgTkVXX0VYUFIuCgoxOTk4LTA2LTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IFVzZSBvdmVybG9hZCBtYWNoaW5lcnkgdG8gbWFrZSBuYW1lLgoJKiBzZWFyY2guYyAoY292YXJpYW50X3JldHVybl9wKTogTmV3IGZuLgoJKGdldF9tYXRjaGluZ192aXJ0dWFsKTogVXNlIGl0LgoKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IEZpeCBjaGVjayBmb3Igdm9pZC4KCjE5OTgtMDYtMDEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX0ZPUl9KQVZBKTogIE5ldyBtYWNyby4KCSogZGVjbC5jLCBjcC10cmVlLmggKGphdmFfYnl0ZV90eXBlX25vZGUsIGphdmFfc2hvcnRfdHlwZV9ub2RlLAoJamF2YV9pbnRfdHlwZV9ub2RlLCBqYXZhX2xvbmdfdHlwZV9ub2RlLCBqYXZhX2Zsb2F0X3R5cGVfbm9kZSwKCWphdmFfZG91YmxlX3R5cGVfbm9kZSwgamF2YV9jaGFyX3R5cGVfbm9kZSwgamF2YV9ib29sZWFuX3R5cGVfbm9kZSk6CglOZXcgInByaW1pdGl2ZSIgdHlwZXMsIHdpdGggcHJlZGVmaW5lZCBuYW1lcyBfX2phdmFfYnl0ZSBldGMuCgkocmVjb3JkX2J1aWx0aW5famF2YV90eXBlKTogIE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBNYWtlIEphdmEgdHlwZXMgd2l0aCByZWNvcmRfYnVpbHRpbl9qYXZhX3R5cGUuCgkocHVzaHRhZywgZ3Jva2RlY2xhcmF0b3IpOiAgU2V0IFRZUEVfRk9SX0pBVkEgaWYgaW4gZXh0ZXJuICJKQVZBIi4KCSh4cmVmX2Jhc2V5cGVzKTogIElmIGJhc2UgY2xhc3Mgd2FzIFRZUEVfRk9SX0pBVkEsIHNvIGlzIHRoaXMgY2xhc3MuCgkoZ3Jva2ZuZGVjbCk6ICBDYWxsIGNoZWNrX2phdmFfbWV0aG9kIGZvciBKYXZhIGNsYXNzZXMuCgkqIG1ldGhvZC5jIChpc19qYXZhX3R5cGUpOiAgUmVtb3ZlZC4gIFJlcGxhY2VkIHdpdGggVFlQRV9GT1JfSkFWQS4KCShwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiAgTWF0Y2ggdHlwZXMgYWdhaW5zdCBzcGVjaWZpYwoJamF2YV9YWF90eXBlX25vZGUgdHlwZXMsIHJhdGhlciB0aGFuIHVzaW5nIGlzX2phdmFfdHlwZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogIERvbid0IGFkZCBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3IKCW9yIG9wZXJhdG9yPSBpZiBUWVBFX0ZPUl9KQVZBLgoJKHBvcF9sYW5nX2NvbmV4dCk6ICBSZXN0b3JlIHN0cmljdF9wcm90b3R5cCBwcm9wZXIgaWYgSmF2YS4KCSogZGVjbDIuYyAoYWNjZXB0YWJsZV9qYXZhX3R5cGUsIGNoZWNrX2phdmFfbWV0aG9kKTogIE5ldyBmdW5jdGlvbnMuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogIENvcHkgVFlQRV9GT1JfSkFWQSBmcm9tIHBhdHRlcm4uCgkodHN1YnN0KTogIE1vdmUgY29tbW9uIHN0YXRlbWVudCBhZnRlciBpZiBzdGF0ZW1lbnQuCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiAgSWYgc3RyaWN0LCBUWVBFX0ZPUl9KQVZBIG11c3QgbWF0Y2guCgoxOTk4LTA2LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogVXNlIGZpcnN0X3J0bF9vcC4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogQWxzbyBjaGVjayBpbmRleF90eXBlIGZvcgoJdGVtcGxhdGUgcGFybXMuCgoxOTk4LTA1LTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBBbHdheXMgY29weSBCSU5GT19CQVNFVFlQRVMuCgoxOTk4LTA1LTI5ICBzY290dCBzbnlkZXIgIDxzbnlkZXJAZDBzZ2lmLmZuYWwuZ292PgoKCSogdHJlZS5jIChsYXlvdXRfYmFzZXR5cGVzKTogSWYgd2UgY2hhbmdlIFRZUEVfU0laRSwgY2hhbmdlCglUWVBFX1NJWkVfVU5JVCB0b28uCgoxOTk4LTA1LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvbid0IGNvbXBsYWluIGFib3V0IGluLWNsYXNzCglpbml0aWFsaXphdGlvbiBvZiBzdGF0aWMgY29uc3RzIGlmIHdlIGRvbid0IHJlYWxseSBrbm93IHRoZSB0eXBlCglvZiB0aGUgdmFyaWFibGUuCgoxOTk4LTA1LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfREVTVFJVQ1RPUl9QKTogTmV3IG1hY3JvLgoJKiBtZXRob2QuYyAoYnVpbGRfZGVzdHJ1Y3Rvcl9uYW1lKTogTmV3IGZuLgoJKiBkZWNsMi5jIChtYXliZV9yZXRyb2ZpdF9pbl9jaHJnKTogU3BsaXQgb3V0Li4uCgkoZ3Jva2NsYXNzZm4pOiBGcm9tIGhlcmUuICBSZW9yZ2FuaXplLgoJKiBkZWNsLmMgKGdyb2tfY3Rvcl9wcm9wZXJ0aWVzKTogTWFrZSBzdXJlIGN0b3JzIGZvciB0eXBlcyB3aXRoCgl2YmFzZXMgaGF2ZSB0aGUgaW5fY2hyZyBwYXJtLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVwZGF0ZQoJVFlQRV9VU0VTX1ZJUlRVQUxfQkFTRUNMQVNTRVMgZnJvbSB0c3Vic3RlZCBiYXNlcy4gIERvbid0IGNhbGwKCWdyb2tfKl9wcm9wZXJ0aWVzLgoJKHRzdWJzdCk6IENhbGwgZ3Jva19jdG9yX3Byb3BlcnRpZXMgYW5kIG1heWJlX3JldHJvZml0X2luX2NocmcuCgoxOTk4LTA1LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IE1ha2UgdGVzdCBmb3Igd2hldGhlciBvciBub3Qgc3RhdGljCgl2YXJpYWJsZXMgc2hvdWxkIGJlIGluc3RhbnRpYXRlZCBlYXJseSBtYXRjaCBpdHMgY29tbWVudC4KCjE5OTgtMDUtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IEFsd2F5cyBwZWR3YXJuIGFib3V0IHZhY3VvdXNseSByZWRlY2xhcmluZwoJYSBtZW1iZXIuCgkoc3RhcnRfZnVuY3Rpb24pOiBDYWxsIGNoZWNrX2RlZmF1bHRfYXJncy4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgY2FsbCBjaGVja19kZWZhdWx0X2FyZ3MuCgkoY2hlY2tfZGVmYXVsdF9hcmdzKTogVXNlIGNwX2Vycm9yX2F0LgoJKiBsZXguYyAoZG9fcGVuZGluZ19kZWZhcmdzKTogQ2FsbCBjaGVja19kZWZhdWx0X2FyZ3MuCgoxOTk4LTA1LTI3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IE1ha2Ugc3VyZSBnZXRfdHlwZV92YWx1ZSByZXR1cm5zCglzb21ldGhpbmcgYmVmb3JlIHdlIHRyeSB0byB1c2UgaXRzIFRZUEVfTUFJTl9WQVJJQU5ULgoJKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoKMTk5OC0wNS0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IENvbXBsYWluIGFib3V0IGdldHRpbmcgYSBUUkVFX0xJU1QgdG8KCWluaXRpYWxpemUgYW4gYXJyYXkuCgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBEb24ndCBzZXQgREVDTF9DT05URVhUIGFuZAoJREVDTF9WSVJUVUFMX1AuCgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogQ2xhcmlmeSB0ZW1wbGF0ZSB3YXJuaW5nLgoKMTk5OC0wNS0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoc2hhZG93X2xhYmVsKTogRG9uJ3QgdHJlYXQgZGVjbHMgYXMgaWRlbnRpZmllcnMuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBDbGVhciBzaGFkb3dlZF9sYWJlbHMuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogUmVzZXQgbGluZW5vIGFuZCBmaWxlbmFtZSBhZnRlciBjYWxsaW5nCglyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCB0cnkgdG8gdXNlIFRZUEVfT0JTVEFDSyBvbiBhbgoJZXJyb3JfbWFya19ub2RlLgoKMTk5OC0wNS0yNyAgS2V2aW4gQnVociAgPGJ1aHJAc3RhdC53aXNjLmVkdT4KCgkqIHBhcnNlLnkgKGJhc2VfY2xhc3MpOiBVc2UgaXNfYWdncl90eXBlLCBub3QgSVNfQUdHUl9UWVBFLgoKMTk5OC0wNS0yNiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEFjY2VwdCBUWVBFTkFNRV9UWVBFIG5vZGVzLgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IEhhbmRsZSBjYXNlcyB3aGVuIG5vbnR5cGUgdGVtcGxhdGUKCXBhcmFtZXRlcnMgYmVjb21lIGNsYXNzZXMgYWZ0ZXIgc3Vic3RpdHV0aW9uLgoKMTk5OC0wNS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBVc2UgY29tcHR5cGVzLCByYXRoZXIgdGhhbiA9PSB0byBjb21wYXJlCgl0eXBlcy4gIE1vZGlmeSBmb3IgbmV3IHJlcHJlc2VudGF0aW9uIG9mIHRlbXBsYXRlIGZyaWVuZHMuCgkobWFrZV9mcmllbmRfY2xhc3MpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IFVuZG8gMTk5OC0wNS0yMSBjaGFuZ2UuICBUd2Vhay4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERlYWwgd2l0aCB0ZW1wbGF0ZSBmcmllbmRzLgoKCSogZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxsIHRvCglleHBhbmRfbWFpbl9mdW5jdGlvbi4KCjE5OTgtMDUtMjYgIEJlbmphbWluIEtvc25payAgPGJrb3pAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IENoZWNrIGZvciBERUNMX0xBTkdfU1BFQ0lGSUMgYmVmb3JlCglERUNMX1VTRV9URU1QTEFURS4KCjE5OTgtMDUtMjYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogbGFuZ3VhZ2VfYXNfc3RyaW5nOiAgSGFuZGxlIGxhbmdfamF2YS4KCjE5OTgtMDUtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBjb3B5IHRoZSB0eXBlX2RlY2wuCgoxOTk4LTA1LTI2ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjbGFzcy5jIChwdXNoY2xhc3MpOiBBbHdheXMgc3RvcmUgVFlQRV9NQUlOX1ZBUklBTlQgaW4KCWN1cnJlbnRfY2xhc3NfdHlwZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFB1dCB0eXBlZGVmcyBvbiB0aGUgdHlwZSdzIG9ic3RhY2suCgoJKiBwYXJzZS55IChjb21wbGV4X2RpcmVjdF9ub3R5cGVfZGVjbGFyYXRvcik6IFVzZSAkMSB0byBhY2Nlc3MKCXNjb3BlIG9mIG5vdHlwZV9xdWFsaWZpZWRfaWQuCgoxOTk4LTA1LTI2ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAocGFyc2Vfb3B0aW9ucyx5eV9jdXIseXlfbGltKTogQWRkIGZvciBjcHBsaWIuCgkoaW5pdF9wYXJzZSk6IEluaXRpYWxpemUgY3BwbGliIGludGVyZmFjZS4KCgkqIE1ha2VmaWxlLmluIChDWFhfT0JKUyk6IE1ha2Ugc3VyZSBkZXBlbmRlbmNpZXMgbmV2ZXIgZW5kIHdpdGggYW4KCWVtcHR5IGNvbnRpbnVhdGlvbi4KCjE5OTgtMDUtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBBdm9pZCBjcmFzaGluZyBvbiBlcnJvbmVvdXMgaW5wdXQuCgoxOTk4LTA1LTI1ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKHB1c2hfbmFtZXNwYWNlKTogT25seSBwcm9kdWNlIG9uZSB1bmlxdWUgbmFtZSBmb3IKCWFub255bW91cyBuYW1lc3BhY2VzLgoJKGdldF91bmlxdWVfbmFtZSk6IFJlbW92ZS4KCjE5OTgtMDUtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjYWxsLmMgKHRvdXJuZXkpOiBEb24ndCBkbyBhbnkgZXh0cmEgY29tcGFyaXNvbnMuCgoJKiBkZWNsMi5jIChidWlsZF9hbm9uX3VuaW9uX3ZhcnMpOiBEb24ndCBjcmFzaCBvbiBlbXB0eSBzdWItdW5pb25zLgoKCSogY3AtdHJlZS5oIChwcm9jZXNzaW5nX3RlbXBsYXRlX3Bhcm1saXN0KTogRGVjbGFyZS4KCSogZGVjbC5jIChwdXNodGFnKTogRG9uJ3QgY2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgd2hlbiB3ZQoJc2hvdWxkbid0LgoJKiBwdC5jIChwcm9jZXNzaW5nX3RlbXBsYXRlX3Bhcm1saXN0KTogTmV3IHZhcmlhYmxlLgoJKFRNUExfQVJHU19IQVZFX01VTFRJUExFX0xFVkVMUyk6IE5ldyBtYWNyby4KCShjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzKTogVXNlIGl0LgoJKGFkZF90b190ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkoaW5uZXJtb3N0X2FyZ3MpOiBMaWtld2lzZS4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCShiZWdpbl90ZW1wbGF0ZV9wYXJtX2xpc3QpOiBVc2UgcHJvY2Vzc2luZ190ZW1wbGF0ZV9wYXJtbGlzdC4KCShlbmRfdGVtcGxhdGVfcGFybV9saXN0KTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKEFOT05fVU5JT05fVFlQRV9QKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIGl0LgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGluaXRpYWxpemluZ19jb250ZXh0KTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBnaXZlIGEgY3YtcXVhbGlmaWVkIHZlcnNpb24gb2YgYW4KCXVubmFtZWQgdHlwZSBhIHR5cGVkZWYgbmFtZSAiZm9yIGxpbmthZ2UgcHVycG9zZXMiLgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgbG9vayBhdAoJSURFTlRJRklFUl9DTEFTU19WQUxVRSB3aGVuIHRoZXJlJ3Mgbm8gY3VycmVudF9jbGFzc190eXBlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2ludCk6IEhhbmRsZSBlcnJvciBjYXNlcyBncmFjZWZ1bGx5LgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IEhhbmRsZSBzdGF0aWMgbWVtYmVyIHZhcmlhYmxlcwoJY29ycmVjdGx5LgoKCSogcHQuYyAodHN1YnN0KTogVXNlIHRoZSB0c3Vic3QnZCB0eXBlIHdoZW4gcHJvZHVjaW5nIG5ldwoJVEVNUExBVEVfUEFSTV9JTkRFWCBub2Rlcy4KCjE5OTgtMDUtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiB0cmVlLmMgKGNwX3RyZWVfZXF1YWwpOiBIYW5kbGUgcG9pbnRlcnMgdG8gbWVtYmVyIGZ1bmN0aW9ucy4KCgkqIGNhbGwuYyAobWF5YmVfaGFuZGxlX2ltcGxpY2l0X29iamVjdCk6IEhhbmRsZSBRVUFMX0NPTlZzLiAgTWFrZQoJc3VyZSB0aGUgdHlwZSBvZiB0aGUgUkVGX0JJTkQgaXMgYSByZWZlcmVuY2UgdHlwZS4KCShtYXliZV9oYW5kbGVfcmVmX2JpbmQsIGNvbXBhcmVfaWNzKTogUmVuYW1lIHJlZmVyZW5jZV90eXBlIHRvCgl0YXJnZXRfdHlwZSBmb3IgY2xhcml0eS4KCgkqIHBhcnNlLnkgKHhjb25kKTogTW92ZSBjYWxsIHRvIGNvbmRpdGlvbl9jb252ZXJzaW9uIC4uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2Zvcl9jb25kKTogSGVyZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoxOTk4LTA1LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hfbmFtZXNwYWNlKTogTmFtZXNwYWNlcyBoYXZlIHR5cGUgdm9pZC4KCSogdHlwZWNrMi5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBDb21wbGFpbiBhYm91dCBuYW1lc3BhY2UKCXVzZWQgYXMgZXhwcmVzc2lvbi4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCjE5OTgtMDUtMjQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBTdXBwb3J0IG5hbWVzcGFjZXMuCgoxOTk4LTA1LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmRlZjogQWRkIFNSQ0xPQy4KCSogY3AtdHJlZS5oOiBBZGQgc3RydWN0IHRyZWVfc3JjbG9jIGFuZCBhY2Nlc3NvciBtYWNyb3MuCgkqIHRyZWUuYyAoYnVpbGRfc3JjbG9jLCBidWlsZF9zcmNsb2NfaGVyZSk6IE5ldyBmbnMuCgkqIHB0LmMgKGFkZF9wZW5kaW5nX3RlbXBsYXRlKTogVXNlIGJ1aWxkX3NyY2xvY19oZXJlLgoJKHB1c2hfdGluc3RfbGV2ZWwpOiBVcGRhdGUgbGFzdF90ZW1wbGF0ZV9lcnJvcl90aWNrIGJlZm9yZSBlcnJvcmluZy4KCShpbnN0YW50aWF0ZV9kZWNsKTogUmVzdG9yZSBsaW5lbm8gYW5kIGlucHV0X2ZpbGVuYW1lIGJlZm9yZQoJY2FsbGluZyBhZGRfcGVuZGluZ190ZW1wbGF0ZS4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBTZXQgdXAgbGluZW5vIGFuZCBpbnB1dF9maWxlbmFtZSBmb3IKCXBlbmRpbmcgdGVtcGxhdGVzLgoKMTk5OC0wNS0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsYW5nX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTmV3IGZuLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IHByaW50X2Vycm9yX2Z1bmN0aW9uIHRvIHVzZSBpdC4KCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBEb24ndCBjYWxsIG1heWJlX3ByaW50X3RlbXBsYXRlX2NvbnRleHQgaGVyZS4KCgkqIGNhbGwuYyAobWF5YmVfaGFuZGxlX3JlZl9iaW5kKTogUHJvcGFnYXRlIElDU19VU0VSX0ZMQUcgYW5kCglJQ1NfQkFEX0ZMQUcuCgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBEb24ndCBzZXQgTE9PS1VQX05PX0NPTlZFUlNJT04gZm9yCgljb3B5LWluaXRpYWxpemF0aW9uLgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5KTogVXNlIGludF9maXRzX3R5cGVfcC4KCShidWlsZF92dGFibGUpOiBQYXNzIGEgc2lnbmVkIG9mZnNldCB0byBidWlsZF92dGFibGVfZW50cnkuCgkocHJlcGFyZV9mcmVzaF92dGFibGUsIG1vZGlmeV9vbmVfdnRhYmxlLCBmaXh1cF92dGFibGVfZGVsdGFzMSwKCXNldF9ydHRpX2VudHJ5KTogTGlrZXdpc2UuCgoxOTk4LTA1LTIyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogIEFkZCBjb21tZW50cyBkb2N1bWVudGluZyB3aGljaCBMQU5HX0ZMQUdTIGFyZSB1c2VkLgoJKENfVFlQRV9WQVJJQUJMRV9TSVpFLCBDX0RFQ0xfVkFSSUFCTEVfU0laRSk6ICBSZW1vdmVkLCBub3QgdXNlZC4KCjE5OTgtMDUtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBVc2UgZnByaW50ZiBpbnN0ZWFkIG9mIGNwX2Vycm9yLgoKCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogSnVzdCByZXR1cm4gYW4gZXJyb3JfbWFya19ub2RlLgoJQWxzbyBwcmludCB0aGUgZGVjbCB3ZSB3YW50IGluIGVycm9yIG1lc3NhZ2VzLiAgSWYgd2UgY29tcGxhaW4sCglyZXR1cm4gZXJyb3JfbWFya19ub2RlLgoJKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBTZXQgbGluZW5vIGFuZCBpbnB1dF9maWxlbmFtZSBzbwoJZXJyb3IgbWVzc2FnZXMgd2lsbCBiZSB1c2VmdWwuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBKdXN0IHJldHVybiBhbiBlcnJvcl9tYXJrX25vZGUuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBEb24ndCBtZXNzIHdpdGggYSByZXR1cm5lZAoJZXJyb3JfbWFya19ub2RlLgoKCSogcHQuYyAocHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IEFkZCBuZXcgYXJndW1lbnQuCgkobWF5YmVfcHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IE5ldyBmbi4KCShwdXNoX3RpbnN0X2xldmVsKTogSW5jcmVtZW50IHRpbnN0X2xldmVsX3RpY2suCgkocG9wX3RpbnN0X2xldmVsKTogTGlrZXdpc2UuCgkqIGVycmZuLmMgKGNwX3RoaW5nKTogQ2FsbCBtYXliZV9wcmludF90ZW1wbGF0ZV9jb250ZXh0LiAgVXNlCgl4cmVhbGxvYyBpbnN0ZWFkIG9mIHhtYWxsb2MuCgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3AsIENPTlZFUlRfRVhQUik6IFByb3BhZ2F0ZSBUUkVFX0NPTlNUQU5ULgoKMTk5OC0wNS0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IERvbid0IGNhbGwgcmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlCglpZiB0aGUgdGVtcGxhdGUgd2UgbG9va2VkIHVwIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2UgYWxyZWFkeQoJaGF2ZS4KClRodSBNYXkgMjEgMTE6NTQ6NDQgMTk5OCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmM6IChoYW5kbGVfc3lzdl9wcmFnbWEpOiBGSUxFKiBwYXJhbWV0ZXIgbm90IHVzZWQuCgkoY3BwX3JlYWRlcixwYXJzZV9pbik6IEFkZCBmb3IgY3BwbGliLgoJKGNoZWNrX25ld2xpbmUpOiBDYWxsIGhhbmRsZV9zeXN2X3ByYWdtYSB3aXRoIG5ldyBpbnRlcmZhY2UuCgkoY2hlY2tfbmV3bGluZSk6IENhbGwgR0VUX0RJUkVDVElWRV9MSU5FLCBub3QgZ2V0X2RpcmVjdGl2ZV9saW5lLgoKCSogaW5wdXQuYzogKHl5X2N1cix5eV9saW0seXlfZ2V0X3Rva2VuLEdFVEMpOiBBZGQgZm9yIGNwcGxpYi4KCShzdWJfZ2V0Y2gpOiBDYWxsIEdFVEMgZm9yIGNwcGxpYi4KCgkqIGNwLXRyZWUuaDogKGdldF9kaXJlY3RpdmVfbGluZSk6IERpZmZlcmVudCBwcm90b3R5cGUgZm9yIGNwcGxpYi4KCShHRVRfRElSRUNUSVZFX0xJTkUpOiBNYWNybyB3cmFwcGVyIGZvciBnZXRfZGlyZWN0aXZlX2xpbmUuCgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgQGV4dHJhX2N4eF9vYmpzQCBmb3IgY3BwbGliLgoKMTk5OC0wNS0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobWF5YmVfbWFrZV9vbmVfb25seSk6IE5ldyBmbi4KCShpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IFVzZSBpdC4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCSogcHQuYyAobWFya19kZWNsX2luc3RhbnRpYXRlZCk6IExpa2V3aXNlLgoKMTk5OC0wNS0yMSAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbDIuYyAoZmluZF9yZXByZXNlbnRhdGl2ZV9tZW1iZXIpOiBSZW5hbWUgdG8gLi4uCgkoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9hbm9uX3VuaW9uKTogRml4IHN0dXBpZGl0eSBvZiBwcmV2aW91cyBjaGFuZ2UuCgoxOTk4LTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBIYW5kbGUgZGVmaW5pdGlvbiBvZiBzcGVjaWFsaXphdGlvbiBpbgoJZnJpZW5kIGRlY2xhcmF0aW9uLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRml4IExPT0tVUF9FWFBSIGhhbmRsaW5nLgoKMTk5OC0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2xhc3MuYyAoZGVsZXRlX2R1cGxpY2F0ZV9maWVsZHNfMSk6IFVzZSBERUNMX0RFQ0xBUkVTX1RZUEVfUAoJdG8gbG9vayBmb3IgdHlwZSBkZWNsYXJhdGlvbnMuCgkoZmluaXNoX3N0cnVjdCk6IERlYWwgd2l0aCB0ZW1wbGF0ZXMgb24gdGhlIENMQVNTVFlQRV9UQUdTIGxpc3QuCgkqIGNwLXRyZWUuaCAoREVDTF9ERUNMQVJFU19UWVBFX1ApOiBOZXcgbWFjcm8uCgkoZmluaXNoX21lbWJlcl9jbGFzc190ZW1wbGF0ZSk6IERlY2xhcmUuCgkqIGRlY2wuYyAocHVzaHRhZyk6IFB1dCBtZW1iZXIgY2xhc3MgdGVtcGxhdGVzIG9uIHRoZQoJQ0xBU1NUWVBFX1RBR1MgbGlzdCwganVzdCBhcyBmb3Igb3JkaW5hcnkgbWVtYmVyIGNsYXNzZXMuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBVc2UgREVDTF9ERUNMQVJFU19UWVBFX1AuCgkobG9va3VwX3RhZyk6IExvb2sgZm9yIElERU5USUZJRVJfQ0xBU1NfVkFMVUVzLCBqdXN0IGFzIHdpdGgKCUlERU5USUZJRVJfTkFNRVNQQUNFX1ZBTFVFcy4KCSogcGFyc2UueSAoY29tcG9uZW50X2RlY2wpOiBNb3ZlIGNvZGUgdG8gLi4uCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbWVtYmVyX2NsYXNzX3RlbXBsYXRlKTogTmV3IGZ1bmN0aW9uLgoJRG9uJ3QgcHV0IG1lbWJlciBjbGFzcyB0ZW1wbGF0ZXMgb24gdGhlIGxpc3Qgb2YgY29tcG9uZW50cyBmb3IgYQoJY2xhc3MuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jIChjbGFzc3R5cGVfbWFuZ2xlZF9uYW1lKTogRG9uJ3QgdHJ5IERFQ0xfQ09OVEVYVCBvbiB0eXBlcy4KCUluIGZhY3QsIGRvbid0IHVzZSBERUNMX0NPTlRFWFQgYXQgYWxsIGhlcmUuCgoxOTk4LTA1LTIwICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAocmVjb3JkX3Vua25vd25fdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgaXQgZm9yIHRoZSB1bmtub3duIGFuZCBnbG9iYWwgdHlwZQoJbm9kZXMuCgoxOTk4LTA1LTIwICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBkZWNsMi5jIChmaW5kX3JlcHJlc2VudGF0aXZlX21lbWJlcik6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfYW5vbl91bmlvbik6IFVzZSBpdC4KCgkqIGNwLXRyZWUuaCAoTUFJTl9OQU1FX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9NQUlOX1ApOiBMaWt3aXNlLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQXZvaWQgY3Jhc2hpbmcgb24gcmVkZWZpbml0aW9ucyBvZiBgbWFpbicuCgkoZ3Jva2ZuZGVjbCk6IFVzZSB0aGUgbmV3IG1hY3Jvcy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGZpbnNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgpXZWQgTWF5IDIwIDAyOjE2OjAxIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzLCBkb19kdG9ycywKCWRvX2N0b3JzKTogU3BsaXQgb3V0IGZyb20uLi4KCShmaW5pc2hfZmlsZSk6IC4uLmhlcmUuCgpUdWUgTWF5IDE5IDIwOjM2OjIzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoaXNfb3ZlcmxvYWRlZF9mbik6IERvbid0IGFib3J0IG9uIHBsYWNlaG9sZGVycyBmcm9tCglwdXNoX2NsYXNzX2RlY2xzLgoKVHVlIE1heSAxOSAxNToxNjoyMiAxOTk4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaXNfZW1wdHlfY2xhc3MpOiBSZXR1cm4gMCBpZiBUWVBFIGlzIGFuIGVycm9yX21hcmtfbm9kZS4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBhbiBBUlJPV19FWFBSLgoKVHVlIE1heSAxOSAxNToxMzozOSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBkZWNsLmMgKHNhdmVhYmxlX29ic3RhY2spOiBEZWNsYXJlLgoJKHB1c2hkZWNsKTogQ29weSBUWVBFX0RFQ0xzIHRvIHRoZSBzYW1lIG9ic3RhY2sgYXMgdGhlIHR5cGUgdGhleQoJZGVjbGFyZSwgaWYgbmVjZXNzYXJ5LgoKVHVlIE1heSAxOSAxNDo1MDoyNyAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjYWxsLmMgKGNvbXBhcmVfcXVhbCk6IFJlbW92ZS4KCShpc19zdWJzZXEpOiBUd2Vhay4KCShpc19wcm9wZXJseV9kZXJpdmVkX2Zyb20pOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfaGFuZGxlX3JlZl9iaW5kKTogTGlrZXdpc2UuCgkobWF5YmVfaGFuZGxlX2ltcGxpY2l0X29iamVjdCk6IExpa2V3aXNlLgoJKGNvbXBhcmVfaWNzKTogTW9kaWZ5IHN1YnN0YW50aWFsbHkgdG8gYnJpbmcgaW50byBjb25mb3JtYW5jZSB3aXRoCgl0aGUgc3RhbmRhcmQuCgkqIGNwLXRyZWUuaCAoVFlQRV9QVFJNRU1GVU5DX09CSkVDVF9UWVBFKTogTmV3IG1hY3JvLgoJKGNvbXBfY3ZfcXVhbGlmaWNhdGlvbik6IERlY2xhcmUuCgkoY29tcF9jdl9xdWFsX3NpZ25hdHVyZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29tcF9jdl9xdWFsaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkoY29tcF9jdl9xdWFsX3NpZ25hdHVyZSk6IExpa2V3aXNlLgoKVHVlIE1heSAxOSAxMDowNTowMiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2Uubyk6IERlcGVuZCBvbiB0b3BsZXYuaC4KCgkqIGNsYXNzLmMgKHR5cGVjb2RlX3ApOiBSZW1vdmUgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uLgoKCSogY3AtdHJlZS5oIChjdXJyZW50bHlfb3Blbl9jbGFzcywgaXNfZW1wdHlfY2xhc3MsIG1lbWJlcl9wKToKCUFkZCBwcm90b3R5cGUuCgoJKiBkZWNsLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsX3RvcF9sZXZlbCk6IFJlbW92ZSBwcm90b3R5cGUgYW5kCglkZWZpbml0aW9uLgoKCSogZXJyZm4uYyAoY3BfZXJyb3IpOiBDYXN0IGZ1bmN0aW9uIHBvaW50ZXIgYGVycm9yJyB0byAoZXJyb3JmbiAqKQoJaW4gY2FsbCB0byBgY3BfdGhpbmcnLgoJKGNwX3dhcm5pbmcpOiBMaWtld2lzZSBmb3IgZnVuY3Rpb24gcG9pbnRlciBgd2FybmluZycuCgoJKiBleGNlcHQuYyAoZG9fZnVuY3Rpb25fY2FsbCk6IFJlbW92ZSBwcm90b3R5cGUgYW5kIGRlZmluaXRpb24uCgkoY2FsbF9laF9pbmZvKTogV3JhcCB2YXJpYWJsZSBgdDEnIGluIG1hY3JvIE5FV19FSF9NT0RFTC4KCgkqIG1ldGhvZC5jIChpc19qYXZhX3R5cGUpOiBBZGQgcHJvdG90eXBlIGFuZCBtYWtlIGl0IHN0YXRpYy4KCgkqIHBhcnNlLnk6IEluY2x1ZGUgdG9wbGV2LmguCgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgYXJnJy4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UgZm9yIGBzYXZlX3RpJy4KCgkqIHRyZWUuYyAocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBMaWtld2lzZSBmb3IgYGJhc2VfYmluZm9zJy4KClR1ZSBNYXkgMTkgMDI6NDM6MjUgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IEhhbmRsZSB0ZW1wbGF0ZV9pZHMuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBBZGQgZ2xvYmFsX3Njb3BlIHRlbXBsYXRlX2lkLgoKTW9uIE1heSAxOCAyMzoyMjo1MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChnZXRfc2VudHJ5KTogVXNlIGVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbi4KCURvbid0IGRlY2xhcmUgcGVybWFuZW50X29ic3RhY2suCgpNb24gTWF5IDE4IDEyOjI4OjQ0IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHBhcnNlLnkgKC5maW5pc2hfbmV3X3BsYWNlbWVudCk6IE5ldyBub24tdGVybWluYWwuCgkodW5hcnlfZXhwciwgbmV3X3R5cGVfaWQpOiBVc2UgaXQuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKTW9uIE1heSAxOCAxMjoyMDoyNyAxOTk4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogU2F5IHdoZXJlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uCglvZiB0aGUgdGVtcGxhdGUtcGFyYW1ldGVyJ3MgZGVmYXVsdCBhcmd1bWVudCBhcHBlYXJlZC4KCk1vbiBNYXkgMTggMDM6MDA6NTcgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBUd2VhayBlbXB0eSBjbGFzcyBoYW5kbGluZy4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogVXNlIGN1cnJlbnRseV9vcGVuX2NsYXNzLgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IGFib3J0IG9uIFRSRUVfTk9OTE9DQUxfRkxBRy4KCk1vbiBNYXkgMTggMDE6NDM6MDEgMTk5OCAgTWFydGluIHYuIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IERvbid0IGxvb2sgYXQgSURFTlRJRklFUl9MT0NBTF9WQUxVRQoJZm9yIGEgdHlwZSB1bmxlc3MgaXQgaXMgb25lLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogVXNlIE9WTF9DVVJSRU5UIGluIGVycm9yIG1lc3NhZ2UuCgpNb24gTWF5IDE4IDAxOjI0OjA4IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lLCBvYmpkaXIpOiBEZWZpbmUuCgoJKiBNYWtlZmlsZS5pbiAoQklTT04pOiBVc2UgYmlzb24gZnJvbSB0aGUgYnVpbGQgdHJlZSBpZiBpdCBleGlzdHMuCgkoRkxFWCk6IExpa2V3aXNlLgoKU3VuIE1heSAxNyAxNDo1MjowOCAxOTk4ICBNYXJ0aW4gdi4gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogdHlwZWNrLmMgKHR5cGVfdW5rbm93bl9wKTogUmV0dXJuIHRydWUgZm9yIFRSRUVfTElTVCBhbHNvLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IFVzZSBUWVBFX01BSU5fVkFSSUFOVCBvbiB0eXBlZGVmcy4KClN1biBNYXkgMTcgMTQ6NTE6NDEgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KClN1biBNYXkgMTcgMTM6NTM6NDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IENhbGwgc3VzcGVuZF9tb21lbnRhcnkgYXJvdW5kIHRoZSBjcmVhdGlvbgoJb2YgdmFsdWVzIHRoYXQgbXVzdCBiZSBzYXZlZCBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLgoJKiBwYXJzZS55ICguYnVpbGRfbmV3X3BsYWNlbWVudCk6IE5ldyBub24tdGVybWluYWwuCgkodW5hcnlfZXhwciwgbmV3X3BsYWNlbWVudCk6IFVzZSBpdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgpTdW4gTWF5IDE3IDEyOjMyOjA4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogVXNlIENBTk9OSUNBTF9UWVBFX1ZBUklBTlQgdG8gY29tcGFyZQoJb2xkIGFuZCBuZXcgdHlwZXMuCgoJKiBwdC5jICh0c3Vic3QpOiBNYWtlIHN1cmUgdGhhdCBCSU5GT19UWVBFIG9mIG5ldyBiaW5mb3MgaXMgdGhlCgljYW5vbmljYWwgdHlwZS4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3QgdXNlIElTX1NJR05BVFVSRSBvbiBhIG5hbWVzcGFjZS4KCkZyaSBNYXkgMTUgMjA6Mjg6MDAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogUmV2ZXJ0IHByb2JsZW0gY2hhbmdlLgoKCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IEZpeC4KCkZyaSBNYXkgMTUgMTU6MzQ6MDIgMTk5OCAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDbGVhbiB1cCwgYWRkIERFQ0xfREFUQV9BUkVBIGJpdHMuCgpGcmkgTWF5IDE1IDAwOjQ2OjA1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBCSU5GT19TSVpFLgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogVXNlICd0ZW0nLgoKVGh1IE1heSAxNCAxNjozMDo0NyAxOTk4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2M6IEluY2x1ZGUgZWgtY29tbW9uLmguCgkoc3RydWN0IGNwX2VoX2luZm8pOiBBZGQgZWhfaW5mbyBzdHJ1Y3Qgd2l0aCBORVdfRUhfTU9ERUwuCgkoX19jcGx1c190eXBlX21hdGNoZXIpOiBGaXJzdCBzdGFiIGF0IG5ldyBDKysgcnVudGltZSB0eXBlIG1hdGNoZXIuCgkoX19jcF9wdXNoX2V4Y2VwdGlvbik6IEluaXRpYWxpemUgZWhfaW5mbyBzdHJ1Y3QgYXMgd2VsbC4KCSogZXhjZXB0LmM6IFJlbW92ZSBsb2NhbCBzdHJ1Y3RzIGFuZCBpbmNsdWRlIGVoLWNvbW1vbi5oLgoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBTZXQgbGFuZ3VhZ2UgYW5kIHZlcnNpb24gY29kZXMuCgkoY2FsbF9laF9pbmZvKTogQWRkIHByZXNlbmNlIG9mIGVoX2luZm8gdG8gcnVudGltZSBkZXNjcmlwdGlvbiBvZgoJc3RydWN0IGNwX2VoX2luZm8uCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogQ2FsbCBzdGFydF9jYXRjaF9ibG9jaygpIGFuZCBlbmRfY2F0Y2hfYmxvY2soKS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF90cnlfYmxvY2spOiBDYWxsIHN0YXJ0X2NhdGNoX2Jsb2NrKCkgYW5kCgllbmRfY2F0Y2hfYmxvY2soKS4KCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogQ2FsbCBzdGFydF9jYXRjaF9ibG9jaygpIGFuZAoJZW5kX2NhdGNoX2Jsb2NrKCkuCgpUaHUgTWF5IDE0IDEyOjI3OjM0IDE5OTggIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAob3JpZ2luYWxfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShjb21tb25fdHlwZSk6IFVzZSBpdCB0byBnZXQgdGhlIERFQ0xfT1JJR0lOQUxfVFlQRSBmb3IgVDEgYW5kIFQyLAoJdG8gc2VlIGlmIHRoZXkncmUgYWN0dWFsbHkgdGhlIHNhbWUuCgkqIGNwLXRyZWUuaCAob3JpZ2luYWxfdHlwZSk6IERlY2xhcmUuCgpXZWQgTWF5IDEzIDEyOjU0OjMwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChsZXgubyk6IERlcGVuZCBvbiBvdXRwdXQuaC4KCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGNhbmQnLgoJKGFkZF9jb252X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmg6IEFkZCBwcm90b3R5cGUgZm9yIGB0eXBlc19vdmVybGFwX3AnLgoKCSogZGVjbC5jIChzaWduYWxfY2F0Y2gpOiBNYXJrIHBhcmFtZXRlciBgc2lnJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBkZWNsMi5jIChtZXJnZV9mdW5jdGlvbnMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBgdG1wJyBhbmQKCWB0ZW1wbicuCgoJKiBlcnJvci5jIChleHByX2FzX3N0cmluZyk6IE1hcmsgcGFyYW1ldGVyIGB2JyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkoY29kZV9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShsYW5ndWFnZV9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShwYXJtX2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKG9wX2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKGFzc29wX2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKGN2X2FzX3N0cmluZyk6IExpa2V3aXNlLgoKCSogbGV4LmM6IEluY2x1ZGUgb3V0cHV0LmguCgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uKTogQ2FzdCBmaXJzdCBhcmd1bWVudCBvZiBgYnplcm8nIHRvIGEgY2hhciouCgoJKiBzZWFyY2guYyAoZGZzX25vX292ZXJsYXBfeWV0KTogTWFyayBwYXJhbWV0ZXIgYHQnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiB0aW5mby5jYyAoX19jbGFzc190eXBlX2luZm86OmRjYXN0KTogQ2hhbmdlIHRoZSB0eXBlIG9mIHZhcmlhYmxlCglgaScgZnJvbSBpbnQgdG8gc2l6ZV90LgoKCSogdHlwZWNrLmMgKGxhbmd1YWdlX2x2YWx1ZV92YWxpZCk6IE1hcmsgcGFyYW1ldGVyIGBleHAnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgpUdWUgTWF5IDEyIDIxOjM3OjQ5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfc2ltcGxlX2RlY2wpOiBVc2UgREVDTF9DTEFTU19TQ09QRV9QIGFuZC9vcgoJREVDTF9OQU1FU1BBQ0VfU0NPUEVfUC4KCShsYW5nX2RlY2xfbmFtZSk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uLCB0c3Vic3QpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoZGVjbCwgcmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlLCBzdGFydF9kZWNsLAoJY3BfZmluaXNoX2RlY2wsIHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKGNvbXBhcmVfaWNzKTogVXNlIERFUklWRURfRlJPTV9QLgoKVHVlIE1heSAxMiAwNzoyNDoxOCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcC10cmVlLmggKENBTk9OSUNBTF9UWVBFX1ZBUklBTlQpOiBOZXcgbWFjcm8uCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX25hbWUpOiBVc2UgaXQuCgkoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogTGlrZXdpc2UuCgoJKiBlcnJvci5jIChkdW1wX3NpbXBsZV9kZWNsKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20gLi4uCgkoZHVtcF9kZWNsKTogVXNlIGl0LgoKTW9uIE1heSAxMSAxMTozODowNyAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdHJlZS5jIChsYW5nX3ByaW50X3hub2RlKTogQWRkIG1pc3NpbmcgYGJyZWFrJy4KCgkqIHB0LmMgKHRzdWJzdCk6IFJlbW92ZSBkdXBsaWNhdGUgY2hlY2sgZm9yIElERU5USUZJRVJfTk9ERS4KCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZSk6IEFkanVzdCBmb3IgY2hhbmdlcyB0bwoJZm5fdHlwZV91bmlmaWNhdGlvbi4KCShhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBMaWtld2lzZS4KCShhZGRfdGVtcGxhdGVfY29udl9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9vYmplY3RfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAodW5pZmljYXRpb25fa2luZF90KTogTmV3IHR5cGUuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IEFkanVzdCBwcm90b3R5cGUuCgkodHlwZV91bmlmaWNhaXRvbik6IExpa2V3aXNlLgoJKiBwdC5jIChVTklGWV9BTExPV19OT05FKTogTmV3IG1hY3JvLgoJKFVOSUZZX0FMTE9XX01PUkVfQ1ZfUVVBTCk6IExpa2V3aXNlLgoJKFVOSUZZX0FMTE9XX0xFU1NfQ1ZfUVVBTCk6IExpa2V3aXNlLgoJKFVOSUZZX0FMTE9XX0RFUklWRUQpOiBMaWtld2lzZS4KCSh1bmlmeSk6IENoYW5nZSBwcm90b3R5cGUuCgkobWF5YmVfYWRqdXN0X3R5cGVzX2Zvcl9kZWR1Y3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfY3ZfcXVhbHNfZm9yX3VuaWZ5KTogTGlrZXdpc2UuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQWRqdXN0LgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogTGlrZXdpc2UuICBVc2UKCW1heWJlX2FkanVzdF90eXBlc19mb3JfZGVkdWN0aW9uLiAgRml4IG1pc2hhbmRsaW5nIG9mCgliYWNrLXVuaWZpY2F0aW9uIG9mIHRlbXBsYXRlIGZ1bmN0aW9ucyBwYXNzZWQgYXMgYXJndW1lbnRzLiAgUGFzcwoJYXBwcm9wcmlhdGUgY29tYmluYXRpb24gb2YgVU5JRllfQUxMT1dfKiB0byB1bmlmeS4KCSh1bmlmeSk6IFJlbW92ZSB1bnVzZWQgTlRQQVJNUyBwYXJhbWV0ZXIuICBVc2UKCWNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeS4gIFJlbW92ZSBib2d1cyBjb2RlIHRoYXQgYWxsb3dlZAoJdG9vLWdlbmVyb3VzIHVuaWZpY2F0aW9uIGluIG9yZGVyIHRvIGFkaGVyZSBtb3JlIGNsb3NlbHkgdG8gc3RhbmRhcmQuCgkoZ2V0X2JpbmRpbmdzX3JlYWwpOiBBZGp1c3QuCgkoZ2V0X2NsYXNzX2JpbmRpbmdzKTogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IE9ubHkgdXNlIHRoZSBpbm5lcm1vc3QKCXRlbXBsYXRlIGFyZ3VtZW50cyB3aGVuIG1hbmdsaW5nLgoJKiBwdC5jICh0c3Vic3RfdGVtcGxhdGVfYXJndW1lbnRfdmVjdG9yKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBEZWFsIHdpdGggdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUKCWV4dHJhX2FyZ3MgY29udGFpbiBtb3JlIHRoYW4gb25lIGxldmVsIG9mIGFyZ3VtZW50cy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEZWFsIHdpdGggbWVtYmVyIHRlbXBsYXRlIGNsYXNzZXMsIHdoaWNoCgltYXkgaGF2ZSBtb3JlIHRoYW4gb25lIGxldmVsIG9mIGFyZ3VtZW50cy4KCSh0c3Vic3QpOiBEb24ndCB0c2J1c3QgaW50byB0aGUgVFJFRV9UWVBFIG9mIGFuIElERU5USUZJRVJfTk9ERS4KCUltcHJvdmUgaGFuZGxpbmcgb2YgbWVtYmVyIHRlbXBsYXRlIGNsYXNzZXMuICBVc2UKCURFQ0xfUFJJTUFSWV9URU1QTEFURSBpbnN0ZWFkIG9mIGlubGluZSBleHBhbnNpb24uICBVc2UKCXRzdWJzdF90ZW1wbGF0ZV9hcmd1bWVudF92ZWN0b3Igd2hlcmUgYXBwcm9wcmlhdGUuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShpbnN0YW50aWF0ZV9kZWNsKTogSGVyZS4KCgkqIGxleC5jICh5eXByaW50KTogUmVtb3ZlIFRZUEVOQU1FX0VMTElQU0lTLgoJKiBwYXJzZS5oOiBSZWdlbmVyYXRlZC4KCSogcGFyc2UuYzogUmVhbGx5IHJlZ2VuZXJhdGVkLgoKCSogY3AtdHJlZS5oIChmaW5pc2hfdW5hcnlfb3BfZXhwcik6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfaWRfZXhwcik6IExpa2V3aXNlLgoJKGJlZ2luX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZmluaXNoX3RyYW5zbGF0aW9uX3VuaXQpOiBMaWtld2lzZS4KCShmaW5pc2hfcGFybWxpc3QpOiBMaWtld2lzZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfZGVmYXVsdF9hcmdzKTogTGlrZXdpc2UuCgkoZmluaXNoX2lubGluZV9kZWZpbml0aW9ucyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChHQ0NfQVNNX0tFWVdPUkQpOiBSZW1vdmUuCgkoVFlQRU5BTUVfRUxMSVBTSVMpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCglVc2UgbmV3IGZ1bmN0aW9ucyBpbiBzZW1hbnRpY3MuYyBpbiB0aGUgYWN0aW9ucyBmb3IgbWFueSBydWxlcy4KCSogZ3h4LmdwZXJmIChHQ0NfQVNNX0tFWVdPUkQpOiBKdXN0IHVzZSBBU01fS0VZV09SRC4KCSogaGFzaC5oOiBSZWdlbmVyYXRlZC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9leHByX3N0bXQpOiBBbGxvdyBOVUxMIGV4cHIuCgkoZmluaXNoX3VuYXJ5X29wX2V4cHIpOiBOZXcgZnVuY3Rpb24sIGNvbnRhaW5pbmcKCWNvZGUgcHJldmlvdXNseSBpbiBwYXJzZS55LgoJKGZpbmlzaF9pZF9leHByKTogTGlrZXdpc2UuCgkoYmVnaW5fbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKGZpbmlzaF9uZXdfcGxhY2VtZW50KTogTGlrZXdpc2UuCgkoZmluaXNoX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShmaW5pc2hfdHJhbnNsYXRpb25fdW5pdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9wYXJtbGlzdCk6IExpa2V3aXNlLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9kZWZhdWx0X2FyZ3MpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5saW5lX2RlZmluaXRpb25zKTogTGlrZXdpc2UuCgpTdW4gTWF5IDEwIDIzOjQzOjEzIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBEb24ndCBkZWNheSBhcnJheXMgYW5kIGZ1bmN0aW9ucyB0bwoJcG9pbnRlciB0eXBlIHdoZW4gY29udmVydGluZyB0byBhIGNsYXNzIHR5cGUuCgpTdW4gTWF5IDEwIDIyOjUzOjU2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9OQU1FU1BBQ0VfU0NPUEVfUCk6IE5ldyBtYWNyby4KCShERUNMX0NMQVNTX1NDT1BFX1ApOiBMaWtld2lzZS4KClN1biBNYXkgMTAgMjI6NDg6MjIgMTk5OCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogVXNlIE9WTF9DVVJSRU5UIG9uIFRSRUVfVkVDX0VMVC4KCSogZGVjbDIuYyAoY29uc3RydWN0b3JfbmFtZV9mdWxsKTogTGlrZXdpc2UuCgpTdW4gTWF5IDEwIDIyOjQ4OjEyIDE5OTggIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIHRyZWUuYyAobWFwY2FyKTogQWRkIE9WRVJMT0FEIHN1cHBvcnQuCgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IFdlIG11c3QgdXNlIGJhc2V0eXBlX3BhdGggYmVmb3JlIHdlCglkZXN0cm95IGl0IHdpdGggYSBjYWxsIHRvIGNvbnZlcnRfcG9pbnRlcl90by4KClNhdCBNYXkgIDkgMTQ6NDQ6MzcgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoY3VycmVudGx5X29wZW5fY2xhc3MpOiBOZXcgZm4uCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFVzZSBpdC4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoKRnJpIE1heSAgOCAyMzozMjo0MiAxOTk4ICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNwLXRyZWUuZGVmIChPVkVSTE9BRCk6IE5ldyBub2RlLgoJKiBjcC10cmVlLmggKEJJTkRJTkdfVFlQRSwgU0VUX0lERU5USUZJRVJfR0xPQkFMX1ZBTFVFLAoJU0VUX0lERU5USUZJRVJfTkFNRVNQQUNFX1ZBTFVFKTogRGVmaW5lLgoJKE5BTUVTUEFDRV9CSU5ESU5HKTogUmVtb3ZlLgoJKElERU5USUZJRVJfR0xPQkFMX1ZBTFVFLCBJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSk6IFVzZQoJbmFtZXNwYWNlX2JpbmRpbmcuCgkoT1ZMX0ZVTkNUSU9OLCBPVkxfQ0hBSU4sIE9WTF9DVVJSRU5ULCBPVkxfTkVYVCwgT1ZMX1VTRUQpOgoJRGVmaW5lLgoJKHRyZWVfb3ZlcmxvYWQpOiBOZXcgc3RydWN0LgoJKElERU5USUZJRVJfVFlQRV9WQUxVRSk6IFVzZSBpZGVudGlmaWVyX3R5cGVfdmFsdWUuCgkoUkVBTF9JREVOVElGSUVSX1RZUEVfVkFMVUUpOiBEZWZpbmUuCgkoSURFTlRJRklFUl9IQVNfVFlQRV9WQUxVRSk6IFVzZSBJREVOVElGSUVSX1RZUEVfVkFMVUUuCgkobGFuZ19kZWNsX2ZsYWdzKTogUmVtb3ZlIGluX25hbWVzcGFjZS4KCShsYW5nX2RlY2wpOiBSZW1vdmUgY2hhaW4uCgkoREVDTF9DSEFJTiwgREVDTF9OQU1FU1BBQ0UpOiBSZW1vdmUuCgkoZmxhZ19ob25vcl9zdGQpOiBEZWNsYXJlIGV4dGVybi4KCShpZGVudGlmaWVyX3R5cGVfdmFsdWUsIHB1c2hkZWNsX25hbWVzcGFjZV9sZXZlbCwgcHVzaF91c2luZ19kZWNsLAoJbmFtZXNwYWNlX2JpbmRpbmcsIHNldF9uYW1lc3BhY2VfYmluZGluZywKCWxvb2t1cF9mdW5jdGlvbl9ub25jbGFzcywgY2F0X25hbWVzcGFjZV9sZXZlbHMsCglzZXRfZGVjbF9uYW1lc3BhY2UsIGxvb2t1cF9hcmdfZGVwZW5kZW50LCBiaW5kaW5nX2luaXQsIG92bF9jb25zLAoJc2NyYXRjaF9vdmxfY29ucywgb3ZsX21lbWJlciwgYnVpbGRfb3ZlcmxvYWQpOiBEZWNsYXJlLgoJKGRlY2xfbGlzdF9sZW5ndGgsIGdldF9uYW1lc3BhY2VfaWQsIGN1cnJlbnRfbmFtZXNwYWNlX2lkLAoJb3ZlcmxvYWRlZF9nbG9iYWxzX3ApOiBSZW1vdmUuCgkobG9va3VwX3VzaW5nX25hbWVzcGFjZSwgcXVhbGlmaWVkX2xvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBDaGFuZ2UKCXJldHVybiB0eXBlLgoJKHB1c2hfc2NyYXRjaF9vYnN0YWNrKTogTmV3IG1hY3JvLgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBTcGVjaWFsLWNhc2UgdHlwZSBvZiBPVkVSTE9BRCBub2RlLgoJKGJ1aWxkX3VzZXJfY29udmVyc2lvbnNfMSk6IEl0ZXJhdGUgdXNpbmcgT1ZMX05FWFQgZm9yIGN0b3JzLAoJY29udnMsIGZucy4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IEl0ZXJhdGUgdXNpbmcgT1ZMX0NIQUlOLgoJUHJpbnQgREVDTF9OQU1FIGluIHdoZW4gcmVwb3J0aW5nIGFtYmlndWl0aWVzLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogSXRlcmF0ZSB1c2luZyBPVkxfTkVYVCBmb3IgZm5zLCBjb252cy4KCShidWlsZF9uZXdfb3ApOiBDYWxsIGxvb2t1cF9mdW5jdGlvbl9ub25jbGFzcy4KCUl0ZXJhdGUgdXNpbmcgT1ZMX05FWFQuCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBDaGFuZ2UgZGV0ZWN0aW9uIG9mIG1lbWJlcnMuCglEbyBub3Qgd3JhcCBUUkVFX0xJU1QgYXJvdW5kIGZpZWxkcyBhbmQgc2luZ2xlIGdsb2JhbCBmdW5jdGlvbnMuCgkoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3QgcHVzaCBhIGNsYXNzIGxldmVsIGlmIHRoZSBjb250ZXh0IGlzIGEKCW5hbWVzcGFjZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBJdGVyYXRlIHVzaW5nIE9WTF9ORVhULgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQ2hhaW4gb3ZlcmxvYWRlZCBtZW1iZXJzIHVzaW5nCglidWlsZF9vdmVybG9hZC4gIFJlbW92ZSBjb3B5aW5nIG9mIG1ldGhvZC4KCShncm93X21ldGhvZCk6IFdoZW4gaXRlcmF0aW5nIHRocm91Z2ggdGhlIG9ic3RhY2ssIGV4cGVjdCBPVkVSTE9BRAoJbm9kZXMuICBDaGFpbiBvdmVybG9hZCBtZW1iZXJzLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IENoYWluIG92ZXJsb2FkIG1lbWJlcnMuICBVbnBhY2sgT1ZFUkxPQUQKCW5vZGVzIGluIGNhbGwgdG8gZ2V0X2Jhc2VsaW5rcy4KCShkdXBsaWNhdGVfdGFnX2Vycm9yKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzIHdoZW4gdW5jaGFpbmluZy4KCShmaW5pc2hfc3RydWN0XzEpOiBJdGVyYXRlIG92ZXIgY3RvciB1c2luZyBPVkxfTkVYVC4gIEhhbmRsZQoJZmRlY2xzIHRoYXQgYXJlIE9WRVJMT0FEIG5vZGVzLgoJKHZhbGlkYXRlX2xocyk6IE5ldyBmdW5jdGlvbi4KCShpbnN0YW50aWF0ZV90eXBlKTogRG8gbm90IGNvcHkgT1ZFUkxPQUQgbm9kZXMuICBSZW1vdmUgZGVhZAoJY29kZS4gIFVzZSBERUNMX05BTUUgaW4gZXJyb3IgbWVzc2FnZXMuICBTcGxpdCBjb2RlIGJldHdlZW4gZ2xvYmFsCglhbmQgbWVtYmVyIGZ1bmN0aW9uIHByb2Nlc3NpbmcuCgkqIGRlY2wuYyAoZ2xvYmFsX3R5cGVfbm9kZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoaW5fc3RkKTogTmV3IGdsb2JhbC4KCShzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IE5ldyBmaWVsZCB1c2luZ3MuCgkocmVzdW1lX2JpbmRpbmdfbGV2ZWwpOiBBc3NlcnQgdGhhdCB3ZSBhcmUgbm90IGluIGEgY2xhc3MuCgkodG9wbGV2ZWxfYmluZGluZ3NfcCk6IEp1c3QgY2hlY2sgZm9yIG5hbWVzcGFjZV9wIG9yCglwc2V1ZG9fZ2xvYmFsLgoJKHJlc3VtZV9sZXZlbCk6IFJlbW92ZS4KCShmaW5kX2JpbmRpbmcpOiBOZXcgZnVuY3Rpb24uCgkoYmluZGluZ19mb3JfbmFtZSk6IENhbGwgaXQuCgkobmFtZXNwYWNlX2JpbmRpbmcsIHNldF9uYW1lc3BhY2VfYmluZGluZyk6IE5ldyBmdW5jdGlvbnMuCgkocHVzaF9uYW1lc3BhY2UpOiBBc3NvY2lhdGUgYmluZGluZyBsZXZlbCB3aXRoIG5ldyBuYW1lc3BhY2UsCglyZXN1bWVfYmluZGluZ19sZXZlbCBmb3IgZXhpc3RpbmcgbmFtZXNwYWNlLiAgUmVtb3ZlIG9sZCBjb2RlLgoJRmFrZSBzdGQgYnkgY291bnRpbmcuCgkoc3RvcmVfYmluZGluZ3MpOiBVc2UgUkVBTF9JREVOVElGSUVSX1RZUEVfVkFMVUUuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBTYXZlIGN1cnJlbnQgbmFtZXNwYWNlLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgc2F2ZWQgbmFtZXNwYWNlLgoJKHBvcF9uYW1lc3BhY2UpOiBDYWxsIHN1c3BlbmRfYmluZGluZ19sZXZlbC4gIFJlbW92ZSBvbGQgY29kZS4KCShjYXRfbmFtZXNwYWNlX2xldmVscyk6IE5ldyBmdW5jdGlvbi4KCShzZXRfaWRlbnRpZmllcl90eXBlX3ZhbHVlX3dpdGhfc2NvcGUpOiBGb3IgbmFtZXNwYWNlIGJpbmRpbmdzLAoJc2V0IEJJTkRJTkdfVFlQRSwgYW5kIHVzZSBnbG9iYWxfdHlwZV9ub2RlLgoJVXNlIFJFQUxfSURFTlRJRklFUl9UWVBFX1ZBTFVFIG90aGVyd2lzZS4KCShpZGVudGlmaWVyX3R5cGVfdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkocHVzaHRhZyk6IElmIG5vIGNvbnRleHQsIHVzZSBjdXJyZW50X25hbWVzcGFjZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBwcm9jZXNzIERFQ0xfQ0hBSU4uCgkocHVzaGRlY2wpOiBTZXQgREVDTF9DT05URVhUIHRvIGN1cnJlbnRfbmFtZXNwYWNlLCBpZiBpdCBpcyBub3QKCWFscmVhZHkgc2V0LiAgTmV2ZXIgcmVzZXQgaXQgdG8gTlVMTF9UUkVFLiAgTG9va3VwIGdsb2JhbCB2YXJpYWJsZXMKCWluIHRoZWlyIG5hbWVzcGFjZS4gIFB1c2ggb3ZlcmxvYWRlZCB0ZW1wbGF0ZXMgaWYgdGhleSBhcmUgb24KCW5hbWVzcGFjZSBsZXZlbC4KCShwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgkocHVzaGRlY2xfdG9wX2xldmVsKTogSW1wbGVtZW50IHVzaW5nIHB1c2hkZWNsX25hbWVzcGFjZV9sZXZlbC4KCShwdXNoZGVjbF91c2luZ19kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKG92ZXJsb2FkZWRfZ2xvYmFsc19wKTogUmVtb3ZlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogQ3JlYXRlIE9WRVJMT0FEIG5vZGVzLCBhbmQgaXRlcmF0ZSB0aHJvdWdoCgl0aGVtLiAgVXNlIG5hbWVzcGFjZV9iaW5kaW5nIGFuZCBzZXRfbmFtZXNwYWNlX3ZhbHVlLgoJKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IENvbXBsYWluIGlmIHRoZSBkZWNsYXJhdGlvbnMgY29tZQoJZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KCShsb29rdXBfdGFnKTogT24gbmFtZXNwYWNlIGxldmVsLCBsb29rIGluIHRoZSBCSU5ESU5HX1RZUEUuCgkobG9va3VwX25hbWVzcGFjZV9uYW1lKTogUGFzcyB0cmVlX2JpbmRpbmdzIGZyb20gc3RhY2suICBSZW1vdmUKCW9sZCBjb2RlLgoJKHNlbGVjdF9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBDYWxsIGl0IGZvciBxdWFsaWZpZWQgYW5kIHVucXVhbGlmaWVkIGxvb2t1cC4KCVBhc3MgdHJlZV9iaW5kaW5ncyBmcm9tIHRoZSBzdGFjay4KCUlmIHByZWZlcl90eXBlIGlzIDEsIGFsc28gYWNjZXB0IG5hbWVzcGFjZXMuCgkobG9va3VwX2Z1bmN0aW9uX25vbmNsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IHRoZSBiaW5kaW5nIGxldmVsIG9mIHRoZSBnbG9iYWwKCW5hbWVzcGFjZSB0byBnbG9iYWxfYmluZGluZ19sZXZlbC4KCUJ1aWxkIGEgcHJvcGVyIHR5cGUgbGlzdCBmb3IgX19idWlsdGluX2FwcGx5LgoJSW5pdGlhbGl6ZSBzdGRfbm9kZSB0byAiZmFrZSBzdGQiIGlmIGZsYWdfaG9ub3Jfc3RkIGlzIHNldC4KCUluaXRpYWxpemUgZ2xvYmFsX3R5cGVfbm9kZS4KCUFsbG9jYXRlZCBiYWRfYWxsb2MgaW4gbmFtZXNwYWNlIHN0ZCBpZiBmbGFnX2hvbm9yX3N0ZC4KCShkZWZpbmVfZnVuY3Rpb24pOiBTZXQgdGhlIERFQ0xfQ09OVEVYVCB0byB0aGUgY3VycmVudF9uYW1lc3BhY2UuCgkoc3RhcnRfZGVjbCk6IEEgbmFtZXNwYWNlIGlzIG5vdCBjb25zaWRlcmVkIGFzIGEgY29udGV4dCBoZXJlLiAgSWYKCXRoZSBERUNMX0NPTlRFWFQgaXMgYSBuYW1lc3BhY2UsIHB1c2ggdGhlIGRlY2wuCgkoY3BfZmluaXNoX2RlY2wpOiBDaGVjayBmb3IgbmFtZXNwYWNlcyB1c2VkIGFzIGluaXRpYWxpemVycy4KCShncm9rZm5kZWNsKTogQWRkIG5hbWVzcGFjZSBwYXJhbWV0ZXIuICBSZW1vdmUgcHJvY2Vzc2luZyBvZgoJREVDTF9DSEFJTi4KCShncm9rdmFyZGVjbCk6IEFkZCBuYW1lc3BhY2UgcGFyYW1ldGVyLgoJKGdyb2tkZWNsYXJhdG9yKTogUHJvY2VzcyBTQ09QRXMgdGhhdCBhcmUgbmFtZXNwYWNlcy4gIEZvcgoJbWFuZ2xpbmcsIHRlbXBvcmFyaWx5IHNldCB0aGUgREVDTF9DT05URVhUIG9uIGFub255bW91cyBzdHJ1Y3RzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogQ2hlY2sgZm9yIGNvbnRleHRzIHRoYXQgYXJlIG5hbWVzcGFjZXMuCglTZXQgY29udGV4dCBmb3IgZGVjbGFyYXRpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiBwdXNoZWQuCgkoc3RvcmVfcGFybV9kZWNscyk6IENoZWNrIGZvciA6Om1haW4gb25seS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShzdGFydF9tZXRob2QpOiBDaGVjayBmb3IgY29udGV4dHMgdGhhdCBhcmUgbmFtZXNwYWNlcy4KCShzdGFydF9tZXRob2QpOiBSZW1vdmUgREVDTF9DSEFJTiBwcm9jZXNzaW5nLgoJKiBkZWNsMi5jIChmbGFnX2hvbm9yX3N0ZCk6IERlY2xhcmUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogU2V0IGl0IGlmIC1maG9ub3Itc3RkIG9yIC1mbmV3LWFiaSBpcyBnaXZlbi4KCShkZWNsX25hbWVzcGFjZV9saXN0KTogTmV3IHN0YXRpYyBnbG9iYWwuCgkoZ3Jva194X2NvbXBvbmVudHMpOiBJZ25vcmUgbmFtZXNwYWNlcyBhcyB0eXBlIGNvbnRleHRzLgoJKGNoZWNrX2NsYXNzZm4pOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMuCgkoZ3Jva2ZpZWxkKTogUmVtb3ZlIERFQ0xfQ0hBSU4gcHJvY2Vzc2luZy4KCShmaW5pc2hfZmlsZSk6IENhbGwgY2F0X25hbWVzcGFjZV9sZXZlbHMuCgkobWVyZ2VfZnVuY3Rpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGFtYmlndW91c19kZWNsKTogUmV3cml0ZS4KCShsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogUHJvZHVjZSB0cmVlX2JpbmRpbmdzLgoJKHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgkoc2V0X2RlY2xfbmFtZXNwYWNlLCBkZWNsX25hbWVzcGFjZSwgY3VycmVudF9kZWNsX25hbWVzcGFjZSwKCXB1c2hfZGVjbF9uYW1lc3BhY2UsIHBvcF9kZWNsX25hbWVzcGFjZSk6IE5ldyBmdW5jdGlvbnMuCgkoYXJnX2xvb2t1cCk6IE5ldyBzdHJ1Y3QuCgkoYWRkX2Z1bmN0aW9uLCBhcmdfYXNzb2NfbmFtZXNwYWNlLCBhcmdfYXNzb2NfY2xhc3MsCglhcmdfYXNzb2NfdHlwZSwgYXJnX2Fzc29jX2FyZ3MsIGFyZ19hc3NvYywgbG9va3VwX2FyZ19kZXBlbmRlbnQpOgoJTmV3IGZ1bmN0aW9ucy4KCShnZXRfbmFtZXNwYWNlX2lkLCBjdXJyZW50X25hbWVzcGFjZV9pZCk6IFJlbW92ZS4KCShkb190b3BsZXZlbF91c2luZ19kZWNsKTogUmV3cml0ZS4KCShkb19jbGFzc191c2luZ19kZWNsKTogQ29tcGxhaW4gYWJvdXQgbmFtZXNwYWNlIHF1YWxpZmllcnMuCgkoZG9fdXNpbmdfZGlyZWN0aXZlKTogU29ycnkgaWYgbm90IG9uIG5hbWVzcGFjZSBsZXZlbC4gIENvbXBsYWluCglhYm91dCB1bmtub3duIG5hbWVzcGFjZXMuCgkqIGVycm9yLmMgKGR1bXBfYWdncl90eXBlKTogQ2hlY2sgZm9yIG5hbWVzcGFjZSBjb250ZXh0cy4KCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBQdXNoIHRlcm1pbmF0ZSBpbnRvIHN0ZC4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IEEgbmFtZXNwYWNlIGlzIG5vdCBhIGNvbnRleHQsIGhlcmUuCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogUmVtb3ZlIERFQ0xfQ0hBSU4gcHJvY2Vzc2luZy4KCShidWlsZF9vZmZzZXRfcmVmKTogUHJvY2VzcyBPVkVSTE9BRCBub2Rlcy4KCSogbGFuZy1zcGVjcy5oIChfX0hPTk9SX1NURCk6IERlZmluZSBpZiAtZm5ldy1hYmkgb3IgLWZob25vci1zdGQuCgkqIGxleC5jIChpZGVudGlmaWVyX3R5cGUpOiBMb29wIHVzaW5nIE9WTF9DSEFJTi4KCShzZWVfdHlwZW5hbWUpOiBTZXQgbG9va2luZ19mb3JfdHlwZW5hbWUgdG8gMi4KCShyZWFsX3l5bGV4KTogTGlrZXdpc2UuCgkoZG9faWRlbnRpZmllcik6IEV4cGVjdCBPVkVSTE9BRCBub2RlcyBpbnN0ZWFkIG9mIFRSRUVfTElTVHMuCgkoZG9fc2NvcGVkX2lkKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJQ2hhbmdlIGNhbGxpbmcgY29udmVudGlvbiBmb3IgcXVhbGlmaWVkX2xvb2t1cF91c2luZ19uYW1lc3BhY2UuCgkoYnVpbGRfbGFuZ19kZWNsKTogRG9uJ3Qgc2V0IGluX25hbWVzcGFjZSBhbnltb3JlLgoJKiBtZXRob2QuYyAodHlwZXZlY19zaXplKTogTmV3IGdsb2JhbC4KCShidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IFJldHVybiBpZiBnbG9iYWxfbmFtZXNwYWNlLgoJT3RoZXJ3aXNlLCBhbHdheXMgZXhwZWN0IGEgZGVjbGFyYXRpb24gY29udGV4dC4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IExpa2V3aXNlLgoJTWFrZSBzdXJlIHdlIGRvbid0IHdyaXRlIGJleW9uZCB0eXBldmVjX3NpemUuCgkoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogTGlrZXdpc2UuCglBbGxvY2F0ZSBvbmUgZXh0cmEgc2xvdCBmb3IgdGhlIG5hbWVzcGFjZS4KCShoYWNrX2lkZW50aWZpZXIpOiBNYXJrIGNvZGUgZGVhZC4KCVByb2Nlc3MgT1ZFUkxPQUQgYW5kIE5BTUVTUEFDRV9ERUNMIG5vZGVzLgoJKiBwYXJzZS55IChwcm9ncmFtKTogUG9wIG5hbWVzcGFjZXMgdW50aWwgaW4gZ2xvYmFsIG5hbWVzcGFjZS4KCShleHRkZWYpOiBJbiBhIHVzaW5nLWRlY2xhcmF0aW9uLCBkb24ndCBkaXNjYXJkIHRoZSBpZGVudGlmaWVyIGlmCgl0aGVyZSBpcyBubyBkZWNsYXJhdGlvbi4KCShsZWZ0X2N1cmx5KTogSWdub3JlIHR5cGUgY29udGV4dHMgd2hpY2ggYXJlIG5hbWVzcGFjZXMuCgkodHlwZW5hbWVfc3ViMik6IFVzZSBJREVOVElGSUVSX1RZUEVfVkFMVUUgdG8gcmV0cmlldmUgdGhlIHR5cGUKCXVzZWQgYXMgc2NvcGUuCgkqIHB0LmMgKHRlbXBsYXRlX2NsYXNzX2RlcHRoKTogRXhwZWN0IHR5cGVzIHRvIGJlIG5hbWVzcGFjZXMuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogU2ltcGxpZnkgYnkgZXhwZWN0aW5nIE9WRVJMT0FEIG5vZGVzLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IFB1c2ggaW50byBuYW1lc3BhY2UgbGV2ZWwuCglSZXNldCBjdHggaWYgaXQgaXMgYSBuYW1lc3BhY2UuCglTZXQgREVDTF9DT05URVhUIHRvIGN1cnJlbnRfbmFtZXNwYWNlIGlmIG5vdCBzZXQgYWxyZWFkeS4KCUlnbm9yZSByZWFsIGNvbnRleHRzIHRoYXQgYXJlIG5hbWVzcGFjZXMuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogU2tpcCBnbG9iYWxfbmFtZXNwYWNlLgoJTWFuZ2xlIG90aGVyIG5hbWVzcGFjZXMgYXMgZGVjbGFyYXRpb25zLgoJKGxvb2t1cF90ZW1wbGF0ZV9mdW5jdGlvbik6IFNldCB0eXBlIG9mIE9WRVJMT0FEIG5vZGVzIHRvIHVua25vd24uCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogUHVzaCBpbnRvIG5hbWVzcGFjZSBvZiBjb250ZXh0LgoJSWYgdGhlIGNvbnRleHQgaXMgYSBuYW1lc3BhY2UsIHNldCBpdCB0byBnbG9iYWxfbmFtZXNwYWNlLgoJVXNlIGlkX2NvbnRleHQgZm9yIG1hbmdsaW5nLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgT1ZFUkxPQUQgYW5kIE5BTUVTUEFDRV9ERUNMIG5vZGVzLgoJKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBJZ25vcmUgbmFtZXNwYWNlIGNvbnRleHRzLgoJUHVzaCBpbnRvIG5hbWVzcGFjZSBsZXZlbC4KCSh0c3Vic3QpOiBIYW5kbGUgTkFNRVNQQUNFX0RFQ0wgbm9kZXMuCglSZW1vdmUgREVDTF9DSEFJTiBwcm9jZXNzaW5nLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IFJlY29nbml6ZSBPVkVSTE9BRCBpbnN0ZWFkIG9mIFRSRUVfTElTVCBub2Rlcy4KCSogcHRyZWUuYyAocHJpbnRfbGFuZ19pZGVudGlmaWVyKTogUHJpbnQgYmluZGluZ3MuCgkobGFuZ19wcmludF94bm9kZSk6IFByaW50IE9WRVJMT0FEIG5vZGVzLgoJKiBydHRpLmMgKGluaXRfcnR0aV9wcm9jZXNzaW5nKTogUHVzaCB0eXBlX2luZm8gaW50byBzdGQuCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfaGVyZSk6IEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCShsb29rdXBfZm5maWVsZHNfMSwgZ2V0X3ZpcnR1YWxzX25hbWVkX3RoaXMsIGdldF9tYXRjaGluZ192aXJ0dWFsLAoJZGZzX2RlYnVnX21hcmssIGRmc19wdXNoZGVjbHMsIGRmc19jb21wcmVzc19kZWNscywgYWRkX2NvbnZlcnNpb25zLAoJbG9va3VwX2ZuZmllbGRzX2hlcmUpOiBMaWtld2lzZS4KCVByb2Nlc3MgYWxsIG5vZGVzLCBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggVFJFRV9DSEFJTi4KCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX29yX3JlZmVyZW5jZV90eXBlKTogU2V0IGNvbnRleHQKCXRvIGdsb2JhbF9uYW1lc3BhY2UuCgkoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKiBzcGV3LmMgKHl5bGV4KTogU2F2ZSBvbGQgc2V0dGluZyBvZiBsb29raW5nX2Zvcl90eXBlbmFtZS4KCSogdHJlZS5jIChkZWNsX2xpc3RfbGVuZ3RoKTogUmVtb3ZlLgoJKGJpbmRpbmdfaW5pdCk6IE5ldyBmdW5jdGlvbi4KCShjb3VudF9mdW5jdGlvbnMpOiBSZXdyaXRlLgoJKGlzX292ZXJsb2FkZWRfZm4pOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMuCgkocmVhbGx5X292ZXJsb2FkZWRfZm4sIGdldF9maXJzdF9mbiwgbHZhbHVlX3R5cGUpOiBMaWtld2lzZS4KCShvdmxfY29ucywgc2NyYXRjaF9vdmxfY29ucywgYnVpbGRfb3ZlcmxvYWQsIGJ1aWxkX292ZXJsb2FkX2FmdGVyLAoJb3ZsX21lbWJlcik6IE5ldyBmdW5jdGlvbnMuCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGUpOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMuCgkodHlwZV91bmtub3duX3ApOiBMaWtld2lzZS4KCShyZXF1aXJlX2luc3RhbnRpYXRlZF90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IERlY2xhcmUgY29kZSBkZWFkLgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IENyZWF0ZSBhbmQgZXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IENoZWNrIGZvciA6Om1haW4gb25seS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLiAgRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDaGVjayBmb3IgVFJFRV9MSVNUIGJlZm9yZSBhY2Nlc3NpbmcKCVRSRUVfVkFMVUUuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ2hlY2sgZm9yIG5hbWVzcGFjZSBiaW5kaW5ncyBpbnN0ZWFkCglvZiBnbG9iYWwgYmluZGluZ3MuCgkocHVzaGRlY2wsIHB1c2hfb3ZlcmxvYWRlZF9kZWNsLCBsb29rdXBfdGFnLCBsb29rdXBfbmFtZV9yZWFsLAoJbG9va3VwX25hbWVfY3VycmVudF9sZXZlbCwgc3RhcnRfZGVjbCwgeHJlZl90YWcsCglmaW5pc2hfZW51bSk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkcyk6IExpa2V3aXNlLgoJKGRmc19kZWJ1Z19tYXJrKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBVc2UgU0VUX0lERU5USUZJRVJfVFlQRV9WQUxVRS4KCShwb3BsZXZlbF9jbGFzcywgcG9wX2Zyb21fdG9wX2xldmVsKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9tZXRob2QpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogVXNlIFNFVF9JREVOVElGSUVSX0dMT0JBTF9WQUxVRS4KCSogZGVjbC5jIChyZWNvcmRfYnVpbHRpbl90eXBlKTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcsIGdyb2tmbmRlY2wpOiBMaWtld2lzZS4KCSogbGV4LmMgKGdldF90aW1lX2lkZW50aWZpZXIsIGRvX2lkZW50aWZpZXIsIGRvX3Njb3BlZF9pZCk6IExpa2V3aXNlLgoJKG1ha2VfbGFuZ190eXBlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKG1ha2VfdGh1bmspOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0KTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoZGVidWdfYmluZm8pOiBMaWtld2lzZS4KCSogZXhjZXB0aW9uLmNjLCBuZXcuY2MsIG5ldzEuY2MsIG5ldzIuY2MsIHRpbmZvLmNjLCB0aW5mby5oLAoJdGluZm8yLmNjLCBpbmMvbmV3Lmg6IEFkZCBzdGQgcXVhbGlmaWNhdGlvbnMuCgkqIGluYy9uZXc6IFdyYXAgd2l0aCBuYW1lc3BhY2Ugc3RkIGlmIF9fSE9OT1JfU1RELgoJKiBpbmMvdHlwZWluZm86IExpa2V3aXNlLgoKRnJpIE1heSAgOCAwMDo0Mzo1MCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBIYW5kbGUgc2Vjb25kX2NvbnYKCXByb3Blcmx5IGZvciB0ZW1wbGF0ZXMuCgpUaHUgTWF5ICA3IDE3OjA5OjI1IDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBTZXQgVFJFRV9VU0VEIGZsYWcgdG8KCXplcm8gZm9yIGJ1aWxkX3R5cGVfdmFyaWFudHMgbm9kZXMgYXMgd2VsbC4KCldlZCBNYXkgIDYgMTk6Mjc6MDkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogRG9uJ3QgdHN1YnN0IHRoZSB0eXBlIG9mIGFuIElERU5USUZJRVJfTk9ERS4KCldlZCBNYXkgIDYgMTY6NDk6NDggMTk5OCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNhbGwubywgY2xhc3MubywgZGVjbC5vLCBkZWNsMi5vLCBlcnJmbi5vLCBlcnJvci5vLAoJZXhjZXB0Lm8sIGV4cHIubywgZnJpZW5kLm8sIGluaXQubywgbGV4Lm8sIG1ldGhvZC5vLCBwdC5vLCByZXBvLm8sCglydHRpLm8sIHNlYXJjaC5vLCBzZW1hbnRpY3Mubywgc2lnLm8sIHRyZWUubywgdHlwZWNrLm8sIHR5cGVjazIubywKCXhyZWYubyk6IEFkZCB0b3BsZXYuaCBkZXBlbmRlbmNpZXMuCgpXZWQgTWF5ICA2IDE2OjQ0OjU4IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGVycmZuLmMgKGNwX2Vycm9yLCBjcF93YXJuaW5nKTogUmVtb3ZlIGRlY2xhcmF0aW9ucyBmb3IKCWVycm9yIGFuZCB3YXJuaW5nIHJlc3BlY3RpdmVseS4KCldlZCBNYXkgIDYgMTQ6Mjg6MTggMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXJyb3IuYzogQ29udmVydCB0byB1c2luZyBjdHlwZSBtYWNyb3MgZGVmaW5lZCBpbiBzeXN0ZW0uaC4KCSogbWV0aG9kLmM6IExpa2V3aXNlLgoJKiB4cmVmLmM6IExpa2V3aXNlLgoJKiBsZXguYzogTGlrZXdpc2UuICBBbHNvIHJlbW92ZSByZWR1bmRhbnQgc3lzdGVtIGhlYWRlciBzdHVmZi4KCldlZCBNYXkgIDYgMDY6MzY6NDEgMTk5OCAgUm9iZXJ0IExpcGUgIDxyb2JlcnRsQGRnaWkuY29tPgoKCSogY2FsbC5jLCBjbGFzcy5jLCBkZWNsLmMsIGRlY2wyLmMsIGVycmZuLmMsIGVycm9yLmMsIGV4Y2VwdC5jLAoJZXhwci5jLCBmcmllbmQuYywgaW5pdC5jLCBsZXguYywgbWV0aG9kLmMsIHB0LmMsIHJlcG8uYywgcnR0aS5jLAoJc2VhcmNoLmMsIHNlbWFudGljcy5jLCBzaWcuYywgdHJlZS5jLCB0eXBlY2suYywgdHlwZWNrMi5jLAoJeHJlZi5jOiBBZGQgaW5jbHVkZSBvZiB0b3BsZXYuaC4KCldlZCBNYXkgIDYgMDI6MzM6MzkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChwZXJtX21hbmlwKTogQWxzbyByZWdlbmVyYXRlIHRoZSBSVEwgb2YgYW4gZXh0ZXJuLgoJKGNvcHlfdG9fcGVybWFuZW50KTogVXNlIGVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbi4KClR1ZSBNYXkgIDUgMjM6NTQ6MDQgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChleHBhbmRfdmVjX2luaXQpOiBUaGUgaW5pdGlhbGl6YXRpb24gb2YgZWFjaCBhcnJheQoJZWxlbWVudCBpcyBhIGZ1bGwtZXhwcmVzc2lvbi4KClR1ZSBNYXkgIDUgMTg6MjQ6MTMgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfbmFtZSk6IEFkZCBhIGNhbGwgdG8gYnVpbGRfdHlwZV92YXJpYW50Cgl0byBnZXQgdGhlIHJpZ2h0IHR5cGUuCgpUdWUgTWF5ICA1IDAxOjI1OjAzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgLlNVRkZJWEVTLgoKCSogY3AtdHJlZS5kZWY6IFJlbW92ZSBOQU1FU1BBQ0VfREVDTC4KClN1biBNYXkgIDMgMDE6MzI6MTQgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBEbyBldmFsdWF0ZSBhcmcgZXZlbiBpZiBpdCBoYXMgZW1wdHkKCWNsYXNzIHR5cGUuCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBwdXNoIGEgbWVtYmVyIGZ1bmN0aW9uLgoKVGh1IEFwciAzMCAxODo1OToyMyAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZysrRkFRLmluZm8pOiBQdXQgLW8gb3B0aW9uIGJlZm9yZSBpbnB1dCBmaWxlLgoKVGh1IEFwciAzMCAxMzowNTozMyAxOTk4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBneHhpbnQudGV4aTogQWRkIGluZm8gZm9yIHNxdWFuZ2xpbmcgY29kZXMgSyBhbmQgQi4KClR1ZSBBcHIgMjggMTM6MjI6MDEgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogc2VtYW50aWNzLmMgKGJlZ2luX3N0bXRfZXhwcik6IEF2b2lkIGR1cGxpY2F0aW5nIHRoZSBlZmZlY3Qgb2YKCXRoZSBleHByZXNzaW9uIGluIHRlbXBsYXRlcy4KCShmaW5pc2hfc3RtdF9leHByKTogTGlrZXdpc2UuCgoxOTk4LTA0LTI4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbDIuYyAoYW1iaWd1b3VzX2RlY2wpOiBGaXggTkFNRSBwYXJtIHRvIGJlIGEgdHJlZSwgbm90IGludC4KCk1vbiBBcHIgMjcgMTM6NTg6MTAgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IEFsd2F5cyBjbGVhcgoJY3VycmVudF90ZW1wbGF0ZV9wYXJtcyBhbmQgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoJKHB1c2h0YWcpOiBSZW1vdmUgY2hlY2sgb2YgY3VycmVudF9jbGFzc190eXBlIGFuZCBzb21lIGNvbW1lbnRzLAoJc2luY2UgbWF5YmVfcHVzaF90b190b3BfbGV2ZWwgbm8gbG9uZ2VyIGNyZWF0ZXMgY29uZnVzaW9uLgoKU3VuIEFwciAyNiAxMjoxMDoxOCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9JU19URU1QTEFURSk6IE5ldyBtYWNyby4KCShERUNMX0NMQVNTX1RFTVBMQVRFX1ApOiBMaWtld2lzZS4KCShERUNMX1BSSU1BUllfVEVNUExBVEUpOiBMaWtld2lzZS4KCShQUklNQVJZX1RFTVBMQVRFX1ApOiBVc2UgaXQuCgkocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBOZXcgZnVuY3Rpb24uCgkocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogVGFrZSBuZXcgdGVtcGxhdGUgcGFyYW1ldGVycyBhcwoJaW5wdXQuCgkoaXNfc3BlY2lhbGl6YXRpb25fb2YpOiBOZXcgZnVuY3Rpb24uCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogRGVjbGFyZS4KCSogZGVjbC5jIChwdXNodGFnKTogSGFuZGxlIGZyaWVuZCB0ZW1wbGF0ZSBjbGFzc2VzLgoJKHhyZWZfdGFnKTogTGlrZXdpc2UuICBVc2UgbmV3IGNhbGxpbmcgY29udmVudGlvbiBmb3IKCXJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZS4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBIYW5kbGUgZnJpZW5kIHRlbXBsYXRlcy4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IFVzZSBpc19zcGVjaWFsaXphdGlvbl9vZiB3aGVyZQoJYXBwcm9wcmlhdGUuICBEZWFsIHdpdGggZnJpZW5kIGNsYXNzIHRlbXBsYXRlcy4KCShtYWtlX2ZyaWVuZF9jbGFzcyk6IExldCBhIGNsYXNzIHRlbXBsYXRlIGJlIGZyaWVuZHMgd2l0aCBpdHNlbGYuCgkqIHB0LmMgKGNvbXBfdGVtcGxhdGVfYXJncyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSh0c3Vic3RfZnJpZW5kX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IFVzZSBpdC4KCShyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBBZGp1c3QgZm9yIG5ldyBjYWxsaW5nIGNvbnZlbnRpb24uCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3R5cGUpOiBVc2UgdHN1YnN0X2ZyaWVuZF9jbGFzcyB0byBkZWFsCgl3aXRoIGZyaWVuZCB0ZW1wbGF0ZXMuCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBVc2UgY29tcF90ZW1wbGF0ZV9hcmdzLCByYXRoZXIgdGhhbgoJZXhwYW5kaW5nIGl0IGlubGluZS4KCSogcGFyc2UueSAoY29tcG9uZW50X2RlY2wpOiBIYW5kbGUgYSBuZXN0ZWQgdGVtcGxhdGUgdHlwZQoJbGlrZSBvdGhlciBjb21wb25lbnQgdHlwZSBkZWNsYXJhdGlvbnMuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEhhbmRsZSBvdmVybG9hZGVkCgljb25zdHJ1Y3RvcnMgY29ycmVjdGx5LgoKCSogcHQuYyAobWFieWJlX2dldF90ZW1wbGF0ZV9kZWNsX2Zyb21fdHlwZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFVzZSBpdC4KClRodSBBcHIgMjMgMjE6MTk6MDYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBXUkFQUEVSLiAgVVNFUl9DT05WIG5vdyBvbmx5IGhhcyB0d28gb3BzLgoJKiBjcC10cmVlLmg6IEFkZCBXUkFQUEVSIHN1cHBvcnQuCgkqIGNhbGwuYyAoYWRkX2NhbmRpZGF0ZSk6IFNwbGl0IG91dCBmcm9tIGFkZF8qX2NhbmRpZGF0ZSBmbnMuCgkoYnVpbGRfb3Zlcl9jYWxsKTogVGFrZSB0aGUgY2FuZGlkYXRlIGluc3RlYWQgb2YgZnVuY3Rpb24gYW5kIGFyZ3MuCglFbmZvcmNlIGFjY2VzcyBjb250cm9sIGhlcmUuICBFbWl0IG92ZXJsb2FkIHdhcm5pbmdzIGhlcmUuCgkoYWRkX3dhcm5pbmcpOiBOZXcgZm4uCgkoam91c3QpOiBBZGQgV0FSTiBwYXJtLiAgSWYgbm90IHNldCwgY2FsbCBhZGRfd2FybmluZyBpbnN0ZWFkIG9mCglwcmludGluZyBhIHdhcm5pbmcuICBSZS1lbmFibGUgc29tZSB3YXJuaW5ncy4KCSh0b3VybmV5KTogUGFzcyBpdC4KCShjb252ZXJ0X2xpa2UpOiBBZGp1c3QuCgkoYnVpbGRfbmV3X29wKTogQWRqdXN0LgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogQWRqdXN0LgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBBZGp1c3QuCgkoVVNFUl9DT05WX0ZOKTogQWRqdXN0LgoJKiB0cmVlLmMgKGJ1aWxkX2V4cHJfd3JhcHBlciwgYnVpbGRfZXhwcl9wdHJfd3JhcHBlciwKCWJ1aWxkX2ludF93cmFwcGVyKTogTmV3IGZucy4KClRodSBBcHIgMjMgMTg6Mjc6NTMgMTk5OCAgTWFyayBQLiBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodW5pZnkpOiBGaXggdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgpUaHUgQXByIDIzIDA5OjMyOjU4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogRGVjbGFyZSBjYW5vbmljYWxfbmFtZS4KCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IEZpeCBQTUZzLgoKV2VkIEFwciAyMiAxMzoyNDo0OCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogU2V0IFRSRUVfUFJJVkFURSBhbmQgVFJFRV9QUk9URUNURUQgZm9yCgl0aGUgREVDTF9SRVNVTFRzIG9mIGEgbWVtYmVyIFRFTVBMQVRFX0RFQ0wsIG5vdCBqdXN0IHRoZQoJVEVNUExBVEVfREVDTC4KCgkqIHB0LmMgKHRzdWJzdCk6IERlY3JlYXNlIHRoZSB0ZW1wbGF0ZS1sZXZlbCBvZgoJVEVNUExBVEVfVEVNUExBVEVfUEFSTVMuICBMaWtld2lzZSBmb3IgdGhlIERFQ0xfSU5JVElBTCBvZiBhCglURU1QTEFURV9QQVJNX0lOREVYLgoJKHRlbXBsYXRlX2RlY2xfbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgkodW5pZnkpOiBNYWtlIHN1cmUgdG8gcmVjb3JkIHVuaWZpY2F0aW9ucyBmb3IgdGVtcGxhdGUKCXBhcmFtZXRlcnMsIGV2ZW4gd2hlbiB0aGUgcGFyYW1ldGVycyBleGFjdGx5IG1hdGNoIHRoZSBhcmd1bWVudHMuCglDb21iaW5lIGR1cGxpY2F0ZWQgY29kZSBmb3IgVEVNUExBVEVfVEVNUExBVEVfUEFSTXMgYW5kCglURU1QTEFURV9UWVBFX1BBUk1TLiAgRG9uJ3QgdHJ5IHRvIHVuaWZ5IHRlbXBsYXRlIHBhcmFtZXRlcnMgdGhhdAoJYXJlbid0IGZyb20gdGhlIGxldmVsIHdlJ3JlIGN1cnJlbnRseSB3b3JraW5nIG9uLgoKVHVlIEFwciAyMSAyMjowMDowNCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBlcnJmbi5jIChjcF90aGluZyk6IFVzZSB4cmVhbGxvYywgbm90IHhtYWxsb2MsIHRvIGNvcHkgbWVtb3J5LgoKCSogZGVjbDIuYyAoY2hlY2tfbWVtYmVyX3RlbXBsYXRlKTogU2V0IERFQ0xfSUdOT1JFRCBmb3IgbWVtYmVyCgljbGFzcyB0ZW1wbGF0ZXMsIHRvby4KCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IFJlbWFuZ2xlIHRoZSBuYW1lIG9mIGEgbWVtYmVyIFRZUEVfREVDTC4KClR1ZSBBcHIgMjEgMTg6NTk6MTEgMTk5OCAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBPbmx5IGNoZWNrIERFQ0xfRlJJRU5EX1AgaWYgZnVuY3Rpb24uCgpUdWUgQXByIDIxIDE0OjIyOjAwIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNwLXRyZWUuaCAoaW50VElfdHlwZV9ub2RlLCB1bnNpZ25lZF9pbnRUSV90eXBlX25vZGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKGludFRJX3R5cGVfbm9kZSwgdW5zaWduZWRfaW50VElfdHlwZV9ub2RlKTogRGVmaW5lLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSGFuZGxlIFRJIHR5cGVzLgoJKiB0eXBlY2suYyAodW5zaWduZWRfdHlwZSwgc2lnbmVkX3R5cGUpOiBIYW5kbGUgVEkgdHlwZXMuCgpTYXQgQXByIDE4IDE1OjI1OjIxIDE5OTggIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBOZXcgYXJndW1lbnQgaW5fYWRkZWRfbGlicmFyaWVzLgoJTmV3IGxvY2FsIGFkZGVkX2xpYnJhcmllcy4gIEluY3JlbWVudCBjb3VudCB3aGVuIGFkZCBsaWJyYXJ5IHRvCglhcmdsaXN0LgoKRnJpIEFwciAxNyAyMToyNTowMCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcC10cmVlLmggKHR5cGVfYXNfc3RyaW5nX3JlYWwpOiBOZXcgZnVuY3Rpb24uCgkqIHB0LmMgKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IFVzZSBpdC4KCSogZXJyb3IuYyAoZHVtcF9hZ2dyX3R5cGUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGR1bXBfdHlwZV9wcmVmaXgpOiBMaWtld2lzZS4KCShkdW1wX3R5cGVfc3VmZml4KTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3JlYWwpOiBDb252ZXJ0IGZyb20gZHVtcF90eXBlLiAgSWYgZGVzaXJlZCwgdGhlCgkiY2Fub25pY2EiIG5hbWUgb2YgYSB0eXBlZGVmLCBpLmUuLCB0aGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZwoJdHlwZSwgY2FuIGJlIHByaW50ZWQuCgkoZHVtcF90eXBlKTogQ2FsbCBkdW1wX3R5cGVfcmVhbC4KCkZyaSBBcHIgMTcgMTQ6MzA6NDUgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogLWZuZXctYWJpIGltcGxpZXMgLWZ2dGFibGUtdGh1bmtzLgoKCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVzKTogVHdlYWsgcGVkYW50aWMgY2FzZS4KCShjb21wX3RhcmdldF9wYXJtcyk6IFR3ZWFrIHBlZGFudGljIGNhc2UuICBDbGVhbiB1cCBzb21ld2hhdC4KCVJldHVybiAtMSBvciAxIGluc3RlYWQgb2YgMSBvciAyLgoJKGNvbXBwYXJtcyk6IFJlbW92ZSBTVFJJQ1QgaGFuZGxpbmcuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEZpeCBoYW5kbGluZyBvZiBwbWZzLgoKRnJpIEFwciAxNyAxNDowNDoxNiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfdHlwZXMpOiBIYW5kbGUgcmVmZXJlbmNlcyBsaWtlIHBvaW50ZXJzLgoJKGNvbXBfdGFyZ2V0X3Bhcm1zKTogTm90ZSB0aGF0IHJldHVybiBjb2RlIGZyb20gY29tcF90YXJnZXRfdHlwZXMKCWNhbiBiZSBuZWdhdGl2ZSB0byBpbmRpY2F0ZSBmYWlsdXJlLgoKRnJpIEFwciAxNyAwOToxMDo1MiAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoYysrLmFsbC5idWlsZCk6IERvbid0IGRlcGVuZCBvbiAkKERFTUFOR0xFUl9QUk9HKSwKCXdoaWNoIHJlcXVpcmVzIGEgd29ya2luZyB0YXJnZXQgY29tcGlsZXIgdG8gYnVpbGQuCgpGcmkgQXByIDE3IDA4OjU3OjM1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHRyZWUuYyAoYXZvaWRfb3ZlcmxhcCk6IEFkZCBwcm90b3R5cGUuCgoJKiBzcGV3LmMgKG51bV90b2tlbnMpOiBBZGQgcHJvdG90eXBlLgoJKG50aF9ub2tlbiwgYWRkX3Rva2VuLCBjb25zdW1lX3Rva2VuLCBkZWJ1Z195eWNoYXIpOiBMaWtld2lzZS4KCgkqIHNlYXJjaC5jIChkZnNfY2hlY2tfb3ZlcmxhcCk6IEFkZCBwcm90b3R5cGUuCgkoZGZzX25vX292ZXJsYXBfeWV0KTogTGlrZXdpc2UuCgoJKiBwdC5jIChvcmlnaW5hbF90ZW1wbGF0ZSk6IEFkZCBwcm90b3R5cGUuCgkoaW5saW5lX25lZWRzX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkocHVzaF9pbmxpbmVfdGVtcGxhdGVfcGFybXNfcmVjdXJzaXZlKTogTGlrZXdpc2UuCgkocmV0cmlldmVfc3BlY2lhbGl6YXRpb24sIHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocHJpbnRfY2FuZGlkYXRlcywgcmVkdWNlX3RlbXBsYXRlX3Bhcm1fbGV2ZWwpOiBMaWtld2lzZS4KCShidWlsZF90ZW1wbGF0ZV9kZWNsLCBtYXJrX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uLCBnZXRfYmluZGluZ3NfcmVhbCk6IExpa2V3aXNlLgoKCSogbWV0aG9kLmMgKHN0YXJ0X3NxdWFuZ2xpbmcpOiBBZGQgcHJvdG90eXBlLgoJKGVuZF9zcXVhbmdsaW5nLCBjaGVja19rdHlwZSwgaXNzdWVfa3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9vdmVybG9hZGVkX3Njb3BlX3JlZiwgY2hlY2tfYnR5cGUpOiBMaWtld2lzZS4KCShidWlsZF9tYW5nbGVkX3RlbXBsYXRlX3Bhcm1faW5kZXgpOiBMaWtld2lzZS4KCgkqIGxleC5jIChpbml0X2NwcF9wYXJzZSk6IEFkZCBwcm90b3R5cGUuCgkoaGFuZGxlX2NwX3ByYWdtYSwgaGFuZGxlX3N5c3ZfcHJhZ21hKTogTGlrZXdpc2UuCgkocmVkdWNlX2NtcCwgdG9rZW5fY21wKTogTGlrZXdpc2UuCgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogQWRkIHByb3RvdHlwZS4KCShwdXNoX2VoX2luZm8sIGdldF9laF9pbmZvLCBnZXRfZWhfdmFsdWUsIGdldF9laF90eXBlKTogTGlrZXdpc2UuCgkoZ2V0X2VoX2NhdWdodCwgZ2V0X2VoX2hhbmRsZXJzLCBkb19wb3BfZXhjZXB0aW9uKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChpc19uYW1lc3BhY2VfYW5jZXN0b3IpOiBBZGQgcHJvdG90eXBlLgoJKG5hbWVzcGFjZV9hbmNlc3RvciwgYWRkX3VzaW5nX25hbWVzcGFjZSk6IExpa2V3aXNlLgoJKGFtYmlndW91c19kZWNsKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGluZGVudCk6IEFkZCBwcm90b3R5cGUuCgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCk6IEFkZCBwcm90b3R5cGUuCgpGcmkgQXByIDE3IDAxOjU3OjEyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSnVzdCByZXR1cm4gYSBQTUYuCgpGcmkgQXByIDE3IDAwOjQ1OjEyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogRG9uJ3Qgc3RyaXAgY3YtcXVhbGlmaWVycwoJd2hlbiBkb2luZyBpbml0aWFsaXphdGlvbnMuCgoJKiBwdC5jICh1bmlmeSk6IFVzZSBjb21wdHlwZXMgdG8gY29tcGFyZSB0eXBlIGFyZ3MuCgpGcmkgQXByIDE3IDAwOjI0OjIyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRml4IGNoZWNrIGZvciB3aGVuIGl0J3Mgc2FmZSB0byBmcmVlCgl0aGUgbmV3IGRlY2wuCgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBEb24ndCBwYXNzIGEgdHlwZWRlZiB0eXBlCgl0byB0eXBlX2FzX3N0cmluZy4KClRodSBBcHIgMTYgMTc6NDc6MzAgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcHQuYyAoYnVpbGRfdGVtcGxhdGVfcGFybV9pbmRleCk6IEFkZCBwcm90b3R5cGUuCgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogRG9uJ3QgY2xlYXIgd29yZHMgb3V0c2lkZSB0aGUKCW5ld2x5IGFsbG9jYXRlZCBub2RlLgoKV2VkIEFwciAxNSAxNTozNDo0NCAxOTk4ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IE5vdyByZXR1cm5zIGNoYXIqIGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lLgoKV2VkIEFwciAxNSAxMzoyMDowNiAxOTk4ICBKb2huIENhcnIgIDxqZmNAbWl0LmVkdT4KCQkJICBKZWZmIExhdyAgIDxsYXdAY3lnbnVzLmNvbT4KCgkqIGVycmZuLmM6IFJld29yayB0byBhdm9pZCBwcm9ibGVtcyB3aGVuIEhPU1RfV0lERV9JTlQgaXMgbG9uZ2VyCgl0aGFuIGEgcG9pbnRlci4KClN1biBBcHIgMTIgMjI6MzE6MTkgMTk5OCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBVc2UgVFlQRV9QUkVDSVNJT04uCgpGcmkgQXByIDEwIDEyOjE2OjQ5IDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3Qgd2FybiBmb3IgcmVkdW5kYW50IGRlY2xzIGlmCglmcmllbmQ6IGxldCBhZGRfZnJpZW5kIHRha2UgY2FyZSBvZiBpdC4KClRodSBBcHIgIDkgMDI6NDA6NDggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX2NvbnN0cnVjdG9yKTogRG9uJ3Qgc2V0CglUUkVFX0hBU19DT05TVFJVQ1RPUiBmb3IgYSBzaWduYXR1cmUgcG9pbnRlci4KCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogRG9uJ3QgZm9yY2UgYSB0ZW1wb3JhcnkgZm9yIGludGVybmFsIHN0cnVjdHMuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogV2FybiBhYm91dCBpbXBsaWNpdCAmIG9uIHBtZnMKCWhlcmUsIHRvby4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogT25seSBhbGxvdyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYQoJcmVhbCBjb25zdHJ1Y3Rvci4KCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IFNpbXBsaWZ5LgoJKHN0b3JlX2luaXRfdmFsdWUpOiBEb24ndCBwZWR3YXJuIGFib3V0IHVzaW5nIHsgfSBmb3IgcG1mcy4KClRodSBBcHIgIDkgMjI6MTY6NTcgMTk5OCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHN0YXJ0X2RlY2wpOiAgVXBkYXRlIHByb3RvdHlwZS4KCSogZGVjbC5jIChzdGFydF9kZWNsKTogIExpa2UgdGhlIEMgdmVyc2lvbiwgbmV3IHBhcmFtZXRlcnMKCWZvciB0aGUgYXR0cmlidXRlcy4gIENhbGwgY3BsdXNfZGVjbF9hdHRyaWJ1dGVzIGhlcmUsCgkocHVzaGRlY2wpOiAgTGlrZSBDIHZlcnNpb24sIGRvIGJ1aWxkX3R5cGVfY29weSBpZiBUWVBFX0RFQ0wsCgkoZ3Jva2RlY2xhcmF0b3IpOiAgUGFzcyBOVUxMIGZvciBuZXcgc3RhcnRfZGVjbCBhcmd1bWVudHMuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogIExpa2V3aXNlLgoJKiBwYXJzZS55OiAgTWVyZ2UgY3BsdXNfZGVjbF9hdHRyaWJ1dGUgY2FsbHMgaW50byBzdGFydF9kZWNsIGNhbGxzLgoJKiB0eXBlY2suYyAoY29tbW9uX3R5cGUpOiBDaGVjayBUWVBFX01BSU5fVkFSSUFOVC4KCSogbGV4LmMgKGJ1aWxkX2xhbmdfZGVjbCk6IEFkZCBsYW5nX25hbWVfamF2YS4KCSogY2xhc3MuYyAocHVzaF9sYW5nX2NvbnRleHQpOiBBZGQgbGFuZ19uYW1lX2phdmEuCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX25hbWUpOiBDaGVjayBmb3IgaXNfamF2YV90eXBlLgoKVGh1IEFwciAgOSAyMjoxNjo1NyAxOTk4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2hlY2sgVFlQRV9NQUlOX1ZBUklBTlQuCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogQ2hlY2sgZm9yIFRSRUVfQ09ERSBmb3IKCVZPSURfVFlQRSBpbnN0ZWFkIG9mIHR5cGUgPT0gIHZvaWRfdHlwZV9ub2RlLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoc3RhcnRfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2twYXJtcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgpUaHUgQXByICA5IDAwOjE4OjQ0IDE5OTggIERhdmUgQnJvbGxleSAgKGJyb2xsZXlAY3lnbnVzLmNvbSkKCgkqIGxleC5jIChmaW5wdXQpOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9jcHBfcGFyc2UpOiAgUmVuYW1lZCBmcm9tIGluaXRfcGFyc2UuCgkoaW5pdF9wYXJzZSk6IEhhbmRsZSAhVVNFX0NQUExJQi4gIENhbGwgaW5pdF9jcHBfcGFyc2Ugd2hlbiBmaW5pc2hlZC4KCShmaW5pc2hfcGFyc2UpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoaW5pdF9sZXgsIGluaXRfcGFyc2UpOiBSZW1vdmUgZGVjbGFyYXRpb25zLgoKTW9uIEFwciAgNiAwMjoyNTowNSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2NhbGwpOiBTdGlsbCBldmFsdWF0ZSB0aGUgYWN0dWFsIGFyZ3VtZW50LgoJKiBjbGFzcy5jIChpc19lbXB0eV9jbGFzcyk6IFVwZGF0ZSBmb3IgLWZuZXctYWJpLgoKCSogZGVjbDIuYzogLWZuZXctYWJpIGltcGxpZXMgLWZzcXVhbmdsZS4KCgkqIG1ldGhvZC5jIChkb19idWlsZF9hc3NpZ25fcmVmKTogRG9uJ3QgZG8gYW55dGhpbmcgdG8gY29weQoJYW4gZW1wdHkgY2xhc3MuCgkoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoKU2F0IEFwciAgNCAxODo0Mzo1OCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGF2b2lkX292ZXJsYXApOiBSZXR1cm4gYSB2YWx1ZS4KClNhdCBBcHIgIDQgMTI6NTI6MzUgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbWV0aG9kLmMgKGNoZWNrX2J0eXBlKTogQWRkIG1pc3NpbmcgYXJndW1lbnQgdG8geHJlYWxsb2MuCgkoY2hlY2tfa3R5cGUpOiBMaWtld2lzZS4KCkZyaSBBcHIgIDMgMDI6MjI6NTkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCUltcGxlbWVudCBlbXB0eSBiYXNlIG9wdGltaXphdGlvbi4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQWRkIHZiYXNlIGZpZWxkcyBlYXJsaWVyLiAgU2V0CglDTEFTU1RZUEVfU0laRSBvZiBhbiBlbXB0eSBiYXNlIHRvIDAuICBUeXBlcyB3aXRoIGJhc2VzIGNhbiBiZSBlbXB0eS4KCSogc2VhcmNoLmMgKGRmc19jaGVja19vdmVybGFwLCBkZnNfbm9fb3ZlcmxhcF95ZXQpOiBOZXcgZm5zLgoJKHR5cGVzX292ZXJsYXBfcCk6IE5ldyBmbi4KCSogdHJlZS5jIChhdm9pZF9vdmVybGFwKTogTmV3IGZuLgoJKGJ1aWxkX2Jhc2VfZmllbGRzKTogVXNlIGl0IHRvIGF2b2lkIG92ZXJsYXBwaW5nIGVtcHR5IGJhc2VzLgoJKiBjcC10cmVlLmgsIGRlY2wyLmMsIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZuZXctYWJpLgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogU3RyaXAgdW51c2VkIElORElSRUNUX1JFRnMuCgoJUmUtaW1wbGVtZW50IGFsbG9jYXRpb24gb2YgYmFzZSBjbGFzcyBzdWJvYmplY3RzLgoJKiB0cmVlLmMgKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBOZXcgZm4uCgkobGF5b3V0X2Jhc2V0eXBlcyk6IFVzZSBpdC4gIE5vdyBoYW5kbGVzIG9mZnNldHMgb2YgYm90aCB2aXJ0dWFsIGFuZAoJbm9uLXZpcnR1YWwgYmFzZXMsIGFmdGVyIGxheW91dF90eXBlLgoJKGxheW91dF92YmFzZXR5cGVzKTogUmVtb3ZlLgoJKGJ1aWxkX2Jhc2VfZmllbGRzKTogR2VuZXJhdGUgRklFTERfREVDTHMgZm9yIGVhY2ggbm9uLXZpcnR1YWwgYmFzZS4KCShidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFNwbGl0IG91dCBmcm9tIG9sZCBsYXlvdXRfYmFzZXR5cGVzLgoJKiBjbGFzcy5jIChmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBMb3NlIG9mZnNldCBoYW5kbGluZyBjb2RlLgoJTW92ZSBub252ZHRvciB3YXJuaW5nIGhlcmUuICBEb24ndCBtZXNzIHdpdGggdF9iaW5mbyBhbnltb3JlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IG1lc3Mgd2l0aCB0X2JpbmZvIGFueW1vcmUuICBVc2UgZm5zIGFib3ZlLgoJKiBjcC10cmVlLmg6IEFkanVzdC4KClRodSBBcHIgIDIgMTQ6MjU6MTMgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBMb3NlIENMQVNTVFlQRV9WQkFTRV9TSVpFLCBzb21lIHVudXNlZCBzdHVmZi4KCSogZGVjbC5jLCBkZWNsMi5jLCBwdC5jLCBwdHJlZS5jLCBsZXguYzogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGR1cGxpY2F0ZV90YWdfZXJyb3IpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBTZXQgQ0xBU1NUWVBFX1NJWkUsIENMQVNTVFlQRV9NT0RFLCBDTEFTU1RZUEVfQUxJR04uCgkqIHRyZWUuYyAobGF5b3V0X3ZiYXNldHlwZXMpOiBVcGRhdGUgZnJvbSBsYXlvdXRfcmVjb3JkLCByZW1vdmUKCXZhcl9zaXplIHN1cHBvcnQsIHVzZSBDTEFTU1RZUEVfU0laRSBpbnN0ZWFkIG9mIENMQVNTVFlQRV9WQkFTRV9TSVpFLgoJKGxheW91dF9iYXNldHlwZXMpOiBMaWtld2lzZS4KCldlZCBBcHIgIDEgMTg6MjI6MjUgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2xhc3MuYywgTWFrZSBzdXJlIHN5c3RlbS5oIGlzIGluY2x1ZGVkIGp1c3QgYWZ0ZXIgY29uZmlnLmguCglEZWxldGUgbGluZ2VyaW5nIHN0ZGlvIGFuZCBlcnJubyByZWZlcmVuY2VzIHRvby4KCSogZGVjbC5jLCBlcnJmbi5jLCBwYXJzZS55LCBwdHJlZS5jIHNlYXJjaC5jLCB4cmVmLmM6IExpa2V3aXNlLgoKV2VkIEFwciAgMSAxNTozODozNiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogRml4IGFjY2VzcyBjb250cm9sIGZvciBsb2NhbCBjbGFzc2VzLgoKCSogY2xhc3MuYyAoaXNfZW1wdHlfY2xhc3MpOiBOZXcgZm4uCgkqIGNhbGwuYyAoYnVpbGRfY2FsbCk6IERvbid0IHBhc3MgZW1wdHkgY2xhc3Mgb2JqZWN0cyB0byBhIGZ1bmN0aW9uLgoKV2VkIEFwciAgMSAxNDo1ODozNSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvIG5hbWUgcmVzb2x1dGlvbiBmb3IgZGVmYXVsdAoJYXJndW1lbnRzIG9mIGZ1bmN0aW9uIHRlbXBsYXRlcyBpbiB0aGUgc2NvcGUgb2YgdGhlIHRlbXBsYXRlcy4KClR1ZSBNYXIgMzEgMTM6NDM6NTcgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2FsbC5jOiBJbmNsdWRlIHN5c3RlbS5oLiAgUmVtb3ZlIGluY2x1ZGVzLCBkZWNsYXJhdGlvbnMgYW5kCglkZWZpbmVzIHByb3ZpZGVkIGJ5IHN5c3RlbS5oLgoJKiBjbGFzcy5jLCBjdnQuYywgZGVjbC5jLCBkZWNsMi5jLCBlcnJmbi5jIGVycm9yLmM6IExpa2V3aXNlLgoJKiBleGNlcHQuYywgZXhwci5jIGZyaWVuZC5jLCBnKytzcGVjLmMsIGluaXQuYywgaW5wdXQuYzogTGlrZXdpc2UuCgkqIGxleC5jLCBwYXJzZS55LCBwdC5jLCBwdHJlZS5jIHJlcG8uYyBydHRpLmMsIHNlYXJjaC5jOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMsIHNpZy5jLCBzcGV3LmMsIHRyZWUuYywgdHlwZWNrLmM6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMsIHhyZWYuYzogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBEZXBlbmRlbmNpZXMgdXBkYXRlZCBhcyBhcHByb3ByaWF0ZS4KCSogTWFrZS1sYW5nLmluOiBMaWtld2lzZS4KCk1vbiBNYXIgMzAgMTI6MTU6MDAgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IEFsbG93IGluY29tcGxldGUgdW5pZmljYXRpb24gd2l0aG91dAoJYW4gaW1tZWRpYXRlIGVycm9yIG1lc3NhZ2UuCgpNb24gTWFyIDMwIDA4OjU1OjQyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAobWVtYmVyX3ApOiBOZXcgZm4uCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogT25seSBzZXQgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCBmb3IKCWluaXRpYWxpemluZyBjbGFzcyBtZW1iZXJzLgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX1BBUk1fSU5ERVgpOiBDbGFzcyAneCcuCgkqIHB0cmVlLmMgKGxhbmdfcHJpbnRfeG5vZGUpOiBIYW5kbGUgVEVNUExBVEVfUEFSTV9JTkRFWC4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBIYW5kbGUgbm9uLXNjb3BlZCBkZXN0cnVjdG9ycywgdG9vLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoKCSogcHQuYyAocHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IFNwbGl0IG91dC4uLgoJKHB1c2hfdGluc3RfbGV2ZWwpOiAuLi5mcm9tIGhlcmUuCgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogRG9uJ3QgcGFzcyBhIHR5cGUgdG8gZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogQWx3YXlzIGhhbmQgb2ZmCgljb252ZXJzaW9ucyB0byBjbGFzcyB0eXBlLgoKU3VuIE1hciAyOSAyMDowMTo1OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogTG9jYWwgY2xhc3NlcyBoYXZlIHRoZSBzYW1lIGFjY2VzcyBhcyB0aGUKCWVuY2xvc2luZyBmdW5jdGlvbi4KClN1biBNYXIgMjkgMDA6NDc6MzIgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogdHlwZWNrLmMgKGV4cGFuZF90YXJnZXRfZXhwcik6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoKCSogc2VhcmNoLmM6IFB1dCB2YXJpb3VzIHByb3RvdHlwZXMgaW5zaWRlICNpZmRlZiBNSV9NQVRSSVguCgoJKiByZXBvLmMgKHNhdmVfc3RyaW5nKTogRGVsZXRlIGRlYWQgZnVuY3Rpb24uCgoJKiBtZXRob2QuYyAodGh1bmtfcHJpbnRhYmxlX25hbWUpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCgkqIGxleC5jICh5eW5leHRjaCk6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoKCSogZXhwci5jICh0cmVlX2V4dHJhY3RfYWdncl9pbml0KTogI2lmIDAgb3V0LgoKCSogZXhjZXB0LmMgKGRvX3Vud2luZCk6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoJKGVhc3lfZXhwYW5kX2FzbSk6IExpa2V3aXNlLgoKCSogY3Z0LmMgKGJ1aWxkX2NvbnZlcnNpb25fdHlwZV8xKTogRGVsZXRlIGRlYWQgZnVuY3Rpb24uCgoJKiBjcC10cmVlLmggKHB1c2hfZXhwcmVzc2lvbl9vYnN0YWNrKTogRGVjbGFyZS4KCgkqIGNhbGwuYyAoc291cmNlX3R5cGUpOiAjaWYgMCBvdXQuCgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MpOiBSZW1vdmUgdW51c2VkIGxhYmVsLiAgQWRkIGJyYWNlcwoJYXJvdW5kIGVtcHR5IGVsc2UgY2xhdXNlLgoKCSogbGV4LmMgKHl5cHJpbnQpOiBGaXggYXJndW1lbnQgdG8gcHJpbnRmLgoKU2F0IE1hciAyOCAxNzo0Mzo1MiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jICh0c3Vic3QpOiBDbGVhciBUUkVFX1VTRUQgZm9yIG5ldyBGVU5DVElPTl9ERUNMcy4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTWFrZSBzdXJlIHRlbXBsYXRlCglhcmd1bWVudHMgYXJlIHBlcm1hbmVudC4KCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBEb24ndCBnbyBsb29raW5nIGFyb3VuZCBpbgoJdGVtcGxhdGUgdHlwZXMuCgoJKiBzZW1hbnRpY3MuYzogQWRkIHJvdXRpbmVzIHRvIGhhbmRsZSBleHByZXNzaW9ucywgYW5kIHNvbWUKCWRlY2xhcmF0aW9uIHByb2Nlc3NpbmcuCgkqIHBhcnNlLnk6IFVzZSB0aGVtLgoJKGN1cnJlbnRfY2xhc3NfZGVwdGgpOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIGNwLXRyZWUuaC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIGNwLXRyZWUuaDogVXNlIHRoZW0uCgkoY3VycmVudF9jbGFzc19kZXB0aCk6IERlY2xhcmUuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogVXNlIGJlZ2luX3N0bXRfZXhwciBhbmQgZmluaXNoX3N0bXRfZXhwci4KCkZyaSBNYXIgMjcgMjA6MjM6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogQmUgYSBiaXQgbW9yZSBleHBsaWNpdCB3aXRoIHRlbXBsYXRlCgl0eXBlIGFyZ3VtZW50cywgd2hlbiB2ZXJib3NlLgoKRnJpIE1hciAyNyAxODoxNjo0MCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbmMvZXhjZXB0aW9uOiBSZW9yZGVyIGNsb3NpbmcgYnJhY2VzLgoKRnJpIE1hciAyNyAxMzoyMjoxOCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBOZXcgZnVuY3Rpb24uCgkqIGNwX3RyZWUuaCAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogRGVjbGFyZSBpdC4KCSogZGVjbC5jICh4cmVmX3RhZyk6IFVzZSBpdC4KClRodSBNYXIgMjYgMTE6MTY6MzAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDaGVjayBJU19BR0dSX1RZUEUsIG5vdAoJVFlQRV9MQU5HX1NQRUNJRklDLgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgY29uc3QgYW5kIHZvbGF0aWxlIGZyb20gdHlwZSBhZnRlcgoJc2V0dGluZyBjb25zdHAgYW5kIHZvbGF0aWxlcC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IHdhcm4gYWJvdXQgYm9vbCBiaXRmaWVsZCBsYXJnZXIKCXRoYW4gb25lIGJpdC4KClRodSBNYXIgMjYgMTA6MjU6NTIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogU1RSSVBfTk9QUyB3aGVyZSBhcHByb3ByaWF0ZS4KClRodSBNYXIgMjYgMTA6MjQ6MDUgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IENvbXBsYWluIGFib3V0IGFtYmlndW91cyBvcGVyYXRvcigpLAoJcmF0aGVyIHRoYXQgY3Jhc2hpbmcuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBMaWtld2lzZS4KClRodSBNYXIgMjYgMTA6MjM6MjQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3Z0LmMgKHBlcmZvcm1fcXVhbGlmaWNhdGlvbl9jb252ZXJzaW9ucyk6IFVzZSBjb21wX3RhcmdldF90eXBlcwoJaW5zdGVhZCBvZiBjb21wX3B0cl90dHlwZXMuCgpXZWQgTWFyIDI1IDE2OjEwOjUwIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNwLXRyZWUuaCAoZW5mb3JjZV9hY2Nlc3MpOiBEZWNsYXJlLgoJKiBjYWxsLmMgKGVuZm9yY2VfYWNjZXNzKTogTWFrZSBpdCBleHRlcm4sIG5vdCBzdGF0aWMuCgkqIGNsYXNzLmMgKGFsdGVyX2FjY2Vzcyk6IFVzZSBlbmZvcmNlX2FjY2VzczsgbW9kaWZ5IGNvZGUgZm9yIElTTwoJY29tcGxpYW5jZSwgcmF0aGVyIHRoYW4gQVJNIHJ1bGVzLgoKV2VkIE1hciAyNSAxMjoxMDo0NSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogY3AtdHJlZS5oOiBGaXggdHlwby4KCldlZCBNYXIgMjUgMDI6MDE6MDIgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IE9ubHkgZG8gUENDX1NUQVRJQ19TVFJVQ1RfUkVUVVJOIHRoaW5nCglpZiAoYWdncmVnYXRlX3ZhbHVlX3AgKHR5cGUpKS4KCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IEhhbmRsZSBUWVBFTkFNRV9UWVBFLgoKVHVlIE1hciAyNCAxNjoxMjowMSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0cmVlLmMgKG1hcGNhcik6IFdoZW4gZGVhbGluZyB3aXRoIGEgREVDTCwgdXNlIGl0J3MgY29uc3RhbnQKCXZhbHVlLCBpZiBhbnkuCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERvbid0IG1hbmdsZSB0aGUgbmFtZXMgb2YgdGVtcGxhdGUKCWNsYXNzZXMgd2hvc2UgYXJndW1lbnRzIGFyZSB1bmtub3duLgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgR09UT19TVE1UIGNvcnJlY3RseS4KClR1ZSBNYXIgMjQgMTI6MjE6NTUgMTk5OCAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IFRZUEVfUFJFQ0lTT04gZm9yIGJvb2xzIHRvIDEuCgpUdWUgTWFyIDI0IDEyOjIxOjQ4IDE5OTggIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIFRZUEVfTUFYX1ZBTFVFIGZvcgoJYm9vbGVhbl90eXBlX25vZGUgdG8gMS4KClR1ZSBNYXIgMjQgMTA6MjM6NDcgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbCcuCgoJKiBwdC5jIChmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogTmV3IGZ1bmN0aW9uLCBjcmVhdGVkIGJ5Cgljb252ZXJ0aW5nIHVzZXNfdGVtcGxhdGVfcGFybXMuCgkodHJlZV9mbl90KTogTmV3IHR5cGVkZWYuCgkodXNlc190ZW1wbGF0ZV9wYXJtcyk6IFVzZSBpdC4KCShtYXJrX3RlbXBsYXRlX3Bhcm0pOiBOZXcgZnVuY3Rpb24uCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgbGlzdCBvZiBhIHBhcnRpYWwKCXNwZWNpYWxpemF0aW9uIHVzZXMgYWxsIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKCSogTWFrZS1sYW5nLmluIChjKytmaWx0KTogRG9uJ3QgZGVsZXRlIGN4eG1haW4uYyBhZnRlciB3ZSdyZSBkb25lCgl3aXRoIGl0OyB3ZSBtaWdodCB3YW50IGl0IGZvciBkZWJ1Z2dpbmcuCgkqIGNwLXRyZWUuaCAodHlwZV91bmlmaWNhdGlvbik6IENoYW5nZSBpbnRlcmZhY2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNraXAgbmVzdGVkIHRlbXBsYXRlIHR5cGVzLCBqdXN0IGxpa2UKCW9yZGluYXJ5IG5lc3RlZCB0eXBlcy4KCShpbnN0YW50aWF0ZV90eXBlKTogVXNlIG5ldyBpbnRlcmZhY2UgdG8gdHlwZV91bmlmaWNhdGlvbi4KCSogbGV4LmMgKGluaXRfbGV4KTogQWRkIF9fc3ogYXMgb3BuYW1lIGZvciBzaXplb2YuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9zY29wZV9yZWYpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogSGFuZGxlIGNvbXBsZXggZXhwcmVzc2lvbnMuICBTZXQKCW51bWVyaWNfb3V0cHV0X25lZWRfYmFyIGlmIG5lY2Vzc2FyeS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IEhhbmRsZSBub24tUEFSTV9ERUNMIG5vZGVzOyB0aGlzCglyb3V0aW5lIGlzIG5vdyB1c2VkIGJ5IGJ1aWxkX292ZXJsb2FkX2ludC4gIFJlbW92ZSBzb21lCglhc3NpZ25tZW50cyB0byBudW1lcmljX291dHB1dF9uZWVkX2Jhci4gIFVzZQoJYnVpbGRfb3ZlcmxvYWRfc2NvcGVfcmVmLgoJKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogTm90ZSB0aGF0IHNvbWUgdGVtcGxhdGUgbWFuZ2xlZCBuYW1lcyBlbmQKCXdpdGggZGlnaXRzLCBhbmQgc2V0IG51bWVyaWNfb3V0cHV0X25lZWRfYmFyIGFwcHJvcHJpYXRlbHkuICBVc2UKCWJ1aWxkX3VuZGVyc2NvcmVfaW50LgoJKiBwdC5jICh1bmlmeSk6IENoYW5nZSBpbnRlcmZhY2UuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogTGlrZXdpc2UuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogVXNlIG5ldyBpbnRlcmZhY2VzLgoJKHRzdWJzdCk6IERlYWwgZ3JhY2VmdWxseSB3aXRoIHNpdHVhdGlvbnMgaW4gd2hpY2ggdGhlIGFyZ3VtZW50Cgl2ZWN0b3IgaXMgbm90IGZ1bGx5IGZpbGxlZC4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogVXNlIG5ldyBpbnRlcmZhY2VzLgoJKHR5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4gIFJlbW92ZSBOT1BfRVhQUiBoYWNrLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuICBEZWFsIHdpdGggdW5pZmljYXRpb24gb2YgY29tcGxleCBleHByZXNzaW9ucy4KCk1vbiBNYXIgMjMgMTI6MjQ6MzcgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY29tcGxldGVfdGVtcGxhdGVfYXJncyk6IEluaXRpYWxpemUgc2tpcCBwcm9wZXJseS4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogUmV2ZXJ0LgoJKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBSZW1vdmUuCgkobG9va3VwX25hbWVfcmVhbCk6IERvbid0IGNhbGwgaXQuICBDYWxsIGxvb2t1cF9maWVsZCBpZiB3ZSBzZWUgYQoJVFlQRV9ERUNMIGZyb20gYSB0ZW1wbGF0ZSBiYXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogRG8gaW1wbGljaXQgdHlwZW5hbWUgc3R1ZmYuCgpTdW4gTWFyIDIyIDAwOjUwOjQyIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgkJCSAgR2VvZmYgTm9lciAgICA8bm9lckBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IFZhcmlvdXMgZml4ZXMgZm9yIGJ1aWxkaW5nIGN5Z3dpbjMyIG5hdGl2ZSB0b29sY2hhaW5zLgoJKiBNYWtlLWxhbmcuaW46IExpa2V3aXNlLgoKRnJpIE1hciAyMCAxODowNzozOSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogcHQuYyAodHN1YnN0LCBURU1QTEFURV9URU1QTEFURV9QQVJNKTogU2ltcGxpZnkuCgpGcmkgTWFyIDIwIDEwOjQyOjA3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobWFrZV9pbXBsaWNpdF90eXBlbmFtZSk6IFJld3JpdGUgcmVtb3ZlZCBjb2RlLgoJKG1ha2VfdHlwZW5hbWVfdHlwZSk6IENhbGwgaXQgaWYgdGhlIHR5cGUgd2UgbG9vayB1cCBjb21lcyBmcm9tCglhIGJhc2UgdGhhdCB1c2VzIHRlbXBsYXRlIHBhcm1zLgoKCSogcHQuYyAoY29tcGxldGVfdGVtcGxhdGVfYXJncyk6IFJld3JpdGUuCgkodHN1YnN0LCBGVU5DVElPTl9ERUNMKTogVXNlIGl0LgoKRnJpIE1hciAyMCAwODoxMjo0MyAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogRml4IGNvbWJpbmUgc3RyaW5ncy4gIENhbGwKCWNfZXhwYW5kX2FzbV9vcGVyYW5kcyAoKSBpZiBvdXRwdXRfb3BlcmFuZHMsIGlucHV0X29wZXJhbmRzIG9yCgljbG9iYmVycyBpcyBub3QgTlVMTF9UUkVFLgoKRnJpIE1hciAyMCAwMDoxMDoxOSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogcHQuYyAoY29tcGxldGVfdGVtcGxhdGVfYXJncyk6IE5ldyBmdW5jdGlvbi4KCShnZXRfYmluZGluZ3MpOiBEZWFsIHdpdGggc3BlY2lhbGl6YXRpb25zIG9mIGZ1bmN0aW9uIHRlbXBsYXRlcwoJd2l0aCByZXR1cm4gdHlwZSBjb250YWluaW5nIHBhcmFtZXRlcnMgZnJvbSBvdXRlciBjbGFzcwoJdGVtcGxhdGVzLgoJKHRzdWJzdCwgVEVNUExBVEVfVEVNUExBVEVfUEFSTSk6IFdoZW4gcmVkdWNpbmcgcGFyYW1ldGVyIGxldmVsLAoJc3Vic3RpdHV0ZSBhcmd1bWVudHMgYW5kIGNvbXBvc2UgYSBuZXcgdHlwZS4KClRodSBNYXIgMTkgMTk6MDE6NDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodHN1YnN0KTogQ2xlYXIgREVDTF9QRU5ESU5HX0lOTElORV9JTkZPIGZvciBuZXcKCUZVTkNUSU9OX0RFQ0xzLgoKVGh1IE1hciAxOSAxMTo1MTo1OCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBMb3NlIHVzZWxlc3MgY29kZS4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IEhhbmRsZSBBKiAtPiBjb25zdCBBKiBwcm9wZXJseS4KCgkqIHB0LmMgKGdldF9iaW5kaW5nc19yZWFsKTogUmVuYW1lIGZyb20gZ2V0X2JpbmRpbmdzLiAgQWRkCgljaGVja19yZXR0eXBlIHBhcm0uCgkoZ2V0X2JpbmRpbmdzKTogUGFzcyAxLgoJKGdldF9iaW5kaW5nc19vdmVybG9hZCk6IFBhc3MgMC4KCldlZCBNYXIgMTkgMDk6MDg6MTIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBXaGVuIHJldmVydGluZyBhIHN0YXRpYwoJbWVtYmVyIGZ1bmN0aW9uLCBhbHNvIHJlbW92ZSB0aGUgYHRoaXMnIHBhcmFtZXRlciBmcm9tCglsYXN0X2Z1bmN0aW9uX3Bhcm1zLgoKVGh1IE1hciAxOSAwMjoyNzo0OCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfY29weSwgQ09OU1RfREVDTCk6IERvbid0IGJvdGhlciB0c3Vic3RpbmcKCWEgZnVuY3Rpb24gY29udGV4dC4KCgkqIGRlY2wuYyAoc3RvcmVfYmluZGluZ3MpOiBVc2UgZnJlZV9iaW5kaW5nX3ZlY3MuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogTGlrZXdpc2UuCgpXZWQgTWFyIDE4IDEyOjQxOjQzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobWFrZV9pbXBsaWNpdF90eXBlbmFtZSk6IE9ubHkgY2hhbmdlIHRoZSB0eXBlIG9mIGEKCVRZUEVOQU1FX1RZUEUuCgpXZWQgTWFyIDE4IDEwOjA5OjUxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHNlbWFudGljcy5jOiBOZXcgZmlsZSwgY29udGFpbmluZyByb3V0aW5lcyB0byBwZXJmb3JtIHRoZQoJc2VtYW50aWMgcGhhc2Ugb2YgcGFyc2luZy4KCSogcGFyc2UueTogVXNlIGl0LgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgdGhlIHZhcmlvdXMgZnVuY3Rpb25zIGluIHNlbWFudGljcy5jLgoJUHJvdmlkZSBtYWNyb3MgdG8gYWNjZXNzIF9TVE1UIHRyZWUgbm9kZXMuCgkqIGNwLXRyZWUuZGVmOiBBZGQgQVNNX1NUTVQgdHJlZSBub2RlLgoJKiBNYWtlZmlsZS5pbiwgTWFrZS1sYW5nLmluOiBBZGQgZGVwZW5kZW5jaWVzIG9uIGFuZCBmb3IKCXNlbWFudGljcy5jLgoKV2VkIE1hciAxOCAwMDoyNDoxMCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBPbmx5IGNoZWNrIHByaW1hcnkgdGVtcGxhdGVzLgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDb21wbGFpbiBhYm91dCBkZWZhdWx0IGFyZ3MKCWluIGV4cGxpY2l0IHNwZWNpYWxpemF0aW9uLgoKCSogcGFyc2UueSAobm9tb2RzX2luaXRkY2wwKTogQWxzbyBjYWxsIGNwX2ZpbmlzaF9kZWNsIGZvciBhCgljb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yLgoKVHVlIE1hciAxNyAxNDo0NDo1NCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0eXBlY2syLmMgKGJ1aWxkX3hfYXJyb3cpOiBEb24ndCBjcmFzaCB3aGVuIGFuIGFnZ3JlZ2F0ZSB0eXBlCgloYXMgbm8gb3ZlcmxvYWRlZCBvcGVyYXRvciAtPi4KCgkqIGNhbGwuYyAoYnVpbGRfZmllbGRfY2FsbCk6IERvbid0IGNyYXNoIHdoZW4gcHJlc2VudGVkIHdpdGggYQoJZmllbGQgdGhhdCBpcyBhY3R1YWxseSBhIG5lc3RlZCB0eXBlLgoKCSogZGVjbC5jIChwdXNodGFnKTogRGVhbCB3aXRoIGZyaWVuZCBjbGFzcyBpbmplY3Rpb24gaW4gbG9jYWwKCWNsYXNzZXMuCgoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogRG9uJ3QgY3Jhc2ggaWYgT0JKIGlzIGEKCXBvaW50ZXItdG8tbWVtYmVyLWZ1bmN0aW9uLgoKVHVlIE1hciAxNyAxMTo0MDoyNiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBDb21wbGFpbiBhYm91dCB0ZW1wbGF0ZSB3aXRoIEMgbGlua2FnZSwKCWFub255bW91cyB0ZW1wbGF0ZSBjbGFzcy4KCk1vbiBNYXIgMTYgMTI6MTA6MzkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAocHVzaGNsYXNzKTogT25seSB1c2UgdGhlIG1pX21hdHJpeCBzdHVmZiAjaWZkZWYgTUlfTUFUUklYLgoJKiBzZWFyY2guYzogTGlrZXdpc2UuCgoJKiBsZXguYyAoZG9fcGVuZGluZ19kZWZhcmdzKTogT25seSBjYWxsCgltYXliZV97YmVnaW4sZW5kfV9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyBmb3IgRlVOQ1RJT05fREVDTHMuCgoJKiBwYXJzZS55IChpbml0ZGNsMF9pbm5hcmRzKTogTW92ZSBtYXliZWFzbSBiYWNrIGludG8gaW5pdGRjbDAgZXQgYWwuCgpNb24gTWFyIDE2IDEwOjQ3OjIyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHBhcnNlLnk6IERlYWwgd2l0aCBDT05TVFJVQ1RPUlMgaW4gbmV3X2luaXRpYWxpemVycy4KCk1vbiBNYXIgMTYgMTA6NTQ6MjEgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBEZWFsIHdpdGggQklORF9FWFBSIGluIGEgd2F5IHRoYXQgbW9yZQoJY2xvc2VseSBtaW1pY3MgdGhlIGJlaGF2aW9yIGluIHBhcnNlLnkuCgkodHN1YnN0X2V4cHIpOiBSZXR1cm4gdGhlIHJlc3VsdGluZyBCTE9DSyB3aGVuIG1ha2luZyBhIHRzdWJzdCdpbmcKCWludG8gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCgpTdW4gTWFyIDE1IDAyOjA3OjI2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoVEVNUExBVEVfUEFSTVNfRk9SX0lOTElORSk6IE5ldyBtYWNyby4KCSogcHQuYyAoaW5saW5lX25lZWRzX3RlbXBsYXRlX3Bhcm1zKTogTmV3IGZuLgoJKG9yaWdpbmFsX3RlbXBsYXRlKTogTmV3IGZuLgoJKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IE5ldyBmbi4KCShtYXliZV9iZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFVzZSB0aGVtLgoJKG1heWJlX2VuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGlzX21lbWJlcl9vcl9mcmllbmRfdGVtcGxhdGUpOiBSZW5hbWUgdG8gaXNfbWVtYmVyX3RlbXBsYXRlLgoJTWVtYmVyIGZ1bmN0aW9ucyBvZiBsb2NhbCBjbGFzc2VzIGFyZSBuZXZlciBtZW1iZXIgdGVtcGxhdGVzLgoKU3VuIE1hciAxNSAwMToxNDoyMiAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBIYW5kbGUgVEVNUExBVEVfREVDTCB0aGF0IHdhcwoJYWRkZWQgaW4gdGhlIGNsYXNzIHNjb3BlIHRvIGNhdGNoIHJlZGVmaW5pdGlvbiBlcnJvci4KCgkqIHB0LmMgKHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogQWxzbyBjb3B5Cgl0aGUgREVDTF9URU1QTEFURV9QQVJNUyBmaWVsZC4KClN1biBNYXIgMTUgMTA6NTQ6MDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodHN1YnN0KTogQ2xlYXIgVFlQRV9SRUZFUkVOQ0VfVE8gd2hlbiBjcmVhdGluZyBhCglyZWR1Y2VkLWxldmVsIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVyLgoKU3VuIE1hciAxNSAxMjoyNjowMiAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgbmVlZHNfZmluYWxfb3ZlcnJpZGVyLgoJKERFQ0xfTkVFRFNfRklOQUxfT1ZFUlJJREVSX1ApOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKG92ZXJyaWRlX29uZV92dGFibGUpOiBTZXQgREVDTF9ORUVEU19GSU5BTF9PVkVSUklERVJfUC4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBQcm9wYWdhdGUgaXQuCgkqIHR5cGVjazIuYyAoYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IpOiBVc2UgdHdvIGxvb3BzIHRvIGVtaXQKCWFic3RyYWN0IHZpcnR1YWwgZnVuY3Rpb25zIGFuZCB2aXJ0dWFsIGZ1bmN0aW9ucyB3aGljaCBuZWVkIGEKCWZpbmFsIG92ZXJyaWRlciBzZXBhcmF0ZWx5LgoKVGh1IE1hciAxMiAwOTozOTo0MCAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBsYW5nLXNwZWNzLmg6IFByb3Blcmx5IHB1dCBicmFja2V0cyBhcm91bmQgYXJyYXkgZWxlbWVudHMgaW4KCWluaXRpYWxpemVyLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBDb3JyZWN0bHkgcGxhY2UgcGFyZW5zIGFyb3VuZAoJJiYgYW5kIHx8IGluIGV4cHJlc3Npb24uCgpUaHUgTWFyIDEyIDA5OjI2OjA0IDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNhbGwuYyAoZGVmYXVsdF9wYXJtX2NvbnZlcnNpb25zKTogUmVtb3ZlIHByb3RvdHlwZSBkZWZpbml0aW9uLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSByZXN1bHQuCgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGNvbnZlcnNpb24uCgoJKiBkZWNsMi5jIChhbWJpZ3VvdXNfZGVjbCk6IEFkZCBleHBsaWNpdCBwYXJhbWV0ZXIgZGVmaW5pdGlvbiBmb3IgbmFtZS4KCgkqIGV4Y2VwdC5jIChkb191bndpbmQpOiAjaWYgMCBkZWZpbml0aW9uIG9mIHVudXNlZCB2YXJpYWJsZXMgZmNhbGwKCWFuZCBuZXh0X3BjLgoKCSogZXhwci5jIChleHRyYWN0X3NjYWxhcl9pbml0KTogI2lmIDAgcHJvdG90eXBlIGFuZCBmdW5jdGlvbgoJZGVmaW5pdGlvbi4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBpbml0X3R5cGUuCgkoYnVpbGRfbmV3XzEpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHQuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgbmV3dGFnOwoJY2FzdCBjYWxsZWQgZnVuY3Rpb24gcmV0dXJuIHZhbHVlIHRvIHZvaWQuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgbmFtZSBhbmQgZm4uCgoJKiB0cmVlLmMgKGdldF90eXBlX2RlY2wpOiBBZGQgZGVmYXVsdCByZXR1cm4gdG8gc2h1dCB1cCBjb21waWxlciBmcm9tCgljb21wbGFpbmluZyBjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfY29uZGl0aW9uYWxfZXhwcik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgcnZhbC4KClRodSBNYXIgMTIgMDk6MTI6MTUgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY2FsbC5jIChkZWZhdWx0X3Bhcm1fY29udmVyc2lvbnMpOiBSZW1vdmUgcHJvdG90eXBlIGRlZmluaXRpb24uCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHJlc3VsdC4KCShidWlsZF9vdmVyX2NhbGwpOiBBZGQgZGVmYXVsdCBjYXNlIGluIGVudW1lcmF0aW9uIHN3aXRjaC4KClRodSBNYXIgMTIgMDg6Mzk6MTMgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQ2hhbmdlIGoncyB0eXBlIHRvIHNpemVfdC4KCgkqIHRyZWUuYyAobGF5b3V0X3ZiYXNldHlwZXMpOiByZWNvcmRfYWxpZ24gYW5kIGRlc2lyZWRfYWxpZ24gYXJlIG9mCgl0eXBlIHVuc2lnbmVkIGludDsgY29uc3Rfc2l6ZSBhbmQgbm9udmlydHVhbF9jb25zdF9zaXplIGxpa2V3aXNlLgoKV2VkIE1hciAxMSAwNzoyNToyMCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55IChuZXdfaW5pdGlhbGl6ZXIpOiBNYWtlIHN1cmUgYWxsIGluaXRpYWxpemVycyBhcmUKCWxpc3RzLgoKVHVlIE1hciAxMCAwNzozMjozNiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBNYXJrIHRpbmZvIGZ1bmN0aW9ucyBmb3IKCWN2LXF1YWxpZmllZCB2ZXJzaW9ucyBvZiBjbGFzcyB0eXBlcyBhcyBERUNMX05PVF9SRUFMTFlfRVhURVJOLgoKRnJpIE1hciAgNiAyMzoyNzozNSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBtZXRob2QuYzogRml4IHR5cG8uCgpGcmkgTWFyICA2IDEwOjA2OjU5IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1ldGhvZC5jOiBJbmNsdWRlICJzeXN0ZW0uaCIgdG8gZ2V0IHN0ZGxpYi5oLCBzdGRpby5oLAoJY3R5cGUuaCwgc3RyaW5nLmgsIGV0Yy4KCShpc3N1ZV9ucmVwZWF0cyk6IEFkZCBkZWZhdWx0IGNhc2UgaW4gZW51bWVyYXRpb24gc3dpdGNoLgoJKGNoZWNrX2J0eXBlKTogTGlrZXdpc2UuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5pbiAobWV0aG9kLm8pOiBEZXBlbmQgb24gc3lzdGVtLmguCgpXZWQgTWFyICA0IDIyOjI2OjUzIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogbGV4LmMgKGRvX3Njb3BlZF9pZCk6IEZpeCBwYXJlbnRoZXNpemluZy4KCldlZCBNYXIgIDQgMTI6MTE6NTMgMTk5OCAgTWljaGFlbCBUaWVtYW5uICA8dGllbWFubkBheG9uLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGdldF90aW5mb19mbl9keW5hbWljKTogSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW4KCUZMQUdfUlRUSSBpcyB1bnNldCwgaW5pdGlhbGl6ZSB0eXBlIGluZm8gbWFjaGluZXJ5IGFuZCBjb250aW51ZQoJd2l0aCBGTEFHX1JUVEkgZW5hYmxlZC4KCShnZXRfdHlwZWlkKTogTGlrZXdpc2UuCgpXZWQgTWFyICA0IDExOjQ3OjU1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6ICZEOjppIGhhcyB0eXBlIEI6OiogaWYgaSBjb21lcwoJZnJvbSBCLgoKV2VkIE1hciAgNCAxMToyODowOCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBEZWFsIG1vcmUgZ3JhY2VmdWxseSB3aXRoCglpbnZhbGlkIGRlY2xhcmF0aW9ucy4KClR1ZSBNYXIgIDMgMDE6Mzg6MTcgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywgaW5pdC5jLCBydHRpLmMsIHR5cGVjay5jLCB0eXBlY2syLmMsCgljcC10cmVlLmg6IENsZWFuIHVwIG1vcmUgb2xkIG92ZXJsb2FkaW5nIGNvZGUsIG9sZCBSVFRJIGNvZGUsIGFuZAoJc29tZSBmb3JtYXR0aW5nIHF1aXJrcy4KCgkqIGNhbGwuYywgY2xhc3MuYywgY3AtdHJlZS5oLCBjdnQuYywgZGVjbC5jLCBpbml0LmMsIGxleC5jLAoJbWV0aG9kLmMsIHB0LmMsIHB0cmVlLmMsIHR5cGVjay5jOiBSZW1vdmUgc3VwcG9ydCBmb3IKCS1mbm8tYW5zaS1vdmVybG9hZGluZyBhbmQgb3ZlcmxvYWRpbmcgTUVUSE9EX0NBTExfRVhQUi4KCSogY2xhc3MuaDogUmVtb3ZlLgoJKiBNYWtlZmlsZS5pbjogQWRqdXN0LgoKCSogcHQuYyAodW5pZnkpOiBEb24ndCBhbGxvdyByZWR1Y2VkIGN2LXF1YWxzIHdoZW4gc3RyaWN0LgoKCSogY2FsbC5jLCBjbGFzcy5jLCBwdC5jLCBjcC10cmVlLmg6IFJlbW92ZSBuc3Vic3RzIHBhcm0gZnJvbQoJKnR5cGVfdW5pZmljYXRpb24qIGFuZCB1bmlmeS4KCk1vbiBNYXIgIDIgMTI6MTE6MDYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoZXhwbGljaXRfdGVtcGxhdGVfdHlwZSk6IFJlbW92ZSBURU1QTEFURSBrZXl3b3JkLgoJKG5lc3RlZF9uYW1lX3NwZWNpZmllcik6IEFuZCBhZGQgaXQgYmVmb3JlIHRoaXMgdXNlLgoJKHR5cGVuYW1lX3N1YjApOiBBbmQgdGhpcyB1c2UuICBBbHNvIGFkZCB1c2Ugd2l0aG91dCB0aGUga2V5d29yZC4KCSh0eXBlbmFtZV9zdWIxKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgYWN0dWFsbHkgaW5zdGFudGlhdGUKCWFueXRoaW5nIGlmIG91ciB0eXBlIHVzZXMgdGVtcGxhdGUgcGFybXMuCgpNb24gTWFyICAyIDExOjA0OjU5IDE5OTggIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBjYWxsIHRlbXBvcmFyeV9hbGxvY2F0aW9uIGZvciBhCgluZXN0ZWQgZnVuY3Rpb24uCgpTdW4gTWFyICAxIDIxOjA2OjM3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgbWVzcyB3aXRoIGZyaWVuZHMgaWYKCW91ciB0eXBlIHVzZXMgdGVtcGxhdGUgcGFybXMuCgpTYXQgRmViIDI4IDEyOjA2OjQ0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG5lc3RlZF9uYW1lX3NwZWNpZmllcik6IFVzZSBleHBsaWNpdF90ZW1wbGF0ZV90eXBlLgoJKHR5cGVuYW1lX3N1Yik6IEFsbG93IGEgdGVtcGxhdGVfdHlwZSwgYW4gZXhwbGljaXRfdGVtcGxhdGVfdHlwZSwKCW9yIGFuIGltcGxpY2l0IHRlbXBsYXRlIHR5cGUgYXQgdGhlIGVuZC4KCSogbGV4LmMgKHl5cHJpbnQpOiBIYW5kbGUgYSBQVFlQRU5BTUUgYmVpbmcgYSBURU1QTEFURV9ERUNMLgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IEhhbmRsZSB0ZW1wbGF0ZS1pZCB3aGVyZSB0aGUgbmFtZQoJaXMgYSBURU1QTEFURV9ERUNMLgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGUKCWRlc3RydWN0b3IgY2FsbC4KCSogcHQuYyAodHN1YnN0X2NvcHksIE1FVEhPRF9DQUxMX0VYUFIpOiBEb24ndCBhc3N1bWUgYSBtZW1iZXIKCWRlc3RydWN0b3IgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIHR5cGUuCgoJKiBjcC10cmVlLmggKFRZUEVOQU1FX1RZUEVfRlVMTE5BTUUpOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKG5lc3RlZF9uYW1lX3NwZWNpZmllcik6IEFkZCAndGVtcGxhdGUnIGNhc2UuCgkoZXhwbGljaXRfdGVtcGxhdGVfdHlwZSk6IE5ldyBydWxlLgoJKHR5cGVuYW1lX3N1Yik6IFVzZSBpdC4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBIYW5kbGUgZ2V0dGluZyBhIHRlbXBsYXRlLWlkIGZvciBOQU1FLgoJKiBwdC5jICh0c3Vic3QpOiBMaWtld2lzZS4KCkZyaSBGZWIgMjcgMTE6MTc6NTAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoYWRkX3RvX3RlbXBsYXRlX2FyZ3MpOiBGaXggdGhpbmtvLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQ2FsbCBpdCBsYXRlci4KCgkqIHB0LmMgKGdldF9jbGFzc19iaW5kaW5ncyk6IEFkZCBvdXRlcl9hcmdzIHBhcm0uCgkobW9zdF9zcGVjaWFsaXplZF9jbGFzcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUGFzcyBpdC4KCShtb3JlX3NwZWNpYWxpemVkX2NsYXNzKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogR2V0IGNvbnRleHQgZnJvbSB0ZW1wbGF0ZSBpZiBub25lCgl3YXMgc3BlY2lmaWVkLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IERvbid0IGRvIGFueXRoaW5nIHdpdGggYQoJcGFydGlhbCBzcGVjaWFsaXphdGlvbi4KCSogZGVjbDIuYyAoY2hlY2tfbWVtYmVyX3RlbXBsYXRlKTogVXNlIElTX0FHR1JfVFlQRSBpbnN0ZWFkIG9mCglBR0dSRUdBVEVfVFlQRV9QLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogTWVtYmVyIGNsYXNzIHRlbXBsYXRlcyBoYXZlIGFscmVhZHkgYmVlbgoJY2hlY2tlZCBmb3IgbmFtZSBjbGFzaGVzLgoJKiBkZWNsLmMgKHB1c2hkZWNsX3dpdGhfc2NvcGUpOiBIYW5kbGUgcHVzaGluZyBhdCBjbGFzcyBsZXZlbC4KCkZyaSBGZWIgMjcgMDI6MjU6MTYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0LCBURU1QTEFURV9ERUNMKTogU3VwcG9ydCBtZW1iZXIgY2xhc3MgdGVtcGxhdGVzLgoJKHRzdWJzdCwgKl9QQVJNKTogU3VwcG9ydCBtdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUgY2xhc3Nlcy4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExvb2sgdXAgdGhlIHBhdHRlcm4gZnJvbSB0aGUKCW9yaWdpbmFsIHRlbXBsYXRlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEhhbmRsZSBnZXR0aW5nIGEgdGVtcGxhdGUgZm9yIGQxLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IENvcnJlY3Qgc2V0dGluZyBvZiAncHJpbWFyeScuCgkocmVkdWNlX3RlbXBsYXRlX3Bhcm1fbGV2ZWwpOiBBZGQgJ2xldmVscycgcGFybS4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBTdXBwb3J0IG1lbWJlciBjbGFzcyB0ZW1wbGF0ZXMuCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBIYW5kbGUgbXVsdGlwbGUgbGV2ZWxzLgoJKiBwYXJzZS55IChjb21wb25lbnRfZGVjbF8xLCBmbi5kZWYyKTogUmVtb3ZlIG1lbWJlciB0ZW1wbGF0ZSBjYXNlLgoJKGNvbXBvbmVudF9kZWNsKTogQWRkIG1lbWJlciB0ZW1wbGF0ZSBjYXNlcy4KCSogZGVjbDIuYyAoY2hlY2tfbWVtYmVyX3RlbXBsYXRlKTogV2Ugbm93IGhhbmRsZSBtZW1iZXIgdGVtcGxhdGUKCWNsYXNzZXMuCgkqIGRlY2wuYyAocHVzaHRhZyk6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGVzLgoJKiBtZXRob2QuYyAoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiBEb24ndCB0b3VjaAoJSURFTlRJRklFUl9HTE9CQUxfVkFMVUUuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IElmIG5hbWUgaXNuJ3QgYW4gaWRlbnRpZmllciwganVzdAoJcmV0dXJuIGl0LgoJKiBzcGV3LmMgKHl5bGV4KTogSGFuZGxlIFBUWVBFTkFNRSBsaWtlIFRZUEVOQU1FLgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogRG8gYWRqdXN0IGZvciBjb252ZXJzaW9ucyB0bwoJYW5kIGZyb20gdmlydHVhbCBiYXNlLgoKV2VkIEZlYiAyNSAwOTo1MToyOSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBHaXZlIGhhcmQgZXJyb3IgZm9yIGNvbnZlcnNpb24KCWZyb20gdmlydHVhbCBiYXNlLgoKCSogY3AtdHJlZS5oOiBUd2VhayBmb3JtYXR0aW5nLgoKV2VkIEZlYiAyNSAwMDozNTozMyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hfbmFtZXNwYWNlKTogSGFuZGxlIHJlZGVjbGFyYXRpb24gZXJyb3IuCgoJKiBjcC10cmVlLmggKElERU5USUZJRVJfTkFNRVNQQUNFX1ZBTFVFKTogTmV3IG1hY3JvLgoJKElERU5USUZJRVJfTkFNRVNQQUNFX0JJTkRJTkdTKTogTmV3IG1hY3JvLgoJKE5BTUVTUEFDRV9CSU5ESU5HKTogTmV3IG1hY3JvLgoJKElERU5USUZJRVJfR0xPQkFMX1ZBTFVFKTogVXNlIE5BTUVTUEFDRV9CSU5ESU5HLgoJKiAqLmM6IFVzZSB0aGVtLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogVXNlIGlubmVybW9zdF9hcmdzLgoKCSogZGVjbC5jIChnZXRfdW5pcXVlX25hbWUpOiBUd2VhayBmcm9tIGVhcmxpZXIgaW4gdGhlIG5hbWUuCgpUdWUgRmViIDI0IDIyOjE1OjA0IDE5OTggIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBDUExVU19CSU5ESU5HIG5vZGUuCgkqIGNwLXRyZWUuaCAodHJlZV9iaW5kaW5nKTogTmV3IHN0cnVjdC4KCShCSU5ESU5HX1NDT1BFLCBCSU5ESU5HX1ZBTFVFKTogTmV3IG1hY3Jvcy4KCShjdXJyZW50X25hbWVzcGFjZSwgZ2xvYmFsX25hbWVzcGFjZSk6IERlY2xhcmUgZXh0ZXJuLgoJKHN0cnVjdCBsYW5nX2RlY2xfZmxhZ3MpOiBOZXcgZmllbGQgaW5fbmFtZXNwYWNlLgoJKERFQ0xfTkFNRVNQQUNFX1VTSU5HLCBERUNMX05BTUVTUEFDRV9VU0VSUyk6IE5ldyBtYWNyb3MuCgkoREVDTF9OQU1FU1BBQ0UsIFNFVF9ERUNMX05BTUVTUEFDRSk6IE5ldyBtYWNyb3MuCgkoVFJFRV9JTkRJUkVDVF9VU0lORyk6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoY3VycmVudF9uYW1lc3BhY2UsIGdsb2JhbF9uYW1lc3BhY2UpOiBEZWNsYXJlLiAgVGhlCgl2YWx1ZSBpcyBhIE5BTUVTUEFDRV9ERUNMIG5vdywgbm90IGEgVFJFRV9MSVNULgoJKGlzX25hbWVzcGFjZV9hbmNlc3RvciwgbmFtZXNwYWNlX2FuY2VzdG9yKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoYWRkX3VzaW5nX25hbWVzcGFjZSwgYW1iaWd1b3VzX2RlY2wpOiBMaWtld2lzZS4KCShsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogTmV3IHN1cHBvcnQgZnVuY3Rpb24gZm9yIGxvb2t1cF9uYW1lLgoJKHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogTmV3IHN1cHBvcnQgZnVuY3Rpb24gZm9yCglkb19zY29wZWRfaWQgYW5kIGxvb2t1cF9uYW1lc3BhY2VfbmFtZS4KCShnZXRfbmFtZXNwYWNlX2lkKTogTWFyayBhcyBvYnNvbGV0ZS4KCShjdXJyZW50X25hbWVzcGFjZV9pZCk6IExpa2V3aXNlLgoJKGRvX25hbWVzcGFjZV9hbGlhcyk6IEltcGxlbWVudC4KCShkb191c2luZ19kaXJlY3RpdmUpOiBJbXBsZW1lbnQgYXMgY2FsbCB0byBhZGRfdXNpbmdfbmFtZXNwYWNlLgoJKiBkZWNsLmMgKGJpbmRpbmdfZm9yX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9uYW1lc3BhY2UsIHBvcF9uYW1lc3BhY2UpOiBJbXBsZW1lbnQuCgkocHVzaF9kZWNsKTogRG9uJ3QgaW5zdGFsbCBhIEZVTkNUSU9OX0RFQ0wgaW4gdGhlIGdsb2JhbCBicmFuY2guCgkobG9va3VwX25hbWVzcGFjZV9uYW1lKTogSW1wbGVtZW50IHVzaW5nIHF1YWxpZmllZCBsb29rdXAuCgkobG9va3VwX25hbWVfcmVhbCk6IEZvciBnbG9iYWwgc2NvcGluZywgbG9va3VwIGluCglnbG9iYWxfbmFtZXNwYWNlLiAgRm9yIG5hbWVzcGFjZSBzY29waW5nLCBsb29rdXAgaW4gZ2l2ZW4KCW5hbWVzcGFjZS4gIEZvciB1bnNjb3BlZCBsb29rdXAsIGl0ZXJhdGUgb3ZlciBuYW1lc3BhY2UsCgljb25zaWRlcmluZyB1c2luZyBkaXJlY3RpdmVzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBnbG9iYWxfbmFtZXNwYWNlLgoJKGdyb2t2YXJkZWNsKTogQnVpbGQgYXNzZW1ibGVyIG5hbWUgYXMgc3RhdGljIG5hbWUgZm9yIGdsb2JhbHMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgb2xkIG5hbWVzcGFjZSBtYW5nbGluZy4KCSh4cmVmX3RhZyk6IFdoZW4gaW5zdGFsbGluZyBhIGdsb2JhbCBiaW5kaW5nIGZvciB0aGUKCXRhZywgbWFrZSBzdXJlIHdlIGhhdmUgYW4gaWRlbnRpZmllci4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lKTogTWFuZ2xlIG5hbWVzcGFjZXMuCgkoYnVpbGRfcXVhbGlmaWVkX25hbWUpOiBMaWtld2lzZS4KCShidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBMaWtld2lzZS4KCSogbGV4LmMgKGJ1aWxkX2xhbmdfZGVjbCk6IFNldCBuYW1lc3BhY2UgZm9yIG5ldyBkZWNsYXJhdGlvbiB0bwoJY3VycmVudF9uYW1lc3BhY2UuCgkoZG9fc2NvcGVkX2lkKTogRmluZCBnbG9iYWwgbmFtZXMgaW4gZ2xvYmFsIG9yIGN1cnJlbnQKCW5hbWVzcGFjZSwgb3IgdXNpbmcgcXVhbGlmaWVkIG5hbWVzcGFjZSBsb29rdXAsIGRlcGVuZGluZyBvbgoJY29udGV4dC4KCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IFdoZW4gc2NvcGUgaXMgbmFtZXNwYWNlLCB1c2UKCWJ1aWxkX3hfZnVuY3Rpb25fY2FsbCBpbnN0ZWFkLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBXaGVuIHNjb3BlIGlzIG5hbWVzcGFjZSwgY29sbGFwc2UgcHJvY2Vzc2luZwoJdG8gbG9va3VwX25hbWVzcGFjZV9uYW1lIGluc3RlYWQuCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IFN1cHBvcnQgTkFNRVNQQUNFX0RFQ0wuCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBCaW5kIGdsb2JhbHMgdG8gY3VycmVudCBuYW1lc3BhY2UuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBMaWtld2lzZS4KCShsb29rdXBfdGFnKTogTGlrZXdpc2UuCgkobG9va3VwX25hbWVfY3VycmVudF9sZXZlbCk6IExpa2V3aXNlLgoJKHhyZWZfdGFnKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShpZGVudGlmaWVyX3R5cGVkZWNsX3ZhbHVlKTogTGlrZXdpc2UuCgkocmVhbF95eWxleCk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiBMaWtld2lzZS4KCSogcGFyc2UueSAodW5zY29wZWQpOiBMaWtld2lzZS4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4pOiBMaWtld2lzZS4KCSogc2lnLmMgKGJ1aWxkX3NpZ3RhYmxlKTogTGlrZXdpc2UuCgkqIHB0cmVlLmMgKGxhbmdfcHJpbnRfeG5vZGUpOiBOZXcgZnVuY3Rpb24uCgpUdWUgRmViIDI0IDAxOjQwOjI0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgaW5zdGFudGlhdGUgaWYgcGVkYW50aWMKCWFuZCB0aGUgYXJncyB1c2UgdGVtcGxhdGUgcGFybXMuCgoJKiBwdC5jIChwdXNoX3RpbnN0X2xldmVsKTogSWYgdGhlIGluc3RhbnRpYXRpb24gdXNlcyB0ZW1wbGF0ZSBwYXJtcywKCWZhaWwgc2lsZW50bHkuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBEbyBjYWxsIGNvbXBsZXRlX3R5cGUgZm9yIGJhc2V0eXBlcwoJdGhhdCBpbnZvbHZlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgpUdWUgRmViIDI0IDAwOjM2OjQzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogRml4IGxhYmVsZWQgaW5pdCBjaGVjay4KCk1vbiBGZWIgMjMgMDU6MDg6NTUgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYywgY2FsbC5jLCBkZWNsLmMsIG1ldGhvZC5jLCBjcC10cmVlLmg6IFJlbW92ZSB1bnVzZWQgTkFSR1MKCWFyZ3VtZW50IHRvIHRzdWJzdCBhbmQgZnJpZW5kcy4KCgkqIHB0LmMgKHRzdWJzdCwgRlVOQ1RJT05fREVDTCk6IFRpZHkuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogSGFuZGxlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KCXRlbXBsYXRlcyBsaWtlIG5vbi10ZW1wbGF0ZXMuICBIYW5kbGUgZnJpZW5kIHRlbXBsYXRlcyBsaWtlIG5vcm1hbAoJZnVuY3Rpb24gdGVtcGxhdGVzLgoJKiBwdC5jICh0c3Vic3QsICpfUEFSTSk6IERvbid0IHVzZSBvcmlnX2xldmVsLgoJKGdldF9iaW5kaW5ncyk6IERvbid0IGNhbGwgYWRkX3RvX3RlbXBsYXRlX2FyZ3MuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh0c3Vic3QsIEZVTkNUSU9OX0RFQ0wpOiBDYWxsIGFkZF90b190ZW1wbGF0ZV9hcmdzIGFzIGFwcHJvcHJpYXRlLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBQcmludCBpbmRleC9sZXZlbCBmb3IgdGVtcGxhdGUgcGFybXMuCgpNb24gRmViIDIzIDAyOjUyOjI5IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IE5vdGUgdGhhdCBjYzFwbHVzIGRlcGVuZHMgb24KCWNwL2NwLXRyZWUuaCBhbmQgY3AvY3AtdHJlZS5kZWYuCgoJKiBjcC10cmVlLmRlZiAoVEVNUExBVEVfQ09OU1RfUEFSTSk6IFJlbW92ZS4KCShURU1QTEFURV9QQVJNX0lOREVYKTogTmV3IHRyZWUgY29kZSwgdXNlZCB0byBpbmRpY2F0ZSBhCglwb3NpdGlvbiBpbiBhIHRlbXBsYXRlIHBhcmFtZXRlciBsaXN0LgoJKiBjcC10cmVlLmggKHRlbXBsYXRlX3Bhcm1faW5kZXgpOiBOZXcgc3RydWN0dXJlLCB1c2VkIGFzIHRoZSB0cmVlCglzdHJ1Y3R1cmUgZm9yIGEgVEVNUExBVEVfUEFSTV9JTkRFWC4KCShURU1QTEFURV9QQVJNX0lEWCk6IE5ldyBtYWNyby4KCShURU1QTEFURV9QQVJNX0xFVkVMKTogTGlrZXdpc2UuCgkoVEVNUExBVEVfUEFSTV9ERVNDRU5EQU5UUyk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1BBUk1fT1JJR19MRVZFTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1BBUk1fREVDTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfUEFSTV9JTkRFWCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfT1JJR19MRVZFTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfREVDTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX0NPTlNUX0lEWCk6IFJlbW92ZS4KCShURU1QTEFURV9DT05TVF9MRVZFTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX0NPTlNUX1NFVF9JTkZPKTogTGlrZXdpc2UuCgkoVEVNUExBVEVfVFlQRV9TRVRfSU5GTyk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfSURYKTogUmVkZWZpbmUgaW4gdGVybXMgb2YgVEVNUExBVEVfUEFSTV9JTkRFWAoJbm9kZS4KCShURU1QTEFURV9UWVBFX0xFVkVMKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBDYWxsIGNvbXBfdGVtcGxhdGVfcGFybXMsIHJhdGhlciB0aGFuCglleHBhbmRpbmcgaXQgaW5saW5lLgoJKGR1cGxpY2F0ZV9kZWNscyk6IElmIHR3byB0ZW1wbGF0ZSBkZWNsYXJhdGlvbnMgYXJlIGJlaW5nIG1lcmdlZCwKCXRoZW4gdGhlaXIgVEVNUExBVEVfSU5GT3Mgc2hvdWxkIGJlIG1lcmdlZCBhcyB3ZWxsLgoJKGdyb2tmbmRlY2wpOiBTYXZlIHRlbXBsYXRlLWlkIGluZm9ybWF0aW9uIHdoZW4gZGVjbGFyaW5nIGEgZnJpZW5kCgl3aXRoIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cy4gIFBhc3MgYXJndW1lbnRzIHRvCgljaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbiB2aWEgY29ycmVjdCBjb252ZW50aW9uOyBhdCBzb21lCglwb2ludCBjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbiBjaGFuZ2VkLCBidXQgdGhlc2UgY2FsbC1zaXRlcwoJZGlkIG5vdC4KCShncm9rZGVjbGFyYXRvcik6IFRpZHkgdXAgc2xpZ2h0bHkuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBUaWR5IHVwIHNsaWdodGx5LiAgRG9uJ3QgYXNzdW1lIHRoYXQKCXR3byB0ZW1wbGF0ZSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBERUNMX0FTU0VNQkxFUl9OQU1FIHRoZSBzYW1lLAoJc2luY2UgdGhlIG5hbWVzIGFyZSBub3QgeWV0IG1hbmdsZWQuCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IFVzZSBURU1QTEFURV9QQVJNX0lOREVYIGluc3RlYWQgb2YKCVRFTVBMQVRFX0NPTlNUX1BBUk0uCgkoZHVtcF9leHByKTogTGlrZXdpc2UuICBVc2UgdGhlIFRFTVBMQVRFX1BBUk1fREVDTCB0byBnZXQgYXQgdGhlCglkZWNsIGZvciBhIG5vbi10eXBlIHBhcmFtZXRlciwgcmF0aGVyIHRoYW4gcHJpbnRpbmcgYDx0cGFybSAuLi4+Jy4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IEhhbmRsZSBURU1QTEFURV9ERUNMIGZyaWVuZHMuCgkoZG9fZnJpZW5kKTogRGVhbCB3aXRoIHRlbXBsYXRlIGZyaWVuZHMuCgkqIGxleC5jIChkb19wZW5kaW5nX2lubGluZXMpOiBDYWxsCgltYXliZV9iZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZywgcmF0aGVyIHRoYW4KCWNvbmRpdGlvbmFsbHkgY2FsbGluZyBiZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZy4KCShwcm9jZXNzX25leHRfaW5saW5lKTogTGlrZXdpc2UuICBDYWxsCgltYXliZV9lbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcsIHJhdGhlciB0aGFuCgljb25kaXRpb25hbGx5IGNhbGxpbmcgZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nLgoJKGRvX3BlbmRpbmdfZGVmYXJncyk6IExpa2V3aXNlLgoJKGRvX2lkZW50aWZpZXIpOiBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkIG9mCglURU1QTEFURV9DT05TVF9QQVJNLgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF90ZW1wbGF0ZV9wYXJtX2luZGV4KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogVXNlIGl0LgoJKGJ1aWxkX292ZXJsb2FkX25hbWUpOiBMaWtld2lzZS4KCSogcHQuYyAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogQWxsb3cgZnJpZW5kIGRlY2xhcmF0aW9ucy4KCSh0ZW1wbGF0ZV9jbGFzc19kZXB0aCk6IE5ldyBmdW5jdGlvbi4KCShpc19tZW1iZXJfdGVtcGxhdGUpOiBSZW5hbWUsIGFuZCBtb2RpZnksIHRvIGJlY29tZS4uLgoJKGlzX21lbWJlcl9vcl9mcmllbmRfdGVtcGxhdGUpOiBOZXcgZnVuY3Rpb24uCgkoZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogUmVuYW1lLCBhbmQgbW9kaWZ5LCB0byBiZWNvbWUuLi4KCShtYXliZV9lbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpLgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1faW5kZXgpOiBOZXcgZnVuY3Rpb24uCgkocmVkdWNlX3RlbXBsYXRlX3Bhcm1fbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogTW9kaWZ5IHRvIHVzZSBidWlsZF90ZW1wbGF0ZV9wYXJtX2luZGV4LgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IERlYWwgd2l0aCBmcmllbmQgdGVtcGxhdGVzLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkIG9mCglURU1QTEFURV9DT05TVF9QQVJNLgoJKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBHZW5lcmF0ZSB0aGUgREVDTF9GUklFTkRMSVNUCglmb3IgYSBuZXcgaW5zdGFudGlhdGlvbiBieSB1c2luZyB0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uIHJhdGhlcgoJdGhhbiBqdXN0IHRzdWJzdC4KCSh0c3Vic3QpOiBEb24ndCB0c3Vic3QgaW50byBhIHR5cGUgd2hpY2ggaXMgYSBURU1QTEFURV9ERUNMLgoJVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZCBvZiBURU1QTEFURV9DT05TVF9QQVJNLCBhbmQgdGhlCglhcHByb3ByaWF0ZSBuZXcgbWFjcm9zLiAgVXNlIHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsIHRvCglnZW5lcmF0ZSBsb3dlci1sZXZlbCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLiAgSGFuZGxlIHRzdWJzdCdpbmcgaW50bwoJVEVNUExBVEVfREVDTFMgdGhhdCBkZWNsYXJlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1TLiAgRG9uJ3QgZm9yZ2V0Cgl0byB0c3Vic3QgdGhlIERFQ0xfQ09OVEVYVCBhbmQgREVDTF9DTEFTU19DT05URVhUIG9mIG5ld2x5IGNyZWF0ZWQKCXRlbXBsYXRlcy4gIFNpbWlsYXJseSBmb3IgdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMgZm9yIGEgbmV3Cgl0ZW1wbGF0ZS4KCSh0c3Vic3RfY29weSk6IFRpZHkgdXAgc2xpZ2h0bHkuICBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkCglvZiBURU1QTEFURV9DT05TVF9QQVJNLiAgSGFuZGxlIFRZUEVfREVDTHMgYnkgdHN1YnN0aW5nIGludG8gdGhlbS4KCSh1bmlmeSk6IFVzZSBURU1QTEFURV9QQVJNX0lOREVYIGluc3RlYWQgb2YgVEVNUExBVEVfQ09OU1RfUEFSTS4KCShnZXRfYmluZGluZ3MpOiBDYWxsIGFkZF90b190ZW1wbGF0ZV9hcmdzIGlmIG5lY2Vzc2FyeS4KCShpbnN0YW50aWF0ZV9kZWNsKTogSGFuZGxlIGluc3RhbnRpYXRpb25zIG9mIGZyaWVuZCB0ZW1wbGF0ZXMuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IERvbid0IHRyZWF0IHRoZSBUWVBFX0ZJRUxEUyBvZiBhCglURU1QTEFURV9UWVBFX1BBUk0gYXMgYSBsaXN0IG9mIGZpZWxkczsgaXQncyBub3QhCgkqIHNwZXcuYyAoeXlsZXgpOiBEbyBhIGxpdHRsZSBtYW51YWwgY29uc3RhbnQgcHJvcGFnYXRpb24gdG8KCWNsYXJpZnkgdGhlIGNvZGUuCgpTdW4gRmViIDIyIDE5OjUzOjI5IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGVycm9yLmM6IEluY2x1ZGUgc3lzL3R5cGVzLmguCgpUaHUgRmViIDE5IDE0OjQ5OjA5IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX25hbWUpOiBTdGFydCBDUFAgZGlyZWN0aXZlcyBpbiBjb2x1bW4gemVyby4KClRodSBGZWIgMTkgMTA6MzY6NDggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBTb3JyeSBhYm91dCBub24tdHJpdmlhbAoJbGFiZWxlZCBpbml0aWFsaXplcnMuCgkqIHBhcnNlLnkgKGluaXRsaXN0KTogUmUtZW5hYmxlIGxhYmVsZWQgaW5pdGlhbGl6ZXJzLgoKVGh1IEZlYiAxOSAxMDoxNTo1NSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIGEgbmV3IHBhcmFtZXRlciwgaXNfdG1wbF9wYXJtLAoJYWxsIGNhbGxlcnMgY2hhbmdlZC4gIFJlbHkgb24gdGhlIG5ldyBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhcmcKCWJlaW5nIGEgVFJFRV9MSVNUIHdoZW4gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgYXJlIHdvcmtpbmcgaW5zaWRlCgl0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuICBDbGVhbiB1cCBpc190eXBlIHRlc3QuCgpUaHUgRmViIDE5IDEwOjA0OjEyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBQcmVzZXJ2ZSBUUkVFX0NPTlNUQU5ULgoJKiB0eXBlY2syLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBBbGxvdyBjb252ZXJzaW9ucwoJYmV0d2VlbiBwb2ludGVycyBhbmQgcmVmZXJlbmNlcy4KCjE5OTgtMDItMTkgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBPbmx5IHdhcm4gYWJvdXQgaW5jci9kZWNyIGEgcG9pbnRlcgoJaWYgcGVkYW50aWMgfHwgd2Fybl9wb2ludGVyX2FyaXRoLgoKVGh1IEZlYiAxOSAwOTozNzoyMSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogcHQuYyAodW5pZnkpOiBIYW5kbGUgVEVNUExBVEVfREVDTC4KCjE5OTgtMDItMTggIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHN0cmlwX2F0dHJzKTogUmVtb3ZlIGRlY2wuCgoxOTk4LTAyLTE4ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IENhbGwgbWVyZ2VfbWFjaGluZV9kZWNsX2F0dHJpYnV0ZXMuCglVcGRhdGUgb2xkZGVjbCdzIGF0dHJpYnV0ZXMgdG9vLgoJKHN0cmlwX2F0dHJzKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoY29tbW9uX3R5cGUpOiBDYWxsIG1lcmdlX21hY2hpbmVfdHlwZV9hdHRyaWJ1dGVzLgoKVHVlIEZlYiAxNyAxNDowNzo1MiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55IChpbml0ZGNsMF9pbm5hcmRzKTogTmV3IGdyYW1tYXIgc3ltYm9sLgoJKG5vbW9kc19pbml0ZGVjbHMsIG5vbW9kc19pbml0ZGNsMCk6IENoYW5nZSB0eXBlIGZyb20gaXR5cGUgdG8KCW5vbmUsIHNpbmNlIHRoZSByZXN1bHRpbmcgdmFsdWUgaXMgbmV2ZXIgdXNlZC4KCShwYXJzZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGRhdGFkZWYpOiBSZW1vdmUgcmVkdW5kYW50IGFjdGlvbnMuCgkoaW5pdGRjbDAsIG5vdHlwZV9pbml0ZGNsMCwgbm9tb2RzX2luaXRkY2wwKTogVXNlIGluaXRkY2wwX2lubmFyZHMuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKVHVlIEZlYiAxNyAxMTo1NDoxNiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IFVzZSBnZXRkZWNscygpIHRvIGNoZWNrIGZvciBkZWNsLgoKU2F0IEZlYiAxNCAxMTo1MDo1MSAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKERFTUFOR0xFUl9JTlNUQUxMX05BTUUsIERFTUFOR0xFUl9DUk9TU19OQU1FKTogTmV3CgltYWNyb3MuCgkoYysrLmluc3RhbGwtY29tbW9uKTogSW5zdGFsbCBjKytmaWx0IHByb3Blcmx5IGFzIG5hdGl2ZSBvciBhcyBjcm9zcwoJdmFyaWFudC4KCShjKysudW5pbnN0YWxsKTogQWRkIGMrK2ZpbHQuCgpGcmkgRmViIDEzIDE0OjU1OjM3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IEZpeCBtdWx0aS1sZXZlbCBwdHIgY29udmVyc2lvbnMuCgpGcmkgRmViIDEzIDE0OjA2OjIyIDE5OTggIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogUHJvcGFnYXRlIGVycm9yX21hcmtfbm9kZSB1cC4KCkZyaSBGZWIgMTMgMTM6MjQ6MzIgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBJZiB0aGUgY29uZGl0aW9uIGlzbid0IGEgZGVjbGFyYXRpb24sCglzdGFydCB0aGUgY29udHJvbGxlZCBibG9jayBhZnRlciB0aGUgdGVzdC4KCkZyaSBGZWIgMTMgMDI6MjY6MTAgMTk5OCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENvbnZlcnQgYnVpbHRpbiBhYnMsIGxhYnMgYW5kIGZhYnMgdG8KCXRyZWUtY29kZXMuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZS1lbmFibGUgYWJzLCBsYWJzIGFuZCBmYWJzIGFzCglidWlsdGlucy4KCkZyaSBGZWIgMTMgMDE6MzY6NDIgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogQSBCQVNFX0NPTlYgcmVwbGFjZXMgYW4gUlZBTFVFX0NPTlYuCgpGcmkgRmViIDEzIDAwOjIxOjU5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogQWRkIGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbF9ub2RlLgoJKiBjbGFzcy5jIChpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGl0LgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogVXNlIGl0LgoJKiBwYXJzZS55IChiYXNlX2NsYXNzX2FjY2Vzc19saXN0KTogTGlrZXdpc2UuCgoJKiBNYWtlLWxhbmcuaW4gKERFTUFOR0xFUl9QUk9HKTogQWRkICQoZXhlZXh0KS4KCShjKysuaW5zdGFsbC1jb21tb24pOiBJbnN0YWxsIGMrK2ZpbHQuCgpUaHUgRmViIDEyIDEyOjQ2OjUxIDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc2hhZG93X3RhZyk6IEdpdmUgZXJyb3IgZm9yIHR5cGVkZWYtaW5nIGJ1aWx0LWluIHR5cGVzLgoKV2VkIEZlYiAxMSAyMzoyODowNSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjYWxsLmMgKHJlZmVyZW5jZV9iaW5kaW5nKTogVXNlIGNvbXB0eXBlcyB3aGVuIGNvbXBhcmluZwoJVFlQRV9NQUlOX1ZBUklBTlRTIHRvIGhhbmRsZSBub24tY2Fub25pY2FsIGFycmF5L2luZGV4IHR5cGVzLgoKV2VkIEZlYiAxMSAxNjo0MjowNCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBVc2UgcmVhbGx5X292ZXJsb2FkZWRfZm4uCgkocmVhbGx5X292ZXJsb2FkZWRfZm4pOiBNb3ZlIGNoZWNrIGhlcmUgZnJvbSBpc19vdmVybG9hZGVkX2ZuLgoJKGdldF9maXJzdF9mbik6IFVzZSByZWFsbHlfb3ZlcmxvYWRlZF9mbiBhbmQgaXNfb3ZlcmxvYWRlZF9mbi4KCldlZCBGZWIgMTEgMTU6NTQ6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMpOiBUeXBlLWNoZWNrIHBvaW50ZXItdG8tbWVtYmVyCgljb252ZXJzaW9ucy4KCk1vbiBGZWIgIDkgMjI6MjM6MzEgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBSZXR1cm4gdGhlIGRlY2wgcGFzc2VkIGluLCBvciBhbgoJZXF1aXZhbGVudCBkdXBsaWNhdGUuCgkqIGRlY2wuYyAocHVzaHRhZyk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gcHVzaF90ZW1wbGF0ZV9kZWNsLgoJKGR1cGxpY2F0ZV9kZWNscyk6IFdoZW4gZHVwbGljYXRpbmcgYSB0ZW1wbGF0ZSBkZWNsYXJhdGlvbiwgbWVyZ2UKCXRoZSBERUNMX1RFTVBMQVRFX1JFU1VMVHMgYXMgd2VsbC4KCShtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogRG9uJ3QgdHJ5IHRvIGRpdmUgaW50byB0eXBlbmFtZSB0eXBlcyB0bwoJZmluZCBhIGNvbnRleHQgZm9yIG1ha2luZyBhIG5ldyBpbXBsaWNpdCB0eXBlbmFtZS4KCShzdGFydF9kZWNsKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBwdXNoX3RlbXBsYXRlX2RlY2wuCgkoZ3Jva2RlY2xhcmF0b3IpOiBDb21wbGFpbiBhYm91dCBkZWNsYXJhdGlvbnMgbGlzdCBgY29uc3Qgb3BlcmF0b3IKCWludCcuICBTaW5jZSB3ZSBkb24ndCBjb3JyZWN0bHkgaGFuZGxlIGluLWNsYXNzIGluaXRpYWxpemF0aW9ucyBvZgoJbm9uLXN0YXRpYyBkYXRhIG1lbWJlcnMsIGNvbXBsYWluIGFib3V0IHRoaXMgKG5vdyBpbGxlZ2FsKQoJcHJhY3RpY2UuICBJc3N1ZSBhbiBlcnJvciBmb3IgaW5pdGlhbGl6YXRpb25zIG9mIG5vbi1jb25zdCBzdGF0aWNzCglzaW5jZSB0aGF0IGlzIGlsbGVnYWwgYXMgd2VsbCwgYW5kIHNpbmNlIHdlIGRvbid0IGhhbmRsZSB0aGF0IGNhc2UKCWNvcnJlY3RseSBlaXRoZXIuCgkoc3RhcnRfZnVuY3Rpb24pOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHB1c2hfdGVtcGxhdGVfZGVjbC4KCShzdGFydF9tZXRob2QpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuICBTaW5jZSB0aGUgY2hhbmdlIHRvCglncm9rZGVjbGFyYXRvciBlbnN1cmVzIHRoYXQgYWxsIGluaXRpYWxpemVkIGZpZWxkcyBhcmUgaW4gZmFjdAoJc3RhdGljLCByZW1vdmUgYSByZWR1bmRhbnQgdGVzdCBmb3IgVFJFRV9QVUJMSUMuCgkqIHBhcnNlLnkgKGluaXRsaXN0KTogRGlzYWJsZSBsYWJlbGVkIGluaXRpYWxpemVycyBzaW5jZSB0aGV5IGRvCglub3Qgd29yayBhcyBwZXIgdGhlIGRvY3VtZW50YXRpb24sIGFuZCBzaW5jZSB0aGV5IGRvIG5vdCB1c2UgdGhlCglzYW1lIHN5bnRheCBhcyB0aGUgQyBmcm9udCBlbmQuCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IFJldHVybiB0aGUgZGVjbCBwYXNzZWQgaW4sIG9yIGFuCgllcXVpdmFsZW50IGR1cGxpY2F0ZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBXaGVuIHNlYXJjaGluZyBpbiBhIG5lc3RlZCBjb250ZXh0LAoJdXNlIHRoZSByaWdodCBhcmd1bWVudHMuCgkodXNlc190ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSB0aGUgREVDTF9JTklUSUFMIGZvciBhIENPTlNUX0RFQ0wuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogQXNzaWduIHRoZSBjb3JyZWN0IHR5cGUgdG8gdGhlCglyZXN1bHQgb2YgYnVpbGRfdmZuX3JlZi4KClR1ZSBGZWIgMTAgMjM6NTY6NDYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogRml4IHR5cG8uCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBbGxvdyBvbGQtc3R5bGUgc3BlY2lhbGl6YXRpb24KCW9mIGNsYXNzIHRlbXBsYXRlIG1lbWJlcnMuCgpUdWUgRmViIDEwIDIwOjM2OjUyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCQkJICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIERFQ0xfVVNFX1RFTVBMQVRFIGluc3RlYWQKCXdoZW4gZGVjaWRpbmcgdG8gb3ZlcnJpZGUgREVDTF9BU1NFTUJMRVJfTkFNRS4KClR1ZSBGZWIgMTAgMTU6MzA6NTUgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEB0b3JwZWRvLnRvLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2Zfb3B0aW9ucyk6IEFkZCAtZnNxdWFuZ2xlIHRvIG9wdGlvbiBwcm9jZXNzaW5nIGxpc3QuCgkqIGNwLXRyZWUuaCAoZmxhZ19kb19zcXVhbmdsaW5nKTogQWRkIGRlY2xhcmF0aW9uLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mc3F1YW5nbGUgYW5kIC1mbm8tc3F1YW5nbGUuCgkqIG1ldGhvZC5jOiBBZGQgbWFjcm9zIGFuZCBzdGF0aWMgdmFyaWFibGVzIGZvciBzcXVhbmdsaW5nLgoJKGJ1aWxkX292ZXJsb2FkX25hbWUpOiBSZW5hbWUgdG8gYnVpbGRfbWFuZ2xlZF9uYW1lLCBhZGQgbG9naWMgZm9yIEIKCWNvbXByZXNzaW9uLCBhbmQgc3BsaXQgaW50byBwcm9jZXNzX21vZGlmaWVycyBhbmQKCXByb2Nlc3Nfb3ZlcmxvYWRfaXRlbS4KCShwcm9jZXNzX21vZGlmaWVycyk6IE5ldyBmdW5jdGlvbiwgdG8gaGFuZGxlIGNvbnN0YW50LCByZWZlcmVuY2UsCglhbmQgcG9pbnRlciB0eXBlcy4KCShwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBOZXcgZnVuY3Rpb24sIGhhbmRsZXMgaXNzdWUgb2YgdHlwZSBjb2Rlcy4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogTmV3IGZ1bmN0aW9uLCBzdGFydCBzcXVhbmdsaW5nIGFuZCBjYWxsCglidWlsZF9tYW5nbGVkX25hbWUuCgkoQUxMT0NBVEVfVFlQRVZFQywgREVBTExPQ0FURV9UWVBFVkVDKTogUmVtb3ZlIG1hY3JvIGFuZCBleHBhbmQgaW5saW5lLgoJKHN0YXJ0X3NxdWFuZ2xpbmcpOiBOZXcgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBzcXVhbmdsaW5nIHN0cnVjdHMuCgkoZW5kX3NxdWFuZ2xpbmcpOiBOZXcgZnVuY3Rpb24gdG8gZGVzdHJveSBzcXVhbmdsaW5nIHN0cnVjdHMuCgkobnJlcGVhdHMpOiBSZW5hbWUgdmFyaWFibGUgdG8gTnJlcGVhdHMuCgkoaXNzdWVfbnJlcGVhdHMpOiBOZXcgZnVuY3Rpb24gZm9yIGlzc3VpbmcgJ24nIHR5cGUgcmVwZWF0cy4KCShjaGVja19rdHlwZSk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayBmb3IgdHlwZSBLIG5hbWUgY29tcHJlc3Npb24uCgkoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBBZGQgYSBjaGVjayBmb3IgSyBuYW1lIGNvbXByZXNzaW9uLgoJKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogQWRkIGEgY2hlY2sgZm9yIEsgbmFtZSBjb21wcmVzc2lvbiBhbmQgZG9uJ3QKCXVzZSBERUNMX0FTU0VNQkxFUl9OQU1FIHdoZW4gc3F1YW5nbGluZyBpcyBvbi4KCShjaGVja19idHlwZSk6IE5ldyBmdW5jdGlvbiwgY2hlY2tzIGZvciBCIHR5cGUgY29tcHJlc3Npb24uCgkoYnVpbGRfc3RhdGljX25hbWUsIGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IEluaXRpYXRlIHNxdWFuZ2xpbmcuCgkoYnVpbGRfdHlwZW5hbWVfb3ZlcmxvYWQsIGJ1aWxkX292ZXJsb2FkX3dpdGhfdHlwZSk6IEluaXRpYXRlCglzcXVhbmdsaW5nCgpTdW4gRmViICA4IDIzOjQ3OjM4IDE5OTggIHNjb3R0IHNueWRlciAgPHNzc0BkMGxpbnV4MDEuZm5hbC5nb3Y+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IEF2b2lkIG5hbWUgYnVmZmVyIG92ZXJmbG93LgoKU2F0IEZlYiAgNyAxNjo0ODo1NCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogQ2FsbCBjcF9maW5pc2hfZGVjbCBmb3IgdmFycyBldmVuIGlmIHdlCglkb24ndCBkZWZpbmUgdGhlbSB5ZXQuCgoJKiBwYXJzZS55IChub21vZHNfaW5pdGRjbDApOiBBZGQgY29uc3RydWN0b3JfZGVjbGFyYXRvciBjYXNlLgoKRnJpIEZlYiAgNiAyMTozMjoyNSAxOTk4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnLWxhbmcuaW4gKGRpZmZfZXhjbHVkZXMpOiBVc2UgYmFzZW5hbWUgb25seS4KClRodSBGZWIgIDUgMTk6MTA6NDAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGluZm8yLmNjOiBBZGQgdGluZm8gZm9yIHNpZ25lZCBjaGFyLgoKVGh1IEZlYiAgNSAxNDozODoyMyAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBIYW5kbGUgcHJvdGVjdGVkIGNvbnN0cnVjdG9ycyBpbiBkZXJpdmVkCgljbGFzc2VzIGFzIGFjY2Vzc2libGUuCgpXZWQgRmViICA0IDAxOjI2OjQ5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIsIFBDQ19TVEFUSUNfU1RSVUNUX1JFVFVSTiBjb2RlKToKCUNhbGwgY29udmVydF9mcm9tX3JlZmVyZW5jZSBzb29uZXIuCgpUdWUgRmViICAzIDIzOjUwOjUyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGN2dC5jIChvY3BfY29udmVydCk6IE9idGFpbiB0aGUgY29uc3RhbnQgdmFsdWVzIGZyb20gY29uc3RhbnQKCWRlY2xzIGV2ZW4gaWYgdGhlIGRlc3RpbmF0aW9uIHR5cGUgaXMgdGhlIHNhbWUgYXMgdGhlIHR5cGUgb2YgdGhlCglkZWNsLgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBNYWtlIHN1cmUgdGhhdCBzdGF0aWMgaW5saW5lcyB3aXRoCglkZWZpbml0aW9ucyBhcmUgbm90IG1hcmtlZCBERUNMX0VYVEVSTkFMIGJlZm9yZSByZXR1cm5pbmcuCgpUdWUgRmViICAzIDIyOjQzOjQyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYzogTG9zZSBhcmdfbG9va2luZ19mb3JfdGVtcGxhdGUuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMb3NlIHByb2Nlc3NpbmdfdGVtcGxhdGVfYXJnLCB0ZW1wbGF0ZV9hcmcxLgoJKHByaW1hcnkpOiBMaWtld2lzZS4KCSogc3Bldy5jICh5eWxleCk6IFNldCBsYXN0aWRkZWNsIGZvciBQVFlQRU5BTUVzLCB0b28uCgpUdWUgRmViICAzIDIyOjA0OjAxIDE5OTggIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLnVzYy5lZHU+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBGaXggdHlwZSBvZiBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgdGVtcGxhdGUKCXRlbXBsYXRlIHBhcmFtZXRlcnMgYW5kIG5vbnR5cGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCSogcGFyc2UueSAodGVtcGxhdGVfcGFybSk6IEhhbmRsZSBpbnZhbGlkIGRlZmF1bHQgdGVtcGxhdGUKCXRlbXBsYXRlIGFyZ3VtZW50cyBoZXJlLgoKCSogcGFyc2UueSAodGVtcGxhdGVfcGFybSk6IFVzZSB0ZW1wbGF0ZV9hcmcgaW5zdGVhZCBvZiBQVFlQRU5BTUUKCWZvciBkZWZhdWx0IHRlbXBsYXRlIHRlbXBsYXRlIGFyZ3VtZW50LgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBNZXJnZSBkZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50Cgljb2Rlcy4gIENhbiB0cmVhdCBSRUNPUkRfVFlQRSBhcyB0ZW1wbGF0ZSBuYW1lIGlmIGl0IGlzIGltcGxpY2l0bHkKCWNyZWF0ZWQuICBGaXggYXJndW1lbnQgaW5kZXggaW4gZXJyb3IgbWVzc2FnZS4KCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IE1lcmdlIHRlbXBsYXRlIGFyZ3VtZW50IGNvbXBhcmlzb24gY29kZXMgaW4KCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk0gYW5kIFJFQ09SRF9UWVBFLgoKVHVlIEphbiAgNiAwMTo0Mjo0NCAxOTk4ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGxleC5jIChmaWxlX25hbWVfbm9uZGlyZWN0b3J5KTogQWxzbyBjaGVjayBmb3IgJy8nLgoKTW9uIEZlYiAgMiAxMToyNDoyMiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55IChwcmltYXJ5KTogRGVhbCB3aXRoIHN0YXRlbWVudC1leHByZXNzaW9ucyBpbgoJdGVtcGxhdGVzLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEhhbmRsZSBCSU5EX0VYUFIuCgkqIHRyZWUuYyAobWFwY2FyKTogTGlrZXdpc2UuCgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCk6IFBhc3MgZXh0cmEgcGFyYW1ldGVyIHRvCglmbl90eXBlX3VuaWZpY2F0aW9uLgoJKiBjcC10cmVlLmggKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBZGQgcGFyYW1ldGVyLgoJKiBwdC5jIChmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRkIGFkZGl0aW9uYWwgcGFyYW1ldGVyIHRvIGRlYWwgd2l0aAoJc3RhdGljIG1lbWJlciBmdW5jdGlvbnMuCgkoZ2V0X2JpbmRpbmdzKTogRGVhbCB3aXRoIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zLgoKCSogY3AtdHJlZS5oIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCk6IE5ldyBtYWNyby4KCShyZXZlcnRfc3RhdGljX21lbWJlcl9mbik6IERlY2xhcmUuCgkqIGRlY2wuYyAocmV2ZXJ0X3N0YXRpY19tZW1iZXJfZm4pOiBSZW1vdmUgZGVjbGFyYXRpb24uICBDaGFuZ2UKCWxpbmthZ2UgZnJvbSBpbnRlcm5hbCB0byBleHRlcm5hbC4KCShjcF9maW5pc2hfZGVjbCk6IERlYWwgd2l0aCB2aXJ0dWFsIGZ1bmN0aW9ucyBpbiBjbGFzc2VzIGxvY2FsIHRvCgl0ZW1wbGF0ZSBmdW5jdGlvbnMuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRG9uJ3QgZm9yZ2V0IHRvIGVtaXQgaW5jcmVtZW50L2RlY3JlbWVudAoJZXhwcmVzc2lvbnMgaW4gaW5pdGlhbGl6ZXJzIGZvciBmaWxlLXNjb3BlIHZhcmlhYmxlcy4KCSogcGFyc2UueSAodHlwZW5hbWVfc3ViMik6IElmIHRoZSB0eXBlbmFtZSBkb2Vzbid0IG5hbWVzIGEKCXRlbXBsYXRlLCByYXRoZXIgdGhhbiBhIHR5cGUsIGlzc3VlIGFuIGVycm9yIG1lc3NhZ2UuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogSGFuZGxlIHNwZWNpYWxpemF0aW9ucyBvZgoJc3RhdGljIG1lbWJlciBmdW5jdGlvbnMuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogSGFuZGxlIG9mZnNldCByZWZlcmVuY2VzIHRvIGxpc3RzIG9mCgltZW1iZXIgZnVuY3Rpb25zLgoJKiBzZWFyY2guYyAobm90ZV9kZWJ1Z19pbmZvX25lZWRlZCk6IERvbid0IGNyYXNoIHdoZW4gaGFuZGVkIGEKCXR5cGUgd2hpY2ggaXMgYmVpbmcgZGVmaW5lZC4KCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGUpOiBEb24ndCBjcmFzaCB3aGVuIGhhbmRlZCBOVUxMX1RSRUU7Cgl0aGF0IGNhbiBoYXBwZW4gd2l0aCBzb21lIGlsbGVnYWwgY29kZS4KCk1vbiBGZWIgIDIgMDA6NTc6MzggMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbC5jICh1c2VyX2hhcnNobmVzcyk6IEluaXRpYWxpemUgYGNvZGUnIHRvIDAuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBJbml0aWFsaXplIGBjYW5kaWRhdGVzJywgYGNwJyBhbmQgYGxlbicgdG8gMC4KCShudWxsX3B0cl9jc3RfcCk6IEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgJiYgd2l0aGluIHx8LgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSh6X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBJbml0aWFsaXplIGBhcmdzJyB0byBOVUxMX1RSRUUuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMaWtld2lzZSBmb3IgYG1lbV9hcmdzJy4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZSBmb3IgYG1lbV9hcmdsaXN0Jy4gIEFkZCBgcmV0dXJuJyBmcm9tCglkZWZhdWx0IGNhc2UgaW4gZW51bWVyYXRpb24gc3dpdGNoLgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5KTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZAoJYW1iaWd1b3VzIGBlbHNlJy4KCShidWlsZF9jbGFzc19pbml0X2xpc3QpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBJbml0aWFsaXplIGB3aWR0aCcgdG8gMC4KCShpbnN0YW50aWF0ZV90eXBlKTogSW5pdGlhbGl6ZSBgbmFtZScgdG8gTlVMTF9UUkVFLiAgQWRkCglleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX2FnZ3IpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cwoJYGVsc2UnLgoKCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogRWxpbWluYXRlIHVudXNlZCBwYXJhbWV0ZXIsIGFsbAoJY2FsbGVycyBjaGFuZ2VkLgoJKHJlY29yZF9idWlsdGluX3R5cGUpOiBJbml0aWFsaXplIGB0ZGVjbCcgdG8gTlVMTF9UUkVFLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBgdmJfb2ZmX2lkZW50aWZpZXInIHRvIE5VTExfVFJFRS4KCShjcF9maW5pc2hfZGVjbCk6IEluaXRpYWxpemUgYHR0eXBlJyB0byBOVUxMX1RSRUUuCgkoZ3Jva2RlY2xhcmF0b3IpOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kICYmIHdpdGhpbiB8fC4gIEFkZAoJZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgkoZ3Jva3Bhcm1zKTogSW5pdGlhbGl6ZSBgdHlwZScgdG8gTlVMTF9UUkVFLgoJKHhyZWZfdGFnKTogUmVtb3ZlIHVudXNlZCBsYWJlbCBganVzdF9yZXR1cm4nLgoJKGZpbmlzaF9lbnVtKTogSW5pdGlhbGl6ZSBgbWlubm9kZScgYW5kIGBtYXhub2RlJyB0byBOVUxMX1RSRUUuCgkoZmluaXNoX2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBgY29uZCcgYW5kIGB0aGVuY2xhdXNlJyB0byBOVUxMX1RSRUUuCgkoaGFja19pbmNvbXBsZXRlX3N0cnVjdHVyZXMpOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kIGFzc2lnbm1lbnQKCXVzZWQgYXMgdHJ1dGggdmFsdWUuCgoJKiBkZWNsMi5jIChjb2VyY2VfZGVsZXRlX3R5cGUpOiBIaWRlIGRlZmluaXRpb24gb2YgYGUzJy4KCgkqIGVycm9yLmM6IEluY2x1ZGUgPHN0ZGxpYi5oPi4KCShkdW1wX2V4cHIpOiBDaGFuZ2UgdGhlIHR5cGUgb2YgYGknIHRvIHNpemVfdC4gIFJlbW92ZSB1bnVzZWQKCWxhYmVsIGBlcnJvcicuCgoJKiBleGNlcHQuYyAoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGQnLgoJKGV4cGFuZF90aHJvdyk6IExpa2V3aXNlIGZvciBgbGFiZWwnLgoKCSogZnJpZW5kLmMgKGFkZF9mcmllbmRzKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMKCWBlbHNlJy4KCgkqIGluaXQuYyAoc29ydF9tZW1iZXJfaW5pdCk6IEluaXRpYWxpemUgYGxhc3RfZmllbGQnIHRvIE5VTExfVFJFRS4KCShzb3J0X2Jhc2VfaW5pdCk6IExpa2V3aXNlIGZvciBgYmluZm8nLgoJKGV4cGFuZF9tZW1iZXJfaW5pdCk6IExpa2V3aXNlIGZvciBgcnZhbCcuCgkoYnVpbGRfbWVtYmVyX2NhbGwpOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kIGFzc2lnbm1lbnQgdXNlZCBhcwoJdHJ1dGggdmFsdWUuCgkoYnVpbGRfb2Zmc2V0X3JlZik6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCShidWlsZF9uZXcpOiBJbml0aWFsaXplIGBuZWx0cycgdG8gTlVMTF9UUkVFLiAgSW5pdGlhbGl6ZQoJYG9sZF9pbW1lZGlhdGVfc2l6ZV9leHBhbmQnIHRvIDAuCgkoYnVpbGRfbmV3XzEpOiBJbml0aWFsaXplIGBuZWx0cycgYW5kIGBhbGxvY19ub2RlJyB0byBOVUxMX1RSRUUuCgkoYnVpbGRfdmVjX2RlbGV0ZV8xKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgYmxvY2snLgoJKGV4cGFuZF92ZWNfaW5pdCk6IEluaXRpYWxpemUgYGl0eXBlJyB0byBOVUxMX1RSRUUuCgoJKiBsZXguYzogSW5jbHVkZSA8c3RyaW5ncy5oPiBpZiB3ZSBkb24ndCBoYXZlIDxzdHJpbmcuaD4uICBQcm90ZWN0CglkZWNsYXJhdGlvbiBvZiBgaW5kZXgnIGFuZCBgcmluZGV4JyB3aXRoIGF1dG9jb25mIG1hY3Jvcy4KCShyZWluaXRfcGFyc2VfZm9yX2V4cHIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwoJYGxvb2tfZm9yX3NlbWljb2xvbicgYW5kIGBsb29rX2Zvcl9sYnJhYycuCgkoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBgYXJncycgdG8gTlVMTF9UUkVFLgoJKHJlYWRlc2NhcGUpOiBJbml0aWFsaXplIGBmaXJzdGRpZycgdG8gMC4KCShyZWFsX3l5bGV4KTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50IHVzZWQgYXMgdHJ1dGggdmFsdWUuCgoJKiBtZXRob2QuYzogSW5jbHVkZSA8c3RyaW5ncy5oPiBpZiB3ZSBkb24ndCBoYXZlIDxzdHJpbmcuaD4uCglQcm90ZWN0IGRlY2xhcmF0aW9uIG9mIGBpbmRleCcgd2l0aCBhdXRvY29uZiBtYWNyby4KCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCglJbml0aWFsaXplIGB0eXBlJyB0byBOVUxMX1RSRUUuCgkoc3RydWN0c3ApOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBpZCcuCgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkCglhbWJpZ3VvdXMgYGVsc2UnLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEluaXRpYWxpemUgYHRlbXBsYXRlJyB0byBOVUxMX1RSRUUuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBuYW1lJyBhbmQgYGUnLgoJKHRzdWJzdCk6IExpa2V3aXNlIGZvciBgaScuICBJbml0aWFsaXplIGBsYXN0JyB0byBOVUxMX1RSRUUuCgkoZG9fcG9wbGV2ZWwpOiBJbml0aWFsaXplIGBzYXZlZF93YXJuX3VudXNlZCcgdG8gMC4KCSh0eXBlX3VuaWZpY2F0aW9uKTogUmVtb3ZlIHVudXNlZCB2YXJhYmxlIGBwYXJtJy4KCSh1bmlmeSk6IExpa2V3aXNlIGZvciBgaicuCgoJKiByZXBvLmMgKGluaXRfcmVwbyk6IEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgYXNzaWdubWVudCB1c2VkIGFzCgl0cnV0aCB2YWx1ZS4KCShmaW5pc2hfcmVwbyk6IFJlbW92ZSB1bnVzZWQgdmFyYWJsZSBgcCcuCgoJKiBzZWFyY2guYyAoZ2V0X2JpbmZvKTogSW5pdGlhbGl6ZSBgdHlwZScgdG8gTlVMTF9UUkVFLgoJKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgkobG9va3VwX2ZpZWxkKTogSW5pdGlhbGl6ZSBgcnZhbF9iaW5mb19oJywgYHR5cGUnLCBgYmFzZXR5cGVfcGF0aCcKCWFuZCBgbmV3X3YnIHRvIE5VTExfVFJFRS4KCShsb29rdXBfZm5maWVsZHMpOiBMaWtld2lzZSBmb3IgYHJ2YWxfYmluZm9faCcuCgkoYnJlYWR0aF9maXJzdF9zZWFyY2gpOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kIGFzc2lnbm1lbnQgdXNlZCBhcwoJdHJ1dGggdmFsdWUuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBJbml0aWFsaXplIGB0eXBlJyB0byBOVUxMX1RSRUUuCgoJKiBzaWcuYyAoYXBwZW5kX3NpZ25hdHVyZV9maWVsZHMpOiBJbml0aWFsaXplIGBsYXN0X21mcHRyJyB0bwoJTlVMTF9UUkVFLgoJKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlIGZvcgoJYGxhc3RfcmhzX2ZpZWxkJywgYHBmbicgYW5kIGB2dF9vZmYnLgoJKGJ1aWxkX3NpZ3RhYmxlKTogTGlrZXdpc2UgZm9yIGBpbml0Jy4KCgkqIHRyZWUuYyAoYnJlYWtfb3V0X2NhbGxzKTogSW5pdGlhbGl6ZSBgdDInIHRvIE5VTExfVFJFRS4KCShwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyk6IExpa2V3aXNlIGZvciBgZGVsdGEnLgoJKGhhc2hfdHJlZV9jb25zKTogSW5pdGlhbGl6ZSBoYXNoY29kZSB0byAwLgoJKGNhbl9mcmVlKTogTGlrZXdpc2UgZm9yIGBzaXplJy4KCShjcF90cmVlX2VxdWFsKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgYGVsc2UnLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfc2VxdWVuY2UpOiBIaWRlIHByb3RvdHlwZS4KCShjb21tb25fdHlwZSk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCShjb21wX3RhcmdldF90eXBlcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEluaXRpYWxpemUgYGN0eXBlcHRyJyB0byBOVUxMX1RSRUUuCgkoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMKCWBlbHNlJy4KCShjb252ZXJ0X2FyZ3VtZW50cyk6IEluaXRpYWxpemUgYGNhbGxlZF90aGluZycgdG8gMC4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IEluaXRpYWxpemUgYHNhdmV3JyBhbmQgYHNhdmVlJyB0byAwLgoKCSogdHlwZWNrMi5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBJbml0aWFsaXplIGBlcnJtc2cnIHRvIDAuCgkoZGlnZXN0X2luaXQpOiBJbml0aWFsaXplIGBvbGRfdGFpbF9jb250ZW50cycgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX3hfYXJyb3cpOiBMaWtld2lzZSBmb3IgYGxhc3RfcnZhbCcuCgoJKiB4cmVmLmMgKEdOVV94cmVmX2RlY2wpOiBJbml0aWFsaXplIGBjbHMnIHRvIDAuCgpTdW4gRmViICAxIDEyOjQ1OjM0IDE5OTggIEoib3JuIFJlbm5lY2tlICA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIHNldF9zaXpldHlwZS4KCSogZGVjbDIuYyAoc2l6ZXR5cGUpOiBEb24ndCBkZWNsYXJlLgoJKiB0eXBlY2suYyAoY19zaXplb2YpOiBDb252ZXJ0IHJlc3VsdCBvZiAqX0RJVl9FWFBSIHRvIHNpemV0eXBlLgoJKGNfc2l6ZW9mX25vd2FybiwgYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9hZGRyLCB1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGV4cGFuZF9jbGFzc19kZXNjKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGdldF92ZmllbGRfb2Zmc2V0KTogTGlrZXdpc2UuCgpUaHUgSmFuIDI5IDEwOjM5OjMwIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IE1vdmUgY2hlY2sgZm9yIGlzX292ZXJsb2FkZWRfZm4KCWVhcmx5IHRvIGF2b2lkIGJvZ3VzIGVycm9yLiAgSGFuZGxlIG92ZXJsb2FkZWQgZnVuY3Rpb24KCW5hbWVzIHByb3ZpZGVkIGFzIHRlbXBsYXRlIGFyZ3VtZW50cyBjb3JyZWN0bHkuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgbWlzaGFuZGxlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdoZW4KCWRlYWxpbmcgd2l0aCB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IElzc3VlIGFuIGVycm9yIG1lc3NhZ2UsIHJhdGhlciB0aGFuCgljcmFzaGluZywgd2hlbiB0aGUgVFlQRV9ERUNMIHByb3ZpZGVkIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUuCgpXZWQgSmFuIDI4IDIzOjE0OjQ0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBqdXN0IHJldHVybiBhIGtub3duIHR5cGUgaWYKCWl0J3Mgd3JvbmcuCgpXZWQgSmFuIDI4IDExOjA0OjA3IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBSZW1vdmUgaGFuZGxpbmcgb2YgRlVOQ1RJT05fREVDTAoJc2luY2UgdGhhdCBjb2RlIGNvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBBdm9pZCBhYm9ydGluZyBpbiB0aGUgbWlkc3Qgb2YgcHJpbnRpbmcgYW4KCWVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gaWxsZWdhbCB0ZW1wbGF0ZSBkZWNsYXJhdGlvbi4KCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSwgcmF0aGVyIHRoYW4gY3Jhc2hpbmcsCgl3aGVuIGEgY2xhc3MtaGVhZCBkb2VzIG5vdCBuYW1lIGEgY2xhc3MuCgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiAgQWxsb3cgUkVBTF9UWVBFIGFuZCBDT01QTEVYX1RZUEUKCXRlbXBsYXRlIGFyZ3VtZW50cyBhcyBhIGcrKyBleHRlbnNpb24uCgoJKiBjcC10cmVlLmRlZiAoQUxJR05PRl9FWFBSKTogTmV3IHRyZWUgY29kZS4KCSogZGVjbDIuYyAoZ3Jva19hbGlnbm9mKTogSWYgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLCBqdXN0IHN0b3JlCgl0aGUgZXhwcmVzc2lvbi4KCSogdHlwZWNrLmMgKGNfYWxpZ25vZik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IEhhbmRsZSBBTElHTk9GX0VYUFIuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGNwX3RyZWVfZXF1YWwpOiBMaWtld2lzZS4KCSogcHQuYyAodXNlc190ZW1wbGF0ZV9wYXJtcyk6IENvcnJlY3RseSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYQoJU0laRU9GX0VYUFIvQUxJR05PRl9FWFBSIHVzZXMgdGVtcGxhdGUgcGFyYW1ldGVycyBzbyB0aGF0IGNvbnN0YW50Cglmb2xkaW5nIGNhbiBiZSBkb25lLgoKCSogY3AtdHJlZS5oIChncm9rX2VudW1fZGVjbHMpOiBSZW1vdmUgdHlwZSBwYXJhbWV0ZXIuCgkqIGRlY2wuYyAoZ3Jva19lbnVtX2RlY2xzKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogQ2FsbCBncm9rX2VudW1fZGVjbHMKCXVuY29uZGl0aW9uYWxseSwgc2luY2UgaXQgd2lsbCBkbyBub3RoaW5nIGlmIHRoZXJlIGlzIG5vCgljdXJyZW50X2xvY2FsX2VudW0uICBVc2UgdGhlIG5ldyBjYWxsaW5nIHNlcXVlbmNlLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IFVzZSB0aGUgbmV3IGNhbGxpbmcgc2VxdWVuY2UgZm9yCglncm9rX2VudW1fZGVjbHMuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogTWFrZSBtZW1iZXIgZnVuY3Rpb25zIG9mIGxvY2FsIGNsYXNzZXMKCWluIGV4dGVybiBpbmxpbmUgZnVuY3Rpb25zIGhhdmUgY29tZGF0IGxpbmthZ2UgaGVyZS4uLgoJKGdyb2tkZWNsYXJhdG9yKTogUmF0aGVyIHRoYW4gaGVyZS4KCldlZCBKYW4gMjggMTA6NTU6NDcgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogVXNlIGRlY2xfY29uc3RhbnRfdmFsdWUuCgpUdWUgSmFuIDI3IDE2OjQyOjIxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUpOiBVc2UgaXQuCgkoYWRkX3RlbXBsYXRlX2NvbnZfY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoam91c3QpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvIG1vcmVfc3BlY2lhbGl6ZWQuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBIYW5kbGUgYSBzaW5nbGUgRlVOQ1RJT05fREVDTC4KCShpc19sb2NhbF9jbGFzcyk6IFJlbW92ZS4KCShmaW5pc2hfc3RydWN0KTogQ2hlY2sgVElfUEVORElOR19TUEVDSUFMSVpBVElPTl9GTEFHLgoJKiBjcC10cmVlLmggKGlzX2xvY2FsX2NsYXNzKTogUmVtb3ZlLgoJKHBlcmZvcm1fYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogQWRkLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogUmV0dXJuIGEgdHJlZSwgbm90IGFuIGludC4KCShtb3JlX3NwZWNpYWxpemVkKTogVGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKGdldF9iaW5kaW5ncyk6IExpa2V3aXNlLgoJKFRJX1BFTkRJTkdfU1BFQ0lBTElaQVRJT05fRkxBRyk6IE5ldyBtYWNyby4KCSogY3Z0LmMgKHBlcmZvcm1fcXVhbGlmaWNhdGlvbl9jb252ZXJzaW9ucyk6IFVzZSBjb21wX3B0cl90dHlwZXMuCgkocGVyZm9ybV9hcnJheV90b19wb2ludGVyX2NvbnZlcnNpb24pOiBSZW1vdmUuCgkqIGRlY2wuYyAoc2F2ZWRfc2NvcGUpOiBBZGQgcHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbiwKCXByb2Nlc3NpbmdfZXhwbGljaXRfaW5zdGFudGlhdGlvbiBmaWVsZHMuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBTYXZlIHRoZW0uCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUmVzdG9yZSB0aGVtLgoJKGdyb2tmbmRlY2wpOiBVc2UgbmV3IHJldHVybiB2YWx1ZSBmcm9tCgljaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbi4KCShzdGFydF9kZWNsKTogRG9uJ3QgY2hlY2sgZmxhZ19ndWlkaW5nX2RlY2xzIGJlZm9yZSBwdXNoaW5nCglkZWNscy4KCShjcF9maW5pc2hfZGVjbCk6IFJlbW92ZSBwcmV2aW91cyAoYm9ndXMpIGNoYW5nZS4KCShncm9rX2RlY2xhcmF0b3IpOiBVc2UgZGVjbF9mdW5jdGlvbl9jb250ZXh0IHJhdGhlciB0aGFuCglpc19sb2NhbF9jbGFzcy4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvIGdldF9iaW5kaW5ncy4KCShidWlsZF9leHByX2Zyb21fdHJlZSk6IExldCBidWlsZF94X2NvbXBvbmVudF9yZWYgY2hlY2sKCXZhbGlkaXR5IG9mIGFyZ3VtZW50cyByYXRoZXIgdGhhbiBkb2luZyBpdCBoZXJlLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogUmVtb3ZlIGNvZGUgZm9vbGluZyB3aXRoCglwcm9jZXNzaW5nX3NwZWNpYWxpemF0aW9uLCBwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24KCWZsYWdzLCBhcyB0aGF0IGlzIG5vdyBkb25lIGluIHttYXliZV9wdXNoX3RvcCxwb3BfZnJvbX1fdG9wX2xldmVsLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IE1hbmdsZSBsb2NhbCBjbGFzc2VzIGluCgl0ZW1wbGF0ZSBmdW5jdGlvbnMgY29ycmVjdGx5LgoJKiBwYXJzZS55IChmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBNb3ZlIHRvIHB0LmMuCgkqIHB0LmMgKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IE1vdmVkIGhlcmUgZnJvbSBwYXJzZS55LgoJKHByaW50X2NhbmRpZGF0ZXMpOiBOZXcgZnVuY3Rpb24uCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQ2hhbmdlIGludGVyZmFjZS4gIFByb3Blcmx5IGxvb2sgZm9yCgltb3N0IHNwZWNpYWxpemVkIHZlcnNpb25zIG9mIHRlbXBsYXRlIGNhbmRpZGF0ZXMuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGdWxseSBwcm9jZXNzIGV4cGxpY2l0CglpbnN0YW50aWF0aW9ucy4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBBdm9pZCBsb29raW5nIGF0IENMQVNTVFlQRSBmaWVsZHMgaW4KCUZVTkNUSU9OX0RFQ0xTLgoJKGRldGVybWluZV9vdmVybG9hZGVkX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IENoYW5nZSBuYW1lIGZyb20KCWNvbnZlcnRfbm9udHlwZV9wYXJhbWV0ZXIuICBVc2UgZGV0ZXJtaW5lX292ZXJsb2FkZWRfZnVuY3Rpb24KCWluc3RlYWQgb2YgaW5zdGFudGlhdGVfdHlwZS4KCShtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBIYW5kbGUgdHlwZSBjb250ZXh0cyBhcyB3ZWxsIGFzCglmdW5jdGlvbiBjb250ZXh0cy4KCShjbGFzc3R5cGVfbWFuZ2xlZF9uYW1lKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkobW9yZV9zcGVjaWFsaXplZCk6IFRha2UgZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnRzIGFzIGEKCXBhcmFtZXRlci4KCShtb3N0X3NwZWNpYWxpemVkKTogTGlrZXdpc2UuCgkoZ2V0X2JpbmRpbmdzKTogTGlrZXdpc2UuICBDaGVjayB0aGF0IHJldHVybiB0eXBlcyBtYXRjaCBiZWZvcmUKCXByb2NsYWltaW5nIGEgZnVuY3Rpb24gYSBtYXRjaC4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBSZW1vdmUgY29kZSBzZWFyY2hpbmcgZm9yIGZ1bmN0aW9uIHRvCglpbnN0YW50aWF0ZTsgdGhhdCBpcyBub3cgZG9uZSBpbiBjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbi4KCShhZGRfbWF5YmVfdGVtcGxhdGUpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvIGdldF9iaW5kaW5ncy4KCSogdHJlZS5jIChyZWFsbHlfb3ZlcmxvYWRlZF9mbik6IFVzZSBpc19vdmVybG9hZGVkX2ZuIHRvIHNpbXBsaWZ5CglpbXBsZW1lbnRhdGlvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBDaGVjayBmb3IgaW52YWxpZCBhcmd1bWVudHMuCgpUdWUgSmFuIDI3IDAxOjQ0OjAyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIsIEFHR1JfSU5JVF9FWFBSKTogRG9uJ3QgY2hlY2sgdGhhdAoJcmV0dXJuX3RhcmdldCBhbmQgY2FsbF90YXJnZXQgYXJlIGVxdWl2YWxlbnQuCgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBKdXN0IGFjY2VwdCBmdW5jdGlvbiBwYXJtcyB0aGF0Cglkb24ndCB1c2UgYW55IHRlbXBsYXRlIHBhcm1zLgoKU3VuIEphbiAyNSAwMzozMDowMCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogV2hlbiBiYWlsaW5nIG9uIGEgY29tZGF0IHZhcmlhYmxlLCBhbHNvCgl1bnNldCBERUNMX05PVF9SRUFMTFlfRVhURVJOLgoKCSogcGFyc2UueSAodHlwZW5hbWVfc3ViKik6IEZpeCBzdGQ6Oi4KClNhdCBKYW4gMjQgMTI6MTM6NTQgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRml4IHR5cGUgZGVmYXVsdCB0ZW1wbGF0ZSBhcmdzLgoJKGR1bXBfdHlwZSk6IEhhbmQgVEVNUExBVEVfREVDTCBvZmYgdG8gZHVtcF9kZWNsLgoKRnJpIEphbiAyMyAxODozNDozNyAxOTk4ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGxleC5jIChESVJfU0VQQVJBVE9SKTogRGVmaW5lIHRvIGJlICcvJyBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBVc2UuCgpXZWQgSmFuIDIxIDEwOjI5OjU3IDE5OTggIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLnVzYy5lZHU+CgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBEb24ndCBhY2Nlc3MgZWxlbWVudHMgb2YgQVJHTElTVAoJdGhhdCBhcmUgbm90IHJlYWxseSBwcmVzZW50LiAgU3Vic3RpdHV0ZSBkZWZhdWx0IGFyZ3VtZW50cyBpbgoJdGVtcGxhdGUgdGVtcGxhdGUgYXJndW1lbnRzLiAgQ29ycmVjdGx5IGNvbnZlcnQgVEVNUExBVEVfREVDTCB0bwoJVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShjb21wX3RlbXBsYXRlX2FyZ3MpOiBURU1QTEFURV9ERUNMIGFuZCBURU1QTEFURV9URU1QTEFURV9QQVJNCglhcmUgbm8gbG9uZ2VyIHRyZWF0ZWQgc3BlY2lhbGx5IGhlcmUuCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBGaXggY29weSBlcnJvci4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFdhcm4gYWJvdXQgbWlzc2luZyBgdHlwZW5hbWUnIGZvciBuZXN0ZWQKCXR5cGUgY3JlYXRlZCBmcm9tIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIHBhcnNlLnkgKGJhZF9wYXJtKTogTGlrZXdpc2UKCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShwdXNoX25lc3RlZF9jbGFzcyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmRlZiAoVEVNUExBVEVfVEVNUExBVEVfUEFSTSk6IE5ldyB0cmVlIGNvZGUuCgkqIGNwLXRyZWUuaCAoREVDTF9URU1QTEFURV9URU1QTEFURV9QQVJNX1ApOiBOZXcgbWFjcm8uCgkoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogRGVjbGFyZS4KCSogZGVjbC5jIChhcmdfbG9va2luZ19mb3JfdGVtcGxhdGUpOiBOZXcgdmFyaWFibGUuCgkobG9va3VwX25hbWVfcmVhbCk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJVHJ5IHRvIHJldHVybiBURU1QTEFURV9ERUNMIG9yIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0KCW5vZGUgaWYgYXJnX2xvb2tpbmdfZm9yX3RlbXBsYXRlIGlzIG5vbnplcm8uCgkocHVzaGRlY2wpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShncm9rX29wX3Byb3BlcnRpZXMsIHhyZWZfdGFnLCB4cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wuCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBlcnJvci5jIChkdW1wX3R5cGUpOiBBZGQgVEVNUExBVEVfREVDTCBhbmQgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShkdW1wX3R5cGVfcHJlZml4LCBkdW1wX3R5cGVfc3VmZml4KTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkoZHVtcF9kZWNsKTogSGFuZGxlIHVubmFtZWQgdGVtcGxhdGUgdHlwZSBwYXJhbWV0ZXJzLgoJSGFuZGxlIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkoZHVtcF9mdW5jdGlvbl9uYW1lKTogSGFuZGxlIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIGluaXQuYyAoaXNfYWdncl90eXBlZGVmLCBpc19hZ2dyX3R5cGUsIGdldF9hZ2dyX2Zyb21fdHlwZWRlZik6CglIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lLCBidWlsZF9vdmVybG9hZF9uYW1lKToKCUhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBwYXJzZS55IChtYXliZV9pZGVudGlmaWVyKTogTmV3IG5vbnRlcm1pbmFsLgoJKHRlbXBsYXRlX3R5cGVfcGFybSk6IFVzZSBpdC4KCSh0ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtLCB0ZW1wbGF0ZV9hcmcxKTogTmV3IG5vbnRlcm1pbmFsLgoJKHRlbXBsYXRlX3Bhcm0pOiBBZGQgdGVtcGxhdGVfdGVtcGxhdGVfcGFybSBydWxlcy4KCSh0ZW1wbGF0ZV9hcmcpOiBTZXQgcHJvY2Vzc2luZ190ZW1wbGF0ZV9hcmcuCgkodGVtcGxhdGVfYXJnMSk6IFJ1bGVzIG1vdmVkIGZyb20gdGVtcGxhdGVfYXJnLgoJKHByaW1hcnksIG5vbm5lc3RlZF90eXBlKTogU2V0IGFyZ19sb29raW5nX2Zvcl90ZW1wbGF0ZSBpZiB3ZSBhcmUKCXByb2Nlc3NpbmcgdGVtcGxhdGUgYXJndW1lbnRzLgoJKiBwdC5jIChiZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEhhbmRsZSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcywgY29tcF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlLCBsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wgYW5kCglURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKGN1cnJlbnRfdGVtcGxhdGVfYXJncyk6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKHRzdWJzdCwgdHN1YnN0X2NvcHksIHVuaWZ5KTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkqIHNlYXJjaC5jIChkZnNfd2FsaywgZGZzX3JlY29yZF9pbmhlcml0YW5jZSk6CglIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogdHJlZS5jIChjb3B5X3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBOZXcgZnVuY3Rpb24uCgkobWFwY2FyKTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCk1vbiBKYW4gMTkgMjI6NDA6MDMgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogRG9uJ3QgYWxsb3cgZHVwbGljYXRlIGRlZmluaXRpb25zIG9mIHN0YXRpYwoJZGF0YSBtZW1iZXJzLgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSGFuZGxlIHVzZXItZGVmaW5lZAoJdGVtcGxhdGUgY29udmVyc2lvbiBvcGVyYXRvcnMgY29ycmVjdGx5LgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBJc3N1ZSBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZQoJb2JqZWN0IGluIGEgQ09NUE9ORU5UX1JFRiBpcyBhIFRFTVBMQVRFX0RFQ0wuCgoJKiB0eXBlY2suYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogSGFuZGxlIFRFTVBMQVRFX1RZUEVfUEFSTXMuCgoJKiBjbGFzcy5jIChpc19sb2NhbF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY3AtdHJlZS5oIChpc19sb2NhbF9jbGFzcyk6IERlY2xhcmUgaXQuCgkobGFzdF90cmVlKTogTGlrZXdpc2UuCgkoYmVnaW5fdHJlZSk6IExpa2V3aXNlLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENoZWNrIGZvciBOVUxMIHdoZXJlIG5lY2Vzc2FyeS4KCUNvbnNpZGVyIEZVTkNUSU9OX0RFQ0xTIHRvIGRlY2xhcmUgb2JqZWN0cyB3aXRoIHRvcC1sZXZlbCBiaW5kaW5nLAoJd2hlbiBjYWxsaW5nIG1ha2VfZGVjbF9ydGwuCgkoZ3Jva2RlY2xhcmF0b3IpOiBHaXZlIG1lbWJlcnMgb2YgbG9jYWwgY2xhc3NlcyBpbnRlcm5hbCBsaW5rYWdlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVtb3ZlIGRlY2xhcmF0aW9uIG9mIGxhc3RfdHJlZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBTZXQgZmxhZ19rZWVwX2lubGluZV9mdW5jdGlvbnMgYXJvdW5kIGNhbGwgdG8KCXJlc3Rfb2ZfY29tcGlsYXRpb24gaWYgd2UgYXJlIHByb2Nlc3NpbmcgYSBtZW1iZXIgZnVuY3Rpb24gaW4gYQoJbG9jYWwgY2xhc3MuCgkoc3RhcnRfbWV0aG9kKTogQ2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yIG1lbWJlciBmdW5jdGlvbnMgb2YKCWxvY2FsIGNsYXNzZXMgaW4gdGVtcGxhdGUgZnVuY3Rpb25zLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBEb24ndCBnaXZlIGV4dGVybmFsIGxpbmthZ2UgdG8KCWluc3RhbnRpYXRpb25zIG9mIHRlbXBsYXRlcyB3aXRoIGludGVybmFsIGxpbmthZ2UuCgkqIHBhcnNlLnkgKGxhc3RfdHJlZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSh0ZW1wbGF0ZV90eXBlKTogUGFzcyBleHRyYSBwYXJhbWV0ZXIgdG8gbG9va3VwX3RlbXBsYXRlX2NsYXNzLgoJKHNlbGZfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKHN0cnVjdHNwKTogTW92ZSBjYWxsIHRvIHJlc2V0X3NwZWNpYWxpemF0aW9uIGludG8gbGVmdF9jdXJseS4KCShsZWZ0X2N1cmx5KTogQ2FsbCByZXNldF9zcGVjaWFsaXphdGlvbiwgYW5kIGJlZ2luX3RyZWUuCgkqIHB0LmMgKHNhdmVkX3RyZWVzKTogTmV3IHZhcmlhYmxlLgoJKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IENoYW5nZSBwcm90b3R5cGUuICBVc2UKCWFkZGl0aW9uYWwgZnVuY3Rpb24gY29udGV4dCB0byBuYW1lIGxvY2FsIGNsYXNzZXMgaW4gdGVtcGxhdGVzCgljb3JyZWN0bHkuCgkoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IFBhc3MgdGhlIGNvbnRleHQuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogSGFuZGxlIGxvY2FsIGNsYXNzZXMgYW5kIHRlbXBsYXRlcywgYW5kCgltZW1iZXIgZnVuY3Rpb25zIGZvciBzdWNoIGNsYXNzZXMuCgkoY29udmVydF9ub250eXBlX3BhcmFtZXRlcik6IEZpeCBoYW5kbGluZyBvZiBwb2ludGVyLXRvLW1lbWJlcgoJY29uc3RhbnRzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEhhbmRsZSBsb2NhbCBjbGFzc2VzIGluIHRlbXBsYXRlcy4KCSh0c3Vic3QpOiBMaWtld2lzZS4gIERvbid0IGFzc3VtZSB0aGF0IHRlbXBsYXRlIGluc3RhbnRpYXRpb25zCgloYXZlIGV4dGVybmFsIGxpbmthZ2U7IHBheSBhdHRlbnRpb24gdG8gdGhlIHRlbXBsYXRlIGRlY2xhcmF0aW9uLgoJKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCShiZWdpbl90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogRG9uJ3QgY2FsbCBjb21wbGV0ZV90eXBlIGZvciBiYXNldHlwZXMKCXRoYXQgaW52b2x2ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzOyB0aGF0IGNhbiBsZWFkIHRvIGluZmluaXRlCglyZWN1cnNpb24gdW5uZWNlc3NhcmlseS4KCgkqIHB0LmMgKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogRG8gbm90IHJlZ2lzdGVyIHNwZWNpYWxpemF0aW9ucwoJdGhhdCBhcmVuJ3QgcmVhZHkgdG8gYmUgcmVnaXN0ZXJlZCB5ZXQuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBIYW5kbGUgZXhwbGljaXQgc3BlY2lhbGl6YXRpb24gb2YKCWNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlbGMpOiBIYW5kbGUgb3V0LW9mLWNsYXNzIHNwZWNpYWxpemF0aW9ucyBvZgoJbWVtYmVyIHRlbXBsYXRlcy4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogU2V0IHVwIHRoZSB0ZW1wbGF0ZQoJaW5mb3JtYXRpb24gYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBzcGVjaWFsaXphdGlvbi4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBGaXggdGhpbmtvLgoJKHRzdWJzdCk6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMgb2YgbWVtYmVyIHRlbXBsYXRlcyBjb3JyZWN0bHkuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBSZW1vdmUgY2FsbHMgdG8KCWNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uIGZyb20gaGVyZS4KCShmaW5pc2hfc3RydWN0KTogQW5kIGluc2VydCB0aGVtIGhlcmUuCgkqIGNwLXRyZWUuaCAocGVyZm9ybV9xdWFsaWZpY2F0aW9uX2NvbnZlcnNpb25zKTogTmV3IGZ1bmN0aW9uLgoJKHBlcmZvcm1fYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYmVnaW5fZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGVuZF9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogUmVuYW1lZCBmcm9tCglkZXRlcm1pbmVfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgkoY29tcF90ZW1wbGF0ZV9wYXJtcyk6IE5ldyBmdW5jdGlvbi4KCShwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBOZXcgdmFyaWFibGUuCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBOZXcgZnVuY3Rpb24uCgkocGVyZm9ybV9hcnJheV90b19wb2ludGVyX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjb25zaWRlciB0ZW1wbGF0ZSBmdW5jdGlvbnMKCWFsaWtlIHVubGVzcyB0aGV5IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVycy4gIFJlZmluZSBoYW5kbGluZyBvZgoJaW5zdGFudGlhdGlvbi9zcGVjaWFsaXphdGlvbiBtaXNtYXRjaGVzLgoJKHN0YXJ0X2RlY2wpOiBEb24ndCBjYWxsIHB1c2hkZWNsIGZvciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMsCglzaW5jZSB0aGV5IGRvbid0IGFmZmVjdCBvdmVybG9hZGluZy4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGdyb2tmbmRlY2wpOiBDYWxsIGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uIGEgbGl0dGxlIGxhdGVyLgoJRG9uJ3QgY2FsbCBkdXBsaWNhdGVfZGVjbHMgZm9yIG1lbWJlcm0gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdXBkYXRlIHRlbXBsYXRlX2NvdW50IGZvciBjbGFzc2VzIHRoYXQgYXJlCgl0aGVtc2VsdmVzIHNwZWNpYWxpemF0aW9ucy4gIFJlbW92ZSB1c2Ugb2YgYDInIGFzIHBhcmFtZXRlciB0bwoJZ3Jva2ZuZGVjbCBzaW5jZSB0aGF0IHZhbHVlIGlzbid0IHVzZWQuCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBTYXZlIGFuZCByZXN0b3JlCglwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24gYXJvdW5kIGNhbGxzIHRvIGdyb2tmaWVsZC4KCSogcGFyc2UueSAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBvbmVudF9kZWNsXzEpOiBVc2UgaXQuCgkoZm4uZGVmMik6IExpa2V3aXNlLgoJKHRlbXBsYXRlX2FyZ19saXN0X29wdCk6IE5ldyBub250ZXJtaW5hbC4KCSh0ZW1wbGF0ZV90eXBlKTogVXNlIGl0LgoJKHNlbGZfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKHRlbXBsYXRlX2lkKTogTGlrZXdpc2UuCgkob2JqZWN0X3RlbXBsYXRlX2lkKTogTGlrZXdpc2UuCgkobm90eXBlX3RlbXBsYXRlX2RlY2xhcmF0b3IpOiBMaWt3aXNlLgoJKGJlZ2luX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShlbmRfZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGV4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBVc2UgdGhlbS4KCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIHBhcmFtZXRlcnMuCgkocHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTmV3IHZhcmlhYmxlLgoJKGNvbnZlcnRfbm9udHlwZV9wYXJhbWV0ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZGV0ZXJtaW5lX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShiZWdpbl9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoZW5kX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShyZXRyaWV2ZV9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocHJvY2Vzc2luZ19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJlbW92ZWQuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogSGFuZGxlIHNwZWNpYWxpemF0aW9ucyBvZiBtZW1iZXIKCWZ1bmN0aW9ucyBvZiB0ZW1wbGF0ZSBjbGFzcyBpbnN0YW50aWF0aW9ucy4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJlZmluZSB0byBjb25mb3JtIHRvIHN0YW5kYXJkLgoJKGNvbXBfdGVtcGxhdGVfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQ2FsbCBjb252ZXJ0X25vbnR5cGVfcGFyYW1ldGVyLgoJKHRzdWJzdCk6IFJlZmluZSBoYW5kbGluZyBvZiBtZW1iZXIgdGVtcGxhdGVzLiAgVXNlCglyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbi4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IFVzZSByZXRyaWV2ZV9zcGVjaWFsaXphdGlvbi4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbik6IEltcHJvdmUgaGFuZGxpbmcgb2YgZXhwbGljaXQgdGVtcGxhdGUKCWFyZ3VtZW50cy4KCSogdHJlZS5jIChtYXBjYXIpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlLCByYXRoZXIgdGhhbiBhYm9ydGluZywKCW9uIFZBUl9ERUNMUywgRlVOQ1RJT05fREVDTFMsIGFuZCBDT05TVF9ERUNMUy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQ2FsbCBkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24sIHJhdGhlcgoJdGhhbiBkZXRlcm1pbmVfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgpNb24gSmFuIDE5IDEzOjE4OjUxIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBBIFRBUkdFVF9FWFBSIGhhcyBzaWRlIGVmZmVjdHMuCgpGcmkgSmFuIDE2IDExOjQwOjUwIDE5OTggIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBGb3IgZW51bSB0YWdzLCBvdXRwdXQgdGhlIHRhZywgbm90IGl0cyB2YWx1ZS4KCjE5OTgtMDEtMTMgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogT25seSBjYWxsIGluaXRfcnR0aV9wcm9jZXNzaW5nCglGTEFHX1JUVEkgaXMgc2V0LgoKTW9uIEphbiAxMiAwMTozNToxOCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogU3BsaXQgb3V0IGZyb20gYnVpbGRfbmV3LgoJKGJ1aWxkX25ldyk6IEp1c3QgcmV0dXJuIGEgTkVXX0VYUFIuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBIYW5kbGUgTkVXX0VYUFIuCgoJKiBkZWNsMi5jIChnZXRfdGVtcF9yZWd2YXIpOiBUd2Vhay4KCgkqIGNwLXRyZWUuaCAoVFJFRV9DQUxMU19ORVcpOiBDb21tZW50IG91dC4KCSogY2xhc3MuYyAocmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wKTogUmVtb3ZlIHVzZS4KCSogbWV0aG9kLmMgKGJ1aWxkX29wZm5jYWxsKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgpXZWQgSmFuICA3IDIzOjQ3OjEzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYyAoX19laF9hbGxvYywgX19laF9mcmVlKTogTmV3IGZucy4KCShfX2NwX3B1c2hfZXhjZXB0aW9uLCBfX2NwX3BvcF9leGNlcHRpb24pOiBVc2UgdGhlbS4KCShfX3VuY2F0Y2hfZXhjZXB0aW9uKTogQ2FsbCB0ZXJtaW5hdGUgaGVyZSBpZiBubyBleGNlcHRpb24uCgkqIGV4Y2VwdC5jIChidWlsZF90ZXJtaW5hdGVfaGFuZGxlcik6IE5ldyBmbi4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgaXQuCgkoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBMaWtld2lzZS4KCShhbGxvY19laF9vYmplY3QpOiBOZXcgZm4uCgkoZXhwYW5kX3Rocm93KTogVXNlIGl0LiAgUHJvdGVjdCBleGNlcHRpb24gaW5pdCB3aXRoIHRlcm1pbmF0ZS4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogUmVtb3ZlIGNvZGUgdGhhdCBpZ25vcmVzIHRyaXZpYWwKCW1ldGhvZHMuCgo=