LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgVmlldG5hbQogKgogKgkodmlldG5hbWVzZSBzdHJpbmdzIGluIFZJU0NJSSkKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjA0MmEiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiVGmqbmcgVmmudCIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJWaWV0bmFtZXNlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsInZpZSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCJUaapuZyBWaa50IikKLyogTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiIikgKi8KTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiVmmudCBOYW0iKQpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJWaWV0bmFtIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIlZOTSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJWaa50IE5hbSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQyYSIpCi8qIExPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpICovCi8qIExPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpICovCi8qIExPQ1ZBTChMT0NBTEVfU0xJU1QsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU1FQVNVUkUsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NHUk9VUElORykgKi8KLyogTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjEiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIpICovCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwi0LBuZyIpCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wsICJWTkQiKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCIsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsIi4iKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywgIjM7MCIpCi8qIExPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikgKi8KTE9DVkFMKExPQ0FMRV9TREFURSwiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkL01NL3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkIE1NTU0gbuVtIHl5eXkiKQpMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFULCJoOm1tOnNzIHR0IikKLyogTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUxEQVRFKSAqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKSAqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8pICovCkxPQ1ZBTChMT0NBTEVfUzExNTksICJz4W5nIikKTE9DVkFMKExPQ0FMRV9TMjM1OSwgImNoaat1IikKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFLCAiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpICovCgpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwidGjRIGhhaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJ0aNEgYmEiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywidGjRIHTfIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsInRo0SBu5W0iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwidGjRIHPhdSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJ0aNEgYuR5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsImNo/CBuaKd0IikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJIYWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwiQmEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywiVN8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiTuVtIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIlPhdSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCJC5HkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiTmindCIpCgpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJ0aOFuZyBnaepuZyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsInRo4W5nIGhhaSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsInRo4W5nIGJhIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwidGjhbmcgdN8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJ0aOFuZyBu5W0iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJ0aOFuZyBz4XUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJ0aOFuZyBi5HkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJ0aOFuZyB04W0iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJ0aOFuZyBjaO1uIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsInRo4W5nIG3ftmkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwidGjhbmcgbbV0IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsInRo4W5nIGNo1XAiKQovKiBMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikgKi8KCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIkdp6m5nIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiSGFpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywiQmEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJU3yIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIk7lbSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIlPhdSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIkLkeSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIlThbSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksIkNo7W4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwiTd+2aSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJNtXQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiQ2jVcCIpCi8qIExPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKSAqLwoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIiKSAqLwpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwidmkiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIlZOIikKCg==