ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CgpSRUFETUUKCiAgQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcmluZyBkYXRhIHNwZWNpZmllZCB3aXRoIFVSTAogIHN5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBDdXJsIGJ5IHJlYWRpbmcgdGhlIGN1cmwuMSBtYW4gcGFnZSBvciB0aGUKICBNQU5VQUwgZG9jdW1lbnQuIEZpbmQgb3V0IGhvdyB0byBpbnN0YWxsIEN1cmwgYnkgcmVhZGluZyB0aGUgSU5TVEFMTAogIGRvY3VtZW50LgoKICBsaWJjdXJsIGlzIHRoZSBsaWJyYXJ5IGN1cmwgaXMgdXNpbmcgdG8gZG8gaXRzIGpvYi4gSXQgaXMgcmVhZGlseQogIGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgdGhlIGxpYmN1cmwuMyBtYW4gcGFnZSB0bwogIGxlYXJuIGhvdyEKCiAgWW91IGZpbmQgYW5zd2VycyB0byB0aGUgbW9zdCBmcmVxdWVudCBxdWVzdGlvbnMgd2UgZ2V0IGluIHRoZSBGQVEgZG9jdW1lbnQuCgogIFN0dWR5IHRoZSBDT1BZSU5HIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhbmQgc2ltaWxhci4KCkNPTlRBQ1QKCiAgSWYgeW91IGhhdmUgcHJvYmxlbXMsIHF1ZXN0aW9ucywgaWRlYXMgb3Igc3VnZ2VzdGlvbnMsIHBsZWFzZSBjb250YWN0IHVzCiAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KCiAgTWFueSBtYWpvciBjb250cmlidXRvcnMgdG8gdGhlIHByb2plY3QgYXJlIGxpc3RlZCBpbiB0aGUgVEhBTktTIGRvY3VtZW50LgoKV0VCIFNJVEUKCiAgVmlzaXQgdGhlIGN1cmwgd2ViIHNpdGUgb3IgbWlycm9ycyBmb3IgdGhlIGxhdGVzdCBuZXdzOgoKICAgICAgICBTd2VkZW4gICAgLS0gaHR0cDovL2N1cmwuaGF4eC5zZS8KICAgICAgICBVUyAgICAgICAgLS0gaHR0cDovL2N1cmwuc2YubmV0LwogICAgICAgIEF1c3RyYWxpYSAtLSBodHRwOi8vY3VybC5wbGFuZXRtaXJyb3IuY29tLwoKRE9XTkxPQUQKCiAgVGhlIG9mZmljaWFsIGRvd25sb2FkIG1pcnJvciBzaXRlcyBhcmU6CgogICAgICAgIFN3ZWRlbiAgICAtLSBmdHA6Ly9mdHAuc3VuZXQuc2UvcHViL3d3dy91dGlsaXRpZXMvY3VybC8KICAgICAgICBTd2VkZW4gICAgLS0gaHR0cDovL2Nvb2wuaGF4eC5zZS9jdXJsLwogICAgICAgIEdlcm1hbnkgICAtLSBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3B1Yi91bml4L25ldHdvcmsvY3VybC8KICAgICAgICBBdXN0cmFsaWEgLS0gaHR0cDovL2N1cmwucGxhbmV0bWlycm9yLmNvbS9kb3dubG9hZC8KICAgICAgICBVUyAgICAgICAgLS0gaHR0cDovL2N1cmwuc291cmNlZm9yZ2UubmV0L2Rvd25sb2FkLwogICAgICAgIEhvbmdrb25nICAtLSBodHRwOi8vd3d3LmV4ZWN2ZS5uZXQvY3VybC8KCkNWUwoKICBUbyBkb3dubG9hZCB0aGUgdmVyeSBsYXRlc3Qgc291cmNlIG9mZiB0aGUgQ1ZTIHNlcnZlciBkbyB0aGlzOgoKICAgIGN2cyAtZCA6cHNlcnZlcjphbm9ueW1vdXNAY3ZzLmN1cmwuc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L2N1cmwgbG9naW4KCiAgKGp1c3QgcHJlc3MgZW50ZXIgd2hlbiBhc2tlZCBmb3IgcGFzc3dvcmQpCgogICAgY3ZzIC1kIDpwc2VydmVyOmFub255bW91c0BjdnMuY3VybC5zb3VyY2Vmb3JnZS5uZXQ6L2N2c3Jvb3QvY3VybCBjbyBjdXJsIAoKICAoeW91J2xsIGdldCBhIGRpcmVjdG9yeSBuYW1lZCBjdXJsIGNyZWF0ZWQsIGZpbGxlZCB3aXRoIHRoZSBzb3VyY2UgY29kZSkKCiAgICBjdnMgLWQgOnBzZXJ2ZXI6YW5vbnltb3VzQGN2cy5jdXJsLnNvdXJjZWZvcmdlLm5ldDovY3Zzcm9vdC9jdXJsIGxvZ291dAogICAgICAgIAogICh5b3UncmUgb2ZmIHRoZSBob29rISkKCk5PVElDRQoKICBDdXJsIGNvbnRhaW5zIHBpZWNlcyBvZiBzb3VyY2UgY29kZSB0aGF0IGlzIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OQogIEt1bmdsaWdhIFRla25pc2thIEj2Z3Nrb2xhbi4gVGhpcyBub3RpY2UgaXMgaW5jbHVkZWQgaGVyZSB0byBjb21wbHkgd2l0aCB0aGUKICBkaXN0cmlidXRpb24gdGVybXMuCg==