LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKFN3aXR6ZXJsYW5kKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19GUkVOQ0hfU1dJU1MKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQxIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQxIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI5NyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMTAwYyIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjIiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIxMDBjIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQ0hFIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgImx1bi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAibWFyLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJtZXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgImpldS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAidmVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzYW0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgImRpbS4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRlJTIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiamFudi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJm6XZyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAianVpbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImp1aWwuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcHQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9jdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJk6WMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlN3aXR6ZXJsYW5kIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIlNGci4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgImx1bmRpIgogIExPQ0FMRV9TREFZTkFNRTIgIm1hcmRpIgogIExPQ0FMRV9TREFZTkFNRTMgIm1lcmNyZWRpIgogIExPQ0FMRV9TREFZTkFNRTQgImpldWRpIgogIExPQ0FMRV9TREFZTkFNRTUgInZlbmRyZWRpIgogIExPQ0FMRV9TREFZTkFNRTYgInNhbWVkaSIKICBMT0NBTEVfU0RBWU5BTUU3ICJkaW1hbmNoZSIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJTd2l0emVybGFuZCIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJTd2lzcyBGcmFuYyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJGcmVuY2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQ0hGIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJDSCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJmciIKICBMT0NBTEVfU0xBTkdVQUdFICJGcmVuY2ggKFN3aXR6ZXJsYW5kKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZGRkZCwgZC4gTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW52aWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZul2cmllciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhdnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgImp1aW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJqdWlsbGV0IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU01PTlRITkFNRTkgInNlcHRlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJvY3RvYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImTpY2VtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICInIgogIExPQ0FMRV9TTkFNRSAiZnItQ0giCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiU3Vpc3NlIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkZyYW5jIHN1aXNzZSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJmcmFu52FpcyIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkLk1NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICInIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wZSBvY2NpZGVudGFsZSBldCDJdGF0cy1VbmlzIGQnQW3pcmlxdWUiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BlIGNlbnRyYWxlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aXF1ZSIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVjIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGlxdWUiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJjIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcG9uYWlzIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJDb3LpZW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGlub2lzIHRyYWRpdGlvbm5lbCIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hpbm9pcyBzaW1wbGlmaekiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGHvIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJI6WJyZXUiCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJlIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1pZW4iCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWVuIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkfpb3JnaWVuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybeluaWVuIgp9Cg==