LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDcm9hdGlhbgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX1NFUkJJQU4sIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzg1IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MCIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUyIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM4NSIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiNTAwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDFhIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDA4MiIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkyIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MWEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIwIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMiIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJIUlYiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAicG9uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInV0byIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJzcmkiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi6GV0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInBldCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzdWIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAibmVkIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkhSViIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgInNpaiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgInZsaiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm+edSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgInRyYSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgInN2aSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImxpcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgInNycCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImtvbCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInJ1aiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJsaXMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAic3R1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgInBybyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJDcm9hdGlhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgImtuIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICJwb25lZGplbGphayIKICBMT0NBTEVfU0RBWU5BTUUyICJ1dG9yYWsiCiAgTE9DQUxFX1NEQVlOQU1FMyAic3JpamVkYSIKICBMT0NBTEVfU0RBWU5BTUU0ICLoZXR2cnRhayIKICBMT0NBTEVfU0RBWU5BTUU1ICJwZXRhayIKICBMT0NBTEVfU0RBWU5BTUU2ICJzdWJvdGEiCiAgTE9DQUxFX1NEQVlOQU1FNyAibmVkamVsamEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQ3JvYXRpYSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJDcm9hdGlhbiBLdW5hIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkNyb2F0aWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkhSSyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiSFIiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiaHIiCiAgTE9DQUxFX1NMQU5HVUFHRSAiQ3JvYXRpYW4iCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAic2lqZehhbmoiCiAgTE9DQUxFX1NNT05USE5BTUUyICJ2ZWxqYehhIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAib551amFrIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAidHJhdmFuaiIKICBMT0NBTEVfU01PTlRITkFNRTUgInN2aWJhbmoiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJsaXBhbmoiCiAgTE9DQUxFX1NNT05USE5BTUU3ICJzcnBhbmoiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJrb2xvdm96IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAicnVqYW4iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAibGlzdG9wYWQiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAic3R1ZGVuaSIKICBMT0NBTEVfU01PTlRITkFNRTEyICJwcm9zaW5hYyIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJIcnZhdHNrYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJocnZhdHNrYSBrdW5hIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgImhydmF0c2tpIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQuTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NLCB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==