VGhlIFogU2hlbGwgaXMgY29weXJpZ2h0IChjKSAxOTkyLTIwMDkgUGF1bCBGYWxzdGFkLCBSaWNoYXJkIENvbGVtYW4sClpvbHThbiBIaWR26WdpLCBBbmRyZXcgTWFpbiwgUGV0ZXIgU3RlcGhlbnNvbiwgU3ZlbiBXaXNjaG5vd3NreSwgYW5kCm90aGVycy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBJbmRpdmlkdWFsIGF1dGhvcnMsIHdoZXRoZXIgb3Igbm90CnNwZWNpZmljYWxseSBuYW1lZCwgcmV0YWluIGNvcHlyaWdodCBpbiBhbGwgY2hhbmdlczsgaW4gd2hhdCBmb2xsb3dzLCB0aGV5CmFyZSByZWZlcnJlZCB0byBhcyBgdGhlIFpzaCBEZXZlbG9wbWVudCBHcm91cCcuICBUaGlzIGlzIGZvciBjb252ZW5pZW5jZQpvbmx5IGFuZCB0aGlzIGJvZHkgaGFzIG5vIGxlZ2FsIHN0YXR1cy4gIFRoZSBaIHNoZWxsIGlzIGRpc3RyaWJ1dGVkIHVuZGVyCnRoZSBmb2xsb3dpbmcgbGljZW5jZTsgYW55IHByb3Zpc2lvbnMgbWFkZSBpbiBpbmRpdmlkdWFsIGZpbGVzIHRha2UKcHJlY2VkZW5jZS4KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIHdpdGhvdXQgd3JpdHRlbiBhZ3JlZW1lbnQgYW5kIHdpdGhvdXQKbGljZW5jZSBvciByb3lhbHR5IGZlZXMsIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzCnNvZnR3YXJlIGFuZCB0byBkaXN0cmlidXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQpwdXJwb3NlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nCnR3byBwYXJhZ3JhcGhzIGFwcGVhciBpbiBhbGwgY29waWVzIG9mIHRoaXMgc29mdHdhcmUuCgpJbiBubyBldmVudCBzaGFsbCB0aGUgWnNoIERldmVsb3BtZW50IEdyb3VwIGJlIGxpYWJsZSB0byBhbnkgcGFydHkgZm9yCmRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBhcmlzaW5nIG91dApvZiB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uLCBldmVuIGlmIHRoZSBac2gKRGV2ZWxvcG1lbnQgR3JvdXAgaGF2ZSBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlLgoKVGhlIFpzaCBEZXZlbG9wbWVudCBHcm91cCBzcGVjaWZpY2FsbHkgZGlzY2xhaW0gYW55IHdhcnJhbnRpZXMsIGluY2x1ZGluZywKYnV0IG5vdCBsaW1pdGVkIHRvLCB0aGUgaW1wbGllZCB3YXJyYW50aWVzIG9mIG1lcmNoYW50YWJpbGl0eSBhbmQgZml0bmVzcwpmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuICBUaGUgc29mdHdhcmUgcHJvdmlkZWQgaGVyZXVuZGVyIGlzIG9uIGFuICJhcyBpcyIKYmFzaXMsIGFuZCB0aGUgWnNoIERldmVsb3BtZW50IEdyb3VwIGhhdmUgbm8gb2JsaWdhdGlvbiB0byBwcm92aWRlCm1haW50ZW5hbmNlLCBzdXBwb3J0LCB1cGRhdGVzLCBlbmhhbmNlbWVudHMsIG9yIG1vZGlmaWNhdGlvbnMuCg==