IyBUaGlzIGlzIGEgc3BlY2lhbGl6ZWQgdGVzdCBmb3IgY2hlY2tpbmcsIHdoZW4gUENSRTIgaXMgY29tcGlsZWQgd2l0aCB0aGUKIyBFQkNESUMgb3B0aW9uIGJ1dCBpbiBhbiBBU0NJSSBlbnZpcm9ubWVudCwgdGhhdCBuZXdsaW5lLCB3aGl0ZSBzcGFjZSwgYW5kIFxjCiMgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nLiBJdCBjYXRjaGVzIGNhc2VzIHdoZXJlIGV4cGxpY2l0IHZhbHVlcyBzdWNoIGFzIDB4MGEKIyBoYXZlIGJlZW4gdXNlZCBpbnN0ZWFkIG9mIG5hbWVzIGxpa2UgQ0hBUl9MRi4gTmVlZGxlc3MgdG8gc2F5LCBpdCBpcyBub3QgYQojIGdlbnVpbmUgRUJDRElDIHRlc3QhIEluIHBhdHRlcm5zLCBhbHBoYWJldGljIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3cgYQojIGJhY2tzbGFzaCBtdXN0IGJlIGluIEVCQ0RJQyBjb2RlLiBJbiBkYXRhLCBOTCwgTkVMLCBMRiwgRVNDLCBhbmQgREVMIG11c3QgYmUKIyBpbiBFQkNESUMsIGJ1dCBjYW4gb2YgY291cnNlIGJlIHNwZWNpZmllZCBhcyBlc2NhcGVzLgoKIyBUZXN0IGRlZmF1bHQgbmV3bGluZSBhbmQgdmFyaWF0aW9ucwoKL15BL20KICAgIEFCQwogICAgMTJceDE1QUJDCgovXkEvbSxuZXdsaW5lPWFueQogICAgMTJceDE1QUJDCiAgICAxMlx4MGRBQkMKICAgIDEyXHgwZFx4MTVBQkMKICAgIDEyXHgyNUFCQwoKL15BL20sbmV3bGluZT1hbnljcmxmCiAgICAxMlx4MTVBQkMKICAgIDEyXHgwZEFCQwogICAgMTJceDBkXHgxNUFCQwogICAgKiogRmFpbAogICAgMTJceDI1QUJDCgojIFRlc3QgXGgKCi9eQVyILwogICAgQSBCCiAgICBBXHg0MUIgCgojIFRlc3QgXEgKCi9eQVzILwogICAgQUIKICAgIEFceDQyQiAKICAgICoqIEZhaWwKICAgIEEgQgogICAgQVx4NDFCIAoKIyBUZXN0IFxSCgovXkFc2S8KICAgIEFceDE1QgogICAgQVx4MGRCCiAgICBBXHgyNUIKICAgIEFceDBiQgogICAgQVx4MGNCCiAgICAqKiBGYWlsCiAgICBBIEIKCiMgVGVzdCBcdgoKL15BXKUvCiAgICBBXHgxNUIKICAgIEFceDBkQgogICAgQVx4MjVCCiAgICBBXHgwYkIKICAgIEFceDBjQgogICAgKiogRmFpbAogICAgQSBCCgojIFRlc3QgXFYKCi9eQVzlLwogICAgQSBCCiAgICAqKiBGYWlsCiAgICBBXHgxNUIKICAgIEFceDBkQgogICAgQVx4MjVCCiAgICBBXHgwYkIKICAgIEFceDBjQgogICAgCiMgRm9yIHJlcGVhdGVkIGl0ZW1zLCB1c2UgYW4gYXRvbWljIGdyb3VwIHNvIHRoYXQgdGhlIG91dHB1dCBpcyB0aGUgc2FtZQojIGZvciBERkEgbWF0Y2hpbmcgKG90aGVyd2lzZSBpdCBtYXkgc2hvdyBtdWx0aXBsZSBtYXRjaGVzKS4KCiMgVGVzdCBcaCsKCi9eQSg/PlyIKykvCiAgICBBIEIKCiMgVGVzdCBcSCsKCi9eQSg/PlzIKykvCiAgICBBQgogICAgKiogRmFpbAogICAgQSBCCgojIFRlc3QgXFIrCgovXkEoPz5c2SspLwogICAgQVx4MTVCCiAgICBBXHgwZEIKICAgIEFceDI1QgogICAgQVx4MGJCCiAgICBBXHgwY0IKICAgICoqIEZhaWwKICAgIEEgQgoKIyBUZXN0IFx2KwoKL15BKD8+XKUrKS8KICAgIEFceDE1QgogICAgQVx4MGRCCiAgICBBXHgyNUIKICAgIEFceDBiQgogICAgQVx4MGNCCiAgICAqKiBGYWlsCiAgICBBIEIKCiMgVGVzdCBcVisKCi9eQSg/PlzlKykvCiAgICBBIEIKICAgICoqIEZhaWwKICAgIEFceDE1QgogICAgQVx4MGRCCiAgICBBXHgyNUIKICAgIEFceDBiQgogICAgQVx4MGNCCiAgICAKIyBUZXN0IFxjIGZ1bmN0aW9uYWxpdHkgCiAgICAKL1yDQFyDQVyDYlyDQ1yDZFyDRVyDZlyDR1yDaFyDSVyDSlyDS1yDbFyDbVyDTlyDT1yDcFyDcVyDclyDU1yDVFyDdVyDVlyDV1yDWFyDeVyDWi8KICAgIFx4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MGNceDBkXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmCgovXINbXINcXINdXINeXINfLwogICAgXHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYKICAgIAovXIM/LwogICAgQVx4ZmZCCgovXIMmLwoKIyBFbmQK