LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKFN3aXR6ZXJsYW5kKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19GUkVOQ0hfU1dJU1MKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQxIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQxIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI5NyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMTAwYyIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjIiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIxMDBjIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJDSEUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibHVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJtYXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm1lci4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiamV1LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJ2ZW4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgInNhbS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiZGltLiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJGUlMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW52LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImbpdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImF2ci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdWluIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAianVpbC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2VwdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2N0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImTpYy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiU3dpdHplcmxhbmQiCiAgTE9DQUxFX1NDVVJSRU5DWSAiU0ZyLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAibHVuZGkiCiAgTE9DQUxFX1NEQVlOQU1FMiAibWFyZGkiCiAgTE9DQUxFX1NEQVlOQU1FMyAibWVyY3JlZGkiCiAgTE9DQUxFX1NEQVlOQU1FNCAiamV1ZGkiCiAgTE9DQUxFX1NEQVlOQU1FNSAidmVuZHJlZGkiCiAgTE9DQUxFX1NEQVlOQU1FNiAic2FtZWRpIgogIExPQ0FMRV9TREFZTkFNRTcgImRpbWFuY2hlIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlN3aXR6ZXJsYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlN3aXNzIEZyYW5jIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkZyZW5jaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJDSEYiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkNIIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImZyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkZyZW5jaCAoU3dpdHplcmxhbmQpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkLCBkLiBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIuIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbnZpZXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJm6XZyaWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU01PTlRITkFNRTQgImF2cmlsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAianVpbiIKICBMT0NBTEVfU01PTlRITkFNRTcgImp1aWxsZXQiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9jdG9icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZOljZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiciCiAgTE9DQUxFX1NOQU1FICJmci1DSCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJTdWlzc2UiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiRnJhbmMgc3Vpc3NlIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgImZyYW7nYWlzIChTdWlzc2UpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgImZyYW7nYWlzIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TT1BFTlRZUEVMQU5HVUFHRVRBRyAiRlJBICIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkLk1NLnl5eXkiCiAgTE9DQUxFX1NTSE9SVFRJTUUgIkhIOm1tIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiJyIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGUgb2NjaWRlbnRhbGUgZXQgyXRhdHMtVW5pcyBkJ0Ft6XJpcXVlIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wZSBjZW50cmFsZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGlxdWUiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlYyIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpcXVlIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVyYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBvbmFpcyIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiQ29y6WVuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hpbm9pcyB0cmFkaXRpb25uZWwiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoaW5vaXMgc2ltcGxpZmnpIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhh7yIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSOlicmV1IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiZSIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtaWVuIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGllbiIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJH6W9yZ2llbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm3pbmllbiIKfQo=