PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1JFUEVBVDwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gbWFjcm8gcmVwcmVzZW50cyBhIGZhc3QgaG9yaXpvbnRhbCByZXBldGl0aW9uIGNvbnN0cnVjdC4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPig8aT5jb3VudDwvaT4sIDxpPm1hY3JvPC9pPiwgPGk+ZGF0YTwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD5jb3VudDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBudW1iZXIgb2YgcmVwZXRpdGlvdXMgY2FsbHMgdG8gPGk+bWFjcm88L2k+LiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9iPi4KCQkJPC9kZD4KCQkJPGR0Pm1hY3JvPC9kdD4KCQkJPGRkPgoJCQkJQSB0ZXJuYXJ5IG9wZXJhdGlvbiBvZiB0aGUgZm9ybSA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPm48L2k+LCA8aT5kYXRhPC9pPikuJm5ic3A7CgkJCQlUaGlzIG1hY3JvIGlzIGV4cGFuZGVkIGJ5IDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkZXB0aCwKCQkJCXRoZSBjdXJyZW50IHJlcGV0aXRpb24gbnVtYmVyLCBhbmQgdGhlIGF1eGlsaWFyeSA8aT5kYXRhPC9pPiBhcmd1bWVudC4mbmJzcDsKCQkJPC9kZD4KCQkJPGR0PmRhdGE8L2R0PgoJCQk8ZGQ+CgkJCQlBdXhpbGlhcnkgZGF0YSBwYXNzZWQgdG8gPGk+bWFjcm88L2k+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBleHBhbmRzIHRvIHRoZSBzZXF1ZW5jZToKCQkJPGRpdj4KCQkJCTxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+MDwvaT4sIDxpPmRhdGE8L2k+KSA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikgLi4uIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+Y291bnQ8L2k+IC0gPGk+MTwvaT4sIDxpPmRhdGE8L2k+KQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUaGUgPGk+ejwvaT4gdmFsdWUgdGhhdCBpcyBwYXNzZWQgdG8gPGk+bWFjcm88L2k+IHJlcHJlc2VudHMgdGhlIG5leHQgYXZhaWxhYmxlIHJlcGV0aXRpb24gZGltZW5zaW9uLiZuYnNwOwoJCQlPdGhlciBtYWNyb3MgdGhhdCBoYXZlIDxiPl9aPC9iPiBzdWZmaXggdmFyaWFudHMgaW50ZXJuYWxseSB1c2UgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPi0tZm9yIGV4YW1wbGUsIDxiPkJPT1NUX1BQX0VOVU1fUEFSQU1TPC9iPiBhbmQgPGI+Qk9PU1RfUFBfRU5VTV9QQVJBTVNfWjwvYj4uJm5ic3A7CgkJCVVzaW5nIHRoZXNlIDxiPl9aPC9iPiB2ZXJzaW9ucyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgcGFzc2luZyB0aGUgPGk+ejwvaT4gdmFsdWUgKHRoYXQgaXMgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPikgdG8gdGhlc2UgbWFjcm9zIGFsbG93cyB0aGVtIHRvIHJlZW50ZXIgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPiB3aXRoIG1heGltdW0gZWZmaWNpZW5jeS4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUbyBkaXJlY3RseSB1c2UgdGhpcyA8aT56PC9pPiB2YWx1ZSwgcmF0aGVyIHRoYW4gc2ltcGx5IHBhc3NpbmcgaXQgdG8gYW5vdGhlciBtYWNybywgc2VlIDxiPkJPT1NUX1BQX1JFUEVBVF88aT56PC9pPjwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJUHJldmlvdXNseSwgdGhpcyBtYWNybyBjb3VsZCBub3QgYmUgdXNlZCByZWN1cnNpdmVseSBpbnNpZGUgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPi4mbmJzcDsKCQkJVGhpcyBsaW1pdGF0aW9uIG5vIGxvbmdlciBleGlzdHMsIGFzIHRoZSBsaWJyYXJ5IGNhbiBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkZXB0aC4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0ibGltaXRfcmVwZWF0Lmh0bWwiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0icmVwZWF0X3ouaHRtbCI+Qk9PU1RfUFBfUkVQRUFUXzxpPno8L2k+PC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9yZXBlYXQuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL3JlcGVhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPC9hPiZndDsKCiNkZWZpbmUgREVDTCh6LCBuLCB0ZXh0KSB0ZXh0ICMjIG4gPSBuOwoKPGEgaHJlZj0icmVwZWF0Lmh0bWwiPkJPT1NUX1BQX1JFUEVBVDwvYT4oNSwgREVDTCwgaW50IHgpCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K