LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHcmVlawogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTMpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dSRUVLLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDhiXHg4MDAwXHgzODQ5XHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAxIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjMwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MyIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzM3IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjMwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3MyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDYiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5NyIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA4IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIvDsIgogIExPQ0FMRV9TMjM1OSAi7OwiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiR1JDIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIsTl9SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLU8ekiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi1OX0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgItDl7CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICLQ4fEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi0+HiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIsr18SIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJFTEwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLJ4e0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLW5eIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLM4fEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLB8PEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLM4foiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLJ7/XtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiye/16yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsH14yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgItPl8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLP6vQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAize/lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIsTl6iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJHcmVlY2UiCiAgTE9DQUxFX1NDVVJSRU5DWSAigCIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAixOX19N3x4SIKICBMT0NBTEVfU0RBWU5BTUUyICLU8d/05yIKICBMT0NBTEVfU0RBWU5BTUUzICLU5fTc8fTnIgogIExPQ0FMRV9TREFZTkFNRTQgItDd7PD05yIKICBMT0NBTEVfU0RBWU5BTUU1ICLQ4fHh8+rl9d4iCiAgTE9DQUxFX1NEQVlOQU1FNiAi09zi4uH07yIKICBMT0NBTEVfU0RBWU5BTUU3ICLK9fHp4ereIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkdyZWVjZSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkdyZWVrIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkVVUiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiR1IiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZWwiCiAgTE9DQUxFX1NMQU5HVUFHRSAiR3JlZWsiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQsIGQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLJ4e3v9dzx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1uXi8e/13PHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUzICLM3PH06e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwfDx3+vp7/IiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLM3Onv8iIKICBMT0NBTEVfU01PTlRITkFNRTYgIsnv/e3p7/IiCiAgTE9DQUxFX1NNT05USE5BTUU3ICLJ7/3r6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiwf3j7/Xz9O/yIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi0+Xw9N3s4vHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiz+r0/uLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIs3v3ezi8env8iIKICBMT0NBTEVfU01PTlRITkFNRTEyICLE5erd7OLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFNRSAiZWwtR1IiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAixevr3OThIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIuX18f4iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAi5evr5+3p6twgKMXr69zk4SkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi5evr5+3p6twiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkdyZWs7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkL00veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==