VGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgdGVzdHMgZm9yIEdDQy4gRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQKdGhlIEMgdGVzdHN1aXRlLCBzZWUgUkVBRE1FLmdjYy4KClRoZSBkcml2ZXIgdGhhdCBydW5zIHRoaXMgdGVzdHN1aXRlIGlzIGNhbGxlZCBEZWphR251IGFuZCB5b3Ugd2lsbApuZWVkIGEgY3VycmVudCBEZWphR251IHNuYXBzaG90LCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQpmdHA6Ly9nY2MuZ251Lm9yZy9wdWIvZ2NjL2luZnJhc3RydWN0dXJlLCBmb3IgZXhhbXBsZS4KClRoZXNlIHRlc3RzIGFyZSBpbmNsdWRlZCAiYXMgaXMiLiBJZiBhbnkgb2YgdGhlbSBmYWlscywgZG8gbm90IHJlcG9ydAphIGJ1Zy4gIEJ1ZyByZXBvcnRzIGZvciBEZWphR251IGNhbiBnbyB0byBidWctZGVqYWdudUBnbnUub3JnLgpEaXNjdXNzaW9uIGFuZCBjb21tZW50cyBhYm91dCB0aGlzIHRlc3RzdWl0ZSBzaG91bGQgYmUgc2VudCB0bwpnY2NAZ2NjLmdudS5vcmc7IGFkZGl0aW9ucyBhbmQgY2hhbmdlcyBzaG91bGQgYmUgc2VudCB0bwpnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZy4KClRoZSBlbnRpcmUgdGVzdHN1aXRlIGlzIGludm9rZWQgYnkgYG1ha2UgY2hlY2tgIGF0IHRoZSB0b3AgbGV2ZWwgb2YKdGhlIEdDQyB0cmVlLiBgbWFrZSBjaGVjay1nKytgIHJ1bnMgdGhlIEMrKyB0ZXN0c3VpdGUgb25seS4KClNUUlVDVFVSRSBPRiBUSEUgRysrIFRFU1RTVUlURQoKICBnKysuZGcgdGVzdHM6CgogIEFsbCBuZXcgdGVzdHMgc2hvdWxkIGJlIHBsYWNlZCBpbiBhbiBhcHByb3ByaWF0ZSBzdWJkaXJlY3Rvcnkgb2YgZysrLmRnLgoKICBnKysub2xkLWRlamEgdGVzdHM6CgogIGcrKy5iZW5qYW1pbglUZXN0cyBieSBCZW5qYW1pbiBLb3oKICBnKysuYm9iCiAgZysrLmJyZW5kYW4JVGVzdHMgYnkgQnJlbmRhbiBLZWhvZQogIGcrKy5idWdzCiAgZysrLmVoICAJVGVzdHMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZwogIGcrKy5leHQgIAlUZXN0cyBmb3IgZysrIGV4dGVuc2lvbnMKICBnKysuZ2IgIAlUZXN0cyBieSBHZXJhbGQgQmF1bWdhcnRuZXIKICBnKysuamFzb24JVGVzdHMgYnkgSmFzb24gTWVyaWxsCiAgZysrLmplZmYJVGVzdHMgYnkgSmVmZnJleSBBIExhdwogIGcrKy5tYXJ0aW4JVGVzdHMgYnkgTWFydGluIHYuIEz2d2lzCiAgZysrLm1pa2UJVGVzdHMgYnkgTWlrZSBTdHVtcAogIGcrKy5uaWtsYXMJVGVzdHMgYnkgTmlrbGFzIEhhbGxxdmlzdAogIGcrKy5ucyAgCVRlc3RzIGZvciBuYW1lc3BhY2VzCiAgZysrLm90aGVyCiAgZysrLnB0ICAJVGVzdHMgZm9yIHRlbXBsYXRlcwogIGcrKy5yZmcKICBnKysucm9iZXJ0bAlUZXN0cyBmcm9tIGdjYy1idWdzQGdjYy5nbnUub3JnLCBnYXRoZXJlZCBieSBSb2JlcnQgTGlwZQoJCkZpbmFsbHksIHNvbWUgcmFuZG9tIGxhc3QgbWludXRlIG5vdGVzIGJ5IE1pa2UgU3R1bXAgPG1yc0BjeWdudXMuY29tPiwgb24KaG93IHRvIHJ1biB0ZXN0cyAoaW4gdGhlIEdDQyAyLjcgZXJhKToKCglydW50ZXN0IC0tdG9vbCBnKysgLS1zcmNkaXIgLi90ZXN0c3VpdGUKCndoZXJlIAoKCXJ1bnRlc3QJSXMgdGhlIG5hbWUgdXNlZCB0byBpbnZva2UgRGVqYUdudS4gICBJZiBEZWphR251IGlzIG5vdAoJCWluc3RhbGxlZCB0aGlzIHdpbGwgYmUgdGhlIHJlbGF0aXZlIHBhdGggbmFtZSBmb3IgcnVudGVzdC4KCgktLXRvb2wJVGhpcyB0ZWxscyBEZWphR251IHdoaWNoIHRvb2wgeW91IGFyZSB0ZXN0aW5nLiBJdCBpcwoJCW1haW5seSB1c2VkIHRvIGZpbmQgdGhlIHRlc3RzdWl0ZSBkaXJlY3RvcmllcyBmb3IgYQoJCXBhcnRpY3VsYXIgdG9vbCB3aGVuIHNldmVyYWwgdGVzdHN1aXRlcyBhcmUgaW4gdGhlCgkJc2FtZSBkaXJlY3RvcnkuIChsaWtlIHRoZSBnY2MgYW5kIGcrKyB0ZXN0c3VpdGVzKQoKCS0tc3JjZGlyIFRoaXMgcG9pbnRzIHRvIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGRpcmVjdG9yeQoJCWNvbnRhaW5pbmcgdGhlIHNvdXJjZXMgb2YgdGhlIHRlc3RzdWl0ZS4gVGhpcyBpcwoJCS4vdGVzdHN1aXRlIGlmIHlvdSBhcmUgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IGhhcyB0aGUKCQl0ZXN0c3VpdGUgZGlyZWN0b3J5LgoKDApDb3B5cmlnaHQgKEMpIDE5OTgtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCkNvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodApub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuCg==