PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU1fU0hJRlRFRF96PC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfRU5VTV9TSElGVEVEXzxpPno8L2k+PC9iPiBtYWNybyByZXByZXNlbnRzIGEgcmVlbnRyeSBpbnRvIHRoZSA8Yj5CT09TVF9QUF9FTlVNX1NISUZURUQ8L2I+IHJlcGV0aXRpb24gY29uc3RydWN0LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9FTlVNX1NISUZURURfPC9iPiAjIyA8aT56PC9pPig8aT5jb3VudDwvaT4sIDxpPm1hY3JvPC9pPiwgPGk+ZGF0YTwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD56PC9kdD4KCQkJPGRkPgoJCQkJVGhlIG5leHQgYXZhaWxhYmxlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gZGltZW5zaW9uLgoJCQk8L2RkPgoJCQk8ZHQ+Y291bnQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbnVtYmVyIG9mIHJlcGV0aXRpb3VzIGNhbGxzIHRvIDxpPm1hY3JvPC9pPi4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5tYWNybzwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBvcGVyYXRpb24gb2YgdGhlIGZvcm0gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5uPC9pPiwgPGk+ZGF0YTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9FTlVNX1NISUZURUQ8L2I+IHdpdGggdGhlIG5leHQgYXZhaWxhYmxlIHJlcGV0aXRpb24gZGVwdGgsCgkJCQl0aGUgY3VycmVudCByZXBldGl0aW9uIG51bWJlciwgYW5kIHRoZSBhdXhpbGlhcnkgPGk+ZGF0YTwvaT4gYXJndW1lbnQuJm5ic3A7CgkJCTwvZGQ+CgkJCTxkdD5kYXRhPC9kdD4KCQkJPGRkPgoJCQkJQXV4aWxpYXJ5IGRhdGEgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPi4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gZXhwYW5kcyB0byB0aGUgc2VxdWVuY2U6CgkJCTxkaXY+CgkJCQk8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPjE8L2k+LCA8aT5kYXRhPC9pPiksIC4uLiA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJQXQgY2VydGFpbiB0aW1lcywgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwZXJmb3JtIHRoZSBjb25jYXRlbmF0aW9uIHdpdGggPGI+Qk9PU1RfUFBfQ0FUPC9iPiByYXRoZXIgdGhhbiB0aGUgcHJlcHJvY2Vzc29yIHRva2VuLXBhc3Rpbmcgb3BlcmF0b3IuJm5ic3A7CgkJCVRoaXMgaGFwcGVucyB3aGVuIHRoZSA8aT56PC9pPiB2YWx1ZSBpcyBhIG1hY3JvIGludm9jYXRpb24gaXRzZWxmLiZuYnNwOwoJCQlJdCBuZWVkcyBhIGRlbGF5IHRvIGFsbG93IGl0IHRvIGV4cGFuZC4mbmJzcDsKCQkJVGhlIHN5bnRheCBpbiBzdWNoIGEgc2NlbmFyaW8gYmVjb21lczoKCQkJPGRpdj4KCQkJCTxiPkJPT1NUX1BQX0NBVDwvYj4oPGI+Qk9PU1RfUFBfRU5VTV9TSElGVEVEXzwvYj4sIDxpPno8L2k+KSg8aT5jb3VudDwvaT4sIDxpPm1hY3JvPC9pPiwgPGk+ZGF0YTwvaT4pLgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0iY2F0Lmh0bWwiPkJPT1NUX1BQX0NBVDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZW51bV9zaGlmdGVkLmh0bWwiPkJPT1NUX1BQX0VOVU1fU0hJRlRFRDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0ibGltaXRfcmVwZWF0Lmh0bWwiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYT48L2xpPgoJCTwvdWw+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWQuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvYXJpdGhtZXRpYy9pbmMuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZC5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL3JlcGVhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPC9hPiZndDsKCiNkZWZpbmUgVEVYVCh6LCBuLCB0ZXh0KSB0ZXh0CgojZGVmaW5lIE1BQ1JPKHosIG4sIGRhdGEpIFwKICAgKCBcCiAgICAgIDxhIGhyZWY9ImVudW1fc2hpZnRlZF96Lmh0bWwiPkJPT1NUX1BQX0VOVU1fU0hJRlRFRF88L2E+ICMjIHooIFwKICAgICAgICAgQk9PU1RfUFBfSU5DKG4pLCBcCiAgICAgICAgIFRFWFQsIGRhdGEgXAogICAgICApIFwKICAgKSBcCiAgIC8qKi8KCjxhIGhyZWY9InJlcGVhdC5odG1sIj5CT09TVF9QUF9SRVBFQVQ8L2E+KDMsIE1BQ1JPLCBjbGFzcykgLy8gZXhwYW5kcyB0byAoKSAoY2xhc3MpIChjbGFzcywgY2xhc3MpCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K