PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgogICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgogIDx0aXRsZT5Cb29zdCAmcXVvdDtxdW90ZWQmcXVvdDsgSS9PIG1hbmlwdWxhdG9yPC90aXRsZT4KICA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIiAvPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uL2RvYy9zcmMvbWluaW1hbC5jc3MiIC8+CjwvaGVhZD4KCjxib2R5PgoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIgpzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjI3NyI+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtIj48aW1nCiAgICAgICAgc3JjPSIuLi8uLi8uLi9ib29zdC5wbmciIGFsdD0iYm9vc3QucG5nICg2ODk3IGJ5dGVzKSIgYWxpZ249Im1pZGRsZSIKICAgICAgICB3aWR0aD0iMzAwIiBoZWlnaHQ9Ijg2IiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgIDx0ZD4KICAgICAgPGgxIGFsaWduPSJjZW50ZXIiPiZxdW90O1F1b3RlZCZxdW90OwogICAgICBJL08gTWFuaXB1bGF0b3JzPGJyPgogICAgICBmb3IgU3RyaW5nczwvaDE+CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+Cgo8dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjEiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSI+CiAgPHRyPgogICAgPHRkPgogICAgPHAgYWxpZ249ImNlbnRlciI+PGI+JnF1b3Q7UXVvdGVkJnF1b3Q7CiAgICAgIEkvTyBNYW5pcHVsYXRvcnMKICAgICAgZm9yIFN0cmluZ3MgYXJlIG5vdCB5ZXQgYWNjZXB0ZWQgaW50byBCb29zdCBhcyBwdWJsaWMgY29tcG9uZW50cy4gVGh1cyB0aGUgCiAgICBoZWFkZXIgZmlsZSBpcyBjdXJyZW50bHkgbG9jYXRlZCBpbiAmbHQ7Ym9vc3QvaW8vZGV0YWlsL3F1b3RlZF9tYW5pcC5ocHAmZ3Q7PC9iPjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxoMj5JbnRyb2R1Y3Rpb248L2gyPgo8cD5DKysgU3RhbmRhcmQgbGlicmFyeSBzdHJlYW0gSS9PIGZvciBzdHJpbmdzIHRoYXQgY29udGFpbiBlbWJlZGRlZCBzcGFjZXMgCmNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy4gRm9yIGV4YW1wbGUsPC9wPgo8YmxvY2txdW90ZT4KICA8cHJlPnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwpzdGQ6OnN0cmluZyBvcmlnaW5hbCA9ICZxdW90O2Zvb2xlZCB5b3UmcXVvdDs7CnN0ZDo6c3RyaW5nIHJvdW5kX3RyaXA7CgpzcyAmbHQ7Jmx0OyBvcmlnaW5hbDsKc3MgJmd0OyZndDsgcm91bmRfdHJpcDsKCnN0ZDo6Y291dCAmbHQ7Jmx0OyBvcmlnaW5hbDsgICAvLyBvdXRwdXRzOiBmb29sZWQgeW91CnN0ZDo6Y291dCAmbHQ7Jmx0OyByb3VuZF90cmlwOyAvLyBvdXRwdXRzOiBmb29sZWQKCmFzc2VydChvcmlnaW5hbCA9PSByb3VuZF90cmlwKTsgLy8gYXNzZXJ0IHdpbGwgZmlyZTwvcHJlPgo8L2Jsb2NrcXVvdGU+CjxwPlRoZSBCb29zdCA8Y29kZT5xdW90ZWQ8L2NvZGU+IHN0cmVhbSBJL08gbWFuaXB1bGF0b3IgcGxhY2VzIGRlbGltaXRlcnMsIGRlZmF1bHRlZCAKdG8gdGhlIGRvdWJsZS1xdW90ZSAoPGNvZGU+JnF1b3Q7PC9jb2RlPiksIGFyb3VuZCBzdHJpbmdzIG9uIG91dHB1dCwgYW5kIHN0cmlwcyBvZmYgCnRoZSBkZWxpbWl0ZXJzIG9uIGlucHV0LiBUaGlzIGVuc3VyZXMgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHNwYWNlcyByb3VuZC10cmlwIGFzIApkZXNpcmVkLiBGb3IgZXhhbXBsZSw8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+c3RkOjpzdHJpbmdzdHJlYW0gc3M7CnN0ZDo6c3RyaW5nIG9yaWdpbmFsID0gJnF1b3Q7Zm9vbGVkIHlvdSZxdW90OzsKc3RkOjpzdHJpbmcgcm91bmRfdHJpcDsKCnNzICZsdDsmbHQ7IHF1b3RlZChvcmlnaW5hbCk7CnNzICZndDsmZ3Q7IHF1b3RlZChyb3VuZF90cmlwKTsKCnN0ZDo6Y291dCAmbHQ7Jmx0OyBxdW90ZWQob3JpZ2luYWwpOyAvLyBvdXRwdXRzOiAmcXVvdDtmb29sZWQgeW91JnF1b3Q7CnN0ZDo6Y291dCAmbHQ7Jmx0OyByb3VuZF90cmlwOyAgICAgICAvLyBvdXRwdXRzOiBmb29sZWQgeW91Cgphc3NlcnQob3JpZ2luYWwgPT0gcm91bmRfdHJpcCk7IC8vIGFzc2VydCB3aWxsIG5vdCBmaXJlPC9wcmU+CjwvYmxvY2txdW90ZT4KPHA+SWYgdGhlIHN0cmluZyBjb250YWlucyB0aGUgZGVsaW1pdGVyIGNoYXJhY3Rlciwgb24gb3V0cHV0IHRoYXQgY2hhcmFjdGVyIHdpbGwgCmJlIHByZWNlZGVkIGJ5IGFuIGVzY2FwZSBjaGFyYWN0ZXIsIGFzIHdpbGwgdGhlIGVzY2FwZSBjaGFyYWN0ZXIgaXRzZWxmOjwvcD4KPGJsb2NrcXVvdGU+CiAgPHByZT5zdGQ6OmNvdXQgJmx0OyZsdDsgcXVvdGVkKCZxdW90OydKYWNrICZhbXA7IEppbGwnJnF1b3Q7LCAnJmFtcDsnLCAnXCcnKTsgIC8vIG91dHB1dHM6ICcmYW1wOydKYWNrICZhbXA7JmFtcDsgSmlsbCZhbXA7Jyc8L3ByZT4KPC9ibG9ja3F1b3RlPgo8aDI+SGVhZGVyIDxhIGhyZWY9Ii4uLy4uLy4uL2Jvb3N0L2lvL2RldGFpbC9xdW90ZWRfbWFuaXAuaHBwIj4mbHQ7Ym9vc3QvaW8vcXVvdGVkX21hbmlwLmhwcCZndDs8L2E+IHN5bm9wc2lzPC9oMj4KPHByZT5uYW1lc3BhY2UgYm9vc3QKewogIG5hbWVzcGFjZSBpbwogIHsKICAgIC8vIG1hbmlwdWxhdG9yIGZvciBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZyZhbXA7CgogICAgdGVtcGxhdGUgJmx0O2NsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MmZ3Q7CiAgICA8Yj48aT51bnNwZWNpZmllZC10eXBlMTwvaT48L2I+IHF1b3RlZChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZyZsdDtDaGFyLCBUcmFpdHMsIEFsbG9jJmd0OyZhbXA7IHN0cmluZywgQ2hhciBlc2NhcGU9J1xcJywgQ2hhciBkZWxpbT0nXCZxdW90OycpOwoKICAgIC8vIG1hbmlwdWxhdG9yIGZvciBjb25zdCBDLXN0cmluZyoKCiAgICB0ZW1wbGF0ZSAmbHQ7Y2xhc3MgQ2hhciZndDsKICAgIDxiPjxpPnVuc3BlY2lmaWVkLXR5cGUyPC9pPjwvYj4gcXVvdGVkKGNvbnN0IENoYXIqIHN0cmluZywgQ2hhciBlc2NhcGU9J1xcJywgQ2hhciBkZWxpbT0nXCZxdW90OycpOwoKICAgIC8vIG1hbmlwdWxhdG9yIGZvciBub24tY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmYW1wOwoKICAgIHRlbXBsYXRlICZsdDtjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jJmd0OwogICAgPGI+PGk+dW5zcGVjaWZpZWQtdHlwZTM8L2k+PC9iPiBxdW90ZWQoc3RkOjpiYXNpY19zdHJpbmcmbHQ7Q2hhciwgVHJhaXRzLCBBbGxvYyZndDsmYW1wOyBzdHJpbmcsIENoYXIgZXNjYXBlPSdcXCcsIENoYXIgZGVsaW09J1wmcXVvdDsnKTsKICB9Cn08L3ByZT4KPHA+PGk+PGI+PGNvZGU+dW5zcGVjaWZpZWRfdHlwZTE8L2NvZGU+PC9iPjwvaT4sIDxpPjxiPjxjb2RlPnVuc3BlY2lmaWVkX3R5cGUyPC9jb2RlPjwvYj48L2k+LCAKYW5kIDxpPjxiPjxjb2RlPnVuc3BlY2lmaWVkX3R5cGUzPC9jb2RlPjwvYj48L2k+IGFyZSBpbXBsZW1lbnRhdGlvbiBzdXBwbGllZCAKdHlwZXMgd2l0aCBpbXBsZW1lbnRhdGlvbiBzdXBwbGllZCA8Y29kZT5vcGVyYXRvciZsdDsmbHQ7PC9jb2RlPjo8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+dGVtcGxhdGUgJmx0O2NsYXNzIENoYXIsIGNsYXNzIFRyYWl0cyZndDsKICBzdGQ6OmJhc2ljX29zdHJlYW0mbHQ7Q2hhciwgVHJhaXRzJmd0OyZhbXA7CiAgICBvcGVyYXRvciZsdDsmbHQ7KHN0ZDo6YmFzaWNfb3N0cmVhbSZsdDtDaGFyLCBUcmFpdHMmZ3Q7JmFtcDsgb3MsIGNvbnN0IDxpPjxiPjxjb2RlPnVuc3BlY2lmaWVkX3R5cGVOPC9jb2RlPjwvYj48L2k+JmFtcDsgcHJveHkpOzwvcHJlPgo8cD48aT5FZmZlY3RzOjwvaT4gSW5zZXJ0cyBjaGFyYWN0ZXJzIGludG8gPGNvZGU+b3M8L2NvZGU+OjwvcD4KICA8dWw+CiAgICA8bGk+PGNvZGU+ZGVsaW08L2NvZGU+LjwvbGk+CiAgICA8bGk+RWFjaCBjaGFyYWN0ZXIgaW4gPGNvZGU+c3RyaW5nPC9jb2RlPi4gSWYgdGhlIGNoYXJhY3RlciB0byBiZSBvdXRwdXQgaXMgCiAgICBlcXVhbCB0byA8Y29kZT5lc2NhcGU8L2NvZGU+IG9yIDxjb2RlPmRlbGltPC9jb2RlPiwgYXMgZGV0ZXJtaW5lZCBieSA8Y29kZT4KICAgIG9wZXJhdG9yPT08L2NvZGU+LCBmaXJzdCBvdXRwdXQgPGNvZGU+ZXNjYXBlPC9jb2RlPi4gPC9saT4KICAgIDxsaT48Y29kZT5kZWxpbTwvY29kZT4uPC9saT4KICA8L3VsPgo8cD48aT5SZW1hcmtzOjwvaT4gPGNvZGU+c3RyaW5nPC9jb2RlPiwgPGNvZGU+ZXNjYXBlPC9jb2RlPiwgYW5kIDxjb2RlPmRlbGltPC9jb2RlPiAKaGF2ZSB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnRzIG9mIHRoZSBjYWxsIHRvIHRoZSA8Y29kZT4KcXVvdGVkPC9jb2RlPiBmdW5jdGlvbiB0aGF0IGNvbnN0cnVjdGVkIDxjb2RlPnByb3h5PC9jb2RlPi48L3A+CjxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5vczwvY29kZT4uIDwvcD4KPC9ibG9ja3F1b3RlPgo8cD48aT48Yj48Y29kZT51bnNwZWNpZmllZF90eXBlMzwvY29kZT48L2I+PC9pPiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBzdXBwbGllZCAKdHlwZSB3aXRoIGFuIGltcGxlbWVudGF0aW9uIHN1cHBsaWVkIDxjb2RlPm9wZXJhdG9yJmd0OyZndDs8L2NvZGU+OjwvcD4KPGJsb2NrcXVvdGU+CiAgPHByZT50ZW1wbGF0ZSAmbHQ7Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzJmd0OwogIHN0ZDo6YmFzaWNfaXN0cmVhbSZsdDtDaGFyLCBUcmFpdHMmZ3Q7JmFtcDsKICAgIG9wZXJhdG9yJmd0OyZndDsoc3RkOjpiYXNpY19pc3RyZWFtJmx0O0NoYXIsIFRyYWl0cyZndDsmYW1wOyBpcywgY29uc3QgPGk+PGI+PGNvZGU+dW5zcGVjaWZpZWRfdHlwZTM8L2NvZGU+PC9iPjwvaT4mYW1wOyBwcm94eSk7PC9wcmU+CjxwPjxpPkVmZmVjdHM6PC9pPiBFeHRyYWN0cyBjaGFyYWN0ZXJzIGZyb20gPGNvZGU+b3M8L2NvZGU+OjwvcD4KICA8dWw+CiAgICA8bGk+SWYgdGhlIGZpcnN0IGNoYXJhY3RlciBleHRyYWN0ZWQgaXMgZXF1YWwgdG8gZGVsaW0sIGFzIGRldGVybWluZWQgYnkKICAgIDxjb2RlPm9wZXJhdG9yPT08L2NvZGU+LCB0aGVuOjx1bD4KICAgICAgPGxpPlR1cm4gb2ZmIHRoZSA8Y29kZT5za2lwd3M8L2NvZGU+IGZsYWcuPC9saT4KICAgICAgPGxpPjxjb2RlPnN0cmluZy5jbGVhcigpPC9jb2RlPjwvbGk+CiAgICAgIDxsaT5VbnRpbCBhbiB1bmVzY2FwZWQgPGNvZGU+ZGVsaW08L2NvZGU+IGNoYXJhY3RlciBpcyByZWFjaGVkIG9yIDxjb2RlPgogICAgICBpcy5ub3RfZ29vZCgpPC9jb2RlPiwgZXh0cmFjdCAKICAgICAgY2hhcmFjdGVycyBmcm9tIDxjb2RlPm9zPC9jb2RlPiBhbmQgYXBwZW5kIHRoZW0gdG8gPGNvZGU+c3RyaW5nPC9jb2RlPiwgCiAgICAgIGV4Y2VwdCB0aGF0IGlmIGFuIDxjb2RlPmVzY2FwZTwvY29kZT4gaXMgcmVhY2hlZCwgaWdub3JlIGl0IGFuZCBhcHBlbmQgdGhlIAogICAgICBuZXh0IGNoYXJhY3RlciB0byA8Y29kZT5zdHJpbmc8L2NvZGU+LjwvbGk+CiAgICAgIDxsaT5EaXNjYXJkIHRoZSBmaW5hbCA8Y29kZT5kZWxpbTwvY29kZT4gY2hhcmFjdGVyLjwvbGk+CiAgICAgIDxsaT5SZXN0b3JlIHRoZSA8Y29kZT5za2lwd3M8L2NvZGU+IGZsYWcgdG8gaXRzIG9yaWdpbmFsIHZhbHVlLjwvbGk+CiAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5PdGhlcndpc2UsIDxjb2RlPm9zICZndDsmZ3Q7IHN0cmluZzwvY29kZT4uPC9saT4KICA8L3VsPgo8cD48aT5SZW1hcmtzOjwvaT4gPGNvZGU+c3RyaW5nPC9jb2RlPiwgPGNvZGU+ZXNjYXBlPC9jb2RlPiwgYW5kIDxjb2RlPmRlbGltPC9jb2RlPiAKaGF2ZSB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnRzIG9mIHRoZSBjYWxsIHRvIHRoZSA8Y29kZT4KcXVvdGVkPC9jb2RlPiBmdW5jdGlvbiB0aGF0IGNvbnN0cnVjdGVkIDxjb2RlPnByb3h5PC9jb2RlPi48L3A+CjxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5pczwvY29kZT4uIDwvcD4KPC9ibG9ja3F1b3RlPgo8aDI+QWNrbm93bGVkZ2VtZW50czwvaDI+CjxwPlRoZSA8Y29kZT5xdW90ZWQoKTwvY29kZT4gc3RyZWFtIG1hbmlwdWxhdG9yIGVtZXJnZWQgZnJvbSBkaXNjdXNzaW9ucyBvbiB0aGUgCkJvb3N0IGRldmVsb3BlcnMgbWFpbGluZyBsaXN0LiBQYXJ0aWNpcGFudHMgaW5jbHVkZWQgQmVtYW4gRGF3ZXMsIFJvYiBTdGV3YXJ0LCAKQWxleGFuZGVyIExhbWFpc29uLCBFcmljIE5pZWJsZXIsIFZpY2VudGUgQm90ZXQsIEFuZHJleSBTZW1hc2hldiwgUGhpbCBSaWNoYXJkcywgCmFuZCBSb2IgTXVycmF5LiBFcmljIE5pZWJsZXIncyBzdWdnZXN0aW9ucyBwcm92aWRlZCB0aGUgYmFzaXMgZm9yIHRoZSBuYW1lIGFuZCAKZm9ybSBvZiB0aGUgdGVtcGxhdGVzLiA8L3A+Cjxocj4KPHA+qSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMsIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTA8L3A+CjxwPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gU2VlCjxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+PC9wPgo8cD5SZXZpc2VkCjwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJWQgJUIgJVkiIHN0YXJ0c3BhbiAtLT4yMCBKdW5lIDIwMTA8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBlbmRzcGFuIGktY2hlY2tzdW09IjE3NTQ0IiAtLT48L3A+Cgo8L2JvZHk+CjwvaHRtbD4=