LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBMaXRodWFuaWFuCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZXdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NykKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfTElUSFVBTklBTiwgU1VCTEFOR19MSVRIVUFOSUFOCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAwN1x4ODAwMFx4Mzg0OFx4MTAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDA4MFx4MDAwMFx4MDAwMFx4MDgwMFx4MDA5Mlx4MDAwMFx4MDAwMFx4Y2RkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzNzAiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjU3IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI3NzUiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzcwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICI1MDAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MjciCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDI5IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MjciCiAgTE9DQUxFX0lMREFURSAiMiIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJMVFUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiUHIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiQW4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiVHIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiS3QiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiUG4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi0HQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiU2siCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiTFRIIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiU2F1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiVmFzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiS292IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiQmFsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiR2VnIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiQmlyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiTGllIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiUmdwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiUmdzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIlNwbCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJMYXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiR3JkIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkxpdGh1YW5pYSIKICBMT0NBTEVfU0NVUlJFTkNZICJMdCIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAicGlybWFkaWVuaXMiCiAgTE9DQUxFX1NEQVlOQU1FMiAiYW50cmFkaWVuaXMiCiAgTE9DQUxFX1NEQVlOQU1FMyAidHJl6GlhZGllbmlzIgogIExPQ0FMRV9TREFZTkFNRTQgImtldHZpcnRhZGllbmlzIgogIExPQ0FMRV9TREFZTkFNRTUgInBlbmt0YWRpZW5pcyIKICBMT0NBTEVfU0RBWU5BTUU2ICLwZfB0YWRpZW5pcyIKICBMT0NBTEVfU0RBWU5BTUU3ICJzZWttYWRpZW5pcyIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJMaXRodWFuaWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiTGl0aHVhbmlhbiBMaXRhcyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJMaXRodWFuaWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkxUTCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiTFQiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAibHQiCiAgTE9DQUxFX1NMQU5HVUFHRSAiTGl0aHVhbmlhbiIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eSAnbS4nIE1NTU0gZCAnZC4nIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJzYXVzaXMiCiAgTE9DQUxFX1NNT05USE5BTUUyICJ2YXNhcmlzIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAia292YXMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJiYWxhbmRpcyIKICBMT0NBTEVfU01PTlRITkFNRTUgImdlZ3X+6yIKICBMT0NBTEVfU01PTlRITkFNRTYgImJpcv5lbGlzIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAibGllcGEiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJydWdwavt0aXMiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJydWdz62ppcyIKICBMT0NBTEVfU01PTlRITkFNRTEwICJzcGFsaXMiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibGFwa3JpdGlzIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImdydW9kaXMiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiTGlldHV2YSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJMaXRhcyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJsaWV0dXZp+CIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5Lk1NLmRkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAieXl5eSAnbS4nIE1NTU0iCn0K