LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBIZWJyZXcKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKiBDb3B5cmlnaHQgMjAwMyBTaGFjaGFyIFNoZW1lc2gKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfSEVCUkVXLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgxOGFiXHg4MDAwXHgzOGNiXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwODAwXHgwMDIwXHgwMDAwXHgwMDAwXHgwMDIwXHgwMDIwXHgwMDAwXHgwMDAwXHgwMDIwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk3MiIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTUiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5NzIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwZCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDUiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5OCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDBkIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI4IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIxIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSVNSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIuEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi4iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLjIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIuQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICL5IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIuAiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiSEVCIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi6fDl4PgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICL04fjl4PgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLu+PUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLg9Pjp7CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIu7g6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIunl8OkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLp5ezpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi4OXi5fHoIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi8fTo7uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIuDl9+jl4fgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAi8OXh7uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIuP27uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIklzcmFlbCIKICBMT0NBTEVfU0NVUlJFTkNZICKkIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLp5e2g+fDpIgogIExPQ0FMRV9TREFZTkFNRTIgIunl7aD57On56SIKICBMT0NBTEVfU0RBWU5BTUUzICLp5e2g+OHp8ukiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6eXtoOfu6fnpIgogIExPQ0FMRV9TREFZTkFNRTUgIunl7aD56fnpIgogIExPQ0FMRV9TREFZTkFNRTYgIvnh+iIKICBMT0NBTEVfU0RBWU5BTUU3ICLp5e2g+OD55e8iCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSXNyYWVsIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIklzcmFlbGkgTmV3IFNoZWtlbCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJIZWJyZXciCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSUxTIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJTCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJoZSIKICBMT0NBTEVfU0xBTkdVQUdFICJIZWJyZXciCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQg5M5kZCDhTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLp8OXg+CIKICBMT0NBTEVfU01PTlRITkFNRTIgIvTh+OXg+CIKICBMT0NBTEVfU01PTlRITkFNRTMgIu749SIKICBMT0NBTEVfU01PTlRITkFNRTQgIuD0+OnsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAi7uDpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi6eXw6SIKICBMT0NBTEVfU01PTlRITkFNRTcgIunl7OkiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLg5eLl8egiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLx9Oju4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAi4OX36OXh+CIKICBMT0NBTEVfU01PTlRITkFNRTExICLw5eHu4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAi4/bu4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJoZS1JTCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLp+fjg7CIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICL59+wg5+P5IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIvLh+On6ICjp+fjg7CkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi8uH46foiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJJV1IgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJIZWJyOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NIT1JUVElNRSAiSEg6bW0iCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIu7y+OEg4On45fTg6SDl4Pj25fog5OH46foiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAi7vjr5iDg6fjl9ODpIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICLh7OjpIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIunl5fDpIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIvfp+Ons6SIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIujl+PfpIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIun08OkiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIvfl+Ong8OkiCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICLx6fDpIO7x5fj66SIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAi8enw6SDu9OX56CIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIvrg6ezw4+kiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIvLh+OkiCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIvL44ekiCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICLl6eno8O7pIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIuTp8OPpIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIuLg5fji6SIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICLg+O7w6SIKfQo=