PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIj4KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPHRpdGxlPlBvcnRhYmlsaXR5IEd1aWRlPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vLi4vZG9jL3NyYy9taW5pbWFsLmNzcyI+CjwvaGVhZD4KCjxib2R5IGJnY29sb3I9IiNGRkZGRkYiPgoKPGgxPgo8aW1nIGJvcmRlcj0iMCIgc3JjPSIuLi8uLi8uLi8uLi9ib29zdC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIyNzciIGhlaWdodD0iODYiPlBhdGggCk5hbWUgUG9ydGFiaWxpdHkgCkd1aWRlPC9oMT4KCjxwPgo8YSBocmVmPSIjSW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb248L2E+PGJyPgo8YSBocmVmPSIjbmFtZV9jaGVja19mdW5jdGlvbnMiPm5hbWVfY2hlY2sgZnVuY3Rpb25zPC9hPjxicj4KPGEgaHJlZj0iI3JlY29tbWVuZGF0aW9ucyI+RmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUgcmVjb21tZW5kYXRpb25zPC9hPjwvcD4KPGgyPjxhIG5hbWU9IkludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uPC9hPjwvaDI+CjxwPkxpa2UgYW55IG90aGVyIEMrKyBwcm9ncmFtIHdoaWNoIHBlcmZvcm1zIEkvTyBvcGVyYXRpb25zLCB0aGVyZSBpcyBubyAKZ3VhcmFudGVlIHRoYXQgYSBwcm9ncmFtIHVzaW5nIEJvb3N0LkZpbGVzeXN0ZW0gd2lsbCBiZSBwb3J0YWJsZSBiZXR3ZWVuIApvcGVyYXRpbmcgc3lzdGVtcy4gQ3JpdGljYWwgYXNwZWN0cyBvZiBJL08gc3VjaCBhcyBob3cgdGhlIG9wZXJhdGluZyBzeXN0ZW0gCmludGVycHJldHMgcGF0aHMgYXJlIHVuc3BlY2lmaWVkIGJ5IHRoZSBDIGFuZCBDKysgU3RhbmRhcmRzLjwvcD4KPHA+SXQgaXMgbm90IHBvc3NpYmxlIHRvIGtub3cgIGlmIGEgZmlsZSBvciBkaXJlY3RvcnkgbmFtZSB3aWxsIGJlIAp2YWxpZCAoYW5kIHRodXMgcG9ydGFibGUpIGZvciBhbiB1bmtub3duIG9wZXJhdGluZyBzeXN0ZW0uIFRoZXJlIGlzIGFsd2F5cyB0aGUgcG9zc2liaWxpdHkgdGhhdCBhbiBvcGVyYXRpbmcgc3lzdGVtIGNvdWxkIHVzZSAKbmFtZXMgd2hpY2ggYXJlIHVudXN1YWwgKG51bWJlcnMgbGVzcyB0aGFuIDQwOTYsIGZvciBleGFtcGxlKSBvciB2ZXJ5IApsaW1pdGVkIGluIHNpemUgKG1heGltdW0gb2Ygc2l4IGNoYXJhY3RlciBuYW1lcywgZm9yIGV4YW1wbGUpLiBJbiBvdGhlciB3b3JkcywgCnBvcnRhYmlsaXR5IGlzIG5ldmVyIGFic29sdXRlOyBpdCBpcyBhbHdheXMgcmVsYXRpdmUgdG8gc3BlY2lmaWMgb3BlcmF0aW5nIApzeXN0ZW1zIG9yIApmaWxlIHN5c3RlbXMuPC9wPgo8cD5JdCBpcyBwb3NzaWJsZSwgaG93ZXZlciwgdG8ga25vdyBpbiBhZHZhbmNlIGlmIGEgZGlyZWN0b3J5IG9yIGZpbGUgbmFtZSBpcyBsaWtlbHkgdG8gYmUgdmFsaWQgZm9yIGEgcGFydGljdWxhciAKb3BlcmF0aW5nIHN5c3RlbS4mbmJzcDtJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNvbnN0cnVjdCBuYW1lcyB3aGljaCBhcmUgCmxpa2VseSB0byBiZSBwb3J0YWJsZSB0byBhIGxhcmdlIG51bWJlciBvZiBtb2Rlcm4gYW5kIGxlZ2FjeSBvcGVyYXRpbmcgc3lzdGVtcy48L3A+Cgo8cD5BbG1vc3QgYWxsIG1vZGVybiBvcGVyYXRpbmcgc3lzdGVtcyBzdXBwb3J0IG11bHRpcGxlIGZpbGUgc3lzdGVtcy4gQXQgdGhlIAptaW5pbXVtLCB0aGV5IHN1cHBvcnQgYSBuYXRpdmUgZmlsZSBzeXN0ZW0gcGx1cyBhIENELVJPTSBmaWxlIHN5c3RlbSAoR2VuZXJhbGx5IApJU08tOTY2OSwgb2Z0ZW4gd2l0aCBKdWxpZXQgZXh0ZW5zaW9ucykuPC9wPgoKPHA+RWFjaCBmaWxlIHN5c3RlbSAKbWF5IGhhdmUgaXRzIG93biBuYW1pbmcgcnVsZXMuIEZvciBleGFtcGxlLCBtb2Rlcm4gdmVyc2lvbnMgb2YgV2luZG93cyBzdXBwb3J0IE5URlMsIEZBVCwgRkFUMzIsIGFuZCBJU08tOTY2MCBmaWxlIHN5c3RlbXMsIGFtb25nIG90aGVycywgYW5kIHRoZSBuYW1pbmcgcnVsZXMgCmZvciB0aG9zZSBmaWxlIHN5c3RlbXMgZGlmZmVyLiBFYWNoIGZpbGUgc3lzdGVtIG1heSBhbHNvIGhhdmUgCmRpZmZlcmluZyBydWxlcyBmb3Igb3ZlcmFsbCBwYXRoIHZhbGlkaXR5LCBzdWNoIGFzIGEgbWF4aW11bSBsZW5ndGggb3IgbnVtYmVyIG9mIApzdWItZGlyZWN0b3JpZXMuIFNvbWUgbGVnYWN5IHN5c3RlbXMgaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGRpcmVjdG9yeSBuYW1lcyAKdmVyc3VzIHJlZ3VsYXIgZmlsZSBuYW1lcy48L3A+Cgo8cD5BcyBhIHJlc3VsdCwgQm9vc3QuRmlsZXN5c3RlbSdzIDxpPm5hbWVfY2hlY2s8L2k+IGZ1bmN0aW9ucyAKY2Fubm90IGd1YXJhbnRlZSBkaXJlY3RvcnkgYW5kIGZpbGUgbmFtZSBwb3J0YWJpbGl0eS4gUmF0aGVyLCB0aGV5IGFyZSBpbnRlbmRlZCB0byAKZ2l2ZSB0aGUgcHJvZ3JhbW1lciBhICZxdW90O2ZpZ2h0aW5nIGNoYW5jZSZxdW90OyB0byBhY2hpZXZlIHBvcnRhYmlsaXR5IGJ5IGVhcmx5IApkZXRlY3Rpb24gb2YgY29tbW9uIG5hbWluZyBwcm9ibGVtcy48L3A+Cgo8aDI+PGEgbmFtZT0ibmFtZV9jaGVja19mdW5jdGlvbnMiPm5hbWVfY2hlY2sgZnVuY3Rpb25zPC9hPjwvaDI+Cgo8cD5BIDxpPm5hbWVfY2hlY2s8L2k+IGZ1bmN0aW9uIApyZXR1cm5zIHRydWUgaWYgaXRzIGFyZ3VtZW50IGlzIHZhbGlkIGFzIGEgZGlyZWN0b3J5IGFuZCByZWd1bGFyIGZpbGUgbmFtZSBmb3IgYSAKcGFydGljdWxhciBvcGVyYXRpbmcgb3IgZmlsZSBzeXN0ZW0uIEEgbnVtYmVyIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQuPC9wPgoKPHA+VGhlIDxhIGhyZWY9IiNwb3J0YWJsZV9uYW1lIj5wb3J0YWJsZV9uYW1lPC9hPiBmdW5jdGlvbiBpcyBvZiBwYXJ0aWN1bGFyIAppbnRlcmVzdCBiZWNhdXNlIGl0IGhhcyBiZWVuIGNhcmVmdWxseSBkZXNpZ25lZCB0byBwcm92aWRlIHdpZGUgCnBvcnRhYmlsaXR5IHlldCBub3Qgb3Zlcmx5IHJlc3RyaWN0IGV4cHJlc3NpdmVuZXNzLjwvcD4KCjx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiIGNvbHNwYW49IjIiPjxiPkxpYnJhcnkgU3VwcGxpZWQgbmFtZV9jaGVjayBGdW5jdGlvbnM8L2I+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48Yj5GdW5jdGlvbjwvYj48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxiPkRlc2NyaXB0aW9uPC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48Y29kZT48YSBuYW1lPSJwb3J0YWJsZV9wb3NpeF9uYW1lIj5wb3J0YWJsZV9wb3NpeF9uYW1lPC9hPihjb25zdCAKICAgIHN0ZDo6c3RyaW5nJmFtcDs8aT4gbmFtZTwvaT4pPC9jb2RlPjwvdGQ+CiAgICA8dGQ+PGI+UmV0dXJuczo8L2I+IDxpPnRydWU8L2k+IGlmIDxjb2RlPiFuYW1lLmVtcHR5KCkgJmFtcDsmYW1wOyBuYW1lPC9jb2RlPiBjb250YWlucyBvbmx5IHRoZSBjaGFyYWN0ZXJzIAogICAgc3BlY2lmaWVkIGluPGk+IFBvcnRhYmxlIEZpbGVuYW1lIENoYXJhY3RlciBTZXQ8L2k+IHJ1bGVzIGFzIGRlZmluZWQgaW4gYnkgCiAgICBQT1NJWCAoPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA3OTA0OTc1L2Jhc2VkZWZzL3hiZF9jaGFwMDMuaHRtbCI+d3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDc5MDQ5NzUvYmFzZWRlZnMveGJkX2NoYXAwMy5odG1sPC9hPikuPGJyPgogICAgVGhlIGFsbG93ZWQgY2hhcmFjdGVycyBhcmUgPGNvZGU+MC05PC9jb2RlPiwgPGNvZGU+YS16PC9jb2RlPiwgPGNvZGU+QS1aPC9jb2RlPiwgCiAgICA8Y29kZT4nLic8L2NvZGU+LCA8Y29kZT4nXyc8L2NvZGU+LCBhbmQgPGNvZGU+Jy0nPC9jb2RlPi48cD48Yj5Vc2U6PC9iPiAKICAgIGFwcGxpY2F0aW9ucyB3aGljaCBtdXN0IGJlIHBvcnRhYmxlIHRvIGFueSBQT1NJWCBzeXN0ZW0uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxjb2RlPjxhIG5hbWU9IndpbmRvd3NfbmFtZSI+d2luZG93c19uYW1lPC9hPihjb25zdCAKICAgIHN0ZDo6c3RyaW5nJmFtcDs8aT4gbmFtZTwvaT4pPC9jb2RlPjwvdGQ+CiAgICA8dGQ+PGI+UmV0dXJuczo8L2I+Jm5ic3A7IDxpPnRydWU8L2k+IGlmIDxjb2RlPiFuYW1lLmVtcHR5KCkgJmFtcDsmYW1wOyBuYW1lPC9jb2RlPiBjb250YWlucyAKICAgIG9ubHkgdGhlIGNoYXJhY3RlcnMgc3BlY2lmaWVkIGJ5IHRoZSBXaW5kb3dzIHBsYXRmb3JtIFNESyBhcyB2YWxpZCAKICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGZpbGUgc3lzdGVtIDxjb2RlPiZhbXA7JmFtcDsgKG5hbWU8L2NvZGU+IGlzIDxjb2RlPiZxdW90Oy4mcXVvdDs8L2NvZGU+IG9yCiAgICA8Y29kZT4mcXVvdDsuLiZxdW90OzwvY29kZT4mbmJzcDsgb3IgZG9lcyBub3QgZW5kIHdpdGggYSB0cmFpbGluZyBzcGFjZSBvciBwZXJpb2Q8Y29kZT4pPC9jb2RlPi4mbmJzcDsgCiAgICBUaGUgYWxsb3dlZCBjaGFyYWN0ZXJzIGFyZSBhbnl0aGluZyBleGNlcHQgPGNvZGU+MHgwLTB4MUY8L2NvZGU+LCA8Y29kZT4nJmx0Oyc8L2NvZGU+LAogICAgPGNvZGU+JyZndDsnPC9jb2RlPiwgPGNvZGU+JzonPC9jb2RlPiwgPGNvZGU+JyZxdW90Oyc8L2NvZGU+LCA8Y29kZT4nLyc8L2NvZGU+LAogICAgPGNvZGU+J1wnPC9jb2RlPiwgYW5kIDxjb2RlPid8JzwvY29kZT4uPHA+CiAgICA8Yj5Vc2U6PC9iPiBhcHBsaWNhdGlvbnMgd2hpY2ggbXVzdCBiZSBwb3J0YWJsZSB0byBXaW5kb3dzLjwvcD4KICAgIDxwPjxiPk5vdGU6PC9iPiBSZXNlcnZlZCBkZXZpY2UgbmFtZXMgYXJlIG5vdCB2YWxpZCBhcyBmaWxlIG5hbWVzLCBidXQgYXJlIAogICAgbm90IGJlaW5nIGRldGVjdGVkIGJlY2F1c2UgdGhleSBhcmUgc3RpbGwgdmFsaWQgYXMgYSBwYXRoLiBTcGVjaWZpY2FsbHksIAogICAgQ09OLCBQUk4sIEFVWCwgQ0xPQ0skLCBOVUwsIENPTVsxLTldLCBMUFRbMS05XSwgYW5kIHRoZXNlIG5hbWVzIGZvbGxvd2VkIGJ5IAogICAgYW4gZXh0ZW5zaW9uIChmb3IgZXhhbXBsZSwgTlVMLnR4NykuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxjb2RlPjxhIG5hbWU9InBvcnRhYmxlX25hbWUiPnBvcnRhYmxlX25hbWU8L2E+KGNvbnN0IAogICAgc3RkOjpzdHJpbmcmYW1wOzxpPiBuYW1lPC9pPik8L2NvZGU+PC90ZD4KICAgIDx0ZD48Yj5SZXR1cm5zOjwvYj4gPGNvZGU+Jm5ic3A7d2luZG93c19uYW1lKG5hbWUpICZhbXA7JmFtcDsgcG9ydGFibGVfcG9zaXhfbmFtZShuYW1lKSAKICAgICZhbXA7JmFtcDsgKG5hbWU8L2NvZGU+IGlzIDxjb2RlPiZxdW90Oy4mcXVvdDs8L2NvZGU+IG9yIDxjb2RlPiZxdW90Oy4uJnF1b3Q7PC9jb2RlPiwgYW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbm90IGEgcGVyaW9kIG9yIGh5cGhlbjxjb2RlPik8L2NvZGU+LjxwPjxiPlVzZTo8L2I+IGFwcGxpY2F0aW9ucyB3aGljaCBtdXN0IGJlIHBvcnRhYmxlIHRvIGEgd2lkZSB2YXJpZXR5IG9mIAogICAgbW9kZXJuIG9wZXJhdGluZyBzeXN0ZW1zLCBsYXJnZSBhbmQgc21hbGwsIGFuZCB0byBzb21lIGxlZ2FjeSBPL1Mncy4gVGhlIAogICAgZmlyc3QgY2hhcmFjdGVyIG5vdCBhIHBlcmlvZCBvciBoeXBoZW4gcmVzdHJpY3Rpb24gaXMgYSByZXF1aXJlbWVudCBvZiAKICAgIHNldmVyYWwgb2xkZXIgb3BlcmF0aW5nIHN5c3RlbXMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxjb2RlPjxhIG5hbWU9InBvcnRhYmxlX2RpcmVjdG9yeV9uYW1lIj4KICAgIHBvcnRhYmxlX2RpcmVjdG9yeV9uYW1lPC9hPihjb25zdCBzdGQ6OnN0cmluZyZhbXA7PGk+IG5hbWU8L2k+KTwvY29kZT48L3RkPgogICAgPHRkPjxiPlJldHVybnM6PC9iPiA8Y29kZT5wb3J0YWJsZV9uYW1lKG5hbWUpICZhbXA7JmFtcDsgKG5hbWU8L2NvZGU+IGlzIDxjb2RlPiZxdW90Oy4mcXVvdDs8L2NvZGU+IAogICAgb3IgPGNvZGU+JnF1b3Q7Li4mcXVvdDs8L2NvZGU+Jm5ic3A7IG9yIGNvbnRhaW5zIG5vIHBlcmlvZHM8Y29kZT4pPC9jb2RlPi48cD48Yj5Vc2U6PC9iPiBhcHBsaWNhdGlvbnMgCiAgICB3aGljaCBtdXN0IGJlIHBvcnRhYmxlIHRvIGEgd2lkZSB2YXJpZXR5IG9mIHBsYXRmb3JtcywgaW5jbHVkaW5nIE9wZW5WTVMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxjb2RlPjxhIG5hbWU9InBvcnRhYmxlX2ZpbGVfbmFtZSI+CiAgICBwb3J0YWJsZV9maWxlX25hbWU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nJmFtcDs8aT4gbmFtZTwvaT4pPC9jb2RlPjwvdGQ+CiAgICA8dGQ+PGI+UmV0dXJuczo8L2I+IDxjb2RlPnBvcnRhYmxlX25hbWUobmFtZSkgJmFtcDsmYW1wOyA8L2NvZGU+YW55IHBlcmlvZCBpcyBmb2xsb3dlZCBieSBvbmUgdG8gdGhyZWUgYWRkaXRpb25hbCAKICAgIG5vbi1wZXJpb2QgY2hhcmFjdGVycy48cD48Yj5Vc2U6PC9iPiAKICAgIGFwcGxpY2F0aW9ucyB3aGljaCBtdXN0IGJlIHBvcnRhYmxlIHRvIGEgd2lkZSB2YXJpZXR5IG9mIHBsYXRmb3JtcywgCiAgICBpbmNsdWRpbmcgT3BlblZNUyBhbmQgb3RoZXIgc3lzdGVtcyB3aGljaCBoYXZlIGEgY29uY2VwdCBvZiAmcXVvdDtmaWxlIGV4dGVuc2lvbiZxdW90OyAKICAgIGJ1dCBsaW1pdCBpdHMgbGVuZ3RoLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48Y29kZT48YSBuYW1lPSJuYXRpdmUiPm5hdGl2ZTwvYT4oY29uc3QgCiAgICBzdGQ6OnN0cmluZyZhbXA7PGk+IG5hbWU8L2k+KTwvY29kZT48L3RkPgogICAgPHRkPjxiPlJldHVybnM6PC9iPiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiBSZXR1cm5zIDxpPgogICAgdHJ1ZTwvaT4gZm9yIG5hbWVzIGNvbnNpZGVyZWQgdmFsaWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBuYXRpdmUgZmlsZSAKICAgIHN5c3RlbXMuPHA+PGI+Tm90ZTo8L2I+IE1heSByZXR1cm4gPGk+dHJ1ZTwvaT4gZm9yIHNvbWUgbmFtZXMgbm90IGNvbnNpZGVyZWQgdmFsaWQgCiAgICBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSB1bmRlciBhbGwgY29uZGl0aW9ucyAocGFydGljdWxhcmx5IG9uIG9wZXJhdGluZyBzeXN0ZW1zIHdoaWNoIHN1cHBvcnQgCiAgICBtdWx0aXBsZSBmaWxlIHN5c3RlbXMuKTwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxoMj5GaWxlIGFuZCBkaXJlY3RvcnkgbmFtZSA8YSBuYW1lPSJyZWNvbW1lbmRhdGlvbnMiPnJlY29tbWVuZGF0aW9uczwvYT48L2gyPgoKPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIj4KCiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48c3Ryb25nPlJlY29tbWVuZGF0aW9uPC9zdHJvbmc+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+PHN0cm9uZz5SYXRpb25hbGU8L3N0cm9uZz48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHZhbGlnbj0idG9wIj5MaW1pdCBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMgdG8gdGhlIGNoYXJhY3RlcnMgQS1aLCBhLXosIDAtOSwgcGVyaW9kLCBoeXBoZW4sIGFuZAogICAgdW5kZXJzY29yZS48cD5Vc2UgYW55IG9mIHRoZSAmcXVvdDtwb3J0YWJsZV8mcXVvdDsgPGEgaHJlZj0iI25hbWVfY2hlY2tfZnVuY3Rpb25zIj4KICAgIG5hbWUgY2hlY2sgZnVuY3Rpb25zPC9hPiB0byBlbmZvcmNlIHRoaXMgcmVjb21tZW5kYXRpb24uPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlc2UgYXJlIHRoZSBjaGFyYWN0ZXJzIHNwZWNpZmllZCBieSB0aGUgUE9TSVggc3RhbmRhcmQgZm9yIHBvcnRhYmxlIGRpcmVjdG9yeSBhbmQKICAgIGZpbGUgbmFtZXMsIGFuZCBhcmUgYWxzbyB2YWxpZCBmb3IgV2luZG93cywgTWFjLCBhbmQgbWFueSBvdGhlciBtb2Rlcm4gZmlsZSBzeXN0ZW1zLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiPkRvIG5vdCB1c2UgYSBwZXJpb2Qgb3IgaHlwaGVuIGFzIHRoZSBmaXJzdCAKICAgIGNoYXJhY3RlciBvZiBhIG5hbWUuIERvIG5vdCB1c2UgcGVyaW9kIGFzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhIG5hbWUuPHA+CiAgICBVc2UgPGEgaHJlZj0iI3BvcnRhYmxlX25hbWUiPnBvcnRhYmxlX25hbWU8L2E+LAogICAgPGEgaHJlZj0iI3BvcnRhYmxlX2RpcmVjdG9yeV9uYW1lIj5wb3J0YWJsZV9kaXJlY3RvcnlfbmFtZTwvYT4sIG9yCiAgICA8YSBocmVmPSIjcG9ydGFibGVfZmlsZV9uYW1lIj5wb3J0YWJsZV9maWxlX25hbWU8L2E+IHRvIGVuZm9yY2UgdGhpcyAKICAgIHJlY29tbWVuZGF0aW9uLjwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiPlNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgdHJlYXQgaGF2ZSBzcGVjaWFsIHJ1bGVzIGZvciB0aGUgCiAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgbmFtZXMuIFBPU0lYLCBmb3IgZXhhbXBsZS4gV2luZG93cyBkb2VzIG5vdCBwZXJtaXQgcGVyaW9kIAogICAgYXMgdGhlIGxhc3QgY2hhcmFjdGVyLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiPkRvIG5vdCB1c2UgcGVyaW9kcyBpbiBkaXJlY3RvcnkgbmFtZXMuPHA+VXNlCiAgICA8YSBocmVmPSIjcG9ydGFibGVfZGlyZWN0b3J5X25hbWUiPnBvcnRhYmxlX2RpcmVjdG9yeV9uYW1lPC9hPiB0byBlbmZvcmNlIAogICAgdGhpcyByZWNvbW1lbmRhdGlvbi48L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIj5SZXF1aXJlbWVudCBmb3IgSVNPLTk2NjAgd2l0aG91dCBKdWxpZXQgZXh0ZW5zaW9ucywgT3BlblZNUyBmaWxlc3lzdGVtLCBhbmQgb3RoZXIgbGVnYWN5IHN5c3RlbXMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCI+RG8gbm90IHVzZSBtb3JlIHRoYXQgb25lIHBlcmlvZCBpbiBhIGZpbGUgbmFtZSwgYW5kIGxpbWl0IAogICAgdGhlIHBvcnRpb24gYWZ0ZXIgdGhlIHBlcmlvZCB0byB0aHJlZSBjaGFyYWN0ZXJzLjxwPlVzZQogICAgPGEgaHJlZj0iI3BvcnRhYmxlX2ZpbGVfbmFtZSI+cG9ydGFibGVfZmlsZV9uYW1lPC9hPiB0byBlbmZvcmNlIHRoaXMgCiAgICByZWNvbW1lbmRhdGlvbi48L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIj5SZXF1aXJlbWVudCBmb3IgSVNPLTk2NjAgbGV2ZWwgMSwgT3BlblZNUyBmaWxlc3lzdGVtLCBhbmQgCiAgICBvdGhlciBsZWdhY3kgc3lzdGVtcy4gPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCI+RG8gbm90IGFzc3VtZSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuIEZvciBleGFtcGxlLCBkbyBub3QgZXhwZWN0ZWQgYSBkaXJlY3RvcnkgdG8gYmUKICAgIGFibGUgdG8gaG9sZCBzZXBhcmF0ZSBlbGVtZW50cyBuYW1lZCAmcXVvdDtGb28mcXVvdDsgYW5kICZxdW90O2ZvbyZxdW90Oy4gPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCI+U29tZSBmaWxlIHN5c3RlbXMgYXJlIGNhc2UgaW5zZW5zaXRpdmUuJm5ic3A7IEZvciBleGFtcGxlLCBXaW5kb3dzIAogICAgTlRGUyBpcyBjYXNlIHByZXNlcnZpbmcgaW4gdGhlIHdheSBpdCBzdG9yZXMgbmFtZXMsIGJ1dCBjYXNlIGluc2Vuc2l0aXZlIGluIAogICAgc2VhcmNoaW5nIGZvciBuYW1lcyAodW5sZXNzIHJ1bm5pbmcgdW5kZXIgdGhlIFBPU0lYIHN1Yi1zeXN0ZW0sIGl0IHdoaWNoIAogICAgY2FzZSBpdCBkb2VzIGNhc2Ugc2Vuc2l0aXZlIHNlYXJjaGVzKS4gPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCI+RG8gbm90IGFzc3VtZSBuYW1lcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4mbmJzcDsgRm9yIGV4YW1wbGUsIGRvIG5vdCBleHBlY3QgYSBmaWxlCiAgICBjcmVhdGVkIHdpdGggdGhlIG5hbWUgb2YgJnF1b3Q7Rm9vJnF1b3Q7IHRvIGJlIG9wZW5lZCBzdWNjZXNzZnVsbHkgd2l0aCB0aGUgbmFtZSBvZiAmcXVvdDtmb28mcXVvdDsuPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCI+U29tZSBmaWxlIHN5c3RlbXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLiZuYnNwOyBGb3IgZXhhbXBsZSwgUE9TSVguPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCI+RG9uJ3QgdXNlIGh5cGhlbnMgaW4gbmFtZXMuPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCI+SVNPLTk2NjAgbGV2ZWwgMSwgYW5kIHBvc3NpYmx5IHNvbWUgbGVnYWN5IHN5c3RlbXMsIGRvIG5vdCBwZXJtaXQgCiAgICBoeXBoZW5zLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiPkxpbWl0IHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyByZXR1cm5lZCBieSBwYXRoOjpzdHJpbmcoKSB0byAKICAgIDI1NSBjaGFyYWN0ZXJzLiZuYnNwOyAKICAgIE5vdGUgdGhhdCBJU08gOTY2MCBoYXMgYW4gZXhwbGljaXQgZGlyZWN0b3J5IHRyZWUgZGVwdGggbGltaXQgb2YgOCwgYWx0aG91Z2ggCiAgICB0aGlzIGRlcHRoIGxpbWl0IGlzIHJlbW92ZWQgYnkgdGhlIEp1bGlldCBleHRlbnNpb25zLjwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiPlNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgcGxhY2UgbGltaXRzIG9uIHRoZSB0b3RhbCBwYXRoIGxlbmd0aC4mbmJzcDsgRm9yIGV4YW1wbGUsCiAgICBXaW5kb3dzIDIwMDAgbGltaXRzIHBhdGhzIHRvIDI2MCBjaGFyYWN0ZXJzIHRvdGFsIGxlbmd0aC48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHZhbGlnbj0idG9wIj5MaW1pdCB0aGUgbGVuZ3RoIG9mIGFueSBvbmUgbmFtZSBpbiBhIHBhdGguJm5ic3A7IFBpY2sgdGhlIHNwZWNpZmljIGxpbWl0IGFjY29yZGluZyB0bwogICAgdGhlIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBvciBmaWxlIHN5c3RlbXMgeW91IHdpc2ggcG9ydGFiaWxpdHkgdG86PGJyPgogICAgJm5ic3A7Jm5ic3A7IE5vdCBhIGNvbmNlcm46OiZuYnNwOyBQT1NJWCwgV2luZG93cywgTUFDIE9TIFguPGJyPgogICAgJm5ic3A7Jm5ic3A7IDMxIGNoYXJhY3RlcnM6IENsYXNzaWMgTWFjIE9TPGJyPgombmJzcDsmbmJzcDsgOCBjaGFyYWN0ZXJzICsgcGVyaW9kICsgMyBjaGFyYWN0ZXJzOiBJU08gOTY2MCBsZXZlbCAxPGJyPgombmJzcDsmbmJzcDsgMzIgY2hhcmFjdGVyczogSVNPIDk2NjAgbGV2ZWwgMiBhbmQgMzxicj4KJm5ic3A7Jm5ic3A7IDEyOCBjaGFyYWN0ZXJzICg2NCBpZiBVbmljb2RlKTogSVNPIDk2NjAgd2l0aCBKdWxpZXQgZXh0ZW5zaW9uczwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiPkxpbWl0aW5nIG5hbWUgbGVuZ3RoIGNhbiBtYXJrZWRseSByZWR1Y2UgdGhlIGV4cHJlc3NpdmVuZXNzIG9mIGZpbGUgbmFtZXMsIHlldCBwbGFjaW5nCiAgICBvbmx5IHZlcnkgaGlnaCBsaW1pdHMgb24gbGVuZ3RocyBpbmhpYml0cyB3aWRlc3QgcG9ydGFiaWxpdHkuPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGhyPgo8cD5SZXZpc2VkCjwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJWQgJUIsICVZIiBzdGFydHNwYW4gLS0+MTEgSmFudWFyeSwgMjAwOTwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIGVuZHNwYW4gaS1jaGVja3N1bT0iMzkzMzUiIC0tPjwvcD4KCjxwPqkgQ29weXJpZ2h0IEJlbWFuIERhd2VzLCAyMDAyLCAyMDAzPC9wPgo8cD4gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIApMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPgpMSUNFTlNFXzFfMC50eHQ8L2E+IG9yIGNvcHkgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij4Kd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvcD4KCjwvYm9keT4KCjwvaHRtbD4=