MjAwMi0xMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICAgICAqIHNyYy9jYWNoZS9mdGNzYml0LmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IGZpeGVkIGEgc21hbGwgYnVnIHRoYXQgY2F1c2VkCglwcm9ibGVtcyB3aXRoIGVtYmVkZGVkIGJpdG1hcHMKCiAgICAgICAgKiBzcmMvb3RsYXlvdXQvb3RsYXlvdXQuaCwgc3JjL290bHlhb3V0L290bGNvbmYuaCwKICAgICAgICBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLCBzcmMvb3RsYXlvdXQvb3RscGFyc2UuYywKICAgICAgICBzcmMvb3RsYXlvdXQvb3RscGFyc2UuaCwgc3JjL290bGF5b3V0L290bHV0aWxzLmg6CgogICAgICAgICAgdXBkYXRpbmcgdGhlIE9wZW5UeXBlIExheW91dCBjb2RlLCBhZGRpbmcgc3VwcG9ydCBmb3QgdGhlIGZpcnN0CiAgICAgICAgICBHU1VCIGxvb2t1cHMuIE5vdGhpbmcgdGhhdCByZWFsbHkgY29tcGlsZXMgZm9yIG5vdyB0aG91Z2gKCiAgICAgICAgKiBzcmMvYXV0b2hpbnQvYWhoaW50LmM6IGRpc2FibGVkIHNlcmlmIHN0ZW0gd2lkdGggcXVhbnRpemF0aW9uLiBJdAogICAgICAgIHByb2R1Y2VzIHNsaWdodGx5IGJldHRlciBzaGFwZXMgdGhvdWdoIHRoaXMgaXMgbm90IGRpc3Rpbmd1aXNoYWJsZQogICAgICAgIHdpdGggbWFueSBmb250cy4KCjIwMDItMTEtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCiAgICAgICAgKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBzcmMvZ3ppcC9mdGd6aXAuYzogYWRkZWQKICAgICAgICBzdXBwb3J0IGZvciB0aGUgRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQiBvcHRpb24sIHVzZWQgdG8gc3BlY2lmeQogICAgICAgIHRoZSB1c2Ugb2Ygc3lzdGVtLXdpZGUgemxpYi4KCiAgICAgICAgTm90ZSB0aGF0IHRoaXMgbWFjcm8sIGFzIHdlbGwgYXMgRlRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiwKICAgICAgICBpcyBub3QgI3VuZGVmLWVkIGFueW1vcmUuIFRoaXMgYWxsb3dzIHRoZSBidWlsZCBzeXN0ZW0gdG8gZGVmaW5lIHRoZW0KICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gKHR5cGljYWxseSBieSBhZGRpbmcgLUQgZmxhZ3MgYXQKICAgICAgICBjb21waWxlIHRpbWUpLgoKICAgICAgICAqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfZmFjZV9idWlsZF9jbWFwcyk6IHJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MKICAgICAgICBpbiBvcHRpbWl6ZWQgbW9kZSByZWxhdGl2ZSB0byB0aGUgInZvbGF0aWxlIiBsb2NhbCB2YXJpYWJsZXMuIFRoaXMgd2FzCiAgICAgICAgbm90IGEgY29tcGlsZXIgYnVnIGFmdGVyIGFsbCwgYnV0IHRoZSBmYWN0IHRoYXQgYSBwb2ludGVyIHRvIGEgdm9sYXRpbGUKICAgICAgICB2YXJpYWJsZSBpcyBub3QgdGhlIHNhbWUgdGhhbiBhIHZvbGF0aWxlIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSA6LSkKCiAgICAgICAgdGhlIGZpeCB3YXMgdG8gY2hhbmdlICAidm9sYXRpbGUgRlRfQnl0ZSogIHAiCiAgICAgICAgaW50byAgICAgICAgICAgICAgICAgICAiRlRfQnl0ZSogdm9sYXRpbGUgIHAiCgogICAgICAgICogc3JjL3Bmci9wZnJsb2FkLmMsIHNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL2d6aXAvaW5mdHJlZXMuYzogcmVtb3ZlZAogICAgICAgIGNvbXBpbGVyIHdhcm5pbmdzIGluIG9wdGltaXplZCBtb2RlcwoKICAgICAgICAqIHNyYy9nemlwLyouW2hjXTogbW9kaWZpZWQgb3VyIFpMaWIgY29weSBpbiBvcmRlciB0byBwcmV2ZW50IGV4cG9ydGluZwogICAgICAgIGFueSB6bGliIGZ1bmN0aW9uIG5hbWVzIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBwcmV2ZW50cyBsaW5raW5nCiAgICAgICAgcHJvYmxlbXMgb24gc29tZSBwbGF0Zm9ybXMsIHdoZW4gYXBwbGljYXRpb25zIHdhbnQgdG8gbGluayBGcmVlVHlwZQogICAgICAgIF9hbmRfIFpMaWIgdG9nZXRoZXIuCgoKMjAwMi0xMS0wNSAgSnVsaXVzeiAgPGpjaEBwcHMuanVzc2lldS5mcj4KCiAgICAgICAgKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3RhYmxlX2FkZCk6IG1vZGlmaWVkIGluY3JlbWVudCBsb29wIGluCiAgICAgICAgb3JkZXIgdG8gaW1wbGVtZW50IGV4cG9uZW50aWFsIGJlaGF2aW91cgoKMjAwMi0xMC0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICAgICAqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmgsIHNyYy9nemlwL2Z0Z3ppcC5jOgogICAgICAgIGFkZGluZyBzdXBwb3J0IGZvciBnemlwIGNvbXByZXNzZWQgc3RyZWFtcyAhIQoKICAgICAgICAqIHNyYy9wY2YvcGNmZHJpdmVyLmM6IGFkZGluZyBhdXRvbWF0aWMgc3VwcG9ydCBmb3IgZ3ppcC1jb21wcmVzc2VkCiAgICAgICAgUENGIGZpbGVzCgoyMDAyLTEwLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgICAgICogRnJlZVR5cGUgMi4xLjNyYzMgcmVsZWFzZWQKCjIwMDItMTAtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oIChGVF9QT0lOVEVSX1RPX1VMT05HKTogTmV3IG1hY3JvLgoJKEZUQ19GQUNFX0lEX0hBU0gpOiBSZXdyaXR0ZW4sIHVzaW5nIEZUX1BPSU5URVJfVE9fVUxPTkcuCgoyMDAyLTEwLTIyICBHaXVzZXBwZSBHaGli8iA8Z2hpYm9AbWFuZHJha2Vzb2Z0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRW5jb2RpbmcpOiBGaXggZW50cnkgZm9yIGxhdGluLTIuCgoyMDAyLTEwLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX09wZW5fRmFjZSk6IFVzZSBgY29uc3QnIGZvciBgYXJncycKCShzdWdnZXN0ZWQgYnkgR3JhaGFtKS4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IFVwZGF0ZWQuCgkoZnRfaW5wdXRfc3RyZWFtX25ldyk6IERpdHRvLgoKMjAwMi0xMC0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBzdXBwb3J0IGZvciBlbWJlZGRlZCBiaXRtYXBzIHRvIHRoZSBQRlIgZHJpdmVyLCBhbmQgcmV3cml0aW5nCglpdHMga2VybmluZyBsb2FkZXIvaGFuZGxlciB0byB1c2UgYWxsIGtlcm5pbmcgcGFpcnMgaW4gYSBwaHlzaWNhbAoJZm9udCAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdCBpdGVtKS4KCgkqIHNyYy9wZnIvcGZyLmM6IEluY2x1ZGUgYHBmcnNiaXQuYycuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBgcGZyc2JpdC5oJy4KCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfa2VybmluZ19wYWlycyk6IFJld3JpdHRlbi4KCShwZnJfcGh5X2ZvbnRfZG9uZSwgcGZyX3BoeV9mb250X2xvYWQpOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3Bmcm9ia3MuYzogSW5jbHVkZSBgcGZyc2JpdC5oJy4KCShwZnJfZmFjZV9pbml0KTogSGFuZGxlIGtlcm5pbmcgYW5kIGVtYmVkZGVkIGJpdG1hcHMuCgkocGZyX3Nsb3RfbG9hZCk6IExvYWQgZW1iZWRkZWQgYml0bWFwcy4KCShQRlJfS0VSTl9JTkRFWCk6IFJlbW92ZWQuCgkocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBSZXdyaXR0ZW4uCgkqIHNyYy9wZnIvcGZyc2JpdC5jLCBzcmMvcGZyL3BmcnNiaXQuaDogTmV3IGZpbGVzLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9LZXJuSXRlbVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCgkoUEZSX0tFUk5fSU5ERVgpOiBOZXcgbWFjcm8uCgkoUEZSX1BoeUZvbnRSZWMpOiBBZGQgaXRlbXMgZm9yIGtlcm5pbmcgYW5kIGVtYmVkZGVkIGJpdG1hcHMuCgkqIHNyYy9wZnIvSmFtZmlsZSAoX3NvdXJjZXMpIFtGVDJfTVVMVEldOiBBZGQgYHBmcnNiaXQnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBEb24ndCBsb2FkIGJpdG1hcCBmb250cyBpZgoJRlRfTE9BRF9OT19SRUNVUlNFIGlzIHNldC4KCUxvYWQgZW1iZWRkZWQgYml0bWFwcyBvbmx5IGlmIEZUX0xPQURfTk9fQklUTUFQIGlzbid0IHNldC4KCgkqIHNyYy90b29scy9kb2NtYWtlci9jb250ZW50LnB5LCBzcmMvdG9vbHMvZG9jbWFrZXIvc291cmNlcy5weSwKCXNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IEZpeGluZyBhIGZldyBuYXN0eSBidWdzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IFRoZSB2YWxpZGF0b3IgZm9yIGZvcm1hdCA0CglzdWItdGFibGVzIGlzIG5vdyBjYXBhYmxlIG9mIGRlYWxpbmcgd2l0aCBpbnZhbGlkICJsZW5ndGgiIGZpZWxkcyBhdAoJdGhlIHN0YXJ0IG9mIHRoZSBzdWItdGFibGUuICBUaGlzIGFsbG93cyBmb250cyBsaWtlICJtZ19fX19fXy50dGYiCgkoaS5lLiAgTWFycmlhZ2UpIHRvIHJldHVybiBhY2N1cmF0ZSBjaGFybWFwcy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDItMTAtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChTVUJQSVhFTFMpOiBBZGQgY2FzdCB0byBgVFBvcycuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoVFJVTkMpOiBBZGQgY2FzdCB0byBgVENvb3JkJy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShUUmFzdGVyKTogVXNlIGBUUG9zJyBmb3IgbWluX2V4LCBtYXhfZXgsIG1pbl9leSwgbWF4X2V5LCBhbmQKCWxhc3RfZXkuCglVcGRhdGUgYWxsIGNhc3RzLgoJKGdyYXlfcmVuZGVyX2xpbmUpOiBGaXggY2FzdHMgZm9yIGBwJyBhbmQgYGZpcnN0Jy4KCjIwMDItMTAtMDIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChiZGZfbG9hZF9mb250KTogQWxsb2NhdGUgdGhlIF9iZGZfcGFyc2VfdAoJc3RydWN0dXJlIHdpdGggRlRfQUxMT0MgaW5zdGVhZCBvZiB1c2luZyB0aGUgc3RhY2suCgoyMDAyLTA5LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKG51bV9zYml0X3N0cmlrZXMsCgludW1fc2JpdF9zY2FsZXMpOiBVc2UgYEZUX1VMb25nJy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVXBkYXRlZCBhY2NvcmRpbmdseS4KCSogc3JjL3NmbnQvdHRzYml0LmMgKHR0X2ZhY2Vfc2V0X3NiaXRfc3RyaWtlKTogRGl0dG8uCgkoZmluZF9zYml0X2ltYWdlKTogUmVtb3ZlIGNhc3QuCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeCBjYXN0LgoKMjAwMi0wOS0yNyAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbmFtZXMpOiBVc2UgY2FzdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDIpOiBVc2UgbG9uZyBjb25zdGFudC4KCShjb2RlX3RvX2luZGV4NCk6IFVzZSBjYXN0LgoJKGNvZGVfdG9faW5kZXg4XzEyKTogRml4IGNhc3QuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9uZXh0LCB0dF9jbWFwOF9jaGFyX2luZGV4LAoJdHRfY21hcDEyX2NoYXJfaW5kZXgpOiBVc2UgY2FzdCBmb3IgYHJlc3VsdCcuCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFVzZSBjYXN0LgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX3VjczQpOiBVc2UgY2FzdCBmb3IKCWBjb2RlJy4KCShzZm50X2xvYWRfZmFjZSk6IFVzZSBGVF9JbnQzMiBmb3IgYGZsYWdzJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zY2FubGluZSwgZ3JheV9yZW5kZXJfbGluZSwKCWdyYXlfY29tcHV0ZV9jYm94LCBncmF5X2NvbnZlcnRfZ2x5cGgsIGdyYXlfcmFzdGVyX3Jlc2V0KTogQWRkIGNhc3RzCgl0byBgVENvb3JkJyBhbmQgYGludCcuCglNb3JlIDE2Yml0IGZpeGVzLgoJcy9GVF9Qb3MvVFBvcy8uCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogQWRkIGNhc3RzLgoKMjAwMi0wOS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRwb3N0LmMgKGxvYWRfcG9zdF9uYW1lcywgdHRfZmFjZV9mcmVlX3BzX25hbWVzLAoJdHRfZmFjZV9nZXRfcHNfbmFtZSk6IFJlcGxhY2Ugc3dpdGNoIHN0YXRlbWVudCB3aXRoIGlmIGNsYXVzZXMgdG8KCW1ha2UgaXQgbW9yZSBwb3J0YWJsZS4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKEZUX01vZHVsZV9DbGFzcyk6IFVzZSBgRlRfTG9uZycgZm9yCglgbW9kdWxlX3NpemUnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmggKEZUX0dseXBoX0NsYXNzXyk6IFVzZSBgRlRfTG9uZycgZm9yCglgZ2x5cGhfc2l6ZScuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVuZGVyX0dseXBoKTogQ2hhbmdlIHNlY29uZCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgkoRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogQ2hhbmdlIHRoaXJkIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtZXRlcgoJdG8gYEZUX1JlbmRlcl9Nb2RlJy4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IENoYW5nZSB0aGlyZCBwYXJhbWV0ZXIKCXRvIGBGVF9SZW5kZXJfTW9kZScuCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlciwgZnRfc21vb3RoX3JlbmRlcl9sY2QsCglmdF9zbW9vdGhfcmVuZGVyX2xjZF92KTogRGl0dG8uCgkoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogQ2hhbmdlIHRoaXJkIGFuZCBmaWZ0aCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaDogVXBkYXRlZC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoTG9hZF9HbHlwaCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfR2x5cGhfTG9hZCksIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKSwKCXNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpLCBzcmMvdDQyL3Q0Mm9ianMuYwoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCksIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpOiBDaGFuZ2UKCWZvdXJ0aCBwYXJhbWV0ZXIgdG8gYEZUX0ludDMyJy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogQWRkIHR3byBtaXNzaW5nIHBhcmFtZXRlcnMKCWFuZCBkZWNsYXJlIHRoZW0gYXMgdW51c2VkLgoKCSogc3JjL2NpZC9jaWRwYXJzZS5oIChDSURfUGFyc2VyKTogVXNlIEZUX0xvbmcgZm9yIGBwb3N0c2NyaXB0X2xlbicuCgoJKiBzcmMvcHNuYW1lcy9wc25hbWVzLmggKFBTX1VuaWNvZGVfVmFsdWVfRnVuYyk6IENoYW5nZSByZXR1cm4KCXZhbHVlIHRvIEZUX1VJbnQzMi4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZV92YWx1ZSwgcHNfYnVpbGRfdW5pY29kZV90YWJsZSk6CglVcGRhdGVkIGFjY29yZGluZ2x5LgoKMjAwMi0wOS0yNiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoR2V0X0tlcm5pbmcpOiBVc2UgRlRfTG9uZyBmb3IgYG1pZGRsZScuCgkoY2ZmX2dldF9nbHlwaF9uYW1lKTogVXNlIGNhc3QgZm9yIHJlc3VsdCBvZiBmdF9zdHJsZW4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX3JlYWwpOiBVc2VyIGNhc3QgZm9yIGFzc2lnbmluZwoJYGV4cCcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfaW5kZXhfZ2V0X3BvaW50ZXJzKTogVXNlIEZUX1VMb25nIGZvcgoJc29tZSBsb2NhbCB2YXJpYWJsZXMuCgkoY2ZmX2NoYXJzZXRfbG9hZCwgY2ZmX2VuY29kaW5nX2xvYWQpOiBVc2UgY2FzdHMgdG8gRlRfVUludCBmb3Igc29tZQoJc3dpdGNoIHN0YXRlbWVudHMuCgkoY2ZmX2ZvbnRfbG9hZCk6IFVzZSBjYXN0IGluIGNhbGwgdG8gQ0ZGX0xvYWRfRkRfU2VsZWN0LgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX3NpemVfaW5pdCk6IFVzZSBtb3JlIGNhc3RzLgoJKGNmZl9mYWNlX2luaXQpOiBVc2UgRlRfSW50MzIgZm9yIGBmbGFncycuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX29wZXJhdG9yX3NlYWMpOiBVc2UgY2FzdCBmb3IgYXNzaWduaW5nCglgYWR4JyBhbmQgYGFkeScuCgkoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgRlRfVUxvbmcgZm9yIHRoaXJkIHBhcmFtZXRlci4KCVVzZSBtb3JlIGNhc3RzLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfdW5pY29kZV9pbml0KTogVXNlIGNhc3QgZm9yIGBjb3VudCcuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBVc2UgRlRfVUxvbmcgZm9yIGBsZW4nLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogQWRkIG1pc3NpbmcgY2FzdCBmb3IKCWBjaWRfZ2V0X29mZnNldCcuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAodDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncykgPDE4PjogVXNlCgljYXN0IGZvciBgbnVtX3BvaW50cycuCgkodDFfZGVjb2Rlcl9pbml0KTogVXNlIGNhc3QgZm9yIGFzc2lnbmluZyBgZGVjb2Rlci0+bnVtX2dseXBocycuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBVc2UgRlRfSW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggKEZUX1Nsb3RfTG9hZEZ1bmMpOiBVc2UKCWBGVF9JbnQzMicgZm9yIGZvdXJ0aCBwYXJhbWV0ZXIuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBVc2UgY2FzdCBmb3IgY2FsbGluZwoJY2xhenotPmluaXRfZmFjZS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoU2V0X0hpZ2hfUHJlY2lzaW9uKTogVXNlIGAxJyBpbnN0ZWFkIG9mCglgMUwnLgoJKEZpbmFsaXplX1Byb2ZpbGVfVGFibGUsIExpbmVfVXAsIGZ0X2JsYWNrX2luaXQpOiBVc2UgY2FzdHMuCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IERpdHRvLgoKCSogc3JjL3NmbnQvc2ZudF9kaXJfY2hlY2s6IENvbXBhcmUgYG1hZ2ljJyB3aXRoIHVuc2lnbmVkIGxvbmcKCWNvbnN0YW50LgoKMjAwMi0wOS0yNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBVcGRhdGVkLgoKMjAwMi0wOS0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSElOVF9NRVRSSUNTKTogRGlzYWJsaW5nIG1ldHJpY3MKCWhpbnRpbmcgaW4gdGhlIGF1dG8taGludGVyLiAgVGhpcyBwcm9kdWNlcyBtdWNoIGJldHRlciBhbnRpLWFsaWFzZWQKCXRleHQuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIHRoZSBjaGFuZ2VzIGRvY3VtZW50YXRpb24uCgoyMDAyLTA5LTI1ICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUsIHR0X2NtYXA0X2NoYXJfaW5kZXgsCgl0dF9jbWFwNF9jaGFyX25leHQpOiBBZGRlZCBzdXBwb3J0IGZvciBvcGVuc19fXy50dGYgKGl0IGNvbnRhaW5zIGEKCWNoYXJtYXAgdGhhdCB1c2VzIG9mZnNldD0weEZGRkZVIGluc3RlYWQgb2YgMHgwMDAwIHRvIGluZGljYXRlIGEKCW1pc3NpbmcgZ2x5cGgpLgoKMjAwMi0wOS0yMSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChMb2FkX0dseXBoKTogRm91cnRoIHBhcmFtZXRlciBtdXN0IGJlCglGVF9JbnQzMi4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuaCAoVFRfTG9hZF9HbHlwaCk6CglEaXR0by4KCjIwMDItMDktMTkgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJTW9yZSAxNmJpdCBmaXhlcy4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChzb3J0X3ZhbHVlcyk6IFVzZSBGVF9Qb3MgZm9yIGBzd2FwJy4KCShhaF9oaW50ZXJfY29tcHV0ZV93aWR0aHMpOiBVc2UgRlRfUG9zIGZvciBgZGlzdCcuCglVc2UgQUhfTUFYX1dJRFRIUy4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9zY2FsZV9ibHVlX2VkZ2VzKTogVXNlIEZUX1BvcwoJZm9yIGBkZWx0YScuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogUmVwbGFjZSBzb21lIGludHMgd2l0aCBGVF9JbnQgYW5kCglGVF9Qb3MuCgkoYWhfdGVzdF9leHRyZW1hKTogQ2xlYW4gdXAgY29kZS4KCShhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgNCBGVF9JbnQgdmFyaWFibGVzIGluc3RlYWQgb2YgRlRfQkJveCB0bwoJaG9sZCBpbmRpY2VzLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9TZWdtZW50UmVjKTogQ2hhbmdlIHR5cGUgb2YgYHNjb3JlJwoJdG8gRlRfUG9zLgoKMjAwMi0wOS0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIHRvCglyZWNlbnQgdmVyc2lvbnMuCgoyMDAyLTA5LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTGlicmFyeV9WZXJzaW9uKTogQnVnZml4LgoKCSogRnJlZVR5cGUgMi4xLjNyYzIgKHJlbGVhc2UgY2FuZGlkYXRlIDIpIGlzIHJlbGVhc2VkIQoKMjAwMi0wOS0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNpby5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLCBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0aW5nCgl0aGUgaW4tc291cmNlIGRvY3VtZW50YXRpb24uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBVcGRhdGluZyB0aGUgSFRNTCBmb3JtYXR0ZXIgaW4gdGhlCglEb2NNYWtlciB0b29sLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBSZW1vdmVkLgoKMjAwMi0wOS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1vcmUgMTZiaXQgZml4ZXMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBVc2UgRlRfTG9uZyBmb3IKCXNlY29uZCBwYXJhbWV0ZXIuCgoyMDAyLTA5LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJMTZiaXQgZml4ZXMgZnJvbSBXb2xmZ2FuZyBEb21y9nNlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuaCAoVDFfUGFyc2VyUmVjKTogQ2hhbmdlIHR5cGUgb2YgYGJhc2VfbGVuJwoJYW5kIGBwcml2YXRlX2xlbicgdG8gRlRfTG9uZy4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFJlbW92ZSBjYXN0IGZvcgoJYHByaXZhdGVfbGVuJy4KCSogc3JjL3R5cGUxL3QxbG9hZC5jOiBVc2UgRlRfSW50IGNhc3QgZm9yIG1vc3QgY2FsbHMgb2YgVDFfVG9JbnQuCglVc2UgRlRfUHRyRGlzdCB3aGVyZSBhcHByb3ByaWF0ZS4KCShwYXJzZV9lbmNvZGluZyk6IFVzZSBGVF9Mb25nIGZvciBgY291bnQnIGFuZCBgbicuCgkocmVhZF9iaW5hcnlfZGF0YSk6IFVzZSBGVF9Mb25nKiBmb3Igc2Vjb25kIHBhcmFtZXRlci4KCSogc3JjL3R5cGUxL3QxYWZtLmMgKGFmbV9hdG9pbmRleCk6IFVzZSBGVF9QdHJEaXN0LgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IFJlbW92ZSB1bnVzZWQgbGFiZWwuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMi0wOS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2luZyBmdGdyYXlzLmMgY29tcGlsZSBzdGFuZC1hbG9uZSBhZ2Fpbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBJbmNsdWRlIGZ0MmJ1aWxkLmggb25seSBpZiBfU1RBTkRBTE9ORV8KCWlzbid0IGRlZmluZWQuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIFtfU1RBTkRBTE9ORV9dOiBEZWZpbmUgZnRfbWVtc2V0LAoJRlRfQkVHSU5fSEVBREVSLCBGVF9FTkRfSEVBREVSLgoJKEZUX01FTV9aRVJPKTogRGVmaW5lLgoJKFRSYXN0ZXIpIFtHUkFZU19VU0VfR0FNTUFdOiBVc2UgYHVuc2lnbmVkIGNoYXInIGluc3RlYWQgb2YgRlRfQnl0ZS4KCShncmF5X3JlbmRlcl9zcGFuLCBncmF5X2luaXRfZ2FtbWEpOiBEb24ndCB1c2UgYEZUX1VJbnQnLgoJRG9uJ3QgY2FzdCB3aXRoIGBGVF9CeXRlJy4KCShncmF5c19pbml0X2dhbW1hKTogRG9uJ3QgdXNlIGBGVF9VSW50Jy4KCjIwMDItMDktMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jIChGVF9BZGRfRGVmYXVsdF9Nb2R1bGVzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRmFjZV9Eb25lKTogSW1wcm92ZSB0cmFjaW5nIG1lc3NhZ2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX01BWF9NT0RVTEVTKTogSW5jcmVhc2VkCgl0byAzMi4KCjIwMDItMDktMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6MjozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwMi0wOS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IEFkZGluZyBmaXgKCXRvIHByZXZlbnQgc2VnIGZhdWx0IHdoZW4gaGludHMgYXJlIHByb3ZpZGVkIGluIGFuIGVtcHR5IGdseXBoLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmkgKEdFTl9DQUNIRV9MT09LVVApIFtGVF9ERUJVR19MRVZFTF9FUlJPUl06CglSZW1vdmVkIGNvbmRpdGlvbmFsIGNvZGUuICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb21waWxhdGlvbiBpbiBkZWJ1ZyBtb2RlIG9mIHRlbXBsYXRlIGluc3RhbnRpYXRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogUmVtb3ZlZCBpbmNvcnJlY3QgInpmdF8iIGRlZmluaXRpb25zCglhbmQgdXBkYXRlZCBjb25zdGFudHMgZG9jdW1lbnRhdGlvbiBjb21tZW50cy4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlcl9ydW4pOiBGaXhlZCB0aGUgQ0ZGIHRhYmxlIGxvYWRlci4KCUl0IGRpZG4ndCBhY2NlcHQgZW1wdHkgYXJyYXlzLCBhbmQgdGhpcyBwcmV2ZW50ZWQgdGhlIGxvYWRpbmcgb2YKCWNlcnRhaW4gZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0ZhY2VSZWMpOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uCgljb21tZW50LiAgVGhlICJkZXNjZW5kZXIiIHZhbHVlIGlzIGFsd2F5cyAqbmVnYXRpdmUqLCBub3QgcG9zaXRpdmUuCgoyMDAyLTA5LTA5ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HbHlwaF9Mb2FkKTogRml4aW5nIGluY29ycmVjdCBjb21wdXRhdGlvbgoJb2YgYml0bWFwIG1ldHJpY3MuCgoyMDAyLTA5LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVmFyaW91cyB1cGRhdGVzIHRvIGNvcnJlY3RseSBzdXBwb3J0IHN1Yi1waXhlbCByZW5kZXJpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBBZGQgdHdvIHJlbmRlcmVycyBmb3IgTENELgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyX2xjZCwKCWZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOiBTZXQgRlRfUElYRUxfTU9ERV9MQ0QgYW5kCglGVF9QSVhFTF9NT0RFX0xDRF9WLCByZXNwZWN0aXZlbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2ltYWdlLmggKEZUQ19JbWFnZVR5cGVSZWMpOiBOZXcKCXN0cnVjdHVyZS4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKEZUQ19JbWFnZURlc2MpOiBSZW1vdmVkLgoJKEZUQ19JbWFnZUNhY2hlX0xvb2t1cCk6IFNlY29uZCBwYXJhbWV0ZXIgaXMgbm93IG9mIHR5cGUKCWBGVENfSW1hZ2VUeXBlJy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKEZUQ19JTUFHRV9ERVNDX0NPTVBBUkUpOiBVcGRhdGVkIGFuZCByZW5hbWVkIHRvLi4uCgkoRlRDX0lNQUdFX1RZUEVfQ09NUEFSRSk6IFRoaXMuCgkoRlRDX0lNQUdFX0RFU0NfSEFTSCk6IFVwZGF0ZWQgYW5kIHJlbmFtZWQgdG8uLi4KCShGVENfSU1BR0VfVFlQRV9IQVNIKTogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjc2JpdHMuaCAoRlRDX1NCaXRSZWMpOiBGaWVsZCBgbnVtX2dyYXlzJwoJcmVwbGFjZWQgd2l0aCBgbWF4X2dyYXlzJy4KCWBwaXRjaCcgaXMgbm93IEZUX1Nob3J0LgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogU2Vjb25kIHBhcmFtZXRlciBpcyBub3cgb2YgdHlwZQoJYEZUQ19JbWFnZVR5cGUnLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlUXVlcnlSZWMsIEZUQ19JbWFnZUZhbWlseVJlYyk6CglVcGRhdGVkLgoJKGZ0Y19pbWFnZV9ub2RlX2luaXQpOiBVcGRhdGVkLgoJTW92ZWQgY29kZSB0byBjb252ZXJ0IHR5cGUgZmxhZ3MgdG8gbG9hZCBmbGFncyB0by4uLgoJKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApOiBUaGlzIGZ1bmN0aW9uLgoJKGZ0Y19pbWFnZV9mYW1pbHlfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdC5jIChGVENfU0JpdFF1ZXJ5UmVjLCBGVENfU0JpdEZhbWlseVJlYyk6CglVcGRhdGVkLgoJKGZ0Y19zYml0X25vZGVfbG9hZCk6IFVwZGF0ZWQuCglNb3ZlZCBjb2RlIHRvIGNvbnZlcnQgdHlwZSBmbGFncyB0byBsb2FkIGZsYWdzIHRvLi4uCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBUaGlzIGZ1bmN0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyUmVjKTogUmVwbGFjZSBgbm9fKl9oaW50cycgd2l0aAoJYGRvXypfc25hcHBpbmcnLgoJVXBkYXRlIGFsbCB1c2VycyAod2l0aCBuZWdhdGlvbikuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogRml4IHRocmVzaG9sZCBmb3IKCWBkaXN0JyBmb3IgYGRlbHRhJyA8IDQwLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfR2x5cGhSZWMpOiBSZXBsYWNlIGBub18qX2hpbnRzJyB3aXRoCglgZG9fKl9zbmFwcGluZycuCglVcGRhdGUgYWxsIHVzZXJzICh3aXRoIG5lZ2F0aW9uKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IE5ldwoJZnVuY3Rpb24uCgkocHNoM19oaW50X2FsaWduKTogVXNlIGl0LgoJSW1wcm92ZSBoaW50aW5nIGNvZGUuCglbU1RST05HRVJdOiBSZW1vdmVkLgoJKFNUUk9OR0VSKTogUmVtb3ZlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfU2V0X0hpbnRfRmxhZ3MsIEZUX0hJTlRfKik6CglSZW1vdmVkLgoKMjAwMi0wOS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9TaXplX0luaXQpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3NpemVfaW5pdCk6IFRoaXMuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfQnVpbGRlcl9BZGRfUG9pbnQxKTogUmVuYW1lZCB0by4uLgoJKHQxX2J1aWxkZXJfYWRkX3BvaW50MSk6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBEaXR0by4KCjIwMDItMDktMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQ29ycmVjdGVkIHRoZSBkZWZpbml0aW9uIG9mCglmdF9lbmNvZGluZ19zeW1ib2wgdG8gYmUgRlRfRU5DT0RJTkdfTVNfU1lNQk9MIChpbnN0ZWFkIG9mCgl0aGUgZXJyb25lb3VzIEZUX0VOQ09ESU5HX1NZTUJPTCkuCgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoZGF0YWRpcik6IEluaXRpYWxpemUgaXQgKHRoYW5rcyB0bwoJQW50aG9ueSBGb2spLgoKMjAwMi0wOC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNsaWdodCBtb2RpZmljYXRpb24gdG8gdGhlIFBvc3RzY3JpcHQgaGludGVyIHRvIHNsaWdodGx5IGluY3JlYXNlCgl0aGUgY29udHJhc3Qgb2Ygc21vb3RoIGhpbnRpbmcuICBUaGlzIGlzIHZlcnkgc2ltaWxhciB0byB3aGF0IHRoZQoJYXV0by1oaW50ZXIgZG9lcyB3aGVuIGl0IGNvbWVzIHRvIHN0ZW0gd2lkdGggY29tcHV0YXRpb25zLiAgSG93ZXZlciwKCWl0IHByb2R1Y2VzIGJldHRlciByZXN1bHRzIHdpdGggd2VsbC1oaW50ZWQgZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJfRnVuY3NSZWMpOiBBZGQgaGludAoJbW9kZSB0byBgaW5pdCcgbWVtYmVyIGZ1bmN0aW9uLgoJKFQxX0RlY29kZXJSZWMpOiBBZGQgaGludCBtb2RlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMgKFQxX0hpbnRzX0FwcGx5RnVuYywKCVQyX0hpbnRzX0FwcGx5RnVuYyk6IFBhc3MgYGhpbnRfbW9kZScsIG5vdCBgaGludF9mbGFncycuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX2luaXQpOiBBZGQgaGludCBtb2RlIGFyZ3VtZW50LgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHMxX2hpbnRzX2FwcGx5KTogUGFzcyBoaW50IG1vZGUsIG5vdAoJaGludCBmbGFncy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogRGl0dG8uCgkoU1RST05HRVIpOiBOZXcgbWFjcm8uCgkocHNoM19oaW50X2FsaWduLCBwc2gzX2hpbnRfdGFibGVfYWxpZ25faGludHMpOiBQYXNzIGBnbHlwaCcgaW5zdGVhZAoJb2YgYGhpbnRfZmxhZ3MnLgoJSW1wbGVtZW50IGFubm91bmNlZCBjaGFuZ2VzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IEFkZCBmbGFncyB0byBjb250cm9sCgl2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBoaW50cyBhbmQgc25hcHBpbmcuCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIHRoZSAyLjEuMyByZWxlYXNlLgoKMjAwMi0wOC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogTWFzc2l2ZSByZS1mb3JtYXR0aW5nIGNoYW5nZXMgdG8gbWFueSwgbWFueSBzb3VyY2UgZmlsZXMuICBJIGRvbid0Cgl3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZS4gIFRoZSBvcGVyYXRpb25zIHBlcmZvcm1lZCB3ZXJlIGFsbAoJbG9naWNhbCB0cmFuc2Zvcm1hdGlvbnMgb2YgdGhlIHNvdXJjZXM6CgoJLSB0cnlpbmcgdG8gY29udmVydCBhbGwgZW51bXMgYW5kIGNvbnN0YW50cyB0byBDQVBJVEFMSVpFRF9TVFlMRSwKCSAgI3dpdGggZGVmaW5lIGRlZmluaXRpb25zIGxpa2UKCgkgICAgI2RlZmluZSBteV9vbGRfY29uc3RhbnRzICAgTVlfTkVXX0NPTlNUQU5UCgoJLSBiaWcsIGJpZyB1cGRhdGUgb2YgdGhlIGRvY3VtZW50YXRpb24gY29tbWVudHMKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgc3JjL2Jhc2UvZnRvYmpzLmMsCglzcmMvc21vb3RoL2Z0c21vb3RoLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBBZGRpbmcgc3VwcG9ydAoJZm9yIExDRC1vcHRpbWl6ZWQgcmVuZGVyaW5nIHRob3VnaCB0aGUgbmV3IGNvbnN0YW50cy9lbnVtczoKCgkgIEZUX1JFTkRFUl9NT0RFX0xDRCwgRlRfUkVOREVSX01PREVfTENEX1YKCSAgRlRfUElYRUxfTU9ERV9MQ0QsICBGVF9QSVhFTF9NT0RFX0xDRF9WCgoJVGhpcyBpcyBzdGlsbCB3b3JrIGluIHByb2dyZXNzLCBkb24ndCBleHBlY3QgZXZlcnl0aGluZyB0byB3b3JrCgljb3JyZWN0bHkgdGhvdWdoIG1vc3Qgb2YgdGhlIGZlYXR1cmVzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZC4KCgkqIEFkZGluZyBuZXcgRlRfTE9BRF9YWFggZmxhZ3MsIHVzZWQgdG8gc3BlY2lmeSBib3RoIGhpbnRpbmcgYW5kCglyZW5kZXJpbmcgdGFyZ2V0czoKCgkgIEZUX0xPQURfVEFSR0VUX05PUk1BTCA6OiBhbnRpLWFsaWFzZWQgaGludGluZyAmIHJlbmRlcmluZwoJICBGVF9MT0FEX1RBUkdFVF9NT05PICAgOjogbW9ub2Nocm9tZSBiaXRtYXBzCgkgIEZUX0xPQURfVEFSR0VUX0xDRCAgICA6OiBob3Jpem9udGFsIFJHQi9CR1IgZGVjaW1hdGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50aW5nICYgcmVuZGVyaW5nCgkgIEZUX0xPQURfVEFSR0VUX0xDRF9WICA6OiB2ZXJ0aWNhbCBSR0IvQkdSIGRlY2ltYXRlZAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludGluZyAmIHJlbmRlcmluZwoKCU5vdGUgdGhhdCBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgaXMgMCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGVmYXVsdAoJYmVoYXZpb3VyIG9mIHRoZSBmb250IGVuZ2luZSBpcyBfdW5jaGFuZ2VkXy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oCgkoRlRfT3V0bGluZV97TW92ZSxMaW5lLENvbmljLEN1YmljfVRvX0Z1bmMpOiBSZW5hbWVkIHRvLi4uCgkoRlRfT3V0bGluZV97TW92ZSxMaW5lLENvbmljLEN1YmljfVRvRnVuYyk6IFRoaXMuCgkoRlRfUmFzdGVyX1NwYW5fRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfU3BhbkZ1bmMpOiBUaGlzLgoJKEZUX1Jhc3Rlcl97TmV3LERvbmUsUmVzZXQsU2V0X01vZGUsUmVuZGVyfV9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShGVF9SYXN0ZXJfe05ldyxEb25lLFJlc2V0LFNldE1vZGUsUmVuZGVyfUZ1bmN9OiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmgKCShGVF9HbHlwaF97SW5pdCxEb25lLFRyYW5zZm9ybSxCQm94LENvcHksUHJlcGFyZX1fRnVuYyk6IFJlbmFtZWQKCXRvIC4uLgoJKEZUX0dseXBoX3tJbml0LERvbmUsVHJhbnNmb3JtLEdldEJCb3gsQ29weSxQcmVwYXJlfUZ1bmMpOiBUaGlzLgoJKEZUUmVuZGVyZXJfe3JlbmRlcix0cmFuc2Zvcm0sZ2V0Q0JveCxzZXRNb2RlfSk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfUmVuZGVyZXJfe1JlbmRlckZ1bmMsVHJhbnNmb3JtRnVuYyxHZXRDQm94RnVuYyxTZXRlTW9kZUZ1bmN9KToKCVRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1BvaW50LCBBSF9TZWdtZW50LCBBSF9FZGdlLCBBSF9HbG9iYWxzLAoJQUhfRmFjZV9HbG9iYWxzLCBBSF9PdXRsaW5lLCBBSF9IaW50ZXIpOiBUaGVzZSB0eXBlZGVmcyBhcmUgbm93Cglwb2ludGVycyB0byB0aGUgY29ycmVzcG9uZGluZyBgKlJlYycgc3RydWN0dXJlcy4gIEFsbCBzb3VyY2UgZmlsZXMKCWhhdmUgYmVlbiB1cGRhdGVkIGFjY29yZGluZ2x5LgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZGVjb2Rlcl9pbml0KTogQWRkIGhpbnQgbW9kZSBhcyBwYXJhbWV0ZXIuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0RlY29kZXIpOiBBZGQgYGhpbnRfbW9kZScgZWxlbWVudC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2VfY29tcHV0ZV9tYXhfYWR2YW5jZSk6IFRoaXMuCgkoQ0lEX0xvYWRfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChDSURfT3Blbl9GYWNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX29wZW4pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0dseXBoU2xvdF97RG9uZSxJbml0fSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2xvdF97ZG9uZSxpbml0fSk6IFRoaXMuCgkoQ0lEX1NpemVfe0dldF9HbG9iYWxzX0Z1bmNzLERvbmUsUmVzZXQpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3NpemVfe2dldF9nbG9iYWxzX2Z1bmNzLGRvbmUscmVzZXQpOiBUaGlzLgoJKENJRF9GYWNlX3tEb25lLEluaXR9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX3tkb25lLGluaXR9KTogVGhpcy4KCShDSURfRHJpdmVyX3tEb25lLEluaXR9OiBSZW5hbWVkIHRvLi4uCgkoY2lkX2RyaXZlcl97ZG9uZSxpbml0fTogVGhpcy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jIChDSURfe05ldyxEb25lfV9QYXJzZXIpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl97bmV3LGRvbmV9KTogVGhpcy4KCSogc3JjL2NpZC9jaWRwYXJzZS5oIChDSURfU2tpcF97U3BhY2VzLEFscGhhfSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX3NraXBfe3NwYWNlcyxhbHBoYX0pOiBUaGlzLgoJKENJRF9Ub3tJbnQsRml4ZWQsQ29vcmRBcnJheSxGaXhlZEFycmF5LFRva2VuLFRva2VuQXJyYXl9KTogUmVuYW1lZAoJdG8uLi4KCShjaWRfcGFyc2VyX3RvX3tpbnQsZml4ZWQsY29vcmRfYXJyYXksZml4ZWRfYXJyYXksdG9rZW4sdG9rZW5fYXJyYXl9KToKCVRoaXMuCgkoQ0lEX0xvYWRfe0ZpZWxkLEZpZWxkX1RhYmxlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfbG9hZF97ZmllbGQsZmllbGRfdGFibGV9KTogVGhpcy4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDSURfR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZ2V0X2ludGVyZmFjZSk6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfKik6IFJlbmFtZWQgdG8uLi4KCShwc190YWJsZV8qKTogVGhpcy4KCShUMV9CdWlsZGVyXyopOiBSZW5hbWVkIHRvLi4uCgkodDFfYnVpbGRlcl8qKTogVGhpcy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfKik6IFJlbmFtZWQgdG8uLi4KCSh0MV9kZWNvZGVyXyopOiBUaGlzLgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfKik6IFJlbmFtZWQgdG8uLi4KCShwc18qKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIgKFNGTlRfR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShzZm50X2dldF9pbnRlcmZhY2UpOiBUaGlzLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF8qKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0Y21hcC5jIChUVF9DaGFyTWFwX3tMb2FkLEZyZWV9KTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2Vfe2xvYWQsZnJlZX1fY2hhcm1hcCk6IFRoaXMuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFRoaXMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0cG9zdC5jIChUVF9Qb3N0X0RlZmF1bHRfTmFtZXMpOiBSZW5hbWVkIHRvLi4uCgkodHRfcG9zdF9kZWZhdWx0X25hbWVzKTogVGhpcy4KCShMb2FkXyopOiBSZW5hbWVkIHRvLi4uCgkobG9hZF8qKTogVGhpcy4KCShUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0c2JpdC5jIChUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkoe0ZpbmQsTG9hZCxDcm9wfV8qKTogUmVuYW1lZCB0by4uLgoJKHtmaW5kLGxvYWQsY3JvcH1fKik6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IFJlbmFtZWQgdG8uLi4KCShmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBUaGlzLgoJTWFrZSBmdW5jdGlvbiBtb3JlIGdlbmVyaWMgYnkgYWRkaW5nIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjYWxpbmcKCWZhY3RvcnMuCgkoZnRfc21vb3RoX3JlbmRlciwgZnRfc21vb3RoX3JlbmRlcl9sY2QsIGZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOgoJTmV3IGZ1bmN0aW9ucy4KCgkoZnRfc21vb3RoX2xvY2RfcmVuZGVyZXJfY2xhc3MsIGZ0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzKTogTmV3CgljbGFzc2VzLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF97RG9uZSxOZXd9X0dseXBoWm9uZSk6IFJlbmFtZWQgdG8uLi4KCSh0dF9nbHlwaHpvbmVfe2RvbmUsbmV3fSk6IFRoaXMuCgkoVFRfe0ZhY2UsU2l6ZSxEcml2ZXJ9XyopOiBSZW5hbWVkIHRvLi4uCgkodHRfe2ZhY2Usc2l6ZSxkcml2ZXJ9XyopOiBUaGlzLgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jIChUVF9Mb2FkX0xvY2F0aW9ucyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2xvYWRfbG9jYSk6IFRoaXMuCgkoVFRfTG9hZF9Qcm9ncmFtcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2xvYWRfZnBnbSk6IFRoaXMuCgkoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoKMjAwMi0wOC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9WRVJTSU9OLkRMTDogTmV3IGZpbGUuCgoyMDAyLTA4LTIzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9vcGVyYXRvcl9zZWFjKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBJbmNyZW1lbnRhbCBmb250cyAoYWN0dWFsbHkgbm90CglpbmNyZW1lbnRhbCBpbiB0aGUgY2FzZSBvZiBDRkYgYnV0IGp1c3QgdXNpbmcgY2FsbGJhY2tzIHRvIGdldCBnbHlwaAoJcmVjaXBlcykgcGFzcyB0aGUgY2hhcmFjdGVyIGNvZGUsIG5vdCB0aGUgZ2x5cGggaW5kZXgsIHRvIHRoZQoJZ2V0X2dseXBoX2RhdGEgZnVuY3Rpb247IHRoZXkgaGF2ZSBubyB2YWxpZCBjaGFyc2V0IHRhYmxlLgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBSZW1vdmVkIHNwZWNpYWwgY2FzZXMgZm9yCglGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMLCB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeTsgQ0ZGCglmb250cyBwcm92aWRlZCB2aWEgdGhlIGluY3JlbWVudGFsIGludGVyZmFjZSBub3cgaGF2ZSB0byBjb25mb3JtCgltb3JlIGNsb3NlbHkgdG8gdGhlIENGRiBmb250IGZvcm1hdC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oIChjZmZfZm9udF9sb2FkKTogUmVtb3ZlZCBhcmd1bWVudCBub3cgdW5uZWVkZWQuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IENoYW5nZWQgY2FsbCB0byBjZmZfZm9udF9sb2FkCgl0byBjb25mb3JtIHdpdGggbmV3IHNpZ25hdHVyZS4KCjIwMDItMDgtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2JqZWN0LmMsIHNyYy9iYXNlL2Z0c3ludGguYywgc3JjL2Jhc2UvZnRzdHJva2VyLmMsCglzcmMvYmRmL2JkZmRyaXZyLmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19nbHlwaF9jb21wdXRlX2luZmxlY3Rpb25zLAoJcHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEsIHBzaDNfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludCk6IEZpeAoJY29tcGlsZXIgd2FybmluZ3MgYW5kIHJlc29sdmUgc2hhZG93aW5nIG9mIGxvY2FsIHZhcmlhYmxlcy4KCjIwMDItMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglUaGUgYXV0b21hdGljIGFuZCBQb3N0c2NyaXB0IGhpbnRlciBub3cgYXV0b21hdGljYWxseSBkZXRlY3QKCWluZmxlY3Rpb24gcG9pbnRzIGluIGdseXBoIG91dGxpbmVzIGFuZCB0cmVhdHMgdGhlbSBzcGVjaWFsbHkuICBUaGlzCglpcyB2ZXJ5IHVzZWZ1bCB0byBwcmV2ZW50IG5hc3R5IGVmZmVjdCBsaWtlIHRoZSBkaXNhcHBlYXJpbmcKCWRpYWdvbmFscyBvZiAiUyIgYW5kICJzIiBpbiBtYW55LCBtYW55IGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoYWhfZmxhZ19pbmZsZWN0aW9uKTogTmV3IG1hY3JvLgoJKiBzcmMvYXV0b2hpbnQvYWhhbmdsZXMuYyAoYWhfYW5nbGVfZGlmZik6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2F1dG9oaW50L2FoYW5nbGVzLmg6IFVwZGF0ZWQuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9pbmZsZWN0aW9ucyk6IE5ldwoJZnVuY3Rpb24uCgkoYWhfb3V0bGluZV9kZXRlY3RfZmVhdHVyZXMpOiBVc2UgaXQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3N0cm9uZ19wb2ludHMpCglbIUFIX09QVElPTl9OT19XRUFLX0lOVEVSUE9MQVRJT05dOiBIYW5kbGUgaW5mbGVjdGlvbi4KCgkqIHNyYy90b29scy9kb2NtYWtlci9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2RvY21ha2VyL3V0aWxzLnB5LAoJc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogVXBkYXRpbmcgdGhlIERvY01ha2VyIHRvb2wuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IENoYW5naW5nIHRoZSB0eXBlIG9mIHRoZSAibG9hZF9mbGFncyIKCXBhcmFtZXRlciBmcm9tICJGVF9JbnQiIHRvICJGVF9JbnQzMiIsIHRoaXMgaW4gb3JkZXIgdG8gc3VwcG9ydCBtb3JlCglvcHRpb25zLiAgVGhpcyBzaG91bGQgb25seSBicmVhayBiaW5hcnkgYW5kL29yIHNvdXJjZSBjb21wYXRpYmlsaXR5CglvbiAxNi1iaXQgcGxhdGZvcm1zIChBdGFyaT8pLgoJKEZUX0xPQURfTk9fQVVUT0hJTlQpOiBOZXcgbWFjcm8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglIYW5kbGUgRlRfTE9BRF9OT19BVVRPSElOVC4KCShGVF9Mb2FkX0NoYXIpOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdG9iamVjdC5jLAoJc3JjL2F1dG9oaW50L2FoZ2x5cGguYywgaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXhpbmcgdHlwb3MKCWFuZCByZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDgtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0dldF9NZXRyaWNzKTogQWRkIGd1YXJkIGZvciBrID0gMC4KCjIwMDItMDgtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9hdXRvaGludC9haG1vZHVsZS5jIFtERUJVR19ISU5URVJdOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncwoJKG9ubHkgdXNlZCBpbiBkZXZlbG9wbWVudCBidWlsZHMgYW55d2F5KS4KCglJbXByb3ZlIHN1cHBvcnQgb2YgbG9jYWwgZXh0cmVtYSBhbmQgc3RlbSBlZGdlIHBvaW50cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0hpbnRfVGFibGVSZWMpOiBVc2UgUFNIM19ab25lUmVjCglmb3IgYHpvbmVzJy4KCShQU0gzX0RJUl9VUCwgUFNIM19ESVJfRE9XTik6IEV4Y2hhbmdlIHZhbHVlcy4KCShQU0gzX0RJUl9IT1JJWk9OVEFMLCBQU0gzX0RJUl9WRVJUSUNBTCk6IE5ldyBtYWNyb3MuCgkoUFNIM19ESVJfQ09NUEFSRSwgUFNIM19ESVJfSVNfSE9SSVpPTlRBTCwgUFNIM19JU19WRVJUSUNBTCk6IE5ldwoJbWFjcm9zLgoJKFBTSDNfUE9JTlRfSU5GTEVYKTogTmV3IGVudW0uCgkocHNoM19wb2ludF97aXMsc2V0fV97b2ZmLGluZmxleH0pOiBOZXcgbWFjcm9zLgoJKFBTSDNfUE9JTlRfe0VYVFJFTVVNLFBPU0lUSVZFLE5FR0FUSVZFLEVER0VfTUlOLEVER0VfTUFYKTogTmV3CgllbnVtIHZhbHVlcy4KCShwc2gzX3BvaW50X3tpcyxzZXR9X3tleHRyZW11bSxwb3NpdGl2ZSxuZWdhdGl2ZSxlZGdlX21pbixlZGdlX21heH0pOgoJTmV3IG1hY3Jvcy4KCShQU0gzX1BvaW50UmVjKTogTmV3IG1lbWJlcnMgYGZsYWdzMicgYW5kIGBvcmdfdicuCgkoUFNIM19QT0lOVF9FUVVBTF9BUkcsIFBTSDNfUE9JTlRfQU5HTEUpOiBOZXcgbWFjcm9zLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgW0RFQlVHX0hJTlRFUl06IFJlbW92aW5nIGNvbXBpbGVyCgl3YXJuaW5ncy4KCShDT01QVVRFX0lORkxFWFMpOiBOZXcgbWFjcm8uCgkocHNoM19oaW50X2FsaWduKTogU2ltcGxpZnkgc29tZSBiYXNpYyBhcml0aG1ldGljIGNvbXB1dGF0aW9ucy4KCShwc2gzX3BvaW50X2lzX2V4dHJlbXVtKTogUmVtb3ZlZC4KCShwc2gzX2dseXBoX2NvbXB1dGVfaW5mbGVjdGlvbnMpIFtDT01QVVRFX0lORkxFWFNdOiBOZXcgZnVuY3Rpb24uCgkocHNoM19nbHlwaF9pbml0KSBbQ09NUFVURV9JTkZMRVhTXTogVXNlIGl0LgoJKHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hKTogTmV3IGZ1bmN0aW9uLgoJKFBTSDNfU1RST05HX1RIUkVTSE9MRCk6IEluY3JlYXNlZCB0byAzMC4KCShwc2gzX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnQpOiBJbXByb3ZlZC4KCShwc2gzX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cywKCXBzaDNfZ2x5cGhfaW50ZXJwb2xhdGVfc3Ryb25nX3BvaW50cyk6IFVwZGF0ZWQuCgkocHNoM19oaW50c19hcHBseSk6IFVzZSBwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYS4KCgkqIHRlc3QvZ3ZpZXcuYyAoZHJhd19wczNfaGludCwgcHMzX2RyYXdfY29udHJvbF9wb2ludHMpOiBOZXcKCWZ1bmN0aW9ucy4KCU90aGVyIHNtYWxsIHVwZGF0ZXMuCgoJKiBKYW1maWxlOiBTbWFsbCB1cGRhdGVzLgoKMjAwMi0wOC0xOCAgQXJrYWRpdXN6IE1pc2tpZXdpY3ogIDxtaXNpZWtAcGxkLk9SRy5QTD4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEFkZCAkKERFU1RESVIpIHRvCgltYWtlIGxpZmUgZWFzaWVyIGZvciBwYWNrYWdlIG1haW50YWluZXJzLgoKMjAwMi0wOC0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dseXBoX0xvYWQpOiBGaXggY29tcHV0YXRpb24gb2YKCWhvcmlCZWFyaW5nWC4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhMb2FkKTogRml4IGNvbXB1dGF0aW9uIG9mCglob3JpQmVhcmluZ1kuCgoyMDAyLTA4LTE2ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglBZGQgc3VwcG9ydCBmb3IgQXBwbGUgY29tcG9zaXRlIGdseXBocy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX0NPTVBPTkVOVF9PRkZTRVRfU0NBTEVEKTogTmV3IG1hY3JvLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoT1ZFUkxBUF9DT01QT1VORCwgU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQsCglVTlNDQUxFRF9DT01QT05FTlRfT0ZGU0VUKTogTmV3IG1hY3JvcyBmb3IgYWRkaXRpb25hbCBPcGVuVHlwZQoJZ2x5cGggbG9hZGluZyBmbGFncy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogSW1wbGVtZW50IGl0LgoKMjAwMi0wOC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZnJlZV9nbHlwaF9kYXRhKSwKCXNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogVXNlIEZUX1VOVVNFRC4KCjIwMDItMDgtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogSW5pdGlhbGl6ZSBgZXJyb3InLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDgtMTUgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglJbXBsZW1lbnRlZCB0aGUgaW5jcmVtZW50YWwgZm9udCBsb2FkaW5nIHN5c3RlbSBmb3IgdGhlIENGRiBkcml2ZXIuCglUZXN0ZWQgdXNpbmcgdGhlIEdob3N0U2NyaXB0LXRvLUZyZWVUeXBlIGJyaWRnZSAodW5kZXIgZGV2ZWxvcG1lbnQpLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZ2V0X2dseXBoX2RhdGEsIGNmZl9mcmVlX2dseXBoX2RhdGEpOiBOZXcKCWZ1bmN0aW9ucy4KCShjZmZfb3BlcmF0b3Jfc2VhYywgY2ZmX2NvbXB1dGVfbWF4X2FkdmFuY2UsIGNmZl9zbG90X2xvYWQpOiBVc2UKCXRoZW0uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogQWRkIGBmYWNlJyBwYXJhbWV0ZXIuCglMb2FkIGNoYXJzZXQgYW5kIGVuY29kaW5nIG9ubHkgaWYgdGhlcmUgYXJlIGdseXBocy4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSW5jcmVtZW50YWwgZm9udHMgZG9uJ3QgbmVlZAoJY2hhcmFjdGVyIHJlY2lwZXMuCgkqIHNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvY2ZmL2NmZm9ianMuYzogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENvcnJlY3RlZCB0aGUgaW5jcmVtZW50YWwgZm9udAoJbG9hZGluZyBpbXBsZW1lbnRhdGlvbiB0byB1c2UgdGhlIG5ldyBzeXN0ZW0gaW50cm9kdWNlZCBvbgoJMjAwMi0wOC0wMS4KCjIwMDItMDgtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jLCBzcmMvY2FjaGUvZnRjY2FjaGUuaSwKCXNyYy9wZnIvcGZybG9hZC5jLCBzcmMvcGZyL3Bmcmdsb2FkLmM6IHMvaW5kZXgvaWR4Ly4KCSogc3JjL2NmZi9jZmZsb2FkLmM6IHMvc2VsZWN0L2Zkc2VsZWN0Ly4KCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBzL3dhaXQvd2FpdGluZy8uCgoyMDAyLTA4LTAxICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX09wZW5fRmFjZSk6IFRvbGVyYXRlIGEgZmFjZSB3aXRoIG5vCgljaGFyc3RyaW5ncyBpZiB0aGVyZSBpcyBhbiBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZS4gIFR5cGUgMQoJZmFjZXMgc3VwcGxpZWQgYnkgUG9zdFNjcmlwdCBpbnRlcnByZXRlcnMgbGlrZSBHaG9zdFNjcmlwdCB3aWxsCgl0eXBpY2FsbHkgbm90IHByb3ZpZGUgYW55IGNoYXJzdHJpbmdzIGF0IGxvYWQgdGltZSwgc28gdGhpcyBpcwoJZXNzZW50aWFsIGlmIHRoZXkgYXJlIHRvIHdvcmsuCgoyMDAyLTA4LTAxICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJTW9kaWZpZWQgaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UgdG8gYmUgY2xvc2VyIHRvIERhdmlkJ3MKCXByZWZlcmVuY2VzLiAgVGhlIGhlYWRlciBmcmVldHlwZS5oIGlzIG5vdCBub3cgYWZmZWN0ZWQsIHRoZQoJaW50ZXJmYWNlIGlzIHNwZWNpZmllZCB2aWEgYW4gRlRfUGFyYW1ldGVyLCB0aGUgcG9pbnRlciB0byB0aGUKCWludGVyZmFjZSBpcyBoaWRkZW4gaW4gYW4gaW50ZXJuYWwgcGFydCBvZiB0aGUgZmFjZSByZWNvcmQsIGFuZCBhbGwKCXRoZSBkZWZpbml0aW9ucyBhcmUgaW4gZnRpbmNyZW0uaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZWV0eXBlLmggW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglJbmNsdWRlIEZUX0lOQ1JFTUVOVEFMX0guCgkoRlRfRmFjZV9JbnRlcm5hbFJlYykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGQKCWBpbmNyZW1lbnRhbF9pbnRlcmZhY2UnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSwgRlRfT3Blbl9GYWNlKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCVVwZGF0ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJRnJlZSBsb2FkZWQgZ2x5cGggZGF0YSBwcm9wZXJseS4KCShjb21wdXRlX2dseXBoX21ldHJpY3MsIFRUX0xvYWRfR2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfRmFjZV9Jbml0KQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCShUMV9QYXJzZV9HbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJRnJlZSBsb2FkZWQgZ2x5cGggZGF0YSBwcm9wZXJseS4KCShUMV9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogRnJlZSBsb2FkZWQgZ2x5cGggZGF0YSBwcm9wZXJseS4KCjIwMDItMDctMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaDogQWRkaW5nIG5ldyBleHBlcmltZW50YWwgaGVhZGVyIGZpbGUKCXRvIGRlbW9uc3RyYXRlIGEgImNsZWFuZXIiIEFQSSB0byBzdXBwb3J0IGluY3JlbWVudGFsIGZvbnQgbG9hZGluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0lOQ1JFTUVOVEFMX0gpOiBOZXcgbWFjcm8uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvKjogQWRkaW5nIG5ldyAobW9yZSBhZHZhbmNlZCkgdmVyc2lvbiBvZgoJdGhlIERvY01ha2VyIHRvb2wsIHVzaW5nIFB5dGhvbidzIHNvcGhpc3RpY2F0ZWQgcmVnZXhwcy4KCjIwMDItMDctMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglzL2Z0X21lbXNldC9GVF9NRU1fU0VULy4KCXMvRlRfTUVNX1NFVC9GVF9NRU1fWkVSTy8gd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDAyLTA3LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBNYWtlIGl0IHdvcmsgd2l0aCBUVENzLgoKMjAwMi0wNy0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogcy9tZW1zZXQvZnRfbWVtc2V0Ly4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlc18zKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZW5jb2RpbmdfbG9hZCk6IFJlbW92ZSBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX2VuY29kaW5nX2luaXQpOiBSZW1vdmUgYHBzbmFtZXMnCgl2YXJpYWJsZS4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlbW92ZSBzdGF0ZW1lbnQKCXdpdGhvdXQgZWZmZWN0LgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogUmVtb3ZlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoM19oaW50X3RhYmxlX2luaXQsIHBzaDNfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRml4IGVycm9yCgltZXNzYWdlLgoKMjAwMi0wNy0yNCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBGaXggZm9yIGJ1ZyByZXBvcnRlZCBieSBTdmVuIE5ldW1hbm4KCVtzdmVuQGdpbXAub3JnXSBvbiB0aGUgRnJlZVR5cGUgZGV2ZWxvcG1lbnQgZm9ydW06ICJJZgoJRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCBpcyB1bmRlZmluZWQgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLCB0aGUKCVRydWVUeXBlIGxvYWRlciBjcmFzaGVzIGluIGxpbmUgODUyIG9mIHNyYy90cnVldHlwZS90dGdsb2FkLmMgd2hlbgoJaXQgdHJpZXMgdG8gYWNjZXNzIGZhY2UtPmdseXBoX2xvY2F0aW9ucy4iCgoyMDAyLTA3LTE4ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJQWRkZWQgdHlwZXMgYW5kIHN0cnVjdHVyZXMgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCB0eXBlZmFjZSBsb2FkaW5nLgoJVGhlIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZSBzdHJ1Y3R1cmUsIGRlZmluZWQgaW4gZnJlZXR5cGUuaCwgaXMKCWRlc2lnbmVkIHRvIGJlIHBhc3NlZCB0byBGVF9PcGVuX0ZhY2UgdG8gcHJvdmlkZSBjYWxsYmFjayBmdW5jdGlvbnMKCXRvIG9idGFpbiBnbHlwaCByZWNpcGVzIGFuZCBtZXRyaWNzLCBmb3IgZm9udHMgbGlrZSB0aG9zZSBwYXNzZWQKCWZyb20gUG9zdFNjcmlwdCB0aGF0IGRvIG5vdCBuZWNlc3NhcmlseSBwcm92aWRlIGFsbCwgb3IgYW55LCBnbHlwaAoJaW5mb3JtYXRpb24sIHdoZW4gZmlyc3Qgb3BlbmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCk6CglOZXcgY29uZmlndXJhdGlvbiBtYWNybyB0byBlbmFibGUgaW5jcmVtZW50YWwgZmFjZSBsb2FkaW5nLiAgQnkKCWRlZmF1bHQgaXQgaXMgbm90IGRlZmluZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0Jhc2ljX0dseXBoX01ldHJpY3MsCglGVF9HZXRfR2x5cGhfRGF0YV9GdW5jLCBGVF9HZXRfR2x5cGhfTWV0cmljc19GdW5jLAoJRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlX0Z1bmNzLCBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2UpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldy4KCShGVF9PcGVuX0FyZ3MsIEZUX0ZhY2VSZWMpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogTmV3IGZpZWxkCglgaW5jcmVtZW50YWxfaW50ZXJmYWNlJy4KCShGVF9PcGVuX0ZsYWdzKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldyBlbnVtCglgZnRfb3Blbl9pbmNyZW1lbnRhbCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaDogSW5jbHVkZSBGVF9DT05GSUdfQ09ORklHX0guCgkoRlRfRGF0YSk6IE5ldyBzdHJ1Y3R1cmUgdG8gcmVwcmVzZW50IGJpbmFyeSBkYXRhLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJQWRkIHBhcmFtZXRlciBmb3IgaW5jcmVtZW50YWwgbG9hZGluZy4KCShGVF9PcGVuX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXNlIGluY3JlbWVudGFsCglpbnRlcmZhY2UuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZyBzeXN0ZW0KCWZvciB0aGUgVHJ1ZVR5cGUgZHJpdmVyLgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFJldHVybiBGVF9FcnJvci4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQ2hlY2sgZm9yIG92ZXJyaWRpbmcgbWV0cmljcy4KCShUVF9Mb2FkX0dseXBoKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IERvbid0IGxvb2sgZm9yCgl0aGUgZ2x5cGggdGFibGUgd2hpbGUgaGFuZGxpbmcgYW4gaW5jcmVtZW50YWwgZm9udC4KCUdldCBnbHlwaCBvZmZzZXQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0ZhY2VfSW5pdCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ09SRU1FTlRBTF06IEFkZGVkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nCglzeXN0ZW0gZm9yIHRoZSBUcnVlVHlwZSBkcml2ZXIuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZyBzeXN0ZW0KCWZvciB0aGUgQ0lEIGRyaXZlci4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJQ2hhbmdlcyB0byBzdXBwb3J0IGluY3JlbWVudGFsIFR5cGUgNDIgZm9udHM6IEFzc3VtZSBhIGZvbnQgaGFzCglnbHlwaHMgaWYgaXQgaGFzIGFuIGluY3JlbWVudGFsIGludGVyZmFjZSBvYmplY3QuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaCk6IFJlbmFtZWQgdG8uLi4KCShUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKTogVGhpcy4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgc3VwcG9ydCBmb3IgaW5jcmVtZW50YWxseQoJbG9hZGVkIFR5cGUgMSBmYWNlcy4KCShUMV9QYXJzZV9HbHlwaCk6IE5ldyBmdW5jdGlvbi4KCShUMV9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCjIwMDItMDctMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglDbGVhbmluZyB1cCB0aGUgY2FjaGUgc3ViLXN5c3RlbSBjb2RlOyBsaW5lYXIgaGFzaGluZyBpcyBub3cgdGhlCglkZWZhdWx0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oLCBzcmMvY2FjaGUvZnRjY2FjaGUuaSwKCXNyYy9jYWNoZS9mdGNjYWNoZS5jIFshRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IFJlbW92ZWQuCgkoRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElORzogUmVtb3ZlZCBhbHNvLgoKCUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTIGlzIG5vdyB0aGUgZGVmYXVsdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCAoRlRfRHJpdmVyX0NsYXNzUmVjKTogUmVtb3ZlCglgZ2V0X2NoYXJfaW5kZXgnIGFuZCBgZ2V0X25leHRfY2hhcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jLAoJc3JjL2JkZi9iZGZkcml2ci5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL3BjZi9wY2Zkcml2ci5jLAoJc3JjL3Bmci9wZnJkcml2ci5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLAoJc3JjL3NmbnQvdHRjbWFwMC5oLCBzcmMvc2ZudC90dGxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLAoJc3JjL3R5cGU0Mi90NDJvYmpzLmMsIHNyYy93aW5mb250cy93aW5mbnQuYwoJWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106IFJlbW92ZWQuICBUaGUgbmV3IGNtYXAgY29kZSBpcyBub3cKCXRoZSBkZWZhdWx0LgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9DTWFwX0NoYXJJbmRleCwgVDQyX0NNYXBfQ2hhck5leHQpOgoJUmVtb3ZlZC4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENpZF9HZXRfQ2hhcl9JbmRleCwgQ2lkX0dldF9OZXh0X0NoYXIpOgoJUmVtb3ZlZC4KCSh0MV9jaWRfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKHR0X2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbW92ZWQKCSh0MV9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKHQ0Ml9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IFNlbGVjdCBVbmljb2RlIGNtYXAgYnkgZGVmYXVsdC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX1NGTlRfSGVhZGVyKTogRml4ZWQgYSByZWNlbnQgYnVnIHRoYXQKCXByZXZlbnRlZCBPcGVuVHlwZSBmb250cyB0byBiZSByZWNvZ25pemVkIGJ5IEZyZWVUeXBlLgoKMjAwMi0wNy0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUNoYW5naW5nIHRoZSBTRk5UIGxvYWRlciB0byBjaGVjayBmb3IgU0ZOVC1iYXNlZCBmb250IGZpbGVzCglkaWZmZXJlbnRseS4gIFdlIG5vdyBpZ25vcmUgdGhlIHJhbmdlICJoZWxwZXIiIGZpZWxkcyBhbmQgY2hlY2sgdGhlCgkiaGVhZCIgdGFibGUncyBtYWdpYyBudW1iZXIgaW5zdGVhZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChTRk5UX0hlYWRlclJlYyk6IEFkZCBgb2Zmc2V0JwoJZmllbGQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBOZXcgZnVuY3Rpb24uCgkoVFRfTG9hZF9TRk5UX0hlYWRlclJlYyk6IFJlbmFtZWQgdG8uLi4KCShUVF9Mb2FkX1NGTlRfSGVhZGVyKTogVGhpcy4KCUltcGxlbWVudCBuZXcgZnVuY3Rpb25hbGl0eS4KCSogc3JjL3NmbnQvdHRsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfaW50ZXJmYWNlKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2JqZWN0LmMsIHNyYy9iYXNlL2Z0aGFzaC5jOiBVcGRhdGVkIG9iamVjdCBzdWItc3lzdGVtCglhbmQgZHluYW1pYyBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIChzdGlsbCBleHBlcmltZW50YWwsIGRvbid0Cgl1c2UpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9MaWJyYXJ5UmVjKTogTmV3IG1lbWJlcgoJYG1ldGFfY2xhc3MnLgoKCUZpeGluZyBhIGJ1ZyBpbiB0aGUgVHlwZSAxIGxvYWRlciB0aGF0IHByZXZlbnRlZCB2YWxpZCBmb250IGJvdW5kaW5nCglib3hlcyB0byBiZSBsb2FkZWQgZnJvbSBtdWx0aXBsZSBtYXN0ZXIgZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0JsZW5kUmVjKTogQWRkIGBiYm94ZXMnIGZpZWxkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBBZGQKCWBUMV9GSUVMRF9UWVBFX0JCT1gnLgoJKFQxX0ZpZWxkTG9jYXRpb24pOiBBZGQgYFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1gnLgoJKFQxX0ZJRUxEX0JCT1gpOiBOZXcgbWFjcm8uCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1BhcnNlcl9Mb2FkRmllbGQpOiBIYW5kbGUgVDFfRklFTERfVFlQRV9CQk9YLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHQxX2FsbG9jYXRlX2JsZW5kKTogQ3JlYXRlIGJsZW5kLT5iYm94ZXMuCgkoVDFfRG9uZV9CbGVuZCk6IEZyZWUgYmxlbmQtPmJib3hlcy4KCSh0MV9sb2FkX2tleXdvcmQpOiBIYW5kbGUgVDFfRklFTERfTE9DQVRJT05fQkJPWC4KCShwYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKHQxX2tleXdvcmRzKTogQ29tbWVudCBvdXQgYHBhcnNlX2ZvbnRfYmJveCcuCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBEZWZpbmUgYEZvbnRCQm94JyBmaWVsZC4KCjIwMDItMDctMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBTbWFsbCBmaXggdG8gc2VsZWN0IHRoZSBVbmljb2RlIGNoYXJtYXAgYnkKCWRlZmF1bHQgd2hlbiBuZWVkZWQuCglTbWFsbCBmaXggdG8gYWxsb3cgT3BlblR5cGUgZm9udHMgdG8gc3VwcG9ydCBBZG9iZSBjaGFybWFwcyB3aGVuCgluZWVkZWQuCgoJKiBzcmMvY2ZmL2NmZmNtYXAuYywgc3JjL2NmZi9jZmZjbWFwLmg6IE5ldyBmaWxlcyB0byBzdXBwb3J0CgljaGFybWFwcyBmb3IgQ0ZGIGZvbnRzLgoKCSogc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9KYW1maWxlLCBzcmMvY2ZmL3J1bGVzLm1rOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRW5jb2RpbmdSZWMpOiBVc2UKCWZpeGVkLWxlbmd0aCBhcnJheXMgZm9yIGBzaWRzJyBhbmQgYGNvZGVzJy4gIEFkZCBgY291bnQnIG1lbWJlci4KCShDRkZfRm9udFJlYyk6IEFkZCBgcHNuYW1lcycgbWVtYmVyLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZsb2FkLmgsCglzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuYywKCXNyYy9jZmZwYXJzZS5oLCBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuaDogQWRkaW5nCglzdXBwb3J0IGZvciBDRkYgY2hhcm1hcHMsIHJlZm9ybWF0dGluZyB0aGUgc291cmNlcywgYW5kIHJlbW92aW5nCglzb21lIGJ1Z3MgaW4gdGhlIEVuY29kaW5nIGFuZCBDaGFyc2V0IGxvYWRlcnMuCglNYW55IGZvbnRzIHJlbmFtZWQgdG8gdXNlIGxvd2VyY2FzZSBvbmx5OgoKCSAgQ0ZGX0J1aWxkZXJfSW5pdCAtPiBjZmZfYnVpbGRlcl9pbml0CgkgIENGRl9CdWlsZGVyX0RvbmUgLT4gY2ZmX2J1aWxkZXJfZG9uZQoJICBDRkZfSW5pdF9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX2luaXQKCSAgQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzIC0+IGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzCgkgIENGRl9Mb2FkX0dseXBoIC0+IGNmZl9zbG90X2xvYWQKCSAgQ0ZGX0luaXRfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9pbml0CgkgIENGRl9QcmVwYXJlX0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfcHJlcGFyZQoJICBDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nIC0+IGNmZl9nZXRfc3RhbmRhcmRfZW5jb2RpbmcKCSAgQ0ZGX0FjY2Vzc19FbGVtZW50IC0+IGNmZl9pbmRleF9hY2Nlc3NfZWxlbWVudAoJICBDRkZfRm9yZ2V0X0VsZW1lbnQgLT4gY2ZmX2luZGV4X2ZvcmdldF9lbGVtZW50CgkgIENGRl9HZXRfTmFtZSAtPiBjZmZfaW5kZXhfZ2V0X25hbWUKCSAgQ0ZGX0dldF9TdHJpbmcgLT4gY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nCgkgIENGRl9HZXRfRkQgLT4gY2ZmX2ZkX3NlbGVjdF9nZXQKCSAgQ0ZGX0RvbmVfQ2hhcnNldCAtPiBjZmZfY2hhcnNldF9kb25lCgkgIENGRl9Mb2FkX0NoYXJzZXQgLT4gY2ZmX2NoYXJzZXRfbG9hZAoJICBDRkZfRG9uZV9FbmNvZGluZyAtPiBjZmZfZW5jb2RpbmdfZG9uZQoJICBDRkZfTG9hZF9FbmNvZGluZyAtPiBjZmZfZW5jb2RpbmdfbG9hZAoJICBDRkZfRG9uZV9TdWJGb250IC0+IGNmZl9zdWJmb250X2RvbmUKCSAgQ0ZGX0xvYWRfRm9udCAtPiBjZmZfZm9udF9sb2FkCgkgIENGRl9Eb25lX0ZvbnQgLT4gY2ZmX2ZvbnRfZG9uZQoJICBDRkZfU2l6ZV9HZXRfR2xvYmFsX0Z1bmNzIC0+IGNmZl9zaXplX2dldF9nbG9iYWxfZnVuY3MKCSAgQ0ZGX1NpemVfRG9uZSAtPiBjZmZfc2l6ZV9kb25lCgkgIENGRl9TaXplX0luaXQgLT4gY2ZmX3NpemVfaW5pdAoJICBDRkZfU2l6ZV9SZXNldCAtPiBjZmZfc2l6ZV9yZXNldAoJICBDRkZfR2x5cGhTbG90X0RvbmUgLT4gY2ZmX3Nsb3RfZG9uZQoJICBDRkZfR2x5cGhTbG90X0luaXQgLT4gY2ZmX3Nsb3RfaW5pdAoJICBDRkZfU3RyQ29weSAtPiBjZmZfc3RyY3B5CgkgIENGRl9GYWNlX0luaXQgLT4gY2ZmX2ZhY2VfaW5pdAoJICBDRkZfRmFjZV9Eb25lIC0+IGNmZl9mYWNlX2RvbmUKCSAgQ0ZGX0RyaXZlcl9Jbml0IC0+IGNmZl9kcml2ZXJfaW5pdAoJICBDRkZfRHJpdmVyX0RvbmUgLT4gY2ZmX2RyaXZlcl9kb25lCgkgIENGRl9QYXJzZXJfSW5pdCAtPiBjZmZfcGFyc2VyX2luaXQKCSAgQ0ZGX1BhcnNlcl9SdW4gLT4gY2ZmX3BhcnNlcl9ydW4KCgkgIGFkZF9wb2ludCAtPiBjZmZfYnVpbGRlcl9hZGRfcG9pbnQKCSAgYWRkX3BvaW50MSAtPiBjZmZfYnVpbGRlcl9hZGRfcG9pbnQxCgkgIGFkZF9jb250b3VyIC0+IGNmZl9idWlsZGVyX2FkZF9jb250b3VyCgkgIGNsb3NlX2NvbnRvdXIgLT4gY2ZmX2J1aWxkZXJfY2xvc2VfY29udG91cgoJICBjZmZfZXhwbGljaXRfaW5kZXggLT4gY2ZmX2luZGV4X2dldF9wb2ludGVycwoKMjAwMi0wNy0wOSAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBGaXhlZCBhIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgdGhlIGhpbnRlciBmcm9tIHVzaW5nIGNvcnJlY3Qgc3RhbmRhcmQgd2lkdGggYW5kIGhlaWdodAoJdmFsdWVzLCByZXN1bHRpbmcgaW4gaGludGluZyBidWdzIHdpdGggY2VydGFpbiBmb250cyAoZS5nLiBVdG9waWEpLgoKMjAwMi0wNy0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBBZGRlZCBjb2RlIHRvIHJldHVybgoJc3VjY2Vzc2Z1bGx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgYml0bWFwIGdseXBoICh0aGUKCXByZXZpb3VzIGNvZGUgc2ltcGx5IHJldHVybmVkIHdpdGggYW4gZXJyb3IpLgoKCSogZG9jcy9ERUJVRy5UWFQ6IEFkZGluZyBkZWJ1Z2dpbmcgc3VwcG9ydCBkb2N1bWVudGF0aW9uLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jIChmdF9kZWJ1Z19pbml0KSwgYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYwoJKGZ0X2RlYnVnX2luaXQpLCBidWlsZHMvYW1pZ2Evc3JjL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCk6IENoYW5nZWQKCXRoZSBzeW50YXggb2YgdGhlIEZUMl9ERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB1c2VkIHRvIGNvbnRyb2wKCWRlYnVnZ2luZyBvdXRwdXQgKGkuZS4gbG9nZ2luZyBhbmQgZXJyb3IgbWVzc2FnZXMpLiAgSXQgbXVzdCBub3cKCWxvb2sgbGlrZToKCgkgIGFueTo2IG1lbW9yeTo0IGlvOjMgICBvcgoJICBhbnk6NixtZW1vcnk6NCxpbzozICAgb3IKCSAgYW55OjY7bWVtb3J5OjQ7aW86MwoKMjAwMi0wNy0wNyAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc25hcF9zdGVtKTogQWRkaW5nIHN1cHBvcnQgZm9yCglibHVlIGZ1enouCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlc1JlYyk6IEFkZCBgYmx1ZV9mdXp6JyBmaWVsZC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBJbml0aWFsaXplIGBibHVlX2Z1enonLgoKCUFkZGluZyBzdXBwb3J0IGZvciBoaW50ZXItc3BlY2lmaWMgYml0IGZsYWdzLCBhbmQgdGhlIG5ldwoJRlRfU2V0X0hpbnRfRmxhZ3MgaGlnaC1sZXZlbCBBUEkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX1NldF9IaW50X0ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoJKEZUX0hJTlRfTk9fSU5URUdFUl9TVEVNLCBGVF9ISU5UX05PX0hTVEVNX0FMSUdOLAoJRlRfSElOVF9OT19WU1RFTV9BTElHTik6IE5ldyBtYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9GYWNlX0ludGVybmFsUmVjKTogQWRkCglgaGludF9mbGFncycgbWVtYmVyLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9IaW50X0ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9EZWNvZGVyUmVjKTogQWRkIGBoaW50X2ZsYWdzJwoJbWVtYmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmggKFQxX0hpbnRzX0FwcGx5RnVuYywKCVQyX0hpbnRzX0FwcGx5RnVuYyk6IEFkZCBwYXJhbWV0ZXIgdG8gcGFzcyBoaW50IGZsYWdzLgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MsCglUMV9EZWNvZGVyX0luaXQpOiBVc2UgZGVjb2Rlci0+aGludF9mbGFncy4KCSogc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfQnVpbGRlcik6IEFkZCBgaGludF9mbGFncycgZmllbGQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0J1aWxkZXJfSW5pdCk6IFNldCBidWlsZGVyLT5oaW50X2ZsYWdzLgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwczFfaGludHNfYXBwbHkpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZQoJaGludCBmbGFncyAodW51c2VkKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmg6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwczJfaGludHNfYXBwbHkpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZQoJaGludCBmbGFncyAodW51c2VkKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmg6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZQoJaGludCBmbGFncy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmg6IFVwZGF0ZWQuCgoyMDAyLTA3LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQgcmV0dXJuZWQKCWluY29ycmVjdCBhZHZhbmNlcyB3aGVuIHRoZSBvdXRsaW5lIHJlc29sdXRpb24gd2FzIGRpZmZlcmVudCBmcm9tCgl0aGUgbWV0cmljcyByZXNvbHV0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmM6IHMvRlRfTUVNX1NFVC9GVF9aRVJPLyB3aGVyZSBhcHByb3ByaWF0ZS4KCShhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBTbGlnaHQgaW1wcm92ZW1lbnRzIHRvIHRoZSBzZXJpZgoJZGV0ZWN0aW9uIGNvZGUuICBNb3JlIHdvcmsgaXMgbmVlZGVkIHRob3VnaC4KCjIwMDItMDctMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTbWFsbCBpbXByb3ZlbWVudHMgdG8gdGhlIGF1dG9tYXRpYyBoaW50ZXIuICBVbmV2ZW4gc3RlbS13aWR0aHMgaGF2ZQoJbm93IGRpc2FwcGVhcmVkIGFuZCBldmVyeXRoaW5nIGxvb2tzIG11Y2ggYmV0dGVyLCBldmVuIGlmIHRoZXJlIGFyZQoJc3RpbGwgaXNzdWVzIHdpdGggc2VyaWZlZCBmb250cy4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0dsb2JhbHMpOiBBZGRlZCBgc3RkcycgYXJyYXkuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoT1BUSU1fU1RFTV9TTkFQKTogTmV3ICNkZWZpbmUuCgkoYWhfc25hcF93aWR0aCk6IENvbW1lbnRlZCBvdXQuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBSZW5hbWVkIHRvLi4uCgkoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogVGhpcy4KCURvbid0IGFsbG93IHVuZXZlbiBzdGVtLXdpZHRocy4KCShhaF9hbGlnbl9saW5rZWRfZWRnZSk6IE5ldyBmdW5jdGlvbi4KCShhaF9hbGlnbl9zZXJpZmVkX2VkZ2UpOiBEb24ndCBzdHJlbmd0aGVuIHNlcmlmcy4KCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9zY2FsZV9nbG9iYWxzKTogVXBkYXRlZC4KCjIwMDItMDctMDMgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCUFkZGluZyBuZXcgYWxnb3JpdGhtIGJhc2VkIG9uIE93ZW4gVGF5bG9yJ3MgcmVjZW50IHdvcmsuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28zLmg6IE5ldyBmaWxlcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uaDogVXBkYXRlZC4KCVVzZSBwc2hhbGdvMyBieSBkZWZhdWx0LgoJKiBzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYzogSW5jbHVkZSBwc2hhbGdvMy5jLgoKCSogc3JjL3BzaGludGVyL0phbWZpbGUsIHNyYy9wc2hpbnRlci9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDItMDctMDEgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKTogRml4IGEgYnVnCgl3aGVyZSwgaWYgYSBnbHlwaCBoYXMgbW9yZSB0aGFuIGhpbnQgbWFzaywgdGhlIHNlY29uZCBtYXNrIGdldHMKCWFwcGxpZWQgdG8gcG9pbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjb3ZlcmVkIGJ5IHRoZSBmaXJzdCBtYXNrLgoKMjAwMi0wNy0wMSAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwOF9jaGFyX25leHQsIHR0X2NtYXAxMl9jaGFyX25leHQpOgoJRml4aW5nIHRoZSBjbWFwIDggYW5kIDEyIHBhcnNpbmcgcm91dGluZXMuCgoyMDAyLTA3LTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN5bnRoLmM6IEluY2x1ZGUgRlRfVFJJR09OT01FVFJZX0guCgkoRlRfT3V0bGluZV9FbWJvbGRlbik6IFJlbmFtZWQgdG8uLi4KCShGVF9HbHlwaFNsb3RfRW1ib2xkZW4pOiBUaGlzLgoJVXBkYXRlZCB0byBuZXcgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMuCgkoRlRfT3V0bGluZV9PYmxpcXVlKTogUmVuYW1lZCB0by4uLgoJKEZUX0dseXBoU2xvdF9PYmxpcXVlKTogVGhpcy4KCShmdF9ub3JtKTogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHN5bnRoLmg6IFVwZGF0ZWQuCgoyMDAyLTA2LTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0Lmg6IFVwZGF0aW5nIHRoZSBvYmplY3QKCXN1Yi1zeXN0ZW0gZGVmaW5pdGlvbnMgKHN0aWxsIGV4cGVyaW1lbnRhbCkuCgoJKiBzcmMvYmFzZS9mdGhhc2guYyAoZnRfaGFzaF9yZW1vdmUpOiBGaXhpbmcgYSBzbWFsbCByZWFsbG9jYXRpb24KCWJ1Zy4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyLCBGVF9BbmdsZV9EaWZmKTogTmV3CglmdW5jdGlvbnMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaDogVXBkYXRlZC4KCgoJQWRkaW5nIHBhdGggc3Ryb2tlciBjb21wb25lbnQgKHdvcmsgaW4gcHJvZ3Jlc3MpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZXIuaCwgc3JjL2Jhc2UvZnRzdHJva2VyLmM6IE5ldyBmaWxlcy4KCSogc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NUUk9LRVJfSCk6IE5ldyBtYWNyby4KCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0NvbXBvc2l0ZV9HbHlwaCksCglzcmMvYmFzZS9mdG91dGxuLmMgKEZUX1ZlY3Rvcl9UcmFuc2Zvcm0pOiBGaXhlZCBXZXJuZXIncyBsYXRlc3QgZml4LgoJRlRfVmVjdG9yX1RyYW5zZm9ybSB3YXNuJ3QgYnVnZ3ksIHRoZSBUcnVlVHlwZSBjb21wb3NpdGUgbG9hZGVyIHdhcy4KCjIwMDItMDYtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gMy4KCjIwMDItMDYtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4yIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDYtMjEgIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaCAoVDQyX0ZvbnQpOiBSZW1vdmVkIHNpbmNlCglpdCBpcyBhbHJlYWR5IGluIHQ0Mm9ianMuaC4KCShUNDJfRmFjZSk6IFVzZSBUMV9Gb250UmVjLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jIChGVF9HZXRfUFNfRm9udF9JbmZvKTogVXBkYXRlZC4KCShGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOiBDaGVjayBmb3IgdHlwZTQyIGRyaXZlciBuYW1lIGFsc28uCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19ILgoJKFQ0Ml9GYWNlKTogUmVtb3ZlZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGluIHQ0MnR5cGVzLmguCgoyMDAyLTA2LTIxICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3Bmcmdsb2FkLmMgKHBmcl9nbHlwaF9sb2FkX2NvbXBvdW5kKTogRml4IGxvYWRpbmcgb2YgY29tcG9zaXRlCglnbHlwaHMuCgoyMDAyLTA2LTIxICBTdmVuIE5ldW1hbm4gIDxzdmVuQGNvbnZlcmdlbmNlLmRlPgoKCSogc3JjL3ByZi9wZnJ0eXBlcy5oIChQRlJfS2VyblBhaXIpOiBOZXcgc3RydWN0dXJlLgoJKFBGUl9QaHlGb250KTogVXNlIGl0LgoJKFBGUl9LZXJuRmxhZ3MpOiBOZXcgZW51bWVyYXRpb24uCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbV9sb2FkX2tlcm5pbmdfcGFpcnMpOiBOZXcKCWZ1bmN0aW9uLgoJKHBmcl9waHlfZm9udF9leHRyYV9pdGVtcyk6IFVzZSBpdC4KCShwZnJfcGh5X2ZvbnRfZG9uZSk6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogU2V0IGtlcm5pbmcgZmxhZyBjb25kaXRpb25hbGx5LgoJKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvcGZyL3Bmcm9ianMuaDogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCjIwMDItMDYtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBQcmVwYXJpbmcgdGhlIDIuMS4yIHJlbGVhc2UuCgoyMDAyLTA2LTE5ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEU0Ml9UWVBFU19ILgoJKHQxX2ZhY2VfY2hlY2tfY2FzdCk6IFJlbW92ZWQuCgkoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IE1ha2UgaXQgd29yayB3aXRoIENJRCBhbmQgVHlwZSA0MiBkcml2ZXJzCglhbHNvLgoKMjAwMi0wNi0xOSAgU2ViYXN0aWVuIEJBUlJFICA8c2ViYXN0aWVuQGJhcnJlLm5vbS5mcj4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX3NmbnRzKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX1ZlY3Rvcl9UcmFuc2Zvcm0pOiBGaXggc2VyaW91cyB0eXBvCgkoeHkgPC0+IHl4KS4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlcGxhY2UgYHwnIHdpdGgKCWB8fCcgdG8gbWFrZSBjb2RlIGVhc2llciB0byByZWFkLgoKMjAwMi0wNi0xOCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKHQ0Ml9jaGVja19zaXplX2NoYW5nZSk6IFJlbW92ZWQuCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFVzZSBGVF9BY3RpdmF0ZV9TaXplCglpbnN0ZWFkLgoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IFJlbW92ZSBjYWxsIHRvIHQ0Ml9jaGVja19zaXplX2NoYW5nZS4KCjIwMDItMDYtMTggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcHNhdXgvdDFjbWFwLmMgKHQxX2NtYXBfY3VzdG9tX2NoYXJfaW5kZXgsCgl0MV9jbWFwX2N1c3RvbV9jaGFyX25leHQpOiBGaXggaW5kZXggY29tcHV0YXRpb24gLS0gaW5kaWNlcyBzdGFydAoJd2l0aCAwIGFuZCBub3Qgd2l0aCBjbWFwLT5maXJzdC4KCglQcm92aWRlIGRlZmF1bHQgY2hhcm1hcHMuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0ZhY2VfSW5pdCksIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KSwKCXNyYy90eXBlMS90MW9ianMgKFQxX0ZhY2VfSW5pdCksIHNyYy93aW5mb250cy93aW5mbnQuYwoJKEZOVF9GYWNlX0luaXQpOiBJbXBsZW1lbnQgaXQuCgoyMDAyLTA2LTE3ICBTdmVuIE5ldW1hbm4gIDxzdmVuQGdpbXAub3JnPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBGaXggdHlwby4KCjIwMDItMDYtMTYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCglVcGRhdGVkIFdpbjMyL1ZDKysgcHJvamVjdHMgdG8gaW5jbHVkZSB0aGUgbmV3IFBGUiBkcml2ZXIuCgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTA2LTE2ICBBbnRob255IEZvayAgPGZva0BkZWJpYW4ub3JnPgoKCUluc3RhbGwgZnJlZXR5cGUyLm00LgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCwgdW5pbnN0YWxsKTogSGFuZGxlIGl0LgoKMjAwMi0wNi0xNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglTYW1lIGZpeCBmb3IgUEZSIGRyaXZlci4KCgkqIHNyYy9wZnIvcGZyY21hcC5jIChwZnJfY21hcF9jaGFyX2luZGV4LCBwZnJfY21hcF9jaGFyX25leHQpOgoJSW5jcmVhc2UgcmV0dXJuIHZhbHVlIGJ5IDEuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogRGVjcmVhc2UgaW5kZXggYnkgMS4KCjIwMDItMDYtMTUgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJRml4IGdseXBoIGluZGljZXMgdG8gbWFrZSBpbmRleCB6ZXJvIGFsd2F5cyB0aGUgdW5kZWZpbmVkIGdseXBoLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChiZGZfY21hcF9pbml0KTogRG9uJ3QgZGVjcmVhc2UKCWNtYXAtPm51bV9lbmNvZGluZ3MuCgkoYmRmX2NtYXBfY2hhcl9pbmRleCwgYmRmX2NtYXBfY2hhcl9uZXh0LCBCREZfR2V0X0NoYXJfSW5kZXgpOgoJSW5jcmVhc2UgcmVzdWx0IGJ5IDEgZm9yIG5vcm1hbCBjYXNlcy4KCShCREZfR2x5cGhfTG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChwY2ZfY21hcF9jaGFyX2luZGV4LCBwY2ZfY21hcF9jaGFyX25leHQsCglQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBJbmNyZWFzZSByZXN1bHQgYnkgMSBmb3Igbm9ybWFsIGNhc2VzLgoJKFBDRl9HbHlwaF9Mb2FkKTogRGVjcmVhc2UgaW5kZXggYnkgMS4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9nZXRfZW5jb2RpbmdzKTogRG9uJ3QgZGVjcmVhc2UgaiBmb3IKCWFsbG9jYXRpbmcgYGVuY29kaW5nJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoLCBGVF9HZXRfR2x5cGhfTmFtZSk6IEZpeAoJYm91bmRpbmcgdGVzdHMuCgoyMDAyLTA2LTE0ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCUFkZCBuZXcgY21hcCBzdXBwb3J0IHRvIEJERiBkcml2ZXIuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9DTWFwUmVjKSBbRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJTmV3IHN0cnVjdHVyZS4KCShiZGZfY21hcF9pbml0LCBiZGZfY21hcF9kb25lLCBiZGZfY21hcF9jaGFyX2luZGV4LAoJYmRmX2NtYXBfY2hhcl9uZXh0KSBbRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBOZXcgZnVuY3Rpb25zLgoJKEJERl9HZXRfQ2hhcl9JbmRleCkgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106IFVzZSBvbmx5Cgljb25kaXRpb25hbGx5LgoJKEJERl9GYWNlX0luaXQpOiBIYW5kbGUgYEFWRVJBR0VfV0lEVEgnIGFuZCBgUE9JTlRfU0laRScga2V5d29yZHMuCglJbXBsZW1lbnQgbmV3IGNtYXAgaGFuZGxpbmcuCgkoYmRmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAyLTA2LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBNYWtlZmlsZSwgY29uZmlndXJlLCAqLyoubWssIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluLAoJZG9jcy9DSEFOR0VTLCBkb2NzL0lOU1RBTEw6IHMvVE9QL1RPUF9ESVIvLgoKMjAwMi0wNi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYzogcy9GVF9TaG9ydC9zaG9ydC8gZm9yIGNvbnNpc3RlbmN5LgoKMjAwMi0wNi0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYzogQWRkZWQgYSBtaXNzaW5nICNlbmRpZi4KCgkqIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCglSZW1vdmVkIHRoZSBidWcgaW4gVHlwZSA0MiBkcml2ZXIgdGhhdCBwcmV2ZW50ZWQgdW4taGludGVkIG91dGxpbmVzCgl0byBiZSBsb2FkZWQuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IENhbGwgRlRfRG9uZV9TaXplLgoJKFQ0Ml9TaXplX0luaXQpOiBDYWxsIEZUX0FjdGl2YXRlX1NpemUuCgkodDQyX2NoZWNrX3NpemVfY2hhbmdlKTogTmV3IGZ1bmN0aW9uLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBVc2UgaXQuCgkoZnRfZ2x5cGhzbG90X2NsZWFyKTogUmVwbGFjZSBGVF9NRU1fU0VUIHdpdGggRlRfWkVSTy4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBVc2UgdDQyX2NoZWNrX3NpemVfY2hhbmdlLgoJSW5pdGlhbGl6ZSBtb3JlIGZpZWxkcyBvZiBgZ2x5cGgnLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wNi0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjEgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wNi0wOCAgSnVsaXVzeiBDaHJvYm9jemVrICA8amNoQHBwcy5qdXNzaWV1LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2F1dG9oaW50L2FoZ2x5cGguYywKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBEb24ndAoJdXNlIGBzZXRqbXAnLCBgbG9uZ2ptcCcsIGFuZCBgam1wX2J1ZicgYnV0IGBmdF9zZXRqbXAnLCBgZnRfbG9uZ2ptcCcsCglhbmQgYGZ0X2ptcF9idWYnLgoJUmVtb3ZlZCBkaXJlY3QgcmVmZXJlbmNlcyB0byA8c3RkaW8uaD4gYW5kIDxzZXRqbXAuaD4gd2hlbgoJYXBwcm9wcmlhdGUsIHRvIGV2ZW50dWFsbHkgcmVwbGFjZSB0aGVtIHdpdGggYQoJRlRfQ09ORklHX1NUQU5EQVJEX0xJQlJBUllfSC4gIFVzZWZ1bCBmb3IgdGhlIFhGcmVlODYgRm9udCBTZXJ2ZXIKCWJhY2tlbmQgYmFzZWQgb24gRlQyLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jIChGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMi0wNi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAocGNmX2NtYXBfY2hhcl9uZXh0KTogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQKCXRoZSBmdW5jdGlvbiB0byByZXR1cm4gaW52YWxpZCB2YWx1ZXMuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaTogUmVtb3ZpbmcgYSB0eXBvIHRoYXQgcHJldmVudGVkCgl0aGUgc291cmNlJ3MgY29tcGlsYXRpb24uCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmspOiBGaXhlZCBhCglidWcgdGhhdCBjYXVzZWQgbmFzdHkgbWVtb3J5IG92ZXJ3cml0ZXMuICBUaGUgaGFzaCB0YWJsZSdzCglidWNrZXRzIGFycmF5IHdhc24ndCBjb3JyZWN0bHkgcmVzaXplZCB3aGVuIHNocmlua2VkLgoKMjAwMi0wNi0wOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZTogVXBkYXRlZC4KCjIwMDItMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9oYXNoX3VubGluaywgZnRjX25vZGVfaGFzaF9saW5rKQoJW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBGaXggcmV0dXJuZWQgZXJyb3IgY29kZS4KCUZpeCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pIChHRU5fQ0FDSEVfTE9PS1VQKTogTW92ZSBkZWNsYXJhdGlvbiBvZgoJYGZhbWlseScgYW5kIGBoYXNoJyB1cCB0byBtYWtlIGl0IGNvbXBpbGFibGUgd2l0aCBnKysuCgoJKiBzcmMvdHlwZTQyL3Q0MmVycm9yLmg6IE5ldyBmaWxlLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMsIHNyYy90eXBlNDIvdDQyb2Jqcy5jLAoJc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBVc2UgdDQyIGVycm9yIGNvZGVzLgoJKiBzcmMvdHlwZTQyL3J1bGVzLm1rOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1NUUkVBTV9ILgoKMjAwMi0wNi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYzogR0VOX0NBQ0hFX0ZBTUlMWV9DT01QQVJFLAoJR0VOX0NBQ0hFX05PREVfQ09NUEFSRSwgR0VOX0NBQ0hFX0xPT0tVUCkgW0ZUQ19DQUNIRV9VU0VfSU5MSU5FXToKCU5ldyBtYWNyb3MuCgkoZnRjX2NtYXBfY2FjaGVfbG9va3VwKSBbIUZUQ19DQUNIRV9VU0VfSU5MSU5FXTogVHlwZWRlZiB0bwoJZnRjX2NhY2hlX2xvb2t1cC4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IFVwZGF0ZWQuCgoJQWRkaW5nIHZhcmlvdXMgZXhwZXJpbWVudGFsIG9wdGltaXphdGlvbnMgdG8gdGhlIGNhY2hlIG1hbmFnZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmggKEZUQ19DQUNIRV9VU0VfSU5MSU5FLAoJRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElORyk6IE5ldyBvcHRpb25zLgoJKEZUQ19DYWNoZVJlYykgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBOZXcgZWxlbWVudHMgYHAnLAoJYG1hc2snLCBhbmQgYHNsYWNrJy4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChGVENfSEFTSF9NQVhfTE9BRCwgRlRDX0hBU0hfTUlOX0xPQUQsCglGVENfSEFTSF9TVUJfTE9BRCkgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkcsCglGVENfSEFTSF9JTklUSUFMX1NJWkVdOiBOZXcgbWFjcm9zLgoJKGZ0Y19ub2RlX21ydV9saW5rLCBmdGNfbm9kZV9tcnVfdXApOiBPcHRpbWl6ZWQuCgkoZnRjX25vZGVfaGFzaF91bmxpbmssIGZ0Y19ub2RlX2hhc2hfbGluaykKCVtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogTmV3IHZhcmlhbnRzLgoJKEZUQ19QUklNRVNfTUlOLCBGVENfUFJJTUVTX01BWCwgZnRjX3ByaW1lcywgZnRjX3ByaW1lX2Nsb3Nlc3QsCglGVENfQ0FDSEVfUkVTSVpFX1RFU1QsIGZ0Y19jYWNoZV9yZXNpemUpCglbIUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBEZWZpbmUgaXQgY29uZGl0aW9uYWxseS4KCShmdGNfY2FjaGVfaW5pdCwgZnRjX2NhY2hlX2NsZWFyKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106CglVcGRhdGVkLgoJKGZ0Y19jYWNoZV9sb29rdXApIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogSW1wbGVtZW50IGl0LgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmk6IE5ldyBmaWxlLgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKEdFTl9DQUNIRV9GQU1JTFlfQ09NUEFSRSwKCUdFTl9DQUNIRV9OT0RFX0NPTVBBUkUsIEdFTl9DQUNIRV9MT09LVVApIFtGVENfQ0FDSEVfVVNFX0lOTElORV06CglOZXcgbWFjcm9zLgoJKGZ0Y19zYml0X2NhY2hlX2xvb2t1cCkgWyFGVENfQ0FDSEVfVVNFX0lOTElORV06IFR5cGVkZWYgdG8KCWZ0Y19jYWNoZV9sb29rdXAuCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBSZW1vdmluZyBkdXBsaWNhdGUgZnVuY3Rpb24uCgoyMDAyLTA2LTA3ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogQ2hhbmdlZCBkZWZpbml0aW9uCglmcm9tIEZUX0VYUE9SVF9ERUYgdG8gRlRfQkFTRV9ERUYuCgoyMDAyLTA2LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgdGhlIGJ1ZyB0aGF0IHByZXZlbnRlZCB0aGUgY29ycmVjdCBkaXNwbGF5IG9mIGZvbnRzIHdpdGgKCSJmdHZpZXciLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBTcGxpdCBpbnRvLi4uCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuaCwgc3JjL3R5cGU0Mi90NDJwYXJzZS5jLAoJc3JjL3R5cGU0Mi90NDJwYXJzZS5oLCBzcmMvdHlwZTQyL3Q0Mm9ianMuaCwgc3JjL3R5cGU0Mi90NDJvYmpzLmMsCglzcmMvdHlwZTQyL3R5cGU0Mi5jOiBOZXcgZmlsZXMuCgoJKHQ0Ml9nZXRfZ2x5cGhfbmFtZSwgdDQyX2dldF9wc19uYW1lLCB0NDJfZ2V0X25hbWVfaW5kZXgpOiBVc2UKCWBmYWNlLT50eXBlMScuCgoJKEdldF9JbnRlcmZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0dldF9JbnRlcmZhY2UpOiBUaGlzLgoJVXBkYXRlZC4KCShUNDJfT3Blbl9GYWNlLCBUNDJfRmFjZV9Eb25lKTogVXBkYXRlZC4KCShUNDJfRmFjZV9Jbml0KTogQWRkIG5ldyBjbWFwIHN1cHBvcnQuCglVcGRhdGVkLgoJKFQ0Ml9Ecml2ZXJfSW5pdCwgVDQyX0RyaXZlcl9Eb25lLCBUNDJfU2l6ZV9Jbml0LCBUNDJfU2l6ZV9Eb25lLAoJVDQyX0dseXBoU2xvdF9Jbml0LCBUNDJfR2x5cGhTbG90X0RvbmUpOiBVcGRhdGVkLgoJKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9DTWFwX0NoYXJJbmRleCwgVDQyX0NNYXBfQ2hhck5leHQpOiBUaGlzLgoJVXBkYXRlZC4KCShUNDJfQ2hhcl9TaXplLCBUNDJfUGl4ZWxfU2l6ZSk6IFJlbmFtZWQgdG8uLi4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVGhpcy4KCShUNDJfTG9hZF9HbHlwaCk6IFJlbmFtZWQgdG8uLi4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBUaGlzLgoKCSh0NDJfaW5pdF9sb2FkZXIsIHQ0Ml9kb25lX2xvYWRlcik6IFJlbmFtZWQgdG8uLi4KCSh0NDJfbG9hZGVyX2luaXQsIHQ0Ml9sb2FkZXJfZG9uZSk6IFRoaXMuCgkoVDQyX05ld19QYXJzZXIsIFQ0Ml9GaW5hbGl6ZV9QYXJzZXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlcl9pbml0LCB0NDJfcGFyc2VyX2RvbmUpOiBUaGlzLgoJKHBhcnNlX2RpY3QpOiBSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlX2RpY3QpOiBUaGlzLgoJKGlzX2FscGhhLCBpc19zcGFjZSwgaGV4dmFsKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9pc19hbHBoYSwgdDQyX2lzX3NwYWNlLCB0NDJfaGV4dmFsKTogVGhpcy4KCShwYXJzZV9mb250X25hbWUsIHBhcnNlX2ZvbnRfYmJveCwgcGFyc2VfZm9udF9tYXRyaXgsCglwYXJzZV9lbmNvZGluZywgcGFyc2Vfc2ZudHMsIHBhcnNlX2NoYXJzdHJpbmdzLCBwYXJzZV9kaWN0KToKCVJlbmFtZWQgdG8uLi4KCSh0NDJfcGFyc2VfZm9udF9uYW1lLCB0NDJfcGFyc2VfZm9udF9iYm94LCB0NDJfcGFyc2VfZm9udF9tYXRyaXgsCgl0NDJfcGFyc2VfZW5jb2RpbmcsIHQ0Ml9wYXJzZV9zZm50cywgdDQyX3BhcnNlX2NoYXJzdHJpbmdzLAoJdDQyX3BhcnNlX2RpY3QpOiBUaGlzLgoJVXBkYXRlZC4KCgkodDQyX2tleXdvcmRzKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvSmFtZmlsZSwgc3JjL3R5cGU0Mi9kZXNjcmlwLm1tczogVXBkYXRlZC4KCjIwMDItMDYtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGQgOGJwcCBzdXBwb3J0IHRvIEJERiBkcml2ZXIuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX3N0YXJ0KTogSGFuZGxlIDhicHAuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpOiBEaXR0by4KCSogc3JjL2JkZi9SRUFETUU6IFVwZGF0ZWQuCgoyMDAyLTA2LTAyICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9waHlfZm9udF9kb25lKTogRnJlZSBgYmx1ZV92YWx1ZXMnIGFycmF5LgoKMjAwMi0wNS0yOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcmVhZHN0cmVhbSk6IEFsbG9jYXRlIGBidWYnIGR5bmFtaWNhbGx5LgoJKF9iZGZfcGFyc2VfZ2x5cGhzKTogVXNlIGNvcnJlY3Qgc2l6ZSBmb3IgYWxsb2NhdGluZwoJYGZvbnQtPnVuZW5jb2RlZCcuCgkoYmRmX2xvYWRfZm9udCk6IEZyZWUgYXJyYXkgY29uZGl0aW9uYWxseS4KCVJldHVybiBwcm9wZXIgZXJyb3IgY29kZSBpbiBjYXNlIG9mIGZhaWx1cmUuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IE1ha2UgaXQgbW9yZSByb2J1c3QgYWdhaW5zdAoJdW51c3VhbCBmb250cy4KCjIwMDItMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvZGVzY3JpcC5tbXMsIHNyYy90eXBlNDIvZGVzY3JpcC5tbXM6IE5ldyBmaWxlcy4KCSogZGVzY3JpcC5tbXMgKGFsbCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX2dseXBocyk6IEZpeCB0eXBvIHdoaWNoIHByZXZlbnRlZAoJY29tcGlsYXRpb24uCgkqIHNyYy9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNS0yOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZSwgYnVpbGRzL2FtaWdhL3NtYWtlZmlsZSwKCWFtaWdhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFVwZGF0ZWQgdG8gaW5jbHVkZQoJc3VwcG9ydCBmb3IgQkRGIGFuZCBUeXBlNDIgZHJpdmVycy4KCgkqIGRvY3MvbW9kdWxlcy50eHQ6IFVwZGF0ZWQuCgoyMDA1LTA1LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGZpbGUgZm9yIG5leHQgcmVsZWFzZSAoMi4xLjEpLgoKCSogc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0eGY4Ni5oLCBzcmMvYmFzZS9mdHhmODYuYzogTmV3IGZpbGVzLgoJVGhleSBwcm92aWRlIGEgbmV3IEFQSSAoRlRfR2V0X1gxMV9Gb250X0Zvcm1hdCkgdG8gcmV0cmlldmUgYW4KCVgxMS1jb21wYXRpYmxlIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmb250IGZvcm1hdCBvZiBhIGdpdmVuIGZhY2UuCglUaGlzIHdhcyBwdXQgaW4gYSBuZXcgb3B0aW9uYWwgYmFzZSBzb3VyY2UgZmlsZSwgY29ycmVzcG9uZGluZyB0byBhCgluZXcgcHVibGljIGhlYWRlciAobmFtZWQgRlRfWEZSRUU4Nl9IIHNpbmNlIHRoaXMgZnVuY3Rpb24gc2hvdWxkCglvbmx5IGJlIHVzZWQgd2l0aGluIHRoZSBYRnJlZTg2IGZvbnQgc2VydmVyIElNTykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9YRlJFRTg2X0gpOiBOZXcgbWFjcm8gKG5vdAoJZG9jdW1lbnRlZCB5ZXQpLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jOiBOZXcgZmlsZSwgcHJvdm9kaW5nIHR3byBuZXcgQVBJIGZ1bmN0aW9ucwoJKEZUX0dldF9QU19Gb250X0luZm8gYW5kIEZUX0hhc19QU19HbHlwaF9OYW1lcykuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaDogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rLCBzcmMvYmFzZS9kZXNjcmlwLm1tczoKCVVwZGF0aW5nIGJ1aWxkIGNvbnRyb2wgZmlsZXMgZm9yIHRoZSBuZXcgZmlsZXMgImZ0eGY4Ni5jIiBhbmQKCSJmdHR5cGUxLmMiIGluIHNyYy9iYXNlLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzKTogRml4ZWQgYSBidWcgdGhhdAoJcHJldmVudGVkIGZhbWlseSBibHVlIHpvbmVzIHN1YnN0aXR1dGlvbiBmcm9tIGhhcGVubmluZyBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmggRlRfR2V0X0JERl9DaGFyc2V0X0lEKTogQWRkaW5nCglkb2N1bWVudGF0aW9uIGNvbW1lbnQuCgoyMDAyLTA1LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWUpOiBEb24ndCB1c2UgRlRfU1RSRUFNX1JFQURfQVQKCWJ1dCBGVF9TVFJFQU1fUkVBRC4KCURlY2xhcmUgYHN0cmVhbScgdmFyaWFibGUuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX2dseXBocyk6IFJlcGxhY2UgZmxvYXRpbmcgcG9pbnQgbWF0aAoJd2l0aCBjYWxscyB0byBgRlRfTXVsRGl2Jy4KCjIwMDItMDUtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhpbmcgdGhlIFNGTlQgbmFtZSB0YWJsZSBsb2FkZXIgdG8gc3VwcG9ydCB2YXJpb3VzIGJ1Z2d5IGZvbnRzLgoJSXQgbm93IGlnbm9yZXMgZW1wdHkgbmFtZSBlbnRyaWVzLCBlbnRyaWVzIHdpdGggaW52YWxpZCBwb2ludGVyCglPZmZzZXRzIGFuZCBjZXJ0YWluIGZvbnRzIGNvbnRhaW5pbmcgdGFibGVzIHdpdGggYnJva2VuCgkic3RvcmFnZU9mZnNldCIgZmllbGRzLgoKCU5hbWUgc3RyaW5ncyBhcmUgbm93IGxvYWRlZCBvbiBkZW1hbmQsIHdoaWNoIHJlZHVjZXMgdGhlIG1lbW9yeQoJcmVxdWlyZW1lbnRzIGZvciBhIGdpdmVuIEZUX0ZhY2UgdHJlbWVuZG91c2x5IChmb3IgZXhhbXBsZSwgdGhlIG5hbWUKCXRhYmxlIG9mIEFyaWFsLnR0ZiBpcyBhYm91dCAxMEtiIGFuZCBjb250YWlucyA3MCBuYW1lcykuCgoJVGhpcyBpcyBhIHRlbXBvcmFyeSBmaXguICBUaGUgd2hvbGUgbmFtZSB0YWJsZSBsb2FkZXIgYW5kIGludGVyZmFjZQoJd2lsbCBiZSByZXdyaXR0ZW4gaW4gYSBtdWNoIG1vcmUgY2xlYW5seSB3YXkgc2hvcnRseSwgb25jZSBDU0VIIGhhdmUKCWJlZW4gaW50cm9kdWNlZCBpbiB0aGUgc291cmNlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9OYW1lRW50cnlSZWMpOiBDaGFuZ2UKCXR5cGUgb2YgYHN0cmluZ09mZnNldCcgdG8gRlRfVUxvbmcuCgkoVFRfTmFtZVRhYmxlUmVjKTogQ2hhbmdlIHR5cGUgb2YgYG51bU5hbWVSZWNvcmRzJyBhbmQKCWBzdG9yYWdlT2Zmc2V0JyB0byBGVF9VSW50LgoJUmVwbGFjZSBgc3RvcmFnZScgd2l0aCBgc3RyZWFtJy4KCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogTG9hZCBuYW1lIG9uIGRlbWFuZC4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRGl0dG8uCglNYWtlIGNvZGUgbW9yZSByb2J1c3QuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChUVF9OYW1lRW50cnlfQ29udmVydEZ1bmMpOiBOZXcgdHlwZWRlZi4KCSh0dF9mYWNlX2dldF9uYW1lKTogVXNlIGl0LgoJTWFrZSBjb2RlIG1vcmUgcm9idXN0LgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IFVzZSBgc3RhdGljJyBmb3IgYXJyYXlzLgoJSGFuZGxlIGludmFsaWQgYHN0b3JhZ2VPZmZzZXQnIGRhdGEgYmV0dGVyLgoJU2V0IGxlbmd0aCBmaWVsZHMgdG8gemVybyBmb3IgaW52YWxpZCBvciBpZ25vcmVkIGRhdGEuCglSZW1vdmUgY29kZSB3aXRoaW4gRlRfREVCVUdfTEVWRUxfVFJBQ0UuCgkoVFRfRnJlZV9OYW1lcyk6IFVwZGF0ZWQuCgoyMDAyLTA1LTI0ICBUaW0gTW9vbmV5ICA8ZW5jaGFudGVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGJ1aWxkcy91bml4L2Z0LW11bm1hcC5tNDogTmV3IGZpbGUsIGV4dHJhY3RlZCBGVF9NVU5NQVBfREVDTCBhbmQKCUZUX01VTk1BUF9QQVJBTSBmcm9tIGFjbG9jYWwubTQgaW50byBoZXJlLCBzbyBhY2xvY2FsLm00IGNhbiBiZQoJcmVidWlsdCBmcm9tIHNvdXJjZXMuICBTZXQgbWFjcm8gc2VyaWFsIHRvIDEsIGFuZCB1c2UgdGhpcmQgYXJndW1lbnQKCXRvIEFDX0RFRklORSBmb3Igb3VyIHR3byBjdXN0b20gc3ltYm9scywgc28gZnRjb25maWcuaW4gY291bGQgb25lIGRheQoJYmUgcmVidWlsdCB3aXRoIGF1dG9oZWFkZXIgKG5vdCByZWNvbW1lbmRlZCBub3csIGZ0Y29uZmlnLmluIGlzIGEKCWN1c3RvbSBzb3VyY2UgZmlsZSkKCjIwMDItMDUtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0JFWklFUl9IKTogUmVtb3ZlZC4KCShGVF9CREZfSCk6IE5ldyBtYWNybyBmb3IgYWNjZXNzaW5nIGBmdGJkZi5oJy4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAoaGV4dmFsKTogRml4IHR5cG8uCgoyMDAyLTA1LTIxICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMVJhZGl4KTogTmV3IGZ1bmN0aW9uLgoJKHQxX3RvaW50KTogVXNlIGl0IHRvIGhhbmRsZSBudW1iZXJzIGluIHJhZGl4IGZvcm1hdC4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogQWRkIGR1bW15Cglmb3IgdW5kb2N1bWVudGVkLCBvYnNvbGV0ZSBvcGNvZGUgMTUuCgoyMDAyLTA1LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmcsIGFuZCBjaGFuZ2VkIGFsbCB0YWJsZXMKCXRvIHRoZSAic3RhdGljIGNvbnN0IiBzdG9yYWdlIHNwZWNpZmllciAoaW5zdGVhZCBvZiBzaW1wbHkKCWBzdGF0aWMnKS4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAoaGV4dmFsKTogVXNlIG1vcmUgZWZmaWNpZW50IGNvZGUuCglSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2JkZi9iZGZkcml2ci5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRiZGYuaCwgc3JjL2Jhc2UvZnRiZGYuYywKCXNyYy9iYXNlL2Rlc2NyaXAubW1zLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tawoJKEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IE5ldyBBUEkgdG8gcmV0cmlldmUgQkRGLXNwZWNpZmljIHN0cmluZ3MKCWZyb20gYSBmYWNlLiAgVGhpcyBpcyBtdWNoIGNsZWFuZXIgdGhhbiBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHR5cGVzCgkiQkRGX1B1YmxpY19GYWNlIiBkZWZpbmVkIGluIEZUX0lOVEVSTkFMX0JERl9UWVBFU19ILgoKMjAwMi0wNS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9SRUFETUU6IE1lbnRpb24gTWljcm9zb2Z0J3MgU0JJVCB0b29sLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2lkL2NpZHJpdmVyLmMsIHNyYy9wY2YvcGNmZHJpdmVyLmMsCglzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmMsCglzcmMvd2luZm9udHMvd2luZm50LmMsIHNyYy90eXBlNDIvdDQyZHJpdnIuYywgc3JjL2JkZi9iZGZkcml2ci5jCglbRlRfQ09ORklHX09QVElPTl9EWU5BTUlDX0RSSVZFUlNdOiBDb21wbGV0ZWx5IHJlbW92ZWQuICBJdCBoYXMKCWJlZW4gbmV2ZXIgdXNlZC4KCjIwMDItMDUtMjEgIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogcy9UNDJfRU5DT0RJTkdfVFlQRV8vVDFfRU5DT0RJTkdfVFlQRV8vLgoJKHBhcnNlX2ZvbnRfbWF0cml4KTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNvZGUuCgkocGFyc2Vfc2ZudHMpOiBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzLgoJKHQ0Ml9kcml2ZXJfY2xhc3MpIFtUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXTogVXNlCglmdF9tb2R1bGVfZHJpdmVyX2hhc19oaW50ZXIgY29uZGl0aW9uYWxseS4KCU1vdmVkIHNvbWUgdHlwZSA0MiBzcGVjaWZpYyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9UNDJfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoyMDAyLTA1LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y3NiaXRzLmggKEZUQ19TQml0KTogQWRkZWQgYSBuZXcgZmllbGQKCWBudW1fZ3JheXMnIGZvciBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBncmF5IGxldmVscy4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IEluaXRpYWxpemUgaXQuCgoyMDAyLTA1LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkaW5nIGEgZHJpdmVyIGZvciBCREYgZm9udHMgd3JpdHRlbiBieSBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKCTxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPi4gIEhlYXZpbHkgbW9kaWZpZWQgYnkgbWUgdG8KCWJldHRlciBhZGFwdCBpdCB0byBGcmVlVHlwZSwgcmVtb3ZpbmcgdW5uZWVkZWQgc3R1ZmYuICBBZGRpdGlvbmFsbHksCglpdCBub3cgc3VwcG9ydHMgTWFyayBMZWlzaGVyJ3MgQkRGIGV4dGVuc2lvbiBmb3IgYW50aS1hbGlhc2VkCgliaXRtYXAgZ2x5cGhzIHdpdGggMiBhbmQgNCBicHAuCgoJKiBzcmMvYmRmLyo6IE5ldyBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYmRmdHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGRlZCBCREYgZHJpdmVyIGNvbXBvbmVudHMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaDogQWRkZWQgZXJyb3IgY29kZXMgZm9yIEJERiBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9KYW1maWxlOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX0JERl9UWVBFU19IKToKCU5ldyBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3NwcmludGYpOiBOZXcgYWxpYXMgZm9yCglzcHJpbnRmLgoKMjAwMi0wNS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IEFkZGVkIFR5cGUgNDIgZHJpdmVyCgljb21wb25lbnQuCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogVXNlIGl0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9QQ0ZfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoyMDAyLTA1LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTQyL0phbWZpbGU6IE5ldyBmaWxlLgoKMjAwMi0wNS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZGluZyBhIGRyaXZlciBmb3IgVHlwZTQyIGZvbnRzIHdyaXR0ZW4gYnkgUm9iZXJ0byBBbGFtZWRhCgk8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogc3JjL3R5cGU0Mi8qOiBOZXcgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvSmFtZmlsZTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfeGRpZ2l0LCBmdF9tZW1jbXAsCglmdF9hdG9pKTogTmV3IGFsaWFzZXMgZm9yIHhkaWdpdCwgbWVtY21wLCBhbmQgYXRvaSwgcmVzcGVjdGl2ZWx5LgoKMjAwMi0wNS0xMiAgT3dlbiBUYXlsb3IgIDxvdGF5bG9yQHJlZGhhdC5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9va1VwX1RhYmxlKTogUHJvdGVjdCBhZ2FpbnN0IHRhYmxlcwoJd2l0aCBhIHplcm8gbGVuZ3RoIHZhbHVlLgoKMjAwMi0wNS0xMiAgTWljaGFlbCBQZmVpZmZlciAgPG1pY2hhZWwucGZlaWZmZXJAdXRhbmV0LmF0PgoKCSogYnVpbGRzL2Jlb3MvYmVvcy5tazogSW5jbHVkZSBgbGluay1zdGQubWsnLgoKMjAwMi0wNS0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5oIChUMV9Mb2FkZXIpOiBSZW5hbWVkIHRvLi4uCgkoVDFfTG9hZGVyUmVjKTogVGhpcy4KCShUMV9Mb2FkZXIpOiBOb3cgcG9pbnRlciB0byBUMV9Mb2FkZXJSZWMuCgkqIHNyYy90eXBlMS90MWxvYWQuYzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oLCBzcmMvdHlwZTEvdDFsb2FkLmMsCglzcmMvdHlwZTEvdDFvYmpzLmM6CglzL1QxX0VOQ09ESU5HX1RZUEVfRVhQT1JUL1QxX0VOQ09ESU5HX1RZUEVfRVhQRVJULy4KCjIwMDItMDUtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRTogQWRkIGEgbm90ZSByZWdhcmRpbmcgbGlidHRmIHZzLiBsaWJmcmVldHlwZS4KCjIwMDItMDUtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGcmVlVHlwZSAyIGNhbiBub3cgYmUgYnVpbHQgaW4gYW4gZXh0ZXJuYWwgZGlyZWN0b3J5IHdpdGggdGhlCgljb25maWd1cmUgc2NyaXB0IGFsc28uCgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKElOQ0xVREVTKTogQWRkIGBPQkpfRElSJy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tayAoaGF2ZV9tayk6IE5ldyB2YXJpYWJsZSB0byB0ZXN0IGZvcgoJZXh0ZXJuYWwgYnVpbGQuCgkodW5peC1kZWYubWspOiBEZWZpbmVkIGFjY29yZGluZyB0byB2YWx1ZSBvZiBgaGF2ZV9taycuCgkqIGJ1aWxkcy91bml4L3VuaXgubWsgKGhhdmVfbWspOiBOZXcgdmFyaWFibGUgdG8gdGVzdCBmb3IKCWV4dGVybmFsIGJ1aWxkLgoJU2VsZWN0IGluY2x1ZGUgcGF0aHMgZm9yIHVuaXgtZGVmLm1rIGFuZCB1bml4LWNjLm1rIGFjY29yZGluZwoJdG8gdmFsdWUgb2YgYGhhdmVfbWsnLgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoT0JKX0JVSUxEKTogTmV3IHZhcmlhYmxlLgoJKERJU1RDTEVBTik6IFVzZSBpdC4KCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoTElCVE9PTCk6IERlZmluZSBkZWZhdWx0IHZhbHVlIG9ubHkKCWlmIG5vdCB5ZXQgZGVmaW5lZC4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCk6IFVzZSBgT0JKX0JVSUxEJyBmb3IgaW5zdGFsbGluZwoJZnJlZXR5cGUtY29uZmlnLgoKCSogY29uZmlndXJlOiBEb24ndCBkZXBlbmQgb24gYmFzaCBmZWF0dXJlcy4KCShmdDJfZGlyLCBhYnNfY3Vycl9kaXIsIGFic19mdDJfZGlyKTogTmV3IHZhcmlhYmxlcyAoY29kZQoJcGFydGlhbGx5IHRha2VuIGZyb20gQXV0b2NvbmYpLgoJQnVpbGQgYSBkdW1teSBNYWtlZmlsZSBpZiBub3QgYnVpbGRpbmcgaW4gc291cmNlIHRyZWUuCgoJKiBkb2NzL0lOU1RBTEw6IERvY3VtZW50IGl0LgoKMjAwMi0wNS0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCk6IEZpbmFsbHkgZml4aW5nIHRoZSBsYXN0CglidWcgdGhhdCBwcmV2ZW50ZWQgRnJlZVR5cGUgMi54IGFuZCBGcmVlVHlwZSAxLnggdG8gcHJvZHVjZQoJYml0LWJ5LWJpdCBpZGVudGljYWwgbW9ub2Nocm9tZSBnbHlwaCBiaXRtYXBzIHdpdGggbmF0aXZlIFRydWVUeXBlCgloaW50aW5nLiAgVGhlIGN1bHByaXQgd2FzIGEgc2luZ2xlLWJpdCBmbGFnIHRoYXQgd2Fzbid0IHNldAoJY29ycmVjdGx5IGJ5IHRoZSBUcnVlVHlwZSBnbHlwaCBsb2FkZXIuCgoJKiBzcmMvb3RsYXlvdXQvb3RsYXlvdXQuaCwgc3JjL290bGF5b3V0L290bGJhc2UuYywKCXNyYy9vdGxheW91dC9vdGxiYXNlLmgsIHNyYy9vdGxheW91dC9vdGxjb25mLmgsCglzcmMvb3RsYXlvdXQvb3RsZ2RlZi5jLCBzcmMvb3RsYXlvdXQvb3RsZ2RlZi5oLAoJc3JjL290bGF5b3V0L290bGdwb3MuYywgc3JjL290bGF5b3V0L290bGdwb3MuaCwKCXNyYy9vdGxheW91dC9vdGxnc3ViLmMsIHNyYy9vdGxheW91dC9vdGxnc3ViLmgsCglzcmMvb3RsYXlvdXQvb3RsanN0Zi5jLCBzcmMvb3RsYXlvdXQvb3RsanN0Zi5oLAoJc3JjL290bGF5b3V0L290bHRhYmxlLmMsIHNyYy9vdGxheW91dC9vdGx0YWJsZS5oLAoJc3JjL290bGF5b3V0L290bHRhZ3MuaDogTmV3IE9wZW5UeXBlIExheW91dCBzb3VyY2UgZmlsZXMuICBUaGUKCW1vZHVsZSBpcyBzdGlsbCBpbmNvbXBsZXRlLgoKMjAwMi0wNS0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX2luZGV4KTogRml4IHNlcmlvdXMgdHlwbwoJKDB4RkZGVSAtPiAweEZGRkZVKS4KCjIwMDItMDUtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvSU5TVEFMTDogRml4IFVSTCBvZiBtYWtlcHAuCgoyMDAyLTA1LTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZmFjZV9nZXRfbmFtZSk6IEZpeGluZyBhIGJ1ZyB0aGF0IGNhdXNlZAoJRnJlZVR5cGUgdG8gY3Jhc2ggd2hlbiBjZXJ0YWluIGJyb2tlbiBmb250cyAoZS5nLiAiaHlhNmdiLnR0ZiIpCgl3ZXJlIG9wZW5lZC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKTogQXBwbGllZCBhIHNtYWxsIHdvcmstYXJvdW5kIHRvCgltYW5hZ2UgZm9udHMgY29udGFpbmluZyBhIGJyb2tlbiBuYW1lIHRhYmxlIChlLmcuICJoeWE2Z2IudHRmIikuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlKTogRml4ZWQgb3Zlci1yZXN0cmljdGl2ZQoJdmFsaWRhdGlvbiB0ZXN0LiAgVGhlIGNoYXJtYXAgdmFsaWRhdG9yIG5vdyBhY2NlcHRzIG92ZXJsYXBwaW5nCglyYW5nZXMgaW4gZm9ybWF0IDQgY2hhcm1hcHMuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfaW5kZXgpOiBTd2l0Y2hlZCB0byBhIGJpbmFyeQoJc2VhcmNoIGFsZ29yaXRobS4gIENlcnRhaW4gZm9udHMgY29udGFpbiBtb3JlIHRoYW4gMTcwIGRpc3RpbmN0CglzZWdtZW50cyEKCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmg6IEFkZGluZyBhbiBhbGlhcyBmb3IgdGhlIGBleGl0JwoJZnVuY3Rpb24uICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmVhciBmdXR1cmUgdG8gcGFuaWMgaW4gY2FzZSBvZgoJdW5leHBlY3RlZCBleGNlcHRpb24gKHdoaWNoIHNob3VsZG4ndCBoYXBwZW4gaW4gdGhlb3J5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRoYXNoLmgsIHNyYy9iYXNlL2Z0aGFzaC5jOiBOZXcgZmlsZXMuCglUaGlzIGlzIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gb2YgZHluYW1pYyBoYXNoIHRhYmxlcyB1c2luZyBhIGxpbmVhcgoJYWxnb3JpdGhtICh0byBnZXQgcmlkIG9mIGBzdGFsbHMnIGR1cmluZyByZXNpemVzKS4gIEluIHRoZSBmdXR1cmUKCXRoaXMgd2lsbCBiZSB1c2VkIGluIGF0IGxlYXN0IHRocmVlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5OiB0aGUgY2FjaGUKCXN1Yi1zeXN0ZW0sIHRoZSBvYmplY3Qgc3ViLXN5c3RlbSwgYW5kIHRoZSBtZW1vcnkgZGVidWdnZXIuCgoJKiBzcmMvYmFzZS9KYW1maWxlOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9IQVNIX0gsCglGVF9JTlRFUk5BTF9PQkpFQ1RfSCk6IE5ldyBtYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y29yZS5oOiBOZXcgZmlsZSB0byBncm91cCBhbGwgbmV3CglkZWZpbml0aW9ucyByZWxhdGVkIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuICBJdAoJaXMgdmVyeSBsaWtlbHkgdGhhdCB0aGlzIGZpbGUgd2lsbCBkaXNhcHBlYXIgb3IgYmUgcmVuYW1lZCBpbiB0aGUKCWZ1dHVyZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oOgoJQWRkaW5nIGNvbW1lbnRzIHRvIGJldHRlciBleHBsYWluIHRoZSBvYmplY3Qgc3ViLXN5c3RlbSBhcyB3ZWxsIGFzCgl0aGUgbmV3IG1lbW9yeSBtYW5hZ2VyIGludGVyZmFjZS4KCjIwMDItMDQtMzAgIFdlbmxpbiBJbnN0aXR1dGUgKFRvbSBCaXNob3ApICA8d2VubGluQHdlbmxpbi5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwMmNfc3RyKTogUmVtb3ZlZC4KCShmaWxlX3NwZWNfZnJvbV9wYXRoKSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogQWRkZWQgc3VwcG9ydCBmb3IKCU9TIFguCgkoaXNfZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBEZWZpbmUgb25seSBmb3IgT1MgWC4KCUhhbmRsZSBgbmFtZUxlbicgPD0gNiBhbHNvLgoJKHBhcnNlX2ZvbmQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBuYW1lX3RhYmxlJy4KCVVzZSBmdW5jdGlvbmFsaXR5IG9mIG9sZCBwMmNfc3RyIGRpcmVjdGx5LgoJQWRkIHNhZmV0eSBjaGVja3MuCgkocmVhZF9sd2ZuKTogSW5pdGlhbGl6ZSBgc2l6ZV9wJy4KCUNoZWNrIGZvciBzaXplX3AgPT0gTlVMTC4KCShuZXdfbWVtb3J5X3N0cmVhbSwgb3Blbl9mYWNlX2Zyb21fYnVmZmVyKTogVXBkYXRlZCB0byBGcmVlVHlwZSAyLjEuCgkoRlRfTmV3X0ZhY2VfRnJvbV9MV0ZOKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbWVtb3J5Jy4KCVJlbW92ZSBzb21lIGRlYWQgY29kZS4KCShGVF9OZXdfRmFjZV9Gcm9tX1NGTlQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBzdHJlYW0nLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBEZWZpbmUgb25seSBmb3IKCU9TIFguCgkoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgZXJyb3InLgoJKFJlc291cmNlRm9ya1NpemUpOiBOZXcgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2UpOiBVc2UgaXQuCglIYW5kbGUgZW1wdHkgcmVzb3VyY2UgZm9ya3MuCglDb25kaXRpb25hbGl6ZSBzb21lIGNvZGUgZm9yIE9TIFguCglBZGQgY29kZSB0byBjYWxsIG5vcm1hbCBsb2FkZXIgYXMgYSBmYWxsYmFjay4KCjIwMDItMDQtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglgaW50ZXJmYWNlJyBpcyByZXNlcnZlZCBvbiB0aGUgTWFjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLAoJc3JjL2Jhc2UvZnRvdXRsbi5jOiBzL2ludGVyZmFjZS9mdW5jX2ludGVyZmFjZS8uCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChGVF9PdXRsaW5lX0dldF9CQm94KToKCXMvaW50ZXJmYWNlL2Jib3hfaW50ZXJmYWNlLy4KCSogc3JjL2NmZi9jZmZkcml2ci5jOiBzL2ludGVyZmFjZS9tb2R1bGVfaW50ZXJmYWNlLy4KCSogc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oOgoJcy9pbnRlcmZhY2UvcHNuYW1lc19pbnRlcmZhY2UvLgoJKiBzcmMvY2lkL2NpZHJpdmVyLmM6IHMvaW50ZXJmYWNlL2NpZF9pbnRlcmZhY2UvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBzL2ludGVyZmFjZS9tb2R1bGVfaW50ZXJmYWNlLy4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IHMvaW50ZXJmYWNlL2Z1bmNfaW50ZXJmYWNlLy4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6IHMvaW50ZXJmYWNlL3R0X2ludGVyZmFjZS8uCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiBzL2ludGVyZmFjZS90MV9pbnRlcmZhY2UvLgoKCVNvbWUgbW9yZSB2YXJpYWJsZSByZW5hbWVzIHRvIGF2b2lkIHRyb3VibGVzIG9uIHRoZSBNYWMuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6CglzL1Vua25vd258QXNjZW5kaW5nfERlc2NlbmRpbmd8RmxhdC9cMV9TdGF0ZS8uCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBzL1RTY2FuL1RDb29yZC8uCgoJT3RoZXIgY2hhbmdlcyBmb3IgdGhlIE1hYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IERlZmluZSBGVF9NQUNJTlRPU0ggZm9yCglNYWMgcGxhdGZvcm1zLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogcy9tYWNpbnRvc2gvRlRfTUFDSU5UT1NILy4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IE1ha2UgYHBpdGNoJyBhbHdheXMKCWFuIGV2ZW4gbnVtYmVyLgoKMjAwMi0wNC0yOSAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogZGVzY3JpcC5tbXMgKGFsbCk6IEFkZCBwZnIgZHJpdmVyLgoKMjAwMi0wNC0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJlcnJvci5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOiBBZGQgUEZSIGVycm9yIGNvZGVzLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2V4dHJhX2l0ZW1fbG9hZF9zdGVtX3NuYXBzKTogRml4IGRlYnVnIG1lc3NhZ2UuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBwZnJlcnJvci5oLgoJVXNlIFBDRiBlcnJvciBjb2Rlcy4KCShwZnJfZXh0cmFfaXRlbV9sb2FkX2JpdG1hcF9pbmZvLCBwZnJfZ2x5cGhfbG9hZF9zaW1wbGUsCglwZnJfZ2x5cGhfbG9hZF9jb21wb3VuZCk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKiBzcmMvcGZyL3Bmcm9ianMuYzogSW5jbHVkZSBwZnJlcnJvci5oLgoJVXNlIFBDRiBlcnJvciBjb2Rlcy4KCShwZnJfZmFjZV9pbml0KTogUmV0dXJuIFBGUl9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdC4KCSogc3JjL3Bmci9ydWxlcy5tayAoUEZSX0RSVl9IKTogSW5jbHVkZSBwZnJlcnJvci5oLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0ZhY2VfSW5pdCkgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106Cglgcm9vdCcgLT4gYGZhY2UtPnJvb3QnLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKSBbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCVJlbW92ZWQuCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogRGVjbGFyZSBUVF9CdWlsZF9DTWFwcyBvbmx5IGZvcgoJRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMuCgoyMDAyLTA0LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2NhY2hlX2xvb2t1cCksCglzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCksCglzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYyksCglzcmMvY2FjaGUvZnRjc2JpdHMuYyAoRlRDX1NCaXRfQ2FjaGVfTG9va3VwKTogVXNlIEZUQ19FcnJfKi4KCXNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKTogVXNlIEZUQ19FcnJfKi4KCShGVENfSW1hZ2VDYWNoZV9Mb29rdXApOiBGaXggaGFuZGxpbmcgb2YgaW52YWxpZCBhcmd1bWVudHMuCgoyMDAyLTA0LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFNldCBgdmVyc2lvbl9pbmZvJyB0byA5OjE6MyAoRlQyCgl2ZXJzaW9uIDIuMC45IGhhcyA5OjA6MykuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgKHVzaW5nIGF1dG9jb25mIDIuNTMpLgoKMjAwMi0wNC0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtc19mYXJzZSk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKHBmcl9waHlfZm9udF9sb2FkKTogcy9zaXplL1NpemUvIGZvciBsb2NhbCB2YXJpYWJsZSB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBGaXggZGVidWcgbWVzc2FnZS4KCShwZnJfc2xvdF9sb2FkKTogUmVtb3ZlIHJlZHVuZGFudCBsb2NhbCB2YXJpYWJsZS4KCjIwMDItMDQtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgYSBQRlIgZm9udCBkcml2ZXIgdG8gdGhlIEZyZWVUeXBlIHNvdXJjZXMuICBOb3RlIHRoYXQgaXQKCWRvZXNuJ3Qgc3VwcG9ydCBlbWJlZGRlZCBiaXRtYXBzIG9yIGtlcm5pbmcgdGFibGVzIHlldC4KCglzcmMvcGZyLyo6IE5ldyBmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaCwgc3JjL0phbWVmaWxlOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuaCAoVDFfTG9hZF9HbHlwaCksIHNyYy90eXBlMS90MWdsb2FkLmMKCShUMV9Mb2FkX0dseXBoKTogRml4ZWQgaW5jb3JyZWN0IHBhcmFtZXRlciBzaWduLW5lc3MgaW4gY2FsbGJhY2sKCWZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIChGVF9NRU1fWkVSTywgRlRfWkVSTyk6IE5ldwoJbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9ORVhUX09GRjMsIEZUX05FWFRfVU9GRjMsCglGVF9ORVhUX09GRjNfTEUsIEZUX05FWFRfVU9GRjNfTEUpOiBOZXcgbWFjcm9zIHRvIHBhcnNlIGluLW1lbW9yeQoJMjQtYml0IGludGVnZXJzLgoKMjAwMi0wNC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmMsCglidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jOiBWZXJzaW9uIDIuMS4wIGNvdWxkbid0IGJlIGxpbmtlZAoJYWdhaW5zdCBhcHBsaWNhdGlvbnMgaW4gV2luMzIgYW5kIEFtaWdhIGJ1aWxkcyBkdWUgdG8gY2hhbmdlcyB0bwoJInNyYy9iYXNlL2Z0ZGVidWcuYyIgdGhhdCB3ZXJlIG5vdCBwcm9wZXJseSBwcm9wYWdhdGVkIHRvCgkiYnVpbGRzL3dpbjMyIiBhbmQgImJ1aWxkcy9hbWlnYSIuICBUaGlzIGhhcyBiZWVuIGZpeGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGV4Y2VwdC5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzbWVtLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzaW8uaCwgc3JjL2Jhc2UvZnRzeXNtZW0uYywgc3JjL2Jhc2UvZnRzeXNpby5jOgoJTmV3IGV4cGVyaW1lbnRhbCBmaWxlcy4KCjIwMDItMDQtMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4wIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDQtMTcgIE1pY2hhZWwgSmFuc3NvbiAgPG1qYW5AZW0yLXNvbHV0aW9ucy5jb20+CgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Db21wdXRlX01heF9BZHZhbmNlKTogRml4ZWQgYSBzbWFsbCBidWcKCXRoYXQgcHJldmVudGVkIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuCgoyMDAyLTA0LTE2ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2ZyZWFkIChwY2ZfZ2V0X2FjY2VsbCk6IEZpeCBwYXJzaW5nIG9mIGFjY2VsZXJhdG9yCgl0YWJsZXMuCgoyMDAyLTA0LTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0ZUTC50eHQ6IEZvcm1hdHRpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBSZWR1Y2UgdGhlIHNpemUgb2YgdGhlCglyZW5kZXIgcG9vbCBmcm9tIDMya0J5dGUgdG8gMTZrQnl0ZS4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2Zfc2Vla190b190YWJsZV90eXBlKTogUmVtb3ZlIGNvbXBpbGVyCgl3YXJuaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfTUFYX0VYVEVOU0lPTlMpOiBSZW1vdmVkLgoKCSogZG9jcy9DSEFOR0VTOiBQcmVwYXJpbmcgMi4xLjAgcmVsZWFzZS4KCjIwMDItMDQtMTMgIFdlcm5lciBMRU1CRVJHICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogcy9yYW5kL1JhbmQvIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNC0xMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLlVOWDogVXBkYXRlZCB0aGUgVW5peC1zcGVjaWZpYyBxdWljay1jb21waWxhdGlvbiBndWlkZSB0bwoJd2FybiBhYm91dCB0aGUgR05VIE1ha2UgcmVxdWlyZW1lbnQgYXQgY29tcGlsZSB0aW1lLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCglzcmMvYXV0b2hpbnQvYWhvcHRpbS5jLAoKCXNyYy9iYXNlL2Z0ZGJnbWVtLmMsIHNyYy9iYXNlL2Z0ZGVidWcuYywgc3JjL2Jhc2UvZnRtYWMuYywKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdHN5c3RlbS5jLAoKCXNyYy9jYWNoZS9mdGNpbWFnZS5jLCBzcmMvY2FjaGUvZnRjc2JpdHMuYywKCglzcmMvY2ZmL2NmZmRyaXZlci5jLCBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZvYmpzLmMsCgoJc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9jaWQvY2lkcGFyc2UuYywgc3JjL2NpZC9jaWRyaXZlci5jLAoKCXNyYy9wY2YvcGNmZHJpdmVyLmMsIHNyYy9wY2YvcGNmcmVhZC5jLAoKCXNyYy9wc2F1eC90MWNtYXAuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmMsCgoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLAoKCXNyYy9wc25hbWVzL3BzbW9kdWxlLmMsCgoJc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLAoKCXNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3R0bG9hZC5jLAoKCXNyYy9zbW9vdGgvZnRncmF5cy5jLAoKCXNyYy90eXBlMS90MWFmbS5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZ2xvYWQuYywKCXNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLCBzcmMvdHlwZTEvdDFwYXJzZS5jLAoKCWJ1aWxkcy91bml4L2Z0Y29uZmlnLmluLCBidWlsZHMvdm1zL2Z0Y29uZmlnLmgsCgoJYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYzoKCglBZGRlZCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZSAiZnRzdGRsaWIuaCIgdXNlZCB0byBkZWZpbmUKCWFsaWFzZXMgZm9yIGFsbCBJU08gQyBsaWJyYXJ5IGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBlbmdpbmUKCShlLmcuIHN0cmxlbiwgcXNvcnQsIHNldGptcCwgZXRjLikuCgoJVGhpcyBlYXNlcyB0aGUgcG9ydGluZyBvZiBGcmVlVHlwZSAyIHRvIGVudmlyb25tZW50cyBsaWtlCglYRnJlZTg2IG1vZHVsZXMvZXh0ZW5zaW9ucy4KCglBbHNvIHJlbW92ZWQgbWFueSAjaW5jbHVkZSA8c3RyaW5nLmg+LCAjaW5jbHVkZSA8c3RkbGliLmg+LCBldGMuCglmcm9tIHRoZSBlbmdpbmUncyBzb3VyY2VzIHdoZXJlIHRoZXkgYXJlIG5vdCBuZWVkZWQuCgoJKiBzcmMvc2ZudC90dHBvc3QuYzogVXNlIG1hY3JvIG5hbWUgZm9yIHBzbmFtZXMuaC4KCjIwMDItMDQtMTIgIFZpbmNlbnQgQ2Fyb24gIDx2LmNhcm9uQHplcm9kZXV4Lm5ldD4KCgkqIGNvbmZpZ3VyZSwgYnVpbGRzL2RldGVjdC5tazogVXBkYXRlZCB0aGUgYnVpbGQgc3lzdGVtIHRvIHByaW50CglhIHdhcm5pbmcgbWVzc2FnZSBpbiBjYXNlIEdOVSBNYWtlIGlzbid0IHVzZWQgdG8gYnVpbGQgdGhlIGxpYnJhcnkuCgoyMDAyLTA0LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUywgSmFtZmlsZS5pbjogVXBkYXRlcyBmb3IgdGhlIDIuMS4wIHJlbGVhc2UuCgoJKiBkb2NzL0ZUTC50eHQ6IFVwZGF0ZWQgbGljZW5zZSB0ZXh0IHRvIHByb3ZpZGUgYSBwcmVmZXJyZWQKCWRpc2NsYWltZXIgYW5kIGFkanVzdCBjb3B5cmlnaHQgZGF0ZXMvZXh0ZW50cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaDogUmVtb3Zpbmcgb2Jzb2xldGUgKGFuZAoJY29uZnVzaW5nKSBjb21tZW50LgoKCSogSmFtZmlsZS5pbjogTmV3IGZpbGUuCgoyMDAyLTA0LTExICBNYXhpbSBTaGVtYW5hcmV2ICA8bWNzZWVtYWdnQHlhaG9vLmNvbT4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X2hsaW5lKTogTWlub3Igb3B0aW1pemF0aW9uLgoKMjAwMi0wNC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZpeGVzIGZyb20gdGhlIHN0YWJsZSBicmFuY2g6CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyk6CglSZW1vdmVkLgoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTXTogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCwgc3JjL2Jhc2UvZnRjYWxjLmMKCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfTGVuZ3RoKTogQ2hhbmdlIGFsZ29yaXRobSB0byBtYXRjaAoJb3V0cHV0IG9mIEZyZWVUeXBlIDEuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19zY2FsZV93aWR0aHMpOiBGaXhlZCBhIHNtYWxsCglidWcgdGhhdCBjcmVhdGVkIHVuLWV2ZW4gc3RlbSB3aWR0aHMgd2hlbiBoaW50aW5nIFBvc3RzY3JpcHQgZm9udHMuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxcGFyc2UuYzogMTZiaXQgZml4ZXMuCgoyMDAyLTA0LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiAxNmJpdCBmaXhlcy4KCShUVF9Mb2FkX1NpbXBsZV9HbHlwaCk6IEltcHJvdmUgZGVidWcgbWVzc2FnZXMuCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiAxNmJpdCBmaXhlcy4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBEaXR0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzbmFtZXMuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgsCglzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL3BzYXV4L3Bzb2Jqcy5oLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuW2NoXSwKCXNyYy9zZm50L3R0cG9zdC5oOiBzL2luZGV4L2lkeC8uCgoyMDAyLTAzLTMxICBZYW8gWmhhbmcgIDx5YW96QHZpZGFyLm5pYWFhLm5paC5nb3Y+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX1NpemVfSW5pdCk6IEZpeCB0eXBvLgoKMjAwMi0wMy0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290bGF5b3V0L290bGNvbW1uLmMsIHNyYy9vdGxheW91dC9vdGxjb21tbi5oOiBzL2luZGV4L2lkeC8uCgkqIHNyYy9wc2F1eC90MWNtYXAuYzogRGl0dG8uCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChUVF9Hb3RvX1RhYmxlX0Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKFRUX0xvYWRlcl9Hb3RvVGFibGVGdW5jKTogVGhpcy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBGaXggZGVidWcKCW1lc3NhZ2VzLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc25hbWVzX2ludGVyZmFjZSkKCVshRlRfQ09ORklHX09QVElPTl9BRE9CRV9HTFlQSF9MSVNUXTogRml4IHR5cG8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3RhYmxlKTogMTZiaXQgZml4LgoJKiBzcmMvc2ZudC90dGNtYXAuYzogMTZiaXQgZml4ZXMgKDB4RkZGRiAtPiAweEZGRkZVKS4KCSogc3JjL3NmbnQvdHRjbWFwMC5jOiAxNmJpdCBmaXhlcy4KCShUVF9CdWlsZF9DTWFwcyk6IFNpbXBsaWZ5IGRlYnVnIG1lc3NhZ2VzLgoJKHR0X2NtYXAxMl9jaGFyX25leHQpOiBGaXggb2Zmc2V0LgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcywgVFRfTG9hZF9DTWFwKTogRml4IGRlYnVnCgltZXNzYWdlcy4KCShUVF9Mb2FkX09TMik6IDE2Yml0IGZpeC4KCjIwMDItMDMtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oOiBBZGRpbmcgY29tbWVudHMgdG8gc29tZSBvZgoJdGhlIFRUX0ZhY2VSZWMgZmllbGRzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcyk6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX3t1dGYxNix1Y3M0LG90aGVyfToKCU5ldyBmdW5jdGlvbnMuCgkodHRfZmFjZV9nZXRfbmFtZSk6IFVzZSB0aGVtIHRvIHByb3Blcmx5IGV4dHJhY3QgYW4gYXNjaWkgZm9udCBuYW1lLgoKMjAwMi0wMy0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oICh0MV9ibGVuZF9tYXgpOiBGaXggdHlwby4KCSogc3JjL2Jhc2UvZnRzdHJlYW0uYzogU2ltcGxpZnkgRlRfRVJST1IgY2FsbHMuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9nbHlwaF9uYW1lKTogRml4IGRlYnVnIG1lc3NhZ2UuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0RyaXZlcl9Jbml0LCBDRkZfRHJpdmVyX0RvbmUpCglbVFRfQ09ORklHX09QVElPTl9FWFRFTkRfRU5HSU5FXTogUmVtb3ZlZC4KCSogc3JjL2NmZi9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpCglbVFRfQ09ORklHX09QVElPTl9FWFRFTkRfRU5HSU5FXTogRGl0dG8uCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfSW5pdF9Ecml2ZXIsIFRUX0RvbmVfRHJpdmVyKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IERpdHRvLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90cnVldHlwZS90dG9ianMuYywKCXNyYy90cnVldHlwZS90dG9ianMuaDogUmVuYW1pbmcgZHJpdmVyIGZ1bmN0aW9ucyB0byB0aGUKCUZUXzxTdWJqZWN0Pl88QWN0aW9uPiBzY2hlbWU6CgoJICBUVF9Jbml0X0RyaXZlciA9PiBUVF9Ecml2ZXJfSW5pdAoJICBUVF9Eb25lX0RyaXZlciA9PiBUVF9Ecml2ZXJfRG9uZQoJICBUVF9Jbml0X0ZhY2UgICA9PiBUVF9GYWNlX0luaXQKCSAgVFRfRG9uZV9GYWNlICAgPT4gVFRfRmFjZV9Eb25lCgkgIFRUX0luaXRfU2l6ZSAgID0+IFRUX1NpemVfSW5pdAoJICBUVF9Eb25lX1NpemUgICA9PiBUVF9TaXplX0RvbmUKCSAgVFRfUmVzZXRfU2l6ZSAgPT4gVFRfU2l6ZV9SZXNldAoKMjAwMi0wMy0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oOiBSZW5hbWUgTE9DQUxfREVGIGFuZCBMT0NBTF9GVU5DIHRvCglGVF9MT0NBTCBhbmQgRlRfTE9DQUxfREVGLCByZXNwZWN0aXZlbHksIGFzIHdpdGggb3RoZXIgZnRjb25maWcuaAoJZmlsZXMuCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBBZGQgYXJndW1lbnQgdG8gRlRfTE9DQUwgYW5kCglGVF9MT0NBTF9ERUYuCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBzL0ZUX0Fzc2VydC9GVF9BU1NFUlQvLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFRlbXBvcmFyaWx5IGRlYWN0aXZhdGUgY3JlYXRpb24gb2YKCS4uLy4uL0phbWZpbGUuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCjIwMDItMDMtMjggIEtVU0FOTyBUYWtheXVraSAgPEFFNVQtS1NOQGFzYWhpLW5ldC5vci5qcD4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeCBzZXJpb3VzIHR5cG9zLgoKMjAwMi0wMy0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU0F1eF9TZXJ2aWNlUmVjKTogRml4Cgljb21waWxlciB3YXJuaW5ncy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZhY2VSZWMpOiBVc2UgYGNvbnN0JyBmb3IKCXNvbWUgbWVtYmVycy4KCSogc3JjL2Jhc2UvZnRhcGkuYyAoRlRfTmV3X01lbW9yeV9TdHJlYW0pOiBGaXggdHlwb3MuCgkqIHNyYy9wc2F1eC90MWNtYXAuYyAodDFfY21hcF9zdGRfaW5pdCwgdDFfY21hcF91bmljb2RlX2luaXQpOiBBZGQKCWNhc3QuCgkodDFfY21hcF97c3RhbmRhcmQsZXhwZXJ0LGN1c3RvbSx1bmljb2RlfV9jbGFzc19yZWMpOiBVc2UKCWBGVF9DQUxMQkFDS19UQUJMRV9ERUYnLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmg6IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBVc2UgYGZ0X2VuY29kaW5nX25vbmUnCglpbnN0ZWFkIG9mIHplcm8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogVXNlIGNhc3RzLgoKMjAwMi0wMy0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYzoKCUZpeGVkIGEgc21hbGwgYnVnIGluIHRoZSBGVF9DTWFwcyBzdXBwb3J0IGNvZGUuCgoyMDAyLTAzLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoTm9ybSk6IFJlcGxhY2VkIHdpdGguLi4KCShUVF9WZWNMZW4pOiBUaGlzLgoJKFRUX011bEZpeDE0LCBUVF9Eb3RGaXgxNCk6IE5ldyBmdW5jdGlvbnMuCgkoUHJvamVjdCwgRHVhbF9Qcm9qZWN0LCBGcmVlX1Byb2plY3QsIENvbXB1dGVfUG9pbnRfRGlzcGxhY2VtZW50LAoJSW5zX1NIUElYLCBJbnNfTUlBUCwgSW5zX01JUlApOiBVc2UgdGhlbS4KCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQgYWxsIGNvZGUuCgoyMDAyLTAzLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6CglWYXJpb3VzIGZpeGVzIHRvIG1ha2UgdGhlIEZUX0NNYXBzIHN1cHBvcnQgd29yayBjb3JyZWN0bHkgKG1vcmUKCXRlc3RzIGFyZSBzdGlsbCBuZWVkZWQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL3NmbnQvSmFtZmlsZSwKCXNyYy9zZm50L3J1bGVzLm1rLCBzcmMvc2ZudC9zZm50LmMsIHNyYy9zZm50L3Nmb2Jqcy5jLAoJc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3NmbnQvdHRjbWFwMC5oOiBVcGRhdGVkCgl0aGUgU0ZOVCBjaGFybWFwIHN1cHBvcnQgdG8gdXNlIEZUX0NNYXBzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycmRlZi5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oOiBJbmNsdWRlIGl0LiAgSXQgY29udGFpbnMgYWxsIGVycm9yCgljb2Rlcy4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfRVJST1JfREVGSU5JVElPTlNfSCk6IE5ldwoJbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIGFuZCBhIGxvdCBvZiBvdGhlciBmaWxlczoKCUNoYW5nZWQgdGhlIG5hbWVzIG9mIG1lbW9yeSBtYWNyb3MuICBFeGFtcGxlczoKCgkgIE1FTV9TZXQgICA9PiBGVF9NRU1fU0VUCgkgIE1FTV9Db3B5ICA9PiBGVF9NRU1fQ09QWQoJICBNRU1fTW92ZSAgPT4gRlRfTUVNX01PVkUKCgkgIEFMTE9DICAgICA9PiBGVF9BTExPQwoJICBGUkVFICAgICAgPT4gRlRfRlJFRQoJICBSRUFMTE9DICAgPSA+RlRfUkVBTExPQwoKCUZUX05FVyB3YXMgaW50cm9kdWNlZCB0byBhbGxvY2F0ZSBhIG5ldyBvYmplY3QgZnJvbSBhIF90eXBlZF8KCXBvaW50ZXIuCgoJTm90ZSB0aGF0IEFMTE9DX0FSUkFZIGFuZCBSRUFMTE9DX0FSUkFZIGhhdmUgYmVlbiByZXBsYWNlZCBieQoJRlRfTkVXX0FSUkFZIGFuZCBGVF9SRU5FV19BUlJBWSB3aGljaCB0YWtlIF90eXBlZF8gcG9pbnRlcgoJYXJndW1lbnRzLgoKCVRoaXMgcmVzdWx0cyBpbiBfbG90c18gb2Ygc291cmNlcyBiZWluZyBjaGFuZ2VkLCBidXQgbWFrZXMgdGhlIGNvZGUKCW1vcmUgZ2VuZXJpYyBhbmQgbGVzcyBlcnJvci1wcm9uZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCwgc3JjL2Jhc2UvZnRzdHJlYW0uYywKCXNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvcGNmL3BjZnJlYWQuYywgc3JjL3NmbnQvdHRjbWFwLmMsCglzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dHBvc3QuYywKCXNyYy9zZm50L3R0c2JpdC5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9ucyBvZiBzdHJlYW0gbWFjcm9zLgoJRXhhbXBsZXM6CgoJICBORVhUX0J5dGUgICAgID0+IEZUX05FWFRfQllURQoJICBORVhUX1Nob3J0ICAgID0+IEZUX05FWFRfU0hPUlQKCSAgTkVYVF9VU2hvcnRMRSA9PiBGVF9ORVhUX1VTSE9SVF9MRQoJICBSRUFEX1Nob3J0ICAgID0+IEZUX1JFQURfU0hPUlQKCSAgR0VUX0xvbmcgICAgICA9PiBGVF9HRVRfTE9ORwoJICBldGMuCgoJQWxzbyBpbnRyb2R1Y2VkIHRoZSBGVF9QRUVLX1hYWFggZnVuY3Rpb25zLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9CdWlsZF9Vbmljb2RlX0NoYXJtYXApOiBSZW1vdmVkIGNvbW1lbnRlZAoJb3V0IGZ1bmN0aW9uLgoJKGZpbmRfZW5jb2RpbmcpOiBSZW1vdmVkLgoJKENGRl9GYWNlX0luaXQpOiBSZW1vdmUgY2hhcm1hcCBzdXBwb3J0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMsCglUVF9DT05GSUdfQ01BUF9GT1JNQVR7MCwyLDQsNiw4LDEwLDEyfSk6IE5ldyBtYWNyb3MgdG8gZmluZS10dW5lCglzdXBwb3J0IG9mIGNtYXBzLgoKMjAwMi0wMy0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9wY2YvcGNmZHJpdmVyLmMsIHNyYy9wY2YvcGNmcmVhZC5jOiBVcGRhdGVkCgl0byBuZXcgRlRfQ01hcCBkZWZpbml0aW9ucy4KCgkqIHNyYy9wc2F1eC90MWNtYXAuaCwgc3JjL3BzYXV4L3QxY21hcC5jLCBzcmMvdHlwZTEvdDFjbWFwLmgsCglzcmMvdHlwZTEvdDFjbWFwLmM6IFVwZGF0aW5nIGFuZCBtb3ZpbmcgdGhlIFR5cGUgMSBGVF9DTWFwIHN1cHBvcnQKCWZyb20gInNyYy90eXBlMSIgdG8gInNyYy9wc2F1eCIgc2luY2UgaXQgaXMgZ29pbmcgdG8gYmUgc2hhcmVkIGJ5Cgl0aGUgVHlwZSAxIGFuZCBDSUQgZm9udCBkcml2ZXJzLgoKCSogc3JjL3BzYXV4L0phbWZpbGUsIHNyYy9wc2F1eC9wc2F1eC5jLCBzcmMvcHNhdXgvcHNhdXhtb2QuYywKCXNyYy9wc2F1eC9ydWxlcy5taywgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiBBZGRlZCBzdXBwb3J0Cglmb3IgVHlwZSAxIEZUX0NNYXBzLgoKMjAwMi0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbG9hZHIuYyAoRlRfR2x5cGhMb2FkZXJfQ2hlY2tTdWJHbHlwaHMpOiBGaXhlZCBhCgltZW1vcnkgYWxsb2NhdGlvbiBidWcgdGhhdCB3YXMgZHVlIHRvIHVuLWNhcmVmdWwgcmVuYW1pbmcgb2YgdGhlCglGVF9TdWJHbHlwaCB0eXBlLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX2Rlc3Ryb3kpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0CgljYXVzZWQgdGhlIGxpYnJhcnkgdG8gY3Jhc2ggd2l0aCBFbGVjdHJpYyBGZW5jZSB3aGVuIG1lbW9yeQoJZGVidWdnaW5nIGlzIHVzZWQuCgoJKiBSZW5hbWluZyBzdHJlYW0gbWFjcm9zLiAgRXhhbXBsZXM6CgoJICBGSUxFX1NraXAgICAgPT4gRlRfU1RSRUFNX1NLSVAKCSAgRklMRV9SZWFkICAgID0+IEZUX1NUUkVBTV9SRUFECgkgIEFDQ0VTU19GcmFtZSA9PiBGVF9GUkFNRV9FTlRFUgoJICBGT1JHRVRfRnJhbWUgPT4gRlRfRlJBTUVfRVhJVAoJICBldGMuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCBtZW1vcnkgbGVhay4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IENoYW5naW5nIHRoZSBkZWZpbml0aW9uIG9mCglGVF9DTWFwX0NoYXJOZXh0RnVuYyBzbGlnaHRseS4KCgkqIHNyYy9jZmYvKi5jOiBVcGRhdGluZyBDRkYgdHlwZSBkZWZpbml0aW9ucy4KCjIwMDItMDMtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaCwgc3JjL2F1dG9oaW50L2FobW9kdWxlLmMsCglzcmMvYmFzZS9mdGFwaS5jLCBzcmMvYmFzZS9mdG9ianMuYzogVXBkYXRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbnMKCWZvciB0aGUgYXV0by1oaW50ZXIgbW9kdWxlLgoKCSAgRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2UgID0+IEZUX0F1dG9IaW50ZXJfU2VydmljZVJlYwoJICBGVF9BdXRvSGludGVyX0ludGVyZmFjZSogPT4gRlRfQXV0b0hpbnRlcl9TZXJ2aWNlCgkgIGV0Yy4KCgkgIEZUX0F1dG9IaW50ZXJfR2V0X0dsb2JhbF9GdW5jICA9PiBGVF9BdXRvSGludGVyX0dsb2JhbEdldEZ1bmMKCSAgRlRfQXV0b0hpbnRlcl9Eb25lX0dsb2JhbF9GdW5jID0+IEZUX0F1dG9IaW50ZXJfR2xvYmFsRG9uZUZ1bmMKCSAgZXRjLgoKCSogYWhsb2FkZXIuaCBbX1NUQU5EQUxPTkVfXTogUmVtb3ZlZCBhbGwgY29uZGl0aW9uYWwgY29kZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCwgc3JjL2NmZi8qLmM6IFVwZGF0aW5nIHRoZQoJdHlwZSBkZWZpbml0aW9ucyBvZiB0aGUgQ0ZGIGZvbnQgZHJpdmVyLgoKCSAgQ0ZGX0ZvbnQgID0+IENGRl9Gb250UmVjCgkgIENGRl9Gb250KiA9PiBDRkZfRm9udAoJICBldGMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmgsIHNyYy93aW5mb250cy8qLmM6IFVwZGF0aW5nCgl0eXBlIGRlZmluaXRpb25zIG9mIHRoZSBXaW5kb3dzIEZOVCBmb250IGRyaXZlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0YXBpLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZmRyaXZyLmgsCglzcmMvY2lkL2NpZHJpdmVyLmMsIHNyYy9jaWQvY2lkcml2ZXIuaCwgc3JjL3BjZi9wY2Zkcml2ZXIuYywKCXNyYy9wY2YvcGNmZHJpdmVyLmgsIHNyYy90cnVldHlwZS90dGRyaXZlci5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmgsIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuaCwKCXNyYy93aW5mb250cy93aW5mbnQuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5oOiBVcGRhdGluZyB0eXBlCglkZWZpbml0aW9ucyBmb3IgZm9udCBkcml2ZXJzLgoKCSAgRlREcml2ZXJfaW5pdEZhY2UgICAgICA9PiBGVF9GYWNlX0luaXRGdW5jCgkgIEZURHJpdmVyX2luaXRHbHlwaFNsb3QgPT4gRlRfU2xvdF9Jbml0RnVuYwoJICBldGMuCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0ZhY2VfSW5pdCk6IFJlbW92ZSBkZWFkIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdG9ianMuYzogVXBkYXRlZCBhCglmZXcgZmFjZSBtZXRob2QgZGVmaW5pdGlvbnM6CgoJICBGVF9QU05hbWVfUmVxdWVzdGVyICAgICA9PiBGVF9GYWNlX0dldFBvc3RzY3JpcHROYW1lRnVuYwoJICBGVF9HbHlwaF9OYW1lX1JlcXVlc3RlciA9PiBGVF9GYWNlX0dldEdseXBoTmFtZUZ1bmMKCSAgRlRfTmFtZV9JbmRleF9SZXF1ZXN0ZXIgPT4gRlRfRmFjZV9HZXRHbHlwaE5hbWVJbmRleEZ1bmMKCgkqIHNyYy9iYXNlL2Z0YXBpLmM6IE5ldyBmaWxlLiAgSXQgY29udGFpbnMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKCWZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwgc3JjL2NpZC9jaWRsb2FkLmMsCglzcmMvY2lkdG9rZW4uaCwgc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvcHNvYmpzLmgsCglzcmMvcHNhdXgvdDFkZWNvZGUuYywgc3RjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDF0b2tlbnMuaDoKCVVwZGF0ZWQgY29tbW9uIFBvc3RTY3JpcHQgdHlwZSBkZWZpbml0aW9ucy4KCVJlbmFtZWQgYWxsIGVudW1lcmF0aW9uIHZhbHVlcyBsaWtlIHRvIHVwcGVyY2FzZSB2YXJpYW50czoKCgkgIHQxX3Rva2VuX2FueSAgICAgID0+IFQxX1RPS0VOX1RZUEVfQU5ZCgkgIHQxX2ZpZWxkX2NpZF9pbmZvID0+IFQxX0ZJRUxEX0xPQ0FUSU9OX0NJRF9JTkZPCgkgIGV0Yy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNnbG9iYWxzLmg6IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oOgoJVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgsIHNyYy9iYXNlL2Z0bmFtZXMuYywKCXNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL3NmbnQvKi5jLCBzcmMvdHJ1ZXR5cGUvKi5jOiBVcGRhdGVkCglTRk5UL1RydWVUeXBlIHR5cGUgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaDoKCVVwZGF0aW5nIHR5cGUgZGVmaW50aWlvbnMgZm9yIHRoZSBnbHlwaCBsb2FkZXIuCgoyMDAyLTAzLTEzICBBbnRvaW5lIExlY2EgIDxhbnRvaW5lQG9yaW9sbmV0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IENoYW5nZWQgdGhlIGF1dG9tYXRpYwoJZGV0ZWN0aW9uIG9mIE1pY3Jvc29mdCBDIGNvbXBpbGVycyB0byBhdXRvbWF0aWNhbGx5IHN1cHBvcnQgNjQtYml0CglpbnRlZ2VycyBvbmx5IHNpbmNlIHJldmlzaW9uIDkuMDAgKGkuZS4gPj0gVmlzdWFsIEMrKyAyLjApLgoKMjAwMi0wMy0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnR1dGlsLmMgKEZUX1JlYWxsb2MpOiBVc2UgTUVNX1NldCBpbnN0ZWFkIG9mIG1lbXNldC4KCjIwMDItMDMtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9yZXNpemUsIGZ0X21lbV90YWJsZV9uZXcsCglmdF9tZW1fdGFibGVfc2V0LCBmdF9tZW1fZGVidWdfYWxsb2MsIGZ0X21lbV9kZWJ1Z19mcmVlLAoJZnRfbWVtX2RlYnVnX3JlYWxsb2MsIGZ0X21lbV9kZWJ1Z19kb25lLCBGVF9BbGxvY19EZWJ1ZywKCUZUX1JlYWxsb2NfRGVidWcsIEZUX0ZyZWVfRGVidWcpOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxGaXgpOiBEaXR0by4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBEaXR0by4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9TaXplX0dldF9HbG9iYWxfRnVuY3MsIENGRl9TaXplX0luaXQsCglDRkZfR2x5cGhTbG90X0luaXQpOiBEaXR0by4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9HbHlwaFNsb3RfSW5pdCwKCUNJRF9TaXplX0dldF9HbG9iYWxzX0Z1bmNzKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywgVDFfR2x5cGhTbG90X0luaXQpOgoJRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2htb2QuYyAocHNoaW50ZXJfaW50ZXJmYWNlKTogVXNlIGBzdGF0aWMgY29uc3QnLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfTmV4dF9DaGFyKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9CdWlsZGVyX0Z1bmNzKTogUmVuYW1lZAoJdG8uLi4KCShUMV9CdWlsZGVyX0Z1bmNzUmVjKTogVGhpcy4KCShUMV9CdWlsZGVyX0Z1bmNzKTogTmV3IHR5cGVkZWYuCgkoUFNBdXhfSW50ZXJmYWNlKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYyAodDFfYnVpbGRlcl9mdW5jcyksIHNyYy9wc2F1eC9wc29ianMuaAoJKHQxX2J1aWxkZXJfZnVuY3MpOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVfQWxpZ24pOiBSZXBsYWNlZCB3aXRoIC4uLgoJKFBTSF9CTFVFX0FMSUdOX3tOT05FLFRPUCxCT1R9KTogTmV3IGRlZmluZXMuCgkoUFNIX0FsaWdubWVudFJlYyk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEdFVF9DaGFyLCBHRVRfQnl0ZSk6IEZpeAoJdHlwby4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oIChGVF9TdWJHbHlwaCk6IERpdHRvLgoJKiBzcmMvYmFzZS9mdHN0cmVhbSAoRlRfR2V0X0NoYXIpOiBSZW5hbWUgdG8uLi4KCShGVF9TdHJlYW1fR2V0X0NoYXIpOiBUaGlzLgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogcy9pbmRleC9pZHgvIC0tIGBpbmRleCcgaXMKCWEgYnVpbHQtaW4gZnVuY3Rpb24gaW4gZ2NjLCBjYXVzaW5nIHdhcm5pbmcgbWVzc2FnZXMgd2l0aCBnY2MgMy4wLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQpOiBEaXR0by4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKGFoX2hpbnRlcl9jb21wdXRlX2JsdWVzKTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJZnRjX2ZhbWlseV90YWJsZV9mcmVlLCBGVENfTWFuYWdlcl9Eb25lLCBGVENfTWFuYWdlcl9SZWdpc3Rlcl9DYWNoZSk6CglEaXR0by4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9uZXdfaW5kZXgsIGNmZl9kb25lX2luZGV4LAoJY2ZmX2V4cGxpY2l0X2luZGV4LCBDRkZfQWNjZXNzX0VsZW1lbnQsIENGRl9Gb3JnZXRfRWxlbWVudCwKCUNGRl9HZXRfTmFtZSwgQ0ZGX0dldF9TdHJpbmcsIENGRl9Mb2FkX1N1YkZvbnQsIENGRl9Mb2FkX0ZvbnQsCglDRkZfRG9uZV9Gb250KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfQWRkLCBQU19QYXJzZXJfTG9hZEZpZWxkKTogRGl0dG8uCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfbWFza190ZXN0X2JpdCwgcHNfbWFza19jbGVhcl9iaXQsCglwc19tYXNrX3NldF9iaXQsIHBzX2RpbWVuc2lvbl9hZGRfdDFzdGVtLCBwc19oaW50c190MXN0ZW0zLAoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX3JlY29yZCwKCXBzaDFfaGludF90YWJsZV9yZWNvcmRfbWFzaywgcHNoMV9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9yZWNvcmQsCglwc2gyX2hpbnRfdGFibGVfcmVjb3JkX21hc2ssIHBzaDJfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy9zZm50L3R0cG9zdC5jIChMb2FkX0Zvcm1hdF8yMCwgTG9hZF9Gb3JtYXRfMjUsCglUVF9HZXRfUFNfTmFtZSk6IERpdHRvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9HZXRfTWV0cmljcywgR2V0X0hNZXRyaWNzLAoJbG9hZF90cnVldHlwZV9nbHlwaCk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBUMV9PcGVuX0ZhY2UpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX0dldF9LZXJuaW5nKTogRGl0dG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoZnRjX2ZhbWlseV90YWJsZV9mcmVlKTogRGl0dG8uCgoyMDAyLTAzLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCksIHNyYy9jaWQvY2lkb2Jqcy5jCgkoQ0lEX0ZhY2VfSW5pdCk6IEZpeGVkIGFub3RoZXIgYnVnIHJlbGF0ZWQgdG8gdGhlCglhc2NlbmRlci9kZXNjZW5kZXIvdGV4dCBoZWlnaHQgb2YgUG9zdHNjcmlwdCBmb250cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gyX3ByaW50X3pvbmUpOiBUaGlzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMV9wcmludF96b25lKTogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCXNyYy9iYXNlL2Z0b2Jqcy5jOiBBZGRpbmcgdGhlIG5ldyBGVF9MaWJyYXJ5X1ZlcnNpb24gQVBJIHRvIHJldHVybgoJdGhlIGxpYnJhcnkncyBjdXJyZW50IHZlcnNpb24gaW4gZHluYW1pYyBsaW5rcy4KCSogc3JjL2Jhc2UvZnRpbml0LmMgKEZUX0luaXRfRnJlZVR5cGUpOiBVcGRhdGVkLgoKMjAwMi0wMy0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0RpbWVuc2lvblJlYyk6IHMvc3RkL3N0ZHcvLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsX3NjYWxlX3dpZHRocywKCXBzaF9kaW1lbnNpb25fc25hcF93aWR0aCwgcHNoX2dsb2JhbHNfZGVzdHJveSwgcHNoX2dsb2JhbHNfbmV3KToKCURpdHRvLgoKMjAwMi0wMy0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpLCBzcmMvY2ZmL2NmZm9ianMuYwoJKENGRl9GYWNlX0luaXQpLCBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0ZhY2VfSW5pdCk6IFJlbW92aW5nIHRoZSBidWcKCXRoYXQgcmV0dXJuZWQgZ2xvYmFsIEJCb3ggdmFsdWVzIGluIDE2LjE2IGZpeGVkIGZvcm1hdCAoaW5zdGVhZCBvZgoJaW50ZWdlciBmb250IHVuaXRzKS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoY2lkX2dldF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCBhIGJ1ZyB0aGF0CgljYXVzZWQgdGhlIENJRCBkcml2ZXIgdG8gcmV0dXJuIFBvc3RzY3JpcHQgZm9udCBuYW1lcyB3aXRoIGEgbGVhZGluZwoJc2xhc2ggKCIvIikgYXMgaW4gIi9NT0VLYWktUmVndWxhciIuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyksIHNyYy9zZm50L3Nmb2Jqcy5jIChHZXRfTmFtZSksCglzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCB0aGUgbG9hZGVyIHNvCgl0aGF0IGl0IGFjY2VwdHMgYnJva2VuIGZvbnRzIGxpa2UgImZveGp1bXAudHRmIiwgd2hpY2ggbWFkZSBGcmVlVHlwZQoJY3Jhc2ggd2hlbiB0cnlpbmcgdG8gbG9hZCB0aGVtLgoKCUFsc28gaW1wcm92ZWQgdGhlIG5hbWUgdGFibGUgcGFyc2VyIHRvIGJlIGFibGUgdG8gbG9hZAoJV2luZG93cy1lbmNvZGVkIGVudHJpZXMgYmVmb3JlIE1hY2ludG9zaCBvciBVbmljb2RlIG9uZXMsIHNpbmNlIGl0CglzZWVtcyBzb21lIGZvbnRzIGRvbid0IGhhdmUgcmVsaWFibGUgdmFsdWVzIGhlcmUgYW55d2F5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IEFkZCB0eXBlZGVmIGZvcgoJYFBTTmFtZXNfU2VydmljZScuCgoyMDAyLTAzLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00LCBidWlsZHMvdW5peC9sdG1haW4uc2g6IFVwZGF0ZSB0byBsaWJ0b29sCgkxLjQuMi4KCUFwcGx5IGEgc21hbGwgcGF0Y2ggZm9yIEFJWCB0byBtYWtlIHNoYXJlZCBsaWJyYXJpZXMgd29yayAodGhpcwoJcGF0Y2ggaXMgYWxyZWFkeSBpbiB0aGUgQ1ZTIHZlcnNpb24gb2YgbGlidG9vbCkuCgoJKiBidWlsZHMvdW5peC9jb25maWcuc3ViLCBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3M6IFVwZGF0ZWQgdG8KCXJlY2VudCB2ZXJzaW9ucy4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogRml4IHR5cG8KCShBQ19DT05GSUdfRklMRS0+QUNfQ09ORklHX0ZJTEVTKS4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAyLTAyLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y29uZmlnLmg6IENoYW5nZWQgYEZUX0xPQ0FMIHh4eHgnIHRvCglgRlRfTE9DQUwoIHh4eHggKScgZXZlcnl3aGVyZSBpbiB0aGUgc291cmNlLiAgVGhlIHNhbWUgZ29lcyBmb3IKCWBGVF9MT0NBTF9ERUYgeHh4eCcgd2hpY2ggaXMgdHJhbnNsYXRlZCB0byBgRlRfTE9DQUxfREVGKCB4eHh4eCApJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfTUlOT1IsIEZSRUVUWVBFX1BBVENIKToKCUNoYW5naW5nIHZlcnNpb24gdG8gMi4xLjAgdG8gaW5kaWNhdGUgYW4gdW5zdGFibGUgYnJhbmNoLgoJQWRkZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiBGVF9HZXRfRmlyc3RfQ2hhciBhbmQgRlRfR2V0X05leHRfQ2hhci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnQgRlRfR2V0X0ZpcnN0X0NoYXIgYW5kCglGVF9HZXRfTmV4dF9DaGFyLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oOiBSZW5hbWluZyBzdHJ1Y3R1cmUgdHlwZXMuICBUaGlzCgoJICB0eXBlZGVmICBUMV9TdHJ1Y3RfCgkgIHsKCSAgfSBUMV9TdHJ1Y3Q7CgoJYmVjb21lcwoKCSAgdHlwZWRlZiAgUFNfU3RydWN0UmVjXwoJICB7CgkgIH0gUFNfU3RydWN0UmVjLCAqUFNfU3RydWN0OwoKCSAgdHlwZWRlZiBQU19TdHJ1Y3RSZWMgIFQxX1N0cnVjdDsgIC8qIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5ICovCgoJSGVuY2UsIHdlIGluY3JlYXNlIHRoZSBjb2hlcmVuY3kgb2YgdGhlIHNvdXJjZSBjb2RlIGJ5IGVmZmVjdGl2ZWx5Cgl1c2luZyB0aGUgYFJlYycgcHJlZml4IGZvciBzdHJ1Y3R1cmUgdHlwZXMuCgoyMDAyLTAyLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IFNpbXBsaWZ5aW5nIGFuZCBzZWN1cmluZyB0aGUKCW5hbWVzIHRhYmxlIGxvYWRlci4gIEludmFsaWQgaW5kaXZpZHVhbCBuYW1lIGVudHJpZXMgYXJlIG5vdyBoYW5kbGVkCgljb3JyZWN0bHkuICBUaGlzIGFsbG93cyB0aGUgbG9hZGluZyBvZiB2ZXJ5IGJ1Z2d5IGZvbnRzIGxpa2UKCSJmb3hqdW1wLnR0ZiIgd2l0aG91dCBhbGxvY2F0aW5nIHRvbnMgb2YgbWVtb3J5IGFuZCBjYXVzaW5nIGNyYXNoZXMuCgoJKiBzcmMvb3RsYXlvdXQvb3RsY29tbW9uLmgsIHNyYy9vdGxheW91dC9vdGxjb21tb24uYzogQWRkaW5nIChzdGlsbAoJZXhwZXJpbWVudGFsKSBjb2RlIGZvciBPcGVuVHlwZSBMYXlvdXQgdGFibGVzIHZhbGlkYXRpb24gYW5kCglwYXJzaW5nLgoKCSogc3JjL3R5cGUxL3QxY21hcC5oLCBzcmMvdHlwZTEvdDFjbWFwLmM6IEFkZGluZyAoc3RpbGwKCWV4cGVyaW1lbnRhbCkgY29kZSBmb3IgVHlwZSAxIGNoYXJtYXAgcHJvY2Vzc2luZy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogTmV3IGZpbGUuICBJdCBjb250YWlucyBhIG5ldywgc3RpbGwKCWV4cGVyaW1lbnRhbCBTRk5UIGNoYXJtYXAgcHJvY2Vzc2luZyBzdXBwb3J0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogQWRkaW5nIHZhbGlkYXRpb24gc3VwcG9ydCBhcwoJd2VsbCBhcyBpbnRlcm5hbCBjaGFybWFwIG9iamVjdCBkZWZpbml0aW9ucyAoRlRfQ01hcCAhPSBGVF9DaGFyTWFwKS4KCjIwMDItMDItMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJlbmFtaW5nIHN0cmVhbSBmdW5jdGlvbnMgdG8gdGhlIEZUXzxTdWJqZWN0Pl88QWN0aW9uPiBzY2hlbWU6CgoJICBGVF9TZWVrX1N0cmVhbSAgICA9PiBGVF9TdHJlYW1fU2VlawoJICBGVF9Ta2lwX1N0cmVhbSAgICA9PiBGVF9TdHJlYW1fU2tpcAoJICBGVF9SZWFkX1N0cmVhbSAgICA9PiBGVF9TdHJlYW1fUmVhZAoJICBGVF9SZWFkX1N0cmVhbV9BdCA9PiBGVF9TdHJlYW1fUmVhZF9BdAoJICBGVF9BY2Nlc3NfRnJhbWUgICA9PiBGVF9TdHJlYW1fRW50ZXJfRnJhbWUKCSAgRlRfRm9yZ2V0X0ZyYW1lICAgPT4gRlRfU3RyZWFtX0V4aXRfRnJhbWUKCSAgRlRfRXh0cmFjdF9GcmFtZSAgPT4gRlRfU3RyZWFtX0V4dHJhY3RfRnJhbWUKCSAgRlRfUmVsZWFzZV9GcmFtZSAgPT4gRlRfU3RyZWFtX1JlbGVhc2VfRnJhbWUKCSAgRlRfR2V0X1hYWFggICAgICAgPT4gRlRfU3RyZWFtX0dldF9YWFhYCgkgIEZUX1JlYWRfWFhYWCAgICAgID0+IEZUX1N0cmVhbV9SZWFkX1hYWFgKCgkgIEZUX05ld19TdHJlYW0oIGZpbGVuYW1lLCBzdHJlYW0gKSA9PgoJICAgIEZUX1N0cmVhbV9PcGVuKCBzdHJlYW0sIGZpbGVuYW1lICkKCgkgICAgKFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSB0aGUgRlRfU3RyZWFtIHN0cnVjdHVyZSwgaXQgc2ltcGx5CgkgICAgaW5pdGlhbGl6ZXMgaXQgZm9yIHJlYWRpbmcuKQoKCSAgRlRfTmV3X01lbW9yeV9TdHJlYW0oIGxpYnJhcnksIEZUX0J5dGUqICBiYXNlLCBzaXplLCBzdHJlYW0gKSA9PgoJICAgIEZUX1N0cmVhbV9PcGVuX01lbW9yeSggc3RyZWFtLCBjb25zdCBGVF9CeXRlKiBiYXNlLCBzaXplICkKCgkgIEZUX0RvbmVfU3RyZWFtICA9PiBGVF9TdHJlYW1fQ2xvc2UKCSAgRlRfU3RyZWFtX0lPICAgID0+IEZUX1N0cmVhbV9JT0Z1bmMKCSAgRlRfU3RyZWFtX0Nsb3NlID0+IEZUX1N0cmVhbV9DbG9zZUZ1bmMKCgkgIGZ0X2Nsb3NlX3N0cmVhbSA9PiBmdF9hbnNpX3N0cmVhbV9jbG9zZSAoaW4gYmFzZS9mdHN5c3RlbS5jIG9ubHkpCgkgIGZ0X2lvX3N0cmVhbSAgICA9PiBmdF9hbnNpX3N0cmVhbV9pbyAgICAoaW4gYmFzZS9mdHN5c3RlbS5jIG9ubHkpCgoJKiBzcmMvYmFzZS9mdHV0aWwuYzogTmV3IGZpbGUuICBDb250YWlucyBhbGwgbWVtb3J5IGFuZCBsaXN0CgltYW5hZ2VtZW50IGNvZGUgKHByZXZpb3VzbHkgaW4gImZ0b2Jqcy5jIiBhbmQgImZ0bGlzdC5jIiwKCXJlc3BlY3RpdmVseSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBNb3ZpbmcgYWxsIGNvZGUgcmVsYXRlZCB0bwoJZ2x5cGggbG9hZGVycyB0byAuLi4KCSogaW5jbHVkZS9mcmVldHlwZS8iaW50ZXJuYWwvZnRnbG9hZHIuaDogVGhpcyBuZXcgZmlsZS4KCSJGVF9HbHlwaExvYWRlciIgaXMgbm93IGEgcG9pbnRlciB0byB0aGUgc3RydWN0dXJlCgkiRlRfR2x5cGhMb2FkZXJSZWMiLgoJKGZ0X2dseXBoX293bl9iaXRtYXApOiBSZW5hbWVkIHRvIC4uLgoJKEZUX0dMWVBIX09XTl9CSVRNQVApOiBUaGlzLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogTW92aW5nIGFsbCBjb2RlIHJlbGF0ZWQgdG8gZ2x5cGggbG9hZGVycwoJdG8gLi4uCgkqIHNyYy9iYXNlL2Z0Z2xvYWRyLmM6IFRoaXMgbmV3IGZpbGUuCgoyMDAyLTAyLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBSZW1vdmUgY29tbWEgaW4KCWVudW0gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTAyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW9kaWZpZWQgdGhlIGRlYnVnIHN1Yi1zeXN0ZW0gaW5pdGlhbGl6YXRpb24uICBUcmFjZSBsZXZlbHMgY2FuIG5vdwoJYmUgc3BlY2lmaWVkIHdpdGhpbiB0aGUgIkZUMl9ERUJVRyIgZW52aXJvbm1lbnQgdmFyaWFibGUuICBTZWUgdGhlCgljb21tZW50cyB3aXRoaW4gImZ0ZGVidWcuYyIgZm9yIG1vcmUgZGV0YWlscy4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYzogKEZUX1NldFRyYWNlTGV2ZWwpOiBSZW1vdmVkLgoJKGZ0X2RlYnVnX2luaXQpOiBOZXcgZnVuY3Rpb24uCgkoZnRfZGVidWdfZHVtbXkpOiBSZW1vdmVkLgoJVXBkYXRlZCB0byBjaGFuZ2VzIGluIGZ0ZGVidWcuaAoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IEFsd2F5cyBkZWZpbmUKCUZUX0RFQlVHX0xFVkVMX0VSUk9SIGlmIEZUX0RFQlVHX0xFVkVMX1RSQUNFIGlzIGRlZmluZWQuCgkoRlRfQXNzZXJ0KTogUmVuYW1lZCB0byAuLi4KCShGVF9BU1NFUlQpOiBUaGlzLgoJU29tZSBzdHVmZiBmcm9tIGZ0ZGVidWcuaCBoYXMgYmVlbiBtb3ZlZCB0byAuLi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBOZXcgZmlsZSwgdG8gZGVmaW5lIHRoZSB0cmFjZQoJbGV2ZWxzIHVzZWQgZm9yIGRlYnVnZ2luZy4gIEl0IGlzIHVzZWQgYm90aCB0byBkZWZpbmUgZW51bXMgYW5kCgl0b2dnbGUgbmFtZXMgZm9yIEZUMl9ERUJVRy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdHN0cmVhbS5jOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGV4dGVuZC5oLCBzcmMvYmFzZS9mdGV4dGVuZC5jOgoJUmVtb3ZlZC4gIEJvdGggZmlsZXMgYXJlIG5vdyBjb21wbGV0ZWx5IG9ic29sZXRlLgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaDogQWRkaW5nICIjdW5kZWYgRlRfRVJSX0NBVCIgYW5kCglgI3VuZGVmIEZUX0VSUl9YQ0FUIiB0byBhdm9pZCB3YXJuaW5ncyB3aXRoIGNlcnRhaW4gY29tcGlsZXJzIChsaWtlCglMQ0MpLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDJfcHJpbnRfem9uZSk6IFRoaXMgdG8gYXZvaWQgZXJyb3JzIGR1cmluZyBjb21waWxhdGlvbiBvZiBkZWJ1ZwoJbGlicmFyeS4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChGVF9DT01QT05FTlQpOiBDaGFuZ2UgZGVmaW5pdGlvbiB0byBhcwoJYHRyYWNlX3Ntb290aCcuCgoyMDAyLTAyLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUU6IEFkZGluZyAiZGV2ZWxAZnJlZXR5cGUub3JnIiBhZGRyZXNzIGZvciBidWcgcmVwb3J0cy4KCjIwMDItMDItMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGNoZWNrKTogTmV3IGR1bW15IHRhcmdldC4KCSguUEhPTlkpOiBBZGQgaXQuCgoyMDAyLTAyLTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKEZUX0NGTEFHUyk6IFVzZSAkKElOQ0xVREVfRkxBR1MpIGZpcnN0LgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19jYWNoZV9yZXNpemUpOiBNYXJrIGBlcnJvcicgYXMgdW51c2VkCgl0byBhdm9pZCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0dldF9TdHJpbmcpOiBEaXR0by4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9TdHJDb3B5KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfRG9uZSk6IERpdHRvLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IERpdHRvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBEaXR0by4KCShwY2ZfZ2V0X2JpdG1hcHMpOiBUaGUgc2FtZSBmb3IgYHNpemViaXRtYXBzJy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZV9QYXJzZV9DaGFyc3RyaW5ncyk6IFRoZSBzYW1lIGZvcgoJYG9yaWdfeScuCgkodDFvcGVyYXRvcl9zZWFjKTogQ29tbWVudCBvdXQgbW9yZSBkZWFkIGNvZGUuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwczJfaGludHNfYXBwbHkpOiBBZGQgYERFQlVHX0hJTlRFUicKCWNvbmRpdGlvbmFsLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Qcm9jZXNzX1NpbXBsZV9HbHlwaCwKCWxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBBZGQgYFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVInCgljb25kaXRpb25hbC4KCjIwMDItMDItMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9zZXJpZl9lZGdlKTogVXNlIEZUX1VOVVNFRCBpbnN0ZWFkCglvZiBVTlVTRUQuCgkqIHNyYy9hdXRvaGludC9haG1vZHVsZS5jIChmdF9hdXRvaGludGVyX3Jlc2V0KTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfbWFza190YWJsZV9tZXJnZSk6IEZpeCB0eXBvIGluIHZhcmlhYmxlCglzd2FwcGluZyBjb2RlLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZV9BbGlnbik6IEFkZCBQU0hfQkxVRV9BTElHTl9OT05FLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc25hcF9zdGVtKTogVXNlIGl0LgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX29wdGltaXplKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfYWxpZ24pOiBEaXR0by4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoVU5VU0VEKTogUmVtb3ZlZC4KCjIwMDItMDItMTAgIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPgoKCUFkZCBzdXBwb3J0IGZvciBJU09MYXRpbjEgUFMgZW5jb2RpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKGZ0X2VuY29kaW5nX2xhdGluXzEpOiBOZXcgdGFnCgkoYGxhdDEnKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0VuY29kaW5nX1R5cGUpOiBBZGQKCWB0MV9lbmNvZGluZ19pc29sYXRpbjEnLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBIYW5kbGUKCWZ0X2VuY29kaW5nX2xhdGluXzEuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBIYW5kbGUgYElTT0xhdGluMUVuY29kaW5nJy4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBIYW5kbGUgYHQxX2VuY29kaW5nX2lzb2xhdGluMScuCgoyMDAyLTAyLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUU6IEZpeCB0eXBvLgoJKiBkb2NzL0NIQU5HRVM6IE1pbm9yIGZpeGVzLgoKCgkqIFZlcnNpb24gMi4wLjggcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wMi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmb3IgMi4wLjguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IFNldHRpbmcgYFBBVENIX0xFVkVMJyB0byA4IGFuZAoJcmVtb3ZpbmcgYEZUX0dldF9OZXh0X0NoYXInIGZyb20gdGhlIEFQSSAodGVtcG9yYXJpbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRpbmcgY29tbWVudHMgdG8gRlRfR2V0X05leHRfQ2hhcjsKCW5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IHRlbXBvcmFyaWx5IGJlIHJlbW92ZWQgZm9yIHRoZSAyLjAuOAoJcmVsZWFzZS4KCjIwMDItMDItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogUmVtb3ZlZCBpbW1hdHVyZSBzdXBwb3J0IG9mCgl0aGUgQVZFUkFHRV9XSURUSCBwcm9wZXJ0eS4KCjIwMDItMDItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IFNpbmNlIG1hbnkgZm9udHMgZW1iZWRkZWQgaW4KCVBERiBkb2N1bWVudHMgZG8gbm90IGluY2x1ZGUgJ2NtYXAnLCAncG9zdCcgYW5kICduYW1lJyB0YWJsZXMsIHRoZQoJU0ZOVCBmYWNlIGxvYWRlciBoYXMgYmVlbiBjaGFuZ2VkIHRvIG5vdCBpbW1lZGlhdGVseSByZXBvcnQgYW4KCWVycm9yIGlmIHRoZXNlIGFyZSBub3QgcHJlc2VudC4KCglOb3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gX3JlcXVpcmVzXyB0aGVzZSB0YWJsZXMsIGJ1dCBBZG9iZQoJc2VlbXMgdG8gaWdub3JlIGl0IGNvbXBsZXRlbHkuCgoJKiBzcmMvc2ZudC90dGNtYXAuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3JlYWRfVE9DKTogVXNlIEZUX1VJbnQuCgkocGNmX3BhcnNlX21ldHJpYywgcGNmX3BhcnNlX2NvbXByZXNzZWRfbWV0cmljKTogUmVtb3ZlZC4gIENvZGUKCWlzIG5vdyBpbiAuLi4KCShwY2ZfZ2V0X21ldHJpYyk6IEhlcmUuCgkocGNmU2Vla1RvVHlwZSk6IFJlbmFtZWQgdG8gLi4uCgkocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZkhhc1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9oYXNfdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKGZpbmRfcHJvcGVydHkpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9maW5kX3Byb3BlcnR5KTogVGhpcy4KCVVzZSBGVF9JbnQuCgkocGNmX2dldF9iaXRtYXBzLCBwY2ZfZ2V0X2VuY29kaW5ncyk6IEhhbmRsZSBpbnZhbGlkIFBDRiBmb250cwoJYmV0dGVyIChkZWxheWluZyBmb3JtYXQgY2hlY2tzIG91dCBvZiBGVF9BY2Nlc3NfRnJhbWUgLi4KCUZUX0ZvcmdldF9GcmFtZSBibG9ja3MgdG8gYXZvaWQgbGVhdmluZyB0aGUgc3RyZWFtIGluIGFuIGluY29ycmVjdAoJc3RhdGUgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCBQQ0YgZm9udCkuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfRmFjZV9Eb25lKTogVGhpcy4KCShQQ0ZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfRmFjZV9Jbml0KTogVGhpcy4KCShQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9DaGFyX0dldF9JbmRleCk6IFRoaXMuCgkoUENGX0dldF9OZXh0X0NoYXIpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9DaGFyX0dldF9OZXh0KTogVGhpcy4KCShwY2ZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmLmggKFBDRl9Eb25lX0ZhY2UpOiBSZW1vdmVkLgoKMjAwMi0wMi0wNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKEZUX0RvbmVfRmFjZSk6IEZpeGVkIHNtYWxsIG1lbW9yeSBsZWFrLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBOb3cgaGFuZGxlcyB0aGUgIkFWRVJBR0VfV0lEVEgiCglwcm9wZXJ0eSB0byByZXR1cm4gY29ycmVjdCBjaGFyYWN0ZXIgcGl4ZWwgKHdpZHRoL2hlaWdodCkgcGFpcnMgZm9yCgllbWJlZGRlZCBiaXRtYXBzLgoKMjAwMi0wMi0wNCAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCUFkZGluZyB0aGUgZnVuY3Rpb24gYEZUX0dldF9OZXh0X0NoYXInLCBkb2luZyB0aGUgb2J2aW91cyB0aGluZwoJdy5yLnQuIHRoZSBzZWxlY3RlZCBjaGFybWFwLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGQgcHJvdG90eXBlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmg6IEFkZCBgRlREcml2ZXJfZ2V0TmV4dENoYXInCgl0eXBlZGVmLgoJKEZUX0RyaXZlcl9DbGFzcyk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IEFkZCBgUFNfTmV4dF9Vbmljb2RlX0Z1bmMnCgl0eXBlZGVmLgoJKFBTTmFtZXNfSW50ZXJmYWNlKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaDogQWRkIGBUVF9DaGFyTmV4dF9GdW5jJwoJdHlwZWRlZi4KCShUVF9DTWFwVGFibGUpOiBVc2UgaXQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbiwgaW1wbGVtZW50aW5nCgloaWdoLWxldmVsIEFQSS4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25leHRfY2hhcik6IE5ldyBmdW5jdGlvbi4KCShjZmZfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENpZF9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxY2lkX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkocGNmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfTmV4dF9Vbmljb2RlKTogTmV3IGZ1bmN0aW9uLgoJKHBzbmFtZXNfaW50ZXJmYWNlKTogQWRkIGl0LgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19uZXh0MCwgY29kZV90b19uZXh0MiwgY29kZV90b19uZXh0NCwKCWNvZGVfdG9fbmV4dDYsIGNvZGVfdG9fbmV4dF84XzEyLCBjb2RlX3RvX25leHRfMTApOiBOZXcgYXV4aWxpYXJ5CglmdW5jdGlvbnMuCgkoVFRfQ2hhck1hcF9Mb2FkKTogVXNlIHRoZW0uCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHR0X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkodDFfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvd2luZm50L3dpbmZudC5jIChGTlRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh3aW5mbnRfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBGb3Igbm93LCByZXBvcnQgVW5pY29kZSBmb3IKCVVuaWNvZGUgYW5kIExhdGluIDEgZW5jb2RpbmdzLgoKMjAwMi0wMi0wMiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBBZGQgbWlzc2luZyBgZmknLgoKCgkqIFZlcnNpb24gMi4wLjcgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBJbmNyZWFzaW5nIEZSRUVUWVBFX1BBVENIIHRvIDcKCWZvciB0aGUgbmV3IHJlbGVhc2UuCgoyMDAyLTAxLTMxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIFJFQURNRS5VTlgsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCgkyLjAuNyByZWxlYXNlLgoKMjAwMi0wMS0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSU5TVEFMTDogTW92ZWQgdG8gLi4uCgkqIGRvY3MvSU5TVEFMTDogSGVyZSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgImluc3RhbGwiIHNjcmlwdCBvbgoJV2luZG93cywgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCBwcmVzZXJ2ZSBjYXNlLgoKMjAwMi0wMS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogY29uZmlndXJlOiBGaXhlZCB0aGUgc2NyaXB0LiAgSXQgcHJldmlvdXNseSBkaWRuJ3QgYWNjZXB0IG1vcmUKCXRoYW4gb25lIGFyZ3VtZW50IGNvcnJlY3RseS4gIEZvciBleGFtcGxlLCB3aGVuIHR5cGluZzoKCgkgIC4vY29uZmlndXJlIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLW5scwoKCXRoZSAiLS1kaXNhYmxlLW5scyIgd2FzIGluY29ycmVjdGx5IHNlbnQgdG8gdGhlICJtYWtlIiBwcm9ncmFtLgoKMjAwMi0wMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FLlVOWDogRml4IHR5cG8uCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKHVuaW5zdGFsbCk6IEZpeCBsaWJyYXJ5IG5hbWUgZm9yIGxpYnRvb2wuCgoyMDAyLTAxLTI4ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IEZpeCBpbmNvcnJlY3QgZGVzdHJ1Y3Rpb24gb2YKCXRoZSBmYWNlIG9iamVjdCAoZmFjZS0+dG9jLnRhYmxlcywgZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSwKCWZhY2UtPnJvb3QuYXZhaWxhYmxlX3NpemUsIGZhY2UtPmNoYXJzZXRfZW5jb2RpbmcsCglmYWNlLT5jaGFyc2V0X3JlZ2lzdHJ5IGFyZSBub3cgZnJlZWQpLiAgVGhhbmtzIHRvIE5pZWxzIE1vc2VsZXkuCgoyMDAyLTAxLTI4ICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBTZXQgYGxvYWRlci0+bnVtX2NoYXJzJy4KCjIwMDItMDEtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIHBhcnNlX2NoYXJzdHJpbmdzKTogVXNlIGNvcHkKCW9mIGBiYXNlJyBzdHJpbmcgZm9yIGRlY3J5cHRpbmcgdG8gbm90IG1vZGlmeSB0aGUgb3JpZ2luYWwgZGF0YS4KCUJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFrdWIgQm9ndXN6IDxxYm9vc2hAcGxkLm9yZy5wbD4uCgoyMDAyLTAxLTI3ICBHaXVsaWFubyBQb2NoaW5pICA8cG9jaGluaUBzaGlueS5pdD4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zY2FubGluZSk6IEZpeCBidWcgd2hpY2ggY2F1c2VkCgliYWQgcmVuZGVyaW5nIG9mIHRoaW4gbGluZXMgKGxlc3MgdGhhbiBvbmUgcGl4ZWwgdGhpY2spLgoKMjAwMi0wMS0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBNYWtlIGxhc3QgcGF0Y2ggd29yawoJYWN0dWFsbHkuCgoyMDAyLTAxLTI1ICBNYXJ0aW4gWmluc2VyICA8emluc2VyQGRlY3VzLmRlPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2RvbmUsIGZ0Y19ub2RlX2Rlc3Ryb3kpOiBGaXgKCWNvbXBpbGF0aW9uIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcyAoT0JKUyk6IEFkZCBgZnRtbS5vYmonLgoJKiBzcmMvY2FjaGUvZGVzY3JpcC5tbXMgKGZ0Y2FjaGUub2JqKTogRGVwZW5kZW5jaWVzIGFkZGVkLgoKMjAwMi0wMS0yNSAgV0FORyBZaSAgPHdhbmd5aUBmb3VuZGVyLmNvbS5jbj4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogRml4IGRlYWxsb2NhdGlvbiBidWcuCgoyMDAyLTAxLTIxICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogZG9jcy9QQVRFTlRTOiBUeXBvIGZpeGVkICh0aGFua3MgdG8gRGV0bGVmICJIYXdrZXllIiBX/HJrbmVyKSBpbgoJdGhlIFVSTCBmb3IgdGhlIG9ubGluZSByZXNvdXJjZS4KCjIwMDItMDEtMTggIElhbiBCcm93biAgPGlhbi5icm93bkBwcmludHNvZnQuZGU+CgoJKiBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jOiBOZXcgZmlsZS4KCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jOiBVcGRhdGVkIGZvciBBbWlnYU9TIDMuOS4KCSogYnVpbGRzL2FtaWdhL1JFQURNRTogVXBkYXRlZC4KCjIwMDItMDEtMTggIElhbiBCcm93biAgPGlhbi5icm93bkBwcmludHNvZnQuZGU+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTAxLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuYTQ6IFRoZSBzY3JpcHQgd2FzIHN0aWxsIGJ1Z2d5LgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1ha2UgaXQgcmVhbGx5IHdvcmsgZm9yIGFueSBpbnN0YWxsCglwcmVmaXguCgoyMDAyLTAxLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuYTQ6IEZpeCBzb21lIHNlcmlvdXMgYnVncy4KCjIwMDItMDEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogQnVpbGQgdG9wLWxldmVsIEphbWZpbGUuCgoyMDAyLTAxLTA5ICBNYXhpbSBTaGVtYW5hcmV2ICA8bWNzZWVtYWdnQHlhaG9vLmNvbT4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9saW5lKTogU21hbGwgb3B0aW1pemF0aW9uIHRvCgl0aGUgc21vb3RoIGFudGktYWxpYXNlZCByZW5kZXJlciB0aGF0IGRlYWxzIHdpdGggdmVydGljYWwgc2VnbWVudHMuCglUaGlzIHJlc3VsdHMgaW4gYSA1LTclIHNwZWVkdXAgaW4gcmVuZGVyaW5nIHNwZWVkLgoKMjAwMi0wMS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIHNvbWUgd3JhcHBlciBzY3JpcHRzIHRvIG1ha2UgdGhlIGluc3RhbGxhdGlvbiBtb3JlCglVbml4LWZyaWVuZGx5LgoKCSogY29uZmlndXJlLCBpbnN0YWxsOiBOZXcgZmlsZXMuCgoJKiBJTlNUQUxMLCBSRUFETUUuVU5YOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uIHRvIHVzZSB0aGUKCW5ldyAnY29uZmlndXJlJyBhbmQgJ2luc3RhbGwnIHNjcmlwdHMuCgoyMDAyLTAxLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBkb2NzL0JVR1MsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgMi4wLjYgcmVsZWFzZS4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogRml4ZWQgSFRNTCBxdW90aW5nIGluIHNvdXJjZXMuCgkoaHRtbF9mb3JtYXQpOiBSZXBsYWNlZCB3aXRoIC4uLgoJKGh0bWxfcXVvdGUpOiBOZXcgZnVuY3Rpb24uCgkoaHRtbF9xdW90ZTApOiBOZXcgZnVuY3Rpb24uCgkoRG9jQ29kZTo6ZHVtcF9odG1sOiBTbWFsbCBpbXByb3ZlbWVudC4KCShEb2NQYXJhZ3JhcGg6OmR1bXAsIERvY0Jsb2NrOjpodG1sKTogVXNlIGh0bWxfcXVvdGUwIGFuZCBodG1sX3F1b3RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogU2V0dGluZyBkZWZhdWx0IG9wdGlvbnMgZm9yCglhIHJlbGVhc2UgYnVpbGQgKGRlYnVnZ2luZyBvZmYsIGJ5dGVjb2RlIGludGVycHJldGVyIG9mZikuCgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRvdXRsbi5jLCBzcmMvY2FjaGUvZnRjY21hcC5jLAoJc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dHNiaXQuYzogUmVtb3Zpbmcgc21hbGwgY29tcGlsZXIKCXdhcm5pbmdzIChpbiBwZWRhbnRpYyBjb21waWxhdGlvbiBtb2RlcykuCgoyMDAyLTAxLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogTW9kaWZpZWQgY29tcHV0YXRpb24KCW9mIGF1dG8taGludGVkIHN0ZW0gd2lkdGhzOyB0aGlzIGF2b2lkcyBjb2xvciBmcmluZ2VzIGluCgkiQ2xlYXJUeXBlLWxpa2UiIHJlbmRlcmluZy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGhfSGVhZGVyLAoJVFRfTG9hZF9TaW1wbGVfR2x5cGgsIFRUX0xvYWRfQ29tcG9zaXRlX0dseXBoLCBsb2FkX3RydWV0eXBlX2dseXBoKToKCU1vZGlmaWVkIHRoZSBUcnVlVHlwZSBsb2FkZXIgdG8gbWFrZSBpdCBtb3JlIHBhcmFub2lkOyB0aGlzIGF2b2lkcwoJbmFzdHkgYnVmZmVyIG92ZXJmbG93cyBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIGdseXBoIGRhdGEgKGFzCgllbmNvdW50ZXJlZCBpbiB0aGUgb3V0cHV0IG9mIHNvbWUgYnVnZ3kgZm9udCBjb252ZXJ0ZXJzKS4KCjIwMDItMDEtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRS5VTlg6IEFkZGVkIHNwZWNpYWwgUkVBRE1FIGZpbGUgZm9yIFVuaXggdXNlcnMuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfU3RyZWFtKTogRml4ZWQgdHlwby4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBBZGRlZCAjaW5jbHVkZSBGVF9PVVRMSU5FX0ggdG8gZ2V0IHJpZAoJb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfQ2hlY2spOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDEtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogQWRkIGNhc3QgdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmcuCgoyMDAyLTAxLTAzICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfU3RyZWFtKTogQWRkZWQgYSBmaXggdG8gZW5zdXJlIHRoYXQKCWFsbCBGcmVlVHlwZSBpbnB1dCBzdHJlYW1zIGFyZSBjbG9zZWQgaW4gY2hpbGQgcHJvY2Vzc2VzIG9mIGEgImZvcmsiCglvbiBVbml4IHN5c3RlbXMuICBUaGlzIGlzIGltcG9ydGFudCB0byBhdm9pZCAocG90ZW50aWFsKSBhY2Nlc3MKCWNvbnRyb2wgaXNzdWVzLgoKMjAwMi0wMS0wMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNyYXNoZWQgdGhlCglsaWJyYXJ5IHdoZW4gZGVhbGluZyB3aXRoIGNlcnRhaW4gd2VpcmQgZm9udHMgbGlrZSAiU3RhbGluZ3JhZCIsIGluCgkic2Fkbi5wZmIiICh0aGlzIGZvbnQgaGFzIG5vIGZ1bGwgZm9udCBuYW1lIGVudHJ5KS4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYywgaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmggKEZUX091dGxpbmVfQ2hlY2spOgoJTmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiBvdXRsaW5lIGRhdGEuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVzZSBgRlRfT3V0bGluZV9DaGVjaycgdG8KCWVuc3VyZSB0aGF0IGxvYWRlZCBnbHlwaHMgYXJlIHZhbGlkLiAgVGhpcyBhbGxvd3MgY2VydGFpbiBmb250cyBsaWtlCgkidHQxMDk1bV8udHRmIiB0byBiZSBsb2FkZWQgZXZlbiB0aG91Z2ggaXQgYXBwZWFycyB0aGV5IGNvbnRhaW4KCXJlYWxseSBmdW5reSBnbHlwaHMuCgoJVGhlcmUgc3RpbGwgaXMgYSBidWcgdGhlcmUsIHRob3VnaC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggZXJyb3IgY29uZGl0aW9uLgoKMjAwMS0xMi0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEZpeCBhZHZhbmNlIHdpZHRoCgljb21wdXRhdGlvbiBvZiBhdXRvLWhpbnRlZCBnbHlwaHMuICBUaGlzIG5vdGljZWFibHkgaW1wcm92ZXMgdGhlCglzcGFjaW5nIG9mIGxldHRlcnMgaW4gS0RFIGFuZCBHbm9tZS4KCjIwMDEtMTItMjUgIEFudG9pbmUgTGVjYSA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBDb3JyZWN0aW5nIHRoZSBvcmRlciBmb3IgQm9ybGFuZCBjb21waWxlcnM6CgkxNi1iaXQgYmNjIHdhcyBuZXZlciBzZWxlY3RlZCwgYWx3YXlzIG92ZXJyaWRkZW4gYnkgMzItYml0IGJjYzMyLgoKMjAwMS0xMi0yMiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wZmMvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogSGFuZGxlIHByb3BlcnR5IGBQT0lOVF9TSVpFJwoJYW5kIGZpeCBpbmNvcnJlY3QgY29tcHV0YXRpb24gb2YgYGF2YWlsYWJsZV9zaXplcycuCgoyMDAxLTEyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogQXV0by1oaW50ZWQgZ2x5cGhzIGhhZCBhbgoJaW5jb3JyZWN0IGdseXBoIGFkdmFuY2UgaW4gdGhlIGNhc2Ugb2YgbW9uby13aWR0aCBmb250cyAobGlrZQoJQ291cmllciwgQW5kYWxlIE1vbm8sIGFuZCBvdGhlcnMpLgoKMjAwMS0xMi0yMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGFwdGF0aW9ucyB0byBsYXRlc3QgY2hhbmdlcy4KCVN1cHBvcnQgYWRkZWQgZm9yIE1vcnBoT1MuCgoyMDAxLTEyLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKEZUX0NPTVBPTkVOVCk6IFJlZGVmaW5lIHRvIGB0cmFjZV9wc2hyZWMnLgoJKHBzX21hc2tfdGFibGVfbWVyZ2UsIHBzX2hpbnRzX29wZW4sIHBzX2hpbnRzX3N0ZW0sCglwc19oaW50c190MXN0ZW0zLCBwc19oaW50c190Mm1hc2ssIHBzX2hpbnRzX3QyY291bnRlcik6IEZpeAoJRlRfRVJST1IgbWVzc2FnZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMScuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMicuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IFVwZGF0ZWQuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBOZXcgZmlsZS4KCjIwMDEtMTItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOgoJSWdub3JlIGludmFsaWQgImhpbnRtYXNrIiBhbmQgImNudHJtYXNrIiBvcGVyYXRvcnMgKGluc3RlYWQgb2YKCXJldHVybmluZyBhbiBlcnJvcikuICBHbHlwaCAyMDI4IG9mIHRoZSBDRkYgZm9udCAiTVN1bmctTGlnaHQtQWNybyIKCWNvdWxkbid0IGJlIHJlbmRlcmVkIG90aGVyd2lzZSAoaXQgc2VlbXMgaXRzIGNoYXJzdHJpbmcgaXMgYnVnZ3ksCgl0aG91Z2ggdGhpcyByZXF1aXJlcyBtb3JlIGFuYWx5c2lzKS4KCShGVF9DT01QT05FTlQpOiBEZWZpbmUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyksIHNyYy9wc2F1eC90MWRlY29kZS5jCgkoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyksIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jICgqKSwgRml4ZWQgYQoJYnVnIHdoZXJlIHRoZSBYIGFuZCBZIGF4aXMgd2hlcmUgaW52ZXJzZWQgaW4gdGhlIHBvc3RzY3JpcHQgaGludGVyLgoJVGhpcyBjYXVzZWQgcHJvYmxlbSB3aGVuIGRpc3BsYXlpbmcgb24gbm9uLXNxdWFyZSBzdXJmYWNlcy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jOiBzL3ZlcnRpY2FsL2RpbWVuc2lvbi8uCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBSZXBsYWNlZCBhIGZsb2F0aW5nCglwb2ludCBjb25zdGFudCB3aXRoIGEgZml4ZWQtZmxvYXQgZXF1aXZhbGVudC4gIEZvciBzb21lIHJlYXNvbnMgbm90CglhbGwgY29tcGlsZXJzIGFyZSBjYXBhYmxlIG9mIGRpcmVjdGx5IGNvbXB1dGluZyBhIGZsb2F0aW5nIHBvaW50ZXIKCWNvbnN0YW50IGNhc3RlZCB0byBGVF9GaXhlZCwgYW5kIHdpbGwgbGluayBhIG1hdGggbGlicmFyeSBpbnN0ZWFkLgoKMjAwMS0xMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3ksIGZ0Y19jYWNoZV9sb29rdXApOiBGaXgKCXRyYWNpbmcgc3RyaW5ncy4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCglmdGNfZmFtaWx5X3RhYmxlX2ZyZWUsIEZUQ19NYW5hZ2VyX0NoZWNrKTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBEaXR0by4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX0xpYnJhcnkpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMTItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBQb3N0U2NyaXB0IGhpbnRlciBzdXBwb3J0IHRvIHRoZSBDRkYgYW5kIENJRCBkcml2ZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRm9udCk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfSW5pdF9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Jbml0KTogVGhpcy4KCUFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX0RvbmVfQnVpbGRlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0J1aWxkZXJfRG9uZSk6IFRoaXMuCgkoQ0ZGX0luaXRfRGVjb2Rlcik6IEFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IHZzdGVtIHN1cHBvcnQuCgkoQ0ZGX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJQWRkIGhpbnRpbmcgc3VwcG9ydC4KCShjZmZfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKTogVXNlIENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcoKS4KCShjZmZfYXJndW1lbnRfY291bnRzKTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIENGRl9TaXplX0RvbmUsIENGRl9TaXplX0luaXQsCglDRkZfU2l6ZV9SZXNldCwgQ0ZGX0dseXBoU2xvdF9Eb25lLCBDRkZfR0x5cGhTbG90X0luaXQpOiBOZXcKCWZ1bmN0aW9ucy4KCShDRkZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50ZXIgc3VwcG9ydC4KCShDRkZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfSW5pdCk6IFRoaXMuCgkoQ0ZGX0RvbmVfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRHJpdmVyX0RvbmUpOiBUaGlzLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChDSURfRmFjZVJlYyk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpOiBBZGQgaGludGVyIHN1cHBvcnQuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDSURfR2x5cGhTbG90X0RvbmUsIENJRF9HbHlwaFNsb3RfSW5pdCwgQ0lEX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsCglDSURfU2l6ZV9Eb25lLCBDSURfU2l6ZV9Jbml0LCBDSURfU2l6ZV9SZXNldCk6IE5ldyBmdW5jdGlvbnMuCgkoQ0lEX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfRG9uZSk6IFRoaXMuCgkoQ0lEX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfSW5pdCk6IFRoaXMuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKENJRF9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDSURfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2lkcml2ZXIuYzogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAodDJfaGludF9zdGVtcyk6IEZpeGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IEZpeGVkIGEgc3R1cGlkIGJ1ZyB0aGF0CgljcmFzaGVkIHRoZSBsaWJyYXJ5IG9uIGV4aXQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogRW5hYmxlIGZvbnQgbWF0cml4Cgl0cmFuc2Zvcm1hdGlvbiBvZiBoaW50ZWQgZ2x5cGhzLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Eb25lKTogRml4ZWQgYSBtZW1vcnkgbGVhazsgdGhlIHN1YnJzCglyb3V0aW5lcyB3ZXJlIG5ldmVyIHJlbGVhc2VkIHdoZW4gQ0lEIGZhY2VzIHdlcmUgZGVzdHJveWVkLgoKCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmM6IFVwZGF0ZWQKCXRvIG1vdmUgdGhlIGRlZmluaXRpb24gb2YgZW5jb2RpbmcgdGFibGVzIGJhY2sgd2l0aGluICJjZmZsb2FkLmMiCglpbnN0ZWFkIG9mIG1ha2luZyB0aGVtIHBhcnQgb2YgYSBzaGFyZWQgaGVhZGVyIChjYXVzaW5nIHByb2JsZW1zIGluCgkibXVsdGkiIGJ1aWxkcykuICBUaGlzIHJldmVydHMgY2hhbmdlIDIwMDEtMDgtMDguCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC42IHJlbGVhc2UuCgkqIGRvY3MvVE9ETzogQWRkZWQgInN0ZW0zIGFuZCBjb3VudGVyIGhpbnRzIHN1cHBvcnQiIHRvIHRoZSBUT0RPCglsaXN0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIuCgkqIGRvY3MvQlVHUzogQ2xvc2VkIHRoZSBBVVRPSElOVC1OTy1TQklUUyBidWcuCgoyMDAxLTEyLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2FjaGUuaDogQWRkZWQgY29tbWVudHMgdG8gaW5kaWNhdGUgdGhhdAoJc29tZSBvZiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zCgl0aGF0IG5lZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBjYWNoZSB0eXBlcy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGN1cl90b19vcmcsIG9yZ190b19jdXIpOiBGaXhlZCBhIG5hc3R5IGJ1ZwoJdGhhdCBwcmV2ZW50ZWQgY29tcG9zaXRlcyBmcm9tIGxvYWRpbmcgY29ycmVjdGx5LCBkdWUgdG8gbWlzc2luZwoJcGFyZW50aGVzZXMgYXJvdW5kIG1hY3JvIHBhcmFtZXRlcnMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBNYWtlIHRoZSAicG9zdCIgYW5kICJuYW1lIgoJdGFibGVzIG9wdGlvbmFsIHRvIGxvYWQgUENMIGZvbnRzIHByb3Blcmx5LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfTG9hZF9HbHlwaCksIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTE9BRF9TQklUU19PTkxZKToKCSJGaXhlZCIgdGhlIGJ1ZyB0aGF0IHByZXZlbnRlZCBlbWJlZGRlZCBiaXRtYXBzIHRvIGJlIGxvYWRlZCB3aGVuCgl0aGUgYXV0by1oaW50ZXIgaXMgdXNlZC4gIFRoaXMgYWN0dWFsbHkgaXMgYSBoYWNrIGJ1dCB3aWxsIGJlIGVub3VnaAoJdW50aWwgdGhlIGludGVybmFsIHJlLWRlc2lnbiBzY2hlZHVsZWQgZm9yIEZyZWVUeXBlIDIuMS4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgb3V0bGluZQoJc2hpZnRpbmcgYnVnIGluIHRoZSBtb25vY2hyb21lIHJlbmRlcmVyLgoKCSogUkVBRE1FOiBVcGRhdGVkIHZlcnNpb24gbnVtYmVycyB0byAyLjAuNi4KCjIwMDEtMTItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggdGVzdCBmb3IgaW52YWxpZAoJZ2x5cGggaGVhZGVyLgoKMjAwMS0xMi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUQ19Ob2RlX1VucmVmKTogUmVtb3ZlZC4gIEl0IGlzCglhbHJlYWR5IGluIGZ0Y21hbmFnLmguCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgZ2ZhbScuCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJKiBmdGNfZmFtaWx5X3RhYmxlX2ZyZWUpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oOiBVcGRhdGVkLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9ub2RlX2luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgY2ZhbScuCglSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCShmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogRGl0dG8uCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEluY3JlYXNlIGB2ZXJzaW9uX2luZm8nIHRvIDg6MDoyLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0xMi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQuCgoyMDAxLTEyLTE0ICBTY290dCBMb25nICA8c2NvdHRAc3dpZnR2aWV3LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXhpbmcgY3Jhc2ggd2hlbgoJZGVhbGluZyB3aXRoIGludmFsaWQgZm9udHMgKGkuZS4gZ2x5cGggc2l6ZSA8IDEwIGJ5dGVzKS4KCjIwMDEtMTItMTQgIFNhbSBMYXRpbmdhIDxzbG91a2VuQGRldm9sdXRpb24uY29tPgoKCSogYnVpbGRzL21hYy9mcmVldHlwZS5tYWtlOiBBIG5ldyBNYWtlZmlsZSB0byBidWlsZCB3aXRoIE1QVyBvbgoJTWFjT1MgY2xhc3NpYy4KCjIwMDEtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpLAoJc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfTG9hZF9HbHlwaCk6IEZpeGVkIGEgc2VyaW91cyBidWcgY29tbW9uIHRvCglhbGwgZm9udCBkcml2ZXJzICh0aGUgYWR2YW5jZSB3aWR0aCB3YXMgbmV2ZXIgaGludGVkIHdoZW4gaXQKCXNob3VsZCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChkZWJ1Z19tZW1fZHVtbXkpIFshRlRfREVCVUdfTUVNT1JZXTogRG9uJ3QKCXVzZSBgZXh0ZXJuJyBrZXl3b3JkLgoKMjAwMS0xMi0xMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludC9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcywgcHNoX2JsdWVzX3NuYXBfc3RlbQoJcHNoX2dsb2JhbHNfbmV3KTogQWRkaW5nIGNvcnJlY3QgQmx1ZVNjYWxlL0JsdWVTaGlmdCBzdXBwb3J0LCBwbHVzCglmYW1pbHkgYmx1ZXMgcHJvY2Vzc2luZy4KCSogc3JjL3BzaGludC9wc2hnbG9iLmggKFBTSF9CbHVlc1JlYyk6IFVwZGF0ZWQuCgoJU3RhcnRlZCBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIFBvc3RzY3JpcHQgaGludGVyIGluIHRoZSBDRkYgbW9kdWxlLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBJbXBsZW1lbnQgaXQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaDogVXBkYXRlZC4KCjIwMDEtMTItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogU29tZSBwb3J0YWJpbGl0eSBmaXhlcy4KCjIwMDEtMTItMTEgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zIChPQkpTKTogQWRkIGZ0ZGVidWcub2JqLgoKMjAwMS0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfR2VuZXJpY19IZWFkZXIpOiBUeXBvcy4KCjIwMDEtMTItMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogTW9kaWZpZWQgdGhlIHNjcmlwdCB0byBwcmV2ZW50CglwYXNzaW5nICItTC91c3IvbGliIiB0byBnY2MuCgoJKiBkb2NzL0ZUTC5UWFQ6IFNpbXBsZSBmaXggKGNoYW5nZSAiTElDRU5TRS5UWFQiIHRvICJGVEwuVFhUIikuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IE5ldyBmaWxlIGZvciBjaGVja2luZyBjb25maWd1cmUgcGF0aHMuCglXZSBuZWVkIHRvIGluc3RhbGwgaXQgaW4gJChwcmVmaXgpL3NoYXJlL2FjbG9jYWwvZnJlZXR5cGUyLm00IGJ1dCBJCglkaWRuJ3QgbW9kaWZ5IGJ1aWxkcy91bml4L2luc3RhbGwubWsgeWV0LgoKCSogSU5TVEFMTDogVXBkYXRlZCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aAoJSmFtLiAgVGhleSB3ZXJlIHNpbXBseSB3cm9uZy4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX0Nvcyk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQgY2F1c2VkCglzbGlnaHRseSBpbXByb3BlciByZXN1bHRzIGZvciBgRlRfQ29zJyBhbmQgYEZUX1NpbicgKGV4YW1wbGU6CglGVF9TaW4oMCkgPT0gLTEhKS4KCjIwMDEtMTItMTEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEdFVF9Mb25nTEUsIEdFVF9VTG9uZ0xFKToKCUZpeGVkIGluY29ycmVjdCBhcmd1bWVudCB0eXBlcy4KCjIwMDEtMTItMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfSW5pdF9GYWNlKTogQWxsb3cgWGZ0IHRvIHVzZSBQQ0YgZm9udHMKCWJ5IHNldHRpbmcgdGhlICJmYWNlLT5tZXRyaWNzLm1heF9hZHZhbmNlIiBjb3JyZWN0bHkuCgoyMDAxLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NtYXAuaCwgc3JjL2NhY2hlL2Z0Y2NtYXAuYzogQWRkZWQgbmV3CgljaGFybWFwIGNhY2hlLgoJKiBzcmMvY2FjaGUvZnRjYWNoZS5jOiBVcGRhdGVkLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IHMvVU5VU0VEL0ZUX1VOVVNFRC8uCgoyMDAxLTEyLTA2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVhZGluZyAuZGZvbnQgZmlsZXMgb24gTWFjIE9TIFguICBBbHNvIGFkZGVkIGEKCW5ldyByb3V0aW5lIHdoaWNoIGxvb2tzIHVwIGEgZ2l2ZW4gZm9udCBieSBuYW1lIGluIHRoZSBNYWMgT1MgYW5kCglyZXR1cm5zIHRoZSBkaXNrIGZpbGUgd2hlcmUgaXQgcmVzaWRlcy4KCgkqIHNyYy9iYXNlL2Z0bWFjLmM6IEluY2x1ZGUgPEZpbGVzLmg+IGFuZCA8VGV4dFV0aWxzLmg+LgoJKGlzX2Rmb250KTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KTogTmV3IGZ1bmN0aW9uLgoJKEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSk6IE5ldyBleHBvcnRlZCBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZSk6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaDogVXBkYXRlZC4KCjIwMDEtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9KYW1maWxlLCBzcmMvY2FjaGUvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAxLTEyLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBTbWFsbCB1cGRhdGUuCgoyMDAxLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFJlLW9yZGVyZWQgY29kZSBmb3IKCWRlYnVnZ2luZyBwdXJwb3Nlcy4KCUNvbW1lbnQgb3V0IHVzZSBvZiBgb3JpZ2luJy4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgaGlkZGVuIGJ1ZwoJd2hlcmUgb3V0bGluZSBzaGlmdGluZyB3YXNuJ3QgY29ycmVjdGx5IHVuZG9uZSBhZnRlciBiaXRtYXAKCXJhc3Rlcml6YXRpb24uICBUaGlzIGNyZWF0ZWQgcHJvYmxlbXMgd2l0aCBjZXJ0YWluIGdseXBocyAobGlrZSAnIicKCW9mIGNlcnRhaW4gZm9udHMpIGFuZCB0aGUgY2FjaGUgc3lzdGVtLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogRml4IHR5cG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfaW5pdCk6IEZpeCB0eXBvLgoJKHBzMl9oaW50c19hcHBseSk6IFNtYWxsIGZpeC4KCjIwMDEtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfaW5pdCksCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyosIHNyYy9jYWNoZS8qOgoJWWV0IGFub3RoZXIgbWFzc2l2ZSByZXdyaXRlIG9mIHRoZSBjYWNoaW5nIHN1Yi1zeXN0ZW0gaW4gb3JkZXIgdG8KCWJvdGggaW5jcmVhc2UgcGVyZm9ybWFuY2UgYW5kIGFsbG93IHNpbXBsZXIgY2FjaGUgc3ViLWNsYXNzaW5nLiAgQXMKCWFuIGV4YW1wbGUsIHRoZSBjb2RlIGZvciB0aGUgaW1hZ2UgYW5kIHNiaXQgY2FjaGVzIGlzIG5vdyBtdWNoCglzaW1wbGVyLgoKCUkgc3RpbGwgbmVlZCB0byB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gaW4KCXd3dy9mcmVldHlwZTIvZG9jcy9jYWNoZS5odG1sIHRvIHJlZmxlY3QgdGhlIG5ldyBkZXNpZ24gdGhvdWdoLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfQ0FDSEVfQ0hBUk1BUF9IKTogTmV3CgltYWNyby4KCShGVF9DQUNIRV9JTlRFUk5BTF9DQUNIRV9IKTogVXBkYXRlZC4KCjIwMDEtMTItMDUgIERhdmlkIEtyYXVzZSAgPGZyZWV0eXBlQGRhdmlka3JhdXNlLmNvbT4KCgkqIGRvY3MvbGljZW5zZS50eHQ6IHMvWCBXaW5kb3dzL1ggV2luZG93IFN5c3RlbS8uCgoyMDAxLTEyLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IEZpeCBkZWZpbml0aW9uIGNvbmRpdGlvbiBvZiBNRU1fU2V0KCkuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChNX1kpOiBDaGFuZ2UgdmFsdWUgdG8gMTkyLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfZGVzdHJveSk6IEZpeCBwcmludGYoKSBwYXJhbWV0ZXIuCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoZnRjX2ltYWdlX25vZGVfaW5pdCwKCWZ0Y19pbWFnZV9ub2RlX2NvbXBhcmUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfd2VpZ2h0KTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGUuCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoTUVNX1NldCk6IE1vdmUgZGVmaW5pdGlvbiBkb3duIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlIFVOVVNFRCgpIHRvCglhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHRhYmxlTmFtZXMpOiBVc2UgYGNvbnN0Jy4KCShwY2ZfcmVhZF9UT0MpOiBDaGFuZ2UgY291bnRlciBuYW1lIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCglVc2UgYGNvbnN0Jy4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19oaW50c19jbG9zZSk6IFJlbW92ZSByZWR1bmRhbnQKCWRlY2xhcmF0aW9uLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBSZW5hbWUgdmFyaWFibGVzCgl0byBhdm9pZCBzaGFkb3dpbmcuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmg6IFJlbW92ZSBkb3VibGUgZGVjbGFyYXRpb25zIG9mIGBUMV9TaXplX0luaXQoKScKCWFuZCBgVDFfU2l6ZV9Eb25lKCknLgoKMjAwMS0xMS0yMCAgQW50b2luZSBMZWNhICA8YW50b2luZWxlY2FAbXVsdGltYW5pYS5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IEFkZGVkIHNvbWUgbmV3IE1pY3Jvc29mdCBsYW5ndWFnZQoJY29kZXMgYW5kIExDSURzIGFzIGZvdW5kIGluIE1TRE4gKFBhc3Nwb3J0IFNESykuICBBbHNvIGFkZGVkCgljb21tZW50cyBhYm91dCB0aGUgbWVhbmluZyBvZiBiaXQgNTcgb2YgdGhlIGBPUy8yJyB0YWJsZQoJKFRUX1VDUl9TVVJST0dBVEVTKSB3aGljaCAod2l0aCBPcGVuVHlwZSB2LjEuMykgbm93IG1lYW5zICJ0aGVyZSBpcwoJYSBjaGFyYWN0ZXIgYmV5b25kIDB4RkZGRiBpbiB0aGlzIGZvbnQiLiAgVGhhbmtzIHRvIERldGxlZiBX/HJrbmVyCgk8VGV0aVNvZnRAYXBnLmxhaG4uZGU+IGZvciBub3RpY2luZyB0aGlzLgoKMjAwMS0xMS0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3twc2hhbGdvMi5jLCBwc2hhbGdvMS5jfTogRml4ZWQgc3R1cGlkIGJ1ZyBpbiBzb3J0aW5nCglyb3V0aW5lIHRoYXQgY3JlYXRlZCBuYXN0eSBhbGlnbm1lbnQgYXJ0ZWZhY3RzLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jLCB0ZXN0cy9ndmlldy5jOiBEZWJ1Z2dpbmcgdXBkYXRlcy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBEZS1hY3RpdmF0ZWQgZXhwZXJpbWVudGFsIGdhbW1hIHN1cHBvcnQuCglBcHBhcmVudGx5LCBgb3B0aW1hbCcgZ2FtbWEgdGFibGVzIGRlcGVuZCBvbiB0aGUgbW9uaXRvciB0eXBlLAoJcmVzb2x1dGlvbiBhbmQgZ2VuZXJhbCBrYXJtYSwgc28gaXQncyBiZXR0ZXIgdG8gY29tcHV0ZSB0aGVtIG91dHNpZGUKCW9mIHRoZSByYXN0ZXJpemVyIGl0c2VsZi4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgYHZvbGF0aWxlJyBrZXl3b3JkLgoKMjAwMS0xMC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBleHBlcmltZW50YWwgYGdhbW1hJyBzdXBwb3J0LiAgVGhpcyBwcm9kdWNlcyBzbW9vdGhlciBnbHlwaHMKCWF0IHNtYWxsIHNpemVzIGZvciB2ZXJ5IGxpdHRsZSBjb3N0LgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2luaXRfZ2FtbWEpOiBOZXcgZnVuY3Rpb24uCgkoZ3JheV9yYXN0ZXJfbmV3KTogVXNlIGl0LgoKCVZhcmlvdXMgZml4ZXMgdG8gdGhlIGF1dG8taGludGVyLiAgVGhleSBtZXJlbHkgaW1wcm92ZSB0aGUgb3V0cHV0IG9mCglzYW5zLXNlcmlmIGZvbnRzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzdGlsbCBwcm9ibGVtcyB3aXRoIHNlcmlmZWQKCWZvbnRzIGFuZCBjb21wb3NpdGVzIChhY2NlbnRlZCBjaGFyYWN0ZXJzKS4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCwKCWFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IEltcGxlbWVudCBpdC4KCUZpeCB0eXBvcy4KCShhaF9vdXRsaW5lX3NhdmUsIGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cyk6IEZpeCB0eXBvcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9zZXJpZl9lZGdlKTogTmV3IGFyZ3VtZW50CglgdmVydGljYWwnLiAgSW1wbGVtZW50IGltcHJvdmVtZW50LgoJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX2hpbnRfZWRnZXMpOiBJbXBsZW1lbnQgaXQuCglGaXggdHlwb3MuCgkoYWhfaGludGVyX2FsaWduX3N0cm9uZ19wb2ludHMsIGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IEZpeAoJdHlwb3MuCgkoYWhfaGludGVyX2xvYWQpOiBTZXQgYGFoX2RlYnVnX2hpbnRlcicgaWYgREVCVUdfSElOVEVSIGlzIGRlZmluZWQuCgkqIHNyYy9hdXRvaGludC9haG1vZHVsZS5jOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgREVCVUdfSElOVEVSIG1hY3JvLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oOiBEaXR0by4KCShBSF9IaW50ZXIpOiBSZW1vdmUgYGRpc2FibGVfaG9yel9lZGdlcycgYW5kIGBkaXNhYmxlX3ZlcnRfZWRnZXMnCgkobWFraW5nIHRoZW0gZ2xvYmFsIGFzIGBhaF9kZWJ1Z19kaXNhYmxlX2hvcnonIGFuZAoJYGFoX2RlYnVnX2Rpc2FibGVfdmVydCcpLgoJRml4IHR5cG9zLgoKCSogdGVzdHMvZ3ZpZXcuYzogVXBkYXRlZCB0aGUgZGVidWdnaW5nIGdseXBoIHZpZXdlciB0byBzaG93IHRoZQoJaGludHMgZ2VuZXJhdGVkIGJ5IHRoZSAiYXV0b2hpbnQiIG1vZHVsZS4KCjIwMDEtMTAtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjaHVuay5jIChmdGNfY2h1bmtfY2FjaGVfbG9va3VwKTogRml4ZWQgYSBidWcgdGhhdAoJY29uc2lkZXJhYmx5IGxvd2VyZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBhYnN0cmFjdCBjaHVuayBjYWNoZS4KCjIwMDEtMTAtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyouaCwKCXNyYy9jYWNoZS8qLmM6IE1ham9yIHJlLWRlc2lnbiBvZiB0aGUgY2FjaGUgc3ViLXN5c3RlbSB0byBwcm92aWRlCgliZXR0ZXIgcGVyZm9ybWFuY2UgYXMgd2VsbCBhcyBhbiAiQWNxdWlyZSIvIlJlbGVhc2UiIEFQSS4gIFNlZW1zIHRvCgl3b3JrIHdlbGwgaGVyZSwgYnV0IHByb2JhYmx5IG5lZWRzIGEgYml0IG1vcmUgdGVzdGluZy4KCjIwMDEtMTAtMjYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCgkqIGJ1aWxkcy9tYWMvUkVBRE1FOiBVcGRhdGVkIHRvIHJlZmxlY3QgbXkgdGFraW5nIG92ZXIgdGhlIHByb2plY3QKCWFuZCB0aGF0IGlzIG5vdyBiZWluZyBhY3RpdmVseSBtYWludGFpbmVkLgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocGFyc2VfZm9uZCk6IEFwcGxpZWQgcGF0Y2hlcyBmcm9tIFBhdWwgTWlsbGVyCgk8cGF1bG1AcHJvZm91bmRlZmZlY3RzLmNvbT4gdG8gc3VwcG9ydCBsb2FkaW5nIGEgZmFjZSBvdGhlciB0aGFuIHRoZQoJZmlyc3QgZnJvbSBhIEZPTkQgcmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogVXBkYXRlZC4KCjIwMDEtMTAtMjUgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCgkqIGJ1aWxkcy9tYWMvZnRsaWIucHJqOiBVcGRhdGUgb2YgQ29kZVdhcnJpb3IgcHJvamVjdCBmaWxlIGZvciBNYWMKCU9TIGZvciBsYXRlc3QgdmVyc2lvbiAoNykgb2YgQ1dQcm8gYW5kIGZvciByZWNlbnQgY2hhbmdlcyB0byB0aGUgRlQKCXNvdXJjZSB0cmVlLgoKMjAwMS0xMC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogVXBkYXRlZCBjb21tZW50cyB0byBleHBsYWluCglwcmVjaXNlbHkgaG93IHRvIHVzZSBwcm9qZWN0LXNwZWNpZmljIG1hY3JvIGRlZmluaXRpb25zIHdpdGhvdXQKCW1vZGlmeWluZyB0aGlzIGZpbGUgbWFudWFsbHkuCgoJKEZUX0NPTkZJR19GT1JDRV9JTlQ2NCk6IERlZmluZS4KCgkoRlRfREVCVUdfTUVNT1JZKTogTmV3IG1hY3JvLgoKMjAwMS0xMC0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnkpOiBBZGRlZCBhIG1pc3NpbmcgYHsnLgoKMjAwMS0xMC0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBzcmMvYmFzZS9mdGRiZ21lbS5jOgoJSW1wcm92ZW1lbnRzIHRvIHRoZSBtZW1vcnkgZGVidWdnZXIgdG8gcmVwb3J0IG1vcmUgaW5mb3JtYXRpb24gaW4KCWNhc2Ugb2YgZXJyb3JzLiAgQWxzbywgc29tZSBhbGxvY2F0aW9ucyB0aGF0IG9jY3VyZWQgdGhyb3VnaCBSRUFMTE9DCgljb3VsZG4ndCBiZSBwcmV2aW91c2x5IGNhdGNoZWQgY29ycmVjdGx5LgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzLAoJYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKSwgc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19uZXcpLAoJc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NwYW4sIGdyYXlfcmFzdGVyX25ldyk6IFJlcGxhY2VkCglsaWJlcmFsIHVzZXMgb2YgbWVtc2V0KCkgYnkgdGhlIE1FTV9TZXQoKSBtYWNyby4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoVXBkYXRlKTogUmVtb3ZlZCB0byBiZSBpbmxpbmVkIGluIC4uLgoJKFNvcnQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJYnVpbGRzL3Ztcy9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvYW1pZ2EvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJc3JjL2Jhc2UvZnRkYmdtZW0uYzogVXBkYXRlZCB0aGUgbWVtb3J5IGRlYnVnZ2VyIGFuZAoJcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIG9mIGBmdHN5c3RlbScgaW4gb3JkZXIgdG8gYmUgYWJsZQoJdG8gZGVidWcgbWVtb3J5IGFsbG9jYXRpb25zIG9uIFVuaXgsIFZNUyBhbmQgQW1pZ2EgdG9vIQoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9yZWNvcmRfbWFzayk6IFJlbW92ZWQKCXNvbWUgYm9ndXMgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglNb2RpZmllZCB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHRvIHJlcG9ydCB0aGUgbG9jYXRpb24gKHNvdXJjZQoJZmlsZSBuYW1lICsgbGluZSBudW1iZXIpIHdoZXJlIGxlYWtlZCBtZW1vcnkgYmxvY2tzIGFyZSBhbGxvY2F0ZWQgaW4KCXRoZSBzb3VyY2UgZmlsZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6IE5ldyBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIuICBZb3UgbXVzdAoJZGVmaW5lIHRoZSBGVF9ERUJVR19NRU1PUlkgbWFjcm8gaW4gImZ0b3B0aW9uLmgiIHRvIGVuYWJsZSBpdC4gIEl0Cgl3aWxsIHJlY29yZCBldmVyeSBtZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGFuZCByZXBvcnQgc2ltcGxlIGVycm9ycwoJbGlrZSBtZW1vcnkgbGVha3MgYW5kIGRvdWJsZSBkZWxldGVzLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogSW5jbHVkZSBmdGRiZ21lbS4KCSogc3JjL2Jhc2UvcnVsZXMubWs6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBmdGRiZ21lbS5jLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQWRkZWQgdGhlIEZUX0RFQlVHX01FTU9SWQoJbWFjcm8gZGVmaW5pdGlvbi4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KTogTW9kaWZpZWQgdGhlCgliYXNlIGNvbXBvbmVudCB0byB1c2UgdGhlIGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlciB3aGVuIHRoZSBtYWNybwoJRlRfREVCVUdfTUVNT1JZIGlzIGRlZmluZWQuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHN1YmZvbnRzIGFycmF5IG9ubHkgaWYKCXdlIGFyZSB3b3JraW5nIHdpdGggYSBDSUQga2V5ZWQgQ0ZGIGZvbnQuICBPdGhlcndpc2UsIGEgdmFyaWFibGUKCXRoYXQgd2FzIG5ldmVyIGFsbG9jYXRlZCBtZW1vcnkgbWlnaHQgZnJlZWQuICBUaGlzIGlzIGEgY29ycmVjdGlvbgoJdG8gdGhlIHByZXZpb3VzIHBhdGNoIGZvciBmcmVlaW5nIHN1YmZvbnRzLgoKMjAwMS0xMC0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfRG9uZV9Gb250KTogRnJlZSB0aGUgc3ViZm9udHMgYXJyYXkgdG8KCWF2b2lkIGEgbWVtb3J5IGxlYWsuCgoyMDAxLTEwLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2RlcwoJKGluIG11bHRpLW9iamVjdCBjb21waWxhdGlvbiBtb2RlLCBtYWlubHkpLgoKMjAwMS0xMC0yMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3VyZQoJdGhhdCBjdXN0b20gZW5jb2RpbmdzIChpLmUuLCBuZWl0aGVyIFN0YW5kYXJkRW5jb2Rpbmcgbm9yCglFeHBlcnRFbmNvZGluZykgYXJlIG5vdCBsb2FkZWQgdHdpY2Ugd2hlbiB0aGUgVHlwZSAxIGZvbnQgaXMKCXN5bnRoZXRpYy4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9zdWJycyk6IEFkZGVkIGEgdGVzdAoJZm9yIHdoZW4gbG9hZGluZyBzeW50aGV0aWMgZm9udHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZvbnQgbmFtZQoJYW5kIHN1YnJvdHVpbmVzIGFyZSBub3QgbG9hZGVkIHR3aWNlLiAgVGhpcyBpcyB0byByZW1vdmUgYSBtZW1vcnkKCWxlYWsgdGhhdCBvY2N1cmVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsIG1lbW9yeSBibG9ja3MgZm9yIHRoZXNlCglvYmplY3RzIHdlcmUgbm90IGRlYWxsb2NhdGVkIHdoZW4gdGhlIG9iamVjdHMgd2VyZSBwYXJzZWQgdGhlCglzZWNvbmQgdGltZS4KCjIwMDEtMTAtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYzogR2V0dGluZyByaWQgb2YKCWNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BzaGludGVyL21vZHVsZS5taywgc3JjL3BzaGludGVyL3J1bGVzLm1rOiBBZGRpbmcgY29udHJvbAoJZmlsZXMgdG8gYnVpbGQgdGhlIFBvc3RTY3JpcHQgaGludGVyIHdpdGggdGhlICJvbGQiIGJ1aWxkIHN5c3RlbS4KCjIwMDEtMTAtMTkgIEphY29iIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBkZXNjcmlwLm1tcywgc3JjL3BzaGludGVyL2Rlc2NyaXAubW1zOiBVcGRhdGVzIHRvIHRoZSBWTVMgYnVpbGQKCWZpbGVzLgoKMjAwMS0xMC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaCwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFJld3JvdGUgdGhlCgkiZ2xuYW1lcy5weSIgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlICJwc3RhYmxlcy5oIiBoZWFkZXIgZmlsZS4KCVRoZSBvbGQgb25lIGNvbnRhaW5lZCBhIHNlcmlvdXMgYnVnIHRoYXQgbWFkZSBGcmVlVHlwZSByZXR1cm4KCWluY29ycmVjdCBnbHlwaCBuYW1lcyBmb3IgY2VydGFpbiBnbHlwaHMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBDaGFuZ2luZyBjb21wdXRhdGlvbiBvZgoJcGl4ZWwgc2l6ZSBmcm9tIGNoYXJhY3RlciBzaXplIHRvIHVzZSByb3VuZGluZy4gIFRoaXMgaXMgYW4KCWV4cGVyaW1lbnQgdG8gc2VlIHdoZXRoZXIgdGhpcyBnaXZlcyB2YWx1ZXMgc2ltaWxhciB0byBXaW5kb3dzIGZvcgoJc2NhbGVkIGFzY2VudC9kZXNjZW50L2V0Yy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXY2NGJ5MzIpOiBDaGFuZ2VkIHRoZSBpbXBsZW1lbnRhdGlvbgoJc2xpZ2h0bHkgc2luY2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pcy1jb21waWxlZCBvbiBNYWMgbWFjaGluZXMKCXVzaW5nIHRoZSBNUFcgQyBjb21waWxlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZWFsbG9jKTogV2hlbiBhIG1lbW9yeSBibG9jayB3YXMgZ3Jvd24KCXRocm91Z2ggRlRfUmVhbGxvYygpLCB0aGUgbmV3IGJ5dGVzIHdlcmUgbm90IHNldCB0byAwLCB3aGljaCBjcmVhdGVkCglzb21lIHN0cmFuZ2UgYnVncyBpbiB0aGUgUG9zdFNjcmlwdCBoaW50ZXIuCgkoZGVzdHJveV9mYWNlKTogRG9uJ3QgZGVhbGxvY2F0ZSB1bmNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Db21wdXRlX01heF9BZHZhbmNlLCBDSURfTG9hZF9HbHlwaCk6CglBZGRpbmcgc3VwcG9ydCB0byBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFsLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9wc2hpbnRlci9KYW1maWxlLAoJc3JjL3BzaGludGVyL3BzaGFsZ28uaCwgc3JjL3BzaGludGVyL3BzaGFsZ28xLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jLAoJc3JjL3BzaGludGVyL3BzaG1vZC5jLCBzcmMvcHNoaW50ZXIvcHNobW9kLmgsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuaDogQWRkaW5nIG5ldyBQb3N0U2NyaXB0IGhpbnRlciBtb2R1bGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgsIHNyYy9wc2F1eC9wc29ianMuYywKCXNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmgsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoJc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MW9ianMuaDogVXBkYXRlcyB0byB1c2UgdGhlIG5ldyBQb3N0U2NyaXB0IGhpbnRlci4KCgkqIHRlc3RzL0phbWZpbGUsIHRlc3RzL2d2aWV3LmM6IEFkZGluZyBhIG5ldyBnbHlwaCBoaW50aW5nCgl2aWV3ZXIvZGVidWdnZXIgdG8gdGhlIHNvdXJjZSB0cmVlLiAgTm90ZSB0aGF0IHlvdSB3aWxsIF9ub3RfIGJlCglhYmxlIHRvIGNvbXBpbGUgaXQgc2luY2UgaXQgZGVwZW5kcyBvbiBhbiB1bmF2YWlsYWJsZSBncmFwaGljcwoJbGlicmFyeSBuYW1lZCAiTmlydmFuYSIgdG8gcmVuZGVyIHZlY3RvciBpbWFnZXMuCgoyMDAxLTEwLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEFkZGluZyBhIG5ldyBmdW5jdGlvbiBuYW1lZAoJJ0ZUX0dldF9Qb3N0c2NyaXB0X05hbWUnIHRvIHJldHJpZXZlIHRoZSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbgoJZm9udC4gIFNob3VsZCB3b3JrIHdpdGggYWxsIGZvcm1hdHMgZXhjZXB0IHB1cmUgQ0ZGL0NFRiBmb250cyAodGhpcwoJd2lsbCBiZSBhZGRlZCBzb29uKS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKENJRF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShTRk5UX0dldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9wc19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKEdldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC41IHJlbGVhc2UuCgoyMDAxLTEwLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgYSBidWcgaW4gYGdsbmFtZXMucHknIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZ2VuZXJhdGluZwoJY29ycmVjdCBnbHlwaCBuYW1lcyB0YWJsZXMuICBUaGlzIHJlc3VsdGVkIGluIHRoZSB1bmF2YWlsYWJpbGl0eSBvZgoJY2VydGFpbiBnbHlwaHMgbGlrZSBgQ2FjdXRlJywgYGNhY3V0ZScgYW5kIGBsc2xhc2gnIGluIFVuaWNvZGUKCWNoYXJtYXBzLCBldmVuIGlmIHRoZXNlIHdlcmUgcHJlc2VudCBpbiB0aGUgZm9udCAoY2F1c2luZyBwcm9ibGVtcwoJZm9yIFBvbGlzaCB1c2VycykuCgoJKiBzcmMvdG9vbHMvZ2xuYW1lcy5weSAobWFjX3N0YW5kYXJkX25hbWVzKTogRml4ZWQuCgkodDFfc3RhbmRhcmRfc3RyaW5ncyk6IFNvbWUgZml4ZXMgYW5kIHJlbmFtZWQgdG8gLi4uCgkoc2lkX3N0YW5kYXJkX25hbWVzKTogVGhpcy4KCSh0MV9leHBlcnRfZW5jb2RpbmcpOiBGaXhlZC4KCSh0aGVfYWRvYmVfZ2x5cGhfbGlzdCk6IFJlbmFtZWQgdG8gLi4uCgkoYWRvYmVfZ2x5cGhfbmFtZXMpOiBUaGlzLgoJKHRoZV9hZG9iZV9nbHlwaHMpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX3ZhbHVlcyk6IFRoaXMuCgkoZHVtcF9tYWNfaW5kaWNlcywgZHVtcF9nbHlwaF9saXN0LCBkdW1wX3VuaWNvZGVfdmFsdWVzLCBtYWluKToKCVVwZGF0ZWQuCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU19Vbmljb2RlX1ZhbHVlKTogRml4IG9mZnNldC4KCUZpeCByZXR1cm4gdmFsdWUuCglVc2UgYHNpZF9zdGFuZGFyZF90YWJsZScgYW5kIGBwc19uYW1lc190b191bmljb2RlJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJyBhbmQgYG5hbWVzX3RvX3VuaWNvZGUnLgoJKFBTX01hY2ludG9zaF9OYW1lKTogVXNlIGBwc19nbHlwaF9uYW1lcycgaW5zdGVhZCBvZgoJYHN0YW5kYXJkX2dseXBoX25hbWVzJy4KCShQU19TdGFuZGFyZF9TdHJpbmdzKTogVXNlIGBzaWRfc3RhbmRhcmRfbmFtZXMnIGluc3RlYWQgb2YKCWB0MV9zdGFuZGFyZF9nbHlwaHMnLgoKCSogZG9jL0JVR1MsIGRvYy9UT0RPOiBOZXcgZG9jdW1lbnRzLgoKMjAwMS0xMC0wNyAgUmljaGFyZCBCYXJiZXIgIDxyaWNoQHNvbHV0aW9udWsuY29tPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydV9Mb29rdXBfTm9kZSk6IEZpeGVkIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb3JyZWN0IExSVSBiZWhhdmlvdXIuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJc2V0am1wKCkgYW5kIGxvbmdqbXAoKSBhcmUgbm93IHVzZWQgZm9yIHJvbGxiYWNrIChpLmUuIHdoZW4gbWVtb3J5Cglwb29sIG92ZXJmbG93IG9jY3VycykuCgoJRnVuY3Rpb24gbmFtZXMgYXJlIG5vdyBhbGwgdW5pZm9ybWx5IHByZWZpeGVkIHdpdGggYGdyYXlfJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBJbmNsdWRlIDxzZXRqbXAuaD4uCgkoRXJyUmFzdGVyX01lbW9yeU92ZXJmbG93KTogTmV3IG1hY3JvLgoJKFRBcmVhKTogTmV3IHR5cGUgdG8gc3RvcmUgYXJlYSB2YWx1ZXMgaW4gZWFjaCBjZWxsICh1c2luZyBgaW50JyB3YXMKCXRvbyBzbWFsbCBvbiAxNi1iaXQgc3lzdGVtcykuICA8bGltaXRzLmg+IGlzIGluY2x1ZGVkIHRvIHByb3Blcmx5CglnZXQgdGhlIG5lZWRlZCBkYXRhIHR5cGUuCgkoVENlbGwsIFRSYXN0ZXIpOiBVc2UgaXQuCgkoVFJhc3Rlcik6IE5ldyBlbGVtZW50IGBqdW1wX2J1ZmZlcicuCgkoZ3JheV9jb21wdXRlX2Nib3gpOiBVc2UgYFJBU19BUkcnIGFzIHRoZSBvbmx5IHBhcmFtZXRlciBhbmQgZ2V0Cglgb3V0bGluZScgZnJvbSBpdC4KCShncmF5X3JlY29yZF9jZWxsKTogVXNlIGxvbmdqbXAoKS4KCShncmF5X3NldF9jZWxsKTogVXNlIGdyYXlfcmVjb3JkX2NlbGwoKSBmb3IgZXJyb3IgaGFuZGxpbmcuCgkoZ3JheV9yZW5kZXJfbGluZSwgZ3JheV9yZW5kZXJfY29uaWMsIGdyYXlfcmVuZGVyX2N1YmljKTogU2ltcGxpZnkuCgkoZ3JheV9jb252ZXJ0X2dseXBoX2lubmVyKTogTmV3IGZ1bmN0aW9uLCB1c2luZyBzZXRqbXAoKS4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgaXQuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUHJvdmlkZSBhIHB1YmxpYyBBUEkgdG8gbWFuYWdlIG11bHRpcGxlIHNpemUgb2JqZWN0cyBmb3IgYSBnaXZlbgoJRlRfRmFjZSBpbiB0aGUgbmV3IGhlYWRlciBmaWxlIGBmdHNpemVzLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHNpemVzLmg6IE5ldyBoZWFkZXIgZmlsZSwKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogVXNlIGl0LgoJUmVtb3ZlIGRlY2xhcmF0aW9ucyBvZiBGVF9OZXdfU2l6ZSBhbmQgRlRfRG9uZV9TaXplIChtb3ZlZCB0bwoJZnRzaXplcy5oKS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU0laRVNfSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0FjdGl2YXRlX1NpemUpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jOiBJbmNsdWRlIGZ0c2l6ZXMuaC4KCShmdGNfbWFuYWdlcl9pbml0X3NpemUsIGZ0Y19tYW5hZ2VyX2ZsdXNoX3NpemUpOiBVc2UKCUZUX0FjdGl2YXRlX1NpemUuCgoyMDAxLTA5LTIwICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhLyo6IEFkZGVkIHBvcnQgdG8gQW1pZ2Egd2l0aCB0aGUgU0FTL0MgY29tcGlsZXIuCgoyMDAxLTA5LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX0RvbmVfQUZNKTogRnJlZSBgYWZtJy4KCjIwMDEtMDktMTAgIFlhbyBaaGFuZyAgPHl6aGFuZ0BzaGFyZW1lZGlhLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX2luZGV4Mik6IEhhbmRsZSBjb2RlIHZhbHVlcyB3aXRoCgloaS1ieXRlID09IDAgY29ycmVjdGx5LgoKMjAwMS0wOS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2xpbmstc3RkLm1rICgkKFBST0pFQ1RfTElCUkFSWSkpOiBGaXggdHlwby4KCjIwMDEtMDgtMzAgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQSBuZXcgd2F5IHRvIGNvbXB1dGUgdGhlCgl1bml0cyBwZXIgRU0gd2l0aCBncmVhdGVyIGFjY3VyYWN5IChpbXBvcnRhbnQgZm9yIGVtYmVkZGVkIFQxIGZvbnRzCglpbiBQREYgZG9jdW1lbnRzIHRoYXQgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIFRydWVUeXBlCglvbmVzKS4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBOb3cgc3VwcG9ydHMgIisiIGluIGZvbnQgbmFtZXM7Cgl0aGlzIGlzIHVzZWQgaW4gZW1iZWRkZWQgZm9udHMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCk6IEZpeGVkIGEgcmVhbGxvY2F0aW9uIGJ1ZyB0aGF0CglnZW5lcmF0ZWQgYSBkYW5nbGluZyBwb2ludGVyIHJlZmVyZW5jZS4KCjIwMDEtMDgtMzAgIEFudGhvbnkgRmVpayAgPGFmZWlja0Bob3RtYWlsLmNvbT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9SZWFkX0FmbSk6IE5vdyBjb3JyZWN0bHkgc2V0cyB0aGUgZmxhZwoJRlRfRkFDRV9GTEFHX0tFUk5JTkcgd2hlbiBhcHByb3ByaWF0ZSBmb3IgVHlwZTEgKyBBRk0gZmlsZXMuCgoyMDAxLTA4LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9DTWFwKTogRml4IGZyYW1lIGxlbmd0aCBvZgoJYGNtYXBfcmVjX2ZpZWxkcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTXToKCVVuZGVmaW5lIEZUX0VSUl9CQVNFIGJlZm9yZSBkZWZpbmluZyBhZ2Fpbi4KCjIwMDEtMDgtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5oOiBGaXggcHJvdG90eXBlIG9mIFRUX01vdmVfRnVuYy4KCjIwMDEtMDgtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9kb3MvZG9zLWRlZi5tayAoTk9fT1VUUFVUKTogRG9uJ3QgdXNlIGAmPicgYnV0IGA+Jy4KCjIwMDEtMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IENoYW5nZWQgdGhlIGRlZmF1bHQgc2V0dGluZwoJZm9yIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgdG8gdW5kZWZpbmVkLCBzaW5jZSBpdCBicmVha3MKCXNvdXJjZSBjb21wYXRpYmlsaXR5IGluIGEgZmV3IGNhc2VzLiAgVXBkYXRlZCB0aGUgY29tbWVudCB0byBleHBsYWluCgl0aGF0IHRvby4KCjIwMDEtMDgtMTcgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogRml4ZWQgc2VyaW91cyB0eXBvLgoKMjAwMS0wOC0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIE9wZW5UeXBlIDEuMy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9DTWFwMCwgVFRfQ01hcDIsIFRUX0NNYXA0LAoJVFRfQ01hcDYpOiBBZGRpbmcgZmllbGQgYGxhbmd1YWdlJy4KCShUVF9DTWFwVGFibGUpOiBSZW1vdmluZyBmaWVsZCBgbGFuZ3VhZ2UnLgoJVHlwZSBvZiBgbGVuZ3RoJyBmaWVsZCBjaGFuZ2VkIHRvIEZUX1VMb25nLgoJQWRkaW5nIGZpZWxkcyBmb3IgY21hcHMgZm9ybWF0IDgsIDEwLCBhbmQgMTIuCgkoVFRfQ01hcEdyb3VwKTogTmV3IGF1eGlsaWFyeSBzdHJ1Y3R1cmUuCgkoVFRfQ01hcDhfMTIsIFRUX0NNYXAxMCk6IE5ldyBzdHJ1Y3R1cmVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXIsIFRUX1ZlcnRIZWFkZXIpOgoJUmVtb3ZlZCBsYXN0IGVsZW1lbnQgb2YgYFJlc2VydmVkJyBhcnJheS4KCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oIChUVF9QTEFURk9STV9DVVNUT00sIFRUX01TX0lEX1VDU180LAoJVFRfTkFNRV9JRF9DSURfRklOREZPTlRfTkFNRSk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ2hhck1hcF9Mb2FkKTogVXBkYXRlZCBsb2FkaW5nIG9mIGBsYW5ndWFnZScKCWZpZWxkIHRvIHRoZSBuZXcgc3RydWN0dXJlcy4KCUZpeGVkIGZyZWVpbmcgb2YgYXJyYXlzIGluIGNhc2Ugb2YgdW5zdWNjZXNzZnVsIGxvYWRzLgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMiBjbWFwcy4KCShUVF9DaGFyTWFwX0ZyZWUpOiBBZGRlZCBzdXBwb3J0IGZvciBmcmVlaW5nIGZvcm1hdCA4LCAxMCwgYW5kIDEyCgljbWFwcy4KCShjb2RlX3RvX2luZGV4NCk6IFNtYWxsIGltcHJvdmVtZW50LgoJKGNvZGVfdG9faW5kZXg2KTogRGl0dG8uCgkoY29kZV90b19pbmRleDhfMTIsIGNvZGVfdG9faW5kZXgxMCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01ldHJpY3NfSGVhZGVyKTogVXBkYXRlZCB0byBuZXcKCXN0cnVjdHVyZS4KCShUVF9Mb2FkX0NNYXApOiBEaXR0by4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9lbmNvZGluZ3MpOiBBZGQgTVMgVUNTNCB0YWJsZSAoYmVmb3JlIE1TCglVbmljb2RlKS4KCjIwMDEtMDgtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0wOC0wOSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogUmVuYW1lZCB0bwoJY2ZmX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCgkoY2ZmX2dldF9nbHlwaF9pbmRleCk6IE1pbm9yIGRvY3VtZW50YXRpb24gY2hhbmdlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uIHVzZWQgaW4KCUdldF9JbnRlcmZhY2UgYXMgdGhlIGZ1bmN0aW9uIHJldHVybmVkIHdoZW4gdGhlICJuYW1lX2luZGV4IgoJZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCShnZXRfdDFfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8gdDFfZ2V0X2dseXBoX25hbWUgZm9yIGNvbnNpc3RlbmN5LgoKMjAwMS0wOC0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBSZW1vdmVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cyB0byBjZmZsb2FkLmguCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkZWQgZGVmaW5pdGlvbnMgb2YgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQsCgljZmZfZXhwZXJ0X2NoYXJzZXQsIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldCwgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLAoJYW5kIGNmZl9leHBlcnRfZW5jb2RpbmcgYXJyYXlzLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBOZXcgZnVuY3Rpb24sIHJldHVybmVkCgl3aGVuIGBjZmZfZ2V0X2ludGVyZmFjZScgaXMgY2FsbGVkIHdpdGggYSByZXF1ZXN0IGZvciB0aGUKCSJuYW1lX2luZGV4IiBmdW5jdGlvbi4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBNb2RpZmllZCBzbyB0aGF0IGl0IHJldHVybnMgdGhlIGZ1bmN0aW9uCglgY2ZmX2dldF9uYW1lX2luZGV4JyB3aGVuIHRoZSAibmFtZV9pbmRleCIgZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OYW1lX0luZGV4KTogTmV3IGZ1bmN0aW9uLCB1c2VkIHRvCglyZXR1cm4gYSBnbHlwaCBpbmRleCBmb3IgYSBnaXZlbiBnbHlwaCBuYW1lIG9ubHkgaWYgdGhlIGRyaXZlcgoJc3VwcG9ydHMgZ2x5cGggbmFtZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9OYW1lX0luZGV4X1JlcXVlc3Rlcik6CglOZXcgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGRlZmludGlvbiB1c2VkIGluIHRoZSBmdW5jdGlvbgoJRlRfR2V0X05hbWVfSW5kZXguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dldF9OYW1lX0luZGV4KTogQWRkZWQKCWRvY3VtZW50YXRpb24gYW5kIHByb3RvdHlwZS4KCjIwMDEtMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vKjogUmVtb3ZlZC4gIFVzZSB0aGUgdW5peCBzdHVmZiBpbnN0ZWFkLgoKMjAwMS0wNy0yNiAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oIChGVF9DQUxMQkFDS19ERUYpOiBVcGRhdGVkIHRvIGNoYW5nZSBkYXRlZAoJMjAwMS0wNi0yNy4KCjIwMDEtMDctMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfVGFibGUpOiBVc2UgRlRfT2Zmc2V0IGZvcgoJYGN1cnNvcicgYW5kIGBjYXBhY2l0eScuCgkqIHNyYy9wc2F1eC9wc29iamMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IFVzZSBGVF9Mb25nIGZvciBzZWNvbmQKCXBhcmFtZXRlci4KCShQU19UYWJsZV9BZGQpOiBVc2UgRlRfT2Zmc2V0IGZvciBgbmV3X3NpemUnLgoKCUFkZCBzdXBwb3J0IGZvciB2ZXJzaW9uIDAuNSBtYXhwIHRhYmxlcy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01heFByb2ZpbGUpOiBJbXBsZW1lbnQgaXQuCgkoVFRfTG9hZF9PUzIpOiBJbml0aWFsaXplIHNvbWUgdmFsdWVzLgoKMjAwMS0wNy0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIGZ0Y2FsYy5oIHVuY29uZGl0aW9uYWxseS4KCjIwMDEtMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGludGVycC5jLCBzcmMvcGNmL3BjZnJlYWQ6CglSZW1vdmVkIHBlZGFudGljIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIGJ5dGVjb2RlIGludGVycHJldGVyIGlzCgljb21waWxlZCBpbi4KCjIwMDEtMDctMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYGVkZ2VzJy4KCShhaF9oaW50ZXJfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGBvbGRfd2lkdGgnIGFuZAoJYG5ld193aWR0aCcuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IFVzZSBgVScgZm9yIGNvbnN0YW50IChhZ2FpbikuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogRGl0dG8uCgoyMDAxLTA2LTI4ICBEYXZpZCBUdXJuZXIgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogTW9kaWZpZWQgdGhlIGRlZmluaXRpb25zCglvZiB0aGUgRlRfR0VUX1hYWFggYW5kIE5FWFRfWFhYWCBtYWNyb3MgZm9yIDE2LWJpdCBjb3JyZWN0bmVzcy4KCjIwMDEtMDYtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvY2lkL2NpZGxvYWQuaCAoY2lkX2RlY3J5cHQpOiBVc2UgRlRfT2Zmc2V0CglpbnN0ZWFkIG9mIEZUX0ludCBhcyB0eXBlIGZvciBgbGVuZ3RoJyBwYXJhbWV0ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNBdXhfSW50ZXJmYWNlKTogVXBkYXRlZC4KCjIwMDEtMDYtMjcgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC9wc29ianMuaCAoVDFfRGVjcnlwdCk6IFVzZSBGVF9PZmZzZXQKCWluc3RlYWQgb2YgRlRfSW50IGFzIHR5cGUgZm9yIGBsZW5ndGgnIHBhcmFtZXRlci4KCgoJKiBWZXJzaW9uIDIuMC40IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDYtMjcgIERhdmlkIFR1cm5lciA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IENoYW5nZWQgdGhlIGRlZmluaXRpb24gb2YgdGhlCglGVF9DQUxMQkFDS19ERUYgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y29uZmlnLmgsIHNyYy8qLyouYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBhbmQKCXVzZSBvZiB0aGUgRlRfQ0FMTEJBQ0tfREVGIG1hY3JvIGluIG9yZGVyIHRvIHN1cHBvcnQgMTYtYml0Cgljb21waWxlcnMuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0tlcm4pOiBUaGUga2VybiB0YWJsZSBsb2FkZXIgbm93IGVuc3VyZXMKCXRoYXQgdGhlIGtlcm5pbmcgdGFibGUgaXMgY29ycmVjdGx5IHNvcnRlZCAoc29tZSBwcm9ibGVtIGZvbnRzIGRvbid0CgloYXZlIGEgY29ycmVjdCBrZXJuIHRhYmxlKS4KCjIwMDEtMDYtMjYgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX0dFVF9PRkYzX0xFKTogRml4IHR5cG8uCgoyMDAxLTA2LTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoZnRfZGl2NjRieTMyKTogRml4ZWQgdGhlIHNvdXJjZSB0byB3b3JrCgljb3JyZWN0bHkgb24gMTYtYml0IHN5c3RlbXMuCgoyMDAxLTA2LTIzICBBbnRob255IEZvayAgPGZva0BkZWJpYW4ub3JnPgoKCSogZGViaWFuLyo6IEFkZGVkIERlYmlhbiBwYWNrYWdlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgMi4wLjQuCgoyMDAxLTA2LTIyICBEYXZpZCBUdXJuZXIgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogQWRkZWQgcGF0ZW50cyBkaXNjbGFpbWVyLiAgVGhpcyBvbmUgd2FzIG1pc3NpbmchCgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvdG9kbzogVXBkYXRlZCBmb3IgdGhlIHVwY29taW5nIDIuMC40IHJlbGVhc2UuCgoyMDAxLTA2LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBBZGQgdHdvIG1vcmUgYEwncyB0bwoJY29uc3RhbnRzLgoJQWRkIG1pc3Npbmcgc2VtaWNvbG9ucy4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tazogRG8gc2ltaWxhciBjaGFuZ2UgYXMgZm9yCglidWlsZHMvdW5peC9kZXRlY3QubWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgdmVyc2lvbiB0byBtYWtlIGl0CgllYXNpZXIgdG8gcmVkZWZpbmUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEaXR0by4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IEFkZCBjYXN0LgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLCBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sOgoJVXBkYXRlZCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IChmb3IgdGhlIDIuMC40IHJlbGVhc2UpLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGRlZCBydWxlIGZvciBBSVggZGV0ZWN0aW9uICh3aGljaCB1c2VzCgkvdXNyL3NiaW4vaW5pdCBpbnN0ZWFkIG9mIC9zYmluL2luaXQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oLCBzcmMvKi8qZXJyKi5oOiBVcGRhdGVkIHNvbWUgb2YgdGhlCgllcnJvciBtYWNyb3MgdG8gc2ltcGxpZnkgaGFuZGxpbmcgb2YgbmV3IGVycm9yIHNjaGVtZS4KCjIwMDEtMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9FUlJPUl9NT0RVTEUpOiBOZXcgbWFjcm8uCgoyMDAxLTA2LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUmVtb3ZpbmcgX2xvdHNfIG9mIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIG1vc3QgcGVkYW50aWMgd2FybmluZwoJbGV2ZWxzIG9mIFZpc3VhbCBDKysgYW5kIEJvcmxhbmQgQysrIGFyZSB1c2VkLiAgVG9vIG1hbnkgZmlsZXMgdG8gYmUKCWxpc3RlZCBoZXJlLCBidXQgRlQyIG5vdyBjb21waWxlcyB3aXRob3V0IHdhcm5pbmdzIHdpdGggVkMrKyBhbmQgdGhlCgkiL1c0IiB3YXJuaW5nIGxldmVsIChsaW50LXN0eWxlKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTmV3X01lbW9yeV9GYWNlKTogVXBkYXRlZAoJZG9jdW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmggKEZUX0JPT0wpOiBOZXcgbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBZGQgI3ByYWdtYSBmb3IgVmlzdWFsIEMrKwoJdG8gc3VwcHJlc3Mgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9HRVRfU0hPUlRfe0JFLExFfSwKCUZUX0dFVF9PRkYzX3tCRSxMRX0sIEZUX0dFVF9MT05HX3tCRSxMRX0pOiBOZXcgbWFjcm9zLgoJKE5FWFRfKik6IFVzZSB0aGVtLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9ERUJVR19ILgoJKEZUX05ld19NZW1vcnlfRmFjZSk6IEFkZCBgY29uc3QnIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1pbm9yIGNsZWFudXBzIHRvIHJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoRlRDX01BWF9CWVRFU19ERUZBVUxUKTogVXNlCglgTCcgZm9yIGNvbnN0YW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9SRU5ERVJfUE9PTF9TSVpFKTogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYpOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9HZXRfQ0JveCk6IFJlbW92ZSBgZXJyb3InIHZhcmlhYmxlLgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChmdF90cmlnX2FyY3Rhbl90YWJsZSk6IFVzZSBgTCcgZm9yIGNvbnN0YW50cy4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfU2l6ZSk6IEZpeCByZXR1cm4gdmFsdWUuCgkoRlRfU2V0X0NoYXJfU2l6ZSwgRlRfU2V0X1BpeGVsX1NpemVzLCBGVF9HZXRfS2VybmluZyk6IFJlbW92ZQoJdW51c2VkIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMsCglhaF9oaW50ZXJfYWxpZ25fZWRnZV9wb2ludHMpOiBSZW1vdmUgdW51c2VkIGBiZWZvcmUnIGFuZCBgYWZ0ZXInCgl2YXJpYWJsZXMuCgkoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgZWRnZV9saW1pdCcgdmFyaWFibGUuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIGBuZXdfYWR2YW5jZScsIGBzdGFydF9jb250b3VyJywKCWFuZCBgbWV0cmljcycgdmFyaWFibGVzLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcpOiBSZW1vdmUgZGVhZCBjb2RlIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFJlbW92ZSB1bnVzZWQgYGJhc2Vfb2Zmc2V0JwoJdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogUmVtb3ZlIHVudXNlZAoJYG91dGxpbmUnIHZhcmlhYmxlLgoJKGNmZl9jb21wdXRlX2JpYXMpOiBVc2UgYFUnIGZvciBjb25zdGFudC4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyU3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9LZXJuKTogUmVtb3ZlIHVudXNlZCBgdmVyc2lvbicKCXZhcmlhYmxlLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoVFRfTG9hZF9TQml0X0ltYWdlKTogUmVtb3ZlIHVudXNlZCBgdG9wJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgdW51c2VkCglgbnVtX2NvbnRvdXJzJyBhbmQgYGluc19vZmZzZXQnIHZhcmlhYmxlcy4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZW1vdmUgdW51c2VkIGBUb3AnIGFuZCBgeF9zY2FsZScKCXZhcmlhYmxlcy4KCShUVF9Mb2FkX0dseXBoKTogUmVtb3ZlIHVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX3Jhc3Rlcl9yZW5kZXIpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgoyMDAxLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSB0aGUgbmV3IGVycm9yIHNjaGVtZSBzb3VyY2UgY29tcGF0aWJsZSB3aXRoIG9sZGVyIEZUIHZlcnNpb25zCglieSBpbnRyb2R1Y2luZyBhbm90aGVyIGxheWVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIChGVF9FUlJPUkRFRl8sIEZUX05PRVJST1JERUZfKTogTmV3CgltYWNyb3MuCgkoRlRfTk9FUlJPUkRFRik6IFJlbW92ZWQuCgkqIGluY2x1ZGUvKi8qZXJyKi5oOiBVc2UgRlRfRVJST1JERUZfIGFuZCBGVF9OT0VSUk9SREVGXy4KCjIwMDEtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DX1RBRyk6IE5ldyBtYWNyby4KCShGVF9FbmNvZGluZ18pOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEZWZpbmUgaXQKCWNvbmRpdGlvbmFsbHkuCgoyMDAxLTA2LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW9kaWZpZWQgdGhlIFRydWVUeXBlIGludGVycHJldGVyIHRvIGxldCBpdCB1c2UgdGhlIG5ldwoJdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgcHJvdmlkZWQgaW4gImZ0dHJpZ29uLmgiLiAgVGhpcyBnZXRzIHJpZCBvZgoJc29tZSBvbGQgNjQtYml0IGNvbXB1dGF0aW9uIHJvdXRpbmVzLCBhcyB3ZWxsIGFzIG1hbnkgd2FybmluZ3Mgd2hlbgoJY29tcGlsaW5nIHRoZSBsaWJyYXJ5IHdpdGggdGhlICJsb25nIGxvbmciIDY0LWJpdCBpbnRlZ2VyIHR5cGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVbmRlZmluZQoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IFJlYXJyYW5nZSB1c2Ugb2YKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogQWRkIGRlY2xhcmF0aW9uIG9mIEZUX0ludDY0IGlmCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyBpc24ndCBkZWZpbmVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogVXNlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKE5vcm0pOiBBZGQgYSBzcGVjaWFsIHZlcnNpb24gaWYgRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QKCWRlZmluZWQuCgkoQ3VycmVudF9SYXRpbywgTm9ybWFsaXplKTogU2ltcGxpZnkgY29kZS4KCjIwMDEtMDYtMTEgIE1pa2UgT3dlbnMgIDxNT3dlbnNAYW10ZGF0YXNvdXRoLmNvbT4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX0RpdkZpeCwgRlRfU3FydDY0KTogUmVtb3ZlCgljb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogUmVuYW1lZCB0byAuLi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUaGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGF1dG9jb25mIDIuNTAgaXMKCW5lZWRlZC4KCVJ1biBgYXV0b3VwZGF0ZScgb24gaXQuCglJbmNyZWFzZSBgdmVyc2lvbl9pbmZvJyB0byA3OjA6MS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb3JydXB0ZWQgdHJhbnNmb3JtZWQgZ2x5cGhzIHRoYXQgd2VyZSBhdXRvLWhpbnRlZCAodGhlIHRyYW5zZm9ybQoJd2FzIGFwcGxpZWQgdHdpY2UpLgoKCUZpeGVkIGEgYnVnIHRoYXQgcmV0dXJuZWQgYW4gaW52YWxpZCBsaW5lYXIgd2lkdGggZm9yIGNvbXBvc2l0ZQoJVHJ1ZVR5cGUgZ2x5cGhzLgoKCSogaW5jbHVkZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0xvYWRlcl8pOiBUd28gbmV3IGVsZW1lbnRzIGBsaW5lYXInCglhbmQgYGxpbmVhcl9kZWYnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoLAoJY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogVXNlIGl0LgoKCSogaW5jbHVkZS9mdHR5cGVzLmggKEZUX0VSUk9SX0JBU0UpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UsIEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IFVzZSBpdAoJdG8gbWFrZSBzb3VyY2UgY29kZSB3b3JrIHdpdGggdGhlIG5ldyBlcnJvciBzY2hlbWUgaW1wbGVtZW50ZWQgYnkKCVdlcm5lci4KCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX1JlbmRlcik6IERpdHRvLgoKMjAwMS0wNi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIGxpYnRvb2wgMS40LjAgYW5kIGF1dG9jb25mIDIuNTAuCgoJKiBidWlsZHMvdW5peC9sdGNvbmZpZzogUmVtb3ZlZC4KCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoLCBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sCglidWlsZHMvdW5peC9hY2xvY2FsLm00OiBVcGRhdGVkLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlIHJlZGVzaWduIG9mIGVycm9yIGNvZGVzLiAgUGxlYXNlIGNoZWNrIGZ0bW9kZXJyLmggZm9yIG1vcmUKCWRldGFpbHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHRlcnJvcnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogUmVtb3ZlZC4gIFJlcGxhY2VkIHdpdGggZmlsZXMKCWxvY2FsIHRvIHRoZSBtb2R1bGUuICBBbGwgZXh0cmEgZXJyb3IgY29kZXMgaGF2ZSBiZWVuIG1vdmVkIHRvCglgZnRlcnJvcnMuaCcuCgoJKiBzcmMvc2ZudC90dHBvc3QuaDogTW92ZSBlcnJvciBjb2RlcyB0byBgZnRlcnJvcnMuaCcuCgoJKiBzcmMvYXV0b2hpbnQvYWhlcnJvcnMuaCwgc3JjL2NhY2hlL2Z0Y2Vycm9yLmgsIHNyYy9jZmYvY2ZmZXJycy5oLAoJc3JjL2NpZC9jaWRlcnJzLmgsIHNyYy9wY2YvcGNmZXJyb3IuaCwgc3JjL3BzYXV4L3BzYXV4ZXJyLmgsCglzcmMvcHNuYW1lcy9wc25hbWVyci5oLCBzcmMvcmFzdGVyL3Jhc3RlcnJzLmgsIHNyYy9zZm50L3NmZXJyb3JzLmgsCglzcmMvc21vb3RoL2Z0c21lcnJzLmgsIHNyYy90cnVldHlwZS90dGVycm9ycy5oLAoJc3JjL3R5cGUxL3QxZXJyb3JzLmgsIHNyYy93aW5mb250cy9mbnRlcnJzLmg6IE5ldyBmaWxlcyBkZWZpbmluZyB0aGUKCWVycm9yIG5hbWVzIGZvciB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IE5ldyBmaWxlLCBkZWZpbmluZyB0aGUgbW9kdWxlIGVycm9yCglvZmZzZXRzLiAgSXRzIHN0cnVjdHVyZSBpcyBzaW1pbGFyIHRvIGBmdGVycm9ycy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfTk9FUlJPUkRFRik6IE5ldyBtYWNyby4KCShGVF9FUlJPUkRFRik6IFJlZGVmaW5lZCB0byB1c2UgbW9kdWxlIGVycm9yIG9mZnNldHMuCglBbGwgaW50ZXJuYWwgZXJyb3IgY29kZXMgYXJlIG5vdyBwdWJsaWM7IHVudXNlZCBlcnJvciBjb2RlcyBoYXZlCgliZWVuIHJlbW92ZWQsIHNvbWUgYXJlIG5ldy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX01PRFVMRV9FUlJPUlNfSCk6IE5ldwoJbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTKTogTmV3IG1hY3JvLgoKCUFsbCBvdGhlciBzb3VyY2UgZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgZXJyb3IgY29kZXM7Cglzb21lIGFscmVhZHkgZXhpc3RpbmcgKGludGVybmFsKSBlcnJvciBjb2RlcyBsb2NhbCB0byBhIG1vZHVsZSBoYXZlCgliZWVuIHJlbmFtZWQgdG8gZ2l2ZSB0aGVtIHRoZSBzYW1lIG5hbWUgYXMgaW4gdGhlIGJhc2UgbW9kdWxlLgoKCUFsbCBtYWtlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIGxvY2FsIGVycm9yIGZpbGVzLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWR0b2tlbnMuaDogUmVwbGFjZWQgd2l0aC4uLgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IFRoaXMgZmlsZSBmb3IgOCszIGNvbnNpc3RlbmN5LgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBVc2UgbWFjcm9zIGZvciBoZWFkZXIgZmlsZSBuYW1lcy4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXJfLCBUVF9WZXJ0SGVhZGVyXyk6CglGaXggbGVuZ3RoIG9mIGBSZXNlcnZlZCcgYXJyYXkuICBOb3RlIHRoYXQgdGhpcyBpc24ndCB0aGUgcmVhbCBmaXgKCXNpbmNlIHJlY2VudCBPcGVuVHlwZSBzcGVjcyBoYXZlIGludHJvZHVjZWQgYSBgQ2FyZXRPZmZzZXQnIGZpZWxkCglpbnN0ZWFkIG9mIHRoZSBmaXJzdCByZXNlcnZlZCBieXRlLgoKMjAwMS0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogTWlub3IgZml4ZXMuCgoKCSogVmVyc2lvbiAyLjAuMyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA1LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAxLTA1LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW92ZWQgc2V2ZXJhbCBkb2N1bWVudHMgZnJvbSB0aGUgdG9wLWxldmVsIHRvIHRoZSAiZG9jcyIgZGlyZWN0b3J5LgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IFNtYWxsIGZpeCB0byByZXR1cm4gdmFsdWUuCgoyMDAxLTA1LTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4ZWQgYSBidWcgaW4gdGhlCgljb21wb3NpdGUgbG9hZGVyLiAgU3BvdHRlZCBieSBLZWl0aCBQYWNrYXJkLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2x5cGhMb2FkZXJfQ2hlY2tfUG9pbnRzLAoJRlRfR2x5cGhMb2FkZXJfQ2hlY2tfU3ViZ2x5cGhzKTogRGl0dG8uCgoyMDAxLTA1LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgdGhlIGluY29ycmVjdCBibHVlIHpvbmUgY29tcHV0YXRpb25zLCBhbmQgaW1wcm92ZWQgdGhlCgljb21wb3NpdGUgc3VwcG9ydC4gIE5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHJlc3VsdCBpbiBpbXByb3ZlZAoJcmVuZGVyaW5nLCB3aGlsZSBzb21ldGltZXMgaW50cm9kdWNpbmcgdGhlaXIgb3duIGFydGVmYWN0cy4gIFRoaXMgaXMKCXByb2JhYmx5IHRoZSBsYXN0IGJpZyBjaGFuZ2UgdG8gdGhlIGF1dG9oaW50ZXIgYmVmb3JlIHRoZQoJaW50cm9kdWN0aW9uIG9mIGEgY29tcGxldGUgcmVwbGFjZW1lbnQuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoc29ydF92YWx1ZXMpOiBGaXggbG9vcC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYzogUmVtb3ZlZCBzb21lIG9ic29sZXRlIGNvZGUuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogTW9kaWZ5IGNvZGUgdG8gc2V0IHRoZSBhaF9lZGdlX3JvdW5kCglmbGFnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9ibHVlX2VkZ2VzKTogQWRkIGNvZGUgdG8gY29tcHV0ZSBhY3RpdmUgYmx1ZQoJem9uZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2dseXBoX2xvYWQpOiBDaGFuZ2UgbG9hZF9mbGFncwoJdmFsdWUuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2Rml4KTogRml4ZWQgYSBidWcgaW4gdGhlIDY0LWJpdCBjb2RlIHRoYXQKCWNyZWF0ZWQgaW5jb3JyZWN0IHNjYWxlIGZhY3RvcnMhCgkoRlRfUm91bmRfRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IE1pbm9yIGltcHJvdmVtZW50cy4KCjIwMDEtMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiYm94Lmg6IEZUQkJPWF9IIC0+IF9fRlRCQk9YX0hfXy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oOiBfX0ZUX1RSSUdPTk9NRVRSWV9IX18gLT4KCV9fRlRUUklHT05fSF9fLgoJSW5jbHVkZSBGVF9GUkVFVFlQRV9ILgoJQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jOiBCZWF1dGlmaWVkOyBhZGRlZCBjb3B5cmlnaHQuCgoyMDAxLTA1LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCksIHNyYy9jaWQvY2lkbG9hZC5jCgkocGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogRml4ZWQKCXRoZSBpbmNvcnJlY3QgRU0gc2l6ZSBjb21wdXRhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaCwgc3JjL2Jhc2UvZnR0cmlnb24uYzogTmV3IGZpbGVzLAoJYWRkaW5nIHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHRvIHRoZSBjb3JlIEFQSSAodXNpbmcgQ29yZGljCglhbGdvcml0aG1zKS4KCSogc3JjL2Jhc2UvZnRiYXNlLmMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOiBVc2UgdGhlbS4KCgkqIGJ1aWxkcy9uZXdsaW5lOiBOZXcgZmlsZS4KCSogYnVpbGRzL3RvcF9sZXZlbC5taywgYnVpbGRzL2RldGVjdC5tazogVXNlIGl0LiAgVGhpcyBmaXhlcwoJcHJvYmxlbXMgd2l0aCBNYWtlIG9uIFdpbmRvd3MgMjAwMCwgYXMgd2VsbCBhcyBwcm9ibGVtcyB3aGVuICJtYWtlCglkaXN0Y2xlYW4iIGlzIGludm9rZWQgb24gYSBub24tVW5peCBwbGF0Zm9ybSB3aGVuIHRoZXJlIGlzIG5vCgkiY29uZmlnLm1rIiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IEZpeGVkIGEgcHJvYmxlbSB3aXRoIG9iamVjdCBkZWxldGlvbnMgdW5kZXIKCURvcy9XaW5kb3dzL09TLzIgc3lzdGVtcy4KCglBZGRlZCBuZXcgZGlyZWN0b3J5IHRvIGhvbGQgdG9vbHMgYW5kIHRlc3QgcHJvZ3JhbXMuCgoJKiBkb2NzL2RvY21ha2VyLnB5LCBkb2NzL2dsbmFtZXMucHk6IE1vdmVkIHRvLi4uCgkqIHNyYy90b29scy9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFRoaXMgcGxhY2UuCgkqIHNyYy90b29scy9jb3JkaWMucHk6IE5ldyBmaWxlIHVzZWQgdG8gY29tcHV0ZSBhcmN0YW5nZW50IHRhYmxlCgluZWVkZWQgYnkgZnR0cmlnb24uYy4KCSogc3JjL3Rvb2xzL3Rlc3RfYmJveC5jLCBzcmMvdG9vbHMvdGVzdF90cmlnLmM6IE5ldyB0ZXN0IGZpbGVzLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgc2NyaXB0IHRvIGFkZCB0aGUgY3VycmVudCBkYXRlCglhdCB0aGUgZm9vdGVyIG9mIGVhY2ggd2ViIHBhZ2UgKHVzZWZ1bCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCgl2ZXJzaW9ucykuCgoJKiBKYW1maWxlOiBGaXhlZCBpbmNvcnJlY3QgSERSTUFDUk8gYXJndW1lbnQuCgoJKiBUT0RPOiBSZW1vdmVkIHRoZSBjdWJpYyBhcmMgYmJveCBjb21wdXRhdGlvbiBub3RlLCBzaW5jZSBpdCBoYXMgYmVlbgoJZml4ZWQgcmVjZW50bHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jICh0ZXN0X2N1YmljX3plcm8pOiBSZW5hbWVkIHRvLi4uCgkodGVzdF9jdWJpY19leHRyZW1hKTogVGhpcyBmdW5jdGlvbi4gIFVzZSBgVUwnIGZvciB1bnNpZ25lZCBsb25nCgljb25zdGFudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6CglGb3JtYXR0aW5nLgoKMjAwMS0wNS0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IEZpeGVkIGEgc21hbGwgbWVtb3J5IGxlYWsKCXdoaWNoIGhhcHBlbmVkIHdoZW4gdHJ5aW5nIHRvIG9wZW4gMC1zaXplIGZvbnQgZmlsZXMhCgoyMDAxLTA1LTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCglGVF9TcXJ0Rml4ZWQoKSBvdXQgb2YgYCNpZmRlZiBGVF9MT05HNjQnLgoKMjAwMS0wNS0wOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2Zkcml2ZXIuYyAoUENGX0xvYWRfR2x5cGgpOiBGaXhlZCBpbmNvcnJlY3QgYml0bWFwIHdpZHRoCgljb21wdXRhdGlvbi4KCjIwMDEtMDUtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IFVwZGF0ZWQgdGhlIERvY01ha2VyIHNjcmlwdCBpbiBvcmRlciB0byBhZGQKCWNvbW1hbmQgbGluZSBvcHRpb25zICgtLW91dHB1dCwtLXByZWZpeCwtLXRpdGxlKSwgZml4IHRoZSBlcnJvbmVvdXMKCWxpbmUgbnVtYmVycyByZXBvcnRlZCBkdXJpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncywgYW5kIG90aGVyCglmb3JtYXR0aW5nIGlzc3Vlcy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX011bEZpeCwgRlRfRGl2Rml4KTogVmFyaW91cyB0aW55CglmaXhlcyByZWxhdGVkIHRvIHJvdW5kaW5nIGluIDY0LWJpdHMgcm91dGluZXMgYW5kCglwc2V1ZG8tIm9wdGltaXphdGlvbnMiLgoKMjAwMS0wNC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBGaXhlZCB0aGUgY29lZmZpY2llbnQKCW5vcm1hbGl6YXRpb24gYWxnb3JpdGhtIChpbnZhbGlkIGZpbmFsIGJpdCBwb3NpdGlvbiwgYW5kIGludmFsaWQKCXNoaWZ0IGNvbXB1dGF0aW9uKS4KCjIwMDEtMDQtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCB0bwoJbGF0ZXN0IHZlcnNpb25zIGZyb20gZ251Lm9yZy4KCgkqIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rOiBBZGQgYC1Xbm8tbG9uZy1sb25nJyBmbGFnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogRGVmaW5lIEZUX1NxcnRGaXhlZCgpCgl1bmNvZGl0aW9uYWxseS4KCSogc3JjL2Jhc2UvZnRiYm94LmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfQ0FMQ19ILgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogRml4IChwb3RlbnRpYWwpIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wNC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCk6IENvcnJlY3RlZC9vcHRpbWl6ZWQgdGhlIDMyLWJpdAoJZml4ZWQtcG9pbnQgc3F1YXJlIHJvb3QgY29tcHV0YXRpb24uICBJdCBpcyBub3cgdXNlZCBldmVuIHdpdGgKCTY0LWJpdHMgaW50ZWdlcnMsIGFzIGl0IGlzIF9tdWNoXyBmYXN0ZXIgdGhhbiBjYWxsaW5nIEZUX1NxcnQ2NCA6LSkKCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBSZW1vdmVkIGludmFsaWQgIiNpbmNsdWRlIEZUX0JFWklFUl9IIiBsaW5lLgoKMjAwMS0wNC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBSZXdyb3RlIGZ1bmN0aW9uIHRvIHVzZQoJZGlyZWN0IGNvbXB1dGF0aW9ucyB3aXRoIDE2LjE2IHZhbHVlcyBpbnN0ZWFkIG9mIHN1Yi1kaXZpc2lvbnMuICBJdAoJaXMgbm93IHNsb3dlciwgYnV0IHByb3ZlcyBhIHBvaW50IDotKQoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL2Jhc2UvZnRiYm94LmM6CglGaXhlZCB0aGUgYmV6aWVyIHN0YWNrIGRlcHRocy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxGaXgpOiBNaW5vciByb3VuZGluZyBmaXguCgoJKiBidWlsZHMvYmVvczogQWRkZWQgQmVPUy1zcGVjaWZpYyBmaWxlcyB0byB0aGUgb2xkIGJ1aWxkIHN5c3RlbQoJKG5vIGNoYW5nZXMgd2VyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCBCZU9TIGluIHRoZSBKYW1maWxlIHRob3VnaCkuCgoyMDAxLTA0LTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBmdGNvbmZpZy5oLCBmdG9wdGlvbi5oOiBVcGRhdGVkICJmdGNvbmZpZy5oIiB0byBkZXRlY3QgNjQtYml0IGludAoJdHlwZXMgb24gcGxhdGZvcm1zIHdoZXJlIEF1dG9jb25mIGlzIG5vdCBhdmFpbGFibGUpLiAgQWxzbyByZW1vdmVkCglGVENBTENfVVNFX0xPTkdfTE9ORyBhbmQgcmVwbGFjZWQgaXQgd2l0aAoJRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NC4KCgkqIGJ1aWxkcy93aW4zMi9mcmVldHlwZS5kc3A6IFVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCBmaWxlLgoJRG9lc24ndCBjcmVhdGUgYSBETEwgeWV0LgoKCSogY2ZmZ2xvYWQuYzogUmVtb3ZlZCBhIGNvbXBpbGF0aW9uIHdhcm5pbmcuCgoyMDAxLTA0LTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogQ2hhbmdlZCBjb2RlIGZvciBwbGFjaW5nIC5ub3RkZWYKCWdseXBoIGludG8gc2xvdCAwIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBtZW1vcnkgYWNjZXNzCgl2aW9sYXRpb24uCgoJKiB0MWxvYWQuaDogSW4gc3RydWN0dXJlIFQxX0xvYWRlciwgYWRkZWQgc3dhcF90YWJsZSAob2YgdHlwZQoJUFNfVGFibGUpIHRvIGZhY2lsaXRhdGUgcGxhY2luZyB0aGUgLm5vdGRlZiBnbHlwaCBpbnRvIHNsb3QgMC4KCjIwMDEtMDQtMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMS0wNC0wOSAgTGF1cmVuY2UgV2l0aGVycyAgPGx3aXRoZXJzQGx3aXRoZXJzLmRlbW9uLmNvLnVrPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IEFkZCBzdXBwb3J0IGZvciBiYXNoLgoKMjAwMS0wNC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL29zMi8qLm1rOiBUaGVzZSBmaWxlcyBoYXZlIGJlZW4gZm9yZ290dGVuIHRvIHVwZGF0ZSB0bwoJdGhlIHN0cnVjdHVyZSBvZiBzaW1pbGFyIG1ha2VmaWxlcy4KCSogYnVpbGRzL2Rvcy8qLm1rOiBEaXR0by4KCSogYnVpbGRzL2Fuc2kvKi5tazogRGl0dG8uCgoJKiBidWlsZHMvd2luMzIvd2luMzItZGVmLm1rIChCVUlMRCk6IEZpeCB0eXBvLgoKCSogYnVpbGRzL2NvbXBpbGVyLyoubWsgKENMRUFOX0xJQlJBUlkpOiBEb24ndCB1c2UgTk9fT1VUUFVULgoJVGhpcyBpcyBhbHJlYWR5IHVzZWQgaW4gdGhlIGxpbmtfKi5tayBmaWxlcy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy8qL0phbWZpbGU6IFNsaWdodCBjaGFuZ2VzCXRvIG1ha2UgZmlsZXMgbW9yZSBjcnlwdGljLgoKMjAwMS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEZvcm1hdHRlZC4gIFNsaWdodCBjaGFuZ2VzCgl0byBnaXZlIGZpbGVzIGlkZW50aWNhbCBzdHJ1Y3R1cmUuCgoyMDAxLTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBDSEFOR0VTOiBSZWZvcm1hdHRlZCwgbWlub3IgZml4ZXMuCgkqIFRPRE86IFVwZGF0ZWQuCgkqIFJFQURNRTogRm9ybWF0dGluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGb3JtYXR0aW5nLgoKCSogSmFtZmlsZTogRml4IHR5cG8uCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmM6IE1vdmUgZXJyb3IgY29kZSAjZGVmaW5lcyB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaDogVGhpcyBmaWxlLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZmxvYWQuYzogUmVwbGFjZWQKCWBGVF9FcnJfKicgd2l0aCBgQ0ZGX0Vycl8qJy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYzogRGl0dG8uCgkqIHNyYy9zZm50L3Nmb2Jjcy5jLCBzcmMvc2ZudC90dGxvYWQuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoCglgVFRfRXJyXyonLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MXBhcnNlLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aCBgVDFfRXJyXyonLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IEFkZAoJYENGRl9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogQWRkCglgVDFfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmg6IEFkZAoJYFRUX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBBZGQgYGNmZl8qX2VuY29kaW5nJyBhbmQgYGNmZl8qX2NoYXJzZXQnCglyZWZlcmVuY2VzLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmM6IEluY2x1ZGUgYEZUX0lOVEVSTkFMX1RZUEUxX0VSUk9SU19IJy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlLCBDRkZfRG9uZV9GYWNlKTogVXNlCglGVF9MT0NBTF9ERUYuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3RydXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRmFjZSwgVFRfRG9uZV9GYWNlLCBUVF9Jbml0X1NpemUpOgoJRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IERpdHRvLgoJKiBzcmMvcGNmL3BjZi5oOiBVc2UgRlRfTE9DQUwgZm9yIGBQQ0ZfRG9uZV9GYWNlJy4KCjIwMDEtMDQtMDIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzKTogRml4IGFuIGltcHJvcGVyIHBvaW50ZXIKCWRlcmVmZXJlbmNlLiAgU3VibWl0dGVkIGJ5IEhlcmJlcnQgRHVlcnIgPGR1ZXJyQHN1bi5jb20+CgoyMDAxLTAzLTI2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogQ2hhbmdlZCBoZXhhZGVjaW1hbAoJY29uc3RhbnRzIHRvIHVzZSBzdWZmaXggVSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIEhQLVVYJ3MgYzg5Cgljb21waWxlci4gIFN1Ym1pdHRlZCBieSBHLlcuIEx1Y2FzIDxnbHVjYXNAc29uYWx5c3RzLmNvbT4KCjIwMDEtMDMtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBKYW1ydWxlcywgSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEFkZGluZyBqYW1maWxlcyB0bwoJdGhlIHNvdXJjZSB0cmVlLiAgU2VlIHd3dy5mcmVldHlwZS5vcmcvamFtL2luZGV4Lmh0bWwgZm9yIGRldGFpbHMuCgoKCSogVmVyc2lvbiAyLjAuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBGaXggLlBIT05ZIHRhcmdldCBmb3IgSW50ZWwgY29tcGlsZXIuCgoyMDAxLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oOgoJUmVuYW1lZCAiZnRuYW1lcy5oIiB0byAiZnRzbmFtZXMuaCIsIGFuZCBGVF9OQU1FU19IIHRvCglGVF9TRk5UX05BTUVTX0guCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBnZW5lcmF0aW9uIG9mIElOREVYIGxpbmsgaW4gdGFibGUgb2YKCWNvbnRlbnRzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIGluZGljYXRlIHRoYXQgdGhlCgljb21waWxhdGlvbiBwcm9jZXNzIGhhcyBjaGFuZ2VkIHNsaWdodGx5IChubyBtb3JlIGBzcmMnIHJlcXVpcmVkIGluCgl0aGUgaW5jbHVkZSBwYXRoKS4KCgkqIGJ1aWxkcy8qLyotZGVmLm1rOiBDaGFuZ2VkIHRoZSBvYmplY3RzIGRpcmVjdG9yeSBmcm9tICJvYmoiIHRvCgkib2JqcyIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oOiBSZW1vdmVkIG9ic29sZXRlIG1hY3JvcyBsaWtlCglGVF9TT1VSQ0VfRklMRSwgZXRjLiBhbmQgYWRkZWQgY2FjaGUtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdAoJd2VyZSBwcmV2aW91c2x5IGRlZmluZWQgaW4gPGZyZWV0eXBlL2Z0Y2FjaGUuaD4uICBBZGRlZCBjb21tZW50cyB0bwoJYmUgaW5jbHVkZWQgaW4gYSBuZXcgQVBJIFJlZmVyZW5jZSBzZWN0aW9uLgoKCSogc3JjLyovKjogUmVtb3ZlZCB0aGUgdXNlIG9mIEZUX1NPVVJDRV9GSUxFLCBldGMuICBOb3csIGVhY2gKCWNvbXBvbmVudCBuZWVkcyB0byBhZGQgaXRzIG93biBkaXJlY3RvcnkgdG8gdGhlIGluY2x1ZGUgcGF0aCBhdAoJY29tcGlsZSB0aW1lLiAgTW9kaWZpZWQgYWxsICJydWxlcy5tayIgYW5kICJkZXNjcmlwLm1tcyIKCWFjY29yZGluZ2x5LgoKMjAwMS0wMy0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluOiBBZGQgJGZ0X3ZlcnNpb24uCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogVXNlIGl0LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAxLTAzLTE5ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBBc3NpZ24gdGhlIHVuaXRzIHBlciBlbQoJdmFsdWUgYW4gdW5zaWduZWQgc2hvcnQgdmFsdWUsIGZpcnN0IGJ5IHNoaWZ0aW5nIHJpZ2h0IDE2IGJpdHMsCgl0aGVuIGJ5IGNhc3RpbmcgdGhlIHJlc3VsdHMgdG8gRlRfVVNob3J0LgoKMjAwMS0wMy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jLCBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYzogQWRkZWQgYSBmZXcgY2FzdHMgdG8gcmVtb3ZlCgljb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2Rlcy4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0MmJ1aWxkLmgsIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IFRoZSBmaWxlCgkiZnQyYnVpbGQuaCIgd2FzIHJlbmFtZWQgdG8gImZ0aGVhZGVyLmgiIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZQoJdG9wLWxldmVsIDxmdDJidWlsZC5oPi4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IEFkZGVkIG5ldyBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlICNpbmNsdWRlCgltYWNyb3MuCgoyMDAxLTAzLTE3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9iYm94KTogT2J0YWluIHJvdW5kZWQgRlRfRml4ZWQKCXZhbHVlcyBmb3IgdGhlIGJvdW5kaW5nIGJveCBudW1iZXJzLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBXaGVuIHByb2Nlc3NpbmcgYSBDRkYvQ0VGIGZvbnQsCglzZXQgYHJvb3QtPmFzY2VuZGVyJyAoYHJvb3QtPmRlc2NlbmRlcicpIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YKCWByb290LT5iYm94LnlNYXgnIChgcm9vdC0+YmJveC55TWluJywgcmVzcGVjdGl2ZWx5KS4KCjIwMDEtMDMtMTYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6ICBOZXcgZnVuY3Rpb24uICBVc2VkIGluCgljZmZfZ2V0X2ludGVyZmFjZSB0byBmYWNpbGl0YXRlIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZvciBnbHlwaCBpbmRleAoJdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogQWRkZWQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhIGdseXBoIG5hbWUgdmlhIHRoZQoJImdseXBoX25hbWUiIG1vZHVsZSBpbnRlcmZhY2UuICBVc2VzIHRoZSBuZXcgZnVuY3Rpb24KCWdldF9jZmZfZ2x5cGhfbmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogTG9naWNhbCBvciB0aGUgZmFjZSBmbGFncyB3aXRoCglGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgb25seSBpZiBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTIGlzCglub3QgZGVmaW5lZC4gIFRoaXMgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZyb20gYQoJZ2x5cGggaW5kZXggdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBzdXBwb3J0IGZvcgoJZGVwcmVjYXRlZCBvcGVyYXRvciAiZG90c2VjdGlvbiIuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPgoKMjAwMS0wMy0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBGaXggZXJyb3IKCW1lc3NhZ2VzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogV2UgbmVlZCBHTlUgbWFrZSAzLjc4LjEgb3IgbmV3ZXIuCgoyMDAxLTAzLTEyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiAgQ2hhbmdlZCB0aGUgbGVuSVYgbWVtYmVyIG9mCgl0aGUgVDFfRGVjb2Rlcl8gc3RydWN0IHRvIGJlIGFuIEZUX0ludCBpbnN0ZWFkIG9mIGFuIEZUX1VJbnQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6ICBBZGp1c3QKCWZvciBsZW5JViBzZWVkIGJ5dGVzIGF0IHRoZSBzdGFydCBvZiBhIGRlY3J5cHRlZCBzdWJyb3V0aW5lLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRGVjcnlwdCBzdWJyb3V0aW5lcyBvbmx5CglpZiBsZW5JViA+PSAwLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IERlY3J5cHQgY2hhcnN0cmluZ3Mgb25seQoJaWYgbGVuSVYgPj0gMC4KCjIwMDEtMDMtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFRPRE86IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUHV0IFJFQURfRmllbGRzKCkgYWx3YXlzIGluIGEgY29uZGl0aW9uYWwgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wMy0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIFRPRE86IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRlZCBwcm90b3R5cGVzIGFuZCBub3RlcyBmb3IKCXRocmVlIG5ldyBmdW5jdGlvbnM6IEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBhbmQgRlRfRmxvb3JGaXguCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9Sb3VuZEZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBBZGRlZAoJaW1wbGVtZW50YXRpb24gY29kZS4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfSW5pdF9GYWNlKTogVXNlIGNhbGN1bGF0ZWQgdW5pdHNfcGVyX0VNLAoJYW5kIGlmIHRoYXQgaXMgbm90IGF2YWlsYWJsZSwgZGVmYXVsdCB0byAxMDAwIHVuaXRzIHBlciBFTS4gIENoYW5nZWQKCWFzc2lnbm1lbnQgY29kZSBmb3IgYXNjZW5kZXIgYW5kIGRlc2NlbmRlciB2YWx1ZXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIHVuaXRzX3Blcl9FTQoJcHJvY2Vzc2luZy4KCShwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZCBudW1iZXIgaGFuZGxpbmcuCgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IENoYW5nZWQgdGhlIGFzc2lnbm1lbnQgY29kZQoJZm9yIGFzY2VuZGVyLCBkZXNjZW5kZXIsIGFuZCBtYXhfYWR2YW5jZV93aWR0aC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZAoJbnVtYmVyIGhhbmRsaW5nLgoKMjAwMS0wMy0xMCAgSGVucmlrIEdydWJic3Ry9m0gIDxncnViYmFAcm94ZW4uY29tPgoKCSogc3JjLyovKi5jOiBBZGRlZCBtYW55IGNhc3RzIHRvIG1ha2UgY29kZSBtb3JlIDY0Yml0LXNhZmUuCgoyMDAxLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzggb3IgbmV3ZXIuCgoyMDAxLTAzLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBNaW5vciBjb3JyZWN0aW9uOiBXZSBtdXN0IHdhaXQKCXVudGlsIHBhcnNlX2ZvbnRfYmJveCBpcyBjaGFuZ2VkIGJlZm9yZSB3ZSB1c2UgbG9naWNhbCBzaGlmdCByaWdodHMKCWluIHRoZSBhc3NpZ25tZW50cyBvZiBgcm9vdC0+YXNjZW5kZXInLCBgcm9vdC0+ZGVzY2VuZGVyJywgYW5kCglgcm9vdC0+bWF4X2FkdmFuY2Vfd2lkdGgnLgoKCShUMV9Eb25lX0ZhY2UpOiBGcmVlIGBjaGFyX25hbWUnIHRhYmxlIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCjIwMDEtMDMtMDUgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Mb2FkX0dseXBoKTogU2V0IGdseXBoIGNvbnRyb2wgZGF0YSB0byB0aGUKCXRoZSBUeXBlIDIgZ2x5cGggY2hhcnN0cmluZyAodXNlZCBieSBjb252ZXJzaW9uIHByb2dyYW1zKS4KCVN1Ym1pdHRlZCBieSBIYSBTaGFvIDxoYXNoYW9AY2hpbmVzZS5jb20+LgoKMjAwMS0wMy0wNCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IENvcnJlY3QgYSBzdHVwaWQgdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvcnJlY3QgY29tcGlsYXRpb24gKFRUX01TX0xBTkdJRF9USUdSSUdOQV9FVEhJT1BJQSBhcHBlYXJlZCB0d2ljZSkuCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGQgZWxlbWVudHMKCWBkaXNhYmxlX2hvcnpfZWRnZXMnLCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlCgl0aGVtIChhbmQgcmVtb3ZlIHN0YXRpYyB2YXJpYWJsZXMgd2l0aCB0aGUgc2FtZSBuYW1lcykuCgkqIHNyYy9wY2YvcGNmdXRpbC5jIChCaXRPcmRlckludmVydCk6IEFkZCBgY29uc3QnLgoJKiBkb2NzL2dsbmFtZXMucHk6IFVwZGF0ZWQgdG8gbGF0ZXN0IHBzdGFibGVzLmggY2hhbmdlcy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkIHRlc3QgZm9yIEh1cmQuCgkqIGJ1aWxkcy9odXJkL2RldGVjdC5tazogUmVtb3ZlZC4KCjIwMDEtMDMtMDQgIFNhbmRlciB2YW4gZGVyIFdhbCAgPHN2ZHdhbEB4czRhbGwubmw+CgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBBZGQgbW9yZSBgY29uc3QnLgoJKiBzcmMvcGNmL3BjZnV0aWwuYzogRGl0dG8uCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEZpeGluZyB0eXBvCgkoRlRfR2x5cGhfRG9uZSAtPiBGVF9Eb25lX0dseXBoKS4KCjIwMDEtMDMtMDEgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBPZmZpY2UgWHAuCgoyMDAxLTAyLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBOZXcgZmlsZS4gIEFkZGVkIHN1cHBvcnQgdG8gZGV0ZWN0IHRoZSBHTlUKCUh1cmQgb3BlcmF0aW5nIHN5c3RlbSBhcyBVbml4LWxpa2UuICBGaXggc3VibWl0dGVkIGJ5IEFudGhvbnkgRm9rCgk8Zm9rYUBkZWJpYW4ub3JnPi4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMSBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRncmF5cy5jIChncmF5c19zd2VlcCk6IFRoZSBmdW5jdGlvbiBkaWRuJ3QgZXhpdAoJaW1tZWRpYXRlbHkgaWYgYG51bV9jZWxscycgd2FzIDAgYXMgaXQgc2hvdWxkLiAgVGhhbmtzIHRvIEJvcmlzIGZvcgoJZmluZGluZyB0aGlzIG91dC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4ZWQgbWVtb3J5IGxlYWsgd2hlbgoJYml0bWFwIHJlbmRlcmluZyBmYWlscyAodGhhbmtzIHRvIEdyYWhhbSBBc2hlcikuCgoyMDAxLTAyLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5IChEb2NTZWN0aW9uOjphZGRfZWxlbWVudCk6IFVzZQoJYHNlbGYucHJpbnRfZXJyb3IoKScuCgoJKiBidWlsZHMvdW5peC9jb25maWcue2d1ZXNzLHN1Yn06IFVwZGF0ZWQgKGZyb20gZnRwLmdudS5vcmcpLgoKMjAwMS0wMi0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHksIGluY2x1ZGUvZnJlZXR5cGUvKi5oOiBVcGRhdGVkIHRoZSBEb2NNYWtlcgoJc2NyaXB0IHRvIHN1cHBvcnQgY2hhcHRlcnMgYW5kIHNlY3Rpb24gYmxvY2sgb3JkZXJpbmcuICBVcGRhdGVkIHRoZQoJcHVibGljIGhlYWRlciBmaWxlcyBhY2NvcmRpbmdseS4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfQ29weSk6IEFkdmFuY2Ugd2lkdGggYW5kIGdseXBoIGZvcm1hdAoJd2VyZSBub3QgY29ycmVjdGx5IGNvcGllZC4KCjIwMDEtMDItMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZWQgYW4KCXVubmVjZXNzYXJ5IGZwcmludGYoIHN0ZGVyciwgLi4uICkuCgoyMDAxLTAyLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBBZGRlZCBjb2RlIHRvIGdldCB0aGUKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSB2YWx1ZSBhc3NpZ25lZCBpbiBwYXJzZV9mb250X21hdHJpeCwgaWYKCWF2YWlsYWJsZS4gIERlZmF1bHQgdG8gMTAwMCBpZiBub3QgYXZhaWxhYmxlLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBsb2dpYyB0byBnZXQKCXRoZSB1bml0c19wZXJfRU0gZnJvbSB0aGUgRm9udE1hdHJpeC4KCgkoY2ZmX3BhcnNlX2ZpeGVkX3Rob3VzYW5kKTogTmV3IGZ1bmN0aW9uLiBHZXRzIGEgcmVhbCBudW1iZXIgZnJvbQoJdGhlIENGRiBmb250LCBidXQgbXVsdGlwbGllcyBieSAxMDAwICh0aGlzIGlzIHRvIGF2b2lkIHJvdW5kaW5nCgllcnJvcnMgd2hlbiBwbGFjaW5nIHRoaXMgcmVhbCBudW1iZXIgaW50byBhIDE2LjE2IGZpeGVkIG51bWJlcikuCgoJKGNmZl9wYXJzZV9yZWFsKTogQWRkZWQgY29kZSBzbyB0aGF0IHRoZSBpbnRlZ2VyIHBhcnQgaXMgbW92ZWQKCWludG8gdGhlIGhpZ2ggc2l4dGVlbiBiaXRzIG9mIHRoZSAxNi4xNiBmaXhlZCBudW1iZXIuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IEFkZGVkIGxvZ2ljIHRvIGdldCB0aGUgdW5pdHMKCXBlciBFTSBmcm9tIHRoZSBDRkYgZGljdGlvbmFyeSwgaWYgYXZhaWxhYmxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBJbiBzdHJ1Y3QgQ0ZGX0ZvbnRfRGljdF8sCglhZGRlZCBhIHVuaXRzX3Blcl9lbSBtZW1iZXIgdG8gZmFjaWxpdGF0ZSBwYXNzaW5nIG9mIHVuaXRzX3Blcl9lbQoJZnJvbSBmdW5jdGlvbiBjZmZfcGFyc2VfZm9udF9tYXRyaXguCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX2FscGhhKTogTWFrZSBgLScgYSBsZWdhbCBhbHBoYW51bWVyaWMKCWNoYXJhY3Rlci4gIFRoaXMgaXMgc28gdGhhdCBmb250IG5hbWVzIHdpdGggYC0nIGFyZSBmdWxseSBwYXJzZWQsCglldGMuLi4KCjIwMDEtMDItMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoc2hpZnRfZWxlbWVudHMpOiBSZW1vdmUgaWYgY2xhdXNlICh3aGljaCBpcwoJb2Jzb2xldGUgbm93KS4KCgkocmVhbGxvY2F0ZV90MV90YWJsZSwgUFNfVGFibGVfRG9uZSk6IFJlcGxhY2UgUkVBTExPQygpIHdpdGggQUxMT0MoKQoJKyBNRU1fQ29weSgpIHRvIGF2b2lkIGEgbWVtb3J5IGJ1Zy4KCjIwMDEtMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgaW5kZXggc29ydGluZyByb3V0aW5lIHRvIHBsYWNlCgljYXBpdGFsIGxldHRlcnMgYmVmb3JlIHNtYWxsIG9uZXMuICBBZGRlZCB0aGUgIjxvcmRlcj4iIG1hcmtlciB0bwoJc2VjdGlvbiBibG9ja3MgaW4gb3JkZXIgdG8gZ2l2ZSB0aGUgb3JkZXIgb2YgYmxvY2tzLgoKMjAwMS0wMS0zMCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IExhdGVzdCB1cGRhdGVzIHRvIE1pY3Jvc29mdCBsYW5ndWFnZQoJSUQgY29kZXMuCgoyMDAxLTAxLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBoZXVyaXN0aWMgdG8gZ2V0Cgl1bml0c19wZXJfRU0gZnJvbSB0aGUgZm9udCBtYXRyaXguCgoJKHBhcnNlX2RpY3QpOiBEZWxldGVkIHRlc3QgdG8gc2VlIHdoZXRoZXIgdGhlIEZvbnRJbmZvIGtleXdvcmQgaGFzCgliZWVuIHNlZW4uICBEZWxldGlvbiBvZiB0aGlzIHRlc3QgYWxsb3dzIGZvbnRzIHdpdGhvdXQgRm9udEluZm8KCWRpY3Rpb25hcmllcyB0byBiZSBwYXJzZWQgYnkgdGhlIFR5cGUgMSBkcml2ZXIuCgoJKFQxX09wZW5fRmFjZSk6IERlbGV0ZWQgZW1wdHkgc3Vicm91dGluZXMgYXJyYXkgdGVzdCB0byBtYWtlIHN1cmUKCWZvbnRzIHdpdGggbm8gc3Vicm91dGluZXMgc3RpbGwgYXJlIHBhcnNlZC4KCjIwMDEtMDEtMTcgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmcmVhZC5jIChwY2ZfZ2V0X3Byb3BlcnRpZXMsIHBjZl9nZXRfbWV0cmljcywKCXBjZl9nZXRfYml0bWFwcyk6IEZpeCBjb21waWxlciBlcnJvcnMuCgoyMDAxLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmM6IFJlbW92ZWQgc29tZSBjb21waWxhdGlvbiB3YXJuaW5ncyByZWxhdGVkCgl0byBjb21wYXJpc29uIG9mIHNpZ25lZCB2cy4gdW5zaWduZWQgaW50ZWdlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQ2hhbmdlZCB0aGUgZGVidWcgdHJhY2UKCWNvbnN0YW50cyBmcm9tIHRyYWNlX3QyeHh4eCB0byB0cmFjZV9jZmZ4eHh4IHRvIGJlIGFibGUgdG8gY29tcGlsZQoJdGhlIENGRiBkcml2ZXIgaW4gZGVidWcgbW9kZS4KCjIwMDEtMDEtMTEgIE1hdHRoZXcgQ3Jvc2J5ICA8bWNyb3NieUBtYXJ0aG9uLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogRml4IHByb2JsZW1zIHdpdGggc2VwYXJhdGUKCS0tcHJlZml4IGFuZCAtLWV4ZWMtcHJlZml4LgoKMjAwMS0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIGNyb3NzLXJlZmVyZW5jZXMgZ2VuZXJhdGlvbiBhcyB3ZWxsIGFzCgltb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBwYXRobmFtZSB3aWxkY2FyZCBtYXRjaGluZy4KCjIwMDEtMDEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IE1pbm9yIGltcHJvdmVtZW50cyB0byByZWR1Y2UgdW53YW50ZWQgc3BhY2VzCglhbmQgZW1wdHkgbGluZXMgaW4gb3V0cHV0LgoKMjAwMS0wMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEltcHJvdmVkIHNjcmlwdCB0byBnZW5lcmF0ZSB0YWJsZSBvZiBjb250ZW50cwoJYW5kIGluZGV4IHBhZ2VzLiAgSXQgYWxzbyBzdXBwb3J0cyB3aWxkY2FyZHMgb24gbm9uIFVuaXggc3lzdGVtcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvKi5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyouaDogVXBkYXRlZCBjb21tZW50cwoJdG8gaW5jbHVkZSBzZWN0aW9uIGRlZmluaXRpb25zL2RlbGltaXRhdGlvbnMgZm9yIHRoZSBBUEkgUmVmZXJlbmNlCglnZW5lcmF0b3IuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IE1vdmVkIGRlY2xhcmF0aW9uIG9mCglgRlRfR2VuZXJpY19GaW5hbGl6ZXInIGFuZCB0aGUgYEZUX0dlbmVyaWMnIHN0cnVjdHVyZSB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaDogaGVyZS4KCjIwMDEtMDEtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRlZCBVbmljb2RlIGNvZGUgcmFuZ2UgY29tbWVudHMuCgoyMDAxLTAxLTAzICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9ydWxlcy5tazogVXNlIGNmZmdsb2FkLntjLGh9IGluc3RlYWQgb2YgdDJnbG9hZC57YyxofS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogQ2hhbmdlZCB0byB1c2UgY2ZmdHlwZXMuaAoJKGNmZmVycnMuaCkgaW5zdGVhZCBvZiB0MnR5cGVzLmggKHQyZXJyb3JzLmgsIHJlc3BlY3RpdmVseSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IE1lcmdlZCBpbiBjaGFuZ2VzIGZyb20KCXQydHlwZXMuaCBhbmQgbWFkZSB0aGlzIHRoZSBjYW5vbmljYWwgYHR5cGVzJyBoZWFkZXIgZm9yIHRoZSBDRkYKCWRyaXZlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJ0eXBlcy5oOiBUaGlzIGZpbGUgd2FzIG1lcmdlZCB3aXRoCgljZmZ0eXBlcy5oIGFuZCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MmVycm9ycy5oOglSZW5hbWVkIHRvIGNmZmVycnMuaC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZm9ianMuaCwgc3JjL2NmZi9jZmZwYXJzZS5jLAoJc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL2NmZmxvYWQuYywKCXNyYy9jZmYvY2ZmZ2xvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5oOiBDaGFuZ2VkIHRvIHVzZQoJY2ZmZ2xvYWQue2MsaH0gaW5zdGVhZCBvZiB0Mmdsb2FkLntjLGh9LiAgQWxsIG9jY3VyZW5jZXMgb2YgdDJfCgkoVDJfKSB3ZXJlIHJlcGxhY2VkIHdpdGggY2ZmXyAoQ0ZGXywgcmVzcGVjdGl2ZWx5KS4KCgkqIHNyYy9jZmYvdDJnbG9hZC5oOiBSZW5hbWVkIGNmZmdsb2FkLmguCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYzogUmVuYW1lZCBjZmZnbG9hZC5jCgoyMDAwLTAxLTAyICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBidWlsZHMvdm1zOiBTdXBwb3J0IGZpbGVzIGZvciBWTVMgYXJjaGl0ZWN0dXJlIGFkZGVkLgoJKiBkZXNjcmlwLm1tcywgc3JjLyovZGVzY3JpcC5tbXM6IFZNUyBtYWtlZmlsZXMgYWRkZWQuCgkqIFJFQURNRS5WTVM6IE5ldyBmaWxlLgoKMjAwMC0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTElDRU5TRS5UWFQ6IEFkZGVkIGluZm8gYWJvdXQgUENGIGRyaXZlciBsaWNlbnNlLgoKMjAwMS0wMS0wMSAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvKjogTmV3IGRyaXZlciBtb2R1bGUgZm9yIFBDRiBmb250IGZvcm1hdCAodXNlZCBpbgoJWCBXaW5kb3cgU3lzdGVtKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogQWRkZWQgdmFsdWVzIGZvcgoJUENGIGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wY2Z0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogQWRkZWQgUENGIGRyaXZlciBtb2R1bGUuCgoyMDAxLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfQ2hhcl9JbmRleCk6IEZpeCBwYXJhbWV0ZXIgdHlwZS4KCjIwMDAtMTItMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGVzLm1rIChjbGVhbl9tb2R1bGVfbGlzdCk6IEZpeGVkIGRlbGV0aW9uIG9mIG1vZHVsZQoJZmlsZSBpbiBjYXNlIGBtYWtlIG1ha2VfbW9kdWxlX2xpc3QnIGlzIGNhbGxlZCBiZWZvcmUgYG1ha2Ugc2V0dXAnLgoKMjAwMC0xMi0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0NoYXJzZXQpOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlcy4KCShDRkZfTG9hZF9DaGFyc2V0LCBDRkZfTG9hZF9FbmNvZGluZyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZQoJZGVmaW5pdGlvbi4KCjIwMDAtMTItMzAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogQ2hhbmdlZCB0aGUgc3RydWN0dXJlcyBmb3IKCUNGRl9FbmNvZGluZyBhbmQgQ0ZGX0VuY29kaW5nIGZvciB0aGUgbmV3IGltcGxlbWVudGF0aW9ucyBvZiB0aGUKCWNoYXJzZXQgYW5kIGVuY29kaW5nIHBhcnNlcnMgaW4gdGhlIENGRiBkcml2ZXIuCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAodDJfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlLAoJdDJfb3BlcmF0b3Jfc2VhYyk6IEFkZGVkIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdXNlIGluIGltcGxlbWVudGluZyB0aGUKCXNlYWMgZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBUeXBlIDIgZW5kY2hhciBvcGVyYXRvci4KCShUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHNlYWMgZW11bGF0aW9uIGZvciB0aGUgZW5kY2hhcgoJb3BlcmF0b3IuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcsIENGRl9Mb2FkX0NoYXJzZXQsCglDRkZfRG9uZV9FbmNvZGluZywgQ0ZGX0RvbmVfQ2hhcnNldCk6IEV4dGVuZGVkIHRvIGxvYWQgYW5kIHBhcnNlIHRoZQoJY2hhcnNldC9lbmNvZGluZyB0YWJsZXMsIGFuZCBmcmVlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGVtIHdoZW4gdGhlCglDRkYgZHJpdmVyIGlzIGZpbmlzaGVkIHdpdGggdGhlbS4gIEFkZGVkIHRhYmxlcwoKCSAgICBjZmZfaXNvYWRvYmVfY2hhcnNldAoJICAgIGNmZl9leHBlcnRfY2hhcnNldAoJICAgIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldAoJICAgIGNmZl9zdGFuZGFyZF9lbmNvZGluZwoJICAgIGNmZl9leHBlcnRfZW5jb2RpbmcKCglzbyB0aGF0IHRoZSBlbmNvZGluZy9jaGFyc2V0IHBhcnNlciBjYW4gaGFuZGxlIHByZWRlZmluZWQgZW5jb2RpbmdzIGFuZAoJY2hhcnNldHMuCgoyMDAwLTEyLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKFQyX0xvYWRfR2x5cGgpOiBBZGRlZCBjb2RlCXNvIHRoYXQgdGhlIGZvbnQKCXRyYW5zZm9ybSBpcyBhcHBsaWVkLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBjb2RlIHNvIHRoYXQKCXRoZSBmb250IG1hdHJpeCBudW1iZXJzCWFyZSBzY2FsZWQgYnkgMS8obWF0cml4LT55eSkuICBBbHNvLCB0aGUKCW9mZnNldCB2ZWN0b3Igbm93IGNvbnRhaW5zIGludGVnZXIgdmFsdWVzIGluc3RlYWQgb2YgMTYuMTYgZml4ZWQKCW51bWJlcnMuCgoyMDAwLTEyLTIyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNvbW1lbnRzIGFuZCBjb21tZW50ZWQtb3V0IGNvZGUuCgoyMDAwLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRhZm0uYywgc3JjL2NpZC9jaWRhZm0uaDogcmVtb3ZlZCB1bi1uZWVkZWQgZmlsZXMsCgl3ZSdsbCB3b3JrIG9uIHN1cHBvcnRpbmcgQ0lEIEFGTSBmaWxlcyBsYXRlciBJIGd1ZXNzIDotKQoKMjAwMC0xMi0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQsIGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCUNoYW5nZWQgc28gdGhhdCBmb250cyB3aXRoIGEgbm9uLXN0YW5kYXJkIEZvbnRNYXRyaXggcmVuZGVyCgljb3JyZWN0bHkuICBQcmV2aW91c2x5LCB0aGUgZmlyc3QgZ2x5cGggcmVuZGVyZWQgZnJvbSBzdWNoIGEKCWZvbnQgZGlkIG5vdCBoYXZlIHRoZSB0cmFuZm9ybWF0aW9uIG1hdHJpeCBhcHBsaWVkLgoKMjAwMC0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi5tazogQWRkZWQgbG90cyBvZiBgLlBIT05ZJyB0YXJnZXRzLgoKMjAwMC0xMi0xNyAgS2Fyc3RlbiBGbGVpc2NoZXIgIDxrZmxlaXNjMUBmb3JkLmNvbT4KCgkqICoubWs6IEltcGxlbWVudGVkIGBwbGF0Zm9ybScgdGFyZ2V0IHRvIGRpc2FibGUgYXV0by1kZXRlY3Rpb24uCgoyMDAwLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2Rlc2lnbi9tb2R1bGVzLmh0bWw6IFJlbW92ZWQuICBDb3ZlcmVkIGJ5IGRlc2lnbi0qLmh0bWwuCgoJKiBJTlNUQUxMOiBBZGRlZCBpbmZvIGFib3V0IG1ha2VwcC4KCjIwMDAtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJQWRkZWQgc3VwcG9ydCBmb3IgY2xpcHBlZCBkaXJlY3QgcmVuZGVyaW5nIGluIHRoZSBzbW9vdGggcmVuZGVyZXIuCglUaGlzIHNob3VsZCBub3QgYnJlYWsgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXhpc3RpbmcgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBNb3ZlCglkZWZpbml0aW9uIG9mIHRoZSBGVF9CQm94IHN0cnVjdHVyZSBmcm9tIHRoZSBmb3JtZXIgdG8gdGhlIGxhdHRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEFkZCBgZnRfcmFzdGVyX2ZsYWdfY2xpcCcgdmFsdWUgdG8KCUZUX1Jhc3Rlcl9GbGFnIGVudW1lcmF0aW9uLgoJQWRkIGBjbGlwX2JveCcgZWxlbWVudCB0byBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2NvbnZlcnRfZ2x5cGgpOiBJbXBsZW1lbnQgaXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgb24gV2luMzIsIGxpc3RpbmcgdGhlCgluZXcgIm1ha2Ugc2V0dXAgbGlzdCIgdGFyZ2V0IHVzZWQgdG8gbGlzdCBzdXBwb3J0ZWQKCWNvbXBpbGVycy90YXJnZXRzLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19yZW5kZXIpOiBUZXN0IGZvciB1bnN1cHBvcnRlZAoJZGlyZWN0IHJlbmRlcmluZyBiZWZvcmUgdGVzdGluZyBhcmd1bWVudHMuCgoyMDAwLTEyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogRml4ZWQgaGVhZGVyIGluY2x1c2lvbiBtYWNyb3MKCXRvIHVzZSBkaXJlY3QgZGVmaW5pdGlvbnMuICBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBkbyB0aGVzZSB0aGluZ3MKCWluIGEgcG9ydGFibGUgd2F5IDotKCAgVGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2hvdWxkIGZvbGxvdyBzaG9ydGx5Cgl0aG91Z2ggZXZlcnl0aGluZyBjb21waWxlcyBub3cuCgoJKiBidWlsZHMvY29tcGlsZXIvaW50ZWxjLm1rLCBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rOiBOZXcgZmlsZXMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW50ZWwgQy9DKysKCWNvbXBpbGVyLCBhcyB3ZWxsIGFzIF9wcmVsaW1pbmFyeV8gKHJlYWQ6IGRvZXNuJ3Qgd29yayEpIHN1cHBvcnQgZm9yCglXYXRjb20uICBBbHNvIGFkZGVkIGEgbmV3IHNldHVwIHRhcmdldC4gIFR5cGUgIm1ha2Ugc2V0dXAgbGlzdCIgZm9yCglhIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbW1hbmQtbGluZSBjb21waWxlcnMgb24gV2luMzIuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IEFkZGVkIGR1bW15IHN5bWJvbCB0byBhdm9pZCBlbXB0eSBmaWxlIGlmCgljb25kaXRpb25hbHMgYXJlIG9mZi4KCjIwMDAtMTItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IEZpeGVkIHR5cG9zLiAgRml4ZWQgaW5jbHVzaW9uIG9mIHdyb25nCglmdGNvbmZpZy5oIGZpbGUuCgoyMDAwLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oIChGVDJfUk9PVCwgRlQyX0NPTkZJR19ST09UKToKCVJlbW92ZWQuICBBTlNJIEMgZG9lc24ndCAoZXhwbGljaXRseSkgYWxsb3cgbWFjcm8gZXhwYW5zaW9uIGluCglhcmd1bWVudHMgdXNpbmcgYCMjJy4KCShGVDJfUFVCTElDX0ZJTEUsIEZUMl9DT05GSUdfRklMRSwgRlQyX0lOVEVSTkFMX0ZJTEUpOiBVc2UgZGlyZWN0b3J5CgluYW1lcyBkaXJlY3RseS4gIE1ha2UgdGhlbSBjb25maWd1cmFibGUuICBVc2UgYCMjJyB0byBzdHJpcCBsZWFkaW5nCglhbmQgdHJhaWxpbmcgc3BhY2VzIGZyb20gYXJndW1lbnRzLgoKCSogYnVpbGRzL3VuaXgvZnQydW5peC5oOiBBZGFwdGVkLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoZnRfYWxsb2MsIGZ0X3JlYWxsb2MsIGZ0X2ZyZWUsIGZ0X2lvX3N0cmVhbSwKCWZ0X2Nsb3NlX3N0cmVhbSk6IFVzZSBGVF9DQUxMQkFDS19ERUYuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jOiBVc2UgbmV3IGhlYWRlciBzY2hlbWUuCgkoRlRfRG9uZV9NZW1vcnkpOiBVc2UgZnJlZSgpIGZyb20gRlRfTWVtb3J5IHN0cnVjdHVyZS4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jLCBzcmMvYmFzZS9mdG1hYy5jOiBIZWFkZXIgc2NoZW1lIGZpeGVzLgoKMjAwMC0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCAoRlQyX0NPTkZJR19ST09ULAoJRlQyX1BVQkxJQ19GSUxFLCBGVDJfQ09ORklHX0ZJTEUsIEZUMl9JTlRFUk5BTF9GSUxFLAoJRlRfU09VUkNFX0ZJTEUpOiBVc2UgYCMjJyBvcGVyYXRvciB0byBiZSByZWFsbHkgQU5TSSBDIGNvbXBsaWFudC4KCjIwMDAtMTItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogUmVtb3ZlIHVudXNlZCBVU0VfQ0ZMQUdTIHZhcmlhYmxlLgoKMjAwMC0xMi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi8qLmg6IENoYW5nZWQgYm9keSBpbmNsdXNpb24gbWFjcm8gbmFtZXMgdG8gc3RhcnQgYW5kIGVuZCB3aXRoCglgX18nICh0aG9zZSB3aGljaCBoYXZlbid0IGNvbnZlcnRlZCB5ZXQpLiAgRml4ZWQgbWlub3IgY29udmVyc2lvbgoJaXNzdWVzLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBSZW1vdmUgdW51c2VkIENBTENfTGVuZ3RoKCkgbWFjcm8uCgoyMDAwLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogKi8qLltjaF06IENoYW5nZWQgc291cmNlIGZpbGVzIHRvIGFkaGVyZSB0byB0aGUgbmV3CgloZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4gIE5vdCBjb21wbGV0ZWx5IHRlc3RlZCBidXQgd29ya3MgZm9yIG5vdwoJaGVyZS4KCgkqIHNyYy9jZmYvdDJkcml2ZXIuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QyZHJpdmVyLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZkcml2ci5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJsb2FkLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90Mm9ianMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJ0b2tlbnMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnRva2VuLmg6IE5ldyBmaWxlLgoKCSogc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDAtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1X0RvbmUpOiBGaXhlZCBtZW1vcnkgbGVhay4KCjIwMDAtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGUubWs6IFJlcGxhY2VkIGB4eHggIycgd2l0aCBgeHh4JChzcGFjZSkuCgkqIGJ1aWxkcy9vczIvZGV0ZWt0Lm1rLCBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBNb3ZlZCBjb21tZW50IHRvCglhdm9pZCB0cmFpbGluZyBzcGFjZXMgaW4gdmFyaWFibGUuCgkqIGJ1aWxkcy9mcmVldHlwZS5tazogVXNlICQoRCkgaW5zdGVhZCBvZiAkRCB0byBtYWtlIHN0YXRlbWVudCBtb3JlCglyZWFkYWJsZS4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEZvcm1hdHRpbmcuCgoyMDAwLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmM6IEZpeGVkIGEgYnJva2VuIGluY2x1c2lvbiBvZiBjb21wb25lbnQKCWhlYWRlciBmaWxlcyAoYW4gRlRfRkxBVF9DT01QSUxFIHRlc3Qgd2FzIG1pc3NpbmcpLgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZAoJYW4gb2NjYXNpb25hbCBjcmFzaCB3aGVuIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIChkdWUgdG8gYSBkYW5nbGluZwoJcG9pbnRlcikuCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9Eb25lX01lbW9yeSk6IEZpeGVkIGFuIG9idmlvdXMgYnVnOgoJVGhlIEFOU0kgImZyZWUoKSIgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbnN0ZWFkIG9mICJtZW1vcnktPmZyZWUoKSIuCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBzZWN0aW9uIGZpbHRlcmluZywgbXVsdGktcGFnZSBnZW5lcmF0aW9uCgkoaW5kZXggcGFnZSBnZW5lcmF0aW9uIGlzIHN0aWxsIG1pc3NpbmcgdGhvdWdoKS4KCjIwMDAtMTItMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IFRoZSBmaWxlICJmdDJ1bml4LmgiCglpcyBub3cgaW5zdGFsbGVkIGFzIDxmdDJidWlsZC5oPiBmb3IgVW5peCBzeXN0ZW1zLiAgTm90ZSB0aGF0IHdlCglzdGlsbCB1c2UgdGhlICJmcmVldHlwZTIvZnJlZXR5cGUiIGluc3RhbGxhdGlvbiBwYXRoIGZvciBub3cuCgoJKiAqLyouW2NoXTogTm93IHVzaW5nIDxmdDJidWlsZC5oPiBhcyB0aGUgZGVmYXVsdCBidWlsZCBhbmQgc2V0dXAKCWNvbmZpZ3VyYXRpb24gZmlsZSBpbiBhbGwgcHVibGljIGhlYWRlcnMuICBJbnRlcm5hbCBzb3VyY2UgZmlsZXMKCXN0aWxsIG5lZWQgc29tZSBjaGFuZ2VzIHRob3VnaC4KCgkqIGJ1aWxkcy9kZXZlbC9mdDJidWlsZC5oLCBidWlsZHMvZGV2ZWwvZnRvcHRpb24uaDogQ3JlYXRlZCBhIG5ldwoJZGlyZWN0b3J5IHRvIGhvbGQgYWxsIGRldmVsb3BtZW50IG9wdGlvbnMgZm9yIGJvdGggdGhlIFVuaXggYW5kCglXaW4zMiBkZXZlbG9wZXIgYnVpbGRzLgoKCSogYnVpbGRzL3dpbjMyL2RldGVjdC5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1kZXYubWs6IENoYW5nZWQgdGhlIGRldmVsb3BlciBidWlsZCB0YXJnZXRzIHRvCgkiZGV2ZWwtZ2NjIiBhbmQgImRldmVsLWJjYyIgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXZlbG9wIHdpdGggdGhlCglCb3JsYW5kIEMrKyBjb21waWxlci4KCjIwMDAtMTItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuMSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sIGJ1aWxkcy91bml4L2NvbmZpZ3VyZSwKCWJ1aWxkcy9jeWd3aW4vY29uZmlndXJlLmluLCBidWlsZHMvY3lnd2luL2NvbmZpZ3VyZTogU2V0dGluZwoJInZlcnNpb25faW5mbyIgdG8gNjoxOjAgZm9yIHRoZSAyLjAuMSByZWxlYXNlLgoKCSogQ0hBTkdFUzogQWRkZWQgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgYmV0d2VlbiAyLjAuMSBhbmQgMi4wLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnRjb25maWcuaW46IENoYW5nZXMKCXRvIGFsbG93IGNvbXBpbGF0aW9uIHVuZGVyIFVuaXggd2l0aCB0aGUgVW5peC1zcGVjaWZpYyBjb25maWcKCWZpbGVzLgoKMjAwMC0xMi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogUmV2aXNlZC4KCSogYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssIGJ1aWxkcy9jb21waWxlci92aXN1YWxhZ2UubWssCglidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjYy5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjZC5tazogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoyMDAwLTExLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKC5QSE9OWSk6IEFkZGluZyBgZGlzdGNsZWFuJy4KCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rICguUEhPTlkpOiBBZGRpbmcgYGRldmVsJywgYHVuaXgnLCBgbGNjJywKCWBzZXR1cCcuCgoyMDAwLTExLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub2dyPgoKCSogSU5TVEFMTDogU2xpZ2h0bHkgdXBkYXRlZCB0aGUgcXVpY2sgc3RhcnRlciBkb2N1bWVudGF0aW9uIHRvCglpbmNsdWRlIElERSBjb21waWxhdGlvbiwgcHJldmVudCBhZ2FpbnN0IEJTRCBNYWtlLCBhbmQgc3BlY2lmeSAibWFrZQoJc2V0dXAiIGluc3RlYWQgb2YgYSBzaW5nbGUgIm1ha2UiIGZvciBidWlsZCBjb25maWd1cmF0aW9uLgoKCSogaW5jbHVkZS9jb25maWcvZnRidWlsZC5oLCBpbmNsdWRlL2ludGVybmFsL2ludGVybmFsLmg6IEFkZGVkIG5ldwoJY29uZmlndXJhdGlvbiBmaWxlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24gb2YgYWxsIHB1YmxpYywKCWNvbmZpZ3VyYXRpb24sIGFuZCBpbnRlcm5hbCBoZWFkZXIgZmlsZXMgZm9yIEZyZWVUeXBlIDIuICBNb2RpZmllZAoJYWxsIGhlYWRlcnMgdW5kZXIgImluY2x1ZGUvZnJlZXR5cGUiIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuICBOb3RlCgl0aGF0IHdlIHN0aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBsaWJyYXJ5IHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzCgl0aG91Z2guCgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBuZXcgZmlsZXMgdG8gc3VwcG9ydCBjb21waWxhdGlvbiB3aXRoCgl0aGUgZnJlZSBCb3JsYW5kIEMrKyBjb21tYW5kLWxpbmUgY29tcGlsZXIuICBNb2RpZmllZCB0aGUgZGV0ZWN0aW9uCglydWxlcyB0byByZWNvZ25pemUgdGhlIG5ldyAiYmNjMzIiIHRhcmdldCBpbiAibWFrZSBzZXR1cCBiY2MzMiIuCgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRwb3N0LmMsIHNyYy9zZm50L3R0c2JpdC5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLAoJc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IEZpeGVkIGEgZmV3IGNvbXBhcmlzb25zIHRoYXQgQm9ybGFuZCBDKysKCWRpZG4ndCByZWFsbHkgbGlrZS4gIEJhc2ljYWxseSwgdGhpcyBjb21waWxlciBjb21wbGFpbnMgd2hlbiBGVF9VSW50CglpcyBjb21wYXJlZCB0byBGVF9VU2hvcnQgKGFwcGFyZW50bHksIGl0IHByb21vdGVzIGBVU2hvcnQnIHRvIGBJbnQnCglpbiB0aGVzZSBjYXNlcykuCgoyMDAwLTExLTMwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEFkZGVkIGNhbGN1bGF0aW9uIG9mIGBmYWNlLT5oZWlnaHQnIGZvcgoJcHVyZSBDRkYgZm9udHMuCgoJKiB0MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogRml4ZWQgY29tcHV0YXRpb24gb2YgYGZhY2UtPmhlaWdodCcuCgoyMDAwLTExLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ29uaWNfQ2hlY2spOiBGaXhlZCBhIHJlYWxseSBzdHVwaWQKCWJ1ZyBpbiB0aGUgZm9ybXVsYSB1c2VkIHRvIGNvbXB1dGUgdGhlIGNvbmljIELpemllciBleHRyZW1hCglvZiBub24tbW9ub3Rvbm91cyBhcmNzLgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfU2V0X1JlbmRlcmVyKTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKSwKCXNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Eb25lLCBGVENfTWFuYWdlcl9SZXNldCwKCUZUQ19NYW5hZ2VyX0xvb2t1cF9GYWNlLCBGVENfTWFuYWdlcl9Mb29rdXBfU2l6ZSwKCUZUQ19NYW5hZ2VyX1JlZ2lzdGVyX0NhY2hlKSwgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKCShGVENfU0JpdF9DYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmggKEZUQ19HbHlwaE5vZGVfSW5pdCksCglzcmMvaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIChGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVc2UgRlRfRVhQT1JULgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSB0dHNiaXQuaCBhbmQgdHRwb3N0Lmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcywgU2V0X1BpeGVsX1NpemVzKTogU2V0Cglgc2l6ZS0+c3RyaWtlX2luZGV4JyBvbmx5IGNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBJbmNsdWRlIHQxYWZtLmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuaDogTW92ZSBhbGwgdHlwZSBkZWZpbml0aW9ucyB0by4uLgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBOZXcgZmlsZS4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVc2UgaXQuCgoyMDAwLTExLTI5ICA/Pz8gPz8/ICA8ZGFyaW5AZWF6ZWwuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IFJlcGxhY2VkIEZUX0NBVCBhbmQgRlRfWENBVAoJd2l0aCBhIGRpcmVjdCBzb2x1dGlvbiAod2hpY2ggYWxzbyBzYXRpZmllcyBwaWNreSBjb21waWxlcnMpLgoKMjAwMC0xMS0yOCAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfSW5pdF9TaXplKTogRml4ICNpZmRlZidzIHRvIHdvcmsgd2l0aAoJZGlzYWJsZWQgaW50ZXJwcmV0ZXIgYWxzby4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZV9Db3VudCk6IEZpeCBpbmNvcnJlY3QKCXBhcmVudGhlc2VzLgoKMjAwMC0xMS0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIGxvZ2ljIHRvIGdseXBoCgl3aWR0aCBzZXR0aW5nIGNvZGUgdG8gdGFrZSBpbnRvIGFjY291bnQgZXZlbi9vZGQgYXJndW1lbnQgY291bnRzCglhbmQgZ2x5cGggd2lkdGggb3BlcmFuZCBiZWZvcmUgZW5kY2hhci9obW92ZXRvL3Ztb3ZldG8uCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvYW5zaS9hbnNpLm1rOiBGaXggaW5jbHVzaW9uIG9yZGVyIG9mIGZpbGVzLgoKMjAwMC0xMS0yNiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDb21wdXRlIHN0eWxlIGZsYWdzLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsgKENMRUFOX0xJQlJBUlkpOiBGaXggcnVsZSBhbmQKCWNvbmRpdGlvbmFsLgoKMjAwMC0xMS0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9Eb25lX1BhcnNlKTogUmVuYW1lZCB0by4uLgoJKFQxX0ZpbmFsaXplX1BhcnNlcik6IE5ldyBmdW5jdGlvbiAodG8gYXZvaWQgbmFtZSBjbGFzaCB3aXRoIGEKCWZ1bmN0aW9uIGluIHRoZSBQU0F1eCBtb2R1bGUpLgoJKFQxX0RlY3J5cHQpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGR1cGxpY2F0ZWQgaW4gdGhlIFBTQXV4IG1vZHVsZS4KCShUMV9HZXRfUHJpdmF0ZV9EaWN0KTogQWRkZWQgYHBzYXV4JyBhcyBuZXcgcGFyYW1ldGVyOyB1c2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oOiBBZGFwdGVkLgoKMjAwMC0xMS0yMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEZvciBwdXJlIENGRiBmb250cywgc2V0Cglgcm9vdC0+bnVtX2ZhY2VzJyB0byBgY2ZmLT5udW1fZmFjZXMnIGFuZCBzZXQgYHVuaXRzX3Blcl9FTScKCXRvIDEwMDAuCgoJKiBzcmMvY2ZmL3QycGFyc2UuYyAocGFyc2VfdDJfcmVhbCk6IEZpeGVkIHJlYWwgbnVtYmVyIHBhcnNpbmcKCWxvb3AuCgoJKiBzcmMvY2ZmL3QybG9hZC5jIChUMl9HZXRfU3RyaW5nKTogQ2FsbGVkIFQyX0dldF9OYW1lIHdpdGggYQoJc2lkIHRoYXQgd2FzIG9mZiBieSBvbmUuCgoyMDAwLTExLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGRlZCBuZXcgZmllbGRzIHRvIGNvbnRyb2wKCWF1dG8taGludGluZyBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQWRkZWQgYXV0by1oaW50aW5nIHN1cHBvcnQgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCjIwMDAtMTEtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9va1VwX1RhYmxlLCBUVF9Mb2FkX0dlbmVyaWNfVGFibGUpOiBDaGFuZ2UKCXRyYWNpbmcgb3V0cHV0LgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogU2V0IGJvb2xlYW4gdmFyaWFibGUKCWBoYXMtb3V0bGluZScgdG8gdHJ1ZSBvbmx5IGlmIHRoZSBmb250IGhhcyBhIGBnbHlmJyBvciBgQ0ZGICcgdGFibGUuCgoyMDAwLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IEZpeCByYXN0ZXIxLT5yYXN0ZXIgYW5kCgl0eXBlMXotPnR5cGUxLgoKMjAwMC0xMS0xMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL2N5Z3dpbi9mcmVldHlwZS1jb25maWcuaW46CglBZGRlZCBhIC0tbGlidG9vbCBvcHRpb24uICBXaGVuIGZyZWV0eXBlLWNvbmZpZyAtLWxpYnRvb2wgaXMKCWludm9rZWQsIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnkKCWlzIHJldHVybmVkLgoKMjAwMC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi9jeWd3aW4tZGVmLmluOiBTYW1lIGZpeCBhcyBwcmV2aW91cy4KCjIwMDAtMTEtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbjogQWRkCgoJICAgIElOU1RBTExfUFJPR1JBTSA6PSBASU5TVEFMTF9QUk9HUkFNQAoJICAgIElOU1RBTExfU0NSSVBUICA6PSBASU5TVEFMTF9TQ1JJUFRACgoJc28gdGhhdCBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnIGRvZXMgbm90IGZhaWwuCgoyMDAwLTExLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOgoJTW92ZSB0ZXN0IGRvd24gZm9yIGVtcHR5IC0tZXhlYy1wcmVmaXguCglGaXggLS12ZXJzaW9uLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9pbnN0YWxsLm1rOiBVc2UKCSQoSU5TVEFMTF9TQ1JJUFQpIGZvciBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rOiBGaXggY2xlYW4gdGFyZ2V0IG5hbWVzLgoKMjAwMC0xMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT0KCgpMb2NhbCBWYXJpYWJsZXM6CnZlcnNpb24tY29udHJvbDogbmV2ZXIKY29kaW5nOiBsYXRpbi0xCkVuZDoK