SW5zdHJ1Y3Rpb25zIGZvciBVc2luZyB0aGUgRmxleCBpbiBhIFdlZWsgKEZpYVcpIFByb2plY3RzCgpUaGlzIGZvbGRlciBpcyB0aGUgRmxhc2ggQnVpbGRlciB3b3Jrc3BhY2UgZm9yIHRoaXMgRGF5IG9mIHRyYWluaW5nIGluIHRoZSBGbGV4IGluIGEgV2VlayB0cmFpbmluZyBzZXJpZXMgZm9yIEZsZXggNC41IGJldGEuDQoKRm9sbG93IHRoZSBzdGVwcyBiZWxvdyB0byBzZXQgdXAgdGhlIGZpbGVzIGZvciB0aGUgZXhlcmNpc2VzLg0NVGhlIFBERiBmaWxlcyBpbiB0aGlzIHppcCBjb250YWluIHRoZSB2aWRlbyB0cmFuc2NyaXB0cyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHZpZGVvcyBmb3IgdGhpcyBEYXkgb2YgdHJhaW5pbmcuDQ1JZiB5b3UgaGF2ZSBhbnkgY29tbWVudHMgb3IgcHJvYmxlbXMgd2l0aCB0aGVzZSBmaWxlcywgcGxlYXNlIHJlcG9ydCB0aGVtIHRvIHRoZSBGaWFXIGZvcnVtIChodHRwOi8vZm9ydW1zLmFkb2JlLmNvbS9jb21tdW5pdHkvZmxleC9mbGV4X2luYXdlZWspLgoKU2V0dGluZyB1cCB0aGUgZXhlcmNpc2VzIGluIGEgbmV3IEZsYXNoIEJ1aWxkZXIgd29ya3NwYWNlOgoKMS4gSW4gRmxhc2ggQnVpbGRlciwgc2VsZWN0IEZpbGUgPiBTd2l0Y2ggV29ya3NwYWNlID4gT3RoZXIuCjIuIENsaWNrIHRoZSBCcm93c2UgYnV0dG9uIGFuZCBuYXZpZ2F0ZSB0byB0aGUgRmlhV19EYXlYX1Byb2plY3RBcmNoaXZlIGZvbGRlci4KMy4gQ2xpY2sgdGhlIE9LIGJ1dHRvbiBmb3IgV2luZG93cyBvciBDaG9vc2UgYnV0dG9uIG9uIHRoZSBNYWMuIElmIHlvdSBhcmUgdXNpbmcgV2luZG93cywgYXQgdGhpcyBwb2ludCBGbGFzaCBCdWlsZGVyIHdpbGwgY2xvc2UgYW5kIHJlb3Blbi4KNC4gRm9yIE1hYywgQ2xpY2sgdGhlIE9LIGJ1dHRvbi4gRmxhc2ggQnVpbGRlciB3aWxsIGNsb3NlIGFuZCByZW9wZW4uLgo1LiBJbiBGbGFzaCBCdWlsZGVyLCBzZWxlY3QgRmlsZSA+IEltcG9ydMkuCjYuIEluIHRoZSBJbXBvcnQgZGlhbG9nLCBzZWxlY3QgR2VuZXJhbCA+IEV4aXN0aW5nIFByb2plY3RzIGludG8gV29ya3NwYWNlLiBDbGljayBOZXh0Lgo3LiBJbiB0aGUgSW1wb3J0IFByb2plY3RzIGRpYWxvZywgY2hvb3NlIHRoZSBTZWxlY3QgYXJjaGl2ZSBmaWxlIG9wdGlvbiBhbmQgY2xpY2sgQnJvd3NlLiBQb2ludCB0byB0aGUgbG9jYXRpb24gb2YgdGhlIERheVguemlwIGZpbGUgaW4gdGhlIHByb2plY3QgYXJjaGl2ZSBmaWxlIHlvdSBzYXZlZCB0byB5b3VyIGNvbXB1dGVyLgo4LiBDbGljayBPcGVuLiBZb3Ugc2hvdWxkIHNlZSBhbGwgb2YgdGhlIHByb2plY3QgZmlsZXMgbGlzdGVkIGluIHRoZSBQcm9qZWN0cyBzZWN0aW9uIG9mIHRoZSBkaWFsb2cuCjkuIENsaWNrIEZpbmlzaC4gSW4gdGhlIFBhY2thZ2UgRXhwbG9yZXIgdmlldywgeW91IHNob3VsZCBzZWUgYWxsIG9mIHRoZSBwcm9qZWN0IGZpbGVzIGZvciB0aGUgZGF5IG9mIGV4ZXJjaXNlcyBpbXBvcnRlZCBpbnRvIHlvdXIgd29ya3NwYWNlLgoK