ZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZAppbmRleCA3Y2NiYjk3Li44ZWIzMjllIDEwMDY0NAotLS0gYS9DT05UUklCVVRJTkcubWQKKysrIGIvQ09OVFJJQlVUSU5HLm1kCkBAIC0xLDE5ICsxLDEwIEBACiAjIyBIb3cgdG8gQ29udHJpYnV0ZSB0byBWdWxrYW4gU291cmNlIFJlcG9zaXRvcmllcwogCi0jIyMgKipUaGUgUmVwb3NpdG9yaWVzKioKKyMjIyAqKlRoZSBSZXBvc2l0b3J5KioKIAotVGhlIHNvdXJjZSBjb2RlIGZvciB2YXJpb3VzIFZ1bGthbiBjb21wb25lbnRzIGlzIGRpc3RyaWJ1dGVkIGFjcm9zcyBzZXZlcmFsIEdpdEh1YiByZXBvc2l0b3JpZXMuCi1UaGUgcmVwb3NpdG9yaWVzIHNwb25zb3JlZCBieSBLaHJvbm9zIGFuZCBMdW5hckcgYXJlIGRlc2NyaWJlZCBoZXJlLgotSW4gZ2VuZXJhbCwgdGhlIGNhbm9uaWNhbCBWdWxrYW4gTG9hZGVyIGFuZCBWYWxpZGF0aW9uIExheWVycyBzb3VyY2VzIGFyZSBpbiB0aGUgS2hyb25vcyByZXBvc2l0b3J5LAotd2hpbGUgdGhlIEx1bmFyRyByZXBvc2l0b3JpZXMgaG9zdCBzb3VyY2VzIGZvciBhZGRpdGlvbmFsIHRvb2xzIGFuZCBzYW1wbGUgcHJvZ3JhbXMuCi0KK1RoZSBzb3VyY2UgY29kZSBmb3IgVGhlIFZ1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXIgY29tcG9uZW50cyBpcyBzcG9uc29yZWQgYnkgS2hyb25vcyBhbmQgTHVuYXJHLgogKiBbS2hyb25vcyBWdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVyc10oaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycykKLSogW0x1bmFyRyBWdWxrYW5Ub29sc10oaHR0cHM6Ly9naXRodWIuY29tL0x1bmFyRy9WdWxrYW5Ub29scykKLSogW0x1bmFyRyBWdWxrYW5TYW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vTHVuYXJHL1Z1bGthblNhbXBsZXMpCiAKLUFzIGEgY29udmVuaWVuY2UsIHRoZSBjb250ZW50cyBvZiB0aGUgVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMgcmVwb3NpdG9yeSBhcmUgZG93bnN0cmVhbWVkIGludG8gdGhlIFZ1bGthblRvb2xzIGFuZCBWdWxrYW5TYW1wbGVzIHJlcG9zaXRvcmllcyB2aWEgYSBicmFuY2ggbmFtZWQgYHRydW5rYC4KLVRoaXMgbWFrZXMgdGhlIFZ1bGthblRvb2xzIGFuZCBWdWxrYW5TYW1wbGVzIGVhc2llciB0byB3b3JrIHdpdGggYW5kIGF2b2lkcyBjb21wYXRpYmlsaXR5IGlzc3VlcyAKLXRoYXQgbWlnaHQgYXJpc2Ugd2l0aCBWdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyBjb21wb25lbnRzIGlmIHRoZXkgd2VyZSBvYnRhaW5lZCBmcm9tIGEgc2VwYXJhdGUgcmVwb3NpdG9yeS4KIAogIyMjICoqVGhlIFZ1bGthbiBFY29zeXN0ZW0gTmVlZHMgWW91ciBIZWxwKioKIApAQCAtMjMsNyArMTQsNyBAQAogYW5kIHRlc3RzIGZvciB0aGVzZSB2YWxpZGF0aW9uIGNoZWNrcy4KIElmIHlvdSBkZXNpcmUgdG8gaGVscCBpbiB0aGlzIGFyZWEsIHBsZWFzZSBleGFtaW5lIHRoZQogW2lzc3VlcyBsaXN0XShodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzL2lzc3VlcykKLWluIHRoaXMgcmVwb3NpdG9yeSBhbmQgbG9vayBmb3IgYW55IHVuYXNzaWduZWQgaXNzdWVzIHRoYXQgYXJlIG9mIGludGVyZXN0IHRvIHlvdS4KK2luIHRoaXMgcmVwb3NpdG9yeSBhbmQgbG9vayBmb3IgYW55IGlzc3VlcyB0aGF0IGFyZSBvZiBpbnRlcmVzdCB0byB5b3UuCiBPZiBjb3Vyc2UsIGlmIHlvdSBoYXZlIHlvdXIgb3duIHdvcmsgaW4gbWluZCwgcGxlYXNlIG9wZW4gYW4gaXNzdWUgdG8gZGVzY3JpYmUgaXQgYW5kIGFzc2lnbiBpdCB0byB5b3Vyc2VsZi4KIEZpbmFsbHksIHBsZWFzZSBmZWVsIGZyZWUgdG8gY29udGFjdCBhbnkgb2YgdGhlIGRldmVsb3BlcnMgdGhhdCBhcmUgYWN0aXZlbHkgY29udHJpYnV0aW5nIHNob3VsZCB5b3UKIHdpc2ggdG8gY29vcmRpbmF0ZSBmdXJ0aGVyLgpAQCAtMzIsMTEgKzIzLDEzIEBACiAKIFJlcG9zaXRvcnkgSXNzdWUgbGFiZWxzOgogCi0qIF9JbmNvbXBsZXRlXzogICBUaGVzZSBpc3N1ZXMgcmVmZXIgdG8gbWlzc2luZyB2YWxpZGF0aW9uIGNoZWNrcyB0aGF0IHVzZXJzIGhhdmUgZW5jb3VudGVyZWQgZHVyaW5nIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHRoYXQgd291bGQgaGF2ZSBiZWVuIGRpcmVjdGx5IHVzZWZ1bCwgYW5kIGFyZSBoaWdoIHByaW9yaXR5LgotKiBfRW5oYW5jZW1lbnRfOiAgVGhlc2UgaXNzdWVzIHJlZmVyIHRvIGlkZWFzIGZvciBleHRlbmRpbmcgb3IgaW1wcm92aW5nIHRoZSBsb2FkZXIsIGRlbW9zLCBvciB2YWxpZGF0aW9uIGxheWVycy4KICogX0J1Z186ICAgICAgICAgIFRoZXNlIGlzc3VlcyByZWZlciB0byBpbnZhbGlkIG9yIGJyb2tlbiBmdW5jdGlvbmFsaXR5IGFuZCBhcmUgdGhlIGhpZ2hlc3QgcHJpb3JpdHkuCisqIF9JbmNvbXBsZXRlXzogICBUaGVzZSBpc3N1ZXMgcmVmZXIgdG8gbWlzc2luZyB2YWxpZGF0aW9uIGNoZWNrcyB0aGF0IHVzZXJzIGhhdmUgZW5jb3VudGVyZWQgZHVyaW5nIGFwcGxpY2F0aW9uCitkZXZlbG9wbWVudCB0aGF0IHdvdWxkIGhhdmUgYmVlbiBkaXJlY3RseSB1c2VmdWwsIGFuZCBhcmUgaGlnaCBwcmlvcml0eS4KKyogX0VuaGFuY2VtZW50XzogIFRoZXNlIGlzc3VlcyByZWZlciB0byBpZGVhcyBmb3IgZXh0ZW5kaW5nIG9yIGltcHJvdmluZyB0aGUgbG9hZGVyLCBkZW1vcywgb3IgdmFsaWRhdGlvbiBsYXllcnMuCiAKLUlmIHlvdSBjaG9vc2UgdG8gd29yayBvbiBhbiBpc3N1ZSB0aGF0IGlzIGFscmVhZHkgYXNzaWduZWQsIHNpbXBseSBjb29yZGluYXRlIHdpdGggdGhlIGN1cnJlbnQgYXNzaWduZWUuCitJdCBpcyB0aGUgbWFpbmFpbmVycyBnb2FsIGZvciBhbGwgaXNzdWVzIHRvIGJlIGFzc2lnbmVkIHdpdGhpbiBvbmUgYnVzaW5lc3MgZGF5IG9mIHRoZWlyIHN1Ym1pc3Npb24uIElmIHlvdSBjaG9vc2UKK3RvIHdvcmsgb24gYW4gaXNzdWUgdGhhdCBpcyBhc3NpZ25lZCwgc2ltcGx5IGNvb3JkaW5hdGUgd2l0aCB0aGUgY3VycmVudCBhc3NpZ25lZS4KIAogIyMjICoqSG93IHRvIFN1Ym1pdCBGaXhlcyoqCiAKQEAgLTQ1LDIwICszOCwyMCBAQAogKiBVc2UgdGhlIGV4aXN0aW5nIEdpdEh1YiBmb3JraW5nIGFuZCBwdWxsIHJlcXVlc3QgcHJvY2Vzcy4KICAgVGhpcyB3aWxsIGludm9sdmUgW2ZvcmtpbmcgdGhlIHJlcG9zaXRvcnldKGh0dHBzOi8vaGVscC5naXRodWIuY29tL2FydGljbGVzL2ZvcmstYS1yZXBvLyksCiAgIGNyZWF0aW5nIGEgYnJhbmNoIHdpdGggeW91ciBjb21taXRzLCBhbmQgdGhlbiBbc3VibWl0dGluZyBhIHB1bGwgcmVxdWVzdF0oaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvdXNpbmctcHVsbC1yZXF1ZXN0cy8pLgorKiBQbGVhc2UgcmVhZCBhbmQgYWRoZXJlIHRvIHRoZSBzdHlsZSBhbmQgcHJvY2VzcyBbZ3VpZGVsaW5lc10oI2NvZGluZyBjb252ZW50aW9ucyBhbmQgZm9ybWF0dGluZykgZW51bWVyYXRlZCBiZWxvdy4KICogUGxlYXNlIGJhc2UgeW91ciBmaXhlcyBvbiB0aGUgbWFzdGVyIGJyYW5jaC4gIFNESyBicmFuY2hlcyBhcmUgZ2VuZXJhbGx5IG5vdCB1cGRhdGVkIGV4Y2VwdCBmb3IgY3JpdGljYWwgZml4ZXMgbmVlZGVkIHRvIHJlcGFpciBhbiBTREsgcmVsZWFzZS4KLSogUGxlYXNlIGluY2x1ZGUgdGhlIEdpdEh1YiBJc3N1ZSBudW1iZXIgbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb21taXQgdGV4dCBpZiBhcHBsaWNhYmxlLgotICAgICogRXhhbXBsZTogImxheWVyczogR0gxMjMsIEZpeCBtaXNzaW5nIGluaXQiCi0qIElmIHlvdXIgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCBvbmx5IHRvIGZpbGVzIGZyb20gdGhlIFZ1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzIHJlcG9zaXRvcnksIHBsZWFzZSBkaXJlY3QgeW91ciBwdWxsIHJlcXVlc3QgdG8gdGhhdCByZXBvc2l0b3J5LCBpbnN0ZWFkIG9mIFZ1bGthblRvb2xzIG9yIFZ1bGthblNhbXBsZXMuCiAKIAogIyMjIyAqKkNvZGluZyBDb252ZW50aW9ucyBhbmQgRm9ybWF0dGluZyoqCiAqIFVzZSB0aGUgKipbR29vZ2xlIHN0eWxlIGd1aWRlXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVndWlkZS9jcHBndWlkZS5odG1sKSoqIGZvciBzb3VyY2UgY29kZSB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKICAgICAqIFRoZSBjb2x1bW4gbGltaXQgaXMgMTMyIChhcyBvcHBvc2VkIHRvIHRoZSBkZWZhdWx0IHZhbHVlIDgwKS4gVGhlIGNsYW5nLWZvcm1hdCB0b29sIHdpbGwgaGFuZGxlIHRoaXMuIFNlZSBiZWxvdy4KICAgICAqIFRoZSBpbmRlbnQgaXMgNCBzcGFjZXMgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAyIHNwYWNlcy4gQWdhaW4sIHRoZSBjbGFuZy1mb3JtYXQgdG9vbCB3aWxsIGhhbmRsZSB0aGlzLgotICAgICogSWYgeW91IGNhbiBqdXN0aWZ5IGEgcmVhc29uIGZvciB2aW9sYXRpbmcgYSBydWxlIGluIHRoZSBndWlkZWxpbmVzLCB0aGVuIHlvdSBhcmUgZnJlZSB0byBkbyBzby4gQmUgcHJlcGFyZWQgdG8gZGVmZW5kIHlvdXIgZGVjaXNpb24gZHVyaW5nIGNvZGUgcmV2aWV3LiBUaGlzIHNob3VsZCBiZSB1c2VkIHJlc3BvbnNpYmx5LiBBbiBleGFtcGxlIG9mIGEgYmFkIHJlYXNvbiBpcyAiSSBkb24ndCBsaWtlIHRoYXQgcnVsZS4iIEFuIGV4YW1wbGUgb2YgYSBnb29kIHJlYXNvbiBpcyAiVGhpcyB2aW9sYXRlcyB0aGUgc3R5bGUgZ3VpZGUsIGJ1dCBpdCBpbXByb3ZlcyB0eXBlIHNhZmV0eS4iCisgICAgKiBJZiB5b3UgY2FuIGp1c3RpZnkgYSByZWFzb24gZm9yIHZpb2xhdGluZyBhIHJ1bGUgaW4gdGhlIGd1aWRlbGluZXMsIHRoZW4geW91IGFyZSBmcmVlIHRvIGRvIHNvLiBCZSBwcmVwYXJlZCB0byBkZWZlbmQgeW91cgorZGVjaXNpb24gZHVyaW5nIGNvZGUgcmV2aWV3LiBUaGlzIHNob3VsZCBiZSB1c2VkIHJlc3BvbnNpYmx5LiBBbiBleGFtcGxlIG9mIGEgYmFkIHJlYXNvbiBpcyAiSSBkb24ndCBsaWtlIHRoYXQgcnVsZS4iIEFuIGV4YW1wbGUgb2YKK2EgZ29vZCByZWFzb24gaXMgIlRoaXMgdmlvbGF0ZXMgdGhlIHN0eWxlIGd1aWRlLCBidXQgaXQgaW1wcm92ZXMgdHlwZSBzYWZldHkuIgogCi0qIFJ1biAqKmNsYW5nLWZvcm1hdCoqIG9uIHlvdXIgY2hhbmdlcyB0byBtYWludGFpbiBmb3JtYXR0aW5nCi0gICAgKiBUaGVyZSBhcmUgYC5jbGFuZy1mb3JtYXQgZmlsZXNgIHRocm91Z2hvdXQgdGhlIHJlcG9zaXRvcnkgdG8gZGVmaW5lIGNsYW5nLWZvcm1hdCBzZXR0aW5ncworKiBSdW4gKipjbGFuZy1mb3JtYXQqKiBvbiB5b3VyIGNoYW5nZXMgdG8gbWFpbnRhaW4gY29uc2lzdGVudCBmb3JtYXR0aW5nCisgICAgKiBUaGVyZSBhcmUgYC5jbGFuZy1mb3JtYXQgZmlsZXNgIHByZXNlbnQgaW4gdGhlIHJlcG9zaXRvcnkgdG8gZGVmaW5lIGNsYW5nLWZvcm1hdCBzZXR0aW5ncwogICAgICAgd2hpY2ggYXJlIGZvdW5kIGFuZCB1c2VkIGF1dG9tYXRpY2FsbHkgYnkgY2xhbmctZm9ybWF0LgogICAgICogQSBzYW1wbGUgZ2l0IHdvcmtmbG93IG1heSBsb29rIGxpa2U6CiAKQEAgLTY5LDE0ICs2MiwyMCBAQAogPiAgICAgICAgJCBnaXQgYWRkIC11IC4KID4gICAgICAgICQgZ2l0IGNvbW1pdAogCi0qICoqRm9ybWF0IHlvdXIgZ2l0IGNvbW1pdCBtZXNzYWdlcyoqIGNvbnNpc3RlbnRseSB3aXRoIHRoZSByZXBvCi0gICAgKiBMaW1pdCB0aGUgc3ViamVjdCBsaW5lIHRvIDUwIGNoYXJhY3RlcnMuIEJlZ2luIHdpdGggYSBvbmUtd29yZCBjb21wb25lbnQgZGVzY3JpcHRpb24gZm9sbG93ZWQgYnkgYSBjb2xvbiAoZS5nLiBsb2FkZXIsIGxheWVycywgdGVzdHMsIGV0Yy4pLgotICAgICogU2VwYXJhdGUgc3ViamVjdCBmcm9tIGJvZHkgd2l0aCBhIGJsYW5rIGxpbmUuCi0gICAgKiBXcmFwIHRoZSBib2R5IGF0IDcyIGNoYXJhY3RlcnMuCi0gICAgKiBDYXBpdGFsaXplIHRoZSBzdWJqZWN0IGxpbmUuCi0gICAgKiBEbyBub3QgZW5kIHRoZSBzdWJqZWN0IGxpbmUgd2l0aCBhIHBlcmlvZC4KLSAgICAqIFVzZSB0aGUgYm9keSB0byBleHBsYWluIHdoYXQgYW5kIHdoeSB2cy4gaG93LgotICAgICogVXNlIHRoZSBpbXBlcmF0aXZlIG1vb2QgaW4gdGhlIHN1YmplY3QgbGluZS4gVGhpcyBqdXN0IG1lYW5zIHRvIHdyaXRlIGl0IGFzIGEgY29tbWFuZCAoZS5nLiBGaXggdGhlIHNwcm9ja2V0KS4KKyogKipDb21taXQgTWVzc2FnZXMqKgorICAgICogTGltaXQgdGhlIHN1YmplY3QgbGluZSB0byA1MCBjaGFyYWN0ZXJzIC0tIHRoaXMgYWxsb3dzIHRoZSBpbmZvcm1hdGlvbiB0byBkaXNwbGF5IGNvcnJlY3RseSBpbiBnaXQvR2l0aHViIGxvZ3MKKyAgICAqIEJlZ2luIHN1YmplY3QgbGluZSB3aXRoIGEgb25lLXdvcmQgY29tcG9uZW50IGRlc2NyaXB0aW9uIGZvbGxvd2VkIGJ5IGEgY29sb24gKGUuZy4gbG9hZGVyLCBsYXllcnMsIHRlc3RzLCBldGMuKQorICAgICogU2VwYXJhdGUgc3ViamVjdCBmcm9tIGJvZHkgd2l0aCBhIGJsYW5rIGxpbmUKKyAgICAqIFdyYXAgdGhlIGJvZHkgYXQgNzIgY2hhcmFjdGVycworICAgICogQ2FwaXRhbGl6ZSB0aGUgc3ViamVjdCBsaW5lCisgICAgKiBEbyBub3QgZW5kIHRoZSBzdWJqZWN0IGxpbmUgd2l0aCBhIHBlcmlvZAorICAgICogVXNlIHRoZSBib2R5IHRvIGV4cGxhaW4gd2hhdCBhbmQgd2h5IHZzLiBob3cKKyAgICAqIFVzZSB0aGUgaW1wZXJhdGl2ZSBtb2RlIGluIHRoZSBzdWJqZWN0IGxpbmUuIFRoaXMganVzdCBtZWFucyB0byB3cml0ZSBpdCBhcyBhIGNvbW1hbmQgKGUuZy4gRml4IHRoZSBzcHJvY2tldCkKKworU3RyaXZlIGZvciBjb21taXRzIHRoYXQgaW1wbGVtZW50IGEgc2luZ2xlIG9yIHJlbGF0ZWQgc2V0IG9mIGZ1bmN0aW9uYWxpdHksIHVzaW5nIGFzIG1hbnkgY29tbWl0cyBhcyBpcyBuZWNlc3NhcnkgKG1vcmUgaXMgYmV0dGVyKS4KK1RoYXQgc2FpZCwgcGxlYXNlIGVuc3VyZSB0aGF0IHRoZSByZXBvc2l0b3J5IGNvbXBpbGVzIGFuZCBwYXNzZXMgdGVzdHMgd2l0aG91dCBlcnJvciBmb3IgZWFjaCBjb21taXQgaW4geW91ciBwdWxsIHJlcXVlc3QuICBOb3RlCit0aGF0IHRvIGJlIGFjY2VwdGVkIGludG8gdGhlIHJlcG9zaXRvcnksIHRoZSBwdWxsIHJlcXVlc3QgbXVzdCBbcGFzcyBhbGwgdGVzdHNdKCN0ZXN0aW5nIHlvdXIgY2hhbmdlcykgb24gYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMKKy0tIHRoZSBhdXRvbWF0aWMgR2l0aHViIFRyYXZpcyBhbmQgQXBwVmV5b3IgY29udGludW91cyBpbnRlZ3JhdGlvbiBmZWF0dXJlcyB3aWxsIGFzc2lzdCBpbiBlbmZvcmNpbmcgdGhpcyByZXF1aXJlbWVudC4KIAogIyMjIyAqKlRlc3RpbmcgWW91ciBDaGFuZ2VzKioKICogUnVuIHRoZSBleGlzdGluZyB0ZXN0cyBpbiB0aGUgcmVwb3NpdG9yeSBiZWZvcmUgYW5kIGFmdGVyIGVhY2ggaWYgeW91ciBjb21taXRzIHRvIGNoZWNrIGZvciBhbnkgcmVncmVzc2lvbnMuCkBAIC05NiwxNSArOTUsMTcgQEAKIAogPiAgICAgICAgcnVuX2FsbF90ZXN0cy5zaAogCi0qIE9uIFdpbmRvd3MsIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGNhbiBiZSBydW4gZnJvbSBpbnNpZGUgVmlzdWFsIFN0dWRpbyAtLSBqdXN0IHJ1biB0aGUgYHZrX2xheWVyX3ZhbGlkYXRpb25fdGVzdHNgIHByb2plY3QsIG9yIHlvdSBjYW4gcnVuIGBydW5fYWxsX3Rlc3RzLnBzMWAgZnJvbSBhIFBvd2VyU2hlbGwgd2luZG93CisqIE9uIFdpbmRvd3MsIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGNhbiBiZSBydW4gZnJvbSBpbnNpZGUgVmlzdWFsIFN0dWRpbyAtLSBqdXN0IHJ1biB0aGUgYHZrX2xheWVyX3ZhbGlkYXRpb25fdGVzdHNgIHByb2plY3QsCitvciB5b3UgY2FuIHJ1biBgcnVuX2FsbF90ZXN0cy5wczFgIGZyb20gYSBQb3dlclNoZWxsIHdpbmRvdwogCiAqIE5vdGUgdGhhdCBzb21lIHRlc3RzIG1heSBmYWlsIHdpdGgga25vd24gaXNzdWVzIG9yIGRyaXZlci1zcGVjaWZpYyBwcm9ibGVtcy4KICAgVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHlvdXIgY2hhbmdlcyBzaG91bGRuJ3QgY2hhbmdlIHRoZSB0ZXN0IHJlc3VsdHMsIHVubGVzcyB0aGF0IHdhcyB0aGUgaW50ZW50IG9mIHlvdXIgY2hhbmdlcy4KICogUnVuIHRlc3RzIHRoYXQgZXhwbGljaXRseSBleGVyY2lzZSB5b3VyIGNoYW5nZXMuCiAqIEZlZWwgZnJlZSB0byBzdWJqZWN0IHlvdXIgY29kZSBjaGFuZ2VzIHRvIG90aGVyIHRlc3RzIGFzIHdlbGwhCiAKKwogIyMjIyAqKlNwZWNpYWwgQ29uc2lkZXJhdGlvbnMgZm9yIFZhbGlkYXRpb24gTGF5ZXJzKioKLUlmIHlvdSBhcmUgc3VibWl0dGluZyBhIGNoYW5nZSB0aGF0IGFkZHMgYSBuZXcgdmFsaWRhdGlvbiBjaGVjaywgeW91IHNob3VsZCBhbHNvIGNvbnN0cnVjdCBhICJuZWdhdGl2ZSIgdGVzdCBmdW5jdGlvbi4KKyogKipWYWxpZGF0aW9uIFRlc3RzKiogIElmIHlvdSBhcmUgc3VibWl0dGluZyBhIGNoYW5nZSB0aGF0IGFkZHMgYSBuZXcgdmFsaWRhdGlvbiBjaGVjaywgeW91IHNob3VsZCBhbHNvIGNvbnN0cnVjdCBhICJuZWdhdGl2ZSIgdGVzdCBmdW5jdGlvbi4KIFRoZSBuZWdhdGl2ZSB0ZXN0IGZ1bmN0aW9uIHB1cnBvc2VseSB2aW9sYXRlcyB0aGUgdmFsaWRhdGlvbiBydWxlIHRoYXQgdGhlIG5ldyB2YWxpZGF0aW9uIGNoZWNrIGlzIGxvb2tpbmcgZm9yLgogVGhlIHRlc3Qgc2hvdWxkIGNhdXNlIHlvdXIgbmV3IHZhbGlkYXRpb24gY2hlY2sgdG8gaWRlbnRpZnkgdGhlIHZpb2xhdGlvbiBhbmQgaXNzdWUgYSB2YWxpZGF0aW9uIGVycm9yIHJlcG9ydC4KIEFuZCBmaW5hbGx5LCB0aGUgdGVzdCBzaG91bGQgY2hlY2sgdGhhdCB0aGUgdmFsaWRhdGlvbiBlcnJvciByZXBvcnQgaXMgZ2VuZXJhdGVkIGFuZCBjb25zaWRlciB0aGUgdGVzdCBhcyAicGFzc2luZyIKQEAgLTExMiw2ICsxMTMsMTAgQEAKIFRoaXMgbmV3IHRlc3Qgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB2YWxpZGF0aW9uIGxheWVyIHRlc3QgcHJvZ3JhbSBpbiB0aGUgYHRlc3RzYCBkaXJlY3RvcnkgYW5kIGNvbnRyaWJ1dGVkCiBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBuZXcgdmFsaWRhdGlvbiBjaGVjayBpdHNlbGYsIGFsb25nIHdpdGggYXBwcm9wcmlhdGUgdXBkYXRlcyB0byBgbGF5ZXJzXHZrX3ZhbGlkYXRpb25fZXJyb3JfZGF0YWJhc2UudHh0YC4KIFRoZXJlIGFyZSBtYW55IGV4aXN0aW5nIHZhbGlkYXRpb24gdGVzdHMgaW4gdGhpcyBkaXJlY3RvcnkgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHN0YXJ0aW5nIHBvaW50LgorKiAqKlZhbGlkYXRpb24gQ2hlY2tzKiogIFRoZSBtYWpvcml0eSBvZiB2YWxpZGF0aW9uIGNoZWNrcyBhcmUgY2FycmllZCBvdXQgYnkgdGhlIENvcmUgVmFsaWRhdGlvbiBsYXllci4gSW4gZ2VuZXJhbCwgdGhpcyBsYXllcgorY29udGFpbnMgY2hlY2tzIHRoYXQgcmVxdWlyZSBzb21lIGFtb3VudCBvZiBhcHBsaWNhdGlvbiBzdGF0ZSB0byBjYXJyeSBvdXQuIEluIGNvbnRyYXN0LCB0aGUgcGFyYW1ldGVyIHZhbGlkYXRpb24gbGF5ZXIgY29udGFpbnMKK2NoZWNrcyB0aGF0IHJlcXVpcmUgKG1vc3RseSkgbm8gc3RhdGUgYXQgYWxsLiBQbGVhc2UgaW5xdWlyZSBpZiB5b3UgYXJlIHVuc3VyZSBvZiB0aGUgbG9jYXRpb24gZm9yIHlvdXIgY29udHJpYnV0aW9uLiBUaGUgb3RoZXIKK2xheWVycyAodGhyZWFkaW5nLCBvYmplY3RfdHJhY2tlciwgdW5pcXVlX29iamVjdHMpIGFyZSBtb3JlIHNwZWNpYWwtcHVycG9zZSBhbmQgYXJlIG1vc3RseSBjb2RlLWdlbmVyYXRlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLgogCiAKICMjIyAqKkNvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpKioKZGlmZiAtLWdpdCBhL0dPVkVSTkFOQ0UubWQgYi9HT1ZFUk5BTkNFLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmU0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9HT1ZFUk5BTkNFLm1kCkBAIC0wLDAgKzEsNTMgQEAKKyMjIFZ1bGthbiBMb2FkZXIgYW5kIFZhbGlkYXRpb24gTGF5ZXJzIFJlcG9zaXRvcnkgTWFuYWdlbWVudAorCisjICoqT3BlbiBTb3VyY2UgUHJvamVjdCCWIE9iamVjdGl2ZXMqKgorCisqIEFsaWdubWVudCB3aXRoIHRoZSBWdWxrYW4gU3BlY2lmaWNhdGlvbgorICAtIFRoZSBnb2FsIGlzIGZvciB2YWxpZGF0aW9uIGxheWVyIGJlaGF2aW9yIHRvIGVuZm9yY2UgdGhlIHZ1bGthbiBzcGVjaWZpY2F0aW9uIG9uIGFwcGxpY2F0aW9ucy4gUXVlc3Rpb25zIG9uIHNwZWNpZmljYXRpb24KK2ludGVycHJldGF0aW9ucyBtYXkgcmVxdWlyZSBjb25zdWx0aW5nIHdpdGggdGhlIEtocm9ub3MgVnVsa2FuIFdvcmtncm91cCBmb3IgcmVzb2x1dGlvbiAKKyAgICAtIFtDb3JlIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3Z1bGthbi9zcGVjcy8xLjAvaHRtbC92a3NwZWMuaHRtbCkKKyAgICAtIFtIZWFkZXIgRmlsZXNdKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3Z1bGthbi8jaGVhZGVycykKKyAgICAtIFtTREsgUmVzb3VyY2VzXShodHRwczovL3Z1bGthbi5sdW5hcmcuY29tKQorKiBJU1YgRW5hYmxlbWVudAorICAtIFVwZGF0ZXMgb2YgbG9hZGVyIGFuZCB2YWxpZGF0aW9uIGxheWVyIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiBhIHRpbWVseSBmYXNoaW9uCisgIC0gQWxsIG5ldyBzcGVjaWZpY2F0aW9uIGZlYXR1cmVzIHNob3VsZCBoYXZlIHZhbGlkYXRpb24gYXQgcHVibGljIGxhdW5jaAorICAtIEV2ZXJ5IGVmZm9ydCB3aWxsIGJlIG1hZGUgdG8gYmUgcmVzcG9uc2l2ZSB0byBJU1YgaXNzdWVzIHdpdGggdmFsaWRhdGlvbiBsYXllcnMKKyogQ3Jvc3MgUGxhdGZvcm0gQ29tcGF0aWJpbGl0eQorICAtIEdvb2dsZSBhbmQgTHVuYXJHIGNvbGxhYm9yYXRpb246CisgICAgLSBHb29nbGU6IE1vbml0b3IgZm9yIEFuZHJvaWQKKyAgICAtIEx1bmFyRzogTW9uaXRvciBmb3IgZGVza3RvcCAoV2luZG93cyBhbmQgTGludXgpCisgICAgLSBDb250aW51b3VzIEludGVncmF0aW9uOiBJbnRlcm5hbCBIVyB0ZXN0IGZhcm1zIG1vbml0b3IgdmFyaW91cyBoYXJkd2FyZS9zb2Z0d2FyZSBwbGF0Zm9ybXMKKyogUmVwbyBRdWFsaXR5CisgIC0gUmVwbyByZW1haW5zIGluIGhlYWx0aHkgc3RhdGUgd2l0aCBhbGwgdGVzdHMgcGFzc2luZyBhbmQgZ29vZC1xdWFsaXR5LCBjb25zaXN0ZW50IGNvZGViYXNlCisgIC0gQ29udGludW91cyBJbnRlZ3JhdGlvbjogQWxvbmcgd2l0aCBHaXRodWIsIGludGVybmFsIHRlc3QgZmFybXMgcGVyZm9ybSBwcmUtY29tbWl0IGNsb3VkIHRlc3Rpbmcgb24gcHVsbC1yZXF1ZXN0cworCisjICoqUm9sZXMgYW5kIERlZmluaXRpb25zKioKKyogQ29udHJpYnV0b3IsIENvbW1lbnRlciwgVXNlcgorICAtIFN1Ym1pdHRpbmcgY29udHJpYnV0aW9ucywgaXNzdWVzLCBvciB1c2VycyBvZiB0aGUgcmVwb3NpdG9yeQorKiBBcHByb3ZlcgorICAtIEV4cGVyaWVuY2VkIHByb2plY3QgbWVtYmVycyB3aG8gaGF2ZSBtYWRlIHNpZ25pZmljYW50IHRlY2huaWNhbCBjb250cmlidXRpb25zIAorICAtIFdyaXRlIGNvbnRyb2w6IEFwcHJvdmUgcHVsbC9tZXJnZSByZXF1ZXN0cyAodmVyaWZ5IHN1Ym1pc3Npb25zIHZzLiBhY2NlcGFuY2UgY3JpdGVyaWEpCisqIFRlY2huaWNhbCBQcm9qZWN0IExlYWRzCisgIC0gTGVhZCB0aGUgcHJvamVjdCBpbiB0ZXJtcyBvZiB2ZXJzaW9uaW5nLCBxdWFsaXR5IGFzc3VyYW5jZSwgYW5kIG92ZXJhcmNoaW5nIG9iamVjdGl2ZXMgCisgIC0gTW9uaXRvciBnaXRodWIgaXNzdWVzIGFuZCBkcml2ZSB0aW1lbHkgcmVzb2x1dGlvbgorICAtIERlc2lnbmF0ZSBuZXcgYXBwcm92ZXJzIAorICAtIEVuc3VyZSBwcm9qZWN0IGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIFJlYWRtZSwgQ29udHJpYnV0aW5nIGRvY3MsIHdpa2ksIGV0Yy4sIGtlcHQgdXAtdG8tZGF0ZQorICAtIEFjdCBhcyBhIGZhY2lsaXRhdG9yIGluIHJlc29sdmluZyB0ZWNobmljYWwgY29uZmxpY3RzCisgIC0gSXMgYSBwb2ludC1vZi1jb250YWN0IGZvciBwcm9qZWN0LXJlbGF0ZWQgcXVlc3Rpb25zCisKK1RoZSB0ZWNobmljYWwgcHJvamVjdCBsZWFkcyBmb3IgdGhpcyByZXBvc2l0b3J5IGFyZToKKyogKipNYXJrIExvYm9kemluc2tpKiogW21hcmtAbHVuYXJnLmNvbV0obWFpbHRvOm1hcmtAbHVuYXJnLmNvbSkKKyogKipUb2JpbiBFaGxpcyoqIFt0b2JpbmVAZ29vZ2xlLmNvbV0obWFpbHRvOnRvYmluZUBnb29nbGUuY29tKQorCisjICoqQWNjZXB0YW5jZSBDcml0ZXJpYSBhbmQgUHJvY2VzcyoqIAorICAtIEFsbCBzb3VyY2UgY29kZSB0byBpbmNsdWRlIEtocm9ub3MgY29weXJpZ2h0IGFuZCBsaWNlbnNlIChBcGFjaGUgMi4wKS4gCisgICAgLSBBZGRpdGlvbmFsIGNvcHlyaWdodHMgb2YgY29udHJpYnV0b3JzIGFwcGVuZGVkIAorICAtIENvbnRyaWJ1dGlvbnMgYXJlIHZpYSBwdWxsIHJlcXVlc3RzCisgICAgLSBQcm9qZWN0IGxlYWRzIHdpbGwgYXNzaWduaW5nIGFwcHJvdmVycyB0byBjb250cmlidXRvciBwdWxsIHJlcXVlc3RzCisgICAgLSBBcHByb3ZlcnMgY2FuIHNlbGYtYXNzaWduIHRoZWlyIHJldmlld2VycworICAgIC0gRm9yIGNvbXBsZXggb3IgaW52YXNpdmUgY29udHJpYnV0aW9ucywgUHJvamVjdCBMZWFkcyBtYXkgcmVxdWVzdCBhcHByb3ZhbCBmcm9tIHNwZWNpZmljIHJldmlld2VycworICAgIC0gQXQgbGVhc3Qgb25lIHJldmlldyBhcHByb3ZhbCBpcyByZXF1aXJlZCB0byBjb21wbGV0ZSBhIHB1bGwgcmVxdWVzdAorICAgIC0gVGhlIGdvYWwgaXMgdG8gYmUgcmVzcG9uc2l2ZSB0byBjb250cmlidXRvcnMgd2hpbGUgZW5zdXJpbmcgYWNjZXB0YW5jZSBjcml0ZXJpYSBpcyBtZXQgYW5kIHRvIGZhY2lsaXRhdGUgdGhlaXIgc3VibWlzc2lvbnMKKyAgICAtIEFwcHJvdmFsIGlzIGRlcGVuZGVudCB1cG9uIGFkaGVyZW5jZSB0byB0aGUgZ3VpZGVsaW5lcyBpbiBbQ09OVFJJQlVUSU5HLm1kXShDT05UUklCVVRJTkcubWQpLCBhbmQgYWxpZ25tZW50IHdpdGgKK3JlcG9zaXRvcnkgZ29hbHMgb2YgbWFpbnRhaW5hYmlsaXR5LCBjb21wbGV0ZW5lc3MsIGFuZCBxdWFsaXR5CisgICAgLSBDb25mbGljdHMgb3IgcXVlc3Rpb25zIHdpbGwgdWx0aW1hdGVseSBiZSByZXNvbHZlZCBieSB0aGUgcHJvamVjdCBsZWFkcwpkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCmluZGV4IGU2NzhlNjguLjI2OGQ1ZGMgMTAwNjQ0Ci0tLSBhL1JFQURNRS5tZAorKysgYi9SRUFETUUubWQKQEAgLTEsNiArMSw2IEBACiAjIFZ1bGthbiBFY29zeXN0ZW0gQ29tcG9uZW50cwogCi1UaGlzIHByb2plY3QgcHJvdmlkZXMgS2hyb25vcyBvZmZpY2lhbCBJQ0QgbG9hZGVyIGFuZCB2YWxpZGF0aW9uIGxheWVycyBmb3IgVnVsa2FuIGRldmVsb3BlcnMgb24gV2luZG93cyBhbmQgTGludXguCitUaGlzIHByb2plY3QgcHJvdmlkZXMgdGhlIEtocm9ub3Mgb2ZmaWNpYWwgSUNEIGxvYWRlciBhbmQgdmFsaWRhdGlvbiBsYXllcnMgZm9yIFZ1bGthbiBkZXZlbG9wZXJzIG9uIFdpbmRvd3MgYW5kIExpbnV4LgogCiAjIyBDSSBCdWlsZCBTdGF0dXMKIHwgUGxhdGZvcm0gfCBCdWlsZCBTdGF0dXMgfApAQCAtMTEsMzIgKzExLDM2IEBACiAKICMjIEludHJvZHVjdGlvbgogCi1WdWxrYW4gaXMgYW4gRXhwbGljaXQgQVBJLCBlbmFibGluZyBkaXJlY3QgY29udHJvbCBvdmVyIGhvdyBHUFVzIGFjdHVhbGx5IHdvcmsuIE5vIChvciB2ZXJ5IGxpdHRsZSkgdmFsaWRhdGlvbgotb3IgZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSBpbnNpZGUgYSBWdWxrYW4gZHJpdmVyLiBBcHBsaWNhdGlvbnMgaGF2ZSBmdWxsIGNvbnRyb2wgYW5kIHJlc3BvbnNpYmlsaXR5LiBBbnkgZXJyb3JzIGluCi1ob3cgVnVsa2FuIGlzIHVzZWQgb2Z0ZW4gcmVzdWx0IGluIGEgY3Jhc2guIFRoaXMgcHJvamVjdCBwcm92aWRlcyBzdGFuZGFyZCB2YWxpZGF0aW9uIGxheWVycyB0aGF0IGNhbiBiZSBlbmFibGVkCi10byBlYXNlIGRldmVsb3BtZW50IGJ5IGhlbHBpbmcgZGV2ZWxvcGVycyB2ZXJpZnkgdGhlaXIgYXBwbGljYXRpb25zIGNvcnJlY3RseSB1c2UgdGhlIFZ1bGthbiBBUEkuCitWdWxrYW4gaXMgYW4gRXhwbGljaXQgQVBJLCBlbmFibGluZyBkaXJlY3QgY29udHJvbCBvdmVyIGhvdyBHUFVzIGFjdHVhbGx5IHdvcmsuIEJ5IGRlc2lnbiwgbWluaW1hbCBlcnJvciBjaGVja2luZyBpcyBkb25lIGluc2lkZQorYSBWdWxrYW4gZHJpdmVyLiBBcHBsaWNhdGlvbnMgaGF2ZSBmdWxsIGNvbnRyb2wgYW5kIHJlc3BvbnNpYmlsaXR5IGZvciBjb3JyZWN0IG9wZXJhdGlvbi4gQW55IGVycm9ycyBpbgoraG93IFZ1bGthbiBpcyB1c2VkIGNhbiByZXN1bHQgaW4gYSBjcmFzaC4gVGhpcyBwcm9qZWN0IHByb3ZpZGVzIFZ1bGthbiB2YWxpZGF0aW9uIGxheWVycyB0aGF0IGNhbiBiZSBlbmFibGVkCit0byBhc3Npc3QgZGV2ZWxvcG1lbnQgYnkgZW5hYmxpbmcgZGV2ZWxvcGVycyB0byB2ZXJpZnkgdGhlaXIgYXBwbGljYXRpb25zIGNvcnJlY3QgdXNlIG9mIHRoZSBWdWxrYW4gQVBJLgogCiBWdWxrYW4gc3VwcG9ydHMgbXVsdGlwbGUgR1BVcyBhbmQgbXVsdGlwbGUgZ2xvYmFsIGNvbnRleHRzIChWa0luc3RhbmNlKS4gVGhlIElDRCBsb2FkZXIgaXMgbmVjZXNzYXJ5IHRvCi1zdXBwb3J0IG11bHRpcGxlIEdQVXMgYW5kIHRoZSBWa0luc3RhbmNlIGxldmVsIFZ1bGthbiBjb21tYW5kcy4gIEFkZGl0aW9uYWxseSwgdGhlIGxvYWRlciBtYW5hZ2VzIGluc2VydGluZwotVnVsa2FuIGxheWVyIGxpYnJhcmllcywgaW5jbHVkaW5nIHZhbGlkYXRpb24gbGF5ZXJzIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgSUNELgorc3VwcG9ydCBtdWx0aXBsZSBHUFVzIGFuZCBWa0luc3RhbmNlLWxldmVsIFZ1bGthbiBjb21tYW5kcy4gIEFkZGl0aW9uYWxseSwgdGhlIGxvYWRlciBtYW5hZ2VzIGluc2VydGluZworVnVsa2FuIGxheWVyIGxpYnJhcmllcyBzdWNoIGFzIHZhbGlkYXRpb24gbGF5ZXJzIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgSUNELgogCiBUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgYXJlIGF2YWlsYWJsZSBpbiB0aGlzIHJlcG9zaXRvcnk6Ci0tIFZ1bGthbiBoZWFkZXIgZmlsZXMKKy0gW1Z1bGthbiBoZWFkZXIgZmlsZXNdKGluY2x1ZGUvdnVsa2FuLykKIC0gWypJQ0QgTG9hZGVyKl0obG9hZGVyLykKIC0gWypWYWxpZGF0aW9uIExheWVycypdKGxheWVycy8pCiAtIFsqTW9jayBJQ0QqXShpY2QvKQotLSBEZW1vcyBhbmQgdGVzdHMgZm9yIHRoZSBsb2FkZXIgYW5kIHZhbGlkYXRpb24gbGF5ZXJzCistIFsqRGVtb3MqXShkZW1vcy8pCistIFsqVGVzdHMqXSh0ZXN0cy8pCiAKLSMjIENvbnRyaWJ1dGluZworIyMgQ29udGFjdCBJbmZvcm1hdGlvbgorW1RvYmluZSBFaGxpc10obWFpbHRvOnRvYmluZUBnb29nbGUuY29tKQorW01hcmsgTG9ib2R6aW5za2ldKG1haWx0bzptYXJrQGx1bmFyZy5jb20pCiAKLUlmIHlvdSBpbnRlbmQgdG8gY29udHJpYnV0ZSwgdGhlIHByZWZlcnJlZCB3b3JrIGZsb3cgaXMgZm9yIHlvdSB0byBkZXZlbG9wIHlvdXIgY29udHJpYnV0aW9uCi1pbiBhIGZvcmsgb2YgdGhpcyByZXBvIGluIHlvdXIgR2l0SHViIGFjY291bnQgYW5kIHRoZW4gc3VibWl0IGEgcHVsbCByZXF1ZXN0LgotUGxlYXNlIHNlZSB0aGUgW0NPTlRSSUJVVElOR10oQ09OVFJJQlVUSU5HLm1kKSBmaWxlIGluIHRoaXMgcmVwb3NpdG9yeSBmb3IgbW9yZSBkZXRhaWxzCisjIyBJbmZvcm1hdGlvbiBmb3IgRGV2ZWxvcGluZyBvciBDb250cmlidXRpbmc6CisKK1BsZWFzZSBzZWUgdGhlIFtDT05UUklCVVRJTkddKENPTlRSSUJVVElORy5tZCkgZmlsZSBpbiB0aGlzIHJlcG9zaXRvcnkgZm9yIG1vcmUgZGV0YWlscy4KK1BsZWFzZSBzZWUgdGhlIFtHT1ZFUk5BTkNFXShHT1ZFUk5BTkNFLm1kKSBmaWxlIGluIHRoaXMgcmVwb3NpdG9yeSBmb3IgcmVwb3NpdG9yeSBtYW5hZ2VtZW50IGRldGFpbHMuCiAKICMjIEhvdyB0byBCdWlsZCBhbmQgUnVuCiAKIFtCVUlMRC5tZF0oQlVJTEQubWQpCi1pbmNsdWRlcyBkaXJlY3Rpb25zIGZvciBidWlsZGluZyBhbGwgdGhlIGNvbXBvbmVudHMsIHJ1bm5pbmcgdGhlIHZhbGlkYXRpb24gdGVzdHMgYW5kIHJ1bm5pbmcgdGhlIGRlbW8gYXBwbGljYXRpb25zLgorSW5jbHVkZXMgZGlyZWN0aW9ucyBmb3IgYnVpbGRpbmcgYWxsIGNvbXBvbmVudHMgYXMgd2VsbCBhcyBydW5uaW5nIHZhbGlkYXRpb24gdGVzdHMgYW5kIGRlbW8gYXBwbGljYXRpb25zLgogCiBJbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlIHRoZSB2YXJpb3VzIFZhbGlkYXRpb24gbGF5ZXJzIGlzIGluCiBbbGF5ZXJzL1JFQURNRS5tZF0obGF5ZXJzL1JFQURNRS5tZCkuCkBAIC00NCwyMyArNDgsMTMgQEAKIEFyY2hpdGVjdHVyZSBhbmQgaW50ZXJmYWNlIGluZm9ybWF0aW9uIGZvciB0aGUgbG9hZGVyIGlzIGluCiBbbG9hZGVyL0xvYWRlckFuZExheWVySW50ZXJmYWNlLm1kXShsb2FkZXIvTG9hZGVyQW5kTGF5ZXJJbnRlcmZhY2UubWQpLgogCi0jIyMjICoqTk9URSoqOiBVcGRhdGUgTnZpZGlhIERyaXZlcnMKLS0gQSByZWNlbnQgZ2xzbGFuZyBjaGFuZ2UgZXhwb3NlZCBhIGJ1ZyBpbiB0aGUgdGV4ZWwgZmV0Y2ggYmVoYXZpb3Igb24gTnZpZGlhIGRldmljZXMgdW5kZXIgY2VydGFpbiBzaXR1YXRpb25zLgotLSBQcmV2aW91c2x5LCB3ZSByZXZlcnRlZCB0aGUgZ2xzbGFuZyBjaGFuZ2Ugd2hpY2ggZXhwb3NlZCBpdC4KLS0gTnZpZGlhIGhhcyBzaW5jZSByZXNvbHZlZCB0aGUgaXNzdWUsIGFuZCB3ZSBhcmUgbm93IHJlbW92aW5nIHRoZSB3b3JrYXJvdW5kLgotLSBEcml2ZXIgaW5zdGFsbHMgd2l0aCB0aGUgZml4IGFyZSBhdmFpbGFibGUgb24gdGhlaXIgZG93bmxvYWQgcGFnZSwganVzdCBsb29rIGZvcjoKLSAtIExpbnV4IERyaXZlcnMgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDM2Ny4zNQotIC0gV2luZG93cyBEcml2ZXJzIHN0YXJ0aW5nIGF0IHZlcnNpb24gMzcyLjU0Ci0KICMjIExpY2Vuc2UKIFRoaXMgd29yayBpcyByZWxlYXNlZCBhcyBvcGVuIHNvdXJjZSB1bmRlciBhIEFwYWNoZS1zdHlsZSBsaWNlbnNlIGZyb20gS2hyb25vcyBpbmNsdWRpbmcgYSBLaHJvbm9zIGNvcHlyaWdodC4KIAogU2VlIENPUFlSSUdIVC50eHQgZm9yIGEgZnVsbCBsaXN0IG9mIGxpY2Vuc2VzIHVzZWQgaW4gdGhpcyByZXBvc2l0b3J5LgogCiAjIyBBY2tub3dsZWRnZW1lbnRzCi1XaGlsZSB0aGlzIHByb2plY3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHByaW1hcmlseSBieSBMdW5hckcsIEluYzsgdGhlcmUgYXJlIG1hbnkgb3RoZXIKK1doaWxlIHRoaXMgcHJvamVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgcHJpbWFyaWx5IGJ5IEx1bmFyRywgSW5jLiwgdGhlcmUgYXJlIG1hbnkgb3RoZXIKIGNvbXBhbmllcyBhbmQgaW5kaXZpZHVhbHMgbWFraW5nIHRoaXMgcG9zc2libGU6IFZhbHZlIENvcnBvcmF0aW9uLCBmdW5kaW5nCiBwcm9qZWN0IGRldmVsb3BtZW50OyBHb29nbGUgcHJvdmlkaW5nIHNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHZhbGlkYXRpb24gbGF5ZXJzOwogS2hyb25vcyBwcm92aWRpbmcgb3ZlcnNpZ2h0IGFuZCBob3N0aW5nIG9mIHRoZSBwcm9qZWN0LgotCi0K