Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGaWxlICAgOiAgU1RMX1RpbWVyLmhoCi8vIEF1dGhvciA6ICBMLiBQbGFnbmUgPGxhdXJlbnQucGxhZ25lQGVkZi5mcik+ICAgICAgICAKLy8gQ29weXJpZ2h0IChDKSBFREYgUiZELCAgbWFyIGTpYyAzIDE4OjU5OjM1IENFVCAyMDAyCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLy8gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKLy8gb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIAovLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQovLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQovLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQovLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KLy8gCi8vIFNUTCBUaW1lciBDbGFzcy4gQWRhcHRlZCAoTC5QLikgZnJvbSB0aGUgdGltZXIgY2xhc3MgYnkgTXVzc2VyIGV0IEFsCi8vIGRlc2NyaWJlZCBpbnQgdGhlIEJvb2sgOiBTVEwgVHV0b3JpYWwgYW5kIHJlZmVyZW5jZSBndWlkZS4KLy8gRGVmaW5lIGEgdGltZXIgY2xhc3MgZm9yIGFuYWx5emluZyBhbGdvcml0aG0gcGVyZm9ybWFuY2UuCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBTVExfVGltZXIgewpwdWJsaWM6CiAgU1RMX1RpbWVyKCl7IGJhc2VsaW5lID0gZmFsc2U7IH07ICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCiAgLy8gU3RhcnQgYSBzZXJpZXMgb2YgciB0cmlhbHM6CiAgdm9pZCBzdGFydCh1bnNpZ25lZCBpbnQgcil7CiAgICByZXBzID0gcjsKICAgIGNvdW50ID0gMDsKICAgIGl0ZXJhdGlvbnMuY2xlYXIoKTsKICAgIGl0ZXJhdGlvbnMucmVzZXJ2ZShyZXBzKTsKICAgIGluaXRpYWwgPSB0aW1lKDApOwogIH07CiAgLy8gU3RhcnQgYSBzZXJpZXMgb2YgciB0cmlhbHMgdG8gZGV0ZXJtaW5lIGJhc2VsaW5lIHRpbWU6CiAgdm9pZCBzdGFydF9iYXNlbGluZSh1bnNpZ25lZCBpbnQgcikKICB7CiAgICBiYXNlbGluZSA9IHRydWU7CiAgICBzdGFydChyKTsKICB9CiAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB0cmlhbHMgaGF2ZSBiZWVuIGNvbXBsZXRlZCwgZWxzZSBmYWxzZQogIGJvb2wgY2hlY2soKQogIHsKICAgICsrY291bnQ7CiAgICBmaW5hbCA9IHRpbWUoMCk7CiAgICBpZiAoaW5pdGlhbCA8IGZpbmFsKSB7CiAgICAgIGl0ZXJhdGlvbnMucHVzaF9iYWNrKGNvdW50KTsgIAogICAgICBpbml0aWFsID0gZmluYWw7CiAgICAgIGNvdW50ID0gMDsKICAgIH0KICAgIHJldHVybiAoaXRlcmF0aW9ucy5zaXplKCkgPCByZXBzKTsKICB9OwogIC8vIFJldHVybnMgdGhlIHJlc3VsdHMgZm9yIGV4dGVybmFsIHVzZQogIGRvdWJsZSBnZXRfdGltZSggdm9pZCApCiAgewogICAgc29ydChpdGVyYXRpb25zLmJlZ2luKCksIGl0ZXJhdGlvbnMuZW5kKCkpOwogICAgcmV0dXJuIDEuMC9pdGVyYXRpb25zW3JlcHMvMl07CiAgfTsKcHJpdmF0ZToKICB1bnNpZ25lZCBpbnQgcmVwczsgIC8vIE51bWJlciBvZiB0cmlhbHMKICAvLyBGb3Igc3RvcmluZyBsb29wIGl0ZXJhdGlvbnMgb2YgYSB0cmlhbAogIHZlY3Rvcjxsb25nPiBpdGVyYXRpb25zOwogIC8vIEZvciBzYXZpbmcgaW5pdGlhbCBhbmQgZmluYWwgdGltZXMgb2YgYSB0cmlhbAogIHRpbWVfdCBpbml0aWFsLCBmaW5hbDsKICAvLyBGb3IgY291bnRpbmcgbG9vcCBpdGVyYXRpb25zIG9mIGEgdHJpYWwKICB1bnNpZ25lZCBsb25nIGNvdW50OwogIC8vIHRydWUgaWYgdGhpcyBpcyBhIGJhc2VsaW5lIGNvbXB1dGF0aW9uLCBmYWxzZSBvdGhlcndpc2UKICBib29sIGJhc2VsaW5lOwogIC8vIEZvciByZWNvcmRpbmcgdGhlIGJhc2VsaW5lIHRpbWUgCiAgZG91YmxlIGJhc2VsaW5lX3RpbWU7Cn07Cgo=