LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBcmFiaWMgKFN5cmlhKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTYpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0FSQUJJQywgU1VCTEFOR19BUkFCSUNfU1lSSUEKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHg2MGFmXHg4MDAwXHgzODQ4XHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwODAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDA4IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk2MyIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTYiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjcyMCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5NjMiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwNDIwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIyODAxIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk2IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjAiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNSIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjI4MDEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMyIKICBMT0NBTEVfSU5FR05VTUJFUiAiMyIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMiIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiNiIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMiIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgItUiCiAgTE9DQUxFX1MyMzU5ICLjIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlNZUiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLH4cfL5O3kIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIsfhy+HHy8fBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIsfhx9HI2sfBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIsfhzuPt0yIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICLH4czj2skiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAix+HTyMoiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAix+HHzc8iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQVJTIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi38fk5uSgx+HLx+TtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1MjH2CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIsLQx9EiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLk7dPH5CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIsPtx9EiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLN0u3Rx+QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLK4+bSIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiwsgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLD7eHm4SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLK1NHt5KDH4cPm4SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLK1NHt5KDH4cvH5O0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAi38fk5uSgx+HD5uEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiU3lyaWEiCiAgTE9DQUxFX1NDVVJSRU5DWSAi4S7TLv4iCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIsfhx8vk7eQiCiAgTE9DQUxFX1NEQVlOQU1FMiAix+HL4cfLx8EiCiAgTE9DQUxFX1NEQVlOQU1FMyAix+HH0cjax8EiCiAgTE9DQUxFX1NEQVlOQU1FNCAix+HO4+3TIgogIExPQ0FMRV9TREFZTkFNRTUgIsfhzOPaySIKICBMT0NBTEVfU0RBWU5BTUU2ICLH4dPIyiIKICBMT0NBTEVfU0RBWU5BTUU3ICLH4cfNzyIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJTeXJpYSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJTeXJpYW4gUG91bmQiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQXJhYmljIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlNZUCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiU1kiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiYXIiCiAgTE9DQUxFX1NMQU5HVUFHRSAiQXJhYmljIChTeXJpYSkiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkIE1NTU0sIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIuIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIt/H5ObkoMfhy8fk7SIKICBMT0NBTEVfU01PTlRITkFNRTIgItTIx9giCiAgTE9DQUxFX1NNT05USE5BTUUzICLC0MfRIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAi5O3Tx+QiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLD7cfRIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAizdLt0cfkIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiyuPm0iIKICBMT0NBTEVfU01PTlRITkFNRTggIsLIIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiw+3h5uEiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiytTR7eSgx+HD5uEiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiytTR7eSgx+HLx+TtIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIt/H5ObkoMfhw+bhIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAiYXItU1kiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAi0+bR7cciCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAizOTt5aDT5tHtIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTIEwiXHgwNjYwXHgwNjYxXHgwNjYyXHgwNjYzXHgwNjY0XHgwNjY1XHgwNjY2XHgwNjY3XHgwNjY4XHgwNjY5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIsfh2tHI7ckiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkFyYWI7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSwgeXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=