PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfUkVQRUFUX0ZST01fVE88L2I+IG1hY3JvIHJlcHJlc2VudHMgYSBmYXN0IGhvcml6b250YWwgcmVwZXRpdGlvbiBjb25zdHJ1Y3QuCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPPC9iPig8aT5maXJzdDwvaT4sIDxpPmxhc3Q8L2k+LCA8aT5tYWNybzwvaT4sIDxpPmRhdGE8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+Zmlyc3Q8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbG93ZXIgYm91bmQgb2YgdGhlIHJlcGV0aXRpb24uJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9NQUc8L2I+LgoJCQk8L2RkPgoJCQk8ZHQ+bGFzdDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSB1cHBlciBib3VuZCBvZiB0aGUgcmVwZXRpdGlvbi4KCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX01BRzwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5tYWNybzwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBvcGVyYXRpb24gb2YgdGhlIGZvcm0gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5uPC9pPiwgPGk+ZGF0YTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+IHdpdGggdGhlIG5leHQgYXZhaWxhYmxlIHJlcGV0aXRpb24gZGVwdGgsCgkJCQl0aGUgY3VycmVudCByZXBldGl0aW9uIG51bWJlciwgYW5kIHRoZSBhdXhpbGlhcnkgPGk+ZGF0YTwvaT4gYXJndW1lbnQuJm5ic3A7CgkJCTwvZGQ+CgkJCTxkdD5kYXRhPC9kdD4KCQkJPGRkPgoJCQkJQXV4aWxpYXJ5IGRhdGEgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPi4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gZXhwYW5kcyB0byB0aGUgc2VxdWVuY2U6CgkJCTxkaXY+CgkJCQk8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPmZpcnN0PC9pPiwgPGk+ZGF0YTwvaT4pIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+Zmlyc3Q8L2k+ICsgPGk+MTwvaT4sIDxpPmRhdGE8L2k+KSAuLi4gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5sYXN0PC9pPiAtIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhlIG51bWJlciBvZiByZXBldGl0aW9ucyAoaS5lLiA8aT5sYXN0PC9pPiAtIDxpPmZpcnN0PC9pPikgbXVzdCBub3QgZXhjZWVkIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhlIDxpPno8L2k+IHZhbHVlIHRoYXQgaXMgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPiByZXByZXNlbnRzIHRoZSBuZXh0IGF2YWlsYWJsZSByZXBldGl0aW9uIGRpbWVuc2lvbi4mbmJzcDsKCQkJT3RoZXIgbWFjcm9zIHRoYXQgaGF2ZSA8Yj5fWjwvYj4gc3VmZml4IHZhcmlhbnRzIGludGVybmFsbHkgdXNlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4tLWZvciBleGFtcGxlLCA8Yj5CT09TVF9QUF9FTlVNX1BBUkFNUzwvYj4gYW5kIDxiPkJPT1NUX1BQX0VOVU1fUEFSQU1TX1o8L2I+LiZuYnNwOwoJCQlVc2luZyB0aGVzZSA8Yj5fWjwvYj4gdmVyc2lvbnMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IHBhc3NpbmcgdGhlIDxpPno8L2k+IHZhbHVlICh0aGF0IGlzIHBhc3NlZCB0byA8aT5tYWNybzwvaT4pIHRvIHRoZXNlIG1hY3JvcyBhbGxvd3MgdGhlbSB0byByZWVudGVyIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gd2l0aCBtYXhpbXVtIGVmZmljaWVuY3kuCgkJPC9kaXY+CgkJPGRpdj4KCQkJVG8gZGlyZWN0bHkgdXNlIHRoaXMgPGk+ejwvaT4gdmFsdWUsIHJhdGhlciB0aGFuIHNpbXBseSBwYXNzaW5nIGl0IHRvIGFub3RoZXIgbWFjcm8sIHNlZSA8Yj5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT188aT56PC9pPjwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJUHJldmlvdXNseSwgdGhpcyBtYWNybyBjb3VsZCBub3QgYmUgdXNlZCByZWN1cnNpdmVseSBpbnNpZGUgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPi4mbmJzcDsKCQkJVGhpcyBsaW1pdGF0aW9uIG5vIGxvbmdlciBleGlzdHMsIGFzIHRoZSBsaWJyYXJ5IGNhbiBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkZXB0aC4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGFsc28gdXNlcyA8Yj5CT09TVF9QUF9XSElMRTwvYj4uJm5ic3A7CgkJCUJlY2F1c2Ugb2YgdGhpcywgdGhlcmUgYXJlIGFsc28gdHdvIHZhcmlhbnRzIG9mIHRoaXMgbWFjcm8gZm9yIGlkZWFsIHJlZW50cmFuY2UgaW50byA8Yj5CT09TVF9QUF9XSElMRTwvYj4sCgkJCTxiPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0Q8L2I+IGFuZCA8Yj5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzxpPno8L2k+LgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9tYWcuaHRtbCI+Qk9PU1RfUFBfTElNSVRfTUFHPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJyZXBlYXRfZnJvbV90b19kLmh0bWwiPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0Q8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9InJlcGVhdF9mcm9tX3RvX2Rfei5odG1sIj5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzxpPno8L2k+PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJyZXBlYXRfZnJvbV90b196Lmh0bWwiPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzxpPno8L2k+PC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvY2F0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA8L2E+Jmd0OwoKI2RlZmluZSBERUNMKHosIG4sIHRleHQpIDxhIGhyZWY9ImNhdC5odG1sIj5CT09TVF9QUF9DQVQ8L2E+KHRleHQsIG4pID0gbjsKCjxhIGhyZWY9InJlcGVhdF9mcm9tX3RvLmh0bWwiPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPPC9hPig1LCAxMCwgREVDTCwgaW50IHgpCiAgIC8qCiAgICAgIGV4cGFuZHMgdG86CiAgICAgIGludCB4NSA9IDU7IGludCB4NiA9IDY7IGludCB4NyA9IDc7CiAgICAgIGludCB4OCA9IDg7IGludCB4OSA9IDk7CiAgICovCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K