PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX01JTl9EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTUlOX0Q8L2I+IG1hY3JvIGV4cGFuZHMgdG8gdGhlIGxlc3NlciBvZiBpdHMgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMuJm5ic3A7CgkJSXQgcmVlbnRlcnMgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IHdpdGggbWF4aW11bSBlZmZpY2llbmN5LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9NSU5fRDwvYj4oPGk+ZDwvaT4sIDxpPng8L2k+LCA8aT55PC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0PmQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IGl0ZXJhdGlvbi4mbmJzcDsKCQkJPC9kZD4KCQkJPGR0Png8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgZmlyc3Qgb3BlcmFuZC4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX01BRzwvYj4uCgkJCTwvZGQ+CgkJCTxkdD55PC9kdD4KCQkJPGRkPgoJCQkJVGhlIHNlY29uZCBvcGVyYW5kLiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gcmV0dXJucyB0aGUgbGVzc2VyIG9mIGl0cyBmaXJzdCBhbmQgc2Vjb25kIGFyZ3VtZW50cyBvciB0aGUgdmFsdWUgb2YgYm90aCBhcmd1bWVudHMgaWYgdGhleSBhcmUgZXF1YWwuCgkJPC9kaXY+Cgk8aDQ+U2VlIEFsc288L2g0PgoJCTx1bD4KCQkJPGxpPjxhIGhyZWY9ImxpbWl0X21hZy5odG1sIj5CT09TVF9QUF9MSU1JVF9NQUc8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Im1pbi5odG1sIj5CT09TVF9QUF9NSU48L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9zZWxlY3Rpb24vbWluLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3Ivc2VsZWN0aW9uL21pbi5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2ZvbGRfbGVmdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvc2VsZWN0aW9uL21pbi5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3Ivc2VsZWN0aW9uL21pbi5ocHA8L2E+Jmd0OwoKI2RlZmluZSBMSVNUICgxLCAoMywgKDUsICgyLCAoNCwgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSkpKQoKI2RlZmluZSBPUChkLCBzdGF0ZSwgeCkgPGEgaHJlZj0ibWluX2QuaHRtbCI+Qk9PU1RfUFBfTUlOX0Q8L2E+KGQsIHN0YXRlLCB4KQoKI2RlZmluZSBMSVNUX01BWChsaXN0KSA8YSBocmVmPSJsaXN0X2ZvbGRfbGVmdC5odG1sIj5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVDwvYT4oT1AsIDIwLCBMSVNUKQoKTElTVF9NSU4oTElTVCkgLy8gZXhwYW5kcyB0byAxCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K