VGhpcyBpcyB0aGUgVk1TIHBvcnQgb2YgR05VIE1ha2UuCgpJdCBpcyBiYXNlZCBvbiB0aGUgVk1TIHBvcnQgb2YgR05VIE1ha2UgMy42MCBieSBNaWtlIE1vcmV0dGkuCgpUaGlzIHBvcnQgd2FzIGRvbmUgYnkgS2xhdXMgS+RtcGYgPGtrYWVtcGZAcHJvZ2lzLmRlPiBvZgpwcm9HSVMgU29mdHdhcmUsIEFhY2hlbiwgR2VybWFueS4KClRvIGJ1aWxkIE1ha2UsIHNpbXBseSB0eXBlIEBtYWtlZmlsZS4gIFRoaXMgc2hvdWxkIGNvbXBpbGUgYWxsIHRoZQpuZWNlc3NhcnkgZmlsZXMgYW5kIGxpbmsgTWFrZS4gIFRoZXJlIGlzIGFsc28gYSBmaWxlIGNhbGxlZAptYWtlZmlsZS52bXMuICBJZiB5b3UgYWxyZWFkeSBoYXZlIEdOVSBNYWtlIGJ1aWx0IHlvdSBjYW4ganVzdCB1c2UKTWFrZSB3aXRoIHRoaXMgbWFrZWZpbGUgdG8gcmVidWlsZC4KCkhlcmUgYXJlIHNvbWUgbm90ZXMgYWJvdXQgR05VIE1ha2UgZm9yIFZNUzoKClRoZSB2YXJpYWJsZSAkXiBzZXBhcmF0ZXMgZmlsZXMgd2l0aCBjb21tYXMgaW5zdGVhZCBvZiBzcGFjZXMgKEl0J3MgdGhlCm5hdHVyYWwgdGhpbmcgdG8gZG8gZm9yIFZNUykuCgpTZWUgZGVmYXVsdHMuYyBmb3IgVk1TIGRlZmF1bHQgc3VmZml4ZXMgYW5kIG15IGRlZmluaXRpb25zIGZvciBkZWZhdWx0CnJ1bGVzIGFuZCB2YXJpYWJsZXMuCgpUaGUgc2hlbGwgZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIHlldC4KCkxvYWQgYXZlcmFnZSByb3V0aW5lcyBoYXZlbid0IGJlZW4gaW1wbGVtZW50ZWQgZm9yIFZNUyB5ZXQuCgpUaGUgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yeSBmb3IgaW5jbHVkaW5nIG90aGVyIG1ha2VmaWxlcyBpcwpTWVMkU1lTUk9PVDpbU1lTTElCXSAoSSBkb24ndCByZW1lbWJlciB3aHkgSSBkaWRuJ3QganVzdCB1c2UKU1lTJExJQlJBUlk6IGluc3RlYWQ7IG1heWJlIGl0IHdvdWxkbid0IHdvcmsgdGhhdCB3YXkpLgoKVGhlIGRlZmF1bHQgbWFrZWZpbGVzIG1ha2UgbG9va3MgZm9yIGFyZTogbWFrZWZpbGUudm1zLCBnbnVtYWtlZmlsZSwgbWFrZWZpbGUuLAphbmQgZ251bWFrZWZpbGUuIC4KClRoZSBzdGF0KCkgZnVuY3Rpb24gYW5kIGhhbmRsaW5nIG9mIHRpbWUgc3RhbXBzIGluIFZNUyBpcyBicm9rZW4sIHNvIEkKcmVwbGFjZWQgaXQgd2l0aCBhIGhhY2sgaW4gdm1zZnVuY3Rpb25zLmMuIEkgd2lsbCBwcm92aWRlIGEgZnVsbCByZXdyaXRlCnNvbWV3aGVyZSBpbiB0aGUgZnV0dXJlLiBCZSB3YXJuZWQsIHRoZSB0aW1lIHJlc29sdXRpb24gaW5zaWRlIG1ha2UgaXMKbGVzcyB0aGFuIHdoYXQgdm1zIHByb3ZpZGVzLiBUaGlzIG1pZ2h0IGJlIGEgcHJvYmxlbSBvbiB0aGUgZmFzdGVyIEFscGhhcy4KCllvdSBjYW4gdXNlIGEgOiBpbiBhIGZpbGVuYW1lIG9ubHkgaWYgeW91IHByZWNlZWQgaXQgd2l0aCBhIGJhY2tzbGFzaCAoJ1wnKS4KRS5nLi0gaG9iYmVzXDpbYm9nYXMuZmlsZXNdCgpNYWtlIGlnbm9yZXMgc3VjY2VzcywgaW5mb3JtYXRpb25hbCwgb3Igd2FybmluZyBlcnJvcnMgKC1TLSwgLUktLCBvciAtVy0pLgpCdXQgaXQgd2lsbCBzdG9wIG9uIC1FLSBhbmQgLUYtIGVycm9ycy4gKHVubGVzcyB5b3UgZG8gc29tZXRoaW5nIHRvIG92ZXJyaWRlCnRoaXMgaW4geW91ciBtYWtlZmlsZSwgb3Igd2hhdGV2ZXIpLgoKUmVtb3RlIHN0dWZmIGlzbid0IGltcGxlbWVudGVkIHlldC4KCk11bHRpcGxlIGxpbmUgRENMIGNvbW1hbmRzLCBzdWNoIGFzICJpZiIgc3RhdGVtZW50cywgbXVzdCBiZSBwdXQgaW5zaWRlCmNvbW1hbmQgZmlsZXMuICBZb3UgY2FuIHJ1biBhIGNvbW1hbmQgZmlsZSBieSB1c2luZyBcQC4KCgpDaGFuZ2UgaGlzdG9yeToKCjMuNzYueAo9PT09PT0KQWRkZWQgVk1TIGhlbHAgdmVyc2lvbiAobWFrZS5obHApIG9mIHRoZSBVbml4IG1hbiBwYWdlLiBUbyBpbnRlZ3JhdGUKdGhhdCB3aXRoIGFuIGV4aXN0aW5nIEhlbHAgbGlicmFyeSB1c2UgYSBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZwogJGxpYi9pbnMvaGVscCBzeXMkaGVscDpoZWxwbGliLmhsYiBtYWtlLmhscAozLjc0LjMKPT09PT09CkxvdHMgb2YgZGVmYXVsdCBzZXR0aW5ncyBhcmUgYWRhcHRlZCBmb3IgVk1TLiBTZWUgZGVmYXVsdC5jLgoKTG9uZyBjb21tYW5kIGxpbmVzIGFyZSBub3cgY29udmVydGVkIHRvIGNvbW1hbmQgZmlsZXMuCgpDb21tYSAoJywnKSBhcyBhIHNlcGFyYXRvciBpcyBub3cgYWxsb3dlZC4gU2VlIG1ha2VmaWxlLnZtcyBmb3IgYW4gZXhhbXBsZS4KCg==