PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPldyaXRpbmcgZWxlbWVudCBjb250ZW50PC90aXRsZT48bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjYxLjIiPjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkxpYnhtbCBUdXRvcmlhbCI+PGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkxpYnhtbCBUdXRvcmlhbCI+PGxpbmsgcmVsPSJwcmV2aW91cyIgaHJlZj0iYXIwMXMwNS5odG1sIiB0aXRsZT0iVXNpbmcgWFBhdGggdG8gUmV0cmlldmUgRWxlbWVudCBDb250ZW50Ij48bGluayByZWw9Im5leHQiIGhyZWY9ImFyMDFzMDcuaHRtbCIgdGl0bGU9IldyaXRpbmcgQXR0cmlidXRlIj48L2hlYWQ+PGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPjxkaXYgY2xhc3M9Im5hdmhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciI+PHRyPjx0aCBjb2xzcGFuPSIzIiBhbGlnbj0iY2VudGVyIj5Xcml0aW5nIGVsZW1lbnQgY29udGVudDwvdGg+PC90cj48dHI+PHRkIHdpZHRoPSIyMCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImFyMDFzMDUuaHRtbCI+UHJldjwvYT6gPC90ZD48dGggd2lkdGg9IjYwJSIgYWxpZ249ImNlbnRlciI+oDwvdGg+PHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCI+oDxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iYXIwMXMwNy5odG1sIj5OZXh0PC9hPjwvdGQ+PC90cj48L3RhYmxlPjxocj48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgbmFtZT0ieG1sdHV0b3JpYWx3cml0aW5nY29udGVudCI+PC9hPldyaXRpbmcgZWxlbWVudCBjb250ZW50PC9oMj48L2Rpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PjxwPjxhIGNsYXNzPSJpbmRleHRlcm0iIG5hbWU9ImlkMjU4Njk2OCI+PC9hPgogICAgICBXcml0aW5nIGVsZW1lbnQgY29udGVudCB1c2VzIG1hbnkgb2YgdGhlIHNhbWUgc3RlcHMgd2UgdXNlZCBhYm92ZQogICAgICAmIzgyMTI7IHBhcnNpbmcgdGhlIGRvY3VtZW50IGFuZCB3YWxraW5nIHRoZSB0cmVlLiBXZSBwYXJzZSB0aGUgZG9jdW1lbnQsCiAgICAgIHRoZW4gdHJhdmVyc2UgdGhlIHRyZWUgdG8gZmluZCB0aGUgcGxhY2Ugd2Ugd2FudCB0byBpbnNlcnQgb3VyIGVsZW1lbnQuIEZvcgogICAgICB0aGlzIGV4YW1wbGUsIHdlIHdhbnQgdG8gYWdhaW4gZmluZCB0aGUgInN0b3J5aW5mbyIgZWxlbWVudCBhbmQKICAgICAgdGhpcyB0aW1lIGluc2VydCBhIGtleXdvcmQuIFRoZW4gd2UnbGwgd3JpdGUgdGhlIGZpbGUgdG8gZGlzay4gRnVsbCBjb2RlOgogICAgICA8YSBocmVmPSJhcGUuaHRtbCIgdGl0bGU9IkUuoENvZGUgZm9yIEFkZCBLZXl3b3JkIEV4YW1wbGUiPkFwcGVuZGl4oEUsIDxpPkNvZGUgZm9yIEFkZCBLZXl3b3JkIEV4YW1wbGU8L2k+PC9hPjwvcD48cD4KICAgICAgVGhlIG1haW4gZGlmZmVyZW5jZSBpbiB0aGlzIGV4YW1wbGUgaXMgaW4KICAgICAgPHR0IGNsYXNzPSJmdW5jdGlvbiI+cGFyc2VTdG9yeTwvdHQ+OgoKICAgICAgPC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4Kdm9pZApwYXJzZVN0b3J5ICh4bWxEb2NQdHIgZG9jLCB4bWxOb2RlUHRyIGN1ciwgY2hhciAqa2V5d29yZCkgewoKCTxhIG5hbWU9ImFkZGtleXdvcmQiPjwvYT48aW1nIHNyYz0iaW1hZ2VzL2NhbGxvdXRzLzEucG5nIiBhbHQ9IjEiIGJvcmRlcj0iMCI+IHhtbE5ld1RleHRDaGlsZCAoY3VyLCBOVUxMLCAia2V5d29yZCIsIGtleXdvcmQpOwogICAgcmV0dXJuOwp9CiAgICAgIDwvcHJlPjxwPgogICAgICA8L3A+PGRpdiBjbGFzcz0iY2FsbG91dGxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIHN1bW1hcnk9IkNhbGxvdXQgbGlzdCI+PHRyPjx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PGEgaHJlZj0iI2FkZGtleXdvcmQiPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvMS5wbmciIGFsdD0iMSIgYm9yZGVyPSIwIj48L2E+IDwvdGQ+PHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHA+VGhlIDx0dCBjbGFzcz0iZnVuY3Rpb24iPjxhIGhyZWY9Imh0dHA6Ly94bWxzb2Z0Lm9yZy9odG1sL2xpYnhtbC10cmVlLmh0bWwjWE1MTkVXVEVYVENISUxEIiB0YXJnZXQ9Il90b3AiPnhtbE5ld1RleHRDaGlsZDwvYT48L3R0PgoJCQkJICAgICBmdW5jdGlvbiBhZGRzIGEgbmV3IGNoaWxkIGVsZW1lbnQgYXQgdGhlCgkJCQkgICAgIGN1cnJlbnQgbm9kZSBwb2ludGVyJ3MgbG9jYXRpb24gaW4gdGhlCgkgICAgdHJlZSwgc3BlY2lmaWVkIGJ5IDx0dCBjbGFzcz0idmFybmFtZSI+Y3VyPC90dD4uPC9wPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjxwPgogICAgICAgICA8L3A+PHA+CiAgICAgIDxhIGNsYXNzPSJpbmRleHRlcm0iIG5hbWU9ImlkMjU4NzA1MiI+PC9hPgogICAgICBPbmNlIHRoZSBub2RlIGhhcyBiZWVuIGFkZGVkLCB3ZSB3b3VsZCBsaWtlIHRvIHdyaXRlIHRoZSBkb2N1bWVudCB0bwogICAgICBmaWxlLiBJcyB5b3Ugd2FudCB0aGUgZWxlbWVudCB0byBoYXZlIGEgbmFtZXNwYWNlLCB5b3UgY2FuIGFkZCBpdCBoZXJlIGFzCiAgICAgIHdlbGwuIEluIG91ciBjYXNlLCB0aGUgbmFtZXNwYWNlIGlzIE5VTEwuCiAgICAgIDwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Cgl4bWxTYXZlRm9ybWF0RmlsZSAoZG9jbmFtZSwgZG9jLCAxKTsKICAgICAgPC9wcmU+PHA+CiAgICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgd3JpdHRlbi4gWW91J2xsIG5vdGljZQogICAgICBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgZmlsZSB3ZSBqdXN0IHJlYWQuIEluIHRoaXMgY2FzZSwgd2UganVzdCB3cml0ZSBvdmVyCiAgICAgIHRoZSBvbGQgZmlsZS4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSB4bWxEb2MKICAgICAgc3RydWN0dXJlLiBTZXR0aW5nIHRoZSB0aGlyZCBwYXJhbWV0ZXIgZXF1YWwgdG8gb25lIGVuc3VyZXMgaW5kZW50aW5nIG9uIG91dHB1dC4KICAgIDwvcD48L2Rpdj48ZGl2IGNsYXNzPSJuYXZmb290ZXIiPjxocj48dGFibGUgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gZm9vdGVyIj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImFyMDFzMDUuaHRtbCI+UHJldjwvYT6gPC90ZD48dGQgd2lkdGg9IjIwJSIgYWxpZ249ImNlbnRlciI+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJpbmRleC5odG1sIj5VcDwvYT48L3RkPjx0ZCB3aWR0aD0iNDAlIiBhbGlnbj0icmlnaHQiPqA8YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImFyMDFzMDcuaHRtbCI+TmV4dDwvYT48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iNDAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPlVzaW5nIFhQYXRoIHRvIFJldHJpZXZlIEVsZW1lbnQgQ29udGVudKA8L3RkPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPkhvbWU8L2E+PC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+oFdyaXRpbmcgQXR0cmlidXRlPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4K