LyoKICogVmlldwogKiBJdGFsaWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDE5OTggRG91Z2xhcyBSaWRnd2F5CiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDAzIEl2YW4gTGVvIE11cnJheS1TbWl0aAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0lUQUxJQU4sIFNVQkxBTkdfREVGQVVMVAoKLyoKICoKICogTWVudQogKgogKi8KClZJRVcgTUVOVQpCRUdJTgogICAgUE9QVVAgIiZGaWxlIgogICAgQkVHSU4KCU1FTlVJVEVNICImQXByaSIsCQkJSURNX09QRU4KICAgICAgICBNRU5VSVRFTSAiRSZzY2kiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZQYW4iCiAgICBCRUdJTgogICAgICBNRU5VSVRFTSAiJkFkYXR0YSBhbGxhIGZpbmVzdHJhIiwgICAgICAgICAgICAgIElETV9TRVRfRVhUX1RPX1dJTgogICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgTUVOVUlURU0gIiZTaW5pc3RyYSIsCQkJCUlETV9MRUZUCiAgICAgIE1FTlVJVEVNICImRGVzdHJhIiwJCQlJRE1fUklHSFQKICAgICAgTUVOVUlURU0gIiZTdSIsCQkJCUlETV9VUAogICAgICBNRU5VSVRFTSAiJkdp+SIsCQkJCUlETV9ET1dOCiAgICBFTkQKICAgIFBPUFVQICImSW5mb3JtYXppb25pIgogICAgQkVHSU4KCU1FTlVJVEVNICImQ2lhbyIsCQkJSURNX0hFTExPCiAgICBFTkQKRU5ECgoKLyoKICoKICogQWNjZWxlcmF0b3IKICoKICovCgpWSUVXIEFDQ0VMRVJBVE9SUwpCRUdJTgogICAgIlEiLCBJRE1fRVhJVCwgVklSVEtFWSwgQ09OVFJPTApFTkQKCgovKgogKgogKiBTdHJpbmcgVGFibGUKICoKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUE5BTUUgICAgICAgICAgICAgIlZpc3VhbGl6emEiCiAgICBJRFNfREVTQ1JJUFRJT04gICAgICAgICAiVmlzdWFsaXp6YXRvcmUgZGkgTWV0YWZpbGUgUmVnb2xhcmkiCkVORAo=