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ZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB3aXRoCiAgICB1bmRlcnNjb3JlcyByZXBsYWNlZCBieSBkYXNoZXMuICBJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhhdCwgeW91IGNhbgogICAgcGFzcyB0aGUgaW50ZW5kZWQgbmFtZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuCgogICAgQWxsIGtleXdvcmQgYXJndW1lbnRzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIHVuZGVybHlpbmcgY29tbWFuZCBjbGFzcy4KICAgIEZvciB0aGUgYGBwYXJhbXNgYCBhcmd1bWVudCwgYW55IGRlY29yYXRlZCBwYXJhbXMgYXJlIGFwcGVuZGVkIHRvCiAgICB0aGUgZW5kIG9mIHRoZSBsaXN0LgoKICAgIE9uY2UgZGVjb3JhdGVkIHRoZSBmdW5jdGlvbiB0dXJucyBpbnRvIGEgOmNsYXNzOmBDb21tYW5kYCBpbnN0YW5jZQogICAgdGhhdCBjYW4gYmUgaW52b2tlZCBhcyBhIGNvbW1hbmQgbGluZSB1dGlsaXR5IG9yIGJlIGF0dGFjaGVkIHRvIGEKICAgIGNvbW1hbmQgOmNsYXNzOmBHcm91cGAuCgogICAgOnBhcmFtIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLiAgVGhpcyBkZWZhdWx0cyB0byB0aGUgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBuYW1lIHdpdGggdW5kZXJzY29yZXMgcmVwbGFjZWQgYnkgZGFzaGVzLgogICAgOnBhcmFtIGNsczogdGhlIGNvbW1hbmQgY2xhc3MgdG8gaW5zdGFudGlhdGUuICBUaGlzIGRlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbW1hbmRgLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4xCiAgICAgICAgVGhpcyBkZWNvcmF0b3IgY2FuIGJlIGFwcGxpZWQgd2l0aG91dCBwYXJlbnRoZXNlcy4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMQogICAgICAgIFRoZSBgYHBhcmFtc2BgIGFyZ3VtZW50IGNhbiBiZSB1c2VkLiBEZWNvcmF0ZWQgcGFy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cnkgdG8gZGV0ZWN0IGl0IGJ5CiAgICBpbnNwZWN0aW5nIHRoZSBzdGFjayBmcmFtZXMuIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGRldGVjdCB0aGUKICAgIHZlcnNpb24sIHNvIGl0IG11c3QgbWF0Y2ggdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlLgoKICAgIDpwYXJhbSB2ZXJzaW9uOiBUaGUgdmVyc2lvbiBudW1iZXIgdG8gc2hvdy4gSWYgbm90IHByb3ZpZGVkLCBDbGljawogICAgICAgIHdpbGwgdHJ5IHRvIGRldGVjdCBpdC4KICAgIDpwYXJhbSBwYXJhbV9kZWNsczogT25lIG9yIG1vcmUgb3B0aW9uIG5hbWVzLiBEZWZhdWx0cyB0byB0aGUgc2luZ2xlCiAgICAgICAgdmFsdWUgYGAiLS12ZXJzaW9uImBgLgogICAgOnBhcmFtIHBhY2thZ2VfbmFtZTogVGhlIHBhY2thZ2UgbmFtZSB0byBkZXRlY3QgdGhlIHZlcnNpb24gZnJvbS4gSWYKICAgICAgICBub3QgcHJvdmlkZWQsIENsaWNrIHdpbGwgdHJ5IHRvIGRldGVjdCBpdC4KICAgIDpwYXJhbSBwcm9nX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBDTEkgdG8gc2hvdyBpbiB0aGUgbWVzc2FnZS4gSWYgbm90CiAgICAgICAgcHJvdmlkZWQsIGl0IHdpbGwgYmUgZGV0ZWN0ZWQgZnJvbSB0aGUgY29tbWFuZC4KICAgIDpwYXJhbSBtZXNzYWdlOiBUaGUgbWVzc2FnZSB0byBzaG93LiBUaGUgdmFsdWVzIGBgJShwcm9nKXNgYCwKICAgICAgICBgYCUocGFja2FnZSlzYGAsIGFuZCBgYCUodmVyc2lvbilzYGAgYXJlIGF2YWlsYWJsZS4gRGVmYXVsdHMgdG8KICAgICAgICBgYCIlKHByb2cpcywgdmVyc2lvbiAlKHZlcnNpb24pcyJgYC4KICAgIDpwYXJhbSBrd2FyZ3M6IEV4dHJhIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIDpmdW5jOmBvcHRpb25gLgogICAgOnJhaXNlIFJ1bnRpbWVFcnJvcjogYGB2ZXJzaW9uYGAgY291bGQg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