QXV0aG9yOiBK9nJuIEhhcnRyb3RoCgpERVNDUklQVElPTgoKKElmIHlvdSdyZSBvbmx5IGxvb2tpbmcgZm9yIHByZWNvbXBpbGVkIHdpbjMyIGJpbmFyaWVzLCBnbyB2aXNpdApodHRwczovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC5odG1sKQoKUGFja2FnaW5nIG9mIHRoZSBjdXJsIGJpbmFyaWVzIGZvciBXaW4zMiBzaG91bGQgYXQgdGhpcyBwb2ludCBpbiB0aW1lIGJlIGJhc2VkCm9uIHRoZSBJbmZvWmlwICh6aXAvdW56aXApIGFyY2hpdmVyIGZhbWlseSBhcyB0aGUgZGUtZmFjdG8gc3RhbmRhcmQgZm9yCldpbmRvd3MgYXJjaGl2ZXMuIEEgcGFja2FnZSBzaG91bGQgY29udGFpbiB0aGUgbWFpbiBiaW5hcnkgY3VybC5leGUgYWxvbmcgd2l0aAp0aGUgYXBwcm9wcmlhdGUgZG9jdW1lbnRhdGlvbiBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiBmaWxlcy4gRm9yIGRldmVsb3BtZW50CnJlbGVhc2VzLCB5b3Ugc2hvdWxkIGFsc28gaW5jbHVkZSB0aGUgaGVhZGVyIGRpcmVjdG9yeSBhbmQgcHJvYmFibHkgdGhlCmNvbXBpbGVkIGJpbmFyaWVzIG9mIGxpYmN1cmwgYW5kIHRoZSBhcHByb3ByaWF0ZSBNYWtlZmlsZXMvcHJvamVjdCBkZWZpbml0aW9uCmZpbGVzIGZvciB0aGUgY29tcGlsZXIgdXNlZC4KCkEgc2ltcGxlIHBhY2thZ2luZyBtZWNoYW5pc20gY2FuIGJlIGJhc2VkIG9uIGEgc2V0IG9mIGJhdGNoIGZpbGVzIHdoaWNoIGNhbGwKemlwLmV4ZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmaWxlcyBmcm9tIHRoZSBjdXJsIGRpc3RyaWJ1dGlvbiAtIHNlZSB0aGUKc2FtcGxlcyBpbmNsdWRlZCBiZWxvdyAoTG9uZyBsaW5lcyBoYXZlIGJlZW4gc3BsaXQgd2l0aCAiXCIgYXMgdGhlIHNwbGl0Cm1hcmtlciwgeW91J2xsIHdhbnQgdG8gcmVqb2luIHRoZSBwaWVjZXMgdG8gYmUgYWxsIG9uIG9uZSBsaW5lIGluIHRoZSBiYXRjaApmaWxlKS4gQ2FsbCBhbnkgb2YgdGhlc2UgYmF0Y2ggZmlsZXMgLSBhZnRlciBjb21waWxpbmcgdGhlIGN1cmwgYmluYXJpZXMgLQp3aXRoIGEgc2luZ2xlIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXZlIGZpbGUgdG8gYmUgY3JlYXRlZC4KCkl0IGlzIGltcGxpY2l0ZWx5IGFzc3VtZWQgdGhhdCBhbGwgb2YgdGhlIGJpbmFyeSBmaWxlcyAoY3VybC5leGUsIGxpYmN1cmwuYSwKZXRjKSBoYXZlIHByZXZpb3VzbHkgYmVlbiBjb3BpZWQgdG8gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoZSBjdXJsIHNvdXJjZQpwYWNrYWdlICh0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBtYWluIFJFQURNRSByZXNpZGVzKSwgYmVjYXVzZSB0aGF0IGlzIHdoZXJlCnRoZXkgc2hvdWxkIGVuZCB1cCBpbiB0aGUgemlwIGFyY2hpdmUuIFRoZSBhcmNoaXZlIHNob3VsZCAqbm90KiBiZSBidWlsdCB3aXRoCmFic29sdXRlIHBhdGggaW5mb3JtYXRpb24gYmVjYXVzZSB0aGUgdXNlciB3aWxsIHdhbnQgdG8gbG9jYWxseSBleHRyYWN0IHRoZQphcmNoaXZlIGNvbnRlbnRzIGFuZCBzaGlmdCB0aGUgYmluYXJpZXMgdG8gaGlzIGV4ZWN1dGFibGUgZGlyZWN0b3J5LgoKU0NSSVBUX1RFTVBMQVRFUwoKY3VybHBrZy5iYXQ6Cgl6aXAgLTkgJTEgY3VybC5leGUgQ0hBTkdFUyBMRUdBTCBNUEwtMS4wLnR4dCBSRUFETUUgXAoJIGRvY3MvRkFRIGRvY3MvRkVBVFVSRVMgZG9jcy9SRUFETUUuY3VybCBkb2NzL1JFQURNRS53aW4zMiBkb2NzL1RPRE8KCmN1cmxkZXZwa2cuYmF0OgoJemlwIC05ICUxIGN1cmwuZXhlIGluY2x1ZGVcUkVBRE1FIGluY2x1ZGVcY3VybFwqLmggQ0hBTkdFUyBkb2NzXCogXAoJICBjdXJsLnNwZWMgY3VybC1zc2wuc3BlYyBMRUdBTCBsaWIvTWFrZWZpbGUubTMyIHNyYy9NYWtlZmlsZS5tMzIgXAoJICBsaWJjdXJsLmEgbGliY3VybC5kbGwgbGliY3VybGRsbC5hIE1QTC0xLjAudHh0IFJFQURNRQoKUFJPQ0VEVVJFX0VYQU1QTEUKCkEgc3RhbmRhcmQgcGFja2FnaW5nIHJvdXRpbmUgKGZvciBNaW5nVzMyKSB1c2luZyB0aGUgYWJvdmUgYmF0Y2ggZmlsZXMgY291bGQKZ28gbGlrZSB0aGlzOgooTm8gU1NMKQkJCQkJKFdpdGggU1NMKQpjZCA8Y3VybC1zb3VyY2VkaXI+XGxpYgkJCWNkIDxjdXJsLXNvdXJjZWRpcj5cbGliCm1ha2UgLWYgTWFrZWZpbGUubTMyCQkJbWFrZSAtZiBNYWtlZmlsZS5tMzIgU1NMPTEKY2QgLi5cc3JjCQkJCQljZCAuLlxzcmMKbWFrZSAtZiBNYWtlZmlsZS5tMzIJCQltYWtlIC1mIE1ha2VmaWxlLm0zMiBTU0w9MQpjZCAuLgkJCQkJCWNkIC4uCmNvcHkgbGliXGxpYmN1cmwuYSAuCQkJY29weSBsaWJcbGliY3VybC5hIC4KY29weSBzcmNcY3VybC5leGUgLgkJCWNvcHkgc3JjXGN1cmwuZXhlIC4KY3VybHBrZyBjdXJsLXdpbjMyLW5vc3NsLnppcAkJY3VybHBrZyBjdXJsLXdpbjMyLXNzbC56aXAK