JWdsb2JhbCBWRVJTSU9OICBAUEFDS0FHRV9WRVJTSU9OQAolZ2xvYmFsIFBhdGNobGV2ZWwgIEBQQUNLQUdFX1JFTEVBU0VACgpOYW1lOiAgICAgICAgICAgQFBBQ0tBR0VfTkFNRUAKVmVyc2lvbjogICAgICAgICV7VkVSU0lPTn0KUmVsZWFzZTogICAgICAgICV7UGF0Y2hsZXZlbH0KU3VtbWFyeTogICAgICAgIFVzZSBJbWFnZU1hZ2ljayB0byBjb252ZXJ0LCBlZGl0LCBvciBjb21wb3NlIGJpdG1hcCBpbWFnZXMgaW4gYSB2YXJpZXR5IG9mIGZvcm1hdHMuICBJbiBhZGRpdGlvbiByZXNpemUsIHJvdGF0ZSwgc2hlYXIsIGRpc3RvcnQgYW5kIHRyYW5zZm9ybSBpbWFnZXMuCkdyb3VwOiAgICAgICAgICBBcHBsaWNhdGlvbnMvTXVsdGltZWRpYQpMaWNlbnNlOiAgICAgICAgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcvc2NyaXB0L2xpY2Vuc2UucGhwClVybDogICAgICAgICAgICBodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZy8KU291cmNlMDogICAgICAgIGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnL2Rvd25sb2FkLyV7bmFtZX0vJXtuYW1lfS0le1ZFUlNJT059LSV7UGF0Y2hsZXZlbH0udGFyLmJ6MgoKQnVpbGRSb290OiAgICAgICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LXJvb3QtJSgle19faWRfdX0gLW4pCkJ1aWxkUmVxdWlyZXM6ICBiemlwMi1kZXZlbCwgZnJlZXR5cGUtZGV2ZWwsIGxpYmpwZWctZGV2ZWwsIGxpYnBuZy1kZXZlbApCdWlsZFJlcXVpcmVzOiAgbGlidGlmZi1kZXZlbCwgZ2lmbGliLWRldmVsLCB6bGliLWRldmVsLCBwZXJsLWRldmVsID49IDUuOC4xCkJ1aWxkUmVxdWlyZXM6ICBnaG9zdHNjcmlwdC1kZXZlbCwgZGp2dWxpYnJlLWRldmVsCkJ1aWxkUmVxdWlyZXM6ICBsaWJ3bWYtZGV2ZWwsIGphc3Blci1kZXZlbCwgbGlidG9vbC1sdGRsLWRldmVsCkJ1aWxkUmVxdWlyZXM6ICBsaWJYMTEtZGV2ZWwsIGxpYlhleHQtZGV2ZWwsIGxpYlh0LWRldmVsCkJ1aWxkUmVxdWlyZXM6ICBsY21zLWRldmVsLCBsaWJ4bWwyLWRldmVsLCBsaWJyc3ZnMi1kZXZlbCwgT3BlbkVYUi1kZXZlbAoKJWRlc2NyaXB0aW9uCkltYWdlTWFnaWNrIGlzIGEgc29mdHdhcmUgc3VpdGUgdG8gY3JlYXRlLCBlZGl0LCBhbmQgY29tcG9zZSBiaXRtYXAgaW1hZ2VzLiBJdApjYW4gcmVhZCwgY29udmVydCBhbmQgd3JpdGUgaW1hZ2VzIGluIGEgdmFyaWV0eSBvZiBmb3JtYXRzIChhYm91dCAxMDApCmluY2x1ZGluZyBEUFgsIEdJRiwgSlBFRywgSlBFRy0yMDAwLCBQREYsIFBob3RvQ0QsIFBORywgUG9zdHNjcmlwdCwgU1ZHLAphbmQgVElGRi4gVXNlIEltYWdlTWFnaWNrIHRvIHRyYW5zbGF0ZSwgZmxpcCwgbWlycm9yLCByb3RhdGUsIHNjYWxlLCBzaGVhcgphbmQgdHJhbnNmb3JtIGltYWdlcywgYWRqdXN0IGltYWdlIGNvbG9ycywgYXBwbHkgdmFyaW91cyBzcGVjaWFsIGVmZmVjdHMsCm9yIGRyYXcgdGV4dCwgbGluZXMsIHBvbHlnb25zLCBlbGxpcHNlcyBhbmQgQul6aWVyIGN1cnZlcy4KClRoZSBmdW5jdGlvbmFsaXR5IG9mIEltYWdlTWFnaWNrIGlzIHR5cGljYWxseSB1dGlsaXplZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUKb3IgeW91IGNhbiB1c2UgdGhlIGZlYXR1cmVzIGZyb20gcHJvZ3JhbXMgd3JpdHRlbiBpbiB5b3VyIGZhdm9yaXRlIHByb2dyYW1taW5nCmxhbmd1YWdlLiBDaG9vc2UgZnJvbSB0aGVzZSBpbnRlcmZhY2VzOiBHMkYgKEFkYSksIE1hZ2lja0NvcmUgKEMpLCBNYWdpY2tXYW5kCihDKSwgQ2hNYWdpY2sgKENoKSwgTWFnaWNrKysgKEMrKyksIEpNYWdpY2sgKEphdmEpLCBMLU1hZ2ljayAoTGlzcCksIG5NYWdpY2sKKE5la28vaGFYZSksIFBhc2NhbE1hZ2ljayAoUGFzY2FsKSwgUGVybE1hZ2ljayAoUGVybCksIE1hZ2lja1dhbmQgZm9yIFBIUAooUEhQKSwgUHl0aG9uTWFnaWNrIChQeXRob24pLCBSTWFnaWNrIChSdWJ5KSwgb3IgVGNsTWFnaWNrIChUY2wvVEspLiBXaXRoIGEKbGFuZ3VhZ2UgaW50ZXJmYWNlLCB1c2UgSW1hZ2VNYWdpY2sgdG8gbW9kaWZ5IG9yIGNyZWF0ZSBpbWFnZXMgYXV0b21hZ2ljYWxseQphbmQgZHluYW1pY2FsbHkuCgpJbWFnZU1hZ2ljayBpcyBmcmVlIHNvZnR3YXJlIGRlbGl2ZXJlZCBhcyBhIHJlYWR5LXRvLXJ1biBiaW5hcnkgZGlzdHJpYnV0aW9uCm9yIGFzIHNvdXJjZSBjb2RlIHRoYXQgeW91IG1heSBmcmVlbHkgdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIGluCmJvdGggb3BlbiBhbmQgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zLiBJdCBpcyBkaXN0cmlidXRlZCB1bmRlciBhbiBBcGFjaGUKMi4wLXN0eWxlIGxpY2Vuc2UsIGFwcHJvdmVkIGJ5IHRoZSBPU0kuCgpUaGUgSW1hZ2VNYWdpY2sgZGV2ZWxvcG1lbnQgcHJvY2VzcyBlbnN1cmVzIGEgc3RhYmxlIEFQSSBhbmQgQUJJLiBCZWZvcmUKZWFjaCBJbWFnZU1hZ2ljayByZWxlYXNlLCB3ZSBwZXJmb3JtIGEgY29tcHJlaGVuc2l2ZSBzZWN1cml0eSBhc3Nlc3NtZW50IHRoYXQKaW5jbHVkZXMgbWVtb3J5IGFuZCB0aHJlYWQgZXJyb3IgZGV0ZWN0aW9uIHRvIGhlbHAgcHJldmVudCBleHBsb2l0cy5JbWFnZU1hZ2ljawppcyBmcmVlIHNvZnR3YXJlIGRlbGl2ZXJlZCBhcyBhIHJlYWR5LXRvLXJ1biBiaW5hcnkgZGlzdHJpYnV0aW9uIG9yIGFzIHNvdXJjZQpjb2RlIHRoYXQgeW91IG1heSBmcmVlbHkgdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIGluIGJvdGggb3BlbiBhbmQKcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zLiBJdCBpcyBkaXN0cmlidXRlZCB1bmRlciBhbiBBcGFjaGUgMi4wLXN0eWxlIGxpY2Vuc2UsCmFwcHJvdmVkIGJ5IHRoZSBPU0kuCgoKJXBhY2thZ2UgZGV2ZWwKU3VtbWFyeTogTGlicmFyeSBsaW5rcyBhbmQgaGVhZGVyIGZpbGVzIGZvciBJbWFnZU1hZ2ljayBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudApHcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzClJlcXVpcmVzOiAle25hbWV9ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9ClJlcXVpcmVzOiBsaWJYMTEtZGV2ZWwsIGxpYlhleHQtZGV2ZWwsIGxpYlh0LWRldmVsClJlcXVpcmVzOiBnaG9zdHNjcmlwdC1kZXZlbApSZXF1aXJlczogYnppcDItZGV2ZWwKUmVxdWlyZXM6IGZyZWV0eXBlLWRldmVsClJlcXVpcmVzOiBsaWJ0aWZmLWRldmVsClJlcXVpcmVzOiBsaWJqcGVnLWRldmVsClJlcXVpcmVzOiBsY21zLWRldmVsClJlcXVpcmVzOiBqYXNwZXItZGV2ZWwKUmVxdWlyZXM6IHBrZ2NvbmZpZwoKJWRlc2NyaXB0aW9uIGRldmVsCkltYWdlTWFnaWNrLWRldmVsIGNvbnRhaW5zIHRoZSBsaWJyYXJ5IGxpbmtzIGFuZCBoZWFkZXIgZmlsZXMgeW91J2xsCm5lZWQgdG8gZGV2ZWxvcCBJbWFnZU1hZ2ljayBhcHBsaWNhdGlvbnMuIEltYWdlTWFnaWNrIGlzIGFuIGltYWdlCm1hbmlwdWxhdGlvbiBwcm9ncmFtLgoKSWYgeW91IHdhbnQgdG8gY3JlYXRlIGFwcGxpY2F0aW9ucyB0aGF0IHdpbGwgdXNlIEltYWdlTWFnaWNrIGNvZGUgb3IKQVBJcywgeW91IG5lZWQgdG8gaW5zdGFsbCBJbWFnZU1hZ2ljay1kZXZlbCBhcyB3ZWxsIGFzIEltYWdlTWFnaWNrLgpZb3UgZG8gbm90IG5lZWQgdG8gaW5zdGFsbCBpdCBpZiB5b3UganVzdCB3YW50IHRvIHVzZSBJbWFnZU1hZ2ljaywKaG93ZXZlci4KCiVwYWNrYWdlIGRqdnUKU3VtbWFyeTogRGpWdSBwbHVnaW4gZm9yIEltYWdlTWFnaWNrCkdyb3VwOiBBcHBsaWNhdGlvbnMvTXVsdGltZWRpYQpSZXF1aXJlczogJXtuYW1lfSA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQoKJWRlc2NyaXB0aW9uIGRqdnUKVGhpcyBwYWNrYWdlcyBjb250YWlucyBhIHBsdWdpbiBmb3IgSW1hZ2VNYWdpY2sgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8Kc2F2ZSBhbmQgbG9hZCBEanZVIGZpbGVzIGZyb20gSW1hZ2VNYWdpY2sgYW5kIGxpYk1hZ2lja0NvcmUgdXNpbmcgYXBwbGljYXRpb25zLgoKCiVwYWNrYWdlIGRvYwpTdW1tYXJ5OiBJbWFnZU1hZ2ljayBIVE1MIGRvY3VtZW50YXRpb24KR3JvdXA6IERvY3VtZW50YXRpb24KCiVkZXNjcmlwdGlvbiBkb2MKSW1hZ2VNYWdpY2sgZG9jdW1lbnRhdGlvbiwgdGhpcyBwYWNrYWdlIGNvbnRhaW5zIHVzYWdlIChmb3IgdGhlCmNvbW1hbmRsaW5lIHRvb2xzKSBhbmQgQVBJIChmb3IgdGhlIGxpYnJhcmllcykgZG9jdW1lbnRhdGlvbiBpbiBIVE1MIGZvcm1hdC4KTm90ZSB0aGlzIGRvY3VtZW50YXRpb24gY2FuIGFsc28gYmUgZm91bmQgb24gdGhlIEltYWdlTWFnaWNrIHdlYnNpdGU6Cmh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnLy4KCgolcGFja2FnZSBwZXJsClN1bW1hcnk6IEltYWdlTWFnaWNrIHBlcmwgYmluZGluZ3MKR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKUmVxdWlyZXM6ICV7bmFtZX0gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KUmVxdWlyZXM6IHBlcmwoOk1PRFVMRV9DT01QQVRfJShldmFsICJgJXtfX3Blcmx9IC1WOnZlcnNpb25gIjsgZWNobyAkdmVyc2lvbikpCgoKJWRlc2NyaXB0aW9uIHBlcmwKUGVybCBiaW5kaW5ncyB0byBJbWFnZU1hZ2ljay4KCkluc3RhbGwgSW1hZ2VNYWdpY2stcGVybCBpZiB5b3Ugd2FudCB0byB1c2UgYW55IHBlcmwgc2NyaXB0cyB0aGF0IHVzZQpJbWFnZU1hZ2ljay4KCgolcGFja2FnZSBjKysKU3VtbWFyeTogSW1hZ2VNYWdpY2sgTWFnaWNrKysgbGlicmFyeSAoQysrIGJpbmRpbmdzKQpHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwpSZXF1aXJlczogJXtuYW1lfSA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQoKJWRlc2NyaXB0aW9uIGMrKwpUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIE1hZ2ljaysrIGxpYnJhcnksIGEgQysrIGJpbmRpbmcgdG8gdGhlIEltYWdlTWFnaWNrCmdyYXBoaWNzIG1hbmlwdWxhdGlvbiBsaWJyYXJ5LgoKSW5zdGFsbCBJbWFnZU1hZ2ljay1jKysgaWYgeW91IHdhbnQgdG8gdXNlIGFueSBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgTWFnaWNrKysuCgoKJXBhY2thZ2UgYysrLWRldmVsClN1bW1hcnk6IEMrKyBiaW5kaW5ncyBmb3IgdGhlIEltYWdlTWFnaWNrIGxpYnJhcnkKR3JvdXA6IERldmVsb3BtZW50L0xpYnJhcmllcwpSZXF1aXJlczogJXtuYW1lfS1jKysgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KUmVxdWlyZXM6ICV7bmFtZX0tZGV2ZWwgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KCiVkZXNjcmlwdGlvbiBjKystZGV2ZWwKSW1hZ2VNYWdpY2stZGV2ZWwgY29udGFpbnMgdGhlIHN0YXRpYyBsaWJyYXJpZXMgYW5kIGhlYWRlciBmaWxlcyB5b3UnbGwKbmVlZCB0byBkZXZlbG9wIEltYWdlTWFnaWNrIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgTWFnaWNrKysgQysrIGJpbmRpbmdzLgpJbWFnZU1hZ2ljayBpcyBhbiBpbWFnZSBtYW5pcHVsYXRpb24gcHJvZ3JhbS4KCklmIHlvdSB3YW50IHRvIGNyZWF0ZSBhcHBsaWNhdGlvbnMgdGhhdCB3aWxsIHVzZSBNYWdpY2srKyBjb2RlCm9yIEFQSXMsIHlvdSdsbCBuZWVkIHRvIGluc3RhbGwgSW1hZ2VNYWdpY2stYysrLWRldmVsLCBJbWFnZU1hZ2ljay1kZXZlbCBhbmQKSW1hZ2VNYWdpY2suCgpZb3UgZG9uJ3QgbmVlZCB0byBpbnN0YWxsIGl0IGlmIHlvdSBqdXN0IHdhbnQgdG8gdXNlIEltYWdlTWFnaWNrLCBvciBpZiB5b3UKd2FudCB0byBkZXZlbG9wL2NvbXBpbGUgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBJbWFnZU1hZ2ljayBDIGludGVyZmFjZSwKaG93ZXZlci4KCgolcHJlcAolc2V0dXAgLXEgLW4gJXtuYW1lfS0le1ZFUlNJT059LSV7UGF0Y2hsZXZlbH0Kc2VkIC1pICdzL2xpYmx0ZGwubGEvbGlibHRkbC5zby9nJyBjb25maWd1cmUKaWNvbnYgLWYgSVNPLTg4NTktMSAtdCBVVEYtOCBSRUFETUUudHh0ID4gUkVBRE1FLnR4dC50bXAKdG91Y2ggLXIgUkVBRE1FLnR4dCBSRUFETUUudHh0LnRtcAptdiBSRUFETUUudHh0LnRtcCBSRUFETUUudHh0CiMgZm9yICUlZG9jCm1rZGlyIE1hZ2ljaysrL2V4YW1wbGVzCmNwIC1wIE1hZ2ljaysrL2RlbW8vKi5jcHAgTWFnaWNrKysvZGVtby8qLm1pZmYgTWFnaWNrKysvZXhhbXBsZXMKCiVidWlsZAolY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZCBcCiAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCiAgICAgICAgICAgLS13aXRoLW1vZHVsZXMgXAogICAgICAgICAgIC0td2l0aC1wZXJsIFwKICAgICAgICAgICAtLXdpdGgteCBcCiAgICAgICAgICAgLS13aXRoLXRocmVhZHMgXAogICAgICAgICAgIC0td2l0aC1tYWdpY2tfcGx1c19wbHVzIFwKICAgICAgICAgICAtLXdpdGgtZ3NsaWIgXAogICAgICAgICAgIC0td2l0aC13bWYgXAogICAgICAgICAgIC0td2l0aC1sY21zIFwKICAgICAgICAgICAtLXdpdGgtcnN2ZyBcCiAgICAgICAgICAgLS13aXRoLXhtbCBcCiAgICAgICAgICAgLS13aXRoLXBlcmwtb3B0aW9ucz0iSU5TVEFMTERJUlM9dmVuZG9yICV7P3BlcmxfcHJlZml4fSBDQz0nJV9fY2MgLUwkUFdEL21hZ2ljay8ubGlicycgTERETEZMQUdTPSctc2hhcmVkIC1MJFBXRC9tYWdpY2svLmxpYnMnIiBcCiAgICAgICAgICAgLS13aXRob3V0LWRwcyBcCiAgICAgICAgICAgLS13aXRob3V0LWluY2x1ZGVkLWx0ZGwgLS13aXRoLWx0ZGwtaW5jbHVkZT0le19pbmNsdWRlZGlyfSBcCiAgICAgICAgICAgLS13aXRoLWx0ZGwtbGliPSV7X2xpYmRpcn0KIyBEaXNhYmxlIHJwYXRoCnNlZCAtaSAnc3xeaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0uKnxoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIifGcnIGxpYnRvb2wKc2VkIC1pICdzfF5ydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSHxydW5wYXRoX3Zhcj1ESUVfUlBBVEhfRElFfGcnIGxpYnRvb2wKIyBEbyAqTk9UKiB1c2UgJSV7P19zbXBfbWZsYWdzfSwgdGhpcyBjYXVzZXMgUGVybE1hZ2ljayB0byBiZSBzaWxlbnRseSBtaXNidWlsZAptYWtlCgoKJWluc3RhbGwKcm0gLXJmICV7YnVpbGRyb290fQoKbWFrZSBpbnN0YWxsIERFU1RESVI9JXtidWlsZHJvb3R9IElOU1RBTEw9Imluc3RhbGwgLXAiCmNwIC1hIHd3dy9zb3VyY2UgJXtidWlsZHJvb3R9JXtfZGF0YWRpcn0vZG9jLyV7bmFtZX0tJXtWRVJTSU9OfQpybSAle2J1aWxkcm9vdH0le19saWJkaXJ9LyoubGEKCiMgZml4IHdlaXJkIHBlcmwgTWFnaWNrLnNvIHBlcm1pc3Npb25zCmNobW9kIDc1NSAle2J1aWxkcm9vdH0le3BlcmxfdmVuZG9yYXJjaH0vYXV0by9JbWFnZS9NYWdpY2svTWFnaWNrLnNvCgojIHBlcmxtYWdpY2s6IGZpeCBwZXJsIHBhdGggb2YgZGVtbyBmaWxlcwole19fcGVybH0gLU1FeHRVdGlsczo6TWFrZU1ha2VyIC1lICdNWS0+Zml4aW4oQEFSR1YpJyBQZXJsTWFnaWNrL2RlbW8vKi5wbAoKIyBwZXJsbWFnaWNrOiBjbGVhbnVwIHZhcmlvdXMgcGVybCB0ZW1wZmlsZXMgZnJvbSB0aGUgYnVpbGQgd2hpY2ggZ2V0IGluc3RhbGxlZApmaW5kICV7YnVpbGRyb290fSAtbmFtZSAiKi5icyIgfHhhcmdzIHJtIC1mCmZpbmQgJXtidWlsZHJvb3R9IC1uYW1lICIucGFja2xpc3QiIHx4YXJncyBybSAtZgpmaW5kICV7YnVpbGRyb290fSAtbmFtZSAicGVybGxvY2FsLnBvZCIgfHhhcmdzIHJtIC1mCgojIHBlcmxtYWdpY2s6IGJ1aWxkIGZpbGVzIGxpc3QKZWNobyAiJWRlZmF0dHIoLSxyb290LHJvb3QsLSkiID4gcGVybC1wa2ctZmlsZXMKZmluZCAle2J1aWxkcm9vdH0vJXtfbGliZGlyfS9wZXJsKiAtdHlwZSBmIC1wcmludCBcCiAgICAgICAgfCBzZWQgInNAXiV7YnVpbGRyb290fUBAZyIgPiBwZXJsLXBrZy1maWxlcyAKZmluZCAle2J1aWxkcm9vdH0le3BlcmxfdmVuZG9yYXJjaH0gLXR5cGUgZCAtcHJpbnQgXAogICAgICAgIHwgc2VkICJzQF4le2J1aWxkcm9vdH1AJWRpciBAZyIgXAogICAgICAgIHwgZ3JlcCAtdiAnXiVkaXIgJXtwZXJsX3ZlbmRvcmFyY2h9JCcgXAogICAgICAgIHwgZ3JlcCAtdiAnL2F1dG8kJyA+PiBwZXJsLXBrZy1maWxlcyAKaWYgWyAteiBwZXJsLXBrZy1maWxlcyBdIDsgdGhlbgogICAgZWNobyAiRVJST1I6IEVNUFRZIEZJTEUgTElTVCIKICAgIGV4aXQgLTEKZmkKCiMgZml4IG11bHRpbGliIGlzc3VlcwolaWZhcmNoIHg4Nl82NCBzMzkweCBpYTY0IHBwYzY0IGFscGhhIHNwYXJjNjQKJWRlZmluZSB3b3Jkc2l6ZSA2NAolZWxzZQolZGVmaW5lIHdvcmRzaXplIDMyCiVlbmRpZgoKbXYgJXtidWlsZHJvb3R9JXtfaW5jbHVkZWRpcn0vJXtuYW1lfS9tYWdpY2svbWFnaWNrLWNvbmZpZy5oIFwKICAgJXtidWlsZHJvb3R9JXtfaW5jbHVkZWRpcn0vJXtuYW1lfS9tYWdpY2svbWFnaWNrLWNvbmZpZy0le3dvcmRzaXplfS5oCgpjYXQgPiV7YnVpbGRyb290fSV7X2luY2x1ZGVkaXJ9LyV7bmFtZX0vbWFnaWNrL21hZ2ljay1jb25maWcuaCA8PEVPRgojaWZuZGVmIElNQUdFTUFHSUNLX01VTFRJTElCCiNkZWZpbmUgSU1BR0VNQUdJQ0tfTVVMVElMSUIKCiNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+CgojaWYgX19XT1JEU0laRSA9PSAzMgojIGluY2x1ZGUgIm1hZ2ljay1jb25maWctMzIuaCIKI2VsaWYgX19XT1JEU0laRSA9PSA2NAojIGluY2x1ZGUgIm1hZ2ljay1jb25maWctNjQuaCIKI2Vsc2UKIyBlcnJvciAidW5leHBlY3RlZCB2YWx1ZSBmb3IgX19XT1JEU0laRSBtYWNybyIKI2VuZGlmCgojZW5kaWYKRU9GCgolY2xlYW4Kcm0gLXJmICV7YnVpbGRyb290fQoKJXBvc3QgLXAgL3NiaW4vbGRjb25maWcKCiVwb3N0IGMrKyAtcCAvc2Jpbi9sZGNvbmZpZwoKJXBvc3R1biAtcCAvc2Jpbi9sZGNvbmZpZwoKJXBvc3R1biBjKysgLXAgL3NiaW4vbGRjb25maWcKCiVmaWxlcwolZGVmYXR0cigtLHJvb3Qscm9vdCwtKQolZG9jIFF1aWNrU3RhcnQudHh0IENoYW5nZUxvZyBQbGF0Zm9ybXMudHh0CiVkb2MgUkVBRE1FLnR4dCBMSUNFTlNFIE5PVElDRSBBVVRIT1JTLnR4dCBORVdTLnR4dAole19saWJkaXJ9L2xpYk1hZ2lja0NvcmUuc28qCiV7X2xpYmRpcn0vbGliTWFnaWNrV2FuZC5zbyoKJXtfYmluZGlyfS9bYS16XSoKJXtfbGliZGlyfS8le25hbWV9LSV7VkVSU0lPTn0KJXtfZGF0YWRpcn0vJXtuYW1lfS0le1ZFUlNJT059CiV7X21hbmRpcn0vbWFuWzE0NV0vW2Etel0qCiV7X21hbmRpcn0vbWFuMS8le25hbWV9LioKJWV4Y2x1ZGUgJXtfbGliZGlyfS8le25hbWV9LSV7VkVSU0lPTn0vbW9kdWxlcy1RMTYvY29kZXJzL2RqdnUuKgole19zeXNjb25mZGlyfS8le25hbWV9CgoKJWZpbGVzIGRldmVsCiVkZWZhdHRyKC0scm9vdCxyb290LC0pCiV7X2JpbmRpcn0vTWFnaWNrQ29yZS1jb25maWcKJXtfYmluZGlyfS9NYWdpY2tXYW5kLWNvbmZpZwole19saWJkaXJ9L2xpYk1hZ2lja0NvcmUuc28qCiV7X2xpYmRpcn0vbGliTWFnaWNrV2FuZC5zbyoKJXtfbGliZGlyfS9wa2djb25maWcvTWFnaWNrQ29yZS5wYwole19saWJkaXJ9L3BrZ2NvbmZpZy9JbWFnZU1hZ2ljay5wYwole19saWJkaXJ9L3BrZ2NvbmZpZy9NYWdpY2tXYW5kLnBjCiVkaXIgJXtfaW5jbHVkZWRpcn0vJXtuYW1lfQole19pbmNsdWRlZGlyfS8le25hbWV9L01hZ2lja0NvcmUKJXtfaW5jbHVkZWRpcn0vJXtuYW1lfS9NYWdpY2tXYW5kCiV7X21hbmRpcn0vbWFuMS9NYWdpY2tDb3JlLWNvbmZpZy4qCiV7X21hbmRpcn0vbWFuMS9NYWdpY2tXYW5kLWNvbmZpZy4qCgolZmlsZXMgZGp2dQolZGVmYXR0cigtLHJvb3Qscm9vdCwtKQole19saWJkaXJ9LyV7bmFtZX0tJXt2ZXJzaW9ufS9tb2R1bGVzLVExNi9jb2RlcnMvZGp2dS4qCgolZmlsZXMgZG9jCiVkZWZhdHRyKC0scm9vdCxyb290LC0pCiVkb2MgJXtfZGF0YWRpcn0vZG9jLyV7bmFtZX0tJXtWRVJTSU9OfQolZG9jIExJQ0VOU0UKCiVmaWxlcyBjKysKJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKJWRvYyBNYWdpY2srKy9BVVRIT1JTIE1hZ2ljaysrL0NoYW5nZUxvZyBNYWdpY2srKy9ORVdTIE1hZ2ljaysrL1JFQURNRQolZG9jIHd3dy9NYWdpY2srKy9DT1BZSU5HCiV7X2xpYmRpcn0vbGliTWFnaWNrKysuc28qCgolZmlsZXMgYysrLWRldmVsCiVkZWZhdHRyKC0scm9vdCxyb290LC0pCiVkb2MgTWFnaWNrKysvZXhhbXBsZXMKJXtfYmluZGlyfS9NYWdpY2srKy1jb25maWcKJXtfaW5jbHVkZWRpcn0vJXtuYW1lfS9NYWdpY2srKwole19pbmNsdWRlZGlyfS8le25hbWV9L01hZ2ljaysrLmgKJXtfbGliZGlyfS9saWJNYWdpY2srKy5zbyoKJXtfbGliZGlyfS9wa2djb25maWcvTWFnaWNrKysucGMKJXtfbGliZGlyfS9wa2djb25maWcvSW1hZ2VNYWdpY2srKy5wYwole19tYW5kaXJ9L21hbjEvTWFnaWNrKystY29uZmlnLioKCiVmaWxlcyBwZXJsIC1mIHBlcmwtcGtnLWZpbGVzCiVkZWZhdHRyKC0scm9vdCxyb290LC0pCiV7X21hbmRpcn0vbWFuMy8qCiVkb2MgUGVybE1hZ2ljay9kZW1vLyBQZXJsTWFnaWNrL0NoYW5nZWxvZyBQZXJsTWFnaWNrL1JFQURNRS50eHQKCgolY2hhbmdlbG9nCiogU3VuIE1heSAwMSAyMDA1IENyaXN0eSA8Y3Jpc3R5QG15c3RpYy5lcy5kdXBvbnQuY29tPiAxLjAtMAotICBQb3J0IG9mIFJlZGhhdCdzIFJQTSBzY3JpcHQgdG8gc3VwcG9ydCBJbWFnZU1hZ2ljay4K