LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBIZWJyZXcKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKiBDb3B5cmlnaHQgMjAwMyBTaGFjaGFyIFNoZW1lc2gKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfSEVCUkVXLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgxOGFiXHg4MDAwXHgzOGNiXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwODAwXHgwMDIwXHgwMDAwXHgwMDAwXHgwMDIwXHgwMDIwXHgwMDAwXHgwMDAwXHgwMDIwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk3MiIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTUiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5NzIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwZCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDUiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5OCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDBkIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjgiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICJBTSIKICBMT0NBTEVfUzIzNTkgIlBNIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIklTUiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIuIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi4yIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICLkIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIuUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi+SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLgIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkhFQiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIunw5eD4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi9OH45eD4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAi7vj1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAi4PT46ewiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLu4OkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLp5fDpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAi6eXs6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIuDl4uXx6CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIvH06O7h+CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLg5ffo5eH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIvDl4e7h+CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLj9u7h+CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJJc3JhZWwiCiAgTE9DQUxFX1NDVVJSRU5DWSAipCIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAi6eXtoPnw6SIKICBMT0NBTEVfU0RBWU5BTUUyICLp5e2g+ezp+ekiCiAgTE9DQUxFX1NEQVlOQU1FMyAi6eXtoPjh6fLpIgogIExPQ0FMRV9TREFZTkFNRTQgIunl7aDn7un56SIKICBMT0NBTEVfU0RBWU5BTUU1ICLp5e2g+en56SIKICBMT0NBTEVfU0RBWU5BTUU2ICL54foiCiAgTE9DQUxFX1NEQVlOQU1FNyAi6eXtoPjg+eXvIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIklzcmFlbCIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJJc3JhZWxpIE5ldyBTaGVrZWwiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiSGVicmV3IgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIklMUyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiSUwiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiaGUiCiAgTE9DQUxFX1NMQU5HVUFHRSAiSGVicmV3IgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkIGRkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAi6fDl4PgiCiAgTE9DQUxFX1NNT05USE5BTUUyICL04fjl4PgiCiAgTE9DQUxFX1NNT05USE5BTUUzICLu+PUiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLg9Pjp7CIKICBMT0NBTEVfU01PTlRITkFNRTUgIu7g6SIKICBMT0NBTEVfU01PTlRITkFNRTYgIunl8OkiCiAgTE9DQUxFX1NNT05USE5BTUU3ICLp5ezpIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAi4OXi5fHoIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi8fTo7uH4IgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIuDl9+jl4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAi8OXh7uH4IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIuP27uH4IgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAiaGUtSUwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAi6fn44OwiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi+ffsIOfj+SIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLy4fjp+iIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICLu8vjhIODp+OX05CDl4Pj25fog5OH46foiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAi7vjr5iDg6fjl9OQiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICLp5eXw6foiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAi9/jp7On6IgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAi6OX49+n6IgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIun08On6IgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICL35fjp4PDp+iIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIvHp8On6IO7x5fj66foiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIvHp8On6IO705fno+iIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIvrg6ezw4+n6IgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICLy4fjp+iIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAi8vjh6foiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAi5eng6PDu6foiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAi4Pju8On6Igp9Cg==