b3BlbkNyeXB0b2tpIFRlc3QgUHJvZ3JhbXMKClRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHByb2dyYW1zIGRlc2lnbmVkIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgb2YKb3BlbkNyeXB0b2tpIGFuZCBQS0NTIzExLiAgVGhlIHJlbHkgb24gU1RETEwncyBpbnN0YWxsZWQgdG8gdGhlIHN0YW5kYXJkIHN5c3RlbQpsb2NhdGlvbi4gIE1hbnkgb2YgdGhlIHByb2dyYW1zIGhhdmUgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHBhc3NpbmcgdGhlIHNsb3QKbnVtYmVyIHRvIHVzZSAoZGVmYXVsdCBpcyBzbG90IDApIGFzIHdlbGwgYXMgb3RoZXIgb3B0aW9ucy4gIEFsbCBwcm9ncmFtcyBleHBlY3QKdGhhdCB0aGUgYSBzbG90IGhhcyBiZWVuIGludGlhbGl6ZWQgdXNpbmcgcGtjc2NvbmYuICBUaGUgZXhwZWN0ZWQgdXNlciBwaW4gaXMKIjAxMjM0NTY3IiBhbmQgdGhpcyBjYW4gYWxzbyBiZSBzZXQgdXNpbmcgcGtjc2NvbmYuICBUaGUgZXhwZWN0ZWQgUElOcyBjYW4gYWxzbwpiZSBjaGFuZ2VkIGJ5IG1vZGlmeWluZyBERUZBVUxUX1VTRVJfUElOIGFuZCBERUZBVUxUX1NPX1BJTiBpbgppbmNsdWRlL3JlZ3Jlc3MuaC4KCkZvciBjb3JyZWN0IHRlc3RjYXNlIGV4ZWN1dGlvbiwgdGhlIHRva2VuIHNob3VsZCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYW5kCmFmdGVyIHJ1bm5pbmcgdGhlIHRlc3RjYXNlcy4KCmRyaXZlcgotLS0tLS0KVGhlIGRyaXZlciBwcm9ncmFtcyB0ZXN0cyBhbGwgb3BlbkNyeXB0b2tpIHRoYXQgZG8gbm90IGludm9sdmUgdG9rZW4KbWFuaXB1bGF0aW9uLiAgVGhpcyBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCB0ZXN0cyBzdWNoIGFzIFJTQSBrZXkKZ2VuZXJhdGlvbiwgQ0JDIGFuZCBFQ0IgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiwgYW5kIE1ENSBkaWdlc3RzLiAgCgppbml0X3RvawotLS0tLS0tLQpUaGlzIHByb2dyYW0gaW5pdGlhbGl6ZXMgYSB0b2tlbiB3aXRoIGEgbmFtZSBvZiAiTDEzIiwgYW5kIHNldHMgdGhlIHVzZXIgcGluIHRvCiIxMjM0NTY3OCIuCgpta29iagotLS0tLQpUaGlzIHByb2dyYW0gY3JlYXRlcyBhIGNlcnRpZmljYXRlIG9iamVjdCBvZiBjbGFzcyBDS09fQ0VSVElGSUNBVEUgYW5kIHR5cGUKQ0tDX1hfNTA5LiAgSXQgaXMgY3JlYXRlZCBhcyBhIHB1YmxpYyBvYmplY3QuCgpyc2Ffa2V5Z2VuCi0tLS0tLS0tLS0KVGhpcyB0ZXN0IHByb2dyYW0gZ2VuZXJhdGVzIGFuIFJTQSBLZXlwYWlyLgoKcnNhX3Rlc3QKLS0tLS0tLS0KVGhlcmUgYXJlIDMgdGVzdCBwcm9ncmFtcyBpbiB0aGlzIHN1Yi1kaXJlY3RvcnkuICBUaGUgZmlyc3QgaXMgcnNhX3Rlc3QuICBUaGlzCnByb2dyYW0gZW5jcnlwdHMgcmFuZG9tIGRhdGEgdXNpbmcgYSBrbm93biBSU0Ega2V5LiAgVGhlIGtleSBpbmZvcm1hdGlvbiBpcwpoYXJkY29kZWQgaW4gcnNhX3Rlc3QuYy4gIFRoZSBzZWNvbmQgcHJvZ3JhbXMsIHJzYV90ZXN0X2dlbmtleSwgZW5jcnlwdHMKcmFuZG9tIGRhdGEgdXNpbmcgYSBnZW5lcmF0ZWQgUlNBIGtleS4gIFRoaXMgdGVzdCBrZXkgZ2VuZXJhdGlvbiBhcyB3ZWxsIGFzCmVuY3J5cHRpb24uICBUaGUgdGhpcmQgcHJvZ3JhbSwgcnNhX3RocmVhZF90ZXN0LCB0ZXN0cyB0aGUgYWJpbGl0eSBvZgpvcGVuQ3J5cHRva2kgdG8gaGFuZGxlIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb24uICBJdCBzZXRzIHVwIGEgZ2l2ZW4gbnVtYmVyIG9mCnRocmVhZHMgKGRlZmF1bHQgaXMgMyksIHdpdGggZWFjaCBwZXJmb3JtaW5nIGFuIFJTQSBlbmNyeXB0aW9uIG9wZXJhdGlvbi4KCnNwZWVkCi0tLS0tClRoZSBzcGVlZCBwcm9ncmFtIGlzIGEgcGVyZm9ybWFuY2Ugb3JpZW50ZWQgdGVzdCBwcm9ncmFtLiAgSXQgdGltZXMgY2VydGFpbgpvcGVyYXRpb25zIG92ZXIgbXVsdGlwbGUgcnVucywgYW5kIGdpdmVzIG1pbiwgbWF4LCBhbmQgYXZlcmFnZSB0aW1lcyBmb3IgdGhlc2UKb3BlcmF0aW9ucy4gIFBlcmZvcm1hY2UgdGVzdHMgYXJlIHJ1biBmb3I6IDIwNDggYml0IFJTQSBrZXlnZW4sIDEwvTQgYml0IFJTQQprZXlnZW4sIDEwMjQgYml0IFJTQSBzaWduYXR1cmUgZ2VuZXJhdGUsIDEwMjQgYml0IFJTQSBzaWduYXR1cmUgdmVyaWZ5LCB0cmlwbGUKREVTIGVuY3J5cHQvZGVjcnlwdCBvbiBhIDEwSyBtZXNzYWdlLCBhbmQgU0hBMSBvbiBhIDEwSyBtZXNzYWdlLgoKdGVzdF9jcnlwdG8KLS0tLS0tLS0tLS0KClRoaXMgcHJvZ3JhbSB0ZXN0cyBERVMgYW5kIHRyaXBsZSBERVMgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiB1c2luZyBib3RoIEVDQgphbmQgQ0JDIG1vZGVzLiAgSXQgYWxzbyB0ZXN0cyBSU0EgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiB1c2luZyBnZW5lcmF0ZQprZXlzLgoKdGhyZWFkbWtvYmoKLS0tLS0tLS0tLS0KVGhpcyBwcm9ncmFtIGlzIHNpbWlsYXIgdG8gbWtvYmosIGV4Y2VwdCB0aGF0IGl0IHNwYXducyBtdWx0aXBsZSAoZGVmYXVsdCA1KQp0aHJlYWRzIHRvIGNyZWF0ZSBvYmplY3RzLgoKdG9rX29iagotLS0tLS0tClRoaXMgcHJvZ3JhbSBpcyB1c2VkIHRvIHRlc3Qgb2JqZWN0IGNyZWF0aW9uIGFuZCBtb2RpZmljYXRpb24uICBUaGUgdG9rZW4gZG9lcwpub3QgbmVlZCB0byBiZSBpbnRpdGlhbGl6ZWQgdG8gdXNlIHRoaXMgYXBwbGljYXRpb24uICBXaGVuIHJ1biwgYSB1c2VyIGlzCnByZXNlbnRlZCB3aXRoIGEgbWVudS4gIEZyb20gdGhlcmUsIHRoZSB1c2VyIG11c3QgaW5pdGlhbGl6ZSB0aGUgdG9rZW4gYW5kIHNldAp0aGUgdXNlciBQSU4gaWYgdGhpcyBoYXMgbm90IGJlZW4gZG9uZSBwcmV2aW91c2x5LiAgVGhlIG1lbnUgY2hvaWNlIGZvciBzZXR0aW5nCnRoZSB1c2VyIFBJTiBzZXRzIGl0IHRvICIxMjM0NTY3OCIuCgoKRm9yIGhlbHAsIHNlbmQgbWFpbCB0byB0aGUgb3BlbkNyeXB0b2tpIG1haWxpbmcgbGlzdCBhdApvcGVuY3J5cHRva2ktdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0Cg==