PD9waHAgCnJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsKcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAKcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCgokQXBwID0gbmV3IEFwcCgpOwokTmF2ID0gbmV3IE5hdigpOwokTWVudSA9IG5ldyBNZW51KCk7CgppbmNsdWRlKCRBcHAtPmdldFByb2plY3RDb21tb24oKSk7ICAgIAoKIwojIEJlZ2luOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzLiAgQ2hhbmdlIHRoZXNlLiAKJHBhZ2VUaXRsZSAJPSAiSGVuc2hpbiAtIEluc3RhbGxhdGlvbiI7CiRwYWdlS2V5d29yZHMJPSAiRU1GLCBIZW5zaGluLCBtb2RlbCB0cmFuc2Zvcm1hdGlvbiwgaW5zdGFsbGF0aW9uIjsKJHBhZ2VBdXRob3IJPSAiQ2hyaXN0aWFuIEtyYXVzZSwgRGFuaWVsIFN0cvxiZXIiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCiMgJE5hdi0+YWRkTmF2U2VwYXJhdG9yKCJNeSBQYWdlIExpbmtzIiwgCSJkb3dubG9hZHMucGhwIik7CiMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiLCAzKTsKIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDMpOwoKIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKIwoJCQojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKJGh0bWwgPSA8PDxFT0hUTUwKCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCjxkaXYgaWQ9Im1pZGNvbHVtbiI+CjxoMT4kcGFnZVRpdGxlPC9oMT4KCQkKCjxoMj5FY2xpcHNlIE94eWdlbjwvaDI+Cgo8cD4KSW5zdGFsbGluZyBIZW5zaGluIGluIEVjbGlwc2UgT3h5Z2VuIGN1cnJlbnRseSBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIHN0ZXBzICh0aGFua3MgdG8gPGEgaHJlZj0iaHR0cDovL2pncmVlbi5kZS8iIHRhcmdldD0iX2JsYW5rIj5Kb2VsIEdyZWVueWVyPC9hPiBmb3IgcHJvdmlkaW5nIHRoZXNlIGluc3RydWN0aW9ucyk6CjwvcD4KCjx1bD4KIDxsaT5JbnN0YWxsIEdNRiBUb29saW5nIHYzLjIuMSB2aWEgPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2dtcC9nbWYtdG9vbGluZy91cGRhdGVzL3JlbGVhc2VzLTMuMi4xLyI+VXBkYXRlIHNpdGU8L2E+IDxpPihyaWdodCBjbGljayAtPiBjb3B5Li4uKTwvaT48L2xpPgogPGxpPkluc3RhbGwgTTJFY2xpcHNlIHZpYSA8YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvdGVjaG5vbG9neS9tMmUvcmVsZWFzZXMiPlVwZGF0ZSBzaXRlPC9hPiA8aT4ocmlnaHQgY2xpY2sgLT4gY29weS4uLik8L2k+PC9saT4KIDxsaT5JbnN0YWxsIHRoZSByZXF1aXJlZCBIZW5zaGluIHZlcnNpb24gKGZvciBleGFtcGxlLCA8YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvcmVsZWFzZSI+Q3VycmVudCBSZWxlYXNlPC9hPiBvciA8YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvbmlnaHRseSI+TmlnaHRseSBCdWlsZDwvYT4pPC9saT4KPC91bD4KCjxwPgpXZSBob3BlIHRvIG1ha2UgYXZhaWxhYmxlIGEgbW9yZSBjb252ZW5pZW50IGluc3RhbGxhdGlvbiBvcHRpb24gc29vbi4gCjwvcD4KCjxoMj5FY2xpcHNlIEtlcGxlciwgTHVuYSwgTWFycyBvciBOZW9uPC9oMj4KCQkKPHA+CkhlbnNoaW4gY2FuIGJlIGluc3RhbGxlZCBkaXJlY3RseSBmcm9tIHRoZSA8YSBocmVmPSJodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvaGVuc2hpbi1pbmN1YmF0aW9uIj5FY2xpcHNlIE1hcmtldHBsYWNlPC9hPi4KPC9wPgoKPHA+CkFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIG9uZSBvZiBvdXIgdXBkYXRlIHNpdGVzIGJlbG93IGFuZCBpbnN0YWxsIEhlbnNoaW4gdXNpbmcgdGhlIHVwZGF0ZSBtYW5hZ2VyIGluIEVjbGlwc2UuCjwvcD4KCgo8aDI+VXBkYXRlIFNpdGVzPC9oMj4KPHA+ClNpbXBseSBnbyB0byA8aT5IZWxwIC0+IEluc3RhbGwgTmV3IFNvZnR3YXJlLi4uPC9pPiBhbmQgZW50ZXIgb25lIG9mIHRoZSBmb2xsb3dpbmcgVVJMczoKPHVsPgo8bGk+Q3VycmVudCByZWxlYXNlOiA8YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvcmVsZWFzZSI+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzL3JlbGVhc2U8L2E+ICgxLjQuMCk8L2xpPgo8bGk+TmlnaHRseSBidWlsZHM6IDxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy9uaWdodGx5Ij5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvbmlnaHRseTwvYT48L2xpPgo8bGk+UGVybWFuZW50IFVSTHMgb2YgY3VycmVudCBhbmQgcHJldmlvdXMgcmVsZWFzZXM6Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8xLjQuMCI+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuNC4wPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS4yLjAiPmh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8xLjIuMDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuMC4wIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS4wLjA8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8wLjkuMiI+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzAuOS4yPC9hPjwvbGk+CjwvdWw+Cgo8L3VsPgo8L3A+CgoKPGgyPlNvdXJjZXM8L2gyPgo8cD4KWW91IGNhbiBhbHNvIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHNvdXJjZSBjb2RlIGRpcmVjdGx5IGZyb20gb3VyIEdpdCByZXBvc2l0b3J5ICh3ZWJsaW5rKToKPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL2dpdC5lY2xpcHNlLm9yZy9jL2hlbnNoaW4vb3JnLmVjbGlwc2UuZW1mdC5oZW5zaGluLmdpdC8iPmh0dHA6Ly9naXQuZWNsaXBzZS5vcmcvYy9oZW5zaGluL29yZy5lY2xpcHNlLmVtZnQuaGVuc2hpbi5naXQvPC9hPjwvbGk+CjwvdWw+CjwvcD4KCgo8aDI+QnVpbGQgSm9iczwvaDI+CjxwPgpSZWxlYXNlIGFuZCBuaWdobHkgYnVpbGRzIGFyZSBjb21waWxlZCB1c2luZyBIdWRzb24gam9iczoKPHVsPgo8bGk+UmVsZWFzZXM6IDxhIGhyZWY9Imh0dHBzOi8vaHVkc29uLmVjbGlwc2Uub3JnL2h1ZHNvbi9qb2IvY2JpX2hlbnNoaW5fcmVsZWFzZS8iPmh0dHBzOi8vaHVkc29uLmVjbGlwc2Uub3JnL2h1ZHNvbi9qb2IvY2JpX2hlbnNoaW5fcmVsZWFzZTwvYT48L2xpPgo8bGk+TmlnaHRseSBCdWlsZHM6IDxhIGhyZWY9Imh0dHBzOi8vaHVkc29uLmVjbGlwc2Uub3JnL2h1ZHNvbi9qb2IvY2JpX2hlbnNoaW5fbmlnaHRseS8iPmh0dHBzOi8vaHVkc29uLmVjbGlwc2Uub3JnL2h1ZHNvbi9qb2IvY2JpX2hlbnNoaW5fbmlnaHRseTwvYT48L2xpPgo8L3VsPgo8L3A+CgoKPCEtLQoKPGRpdiBjbGFzcz0iaG9tZWl0ZW0iPgo8aDM+TmFycm93IGNvbHVtbjwvaDM+Cjx1bD4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPC91bD4KPC9kaXY+CgkJCjxkaXYgY2xhc3M9ImhvbWVpdGVtIj4KPGgzPk5hcnJvdyBjb2x1bW48L2gzPgo8dWw+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJob21laXRlbTNjb2wiPgo8aDM+VGhpcyBpcyBhIHdpZGUgY29sdW1uPC9oMz4KPHVsPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8L3VsPgo8L2Rpdj4KPGhyIGNsYXNzPSJjbGVhcmVyIiAvPgo8cD5Tb21lIGZyZWUgdGV4dDwvcD4KPHVsIGNsYXNzPSJtaWRsaXN0Ij4KPGxpPmxpc3Qgb2YgaXRlbXMgaW4gZnJlZSB0ZXh0PC9saT4KPGxpPmxpc3Qgb2YgaXRlbXMgaW4gZnJlZSB0ZXh0PC9saT4KPGxpPmxpc3Qgb2YgaXRlbXMgaW4gZnJlZSB0ZXh0PC9saT4KPC91bD4KPG9sPgo8bGk+T3JkZXJlZCBsaXN0PC9saT4KPGxpPk9yZGVyZWQgbGlzdDwvbGk+CjxsaT5PcmRlcmVkIGxpc3Q8L2xpPgo8L29sPgoJCi0tPgoJCQo8L2Rpdj4KPC9kaXY+CgpFT0hUTUw7CgojIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQokQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKCj8+Cg==