LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDemVjaAogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQyMCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI0MjAiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwNSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA1IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgImRvcC4iCiAgTE9DQUxFX1MyMzU5ICJvZHAuIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkNaRSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJwbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICL6dCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJzdCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICLodCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJw4SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJuZSIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJDU1kiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJJSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJJViIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIlYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJWSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIlZJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIlZJSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJJWCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJYIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIlhJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIlhJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJDemVjaCBSZXB1YmxpYyIKICBMT0NBTEVfU0NVUlJFTkNZICJL6CIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAicG9uZOxs7SIKICBMT0NBTEVfU0RBWU5BTUUyICL6dGVy/SIKICBMT0NBTEVfU0RBWU5BTUUzICJzdPhlZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6HR2cnRlayIKICBMT0NBTEVfU0RBWU5BTUU1ICJw4XRlayIKICBMT0NBTEVfU0RBWU5BTUU2ICJzb2JvdGEiCiAgTE9DQUxFX1NEQVlOQU1FNyAibmVk7GxlIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkN6ZWNoIFJlcHVibGljIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkN6ZWNoIEtvcnVuYSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJDemVjaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJDWksiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkNaIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImNzIgogIExPQ0FMRV9TTEFOR1VBR0UgIkN6ZWNoIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkLiBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImxlZGVuIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi+m5vciIKICBMT0NBTEVfU01PTlRITkFNRTMgImL4ZXplbiIKICBMT0NBTEVfU01PTlRITkFNRTQgImR1YmVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAia3bsdGVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi6GVydmVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAi6GVydmVuZWMiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJzcnBlbiIKICBMT0NBTEVfU01PTlRITkFNRTkgInrh+O0iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAi+O1qZW4iCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibGlzdG9wYWQiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAicHJvc2luZWMiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJjcy1DWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLIZXNr4aByZXB1Ymxpa2EiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiS29ydW5hIMhlc2vhIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIuhlmnRpbmEgKMhlc2vhoHJlcHVibGlrYSkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi6GWadGluYSIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU09QRU5UWVBFTEFOR1VBR0VUQUcgIkNTWSAiCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkLk0ueXl5eSIKICBMT0NBTEVfU1NIT1JUVElNRSAiSDptbSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJa4XBhZG7tIEV2cm9wYSBhIFNwb2plbukgc3ThdHkiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiU3T4ZWRvZXZyb3Bza+kgamF6eWt5IgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJQb2JhbHRza+kgamF6eWt5IgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIthl6HRpbmEiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxpY2UiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJlY2vpIGphenlreSIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBvbpp0aW5hIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3Jlapp0aW5hIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiyO1umnRpbmEgKHRyYWRp6G7tKSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiyO1umnRpbmEgKHpqZWRub2R1mmVu4SkiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFqmnRpbmEiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJlapp0aW5hIgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFic2vpIGphenlreSIKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW2adGluYSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpY2vpIGphenlreSIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHcnV67W6adGluYSIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm3pbpp0aW5hIgp9Cg==