LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBIZWJyZXcKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKiBDb3B5cmlnaHQgMjAwMyBTaGFjaGFyIFNoZW1lc2gKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfSEVCUkVXLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgxOGFiXHg4MDAwXHgzOGNiXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwODAwXHgwMDIwXHgwMDAwXHgwMDAwXHgwMDIwXHgwMDIwXHgwMDAwXHgwMDAwXHgwMDIwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk3MiIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTUiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5NzIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwZCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDUiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5OCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDBkIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI4IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIxIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSVNSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIuEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi4iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLjIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIuQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICL5IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIuAiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiSEVCIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi6fDl4PgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICL04fjl4PgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLu+PUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLg9Pjp7CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIu7g6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIunl8OkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLp5ezpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi4OXi5fHoIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi8fTo7uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIuDl9+jl4fgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAi8OXh7uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIuP27uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIklzcmFlbCIKICBMT0NBTEVfU0NVUlJFTkNZICKkIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLp5e2g+fDpIgogIExPQ0FMRV9TREFZTkFNRTIgIunl7aD57On56SIKICBMT0NBTEVfU0RBWU5BTUUzICLp5e2g+OHp8ukiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6eXtoOfu6fnpIgogIExPQ0FMRV9TREFZTkFNRTUgIunl7aD56fnpIgogIExPQ0FMRV9TREFZTkFNRTYgIvnh+iIKICBMT0NBTEVfU0RBWU5BTUU3ICLp5e2g+OD55e8iCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSXNyYWVsIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIklzcmFlbGkgTmV3IFNoZWtlbCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJIZWJyZXciCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSUxTIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJTCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJoZSIKICBMT0NBTEVfU0xBTkdVQUdFICJIZWJyZXciCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQg5M5kZCDhTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLp8OXg+CIKICBMT0NBTEVfU01PTlRITkFNRTIgIvTh+OXg+CIKICBMT0NBTEVfU01PTlRITkFNRTMgIu749SIKICBMT0NBTEVfU01PTlRITkFNRTQgIuD0+OnsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAi7uDpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi6eXw6SIKICBMT0NBTEVfU01PTlRITkFNRTcgIunl7OkiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLg5eLl8egiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLx9Oju4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAi4OX36OXh+CIKICBMT0NBTEVfU01PTlRITkFNRTExICLw5eHu4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAi4/bu4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJoZS1JTCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLp+fjg7CIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICL59+wg5+P5IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIvLh+On6ICjp+fjg7CkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi8uH46foiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJJV1IgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJIZWJyOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAi7vL44SDg6fjl9ODpIOXg+Pbl+iDk4fjp+iIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICLu+OvmIODp+OX04OkiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIuHs6OkiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAi6eXl8OkiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAi9+n46ezpIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAi6OX49+kiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAi6fTw6SIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAi9+X46eDw6SIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIvHp8Okg7vHl+PrpIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICLx6fDpIO705fnoIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAi+uDp7PDj6SIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAi8uH46SIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAi8vjh6SIKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIuXp6ejw7ukiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAi5Onw4+kiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAi4uDl+OLpIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIuD47vDpIgp9Cg==