MjAwMC0xMi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi8qLmg6IENoYW5nZWQgYm9keSBpbmNsdXNpb24gbWFjcm8gbmFtZXMgdG8gc3RhcnQgYW5kIGVuZCB3aXRoCglgX18nICh0aG9zZSB3aGljaCBoYXZlbid0IGNvbnZlcnRlZCB5ZXQpLiAgRml4ZWQgbWlub3IgY29udmVyc2lvbgoJaXNzdWVzLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCjIwMDAtMTItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiAqLyouW2NoXTogQ2hhbmdlZCBzb3VyY2UgZmlsZXMgdG8gYWRoZXJlIHRvIHRoZSBuZXcKCWhlYWRlciBpbmNsdXNpb24gc2NoZW1lLiAgTm90IGNvbXBsZXRlbHkgdGVzdGVkIGJ1dCB3b3JrcyBmb3Igbm93CgloZXJlLgoKCSogc3JjL2NmZi90MmRyaXZlci5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJkcml2ZXIuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QybG9hZC5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJvYmpzLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZvYmpzLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnBhcnNlLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZwYXJzZS5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnBhcnNlLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZwYXJzZS5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnRva2Vucy5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmdG9rZW4uaDogTmV3IGZpbGUuCgoJKiBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMC0xMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVfRG9uZSk6IEZpeGVkIG1lbW9yeSBsZWFrLgoKMjAwMC0xMi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21vZHVsZS5tazogUmVwbGFjZWQgYHh4eCAjJyB3aXRoIGB4eHgkKHNwYWNlKS4KCSogYnVpbGRzL29zMi9kZXRla3QubWssIGJ1aWxkcy93aW4zMi9kZXRla3QubWs6IE1vdmVkIGNvbW1lbnQgdG8KCWF2b2lkIHRyYWlsaW5nIHNwYWNlcyBpbiB2YXJpYWJsZS4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rOiBVc2UgJChEKSBpbnN0ZWFkIG9mICREIHRvIG1ha2Ugc3RhdGVtZW50IG1vcmUKCXJlYWRhYmxlLgoKCSogZG9jcy9kb2NtYWtlci5weTogRm9ybWF0dGluZy4KCjIwMDAtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYzogRml4ZWQgYSBicm9rZW4gaW5jbHVzaW9uIG9mIGNvbXBvbmVudAoJaGVhZGVyIGZpbGVzIChhbiBGVF9GTEFUX0NPTVBJTEUgdGVzdCB3YXMgbWlzc2luZykuCgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoRlRDX01hbmFnZXJfRG9uZSk6IEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkCglhbiBvY2Nhc2lvbmFsIGNyYXNoIHdoZW4gdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgKGR1ZSB0byBhIGRhbmdsaW5nCglwb2ludGVyKS4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX0RvbmVfTWVtb3J5KTogRml4ZWQgYW4gb2J2aW91cyBidWc6CglUaGUgQU5TSSAiZnJlZSgpIiBmdW5jdGlvbiB3YXMgY2FsbGVkIGluc3RlYWQgb2YgIm1lbW9yeS0+ZnJlZSgpIi4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIHNlY3Rpb24gZmlsdGVyaW5nLCBtdWx0aS1wYWdlIGdlbmVyYXRpb24KCShpbmRleCBwYWdlIGdlbmVyYXRpb24gaXMgc3RpbGwgbWlzc2luZyB0aG91Z2gpLgoKMjAwMC0xMi0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWssIGJ1aWxkcy91bml4L2Z0MnVuaXguaDogVGhlIGZpbGUgImZ0MnVuaXguaCIKCWlzIG5vdyBpbnN0YWxsZWQgYXMgPGZ0MmJ1aWxkLmg+IGZvciBVbml4IHN5c3RlbXMuICBOb3RlIHRoYXQgd2UKCXN0aWxsIHVzZSB0aGUgImZyZWV0eXBlMi9mcmVldHlwZSIgaW5zdGFsbGF0aW9uIHBhdGggZm9yIG5vdy4KCgkqICovKi5bY2hdOiBOb3cgdXNpbmcgPGZ0MmJ1aWxkLmg+IGFzIHRoZSBkZWZhdWx0IGJ1aWxkIGFuZCBzZXR1cAoJY29uZmlndXJhdGlvbiBmaWxlIGluIGFsbCBwdWJsaWMgaGVhZGVycy4gIEludGVybmFsIHNvdXJjZSBmaWxlcwoJc3RpbGwgbmVlZCBzb21lIGNoYW5nZXMgdGhvdWdoLgoKCSogYnVpbGRzL2RldmVsL2Z0MmJ1aWxkLmgsIGJ1aWxkcy9kZXZlbC9mdG9wdGlvbi5oOiBDcmVhdGVkIGEgbmV3CglkaXJlY3RvcnkgdG8gaG9sZCBhbGwgZGV2ZWxvcG1lbnQgb3B0aW9ucyBmb3IgYm90aCB0aGUgVW5peCBhbmQKCVdpbjMyIGRldmVsb3BlciBidWlsZHMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvdzMyLWRldi5tazogQ2hhbmdlZCB0aGUgZGV2ZWxvcGVyIGJ1aWxkIHRhcmdldHMgdG8KCSJkZXZlbC1nY2MiIGFuZCAiZGV2ZWwtYmNjIiBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGRldmVsb3Agd2l0aCB0aGUKCUJvcmxhbmQgQysrIGNvbXBpbGVyLgoKMjAwMC0xMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIFZlcnNpb24gMi4wLjEgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sIGJ1aWxkcy91bml4L2NvbmZpZ3VyZSwKCWJ1aWxkcy9jeWd3aW4vY29uZmlndXJlLmluLCBidWlsZHMvY3lnd2luL2NvbmZpZ3VyZTogU2V0dGluZwoJInZlcnNpb25faW5mbyIgdG8gNjoxOjAgZm9yIHRoZSAyLjAuMSByZWxlYXNlLgoKCSogQ0hBTkdFUzogQWRkZWQgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgYmV0d2VlbiAyLjAuMSBhbmQgMi4wLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnRjb25maWcuaW46IENoYW5nZXMKCXRvIGFsbG93IGNvbXBpbGF0aW9uIHVuZGVyIFVuaXggd2l0aCB0aGUgVW5peC1zcGVjaWZpYyBjb25maWcKCWZpbGVzLgoKMjAwMC0xMi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogUmV2aXNlZC4KCSogYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssIGJ1aWxkcy9jb21waWxlci92aXN1YWxhZ2UubWssCglidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjYy5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjZC5tazogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoyMDAwLTExLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKC5QSE9OWSk6IEFkZGluZyBgZGlzdGNsZWFuJy4KCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rICguUEhPTlkpOiBBZGRpbmcgYGRldmVsJywgYHVuaXgnLCBgbGNjJywKCWBzZXR1cCcuCgoyMDAwLTExLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub2dyPgoKCSogSU5TVEFMTDogU2xpZ2h0bHkgdXBkYXRlZCB0aGUgcXVpY2sgc3RhcnRlciBkb2N1bWVudGF0aW9uIHRvCglpbmNsdWRlIElERSBjb21waWxhdGlvbiwgcHJldmVudCBhZ2FpbnN0IEJTRCBNYWtlLCBhbmQgc3BlY2lmeSAibWFrZQoJc2V0dXAiIGluc3RlYWQgb2YgYSBzaW5nbGUgIm1ha2UiIGZvciBidWlsZCBjb25maWd1cmF0aW9uLgoKCSogaW5jbHVkZS9jb25maWcvZnRidWlsZC5oLCBpbmNsdWRlL2ludGVybmFsL2ludGVybmFsLmg6IEFkZGVkIG5ldwoJY29uZmlndXJhdGlvbiBmaWxlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24gb2YgYWxsIHB1YmxpYywKCWNvbmZpZ3VyYXRpb24sIGFuZCBpbnRlcm5hbCBoZWFkZXIgZmlsZXMgZm9yIEZyZWVUeXBlIDIuICBNb2RpZmllZAoJYWxsIGhlYWRlcnMgdW5kZXIgImluY2x1ZGUvZnJlZXR5cGUiIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuICBOb3RlCgl0aGF0IHdlIHN0aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBsaWJyYXJ5IHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzCgl0aG91Z2guCgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBuZXcgZmlsZXMgdG8gc3VwcG9ydCBjb21waWxhdGlvbiB3aXRoCgl0aGUgZnJlZSBCb3JsYW5kIEMrKyBjb21tYW5kLWxpbmUgY29tcGlsZXIuICBNb2RpZmllZCB0aGUgZGV0ZWN0aW9uCglydWxlcyB0byByZWNvZ25pemUgdGhlIG5ldyAiYmNjMzIiIHRhcmdldCBpbiAibWFrZSBzZXR1cCBiY2MzMiIuCgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRwb3N0LmMsIHNyYy9zZm50L3R0c2JpdC5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLAoJc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IEZpeGVkIGEgZmV3IGNvbXBhcmlzb25zIHRoYXQgQm9ybGFuZCBDKysKCWRpZG4ndCByZWFsbHkgbGlrZS4gIEJhc2ljYWxseSwgdGhpcyBjb21waWxlciBjb21wbGFpbnMgd2hlbiBGVF9VSW50CglpcyBjb21wYXJlZCB0byBGVF9VU2hvcnQgKGFwcGFyZW50bHksIGl0IHByb21vdGVzIGBVU2hvcnQnIHRvIGBJbnQnCglpbiB0aGVzZSBjYXNlcykuCgoyMDAwLTExLTMwICBUb20gS2Fjdmluc2t5ICA8dGprQGFtcy5vcmc+CgoJKiB0Mm9ianMuYyAoVDJfSW5pdF9GYWNlKTogQWRkZWQgY2FsY3VsYXRpb24gb2YgYGZhY2UtPmhlaWdodCcgZm9yCglwdXJlIENGRiBmb250cy4KCgkqIHQxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBGaXhlZCBjb21wdXRhdGlvbiBvZiBgZmFjZS0+aGVpZ2h0Jy4KCjIwMDAtMTEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9Db25pY19DaGVjayk6IEZpeGVkIGEgcmVhbGx5IHN0dXBpZAoJYnVnIGluIHRoZSBmb3JtdWxhIHVzZWQgdG8gY29tcHV0ZSB0aGUgY29uaWMgQul6aWVyIGV4dHJlbWEKCW9mIG5vbi1tb25vdG9ub3VzIGFyY3MuCgoyMDAwLTExLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfU3FydEZpeGVkKSwgc3JjL2Jhc2UvZnRvYmpzLmMKCShGVF9TZXRfUmVuZGVyZXIpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApLAoJc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUsIEZUQ19NYW5hZ2VyX1Jlc2V0LAoJRlRDX01hbmFnZXJfTG9va3VwX0ZhY2UsIEZUQ19NYW5hZ2VyX0xvb2t1cF9TaXplLAoJRlRDX01hbmFnZXJfUmVnaXN0ZXJfQ2FjaGUpLCBzcmMvY2FjaGUvZnRjc2JpdHMuYwoJKEZUQ19TQml0X0NhY2hlX0xvb2t1cCk6IERpdHRvLgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaCAoRlRDX0dseXBoTm9kZV9Jbml0KSwKCXNyYy9pbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmggKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFVzZSBGVF9FWFBPUlQuCgoyMDAwLTExLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIHR0c2JpdC5oIGFuZCB0dHBvc3QuaCBvbmx5Cgljb25kaXRpb25hbGx5LgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzLCBTZXRfUGl4ZWxfU2l6ZXMpOiBTZXQKCWBzaXplLT5zdHJpa2VfaW5kZXgnIG9ubHkgY29uZGl0aW9uYWxseS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6IEluY2x1ZGUgdDFhZm0uaCBvbmx5Cgljb25kaXRpb25hbGx5LgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5oOiBNb3ZlIGFsbCB0eXBlIGRlZmluaXRpb25zIHRvLi4uCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmg6IE5ldyBmaWxlLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IFVzZSBpdC4KCjIwMDAtMTEtMjkgID8/PyA/Pz8gIDxkYXJpbkBlYXplbC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogUmVwbGFjZWQgRlRfQ0FUIGFuZCBGVF9YQ0FUCgl3aXRoIGEgZGlyZWN0IHNvbHV0aW9uICh3aGljaCBhbHNvIHNhdGlmaWVzIHBpY2t5IGNvbXBpbGVycykuCgoyMDAwLTExLTI4ICBZQU1BTk8tVUNISSBIaWRldG9zaGkgPG1lckBkaW4ub3IuanA+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfU2l6ZSk6IEZpeCAjaWZkZWYncyB0byB3b3JrIHdpdGgKCWRpc2FibGVkIGludGVycHJldGVyIGFsc28uCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWVfQ291bnQpOiBGaXggaW5jb3JyZWN0CglwYXJlbnRoZXNlcy4KCjIwMDAtMTEtMjYgIFRvbSBLYWN2aW5za3kgIDx0amtAYW1zLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIGxvZ2ljIHRvIGdseXBoCgl3aWR0aCBzZXR0aW5nIGNvZGUgdG8gdGFrZSBpbnRvIGFjY291bnQgZXZlbi9vZGQgYXJndW1lbnQgY291bnRzCglhbmQgZ2x5cGggd2lkdGggb3BlcmFuZCBiZWZvcmUgZW5kY2hhci9obW92ZXRvL3Ztb3ZldG8uCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvYW5zaS9hbnNpLm1rOiBGaXggaW5jbHVzaW9uIG9yZGVyIG9mIGZpbGVzLgoKMjAwMC0xMS0yNiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDb21wdXRlIHN0eWxlIGZsYWdzLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsgKENMRUFOX0xJQlJBUlkpOiBGaXggcnVsZSBhbmQKCWNvbmRpdGlvbmFsLgoKMjAwMC0xMS0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9Eb25lX1BhcnNlKTogUmVuYW1lZCB0by4uLgoJKFQxX0ZpbmFsaXplX1BhcnNlcik6IE5ldyBmdW5jdGlvbiAodG8gYXZvaWQgbmFtZSBjbGFzaCB3aXRoIGEKCWZ1bmN0aW9uIGluIHRoZSBQU0F1eCBtb2R1bGUpLgoJKFQxX0RlY3J5cHQpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGR1cGxpY2F0ZWQgaW4gdGhlIFBTQXV4IG1vZHVsZS4KCShUMV9HZXRfUHJpdmF0ZV9EaWN0KTogQWRkZWQgYHBzYXV4JyBhcyBuZXcgcGFyYW1ldGVyOyB1c2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oOiBBZGFwdGVkLgoKMjAwMC0xMS0yMiAgVG9tIEthY3ZpbnNreSAgPHRqa0BhbXMub3JnPgoKCSogc3JjL2NmZi90Mm9ianMuYyAoVDJfSW5pdF9GYWNlKTogRm9yIHB1cmUgQ0ZGIGZvbnRzLCBzZXQgCglgcm9vdC0+bnVtX2ZhY2VzJyB0byBgY2ZmLT5udW1fZmFjZXMnIGFuZCBzZXQgYHVuaXRzX3Blcl9FTScKCXRvIDEwMDAuCgoJKiBzcmMvY2ZmL3QycGFyc2UuYyAocGFyc2VfdDJfcmVhbCk6IEZpeGVkIHJlYWwgbnVtYmVyIHBhcnNpbmcKCWxvb3AuCgkKCSogc3JjL2NmZi90MmxvYWQuYyAoVDJfR2V0X1N0cmluZyk6IENhbGxlZCBUMl9HZXRfTmFtZSB3aXRoIGEKCXNpZCB0aGF0IHdhcyBvZmYgYnkgb25lLgoKMjAwMC0xMS0xNiAgRGF2aWQgVHVybmVyIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGRlZCBuZXcgZmllbGRzIHRvIGNvbnRyb2wKCWF1dG8taGludGluZyBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQWRkZWQgYXV0by1oaW50aW5nIHN1cHBvcnQgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCjIwMDAtMTEtMTIgIFRvbSBLYWN2aW5za3kgIDx0amtAYW1zLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb29rVXBfVGFibGUsIFRUX0xvYWRfR2VuZXJpY19UYWJsZSk6IENoYW5nZQoJdHJhY2luZyBvdXRwdXQuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTZXQgYm9vbGVhbiB2YXJpYWJsZQoJYGhhcy1vdXRsaW5lJyB0byB0cnVlIG9ubHkgaWYgdGhlIGZvbnQgaGFzIGEgYGdseWYnIG9yIGBDRkYgJyB0YWJsZS4KCjIwMDAtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogRml4IHJhc3RlcjEtPnJhc3RlciBhbmQKCXR5cGUxei0+dHlwZTEuCgoyMDAwLTExLTExICBUb20gS2Fjdmluc2t5ICA8dGprQGFtcy5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnJlZXR5cGUtY29uZmlnLmluOgoJQWRkZWQgYSAtLWxpYnRvb2wgb3B0aW9uLiAgV2hlbiBmcmVldHlwZS1jb25maWcgLS1saWJ0b29sIGlzCglpbnZva2VkLCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5CglpcyByZXR1cm5lZC4KCjIwMDAtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vY3lnd2luLWRlZi5pbjogU2FtZSBmaXggYXMgcHJldmlvdXMuCgoyMDAwLTExLTEwICBUb20gS2Fjdmluc2t5ICA8dGprQGFtcy5vcmc+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbjogQWRkCgoJICAgIElOU1RBTExfUFJPR1JBTSA6PSBASU5TVEFMTF9QUk9HUkFNQAoJICAgIElOU1RBTExfU0NSSVBUICA6PSBASU5TVEFMTF9TQ1JJUFRACgoJc28gdGhhdCBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnIGRvZXMgbm90IGZhaWwuCgoyMDAwLTExLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOgoJTW92ZSB0ZXN0IGRvd24gZm9yIGVtcHR5IC0tZXhlYy1wcmVmaXguCglGaXggLS12ZXJzaW9uLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9pbnN0YWxsLm1rOiBVc2UKCSQoSU5TVEFMTF9TQ1JJUFQpIGZvciBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rOiBGaXggY2xlYW4gdGFyZ2V0IG5hbWVzLgoKMjAwMC0xMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogVmVyc2lvbiAyLjAgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PQoKCkxvY2FsIFZhcmlhYmxlczoKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpjb2Rpbmc6IGxhdGluLTEKRW5kOgo=