LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgQ2F0YWxhbgogKgogKiBDb3B5cmlnaHQgMTk5OCBNYXJjZWwgQmF1cgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiMDQwMyIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCJDYXRhbOAiKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiQ2F0YWxhbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJjYXQiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwiY2F0YWzgIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiMzQiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJFc3BhbnlhIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiU3BhaW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiRVNQIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIkVzcGFueWEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjA0MDMiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiMzQiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsIjg1MCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsICIxMjUyIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFLCAiMTAwMDAiKQovKiBMT0NWQUwoTE9DQUxFX1NMSVNULCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIsIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIiIpCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HLCIwOzAiKQovKiBMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikgKi8KTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTLCAiMDEyMzQ1Njc4OSIpCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJQdHMiKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiRVNQIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwiLCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCIuIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsIjM7MCIpCi8qIExPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikgKi8KTE9DVkFMKExPQ0FMRV9TREFURSwiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkL01NL3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkIGQgTU1NTSB5eXl5IikKLyogTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCkgKi8KLyogTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUxEQVRFKSAqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKSAqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8pICovCkxPQ1ZBTChMT0NBTEVfUzExNTksICIiKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAiIikKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFLCAiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpICovCgpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwiRGlsbHVucyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJEaW1hcnRzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIkRpbWVjcmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsIkRpam91cyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJEaXZlbmRyZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwiRGlzc2FidGUiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywiRGl1bWVuZ2UiKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsIkRsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIkR0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIkRjIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIkRqIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIkR2IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIkRzIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIkRnIikKCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsIkdlbmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiRmVicmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywiTWFy5yIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIkFicmlsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwiTWFpZyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsIkp1bnkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJKdWxpb2wiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJBZ29zdCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksIlNldGVtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIk9jdHVicmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwiTm92ZW1icmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwiRGVzZW1icmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIkduIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiRmIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJN5yIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIkFiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwiTWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJKbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIkpsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiQWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJTdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJPYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJOdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJEcyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIiKSAqLwpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwiY2EiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIkVTIikKCg==