LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgU3BhbmlzaCAoUGVydSkKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjI4MGEiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiRXNwYfFvbCAoUGVy+ikiKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiU3BhbmlzaCAoUGVydSkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiZXNmIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIkVzcGHxb2wiKQovKiBMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJQZXL6IikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiUGVydSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJQRVIiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiUGVy+iIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQwYSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIzNCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwiODUwIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSwiMTI1MiIpCi8qIExPQ1ZBTChMT0NBTEVfU0xJU1QsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU1FQVNVUkUsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NHUk9VUElORykgKi8KLyogTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjEiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIpICovCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiUyIpCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wsICJQRVMiKQovKiBMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCIsIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsIi4iKSAqLwpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywgIjM7MCIpCi8qIExPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikgKi8KLyogTE9DVkFMKExPQ0FMRV9TREFURSwiLiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkL01NLXl5eXkiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkLiBNTU1NIHl5eXkiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFUKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTERBVEUpICovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpICovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9TMTE1OSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfUzIzNTksICIiKSAqLwpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICIxIikKLyogTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikgKi8KCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJsdW5lcyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJtYXJ0ZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywibWnpcmNvbGVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsImp1ZXZlcyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJ2aWVybmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsInPhYmFkbyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJkb21pbmdvIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJsdW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwibWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIm1p6SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCJqdWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwidmllIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsInPhYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCJkb20iKQoKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiZW5lcm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJmZWJyZXJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywibWFyem8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJhYnJpbCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIm1heW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJqdW5pbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsImp1bGlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwiYWdvc3RvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwic2VwdGllbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJvY3R1YnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIm5vdmllbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJkaWNpZW1icmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsImVuZSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsImZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIm1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsImFiciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIm1heSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsImp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsImp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsImFnbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksInNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJvY3QiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwibm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsImRpYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIiKSAqLwpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwiZXMiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIlBFIikK