LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgU3BhbmlzaCAoR3VhdGVtYWxhKQogKgkoc3BhbmlzaCBzdHJpbmdzIGluIGNwMTI1MikKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjEwMGEiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiRXNwYfFvbCIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJTcGFuaXNoIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsImVzZyIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCJFc3Bh8W9sIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwgIjUwMiIpCkxPQ1ZBTChMT0NBTEVfU0NPVU5UUlksIkd1YXRlbWFsYSIpCkxPQ1ZBTChMT0NBTEVfU0VOR0NPVU5UUlksIkd1YXRlbWFsYSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJHVE0iKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiR3VhdGVtYWxhIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCIwNDBhIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksIjM0IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFLCI4NTAiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFLCIxMjUyIikKTE9DVkFMKExPQ0FMRV9TTElTVCwgIiwiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsICIuIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsICIsIikKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiUSIpCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wsICJHVFEiKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCAiLiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCAiLCIpCkxPQ1ZBTChMT0NBTEVfU01PTkdST1VQSU5HLCAiMzswIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywgIjIiKQpMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUywgIjIiKQpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsICIvIikKTE9DVkFMKExPQ0FMRV9TVElNRSwgIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsICJkZC9NTS95eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCAiZGRkZCwgZGQnIGRlICdNTU1NJyBkZSAneXl5eSIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsICJoaDptbTpzcyB0dCIpCkxPQ1ZBTChMT0NBTEVfSURBVEUsICIxIikKTE9DVkFMKExPQ0FMRV9JTERBVEUsICIxIikKTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTiwgIjAiKQpMT0NWQUwoTE9DQUxFX0lDRU5UVVJZLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfUzExNTksICJhLm0uIikKTE9DVkFMKExPQ0FMRV9TMjM1OSwgInAubS4iKQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICIxIikKTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiwgIjAiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywgIjYiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIsICIwIikKCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJsdW5lcyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJtYXJ0ZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywibWnpcmNvbGVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsImp1ZXZlcyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJ2aWVybmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsInPhYmFkbyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJkb21pbmdvIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJsdW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwibWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIm1p6SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCJqdWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwidmllIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsInPhYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCJkb20iKQoKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiZW5lcm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJmZWJyZXJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywibWFyem8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJhYnJpbCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIm1heW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJqdW5pbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsImp1bGlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwiYWdvc3RvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwic2VwdGllbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJvY3R1YnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIm5vdmllbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJkaWNpZW1icmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsImVuZSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsImZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIm1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsImFiciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIm1heSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsImp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsImp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsImFnbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksInNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJvY3QiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwibm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsImRpYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIjAiKQpMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIvIikKTE9DVkFMKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsImVzIikKTE9DVkFMKExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCJHVCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSwgIjIwMjg0IikKTE9DVkFMKExPQ0FMRV9JUEFQRVJTSVpFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU0VOR0NVUlJOQU1FLCAiR3VhdGVtYWxhbiBRdWV0emFsIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUsICJRdWV0emFsIikKTE9DVkFMKExPQ0FMRV9TWUVBUk1PTlRILCAiTU1NTScgZGUgJ3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NTT1JUTkFNRSwgIkRlZmF1bHQiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiwgIiIiIikK