MjAwNS0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjEwIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBzcmMvcGNmL3JlYWRtZTogUmVuYW1lZCB0by4uLgoJKiBzcmMvcGNmL1JFQURNRTogVGhpcy4KCjIwMDUtMDYtMDcgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvKjogQWRkZWQgY29weXJpZ2h0IG5vdGVzLCByZXdvcmtlZCBzb21lIGNvbW1lbnRzLgoKMjAwNS0wNi0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogQWRkIGNvcHlyaWdodCBub3RpY2VzIHRvIGFsbCBmaWxlcyB3aGljaCBkb24ndCBoYXZlIG9uZS4KCgkqIGRvY3MvbGljZW5zZS50eHQ6IFJlbmFtZWQgdG8uLi4KCSogZG9jcy9MSUNFTlNFLlRYVDogVGhpcy4KCSogZG9jcy9GVEwudHh0OiBSZW5hbWVkIHRvLi4uCgkqIGRvY3MvRlRMLlRYVDogVGhpcy4KCSogZG9jcy9HUEwudHh0OiBSZW5hbWVkIHRvLi4uCgkqIGRvY3MvR1BMLlRYVDogVGhpcy4KCgkqIGRvY3MvUEFURU5UUzogU2xpZ2h0bHkgcmV3b3JkZWQuICBTdWdnZXN0ZWQgYnkgU3lsdmFpbiBCZXVjbGVyCgk8YmV1Y0BnbnUub3JnPi4KCjIwMDUtMDYtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9PdXRsaW5lX01vdmVUb0Z1bmMsCglGVF9PdXRsaW5lX0xpbmVUb0Z1bmMsIEZUX091dGxpbmVfQ29uaWNUb0Z1bmMsCglGVF9PdXRsaW5lX0N1YmljVG9GdW5jLCBGVF9SYXN0ZXJfUmVuZGVyRnVuYyksCglpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmggKEZUX0dseXBoX1RyYW5zZm9ybUZ1bmMsCglGVF9SZW5kZXJlcl9SZW5kZXJGdW5jLCBGVF9SZW5kZXJlcl9UcmFuc2Zvcm1GdW5jKTogRG9uJ3QgdXNlCglgY29uc3QnIHRvIHN0YXkgY29tcGF0aWJsZSB3aXRoIEZyZWVUeXBlIDIuMS45LgoKMjAwNS0wNi0wMSAgQWRhbSBELiBNb3NzICA8YWRhbUBnaW1wLm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmMgKGZ0X3N0cm9rZXJfaW5zaWRlKTogUmV2ZXJ0IGBzaWdtYScgcGF0Y2ggZnJvbQoJMjAwNC0wNy0xMTsgdGhpcyBnaXZlcyBtdWNoIGJldHRlciByZXN1bHRzIHVuZGVyIG5vcm1hbAoJY2lyY3Vtc3RhbmNlcy4KCjIwMDUtMDUtMzAgIENoaWEgSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJpdG1hcC5oIChGVF9CaXRtYXBfRW1ib2xkZW4pOiBNaW5vcgoJZG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3V0bGluZV9FbWJvbGRlbik6IEZpeCB0eXBvcy4KCgkqIHNyYy9iYXNlL2Z0Yml0bWFwLmMgKEZUX0JpdG1hcF9FbWJvbGRlbik6IEFkZCBzdXBwb3J0IGZvciBiaXRtYXAKCW9mIHBpeGVsX21vZGUgRlRfUElYRUxfTU9ERV9HUkFZMiBvciBGVF9QSVhFTF9NT0RFX0dSQVk0LgoJSWYgeHN0ciBpcyBsYXJnZXIgdGhhbiA4IGFuZCBiaXRtYXAgaXMgb2YgcGl4ZWxfbW9kZQoJRlRfUElYRUxfTU9ERV9NT05PLCBzZXQgeHN0ciB0byA4IGluc3RlYWQgb2YgcmV0dXJuaW5nIGVycm9yLgoKMjAwNS0wNS0yOSAgQ2hpYSBJIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvYmFzZS9mdGJpdG1hcC5jIChGVF9CaXRtYXBfRW1ib2xkZW4pOiBGaXggZW1ib2xkZW5pbmcgYml0bWFwCglvZiBtb2RlIEZUX1BJWEVMX01PREVfR1JBWS4gIEFsc28gYWRkIHN1cHBvcnQgZm9yIG1vZGUKCUZUX1BJWEVMX01PREVfTENEIGFuZCBGVF9QSVhFTF9NT0RFX0xDRF9WLgoJKGZ0X2JpdG1hcF9hc3N1cmVfYnVmZmVyKTogRlRfUElYRUxfTU9ERV9MQ0QgYW5kIEZUX1BJWEVMX01PREVfTENEX1YKCXNob3VsZCBoYXZlIHBwYiAocGl4ZWwgcGVyIGJ5dGUpIDEuCglaZXJvIHRoZSBwYWRkaW5nIHdoZW4gdGhlcmUncyBubyBuZWVkIHRvIGFsbG9jYXRlIG1lbW9yeS4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogSGFuZGxlIHNsb3QtPmFkdmFuY2UKCXRvby4KCU1vcmUgc3VpdGVkIGVtYm9sZGVuaW5nIHN0cmVuZ3RoLgoKMjAwNS0wNS0yOCAgQ2hpYSBJIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvYmFzZS9mdGJpdG1hcC5jIChGVF9CaXRtYXBfRW1ib2xkZW4pOiBIYW5kbGUgbmVnYXRpdmUgcGl0Y2guCglIYW5kbGUgRlRfUElYRUxfTU9ERV9HUkFZIHdpdGggbnVtX2dyYXkgIT0gMjU2LgoJSW1wcm92ZSBzcGVlZCBmb3IgRlRfUElYRUxfTU9ERV9HUkFZLgoJKGZ0X2JpdG1hcF9hc3N1cmVfYnVmZmVyKTogQWNjZXB0IEZUX1BJWEVMX01PREVfTENEIGFuZAoJRlRfUElYRUxfTU9ERV9MQ0RfVi4KCjIwMDUtMDUtMjcgIENoaWEgSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jIChGVF9HbHlwaFNsb3RfRW1ib2xkZW4pOiBJbml0aWFsaXplIGBlcnJvcicuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZnRfY21hcF9kb25lX2ludGVybmFsKTogTmV3IGZ1bmN0aW9uLgoJKEZUX0NNYXBfRG9uZSk6IFJlbW92ZSBjbWFwIGZyb20gY21hcCBsaXN0LgoJKGRlc3Ryb3lfY2hhcm1hcHMsIEZUX0NNYXBfTmV3KTogRG9uJ3QgY2FsbCBGVF9DTWFwX0RvbmUgYnV0CglmdF9jbWFwX2RvbmVfaW50ZXJuYWwuCgoyMDA1LTA1LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0dQTC50eHQ6IFVwZGF0ZSBwb3N0YWwgYWRkcmVzcyBvZiBGU0YuCgoyMDA1LTA1LTI2ICBDaGlhIEkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaCAoRlRfQml0bWFwX0VtYm9sZGVuKTogSW1wcm92ZQoJZG9jdW1lbnRhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoRlRfQk9MRF9USFJFU0hPTEQpOiBSZW1vdmVkLgoJKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IENoZWNrIHdoZXRoZXIgc2xvdCBpcyBiaXRtYXAgb3duZXIuCglBbHdheXMgbW9kaWZ5IHRoZSBtZXRyaWNzLgoKMjAwNS0wNS0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNS0wNS0yNCAgQ2hpYSBJIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Yml0bWFwLmggKEZUX0JpdG1hcF9FbWJvbGRlbik6IE5ldyBkZWNsYXJhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIChGVF9PdXRsaW5lX0VtYm9sZGVuKTogTmV3IGRlY2xhcmF0aW9uLgoKCSogc3JjL2Jhc2UvZnRiaXRtYXAuYyAoZnRfYml0bWFwX2Fzc3VyZV9idWZmZXIpOiBOZXcgYXV4aWxpYXJ5CglmdW5jdGlvbi4KCShGVF9CaXRtYXBfRW1ib2xkZW4pOiBOZXcgZnVuY3Rpb24uCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfRW1ib2xkZW4pOiBOZXcgZnVuY3Rpb24uCgoJKiBzcmMvYmFzZS9mdHN5bnRoLmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfQ0FMQ19IIGFuZAoJRlRfVFJJR09OT01FVFJZX0ggYnV0IEZUX0JJVE1BUF9ILgoJKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IFVzZSBGVF9PdXRsaW5lX0VtYm9sZGVuIG9yCglGVF9CaXRtYXBfRW1ib2xkZW4uCgoyMDA1LTA1LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBjb25maWd1cmU6IEFsd2F5cyByZW1vdmUgY29uZmlnLm1rLCBidWlsZHMvdW5peC91bml4LWRlZi5taywgYW5kCglidWlsZHMvdW5peC91bml4LWNjLm1rLiAgVGhpcyBmaXhlcyByZXBlYXRlZCBjYWxscyBvZiB0aGUgc2NyaXB0LgoJUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlIGFuZCBCZWhkYWQgRXNmYWhib2QuCgoJKiBSRUFETUUuQ1ZTOiBNZW50aW9uIGZpbGUgcGVybWlzc2lvbnMuCgoyMDA1LTA1LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvYW1pZ2EvbWFrZWZpbGUub3M0IChXQVJOSU5HUyksIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rCgkoQ0ZMQUdTKSwgYnVpbGRzL2NvbXBpbGVyL2djYy5tayAoQ0ZMQUdTKTogUmVtb3ZlCgktZm5vLXN0cmljdC1hbGlhc2luZy4KCgkqIHNyYy9zZm50L3J1bGVzLm1rIChTRk5UX0RSVl9TUkMpOiBEb24ndCBpbmNsdWRlIHR0c2JpdDAuYyAtLQoJaXQgaXMgY3VycmVudGx5IGxvYWRlZCBmcm9tIHR0c2JpdC5jLgoKMjAwNS0wNS0yMyAgQmVoZGFkIEVzZmFoYm9kICA8YmVoZGFkQGNzLnRvcm9udG8uZWR1PgoKCVNheSB5b3UgaGF2ZSBgKEZvbyopeCcgYW5kIHdhbnQgdG8gYXNzaWduLCBwYXNzLCBvciByZXR1cm4gaXQgYXMKCWAoQmFyKiknLiAgSWYgeW91IHNpbXBseSBzYXkgYHgnIG9yIGAoQmFyKil4JywgdGhlbiB0aGUgQyBjb21waWxlcgoJd291bGQgd2FybiB5b3UgdGhhdCB0eXBlIGNhc3RpbmcgaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZXMgYnJlYWtzCglzdHJpY3QtYWxpYXNpbmcuICBUaGUgc29sdXRpb24gaXMgdG8gY2FzdCB0byBgKHZvaWQqKScgaW5zdGVhZCB3aGljaAoJaXMgdGhlIGdlbmVyaWMgcG9pbnRlciB0eXBlLCBzbyB0aGUgY29tcGlsZXIga25vd3MgdGhhdCBpdCBzaG91bGQKCW1ha2Ugbm8gc3RyaWN0LWFsaWFzaW5nIGFzc3VtcHRpb24gb24gYHgnLiAgQnV0IHRoZSBwcm9ibGVtIHdpdGgKCWAodm9pZCopeCcgaXMgdGhhdCBzZWVtcyBsaWtlIGluIEMrKywgdW5saWtlIEMsIGB2b2lkKicgaXMgbm90IGEKCWdlbmVyaWMgcG9pbnRlciB0eXBlIGFuZCBhc3NpZ25pbmcgYHZvaWQqJyB0byBgQmFyKicgd2l0aG91dCBhIGNhc3QKCWNhdXNlcyBhbiBlcnJvci4gIFRoZSBzb2x1dGlvbiBpcyB0byBjYXN0IHRvIGBCYXIqJyB0b28sIHdpdGgKCWAoQmFyKikodm9pZCopeCcgYXMgdGhlIHJlc3VsdCAtLSB0aGlzIGlzIHdoYXQgdGhlIHBhdGNoIGRvZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmggKEZUQ19DQUNIRV9MT09LVVBfQ01QKSwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbXJ1LmggKEZUQ19NUlVMSVNUX0xPT0tVUF9DTVApOiBSZW1vdmUKCWNhc3Qgb24gbHZhbHVlLCB1c2UgYSB0ZW1wb3JhcnkgcG9pbnRlciBpbnN0ZWFkLgoJQ2FzdCB0ZW1wb3JhcmlseSB0byAodm9pZCopIHRvIG5vdCBicmVhayBzdHJpY3QgYWxpYXNpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggKEZUX01FTV9BTExPQywKCUZUX01FTV9SRUFMTE9DLCBGVF9NRU1fUUFMTE9DLCBGVF9NRU1fUVJFQUxMT0MsIEZUX01FTV9GUkVFKSwKCXNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQ2FzdCB0ZW1wb3JhcmlseSB0byAodm9pZCopCgl0byBub3QgYnJlYWsgc3RyaWN0IGFsaWFzaW5nLgoKCSogc3JjL2Jhc2UvZnRpbml0LmMgKEZUX1VTRV9NT0RVTEUpOiBGaXggd3JvbmcgdHlwZSBpbmZvcm1hdGlvbi4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAoWFhfQ0ZMQUdTKTogUmVtb3ZlIC1mbm8tc3RyaWN0LWFsaWFzaW5nLgoKMjAwNS0wNS0yMyAgRGF2aWQgVHVybmVyICA8ZHR1cm5lckBmcmVldHlwZS5vcmc+CgoJRml4IFNhdmFubmFoIGJ1ZyAjMTIyMTMgKGluY29ycmVjdCBiZWhhdmlvdXIgb2YgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0KCWluIGxvdy1tZW1vcnkgY29uZGl0aW9ucykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmggKEZUQ19DQUNIRV9UUllMT09QLAoJRlRDX0NBQ0hFX1RSWUxPT1BfRU5EKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChGVENfQ2FjaGVfTmV3Tm9kZSksIHNyYy9jYWNoZS9mdGNzYml0cy5jCgkoZnRjX3Nub2RlX2NvbXBhcmUpOiBVc2UgRlRfQ0FDSEVfVFJZTE9PUCBhbmQgRlRDX0NBQ0VfVFJZTE9PUF9FTkQuCgoyMDA1LTA1LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9ydWxlcy5tayAoQkFTRV9TUkMpOiBEb24ndCBhZGQgZnRzeW50aC5jIGhlcmUgYnV0Li4uCgkoQkFTRV9FWFRfU1JDKTogSGVyZS4KCjIwMDUtMDUtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0cmZvcmsuYyAocmFjY2Vzc19ndWVzc19hcHBsZV9nZW5lcmljKTogTWFyawoJYHZlcnNpb25fbnVtYmVyJyBhbmQgYGVudHJ5X2xlbmd0aCcgYXMgdW51c2VkLgoJKHJhY2Nlc3NfZ3Vlc3NfbGludXhfZG91YmxlX2Zyb21fZmlsZV9uYW1lKTogUmVtb3ZlIGBtZW1vcnknLgoJKHJhY2Nlc3NfbWFrZV9maWxlX25hbWUpOiBNYXJrIGBlcnJvcicgYXMgdW51c2VkLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9wcm9wZXJ0aWVzKTogUmVtb3ZlIGBtZW1vcnknLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9mYWNlX2luaXQpOiBSZW1vdmUgYHBzbmFtZXMnLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogUmVtb3ZlIGBtZW1vcnknLgoKCSogc3JjL3RydWV0eXBlL3R0Z3h2YXIuYyAoZnRfdmFyX3JlYWRwYWNrZWRwb2ludHMsCglmdF92YXJfcmVhZHBhY2tlZGRlbHRhcywgZnRfdmFyX2xvYWRfYXZhcik6IE1hcmsgYGVycm9yJyBhcyB1bnVzZWQuCgoJKiBzcmMvYmFzZS9ydWxlcy5tayAoQkFTRV9TUkMpOiBBZGQgZnRzeW50aC5jLgoKMjAwNS0wNS0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jIChGVF9HbHlwaFNsb3RfRW1ib2xkZW4pOiBGaXggYSBidWcgdGhhdAoJcHJvZHVjZWQgdW5wbGVhc2FudCBhcnRlZmFjdHMgd2hlbiB0cnlpbmcgdG8gZW1ib2xkZW4gdmVyeSBzaGFycAoJY29ybmVycy4KCjIwMDUtMDUtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDUtMDUtMjAgIENoaWEgSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL2Jhc2UvZnRiaXRtYXAuYzogRG9uJ3QgaW5jbHVkZSBGVF9GUkVFVFlQRV9IIGFuZCBGVF9JTUFHRV9ICglidXQgRlRfQklUTUFQX0guCgkoRlRfQml0bWFwX0NvcHkpOiBOZXcgZnVuY3Rpb24gKGZyb20gZnRnbHlwaC5jKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaCAoRlRfQml0bWFwX0NvcHkpOiBOZXcgcHVibGljCglkZWZpbml0aW9uLgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jOiBJbmNsdWRlIEZUX0JJVE1BUF9ILgoJKGZ0X2JpdG1hcF9jb3B5KTogTW92ZSB0byBmdGJpdG1hcC5jLgoJKGZ0X2JpdG1hcF9nbHlwaF9pbml0KTogUmVtb3ZlIGBtZW1vcnknIHZhcmlhYmxlLgoJQ3JlYXRlIG5ldyBiaXRtYXAgb2JqZWN0IGlmIEZUX0dMWVBIX09XTl9CSVRNQVAgaXNuJ3Qgc2V0LgoJKGZ0X2JpdG1hcF9nbHlwaF9jb3B5KTogVXNlIEZUX0JpdG1hcF9Db3B5LgoJKGZ0X2JpdG1hcF9nbHlwaF9kb25lKTogVXNlIEZUX0JpdG1hcF9Eb25lLgoJKGZ0X291dGxpbmVfZ2x5cGhfaW5pdCk6IFVzZSBGVF9PdXRsaW5lX0NvcHkuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfQ29weSk6IEhhbmRsZSBzb3VyY2UgPT0gdGFyZ2V0LgoJKEZUX091dGxpbmVfRG9uZV9JbnRlcm5hbCk6IENoZWNrIGZvciB2YWxpZCBgbWVtb3J5JyBwb2ludGVyLgoJKEZUX091dGxpbmVfVHJhbnNsYXRlLCBGVF9PdXRsaW5lX1JldmVyc2UsIEZUX091dGxpbmVfUmVuZGVyLAoJRlRfT3V0bGluZV9UcmFuc2Zvcm0pOiBDaGVjayBmb3IgdmFsaWQgYG91dGxpbmUnIHBvaW50ZXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTmV3X0dseXBoU2xvdCk6IFByZXBlbmQgZ2x5cGggc2xvdCB0bwoJZmFjZS0+Z2x5cGgsIG90aGVyd2lzZSBhIG5ldyBzZWNvbmQgZ2x5cGggc2xvdCBjYW5ub3QgYmUgY3JlYXRlZC4KCShGVF9Eb25lX0dseXBoU2xvdCk6IEZpeCBtZW1vcnkgbGVhay4KCShGVF9PcGVuX0ZhY2UpOiBVcGRhdGVkIC0tIGZhY2UtPmdseXBoIGlzIGFscmVhZHkgbWFuYWdlZCBieQoJRlRfTmV3X0dseXBoU2xvdC4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfR2x5cGhTbG90X0RvbmUpOiBVcGRhdGVkLgoKMjAwNS0wNS0yMCAgS2lyaWxsIFNtZWxrb3YgIDxraXJyQG1ucy5zcGIucnU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfUmFzdGVyX1BhcmFtcyksCglpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3V0bGluZV9UcmFuc2xhdGUsCglGVF9PdXRsaW5lX1RyYW5zZm9ybSksIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9UcmFuc2xhdGUsCglGVF9PdXRsaW5lX1RyYW5zZm9ybSk6IERlY29yYXRlIHBhcmFtZXRlcnMgd2l0aCBgY29uc3QnIHdoZXJlCglhcHByb3ByaWF0ZS4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoZnRfYmxhY2tfcmVzZXQpLCBzcmMvc21vb3RoL2Z0Z3JheXMuYwoJKGdyYXlfcmFzdGVyX3Jlc2V0KTogUmVtb3ZlIGBjb25zdCcgZnJvbSBgcG9vbF9iYXNlJyBhcmd1bWVudC4KCjIwMDUtMDUtMTggIEtpcmlsbCBTbWVsa292ICA8a2lyckBtbnMuc3BiLnJ1PgoKCSogc3JjL3Jhc3Rlci9mdG1pc2MuaDogTmV3IGZpbGUuICBPbmx5IG5lZWRlZCBpZiBmdHJhc3Rlci5jIGlzCgljb21waWxlZCBhcyBzdGFuZC1hbG9uZS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogQWRkIGNvbW1lbnQgaG93IHRvIGNvbXBpbGUgYXMgc3RhbmQtYWxvbmUuCglzL0ZUX0NPTkZJR19PUFRJT05fU1RBVElDX1JBU1RFUi9GVF9TVEFUSUNfUkFTVEVSLy4KCXMvVFRfU1RBVElDX1JBU1RFUi9GVF9TVEFUSUNfUkFTVEVSLy4KCVtfU1RBTkRBTE9ORV9dOiBJbmNsdWRlIGZ0aW1hZ2UuaCBhbmQgZnRtaXNjLmguCgkoRlRfVFJBQ0UxLCBGVF9UUkFDRTYsIGZ0X21lbXNldCwgRlRfTUVNX1pFUk8pOiBEZWZpbmUKCWNvbmRpdGlvbmFsbHkuCgkoUmVuZGVyX0dseXBoLCBSZW5kZXJfR3JheV9HbHlwaCk6IFJldHVybiBSYXN0ZXJfRXJyX05vbmUgKG9yCglSYXN0ZXJfRXJyX1Vuc3VwcG9ydGVkKS4KCShmdF9ibGFja19uZXcpIFtfU1RBTkRBTE9ORV9dOiBGaXggdHlwZSBvZiBgdGhlX3Jhc3RlcicuCgkoZnRfYmxhY2tfaW5pdCwgZnRfYmxhY2tfcmVzZXQsIGZ0X2JsYWNrX3NldF9tb2RlLCBmdF9ibGFja19yZW5kZXIpOgoJVXNlIGByYXMnLCBub3QgYHJhc3RlcicuCgkoZnRfYmxhY2tfZG9uZSk6IFVzZSBGVF9VTlVTRURfUkFTVEVSLgoJKEhvcml6b250YWxfU3dlZXBfSW5pdCwgSG9yaXpvbnRhbF9Td2VlcF9TdGVwLAoJSG9yaXpvbnRhbF9HcmF5X1N3ZWVwX1NwYW4pOiBVc2UgRlRfVU5VU0VEX1JBU1RFUi4KCjIwMDUtMDUtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvYW5ub3VuY2U6IFN0YXJ0IHVwZGF0aW5nLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNS0wNS0xNiAgVml0YWxpeSBQYXN0ZXJuYWsgIDx2X2FfcGFzdGVybmFrQG1haWwucnU+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2o6IFVwZGF0ZWQuCglFeGNsdWRlIGRlYnVnIGluZm8gZm9yIGBSZWxlYXNlJyB2ZXJzaW9ucyB0byByZWR1Y2UgbGlicmFyeSBzaXplLgoKMjAwNS0wNS0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IE1ha2UgaXQgd29yayBhcyBkb2N1bWVudGVkLCB0aGlzCglpcywgaWdub3JlIGBhZmFjZScgY29tcGxldGVseSBpZiBmYWNlX2luZGV4IDwgMC4gIFJlcG9ydGVkIGJ5IERhdmlkCglPc2Jvcm4gPHNwYW1AaGFiaXR1YWxoaWF0dXMuY29tPi4KCjIwMDUtMDUtMTYgIEtpcmlsbCBTbWVsa292ICA8a2lyckBtbnMuc3BiLnJ1PgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX091dGxpbmVfTW92ZVRvRnVuYywKCUZUX091dGxpbmVfTGluZVRvX0Z1bmMsIEZUX091dGxpbmVfQ29uaWNUb0Z1bmMsCglGVF9PdXRsaW5lX0N1YmljVG9GdW5jKSwgc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX2NvbmljLAoJZ3JheV9yZW5kZXJfY3ViaWMsIGdyYXlfbW92ZV90bywgZ3JheV9saW5lX3RvLCBncmF5X2NvbmljX3RvLAoJZ3JheV9jdWJpY190bywgZ3JheV9yZW5kZXJfc3BhbiwgZ3JheV9zd2VlcCk6IERlY29yYXRlIHBhcmFtZXRlcnMKCXdpdGggYGNvbnN0JyB3aGVyZSBhcHByb3ByaWF0ZS4KCjIwMDUtMDUtMTEgIEtpcmlsbCBTbWVsa292ICA8a2lyckBtbnMuc3BiLnJ1PgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX1Jhc3Rlcl9SZW5kZXJGdW5jKSwKCWluY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaCAoRlRfR2x5cGhfVHJhbnNmb3JtRnVuYywKCUZUX1JlbmRlcmVyX1JlbmRlcl9GdW5jLCBGVF9SZW5kZXJlcl9UcmFuc2Zvcm1GdW5jKSwKCXNyYy9iYXNlL2Z0Z2x5cGguYyAoZnRfb3V0bGluZV9nbHlwaF90cmFuc2Zvcm0pLAoJc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfdHJhbnNmb3JtLCBmdF9yYXN0ZXIxX3JlbmRlciksCglzcmMvc21vb3RoL2Z0Z3JheXMuYyAoRlRfT3V0bGluZV9EZWNvbXBvc2UsIGdyYXlfcmFzdGVyX3JlbmRlciksCglzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF90cmFuc2Zvcm0sCglmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMsIGZ0X3Ntb290aF9yZW5kZXIsIGZ0X3Ntb290aF9yZW5kZXJfbGNkLAoJZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6IERlY29yYXRlIHBhcmFtZXRlcnMgd2l0aCBgY29uc3QnIHdoZXJlCglhcHByb3ByaWF0ZS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoUkFTVEVSX1JFTkRFUl9QT09MKTogUmVtb3ZlZC4gIE9ic29sZXRlLgoJKGZ0X2JsYWNrX3JlbmRlcik6IERlY29yYXRlIHBhcmFtZXRlcnMgd2l0aCBgY29uc3QnIHdoZXJlCglhcHByb3ByaWF0ZS4KCjIwMDUtMDUtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0Y21hcC5jICh0dF9jbWFwNF9zZXRfcmFuZ2UpOiBGaXggdHlwbyAoRlRfUEVFS19TSE9SVCAtPgoJRlRfUEVFS19VU0hPUlQpIHdoaWNoIGNhdXNlZCBjcmFzaGVzLiAgUmVwb3J0ZWQgYnkgSXNtYWlsIERvbm1legoJPGlzbWFpbEBrZGUub3JnLnRyPi4KCjIwMDUtMDUtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfRklORF9HTE9CQUxfU0VSVklDRSkKCVtfX2NwbHVzcGx1c106IEZpeCB0eXBvLgoKMjAwNS0wNS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUhhbmRsZSB1bnNvcnRlZCBTRk5UIHR5cGUgNCBjbWFwcyBjb3JyZWN0bHkgKHJlcG9ydGVkIGJ5IERpcmNrCglCbGFza2V5IDxsaXN0dGFyZ2V0QGRhbmJhbGEuY29tPikuCgoJKiBzcmMvc2ZudC90dGNtYXAuaCAoVFRfQ01hcCk6IEFkZCBtZW1iZXIgYHVuc29ydGVkJy4KCSogc3JjL3NmbnQvdHRjbWFjLmM6IFVzZSBTRk5UX0Vycl9PayB3aGVyZSBhcHByb3ByaWF0ZS4KCgkodHRfY21hcDBfdmFsaWRhdGUsIHR0X2NtYXAyX3ZhbGlkYXRlLCB0dF9jbWFwNl92YWxpZGF0ZSwKCXR0X2NtYXA4X3ZhbGlkYXRlLCB0dF9jbWFwMTBfdmFsaWRhdGUsIHR0X2NtYXAxMl92YWxpZGF0ZSk6IFVzZQoJYEZUX0Vycm9yJyBhcyByZXR1cm4gdHlwZS4KCSh0dF9jbWFwNF92YWxpZGF0ZSk6IFVzZSBgRlRfRXJyb3InIGFzIHJldHVybiB0eXBlLgoJUmV0dXJuIGVycm9yIGNvZGUgZm9yIHVuc29ydGVkIGNtYXAuCgkodHRfY21hcDRfY2hhcl9pbmRleCwgdHRfY21hcDRfY2hhcl9uZXh0KTogVXNlIG9sZCBjb2RlIGZvciB1bnNvcnRlZAoJY21hcHMuCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFNldCBgdW5zb3J0ZWQnIHZhcmlhYmxlIGluIGNtYXAuCgoyMDA1LTA1LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jICh0dF9mYWNlX2dldF9sb2NhdGlvbik6IEZpeCB0eXBvLgoKMjAwNS0wNS0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBTZXQgcHBlbSB2YWx1ZSBpbiB0b3AKCWRpY3Rpb25hcnkgZm9yIFNGTlQtYmFzZWQgQ0ZGLgoKMjAwNS0wNS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUhhbmRsZSBtYWxmb3JtZWQgYGxvY2EnIHRhYmxlIGVudHJpZXMuCgoJKiBkb2NzL1RPRE86IEFkZCBzb21lIGJ1Z3Mgd2hpY2ggc2hvdWxkIGJlIGZpeGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0ZhY2VSZWMpOiBBZGQgYGdseWZfbGVuJwoJZWxlbWVudC4KCgkqIHNyYy90cnVldHlwZS90dHBsb2FkLmMgKHR0X2ZhY2VfbG9hZF9sb2NhKTogR2V0IGxlbmd0aCBvZiBgZ2x5ZicKCXRhYmxlLgoJKHR0X2ZhY2VfZ2V0X2xvY2F0aW9uKTogRml4IGNvbXB1dGF0aW9uIG9mIGBhc2l6ZScgZm9yIG1hbGZvcm1lZAoJYGxvY2EnIGVudHJpZXMuCgoyMDA1LTA1LTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBKYW1maWxlOiBSZW1vdmUgYG90dmFsaWQnIGZyb20gdGhlIGxpc3Qgb2YgY29tcGlsZWQgbW9kdWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2Lmg6IEFkZCBjb21waWxlciBwcmFnbWFzIHRvIGdldAoJcmlkIG9mIGFubm95aW5nIHdhcm5pbmdzIHdpdGggVmlzdWFsIEMrKyBjb21waWxlciBpbiBtYXhpbXVtIHdhcm5pbmcKCW1vZGUuCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMsIHNyYy9hdXRvZml0L2FmbGF0aW4uYywgc3JjL2Jhc2UvZnRzdHJva2UuYywKCXNyYy9iZGYvYmRmZHJpdnIuYywgc3JjL2NhY2hlL2Z0Y2Jhc2ljLmMsIHNyYy9jYWNoZS9mdGNjbWFwLmMsCglzcmMvY2FjaGUvZnRjbWFuYWcuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jaWQvY2lkbG9hZC5jLAoJc3JjL2x6dy96b3Blbi5jLCBzcmMvb3R2YWxpZC9vdHZnZGVmLmMsIHNyYy9wY2YvcGNmcmVhZC5jLAoJc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy90cnVldHlwZS90dGd4dmFyLmM6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCjIwMDUtMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvVE9ETzogVXBkYXRlZC4KCjIwMDUtMDQtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdHZhbGlkL290dmNvbW1uLmMKCShvdHZfR1NVQkdQT1NfaGF2ZV9NYXJrQXR0YWNobWVudFR5cGVfZmxhZyk6IEhhbmRsZSB0YWJsZSA9PSAwLgoKMjAwNS0wNC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBTZXQgZGVmYXVsdCB1cGVtIHZhbHVlIGluIHRvcAoJZm9udCBkaWN0IGFsc28uCglIYW5kbGUgZm9udCBtYXRyaXggc2V0dGluZ3MgaW4gc3ViZm9udHMuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpOiBVc2UgdGhlIGNvcnJlY3QgZm9udCBtYXRyaXgKCWZvciBDSUQta2V5ZWQgZm9udHMgd2l0aCBzdWJmb250cy4KCgkqIGRvY3MvZm9ybWF0cy50eHQ6IFVwZGF0ZWQuCgoyMDA1LTA0LTE0ICBLaXJpbGwgU21lbGtvdiAgPGtpcnJAbW5zLnNwYi5ydT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfVmVjdG9yX1RyYW5zZm9ybSksCglpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfUmFzdGVyX1BhcmFtcyksCglpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCwgc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX0dldF9DQm94LAoJRlRfT3V0bGluZV9Db3B5LCBGVF9PdXRsaW5lX1RyYW5zZm9ybSwgRlRfVmVjdG9yX1RyYW5zZm9ybSwKCUZUX091dGxpbmVfR2V0X0JpdG1hcCksIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoZnRfYmxhY2tfcmVuZGVyKSwKCXNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3Jhc3Rlcl9yZW5kZXIpOiBEZWNvcmF0ZSBwYXJhbWV0ZXJzIHdpdGgKCWBjb25zdCcgd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDA1LTA0LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogQ2F0Y2ggdGhpcyBub24tc3RhbmRhcmQKCWJlZ2lubmluZyBvZiB0aGUgL0NoYXJTdHJpbmdzIGRpY3Rpb25hcnk6CgoJICAvQ2hhclN0cmluZ3MgMTE4IGRpY3QgZGVmCgkgIFByaXZhdGUgYmVnaW4KCSAgQ2hhclN0cmluZ3MgYmVnaW4KCgkqIHNyYy9zZm50L3R0c2JpdDAuYyAodHRfc2JpdF9kZWNvZGVyX2xvYWRfaW1hZ2UpOiBGaXggYXJndW1lbnRzCgl0byBjYWxsIG9mIHR0X3NiaXRfZGVjb2Rlcl9sb2FkX2JpdG1hcC4KCjIwMDUtMDQtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvVE9ETzogVXBkYXRlZC4KCgkqIGF1dG9nZW4uc2g6IFVzZSBgLS1mb3JjZScgZm9yIGFsbCBjb21tYW5kcy4KCjIwMDUtMDQtMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMgKHBzX2hpbnRzX2FwcGx5KTogQ2hhbmdlIHNjYWxpbmcgdmFsdWVzCglvbmx5IGlmIGBmaXR0ZWQnIGlzIG5vdCB6ZXJvLgoKMjAwNS0wNC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAodHRfZmFjZV9nZXRfbWV0cmljcykgW0ZUX09QVElNSVpFX01FTU9SWV06CglGaXggdHlwbyB3aGljaCBzb21ldGltZXMgY2F1c2VzIHdyb25nIG1ldHJpY3MgZm9yIHRoZSBsYXN0IGdseXBoLgoKMjAwNS0wNC0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZGV2ZWwvZnRvcHRpb24uaCwgaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKEZUX09QVElNSVpFX01FTU9SWSk6IENvbW1lbnQgb3V0IHRoaXMgbWFjcm8gZm9yIHRoZSB1cGNvbWluZyAyLjEuMTAKCXJlbGVhc2UuCgkoKl9DSEVTVEVSXyopOiBSZW1vdmVkLiAgTm8gbG9uZ2VyIHVzZWQuCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMgKGFmX2F4aXNfaGludHNfbmV3X3NlZ21lbnQsCglhZl9heGlzX2hpbnRzX25ld19lZGdlKTogU21hbGwgdHdlYWsgdG8gdXNlIGxlc3MgaGVhcCBtZW1vcnkuCgoyMDA1LTA0LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9OZXdfUGFyc2VyKTogUmVsYXggdGhlIGNoZWNrIGZvciBhIHZhbGlkCglmaXJzdCBsaW5lIGluIHRoZSBmb250LgoKMjAwNS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTLCBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEltcHJvdmUgZG9jdW1lbnRhdGlvbgoJb2YgRlRfU2V0X1BpeGVsX1NpemVzIGFuZCBGVF9TZXRfQ2hhcl9TaXplLgoKMjAwNS0wMy0yNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jIChmdF9hbWlnYV9zdHJlYW1faW8pOiBGaXggYnVmZmVyCglvZmZzZXRzIGFmdGVyIGEgbGFyZ2UgcmVhZC4KCjIwMDUtMDMtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvZml0L2FmZ2xvYmFsLmMgKGFmX2ZhY2VfZ2xvYmFsc19nZXRfbWV0cmljcyk6CglzL2luZGV4L2dpZHgvLgoKCSogc3JjL3NmbnQvdHRzYml0MC5jICh0dF9zYml0X2RlY29kZXJfbG9hZF9pbWFnZSk6IEZpeCBjb21waWxlcgoJd2FybmluZ3MuCgoJKiBzcmMvc2ZudC9ydWxlcy5tayAoU0ZOVF9EUlZfU1JDKTogQWRkIHR0c2JpdDAuYy4KCgkqIHNyYy9zZm50L3R0c2JpdDAuaDogRHVtbXkgZmlsZSBmb3IgYnVpbGQgd2l0aCBgbWFrZScuCgoyMDA1LTAzLTI2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCVVwZGF0ZSBvZiB0aGUgQW1pZ2EgcG9ydC4KCgkqIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZSwgYnVpbGRzL2FtaWdhL21ha2VmaWxlLm9zNCwKCWJ1aWxkcy9hbWlnYS9zbWFrZWZpbGU6IEluY2x1ZGVkIHRoZSBiYXNlIGV4dGVuc2lvbiBmaWxlcwoJKGZ0Yml0bWFwLmMsIGZ0b3R2YWwuYywgZnRwZnIuYywgZnRzdHJva2UuYywgZnR4Zjg2LmMpLgoKMjAwNS0wMy0yNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglVcGRhdGUgb2YgdGhlIEFtaWdhIHBvcnQuCgoJKiBidWlsZHMvYW1pZ2EvbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGU6IEhhbmRsZSBuZXcgbW9kdWxlcy4KCgkqIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZS5vczQ6IE1ha2VmaWxlIGZvciBBbWlnYU9TNCBTREsuCgoJKiBidWlsZHMvYW1pZ2EvUkVBRE1FOiBVcGRhdGVkLgoKCSogYnVpbGRzL2FtaWdhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IEhhbmRsZSBnY2MgZm9yCglBbWlnYU9TNC4KCgkqIGJ1aWxkcy9hbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBIYW5kbGUgbmV3Cgltb2R1bGVzLgoKCSogYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYzogVXBkYXRlZCB0byBjdXJyZW50IHZlcnNpb24gb2YKCWRlZmF1bHQgZnRkZWJ1Zy5jLgoJQWRkIHZhcmlvdXMgaW5jbHVkZSBmaWxlcyBhbmQgbWFjcm9zIHRvIGhhdmUgcHJvcGVyIHN1cHBvcnQgZm9yCglib3RoIEFtaWdhT1M0IGFuZCBvbGRlciBBbWlnYU9TIHZlcnNpb25zLgoJRG9uJ3QgZGVjbGFyZSBLVlByaW50RiBleHBsaWNpdGx5LgoJUmVwbGFjZSBnZXRlbnYgd2l0aCBHZXRWYXIuCglBY3R1YWxseSBlbmFibGUgZGVidWdnaW5nIGNvZGUuCgoJKiBidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRzeXN0ZW0uYzogTWFqb3IgcmV3cml0ZS4KCjIwMDUtMDMtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHRlc3RzLyo6IFJlbW92ZWQuCgoyMDA1LTAzLTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvSU5TVEFMTC5BTlk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IFJlcGxhY2UgYEF1dG9oaW50JyB3aXRoIGBBdXRvZml0Jy4KCUFkZCBgT1R2YWxpZCcuCgoJKiBzcmMvYXV0b2ZpdC9hZmVycm9ycy5oOiBOZXcgZmlsZS4KCgkqIHNyYy9hdXRvZml0L2FmZ2xvYmFsLmMsIHNyYy9hdXRvZml0L2FmaGludHMuYywKCXNyYy9hdXRvZml0L2FmbGF0aW4uYywgc3JjL2F1dG9maXQvYWZsb2FkZXIuYzogcy9GVF9FcnJfL0FGX0Vycl8vLgoJSW5jbHVkZSBhZmVycm9ycy5oLgoKCSogc3JjL2F1dG9maXQvcnVsZXMubWsgKEFVVE9GX0RSVl9IKTogSW5jbHVkZSBhZmVycm9ycy5oLgoKCSogc3JjL290dmFsaWQvb3R2ZXJyb3IuaDogcy9GVF9Nb2RfRXJyX09UVi9GVF9Nb2RfRXJyX09UdmFsaWQvLgoKMjAwNS0wMy0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50Lyo6IFJlbW92ZWQuCgkqIEphbWZpbGU6IFVwZGF0ZWQuCgoyMDA1LTAzLTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkoaGFzaF9yZWhhc2gsIGhhc2hfaW5pdCk6IERvbid0IGNhbGwgRlRfTUVNX1pFUk8uCgkoX2JkZl9saXN0X3QpOiBBZGQgYG1lbW9yeScgZmllbGQuCgkoX2JkZl9saXN0X2luaXQsIF9iZGZfbGlzdF9kb25lLCBfYmRmX2xpc3RfZW5zdXJlKTogTmV3IGZ1bmN0aW9ucy4KCShfYmRmX3NoaWZ0LCBfYmRmX2pvaW4pOiBSZW5hbWUgdG8uLi4KCShfYmRmX2xpc3Rfc2hpZnQsIF9iZGZfbGlzdF9qb2luKTogVGhpcy4KCShfYmRmX3NwbGl0KTogUmVuYW1lZCB0by4uLgoJKF9iZGZfbGlzdF9zcGxpdCk6IFRoaXMuICBVc2UgbmV3IGZ1bmN0aW9ucy4KCShiZGZfaW50ZXJuYWxfcmVhZHN0cmVhbSk6IFJlbW92ZWQuCgkoTk9fU0tJUCk6IE5ldyBtYWNyby4KCShfYmRmX3JlYWRzdHJlYW0pOiBSZXdyaXR0ZW4uCgkoYmRmX2NyZWF0ZV9wcm9wZXJ0eSwgX2JkZl9hZGRfY29tbWVudCk6IEltcHJvdmUgYWxsb2NhdGlvbi4KCShfYmRmX3NldF9kZWZhdWx0X3NwYWNpbmcsIF9iZGZfcGFyc2VfZ2x5cGhzKTogVXBkYXRlZC4gIEltcHJvdmUKCWFsbG9jYXRpb24uCgkoX2JkZl9wYXJzZV9wcm9wZXJ0aWVzLCBfYmRmX3BhcnNlX3N0YXJ0KTogVXBkYXRlZC4KCShiZGZfbG9hZF9mb250KTogVXBkYXRlZCB0byB1c2UgbmV3IGZ1bmN0aW9ucy4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKGNoZWNrX3R5cGUxX2Zvcm1hdCk6IE5ldyBmdW5jdGlvbi4KCShUMV9OZXdfUGFyc2VyKTogVXNlIGl0IHRvIGNoZWNrIGZvbnQgaGVhZGVyIGJlZm9yZSBhbGxvY2F0aW5nCglhbnl0aGluZyBvbiB0aGUgaGVhcC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYwkodDQyX3BhcnNlcl9pbml0KTogTW9kaWZ5IGZ1bmN0aW9ucyB0byBjaGVjawoJdGhlIGZvbnQgaGVhZGVyIGJlZm9yZSBhbGxvY2F0aW5nIGFueXRoaW5nIG9uIHRoZSBoZWFwLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIChGVF9BUlJBWV9NQVgsCglGVF9BUlJBWV9DSEVDSyk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvYmFzZS9mdHN0cmVhbS5jIChGVF9TdHJlYW1fVHJ5UmVhZCk6IE5ldyBmdW5jdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBVcGRhdGVkLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9yZWFkX1RPQyksIHNyYy9wY2YvcGNmdXRpbC5jCgkoQml0T3JkZXJJbnZlcnQsIFR3b0J5dGVTd2FwLCBGb3VyQnl0ZVN3YXApOiBNaW5vciBmaXhlcyBhbmQKCXNpbXBsaWZpY2F0aW9ucy4gIFRyeSB0byBwcm90ZWN0IHRoZSBQQ0YgZHJpdmVyIGZyb20gZG9pbmcgc3R1cGlkCgl0aGluZ3Mgd2l0aCBicm9rZW4gZm9udHMuCgoJKiBzcmMvbHp3L2Z0bHp3LmMgKEZUX1N0cmVhbV9PcGVuTFpXKTogQ2hlY2sgdGhlIExaVyBoZWFkZXIgYmVmb3JlCglkb2luZyBhbnl0aGluZyBlbHNlLiAgVGhpcyBhdm9pZHMgdW5uZWNlc3NhcnkgaGVhcCBhbGxvY2F0aW9ucwoJKDQwMEtCeXRlIG9mIGhlYXAgbWVtb3J5IGZvciB0aGUgTFpXIGRlY29kZXIpLgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKEZUX1N0cmVhbV9PcGVuR1ppcCk6IERpdHRvIGZvciB0aGUgZ3ppcAoJZGVjb2RlciwgYWx0aG91Z2ggdGhlIGNvZGUgc2F2aW5ncyBhcmUgc21hbGxlci4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDUtMDMtMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90b29scy9nbG5hbWVzLnB5OiBBZGQgY29tbWVudCB0byBleHBsYWluIHRoZSBjb21wcmVzc2lvbgoJYmVpbmcgdXNlZCBmb3IgdGhlIEFkb2JlIEdseXBoIExpc3QuCgoyMDA1LTAzLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jICh0dF9mYWNlX2xvYWRfY3Z0LCB0dF9mYWNlX2xvYWRfZnBnbSk6CglGaXggc2VyaW91cyB0eXBvIHdoaWNoIHByZXZlbnRlZCBjb3JyZWN0IFRUIHJlbmRlcmluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaDogVW5kbyBjaGFuZ2UgZnJvbSAyMDA1LTAzLTAzLgoJVG8gc3VwcHJlc3Mgd2FybmluZ3MgaXQgaXMgc3VmZmljaWVudCB0byB1c2UgYC1mbm8tc3RyaWN0LWFsaWFzaW5nJy4KCjIwMDUtMDMtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90b29scy9nbG5hbWVzLnB5OiBGb3JtYXR0ZWQuCglGb3JtYXQgb3V0cHV0IHRvIGJlIGluIHN5bmMgd2l0aCBvdGhlciBGcmVlVHlwZSBjb2RlLgoJSW1wb3J0IGByZScgYW5kIGBvcy5wYXRoJy4KCShTdHJpbmdUYWJsZSkgPF9faW5pdF9fPjogQWRkIHBhcmFtZXRlciB0byBpbml0aWFsaXplIG1hc3RlciB0YWJsZQoJbmFtZS4KCShTdHJpbmdUYWJsZSkgPGR1bXA+OiBEb24ndCBwYXNzIG1hc3RlciB0YWJsZSBuYW1lLgoJKFN0cmluZ1RhYmxlKSA8ZHVtcF9zdWJsaXN0PjogRW1pdCBleHBsYW5hdG9yeSBjb21tZW50LgoJU2ltcGxpZnkgYW5kIG1ha2Ugb3V0cHV0IG1vcmUgaHVtYW4gcmVhZGFibGUuCgkodDFfYmlhcywgZ2x5cGhfbGlzdCwgYWRvYmVfZ2x5cGhfbmFtZXMpOiBSZW1vdmVkLiAgVW51c2VkLgoJKG1haW4pOiBVc2UgYGJhc2VuYW1lJyBmb3IgZmlsZSBuYW1lIGluIGhlYWRlci4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoKMjAwNS0wMy0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFJld3JpdGUgdGhlIGdlbmVyYXRvciBmb3IgdGhlIGBwc3RhYmxlcy5oJwoJaGVhZGVyIGZpbGUgd2hpY2ggY29udGFpbnMgdmFyaW91cyBjb25zdGFudCB0YWJsZXMgcmVsYXRlZCB0byBnbHlwaAoJbmFtZXMuICBJdCBub3cgdXNlcyBhIGRpZmZlcmVudCwgbW9yZSBjb21wYWN0IHN0b3JhZ2Ugc2NoZW1lIHRoYXQKCXNhdmVzIGFib3V0IDIwS0IuICBUaGlzIGFsc28gY2xvc2VzIFNhdmFubmFoIGJ1ZyAjMTIyNjIuCgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBSZWdlbmVyYXRlZC4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzX3VuaWNvZGVfdmFsdWUpOiBVc2UKCWBmdF9nZXRfYWRvYmVfZ2x5cGhfaW5kZXgnLCBhIG5ldyBmdW5jdGlvbiBkZWZpbmVkIGluIGBwc3RhYmxlcy5oJy4KCShwc19nZXRfbWFjaW50b3NoX25hbWUsIHBzX2dldF9zdGFuZGFyZF9zdHJpbmdzKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplcyk6IEhhbmRsZSBmcmFjdGlvbmFsIHNpemVzCgltb3JlIGNhcmVmdWxseS4gIFRoaXMgZml4ZXMgU2F2YW5uYWggYnVnICMxMjI2My4KCjIwMDUtMDMtMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9vdHZhbGlkL290dmdzdWIuYywgc3JjL290dmFsaWQvb3R2Z3Bvcy5jOiBNYWtlIHN0YXRpYyB0YWJsZXMKCWNvbnN0YW50LgoKCSogc3JjL2F1dG9maXQvYWZsYXRpbi5jIChhZl9sYXRpbl9tZXRyaWNzX2luaXQpOiBGaXggU2F2YW5uYWggYnVnCgkjMTIyMTIgKGF1dG8taGludGVyIHJlZnVzZXMgdG8gd29yayBpZiBubyBVbmljb2RlIGNoYXJtYXAgaW4gZm9udCkuCgoyMDA1LTAzLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBhdXRvZ2VuLnNoOiBOZXcgc2NyaXB0IGZvciBib290c3RyYXBwaW5nLgoKCSogUkVBRE1FLkNWUzogTmV3IGZpbGUgd2hpY2ggZG9jdW1lbnRzIGJvb3RzdHJhcHBpbmcuCgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00LCBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsCglidWlsZHMvdW5peC9jb25maWcuc3ViLCBidWlsZHMvdW5peC9jb25maWd1cmUsCglidWlsZHMvdW5peC9sdG1haW4uc2g6IFJlbW92ZWQuCgoyMDA1LTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdHV0aWwuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9PQkpFQ1RTX0guCgoyMDA1LTAzLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVmFyaW91cyBmaXhlcyBmb3IgQyBhbmQgQysrIGNvbXBpbGluZy4KCgkqIHNyYy9hdXRvZml0Lyo6IEFkZCBjb3B5cmlnaHQgbWVzc2FnZXMuCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMgKGFmX2dseXBoX2hpbnRzX2RvbmUpOiBEb24ndCB1c2UKCWBBRl9EaW1lbnNpb24nIGJ1dCBgaW50JyBmb3IgbG9vcCBjb3VudGVyLgoKCSogc3JjL2F1dG9maXQvYWZsYXRpbi5jIChhZl9sYXRpbl9tZXRyaWNzX2luaXRfd2lkdGhzKTogRG9uJ3QgdXNlCglgQUZfRGltZW5zaW9uJyBidXQgYGludCcgZm9yIGxvb3AgY291bnRlci4KCVVzZSBwcm9wZXIgZW51bWVyYXRpb24gdmFsdWUgZm9yIGByZW5kZXJfbW9kZScuCgkoYWZfbGF0aW5fbWV0cmljc19zY2FsZV9kaW0pOiBEb24ndCBzaGFkb3cgdmFyaWFibGVzLgoJKGFmX2xhdGluX2hpbnRzX2NvbXB1dGVfc2VnbWVudHMpOiBVc2UgcHJvcGVyIGNhc3QgZm9yIGBtYWpvcl9kaXInCglhbmQgYHNlZ21lbnRfZGlyJy4KCShhZl9sYXRpbl9hbGlnbl9saW5rZWRfZWRnZSwgYWZfbGF0aW5faGludF9lZGdlcyk6IEZpeCBhcmd1bWVudHMgb2YgY2FsbCB0bwoJYGFmX2xhdGluX2NvbXB1dGVfc3RlbV93aWR0aCcuCgkoYWZfbGF0aW5faGludHNfYXBwbHkpOiBEb24ndCB1c2UgYEFGX0RpbWVuc2lvbicgYnV0IGBpbnQnIGZvciBsb29wCgljb3VudGVyLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX2dldF9zb3VyY2UsIEZUX0R1bXBNZW1vcnkpOiBVc2UKCXByb3BlciBjYXN0IGZvciBtZW1vcnkgYWxsb2NhdGlvbi4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9rZXJuaW5nKTogVXNlIHByb3BlciBjYXN0IGZvcgoJaW5pdGlhbGl6YXRpb24gb2YgYHNmbnQnLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSBgdHRrZXJuLmgnLgoKCSogc3JjL3NmbnQvdHRrZXJuLmMgKHR0X2ZhY2VfZ2V0X2tlcm5pbmcpOiBEb24ndCBzaGFkb3cgdmFyaWFibGVzLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYzogSW5jbHVkZSBgdHRwbG9hZC5oJy4KCjIwMDUtMDMtMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCAoRlRfQUxMT0MsIEZUX1JFQUxMT0MsCglGVF9RQUxMT0MsIEZUX1FSRUFMTE9DKSBbZ2NjID49IDMuM106IFByb3ZpZGUgbWFjcm8gdmVyc2lvbnMgd2hpY2gKCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoJKEZUX05FVywgRlRfTkVXX0FSUkFZLCBGVF9SRU5FV19BUlJBWSwgRlRfUU5FVywgRlRfUU5FV19BUlJBWSwKCUZUX1FSRU5FV19BUlJBWSwgRlRfQUxMT0NfQVJSQVksIEZUX1JFQUxMT0NfQVJSQVkpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UsCglGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UsIEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UpIFtfX2NwbHVzY3BsdXNdOgoJUHJvdmlkZSBtYWNybyB2ZXJzaW9ucyB3aGljaCBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9iYXNlL2Z0dXRpbC5jIChmdF9oaWdocG93Mik6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogVXBkYXRlZC4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZ2V0X2dpbmRleCwgcGZyX2NvbXBhcmVfa2Vybl9wYWlycywKCXBmcl9zb3J0X2tlcm5pbmdfcGFpcnMpOiBEb24ndCBkZWZpbmUgaWYgRlRfT1BUSU1JWkVfTUVNT1JZIGlzIHNldC4KCShwZnJfcGh5X2ZvbnRfZG9uZSk6IERvbid0IGhhbmRsZSBga2Vybl9wYWlycycgaWYgRlRfT1BUSU1JWkVfTUVNT1JZCglpcyBzZXQuCgkocGZyX3BoeV9mb250X2xvYWQpOiBEb24ndCBjYWxsIGBwZnJfc29ydF9rZXJuaW5nX3BhaXJzJyBpZgoJRlRfT1BUSU1JWkVfTUVNT1JZIGlzIHNldC4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogQ29tbWVudCBvdXQgc29tZSBjb2RlIHdoaWNoCglkb2Vzbid0IHdvcmsgd2l0aCBicm9rZW4gZm9udHMuCgkocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpIFtGVF9PUFRJTUlaRV9NRU1PUlldOiBJbXBsZW1lbnQuCgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9LZXJuSXRlbVJlYyk6IE9wdGltaXplIG1lbWJlciB0eXBlcy4KCShQRlJfTkVYVF9LUEFJUik6IE5ldyBtYWNyby4KCShQRlJfUGh5Rm9udFJlYyk6IERvbid0IGRlZmluZSBga2Vybl9wYWlycycgaWYgRlRfT1BUSU1JWkVfTUVNT1JZIGlzCglzZXQuCgoJKiBzcmMvc2ZudC90dHNiaXQwLmMgKHR0X3NiaXRfZGVjb2Rlcl9sb2FkX2ltYWdlKTogSW50cm9kdWNlCgl0ZW1wb3JhcnkgdmFyaWFibGUgdG8gYXZvaWQgZ2NjIHdhcm5pbmcuCgkodHRfZmFjZV9sb2FkX3NiaXRfaW1hZ2UpOiBNYXJrIHVudXNlZCB2YXJpYWJsZXMgd2l0aCBGVF9VTlVTRUQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jICh0dF9mYWNlX2xvYWRfbG9jYSkgW0ZUX09QVElNSVpFX01FTU9SWV06CglSZW1vdmUgcmVkdW5kYW50IHZhcmlhYmxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogTW92aW5nIHRoZSBvcmRlciBvZiBkcml2ZXJzIHRvCglzcGVlZCB1cCBmb250IGxvYWRpbmcuICBUaGUgUENGIGFuZCBCREYgbG9hZGVycyBhcmUgc3RpbGwgc2xvdyBhbmQKCWNvbnN1bWUgZmFyIHRvbyBtdWNoIG1lbW9yeS4KCjIwMDUtMDMtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRldmVsL2Z0b3B0aW9uLmg6IFVwZGF0ZWQgdG8gcmVjZW50IGNoYW5nZXMuCgoyMDA1LTAzLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC9hZmR1bW15LmMsIHNyYy9hdXRvZml0L2FmZHVtbXkuaAoJKGFmX2R1bW15X3NjcmlwdF9jbGFzcyk6IEZpeCB0eXBlLgoKCSogc3JjL2F1dG9maXQvYWZsYXRpbi5jLCBzcmMvYXV0b2ZpdC9hZmxhdGluLmgKCShhZl9sYXRpbl9zY3JpcHRfY2xhc3MpOiBGaXggdHlwZS4KCgkqIHNyYy9hdXRvZml0L3J1bGVzLm1rIChBVVRPRl9EUlZfU1JDKTogRml4IHR5cG8uCgoyMDA1LTAzLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGtlcm4uYyAodHRfZmFjZV9sb2FkX2tlcm4sIHR0X2ZhY2VfZ2V0X2tlcm5pbmcpLAoJc3JjL3NmbnQvdHRzYml0MC5jICh0dF9mYWNlX2xvYWRfc2JpdF9zdHJpa2VzLAoJdHRfc2JpdF9kZWNvZGVyX2xvYWRfYnl0ZV9hbGlnbmVkLCB0dF9zYml0X2RlY29kZXJfbG9hZF9jb21wb3VuZCwKCXR0X3NiaXRfZGVjb2Rlcl9sb2FkX2ltYWdlKSwgc3JjL3NmbnQvdHRsb2FkLmMKCSh0dF9mYWNlX2xvYWRfbWV0cmljcyk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncwoJLS0gcmVkdW5kYW50IHZhcmlhYmxlcywgbWlzc2luZyBpbml0aWFsaXphdGlvbnMsIGV0Yy4KCgkqIHNyYy9zZm50L3R0c2JpdC5oOiBIYW5kbGUgRlRfT1BUSU1JWkVfTUVNT1JZLgoKCSogc3JjL2F1dG9maXQvcnVsZXMubWssIHNyYy9hdXRvZml0L21vZHVsZS5taywKCXNyYy9hdXRvZml0L2FmYW5nbGVzLmg6IE5ldyBmaWxlcy4KCgkqIHNyYy9hdXRvZml0L2FmaGludHMuYyAoYWZfYXhpc19oaW50c19uZXdfc2VnbWVudCwKCWFmX2F4aXNfaGludHNfbmV3X2VkZ2UpOiBOZXcgZnVuY3Rpb25zLgoJKGFmX2dseXBoX2hpbnRzX2RvbmUpOiBEbyBwcm9wZXIgZGVhbGxvY2F0aW9uLgoJKGFmX2dseXBoX2hpbnRzX3JlbG9hZCk6IE9ubHkgcmVhbGxvY2F0ZSBwb2ludHMgYXJyYXkuICBUaGlzCglkcmFzdGljYWxseSByZWR1Y2VzIGhlYXAgdXNhZ2UuCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmggKEFGX1BvaW50UmVjLCBBRl9TZWdtZW50UmVjKTogT3B0aW1pemUKCW1lbWJlciB0eXBlcyBhbmQgcG9zaXRpb25zLgoJKEFGX0F4aXNIaW50c1JlYyk6IEFkZCBgbWF4X3NlZ21lbnRzJyBhbmQgYG1heF9lZGdlcycuCgkoYWZfYXhpc19oaW50c19uZXdfc2VnbWVudCwgYWZfYXhpc19oaW50c19uZXdfZWRnZSk6IE5ldyBwcm90b3R5cGVzLgoKCSogc3JjL2F1dG9maXQvYWZsYXRpbi5jIChhZl9sYXRpbl9tZXRyaWNzY19zY2FsZSk6IERvbid0IGNhbGwKCUFGX1NDQUxFUl9FUVVBTF9TQ0FMRVMuCgkoYWZfbGF0aW5faGludHNfY29tcHV0ZV9zZWdtZW50cyk6IENoYW5nZSByZXR1cm4gdHlwZSB0byBGVF9FcnJvci4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCUltcHJvdmUgc2VnbWVudCBhbGxvY2F0aW9uLgoJKGFmX2xhdGluX2hpbnRzX2NvbXB1dGVfZWRnZXMpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gRlRfRXJyb3IuCglVcGRhdGUgYWxsIGNhbGxlcnMuCglJbXByb3ZlIGVkZ2UgYWxsb2NhdGlvbiBhbmQgbGluayBoYW5kbGluZy4KCShhZl9sYXRpbl9oaW50c19kZXRlY3RfZmVhdHVyZXMpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gRlRfRXJyb3IuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfbG9hZF9nKQoJPEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FPjogQXNzdXJlIGF4aXMtPm51bV9lZGdlcyA+IDEuICBUaGlzIGZpeGVzCglhIGJ1ZyB3aXRoIGNlcnRhaW4gZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBUaGUgYXV0by1maXR0ZXIgaXMgbm93IHRoZQoJb25seSBzdXBwb3J0ZWQgYXV0by1oaW50aW5nIG1vZHVsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKEZUX0lOVF9NQVgpOiBOZXcgbWFjcm8uCgoyMDA1LTAyLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jICh0dF9mYWNlX2xvYWRfbG9jYSk6IEZpeCB0eXBvLgoKCSogc3JjL3NmbnQvdHRrZXJuLmM6IEluY2x1ZGUgYHR0a2Vybi5oJy4KCShGVF9DT01QT05FTlQpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IEFkZCBlbnRyeSBmb3IgYHR0a2VybicuCgoJKiBzcmMvc2ZudC90dHNiaXQwLmM6IHMvRlRfRXJyXy9TRk5UX0Vycl8vLgoJRGVjb3JhdGUgY29uc3RhbnRzIHdpdGggYFUnIGFuZCBgTCcgd2hlcmUgbmVjZXNzYXJ5LgoKCSogc3JjL3NmbnQvdHRjbWFwLmMgKHR0X2NtYXA0X25leHQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwNS0wMi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoRlRfRHVtcE1lbW9yeSk6IEFkZGVkIHNvcnRpbmcgb2YgbWVtb3J5Cglzb3VyY2VzIGFjY29yZGluZyB0byBkZWNyZWFzaW5nIG1heGltdW0gY3VtdWxhdGl2ZSBhbGxvY2F0aW9ucy4KCShmdF9tZW1fc291cmNlX2NvbXBhcmUpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoKCSogc3JjL3NmbnQvdHRzYml0MC5jOiBOZXcgZmlsZSwgaW1wbGVtZW50aW5nIGEgaGVhcC1vcHRpbWl6ZWQKCWVtYmVkZGVkIGJpdG1hcCBsb2FkZXIuCgoJKiBzcmMvc2ZudC90dHNiaXQuYzogSW5jbHVkZSBgZnQyYnVpbGQuaCcsIEZUX0lOVEVSTkFMX0RFQlVHX0gsCglGVF9JTlRFUk5BTF9TVFJFQU1fSCwgRlRfVFJVRVRZUEVfVEFHU19ILgoJTG9hZCBgdHRzYml0MC5jJyBpZiBGVF9PUFRJTUlaRV9NRU1PUlkgaXMgc2V0LCBvdGhlcndpc2UgdXNlCglmaWxlIGNvbnRlbnRzLgoJKHR0X2ZhY2VfbG9hZF9zYml0X3N0cmlrZXMpOiBTZXQgdXAgcm9vdCBmaWVsZHMgdG8gaW5kaWNhdGUgdGhlCglzdHJpa2VzLiAgVGhpcyBmaXhlcyBTYXZhbm5haCBidWcgIzEyMTA3LgoJVXNlIGBzdGF0aWMnIGtleXdvcmQgZm9yIGBzYml0X2xpbmVfbWV0cmljc19maWVsZCcsCglgc3RyaWtlX3N0YXJ0X2ZpZWxkcycsIGBzdHJpa2VfZW5kX2ZpZWxkcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYyk6IERlZmluZQoJYHNiaXRfdGFibGUnLCBgc2JpdF90YWJsZV9zaXplJywgYHNiaXRfbnVtX3N0cmlrZXMnIGlmCglGVF9PUFRJTUlaRV9NRU1PUlkgaXMgc2V0LgoJRG9uJ3QgZGVmaW5lIGBudW1fc2JpdF9zdHJpa2VzJyBhbmQgYHNiaXRfc3RyaWtlcycgaWYKCUZUX09QVElNSVpFX01FTU9SWSBpcyBzZXQuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoc2JpdF9zaXplX3Jlc2V0KTogSGFuZGxlIEZUX09QVElNSVpFX01FTU9SWS4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSk6IEZpeGVkIGJ1ZyB0aGF0IHByZXZlbnRlZAoJbG9hZGluZyBTRk5UIGZvbnRzIHdpdGhvdXQgYSBga2VybicgdGFibGUuCglQcm9wZXJseSBwYXNzIHJvb3QtPmZhY2VfZmxhZ3MuCglSZW1vdmUgY29kZSBmb3IgVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9pbnRlcmZhY2UpCglbVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTXTogRG9uJ3QgdXNlIGB0dF9maW5kX3NiaXRfaW1hZ2UnCglhbmQgYHR0X2xvYWRfc2JpdF9tZXRyaWNzJy4KCgkqIHNyYy9zZm50L3R0Y21hcC5jOiBPcHRpbWl6ZSBsaW5lYXIgY2hhcm1hcCBzY2FubmluZyBmb3IgRm9ybWF0IDQuCgkoT1BUX0NNQVA0KTogTmV3IG1hY3JvLgoJKFRUX0NNYXA0UmVjKSBbT1BUX0NNQVA0XTogTmV3IHN0cnVjdHVyZS4KCSh0dF9jbWFwNF9pbml0LCB0dF9jbWFwNF9zZXRfcmFuZ2UsIHR0X2NtYXA0X25leHQsIHR0X2NtYXA0X3Jlc2V0KQoJW09QVF9DTUFQNF06IE5ldyBmdW5jdGlvbnMuCgkodHRfY21hcDRfY2hhcl9uZXh0KSBbT1BUX0NNQVA0XTogVXNlIGB0dF9jbWFwNF9uZXh0JyBhbmQKCWB0dF9jbWFwNF9yZXNldCcuCgkodHRfY21hcDRfY2xhc3NfcmVjKSBbT1BUX0NNQVA0XTogVXNlIGBUVF9DTWFwNFJlYycgYW5kCglgdHRfY21hcDRfaW5pdCcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFJlc2V0X1NCaXRfU2l6ZSk6IEhhbmRsZQoJRlRfT1BUSU1JWkVfTUVNT1JZLgoKCSogc3JjL2F1dG9maXQvYWZoaW50cy5oIChBRl9Qb2ludFJlYywgQUZfU2VnbWVudFJlYywgQUZfRWRnZVJlYyk6CglPcHRpbWl6ZSBtZW1iZXIgdHlwZXMuCgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfZG9uZSk6IENhbGwKCWBhZl9nbHlwaF9oaW50c19kb25lJy4KCjIwMDUtMDItMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0a2Vybi5jICh0dF9mYWNlX2xvYWRfa2Vybik6IEZpeCBhIHNtYWxsIGJ1ZyB3aGljaAoJY2F1c2VkIGludmFsaWQgKHJhbmRvbSkgcmV0dXJuIHZhbHVlcyBmb3IgdGhlIGhvcml6b250YWwga2VybmluZy4KCjIwMDUtMDItMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglJbXBsZW1lbnQgc2V2ZXJhbCBtZW1vcnkgb3B0aW1pemF0aW9ucyB0byBkcmFzdGljYWxseSByZWR1Y2UgdGhlCgloZWFwIHVzYWdlIG9mIEZyZWVUeXBlLCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9mIG1lbW9yeS1tYXBwZWQKCWZpbGVzLiAgVGhlIGlkZWEgaXMgdG8gYXZvaWQgbG9hZGluZyBhbmQgZGVjb2RpbmcgdGFibGVzIGluIHRoZQoJaGVhcCwgYW5kIGluc3RlYWQgYWNjZXNzIHRoZSByYXcgZGF0YSB3aGVuZXZlciBwb3NzaWJsZSAoaS5lLiwgd2hlbgoJaXQgZG9lc24ndCBjb21wcm9taXNlIHBlcmZvcm1hbmNlKS4KCglUaGlzIGhhcyBzZXZlcmFsIGJlbmVmaXRzOiBGb3IgZXhhbXBsZSwgb3BlbmluZyB2ZXJhLnR0ZiBub3cgdXNlcwoJanVzdCBhIHNtYWxsIGFtb3VudCBvZiBtZW1vcnkgKGV2ZW4gd2hlbiB0aGUgRlRfTGlicmFyeSBmb290cHJpbnQgaXMKCWFjY291bnRlZCBmb3IpLCB1bnRpbCB5b3Ugc3RhcnQgbG9hZGluZyBnbHlwaHMuICBFdmVuIHRoZW4sIHlvdSBzYXZlCglhdCBsZWFzdCAyMEtCIGNvbXBhcmVkIHRvIHRoZSBub24tb3B0aW1pemVkIGNhc2UuICBQZXJmb3JtYW5jZSBvZgoJdmFyaW91cyBvcGVyYXRpb25zLCBpbmNsdWRpbmcgb3BlbiBhbmQgY2xvc2UsIGhhcyBhbHNvIGJlZW4KCWRyYW1hdGljYWxseSBpbXByb3ZlZC4KCglNb3JlIG9wdGltaXphdGlvbnMgdG8gY29tZSwgZXNwZWNpYWxseSBmb3IgdGhlIGF1dG8taGludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFRUX0ZhY2VfR2V0S2VybmluZ0Z1bmMpOiBOZXcKCWZ1bmN0aW9uIHR5cGUuCgkoU0ZOVF9JbnRlcmZhY2UpOiBBZGQgaXQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfSGRteEVudHJ5UmVjLCBUVF9IZG14UmVjLAoJVFRfS2VybjBfUGFpclJlYyk6IERvbid0IGRlZmluZSBpZiBGVF9PUFRJTUlaRV9NRU1PUlkgaXMgc2V0LgoJKFRUX0ZhY2VSZWMpOiBEZWZpbmUgYGhvcnpfbWV0cmljcycsIGBob3J6X21ldHJpY3Nfc2l6ZScsCglgdmVydF9tZXRyaWNzJywgYHZlcnRfbWV0cmljc19zaXplJywgYGhkbXhfdGFibGUnLAoJYGhkbXhfdGFibGVfc2l6ZScsIGBoZG14X3JlY29yZF9jb3VudCcsIGBoZG14X3JlY29yZF9zaXplJywKCWBoZG14X3JlY29yZF9zaXplcycsIGBrZXJuX3RhYmxlJywgYGtlcm5fdGFibGVfc2l6ZSwKCWBudW1fa2Vybl90YWJsZXMnLCBga2Vybl9hdmFpbF9iaXRzJywgYGtlcm5fb3JkZXJfYml0cycgaWYKCUZUX09QVElNSVpFX01FTU9SWSBpcyBzZXQuCglEb24ndCBkZWZpbmUgYGhkbXgnLCBgbnVtX2tlcm5fcGFpcnMnLCBga2Vybl90YWJsZV9pbmRleCcsCglga2Vybl9wYWlycycgaWYgRlRfT1BUSU1JWkVfTUVNT1JZIGlzIHNldC4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9zZXQpOiBEb24ndCBzaGFkb3cgdmFyaWFibGUuCglGaXggY29tcGlsZXIgd2FybmluZy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoR2V0X0tlcm5pbmcpOiBSZW5hbWVkIHRvLi4uCgkoY2ZmX2dldF9rZXJuaW5nKTogVGhpcy4gIFNpbXBsaWZ5LgoJKGNmZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvSmFtZmlsZSAoX3NvdXJjZXMpOiBBZGQgYHR0a2VybicuCgkqIHNyYy9zZm50L3J1bGVzLm1rIChTRk5UX0RSVl9TUkMpOiBBZGQgYHR0a2Vybi5jJy4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfaW50ZXJmYWNlKTogQWRkIGB0dF9mYWNlX2dldF9rZXJuaW5nJy4KCgkqIHNyYy9zZm50L3NmbnQuYzogSW5jbHVkZSBgdHRrZXJuLmMnLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmM6IEluY2x1ZGUgYHR0a2Vybi5oJy4KCShzZm50X2xvYWRfZmFjZSk6IENvbnNpZGVyIHRoZSBga2VybicgYW5kIGBnYXNwJyB0YWJsZSBhcyBvcHRpb25hbC4KCShzZm50X2RvbmVfZmFjZSk6IENhbGwgYHR0X2ZhY2VfZG9uZV9rZXJuJy4KCUhhbmRsZSBob3Jpem9udGFsIG1ldHJpY3MgZm9yIEZUX09QVElNSVpFX01FTU9SWS4KCgkqIHNyYy9zZm50L3R0a2Vybi5jLCBzcmMvc2ZudC90dGtlcm4uaDogTmV3IGZpbGVzLiAgQ29kZSBoYXMgYmVlbgoJdGFrZW4gZnJvbSBgdHRsb2FkLmMnIGFuZCBgdHRsb2FkLmgnLgoJUHJvdmlkZSBzcGVjaWFsIHZlcnNpb25zIG9mIGB0dF9mYWNlX2xvYWRfa2VybicsCglgdHRfZmFjZV9nZXRfa2VybmluZycsIGFuZCBgdHRfZmFjZV9kb25lX2tlcm4nIGZvcgoJRlRfT1BUSU1JWkVfTUVNT1JZLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9tZXRyaWNzLCB0dF9mYWNlX2xvYWRfaGRteCwKCXR0X2ZhY2VfZnJlZV9oZG14KTogUHJvdmlkZSB2ZXJzaW9uIGZvciBGVF9PUFRJTUlaRV9NRU1PUlkuCgkodHRfZmFjZV9sb2FkX2tlcm4sIHR0X2tlcm5fcGFpcl9jb21wYXJlLCBUVF9LRVJOX0lOREVYKTogTW92ZWQgdG8KCWB0dGtlcm4uYycuCgoJKiBzcmMvc2ZudC90dGxvYWQuaDogVXBkYXRlZC4KCgkqIHNyYy9zZm50L3R0c2JpdC5jIChzYml0X21ldHJpY3NfZmllbGQpOiBBZGQgYHN0YXRpYycga2V5d29yZC4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChHZXRfS2VybmluZyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9nZXRfa2VybmluZyk6IFRoaXMuICBTaW1wbGlmeS4KCSh0dF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfR2V0X01ldHJpY3MpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9nZXRfbWV0cmljcyk6IFRoaXMuIFByb3ZpZGUgdmVyc2lvbiBmb3IgRlRfT1BUSU1JWkVfTUVNT1JZLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKEdldF9BZHZhbmNlX1dpZHRocyk6IFJlcGxhY2VkIHdpdGguLi4KCShHZXRfQWR2YW5jZV9XaWR0aFB0cik6IFRoaXMuICBQcm92aWRlIHZlcnNpb24gZm9yCglGVF9PUFRJTUlaRV9NRU1PUlkuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oOiBVcGRhdGVkLgoKMjAwNS0wMi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYzogUGFydGx5IHJld3JpdHRlbi4gIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGxpc3QKCWFsbCBhbGxvY2F0aW9uIHNpdGVzIGluIHRoZSBtZW1vcnkgZGVidWdnZXIuICBBbHNvIGEgbmV3IGZ1bmN0aW9uCglGVF9EdW1wTWVtb3J5KCkgd2FzIGFkZGVkLiAgSXQgaXMgb25seSBhdmFpbGFibGUgaW4gYnVpbGRzIHdpdGgKCUZUX0RFQlVHX01FTU9SWSBkZWZpbmVkLCBhbmQgeW91IG11c3QgZGVjbGFyZSBpdCBpbiB5b3VyIG93biBjb2RlIHRvCgl1c2UgaXQsIGkuZS4sIHdpdGggc29tZXRoaW5nIGxpa2U6CgoJICBleHRlcm4gdm9pZCBGVF9EdW1wTWVtb3J5KCBGVF9NZW1vcnkgKTsKCgkgIC4uLgoKCSAgRlRfRHVtcE1lbW9yeSggbWVtb3J5ICk7CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUik6IENvbW1lbnQgb3V0IGRlZmluaXRpb24gLS0KCWFnYWluLgoJKEZUX09QVElNSVpFX01FTU9SWSk6IE5ldyBjb25maWd1cmF0aW9uIG1hY3JvIHRvIGNvbnRyb2wgdmFyaW91cwoJb3B0aW1pemF0aW9ucyBmb3IgcmVkdWNpbmcgdGhlIGhlYXAgZm9vdHByaW50IG9mIG1lbW9yeS1tYXBwZWQKCVRydWVUeXBlIGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIChGVF9BUlJBWV9aRVJPKTogTmV3Cgljb252ZW5pZW5jZSBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9GYWNlUmVjKQoJW0ZUX09QVElNSVpFX01FTU9SWV06IFVzZSBvcHRpbWl6ZWQgdHlwZXMgZm9yIGBudW1fbG9jYXRpb25zJyBhbmQKCWBnbHlwaF9sb2NhdGlvbnMnLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IENhbGwKCWB0dF9mYWNlX2dldF9sb2NhdGlvbicuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2ZhY2VfaW5pdCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSW1wcm92ZSBlcnJvciBoYW5kbGluZy4KCSh0dF9mYWNlX2RvbmUpOiBDYWxsIGB0dF9mYWNlX2RvbmVfbG9jYScuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jICh0dF9mYWNlX2dldF9sb2NhdGlvbiwgdHRfZmFjZV9kb25lX2xvY2EpOgoJTmV3IGZ1bmN0aW9ucy4gIElmIEZUX09QVElNSVpFX01FTU9SWSBpcyBzZXQsIHRoZSBsb2NhdGlvbnMgdGFibGUgaXMKCXJlYWQgZGlyZWN0bHkgZnJvbSBtZW1vcnktbWFwcGVkIHN0cmVhbXMsIGluc3RlYWQgb2YgYmVpbmcgZGVjb2RlZAoJaW50byB0aGUgaGVhcC4KCSh0dF9mYWNlX2xvYWRfbG9jYSkgW0ZUX09QVElNSVpFX01FTU9SWV06IE5ldyBpbXBsZW1lbnRhdGlvbi4KCSh0dF9mYWNlX2xvYWRfY3Z0LCB0dF9mYWNlX2xvYWRfZnBnbSk6IE9ubHkgbG9hZCB0YWJsZSBpZiB0aGUKCWJ5dGVjb2RlIGludGVycHJldGVyIGlzIGNvbXBpbGVkIGluLgoKCSogc3JjL3RydWV0eXBlL3R0cGxvYWQuaDogVXBkYXRlZC4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCk6IEltcHJvdmUgYWxsb2NhdGlvbgoJbG9naWMuCgoyMDA1LTAyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2g6IFJlZ2VuZXJhdGVkIHdpdGggYGxpYnRvb2xpemUgLS1mb3JjZQoJLS1jb3B5JyBmcm9tIGxpYnRvb2wgMS41LjE0LgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuOS40LgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIGZyb20KCWBjb25maWcnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwtc2gsIGJ1aWxkcy91bml4L21raW5zdGFsbGRpcnM6IFVwZGF0ZWQgZnJvbQoJYHRleGluZm8nIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCjIwMDUtMDItMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF91bmljb2RlX2luaXQpOiBEb24ndCB0cnkgdG8gYnVpbGQKCWEgY21hcCBmb3IgYSBDSUQta2V5ZWQgZm9udCB3aGljaCBkb2Vzbid0IGhhdmUgU0lEcy4KCjIwMDUtMDItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocmVhZF9iaW5hcnlfZGF0YSk6IFJldHVybiBtb3JlIG1lYW5pbmdmdWwKCXZhbHVlLgoJKHBhcnNlX2VuY29kaW5nLCBwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MsIHBhcnNlX2RpY3QpOiBDaGVjawoJcGFyc2VyIGVycm9yIHZhbHVlIGFmdGVyIGNhbGwgdG8gVDFfU2tpcF9QU19Ub2tlbiAod2hlcmUgbmVjZXNzYXJ5KS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBDaGVjayBwYXJzZXIgZXJyb3IKCXZhbHVlIGFmdGVyIGNhbGwgdG8gVDFfU2tpcF9QU19Ub2tlbi4KCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoY2lkX3BhcnNlcl9uZXcpOiBDaGVjayBwYXJzZXIgZXJyb3IgdmFsdWUKCWFmdGVyIGNhbGwgdG8gY2lkX3BhcnNlcl9za2lwX1BTX3Rva2VuLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2VfZW5jb2RpbmcsIHQ0Ml9wYXJzZV9zZm50cywKCXQ0Ml9wYXJzZV9jaGFyc3RyaW5ncywgdDQyX3BhcnNlX2RpY3QpOiBDaGVjayBwYXJzZXIgZXJyb3IgdmFsdWUKCWFmdGVyIGNhbGwgdG8gVDFfU2tpcF9QU19Ub2tlbiAod2hlcmUgbmVjZXNzYXJ5KS4KCgkqIHNyYy9wc2F1eC9wc29iamMuYyAoc2tpcF9zdHJpbmcsIHBzX3BhcnNlcl9za2lwX1BTX3Rva2VuLAoJcHNfdG9ieXRlcyk6IEFkZCBlcnJvciBtZXNzYWdlcy4KCjIwMDUtMDItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogT3V0cHV0IG1vcmUgdmFyaWFibGVzIHRvIHRoZSBjcmVhdGVkIE1ha2VmaWxlIHNvIHRoYXQKCWl0IGNhbiBiZSB1c2VkIGZvciBmdDJkZW1vcyBhbHNvIChpZiB0aGUgRlQyREVNT1MgdmFyaWFibGUgaXMKCWRlZmluZWQpLgoKMjAwNS0wMi0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Bmci9wZnJnbG9hZC5jIChwZnJfZ2x5cGhfbG9hZCk6IEZpeCBhbiB1bmJvdW5kZWQgZ3Jvd2luZwoJZHluYW1pYyBhcnJheSB3aGVuIGxvYWRpbmcgYSBnbHlwaCBmcm9tIGEgUEZSIGZvbnQgKFNhdmFubmFoIGJ1ZwoJIzExOTIxKS4KCgkqIHNyYy9iYXNlL2Z0Yml0bWFwLmMgKEZUX0JpdG1hcF9Db252ZXJ0KTogU21hbGwgaW1wcm92ZW1lbnRzIHRvIHRoZQoJY29udmVyc2lvbiBmdW5jdGlvbiAobWFpbmx5IHN0dXBpZCBvcHRpbWl6YXRpb24pLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogQWRkaW5nIGZ0Yml0bWFwLmMgdG8gdGhlIGxpc3Qgb2YgY29tcGlsZWQgZmlsZXMuCgoyMDA1LTAyLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IEFkZCBuZXcgZmxhZyBgLS1mdHZlcnNpb24nIHRvCglyZXR1cm4gdGhlIEZyZWVUeXBlIHZlcnNpb24uICBTdWdnZXN0ZWQgYnkgR2VvcmdlIFdpbGxpYW1zCgk8Z3d3QHNpbGNvbS5jb20+LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNS0wMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290dmFsaWQvb3R2bW9kLmMgKG90dl92YWxpZGF0ZSk6IERlYWxsb2NhdGUgYXJyYXlzIGluIGNhc2UKCW9mIGVycm9yLiAgUmVwb3J0ZWQgYnkgWUFNQU5PLVVDSEkgSGlkZXRvc2hpIDxtZXJAZGluLm9yLmpwPi4KCjIwMDUtMDItMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKQoJPG9wX2Nsb3NlcGF0aD46IEFjY2VwdCBgVDFfUGFyc2VfSGF2ZV9Nb3ZldG8nIHN0YXRlIGFsc28gd2hpY2ggY2FuCgloYXBwZW4gaW4gZW1wdHkgZ2x5cGhzLiAgUmVwb3J0ZWQgYnkgSWFuIEJyb3duCgk8aWFuLmJyb3duQHByaW50c29mdC5kZT4gKFNhdmFubmFoIGJ1ZyAjMTE4NTYpLgoKMjAwNS0wMi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290bGF5b3V0Lyo6IFJlbW92ZWQuICBPYnNvbGV0ZS4KCjIwMDQtMTItMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogUmVnZW5lcmF0ZWQgd2l0aCBgbGlidG9vbGl6ZSAtLWZvcmNlCgktLWNvcHknIGZyb20gbGlidG9vbCAxLjUuMTAuCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFJlZ2VuZXJhdGVkIHdpdGggYGFjbG9jYWwgLUkgLicgZnJvbQoJYXV0b21ha2UgMS45LjQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgd2l0aCBhdXRvY29uZiAyLjU5Yi4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCBmcm9tCglgY29uZmlnJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcuCgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLXNoOiBVcGRhdGVkIGZyb20KCWB0ZXhpbmZvJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9TdHJlYW1fT3Blbik6IEFkZCBwcm9wZXIgY2FzdCBmb3IKCWZ0X2FsbG9jLgoJRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDA0LTEyLTI3ICBEaXJjayBCbGFza2V5ICA8bGlzdHRhcmdldEBkYW5iYWxhLmNvbT4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogSW1wcm92ZSBjb21wdXRhdGlvbiBvZgoJRlRfU1RZTEVfQk9MRF9GTEFHLgoKMjAwNC0xMi0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBBIENGRiB3aXRoaW4gYW4gU0ZOVCBjYW4gaGF2ZQoJb25seSBhIHNpbmdsZSBmb250LiAgVGhpcyBpcyB1bmRvY3VtZW50ZWQgYnV0IGhhcyBiZWVuIHZlcmlmaWVkIG9uCgl0aGUgb3BlbnR5cGUgbGlzdC4KCjIwMDQtMTItMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIEphbWZpbGUgKEZUMl9DT01QT05FTlRTKTogQWRkIGBvdHZhbGlkJy4KCjIwMDQtMTItMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Yml0bWFwLmMgKEZUX0JpdG1hcF9Db252ZXJ0KTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDA0LTEyLTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiB2bXNfbWFrZS5jb206IEFkZCBmdGJpdG1hcC5vYmouCgoyMDA0LTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJpdG1hcC5jLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0Yml0bWFwLmg6IE5ldyBmaWxlcyBmb3IKCWhhbmRsaW5nIHZhcmlvdXMgYml0bWFwIGZvcm1hdHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9CSVRNQVBfSCk6IE5ldyBtYWNyby4KCgkqIHNyYy9iYXNlL3J1bGVzLm1rIChCQVNFX0VYVF9TUkMpOiBBZGQgZnRiaXRtYXAuYy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpOiBEb24ndCBjb252ZXJ0IGJpdG1hcHMgdG8gOGJwcAoJYnV0IHJldHVybiB0aGVtIGFzLWlzLgoKCSogZG9jcy9DSEFOR0VTOiBNZW50aW9uIG5ldyBiaXRtYXAgQVBJLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2hhcHRlci5zOiBVcGRhdGVkLgoKMjAwNC0xMi0xMSAgUm9iZXJ0IENsYXJrICA8ZnJlZXR5cGVAcmF0dHkub3JnLnVrPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9LZXJuaW5nKTogTWFrZSBrZXJuaW5nIGFtb3VudAoJZGVwZW5kZW50IG9uIHBwZW0gYnkgc2NhbGluZyBkb3duIGZvciBwcGVtIDwgMjUsIHRoZW4gZG8gbm9ybWFsCglyb3VuZGluZy4gIFRoaXMgZ2l2ZXMgc2xpZ2h0bHkgYmV0dGVyIHJlc3VsdHMgdGhhbiByb3VuZGluZyB0b3dhcmRzCgl6ZXJvLgoKMjAwNC0xMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9LZXJuaW5nKTogQWx3YXlzIHJvdW5kIHRvd2FyZHMgemVybwoJZm9yIEZUX0tFUk5JTkdfREVGQVVMVC4gIFRoaXMgZ3JlYXRseSBlbmhhbmNlcyB0aGUga2VybmluZyBmb3IKCXNtYWxsIHBwZW0gdmFsdWVzLgoKMjAwNC0xMi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZ0X2dseXBoc2xvdF9jbGVhcik6IFJlc2V0IGBsc2JfZGVsdGEnIGFuZAoJYHJzYl9kZWx0YScuCgoyMDA0LTEyLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsKTogVXNlICQoT0JKX0JVSUxEKSBmb3IgZnRjb25maWcuaC4KCjIwMDQtMTItMDMgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0ZWQgdG8gbGF0ZXN0CglzcGVjaWZpY2F0aW9ucyBmcm9tIE1pY3Jvc29mdC4KCjIwMDQtMTEtMjYgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIHZtc19tYWtlLmNvbTogSW5jbHVkZSBmdGJib3guYy4KCUZpeCBgY2NvcHQnLgoJSGFuZGxlIGBvdHZhbGlkJyBtb2R1bGUuCglVcGRhdGUgYHZtc2xpYi5kYXQnIGRlZmF1bHQgdmFsdWVzLgoJRml4ZXMgdG8gYGxpYnMub3B0Jy4KCjIwMDQtMTEtMjMgIEFuZGVycyBLYXNlb3JnICA8YW5kZXJzQGthc2VvcmcuY29tPgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PcmllbnRhdGlvbkV4dHJlbXVtUmVjLAoJZnRfb3JpZW50YXRpb25fZXh0cmVtdW1fY29tcHV0ZSk6IFJlbW92ZWQuCgkoRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24pOiBSZXdyaXR0ZW4sIHNpbXBsaWZpZWQuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jOiBJbmNsdWRlIEZUX09VVExJTkVfSC4KCShhaF90ZXN0X2V4dHJlbXVtLCBhaF9nZXRfb3JpZW50YXRpb24pOiBSZW1vdmVkLgoJKGFoX291dGxpbmVfbG9hZCk6IFVzZSBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoZnRfdGVzdF9leHRyYW1hLCBmdF9nZXRfb3JpZW50YXRpb24pOiBSZW1vdmVkLgoJKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IFVzZSBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbi4KCjIwMDQtMTEtMjMgIEZlcm5hbmRvIFBhcGEgIDxmcGFwYUBuZXRnYXRlLmNvbS51eT4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5oOiBGaXggdHlwby4KCjIwMDQtMTEtMjIgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBDb3JyZWN0ZWQgbG9naWMgdGhhdCBkZXRlY3RzIFdpbmRvd3MgTlQgdG8KCXVzZSB0aGUgcHJldmlvdXMgY2hhbmdlIGV2ZW4gaWYgd2luMzIgaXMgZm9yY2VkLiAgQ29ycmVjdGVkCglkZXRlY3Rpb24gb2Ygd2luMzIgb24gV2luOVguCgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQWRkZWQgc2FtZSBjb3JyZWN0aW9uIGFzIGZvciB3aW4zMiBhYm91dAoJQ09QWSBvbiBXaW5kb3dzIE5ULiAgRGV0ZWN0aW9uIG9mIHBsYWluIERPUyA3LnguCgoyMDA0LTExLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZGV0ZWN0Lm1rOiBVbmRvIGNoYW5nZSBmcm9tIDIwMDQtMTEtMjAuCgkqIGJ1aWxkcy93aW4zMi9kZXRlY3QubWs6IElmIHRoZSBgT1MnIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zCglgV2luZG93c19OVCcsIHVzZSBgY21kLmV4ZSAvYyBjb3B5JyBmb3IgY29weWluZyBmaWxlcy4KCjIwMDQtMTEtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9kZXRlY3QubWsgKGRvc19zZXR1cCk6IFVzZSBgY21kLmV4ZScgZm9yIGNvcHlpbmcKCSQoQ09ORklHX01LKSB0byBmb3JjZSBsb3dlcmNhc2UgZmlsZSBuYW1lIHVuZGVyIFdpbmRvd3MuCgoyMDA0LTExLTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRml4IGEgc2VyaW91cyBidWcgaW4gdGhlIFRUIGhpbnRlci4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoKTogRG9uJ3Qgc2hpZnQKCXBvaW50cyB2ZXJ0aWNhbGx5IGJlZm9yZSBoaW50aW5nLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKCSogc3JjL2NhY2hlL2Z0Y2dseXBoLmMgKEZUQ19HTm9kZV9VbnNlbGVjdEZhbWlseSwKCUZUQ19HQ2FjaGVfTG9va3VwKTogQSBuZXcgdHJ5IHRvIGZpeCBjb21wYXJpc29uIHdpdGggemVyby4KCjIwMDQtMTEtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogQWRkIGAtZm5vLXN0cmljdC1hbGlhc2luZycgaWYgZ2NjIGlzCgl1c2VkLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgZnJvbQoJYGNvbmZpZycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoKMjAwNC0xMS0xNiAgRHIuIE1hcnRpbiBQLkouIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHNyYy9jYWNoZS9mdGNnbHlwaC5jIChGVENfR05vZGVfVW5zZWxlY3RGYW1pbHksCglGVENfR0NhY2hlX0xvb2t1cCk6IEZpeCBjb21wYXJpc29uIHdpdGggemVyby4KCgkqIGRvY3MvSU5TVEFMTC5WTVM6IFVwZGF0ZWQuCgoJKiB2bXNfbWFrZS5jb206IFVwZGF0ZWQuICBBbGwgYGRlc2NyaXAubW1zJyBmaWxlcyBhcmUgbm93IGNyZWF0ZWQKCWF1dG9tYXRpY2FsbHkuCgoJKiBzcmMvKi9kZXNjcmlwLm1tczogUmVtb3ZlZC4KCjIwMDQtMTEtMTYgIE93ZW4gVGF5bG9yICA8b3RheWxvckByZWRoYXQuY29tPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBTdXByZXNzIC1MJGxpYmRpciBmb3IKCS91c3IvbGliNjQgYXMgd2VsbCBhcyAvdXNyL2xpYi4gKFJlcG9ydGVkIGJ5IERhbiBXaW5zaGlwIC0KCWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTk5KQoKMjAwNC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfc2VydmljZV9wc19pbmZvKTogVXBkYXRlZC4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChjaWRfc2VydmljZV9wc19pbmZvKTogVXBkYXRlZC4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfcHNfZ2V0X2ZvbnRfcHJpdmF0ZSk6IE5ldyBmdW5jdGlvbi4KCSh0NDJfc2VydmljZV9wc19pbmZvKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX2RpY3QpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDQtMTEtMTEgIERhdmlkIEJldmFuICA8ZGJldmFuQGVtdGV4LmNvbT4KCglBZGQgbmV3IGZ1bmN0aW9uIEZUX0dldF9QU19Gb250X1ByaXZhdGUoKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaAoJKFBTX0dldEZvbnRQcml2YXRlRnVuYyk6IE5ldyBzZXJ2aWNlIGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oLCBzcmMvYmFzZS9mdHR5cGUxLmMKCShGVF9HZXRfUFNfRm9udF9Qcml2YXRlKTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX3BzX2dldF9mb250X3ByaXZhdGUpOiBOZXcgZnVuY3Rpb24uCgkodDFfc2VydmljZV9wc19pbmZvKTogVXBkYXRlZC4KCjIwMDQtMTAtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmg6IEluY2x1ZGUgYHN0ZGRlZi5oJy4KCShmdF9wdHJkaWZmX3QpOiBEZWZpbmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCAoRlRfUHRyRGlzdCk6IFVzZSBgZnRfcHRyZGlmZl90Jy4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcGFyc2VfZGljdCksIHNyYy90eXBlMS90MWxvYWQuYwoJKHBhcnNlX2RpY3QpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDQtMTAtMTEgIEpvc2h1YSBOZWFsICA8am5lYWxAY3NkYWlseS5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAuYyAodHRfZmFjZV9idWlsZF9jbWFwcyk6IENoZWNrIGZvciBwb2ludGVyCglvdmVyZmxvdy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfaGRteCk6IFByb3RlY3QgYWdhaW5zdCBiYWQgaW5wdXQuCglEb24ndCB1c2UgRlRfUU5FV19BUlJBWSBidXQgRlRfTkVXX0FSUkFZIHRvIG1ha2UgZGVhbGxvY2F0aW9uIHdvcmsKCWluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIHNyYy9zZm50L3R0c2JpdC5jIChMb2FkX1NCaXRfUmFuZ2UpOiBDaGVjayByYW5nZSBpbnRlcnZhbHMuCgkodHRfZmFjZV9sb2FkX3NiaXRfc3RyaWtlcyk6IEFsbG9jYXRlIGBzdHJpa2Vfc2JpdF9yYW5nZXMnIGFmdGVyCglmcmFtZSB0ZXN0LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRMb2FkX1NpbXBsZV9HbHlwaCk6IEFkZCBhc3NlcnRpb24gZm9yCglgZmxhZycuCgoyMDA0LTEwLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTEwLTA5ICBCb3JpcyBMZXRvY2hhICA8Yi5sZXRvY2hhQGN6LmdtYy5uZXQ+CgoJRml4IGhhbmRsaW5nIG9mIE5QVVNIVyBpZiBza2lwcGVkIGluIGRhdGEgc3RyZWFtLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKG9wY29kZV9sZW5ndGgpOiBTZXQgdmFsdWUgZm9yIE5QVVNIVwoJdG8gLTIuCgkoU2tpcENvZGUsIFRUX1J1bklucyk6IFVzZSBvcGNvZGVfbGVuZ3RoIHZhbHVlIGZvciBjb21wdXRhdGlvbiBvZgoJYnl0ZXMgdG8gYmUgc2tpcHBlZC4KCjIwMDQtMDktMTAgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIHZtc19tYWtlLmNvbTogVXBkYXRlZC4KCjIwMDQtMDktMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGRpbmcgT3BlblR5cGUgdmFsaWRhdGlvbiBtb2R1bGUuICBUaGUgY29kZSBpcyBiYXNlZCBvbiB0aGUKCSh1bmZpbmlzaGVkKSBgb3RsYXlvdXQnIG1vZHVsZSBidXQgaGFzIGJlZW4gaGVhdmlseSBtb2RpZmllZCB0byBtYWtlCglpdCBtdWNoIG1vcmUgY29tcGFjdC4KCgkqIHNyYy9vdHZhbGlkLyo6IE5ldyBtb2R1bGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3R2YWwuaCwgc3JjL2Jhc2UvZnRvdHZhbC5jLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm90dmFsLmg6IE5ldyBmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IEFkZCBvdHZfbW9kdWxlX2NsYXNzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9PUEVOVFlQRV9WQUxJREFURV9IKTogTmV3CgltYWNyby4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaAoJKEZUX1NFUlZJQ0VfT1BFTlRZUEVfVkFMSURBVEVfSCk6IE5ldyBtYWNyby4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmggKG90dm1vZHVsZSwgb3R2Y29tbW9uLAoJb3R2YmFzZSwgb3R2Z2RlZiwgb3R2Z3Bvcywgb3R2Z3N1Yiwgb3R2anN0Zik6IE5ldyB0cmFjZSBjb21wb25lbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNoYXB0ZXJzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9KYW1maWxlIChMaWJyYXJ5KSwgc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpLAoJc3JjL2Jhc2UvcnVsZXMubWsgKEJBU0VfRVhUX1NSQyk6IFVwZGF0ZWQuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA5LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvc291cmNlcy5weSAocmVfc291cmNlX2Jsb2NrX2Zvcm1hdDIpIDxjb2x1bW4+OgoJVXNlIGxvb2thaGVhZCBhc3NlcnRpb24gdG8gbm90IG1hdGNoIGAqLycuICBUaGlzIHJlbW92ZXMgc3B1cmlvdXMKCWluc2VydGlvbnMgb2YgYC8nIGluIHRoZSBIVE1MIG91dHB1dC4KCjIwMDQtMDktMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGd4dmFyLmMgKFRUX1ZhcnlfR2V0X0dseXBoX0RlbHRhcyk6IEZpeCBjYWxsIHRvCglGVF9ORVdfQVJSQVkuCgoyMDA0LTA5LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBEb24ndCBpbmNsdWRlCglGVF9DT05GSUdfU1RBTkRBUkRfTElCUkFSWV9ILgoJKEZUX1ZhbGlkYXRvciwgRlRfVmFsaWRhdGlvbkxldmVsLCBGVF9WYWxpZGF0b3JSZWMsIEZUX1ZBTElEQVRPUiwKCWZ0X3ZhbGlkYXRvcl9pbml0LCBmdF92YWxpZGF0b3JfcnVuLCBmdF92YWxpZGF0b3JfZXJyb3IsIEZUX0lOVkFMSUQsCglGVF9JTlZBTElEX1RPT19TSE9SVCwgRlRfSU5WQUxJRF9PRkZTRVQsIEZUX0lOVkFMSURfRk9STUFULAoJRlRfSU5WQUxJRF9HTFlQSF9JRCwgRlRfSU5WQUxJRF9EQVRBKTogTW92ZSB0by4uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHZhbGlkLmg6IE5ldyBmaWxlLgoJTWFrZSBGVF9JTlZBTElEIHJldHVybiBtb2R1bGUtc3BlY2lmaWMgZXJyb3IgY29kZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1ZBTElEQVRFX0gpOiBOZXcKCW1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oOiBVbmRlZmluZSBGVF9FUlJfUFJFRklYIG9ubHkgaWYKCUZUX0tFRVBfRVJSX1BSRUZJWCBpc24ndCBkZWZpbmVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfVkFMSURBVEVfSC4KCgkqIHNyYy9zZm50L3R0Y21hcC5oOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX09CSkVDVFNfSCBidXQKCUZUX0lOVEVSTkFMX1ZBTElEQVRFX0guCgoJKiBzcmMvc2ZudC90dGNtYXAuYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9PQkpFQ1RTX0ggYnV0CglGVF9JTlRFUk5BTF9WQUxJREFURV9ILgoJSW5jbHVkZSBzZmVycm9ycy5oIGJlZm9yZSBGVF9JTlRFUk5BTF9WQUxJREFURV9ILgoJcy9GVF9FcnJfT2svU0ZOVF9FcnJfT2svLgoKCSogc3JjL3NmbnQvc2ZlcnJvcnMuaDogRGVmaW5lIEZUX0tFRVBfRVJSX1BSRUZJWC4KCgkqIHNyYy90eXBlMS90MWFmbS5jOiBJbmNsdWRlIHQxZXJyb3JzLmguCgoyMDA0LTA5LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBIaWdoZXN0IGRlYnVnIGxldmVsIGlzIDcsCglub3QgNi4KCSogZG9jcy9ERUJVRzogVXBkYXRlZC4KCjIwMDQtMDgtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmggKFRUQUdfQkFTRSwgVFRBR19HREVGLCBUVEFHX0dQT1MsCglUVEFHX0pTVEYpOiBOZXcgdGFncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9CeXRlcywgRlRfVGFnKTogTmV3IHR5cGVkZWZzLgoJKEZUX0ludCk6IEFkZCBgc2lnbmVkJy4KCjIwMDQtMDgtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdGxheW91dC9vdGxncG9zLmMgKG90bF9ncG9zX3N1YnRhYmxlX3ZhbGlkYXRlKTogQWRkIGFyZ3VtZW50Cgl0byBwYXNzIG51bWJlciBvZiBsb29rdXBzLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJRG9uJ3QgY2FsbCBvdGxfbG9va3VwX2xpc3RfdmFsaWRhdGUgYnV0IG90bF9sb29rdXBfdmFsaWRhdGUuCgkob3RsX2dwb3NfdmFsaWRhdGUpOiBDYWxsIG90bF9sb29rdXBfbGlzdF92YWxpZGF0ZSBpbnN0ZWFkIG9mCglvdGxfZ3Bvc19zdWJ0YWJsZV92YWxpZGF0ZS4KCgkqIHNyYy9vdGxheW91dC9vdGxncG9zLmg6IFVwZGF0ZWQuCgoJKiBzcmMvb3RsYXlvdXQvb3RsanN0Zi5jIChvdGxfanN0Zl9tYXhfdmFsaWRhdGUpOiBBZGQgYXJndW1lbnQgdG8KCXBhc3MgbnVtYmVyIG9mIGxvb2t1cHMuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfcmVhbCk6IHMvZXhwL2V4cG9uZW50LyB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zZm50L3R0Y21hcDAuaDogUmVuYW1lZCB0by4uLgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRjbWFwLmg6IFRoaXMuCgkqIHNyYy9zZm50L0phbWZpbGUsIHNyYy9zZm50L3J1bGVzLm1rLCBzcmMvc2ZudC9zZmRyaXZlci5jLAoJc3JjL3NmbnQvc2ZudC5jLCBzcmMvc2ZudC9zZm9ianMuYzogVXBkYXRlZC4KCgoJKiBidWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tayAoQ0ZMQUdTKTogRG9uJ3QgYWRkIGAtV25lc3RlZC1leHRlcm5zJwoJaWYgY29tcGlsZXIgaXMgZysrICh2My4zLjMgZW1pdHMgYSB3YXJuaW5nIG90aGVyd2lzZSkuCgoyMDA0LTA4LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5jIChvdGxfdmFsdWVfbGVuZ3RoKTogUmV0dXJuIG51bWJlciBvZiBieXRlcywKCW5vdCBudW1iZXIgb2YgMTZiaXQgZW50aXRpZXMuCgkob3RsX2dwb3NfbG9va3VwMl92YWxpZGF0ZSk6IENoZWNrIGNsYXNzIGRlZmluaXRpb24gdGFibGVzIGZvcgoJZm9ybWF0IDIuCglGaXggbG9vcCBmb3IgZm9ybWF0IDIuCgkob3RsX2xpZ2FfbWFyazJfdmFsaWRhdGUpOiBGaXggb2Zmc2V0IGZvciBvdGxfYW5jaG9yX3ZhbGlkYXRlLgoKMjAwNC0wOC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRtYWMuYzogRG9uJ3QgaW5jbHVkZSB0cnVldHlwZS90dG9ianMuaC4KCURvbid0IGluY2x1ZGUgdHlwZTEvdDFvYmpzLmguCgkoRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMpIFshX19NV0VSS1NfX106IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCjIwMDQtMDgtMjcgIE1hdGhpZXUgTWFsYXRlcnJlICA8bWF0aGlldUBtYWxhdGVycmUuY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYzogSGFuZGxlIE9TX0lOTElORSBmb3IgeGxjIGNvbXBpbGVyIGFsc28uCgoyMDA0LTA4LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvb3RsYXlvdXQvb3RsYXlvdXQuaDogQWRkIGNvcHlyaWdodC4KCShPVExfSU5WQUxJRF9PRkZTRVQpOiBSZW1vdmVkLgoKCSogc3JjL290bGF5b3V0L290bGdkZWYuaDogSW5jbHVkZSBvdGxheW91dC5oLgoJQ29tbWVudCBvdXQgaW5jbHVzaW9uIG9mIG90bHRhYmxlLmguCgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5jIChvdGxfZ3Bvc19sb29rdXA0X3ZhbGlkYXRlKTogRml4IGNhbGwKCXRvIG90bF9iYXNlX2FycmF5X3ZhbGlkYXRlLgoJKG90bF9saWdhX21hcmsyX3ZhbGlkYXRlKTogRml4IGBmb3InIGxvb3AuCgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jIChvdGxfbGlnYXR1cmVfdmFsaWRhdGUpOiBDaGVjayBgZ2x5cGhfaWQnLAoJbm90IGNvbXBvbmVudHMgYXJyYXkuCgoJKiBzcmMvb3RsY29tbW4uYyAob3RsX2xvb2t1cF9nZXRfY291bnQsIG90bF9mZWF0dXJlX2dldF9jb3VudCk6CglDb21tZW50IG91dC4KCShvdGxfbG9va3VwX2xpc3RfZ2V0X2NvdW50LCBvdGxfZmVhdHVyZV9saXN0X2dldF9jb3VudCk6IEFjdGl2YXRlLgoJKG90bF9mZWF0dXJlX2xpc3RfdmFsaWRhdGUsIG90bF9nc3ViZ3Bvc19nZXRfbG9va3VwX2NvdW50KToKCXMvb3RsX2xvb2t1cF9nZXRfY291bnQvb3RsX2xvb2t1cF9saXN0X2dldF9jb3VudC8uCgkob3RsX3NjcmlwdF9saXN0X3ZhbGlkYXRlKToKCXMvb3RsX2ZlYXR1cmVfZ2V0X2NvdW50L290bF9mZWF0dXJlX2xpc3RfZ2V0X2NvdW50Ly4KCShvdGxfc2NyaXB0X3ZhbGlkYXRlKTogQ2FsbCBvdGxfbGFuZ192YWxpZGF0ZSBmb3IgZGVmYXVsdCBsYW5ndWFnZS4KCgkqIHNyYy9vdGxheW91dC9vdGxjb21tbi5oOiBVcGRhdGVkLgoKMjAwNC0wOC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290bGF5b3V0L290bGdwb3MuYyAob3RsX2dwb3NfbG9va3VwMV92YWxpZGF0ZSwKCW90bF9ncG9zX2xvb2t1cDJfdmFsaWRhdGUsIG90bF9ncG9zX2xvb2t1cDNfdmFsaWRhdGUsCglvdGxfZ3Bvc19sb29rdXA0X3ZhbGlkYXRlLCBvdGxfZ3Bvc19sb29rdXA1X3ZhbGlkYXRlLAoJb3RsX2dwb3NfbG9va3VwNl92YWxpZGF0ZSwgb3RsX2dwb3NfbG9va3VwOV92YWxpZGF0ZSwKCW90bF9ncG9zX3ZhbGlkYXRlKTogVXBkYXRlCglmdW5jdGlvbiBhcmd1bWVudHMuCgkob3RsX2dwb3NfbG9va3VwN192YWxpZGF0ZSwgb3RsX2dwb3NfbG9va3VwOF92YWxpZGF0ZSk6IFVwZGF0ZQoJZnVuY3Rpb24gYXJndW1lbnRzLgoJSGFuZGxlIE5VTEwgb2Zmc2V0cyBjb3JyZWN0bHkuCglDaGVjayBzZXF1ZW5jZSBhbmQgbG9va3VwIGluZGljZXMgZm9yIGZvcm1hdCAzLgoJKG90bF9wb3NfcnVsZV92YWxpZGF0ZSwgb3RsX2NoYWluX3Bvc19ydWxlX3ZhbGlkYXRlKTogQWRkIGFyZ3VtZW50Cgl0byBwYXNzIGxvb2t1cCBjb3VudC4KCUNoZWNrIHNlcXVlbmNlIGFuZCBnbHlwaCBpbmRpY2VzLgoJKG90bF9ncG9zX3N1YnRhYmxlX3ZhbGlkYXRlKTogVXBkYXRlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCVVwZGF0ZSBjYWxsZXJzLgoKCSogc3JjL290bGF5b3V0L290bGdwb3MuaDogVXBkYXRlZC4KCgkqIHNyYy9vdGxheW91dC9vdGxnc3ViLmMgKG90bF9nc3ViX2xvb2t1cDFfdmFsaWRhdGUsCglvdGxfZ3N1Yl9sb29rdXAzX3ZhbGlkYXRlLCBvdGxfZ3N1Yl9sb29rdXA4X3ZhbGlkYXRlKTogVXBkYXRlCglmdW5jdGlvbiBhcmd1bWVudHMuCglBZGQgZ2x5cGggaW5kZXggY2hlY2tzLgoJKG90bF9zZXF1ZW5jZV92YWxpZGF0ZSwgb3RsX2FsdGVybmF0ZV9zZXRfdmFsaWRhdGUsCglvdGxfbGlnYXR1cmVfdmFsaWRhdGUpOiBBZGQgYXJndW1lbnQgdG8gcGFzcyBnbHlwaCBjb3VudC4KCVVwZGF0ZSBjYWxsZXJzLgoJQWRkIGdseXBoIGluZGV4IGNoZWNrLgoJKG90bF9nc3ViX2xvb2t1cDJfdmFsaWRhdGUsIG90bF9nc3ViX2xvb2t1cDRfdmFsaWRhdGUpOiBVcGRhdGUKCWZ1bmN0aW9uIGFyZ3VtZW50cy4KCShvdGxfbGlnYXR1cmVfc2V0X3ZhbGlkYXRlKTogQWRkIGFyZ3VtZW50IHRvIHBhc3MgZ2x5cGggY291bnQuCglVcGRhdGUgY2FsbGVyLgoJKG90bF9zdWJfY2xhc3NfcnVsZV92YWxpZGF0ZSwKCW90bF9zdWJfY2xhc3NfcnVsZV9zZXRfdmFsaWRhdGUpOiBSZW1vdmVkLgoJKG90bF9zdWJfcnVsZV92YWxpZGF0ZSwgb3RsX2NoYWluX3N1Yl9ydWxlX3ZhbGlkYXRlKTogQWRkIGFyZ3VtZW50Cgl0byBwYXNzIGxvb2t1cCBjb3VudC4KCVVwZGF0ZSBjYWxsZXJzLgoJQWRkIGxvb2t1cCBpbmRleCBjaGVjay4KCShvdGxfc3ViX3J1bGVfc2V0X3ZhbGlkYXRlLCBvdGxfY2hhaW5fc3ViX3J1bGVfc2V0X3ZhbGlkYXRlKTogQWRkCglhcmd1bWVudCB0byBwYXNzIGxvb2t1cCBjb3VudC4KCVVwZGF0ZSBjYWxsZXJzLgoJKG90bF9nc3ViX2xvb2t1cDVfdmFsaWRhdGUpOiBVcGRhdGUgZnVuY3Rpb24gYXJndW1lbnRzLgoJSGFuZGxlIE5VTEwgb2Zmc2V0cyBjb3JyZWN0bHkuCglEb24ndCBjYWxsIG90bF9zdWJfY2xhc3NfcnVsZV9zZXRfdmFsaWRhdGUgYnV0CglvdGxfc3ViX3J1bGVfc2V0X3ZhbGlkYXRlLgoJQ2hlY2sgc2VxdWVuY2UgYW5kIGxvb2t1cCBpbmRpY2VzIGZvciBmb3JtYXQgMy4KCShvdGxfZ3N1Yl9sb29rdXA2X3ZhbGlkYXRlKTogVXBkYXRlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCUhhbmRsZSBOVUxMIG9mZnNldHMgY29ycmVjdGx5LgoJQ2hlY2sgc2VxdWVuY2UgYW5kIGxvb2t1cCBpbmRpY2VzIGZvciBmb3JtYXQgMy4KCShvdGxfZ3N1Yl9sb29rdXA3X3ZhbGlkYXRlLCBvdGxfZ3N1Yl92YWxpZGF0ZSk6IFVwZGF0ZSBmdW5jdGlvbgoJYXJndW1lbnRzLgoKCSogc3JjL290bGF5b3V0L290bGdzdWIuaDogVXBkYXRlZC4KCgkqIHNyYy9vdGxheW91dC9vdGxiYXNlLmMgKG90bF9iYXNlX3ZhbGlkYXRlKTogSGFuZGxlIE5VTEwgb2Zmc2V0cwoJY29ycmVjdGx5LgoKCSogc3JjL290bGF5b3V0L290bGNvbW1uLmMgKG90bF9jbGFzc19kZWZpbml0aW9uX3ZhbGlkYXRlKTogRml4Cgljb21waWxlciB3YXJuaW5nLgoJKG90bF9jb3ZlcmFnZV9nZXRfZmlyc3QsIG90bF9jb3ZlcmFnZV9nZXRfbGFzdCk6IE5ldyBmdW5jdGlvbnMuCgkob3RsX2xvb2t1cF92YWxpZGF0ZSk6IEFkZCBhcmd1bWVudHMgdG8gcGFzcyBsb29rdXAgYW5kIGdseXBoCgljb3VudHMuCglVcGRhdGUgY2FsbGVycy4KCShvdGxfbG9va3VwX2xpc3RfdmFsaWRhdGUpOiBBZGQgYXJndW1lbnQgdG8gcGFzcyBnbHlwaCBjb3VudC4KCVVwZGF0ZSBjYWxsZXJzLgoKCSogc3JjL290bGF5b3V0L290bGNvbW1uLmg6IFVwZGF0ZWQuCgoJKiBzcmMvb3RsYXlvdXQvb3RsanN0Zi5jIChvdGxfanN0Zl9leHRlbmRlcl92YWxpZGF0ZSwKCW90bF9qc3RmX21heF92YWxpZGF0ZSwgb3RsX2pzdGZfc2NyaXB0X3ZhbGlkYXRlLAoJb3RsX2pzdGZfcHJpb3JpdHlfdmFsaWRhdGUsIG90bF9qc3RmX2xhbmdfdmFsaWRhdGUpOiBBZGQgcGFyYW1ldGVyCgl0byB2YWxpZGF0ZSBnbHlwaCBpbmRpY2VzLgoJVXBkYXRlIGNhbGxlcnMuCgkob3RsX2pzdGZfdmFsaWRhdGUpOiBBZGQgcGFyYW1ldGVyIHdoaWNoIHNwZWNpZmllcyBudW1iZXIgb2YgZ2x5cGhzCglpbiBmb250LgoKCSogc3JjL290bGF5b3V0L290bGpzdGYuaDogVXBkYXRlZC4KCjIwMDQtMDgtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdGxheW91dC9vdGxncG9zLmMgKG90bF9saWdhX21hcmsyX3ZhbGlkYXRlKTogQWRkIHBhcmFtZXRlcgoJdG8gaGFuZGxlIHBvc3NpYmxlIE5VTEwgdmFsdWVzIHByb3Blcmx5LgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoKMjAwNC0wOC0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290bGF5b3V0L2dwb3MuYzogUmVuYW1lIGNvdW50aW5nIHZhcmlhYmxlcyB0byBiZSBtb3JlCgltZWFuaW5nZnVsLgoJQWRkIGNvcHlyaWdodC4KCShvdGxfbGlnYV9hdHRhY2hfdmFsaWRhdGUpOiBSZW5hbWVkIHRvLi4uCgkob3RsX2xpZ2FfbWFyazJfdmFsaWRhdGUpOiBUaGlzLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKG90bF9tYXJrMl9hcnJheV92YWxpZGF0ZSk6IFJlbW92ZWQuCgkob3RsX2dwb3NfbG9va3VwNl92YWxpZGF0ZSk6IENhbGwgb3RsX2xpZ2FfbWFyazJfdmFsaWRhdGUsIG5vdAoJb3RsX21hcmsyX2FycmF5X3ZhbGlkYXRlLgoJKG90bF9wb3NfY2xhc3Nfc2V0X3ZhbGlkYXRlLCBvdGxfcG9zX2NsYXNzX3J1bGVfdmFsaWRhdGUpOiBSZW1vdmVkLgoJKG90bF9ncG9zX2xvb2t1cDdfdmFsaWRhdGUpOiBDb21wbGV0ZSBjb2RlIGZvciBmb3JtYXQgMi4KCShvdGxfY2hhaW5fcG9zX2NsYXNzX3J1bGVfdmFsaWRhdGUsCglvdGxfY2hhaW1fcG9zX2NsYXNzX3NldF92YWxpZGF0ZSk6IFJlbW92ZWQuCgkob3RsX2dwb3NfbG9va3VwOF92YWxpZGF0ZSk6IERvbid0IGNhbGwKCW90bF9jaGFpbl9wb3NfY2xhc3Nfc2V0X3ZhbGlkYXRlIGJ1dAoJb3RsX2NoYWluX3Bvc19ydWxlX3NldF92YWxpZGF0ZS4KCVNpbXBsaWZ5IHNvbWUgY29kZS4KCgkqIHNyYy9vdGxheW91dC9vdGxncG9zLmg6IEFkZCBjb3B5cmlnaHQuCgoyMDA0LTA4LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvb3RsYXlvdXQvb3RsanN0Zi5jIChvdGxfanN0Zl9nc3ViX21vZHNfdmFsaWRhdGUpOiBSZW1vdmVkLgoJKG90bF9qc3RmX2dwb3NfbW9kc192YWxpZGF0ZSk6IFJlbmFtZWQgdG8uLi4KCShvdGxfanN0Zl9nc3ViZ3Bvc19tb2RzX3ZhbGlkYXRlKTogVGhpcy4KCVRlc3Qgd2hldGhlciBsb29rdXBfY291bnQgaXMgemVyby4KCShvdGxfanN0Zl9wcmlvcml0eV92YWxpZGF0ZSk6IFVzZSBvdGxfanN0Zl9nc3ViZ3Bvc19tb2RzX3ZhbGlkYXRlLgoJKG90bF9qc3RmX3ZhbGlkYXRlKTogSW5pdGlhbGl6ZSBnc3ViX2xvb2t1cF9jb3VudCBhbmQKCWdwb3NfbG9va3VwX2NvdW50IGlmIGdzdWIgb3IgZ3BvcyBpcyB6ZXJvLgoKCSogc3JjL290bGF5b3V0L290bGdzdWIuYzogUmVuYW1lIGNvdW50aW5nIHZhcmlhYmxlcyB0byBiZSBtb3JlCgltZWFuaW5nZnVsLgoJQWRkIGNvcHlyaWdodC4KCShvdGxfZ3N1Yl9sb29rdXAxX3ZhbGlkYXRlKTogU2ltcGxpZnkgY29kZS4KCShvdGxfZ3N1Yl9sb29rdXAyX3ZhbGlkYXRlLCBvdGxfZ3N1Yl9sb29rdXAzX3ZhbGlkYXRlLAoJb3RsX2dzdWJfbG9va3VwNF92YWxpZGF0ZSwgb3RsX2dzdWJfbG9va3VwN192YWxpZGF0ZSk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCShvdGxfZ3N1Yl9sb29rdXA1X3ZhbGlkYXRlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCUZpeCBjYWxsIHRvIG90bF9zdWJfcnVsZV9zZXRfdmFsaWRhdGUgYW5kCglvdGxfc3ViX2NsYXNzX3J1bGVfc2V0X3ZhbGlkYXRlLgoJKG90bF9jaGFpbl9zdWJfY2xhc3NfcnVsZV92YWxpZGF0ZSwKCW90bF9jaGFpbl9zdWJfY2xhc3Nfc2V0X3ZhbGlkYXRlKTogUmVtb3ZlZC4KCShvdGxfZ3N1Yl9sb29rdXA2X3ZhbGlkYXRlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCUZpeCBjYWxsIHRvIG90bF9jaGFpbl9zdWJfcnVsZV9zZXRfdmFsaWRhdGUuCgkob3RsX2dzdWJfbG9va3VwN192YWxpZGF0ZSk6IEhhbmRsZSBsb29rdXAgdHlwZSA4IGFsc28uCgkob3RsX2dzdWJfbG9va3VwOF92YWxpZGF0ZTogTmV3IGZ1bmN0aW9uLgoJKG90bF9nc3ViX2xvb2t1cDFfYXBwbHksIG90bF9nc3ViX2xvb2t1cDJfYXBwbHksCglvdGxfZ3N1Yl9sb29rdXAzX2FwcGx5KTogQ29tbWVudGVkIG91dC4KCShvdGxfZ3N1Yl92YWxpZGF0ZV9mdW5jcyk6IEFkZCBvdGxfZ3N1Yl9sb29rdXA3X3ZhbGlkYXRlIGFuZAoJb3RsX2dzdWJfbG9va3VwOF92YWxpZGF0ZS4KCShvdGxfZ3N1Yl92YWxpZGF0ZSk6IFVwZGF0ZWQuCgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oOiBBZGQgY29weXJpZ2h0LgoKCSogc3JjL290bGF5b3V0L290bGNvbW1uLmMsIHNyYy9vdGxheW91dC9vdGxjb21tbi5oCgkob3RsX2NvdmVyYWdlX2dldF9pbmRleCk6IENvbW1lbnQgb3V0LgoKMjAwNC0wOC0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290bGF5b3V0L290bGNvbW1uLmMgKG90bF9nc3ViZ3Bvc19nZXRfbG9va3VwX2NvdW50KTogTmV3CglmdW5jdGlvbi4KCSogc3JjL290bGF5b3V0L290bGNvbW1uLmg6IFVwZGF0ZWQuCgoJKiBzcmMvb3RsYXlvdXQvb3RsYmFzZS5jOiBSZW5hbWUgY291bnRpbmcgdmFyaWFibGVzIHRvIGJlIG1vcmUKCW1lYW5pbmdmdWwuCglBZGQgY29weXJpZ2h0IG1lc3NhZ2UuCgkqIHNyYy9vdGxheW91dC9vdGxiYXNlLmg6IEFkZCBjb3B5cmlnaHQgbWVzc2FnZS4KCgkqIHNyYy9vdGxheW91dC9vdGxnZGVmLmM6IFJlbmFtZSBjb3VudGluZyB2YXJpYWJsZXMgdG8gYmUgbW9yZQoJbWVhbmluZ2Z1bC4KCUFkZCBjb3B5cmlnaHQgbWVzc2FnZS4KCVVzZSBPVExfQ0hFQ0sgZXZlcnl3aGVyZS4KCShvdGxfY2FyZXRfdmFsdWVfdmFsaWRhdGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKG90bF9nZGVmX3ZhbGlkYXRlKTogQWxsIHRhYmxlcyBhcmUgb3B0aW9uYWwuCgkqIHNyYy9vdGxheW91dC9vdGxnZGVmLmg6IEFkZCBjb3B5cmlnaHQgbWVzc2FnZS4KCgkqIHNyYy9vdGxheW91dC9vdGxqc3RmLmM6IFJlbmFtZSBjb3VudGluZyB2YXJpYWJsZXMgdG8gYmUgbW9yZQoJbWVhbmluZ2Z1bC4KCUFkZCBjb3B5cmlnaHQgbWVzc2FnZS4KCShvdGxfanN0Zl9nc3ViX21vZHNfdmFsaWRhdGUsIG90bF9qc3RmX2dwb3NfbW9kc192YWxpZGF0ZSk6IEFkZAoJcGFyYW1ldGVyIHRvIHBhc3MgbG9va3VwIGNvdW50LgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJQ2hlY2sgbG9va3VwIGFycmF5LgoJKG90bF9qc3RmX21heF92YWxpZGF0ZSk6CglzL290bF9ncG9zX3N1YnRhYmxlX2NoZWNrL290bF9ncG9zX3N1YnRhYmxlX3ZhbGlkYXRlLy4KCShvdGxfanN0Zl9wcmlvcml0eV92YWxpZGF0ZSwgb3RsX2pzdGZfbGFuZ192YWxpZGF0ZSwKCW90bF9qc3RmX3NjcmlwdF92YWxpZGF0ZSk6IEFkZCB0d28gcGFyYW1ldGVycyB0byBwYXNzIGxvb2t1cCBjb3VudHMuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkob3RsX2pzdGZfdmFsaWRhdGUpOiBBZGQgdHdvIHBhcmFtZXRlcnMgdG8gcGFzcyBHUE9TIGFuZCBHU1VCCgl0YWJsZSBvZmZzZXRzOyB1c2Ugb3RsX2dzdWJncG9zX2dldF9sb29rdXBfY291bnQgdG8gY29udmVydCBleHRyYWN0Cglsb29rdXAgY291bnRzLgoJRml4IHR5cG8uCgkqIHNyYy9vdGxheW91dC9vdGxqc3RmLmg6IFVwZGF0ZWQuCglBZGQgY29weXJpZ2h0IG1lc3NhZ2UuCgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5jIChvdGxfZ3Bvc19zdWJ0YWJsZV92YWxpZGF0ZSk6IE5ldyBmdW5jdGlvbi4KCShvdGxfZ3Bvc192YWxpZGF0ZSk6IFVzZSBpdC4KCSogc3JjL290bGF5b3V0L290bGdwb3MuaDogVXBkYXRlZC4KCjIwMDQtMDgtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdGxheW91dC9vdGNvbW1uLmM6IFVzZSBPVExfQ0hFQ0sgZXZlcnl3aGVyZS4KCShvdGxfY292ZXJhZ2VfdmFsaWRhdGUpOiBJbml0aWFsaXplIGBwJywKCXMvY291bnQvbnVtX2dseXBocy8uCglzL3N0YXJ0X2NvdmVyL3N0YXJ0X2NvdmVyYWdlLy4KCShvdGxfY292ZXJhZ2VfZ2V0X2luZGV4KTogUmV0dXJuIE9UTF9Mb25nLCBub3QgT1RMX0ludC4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKG90bF9jbGFzc19kZWZpbml0aW9uX3ZhbGlkYXRlKTogcy9jb3VudC9udW1fZ2x5cGhzLy4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKG90bF9jbGFzc19kZWZpbml0aW9uX2dldF92YWx1ZSwgb3RsX2RldmljZV90YWJsZV9nZXRfc3RhcnQsCglvdGxfZGV2aWNlX3RhYmxlX2dldF9lbmQsIG90bF9kZXZpY2VfdGFibGVfZ2V0X2RlbHRhLAoJb3RsX2xvb2t1cF9nZXRfdGFibGUsIG90bF9sb29rdXBfbGlzdF9nZXRfY291bnQsCglvdGxfbG9va3VwX2xpc3RfZ2V0X2xvb2t1cCwgb3RsX2xvb2t1cF9saXN0X2dldF90YWJsZSwKCW90bF9mZWF0dXJlX2dldF9sb29rdXBzLCBvdGxfZmVhdHVyZV9saXN0X2dldF9jb3VudCwKCW90bF9mZWF0dXJlX2xpc3RfZ2V0X2ZlYXR1cmUsIG90bF9sYW5nX2dldF9jb3VudCwKCW90bF9sYW5nX2dldF9yZXFfZmVhdHVyZSwgb3RsX2xhbmdfZ2V0X2ZlYXR1cmVzKTogQ29tbWVudGVkIG91dAoJdGVtcG9yYXJpbHkgdW50aWwgd2UgcmVhbGx5IG5lZWQgaXQuCgkob3RsX2xvb2t1cF92YWxpZGF0ZSk6IFJlbW92ZWQuCgkob3RsX2xvb2t1cF90YWJsZV92YWxpZGF0ZSk6IFJlbmFtZWQgdG8gLi4uCgkob3RsX2xvb2t1cF92YWxpZGF0ZSk6IFRoaXMuICBVcGRhdGUgY2FsbGVycy4KCShvdGxfbG9va3VwX2xpc3RfdmFsaWRhdGUpOiBSZW1vdmUgYWxyZWFkeSBjb21tZW50ZWQgb3V0IGRlZmluaXRpb24KCWFuZCBtb3ZlIHRoZSBvdGhlciBkZWZpbml0aW9uIHVwLgoJKG90bF9mZWF0dXJlX3ZhbGlkYXRlKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIG51bWJlciBvZiBsb29rdXBzLgoJVXBkYXRlIGNhbGxlcnMuCglDaGVjayBsb29rdXAgaW5kaWNlcy4KCShvdGxfZmVhdHVyZV9saXN0X3ZhbGlkYXRlKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIGxvb2t1cCB0YWJsZS4KCVVwZGF0ZSBjYWxsZXJzLgoJKG90bF9sYW5nX3ZhbGlkYXRlKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIG51bWJlciBvZiBmZWF0dXJlcy4KCVVwZGF0ZSBjYWxsZXJzLgoJSGFuZGxlIHJlcV9mZWF0dXJlIGFuZCBjaGVjayBmZWF0dXJlIGluZGljZXMuCgkob3RsX3NjcmlwdF92YWxpZGF0ZSk6IEFkZCBwYXJhbWV0ZXIgdG8gcGFzcyBudW1iZXIgb2YgZmVhdHVyZXMuCglVcGRhdGUgY2FsbGVycy4KCShvdGxfc2NyaXB0X2xpc3RfdmFsaWRhdGUpOiBBZGQgcGFyYW1ldGVyIHRvIHBhc3MgZmVhdHVyZSB0YWJsZS4KCVVwZGF0ZSBjYWxsZXJzLgoKCSogc3JjL290bGF5b3V0L290Y29tbW4uaDogcy9MT0NBTERFRi9MT0NBTC8uCglDb21tZW50IG91dCB0aGUgc2FtZSBmdW5jdGlvbnMgYXMgaW4gb3Rjb21tbi5jLgoJKG90bF9zY3JpcHRfbGlzdF9nZXRfc2NyaXB0KTogUmVtb3ZlZC4KCgkqIHNyYy9vdGxheW91dC9vdGxnc3ViLmMgKG90bF9nc3ViX2xvb2t1cDFfYXBwbHkpOiBDaGFuZ2UgYGluZGV4JyB0bwoJdHlwZSBPVExfTG9uZy4KCShvdGxfZ3N1Yl9sb29rdXAyX2FwcGx5LCBvdGxfZ3N1Yl9sb29rdXAzX2FwcGx5KTogQ2hhbmdlIGBpbmRleCcgdG8KCXR5cGUgT1RMX0xvbmcuCglGaXggdGVzdC4KCShvdGxfZ3N1Yl92YWxpZGF0ZSk6IEZpeCBvcmRlciBvZiB2YWxpZGF0aW9uLgoKCSogc3JjL290bGF5b3V0L290bGdwb3MuYyAob3RsX2dwb3NfdmFsaWRhdGUpOiBGaXggb3JkZXIgb2YKCXZhbGlkYXRpb24uCgoyMDA0LTA4LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSBvdGxheW91dCBtb2R1bGUgY29tcGlsZSAod2l0aG91dCBhY3R1YWxseSB3b3JraW5nKS4KCgkqIHNyYy9vdGxheW91dC8qOiBzL09UTF9WYWxpZC9PVExfVmFsaWRhdG9yLy4KCXMvTlVMTC8wLy4KCgkqIHNyYy9vdGxheW91dC9vdGxheW91dC5oOiBGaXggdmFyaW91cyB0eXBvcy4KCShPVExfQm9vbCk6IE5ldyB0eXBlZGVmLgoJKE9UTF9JbnQsIE9UTF9Mb25nLCBPVExfSW50MTYsIE9UTF9JbnQzMik6IFVzZSBgc2lnbmVkJyBrZXl3b3JkLgoJKE9UTF9FcnJfSW52YWxpZEFyZ3VtZW50KTogUmVtb3ZlZC4KCShPVExfRXJyX0ludmFsaWREYXRhLCBPVExfRXJyX0ludmFsaWRTaXplKTogTmV3IGVudW0gdmFsdWVzLgoJKE9UTF9NQUtFX1RBRyk6IEFkZCBtaXNzaW5nIHBhcmVudGhlc2lzLgoJKE9UTF9JTlZBTElEX0RBVEEpOiBVc2UgT1RMX0Vycl9JbnZhbGlkRGF0YS4KCShPVExfSU5WQUxJRF9UT09fU0hPUlQpOiBVc2UgT1RMX0Vycl9JbnZhbGlkU2l6ZS4KCShPVExfSU5WQUxJRF9GT1JNQVQsIE9UTF9JTlZBTElEX09GRlNFVCk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5jOiBzL0ZUXy9PVExfLy4KCXMvT1RMX1Nob3J0L09UTF9JbnQxNi8uCgkob3RsX2dwb3NfcGFpcnNldF92YWxpZGF0ZSk6IEFkZCByZXR1cm4gdHlwZS4KCShvdGxfYmFzZV9hcnJheV92YWxpZGF0ZSk6IEZpeCBjYWxsIHRvIG90bF9hbmNob3JfdmFsaWRhdGUuCgkob3RsX2xpZ2FfYXJyYXlfdmFsaWRhdGUpOiBGaXggY2FsbCB0byBvdGxfbGlnYV9hdHRhY2hfdmFsaWRhdGUuCgkob3RsX2dwb3NfbG9va3VwNV92YWxpZGF0ZSk6IEZpeCB0eXBvcy4KCShvdGxfZ3Bvc19sb29rdXA2X3ZhbGlkYXRlKTogRml4IGNhbGwgdG8gb3RsX21hcmsyX2FycmF5X3ZhbGlkYXRlLgoJKG90bF9ncG9zX2xvb2t1cDdfdmFsaWRhdGUpOiBDb21tZW50IG91dCB1bmZpbmlzaGVkIGNvZGUuCglGaXggdHlwb3MuCgoJKiBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jOiBBZGQgZm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IKCW90bF9nc3ViX3ZhbGlkYXRlX2Z1bmNzLgoJKG90bF9nc3ViX2xvb2t1cDFfYXBwbHksIG90bF9nc3ViX2xvb2t1cDJfYXBwbHksCglvdGxfZ3N1Yl9sb29rdXAzX2FwcGx5KTogRml4IGNhbGwgdG8gb3RsX3BhcnNlcl9jaGVja19wcm9wZXJ0eS4KCXMvb3RsX2NvdmVyYWdlX2xvb2t1cC9vdGxfY292ZXJhZ2VfZ2V0X2luZGV4Ly4KCShvdGxfbGlnYXR1cmVfdmFsaWRhdGUpOiBBZGQgbWlzc2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KCShvdGxfc3ViX3J1bGVfdmFsaWRhdGUpOiBGaXggdHlwby4KCShvdGxfc3ViX2NsYXNzX3J1bGVfdmFsaWRhdGUpOiBBZGQgbWlzc2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KCUZpeCB0eXBvLgoJKG90bF9nc3ViX2xvb2t1cDVfdmFsaWRhdGUpOiBGaXggdHlwby4KCShvdGxfZ3N1Yl9sb29rdXA2X3ZhbGlkYXRlKTogRml4IGNhbGwgdG8KCW90bF9jaGFpbl9zdWJfY2xhc3Nfc2V0X3ZhbGlkYXRlLgoJKG90bF9nc3ViX3ZhbGlkYXRlX2Z1bmNzKTogRG9uJ3QgdXNlIGBjb25zdCcuCgoJKiBzcmMvb3RsYXlvdXQvb3RsY29tbW4uYyAob3RsX2NsYXNzX2RlZmluaXRpb25fZ2V0X3ZhbHVlLAoJb3RsX2RldmljZV90YWJsZV92YWxpZGF0ZSwgb3RsX2RldmljZV90YWJsZV9nZXRfZGVsdGEsCglvdGxfbG9va3VwX3ZhbGlkYXRlLCBvdGxfc2NyaXB0X3ZhbGlkYXRlKTogQWRkIG1pc3NpbmcKCXZhcmlhYmxlIGRlY2xhcmF0aW9ucy4KCShvdGxfbG9va3VwX2xpc3RfdmFsaWRhdGUpOiBDb21tZW50IG91dCBmaXJzdCBkZWZpbml0aW9uLgoJKG90bF9sb29rdXBfbGlzdF9mb3JlYWNoLCBvdGxfZmVhdHVyZV9saXN0X2ZvcmVhY2gpOiBDb21tZW50IG91dC4KCShvdGxfZmVhdHVyZV9saXN0X3ZhbGlkYXRlKToKCXMvb3RsX2ZlYXR1cmVfdGFibGVfdmFsaWRhdGUvb3RsX2ZlYXR1cmVfdmFsaWRhdGUvLgoJKG90bF9zY3JpcHRfbGlzdF92YWxpZGF0ZSk6CglzL290bF9zY3JpcHRfdGFibGVfdmFsaWRhdGUvb3RsX3NjcmlwdF92YWxpZGF0ZS8uCgoJKiBzcmMvb3RsYXlvdXQvb3RsY29tbW4uaDogQ29tbWVudCBvdXQgZmlyc3QgZGVjbGFyYXRpb24uCgkob3RsX2xvb2t1cF9saXN0X2ZvcmVhY2gsIG90bF9mZWF0dXJlX2xpc3RfZm9yZWFjaCk6IENvbW1lbnQgb3V0LgoKCSogc3JjL290bGF5b3V0L290bGJhc2UuYyAob3RsX2Jhc2VfY29vcmRfdmFsaWRhdGUpOiBGaXggY2FsbCB0bwoJb3RsX2RldmljZV90YWJsZV92YWxpZGF0ZS4KCShvdGxfYmFzZV9zY3NyaXB0X3ZhbGlkYXRlKTogQWRkIG1pc3NpbmcgdmFyaWFibGUgZGVjbGFyYXRpb25zLgoJKG90bF9iYXNlX3NjcmlwdF9saXN0X3ZhbGlkYXRlKTogRml4IGNhbGwgdG8KCW90bF9iYXNlX3NjcmlwdF92YWxpZGF0ZS4KCShvdGxfYXhpc190YWJsZV92YWxpZGF0ZSk6IEZpeCBjYWxscyB0byBvdGxfYmFzZV90YWdfbGlzdF92YWxpZGF0ZQoJYW5kIG90bF9iYXNlX3NjcmlwdF9saXN0X3ZhbGlkYXRlLgoJKG90bF9iYXNlX3ZhbGlkYXRlKTogRml4IGNhbGxzIHRvIG90bF9heGlzX3RhYmxlX3ZhbGlkYXRlLgoKCSogc3JjL290bGF5b3V0L290bGdkZWYuYyAob3RsX2F0dGFjaF9saXN0X3ZhbGlkYXRlKTogRml4IGNhbGwgdG8KCW90bF9hdHRhY2hfcG9pbnRfdmFsaWRhdGUuCgkob3RsX2NhcmV0X3ZhbHVlX3ZhbGlkYXRlKTogQWRkIG1pc3NpbmcgdmFyaWFibGUgZGVjbGFyYXRpb24uCglGaXggY2FsbCB0byBvdGxfZGV2aWNlX3RhYmxlX3ZhbGlkYXRlLgoJKG90bF9saWdhdHVyZV9nbHlwaF92YWxpZGF0ZSk6IEZpeCBjYWxsIHRvIG90bF9jYXJldF92YWx1ZV92YWxpZGF0ZS4KCShvdGxfbGlnYXR1cmVfY2FyZXRfbGlzdF92YWxpZGF0ZSk6IEZpeCBjYWxsIHRvCglvdGxfbGlnYXR1cmVfZ2x5cGhfdmFsaWRhdGUuCgkob3RsX2dkZWZfdmFsaWRhdGUpOiBGaXggY2FsbHMgdG8gb3RsX2NsYXNzX2RlZmluaXRpb25fdmFsaWRhdGUsCglvdGxfYXR0YWNoX2xpc3RfdmFsaWRhdGUsIG90bF9saWdhdHVyZV9jYXJldF9saXN0X3ZhbGlkYXRlLCBhbmQKCW90bF9jbGFzc19kZWZpbml0aW9uX3ZhbGlkYXRlLgoKCSogc3JjL290bGF5b3V0L290bHRhYmxlLmggKG90bF90YWJsZV92YWxpZGF0ZSwgb3RsX3RhYmxlX2luaXQsCglvdGxfdGFibGVfc2V0X3NjcmlwdCk6IENvbW1lbnQgb3V0LgoKCSogc3JjL290bGF5b3V0L290bHBhcnNlLmggKE9UTF9QYXJzZXJSZWMpOgoJcy9PVExfQWx0ZXJuYXRlL09UTF9HU1VCX0FsdGVybmF0ZS8uCgkoT1RMX1BhcnNlRXJyb3IpOiBBZGQgT1RMX0Vycl9QYXJzZXJfTWVtb3J5IGFuZAoJT1RMX0Vycl9QYXJzZXJfSW50ZXJuYWwuCgkob3RsX3BhcnNlcl9lcnJvcik6IEZpeCB0eXBvLgoJKG90bF9wYXJzZXJfY2hlY2tfcHJvcGVydHkpOiBSZW1vdmUgdGhpcmQgYXJndW1lbnQuCgoJKiBzcmMvb3RsYXlvdXQvb3RscGFyc2UuYyAob3RsX3N0cmluZ19lbnN1cmUpOgoJcy9PVExfUGFyc2VfRXJyX01lbW9yeS9PVExfRXJyX1BhcnNlcl9NZW1vcnkvLgoJKE9UTF9TVFJJTkdfRU5TVVJFLCBvdGxfcGFyc2VyX2Vycm9yLCBvdGxfcGFyc2VyX2dldF9pbmRleCwKCW90bF9wYXJzZXJfcmVwbGFjZV8xLCBvdGxfcGFyc2VyX3JlcGxhY2Vfbik6IEZpeCB0eXBvcy4KCShPVExfUEFSU0VSX1VOQ09WRVJFRCk6IFJlbW92ZWQuCgkob3RsX3BhcnNlcl9jaGVja19wcm9wZXJ0eSk6IFJlbW92ZSB0aGlyZCBhcmd1bWVudC4KCgkqIHNyYy9vdGxheW91dC9vdGxqc3RmLmMgKG90bF9qc3RmX3ByaW9yaXR5X3ZhbGlkYXRlKTogQWRkIG1pc3NpbmcKCXZhcmlhYmxlIGRlY2xhcmF0aW9uLgoKCSogc3JjL290bGF5b3V0L290bHV0aWxzLmggKE9UTF9NRU1fUkVBTExPQyk6IEZpeCB0eXBvLgoKMjAwNC0wOC0xMSAgRGFubnkgIDxkYW5ueWJveW5vd0B5YWhvby5jb20+CgoJKiBzcmMvYmFzZS9mdHN0cmVhbS5jIChGVF9TdHJlYW1fQ2xvc2UpOiBEb24ndCByZXNldCBzdHJlYW0tPmNsb3NlCgl0byBOVUxMLiAgVGhpcyBhbGxvd3MgY3VzdG9tIGNsb3NlIGZ1bmN0aW9ucyB0byBkZWxldGUgdGhlIEZUX1NUUkVBTQoJb2JqZWN0LgoKMjAwNC0wOC0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZCBBUEkgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IFNGTlQgdGFibGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaAoJKEZUX1NGTlRfVGFibGVfSW5mb19GdW5jKTogTmV3IHR5cGVkZWYuCgkoU0ZOVF9UYWJsZSk6IEFkZCBpdC4KCgkqIHNyYy9iYXNlL2Z0b2JqcyAoRlRfU2ZudF9UYWJsZV9JbmZvKTogTmV3IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF90YWJsZV9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKHNmbnRfc2VydmljZV9zZm50X3RhYmxlKTogQWRkIGl0LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gMTAuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5Ojg6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLnZjcHJvajogcy8yMTkvMjExMC8sIHMvMi4xLjkvMi4xLjEwLy4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKSwgUkVBRE1FLCBKYW1maWxlIChSZWZEb2MpOgoJcy8yLjEuOS8yLjEuMTAvLgoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwNC0wOC0xMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iYXNlL2Z0cmZvcmsuYyAoRlRfUmFjY2Vzc19HdWVzcykKCVshRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9GT1JLXTogUmVtb3ZlIGNvbXBpbGVyCgl3YXJuaW5ncy4KCjIwMDQtMDgtMDYgIEFkYW0gUGlvdHJvd3NraSAgPHN0X2ludGVsQHBvY3p0YS5vbmV0LnBsPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9zb3J0X2tlcm5pbmdfcGFpcnMpOiBTaW5nbGUtYnl0ZQoJYWRqdXN0bWVudHMgYXJlIHVuc2lnbmVkLCBub3Qgc2lnbmVkLgoKMjAwNC0wOC0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCWBBY3RpdmF0ZScgZ3JheS1zY2FsZSBzcGVjaWZpbmcgaGludGluZyB3aXRoaW4gdGhlIFRydWVUeXBlCglieXRlY29kZSBpbnRlcnByZXRlci4gIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgd2hpY2gKCXNob3VsZCBwcm9iYWJseSBiZSBtYWRlIG9wdGlvbmFsLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgsCglsb2FkX3RydWV0eXBlX2dseXBoKTogTW92ZSB0aGUgY29kZSB0byBzZXQgdGhlIHBlZGFudGljX2hpbnRpbmcgZmxhZwoJdG8uLi4KCShUVF9Mb2FkX0dseXBoKTogSGVyZS4KCVNldCBgZ3JheXNjYWxlJyBmbGFnIGV4Y2VwdCBmb3IgYEZUX0xPQURfVEFSR0VUX01PTk8nLgoKCSogc3JjL3RydWV0eWVwL3R0aW50ZXJwLmMgKEluc19HRVRJTkZPKTogUmV0dXJuIE1TIHJhc3Rlcml6ZXIKCXZlcnNpb24gMS43LgoJUmV0dXJuIHJvdGF0aW9uIGFuZCBzdHJldGNoaW5nIGluZm8gb25seSBpZiBnbHlwaCBpcyByb3RhdGVkIG9yCglzdHJldGNoZWQsIHJlc3BlY3RpdmVseS4KCUhhbmRsZSBncmF5c2NhbGUgaW5mby4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5oIChUVF9FeGVjQ29udGV4dFJlYyk6IEFkZCBgZ3JheXNjYWxlJwoJbWVtYmVyLgoKMjAwNC0wOC0wMiAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfQXR0YWNoX0ZpbGUpOiBJbml0aWFsaXplIGBvcGVuLnN0cmVhbScuCgoyMDA0LTA4LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA4LTAxICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglGcmVlVHlwZSBub3cgY2FuIHJlYWQga2VybmluZyB2YWx1ZXMgZnJvbSBQRk0gZmlsZXMuCgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfRG9uZV9BRk0pOiBSZW5hbWVkIHRvLi4uCgkoVDFfRG9uZV9NZXRyaWNzKTogVGhpcy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShUMV9SZWFkX0FGTSk6IE1ha2UgaXQgc3RhdGljLgoJRG9uJ3QgZW50ZXIgYW5kIGxlYXZlIGEgZnJhbWUuCgkoTElUVExFX0VORElBTl9VU0hPUlQsIExJVFRMRV9FTkRJQU5fVUlOVCk6IE5ldyBtYWNyb3MuCgkoVDFfUmVhZF9QRk0pOiBOZXcgZnVuY3Rpb24uCgkoVDFfUmVhZF9NZXRyaWNzKTogTmV3IGhpZ2hlci1sZXZlbCBmdW5jdGlvbiB0byBiZSB1c2VkIGluc3RlYWQgb2YKCVQxH1JlYWRfQUZNLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoKMjAwNC0wNy0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkIChwY2ZfbG9hZF9mb250KSwgc3JjL2JkZi9iZGZkcml2ci5jCgkoQkRGX0ZhY2VfSW5pdCksIHNyYy90cnVldHlwZS90dGd4dmFyIChUVF9HZXRfTU1fVmFyLAoJdHRfZmFjZV92YXJ5X2N2dCk6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDQtMDctMjYgIFP4cmVuIFNhbmRtYW5uICA8c2FuZG1hbm5AZGFpbWkuYXUuZGs+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2ludGVycHJldF9zdHlsZSk6IEFsd2F5cyBhbGxvY2F0ZSBtZW1vcnkgZm9yCglmYWNlLT5zdHlsZV9uYW1lLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmMgKFBDRl9GYWNlX0RvbmUpOiBGcmVlIGBzdHlsZV9uYW1lJy4KCjIwMDQtMDctMjYgIERhcnJlbiBKIExvbmdob3JuICA8ZGFycmVuLmxvbmdob3JuQHJlZGNvbS5jby51az4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggKEZUX1NJWkVPRl9MT05HKTogUmVjb2duaXplCglmaXZlLWJ5dGUgYGxvbmcnICh3aGljaCBpcyBhdm9pZGVkIHRoZW4pLgoKMjAwNC0wNy0yNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wY2YvcGNmZHJpdnIuYyAoUENGX1NldF9QaXhlbF9TaXplKTogQ29tcGFyZSBoZWlnaHRzLCBub3QKCXBwZW0gdmFsdWVzLgoJKFBDRl9TZXRfUG9pbnRfU2l6ZSk6IERvbid0IGNhbGwgUENGX1NldF9QaXhlbF9TaXplIGJ1dCBwcm92aWRlIG93bgoJY29kZSB0byBjb21wYXJlIHBwZW0gdmFsdWVzLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9TZXRfUGl4ZWxfU2l6ZSk6IENvbXBhcmUgaGVpZ2h0cywgbm90CglwcGVtIHZhbHVlcy4KCShCREZfU2V0X1BvaW50X1NpemUpOiBEb24ndCBjYWxsIEJERl9TZXRfUGl4ZWxfU2l6ZSBidXQgcHJvdmlkZSBvd24KCWNvZGUgdG8gY29tcGFyZSBwcGVtIHZhbHVlcy4KCjIwMDQtMDctMjUgIEtvcm5mZWxkIEVsaXlhaHUgUGV0ZXIgIDxwZXRlckBlLWthZG1vbi5uZXQ+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBIYW5kbGUKCVRUX05BTUVfSURfUFJFRkVSUkVEX0ZBTUlMWSBhbmQgVFRfTkFNRV9JRF9QUkVGRVJSRURfU1VCRkFNSUxZLgoKMjAwNC0wNy0yNCAgRGVyZWsgQi4gTm9vbmJ1cmcgIDxkZXJla25AZm9vbGFicy5jb20+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IEFsd2F5cyBjcmVhdGUgaW52ZXJzZSBtYXBwaW5nLgoJRXZlbiBpZiB0aGUgY2hhcnN0cmluZyBjb3VudCBpcyB0aGUgc2FtZSBhcyB0aGUgQ0lEIGNvdW50LCBpdCBpcwoJc3RpbGwgcG9zc2libGUgdGhhdCB0aGUgZm9udCB1c2VzIGEgZGlmZmVyZW50IENJRCAtPiBHSUQgbWFwcGluZy4KCjIwMDQtMDctMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfZmFjZV9pbml0KTogQWNjZXB0IDB4MDAwMjAwMDAgZm9ybWF0IHRhZwoJZm91bmQgaW4gc29tZSBBcnBoaWMgZm9udHMgbWFkZSBmb3IgQ2hpbmVzZSB2ZXJzaW9uIG9mIFdpbmRvd3MgMy4xLgoKMjAwNC0wNy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIGEgZGFuZ2xpbmcgcG9pbnRlciBidWcgaW4gdGhlIGNhY2hlIGNvZGUgdGhhdCBoYXBwZW5lZCBpbiB2ZXJ5CglyYXJlIGNhc2VzLCBpLmUuLCB3aGVuIGEgbmV3IGZhbWlseSBvYmplY3Qgd2FzIGRlc3Ryb3llZCBieSBhbgoJb3V0LW9mLW1lbW9yeSBjb25kaXRpb24gZHVyaW5nIGEgZ2x5cGggbm9kZSBpbml0aWFsaXphdGlvbi4gIFRoZQoJZnVuY3Rpb24gRlRDX0NhY2hlX0xvb2t1cCB3b3VsZCBmbHVzaCB0aGUgY2FjaGUgYW5kIHJlc3RhcnQgdGhlCglsb29rdXAgd2l0aCBhIGJhZCBwb2ludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oIChGVENfRkFNSUxZX1RSRUUpOiBOZXcgbWFjcm8uCgkoRlRDX0dDQUNIRV9MT09LVVBfQ01QKTogVXNlIGl0LgoJSGFuZGxlIHJlZmVyZW5jZSBjb3VudCBpbiBgbnVtX25vZGVzJyBjb3JyZWN0bHkuCgoJKiBzcmMvY2FjaGUvZnRjZ2x5cGguYyAoRlRDX0dOb2RlX1Vuc2VsZWN0RmFtaWx5KTogVXNlCglGVENfRkFNSUxZX0ZSRUUuCgkoRlRDX0dDYWNoZV9Mb29rdXApOiBIYW5kbGUgcmVmZXJlbmNlIGNvdW50IGluIGBudW1fbm9kZXMnIGNvcnJlY3RseS4KCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9GbHVzaE4pOiBGaXhlZCBhIGNhY2hlIGZsdXNoaW5nCglidWcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoTm9ybWFsaXplKTogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQKCWxvbmcgYW5kIHVubmVjZXNzYXJ5IGRlbGF5cyB3aGlsZSBub3JtYWxpemluZyBodWdlIHZlY3RvcnMuCgoyMDA0LTA3LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jIChGVF9TdHJva2VyX1BhcnNlT3V0bGluZSk6IEZpeCBjb21waWxlcgoJd2FybmluZy4KCjIwMDQtMDctMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmMgKEZUX1N0cm9rZXJfUGFyc2VPdXRsaW5lKTogU2luZ2xlIHBvaW50cwoJYXJlIG5vdCBzdHJva2VkLCBwcmV2ZW50aW5nIGEgYnVnIHdpdGggcGFsYS50dGYgYW5kIG90aGVyCglmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaDogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBjb21tZW50cy4KCjIwMDQtMDctMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmMgKGZ0X3N0cm9rZV9ib3JkZXJfcmV2ZXJzZSk6IFJlbW92ZWQuICBVbnVzZWQuCgoyMDA0LTA3LTEyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jIChmdF9zdHJva2VfYm9yZGVyX2Nsb3NlKTogQWRkIHNlY29uZCBwYXJhbWV0ZXIKCXRvIGluZGljYXRlIHJldmVyc2lvbiBvZiBwb2ludHMuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoZnRfc3Ryb2tlX2JvcmRlcl9yZXZlcnNlKTogRml4IGluaXRpYWxpemF0aW9uIG9mIGBwb2ludDEnIGFuZAoJYHRhZzEnLgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zbm9kZV9sb2FkKTogRml4aW5nIGFkdmFuY2UgY29tcHV0YXRpb24KCWZvciB0cmFuc2Zvcm1lZCBnbHlwaHMuCgoyMDA0LTA3LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4IGJ1Z3MgdGhhdCBwcmV2ZW50ZWQgdGhlIHN0cm9rZXIgdG8gY29ycmVjdGx5IGdlbmVyYXRlIHN0cm9rZWQKCXBhdGhzIGZyb20gY2xvc2VkIHBhdGhzLCBpLmUuLCBuZWFybHkgYWxsIGdseXBocyBpbiB2ZWN0b3JpYWwgZm9udHMuCgoJVGhlIGNvZGUgaXMgc3RpbGwgX3ZlcnlfIGJ1Z2d5IHRob3VnaDsgdHJlYXQgd2l0aCBzcGVjaWFsIGNhcmUuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jIChGVF9TVFJPS0VfVEFHX0JFR0lOX0VORCk6IE5ldyBtYWNyby4KCShmdF9zdHJva2VfYm9yZGVyX3JldmVyc2UpOiBOZXcgZnVuY3Rpb24uCgkoZnRfc3Ryb2tlcl9pbnNpZGUpOiBSZW1vdmUgbG9jYWwgdmFyaWFibGUgYHNpZ21hJzsgdXNlIGRpZmZlcmVudAoJdGhyZXNob2xkLgoJKGZ0X3N0cm9rZXJfYWRkX3JldmVyc2VfbGVmdCk6IFN3aXRjaCBiZWdpbi9lbmQgdGFncyBpZiBuZWNlc3NhcnkuCgkoRlRfU3Ryb2tlcl9FbmRTdWJQYXRoKTogQ2FsbCBmdF9zdHJva2VyX2luc2lkZSBhbmQKCWZ0X3N0cm9rZV9ib3JkZXJfcmV2ZXJzZS4KCjIwMDQtMDYtMjYgIFBldGVyIEtvdmFyICA8cGV0ZXIua292YXJAcjMucm9idXJuZXQuc2s+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IHR5cG8uCgoyMDA0LTA2LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoYWZtX2F0b2luZGV4KTogRml4IGJvdW5kYXJ5IHRlc3QuICBSZXBvcnRlZAoJYnkgRGlyY2sgQmxhc2tleS4KCjIwMDQtMDYtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS45IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dHhndmFyLmM6IFJlbW92aW5nCgljb21waWxlciB3YXJuaW5ncy4KCjIwMDQtMDYtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCBbRlRfREVCVUdfTUVNT1JZXTogRGVjbGFyZQoJRlRfUUFsbG9jX0RlYnVnIGFuZCBGVF9RUmVhbGxvY19EZWJ1Zy4KCgkqIHNyYy9iYXNlL2Z0dXRpbC5jIChGVF9RQWxsb2MpOiBGaXggZXJyb3IgYW5kIGRlYnVnIG1lc3NhZ2VzLgoJKEZUX1FSZWFsbG9jKTogQ2FsbCBGVF9RQWxsb2MgaWYgb3JpZ2luYWwgcG9pbnRlciBpcyBOVUxMLgoJRml4IGVycm9yIG1lc3NhZ2UuCgoyMDA0LTA2LTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0dXRpbC5jCgkoRlRfUUFsbG9jLCBGVF9RUmVhbGxvYyksIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKEZUX1FBbGxvY19EZWJ1ZywKCUZUX1FSZWFsbG9jX0RlYnVnKTogTmV3IGZ1bmN0aW9ucyB0aGF0IHBlcmZvcm0gYWxsb2NhdGlvbiB3aXRob3V0Cgl6ZXJvLWluZyBvdXQgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2tzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIChGVF9NRU1fUUFMTE9DLAoJRlRfTUVNX1FSRUFMTE9DLCBGVF9NRU1fUU5FVywgRlRfTUVNX1FORVdfQVJSQVksCglGVF9NRU1fUVJFTkVXX0FSUkFZLCBGVF9RQUxMT0MsIEZUX1FSRUFMTE9DLCBGVF9RTkVXLCBGVF9RTkVXX0FSUkFZLAoJRlRfUVJFTkVXX0FSUkFZKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9iYXNlL2Z0c3RyZWFtLmMgKEZUX1N0cmVhbV9FbnRlckZyYW1lKTogVXNlIEZUX1FBTExPQy4KCSogc3JjL2d6aXAvZnRnemlwLmMgKEZUX1N0cmVhbV9PcGVuR3ppcCk6ICBVc2UgRlRfUU5FV19BUlJBWS4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBVc2UgRlRfUU5FV19BUlJBWS4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfZGlyZWN0b3J5LCB0dF9mYWNlX2xvYWRfbWV0cmljcywKCXR0X2ZhY2VfbG9hZF9nYXNwKTogVXNlIEZUX1FORVdfQVJSQVkuCgkodHRfZmFjZV9sb2FkX2tlcm4pOiBVc2UgRlRfUU5FV19BUlJBWS4KCVNtYWxsIG9wdGltaXphdGlvbiBpbiB0aGUga2VybmluZyB0YWJsZSB2ZXJpZmllcjsgdGhpcyBzcGVlZHMgdXAKCVRydWVUeXBlIGZhY2Ugb3BlbmluZyBieSBhYm91dCA3JS4KCSh0dF9mYWNlX2xvYWRfaGRteCk6IFVzZSBGVF9RTkVXX0FSUkFZIGFuZCBGVF9RQUxMT0MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBDaGFuZ2VkIHRoZSBvcmRlciBvZiBtb2R1bGVzLAoJcHV0dGluZyBUcnVlVHlwZSBhbmQgVHlwZSAxIGZpcnN0LiAgVGhpcyBkcmFtYXRpY2FsbHkgaW1wcm92ZXMgdGhlCglwZXJmb3JtYW5jZSBvZiBmYWNlIG9wZW4vY2xvc2Ugb3BlcmF0aW9ucy4gIEZvciBleGFtcGxlLCBwdXR0aW5nIHRoZQoJVHJ1ZVR5cGUgZHJpdmVyIGZpcnN0IGluIHRoZSBsaXN0IHJlc3VsdHMgaW4gYSA1eCBzcGVlZHVwIHdoZW4KCW9wZW5pbmcgYFZlcmEudHRmJy4KCglUaGUgdmVyeSBwcm9ibGVtIGlzIHRoYXQgYm90aCB0aGUgUENGIGFuZCBCREYgZHJpdmVycyBkbyBhIGxvdCBtb3JlCgl0aGFuIG5lY2Vzc2FyeSB0byBkZXRlY3QgdGhhdCB0aGV5IGNhbm5vdCBoYW5kbGUgYSBmb250IGZpbGUuCgoyMDA0LTA2LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3JlYWRfVE9DLCBwY2ZfZ2V0X3Byb3BlcnRpZXMsCglwY2ZfZ2V0X21ldHJpY3MsIHBjZl9nZXRfYml0bWFwcywgcGNmX2dldF9lbmNvZGluZ3MpOiBJbXByb3ZlCglkZWJ1Z2dpbmcgbWVzc2FnZXMuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmMgKEZUX0NPTVBPTUVOVCk6IE1vdmUgdXAuCgkoUENGX0ZhY2VfSW5pdCk6IFNpbXBsaWZ5IGNvZGUuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmggKEJERl9GYWNlUmVjKTogTmV3IGVsZW1lbnQgYGRlZmF1bHRfZ2x5cGgnLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9hZGRfcHJvcGVydHksIF9iZGZfcGFyc2Vfc3RhcnQpLAoJc3JjL2JkZi9iZGYuaCAoYmRmX2ZvbnRfdCk6IHMvZGVmYXVsdF9nbHlwaC9kZWZhdWx0X2NoYXIvLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogRml4IG51bWJlciBvZiBnbHlwaHMuCglTZXQgYGRlZmF1bHRfZ2x5cGgnLgoJKEJERl9HbHlwaF9Mb2FkKTogVXNlIGBkZWZhdWx0X2dseXBoJyBmb3IgdW5kZWZpbmVkIGdseXBoLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wNi0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wNi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgsCglsb2FkX3RydWV0eXBlX2dseXBoKTogRG9uJ3QgYWNjZXNzICh1bnJvdW5kZWQpCglgVFRfU2l6ZS5yb290Lm1ldHJpY3MnIGJ1dCAocm91bmRlZCkgYFRUX1NpemUubWV0cmljcycuICBUaGlzIGZpeGVzCglhIHNjYWxpbmcgYnVnIHRoYXQgY2F1c2VkIGluY29ycmVjdCByZW5kZXJpbmcgd2hlbiB0aGUgYnl0ZWNvZGUKCWludGVycHJldGVyIHdhcyBlbmFibGVkLgoKMjAwNC0wNi0xNCAgSHV3IEQgTSBEYXZpZXMgIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0ZhY2VfSW5pdCk6IFNldCB4X3BwZW0gYW5kIHlfcHBlbQoJYmFzZWQgb24gcGl4ZWxfd2lkdGggYW5kIHBpeGVsX2hlaWdodC4KCShGTlRfU2l6ZV9TZXRfUGl4ZWxzKTogVXBkYXRlZC4KCjIwMDQtMDYtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9sencvem9wZW4uYzogQ29tbWVudCBvdXQgaW5jbHVzaW9uIG9mIHNpZ25hbC5oIGFuZCB1bmlzdGQuaC4KCVJlcG9ydGVkIGJ5IEh5duRyaW5lbiBKeXJraSBKdWhhbmkuCgoyMDA0LTA2LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA2LTEwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9iamVjdC5jLCBzcmMvYmFzZS9mdGhhc2guYywgc3JjL2Jhc2UvZnRleGNlcHQuYywKCXNyYy9iYXNlL2Z0c3lzaW8uYywgc3JjL2Jhc2UvZnRzeXNtZW0uYywgc3JjL2Jhc2UvZnRsaXN0LmM6IFJlbW92ZWQuCglPYnNvbGV0ZS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoQWxpZ25tZW50LCBQQWxpZ25tZW50KTogTmV3IHVuaW9uIHRvIGZpeAoJcHJvYmxlbXMgd2l0aCA2NGJpdCBzeXN0ZW1zLgoJKEFsaWduUHJvZmlsZVNpemUpOiBVc2UgaXQuCgoyMDA0LTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dseXBoTWV0cmljcyk6IE1vdmUgYGxzYl9kZWx0YScKCWFuZCBgcnNiX2RlbHRhJyBlbGVtZW50cyB0by4uLgoJKEZUX0dseXBoU2xvdFJlYyk6IEhlcmUgdG8gcmV0YWluIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIKCUZyZWVUeXBlIHZlcnNpb25zLgoJVXBkYXRlIGFsbCB1c2Vycy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9mYWNlX2dldF9uYW1lKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogQWRkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb24KCW9mIHNsb3QtPm1ldHJpY3Mud2lkdGggYW5kIHNsb3QtPm1ldHJpY3MuaGVpZ2h0IHdoZW4gbG9hZGluZyBhCglXaW5kb3dzIEZOVCBnbHlwaC4gIFRoYW5rcyB0byBIdXcgRGF2aWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtcnUuaCAoRlRDX01ydU5vZGVfQ29tcGFyZUZ1bmMpOiBDaGFuZ2UKCXJldHVybiB0eXBlIHRvIEZUX0Jvb2wuCgoJKiBzcmMvY2FjaGUvZnRiYXNpYy5jIChmdGNfYmFzaWNfZmFtaWx5X2NvbXBhcmUpOiBDaGFuZ2UgcmV0dXJuCgl0eXBlIHRvIEZUX0Jvb2wuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoRlRDX0NhY2hlX0luaXQsIGZ0Y19jYWNoZV9pbml0KTogTWFrZQoJdGhlIGZvcm1lciBjYWxsIHRoZSBsYXR0ZXIsIG5vdCB2aWNlIHZlcnNhLgoJKEZUQ19DYWNoZV9Eb25lLCBmdGNfY2FjaGVfZG9uZSk6IERpdHRvLgoKCSogc3JjL2NhY2hlL2Z0Y2dseXBoLmMgKEZUQ19HTm9kZV9Db21wYXJlLCBmdGNfZ25vZGVfY29tcGFyZSk6IE1ha2UKCXRoZSBmb3JtZXIgY2FsbCB0aGUgbGF0dGVyLCBub3QgdmljZSB2ZXJzYS4KCShGVENfR0NhY2hlX0luaXQsIGZ0Y19nY2FjaGVfaW5pdCk6IERpdHRvLgoJKEZUQ19HQ2FjaGVfRG9uZSwgZnRjX2djYWNoZV9kb25lKTogRGl0dG8uCgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0lOb2RlX0ZyZWUsIGZ0Y19pbm9kZV9mcmVlKTogTWFrZSB0aGUKCWZvcm1lciBjYWxsIHRoZSBsYXR0ZXIsIG5vdCB2aWNlIHZlcnNhLgoJKEZUQ19JTm9kZV9XZWlnaHQsIGZ0Y19pbm9kZV93ZWlnaHQpOiBEaXR0by4KCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfc2l6ZV9ub2RlX2NvbXBhcmUsCglmdGNfc2l6ZV9ub2RlX2NvbXBhcmVfZmFjZWlkLCBmdGNfZmFjZV9ub2RlX2NvbXBhcmUpOiBDaGFuZ2UgcmV0dXJuCgl0eXBlIHRvIEZUX0Jvb2wuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoRlRDX1NOb2RlX0ZyZWUsIGZ0Y19zbm9kZV9mcmVlKTogTWFrZSB0aGUKCWZvcm1lciBjYWxsIHRoZSBsYXR0ZXIsIG5vdCB2aWNlIHZlcnNhLgoJKEZUQ19TTm9kZV9XZWlnaHQsIGZ0Y19zbm9kZV93ZWlnaHQpOiBEaXR0by4KCShGVENfU05vZGVfQ29tcGFyZSwgZnRjX3Nub2RlX2NvbXBhcmUpOiBEaXR0by4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jOiBGaXggc29tZSBidWdzIGFuZCBpbmVmZmljaWVuY2llcyBpbiB0aGUgY2FjaGUKCXN1Yi1zeXN0ZW0uCgoyMDA0LTA2LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfbG9hZF9nKTogU2V0IGBsc2JfZGVsdGEnIGFuZAoJYHJzYl9kZWx0YScgaW4gc2xvdC0+bWV0cmljcyBhbmQgdHVuZSBzaWRlIGJlYXJpbmdzIHNsaWdodGx5LgoKMjAwNC0wNi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wNi0wNCAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBnbXgubmV0PgoKCUltcHJvdmUgaW50ZXItbGV0dGVyIHNwYWNpbmcgZm9yIGF1dG9oaW50ZWQgZ2x5cGhzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HbHlwaF9NZXRyaWNzKTogQWRkIGVsZW1lbnRzCglgbHNiX2RlbHRhJyBhbmQgYHJzYl9kZWx0YScuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogU2V0IGBsc2JfZGVsdGEnIGFuZAoJYHJzYl9kZWx0YScgaW4gc2xvdC0+bWV0cmljcyBhbmQgdHVuZSBzaWRlIGJlYXJpbmdzIHNsaWdodGx5LgoKMjAwNC0wNi0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9maXQvKjogSW1wb3J0YW50IGZpeGVzIHRvIHRoZSBhdXRvLWZpdHRlci4gIFRoZSBvdXRwdXQKCW5vdyBzZWVtcyB0byBiZSAxMDAlIGVxdWl2YWxlbnQgdG8gdGhlIGF1dG8taGludGVyLCB3aGlsZSBiZWluZwoJYWJvdXQgMiUgZmFzdGVyICh3aGljaCBwcm92ZXMgdGhhdCBzY3JpcHQtc3BlY2lmaWMgYWxnb3JpdGhtCglzZWxlY3Rpb24gaXNuJ3QgYSBwZXJmb3JtYW5jZSBwcm9ibGVtKS4KCglUbyB0ZXN0IGl0LCBjaGFuZ2UgYGF1dG9oaW50JyB0byBgYXV0b2ZpdCcgaW4KCTxmcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaD4gYW5kIHJlY29tcGlsZS4KCglBIGZldyBtb3JlIHRlc3RpbmcgaXMgbmVlZGVkIGJlZm9yZSBtYWtpbmcgdGhpcyB0aGUgb2ZmaWNpYWwKCWF1dG8taGludGluZyBtb2R1bGUuCgoyMDA0LTA2LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChjb21wdXRlX2dseXBoX21ldHJpY3MpOiBGaXggY29tcGlsZXIKCXdhcm5pbmdzLgoKMjAwNC0wNi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBNYWtlIHN1cmUgdGhhdCBhbiBFbmdsaXNoCgluYW1lIHJlY29yZCBmb3IgdGhlIEFwcGxlIHBsYXRmb3JtIGlzIHByZWZlcnJlZCB0byBhIG5vbi1FbmdsaXNoCgllbnRyeSBmb3IgdGhlIE1pY3Jvc29mdCBwbGF0Zm9ybS4gIFByb2JsZW0gcmVwb3J0ZWQgYnkgSEFOREEKCUtlbidpY2hpLgoKMjAwNC0wNS0xOSAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKG1tX2F4aXNfdW5tYXAsIG1tX3dlaWdodHNfdW5tYXApOiBOZXcKCWF1eGlsaWFyeSBmdW5jdGlvbnMuCgkoVDFfR2V0X01NX1Zhcik6IFByb3ZpZGUgYXhpcyB0YWdzLgoJVXNlIG1tX2F4aXNfdW5tYXAgYW5kIG1tX3dlaWdodHNfdW5tYXAgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcwoJZm9yIGRlc2lnbiBhbmQgbm9ybWFsaXplZCBheGlzIGNvb3JkaW5hdGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19EZXNpZ25NYXBSZWMpOiBDaGFuZ2UgdHlwZSBvZgoJYGRlc2lnbl9wb2ludHMnIHRvIEZUX0xvbmcuCglVcGRhdGUgYWxsIHVzZXJzLgoKMjAwNC0wNS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ29uaWNfQ2hlY2spOiBGaXggYm91bmRhcnkgY2FzZXMuCglSZXBvcnRlZCBieSBNaWtleSBBbmJhcnkgPG1hbmJhcnlAdml6cnQuY29tPi4KCjIwMDQtMDUtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2RvbmVfZmFjZSk6IEZyZWUgZmFjZS0+cG9zdHNjcmlwdF9uYW1lLgoKMjAwNC0wNS0xNSAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX21heF9wcm9maWxlKTogQWx3YXlzIHNldAoJZmFjZS0+cm9vdC5udW1fZ2x5cGhzLgoKMjAwNC0wNS0xNCAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoJICAgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogSGFuZGxlIGBiaGVkJyBwcm9wZXJseS4KCjIwMDQtMDUtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNiYXNpYy5jIChmdGNfYmFzaWNfZmFtaWx5X2NvbXBhcmUsCglmdGNfYmFzaWNfZmFtaWx5X2luaXQsIGZ0Y19iYXNpY19mYW1pbHlfZ2V0X2NvdW50LAoJZnRjX2Jhc2ljX2ZhbWlseV9sb2FkX2JpdG1hcCwgZnRjX2Jhc2ljX2ZhbWlseV9sb2FkX2dseXBoLAoJZnRjX2Jhc2ljX2dub2RlX2NvbXBhcmVfZmFjZWlkKTogQWRqdXN0IHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcwoJdG8gcHJvdG90eXBlcyBnaXZlbiBpbiBoZWFkZXIgZmlsZXMgZnJvbSBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLgoJVXNlIGNhc3RzIHRvIHByb3BlciB0eXBlcyBsb2NhbGx5LgoJKGZ0Y19iYXNpY19pbWFnZV9mYW1pbHlfY2xhc3MsIGZ0Y19iYXNpY19pbWFnZV9jYWNoZV9jbGFzcywKCWZ0Y19iYXNpY19zYml0X2ZhbWlseV9jbGFzcywgZnRjX2Jhc2ljX3NiaXRfY2FjaGVfY2xhc3MpOiBSZW1vdmUKCWNhc3RzLgoKCSogc3JjL2NhY2hlL2Z0Y2NiYWNrLmg6IEFkanVzdCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMgdG8KCXByb3RvdHlwZXMgZ2l2ZW4gaW4gaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS9mcmVldHlwZS9jYWNoZS4KCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChmdGNfaW5vZGVfZnJlZSwgZnRjX2lub2RlX25ldywKCWZ0Y19pbm9kZV93ZWlnaHQpOiBBZGp1c3QgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzIHRvIHByb3RvdHlwZXMKCWdpdmVuIGluIGhlYWRlciBmaWxlcyBmcm9tIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUuICBVc2UgY2FzdHMgdG8KCXByb3BlciB0eXBlcyBsb2NhbGx5LgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zbm9kZV9mcmVlLCBmdGNfc25vZGVfbmV3LAoJZnRjX3Nub2RlX3dlaWdodCwgZnRjX3Nub2RlX2NvbXBhcmUpOiBBZGp1c3QgcGFyYW1ldGVycyBhbmQgcmV0dXJuCgl0eXBlcyB0byBwcm90b3R5cGVzIGdpdmVuIGluIGhlYWRlciBmaWxlcyBmcm9tCglpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLiAgVXNlIGNhc3RzIHRvIHByb3BlciB0eXBlcyBsb2NhbGx5LgoKCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfbm9kZV9mcmVlLCBmdGNfY21hcF9ub2RlX25ldywKCWZ0Y19jbWFwX25vZGVfd2VpZ2h0LCBmdGNfY21hcF9ub2RlX2NvbXBhcmUsCglmdGNfY21hcF9ub2RlX3JlbW92ZV9mYWNlaWQpOiBBZGp1c3QgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzIHRvCglwcm90b3R5cGVzIGdpdmVuIGluIGhlYWRlciBmaWxlcyBmcm9tIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUuICBVc2UKCWNhc3RzIHRvIHByb3BlciB0eXBlcyBsb2NhbGx5LgoJKGZ0Y19jbWFwX2NhY2hlX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKCSogc3JjL2NhY2hlL2Z0Y2dseXBoLmMgKGZ0Y19nbm9kZV9jb21wYXJlLCBmdGNfZ2NhY2hlX2luaXQsCglmdGNfZ2NhY2hlX2RvbmUpOiBBZGp1c3QgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzIHRvIHByb3RvdHlwZXMKCWdpdmVuIGluIGhlYWRlciBmaWxlcyBmcm9tIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUuICBVc2UgY2FzdHMgdG8KCXByb3BlciB0eXBlcyBsb2NhbGx5LgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19zaXplX25vZGVfZG9uZSwgZnRjX3NpemVfbm9kZV9jb21wYXJlLAoJZnRjX3NpemVfbm9kZV9pbml0LCBmdGNfc2l6ZV9ub2RlX3Jlc2V0LAoJZnRjX3NpemVfbm9kZV9jb21wYXJlX2ZhY2VpZCwgZnRjX2ZhY2Vfbm9kZV9pbml0LAoJZnRjX2ZhY2Vfbm9kZV9kb25lLCBmdGNfZmFjZV9ub2RlX2NvbXBhcmU6IEFkanVzdCBwYXJhbWV0ZXJzIGFuZAoJcmV0dXJuIHR5cGVzIHRvIHByb3RvdHlwZXMgZ2l2ZW4gaW4gaGVhZGVyIGZpbGVzIGZyb20KCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUuICBVc2UgY2FzdHMgdG8gcHJvcGVyIHR5cGVzIGxvY2FsbHkuCgoJKGZ0Y19zaXplX2xpc3RfY2xhc3MsIGZ0Y19mYWNlX2xpc3RfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoyMDA0LTA1LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYyAoZnRfYXV0b2hpbnRlcl9pbml0LCBmdF9hdXRvaGludGVyX2RvbmUpOgoJVXNlIEZUX01vZHVsZSBhcyBwYXJhbWV0ZXIgYW5kIGRvIGEgY2FzdCB0byBGVF9BdXRvSGludGVyIGxvY2FsbHkuCgkoYXV0b2hpbnRfbW9kdWxlX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChmdF9iaXRtYXBfZ2x5cGhfaW5pdCwgZnRfYml0bWFwX2dseXBoX2NvcHksCglmdF9iaXRtYXBfZ2x5cGhfZG9uZSwgZnRfYml0bWFwX2dseXBoX2Jib3gsIGZ0X291dGxpbmVfZ2x5cGhfaW5pdCwKCWZ0X291dGxpbmVfZ2x5cGhfZG9uZSwgZnRfb3V0bGluZV9nbHlwaF9jb3B5LAoJZnRfb3V0bGluZV9nbHlwaF90cmFuc2Zvcm0sIGZ0X291dGxpbmVfZ2x5cGhfYmJveCwKCWZ0X291dGxpbmVfZ2x5cGhfcHJlcGFyZSk6IFVzZSBGVF9HbHlwaCBhcyBwYXJhbWV0ZXIgYW5kIGRvIGEgY2FzdAoJdG8gRlRfWFhYR2x5cGggbG9jYWxseS4KCVVzZSBGVF9DQUxMQkFDS19ERUYgdGhyb3VnaG91dC4KCShmdF9iaXRtYXBfZ2x5cGhfY2xhc3MsIGZ0X291dGxpbmVfZ2x5cGhfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9jbWFwX2luaXQsIGJkZl9jbWFwX2RvbmUsCgliZGZfY21hcF9jaGFyX2luZGV4LCBiZGZfY21hcF9jaGFyX25leHQpOiBVc2UgRlRfQ01hcCBhcyBwYXJhbWV0ZXIKCWFuZCBkbyBhIGNhc3QgdG8gQkRGX0NNYXAgbG9jYWxseS4KCShiZGZfY21hcF9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCjIwMDQtMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0J1aWxkZXIpOiBSZW1vdmUgYGVycm9yJy4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyk6IFJlcGxhY2UKCWBNZW1vcnlfRXJyb3InIHdpdGggYEZhaWwnIHVuZCB1cGRhdGUgYWxsIHVzZXJzLgoKMjAwNC0wNS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9QYXJzZVN0YXRlKTogTmV3CgllbnVtZXJhdGlvbi4KCShUMV9CdWlsZGVyUmVjKTogUmVwbGFjZSBgcGF0aF9iZWd1bicgd2l0aCBgcGFyc2Vfc3RhdGUnLgoJUmVtb3ZlIGBlcnJvcicuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKTogUmVwbGFjZQoJYE1lbW9yeV9FcnJvcicgd2l0aCBgRmFpbCcgYW5kIHVwZGF0ZSBhbGwgdXNlcnMuCglEb24ndCB1c2UgYGJ1aWxkZXItPmVycm9yJy4KCVJlcGxhY2UgYHBhdGhfYmVndW4nIHdpdGggYHBhcnNlX3N0YXRlJyBhbmQgY2hlY2sgcGFyc2luZyBzdGF0ZXMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHQxX2J1aWxkZXJfaW5pdCwgdDFfYnVpbGRlcl9zdGFydF9wb2ludCk6CglSZXBsYWNlIGBwYXRoX2JlZ3VuJyB3aXRoIGBwYXJzZV9zdGF0ZScgYW5kIGNoZWNrIHBhcnNpbmcgc3RhdGVzLgoKMjAwNC0wNS0xMCAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHR4Z3Zhci5jIChmdF92YXJfbG9hZF9hdmFyKTogRG8gZnJlZSBhcnJheXMgaW4gY2FzZQoJb2YgZXJyb3IgLS0gYGF2YXInIGlzIG9wdGlvbmFsIHNvIHdlIGNhbid0IHJlbHkgb24gdHRfZG9uZV9ibGVuZAoJYmVpbmcgY2FsbGVkIGF1dG9tYXRpY2FsbHkuCgoyMDA0LTA1LTA5ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy90cnVldHlwZS90dHhndmFyLmMgKGZ0X3Zhcl9sb2FkX2F2YXIsIGZ0X3Zhcl9sb2FkX2d2YXIpOiBGaXgKCWVycm9yIGhhbmRsaW5nLgoKMjAwNC0wNS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMsIHNyYy9wZnIvcGZyb2Jqcy5oIChwZnJfZmFjZV9pbml0LAoJcGZyX2ZhY2VfZG9uZSwgcGZyX2ZhY2VfZ2V0X2tlcm5pbmcsIHBmcl9zbG90X2luaXQsIHBmcl9zbG90X2RvbmUsCglwZnJfc2xvdF9sb2FkKTogRG9uJ3QgdXNlIFBGUl9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2ggYXJlCgl0eXBlY2FzdCB0byB0aGUgcHJvcGVyIFBGUl9YWFggdHlwZXMgd2l0aGluIHRoZSBmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoKCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZ2V0X2tlcm5pbmcsIHBmcl9nZXRfYWR2YW5jZSwKCXBmcl9nZXRfbWV0cmljcywgcGZyX2dldF9zZXJ2aWNlKTogRG9uJ3QgdXNlIFBGUl9YWFggYnV0IEZUX1hYWAoJYXJndW1lbnRzIHdoaWNoIGFyZSB0eXBlY2FzdCB0byB0aGUgcHJvcGVyIFBGUl9YWFggdHlwZXMgd2l0aGluIHRoZQoJZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCVVzZSBGVF9DQUxMQkFDS19ERUYgdGhyb3VnaG91dC4KCShwZnJfbWV0cmljc19zZXJ2aWNlX3JlYywgcGZyX2RyaXZlcl9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCjIwMDQtMDUtMDYgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGd4dmFyLmMgKGZ0X3Zhcl9sb2FkX2d2YXIpOiBVc2UgRlRfRkFDRV9TVFJFQU0uCgkoKik6IFJlbmFtZSBsb2NhbCB2YXJpYWJsZSBPZmZzZXRUb0RhdGEgdG8gb2Zmc2V0VG9EYXRhLgoKMjAwNC0wNS0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9zaXplX2RvbmUsIGNmZl9zaXplX2luaXQsIGNmZl9zaXplX3Jlc2V0LAoJY2ZmX3Nsb3RfZG9uZSwgY2ZmX3Nsb3RfaW5pdCwgY2ZmX2ZhY2VfaW5pdCwgY2ZmX2ZhY2VfZG9uZSk6IEFjY2VzcwoJcm9vdCBmaWVsZHMgZGlyZWN0bHkuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoTG9hZF9HbHlwaCk6IEFjY2VzcyByb290IGZpZWxkcyBkaXJlY3RseS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoKTogU2F2ZSBjdXJyZW50CglmcmFtZSBiZWZvcmUgY2FsbGluZyBUVF9WYXJ5X0dldF9HbHlwaF9EZWx0YXMuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmMgKFBDRl9DTWFwUmVjKTogUmVuYW1lIGBjbWFwJyB0byBgcm9vdCcgZm9yCgljb25zaXN0ZW5jeS4KCShwY2ZfY21hcF9pbml0LCBwY2ZfY21hcF9kb25lLCBwY2ZfY21hcF9jaGFyX2luZGV4LAoJcGNmX2NtYXBfY2hhcl9uZXh0KTogRG9uJ3QgdXNlIFBDRl9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2gKCWFyZSB0eXBlY2FzdCB0byB0aGUgcHJvcGVyIFBDRl9YWFggdHlwZXMgd2l0aGluIHRoZSBmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoJKHBjZl9jbWFwX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoJKFBDRl9GYWNlX0RvbmUsIFBDRl9GYWNlX0luaXQsIFBDRl9TZXRfUGl4ZWxfU2l6ZSk6IERvbid0IHVzZQoJUENGX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUgdHlwZWNhc3QgdG8gdGhlIHByb3BlcgoJUENGX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCglVc2UgRlRfQ0FMTEJBQ0tfREVGIHRocm91Z2hvdXQuCgkoUENGX1NldF9Qb2ludF9TaXplKTogTmV3IHdyYXBwZXIgZnVuY3Rpb24uCgkoUENGX0dseXBoX0xvYWQsIHBjZl9kcml2ZXJfcmVxdWVzdGVyKTogVXNlIEZUX0NBTExCQUNLX0RFRi4KCShwY2ZfZHJpdmVyX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKMjAwNC0wNS0wNCAgU3RldmUgSGFydHdlbGwgIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0PgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jICh0dF9kcml2ZXJfZG9uZSk6IEZpeCB0eXBvLgoKMjAwNC0wNS0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Eb25lLCBCREZfRmFjZV9Jbml0LAoJQkRGX1NldF9QaXhlbF9TaXplKTogRG9uJ3QgdXNlIEJERl9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2gKCWFyZSB0eXBlY2FzdCB0byB0aGUgcHJvcGVyIEJERl9YWFggdHlwZXMgd2l0aGluIHRoZSBmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoJVXNlIEZUX0NBTExCQUNLX0RFRiB0aHJvdWdob3V0LgoJKEJERl9TZXRfUG9pbnRfU2l6ZSk6IE5ldyB3cmFwcGVyIGZ1bmN0aW9uLgoJKGJkZl9kcml2ZXJfY2xhc3MpOiBSZW1vdmUgY2FzdHMuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKEdldF9LZXJuaW5nLCBMb2FkX0dseXBoLCBjZmZfZ2V0X2ludGVyZmFjZSk6CglEb24ndCB1c2UgQ0ZGX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUgdHlwZWNhc3QgdG8gdGhlCglwcm9wZXIgQ0ZGX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCglVc2UgRlRfQ0FMTEJBQ0tfREVGIHRocm91Z2hvdXQuCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX3NpemVfZG9uZSwKCWNmZl9zaXplX2luaXQsIGNmZl9zaXplX3Jlc2V0LCBjZmZfc2xvdF9kb25lLCBjZmZfc2xvdF9pbml0LAoJY2ZmX2ZhY2VfaW5pdCwgY2ZmX2ZhY2VfZG9uZSwgY2ZmX2RyaXZlcl9pbml0LCBjZmZfZHJpdmVyX2RvbmUpOgoJRG9uJ3QgdXNlIENGRl9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2ggYXJlIHR5cGVjYXN0IHRvIHRoZQoJcHJvcGVyIENGRl9YWFggdHlwZXMgd2l0aGluIHRoZSBmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoJKGNmZl9wb2ludF9zaXplX3Jlc2V0KTogTmV3IHdyYXBwZXIgZnVuY3Rpb24uCgoJKiBzcmMvY2lkL2NpZG9ianMuaCwgc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9zbG90X2RvbmUsCgljaWRfc2xvdF9pbml0LCBjaWRfc2l6ZV9kb25lLCBjaWRfc2l6ZV9pbml0LCBjaWRfc2l6ZV9yZXNldCwKCWNpZF9mYWNlX2RvbmUsIGNpZF9mYWNlX2luaXQsIGNpZF9kcml2ZXJfaW5pdCwgY2lkX2RyaXZlcl9kb25lKToKCURvbid0IHVzZSBDSURfWFhYIGJ1dCBGVF9YWFggYXJndW1lbnRzIHdoaWNoIGFyZSB0eXBlY2FzdCB0byB0aGUKCXByb3BlciBDSURfWFhYIHR5cGVzIHdpdGhpbiB0aGUgZnVuY3Rpb24uCglVcGRhdGUgY29kZSBhY2NvcmRpbmdseS4KCShjaWRfcG9pbnRfc2l6ZV9yZXNldCk6IE5ldyB3cmFwcGVyIGZ1bmN0aW9uLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jLCBzcmMvY2lkL2NpZGdsb2FkLmggKGNpZF9zbG90X2xvYWRfZ2x5cGgpOgoJRG9uJ3QgdXNlIENJRF9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2ggYXJlIHR5cGVjYXN0IHRvIHRoZQoJcHJvcGVyIENJRF9YWFggdHlwZXMgd2l0aGluIHRoZSBmdW5jdGlvbi4KCVVwZGF0ZSBjb2RlIGFjY29yZGluZ2x5LgoKCSogc3JjL2NpZC9jaWRyaXZlci5jIChjaWRfZ2V0X2ludGVyZmFjZSk6CglEb24ndCB1c2UgQ0lEX1hYWCBidXQgRlRfWFhYIGFyZ3VtZW50cyB3aGljaCBhcmUgdHlwZWNhc3QgdG8gdGhlCglwcm9wZXIgQ0lEX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCglVc2UgRlRfQ0FMTEJBQ0tfREVGLgoJKHQxY2lkX2RyaXZlcl9jbGFzcyk6IFJlbW92ZSBjYXN0cy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jICh0dF9nZXRfaW50ZXJmYWNlKTogVXNlIEZUX0NBTExCQUNLX0RFRi4KCSogc3JjL3RydWV0eXBlL3R0Z3h2YXIuYyAoZnRfdmFyX2xvYWRfYXZhcik6IERvbid0IGZyZWUgbm9uLWxvY2FsCgl2YXJpYWJsZXMgKHRoaXMgaXMgZG9uZSBsYXRlcikuCgkoZnRfdmFyX2xvYWRfYXZhcik6IEZpeCBjYWxsIHRvIEZUX0ZSQU1FX0VOVEVSLgoJKFRUX0dldF9NTV9WYXIpOiBGaXggc2l6ZSBmb3IgYGZ2YXJfZmllbGRzJy4KCShUVF9WYXJ5X0dldF9HbHlwaF9EZWx0YXMpOiBIYW5kbGUgZGVhbGxvY2F0aW9uIG9mIGxvY2FsIHZhcmlhYmxlcwoJY29ycmVjdGx5LgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX2RlYnVnX3JlYWxsb2MpOiBEb24ndCBhYm9ydCBpZgoJY3VycmVudCBzaXplIGlzIHplcm8uCgoyMDA0LTA1LTAzICBTdGV2ZSBIYXJ0d2VsbCAgPHNoc3BhbXNpbmtAY29tY2FzdC5uZXQ+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmgsIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfZmFjZV9pbml0LAoJdHRfZmFjZV9kb25lLCB0dF9zaXplX2luaXQsIHR0X3NpemVfZG9uZSwgdHRfZHJpdmVyX2luaXQsCgl0dF9kcml2ZXJfZG9uZSk6IERvbid0IHVzZSBUVF9YWFggYnV0IEZUX1hYWCBhcmd1bWVudHMgd2hpY2ggYXJlCgl0eXBlY2FzdCB0byB0aGUgcHJvcGVyIFRUX1hYWCB0eXBlcyB3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoR2V0X0tlcm5pbmcsIFNldF9DaGFyX1NpemVzLAoJU2V0X1BpeGVsX1NpemVzLCBMb2FkX0dseXBoLCB0dF9nZXRfaW50ZXJmYWNlKTogRG9uJ3QgdXNlIFRUX1hYWCBidXQKCUZUX1hYWCBhcmd1bWVudHMgd2hpY2ggYXJlIHR5cGVjYXN0IHRvIHRoZSBwcm9wZXIgVFRfWFhYIHR5cGVzCgl3aXRoaW4gdGhlIGZ1bmN0aW9uLgoJVXBkYXRlIGNvZGUgYWNjb3JkaW5nbHkuCgkodHRfZHJpdmVyX2NsYXNzKTogUmVtb3ZlIGNhc3RzLgoKMjAwNC0wNS0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfZnJlZV9uYW1lcyk6IENoZWNrIHRoYXQgYHRhYmxlLT5uYW1lcycKCWlzIG5vdCBOVUxMLiAgUmVwb3J0ZWQgYnkgR29yZG9uIENoaWxkcyA8Z2NoaWxkc0BxdWlja2N1dC5jb20uYXU+LgoKMjAwNC0wNC0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9mb3JtYXRzLnR4dDogQWRkIG1vcmUgaW5mb3JtYXRpb24gb24gUEZSIGZvcm1hdC4KCjIwMDQtMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZm9ybWF0cy50eHQ6IE5ldyBmaWxlLgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA0LTI4ICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoR1hfQmxlbmRSZWNfKQoJW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBGaXggYSB0eXBvLgoKCSogc3JjL3RydWV0eXBlL3R0Z3h2YXIuaCAoR1hfQmxlbmRSZWNfKTogRml4IGEgdHlwby4KCjIwMDQtMDQtMjcgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGd4dmFyLmg6IFVzZSBGVF9MT0NBTCBpbnN0ZWFkIG9mIEZUX0xPQ0FMX0RFRgoJZm9yIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCjIwMDQtMDQtMjUgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL3RydWV0eXBlL3R0Z3h2YXIuYyAoZnRfdmFyX2FwcGx5X3R1cGxlKTogRml4IHR5cG8uCgoyMDA0LTA0LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvSmFtZmlsZSwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wNC0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBSZXZlcnQgY2hhbmdlIGZyb20gMjAwNC0wNC0xNy4KCSogc3JjL3BjZi9wY2Z1dGlsLmM6IFVzZSBGVF9MT0NBTF9ERUYuCgkqIHNyYy9wY2YvcGNmdXRpbC5oOiBJbmNsdWRlIEZUX0NPTkZJR19DT05GSUdfSC4KCVVzZSBGVF9CRUdJTl9IRUFERVIgYW5kIEZUX0VORF9IRUFERVIuCglVc2UgRlRfTE9DQUwuCgoyMDA0LTA0LTI0ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglBZGQgc3VwcG9ydCBmb3IgQXBwbGUncyBkaXN0b3J0YWJsZSBmb250IHRlY2hub2xvZ3kgKGluIEdYIGZvbnRzKS4KCgkqIGRldmVsL2Z0b3B0aW9uLmgsIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUKTogTmV3IG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1tLmggKEZUX1Zhcl9BeGlzLCBGVF9WYXJfTmFtZWRfU3R5bGUsCglGVF9NTV9WYXIpOiBOZXcgc3RydWN0dXJlcy4KCShGVF9HZXRfTU1fVmFyLCBGVF9TZXRfVmFyX0Rlc2lnbl9Db29yZGluYXRlcywKCUZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmggKEZUX0dldF9NTV9WYXJfRnVuYywKCUZUX1NldF9WYXJfRGVzaWduX0Z1bmMpOiBOZXcgdHlwZWRlZnMuCglVcGRhdGUgTXVsdGlNYXN0ZXJzIHNlcnZpY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaAoJW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBJbmNsdWRlIEZUX01VTFRJUExFX01BU1RFUlNfSC4KCShHWF9CbGVuZCkgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBOZXcgdHlwZWRlZi4KCShUVF9GYWNlKSBbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IE5ldyBtZW1iZXJzIGBkb2JsZW5kJwoJYW5kIGBibGVuZCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIChUVEFHX2F2YXIsIFRUQUdfY3ZhciwgVFRBR19ndmFyKTogTmV3CgltYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkIGB0dGd4dmFyJy4KCgkqIHNyYy9iYXNlL2Z0bW0uYyAoRlRfR2V0X01NX1ZhciwgRlRfU2V0X1Zhcl9EZXNpZ25fQ29vcmRpbmF0ZXMsCglGVF9TZXRfVmFyX0JsZW5kX0Nvb3JkaW5hdGVzKTogTmV3IGZ1bmN0aW9ucy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSkKCVtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogU2V0IEZUX0ZBQ0VfRkxBR19NVUxUSVBMRV9NQVNURVJTCglmbGFnIGZvciBHWCB2YXIgZm9udHMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRneHZhci5jLCBzcmMvdHJ1ZXR5cGUvdHRneHZhci5oOiBOZXcgZmlsZXMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYyBbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IEluY2x1ZGUKCXR0Z3h2YXIuYy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogSW5jbHVkZQoJRlRfTVVMVElQTEVfTUFTVEVSU19ILCBGVF9TRVJWSUNFX01VTFRJUExFX01BU1RFUlNfSCwgYW5kIHR0Z3h2YXIuaC4KCSh0dF9zZXJ2aWNlX2d4X211bHRpX21hc3RlcnMpIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXToKCU5ldyBzZXJ2aWNlLgoJKHR0X3NlcnZpY2VzKSBbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IFVwZGF0ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogSW5jbHVkZQoJdHRneHZhci5oLgoJKFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoLCBsb2FkX3RydWV0eXBlX2dseXBoKQoJW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdIDpTdXBwb3J0IEdYIHZhciBmb250cy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyBbVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVF06IEluY2x1ZGUKCXR0Z3h2YXIuaC4KCSh0dF9kb25lX2ZhY2UpIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogQ2FsbAoJdHRfZG9uZV9ibGVuZC4KCgkqIHNyYy90cnVldHlwZS90dHBsb2FkLmMgW1RUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlRdOiBJbmNsdWRlCgl0dGd4dmFyLmguCgkodHRfZmFjZV9sb2FkX2N2dCkgIFtUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUXTogQ2FsbAoJdHRfZmFjZV92YXJ5X2N2dC4KCgkqIHNyYy90cnVldHlwZS9ydWxlcy5tayAoVFRfRFJWX1NSQyk6IEFkZCB0dGd4dmFyLmMuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfc2VydmljZV9tdWx0aV9tYXN0ZXJzKTogQWRkIFQxX0dldF9NTV9WYXIKCWFuZCBUMV9TZXRfVmFyX0Rlc2lnbi4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoRlRfSU5UX1RPX0ZJWEVELCBGVF9GSVhFRF9UT19JTlQpOiBOZXcgbWFjcm9zLgoJKFQxX0dldF9NTV9WYXIsIFQxX1NldF9WYXJfRGVzaWduKTogTmV3IGZ1bmN0aW9ucy4KCgkqIHNyYy90eXBlMS90MWxvYWQuaCAoVDFfR2V0X01NX1ZhciwgVDFfU2V0X1Zhcl9EZXNpZ24pOiBOZXcKCWZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCjIwMDQtMDQtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oIChGVF9HZXRfQ2hhck1hcF9JbmRleCk6IFJlbmFtZQoJZGVjbGFyYXRpb24gYW5kIG1vdmUgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HZXRfQ2hhcm1hcF9JbmRleCk6IEhlcmUuCgkoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gOS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfQ2hhcm1hcF9JbmRleCk6IE5ldyBmdW5jdGlvbi4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6NzozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUudmNwcm9qOiBzLzIxOC8yMTkvLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpLCBSRUFETUUsIEphbWZpbGUgKFJlZkRvYyk6CglzLzIuMS44LzIuMS45Ly4KCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRlZC4KCjIwMDQtMDQtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlcl9ydW4pLCBzcmMvcHNhdXgvcHNvYmpzLmMKCShwc19wYXJzZXJfbG9hZF9maWVsZCk6IFVzZSBGVF9DSEFSX0JJVC4KCjIwMDQtMDQtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS44IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogRml4IGEgc21hbGwgbWVtb3J5IGxlYWsuCgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfbG9hZF9nKSwgc3JjL2F1dG9maXQvYWZtb2R1bGUuYwoJKGFmX2F1dG9maXR0ZXJfbG9hZF9nbHlwaCksIHNyYy9iYXNlL2Z0ZGVidWcuYyAoRlRfVHJhY2VfR2V0X05hbWUpOgoJUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2F1dG9maXQvYWZ0eXBlcy5oOiBVbmRlZmluZSBBRl9ERUJVRy4KCgkqIHNyYy9sencvem9wZW4uYyAocm1hc2spLCBzcmMvcGNmL3BjZmRyaXZyLmMgKHBjZl9zZXJ2aWNlX2JkZiwKCXBjZl9zZXJ2aWNlcyksIHNyYy9wY2YvcGNmcmVhZC5jICh0YWJsZU5hbWVzKSwgc3JjL3BzYXV4L3Bzb2Jqcy5jCgkoZnRfY2hhcl90YWJsZSksIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX3NlcnZpY2VfZ2x5cGhfZGljdCwKCXQ0Ml9zZXJ2aWNlX3BzX2ZvbnRfbmFtZSk6IERlY29yYXRlIGRhdGEgYXJyYXlzIHdpdGggYGNvbnN0JyB0bwoJYXZvaWQgcG9wdWxhdGluZyB0aGUgYC5kYXRhJyBzZWdtZW50LgoKCSogc3JjL2x6dy9KYW1maWxlOiBOZXcgZmlsZS4KCjIwMDQtMDQtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFSYWRpeCk6IFJlbmFtZWQgdG8uLi4KCShwc19yYWRpeCk6IFRoaXMuCglVcGRhdGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24uCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTA0LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oIChUVF9Mb2FkX0dseXBoKSwKCXNyYy90dGRyaXZlci5jIChMb2FkX0dseXBoKTogQ2hhbmdlIHR5cGUgb2YgYGdseXBoX2luZGV4JyB0bwoJRlRfVUludC4gIEZyb20gTGV4IFdhcm5lcnMuCgoyMDA0LTA0LTE3ICBDaGlzYXRvIFlhbWF1Y2hpICA8Y3lhbWF1Y2hAYS5waHlzLm5hZ295YS11LmFjLmpwPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9zZm50X2hlYWRlcik6IFJlYWxseSBmaXggY2hhbmdlCglmcm9tIDIwMDQtMDMtMTkuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBVc2UgYGZ0X3N0cmxlbicuCgoJKiBzcmMvcGNmL3BjZnV0aWwuYywgc3JjL3BjZi9wY2Z1dGlsLmg6IERlY29yYXRlIGZ1bmN0aW9ucyB3aXRoCglgc3RhdGljJy4KCVJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gYFJlcGFkQml0bWFwJy4KCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBEb24ndCBpbmNsdWRlIHBjZnV0aWwuaC4KCjIwMDQtMDQtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiAodXNhZ2UpOiBGaXggYW5kIGltcHJvdmUgdXNhZ2UKCWluZm9ybWF0aW9uLgoKMjAwNC0wNC0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy92bXMvZnRjb25maWcuaDogRGVmaW5lCglGVF9DSEFSX0JJVC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogRG9uJ3QgYXBwbHkgYXV0b2hpbnRpbmcgaWYKCWdseXBoIGlzIHZlcnRpY2FsbHkgZGlzdG9ydGVkIG9yIG1pcnJvcmVkLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfc2xvdF9sb2FkKTogSGFuZGxlIHplcm8gYHNpemUnIHByb3Blcmx5Cglmb3IgZW1iZWRkZWQgYml0bWFwcy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDQtMTUgIGJ5dGVzb2Z0d2FyZSAgPGJ5dGVzb2Z0d2FyZUBidGludGVybmV0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgsIHNyYy9iYXNlL2Z0c3RyZWFtLmMKCShGVF9TdHJlYW1fUmVhZEZpZWxkcyk6IE1vcmUgZml4ZXMgdXNpbmcgRlRfQ0hBUl9CSVQuCgoyMDA0LTA0LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIChGVF9DSEFSX0JJVCk6IE5ldyBtYWNyby4KCjIwMDQtMDQtMTQgIEFsZXggU3RyZWxuaWtvdiAgPHB0a3R5cmZAbWFpbC5ydT4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc25vZGVfbG9hZCk6IEluaXRpYWxpemUgYCphc2l6ZScgaW4gY2FzZQoJb2YgZXJyb3IuCgoyMDA0LTA0LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIFtfX0dOVUNfX106IERlZmluZSBPU19JTkxJTkUuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogRG9uJ3QgdHJ5IHRvIHJlbW92ZSBgLWFuc2knIGNvbXBpbGF0aW9uCglzd2l0Y2ggb24gdGhlIE1hYy4KCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogUmVnZW5lcmF0ZWQgd2l0aCBgbGlidG9vbGl6ZSAtLWZvcmNlCgktLWNvcHknIGZyb20gbGlidG9vbCAxLjUuNi4KCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogUmVnZW5lcmF0ZWQgd2l0aCBgYWNsb2NhbCAtSSAuJyBmcm9tCglhdXRvbWFrZSAxLjhhLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkIHdpdGggYXV0b2NvbmYgMi41OWEuCgoyMDA0LTA0LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBVc2UgQ0hBUl9CSVQgdG8gZGVmaW5lCglzaXplIG9mIEZUX1NJWkVPRl94eHguCgoyMDA0LTA0LTEyICBDaGlzYXRvIFlhbWF1Y2hpICA8Y3lhbWF1Y2hAYS5waHlzLm5hZ295YS11LmFjLmpwPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFRUX0ZpbmRfU0JpdF9JbWFnZV9GdW5jLAoJVFRfTG9hZF9TQml0X01ldHJpY3NfRnVuYyk6IE5ldyB0eXBlZGVmcy4KCShTRk5UX0ludGVyZmFjZSk6IEFkZCBmaW5kX3NiaXRfaW1hZ2UgYW5kIGxvYWRfc2JpdF9tZXRyaWNzLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9pbnRlcmZhY2UpOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC90dHNiaXQuaCAodHRfZmluZF9zYml0X2ltYWdlLCB0dF9sb2FkX3NiaXRfbWV0cmljcyk6IE5ldwoJZGVjbGFyYXRpb25zLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoZmluZF9zYml0X2ltYWdlKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZpbmRfc2JpdF9pbWFnZSk6IFRoaXMuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKGxvYWRfc2JpdF9tZXRyaWNzKTogUmVuYW1lZCB0by4uLgoJKHR0X2xvYWRfc2JpdF9tZXRyaWNzKTogVGhpcy4KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoyMDA0LTA0LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBjb25maWd1cmU6IEFjY2VwdCBtYWtlcHAgYWxzby4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogVXNlIHByb3BlciBwYXRoIHRvIHVuaXgtZGVmLm1rLgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoQlVJTERfRElSLCBQTEFURk9STSk6IFJlbW92ZS4KCSogYnVpbGRzL3VuaXgvdW5peC5tayAoQlVJTERfRElSLCBQTEFURk9STSk6IERlZmluZS4KCVVzZSBCVUlMRF9ESVIuCgoJKiBkb2NzL0lOU1RBTEwsIGRvY3MvSU5TVEFMTC5HTlUsIGRvY3MvSU5TVEFMTC5VTlg6IFVwZGF0ZQoJZG9jdW1lbnRhdGlvbiBvbiBtYWtlcHAuCgoyMDA0LTA0LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvbHp3L3pvcGVuLmM6IERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggYW5kIHN5cy9zdGF0LmguCgoyMDA0LTA0LTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvbHp3L2Z0bHp3LmM6IEluY2x1ZGUgem9wZW4uaCBkZXBlbmRlbnQgb24KCUZUX0NPTkZJR19PUFRJT05fVVNFX0xaVy4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYzogcy9pbmRleC9pZHgvIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwNC0wNC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNS4yLgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuOGEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgd2l0aCBhdXRvY29uZiAyLjU5YS4KCjIwMDQtMDQtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0LW11bm1hcC5tNCAoRlRfTVVOTUFQX1BBUkFNKTogRml4IGFyZ3VtZW50cyBvZgoJQUNfQ09NUElMRV9JRkVMU0UuCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFJlZ2VuZXJhdGVkIHdpdGggYGFjbG9jYWwgLUkgLicgZnJvbQoJYXV0b21ha2UgMS44YS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCB3aXRoIGF1dG9jb25mIDIuNTlhLgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgZnJvbQoJYGNvbmZpZycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLXNoLCBidWlsZHMvdW5peC9ta2luc3RhbGxkaXJzOiBVcGRhdGVkIGZyb20KCWB0ZXhpbmZvJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcuCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKTogVXBkYXRlZC4KCjIwMDQtMDMtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglIYW5kbGUgYnJva2VuIEZOVCBmaWxlcyB3aGljaCBkb24ndCBoYXZlIGEgdHJhaWxpbmcgTlVMTCBieXRlCglpbiB0aGUgZmFjZSBuYW1lIHN0cmluZy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuaCAoRk5UX0ZvbnRSZWMpOiBOZXcgbWVtYmVyIGBmYW1pbHlfbmFtZScuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoZm50X2ZvbnRfZG9uZSk6IEZyZWUgZm9udC0+ZmFtaWx5X25hbWUuCgkoRk5UX0ZhY2VfSW5pdCk6IEFwcGVuZCBhIGZpbmFsIHplcm8gYnl0ZSB0byB0aGUgZm9udCBmYWNlIG5hbWUuCgoyMDA0LTAzLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX3NmbnRfaGVhZGVyKTogRml4IGNoYW5nZSBmcm9tCgkyMDA0LTAzLTE5LgoKMjAwNC0wMy0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgZnRiYm94Lm9iai4KCjIwMDQtMDMtMjYgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCUFkZCB2ZXJ0aWNhbCBwaGFudG9tIHBvaW50cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9Mb2FkZXJSZWMpOiBBZGQKCWB0b3BfYmVhcmluZycsIGB2YWR2YW5jZScsIGBwcDMsIGFuZCBgcHA0Jy4KCgkqIHNyYy9hdXRvZml0L2FmbG9hZGVyLmMgKGFmX2xvYWRlcl9sb2FkX2cpOiBIYW5kbGUgdHdvIG1vcmUgcG9pbnRzLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEhhbmRsZSB0d28gbW9yZSBwb2ludHMuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKEdldF9WTWV0cmljcyk6IE5ldyBmdW5jdGlvbi4KCShUVF9Mb2FkX1NpbXBsZV9HbHlwaCwgVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgpOiBIYW5kbGUgdHdvIG1vcmUKCXBvaW50cy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogVXNlIEdldF9WTWV0cmljcy4KCUhhbmRsZSB0d28gbW9yZSBwb2ludHMuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogVGhhbmtzIHRvIHZlcnRpY2FsIHBoYW50b20gcG9pbnRzIHdlIG5vdwoJY2FuIGFsd2F5cyBjb21wdXRlIGBhZHZhbmNlX2hlaWdodCcgYW5kIGB0b3BfYmVhcmluZycuCgkqIHNyYy90cnVldHlwZS90dG9ianMuaCAoVFRfU3ViZ2x5cGhSZWMpOiBBZGQgdmVydGljYWwgcGhhbnRvbQoJcG9pbnRzLgoKCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCk6IEZpeCBhbGxvY2F0aW9uIG9mCglgbmV3cycuCgoyMDA0LTAzLTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKTogRml4IGxlZnQgc2lkZSBiZWFyaW5nLgoKMjAwNC0wMy0yMCAgU3RldmUgSGFydHdlbGwgIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0PgoKCSogc3JjL2NhY2hlL2Z0Y21ydS5jIChGVENfTXJ1TGlzdF9SZW1vdmVTZWxlY3Rpb24pOiBIYW5kbGUgYSBOVUxMCgl2YWx1ZSBmb3IgYHNlbGVjdGlvbicgYXMgYHNlbGVjdCBhbGwnLgoKMjAwNC0wMy0xOSAgU3RldmUgSGFydHdlbGwgIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0PgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9zZm50X2hlYWRlcik6IFJlamVjdCBmYWNlX2luZGV4Cgl2YWx1ZXMgPiAwIGlmIGxvYWRpbmcgbm9uLVRUQyBmb250cy4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IFNldCBwb3NpdGl2ZSBmYWNlX2luZGV4Cgl0byB6ZXJvIGJlZm9yZSBjYWxsaW5nIEZUX09wZW5fRmFjZS4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIEphbWZpbGUsIHZtc19tYWtlLmNvbSwgYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUvdmNwcm9qLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6CglBZGQgTFpXIG1vZHVsZS4KCgkqIEphbWZpbGUuaW46IFJlbW92ZWQuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBzL01JTi9GVF9NSU4vLCBzL01BWC9GVF9NQVgvLAoJcy9BQlMvRlRfQUJTLy4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2RpY3QpLCBzcmMvcGNmL3BjZmRyaXZyLmMKCShQQ0ZfRmFjZV9Jbml0KTogVXNlIEZUX0VSUk9SX0JBU0UuCgoyMDA0LTAzLTA0ICBBbGJlcnQgQ2hpbiAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCglBZGQgc3VwcG9ydCBmb3IgUENGIGZvbnRzIGNvbXByZXNzZWQgd2l0aCBMWlcgKGV4dGVuc2lvbiAucGNmLlosCgljcmVhdGVkIHdpdGggYGNvbXByZXNzJykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBkZXZlbC9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9VU0VfTFpXKTogTmV3IG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGx6dy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfTFpXX0gpOiBOZXcgbWFjcm8gZm9yCglmdGx6dy5oLgoKCSogc3JjL2x6dy8qOiBOZXcgZmlsZXMuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IEluY2x1ZGUgRlRfTFpXX0guCgkoUENGX0ZhY2VfSW5pdCk6IFRyeSBMWlcgYWxzby4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiBzLzAvR3ppcF9FcnJfT2svIHdoZXJlIGFwcHJvcHJpYXRlLgoJQmVhdXRpZnkuCgoyMDA0LTAzLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5jIChwc2hfaGludF90YWJsZV9pbml0KTogU2ltcGxpZnkgY29kZS4KCjIwMDQtMDMtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGQgZW1iZWRkZWQgYml0bWFwIHN1cHBvcnQgdG8gQ0ZGIGRyaXZlci4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oIChDRkZfU2l6ZVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9idWlsZGVyX2luaXQpOiBVcGRhdGVkLgoJKGNmZl9zbG90X2xvYWQpOiBVcGRhdGVkLgoJW1RUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQU106IExvYWQgc2JpdC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChzYml0X3NpemVfcmVzZXQpCglbVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTXTogTmV3IGZ1bmN0aW9uLgoJKGNmZl9zaXplX2dldF9nbG9iYWxzX2Z1bmNzLCBjZmZfc2l6ZV9kb25lLCBjZmZfc2l6ZV9pbml0KTogVXBkYXRlZC4KCShjZmZfc2l6ZV9yZXNldCk6IFVwZGF0ZWQuCglbVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTXTogQ2FsbCBzYml0X3NpemVfcmVzZXQuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKExvYWRfR2x5cGgpOiBVcGRhdGVkLgoJKGNmZl9kcml2ZXJfY2xhc3MpOiBVc2UgQ0ZGX1NpemVSZWMuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTAzLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19zY2FsZV93aWR0aHMpOiBEb24ndCB1c2UKCUZUX1JvdW5kRml4IGJ1dCBGVF9QSVhfUk9VTkQuCgkocHNoX2JsdWVzX3NuYXBfc3RlbSk6IERvbid0IHVzZSBibHVlX3NoaWZ0IGJ1dCBibHVlX3RocmVzaG9sZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMgKFBTSF9TVFJPTkdfVEhSRVNIT0xEX01BWElNVU0pOiBOZXcgbWFjcm8uCgkocHNoX2dseXBoX2ZpbmRfc3RyaW5nX3BvaW50cyk6IFVzZSBQU0hfU1RST05HX1RIUkVTSE9MRF9NQVhJTVVNLgoJKHBzaF9nbHlwaF9maW5kX2JsdWVfcG9pbnRzKTogTmV3IGZ1bmN0aW9uLiAgTmVlZGVkIGZvciBmb250cyBsaWtlCglwMDUyMDAzbC5wZmIgKFVSVyBQYWxsYWRpbyBMIFJvbWFuKSB3aGljaCBoYXZlIGZsZXggY3VydmVzIGF0IHRoZQoJYmFzZSBsaW5lIHdpdGhpbiBibHVlIHpvbmVzLCBidXQgdGhlIGZsZXggY3VydmVzIGFyZW4ndCBjb3ZlcmVkIGJ5CgloaW50cy4KCShwc19oaW50c19hcHBseSk6IFVzZSBwc2hfZ2x5cGhfZmluZF9ibHVlX3BvaW50cy4KCjIwMDQtMDItMjcgIEdhcnJpY2sgTWVla2VyICA8Z2Fycmlja0BkaWdpdGFsYW5hcmNoeS5jb20+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEZpeCBjb21waWxlciBmbGFncyBmb3IKCWAtLXdpdGgtb2xkLW1hYy1mb250cycuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBzL1RBUkdFVF9BUElfTUFDX0NBUkJPTi8hVEFSR0VUX0FQSV9NQUNfT1M4Ly4KCShGVF9OZXdfRmFjZV9Gcm9tX1Jlc291cmNlKTogTmV3IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXNlIEZUX05ld19GYWNlX0Zyb21fUmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMpOiBVc2UgRlRfTmV3X0ZhY2VfRnJvbV9SZXNvdXJjZS4KCVtfX01XRVJLU19fXTogRG9uJ3QgaW5jbHVkZSBGU3BfZm9wZW4uaC4KCjIwMDQtMDItMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IEZpeCB2YWx1ZSBvZgoJYGRpbS0+c3Rkdy5jb3VudCcuCglEb24ndCBhc3NpZ24gZGVmYXVsdCB2YWx1ZXMgdG8gYmx1ZSBzY2FsZSBhbmQgYmx1ZSBzaGlmdC4KCjIwMDQtMDItMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDItMjUgIEdhcnJpY2sgTWVla2VyICA8Z2Fycmlja0BkaWdpdGFsYW5hcmNoeS5jb20+CgkgICAgU3RldmUgSGFydHdlbGwgIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0PgoKCUltcHJvdmUgTWFjT1MgZm9uZCBzdXBwb3J0LiAgUHJvdmlkZSBhIG5ldyBBUEkKCWBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYycgc2ltaWxhciB0byBgRlRfTmV3X0ZhY2UnLgoKCSogc3JjL2Jhc2UvZnRtYWMuYyBbX19NV0VSS1NfX106IEluY2x1ZGUgRlNwX2Zwb3Blbi5oLgoJU1RSRUFNX0ZJTEUgW19fTVdFUktTX19dOiBOZXcgbWFjcm8uCgkoZnRfRlNwX3N0cmVhbV9jbG9zZSwgZnRfRlNwX3N0cmVhbV9pbykgW19fTVdFUktTX19dOiBOZXcgZnVuY3Rpb25zLgoJKGZpbGVfc3BlY19mcm9tX3BhdGgpIFtfX01XRVJLU19fXTogVXBkYXRlZCAjaWYgc3RhdGVtZW50LgoJKGdldF9maWxlX3R5cGUsIG1ha2VfbHdmbl9zcGVjKTogVXNlIGBjb25zdCcgZm9yIGFyZ3VtZW50LgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogUmVtb3ZlZC4KCShjb3VudF9mYWNlX3NmbnQsIGNvdW50X2ZhY2VzKTogTmV3IGZ1bmN0aW9ucy4KCShwYXJzZV9mb25kKTogRG8gc29tZSByYW5nZSBjaGVja2luZy4KCShyZWFkX2x3Zm4pOiBDaGFuZ2UgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQuCglObyBsb25nZXIgY2FsbCBGU3BPcGVuUmVzRmlsZS4KCShPcGVuRmlsZUFzUmVzb3VyY2UpOiBOZXcgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2VfRnJvbV9MV0ZOKTogVXNlIGBjb25zdCcgZm9yIHNlY29uZCBhcmd1bWVudC4KCVVzZSBPcGVuRmlsZUFzUmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9TdWl0Y2FzZSk6IENoYW5nZSB0eXBlIG9mIHNlY29uZCBhcmd1bWVudC4KCU5vIGxvbmdlciBjYWxsIEZTcE9wZW5SZXNGaWxlLgoJTG9vcCBvdmVyIGFsbCByZXNvdXJjZSBpbmRpY2VzLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBSZW1vdmVkLgoJKEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSk6IFVzZSBgY29uc3QnIGZvciBmaXJzdCBhcmd1bWVudC4KCShSZXNvdXJjZUZvcmtTaXplKTogUmVtb3ZlZC4KCShGVF9OZXdfRmFjZSk6IFVwZGF0ZWQgdG8gdXNlIG5ldyBmdW5jdGlvbnMuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMpOiBOZXcgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmg6IFVwZGF0ZWQuCgoyMDA0LTAyLTI0ICBNYWxjb2xtIFRheWxvciAgPG10YXlsb3JAY2xlYXIubmV0Lm56PgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCkgPEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FPjoKCUhhbmRsZSBjYXNlIHdoZXJlIG91dGxpbmUtPm51bV92ZWRnZXMgaXMgemVybyB3aGlsZSBjb21wdXRpbmcgaGludGVkCgltZXRyaWNzLgoKMjAwNC0wMi0yNCAgR29yZG9uIENoaWxkcyAgPGdjaGlsZHNAcXVpY2tjdXQuY29tLmF1PgoKCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX3VuaWNvZGVfaW5pdCk6IFByb3ZpZGUgY29ycmVjdCB2YWx1ZQoJZm9yIGBjb3VudCcuCgoyMDA0LTAyLTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX1ByaXZhdGVSZWMpOiBBZGQKCWBleHBhbnNpb25fZmFjdG9yJy4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXggY29tcHV0YXRpb24KCW9mIGJsdWVzLT5ub19vdmVyc2hvb3RzIC0tIGBibHVlc19zY2FsZScgaXMgc3RvcmVkIHdpdGggYQoJbWFnbmlmaWNhdGlvbiBvZiAxMDAwLCBhbmQgYHNjYWxlJyByZXR1cm5zIGZyYWN0aW9uYWwgcGl4ZWxzLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBJbml0aWFsaXplIGBibHVlX3NoaWZ0JywKCWBibHVlX2Z1enonLCBgZXhwYW5zaW9uX2ZhY3RvcicsIGFuZCBgYmx1ZV9zY2FsZScgYWNjb3JkaW5nIHRvIHRoZQoJVHlwZSAxIHNwZWNpZmljYXRpb24uCgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogSGFuZGxlIGBFeHBhbnNpb25GYWN0b3InLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMi0yNCAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCVByb3ZpZGUgZ2VuZXJpYyBhY2Nlc3MgdG8gTWFjT1MgcmVzb3VyY2UgZm9ya3MuCgoJKiBzcmMvYmFzZS9mdHJmb3JrLmMsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oOiBOZXcKCWZpbGVzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUkZPUktfSC4KCShNYWNfUmVhZF9QT1NUX1Jlc291cmNlLCBNYWNfUmVhZF9zZm50X1Jlc291cmNlKTogUmVtb3ZlIGFyZ3VtZW50cwoJYHJlc291cmNlX2xpc3RvZmZzZXQnIGFuZCBgcmVzb3VyY2VfZGF0YScgYW5kIGFkYXB0IGNvZGUKCWFjY29yZGluZ2x5LiAgVGhlc2UgdmFsdWVzIGFyZSBjYWxjdWxhdGVkIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uCglub3cuCglBZGQgbmV3IGFyZ3VtZW50IGBvZmZzZXRzJy4KCShJc01hY1Jlc291cmNlKTogVXNlIGBGVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvJyBhbmQKCWBGVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cycuCgkobG9hZF9mYWNlX2luX2VtYmVkZGVkX3Jmb3JrKTogTmV3IGZ1bmN0aW9uLgoJKGxvYWRfbWFjX2ZhY2UpOiBVc2UgbG9hZF9mYWNlX2luX2VtYmVkZGVkX3Jmb3JrLgoJKGZ0X2lucHV0X3N0cmVhbV9uZXcpOiBSZW5hbWVkIHRvLi4uCgkoRlRfU3RyZWFtX05ldyk6IFRoaXMuICBVc2UgRlRfQkFTRV9ERUYuICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKGZ0X2lucHV0X3N0cmVhbV9mcmVlKTogUmVuYW1lZCB0by4uLgoJKEZUX1N0cmVhbV9GcmVlKTogVGhpcy4gIFVzZSBGVF9CQVNFX0RFRi4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBmdHJmb3JrLmMuCgoJKiBzcmMvYmFzZS9ydWxlcy5tayAoQkFTRV9TUkMpLCBzcmMvYmFzZS9KYW1maWxlOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9SRk9SS19IKToKCU5ldyBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGRlZCBgcmZvcmsnIGFzIGEgbmV3Cgl0cmFjZSBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBEZWNsYXJlIEZUX1N0cmVhbV9OZXcgYW5kCglGVF9TdHJlYW1fRnJlZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIGRldmVsL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLKTogTmV3IG9wdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3N0cnJjaHIpOiBOZXcgbWFjcm8uCgoyMDA0LTAyLTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogSW5jbHVkZSBGVF9GUkVFVFlQRV9ILgoKMjAwNC0wMi0yMyAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCVByb3ZpZGUgYSBzaW1wbGUgQVBJIHRvIGNvbnRyb2wgRnJlZVR5cGUncyB0cmFjaW5nIGxldmVscy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZV9HZXRfQ291bnQsCglGVF9UcmFjZV9HZXRfTmFtZSk6IE5ldyBkZWNsYXJhdGlvbnMuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKEZUX1RyYWNlX0dldF9Db3VudCwgRlRfVHJhY2VfR2V0X05hbWUpOiBOZXcKCWZ1bmN0aW9ucy4KCjIwMDQtMDItMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvZml0L2FmaGludHMuYywgc3JjL2F1dG9maXQvYWZoaW50cy5oLAoJc3JjL2F1dG9maXQvYWZsYXRpbi5jLCBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jLCBzcmMvdHlwZXMuaDogR3JhdmUKCWJ1Z3MgaGF2ZSBiZWVuIGZpeGVkLiAgVGhlIGF1dG8tZml0dGVyIHdvcmtzLCBkb2Vzbid0IGNyYXNoLCBidXQKCXN0aWxsIHByb2R1Y2VzIHVuZXhwZWN0ZWQgcmVzdWx0cy4uLgoKMjAwNC0wMi0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28uYyAoUFNIX1NUUk9OR19USFJFU0hPTEQpOiBDaGFuZ2VkIHRvIGhvbGQKCXRoZSBhY2NlcHRlZCBzaGlmdCBmb3Igc3Ryb25nIHBvaW50cyBpbiBmcmFjdGlvbmFsIHBpeGVscyAod2hpY2gKCWlzIGEgaGV1cmlzdGljIHZhbHVlKS4KCShwc2hfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKTogQ29tcHV0ZSB0aHJlc2hvbGQgZm9yCglwc2hfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludHMuCgkocHNoX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnQpOiBBZGQgcGFyYW1ldGVyIHRvIHBhc3MgdGhyZXNob2xkLgoKMjAwNC0wMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19tYXNrX3RhYmxlX3NldF9iaXRzKTogRG9uJ3QgY2FsbAoJcHNfbWFza190YWJsZV9hbGxvYyBidXQgcHNfbWFza190YWJsZV9sYXN0LgoJKHBzX2hpbnRzX3QybWFzayk6IFVzZSBjb3JyZWN0IHBvc2l0aW9uIGFuZCBudW1iZXIgZm9yIHZlcnRpY2FsCglhbmQgaG9yaXpvbnRhbCBoaW50ZXIgbWFzayBiaXRzLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRzdHJva2UuYyAoRlRfR2x5cGhfU3Ryb2tlQm9yZGVyKTogRml4IGVudW0gaGFuZGxpbmcuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9jbWFwX2luZm8pOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDQtMDItMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRG9jdW1lbnQgRlRfTE9BRF9UQVJHRVRfWFhYIHByb3Blcmx5LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChmdF9iaXRtYXBfZ2x5cGhfY2xhc3MsCglmdF9vdXRsaW5lX2dseXBoX2NsYXNzKTogVGFnIHdpdGggRlRfQ0FMTEJBQ0tfVEFCTEVfREVGLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyKTogSGFuZGxlCglGVF9SRU5ERVJfTU9ERV9MSUdIVC4KCjIwMDQtMDItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGaXggY2FsbGJhY2sgZnVuY3Rpb25zIGluIGNhY2hlIG1vZHVsZS4KCgkqIHNyYy9jYWNoZS9mdGNjYmFjay5oOiBOZXcgZmlsZSBmb3IgY2FsbGJhY2sgZGVjbGFyYXRpb25zLgoKCSogc3JjL2NhY2hlL2Z0Y2Jhc2ljLmMgKGZ0Y19iYXNpY19mYW1pbHlfY29tcGFyZSwKCWZ0Y19iYXNpY19mYW1pbHlfaW5pdCwgZnRjX2Jhc2ljX2ZhbWlseV9nZXRfY291bnQsCglmdGNfYmFzaWNfZmFtaWx5X2xvYWRfYml0bWFwLCBmdGNfYmFzaWNfZmFtaWx5X2xvYWRfZ2x5cGgsCglmdGNfYmFzaWNfZ25vZGVfY29tcGFyZV9mYWNlaWQpOiBVc2UgRlRfQ0FMTEJBQ0tfREVGLgoJKGZ0Y19iYXNpY19pbWFnZV9mYW1pbHlfY2xhc3MsIGZ0Y19iYXNpY19pbWFnZV9jYWNoZV9jbGFzcywKCWZ0Y19iYXNpY19zYml0X2ZhbWlseV9jbGFzcywgZnRjX2Jhc2ljX3NiaXRfY2FjaGVfY2xhc3MpOgoJVXNlIEZUX0NBTExCQUNLX1RBQkxFX0RFRiBhbmQgbG9jYWwgd3JhcHBlciBmdW5jdGlvbnMuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYzogSW5jbHVkZSBmdGNjYmFjay5oLgoJKGZ0Y19jYWNoZV9pbml0LCBmdGNfY2FjaGVfZG9uZSk6IE5ldyB3cmFwcGVyIGZ1bmN0aW9ucyB3aGljaCB1c2UKCUZUX0xPQ0FMX0RFRi4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEluY2x1ZGUgZnRjY2JhY2suaC4KCShmdGNfY21hcF9jYWNoZV9jbGFzcyk6IFVzZSBsb2NhbCB3cmFwcGVyIGZ1bmN0aW9ucy4KCgkqIHNyYy9jYWNoZS9mdGNnbHlwaC5jOiBJbmNsdWRlIGZ0Y2NiYWNrLmguCgkoZnRjX2dub2RlX2NvbXBhcmUsIGZ0Y19nY2FjaGVfaW5pdCwgZnRjX2djYWNoZV9kb25lKTogTmV3IHdyYXBwZXIKCWZ1bmN0aW9ucyB3aGljaCB1c2UgRlRfTE9DQUxfREVGLgoKCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmM6IEluY2x1ZGUgZnRjY2JhY2suaC4KCShmdGNfaW5vZGVfZnJlZSwgZnRjX2lub2RlX25ldywgZnRjX2lub2RlX3dlaWdodCk6IE5ldyB3cmFwcGVyCglmdW5jdGlvbnMgd2hpY2ggdXNlIEZUX0xPQ0FMX0RFRi4KCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfc2l6ZV9saXN0X2NsYXNzLCBmdGNfZmFjZV9saXN0X2NsYXNzKToKCVVzZSBGVF9DQUxMQkFDS19UQUJMRV9ERUYuCgoJKiBzcmMvY2FjaGU7L2Z0Y3NiaXRzLmM6IEluY2x1ZGUgZnRjY2JhY2suaC4KCShmdGNfc25vZGVfZnJlZSwgZnRjX3Nub2RlX25ldywgZnRjX3Nub2RlX3dlaWdodCwKCWZ0Y19zbm9kZV9jb21wYXJlKTogTmV3IHdyYXBwZXIgZnVuY3Rpb25zIHdoaWNoIHVzZSBGVF9MT0NBTF9ERUYuCgoJKiBzcmMvY2FjaGUvcnVsZXMubWsgKENBQ0hFX0RSVl9IKTogQWRkIGZ0Y2NiYWNrLmguCgoyMDA0LTAyLTE3ICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmggKEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSk6IEZpeCBhIHR5cG8KCShGVF9FWFBPUlRfREVGIC0+IEZUX0VYUE9SVCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0eGY4Ni5oIChGVF9HZXRfWDExX0ZvbnRfRm9ybWF0KTogRGl0dG8uCgoyMDA0LTAyLTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSk6IEZpeCB0eXBvLgoKMjAwNC0wMi0xNCAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYzogSW5jbHVkZSBlcnJuby5oLgoJKGZ0X2Nsb3NlX3N0cmVhbSk6IFJlbmFtZWQgdG8uLi4KCShmdF9jbG9zZV9zdHJlYW1fYnlfbXVubWFwKTogVGhpcy4KCShmdF9jbG9zZV9zdHJlYW1fYnlfZnJlZSk6IE5ldyBmdW5jdGlvbi4KCShGVF9TdHJlYW1fT3Blbik6IFVzZSBmYWxsYmFjayBtZXRob2QgaWYgbW1hcCBmYWlscy4KCVVzZSBwcm9wZXIgZnVuY3Rpb24gZm9yIGNsb3NpbmcgdGhlIHN0cmVhbS4KCjIwMDQtMDItMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZGljdCk6IEluaXRpYWxpemUgYHN0YXJ0X2JpbmFyeScuCgoyMDA0LTAyLTEzICBSb2JlcnQgRXRoZXJpZGdlICA8cm9iZXJ0ZUBzdGNjLmNjLnR4LnVzPgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpLCBzcmMvdHlwZTEvdDFvYmpzLmMKCShUMV9GYWNlX0luaXQpLCBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfaW5pdCk6IEZpeCBjb21wdXRhdGlvbgoJb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoKMjAwNC0wMi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYKCXBwZW0gdmFsdWVzIGRvbid0IGNoYW5nZS4gIFN1Z2dlc3RlZCBieSBHcmFoYW0gQXNoZXIuCgoyMDA0LTAyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2ZhY2Vfb3Blbik6IEFsd2F5cyBhbGxvY2F0ZQoJZmFjZS0+Y2lkX3N0cmVhbSBzbyB0aGF0IHdlIGNhbiBkZWFsbG9jYXRlIGl0IHNhZmVseS4KCjIwMDQtMDItMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtlIHRoZSBQUyBwYXJzZXIgbW9yZSB0b2xlcmFudCB3LnIudC4gbm9uLXN0YW5kYXJkIGZvbnQgZGF0YS4gIEluCglnZW5lcmFsLCBhbiBlcnJvciBpcyBvbmx5IHJlcG9ydGVkIGluIGNhc2Ugb2YgYSBzeW50YXggZXJyb3I7IGEKCXdyb25nIHR5cGUgaXMgbm93IHNpbXBseSBpZ25vcmVkIChpZiBwb3NzaWJsZSkuICBUbyBiZSBpbmRlcGVuZGVudAoJb2YgdGhlIG9yZGVyIG9mIHZhcmlvdXMgTU0tc3BlY2lmaWMga2V5d29yZHMsIHRoZSBwYXJzZV9zaGFyZWRfZGljdAoJcm91dGluZSBoYXMgYmVlbiByZW1vdmVkIC0tIHRoZSBQUyBwYXJzZXIgaXMgbm93IGNhcGFibGUgdG8gc2tpcAoJdGhpcyBkYXRhLiAgSXQgbm8gbG9uZ2VyIGZhaWxzIG9uIHBhcnNpbmcgZS5nLgoKCSAgZHVwIC9XZWlnaHRWZWN0b3IgZXhjaCBkZWYKCglTaW5jZSB0aGUgdG9rZW4gZm9sbG93aW5nIC9XZWlnaHRWZWN0b3IgaXNuJ3QgYFsnIChzdGFydGluZyBhbgoJYXJyYXkpIGl0IGlzIHNpbXBseSBpZ25vcmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycmRlZi5oOiBEZWZpbmUgYEZUX0Vycl9JZ25vcmUnICgweEEyKSBhcyBhCgluZXcgaW50ZXJuYWwgZXJyb3IgdmFsdWUuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2JsZW5kX2F4aXNfdHlwZXMsCglwYXJzZV9ibGVuZF9kZXNpZ25fcG9zaXRpb25zLCBwYXJzZV9ibGVuZF9kZXNpZ25fbWFwKTogUmV0dXJuCglUMV9FcnJfSWdub3JlIGlmIG5vIHByb3BlciBhcnJheSBpcyBmb2xsb3dpbmcgdGhlIGtleXdvcmQuCgkocGFyc2Vfd2VpZ2h0X3ZlY3Rvcik6IFVzZSBUMV9Ub1Rva2VuQXJyYXksIGluaXRpYWxpemluZyBgYmxlbmQnCglzdHJ1Y3R1cmUsIGlmIG5lY2Vzc2FyeS4KCVJldHVybiBUMV9FcnJfSWdub3JlIGlmIG5vIHByb3BlciBhcnJheSBpcyBmb2xsb3dpbmcgdGhlIGtleXdvcmQuCgkocGFyc2Vfc2hhcmVkX2RpY3QpOiBSZW1vdmVkLgoJKHBhcnNlX2VuY29kaW5nKTogU2V0IHBhcnNlci0+cm9vdC5lcnJvciB0byByZXR1cm4gVDFfRXJyX0lnbm9yZQoJaWYgbm8gcmVzdWx0IGNhbiBiZSBvYnRhaW5lZC4KCUNoZWNrIGZvciBlcnJvcnMgYmVmb3JlIGFjY2Vzc2luZyBgZWxlbWVudHMnIGFycmF5LgoJKHQxX2tleXdvcmRzKTogUmVtb3ZlIC9zaGFyZWRkaWN0LgoJKHBhcnNlX2RpY3QpOiBSZXNldCBlcnJvciBpZiB0MV9sb2FkX2tleXdvcmQgcmV0dXJucyBUMV9FcnJfSWdub3JlLgoJU2V0IGtleXdvcmRfZmxhZyBvbmx5IGluIGNhc2Ugb2Ygc3VjY2Vzcy4KCUNoZWNrIGVycm9yIGNvZGUgaWYgc2tpcHBpbmcgYW4gdW5yZWNvZ25pemVkIHRva2VuLgoJKFQxX09wZW5fRmFjZSkgWyFUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlRdOiBDYWxsIFQxX0RvbmVfQmxlbmQKCWlmIGJsZW5kIGNvbW1hbmRzIGhhdmVuJ3Qgc2V0IHVwIGEgcHJvcGVyIE1NIGZvbnQuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkX3RhYmxlKTogUmVtb3ZlIHNwZWNpYWwKCWNvZGUgZm9yIHN5bnRoZXRpYyBmb250cy4KCVJldHVybiBQU2F1eF9FcnJfSWdub3JlIGlmIG5vIHByb3BlciB2YWx1ZSBoYXMgYmVlbiBmb3VuZC4KCjIwMDQtMDItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpCgk8Y2ZmX29wX2VuZGNoYXI+OiBQcmVzZXJ2ZSBnbHlwaCB3aWR0aCBiZWZvcmUgY2FsbGluZwoJY2ZmX29wZXJhdG9yX3NlYWMuCgoyMDA0LTAyLTA5ICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyk6IEhhbmRsZSBzcGVjaWFsCglmaXJzdCBhcmd1bWVudCBmb3IgYGhpbnRtYXNrJyBhbmQgYGNudHJtYXNrJyBvcGVyYXRvcnMgYWxzby4KCjIwMDQtMDItMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogQ2FsbCBBQ19TVUJTVCBmb3IgYGVuYWJsZV9zaGFyZWQnLAoJYGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMnLCBhbmQgYHdsJy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogTWFrZSAtLXByZWZpeCBhbmQgLS1leGVjLXByZWZpeAoJYWN0dWFsbHkgd29yay4KCVJlcG9ydCBhIHByb3BlciAtLXJwYXRoIChvciAtUikgdmFsdWUgZm9yIC0tbGlicyBhcmd1bWVudCBpZiBhCglzaGFyZWQgbGlicmFyeSBoYXMgYmVlbiBidWlsdC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDQtMDItMDcgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCwgQkRGX1NldF9QaXhlbF9TaXplKTogRml4Cgljb21wdXRhdGlvbiBvZiB2YXJpb3VzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIG1ldHJpYyB2YWx1ZXMuCgoJKiBzcmMvcGNmZHJpdnIuYyAoUENGX1NldF9QaXhlbF9TaXplKSwgc3JjL3BjZnJlYWQgKHBjZl9sb2FkX2ZvbnQpOgoJRGl0dG8uCgoyMDA0LTAyLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHN3LCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTAyLTA3ICBWaXRhbGl5IFBhc3Rlcm5hayAgPHZfYV9wYXN0ZXJuYWtAbWFpbC5ydT4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLnNsbiwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLnZjcHJvajogTmV3IGZpbGVzIGZvciBWUy5ORVQgMjAwMy4KCjIwMDQtMDItMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCAoRlRDX0NBQ0hFX0xPT0tVUF9DTVApOgoJSW5pdGlhbGl6ZSBgbm9kZScuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZGljdCk6IEluaXRpYWxpemUgYGhhdmVfaW50ZWdlcicuCgoyMDA0LTAyLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2RpY3QpOiBIYW5kbGUgYFJEJyBhbmQgYC18JyBjb21tYW5kcwoJb3V0c2lkZSBvZiAvU3VicnMgb3IgL0NoYXJTdHJpbmdzLiAgVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzCglhZGRpdGlvbmFsIGNvZGUgbWFuaXB1bGF0aW5nIHRob3NlIHR3byBhcnJheXMgc28gdGhhdCBGcmVlVHlwZQoJZG9lc24ndCByZWNvZ25pemUgdGhlbSBwcm9wZXJseS4KCShUMV9PcGVuX0ZhY2UpOiBJbXByb3ZlIGFuIGVycm9yIG1lc3NhZ2UuCgoyMDA0LTAyLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogRXhpdCBpbW1lZGlhdGVseSBpZgoJdGhlcmUgYXJlIG5vIGVsZW1lbnRzIGluIC9DaGFyU3RyaW5ncy4gIFRoaXMgaXMgbmVlZGVkIGZvciBmb250cwoJbGlrZSBPcHRpbWEtT2JsaXF1ZSB3aGljaCBub3Qgb25seSBkZWZpbmUgL0NoYXJTdHJpbmdzIGJ1dCBhY2Nlc3MgaXQKCWFsc28uCgoyMDA0LTAyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9KYW1maWxlOiBSZW1vdmluZyBgdHRjbWFwJyBmcm9tIHRoZSBsaXN0IG9mIHNvdXJjZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmggKEZUQ19DQUNIRV9MT09LVVBfQ01QKQoJPEZUQ19JTkxJTkU+OiBQcm92aWRlIG1hY3JvIHZlcnNpb24gd2hpY2ggZG9lc24ndCB1c2UgaW5saW5lIGNvZGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaCAoRlRDX0dDQUNIRV9MT09LVVBfQ01QKQoJPEZUQ19JTkxJTkU+OiBEaXR0by4KCVVzZSBGVENfTVJVTElTVF9MT09LVVBfQ01QLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21ydS5oIChGVENfTVJVTElTVF9MT09LVVBfQ01QKTogTmV3CgltYWNyby4KCShGVENfTVJVTElTVF9MT09LVVApOiBVc2UgaXQuCgoJKiBzcmMvY2FjaGUvSmFtZmlsZSAoX3NvdXJjZXMpLCBzcmMvY2FjaGUvZGVzY3JpcC5tbXM6IFVwZGF0ZWQuCgkqIHNyYy9jYWNoZS9mdGNiYXNpYy5jOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Mb29rdXBTaXplLAoJRlRDX01hbmFnZXJfTG9va3VwRmFjZSkgPEZUQ19JTkxJTkU+OiBVc2UgRlRDX01SVUxJU1RfTE9PS1VQX0NNUC4KCSogc3JjL2NhY2hlL2Z0Y21ydS5jIChGVENfTXJ1TGlzdF9GaW5kKTogRml4IGEgYnVnIChmb3VuZCBhZnRlcgoJaGVhdnkgdGVzdGluZykuCgoJKiBKYW1maWxlOiBVcGRhdGluZyBgcmVmZG9jJyB0YXJnZXQsIGFuZCBhZGRpbmcgYGF1dG9oaW50JyB0byB0aGUKCWxpc3Qgb2YgbW9kdWxlcyB0byBidWlsZC4gIEJvdGggdGhlIGF1dG9oaW50ZXIgYW5kIGF1dG9maXR0ZXIgd2lsbAoJYmUgYnVpbHQgYnkgZGVmYXVsdC4gIEJ1dCB3aGljaCBvbmUgd2lsbCBiZSB1c2VkIGlzIGRldGVybWluZWQgYnkKCXRoZSBjb250ZW50IG9mIGBmdG1vZHVsZS5oJy4KCgkqIHNyYy9hdXRvZml0Lyo6IE1hbnkgdXBkYXRlcywgYnV0IHRoZSBjb2RlIGlzIHN0aWxsIGJ1Z2d5Li4uCgoyMDA0LTAxLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9vcGVyYXRvcl9zZWFjKTogRml4IG1hZ25pdHVkZSBvZgoJYWNjZW50IG9mZnNldC4KCVVwZGF0ZSBjb2RlIHNpbWlsYXJseSB0byB0aGUgc2VhYyBzdXBwb3J0IGZvciBUeXBlIDEgZm9udHMuCgkoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpIDxjZmZfb3BfZW5kY2hhcj46IEZpeCBtYWduaXR1ZGUKCW9mIGFjY2VudCBvZmZzZXQuCglEb24ndCBoaW50IGdseXBocyB0d2ljZSBpZiBzZWFjIGlzIGVtdWxhdGVkLgoJPGNmZl9vcF9mbGV4PjogQXNzaWduIGNvcnJlY3QgcG9pbnQgdGFncy4KCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMS0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFVzZSBGVF9NRU1fTU9WRSwgbm90CglGVF9NRU1fQ09QWSwgZm9yIGNvcHlpbmcgdGhlIHByaXZhdGUgZGljdC4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMpOiBBc3NpZ24gbnVtYmVyIG9mIHN1YnJzIG9ubHkKCWluIGZpcnN0IHJ1bi4KCShwYXJzZV9jaGFyc3RyaW5ncyk6IFBhcnNlIC9DaGFyU3RyaW5ncyBpbiBzZWNvbmQgcnVuIHdpdGhvdXQKCWFzc2lnbmluZyB2YWx1ZXMuCgkocGFyc2VfZGljdCk6IFNraXAgYWxsIC9DaGFyU3RyaW5ncyBhcnJheXMgYnV0IHRoZSBmaXJzdC4gIFdlIG5lZWQKCXRoaXMgZm9yIG5vbi1zdGFuZGFyZCBmb250cyBsaWtlIGBPcHRpbWEnIHdoaWNoIGhhdmUgZGlmZmVyZW50CglvdXRsaW5lcyBkZXBlbmRpbmcgb24gdGhlIHJlc29sdXRpb24uICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8KCWd1YXJhbnRlZSB0aGF0IHdlIGdldCBmaXR0aW5nIC9TdWJycyBhbmQgL0NoYXJTdHJpbmdzIGFycmF5czsgdGhpcwoJY2FuIG9ubHkgYmUgZG9uZSBieSBhIHJlYWwgUFMgaW50ZXJwcmV0ZXIuCgoyMDA0LTAxLTI5ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbDogTmV3IGZpbGUsIGdpdmluZyBkZXRhaWxlZAoJZXhwbGFuYXRpb25zIGFib3V0IGZvcmNpbmcgQ1IrTEYgbGluZSBlbmRpbmdzIGZvciB0aGUgVkMrKyBwcm9qZWN0CglmaWxlcy4KCjIwMDQtMDEtMjIgIEdhcnJpY2sgTWVla2VyICA8Z2Fycmlja0BkaWdpdGFsYW5hcmNoeS5jb20+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX3N1YmZvbnRfbG9hZCk6IEluaXRpYWxpemUgYGRpY3QnLgoKMjAwNC0wMS0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZCBzdXBwb3J0IGZvciB0aGUgaGV4YWRpY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYmluYXJ5IGRhdGEKCXN0YXJ0ZWQgd2l0aCBgU3RhcnREYXRhJyBpbiBDSUQta2V5ZWQgVHlwZSAxIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKENJRF9GYWNlUmVjKTogQWRkIG5ldwoJbWVtYmVycyBgYmluYXJ5X2RhdGEnIGFuZCBgY2lkX3N0cmVhbScuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBVc2UgYGZhY2UtPmNpZF9zdHJlYW0nLgoJKGNpZF9oZXhfdG9fYmluYXJ5KTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShjaWRfZmFjZV9vcGVuKTogQWRkIG5ldyBhcmd1bWVudCBgZmFjZV9pbmRleCcgdG8gcmV0dXJuIHF1aWNrbHkKCWlmIGxlc3MgdGhhbiB6ZXJvLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCUNhbGwgYGNpZF9oZXhfdG9fYmluYXJ5JywgdGhlbiBvcGVuIGFuZCBhc3NpZ24gbWVtb3J5IHN0cmVhbSB0bwoJYGZhY2UtPmNpZF9zdHJlYW0nIGlmIGBwYXJzZXItPmJpbmFyeV9sZW5ndGgnIGlzIG5vbi16ZXJvLgoJKiBzcmMvY2lkL2NpZGxvYWQuaDogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9kb25lKTogRnJlZSBgYmluYXJ5X2RhdGEnIGFuZAoJYGNpZF9zdHJlYW0nLgoKCSogc3JjL2NpZC9jaWRwYXJzZS5jIChjaWRfcGFyc2VyX25ldyk6IENoZWNrIGFyZ3VtZW50cyB0bwoJYFN0YXJ0RGF0YScgYW5kIHNldCBwYXJzZXItPmJpbmFyeV9sZW5ndGggYWNjb3JkaW5nbHkuCgkqIHNyYy9jaWQvY2lkcGFyc2UuaCAoQ0lEX1BhcnNlcik6IE5ldyBtZW1iZXIgYGJpbmFyeV9sZW5ndGgnLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IFVzZSBgZmFjZS0+Y2lkX3N0cmVhbScuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA0LTAxLTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfYXRvaSk6IFJlcGxhY2VkIHdpdGguLi4KCShmdF9hdG9sKTogVGhpcy4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYzogcy9hdG9sL2Z0X2F0b2wvLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IHMvZnRfYXRvaS9mdF9hdG9sLy4KCjIwMDQtMDEtMjAgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oOiBEZWxldGUgZHVwbGljYXRlZCBkZWZpbml0aW9uIG9mCglGVENfRmFjZUlELgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X2NtYXBfaW5mbyk6IENhbGwgc2ZudCBtb2R1bGUncyBUVCBDTWFwCglJbmZvIHNlcnZpY2UgZnVuY3Rpb24gaWYgdGhlIGNtYXAgY29tZXMgZnJvbSBzZm50LiAgUmV0dXJuIDAgaWYgdGhlCgljbWFwIGlzIHN5dGhlc2l6ZWQgaW4gY2ZmIG1vZHVsZS4KCjIwMDQtMDEtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfc2l6ZV9ub2RlX2NvbXBhcmUpOiBDYWxsCglGVF9BY3RpdmF0ZV9TaXplLgoKMjAwNC0wMS0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFNraXAgZXhhY3RseSBvbmUKCUNSLCBMRiwgb3IgQ1IvTEYgYWZ0ZXIgYGVleGVjJy4KCjIwMDQtMDEtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0c2JpdC5jICh0dF9mYWNlX3NldF9zYml0X3N0cmlrZSk6IFJlbW92ZSBjb21waWxlcgoJd2FybmluZy4KCgkqIHNyYy90b29scy9kb2NtYWtlci8qOiBVcGRhdGluZyBiZWF1dGlmaWVyIHRvb2wuCgoyMDA0LTAxLTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKGZ0X29yaWVudGF0aW9uX2V4dHJlbXVtX2NvbXB1dGUpOiBGaXgKCWluZmluaXRlIGxvb3AgYnVnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZS5oOiBJbmNsdWRlIEZUX0dMWVBIX0guCgkoRlRfU3Ryb2tlcl9SZXdpbmQsIEZUX0dseXBoX1N0cm9rZSwgRlRfR2x5cGhfU3Ryb2tlQm9yZGVyKTogTmV3CglkZWNsYXJhdGlvbnMuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX09CSkVDVFNfSC4KCShGVF9PdXRsaW5lX0dldE91dHNpZGVCb3JkZXIpOiBJbnZlcnNlIHJlc3VsdC4KCShGVF9TdHJva2VyX1Jld2luZCwgRlRfR2x5cGhfU3Ryb2tlLCBGVF9HbHlwaFN0cm9rZUJvcmRlcik6IE5ldwoJZnVuY3Rpb25zLgoJKEZUX1N0cm9rZXJfRW5kU3ViUGF0aCk6IENsb3NlIHBhdGggaWYgbmVlZGVkLgoJKEZUX1N0cm9rZXJfU2V0LCBGVF9TdHJva2VyX1BhcnNlT3V0bGluZSk6IFVzZSBGVF9TdHJva2VyX1Jld2luZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoRlRDX1NjYWxlclJlYywKCUZUQ19NYW5hZ2VyX0xvb2t1cFNpemUpOiBNb3ZlZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRDX1NjYWxlclJlYywKCUZUQ19NYW5hZ2VyX0xvb2t1cFNpemUpOiBIZXJlLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL2RvY2JlYXV0eS5weTogTmV3IGZpbGUgdG8gYmVhdXRpZnkgdGhlCglkb2N1bWVudGF0aW9uIGNvbW1lbnRzIChlLmcuLCB0byBjb252ZXJ0IHRoZW0gdG8gc2luZ2xlIGJsb2NrIGJvcmRlcgoJbW9kZSkuCgkqIHNyYy90b29scy9kb2NtYWtlci9kb2NtYWtlci5weSAoZmlsZV9leGlzdHMsIG1ha2VfZmlsZV9saXN0KToKCU1vdmVkIHRvLi4uCgkqIHNyYy90b29scy9kb2NtYWtlci91dGlscy5weSAoZmlsZV9leGlzdHMsIG1ha2VfZmlsZV9saXN0KTogSGVyZS4KCjIwMDQtMDEtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCAoRlRfQVJSQVlfQ09QWSwKCUZUX0FSUkFZX01PVkUpOiBOZXcgbWFjcm9zIHRvIG1ha2UgY29weWluZyBhcnJheXMgZWFzaWVyLgoJVXBkYXRlZCBhbGwgcmVsZXZhbnQgY29kZSB0byB1c2UgdGhlbS4KCjIwMDQtMDEtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogTG9hZCBjaGFyc3RyaW5nc19pbmRleCBlYXJsaWVyLgoJVXNlIG51bWJlciBvZiBjaGFyc3RyaW5ncyBhcyBhcmd1bWVudCB0byBDRkZfTG9hZF9GRF9TZWxlY3QgKGFzCglkb2N1bWVudGVkIGluIHRoZSBDRkYgc3BlY3MpLgoKMjAwNC0wMS0xMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28uYyAocHNoX2dseXBoX2luaXQpOiBNb3ZlIGFzc2lnbm1lbnQgb2YKCWBnbHlwaC0+bWVtb3J5JyB1cCB0byBmcmVlIGFycmF5cyBwcm9wZXJseSBpbiBjYXNlIG9mIGZhaWx1cmUuCgoyMDA0LTAxLTEwICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJTWFrZSBgRlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQnIHdvcmsgd2l0aCBDRkYuICBCdWcgcmVwb3J0ZWQgYnkKCVN0ZXZlIEhhcnR3ZWxsIDxzaHNwYW1zaW5rQGNvbWNhc3QubmV0Pi4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1RUX0NNQVBfSC4KCShjZmZfc2VydmljZXMpOiBBZGRlZCBhbiBlbnRyeSBmb3IgRlRfU0VSVklDRV9JRF9UVF9DTUFQLgoJKGNmZl9nZXRfY21hcF9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGNmZl9zZXJ2aWNlX2dldF9jbWFwX2luZm8pIE5ldyBlbnRyeSBmb3IgY2ZmX3NlcnZpY2VzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBFeGl0IGxvb3AgYWZ0ZXIgYSBmb3JtYXQgbWF0Y2ggaGFzIGJlZW4gZm91bmQuCglTdWdnZXN0ZWQgYnkgU3RldmUgSGFydHdlbGwgPHNoc3BhbXNpbmtAY29tY2FzdC5uZXQ+LgoKMjAwNC0wMS0wMyAgTWFzYXRha2UgWUFNQVRPICA8amV0QGd5dmUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGRlc3Ryb3lfY2hhcm1hcHMpOiBOZXcgZnVuY3Rpb24uCgkoZGVzdHJveV9mYWNlLCBvcGVuX2ZhY2UpOiBVc2UgYGRlc3Ryb3lfY2hhcm1hcHMnLgoKMjAwNC0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNC0wMS0wMSAgTWljaGFlbCBKYW5zc29uICA8bWphbkBlbTItc29sdXRpb25zLmNvbT4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX1NpemVfU2V0X1BpeGVscyk6IEZpeCBzaWduIG9mCglzaXplLT5tZXRyaWNzLmRlc2NlbmRlci4KCjIwMDMtMTItMzEgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKQoJW0ZUX0RFQlVHX0xFVkVMX1RSQUNFXTogVXNlIGAlbGQnIGluIEZUX1RSQUNFNC4KCTxjZmZfb3BfZmxleDE+OiBDaGFuZ2UgdHlwZSBvZiBkeCBhbmQgZHkgdG8gRlRfUG9zIGFuZCByZW1vdmUKCWNhc3QgZm9yIGFjY2Vzc2luZyBhcmd1bWVudHMuCgoyMDAzLTEyLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX1NpbXBsZV9HbHlwaCk6IFJldmVydCBwcmV2aW91cwoJY2hhbmdlLiAgSXQncyBub3QgbmVjZXNzYXJ5LgoKMjAwMy0xMi0yOSAgU21pdGggQ2hhcmxlcyAgPHNtaXRoLmNoYXJsZXNAZnJlZS5mcj4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfU2ltcGxlX0dseXBoKTogSGFuZGxlIGByZXBlYXRlZAoJZmxhZ3Mgc2V0JyBjb3JyZWN0bHkuCgoyMDAzLTEyLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IEZpeCBtZW1vcnkgbGVhayBieSBkZWFsbG9jYXRpbmcKCWBmdWxsJyBhbmQgYHdlaWdodCcgcHJvcGVybHkuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpCgk8Y2ZmX29wX2hpbnRtYXNrPiBbRlRfREVCVUdfTEVWRUxfVFJBQ0VdOiBVc2UgYDB4JyBhcyBwcmVmaXggZm9yCgl0cmFjaW5nIG91dHB1dC4KCjIwMDMtMTItMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChUVF9TZXRfU0JpdF9TdHJpa2VfRnVuYyk6CglVc2UgRlRfVUludCBmb3IgcHBlbSB2YWx1ZXMuCgkqIHNyYy9zZm50L3R0c2JpdC5jICh0dF9mYWNlX3NldF9zYml0X3N0cmlrZSk6IFVzZSBGVF9VSW50IGZvcgoJcHBlbSB2YWx1ZXMuCgkqIHNyYy9zZm50L3R0c2JpdC5oOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9QaXhlbF9TaXplcyk6IERvbid0IGFsbG93IHBwZW0gdmFsdWVzCglsYXJnZXIgdGhhbiAtMEZGRkYuCgoyMDAzLTEyLTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jLCBzcmMvYmFzZS9mdGdsb2Fkci5jOiBJbmx1ZGUKCUZUX0lOVEVSTkFMX09CSkVDVFNfSC4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmMgKEZUX091dGxpbmVfR2V0SW5zaWRlQm9yZGVyLAoJRlRfT3V0bGluZV9HZXRPdXRzaWRlQm9yZGVyKTogcy9vci9vLyB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aAoJQysrIGNvbXBpbGVycy4KCgkqIHNyYy9jYWNoZS9mdGNtcnUuYywgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtcnUuaDoKCXMvc2VsZWN0L3NlbGVjdGlvbi8gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IHMvc2VsZWN0L2Z0c2VsZWN0LyB0byBhdm9pZCBwb3RlbnRpYWwKCWNvbXBpbGVyIHdhcm5pbmcuCgoyMDAzLTEyLTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoRlRDX1NOb2RlX1dlaWdodCk6CglzL0ZUQ19TQklUX0lURU1fUEVSX05PREUvRlRDX1NCSVRfSVRFTVNfUEVSX05PREUvLgoKMjAwMy0xMi0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogRml4ZWQgY29tcGlsYXRpb24gcHJvYmxlbXMgaW4gdGhlIGNhY2hlIHN1Yi1zeXN0ZW0uCgoJKiBQYXJ0aWFsIHVwZGF0ZXMgdG8gc3JjL2F1dG9maXQuCgoJKiBKYW1maWxlIChGVDJfQ09NUE9ORU5UUyk6IEFkZCBhdXRvZml0IG1vZHVsZS4KCjIwMDMtMTItMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSk6IEhhbmRsZQoJQ0lELWtleWVkIGZvbnRzLgoKMjAwMy0xMi0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfUEFEX0ZMT09SLCBGVF9QQURfUk9VTkQsCglGVF9QQURfQ0VJTCwgRlRfUElYX0ZMT09SLCBGVF9QSVhfUk9VTkQsIEZUX0NFSUwpOiBOZXcgbWFjcm9zLiAgVGhleQoJYXJlIHVzZWQgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3Mgd2l0aCB2ZXJ5IHBlZGFudGljIGNvbXBpbGVycy4KCU5vdGUgdGhhdCBgKHgpICYgLTY0JyBjYXVzZXMgYSB3YXJuaW5nIGlmICh4KSBpcyBub3Qgc2lnbmVkLiAgVXNlCglgKHgpICYgfjYzJyBpbnN0ZWFkIQoJVXBkYXRlZCBhbGwgcmVsYXRlZCBjb2RlLgoKCUFkZCBzdXBwb3J0IGZvciBleHRyYWN0aW9uIG9mIGBpbnNpZGUnIGFuZCBgb3V0c2lkZScgYm9yZGVycy4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlLmMgKEZUX1N0cm9rZXJCb3JkZXIpOiBOZXcgZW51bWVyYXRpb24uCgkoRlRfT3V0bGluZV9HZXRJbnNpZGVCb3JkZXIsIEZUX091dGxpbmVfR2V0T3V0c2lkZUJvcmRlciwKCUZUX1N0cm9rZXJfR2V0Qm9yZGVyQ291bnRzLCBGVF9TdHJva2VyX0V4cG9ydEJvcmRlcik6IE5ldyBmdW5jdGlvbnMuCgkoRlRfU3Ryb2tlQm9yZGVyUmVjKTogTmV3IGJvb2xlYW4gbWVtYmVyIGB2YWxpZCcuCgkoZnRfc3Ryb2tlX2JvcmRlcl9nZXRfY291bnRzKTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZS5oOiBVcGRhdGVkLgoKMjAwMy0xMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHdpbmZudC5oIChGVF9XaW5GTlRfSURfKik6IE5ldyBkZWZpbml0aW9ucwoJdG8gZGVzY3JpYmUgdGhlIGBjaGFyc2V0JyBmaWVsZCBpbiBGVF9XaW5GTlRfSGVhZGVyUmVjLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9GYWNlX0luaXQpOiBTZXQgZW5jb2RpbmcgdG8KCUZUX0VOQ09ESU5HX05PTkUgZXhjZXB0IGZvciBGVF9XaW5GTlRfSURfTUFDLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FbmNvZGluZyk6IEltcHJvdmUgY29tbWVudCwKCWJhc2VkIG9uIHdvcmsgYnkgRGV0bGVmIFf8cmtuZXIgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPi4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDMtMTItMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtcnUuaCAoYWRkZWQpLAoJaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGxydS5oIChyZW1vdmVkKSwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjc2JpdHMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjaW1hZ2UuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaCwKCXNyYy9jYWNoZS9mdGNtcnUuYywKCXNyYy9jYWNoZS9mdGNtYW5hZy5jLAoJc3JjL2NhY2hlL2Z0Y2NhY2hlLmMsCglzcmMvY2FjaGUvZnRjZ2x5cGguYywKCXNyYy9jYWNoZS9mdGNpbWFnZS5jLAoJc3JjL2NhY2hlL2Z0Y3NiaXRzLmMsCglzcmMvY2FjaGUvZnRjY21hcC5jLAoJc3JjL2NhY2hlL2Z0Y2Jhc2ljLmMgKGFkZGVkKSwKCXNyYy9jYWNoZS9mdGNscnUuYyAocmVtb3ZlZCk6CgoJICAqQ29tcGxldGUqIHJld3JpdGUgb2YgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gYHNvbHZlJyB0aGUKCSAgZm9sbG93aW5nIHBvaW50czoKCgkgICAgLSBhbGwgcHVibGljIEFQSXMgaGF2ZSBiZWVuIG1vdmVkIHRvIEZUX0NBQ0hFX0gsIGV2ZXJ5dGhpbmcKCSAgICAgIHVuZGVyIGBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlJyBpcyBvbmx5IG5lZWRlZCBieSBjbGllbnQKCSAgICAgIGFwcGxpY2F0aW9ucyB0aGF0IHdhbnQgdG8gaW1wbGVtZW50IHRoZWlyIG93biBjYWNoZXMKCgkgICAgLSBhIG5ldyBmdW5jdGlvbiBuYW1lZCBGVENfTWFuYWdlcl9SZW1vdmVGYWNlSUQgdG8gZGVhbAoJICAgICAgd2l0aCB0aGUgdW5pbnN0YWxsYXRpb24gb2YgRmFjZUlEcwoKCSAgICAtIHRoZSBpbWFnZSBhbmQgc2JpdCBjYWNoZSBhcmUgbm93IGFic3RyYWN0IGNsYXNzZXMsIHRoYXQKCSAgICAgIGNhbiBiZSBleHRlbmRlZCBtdWNoIG1vcmUgZWFzaWx5IGJ5IGNsaWVudCBhcHBsaWNhdGlvbnMKCgkgICAgLSBiZXR0ZXIgcGVyZm9ybWFuY2UgaW4gY2VydGFpbiBhcmVhcy4gRnVydGhlciBvcHRpbWl6YXRpb25zCgkgICAgICB0byBjb21lIHNob3J0bHkgYW55d2F5Li4uCgoJICAgIC0gdGhlIEZUQ19DTWFwQ2FjaGVfTG9va3VwIGZ1bmN0aW9uIGhhcyBjaGFuZ2VkIGl0cyBzaWduYXR1cmUsCgkgICAgICBjaGFybWFwcyBjYW4gbm93IG9ubHkgYmUgcmV0cmlldmVkIGJ5IGluZGV4CgoJICAgIC0gRlRDX01hbmFnZXJfTG9va3VwX0ZhY2UgPT4gRlRDX01hbmFnZXJfTG9va3VwRmFjZQoJICAgICAgRlRDX01hbmFnZXJfTG9va3VwX1NpemUgPT4gRlRDX01hbmFnZXJfTG9va3VwU2l6ZSAoc3RpbGwgaW4KCSAgICAgIHByaXZhdGUgaGVhZGVyIGZvciB0aGUgbW9tZW50KQoKMjAwMy0xMi0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9kaWN0KTogU3RvcCBwYXJzaW5nIGlmIGBlZXhlYycga2V5d29yZAoJaXMgZW5jb3VudGVyZWQuCgoyMDAzLTEyLTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnR5cGVzLmggKENGRl9NQVhfQ0lEX0ZPTlRTKTogSW5jcmVhc2UgdG8gMzIuICBGb3IKCWV4YW1wbGUsIHRoZSBKYXBhbmVzZSBIaXJhZ2lubyBmb250IGFscmVhZHkgY29udGFpbnMgMTUgc3ViZm9udHMuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IERlYWxsb2NhdGUgYHNpZHMnIGFycmF5IGZvcgoJQ0lELWtleWVkIGZvbnRzLgoKCSogZGV2ZWwvZnRvcHRpb24uaDogRGVmaW5lIEZUX0RFQlVHX01FTU9SWS4KCjIwMDMtMTItMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCAoVFRfQURPQkVfSURfTEFUSU5fMSk6IE5ldyBtYWNyby4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBVc2UgVFRfQURPQkVfSUQqIHZhbHVlcy4KCjIwMDMtMTItMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmdHlwZXMuaCAoQ0ZGX0ZvbnRSZWNEaWN0UmVjKTogQ2hhbmdlIHR5cGUgb2YKCWBjaWRfY291bnQnIHRvIGBGVF9VTG9uZycuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpOiBUYWtlIGNhcmUgb2YgZW1wdHkgYGNpZHMnCglhcnJheS4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfY2hhcnNldF9kb25lKTogRnJlZSBgY2lkcycgYXJyYXkuCgkoY2ZmX2ZvbnRfbG9hZCk6IENyZWF0ZSBjaWRzIGFycmF5IG9ubHkgZm9yIENJRC1rZXllZCBmb250cyB3aGljaAoJYXJlIHN1YnNldHRlZC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogQ2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBvZgoJdGhlIFBTTmFtZXMgbW9kdWxlcyBmb3Igbm9uLXB1cmUgQ0ZGcyBhbHNvLgoJU2V0IEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyBmb3IgYSBub24tcHVyZSBDRkYgYWxzbyBpZiBpdCBpc24ndAoJQ0lELWtleWVkLgoKCSogc3JjL2NmZi9ydWxlcy5tayAoQ0ZGX0RSVl9IKTogQWRkIGNmZnR5cGVzLmguCgoyMDAzLTEyLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9pbml0X2ZhY2UpOiBEb24ndCBzZXQKCUZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyBpZiB0aGUgZm9udCBjb250YWlucyBhIHZlcnNpb24gMy4wIGBwb3N0JwoJdGFibGUuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTEyLTE3ICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJQWRkIG5ldyBmdW5jdGlvbiBGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCB0byBleHRyYWN0IHRoZSBsYW5ndWFnZSBJRAoJZm9yIFRydWVUeXBlL3NmbnQgZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIChGVF9TRVJWSUNFX1RUX0NNQVBfSCk6IEFkZAoJc3Z0dGNtYXAuaC4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgdHRjbWFwMC5oLgoJKHR0X3NlcnZpY2VfZ2V0X2NtYXBfaW5mbyk6IE5ldyBzZXJ2aWNlLgoJKHNmbnRfc2VydmljZXMpOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwKl9nZXRfaW5mbyk6IE5ldyBmdW5jdGlvbnMuCgkodHRfY21hcCpfY2xhc3NfcmVjKTogQWRkIHR0X2NtYXAqX2dldF9pbmZvIG1lbWJlcnMuCgkodHRfZ2V0X2NtYXBfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL3NmbnQvdHRjbWFwMC5oOiBJbmNsdWRlIEZUX1NFUlZJQ0VfVFRfQ01BUF9ILgoJKFRUX0NNYXBfQ2xhc3NSZWMpOiBOZXcgZmllbGQgYGdldF9jbWFwX2luZm8nLgoJKHR0X2dldF9jbWFwX2luZm8pOiBOZXcgZGVjbGFyYXRpb24uCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1RUX0NNQVBfSC4KCShGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCk6IE5ldyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCk6IE5ldwoJZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoyMDAzLTEyLTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRjbWFwLmg6IFJlbW92ZWQuICBPYnNvbGV0ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChTRk5UX0ludGVyZmFjZSk6IFJlbW92ZQoJb2Jzb2xldGUgZmllbGRzIGBsb2FkX2NoYXJtYXAnIGFuZCBgZnJlZV9jaGFybWFwJy4KCShUVF9DaGFyTWFwX0xvYWRfRnVuYywgVFRfQ2hhck1hcF9GcmVlX0Z1bmMpOiBSZW1vdmVkLgoJKiBzcmMvc2ZudC9zZm50LmM6IERvbid0IGluY2x1ZGUgdHRjbWFwLmMuCgkqIHNyYy9zZm50L3J1bGVzLm1rIChTRk5UX0RSVl9TUkMpOiBEb24ndCBpbmNsdWRlIHR0Y21hcC5jLgoJKiBzcmMvc2ZudC90dGxvYWQuYzogRG9uJ3QgaW5jbHVkZSB0dGNtYXAuaC4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogRG9uJ3QgaW5jbHVkZSB0dGNtYXAuaC4KCShzZm50X2ludGVyZmFjZSk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfVGFibGVEaXJSZWMsCglUVF9DTWFwRGlyUmVjLCBUVF9DTWFwRGlyRW50cnlSZWMsIFRUX0NNYXAwLCBUVF9DTWFwMlN1YkhlYWRlclJlYywKCVRUX0NNYXAyUmVjLCBUVF9DTWFwNFNlZ21lbnQsIFRUX0NNYXA0UmVjLCBUVF9DTWFwNiwKCVRUX0NNYXBHcm91cFJlYywgVFRfQ01hcDhfMTJSZWMsIFRUX0NNYXAxMFJlYywgVFRfQ2hhck1hcF9GdW5jLAoJVFRfQ2hhck5leHRfRnVuYywgVFRfQ01hcFRhYmxlUmVjLCBUVF9DaGFyTWFwUmVjKTogUmVtb3ZlZC4KCU9ic29sZXRlLgoJKiBzcmMvY2ZmL2NmZm9ianMuaCAoQ0ZGX0NoYXJNYXBSZWMpOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgoyMDAzLTEyLTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTEyLTE1ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogYnVpbGRzL2F0YXJpLyo6IE5ldyBkaXJlY3RvcnkgZm9yIGJ1aWxkaW5nIEZyZWVUeXBlIDIgb24gQXRhcmkKCXdpdGggdGhlIFB1cmVDIGNvbXBpbGVyLgoKMjAwMy0xMi0xMiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpOiBBZGQKCWNhc3QuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX3BzX2hhc19nbHlwaF9uYW1lcyk6IEFzc3VyZSB0aGF0IHJldHVybgoJdmFsdWUgaXMgZWl0aGVyIDAgb3IgMS4KCjIwMDMtMTItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9nbHlwaF9uYW1lKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKGNmZl9nZXRfbmFtZV9pbmRleCk6IFJldHVybiBpZiBubyBQU05hbWVzIHNlcnZpY2UgaXMgYXZhaWxhYmxlLgoJKGNmZl9wc19oYXNfZ2x5cGhfbmFtZXMpOiBIYW5kbGUgQ0lELWtleWVkIGZvbnRzIGNvcnJlY3RseS4KCSogc3JjL2NmZi9jZmZ0eXBlcy5oIChDRkZfQ2hhcnNldFJlYyk6IE5ldyBmaWVsZCBgY2lkcycsIHVzZWQgZm9yCglDSUQta2V5ZWQgZm9udHMuICBUaGlzIGlzIHRoZSBpbnZlcnNlIG1hcHBpbmcgb2YgYHNpZHMnLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2NoYXJzZXRfbG9hZCk6IE5ldyBhcmd1bWVudCBgaW52ZXJ0Jy4KCUluaXRpYWxpemUgY2hhcnNldC0+Y2lkcyBpZiBgaW52ZXJ0JyBpcyBzZXQuCgkoY2ZmX2ZvbnRfbG9hZCk6IEluIGNhbGwgdG8gY2ZmX2NoYXJzZXRfbG9hZCwgc2V0IGBpbnZlcnQnIHRvIHRydWUKCWZvciBDSUQta2V5ZWQgZm9udHMuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX3Nsb3RfbG9hZCk6IEhhbmRsZSBnbHlwaCBpbmRleCBhcyBDSUQKCWFuZCBtYXAgaXQgdG8gdGhlIHJlYWwgZ2x5cGggaW5kZXguCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTEyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IERvbid0IHNldAoJRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTIGZvciBDSUQta2V5ZWQgZm9udHMuCglEb24ndCBjb25zdHJ1Y3QgYSBjbWFwIGZvciBDSUQta2V5ZWQgZm9udHMuCgoyMDAzLTEyLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVXNlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIFNJRCB2YWx1ZSAweEZGRkYgdG8gaW5kaWNhdGUgdGhhdAoJYSBkaWN0aW9uYXJ5IGVsZW1lbnQgaXMgbWlzc2luZy4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfc3ViZm9udF9sb2FkKTogSW5pdGlhbGl6ZSBhbGwgZmllbGRzCgl3aGljaCBob2xkIFNJRHMgdG8gMHhGRkZGLgoJKGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyk6IEhhbmRsZSBTSUQgdmFsdWUgMHhGRkZGLgoJSGFuZGxlIGNhc2Ugd2hlcmUgYHBzbmFtZXMnIGlzIHplcm8uCgkoY2ZmX2ZvbnRfbG9hZCk6IFVwZGF0ZWQuCglEb24ndCBsb2FkIGVuY29kaW5nIGZvciBDSUQta2V5ZWQgQ0ZGcy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogVXBkYXRlZC4KCURvbid0IGNoZWNrIGZvciBQU05hbWVzIG1vZHVsZSBpZiBmb250IGlzIENJRC1rZXllZC4KCUNvbXB1dGUgc3R5bGUgbmFtZSBwcm9wZXJseSAodXNpbmcgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIGluIHRoZQoJQ0lEIGRyaXZlcikuCglGaXggY29tcHV0YXRpb24gb2Ygc3R5bGUgZmxhZ3MuCgoJKiBzcmMvY2ZmL2NmZnRva2VuLmg6IENvbW1lbnQgb3V0IGhhbmRsaW5nIG9mIGJhc2VfZm9udF9uYW1lLgoJUmVuYW1lIGBwb3N0c2NyaXB0JyBmaWVsZCB0byBgZW1iZWRkZWRfcG9zdHNjcmlwdCcKCSogc3JjL2NmZi9jZmZ0eXBlcy5oIChDRkZfRm9udFJlY0RpY3RSZWMpOiBSZW1vdmUgYGJhc2VfZm9udF9uYW1lJwoJYW5kIGBwb3N0c2NyaXB0Jy4KCjIwMDMtMTItMTAgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGNmL3BjZmRyaXZyLmMgKHBjZl9nZXRfY2hhcnNldF9pZCk6IE5ldyBmdW5jdGlvbiAoYSBjbG9uZQoJb2YgdGhlIHNpbWlsYXIgQkRGIGZ1bmN0aW9uKS4KCShwY2Zfc2VydmljZV9iZGYpOiBVc2UgaXQuCgoyMDAzLTEyLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBTZXQgRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTCglvbmx5IGlmIGEgYHBvc3QnIHRhYmxlIGlzIHByZXNlbnQuCgoyMDAzLTEyLTA5ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChsb2FkX21hY19mYWNlKTogUmVjZW50IHZlcnNpb25zIG9mIExpbnV4CglzdXBwb3J0IE1hYydzIEhGUysgZmlsZSBzeXN0ZW0sIHRodXMgZW5hYmxlIGNvZGUgdG8gcmVhZCAvcnNyYyBvbgoJbm9uLU1hY2ludG9zaCBwbGF0Zm9ybXMgYWxzby4KCjIwMDMtMTItMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfVGFibGVSZWMpOiBDaGFuZ2UgdHlwZQoJb2YgYGxlbmd0aHMnIHRvIEZUX1B0ckRpc3QuCgkoVDFfRGVjb2RlclJlYyk6IENoYW5nZSB0eXBlIG9mIGBzdWJyc19sZW4nIHRvIEZUX1B0ckRpc3QuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9Gb250UmVjKTogQ2hhbmdlIHR5cGUKCW9mIGBzdWJyc19sZW4nIGFuZCBgY2hhcnN0cmluZ3NfbGVuJyB0byBGVF9QdHJEaXN0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKE1hY19SZWFkX1BPU1RfUmVzb3VyY2UpOiBSZXBsYWNlIGBqdW5rJwoJdmFyaWFibGUgd2l0aCBiZXR0ZXIgc29sdXRpb24uCgkoSXNNYWNSZXNvdXJjZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1hcF9sZW4nLgoJUmVwbGFjZSBganVuaycgdmFyaWFibGUgd2l0aCBiZXR0ZXIgc29sdXRpb24uCgkoRlRfT3Blbl9GYWNlKSBbIUZUX01BQ0lOVE9TSF06IEFkZCBjb25kaXRpb25hbAoJRlRfQ09ORklHX09QVElPTl9NQUNfRk9OVFMuCgoyMDAzLTEyLTA4ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcywKCWFoX2hpbnRlcl9hbGlnbl9zdHJvbmdfcG9pbnRzKTogQWRkIHNvbWUgY2FzdHMuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX09yaWVudGF0aW9uRXh0cmVtdW1SZWMpOiBDaGFuZ2UgdHlwZQoJb2YgYHBvcycgdG8gRlRfTG9uZy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChNYWNfUmVhZF9QT1NUX1Jlc291cmNlLAoJTWFjX1JlYWRfc2ZudF9SZXNvdXJjZSk6IENoYW5nZSB0eXBlIG9mIGBsZW4nIHRvIEZUX0xvbmcuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9kaWN0KTogQWRkIGNhc3QgZm9yIGBuX2tleXdvcmRzJy4KCjIwMDMtMTItMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvcmFzdGVyLnR4dDogTmV3IGZpbGUsIHRha2VuIGZyb20gRnJlZVR5cGUgMSBhbmQgY29tcGxldGVseQoJcmV2aXNlZC4KCjIwMDMtMTItMDQgIE1hc2F0YWtlIFlBTUFUTyAgPGpldEBneXZlLm9yZz4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfSW50ZXJmYWNlKTogUmVtb3ZlIEZUX1VOVVNFRCBmb3IKCXQxX2ludGVyZmFjZS4gIHQxX2ludGVyZmFjZSBpcyB1c2VkLgoKMjAwMy0xMS0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZ2V0X21ldHJpY3MpOiBSZXZlcnQgaW5jb3JyZWN0IGNoYW5nZSBvZgoJMjAwMy0xMS0yMzogRm9yIFBGUiBmb250cywgbWV0cmljcy0+eF9zY2FsZSBhbmQgbWV0cmljcy0+eV9zY2FsZSBhcmUKCXRoZSBzY2FsaW5nIHZhbHVlcyBmb3Igb3V0bGluZSB1bml0cywgbm90IGZvciBtZXRyaWMgdW5pdHMuCgoyMDAzLTExLTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYywgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaAoJKEZUX011bERpdl9Ob19Sb3VuZCk6IFN1cnJvdW5kIGNvZGUgd2l0aCBgI2lmZGVmCglUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSIC4uLiAjZW5kaWYnLgoKMjAwMy0xMS0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdl9Ob19Sb3VuZCk6IE5ldyBmdW5jdGlvbiAoMzIgYW5kCgk2NCBiaXQgdmVyc2lvbikuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IFVwZGF0ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoVFRfTVVMRElWX05PX1JPVU5EKTogTmV3IG1hY3JvLgoJKFRUX0lOVDY0KTogUmVtb3ZlZC4KCShET19ESVYpOiBVc2UgVFRfTVVMRElWX05PX1JPVU5ELgoKCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZ2V0X21ldHJpY3MpOiBEaXJlY3RseSB1c2UKCW1ldHJpY3MtPnhfc2NhbGUgYW5kIG1ldHJpY3MtPnlfc2NhbGUuCgoyMDAzLTExLTIyICBSb2dpZXIgdmFuIERhbGVuICA8Ui5DLnZhbi5EYWxlbkB1bWFpbC5sZWlkZW51bml2Lm5sPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKENVUl9GdW5jX21vdmVfb3JpZyk6IE5ldyBtYWNyby4KCShEaXJlY3RfTW92ZV9PcmlnLCBEaXJlY3RfTW92ZV9PcmlnX1gsIERpcmVjdF9Nb3ZlX09yaWdfWSk6IE5ldwoJZnVuY3Rpb25zLiAgU2ltaWxhciB0byBEaXJlY3RfTW92ZSwgRGlyZWN0X01vdmVfWCwgYW5kCglEaXJlY3RfTW92ZV9ZIGJ1dCB3aXRob3V0IHRvdWNoaW5nLgoJKENvbXB1dGVfRnVuY3MpOiBVc2UgbmV3IGZ1bmN0aW9ucy4KCgkoUm91bmRfTm9uZSwgUm91bmRfVG9fR3JpZCwgUm91bmRfVG9fSGFsZl9HcmlkLCBSb3VuZF9Eb3duX1RvX0dyaWQsCglSb3VuZF9VcF9Ub19HcmlkLCBSb3VuZF9Ub19Eb3VibGVfR3JpZCwgUm91bmRfU3VwZXIsCglSb3VuZF9TdXBlcl80NSk6IEZpeCByb3VuZGluZyBvZiB2YWx1ZSB6ZXJvLgoKCShET19ESVYpOiBEb24ndCB1c2UgVFRfTVVMRElWLgoKCShJbnNfU0hDKTogVGhpcyBpbnN0cnVjdGlvbiBhY3R1YWxseSB0b3VjaGVzIHRoZSBwb2ludHMuCgkoSW5zX01TSVJQKTogRml4IHVuZG9jdW1lbnRlZCBiZWhhdmlvdXIuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaCAoVFRfRXhlY0NvbnRleHRSZWMpOiBVcGRhdGVkLgoKMjAwMy0xMS0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9WRVJTSU9OLkRMTCwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpOiBNYWtlIG1ldHJpY3MtPnhfc2NhbGUgYW5kCgltZXRyaWNzLT55X3NjYWxlIHJlYWxseSBwcmVjaXNlLgoKCShGVF9Mb2FkX0dseXBoKTogVXBkYXRlIGNvbXB1dGF0aW9uIG9mIGxpbmVhckhvcmlBZHZhbmNlIGFuZAoJbGluZWFyVmVydEFkdmFuY2UuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoVXBkYXRlX01heCk6IFVzZSBGVF9SRUFMTE9DLgoKMjAwMy0xMS0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9maXQvKjogTW9yZSB1cGRhdGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA4LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjY6My4KCSogUkVBRE1FOiBVcGRhdGVkLgoKMjAwMy0xMS0xMyAgSm9obiBBLiBCb3lkIEpyLiAgPGphYm95ZGpyQG5ldHdhbGsuY29tPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChiZGZfaW50ZXJwcmV0X3N0eWxlKSwgc3JjL3BjZi9wY2ZyZWFkLmMKCShwY2ZfaW50ZXJwcmV0X3N0eWxlKTogUmVwbGFjZSBzcGFjZXMgd2l0aCBkYXNoZXMgaW4gcHJvcGVydGllcwoJU0VUV0lEVEhfTkFNRSBhbmQgQUREX1NUWUxFX05BTUUgdG8gc2ltcGxpZnkgcGFyc2luZy4KCjIwMDMtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDMtMTEtMTEgIEpvaG4gQS4gQm95ZCBKci4gIDxqYWJveWRqckBuZXR3YWxrLmNvbT4KCglIYW5kbGUgU0VUV0lEVEhfTkFNRSBhbmQgQUREX1NUWUxFX05BTUUgcHJvcGVydGllcyBmb3IgQkRGIGFuZCBQQ0YKCWZvbnRzLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChiZGZfaW50ZXJwcmV0X3N0eWxlKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShCREZfRmFjZV9Jbml0KTogRG9uJ3QgaGFuZGxlIHN0eWxlIHByb3BlcnRpZXMgYnV0IGNhbGwKCWJkZl9pbnRlcnByZXRfc3R5bGUuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2ludGVycHJldF9zdHlsZSk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkocGNmX2xvYWRfZm9udCk6IERvbid0IGhhbmRsZSBzdHlsZSBwcm9wZXJ0aWVzIGJ1dCBjYWxsCglwY2ZfaW50ZXJwcmV0X3N0eWxlLgoKMjAwMy0xMS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjcgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA3LgoKCSogYnVpbGRzL3VuaXgvZnQydW5peC5oOiBGaXggY29tbWVudHMuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogU3luY2hyb25pemVkIHdpdGggQU5TSSB2ZXJzaW9uLgoJVXNlIGAjdW5kZWYnIGluIHRlbXBsYXRlcyBhcyByZWNvbW1lbmRlZCBpbiB0aGUgYXV0b2NvbmYKCWRvY3VtZW50YXRpb24uCglTaW5jZSByZWFsIGAjdW5kZWYnIGxpbmVzIGRvbid0IHN1cnZpdmUgZHVyaW5nIGNvbmZpZ3VyYXRpb24sIHVzZQoJYC91bmRlZicgaW5zdGVhZDsgdGhlIHBvc3Rwcm9jZXNzaW5nIGZhY2lsaXR5IG9mIHRoZQoJQUNfQ09ORklHX0hFQURFUlMgYXV0b2NvbmYgbWFjcm8gY29udmVydHMgdGhlbSB0byBgI3VuZGVmJy4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwpOiBJbnN0YWxsIFVuaXggdmVyc2lvbiBvZgoJYGZ0Y29uZmlnLmgnLgoKCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoQ0ZMQUdTKTogU2V0IEZUX0NPTkZJR19DT05GSUdfSCBtYWNybwoJdG8gaW5jbHVkZSB0aGUgY29ycmVjdCBgZnRjb25maWcuaCcgZmlsZS4KCgkqIGJ1aWxkcy91bml4L2Z0LW11bm1hcC5tNCAoRlRfTVVOTUFQX0RFQ0wpOiBSZW1vdmVkLgoJKEZUX01VTk1BUF9QQVJBTSk6IFVwZGF0ZWQgc3ludGF4IHRvIGF1dG9jb25mIDIuNTkuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IFVwZGF0ZWQgc3ludGF4IHRvIGF1dG9jb25mIDIuNTkuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFVzZSBBQ19DT05GSUdfSEVBREVSUyBpbnN0ZWFkIG9mCglBQ19DT05GSUdfSEVBREVSIHRvIGNyZWF0ZSBmdGNvbmZpZy5oLCBhbmQgdXNlIHNlY29uZCBhcmd1bWVudAoJdG8gcmVwbGFjZSBgL3VuZGVmJyB3aXRoIGAjdW5kZWYnLgoJRG9uJ3QgdXNlIEZUX01VTk1BUF9ERUNMIGJ1dCBBQ19DSEVDS19ERUNMUyB0byBjaGVjayBmb3IgbXVubWFwLgoJVXNlIEFTX0hFTFBfU1RSSU5HIGluIEFDX0FSR19XSVRILgoJVXBkYXRlIHN5bnRheCB0byBhdXRvY29uZiAyLjU5LgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNS4KCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogUmVnZW5lcmF0ZWQgd2l0aCBgYWNsb2NhbCAtSSAuJyBmcm9tCglhdXRvbWFrZSAxLjcuOC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCB3aXRoIGF1dG9jb25mIDIuNTkuCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCBmcm9tCglgY29uZmlnJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC1zaCwgYnVpbGRzL3VuaXgvbWtpbnN0YWxsZGlyczogVXBkYXRlZCBmcm9tCglgdGV4aW5mbycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oOiBTeW5jaHJvbml6ZWQgd2l0aCBBTlNJIHZlcnNpb24uCgoJKiBkb2NzL0NVU1RPTUlaRTogRml4IGRvY3VtZW50YXRpb24gZXJyb3IuCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTCwgZG9jcy9yZWxlYXNlOiBVcGRhdGVkLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpOiBVcGRhdGVkIC0tdGl0bGUuCgoyMDAzLTExLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbnN0YWxsOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgoyMDAzLTExLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfU0ZOVF9ILgoJKHNmbnRfc2VydmljZV9zZm50X3RhYmxlKTogTmV3IHNlcnZpY2UuCgkoc2ZudF9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBkb2NzL2xpY2Vuc2UudHh0OiBSZXdvcmRlZC4KCjIwMDMtMTEtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvKjogQWRkIGEgZ3VhcmQgdG8gYWxsIHB1YmxpYyBoZWFkZXIgZmlsZXMgd2hpY2gKCWxvYWQgRlRfRlJFRVRZUEVfSCB0byByZWplY3QgZnJlZXR5cGUuaCBmcm9tIEZyZWVUeXBlIDEuCgoyMDAzLTExLTAyICBQYXRyaWNrIFdlbGNoZSAgPHBybHcxQG5ld24uY2FtLmFjLnVrPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00LCBidWlsZHMvdW5peC9mdC1tdW5tYXAubTQ6IFByb3RlY3QKCWZpcnN0IGFyZ3VtZW50IG9mIEFDX0RFRlVOIHdpdGggYnJhY2tldHMgdG8gYXZvaWQgcG9zc2libGUKCWV4cGFuc2lvbi4KCjIwMDMtMTEtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaDogRG9uJ3QgaW5jbHVkZSBzdGRkZWYuaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4IGNoZWNrIGZvciBmdDJidWlsZC5oLgoKMjAwMy0xMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDaGVjayB0aGF0IGZ0MmJ1aWxkLmggaGFzIGJlZW4KCWxvYWRlZCBmaXJzdC4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IEZpeCBpbmNvcnJlY3RseSBhcHBsaWVkCglwYXRjaC4KCjIwMDMtMTAtMzEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0dldF9QU19Gb250X0luZm8sIEZUX0hhc19QU19HbHlwaF9OYW1lcyk6CglGaXggcGFyYW1ldGVyIG9yZGVyIGluIGNhbGxzIHRvIEZUX0ZBQ0VfRklORF9TRVJWSUNFLgoKMjAwMy0xMC0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaAoJKEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19IKTogUmVtb3ZlZC4gIFVudXNlZC4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX3NlcnZpY2VzKTogVXBkYXRlZC4KCjIwMDMtMTAtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYmRmdHlwZXMuaDogUmVtb3ZlZC4gIE9ic29sZXRlLgoJKiBzcmMvYmFzZS9mdGJkZi5jOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBNb3ZlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnR5cGVzLmg6IFRoaXMgcGxhY2Ugc2luY2Ugbm8gb3RoZXIgbW9kdWxlIG5lZWRzIHRvCglrbm93IGFib3V0IHRob3NlIHR5cGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oOiBNb3ZlZCB0by4uLgoJKiBzcmMvdHlwZTQyL3Q0MnR5cGVzLmg6IFRoaXMgcGxhY2Ugc2luY2Ugbm8gb3RoZXIgbW9kdWxlIG5lZWRzIHRvCglrbm93IGFib3V0IHRob3NlIHR5cGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oOiBJbmNsdWRlIEZUX0JERl9ILgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzbmFtZS5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaDogVGhpcy4KCVVwZGF0ZWQgYEZUX1NlcnZpY2VfUHNOYW1lcycgLT4gYEZUX1NlcnZpY2VfUHNDTWFwcycgYW5kCglgUE9TVFNDUklQVF9OQU1FUycgLT4gYFBPU1RTQ1JJUFRfQ01BUFMnIGV2ZXJ5d2hlcmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmg6IE5ldyBmaWxlLCBwcm92aWRpbmcKCVBvc3RTY3JpcHQgaW5mbyBzZXJ2aWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfU0VSVklDRV9QT1NUU0NSSVBUX0NNQVBTX0gsCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19IKTogTmV3IG1hY3JvcyBmb3Igc3Zwc2NtYXAuaCBhbmQKCXN2cHNpbmZvLmguCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0gsCglGVF9JTlRFUk5BTF9DRkZfVFlQRVNfSCwgRlRfSU5URVJOQUxfQkRGX1RZUEVTX0gpOiBSZW1vdmVkLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEUxX1RZUEVTX0ggYW5kCglGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSCBidXQgRlRfSU5URVJOQUxfU0VSVklDRV9IIGFuZAoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCShGVF9HZXRfUFNfRm9udF9JbmZvLCBGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOiBVc2UgbmV3CglQT1NUU0NSSVBUX0lORk8gc2VydmljZS4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19ILgoJKGNmZl9wc19oYXNfZ2x5cGhfbmFtZXMpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX3NlcnZpY2VfcHNfaW5mbyk6IE5ldyBzZXJ2aWNlLgoJKGNmZl9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuaDogRG9uJ3QKCWluY2x1ZGUgRlRfSU5URVJOQUxfQ0ZGX1RZUEVTX0ggYnV0IGNmZnR5cGVzLmggZGlyZWN0bHkuCgoJKiBzcmMvY2lmL2NpZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCShjaWRfcHNfZ2V0X2ZvbnRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShjaWRfc2VydmljZV9wc19pbmZvKTogTmV3IHNlcnZpY2UuCgkoY2lkX3NlcnZpY2VzKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0guCgkodDFfcHNfZ2V0X2ZvbnRfaW5mbywgdDFfcHNfaGFzX2dseXBoX25hbWVzKTogTmV3IGZ1bmN0aW9ucy4KCSh0MV9zZXJ2aWNlX3BzX2luZm8pOiBOZXcgc2VydmljZS4KCSh0MV9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCSh0NDJfcHNfZ2V0X2ZvbnRfaW5mbywgdDQyX3BzX2hhc19nbHlwaF9uYW1lcyk6IE5ldyBmdW5jdGlvbnMuCgkodDQyX3NlcnZpY2VfcHNfaW5mbyk6IE5ldyBzZXJ2aWNlLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0gKCWJ1dCB0NDJ0eXBlcy5oIGRpcmVjdGx5LgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNuYW1lc19pbnRlcmZhY2UsIHBzbmFtZXNfc2VydmljZXMpOgoJUmVuYW1lZCB0by4uLgoJKHBzY21hcHNfaW50ZXJmYWNlLCBwc2NtYXBzX3NlcnZpY2VzKTogVGhpcy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoKCgkqIHNyYy9nemlwL2luZmJsb2NrLmMgKGluZmxhdGVfYmxvY2tzKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAzLTEwLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogSGFuZGxlIGAvRW5jb2RpbmcgWyAuLi4gXScuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogVGVzdCB3aGV0aGVyIGBlZXhlYycKCWlzIHJlYWwuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9lbmNvZGluZyk6IEltcHJvdmUgYm91bmRhcnkKCWNoZWNraW5nIHdoaWxlIHBhcnNpbmcuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTEwLTIxICBKb3NzZWxpbiBNb3VldHRlICA8am9zc0BkZWJpYW4ub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZvbnRSZWMpOiBgcGFpbnRfdHlwZScKCWFuZCBgc3Ryb2tlX3dpZHRoJyBhcmVuJ3QgcG9pbnRlcnMuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfRG9uZSksIHNyYy90eXBlMS90MW9ianMuYwoJKFQxX0ZhY2VfRG9uZSk6IERvbid0IGZyZWUgYHBhaW50X3R5cGUnIGFuZCBgc3Ryb2tlX3dpZHRoJy4KCjIwMDMtMTAtMjAgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoZm50X2NtYXBfY2xhc3MpOiBGaXggcG9zaXRpb24gb2YgYGNvbnN0Jy4KCjIwMDMtMTAtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBQYXRjaCBmcm9tCgkyMDAzLTA4LTE4IGludHJvZHVjZWQgYSBzZXZlcmUgYnVnIChGVF9SZW5kZXJfR2x5cGggd2FzIGNhbGxlZAoJdHdpY2UgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLCBjYXVzaW5nIHN0cmFuZ2UgcmVzdWx0cykuICBUaGlzCglpcyBmaXhlZCBub3cgYnkgY2xlYXJpbmcgdGhlIEZUX0xPQURfUkVOREVSIGJpdCBvZiBgbG9hZF9mbGFncycuCgoJKiBzcmMvYmFzZS9mdHBmci5jIChGVF9HZXRfUEZSX01ldHJpY3MpOiBJbml0aWFsaXplIGBlcnJvcicuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfdG9ieXRlcyk6IEluaXRpYWxpemUgYG4nLgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9zZm50cyk6IEluaXRpYWxpemUgYHN0cmluZ19zaXplJy4KCjIwMDMtMTAtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglDb21wbGV0ZWx5IHJldmlzZWQgVHlwZSA0MiBwYXJzZXIuICBJdCBub3cgaGFuZGxlcyBib3RoIGZvbnRzCglwcm9kdWNlZCB3aXRoIHR0ZnRvdDQyICh0ZXN0ZWQgdmVyc2lvbiAwLjMuMSkgYW5kCglUcnVlVHlwZVRvVHlwZTQyLnBzICh0ZXN0ZWQgdmVyc2lvbiBNYXkgMjAwMTsgaXQgaXMgbmVjZXNzYXJ5IHRvCglmaXggdGhlIGJyb2tlbiBoZWFkZXIgY29tbWVudCB0byBiZSBgJSFQUy1UcnVlVHlwZUZvbnQuLi4nKS4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfR2x5cGhTbG90X0xvYWQpOiBDaGFuZ2UgZm91cnRoCglwYXJhbWV0ZXIgdG8gYEZUX1VJbnQnLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuaCAoVDQyX1BhcnNlclJlYyk6IENoYW5nZSB0eXBlIG9mIGBpbl9tZW1vcnknCgl0byBGVF9Cb29sLgoJKFQ0Ml9Mb2FkZXIpOiBDaGFuZ2UgdHlwZSBvZiBgbnVtX2NoYXJzJyBhbmQgYG51bV9nbHlwaHMnIHRvCglGVF9VSW50LgoJQWRkIGBzd2FwX3RhYmxlJyBlbGVtZW50LgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKFQ0Ml9LRVlXT1JEX0NPVU5ULCBUMV9Ub0ZpeGVkLAoJVDFfVG9Db29yZEFycmF5LCBUMV9Ub1Rva2VuQXJyYXkpOiBSZW1vdmVkLgoJKFQxX1RvQnl0ZXMpOiBOZXcgbWFjcm8uCgkodDQyX2lzX2FscGhhLCB0NDJfaGV4dmFsKTogUmVtb3ZlZC4KCSh0NDJfaXNfc3BhY2UpOiBIYW5kbGUgYFwwJy4KCSh0NDJfcGFyc2VfZW5jb2RpbmcpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIgcm91dGluZXMKCWZyb20gcHNhdXguCglIYW5kbGUgYC9FbmNvZGluZyBbIC4uLiBdJyBhbHNvLgoJKFQ0Ml9Mb2FkX1N0YXR1cyk6IE5ldyBlbnVtZXJhdGlvbi4KCSh0NDJfcGFyc2Vfc2ZudHMpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIgcm91dGluZXMKCWZyb20gcHNhdXguCgkodDQyX3BhcnNlX2NoYXJzdHJpbmdzKTogVXBkYXRlZCB0byB1c2UgbmV3IFBvc3RTY3JpcHQgcGFyc2VyCglyb3V0aW5lcyBmcm9tIHBzYXV4LgoJSGFuZGxlIGAvQ2hhclN0cmluZ3MgPDwgLi4uID4+JyBhbHNvLgoJRG9uJ3QgZXhwZWN0IHRoYXQgLy5ub3RkZWYgaXMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gZGljdGlvbmFyeS4gIENvcHkKCWNvZGUgZnJvbSB0eXBlMSBtb2R1bGUgdG8gaGFuZGxlIHRoaXMuCgkodDQyX3BhcnNlX2RpY3QpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIgcm91dGluZXMKCWZyb20gcHNhdXguCglSZW1vdmUgY29kZSBmb3Igc3ludGhldGljIGZvbnRzICh3aGljaCBjYW4ndCBvY2N1ciBpbiBUeXBlIDQyCglmb250cykuCgkodDQyX2xvYWRlcl9kb25lKTogUmVsZWFzZSBgc3dhcF90YWJsZScuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHNraXBfc3RyaW5nKTogSW5jcmVhc2UgYGN1cicgcHJvcGVybHkuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogTWFrZSB0ZXN0IGZvciBgLm5vdGRlZicKCWZhc3Rlci4KCjIwMDMtMTAtMTUgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChibHVlX2NoYXJzKSwgc3JjL3dpbmZvbnRzL3dpbmZudC5jCgkoZm50X2NtYXBfY2xhc3NfcmVjLCBmbnRfY21hcF9jbGFzcyksIHNyYy9iZGYvYmRmbGliLmMgKGVtcHR5LAoJX251bV9iZGZfcHJvcGVydGllcyksIHNyYy9nemlwL2luZnV0aWwuYyAoaW5mbGF0ZV9tYXNrKSwKCXNyYy9nemlwL2luZmZpeGVkLmggKGZpeGVkX2JsLCBmaXhlZF9iZCwgZml4ZWRfdGwsIGZpeGVkX3RkKSwKCXNyYy9nemlwL2luZnRyZWVzLmggKGluZmxhdGVfdHJlZXNfZml4ZWQpLCBzcmYvZ3ppcC9pbmZ0cmVlcy5jCgkoaW5mbGF0ZV90cmVlc19maXhlZCk6IERlY29yYXRlIHdpdGggbW9yZSBgY29uc3QnIHRvIGF2b2lkCgl3cml0YWJsZSBnbG9iYWwgdmFyaWFibGVzIHdoaWNoIGFyZSBkaXNhbGxvd2VkIG9uIEFSTS4KCjIwMDMtMTAtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgsIHBhcnNlX2NoYXJzdHJpbmdzKTogUmVtb3ZlCgljb2RlIHNwZWNpYWxseSBmb3Igc3ludGhldGljIGZvbnRzOyB0aGlzIGlzIGhhbmRsZWQgZWxzZXdoZXJlLgoJKHBhcnNlX2VuY29kaW5nKTogUmVtb3ZlIGNvZGUgc3BlY2lhbGx5IGZvciBzeW50aGV0aWMgZm9udHM7IHRoaXMgaXMKCWhhbmRsZWQgZWxzZXdoZXJlLgoJSW1wcm92ZSBib3VuZGFyeSBjaGVja2luZyB3aGlsZSBwYXJzaW5nLgoJKHBhcnNlX2RpY3QpOiBJbXByb3ZlIGJvdW5kYXJ5IGNoZWNraW5nIHdoaWxlIHBhcnNpbmcuCglVc2UgZnRfbWVtY21wIHRvIHNpbXBsaWZ5IGNvZGUuCgoyMDAzLTEwLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9kaWN0KTogSGFuZGxlIHN5bnRoZXRpYwoJZm9udHMgcHJvcGVybHkuCgkocGFyc2VfY2hhcnN0cmluZ3MpOiBDb3B5IGNvcnJlY3QgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW50bwoJYG5hbWVfdGFibGUnLgoKMjAwMy0xMC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUhlYXZ5IG1vZGlmaWNhdGlvbiBvZiB0aGUgUFMgcGFyc2VyIHRvIGhhbmRsZSBjb21tZW50cyBhbmQgc3RyaW5ncwoJY29ycmVjdGx5LiAgVGhpcyBkb2Vzbid0IHNsb3cgZG93biB0aGUgbG9hZGluZyBvZiBQUyBmb250cwoJc2lnbmlmaWNhbnRseSBzaW5jZSBjaGFyc3RyaW5ncyBhcmVuJ3QgYWZmZWN0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF94ZGlnaXQpOiBSZW5hbWVkIHRvLi4uCgkoZnRfaXN4ZGlnaXQpOiBUaGlzLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCShmdF9pc2RpZ2l0KTogTmV3IGFsaWFzIHRvIGBpc2RpZ2l0Jy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfUGFyc2VyX0Z1bmNzUmVjKTogUmVuYW1lZAoJYHNraXBfYWxwaGEnIHRvIGBza2lwX1BTX3Rva2VuJy4KCUFkZCBwYXJhbWV0ZXIgdG8gYHRvX2J5dGVzJyBhbmQgY2hhbmdlIHNvbWUgYXJndW1lbnQgdHlwZXMuCgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYyAocHNfcGFyc2VyX2Z1bmNzKTogVXBkYXRlZC4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChmdF9jaGFyX3RhYmxlKTogTmV3IGFycmF5IHRvIG1hcCBjaGFyYWN0ZXIKCWNvZGVzIChBU0NJSSBhbmQgRUJDRElDKSBvZiBkaWdpdHMgdG8gbnVtYmVycy4KCShPUCk6IE5ldyBhdXhpbGlhcnkgbWFjcm8gaG9sZGluZyBlaXRoZXIgYD49JyBvciBgPCcgZGVwZW5kaW5nIG9uCgl0aGUgY2hhcmFjdGVyIGVuY29kaW5nLgoJKHNraXBfY29tbWVudCk6IE5ldyBmdW5jdGlvbi4KCShza2lwX3NwYWNlcyk6IFVzZSBpdC4KCShza2lwX2FscGhhKTogUmVtb3ZlZC4KCShza2lwX2xpdGVyYWxfc3RyaW5nLCBza2lwX3N0cmluZyk6IE5ldyBmdW5jdGlvbnMuCgkocHNfcGFyc2VyX3NraXBfUFNfdG9rZW4pOiBOZXcgZnVuY3Rpb24uICBUaGlzIGlzIGEgYmV0dGVyCglyZXBsYWNlbWVudCBvZi4uLgoJKHBzX3BhcnNlcl9za2lwX2FscGhhKTogUmVtb3ZlZC4KCShwc19wYXJzZXJfdG9fdG9rZW4sIHBzX3BhcnNlcl90b190b2tlbl9hcnJheSk6IFVwZGF0ZWQuCgkoVDFSYWRpeCk6IFJld3JpdHRlbiwgdXNpbmcgYGZ0X2NoYXJfdGFibGUnLgoJKHQxX3RvaW50KTogUmVuYW1lZCB0by4uLgoJKHBzX3RvaW50KTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCVVzZSBgZnRfY2hhcl90YWJsZScuCgkocHNfdG9ieXRlcyk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlIGRlbGltaXRlcnMgYW5kIGNoYW5nZSBzb21lCglhcmd1bWVudCB0eXBlcy4KCVVzZSBgZnRfY2hhcl90YWJsZScuCgkodDFfdG9maXhlZCk6IFJlbmFtZWQgdG8uLi4KCShwc190b2ZpeGVkKTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCVVzZSBgZnRfY2hhcl90YWJsZScuCgkodDFfdG9jb29yZGFycmF5KTogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKHBzX3RvY29vcmRhcnJheSk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkodDFfdG9maXhlZGFycmF5KTogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKHBzX3RvZml4ZWRhcnJheSk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkodDFfdG9ib29sKTogUmVuYW1lZCB0by4uLgoJKHBzX3RvYm9vbCk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBVcGRhdGVkLgoJKHBzX3BhcnNlcl9sb2FkX2ZpZWxkX3RhYmxlKTogVXNlIGBUMV9NQVhfVEFCTEVfRUxFTUVOVFMnCglldmVyeXdoZXJlLgoJKHBzX3BhcnNlcl90b19pbnQsIHBzX3BhcnNlcl90b19maXhlZCwgcHNfcGFyc2VyX3RvX2Nvb3JkX2FycmF5LAoJcHNfcGFyc2VyX3RvX2ZpeGVkX2FycmF5KTogU2tpcCBzcGFjZXMuICBVcGRhdGVkLgoJKHBzX3BhcnNlcl90b19ieXRlcyk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlIGRlbGltaXRlcnMgYW5kIGNoYW5nZQoJc29tZSBhcmd1bWVudCB0eXBlcy4gIFVwZGF0ZWQuCgkqIHNyYy9wc2F1eC9wc29ianMuaDogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcGFyc2VfZGljdCk6IFVwZGF0ZWQuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoY2lkX3BhcnNlcl9uZXcpOiBDaGVjayB3aGV0aGVyIHRoZSBgU3RhcnREYXRhJwoJdG9rZW4gd2FzIHJlYWxseSBmb3VuZC4KCSogc3JjL2NpZC9jaWRwYXJzZS5oIChjaWRfcGFyc2VyX3NraXBfYWxwaGEpOiBVcGRhdGVkIGFuZCByZW5hbWVkCgl0by4uLgoJKGNpZF9wYXJzZXJfc2tpcF9QU190b2tlbik6IFRoaXMuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oIChUMV9QYXJzZXJSZWMpOiBVc2UgYEZUX0Jvb2wnIGZvciBib29sZWFuCglmaWVsZHMuCgkoVDFfU2tpcF9BbHBoYSk6IFJlcGxhY2VkIHdpdGguLi4KCShUMV9Ta2lwX1BTX1Rva2VuKTogVGhpcyBuZXcgbWFjcm8uCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKGhleGFfdmFsdWUpOiBSZW1vdmVkLgoJKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBVc2UgYGZ0X2lzeGRpZ2l0JyBhbmQKCWBwc2F1eC0+cHNfcGFyc2VyX2Z1bmNzX3RvX2J5dGVzJyBmb3IgaGFuZGxpbmcgQVNDSUkgaGV4YWRlY2ltYWwKCWVuY29kaW5nLgoJQWZ0ZXIgZGVjcnlwdGluZywgcmVwbGFjZSB0aGUgZm91ciByYW5kb20gYnl0ZXMgYXQgdGhlIGJlZ2lubmluZwoJd2l0aCB3aGl0ZXNwYWNlLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHQxX2FsbG9jYXRlX2JsZW5kKTogVXNlIHByb3BlciBlcnJvciB2YWx1ZXMuCgkocGFyc2VyX2JsZW5kX2Rlc2lnbl9wb3NpdGlvbnMsIHBhcnNlX2JsZW5kX2Rlc2lnbl9tYXAsCglwYXJzZV93ZWlnaHRfdmVjdG9yKTogVXBkYXRlZC4KCShpc19zcGFjZSk6IEhhbmRsZSBgXGYnIGFsc28uCgkoaXNfbmFtZV9jaGFyKTogUmVtb3ZlZC4KCShyZWFkX2JpbmFyeV9kYXRhKTogVXBkYXRlZC4KCShwYXJzZV9lbmNvZGluZyk6IFVzZSBgZnRfaXNkaWdpdCcuCglVcGRhdGVkLgoJKHBhcnNlX3N1YnJzKTogVXBkYXRlZC4KCShUQUJMRV9FWFRFTkQpOiBOZXcgbWFjcm8uCgkocGFyc2VfY2hhcnN0cmluZ3MpOiBVcGRhdGVkLgoJUHJvdmlkZSBhIHdvcmthcm91bmQgZm9yIGJ1Z2d5IGZvbnRzIHdoaWNoIGhhdmUgbW9yZSBlbnRyaWVzIGluIHRoZQoJL0NoYXJTdHJpbmdzIGRpY3Rpb25hcnkgdGhlbiBleHBlY3RlZDsgdGhlIGZ1bmN0aW9uIG5vdyBhZGRzIHNvbWUKCXNsb3RzIGFuZCBza2lwcyBlbnRyaWVzIHdoaWNoIHN0aWxsIGV4Y2VlZCB0aGUgbmV3IGxpbWl0LgoJKHBhcnNlX2RpY3QpOiBVcGRhdGVkLgoJVGVybWluYXRlIG9uIHRoZSB0b2tlbiBgY2xvc2VmaWxlJy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAoVDFfU2tpcF9BbHBoYSk6IFJlcGxhY2VkIHdpdGguLi4KCShUMV9Ta2lwX1BTX1Rva2VuKTogVGhpcyBuZXcgbWFjcm8uICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKHQ0Ml9wYXJzZV9lbmNvZGluZyk6IFVzZSBgZnRfaXNkaWdpdCcuCgoKCSogc3JjL2Jhc2UvZnRtbS5jIChmdF9mYWNlX2dldF9tbV9zZXJ2aWNlKTogUmV0dXJuIEZUX0Vycl9PSyBpZgoJc3VjY2Vzcy4KCjIwMDMtMTAtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2R1bGUuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kYXBpLmg6IFRoaXMgdG8gYXZvaWQgZHVwbGljYXRlIGZpbGUgbmFtZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX01PRFVMRV9IKTogVXBkYXRlZC4KCjIwMDMtMTAtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3JpZW50YXRpb25FeHRyZW11bVJlYywKCUZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uKTogVHJpdmlhbCB0eXBvIGZpeGVzIHRvIG1ha2UgaXQgY29tcGlsZS4KCjIwMDMtMTAtMDIgIE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyICA8bWFya3VzQG9iZXJodW1lci5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZUX1dpbkZOVF9IZWFkZXJSZWMpOiBgY29sb3JfdGFibGVfb2Zmc2V0JwoJaGFzIGZvdXIgYnl0ZXMsIG5vdCB0d28uCglGaXggYWxsIHVzZXJzLgoJKGZudF9mb250X2xvYWQsIEZOVF9Mb2FkX0dseXBoKTogQWRkIG1vcmUgZm9udCB2YWxpZGl0eSB0ZXN0cy4KCjIwMDMtMTAtMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvZml0Lyo6IEFkZGluZyBmaXJzdCBzb3VyY2UgZmlsZXMgb2YgdGhlIG5ldyBtdWx0aS1zY3JpcHQKCWBhdXRvLWZpdHRlcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3JpZW50YXRpb24pOiBOZXcgZW51bWVyYXRpb24uCgkoRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24pOiBOZXcgZGVjbGFyYXRpb24uCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX09yaWVudGF0aW9uRXh0cmVtdW1SZWMpOiBOZXcgc3RydWN0dXJlLgoJKGZ0X29yaWVudGF0aW9uX2V4dHJlbXVtX2NvbXB1dGUpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKEZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uKTogTmV3IGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIGZpbGwKCW9yaWVudGF0aW9uIG9mIGEgZ2l2ZW4gZ2x5cGggb3V0bGluZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UpOiBGaXhlZAoJdHJpdmlhbCBidWcgd2hpY2ggY291bGQgY3Jhc2ggdGhlIGZvbnQgZW5naW5lIHdoZW4gYSBjYWNoZWQgc2VydmljZQoJcG9pbnRlciB3YXMgcmV0cmlldmVkLgoKMjAwMy0wOS0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9wYXJzZV9kaWN0KTogU2tpcCB0b2tlbiBpZiBubyBrZXl3b3JkIGlzCglmb3VuZC4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKElTX1QxX1dISVRFU1BBQ0UsIElTX1QxX0xJTkVTUEFDRSwKCUlTX1QxX1NQQUNFKTogUmVtb3ZlZC4KCShQRkJfVGFnKTogUmVtb3ZlZC4KCShyZWFkX3BmYl90YWcpOiBEb24ndCB1c2UgUEZCX1RhZy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX2lzX3NwYWNlKTogSGFuZGxlIGBcZicgYWxzby4KCSh0NDJfcGFyc2VfZW5jb2RpbmcpOiBIYW5kbGUgc3ludGhldGljIGZvbnRzLgoKMjAwMy0wOS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmg6IERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX09CSkVDVFNfSCBidXQgRlRfSU5URVJOQUxfU0VSVklDRV9ILgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERvbid0IGluY2x1ZGUKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoKMjAwMy0wOS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIG5ldyBzZXJ2aWNlIHRvIGhhbmRsZSBnbHlwaCBuYW1lIGRpY3Rpb25hcmllcywgcmVwbGFjaW5nIHRoZQoJb2xkIGludGVybmFsIGhlYWRlciBuYW1lZCBgcHNuYW1lcy5oJyBieSBgc2VydmljZXMvc3Zwc25hbWUuaCcuCglOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBgc2VydmljZXMvc3Zwb3N0bm0uaCcgd2hpY2ggb25seQoJaGFuZGxlcyB0aGUgcmV0cmlldmFsIG9mIFBvc3RTY3JpcHQgZm9udCBuYW1lcyBmb3IgYSBnaXZlbiBmYWNlLgoJKFNob3VsZCB3ZSBtZXJnZSB0aGVzZSB0d28gc2VydmljZXMgaW50byBhIHNpbmdsZSBoZWFkZXI/KQoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IFJlbW92ZWQuICBNb3N0IG9mIGl0cwoJY29udGVudHMgaXMgbW92ZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzbmFtZS5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaAoJKEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9OQU1FKTogUmVwbGFjZWQgd2l0aC4uLgoJKEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUpOiBOZXcgbWFjcm8uCgkoUHNOYW1lKTogU2VydmljZSBuYW1lZCBjaGFuZ2VkIHRvLi4uCgkoUHNGb250TmFtZSk6IFRoaXMuCglVcGRhdGVkIGBGVF9TZXJ2aWNlX1BzTmFtZScgLT4gYEZUX1NlcnZpY2VfUHNGb250TmFtZScgYW5kCglgUE9TVFNDUklQVF9OQU1FJyAtPiBgUE9TVFNDUklQVF9GT05UX05BTUUnIGV2ZXJ5d2hlcmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmgKCShGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gpOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6IEluY2x1ZGUKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKFQxX0RlY29kZXJSZWMpOiBVcGRhdGVkIHR5cGUgb2YgYHBzbmFtZXMnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaDogRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCUluY2x1ZGUgRlRfSU5URVJOQUxfT0JKRUNUU19ILgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmg6IERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0ZhY2VSZWMpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UpOiBDaGFuZ2VkCglvcmRlciBvZiBwYXJhbWV0ZXJzLiAgQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UpOiBOZXcgbWFjcm8gdG8gbG9vayB1cCBhIHNlcnZpY2UKCWdsb2JhbGx5LCBjaGVja2luZyBhbGwgbW9kdWxlcy4KCShGVF9TZXJ2aWNlQ2FjaGVSZWMpOiBVcGRhdGVkLgoJKEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19IKTogTmV3IG1hY3JvIGZvciBhY2Nlc3NpbmcKCWBzdnBzbmFtZS5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoZnRfbW9kdWxlX2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKGNmZl9nZXRfZ2x5cGhfbmFtZSwgY2ZmX2dldF9uYW1lX2luZGV4KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTCglzZXJ2aWNlLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfdW5pY29kZV9pbml0KTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogIERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoY2ZmX2ZhY2VfaW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogIERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgoJKiBzcmMvY2lkL2NpZG9ianMuYzogIERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoY2lkX2ZhY2VfaW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvY2lkL2NpZHJpdmVyLmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ILgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX3N0ZF9pbml0LCB0MV9jbWFwX3VuaWNvZGVfaW5pdCk6IFVzZQoJbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmggKHQxX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSwKCXQxX2RlY29kZV9pbml0KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9wc2F1eC90MWNtYXAuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmg6IERvbnQnIGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmM6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKHBzX2J1aWxkX3VuaWNvZGVfdGFibGUpOiBSZW5hbWVkIHRvLi4uCgkocHNfdW5pY29kZXNfaW5pdCk6IFRoaXMuCgkocHNfbG9va3VwX3VuaWNvZGUpOiBSZW5hbWVkIHRvLi4uCgkocHNfdW5pY29kZXNfY2hhcl9pbmRleCk6IFRoaXMuCgkocHNfbmV4dF91bmljb2RlKTogUmVuYW1lZCB0by4uLgoJKHBzX3VuaWNvZGVzX2NoYXJfbmV4dCk6IFRoaXMuCgkocHNuYW1lc19pbnRlcmZhY2UpOiBVcGRhdGVkLgoJKHBzbmFtZXNfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShwc25hbWVzX2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9uLgoJKHBzbmFtZXNfbW9kdWxlX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKHNmbnRfaW5pdF9mYWNlKTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9zZm50L3R0cG9zdC5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKHR0X2ZhY2VfZ2V0X3BzX25hbWUpOiBVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShUMV9GYWNlX0luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX2dldF9wc19uYW1lKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9nZXRfcHNfZm9udF9uYW1lKTogVGhpcy4KCSh0NDJfc2VydmljZV9wc19uYW1lKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9zZXJ2aWNlX3BzX2ZvbnRfbmFtZSk6IFRoaXMuCgkodDQyX3NlcnZpY2VzKTogVXBkYXRlZC4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMKCXNlcnZpY2UuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dldF9HbHlwaCk6IERvbid0IGFjY2VzcyBgc2xvdCcgYmVmb3JlCgl0ZXN0aW5nIGl0cyB2YWxpZGl0eS4gIFJlcG9ydGVkIGJ5IEhlbnJ5IE1hZGRvY2tzCgk8bWFkZG9ja3NAbWV0c2VydmljZS5jb20+LgoKMjAwMy0wOS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UpOgoJRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgKHMvcHB0ci9QcHRyLykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1BGUl9ILAoJRlRfSU5URVJOQUxfRk5UX1RZUEVTX0gpOiBSZW1vdmVkLgoKMjAwMy0wOS0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1pZ3JhdGluZyB0aGUgUEZSIGFuZCBXSU5GTlQgZHJpdmVycyB0byB0aGUgbmV3IHNlcnZpY2UtYmFzZWQKCWludGVybmFsIEFQSS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaDogUmVtb3ZlZC4gIE1vc3Qgb2YgaXRzIGRhdGEKCWFyZSBtb3ZlZCB0byB3aW5mbnQuaCBhbmQuLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdndpbmZudC5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGZyLmg6IFJlbW92ZWQuICBNb3N0IG9mIGl0cyBkYXRhIGFyZQoJbW92ZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBmci5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfRklORF9TRVJWSUNFLAoJRlRfRkFDRV9MT09LVVBfU0VSVklDRSk6IFNpbXBsaWZ5IGZpeCBvZiAyMDAzLTA5LTE2IGJ5IHJlbW92aW5nCglwb2ludGVyIHR5cGUgYXJndW1lbnQuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoJVXBkYXRlIG1hY3JvIG5hbWVzIG9mIHNlcnZpY2VzIGhlYWRlciBmaWxlcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmFtZV9JbmRleCk6IFNpbXBsaWZpZWQgY29kZS4KCgkqIHNyYy9iYXNlL2Z0cGZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QRlJfSCBpbnN0ZWFkIG9mCglGVF9JTlRFUk5BTF9QRlJfSC4KCShmdF9wZnJfY2hlY2ssIEZUX0dldF9QRlJfTWV0cmljcywgRlRfR2V0X1BGUl9LZXJuaW5nLAoJRlRfR2V0X1BGUl9BZHZhbmNlKTogVXNlIHNlcnZpY2VzIHByb3ZpZGVkIGluIGBQRlJfTUVUUklDUycuCgoJKiBzcmMvYmFzZS9mdHdpbmZudC5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfV0lORk5UX0ggaW5zdGVhZCBvZgoJRlRfSU5URVJOQUxfRk5UX1RZUEVTX0guCgkoRlRfR2V0X1dpbkZOVF9IZWFkZXIpOiBVc2Ugc2VydmljZSBwcm92aWRlZCBpbiBgV0lORk5UJy4KCgkqIHNyYy9wZnIvcGZyZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BGUl9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCBpbnN0ZWFkIG9mIEZUX0lOVEVSTkFMX1BGUl9ILgoJKHBmcl9zZXJ2aWNlX2JkZik6IFVwZGF0ZWQuCgkocGZyX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkocGZyX2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9uLgoJKHBmcl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfV0lORk5UX0ggYW5kCglGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9IIGluc3RlYWQgb2YgRlRfSU5URVJOQUxfRk5UX1RZUEVTX0guCgkod2luZm50X2dldF9oZWFkZXIsIHdpbmZudF9nZXRfc2VydmljZSk6IE5ldyBmdW5jdGlvbnMuCgkod2luZm50X3NlcnZpY2VfcmVjKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgV0lORk5UIHNlcnZpY2VzLgoJKHdpbmZudF9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHdpbmZudF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvd2luZm9udHMvd2luZm50Lmg6IEFkZCBtb3N0IG9mIHRoZSByZW1vdmVkIGZudHR5cGVzLmggZGF0YS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfc2VydmljZV9wc19uYW1lKTogRml4IHR5cG8uCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfc2VydmljZV9wc19uYW1lKTogRml4IHR5cG8uCgoJKiBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NpZC9jaWRvYmpzLmMsIHNyYy9wZnIvcGZyc2JpdC5jLAoJc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYzogUmVtb3ZpbmcgdmFyaW91cyBjb21waWxlcgoJd2FybmluZ3MuCgoyMDAzLTA5LTE5ICBEYXZpZCBCZXZhbiAgPGRiZXZhbkBlbXRleC5jb20+CgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChwZmJfdGFnX2ZpZWxkcyk6IFJlbW92ZWQuCgkocmVhZF9wZmJfdGFnKTogRml4IGNvZGUgc28gdGhhdCBpdCBkb2Vzbid0IGZhaWwgb24gZW5kLW9mLWZpbGUKCWluZGljYXRvciAoMHg4MDAzKS4KCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0wOS0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UsCglGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIHBvaW50ZXIgdHlwZS4KCVVnbHksIEkga25vdywgYnV0IHRoaXMgaXMgbmVlZGVkIGZvciBjb21waWxhdGlvbiB3aXRoIEMrKyAtLQoJbWF5YmUgc29tZW9uZSBrbm93cyBhIGJldHRlciBzb2x1dGlvbj8KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05hbWVfSW5kZXgsIEZUX0dldF9HbHlwaF9OYW1lKTogUmVtb3ZlCglDKysgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYmFzZS9mdGJkZi5jIChGVF9HZXRfQkRGX0NoYXJzZXRfSUQsIEZUX0dldF9CREZfUHJvcGVydHkpOgoJRml4IG9yZGVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gRlRfRkFDRV9GSU5EX1NFUlZJQ0UuCgoyMDAzLTA5LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQXZvaWQgaGVhZGVyIGZpbGVzIHdpdGggaWRlbnRpY2FsIG5hbWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9iZGYuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2YmRmLmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9nbHlmZGljdC5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL211bHRtYXN0Lmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCUFkZCBGVF9CRUdJTl9IRUFERVIgYW5kIEZUX0VORF9IRUFERVIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc2ZudC5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZzZm50Lmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9wb3N0bmFtZS5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3hmODZuYW1lLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnhmODZubS5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oOiBBZGQgRlRfQkVHSU5fSEVBREVSIGFuZAoJRlRfRU5EX0hFQURFUi4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJVXBkYXRlIG1hY3JvIG5hbWVzIG9mIHNlcnZpY2VzIGhlYWRlciBmaWxlcy4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoU0VSVklDRVNfRElSKTogTmV3IHZhcmlhYmxlLgoJKEJBU0VfSCk6IEFkZCBzZXJ2aWNlcyBoZWFkZXIgZmlsZXMuCgoyMDAzLTA5LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKGRpc3RjbGVhbik6IFJlbW92ZSBgYnVpbGRzL3VuaXgvZnJlZXR5cGUyLnBjJy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogRG9uJ3QgbG9hZCBoZWFkZXJzIHR3aWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfU0VSVklDRV9TRk5UX0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfU0ZOVF9ILgoKCSogc3JjL2NmZi9jZmZjbWFwLmM6IEluY2x1ZGUgYGNmZmVycnMuaCcuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYzogSW5jbHVkZSBgcGZyZXJyb3IuaCcuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgYHNmZXJyb3JzLmgnLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmg6IEFkZCBkZWNsYXJhdGlvbiBmb3IgYHBzX3BhcnNlcl90b19ieXRlcycuCgoyMDAzLTA5LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJSW50cm9kdWNpbmcgdGhlIGNvbmNlcHQgb2YgYG1vZHVsZSBzZXJ2aWNlcycuICBUaGlzIGlzIHRoZSBmaXJzdAoJc3RlcCB0b3dhcmRzIGEgbWFzc2l2ZSBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgZW5naW5lJ3MgaW50ZXJuYWxzLCBpbgoJb3JkZXIgdG8gZ2V0IHJpZCBvZiB2YXJpb3VzIG51bWJlcnMgb2YgaGFja3MuCgoJTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgd2lsbCBicmVhayBzb3VyY2UgJiBiaW5hcnkgY29tcGF0aWJpbGl0eSBmb3IKCWF1dGhvcnMgb2YgZXh0ZXJuYWwgZm9udCBkcml2ZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCAoRlRfQkVHSU5fU1RNTlQsIEZUX0VORF9TVE1OVCwKCUZUX0RVTU1ZX1NUTU5UKTogTmV3IG1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2Lmg6IE5ldyBmaWxlLCBjb250YWluaW5nIHRoZSBuZXcKCXN0cnVjdHVyZXMgYW5kIG1hY3JvcyB0byBwcm92aWRlIGBzZXJ2aWNlcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX0VYVEVOU0lPTl9ILAoJRlRfSU5URVJOQUxfRVhURU5EX0gsIEZUX0lOVEVSTkFMX0hBU0hfSCwgRlRfSU5URVJOQUxfT0JKRUNUX0gpOgoJUmVtb3ZlZCwgb2Jzb2xldGUuCgkoRlRfSU5URVJOQUxfU0VSVklDRV9IKTogTmV3IG1hY3JvIGZvciBgZnRzZXJ2LmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9iZGYuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvZ2x5ZmRpY3QuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvcG9zdG5hbWUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMveGY4Nm5hbWUuaDogTmV3IGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1tLmggKEZUX0dldF9NTV9GdW5jLCBGVF9TZXRfTU1fRGVzaWduX0Z1bmMsCglGVF9TZXRfTU1fQmxlbmRfRnVuYyk6IEZ1bmN0aW9uIHBvaW50ZXJzIG1vdmVkIChpbiBtb2RpZmllZCBmb3JtKQoJdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9tdWx0bWFzdC5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChTRk5UX0ludGVyZmFjZSk6IGBnZXRfaW50ZXJmYWNlJwoJaXMgbm93IG9mIHR5cGUgYEZUX01vZHVsZV9SZXF1ZXN0ZXInLgoJKFNGTlRfR2V0X0ludGVyZmFjZV9GdW5jLCBTRk5UX0xvYWRfVGFibGVfRnVuYyk6IEZ1bmN0aW9uIHBvaW50ZXJzCgltb3ZlZCAoaW4gbW9kaWZpZWQgZm9ybSkgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWVzL3NmbnQuaDogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKEZUX0dldF9TZm50X1RhYmxlX0Z1bmMpOiBGdW5jdGlvbgoJcG9pbnRlciBtb3ZlZCAoaW4gbW9kaWZpZWQgZm9ybSkgdG8gYHNlcnZpY2VzL3NmbnQuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKEZUX01vZHVsZV9JbnRlcmZhY2UpOiBNYWtlIGl0IGEKCWEgdHlwZWRlZiB0byBgRlRfUG9pbnRlcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYyk6IEFkZAoJYHBvc3RzY3JpcHRfbmFtZScuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0ZhY2VfSW50ZXJuYWxSZWMpOiBSZW1vdmUKCWBwb3N0c2NyaXB0X25hbWUnLgoJQWRkIGBzZXJ2aWNlcycgZWxlbWVudC4KCShGVF9MaWJyYXJ5UmVjKTogUmVtb3ZlIGBtZXRhX2NsYXNzJy4KCgkqIHNyYy9iYXNlL2Z0YmRmLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9CREZfSC4KCSh0ZXN0X2ZvbnRfdHlwZSk6IFJlbW92ZWQuCgkoRlRfR2V0X0JERl9DaGFyc2V0X0lELCBGVF9HZXRfQkRGX1Byb3BlcnR5KTogVXNlIHNlcnZpY2VzCglwcm92aWRlZCBpbiBgRlRfU0VSVklDRV9JRF9CREYnLgoKCSogc3JjL2Jhc2UvZnRtbS5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfTVVMVElQTEVfTUFTVEVSU19ILgoJKGZ0X2ZhY2VfZ2V0X21tX3NlcnZpY2UpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uIHRvIGdldCBzZXJ2aWNlcwoJZnJvbSBgRlRfU0VSVklDRV9JRF9NVUxUSV9NQVNURVJTJy4KCShGVF9HZXRfTXVsdGlfTWFzdGVyLCBGVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzLAoJRlRfU2V0X01NX0JsZW5kX0Nvb3JkaW5hdGVzKTogVXNlIGBmdF9mYWNlX2dldF9tbV9zZXJ2aWNlJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0ggYW5kCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSC4KCShmdF9zZXJ2aWNlX2xpc3RfbG9va3VwKTogTmV3IGZ1bmN0aW9uIHRvIGdldCBhIHNwZWNpZmljIHNlcnZpY2UuCgkoZGVzdHJveV9mYWNlKTogVXBkYXRlZC4KCShNYWNfUmVhZF9QT1NUX1Jlc291cmNlKTogU2ltcGxpZnkgc29tZSBjb2RlLgoJKElzTWFjUmVzb3VyY2UpOiBGaXggd2FybmluZ3MuCgkoRlRfR2V0X05hbWVfSW5kZXgsIEZUX0dldF9HbHlwaF9OYW1lKTogVXNlIHNlcnZpY2VzIHByb3ZpZGVkIGluCglgRlRfU0VSVklDRV9JRF9HTFlQSF9ESUNUJy4KCShGVF9HZXRfUG9zdHNjcmlwdF9OYW1lKTogVXNlIHNlcnZpY2UgcHJvdmlkZWQgaW4KCWBGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfTkFNRScuCgkoRlRfR2V0X1NmbnRfVGFibGUsIEZUX0xvYWRfU2ZudF9UYWJsZSk6IFVzZSBzZXJ2aWNlcyBwcm92aWRlZCBpbgoJYEZUX1NFUlZJQ0VfSURfU0ZOVF9UQUJMRScuCgoJKiBzcmMvYmFzZS9mdHhmODYuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILgoJKEZUX0dldF9YMTFfRm9udF9Gb3JtYXQpOiBVc2Ugc2VydmljZSBwcm92aWRlZCBpbgoJYEZUX1NFUlZJQ0VfSURfWEY4Nl9OQU1FJy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX0JERl9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCShiZGZfZ2V0X2NoYXJzZXRfaWQpOiBOZXcgZnVuY3Rpb24uCgkoYmRmX3NlcnZpY2VfYmRmKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgQkRGIHNlcnZpY2VzLgoJKGJkZl9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKGJkZl9kcml2ZXJfcmVxdWVzdGVyKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9IIGFuZAoJRlRfU0VSVklDRV9HTFlQSF9ESUNUX0guCgkoY2ZmX3NlcnZpY2VfZ2x5cGhfZGljdCk6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIENGRiBzZXJ2aWNlcy4KCShjZmZfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShjZmZfZ2V0X2ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkoY2lkX3NlcnZpY2VfcHNfbmFtZSk6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIENJRCBzZXJ2aWNlcy4KCShjaWRfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShjaWRfZ2V0X2ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9CREZfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkocGNmX3NlcnZpY2VfYmRmKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgUENGIHNlcnZpY2VzLgoJKHBjZl9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHBjZl9kcml2ZXJfcmVxdWVzdGVyKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9HTFlQSF9ESUNUX0ggYW5kCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9ILgoJKGdldF9zZm50X2dseXBoX25hbWUpOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF9nZXRfZ2x5cGhfbmFtZSk6IFRoaXMuCgkoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfZ2V0X3BzX25hbWUpOiBUaGlzLgoJVXBkYXRlZC4KCShzZm50X3NlcnZpY2VfZ2x5cGhfZGljdCwgc2ZudF9zZXJ2aWNlX3BzX25hbWUpOiBOZXcgc3RydWN0dXJlcwoJcHJvdmlkaW5nIHNlcnZpY2VzLgoJKHNmbnRfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShzZm50X2dldF9pbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCSh0dF9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHR0X2dldF9pbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9NVUxUSVBMRV9NQVNURVJTX0gsCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSCwgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCwgYW5kCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9ILgoJKHQxX3NlcnZpY2VfZ2x5cGhfZGljdCwgdDFfc2VydmljZV9wc19uYW1lLAoJdDFfc2VydmljZV9tdWx0aV9tYXN0ZXJzKTogTmV3IHN0cnVjdHVyZXMgcHJvdmlkaW5nIFR5cGUgMSBzZXJ2aWNlcy4KCSh0MV9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKEdldF9JbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0gsCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSCwgYW5kIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0guCgkodDQyX3NlcnZpY2VfZ2x5cGhfZGljdCwgdDQyX3NlcnZpY2VfcHNfbmFtZSk6IE5ldyBzdHJ1Y3VyZXMKCXByb3ZpZGluZyBUeXBlIDQyIHNlcnZpY2VzLgoJKHQ0Ml9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKFQ0Ml9HZXRfSW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGZvciAyLjEuNiwgYW5kCglyZW1vdmluZyBvYnNvbGV0ZSB3YXJuaW5ncyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA2LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjU6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjb3JlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZXhjZXB0LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgoyMDAzLTA5LTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIFBGUiBrZXJuaW5nIHN1cHBvcnQuICBUaGUgdGFibGVzIHdpdGhpbiB0aGUgZm9udCBmaWxlIGNvbnRhaW4KCShjaGFyY29kZSxjaGFyY29kZSkga2VybmluZyBwYWlycywgd2UgbmVlZCB0byBjb252ZXJ0IHRoZW0gdG8KCShnaW5kZXgsZ2luZGV4KS4KCgkqIHNyYy9iYXNlL2Z0cGZyLmMgKGZ0X3Bmcl9jaGVjayk6IEZpeCBzZXJpb3VzIHR5cG8uCgkqIHNyYy9wZnIvcHJmbG9hZC5jOiBSZW1vdmUgZGVhZCBjb2RlLgoJKHBmcl9nZXRfZ2luZGV4LCBwZnJfY29tcGFyZV9rZXJuX3BhaXJzLCBwZnJfc29ydF9rZXJuaW5nX3BhaXJzKToKCU5ldyBmdW5jdGlvbnMuCgkocGZyX3BoeV9mb250X2RvbmUpOiBGcmVlIGBrZXJuX3BhaXJzJy4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IENhbGwgYHBmcl9zb3J0X2tlcm5pbmdfcGFpcnMnLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBGaXgga2VybmluZyBleHRyYWN0aW9uLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9LRVJOX1BBSVJfSU5ERVgpOiBOZXcgbWFjcm8uCgkoUEZSX0tlcm5QYWlyUmVjKTogTWFrZSBga2VybmluZycgYW4gRlRfSW50LgoJKFBGUl9QaHlGb250UmVjKTogTmV3IGVsZW1lbnQgYGtlcm5fcGFpcnMnLgoJKFBGUl9LZXJuRmxhZ3MpOiBWYWx1ZXMgb2YgUEZSX0tFUk5fMkJZVEVfQ0hBUiBhbmQKCVBGUl9LRVJOXzJCWVRFX0FESiB3ZXJlIGVycm9uZW91c2x5IHJldmVyc2VkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG9wdGlvbi5oOiBDb21tZW50aW5nIG91dCB0aGUgbWFjcm8KCVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIuCgoyMDAzLTA5LTAyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAzLTA4LTMxICBNYW5pc2ggU2luZ2ggIDx5b3NoQGdpbXAub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9yZWFkc3RyZWFtKTogRG9uJ3QgdXNlIEZUX01FTV9DT1BZIGJ1dAoJRlRfTUVNX01PVkUuCgoyMDAzLTA4LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ09ESU5HX1NKSVMsIEZUX0VOQ09ESU5HX0dCMjMxMiwKCUZUX0VOQ09ESU5HX0JJRzUsIEZUX0VOQ09ESU5HX1dBTlNVTkcsIEZUX0VOQ09ESU5HX0pPSEFCKTogTmV3CgllbnVtZXJhdGlvbnMgb2YgRlRfRW5jb2RpbmcuICBUaGUgRlRfRU5DT0RJTkdfTVNfKiB2YXJpYW50cyBleGNlcHQKCUZUX0VOQ09ESU5HX01TX1NZTUJPTCBhcmUgbm93IGRlcHJlY2F0ZWQuCglVcGRhdGVkIGFsbCB1c2Vycy4KCSogZG9jcy9DSEFOR0VTOiBEb2N1bWVudCBpdC4KCjIwMDMtMDgtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IEFjY2VwdCBsb3dlcmNhc2UgY2hhcmFjdGVycwoJZm9yIHNwYWNpbmcuCgoyMDAzLTA4LTI3ICBNaWtlIEZBQklBTiAgPG1mYWJpYW5Ac3VzZS5kZT4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KSwgc3JjL2JkZi9iZGZkcml2ci5jCgkoQkRGX0ZhY2VfSW5pdCk6IEFjY2VwdCBsb3dlcmNhc2UgY2hhcmFjdGVycyBmb3Igc2xhbnQgYW5kIHdlaWdodC4KCjIwMDMtMDgtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IERpc2FibGluZyBUcnVlVHlwZSBieXRlY29kZQoJaW50ZXJwcmV0ZXIgdW50aWwgdGhlIFVOUEFURU5URURfSElOVElORyB3b3JrcyBhcyBhZHZlcnRpc2VkLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IFVzZSBgfCcgZm9yCglzZXR0aW5nIGBsb2FkX2ZsYWdzJy4KCgkqIEphbWZpbGU6IEFkZGluZyB0aGUgYHJlZmRvYycgdGFyZ2V0IHRvIHRoZSBKYW1maWxlIGluIG9yZGVyIHRvCglidWlsZCB0aGUgQVBJIFJlZmVyZW5jZSBpbiBgZG9jcy9yZWZlcmVuY2UnIGF1dG9tYXRpY2FsbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0ZvbnRJbmZvUmVjKSwgc3JjL2NpZC9jaWR0b2tlbi5oLAoJc3JjL3R5cGUxL3QxdG9rZW5zLmgsIHNyYy90eXBlNDIvdDQycGFyc2UuYzogUmVzZXR0aW5nIHRoZSB0eXBlcyBvZgoJYGl0YWxpY19hbmdsZScsIGB1bmRlcmxpbmVfcG9zaXRpb24nLCBhbmQgYHVuZGVybGluZV90aGlja25lc3MnIHRvCgl0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGkuZS4sIGxvbmcsIHNob3J0LCBhbmQgdXNob3J0KSBpbiBvcmRlciB0bwoJYXZvaWQgYnJlYWtpbmcgYmluYXJ5IGNvbXBhdGliaWxpdHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dW5wYXQuaDogRml4aW5nIGRvY3VtZW50YXRpb24gY29tbWVudC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIGRldmVsL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORyk6IFJlcGxhY2VkCgl3aXRoLi4uCgkoVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcpOiBUaGlzLiAgVXBkYXRlZCBhbGwgdXNlcnMuCgkoVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcpOiBSZW1vdmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfREVCVUdfSE9PS19UWVBFMSk6IFJlbW92ZWQuCgkoRlRfREVCVUdfSE9PS19VTlBBVEVOVEVEX0hJTlRJTkcpOiBOZXcgbWFjcm8uICBVc2UgdGhpcyB3aXRoCglgRlRfU2V0X0RlYnVnX0hvb2snIHRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIHJlbW92ZWQKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jICh0dF9mYWNlX2luaXQpOiBVc2UKCWBGVF9ERUJVR19IT09LX1VOUEFURU5URURfSElOVElORycuCgoyMDAzLTA4LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKSwgc3JjL2NmZi9jZmZnbG9hZC5jCgkoY2ZmX3Nsb3RfbG9hZCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6IEZpeAoJcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0wOC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCksIHNyYy9jZmYvY2ZmZ2xvYWQuYwoJKGNmZl9zbG90X2xvYWQpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9zbG90X2xvYWRfZ2x5cGgpOiBBcHBseQoJZm9udCBtYXRyaXggdG8gYWR2YW5jZSB3aWR0aCBhbHNvLgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjQ6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dseXBoU2xvdCk6IENoYW5nZSAyMDAzLTA2LTE2CglhbHNvIGJyZWFrcyBiaW5hcnkgY29tcGF0aWJpbGl0eS4gIFJlaW50cm9kdWNlIGFuIHVuc2lnbmVkIGludGVnZXIKCWF0IHRoZSBvbGQgcG9zaXRpb24gb2YgYGZsYWdzJyBjYWxsZWQgYHJlc2VydmVkJy4KCjIwMDMtMDctMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtlIEFQSSByZWZlcmVuY2UgdmFsaWQgSFRNTCA0LjAxIHRyYW5zaXRpb25hbC4KCgkqIHNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHkgKGh0bWxfaGVhZGVyXzEpOiBBZGQgZG9jdHlwZQoJYW5kIGNoYXJzZXQuCgkoaHRtbF9oZWFkZXJfMik6IEZpeCBzdHlsZSBlbGVtZW50cyBhbmQgYWRkIHNvbWUgbW9yZS4KCUZpeCBzeW50YXguCgkoYmxvY2tfaGVhZGVyLCBibG9ja19mb290ZXIsIGRlc2NyaXB0aW9uX2hlYWRlciwgZGVzY3JpcHRpb25fZm9vdGVyLAoJbWFya2VyX2hlYWRlciwgbWFya2VyX2Zvb3Rlciwgc291cmNlX2hlYWRlciwgc291cmNlX2Zvb3RlciwKCWNoYXB0ZXJfaGVhZGVyKTogRG9uJ3QgdXNlIDxjZW50ZXI+Li4uPC9jZW50ZXI+IGJ1dCBgYWxpZ249Y2VudGVyJwoJdGFibGUgYXR0cmlidXRlLgoJKGNoYXB0ZXJfaW50ZXIsIGNoYXB0ZXJfZm9vdGVyKTogQWRkIDxsaT4gYW5kIHVzZSBzcGVjaWFsIDx1bD4KCWNsYXNzLgoJVXNlIGRvdWJsZSBxdW90ZXMgYXJvdW5kIHRhYmxlIHdpZHRocyBnaXZlbiBpbiBwZXJjZW50LgoJKGtleXdvcmRfcHJlZml4LCBrZXl3b3JkX3N1ZmZpeCk6IERvbid0IGNoYW5nZSBmb250IGNvbG91ciBkaXJlY3RseQoJYnV0IHVzZSBhIG5ldyA8c3Bhbj4gY2xhc3MuCgkoc2VjdGlvbl9zeW5vcHNpc19oZWFkZXIsIHNlY3Rpb25fc3lub3BzaXNfZm9vdGVyKTogRG9uJ3QgY2hhbmdlCgljb2xvdXIuCgkoY29kZV9oZWFkZXIsIGNvZGVfZm9vdGVyKTogRG9uJ3QgY2hhbmdlIGZvbnQgY29sb3VyIGRpcmVjdGx5IGJ1dAoJdXNlIGEgc3BlY2lhbCA8cHJlPiBjbGFzcy4KCShwcmludF9odG1sX2ZpZWxkKTogPHRyPiBnZXRzIHRoZSBgdmFsaWduJyBhdHRyaWJ1dGUsIG5vdCA8dGFibGU+LgoJKHByaW50X2h0bWxfZmllbGRfbGlzdCk6IERpdHRvLgoJKGluZGV4X2V4aXQpOiBEb24ndCB1c2UgPGNlbnRlcj4uLi48L2NlbnRlcj4gYnV0IGBhbGlnbj1jZW50ZXInCgl0YWJsZSBhdHRyaWJ1dGUuCgkoc2VjdGlvbl9lbnRlcik6IERpdHRvLgoJKHRvY19leGl0KTogRG9uJ3QgZW1pdCA8L3RhYmxlPi4KCShibG9ja19lbnRlcik6IFVzZSA8aDQ+PGE+LCBub3QgPGE+PGg0Pi4KCShfX2luaXRfXyk6IEZpeCB0YWcgb3JkZXIgaW4gc2VsZi5odG1sX2Zvb3Rlci4KCjIwMDMtMDctMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglUaGlzIGNoYW5nZSByZWltcGxlbWVudHMgZml4IGZyb20gMjAwMy0wNS0zMCB3aXRob3V0IGJyZWFraW5nCgliaW5hcnkgY29tcGF0aWJpbGl0eS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAoUFNfRm9udEluZm9SZWMpOiBgaXRhbGljX2FuZ2xlJywKCWBpc19maXhlZF9waXRjaCcsIGB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycgYXJlCglyZXZlcnRlZCB0byBiZSBub3JtYWwgdmFsdWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBSZW1vdmUKCWBUMV9GSUVMRF9UWVBFX0JPT0xfUCcsIGBUMV9GSUVMRF9UWVBFX0lOVEVHRVJfUCcsCglgVDFfRklFTERfVFlQRV9GSVhFRF9QJywgYFQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMF9QJy4KCShUMV9GSUVMRF9UWVBFX0JPT0xfUCwgVDFfRklFTERfTlVNX1AsIFQxX0ZJRUxEX0ZJWEVEX1AsCglUMV9GSUVMRF9GSVhFRF8xMDAwX1ApOiBSZW1vdmVkLgoJKFQxX0ZJRUxEX1RZUEVfQk9PTCk6IFJlbmFtZWQgdG8uLi4KCShUMV9GSUVMRF9CT09MKTogTmV3IG1hY3JvLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogYGl0YWxpY19hbmdsZScsIGBpc19maXhlZF9waXRjaCcsCglgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYHVuZGVybGluZV90aGlja25lc3MnLCBgcGFpbnRfdHlwZScsCglgc3Ryb2tlX3dpZHRoJyBhcmUgcmV2ZXJ0ZWQgdG8gYmUgbm9ybWFsIHZhbHVlcy4KCShUNDJfS0VZV09SRF9DT1VOVCk6IE5ldyBtYWNyby4KCSh0NDJfcGFyc2VfZGljdCk6IE5ldyBhcnJheSBga2V5d29yZF9mbGFncycgdG8gbWFyayB0aGF0IGEgdmFsdWUgaGFzCglhbHJlYWR5IGJlZW4gYXNzaWduZWQgdG8gYSBkaWN0aW9uYXJ5IGVudHJ5LgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCwgVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IGBpdGFsaWNfYW5nbGUnLCBgaXNfZml4ZWRfcGl0Y2gnLAoJYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJyBhcmUgcmV2ZXJ0ZWQgdG8gYmUKCW5vcm1hbCB2YWx1ZXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9kb25lLCBjaWRfZmFjZV9pbml0KTogVXBkYXRlZC4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IGBpdGFsaWNfYW5nbGUnLCBgaXNfZml4ZWRfcGl0Y2gnLAoJYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJywgYHBhaW50X3R5cGUnLAoJYHN0cm9rZV93aWR0aCcgYXJlIHJldmVydGVkIHRvIGJlIG5vcm1hbCB2YWx1ZXMuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Eb25lLCBUMV9GYWNlX0luaXQpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX0ZJRUxEX0NPVU5UKTogTmV3IG1hY3JvLgoJKHBhcnNlX2RpY3QpOiBBZGQgcGFyYW1ldGVyIGZvciBrZXl3b3JkIGZsYWdzLgoJUmVjb3JkIG9ubHkgZmlyc3QgaW5zdGFuY2Ugb2YgYSBmaWVsZC4KCShUMV9PcGVuX0ZhY2UpOiBOZXcgYXJyYXkgYGtleXdvcmRfZmxhZ3MnLgoKMjAwMy0wNy0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA1LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byAxMDowOjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpOiBGaXggLS10aXRsZS4KCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTCwgUkVBRE1FOiBVcGRhdGVkLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL3NvdXJjZXMucHkgKHJlX2Nyb3NzcmVmKTogRml4IHJlZ3VsYXIKCWV4cHJlc3Npb24gdG8gaGFuZGxlIHRyYWlsaW5nIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuCgkqIHNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHkgKG1ha2VfaHRtbF93b3JkKTogVXBkYXRlZC4KCgkqIGRvY3MvcmVsZWFzZTogTmV3IGZpbGUuCgoyMDAzLTA3LTIzICBZQU1BTk8tVUNISSBIaWRldG9zaGkgIDxtZXJAZGluLm9yLmpwPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU19QYXJzZXJfRnVuY3NSZWMpOiBOZXcKCW1lbWJlciBmdW5jdGlvbiBgdG9fYnl0ZXMnLgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmMgKHBzX3BhcnNlcl9mdW5jcyk6IE5ldyBtZW1iZXIKCWBwc19wYXJzZXJfdG9fYnl0ZXMnLgoJKHBzYXV4X21vZHVsZV9jbGFzcyk6IEluY3JlYXNlIHZlcnNpb24gdG8gMHgyMDAwMEwuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKElTX1QxX0xJTkVTUEFDRSk6IEFkZCBcZi4KCShJU19UMV9OVUxMU1BBQ0UpOiBOZXcgbWFjcm8uCgkoSVNfVDFfU1BBQ0UpOiBBZGQgaXQuCgkoc2tpcF9zcGFjZXMsIHNraXBfYWxwaGEpOiBOZXcgZnVuY3Rpb25zLgoJKHBzX3BhcnNlcl9za2lwX3NwYWNlcywgcHNfcGFyc2VyX3NraXBfYWxwaGEpOiBVc2UgdGhlbS4KCShwc190b2J5dGVzLCBwc19wYXJzZXJfdG9fYnl0ZXMpOiBOZXcgZnVuY3Rpb25zLgoKMjAwMy0wNy0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChET0NfRElSKTogTmV3IHZhcmlhYmxlLgoJKHJlZmRvYyk6IFVzZSAqX0RJUiB2YXJpYWJsZXMuCgkoZGlzdGNsZWFuKTogUmVtb3ZlIGRvY3VtZW50YXRpb24gZmlsZXMuCgoJKiBidWlsZHMvZGV0ZWN0Lm1rIChzdGRfc2V0dXAsIGRvc19zZXR1cCk6IE1lbnRpb24gYG1ha2UgcmVmZG9jJy4KCgkqIGNvbmZpZ3VyZTogU2V0IERPQ19ESVIgdmFyaWFibGUuCgoyMDAzLTA3LTA3ICBQYXRyaWsgSORnZ2x1bmQgIDxwYXRyaWsuaGFnZ2x1bmRAYnJlZGJhbmQubmV0PgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpOiBOZXcgdGFyZ2V0IHRvIGJ1aWxkIHRoZQoJZG9jdW1lbnRhdGlvbi4KCSguUEhPTlkpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgRlRfQ2hhck1hcC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLGg6IEZpeCBkb2N1bWVudGF0aW9uIG9mIEZUX09VVExJTkVfRkxBR1MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaDogRG9jdW1lbnQgRlRfU2ZudF9UYWcuCgoyMDAzLTA3LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpLCBzcmMvcGNmL3BjZnJlYWQuYwoJKHBjZl9sb2FkX2ZvbnQpOiBGaXggY29tcHV0YXRpb24gb2YgaGVpZ2h0IGlmIFBJWEVMX1NJWkUgcHJvcGVydHkgaXMKCW1pc3NpbmcuCgoyMDAzLTA3LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9jb21wYXJlKTogT25seSBhZGQgYHNpemUnIGlmCgl0aGVyZSBpcyBubyBlcnJvci4gIFJlcG9ydGVkIGJ5IEtudXQgU3QuIE9zbXVuZHNlbgoJPGJpcmQtZnJlZXR5cGVAYW5kdWluLm5ldD4uCgoyMDAzLTA2LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQSBuZXcgdHJ5IHRvIHN5bmNocm9uaXplIGJpdG1hcCBmb250IGFjY2Vzcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfQml0bWFwX1NpemUpOiBgaGVpZ2h0JyBpcyBub3cKCWRlZmluZWQgdG8gcmV0dXJuIHRoZSBiYXNlbGluZS10by1iYXNlbGluZSBkaXN0YW5jZS4gIFRoaXMgd2FzCglhbHJlYWR5IHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQkRGIGFuZCBQQ0YgZHJpdmVycy4KCglUaGUgYHdpZHRoJyBmaWVsZCBub3cgZ2l2ZXMgdGhlIGF2ZXJhZ2Ugd2lkdGguICBJIHdhc24ndCBhYmxlIHRvCglmaW5kIHNvbWV0aGluZyBiZXR0ZXIuICBJdCBzaG91bGQgYmUgdGFrZW4gYXMgaW5mb3JtYXRpdmUgb25seS4KCglOZXcgZmllbGRzIGBzaXplJywgYHhfcHBlbScsIGFuZCBgeV9wcGVtJy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCURvIHByb3BlciByb3VuZGluZyBhbmQgY29udmVyc2lvbiBmcm9tIDcyLjI3IHRvIDcyIHBvaW50cy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCglEbyBwcm9wZXIgcm91bmRpbmcgYW5kIGNvbnZlcnNpb24gZnJvbSA3Mi4yNyB0byA3MiBwb2ludHMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBVcGRhdGVkIHRvIHByb3Blcmx5IGZpbGwKCUZUX0JpdG1hcF9TaXplLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfRmFjZV9Jbml0KTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCjIwMDMtMDYtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglSZWRlc2lnbmluZyB0aGUgRk5UIGRyaXZlciB0byByZXR1cm4gbXVsdGlwbGUgZmFjZXMsIG5vdCBtdWx0aXBsZQoJc3RyaWtlcy4gIEF0IGxlYXN0IG9uZSBmb250IChhcHA4NTAuZm9uIGZyb20gV2luTUUpIGNvbnRhaW5zCglkaWZmZXJlbnQgRk5UIGNoYXJtYXBzIGZvciBpdHMgc3ViZm9udHMuICBDb25zZXF1ZW50bHksIHRoZSBwcmV2aW91cwoJZGVzaWduIG9mIGhhdmluZyBtdWx0aXBsZSBiaXRtYXAgc3RyaWtlcyBpbiBhIHNpbmdsZSBmb250IGZhY2UgZmFpbHMKCXNpbmNlIHdlIGhhdmUgb25seSBvbmUgY2hhcm1hcCBwZXIgZmFjZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaCAoRk5UX1NpemVfUmVjKTogUmVtb3ZlZC4KCShGTlRfRmFjZVJlYyk6IFJlbW92ZSBgbnVtX2ZvbnRzJyBmaWVsZCBhbmQgcmVwbGFjZSBgZm9udHMnIHdpdGgKCWBmb250Jy4KCgkqIHNyYy9iYXNlL2Z0d2luZm50LmMgKEZUX0dldF9XaW5GTlRfSGVhZGVyKTogVXBkYXRlZC4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoZm50X2ZvbnRfbG9hZCk6IERvbid0IHNldCBwaXhlbF93aWR0aCBlcXVhbAoJdG8gcGl4ZWxfaGVpZ2h0LgoJKGZudF9mYWNlX2RvbmVfZm9udHMpOiBSZW1vdmVkLgoJKGZudF9mYWNlX2dldF9kbGxfZm9udHMpOiBSZW5hbWVkIHRvLi4uCgkoZm50X2ZhY2VfZ2V0X2RsbF9mb250KTogVGhpcy4gIEFkZCBzZWNvbmQgZnVuY3Rpb24gYXJndW1lbnQgdG8KCXNlbGVjdCBmYWNlIGluZGV4LgoJVXBkYXRlZCB0byBsb2FkIGp1c3Qgb25lIHN1YmZvbnQuCgkoZm50X2ZvbnRfZG9uZSwgRk5UX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoRk5UX0ZhY2VfSW5pdCk6IEhhbmRsZSBgZmFjZV9pbmRleCcuCglVcGRhdGVkLgoJKEZOVF9TaXplX1NldF9QaXhlbHMpOiBTaW1wbGlmaWVkOyBzaW1pbGFyIHRvIEJERiBhbmQgUENGLCB0aGUKCWJpdG1hcCB3aWR0aCBpcyBub3cgaWdub3JlZC4KCShGTlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglGaXggZ2x5cGggaW5kZXggY29tcHV0YXRpb24uCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAzLTA2LTI1ICBPd2VuIFRheWxvciAgPG90YXlsb3JAcmVkaGF0LmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfaGRteCk6IERvbid0IGFzc2lnbgoJbnVtX3JlY29yZHMgdW50aWwgd2UgYWN0dWFsbHkgZGVjaWRlIHRvIGxvYWQgdGhlIHRhYmxlLAoJb3RoZXJ3aXNlLCB3ZSdsbCBzZWdmYXVsdCBpbiB0dF9mYWNlX2ZyZWVfaGRteC4KCjIwMDMtMDYtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9nbHlwaF9uYW1lKTogUHJvdGVjdCBhZ2FpbnN0IHplcm8KCWdseXBoIG5hbWUgcG9pbnRlci4gIFJlcG9ydGVkIGJ5IE1pa2V5IEFuYmFyeSA8bWFuYmFyeUB2aXpydC5jb20+LgoKMjAwMy0wNi0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFVwZGF0ZWQgdG8gQUdMIDIuMC4KCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaDogUmVnZW5lcmF0ZWQuCgoyMDAzLTA2LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmgsIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCwKCXNyYy9iYXNlL2Z0Y2FsYy5jLCBzcmMvYmFzZS9mdHRyaWdvbi5jLCBzcmMvY2ZmL2NmZmdsb2FkLmMsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6CglEZWNvcmF0ZSBjb25zdGFudHMgd2l0aCBgVScgYW5kIGBMJyBpZiBhcHByb3ByaWF0ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogVXBkYXRlZCB0byBpbmNsdWRlIHJlY2VudCBtb2R1bGUKCWFkZGl0aW9ucy4KCgkqIHNyYy9wc2hpbnRlci9wc2hudGVyci5oIChGVF9FUlJfQkFTRSk6IERlZmluZSBhcwoJYEZUX01vZF9FcnJfUFNoaW50ZXInLgoJKiBzcmMvdHlwZTQyL3Q0MmVycm9yLmggKEZUX0VSUl9CQVNFKTogRGVmaW5lIGFzCglgRlRfTW9kX0Vycl9UeXBlNDInLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5oIChQU19ISU5UU19NQUdJQyk6IFJlbW92ZWQuICBOb3QgdXNlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggW19fTVdFUktTX19dOiBEZWZpbmUgRlRfTE9ORzY0CglhbmQgRlRfSU5UNjQuCgoyMDAzLTA2LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogVXNlIGZpcnN0X2NoYXIgaW4KCWNvbXB1dGF0aW9uIG9mIGdseXBoX2luZGV4LgoJKEZOVF9TaXplX1NldF9QaXhlbHMpOiBUbyBmaW5kIGEgc3RyaWtlLCBmaXJzdCBjaGVjayBwaXhlbF9oZWlnaHQKCW9ubHksIHRoZW4gdHJ5IHRvIGZpbmQgYSBiZXR0ZXIgaGl0IGJ5IGNvbXBhcmluZyBwaXhlbF93aWR0aCBhbHNvLgoJV2l0aG91dCB0aGlzIGZpeCBpdCBpc24ndCBwb3NzaWJsZSB0byBhY2Nlc3MgYWxsIHN0cmlrZXMuCglBbHNvIGNvbXB1dGUgbWV0cmljcy5tYXhfYWR2YW5jZSB0byBiZSBpbiBzeW5jIHdpdGggb3RoZXIgYml0bWFwCglkcml2ZXJzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkoRlRfU2V0X1BpeGVsX1NpemUpOiBBc3NpZ24gdmFsdWUgdG8gYG1ldHJpY3MnIGFmdGVyIHZhbGlkYXRpb24gb2YKCWFyZ3VtZW50cy4KCjIwMDMtMDYtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglTeW5jaHJvbml6ZSBjb21wdXRhdGlvbiBvZiBoZWlnaHQgYW5kIHdpZHRoIGZvciBiaXRtYXAgc3RyaWtlcy4gIFRoZQoJYHdpZHRoJyBmaWVsZCBpbiB0aGUgRlRfQml0bWFwX1NpemUgc3RydWN0dXJlIGlzIG5vdyBvbmx5IHVzZWZ1bCB0bwoJZW51bWVyYXRlIGRpZmZlcmVudCBzdHJpa2VzLiAgVGhlIGBtYXhfYWR2YW5jZScgZmllbGQgb2YgdGhlCglGVF9TaXplX01ldHJpY3Mgc3RydWN0dXJlIHNob3VsZCBiZSB1c2VkIHRvIGdldCB0aGUgKG1heGltdW0pIHdpZHRoCglvZiBhIHN0cmlrZS4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IERvbid0IHVzZSBBVkVSQUdFX1dJRFRIIGZvcgoJY29tcHV0aW5nIGBhdmFpbGFibGVfc2l6ZXMtPndpZHRoJyBidXQgbWFrZSBpdCBhbHdheXMgZXF1YWwgdG8KCWBhdmFpbGFibGVfc2l6ZXMtPmhlaWdodCcuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IERvbid0IHVzZSBSRVNPTFVUSU9OX1ggZm9yCgljb21wdXRpbmcgYGF2YWlsYWJsZV9zaXplcy0+d2lkdGgnIGJ1dCBtYWtlIGl0IGFsd2F5cyBlcXVhbCB0bwoJYGF2YWlsYWJsZV9zaXplcy0+aGVpZ2h0Jy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfUGl4ZWxfU2l6ZXMpOiBQYXNzIG9ubHkgc2luZ2xlCglhcmd1bWVudCB0byBmdW5jdGlvbi4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzX3VuaWNvZGVfdmFsdWUpOiBIYW5kbGUgYC4nIGFmdGVyCglgdW5pWFhYWCcgYW5kIGB1WFhYWFtYW1hdXScuCgoyMDAzLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IHMvRlRfRXJyXy9CREZfRXJyLy4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMsIHNyYy9jYWNoZS9mdGNzYml0cy5jLCBzcmMvY2FjaGUvZnRscnUuYzoKCXMvRlRfRXJyXy9GVENfRXJyXy8uCgkqIHNyYy9jZmYvY2ZmY21hcC5jOiBzL0ZUX0Vycl8vQ0ZGX0Vycl8vLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IHMvRlRfRXJyXy9QQ0ZfRXJyXy8uCgkqIHNyYy9wc2F1eC90MWNtYXAuYzogSW5jbHVkZSBwc2F1eGVyci5oLgoJcy9GVF9FcnJfL1BTYXV4X0Vycl8vLgoJKiBzcmMvcHNoaW50ZXIvcHNobnRlcnIuaDogTmV3IGZpbGUuCgkqIHNyYy9wc2hpbnRlci9ydWxlcy5tazogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uYywgc3JjL3BzaGludGVyL3BzaHJlYy5jOiBJbmNsdWRlIHBzaG50ZXJyLmguCglzL0ZUX0Vycl8vUFNIX0Vycl8vLgoJKiBzcmMvcGZyL3BmcmRyaXZyLmMsIHNyYy9wZnIvcGZyb2Jqcy5jLCBzcmMvcGZyL3BmcnNiaXQuYzoKCXMvRlRfRXJyXy9QRlJfRXJyXy8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsCglzcmMvc2ZudC90dGxvYWQuYzogcy9GVF9FcnJfL1NGTlRfRXJyXy8uCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IHMvRlRfRXJyXy9UVF9FcnJfLy4KCSogc3JjL2d6aXAvZnRnemlwLmM6IExvYWQgRlRfTU9EVUxFX0VSUk9SU19IIGFuZCBkZWZpbmUKCUZUX0VSUl9QUkVGSVggYW5kIEZUX0VSUl9CQVNFLgoJcy9GVF9FcnJfL0d6aXBfRXJyXy8uCgoyMDAzLTA2LTE5ICBEaXJjayBCbGFza2V5ICA8bGlzdHRhcmdldEBkYW5iYWxhLmNvbT4KCgkqIHNyYy9jZmYvY2ZmbG9hZCAoY2ZmX2VuY29kaW5nX2xvYWQpOiBgbmxlZnQnIG11c3QgYmUgRlRfVUludCwKCW90aGVyd2lzZSBhZGRpbmcgMSBtaWdodCB3cmFwIHRoZSByZXN1bHQuCgoyMDAzLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2RlX3ZhbHVlKTogQWRkIHN1cHBvcnQgdG8KCXJlY29nbml6ZSBgdVhYWFhbWFtYXV0nIGdseXBoIG5hbWVzLgoJRG9uJ3QgaGFuZGxlIGdseXBoIG5hbWVzIHN0YXJ0aW5nIHdpdGggYHVuaScgd2hpY2ggaGF2ZSBtb3JlIHRoYW4KCWZvdXIgZGlnaXRzLgoKMjAwMy0wNi0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9PcGVuX0ZsYWdzKTogUmVwbGFjZWQgd2l0aAoJI2RlZmluZXMgZm9yIHRoZSBjb25zdGFudHMuCgkoRlRfT3Blbl9BcmdzKTogQ2hhbmdlIHR5cGUgb2YgYGZsYWdzJyB0byBGVF9VSW50LgoJKEZUX0dseXBoU2xvdCk6IE1vdmUgYGZsYWdzJyB0byBGVF9TbG90X0ludGVybmFsLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX091dGxpbmVfRmxhZ3MsIEZUX1Jhc3Rlcl9GbGFnKToKCVJlcGxhY2VkIHdpdGggI2RlZmluZXMgZm9yIHRoZSBjb25zdGFudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9TbG90X0ludGVybmFsKTogTmV3CglmaWVsZCBgZmxhZ3MnIChmcm9tIEZUX0dseXBoU2xvdCkuCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBzb3VyY2UgZmlsZXMuCgkoRlRfR0xZUEhfT1dOX0JJVE1BUCk6IE5ldyBtYWNybyAoZnJvbSBmdGdsb2Fkci5oKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCAoRlRfR0xZUEhfT1dOX0JJVE1BUCk6IE1vdmVkCgl0byBmdG9ianMuaC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogVXNlIGR1bW15CglGVF9HbHlwaFNsb3RfSW50ZXJuYWwgb2JqZWN0LgoKMjAwMy0wNi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2djYy5taywgYnVpbGRzL2NvbXBpbGVyL2djYy1kZXYubWsgKENGTEFHUyk6CglBZGQgLWZuby1zdHJpY3QtYWxpYXNpbmcgdG8gZ2V0IHJpZCBvZiB6aWxsaW9uIHdhcm5pbmdzIGZyb20gZ2NjCgl2ZXJzaW9uIDMuMy4KCjIwMDMtMDYtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oIChmdF9nbHlwaF9iYm94X3Vuc2NhbGVkLAoJZnRfZ2x5cGhfYmJveF9zdWJwaXhlbHMsIGZ0X2dseXBoX2Jib3hfZ3JpZGZpdCwKCWZ0X2dseXBoX2Jib3hfdHJ1bmNhdGUsIGZ0X2dseXBoX2Jib3hfcGl4ZWxzKTogUmVwbGFjZWQgd2l0aAoJRlRfR0xZUEhfQkJPWF9VTlNDQUxFRCwgRlRfR0xZUEhfQkJPWF9TVUJQSVhFTFMsCglGVF9HTFlQSF9CQklYX0dSSURGSVQsIEZUX0dMWVBIX0JCT1hfVFJVTkNBVEUsIEZUX0dMWVBIX0JCT1hfUElYRUxTLgoJVGhlIGxvd2VyY2FzZSB2YXJpYW50cyBhcmUgbm93IChkZXByZWNhdGVkIGFsaWFzZXMpIHRvIHRoZSB1cHBlcmNhc2UKCXZlcnNpb25zLgoJVXBkYXRlZCBhbGwgb3RoZXIgZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKGZ0X21vZHVsZV9mb250X2RyaXZlciwKCWZ0X21vZHVsZV9yZW5kZXJlciwgZnRfbW9kdWxlX2hpbnRlciwgZnRfbW9kdWxlX3N0eWxlciwKCWZ0X21vZHVsZV9kcml2ZXJfc2NhbGFibGUsIGZ0X21vZHVsZV9kcml2ZXJfbm9fb3V0bGluZXMsCglmdF9tb2R1bGVfZHJpdmVyX2hhc19oaW50ZXIpOiBSZXBsYWNlZCB3aXRoIEZUX01PRFVMRV9GT05UX0RSSVZFUiwKCUZUX01PRFVMRV9SRU5ERVJFUiwgRlRfTU9EVUxFX0hJTlRFUiwgRlRfTU9EVUxFX1NUWUxFUiwKCUZUX01PRFVMRV9EUklWRVJfU0NBTEFCTEUsIEZUX01PRFVMRV9EUklWRVJfTk9fT1VUTElORVMsCglGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIuCglUaGUgbG93ZXJjYXNlIHZhcmlhbnRzIGFyZSBub3cgKGRlcHJlY2F0ZWQgYWxpYXNlcykgdG8gdGhlIHVwcGVyY2FzZQoJdmVyc2lvbnMuCglVcGRhdGVkIGFsbCBvdGhlciBmaWxlcy4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfR2V0X0NCb3gpOiBIYW5kbGUgYmJveF9tb2RlIGJldHRlcgoJYXMgZW51bWVyYXRpb24uCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmMgKHBjZl9kcml2ZXJfY2xhc3MpLCBzcmMvd2luZm9udHMvd2luZm50LmMKCSh3aW5mbnRfZHJpdmVyX2NsYXNzKSwgc3JjL2JkZi9iZGZkcml2ci5jIChiZGZfZHJpdmVyX2NsYXNzKTogQWRkCgl0aGUgRlRfTU9EVUxFX0RSSVZFUl9OT19PVVRMSU5FUyBmbGFnLgoKMjAwMy0wNi0xMyAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogQXBwbHkgZm9udCBtYXRyaXguCgoyMDAzLTA2LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogVGVzdCBub3Qgb25seSBmb3IgYERvcycgYnV0IGZvciBgRE9TJyBhbHNvLgoKCSogYnVpbGRzL2Rvcy9kb3MtZW14Lm1rLCBidWlsZHMvY29tcGlsZXIvZW14Lm1rOiBOZXcgZmlsZXMgZm9yCglFTVggZ2NjIGNvbXBpbGVyLgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQWRkIHRhcmdldCBgZW14Jy4KCgkqIGJ1aWxkcy9jb21waWxlci93YXRjb20ubWsgKExJTktfTElCUkFSWSk6IEdOVSBNYWtlIGZvciBET1MgZG9lc24ndAoJbGlrZSBhIHRyYWlsaW5nIHNlbWljb2xvbjsgYWRkIGEgZHVtbXkgY29tbWFuZC4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jOiBSZW1vdmUgcGFyc2VfZm9udF9iYm94IGNvZGUgKGFscmVhZHkgZW5jbG9zZWQKCXdpdGggI2lmIDAgLi4uICNlbmRpZikuCgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogSGFuZGxlIC9Gb250TmFtZS4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X25hbWUpOiBSZW1vdmVkLgoJUmVtb3ZlIHBhcnNlX2ZvbnRfYmJveCBjb2RlIChhbHJlYWR5IGVuY2xvc2VkIHdpdGggI2lmIDAgLi4uCgkjZW5kaWYpLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2VfZm9udF9uYW1lKTogUmVtb3ZlZC4KCVJlbW92ZSB0NDJfcGFyc2VfZm9udF9iYm94IGNvZGUgKGFscmVhZHkgZW5jbG9zZWQgd2l0aCAjaWYgMCAuLi4KCSNlbmRpZikuCgkodDQyX2tleXdvcmRzKTogSGFuZGxlIC9Gb250TmFtZSB3aXRoIFQxX0ZJRUxEX0tFWS4KCjIwMDMtMDYtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglUMV9GSUVMRF9UWVBFX0tFWS4KCShUMV9GSUVMRF9LRVkpOiBOZXcgbWFjcm8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBIYW5kbGUKCVQxX0ZJRUxEX1RZUEVfS0VZLgoKCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBVc2UgVDFfRklFTERfS0VZIGZvciAvQ0lERm9udE5hbWUuCgoyMDAzLTA2LTExICBBbGV4YW5kZXIgTWFsbWJlcmcgIDxhbGV4YW5kZXJAbWFsbWJlcmcub3JnPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydUxpc3RfUmVtb3ZlX1NlbGVjdGlvbik6IERlY3JlYXNlCgludW1iZXIgb2Ygbm9kZXMuCgkoRlRfTHJ1TGlzdF9Mb29rdXApOiBGaXggYXNzZXJ0aW9uIGZvciBvdXQtb2YtbWVtb3J5IGNhc2UuCgoyMDAzLTA2LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBSZW1vdmVkLgoJKGNpZF9yZWFkX3N1YnJzKTogVXNlIHQxX2RlY3J5cHQgZnJvbSBwc2F1eCBtb2R1bGUuCgkqIHNyYy9jaWQvY2lkbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogVXNlIHQxX2RlY3J5cHQgZnJvbSBwc2F1eAoJbW9kdWxlLgoKMjAwMy0wNi0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmM6IEFwcGx5IGNoYW5nZSAyMDAzLTA1LTMxIGZyb20gPFJvbi5EZXZAZ214LmRlPi4KCUNvbXB1dGUgc3R5bGUgZmxhZ3MuCglGaXggY29tcHV0YXRpb24gb2Ygcm9vdC0+aGVpZ2h0LgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IEhhbmRsZSBGb250QkJveC4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9sb2FkX2tleXdvcmQpOiBIYW5kbGUKCVQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkocGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCShjaWRfZmllbGRfcmVjb3JkKTogQ29tbWVudCBvdXQgZWxlbWVudCBmb3IgcGFyc2luZyBGb250QkJveC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkodDQyX2tleXdvcmRzKTogSGFuZGxlIEZvbnRCQm94IHdpdGggVDFfRklFTERfQkJPWCwgbm90IHdpdGgKCVQxX0ZJRUxEX0NBTExCQUNLLgoJKHQ0Ml9wYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKHQ0Ml9sb2FkX2tleXdvcmQpOiBIYW5kbGUgVDFfRklFTERfTE9DQVRJT05fQkJPWC4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBBcHBseSBjaGFuZ2UgMjAwMy0wNS0zMQoJZnJvbSA8Um9uLkRldkBnbXguZGU+LgoKMjAwMy0wNi0wOSAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoU2V0U3VwZXJSb3VuZCkgPDB4MzA+OiBGb2xsb3cgQXBwbGUncwoJVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4KCShJbnNfTURSUCwgSW5zX01JUlApOiBGaXggc2luZ2xlIHdpZHRoIGN1dC1pbiB0ZXN0LgoKMjAwMy0wNi0wOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiAoaW5mbGF0ZV9tYXNrKTogUmVwbGFjZWQgd2l0aC4uLgoJKE5PX0lORkxBVEVfTUFTSyk6IFRoaXMuCgkqIHNyYy9nemlwL2luZnV0aWwuaDogRGVjbGFyZSBgaW5mbGF0ZV9tYXNrJyBjb25kaXRpb25hbGx5IGJ5CglOT19JTkZMQVRFX01BU0suCgoyMDAzLTA2LTA5ICBBbGV4aXMgUy4gTC4gQ2FydmFsaG8gIDxhbGV4aXNAY2VjbS51c3AuYnI+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2ZpbGxfb3V0cHV0KTogSGFuZGxlIFpfU1RSRUFNX0VORAoJY29ycmVjdGx5LgoKMjAwMy0wNi0wOSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IENoYW5nZSBjYWxjdWxhdGlvbiBvZgoJZGltLT5zdGR3LmNvdW50IHRvIGF2b2lkIGNvbXBpbGVyIHByb2JsZW0uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX1NpbXBsZV9HbHlwaCk6IE1vdmUgdGhlIGJsb2NrCgl2YXJpYWJsZXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgY29tcGlsZXIKCXByb2JsZW1zLgoJQWRkIGNhc3RzIG5lY2Vzc2FyeSBmb3IgMTZiaXQgY29tcGlsZXJzLgoKMjAwMy0wNi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9ydWxlcy5tayAoUEZSX0RSVl9TUkMpOiBBZGQgcGZyc2JpdC5jLgoJKFBGUl9EUlZfSCk6IEFkZCBwZnJ0eXBlcy5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogcy9fX01XS1NfXy9fX01XRVJLU19fLy4KCjIwMDMtMDYtMDggIEthcmwgU2NodWx0eiAgPGtzY2h1bHR6QHJzaW5jLmNvbT4KCgkqIHNyYy9wZnIvcGZyc2JpdC5jIChwZnJfYml0d3JpdGVyX2luaXQpOiBDaGFuZ2UgdHlwZSBvZiB0aGlyZAoJYXJndW1lbnQgdG8gRlRfQm9vbC4KCShwZnJfbG9va3VwX2JpdG1hcF9kYXRhKTogQ2hhbmdlIHR5cGUgb2YgdGhpcmQgYW5kIGZvdXJ0aCBhcmd1bWVudAoJdG8gRlRfVUludC4gIFVwZGF0ZWQgY2FsbGVyLgoJKHBmcl9sb2FkX2JpdG1hcF9iaXRzKTogQ2hhbmdlIHR5cGUgb2YgZm91cnRoIGFyZ3VtZW50IHRvIEZUX0Jvb2wuCgoyMDAzLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQ29tcGxldGVseSByZXZpc2VkIEZyZWVUeXBlJ3MgbWFrZSBtYW5hZ2VtZW50LgoKCS4gSW4gYWxsIG1ha2VmaWxlcyBgLycgaXMgdXNlZCBhcyB0aGUgcGF0aCBzZXBhcmF0b3IuICBUaGUKCSAgY29udmVyc2lvbiB0byB0aGUgcmVhbCBwYXRoIHNlcGFyYXRvcnMgaXMgZG9uZSBhcyBsYXRlIGFzCgkgIHBvc3NpYmxlIHVzaW5nICQoc3Vic3QgLi4uKS4KCgkuICQoSE9TVFNFUCkgbm8gbG9uZ2VyIGV4aXN0cy4gIE5vdywgJChTRVApIGdpdmVzIHRoZSBwYXRoIHNlcGFyYXRvcgoJICBmb3IgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCB0aGUgbmV3ICQoQ09NUElMRVJfU0VQKSB0aGUgcGF0aAoJICBzZXBhcmF0b3IgZm9yIHRoZSBjb21waWxlciB0b29scy4KCgkuICQoQlVJTEQpIGhhcyBiZWVuIHJlbmFtZWQgdG8gJChCVUlMRF9ESVIpLiAgSW4gZ2VuZXJhbCwgYWxsCgkgIGRpcmVjdG9yeSB2YXJpYWJsZXMgZW5kIHdpdGggYF9ESVInLiAgVGhlIHZhcmlhbnRzIGVuZGluZyBpbiBgXycKCSAgKGxpa2UgYEJBU0VfJyBoYXZlIGJlZW4gcmVtb3ZlZCkuCgoJVGhlIGZvbGxvd2luZyBDaGFuZ2VMb2cgZW50cmllcyBvbmx5IGRlc2NyaWJlIGNoYW5nZXMgd2hpY2ggYXJlCglub3QgcmVsYXRlZCB0byB0aGUgcmVkZXNpZ24uCgoJKiBidWlsZHMvYmVvcy9iZW9zLWRlZi5tayAoQlVJTERfRElSKTogRml4IHR5cG8uCgkqIGJ1aWxkcy9jb21waWxlci93YXRjb20ubWsgKExJTktfTElCUkFSWSk6IEZpeCBsaW5rZXIgY2FsbCB0byBhdm9pZAoJb3ZlcmxvbmcgYXJndW1lbnRzIGFzIHN1Z2dlc3RlZCBieSBKLiBBbGkgSGFybG93Cgk8YWxpQGF2cmMuY2l0eS5hYy51az4uCgkqIGJ1aWxkcy9kb3MvZG9zLXdhdC5tazogTmV3IGZpbGUuCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRlJFRVRZUEVfSCk6IEluY2x1ZGUgaGVhZGVyIGZpbGVzIGZyb20gdGhlCglgZGV2ZWwnIHN1YmRpcmVjdG9yeS4KCgkqIGJ1aWxkcy9vczIvb3MyLWRldi5taywgYnVpbGRzL3VuaXgvdW5peGRkZWYubWssCglidWlsZHMvdW5peC91bml4ZGRlZi5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1kZXYubWsgKEJVSUxEX0RJUik6IEZpeCBwYXRoLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChESVNUQ0xFQU4pOiBBZGQgYGZyZWV0eXBlMi5wYycuCgoyMDAzLTA2LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChGVF9OZXdfRmFjZV9Gcm9tX1NGTlQpOiBzL3JsZW4vc2ZudF9zaXplLyB0bwoJbWFrZSBpdCBjb21waWxlLgoKCSogZGV2ZWwvZnRvcHRpb24uaDogVXBkYXRlZC4KCjIwMDMtMDYtMDcgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy90cnVldHlwZS90dGdsb2FkLmg6CglzL2luZGV4L2lkeC8gdG8gZml4IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVXNlIG1vcmUgYHZvbGF0aWxlJyB0bwoJZml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoQlVJTERGSVhFRCk6IFJlbW92ZWQuCgkqIHNyYy9nemlwL2luZnRyZWVzLmMgKGluZmxhdGVfdHJlZXNfZml4ZWQpIFshQlVJTERGSVhFRF06IFVzZQoJRlRfVU5VU0VEIHRvIHJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMy0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZXIuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmg6IFRoaXMuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYzogUmVuYW1lZCB0by4uLgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jOiBUaGlzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU1RST0tFUl9IKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazoKCVVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jOiBSZW5hbWVkIHRvLi4uCgkqIHNyYy9wY2YvcGNmZHJpdnIuYzogVGhpcy4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuaDogUmVuYW1lZCB0by4uLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmg6IFRoaXMuCgoJKiBzcmMvcGNmL0phbWZpbGUsIHNyYy9wY2YvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAzLTA2LTA1ICBXZW5saW4gSW5zdGl0dXRlIChUb20gQmlzaG9wKSAgPHdlbmxpbkB3ZW5saW4uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoZmlsZV9zcGVjX2Zyb21fcGF0aCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06CglBZGQgYCNpZiAhZGVmaW5lZChfX01XRVJLU19fKScuCgoyMDAzLTA2LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwIGFuZCBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDBfUC4KCShUMV9GSUVMRF9GSVhFRF8xMDAwLCBUMV9GSUVMRF9GSVhFRF8xMDAwX1ApOiBOZXcgbWFjcm9zLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogSGFuZGxlCglUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDAgYW5kIFQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMF9QLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfa2luZF9maXhlZF90aG91c2FuZCk6IE5ldyBlbnVtZXJhdGlvbi4KCShDRkZfRklFTERfRklYRURfMTAwMCk6IE5ldyBtYWNyby4KCShjZmZfcGFyc2VyX3J1bik6IEhhbmRsZSBjZmZfa2luZF9maXhlZF90aG91c2FuZC4KCSogc3JjL2NmZi9jZmZ0b2tlbi5oOiBVc2UgQ0ZGX0ZJRUxEX0ZJWEVEXzEwMDAgZm9yIGJsdWVfc2NhbGUuCgkqIHNyYy9jZmYvY2ZmbG9hZCAoY2ZmX3N1YmZvbnRfbG9hZCk6IEZpeCBkZWZhdWx0IHZhbHVlcyBvZgoJZXhwYW5zaW9uX2ZhY3RvciBhbmQgYmx1ZV9zY2FsZS4KCgkqIHNyYy9jaWYvY2lkdG9rZW4uaCwgc3JjL3R5cGUxL3QxdG9rZW5zLmg6IFVzZSBUMV9GSUVMRF9GSVhFRF8xMDAwCglmb3IgYmx1ZV9zY2FsZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IEZpeCBkZWZhdWx0IHZhbHVlIG9mCglibHVlX3NjYWxlLgoKMjAwMy0wNi0wNCAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy9jaWQvY2lkZ2xvYWQuYywKCXNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmMsIHNyYy9wc2F1eC9wc29ianMuaCwKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28uYywKCXNyYy9wc25hbWVzL3BzbW9kdWxlLmMsIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsCglzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL3Ntb290aC9mdHNtb290aC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCglzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3R5cGUxL3QxYWZtLmMsCglzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFnbG9hZC5oLCBzcmMvdHlwZTEvdDFsb2FkLmMsCglzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlNDIvdDQycGFyc2UuYywgc3JjL3R5cGU0Mi90NDJwYXJzZS5oOgoJTWFueSBjYXN0cyBhbmQgc2xpZ2h0IGFyZ3VtZW50IHR5cGUgY2hhbmdlcyB0byBtYWtlIGl0IHdvcmsgd2l0aAoJYSAxNmJpdCBjb21waWxlci4KCjIwMDMtMDYtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IERlZmluaW5nCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORyBieSBkZWZhdWx0IGlzIGEgYmFkIGlkZWEKCXNpbmNlIHNvbWUgZm9udHMgKGUuZy4gQXJpYWwpIHByb2R1Y2Ugd29yc2UgcmVzdWx0cyB0aGFuIHdpdGhvdXQKCWhpbnRpbmcuICBSZXZlcnRlZC4KCjIwMDMtMDYtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IENhbGwKCUZUX0dseXBoTG9hZGVyX0NoZWNrUG9pbnRzIGJlZm9yZSBhZGRpbmcgcGhhbnRvbSBwb2ludHMuICBUaGlzIGZpeGVzCglhIHNlZ2ZhdWx0IGJ1ZyB3aXRoIGZvbnRzIChlLmcuIGh0c3QzLnR0Zikgd2hpY2ggaGF2ZSBuZXN0ZWQKCXN1YmdseXBocyBtb3JlIHRoYW4gb25lIGxldmVsIGRlZXAuICBSZXBvcnRlZCBieSBBbnRob255IEZvay4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IERlZmluZQoJVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiwKCVRUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcsIGFuZAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcgdG8gbWFrZSBpdCB0aGUgbmV3CglkZWZhdWx0LgoKMjAwMy0wNi0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IFJlbW92ZWQuICBKdXN0IGEKCXdyYXBwZXIgZm9yIGFoX2hpbnRfZWRnZXMuCgkoYWhfaGludF9lZGdlcyk6IFJlbmFtZWQgdG8uLi4KCShhaF9oaW50ZXJfaGludF9lZGdlcyk6IFRoaXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0hpbnRfRmxhZ3MpOiBSZW1vdmVkLiAgVW51c2VkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfRmFjZV9JbnRlcm5hbFJlYyksCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJSZWMpLAoJc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfQnVpbGRlcik6IFJlbW92ZSBgaGludF9mbGFncycgZmllbGQuCglVbnVzZWQuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9idWlsZGVyX2luaXQpOiBVcGRhdGVkLgoJKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKSA8Y2ZmX29wX2VuZGNoYXI+OiBDYWxsIGhpbnRlci0+YXBwbHkKCXdpdGggZGVjb2Rlci0+aGludF9tb2RlIGluc3RlYWQgb2YgYnVpbGRlci0+aGludF9mbGFncy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYyAoZnRfc3Ryb2tlX2JvcmRlcl9leHBvcnQpOiBzL2luZGV4L2lkeC8uCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBDb21tZW50ZWQgb3V0IGNvZGUgd2hpY2gKCWluY3JlYXNlZCByb290LT5oZWlnaHQgYnkgMTUlIGlmIHRoZSBsaW5lIGdhcCB3YXMgemVyby4gIFRoZXJlIGV4aXN0Cglmb250cyAoY29udGFpbmluZyBlLmcuIGZvcm0gZHJhd2luZyBjaGFyYWN0ZXJzKSB3aGljaCBpbnRlbnRpb25hbGx5CgloYXZlIGEgemVybyBsaW5lIGdhcCB2YWx1ZS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChGcmVlX1Byb2plY3QsIENVUl9GdW5jX2ZyZWVQcm9qKToKCVJlbW92ZWQuICBVbnVzZWQuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoKMjAwMy0wNi0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBVc2Ugc3ltYm9saWMgbmFtZXMgZm9yCglBZG9iZSBzcGVjaWZpYyBlbmNvZGluZyBJRHMgKHRoZXJlIHdhcyBhIHdyb25nIEVJRCB2YWx1ZSBmb3IgY3VzdG9tCgllbmNvZGluZykuCgoJKiBzcmMvY2ZmL2NmZmNtYXAuaCAoQ0ZGX0NNYXBTdGRSZWMpOiBSZW1vdmUgYGNvdW50Jy4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX2VuY29kaW5nX2luaXQsCgljZmZfY21hcF9lbmNvZGluZ19kb25lKTogVXBkYXRlZC4KCShjZmZfY21hcF9lbmNvZGluZ19jaGFyX2luZGV4LCBjZmZfY21hcF9lbmNvZGluZ19jaGFyX25leHQpOiBVc2UKCTI1NiBhcyBsaW1pdCBmb3IgY2hhcmFjdGVyIGNvZGUuCgoyMDAzLTA2LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogUmV2ZXJ0IGNoYW5nZSBmcm9tCgkyMDAzLTAzLTIwLgoKMjAwMy0wNS0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oIChGVF9WZWN0b3JfTm9ybWFsaXplKTogUmVtb3ZlZC4KCjIwMDMtMDUtMzEgICAgPFJvbi5EZXZAZ214LmRlPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBJbXByb3ZlIGFsZ29yaXRobSBmb3IgZ3Vlc3NpbmcKCXRoZSBmb250IHN0eWxlIGJ5IGlnbm9yaW5nIHNwYWNlcyBhbmQgaHlwaGVucy4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5pbjogRml4IGBWZXJzaW9uJyBmaWVsZC4KCjIwMDMtMDUtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBdm9pZCBvdmVyd3JpdGluZyBvZiBudW1lcmljIGZvbnQgZGljdGlvbmFyeSBlbnRyaWVzIGZvciBzeW50aGV0aWMKCWZvbnRzLiAgQWRkaXRpb25hbGx5LCBzb21lIGVudHJpZXMgd2VyZSBoYW5kbGVkIGFzIGBpbnRlZ2VyJyBpbnN0ZWFkCglvZiBgbnVtYmVyJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglUMV9GSUVMRF9UWVBFX0JPT0xfUCwgVDFfRklFTERfVFlQRV9JTlRFR0VSX1AsIGFuZAoJVDFfRklFTERfVFlQRV9GSVhFRF9QLgoJKFQxX0ZJRUxEX0JPT0xfUCwgVDFfRklFTERfTlVNX1AsIFQxX0ZJRUxEX0ZJWEVEX1ApOiBOZXcgbWFjcm9zLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogSGFuZGxlIG5ldyBmaWVsZCB0eXBlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0ZvbnRSZWNEaWN0KSwKCXNyYy9jZmYvY2ZmdG9rZW4uaDogQ2hhbmdlIHR5cGUgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZAoJdW5kZXJsaW5lX3RoaWNrbmVzcyB0byBGVF9GaXhlZC4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9zdWJmb250X2xvYWQpOiBGaXggZGVmYXVsdCB2YWx1ZXMgb2YKCXVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBTZXQgdW5kZXJsaW5lX3Bvc2l0aW9uCglhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyBpbiBgcm9vdCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRm9udCk6IENoYW5nZSBwb2ludF90eXBlCglhbmQgc3Ryb2tlX3dpZHRoIHRvIHBvaW50ZXJzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0ZvbnRJbmZvKTogQ2hhbmdlIGl0YWxpY19hbmdsZSwKCWlzX2ZpeGVkX3BpdGNoLCB1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvCglwb2ludGVycy4KCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IENoYW5nZSBpdGFsaWNfYW5nbGUsIGlzX2ZpeGVkX3BpdGNoLAoJdW5kZXJsaW5lX3Bvc2l0aW9uLCBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyB0byBwb2ludGVycy4gIENoYW5nZQoJdGhlIHR5cGUgb2YgdGhlIGxhdHRlciB0d28gdG8gYGZpeGVkJy4KCUNoYW5nZSB0eXBlIG9mIHN0cm9rZV93aWR0aCB0byBgZml4ZWQnIGFuZCBtYWtlIGl0IGEgcG9pbnRlci4KCUNoYW5nZSBwYWludF90eXBlIHRvIHBvaW50ZXIuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Eb25lKTogVXBkYXRlZC4KCShUMV9GYWNlX0luaXQpOiBVcGRhdGVkLgoJRml4IGFzc2lnbm1lbnQgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoKCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLCBpc19maXhlZF9waXRjaCwKCXVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8gcG9pbnRlcnMuICBDaGFuZ2UKCXRoZSB0eXBlIG9mIHRoZSBsYXR0ZXIgdHdvIHRvIGBmaXhlZCcuCglDaGFuZ2UgdHlwZSBvZiBzdHJva2Vfd2lkdGggdG8gYGZpeGVkJy4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9mYWNlX2RvbmUpOiBVcGRhdGVkLgoJKGNpZF9mYWNlX2luaXQpOiBVcGRhdGVkLgoJRml4IGFzc2lnbm1lbnQgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLCBpc19maXhlZF9waXRjaCwKCXVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8gcG9pbnRlcnMuICBDaGFuZ2UgdGhlCgl0eXBlIG9mIHRoZSBsYXR0ZXIgdHdvIHRvIGBmaXhlZCcuCglDaGFuZ2UgdHlwZSBvZiBzdHJva2Vfd2lkdGggdG8gYGZpeGVkJyBhbmQgbWFrZSBpdCBhIHBvaW50ZXIuCglDaGFuZ2UgcGFpbnRfdHlwZSB0byBwb2ludGVyLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IFVwZGF0ZWQuCglGaXggYXNzaWdubWVudCBvZiB1bmRlcmxpbmVfcG9zaXRpb24gYW5kIHVuZGVybGluZV90aGlja25lc3MuCgkoVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlX2Zyb21fYnVmZmVyKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgKCShwc2hfZ2xvYmFsc19zZXRfc2NhbGUpOiBNYWtlIGl0IGEgbG9jYWwgZnVuY3Rpb24uCgoJKiB0ZXN0L2d2aWV3LmM6IEZpeCByZW5hbWluZyBwczMtPnBzIHR5cG8uCglGb3JtYXR0aW5nLgoKMjAwMy0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLltjaF0sIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5bY2hdOiBSZW1vdmVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5oOiBSZW1vdmVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLltjaF06IFJlbmFtZWQgdG8uLi4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uW2NoXTogTmV3IGZpbGVzLgoJcy9QU0gzL1BTSC8uCglzL3BzaDMvcHNoLy4KCXMvcHMzL3BzLy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGludGVyLmM6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9ydWxlcy5taywgc3JjL3BzaGludGVyL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5bY2hdIChwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgpOiBDb21tZW50ZWQKCW91dC4KCgkqIHRlc3RzL2d2aWV3LmM6IFJlbW92ZSBjb2RlIGZvciBwc2hhbGdvMSBhbmQgcHNoYWxnbzIuCglVcGRhdGVkLgoKMjAwMy0wNS0yOCAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHZtc19tYWtlLmNvbTogUmV3b3JrZWQgc3VwcG9ydCBmb3Igc2hhcmVhYmxlIGltYWdlcyBvbiBWTVMuICBUaGUKCWZpcnN0IHZlcnNpb24gd2FzIGtpbmQgb2YgYSBoYWNrOyB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKCXByb2NlZHVyZSB0byBleHRyYWN0IHRoZSByZXF1aXJlZCBzeW1ib2xzIGlzIG11Y2ggY2xlYW5lci4KCglSZXdvcmtlZCBjcmVhdGlvbiBvZiBNTVMgZmlsZXMsIGF2b2lkaW5nIGEgbnVtYmVyIG9mIHRlbXBvcmFyeSBmaWxlcwoJd2hpY2ggd2VyZSBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uLgoKCUZ1cnRoZXIgd29yayBvbiBjcmVhdGluZyBkZXNjcmlwLm1tcyBmaWxlcyBvbiB0aGUgZmx5LgoKCSogYnVpbGRzL3Ztcy9kZXNjcmlwLm1tcywgc3JjL2F1dG9oaW50L2Rlc2NyaXAubW1zLAoJc3JjL3R5cGUxL2Rlc2NyaXAubW1zOiBSZW1vdmVkLgoKMjAwMy0wNS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hKTogU2tpcAoJY29udG91cnMgd2l0aCBvbmx5IGEgc2luZ2xlIHBvaW50IHRvIGF2b2lkIHNlZ2ZhdWx0LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBBY3RpdmF0ZSBjb2RlIGZvcgoJaGFuZGxpbmcgYG9yaWdpbicuCgoyMDAzLTA1LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9PUFRJT05fTk9fU1RST05HX0lOVEVSUE9MQVRJT04pOgoJUmVtb3ZlZCBzaW5jZSB1bnVzZWQuCgoyMDAzLTA1LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zdHJjYXQpOiBOZXcgd3JhcHBlciBtYWNybwoJZm9yIHN0cmNhdC4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKGNyZWF0ZV9sd2ZuX25hbWUpOiBzL2lzdXBwZXIvZnRfaXN1cHBlci8uCgkocGFyc2VfZm9udCk6IHMvbWVtY3B5L2Z0X21lbWNweS8uCgkoaXNfZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBzL21lbWNtcC9mdF9tZW1jbXAvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAobG9hZF9tYWNfZmFjZSkgW0ZUX01BQ0lOVE9TSF06CglzL3N0cmxlbi9mdF9zdHJsZW4vLgoJcy9zdHJjYXQvZnRfc3RyY2F0Ly4KCXMvc3RyY3B5L2Z0X3N0cmNweS8uCgkqIHNyYy9nemlwL3p1dGlsLmg6IHMvbWVtc2V0L2Z0X21lbXNldC8uCglzL21lbWNtcC9mdF9tZW1jbXAvLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9GYWNlX0luaXQpOiBUZXN0IGZvciBjaGFyc2V0IHJlZ2lzdHJ5IGNhc2UtaW5zZW5zaXRpdmVseS4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbF9pbyk6IFJldmVydCBjaGFuZ2UgZnJvbSB5ZXN0ZXJkYXk7CglpdCBoYXMgYWxyZWFkeSBiZWVuIGZpeGVkIGRpZmZlcmVudGx5LgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKERPX1NGVlRMKTogQWRkIG1pc3NpbmcgYnJhY2VzIGFyb3VuZAoJaWYtY2xhdXNlLgoKMjAwMy0wNS0yMSAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHQxbG9hZC5jIChwYXJzZV9ibGVuZF9heGlzX3R5cGVzKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkZXNjcmlwLm1tczogUmVtb3ZlZC4gIE5vdyBjcmVhdGVkIGJ5Li4uCgoJKiB2bXNfbWFrZS5jb206IE5ldyBmaWxlLgoKMjAwMy0wNS0yMSAgV2VpcWkgR2FvICA8d2VpcWlnYW9AbmV0d29ya3VzYS5uZXQ+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2lvKTogQXZvaWQgemVybyB2YWx1ZSBvZiBgZGVsdGEnCgl0byBwcmV2ZW50IGluZmluaXRlIGxvb3AuCgoyMDAzLTA1LTIxICBMYXJzIENsYXVzZW4gIDxscmNsYXVzZUBjcy51aXVjLmVkdT4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFByb3ZpZGUgYmV0dGVyIGF1dG9jb25mIHNuaXBwZXQgdG8gY2hlY2sKCUZyZWVUeXBlIHZlcnNpb24uCgoyMDAzLTA1LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKTogRnJlZSBgaW50ZXJuYWwnIG5vdAoJYGZhY2UtPmludGVybmFsJyBpbiBjYXNlIG9mIGVycm9yIHRvIGF2b2lkIHBvc3NpYmxlIHNlZ2ZhdWx0LgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IENoZWNrIHdoZXRoZXIgd2UKCWFjdHVhbGx5IGhhdmUgYW4gb3V0bGluZS4KCjIwMDMtMDUtMjAgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBUcnkgdG8gb3B0aW1pemUKCXlfc2NhbGUgc28gdGhhdCB0aGUgdG9wIG9mIG5vbi1jYXBpdGFsIGxldHRlcnMgaXMgYWxpZ25lZCBvbiBhIHBpeGVsCglib3VuZGFyeSB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlcyk6IE1ha2Ugc3VyZSB0aGF0IGxvd2VyY2FzZQoJbSdzIG1haW50YWluIHRoZWlyIHN5bW1ldHJ5LgoKMjAwMy0wNS0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IE9vcHMhICBEYXZpZCdzCglwYXRjaCBmcm9tIHllc3RlcmRheSBoYXMgYmVlbiByZXNvbHZlZCBhbHJlYWR5IGluIGEgZGlmZmVyZW50Cgl3YXkuICBSZXZlcnRlZC4KCjIwMDMtMDUtMTkgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBEb24ndCBzY2FsZQoJeV9zY2FsZSBsb2NhbGx5IGJ1dCBmYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGUuCgoyMDAzLTA1LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfbmV4dCk6IFNlbGVjdCBwcm9wZXIgc3RhcnQKCXZhbHVlIGZvciBgaGknIHRvIGF2b2lkIGluZmluaXRlIGxvb3AuCgoyMDAzLTA1LTE4ICBZb25nIFN1biAgPHN1bnlvbmdAbmpzdGFyLmNvbT4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoSW5zZXJ0X1lfVHVybik6IEZpeCBvdmVyZmxvdyB0ZXN0LgoKMjAwMy0wNS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCBbRlRfQ09ORklHX09QVElPTl9NQUNfRk9OVFNdOgoJTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogVXNlIGl0IHRvIGNvbnRyb2wgbWFjIGZvbnQgc3VwcG9ydCBvbiBub24tbWFjCglwbGF0Zm9ybXMuCgoyMDAzLTA1LTE3ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglJbXBsZW1lbnQgcGFydGlhbCBzdXBwb3J0IG9mIE1hYyBmb250cyBvbiBub24tTWFjIHBsYXRmb3Jtcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChtZW1vcnlfc3RyZWFtX2Nsb3NlLCBuZXdfbWVtb3J5X3N0cmVhbSwKCW9wZW5fZmFjZV9mcm9tX2J1ZmZlciwgTWFjX1JlYWRfUE9TVF9SZXNvdXJjZSwKCU1hY19SZWFkX3NmbnRfUmVzb3VyY2UsIElzTWFjUmVzb3VyY2UsIElzTWFjQmluYXJ5LCBsb2FkX21hY19mYWNlKQoJWyFGVF9NQUNJTlRPU0hdOiBOZXcgZnVuY3Rpb25zLgoJKEZUX09wZW5fRmFjZSkgWyFGVF9NQUNJTlRPU0hdOiBVc2UgbG9hZF9tYWNfZmFjZS4KCjIwMDMtMDUtMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogU2NhbGUgbGluZWFyIGFkdmFuY2Ugd2lkdGggb25seQoJaWYgRlRfRkFDRV9GTEFHX1NDQUxBQkxFIGlzIHNldCAob3RoZXJ3aXNlIHdlIGhhdmUgYSBkaXZpc2lvbiBieQoJemVybyBzaW5jZSBGTlQgYW5kIGZyaWVuZHMgZG9uJ3QgZGVmaW5lIGBmYWNlLT51bml0c19wZXJfRU0nKS4KCjIwMDMtMDUtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX1ZlY3Rvcl9Sb3RhdGUpOiBBdm9pZCByb3VuZGluZyBlcnJvcnMKCWZvciBzbWFsbCB2YWx1ZXMuCgoyMDAzLTA1LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9Qb2ludFJlYyk6IFJlbW92ZSB1bnVzZWQgYGluX2FuZ2xlJwoJYW5kIGBvdXRfYW5nbGUnIGZpZWxkcy4KCjIwMDMtMDUtMTQgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogSGFuZGxlIENGRiBmaWxlcyBhbHNvLgoKMjAwMy0wNS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXggdHlwbyBpbiBjb21tZW50CgkoRlRfSEFTX0ZJWEVEX1NJWkVTKS4KCjIwMDMtMDUtMTAgIERhbiBXaWxsaWFtcyAgPGRhbkBiaWd3Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IENvbW1lbnQgb3V0IGRlZmluaXRpb24gb2YKCWBhbGxvd191bmRlZmluZWRfZmxhZycgZm9yIERhcndpbiAxLjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogQWRkIG9wdGlvbiAtLXdpdGgtb2xkLW1hYy1mb250cy4KCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBGaXggdmVyc2lvbiBudW1iZXJpbmcgZm9yIERhcndpbiAxLjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBGaXggY29uZGl0aW9ucyBmb3IgZGVmaW5pbmcKCWBGVF9NQUNJTlRPU0gnLgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBgZnRtYWMuYycgY29uZGl0aW9uYWxseS4KCSogc3JjL2Jhc2UvZnRtYWMuYzogSGFuZGxlIF9fR05VQ19fLgoKMjAwMy0wNS0wNyAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChpc19hbHBoYSk6IFJlbW92ZWQuCgkoY2lkX3BhcnNlX2RpY3QpOiBVc2UgYGNpZF9wYXJzZXJfc2tpcF9hbHBoYScgaW5zdGVhZCBvZiBgaXNfYWxwaGEnLgoKMjAwMy0wNS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2Fob3B0aW0uYywgc3JjL2F1dG9oaW50L2Fob3B0aW0uaDogT2Jzb2xldGUsIHJlbW92ZWQuCgoyMDAzLTA1LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9zZXR1cF91dik6IEV4Y2hhbmdlIGBmb3InIGxvb3AgYW5kCglgc3dpdGNoJyBzdGF0ZW1lbnQgdG8gbWFrZSBpdCBydW4gZmFzdGVyLgoJKGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cyk6IFJlc2V0IGBzZWdtZW50LT5zY29yZScgYW5kCglgc2VnbWVudC0+bGluaycuCgkoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogUHJvdmlkZSBhbHRlcm5hdGl2ZSBjb2RlIHdoaWNoIGRvZXMKCXRoZSBzYW1lIGJ1dCBydW5zIG11Y2ggZmFzdGVyLgoJSGFuZGxlIG1ham9yIGRpcmVjdGlvbiBhbHNvLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IFNjYWxlIGBlZGdlX2Rpc3RhbmNlX3RocmVzaG9sZCcgZG93bgoJYWZ0ZXIgcm91bmRpbmcgaW5zdGVhZCBvZiBzY2FsaW5nIGNvbXBhcmlzb24gdmFsdWUgaW4gbG9vcC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3N0b25nX3BvaW50cyk6IFByb3ZpZGUKCWFsdGVybmF0aXZlIGNvZGUgd2hpY2ggcnVucyBmYXN0ZXIuCglIYW5kbGUgYGJlZm9yZS0+c2NhbGUgPT0gMCcuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9TZWdtZW50UmVjKTogTW92ZSBzb21lIGZpZWxkcyBkb3duLgoJKEFIX0VkZ2VSZWMpOiBNb3ZlIHNvbWUgZmllbGRzIGluIHN0cnVjdHVyZS4KCU5ldyBmaWVsZCBgc2NhbGUnLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX25leHQpOiBVc2UgYmluYXJ5IHNlYXJjaC4KCjIwMDMtMDUtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haG9wdGltLmMgKExPRyk6IFJlbmFtZWQgdG8uLi4KCShBSF9PUFRJTV9MT0cpOiBUaGlzLgoJKEFIX0R1bXBfU3ByaW5ncyk6IEZpeCBsb2cgbWVzc2FnZSBmb3JtYXQuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMyk6IFJlbmFtZWQgdG8uLi4KCShhaF9oaW50X2VkZ2VzKTogVGhpcy4KCjIwMDItMDUtMDIgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX1NldF9QaXhlbF9TaXplKTogSW5pdGlhbGl6ZSBgbWF4X2FkdmFuY2UnLgoKMjAwMy0wNS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfdGVzdF9leHRyZW1hKTogUmVuYW1lZCB0by4uLgoJKGFoX3Rlc3RfZXh0cmVtdW0pOiBUaGlzLgoKMjAwMy0wNC0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBHZW5lcmF0ZSBgZnJlZXR5cGUucGMnIGZyb20KCWBmcmVldHlwZS5pbicuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEhhbmRsZSBgZnJlZXR5cGUucGMnLgoKMjAwMy0wNC0yOCAgR3VzdGF2byBKLiBBLiBNLiBDYXJuZWlybyAgPGdqY0BpbmVzY3BvcnRvLnB0PgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmluOiBOZXcgZmlsZS4gIENvbnRhaW5zIGJ1aWxkaW5nIGluZm9ybWF0aW9uCglmb3IgdGhlIGBwa2ctY29uZmlnJyBwYWNrYWdlLgoKMjAwMy0wNC0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBGaXggYm91bmRhcnkgY2hlY2sgZm9yCglgZ2x5cGhfaW5kZXgnLgoKMjAwMy0wNC0yNTogIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglBZGRlZCB0aGUgb3B0aW9uYWwgdW5wYXRlbnRlZCBoaW50aW5nIHN5c3RlbSBmb3IgVHJ1ZVR5cGUuICBJdAoJYWxsb3dzIHR5cGVmYWNlcyB3aGljaCBuZWVkIGhpbnRpbmcgdG8gcHJvZHVjZSBjb3JyZWN0IGdseXBoIGZvcm1zCgkoZS5nLiwgQ2hpbmVzZSB0eXBlZmFjZXMgZnJvbSBEeW5hbGFiKSB0byB3b3JrIGFjY2VwdGFibHkgd2l0aG91dAoJaW5mcmluZ2luZyBBcHBsZSBwYXRlbnRzLiAgVGhpcyBzeXN0ZW0gaXMgY29tcGlsZWQgb25seSBpZgoJVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORyBpcyBkZWZpbmVkIGluCglmdG9wdGlvbi5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHVucGF0Lmg6IE5ldyBmaWxlLiAgRGVmaW5lcwoJRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1RSVUVUWVBFX1VOUEFURU5URURfSCk6IE5ldwoJbWFjcm8gdG8gdXNlIHdoZW4gaW5jbHVkaW5nIHR0dW5wYXQuaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HLAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcpOiBOZXcgY29uZmlndXJhdGlvbiBtYWNyb3MKCShub3QgZGVmaW5lZCwgYnV0IGluIGNvbW1lbnRzKSBmb3IgdGhlIHVucGF0ZW50ZWQgaGludGluZyBzeXN0ZW0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYykKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogTmV3IGVsZW1lbnQgYEZUX0Jvb2wKCXVucGF0ZW50ZWRfaGludGluZycuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoTk9fQVBQTEVfUEFURU5ULCBBUFBMRV9USFJFU0hPTEQpOgoJUmVtb3ZlZC4KCShHVUVTU19WRUNUT1IpOiBOZXcgbWFjcm8uCgkoVFRfUnVuX0NvbnRleHQpIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXToKCVNldCBgYm90aF94X2F4aXMnLgoJKHR0X2RlZmF1bHRfZ3JhcGhpY3Nfc3RhdGUpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IFVwZGF0ZWQuCgkoQ3VycmVudF9SYXRpbykgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJSGFuZGxlIGB1bnBhdGVudGVkX2hpbnRpbmcnLgoJKERpcmVjdF9Nb3ZlKSBbTk9fQVBQTEVfUEFURU5UXTogUmVtb3ZlZC4KCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW5zZXJ0IGFzc2VydGlvbi4KCShQcm9qZWN0LCBGcmVlUHJvamVjdCkKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW5zZXJ0IGFzc2VydGlvbi4KCShDb21wdXRlX0Z1bmNzKSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglJbXBsZW1lbnQgdW5wYXRlbnRlZCBoaW50aW5nLgoJKERPX1NQVlRDQSwgRE9fU0ZWVENBLCBET19TUFZUTCwgRE9fU0ZWVEwsIERPX1NQVkZTLCBET19TRlZGUywKCUluc19TRFBWVEwpOiBDYWxsIGBHVUVTU19WRUNUT1InLgoJKERPX0dQViwgRE9fR0ZWKSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglIYW5kbGUgYHVucGF0ZW50ZWRfaGludGluZycuCgkoQ29tcHV0ZV9Qb2ludF9EaXNwbGFjZW1lbnQpIFtOT19BUFBMRV9QQVRFTlRdOiBSZW1vdmVkLgoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbXBsZW1lbnQgdW5wYXRlbnRlZAoJaGludGluZy4KCShNb3ZlX1pwMl9Qb2ludCwgSW5zX1NIUElYLCBJbnNfREVMVEFQLCBJbnNfREVMVEFDKQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbXBsZW1lbnQgdW5wYXRlbnRlZAoJaGludGluZy4KCShUVF9SdW5JbnMpOiBVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEluY2x1ZGUKCUZUX1RSVUVUWVBFX1VOUEFURU5URURfSC4KCSh0dF9mYWNlX2luaXQpIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HLAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBDaGVjawoJRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuaCAoVFRfR3JhcGhpY3NTdGF0ZSkKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogQWRkIGBib3RoX3hfYXhpcycuCgoyMDAzLTA0LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChoYXNoX2J1Y2tldCwgaGFzaF9sb29rdXApOiBVc2UgYGNvbnN0JyBmb3IgZmlyc3QKCWFyZ3VtZW50LgoJKGJkZl9nZXRfZm9udF9wcm9wZXJ0eSk6IFVzZSBgY29uc3QnIGZvciB0aGlyZCBhcmd1bWVudC4KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IFNldCBwaXhlbCB3aWR0aCBhbmQgaGVpZ2h0CglzaW1pbGFyIHRvIHRoZSBQQ0YgZHJpdmVyLgoJKiBzcmMvYmRmL2JkZi5oIChfaGFzaG5vZGUpOiBVc2UgYGNvbnN0JyBmb3IgYGtleScuCglVcGRhdGVkLgoKCSogc3JjL2d6aXAvZnRnemlwLmM6IEMrKyBkb2Vzbid0IGxpa2UgdGhhdCB0aGUgYXJyYXkgYGluZmxhdGVfbWFzaycKCWlzIGRlY2xhcmVkIHR3aWNlLiAgSXQgaXMgcGVyaGFwcyBiZXR0ZXIgdG8gbW9kaWZ5IHRoZSB6bGliIHNvdXJjZQoJZmlsZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGlzIGhhY2suCgkoemNhbGxvYywgemZyZWUsIGZ0X2d6aXBfc3RyZWFtX2Nsb3NlLCBmdF9nemlwX3N0cmVhbV9pbyk6IEFkZCBjYXN0cwoJdG8gbWFrZSBidWlsZCB3aXRoIGcrKyBzdWNjZXNzZnVsLgoKMjAwMy0wNC0yNCAgTWFuaXNoIFNpbmdoICA8eW9zaEBnaW1wLm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9pbml0KSwgc3JjL3R5cGUxL3Qxb2Jqcy5jCgkoVDFfRmFjZV9Jbml0KSwgc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBTcGxpdCBvbiBgLScKCWFsc28gZm9yIHNlYXJjaGluZyB0aGUgc3R5bGUgbmFtZS4KCjIwMDMtMDQtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRml4ZWQgdGhlIGNvbXB1dGF0aW9uIG9mCglmYWNlLT5udW1fZ2x5cGhzLiAgV2UgbXVzdCBpbmNyZWFzZSB0aGUgdmFsdWUgYnkgMSB0byByZXNwZWN0IHRoZQoJY29udmVudGlvbiB0aGF0IGdseXBoIGluZGV4IDAgYWx3YXlzIGNvcnJlc3BvbmRzIHRvIHRoZSBgbWlzc2luZwoJZ2x5cGgnLgoKMjAwMy0wNC0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoQ0ZMQUdTKTogQWRkIEBDUFBGTEFHU0AuCgoyMDAzLTA0LTI0ICBEaWV0ZXIgQmFyb24gIDxkaWxsb0BuZXRic2Qub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluIChjZmxhZ3MpOiBFbWl0IEZyZWVUeXBlIDIncyBpbmNsdWRlCglmaWxlcyBmaXJzdC4gIE90aGVyd2lzZSB0aGVyZSBhcmUgY29uZmxpY3RzIHdpdGggRnJlZVR5cGUgMQoJaW5zdGFsbGVkIHNpbXVsdGFuZW91c2x5LgoKMjAwMy0wNC0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZpeGluZyBidWdzIHJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlci5jIChGVF9TdHJva2VyX1BhcnNlT3V0bGluZSk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlIGBpbl9wYXRoJy4KCgkqIHNyYy9iYXNlL2Z0b2JqcyAoZnRfZ2x5cGhzbG90X3NldF9iaXRtYXApOiBDaGFuZ2UgdHlwZSBvZgoJc2Vjb25kIGFyZ3VtZW50IHRvIGBGVF9CeXRlKicuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3JlYWRzdHJlYW0pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGByZXMnLgoJKF9iZGZfcGFyc2VfZ2x5cGhzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmV4dCcuCglNYXJrIGBjYWxsX2RhdGEnIGFzIHVudXNlZC4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVMaXN0X0xvb2t1cCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBwbGFzdCcuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFNsaWdodCByZWNvZGluZyB0bwoJYWN0dWFsbHkgdXNlIGBlcnJvcicuCgkocGNmX2xvYWRfZm9udCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGF2Z3cnLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlCgl0byBgdm9pZCcuCglNYXJrIGBlcnJvcicgYXMgdW51c2VkLgoJKiBzcmMvcGZyL3Bmcm9ianMuaDogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZ2V0X2tlcm5pbmcpOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGZvcm1hdF90YWcnLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNl92YWxpZGF0ZSwgdHRfY21hcDEwX3ZhbGlkYXRlKTogUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYHN0YXJ0Jy4KCSh0dF9jbWFwMTBfY2hhcl9uZXh0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgcmVzdWx0JwoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBNYXJrIGBlcnJvcicgYXMgdW51c2VkLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogTWFyayBgZXJyb3InIGFzCgl1bnVzZWQuCgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBwc2hpbnRlcicuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogVXNlIGBnbHlwaF9kYXRhX2xvYWRlZCcKCW9ubHkgZm9yIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwuCgoyMDAzLTA0LTIzICBBa2l0byBIaXJhaSAgPGFraXRvQGtkZS5nci5qcD4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUpOiBQcm92aWRlIGEgd2VhayB2YXJpYW50CglvZiB0aGUgZ2x5cGggSUQgYm91bmRpbmcgY2hlY2sgaWYgRlRfVkFMSURBVEVfVElHSFQgaXMgbm90IGFjdGl2ZS4KCVdpdGhvdXQgdGhpcyBjaGFuZ2UsIG1hbnkgQ0pLIGZvbnRzIGZyb20gRHluYWxhYiBhcmUgcmVqZWN0ZWQuCgoyMDAzLTA0LTIzICBKb2UgTWFyY3VzIENsYXJrZSAgPG1hcmN1c0BGcmVlQlNELm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmRmLmMgKEZUX0dldF9CREZfUHJvcGVydHkpOiBDaGVjayBmb3IgdmFsaWQKCWBnZXRfaW50ZXJmYWNlJy4KCjIwMDMtMDQtMjMgIFBhdWwgTWlsbGVyICA8cGF1bG1AcHJvZm91bmRlZmZlY3RzLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHBhcnNlX2ZvbmQpOiBGaXggaGFuZGxpbmcgb2Ygc3R5bGUgbmFtZXMuCgoyMDAzLTA0LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9mb250X2lkKTogVXNlIEZUX1B0ckRpc3QKCWluc3RlYWQgb2YgRlRfVWludCBmb3IgYGxlbicuCgoyMDAzLTA0LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoemNhbGxvYykgWyFGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCXToKCUNvbnZlcnQgSyZSIGZvcm1hdCB0byBtb2Rlcm4gQyB1c2FnZS4KCShGVF9TdHJlYW1fT3Blbkd6aXApOiBVc2UgbG9uZyBjb25zdGFudC4KCjIwMDMtMDQtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfbG9va3VwKTogUmVtb3ZlIHNoYWRvdyBkZWNsYXJhdGlvbgoJb2YgYG1hbmFnZXInLgoKMjAwMy0wNC0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jL0lOU1RBTEwuVU5YOiBDbGVhbmVkIHVwLgoKMjAwMy0wNC0wOSAgVG9ycmV5IEx5b25zICA8dG9ycmV5QG1yY2xhLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IFJlbW92ZWQgYSBkb3VibGUtZnJlZQoJYnVnIHRoYXQgaGFkIG5hc3R5IGNvbnNlcXVlbmNlcyB3aGVuIHRyeWluZyB0byBvcGVuIGFuIGBpbnZhbGlkJwoJZm9udCBvbiBhIE1hYy4KCjIwMDMtMDQtMDkgIE1pa2UgRmFiaWFuICA8bWZhYmlhbkBzdXNlLmRlPgoKCSogc3JjL2JkZi9iZGZkcml2ci5oIChCREZfZW5jb2RpbmdfZWwpLCBzcmMvcGNmL3BjZi5oCgkoUENGX0VuY29kaW5nUmVjKTogQ2hhbmdlZCBGVF9TaG9ydCB0byBGVF9VU2hvcnQgaW4gb3JkZXIgdG8gYmUgYWJsZQoJdG8gYWNjZXNzIG1vcmUgdGhhbiAzMjc2OCBnbHlwaHMgaW4gZm9udHMuCgoyMDAzLTA0LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAzLTA0LTAzICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBGaXhlZCB0aGUgY29kZSB0byBtYWtlIGl0CgloYW5kbGUgc3BlY2lhbCBjYXNlcyB3aGVyZSBhIGZvbnQgb25seSBjb250YWlucyBhIGAubm90ZGVmJyBnbHlwaAoJKGhhcHBlbnMgaW4gUERGLWVtYmVkZGVkIGZvbnRzKS4gIE90aGVyd2lzZSwgRlRfUGFuaWMgd2FzIGNhbGxlZC4KCjIwMDMtMDMtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRTogVWRwYXRlZC4KCgkqIFJFQURNRS5VTlg6IFJlbW92ZWQgKG5vdyByZXBsYWNlZCBieSBkb2NzL0lOU1RBTEwuVU5YKS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jOiBUaGUgaGludGVyIG5vdyBwZXJmb3JtcyBhcyBpbiAyLjEuMyBhbmQKCXdpbGwgaWdub3JlIHN0ZW0gcXVhbnRpemF0aW9uIG9ubHkgd2hlbiBGVF9MT0FEX1RBUkdFVF9TTU9PVEggaXMKCXVzZWQuCgkocHNoM19kaW1lbnNpb25fcXVhbnRpemVfbGVuKTogRW5hYmxlZC4KCShwc2gzX2hpbnRfYWxpZ24pOiBFbmFibGUgY29tbWVudGVkIGNvZGUuCgkocHNoM19oaW50X2FsaWduX2xpZ2h0KTogQ29tbWVudGVkIG91dC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKTogQ2hhbmdlZCB0aGUgZGVmYXVsdAoJY29tcHV0YXRpb25zIHRvIGluY2x1ZGUgcm91bmRpbmcgaW4gYWxsIGNhc2VzOyB0aGlzIGlzIHJlcXVpcmVkIHRvCglwcm92aWRlIGFjY3VyYXRlIGtlcm5pbmcgZGF0YSB3aGVuIG5hdGl2ZSBUcnVlVHlwZSBoaW50aW5nIGlzCgllbmFibGVkLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19uYW1lX2NoYXIpOiBUaGUgVHlwZSAxIGxvYWRlciBub3cgYWNjZXB0cwoJbW9yZSBnZW5lcmFsIG5hbWVzIGFjY29yZGluZyB0byB0aGUgUG9zdFNjcmlwdCBzcGVjaWZpY2F0aW9uICh0aGUKCXByZXZpb3VzIG9uZSB3YXMgdG9vIHJlc3RyaWN0aXZlKS4KCShwYXJzZV9mb250X25hbWUsIHBhcnNlX2VuY29kaW5nLCBwYXJzZV9jaGFyc3RyaW5ncywgcGFyc2VfZGljdCk6CglVc2UgYGlzX25hbWVfY2hhcicuCgkocGFyc2Vfc3VicnMpOiBIYW5kbGUgZW1wdHkgYXJyYXlzLgoKMjAwMy0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNlcmlvdXMgcmV3cml0aW5nIG9mIHRoZSBkb2N1bWVudGF0aW9uLgoKCSogZG9jcy9CVUdTLCBkb2NzL0JVSUxEOiBSZW1vdmVkLgoJKiBkb2NzL0RFQlVHLlRYVDogUmVuYW1lZCB0by4uLgoJKiBkb2NzL0RFQlVHOiBUaGlzLgoJKiBkb2NzL0NVU1RPTUlaRSwgZG9jcy9UUlVFVFlQRSwgZG9jcy9VUEdSQURFLlVOWDogTmV3IGZpbGVzLgoJKiBkb2NzL0lOU1RBTEwuQU5ZLCBkb2NzL0lOU1RBTEwuVU5YLCBkb2NzL0lOU1RBTEwuR05VIE5ldyBmaWxlcywKCWNvbnRhaW5pbmcgcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24gcHJldmlvdXNseSBpbiBJTlNUQUxMLgoJKiBkb2NzL3JlYWRtZS52bXM6IFJlbmFtZWQgdG8uLi4KCSogZG9jcy9JTlNUQUxMLlZNUzogVGhpcy4KCgkqIGRvY3MvKjogVXBkYXRlZC4KCglJbnRyb2R1Y2VkIHRocmVlIG5ldyBmdW5jdGlvbnMgdG8gZGVhbCB3aXRoIGdseXBoIGJpdG1hcHMgd2l0aGluCglGVF9HbHlwaFNsb3Qgb2JqZWN0czoKCgkgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcAoJICBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwCgkgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwCgoJVGhlc2UgZnVuY3Rpb25zIGFyZSBtdWNoIG1vcmUgY29udmVuaWVudCB0byB1c2UgdGhhbiBtYW5hZ2luZyB0aGUKCUZUX0dMWVBIX09XTl9CSVRNQVAgZmxhZyBtYW51YWxseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCwKCWZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAsIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKTogTmV3IGZ1bmN0aW9ucy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEltcGxlbWVudCB0aGVtLgoJKGZ0X2dseXBoc2xvdF9kb25lKTogVXNlIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcC4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0dseXBoX0xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtZW1vcnknLgoJVXNlIGBmdF9nbHlwaHNsb3RfKicgZnVuY3Rpb25zLgoJRG9uJ3Qgc2V0IGBGVF9HTFlQSF9PV05fQklUTUFQJy4KCgkqIHNyYy9wZnIvcGZyc2JpdC5jIChwZnJfc2xvdF9sb2FkX2JpdG1hcCk6IFVzZQoJYGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAnLgoKCSogc3JjL3NmbnQvdHRzYml0LmMgKExvYWRfU0JpdF9JbWFnZSk6IENoYW5nZSA1dGggYXJndW1lbnQgdG8gdHlwZQoJYEZUX0dseXBoU2xvdCcuCglBZGRpbmcgYXJndW1lbnQgYGRlcHRoJyB0byBoYW5kbGUgcmVjdXJzaXZlIGNhbGxzLgoJVXNlIGBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwJy4KCSh0dF9mYWNlX2xvYWRfc2JpdF9pbWFnZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1lbW9yeScuCglEb24ndCBoYW5kbGUgYEZUX0dMWVBIX09XTl9CSVRNQVAnLgoJVXBkYXRlIGNhbGwgdG8gTG9hZF9TQml0X0ltYWdlLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKGZ0X2dseXBoc2xvdF9jbGVhcik6IFJlbmFtZWQgdG8uLi4KCSh0NDJfZ2x5cGhzbG90X2NsZWFyKTogVGhpcy4gIFVwZGF0ZWQgY2FsbGVyLgoJQ2FsbCBgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwJy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpOiBVc2UKCWBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcCcuCglEb24ndCBoYW5kbGUgYEZUX0dMWVBIX09XTl9CSVRNQVAnLgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydUxpc3RfTG9va3VwKTogRml4ZWQgYW4gaW52YWxpZCBhc3NlcnRpb24KCWNoZWNrLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkKTogQWRkIHR3byBzY2FsaW5nCglhcmd1bWVudHMuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmg6IFVwZGF0ZWQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBVcGRhdGVkLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYWhfaGludGVyX2NvbXB1dGVfd2lkdGhzKTogVXBkYXRlZC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfZmFtaWx5X2RvbmUpOiBGaXhlZCBzbWFsbCBidWcgdGhhdCBjb3VsZAoJY3Jhc2ggdGhlIGNhY2hlIGluIHJhcmUgY2lyY3Vtc3RhbmNlcyAobW9zdGx5IHdpdGggYnJva2VuIGZvbnRzKS4KCjIwMDMtMDMtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IEZpeGVkIGEgc21hbGwgcm91bmRpbmcKCWJ1Zy4gIEFjdHVhbGx5LCBpdCBzZWVtcyB0aGF0IHByZXZpb3VzIHZlcnNpb25zIG9mIEZyZWVUeXBlIGRpZG4ndAoJcGVyZm9ybSBUcnVlVHlwZSByb3VuZGluZyBleGFjdGx5IGFzIGFwcHJvcHJpYXRlLgoKMjAwMy0wMy0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogRml4aW5nIHRoZSBzbWFsbAoJVHJ1ZVR5cGUgbmF0aXZlIHJlbmRlcmluZyBnbGl0Y2hlczsgdGhleSBjYW1lIGZyb20gYSBzbWFsbCByb3VuZGluZwoJZXJyb3IuCgoyMDAzLTAzLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjb250cm9sIG1lbW9yeSBkZWJ1Z2dpbmcgd2l0aAoJRnJlZVR5cGUuICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGBGVDJfREVCVUdfTUVNT1JZJywKCWBGVDJfQUxMT0NfVE9UQUxfTUFYJyBhbmQgYEZUMl9BTExPQ19DT1VOVF9NQVgnIGluIERFQlVHLlRYVC4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKEZUX01lbVRhYmxlUmVjKTogQWRkIGBhbGxvY19jb3VudCcsCglgYm91bmRfdG90YWwnLCBgYWxsb2NfdG90YWxfbWF4JywgYGJvdW5kX2NvdW50JywgYGFsbG9jX2NvdW50X21heCcuCgkoZnRfbWVtX2RlYnVnX2FsbG9jKTogSGFuZGxlIG5ldyB2YXJpYWJsZXMuCgkoZnRfbWVtX2RlYnVnX2luaXQpOiBzL0ZUX0RFQlVHX01FTU9SWS9GVDJfREVCVUdfTUVNT1JZLy4KCUhhbmRsZSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoJKiBkb2NzL0RFQlVHLlRYVDogVXBkYXRlZC4KCglGaXhlZCB0aGUgY2FjaGUgc3ViLXN5c3RlbSB0byBjb3JyZWN0bHkgZGVhbCB3aXRoIG91dC1vZi1tZW1vcnkKCWNvbmRpdGlvbnMuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSk6IENvbW1lbnQgb3V0IGdlbmVyaWMKCWNoZWNrLgoJKGZ0Y19jYWNoZV9sb29rdXApOiBJbXBsZW1lbnQgbG9vcC4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYzogRGVmaW5lIEZUX0NPTVBPTkVOVC4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IEhhbmRsZQoJRlRfRXJyX091dF9PZl9NZW1vcnkuCgkqIHNyYy9jYWNoZS9mdGxydS5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0RFQlVHX0guCgkoRlRfTHJ1TGlzdF9Mb29rdXApOiBJbXBsZW1lbnQgbG9vcC4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9kb25lKTogRml4IG1lbW9yeSBsZWFrLgoJKHBmcl9mYWNlX2luaXQpOiBGaXhpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBGaXhlZCBhIGJ1ZyAobWVtb3J5CglsZWFrKSB0aGF0IG9ubHkgaGFwcGVuZWQgd2hlbiBhIHRyeSB0byByZXNpemUgYW4gYXJyYXkgd291bGQgZW5kIGluCglhbiBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbi4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X2NvbnZlcnRfZ2x5cGgpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncyAvIHZvbGF0aWxlIGJ1Zy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfZ2x5cGh6b25lX2RvbmUpOiBSZW1vdmVkIHNlZ21lbnRhdGlvbgoJZmF1bHQgdGhhdCBoYXBwZW5lZCBpbiB0aWdodCBtZW1vcnkgZW52aXJvbm1lbnRzLgoKMjAwMy0wMi0yOCAgUGl4ZWwgIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9kb25lKTogRml4ZWQgbWVtb3J5IGxlYWs6IFRoZSBaTGliCglzdHJlYW0gd2FzIG5vdCBwcm9wZXJseSBmaW5hbGl6ZWQuCgoyMDAzLTAyLTI1ICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEluY2x1ZGUgRlRfVFJVRVRZUEVfSURTX0guCgkoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBUaGUgY21hcCBjYWNoZSBub3cKCXN1cHBvcnRzIFVDUy00IGNoYXJtYXBzIHdoZW4gYXZhaWxhYmxlIGluIEFzaWFuIGZvbnRzLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jOiBDaGFuZ2VkIGBhc2lhbicgdG8gYEFzaWFuJwoJaW4gY29tbWVudHMuCgoyMDAzLTAyLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2ZpbGxfb3V0cHV0KTogRml4ZWQgYSBidWcgdGhhdAoJY2F1c2VkIEZyZWVUeXBlIHRvIGxvb3AgZW5kbGVzc2x5IHdoZW4gdHJ5aW5nIHRvIHJlYWQgY2VydGFpbgoJY29tcHJlc3NlZCBnemlwIGZpbGVzLiAgVGhlIGZvbGxvd2luZyB0ZXN0IHJldmVhbHMgdGhlIGJ1ZzoKCgkgIHRvdWNoIDAxMjM0NTY3ODkgOyBnemlwIDAxMjM0NTY3ODkgOyBmdGR1bXAgMDEyMzQ1Njc4OS5negoKCVNldmVyYWwgZml4ZXMgdG8gdGhlIFBGUiBmb250IGRyaXZlcjoKCgktIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBlbWJlZGRlZCBiaXRtYXBzIHdhcyBub3QgY29ycmVjdGx5IHNldCBpbgoJICB0aGUgcm9vdCBGVF9GYWNlUmVjIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBmYWNlLgoKCS0gVGhlIGdseXBoIGxvYWRlciBhbHdheXMgdHJpZWQgdG8gbG9hZCB0aGUgb3V0bGluZXMgd2hlbgoJICBGVF9MT0FEX1NCSVRTX09OTFkgd2FzIHNwZWNpZmllZC4KCgktIFRoZSB0YWJsZSBsb2FkZWQgbm93IHNjYW5zIGZvciAqdW5kb2N1bWVudGVkKiBlbGVtZW50cyBvZiBhCgkgIHBoeXNpY2FsIGZvbnQncyBhdXhpbGlhcnkgZGF0YSByZWNvcmQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0bwoJICByZXRyaWV2ZSB0aGUgYHJlYWwnIGZhbWlseSBhbmQgc3R5bGUgbmFtZXMuCgoJTk9URSBUSEFUIFRIRVNFIENIQU5HRVMgVEhFIEZBTUlMWSBOQU1FIE9GIE1BTlkgUEZSIEZPTlRTIQoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9hdXhfbmFtZV9sb2FkKTogTmV3IGZ1bmN0aW9uLgoJKHBmcl9waHlfZm9udF9kb25lKTogRnJlZSBgZmFtaWx5X25hbWUnIGFuZCBgc3R5bGVfbmFtZScgYWxzby4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKHBmcl9waHlfZm9udF9sb2FkKTogRXh0cmFjdCB1c2VmdWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgYXV4aWxpYXJ5CglieXRlcy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9kb25lKTogU2V0IHBvaW50ZXJzIHRvIE5VTEwuCgkocGZyX2ZhY2VfaW5pdCk6IFByb3ZpZGUgZmFsbGJhY2sgdmFsdWVzIGZvciBgZmFtaWx5X25hbWUnIGFuZAoJYHN0eWxlX25hbWUnLgoJSGFuZGxlIHN0cmlrZXMuCgkocGZyX3Nsb3RfbG9hZCk6IEhhbmRsZSBGVF9MT0FEX1NCSVRTX09OTFkuCgkqIHNyYy9wZnIvcGZydHlwZXMuaCAoUEZSX1BoeUZvbnRSZWMpOiBBZGQgZmllbGRzIGBhc2NlbnQnLAoJYGRlc2NlbnQnLCBgbGVhZGluZycsIGBmYW1pbHlfbmFtZScsIGFuZCBgc3R5bGVfbmFtZScuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBGaXhlZCBhIHJvdW5kaW5nIGJ1ZwoJd2hlbiBjb21wdXRpbmcgdGhlIHNjYWxlIGZhY3RvcnMgZm9yIGEgZ2l2ZW4gY2hhcmFjdGVyIHNpemUgaW4KCXBvaW50cyB3aXRoIHJlc29sdXRpb24uCgoJKiBkZXZlbC9mdDJidWlsZC5oLCBkZXZlbC9mdG9wdGlvbi5oOiBOZXcgZmlsZXMgKGluIGEgbmV3IGRpcmVjdG9yeSkKCXdoaWNoIGFyZSBzcGVjaWFsIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIGluY2x1ZGUvZnQyYnVpbGQuaCBhbmQKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIHJlc3BlY3RpdmVseS4KCjIwMDMtMDItMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhpbmcgdGhlIHNsaWdodCBkaXN0b3J0aW9uIHByb2JsZW0gdGhhdCBvY2N1cnJlZCBkdWUgdG8gdGhlIGxhdGVzdAoJYXV0by1oaW50ZXIgY2hhbmdlcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmdF9yZWNvbXB1dGVfc2NhbGVkX21ldHJpY3MpOiBGaXggcm91bmRpbmcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBOZXcgdmFyaWFibGUgYG1ldHJpY3MyJy4KCVshVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IFJlbW92ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmggKFRUX1NpemVSZWMpOiBOZXcgZmllbGQgYG1ldHJpY3MnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFJlc2V0X091dGxpbmVfU2l6ZSk6IEZpeCBpbml0aWFsaXphdGlvbiBvZgoJYG1ldHJpY3MnLgoJW0ZUX0NPTkZJR19DSEVTVEVSX0FTQ0VOREVSXTogQ29kZSByZW1vdmVkLgoJKFJlc2V0X1NCaXRfU2l6ZSk6IEZpeCBpbml0aWFsaXphdGlvbiBvZiBgbWV0cmljcycuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoVFRfTG9hZF9Db250ZXh0KTogRml4IGluaXRpYWxpemF0aW9uIG9mCglgZXhlYy0+bWV0cmljcycuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogRGlzYWJsZWQgdGhlIGFkdmFuY2Ugd2lkdGgKCWBjb3JyZWN0aW9uJyB3aGljaCBzZWVtZWQgdG8gcHJvdmlkZSBtb3JlIHRyb3VibGUgdGhhbiBiZW5lZml0cy4KCjIwMDMtMDItMTMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglDaGFuZ2VkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZSBpbiBhIHdheSB0aGF0IG1ha2VzIGl0CglzaW1wbGVyIGFuZCBhbGxvd3MgZ2x5cGggbWV0cmljcyB0byBiZSBjaGFuZ2VkIChlLmcuLCBieSBhZGRpbmcgYQoJY29uc3RhbnQsIGFzIHJlcXVpcmVkIGJ5IENGRiBmb250cykgcmF0aGVyIHRoYW4ganVzdCBvdmVycmlkZGVuLgoJVGhpcyB3YXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgR2hvc3RTY3JpcHQtdG8tRnJlZVR5cGUgYnJpZGdlIHdvcmsuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUFsbG93IG1ldHJpY3MgdG8gYmUgb3ZlcnJpZGRlbi4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJRGl0dG8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBTaW1wbGlmeS4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQ29kZSBibG9jawoJbW92ZWQgZG93bi4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW5jcmVtLmg6IFVwZGF0ZWQuCgoyMDAzLTAxLTMxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEwsIGRvY3MvVE9ETzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbgoJZm9yIHRoZSAyLjEuNCByZWxlYXNlLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbDogVXBkYXRpbmcgdGhlIHByb2plY3QgZmlsZSBmb3IKCTIuMS40LgoKCSogc3JjL2d6aXAvYWRsZXIzMi5jLCBzcmMvZ3ppcC9mdGd6aXAuYywgc3JjL2d6aXAvaW5mYmxvY2suYywKCXNyYy9nemlwL2luZmNvZGVzLmMsIHNyYy9nemlwL2luZmxhdGUuYywgc3JjL2d6aXAvaW5mdHJlZXMuYywKCXNyYy9nemlwL2luZnV0aWwuYzogUmVtb3ZlZCBvbGQtc3R5bGUgKEsmUilmdW5jdGlvbiBkZWZpbml0aW9ucy4KCVRoaXMgYXZvaWRzIHdhcm5pbmdzIHdpdGggVmlzdWFsIEMrKyBhdCBpdHMgbW9zdCBwZWRhbnRpYyBtb2RlLgoKCSogc3JjL3Bmci9wZnJzYml0LmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCk6IENoYW5nZWQgYW4gRlRfRVJST1IKCWludG8gYW4gRlRfVFJBQ0UxIHNpbmNlIGl0IGNhdXNlZCBgZnR2aWV3JyBhbmQgb3RoZXJzIHRvIGR1bXAgdG9vCgltdWNoIGp1bmsgd2hlbiB0cnlpbmcgdG8gZGlzcGxheSBhIHdhdGVyZmFsbCB3aXRoIGEgZm9udCB3aXRob3V0IGEKCVVuaWNvZGUgY2hhcm1hcCAoZS5nLiAgU1lNQk9MLlRURikuCgoJSW1wbGVtZW50ZWQgRlRfQ09ORklHX0NIRVNURVJfQkxVRV9TQ0FMRSwgY29ycmVzcG9uZGluZyB0byB0aGUgbGFzdAoJcGF0Y2ggZnJvbSBEYXZpZCBDaGVzdGVyLCBidXQgd2l0aCBhIG11Y2ggc2ltcGxlciAoYW5kIHNhbmVyKQoJaW1wbGVtZW50YXRpb24uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKQoJW0ZUX0NPTkZJR19DSEVTVEVSX0JMVUVfU0NBTEVdOiBUcnkgdG8gb3B0aW1pemUgdGhlIHlfc2NhbGUgc28gdGhhdAoJdGhlIHRvcCBvZiBub24tY2FwaXRhbCBsZXR0ZXJzIGlzIGFsaWduZWQgb24gYSBwaXhlbCBib3VuZGFyeQoJd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSkKCVtGVF9DT05GSUdfQ0hFU1RFUl9CTFVFX1NDQUxFXTogUm91bmQgZGlmZmVyZW50bHkuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcykKCVtUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXTogRG8gc29tZSByb3VuZGluZyBvbmx5CglpZiB0aGlzIG1hY3JvIGlzIGRlZmluZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFJlc2V0X091dGxpbmVfU2l6ZSkKCVtGVF9DT05GSUdfQ0hFU1RFUl9BU0NFTkRFUl06IFJvdW5kIGRpZmZlcmVudGx5LgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmM6IEltcHJvdmVkIHRoZSBQb3N0c2NyaXB0IGhpbnRlci4gIEdldHRpbmcKCXJpZCBvZiBzdGVtIHNuYXBwaW5nIHNlZW1zIHRvIHdvcmsgd2VsbCBoZXJlICh0aG91Z2ggdGhlIHN0ZW1zIGFyZQoJc3RpbGwgc2xpZ2h0bHkgbW92ZWQgdG8gaW5jcmVhc2UgY29udHJhc3QpLgoJKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IENvbW1lbnRlZCBvdXQuCgkocHNoM19oaW50X2FsaWduX2xpZ2h0KTogTmV3IGZ1bmN0aW9uLgoJKHBzaDNfaGludF9hbGlnbik6IENvbW1lbnQgb3V0IHNvbWUgY29kZS4KCglUSElTIElNUFJPVkVTIEFOVEktQUxJQVNFRCBSRU5ERVJJTkcsIEJVVCBNT05PQ0hST01FIEFORCBMQ0QgTU9ERVMKCVNUSUxMIFNVQ0suCgoyMDAzLTAxLTIyICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IFNtYWxsIGZpeCB0byB0aGUKCXN0ZW0gd2lkdGggb3B0aW1pemF0aW9uLgoKMjAwMy0wMS0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBhIG5ldyBBUEkgYEZUX0dldF9CREZfUHJvcGVydHknIHRvIHJldHJpZXZlIHRoZSBCREYKCXByb3BlcnRpZXMgb2YgYSBnaXZlbiBQQ0Ygb3IgQkRGIGZvbnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmggKEZUX1Byb3BlcnR5VHlwZSk6IE5ldyBlbnVtZXJhdGlvbi4KCShCREZfUHJvcGVydHksIEJERl9Qcm9wZXJ0eVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCglGVF9HZXRfQkRGX1Byb3BlcnR5KTogTmV3IGZ1bmN0aW9uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2JkZnR5cGVzLmg6IEluY2x1ZGUgRlRfQkRGX0guCgkoQkRGX0dldFByb3BlcnR5RnVuYyk6IE5ldyBmdW5jdGlvbiBwb2ludGVyLgoKCSogc3JjL2Jhc2UvZnRiZGYuYyAodGVzdF9mb250X3R5cGUpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgoJKEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IFVzZSBgdGVzdF9mb250X3R5cGUnLgoJKEZUX0dldF9CREZfUHJvcGVydHkpOiBOZXcgZnVuY3Rpb24uCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IEluY2x1ZGUgRlRfQkRGX0guCgkoYmRmX2dldF9iZGZfcHJvcGVydHksIGJkZl9kcml2ZXJfcmVxdWVzdGVyKTogTmV3IGZ1bmN0aW9ucy4KCShiZGZfZHJpdmVyX2NsYXNzKTogVXNlIGBiZGZfZHJpdmVyX3JlcXVlc3RlcicuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IEluY2x1ZGUgRlRfQkRGX0guCgkocGNmX2dldF9iZGZfcHJvcGVydHksIHBkY19kcml2ZXJfcmVxdWVzdGVyKTogTmV3IGZ1bmN0aW9ucwoJKHBjZl9kcml2ZXJfY2xhc3MpOiBVc2UgYHBjZl9kcml2ZXJfcmVxdWVzdGVyJy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBJbmNsdWRlIGBwY2ZyZWFkLmgnLgoJKHBjZl9maW5kX3Byb3BlcnR5KTogRGVjb3JhdGUgaXQgd2l0aCBGVF9MT0NBTF9ERUYuCgkqIHNyYy9wY2YvcGNmcmVhZC5oOiBOZXcgZmlsZSwgcHJvdmlkaW5nIGBwY2ZfZmluZF9wcm9wZXJ0eScuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBSZWxheGVkIHRoZSBgaGVhZCcgdGFibGUgc2l6ZQoJdmVyaWZpY2F0aW9uIHRvIGFjY2VwdCBhIGZldyBicm9rZW4gZm9udHMgd2hvIHBhZCB0aGUgc2l6ZQoJaW5jb3JyZWN0bHkgKHRoZSB0YWJsZSBzaG91bGQgYmUgcGFkZGVkLCBidXQgaXRzIGBzaXplJyBmaWVsZAoJc2hvdWxkbid0IGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbikuCgoyMDAzLTAxLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2g6IFJlZ2VuZXJhdGVkIHdpdGggYGxpYnRvb2xpemUgLS1mb3JjZQoJLS1jb3B5JyBmcm9tIGxpYnRvb2wgMS40LjMuCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFJlZ2VuZXJhdGVkIHdpdGggYGFjbG9jYWwgLUkgLicgZnJvbQoJYXV0b21ha2UgMS43LjEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgd2l0aCBhdXRvY29uZiAyLjU0LgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgZnJvbQoJYGNvbmZpZycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLXNoLCBidWlsZHMvdW5peC9ta2luc3RhbGxkaXJzOiBVcGRhdGVkIGZyb20KCWBhdXRvbWFrZScgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoKMjAwMy0wMS0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXhlZCBkb2N1bWVudGF0aW9uIGZvcgoJRlRfU2l6ZV9NZXRyaWNzLgoKMjAwMy0wMS0xNSAgSmFtZXMgU3UgIDxzdXpoZUB0dXJib2xpbnV4LmNvbS5jbj4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2NoZWNrX2hlYWRlcik6IEJ1Z2ZpeDogY291bGRuJ3QgcmVhZAoJY2VydGFpbiBnemlwLWVkIGZvbnQgZmlsZXMgKHR5cG86IGAmJicgLT4gYCYnKS4KCjIwMDMtMDEtMTUgIEh1dyBEIE0gRGF2aWVzICA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CgoJQWRkZWQgYSBXaW5kb3dzIC5GTlQgc3BlY2lmaWMgQVBJIChtb3N0bHkgZm9yIFdpbmUpLiAgQWxzbyBmaXhlZCBhCgluYXN0eSBidWcgaW4gdGhlIGhlYWRlciBsb2FkZXIgd2hpY2ggd291bGQgY2F1c2UgaW52YWxpZCBtZW1vcnkKCW92ZXJ3cml0ZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9XSU5GT05UU19IKTogTmV3IG1hY3JvCglmb3IgZnR3aW5mbnQuaC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBJbmNsdWRlIEZUX1dJTkZPTlRTX0guCgkoRk5UX0ZvbnRSZWMpOiBVcGRhdGVkLgoJTW92ZSBXaW5kb3dzIEZOVCBkZWZpbml0aW9uIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaDogVGhpcyBuZXcgZmlsZS4KCShGVF9XaW5GTlRfSGVhZGVyUmVjKTogUmVuYW1lIGByZXNlcnZlZDInIHRvIGByZXNlcnZlZDEnLgoJKiBzcmMvYmFzZS9mdHdpbmZudC5jOiBOZXcgZmlsZSwgcHJvdmlkaW5nIGBGVF9HZXRfV2luRk5UX0hlYWRlcicuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAod2luZm50X2hlYWRlcl9maWVsZHMpOiBVcGRhdGVkLgoJUmVuYW1lIGByZXNlcnZlZDInIHRvIGByZXNlcnZlZDEnLgoJKGZudF9mb250X2xvYWQpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvZGVzY3JpcC5tbXMsIHNyYy9iYXNlL3J1bGVzLm1rOgoJVXBkYXRlZC4KCjIwMDMtMDEtMTQgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oLCBzcmMvYmFzZS9mdGdseXBoLmM6IEFkZGVkIGBjb25zdCcgdG8KCXRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCB0byBGVF9NYXRyaXhfTXVsdGlwbHksIHdoaWNoIGlzbid0CgljaGFuZ2VkIC0tIHRoaXMgYWRkcyBkb2N1bWVudGF0aW9uIGFuZCBjb252ZW5pZW5jZS4KCjIwMDMtMDEtMTMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbWV0cmljcykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVHJ1ZVR5cGUgdHlwZWZhY2VzIHdpdGhvdXQKCWhvcml6b250YWwgbWV0cmljcyAod2l0aG91dCB0aGUgYGhtdHgnIHRhYmxlKSBhcmUgbm93IHRvbGVyYXRlZCBpZgoJYW4gaW5jcmVtZW50YWwgaW50ZXJmYWNlIGhhcyBiZWVuIHNwZWNpZmllZCB0aGF0IGhhcyBhCglnZXRfZ2x5cGhfbWV0cmljcyBmdW5jdGlvbiwgaW1wbHlpbmcgdGhhdCBtZXRyaWNzIHdpbGwgYmUgc3VwcGxpZWQKCWZyb20gb3V0c2lkZS4gIFRoaXMgaGFwcGVucyBmb3IgY2VydGFpbiBUeXBlIDQyIGZvbnRzIHBhc3NlZCBmcm9tCglHaG9zdFNjcmlwdC4KCjIwMDMtMDEtMTEgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCglQYXRjaGVzIHRvIHRoZSBhdXRvLWhpbnRlciBpbiBvcmRlciB0byBzbGlnaHRseSBpbXByb3ZlIHRoZSBvdXRwdXQuCglOb3RlIHRoYXQgZXZlcnl0aGluZyBpcyBjb250cm9sbGVkIHRocm91Z2ggdGhlIG5ldwoJRlRfQ09ORklHX09QVElPTl9DSEVTVEVSX0hJTlRTIGRlZmluZWQgaW4gYGZ0b3B0aW9uLmgnLiAgVGhlcmUgYXJlCglhbHNvIGluZGl2aWR1YWwgRlRfQ09ORklHX0NIRVNURVJfWFhYIG1hY3JvcyB0byBjb250cm9sIGluZGl2aWR1YWwKCWBmZWF0dXJlcycuCgoJTm90ZSB0aGF0IGFsbCBpbXByb3ZlbWVudHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZQoJdHdlYWtlZCBmb3Igb3B0aW1pemF0aW9uIGFuZCB0ZXN0aW5nIHB1cnBvc2VzLiAgVGhlIGNvbmZpZ3VyYXRpb24KCW1hY3JvcyB3aWxsIG1vc3QgbGlrZWx5IGRpc2FwcGVhciBpbiB0aGUgc2hvcnQgZnV0dXJlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKEZUX0NPTkZJR19PUFRJT05fQ0hFU1RFUl9ISU5UUyk6IE5ldyBtYWNyby4KCShGVF9DT05GSUdfQ0hFU1RFUl97U01BTExfRixBU0NFTkRFUixTRVJJRixTVEVNLEJMVUVfU0NBTEV9KQoJW0ZUX0NPTkZJR19PUFRJT05fQ0hFU1RFUl9ISU5UU106IE5ldyBtYWNyb3MgdG8gY29udHJvbCBpbmRpdmlkdWFsCglmZWF0dXJlcy4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChibHVlX2NoYXJzKSBbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06CglBZGQgYmx1ZSB6b25lIGZvciBgZmlqa2RiaCcuCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5oIChBSF9JU19UT1BfQkxVRSkKCVtGVF9DT05GSUdfQ0hFU1RFUl9TTUFMTF9GXTogVXNlIGBBSF9CTFVFX1NNQUxMX0ZfVE9QJy4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKQoJW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogVXNlIGBBSF9FREdFX1NFUklGJy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfYmx1ZV9lZGdlcykgW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOgoJSW5jcmVhc2UgdGhyZXNob2xkIGZvciBgYmVzdF9kaXN0Jy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpCglbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBQcm92aWRlIG5ldyB2ZXJzaW9uIGZvciBpbXByb3ZlZCBzZXJpZgoJaGFuZGxpbmcuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpIFtGVF9DT05GSUdfQ0hFU1RFUl9TRVJJRl06IFVzZSBzcGVjaWFsCgl2ZXJzaW9uIG9mIGBhaF9jb21wdXRlX3N0ZW1fd2lkdGgnLgoJKGFoX2hpbnRfZWRnZXNfMykgW0ZUX0NPTkZJR19DSEVTVEVSX1NURU1dOiBBIG5ldyBhbGdvcml0aG0gZm9yIHN0ZW0KCWFsaWdubWVudCB3aGVuIHN0ZW0gd2lkdGhzIGFyZSBsZXNzIHRoYW4gMS41IHBpeGVscyB3aWRlIGNlbnRlcnMgdGhlCglzdGVtIHNsaWdodGx5IG9mZi1jZW50ZXIgb2YgdGhlIGNlbnRlciBvZiBhIHBpeGVsICh0aGlzIGluY3JlYXNlcwoJc2hhcnBuZXNzIGFuZCBjb25zaXN0ZW5jeSkuCglbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBVc2Ugc3BlY2lhbCB2ZXJzaW9uIG9mCglgYWhfY29tcHV0ZV9zdGVtX3dpZHRoJy4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCBbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06IEFkZAoJYEFIX0JMVUVfU01BTExfRl9UT1AnLgoKMjAwMy0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oIChXaW5GTlRfSGVhZGVyUmVjKTogSW5jcmVhc2UKCXNpemUgb2YgYHJlc2VydmVkMicgdG8gYXZvaWQgbWVtb3J5IG92ZXJ3cml0ZXMuCgoyMDAzLTAxLTA4ICBIdXcgRGF3aWVzICA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAod2luZm50X2hlYWRlcl9maWVsZHMpOiBSZWFkIDE2IGJ5dGVzIGludG8KCWByZXNlcnZlZDInLCBub3QgYHJlc2VydmVkJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmaW5kX3VuaWNvZGVfY2hhcm1hcCk6IEZpeGVkIHRoZSBlcnJvciBjb2RlCglyZXR1cm5lZCB3aGVuIHRoZSBmb250IGRvZXNuJ3QgY29udGFpbiBhIFVuaWNvZGUgY2hhcm1hcC4gIFRoaXMKCWFsbG93cyBGVDIgdG8gbG9hZCBgc3ltYm9sLnR0ZicgYW5kIGEgZmV3IG90aGVycyBjb3JyZWN0bHkgc2luY2UgdGhlCglsYXN0IHJlbGVhc2UuCgkob3Blbl9mYWNlKTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDMtMDEtMDggIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCUltcGxlbWVudGVkIHRoZSBGVF9SRU5ERVJfTU9ERV9MSUdIVCBoaW50aW5nIG1vZGUgaW4gdGhlIGF1dG8gYW5kCglwb3N0c2NyaXB0IGhpbnRlcnMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXJSZWMpOiBBZGQgYGRvX3N0ZW1fYWRqdXN0Jy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBIYW5kbGUKCWhpbnRlci0+ZG9fc3RlbV9hZGp1c3QuCgkoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBTZXQgaGludGVyLT5kb19zdGVtX2FkanVzdC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0dseXBoUmVjKTogQWRkIGBkb19zdGVtX2FkanVzdCcuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBVc2UgYGRvX3N0ZW1fYWRqdXN0Jy4KCShwczNfaGludHNfYXBwbHkpOiBIYW5kbGUgRlRfUkVOREVSX01PREVfTElHSFQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX1JlbmRlcl9Nb2RlKTogQWRkCglGVF9SRU5ERVJfTU9ERV9MSUdIVC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IEZpeGluZyB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIGhhbmRsZQoJaW52YWxpZCBjb21wb3NpdGVzIGNvcnJlY3RseSBieSBsaW1pdGluZyB0aGUgcmVjdXJzaW9uIGRlcHRoLgoJKFRUX01BWF9DT01QT1NJVEVfUkVDVVJTRSk6IE5ldyBtYWNyby4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogQWRkIGFyZ3VtZW50IGByZWN1cnNlX2NvdW50Jy4KCUxvYWQgYSBjb21wb3NpdGUgb25seSBpZiB0aGUgbnVtYmVycyBvZiBjb250b3VycyBpcyAtMSwgZW1pdCBlcnJvcgoJb3RoZXJ3aXNlLgoJKFRUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKMjAwMy0wMS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSmFtcnVsZXMsIEphbWZpbGUsIEphbWZpbGUuaW4sIHNyYy8qL0phbWZpbGU6IFNtYWxsIGNoYW5nZXMgdG8KCXN1cHBvcnQgdGhlIGNvbXBpbGF0aW9uIG9mIEZyZWVUeXBlIDIgYXMgcGFydCBvZiBsYXJnZXIgcHJvamVjdHMKCXdpdGggdGhlaXIgb3duIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAob25seSB3aXRoIEphbSkuCgoyMDAzLTAxLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYzogUHJvYmFibHkgdGhlIGxhc3QgYnVnLWZpeGVzIHRvIHRoZSBzdHJva2VyOwoJdGhlIEFQSSBpcyBsaWtlbHkgdG8gY2hhbmdlLCBob3dldmVyLgoJKGZ0X3N0cm9rZV9ib3JkZXJfY2xvc2UpOiBEb24ndCByZWNvcmQgZW1wdHkgcGF0aHMuCgkoZnRfc3Ryb2tlX2JvcmRlcl9nZXRfY291bnRzKTogSW5jcmVhc2UgYG51bV9wb2ludHMnIGFsc28gaW4gZm9yIGxvb3AuCgkoZnRfc3Ryb2tlX2JvcmRlcl9leHBvcnQpOiBEb24ndCBpbmNyZWFzZSBgd3JpdGUnIHR3aWNlIGluIGZvciBsb29wcy4KCShmdF9zdHJva2VyX291dHNpZGUpOiBIYW5kbGUgYHBoaScgdG9nZXRoZXIgd2l0aCBgdGhldGEnLgoJKEZUX1N0cm9rZXJfUGFyc2VPdXRsaW5lKTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfQW5nbGVfRGlmZik6IEZpeGluZyBmdW5jdGlvbjogSXQgcmV0dXJuZWQKCWludmFsaWQgdmFsdWVzIGZvciBsYXJnZSBuZWdhdGl2ZSBhbmdsZSBkaWZmZXJlbmNlcyAocmVzdWx0aW5nIGluCglpbmNvcnJlY3Qgc3Ryb2tlciBjb21wdXRhdGlvbnMsIGFtb25nIG90aGVyIHRoaW5ncykuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmspOiBSZW1vdmluZyBpbmNvcnJlY3QKCWFzc2VydGlvbiwgYW5kIGNoYW5naW5nIGNvZGUgdG8gYXZvaWQgaGFzaCB0YWJsZSBzaXplIGNvbnRyYWN0aW9uLgoKCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWssIHNyYy9iYXNlL2Rlc2NyaXAubW1zOiBBZGRpbmcKCWBmdHN0cm9rZXInIHRvIGRlZmF1bHQgYnVpbGQsIGFzIG9wdGlvbmFsIGNvbXBvbmVudC4KCjIwMDItMTItMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9nemlwL2FkbGVyMzIuYywgc3JjL2d6aXAvaW5mYmxvY2suYywgc3JjL2d6aXAvaW5mbGF0ZS5jLAoJc3JjL2d6aXAvaW5mdHJlZXMuYywgc3JjL2d6aXAvemNvbmYuaCwgc3JjL2d6aXAvemxpYi5oLAoJc3JjL2d6aXAvenV0aWwuaDogVXBkYXRlcyB0byBhbGxvdyBjb21waWxhdGlvbiB3aXRob3V0IGNvbXBpbGVyCgl3YXJuaW5ncyB3aXRoIExDQy1XaW4zMi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gNC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBJbmNyZWFzZWQgdG8gOTozOjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0ZWQuCgoyMDAyLTEyLTIzICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYywgYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoTElOS19MSUJSQVJZKSwKCWJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChTWVNURU1fWkxJQik6IFNtYWxsIGZpeCB0byBjb25maWd1cmUKCXN1Yi1zeXN0ZW0gb24gVW5peCB0byBhbGxvdyBvdGhlciBwcm9ncmFtcyB0byBjb3JyZWN0bHkgbGluayB3aXRoCgl6bGliIHdoZW4gbmVlZGVkLgoKMjAwMi0xMi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFNGTlRfTG9hZF9UYWJsZV9GdW5jKTogTmV3CglmdW5jdGlvbiBwb2ludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChGVF9Mb2FkX1NmbnRfVGFibGUpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnQgaXQuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2dldF9pbnRlcmZhY2UpOiBIYW5kbGUgYGxvYWRfc2ZudCcKCW1vZHVsZSByZXF1ZXN0LgoKMjAwMi0xMi0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZpbmRfdW5pY29kZV9jaGFybWFwKTogQWRkZWQgc29tZSBjb21tZW50cyB0bwoJYmV0dGVyIGV4cGxhaW4gd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4KCShvcGVuX2ZhY2UpOiBJbmNsdWRlZCBHcmFoYW0gQXNoZXIncyBmaXggdG8gcHJldmVudCBmYWNlcyB3aXRob3V0CglVbmljb2RlIGNoYXJtYXBzIGZyb20gbG9hZGluZy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogSW5jbHVkZWQgR2VvcmdlIFdpbGxpYW1zJ3MgZml4IHRvIHN1cHBvcnQKCXZlcnNpb24gMiBmb250cyBjb3JyZWN0bHkuCgkod2luZm50X2hlYWRlcl9maWVsZHMpOiBVcGRhdGVkLgoJKGZudF9mb250X2xvYWQpOiBIYW5kbGUgdmVyc2lvbiAyIGZvbnRzLgoJKEZOVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCjIwMDItMTItMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0aW5nIGRvY3VtZW50IHRvIGJldHRlciBleHBsYWluIHRoZQoJZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdGhyZWUgdmVyc2lvbiBudW1iZXJzIGJlaW5nIHVzZWQgb24gVW5peCwgYXMKCXdlbGwgYXMgcHJvdmlkaW5nIGFuIGF1dG9jb25mIGZyYWdtZW50IHByb3ZpZGVkIGJ5IExhcnMgQ2xhdXNlbi4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9jb25pYyk6IEZpeGVkIHNtYWxsIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgYmV6aWVyIGFyY3Mgd2l0aCBuZWdhdGl2ZSB2ZXJ0aWNhbCBjb29yZGluYXRlcyB0byBiZQoJcmVuZGVyZWQgYXBwcm9wcmlhdGVseS4KCjIwMDItMTItMDIgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYzogTW9kaWZpZWQgdGhlIGxvZ2ljIHRvIGdldCBVbmljb2RlIGNoYXJtYXBzLgoJTm93IGl0IGxvYWRzIFVDUy00IGNoYXJtYXBzIHdoZW4gdGhlcmUgaXMgb25lLgoJKGZpbmRfdW5pY29kZV9jaGFybWFwKTogTmV3IGZ1bmN0aW9uLgoJKG9wZW5fZmFjZSk6IFJlZmVyIHRvIHRoZSBhYm92ZSBvbmUuCgkoRlRfU2VsZWN0X0NoYXJtYXApOiBJZGVtLgoKMjAwMi0xMS0yOSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmg6IENvcnJlY3QgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nCgltYWNybyAod2FzIF9fRlRYRjg2X0hfXyAuLi4pLgoKMjAwMi0xMS0yNyAgVmluY2VudCBDYXJvbiAgPHYuY2Fyb25AemVyb2RldXgubmV0PgoKCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4sIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiwKCWJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYywgc3JjL2d6aXAvcnVsZXMubWssIHNyYy9nemlwL2Z0Z3ppcC5jCglbRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQl06IEFkZGluZyBzdXBwb3J0IGZvciBzeXN0ZW0gemxpYgoJaW5zdGFsbGF0aW9ucyBpZiBhdmFpbGFibGUgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSAoVW5peCBvbmx5KS4KCjIwMDItMTEtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfY2hhcnNldF9sb2FkLCBjZmZfZW5jb2RpbmdfbG9hZCk6IE1vZGlmaWVkCgljaGFyc2V0IGxvYWRlciB0byBhY2NlcHQgcHJlLWRlZmluZWQgY2hhcnNldHMsIGV2ZW4gd2hlbiB0aGUgZm9udAoJY29udGFpbnMgZmV3ZXIgZ2x5cGhzLiAgQWxzbyBlbmZvcmNlZCBtb3JlIGNoZWNrcyB0byBlbnN1cmUgdGhhdCB3ZQoJbmV2ZXIgb3ZlcmZsb3cgdGhlIGNoYXJhY3RlciBjb2RlcyBhcnJheSBpbiB0aGUgZW5jb2RpbmcuCgoyMDAyLTExLTIyICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGVkIHRvIGxhdGVzdCBPcGVuVHlwZQoJc3BlY2lmaWNhdGlvbi4KCjIwMDItMTEtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4zIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMTEtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNzYml0LmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQKCWNhdXNlZCBwcm9ibGVtcyB3aXRoIGVtYmVkZGVkIGJpdG1hcHMuCgoJKiBzcmMvb3RsYXlvdXQvb3RsYXlvdXQuaCwgc3JjL290bHlhb3V0L290bGNvbmYuaCwKCXNyYy9vdGxheW91dC9vdGxnc3ViLmMsIHNyYy9vdGxheW91dC9vdGxnc3ViLmgsCglzcmMvb3RsYXlvdXQvb3RscGFyc2UuYywgc3JjL290bGF5b3V0L290bHBhcnNlLmgsCglzcmMvb3RsYXlvdXQvb3RsdXRpbHMuaDogVXBkYXRpbmcgdGhlIE9wZW5UeXBlIExheW91dCBjb2RlLCBhZGRpbmcKCXN1cHBvcnQgZm90IHRoZSBmaXJzdCBHU1VCIGxvb2t1cHMuICBOb3RoaW5nIHRoYXQgcmVhbGx5IGNvbXBpbGVzCglmb3Igbm93IHRob3VnaC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IERpc2FibGVkIHNlcmlmIHN0ZW0KCXdpZHRoIHF1YW50aXphdGlvbi4gIEl0IHByb2R1Y2VzIHNsaWdodGx5IGJldHRlciBzaGFwZXMgdGhvdWdoIHRoaXMKCWlzIG5vdCBkaXN0aW5ndWlzaGFibGUgd2l0aCBtYW55IGZvbnRzLgoJUmVtb3ZlIG90aGVyIGRlYWQgY29kZS4KCgkqIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBTaW1wbGlmaWVkLgoJVXNlICQoRlQyX1NSQ19ESVIpLgoKMjAwMi0xMS0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9MT0FEX1RBUkdFVF9MSUdIVCk6IE5ldyBtYWNyby4KCShGVF9MT0FEX1RBUkdFVCwgRlRfTE9BRF9UQVJHRVRfTU9ERSk6IFVzZSBgJiAxNScgaW5zdGVhZCBvZiBgJiA3Jy4KCjIwMDItMTEtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIHNyYy9nemlwL2Z0Z3ppcC5jOiBBZGRlZAoJc3VwcG9ydCBmb3IgdGhlIEZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUIgb3B0aW9uLCB1c2VkIHRvIHNwZWNpZnkKCXRoZSB1c2Ugb2Ygc3lzdGVtLXdpZGUgemxpYi4KCglOb3RlIHRoYXQgdGhpcyBtYWNybywgYXMgd2VsbCBhcwoJVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiwgaXMgbm90ICN1bmRlZi1lZCBhbnltb3JlLgoJVGhpcyBhbGxvd3MgdGhlIGJ1aWxkIHN5c3RlbSB0byBkZWZpbmUgdGhlbSBkZXBlbmRpbmcgb24gdGhlCgljb25maWd1cmF0aW9uICh0eXBpY2FsbHkgYnkgYWRkaW5nIC1EIGZsYWdzIGF0IGNvbXBpbGUgdGltZSkuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncyBpbiBvcHRpbWl6ZWQgbW9kZSByZWxhdGl2ZSB0byB0aGUgYHZvbGF0aWxlJyBsb2NhbAoJdmFyaWFibGVzLiAgVGhpcyB3YXMgbm90IGEgY29tcGlsZXIgYnVnIGFmdGVyIGFsbCwgYnV0IHRoZSBmYWN0IHRoYXQKCWEgcG9pbnRlciB0byBhIHZvbGF0aWxlIHZhcmlhYmxlIGlzIG5vdCB0aGUgc2FtZSBhcyBhIHZvbGF0aWxlCglwb2ludGVyIHRvIGEgdmFyaWFibGUgOi0pCgoJVGhlIGZpeCB3YXMgdG8gY2hhbmdlCgkgIGB2b2xhdGlsZSBGVF9CeXRlKiBwJwoJaW50bwoJICBgRlRfQnl0ZSogdm9sYXRpbGUgcCcuCgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX3BoeV9mb250X2xvYWQpLCBzcmMvcGZyL3BmcmRyaXZyLmMKCShwZnJfZ2V0X21ldHJpY3MpLCBzcmMvZ3ppcC9pbmZ0cmVlcy5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzIGluCglvcHRpbWl6ZWQgbW9kZXMuCgoJKiBzcmMvZ3ppcC8qLltoY106IE1vZGlmaWVkIG91ciB6bGliIGNvcHkgaW4gb3JkZXIgdG8gcHJldmVudAoJZXhwb3J0aW5nIGFueSB6bGliIGZ1bmN0aW9uIG5hbWVzIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudC4gIFRoaXMKCXByZXZlbnRzIGxpbmtpbmcgcHJvYmxlbXMgb24gc29tZSBwbGF0Zm9ybXMsIHdoZW4gYXBwbGljYXRpb25zIHdhbnQKCXRvIGxpbmsgRnJlZVR5cGUgX2FuZF8gemxpYiB0b2dldGhlci4KCjIwMDItMTEtMDUgIEp1bGl1c3ogIDxqY2hAcHBzLmp1c3NpZXUuZnI+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3RhYmxlX2FkZCk6IE1vZGlmaWVkIGluY3JlbWVudCBsb29wIGluCglvcmRlciB0byBpbXBsZW1lbnQgZXhwb25lbnRpYWwgYmVoYXZpb3VyLgoKMjAwMi0xMS0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIFBGUi1zcGVjaWZpYyBwdWJsaWMgQVBJLiAgRml4ZWQgdGhlIGtlcm5pbmcgcmV0cmlldmVsIHJvdXRpbmUKCShpdCByZXR1cm5lZCBpbnZhbGlkIHZhbHVlcyB3aGVuIHRoZSBvdXRsaW5lIGFuZCBtZXRyaWNzIHJlc29sdXRpb24KCWRpZmZlcikuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cGZyLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGZyLmg6IE5ldwoJZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1BGUl9IKTogTmV3CgltYWNybyBmb3IgcGZyLmguCgoJKiBzcmMvYmFzZS9mdHBmci5jOiBOZXcgZmlsZS4KCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6IFVwZGF0ZWQuCgoJKiBzcmMvcGZyL3BmcmRyaXZyLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUEZSX0guCgkocGZyX2dldF9rZXJuaW5nLCBwZnJfZ2V0X2FkdmFuY2UsIHBmcl9nZXRfbWV0cmljcyk6IE5ldyBmdW5jdGlvbnMuCgkocGZyX3NlcnZpY2VfcmVjKTogTmV3IGZvcm1hdCBpbnRlcmZhY2UuCgkocGZyX2RyaXZlcl9jbGFzcyk6IFVzZSBgcGZyX3NlcnZpY2VfcmVjJy4KCVJlcGxhY2UgYHBmcl9mYWNlX2dldF9rZXJuaW5nJyB3aXRoIGBwZnJfZ2V0X2tlcm5pbmcnLgoJKiBzcmMvcGZyL3Bmcm9ianMuYzogUmVtb3ZlIGRlYWQgY29kZS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmdF9nbHlwaHNsb3RfY2xlYXIpOiBTbWFsbCBpbnRlcm5hbCBmaXggdG8KCWJldHRlciBzdXBwb3J0IGJpdG1hcC1iYXNlZCBmb250IGZvcm1hdHMuCgoJKiBzcmMvYmFzZS9mdHN5bnRoLmMgKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IEZpeCBoYW5kbGluZyBvZgoJYHNjYWxlJy4KCUZpeCBhcmd1bWVudHMgdG8gYEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyJy4KCjIwMDItMTAtMzEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGQgc3VwcG9ydCBmb3IgYXV0b21hdGljIGhhbmRsaW5nIG9mIGd6aXAtY29tcHJlc3NlZCBQQ0YgZmlsZXMuCgoJKiBzcmMvZ3ppcC8qOiBOZXcgZmlsZXMsIHRha2VuIGZyb20gdGhlIHpsaWIgcGFja2FnZSAoZXhjZXB0CglmdGd6aXAuYykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oLCBzcmMvZ3ppcC9mdGd6aXAuYzogTmV3IGZpbGVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9HWklQX0gpOiBOZXcgbWFjcm8gZm9yCglgZnRnemlwLmgnLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYzogSW5jbHVkZSBGVF9HWklQX0ggYW5kIEZUX0VSUk9SU19ILgoJKFBDRl9GYWNlX0luaXQpOiBJZiBub3JtYWwgb3BlbiBmYWlscywgdHJ5IHRvIG9wZW4gZ3ppcCBzdHJlYW0uCgkoUENGX0ZhY2VfRG9uZSk6IENsb3NlIGd6aXAgc3RyZWFtLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wY2Z0eXBlcy5oIChQQ0ZfUHVibGljX0ZhY2VSZWMpLAoJc3JjL3BjZi9wY2YuaCAoUENGX0ZhY2VSZWMpOiBBZGQgYGd6aXBfc3RyZWFtJyBhbmQgYGd6aXBfc291cmNlJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUIpOgoJTmV3IG1hY3JvLgoJKFQxX0NPTkZJR19PUFRJT05fRElTQUJMRV9ISU5URVIsIEZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTCglGVF9DT05GSUdfT1BUSU9OX05PX0NPTlZFTklFTkNFX0ZVTkNTLAoJRlRfQ09ORklHX09QVElPTl9BTFRFUk5BVEVfR0xZUEhfRk9STUFUUyk6IFJlbW92ZWQuCgoJKEZUX0VYUE9SVCwgRlRfRVhQT1JUX0RFRiwgRlRfREVCVUdfTEVWRUxfRVJST1IsCglGVF9ERUJVR19MRVZFTF9UUkFDRSwgRlRfREVCVUdfTUVNT1JZKTogQ29tbWVudCBvdXQgZGVmaW5pdGlvbnMgc28KCXRoYXQgcGxhdGZvcm0gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBvdmVycmlkZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogSW5jbHVkZSBGVF9TWVNURU1fSC4KCjIwMDItMTAtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEZyZWVUeXBlIDIuMS4zcmMzIHJlbGVhc2VkLgoKMjAwMi0xMC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUX1BPSU5URVJfVE9fVUxPTkcpOiBOZXcgbWFjcm8uCgkoRlRDX0ZBQ0VfSURfSEFTSCk6IFJld3JpdHRlbiwgdXNpbmcgRlRfUE9JTlRFUl9UT19VTE9ORy4KCjIwMDItMTAtMjIgIEdpdXNlcHBlIEdoaWLyICA8Z2hpYm9AbWFuZHJha2Vzb2Z0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRW5jb2RpbmcpOiBGaXggZW50cnkgZm9yIGxhdGluLTIuCgoyMDAyLTEwLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX09wZW5fRmFjZSk6IFVzZSBgY29uc3QnIGZvciBgYXJncycKCShzdWdnZXN0ZWQgYnkgR3JhaGFtKS4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IFVwZGF0ZWQuCgkoZnRfaW5wdXRfc3RyZWFtX25ldyk6IERpdHRvLgoKMjAwMi0xMC0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBzdXBwb3J0IGZvciBlbWJlZGRlZCBiaXRtYXBzIHRvIHRoZSBQRlIgZHJpdmVyLCBhbmQgcmV3cml0aW5nCglpdHMga2VybmluZyBsb2FkZXIvaGFuZGxlciB0byB1c2UgYWxsIGtlcm5pbmcgcGFpcnMgaW4gYSBwaHlzaWNhbAoJZm9udCAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdCBpdGVtKS4KCgkqIHNyYy9wZnIvcGZyLmM6IEluY2x1ZGUgYHBmcnNiaXQuYycuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBgcGZyc2JpdC5oJy4KCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfa2VybmluZ19wYWlycyk6IFJld3JpdHRlbi4KCShwZnJfcGh5X2ZvbnRfZG9uZSwgcGZyX3BoeV9mb250X2xvYWQpOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3Bmcm9ia3MuYzogSW5jbHVkZSBgcGZyc2JpdC5oJy4KCShwZnJfZmFjZV9pbml0KTogSGFuZGxlIGtlcm5pbmcgYW5kIGVtYmVkZGVkIGJpdG1hcHMuCgkocGZyX3Nsb3RfbG9hZCk6IExvYWQgZW1iZWRkZWQgYml0bWFwcy4KCShQRlJfS0VSTl9JTkRFWCk6IFJlbW92ZWQuCgkocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBSZXdyaXR0ZW4uCgkqIHNyYy9wZnIvcGZyc2JpdC5jLCBzcmMvcGZyL3BmcnNiaXQuaDogTmV3IGZpbGVzLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9LZXJuSXRlbVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCgkoUEZSX0tFUk5fSU5ERVgpOiBOZXcgbWFjcm8uCgkoUEZSX1BoeUZvbnRSZWMpOiBBZGQgaXRlbXMgZm9yIGtlcm5pbmcgYW5kIGVtYmVkZGVkIGJpdG1hcHMuCgkqIHNyYy9wZnIvSmFtZmlsZSAoX3NvdXJjZXMpIFtGVDJfTVVMVEldOiBBZGQgYHBmcnNiaXQnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBEb24ndCBsb2FkIGJpdG1hcCBmb250cyBpZgoJRlRfTE9BRF9OT19SRUNVUlNFIGlzIHNldC4KCUxvYWQgZW1iZWRkZWQgYml0bWFwcyBvbmx5IGlmIEZUX0xPQURfTk9fQklUTUFQIGlzbid0IHNldC4KCgkqIHNyYy90b29scy9kb2NtYWtlci9jb250ZW50LnB5LCBzcmMvdG9vbHMvZG9jbWFrZXIvc291cmNlcy5weSwKCXNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IEZpeGluZyBhIGZldyBuYXN0eSBidWdzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IFRoZSB2YWxpZGF0b3IgZm9yIGZvcm1hdCA0CglzdWItdGFibGVzIGlzIG5vdyBjYXBhYmxlIG9mIGRlYWxpbmcgd2l0aCBpbnZhbGlkIGBsZW5ndGgnIGZpZWxkcyBhdAoJdGhlIHN0YXJ0IG9mIHRoZSBzdWItdGFibGUuICBUaGlzIGFsbG93cyBmb250cyBsaWtlIGBtZ19fX19fXy50dGYnCgkoaS5lLiAgTWFycmlhZ2UpIHRvIHJldHVybiBhY2N1cmF0ZSBjaGFybWFwcy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDItMTAtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChTVUJQSVhFTFMpOiBBZGQgY2FzdCB0byBgVFBvcycuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoVFJVTkMpOiBBZGQgY2FzdCB0byBgVENvb3JkJy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShUUmFzdGVyKTogVXNlIGBUUG9zJyBmb3IgbWluX2V4LCBtYXhfZXgsIG1pbl9leSwgbWF4X2V5LCBhbmQKCWxhc3RfZXkuCglVcGRhdGUgYWxsIGNhc3RzLgoJKGdyYXlfcmVuZGVyX2xpbmUpOiBGaXggY2FzdHMgZm9yIGBwJyBhbmQgYGZpcnN0Jy4KCjIwMDItMTAtMDIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChiZGZfbG9hZF9mb250KTogQWxsb2NhdGUgdGhlIF9iZGZfcGFyc2VfdAoJc3RydWN0dXJlIHdpdGggRlRfQUxMT0MgaW5zdGVhZCBvZiB1c2luZyB0aGUgc3RhY2suCgoyMDAyLTA5LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKG51bV9zYml0X3N0cmlrZXMsCgludW1fc2JpdF9zY2FsZXMpOiBVc2UgYEZUX1VMb25nJy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVXBkYXRlZCBhY2NvcmRpbmdseS4KCSogc3JjL3NmbnQvdHRzYml0LmMgKHR0X2ZhY2Vfc2V0X3NiaXRfc3RyaWtlKTogRGl0dG8uCgkoZmluZF9zYml0X2ltYWdlKTogUmVtb3ZlIGNhc3QuCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeCBjYXN0LgoKMjAwMi0wOS0yNyAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbmFtZXMpOiBVc2UgY2FzdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDIpOiBVc2UgbG9uZyBjb25zdGFudC4KCShjb2RlX3RvX2luZGV4NCk6IFVzZSBjYXN0LgoJKGNvZGVfdG9faW5kZXg4XzEyKTogRml4IGNhc3QuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9uZXh0LCB0dF9jbWFwOF9jaGFyX2luZGV4LAoJdHRfY21hcDEyX2NoYXJfaW5kZXgpOiBVc2UgY2FzdCBmb3IgYHJlc3VsdCcuCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFVzZSBjYXN0LgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX3VjczQpOiBVc2UgY2FzdCBmb3IKCWBjb2RlJy4KCShzZm50X2xvYWRfZmFjZSk6IFVzZSBGVF9JbnQzMiBmb3IgYGZsYWdzJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zY2FubGluZSwgZ3JheV9yZW5kZXJfbGluZSwKCWdyYXlfY29tcHV0ZV9jYm94LCBncmF5X2NvbnZlcnRfZ2x5cGgsIGdyYXlfcmFzdGVyX3Jlc2V0KTogQWRkIGNhc3RzCgl0byBgVENvb3JkJyBhbmQgYGludCcuCglNb3JlIDE2Yml0IGZpeGVzLgoJcy9GVF9Qb3MvVFBvcy8uCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogQWRkIGNhc3RzLgoKMjAwMi0wOS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRwb3N0LmMgKGxvYWRfcG9zdF9uYW1lcywgdHRfZmFjZV9mcmVlX3BzX25hbWVzLAoJdHRfZmFjZV9nZXRfcHNfbmFtZSk6IFJlcGxhY2Ugc3dpdGNoIHN0YXRlbWVudCB3aXRoIGlmIGNsYXVzZXMgdG8KCW1ha2UgaXQgbW9yZSBwb3J0YWJsZS4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKEZUX01vZHVsZV9DbGFzcyk6IFVzZSBgRlRfTG9uZycgZm9yCglgbW9kdWxlX3NpemUnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmggKEZUX0dseXBoX0NsYXNzXyk6IFVzZSBgRlRfTG9uZycgZm9yCglgZ2x5cGhfc2l6ZScuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVuZGVyX0dseXBoKTogQ2hhbmdlIHNlY29uZCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgkoRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogQ2hhbmdlIHRoaXJkIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtZXRlcgoJdG8gYEZUX1JlbmRlcl9Nb2RlJy4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IENoYW5nZSB0aGlyZCBwYXJhbWV0ZXIKCXRvIGBGVF9SZW5kZXJfTW9kZScuCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlciwgZnRfc21vb3RoX3JlbmRlcl9sY2QsCglmdF9zbW9vdGhfcmVuZGVyX2xjZF92KTogRGl0dG8uCgkoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogQ2hhbmdlIHRoaXJkIGFuZCBmaWZ0aCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaDogVXBkYXRlZC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoTG9hZF9HbHlwaCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfR2x5cGhfTG9hZCksIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKSwKCXNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpLCBzcmMvdDQyL3Q0Mm9ianMuYwoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCksIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpOiBDaGFuZ2UKCWZvdXJ0aCBwYXJhbWV0ZXIgdG8gYEZUX0ludDMyJy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogQWRkIHR3byBtaXNzaW5nIHBhcmFtZXRlcnMKCWFuZCBkZWNsYXJlIHRoZW0gYXMgdW51c2VkLgoKCSogc3JjL2NpZC9jaWRwYXJzZS5oIChDSURfUGFyc2VyKTogVXNlIEZUX0xvbmcgZm9yIGBwb3N0c2NyaXB0X2xlbicuCgoJKiBzcmMvcHNuYW1lcy9wc25hbWVzLmggKFBTX1VuaWNvZGVfVmFsdWVfRnVuYyk6IENoYW5nZSByZXR1cm4KCXZhbHVlIHRvIEZUX1VJbnQzMi4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZV92YWx1ZSwgcHNfYnVpbGRfdW5pY29kZV90YWJsZSk6CglVcGRhdGVkIGFjY29yZGluZ2x5LgoKMjAwMi0wOS0yNiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoR2V0X0tlcm5pbmcpOiBVc2UgRlRfTG9uZyBmb3IgYG1pZGRsZScuCgkoY2ZmX2dldF9nbHlwaF9uYW1lKTogVXNlIGNhc3QgZm9yIHJlc3VsdCBvZiBmdF9zdHJsZW4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX3JlYWwpOiBVc2VyIGNhc3QgZm9yIGFzc2lnbmluZwoJYGV4cCcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfaW5kZXhfZ2V0X3BvaW50ZXJzKTogVXNlIEZUX1VMb25nIGZvcgoJc29tZSBsb2NhbCB2YXJpYWJsZXMuCgkoY2ZmX2NoYXJzZXRfbG9hZCwgY2ZmX2VuY29kaW5nX2xvYWQpOiBVc2UgY2FzdHMgdG8gRlRfVUludCBmb3Igc29tZQoJc3dpdGNoIHN0YXRlbWVudHMuCgkoY2ZmX2ZvbnRfbG9hZCk6IFVzZSBjYXN0IGluIGNhbGwgdG8gQ0ZGX0xvYWRfRkRfU2VsZWN0LgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX3NpemVfaW5pdCk6IFVzZSBtb3JlIGNhc3RzLgoJKGNmZl9mYWNlX2luaXQpOiBVc2UgRlRfSW50MzIgZm9yIGBmbGFncycuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX29wZXJhdG9yX3NlYWMpOiBVc2UgY2FzdCBmb3IgYXNzaWduaW5nCglgYWR4JyBhbmQgYGFkeScuCgkoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgRlRfVUxvbmcgZm9yIHRoaXJkIHBhcmFtZXRlci4KCVVzZSBtb3JlIGNhc3RzLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfdW5pY29kZV9pbml0KTogVXNlIGNhc3QgZm9yIGBjb3VudCcuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBVc2UgRlRfVUxvbmcgZm9yIGBsZW4nLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogQWRkIG1pc3NpbmcgY2FzdCBmb3IKCWBjaWRfZ2V0X29mZnNldCcuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAodDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncykgPDE4PjogVXNlCgljYXN0IGZvciBgbnVtX3BvaW50cycuCgkodDFfZGVjb2Rlcl9pbml0KTogVXNlIGNhc3QgZm9yIGFzc2lnbmluZyBgZGVjb2Rlci0+bnVtX2dseXBocycuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBVc2UgRlRfSW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggKEZUX1Nsb3RfTG9hZEZ1bmMpOiBVc2UKCWBGVF9JbnQzMicgZm9yIGZvdXJ0aCBwYXJhbWV0ZXIuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBVc2UgY2FzdCBmb3IgY2FsbGluZwoJY2xhenotPmluaXRfZmFjZS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoU2V0X0hpZ2hfUHJlY2lzaW9uKTogVXNlIGAxJyBpbnN0ZWFkIG9mCglgMUwnLgoJKEZpbmFsaXplX1Byb2ZpbGVfVGFibGUsIExpbmVfVXAsIGZ0X2JsYWNrX2luaXQpOiBVc2UgY2FzdHMuCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IERpdHRvLgoKCSogc3JjL3NmbnQvc2ZudF9kaXJfY2hlY2s6IENvbXBhcmUgYG1hZ2ljJyB3aXRoIHVuc2lnbmVkIGxvbmcKCWNvbnN0YW50LgoKMjAwMi0wOS0yNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBVcGRhdGVkLgoKMjAwMi0wOS0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSElOVF9NRVRSSUNTKTogRGlzYWJsaW5nIG1ldHJpY3MKCWhpbnRpbmcgaW4gdGhlIGF1dG8taGludGVyLiAgVGhpcyBwcm9kdWNlcyBtdWNoIGJldHRlciBhbnRpLWFsaWFzZWQKCXRleHQuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIHRoZSBjaGFuZ2VzIGRvY3VtZW50YXRpb24uCgoyMDAyLTA5LTI1ICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUsIHR0X2NtYXA0X2NoYXJfaW5kZXgsCgl0dF9jbWFwNF9jaGFyX25leHQpOiBBZGRlZCBzdXBwb3J0IGZvciBvcGVuc19fXy50dGYgKGl0IGNvbnRhaW5zIGEKCWNoYXJtYXAgdGhhdCB1c2VzIG9mZnNldD0weEZGRkZVIGluc3RlYWQgb2YgMHgwMDAwIHRvIGluZGljYXRlIGEKCW1pc3NpbmcgZ2x5cGgpLgoKMjAwMi0wOS0yMSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChMb2FkX0dseXBoKTogRm91cnRoIHBhcmFtZXRlciBtdXN0IGJlCglGVF9JbnQzMi4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuaCAoVFRfTG9hZF9HbHlwaCk6CglEaXR0by4KCjIwMDItMDktMTkgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJTW9yZSAxNmJpdCBmaXhlcy4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChzb3J0X3ZhbHVlcyk6IFVzZSBGVF9Qb3MgZm9yIGBzd2FwJy4KCShhaF9oaW50ZXJfY29tcHV0ZV93aWR0aHMpOiBVc2UgRlRfUG9zIGZvciBgZGlzdCcuCglVc2UgQUhfTUFYX1dJRFRIUy4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9zY2FsZV9ibHVlX2VkZ2VzKTogVXNlIEZUX1BvcwoJZm9yIGBkZWx0YScuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogUmVwbGFjZSBzb21lIGludHMgd2l0aCBGVF9JbnQgYW5kCglGVF9Qb3MuCgkoYWhfdGVzdF9leHRyZW1hKTogQ2xlYW4gdXAgY29kZS4KCShhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgNCBGVF9JbnQgdmFyaWFibGVzIGluc3RlYWQgb2YgRlRfQkJveCB0bwoJaG9sZCBpbmRpY2VzLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9TZWdtZW50UmVjKTogQ2hhbmdlIHR5cGUgb2YgYHNjb3JlJwoJdG8gRlRfUG9zLgoKMjAwMi0wOS0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIHRvCglyZWNlbnQgdmVyc2lvbnMuCgoyMDAyLTA5LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTGlicmFyeV9WZXJzaW9uKTogQnVnZml4LgoKCSogRnJlZVR5cGUgMi4xLjNyYzIgKHJlbGVhc2UgY2FuZGlkYXRlIDIpIGlzIHJlbGVhc2VkIQoKMjAwMi0wOS0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNpby5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLCBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0aW5nCgl0aGUgaW4tc291cmNlIGRvY3VtZW50YXRpb24uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBVcGRhdGluZyB0aGUgSFRNTCBmb3JtYXR0ZXIgaW4gdGhlCglEb2NNYWtlciB0b29sLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBSZW1vdmVkLgoKMjAwMi0wOS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1vcmUgMTZiaXQgZml4ZXMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBVc2UgRlRfTG9uZyBmb3IKCXNlY29uZCBwYXJhbWV0ZXIuCgoyMDAyLTA5LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJMTZiaXQgZml4ZXMgZnJvbSBXb2xmZ2FuZyBEb21y9nNlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuaCAoVDFfUGFyc2VyUmVjKTogQ2hhbmdlIHR5cGUgb2YgYGJhc2VfbGVuJwoJYW5kIGBwcml2YXRlX2xlbicgdG8gRlRfTG9uZy4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFJlbW92ZSBjYXN0IGZvcgoJYHByaXZhdGVfbGVuJy4KCSogc3JjL3R5cGUxL3QxbG9hZC5jOiBVc2UgRlRfSW50IGNhc3QgZm9yIG1vc3QgY2FsbHMgb2YgVDFfVG9JbnQuCglVc2UgRlRfUHRyRGlzdCB3aGVyZSBhcHByb3ByaWF0ZS4KCShwYXJzZV9lbmNvZGluZyk6IFVzZSBGVF9Mb25nIGZvciBgY291bnQnIGFuZCBgbicuCgkocmVhZF9iaW5hcnlfZGF0YSk6IFVzZSBGVF9Mb25nKiBmb3Igc2Vjb25kIHBhcmFtZXRlci4KCSogc3JjL3R5cGUxL3QxYWZtLmMgKGFmbV9hdG9pbmRleCk6IFVzZSBGVF9QdHJEaXN0LgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IFJlbW92ZSB1bnVzZWQgbGFiZWwuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMi0wOS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2luZyBmdGdyYXlzLmMgY29tcGlsZSBzdGFuZC1hbG9uZSBhZ2Fpbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBJbmNsdWRlIGZ0MmJ1aWxkLmggb25seSBpZiBfU1RBTkRBTE9ORV8KCWlzbid0IGRlZmluZWQuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIFtfU1RBTkRBTE9ORV9dOiBEZWZpbmUgZnRfbWVtc2V0LAoJRlRfQkVHSU5fSEVBREVSLCBGVF9FTkRfSEVBREVSLgoJKEZUX01FTV9aRVJPKTogRGVmaW5lLgoJKFRSYXN0ZXIpIFtHUkFZU19VU0VfR0FNTUFdOiBVc2UgYHVuc2lnbmVkIGNoYXInIGluc3RlYWQgb2YgRlRfQnl0ZS4KCShncmF5X3JlbmRlcl9zcGFuLCBncmF5X2luaXRfZ2FtbWEpOiBEb24ndCB1c2UgYEZUX1VJbnQnLgoJRG9uJ3QgY2FzdCB3aXRoIGBGVF9CeXRlJy4KCShncmF5c19pbml0X2dhbW1hKTogRG9uJ3QgdXNlIGBGVF9VSW50Jy4KCjIwMDItMDktMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jIChGVF9BZGRfRGVmYXVsdF9Nb2R1bGVzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRmFjZV9Eb25lKTogSW1wcm92ZSB0cmFjaW5nIG1lc3NhZ2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX01BWF9NT0RVTEVTKTogSW5jcmVhc2VkCgl0byAzMi4KCjIwMDItMDktMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6MjozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwMi0wOS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IEFkZGluZyBmaXgKCXRvIHByZXZlbnQgc2VnIGZhdWx0IHdoZW4gaGludHMgYXJlIHByb3ZpZGVkIGluIGFuIGVtcHR5IGdseXBoLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmkgKEdFTl9DQUNIRV9MT09LVVApIFtGVF9ERUJVR19MRVZFTF9FUlJPUl06CglSZW1vdmVkIGNvbmRpdGlvbmFsIGNvZGUuICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb21waWxhdGlvbiBpbiBkZWJ1ZyBtb2RlIG9mIHRlbXBsYXRlIGluc3RhbnRpYXRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogUmVtb3ZlZCBpbmNvcnJlY3QgYHpmdF8nIGRlZmluaXRpb25zCglhbmQgdXBkYXRlZCBjb25zdGFudHMgZG9jdW1lbnRhdGlvbiBjb21tZW50cy4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlcl9ydW4pOiBGaXhlZCB0aGUgQ0ZGIHRhYmxlIGxvYWRlci4KCUl0IGRpZG4ndCBhY2NlcHQgZW1wdHkgYXJyYXlzLCBhbmQgdGhpcyBwcmV2ZW50ZWQgdGhlIGxvYWRpbmcgb2YKCWNlcnRhaW4gZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0ZhY2VSZWMpOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uCgljb21tZW50LiAgVGhlIGBkZXNjZW5kZXInIHZhbHVlIGlzIGFsd2F5cyAqbmVnYXRpdmUqLCBub3QgcG9zaXRpdmUuCgoyMDAyLTA5LTA5ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HbHlwaF9Mb2FkKTogRml4aW5nIGluY29ycmVjdCBjb21wdXRhdGlvbgoJb2YgYml0bWFwIG1ldHJpY3MuCgoyMDAyLTA5LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVmFyaW91cyB1cGRhdGVzIHRvIGNvcnJlY3RseSBzdXBwb3J0IHN1Yi1waXhlbCByZW5kZXJpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBBZGQgdHdvIHJlbmRlcmVycyBmb3IgTENELgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyX2xjZCwKCWZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOiBTZXQgRlRfUElYRUxfTU9ERV9MQ0QgYW5kCglGVF9QSVhFTF9NT0RFX0xDRF9WLCByZXNwZWN0aXZlbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2ltYWdlLmggKEZUQ19JbWFnZVR5cGVSZWMpOiBOZXcKCXN0cnVjdHVyZS4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKEZUQ19JbWFnZURlc2MpOiBSZW1vdmVkLgoJKEZUQ19JbWFnZUNhY2hlX0xvb2t1cCk6IFNlY29uZCBwYXJhbWV0ZXIgaXMgbm93IG9mIHR5cGUKCWBGVENfSW1hZ2VUeXBlJy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKEZUQ19JTUFHRV9ERVNDX0NPTVBBUkUpOiBVcGRhdGVkIGFuZCByZW5hbWVkIHRvLi4uCgkoRlRDX0lNQUdFX1RZUEVfQ09NUEFSRSk6IFRoaXMuCgkoRlRDX0lNQUdFX0RFU0NfSEFTSCk6IFVwZGF0ZWQgYW5kIHJlbmFtZWQgdG8uLi4KCShGVENfSU1BR0VfVFlQRV9IQVNIKTogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjc2JpdHMuaCAoRlRDX1NCaXRSZWMpOiBGaWVsZCBgbnVtX2dyYXlzJwoJcmVwbGFjZWQgd2l0aCBgbWF4X2dyYXlzJy4KCWBwaXRjaCcgaXMgbm93IEZUX1Nob3J0LgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogU2Vjb25kIHBhcmFtZXRlciBpcyBub3cgb2YgdHlwZQoJYEZUQ19JbWFnZVR5cGUnLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlUXVlcnlSZWMsIEZUQ19JbWFnZUZhbWlseVJlYyk6CglVcGRhdGVkLgoJKGZ0Y19pbWFnZV9ub2RlX2luaXQpOiBVcGRhdGVkLgoJTW92ZWQgY29kZSB0byBjb252ZXJ0IHR5cGUgZmxhZ3MgdG8gbG9hZCBmbGFncyB0by4uLgoJKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApOiBUaGlzIGZ1bmN0aW9uLgoJKGZ0Y19pbWFnZV9mYW1pbHlfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdC5jIChGVENfU0JpdFF1ZXJ5UmVjLCBGVENfU0JpdEZhbWlseVJlYyk6CglVcGRhdGVkLgoJKGZ0Y19zYml0X25vZGVfbG9hZCk6IFVwZGF0ZWQuCglNb3ZlZCBjb2RlIHRvIGNvbnZlcnQgdHlwZSBmbGFncyB0byBsb2FkIGZsYWdzIHRvLi4uCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBUaGlzIGZ1bmN0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyUmVjKTogUmVwbGFjZSBgbm9fKl9oaW50cycgd2l0aAoJYGRvXypfc25hcHBpbmcnLgoJVXBkYXRlIGFsbCB1c2VycyAod2l0aCBuZWdhdGlvbikuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogRml4IHRocmVzaG9sZCBmb3IKCWBkaXN0JyBmb3IgYGRlbHRhJyA8IDQwLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfR2x5cGhSZWMpOiBSZXBsYWNlIGBub18qX2hpbnRzJyB3aXRoCglgZG9fKl9zbmFwcGluZycuCglVcGRhdGUgYWxsIHVzZXJzICh3aXRoIG5lZ2F0aW9uKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IE5ldwoJZnVuY3Rpb24uCgkocHNoM19oaW50X2FsaWduKTogVXNlIGl0LgoJSW1wcm92ZSBoaW50aW5nIGNvZGUuCglbU1RST05HRVJdOiBSZW1vdmVkLgoJKFNUUk9OR0VSKTogUmVtb3ZlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfU2V0X0hpbnRfRmxhZ3MsIEZUX0hJTlRfKik6CglSZW1vdmVkLgoKMjAwMi0wOS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9TaXplX0luaXQpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3NpemVfaW5pdCk6IFRoaXMuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfQnVpbGRlcl9BZGRfUG9pbnQxKTogUmVuYW1lZCB0by4uLgoJKHQxX2J1aWxkZXJfYWRkX3BvaW50MSk6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBEaXR0by4KCjIwMDItMDktMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQ29ycmVjdGVkIHRoZSBkZWZpbml0aW9uIG9mCglmdF9lbmNvZGluZ19zeW1ib2wgdG8gYmUgRlRfRU5DT0RJTkdfTVNfU1lNQk9MIChpbnN0ZWFkIG9mCgl0aGUgZXJyb25lb3VzIEZUX0VOQ09ESU5HX1NZTUJPTCkuCgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoZGF0YWRpcik6IEluaXRpYWxpemUgaXQgKHRoYW5rcyB0bwoJQW50aG9ueSBGb2spLgoKMjAwMi0wOC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNsaWdodCBtb2RpZmljYXRpb24gdG8gdGhlIFBvc3RzY3JpcHQgaGludGVyIHRvIHNsaWdodGx5IGluY3JlYXNlCgl0aGUgY29udHJhc3Qgb2Ygc21vb3RoIGhpbnRpbmcuICBUaGlzIGlzIHZlcnkgc2ltaWxhciB0byB3aGF0IHRoZQoJYXV0by1oaW50ZXIgZG9lcyB3aGVuIGl0IGNvbWVzIHRvIHN0ZW0gd2lkdGggY29tcHV0YXRpb25zLiAgSG93ZXZlciwKCWl0IHByb2R1Y2VzIGJldHRlciByZXN1bHRzIHdpdGggd2VsbC1oaW50ZWQgZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJfRnVuY3NSZWMpOiBBZGQgaGludAoJbW9kZSB0byBgaW5pdCcgbWVtYmVyIGZ1bmN0aW9uLgoJKFQxX0RlY29kZXJSZWMpOiBBZGQgaGludCBtb2RlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMgKFQxX0hpbnRzX0FwcGx5RnVuYywKCVQyX0hpbnRzX0FwcGx5RnVuYyk6IFBhc3MgYGhpbnRfbW9kZScsIG5vdCBgaGludF9mbGFncycuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX2luaXQpOiBBZGQgaGludCBtb2RlIGFyZ3VtZW50LgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHMxX2hpbnRzX2FwcGx5KTogUGFzcyBoaW50IG1vZGUsIG5vdAoJaGludCBmbGFncy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogRGl0dG8uCgkoU1RST05HRVIpOiBOZXcgbWFjcm8uCgkocHNoM19oaW50X2FsaWduLCBwc2gzX2hpbnRfdGFibGVfYWxpZ25faGludHMpOiBQYXNzIGBnbHlwaCcgaW5zdGVhZAoJb2YgYGhpbnRfZmxhZ3MnLgoJSW1wbGVtZW50IGFubm91bmNlZCBjaGFuZ2VzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IEFkZCBmbGFncyB0byBjb250cm9sCgl2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBoaW50cyBhbmQgc25hcHBpbmcuCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIHRoZSAyLjEuMyByZWxlYXNlLgoKMjAwMi0wOC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogTWFzc2l2ZSByZS1mb3JtYXR0aW5nIGNoYW5nZXMgdG8gbWFueSwgbWFueSBzb3VyY2UgZmlsZXMuICBJIGRvbid0Cgl3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZS4gIFRoZSBvcGVyYXRpb25zIHBlcmZvcm1lZCB3ZXJlIGFsbAoJbG9naWNhbCB0cmFuc2Zvcm1hdGlvbnMgb2YgdGhlIHNvdXJjZXM6CgoJLSB0cnlpbmcgdG8gY29udmVydCBhbGwgZW51bXMgYW5kIGNvbnN0YW50cyB0byBDQVBJVEFMSVpFRF9TVFlMRSwKCSAgI3dpdGggZGVmaW5lIGRlZmluaXRpb25zIGxpa2UKCgkgICAgI2RlZmluZSBteV9vbGRfY29uc3RhbnRzICAgTVlfTkVXX0NPTlNUQU5UCgoJLSBiaWcsIGJpZyB1cGRhdGUgb2YgdGhlIGRvY3VtZW50YXRpb24gY29tbWVudHMKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgc3JjL2Jhc2UvZnRvYmpzLmMsCglzcmMvc21vb3RoL2Z0c21vb3RoLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBBZGRpbmcgc3VwcG9ydAoJZm9yIExDRC1vcHRpbWl6ZWQgcmVuZGVyaW5nIHRob3VnaCB0aGUgbmV3IGNvbnN0YW50cy9lbnVtczoKCgkgIEZUX1JFTkRFUl9NT0RFX0xDRCwgRlRfUkVOREVSX01PREVfTENEX1YKCSAgRlRfUElYRUxfTU9ERV9MQ0QsICBGVF9QSVhFTF9NT0RFX0xDRF9WCgoJVGhpcyBpcyBzdGlsbCB3b3JrIGluIHByb2dyZXNzLCBkb24ndCBleHBlY3QgZXZlcnl0aGluZyB0byB3b3JrCgljb3JyZWN0bHkgdGhvdWdoIG1vc3Qgb2YgdGhlIGZlYXR1cmVzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZC4KCgkqIEFkZGluZyBuZXcgRlRfTE9BRF9YWFggZmxhZ3MsIHVzZWQgdG8gc3BlY2lmeSBib3RoIGhpbnRpbmcgYW5kCglyZW5kZXJpbmcgdGFyZ2V0czoKCgkgIEZUX0xPQURfVEFSR0VUX05PUk1BTCA6OiBhbnRpLWFsaWFzZWQgaGludGluZyAmIHJlbmRlcmluZwoJICBGVF9MT0FEX1RBUkdFVF9NT05PICAgOjogbW9ub2Nocm9tZSBiaXRtYXBzCgkgIEZUX0xPQURfVEFSR0VUX0xDRCAgICA6OiBob3Jpem9udGFsIFJHQi9CR1IgZGVjaW1hdGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50aW5nICYgcmVuZGVyaW5nCgkgIEZUX0xPQURfVEFSR0VUX0xDRF9WICA6OiB2ZXJ0aWNhbCBSR0IvQkdSIGRlY2ltYXRlZAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludGluZyAmIHJlbmRlcmluZwoKCU5vdGUgdGhhdCBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgaXMgMCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGVmYXVsdAoJYmVoYXZpb3VyIG9mIHRoZSBmb250IGVuZ2luZSBpcyBfdW5jaGFuZ2VkXy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oCgkoRlRfT3V0bGluZV97TW92ZSxMaW5lLENvbmljLEN1YmljfVRvX0Z1bmMpOiBSZW5hbWVkIHRvLi4uCgkoRlRfT3V0bGluZV97TW92ZSxMaW5lLENvbmljLEN1YmljfVRvRnVuYyk6IFRoaXMuCgkoRlRfUmFzdGVyX1NwYW5fRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfU3BhbkZ1bmMpOiBUaGlzLgoJKEZUX1Jhc3Rlcl97TmV3LERvbmUsUmVzZXQsU2V0X01vZGUsUmVuZGVyfV9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShGVF9SYXN0ZXJfe05ldyxEb25lLFJlc2V0LFNldE1vZGUsUmVuZGVyfUZ1bmN9OiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmgKCShGVF9HbHlwaF97SW5pdCxEb25lLFRyYW5zZm9ybSxCQm94LENvcHksUHJlcGFyZX1fRnVuYyk6IFJlbmFtZWQKCXRvIC4uLgoJKEZUX0dseXBoX3tJbml0LERvbmUsVHJhbnNmb3JtLEdldEJCb3gsQ29weSxQcmVwYXJlfUZ1bmMpOiBUaGlzLgoJKEZUUmVuZGVyZXJfe3JlbmRlcix0cmFuc2Zvcm0sZ2V0Q0JveCxzZXRNb2RlfSk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfUmVuZGVyZXJfe1JlbmRlckZ1bmMsVHJhbnNmb3JtRnVuYyxHZXRDQm94RnVuYyxTZXRlTW9kZUZ1bmN9KToKCVRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1BvaW50LCBBSF9TZWdtZW50LCBBSF9FZGdlLCBBSF9HbG9iYWxzLAoJQUhfRmFjZV9HbG9iYWxzLCBBSF9PdXRsaW5lLCBBSF9IaW50ZXIpOiBUaGVzZSB0eXBlZGVmcyBhcmUgbm93Cglwb2ludGVycyB0byB0aGUgY29ycmVzcG9uZGluZyBgKlJlYycgc3RydWN0dXJlcy4gIEFsbCBzb3VyY2UgZmlsZXMKCWhhdmUgYmVlbiB1cGRhdGVkIGFjY29yZGluZ2x5LgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZGVjb2Rlcl9pbml0KTogQWRkIGhpbnQgbW9kZSBhcyBwYXJhbWV0ZXIuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0RlY29kZXIpOiBBZGQgYGhpbnRfbW9kZScgZWxlbWVudC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2VfY29tcHV0ZV9tYXhfYWR2YW5jZSk6IFRoaXMuCgkoQ0lEX0xvYWRfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChDSURfT3Blbl9GYWNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX29wZW4pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0dseXBoU2xvdF97RG9uZSxJbml0fSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2xvdF97ZG9uZSxpbml0fSk6IFRoaXMuCgkoQ0lEX1NpemVfe0dldF9HbG9iYWxzX0Z1bmNzLERvbmUsUmVzZXQpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3NpemVfe2dldF9nbG9iYWxzX2Z1bmNzLGRvbmUscmVzZXQpOiBUaGlzLgoJKENJRF9GYWNlX3tEb25lLEluaXR9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX3tkb25lLGluaXR9KTogVGhpcy4KCShDSURfRHJpdmVyX3tEb25lLEluaXR9OiBSZW5hbWVkIHRvLi4uCgkoY2lkX2RyaXZlcl97ZG9uZSxpbml0fTogVGhpcy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jIChDSURfe05ldyxEb25lfV9QYXJzZXIpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl97bmV3LGRvbmV9KTogVGhpcy4KCSogc3JjL2NpZC9jaWRwYXJzZS5oIChDSURfU2tpcF97U3BhY2VzLEFscGhhfSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX3NraXBfe3NwYWNlcyxhbHBoYX0pOiBUaGlzLgoJKENJRF9Ub3tJbnQsRml4ZWQsQ29vcmRBcnJheSxGaXhlZEFycmF5LFRva2VuLFRva2VuQXJyYXl9KTogUmVuYW1lZAoJdG8uLi4KCShjaWRfcGFyc2VyX3RvX3tpbnQsZml4ZWQsY29vcmRfYXJyYXksZml4ZWRfYXJyYXksdG9rZW4sdG9rZW5fYXJyYXl9KToKCVRoaXMuCgkoQ0lEX0xvYWRfe0ZpZWxkLEZpZWxkX1RhYmxlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfbG9hZF97ZmllbGQsZmllbGRfdGFibGV9KTogVGhpcy4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDSURfR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZ2V0X2ludGVyZmFjZSk6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfKik6IFJlbmFtZWQgdG8uLi4KCShwc190YWJsZV8qKTogVGhpcy4KCShUMV9CdWlsZGVyXyopOiBSZW5hbWVkIHRvLi4uCgkodDFfYnVpbGRlcl8qKTogVGhpcy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfKik6IFJlbmFtZWQgdG8uLi4KCSh0MV9kZWNvZGVyXyopOiBUaGlzLgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfKik6IFJlbmFtZWQgdG8uLi4KCShwc18qKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIgKFNGTlRfR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShzZm50X2dldF9pbnRlcmZhY2UpOiBUaGlzLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF8qKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0Y21hcC5jIChUVF9DaGFyTWFwX3tMb2FkLEZyZWV9KTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2Vfe2xvYWQsZnJlZX1fY2hhcm1hcCk6IFRoaXMuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFRoaXMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0cG9zdC5jIChUVF9Qb3N0X0RlZmF1bHRfTmFtZXMpOiBSZW5hbWVkIHRvLi4uCgkodHRfcG9zdF9kZWZhdWx0X25hbWVzKTogVGhpcy4KCShMb2FkXyopOiBSZW5hbWVkIHRvLi4uCgkobG9hZF8qKTogVGhpcy4KCShUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0c2JpdC5jIChUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkoe0ZpbmQsTG9hZCxDcm9wfV8qKTogUmVuYW1lZCB0by4uLgoJKHtmaW5kLGxvYWQsY3JvcH1fKik6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IFJlbmFtZWQgdG8uLi4KCShmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBUaGlzLgoJTWFrZSBmdW5jdGlvbiBtb3JlIGdlbmVyaWMgYnkgYWRkaW5nIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjYWxpbmcKCWZhY3RvcnMuCgkoZnRfc21vb3RoX3JlbmRlciwgZnRfc21vb3RoX3JlbmRlcl9sY2QsIGZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOgoJTmV3IGZ1bmN0aW9ucy4KCgkoZnRfc21vb3RoX2xvY2RfcmVuZGVyZXJfY2xhc3MsIGZ0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzKTogTmV3CgljbGFzc2VzLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF97RG9uZSxOZXd9X0dseXBoWm9uZSk6IFJlbmFtZWQgdG8uLi4KCSh0dF9nbHlwaHpvbmVfe2RvbmUsbmV3fSk6IFRoaXMuCgkoVFRfe0ZhY2UsU2l6ZSxEcml2ZXJ9XyopOiBSZW5hbWVkIHRvLi4uCgkodHRfe2ZhY2Usc2l6ZSxkcml2ZXJ9XyopOiBUaGlzLgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jIChUVF9Mb2FkX0xvY2F0aW9ucyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2xvYWRfbG9jYSk6IFRoaXMuCgkoVFRfTG9hZF9Qcm9ncmFtcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2xvYWRfZnBnbSk6IFRoaXMuCgkoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoKMjAwMi0wOC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9WRVJTSU9OLkRMTDogTmV3IGZpbGUuCgoyMDAyLTA4LTIzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9vcGVyYXRvcl9zZWFjKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBJbmNyZW1lbnRhbCBmb250cyAoYWN0dWFsbHkgbm90CglpbmNyZW1lbnRhbCBpbiB0aGUgY2FzZSBvZiBDRkYgYnV0IGp1c3QgdXNpbmcgY2FsbGJhY2tzIHRvIGdldCBnbHlwaAoJcmVjaXBlcykgcGFzcyB0aGUgY2hhcmFjdGVyIGNvZGUsIG5vdCB0aGUgZ2x5cGggaW5kZXgsIHRvIHRoZQoJZ2V0X2dseXBoX2RhdGEgZnVuY3Rpb247IHRoZXkgaGF2ZSBubyB2YWxpZCBjaGFyc2V0IHRhYmxlLgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBSZW1vdmVkIHNwZWNpYWwgY2FzZXMgZm9yCglGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMLCB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeTsgQ0ZGCglmb250cyBwcm92aWRlZCB2aWEgdGhlIGluY3JlbWVudGFsIGludGVyZmFjZSBub3cgaGF2ZSB0byBjb25mb3JtCgltb3JlIGNsb3NlbHkgdG8gdGhlIENGRiBmb250IGZvcm1hdC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oIChjZmZfZm9udF9sb2FkKTogUmVtb3ZlZCBhcmd1bWVudCBub3cgdW5uZWVkZWQuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IENoYW5nZWQgY2FsbCB0byBjZmZfZm9udF9sb2FkCgl0byBjb25mb3JtIHdpdGggbmV3IHNpZ25hdHVyZS4KCjIwMDItMDgtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2JqZWN0LmMsIHNyYy9iYXNlL2Z0c3ludGguYywgc3JjL2Jhc2UvZnRzdHJva2VyLmMsCglzcmMvYmRmL2JkZmRyaXZyLmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19nbHlwaF9jb21wdXRlX2luZmxlY3Rpb25zLAoJcHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEsIHBzaDNfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludCk6IEZpeAoJY29tcGlsZXIgd2FybmluZ3MgYW5kIHJlc29sdmUgc2hhZG93aW5nIG9mIGxvY2FsIHZhcmlhYmxlcy4KCjIwMDItMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglUaGUgYXV0b21hdGljIGFuZCBQb3N0c2NyaXB0IGhpbnRlciBub3cgYXV0b21hdGljYWxseSBkZXRlY3QKCWluZmxlY3Rpb24gcG9pbnRzIGluIGdseXBoIG91dGxpbmVzIGFuZCB0cmVhdHMgdGhlbSBzcGVjaWFsbHkuICBUaGlzCglpcyB2ZXJ5IHVzZWZ1bCB0byBwcmV2ZW50IG5hc3R5IGVmZmVjdCBsaWtlIHRoZSBkaXNhcHBlYXJpbmcKCWRpYWdvbmFscyBvZiBgUycgYW5kIGBzJyBpbiBtYW55LCBtYW55IGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoYWhfZmxhZ19pbmZsZWN0aW9uKTogTmV3IG1hY3JvLgoJKiBzcmMvYXV0b2hpbnQvYWhhbmdsZXMuYyAoYWhfYW5nbGVfZGlmZik6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2F1dG9oaW50L2FoYW5nbGVzLmg6IFVwZGF0ZWQuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9pbmZsZWN0aW9ucyk6IE5ldwoJZnVuY3Rpb24uCgkoYWhfb3V0bGluZV9kZXRlY3RfZmVhdHVyZXMpOiBVc2UgaXQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3N0cm9uZ19wb2ludHMpCglbIUFIX09QVElPTl9OT19XRUFLX0lOVEVSUE9MQVRJT05dOiBIYW5kbGUgaW5mbGVjdGlvbi4KCgkqIHNyYy90b29scy9kb2NtYWtlci9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2RvY21ha2VyL3V0aWxzLnB5LAoJc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogVXBkYXRpbmcgdGhlIERvY01ha2VyIHRvb2wuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IENoYW5naW5nIHRoZSB0eXBlIG9mIHRoZSBgbG9hZF9mbGFncycKCXBhcmFtZXRlciBmcm9tIGBGVF9JbnQnIHRvIGBGVF9JbnQzMicsIHRoaXMgaW4gb3JkZXIgdG8gc3VwcG9ydCBtb3JlCglvcHRpb25zLiAgVGhpcyBzaG91bGQgb25seSBicmVhayBiaW5hcnkgYW5kL29yIHNvdXJjZSBjb21wYXRpYmlsaXR5CglvbiAxNi1iaXQgcGxhdGZvcm1zIChBdGFyaT8pLgoJKEZUX0xPQURfTk9fQVVUT0hJTlQpOiBOZXcgbWFjcm8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglIYW5kbGUgRlRfTE9BRF9OT19BVVRPSElOVC4KCShGVF9Mb2FkX0NoYXIpOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdG9iamVjdC5jLAoJc3JjL2F1dG9oaW50L2FoZ2x5cGguYywgaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXhpbmcgdHlwb3MKCWFuZCByZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDgtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0dldF9NZXRyaWNzKTogQWRkIGd1YXJkIGZvciBrID0gMC4KCjIwMDItMDgtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9hdXRvaGludC9haG1vZHVsZS5jIFtERUJVR19ISU5URVJdOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncwoJKG9ubHkgdXNlZCBpbiBkZXZlbG9wbWVudCBidWlsZHMgYW55d2F5KS4KCglJbXByb3ZlIHN1cHBvcnQgb2YgbG9jYWwgZXh0cmVtYSBhbmQgc3RlbSBlZGdlIHBvaW50cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0hpbnRfVGFibGVSZWMpOiBVc2UgUFNIM19ab25lUmVjCglmb3IgYHpvbmVzJy4KCShQU0gzX0RJUl9VUCwgUFNIM19ESVJfRE9XTik6IEV4Y2hhbmdlIHZhbHVlcy4KCShQU0gzX0RJUl9IT1JJWk9OVEFMLCBQU0gzX0RJUl9WRVJUSUNBTCk6IE5ldyBtYWNyb3MuCgkoUFNIM19ESVJfQ09NUEFSRSwgUFNIM19ESVJfSVNfSE9SSVpPTlRBTCwgUFNIM19JU19WRVJUSUNBTCk6IE5ldwoJbWFjcm9zLgoJKFBTSDNfUE9JTlRfSU5GTEVYKTogTmV3IGVudW0uCgkocHNoM19wb2ludF97aXMsc2V0fV97b2ZmLGluZmxleH0pOiBOZXcgbWFjcm9zLgoJKFBTSDNfUE9JTlRfe0VYVFJFTVVNLFBPU0lUSVZFLE5FR0FUSVZFLEVER0VfTUlOLEVER0VfTUFYKTogTmV3CgllbnVtIHZhbHVlcy4KCShwc2gzX3BvaW50X3tpcyxzZXR9X3tleHRyZW11bSxwb3NpdGl2ZSxuZWdhdGl2ZSxlZGdlX21pbixlZGdlX21heH0pOgoJTmV3IG1hY3Jvcy4KCShQU0gzX1BvaW50UmVjKTogTmV3IG1lbWJlcnMgYGZsYWdzMicgYW5kIGBvcmdfdicuCgkoUFNIM19QT0lOVF9FUVVBTF9BUkcsIFBTSDNfUE9JTlRfQU5HTEUpOiBOZXcgbWFjcm9zLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgW0RFQlVHX0hJTlRFUl06IFJlbW92aW5nIGNvbXBpbGVyCgl3YXJuaW5ncy4KCShDT01QVVRFX0lORkxFWFMpOiBOZXcgbWFjcm8uCgkocHNoM19oaW50X2FsaWduKTogU2ltcGxpZnkgc29tZSBiYXNpYyBhcml0aG1ldGljIGNvbXB1dGF0aW9ucy4KCShwc2gzX3BvaW50X2lzX2V4dHJlbXVtKTogUmVtb3ZlZC4KCShwc2gzX2dseXBoX2NvbXB1dGVfaW5mbGVjdGlvbnMpIFtDT01QVVRFX0lORkxFWFNdOiBOZXcgZnVuY3Rpb24uCgkocHNoM19nbHlwaF9pbml0KSBbQ09NUFVURV9JTkZMRVhTXTogVXNlIGl0LgoJKHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hKTogTmV3IGZ1bmN0aW9uLgoJKFBTSDNfU1RST05HX1RIUkVTSE9MRCk6IEluY3JlYXNlZCB0byAzMC4KCShwc2gzX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnQpOiBJbXByb3ZlZC4KCShwc2gzX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cywKCXBzaDNfZ2x5cGhfaW50ZXJwb2xhdGVfc3Ryb25nX3BvaW50cyk6IFVwZGF0ZWQuCgkocHNoM19oaW50c19hcHBseSk6IFVzZSBwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYS4KCgkqIHRlc3QvZ3ZpZXcuYyAoZHJhd19wczNfaGludCwgcHMzX2RyYXdfY29udHJvbF9wb2ludHMpOiBOZXcKCWZ1bmN0aW9ucy4KCU90aGVyIHNtYWxsIHVwZGF0ZXMuCgoJKiBKYW1maWxlOiBTbWFsbCB1cGRhdGVzLgoKMjAwMi0wOC0xOCAgQXJrYWRpdXN6IE1pc2tpZXdpY3ogIDxtaXNpZWtAcGxkLk9SRy5QTD4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEFkZCAkKERFU1RESVIpIHRvCgltYWtlIGxpZmUgZWFzaWVyIGZvciBwYWNrYWdlIG1haW50YWluZXJzLgoKMjAwMi0wOC0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dseXBoX0xvYWQpOiBGaXggY29tcHV0YXRpb24gb2YKCWhvcmlCZWFyaW5nWC4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhMb2FkKTogRml4IGNvbXB1dGF0aW9uIG9mCglob3JpQmVhcmluZ1kuCgoyMDAyLTA4LTE2ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglBZGQgc3VwcG9ydCBmb3IgQXBwbGUgY29tcG9zaXRlIGdseXBocy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX0NPTVBPTkVOVF9PRkZTRVRfU0NBTEVEKTogTmV3IG1hY3JvLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoT1ZFUkxBUF9DT01QT1VORCwgU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQsCglVTlNDQUxFRF9DT01QT05FTlRfT0ZGU0VUKTogTmV3IG1hY3JvcyBmb3IgYWRkaXRpb25hbCBPcGVuVHlwZQoJZ2x5cGggbG9hZGluZyBmbGFncy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogSW1wbGVtZW50IGl0LgoKMjAwMi0wOC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZnJlZV9nbHlwaF9kYXRhKSwKCXNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogVXNlIEZUX1VOVVNFRC4KCjIwMDItMDgtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogSW5pdGlhbGl6ZSBgZXJyb3InLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDgtMTUgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglJbXBsZW1lbnRlZCB0aGUgaW5jcmVtZW50YWwgZm9udCBsb2FkaW5nIHN5c3RlbSBmb3IgdGhlIENGRiBkcml2ZXIuCglUZXN0ZWQgdXNpbmcgdGhlIEdob3N0U2NyaXB0LXRvLUZyZWVUeXBlIGJyaWRnZSAodW5kZXIgZGV2ZWxvcG1lbnQpLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZ2V0X2dseXBoX2RhdGEsIGNmZl9mcmVlX2dseXBoX2RhdGEpOiBOZXcKCWZ1bmN0aW9ucy4KCShjZmZfb3BlcmF0b3Jfc2VhYywgY2ZmX2NvbXB1dGVfbWF4X2FkdmFuY2UsIGNmZl9zbG90X2xvYWQpOiBVc2UKCXRoZW0uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogQWRkIGBmYWNlJyBwYXJhbWV0ZXIuCglMb2FkIGNoYXJzZXQgYW5kIGVuY29kaW5nIG9ubHkgaWYgdGhlcmUgYXJlIGdseXBocy4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSW5jcmVtZW50YWwgZm9udHMgZG9uJ3QgbmVlZAoJY2hhcmFjdGVyIHJlY2lwZXMuCgkqIHNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvY2ZmL2NmZm9ianMuYzogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENvcnJlY3RlZCB0aGUgaW5jcmVtZW50YWwgZm9udAoJbG9hZGluZyBpbXBsZW1lbnRhdGlvbiB0byB1c2UgdGhlIG5ldyBzeXN0ZW0gaW50cm9kdWNlZCBvbgoJMjAwMi0wOC0wMS4KCjIwMDItMDgtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jLCBzcmMvY2FjaGUvZnRjY2FjaGUuaSwKCXNyYy9wZnIvcGZybG9hZC5jLCBzcmMvcGZyL3Bmcmdsb2FkLmM6IHMvaW5kZXgvaWR4Ly4KCSogc3JjL2NmZi9jZmZsb2FkLmM6IHMvc2VsZWN0L2Zkc2VsZWN0Ly4KCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBzL3dhaXQvd2FpdGluZy8uCgoyMDAyLTA4LTAxICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX09wZW5fRmFjZSk6IFRvbGVyYXRlIGEgZmFjZSB3aXRoIG5vCgljaGFyc3RyaW5ncyBpZiB0aGVyZSBpcyBhbiBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZS4gIFR5cGUgMQoJZmFjZXMgc3VwcGxpZWQgYnkgUG9zdFNjcmlwdCBpbnRlcnByZXRlcnMgbGlrZSBHaG9zdFNjcmlwdCB3aWxsCgl0eXBpY2FsbHkgbm90IHByb3ZpZGUgYW55IGNoYXJzdHJpbmdzIGF0IGxvYWQgdGltZSwgc28gdGhpcyBpcwoJZXNzZW50aWFsIGlmIHRoZXkgYXJlIHRvIHdvcmsuCgoyMDAyLTA4LTAxICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJTW9kaWZpZWQgaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UgdG8gYmUgY2xvc2VyIHRvIERhdmlkJ3MKCXByZWZlcmVuY2VzLiAgVGhlIGhlYWRlciBmcmVldHlwZS5oIGlzIG5vdCBub3cgYWZmZWN0ZWQsIHRoZQoJaW50ZXJmYWNlIGlzIHNwZWNpZmllZCB2aWEgYW4gRlRfUGFyYW1ldGVyLCB0aGUgcG9pbnRlciB0byB0aGUKCWludGVyZmFjZSBpcyBoaWRkZW4gaW4gYW4gaW50ZXJuYWwgcGFydCBvZiB0aGUgZmFjZSByZWNvcmQsIGFuZCBhbGwKCXRoZSBkZWZpbml0aW9ucyBhcmUgaW4gZnRpbmNyZW0uaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUluY2x1ZGUgRlRfSU5DUkVNRU5UQUxfSC4KCShGVF9GYWNlX0ludGVybmFsUmVjKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZAoJYGluY3JlbWVudGFsX2ludGVyZmFjZScuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlLCBGVF9PcGVuX0ZhY2UpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJVXBkYXRlZC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCglGcmVlIGxvYWRlZCBnbHlwaCBkYXRhIHByb3Blcmx5LgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcywgVFRfTG9hZF9HbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9GYWNlX0luaXQpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKFQxX1BhcnNlX0dseXBoKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCglGcmVlIGxvYWRlZCBnbHlwaCBkYXRhIHByb3Blcmx5LgoJKFQxX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBGcmVlIGxvYWRlZCBnbHlwaCBkYXRhIHByb3Blcmx5LgoKMjAwMi0wNy0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oOiBBZGRpbmcgbmV3IGV4cGVyaW1lbnRhbCBoZWFkZXIgZmlsZQoJdG8gZGVtb25zdHJhdGUgYSBgY2xlYW5lcicgQVBJIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgZm9udCBsb2FkaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfSU5DUkVNRU5UQUxfSCk6IE5ldyBtYWNyby4KCgkqIHNyYy90b29scy9kb2NtYWtlci8qOiBBZGRpbmcgbmV3IChtb3JlIGFkdmFuY2VkKSB2ZXJzaW9uIG9mCgl0aGUgRG9jTWFrZXIgdG9vbCwgdXNpbmcgUHl0aG9uJ3Mgc29waGlzdGljYXRlZCByZWdleHBzLgoKMjAwMi0wNy0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCXMvZnRfbWVtc2V0L0ZUX01FTV9TRVQvLgoJcy9GVF9NRU1fU0VUL0ZUX01FTV9aRVJPLyB3aGVyZSBhcHByb3ByaWF0ZS4KCjIwMDItMDctMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IE1ha2UgaXQgd29yayB3aXRoIFRUQ3MuCgoyMDAyLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBzL21lbXNldC9mdF9tZW1zZXQvLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9lbmNvZGluZ19sb2FkKTogUmVtb3ZlIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfZW5jb2RpbmdfaW5pdCk6IFJlbW92ZSBgcHNuYW1lcycKCXZhcmlhYmxlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIHN0YXRlbWVudAoJd2l0aG91dCBlZmZlY3QuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlciAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW1vdmVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF90YWJsZV9yZWNvcmQsCglwc2gzX2hpbnRfdGFibGVfaW5pdCwgcHNoM19oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBGaXggZXJyb3IKCW1lc3NhZ2UuCgoyMDAyLTA3LTI0ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IEZpeCBmb3IgYnVnIHJlcG9ydGVkIGJ5IFN2ZW4gTmV1bWFubgoJW3N2ZW5AZ2ltcC5vcmddIG9uIHRoZSBGcmVlVHlwZSBkZXZlbG9wbWVudCBmb3J1bTogYElmCglGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMIGlzIHVuZGVmaW5lZCAodGhpcyBpcyB0aGUgZGVmYXVsdCksIHRoZQoJVHJ1ZVR5cGUgbG9hZGVyIGNyYXNoZXMgaW4gbGluZSA4NTIgb2Ygc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyB3aGVuCglpdCB0cmllcyB0byBhY2Nlc3MgZmFjZS0+Z2x5cGhfbG9jYXRpb25zLicKCjIwMDItMDctMTggIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglBZGRlZCB0eXBlcyBhbmQgc3RydWN0dXJlcyB0byBzdXBwb3J0IGluY3JlbWVudGFsIHR5cGVmYWNlIGxvYWRpbmcuCglUaGUgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlIHN0cnVjdHVyZSwgZGVmaW5lZCBpbiBmcmVldHlwZS5oLCBpcwoJZGVzaWduZWQgdG8gYmUgcGFzc2VkIHRvIEZUX09wZW5fRmFjZSB0byBwcm92aWRlIGNhbGxiYWNrIGZ1bmN0aW9ucwoJdG8gb2J0YWluIGdseXBoIHJlY2lwZXMgYW5kIG1ldHJpY3MsIGZvciBmb250cyBsaWtlIHRob3NlIHBhc3NlZAoJZnJvbSBQb3N0U2NyaXB0IHRoYXQgZG8gbm90IG5lY2Vzc2FyaWx5IHByb3ZpZGUgYWxsLCBvciBhbnksIGdseXBoCglpbmZvcm1hdGlvbiwgd2hlbiBmaXJzdCBvcGVuZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMKToKCU5ldyBjb25maWd1cmF0aW9uIG1hY3JvIHRvIGVuYWJsZSBpbmNyZW1lbnRhbCBmYWNlIGxvYWRpbmcuICBCeQoJZGVmYXVsdCBpdCBpcyBub3QgZGVmaW5lZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfQmFzaWNfR2x5cGhfTWV0cmljcywKCUZUX0dldF9HbHlwaF9EYXRhX0Z1bmMsIEZUX0dldF9HbHlwaF9NZXRyaWNzX0Z1bmMsCglGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VfRnVuY3MsIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZSkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogTmV3LgoJKEZUX09wZW5fQXJncywgRlRfRmFjZVJlYykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcgZmllbGQKCWBpbmNyZW1lbnRhbF9pbnRlcmZhY2UnLgoJKEZUX09wZW5fRmxhZ3MpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogTmV3IGVudW0KCWBmdF9vcGVuX2luY3JlbWVudGFsJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oOiBJbmNsdWRlIEZUX0NPTkZJR19DT05GSUdfSC4KCShGVF9EYXRhKTogTmV3IHN0cnVjdHVyZSB0byByZXByZXNlbnQgYmluYXJ5IGRhdGEuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglBZGQgcGFyYW1ldGVyIGZvciBpbmNyZW1lbnRhbCBsb2FkaW5nLgoJKEZUX09wZW5fRmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVc2UgaW5jcmVtZW50YWwKCWludGVyZmFjZS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nIHN5c3RlbQoJZm9yIHRoZSBUcnVlVHlwZSBkcml2ZXIuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogUmV0dXJuIEZUX0Vycm9yLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBDaGVjayBmb3Igb3ZlcnJpZGluZyBtZXRyaWNzLgoJKFRUX0xvYWRfR2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogRG9uJ3QgbG9vayBmb3IKCXRoZSBnbHlwaCB0YWJsZSB3aGlsZSBoYW5kbGluZyBhbiBpbmNyZW1lbnRhbCBmb250LgoJR2V0IGdseXBoIG9mZnNldC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfRmFjZV9Jbml0KQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DT1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcKCXN5c3RlbSBmb3IgdGhlIFRydWVUeXBlIGRyaXZlci4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nIHN5c3RlbQoJZm9yIHRoZSBDSUQgZHJpdmVyLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglDaGFuZ2VzIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgVHlwZSA0MiBmb250czogQXNzdW1lIGEgZm9udCBoYXMKCWdseXBocyBpZiBpdCBoYXMgYW4gaW5jcmVtZW50YWwgaW50ZXJmYWNlIG9iamVjdC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoKTogUmVuYW1lZCB0by4uLgoJKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpOiBUaGlzLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGRlZCBzdXBwb3J0IGZvciBpbmNyZW1lbnRhbGx5Cglsb2FkZWQgVHlwZSAxIGZhY2VzLgoJKFQxX1BhcnNlX0dseXBoKTogTmV3IGZ1bmN0aW9uLgoJKFQxX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKMjAwMi0wNy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUNsZWFuaW5nIHVwIHRoZSBjYWNoZSBzdWItc3lzdGVtIGNvZGU7IGxpbmVhciBoYXNoaW5nIGlzIG5vdyB0aGUKCWRlZmF1bHQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmgsIHNyYy9jYWNoZS9mdGNjYWNoZS5pLAoJc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgWyFGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogUmVtb3ZlZC4KCShGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HOiBSZW1vdmVkIGFsc28uCgoJRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMgaXMgbm93IHRoZSBkZWZhdWx0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIChGVF9Ecml2ZXJfQ2xhc3NSZWMpOiBSZW1vdmUKCWBnZXRfY2hhcl9pbmRleCcgYW5kIGBnZXRfbmV4dF9jaGFyJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwgc3JjL2Jhc2UvZnRvYmpzLmMsCglzcmMvYmRmL2JkZmRyaXZyLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvcGNmL3BjZmRyaXZyLmMsCglzcmMvcGZyL3BmcmRyaXZyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsCglzcmMvc2ZudC90dGNtYXAwLmgsIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTQyL3Q0Mm9ianMuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5jCglbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogUmVtb3ZlZC4gIFRoZSBuZXcgY21hcCBjb2RlIGlzIG5vdwoJdGhlIGRlZmF1bHQuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0NNYXBfQ2hhckluZGV4LCBUNDJfQ01hcF9DaGFyTmV4dCk6CglSZW1vdmVkLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoQ2lkX0dldF9DaGFyX0luZGV4LCBDaWRfR2V0X05leHRfQ2hhcik6CglSZW1vdmVkLgoJKHQxX2NpZF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAodHRfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogUmVtb3ZlZAoJKHQxX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKTogU2VsZWN0IFVuaWNvZGUgY21hcCBieSBkZWZhdWx0LgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfU0ZOVF9IZWFkZXIpOiBGaXhlZCBhIHJlY2VudCBidWcgdGhhdAoJcHJldmVudGVkIE9wZW5UeXBlIGZvbnRzIHRvIGJlIHJlY29nbml6ZWQgYnkgRnJlZVR5cGUuCgoyMDAyLTA3LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQ2hhbmdpbmcgdGhlIFNGTlQgbG9hZGVyIHRvIGNoZWNrIGZvciBTRk5ULWJhc2VkIGZvbnQgZmlsZXMKCWRpZmZlcmVudGx5LiAgV2Ugbm93IGlnbm9yZSB0aGUgcmFuZ2UgYGhlbHBlcicgZmllbGRzIGFuZCBjaGVjayB0aGUKCWBoZWFkJyB0YWJsZSdzIG1hZ2ljIG51bWJlciBpbnN0ZWFkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFNGTlRfSGVhZGVyUmVjKTogQWRkIGBvZmZzZXQnCglmaWVsZC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IE5ldyBmdW5jdGlvbi4KCShUVF9Mb2FkX1NGTlRfSGVhZGVyUmVjKTogUmVuYW1lZCB0by4uLgoJKFRUX0xvYWRfU0ZOVF9IZWFkZXIpOiBUaGlzLgoJSW1wbGVtZW50IG5ldyBmdW5jdGlvbmFsaXR5LgoJKiBzcmMvc2ZudC90dGxvYWQuaDogVXBkYXRlZC4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9pbnRlcmZhY2UpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmplY3QuYywgc3JjL2Jhc2UvZnRoYXNoLmM6IFVwZGF0ZWQgb2JqZWN0IHN1Yi1zeXN0ZW0KCWFuZCBkeW5hbWljIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gKHN0aWxsIGV4cGVyaW1lbnRhbCwgZG9uJ3QKCXVzZSkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRoYXNoLmg6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0xpYnJhcnlSZWMpOiBOZXcgbWVtYmVyCglgbWV0YV9jbGFzcycuCgoJRml4aW5nIGEgYnVnIGluIHRoZSBUeXBlIDEgbG9hZGVyIHRoYXQgcHJldmVudGVkIHZhbGlkIGZvbnQgYm91bmRpbmcKCWJveGVzIHRvIGJlIGxvYWRlZCBmcm9tIG11bHRpcGxlIG1hc3RlciBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAoUFNfQmxlbmRSZWMpOiBBZGQgYGJib3hlcycgZmllbGQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJYFQxX0ZJRUxEX1RZUEVfQkJPWCcuCgkoVDFfRmllbGRMb2NhdGlvbik6IEFkZCBgVDFfRklFTERfTE9DQVRJT05fQkJPWCcuCgkoVDFfRklFTERfQkJPWCk6IE5ldyBtYWNyby4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfUGFyc2VyX0xvYWRGaWVsZCk6IEhhbmRsZSBUMV9GSUVMRF9UWVBFX0JCT1guCgkqIHNyYy90eXBlMS90MWxvYWQuYyAodDFfYWxsb2NhdGVfYmxlbmQpOiBDcmVhdGUgYmxlbmQtPmJib3hlcy4KCShUMV9Eb25lX0JsZW5kKTogRnJlZSBibGVuZC0+YmJveGVzLgoJKHQxX2xvYWRfa2V5d29yZCk6IEhhbmRsZSBUMV9GSUVMRF9MT0NBVElPTl9CQk9YLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkodDFfa2V5d29yZHMpOiBDb21tZW50IG91dCBgcGFyc2VfZm9udF9iYm94Jy4KCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IERlZmluZSBgRm9udEJCb3gnIGZpZWxkLgoKMjAwMi0wNy0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmM6IFNtYWxsIGZpeCB0byBzZWxlY3QgdGhlIFVuaWNvZGUgY2hhcm1hcCBieQoJZGVmYXVsdCB3aGVuIG5lZWRlZC4KCVNtYWxsIGZpeCB0byBhbGxvdyBPcGVuVHlwZSBmb250cyB0byBzdXBwb3J0IEFkb2JlIGNoYXJtYXBzIHdoZW4KCW5lZWRlZC4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jLCBzcmMvY2ZmL2NmZmNtYXAuaDogTmV3IGZpbGVzIHRvIHN1cHBvcnQKCWNoYXJtYXBzIGZvciBDRkYgZm9udHMuCgoJKiBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL0phbWZpbGUsIHNyYy9jZmYvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9FbmNvZGluZ1JlYyk6IFVzZQoJZml4ZWQtbGVuZ3RoIGFycmF5cyBmb3IgYHNpZHMnIGFuZCBgY29kZXMnLiAgQWRkIGBjb3VudCcgbWVtYmVyLgoJKENGRl9Gb250UmVjKTogQWRkIGBwc25hbWVzJyBtZW1iZXIuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmxvYWQuaCwKCXNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZm9ianMuaCwgc3JjL2NmZi9jZmZwYXJzZS5jLAoJc3JjL2NmZnBhcnNlLmgsIHNyYy9jZmYvY2ZmZ2xvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5oOiBBZGRpbmcKCXN1cHBvcnQgZm9yIENGRiBjaGFybWFwcywgcmVmb3JtYXR0aW5nIHRoZSBzb3VyY2VzLCBhbmQgcmVtb3ZpbmcKCXNvbWUgYnVncyBpbiB0aGUgRW5jb2RpbmcgYW5kIENoYXJzZXQgbG9hZGVycy4KCU1hbnkgZm9udHMgcmVuYW1lZCB0byB1c2UgbG93ZXJjYXNlIG9ubHk6CgoJICBDRkZfQnVpbGRlcl9Jbml0IC0+IGNmZl9idWlsZGVyX2luaXQKCSAgQ0ZGX0J1aWxkZXJfRG9uZSAtPiBjZmZfYnVpbGRlcl9kb25lCgkgIENGRl9Jbml0X0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfaW5pdAoJICBDRkZfUGFyc2VfQ2hhclN0cmluZ3MgLT4gY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MKCSAgQ0ZGX0xvYWRfR2x5cGggLT4gY2ZmX3Nsb3RfbG9hZAoJICBDRkZfSW5pdF9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX2luaXQKCSAgQ0ZGX1ByZXBhcmVfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9wcmVwYXJlCgkgIENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcgLT4gY2ZmX2dldF9zdGFuZGFyZF9lbmNvZGluZwoJICBDRkZfQWNjZXNzX0VsZW1lbnQgLT4gY2ZmX2luZGV4X2FjY2Vzc19lbGVtZW50CgkgIENGRl9Gb3JnZXRfRWxlbWVudCAtPiBjZmZfaW5kZXhfZm9yZ2V0X2VsZW1lbnQKCSAgQ0ZGX0dldF9OYW1lIC0+IGNmZl9pbmRleF9nZXRfbmFtZQoJICBDRkZfR2V0X1N0cmluZyAtPiBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcKCSAgQ0ZGX0dldF9GRCAtPiBjZmZfZmRfc2VsZWN0X2dldAoJICBDRkZfRG9uZV9DaGFyc2V0IC0+IGNmZl9jaGFyc2V0X2RvbmUKCSAgQ0ZGX0xvYWRfQ2hhcnNldCAtPiBjZmZfY2hhcnNldF9sb2FkCgkgIENGRl9Eb25lX0VuY29kaW5nIC0+IGNmZl9lbmNvZGluZ19kb25lCgkgIENGRl9Mb2FkX0VuY29kaW5nIC0+IGNmZl9lbmNvZGluZ19sb2FkCgkgIENGRl9Eb25lX1N1YkZvbnQgLT4gY2ZmX3N1YmZvbnRfZG9uZQoJICBDRkZfTG9hZF9Gb250IC0+IGNmZl9mb250X2xvYWQKCSAgQ0ZGX0RvbmVfRm9udCAtPiBjZmZfZm9udF9kb25lCgkgIENGRl9TaXplX0dldF9HbG9iYWxfRnVuY3MgLT4gY2ZmX3NpemVfZ2V0X2dsb2JhbF9mdW5jcwoJICBDRkZfU2l6ZV9Eb25lIC0+IGNmZl9zaXplX2RvbmUKCSAgQ0ZGX1NpemVfSW5pdCAtPiBjZmZfc2l6ZV9pbml0CgkgIENGRl9TaXplX1Jlc2V0IC0+IGNmZl9zaXplX3Jlc2V0CgkgIENGRl9HbHlwaFNsb3RfRG9uZSAtPiBjZmZfc2xvdF9kb25lCgkgIENGRl9HbHlwaFNsb3RfSW5pdCAtPiBjZmZfc2xvdF9pbml0CgkgIENGRl9TdHJDb3B5IC0+IGNmZl9zdHJjcHkKCSAgQ0ZGX0ZhY2VfSW5pdCAtPiBjZmZfZmFjZV9pbml0CgkgIENGRl9GYWNlX0RvbmUgLT4gY2ZmX2ZhY2VfZG9uZQoJICBDRkZfRHJpdmVyX0luaXQgLT4gY2ZmX2RyaXZlcl9pbml0CgkgIENGRl9Ecml2ZXJfRG9uZSAtPiBjZmZfZHJpdmVyX2RvbmUKCSAgQ0ZGX1BhcnNlcl9Jbml0IC0+IGNmZl9wYXJzZXJfaW5pdAoJICBDRkZfUGFyc2VyX1J1biAtPiBjZmZfcGFyc2VyX3J1bgoKCSAgYWRkX3BvaW50IC0+IGNmZl9idWlsZGVyX2FkZF9wb2ludAoJICBhZGRfcG9pbnQxIC0+IGNmZl9idWlsZGVyX2FkZF9wb2ludDEKCSAgYWRkX2NvbnRvdXIgLT4gY2ZmX2J1aWxkZXJfYWRkX2NvbnRvdXIKCSAgY2xvc2VfY29udG91ciAtPiBjZmZfYnVpbGRlcl9jbG9zZV9jb250b3VyCgkgIGNmZl9leHBsaWNpdF9pbmRleCAtPiBjZmZfaW5kZXhfZ2V0X3BvaW50ZXJzCgoyMDAyLTA3LTA5ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IEZpeGVkIGEgYnVnIHRoYXQKCXByZXZlbnRlZCB0aGUgaGludGVyIGZyb20gdXNpbmcgY29ycmVjdCBzdGFuZGFyZCB3aWR0aCBhbmQgaGVpZ2h0Cgl2YWx1ZXMsIHJlc3VsdGluZyBpbiBoaW50aW5nIGJ1Z3Mgd2l0aCBjZXJ0YWluIGZvbnRzIChlLmcuIFV0b3BpYSkuCgoyMDAyLTA3LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEFkZGVkIGNvZGUgdG8gcmV0dXJuCglzdWNjZXNzZnVsbHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBiaXRtYXAgZ2x5cGggKHRoZQoJcHJldmlvdXMgY29kZSBzaW1wbHkgcmV0dXJuZWQgd2l0aCBhbiBlcnJvcikuCgoJKiBkb2NzL0RFQlVHLlRYVDogQWRkaW5nIGRlYnVnZ2luZyBzdXBwb3J0IGRvY3VtZW50YXRpb24uCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpLCBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jCgkoZnRfZGVidWdfaW5pdCksIGJ1aWxkcy9hbWlnYS9zcmMvZnRkZWJ1Zy5jIChmdF9kZWJ1Z19pbml0KTogQ2hhbmdlZAoJdGhlIHN5bnRheCBvZiB0aGUgRlQyX0RFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlIHVzZWQgdG8gY29udHJvbAoJZGVidWdnaW5nIG91dHB1dCAoaS5lLiBsb2dnaW5nIGFuZCBlcnJvciBtZXNzYWdlcykuICBJdCBtdXN0IG5vdwoJbG9vayBsaWtlOgoKCSAgYW55OjYgbWVtb3J5OjQgaW86MyAgIG9yCgkgIGFueTo2LG1lbW9yeTo0LGlvOjMgICBvcgoJICBhbnk6NjttZW1vcnk6NDtpbzozCgoyMDAyLTA3LTA3ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zbmFwX3N0ZW0pOiBBZGRpbmcgc3VwcG9ydCBmb3IKCWJsdWUgZnV6ei4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVzUmVjKTogQWRkIGBibHVlX2Z1enonIGZpZWxkLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX09wZW5fRmFjZSk6IEluaXRpYWxpemUgYGJsdWVfZnV6eicuCgoJQWRkaW5nIHN1cHBvcnQgZm9yIGhpbnRlci1zcGVjaWZpYyBiaXQgZmxhZ3MsIGFuZCB0aGUgbmV3CglGVF9TZXRfSGludF9GbGFncyBoaWdoLWxldmVsIEFQSS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfU2V0X0hpbnRfRmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkoRlRfSElOVF9OT19JTlRFR0VSX1NURU0sIEZUX0hJTlRfTk9fSFNURU1fQUxJR04sCglGVF9ISU5UX05PX1ZTVEVNX0FMSUdOKTogTmV3IG1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0ZhY2VfSW50ZXJuYWxSZWMpOiBBZGQKCWBoaW50X2ZsYWdzJyBtZW1iZXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0hpbnRfRmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJSZWMpOiBBZGQgYGhpbnRfZmxhZ3MnCgltZW1iZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCAoVDFfSGludHNfQXBwbHlGdW5jLAoJVDJfSGludHNfQXBwbHlGdW5jKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIGhpbnQgZmxhZ3MuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncywKCVQxX0RlY29kZXJfSW5pdCk6IFVzZSBkZWNvZGVyLT5oaW50X2ZsYWdzLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmggKENGRl9CdWlsZGVyKTogQWRkIGBoaW50X2ZsYWdzJyBmaWVsZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfQnVpbGRlcl9Jbml0KTogU2V0IGJ1aWxkZXItPmhpbnRfZmxhZ3MuCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzMV9oaW50c19hcHBseSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlCgloaW50IGZsYWdzICh1bnVzZWQpLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuaDogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlCgloaW50IGZsYWdzICh1bnVzZWQpLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuaDogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlCgloaW50IGZsYWdzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaDogVXBkYXRlZC4KCjIwMDItMDctMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdCByZXR1cm5lZAoJaW5jb3JyZWN0IGFkdmFuY2VzIHdoZW4gdGhlIG91dGxpbmUgcmVzb2x1dGlvbiB3YXMgZGlmZmVyZW50IGZyb20KCXRoZSBtZXRyaWNzIHJlc29sdXRpb24uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYzogcy9GVF9NRU1fU0VUL0ZUX1pFUk8vIHdoZXJlIGFwcHJvcHJpYXRlLgoJKGFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IFNsaWdodCBpbXByb3ZlbWVudHMgdG8gdGhlIHNlcmlmCglkZXRlY3Rpb24gY29kZS4gIE1vcmUgd29yayBpcyBuZWVkZWQgdGhvdWdoLgoKMjAwMi0wNy0wMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNtYWxsIGltcHJvdmVtZW50cyB0byB0aGUgYXV0b21hdGljIGhpbnRlci4gIFVuZXZlbiBzdGVtLXdpZHRocyBoYXZlCglub3cgZGlzYXBwZWFyZWQgYW5kIGV2ZXJ5dGhpbmcgbG9va3MgbXVjaCBiZXR0ZXIsIGV2ZW4gaWYgdGhlcmUgYXJlCglzdGlsbCBpc3N1ZXMgd2l0aCBzZXJpZmVkIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfR2xvYmFscyk6IEFkZGVkIGBzdGRzJyBhcnJheS4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChPUFRJTV9TVEVNX1NOQVApOiBOZXcgI2RlZmluZS4KCShhaF9zbmFwX3dpZHRoKTogQ29tbWVudGVkIG91dC4KCShhaF9hbGlnbl9saW5rZWRfZWRnZSk6IFJlbmFtZWQgdG8uLi4KCShhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBUaGlzLgoJRG9uJ3QgYWxsb3cgdW5ldmVuIHN0ZW0td2lkdGhzLgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogTmV3IGZ1bmN0aW9uLgoJKGFoX2FsaWduX3NlcmlmZWRfZWRnZSk6IERvbid0IHN0cmVuZ3RoZW4gc2VyaWZzLgoJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX3NjYWxlX2dsb2JhbHMpOiBVcGRhdGVkLgoKMjAwMi0wNy0wMyAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJQWRkaW5nIG5ldyBhbGdvcml0aG0gYmFzZWQgb24gT3dlbiBUYXlsb3IncyByZWNlbnQgd29yay4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaDogTmV3IGZpbGVzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5oOiBVcGRhdGVkLgoJVXNlIHBzaGFsZ28zIGJ5IGRlZmF1bHQuCgkqIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jOiBJbmNsdWRlIHBzaGFsZ28zLmMuCgoJKiBzcmMvcHNoaW50ZXIvSmFtZmlsZSwgc3JjL3BzaGludGVyL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMi0wNy0wMSAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMpOiBGaXggYSBidWcKCXdoZXJlLCBpZiBhIGdseXBoIGhhcyBtb3JlIHRoYW4gaGludCBtYXNrLCB0aGUgc2Vjb25kIG1hc2sgZ2V0cwoJYXBwbGllZCB0byBwb2ludHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNvdmVyZWQgYnkgdGhlIGZpcnN0IG1hc2suCgoyMDAyLTA3LTAxICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA4X2NoYXJfbmV4dCwgdHRfY21hcDEyX2NoYXJfbmV4dCk6CglGaXhpbmcgdGhlIGNtYXAgOCBhbmQgMTIgcGFyc2luZyByb3V0aW5lcy4KCjIwMDItMDctMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYzogSW5jbHVkZSBGVF9UUklHT05PTUVUUllfSC4KCShGVF9PdXRsaW5lX0VtYm9sZGVuKTogUmVuYW1lZCB0by4uLgoJKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IFRoaXMuCglVcGRhdGVkIHRvIG5ldyB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucy4KCShGVF9PdXRsaW5lX09ibGlxdWUpOiBSZW5hbWVkIHRvLi4uCgkoRlRfR2x5cGhTbG90X09ibGlxdWUpOiBUaGlzLgoJKGZ0X25vcm0pOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3ludGguaDogVXBkYXRlZC4KCjIwMDItMDYtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaDogVXBkYXRpbmcgdGhlIG9iamVjdAoJc3ViLXN5c3RlbSBkZWZpbml0aW9ucyAoc3RpbGwgZXhwZXJpbWVudGFsKS4KCgkqIHNyYy9iYXNlL2Z0aGFzaC5jIChmdF9oYXNoX3JlbW92ZSk6IEZpeGluZyBhIHNtYWxsIHJlYWxsb2NhdGlvbgoJYnVnLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfVmVjdG9yX0Zyb21fUG9sYXIsIEZUX0FuZ2xlX0RpZmYpOiBOZXcKCWZ1bmN0aW9ucy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oOiBVcGRhdGVkLgoKCglBZGRpbmcgcGF0aCBzdHJva2VyIGNvbXBvbmVudCAod29yayBpbiBwcm9ncmVzcykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlci5oLCBzcmMvYmFzZS9mdHN0cm9rZXIuYzogTmV3IGZpbGVzLgoJKiBzcmMvYmFzZS9KYW1maWxlOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU1RST0tFUl9IKTogTmV3IG1hY3JvLgoKCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfQ29tcG9zaXRlX0dseXBoKSwKCXNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfVmVjdG9yX1RyYW5zZm9ybSk6IEZpeGVkIFdlcm5lcidzIGxhdGVzdCBmaXguCglGVF9WZWN0b3JfVHJhbnNmb3JtIHdhc24ndCBidWdneSwgdGhlIFRydWVUeXBlIGNvbXBvc2l0ZSBsb2FkZXIgd2FzLgoKMjAwMi0wNi0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byAzLgoKMjAwMi0wNi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjIgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wNi0yMSAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oIChUNDJfRm9udCk6IFJlbW92ZWQgc2luY2UKCWl0IGlzIGFscmVhZHkgaW4gdDQyb2Jqcy5oLgoJKFQ0Ml9GYWNlKTogVXNlIFQxX0ZvbnRSZWMuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0dldF9QU19Gb250X0luZm8pOiBVcGRhdGVkLgoJKEZUX0hhc19QU19HbHlwaF9OYW1lcyk6IENoZWNrIGZvciB0eXBlNDIgZHJpdmVyIG5hbWUgYWxzby4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IEluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0guCgkoVDQyX0ZhY2UpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGFscmVhZHkgaW4gdDQydHlwZXMuaC4KCjIwMDItMDYtMjEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGZyZ2xvYWQuYyAocGZyX2dseXBoX2xvYWRfY29tcG91bmQpOiBGaXggbG9hZGluZyBvZiBjb21wb3NpdGUKCWdseXBocy4KCjIwMDItMDYtMjEgIFN2ZW4gTmV1bWFubiAgPHN2ZW5AY29udmVyZ2VuY2UuZGU+CgoJKiBzcmMvcHJmL3BmcnR5cGVzLmggKFBGUl9LZXJuUGFpcik6IE5ldyBzdHJ1Y3R1cmUuCgkoUEZSX1BoeUZvbnQpOiBVc2UgaXQuCgkoUEZSX0tlcm5GbGFncyk6IE5ldyBlbnVtZXJhdGlvbi4KCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfa2VybmluZ19wYWlycyk6IE5ldwoJZnVuY3Rpb24uCgkocGZyX3BoeV9mb250X2V4dHJhX2l0ZW1zKTogVXNlIGl0LgoJKHBmcl9waHlfZm9udF9kb25lKTogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBTZXQga2VybmluZyBmbGFnIGNvbmRpdGlvbmFsbHkuCgkocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9wZnIvcGZyb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3BmcmRyaXZyLmMgKHBmcl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMi0wNi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFByZXBhcmluZyB0aGUgMi4xLjIgcmVsZWFzZS4KCjIwMDItMDYtMTkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmFzZS9mdHR5cGUxLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0guCgkodDFfZmFjZV9jaGVja19jYXN0KTogUmVtb3ZlZC4KCShGVF9HZXRfUFNfRm9udF9JbmZvKTogTWFrZSBpdCB3b3JrIHdpdGggQ0lEIGFuZCBUeXBlIDQyIGRyaXZlcnMKCWFsc28uCgoyMDAyLTA2LTE5ICBTZWJhc3RpZW4gQkFSUkUgIDxodHRwOi8vYmFycmUubm9tLmZyL2NvbnRhY3QuaHRtbCNlbWFpbD4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX3NmbnRzKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX1ZlY3Rvcl9UcmFuc2Zvcm0pOiBGaXggc2VyaW91cyB0eXBvCgkoeHkgPC0+IHl4KS4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlcGxhY2UgYHwnIHdpdGgKCWB8fCcgdG8gbWFrZSBjb2RlIGVhc2llciB0byByZWFkLgoKMjAwMi0wNi0xOCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKHQ0Ml9jaGVja19zaXplX2NoYW5nZSk6IFJlbW92ZWQuCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFVzZSBGVF9BY3RpdmF0ZV9TaXplCglpbnN0ZWFkLgoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IFJlbW92ZSBjYWxsIHRvIHQ0Ml9jaGVja19zaXplX2NoYW5nZS4KCjIwMDItMDYtMTggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcHNhdXgvdDFjbWFwLmMgKHQxX2NtYXBfY3VzdG9tX2NoYXJfaW5kZXgsCgl0MV9jbWFwX2N1c3RvbV9jaGFyX25leHQpOiBGaXggaW5kZXggY29tcHV0YXRpb24gLS0gaW5kaWNlcyBzdGFydAoJd2l0aCAwIGFuZCBub3Qgd2l0aCBjbWFwLT5maXJzdC4KCglQcm92aWRlIGRlZmF1bHQgY2hhcm1hcHMuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0ZhY2VfSW5pdCksIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KSwKCXNyYy90eXBlMS90MW9ianMgKFQxX0ZhY2VfSW5pdCksIHNyYy93aW5mb250cy93aW5mbnQuYwoJKEZOVF9GYWNlX0luaXQpOiBJbXBsZW1lbnQgaXQuCgoyMDAyLTA2LTE3ICBTdmVuIE5ldW1hbm4gIDxzdmVuQGdpbXAub3JnPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBGaXggdHlwby4KCjIwMDItMDYtMTYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCglVcGRhdGVkIFdpbjMyL1ZDKysgcHJvamVjdHMgdG8gaW5jbHVkZSB0aGUgbmV3IFBGUiBkcml2ZXIuCgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTA2LTE2ICBBbnRob255IEZvayAgPGZva0BkZWJpYW4ub3JnPgoKCUluc3RhbGwgZnJlZXR5cGUyLm00LgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCwgdW5pbnN0YWxsKTogSGFuZGxlIGl0LgoKMjAwMi0wNi0xNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglTYW1lIGZpeCBmb3IgUEZSIGRyaXZlci4KCgkqIHNyYy9wZnIvcGZyY21hcC5jIChwZnJfY21hcF9jaGFyX2luZGV4LCBwZnJfY21hcF9jaGFyX25leHQpOgoJSW5jcmVhc2UgcmV0dXJuIHZhbHVlIGJ5IDEuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogRGVjcmVhc2UgaW5kZXggYnkgMS4KCjIwMDItMDYtMTUgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJRml4IGdseXBoIGluZGljZXMgdG8gbWFrZSBpbmRleCB6ZXJvIGFsd2F5cyB0aGUgdW5kZWZpbmVkIGdseXBoLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChiZGZfY21hcF9pbml0KTogRG9uJ3QgZGVjcmVhc2UKCWNtYXAtPm51bV9lbmNvZGluZ3MuCgkoYmRmX2NtYXBfY2hhcl9pbmRleCwgYmRmX2NtYXBfY2hhcl9uZXh0LCBCREZfR2V0X0NoYXJfSW5kZXgpOgoJSW5jcmVhc2UgcmVzdWx0IGJ5IDEgZm9yIG5vcm1hbCBjYXNlcy4KCShCREZfR2x5cGhfTG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChwY2ZfY21hcF9jaGFyX2luZGV4LCBwY2ZfY21hcF9jaGFyX25leHQsCglQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBJbmNyZWFzZSByZXN1bHQgYnkgMSBmb3Igbm9ybWFsIGNhc2VzLgoJKFBDRl9HbHlwaF9Mb2FkKTogRGVjcmVhc2UgaW5kZXggYnkgMS4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9nZXRfZW5jb2RpbmdzKTogRG9uJ3QgZGVjcmVhc2UgaiBmb3IKCWFsbG9jYXRpbmcgYGVuY29kaW5nJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoLCBGVF9HZXRfR2x5cGhfTmFtZSk6IEZpeAoJYm91bmRpbmcgdGVzdHMuCgoyMDAyLTA2LTE0ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCUFkZCBuZXcgY21hcCBzdXBwb3J0IHRvIEJERiBkcml2ZXIuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9DTWFwUmVjKSBbRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJTmV3IHN0cnVjdHVyZS4KCShiZGZfY21hcF9pbml0LCBiZGZfY21hcF9kb25lLCBiZGZfY21hcF9jaGFyX2luZGV4LAoJYmRmX2NtYXBfY2hhcl9uZXh0KSBbRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBOZXcgZnVuY3Rpb25zLgoJKEJERl9HZXRfQ2hhcl9JbmRleCkgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106IFVzZSBvbmx5Cgljb25kaXRpb25hbGx5LgoJKEJERl9GYWNlX0luaXQpOiBIYW5kbGUgYEFWRVJBR0VfV0lEVEgnIGFuZCBgUE9JTlRfU0laRScga2V5d29yZHMuCglJbXBsZW1lbnQgbmV3IGNtYXAgaGFuZGxpbmcuCgkoYmRmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAyLTA2LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBNYWtlZmlsZSwgY29uZmlndXJlLCAqLyoubWssIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluLAoJZG9jcy9DSEFOR0VTLCBkb2NzL0lOU1RBTEw6IHMvVE9QL1RPUF9ESVIvLgoKMjAwMi0wNi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYzogcy9GVF9TaG9ydC9zaG9ydC8gZm9yIGNvbnNpc3RlbmN5LgoKMjAwMi0wNi0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYzogQWRkZWQgYSBtaXNzaW5nICNlbmRpZi4KCgkqIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCglSZW1vdmVkIHRoZSBidWcgaW4gVHlwZSA0MiBkcml2ZXIgdGhhdCBwcmV2ZW50ZWQgdW4taGludGVkIG91dGxpbmVzCgl0byBiZSBsb2FkZWQuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IENhbGwgRlRfRG9uZV9TaXplLgoJKFQ0Ml9TaXplX0luaXQpOiBDYWxsIEZUX0FjdGl2YXRlX1NpemUuCgkodDQyX2NoZWNrX3NpemVfY2hhbmdlKTogTmV3IGZ1bmN0aW9uLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBVc2UgaXQuCgkoZnRfZ2x5cGhzbG90X2NsZWFyKTogUmVwbGFjZSBGVF9NRU1fU0VUIHdpdGggRlRfWkVSTy4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBVc2UgdDQyX2NoZWNrX3NpemVfY2hhbmdlLgoJSW5pdGlhbGl6ZSBtb3JlIGZpZWxkcyBvZiBgZ2x5cGgnLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wNi0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjEgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wNi0wOCAgSnVsaXVzeiBDaHJvYm9jemVrICA8amNoQHBwcy5qdXNzaWV1LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2F1dG9oaW50L2FoZ2x5cGguYywKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBEb24ndAoJdXNlIGBzZXRqbXAnLCBgbG9uZ2ptcCcsIGFuZCBgam1wX2J1ZicgYnV0IGBmdF9zZXRqbXAnLCBgZnRfbG9uZ2ptcCcsCglhbmQgYGZ0X2ptcF9idWYnLgoJUmVtb3ZlZCBkaXJlY3QgcmVmZXJlbmNlcyB0byA8c3RkaW8uaD4gYW5kIDxzZXRqbXAuaD4gd2hlbgoJYXBwcm9wcmlhdGUsIHRvIGV2ZW50dWFsbHkgcmVwbGFjZSB0aGVtIHdpdGggYQoJRlRfQ09ORklHX1NUQU5EQVJEX0xJQlJBUllfSC4gIFVzZWZ1bCBmb3IgdGhlIFhGcmVlODYgRm9udCBTZXJ2ZXIKCWJhY2tlbmQgYmFzZWQgb24gRlQyLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jIChGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMi0wNi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAocGNmX2NtYXBfY2hhcl9uZXh0KTogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQKCXRoZSBmdW5jdGlvbiB0byByZXR1cm4gaW52YWxpZCB2YWx1ZXMuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaTogUmVtb3ZpbmcgYSB0eXBvIHRoYXQgcHJldmVudGVkCgl0aGUgc291cmNlJ3MgY29tcGlsYXRpb24uCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmspOiBGaXhlZCBhCglidWcgdGhhdCBjYXVzZWQgbmFzdHkgbWVtb3J5IG92ZXJ3cml0ZXMuICBUaGUgaGFzaCB0YWJsZSdzCglidWNrZXRzIGFycmF5IHdhc24ndCBjb3JyZWN0bHkgcmVzaXplZCB3aGVuIHNocmlua2VkLgoKMjAwMi0wNi0wOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZTogVXBkYXRlZC4KCjIwMDItMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9oYXNoX3VubGluaywgZnRjX25vZGVfaGFzaF9saW5rKQoJW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBGaXggcmV0dXJuZWQgZXJyb3IgY29kZS4KCUZpeCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pIChHRU5fQ0FDSEVfTE9PS1VQKTogTW92ZSBkZWNsYXJhdGlvbiBvZgoJYGZhbWlseScgYW5kIGBoYXNoJyB1cCB0byBtYWtlIGl0IGNvbXBpbGFibGUgd2l0aCBnKysuCgoJKiBzcmMvdHlwZTQyL3Q0MmVycm9yLmg6IE5ldyBmaWxlLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMsIHNyYy90eXBlNDIvdDQyb2Jqcy5jLAoJc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBVc2UgdDQyIGVycm9yIGNvZGVzLgoJKiBzcmMvdHlwZTQyL3J1bGVzLm1rOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1NUUkVBTV9ILgoKMjAwMi0wNi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYzogR0VOX0NBQ0hFX0ZBTUlMWV9DT01QQVJFLAoJR0VOX0NBQ0hFX05PREVfQ09NUEFSRSwgR0VOX0NBQ0hFX0xPT0tVUCkgW0ZUQ19DQUNIRV9VU0VfSU5MSU5FXToKCU5ldyBtYWNyb3MuCgkoZnRjX2NtYXBfY2FjaGVfbG9va3VwKSBbIUZUQ19DQUNIRV9VU0VfSU5MSU5FXTogVHlwZWRlZiB0bwoJZnRjX2NhY2hlX2xvb2t1cC4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IFVwZGF0ZWQuCgoJQWRkaW5nIHZhcmlvdXMgZXhwZXJpbWVudGFsIG9wdGltaXphdGlvbnMgdG8gdGhlIGNhY2hlIG1hbmFnZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmggKEZUQ19DQUNIRV9VU0VfSU5MSU5FLAoJRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElORyk6IE5ldyBvcHRpb25zLgoJKEZUQ19DYWNoZVJlYykgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBOZXcgZWxlbWVudHMgYHAnLAoJYG1hc2snLCBhbmQgYHNsYWNrJy4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChGVENfSEFTSF9NQVhfTE9BRCwgRlRDX0hBU0hfTUlOX0xPQUQsCglGVENfSEFTSF9TVUJfTE9BRCkgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkcsCglGVENfSEFTSF9JTklUSUFMX1NJWkVdOiBOZXcgbWFjcm9zLgoJKGZ0Y19ub2RlX21ydV9saW5rLCBmdGNfbm9kZV9tcnVfdXApOiBPcHRpbWl6ZWQuCgkoZnRjX25vZGVfaGFzaF91bmxpbmssIGZ0Y19ub2RlX2hhc2hfbGluaykKCVtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogTmV3IHZhcmlhbnRzLgoJKEZUQ19QUklNRVNfTUlOLCBGVENfUFJJTUVTX01BWCwgZnRjX3ByaW1lcywgZnRjX3ByaW1lX2Nsb3Nlc3QsCglGVENfQ0FDSEVfUkVTSVpFX1RFU1QsIGZ0Y19jYWNoZV9yZXNpemUpCglbIUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBEZWZpbmUgaXQgY29uZGl0aW9uYWxseS4KCShmdGNfY2FjaGVfaW5pdCwgZnRjX2NhY2hlX2NsZWFyKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106CglVcGRhdGVkLgoJKGZ0Y19jYWNoZV9sb29rdXApIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogSW1wbGVtZW50IGl0LgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmk6IE5ldyBmaWxlLgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKEdFTl9DQUNIRV9GQU1JTFlfQ09NUEFSRSwKCUdFTl9DQUNIRV9OT0RFX0NPTVBBUkUsIEdFTl9DQUNIRV9MT09LVVApIFtGVENfQ0FDSEVfVVNFX0lOTElORV06CglOZXcgbWFjcm9zLgoJKGZ0Y19zYml0X2NhY2hlX2xvb2t1cCkgWyFGVENfQ0FDSEVfVVNFX0lOTElORV06IFR5cGVkZWYgdG8KCWZ0Y19jYWNoZV9sb29rdXAuCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBSZW1vdmluZyBkdXBsaWNhdGUgZnVuY3Rpb24uCgoyMDAyLTA2LTA3ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogQ2hhbmdlZCBkZWZpbml0aW9uCglmcm9tIEZUX0VYUE9SVF9ERUYgdG8gRlRfQkFTRV9ERUYuCgoyMDAyLTA2LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgdGhlIGJ1ZyB0aGF0IHByZXZlbnRlZCB0aGUgY29ycmVjdCBkaXNwbGF5IG9mIGZvbnRzIHdpdGgKCWBmdHZpZXcnLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBTcGxpdCBpbnRvLi4uCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuaCwgc3JjL3R5cGU0Mi90NDJwYXJzZS5jLAoJc3JjL3R5cGU0Mi90NDJwYXJzZS5oLCBzcmMvdHlwZTQyL3Q0Mm9ianMuaCwgc3JjL3R5cGU0Mi90NDJvYmpzLmMsCglzcmMvdHlwZTQyL3R5cGU0Mi5jOiBOZXcgZmlsZXMuCgoJKHQ0Ml9nZXRfZ2x5cGhfbmFtZSwgdDQyX2dldF9wc19uYW1lLCB0NDJfZ2V0X25hbWVfaW5kZXgpOiBVc2UKCWBmYWNlLT50eXBlMScuCgoJKEdldF9JbnRlcmZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0dldF9JbnRlcmZhY2UpOiBUaGlzLgoJVXBkYXRlZC4KCShUNDJfT3Blbl9GYWNlLCBUNDJfRmFjZV9Eb25lKTogVXBkYXRlZC4KCShUNDJfRmFjZV9Jbml0KTogQWRkIG5ldyBjbWFwIHN1cHBvcnQuCglVcGRhdGVkLgoJKFQ0Ml9Ecml2ZXJfSW5pdCwgVDQyX0RyaXZlcl9Eb25lLCBUNDJfU2l6ZV9Jbml0LCBUNDJfU2l6ZV9Eb25lLAoJVDQyX0dseXBoU2xvdF9Jbml0LCBUNDJfR2x5cGhTbG90X0RvbmUpOiBVcGRhdGVkLgoJKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9DTWFwX0NoYXJJbmRleCwgVDQyX0NNYXBfQ2hhck5leHQpOiBUaGlzLgoJVXBkYXRlZC4KCShUNDJfQ2hhcl9TaXplLCBUNDJfUGl4ZWxfU2l6ZSk6IFJlbmFtZWQgdG8uLi4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVGhpcy4KCShUNDJfTG9hZF9HbHlwaCk6IFJlbmFtZWQgdG8uLi4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBUaGlzLgoKCSh0NDJfaW5pdF9sb2FkZXIsIHQ0Ml9kb25lX2xvYWRlcik6IFJlbmFtZWQgdG8uLi4KCSh0NDJfbG9hZGVyX2luaXQsIHQ0Ml9sb2FkZXJfZG9uZSk6IFRoaXMuCgkoVDQyX05ld19QYXJzZXIsIFQ0Ml9GaW5hbGl6ZV9QYXJzZXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlcl9pbml0LCB0NDJfcGFyc2VyX2RvbmUpOiBUaGlzLgoJKHBhcnNlX2RpY3QpOiBSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlX2RpY3QpOiBUaGlzLgoJKGlzX2FscGhhLCBpc19zcGFjZSwgaGV4dmFsKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9pc19hbHBoYSwgdDQyX2lzX3NwYWNlLCB0NDJfaGV4dmFsKTogVGhpcy4KCShwYXJzZV9mb250X25hbWUsIHBhcnNlX2ZvbnRfYmJveCwgcGFyc2VfZm9udF9tYXRyaXgsCglwYXJzZV9lbmNvZGluZywgcGFyc2Vfc2ZudHMsIHBhcnNlX2NoYXJzdHJpbmdzLCBwYXJzZV9kaWN0KToKCVJlbmFtZWQgdG8uLi4KCSh0NDJfcGFyc2VfZm9udF9uYW1lLCB0NDJfcGFyc2VfZm9udF9iYm94LCB0NDJfcGFyc2VfZm9udF9tYXRyaXgsCgl0NDJfcGFyc2VfZW5jb2RpbmcsIHQ0Ml9wYXJzZV9zZm50cywgdDQyX3BhcnNlX2NoYXJzdHJpbmdzLAoJdDQyX3BhcnNlX2RpY3QpOiBUaGlzLgoJVXBkYXRlZC4KCgkodDQyX2tleXdvcmRzKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvSmFtZmlsZSwgc3JjL3R5cGU0Mi9kZXNjcmlwLm1tczogVXBkYXRlZC4KCjIwMDItMDYtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGQgOGJwcCBzdXBwb3J0IHRvIEJERiBkcml2ZXIuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX3N0YXJ0KTogSGFuZGxlIDhicHAuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpOiBEaXR0by4KCSogc3JjL2JkZi9SRUFETUU6IFVwZGF0ZWQuCgoyMDAyLTA2LTAyICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9waHlfZm9udF9kb25lKTogRnJlZSBgYmx1ZV92YWx1ZXMnIGFycmF5LgoKMjAwMi0wNS0yOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcmVhZHN0cmVhbSk6IEFsbG9jYXRlIGBidWYnIGR5bmFtaWNhbGx5LgoJKF9iZGZfcGFyc2VfZ2x5cGhzKTogVXNlIGNvcnJlY3Qgc2l6ZSBmb3IgYWxsb2NhdGluZwoJYGZvbnQtPnVuZW5jb2RlZCcuCgkoYmRmX2xvYWRfZm9udCk6IEZyZWUgYXJyYXkgY29uZGl0aW9uYWxseS4KCVJldHVybiBwcm9wZXIgZXJyb3IgY29kZSBpbiBjYXNlIG9mIGZhaWx1cmUuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IE1ha2UgaXQgbW9yZSByb2J1c3QgYWdhaW5zdAoJdW51c3VhbCBmb250cy4KCjIwMDItMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvZGVzY3JpcC5tbXMsIHNyYy90eXBlNDIvZGVzY3JpcC5tbXM6IE5ldyBmaWxlcy4KCSogZGVzY3JpcC5tbXMgKGFsbCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX2dseXBocyk6IEZpeCB0eXBvIHdoaWNoIHByZXZlbnRlZAoJY29tcGlsYXRpb24uCgkqIHNyYy9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNS0yOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZSwgYnVpbGRzL2FtaWdhL3NtYWtlZmlsZSwKCWFtaWdhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFVwZGF0ZWQgdG8gaW5jbHVkZQoJc3VwcG9ydCBmb3IgQkRGIGFuZCBUeXBlNDIgZHJpdmVycy4KCgkqIGRvY3MvbW9kdWxlcy50eHQ6IFVwZGF0ZWQuCgoyMDA1LTA1LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGZpbGUgZm9yIG5leHQgcmVsZWFzZSAoMi4xLjEpLgoKCSogc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0eGY4Ni5oLCBzcmMvYmFzZS9mdHhmODYuYzogTmV3IGZpbGVzLgoJVGhleSBwcm92aWRlIGEgbmV3IEFQSSAoRlRfR2V0X1gxMV9Gb250X0Zvcm1hdCkgdG8gcmV0cmlldmUgYW4KCVgxMS1jb21wYXRpYmxlIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmb250IGZvcm1hdCBvZiBhIGdpdmVuIGZhY2UuCglUaGlzIHdhcyBwdXQgaW4gYSBuZXcgb3B0aW9uYWwgYmFzZSBzb3VyY2UgZmlsZSwgY29ycmVzcG9uZGluZyB0byBhCgluZXcgcHVibGljIGhlYWRlciAobmFtZWQgRlRfWEZSRUU4Nl9IIHNpbmNlIHRoaXMgZnVuY3Rpb24gc2hvdWxkCglvbmx5IGJlIHVzZWQgd2l0aGluIHRoZSBYRnJlZTg2IGZvbnQgc2VydmVyIElNTykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9YRlJFRTg2X0gpOiBOZXcgbWFjcm8gKG5vdAoJZG9jdW1lbnRlZCB5ZXQpLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jOiBOZXcgZmlsZSwgcHJvdm9kaW5nIHR3byBuZXcgQVBJIGZ1bmN0aW9ucwoJKEZUX0dldF9QU19Gb250X0luZm8gYW5kIEZUX0hhc19QU19HbHlwaF9OYW1lcykuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaDogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rLCBzcmMvYmFzZS9kZXNjcmlwLm1tczoKCVVwZGF0aW5nIGJ1aWxkIGNvbnRyb2wgZmlsZXMgZm9yIHRoZSBuZXcgZmlsZXMgYGZ0eGY4Ni5jJyBhbmQKCWBmdHR5cGUxLmMnIGluIHNyYy9iYXNlLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzKTogRml4ZWQgYSBidWcgdGhhdAoJcHJldmVudGVkIGZhbWlseSBibHVlIHpvbmVzIHN1YnN0aXR1dGlvbiBmcm9tIGhhcGVubmluZyBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmggRlRfR2V0X0JERl9DaGFyc2V0X0lEKTogQWRkaW5nCglkb2N1bWVudGF0aW9uIGNvbW1lbnQuCgoyMDAyLTA1LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWUpOiBEb24ndCB1c2UgRlRfU1RSRUFNX1JFQURfQVQKCWJ1dCBGVF9TVFJFQU1fUkVBRC4KCURlY2xhcmUgYHN0cmVhbScgdmFyaWFibGUuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX2dseXBocyk6IFJlcGxhY2UgZmxvYXRpbmcgcG9pbnQgbWF0aAoJd2l0aCBjYWxscyB0byBgRlRfTXVsRGl2Jy4KCjIwMDItMDUtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhpbmcgdGhlIFNGTlQgbmFtZSB0YWJsZSBsb2FkZXIgdG8gc3VwcG9ydCB2YXJpb3VzIGJ1Z2d5IGZvbnRzLgoJSXQgbm93IGlnbm9yZXMgZW1wdHkgbmFtZSBlbnRyaWVzLCBlbnRyaWVzIHdpdGggaW52YWxpZCBwb2ludGVyCglPZmZzZXRzIGFuZCBjZXJ0YWluIGZvbnRzIGNvbnRhaW5pbmcgdGFibGVzIHdpdGggYnJva2VuCglgc3RvcmFnZU9mZnNldCcgZmllbGRzLgoKCU5hbWUgc3RyaW5ncyBhcmUgbm93IGxvYWRlZCBvbiBkZW1hbmQsIHdoaWNoIHJlZHVjZXMgdGhlIG1lbW9yeQoJcmVxdWlyZW1lbnRzIGZvciBhIGdpdmVuIEZUX0ZhY2UgdHJlbWVuZG91c2x5IChmb3IgZXhhbXBsZSwgdGhlIG5hbWUKCXRhYmxlIG9mIEFyaWFsLnR0ZiBpcyBhYm91dCAxMEtiIGFuZCBjb250YWlucyA3MCBuYW1lcykuCgoJVGhpcyBpcyBhIHRlbXBvcmFyeSBmaXguICBUaGUgd2hvbGUgbmFtZSB0YWJsZSBsb2FkZXIgYW5kIGludGVyZmFjZQoJd2lsbCBiZSByZXdyaXR0ZW4gaW4gYSBtdWNoIG1vcmUgY2xlYW5seSB3YXkgc2hvcnRseSwgb25jZSBDU0VIIGhhdmUKCWJlZW4gaW50cm9kdWNlZCBpbiB0aGUgc291cmNlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9OYW1lRW50cnlSZWMpOiBDaGFuZ2UKCXR5cGUgb2YgYHN0cmluZ09mZnNldCcgdG8gRlRfVUxvbmcuCgkoVFRfTmFtZVRhYmxlUmVjKTogQ2hhbmdlIHR5cGUgb2YgYG51bU5hbWVSZWNvcmRzJyBhbmQKCWBzdG9yYWdlT2Zmc2V0JyB0byBGVF9VSW50LgoJUmVwbGFjZSBgc3RvcmFnZScgd2l0aCBgc3RyZWFtJy4KCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogTG9hZCBuYW1lIG9uIGRlbWFuZC4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRGl0dG8uCglNYWtlIGNvZGUgbW9yZSByb2J1c3QuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChUVF9OYW1lRW50cnlfQ29udmVydEZ1bmMpOiBOZXcgdHlwZWRlZi4KCSh0dF9mYWNlX2dldF9uYW1lKTogVXNlIGl0LgoJTWFrZSBjb2RlIG1vcmUgcm9idXN0LgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IFVzZSBgc3RhdGljJyBmb3IgYXJyYXlzLgoJSGFuZGxlIGludmFsaWQgYHN0b3JhZ2VPZmZzZXQnIGRhdGEgYmV0dGVyLgoJU2V0IGxlbmd0aCBmaWVsZHMgdG8gemVybyBmb3IgaW52YWxpZCBvciBpZ25vcmVkIGRhdGEuCglSZW1vdmUgY29kZSB3aXRoaW4gRlRfREVCVUdfTEVWRUxfVFJBQ0UuCgkoVFRfRnJlZV9OYW1lcyk6IFVwZGF0ZWQuCgoyMDAyLTA1LTI0ICBUaW0gTW9vbmV5ICA8ZW5jaGFudGVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGJ1aWxkcy91bml4L2Z0LW11bm1hcC5tNDogTmV3IGZpbGUsIGV4dHJhY3RlZCBGVF9NVU5NQVBfREVDTCBhbmQKCUZUX01VTk1BUF9QQVJBTSBmcm9tIGFjbG9jYWwubTQgaW50byBoZXJlLCBzbyBhY2xvY2FsLm00IGNhbiBiZQoJcmVidWlsdCBmcm9tIHNvdXJjZXMuICBTZXQgbWFjcm8gc2VyaWFsIHRvIDEsIGFuZCB1c2UgdGhpcmQgYXJndW1lbnQKCXRvIEFDX0RFRklORSBmb3Igb3VyIHR3byBjdXN0b20gc3ltYm9scywgc28gZnRjb25maWcuaW4gY291bGQgb25lIGRheQoJYmUgcmVidWlsdCB3aXRoIGF1dG9oZWFkZXIgKG5vdCByZWNvbW1lbmRlZCBub3csIGZ0Y29uZmlnLmluIGlzIGEKCWN1c3RvbSBzb3VyY2UgZmlsZSkKCjIwMDItMDUtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0JFWklFUl9IKTogUmVtb3ZlZC4KCShGVF9CREZfSCk6IE5ldyBtYWNybyBmb3IgYWNjZXNzaW5nIGBmdGJkZi5oJy4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAoaGV4dmFsKTogRml4IHR5cG8uCgoyMDAyLTA1LTIxICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMVJhZGl4KTogTmV3IGZ1bmN0aW9uLgoJKHQxX3RvaW50KTogVXNlIGl0IHRvIGhhbmRsZSBudW1iZXJzIGluIHJhZGl4IGZvcm1hdC4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogQWRkIGR1bW15Cglmb3IgdW5kb2N1bWVudGVkLCBvYnNvbGV0ZSBvcGNvZGUgMTUuCgoyMDAyLTA1LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmcsIGFuZCBjaGFuZ2VkIGFsbCB0YWJsZXMKCXRvIHRoZSBgc3RhdGljIGNvbnN0JyBzdG9yYWdlIHNwZWNpZmllciAoaW5zdGVhZCBvZiBzaW1wbHkKCWBzdGF0aWMnKS4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAoaGV4dmFsKTogVXNlIG1vcmUgZWZmaWNpZW50IGNvZGUuCglSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2JkZi9iZGZkcml2ci5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRiZGYuaCwgc3JjL2Jhc2UvZnRiZGYuYywKCXNyYy9iYXNlL2Rlc2NyaXAubW1zLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tawoJKEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IE5ldyBBUEkgdG8gcmV0cmlldmUgQkRGLXNwZWNpZmljIHN0cmluZ3MKCWZyb20gYSBmYWNlLiAgVGhpcyBpcyBtdWNoIGNsZWFuZXIgdGhhbiBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHR5cGVzCglgQkRGX1B1YmxpY19GYWNlJyBkZWZpbmVkIGluIEZUX0lOVEVSTkFMX0JERl9UWVBFU19ILgoKMjAwMi0wNS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9SRUFETUU6IE1lbnRpb24gTWljcm9zb2Z0J3MgU0JJVCB0b29sLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2lkL2NpZHJpdmVyLmMsIHNyYy9wY2YvcGNmZHJpdmVyLmMsCglzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmMsCglzcmMvd2luZm9udHMvd2luZm50LmMsIHNyYy90eXBlNDIvdDQyZHJpdnIuYywgc3JjL2JkZi9iZGZkcml2ci5jCglbRlRfQ09ORklHX09QVElPTl9EWU5BTUlDX0RSSVZFUlNdOiBDb21wbGV0ZWx5IHJlbW92ZWQuICBJdCBoYXMKCWJlZW4gbmV2ZXIgdXNlZC4KCjIwMDItMDUtMjEgIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogcy9UNDJfRU5DT0RJTkdfVFlQRV8vVDFfRU5DT0RJTkdfVFlQRV8vLgoJKHBhcnNlX2ZvbnRfbWF0cml4KTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNvZGUuCgkocGFyc2Vfc2ZudHMpOiBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzLgoJKHQ0Ml9kcml2ZXJfY2xhc3MpIFtUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXTogVXNlCglmdF9tb2R1bGVfZHJpdmVyX2hhc19oaW50ZXIgY29uZGl0aW9uYWxseS4KCU1vdmVkIHNvbWUgdHlwZSA0MiBzcGVjaWZpYyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9UNDJfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoyMDAyLTA1LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y3NiaXRzLmggKEZUQ19TQml0KTogQWRkZWQgYSBuZXcgZmllbGQKCWBudW1fZ3JheXMnIGZvciBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBncmF5IGxldmVscy4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IEluaXRpYWxpemUgaXQuCgoyMDAyLTA1LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkaW5nIGEgZHJpdmVyIGZvciBCREYgZm9udHMgd3JpdHRlbiBieSBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKCTxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPi4gIEhlYXZpbHkgbW9kaWZpZWQgYnkgbWUgdG8KCWJldHRlciBhZGFwdCBpdCB0byBGcmVlVHlwZSwgcmVtb3ZpbmcgdW5uZWVkZWQgc3R1ZmYuICBBZGRpdGlvbmFsbHksCglpdCBub3cgc3VwcG9ydHMgTWFyayBMZWlzaGVyJ3MgQkRGIGV4dGVuc2lvbiBmb3IgYW50aS1hbGlhc2VkCgliaXRtYXAgZ2x5cGhzIHdpdGggMiBhbmQgNCBicHAuCgoJKiBzcmMvYmRmLyo6IE5ldyBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYmRmdHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGRlZCBCREYgZHJpdmVyIGNvbXBvbmVudHMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaDogQWRkZWQgZXJyb3IgY29kZXMgZm9yIEJERiBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9KYW1maWxlOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX0JERl9UWVBFU19IKToKCU5ldyBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3NwcmludGYpOiBOZXcgYWxpYXMgZm9yCglzcHJpbnRmLgoKMjAwMi0wNS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IEFkZGVkIFR5cGUgNDIgZHJpdmVyCgljb21wb25lbnQuCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogVXNlIGl0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9QQ0ZfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoyMDAyLTA1LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTQyL0phbWZpbGU6IE5ldyBmaWxlLgoKMjAwMi0wNS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZGluZyBhIGRyaXZlciBmb3IgVHlwZTQyIGZvbnRzIHdyaXR0ZW4gYnkgUm9iZXJ0byBBbGFtZWRhCgk8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogc3JjL3R5cGU0Mi8qOiBOZXcgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvSmFtZmlsZTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfeGRpZ2l0LCBmdF9tZW1jbXAsCglmdF9hdG9pKTogTmV3IGFsaWFzZXMgZm9yIHhkaWdpdCwgbWVtY21wLCBhbmQgYXRvaSwgcmVzcGVjdGl2ZWx5LgoKMjAwMi0wNS0xMiAgT3dlbiBUYXlsb3IgIDxvdGF5bG9yQHJlZGhhdC5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9va1VwX1RhYmxlKTogUHJvdGVjdCBhZ2FpbnN0IHRhYmxlcwoJd2l0aCBhIHplcm8gbGVuZ3RoIHZhbHVlLgoKMjAwMi0wNS0xMiAgTWljaGFlbCBQZmVpZmZlciAgPG1pY2hhZWwucGZlaWZmZXJAdXRhbmV0LmF0PgoKCSogYnVpbGRzL2Jlb3MvYmVvcy5tazogSW5jbHVkZSBgbGluay1zdGQubWsnLgoKMjAwMi0wNS0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5oIChUMV9Mb2FkZXIpOiBSZW5hbWVkIHRvLi4uCgkoVDFfTG9hZGVyUmVjKTogVGhpcy4KCShUMV9Mb2FkZXIpOiBOb3cgcG9pbnRlciB0byBUMV9Mb2FkZXJSZWMuCgkqIHNyYy90eXBlMS90MWxvYWQuYzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oLCBzcmMvdHlwZTEvdDFsb2FkLmMsCglzcmMvdHlwZTEvdDFvYmpzLmM6CglzL1QxX0VOQ09ESU5HX1RZUEVfRVhQT1JUL1QxX0VOQ09ESU5HX1RZUEVfRVhQRVJULy4KCjIwMDItMDUtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRTogQWRkIGEgbm90ZSByZWdhcmRpbmcgbGlidHRmIHZzLiBsaWJmcmVldHlwZS4KCjIwMDItMDUtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGcmVlVHlwZSAyIGNhbiBub3cgYmUgYnVpbHQgaW4gYW4gZXh0ZXJuYWwgZGlyZWN0b3J5IHdpdGggdGhlCgljb25maWd1cmUgc2NyaXB0IGFsc28uCgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKElOQ0xVREVTKTogQWRkIGBPQkpfRElSJy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tayAoaGF2ZV9tayk6IE5ldyB2YXJpYWJsZSB0byB0ZXN0IGZvcgoJZXh0ZXJuYWwgYnVpbGQuCgkodW5peC1kZWYubWspOiBEZWZpbmVkIGFjY29yZGluZyB0byB2YWx1ZSBvZiBgaGF2ZV9taycuCgkqIGJ1aWxkcy91bml4L3VuaXgubWsgKGhhdmVfbWspOiBOZXcgdmFyaWFibGUgdG8gdGVzdCBmb3IKCWV4dGVybmFsIGJ1aWxkLgoJU2VsZWN0IGluY2x1ZGUgcGF0aHMgZm9yIHVuaXgtZGVmLm1rIGFuZCB1bml4LWNjLm1rIGFjY29yZGluZwoJdG8gdmFsdWUgb2YgYGhhdmVfbWsnLgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoT0JKX0JVSUxEKTogTmV3IHZhcmlhYmxlLgoJKERJU1RDTEVBTik6IFVzZSBpdC4KCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoTElCVE9PTCk6IERlZmluZSBkZWZhdWx0IHZhbHVlIG9ubHkKCWlmIG5vdCB5ZXQgZGVmaW5lZC4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCk6IFVzZSBgT0JKX0JVSUxEJyBmb3IgaW5zdGFsbGluZwoJZnJlZXR5cGUtY29uZmlnLgoKCSogY29uZmlndXJlOiBEb24ndCBkZXBlbmQgb24gYmFzaCBmZWF0dXJlcy4KCShmdDJfZGlyLCBhYnNfY3Vycl9kaXIsIGFic19mdDJfZGlyKTogTmV3IHZhcmlhYmxlcyAoY29kZQoJcGFydGlhbGx5IHRha2VuIGZyb20gQXV0b2NvbmYpLgoJQnVpbGQgYSBkdW1teSBNYWtlZmlsZSBpZiBub3QgYnVpbGRpbmcgaW4gc291cmNlIHRyZWUuCgoJKiBkb2NzL0lOU1RBTEw6IERvY3VtZW50IGl0LgoKMjAwMi0wNS0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCk6IEZpbmFsbHkgZml4aW5nIHRoZSBsYXN0CglidWcgdGhhdCBwcmV2ZW50ZWQgRnJlZVR5cGUgMi54IGFuZCBGcmVlVHlwZSAxLnggdG8gcHJvZHVjZQoJYml0LWJ5LWJpdCBpZGVudGljYWwgbW9ub2Nocm9tZSBnbHlwaCBiaXRtYXBzIHdpdGggbmF0aXZlIFRydWVUeXBlCgloaW50aW5nLiAgVGhlIGN1bHByaXQgd2FzIGEgc2luZ2xlLWJpdCBmbGFnIHRoYXQgd2Fzbid0IHNldAoJY29ycmVjdGx5IGJ5IHRoZSBUcnVlVHlwZSBnbHlwaCBsb2FkZXIuCgoJKiBzcmMvb3RsYXlvdXQvb3RsYXlvdXQuaCwgc3JjL290bGF5b3V0L290bGJhc2UuYywKCXNyYy9vdGxheW91dC9vdGxiYXNlLmgsIHNyYy9vdGxheW91dC9vdGxjb25mLmgsCglzcmMvb3RsYXlvdXQvb3RsZ2RlZi5jLCBzcmMvb3RsYXlvdXQvb3RsZ2RlZi5oLAoJc3JjL290bGF5b3V0L290bGdwb3MuYywgc3JjL290bGF5b3V0L290bGdwb3MuaCwKCXNyYy9vdGxheW91dC9vdGxnc3ViLmMsIHNyYy9vdGxheW91dC9vdGxnc3ViLmgsCglzcmMvb3RsYXlvdXQvb3RsanN0Zi5jLCBzcmMvb3RsYXlvdXQvb3RsanN0Zi5oLAoJc3JjL290bGF5b3V0L290bHRhYmxlLmMsIHNyYy9vdGxheW91dC9vdGx0YWJsZS5oLAoJc3JjL290bGF5b3V0L290bHRhZ3MuaDogTmV3IE9wZW5UeXBlIExheW91dCBzb3VyY2UgZmlsZXMuICBUaGUKCW1vZHVsZSBpcyBzdGlsbCBpbmNvbXBsZXRlLgoKMjAwMi0wNS0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX2luZGV4KTogRml4IHNlcmlvdXMgdHlwbwoJKDB4RkZGVSAtPiAweEZGRkZVKS4KCjIwMDItMDUtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvSU5TVEFMTDogRml4IFVSTCBvZiBtYWtlcHAuCgoyMDAyLTA1LTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZmFjZV9nZXRfbmFtZSk6IEZpeGluZyBhIGJ1ZyB0aGF0IGNhdXNlZAoJRnJlZVR5cGUgdG8gY3Jhc2ggd2hlbiBjZXJ0YWluIGJyb2tlbiBmb250cyAoZS5nLiBgaHlhNmdiLnR0ZicpCgl3ZXJlIG9wZW5lZC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKTogQXBwbGllZCBhIHNtYWxsIHdvcmstYXJvdW5kIHRvCgltYW5hZ2UgZm9udHMgY29udGFpbmluZyBhIGJyb2tlbiBuYW1lIHRhYmxlIChlLmcuIGBoeWE2Z2IudHRmJykuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlKTogRml4ZWQgb3Zlci1yZXN0cmljdGl2ZQoJdmFsaWRhdGlvbiB0ZXN0LiAgVGhlIGNoYXJtYXAgdmFsaWRhdG9yIG5vdyBhY2NlcHRzIG92ZXJsYXBwaW5nCglyYW5nZXMgaW4gZm9ybWF0IDQgY2hhcm1hcHMuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfaW5kZXgpOiBTd2l0Y2hlZCB0byBhIGJpbmFyeQoJc2VhcmNoIGFsZ29yaXRobS4gIENlcnRhaW4gZm9udHMgY29udGFpbiBtb3JlIHRoYW4gMTcwIGRpc3RpbmN0CglzZWdtZW50cyEKCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmg6IEFkZGluZyBhbiBhbGlhcyBmb3IgdGhlIGBleGl0JwoJZnVuY3Rpb24uICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmVhciBmdXR1cmUgdG8gcGFuaWMgaW4gY2FzZSBvZgoJdW5leHBlY3RlZCBleGNlcHRpb24gKHdoaWNoIHNob3VsZG4ndCBoYXBwZW4gaW4gdGhlb3J5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRoYXNoLmgsIHNyYy9iYXNlL2Z0aGFzaC5jOiBOZXcgZmlsZXMuCglUaGlzIGlzIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gb2YgZHluYW1pYyBoYXNoIHRhYmxlcyB1c2luZyBhIGxpbmVhcgoJYWxnb3JpdGhtICh0byBnZXQgcmlkIG9mIGBzdGFsbHMnIGR1cmluZyByZXNpemVzKS4gIEluIHRoZSBmdXR1cmUKCXRoaXMgd2lsbCBiZSB1c2VkIGluIGF0IGxlYXN0IHRocmVlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5OiB0aGUgY2FjaGUKCXN1Yi1zeXN0ZW0sIHRoZSBvYmplY3Qgc3ViLXN5c3RlbSwgYW5kIHRoZSBtZW1vcnkgZGVidWdnZXIuCgoJKiBzcmMvYmFzZS9KYW1maWxlOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9IQVNIX0gsCglGVF9JTlRFUk5BTF9PQkpFQ1RfSCk6IE5ldyBtYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y29yZS5oOiBOZXcgZmlsZSB0byBncm91cCBhbGwgbmV3CglkZWZpbml0aW9ucyByZWxhdGVkIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuICBJdAoJaXMgdmVyeSBsaWtlbHkgdGhhdCB0aGlzIGZpbGUgd2lsbCBkaXNhcHBlYXIgb3IgYmUgcmVuYW1lZCBpbiB0aGUKCWZ1dHVyZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oOgoJQWRkaW5nIGNvbW1lbnRzIHRvIGJldHRlciBleHBsYWluIHRoZSBvYmplY3Qgc3ViLXN5c3RlbSBhcyB3ZWxsIGFzCgl0aGUgbmV3IG1lbW9yeSBtYW5hZ2VyIGludGVyZmFjZS4KCjIwMDItMDQtMzAgIFdlbmxpbiBJbnN0aXR1dGUgKFRvbSBCaXNob3ApICA8d2VubGluQHdlbmxpbi5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwMmNfc3RyKTogUmVtb3ZlZC4KCShmaWxlX3NwZWNfZnJvbV9wYXRoKSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogQWRkZWQgc3VwcG9ydCBmb3IKCU9TIFguCgkoaXNfZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBEZWZpbmUgb25seSBmb3IgT1MgWC4KCUhhbmRsZSBgbmFtZUxlbicgPD0gNiBhbHNvLgoJKHBhcnNlX2ZvbmQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBuYW1lX3RhYmxlJy4KCVVzZSBmdW5jdGlvbmFsaXR5IG9mIG9sZCBwMmNfc3RyIGRpcmVjdGx5LgoJQWRkIHNhZmV0eSBjaGVja3MuCgkocmVhZF9sd2ZuKTogSW5pdGlhbGl6ZSBgc2l6ZV9wJy4KCUNoZWNrIGZvciBzaXplX3AgPT0gTlVMTC4KCShuZXdfbWVtb3J5X3N0cmVhbSwgb3Blbl9mYWNlX2Zyb21fYnVmZmVyKTogVXBkYXRlZCB0byBGcmVlVHlwZSAyLjEuCgkoRlRfTmV3X0ZhY2VfRnJvbV9MV0ZOKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbWVtb3J5Jy4KCVJlbW92ZSBzb21lIGRlYWQgY29kZS4KCShGVF9OZXdfRmFjZV9Gcm9tX1NGTlQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBzdHJlYW0nLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBEZWZpbmUgb25seSBmb3IKCU9TIFguCgkoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgZXJyb3InLgoJKFJlc291cmNlRm9ya1NpemUpOiBOZXcgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2UpOiBVc2UgaXQuCglIYW5kbGUgZW1wdHkgcmVzb3VyY2UgZm9ya3MuCglDb25kaXRpb25hbGl6ZSBzb21lIGNvZGUgZm9yIE9TIFguCglBZGQgY29kZSB0byBjYWxsIG5vcm1hbCBsb2FkZXIgYXMgYSBmYWxsYmFjay4KCjIwMDItMDQtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglgaW50ZXJmYWNlJyBpcyByZXNlcnZlZCBvbiB0aGUgTWFjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLAoJc3JjL2Jhc2UvZnRvdXRsbi5jOiBzL2ludGVyZmFjZS9mdW5jX2ludGVyZmFjZS8uCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChGVF9PdXRsaW5lX0dldF9CQm94KToKCXMvaW50ZXJmYWNlL2Jib3hfaW50ZXJmYWNlLy4KCSogc3JjL2NmZi9jZmZkcml2ci5jOiBzL2ludGVyZmFjZS9tb2R1bGVfaW50ZXJmYWNlLy4KCSogc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oOgoJcy9pbnRlcmZhY2UvcHNuYW1lc19pbnRlcmZhY2UvLgoJKiBzcmMvY2lkL2NpZHJpdmVyLmM6IHMvaW50ZXJmYWNlL2NpZF9pbnRlcmZhY2UvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBzL2ludGVyZmFjZS9tb2R1bGVfaW50ZXJmYWNlLy4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IHMvaW50ZXJmYWNlL2Z1bmNfaW50ZXJmYWNlLy4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6IHMvaW50ZXJmYWNlL3R0X2ludGVyZmFjZS8uCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiBzL2ludGVyZmFjZS90MV9pbnRlcmZhY2UvLgoKCVNvbWUgbW9yZSB2YXJpYWJsZSByZW5hbWVzIHRvIGF2b2lkIHRyb3VibGVzIG9uIHRoZSBNYWMuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6CglzL1Vua25vd258QXNjZW5kaW5nfERlc2NlbmRpbmd8RmxhdC9cMV9TdGF0ZS8uCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBzL1RTY2FuL1RDb29yZC8uCgoJT3RoZXIgY2hhbmdlcyBmb3IgdGhlIE1hYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IERlZmluZSBGVF9NQUNJTlRPU0ggZm9yCglNYWMgcGxhdGZvcm1zLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogcy9tYWNpbnRvc2gvRlRfTUFDSU5UT1NILy4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IE1ha2UgYHBpdGNoJyBhbHdheXMKCWFuIGV2ZW4gbnVtYmVyLgoKMjAwMi0wNC0yOSAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogZGVzY3JpcC5tbXMgKGFsbCk6IEFkZCBwZnIgZHJpdmVyLgoKMjAwMi0wNC0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJlcnJvci5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOiBBZGQgUEZSIGVycm9yIGNvZGVzLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2V4dHJhX2l0ZW1fbG9hZF9zdGVtX3NuYXBzKTogRml4IGRlYnVnIG1lc3NhZ2UuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBwZnJlcnJvci5oLgoJVXNlIFBDRiBlcnJvciBjb2Rlcy4KCShwZnJfZXh0cmFfaXRlbV9sb2FkX2JpdG1hcF9pbmZvLCBwZnJfZ2x5cGhfbG9hZF9zaW1wbGUsCglwZnJfZ2x5cGhfbG9hZF9jb21wb3VuZCk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKiBzcmMvcGZyL3Bmcm9ianMuYzogSW5jbHVkZSBwZnJlcnJvci5oLgoJVXNlIFBDRiBlcnJvciBjb2Rlcy4KCShwZnJfZmFjZV9pbml0KTogUmV0dXJuIFBGUl9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdC4KCSogc3JjL3Bmci9ydWxlcy5tayAoUEZSX0RSVl9IKTogSW5jbHVkZSBwZnJlcnJvci5oLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0ZhY2VfSW5pdCkgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106Cglgcm9vdCcgLT4gYGZhY2UtPnJvb3QnLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKSBbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCVJlbW92ZWQuCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogRGVjbGFyZSBUVF9CdWlsZF9DTWFwcyBvbmx5IGZvcgoJRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMuCgoyMDAyLTA0LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2NhY2hlX2xvb2t1cCksCglzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCksCglzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYyksCglzcmMvY2FjaGUvZnRjc2JpdHMuYyAoRlRDX1NCaXRfQ2FjaGVfTG9va3VwKTogVXNlIEZUQ19FcnJfKi4KCXNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKTogVXNlIEZUQ19FcnJfKi4KCShGVENfSW1hZ2VDYWNoZV9Mb29rdXApOiBGaXggaGFuZGxpbmcgb2YgaW52YWxpZCBhcmd1bWVudHMuCgoyMDAyLTA0LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFNldCBgdmVyc2lvbl9pbmZvJyB0byA5OjE6MyAoRlQyCgl2ZXJzaW9uIDIuMC45IGhhcyA5OjA6MykuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgKHVzaW5nIGF1dG9jb25mIDIuNTMpLgoKMjAwMi0wNC0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtc19mYXJzZSk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKHBmcl9waHlfZm9udF9sb2FkKTogcy9zaXplL1NpemUvIGZvciBsb2NhbCB2YXJpYWJsZSB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBGaXggZGVidWcgbWVzc2FnZS4KCShwZnJfc2xvdF9sb2FkKTogUmVtb3ZlIHJlZHVuZGFudCBsb2NhbCB2YXJpYWJsZS4KCjIwMDItMDQtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgYSBQRlIgZm9udCBkcml2ZXIgdG8gdGhlIEZyZWVUeXBlIHNvdXJjZXMuICBOb3RlIHRoYXQgaXQKCWRvZXNuJ3Qgc3VwcG9ydCBlbWJlZGRlZCBiaXRtYXBzIG9yIGtlcm5pbmcgdGFibGVzIHlldC4KCglzcmMvcGZyLyo6IE5ldyBmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaCwgc3JjL0phbWVmaWxlOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuaCAoVDFfTG9hZF9HbHlwaCksIHNyYy90eXBlMS90MWdsb2FkLmMKCShUMV9Mb2FkX0dseXBoKTogRml4ZWQgaW5jb3JyZWN0IHBhcmFtZXRlciBzaWduLW5lc3MgaW4gY2FsbGJhY2sKCWZ1bmN0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIChGVF9NRU1fWkVSTywgRlRfWkVSTyk6IE5ldwoJbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9ORVhUX09GRjMsIEZUX05FWFRfVU9GRjMsCglGVF9ORVhUX09GRjNfTEUsIEZUX05FWFRfVU9GRjNfTEUpOiBOZXcgbWFjcm9zIHRvIHBhcnNlIGluLW1lbW9yeQoJMjQtYml0IGludGVnZXJzLgoKMjAwMi0wNC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmMsCglidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jOiBWZXJzaW9uIDIuMS4wIGNvdWxkbid0IGJlIGxpbmtlZAoJYWdhaW5zdCBhcHBsaWNhdGlvbnMgaW4gV2luMzIgYW5kIEFtaWdhIGJ1aWxkcyBkdWUgdG8gY2hhbmdlcyB0bwoJYHNyYy9iYXNlL2Z0ZGVidWcuYycgdGhhdCB3ZXJlIG5vdCBwcm9wZXJseSBwcm9wYWdhdGVkIHRvCglgYnVpbGRzL3dpbjMyJyBhbmQgYGJ1aWxkcy9hbWlnYScuICBUaGlzIGhhcyBiZWVuIGZpeGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGV4Y2VwdC5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzbWVtLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzaW8uaCwgc3JjL2Jhc2UvZnRzeXNtZW0uYywgc3JjL2Jhc2UvZnRzeXNpby5jOgoJTmV3IGV4cGVyaW1lbnRhbCBmaWxlcy4KCjIwMDItMDQtMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4wIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDQtMTcgIE1pY2hhZWwgSmFuc3NvbiAgPG1qYW5AZW0yLXNvbHV0aW9ucy5jb20+CgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Db21wdXRlX01heF9BZHZhbmNlKTogRml4ZWQgYSBzbWFsbCBidWcKCXRoYXQgcHJldmVudGVkIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuCgoyMDAyLTA0LTE2ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2ZyZWFkIChwY2ZfZ2V0X2FjY2VsbCk6IEZpeCBwYXJzaW5nIG9mIGFjY2VsZXJhdG9yCgl0YWJsZXMuCgoyMDAyLTA0LTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0ZUTC50eHQ6IEZvcm1hdHRpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBSZWR1Y2UgdGhlIHNpemUgb2YgdGhlCglyZW5kZXIgcG9vbCBmcm9tIDMya0J5dGUgdG8gMTZrQnl0ZS4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2Zfc2Vla190b190YWJsZV90eXBlKTogUmVtb3ZlIGNvbXBpbGVyCgl3YXJuaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfTUFYX0VYVEVOU0lPTlMpOiBSZW1vdmVkLgoKCSogZG9jcy9DSEFOR0VTOiBQcmVwYXJpbmcgMi4xLjAgcmVsZWFzZS4KCjIwMDItMDQtMTMgIFdlcm5lciBMRU1CRVJHICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogcy9yYW5kL1JhbmQvIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNC0xMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLlVOWDogVXBkYXRlZCB0aGUgVW5peC1zcGVjaWZpYyBxdWljay1jb21waWxhdGlvbiBndWlkZSB0bwoJd2FybiBhYm91dCB0aGUgR05VIE1ha2UgcmVxdWlyZW1lbnQgYXQgY29tcGlsZSB0aW1lLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCglzcmMvYXV0b2hpbnQvYWhvcHRpbS5jLAoKCXNyYy9iYXNlL2Z0ZGJnbWVtLmMsIHNyYy9iYXNlL2Z0ZGVidWcuYywgc3JjL2Jhc2UvZnRtYWMuYywKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdHN5c3RlbS5jLAoKCXNyYy9jYWNoZS9mdGNpbWFnZS5jLCBzcmMvY2FjaGUvZnRjc2JpdHMuYywKCglzcmMvY2ZmL2NmZmRyaXZlci5jLCBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZvYmpzLmMsCgoJc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9jaWQvY2lkcGFyc2UuYywgc3JjL2NpZC9jaWRyaXZlci5jLAoKCXNyYy9wY2YvcGNmZHJpdmVyLmMsIHNyYy9wY2YvcGNmcmVhZC5jLAoKCXNyYy9wc2F1eC90MWNtYXAuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmMsCgoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLAoKCXNyYy9wc25hbWVzL3BzbW9kdWxlLmMsCgoJc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLAoKCXNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3R0bG9hZC5jLAoKCXNyYy9zbW9vdGgvZnRncmF5cy5jLAoKCXNyYy90eXBlMS90MWFmbS5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZ2xvYWQuYywKCXNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLCBzcmMvdHlwZTEvdDFwYXJzZS5jLAoKCWJ1aWxkcy91bml4L2Z0Y29uZmlnLmluLCBidWlsZHMvdm1zL2Z0Y29uZmlnLmgsCgoJYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYzoKCglBZGRlZCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZSBgZnRzdGRsaWIuaCcgdXNlZCB0byBkZWZpbmUKCWFsaWFzZXMgZm9yIGFsbCBJU08gQyBsaWJyYXJ5IGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBlbmdpbmUKCShlLmcuIHN0cmxlbiwgcXNvcnQsIHNldGptcCwgZXRjLikuCgoJVGhpcyBlYXNlcyB0aGUgcG9ydGluZyBvZiBGcmVlVHlwZSAyIHRvIGVudmlyb25tZW50cyBsaWtlCglYRnJlZTg2IG1vZHVsZXMvZXh0ZW5zaW9ucy4KCglBbHNvIHJlbW92ZWQgbWFueSAjaW5jbHVkZSA8c3RyaW5nLmg+LCAjaW5jbHVkZSA8c3RkbGliLmg+LCBldGMuCglmcm9tIHRoZSBlbmdpbmUncyBzb3VyY2VzIHdoZXJlIHRoZXkgYXJlIG5vdCBuZWVkZWQuCgoJKiBzcmMvc2ZudC90dHBvc3QuYzogVXNlIG1hY3JvIG5hbWUgZm9yIHBzbmFtZXMuaC4KCjIwMDItMDQtMTIgIFZpbmNlbnQgQ2Fyb24gIDx2LmNhcm9uQHplcm9kZXV4Lm5ldD4KCgkqIGNvbmZpZ3VyZSwgYnVpbGRzL2RldGVjdC5tazogVXBkYXRlZCB0aGUgYnVpbGQgc3lzdGVtIHRvIHByaW50CglhIHdhcm5pbmcgbWVzc2FnZSBpbiBjYXNlIEdOVSBNYWtlIGlzbid0IHVzZWQgdG8gYnVpbGQgdGhlIGxpYnJhcnkuCgoyMDAyLTA0LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUywgSmFtZmlsZS5pbjogVXBkYXRlcyBmb3IgdGhlIDIuMS4wIHJlbGVhc2UuCgoJKiBkb2NzL0ZUTC50eHQ6IFVwZGF0ZWQgbGljZW5zZSB0ZXh0IHRvIHByb3ZpZGUgYSBwcmVmZXJyZWQKCWRpc2NsYWltZXIgYW5kIGFkanVzdCBjb3B5cmlnaHQgZGF0ZXMvZXh0ZW50cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaDogUmVtb3Zpbmcgb2Jzb2xldGUgKGFuZAoJY29uZnVzaW5nKSBjb21tZW50LgoKCSogSmFtZmlsZS5pbjogTmV3IGZpbGUuCgoyMDAyLTA0LTExICBNYXhpbSBTaGVtYW5hcmV2ICA8bWNzZWVtYWdnQHlhaG9vLmNvbT4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X2hsaW5lKTogTWlub3Igb3B0aW1pemF0aW9uLgoKMjAwMi0wNC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZpeGVzIGZyb20gdGhlIHN0YWJsZSBicmFuY2g6CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyk6CglSZW1vdmVkLgoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTXTogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCwgc3JjL2Jhc2UvZnRjYWxjLmMKCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfTGVuZ3RoKTogQ2hhbmdlIGFsZ29yaXRobSB0byBtYXRjaAoJb3V0cHV0IG9mIEZyZWVUeXBlIDEuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19zY2FsZV93aWR0aHMpOiBGaXhlZCBhIHNtYWxsCglidWcgdGhhdCBjcmVhdGVkIHVuLWV2ZW4gc3RlbSB3aWR0aHMgd2hlbiBoaW50aW5nIFBvc3RzY3JpcHQgZm9udHMuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxcGFyc2UuYzogMTZiaXQgZml4ZXMuCgoyMDAyLTA0LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiAxNmJpdCBmaXhlcy4KCShUVF9Mb2FkX1NpbXBsZV9HbHlwaCk6IEltcHJvdmUgZGVidWcgbWVzc2FnZXMuCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiAxNmJpdCBmaXhlcy4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBEaXR0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzbmFtZXMuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgsCglzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL3BzYXV4L3Bzb2Jqcy5oLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuW2NoXSwKCXNyYy9zZm50L3R0cG9zdC5oOiBzL2luZGV4L2lkeC8uCgoyMDAyLTAzLTMxICBZYW8gWmhhbmcgIDx5YW96QHZpZGFyLm5pYWFhLm5paC5nb3Y+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX1NpemVfSW5pdCk6IEZpeCB0eXBvLgoKMjAwMi0wMy0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290bGF5b3V0L290bGNvbW1uLmMsIHNyYy9vdGxheW91dC9vdGxjb21tbi5oOiBzL2luZGV4L2lkeC8uCgkqIHNyYy9wc2F1eC90MWNtYXAuYzogRGl0dG8uCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChUVF9Hb3RvX1RhYmxlX0Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKFRUX0xvYWRlcl9Hb3RvVGFibGVGdW5jKTogVGhpcy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBGaXggZGVidWcKCW1lc3NhZ2VzLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc25hbWVzX2ludGVyZmFjZSkKCVshRlRfQ09ORklHX09QVElPTl9BRE9CRV9HTFlQSF9MSVNUXTogRml4IHR5cG8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3RhYmxlKTogMTZiaXQgZml4LgoJKiBzcmMvc2ZudC90dGNtYXAuYzogMTZiaXQgZml4ZXMgKDB4RkZGRiAtPiAweEZGRkZVKS4KCSogc3JjL3NmbnQvdHRjbWFwMC5jOiAxNmJpdCBmaXhlcy4KCShUVF9CdWlsZF9DTWFwcyk6IFNpbXBsaWZ5IGRlYnVnIG1lc3NhZ2VzLgoJKHR0X2NtYXAxMl9jaGFyX25leHQpOiBGaXggb2Zmc2V0LgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcywgVFRfTG9hZF9DTWFwKTogRml4IGRlYnVnCgltZXNzYWdlcy4KCShUVF9Mb2FkX09TMik6IDE2Yml0IGZpeC4KCjIwMDItMDMtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oOiBBZGRpbmcgY29tbWVudHMgdG8gc29tZSBvZgoJdGhlIFRUX0ZhY2VSZWMgZmllbGRzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcyk6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX3t1dGYxNix1Y3M0LG90aGVyfToKCU5ldyBmdW5jdGlvbnMuCgkodHRfZmFjZV9nZXRfbmFtZSk6IFVzZSB0aGVtIHRvIHByb3Blcmx5IGV4dHJhY3QgYW4gYXNjaWkgZm9udCBuYW1lLgoKMjAwMi0wMy0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oICh0MV9ibGVuZF9tYXgpOiBGaXggdHlwby4KCSogc3JjL2Jhc2UvZnRzdHJlYW0uYzogU2ltcGxpZnkgRlRfRVJST1IgY2FsbHMuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9nbHlwaF9uYW1lKTogRml4IGRlYnVnIG1lc3NhZ2UuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0RyaXZlcl9Jbml0LCBDRkZfRHJpdmVyX0RvbmUpCglbVFRfQ09ORklHX09QVElPTl9FWFRFTkRfRU5HSU5FXTogUmVtb3ZlZC4KCSogc3JjL2NmZi9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpCglbVFRfQ09ORklHX09QVElPTl9FWFRFTkRfRU5HSU5FXTogRGl0dG8uCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfSW5pdF9Ecml2ZXIsIFRUX0RvbmVfRHJpdmVyKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IERpdHRvLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90cnVldHlwZS90dG9ianMuYywKCXNyYy90cnVldHlwZS90dG9ianMuaDogUmVuYW1pbmcgZHJpdmVyIGZ1bmN0aW9ucyB0byB0aGUKCUZUXzxTdWJqZWN0Pl88QWN0aW9uPiBzY2hlbWU6CgoJICBUVF9Jbml0X0RyaXZlciA9PiBUVF9Ecml2ZXJfSW5pdAoJICBUVF9Eb25lX0RyaXZlciA9PiBUVF9Ecml2ZXJfRG9uZQoJICBUVF9Jbml0X0ZhY2UgICA9PiBUVF9GYWNlX0luaXQKCSAgVFRfRG9uZV9GYWNlICAgPT4gVFRfRmFjZV9Eb25lCgkgIFRUX0luaXRfU2l6ZSAgID0+IFRUX1NpemVfSW5pdAoJICBUVF9Eb25lX1NpemUgICA9PiBUVF9TaXplX0RvbmUKCSAgVFRfUmVzZXRfU2l6ZSAgPT4gVFRfU2l6ZV9SZXNldAoKMjAwMi0wMy0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oOiBSZW5hbWUgTE9DQUxfREVGIGFuZCBMT0NBTF9GVU5DIHRvCglGVF9MT0NBTCBhbmQgRlRfTE9DQUxfREVGLCByZXNwZWN0aXZlbHksIGFzIHdpdGggb3RoZXIgZnRjb25maWcuaAoJZmlsZXMuCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBBZGQgYXJndW1lbnQgdG8gRlRfTE9DQUwgYW5kCglGVF9MT0NBTF9ERUYuCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBzL0ZUX0Fzc2VydC9GVF9BU1NFUlQvLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFRlbXBvcmFyaWx5IGRlYWN0aXZhdGUgY3JlYXRpb24gb2YKCS4uLy4uL0phbWZpbGUuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCjIwMDItMDMtMjggIEtVU0FOTyBUYWtheXVraSAgPEFFNVQtS1NOQGFzYWhpLW5ldC5vci5qcD4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeCBzZXJpb3VzIHR5cG9zLgoKMjAwMi0wMy0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU0F1eF9TZXJ2aWNlUmVjKTogRml4Cgljb21waWxlciB3YXJuaW5ncy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZhY2VSZWMpOiBVc2UgYGNvbnN0JyBmb3IKCXNvbWUgbWVtYmVycy4KCSogc3JjL2Jhc2UvZnRhcGkuYyAoRlRfTmV3X01lbW9yeV9TdHJlYW0pOiBGaXggdHlwb3MuCgkqIHNyYy9wc2F1eC90MWNtYXAuYyAodDFfY21hcF9zdGRfaW5pdCwgdDFfY21hcF91bmljb2RlX2luaXQpOiBBZGQKCWNhc3QuCgkodDFfY21hcF97c3RhbmRhcmQsZXhwZXJ0LGN1c3RvbSx1bmljb2RlfV9jbGFzc19yZWMpOiBVc2UKCWBGVF9DQUxMQkFDS19UQUJMRV9ERUYnLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmg6IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBVc2UgYGZ0X2VuY29kaW5nX25vbmUnCglpbnN0ZWFkIG9mIHplcm8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogVXNlIGNhc3RzLgoKMjAwMi0wMy0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYzoKCUZpeGVkIGEgc21hbGwgYnVnIGluIHRoZSBGVF9DTWFwcyBzdXBwb3J0IGNvZGUuCgoyMDAyLTAzLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoTm9ybSk6IFJlcGxhY2VkIHdpdGguLi4KCShUVF9WZWNMZW4pOiBUaGlzLgoJKFRUX011bEZpeDE0LCBUVF9Eb3RGaXgxNCk6IE5ldyBmdW5jdGlvbnMuCgkoUHJvamVjdCwgRHVhbF9Qcm9qZWN0LCBGcmVlX1Byb2plY3QsIENvbXB1dGVfUG9pbnRfRGlzcGxhY2VtZW50LAoJSW5zX1NIUElYLCBJbnNfTUlBUCwgSW5zX01JUlApOiBVc2UgdGhlbS4KCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQgYWxsIGNvZGUuCgoyMDAyLTAzLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6CglWYXJpb3VzIGZpeGVzIHRvIG1ha2UgdGhlIEZUX0NNYXBzIHN1cHBvcnQgd29yayBjb3JyZWN0bHkgKG1vcmUKCXRlc3RzIGFyZSBzdGlsbCBuZWVkZWQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL3NmbnQvSmFtZmlsZSwKCXNyYy9zZm50L3J1bGVzLm1rLCBzcmMvc2ZudC9zZm50LmMsIHNyYy9zZm50L3Nmb2Jqcy5jLAoJc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3NmbnQvdHRjbWFwMC5oOiBVcGRhdGVkCgl0aGUgU0ZOVCBjaGFybWFwIHN1cHBvcnQgdG8gdXNlIEZUX0NNYXBzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycmRlZi5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oOiBJbmNsdWRlIGl0LiAgSXQgY29udGFpbnMgYWxsIGVycm9yCgljb2Rlcy4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfRVJST1JfREVGSU5JVElPTlNfSCk6IE5ldwoJbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIGFuZCBhIGxvdCBvZiBvdGhlciBmaWxlczoKCUNoYW5nZWQgdGhlIG5hbWVzIG9mIG1lbW9yeSBtYWNyb3MuICBFeGFtcGxlczoKCgkgIE1FTV9TZXQgICA9PiBGVF9NRU1fU0VUCgkgIE1FTV9Db3B5ICA9PiBGVF9NRU1fQ09QWQoJICBNRU1fTW92ZSAgPT4gRlRfTUVNX01PVkUKCgkgIEFMTE9DICAgICA9PiBGVF9BTExPQwoJICBGUkVFICAgICAgPT4gRlRfRlJFRQoJICBSRUFMTE9DICAgPSA+RlRfUkVBTExPQwoKCUZUX05FVyB3YXMgaW50cm9kdWNlZCB0byBhbGxvY2F0ZSBhIG5ldyBvYmplY3QgZnJvbSBhIF90eXBlZF8KCXBvaW50ZXIuCgoJTm90ZSB0aGF0IEFMTE9DX0FSUkFZIGFuZCBSRUFMTE9DX0FSUkFZIGhhdmUgYmVlbiByZXBsYWNlZCBieQoJRlRfTkVXX0FSUkFZIGFuZCBGVF9SRU5FV19BUlJBWSB3aGljaCB0YWtlIF90eXBlZF8gcG9pbnRlcgoJYXJndW1lbnRzLgoKCVRoaXMgcmVzdWx0cyBpbiBfbG90c18gb2Ygc291cmNlcyBiZWluZyBjaGFuZ2VkLCBidXQgbWFrZXMgdGhlIGNvZGUKCW1vcmUgZ2VuZXJpYyBhbmQgbGVzcyBlcnJvci1wcm9uZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCwgc3JjL2Jhc2UvZnRzdHJlYW0uYywKCXNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvcGNmL3BjZnJlYWQuYywgc3JjL3NmbnQvdHRjbWFwLmMsCglzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dHBvc3QuYywKCXNyYy9zZm50L3R0c2JpdC5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9ucyBvZiBzdHJlYW0gbWFjcm9zLgoJRXhhbXBsZXM6CgoJICBORVhUX0J5dGUgICAgID0+IEZUX05FWFRfQllURQoJICBORVhUX1Nob3J0ICAgID0+IEZUX05FWFRfU0hPUlQKCSAgTkVYVF9VU2hvcnRMRSA9PiBGVF9ORVhUX1VTSE9SVF9MRQoJICBSRUFEX1Nob3J0ICAgID0+IEZUX1JFQURfU0hPUlQKCSAgR0VUX0xvbmcgICAgICA9PiBGVF9HRVRfTE9ORwoJICBldGMuCgoJQWxzbyBpbnRyb2R1Y2VkIHRoZSBGVF9QRUVLX1hYWFggZnVuY3Rpb25zLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9CdWlsZF9Vbmljb2RlX0NoYXJtYXApOiBSZW1vdmVkIGNvbW1lbnRlZAoJb3V0IGZ1bmN0aW9uLgoJKGZpbmRfZW5jb2RpbmcpOiBSZW1vdmVkLgoJKENGRl9GYWNlX0luaXQpOiBSZW1vdmUgY2hhcm1hcCBzdXBwb3J0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMsCglUVF9DT05GSUdfQ01BUF9GT1JNQVR7MCwyLDQsNiw4LDEwLDEyfSk6IE5ldyBtYWNyb3MgdG8gZmluZS10dW5lCglzdXBwb3J0IG9mIGNtYXBzLgoKMjAwMi0wMy0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9wY2YvcGNmZHJpdmVyLmMsIHNyYy9wY2YvcGNmcmVhZC5jOiBVcGRhdGVkCgl0byBuZXcgRlRfQ01hcCBkZWZpbml0aW9ucy4KCgkqIHNyYy9wc2F1eC90MWNtYXAuaCwgc3JjL3BzYXV4L3QxY21hcC5jLCBzcmMvdHlwZTEvdDFjbWFwLmgsCglzcmMvdHlwZTEvdDFjbWFwLmM6IFVwZGF0aW5nIGFuZCBtb3ZpbmcgdGhlIFR5cGUgMSBGVF9DTWFwIHN1cHBvcnQKCWZyb20gYHNyYy90eXBlMScgdG8gYHNyYy9wc2F1eCcgc2luY2UgaXQgaXMgZ29pbmcgdG8gYmUgc2hhcmVkIGJ5Cgl0aGUgVHlwZSAxIGFuZCBDSUQgZm9udCBkcml2ZXJzLgoKCSogc3JjL3BzYXV4L0phbWZpbGUsIHNyYy9wc2F1eC9wc2F1eC5jLCBzcmMvcHNhdXgvcHNhdXhtb2QuYywKCXNyYy9wc2F1eC9ydWxlcy5taywgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiBBZGRlZCBzdXBwb3J0Cglmb3IgVHlwZSAxIEZUX0NNYXBzLgoKMjAwMi0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbG9hZHIuYyAoRlRfR2x5cGhMb2FkZXJfQ2hlY2tTdWJHbHlwaHMpOiBGaXhlZCBhCgltZW1vcnkgYWxsb2NhdGlvbiBidWcgdGhhdCB3YXMgZHVlIHRvIHVuLWNhcmVmdWwgcmVuYW1pbmcgb2YgdGhlCglGVF9TdWJHbHlwaCB0eXBlLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX2Rlc3Ryb3kpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0CgljYXVzZWQgdGhlIGxpYnJhcnkgdG8gY3Jhc2ggd2l0aCBFbGVjdHJpYyBGZW5jZSB3aGVuIG1lbW9yeQoJZGVidWdnaW5nIGlzIHVzZWQuCgoJKiBSZW5hbWluZyBzdHJlYW0gbWFjcm9zLiAgRXhhbXBsZXM6CgoJICBGSUxFX1NraXAgICAgPT4gRlRfU1RSRUFNX1NLSVAKCSAgRklMRV9SZWFkICAgID0+IEZUX1NUUkVBTV9SRUFECgkgIEFDQ0VTU19GcmFtZSA9PiBGVF9GUkFNRV9FTlRFUgoJICBGT1JHRVRfRnJhbWUgPT4gRlRfRlJBTUVfRVhJVAoJICBldGMuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCBtZW1vcnkgbGVhay4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IENoYW5naW5nIHRoZSBkZWZpbml0aW9uIG9mCglGVF9DTWFwX0NoYXJOZXh0RnVuYyBzbGlnaHRseS4KCgkqIHNyYy9jZmYvKi5jOiBVcGRhdGluZyBDRkYgdHlwZSBkZWZpbml0aW9ucy4KCjIwMDItMDMtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaCwgc3JjL2F1dG9oaW50L2FobW9kdWxlLmMsCglzcmMvYmFzZS9mdGFwaS5jLCBzcmMvYmFzZS9mdG9ianMuYzogVXBkYXRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbnMKCWZvciB0aGUgYXV0by1oaW50ZXIgbW9kdWxlLgoKCSAgRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2UgID0+IEZUX0F1dG9IaW50ZXJfU2VydmljZVJlYwoJICBGVF9BdXRvSGludGVyX0ludGVyZmFjZSogPT4gRlRfQXV0b0hpbnRlcl9TZXJ2aWNlCgkgIGV0Yy4KCgkgIEZUX0F1dG9IaW50ZXJfR2V0X0dsb2JhbF9GdW5jICA9PiBGVF9BdXRvSGludGVyX0dsb2JhbEdldEZ1bmMKCSAgRlRfQXV0b0hpbnRlcl9Eb25lX0dsb2JhbF9GdW5jID0+IEZUX0F1dG9IaW50ZXJfR2xvYmFsRG9uZUZ1bmMKCSAgZXRjLgoKCSogYWhsb2FkZXIuaCBbX1NUQU5EQUxPTkVfXTogUmVtb3ZlZCBhbGwgY29uZGl0aW9uYWwgY29kZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCwgc3JjL2NmZi8qLmM6IFVwZGF0aW5nIHRoZQoJdHlwZSBkZWZpbml0aW9ucyBvZiB0aGUgQ0ZGIGZvbnQgZHJpdmVyLgoKCSAgQ0ZGX0ZvbnQgID0+IENGRl9Gb250UmVjCgkgIENGRl9Gb250KiA9PiBDRkZfRm9udAoJICBldGMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmgsIHNyYy93aW5mb250cy8qLmM6IFVwZGF0aW5nCgl0eXBlIGRlZmluaXRpb25zIG9mIHRoZSBXaW5kb3dzIEZOVCBmb250IGRyaXZlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0YXBpLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZmRyaXZyLmgsCglzcmMvY2lkL2NpZHJpdmVyLmMsIHNyYy9jaWQvY2lkcml2ZXIuaCwgc3JjL3BjZi9wY2Zkcml2ZXIuYywKCXNyYy9wY2YvcGNmZHJpdmVyLmgsIHNyYy90cnVldHlwZS90dGRyaXZlci5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmgsIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuaCwKCXNyYy93aW5mb250cy93aW5mbnQuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5oOiBVcGRhdGluZyB0eXBlCglkZWZpbml0aW9ucyBmb3IgZm9udCBkcml2ZXJzLgoKCSAgRlREcml2ZXJfaW5pdEZhY2UgICAgICA9PiBGVF9GYWNlX0luaXRGdW5jCgkgIEZURHJpdmVyX2luaXRHbHlwaFNsb3QgPT4gRlRfU2xvdF9Jbml0RnVuYwoJICBldGMuCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0ZhY2VfSW5pdCk6IFJlbW92ZSBkZWFkIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdG9ianMuYzogVXBkYXRlZCBhCglmZXcgZmFjZSBtZXRob2QgZGVmaW5pdGlvbnM6CgoJICBGVF9QU05hbWVfUmVxdWVzdGVyICAgICA9PiBGVF9GYWNlX0dldFBvc3RzY3JpcHROYW1lRnVuYwoJICBGVF9HbHlwaF9OYW1lX1JlcXVlc3RlciA9PiBGVF9GYWNlX0dldEdseXBoTmFtZUZ1bmMKCSAgRlRfTmFtZV9JbmRleF9SZXF1ZXN0ZXIgPT4gRlRfRmFjZV9HZXRHbHlwaE5hbWVJbmRleEZ1bmMKCgkqIHNyYy9iYXNlL2Z0YXBpLmM6IE5ldyBmaWxlLiAgSXQgY29udGFpbnMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKCWZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwgc3JjL2NpZC9jaWRsb2FkLmMsCglzcmMvY2lkdG9rZW4uaCwgc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvcHNvYmpzLmgsCglzcmMvcHNhdXgvdDFkZWNvZGUuYywgc3RjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDF0b2tlbnMuaDoKCVVwZGF0ZWQgY29tbW9uIFBvc3RTY3JpcHQgdHlwZSBkZWZpbml0aW9ucy4KCVJlbmFtZWQgYWxsIGVudW1lcmF0aW9uIHZhbHVlcyBsaWtlIHRvIHVwcGVyY2FzZSB2YXJpYW50czoKCgkgIHQxX3Rva2VuX2FueSAgICAgID0+IFQxX1RPS0VOX1RZUEVfQU5ZCgkgIHQxX2ZpZWxkX2NpZF9pbmZvID0+IFQxX0ZJRUxEX0xPQ0FUSU9OX0NJRF9JTkZPCgkgIGV0Yy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNnbG9iYWxzLmg6IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oOgoJVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgsIHNyYy9iYXNlL2Z0bmFtZXMuYywKCXNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL3NmbnQvKi5jLCBzcmMvdHJ1ZXR5cGUvKi5jOiBVcGRhdGVkCglTRk5UL1RydWVUeXBlIHR5cGUgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaDoKCVVwZGF0aW5nIHR5cGUgZGVmaW50aWlvbnMgZm9yIHRoZSBnbHlwaCBsb2FkZXIuCgoyMDAyLTAzLTEzICBBbnRvaW5lIExlY2EgIDxhbnRvaW5lQG9yaW9sbmV0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IENoYW5nZWQgdGhlIGF1dG9tYXRpYwoJZGV0ZWN0aW9uIG9mIE1pY3Jvc29mdCBDIGNvbXBpbGVycyB0byBhdXRvbWF0aWNhbGx5IHN1cHBvcnQgNjQtYml0CglpbnRlZ2VycyBvbmx5IHNpbmNlIHJldmlzaW9uIDkuMDAgKGkuZS4gPj0gVmlzdWFsIEMrKyAyLjApLgoKMjAwMi0wMy0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnR1dGlsLmMgKEZUX1JlYWxsb2MpOiBVc2UgTUVNX1NldCBpbnN0ZWFkIG9mIG1lbXNldC4KCjIwMDItMDMtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9yZXNpemUsIGZ0X21lbV90YWJsZV9uZXcsCglmdF9tZW1fdGFibGVfc2V0LCBmdF9tZW1fZGVidWdfYWxsb2MsIGZ0X21lbV9kZWJ1Z19mcmVlLAoJZnRfbWVtX2RlYnVnX3JlYWxsb2MsIGZ0X21lbV9kZWJ1Z19kb25lLCBGVF9BbGxvY19EZWJ1ZywKCUZUX1JlYWxsb2NfRGVidWcsIEZUX0ZyZWVfRGVidWcpOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxGaXgpOiBEaXR0by4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBEaXR0by4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9TaXplX0dldF9HbG9iYWxfRnVuY3MsIENGRl9TaXplX0luaXQsCglDRkZfR2x5cGhTbG90X0luaXQpOiBEaXR0by4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9HbHlwaFNsb3RfSW5pdCwKCUNJRF9TaXplX0dldF9HbG9iYWxzX0Z1bmNzKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywgVDFfR2x5cGhTbG90X0luaXQpOgoJRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2htb2QuYyAocHNoaW50ZXJfaW50ZXJmYWNlKTogVXNlIGBzdGF0aWMgY29uc3QnLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfTmV4dF9DaGFyKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9CdWlsZGVyX0Z1bmNzKTogUmVuYW1lZAoJdG8uLi4KCShUMV9CdWlsZGVyX0Z1bmNzUmVjKTogVGhpcy4KCShUMV9CdWlsZGVyX0Z1bmNzKTogTmV3IHR5cGVkZWYuCgkoUFNBdXhfSW50ZXJmYWNlKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYyAodDFfYnVpbGRlcl9mdW5jcyksIHNyYy9wc2F1eC9wc29ianMuaAoJKHQxX2J1aWxkZXJfZnVuY3MpOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVfQWxpZ24pOiBSZXBsYWNlZCB3aXRoIC4uLgoJKFBTSF9CTFVFX0FMSUdOX3tOT05FLFRPUCxCT1R9KTogTmV3IGRlZmluZXMuCgkoUFNIX0FsaWdubWVudFJlYyk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEdFVF9DaGFyLCBHRVRfQnl0ZSk6IEZpeAoJdHlwby4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oIChGVF9TdWJHbHlwaCk6IERpdHRvLgoJKiBzcmMvYmFzZS9mdHN0cmVhbSAoRlRfR2V0X0NoYXIpOiBSZW5hbWUgdG8uLi4KCShGVF9TdHJlYW1fR2V0X0NoYXIpOiBUaGlzLgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogcy9pbmRleC9pZHgvIC0tIGBpbmRleCcgaXMKCWEgYnVpbHQtaW4gZnVuY3Rpb24gaW4gZ2NjLCBjYXVzaW5nIHdhcm5pbmcgbWVzc2FnZXMgd2l0aCBnY2MgMy4wLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQpOiBEaXR0by4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKGFoX2hpbnRlcl9jb21wdXRlX2JsdWVzKTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJZnRjX2ZhbWlseV90YWJsZV9mcmVlLCBGVENfTWFuYWdlcl9Eb25lLCBGVENfTWFuYWdlcl9SZWdpc3Rlcl9DYWNoZSk6CglEaXR0by4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9uZXdfaW5kZXgsIGNmZl9kb25lX2luZGV4LAoJY2ZmX2V4cGxpY2l0X2luZGV4LCBDRkZfQWNjZXNzX0VsZW1lbnQsIENGRl9Gb3JnZXRfRWxlbWVudCwKCUNGRl9HZXRfTmFtZSwgQ0ZGX0dldF9TdHJpbmcsIENGRl9Mb2FkX1N1YkZvbnQsIENGRl9Mb2FkX0ZvbnQsCglDRkZfRG9uZV9Gb250KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfQWRkLCBQU19QYXJzZXJfTG9hZEZpZWxkKTogRGl0dG8uCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfbWFza190ZXN0X2JpdCwgcHNfbWFza19jbGVhcl9iaXQsCglwc19tYXNrX3NldF9iaXQsIHBzX2RpbWVuc2lvbl9hZGRfdDFzdGVtLCBwc19oaW50c190MXN0ZW0zLAoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX3JlY29yZCwKCXBzaDFfaGludF90YWJsZV9yZWNvcmRfbWFzaywgcHNoMV9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9yZWNvcmQsCglwc2gyX2hpbnRfdGFibGVfcmVjb3JkX21hc2ssIHBzaDJfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy9zZm50L3R0cG9zdC5jIChMb2FkX0Zvcm1hdF8yMCwgTG9hZF9Gb3JtYXRfMjUsCglUVF9HZXRfUFNfTmFtZSk6IERpdHRvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9HZXRfTWV0cmljcywgR2V0X0hNZXRyaWNzLAoJbG9hZF90cnVldHlwZV9nbHlwaCk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBUMV9PcGVuX0ZhY2UpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX0dldF9LZXJuaW5nKTogRGl0dG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoZnRjX2ZhbWlseV90YWJsZV9mcmVlKTogRGl0dG8uCgoyMDAyLTAzLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCksIHNyYy9jaWQvY2lkb2Jqcy5jCgkoQ0lEX0ZhY2VfSW5pdCk6IEZpeGVkIGFub3RoZXIgYnVnIHJlbGF0ZWQgdG8gdGhlCglhc2NlbmRlci9kZXNjZW5kZXIvdGV4dCBoZWlnaHQgb2YgUG9zdHNjcmlwdCBmb250cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gyX3ByaW50X3pvbmUpOiBUaGlzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMV9wcmludF96b25lKTogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCXNyYy9iYXNlL2Z0b2Jqcy5jOiBBZGRpbmcgdGhlIG5ldyBGVF9MaWJyYXJ5X1ZlcnNpb24gQVBJIHRvIHJldHVybgoJdGhlIGxpYnJhcnkncyBjdXJyZW50IHZlcnNpb24gaW4gZHluYW1pYyBsaW5rcy4KCSogc3JjL2Jhc2UvZnRpbml0LmMgKEZUX0luaXRfRnJlZVR5cGUpOiBVcGRhdGVkLgoKMjAwMi0wMy0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0RpbWVuc2lvblJlYyk6IHMvc3RkL3N0ZHcvLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsX3NjYWxlX3dpZHRocywKCXBzaF9kaW1lbnNpb25fc25hcF93aWR0aCwgcHNoX2dsb2JhbHNfZGVzdHJveSwgcHNoX2dsb2JhbHNfbmV3KToKCURpdHRvLgoKMjAwMi0wMy0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpLCBzcmMvY2ZmL2NmZm9ianMuYwoJKENGRl9GYWNlX0luaXQpLCBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0ZhY2VfSW5pdCk6IFJlbW92aW5nIHRoZSBidWcKCXRoYXQgcmV0dXJuZWQgZ2xvYmFsIEJCb3ggdmFsdWVzIGluIDE2LjE2IGZpeGVkIGZvcm1hdCAoaW5zdGVhZCBvZgoJaW50ZWdlciBmb250IHVuaXRzKS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoY2lkX2dldF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCBhIGJ1ZyB0aGF0CgljYXVzZWQgdGhlIENJRCBkcml2ZXIgdG8gcmV0dXJuIFBvc3RzY3JpcHQgZm9udCBuYW1lcyB3aXRoIGEgbGVhZGluZwoJc2xhc2ggKGAvJykgYXMgaW4gYC9NT0VLYWktUmVndWxhcicuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyksIHNyYy9zZm50L3Nmb2Jqcy5jIChHZXRfTmFtZSksCglzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCB0aGUgbG9hZGVyIHNvCgl0aGF0IGl0IGFjY2VwdHMgYnJva2VuIGZvbnRzIGxpa2UgYGZveGp1bXAudHRmJywgd2hpY2ggbWFkZSBGcmVlVHlwZQoJY3Jhc2ggd2hlbiB0cnlpbmcgdG8gbG9hZCB0aGVtLgoKCUFsc28gaW1wcm92ZWQgdGhlIG5hbWUgdGFibGUgcGFyc2VyIHRvIGJlIGFibGUgdG8gbG9hZAoJV2luZG93cy1lbmNvZGVkIGVudHJpZXMgYmVmb3JlIE1hY2ludG9zaCBvciBVbmljb2RlIG9uZXMsIHNpbmNlIGl0CglzZWVtcyBzb21lIGZvbnRzIGRvbid0IGhhdmUgcmVsaWFibGUgdmFsdWVzIGhlcmUgYW55d2F5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IEFkZCB0eXBlZGVmIGZvcgoJYFBTTmFtZXNfU2VydmljZScuCgoyMDAyLTAzLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00LCBidWlsZHMvdW5peC9sdG1haW4uc2g6IFVwZGF0ZSB0byBsaWJ0b29sCgkxLjQuMi4KCUFwcGx5IGEgc21hbGwgcGF0Y2ggZm9yIEFJWCB0byBtYWtlIHNoYXJlZCBsaWJyYXJpZXMgd29yayAodGhpcwoJcGF0Y2ggaXMgYWxyZWFkeSBpbiB0aGUgQ1ZTIHZlcnNpb24gb2YgbGlidG9vbCkuCgoJKiBidWlsZHMvdW5peC9jb25maWcuc3ViLCBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3M6IFVwZGF0ZWQgdG8KCXJlY2VudCB2ZXJzaW9ucy4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogRml4IHR5cG8KCShBQ19DT05GSUdfRklMRS0+QUNfQ09ORklHX0ZJTEVTKS4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAyLTAyLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y29uZmlnLmg6IENoYW5nZWQgYEZUX0xPQ0FMIHh4eHgnIHRvCglgRlRfTE9DQUwoIHh4eHggKScgZXZlcnl3aGVyZSBpbiB0aGUgc291cmNlLiAgVGhlIHNhbWUgZ29lcyBmb3IKCWBGVF9MT0NBTF9ERUYgeHh4eCcgd2hpY2ggaXMgdHJhbnNsYXRlZCB0byBgRlRfTE9DQUxfREVGKCB4eHh4eCApJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfTUlOT1IsIEZSRUVUWVBFX1BBVENIKToKCUNoYW5naW5nIHZlcnNpb24gdG8gMi4xLjAgdG8gaW5kaWNhdGUgYW4gdW5zdGFibGUgYnJhbmNoLgoJQWRkZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiBGVF9HZXRfRmlyc3RfQ2hhciBhbmQgRlRfR2V0X05leHRfQ2hhci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnQgRlRfR2V0X0ZpcnN0X0NoYXIgYW5kCglGVF9HZXRfTmV4dF9DaGFyLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oOiBSZW5hbWluZyBzdHJ1Y3R1cmUgdHlwZXMuICBUaGlzCgoJICB0eXBlZGVmICBUMV9TdHJ1Y3RfCgkgIHsKCSAgfSBUMV9TdHJ1Y3Q7CgoJYmVjb21lcwoKCSAgdHlwZWRlZiAgUFNfU3RydWN0UmVjXwoJICB7CgkgIH0gUFNfU3RydWN0UmVjLCAqUFNfU3RydWN0OwoKCSAgdHlwZWRlZiBQU19TdHJ1Y3RSZWMgIFQxX1N0cnVjdDsgIC8qIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5ICovCgoJSGVuY2UsIHdlIGluY3JlYXNlIHRoZSBjb2hlcmVuY3kgb2YgdGhlIHNvdXJjZSBjb2RlIGJ5IGVmZmVjdGl2ZWx5Cgl1c2luZyB0aGUgYFJlYycgcHJlZml4IGZvciBzdHJ1Y3R1cmUgdHlwZXMuCgoyMDAyLTAyLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IFNpbXBsaWZ5aW5nIGFuZCBzZWN1cmluZyB0aGUKCW5hbWVzIHRhYmxlIGxvYWRlci4gIEludmFsaWQgaW5kaXZpZHVhbCBuYW1lIGVudHJpZXMgYXJlIG5vdyBoYW5kbGVkCgljb3JyZWN0bHkuICBUaGlzIGFsbG93cyB0aGUgbG9hZGluZyBvZiB2ZXJ5IGJ1Z2d5IGZvbnRzIGxpa2UKCWBmb3hqdW1wLnR0Zicgd2l0aG91dCBhbGxvY2F0aW5nIHRvbnMgb2YgbWVtb3J5IGFuZCBjYXVzaW5nIGNyYXNoZXMuCgoJKiBzcmMvb3RsYXlvdXQvb3RsY29tbW9uLmgsIHNyYy9vdGxheW91dC9vdGxjb21tb24uYzogQWRkaW5nIChzdGlsbAoJZXhwZXJpbWVudGFsKSBjb2RlIGZvciBPcGVuVHlwZSBMYXlvdXQgdGFibGVzIHZhbGlkYXRpb24gYW5kCglwYXJzaW5nLgoKCSogc3JjL3R5cGUxL3QxY21hcC5oLCBzcmMvdHlwZTEvdDFjbWFwLmM6IEFkZGluZyAoc3RpbGwKCWV4cGVyaW1lbnRhbCkgY29kZSBmb3IgVHlwZSAxIGNoYXJtYXAgcHJvY2Vzc2luZy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogTmV3IGZpbGUuICBJdCBjb250YWlucyBhIG5ldywgc3RpbGwKCWV4cGVyaW1lbnRhbCBTRk5UIGNoYXJtYXAgcHJvY2Vzc2luZyBzdXBwb3J0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogQWRkaW5nIHZhbGlkYXRpb24gc3VwcG9ydCBhcwoJd2VsbCBhcyBpbnRlcm5hbCBjaGFybWFwIG9iamVjdCBkZWZpbml0aW9ucyAoRlRfQ01hcCAhPSBGVF9DaGFyTWFwKS4KCjIwMDItMDItMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJlbmFtaW5nIHN0cmVhbSBmdW5jdGlvbnMgdG8gdGhlIEZUXzxTdWJqZWN0Pl88QWN0aW9uPiBzY2hlbWU6CgoJICBGVF9TZWVrX1N0cmVhbSAgICA9PiBGVF9TdHJlYW1fU2VlawoJICBGVF9Ta2lwX1N0cmVhbSAgICA9PiBGVF9TdHJlYW1fU2tpcAoJICBGVF9SZWFkX1N0cmVhbSAgICA9PiBGVF9TdHJlYW1fUmVhZAoJICBGVF9SZWFkX1N0cmVhbV9BdCA9PiBGVF9TdHJlYW1fUmVhZF9BdAoJICBGVF9BY2Nlc3NfRnJhbWUgICA9PiBGVF9TdHJlYW1fRW50ZXJfRnJhbWUKCSAgRlRfRm9yZ2V0X0ZyYW1lICAgPT4gRlRfU3RyZWFtX0V4aXRfRnJhbWUKCSAgRlRfRXh0cmFjdF9GcmFtZSAgPT4gRlRfU3RyZWFtX0V4dHJhY3RfRnJhbWUKCSAgRlRfUmVsZWFzZV9GcmFtZSAgPT4gRlRfU3RyZWFtX1JlbGVhc2VfRnJhbWUKCSAgRlRfR2V0X1hYWFggICAgICAgPT4gRlRfU3RyZWFtX0dldF9YWFhYCgkgIEZUX1JlYWRfWFhYWCAgICAgID0+IEZUX1N0cmVhbV9SZWFkX1hYWFgKCgkgIEZUX05ld19TdHJlYW0oIGZpbGVuYW1lLCBzdHJlYW0gKSA9PgoJICAgIEZUX1N0cmVhbV9PcGVuKCBzdHJlYW0sIGZpbGVuYW1lICkKCgkgICAgKFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSB0aGUgRlRfU3RyZWFtIHN0cnVjdHVyZSwgaXQgc2ltcGx5CgkgICAgaW5pdGlhbGl6ZXMgaXQgZm9yIHJlYWRpbmcuKQoKCSAgRlRfTmV3X01lbW9yeV9TdHJlYW0oIGxpYnJhcnksIEZUX0J5dGUqICBiYXNlLCBzaXplLCBzdHJlYW0gKSA9PgoJICAgIEZUX1N0cmVhbV9PcGVuX01lbW9yeSggc3RyZWFtLCBjb25zdCBGVF9CeXRlKiBiYXNlLCBzaXplICkKCgkgIEZUX0RvbmVfU3RyZWFtICA9PiBGVF9TdHJlYW1fQ2xvc2UKCSAgRlRfU3RyZWFtX0lPICAgID0+IEZUX1N0cmVhbV9JT0Z1bmMKCSAgRlRfU3RyZWFtX0Nsb3NlID0+IEZUX1N0cmVhbV9DbG9zZUZ1bmMKCgkgIGZ0X2Nsb3NlX3N0cmVhbSA9PiBmdF9hbnNpX3N0cmVhbV9jbG9zZSAoaW4gYmFzZS9mdHN5c3RlbS5jIG9ubHkpCgkgIGZ0X2lvX3N0cmVhbSAgICA9PiBmdF9hbnNpX3N0cmVhbV9pbyAgICAoaW4gYmFzZS9mdHN5c3RlbS5jIG9ubHkpCgoJKiBzcmMvYmFzZS9mdHV0aWwuYzogTmV3IGZpbGUuICBDb250YWlucyBhbGwgbWVtb3J5IGFuZCBsaXN0CgltYW5hZ2VtZW50IGNvZGUgKHByZXZpb3VzbHkgaW4gYGZ0b2Jqcy5jJyBhbmQgYGZ0bGlzdC5jJywKCXJlc3BlY3RpdmVseSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBNb3ZpbmcgYWxsIGNvZGUgcmVsYXRlZCB0bwoJZ2x5cGggbG9hZGVycyB0byAuLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oOiBUaGlzIG5ldyBmaWxlLgoJYEZUX0dseXBoTG9hZGVyJyBpcyBub3cgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUKCWBGVF9HbHlwaExvYWRlclJlYycuCgkoZnRfZ2x5cGhfb3duX2JpdG1hcCk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfR0xZUEhfT1dOX0JJVE1BUCk6IFRoaXMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBNb3ZpbmcgYWxsIGNvZGUgcmVsYXRlZCB0byBnbHlwaCBsb2FkZXJzCgl0byAuLi4KCSogc3JjL2Jhc2UvZnRnbG9hZHIuYzogVGhpcyBuZXcgZmlsZS4KCjIwMDItMDItMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IFJlbW92ZSBjb21tYSBpbgoJZW51bSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNb2RpZmllZCB0aGUgZGVidWcgc3ViLXN5c3RlbSBpbml0aWFsaXphdGlvbi4gIFRyYWNlIGxldmVscyBjYW4gbm93CgliZSBzcGVjaWZpZWQgd2l0aGluIHRoZSBgRlQyX0RFQlVHJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIFNlZSB0aGUKCWNvbW1lbnRzIHdpdGhpbiBgZnRkZWJ1Zy5jJyBmb3IgbW9yZSBkZXRhaWxzLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jOiAoRlRfU2V0VHJhY2VMZXZlbCk6IFJlbW92ZWQuCgkoZnRfZGVidWdfaW5pdCk6IE5ldyBmdW5jdGlvbi4KCShmdF9kZWJ1Z19kdW1teSk6IFJlbW92ZWQuCglVcGRhdGVkIHRvIGNoYW5nZXMgaW4gZnRkZWJ1Zy5oCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQWx3YXlzIGRlZmluZQoJRlRfREVCVUdfTEVWRUxfRVJST1IgaWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UgaXMgZGVmaW5lZC4KCShGVF9Bc3NlcnQpOiBSZW5hbWVkIHRvIC4uLgoJKEZUX0FTU0VSVCk6IFRoaXMuCglTb21lIHN0dWZmIGZyb20gZnRkZWJ1Zy5oIGhhcyBiZWVuIG1vdmVkIHRvIC4uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IE5ldyBmaWxlLCB0byBkZWZpbmUgdGhlIHRyYWNlCglsZXZlbHMgdXNlZCBmb3IgZGVidWdnaW5nLiAgSXQgaXMgdXNlZCBib3RoIHRvIGRlZmluZSBlbnVtcyBhbmQKCXRvZ2dsZSBuYW1lcyBmb3IgRlQyX0RFQlVHLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0c3RyZWFtLmM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZXh0ZW5kLmgsIHNyYy9iYXNlL2Z0ZXh0ZW5kLmM6CglSZW1vdmVkLiAgQm90aCBmaWxlcyBhcmUgbm93IGNvbXBsZXRlbHkgb2Jzb2xldGUuCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oOiBBZGRpbmcgYCN1bmRlZiBGVF9FUlJfQ0FUJyBhbmQKCWAjdW5kZWYgRlRfRVJSX1hDQVQnIHRvIGF2b2lkIHdhcm5pbmdzIHdpdGggY2VydGFpbiBjb21waWxlcnMgKGxpa2UKCUxDQykuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMl9wcmludF96b25lKTogVGhpcyB0byBhdm9pZCBlcnJvcnMgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIGRlYnVnCglsaWJyYXJ5LgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKEZUX0NPTVBPTkVOVCk6IENoYW5nZSBkZWZpbml0aW9uIHRvIGFzCglgdHJhY2Vfc21vb3RoJy4KCjIwMDItMDItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRTogQWRkaW5nIGBkZXZlbEBmcmVldHlwZS5vcmcnIGFkZHJlc3MgZm9yIGJ1ZyByZXBvcnRzLgoKMjAwMi0wMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoY2hlY2spOiBOZXcgZHVtbXkgdGFyZ2V0LgoJKC5QSE9OWSk6IEFkZCBpdC4KCjIwMDItMDItMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRlRfQ0ZMQUdTKTogVXNlICQoSU5DTFVERV9GTEFHUykgZmlyc3QuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2NhY2hlX3Jlc2l6ZSk6IE1hcmsgYGVycm9yJyBhcyB1bnVzZWQKCXRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfR2V0X1N0cmluZyk6IERpdHRvLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX1N0ckNvcHkpOiBEaXR0by4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9Eb25lKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2Zfc2Vla190b190YWJsZV90eXBlKTogRGl0dG8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IERpdHRvLgoJKHBjZl9nZXRfYml0bWFwcyk6IFRoZSBzYW1lIGZvciBgc2l6ZWJpdG1hcHMnLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2RlX1BhcnNlX0NoYXJzdHJpbmdzKTogVGhlIHNhbWUgZm9yCglgb3JpZ195Jy4KCSh0MW9wZXJhdG9yX3NlYWMpOiBDb21tZW50IG91dCBtb3JlIGRlYWQgY29kZS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IEFkZCBgREVCVUdfSElOVEVSJwoJY29uZGl0aW9uYWwuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoLAoJbG9hZF90cnVldHlwZV9nbHlwaCk6IEFkZCBgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUicKCWNvbmRpdGlvbmFsLgoKMjAwMi0wMi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGVzLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBVc2UgRlRfVU5VU0VEIGluc3RlYWQKCW9mIFVOVVNFRC4KCSogc3JjL2F1dG9oaW50L2FobW9kdWxlLmMgKGZ0X2F1dG9oaW50ZXJfcmVzZXQpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19tYXNrX3RhYmxlX21lcmdlKTogRml4IHR5cG8gaW4gdmFyaWFibGUKCXN3YXBwaW5nIGNvZGUuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlX0FsaWduKTogQWRkIFBTSF9CTFVFX0FMSUdOX05PTkUuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zbmFwX3N0ZW0pOiBVc2UgaXQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfb3B0aW1pemUpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF9hbGlnbik6IERpdHRvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChVTlVTRUQpOiBSZW1vdmVkLgoKMjAwMi0wMi0xMCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+CgoJQWRkIHN1cHBvcnQgZm9yIElTT0xhdGluMSBQUyBlbmNvZGluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoZnRfZW5jb2RpbmdfbGF0aW5fMSk6IE5ldyB0YWcKCShgbGF0MScpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRW5jb2RpbmdfVHlwZSk6IEFkZAoJYHQxX2VuY29kaW5nX2lzb2xhdGluMScuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IEhhbmRsZQoJZnRfZW5jb2RpbmdfbGF0aW5fMS4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IEhhbmRsZSBgSVNPTGF0aW4xRW5jb2RpbmcnLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEhhbmRsZSBgdDFfZW5jb2RpbmdfaXNvbGF0aW4xJy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNvcHlyaWdodCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IGJ5CkRhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KClRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKZnVsbHkuCgoKTG9jYWwgVmFyaWFibGVzOgp2ZXJzaW9uLWNvbnRyb2w6IG5ldmVyCmNvZGluZzogbGF0aW4tMQpFbmQ6Cg==