PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgPz4KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8dGl0bGU+V1RQIFBNQyBNaW51dGVzIGZvciBNYXJjaCAxNSwgMjAwNSBDb25mZXJlbmNlIENhbGw8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5CiAgICBhbGluaz0iI2ZmMDAwMCIKICAgIGJnY29sb3I9IiNmZmZmZmYiCiAgICBsaW5rPSIjMDAwMGVlIgogICAgdGV4dD0iIzAwMDAwMCIKICAgIHZsaW5rPSIjNTUxYThiIj4KPHRhYmxlCiAgICBib3JkZXI9IjAiCiAgICBjZWxscGFkZGluZz0iMiIKICAgIGNlbGxzcGFjaW5nPSI1IgogICAgd2lkdGg9IjEwMCUiPgogICAgPHRib2R5PgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkCiAgICAgICAgICAgICAgICBjb2xzcGFuPSIyIgogICAgICAgICAgICAgICAgYWxpZ249ImxlZnQiCiAgICAgICAgICAgICAgICBiZ2NvbG9yPSIjMDA4MGMwIgogICAgICAgICAgICAgICAgdmFsaWduPSJ0b3AiPjxiPiA8Zm9udAogICAgICAgICAgICAgICAgY29sb3I9IiNmZmZmZmYiCiAgICAgICAgICAgICAgICBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPlBNQyBDb25mZXJlbmNlIENhbGwgLSBNYXJjaCAxNSwgMjAwNTwvZm9udD48L2I+PC90ZD4KICAgICAgICA8L3RyPgogICAgPC90Ym9keT4KPC90YWJsZT4KPHRhYmxlCiAgICBib3JkZXI9IjAiCiAgICBjZWxscGFkZGluZz0iMiIKICAgIGNlbGxzcGFjaW5nPSI1IgogICAgd2lkdGg9IjEwMCUiPgogICAgPHRib2R5PgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPkF0dGVuZGluZzogVGltIFdhZ25lciBbVFddLCBBcnRodXIgUnltYW4gW0FSXSwgRGF2aWQgV2lsbGlhbXMgW0RXXSwgRG9taW5pcXVlIERlIFZpdG8gW0RWXSwgSm9jaGVuCiAgICAgICAgICAgIEtyYXVzZSBbSktdIE90aGVyczogTGF3cmVuY2UgTWFuZGVsIChyZXByZXNlbnRpbmcgV1RQIGNvbW11bml0eSkgW0xNXQogICAgICAgICAgICA8aDI+UHJvY2VkdXJhbCBtYXR0ZXJzIJYgbm9uZTwvaDI+CiAgICAgICAgICAgIDxoMj5Db21tdW5pdHkgZnJvbSBMYXdyZW5jZSBNYW5kZWw8L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+Vy1TIHZhbGlkYXRpb24gcHJvamVjdCBhcHByb3ZlZCB0byBtb3ZlIGludG8gV1RQOyBjb2RlIHdpbGwgYmUgbWVyZ2VkIHRoaXMgd2VlayAoaW5jbHVkZXMgdGhlCiAgICAgICAgICAgICAgICBTT0FQIG1vbml0b3IpPC9saT4KICAgICAgICAgICAgICAgIDxsaT5IZWxwIHN5c3RlbSB3b3JrIGluIGZsaWdodDsgaG9waW5nIHRvIGhhdmUgaXQgdXAgdGhpcyB3ZWVrPC9saT4KICAgICAgICAgICAgICAgIDxsaT5FeHRlcm5hbCBjb21tdW5pY2F0aW9ucyCWIE9PUFNMQSBjb21pbmcgdXAuIExNIHdpbGwgYmUgc3VibWl0dGluZyBhIHR1dG9yaWFsLCBkZW1vLCBhbmQKICAgICAgICAgICAgICAgIHBvc3NpYmx5IGEgcGFuZWwgc2Vzc2lvbjsgdGhlbWUgd2lsbCBiZSCTVXNpbmcgV1RQIGZvciB0ZWFjaGluZyBKMkVFlC48L2xpPgogICAgICAgICAgICAgICAgPGxpPkZvciB0aGlzIGFuZCBhbnkgb3RoZXIgZXh0ZXJuYWwgY29tbXVuaWNhdGlvbiwgcGxlYXNlIGxldCBMTSBrbm93IHNvIHRoYXQgaGUgY2FuIHBvc3QgZXZlbnRzIHRvCiAgICAgICAgICAgICAgICB0aGUgY29tbXVuaXR5IHBhZ2UsIGFuZCBhbHNvIHNlcnZlIGFzIGEgY2xlYXJpbmcgaG91c2UgZm9yIHNsaWRlIGRlY2tzIGFuZCBvdGhlciBzaGFyZWFibGUgbWF0ZXJpYWwuPC9saT4KICAgICAgICAgICAgICAgIDxsaT5Eb3dubG9hZCBzdGF0aXN0aWNzLiBUaGVzZSBhcmUgdHJhY2tlZCB3aGVuIGRvd25sb2FkcyBhcmUgcGVyZm9ybWVkIHRocm91Z2ggdGhlIGNvcnJlY3QgUEhQCiAgICAgICAgICAgICAgICBzY3JpcHQuIEpLIHBvaW50ZWQgb3V0IHRoYXQgd2Ugd2FudCB0byB0cmFjayBvdXIgZG93bmxvYWQgZnJlcXVlbmN5IHNvIHRoYXQgd2UgY2FuIG1vbml0b3Igb3ZlcmFsbCB1c2UKICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgY2hhbmdlcyB3LnIudC4gV1RQIGV2ZW50cy4gRG93bmxvYWQgc3RhdGlzdGljcyBjYW4gYmUgdHJhY2tlZCBhdCA8YQogICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZG93bmxvYWRzL3N0YXRzLnBocD9maWxlbmFtZT13dHAtIj4KICAgICAgICAgICAgICAgIHd3dy5lY2xpcHNlLm9yZy9kb3dubG9hZHMvc3RhdHMucGhwP2ZpbGVuYW1lPXd0cC08L2E+LiBEVyByZXBvcnRlZCB0aGF0IHdlknJlIGFyb3VuZCAyMEsgZG93bmxvYWRzIGZvciBNMy4KICAgICAgICAgICAgICAgIExNIHdpbGwgcGVyaW9kaWNhbGx5IHJlcG9ydCBvbiBjaGFuZ2VzIGluIGRvd25sb2FkIGZyZXF1ZW5jeS48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICBbUE1DIG1lbWJlcnMgb25seSBmb3IgdGhlIHJlbWFpbmluZyBwb3J0aW9uIG9mIHRoZSBtZWV0aW5nXQogICAgICAgICAgICA8aDI+UmVxdWlyZW1lbnRzIGdyb3VwIFtKS108L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+QkVBIG5vbWluYXRlZCBQYXVsIE1laWplciB0byB3b3JrIHdpdGggSm9jaGVuPC9saT4KICAgICAgICAgICAgICAgIDxsaT5Kb2NoZW4gd29ya2luZyBpbmRlcGVuZGVudGx5IGZvciBwYXN0IHdlZWs7IHdpbGwgc2V0IGRhdGUgZm9yIGluaXRpYWwgbWVldGluZyB3aXRoIFBhdWwgYW5kCiAgICAgICAgICAgICAgICBvdGhlciBpbnRlcmVzdGVkIHBhcnRpZXMgdGhpcyB3ZWVrPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGgyPkFyY2hpdGVjdHVyZSBHcm91cCBbRFddPC9oMj4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPktldmluIEhhYWxhbmQgYW5kIFRlZCBCYXNob3Igam9pbmVkIHRoZSBncm91cDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+U3BlbnQgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgdGltZSBkaXNjdXNzaW5nIJNvcGVyYXRpb25zlCwgYW5kIHRoZSBkaWZmZXJpbmcgZnJhbWV3b3JrcyBmb3IKICAgICAgICAgICAgICAgIHRoZW0uIEtldmluIHJlcG9ydGVkIHRoYXQgcGxhdGZvcm0gaXMgYXR0ZW1wdGluZyB0byBkcml2ZSBhZG9wdGlvbiBvZiBhIHNpbmdsZSBzb2x1dGlvbi48L2xpPgogICAgICAgICAgICAgICAgPGxpPk90aGVyIGlzc3VlcyBpbmNsdWRlZCBhbiBlZGl0IG1vZGVsIGluIEVNRiBhbmQgbW92aW5nIHRoZSBleHRlbnNpYmxlIG5hdmlnYXRvciB0byB0aGUgcGxhdGZvcm0KICAgICAgICAgICAgICAgIGZyb20gV1RQLjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+UHJvY2VzcyBpbnZvbHZlcyB3ZWVrbHkgY29uZmVyZW5jZSBjYWxscyBmb3IgdGhlIGdyb3VwLCBjb21tdW5pdHkgcmV2aWV3IG9mIHByb3Bvc2FscyAoc2VlCiAgICAgICAgICAgICAgICBiZWxvdyksIGFuZCBhcmNoaXRlY3R1cmFsIHJldmlld3Mgd2l0aCBjb21wb25lbnQgbGVhZHMuIEluZGl2aWR1YWxzIHdpbGwgYmUgc2VsZWN0ZWQgdG8gZHJpdmUKICAgICAgICAgICAgICAgIGNyb3NzLXByb2plY3Qgb3IgY3Jvc3MtY29tcG9uZW50ICh3aXRoaW4gV1RQKSBhcmNoaXRlY3R1cmFsIGNoYWxsZW5nZXMuPC9saT4KICAgICAgICAgICAgICAgIDxsaT5CdWd6aWxsYSBlbnRyaWVzIGZpbGVkIGJ5IGFyY2hpdGVjdHVyZSBncm91cCBmb3IgY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgbWFkZSBvciBpc3N1ZXMgYmVpbmcKICAgICAgICAgICAgICAgIHRyYWNrZWQgY2FuIGJlIGZvdW5kIGF0IDxhCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3MvYnVnbGlzdC5jZ2k/cXVlcnlfZm9ybWF0PWFkdmFuY2VkJmFtcDtzaG9ydF9kZXNjX3R5cGU9YWxsd29yZHNzdWJzdHImYW1wO3Nob3J0X2Rlc2M9JTVCYXJjaCU1RCZhbXA7cHJvZHVjdD1XZWIrVG9vbHMmYW1wO2xvbmdfZGVzY190eXBlPWFsbHdvcmRzc3Vic3RyJmFtcDtsb25nX2Rlc2M9JmFtcDtidWdfZmlsZV9sb2NfdHlwZT1hbGx3b3Jkc3N1YnN0ciZhbXA7YnVnX2ZpbGVfbG9jPSZhbXA7a2V5d29yZHNfdHlwZT1hbGx3b3JkcyZhbXA7a2V5d29yZHMmYW1wO2J1Z19zdGF0dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFTU0lHTkVEJmFtcDtidWdfc3RhdHVzPVJFT1BFTkVEJmFtcDtlbWFpbHR5cGUxPXN1YnN0cmluZyZhbXA7ZW1haWwxPSZhbXA7ZW1haWx0eXBlMj1zdWJzdHJpbmcmYW1wO2VtYWlsMj0mYW1wO2J1Z2lkdHlwZT1pbmNsdWRlJmFtcDtidWdfaWQ9JmFtcDt2b3Rlcz0mYW1wO2NoZmllbGRmcm9tPSZhbXA7Y2hmaWVsZHRvPU5vdyZhbXA7Y2hmaWVsZHZhbHVlPSZhbXA7Y21kdHlwZT1kb2l0JmFtcDtvcmRlcj1SZXVzZStzYW1lK3NvcnQrYXMrbGFzdCt0aW1lJmFtcDtmaWVsZDAtMC0wPW5vb3AmYW1wO3R5cGUwLTAtMD1ub29wJmFtcDt2YWx1ZTAtMC0wPSI+dGhpcwogICAgICAgICAgICAgICAgVVJMPC9hPi48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8aDI+QnVuZGxlZCBXVFAgRG93bmxvYWRzIFtBUl08L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+VHdvIGJ1bmRsZWQgcGFja2FnZXMgYXZhaWxhYmxlOiBvbmUgd2l0aCBlY2xpcHNlLCB3dHAsIGVtZiwgZ2VmLCBqZW0sIGFuZCB4ZXJjZXMsIGFub3RoZXIgd2l0aAogICAgICAgICAgICAgICAgYWxsIG9mIHRoYXQgPGVtPmJ1dDwvZW0+ZWNsaXBzZTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+UGxhbiBpcyB0byBkbyB0aGlzIGZvciBlYWNoIG1pbGVzdG9uZTsgSmVmZnJleSBMaXUgb3ducyB1cGRhdGluZyBidWlsZCBzY3JpcHRzIHRvIGRvIHRoaXMKICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkuPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGgyPnd0cC1wbWMgbWFpbGluZyBsaXN0PC9oMj4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPkZvciBtYXhpbXVtIHRyYW5zcGFyZW5jeSBvZiBvdXIgb3BlcmF0aW9ucywgdGhlIFdUUCBQTUMgYWdyZWVkIHRvIGRpc2JhbmQgdGhlIE9iamVjdFdlYi1ob3N0ZWQKICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdCBhbmQgcmVjcmVhdGUgb25lIG9mIHRoZSBzYW1lIG5hbWUgaG9zdGVkIG9uIEVjbGlwc2UuIEl0IHdvdWxkIGNvbnRpbnVlIHRvIGJlIHVzZWQgZm9yCiAgICAgICAgICAgICAgICBhZG1pbmlzdHJhdGl2ZSBwdXJwb3NlcywgYW5kIHdlIHdvdWxkIGRpc2NvdXJhZ2UgdGhyZWFkcyBiZXR0ZXIgZXhwcmVzc2VkIG9uIHd0cC1kZXYuPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGgyPkFQSXM8L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+SmVmZnJleSBMaXUgaGFuZGxpbmcgdGhlIHNjYW5uaW5nIHByb2Nlc3MuPC9saT4KICAgICAgICAgICAgICAgIDxsaT5jb21wb25lbnQueG1sIHVwZGF0ZXMgYXJlIGluIGZsaWdodDsgd291bGQgbGlrZSB0byBzZWUgdGhpcyBmaW5pc2hlZCBxdWlja2x5LCBidXQgRFcgcmVwb3J0cwogICAgICAgICAgICAgICAgdGhhdCBub3QgYWxsIGNvbXBvbmVudCB0ZWFtcyBjYW4gY29tcGxldGUgdGhlIHdvcmsgdGhpcyB3ZWVrOyB0aGlzIHdpbGwgYmUgdGhlIGZpcnN0IHN0ZXAgaW4KICAgICAgICAgICAgICAgIGRpc3Rpbmd1aXNoaW5nIG91ciB0cnVlIEFQSTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+cmVuYW1pbmcgbm9uLUFQSSBwdWJsaWMgbWV0aG9kcyB0byCThWludGVybmFslCBpcyBpbiBmbGlnaHQ8L2xpPgogICAgICAgICAgICAgICAgPGxpPnVzZSBvZiB0aGUgk2ludGVybmFsLnByb3Zpc2lvbmFslCBuYW1pbmcgc2NoZW1lIHJhdGlmaWVkPC9saT4KICAgICAgICAgICAgICAgIDxsaT5yZGIgd2lsbCBiZSBlbnRpcmVseSBpbnRlcm5hbDsgd2hldGhlciB3ZSB3aWxsIHByZS1uYW1lIGNvbXBvbmVudHMgZm9yIHRoZWlyIHBvc3QgbWlncmF0aW9uCiAgICAgICAgICAgICAgICBsb2NhdGlvbiBpcyBzdGlsbCBUQkQgW25leHQgbWVldGluZyBpcyAzLzE3XTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+TTQgcHJvY2VzcyB3aWxsIGJlIChpbiBvcmRlcik6IGRlZmluZSBjb21wb25lbnQueG1sIGZpbGVzLCBkcml2ZSBmb3IgamF2YWRvYyBhbmQganVuaXQKICAgICAgICAgICAgICAgIGNvdmVyYWdlLCBjb3JyZWN0IG5hbWluZyBjb252ZW50aW9ucywgd29yayBvbiBpbXBsZW1lbnRhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+UE1DIHdpbGwgcmV2aWV3IGNvbXBvbmVudC54bWwgcHJvZ3Jlc3MgbmV4dCB3ZWVrIGFuZCB3aWxsIHJldmlldyBzdGF0aXN0aWNzIG9uIGFuIG9uZ29pbmcgYmFzaXMKICAgICAgICAgICAgICAgIGFzIHBhcnQgb2Ygb3VyIHdlZWtseSBjYWxsIGFnZW5kYTsgY29tcG9uZW50IGxlYWRzIHNob3VsZCBiZSBwcmVwYXJlZCBmb3IgUE1DIHJldmlldyBzdGFydGluZyBuZXh0IHdlZWsKICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+Q3VycmVudGx5IGhhdmUgfjE0SyCTQVBJc5Qgd2l0aG91dCBKVW5pdCB0ZXN0czsgbnVtYmVyIG5lZWRzIHRvIGRyb3AgdGhyb3VnaCBhZGRpdGlvbmFsIHRlc3RzCiAgICAgICAgICAgICAgICBhbmQgYnkgaW50ZXJuaW5nIHVuaW50ZW50aW9uYWwgQVBJczwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxoMj5QbGFucyBmb3IgaW50ZWdyYXRpbmcgQkVBIGRldmVsb3BlcnM8L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+SUJNIHNpdGVzIHdpbGwgaG9zdCCTaW1tZXJzaW9ulCBkYXlzIGZvciBCRUEgZGV2ZWxvcGVycyB0byBoZWxwIHRoZW0gcmFtcCB1cCBvbiB0ZWNobm9sb2d5LAogICAgICAgICAgICAgICAgcGVvcGxlLCBhbmQgcHJvY2Vzc2VzPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGgyPk1haW50ZW5hbmNlIFJlbGVhc2VzPC9oMj4KICAgICAgICAgICAgQm90aCBCRUEgYW5kIElCTSB3aWxsIGJlIGJhc2luZyBwcm9kdWN0cyBvbiBXVFAgMS4wLCBzbyB3ZSBuZWVkIHRvIHBsYW4gZm9yIGEgMS4wLnggbWFpbnRlbmFuY2Ugc3RyZWFtLiBUaGlzCiAgICAgICAgICAgIHdpbGwgbmVlZCB0byBiZSBjb29yZGluYXRlZCB3aXRoIHRoZSBwbGF0Zm9ybSBtYWludGVuYW5jZSBzdHJlYW0uIFBsYW5uaW5nIHNob3VsZCBiZWdpbiBub3cgdG8gZW5zdXJlIHRoYXQKICAgICAgICAgICAgdGhpcyBpcyBoYW5kbGVkIHNtb290aGx5OyBhIHNpbmdsZSCTcmVsZWFzZSBtYW5hZ2VylCB3b3VsZCBiZSBpZGVhbC4gU2luY2UgTmFjaZJzIHRlYW0gY3VycmVudGx5IGhhbmRsZXMKICAgICAgICAgICAgYnVpbGQsIHdlkmxsIHJldmlzaXQgdGhpcyBuZXh0IHdlZWsgd2hlbiBoZZJzIHByZXNlbnQuCiAgICAgICAgICAgIDxoMj5IYW5kbGluZyBUaGlyZCBQYXJ0eSBDb250ZW50PC9oMj4KICAgICAgICAgICAgPHA+W3F1b3RlZCBmcm9tIEFydGh1cpJzIG5vdGVzXTwvcD4KICAgICAgICAgICAgPGJsb2NrcXVvdGU+CiAgICAgICAgICAgIDxwPkkgaGF2ZSBiZWVuIHdvcmtpbmcgd2l0aCBKYW5ldCBDYW1wYmVsbCwgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBJUCBsYXd5ZXIsIHRvIGdldCBwZXJtaXNzaW9uIHRvCiAgICAgICAgICAgIHJlZGlzdHJpYnV0ZSBzb21lIDNQQyAoZnJvbSBBcGFjaGUsIFczQywgZXRjKS4gVGhpcyBpcyBnb2luZyB0byBiZSBhIHNsb3cgcHJvY2Vzcy4gQWxzbywgb3VyIHBvbGljeSB0byB0bwogICAgICAgICAgICBub3QgcmVzaGlwIHJ1bnRpbWVzLiBUaGVzZSB0d28gY29uc2lkZXJhdGlvbnMgY29tYmluZSB0byBwcm9kdWNlIGEgZGlmZmljdWx0IHNpdHVhdGlvbiBmb3Igb3VyIHVzZXJzIHdobwogICAgICAgICAgICBoYXZlIHRvIG5hbXVhbGx5IGRvd25sb2FkIGFuZCBpbnN0YWxsIG1hbnkgcGllY2VzLjwvcD4KICAgICAgICAgICAgPHA+SSdkIGxpa2UgdG8gc3VnZ2VzdCBhbiBhbHRlcm5hdGl2ZS4gSSdtIGNhbGxpbmcgdGhlc2UgIldvcm1ob2xlcyIuIFRoZSBpZGVhIGlzIHRvIGNyZWF0ZSBVcGRhdGUKICAgICAgICAgICAgTWFuYWdlciBzaXRlcyBhdCBBcGFjaGUsIFczQywgT2JqZWN0V2ViLCBTb3VyY2VGb3JnZSwgZXRjLiBXZSB3b3VsZCBjcmVhdGUgYSBwcm9qZWN0IGF0IGVhY2ggb2YgdGhvc2Ugc2l0ZXMKICAgICAgICAgICAgYW5kIHBhY2thZ2UgdGhlIGNvZGUgd2UgbmVlZC4gV2Ugd291bGQgY3JlYXRlIGV4dGVuc2lvbiBwb2ludHMgZm9yIHRoaXMgY29udGVudCwgZS5nLiBhIFNlcnZlciBSdW50aW5lCiAgICAgICAgICAgIGV4dGVuc2lvbiBwb2ludCBhbmQgdGhlIEpvbmFzLCBUb21jYXQsIEdlcm9uaW1vLCBKaWdzYXcsIGV0Yy4gcnVudGltZXMgY291bGQgYmUgcGFja2FnZWQgdG8gZXh0ZW5kIHRoYXQKICAgICAgICAgICAgcnVudGltZS4gV2Ugd291bGQgcHJlbG9hZCB0aGUgVVJMcyB0byB0aGVzZSBzaXRlcyBpbiBXVFAuIFRoZW4gdGhlIHVzZXIgY291bGQgZWFzaWx5IGRvd25sb2FkIGFuZCBpbnN0YWxsCiAgICAgICAgICAgIHRoZSAzUEMuIFRoaXMgZmluZXNlcyB0aGUgaW5zdGFsbGF0aW9uLCBjb25maWd1cmF0aW9uLCBsZWdhbCwgYW5kIG1haW50ZW5hbmNlIHByb2JsZW1zLjwvcD4KICAgICAgICAgICAgPHA+VG8gc3RhcnQsIHdlIGNvdWxkIGNyZWF0ZSBhbiAiT2JqZWN0V2ViLUVjbGlwc2UgV29ybWhvbGUiIGZvciBKb25hcy4gTmV4dCB3b3VsZCBiZSBhbiAiQXBhY2hlLUVjbGlwc2UKICAgICAgICAgICAgV29ybWhvbGUiLmZvciBUb21jYXQsIEF4aXMsIGV0Yy4gV2UgbmVlZCB0byBwcm9wb3NlIGFuIEFwYWNoZSBwcm9qZWN0IGZvciB0aGF0LCBhbmQgdGhlIG1vcmUgY29tcGFuaWVzIHdobwogICAgICAgICAgICBjb3VsZCBwYXJ0aWNpcGF0ZSwgdGhlIHN0cm9uZ2VyIG91ciBwcm9wb3NhbCBpcy4gSSd2ZSBhbHJlYWR5IHJ1biB0aGlzIGJ5IE1pa2UgTWlsaW5rb3ZpY2ggYW5kIGhlIGxpa2VzIHRoZQogICAgICAgICAgICBpZGVhLjwvcD4KICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAgICAgICA8cD5UaGlzIHdvdWxkIGJlIHRhcmdldGVkIGZvciBNNS4gSksgbm90ZWQgdGhhdCBwbGFjaW5nLCBlLmcuLCBKQm9zcyBpbiB0aGUgcGx1Z2lucyBkaXJlY3RvcnkgaXMgbm90CiAgICAgICAgICAgIGlkZWFsIGZvciBldmVyeW9uZSwgc28gdGhpcyB3b3VsZCBoYXZlIHRvIGJlIG9wdGlvbmFsLiBJZiBPYmplY3RXZWIgY2Fubm90IGhvc3QsIHRoZW4gQkVBIGFuZCBJQk0gY291bGQgd29yawogICAgICAgICAgICBvbiBhIGpvaW50IEFwYWNoZSBwcm9wb3NhbC48L3A+CiAgICAgICAgICAgIDxoMj5BY3Rpb24gSXRlbXM6PC9oMj4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPltKS10gQ2FsbCByZXF1aXJlbWVudHMgZ3JvdXAgbWVldGluZy48L2xpPgogICAgICAgICAgICAgICAgPGxpPltUV10gRGlzYmFuZCBleGlzdGluZyB3dHAtcG1jIGRpc3RyaWJ1dGlvbiBsaXN0IGFuZCByZWNyZWF0ZSBpdCBvbiBFY2xpcHNlLjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+W0FSXSBQcm9wb3NhbCBmb3IgM1BDIGRvd25sb2Fkcy48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8c21hbGw+TWludXRlcyB0YWtlbiBieSBUaW0gV2FnbmVyLCBNYXJjaCAxNSwgMjAwNTwvc21hbGw+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPiYjMTYwOzwvdGQ+CiAgICAgICAgPC90cj4KICAgIDwvdGJvZHk+CjwvdGFibGU+CjwvYm9keT4KPC9odG1sPgo=