PD9waHAgCnJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsKcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAKcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCgokQXBwID0gbmV3IEFwcCgpOwokTmF2ID0gbmV3IE5hdigpOwokTWVudSA9IG5ldyBNZW51KCk7CgppbmNsdWRlKCRBcHAtPmdldFByb2plY3RDb21tb24oKSk7ICAgIAoKIwojIEJlZ2luOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzLiAgQ2hhbmdlIHRoZXNlLiAKJHBhZ2VUaXRsZSAJPSAiSGVuc2hpbiAtIEluc3RhbGxhdGlvbiI7CiRwYWdlS2V5d29yZHMJPSAiRU1GLCBIZW5zaGluLCBtb2RlbCB0cmFuc2Zvcm1hdGlvbiwgaW5zdGFsbGF0aW9uIjsKJHBhZ2VBdXRob3IJPSAiQ2hyaXN0aWFuIEtyYXVzZSwgRGFuaWVsIFN0cvxiZXIiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCiMgJE5hdi0+YWRkTmF2U2VwYXJhdG9yKCJNeSBQYWdlIExpbmtzIiwgCSJkb3dubG9hZHMucGhwIik7CiMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiLCAzKTsKIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDMpOwoKIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKIwoJCQojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKJGh0bWwgPSA8PDxFT0hUTUwKCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCjxkaXYgaWQ9Im1pZGNvbHVtbiI+CjxoMT4kcGFnZVRpdGxlPC9oMT4KCQkKPGgyPkluc3RhbGwgZnJvbSB1cGRhdGUgc2l0ZTwvaDI+Cgo8cD5IZW5zaGluIGlzIGFuIEVjbGlwc2UgcGx1Zy1pbiBmb3IgcmVjZW50IHZlcnNpb25zIG9mIHRoZSBFY2xpcHNlIE1vZGVsaW5nIFRvb2xzIChsYXN0IHRlc3RlZCB2ZXJzaW9uOiAyMDE5LTEyKS4gVG8gb2J0YWluIHRoZSBtb3N0IHJlY2VudCBFY2xpcHNlIHZlcnNpb24sIGdvIHRvIHRoZSBvZmZpY2lhbCA8YSBocmVmPSJodHRwczovL3d3dy5lY2xpcHNlLm9yZy9kb3dubG9hZHMvcGFja2FnZXMvIj5kb3dubG9hZCBwYWdlPC9hPiBhbmQgbWFrZSBzdXJlIHRvIGRvd25sb2FkIHRoZSAgRWNsaXBzZSBNb2RlbGluZyBUb29scyBFY2xpcHNlIE1vZGVsaW5nIFRvb2xzLjwvcD4KCjxwPlRvIGluc3RhbGwgSGVuc2hpbiwgb3BlbiBFY2xpcHNlLCBnbyB0byA8aT5IZWxwIC0+IEluc3RhbGwgTmV3IFNvZnR3YXJlLi4uPC9pPiBhbmQgaW5zZXJ0IG9uZSBvZiB0aGUgZm9sbG93aW5nIHVwZGF0ZSBzaXRlIFVSTHM6PC9wPgo8dWw+CjxsaT5DdXJyZW50IHJlbGVhc2U6IDxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy9yZWxlYXNlIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvcmVsZWFzZTwvYT4gKDEuNC4wKTwvbGk+CjxsaT5OaWdodGx5IGJ1aWxkczogPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzL25pZ2h0bHkiPmh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy9uaWdodGx5PC9hPjwvbGk+CjxsaT5QZXJtYW5lbnQgVVJMcyBvZiBjdXJyZW50IGFuZCBwcmV2aW91cyByZWxlYXNlczoKPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuNi4wIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS42LjA8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8xLjQuMCI+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuNC4wPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS4yLjAiPmh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8xLjIuMDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuMC4wIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS4wLjA8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8wLjkuMiI+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzAuOS4yPC9hPjwvbGk+CjwvdWw+CjwvdWw+CgoKPGgyPkluc3RydWN0aW9ucyBmb3IgaW5zdGFsbGluZyBsZWdhY3kgdmVyc2lvbnM8L2gyPgoKPHA+CklmIHlvdSB3YW50IHRvIGluc3RhbGwgYSBsZWdhY3kgdmVyc2lvbiBvZiBIZW5zaGluICg8PSAxLjQuMCkgaW4gYSBuZXdlciBFY2xpcHNlIHZlcnNpb24gKD49IEVjbGlwc2UgT3h5Z2VuKSwgcGxlYXNlIHVzZSB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9ucyAodGhhbmtzIHRvIDxhIGhyZWY9Imh0dHA6Ly9qZ3JlZW4uZGUvIiB0YXJnZXQ9Il9ibGFuayI+Sm9lbCBHcmVlbnllcjwvYT4gZm9yIHByb3ZpZGluZyB0aGVzZSBpbnN0cnVjdGlvbnMpOgo8L3A+Cgo8dWw+CiA8bGk+SW5zdGFsbCBHTUYgVG9vbGluZyB2My4yLjEgdmlhIDxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9nbXAvZ21mLXRvb2xpbmcvdXBkYXRlcy9yZWxlYXNlcy0zLjIuMS8iPlVwZGF0ZSBzaXRlPC9hPiA8aT4ocmlnaHQgY2xpY2sgLT4gY29weS4uLik8L2k+PC9saT4KIDxsaT5JbnN0YWxsIE0yRWNsaXBzZSB2aWEgPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3RlY2hub2xvZ3kvbTJlL3JlbGVhc2VzIj5VcGRhdGUgc2l0ZTwvYT4gPGk+KHJpZ2h0IGNsaWNrIC0+IGNvcHkuLi4pPC9pPjwvbGk+CiA8bGk+SW5zdGFsbCB0aGUgcmVxdWlyZWQgSGVuc2hpbiB2ZXJzaW9uLjwvbGk+CjwvdWw+Cgo8IS0tPGgyPkVjbGlwc2UgS2VwbGVyLCBMdW5hLCBNYXJzIG9yIE5lb248L2gyPgoJCQo8cD4KSGVuc2hpbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gdGhlIDxhIGhyZWY9Imh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvY29udGVudC9oZW5zaGluLWluY3ViYXRpb24iPkVjbGlwc2UgTWFya2V0cGxhY2U8L2E+Lgo8L3A+CgotLT4KCjwvdWw+CjwvcD4KCgo8aDI+U291cmNlczwvaDI+CjxwPgpZb3UgY2FuIGFsc28gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHkgZnJvbSBvdXIgR2l0IHJlcG9zaXRvcnkgKHdlYmxpbmspOgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vZ2l0LmVjbGlwc2Uub3JnL2MvaGVuc2hpbi9vcmcuZWNsaXBzZS5lbWZ0LmhlbnNoaW4uZ2l0LyI+aHR0cDovL2dpdC5lY2xpcHNlLm9yZy9jL2hlbnNoaW4vb3JnLmVjbGlwc2UuZW1mdC5oZW5zaGluLmdpdC88L2E+PC9saT4KPC91bD4KPC9wPgoKCjxoMj5CdWlsZCBKb2JzPC9oMj4KPHA+ClJlbGVhc2UgYW5kIG5pZ2hseSBidWlsZHMgYXJlIGNvbXBpbGVkIHVzaW5nIEh1ZHNvbiBqb2JzOgo8dWw+CjxsaT5SZWxlYXNlczogPGEgaHJlZj0iaHR0cHM6Ly9jaS5lY2xpcHNlLm9yZy9oZW5zaGluL2pvYi9jYmlfaGVuc2hpbl9yZWxlYXNlLyI+aHR0cHM6Ly9jaS5lY2xpcHNlLm9yZy9oZW5zaGluL2pvYi9jYmlfaGVuc2hpbl9yZWxlYXNlLzwvYT48L2xpPgo8bGk+TmlnaHRseSBCdWlsZHM6IDxhIGhyZWY9Imh0dHBzOi8vY2kuZWNsaXBzZS5vcmcvaGVuc2hpbi9qb2IvY2JpX2hlbnNoaW5fbmlnaHRseS8iPmh0dHBzOi8vY2kuZWNsaXBzZS5vcmcvaGVuc2hpbi9qb2IvY2JpX2hlbnNoaW5fbmlnaHRseS88L2E+PC9saT4KPC91bD4KPC9wPgoKCjwhLS0KCjxkaXYgY2xhc3M9ImhvbWVpdGVtIj4KPGgzPk5hcnJvdyBjb2x1bW48L2gzPgo8dWw+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjwvdWw+CjwvZGl2PgoJCQo8ZGl2IGNsYXNzPSJob21laXRlbSI+CjxoMz5OYXJyb3cgY29sdW1uPC9oMz4KPHVsPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0iaG9tZWl0ZW0zY29sIj4KPGgzPlRoaXMgaXMgYSB3aWRlIGNvbHVtbjwvaDM+Cjx1bD4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPC91bD4KPC9kaXY+CjxociBjbGFzcz0iY2xlYXJlciIgLz4KPHA+U29tZSBmcmVlIHRleHQ8L3A+Cjx1bCBjbGFzcz0ibWlkbGlzdCI+CjxsaT5saXN0IG9mIGl0ZW1zIGluIGZyZWUgdGV4dDwvbGk+CjxsaT5saXN0IG9mIGl0ZW1zIGluIGZyZWUgdGV4dDwvbGk+CjxsaT5saXN0IG9mIGl0ZW1zIGluIGZyZWUgdGV4dDwvbGk+CjwvdWw+CjxvbD4KPGxpPk9yZGVyZWQgbGlzdDwvbGk+CjxsaT5PcmRlcmVkIGxpc3Q8L2xpPgo8bGk+T3JkZXJlZCBsaXN0PC9saT4KPC9vbD4KCQotLT4KCQkKPC9kaXY+CjwvZGl2PgoKRU9IVE1MOwoKIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cgo/Pgo=