LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTcGFuaXNoIChCb2xpdmlhKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX1NQQU5JU0gsIFNVQkxBTkdfU1BBTklTSF9CT0xJVklBCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICI1OTEiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjIiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTAiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNTkxIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4NCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiNDAwYSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICI0MDBhIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjE0IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIwIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICIxIgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiYS5tLiIKICBMT0NBTEVfUzIzNTkgInAubS4iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQk9MIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkx1biIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJNYXIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiTWnpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIkp1ZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJWaWUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiU+FiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIkRvbSIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJFU0IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJFbmUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJGZWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJNYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJBYnIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNYXkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJKdW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJKdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJBZ28iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJTZXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiT2N0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIk5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJEaWMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQm9saXZpYSIKICBMT0NBTEVfU0NVUlJFTkNZICIkYiIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAiTHVuZXMiCiAgTE9DQUxFX1NEQVlOQU1FMiAiTWFydGVzIgogIExPQ0FMRV9TREFZTkFNRTMgIk1p6XJjb2xlcyIKICBMT0NBTEVfU0RBWU5BTUU0ICJKdWV2ZXMiCiAgTE9DQUxFX1NEQVlOQU1FNSAiVmllcm5lcyIKICBMT0NBTEVfU0RBWU5BTUU2ICJT4WJhZG8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiRG9taW5nbyIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJCb2xpdmlhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkJvbGl2aWFubyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJTcGFuaXNoIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkJPQiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQk8iCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZXMiCiAgTE9DQUxFX1NMQU5HVUFHRSAiU3BhbmlzaCAoQm9saXZpYSkiCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQsIGRkJyBkZSAnTU1NTScgZGUgJ3l5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIkVuZXJvIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiRmVicmVybyIKICBMT0NBTEVfU01PTlRITkFNRTMgIk1hcnpvIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiQWJyaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJNYXlvIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiSnVuaW8iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJKdWxpbyIKICBMT0NBTEVfU01PTlRITkFNRTggIkFnb3N0byIKICBMT0NBTEVfU01PTlRITkFNRTkgIlNlcHRpZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiT2N0dWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTExICJOb3ZpZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiRGljaWVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFNRSAiZXMtQk8iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiQm9saXZpYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJCb2xpdmlhbm8iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiRXNwYfFvbCIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTScgZGUgJ3l5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K