PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IS0tCiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiAgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiAgdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgogIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKICB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+CjwhRE9DVFlQRSBkb2N1bWVudCBbCiAgPCFFTlRJVFkgcHJvamVjdCBTWVNURU0gInByb2plY3QueG1sIj4KXT4KPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0idG9tY2F0LWRvY3MueHNsIj8+Cjxkb2N1bWVudCB1cmw9ImNoYW5nZWxvZy5odG1sIj4KCiAgJnByb2plY3Q7CgogIDxwcm9wZXJ0aWVzPgogICAgPGF1dGhvciBlbWFpbD0icmVtbUBhcGFjaGUub3JnIj5SZW15IE1hdWNoZXJhdDwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0ieW9hdnNAYXBhY2hlLm9yZyI+WW9hdiBTaGFwaXJhPC9hdXRob3I+CiAgICA8YXV0aG9yIGVtYWlsPSJmaGFuaWtAYXBhY2hlLm9yZyI+RmlsaXAgSGFuaWs8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9InBlcm9AYXBhY2hlLm9yZyI+UGV0ZXIgUm9zc2JhY2g8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9Imtrb2xpbmtvQGFwYWNoZS5vcmciPktvbnN0YW50aW4gS29saW5rbzwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0ia2Z1amlub0BhcGFjaGUub3JnIj5LZWlpY2hpIEZ1amlubzwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0iamltQGFwYWNoZS5vcmciPkppbSBKYWdpZWxza2k8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9Im10dXJrQGFwYWNoZS5vcmciPk1sYWRlbiBUdXJrPC9hdXRob3I+CiAgICA8dGl0bGU+Q2hhbmdlbG9nPC90aXRsZT4KICA8L3Byb3BlcnRpZXM+Cgo8Ym9keT4KPCEtLSBTZWN0aW9uIG5hbWVzOgogR2VuZXJhbCwgQ2F0YWxpbmEsIENveW90ZSwgSmFzcGVyLCBDbHVzdGVyLCBXZWJhcHBzLCBPdGhlcgotLT4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zNSAoamltKSIgcnRleHQ9IiI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBNYWtlIGNvbmZpZ3VyYXRpb24gaXNzdWVzIGZvciBzZWN1cml0eSByZWxhdGVkIFZhbHZlcyBhbmQgRmlsdGVycyByZXN1bHQKICAgICAgICBpbiB0aGUgZmFpbHVyZSBvZiB0aGUgdmFsdmUgb3IgZmlsdGVyIHJhdGhlciB0aGFuIGp1c3QgYSB3YXJuaW5nCiAgICAgICAgbWVzc2FnZS4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBFbnN1cmUgY2hhbmdlcyB0byB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgUmVtb3RlSG9zdFZhbHZlIGFuZCB0aGUKICAgICAgICBSZW1vdGVBZGRyVmFsdmUgdmlhIEpNWCBhcmUgdGhyZWFkLXNhZmUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSW4gPGNvZGU+UmVxdWVzdEZpbHRlclZhbHZlPC9jb2RlPiAoPGNvZGU+UmVtb3RlQWRkclZhbHZlPC9jb2RlPiwKICAgICAgICA8Y29kZT5SZW1vdGVIb3N0VmFsdmU8L2NvZGU+KTogcmVmYWN0b3IgdmFsdWUgbWF0Y2hpbmcgbG9naWMgaW50bwogICAgICAgIHNlcGFyYXRlIG1ldGhvZCBhbmQgZXhwb3NlIHRoaXMgbmV3IG1ldGhvZCA8Y29kZT5pc0FsbG93ZWQ8L2NvZGU+CiAgICAgICAgdGhyb3VnaCBKTVguIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwYXJhbWV0ZXIgcHJvY2Vzc2luZyBmb3IgR0VUIGFuZCBQT1NUIHJlcXVlc3RzLgogICAgICAgIEFsc28gYWRkIGFuIG9wdGlvbiB0byBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYW1ldGVycyBwcm9jZXNzZWQKICAgICAgICBwZXIgcmVxdWVzdC4gVGhpcyBkZWZhdWx0cyB0byAxMDAwMC4gRXhjZXNzaXZlIHBhcmFtZXRlcnMgYXJlIGlnbm9yZWQuCiAgICAgICAgTm90ZSB0aGF0IDxjb2RlPkZhaWxlZFJlcXVlc3RGaWx0ZXI8L2NvZGU+IGNhbiBiZSB1c2VkIHRvIHJlamVjdCB0aGUKICAgICAgICByZXF1ZXN0IGlmIHNvbWUgcGFyYW1ldGVycyB3ZXJlIGlnbm9yZWQuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgTmV3IGZpbHRlciA8Y29kZT5GYWlsZWRSZXF1ZXN0RmlsdGVyPC9jb2RlPiB0aGF0IHdpbGwgcmVqZWN0IGEgcmVxdWVzdAogICAgICAgIGlmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBIVFRQIHBhcmFtZXRlciBwYXJzaW5nLiAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTIzODQ8L2J1Zz46IERvIG5vdCBmYWlsIHdpdGggcGFyYW1ldGVyIHBhcnNpbmcgd2hlbiBkZWJ1ZyBsb2dnaW5nCiAgICAgICAgaXMgZW5hYmxlZC4gKGtrb2xpbmtvLCBqaW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERvIG5vdCBmbGFnIGV4dHJhICcmYW1wOycgY2hhcmFjdGVycyBpbiBwYXJhbWV0ZXJzIGFzIHBhcnNlIGVycm9ycy4KICAgICAgICAoa2tvbGlua28sIGppbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU2xpZ2h0bHkgaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBVRGVjb2Rlci5jb252ZXJ0KCkuIEFsaWduCiAgICAgICAgPGNvZGU+JTJmPC9jb2RlPiBoYW5kbGluZyBiZXR3ZWVuIGltcGxlbWVudGF0aW9ucy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMjI1PC9idWc+OiBGaXggQ2xhc3NDYXN0RXhjZXB0aW9uIHdoZW4gYWRkaW5nIGFuIGFsaWFzIGZvciBhbgogICAgICAgIGV4aXN0aW5nIGhvc3QgdmlhIEpNWC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEbyBub3QgdGhyb3cgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGZyb20gYQogICAgICAgIDxjb2RlPnBhcnNlUGFyYW1ldGVycygpPC9jb2RlPiBjYWxsIHdoZW4gYSBjaHVua2VkIFBPU1QgcmVxdWVzdCBpcyB0b28KICAgICAgICBsYXJnZSwgYnV0IHRyZWF0IGl0IGxpa2UgYW4gSU8gZXJyb3IuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIFNldENoYXJhY3RlckVuY29kaW5nRmlsdGVyIChzaW1pbGFyIHRvIHRoZSBvbmUgY29udGFpbmVkIGluIHRoZQogICAgICAgIGV4YW1wbGVzIHdlYiBhcHBsaWNhdGlvbikKICAgICAgICB0byB0aGUgPGNvZGU+b3JnLmFwYWNoZS5jYXRhbGluYS5maWx0ZXJzPC9jb2RlPiBwYWNrYWdlIHNvIGl0IGlzCiAgICAgICAgYXZhaWxhYmxlIGZvciBhbGwgd2ViIGFwcGxpY2F0aW9ucy4gKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIEVjbGlwc2UgY29tcGlsZXIgdG8gMy43IGFuZCBzd2l0Y2ggdG8gdXNpbmcgZWNqLmphci4gKG1hcmt0KSAgICAgICAgCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIgaGFuZGxpbmcgaW4gYWxsIGNvbm5lY3RvcnMuIChyanVuZykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjMzNTwvYnVnPjogT25seSBoYW5kbGUgPGNvZGU+Jmx0O1wlPC9jb2RlPiBhbmQgbm90CiAgICAgICAgPGNvZGU+XCU8L2NvZGU+IGFzIGVzY2FwZWQgaW4gdGVtcGxhdGUgdGV4dC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjA0OTwvYnVnPjogSW1wcm92ZSBzZXR1cCBpbnN0cnVjdGlvbnMgZm9yIHJ1bm5pbmcgYXMgYSBXaW5kb3dzCiAgICAgICAgc2VydmljZTogY29ycmVjdCBpbmZvcm1hdGlvbiBvbiBob3cgYSBKUkUgaXMgaWRlbnRpZmllZCBhbmQgc2VsZWN0ZWQuCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjUyMTcyPC9idWc+OiBVcGRhdGUgVG9tY2F0IGJ1aWxkIGluc3RydWN0aW9ucy4gSW5jbHVkZXMgY2hhbmdlcwogICAgICAgIHByb3Bvc2VkIGJ5IGJtYXJndWxpZXMuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjI0MzwvYnVnPjogSW1wcm92ZSB3aW5kb3dzIHNlcnZpY2UgZG9jdW1lbnRhdGlvbiB0byBjbGFyaWZ5IGhvdwogICAgICAgIHRvIGluY2x1ZGUgPGNvZGU+IzwvY29kZT4gYW5kL29yIDxjb2RlPjs8L2NvZGU+IGluIHRoZSB2YWx1ZSBvZiBhbgogICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBzZXJ2aWNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ik90aGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjA1OTwvYnVnPjogRW5zdXJlIFdpbmRvd3MgcmVnaXN0cnkga2V5cyBhcmUgcmVtb3ZlZCB3aGVuIHVzaW5nCiAgICAgICAgdGhlIHVuLWluc3RhbGwgb3B0aW9uIG9mIHRoZSBXaW5kb3dzIGluc3RhbGxlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjM0IChqaW0pIiBydGV4dD0icmVsZWFzZWQgMjAxMS0wOS0yMiI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBUb21jYXQtTmF0aXZlIHRvIDEuMS4yMi4gKGppbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRml4IENWRS0yMDExLTI3MjkuIFVwZGF0ZSB0byBDb21tb25zIERhZW1vbiAxLjAuNy4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMjYyPC9idWc+OiBXaGVuIHVzaW5nIHRoZSBXaW5kb3dzIGluc3RhbGxlciwgdGhlIG1vbml0b3IgaXMgbm93CiAgICAgICAgYXV0by1zdGFydGVkIGZvciB0aGUgY3VycmVudCB1c2VyIHJhdGhlciB0aGFuIGFsbCB1c2VycyB0byBiZSBjb25zaXN0ZW50CiAgICAgICAgd2l0aCBtZW51IGl0ZW0gY3JlYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDUxMDwvYnVnPjogUHJvdmlkZSBhbiBvcHRpb24gd2l0aGluIHRoZSBXaW5kb3dzIGluc3RhbGxlciB0bwogICAgICAgIGNyZWF0ZSBtZW51IGVudHJpZXMgZm9yIHRoZSBjdXJyZW50IHVzZXIgb3IgYWxsIHVzZXJzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA5NDk8L2J1Zz46IEFkZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHRoZSBBSlAgcG9ydCBhbmQgdGhlCiAgICAgICAgc2h1dGRvd24gcG9ydCB3aGVuIHVzaW5nIHRoZSBXaW5kb3dzIGluc3RhbGxlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxMTM1PC9idWc+OiBGaXggYXV0by1kZXRlY3Rpb24gb2YgSkFWQV9IT01FIGZvciA2NC1iaXQgV2luZG93cwogICAgICAgIHBsYXRmb3JtcyB0aGF0IG9ubHkgaGF2ZSBhIDMyLWJpdCBKVk0gaW5zdGFsbGVkIHdoZW4gdXNpbmcgdGhlIFdpbmRvd3MKICAgICAgICBpbnN0YWxsZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI3OTg4PC9idWc+OiBJbXByb3ZlIHJlcG9ydGluZyBvZiBtaXNzaW5nIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjg4NTI8L2J1Zz46IEFkZCBVUkwgZW5jb2Rpbmcgd2hlcmUgbWlzc2luZyB0byBwYXJhbWV0ZXJzIGluIFVSTHMKICAgICAgICBwcmVzZW50ZWQgYnkgQW50IHRhc2tzIHRvIHRoZSBNYW5hZ2VyIGFwcGxpY2F0aW9uLiBCYXNlZCBvbiBhIHBhdGNoIGJ5CiAgICAgICAgU3RlcGhhbmUgQmFpbGxpZXouIChtYXJrKSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTE3OTwvYnVnPjogUmV0dXJuIDQwNCByYXRoZXIgdGhhbiA0MDAgZm9yIHJlcXVlc3RzIHRvIHRoZSBST09UCiAgICAgICAgY29udGV4dCB3aGVuIG5vIFJPT1QgY29udGV4dCBoYXMgYmVlbiBkZXBsb3llZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwMTg5PC9idWc+OiBPbmNlIHRoZSBhcHBsaWNhdGlvbiBoYXMgZmluaXNoZWQgd3JpdGluZyB0byB0aGUKICAgICAgICByZXNwb25zZSwgcHJldmVudCBmdXJ0aGVyIHJlYWRzIGZyb20gdGhlIHJlcXVlc3Qgc2luY2UgdGhpcyBjYXVzZXMKICAgICAgICB2YXJpb3VzIHByb2JsZW1zIGluIHRoZSBjb25uZWN0b3JzIHdoaWNoIGRvIG5vdCBleHBlY3QgdGhpcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggQ1ZFLTIwMTEtMjIwNC4gUHJldmVudCB1c2VyIHBhc3N3b3JkcyBhcHBlYXJpbmcgaW4gbG9nIGZpbGVzIGlmIGEKICAgICAgICBydW50aW1lIGV4Y2VwdGlvbiAoZS5nLiBPT01FKSBvY2N1cnMgd2hpbGUgY3JlYXRpbmcgYSBuZXcgdXNlciBmb3IgYQogICAgICAgIE1lbW9yeVVzZXJEYXRhYmFzZSB2aWEgSk1YLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTEwNDI8L2J1Zz46IERvbiZhcG9zO3QgdHJpZ2dlciBzZXNzaW9uIGNyZWF0aW9uIGxpc3RlbmVycyB3aGVuIGEKICAgICAgICBzZXNzaW9uIElEIGlzIGNoYW5nZWQgYXMgcGFydCBvZiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxMzI0PC9idWc+OiBJbXByb3ZlIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbnMgd2hlbiBmbHVzaGluZyB0aGUKICAgICAgICByZXNwb25zZSBidWZmZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGRvRmx1c2ggZmxhZyBkb2VzIG5vdCBnZXQgc3R1Y2sgaW4KICAgICAgICB0aGUgZW5hYmxlZCBzdGF0ZS4gUGF0Y2ggcHJvdmlkZWQgYnkgSmVyZW15IE5vcnJpcy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxNDAzPC9idWc+OiBBdm9pZCBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpbiBKVUxJIEZpbGVIYW5kbGVyIGlmCiAgICAgICAgZm9ybWF0dGVyIGlzIG1pc2NvbmZpZ3VyZWQuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTQ3MzwvYnVnPjogRml4IGNvbmNhdGVuYXRpb24gb2YgdmFsdWVzIGluCiAgICAgICAgU2VjdXJpdHlDb25maWcuc2V0U2VjdXJpdHlQcm9wZXJ0eSgpIHdoZW4gdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IEpSRSBpcwogICAgICAgIG51bGwuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTU1MDwvYnVnPjogSW50ZXJuYWwgZXJyb3JzIGluIFRvbWNhdCBjb21wb25lbnRzIHRoYXQgcHJvY2VzcwogICAgICAgIHJlcXVlc3RzIGJlZm9yZSB0aGV5IGFyZSBwYXNzZWQgdG8gYSB3ZWIgYXBwbGljYXRpb24sIHN1Y2ggYXMKICAgICAgICBBdXRoZW50aWNhdG9ycywgbm93IHJldHVybiBhIDUwMCByZXNwb25zZSByYXRoZXIgdGhhbiBhIDIwMCByZXNwb25zZS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIENWRS0yMDExLTExODQ6IEFkZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgRElHRVNUCiAgICAgICAgYXV0aGVudGljYXRvci4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggQ1ZFLTIwMTEtMjUyNi4gUHJvdGVjdCBhZ2FpbnN0IGNyYXNoZXMgKEhUVFAgQVBSKSBpZiBzZW5kZmlsZSBpcwogICAgICAgIGNvbmZpZ3VyZWQgdG8gc2VuZCBtb3JlIGRhdGEgdGhhbiBpcyBhdmFpbGFibGUgaW4gdGhlIGZpbGUuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTAzOTQ8L2J1Zz46IFJldHVybiAtMSBmcm9tIHJlYWQgb3BlcmF0aW9uIGluc3RlYWQgb2YgdGhyb3dpbmcgYW4KICAgICAgICBleGNlcHRpb24gd2hlbiBlbmNvdW50ZXJpbmcgYW4gRU9GIHdpdGggdGhlIEhUVFAgQVBSIGNvbm5lY3Rvci4KICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA3NDQ8L2J1Zz46IFNraXAgdGhlIFNTTCBjb25maWd1cmF0aW9uIGNoZWNrIG9uIHBsYXRmb3JtcyB3aGVyZSBhbgogICAgICAgIHVuYm91bmRlZCBzb2NrZXQgY2Fubm90IGJlIGNyZWF0ZWQuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTA3MzwvYnVnPjogVGhyb3cgYW4gZXhjZXB0aW9uIGFuZCBkbyBub3Qgc3RhcnQgdGhlIEFQUiBjb25uZWN0b3IKICAgICAgICBpZiBpdCBpcyBjb25maWd1cmVkIGZvciBTU0wgYW5kIGFuIGludmFsaWQgdmFsdWUgaXMgcHJvdmlkZWQgZm9yCiAgICAgICAgU1NMUHJvdG9jb2wuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTY5ODwvYnVnPjogRml4IENWRS0yMDExLTMxOTAuIFByZXZlbnQgQUpQIG1lc3NhZ2UgaW5qZWN0aW9uLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgRGV0ZWN0IGluY29tcGxldGUgQUpQIG1lc3NhZ2VzIGFuZCByZWplY3QgdGhlIGFzc29jaWF0ZWQgcmVxdWVzdCBpZiBvbmUKICAgICAgICBpcyBmb3VuZC4gKG1hcmt0KSAKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjM2MjwvYnVnPjogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRhZyBmaWxlIGF0dHJpYnV0ZXMgKHdoaWNoIGNhbgogICAgICAgIHVzZSBhbnkgdmFsaWQgWE1MIG5hbWUpIGhhdmUgYSBuYW1lIHdoaWNoIGlzIG5vdCBhIEphdmEgaWRlbnRpZmllci4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBwb3NzaWJsZSB0aHJlYWRpbmcgaXNzdWUgaW4gSlNQIGNvbXBpbGF0aW9uIHdoZW4gZGV2ZWxvcG1lbnQgbW9kZSBpcwogICAgICAgIGVuYWJsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg3MTc8L2J1Zz46IEVuc3VyZSBzZXNzaW9uIGFjdGl2YXRpb24gZXZlbnRzIGFyZSBmaXJlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNzcxPC9idWc+OiBFbnN1cmUgSHR0cFNlcnZsZXRSZXF1ZXN0I2dldEF1dGhUeXBlKCkgcmV0dXJucyB0aGUKICAgICAgICBuYW1lIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaWYgcmVxdWVzdCBoYXMgYWxyZWFkeSBiZWVuCiAgICAgICAgYXV0aGVudGljYXRlZC4gKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTE2NDc8L2J1Zz46IEZpeCBzZXNzaW9uIHJlcGxpY2F0aW9uIHdoZW4gYSBzZXNzaW9uIGF0dHJpYnV0ZSBpcyBhCiAgICAgICAgSmF2YSBkeW5hbWljIHByb3h5LiBCYXNlZCBvbiBhIHBhdGNoIGJ5IFRvbWFzeiBTa3V0bmlrLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNDk4PC9idWc+OiBBZGQgdGhlIGFsbFJvbGVzTW9kZSBhdHRyaWJ1dGUgdG8gdGhlIFJlYWxtCiAgICAgICAgY29uZmlndXJhdGlvbiBwYWdlIGluIHRoZSBkb2N1bWVudGF0aW9uIHdlYiBhcHBsaWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDb25maWd1cmUgU2VjdXJpdHkgTWFuYWdlciBIb3ctVG8gdG8gaW5jbHVkZSBhIGNvcHkgb2YgdGhlIGFjdHVhbAogICAgICAgIGNvbmYvY2F0YWxpbmEucG9saWN5IGZpbGUgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsdCwgcmF0aGVyCiAgICAgICAgdGhhbiBtYWludGFpbmluZyBhIGNvcHkgb2YgaXRzIGNvbnRlbnQuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODk5NzwvYnVnPjogRml4ZWQgc29tZSB0eXBvcyBhbmQgaW1wcm92ZSBjcm9zcy1yZWZlcmVuY2luZyB0byB0aGUKICAgICAgICBIVFRQIENvbm5lY3RvciBhbmQgQVBSIGRvY3VtZW50YXRpb24gd2l0aCB0aGUgU1NMIEhvdy1UbyBwYWdlIG9mIHRoZQogICAgICAgIGRvY3VtZW50YXRpb24gd2ViIGFwcGxpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ik90aGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgQWxpZ24ganBkYSBzZXR0aW5ncyBpbiBjYXRhbGluYS5iYXQgd2l0aCBjYXRhbGluYS5zaCwgdGM2LjAueCwgdGM3LjAueAogICAgICAgIGFuZCB0cnVuay4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDbGFyaWZ5IGVycm9yIG1lc3NhZ2VzIGluICouc2ggZmlsZXMgdG8gbWVudGlvbiB0aGF0IGlmIGEgc2NyaXB0IGlzCiAgICAgICAgbm90IGZvdW5kIGl0IG1pZ2h0IGJlIGJlY2F1c2UgZXhlY3V0ZSBwZXJtaXNzaW9uIGlzIG5lZWRlZC4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjMzIChqaW0pIiBydGV4dD0icmVsZWFzZWQgMjAxMS0wMi0xMCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBwZXJtaXNzaW9ucyBvZiB2ZXJzaW9uLnNoIGluIGJpbiB0YXJiYWxsLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDUzMzI8L2J1Zz4sIDxidWc+NDU4NTI8L2J1Zz4sIDxidWc+NTAxNDA8L2J1Zz46CiAgICAgICAgQmFja3BvcnQgbnVtZXJvdXMgaW1wcm92ZW1lbnRzIHRvIHRoZSBXaW5kb3dzIGluc3RhbGxlci4KICAgICAgICBTcGVjaWZ5IHRoZSBjb3JyZWN0IGVuY29kaW5nICh0aGUgY3VycmVudCBXaW5kb3dzIGNvZGUgcGFnZSkgcmF0aGVyCiAgICAgICAgdGhhbiBhc3N1bWluZyBVVEYtOCB3aGVuIGNyZWF0aW5nIHRvbWNhdC11c2Vycy54bWwgLSA8YnVnPjQ1MzMyPC9idWc+LAogICAgICAgIDxidWc+NDU4NTI8L2J1Zz4uCiAgICAgICAgVXBkYXRlIGluc3RhbGwvdW5pbnN0YWxsIGljb25zLiBDcmVhdGUgYW4gaW5zdGFsbGF0aW9uIGxvZy4KICAgICAgICBBbGxvdyAzMi1iaXQgSlZNcyB0byBiZSBzZWxlY3RlZCB3aGVuIGluc3RhbGxpbmcgb24gYSA2NC1iaXQgcGxhdGZvcm0uCiAgICAgICAgRG8gbm90IGlnbm9yZSBpbnN0YWxsIGRpcmVjdG9yeSBpZiBpdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIGxpbmUgc3dpdGNoIG9uIDY0LWJpdCBwbGF0Zm9ybXMgLSA8YnVnPjUwMTQwPC9idWc+LgogICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgPGNvZGU+Lz88L2NvZGU+IGNvbW1hbmQgbGluZSBzd2l0Y2guCiAgICAgICAgUmVwbGFjZSB0aGUgLmluaSBmaWxlcyB3aXRoIHRoZSBzY3JpcHQgZXF1aXZhbGVudHMuCiAgICAgICAgUHJvdmlkZSB0aGUgYWJpbGl0eSB0byBlZGl0IHRoZSByb2xlcyBmb3IgdGhlIGFkZGVkIHVzZXIuCiAgICAgICAgQ2xlYW4gdXAgZnVsbHkgYWZ0ZXIgaW5zdGFsbGF0aW9uLgogICAgICAgIEFkZCBEZXRhaWxQcmludCBzdGF0ZW1lbnRzIGZvciBvcGVyYXRpb25zIHRoYXQgbWF5IHRha2UgdGltZS4KICAgICAgICBJbXByb3ZlIHRoZSBkZXNjcmlwdGlvbnMgb2YgdGhlIGNvbXBvbmVudHMuCiAgICAgICAgKGtrb2xpbmtvLCBtdHVyaywgbWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCByb2xlcyAoYWRtaW4tZ3VpLCBhZG1pbi1zY3JpcHQsIG1hbmFnZXItZ3VpLCBtYW5hZ2VyLXNjcmlwdCwKICAgICAgICBtYW5hZ2VyLWpteCwgbWFuYWdlci1zdGF0dXMpIHRvIHRoZSBNYW5hZ2VyLCBIb3N0IE1hbmFnZXIgYW5kIEFkbWluCiAgICAgICAgYXBwbGljYXRpb25zIHRvIGFsbG93IG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb2YgcGVybWlzc2lvbnMuIFRoZSBvbGQKICAgICAgICByb2xlcyBhcmUgZGVwcmVjYXRlZCBidXQgd2lsbCBzdGlsbCB3b3JrIGluIHRoZSBzYW1lIHdheS4gKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgSFRUUCBzcGVjaWZpY2F0aW9uIGNvbXBsaWFuY2UgaW4gc3VwcG9ydCBvZgogICAgICAgIDxjb2RlPkFjY2VwdC1MYW5ndWFnZTwvY29kZT4gaGVhZGVyLiBUaGlzIHByb3RlY3RzIGZyb20ga25vd24gZXhwbG9pdAogICAgICAgIG9mIHRoZSBPcmFjbGUgSlZNIGJ1ZyB0aGF0IHRyaWdnZXJzIGEgRG9TLCBDVkUtMjAxMC00NDc2LiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA2MjA8L2J1Zz46IFN0b3AgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZwogICAgICAgIDxjb2RlPlNlc3Npb24uZW5kQWNjZXNzKCk8L2NvZGU+IGZyb20gcHJldmVudGluZyB0aGUgbm9ybWFsIGNvbXBsZXRpb24KICAgICAgICBvZiA8Y29kZT5SZXF1ZXN0LnJlY3ljbGUoKTwvY29kZT4uIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIDxjb2RlPkpTU0UxM0ZhY3Rvcnk8L2NvZGU+LCA8Y29kZT5KU1NFMTNTb2NrZXRGYWN0b3J5PC9jb2RlPgogICAgICAgIGNsYXNzZXMsIGFzIFRvbWNhdCA1LjUgYWx3YXlzIHJ1bnMgb24gSlJFIDEuNCBvciBsYXRlci4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwMzI1PC9idWc+OiBXaGVuIHRoZSBKVk0gaW5kaWNhdGVzIHN1cHBvcnQgZm9yIFJGQyA1NzQ2LCBkaXNhYmxlCiAgICAgICAgVG9tY2F0JmFwb3M7cyA8Y29kZT5hbGxvd1Vuc2FmZUxlZ2FjeVJlbmVnb3RpYXRpb248L2NvZGU+IGNvbmZpZ3VyYXRpb24KICAgICAgICBhdHRyaWJ1dGUgYW5kIHVzZSB0aGUgSlZNIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCByZW5lZ290aWF0aW9uLgogICAgICAgIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zMiAoamltKSIgcnRleHQ9InJlbGVhc2VkIDIwMTEtMDItMDEiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gQ29tbW9ucyBEYWVtb24gMS4wLjUuIChtdHVyaykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIGNvbW1vbnMtcG9vbCAxLjUuNS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBFbnN1cmUgUE9NIGZpbGVzIGhhdmUgY29ycmVjdCBsaW5lIGVuZGluZ3MgaW4gc291cmNlIGRpc3RyaWJ1dGlvbnMuCiAgICAgICAgKHJqdW5nL21hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIDxidWc+NDM5NjA8L2J1Zz46IEV4cG9zZSA8Y29kZT5hdmFpbGFibGU8L2NvZGU+IHByb3BlcnR5IG9mCiAgICAgICAgU3RhbmRhcmRXcmFwcGVyIHZpYSBKTVguIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDEzMTwvYnVnPjogQXZvaWQgcG9zc2libGUgTlBFIGluIGRlYnVnIG91dHB1dCBpbiBQZXJzaXN0ZW50VmFsdmUuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgc2ViYi4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNDEzPC9idWc+OiBFbnN1cmUgMzA0cyBhcmUgbm90IHJldHVybmVkIHdoZW4gdXNpbmcgc3RhdGljIGZpbGVzCiAgICAgICAgYXMgZXJyb3IgcGFnZXMuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQXZvaWQgdW5uZWNlc3NhcnkgY2FzdCBpbiBTdGFuZGFyZENvbnRleHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDQ2MDwvYnVnPjogQXZvaWQgYSBwb3NzaWJsZSBtZW1vcnkgbGVhayBjYXVzZWQgYnkgdXNpbmcgYSBjYWNoZWQKICAgICAgICBleGNlcHRpb24gaW5zdGFuY2UuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDU1MDwvYnVnPjogV2hlbiBhIG5ldyBkaXJlY3RvcnkgaXMgY3JlYXRlZCAoZS5nLiB2aWEgV2ViREFWKQogICAgICAgIGVuc3VyZSB0aGF0IGEgc3Vic2VxdWVudCByZXF1ZXN0IGZvciB0aGF0IGRpcmVjdG9yeSBkb2VzIG5vdCByZXN1bHQgaW4gYQogICAgICAgIDQwNCByZXNwb25zZS4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3OTEzPC9idWc+OiBSZXR1cm4gdGhlIElQIGFkZHJlc3MgcmF0aGVyIHRoYW4gbnVsbCBmb3IKICAgICAgICA8Y29kZT5nZXRSZW1vdGVIb3N0KCk8L2NvZGU+IHdpdGggdGhlIEFQUiBjb25uZWN0b3IgaWYgdGhlIElQIGFkZHJlc3MKICAgICAgICBkb2VzIG5vdCByZXNvbHZlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk1MjE8L2J1Zz46IERpc2FibGUgc2Nhbm5pbmcgZm9yIGEgZnJlZSBwb3J0IGluIEprIEFKUC8xLjMKICAgICAgICBjb25uZWN0b3IgYnkgZGVmYXVsdC4gRG8gbm90IGNoYW5nZSBtYXhQb3J0IGZpZWxkIHZhbHVlIG9mIENoYW5uZWxTb2NrZXQKICAgICAgICBpbiBpdHMgPGNvZGU+c2V0UG9ydCgpPC9jb2RlPiBhbmQgPGNvZGU+aW5pdCgpPC9jb2RlPiBtZXRob2RzLiBBZGQKICAgICAgICBzdXBwb3J0IGZvciA8Y29kZT5tYXhQb3J0PC9jb2RlPiBhdHRyaWJ1dGUgb24gYSA8Y29kZT5Db25uZWN0b3I8L2NvZGU+CiAgICAgICAgZWxlbWVudCBhcyBhIHN5bm9ueW0gZm9yIGNoYW5uZWxTb2NrZXQubWF4UG9ydC4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5OTM1PC9idWc+OiBIYW5kbGUgY29tcGlsYXRpb24gb2YgcmVjdXJzaXZlIHRhZyBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBzZW5kaW5nIGFuIGFjY2VzcyBtZXNzYWdlIGluIERlbHRhTWFuYWdlci4KICAgICAgICBtYXhJbmFjdGl2ZUludGVydmFsIG9mIG5vdCBNYW5hZ2VyIGJ1dCB0aGUgc2Vzc2lvbiBpcyB1c2VkLiAKICAgICAgICBJZiBtYXhJbmFjdGl2ZUludGVydmFsIGlzIG5lZ2F0aXZlLCBhbiBhY2Nlc3MgbWVzc2FnZSBpcyBub3Qgc2VuZGluZy4gCiAgICAgICAgKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA1NDc8L2J1Zz46IEFkZCB0aW1lIHN0YW1wIGZvciBDSEFOR0VfU0VTU0lPTl9JRCBtZXNzYWdlIGFuZCAKICAgICAgICBTRVNTSU9OX0VYUElSRUQgbWVzc2FnZS4gKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjUwMjk0PC9idWc+OiBBZGQgbW9yZSBpbmZvcm1hdGlvbiB0byBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyBmb3JtYXQKICAgICAgICBvZiBjb25maWd1cmF0aW9uIGZpbGVzLiBQYXRjaCBwcm92aWRlZCBieSBMdWtlIE1leWVyLiAobWFya3QpIAogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgZGF0YWJhc2UgY29ubmVjdGlvbiBmYWN0b3J5LiAocmp1bmcpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgZmlsdGVyaW5nIG9mIE1hbmFnZXIgZGlzcGxheSBvdXRwdXQuIChra29saW5rbykgCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIENvbmZpZ3VyZSB0aGUgQWRtaW4sIE1hbmFnZXIgYW5kIEhvc3QtTWFuYWdlciB3ZWIgYXBwbGljYXRpb25zIHRvIHVzZQogICAgICAgIEh0dHBPbmx5IGZsYWcgZm9yIHRoZWlyIHNlc3Npb24gY29va2llcy4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjMxIChqaW0pIiBydGV4dD0icmVsZWFzZWQgMjAxMC0wOS0xNiI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEFkZCBzdm46ZXhlY3V0YWJsZSBwcm9wZXJ0eSB0byBzb21lIHNjcmlwdCBmaWxlcyBhbmQKICAgICAgICByZW1vdmUgaXQgZnJvbSBub24tZXhlY3V0YWJsZSBmaWxlcy4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxMTM8L2J1Zz4gQWRkIHN5c3RlbSBwcm9wZXJ0eSAoQUxMT1dfRU1QVFlfUVVFUllfU1RSSU5HKSB0byBhbGxvdwogICAgICAgIHNwZWMgY29tcGxpYW50IGhhbmRsaW5nIG9mIHF1ZXJ5IHN0cmluZy4gKG1hcmt0L2trb2xpbmtvL2ppbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmV0dXJuIGEgY29weSBvZiB0aGUgVVJMIGJlaW5nIHVzZWQgZnJvbSB0aGUgd2ViYXBwIGNsYXNzIGxvYWRlciwgbm90CiAgICAgICAgdGhlIG9yaWdpbmFsIGFycmF5LiAoa2tvbGlua28vbWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk3NDk8L2J1Zz46IFVzZSBIdHRwT25seSBmbGFnIG9mIGN1cnJlbnQgY29udGV4dCB3aGVuIGdlbnJhdGluZwogICAgICAgIGEgU2luZ2xlLVNpZ24tT24gY29va2llLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk3MTg8L2J1Zz46IEZpeCByZWdyZXNzaW9uIGluIHByZXZpb3VzIGZpeCBmb3IgPGJ1Zz40Njk4NDwvYnVnPgogICAgICAgIGNhdXNlZCBieSB0aGUgcGF0Y2ggYmVpbmcgYXBwbGllZCB0byB0aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlLiBUaGUKICAgICAgICByZWdyZXNzaW9uIGNhdXNlZCBIVFRQIDAuOSByZXF1ZXN0cyB0byBmYWlsLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5NTg1PC9idWc+OiBVcGRhdGUgSlNWQyBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgbmV3IHBhY2thZ2luZwogICAgICAgIG9mIENvbW1vbnMgRGFlbW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk3NzQ8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciBTU0wgd2l0aCBlaXRoZXIgSlNTRSBvciBBUFIgYmFhZWQKICAgICAgICBjb25uZWN0b3JzIHRvIHRoZSBhZG1pbiBhcHAuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBBZGQgTnVsbCBjaGVjayB3aGVuIENIQU5HRV9TRVNTSU9OX0lEIG1lc3NhZ2UgcmVjZWl2ZWQuIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj48L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMzAgKGppbSkiIHJ0ZXh0PSJyZWxlYXNlZCAyMDEwLTA3LTA5Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+VXBkYXRlIHRvIENvbW1vbnMgRGFlbW9uIDEuMC4yLiBVc2Ugc2VydmljZSBsYXVuY2hlciAocHJvY3J1bikKICAgICAgZnJvbSB0aGUgQ29tbW9ucyBEYWVtb24gcmVsZWFzZS4gRG8gbm90IGtlZXAgYSBjb3B5IG9mIGl0IGluIG91ciBzb3VyY2UKICAgICAgdHJlZS4gKG10dXJrL2trb2xpbmtvKTwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBOU0lTIDIuNDYuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBDb21tb25zIERCQ1AgMS4zLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg4NDA8L2J1Zz46IFN3YWxsb3cgb3V0cHV0IChpZiBhbnkpIGZyb20gdXNlIG9mIGNkIHdoZW4gZGV0ZXJtaW5pbmcKICAgICAgICAkQ0FUQUxJTkFfSE9NRSBpbiBjYXRhbGluYS5zaCBhbmQgdG9vbC13cmFwcGVyLnNoIHNjcmlwdHMuIEJhc2VkIG9uIHBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgbWRpZXR6ZS4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5MjM2PC9idWc+OiBEbyBub3QgdXNlIGluZGV4aW5nIHdoZW4gcGFja2luZyBUb21jYXQgSkFScy4KICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg5OTA8L2J1Zz46IEJ1aWxkIHdpbmRvd3MgZGlzdHJpYnV0aW9ucyBjb3JyZWN0bHkgb24gTGludXggYW5kCiAgICAgICAgYWRkIHN1cHBvcnQgZm9yIHRoZSBza2lwLmluc3RhbGxlciBwcm9wZXJ0eS4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBDVkUtMjAxMC0xMTU3LiBQcmV2ZW50IHBvc3NpYmxlIGRpc2Nsb3N1cmUgb2YgaG9zdCBuYW1lIG9yIElQCiAgICAgICAgYWRkcmVzcyB2aWEgdGhlIEhUVFAgV1dXLUF1dGhlbnRpY2F0ZSBoZWFkZXIgd2hlbiB1c2luZyBCQVNJQyBvciBESUdFU1QKICAgICAgICBhdXRoZW50aWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0MDQxPC9idWc+LCA8YnVnPjQ4Njk0PC9idWc+OiBGaXggZHVwbGljYXRlIGNsYXNzIGRlZmluaXRpb24KICAgICAgICB1bmRlciBsb2FkLiBBdm9pZCBwb3NzaWJsZSBkZWFkbG9jayBpbiBjbGFzcyBsb2FkaW5nLgogICAgICAgIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzc3NDwvYnVnPjogRW5zdXJlIHdlYiBhcHBsaWNhdGlvbiBjbGFzcyBsb2FkZXIgaXMgdXNlZCB3aGVuIAogICAgICAgIGNhbGxpbmcgc2Vzc2lvbiBsaXN0ZW5lcnMuIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQ4MTc5PC9idWc+OiBJbXByb3ZlIGVycm9yIGhhbmRsaW5nIHdoZW4gcmVhZGluZyBvciB3cml0aW5nCiAgICAgICAgVExEIGNhY2hlIGZpbGUgKCJ0bGRDYWNoZS5zZXIiKS4gKGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5Mzk4PC9idWc+OiBCeXRlQ2h1bmsuaW5kZXhPZihTdHJpbmcsIGludCwgaW50LCBpbnQpIGNvdWxkIG5vdAogICAgICAgIGZpbmQgYSBzdHJpbmcgb2YgbGVuZ3RoIDEuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRW5zdXJlIGFsbCByZXF1aXJlZCBpMThuIG1lc3NhZ2VzIGFyZSBwcmVzZW50IGZvciB0aGUgQVBSL25hdGl2ZQogICAgICAgIExpc3RlbmVyLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBwb3NzaWJsZSBvdmVyZmxvd3Mgd2hlbiBjYWxjdWxhdGluZyBzZXNzaW9uIHN0YXRpc3RpY3MuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTQyNDwvYnVnPjogQXZvaWQgTlBFIGlmIGNsaWVudCBwcm92aWRlcyBubyBkYXRhIHdpdGggYSBjaHVua2VkCiAgICAgICAgUE9TVCByZXF1ZXN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIE1pbm9yIGNvZGUgY2xlYW51cCBpbiBBY2Nlc3NMb2dWYWx2ZSBhbmQgRmFzdENvbW1vbkFjY2Vzc0xvZ1ZhbHZlCiAgICAgICAgY2xhc3Nlcy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD5BcnJhbmdlIGZpbHRlciBsb2dpYy4gKGpmY2xlcmUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg2MTM8L2J1Zz46IE9ubHkgYXR0ZW1wdCBBUFIvbmF0aXZlIGNvbm5lY3RvciBpbml0aWFsaXphdGlvbiBpZgogICAgICAgIHRoZSBMaXN0ZW5lciBlbGVtZW50IGhhcyBiZWVuIHNwZWNpZmllZCBpbiBzZXJ2ZXIueG1sLiAoZmhhbmlrL2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4ODQzPC9idWc+OiBQcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2NrIGFuZCBjb3JyZWN0IHF1ZXVlIGhhbmRsaW5nCiAgICAgICAgZm9yIHdvcmtlciBhbGxvY2F0aW9uIGluIEFQUiBjb25uZWN0b3JzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFVzZSBjaHVua2VkIGVuY29kaW5nIGZvciBodHRwIDEuMSByZXNwb25zZXMgd2l0aCBubyBjb250ZW50LWxlbmd0aAogICAgICAgIChyZWdhcmRsZXNzIG9mIGtlZXAtYWxpdmUpIHNvIGNsaWVudCBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGNvbXBsZXRlCiAgICAgICAgYW5kIHBhcnRpYWwgcmVzcG9uc2VzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIzOTA8L2J1Zz4sIDxidWc+NDg2MTY8L2J1Zz46IEZpeCBjb21waWxhdGlvbiBlcnJvciB3aXRoIHNvbWUKICAgICAgICBuZXN0ZWQgdGFnIGZpbGVzIGFuZCBzaW1wbGUgdGFncy4gRG8gbm90IGRlY2xhcmUgb3Igc3luY2hyb25pemUKICAgICAgICBzY3JpcHRpbmcgdmFyaWFibGVzIGZvciBKU1AgZnJhZ21lbnRzIHNpbmNlIHRoZXkgYXJlIHNjcmlwdGxlc3MuCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3ODc4PC9idWc+OiBSZXR1cm4gJiN4MjAxQzs0MDQmI3gyMDFEO3MgcmF0aGVyIHRoYW4gYSBwZXJtYW5lbnQKICAgICAgICAmI3gyMDFDOzUwMCYjeDIwMUQ7IGlmIGEgSlNQIGlzIGRlbGV0ZWQuIE1ha2Ugc3VyZSBmaXJzdCByZXNwb25zZSBhZnRlcgogICAgICAgIGRlbGV0aW9uIGlzIGNvcnJlY3QuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODcwMTwvYnVnPjogQWRkIGEgc3lzdGVtIHByb3BlcnR5IHRvIGFsbG93IGRpc2FibGluZyBlbmZvcmNlbWVudAogICAgICAgIG9mIEpTUC41LjMuIFRoZSBzcGVjaWZpY2F0aW9uIHJlY29tbWVuZHMsIGJ1dCBkb2VzIG5vdCByZXF1aXJlLCB0aGlzCiAgICAgICAgZW5mb3JjZW1lbnQuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODU4MDwvYnVnPjogUHJldmVudCBBY2Nlc3NDb250cm9sRXhjZXB0aW9uIHdoZW4gcnVubmluZyB1bmRlciBhCiAgICAgICAgc2VjdXJpdHkgbWFuYWdlciBpZiB0aGUgZmlyc3QgYWNjZXNzIGlzIHRvIGEgSlNQIHRoYXQgdXNlcyBhCiAgICAgICAgRnVuY3Rpb25NYXBwZXIuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTE5NjwvYnVnPjogQXZvaWQgTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4KICAgICAgICBQYWdlQ29udGV4dC5nZXRFcnJvckRhdGEoKSBpZiBhbiBlcnJvci1oYW5kbGluZyBKU1AgcGFnZSBpcyBjYWxsZWQKICAgICAgICBkaXJlY3RseS4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODcxNzwvYnVnPjogV2hlbiBhIG5vZGUgam9pbnMgYSBjbHVzdGVyIGFuZCBpdCByZWNlaXZlcyBhbGwgdGhlCiAgICAgICAgY3VycmVudCBzZXNzaW9ucywgZW5zdXJlIHRoZSBzZXNzaW9uQ3JlYXRlZCBldmVudCBpcyBmaXJlZCBpZiB0aGUKICAgICAgICBNYW5hZ2VyIGlzIGNvbmZpZ3VyZWQgdG8gcmVwbGljYXRlIHNlc3Npb24gZXZlbnRzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDkxNzA8L2J1Zz46IERvIG5vdCBzZW5kIGR1cGxpY2F0ZWQgc2Vzc2lvbi4gKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk0NDU8L2J1Zz46IFdoZW4gc2Vzc2lvbiBJRCBpcyBjaGFuZ2VkIGFmdGVyIGF1dGhlbnRpY2F0aW9uLAogICAgICAgIGVuc3VyZSB0aGUgRGVsdGFNYW5hZ2VyIHJlcGxpY2F0ZXMgdGhlIGNoYW5nZSBpbiBJRCB0byB0aGUgb3RoZXIgbm9kZXMKICAgICAgICBpbiB0aGUgY2x1c3Rlci4gKGtmdWppbm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBCYWNrcG9ydCBkb2N1bWVudGF0aW9uIHN0eWxlc2hlZXQgaW1wcm92ZW1lbnRzIGZyb20gVG9tY2F0IDY6CiAgICAgICAgdXNlIENTUyBzdHlsZXMgdG8gcHJvdmlkZSBwcmludGVyLWZyaWVuZGx5IGxheW91dCwKICAgICAgICBzdXBwb3J0IGdlbmVyYXRpb24gb2YgVE9DIHRhYmxlcywKICAgICAgICBzdXBwb3J0IGxpbmtzIHRvIHJldmlzaW9uIG51bWJlcnMsCiAgICAgICAgdXNlIHVuZGVyc2NvcmVzIGluc3RlYWQgb2Ygc3BhY2VzIGluIGFuY2hvciBuYW1lcy4gKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjI5IChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAxMC0wNC0yMCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIDxidWc+Mzc4NDc8L2J1Zz46IE1ha2UgbG9jYXRpb24gYW5kIGZpbGVuYW1lIG9mIGNhdGFsaW5hLm91dCBjb25maWd1cmFibGUKICAgICAgICBpbiBjYXRhbGluYS5zaC4gKGZoYW5pay9ra29saW5rbykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzYwOTwvYnVnPjogUHJvdmlkZSBmYWlsLXNhZmUgRU9MIGNvbnZlcnNpb24gZm9yIGJ1aWxkIHByb2Nlc3MuCiAgICAgICAgKHNlYmIvbWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc2ODk8L2J1Zz46IEVuYWJsZSB0aGUgdGVzdCBBbnQgdGFyZ2V0IHRvIHdvcmsuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzcxMjwvYnVnPjogTG9hZGluZyB0Y25hdGl2ZSB3YXMgYnJva2VuIGluIDUuNS4yOC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb3JyZWN0IENWRS0yMDA5LTM1NDguIFdoZW4gaW5zdGFsbGVkIHZpYSB0aGUgV2luZG93cyBpbnN0YWxsZXIgYW5kCiAgICAgICAgdXNpbmcgZGVmYXVsdHMsIGRvbid0IGNyZWF0ZSBhbiBhZG1pbmlzdHJhdGl2ZSB1c2VyIHdpdGggYSBibGFuawogICAgICAgIHBhc3N3b3JkLiBBZGRpdGlvbmFsbHksIHRoZSBhZG1pbmlzdHJhdGl2ZSB1c2VyIGlzIG9ubHkgY3JlYXRlZCBpZiB0aGUKICAgICAgICBtYW5hZ2VyIG9yIGhvc3QtbWFuYWdlciB3ZWIgYXBwbGljYXRpb25zIGFyZSBzZWxlY3RlZCBmb3IgaW5zdGFsbGF0aW9uLgogICAgICAgIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRGVwcmVjYXRlIHRoZSBqbmkgQnVmZmVyIGFuZCBUaHJlYWQgY2xhc3Nlcy4gKHJqdW5nKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBJbmNsdWRlIDMyLWJpdCBhbmQgNjQtYml0IHZlcnNpb25zIG9mIFRvbWNhdCBOYXRpdmUgRExMcyBpbnRvIHRoZQogICAgICAgIFdpbmRvd3MgaW5zdGFsbGVyLCBpbnN0ZWFkIG9mIGRvd25sb2FkaW5nIHRoZW0gZnJvbSBhIHdlYiBzaXRlIGR1cmluZwogICAgICAgIGluc3RhbGwsIGFuZCBhbGxvdyBpdCB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdCB0aGUgY29ycmVjdCBvbmUgZm9yIHRoZQogICAgICAgIGN1cnJlbnQgcGxhdGZvcm0uIChra29saW5rby9tdHVyaykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIFdpbmRvd3MgaW5zdGFsbGVyIHRvIHVzZSBOU0lTIDIuNDUuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIGNvbW1vbnMtcG9vbCAxLjUuNC4gVGhpcyBmaXhlcyByZWdyZXNzaW9ucyBpbiAxLjUuMi4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBBbGlnbiBzZXJ2ZXIueG1sIGluc3RhbGxlZCBieSB0aGUgV2luZG93cyBpbnN0YWxsZXIgd2l0aCB0aGUgb25lCiAgICAgICAgYnVuZGxlZCBpbiB6aXAvdGFyLmd6IGFyY2hpdmVzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEVuY29kZSBhbGwgcHJvcGVydHkgZmlsZXMgdXNpbmcgYXNjaWkgZXNjYXBlZCBVVEYtOC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb3JyZWN0IE1ENSBnZW5lcmF0aW9uIGluIHRoZSBidWlsZCBwcm9jZXNzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzg0ODwvYnVnPjogUmUtZml4LiBEb24ndCBkaXNwbGF5IGluZm8gb3V0cHV0IHdoZW4gdGhlcmUgaXMgbm8KICAgICAgICB0ZXJtaW5hbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MjMxPC9idWc+OiBDYWxsIExvZ2luTW9kdWxlLmxvZ291dCgpIHdoZW4gdXNpbmcgSkFBU1JlYWxtLgogICAgICAgIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTg0NDwvYnVnPjogRml4IE5QRSB3aGVuIHBlcmZvcm1pbmcgYSBub24tSFRUUCBmb3J3YXJkLgogICAgICAgIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDU5PC9idWc+OiBSZWR1Y2UgdGhlIGNoYW5jZXMgb2YgZXJyb3JzIHdoZW4gdXNpbmcKICAgICAgICBFTkFCTEVfQ0xFQVJfUkVGRVJFTkNFUy4gUGF0Y2ggYnkgQ3VydCBBcm5vbGQuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+NDUyNTU8L2J1Zz46IEFkZCB0aGUgYWJpbGl0eSB0byBjaGFuZ2Ugc2Vzc2lvbiBJRCBvbgogICAgICAgIGF1dGhlbnRpY2F0aW9uIHRvIHByb3RlY3QgYWdhaW5zdCBzZXNzaW9uIGZpeGF0aW9uIGF0dGFja3MuIFRoaXMgaXMKICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0LiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5Njc8L2J1Zz46IEJldHRlciBoYW5kbGluZyBvZiBlcnJvcnMgd2hlbiB0cnlpbmcgdG8gdXNlCiAgICAgICAgTWFuYWdlci5yYW5kb21GaWxlLiBCYXNlZCBvbiBhIHBhdGNoIGJ5IEtpcmsgV29sZi4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NTE4PC9idWc+OiBDb3JyZWN0IHJlZmVyZW5jZSBpbiBWYWx2ZSBKYXZhZG9jIHRoYXQgcmVmZXJyZWQgdG8gYW4KICAgICAgICBvbGQgbWV0aG9kLiBQYXRjaCBwcm92aWRlZCBieSBDaHJpc3RvcGhlciBTY2h1bHR6LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc1Mzc8L2J1Zz46IFJldHVybiBhbiBlcnJvciBwYWdlIHJhdGhlciB0aGFuIGEgemVybyBsZW5ndGggMjAwCiAgICAgICAgcmVzcG9uc2UgaWYgdGhlIGZvcndhcmQgdG8gdGhlIGxvZ2luIG9yIGVycm9yIHBhZ2UgZmFpbHMgZHVyaW5nIEZPUk0KICAgICAgICBhdXRoZW50aWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NzE4PC9idWc+OiBGaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gY29udGV4dCBzdG9wL3JlbG9hZC4gUGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBHZW9yZ2UgU2V4dG9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc4MjY8L2J1Zz46IENvcnJlY3QgZXJyb3IgaW4gZGVidWcgbWVzc2FnZSBpbgogICAgICAgIG9yZy5hcGFjaGUuY2F0YWxpbmEuQm9vdHN0cmFwIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgICA8Zml4PgogICAgICAgIDxidWc+NDc5NjM8L2J1Zz46IEVuc3VyZSB0aGF0IGFueSBIVFRQIHN0YXR1cyBtZXNzYWdlcyBhcmUgY29tcGxpYW50CiAgICAgICAgd2l0aCBSRkMyNjE2LiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc5OTc8L2J1Zz46IEVuYWJsZSB0aGUgTmFtaW5nUmVzb3VyY2VzTUJlYW4gdG8gd29yayB3aXRoCiAgICAgICAgbm9uLVNlcnZlciAoaS5lLiBDb250ZXh0KSBjb250YWluZXJzLiBQYXRjaCBwcm92aWRlZCBieSBNaWNoYWVsIEFsbG1hbi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgwMDQ8L2J1Zz46IEFsbG93IGFwcGxpY2F0aW9ucyB0byBzZXQgdGhlIFNlcnZlciBoZWFkZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODAwNzwvYnVnPjogSW1wcm92ZSBleGNlcHRpb24gcHJvY2Vzc2luZyBpbgogICAgICAgIEN1c3RvbU9iamVjdElucHV0U3RyZWFtLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgwNDk8L2J1Zz46IEZpeCBjb3B5IGFuZCBwYXN0ZSBlcnJvciBzbwogICAgICAgIDxjb2RlPk5hbWluZ0NvbnRleHQuZGVzdHJveVN1YkNvbnRleHQoKTwvY29kZT4gd29ya3MgY29ycmVjdGx5LgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IGdpbmd5YW5nLnh1IChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40ODA5NzwvYnVnPjogTWFrZSBXZWJhcHBDbGFzc0xvYWRlciB0byBkbyBub3Qgc3dhbGxvdwogICAgICAgIEFjY2Vzc0NvbnRyb2xFeGNlcHRpb24uIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODA5NzwvYnVnPjogQXZvaWQgdGhyb3dpbmcgYW4gQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiB3aGljaCBjYW4KICAgICAgICBsZWFkIHRvIGEgTm9DbGFzc0RlZkZvdW5kRXJyb3Igb24gZmlyc3QgYWNjZXNzIG9mIGZpcnN0IGpzcC4KICAgICAgICAoa2tvbGlua28vbWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgzMjI8L2J1Zz46IFNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIGFyZSBub3QgSFRUUCBzZXBhcmF0b3JzIGFuZAogICAgICAgIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBzdWNoIGluIHRoZSBjb29raWUgaGFuZGxpbmcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgUHJvdmlkZSBhbiBvcHRpb24gdG8gYWxsb3cgdGhlIHVzZSBvZiBlcXVhbHMgY2hhcmFjdGVycyBpbiBjb29raWUKICAgICAgICB2YWx1ZXMuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODUxNjwvYnVnPjogUHJldmVudCBOUEUgaW4gSk5ESVJlYWxtIGlmIHJlcXVlc3RlZCB1c2VyIGRvZXMgbm90CiAgICAgICAgZXhpc3QuIFBhdGNoIHByb3ZpZGVkIGJ5IEtldmluIENvbmF3YXkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODU3NzwvYnVnPjogRmlsdGVyIFVSTCB3aGVuIGRpc3BsYXlpbmcgbWlzc2luZyBpbmNsdWRlZCBwYWdlLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODc2MDwvYnVnPjogUmVtb3ZlIHJhY2UgY29uZGl0aW9uIHRoYXQgY2FuIHJlc3VsdCBpbiBtdWx0aXBsZQogICAgICAgIHRocmVhZHMgdHJ5aW5nIHRvIHVzZSB0aGUgc2FtZSBJbnB1dFN0cmVhbS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgYW4gYWRkaXRpb25hbCBwZXJtaXNzaW9uIHJlcXVpcmVkIGJ5IEpVTEkgd2hlbiBydW5uaW5nIHVuZGVyIG5ld2VyCiAgICAgICAgSkRLcyBhbmQgYSBzZWN1cml0eSBtYW5hZ2VyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENsb3NlIHJlc291cmNlIHN0cmVhbSBpbiBXZWJhcHBDbGFzc0xvYWRlciBhZnRlciByZWFkIGVycm9yLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRG8gbm90IHN3YWxsb3cgZXhjZXB0aW9ucyBpbiBBcHBsaWNhdGlvbkNvbnRleHRGYWNhZGUuZG9Qcml2aWxlZ2VkKCkKICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFZhcmlvdXMgcmVsYXRlZCAodW4pZGVwbG95IGltcHJvdmVtZW50cyBpbmNsdWRpbmc6IGJldHRlciBoYW5kbGluZyBvZgogICAgICAgIGZhaWxlZCAodW4pZGVwbG95bWVudDsgYWRkaW5nIGNoZWNraW5nIGZvciBpbnZhbGlkIHppcCBmaWxlIGVudHJpZXMgdGhhdAogICAgICAgIGRvbid0IG1ha2Ugc2Vuc2UgaW4gYSBXQVIgZmlsZTsgYW5kIGltcHJvdmVkIHZhbGlkYXRpb24gb2YgV0FSIGZpbGUKICAgICAgICBuYW1lcy4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIENWRS0yMDA5LTI2OTMsIENWRS0yMDA5LTI5MDEgYW5kCiAgICAgICAgQ1ZFLTIwMDktMjkwMi4KICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzMyNzwvYnVnPjogQWxsb3cgQVBSL25hdGl2ZSBjb25uZWN0b3IgdG8gd29yayBjb3JyZWN0bHkgb24KICAgICAgICBzeXN0ZW1zIHdoZW4gSVB2NiBpcyBlbmFibGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5NTA8L2J1Zz46IFN1cHBvcnQgU1NMIHJlbmVnb3RpYXRpb24gd2l0aCBBUFIvbmF0aXZlIGNvbm5lY3Rvci4KICAgICAgICBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBBUFIvbmF0aXZlIDEuMS4xNyBvciBsYXRlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3MjI1PC9idWc+OiBGaXggZXJyb3IgaW4gY2FsY3VsYXRpb24gb2YgYSBidWZmZXIgbGVuZ3RoIGluIHRoZQogICAgICAgIG1hcHBlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NzQ0PC9idWc+OiBQcmV2ZW50IGEgbWVkaXVtIHRlcm0gbWVtb3J5IGxlYWsgaWYgdXNpbmcgU1NsIHdpdGgKICAgICAgICB0aGUgSlNTRSBwcm92aWRlciBhbmQgYWxzbyB1c2luZyBhIHNlY3VyaXR5IG1hbmFnZXIuIEJhc2VkIG9uIGEgcGF0Y2ggYnkKICAgICAgICBHcmVnIFZhbm9yZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3OTg3PC9idWc+OiBMaW1pdCBzaXplIG9mIG5vdCBmb3VuZCByZXNvdXJjZXMgY2FjaGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODEwOTwvYnVnPjogRW5zdXJlIElucHV0U3RyZWFtIGlzIGNsb3NlZCBpbiBXZWJhcHBDbGFzc0xvYWRlcgogICAgICAgIG9uIGVycm9yIGNvbmRpdGlvbnMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODMxMTwvYnVnPjogQVBSIHNob3VsZCBub3QgYmUgaW5pdGlhbGlzZWQgaWYgdGhlIEFQUiBsaWZlLWN5Y2xlCiAgICAgICAgbGlzdGVuZXIgaXMgbm90IGVuYWJsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODU4MTwvYnVnPjogQXZvaWQgc2VjdXJpdHkgZXhjZXB0aW9uIG9uIGZpcnN0IGFjY2Vzcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NTg0PC9idWc+OiBQcmV2ZW50IHRoZSBBUFIgY29ubmVjdG9yIGxvZ2dpbmcgYW4gZXJyb3IgaWYgdGhlCiAgICAgICAgYWNjZXB0b3IgZmFpbHMgZHVyaW5nIHNodXRkb3duIHNpbmNlIHRoaXMgaXMgZXhwZWN0ZWQuIChtdHVyaykgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENWRS0yMDA5LTM1NTUuIFByb3ZpZGUgb3B0aW9uIHRvIGRpc2FibGUgbGVnYWN5IFNTTCByZW5lZ290aWF0aW9uLgogICAgICAgIChtYXJrdC9jb3N0aW4pIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggV2luZG93cyBpbnN0YWxsZXIgdG8gYnVuZGxlIGFuIHVwLXRvLWRhdGUgdmVyc2lvbiBvZiBuYXRpdmUvQVBSIHdpdGgKICAgICAgICBpdC4gV2hlbiBhc2tlZCB0byBpbnN0YWxsIFRDLU5hdGl2ZSBpdCB3YXMgZG93bmxvYWRpbmcgc29tZSB2ZXJ5IG9sZCAoMS4xLjQpCiAgICAgICAgdmVyc2lvbiBvZiBpdCBmcm9tIHRoZSBIRUFuZXQgc2l0ZS4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdGhlIG5hdGl2ZS9BUFIgbGlicmFyeSB2ZXJzaW9uIGJ1bmRsZWQgd2l0aCBUb21jYXQgdG8gMS4xLjIwLgogICAgICAgIChra29saW5rbykgCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSByZWNvbW1lbmRlZCB2ZXJzaW9uIGZvciBuYXRpdmUgdG8gMS4xLjE5LiAocmp1bmcpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSB1bm5lZWRlZCBsaW5lIGZyb20gdGhlIG1ldGhvZCB0aGF0IG5vcm1hbGl6ZXMgZGVjb2RlZFVSSS4KICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3OTc8L2J1Zz46IEZpeCByZWdyZXNzaW9uIGluIHByZXZpb3VzIGZpeCBmb3IgdGhpcyBidWcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTY2MTwvYnVnPjogRml4IHRocmVhZCBzYWZldHkgaXNzdWUgaW4gSnNwQ29uZmlnLmluaXQoKSAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE4MjQ8L2J1Zz46IE5lZWQgdG8gdXNlIGNhbm9uaWNhbCByYXRoZXIgdGhhbiBiaW5hcnkgZm9ybSB3aGVuCiAgICAgICAgd3JpdGluZyBjb2RlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5MDc8L2J1Zz46IERvbid0IHN3YWxsb3cgaW5wdXQgc3RyZWFtIHdoZW4gZGVidWcgbG9nZ2luZyBpcwogICAgICAgIGVuYWJsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODU4MjwvYnVnPjogQXZvaWQgTlBFIG9uIGJhY2tncm91bmQgY29tcGlsZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRGVsdGFNYW5hZ2VyIG5lZWRzIHRvIHJlcGxpY2F0ZSBjaGFuZ2VkIGF0dHJpYnV0ZXMgZXZlbiBpZiBzZXNzaW9uCiAgICAgICAgZ2V0cyBpbnZhbGlkYXRlZC4gT3RoZXJ3aXNlIHNlc3Npb24gbGlzdGVuZXJzIHdpbGwgbm90IHNlZSB0aGUgcmlnaHQKICAgICAgICBkYXRhIG9uIHRoZSBzZWNvbmRhcnkgbm9kZXMuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IEphdmE1IGRlcGVuZGVuY2llcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2Mzg0PC9idWc+OiBDb3JyZWN0IHN5bmNocm9uaXNhdGlvbiBpc3N1ZSB0aGF0IGNvdWxkIGxlYWQgdG8gYQogICAgICAgIGNsdXN0ZXIgbWVtYmVyIGRpc2FwcGVyaW5nIHBlcm1hbmVudGx5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc1NTQ8L2J1Zz46IEluY2x1ZGUgaHR0cE9ubHkgYXR0cmlidXRlIHdoZW4gcmUtd3JpdGluZyBzZXNzaW9uCiAgICAgICAgY29va2llIGFmdGVyIGZhaWwgb3Zlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTU2NDwvYnVnPjogQWRkIHNvbWUgaW5mb3JtYXRpb24gb24gaW5zdGFsbGluZyBUb21jYXQgYXMgYSBzZXJ2aWNlCiAgICAgICAgb24gb3BlcmF0aW5nIHN5c3RlbXMgd2l0aCBVc2VyIEFjY291bnQgQ29udHJvbCwgZS5nLiBWaXN0YS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NjU2PC9idWc+OiBBZGQgaW5mb3JtYXRpb24gdG8gZG9jdW1lbnRhdGlvbiBvbiBzeXN0ZW0gcHJvcGVydHkKICAgICAgICByZXBsYWNlbWVudCBpbiBjb25maWd1cmF0aW9uIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc3Njk8L2J1Zz46IENsYXJpZnkgdGhlIEpOREkgZG9jcyB3aXRoIHJlcGVjdCB0byB1c2Ugb2YKICAgICAgICAmbHQ7cmVzb3VyY2UtcmVmJmd0OyBhbmQgcmVsYXRlZCBlbGVtZW50cywgc3BlY2lmaWNhbGx5IHdoZW4gdGhleSBhcmUKICAgICAgICByZXF1aXJlZCBhbmQgd2hlbiB0aGV5IG1heSBiZSBvbWl0dGVkLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MzgxPC9idWc+OiBBZGQgaW5mb3JtYXRpb24gb24gaG93IFRvbWNhdCB0cmVhdHMgaG9zdCBuYW1lcyB0byB0aGUKICAgICAgICBob3N0IGNvbmZpZ3VyYXRpb24gZG9jdW1lbnRhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjQ4NTMwPC9idWc+OiBBZGQgaW5mb3JtYXRpb24gb24gdGhlIE1hbmFnZXIgU2VydmVyIFN0YXR1cyBwYWdlIHRvCiAgICAgICAgdGhlIE1hbmFnZXIgSG93LVRvIGluIHRoZSBkb2N1bWVudGF0aW9uIHdlYmFwcC4gQmFzZWQgb24gYSBwYXRjaCBieQogICAgICAgIEFybmF1ZCBFc3B5LiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+NDg1MzI8L2J1Zz46IEFkZCBpbmZvcm1hdGlvbiB0byB0aGUgQklPL05JTyBTU0wgY29uZmlndXJhdGlvbiBwYWdlCiAgICAgICAgaW4gdGhlIGRvY3VtZW50YXRpb24gd2ViIGFwcGxpY2F0aW9uIHRvIHNwZWNpZnkgaG93IHRoZSBkZWZhdWx0cyBmb3IgdGhlCiAgICAgICAgdmFyaW91cyB0cnVzdCBzdG9yZSBhdHRyaWJ1dGVzIGFyZSBkZXRlcm1pbmVkLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg2ODY8L2J1Zz46IEZpeCBkZWxldGluZyBhIGhvc3QgdmlhIHRoZSBBZG1pbmlzdHJhdGlvbiB3ZWIKICAgICAgICBhcHBsaWNhdGlvbiByYXRoZXIgdGhhbiBmYWlsaWduIHdpdGggYSBIVFRQIDUwMCByZXNwb25zZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBNYWtlIGNoYW5nZWxvZy54bWwgYmUgZGlyZWN0bHkgcmVuZGVyZWQgYXMgSFRNTCBieSBjZXJ0YWluIGJyb3dzZXJzLgogICAgICAgIChra29saW5rbykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yOCAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMDktMDktMDQiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MTk0PC9idWc+OiBNYWtlIHRoZSBzZXR0aW5nIG9mIHRoZSBjbGFzc3BhdGggY29uc2lzdGVudCBmb3IgdGhlCiAgICAgICAgLnNoIGFuZCAuYmF0IHN0YXJ0dXAgc2NyaXB0cy4gKG1hcmt0L2trb2xpbmtvKSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTg4MDwvYnVnPjogSW5jbHVkZSBOT1RJQ0UgZmlsZSBpbiBXaW5kb3dzIGluc3RhbGxlciBhbmQgbWFrZSBzdXJlCiAgICAgICAgc3JjIGZpbGVzIGFyZSBleGNsdWRlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gTlNJUyAyLjQ0IChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQnVpbGQgc2NyaXB0czogVXNlIGRpZmZlcmVudCB2YWx1ZXMgZm9yICR7dG9tY2F0LWRiY3AuaG9tZX0gYW5kCiAgICAgICAgJHtqYXNwZXItY29tcGlsZXItamR0LmhvbWV9IGluIHRvbWNhdC1kZXBzLiBGaXggZG93bmxvYWQgdGFzawogICAgICAgIGNoZWNrcyBmb3IgY29tbW9ucy1wb29sIGFuZCBjb21tb25zLWRiY3AuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHRoZSA2NC1iaXQgd2luZG93cyBzZXJ2aWNlIGJpbmFyaWVzIHRvIHRoZSBkaXN0cmlidXRpb24gYW5kIGdldCB0aGUKICAgICAgICBXaW5kb3dzIGluc3RhbGxlciB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdCB0aGUgY29ycmVjdCBvbmUgZm9yIHRoZQogICAgICAgIGN1cnJlbnQgcGxhdGZvcm0uIChtYXJrdC9ra29saW5rbykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIGNvbW1vbnMtcG9vbCAxLjUuMi4gVGhpcyBpbmNsdWRlcyB2YXJpb3VzIGZpeGVzIHRvIHByZXZlbnQKICAgICAgICBkZWFkbG9ja3MsIHJlZHVjZSBzeW5jcyBhbmQgbWFrZSBvYmplY3QgYWxsb2NhdGlvbiBvY2N1ciBmYWlybHkgLSBpLmUuCiAgICAgICAgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIHRvIHRocmVhZHMgaW4gdGhlIG9yZGVyIHRoYXQgdGhlIHRocmVhZHMgcmVxdWVzdAogICAgICAgIHRoZW0uIFRoaXMgZml4ZXMgYSBudW1iZXIgb2YgaXNzdWVzIHdpdGggdGhlIHZlcnNpb24gb2YgREJDUCBlbWJlZGRlZAogICAgICAgIHdpdGhpbiBUb21jYXQuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIFRvbWNhdCBXaW5kb3dzIHNlcnZpY2UgYXBwbGljYXRpb24gKHByb2NydW4pIHRvIHZlcnNpb24gMi4wLjUuCiAgICAgICAgSXQgY29udGFpbnMgYSBmaXggZm9yIGlzc3VlIDxidWc+NDE1Mzg8L2J1Zz4gKG10dXJrKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3MTQ5PC9idWc+OiBFeHBsaWNpdGx5IHNwZWNpZnkgZW5jb2Rpbmcgd2hlbiBwZXJmb3JtaW5nIGZpbHRlcmluZwogICAgICAgIGR1cmluZyBjb3B5LCBmaXhjcmxmIG9yIHJlcGxhY2Ugb3BlcmF0aW9ucyBpbiBidWlsZCBzY3JpcHRzLiBEb24ndCBhZGQKICAgICAgICBibGFuayBsaW5lcyB0byBmaWxlcyB3aGVuIGZpeGluZyBsaW5lIGVuZGluZ3MuIEV4cGxpY2l0bHkgc3BlY2lmeQogICAgICAgIGVuY29kaW5nIHdoZW4gY29tcGlsaW5nLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc0NjQ8L2J1Zz46IFNvbWUgY2xhc3MgZmlsZXMgd2VyZSBhY2NpZGVudGFsbHkgaW5jbHVkZWQgaW50byB0aGUKICAgICAgICBzb3VyY2UgZGlzdHJpYnV0aW9ucyBvZiBUQyA1LjUuMjcuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxkb2NzPgogICAgICAgIERvY3VtZW50IHRoYXQgYnVpbGRpbmcgVG9tY2F0IHJlcXVpcmVzIEFudCAxLjYuMiBvciBsYXRlci4gKGtrb2xpbmtvKQogICAgICA8L2RvY3M+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NDU4PC9idWc+OiBGaXggc3luYyBlcnJvciB0aGF0IG1heSBsZWFkIHRvIE5QRSBpbiByYXJlCiAgICAgICAgY2lyY3Vtc3RhbmNlcy4gUGF0Y2ggYnkgS29uc3RhbnRpbiBLb2xpbmtvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc0OTg8L2J1Zz46IEZhbGwgYmFjayB0byBjb250YWluZXIgbG9nIGlmIGFwcGxpY2F0aW9uIGxvZyBpcwogICAgICAgIHVuYXZhaWxhYmxlIGR1cmluZyBjb250ZXh0IGRlc3RydWN0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc3OTQ8L2J1Zz46IEhhbmRsZSBQT1NUZWQgcGFyYW1ldGVycyB3aGVuIHNlbnQgd2l0aCBjaHVua2VkCiAgICAgICAgZW5jb2RpbmcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzk4NDwvYnVnPjogU3RyaXAge01ENX0gYXMgd2VsbCBhcyB7U0hBfSBpZiBwcmVzZW50IGluIGRpZ2VzdAogICAgICAgIHBhc3N3b3JkcyBpbiBMREFQIGRpcmVjdG9yaWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg1NTM8L2J1Zz46IEEgbGFjayBvZiBjZXJ0aWZpY2F0ZXMgaXMgbm9ybWFsIGlmIGEgdXNlciBkb2Vzbid0CiAgICAgICAgaGF2ZSBhIGNlcnRpZmljYXRlLiBSZXR1cm4gYSA0MDEgcmF0aGVyIHRoYW4gYSA0MDAgaW4gdGhpcyBjYXNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg1NzA8L2J1Zz46IFdoZW4gY2hlY2tpbmcgZG9jQmFzZSBhZ2FpbnN0IGFwcEJhc2UsIG1ha2Ugc3VyZSB3ZQogICAgICAgIGNoZWNrIGZvciBhbiBleGFjdCBtYXRjaCBhZ2FpbnN0IHRoZSBhcHBCYXNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkwMTM8L2J1Zz46IFdoZW4gdGVzdGluZyBmb3IgYW4gaW52YWxpZCBkb2NCYXNlLCB1c2UgYW4gZXhhY3QKICAgICAgICBtYXRjaCBmb3IgdGhlIGFwcEJhc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTM5NjwvYnVnPjogT25seSBpbmNsdWRlIFRSQUNFIGluIGFuIE9QVElPTlMgcmVzcG9uc2UgaWYgd2Uga25vdwogICAgICAgIGl0IGhhcyBiZWVuIGVuYWJsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIHdyb25nICJObyByb2xlIGZvdW5kIiByZWFsbSBkZWJ1ZyBsb2cgbWVzc2FnZSwKICAgICAgICBldmVuIGlmIGEgcm9sZSB3YXMgZm91bmQuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTk5NzwvYnVnPjogQWRkIHRoZSBTU0xSYW5kb21TZWVkIG9wdGlvbiB0byB0aGUKICAgICAgICBBcHJMaWZlY3ljbGVMaXN0ZW5lciB0byBlbmFibGUgZmFzdGVyIHN0YXJ0cyBvbiBkZXZlbG9wbWVudCBzeXN0ZW1zLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDM4MDwvYnVnPjogRml4IHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWUgaW4KICAgICAgICBTdGFuZGFyZFNlc3Npb24uZXhwaXJlKCkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTQwNzwvYnVnPjogSkFBUyBSZWFsbSBub3cgd29ya3Mgd2l0aCBDTElFTlQtQ0VSVCBhdXRoZW50aWNhdGlvbi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+NDI0MTk8L2J1Zz46IEFkZCBhIHN5c3RlbSBwcm9wZXJ0eSB0aGF0IGVuYWJsZXMgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgc2Vzc2lvbiBjb29raWUgYW5kIHNlc3Npb24gcGF0aCBwYXJhbWV0ZXIgdG8gYmUgY29uZmlndXJlZC4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNTc5PC9idWc+OiBTdXBwb3J0IGJvdGggcmVsYXRpdmUgYW5kIGFic29sdXRlIHNlYXJjaCByZXN1bHRzIGluCiAgICAgICAgdGhlIEpOREkgUmVhbG0gaW1wbGVtZW50YXRpb24uIFBhdGNoIHByb3ZpZGVkIGJ5IEJyYW5kb24gRHVSZXR0ZS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI3MDc8L2J1Zz46IE1ha2UgYWRkaW5nIGEgaG9zdCBhbGlhcyB2aWEgSk1YIHRha2UgZWZmZWN0CiAgICAgICAgaW1tZWRpYXRlbHkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzM0MzwvYnVnPjogQ29ycmVjdGx5IGhhbmRsZSByZXF1ZXN0aW5nIGEgc2Vzc2lvbiB3ZSBhcmUgaW4gdGhlCiAgICAgICAgbWlkZGxlIG9mIHBlcnNpc3RpbmcuIEJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBieSBXYWRlIENoYW5kbGVyLgogICAgICAgIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgIDxidWc+NDQzODI8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciB1c2luZyBodHRwT25seSBmb3Igc2Vzc2lvbiBjb29raWVzLgogICAgICAgICBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIChtYXJrdC9maGFuaWspCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU1NzY8L2J1Zz46IEpBQVMgUmVhbG0gbm93IHdvcmtzIHdpdGggRElHRVNUIGF1dGhlbnRpY2F0aW9uLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTYyODwvYnVnPjogSkFScyB0aGF0IGRvIG5vdCBkZWNsYXJlIGFueSBkZXBlbmRlbmNpZXMgc2hvdWxkCiAgICAgICAgYWx3YXlzIGJlIGNvbnNpZGVyZWQgYXMgZnVsZmlsbGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU5MzM8L2J1Zz46IERvbid0IHVzZSBhIHdlYiBhcHBsaWNhdGlvbiBwcm92aWRlZCBwYXJzZXIgdG8gcHJvY2VzcwogICAgICAgIFRMRCBmaWxlcy4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTk5NjwvYnVnPjogQWRkIEFjY2VwdC1SYW5nZXMgaGVhZGVyIHRvIHJlc3BvbnNlcyBmcm9tIHRoZQogICAgICAgIERlZmF1bHRTZXJ2bGV0IHdpdGggYW4gb3B0aW9uIHRvIGRpc2FibGUgaXQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjEwNTwvYnVnPjogQ29ycmVjdGx5IHNldCBVUkkgZW5jb2Rpbmcgd2hlbiByZXBsYXlpbmcgYSByZXF1ZXN0CiAgICAgICAgYWZ0ZXIgRk9STSBhdXRoZW50aWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NDA4PC9idWc+OiBDb3JyZWN0IHBvc3NpYmxlIGludmFsaWQgY2FzZSBpbiBTZWN1cml0eVV0aWwuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY1NTI8L2J1Zz46IFJldHVybiBhIDQwMCByZXNwb25zZSByYXRoZXIgdGhhbiBhIDIwMCByZXNwb25zZSBpZgogICAgICAgIHRoZSByZXF1ZXN0IGhlYWRlcnMgYXJlIHRvbyBsYXJnZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NTk3PC9idWc+OiBQb3J0IGFsbCBjb29raWUgaGFuZGxpbmcgY2hhbmdlcyBmcm9tIFRvbWNhdCA2LjAueC4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY2MDY8L2J1Zz46IE1ha2UgbWF4IGRlcHRoIGxpbWl0IGZvciBXZWJEQVYgc2VydmxldCBjb25maWd1cmFibGUuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NzE3PC9idWc+OiBGaXggaGFyZCB0byByZXByb2R1Y2UgdGhyZWFkIHNhZmV0eSBpc3N1ZSB3aXRoIHNlc3Npb24KICAgICAgICBleHBpcmF0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5ODI8L2J1Zz46IEZpeCBEU1QgcHJvYmxlbSB3aXRoIEFjY2Vzc0xvZ1ZhbHZlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgaGFuZGxpbmcgb2Ygc2l0dWF0aW9uIHdoZXJlIHdlYiBhcHBsaWNhdGlvbiB0cmllcyB0byBjb25maWd1cmUKICAgICAgICBsb2dnaW5nIGF0IHRoZSBjb250ZXh0IGxldmVsIGJ1dCB0aGUgc2VjdXJpdHkgcG9saWN5IHByZXZlbnRzIHRoaXMuCiAgICAgICAgKG1hcmt0L3JqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggYW4gaW5mb3JtYXRpb24gZGlzY2xvc3VyZSB2dWxuZXJhYmlsaXR5IGluIGEgbnVtYmVyIG9mIHRoZSBSZWFsbXMKICAgICAgICB0aGF0IGFsbG93ZWQgdXNlciBlbnVtZXJhdGlvbiB3aGVuIHVzaW5nIEZPUk0gYXV0aGVudGljYXRpb24uIFRoaXMgaXMKICAgICAgICBDVkUtMjAwOS0wNTgwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCB2YXJpb3VzIFdlYkRBViBjb21wbGlhbmNlIGlzc3VlcyBpZGVudGlmaWVkIGJ5IHRoZSBMaXRtdXMgdGVzdAogICAgICAgIHN1aXRlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFVzZSBhIGJldHRlciBkZWZhdWx0ICh3ZWJhcHBzKSBmb3IgYSBIb3N0J3MgYXBwQmFzZS4gKGlkYXJ3aW4vbWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ5NDM8L2J1Zz46IFJlZHVjZSBjb3B5L3Bhc3RlIGlzc3VlcyBjYXVzZWQgYnkgZGlmZmVyZW50IGVuZ2luZQogICAgICAgIG5hbWVzIGluIHNlcnZlci54bWwuIChtYXJrdCwga2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBjbGFzc3BhdGggZW50cnkgZm9yIGNvbW1vbnMtbG9nZ2luZyBmcm9tIHN0YXJ0IHNjcmlwdC4KICAgICAgICBJdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNsYXNzcGF0aCBzZXQgYnkgdGhlIG1hbmlmZXN0IGluIGJvb3RzdHJhcC5qYXIuCiAgICAgICAgKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NDgzPC9idWc+OiBUaHJlYWQgc2FmZXR5IGlzc3VlcyBpbiBBY2Nlc3NMb2dWYWx2ZSBjbGFzc2VzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFsbG93IGxvZyBmaWxlIGVuY29kaW5nIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIEpVTEkgRmlsZUhhbmRsZXIuIChra29saW5rbykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjkyMzwvYnVnPjogUGFyc2UgZGVhY3RpdmF0ZWQgRUwgZXhwcmVzc2lvbnMgY29ycmVjdGx5LiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MDg0PC9idWc+OiBGaXggSnNwQyBjb21waWxhdGlvbiB3aXRoIEFudCB3aGVuIGNvbXBpbGluZyBKU1BzIHRoYXQKICAgICAgICB1c2UgYSBjdXN0b20gdGFnbGliLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc1MTU8L2J1Zz46IEFkZCBvcHRpb25zIGZvciBKYXZhIDEuNiBhbmQgMS43IHRvIHRoZSBKRFQgY29tcGlsZXIuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTk3PC9idWc+OiBGaXggdGFnIHBvb2xpbmcgd2hlbiB0YWdzIGFyZSB1c2VkIHdpdGgganNwOmF0dHJpYnV0ZS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgzNTI8L2J1Zz46IE1ha2UgdGhlIGRpcmVjdG9yeSBkZWZpbmVkIGJ5CiAgICAgICAgamF2YXguc2VydmxldC5jb250ZXh0LnRlbXBkaXIgcmVhZGFibGUgZm9yIEpTUHMgd2hlbiBydW5uaW5nIHVuZGVyIGEKICAgICAgICBzZWN1cml0eSBtYW5hZ2VyIGFzIHJlcXVpcmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Nzk3PC9idWc+OiBSZXZlcnQgcHJldmlvdXMgZml4IGZvciA8YnVnPjM3OTMzPC9idWc+IGFuZCBpbXBsZW1lbnQKICAgICAgICBhIG5ldyBmaXggdGhhdCBkb2VzIG5vdCBoYXZlIHRoZSBzaWRlIGVmZmVjdHMgZGVzY3JpYmVkIGluCiAgICAgICAgPGJ1Zz4zODc5NzwvYnVnPi4gIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4ODk3PC9idWc+OiBBZGQgdXJpIG9mIGJyb2tlbiBUTEQgdG8gZXJyb3IgbWVzc2FnZSB0byBhaWQKICAgICAgICBkZWJ1Z2dpbmcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTYwNjwvYnVnPjogRml4IGRvdWJsZSBpbml0aWFsaXNhdGlvbiBvZiBKU1BzLiBQYXRjaCBwcm92aWRlZCBieQogICAgICAgIENocmlzIEhhbHN0ZWFkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU2NjY8L2J1Zz46IEZpeCBpbmZpbml0ZSBsb29wIG9uIGluY2x1ZGUuIFBhdGNoIHByb3ZpZGVkIGJ5IFRvbQogICAgICAgIFdhZHppbnNraS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2MzU0PC9idWc+OiBGaXggQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIHdoZW4gdXNpbmcKICAgICAgICBvcmcuYXBhY2hlLmphc3Blci5ydW50aW1lLkJvZHlDb250ZW50SW1wbC5MSU1JVF9CVUZGRVI9dHJ1ZS4gUGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBLb25zdGFudGluIEtvbGlua28uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjkwOTwvYnVnPjogT25seSBpbmNsdWRlIHNlbWktY29sb24gaW4gdHlwZSBhdHRyaWJ1dGUgZm9yCiAgICAgICAgJmx0O2pzcDpwbHVnaW4mZ3Q7IHdoZW4gaXQgaXMgcmVxdWlyZWQuIChtYXJrdCkgIAogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IG1pbm9yIG1lbW9yeSBsZWFrIGZvdW5kIGJ5IGZpbmQgYnVncy4gKG1hcmt0LCByanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDU1MTwvYnVnPjogRW5hYmxlIHRoZSBKdm1Sb3V0ZUJpbmRlclZhbHZlIHRvIHdvcmsgd2l0aAogICAgICAgIFBlcnNpc3RlbnRNYW5hZ2VycyBhcyB3ZWxsIGFzIGNsdXN0ZXJpbmcuIFBhdGNoIGJ5IENocmlzIENoYW5kbGVyLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjM1NzwvYnVnPjogQ29ycmVjdGVkIHRlc3QgZm9yIGhvc3QncyBwYXJlbnQgbXVzdCBiZSBhbiBlbmdpbmUuCiAgICAgICAgKG1hcmt0LCByanVuZykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40NTMxNzwvYnVnPjogUHJvcGVybHkgbG9nIHRoZSB2YWx1ZSBvZiB0aGUgc3RhdGUgdHJhbnNmZXIgdGltZW91dCBmbGFnLgogICAgICAgIChmaGFuaWssIHJqdW5nKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1Mjc5PC9idWc+OiBQcm9wZXJseSBjbG9zZSBtdWx0aWNhc3Qgc29ja2V0LiAoZmhhbmlrLCByanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTQ0NzwvYnVnPjogQWRkIFNwYW5pc2ggcmVzb3VyY2UgZmlsZXMuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgSmVzdXMgTWFyaW4uIChtYXJrdCwgcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5OTA8L2J1Zz46IEZpeCBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGluIGNsdXN0ZXIgbWVtYmVyc2hpcAogICAgICAgIHJlcG9ydGVkIGJ5IEZpbmRCdWdzLiBQYXRjaCBwcm92aWRlZCBieSBTZWJiLiAobWFya3QsIHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3Mzg5PC9idWc+OiBEZWx0YU1hbmFnZXIgZG9lc24ndCBkbyBzZXNzaW9uIHJlcGxpY2F0aW9uIGlmCiAgICAgICAgbm90aWZ5U2Vzc2lvbkxpc3RlbmVyc09uUmVwbGljYXRpb249ZmFsc2UuCiAgICAgICAgUGF0Y2ggYnkgS2VpaWNoaSBGdWppbm8uIChmaGFuaWssIHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTZXBhcmF0ZSBzdGF0aXN0aWNzIGNvdW50ZXIgbG9jayBpbiBGYXN0QXN5bmNTb2NrZXRTZW5kZXIgZnJvbSBpbmhlcml0ZWQKICAgICAgICBEYXRhU2VuZGVyIGxvY2sgdG8gcmVkdWNlIGJsb2NraW5nIGR1cmluZyBmYWlsZWQgbm9kZSBkZXRlY3Rpb24uIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSGFuZGxlIHNpdHVhdGlvbiBzZXNzaW9uIElEIHJld3JpdGluZyBvbiBmYWlsLW92ZXIgd2l0aCBwYXJhbGxlbCByZXF1ZXN0cwogICAgICAgIGZyb20gdGhlIHNhbWUgY2xpZW50LiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzY0MTwvYnVnPjogVXNlIG9mIGJpbmQgYXR0cmlidXRlIGZvciBtZW1iZXJzaGlwIGVsZW1lbnQgYnJlYWtzCiAgICAgICAgbXVsdGljYXN0LiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggQ1ZFLTIwMDktMDc4MS4gWFNTIGluIGNhbGVuZGFyIGV4YW1wbGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjU3NDwvYnVnPjogRml4IGJyb2tlbiBQREZzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk2MDM8L2J1Zz46IEFkbWluIGFwcCBvbmx5IHNob3dlZCBST09UIHdlYiBhcHBsaWNhdGlvbiB3aGVuCiAgICAgICAgY2x1c3RlcmluZyB3YXMgZW5hYmxlZC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzAzMjwvYnVnPjogRml4IC9zdGF0dXMvYWxsIGluIE1hbmFnZXIgd2ViYXBwIHdoZW4gdXNpbmcgdGhlCiAgICAgICAgUGVyc2lzdGVudE1hbmFnZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzIzNTwvYnVnPjogUmVtb3ZlIHVzZSBvZiBhdXRvUmVjb25uZWN0IGZyb20gTXlTUUwgZXhhbXBsZXMuCiAgICAgICAgKG1hcmspCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY1MDk8L2J1Zz46IFVzZSBjb3JyZWN0IGxpbmsgb24gZXJyb3IgcGFnZSBpbiBKU1Agc2VjdXJpdHkKICAgICAgICBleGFtcGxlLiBQYXRjaCBwcm92aWRlZCBieSBNaWNoYWVsIE1vb2R5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY1NjI8L2J1Zz46IENsb3NlIGZpbGUgd2hlbiByZWFkaW5nIGhhcyBmaW5pc2hlZCB3aGVuIHVzaW5nIFNTSS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSIgPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3ODY5PC9idWc+OiBDb3JyZWN0bHkgZXh0cmFjdCBjbGllbnQgY2VydGlmaWNhdGVzLCBpbmNsdWRpbmcgdGhlCiAgICAgICAgZnVsbCBjZXJ0aWZpY2F0ZSBjaGFpbiB3aGVuIHVzaW5nIHRoZSBBUFIvbmF0aXZlIEhUVFAgY29ubmVjdG9yLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NjM3PC9idWc+OiBDb3JyZWN0bHkgZXh0cmFjdCBjbGllbnQgY2VydGlmaWNhdGVzLCBpbmNsdWRpbmcgdGhlCiAgICAgICAgZnVsbCBjZXJ0aWZpY2F0ZSBjaGFpbiB3aGVuIHVzaW5nIHRoZSBBSlAgY29ubmVjdG9ycy4gUGF0Y2ggYnkgUGF0cmlrCiAgICAgICAgU2NobmVsbG1hbm4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU2V0IHJlbW90ZSBwb3J0IGZvciBBSlAgY29ubmVjdG9ycyBmcm9tIHRoZSBvcHRpb25hbCByZXF1ZXN0CiAgICAgICAgYXR0cmlidXRlIEFKUF9SRU1PVEVfUE9SVC4gKHJqdW5nKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1MDI2PC9idWc+OiBOZXZlciByZXR1cm4gYW4gZW1wdHkgSFRUUCBzdGF0dXMgcmVhc29uIHBocmFzZS4KICAgICAgICBtb2RfamsgYW5kIGh0dHBkIDIueCBkbyBub3QgbGlrZSB0aGF0LiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU1Mjg8L2J1Zz46IEFuIGludmFsaWQgU1NMIGNvbmZpZ3VyYXRpb24gY291bGQgY2F1c2UgYW4gaW5maW5pdGUKICAgICAgICBsb2dnaW5nIGxvb3Agb24gc3RhcnR1cC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTg0PC9idWc+OiBSZWplY3QgcmVxdWVzdHMgd2l0aCBpbnZhbGlkIEhUVFAgbWV0aG9kcyB3aXRoIGEgNDAwCiAgICAgICAgcmF0aGVyIHRoYW4gYSA1MDEuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0aGUgQVBSL25hdGl2ZSBjb25uZWN0b3IgdG8gMS4xLjE2LiAobWFya3QsIGtrb2xpbmtvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBDb3JyZWN0IHBvdGVudGlhbCBET1MgaXNzdWUgaW4gSmF2YSBBSlAgY29ubmVjdG9yIHdoZW4gcHJvY2Vzc2luZwogICAgICAgIGludmFsaWQgcmVxdWVzdCBoZWFkZXJzLiBUaGlzIGlzIENWRS0yMDA5LTAwMzMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgTWFrZSBEYXRlVG9vbCB0aHJlYWQgc2FmZS4gKGZoYW5paykgCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjcgKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA4LTA5LTA4Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDQ2MzwvYnVnPjogV2FyIGZpbGUgdXBsb2FkIGluIG1hbmFnZXIgd2ViYXBwIGZhaWxzIGR1ZSB0byBtaXNzaW5nCiAgICAgICAgY29tbW9ucy1pbyBkZXBlbmRlbmN5LiBBZGRlZCBjb21tb25zLWlvIDEuNC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY3NzA8L2J1Zz46IERvbid0IHNlbmQgZHVwbGljYXRlIGhlYWRlcnMgd2hlbiB1c2luZyBmbHVzaEJ1ZmZlcigpLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQwMjE8L2J1Zz4sIDxidWc+NDMwMTM8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciAjIHRvIHNpZ25pZnkgbXVsdGktbGV2ZWwgY29udGV4dHMgZm9yIGRpcmVjdG9yaWVzIGFuZCB3YXJzLgogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NDk0PC9idWc+OiBCYWNrcG9ydCBmcm9tIDYuMCAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBhZGRpdGlvbmFsIGNoZWNrcyBmb3IgVVJJIG5vcm1hbGl6YXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEb24ndCB0aHJvdyBhbiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gd2hlbiBlbXB0eSBVUkwgaXMKICAgICAgICByZXF1ZXN0ZWQuIFBhdGNoIHByb3ZpZGVkIGJ5IENoYXJsZXMgUiBDYWxkYXJhbGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yOTkzNjwvYnVnPjogRG9uJ3QgdXNlIHBhcnNlciBmcm9tIGEgd2ViYXBwIHRvIHBhcnNlIHdlYi54bWwgYW5kIHBvc3NpYmx5CiAgICAgICAgY29udGV4dC54bWwgZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzA3OTwvYnVnPjogQ29ycmVjdCBwYXR0ZXJuIHZlcmlmaWNhdGlvbiBmb3Igc3VzcGljaW91cyBVUkxzLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEpvaG4gS2V3LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMwODA8L2J1Zz46IExvZyBzdXNwaWNpb3VzIFVSTCBwYXR0ZXJuIHdhcm5pbmdzIHRvIHRoZSBjb3JyZWN0CiAgICAgICAgd2ViIGFwcGxpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMxMTc8L2J1Zz46IFNldHRpbmcgYW4gZW1wdHkgd29ya0RJUiBjb3VsZCBkZWxldGUgYWxsIG9mCiAgICAgICAgQ0FUQUxJTkFfSE9NRS4gUGF0Y2ggcHJvdmlkZWQgYnkgVGFrYXl1a2kgS2FuZWtvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQyODI8L2J1Zz46IFByZXZlbnQgc2VjdXJpdHkgZXhjZXB0aW9uIGluIHRyYWNlIGxldmVsIGxvZ2dpbmcgZm9yCiAgICAgICAgd2ViIGFwcGxpY2F0aW9uIGNsYXNzIGxvYWRlciB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBzZWN1cml0eSBtYW5hZ2VyLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDUyOTwvYnVnPjogTm8gcm9sZXMgc3BlY2lmaWVkIChkZW55IGFsbCkgc2hvdWxkIHRha2UgcHJlY2VkZW5jZQogICAgICAgIG92ZXIgbm8gYXV0aC1jb25zdHJhaW50IHNwZWNpZmllZCAoYWxsb3ctYWxsKS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNTc4PC9idWc+OiBFbmFibGUgc3RhcnQgb24gTGludXggaWYgJENBVEFMSU5BX0hPTUUgY29udGFpbnMgYQogICAgICAgIHNwYWNlLiBPcmlnaW5hbCBwYXRjaCBwcm92aWRlZCBieSBSYXkgU2F1ZXJzIHdpdGggaW1wcm92ZW1lbnRzIGJ5IElhbgogICAgICAgIFdhcmQgQ29tZm9ydC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NjczPC9idWc+OiBUaHJvdyBJT0UgaWYgU2VydmxldElucHV0U3RyZWFtIGlzIGNsb3NlZCBhbmQgYSBjYWxsCiAgICAgICAgaXMgbWFkZSB0byBhbnkgcmVhZCgpLCByZWFkeSgpLCBtYXJrKCksIHJlc2V0KCksIG9yIHNraXAoKSBtZXRob2QgYXMgcGVyCiAgICAgICAgamF2YWRvY3MgZm9yIFJlYWRlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBFbmFibGUgdGhlIENHSVNlcnZsZXQgdG8gd29yayB3aXRoIFdpbmRvd3MgVmlzdGEuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIGFkZGl0aW9uYWwgcGVybWlzc2lvbiByZXF1aXJlZCB0byByZWFkIEpESyBsb2dnaW5nIGNvbmZpZ3VyYXRpb24KICAgICAgICB3aGVuIHJ1bm5pbmcgd2l0aCBhIHNlY3VyaXR5IG1hbmFnZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDk0MzwvYnVnPjogUmVkdWNlIGNvcHkvcGFzdGUgaXNzdWVzIGNhdXNlZCBieSBkaWZmZXJlbnQgZW5naW5lCiAgICAgICAgbmFtZXMgaW4gc2VydmVyLnhtbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1MTk1PC9idWc+OiBQcmV2ZW50IE5QRSB3aGVuIGNhbGxpbmcKICAgICAgICA8Y29kZT5TZXNzaW9uLmdldEF0dHJpYnV0ZShudWxsKTwvY29kZT4gYW5kIAogICAgICAgIDxjb2RlPlNlc3Npb24ucmVtb3ZlQXR0cmlidXRlKG51bGwpPC9jb2RlPi4gVGhlIHNwZWMgaXMgdW5jbGVhciBidXQgdGhpcwogIAkJaXMgYSByZWdyZXNzaW9uIGZyb20gNS4wLnguIChtYXJrdCkKICAJICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1MjkzPC9idWc+OiBVcGRhdGUgbmFtZSBvZiBjb21tb25zLWxvZ2dpbmcgamFyIGluIHNlY3VyaXR5IHBvbGljeS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU0NTM8L2J1Zz46IEZpeCByYWNlIGNvbmRpdGlvbiBpbiBKREJDIFJlYWxtLiBCYXNlZCBvbiBhIHBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgU2FudHR1IEh5cmtrLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEpBQVMgUmVhbG0gZGlkIG5vdCByZWFkIHJvbGUgaW5mb3JtYXRpb24gZm9yIHVzZXJzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY2ODM8L2J1Zz46IEZpeCB0eXBvIGluIEZyZW5jaCBsb2NhbGlzYXRpb24gZmlsZSBuYW1lIGZvciB0aGUKICAgICAgICBvcmcuYXBhY2hlLmNhdGFsaW5hLmxvYWRlciBwYWNrYWdlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIExvZyBlcnJvcnMgZm9yIEFKUCBzaWdub2ZmcyBhdCBERUJVRyBsZXZlbCwgc2luY2UgaXQgaXMgaGFybWxlc3MgaWYKICAgICAgICBtb2RfamsgaGFzIGh1bmcgdXAgdGhlIHBob25lLiAoYmlsbGJhcmtlcikKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjcyNzwvYnVnPjogSGFuZGxlIHJlcXVlc3QgbGluZXMgdGhhdCBhcmUgZXhhY3QgbXVsdGlwbGVzIG9mIDQwOTYKICAgICAgICBpbiBsZW5ndGguIFBhdGNoIHByb3ZpZGVkIGJ5IFdpbGwgUHVnaC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMTkxPC9idWc+OiBDb21wcmVzc2lvbiBjb3VsZCBub3QgYmUgZGlzYWJsZWQgZm9yIHNvbWUgZmlsZSB0eXBlcy4KICAgICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IExlbiBQb3BwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU1OTE8L2J1Zz46IEZpeCBOUEUgb24gc2h1dGRvd24gZmFpbHVyZSBpbiBzb21lIGNhc2VzLiBCYXNlZCBvbiBhCiAgICAgICAgcGF0Y2ggYnkgTWF0dCBQYXNzZWxsLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEyNTc8L2J1Zz46IFF1b3RlIGVuZG9yc2VkIGRpcnMgaWYgdGhleSBjb250YWluIGEgc3BhY2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mjk0MzwvYnVnPjogTWFrZSBzdXJlIG5lc3RlZCBlbGVtZW50IGlzIGluc2lkZSAmbHQ7anNwOnRleHQmZ3Q7CiAgICAgICAgZWxlbWVudCBiZWZvcmUgdGhyb3dpbmcgZXhjZXB0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ4Nzc8L2J1Zz46IFByZXZlbnQgY29sbGlzaW9ucyBpbiB0YWcgcG9vbCBuYW1lcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1MDE1PC9idWc+OiBFbmZvcmUgSlNQIHNwZWMgcnVsZXMgb24gcXVvdGluZyBpbiBhdHRyYnV0ZXMuIFRoaXMgaXMKICAgICAgICBjb25maWd1cmFibGUgdXNpbmcgdGhlIHN5c3RlbSBwcm9wZXJ0eQogICAgICAgIDxjb2RlPm9yZy5hcGFjaGUuamFzcGVyLmNvbXBpbGVyLlBhcnNlci5TVFJJQ1RfUVVPVEVfRVNDQVBJTkc8L2NvZGU+LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI4OTk8L2J1Zz46IFdoZW4gc2F2aW5nIGNvbmZpZyBmcm9tIGFkbWluIGFwcCwgY29ycmVjdGx5IGhhbmRsZQogICAgICAgIGNhc2Ugd2hlcmUgdGhlIG9sZCBjb25maWcgZmlsZSBkb2VzIG5vdCBleGlzdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NTQxPC9idWc+OiBEb2N1bWVudCBwYWNrZXRTaXplIGF0dHJpYnV0ZSBmb3IgQUpQIGNvbm5lY3Rvci4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ3MTU8L2J1Zz46IERvY3VtZW50IHVzZSBvZiBzZWNyZXQgZm9yIEFKUCBjb25uZWN0b3IuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40NTMyMzwvYnVnPjogQWRkIG5vdGUgdGhhdCBjb250ZXh0LnhtbCBmaWxlcyBjYW4gb25seSBjb250YWluIGEKICAgICAgICBzaW5nbGUgQ29udGV4dCBlbGVtZW50LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFVwZGF0ZSBKTkRJIGRhdGFzb3VyY2UgZG9jcyBzaW5jZSBtYXhBY3RpdmUgc2V0dGluZyBmb3IgdW5saW1pdGVkCiAgICAgICAgY2hhbmdlZCBpbiBjb21tb25zLXBvb2wgPiAxLjIuIChtYXJrdCkKICAgICAgPC9maXg+IAogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IlNwZWNpZmljYXRpb24iPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBVc2UgYSBsb2NhbGlzZWQgZXJyb3IgbWVzc2FnZSBpZiBhIHVzZXIgdHJpZXMgdG8gd3JpdGUgYSBuZWdhdGl2ZSBsZW5ndGgKICAgICAgICBieXRlIGFycmF5IGR1cmluZyBkZWZhdWx0IHByb2Nlc3Npbmcgb2YgYSBIRUFEIHJlcXVlc3QuIChtYXJrdCkgICAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDU2MjwvYnVnPjogSEVBRCByZXF1ZXN0cyBjYW5ub3QgdXNlIGluY2x1ZGVzLiBQYXRjaCBwcm92aWRlZCBieQogICAgICAgICAgRGF2aWQgSmVuY2tzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjYgKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA4LTAyLTA1Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIEVjbGlwc2UgSkRUIDMuMy4xLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIG5ldyBjb21tb25zIGRvd25sb2FkIGxvY2F0aW9uLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBjb21tb25zLWxhdW5jaGVyIDEuMS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgY29tbW9ucy1kaWdlc3RlciAxLjguIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIFhlcmNlcyAyLjkuMS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgdXN1c2VkIGNvbW1vbnMtaHR0cGNsaWVudC4gKGZ1bmttYW4pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBjb21tb25zLWNvbGxlY3Rpb25zIDMuMi4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgY29tbW9ucy1maWxldXBsb2FkIDEuMi4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgTVg0SiAzLjAuMi4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgSlVuaXQgMy44LjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIE5TSVMgMi4zNC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgU3RydXRzIDEuMi45LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBKQUYgMS4xLjEuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIEpUQSAxLjEuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIEphdmFNYWlsIDEuNC4xLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBQdXJlVExTIDAuOWI1LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBjb21tb25zLXBvb2wgMS40LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM1OTQ8L2J1Zz46IFVzZSBzZXRlbnYgZnJvbSBDQVRBTElOQV9CQVNFIChpZiBzZXQpIGluIHByZWZlcmVuY2UKICAgICAgICB0byB0aGUgb25lIGluIENBVEFMSU5BX0hPTUUuIFBhdGNoIHByb3ZpZGVkIGJ5IFNoYWRkeSBCYWRkYWguIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IENWRS0yMDA3LTUzNDIgYnkgbGltaXRpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCB0byBKVUxJLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD48YnVnPjM4MTMxPC9idWc+OiBXYXRjaGVkUmVzb3VyY2UgZG9lc24ndCB3b3JrIGlmIGFwcCBpcyBvdXRzaWRlIGhvc3QgYXBwYmFzZSB3ZWJhcHBzLiAKICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBQZXRlciBMeW5jaCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU2V0IGNvcnJlY3Qgc2Vzc2lvbkNvdW50ZXIgYXQgU3RhbmRhcmRNYW5hZ2VyIGFmdGVyIHJlbG9hZCBzZXNzaW9ucy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAJRml4IE5QRSBzaXR1YXRpb24gYXQgQWNjZXNzTG9nVmFsdmUgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzA5NDk8L2J1Zz46IEltcHJvdmUgcHJldmlvdXMgZml4LiBFbnN1cmUgcmVxdWVzdHMgYXJlIHJlY3ljbGVkCiAgICAgICAgb24gY3Jvc3MtY29udGV4dCBpbmNsdWRlcyBhbmQgZm9yd2FyZHMgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZQogICAgICAgIHRhcmdldCBwYWdlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMyMTY8L2J1Zz46IFNldCBjb3JyZWN0IFN0YW5kYXJkU2Vzc2lvbiNhY2Nlc3NDb3VudCBhcyBzeXN0ZW0gcHJvcGVydHkgU1RSSUNUX1NFUlZMRVRfQ09NUExJQU5DRSBpcyB0cnVlIGFmdGVyIGFwcGxpY2F0aW9uIHJlc3RhcnQgd2l0aCBTRVNTSU9OLnNlciBmaWxlLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFRha2F5dWtpIEthbmVrbyAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgTWFkZSBzZXNzaW9uIGNyZWF0ZVRpbWUgYWNjZXNzaWJsZSBmb3IgYWxsIFNlc3Npb25NYW5hZ2VyIHZpYSBKTVggKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIFN1cHBvcnQgbG9nZ2luZyBvZiBhbGwgcmVzcG9uc2UgaGVhZGVyIHZhbHVlcyBhdCBFeHRlbmRlZEFjY2Vzc0xvZ1ZhbHZlIChleC4gYWRkIHgtTyhTZXQtQ29va2llKSB0byB5b3VyIHBhdHRlcm4pLiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgU3VwcG9ydCBsb2dnaW5nIG9mIGN1cnJlbnQgdGhyZWFkIG5hbWUgYXQgQWNjZXNzTG9nVmFsdmUgKGV4LiBhZGQgJUkgdG8geW91ciBwYXR0ZXJuKS4KICAgICAgICBVc2VmdWxsIHRvIGNvbXBhcmUgYWNjZXNzIGxvZ2dpbmcgZW50cnkgbGF0ZXIgd2l0aCBhIHN0YWNrdHJhY2VzLiAocGVybykKICAgICAgPC9hZGQ+ICAKICAgICAgPGZpeD4KICAgICAgICBvLmEuanVsaS5DbGFzc0xvYWRlckxvZ01hbmFnZXIgaGFuZGxlIG1vcmUgdGhlbiBvbmUgc3lzdGVtIHByb3BlcnR5IHJlcGxhY2VtZW50IGF0IGZpbGUgbG9nZ2luZy5wcm9wZXJ0aWVzLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzIzNjwvYnVnPjogUmVzZXQgdXNpbmdXcml0ZXIgYW5kIGFzc29jaWF0ZWQgZmxhZ3Mgd2hlbiByZXNwb25zZQogICAgICAgIGlzIHJlc2V0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMyNDE8L2J1Zz46IFNlcnZsZXRDb250ZXh0LmdldFJlc291cmNlQXNTdHJlYW0oKSBub3Qgc3BlYwogICAgICAgIGNvbXBsaWFudC4gUGF0Y2ggcHJvdmlkZWQgYnkgSm9obiBLZXcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzY3NTwvYnVnPjogRml4IGEgcG9zc2libGUgbG9nZ2luZyByZWxhdGVkIGNsYXNzIGxvYWRlciBsZWFrLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzY4NzwvYnVnPjogUmVtb3ZlIGNvbmRpdGlvbmFsIGhlYWRlcnMgb24gRm9ybSBBdXRoIHJlcGxheSwgc2luY2UgdGhlIFVBIChlc3AuIEZpcmVGb3gpIGlzbid0IGV4cGVjdGluZyBpdC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBidWcgaW4gQ0dJIFNlcnZsZXQgdGhhdCBjYXVzZWQgaXQgdG8gZmFpbCB3aGVuIGEgQ0dJIHJlc291cmNlIHdhcwogICAgICAgIGluY2x1ZGVkIGluIGFub3RoZXIgcmVzb3VyY2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29va2llIGhhbmRsaW5nL3BhcnNpbmcgY2hhbmdlcyEKICAgICAgICBUaGUgZm9sbG93aW5nIGJlaGF2aW9yIGhhcyBiZWVuIGNoYW5nZWQgd2l0aCByZWdhcmRzIHRvIFRvbWNhdCdzIGNvb2tpZQogICAgICAgIGhhbmRsaW5nOjxici8+CiAgICAgICAgYSkgQ29va2llcyBjb250YWluaW5nIGNvbnRyb2wgY2hhcmFjdGVycywgZXhjZXB0IDB4MDkoSFQpLCBhcmUgcmVqZWN0ZWQKICAgICAgICB1c2luZyBhbiBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24uPGJyLz4KICAgICAgICBiKSBJZiBjb29raWVzIGFyZSBub3QgcXVvdGVkLCB0aGV5IHdpbGwgYmUgcXVvdGVkIGlmIHRoZXkgY29udGFpbgogICAgICAgIDxjb2RlPnRzcGVjaWFscyh2ZXIwKTwvY29kZT4gb3IgPGNvZGU+dHNwZWNpYWxzMih2ZXIxKTwvY29kZT4KICAgICAgICBjaGFyYWN0ZXJzLjxici8+CiAgICAgICAgYykgRXNjYXBlIGNoYXJhY3RlciAnXFwnIGlzIGFsbG93ZWQgYW5kIHJlc3BlY3RlZCBhcyBhIGVzY2FwZSBjaGFyYWN0ZXIsCiAgICAgICAgYW5kIHdpbGwgYmUgdW5lc2NhcGVkIGR1cmluZyBwYXJzaW5nLgogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzODM5PC9idWc+OiBVUkwgYmFzZWQgc2Vzc2lvbiB0cmFja2luZyBmYWlscyB3aGVuIHNlc3Npb24gY29va2llCiAgICAgICAgZnJvbSBwYXJlbnQgY29udGV4dCBpcyBwcmVzZW50LiBCYXNlZCBvbiBhIHBhdGNoIGJ5IFl1YW4gUWluZ3l1bi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM4ODc8L2J1Zz46IEluY2x1ZGUgZXhjZXB0aW9uIGluIHRoZSBsb2cgbWVzc2FnZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzOTE0PC9idWc+OiBMb2NhdGlvbiBoZWFkZXJzIG11c3QgYmUgZW5jb2RlZC4gUGF0Y2ggcHJvdmlkZWQgYnkKICAgICAgICBJdmFuIFRvZG9yb3NraS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzOTU3PC9idWc+OiBTZXJ2aWNlLmJhdCBkaWRuJ3QgY29uZmlndXJlIGxvZ2dpbmcgY29ycmVjdGx5LgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFJpY2hhcmQgRmVhcm4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDA0MTwvYnVnPjogRml4IGR1cGxpY2F0ZSBjbGFzcyBkZWZpbml0aW9uIGVycm9yIHVuZGVyIGxvYWQuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0MDg0PC9idWc+OiBKQVNTUmVhbG0gaXMgYnJva2VuIGZvciBhcHBsaWNhdGlvbiBwcm92aWRlZAogICAgICAgIFByaW5jaXBhbHMuIFBhdGNoIHByb3ZpZGVkIGJ5IE5vYWggTGV2aXR0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciIgPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNzAyPC9idWc+OiBSZWR1Y2UgbGVuZ3RoIG9mIHVubmVjZXNzYXJpbHkgbG9uZyBjbGFzcyBuYW1lcyBmb3IKICAgICAgICB0aGUgaW5uZXIgaGVscGVyIGNsYXNzIHdoZW4gdXNpbmcgc2ltcGxlIHRhZ3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mzc1NzwvYnVnPjogUmF0aGVyIHRoYW4gdXNlIHN0cmluZyBtYXRjaGluZyB0byB3b3JrIG91dCB0aGUgbGluZQogICAgICAgIGluIHRoZSBKU1Agd2l0aCB0aGUgZXJyb3IsIHVzZSB0aGUgU01BUCBpbmZvIGFuZCB0aGUga25vd2xlZGdlIHRoYXQgZm9yCiAgICAgICAgYSBzY3JpcHRsZXQgdGhlcmUgaXMgYSBvbmUgdG8gb25lIGxpbmUgbWFwcGluZy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IEZhcm1XYXJEZXBsb3llciBjYW4gYmUgb25seSBjb25maWd1cmVkIGF0IGhvc3Qgc3ViZWxlbWVudCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgIAlGaXggd3JvbmcgJmFtcDsmYW1wOyBhdCBSZXBsaWNhdGlvblZhbHZlIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEZWx0YU1hbmFnZXIgc2Vzc2lvbkNvdW50ZXIgbXVzdCBiZSBhbHNvIGluY3JlbWVudCBhdCByZWxpY2F0ZWQgc2Vzc2lvbnMuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBNYWRlIGF0dHJpYnV0ZSBjcmVhdGVUaW1lIGFjY2Vzc2libGUgZm9yIGFsbCBEYXRhU2VuZGVycy4gKHBlcm8pCiAgICAgIDwvYWRkPiAgCiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyIgPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggQ1ZFLTIwMDctNTQ2MSwgYW4gaW1wb3J0YW50IGluZm9ybWF0aW9uIGRpc2Nsb3N1cmUgdnVsbmVyYWJpbGl0eSBpbgogICAgICAgIHRoZSBXZWJEQVYgU2VydmxldC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNjExPC9idWc+OiBQcm92aWRlIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gdXBsb2FkIGEgV0FSCiAgICAgICAgZm9yIGEgY29udGV4dCB0aGF0IGhhcyBiZWVuIGRlZmluZWQgaW4gc2VydmVyLnhtbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0MDk0PC9idWc+OiBBZGQgbm90ZSB0byBkb2NzIGFib3V0IHNpZGUtZWZmZWN0cyBvZiBzZXR0aW5nCiAgICAgICAgcHJpdmlsZWdlZCBvbiBhIGNvbnRleHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIiA+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM0Nzk8L2J1Zz46IEZpeCBtZW1vcnkgbGVhayBjbGVhbmluZyB1cCBzZW5kZmlsZSBjb25uZWN0aW9ucy4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM2MjI8L2J1Zz46IERvbid0IGFsd2F5cyBvdmVyd3JpdGUgbWluIGNvbXByZXNzaW9uIHNpemUgd2l0aAogICAgICAgIGRlZmF1bHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mzk5NTwvYnVnPjogTm8gdGltZW91dCBmb3Igc2VuZGZpbGUgKFRPRE8gaXRlbSBoYWQgYmVlbgogICAgICAgIGZvcmdvdHRlbikuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KICAgICAKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yNSAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMDctMDktMDgiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGRvY3M+CiAgICAgICAgQ29ycmVjdCBqLnUubCBsb2cgbGV2ZWxzIGluIEpVTEkgZG9jcy4gKHJqdW5nKQogICAgICA8L2RvY3M+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIENvbW1vbnMgTW9kZWxlciAyLjAuMSwgZml4IGVtYmVkIHJlbGVhc2Ugc3RhcnRpbmcgaXNzdWUuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEhhbmRsZSBzcGVjaWFsIGNhc2Ugb2YgUk9PVCB3aGVuIHJlLWxvYWRpbmcgd2ViYXBwIGFmdGVyIFJPT1QueG1sIGhhcwogICAgICAgIGJlZW4gbW9kaWZpZWQuIEluIHNvbWUgY2lyY3Vtc3RhbmNlcyB0aGUgcmVsb2FkZWQgUk9PVCB3ZWJhcHAgaGFkIG5vCiAgICAgICAgYXNzb2NpYXRlZCByZXNvdXJjZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFdlYkRBViBTZXJ2bGV0IHNvIGl0IHdvcmtzIGNvcnJlY3RseSB3aXRoIE1TIGNsaWVudHMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIGludmFsaWQgYXR0cmlidXRlICJlbmNvZGluZyIgb2YgTUJlYW4gTWVtb3J5VXNlckRhdGFiYXNlLAogICAgICAgIHdoaWNoIGxlYWQgdG8gZXJyb3JzIGluIHRoZSBtYW5hZ2VyIHdlYmFwcCBKTVhQcm94eSBvdXRwdXQuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFhTUyBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IChDVkUtMjAwNy0yNDUwKSBpbiB0aGUgTWFuYWdlciBhbmQgSG9zdAogICAgICAgIE1hbmFnZXIuIFJlcG9ydGVkIGJ5IERhaWtpIEZ1a3Vtb3JpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzkwNTU8L2J1Zz46IEFkZCBKTVhBZGFwdG9yTGlmZWN5Y2xlTGlzdGVuZXIgdG8gc3RhcnQgSk1YIENvbm5lY3RvcgogICAgICAgIHdpdGggZml4ZWQgbmFtaW5nIGFuZCBkYXRhIHBvcnRzLiBUaGlzIGZlYXR1cmUgaXMgbmVlZGVkIHRvIGhhdmUgc3RhYmxlCiAgICAgICAgcmVtb3RlIGFjY2VzcyB3aGVuIGEgZmlyZXdhbGwgaXMgYWN0aXZlLiBUaGUgYWRhcHRvciByZWFkcyBhbGwgc3RhbmRhcmQKICAgICAgICBKTVggc3lzdGVtIHByb3BlcnRpZXMgKC1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5YWFgpLiBDdXJyZW50bHkKICAgICAgICBvbmx5IGluY2x1ZGVkIGF0IHNyYyByZWxlYXNlICh1c2VzIEpESyAxLjUgY2xhc3NlcykuCiAgICAgICAgRmVhdHVyZSBwcm92aWRlZCBieSBHZW9yZ2UgTGluZGhvbG0gYW5kIEp1ZXJnZW4gSGVycm1hbiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTcyMjwvYnVnPjogTWFrZSB0aGUgcm9sZS1saW5rIGVsZW1lbnQgb3B0aW9uYWwgKGFzIHJlcXVpcmVkIGJ5CiAgICAgICAgdGhlIHNwZWMpIHdoZW4gdXNpbmcgYSBzZWN1cml0eS1yb2xlLXJlZiBlbGVtZW50LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI1NDc8L2J1Zz46IEZpeCBOUEUgd2hlbiBhIFJlc291cmNlTGluayBpbiBjb250ZXh0LnhtbCB0cmllcyB0bwogICAgICAgIG92ZXJyaWRlIGFuIGVudi1lbnRyeSBpbiB3ZWIueG1sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI5NDQ8L2J1Zz46IENvcnJlY3RseSBoYW5kbGUgc2VydmxldCBtYXBwaW5ncyB0aGF0IHVzZSBhICcrJwogICAgICAgIGNoYXJhY3RlciBhcyBwYXJ0IG9mIHRoZSB1cmwgcGF0dGVybi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGxhcmdlLWZpbGUgc3VwcG9ydCAobW9yZSB0aGVuIDQgR2IpIGF0IGFsbCBBY2Nlc3NMb2dWYWx2ZXMuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQzMTI5PC9idWc+OiBTdXBwb3J0IGxvZ2dpbmcgb2YgcmVzcG9uc2UgaGVhZGVycyBhdCBBY2Nlc3NMb2dWYWx2ZSAoZXguIGFkZCAle1NldC1Db29raWV9byB0byB5b3VyIHBhdHRlcm4pLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yNTAwPC9idWc+OiBGaWxlTm90Rm91bmRFeGNlcHRpb24gd2l0aGluIGEgSlNQIHBhZ2VzIHJlc3VsdGVkIGluIGEKICAgICAgICA0MDQgcmF0aGVyIHRoYW4gYSA1MDAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzMyNjwvYnVnPjogTm8gZXJyb3IgcmVwb3J0ZWQgd2hlbiBhbiBpbmNsdWRlZCBwYWdlIGRvZXMgbm90CiAgICAgICAgZXhpc3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjY0MzwvYnVnPjogUHJldmVudCBjcmVhdGlvbiBvZiBkdXBsaWNhdGUgSlNQIGZ1bmN0aW9uIG1hcHBlcgogICAgICAgIHZhcmlhYmxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMzE0PC9idWc+OiBQcm92aWRlIGNvbXBpbGF0aW9uIGVycm9yIGRldGFpbHMgaW4gY2FzZXMgd2hlcmUgdGhlCiAgICAgICAgZXJyb3IgY2FuJ3QgYmUgbWFwcGVkIGJhY2sgdG8gYSBzb3VyY2UgZmlsZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRG9uJ3Qgd3JpdGUgZXJyb3Igb24gU3lzdGVtLm91dCwgdXNlIGxvZygpIGluc3RlYWQuIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFhTUyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgKENWRS0yMDA3LTI0NDkpIGluIHRoZSBleGFtcGxlcy4KICAgICAgICBSZXBvcnRlZCBieSBUb3NoaWhhcnUgU3VnaXlhbWEuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTIxMjwvYnVnPjogRml4IHBvc3NpYmxlIE5QRSBpbiBEdW1teUNhcnQgZXhhbXBsZSBhbmQgcmVtb3ZlCiAgICAgICAgcmVkdW5kYW50IGNvZGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mjk3OTwvYnVnPjogVXBkYXRlIHNhbXBsZS53YXIgdG8gaW5jbHVkZSByZWNlbnQgc2VjdXJpdHkgZml4ZXMKICAgICAgICBpbiB0aGUgc291cmNlIGNvZGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgU2VwYXJhdGUgc2VxdWVuY2UgaW5jcmVtZW50IGZyb20gZ2V0dGVyIGluIFRocmVhZFBvb2wgdG8gYXZvaWQKICAgICAgICBtaXNsZWFkaW5nIGluY3JlbWVudHMgZHVyaW5nIG1vbml0b3JpbmcgdmlhIEpNWC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgIDxjaGFuZ2Vsb2c+CiAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMDQyPC9idWc+OiBSZWNvdmVyeSBtZW1iZXJzaGlwIGhlYXJ0YmVhdCBhZnRlciBpbnRlcmZhY2UgZG93bi4gKHBlcm8pCiAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNjkxPC9idWc+OiBEb24ndCBzZXQgYWNjZXNzIHRpbWUgYWZ0ZXIgc2Vzc2lvbiBzeW5jLiBGaXggdGhhdCBzZXNzaW9ucwogICAgICAgIGFmdGVyIG5vZGUgcmVzdGFydCBiZXR0ZXIgZXhwaXJlLiBSZXF1ZXN0ZWQgYnkgQ2FzZXkgTHVjYXMgKHBlcm8pCiAgICAgPC9maXg+ICAgCiAgICAgPGZpeD4KICAgICAgICBCYWNrcG9ydCBUb21jYXQgNiBjbHVzdGVyIHNvY2tldCBwYXJhbWV0ZXIuIChwZXJvKQogICAgIDwvZml4PiAgIAogICAgIDxmaXg+CiAgICAgICAgRml4IHR5cG8gaW4gbmV3IE1CZWFuIGF0dHJpYnV0ZSB3aGljaCBsZWFkIHRvIGVycm9ycyBpbiB0aGUgbWFuYWdlciB3ZWJhcHAgSk1YUHJveHkgb3V0cHV0LiAocmp1bmcpCiAgICAgPC9maXg+ICAgICAKICAgICA8Zml4PgogICAgICAgIDxidWc+NDI2ODk8L2J1Zz46IE5vIHdheSB0byB0aW1lb3V0IG5ldyBjb25uZWN0IGF0dGVtcHRzIGZvciByZXBsaWNhdGlvbiBzb2NrZXRzLiAKICAgICAgICBQYXRjaCBieSBDYXNleSBMdWNhcyAocGVybykKICAgICA8L2ZpeD4gICAKICAgICA8Zml4PiAgCiAgICAgICAgIEZpeCB0aW1lb3V0IHNldHRpbmcgb24gYSByZXBsaWNhdGVkIERlbHRhU2Vzc2lvbi4KICAgICAgICAgUGF0Y2ggYnkgQWxleGFuZGVyIE1hYXMgKGZoYW5payxwZXJvKQogICAgIDwvZml4PgogICAgIDxmaXg+ICAKICAgICAgICAgPGJ1Zz40MjcyMDwvYnVnPjogRG9uJ3Qgc2VuZCBhIG1lc3NhZ2UgaWYgbm8gY2x1c3RlciBtZW1iZXIgZXhpc3RzLgogICAgICAgICBQYXRjaCBieSBLZWlpY2hpIEZ1amlubyAocGVybykKICAgICA8L2ZpeD4gIAogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjQgKGZoYW5paykiIHJ0ZXh0PSJub3QgcmVsZWFzZWQiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gQ29tbW9ucyBEQkNQIHNyYyAxLjIuMiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIENvbW1vbnMgUG9vbCBzcmMgMS4zIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM3NzQ8L2J1Zz4gUmV0cnkgSk5ESSBhdXRoZW50aWN0aW9uIG9uIFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbgogICAgICAgIGFzIGF0IGxlYXN0IG9uZSBwcm92aWRlciB0aHJvd3MgdGhpcyBhZnRlciBhbiBpZGxlIGNvbm5lY3Rpb24gaGFzIGJlZW4KICAgICAgICBjbG9zZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDU5MzwvYnVnPiBDbGVhbnVwIHRoYXQgTGlzdGVuZXIgc3RvcCBhZnRlciBNYW5hZ2VyIHN0b3AgCiAgICAgICAgYXQgU3RhbmRhcmRDb250ZXh0LnN0b3AoKS4gUGF0Y2ggYnkgU3V6dWtpIFl1aWNoaXJvIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNzQ3PC9idWc+IENvcnJlY3QgZXhhbXBsZSBhbnQgc2NyaXB0IGZvciBkZXBsb3kgdGFzay4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNzUyPC9idWc+IENvcnJlY3QgZXJyb3IgbWVzc2FnZSBvbiBleGNlcHRpb24gaW4gTWVtb3J5UmVhbG0uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5ODc1PC9idWc+IE1pbm9yIGNsZWFudXAgaW4gUmVhbG1CYXNlLmluaXQsIGFzIHJlcXVlc3RlZCBieSBUYWtheW9zaGkgS2ltdXJhLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE0Nzc8L2J1Zz4gQWRkIGNvbW1vbnMtZWwuamFyIHRvIGJpbi9jYXRhbGluYS10YXNrcy54bWwsIHJlcXVpcmVkIGZvciBqYXNwZXIyIHRhc2tzCiAgICAgICAgICB1c2luZyBFTC4gUGF0Y2ggYnkgRGFuaWVsIFNhbnRvcy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMTUwPC9idWc+IEVuc3VyZSB1c2VyIGFuZCByb2xlIGNsYXNzbmFtZXMgYXJlIHZhbGlkYXRlZCBvbiBzdGFydHVwLiAgUGF0Y2ggYnkKICAgICAgICAgIFRvbS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMDM5PC9idWc+IExvZyBhIHN0YWNrIHRyYWNlIGlmIGEgc2VydmxldCB0aHJvd3MgYW4KICAgICAgICAgVW5hdmFpbGFibGVFeGNlcHRpb24uIFBhdGNoIHByb3ZpZGVkIGJ5IEthd2FzaW1hIEthenVoLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE5OTA8L2J1Zz4gQWRkIHNvbWUgYWRkaXRpb25hbCBtaW1lLXR5cGUgbWFwcGluZ3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTY1NTwvYnVnPiBGaXggbWVzc2FnZSB0cmFuc2xhdGlvbnMuIEphcGFuZXNlIHRyYW5zbGF0aW9ucwogICAgICAgIHByb3ZpZGVkIGJ5IFN1enVraSBZdWljaGlyby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxOTM5PC9idWc+IEFkZCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBkaXNhYmxlIG51bGxpbmcgb2Ygc3RhdGljCiAgICAgICAgYW5kIGZpbmFsIGZpZWxkcyBvZiBsb2FkZWQgY2xhc3NlcyB3aGVuIHN0b3BwaW5nIGEgd2ViIGFwcGxpY2F0aW9uCiAgICAgICAgY2xhc3Nsb2FkZXIuIFNldHRpbmcgdGhlIHN5c3RlbSBwcm9wZXJ0eQogICAgICAgIG9yZy5hcGFjaGUuY2F0YWxpbmEubG9hZGVyLldlYmFwcENsYXNzTG9hZGVyLkVOQUJMRV9DTEVBUl9SRUZFUkVOQ0VTIHRvCiAgICAgICAgZmFsc2Ugd2lsbCBzdG9wIHRoZXNlIGZpZWxkcyBiZWluZyBzZXQgdG8gbnVsbCBvbiBjb250ZXh0IHN0b3AuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGEgbG9nZ2luZyByZWxhdGVkIG1lbW9yeSBsZWFrIGluIE1hbmFnZXJCYXNlIGFuZAogICAgICAgIEFwcGxpY2F0aW9uRGlzcGF0Y2hlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz40MjM1NDwvYnVnPjogRW5zdXJlIEpBUnMgaW4gd2ViYXBwcyBhcmUgc2Nhbm5lZCBmb3IgVExEcyB3aGVuIHRoZQogICAgICAgICBUb21jYXQgaW5zdGFsbGF0aW9uIHBhdGggY29udGFpbnMgc3BhY2VzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjQyMzYxPC9idWc+OiBIYW5kbGUgbXVsdGktcGFydCBmb3JtcyB3aGVuIHNhdmluZyByZXF1ZXN0cyBkdXJpbmcKICAgICAgICAgRk9STSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBQYXRjaCBwcm92aWRlZCBieSBQZXRlciBSdW5nZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz40MjQwMTwvYnVnPjogVXBkYXRlIFJVTk5JTkcudHh0IHdpdGggYmV0dGVyIEpSRS9KREsgaW5mb3JtYXRpb24uCiAgICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+NDI0OTc8L2J1Zz46IEVuc3VyZSBFVGFnIGhlYWRlciBpcyBwcmVzZW50IGluIGEgMzA0IHJlc3BvbnNlLgogICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBMZW4gUG9wcC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgQWxsb3cgZm9yIGEgZm9yd2FyZC9pbmNsdWRlIHRvIGNhbGwgZ2V0QXR0cmlidXRlTmFtZXMgb24gdGhlIFJlcXVlc3QgaW4gYSBzYW5kYm94LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQW5kIGdldFNlc3Npb24oKSBvcGVyYXRpb24gdG8gU3RhbmRhcmRNYW5hZ2VyIGFuZCBEZWx0YU1hbmFnZXIgSk1YIEludGVyZmFjZSAocGVybykKICAgICAgPC9hZGQ+ICAgICAKICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIGhvc3QgY29uZmlndXJhdGlvbiBkb2N1bWVudCBmb3IgbmV3IGJlaGF2aW91ciBmb3IgZGlyZWN0b3JpZXMKICAgICAgICBpbiBhcHBCYXNlLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+Mzk4ODM8L2J1Zz4gIEFkZCBub3RlIHRvIGNvbnRleHQgY29uZmlndXJhdGlvbiBkb2N1bWVudCBhYm91dCB1c2luZwogICAgICAgICAgYW50aVJlc291cmNlTG9ja2luZyBvbiBhIHdlYmFwcCBvdXRzaWRlIHRoZSBIb3N0J3MgYXBwQmFzZSBkaXJlY3RvcnkuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zOTU0MDwvYnVnPiBBZGQgbGluayB0byBodHRwZCAyLjIgbW9kX3Byb3h5X2FqcCBkb2NzIGluIEFKUCBjb25uZWN0b3IgZG9jLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEyODk8L2J1Zz46IENyZWF0ZSBjb25maWdCYXNlLCBzaW5jZSBpdCBpcyBubyBsb25nZXIgY3JlYXRlZCBlbHNld2hlcmUuCiAgICAgICAgU3VibWl0dGVkIGJ5IFNoaXZhIEt1bWFyIEggUi4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIxMDM8L2J1Zz46IFVzZSBjb3JyZWN0IG5hbWVzIGZvciB0cnVzdHN0b3JlRmlsZSwgdHJ1c3RzdG9yZVR5cGUgYW5kIAogICAgICAgIHRydXN0c3RvcmVQYXNzIHdoZW4gc2F2aW5nIHNlcnZlci54bWwgaW4gQWRtaW4gd2ViYXBwLiBQYXRjaCBwcm92aWRlZCBieQogICAgICAgIE1hdGhldXMgQmFzdG9zLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIwMjU8L2J1Zz46IFVwZGF0ZSB2YWx2ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmVyIHRvIGNvcnJlY3QgcmVndWxhcgogICAgICAgIGV4cHJlc3Npb24gaW1wbGVtZW50YXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTk1NjwvYnVnPjogRG9uJ3Qgc2tpcCB0aGUgY29ubmVjdG9yIGFkZHJlc3MgYXR0cmlidXRlIHdoZW4KICAgICAgICBwZXJzaXN0aW5nIHNlcnZlci54bWwgY2hhbmdlcyB2aWEgdGhlIGFkbWluIHdlYmFwcC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwOTYwPC9idWc+IEluY29uc2lzdGVudCBleGNlcHRpb24gdHlwZSB0aHJvd24gb24gc29ja2V0IHRpbWVvdXQgaW4KICAgICAgICAgIEludGVybmFsQXBySW5wdXRCdWZmZXIuICBQYXRjaCBieSBDaHJpc3RvcGhlIFBpZXJyZXQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz40MTY3NTwvYnVnPiBBZGQgYSBjb3VwbGUgb2YgREVCVUctbGV2ZWwgbG9nZ2luZyBzdGF0ZW1lbnRzIHRvIEh0dHAxMVByb2Nlc3NvcnMKICAgICAgICAgIHdoZW4gc2VuZGluZyBlcnJvciByZXNwb25zZXMuICBQYXRjaCBieSBSYWxmIEhhdXNlci4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMTE5PC9idWc+IEZpeCByZXR1cm4gdmFsdWUgZm9yIHJlcXVlc3QuZ2V0Q2hhcmFjdGVyRW5jb2RpbmcoKSB3aGVuCiAgICAgICAgQ29udGVudC1UeXBlIGhlYWRlcnMgY29udGFpbiBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gY2hhcnNldC4gUGF0Y2ggYnkKICAgICAgICBMZWlnaCBMIEtsb3R6IEpyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYxNTU8L2J1Zz4gQWx3YXlzIHJlc2V0IHRoZSBNQiB3aGVuIGRvaW5nIGdldEJ5dGVzIGluIHRoZSBKSyBDb25uZWN0b3IgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgbGFyZ2UtZmlsZSBzdXBwb3J0IGluIHRoZSBBSlAgQ29ubmVjdG9ycyAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFJlY2VpdmVyIGNhbiBhbHNvIHVzZSB0Y3BMaXN0ZW5BZGRyZXNzIHdpdGggYSBob3N0bmFtZS4gKHJqdW5nLCBwZXJvKQogICAgICA8L2ZpeD4gICAgIAogICAgICA8Zml4PgogICAgICAgIERlbHRhUmVxdWVzdCBzeW5jaHJvbml6ZWQgZ2V0U2l6ZSgpIGFuZCBzaG93IGxvZyBtZXNzYWdlIGFzIAogICAgICAgIHJlYWRFeHRlcm5hbCgpIGZhaWx1cmUuIChyanVuZywgcGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIERlbHRhTWFuYWdlciBleHBpcmVUb2xlcmFuY2UgYXR0cmlidXRlIHRvIHF1aWNrZXIgYXV0byBleHBpcmUgbG9uZyBiYWNrdXAgc2Vzc2lvbnMuIChyanVuZywgcGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIERlbHRhTWFuYWdlciB1cGRhdGVBY3RpdmVJbnRlcnZhbGwgYXR0cmlidXRlIHRvIHNlbmQgZXZlcnkgNjAgc2VjIGEgc2Vzc2lvbiBhY2Nlc3MgbWVzc2FnZS4gKHJqdW5nLCBwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5ODY2PC9idWc+IER1cGxpY2F0ZSBuYW1lcyBhcHBlbmRlZCB0byBjbHVzdGVyIG1hbmFnZXIgbmFtZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gICAKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NDI1PC9idWc+IEFkZCBhZGRpdGlvbmFsIHN5c3RlbSBwcm9wZXJ0eSBwZXJtaXNzaW9uIHRvCiAgICAgICAgY2F0YWxpbmEucG9saWN5IGZvciBwcmUtY29tcGlsZWQgSlNQcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMjI3PC9idWc+IEFkZCBhIGJpdCBvZiBERUJVRy1sZXZlbCBsb2dnaW5nIHRvIEpzcEMgc28gdXNlcnMga25vdwogICAgICAgICAgd2hpY2ggZmlsZSBpcyBiZWluZyBjb21waWxlZC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxODY5PC9idWc+IFRhZ0RhdGEuZ2V0QXR0cmlidXRlKCkgc2hvdWxkIHJldHVybgogICAgICAgIFRhZ0RhdGEuUkVRVUVTVF9USU1FX1ZBTFVFIHdoZW4gdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBhbiBFTCBleHByZXNzaW9uLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjA3MTwvYnVnPiBGaXggSWxsZWdhbFN0YXRlRXhjZXB0aW9uIG9uIG11bHRpcGxlIHJlcXVlc3RzIHRvCiAgICAgICAgYW4gdW5hdmFpbGFibGUgSlNQLiBQYXRjaCBwcm92aWRlZCBieSBLYXdhc2ltYSBLYXp1aC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZnRlciBhIEpTUCB0aHJvd3MgYW4gVW5hdmFpbGFibGVFeGNlcHRpb24gYWxsb3cgaXQgdG8gYmUgYWNjZXNzZWQgb25jZQogICAgICAgIHRoZSB1bmF2YWlsYWJsZSBwZXJpb2QgaGFzIGV4cGlyZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjA3MjwvYnVnPiBEb24ndCBjYWxsIGRlc3Ryb3koKSBpZiB0aGUgYXNzb2NpYXRlZCBpbml0KCkgZmFpbHMuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgS2F3YXNpbWEgS2F6dWguIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGEgbG9nZ2luZyByZWxhdGVkIG1lbW9yeSBsZWFrIGluIFBhZ2VDb250ZXh0SW1wbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNDM4PC9idWc+IER1cGxpY2F0ZSB0ZW1wb3JhcnkgdmFyaWFibGVzIHdlcmUgY3JlYXRlZCB3aGVuCiAgICAgICAganNwOmF0dHJpYnV0ZSB3YXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSB0YWdzLiBQYXRjaCBwcm92aWRlZAogICAgICAgIGJ5IEJyaWFuIExlbnouIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjMgKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA3LTAzLTA5Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE2MDg8L2J1Zz4gTWFrZSBsb2cgbGV2ZWxzIGNvbnNpc3RlbnQgd2hlbiBTZXJ2bGV0LnNlcnZpY2UoKQogICAgICAgIHRocm93cyBhbiBleGNlcHRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTY2NjwvYnVnPiBDb3JyZWN0IGhhbmRsaW5nIG9mIGJvdW5kYXJ5IGNvbmRpdGlvbnMgZm9yCiAgICAgICAgSWYtVW5tb2RpZmllZC1TaW5jZSBhbmQgSWYtTW9kaWZpZWQtU2luY2UgaGVhZGVycy4gUGF0Y2ggcHJvdmlkZWQgYnkKICAgICAgICBTdXp1a2kgWXVpY2hpcm8uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTY3NDwvYnVnPiBGaXggZXJyb3IgbWVzc2FnZXMgd2hlbiBwYXJzaW5nIGNvbnRleHQueG1sIHRoYXQKICAgICAgICBpbmNvcnJlY3RseSByZWZlcnJlZCB0byB3ZWIueG1sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE3Mzk8L2J1Zz4gQ29ycmVjdCBoYW5kbGluZyBvZiBzZXJ2bGV0cyB3aXRoIGEgbG9hZC1vbi1zdGFydHVwCiAgICAgICAgdmFsdWUgb2YgemVyby4gVGhlc2UgYXJlIG5vdyB0aGUgZmlyc3Qgc2VydmxldHMgdG8gYmUgc3RhcnRlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBSZXF1ZXN0cyB3aXRoIG11bHRpcGxlIGNvbnRlbnQtbGVuZ3RoIGhlYWRlcnMgYXJlIG5vdyByZWplY3RlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yMiAoZmhhbmlrKSIgcnRleHQ9Im5vdCByZWxlYXNlZCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCByZWdyZXNzaW9uIGluIGJ1aWxkIHRoYXQgcHJldmVudGVkIGNvbm5lY3RvcnMgZnJvbSBidWlsZGluZy4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjIxIChmaGFuaWspIiBydGV4dD0ibm90IHJlbGVhc2VkIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE0MDE8L2J1Zz46IFN0YW5kYXJkU2VydmljZS5nZXRDb25uZWN0b3JOYW1lcygpIHJldHVybiBhcnJheSBvZiAKICAgICAgICBDb25uZWN0b3IgSk1YIG9iamVjdG5hbWVzLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yOTcyNzwvYnVnPjogSWYgZW52LWVudHJ5IHZhbHVlcyBpbiB3ZWIueG1sIGFyZSBjaGFuZ2VkIHRoZW4KICAgICAgICBlbnN1cmUgbmV3IHZhbHVlcyBhcmUgYXBwbGllZCB3aGVuIGNvbnRleHQgaXMgcmVsb2FkZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDk1NjwvYnVnPjogRW5zdXJlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgcGFzc2VkIHRvIGEKICAgICAgICBSZXF1ZXN0RGlzcGF0Y2hlciBtZWV0IHRoZSByZXF1aXJlbWVudHMgb2YgU1JWLjguMiBhbmQKICAgICAgICBTUlYuMTQuMi41LjEuIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gVGhlIEphdmEgb3B0aW9uIAogICAgICAgIDxjb2RlPi1Eb3JnLmFwYWNoZS5jYXRhbGluYS5TVFJJQ1RfU0VSVkxFVF9DT01QTElBTkNFPXRydWU8L2NvZGU+CiAgICAgICAgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgdGVzdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2Mjc0PC9idWc+OiBXaGVuIGluY2x1ZGluZyBzdGF0aWMgY29udGVudCB3aXRoIHRoZQogICAgICAgIERlZmF1bHRTZXJ2bGV0IGFsc28gdHJlYXQgY29udGVudCB0eXBlcyBlbmRpbmcgaW4geG1sIGFzIHRleHQuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2OTc2PC9idWc+OiBEb24ndCB1c2UgQ0FUQUxJTkFfT1BUUyB3aGVuIHN0b3BwaW5nIFRvbWNhdC4gVGhpcwogICAgICAgIGFsbG93cyBvcHRpb25zIGZvciBzdGFydGluZyBhbmQgc3RvcHBpbmcgdG8gYmUgc2V0IG9uIEpBVkFfT1BUUyBhbmQKICAgICAgICBvcHRpb25zIGZvciBzdGFydGluZyBvbmx5IHRvIGJlIHNldCBvbiBDQVRBTElOQV9PUFRTLiBXaXRob3V0IHRoaXMKICAgICAgICBmaXgsIHNvbWUgc3RhcnR1cCBvcHRpb25zIChlZyB0aGUgcG9ydCBmb3IgcmVtb3RlIEpNWCkgd291bGQgY2F1c2UKICAgICAgICBzdG9wIHRvIGZhaWwuIEJhc2VkIG9uIGEgZml4IHN1Z2dlc3RlZCBieSBNaWNoYWVsIFZvcmJ1cmdlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MDcwPC9idWc+OiBVcGRhdGUgbWJlYW4gbmFtZSBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgdGhlCiAgICAgICAgU3RhbmRhcmRXcmFwcGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzczNTY8L2J1Zz46IEVuc3VyZSBzZXNzaW9ucyB0aW1lIG91dCBjb3JyZWN0bHkuIFRoaXMgaGFzIGJlZW4KICAgICAgICBmaXhlZCBieSByZW1vdmluZyB0aGUgYWNjZXNzQ291bnQgZmVhdHVyZSBieSBkZWZhdWx0LiBUaGlzIGZlYXR1cmUKICAgICAgICBwcmV2ZW50cyB0aGUgc2Vzc2lvbiBmcm9tIHRpbWluZyBvdXQgd2hpbHN0IHJlcXVlc3RzIHRoYXQgbGFzdAogICAgICAgIGxvbmdlciB0aGFuIHRoZSBzZXNzaW9uIHRpbWUgb3V0IGFyZSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgZmVhdHVyZQogICAgICAgIGlzIGVuYWJsZWQgYnkgc2V0dGluZyB0aGUgSmF2YSBvcHRpb24gCiAgICAgICAgPGNvZGU+LURvcmcuYXBhY2hlLmNhdGFsaW5hLlNUUklDVF9TRVJWTEVUX0NPTVBMSUFOQ0U9dHJ1ZTwvY29kZT4KICAgICAgICBUaGUgZmVhdHVyZSBpcyBub3cgaW1wbGVtZW50ZWQgd2l0aCBzeW5jaHJvbml6YXRpb24gd2hpY2ggYWRkcmVzc2VzCiAgICAgICAgdGhlIHRocmVhZCBzYWZldHkgaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydC4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc0Mzk8L2J1Zz46IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBFbmdpbmUgY29tcG9uZW50IHRvIGFkZAogICAgICAgIHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBuYW1lIG11c3QgYmUgdW5pcXVlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc0NTg8L2J1Zz46IEFkZCBzeW5jcyB0byB0aGUgV2ViYXBwQ2xhc3Nsb2FkZXIgdG8gYWRkcmVzcwogICAgICAgIHJhcmUgaXNzdWVzIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBhdHRlbXB0IHRvIGxvYWQgdGhlIHNhbWUgY2xhc3MKICAgICAgICBjb25jdXJyZW50bHkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzUwOTwvYnVnPjogRG8gbm90IHJlbW92ZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiB2YWx1ZXMKICAgICAgICBkZWZpbmVkIGluIGxvZ2dpbmcucHJvcGVydGllcyBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTk4PC9idWc+OiBBZGQgcmVmZXJlbmNlIHRvIENvbnRleHQgZG9jdW1lbnRhdGlvbiBmcm9tIEhvc3QKICAgICAgICBkb2N1bWVudGF0aW9uIHRoYXQgZXhwbGFpbnMgaG93IENvbnRleHQgbmFtZSBpcyBvYnRhaW5lZCBmcm9tIHRoZQogICAgICAgIENvbnRleHQgZmlsZW5hbWUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTA4ODwvYnVnPjogUHJldmVudCBpbmZpbnRlIGxvb3BzIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bgogICAgICAgIHRoYXQgcmV0dXJucyBpdHNlbGYgZm9yIGdldFJvb3RDYXVzZSgpLiBCYXNlZCBvbiBhIHBhdGNoIGJ5IFdvdXRlcgogICAgICAgIFplbGxlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk0MzY8L2J1Zz46IENvcnJlY3QgTUlNRSB0eXBlIGZvciBTVkcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTYyNzwvYnVnPjogSlVMSSBubyBsb25nZXIgaWdub3JlcyBhICIubGV2ZWw9WFhYIiBkaXJlY3RpdmUKICAgICAgICBpbiBsb2dnaW5nLnByb3BlcnRpZXMuIFBhdGNoIHByb3ZpZGVkIGJ5IFJvZ2VyIEtlYXlzIGFuZCBSaWNoYXJkCiAgICAgICAgRmVhcm4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTcyNDwvYnVnPjogUmVtb3ZpbmcgdGhlIGxhc3QgdmFsdmUgZnJvbSBhIHBpcGVsaW5lIGRpZCBub3QKICAgICAgICByZXR1cm4gdGhlIHBpcGVsaW5lIHRvIHRoZSBvcmlnaW5hbCBzdGF0ZS4gUGF0Y2ggcHJvdmlkZWQgYnkKICAgICAgICBEYXZpZCBHYWdvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMzY3PC9idWc+OiBVcGRhdGUgSksgYXV0byBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24gdG8gY2xhcmlmeQogICAgICAgIHRoYXQgd29ya2Vycy5wcm9wZXJ0aWVzIG11c3QgYWxzbyBleGlzdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTI0PC9idWc+OiBIdHRwU2VydmxldFJlcXVlc3QuZ2V0QXV0aFR5cGUoKSBub3cgcmV0dXJucwogICAgICAgIENMSUVOVF9DRVJUIHJhdGhlciB0aGFuIENMSUVOVC1DRVJUIGZvciBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbgogICAgICAgIGFzIHBlciB0aGUgc3BlYy4gTm90ZSB0aGF0IHdlYi54bWwgY29udGludWVzIHRvIHVzZSBDTElFTlQtQ0VSVCB0bwogICAgICAgIHNwZWNpZnkgdGhlIGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uIHNob3VsZCBiZSB1c2VkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1MjY8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciBKUERBX09QVFMgdG8gY2F0YWxpbmEuYmF0IGFuZCBhZGQgYQogICAgICAgIEpQREFfU1VTUEVORCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBib3RoIHN0YXJ0dXAgc2NyaXB0cy4gUGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBLdXJ0IFJveS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTI4PC9idWc+OiBBZGQgbWlzc2luZyBtZXNzYWdlIGxvY2FsaXNhdGlvbnMgYXMgcHJvdmlkZWQgYnkKICAgICAgICBCZW4gQ2xpZmZvcmQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDU4NTwvYnVnPjogRml4IHBhcmFtZXRlcmlzZWQgY29uc3RydWN0b3IgZm9yIG8uYS5qdWxpLkZpbGVIYW5kbGVyCiAgICAgICAgc28gcGFyYW1ldGVycyBoYXZlIGFuIGVmZmVjdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNjI1PC9idWc+OiBTdG9wIENHSVNlcnZsZXQgc3dhbGxvd2luZyB0aGUgcm9vdCBjYXVzZSBvZiBhbgogICAgICAgIGV4Y2VwdGlvbi4gUGF0Y2ggcHJvdmlkZWQgYnkgVGFrYXlvc2hpIEtpbXVyYS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNzIzPC9idWc+OiBDb3JyZWN0IHRhYmxlIGNyZWF0aW9uIGV4YW1wbGUgaW4gSmF2YURvYyBmb3IKICAgICAgICBKREJDQWNjZXNzTG9nVmFsdmUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDgwMjwvYnVnPjogQWRkIGpzcC1hcGkuamFyIHRvIGZpbGVzZXQgaW4gY2F0YWxpbmEtdGFza3MueG1sIGFzIHByb3ZpZGVkIGJ5CiAgICAgICAgRGFuaWVsIFNhbnRvcy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA4MTc8L2J1Zz46IENvcnJlY3QgcHJvYmxlbSB3aGVyZSBDR0kgc2NyaXB0cyBpbiB0aGUgcm9vdCBvZiB0aGUKICAgICAgICBST09UIGNvbnRleHQgdGhyZXcgYSA8Y29kZT5TdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9jb2RlPi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFNldCB0aGUgPGNvZGU+U0NSSVBUX0ZJTEVOQU1FPC9jb2RlPiBlbnZpcm9ubWVudCB2YXJpYWJsZSByZXF1aXJlZAogICAgICAgIGJ5IFBIUCB3aGVuIHVzaW5nIHRoZSBDR0lTZXJ2bGV0IHRvIGV4ZWN1dGUgUEhQLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA4MjM8L2J1Zz46IFVwZGF0ZSBjb250ZXh0IGRvYyB0byBjbGFyaWZ5IHVzZSBvZiBST09ULnhtbCwKICAgICAgICBtdWx0aS1sZXZlbCBjb250ZXh0IHBhdGhzIGFuZCB0byBmdXJ0aGVyIGRpc2NvdXJhZ2UgdXNlIG9mIHNlcnZlci54bWwKICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA4NDQ8L2J1Zz46IEFkZCBhZGRpdGlvbmFsIHN5bmNzIHRvIEpEQkNSZWFsbSB0byByZXNvbHZlIE5QRSB3aGVuCiAgICAgICAgdHdvIHVzZXJzIHRyeSB0byBhdXRoZW50aWNhdGUgdXNpbmcgRElHRVNUIGF1dGhlbnRpY2F0aW9uIGF0IHRoZSBzYW1lCiAgICAgICAgdGltZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwODYwPC9idWc+OiBMb2cgZXhjZXB0aW9ucyBhbmQgb3RoZXIgcHJvYmxlbXMgZHVyaW5nIHBhcmFtZXRlcgogICAgICAgIHByb2Nlc3NpbmcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDkwMTwvYnVnPjogRW5jb2RlIGRpcmVjdG9yeSBsaXN0aW5nIG91dHB1dC4gQmFzZWQgb24gYSBwYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IENocmlzIEhhbHN0ZWFkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA5Mjk8L2J1Zz46IENvcnJlY3QgSmF2YURvYyBmb3IgU3RhbmRhcmRDYWxzc0xvYWRlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDA4PC9idWc+OiBBbGxvdyBQT1NUIHRvIGJlIHVzZWQgZm9yIGluZGV4ZWQgcXVlcmllcyB3aXRoIENHSQogICAgICAgIFNlcnZsZXQuIFBhdGNoIHByb3ZpZGVkIGJ5IENocmlzIEhhbHN0ZWFkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwMjA8L2J1Zz46IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIGN1c3RvbSBlcnJvciByZXBvcnQgVmFsdmUKICAgICAgICBmYWlscyB0byBsb2FkLiBBbHNvIHJlbW92ZSByZXF1aXJlbWVudCB0aGF0IGN1c3RvbSBlcnJvciByZXBvcnQgVmFsdmVzCiAgICAgICAgZXh0ZW5kIFZhbHZlQmFzZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMjE3PC9idWc+OiBTZXQgc2VjdXJlIGF0dHJpYnV0ZSBvbiBTU08gY29va2llIHdoZW4gY29va2llIGlzCiAgICAgICAgY3JlYXRlZCBkdXJpbmcgYSBzZWN1cmUgcmVxdWVzdC4gUGF0Y2ggcHJvdmlkZWQgYnkgQ2hyaXMgSGFsc3RlYWQuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBFbnN1cmUgQWNjZXB0LUxhbmd1YWdlIGhlYWRlcnMgY29uZm9ybSB0byBSRkMgMjYxNi4gSWdub3JlIHRoZW0gaWYKICAgICAgICB0aGV5IGRvIG5vdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBNYWtlIHByb3ZpZGVkIGluc3RhbmNlcyBvZiBSZXF1ZXN0RGlzcGF0Y2hlciB0aHJlYWQgc2FmZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggZm9ybWF0dGluZyBvZiBDR0kgdmFyaWFibGUgU0NSSVBUX05BTUUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDY0MzwvYnVnPjogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBmb3IgcGVyLXVzZXIgLyBwZXItc2Vzc2lvbiBjbGllbnRBdXRoCiAgICAgICAgdXNhZ2UgaW4gU1NMIEF1dGhlbnRpY2F0b3IuICBEb2NzIHByb3ZpZGVkIGJ5IGphY2sgYW5kIFJhbGYgSGF1c2VyLiAgKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNjY4PC9idWc+OiBVcGRhdGUgcmVsZWFzZSBub3RlcyBhbmQgcmVhZG1lIGZpbGVzIHNwZWNpZmljIHRvIHY1LjUuMjAgdG8gCiAgICAgICAgbm90aWZ5IHVzZXJzIG9mIG1pc3NpbmcgTWFpbFNlc3Npb25GYWN0b3J5IGluIGRpc3RyaWJ1dGlvbiwgc3VnZ2VzdCB3b3JrYXJvdW5kcywKICAgICAgICBhbmQgbGluayB0byByZWxldmFudCBCdWd6aWxsYSBpc3N1ZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3OTc3PC9idWc+OiBhZGFwdCBCVUlMRElORy50eHQgYW5kIG5ldCBidWlsZC54bWwgZm9yIFNWTi4gIFBhdGNoIGJ5CiAgICAgICAgQ2hyaXN0b3BoZXIgU2FobndhbGR0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzkwNTU8L2J1Zz46IExpbmsgdG8gc2FtcGxlIHdvcmthcm91bmQgY29kZSBmb3IgdXNpbmcgSlNSMTYwIEpNWCBtb25pdG9yaW5nCiAgICAgICAgd2l0aCBhIGxvY2FsIGZpcmV3YWxsLiAgVGhhbmtzIHRvIEdlb3JnZSBMaW5kaG9sbSBmb3IgdGhlIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+Mzk0NzY8L2J1Zz46IGFkZCB4bWwgZGVjbGFyYXRpb24gdG8gbW9zdCBidWlsZC54bWwgZmlsZXMsIGFzIHN1Z2dlc3RlZCBieQogICAgICAgIEdyZWdvcnkgUy4gSG9lcm5lciBTci4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMzI2PC9idWc+OiBzdG9wIHVzaW5nIEZpbGUjZGVsZXRlT25FeGl0IGluIERlZmF1bHRTZXJ2bGV0IHRvIGF2b2lkCiAgICAgICAgSlZNIG1lbW9yeSBsZWFrLCBhcyBzdWdnZXN0ZWQgYnkgcXVhcnR6LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAxOTI8L2J1Zz46IHVwZGF0ZSBzZXR1cC5odG1sIG5vdGVzIHJlZ2FyZGluZyBXaW5kb3dzIHRyYXkgaWNvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMTc3PC9idWc+OiBhZGQgbW9yZSB3YXJuaW5ncyB0byBkb2N1bWVudGF0aW9uIGFib3V0IFJlcXVlc3REdW1wZXJWYWx2ZQogICAgICAgIGNoYXJhY3RlciBlbmNvZGluZy4gICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTI1NTwvYnVnPjogTlBFIGluIEF1dGhlbnRpY2F0b3JCYXNlIHdoZW4gbG9nZ2luZyBsZXZlbCBpcyBzZXQgdG8gREVCVUcKICAgICAgICBhbmQgbm8gcHJpbmljcGFsIGZvdW5kLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE0Mzc8L2J1Zz46IE1ha2UgbG9nIG1lc3NhZ2VzIGFuZCBsb2dsZXZlbCBjb25zaXN0ZW50IGR1cmluZyBDb250ZXh0CiAgICAgICAgc3RhcnQuIFBhdGNoIHByb3ZpZGVkIGJ5IFN1enVraSBZdWljaGlyby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODMzMjwvYnVnPjogQWRkIGJhY2tsb2cgYXR0cmlidXRlIHRvIENoYW5uZWxTb2NrZXQgYXMgcHJvdmlkZWQgYnkKICAgICAgICAgVGFrYXlvc2hpIEtpbXVyYS4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEJhY2twb3J0IHBhY2tldFNpemUgZmVhdHVyZSBmcm9tIFRvbWNhdCA2LjAueCBhdCBzdGFuZGFyZCBjb3lvdGUgQUpQIEprIGhhbmRsZXIuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNzcxPC9idWc+OiBGaXggaW1wbGVtZW50YXRpb24gb2YKICAgICAgICBTYXZlZFJlcXVlc3RJbnB1dEZpbHRlci5kb1JlYWQoKSBzbyBQT1NUIGRhdGEgbWF5IGJlIHJlYWQgdXNpbmcgYQogICAgICAgIFZhbHZlIG9yIEZpbHRlci4gUGF0Y2ggcHJvdmlkZWQgYnkgTWljaGFlbCBEdWZlbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDE3PC9idWc+OiBSZXN0b3JlIGJlaGF2aW91ciBvZiBNZXNzYWdlQnl0ZXMuc2V0U3RyaW5nKG51bGwpLgogICAgICAgIChyZW1tL21hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDU3PC9idWc+OiBNb2RpZnkgU3RyaW5nQ2FjaGUgdG8gYWRkIGEgY29uZmlndXJhYmxlIHVwcGVyIGJvdW5kCiAgICAgICAgdG8gdGhlIGxlbmd0aCBvZiBjYWNoZWQgc3RyaW5ncy4gKHJlbW0vbWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3NzQ8L2J1Zz46IENoZWNrIGphdmF4Lm5ldC5zc2wua2V5U3RvcmVQYXNzd29yZCBzeXN0ZW0gcHJvcGVydHkgYXMgYSBzZWNvbmRhcnkKICAgICAgICBzb3VyY2UgZm9yIGtleXN0b3JlIHBhc3N3b3JkIGluIEpTU0VTb2NrZXRGYWN0b3J5LCBhcyBzdWdnZXN0ZWQgYnkgVGVkIFguIFRvdGguICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTQwMjwvYnVnPjogTW9kaWZ5IGV4aXN0aW5nIFZhcnkgSFRUUCBoZWFkZXIsIHJhdGhlciB0aGFuIG92ZXJ3cml0ZSBpdCwgaWYgaXQKICAgICAgICBleGlzdHMgd2hlbiB1c2luZyBHWmlwIGNvbXByZXNzaW9uLiAgUGF0Y2ggYnkgTWF0dGhldyBDb29rZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMjQxPC9idWc+OiBDYXRjaCBFeGNlcHRpb25zIGluc3RlYWQgb2YgVGhyb3dhYmxlcyBpbiBEZWZhdWx0IGFuZCBTU0kgc2VydmxldHMuCiAgICAgICAgQWxzbyBpbXByb3ZlIHJlbGV2YW50IGxvZ2dpbmcgd2hpbGUgd2UncmUgYXQgaXQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDEzMzwvYnVnPjogQmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb250ZXh0IG5hbWUgaXMgbm90IGF2YWlsYWJsZSBvbiBzdGFydHVwLAogICAgICAgIGFzIHN1Z2dlc3RlZCBieSBBbmRyZWFzIFBsZXNuZXIgSmFjb2JzZW4uICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk5NzU8L2J1Zz46IGRvbid0IGhhdmUgc3RhdGljIExvZyByZWZlcmVuY2VzIHRvIHByZXZlbnQKICAgICAgICBjbGFzc2xvYWRlciBsZWFrcy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMTA0PC9idWc+OiBXaGVuIGRpc3BsYXlpbmcgSlNQIHNvdXJjZSBhZnRlciBhbiBleGNlcHRpb24sIGhhbmRsZQogICAgICAgIGluY2x1ZGVkIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA3OTc8L2J1Zz46IFRoaXMgd2FzIGEgcmVncmVzc2lvbiBhcyBhIHJlc3VsdCBvZiB0aGUgZml4IGZvcgogICAgICAgIDxidWc+MzM0MDc8L2J1Zz4uIFRMRCB2YWxpZGF0aW9uIHdhcyBmYWlsaW5nIGFzIGEgcmVzdWx0IG9mIHRoZSB1c2UKICAgICAgICBvZiB0aGUgZXNjYXBlIGNoYXJhY3RlciAoMHgxYikgYXMgYSB0ZW1wb3JhcnkgcmVwbGFjZW1lbnQgZm9yIFwkLgogICAgICAgIEFuIGFsdGVybmF0aXZlIGNoYXJhY3RlciAoMHhlMDAwKSBmcm9tIHRoZSB1bmljb2RlIHByaXZhdGUgdXNlIHJhbmdlCiAgICAgICAgaXMgbm93IHVzZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTA1NzwvYnVnPjogTWFrZSBqc3A6cGx1Z2luIG91dHB1dCBYSFRNTCBjb21wbGlhbnQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTMyNzwvYnVnPjogU2hvdyBmdWxsIFVSSSBmb3IgYSA0MDQuIFBhdGNoIHByb3ZpZGVkIGJ5IFZpamF5LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTI2NTwvYnVnPjogQWxsb3cgSnNwU2VydmxldCBjaGVja0ludGVydmFsIGluaXQgcGFyYW1ldGVyIHRvIGJlCiAgICAgICAgZXhwbGljaXRseSBzZXQgdG8gdGhlIHN0YXRlZCBkZWZhdWx0IHZhbHVlIG9mIHplcm8gYnkgcmVtb3ZpbmcgdGhlCiAgICAgICAgY29kZSB0aGF0IHJlc2V0cyBpdCB0byAzMDAgaWYgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgemVyby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEaXNwbGF5IHRoZSBKU1Agc291cmNlIHdoZW4gYSBjb21waWxhdGlvbiBlcnJvciBvY2N1cnMgYW5kIGRpc3BsYXkKICAgICAgICB0aGUgY29ycmVjdCBsaW5lIG51bWJlciByYXRoZXIgdGhhbiBzdGFydCBvZiBhIHNjcmlwdGxldCBibG9jay4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ5NTI8L2J1Zz46IENsYXJpZnkgdGhhdCB0aGUgV2luZG93cyBJbnN0YWxsZXIgYWx3YXlzIGluc3RhbGxzCiAgICAgICAgYSBXaW5kb3dzIHNlcnZpY2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTk2ODwvYnVnPjogTWFrZSBlbnZpcm9ubWVudCBlbnRyeSBwcm9wZXJ0aWVzIGlucHV0IGEgdGV4dCBhcmVhLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFRyaXN0YW4gTWFybHkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzU4ODwvYnVnPjogRml4IGNyZWF0aW9uIG9mIEpOREkgUmVhbG0gaW4gYWRtaW4gYXBwbGljYXRpb24uIFBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgVGVycnkgWmhvdS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MDQ4PC9idWc+OiBGaXggbWVtb3J5IGxlYWsgYXNzb2FjaWF0ZWQgd2l0aCB1c2Ugb2YgZXhwcmVzc2lvbgogICAgICAgIGxhbmd1YWdlIGluIEpTUHMuIFBhdGNoIHByb3ZpZGVkIGJ5IFRhcmFzIFRpZWxrZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTU3MjwvYnVnPjogSW1wcm92ZW1lbnRzIHRvIENvbXByZXNzaW9uRmlsdGVyIGV4YW1wbGUgcHJvdmlkZWQgYnkKICAgICAgICBFcmljIEhlZHN0cvZtLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDA1MDc8L2J1Zz46IFVwZGF0ZSBob3N0LW1hbmFnZXIgYW5kIHNlcnZsZXQtZXhhbXBsZXMgd2ViLWFwcHMgdG8KICAgICAgICB1c2UgdGhlIHNlcnZsZXQgMi40IHhzZC4gUGF0Y2ggcHJvdmlkZWQgYnkgQ2hyaXMgSGFsc3RlYWQuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDU4MTwvYnVnPjogQWRkIGluZm9ybWF0aW9uIG9uIHRoZSB1c2Ugb2YgYSBzeW1ibG9pYyBsaW5rIGFzIHRoZQogICAgICAgIGRvY0Jhc2UgZm9yIGEgQ29udGV4dCB0byB0aGUgQ29udGV4dCBkb2N1bWVudGF0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA2MzM8L2J1Zz46IFJlbW92ZSByZWZlcmVuY2VzIHRvIHRoZSBEZWZhdWx0Q29udGV4dCBmcm9tIHRoZQogICAgICAgIGRvY3VtZW50YXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDY3NzwvYnVnPjogVXBkYXRlIFNTTCBkb2N1bWVudGF0aW9uIHRvIGluZGljYXRlIHRoYXQgUEtDUzExCiAgICAgICAga2V5c3RvcmVzIG1heSBiZSB1c2VkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA3MTQ8L2J1Zz46IEFkbWluIHdlYmFwcCBubyBsb25nZXIgcmVxdWlyZXMgYSB1c2VybmFtZSBmb3IgYQogICAgICAgIERhdGFTb3VyY2Ugc2luY2UgaXQgaXMgbm90IHJlcXVpcmVkIGluIGFsbCBjYXNlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNzIwPC9idWc+OiBGaXggZXhjZXB0aW9uIGluIGFkbWluIHdlYmFwcCB3aGVuIGFkZGluZyBhIGdyb3VwIHRvCiAgICAgICAgYSB1c2VyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA4NzQ8L2J1Zz46IENvcnJlY3QgbG9nNGogY29uZmlndXJhdGlvbiBpbiBkb2N1bWVudGF0aW9uIHdlYmFwcC4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBGcmFuY2sgQm9yZWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDk5OTwvYnVnPjogQWRkIHRydXN0IHN0b3JlIGNvbmZpZ3VyYXRpb24gZm9yIFNTTCBjb25uZWN0b3JzIHRvCiAgICAgICAgdGhlIGFkbWluIHdlYmFwcC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDUxPC9idWc+OiBBZGQgaW5mb3JtYXRpb24gb24ga2V5c3RvcmUgYWxpYXNlcyBhbmQgY2FzZQogICAgICAgIHNlbnNpdGl2aXR5IHRvIFNTTCBIT1ctVE8uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTE4MjwvYnVnPjogVXBkYXRlIHRoZSBKYXNwZXIgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGNsYXNzcGF0aAogICAgICAgIGF0dHJpYnV0ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNDkzPC9idWc+OiBGaXggaGFuZGxpbmcgb2YgQVBSIGNvbm5lY3RvcnMgaW4gQWRtaW4gd2ViYXBwLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTUxMjwvYnVnPjogVmVyc2lvbiBudW1iZXIgd2FzIG5vdCBpbnNlcnRlZCBpbiByZWxlYXNlIG5vdGVzLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDI1NzwvYnVnPjogVXBkYXRlIE1hbmFnZXIgd2ViYXBwIGhvd3RvIG9uIHJlbW90ZSBkZXBsb3ltZW50IHRvIHJlZmxlY3QKICAgICAgICBuZWVkIGZvciBleHBsaWNpdCBwYXRoIGluIG9uZSBzcGVjaWZpYyB1c2UtY2FzZS4gIFRoYW5rcyB0byBWZW5rYXRlc2ggSmF5YXJhbWFuLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDAxNjA8L2J1Zz46IGFkZCByZWZlcmVuY2UgdG8gdGhlIEZpbHRlciBwcm9wb3NlZCBpbiB0aGlzIEJ1Z3ppbGxhIGl0ZW0gdG8gdGhlIFdlYmRhdlNlcnZsZXQuCiAgICAgICAgV2hpbGUgYXQgaXQsIGdpdmUgdGhlIFdlYmRhdlNlcnZsZXQgc29tZSBsb25nLW92ZXJkdWUgVExDIGJ5IGNsZWFuaW5nIHVwIHNvbWUgb2YgdGhlIG9sZCBkYXRhCiAgICAgICAgc3RydWN0dXJlcyBpbiBmYXZvciBvZiBtb2Rlcm4gKGJ1dCBzdGlsbCBKREsgMS40LWNvbXBsaWFudCkgaW50ZXJmYWNlcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGRvY3M+CiAgICAgICAgQWRkIGEgdmlydHVhbCBob3N0aW5nIGhvdy10byBjb250cmlidXRlZCBieSBIYXNzYW4gU2Nocm9lZGVyLiAobWFya3QpCiAgICAgIDwvZG9jcz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIEFkZCBjbHVzdGVyZWQgU1NPIGNvZGUgYW5kIGJhY2twb3J0IGZlYXR1cmUgZnJvbSBUb21jYXQgNi4wLngsCiAgICAgICAgc3VibWl0dGVkIGJ5IEZhYmllbiBDYXJyaW9uIChwZXJvKQogICAgICA8L2FkZD4gICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGJldHRlciByZWNvdmVyeSBhdCBGYXN0QXN5bmNRdWV1ZVNlbmRlci4gTWFkZSB0aGUgc3RhcnRlZ3kgbW9yZSByb2J1c3QgZm9yIHRlbXBvcmFyeSBjb25uZWN0aW9uIHByb2JsZW1zIChwZXJvKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gICAKPC9zZWN0aW9uPgoKCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjAgKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA2LTA5LTI4Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBsb2dpYyBlcnJvciBpbiBVc2VyRGF0YmFzZVJlYWxtLmdldHByaW5jaXBhbCgpIHRoYXQgY2F1c2VkIHVzZXIKICAgICAgICByb2xlcyBhc3NpZ25lZCB2aWEgZ3JvdXBzIHRvIGJlIGlnbm9yZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDUxODwvYnVnPjogVXNlIGNvcnJlY3QgbWVzc2FnZSB3aGVuIGEgUnVudGltZUV4Y2VwdGlvbiBpcwogICAgICAgIHRocm93biBmcm9tIHRoZSByZXF1ZXN0SW5pdGlhbGl6ZWQgb3IgcmVxdWVzdERlc3Ryb3llZCBtZXRob2Qgb2YKICAgICAgICBhIGxpc3RlbmVyIHRoYXQgaW1wbGVtZW50cyBTZXJ2bGV0UmVxdWVzdExpc3RlbmVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxODA0PC9idWc+OiBVbm5lc3RlZCB0YWdzIHdpdGhpbiBhIHRhZyBmaWxlIGFyZSBub3cgY29uZmlndXJlZAogICAgICAgIHdpdGggdGhlIFRhZyByZXByZXNlbnRlZCBieSB0aGUgY29udGFpbmluZyB0YWcgZmlsZSBhcyB0aGVpciBwYXJlbnQKICAgICAgICB0YWcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzM1NjwvYnVnPjogVGFnIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluZWQgJCBmb2xsb3dlZCBieSAxIG9yCiAgICAgICAgbW9yZSBub24tc3BlY2lhbCBjaGFyYWN0ZXJzIGFuZCB0aGVuIGEgeyBjaGFyYWN0ZXIgY2F1c2VkIGFuCiAgICAgICAgZXhjZXB0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM0MDc8L2J1Zz46IFRoZSBzdHJpbmcgXCQgaW4gdGVtcGxhdGUgdGV4dCB3YXMgcmVkdWNlZCB0byAkCiAgICAgICAgd2hlbiB0aGUgaXNFTElnbm9yZWQgcGFnZSBkaXJlY3RpdmUgd2FzIHNldCB0byB0cnVlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ1MDk8L2J1Zz46IFRhZyBuYW1lcyBtYXkgbm93IHVzZSB0aGUgZnVsbCByYW5nZSBvZgogICAgICAgIGNoYXJhY3RlcnMgcGVybWl0dGVkIGJ5IHhzZDpubXRva2VuLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAgIAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0Mzk5PC9idWc+OiBEaXNhYmxlIHVuZGVwbG95IGZvciBhcHBsaWNhdGlvbnMgdGhhdCBoYXZlIG5vdAogICAgICAgIGJlZW4gZGVwbG95ZWQgc3VjaCBhcyB0aG9zZSBkZWZpbmVkIGluIHNlcnZlci54bWwgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCjwvc2VjdGlvbj4KCgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjE5IChmaGFuaWspIiBydGV4dD0ibm90IHJlbGVhc2VkIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgIEFkZCBtdWx0aSBhdHRyaWJ1dGUgc2V0dGluZyB0byBqbXg6c2V0IEpNWCByZW1vdGUgYW50IHRhc2suCiAgICAgICAgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IERpZGllciBEb25zZXogKHBlcm8pCiAgICAgIDwvdXBkYXRlPiAgICAgIAogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMDc2MjwvYnVnPjogUmUtZml4IHRoaXMgYnVnIHRoYXQgd2FzIHJlLWludHJvZHVjZWQgYnkgdGhlIGZpeAogICAgICAgIHRvIDxidWc+MzcyNjQ8L2J1Zz4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzU4ODwvYnVnPjogRml4IEpOREkgcmVhbG0gY3JlYXRpb24gdGhyb3VnaCBKTVguIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFRlcnJ5WmhvdSAgKGZoYW5paykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTcwNDwvYnVnPjogVGhlIHVzZSBvZiBjdXN0b20gY2xhc3Nsb2FkZXJzIGZhaWxlZCB3aGVuIHRoZSBjb250ZXh0CiAgICAgICAgd2FzIHNwZWNpZmllZCBpbiBzZXJ2ZXIueG1sLiBDb3JyZWN0aW9uIG9mIHRoZSBmYXVsdCB3aWxsIHJlcXVpcmUgc2V0dGluZwogICAgICAgIHRoZSBuZXcgbG9hZGVyIGF0dHJpYnV0ZSB1c2VTeXN0ZW1DbGFzc0xvYWRlckFzUGFyZW50IHRvIGZhbHNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNDE4PC9idWc+OiBBUFIgRW5kcG9pbnQgc29ja2V0IGV2YWx1YXRpb24gKHJlbW0pCiAgICAgIDwvZml4PgogIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEzMzk8L2J1Zz46IEFkbWluIGFwcCB0aHJldyBleGNlcHRpb25zIGlmIGEgbmFtZSBvdGhlciB0aGFuIENhdGFsaW5hCiAgICAgICAgd2FzIGNvbmZpZ3VyZWQgZm9yIHRoZSBFbmdpbmUuIFBhdGNoIGJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBmcm9tIEFtaWxhCiAgICAgICAgU3VyaWFyYWNoY2hpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKPC9zZWN0aW9uPgoKCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTggKHlvYXZzKSIgcnRleHQ9Im5vdCByZWxlYXNlZCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIENoYW5nZSBNRDUgcmVsZWFzZSBzaWduYXR1cmUgZmlsZXMgdG8gaGF2ZSBtZDUgKGxvd2VyY2FzZSkgZXh0ZW5zaW9uIGluc3RlYWQgb2YgTUQ1ICh1cHBlcmNhc2UpLAogICAgICAgIGFzIHN1Z2dlc3RlZCBieSBIZW5rIFBlbm5pbmcgYW5kIHNwZWNpZmllZCBpbiB0aGUKICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L3JlbGVhc2UtcHVibGlzaGluZy5odG1sIj5BU0YgcmVsZWFzZSBwdWJsaXNoaW5nIGd1aWRlbGluZXM8L2E+LiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRoYXQgTWFuYWdlckJhc2UgaW5jcmVtZW50IGV4cGlyZVNlc3Npb25zIGNvdW50ZXIgYXQgYmFja2dyb3VuZCB0YXNrIHR3byB0aW1lcy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk0MDY8L2J1Zz46IEZpeCB0aGF0IFN0YW5kYXJkU2Vzc2lvbiNnZXRMYXN0QWNjZXNzZWRUaW1lKCkgdXNlcyBjb3JyZWN0IGV4Y2VwdGlvbiBtZXNzYWdlLAogICAgICAgIHN1Z2dlc3RlZCBieSBUYWtheW9zaGkgS2ltdXJhLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zOTY2MTwvYnVnPjogQWRkIGRvY3VtZW50YXRpb24gb24gSlVMSSBGaWxlSGFuZGxlciBwcm9wZXJ0aWVzLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+Mzk2NTc8L2J1Zz46IFdhcm4gKGFuZCBkb24ndCBsb2FkIGphcikgaWYgSlNQIEFQSSBpcyBpbiB3ZWJhcHAgY2xhc3Nsb2FkZXIgcmVwb3NpdG9yeSwgYXMgc3VnZ2VzdGVkIGJ5CiAgICAgICAgICBEYXZpZCBTYW5jaGV6IENyZXNwaWxsby4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM5Njc0PC9idWc+OiBTdXBwb3J0IEpSb2NraXQgSlZNIGluIHNlcnZpY2UuYmF0IHNjcmlwdCwgYXMgc3VnZ2VzdGVkIGJ5IGxpem9uZ2JvLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk3MTE8L2J1Zz46IFVwZGF0ZSBMb2FkZXIgY29uZmlndXJhdGlvbiBkb2N1bWVudGF0aW9uLCBhcyBzdWdnZXN0ZWQgYnkgU3RlcGhhbmUgQmFpbGxpZXouICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTg2NTwvYnVnPjogQWRkIE9wZW4gT2ZmaWNlIG1pbWUgdHlwZXMgdG8gY29uZi93ZWIueG1sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg4MTQ8L2J1Zz46IEFsaWduIENHSSBoYW5kbGluZyBvZiBpbmRleGVkIHF1ZXJpZXMsIHBhcmFtZXRlcnMgYW5kCiAgICAgICAgUE9TVCBjb250ZW50IHdpdGggb3RoZXIgQ0dJIHByb3ZpZGVycy4gVGhlIGNoYW5nZXM6IG9ubHkgcHJvdmlkZQogICAgICAgIHBhcmFtZXRlcnMgb24gdGhlIGNvbW1hbmQgbGluZSBmb3IgaW5kZXhlZCBxdWVyaWVzOyBhbHdheXMgcHJvdmlkZSB0aGUKICAgICAgICBxdWVyeSBzdHJpbmcgdmlhIHRoZSBRVUVSWV9TVFJJTkcgZW52aXJvbm1lbnQgdmFyaWFibGU7IHByb3ZpZGUgUE9TVAogICAgICAgIGNvbnRlbnQgdW5tb2RpZmllZCB0byBzdGRpbjsgYW5kIG5ldmVyIGNhbGwgZ2V0UGFyYW1ldGVycygpLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0ODAxPC9idWc+OiBQYXJ0aWFsIGZpeCB0aGF0IGFkZHMgaGFuZGxpbmcgb2YgSU9FeGNlcHRpb25zIGR1cmluZwogICAgICAgIGxvbmcgcnVubmluZyBDR0kgcmVxdWVzdHMuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgQ2hyaXMgRGF2ZXkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTY4OTwvYnVnPjogQWxsb3cgc2luZ2xlIHF1b3RlcyAoJykgYW5kIGJhY2t0aWNrcyAoYCkgYXMgd2VsbCBhcwogICAgICAgIGRvdWJsZSBxdW90ZXMgKCIpIHRvIGJlIHVzZWQgdG8gZGVsaW1pdCBTU0kgYXR0cmlidXRlIHZhbHVlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMDUzPC9idWc+OiBDb3JyZWN0IGFwcGxpY2F0aW9uIGRlcGxveW1lbnQgZG9jdW1lbnRhdGlvbiBzbyBpdAogICAgICAgIGFncmVlcyB3aXRoIHRoZSBjbGFzc2xvYWRlciBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyBzaGFyZWQgbGliIGFuZAogICAgICAgIENBVEFMSU5BX0JBU0UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTU5MjwvYnVnPjogU3RvcCBIRUFEIHJlcXVlc3RzIGZvciByZXNvdXJjZXMgaGFuZGxlZCBieSBTU0kKICAgICAgICBzZXJ2bGV0IG9yIGZpbHRlciBnZW5lcmF0aW5nIHN0YWNrIHRyYWNlcyBpbiB0aGUgbG9ncy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGhhbmRsaW5nIG9mIHRoZSAnOycgY2hhcmFjdGVyIGluIHRoZSBVUkwgc28gdGhhdCBpdCBpcyBub3cKICAgICAgICBhbGxvd2VkIGlmIHByb3Blcmx5ICV4eCBlbmNvZGVkLiAocmVtbSkKICAgICAgPC9maXg+CiAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggQVBSIGVuZHBvaW50IHNvIHRoYXQgdGhlIGFjY2VwdG9yIHRocmVhZCBub3cgb25seSBwcm9jZXNzZXMgc29ja2V0CiAgICAgICAgYWNjZXB0cy4gKHJlbW0pCiAgICAgIDwvZml4PgogIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk4MTM8L2J1Zz46IENvcnJlY3QgaGFuZGxpbmcgb2YgbmV3IGxpbmUgY2hhcmFjdGVycyBpbiBKTVgKICAgICAgICBhdHRyaWJ1dGVzLiBQYXRjaCBwcm92aWRlZCBieSBSIEJyYW1sZXkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzc4MTwvYnVnPjogTWFrZSBzdXJlIHRoYXQgU3RvcmVDb25maWcgc2F2ZSBleHRlcm5hbCByZWZlcmVuY2VkIHdhciBmaWxlcyBhdCBjb250ZXh0LnhtbCBjb3JyZWN0LiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTc5MTwvYnVnPjogVXNlIGNvcnJlY3QgZGVmYXVsdCBmb3IgdXNlTmFtaW5nIHdpdGhpbiBhIENvbnRleHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29ycmVjdGx5IGdlbmVyYXRlIHJlLWRpcmVjdCBmb3IgYWRtaW4gYXBwIGluZGV4LmpzcCB0byBwcmV2ZW50IGxvZ2luIHBhZ2UKICAgICAgICBiZWluZyBkaXNwbGF5ZWQgdHdpY2Ugd2hlbiBjb29raWVzIGFyZSBkaXNhYmxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk0NzM8L2J1Zz46IFNlc3Npb24gdGltZW91dCBtdWNoIHNob3J0ZXIgdGhhbiBzZXR0aW5nCiAgICAgICAgIGF0IHdlYi54bWwgYXQgY2x1c3RlciBlbnZpcm9ubWVudCwgc3VnZ2VzdGVkIGJ5IEppbiBKaWFuZy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAgIAo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjE3ICh5b2F2cykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA2LTA0LTI3Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIFhlcmNlcyAyLjguMCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIHRjbmF0aXZlIDEuMS4zIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBTaW5nbGVTaWduT24gVmFsdmUgYW5kIGFkZCBTZXNzaW9uLmdldExhc3RBY2Nlc3NUaW1lSW50ZXJuYWwoKSB3aXRob3V0IHNlc3Npb24gaW52YWxpZGF0aW9uIHRlc3QuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4ODE0PC9idWc+OiBDR0lTZXJ2bGV0IGNvcnJlY3RseSBoYW5kbGVzIFNoaWZ0X0pJUyBvdXRwdXQuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBtaXNzaW5nIFJFUVVFU1RfVVJJIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIENHSSBlbnZpcm9ubWVudC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI3NjE3PC9idWc+OiBTeW5jIGV4aXN0aW5nIG1pbWUgdHlwZXMgd2l0aCBodHRwZC4gKGtlaXRoKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NzYxPC9idWc+OiBIYW5kbGUgcmVsYXRpdmUgc3ltbGlua3MgdG8gc2hlbGwgc2NyaXB0cyBhcyBzdWdnZXN0ZWQgYnkgQWRhbSBNdXJyYXkgKGtlaXRoKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Nzk1PC9idWc+OiBBc3NvY2lhdGUgbW9yZSBjbG9zZWx5IGJpbmQgd2l0aCBhIGZpbmFsbHkgdW5iaW5kIGluIFN0YW5kYXJkQ29udGV4dCBzdGFydCBhbmQKICAgICAgICBzdG9wLCBiYXNlZCBvbiBhIHBhdGNoIGJ5IERhcnJ5bCBNaWxlcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSB1bmRlcGxveW1lbnQgcm9idXN0bmVzcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRXhwYW5kIHRoZSBzZW1hcGhvcmUgdmFsdmUgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkwMjE8L2J1Zz46IEFkZCBiYWNrIHN1cHBvcnQgZm9yIGF1dGhlbnRpY2F0aW9uIG9ubHksIHN1Ym1pdHRlZCBieSBTY290dCBTdGFyayAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmV2ZXJ0IGZpeCBmb3IgPGJ1Zz4zODExMzwvYnVnPiwgd2hpY2ggZG9lcyBub3Qgc2VlbSBhIGxlZ2l0aW1hdGUgcHJvYmxlbSwgYW5kIGNhdXNlcwogICAgICAgIHJlZ3Jlc3Npb25zIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb3JyZWN0bHkgcmVzZXQgbGlzdGVuZXJzIHdoZW4gcmVsb2FkaW5nIGEgd2ViYXBwIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTk0PC9idWc+OiBEb24ndCBmYWlsIHNpbGVudGx5IGlmIC1mb3JjZSBpcyB1c2VkIHdpdGhvdXQgQ0FUQUxJTkFfUElELCBzdWJtaXR0ZWQgYnkgTWF0dGhldyBCdWNrZXR0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxNTQ8L2J1Zz46IEF2b2lkIE5QRSBpbiBGaWxlRGlyQ29udGV4dCBhZnRlciB3ZWJhcHAgdW5kZXBsb3ksIHJlcG9ydGVkIGJ5IEphbWllIE1haGVyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgyMTc8L2J1Zz46IEFkZGVkIGNhdXRpb25hcnkgbm90ZSBhYm91dCBrZXlzdG9yZSBwYXNzd29yZCB0byBTU0wgSG93VG8sIGFzIHN1Z2dlc3RlZCBieSBSYWxmIEhhdXNlci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MjYyPC9idWc+OiBDbGVhcmVkIGFtYmlndWl0eSBpbiBob3N0IGRvY3VtZW50YXRpb24sIGFzIHN1Z2dlc3RlZCBieSBKZWZmcmV5IEJlbm5ldHQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODQ3NjwvYnVnPjogTW9kaWZpZWQgY2hlY2sgZm9yIG51bGwgVExEIHN0cmVhbSwgYXMgc3VnZ2VzdGVkIGJ5IEZhYnJpemlvIEdpdXN0aW5hLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgwNTI8L2J1Zz46IFVzZSA8aT51c2VyTmFtZTwvaT4gYXMgdXNlckZpZWxkIGRlZmF1bHQuIFVzZXIgaXMgYXQgbWFueSBkYXRhYmFzZXMgYSAKICAgICAgICByZXNlcnZlZCBrZXl3b3JkLCBhcyBzdWdnZXN0ZWQgYnkgcmlrLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGhhbmRsaW5nIG9mIG5vbiBtYXRjaGluZyBpZi1yYW5nZSBoZWFkZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc4NDg8L2J1Zz46IE9ubHkgb3V0cHV0IGNhdGFsaW5hLnNoIGRpYWdub3N0aWMgbWVzc2FnZXMgaWYgd2UgaGF2ZSBhIFRUWSwgc3VibWl0dGVkIGJ5CiAgICAgICAgICBEYXZpZCBTaGF3LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg1OTY8L2J1Zz46IE1pbm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBpbiBEYXRhU291cmNlUmVhbG0sIHN1Z2dlc3RlZCBieSBTYW5keQogICAgICAgICAgTWNBcnRodXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgTWFrZSB0aGUgZGVmYXVsdCBjaXBoZXIgc3VpdGVzIGF2YWlsYWJsZSBmb3IgU1NMIHRoZSBzYW1lIGFzIHRoZSBzZXQgb2YgY2lwaGVyCiAgICAgICAgc3VpdGVzIGVuYWJsZWQgYnkgZGVmYXVsdCByYXRoZXIgdGhhbiB0aGUgc2V0IG9mIGFsbCBjaXBoZXIgc3VpdGVzLiBUaGlzIHByZXZlbnRzCiAgICAgICAgY2lwaGVycyBzdWl0ZXMgdGhhdCBkbyBub3QgcHJvdmlkZSBjb25maWRlbnRpYWxpdHkgcHJvdGVjdGlvbiBhbmQvb3Igc2VydmVyCiAgICAgICAgYXV0aGVudGljYXRpb24gYmVpbmcgdXNlZCBieSBkZWZhdWx0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIE1vdmUgQXByRW5kcG9pbnQuZ2V0V29ya2VyVGhyZWFkIGluc2lkZSB0aGUgdHJ5L2NhdGNoIGZvciB0aGUgbWFpbiBhY2NlcHQgbG9vcCwgdG8gZ3VhcmQKICAgICAgICBhYm91dCBhbiBPT00gKHdoaWNoIHdvdWxkIG1vc3QgbGlrZWx5IGRvb20gdGhlIHNlcnZlciBhbnl3YXkpIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBcyBleGhpYml0ZWQgaW4gdGhlIEFTRidzIEpJUkEgaW5zdGFsbGF0aW9uLCBpdCBzZWVtcyBFSU5UUiBpcyBhIHN0YXR1cyBjb2RlIHRoYXQgc2hvdWxkCiAgICAgICAgYmUgaWdub3JlZCBhcyBhIHJlc3VsdCB0byBhIHBvbGwgY2FsbCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTmV3IEFQUiBjb25uZWN0b3JzIGRlZmF1bHRzIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgbXVsdGlwbGUgdGhyZWFkcyBmb3IgQVBSIHBvbGxlcnMsIHRvIHdvcmsgYXJvdW5kIFdpbmRvd3MgbGltaXRhdGlvbnMgKHBlcmZvcm1hbmNlIGRlZ3JhZGVzCiAgICAgICAgdmVyeSByYXBpZGx5IGlmIHBvbGxlciBzaXplcyBvdmVyIDEwMjQgYXJlIGFsbG93ZWQgd2hlbiBjb21waWxpbmcgQVBSKSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTmV3IG1vZGVzIGZvciBmaXJzdFJlYWRUaW1lb3V0ICgtMSBiZWluZyB0aGUgbmV3IGRlZmF1bHQpIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZXBsYWNlIGphdmEudXRpbC5TdGFjayB1c2FnZSB3aXRoIGEgc2ltcGxlIGFycmF5IGluIHRoZSBBUFIgZW5kcG9pbnQgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIHRjbmF0aXZlIGpuaWxpYi5jIG5vdyByZXBvcnQgY29ycmVjdCBjb21waWxlIGZsYWdzIGZvciBydW50aW1lIAogICAgICAgIExpYnJhcnkuamF2YSBjaGVja3MgbGlrZSBzZW5kZmlsZSBzdXBwb3J0IGRlZmF1bHQgdHJ1ZS9mYWxzZSAocGVybykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODAxNTwvYnVnPjogUmVtb3ZlIG1pc2xlYWRpbmcgd2FybmluZ3MgbG9nZ2VkIGluIFRhZ0xpYnJhcnlJbmZvSW1wbCwgYXMgc3VnZ2VzdGVkIGJ5IEFuZHJldyBIb3VnaHRvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Mzc2PC9idWc+OiBNYWtlIHN1cmUgYm9keSBjb250ZW50IHN0YWNrIGlzIGFsd2F5cyBwcm9wZXJseSBhbGlnbmVkLCBhcyBzdWJtaXR0ZWQgYnkgVG9ueSBEZWlnaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb21wYXRpYmlsaXR5IHdpdGggSkRUIDMuMiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkyOTI8L2J1Zz46IFVwZGF0ZSBjYXRhbGluYS5wb2xpY3kgYXQgZGVtbyBiYWxhbmNlciBhcHAuIEZpeCBwcm92aWRlZCBieSBLZXJyeSBTYWluc2J1cnkgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY4NDc8L2J1Zz46IEZpeGVkIHRoZSBtYW5hZ2VyIGFwcCBjb3B5IGZ1bmN0aW9uIHRvIG5vdCBvdmVyd3JpdGUgZmlsZUEgd2l0aCBmaWxlQiB3aGVuIGZpbGVBPT1maWxlQi4KICAgICAgICBGaXggcHJvdmlkZWQgYnkgSGFyb29uIFJhZmlxdWUgKGZoYW5paykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODUwODwvYnVnPjogU2V2ZXJhbCBlbmhhbmNlbWVudHMgdG8gSG9zdCBNYW5hZ2VyIGFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgY29uZmlndXJhYmxlCiAgICAgICAgICBtYW5hZ2VyIGFwcCBzdXBwb3J0IGFuZCBkaWFsb2cgYm94IGVuaGFuY2VtZW50cy4gIFRoYW5rcyB0byBHZW9yZ2UgU2V4dG9uIGZvciB0aGUgcGF0Y2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzc4MTwvYnVnPjogTWFrZSBzdXJlIGNvbnRleHQgY29uZmlnIGZpbGUgaXMgd3JpdGVhYmxlLCBzdWdnZXN0ZWQgYnkgR2VvcmdlIFNleHRvbi4gKHlvYXZzLHBlcm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGF0IFBvb2xlZFNvY2tldFNlbmRlciB0aGUgam14IGF0dHJpYnV0ZXMgaW5Qb29sU2l6ZSBhbmQgaW5Vc2VQb29sU2l6ZS4gKHBlcm8pCiAgICAgICA8L3VwZGF0ZT4KICAgICAgIDxmaXg+CiAgICAgICAgIERlbHRhTWFuYWdlciBzZXQgc2Vzc2lvbiBjcmVhdGlvblRpbWUgYXQgYmFja3VwIG5vZGUuIChwZXJvKQogICAgICAgPC9maXg+CiAgICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBKdm1Sb3V0ZUJpbmRlclZhbHZlIGRvY3VtZW50YXRpb24gYXQgY2x1c3Rlci1ob3d0by54bWwuIChwZXJvKQogICAgICAgPC91cGRhdGU+CiAgICAgICA8YWRkPgogICAgICAgIEp2bVJvdXRlQmluZGVyVmFsdmUgbm93IHN1cHBvcnRzIG5vdyBzZXNzaW9uaWQncyBmcm9tIHJlcXVlc3QgYW5kIGNvb2tpZXMuCiAgICAgICAgVGhhbmtzIHRvIEJyaWFuIFN0YW5zYmVycnkgZm9yIHJlcG9ydGluZyBpdC4gKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgIDxmaXg+CiAgICAgIAk8YnVnPjM4Nzc5PC9idWc+IEZpeCB3cm9uZyBqbXggbWVzc2FnZSBhcmcgYXQgU2ltcGxlVGNwQ2x1c3RlcgogICAgICAgICAgYXQgby5hLmMuY2x1c3Rlci50Y3AubWJlYW5zLWRlc2NyaXB0b3JzLnhtbCwgc3VibWl0dGVkIGJ5IFBhd2VsIFR1Y2hvbHNraSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRoYXQgbm90IGFmdGVyIGV2ZXJ5ICJLZWVwIEFsaXZlIFNvY2tldCBjbG9zZSIgYSBsb2cgd2FybmluZyBpcyBnZW5lcmF0ZWQgYXQgVGNwUmVwbGljYXRpb25UaHJlYWQgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkxNzg8L2J1Zz46IE5vdyBST09ULndhciBkZXBsb3ltZW50IHdpdGggRmFybVdhckRlcGxveWVyIGlzIHBvc3NpYmxlIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZXBsaWNhdGlvblZhbHZlIG5vdCBzZXQgcHJpbWFyeVNlc3Npb24gZmxhZyB3aGVuIGFsbCBiYWNrdXAgbm9kZXMgZ29uZSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIERlbHRhU2Vzc2lvbi5nZXRMYXN0QWNjZXNzVGltZUludGVybmFsKCkgd2l0aG91dCBzZXNzaW9uIGludmFsaWRhdGlvbiB0ZXN0LiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiA8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjE2ICh5b2F2cykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA2LTAzLTE1Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlZCAvIGVuaGFuY2VkIGRvY3MgdG8gcmVtb3ZlIG9sZCBGSVhNRSByZWZlcmVuY2VzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlcXVpcmVkIHRjbmF0aXZlIGxpYnJhcnkgdmVyc2lvbiB1cGdyYWRlZCB0byAxLjEuMiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEVjbGlwc2UgSkRUIDMuMS4yIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjM5NTA8L2J1Zz46IENvbnRleHQubGlzdEJpbmRpbmdzKCkgc2hvdWxkIHJldHVybiBvYmplY3RzIG5vdAogICAgICAgIHJlZmVyZW5jZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODEyNDwvYnVnPjogQWRkIHN1cHBvcnQgZm9yIFdpbmRvd3MgMjB4eCB3aGVuIHJlYWRpbmcgZW52aXJvbm1lbnQKICAgICAgICB2YXJpYWJsZXMgaW4gQ0dJU2VydmxldC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI5MjE0PC9idWc+OiByZXNwb25zZS5jb250YWluc0hlYWRlcigpIG5vdyByZXR1cm5zIHRoZSBjb3JyZWN0CiAgICAgICAgdmFsdWUgZm9yIENvbnRlbnQtVHlwZSBhbmQgQ29udGVudC1MZW5ndGggaGVhZGVycy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBbGxvdyB1c2luZyBhIGN1c3RvbSBDb250ZXh0Q29uZmlnIHdoZW4gdXNpbmcgSk1YIGVtYmVkZGluZyBvZiBUb21jYXQsIGFzCiAgICAgICAgaXMgZG9uZSBieSB0aGUgcmVndWxhciBkZXBsb3llci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBKTVggc2VydmVySW5mbyBhdHRyaWJ1dGUgdG8gU2VydmVyIE1CZWFuLCB0aGF0IHdlIGNhbiBpZGVudGlmeQogICAgICAgIHRoZSB0b21jYXQgcmVsZWFzZSByZW1vdGVseS4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIEZpeCB0aGUgSk1YIE1CZWFuRmFjdG9yeS5jcmVhdGVTdGFuZGFyZEhvc3Qgc2lnbmF0dXJlIGF0IG1iZWFuLWRlc2NyaXB0b3JzLnhtbCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHNvbWUgY2FzZXMgKGZvciBleGFtcGxlIHdpdGggcmVhbG0gdXNhZ2UpIHdoZXJlIHRoZSBjb250YWluZXIgbG9nZ2VyIGZvciBhIGNvbnRleHQKICAgICAgICB3b3VsZCBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlIHdyb25nIGNsYXNzbG9hZGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBIdHRwU2Vzc2lvbi5nZXRJZCB3aWxsIG5vIGxvbmdlciB0aHJvdyBhbiBJU0Ugd2hlbiB0aGUgc2Vzc2lvbiBpcyBpbnZhbGlkIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgTW9yZSBkZXRhaWxlZCBlcnJvcnMgZm9yIG5hbWluZyBpc3N1ZXMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8ZG9jcz4KICAgICAgICBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFRyYW5zYWN0aW9uIGVsZW1lbnQgKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgZ2V0Q29udGV4dFBhdGggdG8gdGhlIGludGVybmFsIHNlcnZsZXQgY29udGV4dCBpbXBsZW1lbnRhdGlvbiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgT25seSBudWxsIGluc3RhbmNlcyBsb2FkZWQgYnkgdGhlIHdlYmFwcCBDTCwgc3VibWl0dGVkIGJ5IE1hdHQgSmVuc2VuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBEZXBsb3kgZm9sZGVycyB3aGljaCBkb24ndCBoYXZlIGEgV0VCLUlORiwgYW5kIHJldHVybiBhbiBlcnJvciB3aGVuIGEgY29udGV4dAogICAgICAgIGZpbGUgZG9lcyBub3QgY29udGFpbiBhIENvbnRleHQgZWxlbWVudCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODY1MzwvYnVnPjogRml4IHByb3BlcnR5IG5hbWUgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFNsaWdodGx5IG1vZGlmeSB0aGUgdGltaW5nIG9mIHRoZSBtYW5hZ2VyIHN0YXJ0LCBzbyB0aGF0IGl0IGlzIG5vdCBzdGFydGVkIGJ5IGEKICAgICAgICBsaXN0ZW5lciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVmcmVzaCBsb2dnZXJzIHVzZWQgYnkgdGhlIGRpZ2VzdGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBVc2Ugc2VuZEVycm9yIGluc3RlYWQgb2Ygc2V0U3RhdHVzIHRvIHNlbmQgdGhlIDQwMSBjb2RlLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRG9uJ3QgYXBwZW5kIHRoZSBwb3J0IGZvciBhbiBTU0wgcmVkaXJlY3QgaWYgaXQgaXMgdGhlIGRlZmF1bHQgcG9ydC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIExvZyBlcnJvcnMgd2hlbiBzZXR0aW5nIHNvY2tldCBvcHRpb25zIHdpdGggZGVidWcgcHJpb3JpdHkgcmF0aGVyIHRoYW4gZXJyb3IuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTAwPC9idWc+OiBNYWtlIGNlcnRhaW4gdGhhdCBhIHZhbGlkIEhvc3QgbmFtZSBpcyBzZXQsIG9yIG5vbmUgYXQgYWxsLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODQ4NTwvYnVnPjogRml4IG1pbm9yIHJlZ3Jlc3Npb24gc2V0dGluZyBjb25uZWN0aW9uIHRpbWVvdXQgKGFzIHdlbGwgYXMgbGluZ2VyIGFuZAogICAgICAgIG5vIGRlbGF5KSB3aGVyZSB0aGUgZGVmYXVsdCB2YWx1ZSB3YXMgYWx3YXlzIHVzZWQgd2hlbiB1c2luZyB0aGUgcmVndWxhciAKICAgICAgICBIVFRQIGNvbm5lY3RvciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUGFzcyBhbG9uZyBtb3JlIG9mIHRoZSBTU0wgcmVsYXRlZCBmaWVsZHMgdG8gT3BlblNTTCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ2hhckNodW5rIG5vdyBpbXBsZW1lbnRzIENoYXJTZXF1ZW5jZSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNvZGluZyBlcnJvciB3aGljaCBjb3VsZCBjYXVzZSBhIHJhcmUgY3Jhc2ggd2hlbiBhIHBvbGxlciBlcnJvciBvY2N1cnJlZCBhbmQgc29ja2V0cwogICAgICAgIHdoZXJlIHBlbmRpbmcgYmVpbmcgYWRkZWQgdG8gdGhlIGtlZXBhbGl2ZSBwb2xsZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBwb3RlbnRpYWwgc3luYyBpc3N1ZXMgd2hlbiByZXN0YXJ0aW5nIGEgcG9sbGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBVcGRhdGUgQVBSIGVycm9yIHJlcG9ydHMsIGluY2x1ZGluZyB0aGUgZXJyb3IgY29kZXMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3MjY8L2J1Zz46IFJlbW92ZSBkdXBsaWNhdGUgcmVxdWVzdCBncm91cCBmaWVsZCBjYXVzaW5nIGJsYW5rIHN0YXRpc3RpY3MgZm9yIHRoZQogICAgICAgIEhUVFAgY29ubmVjdG9yIChyZW1tKSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGludmFsaWQgbGVuZ3RoIHVzZWQgYnkgc29tZSBBSlAgcGFja2V0cyBmb3IgdGhlIEFKUCBBUFIgY29ubmVjdG9yLCB3aGljaCBjb3VsZCBjYXVzZSAKICAgICAgICBjb3JydXB0aW9uLCBzdWJtaXR0ZWQgYnkgUnVkaWdlciBQbHVtIChqaW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgzNDY8L2J1Zz46IEZpeCBwcm9ibGVtcyB3aXRoIHJlcXVlc3QuZ2V0UmVhZGVyKCkucmVhZExpbmUoKS4gCiAgICAgICAgUGF0Y2ggYnkgUmFpbmVyIEp1bmcgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIExvY2FsIGFkZHJlc3MgcmV1c2UgZm9yIEFQUiBFbmRwb2ludHMgKHZpYSBBUFJfU09fUkVVU0VBRERSKSBub3cgZW5hYmxlZCAoamltKQogICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIERvbid0IHdyaXRlIG91dCB0aGUgc2h1dGRvd24gc2VjcmV0IGZpbGUgaWYgc2h1dGRvd24gaXMgZGlzYWJsZWQgKHRoZSBkZWZhdWx0KSAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IE5QRSB3aGVuIG5vIHNpbmsgaXMgc3VwcGxpZWQuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBUFIgRW5kcG9pbnRzIG5vdyBJUHY2IGF3YXJlIChqaW0pCiAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRG93bmdyYWRlICJSZXNwb25zZSBhbHJlYWR5IGNvbW1pdHRlZCIgbG9nZ2luZyBlbnRyeSB0byBERUJVRy4gKGJpbGxiYXJrZXIpCiAgICAgPC91cGRhdGU+CiAgICAgPGZpeD4KICAgICAgIDxidWc+MzgxMTM8L2J1Zz46IFJldHVybiB0aGUgZW1wdHkgU3RyaW5nIGZvciBhbiBlbXB0eSBxdWVyeS1zdHJpbmcgaW5zdGVhZCBvZiBudWxsLiAoYmlsbGJhcmtlcikKICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Mzg5PC9idWc+OiBTZXQgY29ycmVjdCBKRFQgQ29tcGlsZXIgb3B0aW9uIHRvIGphdmEgMS41IGNvbXBsaWFuY2UuIAogICAgICAgIFBhdGNoIGZyb20gT2xpdmllciBUaG9tYW5uIGFuZCBQYXVsIEhhbWVyIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgc29tZSB1c2VmdWwgaGludHMgdG8gamFzcGVyLWhvd3RvLiAocGVybykuCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg3NzY8L2J1Zz46IEZpeCBzb3VyY2UgZmlsZSBhdHRyaWJ1dGUsIHN1Ym1pdHRlZCBieSBPbGl2aWVyIFRob21hbm4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBVcGRhdGUgRGVsdGFNYW5hZ2VyIHNlc3Npb24gYWNjZXNzIHN0YXRzICAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRGVsdGFTZXNzaW9uIGdldElkIHdpbGwgbm8gbG9uZ2VyIHRocm93IGFuIElTRSB3aGVuIHRoZSBzZXNzaW9uIGlzIGludmFsaWQgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgICAgUmVzdXJyZWN0ZWQgdGhlICZxdW90O3N1c3BlY3QmcXVvdDsgcHJvcGVydHkgc28gdGhhdCB0aGUgbG9ncyBkb24ndCBmaWxsCiAgICAgICAgICB1cCB3aXRoIGVycm9ycyB3aGVuIG1lbWJlciBkaXNhcHBlYXJzIG9yIGEgY29ubmVjdGlvbiBpcyBsb3N0LiBPbmx5IHVzZWZ1bCBmb3IgcG9vbGVkIG1vZGUgKGZoYW5paykKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICA8YnVnPjM1NzEwPC9idWc+OiBBZGQgc2Vzc2lvbiByZXBsaWNhdGlvbiBmb3IgY3Jvc3MgY29udGV4dCBzZXNzaW9uIGNoYW5nZXMuCiAgICAgICBUaGUgcG9ydGxldCBhcGkgbmVlZCB0aGlzIHN1cHBvcnQsIHNlZSByZWZhY3RvcmVkIFJlcGxpY2F0aW9uVmFsdmUuIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZXBsaWNhdGlvblZhbHZlIHJlc2V0IERlbHRhU2Vzc2lvbiB3aGVuIGNsdXN0ZXIgbm9kZSBoYXMgbm8gYmFja3VwIG5vZGUuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBEYXRhU2VuZGVyIGNsb3NlIGNvbm5lY3Rpb24gYW5kIHRocm93IGV4Y2VwdGlvbiBhbHNvIGV2ZW4gaWYgd2FpdEZvckFjayBpcyBmYWxzZS4gIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBBY3RpdmUgY2x1c3RlciBqdW5pdCB0ZXN0IGFnYWluLiAocGVybykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBzb21lIFhTUyBpc3N1ZXMgaW4gdGhlIEpTUCBleGFtcGxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggbG9nb3MgaW4gdGhlIG1hbmFnZXIgd2ViYXBwIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xNSAoeW9hdnMpIiBydGV4dD0icmVsZWFzZWQgMjAwNi0wMS0yMSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIwODE8L2J1Zz46IFJlbW92ZSB0aGUgSkRLIHJlcXVpcmVtZW50IGZyb20gdGhlIFdpbjMyIHNjcmlwdHMuIChrZWl0aCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgIDxidWc+Mzc4NTI8L2J1Zz46IEZpeCByZWdyZXNzaW9uIHdoZXJlIHRoZSBtYWdpYyByb2xlICcqJyB3YXMgZGVueWluZyBhbGwgYWNjZXNzLiBQYXRjaCBieSB4cmNhdCAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICA8YnVnPjM3OTM0PC9idWc+OiBEb24ndCBhc2sgZm9yIGF1dGhlbnRpY2F0aW9uIGlmIGRlbnktZnJvbS1hbGwgaXMgaW4gZWZmZWN0LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4xNTU3MDwvYnVnPjogYXV0aC1jb25zdHJhaW50IG9mICogd2FzIGludGVycHJldHRlZCBhcyBhbGwKICAgICAgICBhdXRoZW50aWNhdGVkIHVzZXJzIHJhdGhlciB0aGFuIGFzIGFsbCByb2xlcyBkZWZpbmVkIGluIHdlYi54bWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICBSZW1vdmUgbGVmdG92ZXIgc3RhdGljIGxvZ2dlciB3aGljaCB3YXMgdXNlZCB0byBsb2cgYXBwbGljYXRpb24gbGV2ZWwgbWVzc2FnZXMgaW4KICAgICAgIEFwcGxpY2F0aW9uQ29udGV4dEZhY2FkZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODAxMjwvYnVnPjogV2hlcmUgYSBDR0kgc2NyaXB0IHNldHMgYSByZXNwb25zZSBjb2RlLCB1c2UgaXQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzg1NDwvYnVnPjogRXh0ZW5zaW9uLUxpc3QgY2hlY2tpbmcgd2FzIHRvbyBzdHJpY3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICBSZXBvcnQgYmluZGluZyBlcnJvcnMgaW4gdGhlIEFQUiBlbmRwb2ludCBhcyBzdHJpbmdzIHJhdGhlciB0aGFuIHBsYXRmb3JtIHNwZWNpZmljCiAgICAgICBzdGF0dXMgY29kZXMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgPGJ1Zz4zNzkzNDwvYnVnPjogRG9uJ3QgYXNrIGZvciBhdXRoZW50aWNhdGlvbiBpZiBkZW55LWZyb20tYWxsIGlzIGluIGVmZmVjdC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PjxidWc+MzgwNDc8L2J1Zz46IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgU2VydmxldCBhdHRlbXB0cyB0byByZWFkCiAgICAgICAgICAgICAgdGhlIFJlcXVlc3QgYm9keSBmcm9tIHRoZSBBSlAvMS4zIENvbm5lY3RvciwgaW4gdGhlIGNhc2UgdGhhdCBubwogICAgICAgICAgICAgIGJvZHkgd2FzIHNlbnQuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD48YnVnPjM4MDMwPC9idWc+OiBVbmNvbmRpdGlvbmFsbHkgcmV0dXJuIEVPUyBmb3IgYW4gYXR0ZW1wdCB0byByZWFkIAogICAgICAgICAgICAgIHRoZSBib2R5IG9mIGFueSByZXF1ZXN0IHRoYXQgZG9lc24ndCBzZW5kIENMIG9yIFRFLiAKICAgICAgICAgICAgICAocmVtbSwgYmlsbGJhcmtlcikuCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzUzNTE8L2J1Zz46IEZpeCBwcm9ibGVtIHVzaW5nIGFuIGlubmVyIGNsYXNzIGZvciBhICZsdDtqc3A6dXNlQmVhbiAvJmd0Oy4gKGtpbm1hbikuCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc5Mjk8L2J1Zz46IERvbid0IHN0b3Agb24gdGhlIGdlbmVyaWMgYXR0cmlidXRlIG1ldGhvZHMganVzdCBiZWNhdXNlIHRoZSBzZXNzaW9uIGlzIGludmFsaWQuIFBhdGNoIGJ5IFBpZXJyZSBEZWxpc2xlLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHN5c3RlbSBwcm9wZXJ0aWVzIG9yZy5hcGFjaGUuamFzcGVyLnJ1bnRpbWUuQm9keUNvbnRlbnRJbXBsLkxJTUlUX0JVRkZFUiBhbmQKICAgICAgICBvcmcuYXBhY2hlLmphc3Blci5ydW50aW1lLkpzcEZhY3RvcnlJbXBsLlVTRV9QT09MIHRvIGFsbG93IGNvbmZpZ3VyaW5nIEphc3BlcgogICAgICAgIG1lbW9yeSB1c2FnZSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzkzMzwvYnVnPjogUmVzdHJpY3QgJmx0O2pzcDpnZXRBdHRyaWJ1dGUgLyZndDsgdG8gb25seSBsb29rIGluIFBBR0VfU0NPUEUuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICA8YnVnPjM3ODA4PC9idWc+OiBGaXggQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGluc2lkZSBYQnl0ZUJ1ZmZlci4gUmVwb3J0ZWQgYnkgRGlldG1hciBNdWVsbGVyIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM3ODk2PC9idWc+RGF0YVNlbmRlciBzdGFydHMgbmV3IFNvY2tldCBhZnRlciBJT0V4Y2VwdGlvbi4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZHVjZSBtZW1vcnkgdXNhZ2UgYXQgbWVtYmVyc2hpcCBzZXJ2aWNlLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTQgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBvcHRpb25hbCBuYXRpdmUgQVBSIGNvbm5lY3RvciB2ZXJzaW9uIHRvIDEuMS4xLiAobXR1cmspCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBidWlsZC5wcm9wZXJ0aWVzLmRlZmF1bHQgdG8gZ2V0IG5hdGl2ZSBjb25uZWN0b3IgZnJvbSBuZXcgbG9jYXRpb24uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4xMzA0MDwvYnVnPjogRml4IGdldENvbnRleHQoKSB3aGVuIHVzZWQgdG8gb2J0YWluIGEgY29udGV4dCB0aGF0IGlzIGEgc3ViLWNvbnRleHQKICAgICAgICBvZiB0aGUgY3VycmVudCBjb250ZXh0LiBQb3J0ZWQgZnJvbSBUQzQuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NzQ2PC9idWc+OiBSZW1vdmUgZXh0cmEgc3BhY2UgZnJvbSBTdHJpbmdUb2tlbml6ZXIgcGF0dGVybiBpbiBKc3BDLCBhcyBzdWdnZXN0ZWQgYnkKICAgICAgICBFcmljIEhlZHN0cm9tLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgPGJ1Zz4zNjg2MzwvYnVnPjogU3RyaXAgcXVvdGVzIHdoZW4gcGFyc2luZyBDb29raWUgdmFsdWVzLCBldmVuIGZvciB2MCBDb29raWVzLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICA8YnVnPjM3ODAzPC9idWc+OiBEb24ndCBjbGFpbSB0aGF0IHdlIGhhdmUgYSBzdHJpbmcgdmFsdWUgaW4gTWVzc2FnZUJ5dGVzIHVudGlsIHdlIGFjdHVhbGx5IGRvLiAKICAgICAgICAgICBQYXRjaCBieSBEb3VnIFJhbmQgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjEzICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NzExPC9idWc+OiBVbnVzZWQgbGluZSBvZiBjb2RlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZWQgdW51c2VkIFNBWFBhdGgsIEpheGVuIGRlcGVuZGVuY2llcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgbG9nNGogZGVwZW5kZW5jeSB0byB2ZXJzaW9uIDEuMi4xMiwgU3RydXRzIHRvIDEuMi43LiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZWQgSkRCQyAyLjAgU3RkRXh0IGRlcGVuZGVuY3kgKG9ubHkgY2xhc3MgZnJvbSB0aGVyZSBpcyBqYXZheC5zcWwuWEFEYXRhU291cmNlLCB3aGljaCBpcwogICAgICAgIHByZXNlbnQgaW4gSkRLIDEuNCBhbmQgbGF0ZXIuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzAzOTwvYnVnPjogdHlwbyBvbiBKSyBRdWljayBjb25maWd1cmF0aW9uIGhvdy10by4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM3MDM1PC9idWc+OiBBZGQgYSBwbGFjZWhvbGRlciBmaWxlIGluIHRoZSB0ZW1wIGRpcmVjdG9yeSBmb3IgV2luWmlwIHRhci5neiBoYW5kbGluZy4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgSkFGIGRlcGVuZGVuY3kgdG8gMS4wLjIsIEpUQSB0byAxLjAuMWIgYW5kIEphdmFNYWlsIHRvIDEuMy4zXzAxLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEFkZGVkIEVjbGlwc2UgLnByb2plY3QsIC5jbGFzc3BhdGgsIGFuZCBhc3NvY2lhdGVkIGZpbGVzIHRvIG1ha2UgYnVpbGRpbmcgVG9tY2F0IGZyb20KICAgICAgICBFY2xpcHNlIHNpZ25pZmljYW50bHkgZWFzaWVyLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPiAKICAgICAgICA8YnVnPjM3Mjg0PC9idWc+OiBHdWVzcyBKU0UgNS4wIGxvY2F0aW9uIG9uIE1hYyBPUyBYLCBwYXRjaCBieSBTdGVwYW4gS29sdHNvdi4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBXcm9uZyBjbGFzcyBuYW1lIGluIGFudGxpYi54bWwgZm9yIEprU3RhdHVzVXBkYXRlVGFzay4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY4MDI8L2J1Zz46IEZpeCBwcm9ibGVtIG9mIGRvdWJsZS1pbml0IHdoZW4gSk1YLWRlcGxveWluZyBhIAogICAgICAgIENvbnRleHQgaW50byBhIHN0YXJ0ZWQgSG9zdC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY4NDA8L2J1Zz46IFByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hpY2ggd2ViLnhtbCBpcyBiZWluZyBwcm9jZXNzZWQgb24gc3RhcnR1cCB0bwogICAgICAgIGhlbHAgZGVidWcgcGFyc2luZyBlcnJvcnMuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDcyNDwvYnVnPjogQWJpbGl0eSB0byBzZXQgZG9tYWluIGZvciBTaW5nbGUtU2lnbi1PbiBjb29raWUuICBQYXRjaCBieSBPbGl2ZXIKICAgICAgICBSb3NzbXVlbGxlci4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MDQ0PC9idWc+OiBSZWFsbUJhc2UuaGFzUmVzb3VyY2VQZXJtaXNzaW9uIG5lZWRzIHRvIGFjY2VzcyB0aGUgR2VuZXJpY1ByaW5jaXBhbCBhcwogICAgICAgIHNldCBieSB0aGUgcmVhbG0gdW5sZXNzIGhhc1JvbGUgaXMgb3ZlcnJpZGVuLCB3aGljaCB3YXMgbm8gbG9uZ2VyIGJlaW5nIGRvbmUgcHJvcGVybHkgZm9yCiAgICAgICAgdGhlIEpBQVMgcmVhbG0gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcyNjQ8L2J1Zz46IEpOREkgcmVzb3VyY2VzIHdlcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSB3aGVuIHN0b3BwaW5nIGxpc3RlbmVycywKICAgICAgICBzdWJtaXR0ZWQgYnkgQm9nZGFuIENhbG1hYyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzE1MDwvYnVnPjogVHVybiBvZmYgZGlyZWN0b3J5IGxpc3RpbmcgYnkgZGVmYXVsdCBhbmQgYWRkIGEgd2FybmluZwogICAgICAgIHJlZ2FyZGluZyBlbmFibGluZyBsaXN0aW5nIG9mIGRpcmVjdG9yaWVzIHdpdGggbWFueSBlbnRyaWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBjb25maWd1cmFiaWxpdHkgZm9yIHRoZSBhbW91bnQgb2YgdGltZSB0aGF0IHRoZSBjb250YWluZXIgd2lsbCB3YWl0IGZvciByZXF1ZXN0cwogICAgICAgIHRvIGNvbXBsZXRlIHdoZW4gdW5sb2FkaW5nIHNlcnZsZXRzLCB1c2luZyB0aGUgdW5sb2FkRGVsYXkgcHJvcGVydHkuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgY29kZSB0byBzZXQgdG8gbnVsbCBmaWVsZHMgaW4gbG9hZGVkIGNsYXNzZXMgd2hlbiBzdG9wcGluZyBhIHdlYiBhcHBsaWNhdGlvbiwgYXMgYQogICAgICAgIHBvc3NpYmxlIHdvcmthcm91bmQgZm9yIHN1c3BpY2lvdXMgZ2FyYmFnZSBjb2xsZWN0aW9uIGJlaGF2aW9yLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMgZm9yIGNsYXNzbG9hZGluZyBlcnJvcnMgd2hpY2ggbWF5IG9jY3VyIHdoZW4gcmVtb3ZpbmcKICAgICAgICBhIHdlYiBhcHBsaWNhdGlvbiwgYW5kIGZvciBzdG9wcGVkIHdlYiBhcHBsaWNhdGlvbnMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MzE5PC9idWc+OiBGaXggY2F0YWxpbmEuYmF0IHJlZmVyZW5jZSB0byBDQVRBTElOQV9CQVNFIGZvciBsb2dnaW5nLnByb3BlcnRpZXMuICBUaGFua3MKICAgICAgICB0byBQaWVycmUtWXZlcyBCZW56YWtlbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2ODUyPC9idWc+OiBDdXN0b20gY2xhc3Nsb2FkZXJzIGRvbid0IGhvbm9yIENvbnRldCBwcml2aWxlZ2VkIGF0dHJpYnV0ZS4gIFRoYW5rcyB0bwogICAgICAgIE1hdHQgQnJpbmtsZXkgZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+Rml4IGZvciBhIGNvdXBsZSBvZiAobW9zdGx5IHNpbGx5KSBlZGdlLWNhc2VzIGluIHRlc3RpbmcgYXV0aC4KICAgICAgICAgICBUaGFua3MgdG8gTmFtIFQuIE5ndXllbiBmb3IgdGhlIHJlcG9ydC4gKGJpbGxiYXJrZXIpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MDYwPC9idWc+OiBBY3R1YWxseSBjb3B5IHRoZSBSZXF1ZXN0IGhlYWRlcnMgd2hlbiByZXBsYXlpbmcgYWZ0ZXIgRm9ybSBhdXRoLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzU5MTwvYnVnPjogVHlwbyBpbiBFbmdpbmUgY29uZmlndXJhdGlvbiByZWZlcmVuY2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzY2ODwvYnVnPjogQWRkZWQgbm90ZSBhYm91dCBKU1AgcmVjb21waWxhdGlvbiB0byBDb250ZXh0IGNvbmZpZ3VyYXRpb24gZG9jdW1lbnRhdGlvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MTMyPC9idWc+OiBIYXZlIERpZ2VzdEF1dGhlbnRpY2F0b3IgSGFuZGxlIHVzZXIgbmFtZXMgd2l0aCBjb21tYXMuICBUaGFua3MgdG8gCiAgICAgICAgICBSb2JlcnQgV2lsbGUgZm9yIHRoZSBwYXRjaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MjEyPC9idWc+OiBCZXR0ZXIgZXJyb3IgcmVwb3J0aW5nIGluIENvbm5lY3Rvci5qYXZhLiAgVGhhbmtzIHRvIFJhbGYgSGF1c2VyIGZvcgogICAgICAgIHRoZSBwYXRjaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBHcmFjZWZ1bGx5IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBzb21lIFNvY2tldCBvcHRpb25zIGFyZSBkaXNhYmxlZCBhdCAKICAgICAgICB0aGUgT1MgbGV2ZWwgZm9yIHRoZSBBSlAvMS4zIENvbm5lY3Rvci4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYzNjY8L2J1Zz46IFVzZSByZXdyaXR0ZW4gZGVwbG95ZXItaG93dG8gcGFnZSBieSBBbGxpc3RhaXIgQ3Jvc3NsZXkuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM2NjMwPC9idWc+OiBBZGRlZCBleHRyYSBsb2cgb3V0cHV0IGZvciBjbGFzcyBpbnN0YW50aWF0aW9uIGZhaWx1cmUuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzEyMTwvYnVnPjogU2VuZGZpbGUgYWx3YXlzIG5lZWRzIHRvIGJlIGdpdmVuIHRoZSBsZW5ndGggb2YgZGF0YSB0byB3cml0ZSwKICAgICAgICB3aGljaCBmaXhlcyByYW5nZWQgcmVxdWVzdHMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBPcHRpbWl6ZWQgZGlyZWN0IGJ5dGUgYnVmZmVycyBhc3NvY2lhdGlvbiB3aXRoIHRoZSBzb2NrZXQgZm9yIEFQUiBjb25uZWN0b3JzLiAobXR1cmspCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBoaWRkZW4gTlBFcyB3aGVuIHVzaW5nIHRoZSBBUFIgY29ubmVjdG9ycyBhbmQgdGhlcmUncyBubyBob3N0IGhlYWRlci4gKHBlcm8sIHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEh0dHAxMVByb3RvY29sIG5vdyByZWdpc3RlciBSZXF1ZXN0UHJvY2Vzc29yIGF0IEpNWCBhbmQgc2hvdyBjdXJyZW50IHVzYWdlIGluc2lkZSBtYW5hZ2VyIGFwcC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEprU3RhdHVzIEFudCB0YXNrcyBmb3IgbW9kX2prIDEuMi4xNS4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPkNvbm5lY3Rpb24gVGltZW91dCBpcyBub3JtYWwsIHNvIHJlZHVjZSBsb2dnaW5nIHRvIERFQlVHIChiaWxsYmFya2VyKSAKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNyYXNoIHdoaWNoIGNvdWxkIG9jY3VyIHdpdGggdGhlIEhUVFAgQVBSIGNvbm5lY3RvciB3aGVuIGFjY2Vzc2luZyByZXF1ZXN0IEpNWCBvYmplY3RzCiAgICAgICAgb3V0c2lkZSBvZiB0aGUgcHJvY2Vzc2luZyBvZiB0aGUgc2FpZCByZXF1ZXN0IChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NjI3PC9idWc+OiBGaXggYnVmZmVyaW5nIGlzc3VlIGluIHRoZSBIVFRQIEFQUiBjb25uZWN0b3Igd2hlbiBhIGxhcmdlIGJ1ZmZlciBzaXplIHdhcwogICAgICAgIHVzZWQgZm9yIHNlcnZsZXRzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NjczPC9idWc+OiBGaXggaW1wbGVtZW50YXRpb24gb2YgZ2V0TG9jYWxQb3J0IGFuZCBnZXRMb2NhbEFkZHIgaW4gdGhlIEhUVFAgQVBSIGNvbm5lY3RvcgogICAgICAgIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1MjUyPC9idWc+OiBKYXNwZXIgUGFnZURhdGFJbXBsIG91dHB1dHMgbWFsZm9ybWVkIFhNTC4gIFBhdGNoIGJ5IFJhaHVsIEFrb2xrYXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNzA2MjwvYnVnPjogSGVscGZ1bCBKU1AgZXhjZXB0aW9uIG1lc3NhZ2UgY29udGFpbmluZyBmaWxlLCBsaW5lIG51bWJlcnMuICBQYXRjaCBieQogICAgICAgIFRpbSBGZW5uZWxsIGF0IGh0dHA6Ly93d3cudGZlbm5lLmNvbS9qYXNwZXIvLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc0MDc8L2J1Zz46IEZpbGUgZGVzY3JpcHRvciBsZWFrIGluIEpzcFJlYWRlci4gIFRoYW5rcyB0byBGcmVkIGZvciB0aGUgcGF0Y2guICBJIGFsc28KICAgICAgICBkaWQgc29tZSBtaW5vciBjbGVhbnVwIGluIHRoZSBjbGFzcy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM3NjEyPC9idWc+OiBBZGQgZmlsZSBsb2NhdGlvbiB0byBKU1AgVmFsaWRhdG9yIGVycm9yIG1lc3NhZ2UuICBUaGFua3MgdG8gUmVuYXVkIEJydXllcm9uCiAgICAgICAgZm9yIHRoZSBwYXRjaC4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRoYXQgc2Vzc2lvbiByZXBsYWNlIG1lc3NhZ2VzIGFyZSBsb2dnZWQgYWZ0ZXIgbm9kZSByZWNvdmVyeSBnZXQgYWxsIHNlc3Npb24gZnJvbSBtYXN0ZXIgbm9kZS4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc4OTY8L2J1Zz4gRml4IHRoYXQgc2VuZE1lc3NhZ2Ugc2lnbmF0dXJlIGF0IGFsbCBEYXRhU2VuZGVyIHN1YmNsYXNzZXMgbXVzdCBiZSBjaGFuZ2VkLgogICAgICAgIE5vdyBwb29sZWQgYW5kIGFzeW5jIG1vZGVzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGhhdCBzb2NrZXQgYXQgby5hLmMuY2x1c3Rlci50Y3AuRmFzdEFzeW5jU29ja2V0U2VuZGVyIGNhbiBiZSBkaXNjb25uZWN0L2Nvbm5lY3QuIChwZXJvKQogICAgICA8L2ZpeD4gICAgCiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNsdXN0ZXIgbW9kdWxlIGJ1aWxkLnhtbCBzY3JpcHQgZm9yIG5ldyBzdm4gcmVwb3NpdG9yeSBzdHJ1Y3R1cmUgKHBlcm8pCiAgICAgIDwvZml4PiAgICAKICAgICAgPGZpeD4KICAgICAgICBGaXggY2xvc2VkIHNvY2tldCBleGNlcHRpb25zIGF0IG5vcm1hbCBzZXJ2ZXIgc2h1dGRvd24sIHJlcG9ydGVkIGJ5IE9sdmUgSGFuc2VuIChwZXJvKQogICAgICA8L2ZpeD4gICAgCiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNsb3NlZCBzb2NrZXQgZXhjZXB0aW9ucyBpbnNpZGUgYXN5bmMgbWVzc2FnZSB0cmFuc2ZlciBtb2RlcyAocGVybykKICAgICAgPC9maXg+ICAgIAogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ5ODQ8L2J1Zz46IEh0dHBTZXNzaW9uQmluZGluZ0V2ZW50LmdldFZhbHVlKCkgZ2V0IGNvcnJlY3QgdmFsdWUgKHBlcm8pCiAgICAgIDwvZml4PiAgICAKICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTE2PC9idWc+OiBzZW5kIHNlc3Npb25DcmVhdGVkIHRvIFNlc3Npb25MaXN0ZW5lciBhZnRlciBjbHVzdGVyIG5vZGUgcmVjb3ZlcnkgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1NDE8L2J1Zz46IFVzZWQgYWxzbyBIYXNodGFibGUgYXQgRGVsdGFTZXNzaW9uIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBCZXR0ZXIgc3VwcG9ydCBjbHVzdGVyIGF0IGVuZ2luZSBsZXZlbC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY4NjY8L2J1Zz46IENvcnJlY3QgYXR0cmlidXRlIG5hbWUgaW4gY29uZi9zZXJ2ZXIueG1sIGRvY3VtZW50YXRpb24gZm9yIENsdXN0ZXIgZWxlbWVudC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MjYxPC9idWc+OiBBbGxvdyB4ZXJjZXMgdG8ga25vdyB3aGVyZSB0aGUgd2ViLnhtbCBmaWxlIGlzIHNvIHRoYXQgcmVsYXRpdmUgZW50aXRpZXMgY2FuIGJlIHJlc29sdmVkLgogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NTI5PC9idWc+OiBGaXhlZCByYWNlIGNvbmRpdGlvbiBpbiBSZXBsaWNhdGlvbkxpc3RlciNzdG9wTGlzdGVuaW5nLiAgVGhhbmtzIHRvIAogICAgICAgIENocmlzIFdhbGtlciBmb3IgdGhlIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD5SZW1vdmUgb2Jzb2xldGUgVGFnUGx1Z2luIGZpbGUgZnJvbSBKU1AgZXhhbXBsZXMgKGJpbGxiYXJrZXIpPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjAxOTwvYnVnPjogTWFkZSBjbGVhciB0aGUgSG9zdC1NYW5hZ2VyIEhvd1RvIGlzIGNvbWluZyBzb29uLCBub3QgcmVhZHkgeWV0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYzMzY8L2J1Zz46IENoZWNrIFdBUiBleHRlbnNpb24gaW4gYm90aCB1cHBlciBhbmQgbG93ZXIgY2FzZSwgYXMgc3VnZ2VzdGVkIGJ5CiAgICAgICAgQS4gR3Jhc29mZi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTgyPC9idWc+OiBDYW4ndCBkZWxldGUgbWFpbCBzZXNzaW9ucyBpbiBhZG1pbiB3ZWJhcHAuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjY3MzwvYnVnPjogU2ltaWxhciB0byB0aGUgb25lIGFib3ZlLCBmb3IgZGF0YSBzb3VyY2VzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjEyICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgdW5lZWRlZCBmaWxlcyBpbiBjb25mLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ2hhbmdlIGRpc3RyaWJ1dGlvbiBmaWxlIG5hbWVzIGZyb20gamFrYXJ0YS0qIHRvIGFwYWNoZS0qLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBBZGQgSk1YIFJlbW90ZSBjcmVhdGUgYW5kIHVucmVnaXN0ZXIgYW50IHRhc2tzIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MzQzPC9idWc+OiBPbmx5IG5vcm1hbGl6ZSBvdXQgYmFja3NsYXNoIG9uIFdpbmRvd3MgcGxhdGZvcm1zLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWxsb3cgY29uZmlndXJpbmcgc3RhbmRhcmQgc3RyZWFtIHJlZGlyZWN0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNjA4ODwvYnVnPjogQWRkIFJVTk5JTkcudHh0IGFuZCBSRUxFQVNFLU5PVEVTLnR4dCB0byBmdWxsZG9jcyBkaXN0cm8uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjUzNDwvYnVnPjogZml4IGVxdWFscyBmb3IgVVJMcyByZXR1cm5lZCBieSBTZXJ2bGV0Q29udGV4dC5nZXRSZXNvdXJjZSgpIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjU1ODwvYnVnPjogQ2xlYXIgSW50cm9zcGVjdGlvblV0aWxzIGNhY2hlIHdoZW4gc3RvcHBpbmcgYSB3ZWJhcHAsIGFzIGl0IAogICAgICAgIGNvdWxkIGxlYWsgdG8ga2VlcGluZyBhIHJlZmVyZW5jZSB0byB0aGUgY2xhc3Nsb2FkZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYxMTM8L2J1Zz46IFNlc3Npb24gcGVyc2lzdGVuY2UgZm9yIG9iamVjdHMgd2l0aCBwcmltaXRpdmUgdHlwZXMgY291bGQgZmFpbCBpbgogICAgICAgIHNvbWUgcmFyZSBjYXNlcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjU0MTwvYnVnPjogRnVsbCBzeW5jaHJvbml6YXRpb24gZm9yIHNlc3Npb24gb2JqZWN0cyBhdHRyaWJ1dGVzIGNvbGxlY3Rpb25zIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1NjA5PC9idWc+OiBzZXJ2aWNlLmJhdCBlY2hvIGNvbW1hbmQgd2hlbiB3cm9uZyBhcmd1bWVudHMgZ2l2ZW4gW3BhdGNoIGJ5IFJvYmVydAogICAgICAgIExvbmdzb25dICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDc0OTwvYnVnPjoganNlc3Npb25pZCBkcm9wcGVkIG9uIHRyYWlsaW5nIHNsYXNoICgvKSByZWRpcmVjdCAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICAgPGNoYW5nZWxvZz4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzZWNyZXQgZm9yIEFKUCBBUFIgKHJlbW0pCiAgICAgICA8L3VwZGF0ZT4KICAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBOUEUgd2l0aCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gbm8gSmF2YSBjb21waWxlciBpcyBhdmFpbGFibGUgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlc3RyaWN0IFN5c3RlbSBlcnIgc3RyZWFtIGNhcHR1cmUgdG8gdGhlIEFudCBjb21waWxlciwgYXMgdGhlIEVjbGlwc2UgY29tcGlsZXIKICAgICAgICBkb2VzIG5vdCBuZWVkIGl0IChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBKU1AgY29tcGlsYXRpb24gc3BlZWQgaW1wcm92ZW1lbnQgdXNpbmcgdGFnIGxpYnJhcnkgaW5mb3JtYXRpb24gY2FjaGluZywgCiAgICAgICAgc3VibWl0dGVkIGJ5IFhpbmdibyBHYW8gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEluaXRpYWwgY29udHJpYnV0aW9uIG9mIEpTVEwgdGFnIHBsdWdpbnMgc3VwcG9ydGluZyB0aGUgY29yZSB0YWcgbGlicmFyeSBvZgogICAgICAgIEpTVEwsIHN1Ym1pdHRlZCBieSBKaW5nIExpIChyZW1tKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjU0MTwvYnVnPjogU3luYyBhbGwgc2Vzc2lvbiBhdHRyaWJ1dGUgYWNjZXNzIChyZWFkIGFuZCB3cml0ZSkgYXQgRGVsdGFTZXNzaW9uIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTE4PC9idWc+OiBDbGFzc25hbWUgdHlwb3MgZm9yIHNlbmRlcnMsIHN1Ym1pdHRlZCBieSBDaHJpc3RvcGggQmFjaGh1YmVyLUhhbGxlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNTYxMzwvYnVnPjogQWRkZWQgRkFRIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgYWJvdXQgdGNwTGlzdGVuQWRkcmVzcz0iYXV0byIgYW5kIC9ldGMvaG9zdHMgKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBNb3ZlZCBGQVEgc2VjdGlvbiBmb3IgQ2x1c3RlcmluZyBmcm9tIENsdXN0ZXJpbmcgSG93VG8gcGFnZSB0byBpdHMgb3duIEZBUSBwYWdlLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGRvY3M+CiAgICAgICAgPGJ1Zz4zNjMxOTwvYnVnPjogRml4IGJyb2tlbiBsaW5rIHRvIERCQ1AgZG9jcywgc3VibWl0dGVkIGJ5IFhhdmllciBQb2luc2FyZCAocmVtbSkKICAgICAgPC9kb2NzPgogICAgICA8ZG9jcz4KICAgICAgICBCcmFuZCBuZXcgZGVwbG95ZXIgc3BlY3MsIHN1Ym1pdHRlZCBieSBBbGxpc3RhaXIgQ3Jvc3NsZXkgKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KIDwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTEgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBYZXJjZXMgMi43LjEgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEFkZCByZWFkeSB0byBidWlsZCBiaW4vdG9tY2F0LW5hdGl2ZS50YXIuZ3ogZm9yIHRoZSBBUFIgSk5JIHdyYXBwZXIgbGlicmFyeSAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTkzMDwvYnVnPjogQmFkIGxvZ2dpbmcgY29uZmlnIHVzZWQgYnkgdGhlIFRvbWNhdCBXaW5kb3dzIHNlcnZpY2UgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzMyNjE8L2J1Zz46IFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBjaGVja3MgdGhlIHVzZXIgdHlwZSBhbmQgd2FybnMgbm9uLWFkbWlucyBhcyBuZWVkZWQuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVGhlIFdpbmRvd3MgaW5zdGFsbGVyIHdpbGwgbm93IG9wdGlvbmFsbHkgZG93bmxvYWQgYSAoMzJiaXQpIFdpbmRvd3MgLmRsbCBmb3IgVG9tY2F0IG5hdGl2ZQogICAgICAgIGZyb20gSEVBbmV0IChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBEZWNsYXJhdGlvbiBvZiBqc3BjIEFudCB0YXNrIHRvIGZpeCB0aGUgZGVwbG95ZXIgcGFja2FnZSAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBBZGQgY29uY3VycmVuY3kgY29udHJvbCB2YWx2ZSAoby5hLmMudmFsdmVzLlNlbWFwaG9yZVZhbHZlKS4gQXMgdGhlIFRvbWNhdCBkaXN0cmlidXRpb24gCiAgICAgICAgaXMgbm90IGJ1aWx0IGZvciBKYXZhIDUsIHRoZSB2YWx2ZSB3aWxsIGhhdmUgdG8gYmUgY29tcGlsZWQgZnJvbSB0aGUgc291cmNlcyAKICAgICAgICB1c2luZyBKYXZhIDUgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU4ODA8L2J1Zz46IElnbm9yZSBKU1NFMTVTb2NrZXRGYWN0b3J5IHdoZW4gZ2VuZXJhdGluZyBKYXZhRG9jLCBhcyBpdCBicmVha3MKICAgICAgICAgIHRoZSBKREsgMS40IEphdmFEb2MgdG9vbC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1ODY1PC9idWc+OiBzZXRjbGFzc3BhdGguc2ggY2Fubm90IGJlIGV4Y3V0aXZlIHVuZGVyIGN5Z3dpbi4gKGZ1bmttYW4pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMyNjc8L2J1Zz46IFNldCB3b3JraW5nIHBhdGggaW4gc2VydmljZSBpbnN0YWxsZXIsIGFzIHN1Z2dlc3RlZCBieSBEb21pbmlrCiAgICAgICAgICBEcnpld2llY2tpLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzQ3OTQ8L2J1Zz46IFVwZGF0ZSBjb25uZWN0b3IgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGNsaWVudEF1dGggYXR0cmlidXRlLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU4OTQ8L2J1Zz4sIDxidWc+MzYyMjg8L2J1Zz46IEZpeCBDTkZFIHdoZW4gc3RhcnRpbmcgaW4gYSBzYW5kYm94LiAoYmlsbGJhcmtlciwgcmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIHZlcnNpb24gY2hlY2sgZm9yIFRvbWNhdCBuYXRpdmUgc28gdGhhdCBpbmNvbXBhdGlibGUgQVBJIGNoYW5nZXMgYXJlIGRldGVjdGVkIGVhcmx5IChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MDIwPC9idWc+OiBBbGxvdyBNZW1vcnlVc2VyRGF0YWJhc2UgdG8gd29yayBiZXR0ZXIgb24gd3JpdGUgcHJvdGVjdGVkIG1lZGl1bXMsCiAgICAgICAgc3VibWl0dGVkIGJ5IFJhaW5lciBKdW5nIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTc4PC9idWc+OiBCYWQgaGFuZGxpbmcgb2Ygc2luZ2xlIHJhbmdlIHJlcXVlc3RzIGdyZWF0ZXIgdGhhbiAyR0IgaW4gdGhlIERlZmF1bHRTZXJ2bGV0CiAgICAgICAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5ODQ8L2J1Zz46IENsaWVudCBhYm9ydCBleGNlcHRpb25zIHdpbGwgbm93IHVzZSBnZXRDYXVzZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGhhbmRsaW5nIG9mIG5vbi1maWxlIGJhc2VkIGluY2x1ZGVzIHdpdGggU1NJLCBzdWJtaXR0ZWQgYnkgRGF2aWQgQmVja2VyIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggZGVmYXVsdCBwb3J0cyBmb3IgaHR0cCBhbmQgaHR0cHMgd2hpY2ggYXJlIHNldCBpbiB0aGUgcmVxdWVzdCB3aGVuIHRoZSBwYXJzZWQKICAgICAgICBob3N0bmFtZSBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBwb3J0LCBhbmQgd2hpY2ggd2VyZSBpbnZlcnRlZCAoaHR0cHMgd2FzIHNldCBhcyA4MCAKICAgICAgICBhbmQgaHR0cCBhcyA0NDMpLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIG1pc3NpbmcgdG9tY2F0QXV0aGVudGljYXRpb24gYXR0cmlidXRlIHRvIHRoZSBBSlAgQVBSIGltcGxlbWVudGF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ2hlY2sgZmlsZW5hbWUgc2VuZGZpbGUgYXR0cmlidXRlIG9ubHkgaWYgc2VuZGZpbGUgaXMgZW5hYmxlZC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBvdXRwdXQgYnVmZmVyaW5nIGZvciBBUFIgQUpQIGltcGxlbWVudGF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTk0MTwvYnVnPjogRml4IGdldFJlbW90ZUFkZHIgZm9yIEFQUiBBSlAgaW1wbGVtZW50YXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTQyPC9idWc+OiBGaXggTlBFIHJldHJpdmluZyBjaXBoZXIgc3VpdGUgYXR0cmlidXRlIHdoZW4gbm8gY2VydGlmaWNhdGUgCiAgICAgICAgd2FzIHN1Ym1pdHRlZCAoZm9yIGV4YW1wbGUgd2l0aCBubyBTU0wpLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGNvZGUgY2xlYW51cHMgZm9yIEFQUiBBSlAgaW1wbGVtZW50YXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTZWN1cml0eSBleGNlcHRpb24gaW4gQVBSIEFKUCBpbXBsZW1lbnRhdGlvbiB3aGVuIHJ1bm5pbmcgd2l0aCB0aGUgc2VjdXJpdHkKICAgICAgICBtYW5hZ2VyIGVuYWJsZWQuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MTczPC9idWc+OiBBZGQgbWlzc2luZyBzeW5jIGluIEZhc3RIdHRwRGF0ZUZvcm1hdC5mb3JtYXREYXRlLCBzdWJtaXR0ZWQgCiAgICAgICAgYnkgQWxleGVpIEtyYWluaW91ayAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRGlzYWJsZSBIVFRQIGNvbXByZXNzaW9uIHdoZW4gc2VuZGZpbGUgaXMgdXNlZCBmb3IgYSByZXNvdXJjZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQUpQIHNlY3JldCBhdHRyaWJ1dGUgcmVwb3J0IG9ubHkgYXQgdHJhY2UgbGV2ZWwuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYxMjc8L2J1Zz46IFZhbGlkYXRpb24gY29tcGF0aWJpbGl0eSB3aXRoIFhlcmNlcyAyLjcuMSwgc3VibWl0dGVkIAogICAgICAgIGJ5IEZsb3JlbnQgQmVub2l0IChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+ICAgICAgICAKICAgICAgPGZpeD4KICAgICAgICBGaXggTlBFIHdoZW4gY2x1c3RlciBzdG9wcyAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjIxODwvYnVnPjogTWVtb3J5UmVhbG0gbm93IHN1cHBvcnQgYWxzbyBHZW5lcmljUHJpbmNpcGFsLCBidXQgCiAgICAgICAgSkFBU1JlYWxtIHdpdGggY2x1c3RlciByZXBsaWNhdGlvbiBzdGlsbCBoYXMgYSBwcm9ibGVtLCBkZXRlY3RlZCBieSBEaXJrIERla29rIChwZXJvKQogICAgICA8L2ZpeD4gICAKICAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xMCAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgIEFkZCBKTVggcmVtb3RlIGFudCB0YXNrIHRvIGNvbnRyb2wgdG9tY2F0IE1CZWFuc2VydmVyIHZpYSBhbnQgc2NyaXB0cy4KICAgICAgICAgQW50IGxpYiBpcyBpbmNsdWRlZCBhdCAic2VydmVyL2xpYi9jYXRhbGluYS1hbnQtam14LmphciIgYW5kIGRvY3VtZW50YXRpb24KICAgICAgICAgaXMgYWRkZWQgdG8gPGEgaHJlZj0ibW9uaXRvcmluZy5odG1sIj5Nb25pdG9yaW5nIGFuZCBNYW5hZ2luZyBUb21jYXQgSG93LVRvPC9hPiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDM2MTwvYnVnPjogSW50ZWdyYXRlIGJldHRlciBhbnRsaWIgYW5kIGltcG9ydCBzdXBwb3J0IGZvciAKICAgICAgICBjYXRhbGluYSBtYW5hZ2VyIHRhc2tzIFtNb2RpZmllZCBwYXRjaCBmcm9tIERhbmllbCBTYW50b3NdICAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU3RvcmVDb25maWcgc2F2ZSBub3cgdGhlIENvbm5lY3Rvci5zc2xQcm90b2NvbCBhdHRyaWJ1dGUuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDaGFuZ2UgbG9nIGRpciBhdCBzZXJ2aWNlLmJhdCB0byAiJENBVEFMSU5BX0JBU0UvbG9ncyIgZm9yIGJldHRlciBtdWx0aSBpbnN0YW5jZSBzdXBwb3J0LiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNDIzNzwvYnVnPjogQWRkZWQgbm90ZSBhbmQgbGlua3MgdG8gY29udGV4dCBhbmQgaG9zdCBjb25maWd1cmF0aW9uCiAgICAgICAgICByZWZlcmVuY2VzIGluIEpOREkgRGF0YVNvdXJjZXMgSG93VG8gdG8gYWlkIHRoZSBjbHVlbGVzcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM0MjQ4PC9idWc+OiBVcGRhdGUgSmF2YU1haWwgZG93bmxvYWQgaW5zdHJ1Y3Rpb25zIHRvIGluY2x1ZGUgSkFGLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBKRFQgZnJvbSBFY2xpcHNlIDMuMSwgd2l0aCBzdXBwb3J0IGZvciBKYXZhIDUgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yaW5nLCByZWRlc2lnbiBhbmQgZXh0ZW5kIHRoZSBjbHVzdGVyIG1vZHVsZQogICAgICAgICAgLSBDbHVzdGVyIGNhbiBiZSBjb25maWd1cmVkIGFzIHN1YmVsZW1lbnQgZnJvbSBFbmdpbmUgYW5kIEhvc3QuCiAgICAgICAgICAtIE9wdGltaXplZCBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZQogICAgICAgICAgLSBCZXR0ZXIgSk1YIHN1cHBvcnQKICAgICAgICAgIC0gYWRkIGEgbG90IG9mIEpNWCBzdGF0cyBhdHRyaWJ1dGUgZm9yIGJldHRlciBtb25pdG9yaW5nIAogICAgICAgICAgLSBhZGQgYSBzaW5nbGUgZWxlbWVudCBkZWZhdWx0IGNsdXN0ZXIgY29uZmlndXJhdGlvbgogICAgICAgICAgLSBtb3JlIGNvbmZpZyBvcHRpb25zCiAgICAgICAgICAgICBMaWZlY3ljbGVMaXN0ZW5lcgogICAgICAgICAgICAgQ2x1c3Rlckxpc3RlbmVyCiAgICAgICAgICAgICBtb3JlIHRoYW4gb25lIGNsdXN0ZXIgdmFsdmVzCiAgICAgICAgICAtIGJldHRlciBzdWJjbGFzcyBzdXBwb3J0CiAgICAgICAgICAtIGNoYW5nZSBhIGxvdCBvZiBleGlzdGluZyBjbHVzdGVyIEFQSSdzIChwZXJvKQogICAgICAgPC91cGRhdGU+CiAgICAgICA8YWRkPgogICAgICAgICBBZGQgQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgSk5JIHdyYXBwZXIgYW5kIGhlbHBlciBBUEkgKG10dXJrKQogICAgICAgPC9hZGQ+CiAgICAgICA8dXBkYXRlPgogICAgICAgICBVcGRhdGUgSlVMSSB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRha2luZyBvdmVyIGphdmEudXRpbC5sb2dnaW5nIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uLAogICAgICAgICBhbmQgbW92ZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGZpbGUgdG8gJHtjYXRhbGluYS5iYXNlfS9jb25mL2xvZ2dpbmcucHJvcGVydGllcyAocmVtbSkKICAgICAgIDwvdXBkYXRlPgogICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zNDc0NjwvYnVnPjogVXBkYXRlZCBjYXRhbGluYS5wcm9wZXJ0aWVzIGluc3RydWN0aW9ucyBwZXIgQmlsbCBFZHdhcmRzJyBzdWdnZXN0aW9uLiAoeW9hdnMpCiAgICAgICA8L2ZpeD4KICAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzUwOTA8L2J1Zz46IE1pbm9yIGRvY3VtZW50YXRpb24gdHlwbyBmaXguICh5b2F2cykKICAgICAgIDwvZml4PgogICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zNDkzMTwvYnVnPjogUmV3cm90ZSBST09UL2luZGV4LmpzcCB0byBiZSBYSFRNTCBzdHJpY3QgY29tcGxpYW50LCBwZXIgUmljaGFyZAogICAgICAgICAgIEJldG9uJ3MgcGF0Y2guICh5b2F2cykKICAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yMDM4MDwvYnVnPjogQWNjZXNzIGxvZyB0aW1lc3RhbXBzIG5vdyB0YWtlIGFjY291bnQgb2YgRGF5bGlnaHQgU2F2aW5nCiAgICAgICAgVGltZSAoRFNUKS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0MjIwPC9idWc+OiBQcm92aWRlIGJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gc2VydmVyLnhtbCBjYW4ndCBiZSBsb2NhdGVkLgogICAgICAgICAgW01vZGlmaWVkIHBhdGNoIGZyb20gUmFsZiBIYXVzZXJdICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgICBBZGQgTWVzc2FnZUxpc3RlbmVyIGFuZCBMaWZlY3lsY2VMaXN0ZW5lciBjbHVzdGVyIHNhdmluZyB0byBzdG9yZWNvbmZpZyBtb2R1bGUKICAgICAgICAgICgmbHQ7Q2x1c3RlciAuLi4gJmd0OyZsdDtDbHVzdGVyTGlzdGVuZXIgY2xhc3NOYW1lPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNsdXN0ZXIuc2Vzc2lvbi5Kdm1Sb3V0ZVNlc3Npb25JREJpbmRlckxpc3RlbmVyIiAmZ3Q7KSAocGVybykKICAgICAgPC9hZGQ+ICAKICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNzQzPC9idWc+OiBBZGQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24gaW4gd2ViYXBwIGNsYXNzbG9hZGVyIHRvIGF2b2lkCiAgICAgICAgcG9zc2libGUgcmFjZSBjb25kaXRpb24gd2hlbiBkZWZpbmluZyBhIGNsYXNzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNzExPC9idWc+OiBBZGQgZXZlbnRzIG9uIHBhc3NpdmF0ZSBhbmQgYWN0aXZhdGUgdG8gY2xlYW51cCBTU08sIGFuZCByZWN5Y2xlCiAgICAgICAgc2Vzc2lvbiBvYmplY3RzIHdoZW4gcmVtb3ZpbmcgdGhlbSBmcm9tIGEgbWFuYWdlciAoc28gdGhhdCBhbnlvbmUga2VlcGluZyByZWZlcmVuY2VzCiAgICAgICAgdG8gaXQgd291bGQgbGVhayBhIG1pbmltYWwgYW1vdW50IG9mIG1lbW9yeSkgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlLWFkZCBwYXRjaCBjYXVzaW5nIFNlc3Npb24uZ2V0SWQgdG8gdGhyb3cgYW4gSVNFLCBhbmQgbWFrZSBhbGwgaW50ZXJuYWwgY29tcG9uZW50cwogICAgICAgIHVzZSBhIHNhZmUgZ2V0SWRJbnRlcm5hbCBtZXRob2QgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFN0b3JlIHByaW5jaXBhbCB0byBiZSBleHBvc2VkIGZvciBSZXF1ZXN0LmdldFVzZXJQcmluY2lwYWwgaW5zaWRlIHRoZSBHZW5lcmljUHJpbmNpcGFsLAogICAgICAgIHRvIHJlbW92ZSBoYWNrcyBmcm9tIHRoZSBKQUFTIHJlYWxtIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjEwMzg1PC9idWc+OiBTU0kgU2VydmxldCBub3cgaW5jbHVkZXMgYmV0dGVyIHN1cHBvcnQgZm9yIGZpbGVzIHRoYXQgdXNlIGNoYXJhY3RlcgogICAgICAgIGVuY29kaW5ncyBvdGhlciB0aGFuIHRoZSBwbGF0Zm9ybSBkZWZhdWx0LihtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIENvcHlQYXJlbnRDbGFzc0xvYWRlciBydWxlLCB3aGljaCBkb2Vzbid0IHNlZW0gdG8gYmUgZG9pbmcgYW55dGhpbmcgdXNlZnVsCiAgICAgICAgYW55bW9yZS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIFByb3ZpZGUgYW4gU2VydmxldEZpbHRlciBpbXBsZW1lbnRhdGlvbiBvZiBTZXJ2ZXIgU2lkZSBJbmNsdWRlcyAoU1NJKS4gVGhpcyB3YXMKICAgICAgICBzdWJtaXR0ZWQgYnkgRGF2aWQgQmVja2VyIHVuZGVyIDxidWc+MzMxMDY8L2J1Zz4uIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIHNlbmRmaWxlIHN1cHBvcnQgdG8gZGVmYXVsdCBzZXJ2bGV0LCB3aXRoIGEgc2VuZGZpbGVTaXplIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlLgogICAgICAgIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBJZiBBUFIgYXMgd2VsbCBhcyBUb21jYXQncyBKTkkgd3JhcHBlciBmb3IgQVBSIGFyZSBwcmVzZW50LCB1c2UgQVBSaXplZCBwcm90b2NvbCBoYW5kbGVycwogICAgICAgIGluc3RlYWQgb2YgdGhlIHJlZ3VsYXIgb25lcyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yMjYxNzwvYnVnPjogV2hlbiB1c2VkIHdpdGggYW4gRUpCIGNvbnRhaW5lciBhbmQgYSByZWFsbSB0aGF0IHN1cHBvcnRzIHRoZSBjb25jZXB0CiAgICAgICAgb2YgYW4gdW5hdXRoZW50aWNhdGVkIHVzZXIgKEoyRUUuMy40LjMpIEJBU0lDIGF1dGhlbnRpY2F0aW9uIHdhcyBhbHdheXMgYXV0aGVudGljYXRpbmcKICAgICAgICB1c2VycyBhcyB0aGUgdW5hdXRoZW50aWNhdGVkIHVzZXIgd2l0aG91dCBnaXZpbmcgdGhlbSBhIGNoYW5jZSB0byBzdXBwbHkgYSB1c2VybmFtZSBhbmQKICAgICAgICBwYXNzd29yZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBQcmV2ZW50IGZhY2FkZSBvYmplY3RzIGNsb25pbmcgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBtaXNzaW5nIENHSSB2YXJpYWJsZXMgdG8gU1NJIHNlcnZsZXQuIFBhdGNoIHN1Ym1pdHRlZCBieSBGcml0eiBTY2huZWlkZXIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDU3ODwvYnVnPjogVXBkYXRlZCBKTkRJUmVhbG0gY29tbWVudC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MjczPC9idWc+OiBCZXR0ZXIgQm9vdHN0cmFwIHdhcm5pbmcgbWVzc2FnZS4gW1BhdGggZnJvbSBSYWxmIEhhdXNlcl0gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM0Njc1PC9idWc+OiBVcGRhdGVkIFByb3h5LUhvd1RvIHBhZ2Ugd2l0aCBTZXJ2bGV0IEFQSSBjYWxscy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0NTQ2PC9idWc+OiBGaXggcHJvYmxlbSB3aGVyZSB0aGUgImZpcnN0IiBWYWx2ZSBjb3VsZG4ndCBiZSByZW1vdmVkIGZyb20gYSBQaXBlbGluZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBOUEUgd2hlbiBQT1NUIHNpemUgZXhjZWVkcyBsaW1pdCBkZWZpbmVkIGJ5IG1heFBvc3RTaXplLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBGT1JNIGF1dGhlbnRpY2F0aW9uIHNvIFBPU1RlZCBwYXJhbWV0ZXJzIGFyZSBub3QgYXNzdW1lZCB0byBiZSBlbmNvZGVkIHdpdGggcGxhdGZvcm0KICAgICAgICBkZWZhdWx0IGVuY29kaW5nLiBBIHNpZGUgZWZmZWN0IG9mIHRoaXMgZml4IGlzIHRoYXQgdGhlIGJvZGllcyBvZiBQT1NUIHJlcXVlc3RzIHRoYXQKICAgICAgICByZXF1aXJlIEZPUk0gYXV0aGVudGljYXRpb24gYXJlIG5vdyBidWZmZXJlZCBhbmQgbWFkZSBhdmFpbGFibGUgYWZ0ZXIgYSBzdWNlc3NmdWwgbG9naW4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDg0MDwvYnVnPjogQmV0dGVyIGhhbmRsaW5nIG9mIGV4dGVybmFsIFdBUnMgcmVkZXBsb3ltZW50LCBhbmQgaWdub3JlIGRvY0Jhc2Ugc3BlY2lmaWVkCiAgICAgICAgaW4gY29udGV4dCBmaWxlIGlmIHdpdGhpbiB0aGUgSG9zdCBhcHBCYXNlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggaGFuZGxpbmcgb2Ygc3ltYm9saWMgbGlua3Mgd2hlbiB0aGUgRGVmYXVsdFNlcnZsZXQgaXMgZ2VuZXJhdGluZyBkaXJlY3RvcnkKICAgICAgICBsaXN0aW5ncy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1NzY5PC9idWc+OiBDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIGphdmF4Lm5hbWluZy5Db250ZXh0LmNvbXBvc2VOYW1lKCBOYW1lLCBOYW1lKQogICAgICAgIGluIG11bHRpcGxlIHBsYWNlcy4gUGF0Y2ggcHJvdmlkZWQgYnkgTGF1cmVudCBTaW1vbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0ODA1PC9idWc+OiBBZGQgd2FybmluZyBmb3Igc3VzcGljaW91cyBzZWN1cml0eSBwYXR0ZXJucywgYXMgc3VnZ2VzdGVkIGJ5IFJhbGYgSGF1c2VyLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU4MTk8L2J1Zz46IFVzZSBnZXRXb3JrUGF0aCBmb3IgZGVsZXRpbmcgd29yayBkaXJlY3Rvcnkgb24gY29udGV4dCBkZXN0cm95LCBhcyBzdWdnZXN0ZWQKICAgICAgICAgIGJ5IFJvYiBTdGVlbGUuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgIlNtYXJ0IENhcmRzIiBhcyB0cnVzdC9rZXlTdG9yZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBzb21lIE1iZWFuIGF0dHJpYnV0ZXMgYW5kIG9wZXJhdGlvbnMgdG8gQ2hhbm5lbFNvY2tldCAocGVybykKICAgICAgPC91cGRhdGU+ICAgIAogICAgICA8YWRkPgogICAgICAgIEFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIGJhc2VkIEhUVFAvMS4xIHByb3RvY29sIGhhbmRsZXIsIHdpdGggU1NMIHN1cHBvcnQgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBzdXBwb3J0IGZvciBzaW1wbGUgZmlsZS1iYXNlZCBDUkxzIHVuZGVyIEpESyAxLjUgKGJpbGxiYXJrZXIpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBleHBlcmltZW50YWwgTklPLVNvY2tldCBjaGFubmVsIGZvciB0aGUgQUpQLzEuMyBDb25uZWN0b3IgKGJpbGxiYXJrZXIpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQ2NDg8L2J1Zz46IEFkZCBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgSVAtYmFzZWQgVmlydHVhbCBIb3N0cy4gKGJpbGxiYXJrZXIpCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIHRoZSBBSlAvMS4zIENvbm5lY3RvciB0byBiZSBhYmxlIHRvIGhhbmRsZSBtb3JlIGFkdmFuY2VkIEFjdGlvbnMuIChiaWxsYmFya2VyKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggY29ubmVjdG9yIGluaXRpYWxpc2F0aW9uIHNvIHNzbFByb3RvY29sIGlzIG5vdCByZXF1aXJlZCBmb3IgU1NMLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBidWZmZXJTaXplIG9wdGlvbiB0byB0aGUgQUpQLzEuMyBKYXZhIGNvbm5lY3RvciB0byBjb250cm9sIG91dHB1dCBidWZmZXJpbmcuIChiaWxsYmFya2VyKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBcGFjaGUgUG9ydGFibGUgUnVudGltZSBiYXNlZCBBSlAvMS4zIHByb3RvY29sIGhhbmRsZXIgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIERlbGF5IHJlYWRpbmcgdGhlIGluaXRhbCByZXF1ZXN0IGJvZHkgcGFja2V0IGJ5IGRlZmF1bHQgZm9yIHRoZSBBSlAvMS4zIEphdmEgY29ubmVjdG9yLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjE4NDc3PC9idWc+OiBBbGxvdyBzeW1ib2xpYyBsaW5rcyB3aGVuIHByZWNvbXBpbGluZyBKU1BzIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDI3MjwvYnVnPjogQWxsb3cgc3BlY2lmeWluZyB0aGUgT3B0aW9uIGNsYXNzIHVzZWQgYnkgdGhlIEphc3BlciBlbmdpbmUsCiAgICAgICAgc3VibWl0dGVkIGJ5IFNjb3R0IFN0YXJrIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBTdXBwb3J0IGZvciBKYXZhIDUuMCBpbiBKU1BzIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBKYXZhIDUgd2lsbCBiZSB0aGUgc291cmNlIGFuZCB0YXJnZXQgZm9yIEpTUHMgd2hlbiBydW5uaW5nIG9uIEphdmEgNSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNDY1MjwvYnVnPjogQWRkIHRoZSBhYmlsaXR5IHRvIGdldCBTTUFQcyB3aGVuIHByZWNvbXBpbGluZywgc3VibWl0dGVkIGJ5CiAgICAgICAgRGFyeWwgUm9iYmlucyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDQ2NTwvYnVnPjogSnNwYyBmYWlsdXJlIGlmIHRoZXJlIGlzIG5vIHdlYi54bWwgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU2OTY8L2J1Zz46IE1ha2UgY2VydGFpbiB0aGF0IHJlbGVhc2UgaXMgY2FsbGVkIGZvciBjdXN0b20gdGFncyAKICAgICAgICAgd2hlbiB0YWctcG9vbGluZyBpcyBkaXNhYmxlZC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzUzODY8L2J1Zz46IE1ha2UgdXNlQmVhbiByZXNvdXJjZXMgdXNlIGNvbnNpc3RlbnQgc3BlbGxpbmcsIGZyb20gS3VydCBIdXdpZy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMzNTIyPC9idWc+OiBVcGRhdGUgamFzcGVyLWhvd3RvIHRvIHJlZmxlY3QgdXNlIG9mIGphdmFjIHN3aXRjaC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM1MTE0PC9idWc+OiBBZGQgZmFpbE9uRXJyb3IgZmxhZyB0byBKc3BDLCBieSB6aXdldGguICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTQxMDwvYnVnPjogRml4ZWQgTlBFIGluIEpzcFdyaXRlckltcGwuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNTU3MTwvYnVnPjogSnNwQyByZXNvbHZlZCB1cmlSb290IHJlbGF0aXZlIHRvIEFudCBwcm9qZWN0IGJhc2VkaXIsIGlmIGFueSwgYXMgc3VnZ2VzdGVkCiAgICAgICAgICBieSBKYXNvbiBQZXR0aXNzLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4gICAgICAgIAogICAgICA8YWRkPgogICAgICAgIEFkZCB0aGF0IGNsdXN0ZXIgY2FuIGNvbmZpZ3VyZSBhcyBFbmdpbmUgYW5kIEhvc3QgZWxlbWVudC4gKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgIAogICAgICA8YWRkPgogICAgICAgIEFkZCBzaW5nbGUgY2x1c3RlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZWxlbWVudCAtIGRpc2N1c3NlZCBhdCBKQVggMjAwNSBjb25mZXJlbmNlIENsdXN0ZXIgV29ya3Nob3AuIChwZXJvKQogICAgICA8L2FkZD4gICAgICAKICAgICAgPGZpeD4KICAgICAgICBGaXggcmVzZW5kIEdFVF9BTExfU0VTU0lPTlMgd2hlbiB3YWl0IEFDSyBmYWlsZWQgYXQgcmVjZWl2ZXIgc2lkZSAocGVybykKICAgICAgPC9maXg+ICAKICAgICAgPGZpeD4KICAgICAgICBDbHVzdGVyVmFsdmUgbm93IHJlbW92ZSBmcm9tIGNvbnRhaW5lciBlbGVtZW50IHdoZW4gY2x1c3RlciBzdG9wcyBhbmQgYWRkZWQgd2l0aCBuZXh0IHN0YXJ0IGFnYWluLiAocGVybykKICAgICAgPC9maXg+ICAgICAKICAgICAgPGFkZD4KICAgICAgICBTZXQgdGltZXN0YW1wIG9ubHkgYXQgZmlyc3QgdGltZSBpbnNpZGUgU2Vzc2lvbk1lc3NhZ2VJbXBsIChwZXJvKQogICAgICA8L2FkZD4gICAgCiAgICAgIDxhZGQ+CiAgICAgICBTZXQgdGltZXN0YW1wIGZyb20gZmluZHNlc3Npb25zIG1ldGhvZCBjYWxsLCB3aGVuIGhhbmRsaW5nIEdFVF9BTExfU0VTU0lPTgogICAgICAgdG8gYWxsIFNFTkRfU0VTU0lPTl9EQVRBIGFuZCBUUkFOU0ZFUiBjb21wbGV0ZSBtZXNzYWdlcy4gKHBlcm8+CiAgICAgIDwvYWRkPgogICAgICA8YWRkPiAKICAgICAgIERyb3AgYWxsIHJlY2VpdmVkIG1lc3NhZ2UgaW5zaWRlIEdFVF9BTExfU0VTU0lPTiBtZXNzYWdlIHF1ZXVlIGJlZm9yZSBzdGF0ZSAKICAgICAgIHRyYW5zZmVyIG1lc3NhZ2UgdGltZXN0YW1wLiAocGVybykKICAgICAgPC9hZGQ+ICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQ2x1c3RlciBwaW5nIG5vdyB0cmFuc2ZlciBjbHVzdGVyIGRvbWFpbiBpbmZvcm1hdGlvbiBhbmQgRGVsdGFNYW5hZ2VyIG9ubHkKICAgICAgICBzZW5kIGFuZCByZWNlaXZlIG1lc3NhZ2UgZnJvbSBzYW1lIGRvbWFpbiBtZW1iZXJzIChwZXJvKQogICAgICA8L2FkZD4gICAgICAKICAgICAgPGFkZD4KICAgICAgICBKTVggU3VwcG9ydCBmb3IgTWNhc3RTZXJ2aWNlIChNZW1iZXJzaGlwKSAocGVybykKICAgICAgPC9hZGQ+ICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgUmVkZXNpZ24gU2ltcGxlVGNwQ2x1c3RlciBtZXNzYWdlIHJlY2VpdmluZyB0byBDbHVzdGVyUmVjZWl2ZXJCYXNlIChwZXJvKQogICAgICA8L2FkZD4gICAgICAKICAgICAgPGFkZD4KICAgICAgICBDbHVzdGVyIHRyYW5zZmVyIGFsbCBhdHRyaWJ1dGVzIHRvIHRoZSBnZW5lcmF0ZSBzZXNzaW9uIG1hbmFnZXIgYXQgYWRkTWFuYWdlci4gCiAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGF0dHJpYnV0ZXMgYXQgU2ltcGxlVGNwQ2x1c3RlciBhbmQgUmVwbGljYXRpb25UcmFuc21pdHRlciAocGVybykKICAgICAgPC9hZGQ+ICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIERlbHRhTWFuYWdlcjoKICAgICAgICAgIC0gY3JlYXRlU2Vzc2lvbiBjYWxsIG5vdyBNYW5hZ2VyQmFzZSBzdXBlciBjbGFzcyBtZXRob2QKICAgICAgICAgIC0gZXh0cmFjdCBzb21lIGxvbmcgbWV0aG9kcwogICAgICAgICAgLSBzZW5kIEdFVF9BTExfU0VTU0lPTiB3aXRoIHNlc3Npb24gYmxvY2tzCiAgICAgICAgICAtIGRvbid0IHN5bmMgc2Vzc2lvbnMgbWFwIHdoZW4gc2VuZCBhbGwgc2Vzc2lvbnMgKHBlcm8pICAKICAgICAgPC91cGRhdGU+ICAgICAgICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBkZXZlbG9wZXIgYWN0aW9ucyBhdCB0by1kby50eHQgKFByb3Bvc2FsIG9mIGNoYW5nZXMpIChwZXJvKSAgCiAgICAgIDwvdXBkYXRlPiAgICAgICAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBTbWFsbCByZWZhY3RvcmluZ3MgYXQgRmFzdEFzeW5jU29ja2V0U2VuZGVyIChwZXJvKSAgCiAgICAgIDwvdXBkYXRlPiAgICAgICAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWRlc2lnbiBjbHVzdGVyIG1lc3NhZ2Ugc2VuZGluZyB0byBsZXNzZXIgY3B1IGFuZCBtZW1vcnkgdXNhZ2UuIAogICAgICAgIFNldCBhdCBSZXBsaWNhdGlvblRyYW5zbWl0dGVyI2NvbXByZXNzPWZhbHNlIGFzIGRlZmF1bHQuIENoYW5nZSBBUEkgZnJvbQogICAgICAgIENsdXN0ZXJTZW5kZXIsIFJlcGxpY2FpdG9uVHJhbnNtaXR0ZXIsIERhdGFTZW5kZXIsIFNpbXBsZVRjcENsdXN0ZXIgKHBlcm8pICAKICAgICAgPC91cGRhdGU+ICAgICAgICAgIAogICAgICA8YWRkPgogICAgICAgIERlbHRhTWFuYWdlciBoYXMgbm93IEpNWCBleHBpcmVBbGxMb2NhbFNlc3Npb25zIGFuZCBwcm9jZXNzRXhpcHJlIG9wZXJhdGlvbiAKICAgICAgICBmb3IgYmV0dGVyIGNsdXN0ZXIgbm9kZSBzaHV0ZG93biBoYW5kbGluZyAodXNlZnVsbCBmb3IgdGVzdGluZyBvbmx5KSAocGVybykgICAKICAgICAgPC9hZGQ+ICAKICAgICAgPGFkZD4KICAgICAgICBEYXRhU2VuZGVyIGRvV2FpdEFja1N0YXRzIGZvciBiZXR0ZXIgdW5kZXJzdGFuZGluZyB3YWl0IGFjayBwcm9ibGVtcyAocGVybykgICAKICAgICAgPC9hZGQ+ICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciBEZWx0YU1hbmFnZXIgYW5kIGFkZCBjb3VudGVyIGZvciBjbHVzdGVyIG1lc3NhZ2Ugc2VuZC9yZWNlaXZlIG1lc3NhZ2UgKHBlcm8pICAKICAgICAgPC91cGRhdGU+ICAgICAgICAgIAogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQzODk8L2J1Zz46UG9ydGluZyBDbHVzdGVyaW5nIGZpeCBwYWNrIHRvIDUuNS4xMCBjb2RlIGJhc2UuCiAgICAgICAgUmVtb3ZlIHN5bmNob25pemVkIGZyb20gRGF0YVNlbmRlci5wdXNoTWVzc2FnZSgpLiBWZXJ5IG9mZmVuIHRoZSAKICAgICAgICBjb21wbGV0ZSBjbHVzdGVyIGJsb2NraW5nIGFmdGVyIHJlcGxpY2F0ZWQgYSBidWxrIG9mIG5ldyBzZXNzaW9uIG1lc3NhZ2VzIHVuZGVyIGhlYXZ5IGxvYWQuCiAgICAgICAgQWxsIGNsdXN0ZXIgbm9kZSBzdGFuZGluZyBmb3IgYSBsb3Qgb2YgdGltZSBhbmQgbWFkZSBub3RoaW5nLiAKICAgICAgICBGaXggaXQgZm9yIHBvb2xlZCwgYXN5bmNocm9ub3VzIGFuZCBmYXN0YXN5bmNxdWV1ZSByZXBsaWNhdGlvbiBtb2RlLiBWZXJ5IGJhZCB0aGluZywgc29ycnkhIChwZXJvKSAgCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBub3RpZnlTZXNzaW9uTGlzdGVuZXJzT25SZXBsaWNhdGlvbiBhdHRyaWJ1dGUgdG8gU2ltcGxlVGNwQ2x1c3RlciB0byBzdG9wIG5vdGlmeSAKICAgICAgICBldmVudCB0byBTZXNzaW9uTGlzdGVuZXIgYXQgYmFja3VwIG5vZGVzIGZyb20gY3JlYXRlIGFuZCBkZXN0cm95IHJlcGxpY2F0ZWQgc2Vzc2lvbiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGNvbXByZXNzIGF0dHJpYnV0ZSB0byBDbHVzdGVyU2VuZGVyIGFuZCBDbHVzdGVyUmVjZWl2ZXIgaW50ZXJmYWNlLiBOb3cgY29tcHJlc3MgY29uZmlnCiAgICAgICAgdHJhbnNmZXIgZnJvbSBzZW5kZXIgdG8gcmVjZWl2ZXIgYXQgU2ltcGxlVGNwQ2x1c3Rlci4gKHBlcm8pIAogICAgICA8L2FkZD4gICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIENsdXN0ZXJWYWx2ZSBpbnRlcmZhY2UgYW5kIGltcGxlbWVudCBpdCBhcyBSZXBsaWNhdGlvblZhbHZlIGFuZCBKdm1Sb3V0ZUJpbmRlclZhbHZlLiBOb3cgYm90aAogICAgICAgIFZhbHZlcyBjYW4gYmUgZGlyZWN0bHkgY29uZmlndXJlZCBhdCBzZXJ2ZXIueG1sIEhvc3QvQ2x1c3Rlci9WYWx2ZSBzdWJlbGVtZW50cy4KICAgICAgICBBbHNvIHRoaXMgY29uZmlndXJhdGlvbiBhcmUgY29ycmVjdGx5IGhhbmRsZWQgd2l0aCB0aGUgU3RvcmVDb25maWcgbW9kdWxlLiAocGVybykgIAogICAgICA8L2FkZD4gICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgRGVhY3RpdmF0ZSBEYXRhU2VuZGVyIGtlZXBBbGl2ZU1heFJlcXVlc3RDb3VudCBjaGFuZ2UgZGVmYXVsdCB0byAtMS4gCiAgICAgICAgQ2x1c3RlciByZXBsaWNhdGlvbiBzb2NrZXRzIGFyZSBmYXN0IGFuZCB2ZXJ5IHN0YWJsZSEgKHBlcm8pICAKICAgICAgPC91cGRhdGU+ICAgICAgICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIFNldHVwIEp2bVJvdXRlQmluZGVyVmFsdmUgYXMgaG9zdCB2YWx2ZSBpbnN0ZWFkIGNvbnRleHQgdmFsdmUuIFJlZmFjdG9yIHRoZSBBUEkgYSBsaXR0bGUgYml0LiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRG9uJ3QgaW5jcmVtZW50IG9wZW4gc29ja2V0IGNvdW50ZXIgYmVmb3JlIHNvY2tldCBpcyByZWFsbHkgb3Blbi4gQWRkIHNvY2tldCBvcGVuIGZhaWx1cmVzIGNvdW50ZXIgKHBlcm8pIAogICAgICA8L2ZpeD4gIAogICAgICA8YWRkPgogICAgICAgIEFkZCBNZXNzYWdlTGlzdGVuZXIgc3VwcG9ydCB0byBjbHVzdGVyIHNlcnZlci54bWwgZWxlbWVudCAoQ2x1c3Rlckxpc3RlbmVyKSB0byAKICAgICAgICByZWdpc3RlciB5b3VyIG93biBjbHVzdGVyIG1lc3NhZ2UgcmVjZWl2ZXIgKHBlcm8pCiAgICAgIDwvYWRkPiAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIExpZmVjeWNsZUxpc3RlbmVyIHN1cHBvcnQgdG8gY2x1c3RlciBzZXJ2ZXIueG1sIGVsZW1lbnQgKExpc3RlbmVyKQogICAgICAgIGFuZCBub3RpZnkgdGhvc2UgbGlzdGVuZXIgZnJvbSBzdGFydC9zdG9wIGNsdXN0ZXIsCiAgICAgICAgYWRkL3JlbW92ZSBzZXNzaW9uIG1hbmFnZXIsIHNlbmRpbmcgZmF1bHQgYW5kIHN0YXJ0L3N0b3AgbWVtYmVyICAocGVybykKICAgICAgPC9hZGQ+ICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgYWN0aXZlIGJhY2tncm91bmRQcm9jZXNzIGtlZXBBbGl2ZSB0aW1lb3V0IGFuZCByZXF1ZXN0IGNvdW50IHNvY2tldCBjbG9zZSBjaGVjawogICAgICAgIGF0IFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIuICBDaGVjayBmcmVxdWVuY3kgY2FuIGJlIGNoYW5nZSB3aXRoIGF0dHJpYnV0ZSAKICAgICAgICBwcm9jZXNzU2VuZGVyRnJlcXVlbmN5IChkZWZhdWx0IDIpLiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgUmVtb3ZlIHVzZWxlc3MgSmRrMTNSZXBsaWNhdGlvbkxpc3RlbmVyLEpkazEzT2JqZWN0UmVhZGVyLiAKICAgICAgICBBZGQgU29ja2V0UmVwbGljYXRpb25MaXN0ZW5lciBhbmQgU29ja2V0T2JqZWN0UmVhZGVyIHRvIGhhdmUgbmF0aXYgc29ja2V0IENsdXN0ZXJSZWNlaXZlci4gCiAgICAgICAgQWxzbyBleHRyYWN0IENsdXN0ZXJSZWNlaXZlckJhc2Ugc3VwZXJjbGFzcyBmb3IgU29ja2V0UmVwbGljYXRpb25MaXN0ZW5lciBhbmQgUmVwbGljYXRpb25MaXN0ZW5lciAocGVybykgCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBhbmQgdXBkYXRlIHNvbWUgQVBJIGFuZCB0aGUgPGEgaHJlZj0iY2x1c3Rlci1ob3d0by5odG1sIj5jbHVzdGVyIGhvd3RvIGRvY3VtZW50YXRpb248L2E+IChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciBSZXBsaWNhdGlvblZhbHZlIGZvciBiZXR0ZXIgdW5kZXJzdGFuZGluZyBhbmQgc21hbGwgb3B0aW1pemF0aW9uIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBTdGFydGluZyBhIHVuaXQgdGVzdCBzdWl0ZSBmb3IgY2x1c3RlciBtb2R1bGUgLSB2ZXJ5IG11Y2ggdG9kbyAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGFudCBidWlsZC54bWwgdG8gZGlyZWN0IGNvbXBpbGUgYXQgY2x1c3RlciBtb2R1bGUgZGlyZWN0b3J5IChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggc29tZSBJMThOIG1lc3NhZ2VzLCBidXQgYSBsb3Qgb2Ygd29yayBpcyB3YWl0aW5nIGZvciBmaXggKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBSZXBsaWNhdGlvblZhbHZlIE1iZWFucyBzdGF0cyBhdHRyaWJ1dGUgZ2V0dGVyIGFuZCByZXNldFN0YXRpc3RpY3Mgb3BlcmF0aW9uIChwZXJvKQogICAgICA8L2FkZD4KICAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU3NTg8L2J1Zz46IEFkbWluIHdlYmFwcCBtaXNoYW5kbGluZyBkaWdlc3QgYXR0cmlidXRlIG9mIEpEQkNEYXRhU291cmNlUmVhbG0uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDI1MDwvYnVnPjogQWRtaW4gd2ViYXBwIENvbW1pdCBDaGFuZ2VzIGJ1dHRvbiBub3cgYXNrcyBmb3IgY29uZmlybWF0aW9uLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQ4MTg8L2J1Zz46IEFsdGVybmF0aW5nIHJvdyBmb3IgYXBwcyBpbiBIVE1MIG1hbmFnZXIsIGFzIHN1Z2dlc3RlZCBieSBKZWZmCiAgICAgICAgICBEb21leWVyLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzUzNzk8L2J1Zz46IEFkZGVkIGNvbW1vbnMtbG9nZ2luZyB0byBidWlsZCBwYXRoIG9mIG1hbmFnZXIgYW5kIGhvc3QtbWFuYWdlciBhcHBzLAogICAgICAgICAgdG8gbWFrZSB0aGVtIGJ1aWxkIHdpdGggSmlrZXMsIGFzIHN1Z2dlc3RlZCBieSBBYXJvbiBJc290dG9uLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS45ICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBBZGQgSlVMSSwgYSBqYXZhLnV0aWwubG9nZ2luZyBpbXBsZW1lbnRhdGlvbiwgdXNlZCB0byBwcm92aWRlIHNhbmUgZGVmYXVsdHMgYW5kCiAgICAgICAgY29uZmlndXJhYmlsaXR5IGVxdWl2YWxlbnQgdG8gVG9tY2F0IDQuMCBmb3IgVG9tY2F0IDUuNSBsb2dnaW5nIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGRvY3M+CiAgICAgICAgQWRkIEpVTEkgZG9jdW1lbnRhdGlvbiB0byB0aGUgbG9nZ2luZyBwYWdlIChyZW1tKQogICAgICA8L2RvY3M+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGhvc3QgbWFuYWdlciB3ZWJhcHAgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBhbnQgSmtTdGF0dXNVcGRhdGVUYXNrIGZvciByZW1vdGUgc3RhdHVzIHdvcmtlciBoYW5kbGluZyAoID49bW9kX2prIDEuMi45KSAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zMzczOTwvYnVnPjogQWRkIHJlZmVyZW5jZSB0byBSVU5OSU5HLnR4dCBpbiBzZXR1cC5odG1sLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM3MTk8L2J1Zz46IFVwZGF0ZSByZWZlcmVuY2UgdG8gQW50IGRvd25sb2FkIHBhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzg4MzwvYnVnPjogQmFkIG9wdGlvbnMgaW4gU1NMLUhvd1RvLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBNWDRKIDMuMC4xIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM0MTM5PC9idWc+OiBVcGRhdGVkIFJlYWxtLUhvd1RvIHRvIHNwZWNpZnkgSk1YLCBDb21tb25zLUxvZ2dpbmcgamFycyBmb3IgUmVhbG1CYXNlLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzMzMjU8L2J1Zz46IEFkZGVkIHRvcC1sZXZlbCBjbGVhbiB0YXJnZXQgdG8gTmV0YnVpbGQgYnVpbGQueG1sIGZpbGUuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMzc1NTwvYnVnPjogQ2xhcmlmaWVkIFBvc3RncmVzcWwgSk5ESSBkYXRhc291cmNlIGV4YW1wbGUuIFtwYXRjaCBzdWJtaXR0ZWQgYnkKICAgICAgICAgIFRvbSBXaXRtZXJdICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBzb21lIGluc3RhbmNlcyBvZiBleHBhbmRlZCBmb2xkZXIgcmVtb3ZhbCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRG9uJ3QgY2FsbCBta2RpcnMgaWYgd2UncmUgbm90IGdvaW5nIHRvIHNhdmUgdGhlIGNvbmZpZ3VyYXRpb24gaW4gU3RhbmRhcmRDb250ZXh0IChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggY29udGV4dCBjbGFzc2xvYWRlciBiaW5kaW5nIGR1cmluZyBsb2FkZXIgaW5pdGlhbGl6YXRpb24gKGl0IHdhcyBzZXQgdG8gbnVsbCBiZWZvcmUpIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBUaGUgd2ViYXBwIGxvZ2dlciBzaG91bGQgb25seSBiZSByZXRyaWV2ZWQgd2hlbiB0aGUgY29udGV4dCBjbGFzc2xvYWRlciBpcyBzZXQgdG8gdGhlIAogICAgICAgIHdlYmFwcCdzIGNsYXNzbG9hZGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MTcwPC9idWc+OiBBZGQgYmFjayByZXRyeSBsb2dpYyBpbiBKREJDIHJlYWxtIGluIGNhc2Ugb2YgYSBjb25uZWN0aW9uIGZhaWx1cmUgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjIwNDE8L2J1Zz46IFN1cHBvcnQgZHluYW1pYyBwcm94aWVzIGFzIHNlc3Npb24gb2JqZWN0cy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggbG9nZ2VyIG5hbWVzIGZvciB3cmFwcGVycyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDAwNjwvYnVnPjogSWYgYW50aVJlc291cmNlTG9ja2luZyB3YXMgdXNlZCwgSG9zdENvbmZpZyBjb25zaWRlcmVkIHRoZSBwYXRoIGFzIGV4dGVybmFsLAogICAgICAgIGFuZCB3ZWIgYXBwbGljYXRpb24gcmVzb3VyY2VzIHdlcmUgbm90IGNvcnJlY3RseSByZW1vdmVkIG9yIHRhY2tlZDsgYWxzbyBzaW1wbGlmeSB0aGUgY29kZSBhIGxvdAogICAgICAgIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MDE2PC9idWc+OiBTYXZlIGFuZCByZXN0b3JlIGRvY0Jhc2Ugd2hlbiB1c2luZyBhbnRpUmVzb3VyY2VMb2NraW5nLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoCiAgICAgICAgdGhlIGFkbWluIHdlYmFwcCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zMzYzNjwvYnVnPjogU2V0IGxhc3RNb2RpZmllZCBhdHRyaWJ1dGUgd2hlbiBleHBhbmRpbmcgV0FSIGZpbGVzLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzI5Mzg8L2J1Zz46IEFsbG93IFNhbHRlZCBTSEEgKFNTSEEpIHBhc3N3b3JkcyBpbiBKTkRJUmVhbG0uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zMTI4ODwvYnVnPjogQWxsb3cgU01UUCBhdXRoZW50aWNhdGlvbiBmb3IgSk5ESSBNYWlsU2Vzc2lvbkZhY3RvcnkuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSGFybW9uaXplIHByb2Nlc3Npbmcgb2YgdGhlIGNvbnRleHQueG1sIGRlZmF1bHRzIHdpdGggdGhlIHdheSB3ZWIueG1sIGlzIHByb2Nlc3NlZAogICAgICAgIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBJZ25vcmUgJzsnIGlmIGl0IGlzIGluIHRoZSBxdWVyeSBzdHJpbmcgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIHByaXZhdGUgdG8gcHJvdGVjdGVkIGZvciB0aGUgd2ViYXBwIGNsYXNzbG9hZGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGxvZ2dpbmcgb2YgZmlsdGVycyBhbmQgbGlzdGVuZXJzIHN0YXJ0dXAgZXJyb3JzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNzc0PC9idWc+OiBSZXRyeSBvbmNlIGluIEpOREkgcmVhbG0gYXV0aGVudGljYXRlIGZhaWx1cmUgcmVnYXJkbGVzcyBvZiB0aGUgCiAgICAgICAgZXhjZXB0aW9uIG1lc3NhZ2UgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM5NjE8L2J1Zz46IERvbid0IGVuY29kZSAnficgaW4gY29udGV4dCBwYXRocyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjg2NjwvYnVnPjogUHJvcGFnYXRlIGRpc3RyaWJ1dGFibGUgcHJvcGVydHkgZnJvbSBjb250ZXh0IHRvIG1hbmFnZXIgKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyODY3PC9idWc+OiBSZXNldCBkaXN0cmlidXRhYmxlIGF0dHJpYnV0ZSBpbiBjb250ZXh0IGZvciBjbGVhbiByZWxvYWQgaGFuZGxpbmcgKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgIEZpeCBzb21lIFJlYWxtQmFzZS9KTkRJUmVhbG0gbG9nLmlzWFhYRW5hYmxlZCAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgICA8YnVnPjM0MTYxPC9idWc+OiBIYXJtb25pemUgU3RhbmRhcmRDb250ZXh0LnN0b3Agd2l0aCBDb250YWluZXJCYXNlLnN0b3AgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgIDwvc3Vic2VjdGlvbj4KICAgCiAgIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzOTcxPC9idWc+OiBTZXQgcmVtb3RlSG9zdCB0byBudWxsIHdoZW4gQXBhY2hlIGRvZXNuJ3Qgc2VuZCBvbmUuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggY2FsY3VsYXRpb24gb2YgdGhyZWFkUmF0aW8gZm9yIHRoZSBtcyB0aHJlYWQgcG9vbCwgYW5kIGZpeCBzZXR0aW5nIHRoZSB1cGRhdGVkCiAgICAgICAgdGltZW91dCB2YWx1ZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRoZSBtcyB0aHJlYWQgcG9vbCBzbyB0aGF0IHdlIGFsbG9jYXRlIGEgd29ya2VyIGJlZm9yZSBhY2NlcHRpbmcgYSBuZXcgc29ja2V0LAogICAgICAgIGFuZCB3YWl0IGEgbGl0dGxlIGlmIHRoZSBwb29sIGlzIGV4aGF1c3RlZDsgdGhpcyBzaG91bGQgbWFrZSBsb3cgbWF4VGhyZWFkcyB2YWx1ZXMgd29yayBhIAogICAgICAgIGxvdCBiZXR0ZXIgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzM4NTc8L2J1Zz46IFVwZGF0ZSBpbmZvcm1hdGlvbiBvbiBhdXRvbWF0aWMgbW9kX2prIGNvbmZpZ3VyYXRpb24gaW4gQXBhY2hlLUhvd1RvICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHN5bmMgYmxvY2sgcGxhY2VtZW50IGluIE1hcHBlci5hZGRDb250ZXh0IChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzQxPC9idWc+OiBGaXggc3BlbGxpbmcgb2YgImNvbW1pdHRlZCIgW3BhdGNoIGZyb20gQmVuIFNvdXRoZXJdICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDEzMzwvYnVnPjogTWFrZSBzZXRIZWFkZXIgY2xlYXIgbXVsdGktdmFsdWVkIGhlYWRlcnMgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgIDwvY2hhbmdlbG9nPgogICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQwMzQ8L2J1Zz46IEphc3BlciBkb2VzIG5vdCByZXNwZWN0IGV4dGVybmFsIGVudGl0aWVzIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzODEwPC9idWc+OiBJbmNvcnJlY3QgcmVjeWNsaW5nIG9mIEJvZHlDb250ZW50IGlmIGNsb3NlIGlzIGNhbGxlZCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUGVyIGluc3RhbmNlIGxvZ2dlcnMgaW4gSmFzcGVyIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAgCiAgIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggSnZtUm91dGVCaW5kZXJWYWx2ZSBwcmltYXJ5IGZhaWxvdmVyIGF0dHJpYnV0ZSB0bwogICAgICAgIG9yZy5hcGFjaGUuY2F0YWxpbmEuY2x1c3Rlci5zZXNzaW9uLkp2bVJvdXRlT3JpZ25hbFNlc3Npb25JRCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ2hhbmdlIGF0dHJpYnV0ZSBuYW1lIHdhaXRGb3JBY2sgdG8gc2VuZEFjayBhdCBSZXBsaWNhdGlvbkxpc3RlbmVyIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBJbnRlZ3JhdGUgbmV3IGZhc3Rhc3luY3F1ZXVlIGNsdXN0ZXIgc2VuZGVyIG1vZGUuCiAgICAgICAgU3VwcG9ydCBxdWV1ZSBzaXplIGxpbWl0YXRpb24sCiAgICAgICAgZ2V0IGFsbCBxdWV1ZWQgb2JqZWN0cyBhbmQgc2VuZCBpdCB0byB0aGUgYmFja3VwIG5vZGUsCiAgICAgICAgbm8gcXVldWUgdGhyZWFkIGxvY2sgY29udGVudGlvbiB1bmRlciBoaWdoIHJlcGxpY2F0aW9uIGxvYWQsCiAgICAgICAgc3VibWl0dGVkIGJ5IFJhaW5lciBKdW5nIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgY29tcHJlc3MgYXR0cmlidXRlIHRvIFNlbmRlciBhbmQgUmVjZWl2ZXIgdG8gdHJhbnNmZXIgZGF0YSB1bmNvbXByZXNzZWQuIAogICAgICAgIEF0IGhpZ2ggY2x1c3RlciBsb2FkIHRoaXMgb3B0aW9uIGNvbnN1bWUgbGVzc2VyIGNwdSBhbmQgbWVtb3J5LgogICAgICAgIEltcGxlbWVudCB0aGUgY29tcHJlc3MgaGFuZGxpbmcgdG8gUmVwbGljYXRpb25UcmFuc21pdHRlciwgUmVwbGljYXRpb25MaXN0ZW5lciwgCiAgICAgICAgWEJ5dGVCdWZmZXIgYW5kIEpkazEzUmVwbGljYXRpb25MaXN0ZW5lciAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGRvUHJvY2Vzc2luZ1N0YXRzIHRvIHN5bmNocm9ub3VzLCBhc3luY2hyb25vdXMgYW5kIGZhc3RxdWV1ZWFzeW5jIHNlbmRlciBtb2RlcwogICAgICAgIHRvIGdldCBtaW4sIGF2ZywgbWF4IHByb2Nlc3NpbmcgdGltZXMgYXMgSURhdGFTZW5kZXIgSk1YIE1CZWFucyAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgVGNwVGhyZWFkUG9vbCB1c2UgY29uc3RhbnQgQUNLIGJ5dGUgYXJyYXkgaW5zdGVhZCBjcmVhdGUgCiAgICAgICAgbmV3IDMgYnl0ZSBidWZmZXIgZm9yIGV2ZXJ5IG1lc3NhZ2UgYWNrIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciBSZXBsaWNhdGlvblRyYW5zbWl0dGVyIGFuZCBSZXBsaWNhdGlvbkxpc3RlbmVyIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBhZGQgZ2V0Q2F0YWxpbmFDbHVzdGVyKCkgdG8gQ2x1c3RlclJlY2VpdmVyIGFuZCBTaW1wbGVUY3BDbHVzdGVyIChwZXJvKQogICAgICA8L3VwZGF0ZT4gICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRoZSBBcGkgZG9jdW1lbnRhdGlvbiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICAgPC9zdWJzZWN0aW9uPgogICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgICA8Y2hhbmdlbG9nPgogICAgICAgPHVwZGF0ZT4KICAgICAgICAgVXNlIHRoZSBzdGFuZGFyZCBzdHJ1dHMgdGFnbGliIFVSSXMgaW4gYWRtaW4gSlNQcy4gKGJpbGxiYXJrZXIpCiAgICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBBZGQgbW9yZSBob3N0IHBhcmFtZXRlcnMgdG8gY3JlYXRlIG5ldyBob3N0IHdpdGggaG9zdC1tYW5hZ2VyIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MDMzPC9idWc+OiBGaXggcXVvdGluZyByZWxhdGVkIGJ1Z3MgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM3MTM8L2J1Zz46IEFkZCBTdHJ1dHMgaW5pdCBjb2RlIGluIGZyYW1lc2V0LmpzcCBhcyB3ZWxsIChyZW1tKQogICAgICA8L2ZpeD4KICAgICA8L2NoYW5nZWxvZz4KICAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjggKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMyMDQ8L2J1Zz46IEZpeGVkIFNTTCBIb3dUbyBwYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMzNTE8L2J1Zz46IEZpeCBzaWxlbnQgdW5pbnN0YWxsYXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNDg5PC9idWc+OiBNaXNzaW5nIHNwYWNlIGluIHVuaW5zdGFsbGVyIG1lc3NhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgVW5yZWdpc3RlciBob3N0IG1iZWFuIGFuZCBhbGwgY29udGV4dCBtYmVhbnMgYXQgcmVtb3ZlIGEgaG9zdCwgcy4gU3RhbmRhcmRIb3N0LmRlc3Ryb3koKSBhbmQgTUJlYW5GYWN0b3J5LmNyZWF0ZVN0YW5kYXJkSG9zdC9yZW1vdmVIb3N0KCwpIGRldGVjdGVkIGJ5IFRob3JzdGVuIEthbWFubiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgbWFrZSBpdCBwb3NzaWJsZSB0byByZXN0YXJ0IGNvbm5lY3Rvciwgbm93IHNlcnZlcnNvY2tldCByZWNyZWF0ZWQgYWZ0ZXIgc3RvcCxzdGFydCAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgY2hhbmdlIG1iZWFuIG5hbWVzIGZyb20gTWFwcGVyIGFuZCBQcm90b2NvbEhhbmRsZXIgdG8gY29ubmVjdG9yIG5hbWluZyBzdHlsZSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHNvbWUgbG9nLmlzWFhYRW5hYmxlZCAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRGVyZWdpc3RlciBNYXBwZXJMaXN0ZW5lciBhZnRlciByZW1vdmUgY29ubmVjdG9yIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgaG9zdCBvbmx5IGF0IG93biBkb21haW4gd2l0aCBzYW1lIG5hbWUgYXQgYWxsIHNlcnZpY2VzLCBkZXRlY3RlZCBieSBUaG9yc3RlbiBLYW1hbm4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMxODc8L2J1Zz46IFJlbW92ZSBhbnkgbG9nZ2luZyBvZiB0aGUgcGFzc3dvcmQgaW4gdGhlIEpBQVMgcmVhbG0sCiAgICAgICAgc3VibWl0dGVkIGJ5IEFuZHJldyBKYXF1aXRoIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMDMzPC9idWc+OiBEb24ndCBkbyBhbnl0aGluZyB0byB0aGUgcmVzcG9uc2UgaW4gdGhlIEVycm9yUmVwb3J0VmFsdmUKICAgICAgICBpZiBkYXRhIGhhcyBhbHJlYWR5IGJlZW4gd3JpdHRlbiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGNoYXJzZXQgc3VwcG9ydCBmb3IgdGhlIFVSTHMgdXNlZCBieSB0aGUgdGFza3MsIHRvIHJlbW92ZSBkZXByZWNhdGlvbiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yNjEzNTwvYnVnPjogV29ya2Fyb3VuZCBmb3IgbWVtb3J5IGxlYWsgd2hlbiByZWxvYWRpbmcgU3RydXRzCiAgICAgICAgYmFzZWQgd2ViIGFwcGxpY2F0aW9ucyBieSBjbGVhcmluZyB0aGUgYmVhbiBpbnN0cm9zcGVjdG9yIGNhY2hlIG9mIHRoZSBKVk0gb24KICAgICAgICBjbGFzc2xvYWRlciBzdG9wLCBzdWJtaXR0ZWQgYnkgVG9iaWFzIExvZnN0cmFuZC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBFbnN1cmUgdGhhdCBpZiBDTEFTU1BBVEggaXMgZGVjbGFyZWQgb24gc3RhcnR1cCAtIGl0IGlzIG5vdCB1c2VkLiAoZnVua21hbikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEFkZCBiYWNrIHVzZSBvZiBkZXBsb3lPblN0YXJ0dXAgaW4gSG9zdENvbmZpZyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxkb2NzPgogICAgICAgICBBbnQgdGFza3MgZG9jcyBwYXRjaGVzLCBzdWJtaXR0ZWQgYnkgR2FicmllbGUgR2FydWdsaWVyaS4gKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgVXNlIE5JTyBmb3IgdGhlIHJhdyBjb3B5aW5nIG9wZXJhdGlvbiwgYXMgaXQgaXMgZmFzdGVyIChhIGxpdHRsZSB1bmRlciAzMCUpLCAKICAgICAgICAgYW5kIGRlY3JlYXNlcyBhIGxpdHRsZSB0aGUgaW1wYWN0IG9mIGFudGlSZXNvdXJjZUxvY2tpbmcuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zMzM1NzwvYnVnPjogRml4IGNvbm5lY3Rpb24gbGVha3Mgd2l0aCB0aGUgRGF0YVNvdXJjZVJlYWxtLCBhcyB3ZWxsIAogICAgICAgICBhcyBpbXByb3ZlIGVmZmljaWVuY3ksIHN1Ym1pdHRlZCBieSBEb21pbmlrIERyemV3aWVja2kuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgSW1wcm92ZSBhIGxpdHRsZSBsb2dnaW5nIG9mIHNlcnZsZXQgZXhjZXB0aW9ucywgd2hpY2ggc2hvdWxkIGFsbCBsb2cgdGhlIHJvb3QgY2F1c2UuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgQWRkIG5ldyBNYW5hZ2VyLmNyZWF0ZVNlc3Npb24oc2Vzc2lvbklkKSBtZXRob2QsIGFsbG93aW5nIHRoZSBjbGllbnQgdG8gInNwZWNpZnkiIHRoZSBzZXNzaW9uIGlkIHdoaWNoIHNob3VsZCBiZSB1c2VkIHVzaW5nIGEgY29va2llCiAgICAgICAgIHdoZW4gdXNpbmcgZW1wdHlTZXNzaW9uUGF0aD0idHJ1ZSIuIFRoaXMgZml4ZXMgc2Vzc2lvbiB0cmFja2luZyBpbiB0aGlzIGNhc2UuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zMzM2ODwvYnVnPjogRml4IG1lbW9yeSBsZWFrIGluIHN3YWxsb3dPdXRwdXQgZmVhdHVyZSB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSB0aHJlYWQgcG9vbCBzaXplIGlzCiAgICAgICAgIHJlZHVjZWQsIHN1Ym1pdHRlZCBieSBSYWluZXIgSnVuZy4gKHJlbW0pCiAgICAgIDwvZml4PgoJICA8Zml4PgogICAgICAgICAgU3RvcmVDb25maWc6IGNhbid0IHNhdmUgY2x1c3RlciBNZW1iZXJzaGlwIGVsZW1lbnQgKHBlcm8pCiAgICAgICA8L2ZpeD4KCSAgPGFkZD4KICAgICAgICAgIFN0b3JlQ29uZmlnOiBzdXBwcmVzcyBkZWZhdWx0IGprSG9tZSBhdHRyaWJ1dGUgYXQgY29ubmVjdG9yICAocGVybykKICAgICAgPC9hZGQ+CgkgIDxhZGQ+CiAgICAgICAgICBTdG9yZUNvbmZpZzogU2F2ZSBuZXcgZHltYW5pYyBwcm9wZXJ0aWVzIGZyb20gUmVwbGljYXRpb25UcmFuc21pdHRlciAgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjMzNDYzPC9idWc+OiBSZW1vdmUgYXR0cmlidXRlcyBhZnRlciBjb250ZXh0IGRlc3Ryb3kuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zMzU3MjwvYnVnPjogY29udGV4dC54bWwgc2hvdWxkIGJlIGEgcmVkZXBsb3kgcmVzb3VyY2UsIGFuZCBhZGQgcHJpb3JpdGl6YXRpb24gZm9yCiAgICAgICAgIHJlZGVwbG95IHJlc291cmNlcy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgICBQb29sVGNwRW5kcG9pbnQgcmVjcmVhdGUgU2VydmVyU29ja2V0IGFmdGVyIHN0YXJ0LHN0b3Asc3RhcnQgY29ubmVjdG9yIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgc29tZSBsb2cuaXNYWFhFbmFibGVkIChwZXJvKQogICAgICA8L3VwZGF0ZT4KCSAgPGFkZD4KCSAgICBKa01YOiBtYWtlIGxvZzRqIG1iZWFuIGNvbmZpZ3VyYWJsZSB3aXRoIGF0dHJpYnV0ZSBsb2c0akVuYWJsZWQgKHBlcm8pCgkgIDwvYWRkPgoJICA8Zml4PgoJICAgIFdoZW4gVG9tY2F0IHJ1bnMgb24gV2luZG93cyBhbmQgSUUgaXMgdXBsb2FkaW5nIGRhdGEgdG8gdGhlIHNlcnZlciwgdGhlIGZpcnN0IHJlYWQgCgkgICAgbXVzdCBiZSBhdCBsZWFzdCA4S0IsIG90aGVyd2lzZSB1cGxvYWQgc3BlZWQgaXMgZXh0cmVtZWx5IGxvdywgc3VibWl0dGVkIGJ5IE5vZWwgCgkgICAgUm9jaGVyIChyZW1tKQoJICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KIAogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMyMjM8L2J1Zz46IHBhZ2VDb250ZXh0LmZvcndhcmQgYW5kIGpzcDppbmNsdWRlIHJlc3VsdAogICAgICAgIGluIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMzczPC9idWc+OiBGaXggaGFuZGxpbmcgb2YgY29udGV4dCBjbGFzc2xvYWRlciBpbiBqc3BjIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNTM4PC9idWc+OiBJZ25vcmUgZXhhbXBsZSBhbmQgdGFnLWV4dGVuc2lvbiBlbGVtZW50cyBpbiBUYWdMaWJyYXJ5SW5mb0ltcGwuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzUzOTwvYnVnPjogQmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiB1bmtub3duIGVsZW1lbnQgaXMgZW5jb3VudGVyZWQgaW4gdGhlIHRhZyBmaWxlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMyMTk8L2J1Zz46IE1pbm9yIEpzcFNlcnZsZXRXcmFwcGVyIGNvZGUgY2xlYW51cC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8Zml4PgogICAgICAgICAgQWRkIGluc3RhbmNlIGJhc2VkIFJlcGxpY2F0aW9uVmFsdmUgc3RhdGlzdGljcyB0byBNYmVhbiBkZXNjcmlwdG9yIChwZXJvKQogICAgICAgPC9maXg+CiAgICAgICA8Zml4PgogICAgICAgICAgQmV0dGVyIEkxOE4gc3VwcG9ydCB0byBjbHVzdGVyIHNlc3Npb24gYW5kIHRjcCBjbGFzc2VzIChwZXJvKQogICAgICAgPC9maXg+CiAgICAgICA8YWRkPgogICAgICAgICAgU3VwcG9ydCBvcHRpb25hbCBwcmltYXJ5SW5kaWNhdG9yIGF0IFJlcGxpY2F0aW9uVmFsdmUgdG8gbWFyayB0aGF0IAogICAgICAgICAgcmVxdWVzdCBwcm9jZXNzaW5nIHRvIGV4aXN0aW5nIHNlc3Npb24gaXMgYXQgcHJpbWFyeSBjbHVzdGVyIG5vZGUuIAogICAgICAgICAgRWFzeSBmYWlsb3ZlciBkZXRlY3Rpb24sIHdoZW4gbWFyayBpcyBub3QgYXQgCiAgICAgICAgICBjb25maWd1cmFibGUgcHJpbWFyeUluZGljYXRvciBhdHRyaWJ1dGUsIHN1Ym1pdHRlZCBieSBSYWluZXIgSnVuZyAocGVybykKICAgICAgIDwvYWRkPgogICAgICAgPHVwZGF0ZT4KICAgICAgICAgIFJlZmFjdG9yIGFsbCBpbXBsZW1lbnRhdGlvbiBmcm9tIGludGVyZmFjZSBJRGF0YVNlbmRlcnMgKHBlcm8pCiAgICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICAgIEFkZCBzb21lIHVzZWZ1bGwgYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9ucyB0byB0aGUgYWxsIHNlbmRlciBNQmVhbnMuIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgICBBZGQga2VlcEFsaXZlIGFuZCB3YWl0Rm9yQWNrIGhhbmRsaW5nIHRvIEFzeW5jU29ja2V0U2VuZGVyIGFuZCBmYWN0b3Igb3V0IGEgRGF0YVNlbmRlciBiYXNlIGNsYXNzLihwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgICA8YWRkPgogICAgICAgICAgUmVwbGljYXRpb25UcmFuc21pdHRlcjogRW5hYmxlIGFuZCBEaXNhYmxlIGF1dG9yZWNvbm5lY3Qgc2VuZGVyIGFuZCB3YWl0Rm9yQWNrLiAocGVybykKICAgICAgIDwvYWRkPgogICAgICAgPGFkZD4KICAgICAgICAgIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXI6IHRyYW5zZmVyIGFsbCBwcm9wZXJ0aWVzIHRvIHNvY2tldCBzZW5kZXIgZnJvbSBzZXJ2ZXIueG1sIGNvbmZpZ3VyYXRpb24uIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggY3JlYXRlIGFuZCByZW1vdmUgSG9zdCBmb3IgQWRtaW4gYXBwLiAocGVybykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjcgKHJlbW0pIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGluc3RhbGxlciBmb3IgbW9kX2prIG9uIElJUy4gKG10dXJrKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBOZXcgc3RvcmUgY29uZmlnIG1vZHVsZSBmb3IgYmV0dGVyIHNlcnZlci54bWwgc2F2aW5nIHN1cHBvcnQuPGJyLz4KICAgICAgICBBZGQgJmx0O0xpc3RlbmVyIGNsYXNzTmFtZT0ib3JnLmFwYWNoZS5jYXRhbGluYS5zdG9yZWNvbmZpZy5TdG9yZUNvbmZpZ0xpZmVjeWNsZUxpc3RlbmVyIiAvJmd0OyB0byB5b3VyIHNlcnZlci54bWwgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIwODE8L2J1Zz46IFJlbW92ZSB0aGUgSkRLIHJlcXVpcmVtZW50IGZyb20gdGhlIFVuaXggc2NyaXB0cywgc3VibWl0dGVkCiAgICAgICAgYnkgQmVuIFNvdXRoZXIgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI5NTM8L2J1Zz46IFNFUlZMRVRBUEk6IFhTUyBJc3N1ZXMsIHN1Ym1pdHRlZCBieSBNYXJrIFRob21hcyAoamZhcmNhbmQpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBjb21tb25zLWRpZ2VzdGVyIDEuNiwgSkRUIDMuMC4xLCBNWDRKIDIuMS4wLCBTdHJ1dHMgMS4yLjYgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgICBGaXJzdCBpbnRlZ3JhdGlvbiBhdCBTdG9yZUNvbmZpZyB0byBTdGFuZGFyZFNlcnZlciAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjcxNCA8L2J1Zz46IERvbid0IG1ha2UgdGhlIEFjY2Vzc0xvZ1ZhbHZlIGZpbmFsIChmdW5rbWFuKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNjk0PC9idWc+OiBGaXggYmFkIGNvZGUgdG8gbWFrZSBkb2NCYXNlIHBhdGggYWJvc2x1dGUgaW4gYW50aUxvY2tpbmcKICAgICAgICBtZXRob2QuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzEzPC9idWc+OiBGaXggcmVzb3VyY2UtZW52LXJlZiBoYW5kbGluZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEyMDE8L2J1Zz46IEltcHJvdmUgaTE4biBzdXBwb3J0IGluIERlZmF1bHRTZXJ2bGV0LiBUaGlzIHdhcyBjYXVzaW5nCiAgICAgICAgcHJvYmxlbXMgd2l0aCBKU1AgaW5jbHVkZSBhY3Rpb25zIGFuZCBzdGF0aWMgZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIHNvbWUgbG9nLmlzWFhYRW5hYmxlZCB0byBvLmEuYy5jb3JlLlN0YW5kYXJkSG9zdCBTdGFuZGFyZEVuZ2luZSwgU3RhbmRhcmRTZXJ2aWNlIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBGZWF0dXJlIGFkZGl0aW9uIHRvIGFkZCBSZWRpcmVjdG9yIGFuZCBmYWlsT25FcnJvciBzdXBwb3J0IGZvciBhbGwgQ2F0YWxpbmEgQW50IHRhc2tzLAogICAgICAgIHN1Ym1pdHRlZCBieSBHYWJyaWVsZSBHYXJ1Z2xpZXJpIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMTk4PC9idWc+OiBGaXggRk9STSBhbmQgRElHRVNUIGF1dGhlbnRpY2F0aW9uIGZvciBub24tQVNDSUkKICAgICAgICB1c2VybmFtZXMgYW5kIHBhc3N3b3Jkcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZWltcGxlbWVudCBjaGFyc2V0IG1hcHBlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIGxvZ2dpbmcgb2YgZXhjZXB0aW9uIHdoaWNoIGNvdWxkIG9jY3VyIHdoZW4gcmV0cmlldmluZyB0aGUgcGFzc3dvcmQgaW4gSkRCQ1JlYWxtIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI1ODg5PC9idWc+OiBEb24ndCBleGVjdXRlIHF1ZXJpZXMgdHdpY2UsIHN1Ym1pdHRlZCBieSBUb20gQW5kZXJzb24gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI4MzI8L2J1Zz46IHJlcXVlc3QuZ2V0U2Vzc2lvbihmYWxzZSkgZmFpbHMgdG8gcmV0dXJuIG51bGwgKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI4MjIyPC9idWc+OiByZXF1ZXN0LmdldFJlcXVlc3RVUkwoKSBpbiBmb3J3YXJkZWQganNwL3NlcnZsZXQgcmV0dXJucwogICAgICAgIG9yaWdpbmFsIHVybCByYXRoZXIgdGhhbiBuZXcgdXJsIGFzIHBlciBTUlY4LjQgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMTU3PC9idWc+OiBGaXggaGFuZGxpbmcgb2YgdGhlIGJ1ZmZlciBsZW5ndGggZm9yIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHBhcnNpbmcgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzA4PC9idWc+OiBCZXR0ZXIgaGFuZGxpbmcgb2YgYmFkIGVuY29kaW5nIHdpdGggdGhlIHN0cmluZyBjYWNoZS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3ODE8L2J1Zz46IEZpeCBiYWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlICJzY2hlbWUiIGZpZWxkIG9mIHRoZSByZXF1ZXN0CiAgICAgICAgb2JqZWN0LCB3aGljaCB3b3VsZCBjYXVzZSBnZXRTY2hlbWUgdG8gcmV0dXJuICJodHRwIiBmb3IgdGhlIGZpcnN0IHJlcXVlc3QuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDb250ZW50IGxlbmd0aCBzaG91bGQgYmUgaWdub3JlZCBpZiB0aGVyZSBpcyBjaHVua2luZyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIG1vc3QgZGVwcmVjYXRpb24gcHJvYmxlbXMgZm9yIHRoZSBBSlAgY29ubmVjdG9yIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjc0NjwvYnVnPjogQXZvaWQgSkFSIGxvY2tpbmcgd2hlbiBsb2FkaW5nIGNsYXNzZXMgYW5kIGltcHJvdmUgbG9hZGluZwogICAgICAgIHBlcmZvcm1hbmNlIGJ5IHRha2luZyBhZHZhbnRhZ2Ugb2YgY2FjaGluZywgc3VibWl0dGVkIGJ5IERvbWluaWsgRHJ6ZXdpZWNraS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8Zml4PgogICAgICAgICAgY29ycmVjdCBKdm1Sb3V0ZVNlc3Npb25JREJpbmRlckxpc3RlbmVyIE1CZWFuIG5hbWUgdG8gJmx0O2RvbWFpbiZndDs6dHlwZT1MaXN0ZW5lcixuYW1lPUp2bVJvdXRlU2Vzc2lvbklEQmluZGVyTGlzdGVuZXIsaG9zdD0mbHQ7aG9zdCZndDsgKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBKTVggc3VwcG9ydCB0byBTaW1wbGVUY3BDbHVzdGVyLCBSZXBsaWNhdGlvblRyYW5zbWl0dGVyIGFuZCBhbGwgc2VuZGVycyAocGVybykKICAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRoZSB3ZWJEQVYgc2VydmxldCBzbyBpdCBjYW4gYmUgdXNlZCB2aWEgYW55IGFyYml0cmFyeSBtYXBwaW5nCiAgICAgICAgKGVnIC93ZWJkYXYvKikgdG8gZWRpdCB0aGUgY29udGVudHMgb2YgYSB3ZWIgYXBwbGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjcyOTwvYnVnPjogU3RvcCBpcyBvcHRpb25hbCBhbmQgbWF5IGZhaWwsIHNvIGl0IG5lZWRzIHRvIGJlIGluIGEgc2VwYXJhdGUgdHJ5L2NhdGNoIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgdGhlIHJlbW92ZSBtZXRob2Qgb2YgdGhlIG1hbmFnZXIgc2VydmxldCwgYW5kIHVzZSB0aGUgdW5kZXBsb3kgbWV0aG9kIGluc3RlYWQgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3Nzc8L2J1Zz46IEZhaWwgaWYgYXBwbGljYXRpb24gaXNuJ3QgY29uZmlndXJlZCBwcm9wZXJseSwgc3VibWl0dGVkIGJ5IEdhYnJpZWxlIEdhcnVnbGllcmkKICAgICAgICAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjc3MTwvYnVnPjogQ2Fubm90IHVuZGVwbG95L2RlcGxveSBtaXNjb25maWd1cmVkIGFwcCBhZnRlciB0b21jYXQgc3RhcnR1cCwKICAgICAgICBzdWJtaXR0ZWQgYnkgR2FicmllbGUgR2FydWdsaWVyaSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yODg2NzwvYnVnPjogQ29ycmVjdCBtYW5hZ2VyIGRvY3VtZW50YXRpb24gdG8gZG9jdW1lbnQgY29ycmVjdCB3YXkgdG8KICAgICAgICByZWZlcmVuY2UgdGhlIFJPT1QgY29udGV4dC4gU3VibWl0dGVkIGJ5IFN0ZXBoYW5lIEJhaWxsaWV6LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMwODU8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciBzZXR0aW5nIHByaXZpbGVnZWQgYXR0cmlidXRlIG9mIGNvbnRleHQKICAgICAgICB0byBhZG1pbiB3ZWJhcHAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzExNzwvYnVnPjogRml4IE9wZW4gYnVncyBsaW5rIGJyb2tlbiBvbiBkZWZhdWx0IGhvbWVwYWdlLgogICAgICAgIFBhdGNoIHN1cHBsaWVkIGJ5IFNhbmRlciBUZW1tZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGphdmFkb2MgZ2VuZXJhdGlvbiBmb3IgQ2F0YWxpbmEuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS42ICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyNTMyPC9idWc+OiB1cGRhdGVkIGxvZ2dpbmcgZG9jdW1lbnRhdGlvbi4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMzgyPC9idWc+OiBJbmRleCBwYWdlIGFuZCBwYWNrYWVkIFdBUiBmb3Igc2FtcGxlIHdlYmFwcC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNjAzPC9idWc+OiBVcGRhdGVkIGhvc3QueG1sIHRvIHJlZmxlY3QgYXBwQmFzZSByZXNvbHV0aW9uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEFkZCBjaGlsZCB0byB0aGUgbWFwIG9mIHRoZSBwYXJlbnQgYmVmb3JlIHN0YXJ0aW5nIGl0LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRGVjb3VwbGUgdXNhZ2Ugb2YgdGhlIHNjaGVtZSBhbmQgc2VjdXJlIGF0dHJpYnV0ZXMgZnJvbSBlbmFibGluZyBTU0wuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNTAyPC9idWc+OiBtZW1vcnkgbGVhayBpbiBEaWdlc3RBdXRoZW50aWNhdG9yLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjg3MDk8L2J1Zz46IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QuaXNSZXF1ZXN0ZWRTZXNzaW9uSWRWYWxpZCgpIHJldHVybnMgdHJ1ZSBmb3IgYW4gaW52YWxpZGF0ZWQgc2Vzc2lvbi4gKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMTM3PC9idWc+OiBQb3NzaWJsZSB0aHJlYWQtc2FmZXR5IGlzc3VlIGluIFJlYWxtQmFzZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjU4NTwvYnVnPjogQmV0dGVyIGhhbmRsaW5nIGZvciBjb250ZW50IGxlbmd0aCBncmVhdGVyIHRoYW4gSW50ZWdlci5NQVhfVkFMVUUgaW4gcmVzcG9uc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWxsb3cgQXBhY2hlQ29uZmlnIGFuZCBmcmllbmRzIHRvIGxpdmUgdW5kZXIgYW4gRW5naW5lLiAoYmlsbGJhcmtlcikKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU3luY3Jvbml6ZSBhY2Nlc3MgdG8gdGhlIEprIFJlcXVlc3QgcmVnaXN0cmF0aW9uIGNvdW50LiAoYmlsbGJhcmtlcikKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU3BlZWQgdGhlIE1zZ0NvbnRleHQgb24gaXRzIHdheSB0byBHQy4gKGJpbGxiYXJrZXIpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEtlZXAgY29ycmVjdCB0aHJlYWQgY291bnRzIGluIFRocmVhZCBwb29sIHdoZW4gdGhyZWFkIGVuZHMgaW4gYW4gZXhjZXB0aW9uIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlZCBKYXNwZXItSG93VG8gc2VjdGlvbiBvbiB1c2luZyBKaWtlcywgY2hhbmdlZCBjb25mL3dlYi54bWwgSlNQU2VydmxldCB0byByZWZlciBwZW9wbGUgdG8gSmFzcGVyLUhvd1RvIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGVzZSBpbnN0cnVjdGlvbnMgaW4gdHdvIHBsYWNlcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI1MDU8L2J1Zz46IEZpeCBoYW5kbGluZyBvZiBhbiBlbXB0eSBjb250ZXh0IHBhcmFtZXRlciAod2hpY2ggb2NjdXJyZWQgZXZlcnkgdGltZSB0aGUgSFRNTAogICAgICAgIG1hbmFnZXIgd2FzIHVzZWQgdG8gZGVwbG95IGEgbG9jYWwgd2FyIHdpdGhvdXQgc3BlY2lmeWluZyBhbHNvIGEgY29udGV4dCBmaWxlKS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjUgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIyMzU8L2J1Zz46IFN5bmMgY29uZi93ZWIueG1sIE1JTUUgdHlwZXMgd2l0aCBBcGFjaGUgaHR0cGQuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTEzMjwvYnVnPjogQmV0dGVyIC14Ly1yIHN1cHBvcnQgZm9yIE9TLzQwMCBpbiBzdGFydHVwIHNjcmlwdHMuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4yMjY3OTwvYnVnPjogQWRkZWQgbWlzYyBub3RlIG9uIGFjY2Vzc2luZyBzZXNzaW9uIElEIHRvIFNTTC1Ib3dUby4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KIDwhLS0gQnl0ZUJ1ZmZlckFjY2Vzc0xvZ1ZhbHZlLmphdmEgaXMgbm90IGluc2lkZSEhCiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGFuIGFzeW5jaHJvdW5vdXMgYWNjZXNzIGxvZyB2YWx2ZSBiYXNlZCBvbiBOSU8gKGpmYXJjYW5kKQogICAgICA8L3VwZGF0ZT4KIC0tPgogICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMjQ5PC9idWc+OiBVcGRhdGVkIGxvZ2dpbmcgZG9jdW1lbnRhdGlvbi4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMjgyPC9idWc+OiBNb2RpZnkgV2luZG93cyBVbmluc3RhbGxlciB0byBvbmx5IHJlbW92ZSB3ZWJhcHBzL1JPT1QgYW5kIHdlYmFwcHMgaWYgdXNlciBhc2tzIHRvIHJlbW92ZSBldmVyeXRoaW5nLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIzNzE8L2J1Zz46IG91dGRhdGVkIGludHJvZHVjdGlvbi54bWwgcGFnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMzczPC9idWc+OiBvdXRkYXRlZCBpbnN0YWxsYXRpb24ueG1sIHBhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjQ1NDwvYnVnPjogYW1lbmRlZCBKTkRJIGRvY3VtZW50YXRpb24gZm9yIEphdmFNYWlsL0phdmFBY3RpdmF0aW9uRnJhbWV3b3JrIHVzYWdlLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIxMzA8L2J1Zz46IEFkZCBzYWZldHkgY2hlY2sgdG8gRmlsZVN0b3JlI2tleXMgbWV0aG9kLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzIyNzY8L2J1Zz46IEFkZCBkZXZlbG9wZXIgaW5mbyB0byBSZWFsbSBIb3ctVG8uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjA4MjwvYnVnPjogQWRkZWQgcHJvdGVjdGVkIGdldFByaW5jaXBhbHMgbWV0aG9kIHRvIE1lbW9yeVJlYWxtIGZvciBlYXNpZXIgZXh0ZW5zaW9uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIwMjM8L2J1Zz46IENHSVNlcnZsZXQgZmFpbHMgdG8gaGFuZGxlIHBvc3QgbWVzc2FnZSB3aXRoIG11bHRpcGFydC9mb3JtIGRhdGEuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjI2OTwvYnVnPjogSk5ESVJlYWxtIGZhaWxzIHdpdGggSW52YWxpZE5hbWVFeGNlcHRpb24gdG8gYXV0aGVudGljYXRlIHVzZXJzIGlmIExEQVAgZGlzdGluZ3Vpc2hlZCBuYW1lIChETikgY29udGFpbnMgc2xhc2ggb3IgZG91YmxlIHF1b3RlIGNoYXJhY3RlcihzKS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgIE1vdmUgcHJvY2Vzc0V4cGlyZXNGcmVxdWVuY3kgY2hlY2sgdG8gTWFuYWdlckJhc2UgYW5kIHJlZmxlY3QgY2hhbmdlIHRvIGFsbCBzdWJjbGFzc2VzIChTdGFuZGFyZE1hbmFnZXIsIFBlcnNpZW50TWFuYWdlckJhc2UsIERlbHRhTWFuYWdlcikuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgRElHRVNUIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgdG8gdGhlIEpEQkMgYW5kIERhdGFTb3VyY2UgcmVhbG1zLiBTdXBwb3J0cyBib3RoIGRpZ2VzdGVkIGFuZCBjbGVhcnRleHQgcGFzc3dvcmRzLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI0Mjk8L2J1Zz46IENHSVNlcnZsZXQgY2FsY3VsYXRlcyBudW1iZXIgb2YgbGluZXMgcmVjZWl2ZWQgb24gc3RkZXJyIGluY29ycmVjdGx5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI0MzE8L2J1Zz46IEZpeCB0eXBvIGluIGNvZGUgdGhhdCBwYXNzZXMgZGF0YSB0byBDR0kgc2NyaXB0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI0MzA8L2J1Zz46IENsYXNzIGNhc3QgZXhjZXB0aW9uIGluIHRvU3RyaW5nKCkgbWV0aG9kIHdpdGhpbiBDR0kgc2VydmxldC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgQWRkIHNvbWUgbG9nLmlzWFhYRW5hYmxlZCBjaGVja3MgYXQgU3RhbmRhcmRDb250ZXh0IGFuZCBIb3N0Q29uZmlnIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IERlZmF1bHRDb250ZXh0IGFydGlmYWN0cyAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzIwMzE8L2J1Zz46IHVzaW5nIGNyZWF0ZUNvbm5lY3RvciB3aXRoICJodHRwIiBwcm90b2NvbCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEFkZCBjb25maWdGaWxlIGF0dHJpYnV0ZSBpbiBKTVggZGVzY3JpcHRvcnMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBGaXggYXV0b2RlcGxveWVyIGhhbmRsaW5nIG9mIGEgd2FyIHdoaWNoIGluY2x1ZGVzIGEgL01FVEEtSU5GL2NvbnRleHQueG1sLCBzbyB0aGF0IGl0IGlzCiAgICAgICAgIGNvcnJlY3RseSByZWdpc3RlcmVkIGFuZCBjYW4gYmUgcmVsb2FkZWQgY29ycmVjdGx5IChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zMjEzNzwvYnVnPjogVXNlIG9mIE1lc3NhZ2VEaWdlc3Qgc2hvdWxkIGJlIHN5bmNlZCBpbiBESUdFU1QgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBBZGQgaW5mbyBsb2cgd2hlbiB0aGUgYXV0b2RlcGxveWVyIHJlbG9hZHMgYSBjb250ZXh0IChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU21hbGwgSFRUUC8xLjEgb3B0aW1pemF0aW9uczogcmVwbGFjZSB1c2FnZSBvZiBTdHJpbmdzIHdpdGggY29uc3RhbnQgYnl0ZSBhcnJheXMsIGFuZAogICAgICAgIHNpbXBsaWZ5IHRoZSBjb2RlIGNvbnZlcnRpbmcgU3RyaW5ncyB0byBieXRlcyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgR3JlYXRseSByZWR1Y2UgdGhlIGFtb3VudCBvZiByZWN5Y2xlIG1ldGhvZCBjYWxscyBvbiB0aGUgYnVmZmVycyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+QWRkIG51bGwgT05hbWUgY2hlY2sgZm9yIFJlcXVlc3QgdW5yZWdpc3RyYXRpb24gaW4gSmssIHRvIHJlbW92ZQogICAgICAgICAgIGV4Y2VwdGlvbiB1bmRlciBKREsgMS41LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+PGJ1Zz4zMjI5MjwvYnVnPjogRG9uJ3Qgc2VuZCBrZWVwLWFsaXZlIGhlYWRlciB3aGVuIHRoZSBwcm90b2NvbAogICAgICAgICAgIGNhbid0IGJlIHBhcnNlZC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGVkIEpzcEMgdXNhZ2UgbWVzc2FnZXMgdG8gaW5jbHVkZSByZWNlbnRseSBhZGRlZCBjb25maWd1cmFibGUgcGFyYW1ldGVycy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMzMwPC9idWc+OiBKc3BDIGNoYW5nZXMgY29udGV4dCBjbGFzc2xvYWRlci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICAgPGFkZD4KICAgICAgICAgIEp2bVJvdXRlQmluZGVyVmFsdmUvSnZtUm91dGVTZXNzaW9uSURCaW5kZXJMaXN0ZW5lciB0byBiaW5kIGNsdXN0ZXIgc2Vzc2lvbiBhZnRlciBwcmltYXJ5IG5vZGUgZmFpbHVyZSBhdCBmaXJzdCBjYWxsaW5nIGJhY2t1cCBub2RlLgogICAgICAgICAgVGhpcyB3YXMgYW4gb3B0aW9uIHRvIGhhdmUgc2Vzc2lvbiBzdGlja3luZXNzIGFmdGVyIGNsdXN0ZXIgbm9kZSBjcmFzaGVkLiBXb3JrIG9ubHkgd2l0aCBKRVNTSU9OSUQgY29va2llcy4gKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBCZXR0ZXIgbG9nIHN1cHBvcnQgdG8gRGVsdGFNYW5hZ2VyIHRvIHNlZSBkZXRhaWwgaW5mb3JtYXRpb24gYXQgZGVidWcgbGV2ZWwuIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgICA8Zml4PgogICAgICAgICAgRml4IEZhcm1XYXJEZXBsb3llciBiYXNlZCBvbiBuZXcgSG9zdENvbmZpZyBkZXBsb3llci4gKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgICAgIDxmaXg+CiAgICAgICAgICBGYXJtV2FyRGVwbG95ZXIgY29udHJvbGxlZCBXYXJXYXRjaGVyIHdpdGggZW5naW5lIGJhY2tncm91bmRQcm9jZXNzIGNhbGwuCiAgICAgICAgICBBZGRlZCBwcm9jZXNzRGVwbG95RnJlcXVlbmN5IGF0dHJpYnV0ZSB0byBEZXBsb3llciBzZXJ2ZXIueG1sIGVsZW1lbnQuIChwZXJvKQogICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMDE5PC9idWc+OiBSZW1vdmUgbWF4bGVuZ3RoPTY0IHJlc3RyaWN0aW9uIG9uIGVudiBlbnRyeSB2YWx1ZXMgaW4gYWRtaW4gd2ViYXBwLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCB2YXJpb3VzIHByb2JsZW1zIGluIHJlYWxtIGRvY3MsIHN1Ym1pdHRlZCBieSBQaGlsIE1vY2VrLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGxvZzRqIGRvY3Mgc3VibWl0dGVkIGJ5IEFsbGlzdGFpciBDcm9zc2xleS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PjxidWc+MzIzODE8L2J1Zz46IEZpeCBwcm9ibGVtIHdoZXJlIEVMIGV4cHJlc3Npb24gaXMgdXNlZCBhcyBhCiAgICAgICAgcGxhY2UgaG9sZGVyIGluIHRoZSBhZG1pbiB3ZWJhcHAuCiAgICAgICAgU3VibWl0dGVkIGJ5IEFsbGlzdGFpciBDcm9zc2xleS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjQgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzE2NzE8L2J1Zz46IFVwZGF0ZSB3ZWIueG1sIGZpbGVzIHRvIDIuNCBzY2hlbWEgd2hlcmUgYXBwbGljYWJsZS4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMxOTEyPC9idWc+OiBBZGQgUE5HIGFuZCBDU1MgZmlsZSB0eXBlcyB0byByZXBsaWNhdGlvbiBmaWx0ZXIgZGVmYXVsdC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBBZGQgcHJvY2Vzc0V4cGlyZXNGcmVxdWVuY3kgdG8gUGVyc2lzdGVudE1hbmFnZXJCYXNlIGFuZCBtYWRlIHNvbWUgc21hbGwgSkRCQ1N0b3JlIG9wdGltaXphdGlvbnMgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlZ2lzdGVyIEpTUCBtb25pdG9yaW5nIG1iZWFuIGZvciBlYWNoIHNlcnZsZXQgdGhhdCBkZWNsYXJlcyBhIGpzcC1maWxlIGluIHdlYi54bWwuIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTU3ODwvYnVnPjogVXBkYXRlIE1hbmFnZXIgY29uZmlndXJhdGlvbiBkb2N1bWVudGF0aW9uLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEyNzM8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciBkZXJlZmFsaWFzZXMgaW4gSk5ESVJlYWxtLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE2MjM8L2J1Zz46IEJldHRlciBPUzQwMCBzdXBwb3J0IGluIHNldGNsYXNzcGF0aC5zaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBFeHRlbmQgYmFja2dyb3VuZCBwcm9jZXNzaW5nIHRvIG1vc3QgY29udGFpbmVyIGNvbXBvbmVudHMuIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgYWxsIE1YNEogcmVsYXRlZCBjb2RlLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVXBkYXRlIEpBUiBsaXN0IGluIFRsZENvbmZpZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIFJlZ2lzdGVyIGRhdGFzb3VyY2VzIHdpdGggSk1YLiBXaXRoIERCQ1AsIHRoaXMgaXMgZW5vdWdoIHRvIHByb3ZpZGUgSk1YIG1hbmFnZW1lbnQgYW5kIG1vbml0b3JpbmcuCiAgICAgICAgSXQgbWlnaHQgd29yayB3ZWxsIHdpdGggbWFueSBvdGhlciBkYXRhIHNvdXJjZXMgd2hpY2ggbWlnaHQgbm90IHJlZ2lzdGVyIHRoZW1zZWx2ZXMgaW4gSk1YCiAgICAgICAgYnV0IGRvIGV4cG9zZSB0aGVpciBzdHVmZiBpbiBhIGphdmEgYmVhbiBmYXNoaW9uLiAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGZvcmNlIHNlc3Npb24gY29va2llcyB0byBiZSBzZXQgdG8gdGhlIHJvb3QgcGF0aCAiLyIuIFRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkCiAgICAgICAgb24gbGFyZ2Ugc2VydmVycywgb3RoZXJ3aXNlIHRvbnMgb2YgY29va2llcyBtYXkgYmUgc2VudC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFdvcmthcm91bmQgZm9yIGNsaWVudCBzb2NrZXQgZXhjZXB0aW9ucyBvY2N1cnJpbmcgd2hpbGUgcnVubmluZyBhIENHSSwgd2hpY2ggY291bGQgY2F1c2UKICAgICAgICB0aGUgZXh0ZXJuYWwgcHJvY2VzcyB0byBoYW5nLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgT3B0aW1pemUgc2Vzc2lvbiBjb29raWUgSURzIGNvbnZlcnNpb24gdG8gU3RyaW5nLCBzaW5jZSB0aGlzIGlzIGFuIHVuYXZvaWRhYmxlIGFuZCB1bmNhY2hlYWJsZQogICAgICAgIG9wZXJhdGlvbi4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEFkZCBleHBsaWNpdCBlcnJvciBtZXNzYWdlIGlmIHRlbXAgZGlyIGRvZXMgbm90IGV4aXN0LCBhbmQgcmVtb3ZlIHVzZWxlc3MgY2FsbHMgdG8gaW5pdERpcnMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgYW4gb3B0aW1pemVkIGFjY2VzcyBsb2cgdmFsdmUsIHN1cHBvcnRpbmcgaGFyZGNvZGVkIHN1cHBvcnQgZm9yIHRoZSBjb21tb24gYW5kIGNvbWJpbmVkIHBhdHRlcm5zLAogICAgICAgIGFuZCBkb2luZyBhIG1ham9yaXR5IG9mIGl0cyB3cml0ZS10by1sb2dmaWxlIG9wZXJhdGlvbnMgYXN5bmNocm9ub3VzbHkuIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWdpc3RlciBhbiBNQmVhbiB0byBtb25pdG9yIGFuZCBtYW5hZ2UgdGhlIFN0cmluZ0NhY2hlLCBhbmQgYWxsb3cgaW52b2tpbmcgdGhlIHJlc2V0IG9wZXJhdGlvbi4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE2Nzc8L2J1Zz46IExvZyB3YXJuaW5nIGlmIHdvcmsgZGlyIGZvciBjb250ZXh0IGNhbid0IGJlIGRldGVybWluZWQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTkwMzwvYnVnPjogRml4IGNvbmRpdGlvbiB3aGljaCBzZWVtcyB0byBub3QgaGF2ZSBiZWVuIHByb3Blcmx5IHVwZGF0ZWQgYWZ0ZXIgYWRkaW5nCiAgICAgICAgZW50cnkuYmluYXJ5Q29udGVudCA9IG51bGwgYSBsaXR0bGUgYmVsb3csIHN1Ym1pdHRlZCBieSBKb2UgWmhvdS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFByZXZlbnQgc2lsZW50IE5QRXMgZHVyaW5nIFN0YW5kYXJkQ29udGV4dC5zdGFydCBkZWFsaW5nIHdpdGggSk1YIHJlZ2lzdHJhdGlvbiBvZiByZWFsbSwgc3VibWl0dGVkCiAgICAgICAgYnkgS2VpdGggV2FubmFtYWtlci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE1OTI8L2J1Zz46IFN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzIGZvciBkaWdlc3RzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzE3Mzk8L2J1Zz46IE1pbm9yIHJlYWxtLWhvd3RvIGFuZCBBSlAgY29ubmVjdG9yIGRvYyB1cGRhdGVzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE3NTM8L2J1Zz46IE1pbm9yIGluY29uc2lzdGVuY3kgYmV0d2VlbiBKREJDIGFuZCBEYXRhU291cmNlUmVhbG0jYXV0aGVudGljYXRlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzE2ODM8L2J1Zz46IE1pbm9yIGNsYXJpZmljYXRpb25zIHRvIHJlYWxtIGRvY3VtZW50YXRpb24uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgaTE4biBpbiBUQ1AgZW5kcG9pbnQsIGFuZCBhZGQgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMKICAgICAgICBpbiBzZXRTb2NrZXRPcHRpb25zLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTY2MzwvYnVnPjogVXNlIGludGVydmFsIGZpZWxkIGFzIHRoZSBkZWxheSBmb3IgbW9uaXRvciB0aHJlYWQuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgYmFkIHNodXRkb3duIGxvZ2ljIGZvciBtcyBwb29sIHN0cmF0ZWd5LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU3luYyB3aXRoIENvb2tpZSwgYnkgYWRkaW5nICcgJyBhcyBhIHNwZWNpYWwgY2hhci4gSWYgYSBzcGVjaWFsIGNoYXIgaXMgcHJlc2VudCwKICAgICAgICB0aGUgc3RyaW5nIHdpbGwgYmUgcXVvdGVkLiBJZiB0aGUgY2xpZW50IGRvZXNuJ3Qgc3VwcG9ydCBpdCwgdGhlIFN0cmluZyB3aWxsIG5vIGJlIHF1b3RlZCBhbnl3YXkKICAgICAgICBhbmQgbm8gSUFFIHdpbGwgYmUgdGhyb3duLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGFuIG9wdGlvbmFsIFN0cmluZyBjYWNoZSBmb3IgQnl0ZUNodW5rLnRvU3RyaW5nIGFuZCBDaGFyQ2h1bmsudG9TdHJpbmcuIFRoZSBjYWNoZSBpcwogICAgICAgIHVuc3luY2hyb25pemVkIGR1cmluZyBtb3N0IG9mIGl0cyBvcGVyYXRpb24sIGFuZCBpcyBzdGF0aWMgYWZ0ZXIgYSB0cmFpbmluZyBwZXJpb2QuIEFuIG9wZXJhdGlvbgogICAgICAgIGlzIHByb3ZpZGVkIHRvIGFsbG93IHJlc2V0dGluZyB0aGUgY2FjaGUuIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTdHJpbmcgY2FjaGluZyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIEJ5dGVDaHVuay4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEwOTA8L2J1Zz46IFVzZSBhIFVSTCBlbmNvZGVkIHBhdGggd2hlbiBzZXR0aW5nIHNlc3Npb24gY29va2llcy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICAgPGFkZD4KICAgICAgICAgIEFkZCBnZXRBdHRyaWJ1dGVOYW1lKCkgdG8gUHJvdG9jb2xIYW5kbGVyIHRvIGdldCBhbGwgYXR0cmlidXRlcyBhdCBydW50aW1lIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIEV4cG9zZWQgY29tcGlsZXJTb3VyY2VWTSBhbmQgY29tcGlsZXJUYXJnZXRWTSBvcHRpb25zIHRvIEpzcEMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgIDxmaXg+CiAgICAgICAgICBEZWx0YU1hbmFnZXIgYW5kIFNpbXBsZVRjcFJlcGxpY2F0aW9uTWFuYWdlciBnZW5lcmF0ZSBkb3VibGUganZtUm91dGUgKHBlcm8pCiAgICAgICA8L2ZpeD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBBZGQgc29tZSBtaXNzaW5nIEdldHRlcnMgYW5kIGxvZy5pc1hYWEVuYWJsZWRzIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNzA3PC9idWc+OiBCcm9rZW4gSmF2YVNjcmlwdCBjb25maXJtYXRpb24gaW4gSFRNTCBtYW5hZ2VyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBoYXJkLWNvZGVkIGFkbWluIGNvbnRleHQgcGF0aCBmcm9tIGFkbWluJ3MgYmFubmVyLmpzcC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBNYWpvciBjb25uZWN0b3IgZG9jcyB1cGRhdGUuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNzMyPC9idWc+OiBGaXggSmFwYW5lc2UgbG9jYWxpemF0aW9uIG9mIE1hbmFnZXIncyBsaXN0IG91dHB1dC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMyAoeW9hdnMpIj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzA1Njg8L2J1Zz46IEluY29tcGxldGUgc2V0dXAuaHRtbCBkb2N1bWVudGF0aW9uIGZvciBsYXVuY2hpbmcganN2Yy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZXBhY2thZ2UgbmFtaW5nIGZlYXR1cmVzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGRlcGxveWVyIHBhY2thZ2luZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBlbWJlZCBwYWNrYWdpbmcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggbWVtb3J5IGxlYWsgd2hlbiBTZWN1cml0eSBNYW5hZ2VyIGlzIHR1cm5lZCBvbi4gKGpmYXJjYW5kKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBXaGVuIGNoZWNraW5nIHN0YXR1cyBjb2RlcyBmb3IgZXJyb3IgaGFuZGxpbmcsIG9ubHkgY2hlY2sgaWYKICAgICAgICBSZXNwb25zZS5pc0Vycm9yKCkgaXMgdHJ1ZS4gVGhpcyB3YXksIHVzZXJzIG1heSB1c2Ugc2V0U3RhdHVzKCkgdG8gc2V0IHRoZWlyIG93bgogICAgICAgIGVycm9yIHN0YXR1cyB3aXRob3V0IGhhdmluZyB0aGUgZXJyb3IgcGFnZSBpbnZva2VkLiAoaW4gd2hpY2ggY2FzZSwgdGhlIHVzZXIgc2hvdWxkJ3ZlCiAgICAgICAgdXNlIHNlbmRFcnJvcigpKSAoZnVua21hbikKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIERpZ2VzdGVyIGNvZGUgZm9yIFhlcmNlcyB3b3JrYXJvdW5kLiAoamZhcmNhbmQpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEdpdmUgcHJvcGVyIHBlcm1pc3Npb24gdG8gdGhlIGJhbGFuY2VyIGFwcCB3aGVuIHJ1bm5pbmcgdW5kZXIgdGhlIHNlY3VyaXR5IG1hbmFnZXIuIChqZmFyY2FuZCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMDg2OTwvYnVnPjogTWFrZSBzdXJlIEpBQVMgcmVhbG0gbmFtZSBpcyBsZWdhbC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgIG1kNUhlbHBlciwgbWQ1RW5jb2RlciwgYW5kIG5vcm1hbGl6ZSBhcmUgdXNlZCBieSBXZWJkYXZTZXJ2bGV0LAogICAgICAgICAgbm90IERlZmF1bHRTZXJ2ZWx0IHNvIG1vdmUgdGhlbSBpbnRvIFdlYmRhdlNlcnZsZXQuCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEyNzc8L2J1Zz46IENsYXJpZmllZCBhdXRvbWF0aWMgYXBwbGljYXRpb24gZGVwbG95bWVudCBzZWN0aW9uIG9mIEhvc3QgY29uZmlndXJhdGlvbiBwYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICA8YnVnPjI4NjMxPC9idWc+OiBKQUFTUmVhbG0gZW5oYW5jZW1lbnRzIHRvIHN1cHBvcnQgY3VzdG9tIHVzZXIgYW5kIHJvbGUgY2xhc3NlcyAgdXNlIENvbW1vbnMtTG9nZ2luZy4gKHlvYXZzKQogICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICA8YnVnPjMxMzY0PC9idWc+OiBNaXNzaW5nIHJlc291cmNlIGluIG9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5Mb2NhbFN0cmluZy5wcm9wZXJ0aWVzLiAoeW9hdnMpCiAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgIDxidWc+MzEzNjI8L2J1Zz46IE1pc3NpbmcgLVhkZWJ1ZyBpbiBjYXRhbGluYS5iYXQgd2hlbiBsYXVuY2hpbmcgd2l0aCBKUERBIGFuZCBTZWN1cml0eS4gKHlvYXZzKQogICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICA8YnVnPjMxMzU2PC9idWc+OiBEdXBsaWNhdGVzIG5vdCBjb3VudGVkIGluIHNlc3Npb24gZ2VuZXJhdGlvbi4gKHlvYXZzKQogICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICA8YnVnPjMwOTQ5PC9idWc+OiBNYWtlIHN1cmUgQXBwbGljYXRpb25EaXNwYXRjaGVyIHVud3JhcHMgcmVxdWVzdC9yZXNwb25zZSBldmVuIGlmIGluY2x1ZGUgZXJyb3Igb2NjdXJzLiAoeW9hdnMpCiAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4ZWQgU3RhbmRhcmRDb250ZXh0LmdldFN0YXJ0VGltZSgpIHRvIHJldHVybiBhY3R1YWwgc3RhcnQgdGltZS9kYXRlIGluc3RlYWQgb2YgdGltZSAoc3RhcnR1cFRpbWUpIGl0IHRvb2sgdG8gc3RhcnQgY29udGV4dC4gKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBnZXRSZXF1ZXN0L2dldFJlc3BvbnNlIHNob3VsZCByZXR1cm4gdGhlIG1vc3QgcmVsZXZhbnQgaW50ZXJmYWNlLCB0byBhdm9pZCBjYXN0cy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBjaGVjayBmb3IgZGlyZWN0b3J5IGJlZm9yZSBjb25zaWRlcmluZyBzb21ldGhpbmcgaXMgYSBjb21wcmVzc2VkIFdBUi4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8ZG9jcz4KICAgICAgICBVcGRhdGUgdGhlIGNvbm5lY3RvciBkb2N1bWVudGF0aW9uLiAocmVtbSkKICAgICAgPC9kb2NzPgogICAgICA8Zml4PgogICAgICAgIFdoZW4gcGFyc2luZyBhIGNvbnRleHQgZmlsZSwgaWdub3JlIHRoZSAicGF0aCIgYXR0cmlidXRlOgogICAgICAgIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGl0IGlzIGFjY2VwdGFibGUgaXMgaW4gc2VydmVyLnhtbC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERpZ2VzdGVyIGhhbmRsaW5nIGZpeGVzOiBhbHdheXMgY2FsbCByZXNldCBpbiBhIGZpbmFsbHkgYmxvY2sgYWZ0ZXIgdXNpbmcgYSBkaWdlc3Rlci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSBtYW55IGZpZWxkcyBmcm9tIENvbm5lY3RvciwgYW5kIHRpZSB0aGUgY3JlYXRpb24gb2YgdGhlIENvbm5lY3RvciB0byB0aGUKICAgICAgICBjcmVhdGlvbiBvZiB0aGUgcHJvdG9jb2wgaGFuZGxlci4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSBwYWNrYWdlIHRyaWdnZXJzIGZyb20gdGhlIGNsYXNzbG9hZGVyLCB3aGljaCBzZWVtIHVzZWxlc3Mgd2hlbiB1c2luZyBKYXZhIDUuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBSZWFsbXMgd2lsbCBub3cgdXNlIHNldCBhdHRyaWJ1dGUgdG8gc2V0IHRoZW1zZWx2ZXMgaW4gdGhlaXIgY29udGFpbmVyIHdoZW4gdXNpbmcgSk1YLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IEpNWCByZWxhdGVkIG9wZXJhdGlvbnMgd2l0aCB0aGUgQ29ubmVjdG9yLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHNhdmUtdG8tWE1MIGZvciBuYW1pbmcgcmVzb3VyY2VzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIGF1dGhlbnRpY2F0b3IgImRlYnVnIiBhdHRyaWJ1dGVzIGZyb20gdGhlIGRlc2NyaXB0b3JzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3Igb3JnLmFwYWNoZS5jYXRhbGluYS5kZXBsb3kuQ29udGV4dFhYWCB0byB1c2UgbmV3IHN1cGVyIGNsYXNzIFJlc291cmNlQmFzZS4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEVuYWJsZSBDb25uZWN0b3IuZmluZExpZmVjeWNsZUxpc3RlbmVyIHRoYXQgd2UgY2FuIGxpc3RlbiBzdGFydC9zdG9wIENvbm5lY3RvciBldmVudHMgYW5kIHNhdmUgdGhlIGxpc3RlbmVyIHRvIHhtbC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSBXYXRjaGRvZyByZWZlcmVuY2VzLCBhcyBpdCBpcyBubyBsb25nZXIgdXNlZC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNTExPC9idWc+OiBEb24ndCBjYWxsIHNldGVudi5iYXQgaWYgbm90IGZvdW5kLCBpbiAqdXNpbmctbGF1bmNoZXIgc2NyaXB0cy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNTQ5PC9idWc+OiBBZGQgbmFtZSB0byBXZWJhcHBDbGFzc0xvYWRlcidzIHN0b3BwZWQgbWVzc2FnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWxsb3cgY3VzdG9taXplZCBzZXJ2ZXIgaGVhZGVyIGZvciBTdGFuZGFsb25lLiAoZnVua21hbikKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRGlnZXN0ZXIucmVzZXQgbm93IHJlbW92ZXMgdGhlIGVycm9yIGhhbmRsZXIsIHRoZSByb290IGFuZCBjYWxscyBjbGVhciwgdG8gcHJldmVudAogICAgICAgIGFueSBtZW1vcnkgbGVhay4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSB1c2VsZXNzIHN0dWZmIGluIGRpZ2VzdGVyLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSW4gSFRUUCwgYWRkIGEgdXRpbGl0eSBtZXRob2QgdG8gY29udmVydCBzdHJpbmdzIHRvIGJ5dGUgYXJyYXlzLCBhbmQgb3V0cHV0IHRoZSBzZXJ2ZXIgaGVhZGVyCiAgICAgICAgZGlyZWN0bHkgYXMgYnl0ZXMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBBZGQgYSBtYXN0ZXIgc2xhdmUgdGhyZWFkIHBvb2wgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBUb21jYXQgNC4wLiBJdCBpcyBsZXNzIGV4b3RpYyB0aGFuIHRoZQogICAgICAgIGRlZmF1bHQgb25lLCBhbmQgbWlnaHQgZmFyZSBiZXR0ZXIgb24gc29tZSBwaWNreSBzeXN0ZW1zLCBzdWNoIGFzIFJlZGhhdCA5LiBUaGUgdHdvIHRocmVhZHBvb2xzCiAgICAgICAgd2lsbCBsaWtlbHkgYmUgcmVtb3ZlZCBvbmNlIHdlIHVzZSB0aGUgSmF2YSA1IEFQSSwgYWx0aG91Z2ggbW9yZSBpbnZlc3RpZ2F0aW9uIGlzIG5lZWRlZC4gKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIEZpeCBpc3N1ZSB3aXRoIGdldFByb3BlcnR5IGluIEludHJvc3BlY3Rpb25VdGlscy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSBhdHRyaWJ1dGUgdHJhbnNsYXRpb24gZm9yIFNTTCBpbiB0aGUgSFRUUCBwcm90b2NvbCBoYW5kbGVyOiBpdCB3aWxsIG5vdyBiZSBkb25lIGluIHRoZQogICAgICAgIENhdGFsaW5hIENvbm5lY3RvciBjbGFzcy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCBoYW5kbGluZyBvZiB0aGUgInRpbWVvdXQiIGF0dHJpYnV0ZSBvZiB0aGUgSFRUUCBwcm90b2NvbCBoYW5kbGVyLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzExNzE8L2J1Zz46IFdyYXAgdG8gYXZvaWQgQ2xhc3NDYXN0RXhjZXB0aW9uIGluIFBhZ2VDb250ZXh0SW1wbC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMjU3PC9idWc+OiBBZGRlZCBzcGVjaWZpY2F0aW9uIG9mIGVuZG9yc2VkIGRpcnMgaWYgZm9ya2luZy4gIE5vdGUgdGhhdCB0aGlzIGlzIGZhaXJseSB1c2VsZXNzIGZvciBub3cgaW4gNS41IHNpbmNlIGl0IHVzZXMgSkRUIGFuZCBub3QgamF2YWMgYnkgZGVmYXVsdC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGRvY3M+CiAgICAgICAgRG9jdW1lbnQgbmV3IEphc3BlciBkZWZhdWx0cywgYW5kIHVwZGF0ZSB0aGUgcHJvZHVjdGlvbiBjb25maWd1cmF0aW9uLiAocmVtbSkKICAgICAgPC9kb2NzPgogICAgICA8Zml4PgogICAgICAgIENvcGllZCBYTUwgZW5jb2RpbmcgZGV0ZWN0aW9uIGxvZ2ljIGludG8gSkFTUEVSLCBzbyB3ZSdyZSBubyBsb25nZXIgZGVwZW5kZW50IG9uIFhlcmNlcy4gKGx1ZWhlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggY29zbWV0aWMgaXNzdWUgd2hlcmUgZXh0cmEgQ1JMRiB3b3VsZCBiZSBpbnNlcnRlZCBkdXJpbmcgZWFjaCBwcmVjb21waWxhdGlvbiBpbiB3ZWIueG1sLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWxsb3cgY29uZmlndXJpbmcgdGhlIGludGVydmFsIGZvbGxvd2luZyBhIGNvbXBpbGF0aW9uIGR1cmluZyB3aGljaCBhIEpTUCB3aWxsIG5vdCBiZSBjaGVja2VkCiAgICAgICAgZm9yIG1vZGlmaWNhdGlvbnMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNDY1PC9idWc+OiBFbnN1cmUgdGhhdCB0aGUgY29tcGlsZXIgcmVhZHMgdGhlIC5qYXZhIGZpbGUgdXNpbmcgdGhlIHNhbWUgZW5jb2RpbmcgYXMgdGhhdCB3aXRoIHdoaWNoIGl0IHdhcyB3cml0dGVuLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE1MTA8L2J1Zz46IE51bGwgb3V0IHJlc3BvbnNlIGluIEpzcFdyaXRlckltcGwjcmVjeWNsZSB0byBhaWQgaW4gSkJvc3MgbWVtb3J5IGxlYWsuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGRlZCBmbGFnIHRvIHRoZSBjbHVzdGVyIChub3RpZnlMaXN0ZW5lcnNPblJlcGxpY2F0aW9uKSB0byBlbmFibGUvZGlzYWJsZSB0aGUKICAgICAgICBub3RpZmljYXRpb25zIG9mIGF0dHJpYnV0ZS9jb250ZXh0IGxpc3RlbmVycyB1cG9uIHJlcGxpY2F0aW9uIG9mIGEgc2Vzc2lvbiBkZWx0YQogICAgICAgIFdvcmtzIG9ubHkgd2l0aCB0aGUgRGVsdGFNYW5hZ2VyIChmaGFuaWspCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZGVkIGZsYWcgdG8gdGhlIGNsdXN0ZXIgKENsdXN0ZXIvU2VuZGVyL2Fja1RpbWVvdXQpIHRvIHNldCB0aGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMKICAgICAgICBmb3IgYSBzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGdvIHRocm91Z2gsIGRlZmF1bHRzIHRvIDE1MDAwbXMgKGZoYW5paykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI5NDg1PC9idWc+OiBJIGJyb2tlIHRoZSBIVE1MIG1hbmFnZXIgd2hlbiBhZGRpbmcgSmF2YVNjcmlwdCBjb25maXJtYXRpb24sIGZpeGVkIG5vdyA7KSAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEwNTg8L2J1Zz46IEVuc3VyZSBTdGF0dXNUcmFuc2Zvcm1lciBlc2NhcGVzIHF1ZXJ5IHN0cmluZyBmb3IgWE1MLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZGVkIGNvbnRleHRzJyBzdGFydCB0aW1lIChhdmFpbGFibGUgZnJvbSAnc3RhcnRUaW1lJyBNQmVhbiBhdHRyaWJ1dGUgb2YgU3RhbmRhcmRDb250ZXh0KSB0byBzdGF0dXMgcGFnZSAobHVlaGUpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzEyNjQ8L2J1Zz46IHRoZSBkZXBsb3kgdGFzayBzaG91bGQgbm93IGJlaGF2ZSBjb3JyZWN0bHkuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciB0aGUgbWFuYWdlciBzZXJ2bGV0IHRvIG1ha2UgY2FsbHMgdG8gdGhlIGRlcGxveWVyIG1vcmUgcm9idXN0LiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgVXNlIHRoZSBtb3JlIHJvYnVzdCBTdHJpbmcudmFsdWVPZiBpbiB0aGUgZm9ybSBlZGl0IGFjdGlvbiBvZiB0aGUgY29ubmVjdG9yLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjIgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFRoZSBpbnN0YWxsZXIgd2lsbCBub3cgdXNlIHRoZSBzeXN0ZW0ncyBKUkUuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggVVJMIGdlbmVyYXRpb24gZm9yIGNsYXNzbG9hZGVycyBvbiBXaW5kb3dzLCBjYXVzaW5nIGNvbW1vbi9jbGFzc2VzIGFuZCBzaGFyZWQvY2xhc3NlcwogICAgICAgIHRvIGJlIHVudXNhYmxlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMTEwPC9idWc+OiBGaXggcmVzb3VyY2UgcGFja2FnaW5nIGJ1ZyBmb3Igc2VydmxldHMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCA1LjUgcmVncmVzc2lvbiB3aGVyZSBnb2luZyB0aHJvdWdoIHRoZSBhdXRoZW50aWNhdG9yIHdvdWxkIGNyZWF0ZSBhIHNlc3Npb24gZWFjaCB0aW1lLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNsYXNzbmFtZSBvZiB0aGUgY29ubmVjdG9yIGluIEVtYmVkZGVkLCBhbmQgcmVtb3ZlIHRoZSBzb2NrZXQgZmFjdG9yeS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBSZWRvIHNlcnZlciBoZWFkZXIgaGFuZGxpbmcgYWdhaW4uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDbGVhbnVwIGEgbGl0dGxlIGFjY2VzcyB0byB0aGUgaGVhZGVycyB1c2luZyBhIGxvY2FsIHZhcmlhYmxlIGFuZAogICAgICAgIHVzZSBzZXRWYWx1ZSBmb3IgU2VydmVyIGFuZCBEYXRlIGhlYWRlcnMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIG1heFRhZ05lc3RpbmcgYW5kIGN1clRhZ05lc3Rpbmcgc2luY2UgdGhleSBhcmUgdW51c2VkLiAoZnVua21hbikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRhZyBmaWxlcyBoYW5kbGluZyB3aXRoIEpEVCwgd2hpY2ggd2VyZSB1c3VzYWJsZSwgYW5kIHJlZmFjdG9yIHRoZSBsaWZlY3ljbGUgaGFuZGxpbmcgb2YKICAgICAgICB0aGUgcGFnZSBsb2FkZXIuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMSAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVG9tY2F0IDUuNSBjYW4gYmUgYnVpbHQgb24gSkRLIDUuMC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBXaW5kb3dzIGluc3RhbGxlciBwb2xpc2guIChtbGFkZW4sIHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSBkZXBlbmRlbmN5IG9uIEpha2FydGEgcmVnZXhwLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgQWxsb3cgb3ZlcnJpZGluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGV4dCBmaWxlLCBzaW1pbGFyIHRvIHRoZSBkZWZhdWx0CiAgICAgICAgd2ViLnhtbC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEJhY2twb3J0IGlmLWVsc2UgbG9naWMgZm9yIFNTSSBzZXJ2bGV0IGZyb20gNC4xIChmdW5rbWFuKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgRGVmYXVsdENvbnRleHQgZWxlbWVudHMgZnJvbSB0aGUgZGlnZXN0ZXIgcnVsZXMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggUmVzb3VyY2VMaW5rIGhhbmRsaW5nLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgTW9kaWZ5IHRoZSBhdXRvIGRlcGxveWVyIHRvIGdldCBhbG9uZyB3aXRoIGNvbnRleHRzIHdoaWNoIGFyZSBzdGF0aWNhbGx5IGRlZmluZWQgaW4gc2VydmVyLnhtbC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEV4dGVybmFsaXplIGNvbnN0YW50IHN0cmluZ3MgZGVmaW5pbmcgdGhlIGxvY2F0aW9uIG9mIGRlcGxveW1lbnQgcmVsYXRlZCByZXNvdXJjZXMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMDUyPC9idWc+OiBCZWFuRmFjdG9yeSBzd2FsbG93cyByb290IGNhdXNlIG9mIGV4Y2VwdGlvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBbGxvdyB1c2luZyBkZXBsb3kgQW50IHRhc2sgd2l0aCBqdXN0IGNvbmZpZyBhdHRyaWJ1dGUsIHN1Ym1pdHRlZCBieSBNaWNoYWVsIFNjaHVlcmlnLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkZWQgbG9uZ2VzdCB0aW1lIGFuIGV4cGlyZWQgc2Vzc2lvbiBoYWQgYmVlbiBhbGl2ZSB0byBzZXQgb2YgbW9uaXRvcmFibGUgc2Vzc2lvbiBtYW5hZ2VyIGF0dHJpYnV0ZXMuIChsdWVoZSkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkZWQgYXZlcmFnZSB0aW1lIGFuIGV4cGlyZWQgc2Vzc2lvbiBoYWQgYmVlbiBhbGl2ZSB0byBzZXQgb2YgbW9uaXRvcmFibGUgc2Vzc2lvbiBtYW5hZ2VyIGF0dHJpYnV0ZXMuIChsdWVoZSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgQ2xlYXIgYSByZWZlcmVuY2UgaW4gdGhlIGRpZ2VzdGVyIHdoZXJlIGEgY29udGV4dCB3b3VsZCBiZSByZWZlcmVuY2VkIGZvciBtb3JlIHRpbWUgdGhhbiBpdAogICAgICAgIG5lZWRlZCwgdW50aWwgdGhlIG5leHQgY29udGV4dCBkZXBsb3ltZW50IG9wZXJhdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMDE4PC9idWc+OiBSYWNlIGNvbmRpdGlvbiBpbiBTeXN0ZW1Mb2dIYW5kbGVyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBVc2UgdGhlICJjb21waWxlciIgcGFyYW1ldGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgdGhhdCBBbnQgc2hvdWxkIGJlIHVzZWQuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJZ25vcmUgSkRUIGNvbXBpbGVyIHdhcm5pbmdzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkZWQgY29tcGlsZXJUYXJnZXRWTSBvcHRpb24gc3VwcG9ydCwgIjEuNCIgZGVmYXVsdC4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBhZGRpbmcgdGhlIGNsdXN0ZXJpbmcgdmFsdmUsIHNvIHRoYXQgc2Vzc2lvbiByZXBsaWNhdGlvbiBhY3R1YWxseSBvY2N1cnMuIChmaGFuaWspCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTWFqb3IgZG9jdW1lbnRhdGlvbiB1cGRhdGUgd2l0aCBjdXJyZW50IFRvbWNhdCA1LjUgY2hhbmdlcy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZGVkIEphdmFTY3JpcHQgY29uZmlybWF0aW9uIGRpYWxvZyB0byAiZGFuZ2Vyb3VzIiBNYW5hZ2VyIHNlcnZsZXIgbGlua3MuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMCAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTWFueSB1cGRhdGVkIGFuZCBmaXhlZCBKYXZhRG9jcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBEZXNpZ25lZCBhbmQgdGVzdGVkIFRvbWNhdCBvbiBKMlNFIDUuMCAoYWthIEpESyAxLjUpLiAoZXZlcnlvbmUpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEJ1bmRsZWQgRWNsaXBzZSBKRFQgKG5ldyBkZXBlbmRlbmN5KSB0byBhbGxvdyBUb21jYXQgdG8gcnVuIG9uIGEgSlJFIG9ubHksIGkuZS4gbm8gSkRLIHJlcXVpcmVkLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVwYWNrYWdlIGNvbW1vbnMtZGJjcCBhbmQgaXRzIGRlcGVuZGVuY2llcyBhcyBhIHNpZ2xlIHNtYWxsZXIgV0FSLCB3aXRoIHJlbmFtZWQgcGFja2FnZXMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmVkIGRlcGVuZGVuY2llcyBvbiBjb21tb25zLWRpZ2VzdGVyLCBjb21tb25zLWJlYW51dGlscywgYW5kIGNvbW1vbnMtY29sbGVjdGlvbnMuCiAgICAgICAgVGhlIHJlbGV2YW50IGRpZ2VzdGVyIGZ1bmN0aW9uYWxpdHkgaXMgbm93IG1lcmdlZCBpbiB0b21jYXQtdXRpbC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZWQgdXNhZ2Ugb2Ygb3JnLmFwYWNoZS5jYXRhbGluYS5Mb2dnZXIsIGluY3JlYXNlZCB1c2FnZSBvZiBjb21tb25zLWxvZ2dpbmcgZXZlcnl3aGVyZS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yZWQgY2xhc3Nsb2FkZXIgY29kZSB0byBiZXR0ZXIgaGFuZGxlIEpBUiBhbmQgZ2VuZXJhbCByZXNvdXJjZSBsb2NraW5nLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgV3JpdHRlbiBKTVgtcmVsYXRlZCBjb2RlIHRvIHBsYXkgbmljZWx5IHdpdGggSjJTRSA1LjAgYnVpbHQtaW4gSk1YIGFiaWxpdGllcy4gKHJlbW0sIGNvc3RpbikKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRXh0ZW5zaXZlbHkgcHJvZmlsZWQgYW5kIG9wdGltaXplZCB0aGUgc2VydmVyIHN0YXJ0dXAgcGVyZm9ybWFuY2UgYXMgd2VsbCBhcyB0aGUgcmVxdWVzdCBtYXBwaW5nIGFuZCBwcm9jZXNzaW5nIHBpcGVsaW5lLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVGhlIGNvbnRhaW5lciB3aWxsIG5vdyBhbHdheXMgcHJvY2VzcyBhIC9NRVRBLUlORi9jb250ZXh0LnhtbCByZXNvdXJjZSwgdW5sZXNzIHRoZSB3ZWJhcHAgaGFzIGEgc3BlY2lmaWVkIGV4dGVybmFsIGNvbnRleHQgZmlsZS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIE5ldyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtIGZvciB3ZWIgYXBwbGljYXRpb25zLCByZXBsYWNpbmcgRGVmYXVsdENvbnRleHQuIFRoaXMgdXNlcyBhCiAgICAgICAgc2hhcmVkIGNvbnRleHQgZmlsZSBsb2NhdGVkIGluIGNvbmYvY29udGV4dC54bWwuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZXZhbXBlZCBkZXBsb3llciwgYWxsb3lpbmcgZnVsbCBob3RkZXBsb3kgKG5vdGU6IG9uIFdpbmRvd3MsIHRoaXMgcmVxdWlyZXMgdGhlIGFudGkgZmlsZSBsb2NraW5nCiAgICAgICAgZmVhdHVyZXMpLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIHZlcmJvc2l0eSBmcm9tIHRoZSBKTkRJIHJlc291cmNlcyBjb25maWd1cmF0aW9uLCBieSBhbGxvd2luZyBhcmJpdHJhcnkgYXR0cmlidXRlcyBvbiB0aGUgUmVzb3VyY2UgZWxlbWVudC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFNpbXBsZXIgVmFsdmUgaW50ZXJmYWNlLCB0byBhbGxvdyBzbWFsbGVyIHN0YWNrIHRyYWNlcyBhbmQgcmVkdWNpbmcgdGhlIGFtb3VudCBvZiBtZXRob2QgY2FsbHMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIEVjbGlwc2UgSkRUIGlzIG5vdyB0aGUgZGVmYXVsdCBKYXZhIGNvbXBpbGVyIGluIEphc3Blci4gU291cmNlIGRlcGVuZGVuY2llcyBhcmUgbm93IGxvYWRlZCBmcm9tCiAgICAgICAgdGhlIGNvbnRhaW5lciBjbGFzc2xvYWRlciwgYW5kIGNvbXBpbGF0aW9uIHRpbWVzIGFyZSBtdWNoIGZhc3Rlci4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEphc3BlciBkZXZlbG9wbWVudCBtb2RlIHNob3VsZCBub3cgaGF2ZSBhY2NlcHRhYmxlIHBlcmZvcm1hbmNlIGZvciBoZWF2aWx5IGFjY2Vzc2VkIHBhZ2VzLgogICAgICAgIFByZWNvbXBpbGluZyBKU1BzIGlzIHN0aWxsIHNpZ25pZmljYW50bHkgbW9yZSBlZmZpY2llbnQsIGhvd2V2ZXIuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjwvYm9keT4KPC9kb2N1bWVudD4K