LyoKKiBDb3B5cmlnaHQgqSB7MTk5OX0sIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKiAgIDExLzE3Lzk5ICAgIGFsaXUgICAgICAgIENyZWF0aW9uLgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCiNpZm5kZWYgVU5JRklMVF9ICiNkZWZpbmUgVU5JRklMVF9ICgojaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKCi8qKgogKiA8Y29kZT5Vbmljb2RlRmlsdGVyPC9jb2RlPiBkZWZpbmVzIGEgcHJvdG9jb2wgZm9yIHNlbGVjdGluZyBhCiAqIHN1YnNldCBvZiB0aGUgZnVsbCByYW5nZSAoVSswMDAwIHRvIFUrRkZGRikgb2YgVW5pY29kZSBjaGFyYWN0ZXJzLgogKiBDdXJyZW50bHksIGZpbHRlcnMgYXJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjbGFzc2VzIGxpa2Uge0BsaW5rCiAqIFRyYW5zbGl0ZXJhdG9yfSB0byBvbmx5IHByb2Nlc3Mgc2VsZWN0ZWQgY2hhcmFjdGVycyB0aHJvdWdoIGEKICogdHJhbnNmb3JtYXRpb24uCiAqCiAqIEBzZWUgVW5pY29kZUZpbHRlckxvZ2ljCiAqLwpjbGFzcyBVX0kxOE5fQVBJIFVuaWNvZGVGaWx0ZXIgewoKcHVibGljOgoKICAgIHZpcnR1YWwgflVuaWNvZGVGaWx0ZXIoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgPHR0PnRydWU8L3R0PiBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSBpbiB0aGUgc2VsZWN0ZWQKICAgICAqIHN1YnNldC4gIEluIG90aGVyIHdvcmRzLCBpZiBhIGNoYXJhY3RlciBpcyA8Yj50byBiZQogICAgICogZmlsdGVyZWQ8L2I+LCB0aGVuIDx0dD5jb250YWlucygpPC90dD4gcmV0dXJucwogICAgICogPGI+PHR0PmZhbHNlPC90dD48L2I+LgogICAgICovCiAgICB2aXJ0dWFsIGJvb2xfdCBjb250YWlucyhVQ2hhciBjKSBjb25zdCA9IDA7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiB0aGlzIG9iamVjdC4gIEFsbCBVbmljb2RlRmlsdGVyIG9iamVjdHMgaGF2ZQogICAgICogdG8gc3VwcG9ydCBjbG9uaW5nIGluIG9yZGVyIHRvIGFsbG93IGNsYXNzZXMgdXNpbmcKICAgICAqIFVuaWNvZGVGaWx0ZXJzLCBzdWNoIGFzIFRyYW5zbGl0ZXJhdG9yLCB0byBpbXBsZW1lbnQgY2xvbmluZy4KICAgICAqLwogICAgdmlydHVhbCBVbmljb2RlRmlsdGVyKiBjbG9uZSgpIGNvbnN0ID0gMDsKCnByb3RlY3RlZDoKCiAgICBVbmljb2RlRmlsdGVyKCk7Cn07CgppbmxpbmUgVW5pY29kZUZpbHRlcjo6VW5pY29kZUZpbHRlcigpIHt9CmlubGluZSBVbmljb2RlRmlsdGVyOjp+VW5pY29kZUZpbHRlcigpIHt9CgojZW5kaWYK