LyoqCiAqICBGaWxlIE5hbWU6ICAgICAgICAgIFN0cmluZy9yZXBsYWNlLTAwMS5qcwogKiAgRUNNQSBTZWN0aW9uOiAgICAgICAxNS42LjQuMTAKICogIERlc2NyaXB0aW9uOiAgICAgICAgQmFzZWQgb24gRUNNQSAyIERyYWZ0IDcgRmVicnVhcnkgMTk5OQogKgogKiAgQXV0aG9yOiAgICAgICAgICAgICBjaHJpc3RpbmVAbmV0c2NhcGUuY29tCiAqICBEYXRlOiAgICAgICAgICAgICAgIDE5IEZlYnJ1YXJ5IDE5OTkKICovCgogICAgdmFyIFNFQ1RJT04gPSAiU3RyaW5nL3JlcGxhY2UtMDAxLmpzIjsKICAgIHZhciBWRVJTSU9OID0gIkVDTUFfMiI7CiAgICB2YXIgVElUTEUgICA9ICJTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UoIHJlZ2V4cCwgcmVwbGFjZVZhbHVlICkiOwoKICAgIHN0YXJ0VGVzdCgpOwoKICAgIC8qCiAgICAgKiBJZiByZWdleHAgaXMgbm90IGFuIG9iamVjdCBvZiB0eXBlIFJlZ0V4cCwgaXQgaXMgcmVwbGFjZWQgd2l0aCB0aGUKICAgICAqIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBuZXcgUmVnRXhwKHJlZ2V4cCkuICBMZXQgc3RyaW5nIGRlbm90ZSB0aGUKICAgICAqIHJlc3VsdCBvZiBjb252ZXJ0aW5nIHRoZSB0aGlzIHZhbHVlIHRvIGEgc3RyaW5nLiAgU3RyaW5nIGlzIHNlYXJjaGVkCiAgICAgKiBmb3IgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHJlZ2V4cCBpZgogICAgICogcmVnZXhwLmdsb2JhbCBpcyBmYWxzZSwgb3IgYWxsIG9jY3VycmVuY2VzIGlmIHJlZ2V4cC5nbG9iYWwgaXMgdHJ1ZS4KICAgICAqCiAgICAgKiBUaGUgbWF0Y2ggaXMgcGVyZm9ybWVkIGFzIGluIFN0cmluZy5wcm90b3R5cGUubWF0Y2gsIGluY2x1ZGluZyB0aGUKICAgICAqIHVwZGF0ZSBvZiByZWdleHAubGFzdEluZGV4LiAgTGV0IG0gYmUgdGhlIG51bWJlciBvZiBtYXRjaGVkCiAgICAgKiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zIGFzIHNwZWNpZmllZCBpbiBzZWN0aW9uIDE1LjcuNS4zLgogICAgICoKICAgICAqIElmIHJlcGxhY2VWYWx1ZSBpcyBhIGZ1bmN0aW9uLCB0aGVuIGZvciBlYWNoIG1hdGNoZWQgc3Vic3RyaW5nLCBjYWxsCiAgICAgKiB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZm9sbG93aW5nIG0gKyAzIGFyZ3VtZW50cy4gQXJndW1lbnQgMSBpcyB0aGUKICAgICAqIHN1YnN0cmluZyB0aGF0IG1hdGNoZWQuIFRoZSBuZXh0IG0gYXJndW1lbnRzIGFyZSBhbGwgb2YgdGhlIG1hdGNoZWQKICAgICAqIHN1YmV4cHJlc3Npb25zLiBBcmd1bWVudCBtICsgMiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBsZWZ0IGNvbnRleHQsIGFuZAogICAgICogYXJndW1lbnQgbSArIDMgaXMgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSByZXN1bHQgaXMgYSBzdHJpbmcgdmFsdWUgZGVyaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBpbnB1dCBieQogICAgICogcmVwbGFjaW5nIGVhY2ggbWF0Y2hlZCBzdWJzdHJpbmcgd2l0aCB0aGUgY29ycmVzcG9uZGluZyByZXR1cm4gdmFsdWUKICAgICAqIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgaWYgbmVlZCBiZS4KICAgICAqCiAgICAgKiBPdGhlcndpc2UsIGxldCBuZXdzdHJpbmcgZGVub3RlIHRoZSByZXN1bHQgb2YgY29udmVydGluZyByZXBsYWNlVmFsdWUKICAgICAqIHRvIGEgc3RyaW5nLiBUaGUgcmVzdWx0IGlzIGEgc3RyaW5nIHZhbHVlIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2luYWwKICAgICAqIGlucHV0IHN0cmluZyBieSByZXBsYWNpbmcgZWFjaCBtYXRjaGVkIHN1YnN0cmluZyB3aXRoIGEgc3RyaW5nIGRlcml2ZWQKICAgICAqIGZyb20gbmV3c3RyaW5nIGJ5IHJlcGxhY2luZyBjaGFyYWN0ZXJzIGluIG5ld3N0cmluZyBieSByZXBsYWNlbWVudCB0ZXh0CiAgICAgKiBhcyBzcGVjaWZpZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZToKICAgICAqCiAgICAgKiAkJiBUaGUgbWF0Y2hlZCBzdWJzdHJpbmcuCiAgICAgKiAkkSBUaGUgcG9ydGlvbiBvZiBzdHJpbmcgdGhhdCBwcmVjZWRlcyB0aGUgbWF0Y2hlZCBzdWJzdHJpbmcuCiAgICAgKiAkkiBUaGUgcG9ydGlvbiBvZiBzdHJpbmcgdGhhdCBmb2xsb3dzIHRoZSBtYXRjaGVkIHN1YnN0cmluZy4KICAgICAqICQrIFRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSB0aGUgbGFzdCBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zIGluCiAgICAgKiAgICAgIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCiAgICAgKiAkbiBUaGUgY29ycmVzcG9uZGluZyBtYXRjaGVkIHBhcmVudGhlc2l6ZWQgc3ViZXhwcmVzc2lvbiBuLCB3aGVyZSBuCiAgICAgKiBpcyBhIHNpbmdsZSBkaWdpdCAwLTkuIElmIHRoZXJlIGFyZSBmZXdlciB0aGFuIG4gc3ViZXhwcmVzc2lvbnMsIJMkbgogICAgICogaXMgbGVmdCB1bmNoYW5nZWQuCiAgICAgKgogICAgICogTm90ZSB0aGF0IHRoZSByZXBsYWNlIGZ1bmN0aW9uIGlzIGludGVudGlvbmFsbHkgZ2VuZXJpYzsgaXQgZG9lcyBub3QKICAgICAqIHJlcXVpcmUgdGhhdCBpdHMgdGhpcyB2YWx1ZSBiZSBhIHN0cmluZyBvYmplY3QuIFRoZXJlZm9yZSwgaXQgY2FuIGJlCiAgICAgKiB0cmFuc2ZlcnJlZCB0byBvdGhlciBraW5kcyBvZiBvYmplY3RzIGZvciB1c2UgYXMgYSBtZXRob2QuCiAgICAgKi8KCgoJdGVzdGNhc2VzWzBdID0geyBleHBlY3Q6IlBBU1NFRCIsIGFjdHVhbDoiUEFTU0VEIiwgZGVzY3JpcHRpb246Ik5PIFRFU1RTIEVYSVNUIiB9OwoKCXRlc3QoKTsK