ZGlmZiAtLWdpdCBhL0ZpbGVsaXN0IGIvRmlsZWxpc3QKaW5kZXggYTQ1NzVjMS4uYzU5MWQ1NCAxMDA2NDQKLS0tIGEvRmlsZWxpc3QKKysrIGIvRmlsZWxpc3QKQEAgLTEyMiw4ICsxMjIsNiBAQAogCQlzcmMvcHJvdG8vdW5kby5wcm8gXAogCQlzcmMvcHJvdG8vdmVyc2lvbi5wcm8gXAogCQlzcmMvcHJvdG8vd2luZG93LnBybyBcCi0JCXNyYy9zcGVsbC8qLmRpZmYgXAotCQlzcmMvc3BlbGwvTWFrZWZpbGUgXAogCiAKICMgc291cmNlIGZpbGVzIGZvciBVbml4IG9ubHkKQEAgLTY4NCw2ICs2ODIsOSBAQAogCQlydW50aW1lL3R1dG9yL3R1dG9yLnJ1LiogXAogCQlydW50aW1lL3R1dG9yL3R1dG9yLnpoLiogXAogCQlydW50aW1lL3NwZWxsL1JFQURNRS50eHQgXAorCQlydW50aW1lL3NwZWxsLz8/LyouZGlmZiBcCisJCXJ1bnRpbWUvc3BlbGwvPz8vbWFpbi5hYXAgXAorCQlydW50aW1lL3NwZWxsL21haW4uYWFwIFwKIAogIyBnZW5lcmljIGxhbmd1YWdlIGZpbGVzLCBiaW5hcnkKIExBTkdfR0VOX0JJTiA9IFwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggOWVlMTNlMy4uOWViMWJhNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgSnVuIDI5CisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgSnVsIDAzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yNDEsMTUgKzI0MSwyMyBAQAogCiBOb3RlIGFib3V0IGNvbXBhcmluZyBsaXN0czogVHdvIGxpc3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXkgaGF2ZSB0aGUKIHNhbWUgbGVuZ3RoIGFuZCBhbGwgaXRlbXMgY29tcGFyZSBlcXVhbCwgYXMgd2l0aCB1c2luZyAiPT0iLiAgVGhlcmUgaXMgb25lCi1leGNlcHRpb246IFdoZW4gY29tcGFyaW5nIGEgbnVtYmVyIHdpdGggYSBzdHJpbmcgYW5kIHRoZSBzdHJpbmcgY29udGFpbnMgZXh0cmEKLWNoYXJhY3RlcnMgYmVzaWRlIHRoZSBudW1iZXIgdGhleSBhcmUgbm90IGVxdWFsLiBFeGFtcGxlOiA+Ci0JZWNobyA0ID09ICI0eCIKK2V4Y2VwdGlvbjogV2hlbiBjb21wYXJpbmcgYSBudW1iZXIgd2l0aCBhIHN0cmluZyB0aGV5IGFyZSBjb25zaWRlcmVkCitkaWZmZXJlbnQuICBUaGVyZSBpcyBubyBhdXRvbWF0aWMgdHlwZSBjb252ZXJzaW9uLCBhcyB3aXRoIHVzaW5nICI9PSIgb24KK3ZhcmlhYmxlcy4gIEV4YW1wbGU6ID4KKwllY2hvIDQgPT0gIjQiCiA8CTEgPgotCWVjaG8gWzRdID09IFsiNHgiXQorCWVjaG8gWzRdID09IFsiNCJdCiA8CTAKIAotVGhpcyBpcyB0byBmaXggdGhlIG9kZCBiZWhhdmlvciBvZiA9PSB0aGF0IGNhbid0IGJlIGNoYW5nZWQgZm9yIGJhY2t3YXJkCi1jb21wYXRpYmlsaXR5IHJlYXNvbnMuCitUaHVzIGNvbXBhcmluZyBMaXN0cyBpcyBtb3JlIHN0cmljdCB0aGFuIGNvbXBhcmluZyBudW1iZXJzIGFuZCBzdHJpbmdzLiAgWW91CitjYW4gY29tcGFyZSBzaW1wbGUgdmFsdWVzIHRoaXMgd2F5IHRvbyBieSBwdXR0aW5nIHRoZW0gaW4gYSBzdHJpbmc6ID4KKworCTpsZXQgYSA9IDUKKwk6bGV0IGIgPSAiNSIKKwllY2hvIGEgPT0gYgorPAkxID4KKwllY2hvIFthXSA9PSBbYl0KKzwJMAogCiAKIExpc3QgdW5wYWNrIH4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3NwZWxsLnR4dCBiL3J1bnRpbWUvZG9jL3NwZWxsLnR4dAppbmRleCA5Y2NmYmVmLi40NmQxYjcwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zcGVsbC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3BlbGwudHh0CkBAIC0xLDQgKzEsNCBAQAotKnNwZWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgSnVsIDAyCisqc3BlbGwudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBKdWwgMDMKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjcsNyArMjcsNyBAQAogCiBUaGUgd29yZHMgdGhhdCBhcmUgbm90IHJlY29nbml6ZWQgYXJlIGhpZ2hsaWdodGVkIHdpdGggb25lIG9mIHRoZXNlOgogCVNwZWxsQmFkCXdvcmQgbm90IHJlY29nbml6ZWQJCQl8aGwtU3BlbGxCYWR8Ci0JU3BlbGxDYXAJd29yZCBub3QgY2FwYXRpbGl6ZWQJCQl8aGwtU3BlbGxDYXB8CisJU3BlbGxDYXAJd29yZCBub3QgY2FwaXRhbGlzZWQJCQl8aGwtU3BlbGxDYXB8CiAJU3BlbGxSYXJlCXJhcmUgd29yZAkJCQl8aGwtU3BlbGxSYXJlfAogCVNwZWxsTG9jYWwJd3Jvbmcgc3BlbGxpbmcgZm9yIHNlbGVjdGVkIHJlZ2lvbgl8aGwtU3BlbGxMb2NhbHwKIApAQCAtMzIxLDYgKzMyMSwxMCBAQAogWW91IGNhbiBhbHNvIHVzZSBhIHBsYWluIHdvcmQgbGlzdC4gIFRoZSByZXN1bHRzIGFyZSB0aGUgc2FtZSwgdGhlIGNob2ljZQogZGVwZW5kcyBvbiB3aGF0IHdvcmQgbGlzdHMgeW91IGNhbiBmaW5kLgogCitJZiB5b3UgaW5zdGFsbCBBYXAgKGZyb20gd3d3LmEtYS1wLm9yZykgeW91IGNhbiB1c2UgdGhlIHJlY2lwZXMgaW4gdGhlCitydW50aW1lL3NwZWxsLz8/LyBkaXJlY3Rvcmllcy4gIEFhcCB3aWxsIHRha2UgY2FyZSBvZiBkb3dubG9hZGluZyB0aGUgZmlsZXMsCithcHBseSBwYXRjaGVzIG5lZWRlZCBmb3IgVmltIGFuZCBidWlsZCB0aGUgLnNwbCBmaWxlLgorCiBNYWtlIHN1cmUgeW91ciBjdXJyZW50IGxvY2FsZSBpcyBzZXQgcHJvcGVybHksIG90aGVyd2lzZSBWaW0gZG9lc24ndCBrbm93IHdoYXQKIGNoYXJhY3RlcnMgYXJlIHVwcGVyL2xvd2VyIGNhc2UgbGV0dGVycy4gIElmIHRoZSBsb2NhbGUgaXNuJ3QgYXZhaWxhYmxlIChlLmcuLAogd2hlbiB1c2luZyBhbiBNUy1XaW5kb3dzIGNvZGVwYWdlIG9uIFVuaXgpIGFkZCB0YWJsZXMgdG8gdGhlIC5hZmYgZmlsZQpAQCAtMzg5LDcgKzM5Myw3IEBACiA0LiBTdGFydCBWaW0gd2l0aCB0aGUgcmlnaHQgbG9jYWxlIGFuZCB1c2UgfDpta3NwZWxsfCB0byBnZW5lcmF0ZSB0aGUgVmltCiAgICBzcGVsbCBmaWxlLgogNS4gVHJ5IG91dCB0aGUgc3BlbGwgZmlsZSB3aXRoICI6c2V0IHNwZWxsIHNwZWxsbGFuZz14eCIgaWYgeW91IHdyb3RlIGl0IGluCi0gICBhIHNwZWxsIGRpcmVjdG9yeSBpbiAncnVudGltZXBhdGgsIG9yICI6c2V0IHNwZWxsbGFuZz14eC5lbmMuc3BsIiBpZiB5b3UKKyAgIGEgc3BlbGwgZGlyZWN0b3J5IGluICdydW50aW1lcGF0aCcsIG9yICI6c2V0IHNwZWxsbGFuZz14eC5lbmMuc3BsIiBpZiB5b3UKICAgIHdyb3RlIGl0IHNvbWV3aGVyZSBlbHNlLgogCiBXaGVuIHRoZSBNeXNwZWxsIGZpbGVzIGFyZSB1cGRhdGVkIHlvdSBjYW4gbWVyZ2UgdGhlIGRpZmZlcmVuY2VzOgpAQCAtNDM2LDcgKzQ0MCw3IEBACiBhcHBlYXIgaW4gYSB3b3JkIGxpc3QuICBBbmQgc29tZSBvbGQgd29yZHMgYXJlIHJhcmVseSB1c2VkIHdoaWxlIHRoZXkgYXJlCiBjb21tb24gbWlzc3BlbGxpbmdzLiAgVGhlc2UgZG8gYXBwZWFyIGluIGEgZGljdGlvbmFyeSBidXQgbm90IGluIGEgd29yZCBsaXN0LgogCi1UaGVyZSBhcmUgdHdvIGZvcm1hdHM6IEEgc3RyYWlndGggbGlzdCBvZiB3b3JkcyBhbmQgYSBsaXN0IHVzaW5nIGFmZml4CitUaGVyZSBhcmUgdHdvIGZvcm1hdHM6IEEgc3RyYWlnaHQgbGlzdCBvZiB3b3JkcyBhbmQgYSBsaXN0IHVzaW5nIGFmZml4CiBjb21wcmVzc2lvbi4gIFRoZSBmaWxlcyB3aXRoIGFmZml4IGNvbXByZXNzaW9uIGFyZSB1c2VkIGJ5IE15c3BlbGwgKE1vemlsbGEKIGFuZCBPcGVuT2ZmaWNlLm9yZykuICBUaGlzIHJlcXVpcmVzIHR3byBmaWxlcywgb25lIHdpdGggLmFmZiBhbmQgb25lIHdpdGggLmRpYwogZXh0ZW5zaW9uLgpAQCAtNzYwLDcgKzc2NCw3IEBACiAJU0FMIEMgICAgICAgICAgICAgICAgICAgIEsgfgogCVNBTCBLICAgICAgICAgICAgICAgICAgICBLIH4KIAotVGhlcmUgYXJlIGEgZmV3IHJ1bGVzIGFuZCB0aGlzIGNhbiBiZWNvbWUgcXVpdGUgY29tcGxpY2F0ZWQuICBBbiBleHBsYW50aW9uCitUaGVyZSBhcmUgYSBmZXcgcnVsZXMgYW5kIHRoaXMgY2FuIGJlY29tZSBxdWl0ZSBjb21wbGljYXRlZC4gIEFuIGV4cGxhbmF0aW9uCiBob3cgaXQgd29ya3MgY2FuIGJlIGZvdW5kIGluIHRoZSBBc3BlbGwgbWFudWFsOgogaHR0cDovL2FzcGVsbC5uZXQvbWFuLWh0bWwvUGhvbmV0aWMtQ29kZS5odG1sLgogCkBAIC03ODAsNyArNzg0LDcgQEAKIHNhbWUgY2hhcmFjdGVyLiAgQXQgdGhlIHNhbWUgdGltZSB0aGlzIGRvZXMgY2FzZSBmb2xkaW5nLiAgWW91IGNhbiBub3QgaGF2ZQogYm90aCBTQUwgaXRlbXMgYW5kIHNpbXBsZSBzb3VuZGZvbGRpbmcuCiAKLVRoZXJlIGFyZSB0d28gaXRlbXMgcmVxdWlyZWQ6IG9uZSB0byBzcGVmaWN5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIG1hcHBlZAorVGhlcmUgYXJlIHR3byBpdGVtcyByZXF1aXJlZDogb25lIHRvIHNwZWNpZnkgdGhlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbWFwcGVkCiBhbmQgb25lIHRoYXQgc3BlY2lmaWVzIHRoZSBjaGFyYWN0ZXJzIHRoZXkgYXJlIG1hcHBlZCB0by4gIFRoZXkgbXVzdCBoYXZlCiBleGFjdGx5IHRoZSBzYW1lIG51bWJlciBvZiBjaGFyYWN0ZXJzLiAgRXhhbXBsZToKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggMmIxOWViYy4uZjIzMWRlYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC01MTQ4LDcgKzUxNDgsNiBAQAogaGVicmV3LnR4dAloZWJyZXcudHh0CS8qaGVicmV3LnR4dCoKIGhlbHAJdmFyaW91cy50eHQJLypoZWxwKgogaGVscC1jb250ZXh0CWhlbHAudHh0CS8qaGVscC1jb250ZXh0KgotaGVscC10YWdzCXRhZ3MJMQogaGVscC10cmFuc2xhdGVkCXZhcmlvdXMudHh0CS8qaGVscC10cmFuc2xhdGVkKgogaGVscC14dGVybS13aW5kb3cJdmFyaW91cy50eHQJLypoZWxwLXh0ZXJtLXdpbmRvdyoKIGhlbHAudHh0CWhlbHAudHh0CS8qaGVscC50eHQqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IDRkMGU5M2MuLjlkMGE5NjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEp1bCAwMgorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEp1bCAwMwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC04MSw5ICs4MSw2IEBACiAgICAgaGVscGZpbGUgZG9jL215c2NyaXB0LnR4dAogICBGb3IgdGhlICJoZWxwZmlsZSIgaXRlbSAiOmhlbHB0YWdzIiBpcyBydW4uCiAKLUZvciBMaXN0IGNvbXBhcmluZywgY29uc2lkZXIgWzRdIGFuZCBbJzQnXSBkaWZmZXJlbnQ/IChTZXJ2YXRpdXMgQnJhbmR0KQotQWxzbyBhbGxvd3Mgc3RyaWN0IGNvbXBhcmluZyBmb3Igb3JkaW5hcnkgdmFyaWFibGVzLgotCiBQYXRjaCB0byBhbHRlcm5hdGUgZm9sZCBoaWdobGlnaHRpbmcuICAoQW50aG9ueSBJYW5vLUZsZXRjaGVyLCAyMDA1IE1heSAxMikKIE1vcmUgbGV2ZWxzPwogCkBAIC05Niw0MCArOTMsNiBAQAogCiBQTEFOTkVEIEZPUiBWRVJTSU9OIDcuMDoKIAotLSBTcGVsbCBjaGVja2luZyB0b2RvJ3M6Ci0gICAgLSBXaGVuIG1ha2luZyBzdWdnZXN0aW9ucyBjaGVjayBmb3IgJ3NwZWxsY2FwY2hlY2snIGFuZCBlbXB0eSBsaW5lIHRvCi0gICAgICBmaWd1cmUgb3V0IHRoZSB3b3JkIHNob3VsZCBiZSBjYXBpdGFsaXNlZC4KLSAgICAtIERpc3RyaWJ1dGlvbjogTmVlZCB3b3JkbGlzdHMgZm9yIG1hbnkgbGFuZ3VhZ2VzOyAibGFuZ3VhZ2UgcGFjayIKLSAgICAgIFB1dCB0aGVtIG9uIHRoZSBmdHAgc2l0ZSwgcmVhZHkgdG8gZG93bmxvYWQuICBJbmNsdWRlIFJFQURNRSBmb3IKLSAgICAgIGNvcHlyaWdodHMuCi0gICAgLSBXb3JrIHRvZ2V0aGVyIHdpdGggT3Blbk9mZmljZS5vcmcgdG8gdXBkYXRlIHRoZSB3b3JkbGlzdHMuICAoQWRyaQotICAgICAgVmVyaG9lZiwgQWFkIE5hbGVzKSAgU2V0dXAgdmltLXNwZWxsIG1haWxsaXN0PwotICAgIC0gQ2hhcmxlcyBDYW1wYmVsbCBhc2tzIGZvciBtZXRob2QgdG8gYWRkICJjb250YWluZWQiIGdyb3VwcyB0bwotICAgICAgZXhpc3Rpbmcgc3ludGF4IGl0ZW1zICh0byBhZGQgQFNwZWxsKS4KLSAgICAgIEFkZCAiOnN5bnRheCBjb250YWlucyB7cGF0dGVybn0gYWRkPUBTcGVsbCIgY29tbWFuZD8gIEEgYml0IGxpa2UgIjpzeW4KLSAgICAgIGNsdXN0ZXIiIGJ1dCBjaGFuZ2UgdGhlIGNvbnRhaW5zIGxpc3QgZGlyZWN0bHkgZm9yIG1hdGNoaW5nIHN5bnRheAotICAgICAgaXRlbXMuCi0gICAgLSBJbnN0YWxsIHNwZWxsIGZpbGVzIHdpdGggc3JjL21haW4uYWFwLgotICAgIExhdGVyOgotICAgIC0gUmVmZXJlbmNlczogTXlTcGVsbCBsaWJyYXJ5IChpbiBPcGVuT2ZmaWNlLm9yZykuCi0JaHR0cDovL3NwZWxsY2hlY2tlci5tb3pkZXYub3JnL3NvdXJjZS5odG1sCi0JaHR0cDovL3doaXRlYm9hcmQub3Blbm9mZmljZS5vcmcvc291cmNlL2Jyb3dzZS93aGl0ZWJvYXJkL2xpbmd1Y29tcG9uZW50L3NvdXJjZS9zcGVsbGNoZWNrL215c3BlbGwvCi0gICAgICBhdXRob3I6IEtldmluIEhlbmRyaWNrcyA8a2V2aW4uaGVuZHJpY2tzQHN5bXBhdGljby5jYT4KLSAgICAtIE1ha2UgImVuLXJhcmUiIHNwZWxsIGZpbGU/ICBBc2sgQ2hhcmxlcyBDYW1wYmVsbC4KLSAgICAtIFRoZSBFbmdsaXNoIGRpY3Rpb25hcmllcyBmb3IgZGlmZmVyZW50IHJlZ2lvbnMgYXJlIG5vdCBjb25zaXN0ZW50IGluCi0gICAgICB0aGVpciB1c2Ugb2Ygd29yZHMgd2l0aCBhIGRhc2guCi0gICAgLSBBbHRlcm5hdGUgRHV0Y2ggd29yZCBsaXN0IGF0IHd3dy5uZWRlcmxhbmRzZXdvb3JkZW4ubmwgKHVzZSBzY3JpcHQgdG8KLSAgICAgIG9idGFpbikuICBCdXQgbmV3IE15c3BlbGwgd29yZGxpc3Qgd2lsbCBjb21lIChIYWdlbikKLSAgICAtIEluc2VydCBtb2RlIGNvbXBsZXRpb24gbWVjaGFuaXNtIHRoYXQgdXNlcyB0aGUgc3BlbGwgd29yZCBsaXN0cy4KLSAgICAtIEFkZCBobCBncm91cHMgdG8gJ3NwZWxsbGFuZyc/Ci0JOnNldCBzcGVsbGxhbmc9ZW5fdXMsZW4tcmFyZS9TcGVsbFJhcmUsZW4tbWF0aC9TcGVsbE1hdGgKLSAgICAgIE1vcmUgY29tcGxpY2F0ZWQ6IFJlZ2lvbnMgd2l0aCBkaWZmZXJlbnQgbGFuZ3VhZ2VzPyAgRS5nLiwgY29tbWVudHMKLSAgICAgIGluIEVuZ2xpc2gsIHN0cmluZ3MgaW4gR2VybWFuIChwbyBmaWxlKS4KLSAgICAtIEltcGxlbWVudCBjb21wb3VuZCB3b3JkcyB3aGVuIGl0IHdvcmtzIGZvciBNeXNwZWxsLiAgQ3VycmVudCBpZGVhIGhhcwotICAgICAgdGhlIHByb2JsZW0gdGhhdCAiZm9vL1giIGFsd2F5cyBhbGxvd3MgImZvb2ZvbyIsIHRoZXJlIGlzIG5vIHdheSB0bwotICAgICAgc3BlY2lmeSBhIHdvcmQgY2FuIG9ubHkgYmUgYXQgdGhlIHN0YXJ0IG9yIGVuZCwgb3IgdGhhdCBvbmx5IGNlcnRhaW4KLSAgICAgIHdvcmRzIGNvbWJpbmUuCi0KIC0gICBTdXBwb3J0IHVzaW5nICIqKiIgaW4gZmlsZW5hbWUgZm9yICI6bmV4dCIsICI6dmltZ3JlcCIsIGV0Yy4sIHNvIHRoYXQgYQogICAgIGRpcmVjdG9yeSB0cmVlIGNhbiBiZSBzZWFyY2hlZC4KIC0gICBSRUZBQ1RPUklORzogVGhlIG1haW4oKSBmdW5jdGlvbiBpcyB2ZXJ5IGxvbmcuICBNb3ZlIHBhcnRzIHRvIHNlcGFyYXRlCkBAIC0xMzA5LDYgKzEyNzIsMzMgQEAKICAgICB3aW5kb3cgY2FuIGJlIGRpc3BsYXllZC4gKEVkdWFyZCkKIAogCitTcGVsbCBjaGVja2luZzoKKzkgICBXb3JrIHRvZ2V0aGVyIHdpdGggT3Blbk9mZmljZS5vcmcgdG8gdXBkYXRlIHRoZSB3b3JkbGlzdHMuICAoQWRyaSBWZXJob2VmLAorICAgIEFhZCBOYWxlcykgIFNldHVwIHZpbS1zcGVsbCBtYWlsbGlzdD8KKzggICBDaGFybGVzIENhbXBiZWxsIGFza3MgZm9yIG1ldGhvZCB0byBhZGQgImNvbnRhaW5lZCIgZ3JvdXBzIHRvIGV4aXN0aW5nCisgICAgc3ludGF4IGl0ZW1zICh0byBhZGQgQFNwZWxsKS4KKyAgICBBZGQgIjpzeW50YXggY29udGFpbnMge3BhdHRlcm59IGFkZD1AU3BlbGwiIGNvbW1hbmQ/ICBBIGJpdCBsaWtlICI6c3luCisgICAgY2x1c3RlciIgYnV0IGNoYW5nZSB0aGUgY29udGFpbnMgbGlzdCBkaXJlY3RseSBmb3IgbWF0Y2hpbmcgc3ludGF4IGl0ZW1zLgorOCAgIEluc3RhbGwgc3BlbGwgZmlsZXMgd2l0aCBzcmMvbWFpbi5hYXAuCistICAgUmVmZXJlbmNlczogTXlTcGVsbCBsaWJyYXJ5IChpbiBPcGVuT2ZmaWNlLm9yZykuCisJaHR0cDovL3NwZWxsY2hlY2tlci5tb3pkZXYub3JnL3NvdXJjZS5odG1sCisJaHR0cDovL3doaXRlYm9hcmQub3Blbm9mZmljZS5vcmcvc291cmNlL2Jyb3dzZS93aGl0ZWJvYXJkL2xpbmd1Y29tcG9uZW50L3NvdXJjZS9zcGVsbGNoZWNrL215c3BlbGwvCisgICAgICBhdXRob3I6IEtldmluIEhlbmRyaWNrcyA8a2V2aW4uaGVuZHJpY2tzQHN5bXBhdGljby5jYT4KKzggICBNYWtlICJlbi1yYXJlIiBzcGVsbCBmaWxlPyAgQXNrIENoYXJsZXMgQ2FtcGJlbGwuCis4ICAgVGhlIEVuZ2xpc2ggZGljdGlvbmFyaWVzIGZvciBkaWZmZXJlbnQgcmVnaW9ucyBhcmUgbm90IGNvbnNpc3RlbnQgaW4gdGhlaXIKKyAgICB1c2Ugb2Ygd29yZHMgd2l0aCBhIGRhc2guCis4ICAgQWx0ZXJuYXRlIER1dGNoIHdvcmQgbGlzdCBhdCB3d3cubmVkZXJsYW5kc2V3b29yZGVuLm5sICh1c2Ugc2NyaXB0IHRvCisgICAgb2J0YWluKS4gIEJ1dCBuZXcgTXlzcGVsbCB3b3JkbGlzdCB3aWxsIGNvbWUgKEhhZ2VuKQorNyAgIEluc2VydCBtb2RlIGNvbXBsZXRpb24gbWVjaGFuaXNtIHRoYXQgdXNlcyB0aGUgc3BlbGwgd29yZCBsaXN0cy4KKzggICBBZGQgaGwgZ3JvdXBzIHRvICdzcGVsbGxhbmcnPworCTpzZXQgc3BlbGxsYW5nPWVuX3VzLGVuLXJhcmUvU3BlbGxSYXJlLGVuLW1hdGgvU3BlbGxNYXRoCisgICAgTW9yZSBjb21wbGljYXRlZDogUmVnaW9ucyB3aXRoIGRpZmZlcmVudCBsYW5ndWFnZXM/ICBFLmcuLCBjb21tZW50cworICAgIGluIEVuZ2xpc2gsIHN0cmluZ3MgaW4gR2VybWFuIChwbyBmaWxlKS4KKzggICBJbXBsZW1lbnQgY29tcG91bmQgd29yZHMgd2hlbiBpdCB3b3JrcyBmb3IgTXlzcGVsbC4gIEN1cnJlbnQgaWRlYSBoYXMgdGhlCisgICAgcHJvYmxlbSB0aGF0ICJmb28vWCIgYWx3YXlzIGFsbG93cyAiZm9vZm9vIiwgdGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgYQorICAgIHdvcmQgY2FuIG9ubHkgYmUgYXQgdGhlIHN0YXJ0IG9yIGVuZCwgb3IgdGhhdCBvbmx5IGNlcnRhaW4gd29yZHMgY29tYmluZS4KKworCiBEaWZmIG1vZGU6CiA4ICAgVXNlIGRpZmYgbW9kZSB0byBzaG93IHRoZSBjaGFuZ2VzIG1hZGUgaW4gYSBidWZmZXIgKGNvbXBhcmVkIHRvIHRoZSBmaWxlKS4KICAgICBVc2UgYW4gdW5uYW1lZCBidWZmZXIsIGxpa2UgZG9pbmc6CmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL1JFQURNRS50eHQgYi9ydW50aW1lL3NwZWxsL1JFQURNRS50eHQKaW5kZXggZmY1NmFjYy4uOGVhNTI3MiAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9SRUFETUUudHh0CisrKyBiL3J1bnRpbWUvc3BlbGwvUkVBRE1FLnR4dApAQCAtNyw5MjkgKzcsNiBAQAogVGhlIGZpbGVzIHVzZWQgYXMgaW5wdXQgZm9yIHRoZSBzcGVsbCBmaWxlcyBjb21lIGZyb20gdGhlIE9wZW5PZmZpY2Uub3JnIHNwZWxsCiBmaWxlcy4gIE1vc3Qgb2YgdGhlbSBnbyB1bmRlciB0aGUgTEdQTCBvciBhIHNpbWlsYXIgbGljZW5zZS4KIAotQ29weXJpZ2h0IG5vdGljZXMgZm9yIHNwZWNpZmljIGxhbmd1YWdlcyBmb2xsb3cuICBOb3RlIHRoYXQgdGhlIGZpbGVzIGZvcgotZGlmZmVyZW50IHJlZ2lvbnMgYXJlIG1lcmdlZCwgYm90aCB0byBzYXZlIHNwYWNlIGFuZCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvCi1oaWdobGlnaHQgd29yZHMgZm9yIGFub3RoZXIgcmVnaW9uIGRpZmZlcmVudCBmcm9tIGJhZCB3b3Jkcy4KLQotLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KLWVuX1VTCi0KLTIwMDQwNjIzIHJlbGVhc2UuCi0tLQotVGhpcyBkaWN0aW9uYXJ5IGlzIGJhc2VkIG9uIGEgc3Vic2V0IG9mIHRoZSBvcmlnaW5hbAotRW5nbGlzaCB3b3JkbGlzdCBjcmVhdGVkIGJ5IEtldmluIEF0a2luc29uIGZvciBQc3BlbGwgCi1hbmQgIEFzcGVsbCBhbmQgdGh1cyBpcyBjb3ZlcmVkIGJ5IGhpcyBvcmlnaW5hbCAKLUxHUEwgbGljZW5zZS4gIFRoZSBhZmZpeCBmaWxlIGlzIGEgaGVhdmlseSBtb2RpZmllZAotdmVyc2lvbiBvZiB0aGUgb3JpZ2luYWwgZW5nbGlzaC5hZmYgZmlsZSB3aGljaCB3YXMKLXJlbGVhc2VkIGFzIHBhcnQgb2YgR2VvZmYgS3Vlbm5pbmcncyBJc3BlbGwgYW5kIGFzIAotc3VjaCBpcyBjb3ZlcmVkIGJ5IGhpcyBCU0QgbGljZW5zZS4KLQotVGhhbmtzIHRvIGJvdGggYXV0aG9ycyBmb3IgdGhlcmUgd29uZGVyZnVsIHdvcmsuCi0KLS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCi1lbl9BVQotCi1UaGlzIGRpY3Rpb25hcnkgd2FzIGJhc2VkIG9uIHRoZSBlbl9HQiBNeXNwZWxsIGRpY3Rpb25hcnkgCi13aGljaCBpbiB0dXJuIHdhcyBpbml0aWFsbHkgYmFzZWQgb24gYSBzdWJzZXQgb2YgdGhlIAotb3JpZ2luYWwgRW5nbGlzaCB3b3JkbGlzdCBjcmVhdGVkIGJ5IEtldmluIEF0a2luc29uIGZvciAKLVBzcGVsbCBhbmQgIEFzcGVsbCBhbmQgdGh1cyBpcyBjb3ZlcmVkIGJ5IGhpcyBvcmlnaW5hbCAKLUxHUEwgbGljZW5jZS4gCi0KLVRoZSBjcmVkaXQgZm9yIHRoaXMgZW5fQVUgZGljdGlvbmFyeSBnb2VzIHRvOgotCi1LZWx2aW4gRWxkcmlkZ2UgKG1haW50YWluZXIpCi1KZWFuIEhvbGxpcyBXZWJlcgotRGF2aWQgV2lsc29uCi0KLS0gV29yZHMgaW5jb3JyZWN0IGluIEF1c3RyYWxpYW4gRW5nbGlzaCByZW1vdmVkCi0tIGEgbGlzdCBmcm9tIHRoZSBwcmV2aW91c2x5IHJlbW92ZWQgd29yZHMgd2l0aCBjb3JyZWN0ZWQgc3BlbGxpbmcgd2FzIGFkZGVkCi0tIGEgbGlzdCBvZiBtYWpvciByaXZlcnMgd2FzIGFkZGVkCi0tIGEgbGlzdCBvZiBwbGFjZSBuYW1lcyB3YXMgYWRkZWQKLS0gYSBsaXN0IG9mIEF1c3RyYWxpYW4gbWFtbWFscyB3YXMgYWRkZWQgCi0tIGEgbGlzdCBvZiBBYm9yaWdpbmFsL0tvb3JpIHdvcmRzIGNvbW1vbmx5IHVzZWQgd2FzIGFkZGVkCi0KLUEgdG90YWwgb2YgMTE5LDI2NyB3b3JkcyBhcmUgbm93IHJlY29nbml6ZWQgCi1ieSB0aGUgZGljdGlvbmFyeS4KLQotT2YgY291cnNlLCBzcGVjaWFsIHRoYW5rcyBnbyB0byB0aGUgZWRpdG9ycyBvZiB0aGUgCi1lbl9HQiBkaWN0aW9uYXJ5IChEYXZpZCBCYXJ0bGV0dCwgQnJpYW4gS2VsayBhbmQgCi1BbmRyZXcgQnJvd24pIHdoaWNoIHByb3ZpZGVkIHRoZSBzdGFydGluZyBwb2ludAotZm9yIHRoaXMgZGljdGlvbmFyeS4KLQotVGhlIGFmZml4IGZpbGUgaXMgY3VycmVudGx5IGEgZHVwbGljYXRlIG9mIHRoZSBlbl9BVS5hZmYKLWNyZWF0ZWQgY29tcGxldGVseSBmcm9tIHNjcmF0Y2ggYnkgRGF2aWQgQmFydGxldHQgYW5kIAotQW5kcmV3IEJyb3duLCBiYXNlZCBvbiB0aGUgcHVibGlzaGVkIAotcnVsZXMgZm9yIE15U3BlbGwgYW5kIGlzIGFsc28gcHJvdmlkZWQgdW5kZXIgdGhlIExHUEwuCi0KLUlmIHlvdSBmaW5kIG9taXNzaW9ucyBvciBidWdzIG9yIGhhdmUgbmV3IHdvcmRzIHRvIAotYWRkIHRvIHRoZSBkaWN0aW9uYXJ5LCBwbGVhc2UgY29udGFjdCB0aGUgZW5fQVUgCi1tYWludGFpbmVyIGF0OgotCi0gIktlbHZpbiIgPGF1ZGljdGlvbmFyeUBvbmxpbmVjb25uZWN0aW9ucy5jb20uYXU+Ci0KLS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCi1lbl9DQQotCi1UaGUgZGljdGlvbmFyeSBmaWxlIHdhcyBjcmVhdGVkIHVzaW5nIHRoZSAiZmluYWwiIEVuZ2xpc2ggYW5kIENhbmFkaWFuIFNDT1dMCi0oU3BlbGwgQ2hlY2tlciBPcmllbnRlZCBXb3JkIExpc3RzKSB3b3JkbGlzdHMgYXZhaWxhYmxlIGF0IEtldmluJ3MgV29yZCBMaXN0cwotUGFnZSAoaHR0cDovL3dvcmRsaXN0LnNvdXJjZWZvcmdlLm5ldCkuIExpc3RzIHdpdGggdGhlIHN1ZmZpeGVzIDEwLCAyMCwgMzUsCi01MCwgNjUgYW5kIDY1IHdlcmUgdXNlZC4gTGlzdHMgd2l0aCB0aGUgc3VmZml4ZXMgNzAsIDgwIGFuZCA5NSB3ZXJlIGV4Y2x1ZGVkLgotQ29weXJpZ2h0IGluZm9ybWF0aW9uIGZvciBTQ09XTCBhbmQgdGhlIHdvcmRsaXN0cyB1c2VkIGluIGNyZWF0aW5nIGl0IGlzCi1yZXByb2R1Y2VkIGJlbG93LgotCi1UaGUgYWZmaXggZmlsZSBpcyBpZGVudGljYWwgdG8gdGhlIE15U3BlbGwgRW5nbGlzaCAoVW5pdGVkIFN0YXRlcykgYWZmaXggZmlsZS4KLUl0IGlzIGEgaGVhdmlseSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5hbCBlbmdsaXNoLmFmZiBmaWxlIHdoaWNoIHdhcwotcmVsZWFzZWQgYXMgcGFydCBvZiBHZW9mZiBLdWVubmluZydzIElzcGVsbCBhbmQgYXMgc3VjaCBpcyBjb3ZlcmVkIGJ5IGhpcyBCU0QKLWxpY2Vuc2UuCi0KLS0tLQotCi1DT1BZUklHSFQsIFNPVVJDRVMsIGFuZCBDUkVESVRTIGZyb20gU0NPV0wgcmVhZG1lIGZpbGU6Ci0KLVRoZSBjb2xsZWN0aXZlIHdvcmsgaXMgQ29weXJpZ2h0IDIwMDAgYnkgS2V2aW4gQXRraW5zb24gYXMgd2VsbCBhcyBhbnkKLW9mIHRoZSBjb3B5cmlnaHRzIG1lbnRpb25lZCBiZWxvdzoKLQotICBDb3B5cmlnaHQgMjAwMCBieSBLZXZpbiBBdGtpbnNvbgotCi0gIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhlc2Ugd29yZAotICBsaXN0cywgdGhlIGFzc29jaWF0ZWQgc2NyaXB0cywgdGhlIG91dHB1dCBjcmVhdGVkIGZyb20gdGhlIHNjcmlwdHMsCi0gIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsCi0gIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzIGFuZAotICB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbgotICBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uIEtldmluIEF0a2luc29uIG1ha2VzIG5vIHJlcHJlc2VudGF0aW9ucwotICBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBhcnJheSBmb3IgYW55IHB1cnBvc2UuIEl0IGlzIHByb3ZpZGVkCi0gICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCi0KLUFsYW4gQmVhbGUgPGJpbGppckBwb2JveC5jb20+IGFsc28gZGVzZXJ2ZXMgc3BlY2lhbCBjcmVkaXQgYXMgaGUgaGFzLAotaW4gYWRkaXRpb24gdG8gcHJvdmlkaW5nIHRoZSAxMkRpY3RzIHBhY2thZ2UgYW5kIGJlaW5nIGEgbWFqb3IKLWNvbnRyaWJ1dG9yIHRvIHRoZSBFTkFCTEUgd29yZCBsaXN0LCBnaXZlbiBtZSBhbiBpbmNyZWRpYmxlIGFtb3VudCBvZgotZmVlZGJhY2sgYW5kIGNyZWF0ZWQgYSBudW1iZXIgb2Ygc3BlY2lhbCBsaXN0cyAodGhvc2UgZm91bmQgaW4gdGhlCi1TdXBwbGVtZW50KSBpbiBvcmRlciB0byBoZWxwIGltcHJvdmUgdGhlIG92ZXJhbGwgcXVhbGl0eSBvZiBTQ09XTC4KLQotVGhlIDEwIGxldmVsIGluY2x1ZGVzIHRoZSAxMDAwIG1vc3QgY29tbW9uIEVuZ2xpc2ggd29yZHMgKGFjY29yZGluZyB0bwotdGhlIE1vYnkgKFRNKSBXb3JkcyBJSSBbTVdvcmRzXSBwYWNrYWdlKSwgYSBzdWJzZXQgb2YgdGhlIDEwMDAgbW9zdAotY29tbW9uIHdvcmRzIG9uIHRoZSBJbnRlcm5ldCAoYWdhaW4sIGFjY29yZGluZyB0byBNb2J5IFdvcmRzIElJKSwgYW5kCi1mcmVxdWVudGx5IGNsYXNzIDE2IGZyb20gQnJpYW4gS2VsaydzICJVSyBFbmdsaXNoIFdvcmRsaXN0Ci13aXRoIEZyZXF1ZW5jeSBDbGFzc2lmaWNhdGlvbiIuCi0KLVRoZSBNV29yZHMgcGFja2FnZSB3YXMgZXhwbGljaXRseSBwbGFjZWQgaW4gdGhlIHB1YmxpYyBkb21haW46Ci0KLSAgICBUaGUgTW9ieSBsZXhpY29uIHByb2plY3QgaXMgY29tcGxldGUgYW5kIGhhcwotICAgIGJlZW4gcGxhY2UgaW50byB0aGUgcHVibGljIGRvbWFpbi4gVXNlLCBzZWxsLAotICAgIHJld29yaywgZXhjZXJwdCBhbmQgdXNlIGluIGFueSB3YXkgb24gYW55IHBsYXRmb3JtLgotCi0gICAgUGxhY2luZyB0aGlzIG1hdGVyaWFsIG9uIGludGVybmFsIG9yIHB1YmxpYyBzZXJ2ZXJzIGlzCi0gICAgYWxzbyBlbmNvdXJhZ2VkLiBUaGUgY29tcGlsZXIgaXMgbm90IGF3YXJlIG9mIGFueQotICAgIGV4cG9ydCByZXN0cmljdGlvbnMgc28gZnJlZWx5IGRpc3RyaWJ1dGUgd29ybGQtd2lkZS4KLQotICAgIFlvdSBjYW4gdmVyaWZ5IHRoZSBwdWJsaWMgZG9tYWluIHN0YXR1cyBieSBjb250YWN0aW5nCi0KLSAgICBHcmFkeSBXYXJkCi0gICAgMzQ0OSBNYXJ0aGEgQ3QuCi0gICAgQXJjYXRhLCBDQSAgOTU1MjEtNDg4NAotCi0gICAgZ3JhZHlAbmV0Y29tLmNvbQotICAgIGdyYWR5QG5vcnRoY29hc3QuY29tCi0KLVRoZSAiVUsgRW5nbGlzaCBXb3JkbGlzdCBXaXRoIEZyZXF1ZW5jeSBDbGFzc2lmaWNhdGlvbiIgaXMgYWxzbyBpbiB0aGUKLVB1YmxpYyBEb21haW46Ci0KLSAgRGF0ZTogU2F0LCAwOCBKdWwgMjAwMCAyMDoyNzoyMSArMDEwMAotICBGcm9tOiBCcmlhbiBLZWxrIDxCcmlhbi5LZWxrQGNsLmNhbS5hYy51az4KLQotPiBJIHdhcyB3b25kZXJpbmcgd2hhdCB0aGUgY29weXJpZ2h0IHN0YXR1cyBvZiB5b3VyICJVSyBFbmdsaXNoCi0gID4gV29yZGxpc3QgV2l0aCBGcmVxdWVuY3kgQ2xhc3NpZmljYXRpb24iIHdvcmQgbGlzdCBhcyBpdCBzZWVtcyB0bwotICA+IGJlIGxhY2tpbmcgYW55IGNvcHlyaWdodCBub3RpY2UuCi0KLSAgVGhlcmUgd2VyZSBtYW55IG1hbnkgc291cmNlcyBpbiB0b3RhbCwgYnV0IGFueSB0ZXh0IG1hcmtlZAotICAiY29weXJpZ2h0IiB3YXMgYXZvaWRlZC4gTG9jYWxseS13cml0dGVuIGRvY3VtZW50YXRpb24gd2FzIG9uZQotICBzb3VyY2UuIEFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgbGlzdCByZXNpZGVkIGluIGEgZmlsZXNwYWNlIGNhbGxlZAotICBQVUJMSUMgb24gdGhlIFVuaXZlcnNpdHkgbWFpbmZyYW1lLCBiZWNhdXNlIGl0IHdhcyBjb25zaWRlcmVkIHB1YmxpYwotICBkb21haW4uCi0KLSAgRGF0ZTogVHVlLCAxMSBKdWwgMjAwMCAxOTozMTozNCArMDEwMAotCi0gID4gU28gYXJlIHlvdSBzYXlpbmcgeW91ciB3b3JkIGxpc3QgaXMgYWxzbyBpbiB0aGUgcHVibGljIGRvbWFpbj8KLQotICBUaGF0IGlzIHRoZSBpbnRlbnRpb24uCi0KLVRoZSAyMCBsZXZlbCBpbmNsdWRlcyBmcmVxdWVuY3kgY2xhc3NlcyA3LTE1IGZyb20gQnJpYW4ncyB3b3JkIGxpc3QuCi0KLVRoZSAzNSBsZXZlbCBpbmNsdWRlcyBmcmVxdWVuY3kgY2xhc3NlcyAyLTYgYW5kIHdvcmRzIGFwcGVhcmluZyBpbiBhdAotbGVhc3QgMTEgb2YgMTIgZGljdGlvbmFyaWVzIGFzIGluZGljYXRlZCBpbiB0aGUgMTJEaWN0cyBwYWNrYWdlLiAgQWxsCi13b3JkcyBmcm9tIHRoZSAxMkRpY3RzIHBhY2thZ2UgaGF2ZSBoYWQgbGlrZWx5IGluZmxlY3Rpb25zIGFkZGVkIHZpYQotbXkgaW5mbGVjdGlvbiBkYXRhYmFzZS4KLQotVGhlIDEyRGljdHMgcGFja2FnZSBhbmQgU3VwcGxlbWVudCBpcyBpbiB0aGUgUHVibGljIERvbWFpbi4KLQotVGhlIFdvcmROZXQgZGF0YWJhc2UsIHdoaWNoIHdhcyB1c2VkIGluIHRoZSBjcmVhdGlvbiBvZiB0aGUKLUluZmxlY3Rpb25zIGRhdGFiYXNlLCBpcyB1bmRlciB0aGUgZm9sbG93aW5nIGNvcHlyaWdodDoKLQotICBUaGlzIHNvZnR3YXJlIGFuZCBkYXRhYmFzZSBpcyBiZWluZyBwcm92aWRlZCB0byB5b3UsIHRoZSBMSUNFTlNFRSwKLSAgYnkgUHJpbmNldG9uIFVuaXZlcnNpdHkgdW5kZXIgdGhlIGZvbGxvd2luZyBsaWNlbnNlLiAgQnkgb2J0YWluaW5nLAotICB1c2luZyBhbmQvb3IgY29weWluZyB0aGlzIHNvZnR3YXJlIGFuZCBkYXRhYmFzZSwgeW91IGFncmVlIHRoYXQgeW91Ci0gIGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwgYW5kIHdpbGwgY29tcGx5IHdpdGggdGhlc2UgdGVybXMgYW5kCi0gIGNvbmRpdGlvbnMuOgotCi0gIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKLSAgZGF0YWJhc2UgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgb3IKLSAgcm95YWx0eSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB5b3UgYWdyZWUgdG8gY29tcGx5IHdpdGgKLSAgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlIGFuZCBzdGF0ZW1lbnRzLCBpbmNsdWRpbmcgdGhlCi0gIGRpc2NsYWltZXIsIGFuZCB0aGF0IHRoZSBzYW1lIGFwcGVhciBvbiBBTEwgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwKLSAgZGF0YWJhc2UgYW5kIGRvY3VtZW50YXRpb24sIGluY2x1ZGluZyBtb2RpZmljYXRpb25zIHRoYXQgeW91IG1ha2UKLSAgZm9yIGludGVybmFsIHVzZSBvciBmb3IgZGlzdHJpYnV0aW9uLgotCi0gIFdvcmROZXQgMS42IENvcHlyaWdodCAxOTk3IGJ5IFByaW5jZXRvbiBVbml2ZXJzaXR5LiAgQWxsIHJpZ2h0cwotICByZXNlcnZlZC4KLQotICBUSElTIFNPRlRXQVJFIEFORCBEQVRBQkFTRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBQUklOQ0VUT04KLSAgVU5JVkVSU0lUWSBNQUtFUyBOTyBSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUywgRVhQUkVTUyBPUgotICBJTVBMSUVELiAgQlkgV0FZIE9GIEVYQU1QTEUsIEJVVCBOT1QgTElNSVRBVElPTiwgUFJJTkNFVE9OCi0gIFVOSVZFUlNJVFkgTUFLRVMgTk8gUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlQtCi0gIEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQU5ZIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBUSEFUIFRIRSBVU0UgT0YgVEhFCi0gIExJQ0VOU0VEIFNPRlRXQVJFLCBEQVRBQkFTRSBPUiBET0NVTUVOVEFUSU9OIFdJTEwgTk9UIElORlJJTkdFIEFOWQotICBUSElSRCBQQVJUWSBQQVRFTlRTLCBDT1BZUklHSFRTLCBUUkFERU1BUktTIE9SIE9USEVSIFJJR0hUUy4KLQotICBUaGUgbmFtZSBvZiBQcmluY2V0b24gVW5pdmVyc2l0eSBvciBQcmluY2V0b24gbWF5IG5vdCBiZSB1c2VkIGluCi0gIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUKLSAgYW5kL29yIGRhdGFiYXNlLiAgVGl0bGUgdG8gY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUsIGRhdGFiYXNlIGFuZAotICBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHNoYWxsIGF0IGFsbCB0aW1lcyByZW1haW4gd2l0aAotICBQcmluY2V0b24gVW5pdmVyc2l0eSBhbmQgTElDRU5TRUUgYWdyZWVzIHRvIHByZXNlcnZlIHNhbWUuCi0KLVRoZSA1MCBsZXZlbCBpbmNsdWRlcyBCcmlhbidzIGZyZXF1ZW5jeSBjbGFzcyAxLCB3b3JkcyB3b3JkcyBhcHBlYXJpbmcKLWluIGF0IGxlYXN0IDUgb2YgMTIgb2YgdGhlIGRpY3Rpb25hcmllcyBhcyBpbmRpY2F0ZWQgaW4gdGhlIDEyRGljdHMKLXBhY2thZ2UsIGFuZCB1cHBlcmNhc2Ugd29yZHMgaW4gYXQgbGVhc3QgNCBvZiB0aGUgcHJldmlvdXMgMTIKLWRpY3Rpb25hcmllcy4gIEEgZGVjZW50IG51bWJlciBvZiBwcm9wZXIgbmFtZXMgaXMgYWxzbyBpbmNsdWRlZDogVGhlCi10b3AgMTAwMCBtYWxlLCBmZW1hbGUsIGFuZCBMYXN0IG5hbWVzIGZyb20gdGhlIDE5OTAgQ2Vuc3VzIHJlcG9ydDsgYQotbGlzdCBvZiBuYW1lcyBzZW50IHRvIG1lIGJ5IEFsYW4gQmVhbGU7IGFuZCBhIGZldyBuYW1lcyB0aGF0IEkgYWRkZWQKLW15c2VsZi4gIEZpbmFsbHkgYSBzbWFsbCBsaXN0IG9mIGFiYnJldmlhdGlvbnMgbm90IGNvbW1vbmx5IGZvdW5kIGluCi1vdGhlciB3b3JkIGxpc3RzIGlzIGluY2x1ZGVkLgotCi1UaGUgbmFtZSBmaWxlcyBmb3JtIHRoZSBDZW5zdXMgcmVwb3J0IGlzIGEgZ292ZXJubWVudCBkb2N1bWVudCB3aGljaCBJCi1kb24ndCB0aGluayBjYW4gYmUgY29weXJpZ2h0ZWQuCi0KLVRoZSBuYW1lIGxpc3QgZnJvbSBBbGFuIEJlYWxlIGlzIGFsc28gZGVyaXZlZCBmcm9tIHRoZSBsaW51eCB3b3JkcwotbGlzdCwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZSBERUMgbGlzdC4gIEhlIGFsc28gYWRkZWQgYSBidW5jaCBvZgotbWlzY2VsbGFuZW91cyBuYW1lcyB0byB0aGUgbGlzdCwgd2hpY2ggaGUgcmVsZWFzZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0KLVRoZSBERUMgV29yZCBsaXN0IGRvZXNuJ3QgaGF2ZSBhIGZvcm1hbCBuYW1lLiAgSXQgaXMgbGFiZWxlZCBhcyAiRklMRToKLWVuZ2xpc2gud29yZHM7IFZFUlNJT046IERFQy1TUkMtOTItMDQtMDUiIGFuZCB3YXMgcHV0IHRvZ2V0aGVyIGJ5IEpvcmdlCi1TdG9sZmkgPHN0b2xmaUBzcmMuZGVjLmNvbT4gREVDIFN5c3RlbXMgUmVzZWFyY2ggQ2VudGVyLiAgVGhlIERFQyBXb3JkCi1saXN0IGhhcyB0aGUgZm9sbG93aW5nIGNvcHlyaWdodCBzdGF0ZW1lbnQ6Ci0KLSAgKE5PTi0pQ09QWVJJR0hUIFNUQVRVUwotCi0gIFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwgYWxsIHRoZSBmaWxlcyBJIHVzZWQgdG8gYnVpbGQgdGhlc2UKLSAgd29yZGxpc3RzIHdlcmUgYXZhaWxhYmxlIGZvciBwdWJsaWMgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIGF0IGxlYXN0Ci0gIGZvciBub24tY29tbWVyY2lhbCBwdXJwb3Nlcy4gIEkgaGF2ZSBjb25maXJtZWQgdGhpcyBhc3N1bXB0aW9uIHdpdGgKLSAgdGhlIGF1dGhvcnMgb2YgdGhlIGxpc3RzLCB3aGVuZXZlciB0aGV5IHdlcmUga25vd24uCi0KLSAgVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRvIGFzc3VtZSB0aGF0IHRoZSB3b3JkbGlzdHMgaW4gdGhpcyBwYWNrYWdlCi0gIGNhbiBhbHNvIGJlIGZyZWVseSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBtb2RpZmllZCwgYW5kIHVzZWQgZm9yCi0gIHBlcnNvbmFsLCBlZHVjYXRpb25hbCwgYW5kIHJlc2VhcmNoIHB1cnBvc2VzLiAgKFVzZSBvZiB0aGVzZSBmaWxlcyBpbgotICBjb21tZXJjaWFsIHByb2R1Y3RzIG1heSByZXF1aXJlIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIERFQyBhbmQvb3IKLSAgdGhlIGF1dGhvcnMgb2YgdGhlIG9yaWdpbmFsIGxpc3RzLikKLQotICBXaGVuZXZlciB5b3UgZGlzdHJpYnV0ZSBhbnkgb2YgdGhlc2Ugd29yZGxpc3RzLCBwbGVhc2UgZGlzdHJpYnV0ZQotICBhbHNvIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuICBJZiB5b3UgZGlzdHJpYnV0ZSBhIG1vZGlmaWVkCi0gIGNvcHkgb2Ygb25lIG9mIHRoZXNlIHdvcmRsaXN0cywgcGxlYXNlIGluY2x1ZGUgdGhlIG9yaWdpbmFsIFJFQURNRQotICBmaWxlIHdpdGggYSBub3RlIGV4cGxhaW5pbmcgeW91ciBtb2RpZmljYXRpb25zLiAgWW91ciB1c2VycyB3aWxsCi0gIHN1cmVseSBhcHByZWNpYXRlIHRoYXQuCi0KLSAgKE5PLSlXQVJSQU5UWSBESVNDTEFJTUVSCi0KLSAgVGhlc2UgZmlsZXMsIGxpa2UgdGhlIG9yaWdpbmFsIHdvcmRsaXN0cyBvbiB3aGljaCB0aGV5IGFyZSBiYXNlZCwKLSAgYXJlIHN0aWxsIHZlcnkgaW5jb21wbGV0ZSwgdW5ldmVuLCBhbmQgaW5jb25zaXRlbnQsIGFuZCBwcm9iYWJseQotICBjb250YWluIG1hbnkgZXJyb3JzLiAgVGhleSBhcmUgb2ZmZXJlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5Ci0gIG9mIGNvcnJlY3RuZXNzIG9yIGZpdG5lc3MgZm9yIGFueSBwYXJ0aWN1bGFyIHB1cnBvc2UuICBOZWl0aGVyIEkgbm9yCi0gIG15IGVtcGxveWVyIGNhbiBiZSBoZWxkIHJlc3BvbnNpYmxlIGZvciBhbnkgbG9zc2VzIG9yIGRhbWFnZXMgdGhhdAotICBtYXkgcmVzdWx0IGZyb20gdGhlaXIgdXNlLgotCi1Ib3dldmVyIHNpbmNlIHRoaXMgV29yZCBMaXN0IGlzIHVzZWQgaW4gdGhlIGxpbnV4LndvcmRzIHBhY2thZ2Ugd2hpY2gKLXRoZSBhdXRob3IgY2xhaW1zIGlzIGZyZWUgb2YgYW55IGNvcHlyaWdodCBJIGFzc3VtZSBpdCBpcyBPSyB0byB1c2UKLWZvciBtb3N0IHB1cnBvc2VzLiAgSWYgeW91IHdhbnQgdG8gdXNlIHRoaXMgaW4gYSBjb21tZXJjaWFsIHByb2plY3QKLWFuZCB0aGlzIGNvbmNlcm5zIHlvdSB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgREVDIHdvcmQgbGlzdCBjYW4KLWVhc2lseSBiZSByZW1vdmVkIHdpdGhvdXQgbXVjaCBzYWNyaWZpY2UgaW4gcXVhbGl0eSBhcyBvbmx5IHRoZSBuYW1lCi1saXN0cyB3ZXJlIHVzZWQuCi0KLVRoZSBmaWxlIHNwZWNpYWwtamFyZ29uLjUwIHVzZXMgY29tbW9uLmxzdCBhbmQgd29yZC5sc3QgZnJvbSB0aGUKLSJVbm9mZmljaWFsIEphcmdvbiBGaWxlIFdvcmQgTGlzdHMiIHdoaWNoIGlzIGRlcml2ZWQgZnJvbSAiVGhlIEphcmdvbgotRmlsZSIuICBBbGwgb2Ygd2hpY2ggaXMgaW4gdGhlIFB1YmxpYyBEb21haW4uICBUaGlzIGZpbGUgYWxzbyBjb250YWluCi1hIGZldyBleHRyYSBVTklYIHRlcm1zIHdoaWNoIGFyZSBmb3VuZCBpbiB0aGUgZmlsZSAidW5peC10ZXJtcyIgaW4gdGhlCi1zcGVjaWFsLyBkaXJlY3RvcnkuCi0KLVRoZSA2MCBsZXZlbCBpbmNsdWRlcyBCcmlhbidzIGZyZXF1ZW5jeSBjbGFzcyAwIGFuZCBhbGwgd29yZHMKLWFwcGVhcmluZyBpbiBhdCBsZWFzdCAyIG9mIHRoZSAxMiBkaWN0aW9uYXJpZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQotMTJEaWN0cyBwYWNrYWdlLiAgQSBsYXJnZSBudW1iZXIgb2YgbmFtZXMgYXJlIGFsc28gaW5jbHVkZWQ6IFRoZSA0LDk0NgotZmVtYWxlIG5hbWVzIGFuZCAzLDg5NyBtYWxlIG5hbWVzIGZyb20gdGhlIE1Xb3JkcyBwYWNrYWdlIGFuZCB0aGUKLWZpbGVzICJjb21wdXRlci5uYW1lcyIsICJtaXNjLm5hbWVzIiwgYW5kICJvcmcubmFtZXMiIGZyb20gdGhlIERFQwotcGFja2FnZS4KLQotVGhlIDY1IGxldmVsIGluY2x1ZGVzIHdvcmRzIGZvdW5kIGluIHRoZSBJc3BlbGwgIm1lZGl1bSIgd29yZCBsaXN0LgotVGhlIElzcGVsbCB3b3JkIGxpc3RzIGFyZSB1bmRlciB0aGUgc2FtZSBjb3B5cmlnaHQgb2YgSXNwZWxsIGl0c2VsZgotd2hpY2ggaXM6Ci0KLSAgQ29weXJpZ2h0IDE5OTMsIEdlb2ZmIEt1ZW5uaW5nLCBHcmFuYWRhIEhpbGxzLCBDQQotICBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgYXJlIG1ldDoKLQotICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAgMy4gQWxsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHNvdXJjZSBjb2RlIG11c3QgYmUgY2xlYXJseSBtYXJrZWQgYXMKLSAgICAgc3VjaC4gIEJpbmFyeSByZWRpc3RyaWJ1dGlvbnMgYmFzZWQgb24gbW9kaWZpZWQgc291cmNlIGNvZGUKLSAgICAgbXVzdCBiZSBjbGVhcmx5IG1hcmtlZCBhcyBtb2RpZmllZCB2ZXJzaW9ucyBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAgNC4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotICAgICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IEdlb2ZmIEt1ZW5uaW5nIGFuZAotICAgICBvdGhlciB1bnBhaWQgY29udHJpYnV0b3JzLgotICA1LiBUaGUgbmFtZSBvZiBHZW9mZiBLdWVubmluZyBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCi0gICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKLSAgICAgd3JpdHRlbiBwZXJtaXNzaW9uLgotCi0gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR0VPRkYgS1VFTk5JTkcgQU5EIENPTlRSSUJVVE9SUyBgYEFTCi0gIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCi0gIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdFT0ZGCi0gIEtVRU5OSU5HIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAotICBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAotICBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCi0gIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotVGhlIDcwIGxldmVsIGluY2x1ZGVzIHRoZSA3NCw1NTAgY29tbW9uIGRpY3Rpb25hcnkgd29yZHMgYW5kIHRoZSAyMSw5ODYgbmFtZXMKLWxpc3QgZnJvbSB0aGUgTVdvcmRzIHBhY2thZ2UuICBUaGUgY29tbW9uIGRpY3Rpb25hcnkgd29yZHMsIGxpa2UgdGhvc2UKLWZyb20gdGhlIDEyRGljdHMgcGFja2FnZSwgaGF2ZSBoYWQgYWxsIGxpa2VseSBpbmZsZWN0aW9ucyBhZGRlZC4KLQotVGhlIDgwIGxldmVsIGluY2x1ZGVzIHRoZSBFTkFCTEUgd29yZCBsaXN0LCBhbGwgdGhlIGxpc3RzIGluIHRoZQotRU5BQkxFIHN1cHBsZW1lbnQgcGFja2FnZSAoZXhjZXB0IGZvciBBQkxFKSwgdGhlICJVSyBBZHZhbmNlZCBDcnlwdGljcwotRGljdGlvbmFyeSIgKFVLQUNEKSwgdGhlIGxpc3Qgb2Ygc2lnbmF0dXJlIHdvcmRzIGluIGZyb20gWUFXTCBwYWNrYWdlLAotYW5kIHRoZSAxMCwxOTYgcGxhY2VzIGxpc3QgZnJvbSB0aGUgTVdvcmRzIHBhY2thZ2UuCi0KLVRoZSBFTkFCTEUgcGFja2FnZSwgbWFpbnRlZCBieSBNXENvb3BlciA8dGhlZ3JlbmRlbEB0aGVyaXZlci5jb20+LAotaXMgaW4gdGhlIFB1YmxpYyBEb21haW46Ci0KLSAgVGhlIEVOQUJMRSBtYXN0ZXIgd29yZCBsaXN0LCBXT1JELkxTVCwgaXMgaGVyZXdpdGggZm9ybWFsbHkgcmVsZWFzZWQKLSAgaW50byB0aGUgUHVibGljIERvbWFpbi4gQW55b25lIGlzIGZyZWUgdG8gdXNlIGl0IG9yIGRpc3RyaWJ1dGUgaXQgaW4KLSAgYW55IG1hbm5lciB0aGV5IHNlZSBmaXQuIE5vIGZlZSBvciByZWdpc3RyYXRpb24gaXMgcmVxdWlyZWQgZm9yIGl0cwotICB1c2Ugbm9yIGFyZSAiY29udHJpYnV0aW9ucyIgc29saWNpdGVkIChpZiB5b3UgZmVlbCB5b3UgYWJzb2x1dGVseQotICBtdXN0IGNvbnRyaWJ1dGUgc29tZXRoaW5nIGZvciB5b3VyIG93biBwZWFjZSBvZiBtaW5kLCB0aGUgYXV0aG9ycyBvZgotICB0aGUgRU5BQkxFIGxpc3QgYXNrIHRoYXQgeW91IG1ha2UgYSBkb25hdGlvbiBvbiB0aGVpciBiZWhhbGYgdG8geW91cgotICBmYXZvcml0ZSBjaGFyaXR5KS4gVGhpcyB3b3JkIGxpc3QgaXMgb3VyIGdpZnQgdG8gdGhlIFNjcmFiYmxlCi0gIGNvbW11bml0eSwgYXMgYW4gYWx0ZXJuYXRlIHRvICJvZmZpY2lhbCIgd29yZCBsaXN0cy4gR2FtZSBkZXNpZ25lcnMKLSAgbWF5IGZlZWwgZnJlZSB0byBpbmNvcnBvcmF0ZSB0aGUgV09SRC5MU1QgaW50byB0aGVpciBnYW1lcy4gUGxlYXNlCi0gIG1lbnRpb24gdGhlIHNvdXJjZSBhbmQgY3JlZGl0IHVzIGFzIG9yaWdpbmF0b3JzIG9mIHRoZSBsaXN0LiBOb3RlCi0gIHRoYXQgaWYgeW91LCBhcyBhIGdhbWUgZGVzaWduZXIsIHVzZSB0aGUgV09SRC5MU1QgaW4geW91ciBwcm9kdWN0LAotICB5b3UgbWF5IHN0aWxsIGNvcHlyaWdodCBhbmQgcHJvdGVjdCB5b3VyIHByb2R1Y3QsIGJ1dCB5b3UgbWF5ICpub3QqCi0gIGxlZ2FsbHkgY29weXJpZ2h0IG9yIGluIGFueSB3YXkgcmVzdHJpY3QgcmVkaXN0cmlidXRpb24gb2YgdGhlCi0gIFdPUkQuTFNUIHBvcnRpb24gb2YgeW91ciBwcm9kdWN0LiBUaGlzICptYXkqIHVuZGVyIGxhdyByZXN0cmljdCB5b3VyCi0gIHJpZ2h0cyB0byByZXN0cmljdCB5b3VyIHVzZXJzJyByaWdodHMsIGJ1dCB0aGF0IGlzIG9ubHkgZmFpci4KLQotVUtBQ0QsIGJ5IEogUm9zcyBCZXJlc2ZvcmQgPHJvc3NAYnJ5c29uLmRlbW9uLmNvLnVrPiwgaXMgdW5kZXIgdGhlCi1mb2xsb3dpbmcgY29weXJpZ2h0OgotCi0gIENvcHlyaWdodCAoYykgSiBSb3NzIEJlcmVzZm9yZCAxOTkzLTE5OTkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0KLSAgVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbiBpcyBwbGFjZWQgb24gdGhlIHVzZSBvZiB0aGlzIHB1YmxpY2F0aW9uOgotICBpZiBUaGUgVUsgQWR2YW5jZWQgQ3J5cHRpY3MgRGljdGlvbmFyeSBpcyB1c2VkIGluIGEgc29mdHdhcmUgcGFja2FnZQotICBvciByZWRpc3RyaWJ1dGVkIGluIGFueSBmb3JtLCB0aGUgY29weXJpZ2h0IG5vdGljZSBtdXN0IGJlCi0gIHByb21pbmVudGx5IGRpc3BsYXllZCBhbmQgdGhlIHRleHQgb2YgdGhpcyBkb2N1bWVudCBtdXN0IGJlIGluY2x1ZGVkCi0gIHZlcmJhdGltLgotCi0gIFRoZXJlIGFyZSBubyBvdGhlciByZXN0cmljdGlvbnM6IEkgd291bGQgbGlrZSB0byBzZWUgdGhlIGxpc3QKLSAgZGlzdHJpYnV0ZWQgYXMgd2lkZWx5IGFzIHBvc3NpYmxlLgotCi1UaGUgOTUgbGV2ZWwgaW5jbHVkZXMgdGhlIDM1NCw5ODQgc2luZ2xlIHdvcmRzIGFuZCAyNTYsNzcyIGNvbXBvdW5kCi13b3JkcyBmcm9tIHRoZSBNV29yZHMgcGFja2FnZSwgQUJMRS5MU1QgZnJvbSB0aGUgRU5BQkxFIFN1cHBsZW1lbnQsCi1hbmQgc29tZSBhZGRpdGlvbmFsIHdvcmRzIGZvdW5kIGluIG15IHBhcnQtb2Ytc3BlZWNoIGRhdGFiYXNlIHRoYXQKLXdlcmUgbm90IGZvdW5kIGFueXdoZXJlIGVsc2UuCi0KLUFjY2VudCBpbmZvcm1hdGlvbiB3YXMgdGFrZW4gZnJvbSBVS0FDRC4KLQotTXkgVkFSQ09OIHBhY2thZ2Ugd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBBbWVyaWNhbiwgQnJpdGlzaCwgYW5kCi1DYW5hZGlhbiB3b3JkIGxpc3QuIAotCi1TaW5jZSB0aGUgb3JpZ2luYWwgd29yZCBsaXN0cyB1c2VkIHVzZWQgaW4gdGhlCi1WQVJDT04gcGFja2FnZSBjYW1lIGZyb20gdGhlIElzcGVsbCBkaXN0cmlidXRpb24gdGhleSBhcmUgdW5kZXIgdGhlCi1Jc3BlbGwgY29weXJpZ2h0LgotCi1UaGUgdmFyaWFudCB3b3JkIGxpc3RzIHdlcmUgY3JlYXRlZCBmcm9tIGEgbGlzdCBvZiB2YXJpYW50cyBmb3VuZCBpbgotdGhlIDEyZGljdHMgc3VwcGxlbWVudCBwYWNrYWdlIGFzIHdlbGwgYXMgYSBsaXN0IG9mIHZhcmlhbnRzIEkgY3JlYXRlZAotbXlzZWxmLgotCi0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQotZW5fR0IKLQotVGhpcyBkaWN0aW9uYXJ5IHdhcyBpbml0aWFsbHkgYmFzZWQgb24gYSBzdWJzZXQgb2YgdGhlIAotb3JpZ2luYWwgRW5nbGlzaCB3b3JkbGlzdCBjcmVhdGVkIGJ5IEtldmluIEF0a2luc29uIGZvciAKLVBzcGVsbCBhbmQgIEFzcGVsbCBhbmQgdGh1cyBpcyBjb3ZlcmVkIGJ5IGhpcyBvcmlnaW5hbCAKLUxHUEwgbGljZW5jZS4gCi0KLUl0IGhhcyBiZWVuIGV4dGVuc2l2ZWx5IHVwZGF0ZWQgYnkgRGF2aWQgQmFydGxldHQsIEJyaWFuIEtlbGsKLWFuZCBBbmRyZXcgQnJvd246Ci0tIG51bWVyb3VzIEFtZXJpY2FuaXNtIGhhdmUgYmVlbiByZW1vdmVkCi0tIG51bWVyb3VzIEFtZXJpY2FuIHNwZWxsaW5ncyBoYXZlIGJlZW4gY29ycmVjdGVkCi0tIG1pc3Npbmcgd29yZHMgaGF2ZSBiZWVuIGFkZGVkCi0tIG1hbnkgZXJyb3JzIGhhdmUgYmVlbiBjb3JyZWN0ZWQKLS0gY29tcG91bmQgaHlwaGVuYXRlZCB3b3JkcyBoYXZlIGJlZW4gYWRkZWQgd2hlcmUgYXBwcm9wcmlhdGUKLQotVmFsdWFibGUgaW5wdXRzIHRvIHRoaXMgcHJvY2VzcyB3ZXJlIHJlY2VpdmVkIGZyb20gbWFueSBvdGhlciAKLXBlb3BsZSAtIGZhciB0b28gbnVtZXJvdXMgdG8gbmFtZS4gU2VyaW91cyB0aGFua3MgdG8geW91IGFsbAotZm9yIHlvdXIgZ3JlYXRseSBhcHByZWNpYXRlZCBoZWxwLgotCi1UaGlzIHdvcmQgbGlzdCBpcyBpbnRlbmRlZCB0byBiZSBhIGdvb2QgcmVwcmVzZW50YXRpb24gb2YKLWN1cnJlbnQgbW9kZXJuIEJyaXRpc2ggRW5nbGlzaCBhbmQgdGh1cyBpdCBzaG91bGQgYmUgYSBnb29kIAotYmFzaXMgZm9yIENvbW1vbndlYWx0aCBFbmdsaXNoIGluIG1vc3QgY291bnRyaWVzIG9mIHRoZSB3b3JsZCAKLW91dHNpZGUgTm9ydGggQW1lcmljYS4KLQotVGhlIGFmZml4IGZpbGUgaGFzIGJlZW4gY3JlYXRlZCBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaAotYnkgRGF2aWQgQmFydGxldHQgYW5kIEFuZHJldyBCcm93biwgYmFzZWQgb24gdGhlIHB1Ymxpc2hlZCAKLXJ1bGVzIGZvciBNeVNwZWxsIGFuZCBpcyBhbHNvIHByb3ZpZGVkIHVuZGVyIHRoZSBMR1BMLgotCi1JbiBjcmVhdGluZyB0aGUgYWZmaXggcnVsZXMgYW4gYXR0ZW1wdCBoYXMgYmVlbiBtYWRlIHRvIAotcmVwcm9kdWNlIHRoZSBtb3N0IGdlbmVyYWwgcnVsZXMgZm9yIEVuZ2xpc2ggd29yZAotZm9ybWF0aW9uLCByYXRoZXIgdGhhbiBtZXJlbHkgdXNlIGl0IGFzIGEgbWVhbnMgdG8KLWNvbXByZXNzIHRoZSBzaXplIG9mIHRoZSBkaWN0aW9uYXJ5LiBJdCBpcyBob3BlZCB0aGF0IHRoaXMKLXdpbGwgZmFjaWxpdGF0ZSBmdXR1cmUgbG9jYWxpc2F0aW9uIHRvIG90aGVyIHZhcmlhbnRzIG9mCi1FbmdsaXNoLgotCi1QbGVhc2UgbGV0IERhdmlkIEJhcnRsZXR0IDxkYmFydGxldHRAaWVlLm9yZz4ga25vdyBvZiBhbnkgCi1lcnJvcnMgdGhhdCB5b3UgZmluZC4KLQotVGhlIGN1cnJlbnQgcmVsZWFzZSBpcyBSIDEuMTQsIDE1LzEyLzAyIG9yIGxhdGVyCi0KLS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCi1lbl9OWgotCi1JLiBDb3B5cmlnaHQKLUlJLiBDb3B5aW5nIChMaWNlbmNlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1JLiBDb3B5cmlnaHQKLQotTlogRW5nbGlzaCBEaWN0aW9uYXJ5IHYwLjkgYmV0YSAtIEJ1aWxkIDA2U0VQMDMKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1OQiBUaGlzIGlzIGFuIGluaXRpYWwgdmVyc2lvbiwgcGxlYXNlIGNoZWNrOgotaHR0cDovL2xpbmd1Y29tcG9uZW50Lm9wZW5vZmZpY2Uub3JnL2Rvd25sb2FkX2RpY3Rpb25hcnkuaHRtbAotb3IKLWh0dHA6Ly93d3cuZ2lybHphLmNvbS9kaWN0aW9uYXJ5L2Rvd25sb2FkLmh0bWwKLWZvciBhIGZpbmFsIHZlcnNpb24sIGFmdGVyIGEgbGl0dGxlIHdoaWxlIChubyBodXJyeSkuCi0KLVRoaXMgZGljdGlvbmFyeSBpcyBiYXNlZCBvbiB0aGUgZW5fR0IgTXlzcGVsbCBkaWN0aW9uYXJ5IAotd2hpY2ggaW4gdHVybiB3YXMgaW5pdGlhbGx5IGJhc2VkIG9uIGEgc3Vic2V0IG9mIHRoZSAKLW9yaWdpbmFsIEVuZ2xpc2ggd29yZGxpc3QgY3JlYXRlZCBieSBLZXZpbiBBdGtpbnNvbiBmb3IgCi1Qc3BlbGwgYW5kICBBc3BlbGwgYW5kIHRodXMgaXMgY292ZXJlZCBieSBoaXMgb3JpZ2luYWwgCi1MR1BMIGxpY2VuY2UuIAotCi0KLUludHJvZHVjdGlvbgotfn5+fn5+fn5+fn5+Ci1lbl9OWi5kaWMgaGFzIGJlZW4gYWx0ZXJlZCB0byBpbmNsdWRlIE5ldyBaZWFsYW5kIHBsYWNlcywKLWluY2x1ZGluZyBtYWpvciBjaXRpZXMgYW5kIHRvd25zLCBhbmQgbWFqb3Igc3VidXJicy4gSXQKLWFsc28gY29udGFpbnMgTlogd29yZHMsIG9yZ2FuaXNhdGlvbnMgYW5kIGV4cHJlc3Npb25zLgotCi1lbl9OWi5hZmYgaGFzIGhhZCBhIGZldyBSRVBsYWNlIHN0cmluZ3MgYWRkZWQsIGJ1dCBpcwotYmFzaWNhbGx5IHVuY2hhbmdlZC4KLQotCi1BY2tub3dsZWRnZW1lbnRzCi1+fn5+fn5+fn5+fn5+fn5+Ci1UaGFua3MgbXVzdCBnbyB0byB0aGUgb3JpZ2luYWwgY3JlYXRvcnMgb2YgdGhlIEJyaXRpc2gKLWRpY3Rpb25hcnksIERhdmlkIEJhcnRsZXR0LCBCcmlhbiBLZWxrIGFuZCBBbmRyZXcgQnJvd24uCi0KLUkgd291bGRuJ3QgaGF2ZSBzdGFydGVkIHRoaXMgd2l0aG91dCBzZWVpbmcgdGhlIEF1c3RyYWxpYW4KLWRpY3Rpb25hcnksIHRoYW5rcyBLZWx2aW4gRWxkcmlkZ2UsIEplYW4gSG9sbGlzIFdlYmVyIGFuZAotRGF2aWQgV2lsc29uLgotCi1BbmQgdGhhbmsgeW91IHRvIGFsbCB3aG8ndmUgY29udHJpYnV0ZWQgdG8gT3Blbk9mZmljZS5vcmcuCi0KLQotTGljZW5zZQotfn5+fn5+fgotVGhpcyBkaWN0aW9uYXJ5IGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUxpY2Vuc2UsIHZpZXdhYmxlIGF0IGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9sZXNzZXIuaHRtbAotCi0KLUlzc3Vlcwotfn5+fn5+Ci1NYW55IG9mIHRoZSBwcm9wZXIgbm91bnMgYWxyZWFkeSBpbiB0aGUgZGljdGlvbmFyeSBkbyBub3QgaGF2ZQotYW4gYWZmaXggZm9yICdzLgotQWxsIG15IG5ldyB3b3JkcyBzdGFydCBhZnRlciB0aGUgeidzIG9mIHRoZSBvcmlnaW5hbCBkaWN0aW9uYXJ5LgotCi0KLUNvbnRhY3QKLX5+fn5+fn4KLUNvbnRhY3QgVHJpc3RhbiBCdXJ0ZW5zaGF3IChob290eUBzbGluZ3Nob3QuY28ubnopIHdpdGggYW55IHdvcmRzLAotcGxhY2VzIG9yIG90aGVyIHN1Z2dlc3Rpb25zIGZvciB0aGUgZGljdGlvbmFyeS4KLQotCi0KLUlJLiBDb3B5aW5nCi0KLQkJICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKLQkJICAgICAgIFZlcnNpb24gMi4xLCBGZWJydWFyeSAxOTk5Ci0KLSBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKLSBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KLQotW1RoaXMgaXMgdGhlIGZpcnN0IHJlbGVhc2VkIHZlcnNpb24gb2YgdGhlIExlc3NlciBHUEwuICBJdCBhbHNvIGNvdW50cwotIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhlIEdOVSBMaWJyYXJ5IFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIsIGhlbmNlCi0gdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCi0KLQkJCSAgICBQcmVhbWJsZQotCi0gIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKLWZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCi1MaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCi1mcmVlIHNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuCi0KLSAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQotc3BlY2lhbGx5IGRlc2lnbmF0ZWQgc29mdHdhcmUgcGFja2FnZXMtLXR5cGljYWxseSBsaWJyYXJpZXMtLW9mIHRoZQotRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBvdGhlciBhdXRob3JzIHdobyBkZWNpZGUgdG8gdXNlIGl0LiAgWW91Ci1jYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCi10aGlzIGxpY2Vuc2Ugb3IgdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgdGhlIGJldHRlcgotc3RyYXRlZ3kgdG8gdXNlIGluIGFueSBwYXJ0aWN1bGFyIGNhc2UsIGJhc2VkIG9uIHRoZSBleHBsYW5hdGlvbnMgYmVsb3cuCi0KLSAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20gb2YgdXNlLAotbm90IHByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdAoteW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQotZm9yIHRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCk7IHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldAotaXQgaWYgeW91IHdhbnQgaXQ7IHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIGFuZCB1c2UgcGllY2VzIG9mCi1pdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KLXRoZXNlIHRoaW5ncy4KLQotICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCi1kaXN0cmlidXRvcnMgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZXNlCi1yaWdodHMuICBUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IKLXlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KLQotICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBsaWJyYXJ5LCB3aGV0aGVyIGdyYXRpcwotb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQoteW91LiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlIHNvdXJjZQotY29kZS4gIElmIHlvdSBsaW5rIG90aGVyIGNvZGUgd2l0aCB0aGUgbGlicmFyeSwgeW91IG11c3QgcHJvdmlkZQotY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCi13aXRoIHRoZSBsaWJyYXJ5IGFmdGVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCByZWNvbXBpbGluZwotaXQuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCi0KLSAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIGEgdHdvLXN0ZXAgbWV0aG9kOiAoMSkgd2UgY29weXJpZ2h0IHRoZQotbGlicmFyeSwgYW5kICgyKSB3ZSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlLCB3aGljaCBnaXZlcyB5b3UgbGVnYWwKLXBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgotCi0gIFRvIHByb3RlY3QgZWFjaCBkaXN0cmlidXRvciwgd2Ugd2FudCB0byBtYWtlIGl0IHZlcnkgY2xlYXIgdGhhdAotdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwotbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHRoZSByZWNpcGllbnRzIHNob3VsZCBrbm93Ci10aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwgdmVyc2lvbiwgc28gdGhhdCB0aGUgb3JpZ2luYWwKLWF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQotaW50cm9kdWNlZCBieSBvdGhlcnMuCi0MCi0gIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCi1hbnkgZnJlZSBwcm9ncmFtLiAgV2Ugd2lzaCB0byBtYWtlIHN1cmUgdGhhdCBhIGNvbXBhbnkgY2Fubm90Ci1lZmZlY3RpdmVseSByZXN0cmljdCB0aGUgdXNlcnMgb2YgYSBmcmVlIHByb2dyYW0gYnkgb2J0YWluaW5nIGEKLXJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0Ci1hbnkgcGF0ZW50IGxpY2Vuc2Ugb2J0YWluZWQgZm9yIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBtdXN0IGJlCi1jb25zaXN0ZW50IHdpdGggdGhlIGZ1bGwgZnJlZWRvbSBvZiB1c2Ugc3BlY2lmaWVkIGluIHRoaXMgbGljZW5zZS4KLQotICBNb3N0IEdOVSBzb2Z0d2FyZSwgaW5jbHVkaW5nIHNvbWUgbGlicmFyaWVzLCBpcyBjb3ZlcmVkIGJ5IHRoZQotb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGxpY2Vuc2UsIHRoZSBHTlUgTGVzc2VyCi1HZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAotaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBXZSB1c2UKLXRoaXMgbGljZW5zZSBmb3IgY2VydGFpbiBsaWJyYXJpZXMgaW4gb3JkZXIgdG8gcGVybWl0IGxpbmtpbmcgdGhvc2UKLWxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgotCi0gIFdoZW4gYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIGEgbGlicmFyeSwgd2hldGhlciBzdGF0aWNhbGx5IG9yIHVzaW5nCi1hIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKLWNvbWJpbmVkIHdvcmssIGEgZGVyaXZhdGl2ZSBvZiB0aGUgb3JpZ2luYWwgbGlicmFyeS4gIFRoZSBvcmRpbmFyeQotR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB0aGVyZWZvcmUgcGVybWl0cyBzdWNoIGxpbmtpbmcgb25seSBpZiB0aGUKLWVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsCi1QdWJsaWMgTGljZW5zZSBwZXJtaXRzIG1vcmUgbGF4IGNyaXRlcmlhIGZvciBsaW5raW5nIG90aGVyIGNvZGUgd2l0aAotdGhlIGxpYnJhcnkuCi0KLSAgV2UgY2FsbCB0aGlzIGxpY2Vuc2UgdGhlICJMZXNzZXIiIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYmVjYXVzZSBpdAotZG9lcyBMZXNzIHRvIHByb3RlY3QgdGhlIHVzZXIncyBmcmVlZG9tIHRoYW4gdGhlIG9yZGluYXJ5IEdlbmVyYWwKLVB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwotb2YgYW4gYWR2YW50YWdlIG92ZXIgY29tcGV0aW5nIG5vbi1mcmVlIHByb2dyYW1zLiAgVGhlc2UgZGlzYWR2YW50YWdlcwotYXJlIHRoZSByZWFzb24gd2UgdXNlIHRoZSBvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtYW55Ci1saWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCi1zcGVjaWFsIGNpcmN1bXN0YW5jZXMuCi0KLSAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KLWVuY291cmFnZSB0aGUgd2lkZXN0IHBvc3NpYmxlIHVzZSBvZiBhIGNlcnRhaW4gbGlicmFyeSwgc28gdGhhdCBpdCBiZWNvbWVzCi1hIGRlLWZhY3RvIHN0YW5kYXJkLiAgVG8gYWNoaWV2ZSB0aGlzLCBub24tZnJlZSBwcm9ncmFtcyBtdXN0IGJlCi1hbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCi1saWJyYXJ5IGRvZXMgdGhlIHNhbWUgam9iIGFzIHdpZGVseSB1c2VkIG5vbi1mcmVlIGxpYnJhcmllcy4gIEluIHRoaXMKLWNhc2UsIHRoZXJlIGlzIGxpdHRsZSB0byBnYWluIGJ5IGxpbWl0aW5nIHRoZSBmcmVlIGxpYnJhcnkgdG8gZnJlZQotc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLQotICBJbiBvdGhlciBjYXNlcywgcGVybWlzc2lvbiB0byB1c2UgYSBwYXJ0aWN1bGFyIGxpYnJhcnkgaW4gbm9uLWZyZWUKLXByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgotZnJlZSBzb2Z0d2FyZS4gIEZvciBleGFtcGxlLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgR05VIEMgTGlicmFyeSBpbgotbm9uLWZyZWUgcHJvZ3JhbXMgZW5hYmxlcyBtYW55IG1vcmUgcGVvcGxlIHRvIHVzZSB0aGUgd2hvbGUgR05VCi1vcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwotc3lzdGVtLgotCi0gIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCi11c2VycycgZnJlZWRvbSwgaXQgZG9lcyBlbnN1cmUgdGhhdCB0aGUgdXNlciBvZiBhIHByb2dyYW0gdGhhdCBpcwotbGlua2VkIHdpdGggdGhlIExpYnJhcnkgaGFzIHRoZSBmcmVlZG9tIGFuZCB0aGUgd2hlcmV3aXRoYWwgdG8gcnVuCi10aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgotCi0gIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCi1tb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKLSJ3b3JrIGJhc2VkIG9uIHRoZSBsaWJyYXJ5IiBhbmQgYSAid29yayB0aGF0IHVzZXMgdGhlIGxpYnJhcnkiLiAgVGhlCi1mb3JtZXIgY29udGFpbnMgY29kZSBkZXJpdmVkIGZyb20gdGhlIGxpYnJhcnksIHdoZXJlYXMgdGhlIGxhdHRlciBtdXN0Ci1iZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KLQwKLQkJICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKLSAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgotCi0gIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgotcHJvZ3JhbSB3aGljaCBjb250YWlucyBhIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgb3IKLW90aGVyIGF1dGhvcml6ZWQgcGFydHkgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YKLXRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KLUVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgotCi0gIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKLXByZXBhcmVkIHNvIGFzIHRvIGJlIGNvbnZlbmllbnRseSBsaW5rZWQgd2l0aCBhcHBsaWNhdGlvbiBwcm9ncmFtcwotKHdoaWNoIHVzZSBzb21lIG9mIHRob3NlIGZ1bmN0aW9ucyBhbmQgZGF0YSkgdG8gZm9ybSBleGVjdXRhYmxlcy4KLQotICBUaGUgIkxpYnJhcnkiLCBiZWxvdywgcmVmZXJzIHRvIGFueSBzdWNoIHNvZnR3YXJlIGxpYnJhcnkgb3Igd29yawotd2hpY2ggaGFzIGJlZW4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlc2UgdGVybXMuICBBICJ3b3JrIGJhc2VkIG9uIHRoZQotTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKLWNvcHlyaWdodCBsYXc6IHRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgTGlicmFyeSBvciBhCi1wb3J0aW9uIG9mIGl0LCBlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkCi1zdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCi1pbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4gdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKQotCi0gICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCi1tYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhIGxpYnJhcnksIGNvbXBsZXRlIHNvdXJjZSBjb2RlIG1lYW5zCi1hbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkgYXNzb2NpYXRlZAotaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCi1hbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBsaWJyYXJ5LgotCi0gIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Ci1jb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCi1ydW5uaW5nIGEgcHJvZ3JhbSB1c2luZyB0aGUgTGlicmFyeSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIG91dHB1dCBmcm9tCi1zdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCi1vbiB0aGUgTGlicmFyeSAoaW5kZXBlbmRlbnQgb2YgdGhlIHVzZSBvZiB0aGUgTGlicmFyeSBpbiBhIHRvb2wgZm9yCi13cml0aW5nIGl0KS4gIFdoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgTGlicmFyeSBkb2VzCi1hbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KLSAgCi0gIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIExpYnJhcnkncwotY29tcGxldGUgc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQKLXlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCi1hcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdAotYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkKLXdhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCi1MaWJyYXJ5LgotCi0gIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCi1hbmQgeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhCi1mZWUuCi0MCi0gIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIExpYnJhcnkgb3IgYW55IHBvcnRpb24KLW9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgY29weSBhbmQKLWRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQotYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLQotICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KLQotICAgIGIpIFlvdSBtdXN0IGNhdXNlIHRoZSBmaWxlcyBtb2RpZmllZCB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwotICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCi0KLSAgICBjKSBZb3UgbXVzdCBjYXVzZSB0aGUgd2hvbGUgb2YgdGhlIHdvcmsgdG8gYmUgbGljZW5zZWQgYXQgbm8KLSAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KLQotICAgIGQpIElmIGEgZmFjaWxpdHkgaW4gdGhlIG1vZGlmaWVkIExpYnJhcnkgcmVmZXJzIHRvIGEgZnVuY3Rpb24gb3IgYQotICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKLSAgICB0aGUgZmFjaWxpdHksIG90aGVyIHRoYW4gYXMgYW4gYXJndW1lbnQgcGFzc2VkIHdoZW4gdGhlIGZhY2lsaXR5Ci0gICAgaXMgaW52b2tlZCwgdGhlbiB5b3UgbXVzdCBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8gZW5zdXJlIHRoYXQsCi0gICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCi0gICAgdGFibGUsIHRoZSBmYWNpbGl0eSBzdGlsbCBvcGVyYXRlcywgYW5kIHBlcmZvcm1zIHdoYXRldmVyIHBhcnQgb2YKLSAgICBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwuCi0KLSAgICAoRm9yIGV4YW1wbGUsIGEgZnVuY3Rpb24gaW4gYSBsaWJyYXJ5IHRvIGNvbXB1dGUgc3F1YXJlIHJvb3RzIGhhcwotICAgIGEgcHVycG9zZSB0aGF0IGlzIGVudGlyZWx5IHdlbGwtZGVmaW5lZCBpbmRlcGVuZGVudCBvZiB0aGUKLSAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQotICAgIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGZ1bmN0aW9uIG9yIHRhYmxlIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0Ci0gICAgYmUgb3B0aW9uYWw6IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgaXQsIHRoZSBzcXVhcmUKLSAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQotCi1UaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCi1pZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAotYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCi10aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCi1zZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKLWRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAotb24gdGhlIExpYnJhcnksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCi10aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQotZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlCi1pdC4KLQotVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Ci15b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KLWV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgotY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgTGlicmFyeS4KLQotSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQotd2l0aCB0aGUgTGlicmFyeSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnkpIG9uIGEgdm9sdW1lIG9mCi1hIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgotdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KLQotICAzLiBZb3UgbWF5IG9wdCB0byBhcHBseSB0aGUgdGVybXMgb2YgdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYwotTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwotdGhpcywgeW91IG11c3QgYWx0ZXIgYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlLCBzbwotdGhhdCB0aGV5IHJlZmVyIHRvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLAotaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQotb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaGFzIGFwcGVhcmVkLCB0aGVuIHlvdSBjYW4gc3BlY2lmeQotdGhhdCB2ZXJzaW9uIGluc3RlYWQgaWYgeW91IHdpc2guKSAgRG8gbm90IG1ha2UgYW55IG90aGVyIGNoYW5nZSBpbgotdGhlc2Ugbm90aWNlcy4KLQwKLSAgT25jZSB0aGlzIGNoYW5nZSBpcyBtYWRlIGluIGEgZ2l2ZW4gY29weSwgaXQgaXMgaXJyZXZlcnNpYmxlIGZvcgotdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKLXN1YnNlcXVlbnQgY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgZnJvbSB0aGF0IGNvcHkuCi0KLSAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCi10aGUgTGlicmFyeSBpbnRvIGEgcHJvZ3JhbSB0aGF0IGlzIG5vdCBhIGxpYnJhcnkuCi0KLSAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKLWRlcml2YXRpdmUgb2YgaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtCi11bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhY2NvbXBhbnkKLWl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKLW11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYQotbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgotCi0gIElmIGRpc3RyaWJ1dGlvbiBvZiBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5Ci1mcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZQotc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCi1kaXN0cmlidXRlIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Ci1jb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgotCi0gIDUuIEEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIG5vIGRlcml2YXRpdmUgb2YgYW55IHBvcnRpb24gb2YgdGhlCi1MaWJyYXJ5LCBidXQgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIHRoZSBMaWJyYXJ5IGJ5IGJlaW5nIGNvbXBpbGVkIG9yCi1saW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQotd29yaywgaW4gaXNvbGF0aW9uLCBpcyBub3QgYSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnksIGFuZAotdGhlcmVmb3JlIGZhbGxzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KLQotICBIb3dldmVyLCBsaW5raW5nIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5Ci1jcmVhdGVzIGFuIGV4ZWN1dGFibGUgdGhhdCBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIExpYnJhcnkgKGJlY2F1c2UgaXQKLWNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCi1saWJyYXJ5Ii4gIFRoZSBleGVjdXRhYmxlIGlzIHRoZXJlZm9yZSBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KLVNlY3Rpb24gNiBzdGF0ZXMgdGVybXMgZm9yIGRpc3RyaWJ1dGlvbiBvZiBzdWNoIGV4ZWN1dGFibGVzLgotCi0gIFdoZW4gYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHVzZXMgbWF0ZXJpYWwgZnJvbSBhIGhlYWRlciBmaWxlCi10aGF0IGlzIHBhcnQgb2YgdGhlIExpYnJhcnksIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgbWF5IGJlIGEKLWRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgotV2hldGhlciB0aGlzIGlzIHRydWUgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiB0aGUgd29yayBjYW4gYmUKLWxpbmtlZCB3aXRob3V0IHRoZSBMaWJyYXJ5LCBvciBpZiB0aGUgd29yayBpcyBpdHNlbGYgYSBsaWJyYXJ5LiAgVGhlCi10aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgotCi0gIElmIHN1Y2ggYW4gb2JqZWN0IGZpbGUgdXNlcyBvbmx5IG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhCi1zdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKLWZ1bmN0aW9ucyAodGVuIGxpbmVzIG9yIGxlc3MgaW4gbGVuZ3RoKSwgdGhlbiB0aGUgdXNlIG9mIHRoZSBvYmplY3QKLWZpbGUgaXMgdW5yZXN0cmljdGVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaXMgbGVnYWxseSBhIGRlcml2YXRpdmUKLXdvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCi1MaWJyYXJ5IHdpbGwgc3RpbGwgZmFsbCB1bmRlciBTZWN0aW9uIDYuKQotCi0gIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5Ci1kaXN0cmlidXRlIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gNi4KLUFueSBleGVjdXRhYmxlcyBjb250YWluaW5nIHRoYXQgd29yayBhbHNvIGZhbGwgdW5kZXIgU2VjdGlvbiA2LAotd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgotDAotICA2LiBBcyBhbiBleGNlcHRpb24gdG8gdGhlIFNlY3Rpb25zIGFib3ZlLCB5b3UgbWF5IGFsc28gY29tYmluZSBvcgotbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKLXdvcmsgY29udGFpbmluZyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSwgYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCi11bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSwgcHJvdmlkZWQgdGhhdCB0aGUgdGVybXMgcGVybWl0Ci1tb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKLWVuZ2luZWVyaW5nIGZvciBkZWJ1Z2dpbmcgc3VjaCBtb2RpZmljYXRpb25zLgotCi0gIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQotTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZSBjb3ZlcmVkIGJ5Ci10aGlzIExpY2Vuc2UuICBZb3UgbXVzdCBzdXBwbHkgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmIHRoZSB3b3JrCi1kdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQotY29weXJpZ2h0IG5vdGljZSBmb3IgdGhlIExpYnJhcnkgYW1vbmcgdGhlbSwgYXMgd2VsbCBhcyBhIHJlZmVyZW5jZQotZGlyZWN0aW5nIHRoZSB1c2VyIHRvIHRoZSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIEFsc28sIHlvdSBtdXN0IGRvIG9uZQotb2YgdGhlc2UgdGhpbmdzOgotCi0gICAgYSkgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcKLSAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKLSAgICBjaGFuZ2VzIHdlcmUgdXNlZCBpbiB0aGUgd29yayAod2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlcgotICAgIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUpOyBhbmQsIGlmIHRoZSB3b3JrIGlzIGFuIGV4ZWN1dGFibGUgbGlua2VkCi0gICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0Ci0gICAgdXNlcyB0aGUgTGlicmFyeSIsIGFzIG9iamVjdCBjb2RlIGFuZC9vciBzb3VyY2UgY29kZSwgc28gdGhhdCB0aGUKLSAgICB1c2VyIGNhbiBtb2RpZnkgdGhlIExpYnJhcnkgYW5kIHRoZW4gcmVsaW5rIHRvIHByb2R1Y2UgYSBtb2RpZmllZAotICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCi0gICAgdGhhdCB0aGUgdXNlciB3aG8gY2hhbmdlcyB0aGUgY29udGVudHMgb2YgZGVmaW5pdGlvbnMgZmlsZXMgaW4gdGhlCi0gICAgTGlicmFyeSB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBhYmxlIHRvIHJlY29tcGlsZSB0aGUgYXBwbGljYXRpb24KLSAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKLQotICAgIGIpIFVzZSBhIHN1aXRhYmxlIHNoYXJlZCBsaWJyYXJ5IG1lY2hhbmlzbSBmb3IgbGlua2luZyB3aXRoIHRoZQotICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCi0gICAgY29weSBvZiB0aGUgbGlicmFyeSBhbHJlYWR5IHByZXNlbnQgb24gdGhlIHVzZXIncyBjb21wdXRlciBzeXN0ZW0sCi0gICAgcmF0aGVyIHRoYW4gY29weWluZyBsaWJyYXJ5IGZ1bmN0aW9ucyBpbnRvIHRoZSBleGVjdXRhYmxlLCBhbmQgKDIpCi0gICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgotICAgIHRoZSB1c2VyIGluc3RhbGxzIG9uZSwgYXMgbG9uZyBhcyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBpcwotICAgIGludGVyZmFjZS1jb21wYXRpYmxlIHdpdGggdGhlIHZlcnNpb24gdGhhdCB0aGUgd29yayB3YXMgbWFkZSB3aXRoLgotCi0gICAgYykgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQKLSAgICBsZWFzdCB0aHJlZSB5ZWFycywgdG8gZ2l2ZSB0aGUgc2FtZSB1c2VyIHRoZSBtYXRlcmlhbHMKLSAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCi0gICAgdGhhbiB0aGUgY29zdCBvZiBwZXJmb3JtaW5nIHRoaXMgZGlzdHJpYnV0aW9uLgotCi0gICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKLSAgICBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUgYWJvdmUKLSAgICBzcGVjaWZpZWQgbWF0ZXJpYWxzIGZyb20gdGhlIHNhbWUgcGxhY2UuCi0KLSAgICBlKSBWZXJpZnkgdGhhdCB0aGUgdXNlciBoYXMgYWxyZWFkeSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlc2UKLSAgICBtYXRlcmlhbHMgb3IgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyB1c2VyIGEgY29weS4KLQotICBGb3IgYW4gZXhlY3V0YWJsZSwgdGhlIHJlcXVpcmVkIGZvcm0gb2YgdGhlICJ3b3JrIHRoYXQgdXNlcyB0aGUKLUxpYnJhcnkiIG11c3QgaW5jbHVkZSBhbnkgZGF0YSBhbmQgdXRpbGl0eSBwcm9ncmFtcyBuZWVkZWQgZm9yCi1yZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKLXRoZSBtYXRlcmlhbHMgdG8gYmUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzCi1ub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkgZm9ybSkgd2l0aCB0aGUgbWFqb3IKLWNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24KLXdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudCBpdHNlbGYgYWNjb21wYW5pZXMKLXRoZSBleGVjdXRhYmxlLgotCi0gIEl0IG1heSBoYXBwZW4gdGhhdCB0aGlzIHJlcXVpcmVtZW50IGNvbnRyYWRpY3RzIHRoZSBsaWNlbnNlCi1yZXN0cmljdGlvbnMgb2Ygb3RoZXIgcHJvcHJpZXRhcnkgbGlicmFyaWVzIHRoYXQgZG8gbm90IG5vcm1hbGx5Ci1hY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90Ci11c2UgYm90aCB0aGVtIGFuZCB0aGUgTGlicmFyeSB0b2dldGhlciBpbiBhbiBleGVjdXRhYmxlIHRoYXQgeW91Ci1kaXN0cmlidXRlLgotDAotICA3LiBZb3UgbWF5IHBsYWNlIGxpYnJhcnkgZmFjaWxpdGllcyB0aGF0IGFyZSBhIHdvcmsgYmFzZWQgb24gdGhlCi1MaWJyYXJ5IHNpZGUtYnktc2lkZSBpbiBhIHNpbmdsZSBsaWJyYXJ5IHRvZ2V0aGVyIHdpdGggb3RoZXIgbGlicmFyeQotZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZAotbGlicmFyeSwgcHJvdmlkZWQgdGhhdCB0aGUgc2VwYXJhdGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGJhc2VkIG9uCi10aGUgTGlicmFyeSBhbmQgb2YgdGhlIG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcyBpcyBvdGhlcndpc2UKLXBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6Ci0KLSAgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUgd29yawotICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKLSAgICBmYWNpbGl0aWVzLiAgVGhpcyBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAgICBTZWN0aW9ucyBhYm92ZS4KLQotICAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBsaWJyYXJ5IG9mIHRoZSBmYWN0Ci0gICAgdGhhdCBwYXJ0IG9mIGl0IGlzIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGV4cGxhaW5pbmcKLSAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCi0KLSAgOC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yIGRpc3RyaWJ1dGUKLXRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55Ci1hdHRlbXB0IG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIGxpbmsgd2l0aCwgb3IKLWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91cgotcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLAotb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlciB0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcwotdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgotCi0gIDkuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAotc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKLWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQotcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQotbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCi1MaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAotYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwotdGhlIExpYnJhcnkgb3Igd29ya3MgYmFzZWQgb24gaXQuCi0KLSAgMTAuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLUxpYnJhcnkpLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCi1vcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5Ci1zdWJqZWN0IHRvIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCi1yZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCi1Zb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCi10aGlzIExpY2Vuc2UuCi0MCi0gIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50Ci1pbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAotY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgotb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAotZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKLWRpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKLUxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKLW1heSBub3QgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKLWxpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkgYnkKLWFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgotdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwotcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgTGlicmFyeS4KLQotSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFueQotcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvIGFwcGx5LAotYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KLQotSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQotcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKLXN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKLWludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtIHdoaWNoIGlzCi1pbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKLWdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKLXRocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0Ci1zeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCi10byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKLWltcG9zZSB0aGF0IGNob2ljZS4KLQotVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCi1iZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KLQotICAxMi4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBMaWJyYXJ5IGlzIHJlc3RyaWN0ZWQgaW4KLWNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQotb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCi1hbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nIHRob3NlIGNvdW50cmllcywKLXNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nIGNvdW50cmllcyBub3QgdGh1cwotZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKLXdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgotCi0gIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwotdmVyc2lvbnMgb2YgdGhlIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLgotU3VjaCBuZXcgdmVyc2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLAotYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgotCi1FYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBMaWJyYXJ5Ci1zcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKLSJhbnkgbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQKLWNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkKLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKLWxpY2Vuc2UgdmVyc2lvbiBudW1iZXIsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5Ci10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotDAotICAxNC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIExpYnJhcnkgaW50byBvdGhlciBmcmVlCi1wcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgaW5jb21wYXRpYmxlIHdpdGggdGhlc2UsCi13cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwotY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUKLVNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcyBtYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIKLWRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKLW9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQgb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nCi1hbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgotCi0JCQkgICAgTk8gV0FSUkFOVFkKLQotICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KLVdBUlJBTlRZIEZPUiBUSEUgTElCUkFSWSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuCi1FWENFUFQgV0hFTiBPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUgotT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKLUtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKLUxJQlJBUlkgSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIExJQlJBUlkgUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FCi1USEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uCi0KLSAgMTYuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4KLVdSSVRJTkcgV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZCi1BTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQotRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUgotQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUKLUxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKLVJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBCi1GQUlMVVJFIE9GIFRIRSBMSUJSQVJZIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgU09GVFdBUkUpLCBFVkVOIElGCi1TVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICi1EQU1BR0VTLgotCi0JCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCitDb3B5cmlnaHQgbm90aWNlcyBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2VzIGFyZSBpbiBSRUFETUVfPz8udHh0LiAgTm90ZSB0aGF0IHRoZQorZmlsZXMgZm9yIGRpZmZlcmVudCByZWdpb25zIGFyZSBtZXJnZWQsIGJvdGggdG8gc2F2ZSBzcGFjZSBhbmQgdG8gbWFrZSBpdAorcG9zc2libGUgdG8gaGlnaGxpZ2h0IHdvcmRzIGZvciBhbm90aGVyIHJlZ2lvbiBkaWZmZXJlbnQgZnJvbSBiYWQgd29yZHMuCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2RlL2RlX0RFLmRpZmYgYi9ydW50aW1lL3NwZWxsL2RlL2RlX0RFLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3NmRjOQotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZGUvZGVfREUuZGlmZgpAQCAtMCwwICsxLDE0IEBACisqKiogZGVfREUub3JpZy5hZmYJRnJpIEZlYiAyNSAxMjo1MDoxMCAyMDA1CistLS0gZGVfREUuYWZmCVN1biBKdWwgIDMgMTk6MDQ6MzIgMjAwNQorKioqKioqKioqKioqKioqCisqKiogMiwzICoqKioKKy0tLSAyLDEwIC0tLS0KKyAgVFJZIGVzaWFucnRvbGNkdWdtcGhieWZ2a3fk/Pbf4enq4OLxRVNJQU5SVE9MQ0RVR01QSEJZRlZLV8Tc1gorKyAKKysgRk9MICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBMT1cgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CisrIFVQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3/8KKysgCisrIE1JRFdPUkQJJworKyAKKyAgIwpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9kZS9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvZGUvbWFpbi5hYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZkMmE5OQotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZGUvbWFpbi5hYXAKQEAgLTAsMCArMSw4MiBAQAorIyBBYXAgcmVjaXBlIGZvciBEdXRjaCBWaW0gc3BlbGwgZmlsZXMuCisKKyMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgorQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CisgICAgVklNID0gLi4vLi4vLi4vc3JjL3ZpbQorQGVsc2U6CisgICAgVklNID0gdmltCisKK1NQRUxMRElSID0gLi4KK0ZJTEVTICAgID0gZGVfREUuYWZmIGRlX0RFLmRpYworWklQRklMRSAgPSBkZV9ERV9jb21iLnppcAorCithbGw6ICQoU1BFTExESVIpL2RlLmxhdGluMS5zcGwgJChTUEVMTERJUikvZGUudXRmLTguc3BsIC4uL1JFQURNRV9kZS50eHQKKworJChTUEVMTERJUikvZGUubGF0aW4xLnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPWRlX0RFLklTTzg4NTktMQorCQkkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL2RlIGRlX0RFIiAtYyBxCisKKyQoU1BFTExESVIpL2RlLnV0Zi04LnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPWRlX0RFLlVURi04CisJCSQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvZGUgZGVfREUiIC1jIHEKKworLi4vUkVBRE1FX2RlLnR4dDogUkVBRE1FX2RlX0RFX2NvbWIudHh0CisgICAgICAgIDpjb3B5ICRzb3VyY2UgJHRhcmdldAorCisjCisjIEZldGNoaW5nIHRoZSBmaWxlcyBmcm9tIE9wZW5PZmZpY2Uub3JnLgorIworT09ESVIgPSBodHRwOi8vZnRwLnNlcnZpY2VzLm9wZW5vZmZpY2Uub3JnL3B1Yi9PcGVuT2ZmaWNlLm9yZy9jb250cmliL2RpY3Rpb25hcmllcworOmF0dHIge2ZldGNoID0gJChPT0RJUikvJWZpbGUlfSAkKFpJUEZJTEUpCisKKyMgVGhlIGZpbGVzIGRvbid0IGRlcGVuZCBvbiB0aGUgLnppcCBmaWxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSBpdC4KKyMgT25seSBkb3dubG9hZCB0aGUgemlwIGZpbGUgaWYgdGhlIHRhcmdldHMgZG9uJ3QgZXhpc3QuCitkZV9ERS5hZmYgZGVfREUuZGljOiB7YnVpbGRjaGVjaz19CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgcGF0Y2gKKyAgICAgICAgOmZldGNoICQoWklQRklMRSkKKyAgICAgICAgOnN5cyAkKFVOWklQKSAkKFpJUEZJTEUpCisgICAgICAgIDpkZWxldGUgJChaSVBGSUxFKQorICAgICAgICA6bW92ZSBkZV9ERV9jb21iLmFmZiBkZV9ERS5hZmYKKyAgICAgICAgOm1vdmUgZGVfREVfY29tYi5kaWMgZGVfREUuZGljCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2RlX0RFLm9yaWcuYWZmJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgZGVfREUuYWZmIGRlX0RFLm9yaWcuYWZmCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2RlX0RFLm9yaWcuZGljJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgZGVfREUuYWZmIGRlX0RFLm9yaWcuZGljCisgICAgICAgIDpzeXMgcGF0Y2ggPGRlX0RFLmRpZmYKKworCisjIEdlbmVyYXRlIGRpZmYgZmlsZXMsIHNvIHRoYXQgb3RoZXJzIGNhbiBnZXQgdGhlIE9wZW5PZmZpY2UgZmlsZXMgYW5kIGFwcGx5CisjIHRoZSBkaWZmcyB0byBnZXQgdGhlIFZpbSB2ZXJzaW9ucy4KKworZGlmZjoKKyAgICAgICAgOmFzc2VydHBrZyBkaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZGVfREUub3JpZy5hZmYgZGVfREUuYWZmID5kZV9ERS5kaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZGVfREUub3JpZy5kaWMgZGVfREUuZGljID4+ZGVfREUuZGlmZgorCisKKyMgQ2hlY2sgZm9yIHVwZGF0ZWQgT3Blbk9mZmljZSBzcGVsbCBmaWxlcy4gIFdoZW4gdGhlcmUgYXJlIGNoYW5nZXMgdGhlCisjICIubmV3LmFmZiIgYW5kICIubmV3LmRpYyIgZmlsZXMgYXJlIGxlZnQgYmVoaW5kIGZvciBtYW51YWwgaW5zcGVjdGlvbi4KKworY2hlY2s6CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgZGlmZgorICAgICAgICA6ZmV0Y2ggJChaSVBGSUxFKQorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi8kKFpJUEZJTEUpCisgICAgICAgICAgICA6bW92ZSBkZV9ERV9jb21iLmFmZiBkZV9ERS5hZmYKKyAgICAgICAgICAgIDptb3ZlIGRlX0RFX2NvbWIuZGljIGRlX0RFLmRpYworICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZGVfREUub3JpZy5hZmYgZGVfREUuYWZmID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGRlX0RFLmFmZiAuLi9kZV9ERS5uZXcuYWZmCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9kZV9ERS5vcmlnLmRpYyBkZV9ERS5kaWMgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgZGVfREUuZGljIC4uL2RlX0RFLm5ldy5kaWMKKyAgICAgICAgQGZpbmFsbHk6CisgICAgICAgICAgICA6Y2QgLi4KKyAgICAgICAgICAgIDpkZWxldGUge3J9e2Z9e3F9IHRtcAorICAgICAgICAgICAgOmRlbGV0ZSAkKFpJUEZJTEUpCisKKworIyB2aW06IHNldCBzdHM9NCBzdz00IDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZW4uYXNjaWkuc3BsIGIvcnVudGltZS9zcGVsbC9lbi5hc2NpaS5zcGwKaW5kZXggYjU5ODU2Yy4uMWI1MTkyMSAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9lbi5hc2NpaS5zcGwKKysrIGIvcnVudGltZS9zcGVsbC9lbi5hc2NpaS5zcGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lbi5sYXRpbjEuc3BsIGIvcnVudGltZS9zcGVsbC9lbi5sYXRpbjEuc3BsCmluZGV4IDUyODZhNGYuLmI3NTlkMmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvZW4ubGF0aW4xLnNwbAorKysgYi9ydW50aW1lL3NwZWxsL2VuLmxhdGluMS5zcGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lbi51dGYtOC5zcGwgYi9ydW50aW1lL3NwZWxsL2VuLnV0Zi04LnNwbAppbmRleCBjZjUyMmM3Li40MjBkM2FmIDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2VuLnV0Zi04LnNwbAorKysgYi9ydW50aW1lL3NwZWxsL2VuLnV0Zi04LnNwbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZW5fQVUuZGlmZiBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fQVUuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvc3BlbGwvZW5fQVUuZGlmZgpyZW5hbWUgdG8gcnVudGltZS9zcGVsbC9lbi9lbl9BVS5kaWZmCmluZGV4IGZmM2M1NmUuLjFiNDVjOGYgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9lbl9BVS5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fQVUuZGlmZgpAQCAtMSw1ICsxLDUgQEAKICoqKiBlbl9BVS5vcmlnLmFmZglGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9BVS5hZmYJTW9uIEp1biAyNyAxOTo0MjozMiAyMDA1CistLS0gZW5fQVUuYWZmCVN1biBKdWwgIDMgMTc6MTE6MDcgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogNyw5ICoqKioKICAgU0VUIElTTzg4NTktMQpAQCAtMjM1Miw3ICsyMzUyLDcgQEAKICEgU0FMIFpaLSAgICAgICAgICAgICAgICAgIF8KICEgU0FMIFogICAgICAgICAgICAgICAgICAgIFMKICoqKiBlbl9BVS5vcmlnLmRpYwlGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9BVS5kaWMJTW9uIEp1biAyNyAwOTozMToxMyAyMDA1CistLS0gZW5fQVUuZGljCVN1biBKdWwgIDMgMTc6MTE6MDcgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogOTEyLDkxNCAqKioqCiAgIEFsYXNrYS9NCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZW5fQ0EuZGlmZiBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fQ0EuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBzcmMvc3BlbGwvZW5fQ0EuZGlmZgpyZW5hbWUgdG8gcnVudGltZS9zcGVsbC9lbi9lbl9DQS5kaWZmCmluZGV4IDJhNTU1ZGUuLjBhZThmZjggMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9lbl9DQS5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fQ0EuZGlmZgpAQCAtMSw1ICsxLDUgQEAKICoqKiBlbl9DQS5vcmlnLmFmZglGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9DQS5hZmYJTW9uIEp1biAyNyAxOTo0MjozOCAyMDA1CistLS0gZW5fQ0EuYWZmCVN1biBKdWwgIDMgMTc6MDk6NDAgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogMyw0ICoqKioKIC0tLSAzLDEzIC0tLS0KQEAgLTE2OSw3ICsxNjksNyBAQAogKyBTQUwgWlotICAgICAgICAgICAgICAgICAgXwogKyBTQUwgWiAgICAgICAgICAgICAgICAgICAgUwogKioqIGVuX0NBLm9yaWcuZGljCVNhdCBBcHIgMTYgMTQ6NDA6MDYgMjAwNQotLS0tIGVuX0NBLmRpYwlNb24gSnVuIDI3IDA5OjMxOjE1IDIwMDUKKy0tLSBlbl9DQS5kaWMJU3VuIEp1bCAgMyAxNzowOTo0MCAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA0Niw0OCAqKioqCiAgIFIvRwpkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsL2VuX0dCLmRpZmYgYi9ydW50aW1lL3NwZWxsL2VuL2VuX0dCLmRpZmYKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gc3JjL3NwZWxsL2VuX0dCLmRpZmYKcmVuYW1lIHRvIHJ1bnRpbWUvc3BlbGwvZW4vZW5fR0IuZGlmZgppbmRleCBmZTFiN2RkLi5hYjZlOGRhIDEwMDY0NAotLS0gYS9zcmMvc3BlbGwvZW5fR0IuZGlmZgorKysgYi9ydW50aW1lL3NwZWxsL2VuL2VuX0dCLmRpZmYKQEAgLTEsMjYgKzEsMjIgQEAKLSoqKiBlbl9HQi5vcmlnLmFmZglGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9HQi5hZmYJTW9uIEp1biAyNyAxOTo0Mjo0MiAyMDA1CisqKiogZW5fR0Iub3JpZy5hZmYJU3VuIEp1bCAgMyAxNzo1MzoxMyAyMDA1CistLS0gZW5fR0IuYWZmCVN1biBKdWwgIDMgMTc6NTk6MTUgMjAwNQogKioqKioqKioqKioqKioqCi0qKiogNyw5ICoqKioKLSAgU0VUIElTTzg4NTktMQotISBUUlkgZXNpYelucnRvbGNkdWdtcGhieWZ2a3ctJy56cWp4U05SVExDR0RNUEhCRUFVWU9GSVZLV/bi9FpRSljF5+ju6uDv/OTxIAotICBSRVAgMjQKLS0tLSA3LDE5IC0tLS0KLSAgU0VUIElTTzg4NTktMQotISBUUlkgZXNpYelucnRvbGNkdWdtcGhieWZ2a3ctJy56cWp4U05SVExDR0RNUEhCRUFVWU9GSVZLV/bi9FpRSljF5+ju6uDv/OTxCi0hIAotISBGT0wgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//Ci0hIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KLSEgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/wotISAKLSEgTUlEV09SRAknCi0hIAotISBSQVIgPwotISBCQUQgIQotISAKLSAgUkVQIDI0CisqKiogOCw5ICoqKioKKy0tLSA4LDE5IC0tLS0KKyAgVFJZIGVzaWHpbnJ0b2xjZHVnbWZwaGJ5dmt3LScuenFqeFNOUlRMQ0dETUZQSEJFQVVZT0lWS1fz9uL0WlFKWMXn6O7q4O/85PEKKysgCisrIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CisrIAorKyBNSURXT1JECScKKysgCisrIFJBUiA/CisrIEJBRCAhCisrIAorICBSRVAgMjcKICoqKioqKioqKioqKioqKgotKioqIDM0LDUzICoqKioKKyoqKiAzNyw1NiAqKioqCiAgIFBGWCBBIFkgMgogISBQRlggQSAwIHJlIFteZV0gCiAhIFBGWCBBIDAgcmUtIGUgCkBAIC00MSw3ICszNyw3IEBACiAgIFBGWCBFIFkgMQogISBQRlggRSAwIGRpcyAuIAogICBQRlggRiBZIDUKLS0tLSA0NCw2MyAtLS0tCistLS0gNDcsNjYgLS0tLQogICBQRlggQSBZIDIKICEgUEZYIEEgMCByZSBbXmVdCiAhIFBGWCBBIDAgcmUtIGUKQEAgLTYzLDcgKzU5LDcgQEAKICEgUEZYIEUgMCBkaXMgLgogICBQRlggRiBZIDUKICoqKioqKioqKioqKioqKgotKioqIDU3LDQ1MSAqKioqCisqKiogNjAsNDU0ICoqKioKICAgUEZYIEYgMCBjb2wgbAogISBQRlggRiAwIGNvbiBbXmFiZWhpbG1vcHJ1XS4gCiAgIFBGWCBLIFkgMQpAQCAtNDU5LDcgKzQ1NSw3IEBACiAgIFNGWCBUIHkgaWVzdCBbXmFlaW91XXkKICEgU0ZYIFQgMCBlciBbYWVpb3VdeSAKICAgU0ZYIFQgMCBlc3QgW2FlaW91XXkKLS0tLSA2Nyw0NjEgLS0tLQorLS0tIDcwLDQ2NCAtLS0tCiAgIFBGWCBGIDAgY29sIGwKICEgUEZYIEYgMCBjb24gW15hYmVoaWxtb3BydV0uCiAgIFBGWCBLIFkgMQpAQCAtODU2LDcgKzg1Miw3IEBACiAhIFNGWCBUIDAgZXIgW2FlaW91XXkKICAgU0ZYIFQgMCBlc3QgW2FlaW91XXkKICoqKioqKioqKioqKioqKgotKioqIDQ1OCwxMTQzICoqKioKKyoqKiA0NjEsMTE1MCAqKioqCiAgIFNGWCBSIFkgNzIKICEgU0ZYIFIgMCByIGUgCiAhIFNGWCBSIDAgcnMgZSAKQEAgLTEwMjMsNyArMTAxOSw3IEBACiAhIFNGWCBwIDAgZXNzIGxsIAogISBTRlggcCAwIGxlc3MgW15sXWwgCiAhIFNGWCBwIDAgbGVzcyBbXmx5XSAKLSAgU0ZYIFEgWSA4OAorICBTRlggUSBZIDQ0CiAhIFNGWCBRIDAgdGlzZSBhIAogISBTRlggUSBlIGlzZSBbXmxdZSAKICEgU0ZYIFEgbGUgaWxpc2UgW15hZWlvdV1sZSAKQEAgLTEwNjgsNTEgKzEwNjQsNTIgQEAKICEgU0ZYIFEgeSBpc2luZyBbXmFlaW91XXkgCiAhIFNGWCBRIDAgaXNpbmcgW2FlaW91XXkgCiAhIFNGWCBRIDAgaXNpbmcgW15hZW1zeV0gCi0hIFNGWCBRIDAgdGl6ZSBhIAotISBTRlggUSBlIGl6ZSBbXmxdZSAKLSEgU0ZYIFEgbGUgaWxpemUgW15hZWlvdV1sZSAKLSEgU0ZYIFEgZSBpemUgW2FlaW91XWxlIAotISBTRlggUSB1bSBpemUgdW0gCi0hIFNGWCBRIDAgaXplIFtedV1tIAotISBTRlggUSBzIHplIGlzIAotISBTRlggUSAwIGl6ZSBbXmldcyAKLSEgU0ZYIFEgeSBpemUgW15hZWlvdV15IAotISBTRlggUSAwIGl6ZSBbYWVpb3VdeSAKLSEgU0ZYIFEgMCBpemUgW15hZW1zeV0gCi0hIFNGWCBRIDAgdGl6ZXMgYSAKLSEgU0ZYIFEgZSBpemVzIFtebF1lIAotISBTRlggUSBsZSBpbGl6ZXMgW15hZWlvdV1sZSAKLSEgU0ZYIFEgZSBpemVzIFthZWlvdV1sZSAKLSEgU0ZYIFEgdW0gaXplcyB1bSAKLSEgU0ZYIFEgMCBpemVzIFtedV1tIAotISBTRlggUSBzIHplcyBpcyAKLSEgU0ZYIFEgMCBpemVzIFteaV1zIAotISBTRlggUSB5IGl6ZXMgW15hZWlvdV15IAotISBTRlggUSAwIGl6ZXMgW2FlaW91XXkgCi0hIFNGWCBRIDAgaXplcyBbXmFlbXN5XSAKLSEgU0ZYIFEgMCB0aXplZCBhIAotISBTRlggUSBlIGl6ZWQgW15sXWUgCi0hIFNGWCBRIGxlIGlsaXplZCBbXmFlaW91XWxlIAotISBTRlggUSBlIGl6ZWQgW2FlaW91XWxlIAotISBTRlggUSB1bSBpemVkIHVtIAotISBTRlggUSAwIGl6ZWQgW151XW0gCi0hIFNGWCBRIHMgemVkIGlzIAotISBTRlggUSAwIGl6ZWQgW15pXXMgCi0hIFNGWCBRIHkgaXplZCBbXmFlaW91XXkgCi0hIFNGWCBRIDAgaXplZCBbYWVpb3VdeSAKLSEgU0ZYIFEgMCBpemVkIFteYWVtc3ldIAotISBTRlggUSAwIHRpemluZyBhIAotISBTRlggUSBlIGl6aW5nIFtebF1lIAotISBTRlggUSBsZSBpbGl6aW5nIFteYWVpb3VdbGUgCi0hIFNGWCBRIGUgaXppbmcgW2FlaW91XWxlIAotISBTRlggUSB1bSBpemluZyB1bSAKLSEgU0ZYIFEgMCBpemluZyBbXnVdbSAKLSEgU0ZYIFEgcyB6aW5nIGlzIAotISBTRlggUSAwIGl6aW5nIFteaV1zIAotISBTRlggUSB5IGl6aW5nIFteYWVpb3VdeSAKLSEgU0ZYIFEgMCBpemluZyBbYWVpb3VdeSAKLSEgU0ZYIFEgMCBpemluZyBbXmFlbXN5XSAKLSAgU0ZYIHEgWSA0NAorICBTRlggOCBZIDQ0CishIFNGWCA4IDAgdGl6ZSBhIAorISBTRlggOCBlIGl6ZSBbXmxdZSAKKyEgU0ZYIDggbGUgaWxpemUgW15hZWlvdV1sZSAKKyEgU0ZYIDggZSBpemUgW2FlaW91XWxlIAorISBTRlggOCB1bSBpemUgdW0gCishIFNGWCA4IDAgaXplIFtedV1tIAorISBTRlggOCBzIHplIGlzIAorISBTRlggOCAwIGl6ZSBbXmldcyAKKyEgU0ZYIDggeSBpemUgW15hZWlvdV15IAorISBTRlggOCAwIGl6ZSBbYWVpb3VdeSAKKyEgU0ZYIDggMCBpemUgW15hZW1zeV0gCishIFNGWCA4IDAgdGl6ZXMgYSAKKyEgU0ZYIDggZSBpemVzIFtebF1lIAorISBTRlggOCBsZSBpbGl6ZXMgW15hZWlvdV1sZSAKKyEgU0ZYIDggZSBpemVzIFthZWlvdV1sZSAKKyEgU0ZYIDggdW0gaXplcyB1bSAKKyEgU0ZYIDggMCBpemVzIFtedV1tIAorISBTRlggOCBzIHplcyBpcyAKKyEgU0ZYIDggMCBpemVzIFteaV1zIAorISBTRlggOCB5IGl6ZXMgW15hZWlvdV15IAorISBTRlggOCAwIGl6ZXMgW2FlaW91XXkgCishIFNGWCA4IDAgaXplcyBbXmFlbXN5XSAKKyEgU0ZYIDggMCB0aXplZCBhIAorISBTRlggOCBlIGl6ZWQgW15sXWUgCishIFNGWCA4IGxlIGlsaXplZCBbXmFlaW91XWxlIAorISBTRlggOCBlIGl6ZWQgW2FlaW91XWxlIAorISBTRlggOCB1bSBpemVkIHVtIAorISBTRlggOCAwIGl6ZWQgW151XW0gCishIFNGWCA4IHMgemVkIGlzIAorISBTRlggOCAwIGl6ZWQgW15pXXMgCishIFNGWCA4IHkgaXplZCBbXmFlaW91XXkgCishIFNGWCA4IDAgaXplZCBbYWVpb3VdeSAKKyEgU0ZYIDggMCBpemVkIFteYWVtc3ldIAorISBTRlggOCAwIHRpemluZyBhIAorISBTRlggOCBlIGl6aW5nIFtebF1lIAorISBTRlggOCBsZSBpbGl6aW5nIFteYWVpb3VdbGUgCishIFNGWCA4IGUgaXppbmcgW2FlaW91XWxlIAorISBTRlggOCB1bSBpemluZyB1bSAKKyEgU0ZYIDggMCBpemluZyBbXnVdbSAKKyEgU0ZYIDggcyB6aW5nIGlzIAorISBTRlggOCAwIGl6aW5nIFteaV1zIAorISBTRlggOCB5IGl6aW5nIFteYWVpb3VdeSAKKyEgU0ZYIDggMCBpemluZyBbYWVpb3VdeSAKKyEgU0ZYIDggMCBpemluZyBbXmFlbXN5XSAKKyAgU0ZYIHEgWSAyMgogISBTRlggcSAwIHRpc2F0aW9uIGEgCiAhIFNGWCBxIGUgaXNhdGlvbiBbXmxdZSAKICEgU0ZYIHEgbGUgaWxpc2F0aW9uIFteYWVpb3VdbGUgCkBAIC0xMTM1LDI5ICsxMTMyLDMwIEBACiAhIFNGWCBxIHkgaXNhdGlvbnMgW15hZWlvdV15IAogISBTRlggcSAwIGlzYXRpb25zIFthZWlvdV15IAogISBTRlggcSAwIGlzYXRpb25zIFteYWVtc3ldIAotISBTRlggcSAwIHRpemF0aW9uIGEgCi0hIFNGWCBxIGUgaXphdGlvbiBbXmxdZSAKLSEgU0ZYIHEgbGUgaWxpemF0aW9uIFteYWVpb3VdbGUgCi0hIFNGWCBxIGUgaXphdGlvbiBbYWVpb3VdbGUgCi0hIFNGWCBxIHVtIGl6YXRpb24gdW0gCi0hIFNGWCBxIDAgaXphdGlvbiBbXnVdbSAKLSEgU0ZYIHEgcyB6YXRpb24gaXMgCi0hIFNGWCBxIDAgaXphdGlvbiBbXmldcyAKLSEgU0ZYIHEgeSBpemF0aW9uIFteYWVpb3VdeSAKLSEgU0ZYIHEgMCBpemF0aW9uIFthZWlvdV15IAotISBTRlggcSAwIGl6YXRpb24gW15hZW1zeV0gCi0hIFNGWCBxIDAgdGl6YXRpb25zIGEgCi0hIFNGWCBxIGUgaXphdGlvbnMgW15sXWUgCi0hIFNGWCBxIGxlIGlsaXphdGlvbnMgW15hZWlvdV1sZSAKLSEgU0ZYIHEgZSBpemF0aW9ucyBbYWVpb3VdbGUgCi0hIFNGWCBxIHVtIGl6YXRpb25zIHVtIAotISBTRlggcSAwIGl6YXRpb25zIFtedV1tIAotISBTRlggcSBzIHphdGlvbnMgaXMgCi0hIFNGWCBxIDAgaXphdGlvbnMgW15pXXMgCi0hIFNGWCBxIHkgaXphdGlvbnMgW15hZWlvdV15IAotISBTRlggcSAwIGl6YXRpb25zIFthZWlvdV15IAotISBTRlggcSAwIGl6YXRpb25zIFteYWVtc3ldIAotICBTRlggcyBZIDY2CisgIFNGWCAtIFkgMjIKKyEgU0ZYIC0gMCB0aXphdGlvbiBhIAorISBTRlggLSBlIGl6YXRpb24gW15sXWUgCishIFNGWCAtIGxlIGlsaXphdGlvbiBbXmFlaW91XWxlIAorISBTRlggLSBlIGl6YXRpb24gW2FlaW91XWxlIAorISBTRlggLSB1bSBpemF0aW9uIHVtIAorISBTRlggLSAwIGl6YXRpb24gW151XW0gCishIFNGWCAtIHMgemF0aW9uIGlzIAorISBTRlggLSAwIGl6YXRpb24gW15pXXMgCishIFNGWCAtIHkgaXphdGlvbiBbXmFlaW91XXkgCishIFNGWCAtIDAgaXphdGlvbiBbYWVpb3VdeSAKKyEgU0ZYIC0gMCBpemF0aW9uIFteYWVtc3ldIAorISBTRlggLSAwIHRpemF0aW9ucyBhIAorISBTRlggLSBlIGl6YXRpb25zIFtebF1lIAorISBTRlggLSBsZSBpbGl6YXRpb25zIFteYWVpb3VdbGUgCishIFNGWCAtIGUgaXphdGlvbnMgW2FlaW91XWxlIAorISBTRlggLSB1bSBpemF0aW9ucyB1bSAKKyEgU0ZYIC0gMCBpemF0aW9ucyBbXnVdbSAKKyEgU0ZYIC0gcyB6YXRpb25zIGlzIAorISBTRlggLSAwIGl6YXRpb25zIFteaV1zIAorISBTRlggLSB5IGl6YXRpb25zIFteYWVpb3VdeSAKKyEgU0ZYIC0gMCBpemF0aW9ucyBbYWVpb3VdeSAKKyEgU0ZYIC0gMCBpemF0aW9ucyBbXmFlbXN5XSAKKyAgU0ZYIHMgWSAzMwogISBTRlggcyAwIHRpc2VyIGEgCiAhIFNGWCBzIGUgaXNlciBbXmxdZSAKICEgU0ZYIHMgbGUgaWxpc2VyIFteYWVpb3VdbGUgCkBAIC0xMTkxLDQwICsxMTg5LDQxIEBACiAhIFNGWCBzIHkgaXNlcidzIFteYWVpb3VdeSAKICEgU0ZYIHMgMCBpc2VyJ3MgW2FlaW91XXkgCiAhIFNGWCBzIDAgaXNlcidzIFteYWVtc3ldIAotISBTRlggcyAwIHRpemVyIGEgCi0hIFNGWCBzIGUgaXplciBbXmxdZSAKLSEgU0ZYIHMgbGUgaWxpemVyIFteYWVpb3VdbGUgCi0hIFNGWCBzIGUgaXplciBbYWVpb3VdbGUgCi0hIFNGWCBzIHVtIGl6ZXIgdW0gCi0hIFNGWCBzIDAgaXplciBbXnVdbSAKLSEgU0ZYIHMgcyB6ZXIgaXMgCi0hIFNGWCBzIDAgaXplciBbXmldcyAKLSEgU0ZYIHMgeSBpemVyIFteYWVpb3VdeSAKLSEgU0ZYIHMgMCBpemVyIFthZWlvdV15IAotISBTRlggcyAwIGl6ZXIgW15hZW1zeV0gCi0hIFNGWCBzIDAgdGl6ZXJzIGEgCi0hIFNGWCBzIGUgaXplcnMgW15sXWUgCi0hIFNGWCBzIGxlIGlsaXplcnMgW15hZWlvdV1sZSAKLSEgU0ZYIHMgZSBpemVycyBbYWVpb3VdbGUgCi0hIFNGWCBzIHVtIGl6ZXJzIHVtIAotISBTRlggcyAwIGl6ZXJzIFtedV1tIAotISBTRlggcyBzIHplcnMgaXMgCi0hIFNGWCBzIDAgaXplcnMgW15pXXMgCi0hIFNGWCBzIHkgaXplcnMgW15hZWlvdV15IAotISBTRlggcyAwIGl6ZXJzIFthZWlvdV15IAotISBTRlggcyAwIGl6ZXJzIFteYWVtc3ldIAotISBTRlggcyAwIHRpemVyJ3MgYSAKLSEgU0ZYIHMgZSBpemVyJ3MgW15sXWUgCi0hIFNGWCBzIGxlIGlsaXplcidzIFteYWVpb3VdbGUgCi0hIFNGWCBzIGUgaXplcidzIFthZWlvdV1sZSAKLSEgU0ZYIHMgdW0gaXplcidzIHVtIAotISBTRlggcyAwIGl6ZXIncyBbXnVdbSAKLSEgU0ZYIHMgcyB6ZXIncyBpcyAKLSEgU0ZYIHMgMCBpemVyJ3MgW15pXXMgCi0hIFNGWCBzIHkgaXplcidzIFteYWVpb3VdeSAKLSEgU0ZYIHMgMCBpemVyJ3MgW2FlaW91XXkgCi0hIFNGWCBzIDAgaXplcidzIFteYWVtc3ldIAotICBTRlggdCBZIDQ0CisgIFNGWCA5IFkgMzMKKyEgU0ZYIDkgMCB0aXplciBhIAorISBTRlggOSBlIGl6ZXIgW15sXWUgCishIFNGWCA5IGxlIGlsaXplciBbXmFlaW91XWxlIAorISBTRlggOSBlIGl6ZXIgW2FlaW91XWxlIAorISBTRlggOSB1bSBpemVyIHVtIAorISBTRlggOSAwIGl6ZXIgW151XW0gCishIFNGWCA5IHMgemVyIGlzIAorISBTRlggOSAwIGl6ZXIgW15pXXMgCishIFNGWCA5IHkgaXplciBbXmFlaW91XXkgCishIFNGWCA5IDAgaXplciBbYWVpb3VdeSAKKyEgU0ZYIDkgMCBpemVyIFteYWVtc3ldIAorISBTRlggOSAwIHRpemVycyBhIAorISBTRlggOSBlIGl6ZXJzIFtebF1lIAorISBTRlggOSBsZSBpbGl6ZXJzIFteYWVpb3VdbGUgCishIFNGWCA5IGUgaXplcnMgW2FlaW91XWxlIAorISBTRlggOSB1bSBpemVycyB1bSAKKyEgU0ZYIDkgMCBpemVycyBbXnVdbSAKKyEgU0ZYIDkgcyB6ZXJzIGlzIAorISBTRlggOSAwIGl6ZXJzIFteaV1zIAorISBTRlggOSB5IGl6ZXJzIFteYWVpb3VdeSAKKyEgU0ZYIDkgMCBpemVycyBbYWVpb3VdeSAKKyEgU0ZYIDkgMCBpemVycyBbXmFlbXN5XSAKKyEgU0ZYIDkgMCB0aXplcidzIGEgCishIFNGWCA5IGUgaXplcidzIFtebF1lIAorISBTRlggOSBsZSBpbGl6ZXIncyBbXmFlaW91XWxlIAorISBTRlggOSBlIGl6ZXIncyBbYWVpb3VdbGUgCishIFNGWCA5IHVtIGl6ZXIncyB1bSAKKyEgU0ZYIDkgMCBpemVyJ3MgW151XW0gCishIFNGWCA5IHMgemVyJ3MgaXMgCishIFNGWCA5IDAgaXplcidzIFteaV1zIAorISBTRlggOSB5IGl6ZXIncyBbXmFlaW91XXkgCishIFNGWCA5IDAgaXplcidzIFthZWlvdV15IAorISBTRlggOSAwIGl6ZXIncyBbXmFlbXN5XSAKKyAgU0ZYIHQgWSAyMgogISBTRlggdCAwIHRpc2FibGUgYSAKICEgU0ZYIHQgZSBpc2FibGUgW15sXWUgCiAhIFNGWCB0IGxlIGlsaXNhYmxlIFteYWVpb3VdbGUgCkBAIC0xMjM2LDE3ICsxMjM1LDYgQEAKICEgU0ZYIHQgeSBpc2FibGUgW15hZWlvdV15IAogISBTRlggdCAwIGlzYWJsZSBbYWVpb3VdeSAKICEgU0ZYIHQgMCBpc2FibGUgW15hZW1zeV0gCi0hIFNGWCB0IDAgdGl6YWJsZSBhIAotISBTRlggdCBlIGl6YWJsZSBbXmxdZSAKLSEgU0ZYIHQgbGUgaWxpemFibGUgW15hZWlvdV1sZSAKLSEgU0ZYIHQgZSBpemFibGUgW2FlaW91XWxlIAotISBTRlggdCB1bSBpemFibGUgdW0gCi0hIFNGWCB0IDAgaXphYmxlIFtedV1tIAotISBTRlggdCBzIHphYmxlIGlzIAotISBTRlggdCAwIGl6YWJsZSBbXmldcyAKLSEgU0ZYIHQgeSBpemFibGUgW15hZWlvdV15IAotISBTRlggdCAwIGl6YWJsZSBbYWVpb3VdeSAKLSEgU0ZYIHQgMCBpemFibGUgW15hZW1zeV0gCiAhIFNGWCB0IDAgdGlzYWJpbGl0eSBhIAogISBTRlggdCBlIGlzYWJpbGl0eSBbXmxdZSAKICEgU0ZYIHQgbGUgaWxpc2FiaWxpdHkgW15hZWlvdV1sZSAKQEAgLTEyNTgsMTcgKzEyNDYsMjkgQEAKICEgU0ZYIHQgeSBpc2FiaWxpdHkgW15hZWlvdV15IAogISBTRlggdCAwIGlzYWJpbGl0eSBbYWVpb3VdeSAKICEgU0ZYIHQgMCBpc2FiaWxpdHkgW15hZW1zeV0gCi0hIFNGWCB0IDAgdGl6YWJpbGl0eSBhIAotISBTRlggdCBlIGl6YWJpbGl0eSBbXmxdZSAKLSEgU0ZYIHQgbGUgaWxpemFiaWxpdHkgW15hZWlvdV1sZSAKLSEgU0ZYIHQgZSBpemFiaWxpdHkgW2FlaW91XWxlIAotISBTRlggdCB1bSBpemFiaWxpdHkgdW0gCi0hIFNGWCB0IDAgaXphYmlsaXR5IFtedV1tIAotISBTRlggdCBzIHphYmlsaXR5IGlzIAotISBTRlggdCAwIGl6YWJpbGl0eSBbXmldcyAKLSEgU0ZYIHQgeSBpemFiaWxpdHkgW15hZWlvdV15IAotISBTRlggdCAwIGl6YWJpbGl0eSBbYWVpb3VdeSAKLSEgU0ZYIHQgMCBpemFiaWxpdHkgW15hZW1zeV0gCisgIFNGWCArIFkgMjIKKyEgU0ZYICsgMCB0aXphYmxlIGEgCishIFNGWCArIGUgaXphYmxlIFtebF1lIAorISBTRlggKyBsZSBpbGl6YWJsZSBbXmFlaW91XWxlIAorISBTRlggKyBlIGl6YWJsZSBbYWVpb3VdbGUgCishIFNGWCArIHVtIGl6YWJsZSB1bSAKKyEgU0ZYICsgMCBpemFibGUgW151XW0gCishIFNGWCArIHMgemFibGUgaXMgCishIFNGWCArIDAgaXphYmxlIFteaV1zIAorISBTRlggKyB5IGl6YWJsZSBbXmFlaW91XXkgCishIFNGWCArIDAgaXphYmxlIFthZWlvdV15IAorISBTRlggKyAwIGl6YWJsZSBbXmFlbXN5XSAKKyEgU0ZYICsgMCB0aXphYmlsaXR5IGEgCishIFNGWCArIGUgaXphYmlsaXR5IFtebF1lIAorISBTRlggKyBsZSBpbGl6YWJpbGl0eSBbXmFlaW91XWxlIAorISBTRlggKyBlIGl6YWJpbGl0eSBbYWVpb3VdbGUgCishIFNGWCArIHVtIGl6YWJpbGl0eSB1bSAKKyEgU0ZYICsgMCBpemFiaWxpdHkgW151XW0gCishIFNGWCArIHMgemFiaWxpdHkgaXMgCishIFNGWCArIDAgaXphYmlsaXR5IFteaV1zIAorISBTRlggKyB5IGl6YWJpbGl0eSBbXmFlaW91XXkgCishIFNGWCArIDAgaXphYmlsaXR5IFthZWlvdV15IAorISBTRlggKyAwIGl6YWJpbGl0eSBbXmFlbXN5XSAKICAgU0ZYIE0gWSAxCiAhIFNGWCBNIDAgJ3MgLiAKICAgU0ZYIEIgWSA0OApAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAKICEgU0ZYIE8gMCBhbCBbXmlwdXhddCAKICEgU0ZYIE8gMCBhbCBbXmFlYmNydHhteV0gCiAgIFNGWCBvIFkgMTIKLSEgU0ZaIG8gMCBsbHkgYSAKKyEgU0ZYIG8gMCBsbHkgYSAKICEgU0ZYIG8gZSBhbGx5IFteYmNndl1lIAogISBTRlggbyBlIGlhbGx5IFtiY2d2XWUgCiAhIFNGWCBvIDAgaWFsbHkgW2JjcnhdIApAQCAtMTU0Myw3ICsxNTQzLDcgQEAKICEgU0ZYIDMgMCBpc3QncyBbYWVpb3VicF15IAogISBTRlggMyBvIGlzdCdzIG8gCiAhIFNGWCAzIDAgaXN0J3MgW15lb3ldIAotLS0tIDQ2OCwxMjc0IC0tLS0KKy0tLSA0NzEsMTI4MSAtLS0tCiAgIFNGWCBSIFkgNzIKICEgU0ZYIFIgMCByIGUKICEgU0ZYIFIgMCBycyBlCkBAIC0xNzEwLDcgKzE3MTAsNyBAQAogISBTRlggcCAwIGVzcyBsbAogISBTRlggcCAwIGxlc3MgW15sXWwKICEgU0ZYIHAgMCBsZXNzIFtebHldCi0gIFNGWCBRIFkgODgKKyAgU0ZYIFEgWSA0NAogISBTRlggUSAwIHRpc2UgYQogISBTRlggUSBlIGlzZSBbXmxdZQogISBTRlggUSBsZSBpbGlzZSBbXmFlaW91XWxlCkBAIC0xNzU1LDUxICsxNzU1LDUyIEBACiAhIFNGWCBRIHkgaXNpbmcgW15hZWlvdV15CiAhIFNGWCBRIDAgaXNpbmcgW2FlaW91XXkKICEgU0ZYIFEgMCBpc2luZyBbXmFlbXN5XQotISBTRlggUSAwIHRpemUgYQotISBTRlggUSBlIGl6ZSBbXmxdZQotISBTRlggUSBsZSBpbGl6ZSBbXmFlaW91XWxlCi0hIFNGWCBRIGUgaXplIFthZWlvdV1sZQotISBTRlggUSB1bSBpemUgdW0KLSEgU0ZYIFEgMCBpemUgW151XW0KLSEgU0ZYIFEgcyB6ZSBpcwotISBTRlggUSAwIGl6ZSBbXmldcwotISBTRlggUSB5IGl6ZSBbXmFlaW91XXkKLSEgU0ZYIFEgMCBpemUgW2FlaW91XXkKLSEgU0ZYIFEgMCBpemUgW15hZW1zeV0KLSEgU0ZYIFEgMCB0aXplcyBhCi0hIFNGWCBRIGUgaXplcyBbXmxdZQotISBTRlggUSBsZSBpbGl6ZXMgW15hZWlvdV1sZQotISBTRlggUSBlIGl6ZXMgW2FlaW91XWxlCi0hIFNGWCBRIHVtIGl6ZXMgdW0KLSEgU0ZYIFEgMCBpemVzIFtedV1tCi0hIFNGWCBRIHMgemVzIGlzCi0hIFNGWCBRIDAgaXplcyBbXmldcwotISBTRlggUSB5IGl6ZXMgW15hZWlvdV15Ci0hIFNGWCBRIDAgaXplcyBbYWVpb3VdeQotISBTRlggUSAwIGl6ZXMgW15hZW1zeV0KLSEgU0ZYIFEgMCB0aXplZCBhCi0hIFNGWCBRIGUgaXplZCBbXmxdZQotISBTRlggUSBsZSBpbGl6ZWQgW15hZWlvdV1sZQotISBTRlggUSBlIGl6ZWQgW2FlaW91XWxlCi0hIFNGWCBRIHVtIGl6ZWQgdW0KLSEgU0ZYIFEgMCBpemVkIFtedV1tCi0hIFNGWCBRIHMgemVkIGlzCi0hIFNGWCBRIDAgaXplZCBbXmldcwotISBTRlggUSB5IGl6ZWQgW15hZWlvdV15Ci0hIFNGWCBRIDAgaXplZCBbYWVpb3VdeQotISBTRlggUSAwIGl6ZWQgW15hZW1zeV0KLSEgU0ZYIFEgMCB0aXppbmcgYQotISBTRlggUSBlIGl6aW5nIFtebF1lCi0hIFNGWCBRIGxlIGlsaXppbmcgW15hZWlvdV1sZQotISBTRlggUSBlIGl6aW5nIFthZWlvdV1sZQotISBTRlggUSB1bSBpemluZyB1bQotISBTRlggUSAwIGl6aW5nIFtedV1tCi0hIFNGWCBRIHMgemluZyBpcwotISBTRlggUSAwIGl6aW5nIFteaV1zCi0hIFNGWCBRIHkgaXppbmcgW15hZWlvdV15Ci0hIFNGWCBRIDAgaXppbmcgW2FlaW91XXkKLSEgU0ZYIFEgMCBpemluZyBbXmFlbXN5XQotICBTRlggcSBZIDQ0CisgIFNGWCA4IFkgNDQKKyEgU0ZYIDggMCB0aXplIGEKKyEgU0ZYIDggZSBpemUgW15sXWUKKyEgU0ZYIDggbGUgaWxpemUgW15hZWlvdV1sZQorISBTRlggOCBlIGl6ZSBbYWVpb3VdbGUKKyEgU0ZYIDggdW0gaXplIHVtCishIFNGWCA4IDAgaXplIFtedV1tCishIFNGWCA4IHMgemUgaXMKKyEgU0ZYIDggMCBpemUgW15pXXMKKyEgU0ZYIDggeSBpemUgW15hZWlvdV15CishIFNGWCA4IDAgaXplIFthZWlvdV15CishIFNGWCA4IDAgaXplIFteYWVtc3ldCishIFNGWCA4IDAgdGl6ZXMgYQorISBTRlggOCBlIGl6ZXMgW15sXWUKKyEgU0ZYIDggbGUgaWxpemVzIFteYWVpb3VdbGUKKyEgU0ZYIDggZSBpemVzIFthZWlvdV1sZQorISBTRlggOCB1bSBpemVzIHVtCishIFNGWCA4IDAgaXplcyBbXnVdbQorISBTRlggOCBzIHplcyBpcworISBTRlggOCAwIGl6ZXMgW15pXXMKKyEgU0ZYIDggeSBpemVzIFteYWVpb3VdeQorISBTRlggOCAwIGl6ZXMgW2FlaW91XXkKKyEgU0ZYIDggMCBpemVzIFteYWVtc3ldCishIFNGWCA4IDAgdGl6ZWQgYQorISBTRlggOCBlIGl6ZWQgW15sXWUKKyEgU0ZYIDggbGUgaWxpemVkIFteYWVpb3VdbGUKKyEgU0ZYIDggZSBpemVkIFthZWlvdV1sZQorISBTRlggOCB1bSBpemVkIHVtCishIFNGWCA4IDAgaXplZCBbXnVdbQorISBTRlggOCBzIHplZCBpcworISBTRlggOCAwIGl6ZWQgW15pXXMKKyEgU0ZYIDggeSBpemVkIFteYWVpb3VdeQorISBTRlggOCAwIGl6ZWQgW2FlaW91XXkKKyEgU0ZYIDggMCBpemVkIFteYWVtc3ldCishIFNGWCA4IDAgdGl6aW5nIGEKKyEgU0ZYIDggZSBpemluZyBbXmxdZQorISBTRlggOCBsZSBpbGl6aW5nIFteYWVpb3VdbGUKKyEgU0ZYIDggZSBpemluZyBbYWVpb3VdbGUKKyEgU0ZYIDggdW0gaXppbmcgdW0KKyEgU0ZYIDggMCBpemluZyBbXnVdbQorISBTRlggOCBzIHppbmcgaXMKKyEgU0ZYIDggMCBpemluZyBbXmldcworISBTRlggOCB5IGl6aW5nIFteYWVpb3VdeQorISBTRlggOCAwIGl6aW5nIFthZWlvdV15CishIFNGWCA4IDAgaXppbmcgW15hZW1zeV0KKyAgU0ZYIHEgWSAyMgogISBTRlggcSAwIHRpc2F0aW9uIGEKICEgU0ZYIHEgZSBpc2F0aW9uIFtebF1lCiAhIFNGWCBxIGxlIGlsaXNhdGlvbiBbXmFlaW91XWxlCkBAIC0xODIyLDI5ICsxODIzLDMwIEBACiAhIFNGWCBxIHkgaXNhdGlvbnMgW15hZWlvdV15CiAhIFNGWCBxIDAgaXNhdGlvbnMgW2FlaW91XXkKICEgU0ZYIHEgMCBpc2F0aW9ucyBbXmFlbXN5XQotISBTRlggcSAwIHRpemF0aW9uIGEKLSEgU0ZYIHEgZSBpemF0aW9uIFtebF1lCi0hIFNGWCBxIGxlIGlsaXphdGlvbiBbXmFlaW91XWxlCi0hIFNGWCBxIGUgaXphdGlvbiBbYWVpb3VdbGUKLSEgU0ZYIHEgdW0gaXphdGlvbiB1bQotISBTRlggcSAwIGl6YXRpb24gW151XW0KLSEgU0ZYIHEgcyB6YXRpb24gaXMKLSEgU0ZYIHEgMCBpemF0aW9uIFteaV1zCi0hIFNGWCBxIHkgaXphdGlvbiBbXmFlaW91XXkKLSEgU0ZYIHEgMCBpemF0aW9uIFthZWlvdV15Ci0hIFNGWCBxIDAgaXphdGlvbiBbXmFlbXN5XQotISBTRlggcSAwIHRpemF0aW9ucyBhCi0hIFNGWCBxIGUgaXphdGlvbnMgW15sXWUKLSEgU0ZYIHEgbGUgaWxpemF0aW9ucyBbXmFlaW91XWxlCi0hIFNGWCBxIGUgaXphdGlvbnMgW2FlaW91XWxlCi0hIFNGWCBxIHVtIGl6YXRpb25zIHVtCi0hIFNGWCBxIDAgaXphdGlvbnMgW151XW0KLSEgU0ZYIHEgcyB6YXRpb25zIGlzCi0hIFNGWCBxIDAgaXphdGlvbnMgW15pXXMKLSEgU0ZYIHEgeSBpemF0aW9ucyBbXmFlaW91XXkKLSEgU0ZYIHEgMCBpemF0aW9ucyBbYWVpb3VdeQotISBTRlggcSAwIGl6YXRpb25zIFteYWVtc3ldCi0gIFNGWCBzIFkgNjYKKyAgU0ZYIC0gWSAyMgorISBTRlggLSAwIHRpemF0aW9uIGEKKyEgU0ZYIC0gZSBpemF0aW9uIFtebF1lCishIFNGWCAtIGxlIGlsaXphdGlvbiBbXmFlaW91XWxlCishIFNGWCAtIGUgaXphdGlvbiBbYWVpb3VdbGUKKyEgU0ZYIC0gdW0gaXphdGlvbiB1bQorISBTRlggLSAwIGl6YXRpb24gW151XW0KKyEgU0ZYIC0gcyB6YXRpb24gaXMKKyEgU0ZYIC0gMCBpemF0aW9uIFteaV1zCishIFNGWCAtIHkgaXphdGlvbiBbXmFlaW91XXkKKyEgU0ZYIC0gMCBpemF0aW9uIFthZWlvdV15CishIFNGWCAtIDAgaXphdGlvbiBbXmFlbXN5XQorISBTRlggLSAwIHRpemF0aW9ucyBhCishIFNGWCAtIGUgaXphdGlvbnMgW15sXWUKKyEgU0ZYIC0gbGUgaWxpemF0aW9ucyBbXmFlaW91XWxlCishIFNGWCAtIGUgaXphdGlvbnMgW2FlaW91XWxlCishIFNGWCAtIHVtIGl6YXRpb25zIHVtCishIFNGWCAtIDAgaXphdGlvbnMgW151XW0KKyEgU0ZYIC0gcyB6YXRpb25zIGlzCishIFNGWCAtIDAgaXphdGlvbnMgW15pXXMKKyEgU0ZYIC0geSBpemF0aW9ucyBbXmFlaW91XXkKKyEgU0ZYIC0gMCBpemF0aW9ucyBbYWVpb3VdeQorISBTRlggLSAwIGl6YXRpb25zIFteYWVtc3ldCisgIFNGWCBzIFkgMzMKICEgU0ZYIHMgMCB0aXNlciBhCiAhIFNGWCBzIGUgaXNlciBbXmxdZQogISBTRlggcyBsZSBpbGlzZXIgW15hZWlvdV1sZQpAQCAtMTg3OCw0MCArMTg4MCw0MSBAQAogISBTRlggcyB5IGlzZXIncyBbXmFlaW91XXkKICEgU0ZYIHMgMCBpc2VyJ3MgW2FlaW91XXkKICEgU0ZYIHMgMCBpc2VyJ3MgW15hZW1zeV0KLSEgU0ZYIHMgMCB0aXplciBhCi0hIFNGWCBzIGUgaXplciBbXmxdZQotISBTRlggcyBsZSBpbGl6ZXIgW15hZWlvdV1sZQotISBTRlggcyBlIGl6ZXIgW2FlaW91XWxlCi0hIFNGWCBzIHVtIGl6ZXIgdW0KLSEgU0ZYIHMgMCBpemVyIFtedV1tCi0hIFNGWCBzIHMgemVyIGlzCi0hIFNGWCBzIDAgaXplciBbXmldcwotISBTRlggcyB5IGl6ZXIgW15hZWlvdV15Ci0hIFNGWCBzIDAgaXplciBbYWVpb3VdeQotISBTRlggcyAwIGl6ZXIgW15hZW1zeV0KLSEgU0ZYIHMgMCB0aXplcnMgYQotISBTRlggcyBlIGl6ZXJzIFtebF1lCi0hIFNGWCBzIGxlIGlsaXplcnMgW15hZWlvdV1sZQotISBTRlggcyBlIGl6ZXJzIFthZWlvdV1sZQotISBTRlggcyB1bSBpemVycyB1bQotISBTRlggcyAwIGl6ZXJzIFtedV1tCi0hIFNGWCBzIHMgemVycyBpcwotISBTRlggcyAwIGl6ZXJzIFteaV1zCi0hIFNGWCBzIHkgaXplcnMgW15hZWlvdV15Ci0hIFNGWCBzIDAgaXplcnMgW2FlaW91XXkKLSEgU0ZYIHMgMCBpemVycyBbXmFlbXN5XQotISBTRlggcyAwIHRpemVyJ3MgYQotISBTRlggcyBlIGl6ZXIncyBbXmxdZQotISBTRlggcyBsZSBpbGl6ZXIncyBbXmFlaW91XWxlCi0hIFNGWCBzIGUgaXplcidzIFthZWlvdV1sZQotISBTRlggcyB1bSBpemVyJ3MgdW0KLSEgU0ZYIHMgMCBpemVyJ3MgW151XW0KLSEgU0ZYIHMgcyB6ZXIncyBpcwotISBTRlggcyAwIGl6ZXIncyBbXmldcwotISBTRlggcyB5IGl6ZXIncyBbXmFlaW91XXkKLSEgU0ZYIHMgMCBpemVyJ3MgW2FlaW91XXkKLSEgU0ZYIHMgMCBpemVyJ3MgW15hZW1zeV0KLSAgU0ZYIHQgWSA0NAorICBTRlggOSBZIDMzCishIFNGWCA5IDAgdGl6ZXIgYQorISBTRlggOSBlIGl6ZXIgW15sXWUKKyEgU0ZYIDkgbGUgaWxpemVyIFteYWVpb3VdbGUKKyEgU0ZYIDkgZSBpemVyIFthZWlvdV1sZQorISBTRlggOSB1bSBpemVyIHVtCishIFNGWCA5IDAgaXplciBbXnVdbQorISBTRlggOSBzIHplciBpcworISBTRlggOSAwIGl6ZXIgW15pXXMKKyEgU0ZYIDkgeSBpemVyIFteYWVpb3VdeQorISBTRlggOSAwIGl6ZXIgW2FlaW91XXkKKyEgU0ZYIDkgMCBpemVyIFteYWVtc3ldCishIFNGWCA5IDAgdGl6ZXJzIGEKKyEgU0ZYIDkgZSBpemVycyBbXmxdZQorISBTRlggOSBsZSBpbGl6ZXJzIFteYWVpb3VdbGUKKyEgU0ZYIDkgZSBpemVycyBbYWVpb3VdbGUKKyEgU0ZYIDkgdW0gaXplcnMgdW0KKyEgU0ZYIDkgMCBpemVycyBbXnVdbQorISBTRlggOSBzIHplcnMgaXMKKyEgU0ZYIDkgMCBpemVycyBbXmldcworISBTRlggOSB5IGl6ZXJzIFteYWVpb3VdeQorISBTRlggOSAwIGl6ZXJzIFthZWlvdV15CishIFNGWCA5IDAgaXplcnMgW15hZW1zeV0KKyEgU0ZYIDkgMCB0aXplcidzIGEKKyEgU0ZYIDkgZSBpemVyJ3MgW15sXWUKKyEgU0ZYIDkgbGUgaWxpemVyJ3MgW15hZWlvdV1sZQorISBTRlggOSBlIGl6ZXIncyBbYWVpb3VdbGUKKyEgU0ZYIDkgdW0gaXplcidzIHVtCishIFNGWCA5IDAgaXplcidzIFtedV1tCishIFNGWCA5IHMgemVyJ3MgaXMKKyEgU0ZYIDkgMCBpemVyJ3MgW15pXXMKKyEgU0ZYIDkgeSBpemVyJ3MgW15hZWlvdV15CishIFNGWCA5IDAgaXplcidzIFthZWlvdV15CishIFNGWCA5IDAgaXplcidzIFteYWVtc3ldCisgIFNGWCB0IFkgMjIKICEgU0ZYIHQgMCB0aXNhYmxlIGEKICEgU0ZYIHQgZSBpc2FibGUgW15sXWUKICEgU0ZYIHQgbGUgaWxpc2FibGUgW15hZWlvdV1sZQpAQCAtMTkyMywxNyArMTkyNiw2IEBACiAhIFNGWCB0IHkgaXNhYmxlIFteYWVpb3VdeQogISBTRlggdCAwIGlzYWJsZSBbYWVpb3VdeQogISBTRlggdCAwIGlzYWJsZSBbXmFlbXN5XQotISBTRlggdCAwIHRpemFibGUgYQotISBTRlggdCBlIGl6YWJsZSBbXmxdZQotISBTRlggdCBsZSBpbGl6YWJsZSBbXmFlaW91XWxlCi0hIFNGWCB0IGUgaXphYmxlIFthZWlvdV1sZQotISBTRlggdCB1bSBpemFibGUgdW0KLSEgU0ZYIHQgMCBpemFibGUgW151XW0KLSEgU0ZYIHQgcyB6YWJsZSBpcwotISBTRlggdCAwIGl6YWJsZSBbXmldcwotISBTRlggdCB5IGl6YWJsZSBbXmFlaW91XXkKLSEgU0ZYIHQgMCBpemFibGUgW2FlaW91XXkKLSEgU0ZYIHQgMCBpemFibGUgW15hZW1zeV0KICEgU0ZYIHQgMCB0aXNhYmlsaXR5IGEKICEgU0ZYIHQgZSBpc2FiaWxpdHkgW15sXWUKICEgU0ZYIHQgbGUgaWxpc2FiaWxpdHkgW15hZWlvdV1sZQpAQCAtMTk0NSwxNyArMTkzNywyOSBAQAogISBTRlggdCB5IGlzYWJpbGl0eSBbXmFlaW91XXkKICEgU0ZYIHQgMCBpc2FiaWxpdHkgW2FlaW91XXkKICEgU0ZYIHQgMCBpc2FiaWxpdHkgW15hZW1zeV0KLSEgU0ZYIHQgMCB0aXphYmlsaXR5IGEKLSEgU0ZYIHQgZSBpemFiaWxpdHkgW15sXWUKLSEgU0ZYIHQgbGUgaWxpemFiaWxpdHkgW15hZWlvdV1sZQotISBTRlggdCBlIGl6YWJpbGl0eSBbYWVpb3VdbGUKLSEgU0ZYIHQgdW0gaXphYmlsaXR5IHVtCi0hIFNGWCB0IDAgaXphYmlsaXR5IFtedV1tCi0hIFNGWCB0IHMgemFiaWxpdHkgaXMKLSEgU0ZYIHQgMCBpemFiaWxpdHkgW15pXXMKLSEgU0ZYIHQgeSBpemFiaWxpdHkgW15hZWlvdV15Ci0hIFNGWCB0IDAgaXphYmlsaXR5IFthZWlvdV15Ci0hIFNGWCB0IDAgaXphYmlsaXR5IFteYWVtc3ldCisgIFNGWCArIFkgMjIKKyEgU0ZYICsgMCB0aXphYmxlIGEKKyEgU0ZYICsgZSBpemFibGUgW15sXWUKKyEgU0ZYICsgbGUgaWxpemFibGUgW15hZWlvdV1sZQorISBTRlggKyBlIGl6YWJsZSBbYWVpb3VdbGUKKyEgU0ZYICsgdW0gaXphYmxlIHVtCishIFNGWCArIDAgaXphYmxlIFtedV1tCishIFNGWCArIHMgemFibGUgaXMKKyEgU0ZYICsgMCBpemFibGUgW15pXXMKKyEgU0ZYICsgeSBpemFibGUgW15hZWlvdV15CishIFNGWCArIDAgaXphYmxlIFthZWlvdV15CishIFNGWCArIDAgaXphYmxlIFteYWVtc3ldCishIFNGWCArIDAgdGl6YWJpbGl0eSBhCishIFNGWCArIGUgaXphYmlsaXR5IFtebF1lCishIFNGWCArIGxlIGlsaXphYmlsaXR5IFteYWVpb3VdbGUKKyEgU0ZYICsgZSBpemFiaWxpdHkgW2FlaW91XWxlCishIFNGWCArIHVtIGl6YWJpbGl0eSB1bQorISBTRlggKyAwIGl6YWJpbGl0eSBbXnVdbQorISBTRlggKyBzIHphYmlsaXR5IGlzCishIFNGWCArIDAgaXphYmlsaXR5IFteaV1zCishIFNGWCArIHkgaXphYmlsaXR5IFteYWVpb3VdeQorISBTRlggKyAwIGl6YWJpbGl0eSBbYWVpb3VdeQorISBTRlggKyAwIGl6YWJpbGl0eSBbXmFlbXN5XQogICBTRlggTSBZIDEKICEgU0ZYIE0gMCAncyAuCiAgIFNGWCBCIFkgNDgKQEAgLTIzNTEsMjY2ICsyMzU1LDIwMCBAQAogISBTQUwgWShBRUlPVSktICAgICAgICAgICAgWQogISBTQUwgWlotICAgICAgICAgICAgICAgICAgXwogISBTQUwgWiAgICAgICAgICAgICAgICAgICAgUwotKioqIGVuX0dCLm9yaWcuZGljCVN1biBBcHIgMTcgMTg6MDg6NTAgMjAwNQotLS0tIGVuX0dCLmRpYwlNb24gSnVuIDI3IDA5OjMxOjE3IDIwMDUKKyoqKiBlbl9HQi5vcmlnLmRpYwlTdW4gSnVsICAzIDE4OjA1OjA3IDIwMDUKKy0tLSBlbl9HQi5kaWMJU3VuIEp1bCAgMyAxODoxOToyNSAyMDA1CiAqKioqKioqKioqKioqKioKLSoqKiAxODcsMTg5ICoqKioKLSAgYWl0Y2gvU00KLS0gYWwvRkFDCi0gIGFsLUphemVlcmEKLS0tLSAxODcsMTg4IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDE3OTUsMTc5NiAqKioqCi0tLS0gMTc5NCwxNzk2IC0tLS0KLSAgY29uaWMvUwotKyBjb25qLgotICBjb25qZWN0dXJhbAotKioqKioqKioqKioqKioqCi0qKiogMjEwMywyMTA1ICoqKioKLSAgY3phcnNoaXAKLS0gZC9vCi0gIGQnYXJ0Ci0tLS0gMjEwMywyMTA0IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDIxNDgsMjE1MCAqKioqCi0gIGRhenpsZS9EUmtHSlMKLS0gZEJtCi0gIERDCi0tLS0gMjE0NywyMTQ4IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDQ2MzcsNDYzOSAqKioqCi0gIGxhc3MvTVMKLS0gbGFzdC1taW51dGUKLSAgbGFzdHMvZQotLS0tIDQ2MzUsNDYzNiAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiA1NDcwLDU0NzIgKioqKgotICBN/G5jaGhhdXNlbi9NCi0tIG4vTnhuVnZ1Ci0gIE4nRGphbWVuYQotLS0tIDU0NjcsNTQ2OCAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiA1NDk5LDU1MDEgKioqKgotICBuYXRjaAotISBuYXRpb24vTQotICBuYXRpb25hbGlzZXMvQQotLS0tIDU0OTUsNTQ5NyAtLS0tCi0gIG5hdGNoCi0hIG5hdGlvbi9NUwotICBuYXRpb25hbGlzZXMvQQotKioqKioqKioqKioqKioqCi0qKiogNjMxNiw2MzE3ICoqKioKLS0tLSA2MzEyLDYzMTQgLS0tLQotICBwb21wb20vU00KLSsgcG9tcG9uL00KLSAgcG9uY2UvTQotKioqKioqKioqKioqKioqCi0qKiogNzA0OCw3MDUwICoqKioKLSAgculnaW1lL1NNCi0hIHMvb2s3Ci0gIFNhYWIvTQotLS0tIDcwNDUsNzA0NyAtLS0tCi0gIHLpZ2ltZS9TTQotISBzaW5nbHkKLSAgU2FhYi9NCi0qKioqKioqKioqKioqKioKLSoqKiAxMTE0OCwxMTE0OSAqKioqCi0tLS0gMTExNDUsMTExNDggLS0tLQotICBkQmkKLSsgZEJtCi0rIGRCZAotICBEQ0IKLSoqKioqKioqKioqKioqKgotKioqIDExNTkxLDExNTkzICoqKioKLSAgZOlyYWlsbGV1ci9TTQotLSBlCi0gIGUnZW4KLS0tLSAxMTU5MCwxMTU5MSAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiAxNDU5MSwxNDU5MiAqKioqCi0tLS0gMTQ1ODksMTQ1OTEgLS0tLQotICBuYXRpdmUvU1AKLSsgbmF0aXZlbHkKLSAgbmF0aXZpdHkvU00KLSoqKioqKioqKioqKioqKgotKioqIDE2MTcyLDE2MTc0ICoqKioKLSAgUlNQQ0EKLS0gcnRlCi0gIHJ1YmF0aQotLS0tIDE2MTcxLDE2MTcyIC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDE3MjUxLDE3MjUzICoqKioKLSAgc+lhbmNlL1NNCi0tIHQvYWMKLSAgVCdhbmcKLS0tLSAxNzI0OSwxNzI1MCAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiAxNzgwOCwxNzgwOSAqKioqCi0tLS0gMTc4MDUsMTc4MDcgLS0tLQotICB1bnNlYXJjaGFibGUKLSsgc2VhcmNoYWJsZQotICB1bnNoYWthYmxlL1kKLSoqKioqKioqKioqKioqKgotKioqIDE4MjY4LDE4MjcwICoqKioKLSAgeHlsb3Bob25lL1NNCi0tIHkvSwotICB5YWNodGVycwotLS0tIDE4MjY2LDE4MjY3IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDE4MzIyLDE4MzIzICoqKioKLS0tLSAxODMxOSwxODMyMSAtLS0tCi0gIOltaWdy6S9TCi0rIG5kCi0gIDNHUFAKLSoqKioqKioqKioqKioqKgotKioqIDE5MzAzLDE5MzA0ICoqKioKLS0tLSAxOTMwMSwxOTMwMyAtLS0tCi0gIEJyYW1wdG9uL00KLSsgQnJhbS9NCi0gIGJyYW5kL01SREdTWgotKioqKioqKioqKioqKioqCi0qKiogMjEwOTcsMjEwOTkgKioqKgotICBlc3RpbWF0aXZlCi0hIGV0Ci0gIGV0YWxvbgotLS0tIDIxMDk2LDIxMDk5IC0tLS0KLSAgZXN0aW1hdGl2ZQotISBldCBjZXRlcmEKLSEgZXQgYWwuCi0gIGV0YWxvbgotKioqKioqKioqKioqKioqCi0qKiogMjEyMjgsMjEyMzAgKioqKgotICBFenJhCi0tIGYvMzcKLSAgRmFiZXIvTQotLS0tIDIxMjI4LDIxMjI5IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDIyNzM0LDIyNzM2ICoqKioKLSAganVzdGlmaWNhdGlvbi9NCi0tIGsvRQotICBLYWJ1bAotLS0tIDIyNzMzLDIyNzM0IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDIzNjMyLDIzNjMzICoqKioKLS0tLSAyMzYzMCwyMzYzMiAtLS0tCi0gIE1vb2cKLSsgTW9vbGVuYWFyL00KLSAgbW9vbmxpZ2h0L0dSRFNNCi0qKioqKioqKioqKioqKioKLSoqKiAyNDI0MiwyNDI0NCAqKioqCi0gIG94eWdlbmF0aW9uL00KLS0gcC9GWUFJCi0gIFBhYmxvL00KLS0tLSAyNDI0MSwyNDI0MiAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiAyNzIyMywyNzIyNSAqKioqCi0gIFZpbGxpZXJzCi0hIHZpbS9NCi0gIFZpbmNpL00KLS0tLSAyNzIyMSwyNzIyMyAtLS0tCi0gIFZpbGxpZXJzCi0hIFZpbS9NCi0gIFZpbmNpL00KLSoqKioqKioqKioqKioqKgotKioqIDI3NTY4LDI3NTcwICoqKioKLSAgWXZldHRlCi0tIHovZAotICBaZWFsYW5kZXJzCi0tLS0gMjc1NjYsMjc1NjcgLS0tLQotKioqKioqKioqKioqKioqCi0qKiogMjgxNzQsMjgxNzYgKioqKgotICBBenRlYy9NCi0tIGIvYnAKLSAgQmFhbC9NCi0tLS0gMjgxNzEsMjgxNzIgLS0tLQotKioqKioqKioqKioqKioqCi0qKiogMjg4OTAsMjg4OTIgKioqKgotICBDYXRoeQotISBjYXRpb24vTVcKLSAgY2F0bmlwL1NNCi0tLS0gMjg4ODYsMjg4ODggLS0tLQotICBDYXRoeQotISBjYXRpb24vTVdTCi0gIGNhdG5pcC9TTQotKioqKioqKioqKioqKioqCi0qKiogMzA1ODcsMzA1ODkgKioqKgotICBmaXNzaW9uYWJsZS9TCi0hIGZpc3QvNkdECi0gIGZpdC82VFJHTVlKUFNEagotLS0tIDMwNTgzLDMwNTg1IC0tLS0KLSAgZmlzc2lvbmFibGUvUwotISBmaXN0LzZHRE1TCi0gIGZpdC82VFJHTVlKUFNEagotKioqKioqKioqKioqKioqCi0qKiogMzA4NDYsMzA4NDggKioqKgotICBmdXp6eS9UUAotLSBnLzczCi0gIEdhL3kKLS0tLSAzMDg0MiwzMDg0MyAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiAzMTQwOSwzMTQxMSAqKioqCi0gIGhvYi9NREdaUwotISBob2JiaXQKLSAgSG9iYnMKLS0tLSAzMTQwNCwzMTQwNiAtLS0tCi0gIGhvYi9NREdaUwotISBob2JiaXQvTVMKLSAgSG9iYnMKLSoqKioqKioqKioqKioqKgotKioqIDMyMTEwLDMyMTEyICoqKioKLSAga1doCi0hIGwvRgotICBsYWIvTW9TCi0tLS0gMzIxMDUsMzIxMDcgLS0tLQotICBrV2gKLSEgY29sbAotICBsYWIvTW9TCi0qKioqKioqKioqKioqKioKLSoqKiAzMjE3NCwzMjE3NiAqKioqCi0gIGxhc3NvL0dNRFMKLS0gbGFzdC1kaXRjaAotICBMYXN6bG8vTQotLS0tIDMyMTY5LDMyMTcwIC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDM0MTg4LDM0MTkwICoqKioKLSAgcOJ06S9NCi0tIHEKLSAgUWF0YXIKLS0tLSAzNDE4MiwzNDE4MyAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiAzNjMyNCwzNjMyNiAqKioqCi0gIHV0dGVybW9zdAotLSB2Ci0gIHZhY2F0ZS9uREdOUwotLS0tIDM2MzE3LDM2MzE4IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDM3OTE2LDM3OTE4ICoqKioKLSAgYnlzCisqKiogNjMwLDYzMiAqKioqCisgIEJ5cm5lL00KIC0gYy9uTgotICBDYS95Ci0tLS0gMzc5MDgsMzc5MDkgLS0tLQorICBjYWIvR01EWFZTTgorLS0tIDYzMCw2MzEgLS0tLQogKioqKioqKioqKioqKioqCi0qKiogNDA0NjgsNDA0NzAgKioqKgotICBH9mRlbC9NCisqKiogMjU4OCwyNTkwICoqKioKKyAgS3dhWnVsdQorLSBsLzMKKyAgbGFiL29NUworLS0tIDI1ODcsMjU4OCAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiA1MjIxLDUyMjMgKioqKgorICBBamF4CistIGFsL0FGQworICBBbGFiYW1pYW4vTQorLS0tIDUyMTksNTIyMCAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiA2MjU2LDYyNTggKioqKgorICBjemFyaXN0CistIGQvdG8KKyAgZGFtYWdlZC9VCistLS0gNjI1Myw2MjU0IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDgxNjgsODE3MCAqKioqCisgIE5hdGFzaGEvTQorISBuYXRpb24vTQorICBuYXZpZ2FibGUvUAorLS0tIDgxNjQsODE2NiAtLS0tCisgIE5hdGFzaGEvTQorISBuYXRpb24vTVMKKyAgbmF2aWdhYmxlL1AKKyoqKioqKioqKioqKioqKgorKioqIDk5NTksOTk2MSAqKioqCisgIFV6YmVraXN0YW4vTQorLSB2CisgIHZhY2F0aW9uL00KKy0tLSA5OTU1LDk5NTYgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMTE1NDYsMTE1NDggKioqKgorICBEWgorLSBlCisgIGVhY2gKKy0tLSAxMTU0MSwxMTU0MiAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAxMzE4OSwxMzE5MSAqKioqCisgIG15dGhvbG9neS9TUU0zMXcKKy0gbi9ObnhWdnUKKyAgbmFjaG8vUworLS0tIDEzMTgzLDEzMTg0IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDE2MDM4LDE2MDQwICoqKioKKyAgQ2F0aG9saWNzCishIGNhdGlvbi9NVworICBjYXRuYXAvRE1TRworLS0tIDE2MDMxLDE2MDMzIC0tLS0KKyAgQ2F0aG9saWNzCishIGNhdGlvbi9NV1MKKyAgY2F0bmFwL0RNU0cKKyoqKioqKioqKioqKioqKgorKioqIDE2OTU0LDE2OTU2ICoqKioKKyAgZXlld2FzaC9TTQorLSBmL0Y3CisgIGZhYnJpY2F0b3IvU00KKy0tLSAxNjk0NywxNjk0OCAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAxNzg3NCwxNzg3NyAqKioqCisgIGxhc3MvTVMKKy0gbGFzdC1kaXRjaAorLSBsYXN0LW1pbnV0ZQorICBsYXRjaGtleS9TTQorLS0tIDE3ODY2LDE3ODY3IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDIyMzY1LDIyMzY3ICoqKioKKyAgZnV0dXJpc3RpYy9TCistIGcvNworICBnYWJiaW5lc3MvUworLS0tIDIyMzU1LDIyMzU2IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDIyNjkyLDIyNjk0ICoqKioKKyAgSE1TCishIGhvYmJpdAorICBob2Jub2IvREdTCistLS0gMjI2ODEsMjI2ODMgLS0tLQorICBITVMKKyEgaG9iYml0L01TCisgIGhvYm5vYi9ER1MKKyoqKioqKioqKioqKioqKgorKioqIDIzOTA5LDIzOTExICoqKioKKyAgb3pvbmUvTQorLSBwL0FZRkkKKyAgcC5hLgorLS0tIDIzODk4LDIzODk5IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDI0NTU4LDI0NTYwICoqKioKKyAgUnQuCistIHJ0ZQorICBSdS9NCistLS0gMjQ1NDYsMjQ1NDcgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMjU2OTcsMjU2OTkgKioqKgorICB4eWxlbS9TTQorLSB5L0sKKyAgWWFtYWhhL00KKy0tLSAyNTY4NCwyNTY4NSAtLS0tCisqKioqKioqKioqKioqKioKKyoqKiAyNzc3OCwyNzc4MCAqKioqCisgIGd5cmZhbGNvbi9NUwogLSBoL0UKLSAgaGEncCdvcnRoCi0tLS0gNDA0NTksNDA0NjAgLS0tLQorICBoYWJpdHVhbC9ZUAorLS0tIDI3NzY0LDI3NzY1IC0tLS0KICoqKioqKioqKioqKioqKgotKioqIDQzMjc1LDQzMjc2ICoqKioKLS0tLSA0MzI2NSw0MzI2NyAtLS0tCi0gIHBuZXVtb25pYS9NUworKioqIDI5NTMyLDI5NTM0ICoqKioKKyAgcHlyb3RlY2hueS9XdworLSBxCisgIFFvUworLS0tIDI5NTE3LDI5NTE4IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDMwNzc2LDMwNzc4ICoqKioKKyAgdmlsbGVpbi9TTQorISB2aW0vTQorICB2aW5kYWxvby9TCistLS0gMzA3NjAsMzA3NjMgLS0tLQorICB2aWxsZWluL1NNCishIHZpbS9NPworISBWaW0vTQorICB2aW5kYWxvby9TCisqKioqKioqKioqKioqKioKKyoqKiAzMDk1NiwzMDk1OCAqKioqCisgIFlXQ0EKKy0gei9kCisgIFphbWlhCistLS0gMzA5NDEsMzA5NDIgLS0tLQorKioqKioqKioqKioqKioqCisqKiogMzQ3MzIsMzQ3MzQgKioqKgorICBxdWl6emVzCistIHIvc2QKKyAgcmFiYmV0L1NNZAorLS0tIDM0NzE2LDM0NzE3IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDM3MjY1LDM3MjY2ICoqKioKKy0tLSAzNzI0OCwzNzI1MCAtLS0tCisgIGRCaQorKyBkQmQKKyAgZEJXCisqKioqKioqKioqKioqKioKKyoqKiAzNzY5MSwzNzY5MyAqKioqCisgIGVzdGFibGlzaG1lbnQvQQorLSBldAorICBldGVybml0eS9TTQorLS0tIDM3Njc1LDM3Njc2IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDM5OTc0LDM5OTc2ICoqKioKKyAgcnVzdHByb29mL0dECishIHMva283CisgIFNhYmluZS9NCistLS0gMzk5NTcsMzk5NTkgLS0tLQorICBydXN0cHJvb2YvR0QKKyEgc2luZ2x5CisgIFNhYmluZS9NCisqKioqKioqKioqKioqKioKKyoqKiA0MTQ3Myw0MTQ3NSAqKioqCisgIGF6YWxlYS9NUworLSBiL3BiCisgIEJhYWwvTQorLS0tIDQxNDU2LDQxNDU3IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDQzNjEyLDQzNjE0ICoqKioKKyAganVzdG5lc3NlcworLSBrL2sKKyAga2Fib2IncworLS0tIDQzNTk0LDQzNTk1IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDQ1NjkwLDQ1NjkyICoqKioKKyAgc3lyaW5nZS9TTUdECistIHQvN2sKKyAgVGFiYXNjby9NCistLS0gNDU2NzEsNDU2NzIgLS0tLQorKioqKioqKioqKioqKioqCisqKiogNDYyODEgKioqKgorLS0tIDQ2MjYxLDQ2Mjc2IC0tLS0KKyAgWnVyaWNoL00KKysgY29uai4KKysgcG9tcG9uCisrIG5hdGl2ZWx5CisrIG5kCisrIEJyYW0vTQorKyBldCBhbC4KKysgZXQgY2V0ZXJhCisrIE1vb2xlbmFhci9NCiArIHBuZXVtb25pYwotICBQTwotKioqKioqKioqKioqKioqCi0qKiogNDM2NjUsNDM2NjcgKioqKgotICBxd2VydHkKLS0gci9kCi0gIFJhCi0tLS0gNDM2NTYsNDM2NTcgLS0tLQotKioqKioqKioqKioqKioqCi0qKiogNDYxNDggKioqKgotLS0tIDQ2MTM4LDQ2MTQ0IC0tLS0KLSAg4AogKyB0aGUgdGhlLyEKICsgYSBhLyEKICsgYSBhbi8hCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZW5fTlouZGlmZiBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fTlouZGlmZgpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvc3BlbGwvZW5fTlouZGlmZgpyZW5hbWUgdG8gcnVudGltZS9zcGVsbC9lbi9lbl9OWi5kaWZmCmluZGV4IDk4YzZjYWIuLjVjOTU2MjIgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9lbl9OWi5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fTlouZGlmZgpAQCAtMSw1ICsxLDUgQEAKICoqKiBlbl9OWi5vcmlnLmFmZglGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9OWi5hZmYJTW9uIEp1biAyNyAxOTo0Mjo0NSAyMDA1CistLS0gZW5fTlouYWZmCVN1biBKdWwgIDMgMTc6MTE6MzQgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogNyw5ICoqKioKICAgU0VUIElTTzg4NTktMQpAQCAtMjM1Myw3ICsyMzUzLDcgQEAKICEgU0FMIFpaLSAgICAgICAgICAgICAgICAgIF8KICEgU0FMIFogICAgICAgICAgICAgICAgICAgIFMKICoqKiBlbl9OWi5vcmlnLmRpYwlGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9OWi5kaWMJTW9uIEp1biAyNyAwOTozMToxOSAyMDA1CistLS0gZW5fTlouZGljCVN1biBKdWwgIDMgMTc6MTE6MzQgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogNCw2ICoqKioKICAgMlpCCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZW5fVVMuZGlmZiBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fVVMuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBzcmMvc3BlbGwvZW5fVVMuZGlmZgpyZW5hbWUgdG8gcnVudGltZS9zcGVsbC9lbi9lbl9VUy5kaWZmCmluZGV4IGIwOTc2MDkuLmUyMzIxYTAgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC9lbl9VUy5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fVVMuZGlmZgpAQCAtMSw1ICsxLDUgQEAKICoqKiBlbl9VUy5vcmlnLmFmZglGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9VUy5hZmYJTW9uIEp1biAyNyAxOTo0Mjo0OSAyMDA1CistLS0gZW5fVVMuYWZmCVN1biBKdWwgIDMgMTY6NTk6MjggMjAwNQogKioqKioqKioqKioqKioqCiAqKiogMyw0ICoqKioKIC0tLSAzLDEzIC0tLS0KQEAgLTE3Niw3ICsxNzYsNyBAQAogKyBTQUwgWlotICAgICAgICAgICAgICAgICAgXwogKyBTQUwgWiAgICAgICAgICAgICAgICAgICAgUwogKioqIGVuX1VTLm9yaWcuZGljCUZyaSBBcHIgMTUgMTM6MjA6MzYgMjAwNQotLS0tIGVuX1VTLmRpYwlNb24gSnVuIDI3IDA5OjMxOjIxIDIwMDUKKy0tLSBlbl9VUy5kaWMJU3VuIEp1bCAgMyAxNjo1OToyOCAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA1OTQ0LDU5NDYgKioqKgogICBiawpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lbi9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvZW4vbWFpbi5hYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhYWU2ZAotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vbWFpbi5hYXAKQEAgLTAsMCArMSwyMzIgQEAKKyMgQWFwIHJlY2lwZSBmb3IgRW5nbGlzaCBWaW0gc3BlbGwgZmlsZXMuCisKKyMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgorQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CisgICAgVklNID0gLi4vLi4vLi4vc3JjL3ZpbQorQGVsc2U6CisgICAgVklNID0gdmltCisKK1NQRUxMRElSID0gLi4KK0ZJTEVTICAgID0gZW5fVVMuYWZmIGVuX1VTLmRpYworCSAgIGVuX0FVLmFmZiBlbl9BVS5kaWMKKyAgICAgICAgICAgZW5fQ0EuYWZmIGVuX0NBLmRpYworICAgICAgICAgICBlbl9HQi5hZmYgZW5fR0IuZGljCisgICAgICAgICAgIGVuX05aLmFmZiBlbl9OWi5kaWMKKworYWxsOiAkKFNQRUxMRElSKS9lbi5sYXRpbjEuc3BsICQoU1BFTExESVIpL2VuLnV0Zi04LnNwbCBcCisgICAgICAgICQoU1BFTExESVIpL2VuLmFzY2lpLnNwbCAuLi9SRUFETUVfZW4udHh0CisKKyQoU1BFTExESVIpL2VuLmxhdGluMS5zcGwgOiAkKFZJTSkgJChGSUxFUykKKyAgICAgICAgOnN5cyBlbnYgTEFORz1lbl9VUy5JU084ODU5LTEKKwkJJChWSU0pIC1lIC1jICJta3NwZWxsISAkKFNQRUxMRElSKS9lbiBlbl9VUyBlbl9BVSBlbl9DQSBlbl9HQgorCQkJZW5fTloiIC1jIHEKKworJChTUEVMTERJUikvZW4udXRmLTguc3BsIDogJChWSU0pICQoRklMRVMpCisgICAgICAgIDpzeXMgZW52IExBTkc9ZW5fVVMuVVRGLTgKKwkJJChWSU0pIC1lIC1jICJta3NwZWxsISAkKFNQRUxMRElSKS9lbiBlbl9VUyBlbl9BVSBlbl9DQSBlbl9HQgorCQkJZW5fTloiIC1jIHEKKworJChTUEVMTERJUikvZW4uYXNjaWkuc3BsIDogJChWSU0pICQoRklMRVMpCisgICAgICAgIDpzeXMgJChWSU0pIC1lIC1jICJta3NwZWxsISAtYXNjaWkgJChTUEVMTERJUikvZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVuX1VTIGVuX0FVIGVuX0NBIGVuX0dCIGVuX05aIiAtYyBxCisgCisuLi9SRUFETUVfZW4udHh0OiBSRUFETUVfZW5fVVMudHh0IFJFQURNRV9lbl9BVS50eHQKKyAgICAgICAgOnByaW50IGVuX1VTID4hJHRhcmdldAorICAgICAgICA6Y2F0IFJFQURNRV9lbl9VUy50eHQgfCA6ZXZhbCByZS5zdWIoJ1xyJywgJycsIHN0ZGluKSA+PiR0YXJnZXQKKyAgICAgICAgOnByaW50ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA+PiR0YXJnZXQKKyAgICAgICAgOnByaW50IGVuX0FVOiA+PiR0YXJnZXQKKyAgICAgICAgOmNhdCBSRUFETUVfZW5fQVUudHh0IHwgOmV2YWwgcmUuc3ViKCdccicsICcnLCBzdGRpbikgPj4kdGFyZ2V0CisgICAgICAgIDpwcmludCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPj4kdGFyZ2V0CisgICAgICAgIDpwcmludCBlbl9DQTogPj4kdGFyZ2V0CisgICAgICAgIDpjYXQgUkVBRE1FX2VuX0NBLnR4dCB8IDpldmFsIHJlLnN1YignXHInLCAnJywgc3RkaW4pID4+JHRhcmdldAorICAgICAgICA6cHJpbnQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID4+JHRhcmdldAorICAgICAgICA6cHJpbnQgZW5fR0I6ID4+JHRhcmdldAorICAgICAgICA6Y2F0IFJFQURNRV9lbl9HQi50eHQgfCA6ZXZhbCByZS5zdWIoJ1xyJywgJycsIHN0ZGluKSA+PiR0YXJnZXQKKyAgICAgICAgOnByaW50ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA+PiR0YXJnZXQKKyAgICAgICAgOnByaW50IGVuX05aOiA+PiR0YXJnZXQKKyAgICAgICAgOmNhdCBSRUFETUVfZW5fTloudHh0IHwgOmV2YWwgcmUuc3ViKCdccicsICcnLCBzdGRpbikgPj4kdGFyZ2V0CisKKyMKKyMgRmV0Y2hpbmcgdGhlIGZpbGVzIGZyb20gT3Blbk9mZmljZS5vcmcuCisjCitPT0RJUiA9IGh0dHA6Ly9mdHAuc2VydmljZXMub3Blbm9mZmljZS5vcmcvcHViL09wZW5PZmZpY2Uub3JnL2NvbnRyaWIvZGljdGlvbmFyaWVzCis6YXR0ciB7ZmV0Y2ggPSAkKE9PRElSKS8lZmlsZSV9IGVuX1VTLnppcCBlbl9DQS56aXAgZW5fTlouemlwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuX0dCLnppcCBlbl9BVS56aXAKKworIyBUaGUgZmlsZXMgZG9uJ3QgZGVwZW5kIG9uIHRoZSAuemlwIGZpbGUgc28gdGhhdCB3ZSBjYW4gZGVsZXRlIGl0LgorIyBPbmx5IGRvd25sb2FkIHRoZSB6aXAgZmlsZSBpZiB0aGUgdGFyZ2V0cyBkb24ndCBleGlzdC4KK2VuX1VTLmFmZiBlbl9VUy5kaWM6IHtidWlsZGNoZWNrPX0KKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBwYXRjaAorICAgICAgICA6ZmV0Y2ggZW5fVVMuemlwCisgICAgICAgIDpzeXMgJChVTlpJUCkgZW5fVVMuemlwCisgICAgICAgIDpkZWxldGUgZW5fVVMuemlwCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2VuX1VTLm9yaWcuYWZmJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgZW5fVVMuYWZmIGVuX1VTLm9yaWcuYWZmCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2VuX1VTLm9yaWcuZGljJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgZW5fVVMuYWZmIGVuX1VTLm9yaWcuZGljCisgICAgICAgIDpzeXMgcGF0Y2ggPGVuX1VTLmRpZmYKKworZW5fQVUuYWZmIGVuX0FVLmRpYzoge2J1aWxkY2hlY2s9fQorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIHBhdGNoCisgICAgICAgIDpmZXRjaCBlbl9BVS56aXAKKyAgICAgICAgOnN5cyAkKFVOWklQKSBlbl9BVS56aXAKKyAgICAgICAgOmRlbGV0ZSBlbl9BVS56aXAKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZW5fQVUub3JpZy5hZmYnKToKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9BVS5hZmYgZW5fQVUub3JpZy5hZmYKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZW5fQVUub3JpZy5kaWMnKToKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9BVS5hZmYgZW5fQVUub3JpZy5kaWMKKyAgICAgICAgOnN5cyBwYXRjaCA8ZW5fQVUuZGlmZgorCitlbl9DQS5hZmYgZW5fQ0EuZGljOiB7YnVpbGRjaGVjaz19CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgcGF0Y2gKKyAgICAgICAgOmZldGNoIGVuX0NBLnppcAorICAgICAgICA6c3lzICQoVU5aSVApIGVuX0NBLnppcAorICAgICAgICA6ZGVsZXRlIGVuX0NBLnppcAorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdlbl9DQS5vcmlnLmFmZicpOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0NBLmFmZiBlbl9DQS5vcmlnLmFmZgorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdlbl9DQS5vcmlnLmRpYycpOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0NBLmFmZiBlbl9DQS5vcmlnLmRpYworICAgICAgICA6c3lzIHBhdGNoIDxlbl9DQS5kaWZmCisKK2VuX0dCLmFmZiBlbl9HQi5kaWM6IHtidWlsZGNoZWNrPX0KKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBwYXRjaAorICAgICAgICA6ZmV0Y2ggZW5fR0IuemlwCisgICAgICAgIDpzeXMgJChVTlpJUCkgZW5fR0IuemlwCisgICAgICAgIDpkZWxldGUgZW5fR0IuemlwCisgICAgICAgIDpkZWxldGUgZGljdGlvbmFyeS5sc3QuZXhhbXBsZQorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdlbl9HQi5vcmlnLmFmZicpOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0dCLmFmZiBlbl9HQi5vcmlnLmFmZgorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdlbl9HQi5vcmlnLmRpYycpOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0dCLmFmZiBlbl9HQi5vcmlnLmRpYworICAgICAgICA6c3lzIHBhdGNoIDxlbl9HQi5kaWZmCisKK2VuX05aLmFmZiBlbl9OWi5kaWM6IHtidWlsZGNoZWNrPX0KKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBwYXRjaAorICAgICAgICA6ZmV0Y2ggZW5fTlouemlwCisgICAgICAgIDpzeXMgJChVTlpJUCkgZW5fTlouemlwCisgICAgICAgIDpkZWxldGUgZW5fTlouemlwCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2VuX05aLm9yaWcuYWZmJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgZW5fTlouYWZmIGVuX05aLm9yaWcuYWZmCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2VuX05aLm9yaWcuZGljJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgZW5fTlouYWZmIGVuX05aLm9yaWcuZGljCisgICAgICAgIDpzeXMgcGF0Y2ggPGVuX05aLmRpZmYKKworCisjIEdlbmVyYXRlIGRpZmYgZmlsZXMsIHNvIHRoYXQgb3RoZXJzIGNhbiBnZXQgdGhlIE9wZW5PZmZpY2UgZmlsZXMgYW5kIGFwcGx5CisjIHRoZSBkaWZmcyB0byBnZXQgdGhlIFZpbSB2ZXJzaW9ucy4KKworZGlmZjoKKyAgICAgICAgOmFzc2VydHBrZyBkaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW5fVVMub3JpZy5hZmYgZW5fVVMuYWZmID5lbl9VUy5kaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW5fVVMub3JpZy5kaWMgZW5fVVMuZGljID4+ZW5fVVMuZGlmZgorICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIGVuX0FVLm9yaWcuYWZmIGVuX0FVLmFmZiA+ZW5fQVUuZGlmZgorCTpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW5fQVUub3JpZy5kaWMgZW5fQVUuZGljID4+ZW5fQVUuZGlmZgorCTpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW5fQ0Eub3JpZy5hZmYgZW5fQ0EuYWZmID5lbl9DQS5kaWZmCisJOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBlbl9DQS5vcmlnLmRpYyBlbl9DQS5kaWMgPj5lbl9DQS5kaWZmCisJOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBlbl9HQi5vcmlnLmFmZiBlbl9HQi5hZmYgPmVuX0dCLmRpZmYKKwk6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIGVuX0dCLm9yaWcuZGljIGVuX0dCLmRpYyA+PmVuX0dCLmRpZmYKKwk6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIGVuX05aLm9yaWcuYWZmIGVuX05aLmFmZiA+ZW5fTlouZGlmZgorCTpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW5fTloub3JpZy5kaWMgZW5fTlouZGljID4+ZW5fTlouZGlmZgorCisKKyMgQ2hlY2sgZm9yIHVwZGF0ZWQgT3Blbk9mZmljZSBzcGVsbCBmaWxlcy4gIFdoZW4gdGhlcmUgYXJlIGNoYW5nZXMgdGhlCisjICIubmV3LmFmZiIgYW5kICIubmV3LmRpYyIgZmlsZXMgYXJlIGxlZnQgYmVoaW5kIGZvciBtYW51YWwgaW5zcGVjdGlvbi4KKworY2hlY2s6IGNoZWNrLXVzIGNoZWNrLWF1IGNoZWNrLWNhIGNoZWNrLWdiIGNoZWNrLW56CisKK2NoZWNrLXVzOgorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIGRpZmYKKyAgICAgICAgOmZldGNoIGVuX1VTLnppcAorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi9lbl9VUy56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2VuX1VTLm9yaWcuYWZmIGVuX1VTLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9VUy5hZmYgLi4vZW5fVVMubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZW5fVVMub3JpZy5kaWMgZW5fVVMuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX1VTLmRpYyAuLi9lbl9VUy5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgZW5fVVMuemlwCisKK2NoZWNrLWF1OgorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIGRpZmYKKyAgICAgICAgOmZldGNoIGVuX0FVLnppcAorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi9lbl9BVS56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2VuX0FVLm9yaWcuYWZmIGVuX0FVLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9BVS5hZmYgLi4vZW5fQVUubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZW5fQVUub3JpZy5kaWMgZW5fQVUuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0FVLmRpYyAuLi9lbl9BVS5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgZW5fQVUuemlwCisKK2NoZWNrLWNhOgorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIGRpZmYKKyAgICAgICAgOmZldGNoIGVuX0NBLnppcAorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi9lbl9DQS56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2VuX0NBLm9yaWcuYWZmIGVuX0NBLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9DQS5hZmYgLi4vZW5fQ0EubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZW5fQ0Eub3JpZy5kaWMgZW5fQ0EuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0NBLmRpYyAuLi9lbl9DQS5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgZW5fQ0EuemlwCisKK2NoZWNrLWdiOgorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIGRpZmYKKyAgICAgICAgOmZldGNoIGVuX0dCLnppcAorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi9lbl9HQi56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2VuX0dCLm9yaWcuYWZmIGVuX0dCLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9HQi5hZmYgLi4vZW5fR0IubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZW5fR0Iub3JpZy5kaWMgZW5fR0IuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX0dCLmRpYyAuLi9lbl9HQi5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgZW5fR0IuemlwCisKK2NoZWNrLW56OgorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIGRpZmYKKyAgICAgICAgOmZldGNoIGVuX05aLnppcAorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi9lbl9OWi56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2VuX05aLm9yaWcuYWZmIGVuX05aLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBlbl9OWi5hZmYgLi4vZW5fTloubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZW5fTloub3JpZy5kaWMgZW5fTlouZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVuX05aLmRpYyAuLi9lbl9OWi5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgZW5fTlouemlwCisKKyMgdmltOiBzZXQgc3RzPTQgc3c9NCA6CmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvZnJfRlIuZGlmZiBiL3J1bnRpbWUvc3BlbGwvZnIvZnJfRlIuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL3NwZWxsL2ZyX0ZSLmRpZmYKcmVuYW1lIHRvIHJ1bnRpbWUvc3BlbGwvZnIvZnJfRlIuZGlmZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9mci9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvZnIvbWFpbi5hYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdmMTQyNwotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZnIvbWFpbi5hYXAKQEAgLTAsMCArMSw3NyBAQAorIyBBYXAgcmVjaXBlIGZvciBEdXRjaCBWaW0gc3BlbGwgZmlsZXMuCisKKyMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgorQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CisgICAgVklNID0gLi4vLi4vLi4vc3JjL3ZpbQorQGVsc2U6CisgICAgVklNID0gdmltCisKK1NQRUxMRElSID0gLi4KK0ZJTEVTICAgID0gZnJfRlIuYWZmIGZyX0ZSLmRpYworCithbGw6ICQoU1BFTExESVIpL2ZyLmxhdGluMS5zcGwgJChTUEVMTERJUikvZnIudXRmLTguc3BsIC4uL1JFQURNRV9mci50eHQKKworJChTUEVMTERJUikvZnIubGF0aW4xLnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPWZyX0ZSLklTTzg4NTktMQorCQkkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL2ZyIGZyX0ZSIiAtYyBxCisKKyQoU1BFTExESVIpL2ZyLnV0Zi04LnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPWZyX0ZSLlVURi04CisJCSQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvZnIgZnJfRlIiIC1jIHEKKworLi4vUkVBRE1FX2ZyLnR4dCA6IGxpc2V6LW1vaS50eHQKKyAgICAgICAgOmNvcHkgJHNvdXJjZSAkdGFyZ2V0CisKKyMKKyMgRmV0Y2hpbmcgdGhlIGZpbGVzIGZyb20gT3Blbk9mZmljZS5vcmcuCisjCitPT0RJUiA9IGh0dHA6Ly9mdHAuc2VydmljZXMub3Blbm9mZmljZS5vcmcvcHViL09wZW5PZmZpY2Uub3JnL2NvbnRyaWIvZGljdGlvbmFyaWVzCis6YXR0ciB7ZmV0Y2ggPSAkKE9PRElSKS8lZmlsZSV9IGZyX0ZSLnppcAorCisjIFRoZSBmaWxlcyBkb24ndCBkZXBlbmQgb24gdGhlIC56aXAgZmlsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgaXQuCisjIE9ubHkgZG93bmxvYWQgdGhlIHppcCBmaWxlIGlmIHRoZSB0YXJnZXRzIGRvbid0IGV4aXN0LgorZnJfRlIuYWZmIGZyX0ZSLmRpYzoge2J1aWxkY2hlY2s9fQorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIHBhdGNoCisgICAgICAgIDpmZXRjaCBmcl9GUi56aXAKKyAgICAgICAgOnN5cyAkKFVOWklQKSBmcl9GUi56aXAKKyAgICAgICAgOmRlbGV0ZSBmcl9GUi56aXAKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZnJfRlIub3JpZy5hZmYnKToKKyAgICAgICAgICAgICAgICA6Y29weSBmcl9GUi5hZmYgZnJfRlIub3JpZy5hZmYKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZnJfRlIub3JpZy5kaWMnKToKKyAgICAgICAgICAgICAgICA6Y29weSBmcl9GUi5hZmYgZnJfRlIub3JpZy5kaWMKKyAgICAgICAgOnN5cyBwYXRjaCA8ZnJfRlIuZGlmZgorCisKKyMgR2VuZXJhdGUgZGlmZiBmaWxlcywgc28gdGhhdCBvdGhlcnMgY2FuIGdldCB0aGUgT3Blbk9mZmljZSBmaWxlcyBhbmQgYXBwbHkKKyMgdGhlIGRpZmZzIHRvIGdldCB0aGUgVmltIHZlcnNpb25zLgorCitkaWZmOgorICAgICAgICA6YXNzZXJ0cGtnIGRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBmcl9GUi5vcmlnLmFmZiBmcl9GUi5hZmYgPmZyX0ZSLmRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBmcl9GUi5vcmlnLmRpYyBmcl9GUi5kaWMgPj5mcl9GUi5kaWZmCisKKworIyBDaGVjayBmb3IgdXBkYXRlZCBPcGVuT2ZmaWNlIHNwZWxsIGZpbGVzLiAgV2hlbiB0aGVyZSBhcmUgY2hhbmdlcyB0aGUKKyMgIi5uZXcuYWZmIiBhbmQgIi5uZXcuZGljIiBmaWxlcyBhcmUgbGVmdCBiZWhpbmQgZm9yIG1hbnVhbCBpbnNwZWN0aW9uLgorCitjaGVjazoKKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBkaWZmCisgICAgICAgIDpmZXRjaCBmcl9GUi56aXAKKyAgICAgICAgOm1rZGlyIHRtcAorICAgICAgICA6Y2QgdG1wCisgICAgICAgIEB0cnk6CisgICAgICAgICAgICBAaW1wb3J0IHN0YXQKKyAgICAgICAgICAgIDpzeXMgJChVTlpJUCkgLi4vZnJfRlIuemlwCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9mcl9GUi5vcmlnLmFmZiBmcl9GUi5hZmYgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgZnJfRlIuYWZmIC4uL2ZyX0ZSLm5ldy5hZmYKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2ZyX0ZSLm9yaWcuZGljIGZyX0ZSLmRpYyA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBmcl9GUi5kaWMgLi4vZnJfRlIubmV3LmRpYworICAgICAgICBAZmluYWxseToKKyAgICAgICAgICAgIDpjZCAuLgorICAgICAgICAgICAgOmRlbGV0ZSB7cn17Zn17cX0gdG1wCisgICAgICAgICAgICA6ZGVsZXRlIGZyX0ZSLnppcAorCisKKyMgdmltOiBzZXQgc3RzPTQgc3c9NCA6CmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvaGVfSUwuZGlmZiBiL3J1bnRpbWUvc3BlbGwvaGUvaGVfSUwuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL3NwZWxsL2hlX0lMLmRpZmYKcmVuYW1lIHRvIHJ1bnRpbWUvc3BlbGwvaGUvaGVfSUwuZGlmZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9oZS9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvaGUvbWFpbi5hYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzYzVlMgotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvaGUvbWFpbi5hYXAKQEAgLTAsMCArMSw3MyBAQAorIyBBYXAgcmVjaXBlIGZvciBEdXRjaCBWaW0gc3BlbGwgZmlsZXMuCisKKyMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgorQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CisgICAgVklNID0gLi4vLi4vLi4vc3JjL3ZpbQorQGVsc2U6CisgICAgVklNID0gdmltCisKK1NQRUxMRElSID0gLi4KK0ZJTEVTICAgID0gaGVfSUwuYWZmIGhlX0lMLmRpYworCithbGw6ICQoU1BFTExESVIpL2hlLnV0Zi04LnNwbCAuLi9SRUFETUVfaGUudHh0CisKKyQoU1BFTExESVIpL2hlLnV0Zi04LnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPWhlX0lMLlVURi04CisJCSQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvaGUgaGVfSUwiIC1jIHEKKworLi4vUkVBRE1FX2hlLnR4dCA6IFJFQURNRV9oZV9JTC50eHQKKyAgICAgICAgOmNvcHkgJHNvdXJjZSAkdGFyZ2V0CisKKyMKKyMgRmV0Y2hpbmcgdGhlIGZpbGVzIGZyb20gT3Blbk9mZmljZS5vcmcuCisjCitPT0RJUiA9IGh0dHA6Ly9mdHAuc2VydmljZXMub3Blbm9mZmljZS5vcmcvcHViL09wZW5PZmZpY2Uub3JnL2NvbnRyaWIvZGljdGlvbmFyaWVzCis6YXR0ciB7ZmV0Y2ggPSAkKE9PRElSKS8lZmlsZSV9IGhlX0lMLnppcAorCisjIFRoZSBmaWxlcyBkb24ndCBkZXBlbmQgb24gdGhlIC56aXAgZmlsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgaXQuCisjIE9ubHkgZG93bmxvYWQgdGhlIHppcCBmaWxlIGlmIHRoZSB0YXJnZXRzIGRvbid0IGV4aXN0LgoraGVfSUwuYWZmIGhlX0lMLmRpYzoge2J1aWxkY2hlY2s9fQorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIHBhdGNoCisgICAgICAgIDpmZXRjaCBoZV9JTC56aXAKKyAgICAgICAgOnN5cyAkKFVOWklQKSBoZV9JTC56aXAKKyAgICAgICAgOmRlbGV0ZSBoZV9JTC56aXAKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnaGVfSUwub3JpZy5hZmYnKToKKyAgICAgICAgICAgICAgICA6Y29weSBoZV9JTC5hZmYgaGVfSUwub3JpZy5hZmYKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnaGVfSUwub3JpZy5kaWMnKToKKyAgICAgICAgICAgICAgICA6Y29weSBoZV9JTC5hZmYgaGVfSUwub3JpZy5kaWMKKyAgICAgICAgOnN5cyBwYXRjaCA8aGVfSUwuZGlmZgorCisKKyMgR2VuZXJhdGUgZGlmZiBmaWxlcywgc28gdGhhdCBvdGhlcnMgY2FuIGdldCB0aGUgT3Blbk9mZmljZSBmaWxlcyBhbmQgYXBwbHkKKyMgdGhlIGRpZmZzIHRvIGdldCB0aGUgVmltIHZlcnNpb25zLgorCitkaWZmOgorICAgICAgICA6YXNzZXJ0cGtnIGRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBoZV9JTC5vcmlnLmFmZiBoZV9JTC5hZmYgPmhlX0lMLmRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBoZV9JTC5vcmlnLmRpYyBoZV9JTC5kaWMgPj5oZV9JTC5kaWZmCisKKworIyBDaGVjayBmb3IgdXBkYXRlZCBPcGVuT2ZmaWNlIHNwZWxsIGZpbGVzLiAgV2hlbiB0aGVyZSBhcmUgY2hhbmdlcyB0aGUKKyMgIi5uZXcuYWZmIiBhbmQgIi5uZXcuZGljIiBmaWxlcyBhcmUgbGVmdCBiZWhpbmQgZm9yIG1hbnVhbCBpbnNwZWN0aW9uLgorCitjaGVjazoKKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBkaWZmCisgICAgICAgIDpmZXRjaCBoZV9JTC56aXAKKyAgICAgICAgOm1rZGlyIHRtcAorICAgICAgICA6Y2QgdG1wCisgICAgICAgIEB0cnk6CisgICAgICAgICAgICBAaW1wb3J0IHN0YXQKKyAgICAgICAgICAgIDpzeXMgJChVTlpJUCkgLi4vaGVfSUwuemlwCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9oZV9JTC5vcmlnLmFmZiBoZV9JTC5hZmYgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgaGVfSUwuYWZmIC4uL2hlX0lMLm5ldy5hZmYKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2hlX0lMLm9yaWcuZGljIGhlX0lMLmRpYyA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBoZV9JTC5kaWMgLi4vaGVfSUwubmV3LmRpYworICAgICAgICBAZmluYWxseToKKyAgICAgICAgICAgIDpjZCAuLgorICAgICAgICAgICAgOmRlbGV0ZSB7cn17Zn17cX0gdG1wCisgICAgICAgICAgICA6ZGVsZXRlIGhlX0lMLnppcAorCisKKyMgdmltOiBzZXQgc3RzPTQgc3c9NCA6CmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL21haW4uYWFwIGIvcnVudGltZS9zcGVsbC9tYWluLmFhcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQxYmMwCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zcGVsbC9tYWluLmFhcApAQCAtMCwwICsxLDYgQEAKKzpjaGlsZCBkZS9tYWluLmFhcAorOmNoaWxkIGVuL21haW4uYWFwCis6Y2hpbGQgZnIvbWFpbi5hYXAKKzpjaGlsZCBoZS9tYWluLmFhcAorOmNoaWxkIG5sL21haW4uYWFwCis6Y2hpbGQgcGwvbWFpbi5hYXAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvbmwvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL25sL21haW4uYWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZTVmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL25sL21haW4uYWFwCkBAIC0wLDAgKzEsNzcgQEAKKyMgQWFwIHJlY2lwZSBmb3IgRHV0Y2ggVmltIHNwZWxsIGZpbGVzLgorCisjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KK0BpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgorICAgIFZJTSA9IC4uLy4uLy4uL3NyYy92aW0KK0BlbHNlOgorICAgIFZJTSA9IHZpbQorCitTUEVMTERJUiA9IC4uCitGSUxFUyAgICA9IG5sX05MLmFmZiBubF9OTC5kaWMKKworYWxsOiAkKFNQRUxMRElSKS9ubC5sYXRpbjEuc3BsICQoU1BFTExESVIpL25sLnV0Zi04LnNwbCAuLi9SRUFETUVfbmwudHh0CisKKyQoU1BFTExESVIpL25sLmxhdGluMS5zcGwgOiAkKFZJTSkgJChGSUxFUykKKyAgICAgICAgOnN5cyBlbnYgTEFORz1ubF9OTC5JU084ODU5LTEKKwkJJChWSU0pIC1lIC1jICJta3NwZWxsISAkKFNQRUxMRElSKS9ubCBubF9OTCIgLWMgcQorCiskKFNQRUxMRElSKS9ubC51dGYtOC5zcGwgOiAkKFZJTSkgJChGSUxFUykKKyAgICAgICAgOnN5cyBlbnYgTEFORz1ubF9OTC5VVEYtOAorCQkkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL25sIG5sX05MIiAtYyBxCisKKy4uL1JFQURNRV9ubC50eHQgOiBSRUFETUVfbmxfTkwudHh0CisgICAgICAgIDpjb3B5ICRzb3VyY2UgJHRhcmdldAorCisjCisjIEZldGNoaW5nIHRoZSBmaWxlcyBmcm9tIE9wZW5PZmZpY2Uub3JnLgorIworT09ESVIgPSBodHRwOi8vZnRwLnNlcnZpY2VzLm9wZW5vZmZpY2Uub3JnL3B1Yi9PcGVuT2ZmaWNlLm9yZy9jb250cmliL2RpY3Rpb25hcmllcworOmF0dHIge2ZldGNoID0gJChPT0RJUikvJWZpbGUlfSBubF9OTC56aXAKKworIyBUaGUgZmlsZXMgZG9uJ3QgZGVwZW5kIG9uIHRoZSAuemlwIGZpbGUgc28gdGhhdCB3ZSBjYW4gZGVsZXRlIGl0LgorIyBPbmx5IGRvd25sb2FkIHRoZSB6aXAgZmlsZSBpZiB0aGUgdGFyZ2V0cyBkb24ndCBleGlzdC4KK25sX05MLmFmZiBubF9OTC5kaWM6IHtidWlsZGNoZWNrPX0KKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBwYXRjaAorICAgICAgICA6ZmV0Y2ggbmxfTkwuemlwCisgICAgICAgIDpzeXMgJChVTlpJUCkgbmxfTkwuemlwCisgICAgICAgIDpkZWxldGUgbmxfTkwuemlwCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ25sX05MLm9yaWcuYWZmJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgbmxfTkwuYWZmIG5sX05MLm9yaWcuYWZmCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ25sX05MLm9yaWcuZGljJyk6CisgICAgICAgICAgICAgICAgOmNvcHkgbmxfTkwuYWZmIG5sX05MLm9yaWcuZGljCisgICAgICAgIDpzeXMgcGF0Y2ggPG5sX05MLmRpZmYKKworCisjIEdlbmVyYXRlIGRpZmYgZmlsZXMsIHNvIHRoYXQgb3RoZXJzIGNhbiBnZXQgdGhlIE9wZW5PZmZpY2UgZmlsZXMgYW5kIGFwcGx5CisjIHRoZSBkaWZmcyB0byBnZXQgdGhlIFZpbSB2ZXJzaW9ucy4KKworZGlmZjoKKyAgICAgICAgOmFzc2VydHBrZyBkaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgbmxfTkwub3JpZy5hZmYgbmxfTkwuYWZmID5ubF9OTC5kaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgbmxfTkwub3JpZy5kaWMgbmxfTkwuZGljID4+bmxfTkwuZGlmZgorCisKKyMgQ2hlY2sgZm9yIHVwZGF0ZWQgT3Blbk9mZmljZSBzcGVsbCBmaWxlcy4gIFdoZW4gdGhlcmUgYXJlIGNoYW5nZXMgdGhlCisjICIubmV3LmFmZiIgYW5kICIubmV3LmRpYyIgZmlsZXMgYXJlIGxlZnQgYmVoaW5kIGZvciBtYW51YWwgaW5zcGVjdGlvbi4KKworY2hlY2s6CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgZGlmZgorICAgICAgICA6ZmV0Y2ggbmxfTkwuemlwCisgICAgICAgIDpta2RpciB0bXAKKyAgICAgICAgOmNkIHRtcAorICAgICAgICBAdHJ5OgorICAgICAgICAgICAgQGltcG9ydCBzdGF0CisgICAgICAgICAgICA6c3lzICQoVU5aSVApIC4uL25sX05MLnppcAorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vbmxfTkwub3JpZy5hZmYgbmxfTkwuYWZmID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IG5sX05MLmFmZiAuLi9ubF9OTC5uZXcuYWZmCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9ubF9OTC5vcmlnLmRpYyBubF9OTC5kaWMgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgbmxfTkwuZGljIC4uL25sX05MLm5ldy5kaWMKKyAgICAgICAgQGZpbmFsbHk6CisgICAgICAgICAgICA6Y2QgLi4KKyAgICAgICAgICAgIDpkZWxldGUge3J9e2Z9e3F9IHRtcAorICAgICAgICAgICAgOmRlbGV0ZSBubF9OTC56aXAKKworCisjIHZpbTogc2V0IHN0cz00IHN3PTQgOgpkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsL25sX05MLmRpZmYgYi9ydW50aW1lL3NwZWxsL25sL25sX05MLmRpZmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9zcGVsbC9ubF9OTC5kaWZmCnJlbmFtZSB0byBydW50aW1lL3NwZWxsL25sL25sX05MLmRpZmYKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvcGwvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL3BsL21haW4uYWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyODQ3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL3BsL21haW4uYWFwCkBAIC0wLDAgKzEsNzUgQEAKKyMgQWFwIHJlY2lwZSBmb3IgRHV0Y2ggVmltIHNwZWxsIGZpbGVzLgorCisjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KK0BpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgorICAgIFZJTSA9IC4uLy4uLy4uL3NyYy92aW0KK0BlbHNlOgorICAgIFZJTSA9IHZpbQorCitTUEVMTERJUiA9IC4uCitGSUxFUyAgICA9IHBsX1BMLmFmZiBwbF9QTC5kaWMKKworYWxsOiAkKFNQRUxMRElSKS9wbC5pc28tODg1OS0yLnNwbCAkKFNQRUxMRElSKS9wbC51dGYtOC5zcGwgLi4vUkVBRE1FX3BsLnR4dAorCiskKFNQRUxMRElSKS9wbC5pc28tODg1OS0yLnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPXBsX1BMLklTTzg4NTktMiAkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL3BsIHBsX1BMIiAtYyBxCisKKyQoU1BFTExESVIpL3BsLnV0Zi04LnNwbCA6ICQoVklNKSAkKEZJTEVTKQorICAgICAgICA6c3lzIGVudiBMQU5HPXBsX1BMLlVURi04ICQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvcGwgcGxfUEwiIC1jIHEKKworLi4vUkVBRE1FX3BsLnR4dDogUkVBRE1FX3BsX1BMLnR4dAorICAgICAgICA6Y29weSAkc291cmNlICR0YXJnZXQKKworIworIyBGZXRjaGluZyB0aGUgZmlsZXMgZnJvbSBPcGVuT2ZmaWNlLm9yZy4KKyMKK09PRElSID0gaHR0cDovL2Z0cC5zZXJ2aWNlcy5vcGVub2ZmaWNlLm9yZy9wdWIvT3Blbk9mZmljZS5vcmcvY29udHJpYi9kaWN0aW9uYXJpZXMKKzphdHRyIHtmZXRjaCA9ICQoT09ESVIpLyVmaWxlJX0gcGxfUEwuemlwCisKKyMgVGhlIGZpbGVzIGRvbid0IGRlcGVuZCBvbiB0aGUgLnppcCBmaWxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSBpdC4KKyMgT25seSBkb3dubG9hZCB0aGUgemlwIGZpbGUgaWYgdGhlIHRhcmdldHMgZG9uJ3QgZXhpc3QuCitwbF9QTC5hZmYgcGxfUEwuZGljOiB7YnVpbGRjaGVjaz19CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgcGF0Y2gKKyAgICAgICAgOmZldGNoIHBsX1BMLnppcAorICAgICAgICA6c3lzICQoVU5aSVApIHBsX1BMLnppcAorICAgICAgICA6ZGVsZXRlIHBsX1BMLnppcAorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdwbF9QTC5vcmlnLmFmZicpOgorICAgICAgICAgICAgICAgIDpjb3B5IHBsX1BMLmFmZiBwbF9QTC5vcmlnLmFmZgorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdwbF9QTC5vcmlnLmRpYycpOgorICAgICAgICAgICAgICAgIDpjb3B5IHBsX1BMLmFmZiBwbF9QTC5vcmlnLmRpYworICAgICAgICA6c3lzIHBhdGNoIDxwbF9QTC5kaWZmCisKKworIyBHZW5lcmF0ZSBkaWZmIGZpbGVzLCBzbyB0aGF0IG90aGVycyBjYW4gZ2V0IHRoZSBPcGVuT2ZmaWNlIGZpbGVzIGFuZCBhcHBseQorIyB0aGUgZGlmZnMgdG8gZ2V0IHRoZSBWaW0gdmVyc2lvbnMuCisKK2RpZmY6CisgICAgICAgIDphc3NlcnRwa2cgZGlmZgorICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIHBsX1BMLm9yaWcuYWZmIHBsX1BMLmFmZiA+cGxfUEwuZGlmZgorICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIHBsX1BMLm9yaWcuZGljIHBsX1BMLmRpYyA+PnBsX1BMLmRpZmYKKworCisjIENoZWNrIGZvciB1cGRhdGVkIE9wZW5PZmZpY2Ugc3BlbGwgZmlsZXMuICBXaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIHRoZQorIyAiLm5ldy5hZmYiIGFuZCAiLm5ldy5kaWMiIGZpbGVzIGFyZSBsZWZ0IGJlaGluZCBmb3IgbWFudWFsIGluc3BlY3Rpb24uCisKK2NoZWNrOgorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIGRpZmYKKyAgICAgICAgOmZldGNoIHBsX1BMLnppcAorICAgICAgICA6bWtkaXIgdG1wCisgICAgICAgIDpjZCB0bXAKKyAgICAgICAgQHRyeToKKyAgICAgICAgICAgIEBpbXBvcnQgc3RhdAorICAgICAgICAgICAgOnN5cyAkKFVOWklQKSAuLi9wbF9QTC56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL3BsX1BMLm9yaWcuYWZmIHBsX1BMLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBwbF9QTC5hZmYgLi4vcGxfUEwubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vcGxfUEwub3JpZy5kaWMgcGxfUEwuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IHBsX1BMLmRpYyAuLi9wbF9QTC5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgcGxfUEwuemlwCisKKworIyB2aW06IHNldCBzdHM9NCBzdz00IDoKZGlmZiAtLWdpdCBhL3NyYy9zcGVsbC9wbF9QTC5kaWZmIGIvcnVudGltZS9zcGVsbC9wbC9wbF9QTC5kaWZmCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvc3BlbGwvcGxfUEwuZGlmZgpyZW5hbWUgdG8gcnVudGltZS9zcGVsbC9wbC9wbF9QTC5kaWZmCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9tdmMubWFrIGIvc3JjL01ha2VfbXZjLm1hawppbmRleCA3NTdhYTczLi5lNzQwMTlmIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9tdmMubWFrCisrKyBiL3NyYy9NYWtlX212Yy5tYWsKQEAgLTY3OSwxNiArNjc5LDE2IEBACiAJCSQoTVpTQ0hFTUVfTElCKSAkKFBFUkxfTElCKSAkKFBZVEhPTl9MSUIpICQoUlVCWV9MSUIpICQoVENMX0xJQikgXAogCQkkKE5FVEJFQU5TX0xJQikgJChYUE1fTElCKSAkKExJTktfUERCKQogCi1hbGw6CSQoVklNKSB2aW1ydW4uZXhlIGluc3RhbGwuZXhlIHVuaW5zdGFsLmV4ZSB4eGQveHhkLmV4ZSBHdmltRXh0L2d2aW1leHQuZGxsCithbGw6CSQoVklNKS5leGUgdmltcnVuLmV4ZSBpbnN0YWxsLmV4ZSB1bmluc3RhbC5leGUgeHhkL3h4ZC5leGUgR3ZpbUV4dC9ndmltZXh0LmRsbAogCi0kKFZJTSk6ICQoT1VURElSKSAkKE9CSikgJChHVUlfT0JKKSAkKE9MRV9PQkopICQoT0xFX0lETCkgJChNWlNDSEVNRV9PQkopICQoUEVSTF9PQkopICQoUFlUSE9OX09CSikgJChSVUJZX09CSikgJChUQ0xfT0JKKSAkKFNOSUZGX09CSikgJChDU0NPUEVfT0JKKSAkKE5FVEJFQU5TX09CSikgJChYUE1fT0JKKSB2ZXJzaW9uLmMgdmVyc2lvbi5oCiskKFZJTSkuZXhlOiAkKE9VVERJUikgJChPQkopICQoR1VJX09CSikgJChPTEVfT0JKKSAkKE9MRV9JREwpICQoTVpTQ0hFTUVfT0JKKSAkKFBFUkxfT0JKKSAkKFBZVEhPTl9PQkopICQoUlVCWV9PQkopICQoVENMX09CSikgJChTTklGRl9PQkopICQoQ1NDT1BFX09CSikgJChORVRCRUFOU19PQkopICQoWFBNX09CSikgdmVyc2lvbi5jIHZlcnNpb24uaAogCSQoQ0MpICQoQ0ZMQUdTKSAgdmVyc2lvbi5jIC9GbyQoT1VURElSKS92ZXJzaW9uLm9iaiAkKFBEQikKLQkkKGxpbmspICQoTElOS0FSR1MxKSAtb3V0OiQqLmV4ZSAkKE9CSikgJChHVUlfT0JKKSAkKE9MRV9PQkopIFwKKwkkKGxpbmspICQoTElOS0FSR1MxKSAtb3V0OiQqICQoT0JKKSAkKEdVSV9PQkopICQoT0xFX09CSikgXAogCQkkKE1aU0NIRU1FX09CSikgJChQRVJMX09CSikgJChQWVRIT05fT0JKKSAkKFJVQllfT0JKKSAkKFRDTF9PQkopICQoU05JRkZfT0JKKSBcCiAJCSQoQ1NDT1BFX09CSikgJChORVRCRUFOU19PQkopICQoWFBNX09CSikgXAogCQkkKE9VVERJUilcdmVyc2lvbi5vYmogJChMSU5LQVJHUzIpCiAKLSQoVklNKS5leGU6ICQoVklNKQorJChWSU0pOiAkKFZJTSkuZXhlCiAKICQoT1VURElSKToKIAlpZiBub3QgZXhpc3QgJChPVVRESVIpL251bCAgbWtkaXIgJChPVVRESVIpCkBAIC05MDcsMTEgKzkwNywxMSBAQAogJChPVVRESVIpL3ZpbS5yZXM6CSQoT1VURElSKSB2aW0ucmMgdmVyc2lvbi5oIHRvb2xzLmJtcCB0ZWFyb2ZmLmJtcCB2aW0uaWNvIHZpbV9lcnJvci5pY28gdmltX2FsZXJ0LmljbyB2aW1faW5mby5pY28gdmltX3F1ZXN0LmljbwogCSQoUkMpIC9sIDB4NDA5IC9GbyQoT1VURElSKS92aW0ucmVzICQoUkNGTEFHUykgdmltLnJjCiAKLWlpZF9vbGUuYyBpZl9vbGUuaCB2aW0udGxiOiBpZl9vbGUuaWRsICQoSU5URElSKSAkKE9VVERJUikKLQltaWRsIC9ub2xvZ28gL3Byb3h5IG51bCAvaWlkIGlpZF9vbGUuYyAvdGxiIHZpbS50bGIgL2hlYWRlciBpZl9vbGUuaCBpZl9vbGUuaWRsCitpaWRfb2xlLmMgaWZfb2xlLmggdmltLnRsYjogaWZfb2xlLmlkbAorCW1pZGwgL25vbG9nbyAvZXJyb3Igbm9uZSAvcHJveHkgbnVsIC9paWQgaWlkX29sZS5jIC90bGIgdmltLnRsYiAvaGVhZGVyIGlmX29sZS5oIGlmX29sZS5pZGwKIAogZGltbS5oIGRpbW1faS5jOiBkaW1tLmlkbAotCW1pZGwgL25vbG9nbyAvcHJveHkgbnVsIGRpbW0uaWRsCisJbWlkbCAvbm9sb2dvIC9lcnJvciBub25lIC9wcm94eSBudWwgZGltbS5pZGwKIAogJChPVVRESVIpL2RpbW1faS5vYmo6ICQoT1VURElSKSBkaW1tX2kuYyAkKElOQ0wpCiAKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IGFmMmM3M2QuLmMxNzYyMjYgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMzc1LDcgKzM3NSw2IEBACiBzdGF0aWMgaW50IGxpc3RfZXF1YWwgX19BUkdTKChsaXN0X1QgKmwxLCBsaXN0X1QgKmwyLCBpbnQgaWMpKTsKIHN0YXRpYyBpbnQgZGljdF9lcXVhbCBfX0FSR1MoKGRpY3RfVCAqZDEsIGRpY3RfVCAqZDIsIGludCBpYykpOwogc3RhdGljIGludCB0dl9lcXVhbCBfX0FSR1MoKHR5cHZhbF9UICp0djEsIHR5cHZhbF9UICp0djIsIGludCBpYykpOwotc3RhdGljIGludCBzdHJpbmdfaXNhX251bWJlciBfX0FSR1MoKGNoYXJfdSAqcykpOwogc3RhdGljIGxpc3RpdGVtX1QgKmxpc3RfZmluZCBfX0FSR1MoKGxpc3RfVCAqbCwgbG9uZyBuKSk7CiBzdGF0aWMgbG9uZyBsaXN0X2lkeF9vZl9pdGVtIF9fQVJHUygobGlzdF9UICpsLCBsaXN0aXRlbV9UICppdGVtKSk7CiBzdGF0aWMgdm9pZCBsaXN0X2FwcGVuZCBfX0FSR1MoKGxpc3RfVCAqbCwgbGlzdGl0ZW1fVCAqaXRlbSkpOwpAQCAtNTE3OSw3ICs1MTc4LDggQEAKIAogLyoKICAqIFJldHVybiBUUlVFIGlmICJ0djEiIGFuZCAidHYyIiBoYXZlIHRoZSBzYW1lIHZhbHVlLgotICogQ29tcGFyZXMgdGhlIGl0ZW1zIGp1c3QgbGlrZSAiPT0iIHdvdWxkIGNvbXBhcmUgdGhlbS4KKyAqIENvbXBhcmVzIHRoZSBpdGVtcyBqdXN0IGxpa2UgIj09IiB3b3VsZCBjb21wYXJlIHRoZW0sIGJ1dCBzdHJpbmdzIGFuZAorICogbnVtYmVycyBhcmUgZGlmZmVyZW50LgogICovCiAgICAgc3RhdGljIGludAogdHZfZXF1YWwodHYxLCB0djIsIGljKQpAQCAtNTE5MCw2NCArNTE5MCwzOCBAQAogICAgIGNoYXJfdQlidWYxW05VTUJVRkxFTl0sIGJ1ZjJbTlVNQlVGTEVOXTsKICAgICBjaGFyX3UJKnMxLCAqczI7CiAKLSAgICBpZiAodHYxLT52X3R5cGUgPT0gVkFSX0xJU1QgfHwgdHYyLT52X3R5cGUgPT0gVkFSX0xJU1QpCisgICAgaWYgKHR2MS0+dl90eXBlICE9IHR2Mi0+dl90eXBlKQorCXJldHVybiBGQUxTRTsKKworICAgIHN3aXRjaCAodHYxLT52X3R5cGUpCiAgICAgewotCS8qIHJlY3Vyc2l2ZSEgKi8KLQlpZiAodHYxLT52X3R5cGUgIT0gdHYyLT52X3R5cGUKLQkJICAgfHwgIWxpc3RfZXF1YWwodHYxLT52dmFsLnZfbGlzdCwgdHYyLT52dmFsLnZfbGlzdCwgaWMpKQotCSAgICByZXR1cm4gRkFMU0U7CisJY2FzZSBWQVJfTElTVDoKKwkgICAgLyogcmVjdXJzaXZlISAqLworCSAgICByZXR1cm4gbGlzdF9lcXVhbCh0djEtPnZ2YWwudl9saXN0LCB0djItPnZ2YWwudl9saXN0LCBpYyk7CisKKwljYXNlIFZBUl9ESUNUOgorCSAgICAvKiByZWN1cnNpdmUhICovCisJICAgIHJldHVybiBkaWN0X2VxdWFsKHR2MS0+dnZhbC52X2RpY3QsIHR2Mi0+dnZhbC52X2RpY3QsIGljKTsKKworCWNhc2UgVkFSX0ZVTkM6CisJICAgIHJldHVybiAodHYxLT52dmFsLnZfc3RyaW5nICE9IE5VTEwKKwkJICAgICYmIHR2Mi0+dnZhbC52X3N0cmluZyAhPSBOVUxMCisJCSAgICAmJiBTVFJDTVAodHYxLT52dmFsLnZfc3RyaW5nLCB0djItPnZ2YWwudl9zdHJpbmcpID09IDApOworCisJY2FzZSBWQVJfTlVNQkVSOgorCSAgICByZXR1cm4gdHYxLT52dmFsLnZfbnVtYmVyID09IHR2Mi0+dnZhbC52X251bWJlcjsKKworCWNhc2UgVkFSX1NUUklORzoKKwkgICAgczEgPSBnZXRfdHZfc3RyaW5nX2J1Zih0djEsIGJ1ZjEpOworCSAgICBzMiA9IGdldF90dl9zdHJpbmdfYnVmKHR2MiwgYnVmMik7CisJICAgIHJldHVybiAoKGljID8gTUJfU1RSSUNNUChzMSwgczIpIDogU1RSQ01QKHMxLCBzMikpID09IDApOwogICAgIH0KLSAgICBlbHNlIGlmICh0djEtPnZfdHlwZSA9PSBWQVJfRElDVCB8fCB0djItPnZfdHlwZSA9PSBWQVJfRElDVCkKLSAgICB7Ci0JLyogcmVjdXJzaXZlISAqLwotCWlmICh0djEtPnZfdHlwZSAhPSB0djItPnZfdHlwZQotCQkgICB8fCAhZGljdF9lcXVhbCh0djEtPnZ2YWwudl9kaWN0LCB0djItPnZ2YWwudl9kaWN0LCBpYykpCi0JICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHYxLT52X3R5cGUgPT0gVkFSX0ZVTkMgfHwgdHYyLT52X3R5cGUgPT0gVkFSX0ZVTkMpCi0gICAgewotCWlmICh0djEtPnZfdHlwZSAhPSB0djItPnZfdHlwZQotCQl8fCB0djEtPnZ2YWwudl9zdHJpbmcgPT0gTlVMTAotCQl8fCB0djItPnZ2YWwudl9zdHJpbmcgPT0gTlVMTAotCQl8fCBTVFJDTVAodHYxLT52dmFsLnZfc3RyaW5nLCB0djItPnZ2YWwudl9zdHJpbmcpICE9IDApCi0JICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHYxLT52X3R5cGUgPT0gVkFSX05VTUJFUiB8fCB0djItPnZfdHlwZSA9PSBWQVJfTlVNQkVSKQotICAgIHsKLQkvKiAiNCIgaXMgZXF1YWwgdG8gNC4gIEJ1dCBkb24ndCBjb25zaWRlciAnYScgYW5kIHplcm8gdG8gYmUgZXF1YWwuCi0JICogRG9uJ3QgY29uc2lkZXIgIjR4IiB0byBiZSBlcXVhbCB0byA0LiAqLwotCWlmICgodHYxLT52X3R5cGUgPT0gVkFSX1NUUklORwotCQkJCSAgICAmJiAhc3RyaW5nX2lzYV9udW1iZXIodHYxLT52dmFsLnZfc3RyaW5nKSkKLQkJfHwgKHR2Mi0+dl90eXBlID09IFZBUl9TVFJJTkcKLQkJCQkgICAmJiAhc3RyaW5nX2lzYV9udW1iZXIodHYyLT52dmFsLnZfc3RyaW5nKSkpCi0JICAgIHJldHVybiBGQUxTRTsKLQlpZiAoZ2V0X3R2X251bWJlcih0djEpICE9IGdldF90dl9udW1iZXIodHYyKSkKLQkgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotCXMxID0gZ2V0X3R2X3N0cmluZ19idWYodHYxLCBidWYxKTsKLQlzMiA9IGdldF90dl9zdHJpbmdfYnVmKHR2MiwgYnVmMik7Ci0JaWYgKChpYyA/IE1CX1NUUklDTVAoczEsIHMyKSA6IFNUUkNNUChzMSwgczIpKSAhPSAwKQotCSAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQorCisgICAgRU1TRzIoXyhlX2ludGVybjIpLCAidHZfZXF1YWwoKSIpOwogICAgIHJldHVybiBUUlVFOwogfQogCiAvKgotICogUmV0dXJuIFRSVUUgaWYgInR2IiBpcyBhIG51bWJlciB3aXRob3V0IG90aGVyIG5vbi13aGl0ZSBjaGFyYWN0ZXJzLgotICovCi0gICAgc3RhdGljIGludAotc3RyaW5nX2lzYV9udW1iZXIocykKLSAgICBjaGFyX3UJKnM7Ci17Ci0gICAgaW50CQlsZW47Ci0KLSAgICB2aW1fc3RyMm5yKHMsIE5VTEwsICZsZW4sIFRSVUUsIFRSVUUsIE5VTEwsIE5VTEwpOwotICAgIHJldHVybiBsZW4gPiAwICYmICpza2lwd2hpdGUocyArIGxlbikgPT0gTlVMOwotfQotCi0vKgogICogTG9jYXRlIGl0ZW0gd2l0aCBpbmRleCAibiIgaW4gbGlzdCAibCIgYW5kIHJldHVybiBpdC4KICAqIEEgbmVnYXRpdmUgaW5kZXggaXMgY291bnRlZCBmcm9tIHRoZSBlbmQ7IC0xIGlzIHRoZSBsYXN0IGl0ZW0uCiAgKiBSZXR1cm5zIE5VTEwgd2hlbiAibiIgaXMgb3V0IG9mIHJhbmdlLgpkaWZmIC0tZ2l0IGEvc3JjL2ZhcnNpLmMgYi9zcmMvZmFyc2kuYwppbmRleCBmNzQ0NDdmLi5mMzI1YjMyIDEwMDY0NAotLS0gYS9zcmMvZmFyc2kuYworKysgYi9zcmMvZmFyc2kuYwpAQCAtMTkzOSw3ICsxOTM5LDcgQEAKIH0KIAogLyoKLSAqIFJldmVyc2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNlYWNoIHBhdGggYW5kIHN1YnN0aXR1ZGUgc2VjdGlvbiBhY2NvcmRpbmdseQorICogUmV2ZXJzZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2VhcmNoIHBhdGggYW5kIHN1YnN0aXR1dGUgc2VjdGlvbiBhY2NvcmRpbmdseQogICovCiAgICAgY2hhcl91ICoKIGxyRl9zdWIoaWJ1ZikKQEAgLTE5NTAsOCArMTk1MCw4IEBACiAKICAgICBwID0gaWJ1ZjsKIAotICAgIC8qIEZpbmQgdGhlIGJvdW5kcnkgb2YgdGhlIHNlYXJjaCBwYXRoICovCi0gICAgd2hpbGUgKCgocCA9IHZpbV9zdHJjaHIoKytwLCAnLycpKSAhPSBOVUxMKSAmJiBwWy0xXSA9PSAnXFwnKQorICAgIC8qIEZpbmQgdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWFyY2ggcGF0aCAqLworICAgIHdoaWxlICgrK3AsICgocCA9IHZpbV9zdHJjaHIocCwgJy8nKSkgIT0gTlVMTCkgJiYgcFstMV0gPT0gJ1xcJykKIAk7CiAKICAgICBpZiAocCA9PSBOVUxMKQpAQCAtMTk2MCw3ICsxOTYwLDcgQEAKICAgICAvKiBSZXZlcnNlIHRoZSBGYXJzaSBjaGFyYWN0ZXJzIGluIHRoZSBzZWFyY2ggcGF0aC4gKi8KICAgICBsckZzd2FwKGlidWYsIChpbnQpKHAtaWJ1ZikpOwogCi0gICAgLyogTm93IGZpbmQgdGhlIGJvdW5kcnkgb2YgdGhlIHN1YnN0aXR1dGUgc2VjdGlvbiAqLworICAgIC8qIE5vdyBmaW5kIHRoZSBib3VuZGFyeSBvZiB0aGUgc3Vic3RpdHV0ZSBzZWN0aW9uICovCiAgICAgaWYgKChlcCA9IChjaGFyX3UgKilzdHJyY2hyKChjaGFyICopKytwLCAnLycpKSAhPSBOVUxMKQogCWNudCA9IChpbnQpKGVwIC0gcCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2lmX29sZS5jcHAgYi9zcmMvaWZfb2xlLmNwcAppbmRleCBkZTZmYWFkLi41NDRlYTE2IDEwMDY0NAotLS0gYS9zcmMvaWZfb2xlLmNwcAorKysgYi9zcmMvaWZfb2xlLmNwcApAQCAtNjUxLDcgKzY1MSw3IEBACiB9CiAKIC8vIENyZWF0ZSBhIGtleSBhbmQgc2V0IGl0cyB2YWx1ZQotc3RhdGljIHZvaWQgU2V0S2V5QW5kVmFsdWUoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyIHN1YmtleSwgY29uc3QgY2hhciAqdmFsdWUpCitzdGF0aWMgdm9pZCBTZXRLZXlBbmRWYWx1ZShjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnN1YmtleSwgY29uc3QgY2hhciAqdmFsdWUpCiB7CiAgICAgSEtFWSBoS2V5OwogICAgIGNoYXIgYnVmZmVyWzEwMjRdOwpkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsLmMgYi9zcmMvc3BlbGwuYwppbmRleCBmOGI4NDYwLi4wMTVhNzEwIDEwMDY0NAotLS0gYS9zcmMvc3BlbGwuYworKysgYi9zcmMvc3BlbGwuYwpAQCAtNjA3LDcgKzYwNyw3IEBACiBzdGF0aWMgaW50IHNldF9zcGVsbF9jaGFydGFiIF9fQVJHUygoY2hhcl91ICpmb2wsIGNoYXJfdSAqbG93LCBjaGFyX3UgKnVwcCkpOwogc3RhdGljIHZvaWQgd3JpdGVfc3BlbGxfY2hhcnRhYiBfX0FSR1MoKEZJTEUgKmZkKSk7CiBzdGF0aWMgaW50IHNwZWxsX2Nhc2Vmb2xkIF9fQVJHUygoY2hhcl91ICpwLCBpbnQgbGVuLCBjaGFyX3UgKmJ1ZiwgaW50IGJ1ZmxlbikpOwotc3RhdGljIHZvaWQgc3BlbGxfZmluZF9zdWdnZXN0IF9fQVJHUygoY2hhcl91ICpiYWRwdHIsIHN1Z2luZm9fVCAqc3UsIGludCBtYXhjb3VudCwgaW50IGJhbmJhZHdvcmQpKTsKK3N0YXRpYyB2b2lkIHNwZWxsX2ZpbmRfc3VnZ2VzdCBfX0FSR1MoKGNoYXJfdSAqYmFkcHRyLCBzdWdpbmZvX1QgKnN1LCBpbnQgbWF4Y291bnQsIGludCBiYW5iYWR3b3JkLCBpbnQgbmVlZF9jYXApKTsKICNpZmRlZiBGRUFUX0VWQUwKIHN0YXRpYyB2b2lkIHNwZWxsX3N1Z2dlc3RfZXhwciBfX0FSR1MoKHN1Z2luZm9fVCAqc3UsIGNoYXJfdSAqZXhwcikpOwogI2VuZGlmCkBAIC01OTUyLDYgKzU5NTIsMTAgQEAKICAgICBzdWdpbmZvX1QJc3VnOwogICAgIHN1Z2dlc3RfVAkqc3RwOwogICAgIGludAkJbW91c2VfdXNlZDsKKyAgICBpbnQJCW5lZWRfY2FwOworICAgIHJlZ21hdGNoX1QJcmVnbWF0Y2g7CisgICAgaW50CQllbmRjb2w7CisgICAgY2hhcl91CSpsaW5lX2NvcHkgPSBOVUxMOwogCiAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhlIGJhZGx5IHNwZWxsZWQgd29yZC4gKi8KICAgICBpZiAoc3BlbGxfbW92ZV90byhGT1JXQVJELCBUUlVFLCBUUlVFKSA9PSBGQUlMCkBAIC01OTgzLDggKzU5ODcsNjIgQEAKICAgICAvKiBHZXQgdGhlIHdvcmQgYW5kIGl0cyBsZW5ndGguICovCiAgICAgbGluZSA9IG1sX2dldF9jdXJsaW5lKCk7CiAKKyAgICAvKiBGaWd1cmUgb3V0IGlmIHRoZSB3b3JkIHNob3VsZCBiZSBjYXBpdGFsaXNlZC4gKi8KKyAgICBuZWVkX2NhcCA9IEZBTFNFOworICAgIGlmIChjdXJidWYtPmJfY2FwX3Byb2cgIT0gTlVMTCkKKyAgICB7CisJZW5kY29sID0gMDsKKwlpZiAoc2tpcHdoaXRlKGxpbmUpIC0gbGluZSA9PSBjdXJ3aW4tPndfY3Vyc29yLmNvbCkKKwl7CisJICAgIC8qIEF0IHN0YXJ0IG9mIGxpbmUsIGNoZWNrIGlmIHByZXZpb3VzIGxpbmUgaXMgZW1wdHkgb3Igc2VudGVuY2UKKwkgICAgICogZW5kcyB0aGVyZS4gKi8KKwkgICAgaWYgKGN1cndpbi0+d19jdXJzb3IubG51bSA9PSAxKQorCQluZWVkX2NhcCA9IFRSVUU7CisJICAgIGVsc2UKKwkgICAgeworCQlsaW5lID0gbWxfZ2V0KGN1cndpbi0+d19jdXJzb3IubG51bSAtIDEpOworCQlpZiAoKnNraXB3aGl0ZShsaW5lKSA9PSBOVUwpCisJCSAgICBuZWVkX2NhcCA9IFRSVUU7CisJCWVsc2UKKwkJeworCQkgICAgLyogQXBwZW5kIGEgc3BhY2UgaW4gcGxhY2Ugb2YgdGhlIGxpbmUgYnJlYWsuICovCisJCSAgICBsaW5lX2NvcHkgPSBjb25jYXRfc3RyKGxpbmUsIChjaGFyX3UgKikiICIpOworCQkgICAgbGluZSA9IGxpbmVfY29weTsKKwkJICAgIGVuZGNvbCA9IFNUUkxFTihsaW5lKTsKKwkJfQorCSAgICB9CisJfQorCWVsc2UKKwkgICAgZW5kY29sID0gY3Vyd2luLT53X2N1cnNvci5jb2w7CisKKwlpZiAoZW5kY29sID4gMCkKKwl7CisJICAgIC8qIENoZWNrIGlmIHNlbnRlbmNlIGVuZHMgYmVmb3JlIHRoZSBiYWQgd29yZC4gKi8KKwkgICAgcmVnbWF0Y2gucmVncHJvZyA9IGN1cmJ1Zi0+Yl9jYXBfcHJvZzsKKwkgICAgcmVnbWF0Y2gucm1faWMgPSBGQUxTRTsKKwkgICAgcCA9IGxpbmUgKyBlbmRjb2w7CisJICAgIGZvciAoOzspCisJICAgIHsKKwkJbWJfcHRyX2JhY2sobGluZSwgcCk7CisJCWlmIChwID09IGxpbmUgfHwgU1BFTExfSVNXT1JEUChwKSkKKwkJICAgIGJyZWFrOworCQlpZiAodmltX3JlZ2V4ZWMoJnJlZ21hdGNoLCBwLCAwKQorCQkJCQkgJiYgcmVnbWF0Y2guZW5kcFswXSA9PSBsaW5lICsgZW5kY29sKQorCQl7CisJCSAgICBuZWVkX2NhcCA9IFRSVUU7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJfQorCisJLyogZ2V0IHRoZSBsaW5lIGFnYWluLCB3ZSBtYXkgaGF2ZSBiZWVuIHVzaW5nIHRoZSBwcmV2aW91cyBvbmUgKi8KKwlsaW5lID0gbWxfZ2V0X2N1cmxpbmUoKTsKKwl2aW1fZnJlZShsaW5lX2NvcHkpOworICAgIH0KKwogICAgIC8qIEdldCB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyAqLwotICAgIHNwZWxsX2ZpbmRfc3VnZ2VzdChsaW5lICsgY3Vyd2luLT53X2N1cnNvci5jb2wsICZzdWcsIChpbnQpUm93cyAtIDIsIFRSVUUpOworICAgIHNwZWxsX2ZpbmRfc3VnZ2VzdChsaW5lICsgY3Vyd2luLT53X2N1cnNvci5jb2wsICZzdWcsIChpbnQpUm93cyAtIDIsCisJCQkJCQkJICAgICAgVFJVRSwgbmVlZF9jYXApOwogCiAgICAgaWYgKHN1Zy5zdV9nYS5nYV9sZW4gPT0gMCkKIAlNU0coXygiU29ycnksIG5vIHN1Z2dlc3Rpb25zIikpOwpAQCAtNjE1OSw3ICs2MjE3LDcgQEAKICAgICBzdWdnZXN0X1QJKnN0cDsKICAgICBjaGFyX3UJKndjb3B5OwogCi0gICAgc3BlbGxfZmluZF9zdWdnZXN0KHdvcmQsICZzdWcsIG1heGNvdW50LCBGQUxTRSk7CisgICAgc3BlbGxfZmluZF9zdWdnZXN0KHdvcmQsICZzdWcsIG1heGNvdW50LCBGQUxTRSwgRkFMU0UpOwogCiAgICAgLyogTWFrZSByb29tIGluICJnYXAiLiAqLwogICAgIGdhX2luaXQyKGdhcCwgc2l6ZW9mKGNoYXJfdSAqKSwgc3VnLnN1X2dhLmdhX2xlbiArIDEpOwpAQCAtNjE5MiwxMSArNjI1MCwxMiBAQAogICogVGhpcyBpcyBiYXNlZCBvbiB0aGUgbWVjaGFuaXNtcyBvZiBBc3BlbGwsIGJ1dCBjb21wbGV0ZWx5IHJlaW1wbGVtZW50ZWQuCiAgKi8KICAgICBzdGF0aWMgdm9pZAotc3BlbGxfZmluZF9zdWdnZXN0KGJhZHB0ciwgc3UsIG1heGNvdW50LCBiYW5iYWR3b3JkKQorc3BlbGxfZmluZF9zdWdnZXN0KGJhZHB0ciwgc3UsIG1heGNvdW50LCBiYW5iYWR3b3JkLCBuZWVkX2NhcCkKICAgICBjaGFyX3UJKmJhZHB0cjsKICAgICBzdWdpbmZvX1QJKnN1OwogICAgIGludAkJbWF4Y291bnQ7CiAgICAgaW50CQliYW5iYWR3b3JkOwkvKiBkb24ndCBpbmNsdWRlIGJhZHdvcmQgaW4gc3VnZ2VzdGlvbnMgKi8KKyAgICBpbnQJCW5lZWRfY2FwOwkvKiB3b3JkIHNob3VsZCBzdGFydCB3aXRoIGNhcGl0YWwgKi8KIHsKICAgICBpbnQJCWF0dHIgPSAwOwogICAgIGNoYXJfdQlidWZbTUFYUEFUSExdOwpAQCAtNjIzMCw2ICs2Mjg5LDggQEAKIAkJCQkJCSAgICBzdS0+c3VfZmJhZHdvcmQsIE1BWFdMRU4pOwogICAgIC8qIGdldCBjYXBzIGZsYWdzIGZvciBiYWQgd29yZCAqLwogICAgIHN1LT5zdV9iYWRmbGFncyA9IGNhcHR5cGUoc3UtPnN1X2JhZHB0ciwgc3UtPnN1X2JhZHB0ciArIHN1LT5zdV9iYWRsZW4pOworICAgIGlmIChuZWVkX2NhcCkKKwlzdS0+c3VfYmFkZmxhZ3MgfD0gV0ZfT05FQ0FQOwogCiAgICAgLyogSWYgdGhlIHdvcmQgaXMgbm90IGNhcGl0YWxpc2VkIGFuZCBzcGVsbF9jaGVjaygpIGRvZXNuJ3QgY29uc2lkZXIgdGhlCiAgICAgICogd29yZCB0byBiZSBiYWQgdGhlbiBpdCBtaWdodCBuZWVkIHRvIGJlIGNhcGl0YWxpc2VkLiAgQWRkIGEgc3VnZ2VzdGlvbgpAQCAtNjIzNyw3ICs2Mjk4LDcgQEAKICNpZmRlZiBGRUFUX01CWVRFCiAgICAgYyA9IG1iX3B0cjJjaGFyKHN1LT5zdV9iYWRwdHIpOwogI2Vsc2UKLSAgICBjID0gKnA7CisgICAgYyA9ICpzdS0+c3VfYmFkcHRyOwogI2VuZGlmCiAgICAgaWYgKCFTUEVMTF9JU1VQUEVSKGMpICYmIGF0dHIgPT0gMCkKICAgICB7CkBAIC03OTcyLDYgKzgwMzMsNyBAQAogCQkJCSAgICBjaGFyX3UJKnA7CiAJCQkJICAgIGludAkJc2NvcmU7CiAKKwkJCQkgICAgZmxhZ3MgfD0gc3UtPnN1X2JhZGZsYWdzOwogCQkJCSAgICBpZiAocm91bmQgPT0gMSAmJiAoZmxhZ3MgJiBXRl9DQVBNQVNLKSAhPSAwKQogCQkJCSAgICB7CiAJCQkJCS8qIE5lZWQgdG8gZml4IGNhc2UgYWNjb3JkaW5nIHRvCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwvTWFrZWZpbGUgYi9zcmMvc3BlbGwvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzOGU2MDMuLjAwMDAwMDAKLS0tIGEvc3JjL3NwZWxsL01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIFZpbSBzcGVsbCBmaWxlcy4KLQotU1BFTExESVIgPSAuLi8uLi9ydW50aW1lL3NwZWxsCi1WSU0JID0gLi4vdmltCi0KLWFsbDogZW4gcGwgbmwgZGUgZnIKLQkKLWVuOiAkKFNQRUxMRElSKS9lbi5sYXRpbjEuc3BsIFwKLQkkKFNQRUxMRElSKS9lbi51dGYtOC5zcGwgXAotCSQoU1BFTExESVIpL2VuLmFzY2lpLnNwbAotCi1wbDogJChTUEVMTERJUikvcGwuaXNvLTg4NTktMi5zcGwgXAotCSQoU1BFTExESVIpL3BsLnV0Zi04LnNwbAotCi1ubDogJChTUEVMTERJUikvbmwubGF0aW4xLnNwbCBcCi0JJChTUEVMTERJUikvbmwudXRmLTguc3BsCi0KLWRlOiAkKFNQRUxMRElSKS9kZS5sYXRpbjEuc3BsIFwKLQkkKFNQRUxMRElSKS9kZS51dGYtOC5zcGwKLQotZnI6ICQoU1BFTExESVIpL2ZyLmxhdGluMS5zcGwgXAotCSQoU1BFTExESVIpL2ZyLnV0Zi04LnNwbAotCi1oZTogJChTUEVMTERJUikvaGUudXRmLTguc3BsCi0KLWRpZmY6Ci0JLWRpZmYgLWEgLUMgMSBlbl9VUy5vcmlnLmFmZiBlbl9VUy5hZmYgPmVuX1VTLmRpZmYKLQktZGlmZiAtYSAtQyAxIGVuX1VTLm9yaWcuZGljIGVuX1VTLmRpYyA+PmVuX1VTLmRpZmYKLQktZGlmZiAtYSAtQyAxIGVuX0FVLm9yaWcuYWZmIGVuX0FVLmFmZiA+ZW5fQVUuZGlmZgotCS1kaWZmIC1hIC1DIDEgZW5fQVUub3JpZy5kaWMgZW5fQVUuZGljID4+ZW5fQVUuZGlmZgotCS1kaWZmIC1hIC1DIDEgZW5fQ0Eub3JpZy5hZmYgZW5fQ0EuYWZmID5lbl9DQS5kaWZmCi0JLWRpZmYgLWEgLUMgMSBlbl9DQS5vcmlnLmRpYyBlbl9DQS5kaWMgPj5lbl9DQS5kaWZmCi0JLWRpZmYgLWEgLUMgMSBlbl9HQi5vcmlnLmFmZiBlbl9HQi5hZmYgPmVuX0dCLmRpZmYKLQktZGlmZiAtYSAtQyAxIGVuX0dCLm9yaWcuZGljIGVuX0dCLmRpYyA+PmVuX0dCLmRpZmYKLQktZGlmZiAtYSAtQyAxIGVuX05aLm9yaWcuYWZmIGVuX05aLmFmZiA+ZW5fTlouZGlmZgotCS1kaWZmIC1hIC1DIDEgZW5fTloub3JpZy5kaWMgZW5fTlouZGljID4+ZW5fTlouZGlmZgotCQotCS1kaWZmIC1hIC1DIDEgbmxfTkwub3JpZy5hZmYgbmxfTkwuYWZmID5ubF9OTC5kaWZmCi0JLWRpZmYgLWEgLUMgMSBubF9OTC5vcmlnLmRpYyBubF9OTC5kaWMgPj5ubF9OTC5kaWZmCi0JCi0JLWRpZmYgLWEgLUMgMSBwbF9QTC5vcmlnLmFmZiBwbF9QTC5hZmYgPnBsX1BMLmRpZmYKLQktZGlmZiAtYSAtQyAxIHBsX1BMLm9yaWcuZGljIHBsX1BMLmRpYyA+PnBsX1BMLmRpZmYKLQkKLQktZGlmZiAtYSAtQyAxIGRlX0RFLm9yaWcuYWZmIGRlX0RFLmFmZiA+ZGVfREUuZGlmZgotCS1kaWZmIC1hIC1DIDEgZGVfREUub3JpZy5kaWMgZGVfREUuZGljID4+ZGVfREUuZGlmZgotCQotCS1kaWZmIC1hIC1DIDEgZnJfRlIub3JpZy5hZmYgZnJfRlIuYWZmID5mcl9GUi5kaWZmCi0JLWRpZmYgLWEgLUMgMSBmcl9GUi5vcmlnLmRpYyBmcl9GUi5kaWMgPj5mcl9GUi5kaWZmCi0JCi0JLWRpZmYgLWEgLUMgMSBoZV9JTC5vcmlnLmFmZiBoZV9JTC5hZmYgPmhlX0lMLmRpZmYKLQktZGlmZiAtYSAtQyAxIGhlX0lMLm9yaWcuZGljIGhlX0lMLmRpYyA+PmhlX0lMLmRpZmYKLQotJChTUEVMTERJUikvZW4ubGF0aW4xLnNwbCA6ICQoVklNKSBcCi0JCQllbl9VUy5hZmYgZW5fVVMuZGljIFwKLQkJCWVuX0FVLmFmZiBlbl9BVS5kaWMgXAotCQkJZW5fQ0EuYWZmIGVuX0NBLmRpYyBcCi0JCQllbl9HQi5hZmYgZW5fR0IuZGljIFwKLQkJCWVuX05aLmFmZiBlbl9OWi5kaWMKLQllbnYgTEFORz1lbl9VUy5JU084ODU5LTEgXAotCQkkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL2VuIGVuX1VTIGVuX0FVIGVuX0NBIGVuX0dCIFwKLQkJCWVuX05aIiAtYyBxCi0KLSQoU1BFTExESVIpL2VuLnV0Zi04LnNwbCA6ICQoVklNKSBcCi0JCQllbl9VUy5hZmYgZW5fVVMuZGljIFwKLQkJCWVuX0FVLmFmZiBlbl9BVS5kaWMgXAotCQkJZW5fQ0EuYWZmIGVuX0NBLmRpYyBcCi0JCQllbl9HQi5hZmYgZW5fR0IuZGljIFwKLQkJCWVuX05aLmFmZiBlbl9OWi5kaWMKLQllbnYgTEFORz1lbl9VUy5VVEYtOCBcCi0JCSQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvZW4gZW5fVVMgZW5fQVUgZW5fQ0EgZW5fR0IgXAotCQkJZW5fTloiIC1jIHEKLQotJChTUEVMTERJUikvZW4uYXNjaWkuc3BsIDogJChWSU0pIFwKLQkJCWVuX1VTLmFmZiBlbl9VUy5kaWMgXAotCQkJZW5fQVUuYWZmIGVuX0FVLmRpYyBcCi0JCQllbl9DQS5hZmYgZW5fQ0EuZGljIFwKLQkJCWVuX0dCLmFmZiBlbl9HQi5kaWMgXAotCQkJZW5fTlouYWZmIGVuX05aLmRpYwotCSQoVklNKSAtZSAtYyAibWtzcGVsbCEgLWFzY2lpICQoU1BFTExESVIpL2VuIGVuX1VTIGVuX0FVIGVuX0NBIGVuX0dCIFwKLQkJCWVuX05aIiAtYyBxCi0KLSQoU1BFTExESVIpL3BsLmlzby04ODU5LTIuc3BsIDogJChWSU0pIFwKLQkJCXBsX1BMLmFmZiBwbF9QTC5kaWMKLQllbnYgTEFORz1wbF9QTC5JU084ODU5LTIgJChWSU0pIC1lIC1jICJta3NwZWxsISAkKFNQRUxMRElSKS9wbCBwbF9QTCIgLWMgcQotCi0kKFNQRUxMRElSKS9wbC51dGYtOC5zcGwgOiAkKFZJTSkgXAotCQkJcGxfUEwuYWZmIHBsX1BMLmRpYwotCWVudiBMQU5HPXBsX1BMLlVURi04ICQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvcGwgcGxfUEwiIC1jIHEKLQotJChTUEVMTERJUikvbmwubGF0aW4xLnNwbCA6ICQoVklNKSBcCi0JCQlubF9OTC5hZmYgbmxfTkwuZGljCi0JZW52IExBTkc9bmxfTkwuSVNPODg1OS0xICQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvbmwgbmxfTkwiIC1jIHEKLQotJChTUEVMTERJUikvbmwudXRmLTguc3BsIDogJChWSU0pIFwKLQkJCW5sX05MLmFmZiBubF9OTC5kaWMKLQllbnYgTEFORz1ubF9OTC5VVEYtOCAkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL25sIG5sX05MIiAtYyBxCi0KLSQoU1BFTExESVIpL2RlLmxhdGluMS5zcGwgOiAkKFZJTSkgXAotCQkJZGVfREUuYWZmIGRlX0RFLmRpYwotCWVudiBMQU5HPWRlX0RFLklTTzg4NTktMSAkKFZJTSkgLWUgLWMgIm1rc3BlbGwhICQoU1BFTExESVIpL2RlIGRlX0RFIiAtYyBxCi0KLSQoU1BFTExESVIpL2RlLnV0Zi04LnNwbCA6ICQoVklNKSBcCi0JCQlkZV9ERS5hZmYgZGVfREUuZGljCi0JZW52IExBTkc9ZGVfREUuVVRGLTggJChWSU0pIC1lIC1jICJta3NwZWxsISAkKFNQRUxMRElSKS9kZSBkZV9ERSIgLWMgcQotCi0kKFNQRUxMRElSKS9mci5sYXRpbjEuc3BsIDogJChWSU0pIFwKLQkJCWZyX0ZSLmFmZiBmcl9GUi5kaWMKLQllbnYgTEFORz1mcl9GUi5JU084ODU5LTEgJChWSU0pIC1lIC1jICJta3NwZWxsISAkKFNQRUxMRElSKS9mciBmcl9GUiIgLWMgcQotCi0kKFNQRUxMRElSKS9mci51dGYtOC5zcGwgOiAkKFZJTSkgXAotCQkJZnJfRlIuYWZmIGZyX0ZSLmRpYwotCWVudiBMQU5HPWZyX0ZSLlVURi04ICQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvZnIgZnJfRlIiIC1jIHEKLQotCi0kKFNQRUxMRElSKS9oZS51dGYtOC5zcGwgOiAkKFZJTSkgXAotCQkJaGVfSUwuYWZmIGhlX0lMLmRpYwotCWVudiBMQU5HPWhlX0lMLlVURi04ICQoVklNKSAtZSAtYyAibWtzcGVsbCEgJChTUEVMTERJUikvaGUgaGVfSUwiIC1jIHEKZGlmZiAtLWdpdCBhL3NyYy9zcGVsbC9kZV9ERS5kaWZmIGIvc3JjL3NwZWxsL2RlX0RFLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjA1NmEuLjAwMDAwMDAKLS0tIGEvc3JjL3NwZWxsL2RlX0RFLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0qKiogZGVfREUub3JpZy5hZmYJRnJpIEp1biAxNyAxMDowMToxOCAyMDA1Ci0tLS0gZGVfREUuYWZmCU1vbiBKdW4gMjcgMTk6NDI6MjAgMjAwNQotKioqKioqKioqKioqKioqCi0qKiogMyw0ICoqKioKLS0tLSAzLDEwIC0tLS0KLSAgCi0rIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KLSsgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/wotKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//Ci0rIAotKyBNSURXT1JECScKLSsgCi0gICMgKGMpIGNvcHlyaWdodCBieSBCam9lcm4gSmFja2UgPGJqb2VybkBqM2UuZGU+Ci0qKiogZGVfREUub3JpZy5kaWMJRnJpIEp1biAxNyAxMDowMToyNyAyMDA1Ci0tLS0gZGVfREUuZGljCVNhdCBKdW4gMTggMTk6NTc6MDcgMjAwNQotKioqKioqKioqKioqKioqCi0qKiogNzYyNTgsNzYyNTkgKioqKgotICB6eW5pc211c2b2cmRlcm5kL0EKLSEgenpnbAotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tLS0gNzYyNTgsNzYyNjAgLS0tLQotICB6eW5pc211c2b2cmRlcm5kL0EKLSEgenpnbAotISAKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmggYi9zcmMvdmVyc2lvbi5oCmluZGV4IDc3MjhlOWEuLmUxNjhkYjIgMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmgKKysrIGIvc3JjL3ZlcnNpb24uaApAQCAtMzYsNSArMzYsNSBAQAogI2RlZmluZSBWSU1fVkVSU0lPTl9OT0RPVAkidmltNzBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fU0hPUlQJIjcuMGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9NRURJVU0JIjcuMGFhIEFMUEhBIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBKdWwgMikiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgSnVsIDIsIGNvbXBpbGVkICIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgSnVsIDMpIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IEp1bCAzLCBjb21waWxlZCAiCg==