LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKEZyYW5jZSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfRlJFTkNICnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzMyIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzMyIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjAyOTciCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MGMiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDAwIgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg2MDUiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQwYyIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lORVVUUkFMICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JUkVBRElOR0xBWU9VVCAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiRlJBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgImx1bi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAibWFyLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJtZXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgImpldS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAidmVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzYW0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgImRpbS4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRlJBIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiamFudi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJm6XZyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAianVpbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImp1aWwuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcHQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9jdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJk6WMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkZyYW5jZSIKICBMT0NBTEVfU0NVUlJFTkNZICKAIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJsdW5kaSIKICBMT0NBTEVfU0RBWU5BTUUyICJtYXJkaSIKICBMT0NBTEVfU0RBWU5BTUUzICJtZXJjcmVkaSIKICBMT0NBTEVfU0RBWU5BTUU0ICJqZXVkaSIKICBMT0NBTEVfU0RBWU5BTUU1ICJ2ZW5kcmVkaSIKICBMT0NBTEVfU0RBWU5BTUU2ICJzYW1lZGkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiZGltYW5jaGUiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiRnJhbmNlIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkV1cm8iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiRnJlbmNoIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkVVUiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiRlIiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZnIiCiAgTE9DQUxFX1NMQU5HVUFHRSAiRnJlbmNoIChGcmFuY2UpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkIGQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW52aWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZul2cmllciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhdnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgImp1aW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJqdWlsbGV0IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU01PTlRITkFNRTkgInNlcHRlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJvY3RvYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImTpY2VtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiZnItRlIiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiRnJhbmNlIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgImV1cm8iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAiZnJhbudhaXMgKEZyYW5jZSkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiZnJhbudhaXMiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJGUkEgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NIT1JUVElNRSAiSEg6bW0iCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wZSBvY2NpZGVudGFsZSBldCDJdGF0cy1VbmlzIGQnQW3pcmlxdWUiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BlIGNlbnRyYWxlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aXF1ZSIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVjIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGlxdWUiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJjIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcG9uYWlzIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJDb3LpZW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGlub2lzIHRyYWRpdGlvbm5lbCIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hpbm9pcyBzaW1wbGlmaekiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGHvIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJI6WJyZXUiCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJlIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1pZW4iCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWVuIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkfpb3JnaWVuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybeluaWVuIgp9Cg==