PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPkV4cGVjdGVkIGZhaWx1cmVzIHNwZWNpZmljYXRpb248L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3N0eWxlL3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc0LjAiPgo8bGluayByZWw9ImhvbWUiIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiIHRpdGxlPSJCb29zdCBUZXN0IExpYnJhcnkiPgo8bGluayByZWw9InVwIiBocmVmPSIuLi90ZXN0LW9yZ2FuaXphdGlvbi5odG1sIiB0aXRsZT0iVGVzdCBvcmdhbml6YXRpb24gb3IgdGhlIGhvdXNlIHRoYXQgSmFjayBidWlsdCI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0ibWFzdGVyLXRlc3Qtc3VpdGUuaHRtbCIgdGl0bGU9Ik1hc3RlciBUZXN0IFN1aXRlIj4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSIuLi9maXh0dXJlLmh0bWwiIHRpdGxlPSJGaXh0dXJlcyBvciBsZXQgbWUgcmVwZWF0IG15c2VsZiI+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQxLjIiIHNyYz0iLi4vLi4vLi4vLi4vanMvYm9vc3QtdGVzdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgo8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIHdpZHRoPSIxMCUiPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiPjxpbWcgYWx0PSJIb21lIiB3aWR0aD0iMjI5IiBoZWlnaHQ9IjYxIiBib3JkZXI9IjAiIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZXN0L2RvY2Jvb2svaW1nL2Jvb3N0LnRlc3QubG9nby5wbmciPjwvYT48L3RkPgo8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0Ij4gJmd0OyA8YSBocmVmPSIuLi8uLi8uLi91dGYuaHRtbCI+VGhlIFVuaXQgVGVzdCBGcmFtZXdvcms8L2E+ICZndDsgPGEgaHJlZj0iLi4vLi4vdXNlci1ndWlkZS5odG1sIj5Vc2VyJ3MgZ3VpZGU8L2E+PGEgaHJlZj0iLi4vLi4vdGVzdGluZy10b29scy5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGEgaHJlZj0iLi4vdGVzdC1vcmdhbml6YXRpb24uaHRtbCI+VGVzdCBvcmdhbml6YXRpb248L2E+PGEgaHJlZj0iLi4vZml4dHVyZS5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGI+RXhwZWN0ZWQgZmFpbHVyZXMgc3BlY2lmaWNhdGlvbjwvYj4KPC90ZD4KPHRkPjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBocmVmPSJtYXN0ZXItdGVzdC1zdWl0ZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBocmVmPSIuLi9maXh0dXJlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDUgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vcmdhbml6YXRpb24uZXhwZWN0ZWQtZmFpbHVyZXMiPjwvYT5FeHBlY3RlZCBmYWlsdXJlcyBzcGVjaWZpY2F0aW9uPC9oNT48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBXaGlsZSBpbiBhIHBlcmZlY3Qgd29ybGQgYWxsIHRlc3QgYXNzZXJ0aW9ucyBzaG91bGQgcGFzcyBpbiBvcmRlciBmb3IgYSB0ZXN0IG1vZHVsZSB0byBwYXNzLCBpbiBzb21lIHNpdHVhdGlvbnMKICAgaXQgaXMgZGVzaXJhYmxlIHRvIHRlbXBvcmFyaWx5IGFsbG93IHBhcnRpY3VsYXIgdGVzdHMgdG8gZmFpbC4gRm9yIGV4YW1wbGUsIHdoZXJlIGEgcGFydGljdWxhciBmZWF0dXJlIGlzIG5vdAogICBpbXBsZW1lbnRlZCB5ZXQgYW5kIG9uZSBuZWVkcyB0byBwcmVwYXJlIGEgbGlicmFyeSBmb3IgdGhlIHJlbGVhc2Ugb3Igd2hlbiBwYXJ0aWN1bGFyIHRlc3QgZmFpbHMgb24gc29tZQogICBwbGF0Zm9ybXMuIFRvIGF2b2lkIGEgbmFnZ2luZyByZWQgYm94IGluIHJlZ3Jlc3Npb24gdGVzdHMgdGFibGUsIHlvdSBjYW4gdXNlIHRoZSBleHBlY3RlZCBmYWlsdXJlcyBmZWF0dXJlLgogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBUaGlzIGZlYXR1cmUgYWxsb3dzIHNwZWNpZnlpbmcgYW4gZXhwZWN0ZWQgbnVtYmVyIG9mIGZhaWxlZCBhc3NlcnRpb25zIHBlciB0ZXN0IHVuaXQuIFRoZSB2YWx1ZSBpcyBzcGVjaWZpZWQKICAgZHVyaW5nIHRlc3QgdHJlZSBjb25zdHJ1Y3Rpb24sIGFuZCBjYW4ndCBiZSB1cGRhdGVkIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbi4KICA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgVGhlIGZlYXR1cmUgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgdG8gY2hlY2sgZm9yIGV4cGVjdGVkIGZ1bmN0aW9uYWxpdHkgZmFpbHVyZXMuIFRvIGNoZWNrIHRoYXQgYSBwYXJ0aWN1bGFyCiAgIGlucHV0IGlzIGNhdXNpbmcgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biB1c2UgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48YSBjbGFzcz0ibGluayIgaHJlZj0iLi4vLi4vdGVzdGluZy10b29scy9yZWZlcmVuY2UuaHRtbCIgdGl0bGU9IlRoZSBVVEYgdGVzdGluZyB0b29scyByZWZlcmVuY2UiPkJPT1NUX0NIRUNLX1RIUk9XPC9hPjwvY29kZT4gZmFtaWx5IG9mIHRlc3RpbmcgCiAgIHRvb2xzLgogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBUaGUgdXNhZ2Ugb2YgdGhpcyBmZWF0dXJlIHNob3VsZCBiZSBsaW1pdGVkIGFuZCBlbXBsb3llZCBvbmx5IGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4gSW4gZ2VuZXJhbCB5b3Ugc2hvdWxkCiAgIG9ubHkgdXNlIHRoaXMgZmVhdHVyZSB3aGVuIGl0IGlzIG5lY2Vzc2FyeSB0byBmb3JjZSBhIHRlc3QgbW9kdWxlIHRvIHBhc3Mgd2l0aG91dCBhY3R1YWxseSBmaXhpbmcgdGhlIHByb2JsZW0uCiAgIE9idmlvdXNseSwgYW4gZXhjZXNzaXZlIHVzYWdlIG9mIGV4cGVjdGVkIGZhaWx1cmVzIGRlZmVhdHMgdGhlIHB1cnBvc2Ugb2YgdGhlIHVuaXQgdGVzdC4gSW4gbW9zdCBjYXNlcyBpdCBvbmx5CiAgIG5lZWRzIGJlIGFwcGxpZWQgdGVtcG9yYXJpbHkuCiAgPC9wPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgIFlvdSBhbHNvIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgZXhwZWN0ZWQgZmFpbHVyZSBzcGVjaWZpY2F0aW9uIGlzIHBlciB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgdGhhdCBhbnkgZmFpbGVkCiAgIGFzc2VydGlvbiB3aXRoaW4gdGhhdCB0ZXN0IGNhc2UgY2FuIHNhdGlzZnkgdGhlIGV4cGVjdGVkIGZhaWx1cmVzIHF1b3RhLiBNZWFuaW5nIGl0IGlzIHBvc3NpYmxlIGZvciBhbgogICB1bmV4cGVjdGVkIGZhaWx1cmUgdG8gb2NjdXIgdG8gc2F0aXNmeSB0aGlzIHF1b3RhLgogIDwvcD4KPGRpdiBjbGFzcz0ibm90ZSI+PHRhYmxlIGJvcmRlcj0iMCIgc3VtbWFyeT0iTm90ZSI+Cjx0cj4KPHRkIHJvd3NwYW49IjIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMjUiPjxpbWcgYWx0PSJbTm90ZV0iIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25vdGUucG5nIj48L3RkPgo8dGggYWxpZ249ImxlZnQiPk5vdGU8L3RoPgo8L3RyPgo8dHI+PHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHA+CiAgICBJZiBhbiBhc3NlcnRpb24gYXQgZmF1bHQgaXMgZml4ZWQgYW5kIHBhc3NlZCwgd2hpbGUgYW4gZXhwZWN0ZWQgZmFpbHVyZXMgc3BlY2lmaWNhdGlvbiBzdGlsbCBwcmVzZW50LCB0aGUgdGVzdAogICAgY2FzZSBpcyBnb2luZyB0byBmYWlsLCBzaW5jZSB0aGUgbnVtYmVyIG9mIGZhaWx1cmVzIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4KICAgPC9wPjwvdGQ+PC90cj4KPC90YWJsZT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDYgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vcmdhbml6YXRpb24ubWFudWFsLWV4cGVjdGVkLWZhaWx1cmVzIj48L2E+VXNhZ2Ugd2l0aCBtYW51YWxseSByZWdpc3RlcmVkIHRlc3QgY2FzZXM8L2g2PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUbyBzZXQgdGhlIHZhbHVlIG9mIGV4cGVjdGVkIGZhaWx1cmVzIGZvciB0aGUgbWFudWFsbHkgcmVnaXN0ZXJlZCB0ZXN0IHVuaXQgcGFzcyBpdCBhcyBhIHNlY29uZCBhcmd1bWVudCBmb3IgdGhlCiAgICB0ZXN0X3N1aXRlOjphZGQgY2FsbCBkdXJpbmcgdGVzdCB1bml0IHJlZ2lzdHJhdGlvbi4KICAgPC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vcmdhbml6YXRpb24ubWFudWFsLWV4cGVjdGVkLWZhaWx1cmVzLmV4YW1wbGUxNiI+PC9hPjxwIGNsYXNzPSJ0aXRsZSI+PGI+RXhhbXBsZaAyMS6gRXhwZWN0ZWQgZmFpbHVyZXMgc3BlY2lmaWNhdGlvbiBmb3IgbWFudWFsbHkgcmVnaXN0ZXJlZCB0ZXN0IGNhc2U8L2I+PC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlLWNvbnRlbnRzIj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNpbmNsdWRlICZsdDtib29zdC90ZXN0L2luY2x1ZGVkL3VuaXRfdGVzdC5ocHAmZ3Q7CnVzaW5nIG5hbWVzcGFjZSBib29zdDo6dW5pdF90ZXN0OwoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCnZvaWQgZnJlZV90ZXN0X2Z1bmN0aW9uKCkKewogICAgQk9PU1RfQ0hFQ0soIDIgPT0gMSApOyAgICAKfQoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCnRlc3Rfc3VpdGUqCmluaXRfdW5pdF90ZXN0X3N1aXRlKCBpbnQsIGNoYXIqIFtdICkgewogICAgZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLgogICAgICAgIGFkZCggQk9PU1RfVEVTVF9DQVNFKCAmYW1wO2ZyZWVfdGVzdF9mdW5jdGlvbiApLCAyICk7CgogICAgcmV0dXJuIDA7Cn0KCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCjwvcHJlPgo8dGFibGUgY2xhc3M9InNpbXBsZWxpc3QiIGJvcmRlcj0iMCIgc3VtbWFyeT0iU2ltcGxlIGxpc3QiPjx0cj4KPHRkPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj48YSBocmVmPSIuLi8uLi8uLi8uLi9zcmMvZXhhbXBsZXMvZXhhbXBsZTE2LmNwcCIgdGFyZ2V0PSJfdG9wIj5Tb3VyY2UgY29kZTwvYT48L2NvZGU+PC90ZD4KPHRkPiB8IDwvdGQ+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iIyIgdGFyZ2V0PSJfdG9wIiBpZD0iaWQ2NTIwOTAiIG9uY2xpY2s9InRvZ2dsZV9lbGVtZW50KCAnZXhhbXBsZTE2LW91dHB1dCcsICdpZDY1MjA5MCcsICdTaG93IG91dHB1dCcsICdIaWRlIG91dHB1dCcgKTsgcmV0dXJuIGZhbHNlOyI+U2hvdyBvdXRwdXQ8L2E+PC9jb2RlPjwvdGQ+CjwvdHI+PC90YWJsZT4KPHByZSBjbGFzcz0iZXhhbXBsZS1vdXRwdXQiIGlkPSJleGFtcGxlMTYtb3V0cHV0Ij4mZ3Q7IGV4YW1wbGUgLS1sb2dfbGV2ZWw9bWVzc2FnZQpSdW5uaW5nIDEgdGVzdCBjYXNlLi4uCnRlc3QuY3BwKDgpOiBlcnJvciBpbiAiZnJlZV90ZXN0X2Z1bmN0aW9uIjogY2hlY2sgMiA9PSAxIGZhaWxlZApUZXN0IGNhc2UgaGFzIGxlc3MgZmFpbHVyZXMgdGhlbiBleHBlY3RlZAoKKioqIE5vIGVycm9ycyBkZXRlY3RlZAo8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9ImV4YW1wbGUtYnJlYWsiPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDYgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vcmdhbml6YXRpb24uYXV0by1leHBlY3RlZC1mYWlsdXJlcyI+PC9hPlVzYWdlIHdpdGggYXV0b21hdGljYWxseSByZWdpc3RlcmVkIHRlc3QgY2FzZXM8L2g2PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUbyBzZXQgdGhlIG51bWJlciBvZiBleHBlY3RlZCBmYWlsdXJlcyBmb3IgdGhlIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJlZCB0ZXN0IHVuaXQgdXNlIHRoZSBtYWNybwogICAgQk9PU1RfQVVUT19URVNUX0NBU0VfRVhQRUNURURfRkFJTFVSRVMgYmVmb3JlIHRoZSB0ZXN0IGNhc2UgZGVmaW5pdGlvbi4KICAgPC9wPgo8cHJlIGNsYXNzPSJpbmxpbmUtc3lub3BzaXMiPgo8YSBuYW1lPSJCT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyI+PC9hPkJPT1NUX0FVVE9fVEVTVF9DQVNFX0VYUEVDVEVEX0ZBSUxVUkVTKDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPnRlc3RfY2FzZV9uYW1lPC9lbT48L3NwYW4+LCA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5udW1iZXJfb2ZfZXhwZWN0ZWRfZmFpbHVyZXM8L2VtPjwvc3Bhbj4pPC9wcmU+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgICAgWW91IGNhbiB1c2UgdGhpcyBtYWNybyBib3RoIG9uIGEgZmlsZSBzY29wZSBhbmQgaW5zaWRlIGEgdGVzdCBzdWl0ZS4gTW9yZW92ZXIgeW91IGNhbiB1c2UgaXQgZXZlbiBpZiBuYW1lIG9mIHRlc3QKICAgICAgdW5pdHMgY29pbmNpZGUgaW4gZGlmZmVyZW50IHRlc3Qgc3VpdGVzLiBFeHBlY3RlZCBmYWlsdXJlcyBzcGVjaWZpY2F0aW9uIGFwcGxpZXMgdG8gdGhlIHRlc3QgdW5pdCBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgCiAgICAgIHRlc3Qgc3VpdGUgd2hlcmUgQk9PU1RfQVVUT19URVNUX0NBU0VfRVhQRUNURURfRkFJTFVSRVMgcmVzaWRlcy4KICAgIDwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3Qtb3JnYW5pemF0aW9uLmF1dG8tZXhwZWN0ZWQtZmFpbHVyZXMuZXhhbXBsZTE3Ij48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5FeGFtcGxloDIyLqBFeHBlY3RlZCBmYWlsdXJlcyBzcGVjaWZpY2F0aW9uIGZvciBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQgdGVzdCBjYXNlPC9iPjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZS1jb250ZW50cyI+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEJPT1NUX1RFU1RfTU9EVUxFIGV4YW1wbGUKI2luY2x1ZGUgJmx0O2Jvb3N0L3Rlc3QvaW5jbHVkZWQvdW5pdF90ZXN0LmhwcCZndDsKCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCgpCT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyggbXlfdGVzdDEsIDEgKQoKQk9PU1RfQVVUT19URVNUX0NBU0UoIG15X3Rlc3QxICkKewogICAgQk9PU1RfQ0hFQ0soIDIgPT0gMSApOwp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKQk9PU1RfQVVUT19URVNUX1NVSVRFKCBpbnRlcm5hbCApCgpCT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyggbXlfdGVzdDEsIDIgKQoKQk9PU1RfQVVUT19URVNUX0NBU0UoIG15X3Rlc3QxICkKewogICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHNpemVvZihpbnQpLCBzaXplb2YoY2hhcikgKTsKICAgIEJPT1NUX0NIRUNLX0VRVUFMKCBzaXplb2YoaW50KiksIHNpemVvZihjaGFyKSApOwp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpPC9wcmU+Cjx0YWJsZSBjbGFzcz0ic2ltcGxlbGlzdCIgYm9yZGVyPSIwIiBzdW1tYXJ5PSJTaW1wbGUgbGlzdCI+PHRyPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL3NyYy9leGFtcGxlcy9leGFtcGxlMTcuY3BwIiB0YXJnZXQ9Il90b3AiPlNvdXJjZSBjb2RlPC9hPjwvY29kZT48L3RkPgo8dGQ+IHwgPC90ZD4KPHRkPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj48YSBocmVmPSIjIiB0YXJnZXQ9Il90b3AiIGlkPSJpZDY1MjIzNSIgb25jbGljaz0idG9nZ2xlX2VsZW1lbnQoICdleGFtcGxlMTctb3V0cHV0JywgJ2lkNjUyMjM1JywgJ1Nob3cgb3V0cHV0JywgJ0hpZGUgb3V0cHV0JyApOyByZXR1cm4gZmFsc2U7Ij5TaG93IG91dHB1dDwvYT48L2NvZGU+PC90ZD4KPC90cj48L3RhYmxlPgo8cHJlIGNsYXNzPSJleGFtcGxlLW91dHB1dCIgaWQ9ImV4YW1wbGUxNy1vdXRwdXQiPiZndDsgZXhhbXBsZSAtLXJlcG9ydF9sZXZlbD1zaG9ydApSdW5uaW5nIDIgdGVzdCBjYXNlcy4uLgp0ZXN0LmNwcCgxMCk6IGVycm9yIGluICJteV90ZXN0MSI6IGNoZWNrIDIgPT0gMSBmYWlsZWQKdGVzdC5jcHAoMjEpOiBlcnJvciBpbiAibXlfdGVzdDEiOiBjaGVjayBzaXplb2YoaW50KSA9PSBzaXplb2YoY2hhcikgZmFpbGVkIFs0ICE9IDFdCnRlc3QuY3BwKDIyKTogZXJyb3IgaW4gIm15X3Rlc3QxIjogY2hlY2sgc2l6ZW9mKGludCopID09IHNpemVvZihjaGFyKSBmYWlsZWQgWzQgIT0gMV0KClRlc3Qgc3VpdGUgImV4YW1wbGUiIHBhc3NlZCB3aXRoOgogIDMgYXNzZXJ0aW9ucyBvdXQgb2YgMyBmYWlsZWQKICAzIGZhaWx1cmVzIGV4cGVjdGVkCiAgMiB0ZXN0IGNhc2VzIG91dCBvZiAyIHBhc3NlZAo8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9ImV4YW1wbGUtYnJlYWsiPgo8L2Rpdj4KPC9kaXY+Cjx0YWJsZSB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249InJpZ2h0Ij48ZGl2IGNsYXNzPSJjb3B5cmlnaHQtZm9vdGVyIj5Db3B5cmlnaHQgqSAyMDAxLTIwMDcgR2VubmFkaXkgUm96ZW50YWw8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+CjxhIGFjY2Vzc2tleT0icCIgaHJlZj0ibWFzdGVyLXRlc3Qtc3VpdGUuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSIuLi90ZXN0LW9yZ2FuaXphdGlvbi5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3VwLnBuZyIgYWx0PSJVcCI+PC9hPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PGEgYWNjZXNza2V5PSJuIiBocmVmPSIuLi9maXh0dXJlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==