ISC DHCP 4.3.3-P1 is now available
Michael McNally <[email protected]> Tue, 12 Jan 2016 17:05:07 -0500
| Newsgroups | gmane.network.dhcp.isc.announce |
|---|---|
| Message-ID | <[email protected]> |
ICAgICAgICAgICAgICAgIEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSBESENQIERpc3RyaWJ1 dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA0LjMuMy1QMQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTIgSmFudWFyeSAyMDE2CgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJlbGVhc2UgTm90ZXMKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5F VyBGRUFUVVJFUwoKVGhlIG1ham9yICJ0aGVtZSIgZm9yIElTQyBESENQIDQuMy54IHdhcyB0byB1 cGRhdGUgdGhlIHN1cHBvcnQgZm9yCkRIQ1B2NiB0byBpbmNsdWRlIHNldmVyYWwgb2YgdGhlIGZl YXR1cmVzIHRoYXQgaGF2ZSBiZWVuIGF2YWlsYWJsZQpmb3IgREhDUHY0LiAgVGhlc2UgaW5jbHVk ZToKCi0gU3VwcG9ydCB0aGUgdXNlIG9mIGNsYXNzZXMKCi0gU3VwcG9ydCBmb3Igb25fY29tbWl0 LCBvbl9leHBpcnkgYW5kIG9uX3JlbGVhc2Ugc3RhdGVtZW50cwoKLSBCZXR0ZXIgbG9nZ2luZyBv ZiBhZGRyZXNzIGFzc2lnbm1lbnRzCgotIFN1cHBvcnQgZm9yIHVzaW5nIERIQ1B2NiByZWxheSBv cHRpb25zIGluIGV4cHJlc3Npb25zCgpUaGlzIHJlbGVhc2UgYWxzbyBhZGRzIHN1cHBwb3J0IGZv ciB0aGUgc3RhbmRhcmQgREROUyBhcyBkZXNjcmliZWQgaW4gdGhlCmN1cnJlbnQgUkZDcyBhcyB3 ZWxsIGFzIGVuaGFuY2luZyBzdXBwb3J0IGZvciBkeW5hbWljYWxseSBhZGRpbmcgYW5kCnJlbW92 aW5nCnN1YmNsYXNzZXMgdmlhIE9NQVBJLgoKVGhlcmUgYXJlIGEgbnVtYmVyIG9mIERIQ1B2NiBs aW1pdGF0aW9ucyBhbmQgZmVhdHVyZXMgbWlzc2luZyBpbiB0aGlzCnJlbGVhc2UsIHdoaWNoIHdp bGwgYmUgYWRkcmVzc2VkIGluIHRoZSBmdXR1cmU6CgotIE9ubHkgU29sYXJpcywgTGludXgsIEZy ZWVCU0QsIE5ldEJTRCwgYW5kIE9wZW5CU0QgYXJlIHN1cHBvcnRlZC4KCi0gREhDUHY2IGluY2x1 ZGVzIGh1bWFuLXJlYWRhYmxlIHRleHQgaW4gc3RhdHVzIGNvZGUgbWVzc2FnZXMsIGluCiAgRW5n bGlzaC4gIEEgbWV0aG9kIHRvIHJlY29uZmlndXJlIG9yIHN1cHBvcnQgb3RoZXIgbGFuZ3VhZ2Vz IHdvdWxkCiAgYmUgcHJlZmVyYWJsZS4KCi0gVGhlICJob3N0LWlkZW50aWZpZXIiIG9wdGlvbiBp cyBsaW1pdGVkIHRvIGEgc2ltcGxlIHRva2VuLgoKLSBUaGUgY2xpZW50IGFuZCBzZXJ2ZXIgY2Fu IG9ubHkgb3BlcmF0ZSBESENQdjQgb3IgREhDUHY2IGF0IGEgdGltZSwKICBub3QgYm90aC4gIFRv IHVzZSBib3RoIHByb3RvY29scyBzaW11bHRhbmVvdXNseSwgdHdvIGluc3RhbmNlcyBvZiB0aGUK ICByZWxldmFudCBkYWVtb24gYXJlIHJlcXVpcmVkLCBvbmUgd2l0aCB0aGUgJy02JyBjb21tYW5k IGxpbmUgb3B0aW9uLgoKRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpbnN0YWxsLCBjb25maWd1 cmUgYW5kIHJ1biB0aGlzIHNvZnR3YXJlLCBhcwp3ZWxsIGFzIGhvdyB0byBmaW5kIGRvY3VtZW50 YXRpb24gYW5kIHJlcG9ydCBidWdzLCBwbGVhc2UgY29uc3VsdCB0aGUKUkVBRE1FIGZpbGUuCgpJ U0MgREhDUCB1c2VzIHN0YW5kYXJkIEdOVSBjb25maWd1cmUgZm9yIGluc3RhbGxhdGlvbi4gUGxl YXNlIHJldmlldyB0aGUKb3V0cHV0IG9mICIuL2NvbmZpZ3VyZSAtLWhlbHAiIHRvIHNlZSB3aGF0 IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4KClRoZSBzeXN0ZW0gaGFzIG9ubHkgYmVlbiB0ZXN0ZWQg b24gTGludXgsIEZyZWVCU0QsIGFuZCBTb2xhcmlzLCBhbmQgbWF5IG5vdAp3b3JrIG9uIG90aGVy IHBsYXRmb3Jtcy4gUGxlYXNlIHJlcG9ydCBhbnkgcHJvYmxlbXMgYW5kIHN1Z2dlc3RlZCBmaXhl cyB0bwo8ZGhjcC11c2Vyc0Bpc2Mub3JnPi4KCklTQyBESENQIGlzIG9wZW4gc291cmNlIHNvZnR3 YXJlIG1haW50YWluZWQgYnkgSW50ZXJuZXQgU3lzdGVtcwpDb25zb3J0aXVtLiAgVGhpcyBwcm9k dWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbgpieSBFcmljIFlvdW5n IChlYXlAY3J5cHRzb2Z0LmNvbSkuCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMy4zCgohIFVwZGF0ZSB0 aGUgYm91bmRzIGNoZWNraW5nIHdoZW4gcmVjZWl2aW5nIGEgcGFja2V0LgogIFRoYW5rcyB0byBT ZWJhc3RpYW4gUG9laG4gZnJvbSBTb3Bob3MgZm9yIHRoZSBidWcgcmVwb3J0IGFuZCBhIHN1Z2dl c3RlZAogIHBhdGNoLgogIFtJU0MtQnVncyAjNDEyNjddCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMy4z YjEKCi0gTm9uZQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjMuMgoKLSBUaGUgc2VydmVyIG5vdyBkb2Vz IGEgYmV0dGVyIGNoZWNrIHRvIHNlZSBpZiBpdCBjYW4gYWxsb2NhdGUgdGhlIG1lbW9yeQogIGZv ciBsYXJnZSBibG9ja3Mgb2YgdjQgbGVhc2VzIGFuZCBzaG91bGQgcHJvdmlkZSBhIHNsaWdodGx5 IGJldHRlciBlcnJvcgogIG1lc3NhZ2UuICBOb3RlIHdlbGw6IHRoZSBzZXJ2ZXIgcHJlLWFsbG9j YXRlcyB2NCBhZGRyZXNzZXMsIGlmIHlvdSB1c2UKICBhIGxhcmdlIHJhbmdlLCBzdWNoIGFzIGEg LzgsIHRoZSBzZXJ2ZXIgd2lsbCBhdHRlbXB0IHRvIHVzZSBhIGxhcmdlCiAgYW1vdW50IG9mIG1l bW9yeSBhbmQgbWF5IG5vdCBzdGFydCBpZiB0aGVyZSBlaXRoZXIgaXNuJ3QgZW5vdWdoIG1lbW9y eQogIG9yIHRoZSBzaXplIGV4Y2VlZHMgd2hhdCB0aGUgY29kZSBzdXBwb3J0cy4KICBbSVNDLUJ1 Z3MgIzM4NjM3XQoKLSBUaGUgc2VydmVyIHdpbGwgbm93IHJlamVjdCB1bmljYXN0IFJlcXVlc3Qs IFJlbmV3LCBEZWNsaW5lLCBhbmQgUmVsZWFzZQogIG1lc3NhZ2VzIGZyb20gYSBjbGllbnQgdW5s ZXNzIHRoZSBzZXJ2ZXIgd291bGQgaGF2ZSBzZW50IHRoYXQgY2xpZW50IHRoZQogIGRoY3A2LnVu aWNhc3Qgb3B0aW9uLiAgVGhpcyBiZWhhdmlvciBpcyBpbiBjb21wbGlhbmNlIHdpdGggcGFyYWdy YXBoIDEgaW4KICBlYWNoIG9mIHRoZSBzZWN0aW9ucyAxOC4yLDEsIDE4LjIuMywgMTguMi42LCBh bmQgMTguMi43IG9mIFJGQyAzMzE1LiBQcmlvcgogIHRvIHRoaXMsIHRoZSBzZXJ2ZXIgd291bGQg c2ltcGx5IGFjY2VwdCB0aGUgbWVzc2FnZXMuICBOb3csIGluIG9yZGVyIGZvcgogIHRoZSBzZXJ2 ZXIgdG8gYWNjZXB0IHN1Y2ggYSBtZXNzYWdlLCB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gbXVz dCBpbmNsdWRlCiAgdGhlIGRoY3A2LnVuaWNhc3Qgb3B0aW9uIGVpdGhlciBnbG9iYWxseSBvciB3 aXRoaW4gdGhlIHNoYXJlZCBuZXR3b3JrIHRvCiAgd2hpY2ggdGhlIHJlcXVlc3RlZCBsZWFzZSBi ZWxvbmdzLiBJbiBvdGhlciB3b3JkcywgdGhlIHNlcnZlciB3aWxsIG1hcAogIHRoZSBmaXJzdCBJ QV9YWCBhZGRyZXNzIGZvdW5kIHdpdGhpbiB0aGUgY2xpZW50IG1lc3NhZ2UgdG8gYQpzaGFyZWQt bmV0d29yawogIGFuZCBsb29rIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIHVuaWNhc3Qgb3B0aW9u IHRoZXJlIGFuZCB0aGVuIGdsb2JhbGx5LgogIFRoYW5rcyB0byBKaXJpIFBvcGVsa2EgYXQgUmVk IEhhdCBmb3IgdGhpcyBpc3N1ZSBhbmQgaGlzIHBhdGNoIHdoaWNoCiAgaW5zcGlyZWQgdGhlIGZp eC4KICBbSVNDLUJ1Z3MgIzIxMjM1XQoKLSBUaGUgQVRGIChBdXRvbWF0ZWQgVGVzdGluZyBGcmFt ZXdvcmspIHRvb2xzIHVzZWQgZm9yIG9wdGlvbmFsIHVuaXQgdGVzdHMKICBjYW4gbm93IGJlIGJ1 aWx0IGZyb20gaXRzIGVtYmVkZGVkIHNvdXJjZXMgaW4gYmluZCwgc29sdmluZyB0aGUKICBhdGYt cnVuIC8gYXRmLXJlcG9ydCBpc3N1ZSB3aXRoIHJlY2VudCAoPj0gMC4yMCkgdmVyc2lvbnMgb2Yg QVRGLgogIFRoZSBuZXcgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgIi4vY29uZmlndXJlIC0td2l0 aC1hdGY9YmluZCIuCiAgW0lTQy1CdWdzICMzODc1NCwgIzM5MzAwXQoKLSBDb3JyZWN0ZWQgYSBj b21waWxhdGlvbiBlcnJvciBpbnRyb2R1Y2VkIGJ5IHRoZSBmaXggZm9yIElTQy1CdWdzICMyMjgw Ni4KICBPbiBvbGRlciBsaW51eGVzIHRoYXQgZG8gbm90IGluY2x1ZGUgdGhlIHRwYWNrZXRfYXV4 ZGF0YSBzdHJ1Y3R1cmUgZG9uJ3QKICBib3RoZXIgYWxsb2NhdGluZyB0aGUgY21zZ2J1ZiBhcyBp dCBpc24ndCBuZWNlc3NhcnkgYW5kIHdlIGRvbid0IGhhdmUKICBhIHByb3BlciBsZW5ndGggZm9y IGl0LgogIFtJU0MtQnVncyAjMzkyMDldCgotIFJlbW92ZSB0aGUgZHN0IGRpcmVjdG9yeS4gIFRo aXMgd2FzIHJlcGxhY2VkIGluIDQuMi4wIHdpdGggdGhlIGRzdAogIGNvZGUgZnJvbSB0aGUgQmlu ZCBsaWJyYXJpZXMgYnV0IHdlIGNvbnRpbnVlZCB0byBpbmNsdWRlIGl0IGZvcgogIGJhY2t3YXJk cyBjb21wYXRpYmlsaXR5LiAgQXMgd2UgaGF2ZSBub3cgcmVsZWFzZWQgNC4zLnggaXQgc2VlbXMK ICByZWFzb25hYmxlIHRvIHJlbW92ZSBpdC4KICBbSVNDLUJ1dHMgIzM5MDE5XQoKLSBXcml0ZSBv dXQgdGhlIERVSUQgc2VydmVyIGlkIG9uIHN0YXJ0dXAgaW4gYWxsIGNhc2VzLCBwcmV2aW91c2x5 IGlmIGl0CiAgd2FzIHJlYWQgaW4gZnJvbSBzZXJ2ZXItZHVpZCBvcHRpb24gaW4gdGhlIGNvbmZp ZyBvciBsZWFzZSBmaWxlcyBmb3IKICBESENQdjQgaXQgd291bGQgbm90IGJlIHdyaXR0ZW4gdG8g dGhlIG5ldyBsZWFzZSBmaWxlLgogIFtJU0MtQnVncyAjMzc3OTFdCgotIFdoZW4gcGFyc2luZyBk YXRlcyBmb3IgbGVhc2VzIGNvbnZlcnQgZGF0ZXMgcGFzdCAyMDM4IHRvICJuZXZlciIuCiAgVGhp cyBhdm9pZHMgcHJvYmxlbXMgd2l0aCBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgZGF0ZSBhbmQg dGltZQogIGhhbmRsaW5nIGNvZGUgZm9yIHBlb3BsZSB0aGF0IGRlY2lkZSB0byB1c2UgdmVyeSBs YXJnZSBsZWFzZSB0aW1lcwogIG9yIGFkZCBhIGxlYXNlIGVudHJ5IHdpdGggYSBkYXRlIGZhciBp biB0aGUgZnV0dXJlLgogIFtJU0MtQnVncyAjMzMwNTZdCgotIExlYXZlIHRoZSBzaWFkZHIgZmll bGQgY2xlYXIgd2hlbiBzZW5kaW5nIGEgTkFDSyBhcyBwZXIgUkZDIDIxMzEKICB0YWJsZSAzLgog IFtJU0MtQnVncyAjMzg3NjldCgotIEluIHRoZSBjbGllbnQgZG9uJ3Qgc2VuZCBleHBpcmVkIGFk ZHJlc3NlcyB0byB0aGUgc2NyaXB0IGFzIHBhcnQgb2YKICB0aGUgYmluZGluZyBwcm9jZXNzLiAg VGhhbmtzIHRvIFN2ZW4gVHJlbmtlbCBhdCBHb29nbGUgZm9yIHJlcG9ydGluZwogIHRoZSBpc3N1 ZSBhbmQgc3VnZ2VzdGluZyB0aGUgcGF0Y2guCiAgW0lTQy1CdWdzICMzODYzMV0KCi0gV2hpbGUg cGFyc2luZyBJUHY2IGFkZHJlc3NlcyB0cmVhdCAiYWRkIiBhcyBwYXJ0IG9mIHRoZSBhZGRyZXNz IGluc3RlYWQKICBvZiBhcyBhIHRva2VuLgogIFtJU0MtQnVncyAjMzk1MjldCgotIEFkZCBzdXBw b3J0IGZvciBhY2Nlc3NpbmcgdGhlIHY0IGxlYXNlIHF1ZXVlcyAoYWN0aXZlLCBmcmVlIGV0Yykg aW4gYQogIGJpbmFyeSBmYXNoaW9uIGluc3RlYWQgb2YgbmVlZGluZyB0byB3YWxrIHRocm91Z2gg YSBsaW5lYXIgbGlzdCB0bwogIGluc2VydCwgZmluZCBvciByZW1vdmUgYW4gZW50cnkgZnJvbSB0 aGUgcXVldWVzLiAgSW4gYWRkaXRpb24gYWRkIGEKICBjb21waWxlIHRpbWUgb3B0aW9uICItLWVu YWJsZS1iaW5hcnktbGVhc2VzIiB0byBlbmFibGUgdGhlIG5ldyBjb2RlCiAgb3IgdG8gY29udGlu dWUgdXNpbmcgdGhlIG9sZCBjb2RlLiAgVGhlIG9sZCBjb2RlIGlzIHRoZSBkZWZhdWx0LgogIFRo YW5rcyB0byBGZXJuYW5kbyBTb3RvIGZyb20gQmx1ZUNhdCBOZXR3b3JrcyBmb3IgdGhlIHBhdGNo LgogIFtJU0MtQnVncyAjMzkwNzhdCgotIERlbGF5ZWQtYWNrIG5vdyB3b3JrcyBwcm9wZXJseSB3 aXRoIEZhaWxvdmVyLiBQcmlvciB0byB0aGlzLCBiaW5kIHVwZGF0ZXMKICBwb3N0IHN0YXJ0dXAg d2VyZSBiZWluZyBxdWV1ZWQgYnV0IG5ldmVyIGRlbGl2ZXJlZC4gQW1vbmcgb3RoZXIKdGhpbmdz LCB0aGlzCiAgd2FzIGNhdXNpbmcgbGVhc2VzIHRvIG5vdCB0cmFuc2l0aW9uIGZyb20gZXhwaXJl ZCBvciByZWxlYXNlZCB0byBmcmVlLgogIFtJU0MtQnVncyAjMzE0NzRdCgotIENsZWFuIHVwIHBh cnNpbmcgb2YgdjYgbGVhc2UgZmlsZXMgYSBiaXQgdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMgaWYg dGhlCiAgbGVhc2UgZmlsZSBpcyBjb3JydXB0IGluIGNlcnRhaW4gd2F5cy4KICBbSVNDLUJ1Z3Mg IzM5NzYwXQoKLSBDb3JyZWN0ZWQgYSBjcmFzaCBpbiBkaGNsaWVudCB0aGF0IG9jY3VycyBkdXJp bmcgbGVhc2UgcmVuZXdhbCBpZiB0aGUKICBjbGllbnQgaXMgcGVyZm9ybWluZyBpdHMgb3duIERO UyB1cGRhdGVzLiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdApSZWQgSGF0CiAgZm9yIHRoZSBi dWcgcmVwb3J0LgogIFtJU0MtQnVncyAjMzg2MzldCgotIENvcnJlY3RlZCBhbiBpc3N1ZSBpbiB2 NiBsZWFzZSBmaWxlIHBhcnNpbmcuIFByaW9yIHRvIHRoaXMsIHdoZW4KZW5jb3VudGVyaW5nCiAg YSBsZWFzZSB3aXRoIGFuIGFkZHJlc3MgZm9yIHdoaWNoIG5vIGNvbmZpZ3VyZWQgcG9vbCBleGlz dHMsIHRoZQpzZXJ2ZXIgd2FzCiAgZGVjbGFyaW5nIHRoZSBsZWFzZSBmaWxlIGNvcnJ1cHQgYW5k IGluY29ycmVjdGx5IHNraXBwaW5nIG92ZXIgdGhlCnN1YnNlcXVlbnQKICBlbnRyeSBpbiB0aGUg ZmlsZS4gIFRoZSBzZXJ2ZXIgd2lsbCBub3cgZW1pdCBhIGxvZyBtZXNzYWdlIGluZGljYXRpbmcg dGhhdAogIG5vIHBvb2wgd2FzIGZvdW5kIGZvciB0aGUgYWRkcmVzcyAob3IgcHJlZml4KSBhbmQg Y29ycmVjdGx5IHJlc3VtZSBwYXJzaW5nCiAgd2l0aCB0aGUgbmV4dCBlbnRyeSBpbiB0aGUgbGVh c2UgZmlsZS4gIE91ciB0aGFua3MgdG8gTWljaGFsIMOFwr1lamRsIGZvcgogIHJlcG9ydGluZyB0 aGUgaXNzdWUuCiAgW0lTQy1CdWdzICMzOTMxNF0KCi0gQmUgbW9yZSBsaWJlcmFsIGluIGZpbmRp bmcgYSBzdWJuZXQgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIGEgc3RhdGljCiAgcHJlZml4LiAgV2hl biB3ZSBhZGRlZCB0aGUgY2xhc3MgbWF0Y2hpbmcgY29kZSBmb3IgdjYgd2UgYWxzbyBhZGRlZAog IGEgcmVxdWlyZW1lbnQgdGhhdCB0aGUgc3RhdGljIHByZWZpeCBtdXN0IGJlIHdpdGhpbiBhIHN1 Ym5ldCB0aGUKICBjbGllbnQgd2FzIGluLCBpbiBvcmRlciB0byBmaW5kIHRoZSBwcm9wZXIgc3Rh dGVtZW50cy4gIFdlIG5vdwogIGxvb2sgZm9yIGEgc3VibmV0IGJhc2VkIG9uIHRoZSBwcmVmaXgs IGZhaWxpbmcgdGhhdCBvbiB0aGUgc3RhdGljCiAgYWRkcmVzcyBmb3IgdGhlIGNsaWVudCBhbmQg ZmFpbGluZyB0aGF0IG9uIHRoZSBzaGFyZWQgbmV0d29yawogIGl0c2VsZi4KICBbSVNDLUJ1Z3Mg IzM4MzI5XQoKLSBBZGQgYSBuZXcgYWN0aW9uIGV4cHJlc3Npb24gInBhcnNlX3ZlbmRvcl9vcHRp b25zIiwgd2hpY2ggY2FuIGJlIHVzZWQKICB0byBwYXJzZSBhIHZlbmRvci1lbmNhcHN1YWx0ZWQt b3B0aW9uIHJlY2VpdmVkIGJ5IHRoZSBzZXJ2ZXIgYmFzZWQgb24KICB0aGUgZW5jb2Rpbmcgc3Bl Y2lmaWVkIGJ5IHRoZSB2ZW5kb3Itb3B0aW9uLXNwYWNlIHN0YXRlbWVudC4KICBbSVNDLUJ1Z3Mg IzM2NDQ5XQoKLSBFbmhhbmNlIHRoZSBQQVJBTk9JQSBwYXRjaCB0byBpbmNsdWRlIGZjaG93bigp IHRoZSBsZWFzZSBmaWxlIHRvCiAgYWxsb3cgaXQgdG8gYmUgbWFuaXB1bGF0ZWQgYWZ0ZXIgdGhl IHNlcnZlciBkb2VzIGEgY2hvd24oKS4KICBUaGFua3MgdG8gSmlyaSBQb3BlbGthIGF0IFJlZCBI YXQgZm9yIHRoZSBwYXRjaC4KICBbSVNDLUJ1Z3MgIzM2OTc4XQoKLSBSZWxheCB0aGUgcmVxdWly ZW1lbnQgdGhhdCBwcmVmaXggcG9vbHMgbXVzdCBiZSB3aXRoaW4gdGhlIHN1Ym5ldC4KICBUaGlz IHdhcyBhZGRlZCBpbiBhcyBwYXJ0IG9mICMzMjQ1MyBpbiBvcmRlciB0byBhdm9pZCBjb25maWd1 cmF0aW9uCiAgbWlzdGFrZXMgYnV0IGlzIGJlaW5nIHJlbW92ZWQgYXMgcHJlZml4ZXMgYXJlbid0 IHJlcXVpcmVkIHRvIGJlCiAgd2l0aGluIHRoZSBzYW1lIHN1Ym5ldCBhbmQgbWFueSBwZW9wbGUg Y29uZmlndXJlIHRoZW0gaW4gdGhhdCBmYXNoaW9uLgogIFtJU0MtQnVncyAjNDAwNzddCgotIEZp eGVkIGEgc2VydmVyIGNyYXNoIHRoYXQgY291bGQgb2NjdXIgd2hlbiB0aGUgc2VydmVyIGF0dGVt cHRzIHRvIHJlbW92ZQogIHRoZSBiaWxsaW5nIGNsYXNzIGZyb20gdGhlIGxhc3QgbGVhc2UgYmls bGVkIHRvIGEgZHluYW1pYyBjbGFzcyBhZnRlciBzYWlkCiAgY2xhc3MgaGFzIGJlZW4gZGVsZXRl ZC4gIE91ciB0aGFua3MgdG8gTGFzc2UgUGVzb25lbiBmb3IgcmVwb3J0aW5nIHRoZQogIGlzc3Vl LgogIFtJU0MtQnVncyAjMzk5NzhdCgotIExEQVAgUGF0Y2hlcyAtIE51bWVyb3VzIHNtYWxsIHBh dGNoZXMgc3VibWl0dGVkIGJ5IGNvbnRyaWJ1dG9ycyBoYXZlCiAgYmVlbiBhcHBsaWVkIHRvIHRo ZSBjb250cmlidXRlZCBjb2RlIHdoaWNoIHN1cHBsaWVzIExEQVAgc3VwcG9ydC4KICBJbiBhZGRp dGlvbiwgdHdvIGxhcmdlciBzdWJtaXNzaW9ucyBoYXZlIGFsc28gYmVlbiBpbmNsdWRlZC4gIFRo ZQogIGZpcnN0IGFkZHMgc3VwcG9ydCBmb3IgSVB2NiBjb25maWd1cmF0aW9uIGFuZCB0aGUgc2Vj b25kIHByb3ZpZGVzCiAgR1NTQVBJIGF1dGhlbnRpY2F0aW9uLiBXZSB3b3VsZCBsaWtlIHRvIHRo YW5rIHRoZSBmb2xsb3dpbmcgZm9yIHRoZWlyCiAgY29udHJpYnV0aW9ucyAoYWxwaGFiZXRpY2Fs bHkpOgogICAgQWxleCBOb3ZhayBhdCBTVVNFCiAgICBCaWxsIFBhcmtlciAod3AwMjg1NSBhdCBn bWFpbCBkb3QgY29tKQogICAgSmlyaSBQb3BlbGthIGF0IFJlZCBIYXQKICAgIE1hcml1cyBUb21h c2NoZXdza2kgYXQgU1VTRQogICAgKHdpbGxpYW0gYXQgYWRlbGFpZGUuZWR1LmF1KSwgVGhlIFVu aXZlcnNpdHkgb2YgQWRlbGFpZGUKICBbSVNDLUJ1Z3MgIzM5MDU2XQogIFtJU0MtQnVncyAjMjI3 NDJdCiAgW0lTQy1CdWdzICMyNDQ0OV0KICBbSVNDLUJ1Z3MgIzI4NTQ1XQogIFtJU0MtQnVncyAj Mjk4NzNdCiAgW0lTQy1CdWdzICMzMDE4M10KICBbSVNDLUJ1Z3MgIzMwNDAyXQogIFtJU0MtQnVn cyAjMzIyMTddCiAgW0lTQy1CdWdzICMzMjI0MF0KICBbSVNDLUJ1Z3MgIzMzMTc2XQogIFtJU0Mt QnVncyAjMzMxNzhdCiAgW0lTQy1CdWdzICMzNjQwOV0KICBbSVNDLUJ1Z3MgIzM2Nzc0XQogIFtJ U0MtQnVncyAjMzc4NzZdCgotIEhhbmRsZSBhbiBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbiBpbiB0 aGUgY2xpZW50IGEgYml0IGJldHRlci4KICBUaGFua3MgdG8gRnLDg8KpZMODwqlyaWMgUGVycmlu IGZyb20gQnJvY2FkZSBmb3IgZmluZGluZyB0aGUgaXNzdWUKICBhbmQgc3VnZ2VzdGluZyBhIHBh dGNoLgogIFtJU0MtQnVncyAjMzkyNzldCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMy4ycmMyCi0gTm9u ZQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjMuMnJjMQoKLSBDb3JyZWN0ZWQgYSBjb21waWxhdGlvbiBl cnJvciBpbnRyb2R1Y2VkIGJ5IHRoZSBmaXggZm9yIElTQy1CdWdzICMzNzQxNS4KICBUaGUgZXJy b3Igb2NjdXJzIG9uIExpbnV4IHZhcmlhbnRzIHRoYXQgZG8gbm90IHN1cHBvcnQgVkxBTiB0YWcK aW5mb3JtYXRpb24KICBpbiBwYWNrZXQgYXV4aWxpYXJ5IGRhdGEuICBUaGUgY29uZmlndXJlIHNj cmlwdCBub3cgb25seSBlbmFibGVzIGluY2x1c2lvbgogIG9mIHRoZSBWTEFOIHRhZy1iYXNlZCBs b2dpYyBpZiBpdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgT1MuCiAgW0lTQy1CdWdz ICMzODY3N10KCgkJCUNoYW5nZXMgc2luY2UgNC4zLjJiMQoKLSBTcGVjaWZ5aW5nIHRoZSBvcHRp b24sIC0tZGlzYWJsZS1kZWJ1Zywgb24gdGhlIGNvbmZpZ3VyZSBzY3JpcHQKY29tbWFuZCBsaW5l CiAgbm93IGRpc2FibGVzIGRlYnVnIGZlYXR1cmVzLiAgUHJpb3IgdG8gdGhpcywgc3BlY2lmeWlu ZyAtLWRpc2FibGUtZGVidWcKICBpbmNvcnJlY3RseSBlbmFibGVkIGRlYnVnIGZlYXR1cmVzLiBU aGFua3MgdG8gR3VzdGF2byBaYWNhcmlhcyBmb3IKcmVwb3J0aW5nCiAgdGhlIGlzc3VlLgogIFtJ U0MtQnVncyAjMzc3ODBdCgotIFVuaXQgdGVzdCBleGVjdXRpb24gbm93IHVzZXMgYSBwYXRoIGF1 Z21lbnRlZCBkdXJpbmcgY29uZmlndXJhdGlvbgogIHByb2Nlc3Npbmcgb2YgdGhlIC0td2l0aC1h dGYgb3B0aW9uIHRvIGxvY2F0ZSBBVEYgcnVudGltZSB0b29scywgYXRmLXJ1bgogIGFuZCBhdGYt cmVwb3J0LiBGb3IgbW9zdCBpbnN0YWxsYXRpb25zIG9mIEFURiwgdGhpcyBzaG91bGQgYWxsZXZp YXRlIHRoZQogIG5lZWQgdG8gbWFudWFsbHkgaW5jbHVkZSB0aGVtIGluIHRoZSBQQVRILCBhcyB3 YXMgZm9ybWVybHkgcmVxdWlyZWQuCiAgSWYgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2Fubm90IGxv Y2F0ZSB0aGUgdG9vbHMgaXQgd2lsbCBlbWl0IGEgd2FybmluZywKICBpbmZvcm1pbmcgdGhlIHVz ZXIgdGhhdCB0aGUgdG9vbHMgbXVzdCBiZSBpbiB0aGUgUEFUSCB3aGVuIHJ1bm5pbmcgdW5pdAog IHRlc3RzLgogIFNlY29uZGx5LCBwbGVhc2Ugbm90ZSB0aGF0ICJtYWtlIGNoZWNrIiB3aWxsIG5v dyBleGl0IHdpdGggYSBmYWlsdXJlCnN0YXR1cwogIGNvZGUgKG5vbi16ZXJvKSBpZiBvbmUgb3Ig bW9yZSB1bml0IHRlc3RzIGZhaWwuICBUaGlzIG1lYW5zIHRoYXQgaW52b2tpbmcKICAibWFrZSBj aGVjayIgZnJvbSBhbiB1cHBlciBsZXZlbCBkaXJlY3Rvcnkgd2lsbCBjYXVzZSB0aGUgbWFrZSBw cm9jZXNzIHRvCiAgU1RPUCBhZnRlciB0aGUgZmlyc3QgdGVzdCBzdWJkaXJlY3Rvcnkgd2l0aCBm YWlsZWQgdGVzdChzKS4gIFRvIGZvcmNlIGFsbAogIHRlc3RzIGluIGFsbCBzdWJkaXJlY3Rvcmll cyB0byBydW4sIHJlZ2FyZGxlc3Mgb2YgaW5kaXZpZHVhbCB0ZXN0IG91dGNvbWUsCiAgdXNlIHRo ZSBjb21tYW5kICJtYWtlIC1rIGNoZWNrIi4KICBbSVNDLUJ1Z3MgIzM4NjE5XQoKCQkJQ2hhbmdl cyBzaW5jZSA0LjMuMQoKLSBDb3JyZWN0ZWQgcGFyc2VyJ3MgcmlnaHQgYnJhY2UgbWF0Y2hpbmcg d2hlbiBhIHN0YXRlbWVudCBjb250YWlucyBhbgplcnJvci4KICBbSVNDLUJ1Z3MgIzM2MDIxXQoK LSBUU0lHLWF1dGhlbnRpY2F0ZWQgZHluYW1pYyBETlMgdXBkYXRlcyBub3cgc3VwcG9ydCB0aGUg dXNlIG9mIHRoZXNlCiAgYWRkaXRpb25hbCBhbGdvcml0aG1zOiBobWFjLXNoYTEsIGhtYWMtc2hh MjI0LCBobWFjLXNoYTI1NiwgaG1hYy1zaGEzODQsCiAgYW5kIGhtYWMtc2hhNTEyCiAgW0lTQy1C dWdzICMzNjk0N10KCi0gQWRkZWQgY2hlY2sgZm9yIGludmFsaWQgZmFpbG92ZXIgbWVzc2FnZSB0 eXBlLiBUaGFua3MgdG8gVG9iaWFzIFN0b2Vja21hbm4KICB3b3JraW5nIHdpdGggdGhlIE9wZW5C U0QgcHJvamVjdCB3aG8gc3BvdHRlZCB0aGUgaXNzdWUgYW5kIHByb3ZpZGVkIHRoZQogIHBhdGNo LgogIFtJU0MtQnVncyAjMzY2NTNdCgotIENvcnJlY3RlZCByYXRlIGxpbWl0aW5nIGNoZWNrcyBm b3IgYmFkIHBhY2tldCBsb2dnaW5nLiAgVGhhbmtzIHRvIFRvYmlhcwogIFN0b2Vja21hbm4gd29y a2luZyB3aXRoIHRoZSBPcGVuQlNEIHByb2plY3Qgd2hvIHNwb3R0ZWQgdGhlIGlzc3VlIGFuZAog IHByb3ZpZGVkIHRoZSBwYXRjaC4KICBbSVNDLUJ1Z3MgIzM2ODk3XQoKLSBMb2cgc3RhdGVtZW50 cyBkZXBpY3Rpbmcgd2hhdCBmaWxlcyB3aWxsIGJlIHVzZWQgYnkgdGhlIHNlcnZlciBub3cgb2Nj dXIKICBhZnRlciB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGhhcyBiZWVuIHByb2Nlc3NlZC4KICBb SVNDLUJ1Z3MgIzM2NjcxXQoKLSBBZGRyZXNzZWQgQ292ZXJpdHkgaXNzdWVzIHJlcG9ydGVkIGFz IG9mIDA3LTMxLTIwMTQ6CiAgW0lTQy1CdWdzICMzNjcxMl0gQ29ycmVjdHMgQ292ZXJpdHkgcmVw b3J0ZWQgImhpZ2giIGltcGFjdCBpc3N1ZXMuCiAgW0lTQy1CdWdzICMzNjkzM10gQ29ycmVjdHMg Q292ZXJpdHkgcmVwb3J0ZWQgIm1lZGl1bSIgaW1wYWN0IGlzc3VlcwogIFtJU0MtQnVncyAjMzc3 MDhdIEZpeGVzIGNvbXBpbGF0aW9uIGVycm9yIGluIGRzdF9hcGkuYyBzZWVuIGluIG9sZGVyCiAg Y29tcGlsZXJzIHRoYXQgd2FzIGludHJvZHVjZWQgYnkgIzM2NzEyCgotIFNlcnZlciBub3cgc3Vw cG9ydHMgYSBmYWlsb3ZlciBzcGxpdCB2YWx1ZSBvZiAyNTYuCiAgW0lTQy1CdWdzXSAjMzY2NjRd CgotIFJlbW92ZSB1bm5lZWRlZCBlcnJvciAjZGVmaW5lcy4gIFRoZXNlIGRlZmluZXMgd2VyZSBp bmNsdWRlZCBpbiBjYXNlCiAgZXh0ZXJuYWwgcHJvZ3JhbXMgcmVxdWlyZWQgdGhlIG9sZGVyIHZl cnNpb25zIG9mIHRoZSBtYWNyby4gIFRoZXkKICBoYXZlIGJlZW4gI2lmZGVmZmVkIGZvciBub3cg YW5kIHdpbGwgYmUgcmVtb3ZlZCBhdCBhIGZ1dHVyZSBkYXRlLgogIFNlZSBzaXRlLmggZm9yIHRo ZSAjZGVmaW5lIHRvIGluY2x1ZGUgdGhlbSBhZ2FpbiwgYnV0IHlvdSBzaG91bGQKICBzd2l0Y2gg dG8gdXNpbmcgdGhlIERIQ1BfUl8qIHZlcnNpb25zIGluc3RlYWQgb2YgdGhlIElTQ19SXyogdmVy c2lvbnMuCiAgQWxzbyBJU0NfUl9NVUxUSVBMRSBoYXMgYmVlbiByZW1vdmVkIGFzIGl0IGlzIGFs c28gZGVmaW5lZCBpbiBiaW5kLgogIFtJU0MtQnVncyAjMzcxMjhdCgotIEFkZGVkIGNoZWNrcyBp biByYW5nZTYgYW5kIHByZWZpeDYgc3RhdGVtZW50IHBhcnNpbmcgdG8gZW5zdXJlIGFkZHJlc3Nl cwogIGFyZSB3aXRoaW4gdGhlIGRlY2xhcmVkIHN1Ym5ldC4gVGhhbmtzIHRvIEppcmkgUG9wZWxr YSBhdCBSZWQgSGF0IGZvciB0aGUKICBidWcgcmVwb3J0IGFuZCBwYXRjaC4KICBbSVNDLUJ1Z3Mg IzMyNDUzXQogIFtJU0MtQnVncyAjMTc3NjZdCiAgW0lTQy1CdWdzICMxODUxMF0KICBbSVNDLUJ1 Z3MgIzIzNjk4XQogIFtJU0MtQnVncyAjMjg4ODNdCgotIEFkZHJlc3NlZCBjaGVja3N1bSBpc3N1 ZXM6CiAgQWRkZWQgY2hlY2tzdW0gcmVhZGluZXNzIGNoZWNrIHRvIExpbnV4IHBhY2tldCBmaWx0 ZXJpbmcgd2hpY2ggZWxpbWluYXRlcwogIGludmFsaWQgcGFja2V0IGRyb3BzIGR1ZSB0byBjaGVj a3N1bSBlcnJvcnMgd2hlbiBjaGVja3N1bSBvZmZsb2FkaW5nIGlzCiAgaW4gdXNlLiAgQmFzZWQg b24gZGhjcC00LjIuMi14ZW4tY2hlY2tzdW0ucGF0Y2ggbWFkZSB0byB0aGUgRmVkb3JhCnByb2pl Y3QuCiAgW0lTQy1CdWdzICMyMjgwNl0KICBbSVNDLUJ1Z3MgIzE1OTAyXQogIFtJU0MtQnVncyAj MTc3MzldCiAgW0lTQy1CdWdzICMxODAxMF0KICBbSVNDLUJ1Z3MgIzIyNTU2XQogIFtJU0MtQnVn cyAjMjk3NjldCiAgSW5ib3VuZCBwYWNrZXRzIHdpdGggVURQIGNoZWNrc3VtcyBvZiAweGZmZmYg bm93IHZhbGlkYXRlIGNvcnJlY3RseSByYXRoZXIKICB0aGFuIGJlaW5nIGRyb3BwZWQuCiAgW0lT Qy1CdWdzICMyNDIxNl0KICBbSVNDLUJ1Z3MgIzI1NTg3XQoKLSBBZGRlZCB0aGUgZWNoby1jbGll bnQtaWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gdGhlIHNlcnZlcgpjb25maWd1cmF0aW9u LgogIFRoZSBzZXJ2ZXIgbm93IHN1cHBvcnRzIFJGQyA2ODQyIGNvbXBsaWFudCBiZWhhdmlvciBi eSBzZXR0aW5nIGEgbmV3CiAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIsIGVjaG8tY2xpZW50LWlk LiAgV2hlbiBlbmFibGVkLCB0aGUgc2VydmVyIHdpbGwKICBpbmNsdWRlIHRoZSBjbGllbnQgaWRl bnRpZmllciBvcHRpb24gKE9wdGlvbiBjb2RlIDYxKSBpZiByZWNlaXZlZCwgaW4gaXRzCiAgcmVz cG9uc2VzLiAgVGhlIHNlcnZlciBpZGVudGlmaWVyIHJldHVybmVkIGluIE5BS3MgKGlmIGVuYWJs ZWQpIHdpbGwgbm93CiAgYmUgdGhlIGdsb2JhbGx5IGRlZmluZWQgdmFsdWUgKGlmIG9uZSkgaWYg dGhlIHNlcnZlciBjYW5ub3QgYXR0cmlidXRlIHRoZQogIGluYm91bmQgcmVxdWVzdCB0byBhIGtu b3duIHN1Ym5ldC4KICBbSVNDLUJ1Z3MgIzM1OTU4XQogIFtJU0MtQnVncyAjMzI1NDVdCgotIEFk ZGVkIHN1cHBvcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLCB1c2UtaG9zdC1kZWNs LW5hbWVzLCB0bwogIEJPT1RQIHJlcXVlc3QgaGFuZGxpbmcuCiAgW0lTQy1CdWdzICMzNjIzM10K Ci0gQWRkZWQgbG9naWMgdG8gaWdub3JlIHRoZSBzaWduYWwsIFNJR1BJUEUsIHdoaWNoIGVuc3Vy ZXMgd3JpdGUgZmFpbHVyZXMKICB3aWxsIGJlIGRlbGl2ZXJlZCBhcyBlcnJvcnMgcmF0aGVyIHRo YW4gYXMgU0lHUElQRSBzaWduYWxzIG9uIGFsbCBPU3MuCiAgVGhhbmtzIHRvIE1hcml1cyBUb21h c2NoZXdza2kgZnJvbSBTVVNFIHdobyByZXBvcnRlZCB0aGUgaXNzdWUgYW5kCnByb3ZpZGVkCiAg dGhlIHBhdGNoIHVwb24gd2hpY2ggdGhlIGZpeCBpcyBiYXNlZC4KICBbSVNDLUJ1Z3MgIzMyMjIy XQoKLSBJbiB0aGUgZmFpbG92ZXIgY29kZSwgaGFuZGxlIHRoZSBjYXNlIG9mIGNvbW11bmljYXRp b25zIGJlaW5nIGludGVycnVwdGVkCiAgd2hlbiB0aGUgc2VydmVycyBhcmUgZGVhbGluZyB3aXRo IFBPVEVOVElBTC1DT05GTElDVC4gIFRoaXMgcGF0Y2ggYWxsb3dzCiAgdGhlIHByaW1hcnkgdG8g YWNjZXB0IHRoZSBzZWNvbmRhcnkgbW92aW5nIGZyb20gUE9URU5USUFMLUNPTkZMSUNUIHRvCiAg UkVTT0xVVElPTi1JTlRFUlJVUFRFRCBhcyB3ZWxsIGFzIGhhbmRsaW5nIHRoZSBiaW5kIHVwZGF0 ZSBwcm9jZXNzIGJldHRlci4KICBJbiBhZGRpdGlvbiB0aGUgY29kZSB0byByZXNlbmQgdXBkYXRl IG9yIHVwZGF0ZSBhbGwgcmVxdWVzdHMgaGFzIGJlZW4KICBtb2RpZmllZCB0byBzZW5kIHJlcXVl c3RzIG1vcmUgb2Z0ZW4uCiAgW0lTQy1CdWdzICMzNjgxMF0KICBbSVNDLUJ1Z3MgIzIwMzUyXQoK LSBCeSBkZWZhdWx0LCB0aGUgc2VydmVyIHdpbGwgbm93IGNob29zZSB0aGUgdmFsdWUgdG8gdXNl IGluIHRoZSBmb3J3YXJkIEROUwogIG5hbWUgZnJvbSB0aGUgZm9sbG93aW5nIGluIG9yZGVyIG9m IHByZWZlcmVuY2U6CgogICAgMS4gRlFETiBvcHRpb24gaWYgcHJvdmlkZWQgYnkgdGhlIGNsaWVu dAogICAgMi4gSG9zdCBuYW1lIG9wdGlvbiBpZiBwcm92aWRlZCBieSB0aGUgY2xpZW50CiAgICAz LiBDb25maWd1cmVkIG9wdGlvbiBob3N0LW5hbWUgaWYgZGVmaW5lZAoKICBBcyBiZWZvcmUsIHRo aXMgbWF5IGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgZGRucy1ob3N0bmFtZSB0byB0aGUgZGVz aXJlZAogIHZhbHVlIChvciBleHByZXNzaW9uKS4gIEluIGFkZGl0aW9uLCB0aGUgc2VydmVyIGxv Z2ljIGhhcyBiZWVuIGV4dGVuZGVkIHRvCiAgdXNlIHRoZSB2YWx1ZSBvZiB0aGUgaG9zdCBuYW1l IGRlY2xhcmF0aW9uIGlmIHVzZS1ob3N0LWRlY2wtbmFtZXMgaXMKZW5hYmxlZAogIGFuZCBubyBv dGhlciB2YWx1ZSBpcyBhdmFpbGFibGUuCiAgW0lTQy1CdWdzICMyMTMyM10KCi0gRE5TIHVwZGF0 ZXMgd2VyZSBiZWluZyBhdHRlbXB0ZWQgd2hlbiBkaGNwLWNhY2hlLXRocmVzaG9sZCBlbmFibGVk IHRoZQp1c2Ugb2YKICB0aGUgZXhpc3RpbmcgbGVhc2UgYW5kIHRoZSBmb3J3YXJkIEROUyBuYW1l IGhhZCBub3QgY2hhbmdlZC4gIFRoaXMgaGFzCmJlZW4KICBjb3JyZWN0ZWQuCiAgW0lTQy1CdWdz ICMzNzM2OF0KICBbSVNDLUJ1Z3MgIzM4Njg2XQoKLSBDb3JyZWN0ZWQgYW4gaXNzdWUgd2hpY2gg Y2F1c2VkIGRoY2xpZW50IHRvIGluY29ycmVjdGx5IGZvcm0gdGhlCnJlc3VsdCB3aGVuCiAgcHJl cGVuZGluZyBvciBhcHBlbmRpbmcgdG8gdGhlIElQdjQgZG9tYWluLXNlYXJjaCBvcHRpb24sIHJl Y2VpdmVkCmZyb20gdGhlCiAgc2VydmVyLCB3aGVuIGVpdGhlciBvZiB0aGUgdmFsdWVzIGJlaW5n IGNvbWJpbmVkIGNvbnRhaW4gY29tcHJlc3NlZAogIGNvbXBvbmVudHMuCiAgW0lTQy1CdWdzICMy MDU1OF0KCi0gQWRkZWQgdGhlIHNlcnZlci1pZC1jaGVjayBwYXJhbWV0ZXIgdG8gdGhlIHNlcnZl ciBjb25maWd1cmF0aW9uLgogIFRoaXMgcGFyYW1ldGVyIGFsbG93cyBydW4tdGltZSBjb250cm9s IG92ZXIgd2hldGhlciBvciBub3QgYSBzZXJ2ZXIsCiAgcGFydGljaXBhdGluZyBpbiBmYWlsb3Zl ciwgdmVyaWZpZXMgdGhlIGRoY3Atc2VydmVyLWlkZW50aWZpZXIgb3B0aW9uIGluCiAgREhDUCBS RVFVRVNUcyBhZ2FpbnN0IHRoZSBzZXJ2ZXIncyBpZCBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgcmVx dWVzdC4KICBGb3JtZXJseSwgZW5hYmxpbmcgdGhpcyBiZWhhdmlvciB3YXMgZG9uZSBhdCBjb21w aWxhdGlvbiB0aW1lIHRocm91Z2gKICB0aGUgdXNlIG9mIHRoZSAjZGVmaW5lLCBTRVJWRVJfSURf Q0hFQ0ssIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQgZnJvbQpzaXRlLmgKICBUaGUgZnVuY3Rpb25h bGl0eSBpcyBub3cgb25seSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgbmV3IHJ1bnRpbWUgcGFyYW1l dGVyLgogIFtJU0MtQnVncyAjMzc1NTFdCgotIER1cmluZyBzdGFydHVwLCB3aGVuIHRoZSBzZXJ2 ZXIgZW5jb3VudGVycyBhIGxlYXNlIHdob3NlIGJpbmRpbmcgc3RhdGUgaXMKICBGVFNfQkFDS1VQ IGJ1dCB3aG9zZSBwb29sIGhhcyBubyBjb25maWd1cmVkIGZhaWxvdmVyIHBlZXIsIGl0IHdpbGwK cmVzZXQgdGhlCiAgbGVhc2UncyBiaW5kaW5nIHN0YXRlIHRvIEZUU19GUkVFLiAgVGhpcyBhbGxv d3MgdGhlIGxlYXNlcyB0byBiZSByZWNsYWltZWQKICBieSB0aGUgc2VydmVyIGFmdGVyIGEgcG9v bCdzIGNvbmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQgZnJvbSBmYWlsb3ZlciB0bwogIHN0YW5kYWxv bmUuIFByaW9yIHRvIHRoaXMgc3VjaCBsZWFzZXMgd291bGQgcmVtYWluIHN0dWNrIGluIHRoZSBi YWNrdXAKc3RhdGUKICBtYWtpbmcgdGhlbSB1bmF2YWlsYWJsZSBmb3IgYXNzaWdubWVudC4gIE5v dGUgdGhpcyBjb252ZXJzaW9uIHdpbGwgb2NjdXIKICB3aGV0aGVyIG9yIG5vdCB0aGUgc2VydmVy IGlzIGNvbXBpbGVkIGZvciBmYWlsb3Zlci4KICBbSVNDLUJ1Z3MgIzM2OTYwXQoKLSBGaXhlZCBh IHNtYWxsIGlzc3VlIGluIHRoZSB0cmVhdG1lbnQgb2YgaG9zdHMgaW4gdGhlIGluZm9ybSBwcm9j ZXNzaW5nCiAgdGhhdCBjb3VsZCBjYXVzZSB0aGUgcmVzcG9uc2UgdG8gYW4gaW5mb3JtIHRvIGlu Y2x1ZGUgaW5mb3JtYXRpb24gZnJvbQogIHRoZSB3cm9uZyBzY29wZS4gIFRoZSB0d28gZXhhbXBs ZXMgd2UndmUgaGVhcmQgb2YgYXJlIGdldHRpbmcgc3VibmV0CiAgaW5zdGVhZCBvZiBncm91cCBp bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBob3N0IGVudHJ5LCBvciBnZXR0aW5nCiAgZ2xv YmFsIGluZm9ybWF0aW9uIGluc3RlYWQgb2Ygc3VibmV0IGlmIHRoZSBob3N0IGVudHJ5IHdhcyBi dWlsdCB2aWEKICBvbWFwaS4gIFRoYW5rcyB0byBKdWxpZW4gU291bGEgYXQgVW5pdmVyc2l0eSBv ZiBMaWxsZSBmb3IgZmluZGluZyB0aGUKICBidWcgYW5kIHN1cHBseWluZyBhIHBhdGNoLgogIFtJ U0MtQnVncyAjMzU3MTJdCgotIEF2b2lkIGNhbGxpbmcgcG9vbF90aW1lcigpIHJlY3Vyc2l2ZWx5 IGZyb20gc3VwZXJzZWRlX2xlYXNlKCkuICBUaGlzIGNvdWxkCiAgcmVzdWx0IGluIGxlYXNlcyBj aGFuZ2luZyBzdGF0ZSBpbmNvcnJlY3RseSBvciBkZWxheWluZyB0aGUgcnVubmluZyBvZiB0aGUK ICBsZWFlIGV4cGlyYXRpb24gY29kZS4KICBbSVNDLUJ1Z3MgIzM4MDAyXQoKLSBNb3ZlIHRoZSBj aGVjayBmb3IgYSBQSUQgZmlsZSBhbmQgcHJvY2VzcyB0byBiZSBiZWZvcmUgd2UgcmV3cml0ZSB0 aGUKICBsZWFzZSBmaWxlLiAgVGhpcyBhdm9pZHMgdGhlIHBvc3NpYmlsaXR5IG9mIHN0YXJ0aW5n IGEgc2Vjb25kIGluc3RhbmNlCiAgb2YgYSBzZXJ2ZXIgd2hpY2ggY2hhbmdlcyB0aGUgY3VycmVu dCBsZWFzZSBmaWxlIGNvbmZ1c2luZyB0aGUgZmlyc3QKICBpbnN0YW5jZS4gIFRoaXMgY2hlY2sg aXMgb25seSBpbmNsdWRlZCBpZiB0aGUgYWRtaW4gaGFzbid0IGRpc2FibGVkIFBJRAogIGZpbGVz LgogIFtJU0MtQnVncyAjMzgwNzhdCiAgW0lTQy1CdWdzICMzODE0M10KCi0gSW4gdGhlIGNsaWVu dCBjb2RlIGNoYW5nZSB0aGUgd2F5IHByZWZlcnJlZF9saWZlIGFuZCBtYXhfbGlmZSBhcmUgcHJp bnRlZAogIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYmUgdW5zaWduZWQgcmF0aGVyIHRo YW4gc2lnbmVkLgogIFRoYW5rcyB0byBKaXJpIFBvcGVsa2EgYXQgUmVkIEhhdCBmb3IgdGhlIGJ1 ZyByZXBvcnQgYW5kIHBhdGNoLgogIFtJU0MtQnVncyAjMzcwODRdCgotIE1vZGlmaWVkIGxpbnV4 IHBhY2tldCBoYW5kbGluZyBzdWNoIHRoYXQgcGFja2V0cyByZWNlaXZlZCB2aWEgVkxBTiBhcmUg bm93CiAgc2VlbiBvbmx5IGJ5IHRoZSBWTEFOIGludGVyZmFjZS4gUHJpb3IgdG8gdGhpcywgc3Vj aCBwYWNrZXRzIHdlcmUgc2VlbiBieQogIGJvdGggdGhlIFZMQU4gaW50ZXJmYWNlIGFuZCBpdHMg cGFyZW50IChwaHlzaWNhbCkgaW50ZXJmYWNlLCBjYXVzaW5nIHRoZQogIHNlcnZlciB0byByZXNw b25kIHRvIGJvdGguICBOb3RlIHRoaXMgcmVtYWlucyBhbiBpc3N1ZSBmb3Igbm9uLUxpbnV4IE9T cy4KICBUaGFua3MgdG8gSmlyaSBQb3BlbGthIGF0IFJlZCBIYXQgZm9yIHRoZSBwYXRjaC4KICBb SVNDLUJ1Z3MgIzM3NDE1XQogIFtJU0MtQnVncyAjMzcxMzNdCiAgW0lTQy1CdWdzICMzNjY2OF0K ICBbSVNDLUJ1Z3MgIzM2NjUyXQoKLSBMb2cgY29udGVudCBoYXMgYmVlbiBjaGFuZ2VkIHRvIG1v cmUgZGlyZWN0bHkgc3VnZ2VzdCB0aGF0IGFkbWlucyBzaG91bGQKICBjaGVjayBmb3IgbXVsdGlw bGUgSVB2NiBjbGllbnRzIGF0dGVtcHRpbmcgdG8gdXNlIHRoZSBzYW1lIERVSUQgd2hlbiBvbmx5 CiAgYWJhbmRvbmVkIGFkZHJlc3NlcyBhcmUgYXZhaWxhYmxlLiAgRGVidWcgbGV2ZWwgbG9nZ2lu ZyB3aWxsIG5vdyBlbWl0CmNvdW50cwogIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YsIGluLXVzZSwg YW5kIGFiYW5kb25lZCBhZGRyZXNzZXMgaW4gYSBzaGFyZWQgc3VibmV0CiAgd2hlbiB0aGUgc2Vy dmVyIGZpbmRzIG5vIGFkZHJlc3NlcyBhdmFpbGFibGUgZm9yIGEgZ2l2ZW4gRFVJRC4gIExhc3Rs eSwKICB0aHJlc2hvbGQgbG9nZ2luZyBpcyBub3cgYXV0b21hdGljYWxseSBkaXNhYmxlZCBmb3Ig c2hhcmVkIHN1Ym5ldHMgd2hvc2UKICB0b3RhbCBudW1iZXIgb2YgcG9zc2libGUgYWRkcmVzc2Vz IGV4Y2VlZHMgKDJeNjQpLTEuCiAgW0lTQy1CdWdzICMyNjM3Nl0KICBbSVNDLUJ1Z3MgIzM4MTMx XQoKLSBBZGRlZCBhIGdsb2JhbCBwYXJhbWV0ZXIsIHByZWZpeC1sZW5ndGgtbW9kZSwgd2hpY2gg bWF5IGJlIHVzZWQgdG8KZGV0ZXJtaW5lCiAgaG93IHRoZSBzZXJ2ZXIgdXNlcyBhIG5vbi16ZXJv IHZhbHVlIGZvciBwcmVmaXgtbGVuZ3RoIHN1cHBsaWVkIGJ5IGNsaWVudHMKICB3aGVuIHNvbGlj aXRpbmcgREhDUHY2IHByZWZpeGVzLiAgVGhlIHNlcnZlciBzdXBwb3J0cyBzZWxlY3Rpb24gbW9k ZXMgb2Y6CiAgaWdub3JlLCBwcmVmZXIsIGV4YWN0LCBtaW5pbXVtIGFuZCBtYXhpbXVtIHdoaWNo IGFyZSBkZXNjcmliZWQgaW4KZGV0YWlsIGluCiAgdGhlIHNlcnZlciBtYW4gcGFnZXMuICBUaGUg cHJpb3IgYmVoYXZpb3Igb2YgdGhlIHNlcnZlciB3YXMgdG8gb25seQpvZmZlciBhCiAgcHJlZml4 IHdob3NlIGxlbmd0aCBleGFjdGx5IG1hdGNoZWQgdGhlIHByZWZpeC1sZW5ndGggdmFsdWUgcmVx dWVzdGVkLiBJZgogIG5vIHN1Y2ggcHJlZml4ZXMgd2VyZSBhdmFpbGFibGUsIHRoZSBzZXJ2ZXIg cmV0dXJuZWQgYSBzdGF0dXMgb2Ygbm9uZQogIGF2YWlsYWJsZS4gIE5vdGUgdGhlIGRlZmF1bHQg bW9kZSwgImV4YWN0IiwgcHJvdmlkZXMgdGhpcyBzYW1lIGJlaGF2aW9yLgogIFtJU0MtQnVncyAj MzY3ODBdCiAgW0lTQy1CdWdzICMzMjIyOF0KCi0gQ29ycmVjdGVkIGluY29uc2lzdGVuY2llcyBp biBkaGNyZWxheSdzIHNldHRpbmcgdGhlIHVwcGVyIGludGVyZmFjZQpob3AgY291bnQKICBsaW1p dCBzdWNoIHRoYXQgaXQgbm93IHNldHMgaXQgdG8gMzIgd2hlbiB0aGUgdXBzdHJlYW0gYWRkcmVz cyBpcyBhCm11bHRpY2FzdAogIGFkZHJlc3MgcGVyIFJGQyAzMzE1IFNlY3Rpb24gMjAuIFByaW9y IHRvIHRoaXMgaWYgdGhlIC11IGFyZ3VtZW50IHByZWNlZGVkCiAgdGhlIC1sIGFyZ3VtZW50IG9u IHRoZSBjb21tYW5kIGxpbmUgb3IgaWYgdGhlIHNhbWUgaW50ZXJmYWNlIHdhcyBzcGVjaWZpZWQK ICBmb3IgYm90aDsgdGhlIGxvZ2ljIHRvIHNldCB0aGUgaG9wIGxpbWl0IGNvdW50IGZvciB0aGUg dXBwZXIgaW50ZXJmYWNlIHdhcwogIHNraXBwZWQuICBUaGlzIGNhdXNlZCB0aGUgaG9wIGNvdW50 IGxpbWl0IHRvIGJlIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZQogICh0eXBpY2FsbHkgMSkgaW4g dGhlIG91dGJvdW5kIHVwc3RyZWFtIHBhY2tldHMuCiAgW0lTQy1CdWdzICMzNzQyNl0KCgoJCQlD aGFuZ2VzIHNpbmNlIDQuMy4xYjEKCi0gTW9kaWZ5IHRoZSBsaW51eCBhbmQgb3BlbndydCBkaGNs aWVudCBzY3JpcHRzIHRvIHByb2Nlc3MgaW5mb3JtYXRpb24KICBmcm9tIGEgc3RhdGVsZXNzIHJl cXVlc3QuICBUaGFua3MgdG8gSmlyaSBQb3BlbGthIGF0IFJlZCBIYXQgZm9yIHRoZQogIGJ1ZyBy ZXBvcnQgYW5kIHBhdGNoLgogIFtJU0MtQnVncyAjMzYxMDJdCgotIFJlbW92ZSBtb3JlIHVudXNl ZCBSQ1NJRCB0YWdzLiAgVGhlc2Ugd2VyZW4ndCBub3RpY2VkIGluIDQuMyBhcwogIHRoZSBjb2Rl IGlzbid0IHVzZWQgYW55bW9yZSBidXQgd2UgcmVtb3ZlIHRoZW0gaGVyZSB0byBrZWVwIHRoZQog IGNvZGUgY29uc2lzdGVudCBhY3Jvc3MgdmVyc2lvbnMuCiAgW0lTQy1CdWdzICMzNjQ1MV0KCgkJ CUNoYW5nZXMgc2luY2UgNC4zLjAKCi0gVGlkeSB1cCBzZXZlcmFsIHNtYWxsIHRpY2tldHMuCiAg Q29ycmVjdCBwYXJzaW5nIG9mIERVSUQgZnJvbSBjb25maWcgZmlsZSwgcHJldmlvdXNseSB0aGUg TEwgdHlwZQogIHdhcyBwdXQgaW4gdGhlIHdyb25nIHBsYWNlIGluIHRoZSBEVUlEIHN0cmluZy4K ICBbSVNDLUJ1Z3MgIzIwOTYyXQogIEFkZCBjb2RlIHRvIHBhcnNlICJkby1mb3J3YXJkLXVwZGF0 ZXMiIGFzIHdlbGwgYXMgImRvLWZvcndhcmQtdXBkYXRlIgogIFRoYW5rcyB0byBKaXJpIFBvcGVs a2EgYXQgUmVkIEhhdC4KICBbSVNDLUJ1Z3MgIzMxMzI4XQogIFJlbW92ZSBsb2dfcHJpb3JpdHkg YXMgaXQgaXNuJ3QgY3VycmVudGx5IHVzZWQuCiAgW0lTQy1CdWdzICMzMzM5N10KICBJbmNyZWFz ZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgZm9yIHJlYWRpbmcgaW50ZXJmYWNlIGluZm9y bWF0aW9uLgogIFtJU0MtQnVncyAjMzQ4NThdCgotIFJlbW92ZSBhbiBleHRyYSBzZXQgb2YgdGhl IG1zZ19jb250cm9sbGVuIHZhcmlhYmxlLgogIFtJU0MtQnVncyAjMjEwMzVdCgotIEFkZCBhIG1v cmUgdW5kZXJzdGFuZGFibGUgZXJyb3IgbWVzc2FnZSBpZiBhIGNvbmZpZ3VyYXRpb24gYXR0ZW1w dHMKICB0byBhZGQgbXVsdGlwbGUga2V5cyBmb3IgYSBzaW5nbGUgem9uZS4gIFRoYW5rcyB0byBh IHBhdGNoIGZyb20gSmlyaQogIFBvcGVsa2EgYXQgUmVkIEhhdC4KICBbSVNDLUJ1Z3MgIzMxODky XQoKLSBGaXggc29tZSBtaW5vciBpc3N1ZXMgaW4gdGhlIGRzdCBjb2RlLgogIFtJU0MtQnVncyAj MzQxNzJdCgotIFByb3Blcmx5ICNpZmRlZiBmdW5jdGlvbnMgc28gdGhhdCB0aGUgY29kZSBjYW4g Y29tcGlsZSB3aXRob3V0IE5TVVBEQVRFLgogIFtJU0MtQnVncyAjMzUwNThdCgotIFVwZGF0ZSB0 aGUgcGFydG5lcidzIHN0b3MgKHN0YXJ0IHRpbWUgb2Ygc3RhdGUsIGJhc2ljYWxseSB3aGVuIHdl IGxhc3QKICBoZWFyZCBmcm9tIHRoaXMgcGFydG5lcikgZmllbGQgd2hlbiB1cGRhdGluZyB0aGUg c3RhdGUgaW4gZmFpbG92ZXIuCiAgW0lTQy1CdWdzICMzNTU0OV0KCi0gTW9kaWZ5IHRoZSBvdmVy bG9hZCBwcm9jZXNzaW5nIHRvIGFsbG93IHNwYWNlIGZvciB0aGUgcmVtb3RlIGFnZW50IElELgog IFtJU0MtQnVncyAjMzU1NjldCiAgSGFuZGxlIHRoZSBvcmRlcmluZyBvZiB0aGUgU1VCTkVUX01B U0sgb3B0aW9uIGV2ZW4gaWYgaXQgaXMgdGhlIGxhc3QKICBvcHRpb24gaW4gdGhlIGxpc3QuCiAg W0lTQy1CdWdzICMyNDU4MF0KCi0gUmVtb3ZlIHRoZSBjb2RlIHRoYXQgYWxsb3dzIGEgc2VydmVy IHRvIGZvbGxvdyBSRkMzMzE1IGluc3RlYWQgb2YKICB0aGUgc3Vic2VxdWVudCBlcnJhdGEgZnJv bSBBdWd1c3QgMjAxMCB3aGVuIGRldGVybWluaW5nIHdoaWNoIElBcwogIHRvIGluY2x1ZGUgaWYg bm8gYWRkcmVzc2VzIHdpbGwgYmUgYXNzaWduZWQuCiAgW0lTQy1CdWdzICMyODkzOF0KCi0gUmVt b3ZlIHVudXNlZCBSQ1NJRCB0YWdzLgogIFtJU0MtQnVncyAjMzU4NDZdCgotIENvcnJlY3QgdGhl IHY2IGNsaWVudCB0aW1pbmcgY29kZS4gIFdoZW4gZG9pbmcgdGhlIHRpbWluZyBiYWNrb2ZmCiAg Zm9yIE1SVCBsaW1pdCBpdCB0byBNUkQuCiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdCBSZWQg SGF0IGZvciB0aGUgYnVnIHJlcG9ydCBhbmQgZml4LgogIFtJU0MtQnVncyAjMjEyMzgKCi0gQWRk IGEgbG9nIGVudHJ5IHdoZW4ga2lsbGluZyBhIGNsaWVudCBhbmQgcmVtb3ZlIHRoZSBQSUQgZmls ZXMKICB3aGVuIGEgc2VydmVyLCByZWxheSBvciBjbGllbnQgYXJlIGtpbGxlZC4KICBbSVNDLUJ1 Z3MgIzE2OTcwXQogIFtJU0MtQnVncyAjMTcyNThdCgotIFNvbWUgbWlub3IgY2xlYW51cHMgaW4g dGhlIGNsaWVudCBjb2RlLgogIEluIGFkZGl0aW9uIHRvIGNoZWNraW5nIGZvciBkaGNwYyBjaGVj ayBmb3IgYm9vdHBjIGluIHRoZSBzZXJ2aWNlcyBsaXN0LgogIFtJU0MtQnVncyAjMTg5MzNdCiAg Q29ycmVjdCB0aGUgY2xpZW50IGNvZGUgdG8gb25seSB0cnkgdG8gZ2V0IGEgbGVhc2Ugb25jZSB3 aGVuIHRoZQogIGdpdmVuIHRoZSAiLTEiIGFyZ3VtZW50LgogIFRoYW5rcyB0byBKaXJpIFBvcGVs a2EgYXQgUmVkIEhhdCBmb3IgdGhlIGJ1ZyByZXBvcnQgYW5kIGZpeC4KICBbSVNDLUJ1Z3MgIzI2 NzM1XQogIFdoZW4gYXNrZWQgZm9yIHRoZSB2ZXJzaW9uIGRvbid0IHNlbmQgdGhlIG91dHB1dCB0 byBzeXNsb2cuCiAgW0lTQy1CdWdzICMyOTc3Ml0KICBBZGQgdGhlIG5leHQgc2VydmVyIGluZm9y bWF0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yCiAgdXNlIGJ5IHRoZSBjbGll bnQgc2NyaXB0LiAgSW4gb3JkZXIgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGNsaWVudAogIGxlYXNl IGZpbGUgdGhlIG5leHQgc2VydmVyIGluZm9ybWF0aW9uIGlzbid0IHdyaXR0ZW4gdG8gaXQuCiAg VGhhbmtzIHRvIFRvbWFzIEhvenphIGF0IFJlZCBIYXQgZm9yIHRoZSBzdWdnZXN0aW9uIGFuZCBh IHByb3RvdHlwZSBmaXguCiAgW0lTQy1CdWdzICMzMzA5OF0KCi0gU2V2ZXJhbCB1cGRhdGVzIHRv IHRoZSBkaGNwIHNlcnZlciBjb2RlLgogIFdoZW4gbm90IGluIHF1aWV0IG1vZGUgcHJpbnQgb3V0 IHRoZSBmaWxlcyBiZWluZyB1c2VkLgogIFtJU0MtQnVncyAjMTc1NTFdCiAgQXMgYWNjZXNzaW5n IHNvbWUgcGlkIGZpbGVzIG1heSByZXF1aXJlIHByaXZpbGVnZXMgbW92ZSB0aGUgZHJvcHBpbmcK ICBvZiBwZXJtaXNzaW9uIGJpdHMgZHVlIHRvIHRoZSBwYXJhbm9pYSBwYXRjaCB0byBiZSBhZnRl ciB0aGUgcGlkIGNvZGUuCiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0IGZvciB0 aGUgYnVnIHJlcG9ydCBhbmQgZml4LgogIFtJU0MtQnVncyAjMjU4MDZdCiAgV2hlbiBwcm9jZXNz aW5nIGEgIi0tdmVyc2lvbiIgcmVxdWVzdCBkb24ndCBvdXRwdXQgdGhlIHZlcnNpb24gaW5mb3Jt YXRpb24KICB0byBzeXNsb2cuCgotIEFkZCB0aGUgImVuYWJsZS1sb2ctcGlkIiBidWlsZCBvcHRp b24gdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuICBXaGVuCmVuYWJsZWQKICB0aGlzIGNhdXNlcyB0 aGUgY2xpZW50LCBzZXJ2ZXIgYW5kIHJlbGF5IHByb2dyYW1zIHRvIGluY2x1ZGUgdGhlIFBJRAog IG51bWJlciBpbiBzeXNsb2cgbWVzc2FnZXMuCiAgVGhhbmtzIHRvIE1hcml1cyBUb21hc2NoZXdz a2kgZm9yIHRoZSBzdWdnZXN0aW9uIGFuZCBwcm90by1wYXRjaC4KICBbSVNDLUJ1Z3MgIzI5NzEz XQoKLSBBZGQgYSAjZGVmaW5lIHRvIHNwZWNpZnkgdGhlIHByZWZpeCBsZW5ndGggdXNlZCB3aGVu IGEgY2xpZW50IGF0dGVtcHRzCiAgdG8gY29uZmlndXJlIGFuIGFkZHJlc3MuICBUaGlzIGNhbiBi ZSBtb2RpZmllZCBieSBlZGl0aW5nIGluY2x1ZGVzL3NpdGUuaC4KICBCeSBkZWZhdWx0IGl0IGlz IHNldCB0byA2NC4gIFdoaWxlIDEyOCBtaWdodCBiZSBhIGJldHRlciBjaG9pY2UgaXQgd291bGQK ICBhbHNvIGJlIGEgY2hhbmdlIGZvciBjdXJyZW50bHkgcnVubmluZyBzeXN0ZW1zLCBzbyB3ZSBo YXZlIGxlZnQgaXQgYXQgNjQuCiAgW0lTQy1CdWdzICNESENQLTJdCgotIEFkZCBhIHJ1biB0aW1l IG9wdGlvbiB0byB0aGUgY2xpZW50ICItZGYiIHRvIGFsbG93IHRoZSBhZG1pbmlzdHJhdG9yIHRv CiAgcG9pbnQgdG8gYSBzZWNvbmQgbGVhc2UgZmlsZSB0aGUgY2xpZW50IGNhbiBzZWFyY2ggZm9y IGEgRFVJRC4gIFRoaXMgY2FuCiAgYmUgdXNlZCB0byBhbGxvdyBhIHY0IGFuZCBhIHY2IGluc3Rh bmNlIG9mIHRoZSBjbGllbnQgdG8gc2hhcmUgYSBEVUlELgogIFRoZSBzZWNvbmQgZmlsZSB3aWxs IG9ubHkgYmUgc2VhcmNoZWQgaWYgdGhlcmUgaXNuJ3QgYSBEVUlEIGluIHRoZSBtYWluCiAgbGVh c2UgZmlsZSBhbmQgdGhlIERVSUQgd2lsbCBiZSB3cml0dGVuIG91dCB0byB0aGUgbWFpbiBsZWFz ZSBmaWxlLgogIFtJU0MtQnVncyAjMzQ4ODZdCgotIEhhdmUgdGhlIGNsaWVudCBmc3luYyB0aGUg bGVhc2UgZmlsZSB0byBhdm9pZCBsZWFzZSBjb3JydXB0aW9uIGlmIHRoZQogIGNsaWVudCBoaWJl cm5hdGVzIG9yIG90aGVyd2lzZSBzaHV0cyBkb3duLgogIFtJU0MtQnVncyAjMzU4OTRdCgotIEFk ZCBhIGNoZWNrIGZvciBMMlZMQU4gaW4gYnBmLmMgdG8gaGVscCBzdXBwb3J0IFZMQU4gaW50ZXJm YWNlcwogIFRoYW5rcyB0byBTdGVpbmFyIEhhdWcgZm9yIHRoZSBzdWdnZXN0aW9uLgogIFtJU0Mt QnVncyAjMzYwMzNdCgotIE1vZGlmeSB0aGUgaGFuZGxpbmcgb2YgdGhlIHJlc29sdi5jb25mIGZp bGUgdG8gYWxsb3cgdGhlIERIQ1AKICBwcm9jZXNzIHRvIHN0YXJ0IHVwIGV2ZW4gaWYgdGhlIHJl c29sdi5jb25mIGZpbGUgaGFzIHByb2JsZW1zLgogIFtJU0MtQnVncyAjMzU5ODldCgotIEFkZCB0 aHJlc2hvbGQgbG9nZ2luZyBmdW5jdGlvbmFsaXR5LiAgVHdvIG5ldyBvcHRpb25zLAogIGxvZy10 aHJlc2hvbGQtbG93IGFuZCBsb2ctdGhyZXNob2xkLWhpZ2gsIGluZGljYXRlIHRvIHRoZQogIHNl cnZlciBpZiBhbmQgd2hlbiBpdCBzaG91bGQgbG9nIGFuIGVycm9yIG1lc3NhZ2UgYXMgYWRkcmVz c2VzCiAgaW4gYSBwb29sIGFyZSB1c2VkLgogIFtJU0MtQnVncyAjMzQ0ODddCgotIEFkZCBjb2Rl IHRvIHByb3Blcmx5IGRlcmVmZXJlbmNlIGEgcG9pbnRlciBpbiB0aGUgZGhjbGllbnQgY29kZQog IG9uIGFuIGVycm9yIGNvbmRpdGlvbi4KICBbSVNDLUJ1Z3MgIzM2MTk0XQoKLSBBZGQgY29kZSB0 byBoZWxwIGNsZWFuIHVwIHNvZnQgbGVhc2VzLgogIFtJU0MtQnVncyAjMzYzMDRdCgotIERpc2Fi bGUgdGhlIGdlbnRsZSBzaHV0ZG93biBmdW5jdGlvbmFsaXR5IHVudGlsIHdlIGNhbiBkZXRlcm1p bmUKICB0aGUgYmVzdCB3YXkgdG8gcHJlc2VudCBpdCB0byByZW1vdmUgb3IgcmVkdWNlIHRoZSBz aWRlIGVmZmVjdHMuCiAgW0lTQy1CdWdzICMzNjA2Nl0KCgkJCUNoYW5nZXMgc2luY2UgNC4zLjBy YzEKCi0gTm9uZQoJCQlDaGFuZ2VzIHNpbmNlIDQuMy4wYjEKCi0gVGlkeSB1cCByZWNlaXZlIHBh Y2tldCBwcm9jZXNzaW5nLgogIFRoYW5rcyB0byBCcmFkIFBsYW5rIG9mIEdUQSBmb3IgcmVwb3J0 aW5nIHRoZSBpc3N1ZSBhbmQgc3VnZ2VzdGluZwogIGEgcG9zc2libGUgcGF0Y2guCiAgW0lTQy1C dWdzICMzNDQ0N10KCgkJCUNoYW5nZXMgc2luY2UgNC4zLjBhMQoKLSBNb2RpZnkgdGhlIG1lc3Nh Z2UgZGlzcGxheWVkIHdoZW4gYSBwcm9jZXNzIGhpdHMgYSBmYXRhbCBlcnJvci4KICBUaGUgbmV3 IG1lc3NhZ2UgaXMgbXVjaCBzaG9ydGVyIGFuZCBzaW1wbHkgcG9pbnRzIHRvIHRoZSBSRUFETUUK ICBhbmQgb3VyIHdlYnNpdGUgZm9yIGRpcmVjdGlvbnMgb24gYnVnIHN1Ym1pc3Npb25zLgogIFtJ U0MtQnVncyAjMjQ3ODldCgotIEhhbmRsZSBhbiBhYnNlbnQgcmVzb2x2LmNvbmYgZmlsZSBiZXR0 ZXIuCiAgW0lTQy1CdWdzICMzNTE5NF0KCgkJCUNoYW5nZXMgc2luY2UgNC4yLjAgKG5ldyBmZWF0 dXJlcykKCi0gSWYgYSBjbGllbnQgcmVuZXdzIGJlZm9yZSAnZGhjcC1jYWNoZS10aHJlc2hvbGQn IHBlcmNlbnQgb2YgaXRzIGxlYXNlCiAgaGFzIGVsYXBzZWQgKGRlZmF1bHQgMjUlKSwgdGhlIHNl cnZlciB3aWxsIHJldXNlIHRoZSBhbGxvY2F0ZWQgbGVhc2UKICAocHJvdmlkZSBhIGxlYXNlIHdp dGhpbiB0aGUgY3VycmVudGx5IGFsbG9jYXRlZCBsZWFzZS10aW1lKSByYXRoZXIKICB0aGFuIGV4 dGVuZCBvciByZW5ldyB0aGUgbGVhc2UuICBUaGlzIGFic29sdmVzIHRoZSBzZXJ2ZXIgb2YgbmVl ZGluZwogIHRvIHBlcmZvcm0gYW4gZnN5bmMoKSBvcGVyYXRpb24gb24gdGhlIGxlYXNlIGRhdGFi YXNlIGJlZm9yZSByZXBseSwKICB3aGljaCBpbXByb3ZlcyBwZXJmb3JtYW5jZS4gW0lTQy1CdWdz ICMyMjIyOF0KICBVcGRhdGVkIHRoaXMgcGF0Y2ggdG8gc3VwcG9ydCBhc3luY2hyb25vdXMgRERO Uy4gIElmIHRoZSBzZXJ2ZXIgaXMKICBhdHRlbXB0aW5nIHRvIGRvIERETlMgb24gYSBsZWFzZSBp dCBzaG91bGQgYmUgdXBkYXRlZCBhbmQgd3JpdHRlbiB0bwogIGRpc2sgZXZlbiBpZiB0aGF0IHdv dWxkbid0IGJlIG5lY2Vzc2FyeSBkdWUgdG8gdGhlIHRocmVzaG9sZGluZy4KICBbSVNDLUJ1Z3Mg IzI2MzExXQoKLSBUaGUgJ25vIGF2YWlsYWJsZSBiaWxsaW5nJyBsb2cgbGluZSBub3cgYWxzbyBs b2dzIHRoZSBuYW1lIG9mIHRoZSBsYXN0CiAgbWF0Y2hpbmcgYmlsbGluZyBjbGFzcyB0cmllZCBi ZWZvcmUgZmFpbGluZyB0byBwcm92aWRlIGEgYmlsbGluZy4KICBbSVNDLUJ1Z3MgIzIxNzU5XQoK LSBBIHByb2JsZW0gd2l0aCBtaXNzaW5nIGdldF9od19hZGRyIGZ1bmN0aW9uIHdoZW4gLS1lbmFi bGUtdXNlLXNvY2tldHMKICB3YXMgdXNlZCBpcyBub3cgc29sdmVkIG9uIEdOVS9MaW51eCwgQlNE IGFuZCBHTlUvSHVyZCBzeXN0ZW1zLiBOb3RlCiAgdGhhdCB1c2Utc29ja2V0cyBmZWF0dXJlIHdh cyBub3QgdGVzdGVkIG9uIHRob3NlIHN5c3RlbXMuIENsaWVudCBhbmQKICBzZXJ2ZXIgY29kZSBu byBsb25nZXIgdXNlIE1BWF9QQVRIIGNvbnN0YW50IHRoYXQgaXMgbm90IGRlZmluZWQgb24KICBH TlUvSHVyZCBzeXN0ZW1zLiBbSVNDLUJ1Z3MgIzI1OTc5XQoKLSBBZGQgYSBwZXJsIHNjcmlwdCBp biB0aGUgY29udHJpYiBkaXJlY3RvcnksIGRoY3AtbGVhc2UtbGlzdC5wbCwgd2hpY2gKICBjYW4g cGFyc2UgdjQgbGVhc2UgZmlsZXMgYW5kIG91dHB1dCB0aGUgbGVhc2UgaW5mb3JtYXRpb24gaW4g YSBtb3JlCiAgaHVtYW4gZnJpZW5kbHkgbWFubmVyLiAgVGhpcyB3YXMgd3JpdHRlbiBieSBDaHJp c3RpYW4gSGFtbWVycyB3aXRoCiAgc29tZSB1cGRhdGVzIGJ5IHZvbSBhbmQgSVNDLiAgVGhpcyBp cyBjb250cmlidXRlZCBjb2RlIGFuZCBpcyBub3QKICBzdXBwb3J0ZWQgYnkgSVNDOyBob3dldmVy IGl0IG1heSBiZSB1c2VmdWwgdG8gc29tZSB1c2Vycy4KICBbSVNDLUJ1Z3MgIzIwNjgwXQoKLSBB ZGQgc3VwcG9ydCBpbiB2NiBmb3Igb24tY29tbWl0LCBvbi1leHBpcmUgYW5kIG9uLXJlbGVhc2Uu CiAgW0lTQy1CdWdzICMyNzkxMl0KCi0gQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGNsYXNzZXMgd2l0 aCB2Ni4KICBbSVNDLUJ1Z3MgIzI2NTEwXQoKLSBVcGRhdGUgdGhlIERETlMgY29kZSB0byBjdXJy ZW50IHN0YW5kYXJkcyBhbmQgYWxsb3cgZm9yIHNoYXJpbmcKICBvZiBERE5TIGVudHJpZXMgYmV0 d2VlbiB2NCBhbmQgdjYgY2xpZW50cy4gIFRoZSBuZXcgY29kZSBpcyB1c2VkCiAgaWYgdGhlIGRk bnMtdXBkYXRlLXN0eWxlIGlzIHNldCB0byAic3RhbmRhcmQiLCB0aGUgb2xkZXIgY29kZSBpcwog IHN0aWxsIGF2YWlsYWJsZSBpZiBkZG5zLXVwZGF0ZS1zdHlsZSBpcyBzZXQgdG8gImludGVyaW0i LiAgVGhlCiAgb2xkZXN0IERETlMgY29kZSAiYWQtaG9jIiBoYXMgYmVlbiByZW1vdmVkLiAgVGhh bmtzIHRvIFRob21hcyBQZWdlb3QKICB3aG8gc3VibWl0dGVkIGEgcGF0Y2ggZm9yIHRoaXMgaXNz dWUuICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uCiAgdGhhdCB3b3JrIHdpdGggc29tZSBtb2RpZmlj YXRpb25zLgogIFtJU0MtQnVncyAjMjExMzldCgotIEFkZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9u IHRvIHRoZSBzZXJ2ZXIgdG8gc3VwcHJlc3MgdXNpbmcgZnN5bmMoKS4KICBFbmFibGluZyB0aGlz IG9wdGlvbiB3aWxsIG1lYW4gdGhhdCBmc3luYygpIGlzIG5ldmVyIGNhbGxlZC4gIFRoaXMKICBt YXkgcHJvdmlkZSBiZXR0ZXIgcGVyZm9ybWFuY2UgYnV0IHRoZXJlIGlzIGFsc28gYSByaXNrIHRo YXQgYSBsZWFzZQogIHdpbGwgbm90IGJlIHByb3Blcmx5IHdyaXR0ZW4gdG8gdGhlIGRpc2sgYWZ0 ZXIgaXQgaGFzIGJlZW4gaXNzdWVkCiAgdG8gYSBjbGllbnQgYW5kIGJlZm9yZSB0aGUgc2VydmVy IHN0b3BzLiAgVXNpbmcgdGhpcyBvcHRpb24gaXMKICBub3QgcmVjb21tZW5kZWQuCiAgW0lTQy1C dWdzICMzNDgxMF0KCi0gQWRkIHNvbWUgbG9nZ2luZyBzdGF0ZW1lbnRzIHRvIGluZGljYXRlIHdo ZW4gdGhlIHNlcnZlciBpcyByZWFkeQogIHRvIHNlcnZlLiAgT25lIHN0YXRlbWVudCBpcyBlbWl0 dGVkIGFmdGVyIHRoZSBzZXJ2ZXIgaGFzIGZpbmlzaGVkCiAgcmVhZGluZyBpdHMgZmlsZXMgYW5k IGlzIGFib3V0IHRvIGVudGVyIHRoZSBkaXNwYXRjaCBsb29wLgogIFRoaXMgaXMgIlNlcnZlciBz dGFydGluZyBzZXJ2aWNlLiIuCiAgVGhlIHNlY29uZCBpcyBlbWl0dGVkIHdoZW4gYSBzZXJ2ZXIg ZGV0ZXJtaW5lcyB0aGF0IGJvdGggaXQgYW5kCiAgaXRzIGZhaWxvdmVyIHBlZXIgYXJlIGluIHRo ZSBub3JtYWwgc3RhdGUuCiAgVGhpcyBpcyAiZmFpbG92ZXIgcGVlciA8bmFtZT46IEJvdGggc2Vy dmVycyBub3JtYWwuIgogIFtJU0MtQnVncyAjMzMyMDhdCgotIEFkZCBzdXBwb3J0IGZvciBhY2Nl c3Npbmcgb3B0aW9ucyBmcm9tIHY2IHJlbGF5cy4gIFRoZSB2NnJlbGF5CiAgc3RhdGVtZW50IGFs bG93cyB0aGUgYWRtaW5pc3RyYXRvciB0byBjaG9vc2Ugd2hpY2ggcmVsYXkgdG8KICB1c2Ugd2hl biBzZWFyY2hpbmcgZm9yIGFuIG9wdGlvbiwgc2VlIHRoZSBkaGNwLW9wdGlvbnMgbWFuIHBhZ2UK ICBmb3IgYSBkZXNjcmlwdGlvbi4gIFRoZSBob3N0LWlkZW50aWZpZXIgb3B0aW9uIGhhcyBhbHNv IGJlZW4KICB1cGRhdGVkIHRvIHN1cHBvcnQgdGhlIHVzZSBvZiByZWxheSBvcHRpb25zLCBzZWUg dGhlIGRoY3BkLmNvbmYKICBtYW4gcGFnZSBmb3IgYSBkZXNjcmlwdGlvbi4KICBbSVNDLUJ1Z3Mg IzE5NTk4XQoKLSBXaGVuIGRvaW5nIERETlMgaWYgdGhlcmUgaXNuJ3QgYW4gYXBwcm9wcmlhdGUg em9uZSBzdGF0ZW1lbnQgYXR0ZW1wdAogIHRvIGZpbmQgYSByZWFzb25hYmxlIG5hbWVzZXJ2ZXIg dmlhIGEgRE5TIHJlc29sdmVyLiAgVGhpcyByZXN0b3JlcwogIHNvbWUgZnVuY3Rpb25hbGl0eSB0 aGF0IHdhcyBsb3N0IGluIHRoZSB0cmFuc2l0aW9uIHRvIGFzeW5jaHJvbm91cwogIERETlMuICBE dWUgdG8gdGhlIGxhY2sgb2Ygc2VjdXJpdHkgYW5kIGluY3JlYXNlIGluIGZyYWdpbGl0eSBvZiB0 aGUKICBzeXN0ZW0gd2hlbiB1c2luZyB0aGlzIGZlYXR1cmUgd2Ugc3Ryb25nbHkgcmVjb21tZW5k IHRoZSB1c2Ugb2YKICBhcHByb3ByaWF0ZSB6b25lIHN0YXRlbWVudHMgcmF0aGVyIHRoYW4gdXNp bmcgdGhpcyBmdW5jdGlvbmFsaXR5LgogIFtJU0MtQnVncyAjMzA0NjFdCgotIEFkZCBzdXBwb3J0 IGZvciBzcGVjaWZ5aW5nIHRoZSBhZGRyZXNzIGZyb20gd2hpY2ggdG8gc2VuZAogIERETlMgdXBk YXRlcyBvbiB0aGUgREhDUCBzZXJ2ZXIuICBUaGVyZSBhcmUgdHdvIG5ldyBvcHRpb25zCiAgImRk bnMtbG9jYWwtYWRkcmVzczQiIGFuZCAiZGRucy1sb2NhbC1hZGRyZXNzNiIgdGhhdCBlYWNoIHRh a2UKICBvbmUgaW5zdGFuY2Ugb2YgdGhlaXIgcmVzcGVjdGl2ZSBhZGRyZXNzIHR5cGVzLgogIFtJ U0MtQnVncyAjMzQ3NzldCgotIEFkZCBpZ25vcmUtY2xpZW50LXVpZHMgb3B0aW9uIGluIHRoZSBz ZXJ2ZXIuICBUaGlzIG9wdGlvbiBjYXVzZXMKICB0aGUgc2VydmVyIHRvIG5vdCByZWNvcmQgYSBj bGllbnQncyB1aWQgaW4gaXRzIGxlYXNlLiAgVGhpcwogIHZpb2xhdGVzIHRoZSBzcGVjaWZpY2F0 aW9uIGJ1dCBtYXkgYWxzbyBiZSB1c2VmdWwgd2hlbiBhIGNsaWVudAogIGNhbiBkdWFsIGJvb3Qg dXNpbmcgZGlmZmVyZW50IGNsaWVudCBpZHMgYnV0IHRoZSBzYW1lIG1hYyBhZGRyZXNzLgogIFRo YW5rIHlvdSB0byBCcmlhbiBEZSBXb2xmIGF0IENhbCBQb2x5IFBvbW9uYSBmb3IgdGhlIHBhdGNo LgogIFtJU0MtQnVncyAjMzI0MjddCiAgW0lTQy1CdWdzICMzNTA2Nl0KCi0gRXh0ZW5kIHRoZSBE SENQSU5GT1JNIHByb2Nlc3NpbmcgdG8gaG9ub3IgdGhlIHN1Ym5ldCBzZWxlY3Rpb24gb3B0aW9u CiAgYW5kIHRha2UgaG9zdCBkZWNsYXJhdGlvbnMgaW50byBhY2NvdW50LgogIFRoYW5rcyB0byBD aHJpc3RvZiBDaGVuIGZvciB0ZXN0aW5nIGFuZCBzdWJtaXR0aW5nIHRoZSBwYXRjaC4KICBbSVND LUJ1Z3MgIzM1MDE1XQoKLSBFeHRlbmQgdGhlIGhhcmR3YXJlIGV4cHJlc3Npb24gdG8gbG9vayBp bnRvIHRoZSBsZWFzZSBzdHJ1Y3R1cmUKICBmb3IgYSBoYXJkd2FyZSBhZGRyZXNzIGlmIHRoZXJl IGlzIG5vIHBhY2tldC4gIFRoaXMgYWxsb3dzIHRoZQogIHNlcnZlciB0byBmaW5kIHRoZSBoYXJk d2FyZSBhZGRyZXNzIGR1cmluZyBvbi1leHBpcnkgcHJvY2Vzc2luZy4KICBbSVNDLUJ1Z3MgIzI0 NTg0XQoKLSBBZGQgZGVmaW5pdGlvbnMgZm9yIHNvbWUgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBz cGVjaWZpZWQgYnkgdGhlIElFVEYuCiAgW0lTQy1CdWdzICMyOTI2OF0KICBbSVNDLUJ1Z3MgIzM1 MTk4XQoKCQkJQ2hhbmdlcyBzaW5jZSA0LjIuMCAoYnVnIGZpeGVzKQoKLSBXaGVuIHVzaW5nICdp Z25vcmUgY2xpZW50LXVwZGF0ZXM7JywgdGhlIEZRRE4gcmV0dXJuZWQgdG8gdGhlIGNsaWVudAog IGlzIG5vIGxvbmdlciB0cnVuY2F0ZWQgdG8gb25lIG9jdGV0LgoKLSBDbGVhbmVkIHVwIGFuIHVu dXNlZCBoYXJkd2FyZSBhZGRyZXNzIHZhcmlhYmxlIGluIG5ha19sZWFzZSgpLgoKLSBNYW5wYWdl IGVudHJpZXMgZm9yIHRoZSBpYS1wZCBhbmQgaWEtcHJlZml4IG9wdGlvbnMgd2VyZSB1cGRhdGVk IHRvCiAgcmVmbGVjdCBzdXBwb3J0IGZvciBwcmVmaXggZGVsZWdhdGlvbi4KCi0gQ2xlYW5lZCB1 cCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzCgotIEFuIG9wdGltaXphdGlvbiBkZXNjcmliZWQgaW4g dGhlIGZhaWxvdmVyIHByb3RvY29sIGRyYWZ0IGlzIG5vdyBpbmNsdWRlZCwKICB3aGljaCBwZXJt aXRzIGEgREhDUCBzZXJ2ZXIgb3BlcmF0aW5nIGluIGNvbW11bmljYXRpb25zLWludGVycnVwdGVk IHN0YXRlCiAgdG8gJ3Jld2luZCcgYSBsZWFzZSB0byB0aGUgc3RhdGUgbW9zdCByZWNlbnRseSB0 cmFuc21pdHRlZCB0byBpdHMgcGVlciwKICBncmVhdGx5IGluY3JlYXNpbmcgYSBzZXJ2ZXIncyBl bmR1cmFuY2UgaW4gY29tbXVuaWNhdGlvbnMtaW50ZXJydXB0ZWQuCiAgVGhpcyBpcyBzdXBwb3J0 ZWQgdXNpbmcgYSBuZXcgJ3Jld2luZCBzdGF0ZScgcmVjb3JkIG9uIHRoZSBkaGNwZC5sZWFzZXMK ICBlbnRyeSBmb3IgZWFjaCBsZWFzZS4KCi0gRml4IHRoZSB0cmFjZSBjb2RlIHdoaWNoIHdhcyBi cm9rZW4gYnkgdGhlIGNoYW5nZXMgdG8gdGhlIERETlMgY29kZS4KCi0gVXBkYXRlIHRoZSBmc3lu YyBjb2RlIHRvIHdvcmsgd2l0aCB0aGUgY2hhbmdlcyB0byB0aGUgREROUyBjb2RlLiAgSXQgbm93 CiAgdXNlcyBhIHRpbWVyIGluc3RlYWQgb2Ygbm90aWNpbmcgaWYgdGhlcmUgYXJlIG5vIG1vcmUg cGFja2V0cyB0byBwcm9jZXNzLgoKLSBXaGVuIGNvbnN0cnVjdGluZyB0aGUgRE5TIG5hbWUgc3Ry dWN0dXJlIGZyb20gYSB0ZXh0IHN0cmluZyBhcHBlbmQKICB0aGUgcm9vdCB0byByZWxhdGl2ZSBu YW1lcy4gIFRoaXMgc2F0aXNmaWVzIGEgcmVxdWlyZW1lbnQgaW4gdGhlIEROUwogIGxpYnJhcnkg dGhhdCBuYW1lcyBiZSBhYnNvbHV0ZSBpbnN0ZWFkIG9mIHJlbGF0aXZlIGFuZCBwcmV2ZW50cyBE SENQCiAgZnJvbSBjcmFzaGluZy4gIFtJU0MtQnVncyAjMjEwNTRdCgotICJUaGUgTERBUCBQYXRj aCIgdGhhdCBoYXMgYmVlbiBjaXJjdWxhdGluZyBmb3Igc29tZSB0aW1lLCB3cml0dGVuIGJ5CiAg QnJpYW4gTWFzbmV5IGFuZCBTLkthbHlhbmFzdW5kcmFyYW0gYW5kIG1haW50YWluZWQgZm9yIGFw cGxpY2F0aW9uIHRvCiAgdGhlIERIQ1AtNCBzb3VyY2VzIGJ5IERhdmlkIENhbnRyZWxsIGhhcyBi ZWVuIGluY2x1ZGVkLiAgUGxlYXNlIGJlCiAgYWR2aXNlZCB0aGF0IHRoZXNlIHNvdXJjZXMgd2Vy ZSBjb250cmlidXRlZCwgYW5kIGRvIG5vdCB5ZXQgbWVldCB0aGUKICBoaWdoIHN0YW5kYXJkcyB3 ZSBwbGFjZSBvbiBwcm9kdWN0aW9uIHNvdXJjZXMgd2UgaW5jbHVkZSBieSBkZWZhdWx0LgogIEFz IGEgcmVzdWx0LCB0aGUgTERBUCBmZWF0dXJlcyBhcmUgb25seSBpbmNsdWRlZCBieSB1c2luZyBh IGNvbXBpbGUtdGltZQogIG9wdGlvbiB3aGljaCBkZWZhdWx0cyBvZmYsIGFuZCBpZiB5b3UgZW5h YmxlIGl0IHlvdSBkbyBzbyB1bmRlciB5b3VyCiAgb3duIHJlY29nbml6YW5jZS4gIFdlIHdpbGwg YmUgaW1wcm92aW5nIHRoaXMgc29mdHdhcmUgb3ZlciB0aW1lLgogIFtJU0MtQnVncyAjMTc3NDFd CgotIFByb2hpYml0IGluY2x1ZGluZyBsZWFzZSB0aW1lIGluZm9ybWF0aW9uIGluIGEgcmVzcG9u c2UgdG8gYSBESENQIElORk9STS4KICBbSVNDLUJ1Z3MgIzIxMDkyXQoKISBBY2NlcHQgYSBjbGll bnQgaWQgb2YgbGVuZ3RoIDAgd2hpbGUgaGFzaGluZy4gIFByZXZpb3VzbHkgdGhlIHNlcnZlciB3 b3VsZAogIGV4aXQgaWYgaXQgYXR0ZW1wdGVkIHRvIGhhc2ggYSB6ZXJvIGxlbmd0aCBjbGllbnQg aWQsIHByb3ZpZGluZyBhdHRhY2tlcnMKICB3aXRoIGEgc2ltcGxlIGRlbmlhbCBvZiBzZXJ2aWNl IGF0dGFjay4gIFtJU0MtQnVncyAjMjEyNTNdCiAgQ0VSVDogVlUjNTQxOTIxIC0gQ1ZFOiBDVkUt MjAxMC0yMTU2CgotIEEgbWVtb3J5IGxlYWsgaW4gZGRucyBwcm9jZXNzaW5nIHdhcyBjbG9zZWQu ICBbSVNDLUJ1Z3MgIzIxMzc3XQoKLSBNb2RpZnkgdGhlIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3Ig aW5pdGlhbCBjb250ZXh0IGNyZWF0aW9uLiAgUHJldmlvdXNseQogIHdlIHdvdWxkIHRyeSBhbmQg Y2xlYW4gdXAgYmVmb3JlIGV4aXRpbmcuICBUaGlzIGNvdWxkIHByZXNlbnQgcHJvYmxlbXMKICB3 aGVuIHRoZSBjbGVhbnVwIHJlcXVpcmVkIHBhcnQgb2YgdGhlIGNvbnRleHQgdGhhdCB3YXNuJ3Qg YXZhaWxhYmxlLiAgSXQKICBhbHNvIGRpZG4ndCBkbyBtdWNoIGFzIHdlIGV4aXRlZCBhZnRlcndh cmRzIGFueXdheS4gICBOb3cgd2Ugc2ltcGx5IGxvZwogIHRoZSBlcnJvciBhbmQgZXhpdC4gW0lT Qy1CdWdzICMyMTA5M10KCi0gQSBidWcgd2FzIGZpeGVkIHRoYXQgY291bGQgY2F1c2UgdGhlIERI Q1B2NiBzZXJ2ZXIgdG8gYWR2ZXJ0aXNlL2Fzc2lnbiBhCiAgcHJldmlvdXNseSBhbGxvY2F0ZWQg KGFjdGl2ZSkgbGVhc2UgdG8gYSBjbGllbnQgdGhhdCBoYXMgY2hhbmdlZCBzdWJuZXRzLAogIGRl c3BpdGUgYmVpbmcgb24gZGlmZmVyZW50IHNoYXJlZCBuZXR3b3Jrcy4gIER5bmFtaWMgcHJlZml4 ZXMgc3BlY2lmaWNhbGx5CiAgYWxsb2NhdGVkIGluIHNoYXJlZCBuZXR3b3JrcyBhbHNvIG5vdyBh cmUgbm90IG9mZmVyZWQgaWYgdGhlIGNsaWVudCBoYXMKICBtb3ZlZC4gIFtJU0MtQnVncyAjMjEx NTJdCgotIEFkZCBzb21lIGRlYnVnZ2luZyBvdXRwdXQgZm9yIHVzZSB3aXRoIHRoZSBERE5TIGNv ZGUuIFtJU0MtQnVncyAjMjA5MTZdCgotIEZpeCB0aGUgdHJhY2UgY29kZSB0byBoYW5kbGUgdGlt aW5nIGV2ZW50cyBiZXR0ZXIgYW5kIHRvIHRydW5jYXRlIGEgZmlsZQogIGJlZm9yZSB1c2luZyBp bnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiAgW0lTQy1CdWdzICMyMDk2OV0KCi0gTW9kaWZ5IHRo ZSBkZXRlcm1pbmF0aW9uIG9mIHRoZSBkZWZhdWx0IFRUTCB0byB1c2UgZm9yIERETlMgdXBkYXRl cy4KICBUaGUgdXNlciBtYXkgc3RpbGwgY29uZmlndXJlIHRoZSB0dGwgdmlhIGRkbnMtdHRsLiAg VGhlIGRlZmF1bHQgZm9yCiAgYm90aCB2NCBhbmQgdjYgaXMgbm93IDEvMiB0aGUgKHByZWZlcnJl ZCkgbGVhc2UgdGltZSB3aXRoIGEgbGltaXQuICBUaGUKICBwcmV2aW91cyBkZWZhdWx0cyAoMS8y IGxlYXNlIHRpbWUgd2l0aG91dCBhIGxpbWl0IGZvciB2NCBhbmQgYSBkZWZhdWx0CiAgdmFsdWUg Zm9yIHY2KSBtYXkgYmUgdXNlZCBieSBkZWZpbmluZyBVU0VfT0xEX0RETlNfVFRMIGluIHNpdGUu aAogIFtJU0MtQnVncyAjMjExMjZdCgotIGxpYmlzYy9saWJkbnMgaXMgbm93IGJyb3VnaHQgdXAg dG8gdmVyc2lvbiA5LjcuMXJjMS4gIFRoaXMgY29ycmVjdHMKICB0aHJlZSByZXBvcnRlZCBmbGF3 cyBpbiBJU0MgREhDUDsKCiAgbyBESENQIHByb2Nlc3NlcyAoZGhjcGQsIGRoY2xpZW50KSBmYWls IHRvIHN0YXJ0IGlmIG9uZSBvZiBlaXRoZXIgdGhlCiAgICBJUHY0IG9yIElQdjYgYWRkcmVzcyBm YW1pbGllcyBpcyBub3QgcHJlc2VudC4gIFtJU0MtQnVncyAjMjExMjJdCgogIG8gQXNzZXJ0aW9u IGZhaWx1cmUgd2hlbiBhdHRlbXB0aW5nIHRvIGNhbmNlbCBhIHByZXZpb3VzbHkgcnVubmluZyBE RE5TCiAgICB1cGRhdGUuICBbSVNDLUJ1Z3MgIzIxMTMzXQoKICBvIENvbXBpbGF0aW9uIGZhaWx1 cmUgb2YgbGliaXNjL2xpYmRucyBkdWUgdG8gdGhlIHVzZSBvZiBhIGZsZXhpYmxlCiAgICBhcnJh eSBtZW1iZXIuICBbSVNDLUJ1Z3MgIzIxMzE2XQoKLSBBZGQgZGVjbGFyYXRpb24gZm9yIHZhcmlh YmxlIGluIGRlYnVnIGNvZGUgaW4gYWxsb2MuYy4gIFtJU0MtQnVncyAjMjE0NzJdCgotIERvY3Vt ZW50YXRpb24gY2xlYW51cCBjb3ZlcmluZyBtdWx0aXBsZSB0aWNrZXRzCiAgW0lTQy1CdWdzICMy MDI2NV0gW0lTQy1CdWdzICMyMDI1OV0gbWlub3IgY2xlYW51cAogIFtJU0MtQnVncyAjMjAyNjNd IGFkZCB0ZXh0IGRlc2NyaWJpbmcgc29tZSBkZWZhdWx0IHZhbHVlcwogIFtJU0MtQnVncyAjMjAx OTNdIHNpbmdsZSBxdW90ZXMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSBpbmRpY2F0ZSBhIGNvbnRy b2wKICBsaW5lIHRvIG5yb2ZmLCBlc2NhcGUgdGhlbSBpZiB3ZSBhY3R1YWxseSB3YW50IGEgcXVv dGUuCiAgW0lTQy1CdWdzICMxODkxNl0gc3luYyB0aGUgcG9pbnRlciB0byB3ZWIgcGFnZXMgYW1v bmdzdCB0aGUgZGlmZmVyZW50IGRvY3MKCi0gJ2dldC1ob3N0LW5hbWVzIHRydWU7JyBub3cgYWxz byB3b3JrcyBldmVuIGlmICd1c2UtaG9zdC1kZWNsLW5hbWVzIHRydWU7JwogIHdhcyBhbHNvIGNv bmZpZ3VyZWQuICBUaGUgbmF0dXJlIG9mIHRoaXMgcmVwYWlyIGFsc28gZml4ZXMgYW5vdGhlcgog IGVycm9yOyB0aGUgaG9zdC1uYW1lIHN1cHBsaWVkIGJ5IGEgY2xpZW50IGlzIG5vIGxvbmdlciBv dmVycmlkZGVuIGJ5IGEKICByZXZlcnNlIGxvb2t1cCBvZiB0aGUgbGVhc2UgYWRkcmVzcy4gIFRo YW5rcyB0byBhIHBhdGNoIGZyb20gV2lsY28gQmFhbgogIEhvZm1hbiBzdXBwbGllZCB0byB1cyBi eSB0aGUgRGViaWFuIHBhY2thZ2UgbWFpbnRlbmFuY2UgdGVhbS4KICBbSVNDLUJ1Z3MgIzIxNjkx XSB7RGViaWFuIEJ1ZyM1MDk0NDV9CgotIFRoZSAuVEggdGFnIGZvciB0aGUgZGhjcC1vcHRpb25z IG1hbnBhZ2Ugd2FzIHR5cG8gcmVwYWlyZWQKICB0aGFua3MgdG8gYSByZXBvcnQgZnJvbSBqaWRh bm5pIGFuZCB0aGUgRGViaWFuIHBhY2thZ2UgbWFpbnRlbmFuY2UKICB0ZWFtLiAgW0lTQy1CdWdz ICMyMTY3Nl0ge0RlYmlhbiBCdWcjNTYzNjEzfQoKLSBNb3JlIGRvY3VtZW50YXRpb24gY2hhbmdl cyAtIHByaW1hcmlseSB0byBwdXQgdGhlIG9wdGlvbnMgaW4gdGhlIGRoY2xpZW50CiAgYW5kIGRo Y3BkIG1hbiBwYWdlcyBpbnRvIHRoZSBzdGFuZGFyZCBmb3JtLiAgVGhhbmtzIGluIHBhcnQgdG8g YSBwYXRjaAogIGZyb20gRGF2aWQgQ2FudHJlbGwgYXQgUmVkIEhhdC4KICBbSVNDLUJ1Z3MgIzIw MjY0XSBhbmQgcGFydHMgb2YgW0lTQy1CdWdzICMxNzc0NF0gZGhjbGllbnQuOCBjaGFuZ2VzCgot IEFkZCBjb2RlIHRvIGNsZWFyIHRoZSBwb2ludGVyIHRvIGFuIG9iamVjdCBpbiBhbiBPTUFQSSBo YW5kbGUgd2hlbiB0aGUKICBvYmplY3QgaXMgZnJlZWQgZHVlIHRvIGEgZGVyZWZlcmVuY2UuICBb SVNDLUJ1Z3MgIzIxMzA2XQoKLSBGaXhlZCBhIGJ1ZyB0aGF0IGxlYWtzIGhvc3QgcmVjb3JkIHJl ZmVyZW5jZXMgb250byBsZWFzZSBzdHJ1Y3R1cmVzLAogIGNhdXNpbmcgdGhlIHNlcnZlciB0byBh cHBseSBjb25maWd1cmF0aW9uIGludGVuZGVkIGZvciBvbmUgaG9zdCB0byBhbnkKICBvdGhlciBp bm5vY2VudCBjbGllbnRzIHRoYXQgY29tZSBhbG9uZyBsYXRlci4gIFtJU0MtQnVncyAjMjIwMThd CgotIE1pbm9yIGNvZGUgZml4ZXMKICBbSVNDLUJ1Z3MgIzE5NTY2XSBXaGVuIHRyeWluZyB0byBm aW5kIHRoZSB6b25lIGZvciBhIG5hbWUgZm9yIGRkbnMgYWxsb3cKICB0aGUgbmFtZSB0byBiZSBh dCB0aGUgYXBleCBvZiB0aGUgem9uZS4KICBbSVNDLUJ1Z3MgIzE5NjE3XSBSZXN0cmljdCBsZW5n dGggb2YgaW50ZXJmYWNlIG5hbWUgcmVhZCBmcm9tIGNvbW1hbmQgbGluZQogIGluIGRoY3BkIC0g YmFzZWQgb24gYSBwYXRjaCBmcm9tIERhdmlkIENhbnRyZWxsIGF0IFJlZCBIYXQuCiAgW0lTQy1C dWdzICMyMDAzOV0gQ29ycmVjdCBzb21lIGVycm9yIG1lc3NhZ2VzIGluIGRoY3BkLmMKICBbSVND LUJ1Z3MgIzIwMDcwXSBCZXR0ZXIgcmFuZ2UgY2hlY2sgb24gdmFsdWVzIHdoZW4gY3JlYXRpbmcg YSBESENJRC4KICBbSVNDLUJ1Z3MgIzIwMTk4XSBBdm9pZCB3cml0aW5nIHBhc3QgdGhlIGVuZCBv ZiB0aGUgZmllbGQgd2hlbiBhZGRpbmcKICBvdmVybHkgbG9uZyBmaWxlIG9yIHNlcnZlciBuYW1l cyB0byBhIHBhY2tldCBhbmQgYWRkIGEgbG9nIG1lc3NhZ2UKICBpZiB0aGUgY29uZmlndXJhdGlv biBzdXBwbGllZCBvdmVybHkgbG9uZyBuYW1lcyBmb3IgdGhlc2UgZmllbGRzLgogIFRoYW5rcyB0 byBNYXJ0aW4gUGFsYS4KICBbSVNDLUJ1Z3MgIzIxNDk3XSBBZGQgYSBsaXR0bGUgbW9yZSByYW5k b21uZXNzIHRvIHJuZyBzZWVkIGluIGNsaWVudAogIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gSmVy ZW1pYWggSmlubm8uCgotIENvcnJlY3QgZXJyb3IgaGFuZGxpbmcgaW4gRExQSSBbSVNDLUJ1Z3Mg IzIwMzc4XQoKLSBSZW1vdmUgX19zdW5fXyBhbmQgX19ocHV4X18gdHlwZWRlZnMgaW4gb3NkZXAu aCBhcyB0aGV5IGFyZSBub3cgYmVpbmcKICBjaGVja2VkIGluIGNvbmZpZ3VyZS4gIFtJU0MtQnVn cyAjMjA0NDNdCgotIE1vZGlmeSBob3cgdGhlIGNtc2cgaGVhZGVyIGlzIGFsbG9jYXRlZCB0aGUg djYgc2VuZCBhbmQgcmVjZWl2ZWQgcm91dGluZXMKICB0byBjb21waWxlIG9uIG1vcmUgY29tcGls ZXJzLiAgW0lTQy1CdWdzICMyMDUyNF0KCi0gV2hlbiBwYXJzaW5nIGEgZG9tYWluIG5hbWUgZnJl ZSB0aGUgbWVtb3J5IGZvciB0aGUgbmFtZSBhZnRlciB3ZSBhcmUKICBkb25lIHdpdGggaXQuICBb SVNDLUJ1Z3MgIzIwODI0XQoKLSBBZGQgYW4gZWxhcHNlZCB0aW1lIG9wdGlvbiB0byB0aGUgcmVs ZWFzZSBtZXNzYWdlIGFuZCByZWZhY3RvciB0aGUKICBjb2RlIHRvIG1vdmUgbW9zdCBvZiB0aGUg Y29tbW9uIGNvZGUgdG8gYSBzaW5nbGUgcm91dGluZS4KICBbSVNDLUJ1Z3MgIzIxMTcxXS4KCi0g VHdvIGlkZW50aWNhbCBsb2cgbWVzc2FnZXMgZm9yIGNvbW1pdF9sZWFzZXMoKSBoYXZlIGJlZW4g ZGlzYW1iaWd1YXRlZC4KICBbSVNDLUJ1Z3MgIzE4OTE1XQoKLSBQYXJzZSBkYXRlIHN0cmluZ3Mg bW9yZSBwcm9wZXJseSAtIHRoZSBjb2RlIG5vdyBoYW5kbGVzIHNlbWktY29sb25zIGluCiAgZGF0 ZSBzdHJpbmdzIGNvcnJlY3RseS4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gSmlyaSBQb3BlbGth IGF0IFJlZCBIYXQuCiAgW0lTQy1CdWdzICMyMTUwMSwgIzIwNTk4XQoKLSBGaXhlcyB0byBsZWFz ZSBpbnB1dCBhbmQgb3V0cHV0LgogIFtJU0MtQnVncyAjMjA0MThdIC0gU29tZSBzeXN0ZW1zIGRv bid0IHN1cHBvcnQgdGhlICIlcyIgYXJndW1lbnQgdG8KICBzdHJmdGltZSwgcGFzdGUgdG9nZXRo ZXIgdGhlIHNhbWUgc3RyaW5nIHVzaW5nIG1rdGltZSBpbnN0ZWFkLgogIFtJU0MtQnVncyAjMTk1 OTZdIC0gV2hlbiBwYXJzaW5nIGlhaWQgdmFsdWVzIGFjY2VwdCBwcmludGFibGUKICBjaGFyYWN0 ZXJzLgogIFtJU0MtQnVncyAjMjE1ODVdIC0gQWx3YXlzIHByaW50IHRpbWUgdmFsdWVzIGluIG9t c2hlbGwgYXMgaGV4CiAgaW5zdGVhZCBvZiBhc2NpaSBpZiB0aGUgdmFsdWVzIGhhcHBlbiB0byBi ZSBwcmludGFibGUgY2hhcmFjdGVycy4KCi0gTWlub3IgY2hhbmdlcyBmb3Igc2NyaXB0cywgY29u ZmlndXJlLmFjIGFuZCBNYWtlZmlsZXMKICBbSVNDLUJ1Z3MgIzE5MTQ3XSBVc2UgZG9tYWluLXNl YXJjaCBpbnN0ZWFkIG9mIGRvbWFpbi1uYW1lIGluIG1hbnVhbCBhbmQKICAgICAgICAgICAgICAg ICAgICBleGFtcGxlIGNvbmYgZmlsZS4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gRGF2aWQKQ2Fu dHJlbGwKICAgICAgICAgICAgICAgICAgICBhdCBSZWQgSGF0LgogIFtJU0MtQnVncyAjMTk3NjFd IFJlc3RvcmUgYWRkcmVzcyB3aGVuIGRvaW5nIGEgcmViaW5kIGluIERIQ1B2NgogIFtJU0MtQnVn cyAjMTk5NDVdIFByb3Blcmx5IGNsb3NlIHRoZSBxdW90ZSBvbiBzb21lIGFyZ3VtZW50cy4KICBb SVNDLUJ1Z3MgIzIwOTUyXSBBZGQgNjQgYml0IHR5cGVzIHRvIGNvbmZpZ3VyZS5hYwogIFtJU0Mt QnVncyAjMjEzMDhdIEFkZCAiUEFUSD0iIHRvIENMSUVOVF9QQVRIIGVudmlyb25tZW50IHZhcmlh YmxlCgotIFVwZGF0ZSB0aGUgY29kZSB0byBwYXJzZSBkaGNwdjYgbGVhc2UgZmlsZXMgdG8gYWNj ZXB0IGEgc2VtaS1jb2xvbiBhdAogIHRoZSBlbmQgb2YgdGhlIG1heC1saWZlIGFuZCBwcmVmZXJy ZWQtbGlmZSBjbGF1c2VzLiAgSW4gb3JkZXIgdG8gYmUKICBiYWNrd2FyZHMgY29tcGF0aWJsZSB3 aXRoIG9sZGVyIGxlYXNlIGZpbGVzIG5vdCBmaW5kaW5nIGEgc2VtaS1jb2xvbgogIGlzIGFsc28g YWNjZXB0ZWQuICBbSVNDLUJ1Z3MgIzIyMzAzXS4KCiEgSGFuZGxlIGEgcmVsYXkgZm9yd2FyZCBt ZXNzYWdlIHdpdGggYW4gdW5zcGVjaWZpZWQgYWRkcmVzcyBpbiB0aGUKICBsaW5rIGFkZHJlc3Mg ZmllbGQuICBQcmV2aW91c2x5IHN1Y2ggYSBtZXNzYWdlIHdvdWxkIGNhdXNlIHRoZQogIHNlcnZl ciB0byBjcmFzaC4gIFRoYW5rcyB0byBhIHJlcG9ydCBmcm9tIEpvaG4gR2liYm9ucy4gIFtJU0Mt QnVncyAjMjE5OTJdCiAgQ0VSVDogVlUjMTAyMDQ3IENWRTogQ1ZFLTIwMTAtMzYxMQoKLSAuL2Nv bmZpZ3VyZSBvbiBsb25nZXIgc2VhcmNoZXMgZm9yIC1sY3J5cHRvIHRvIGV4cGxpY2l0bHkgbGlu ayBhZ2FpbnN0LgogIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgJ2RoY2xpZW50JyB3b3VsZCBoYXZl IHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcwogIG9uICcvdXNyL2xpYicuICBbSVNDLUJ1Z3Mg IzIxOTY3XQoKLSBIYW5kbGUgcGlwZSBmYWlsdXJlcyBtb3JlIGdyYWNlZnVsbHkuICBTb21lIE9T ZXMgcGFzcyBhIFNJR1BJUEUKICBzaWduYWwgdG8gYSBwcm9jZXNzIGFuZCB3aWxsIGtpbGwgdGhl IHByb2Nlc3MgaWYgdGhlIHNpZ25hbCBpc24ndAogIGNhdWdodC4gIFRoaXMgcGF0Y2ggYWRkcyBj b2RlIHRvIHR1cm4gb2ZmIHRoZSBTSUdQSVBFIHNpZ25hbCB2aWEKICBhIHNldHNvY2tvcHQoKSBj YWxsLiAgVGhlIHNpZ25hbCBpcyBhbHJlYWR5IGJlaW5nIGlnbm9yZWQgYXMgcGFydAogIG9mIHRo ZSBJU0MgbGlicmFyeS4gIFtJU0MtQnVncyAjMjIyNjldCgotIFJlc3RvcmUgcHJpbnRpbmcgb2Yg dmFsdWVzIGluIG9tc2hlbGwgdG8gdGhlIHN0eWxlIHByZSAyMTU4NS4gIEZvcgogIDIxNTg1IHdl IGNoYW5nZWQgdGhlIHByaW50IHJvdXRpbmVzIHRvIGFsd2F5cyBkaXNwbGF5IHRpbWUgdmFsdWVz CiAgYXMgYSBoZXggbGlzdC4gIFRoaXMgaGFkIGEgc2lkZSBlZmZlY3Qgb2YgcHJpbnRpbmcgYWxs IGRhdGEgc3RyaW5ncwogIGFzIGEgaGV4IGxpc3QuICBXZSBzaGFsbCBpbnZlc3RpZ2F0ZSBvdGhl ciB3YXlzIG9mIGRpc3BsYXlpbmcgdGltZQogIHZhbHVlcyBtb3JlIHVzZWZ1bGx5LiAgW0lTQy1C dWdzICMyMjYyNl0KCiEgRml4IHRoZSBoYW5kbGluZyBvZiBjb25uZWN0aW9uIHJlcXVlc3RzIG9u IHRoZSBmYWlsb3ZlciBwb3J0LgogIFByZXZpb3VzbHkgYSBjb25uZWN0aW9uIHJlcXVlc3QgZnJv bSBhIHNvdXJjZSB0aGF0IHdhc24ndAogIGxpc3RlZCBhcyBhIGZhaWxvdmVyIHBlZXIgd291bGQg Y2F1c2UgdGhlIHNlcnZlciB0byBiZWNvbWUKICBub24tcmVzcG9uc2l2ZS4gIFRoYW5rcyB0byBh IHJlcG9ydCBmcm9tIEJyYWQgQmVuZGlseSwgYnJhZEBiZW5kaWx5LmNvbS4KICBbSVNDLUJ1Z3Mg IzIyNjc5XQogIENFUlQ6IFZVIzE1OTUyOCBDVkU6IENWRS0yMDEwLTM2MTYKCi0gRG9uJ3QgcGFz cyB0aGUgSVNDX1JfSU5QUk9HUkVTUyBzdGF0dXMgdG8gdGhlIG9tYXBpIHNpZ25hbCBoYW5kbGVy cy4KICBQYXNzaW5nIGl0IHRocm91Z2ggdG8gdGhlIGhhbmRsZXJzIGNhdXNlZCB0aGUgb21zaGVs bCBwcm9ncmFtIHRvIGZhaWwKICB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIuICBbSVNDLUJ1Z3Mg IzIxODM5XQoKLSBGaXggdGhlIHBhcmVudGhlc2lzIGluIHRoZSBjb2RlIHRvIHByb2Nlc3MgY29u ZmlndXJhdGlvbiBzdGF0ZW1lbnRzCiAgYmVnaW5uaW5nIHdpdGggImF1dGgiLiAgVGhlIHByZXZp b3VzIGFycmFuZ2VtZW50IGNhdXNlZAogICJhdXRvLXBhcnRuZXItZG93biIgdG8gYmUgcHJvY2Vz c2VkIGluY29ycmVjdGx5LiAgW0lTQy1CdWdzICMyMTg1NF0KCi0gTGltaXQgdGhlIHRpbWVvdXQg cGVyaW9kIGFsbG93ZWQgaW4gdGhlIGRpc3BhdGNoIGNvZGUgdG8gMl5eMzItMSBzZWNvbmRzLgog IFRoYW5rcyB0byBhIHJlcG9ydCBmcm9tIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0LgogIFtJU0Mt QnVncyAjMjIwMzNdLCBbUmVkIEhhdCBCdWcgIzYyODI1OF0KCi0gV2hlbiBwcm9jZXNzaW5nIHRo ZSBmb3JtYXQgZmxhZ3MgZm9yIGEgZ2l2ZW4gb3B0aW9uIGNvbnN1bWUgdGhlCiAgZmxhZyBpbmRp Y2F0aW5nIGFuIG9wdGlvbmFsIHZhbHVlIGNvcnJlY3RseS4gIEEgc3ltcHRvbSBvZiB0aGlzCiAg YnVnIHdhcyBhbiBpbmZpbml0ZSBsb29wIHdoZW4gdHJ5aW5nIHRvIHBhcnNlIHRoZSBzbHAtc2Vy dmljZS1zY29wZQogIG9wdGlvbi4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gTWFyaXVzIFRvbWFz Y2hld3NraS4KICBbSVNDLUJ1Z3MgIzIyMDU1XQoKLSBEaXNhYmxlIHRoZSB1c2Ugb2Yga3F1ZXVl IGluIHRoZSBJU0MgbGlicmFyeS4gIFRoaXMgYXZvaWRzIGEgcHJvYmxlbQogIGJldHdlZW4gdGhl IGZvcmsgYW5kIHNvY2tldCBjb2RlIHRoYXQgY2F1c2VkIHRoZSBkaGNwZCBwcm9jZXNzIHRvCiAg dXNlIGFsbCBhdmFpbGFibGUgY3B1IGlmIHRoZSBwcm9ncmFtIGRhZW1vbml6ZWQgaXRzZWxmLgog IFtJU0MtQnVncyAjMjE5MTFdCgohIFdoZW4gcHJvY2Vzc2luZyBhIHJlcXVlc3QgaW4gdGhlIERI Q1B2NiBzZXJ2ZXIgY29kZSB0aGF0IHNwZWNpZmllcwogIGFuIGFkZHJlc3MgdGhhdCBpcyB0YWdn ZWQgYXMgYWJhbmRvbmVkIChtZWFuaW5nIHdlIHJlY2VpdmVkIGEKICBkZWNsaW5lIHJlcXVlc3Qg Zm9yIGl0IHByZXZpb3VzbHkpIGRvbid0IGF0dGVtcHQgdG8gbW92ZSBpdCBmcm9tCiAgdGhlIGlu YWN0aXZlIHRvIGFjdGl2ZSBwb29sIGFzIGRvaW5nIHNvIGNhbiByZXN1bHQgaW4gdGhlIHNlcnZl cgogIGNyYXNoaW5nIG9uIGFuIGFzc2VydCBmYWlsdXJlLiAgQWxzbyByZXRhZyB0aGUgbGVhc2Ug YXMgYWN0aXZlCiAgYW5kIHJlc2V0IGl0cyB0aW1lb3V0IHZhbHVlLgogIFtJU0MtQnVncyAjMjE5 MjFdCgotIFJlbW92ZWQgdGhlIHJlc3RyaWN0aW9uIG9uIHVzaW5nIElQdjYgYWRkcmVzc2VzIGlu IElQdjQgbW9kZS4gIFRoaXMKICBhbGxvd3MgSVB2NCBvcHRpb25zIHdoaWNoIGNvbnRhaW4gSVB2 NiBhZGRyZXNzZXMgdG8gYmUgc3BlY2lmaWVkLiAgRm9yCiAgZXhhbXBsZSB0aGUgNnJkIG9wdGlv biBjYW4gYmUgc3BlY2lmaWVkIGFuZCB1c2VkIGxpa2UgdGhpczoKICBbSVNDLUJ1Z3MgIzIzMDM5 XQoKCW9wdGlvbiA2cmQgY29kZSAyMTIgPSB7IGludGVnZXIgOCwgaW50ZWdlciA4LAoJCQkJaXA2 LWFkZHJlc3MsIGFycmF5IG9mIGlwLWFkZHJlc3MgfTsKCW9wdGlvbiA2cmQgMTYgMTAgMjAwMTo6 IDEuMi4zLjQsIDUuNi43Ljg7CgotIEhhbmRsZSBzb21lIERETlMgY29ybmVyIGNhc2VzIGJldHRl ci4gIE1haW50YWluIHRoZSBERE5TIHRyYW5zYWN0aW9uCiAgaW5mb3JtYXRpb24gd2hlbiB1cGRh dGluZyBhIGxlYXNlIGFuZCBjYW5jZWwgYW55IGV4aXN0aW5nIHRyYW5zYWN0aW9ucwogIHdoZW4g cmVtb3ZpbmcgdGhlIGRkbnMgaW5mb3JtYXRpb24uCiAgW0lTQy1CdWdzICMyMzEwM10KCi0gU29t ZSBmaXhlcyBmb3IgTERBUAogIFtJU0MtQnVncyAjMjE3ODNdIC0gSW5jbHVkZSBsYmVyIGxpYnJh cnkgd2hlbiBidWlsZGluZyBsZGFwCiAgW0lTQy1CdWdzICMyMjg4OF0gLSBFbmFibGUgdGhlIGxk YXAgY29kZSB3aGVuIGJ1aWRsaW5nIGNvbW1vbgogIFRoZSBhYm92ZSBmaXhlcyBhcmUgZnJvbSBK aXJpIFBvcGVsa2EgYXQgUmVkIEhhdC4KCi0gTW9kaWZ5IHRoZSBkbHBpIGNvZGUgdG8gYWNjZXB0 IGdldG1zZygpIHJldHVybmluZyBhIHBvc2l0aXZlIHZhbHVlLgogIFtJU0MtQnVncyAjMjI4MjRd CgohIEluIGRoY2xpZW50IGNoZWNrIHRoZSBkYXRhIGZvciBzb21lIHN0cmluZyBvcHRpb25zIGZv cgogIHJlYXNvbmFibGVuZXNzIGJlZm9yZSBwYXNzaW5nIGl0IGFsb25nIHRvIHRoZSBzY3JpcHQg dGhhdAogIGludGVyZmFjZXMgd2l0aCB0aGUgT1MuCiAgW0lTQy1CdWdzICMyMzcyMl0KICBDVkU6 IENWRS0yMDExLTA5OTcKCi0gREhDUHY2IHNlcnZlciBub3cgcmVzcG9uZHMgcHJvcGVybHkgaWYg Y2xpZW50IGFza3MgZm9yIGEgcHJlZml4IHRoYXQKICBpcyBhbHJlYWR5IGFzc2lnbmVkIHRvIGEg ZGlmZmVyZW50IGNsaWVudC4gW0lTQy1CdWdzICMyMzk0OF0KCi0gQWRkIHRoZSBvcHRpb24gIi0t bm8tcGlkIiB0byB0aGUgY2xpZW50LCByZWxheSBhbmQgc2VydmVyIGNvZGUsCiAgdG8gZGlzYWJs ZSB3cml0aW5nIGEgcGlkIGZpbGUuICBBZGQgdGhlIG9wdGlvbiAiLXBmIHBpZGZpbGUiCiAgdG8g dGhlIHJlbGF5IHRvIGFsbG93IHRoZSB1c2VyIHRvIHN1cHBseSB0aGUgcGlkZmlsZSBuYW1lIGF0 CiAgcnVudGltZS4gIEFkZCB0aGUgIndpdGgtcmVsYXk2LXBpZC1maWxlIiBvcHRpb24gdG8gY29u ZmlndXJlCiAgdG8gYWxsb3cgdGhlIHVzZXIgdG8gc3VwcGx5IHRoZSBwaWRmaWxlIG5hbWUgZm9y IHRoZSByZWxheQogIGluIHY2IG1vZGUgYXQgY29uZmlndXJlIHRpbWUuCiAgW0lTQy1CdWdzICMy MzM1MV0gW0lTQy1CdWdzICMxNzU0MV0KCi0gJ2RoY2xpZW50JyBubyBsb25nZXIgd2FpdHMgYSBy YW5kb20gaW50ZXJ2YWwgYWZ0ZXIgZmlyc3Qgc3RhcnRpbmcgdXAgdG8KICBiZWdpbiBpbiB0aGUg SU5JVCBzdGF0ZS4gIFRoaXMgY29uZm9ybXMgdG8gUkZDIDIxMzEsIGJ1dCBlbGVjdHMgbm90IHRv CiAgaW1wbGVtZW50IGEgJ1NIT1VMRCcgZGlyZWN0aW9uIGluIHNlY3Rpb24gNC4xLiBUaGUgZ29h bCBvZiB0aGlzIGNoYW5nZQogIGlzIHRvIHN0YXJ0IHVwIGZhc3Rlci4gW0lTQy1CdWdzICMxOTY2 MF0KCi0gQWRkZWQgJ2luaXRpYWwtZGVsYXknIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyBtYXhp bXVtIGFtb3VudCBvZiB0aW1lCiAgYmVmb3JlIGNsaWVudCBnb2VzIHRvIHRoZSBJTklUIHN0YXRl LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLiBJbiBwcmV2aW91cwogIHZlcnNpb25zIG9mIHRoZSBj b2RlIGNsaWVudCBjb3VsZCB3YWl0IHVwIHRvIDUgc2Vjb25kcy4gVGhlIG9sZCBiZWhhdmlvcgog IG1heSBiZSByZXN0b3JlZCBieSB1c2luZyAnaW5pdGlhbC1kZWxheSA1OycgaW4gdGhlIGNsaWVu dCBjb25maWcgZmlsZS4KICBbSVNDLUJ1Z3MgIzE5NjYwXQoKLSBJQ01QIHBpbmctY2hlY2sgc2hv dWxkIG5vdyBzaXQgY2xvc2VyIHRvIHByZWNpc2VseSB0aGUgbnVtYmVyIG9mIHNlY29uZHMKICBj b25maWd1cmVkIChvciBkZWZhdWx0IDEpLCBkdWUgdG8gbWFraW5nIHVzZSBvZiB0aGUgbmV3IG1p Y3Jvc2Vjb25kCiAgc2NhbGUgdGltZXIgaW50ZXJuYWxseSB0byBkaGNwZC4gIFRoaXMgY29ycmVj dHMgYSBidWcgd2hlcmUgdGhlIHNlcnZlcgogIG1heSBpbW1lZGlhdGVseSB0aW1lb3V0IGFuIElD TVAgcGluZy1jaGVjayBpZiBpdCB3YXMgbWFkZSBsYXRlIGluIHRoZQogIGN1cnJlbnQgc2Vjb25k LiBbSVNDLUJ1Z3MgIzE5NjYwXQoKLSBUaGUgREhDUCBjbGllbnQgd2lsbCBzY2hlZHVsZSByZW5l d2FsIGFuZCByZWJpbmRpbmcgZXZlbnRzIGluCiAgbWljcm9zZWNvbmRzIGlmIHRoZSBESENQIHNl cnZlciBwcm92aWRlZCBhIGxlYXNlLXRpbWUgdGhhdCB3b3VsZCByZXN1bHQKICBpbiBzdWItMS1z ZWNvbmQgdGltZXJzLiAgVGhpcyBjb3JyZWN0cyBhIGJ1ZyB3aGVyZSBhIDItc2Vjb25kIG9yIGxv d2VyCiAgbGVhc2UtdGltZSB3b3VsZCBjYXVzZSB0aGUgREhDUCBjbGllbnQgdG8gZW50ZXIgYW4g aW5maW5pdGUgbG9vcCBieQogIHNjaGVkdWxpbmcgcmVuZXdhbCBhdCB6ZXJvIHNlY29uZHMuIFtJ U0MtQnVncyAjMTk2NjBdCgotIENsaWVudCBsZWFzZSByZWNvcmRzIGFyZSByZWNvcmRlZCBhdCBt b3N0IG9uY2UgZXZlcnkgMTUgc2Vjb25kcy4gIFRoaXMKICBrZWVwcyB0aGUgY2xpZW50IGZyb20g ZmlsbGluZyB0aGUgbGVhc2UgZGF0YWJhc2UgZGlzayBxdWlja2x5IG9uIHZlcnkKc21hbGwKICBs ZWFzZSB0aW1lcy4gW0lTQy1CdWdzICMxOTY2MF0KCi0gVG8gZGVmZW5kIGFnYWluc3QgUkZDIDIx MzEgbm9uLWNvbXBsaWFudCBESENQIHNlcnZlcnMgd2hpY2ggZmFpbCB0bwogIGFkdmVydGlzZSBh IGxlYXNlLXRpbWUgKGVpdGhlciBtYW5nbGVkLCBvciB6ZXJvIGluIHZhbHVlKSB0aGUgREhDUAog IGNsaWVudCBub3cgYWRkcyB0aGUgc2VydmVyIHRvIHRoZSByZWplY3QgbGlzdCBBQ0wgYW5kIHJl dHVybnMgdG8gSU5JVAogIHN0YXRlIHRvIGhvcGVmdWxseSBmaW5kIGFuIFJGQyAyMTMxIGNvbXBs aWFudCBzZXJ2ZXIgKG9yIHJldHJ5IGluIElOSVQKICBmb3JldmVyKS4gW0lTQy1CdWdzICMxOTY2 MF0KCi0gUGFyYW1ldGVycyBjb25maWd1cmVkIHRvIGV2YWx1YXRlIGZyb20gdXNlciBkZWZpbmVk IGZ1bmN0aW9uIGNhbGxzIGNhbgogIG5vdyBiZSBjb3JyZWN0bHkgd3JpdHRlbiB0byBkaGNwZC5s ZWFzZXMgKGFzIG9uICdvbiBldmVudHMnIG9yIGR5bmFtaWMKICBob3N0IHJlY29yZHMgaW5zZXJ0 ZWQgdmlhIE9NQVBJKS4gIFtJU0MtQnVncyAjMjIyNjZdCgotIElmIGEgJ25leHQtc2VydmVyJyBw YXJhbWV0ZXIgaXMgY29uZmlndXJlZCBpbiBhIGR5bmFtaWMgaG9zdCByZWNvcmQgdmlhCiAgT01B UEkgYXMgYSBkb21haW4gbmFtZSwgdGhlIHN5bnRheCB3cml0dGVuIHRvIGRpc2sgaXMgbm93IGNv cnJlY3RseSBwYXJzZWQKICB1cG9uIHJlc3RhcnQuICBbSVNDLUJ1Z3MgIzIyMjY2XQoKLSBUaGUg REhDUCBzZXJ2ZXIgbm93IHJlc3BvbmRzIHRvIERIQ1BMRUFTRVFVRVJZIG1lc3NhZ2VzIGZyb20g YWdlbnRzIHVzaW5nCiAgSVAgYWRkcmVzc2VzIG5vdCBjb3ZlcmVkIGJ5IGEgc3VibmV0IGluIGNv bmZpZ3VyYXRpb24uICBXaGV0aGVyIG9yIG5vdCB0bwogIHJlc3BvbmQgdG8gc3VjaCBhbiBhZ2Vu dCBpcyBzdGlsbCBnb3Zlcm5lZCBieSB0aGUgJ2FsbG93IGxlYXNlcXVlcnk7JwogIGNvbmZpZ3Vy YXRpb24gcGFyYW1ldGVyLCBpbiB0aGUgY2FzZSBvZiBhbiBhZ2VudCBub3QgY292ZXJlZCBieSBh CmNvbmZpZ3VyZWQKICBzdWJuZXQgdGhlIHJvb3QgY29uZmlndXJhdGlvbiBhcmVhIGlzIGV4YW1p bmVkLiBTZXJ2ZXIgbm93IGFsc28gcmV0dXJucwogIHZlbmRvci1jbGFzcy1pZCBvcHRpb24sIGlm IGNsaWVudCBzZW50IGl0LiBbSVNDLUJ1Z3MgIzIxMDk0XQoKLSBEb2N1bWVudGF0aW9uIGZpeGVz CiAgW0lTQy1CdWdzICMxNzk1OV0gYWRkIHRleHQgdG8gQUlYIHNlY3Rpb24gZGVzY3JpYmluZyBo b3cgdG8gaGF2ZSBpdCBzZW5kCiAgcmVzcG9uc2VzIHRvIHRoZSBhbGwtb25lcyBhZGRyZXNzLgog IFtJU0MtQnVncyAjMTk2MTVdIHVwZGF0ZSB0aGUgaW5jbHVkZXMgaW4gZGhjcGN0bC9kaGNwY3Rs LjMgdG8gYmUgbW9yZQpjb3JyZWN0CiAgW0lTQy1CdWdzICMyMDY3Nl0gdXBkYXRlIGRoY3BkLmNv bmYuNSB0byBpbmNsdWRlIHRoZSBSRkMgbnVtYmVycyBmb3IgREROUwoKLSBSZWxheSBubyBsb25n ZXIgY3Jhc2hlcywgd2hlbiBESENQIHBhY2tldCBpcyByZWNlaXZlZCBvdmVyIGludGVyZmFjZQp3 aXRob3V0CiAgYW55IElQdjQgYWRkcmVzcyBhc3NpZ25lZC4gQWxzbyBleHRlbmRlZCBsb2dnaW5n IG1lc3NhZ2UgYWJvdXQgZGlzY2FyZGluZwogIHBhY2tldHMgd2l0aCBpbnZhbGlkIGhsZW4gd2l0 aCBpbmZvcm1hdGlvbiBhYm91dCByZWxldmFudCBpbnRlcmZhY2UgbmFtZS4KICBbSVNDLUJ1Z3Mg IzIyNDA5XQoKLSBSZWxheSBub3cgcHJvcGVybHkgbG9ncyB0aGF0IHBhY2tldCB3YXMgcmVjZWl2 ZWQgb3ZlciBpbnRlcmZhY2Ugd2l0aG91dAogIGdsb2JhbCBJUHY2IGFkZHJlc3MgW0lTQy1CdWdz ICMyNDA3MF0KCi0gTGludXggUGFja2V0IEZpbHRlciBpbnRlcmZhY2UgaW1wcm92ZW1lbnQuIHNv Y2thZGRyX3BrdCBzdHJ1Y3R1cmUgaXMgdXNlZCwKICByYXRoZXIgdGhhbiBzb2NrYWRkci4gUGFj a2V0IGV0aGVydHlwZSBpcyBub3cgZm9yY2VkIHRvIEVUSF9QX0lQLgogIFtJU0MtQnVncyAjMTg5 NzVdCgotIE1pbm9yIGNvZGUgY2xlYW51cHMgLSBidXQgbm90ZSBwb3J0IGNoYW5nZSBmb3IgIzIz MTk2CiAgW0lTQy1CdWdzICMyMzQ3MF0gLSBNb2RpZnkgd2hlbiBhbiBpZ25vcmUgcmV0dXJuIG1h Y3JvIGlzIGRlZmluZWQgdG8KICBoYW5kbGUgdW5zZWQgZXJyb3IgcmV0dXJuIHdhcm5pbmdzIGZv ciBtb3JlIHZlcnNpb25zIG9mIGdjYy4KICBbSVNDLUJ1Z3MgIzIzMTk2XSAtIE1vZGlmeSB0aGUg cmVwbHkgaGFuZGxpbmcgaW4gdGhlIHNlcnZlciBjb2RlIHRvCiAgc2VuZCB0byBhIHNwZWNpZmll ZCBwb3J0IHJhdGhlciB0aGFuIHRvIHRoZSBzb3VyY2UgcG9ydCBmb3IgdGhlIGluY29taW5nCiAg bWVzc2FnZS4gIFNlbmRpbmcgdG8gdGhlIHNvdXJjZSBwb3J0IHdhcyB0ZXN0IGNvZGUgdGhhdCBz aG91bGQgaGF2ZQogIGJlZW4gcmVtb3ZlZC4gIFRoZSBwcmV2aW91cyBmdW5jdGlvbmFsaXR5IG1h eSBiZSByZXN0b3JlZCBieSBkZWZpbmluZwogIFJFUExZX1RPX1NPVVJDRV9QT1JUIGluIHRoZSBp bmNsdWRlcy9zaXRlLmggZmlsZS4gIFdlIHN1Z2dlc3QgeW91IGRvbid0CiAgZW5hYmxlIHRoaXMg ZXhjZXB0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogIFtJU0MtQnVncyAjMjI2OTVdIC0gQ2xvc2Ug YSBmaWxlIGRlc2NyaXB0b3IgaW4gYW4gZXJyb3IgcGF0aC4KICBbSVNDLUJ1Z3MgIzE5MzY4XSAt IFRpZHkgdXAgdmFyaWFibGUgdHlwZXMgaW4gdmFsaWRhdGVfcG9ydC4KCi0gQ29kZSBjbGVhbnVw OiByZW1vdmUgb2Jzb2xldGUgUFJPVE8sIEthbmRSLCBJTkxJTkUgYW5kIEFOU0lfREVDTCBtYWNy b3MKICBbSVNDLUJ1Z3MgIzEzMTUxXQoKLSBDb21waWxhdGlvbiBwcm9ibGVtIHdpdGggZ2NjNC41 IGFuZCBvbXNoZWxsLmMgcmVzb2x2ZWQuIFtJU0MtQnVncyAjMjM4MzFdCgotIENsaWVudCBTY3Jp cHQgZml4ZXMKICBbSVNDLUJ1Z3MgIzIzMDQ1XSBUeXBvcyBpbiBjbGllbnQvc2NyaXB0cy9vcGVu YnNkCiAgW0lTQy1CdWdzICMyMzU2NV0gSW4gdGhlIGNsaWVudCBzY3JpcHRzIGFkZCBhIHpvbmUg aWQgKGludGVyZmFjZSBpZCkgaWYKICB0aGUgZG9tYWluIHNlYXJjaCBhZGRyZXNzIGlzIGxpbmsg bG9jYWwuCiAgW0lTQy1CdWdzICMxMjc3XSBJbiBzb21lIG9mIHRoZSBjbGllbnQgc2NyaXB0cyBh ZGQgY29kZSB0byBoYW5kbGUgdGhlCiAgY2FzZSBvZiB0aGUgZGVmYXVsdCByb3V0ZXIgaW5mb3Jt YXRpb24gYmVpbmcgY2hhbmdlZCB3aXRob3V0IHRoZSBhZGRyZXNzCiAgYmVpbmcgY2hhbmdlZC4K Ci0gRG9jdW1lbnRhdGlvbiBjbGVhbnVwCiAgW0lTQy1CdWdzICMyMzMyNl0gVXBkYXRlZCBSZWZl cmVuY2VzIGRvY3VtZW50LCBzZXZlcmFsIG1hbiBwYWdlIHVwZGF0ZXMKCi0gU2VydmVyIG5vIGxv bmdlciBjb21wbGFpbnMgYWJvdXQgTlVMTCBwb2ludGVyIHdoZW4gY29uZmlndXJlZAogIHNlcnZl ci1pZGVudGlmaWVyIGV4cHJlc3Npb24gZmFpbHMgdG8gZXZhbHVhdGUuIFtJU0MtQnVncyAjMjQ1 NDddCgotIENvbnZlcnQgSVNDX1JfSU5QUk9HUkVTUyBzdGF0dXMgdG8gSVNDX1JfU1VDQ0VTUyB3 aGVuIGNhbGxlZCBmcm9tIG90aGVyCiAgdGhhbiB0aGUgZGlzcGF0Y2ggaGFuZGxlci4gIFRoaXMg Zml4ZXMgYW4gaXNzdWUgd2hlcmUgb21zaGVsbCwgd2hlbgogIHJ1biBmcm9tIHRoZSBzYW1lIHBs YXRmb3JtIGFzIHRoZSBzZXJ2ZXIsIHdvdWxkIGFwcGVhciB0byBmYWlsIHRvCiAgY29ubmVjdC4g IFRoaXMgaXMgYSBjb21wYW5pb24gdG8gIzIxODM5LiAgW0lTQy1CdWdzICMyMzU5Ml0KCi0gRW5s YXJnZSB0aGUgYnVmZmVyIHNpemUgdXNlZCBieSB0aGUgT21zaGVsbCBjb2RlIGFuZCBzb21lIG9m IHRoZQogIHByaW50IHJvdXRpbmVzIHRvIGFsbG93IGZvciBncmVhdGVyIHRoYW4gNjAgY2hhcmFj dGVycyBvciwgd2hlbgogIHByaW50aW5nIGFzIGhleCBzdHJpbmdzLCAyMCBjaGFyYWN0ZXJzLiAg W0lTQy1CdWdzICMyMjc0M10KCi0gSW4gU29sYXJpcyAxMSBzd2l0Y2ggdG8gdXNpbmcgc29ja2V0 cyBpbnN0ZWFkIG9mIERMUEksIHRoYW5rcwogIHRvIGEgcGF0Y2ggZm9ybSBPcmFjbGUuICBbSVND LUJ1Z3MgIzI0NjM0XS4KCi0gU3RyaWN0IGNoZWNrcyBmb3IgY29udGVudCBvZiBkb21haW4tbmFt ZSBESENQdjQgb3B0aW9uIGNhbiBub3cgYmUKICBjb25maWd1cmVkIGR1cmluZyBjb21waWxhdGlv biB0aW1lLiBFdmVuIHRob3VnaCBSRkMyMTMyIGRvZXMgbm90IGFsbG93CiAgdG8gc3RvcmUgbW9y ZSB0aGFuIG9uZSBkb21haW4gaW4gZG9tYWluLW5hbWUgb3B0aW9uLCBzdWNoIGJlaGF2aW9yIGlz CiAgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IHRoaXMgbWF5IGNoYW5nZSBzb21lIHRpbWUg aW4gdGhlIGZ1dHVyZS4KICBTZWUgQUNDRVBUX0xJU1RfSU5fRE9NQUlOX05BTUUgZGVmaW5lIGlu IGluY2x1ZGVzL3NpdGUuaC4KICBbSVNDLUJ1Z3MgIzI0MTY3XQoKLSBETlMgVXBkYXRlIGZpeC4g QSBtaXNjb25maWd1cmVkIHNlcnZlciBjb3VsZCBjcmFzaCBkdXJpbmcgRE5TIHVwZGF0ZQogIHBy b2Nlc3NpbmcgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaW5jbHVkZWQgb3ZlcmxhcHBpbmcgcG9vbHMg b3IKICBtdWx0aXBsZSBmaXhlZC1hZGRyZXNzIGVudHJpZXMgZm9yIGEgc2luZ2xlIGFkZHJlc3Mu ICBUaGlzIGlzc3VlCiAgYWZmZWN0ZWQgYm90aCBJUHY0IGFuZCBJUHY2LiBUaGUgZml4IGFsbG93 cyBhIHNlcnZlciB0byBkZXRlY3Qgc3VjaAogIGNvbmRpdGlvbnMsIHByb3ZpZGVzIHRoZSB1c2Vy IHdpdGggZXh0cmEgaW5mb3JtYXRpb24gYW5kIHJlY29tbWVuZGVkCiAgc3RlcHMgdG8gZml4IHRo ZSBwcm9ibGVtLiAgSWYgdGhlIHVzZXIgZW5hYmxlcyB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uCiAg aW4gc2l0ZS5oIHRoZW4gc2VydmVyIHdpbGwgYmUgdGVybWluYXRlZAogIFtJU0MtQnVncyAjMjM1 OTVdCgohIFR3byBwYWNrZXRzIHdlcmUgZm91bmQgdGhhdCBjYXVzZSBhIHNlcnZlciB0byBoYWx0 LiAgVGhlIGNvZGUKICBoYXMgYmVlbiB1cGRhdGVkIHRvIHByb3Blcmx5IHByb2Nlc3Mgb3IgcmVq ZWN0IHRoZSBwYWNrZXRzIGFzCiAgYXBwcm9wcmlhdGUuICBUaGFua3MgdG8gRGF2aWQgWnljaCBh dCBVbml2ZXJzaXR5IG9mIElsbGlub2lzCiAgZm9yIHJlcG9ydGluZyB0aGlzIGlzc3VlLiAgW0lT Qy1CdWdzICMyNDk2MF0KICBPbmUgQ1ZFIG51bWJlciBmb3IgZWFjaCBjbGFzcyBvZiBwYWNrZXQu CiAgQ1ZFLTIwMTEtMjc0OAogIENWRS0yMDExLTI3NDkKCi0gRml4IHRoZSBjb2RlIHRoYXQgY2hl Y2tzIGZvciBhbiBleGlzdGluZyBERE5TIHRyYW5zYWN0aW9uIHRvIGNhbmNlbAogIHdoZW4gcmVt b3ZpbmcgREROUyBpbmZvcm1hdGlvbiwgc28gdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHdpdGggdGhl CiAgcHJvY2Vzc2luZyBpZiB3ZSBoYXZlIGEgbGVhc2UgZXZlbiBpZiBpdCBkb2Vzbid0IGhhdmUg YW4gb3V0c3RhbmRpbmcKICB0cmFuc2FjdGlvbi4gIFtJU0MtQnVncyAjMjQ2ODJdCgotIEFkZCBB TV9NQUlOVEFJTkVSX01PREUgdG8gY29uZmlndXJlLmFjIHRvIGF2b2lkIHJlYnVpbGRpbmcKICBj b25maWd1cmF0aW9uIGZpbGVzLiAgW0lTQy1CdWdzICMyNDEwN10KCi0gQWRkIHN1cHBvcnQgZm9y IHBhc3NpbmcgREROUyBpbmZvcm1hdGlvbiB0byBhIEROUyBzZXJ2ZXIgb3ZlcgogIGFuIElQdjYg YWRkcmVzcy4gIFtJU0MtQnVncyAjMjI2NDddCgotIEVuaGFuY2VkIHBhdGNoIGZvciAyMzU5NSB0 byBoYW5kbGUgSVB2NCBmaXhlZCBhZGRyZXNzZXMgbW9yZQogIGNsZWFubHkuICBbSVNDLUJ1Z3Mg IzIzNTk1XQoKISBBZGQgYSBjaGVjayBmb3IgYSBudWxsIHBvaW50ZXIgYmVmb3JlIGNhbGxpbmcg dGhlIHJlZ2V4ZWMgZnVuY3Rpb24uCiAgV2l0aG91dCB0aGlzIGNoZWNrIHdlIGNvdWxkLCB1bmRl ciBzb21lIGNpcmN1bXN0YW5jZXMsIHBhc3MKICBhIG51bGwgcG9pbnRlciB0byB0aGUgcmVnZXhl YyBmdW5jdGlvbiBjYXVzaW5nIGl0IHRvIHNlZ2ZhdWx0LgogIFRoYW5rcyB0byBhIHJlcG9ydCBm cm9tIEJsdWVDYXQgTmV0d29ya3MuCiAgW0lTQy1CdWdzICMyNjcwNF0uCiAgQ1ZFOiBDVkUtMjAx MS00NTM5CgohIE1vZGlmeSB0aGUgREROUyBoYW5kbGluZyBjb2RlLiAgSW4gYSBwcmV2aW91cyBw YXRjaCB3ZSBhZGRlZCBsb2dnaW5nCiAgY29kZSB0byB0aGUgREROUyBoYW5kbGluZy4gIFRoaXMg Y29kZSBpbmNsdWRlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBpdAogIHRvIGF0dGVtcHQgdG8gZGVyZWZl cmVuY2UgYSBOVUxMIHBvaW50ZXIgYW5kIGV2ZW50dWFsbHkgc2VnZmF1bHQuCiAgV2hpbGUgcmV2 aWV3aW5nIHRoZSBjb2RlIGFzIHdlIGFkZHJlc3NlZCB0aGlzIHByb2JsZW0sIHdlIGRldGVybWlu ZWQKICB0aGF0IHNvbWUgb2YgdGhlIHVwZGF0ZXMgdG8gdGhlIGxlYXNlIHN0cnVjdHVyZXMgd291 bGQgbm90IHdvcmsgYXMKICBwbGFubmVkIHNpbmNlIHRoZSBzdHJ1Y3R1cmVzIGJlaW5nIHVwZGF0 ZWQgd2VyZSBpbiB0aGUgcHJvY2VzcyBvZgogIGJlaW5nIGZyZWVkOiB0aGVzZSB1cGRhdGVzIHdl cmUgcmVtb3ZlZC4gIEluIGFkZGl0aW9uIHdlIHJlbW92ZWQgYW4KICBpbmNvcnJlY3QgY2FsbCB0 byB0aGUgREROUyByZW1vdmFsIGZ1bmN0aW9uIHRoYXQgY291bGQgY2F1c2UgYSBmYWlsdXJlCiAg ZHVyaW5nIHRoZSByZW1vdmFsIG9mIERETlMgaW5mb3JtYXRpb24gZnJvbSB0aGUgRE5TIHNlcnZl ci4KICBUaGFua3MgdG8gSmFzcGVyIEpvbmdtYW5zIGZvciByZXBvcnRpbmcgdGhpcyBpc3N1ZS4K ICBbSVNDLUJ1Z3MgIzI3MDc4XQogIENWRTogQ1ZFLTIwMTEtNDg2OAoKLSBGaXhlZCB0aGUgY29k ZSB0aGF0IGNoZWNrcyBpZiBhbiBhZGRyZXNzIHRoZSBzZXJ2ZXIgaXMgcGxhbm5pbmcKICB0byBo YW5kIG91dCBpcyBpbiBhIHJlc2VydmVkIHJhbmdlLiAgVGhpcyB3b3VsZCBhcHBlYXIgYXMKICB0 aGUgc2VydmVyIGJlaW5nIG91dCBvZiBhZGRyZXNzZXMgaW4gcG9vbHMgd2l0aCBwYXJ0aWN1bGFy IHJhbmdlcy4KICBbSVNDLUJ1Z3MgIzI2NDk4XQoKLSBJbiB0aGUgREROUyBjb2RlIGhhbmRsZSBl cnJvciBjb25kaXRpb25zIG1vcmUgZ3JhY2VmdWxseSBhbmQgYWRkIG1vcmUKICBsb2dnaW5nIGNv ZGUuICBUaGUgbWFqb3IgY2hhbmdlIGlzIHRvIGhhbmRsZSB1bmV4cGVjdGVkIGNhbmNlbCBldmVu dHMKICBmcm9tIHRoZSBETlMgY2xpZW50IGNvZGUuCiAgW0lTQy1CdWdzICMyNjI4N10KCi0gVGlk eSB1cCB0aGUgcmVjZWl2ZSBjYWxscyBhbmQgZWxpbWluYXRlIHRoZSBuZWVkIGZvciBmb3VuZF9w a3QuCiAgW0lTQy1CdWdzICMyNTA2Nl0KCi0gQWRkIHN1cHBvcnQgZm9yIEluZmluaWJhbmQgb3Zl ciBzb2NrZXRzIHRvIHRoZSBzZXJ2ZXIgYW5kCiAgcmVsYXkgY29kZS4gIFdlJ3ZlIHRlc3RlZCB0 aGlzIG9uIFNvbGFyaXMgYW5kIGhvcGUgdG8gZXhwYW5kCiAgc3VwcG9ydCBmb3IgSW5maW5pYmFu ZCBpbiB0aGUgZnV0dXJlLiAgVGhpcyBwYXRjaCBhbHNvIGNvcnJlY3RzCiAgc29tZSBpc3N1ZXMg d2UgZm91bmQgaW4gdGhlIHNvY2tldCBjb2RlLgogIFtJU0MtQnVncyAjMjQyNDVdCgotIEFkZCBh IGNvbXBpbGUgdGltZSBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBub3JldHVybiBhdHRy aWJ1dGUKICBhbmQgdXNlIGl0IGZvciBsb2dfZmF0YWwgaWYgaXQncyBhdmFpbGFibGUuICBUaGlz IHdpbGwgaGVscCBjb2RlCiAgY2hlY2tpbmcgcHJvZ3JhbXMgdG8gZWxpbWluYXRlIGZhbHNlIHBv c2l0aXZlcy4KICBbSVNDLUJ1Z3MgIzI3NTM5XQoKLSBGaXhlZCBtYW55IGNvbXBpbGF0aW9uIHBy b2JsZW1zICgic2V0LCBidXQgbm90IHVzZWQiIHdhcm5pbmdzKSBmb3IKICBnY2MgNC42IHRoYXQg bWF5IGFmZmVjdCBVYnVudHUgMTEuMTAgdXNlcnMuIFtJU0MtQnVncyAjMjc1ODhdCgotIE1vZGlm eSB0aGUgY29kZSB0aGF0IGRldGVybWluZXMgaWYgYW4gb3V0c3RhbmRpbmcgREROUyByZXF1ZXN0 CiAgc2hvdWxkIGJlIGNhbmNlbGxlZC4gIFRoaXMgcGF0Y2ggcmVzdWx0cyBpbiBjYW5jZWxsaW5n IHRoZQogIG91dHN0YW5kaW5nIHJlcXVlc3QgbGVzcyBvZnRlbi4gIEl0IGZpeGVzIHRoZSBwcm9i bGVtIGNhdXNlZAogIGJ5IGEgY2xpZW50IGRvaW5nIGEgcmVsZWFzZSB3aGVyZSAgdGhlIFRYVCBh bmQgUFRSIHJlY29yZHMKICB3ZXJlbid0IHJlbW92ZWQgZnJvbSB0aGUgRE5TLgogIFtJU0MtQlVH UyAjMjc4NThdCgotIFVzZSBvZmZzZXRvZigpIGluc3RlYWQgb2Ygc2l6ZW9mKCkgdG8gZ2V0IHRo ZSBzaXplcyBmb3IKZGhjcHY2X3JlbGF5X3BhY2tldAogIGFuZCBkaGNwdjZfcGFja2V0IGluIHNl dmVyYWwgbW9yZSBwbGFjZXMuICBUaGFua3MgdG8gYSByZXBvcnQgZnJvbQogIEJydW5vIFZlcnN0 dXlmdCBhbmQgVmluY2VudCBEZW1hZXJ0ZWxhZXJlIG9mIEV4Y2VudGlzLgogIFtJU0MtQnVncyAj Mjc5NDFdCgotIFJlbW92ZSBvdXRkYXRlZCBub3RlIGluIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUg Ym9vdHAga2V5d29yZCBhYm91dCB0aGUKICBvcHRpb24gbm90IHNhdGlzZnlpbmcgdGhlIHJlcXVp cmVtZW50IG9mIGZhaWxvdmVyIHBlZXJzIGZvciBkZW55aW5nCiAgZHluYW1pYyBib290cCBjbGll bnRzLgogIFtJU0MtYnVncyAjMjg1NzRdCgotIE11bHRpcGxlIGl0ZW1zIHRvIGNsZWFuIHVwIElQ djYgYWRkcmVzcyBwcm9jZXNzaW5nLgogIFdoZW4gcHJvY2Vzc2luZyBhbiBJQSB0aGF0IHdlJ3Zl IHNlZW4gY2hlY2sgdG8gc2VlIGlmIHRoZQogIGFkZHJlc3NlcyBhcmUgdXNhYmxlIChub3QgaW4g dXNlIGJ5IHNvbWVib2R5IGVsc2UpIGJlZm9yZQogIGhhbmRpbmcgaXQgb3V0LgogIFdoZW4gcmVh ZGluZyBpbiBsZWFzZXMgZnJvbSB0aGUgZmlsZSBkaXNjYXJkIGV4cGlyZWQgYWRkcmVzc2VzLgog IFdoZW4gcGlja2luZyBhbiBhZGRyZXNzIGZvciBhIGNsaWVudCBpbmNsdWRlIHRoZSBJQSBJRCBp bgogIGFkZGl0aW9uIHRvIHRoZSBjbGllbnQgSUQgdG8gZ2VuZXJhbGx5IHBpY2sgZGlmZmVyZW50 IGFkZHJlc3NlcwogIGZvciBkaWZmZXJlbnQgSUFzLgogIFtJU0MtQnVncyAjMjMxMzhdIFtJU0Mt QnVncyAjMjc5NDVdIFtJU0MtQnVncyAjMjU1ODZdCiAgW0lTQy1CdWdzICMyNzY4NF0KCi0gUmVt b3ZlIHVubmVjZXNzYXJ5IGNoZWNrcyBpbiB0aGUgbGVhc2UgcXVlcnkgY29kZSBhbmQgY2xlYW4g dXAKICBzZXZlcmFsIGNvbXBpbGVyIGlzc3VlcyAoc29tZSBkZXJlZmVyZW5jZXMgb2YgTlVMTCBh bmQgdHJlYXRpbmcKICBhbiBpbnQgYXMgYSBib29sZWFuKS4KICBbSVNDLUJ1Z3MgIzI2MjAzXQoK LSBGaXggdGhlIE5BIGFuZCBQRCBhbGxvY2F0aW9uIGNvZGUgdG8gaGFuZGxlIHRoZSBjYXNlIHdo ZXJlIGEgY2xpZW50CiAgcHJvdmlkZXMgYSBwcmVmZXJlbmNlIGFuZCB0aGUgc2VydmVyIGRvZXNu J3QgaGF2ZSBhbnkgYWRkcmVzc2VzIG9yCiAgcHJlZml4ZXMgYXZhaWxhYmxlLiAgUHJldmlvdXNs eSB0aGUgc2VydmVyIGlnbm9yZWQgdGhlIHJlcXVlc3Qgd2l0aAogIHRoaXMgcGF0Y2ggaXQgcmVw bGllcyB3aXRoIGEgTm9BZGRyc0F2YWlsIG9yIE5vUHJlZml4QXZhaWwgcmVzcG9uc2UuCiAgQnkg ZGVmYXVsdCB0aGUgY29kZSBwZXJmb3JtcyBhY2NvcmRpbmcgdG8gdGhlIGVycmF0YSBvZiBBdWd1 c3QgMjAxMAogIGZvciBSRkMgMzMxNSBzZWN0aW9uIDE3LjIuMjsgdG8gZW5hYmxlIHRoZSBwcmV2 aW91cyBzdHlsZSBzZWUgdGhlCiAgc2VjdGlvbiBvbiBSRkMzMzE1X1BSRV9FUlJBVEFfMjAxMF8w OCBpbiBpbmNsdWRlcy9zaXRlLmguICBUaGlzIG9wdGlvbgogIG1heSBiZSByZW1vdmVkIGluIHRo ZSBmdXR1cmUuCiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0IGZvciB0aGUgcGF0 Y2guCiAgW0lTQy1CdWdzICMyMjY3Nl0KCi0gRml4IHVwIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHN0 YXRpYyBhbmFseXNpcy4KICBBIHBvdGVudGlhbCBtZW1vcnkgbGVhayBhbmQgTlVMTCBkZXJlZmVy ZW5jZSBpbiBvbWFwaS4KICBUaGUgdXNlIG9mIGEgYm9vbGVhbiB0ZXN0IGluc3RlYWQgb2YgYSBi aXR3aXNlIHRlc3QgaW4gZHN0LgogIFtJU0MtQnVncyAjMjg5NDFdCgotIFJvdGF0ZSB0aGUgbGVh c2UgZmlsZSB3aGVuIHJ1bm5pbmcgaW4gdjYgbW9kZS4KICBUaGFua3MgdG8gQ2hyaXN0b3BoIE1v ZW5jaC1UZWdlZGVyIGF0IEFzdGFybyBmb3IgdGhlCiAgcmVwb3J0IGFuZCB0aGUgZmlyc3QgdmVy c2lvbiBvZiB0aGUgcGF0Y2guCiAgW0lTQy1CdWdzICMyNDg4N10KCi0gQ29ycmVjdCBjb2RlIHRv IGNhbGN1bGF0ZSB0aW1pbmcgdmFsdWVzIGluIGNsaWVudCB0byBjb21wYXJlCiAgcmViaW5kIHZh bHVlIHRvIGluZmluaXR5IGluc3RlYWQgb2YgcmVuZXcgdmFsdWUuCiAgVGhhbmtzIHRvIENoZW5k YSBIdWFuZyBmcm9tIEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMaW1pdGVkCiAgZm9yIHJlcG9ydGlu ZyB0aGlzIGlzc3VlLgogIFtJU0MtQnVncyAjMjkwNjJdCgotIEZpeCBzb21lIGlzc3VlcyBpbiB0 aGUgY29kZSBmb3IgcGFyc2luZyBhbmQgcHJpbnRpbmcgb3B0aW9ucy4KICBbSVNDLUJ1Z3MgIzIy NjI1XSAtIHByb3Blcmx5IHByaW50IG9wdGlvbnMgdGhhdCBoYXZlIHNldmVyYWwgZmllbGRzCiAg Zm9sbG93ZWQgYnkgYW4gYXJyYXkgb2Ygc29tZXRoaW5nIGZvciBleGFtcGxlICJmSWEiCiAgW0lT Qy1CdWdzICMyNzI4OV0gLSBwcm9wZXJseSBwYXJzZSBvcHRpb25zIGluIGRlY2xhcmF0aW9ucyB0 aGF0IGhhdmUKICBzZXZlcmFsIGZpZWxkcyBmb2xsb3dlZCBieSBhbiBhcnJheSBvZiBzb21ldGhp bmcgZm9yIGV4YW1wbGUgImZJYSIKICBbSVNDLUJ1Z3MgIzI3Mjk2XSAtIHByb3Blcmx5IGRldGVy bWluZSBpZiB3ZSBwYXJzZWQgYSAxNiBvciAzMiBiaXQKICB2YWx1ZSBpbiBldmFsdWF0ZV9udW1l cmljX2V4cHJlc3Npb24gKGV4dHJhY3QtaW50KS4KICBbSVNDLUJ1Z3MgIzI3MzE0XSAtIHByb3Bl cmx5IHBhcnNlIGEgemVybyBsZW5ndGggb3B0aW9uIGZyb20KICBhIGxlYXNlIGZpbGUuICBUaGFu a3MgdG8gTWFyaXVzIFRvbWFzY2hld3NraSBmcm9tIFNVU0UgZm9yIHRoZSByZXBvcnQKICBhbmQg cHJvdG90eXBlIHBhdGNoIGZvciB0aGlzIHRpY2tldCBhcyB3ZWxsIGFzIHRpY2tldCAyNzI4OS4K CiEgUHJldmlvdXNseSB0aGUgc2VydmVyIGNvZGUgd2FzIHJlbGF4ZWQgdG8gYWxsb3cgcGFja2V0 cyB3aXRoIHplcm8KICBsZW5ndGggY2xpZW50IGlkcyB0byBiZSBwcm9jZXNzZWQuICBVbmRlciBz b21lIHNpdHVhdGlvbnMgdXNlIG9mCiAgemVybyBsZW5ndGggY2xpZW50IGlkcyBjYW4gY2F1c2Ug dGhlIHNlcnZlciB0byBnbyBpbnRvIGFuIGluZmluaXRlCiAgbG9vcC4gIEFzIHN1Y2ggaWRzIGFy ZSBub3QgdmFsaWQgYWNjb3JkaW5nIHRvIFJGQyAyMTMyIHNlY3Rpb24gOS4xNAogIHRoZSBzZXJ2 ZXIgbm8gbG9uZ2VyIGFjY2VwdHMgdGhlbS4gIENsaWVudCBpZHMgd2l0aCBhIGxlbmd0aCBvZiAx CiAgYXJlIGFsc28gaW52YWxpZCBidXQgdGhlIHNlcnZlciBzdGlsbCBhY2NlcHRzIHRoZW0gaW4g b3JkZXIgdG8KICBtaW5pbWl6ZSBkaXNydXB0aW9uLiAgVGhlIHJlc3RyaWN0aW9uIHdpbGwgbGlr ZWx5IGJlIHRpZ2h0ZW5lZCBpbgogIHRoZSBmdXR1cmUgdG8gZGlzYWxsb3cgaWRzIHdpdGggYSBs ZW5ndGggb2YgMS4KICBUaGFua3MgdG8gTWFya3VzIEhpZXRhdmEgb2YgQ29kZW5vbWljb24gQ1JP U1MgcHJvamVjdCBmb3IgdGhlCiAgZmluZGluZyB0aGlzIGlzc3VlIGFuZCBDRVJULUZJIGZvciB2 dWxuZXJhYmlsaXR5IGNvb3JkaW5hdGlvbi4KICBbSVNDLUJ1Z3MgIzI5ODUxXQogIENWRTogQ1ZF LTIwMTItMzU3MQoKISBXaGVuIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIERVSUQgZnJvbSBhIGNs aWVudCBpZCBvcHRpb24KICBpbnRvIGEgaGFyZHdhcmUgYWRkcmVzcyBoYW5kbGUgdW5leHBlY3Rl ZCBjbGllbnQgaWRzIHByb3Blcmx5LgogIFRoYW5rcyB0byBNYXJrdXMgSGlldGF2YSBvZiBDb2Rl bm9taWNvbiBDUk9TUyBwcm9qZWN0IGZvciB0aGUKICBmaW5kaW5nIHRoaXMgaXNzdWUgYW5kIENF UlQtRkkgZm9yIHZ1bG5lcmFiaWxpdHkgY29vcmRpbmF0aW9uLgogIFtJU0MtQnVncyAjMjk4NTJd CiAgQ1ZFOiBDVkUtMjAxMi0zNTcwCgohIEEgcGFpciBvZiBtZW1vcnkgbGVha3Mgd2VyZSBmb3Vu ZCBhbmQgZml4ZWQuICBUaGFua3MgdG8KICBHbGVuIEV1c3RhY2Ugb2YgTWFzc2V5IFVuaXZlcnNp dHksIE5ldyBaZWFsYW5kIGZvciBmaW5kaW5nCiAgdGhpcyBpc3N1ZS4KICBbSVNDLUJ1Z3MgIzMw MDI0XQogIENWRTogQ1ZFLTIwMTItMzk1NAoKLSBFeGlzdGluZyBsZWdhY3kgdW5pdC10ZXN0cyBo YXZlIGJlZW4gbWlncmF0ZWQgdG8gQXV0b21hdGVkIFRlc3QKICBGcmFtZXdvcmsgKEFURikuIFNl dmVyYWwgbmV3IHRlc3RzIGhhdmUgYmVlbiBkZXZlbG9wZWQuIFRvIGVuYWJsZQogIHVuaXQtdGVz dHMsIHBsZWFzZSB1c2UgLS13aXRoLWF0ZiBpbiBjb25maWd1cmUgc2NyaXB0LiBBIERldmVsb3Bl cidzCiAgR3VpZGUgaGFzIGJlZW4gYWRkZWQuIFRvIGdlbmVyYXRlIGl0LCBwbGVhc2UgdXNlIG1h a2UgZGV2ZWwgaW4KICB0aGUgZG9jIGRpcmVjdG9yeS4gSXQgaXMgY3VycmVudGx5IGluIGVhcmx5 IHN0YWdlcyBvZiBkZXZlbG9wbWVudCwKICBidXQgaXMgZXhwZWN0ZWQgdG8gZ3JvdyBpbiB0aGUg bmVhciBmdXR1cmUuIFtJU0MtQnVncyAyNTkwMV0KCiEgQW4gaXNzdWUgd2l0aCB0aGUgdXNlIG9m IGxlYXNlIHRpbWVzIHdhcyBmb3VuZCBhbmQgZml4ZWQuICBNYWtpbmcKICBjZXJ0YWluIGNoYW5n ZXMgdG8gdGhlIGVuZCB0aW1lIG9mIGFuIElQdjYgbGVhc2UgY291bGQgY2F1c2UgdGhlCiAgc2Vy dmVyIHRvIGFib3J0LiAgVGhhbmtzIHRvIEdsZW4gRXVzdGFjZSBvZiBNYXNzZXkgVW5pdmVyc2l0 eSwKICBOZXcgWmVhbGFuZCBmb3IgZmluZGluZyB0aGlzIGlzc3VlLgogIFtJU0MtQnVncyAjMzAy ODFdCiAgQ1ZFOiBDVkUtMjAxMi0zOTU1CgotIFVwZGF0ZSB0aGUgbWVtb3J5IGxlYWthZ2UgZGVi dWcgY29kZSB0byB3b3JrIHdpdGggdjYuCiAgW0lTQy1CdWdzICMzMDI5N10KCi0gUmVsYXggdGhl IHJlcXVpcmVtZW50cyBmb3IgZGVsZXRpbmcgYW4gQSBvciBBQUFBIHJlY29yZC4KICBQcmV2aW91 c2x5IHRoZSBERE5TIHJlbW92YWwgY29kZSByZXF1aXJlZCBib3RoIHRoZSBBIG9yIEFBQUEKICBy ZWNvcmQgYW5kIHRoZSBUWFQgcmVjb3JkIHRvIGV4aXN0LiAgVGhpcyByZXF1aXJlbWVudCBjb3Vs ZAogIGNhdXNlIHByb2JsZW1zIGlmIHNvbWV0aGluZyBpbnRlcnJ1cHRlZCB0aGUgcmVtb3ZhbCBs ZWF2aW5nCiAgdGhlIFRYVCByZWNvcmQgYWxvbmUuICBUaGlzIHJlbGF4YXRpb24gd2FzIGNvZGlm aWVkIGluIFJGQyA0NzAzLgogIFtJU0MtQnVncyAjMzA3MzRdCgotIE1vZGlmeSB0aGUgZmFpbG92 ZXIgY29kZSB0byBoYW5kbGUgaW5jb3JyZWN0IHBlZXIgbmFtZXMKICBiZXR0ZXIuICBQcmV2aW91 c2x5IHRoZSBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmFtZSBtaWdodAogIGhhdmUgYmVlbiBmcmVl ZCBpbmFwcHJvcHJpYXRlbHkgaW4gc29tZSBjYXNlcyBhbmQgbm90CiAgZnJlZWQgaW4gb3RoZXIg Y2FzZXMuCiAgW0lTQy1CdWdzICMzMDMyMF0KCi0gQWRkIGEgY29uZmlndXJlIG9wdGlvbiwgZW5h YmxlLXNlY3MtYnl0ZW9yZGVyLCB0byBkZWFsIHdpdGgKICBjbGllbnRzIHRoYXQgZG8gdGhlIGJ5 dGUgb3JkZXJpbmcgb24gdGhlIHNlY3MgZmllbGQgaW5jb3JyZWN0bHkuCiAgVGhpcyBmaWVsZCBz aG91bGQgYmUgaW4gbmV0d29yayBieXRlIG9yZGVyIGJ1dCBzb21lIGNsaWVudHMKICBnZXQgaXQg d3JvbmcuICBXaGVuIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgdGhlIHNlcnZlciB3aWxsIGV4YW1p bmUKICB0aGUgc2VjcyBmaWVsZCBhbmQgaWYgaXQgbG9va3Mgd3JvbmcgKGhpZ2ggYnl0ZSBub24g emVybyBhbmQgbG93CiAgYnl0ZSB6ZXJvKSBzd2FwIHRoZSBieXRlcy4gIFRoZSBkZWZhdWx0IGlz IGRpc2FibGVkLiAgVGhpcyBvcHRpb24KICBpcyBvbmx5IHVzZWZ1bCB3aGVuIGRvaW5nIGxvYWQg YmFsYW5jaW5nIHdpdGhpbiBmYWlsb3Zlci4KICBbSVNDLUJ1Z3MgIzI2MTA4XQoKLSBGaXggYSBz ZXQgb2YgaXNzdWVzIHRoYXQgd2VyZSBkaXNjb3ZlcmVkIHZpYSBhIGNvZGUgaW5zcGVjdGlvbgog IHRvb2wuICBUaGFua3MgdG8gSmlyaSBQb3BlbGthIGFuZCBUb21hcyBIb3p6YSBSZWQgSGF0IGZv ciB0aGUgbG9ncwogIGFuZCBwYXRjaGVzLgogIFtJU0MtQnVncyAjMjM4MzNdCgotIFBhcnNpbmcg dW5xdW90ZWQgYmFzZTY0IHN0cmluZ3MgaW1wcm92ZWQuIFBhcnNlciBub3cgcHJvcGVybHkgaGFu ZGxlcwogIHN0cmluZ3MgdGhhdCBjb250YWluIHJlc2VydmVkIG5hbWVzLiBbSVNDLUJ1Z3MgIzIz MDQ4XQoKLSBNb2RpZnkgdGhlIG5ha19sZWFzZSBmdW5jdGlvbiB0byBtYWtlIHNvbWUgYXR0ZW1w dHMgdG8gZmluZCBhCiAgc2VydmVyLWlkZW50aWZpZXIgb3B0aW9uIHRvIHVzZSBmb3IgdGhlIE5B Sy4KICBbSVNDLUJ1Z3MgIzI1Njg5XQoKLSBUaGUgY2xpZW50IG5vdyBwYXNzZXMgaW5mb3JtYXRp b24gYWJvdXQgdGhlIG9wdGlvbnMgaXQgcmVxdWVzdGVkCiAgZnJvbSB0aGUgc2VydmVyIHRvIHRo ZSBzY3JpcHQgY29kZSB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogIFRoZXNlIHZhcmlhYmxl cyBhcmUgb2YgdGhlIGZvcm0gcmVxdWVzdGVkXzxvcHRpb25fbmFtZT49MSB3aXRoCiAgdGhlIG9w dGlvbiBuYW1lIGJlaW5nIHRoZSBzYW1lIGFzIHVzZWQgaW4gdGhlIG5ld18qIGFuZCBvbGRfKgog IHZhcmlhYmxlcy4KICBbSVNDLUJ1Z3MgIzI5MDY4XQoKLSBBZGQgc3VwcG9ydCBmb3IgYSBzaW1w bGUgY2hlY2sgdGhhdCB0aGUgc2VydmVyIGlkIGluIGEgcmVxdWVzdCBtZXNzYWdlCiAgdG8gYSBm YWlsb3ZlciBwZWVyIG1hdGNoZXMgdGhlIHNlcnZlciBpZCBvZiB0aGUgc2VydmVyLiAgVGhpcyBz dXBwb3J0CiAgaXMgZW5hYmxlZCBieSBlZGl0aW5nIHRoZSBmaWxlIGluY2x1ZGVzL3NpdGUuaCBh bmQgdW5jb21tZW50aW5nIHRoZQogIGRlZmluaXRpb24gZm9yIFNFUlZFUl9JRF9DSEVDSy4gIFRo ZSBvcHRpb24gaGFzIHNldmVyYWwgcmVzdHJpY3Rpb25zCiAgYW5kIGlzc3VlcyAtIHBsZWFzZSBy ZWFkIHRoZSBjb21tZW50IGluIHRoZSBzaXRlLmggZmlsZSBiZWZvcmUKICBlbmFibGluZyBpdC4K ICBbSVNDLUJ1Z3MgIzMxNDYzXQoKLSBUaWR5IHVwIHNvbWUgY29tcGlsZXIgaXNzdWVzIGluIHRo ZSBkZWJ1ZyBjb2RlLgogIFtJU0MtQnVncyAjMjY0NjBdCgotIE1vdmUgdGhlIGRoY3BkLmNvbmYg ZXhhbXBsZSBmaWxlIHRvIGRoY3BkLmNvbmYuZXhhbXBsZSB0byBhdm9pZAogIG92ZXJ3cml0aW5n IHRoZSBkaGNwZC5jb25mIGZpbGUgd2hlbiBpbnN0YWxsaW5nIGEgbmV3IHZlcnNpb24gb2YKICBJ U0MgREhDUC4gIFRoZSB1c2VyIHdpbGwgbm93IG5lZWQgdG8gbWFudWFsIGNvcHkgYW5kIGVkaXQg dGhlCiAgZGhjcGQuY29uZiBmaWxlIGFzIGRlc2lyZWQuCiAgW0lTQy1CdWdzICMxOTMzN10KCi0g Q2hlY2sgdGhlIHN0YXR1cyB2YWx1ZSB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBjb25uZWN0 aW9uIHRvCiAgc2VlIGlmIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkLiAgSWYgaXQgYXBwZWFycyBj bG9zZWQgZG9uJ3QgdHJ5CiAgdG8gcmVhZCBmcm9tIGl0IGFnYWluLiAgVGhpcyBhdm9pZHMgYSBw b3RlbnRpYWwgYnVzeS13YWl0IGxpa2UKICBsb29wIHdoZW4gdGhlIHBlZXIgbmFtZXMgYXJlIG1p c21hdGNoZWQuCiAgW0lTQy1CdWdzICMzMTIzMV0KCi0gUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJs ZSB0byBrZWVwIGNvbXBpbGVycyBoYXBweS4KICBbSVNDLUJ1Z3MgIzMxOTgzXQoKLSBNb2RpZnkg dGVzdCBtYWtlZmlsZXMgdG8gYmUgbW9yZSBzaW1pbGFyIHRvIHN0YW5kYXJkIG1ha2VmaWxlcwog IGFuZCBjb21tZW50IG91dCBhIGN1cnJlbnRseSB1bnVzZWQgdGVzdC4KICBbSVNDLUJ1Z3MgIzMy MDg5XQoKLSBBZGRyZXNzIHN0YXRpYyBhbmFseXNpcyB3YXJuaW5ncy4KICBbSVNDLUJ1Z3MgIzMz NTEwXSBbSVNDLUJ1Z3MgIzMzNTExXQoKLSBTaWxlbmNlIGJlbmlnbiBzdGF0aWMgYW5hbHlzaXMg d2FybmluZ3MuCiAgW0lTQy1CdWdzICMzMzQyOF0KCi0gQWRkIGNoZWNrIGZvciA2NC1iaXQgcGFj a2FnZSBmb3IgYXRmLgogIFtJU0MtQnVncyAjMzIyMDZdCgotIFVzZSBuZXdlciBhdXRvKiB0b29s IHBhY2thZ2VzIGFuZCB0dXJuIG9uIFJGQ18zNTQyIHN1cHBvcnQgb24gTWFjIE9TLgogIFtJU0Mt QnVncyAjMjYzMDNdCgotIFJlbW92ZSBhIHZhcmlhYmxlIHdoZW4gaXQgaXNuJ3QgYmVpbmcgdXNl ZCBkdWUgdG8gI2lmZGVmcyB0byBhdm9pZAogIGEgY29tcGlsZXIgd2FybmluZyBvbiBTb2xhcmlz IHVzaW5nIEdDQy4KICBbSVNDLUJ1Z3MgIzMzMDMyXQoKLSBBZGQgYSBjaGVjayBmb3IgdG9vIG11 Y2ggd2hpdGVzcGFjZSBpbiBhIGNvbmZpZyBvciBsZWFzZSBmaWxlLgogIFRoYW5rcyB0byBQYW9s byBQZWxsZWdyaW5vIGZvciBmaW5kaW5nIHRoZSBpc3N1ZSBhbmQgYSBzdWdnZXN0aW9uCiAgZm9y IHRoZSBwYXRjaC4KICBbSVNDLUJ1Z3MgIzMzMzUxXQoKLSBGaXggc2V2ZXJhbCBwcm9ibGVtcyB3 aXRoIHVzaW5nIE9NQVBJIHRvIG1hbmlwdWxhdGUgY2xhc3MgYW5kIHN1YmNsYXNzCiAgb2JqZWN0 cy4KICBbSVNDLUJ1Z3MgIzI3NDUyXQoKLSBBZGRlZCBhIHNsZWVwIGNhbGwgYWZ0ZXIga2lsbGlu ZyB0aGUgb2xkIGNsaWVudCB0byBhbGxvdyB0aW1lCiAgZm9yIHRoZSBzb2NrZXRzIHRvIGJlIGNs ZWFuZWQuICBUaGlzIHNob3VsZCBhbGxvdyB0aGUgLXIgb3B0aW9uCiAgdG8gd29yayBtb3JlIGNv bnNpc3RlbnRseS4KICBbSVNDLUJ1Z3MgIzE4MTc1XQoKLSBNaXNzaW5nIGZpbGVzIGZvciBJU0Mg REhDUCBEZXZlbG9wZXIncyBHdWlkZSBhcmUgbm93IGluY2x1ZGVkIGluCiAgdGhlIHJlbGVhc2Ug dGFyYmFsbHMuIFRvIGdlbmVyYXRlIHRoaXMgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHVzZQogIG1h a2UgZGV2ZWwgY29tbWFuZCBpbiBkb2MgZGlyZWN0b3J5LiBbSVNDLUJ1Z3MgIzMyNzY3XQoKLSBV cGRhdGUgY2xpZW50IHNjcmlwdCBmb3IgdXNlIHdpdGggb3BlbndydC4KICBbSVNDLUJ1Z3MgIzI5 ODQzXQoKLSBGaXggdGhlIHNvY2tldCBoYW5kbGluZyBmb3IgREhDUHY2IGNsaWVudHMgdG8gYWxs b3cgbXVsdGlwbGUgaW5zdGFuY2VzCiAgb2YgYSBjbGllbnQgb24gYSBzaW5nbGUgbWFjaGluZSB0 byB3b3JrIHByb3Blcmx5LiAgUHJldmlvdXNseSBvbmx5CiAgb25lIGNsaWVudCB3b3VsZCByZWNl aXZlIHRoZSBwYWNrZXRzLiAgVGhhbmtzIHRvIEppcmkgUG9wZWxrYSBhdCBSZWQgSGF0CiAgZm9y IHRoZSBidWcgcmVwb3J0IGFuZCBhIHBvdGVudGlhbCBwYXRjaC4KICBbSVNDLUJ1Z3MgIzM0Nzg0 XQoKLSBBZGRlZCBzdXBwb3J0IGZvciBnZW50bGUgc2h1dGRvd24gYWZ0ZXIgc2lnbmFsIGlzIHJl Y2VpdmVkLgogIFtJU0MtQnVncyAjMzI2OTJdIFtJU0MtQnVncyAzNDk0NV0KCi0gRW5oYW5jZSB0 aGUgREhDUHY2IHNlcnZlciBsb2dnaW5nIHRvIGluY2x1ZGUgdGhlIGFkZHJlc3NlcyB0aGF0IGFy ZQphc3NpZ25lZAogIHRvIHRoZSBjbGllbnRzLgogIFtJU0MtQnVncyAjMjYzNzddCgotIEZpeCBh biBvcGVyYXRpb24gaW4gdGhlIERETlMgY29kZSB0byBiZSBhIGJpdHdpc2UgaW5zdGVhZCBvZiBs b2dpY2FsIG9yLgogIFtJU0MtQnVncyAjMzUxMzhdCgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEuMCAo bmV3IGZlYXR1cmVzKQoKLSBGYWlsb3ZlciBwb3J0IGNvbmZpZ3VyYXRpb24gY2FuIG5vdyBiZSBs ZWZ0IHRvIGRlZmF1bHRzIChwb3J0IDY0NykgYXMKICBkZXNjcmliZWQgaW4gdGhlIC0xMiByZXZp c2lvbiBvZiB0aGUgRmFpbG92ZXIgZHJhZnQgKGFuZCBhc3NpZ25lZCBieQogIElBTkEpLiAgVGhh bmtzIGluIHBhcnQgdG8gYSBwYXRjaCBmcm9tIERhdmlkIENhbnRyZWxsIGF0IFJlZCBIYXQuCgot IElmIGNvbmZpZ3VyZWQsIGRoY2xpZW50IG1heSBub3cgdHJhbnNtaXQgdG8gYW4gYW55Y2FzdCBN QUMgYWRkcmVzcywKICByYXRoZXIgdGhhbiB1c2luZyBhIGJyb2FkY2FzdCBhZGRyZXNzLiAgVGhh bmtzIHRvIGEgcGF0Y2ggZnJvbSBEYXZpZAogIENhbnRyZWxsIGF0IFJlZCBIYXQuCgotIEFkZGVk IGNsaWVudCBzdXBwb3J0IGZvciBzZXR0aW5nIGludGVyZmFjZSBNVFUgYW5kIG1ldHJpYywgdGhh bmtzIHRvCiAgUm95ICJVYmVyTG9yZCIgTWFycGxlcyA8cm95QG1hcnBsZXMubmFtZT4uCgotIEFk ZGVkIGNsaWVudCAtRCBvcHRpb24gdG8gc3BlY2lmeSBEVUlEIHR5cGUgdG8gc2VuZC4KCi0gQSBu ZXcgZmFpbG92ZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaGFzIGJlZW4gaW50cm9kdWNlZCBm b3IgdGhvc2UKICBlbnZpcm9ubWVudHMgd2hlcmUgREhDUCBzZXJ2ZXJzIGNhbiBiZSByZWFzb25h Ymx5IGd1YXJhbnRlZWQgdG8gYmUKICAiZG93biIgd2hlbiB0aGUgZmFpbG92ZXIgVENQIHNvY2tl dCBpcyBzZXZlcmVkLCAiYXV0by1wYXJ0bmVyLWRvd24iLgogIFRoaXMgcGFyYW1ldGVyIGlzIG5v dCBnZW5lcmFsbHkgc2FmZSwgYW5kIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQsIHNvCiAgcGxlYXNl IGNhcmVmdWxseSByZXZpZXcgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBwYXJhbWV0ZXIgaW4g dGhlCiAgZGhjcGQuY29uZig1KSBtYW5wYWdlIGJlZm9yZSBkZXRlcm1pbmluZyB0byB1c2UgaXQg eW91cnNlbGYuCgotIEFkZGVkIGEgY29uZmlndXJhdGlvbiBmdW5jdGlvbiwgJ2dldGhvc3RuYW1l KCknLCB3aGljaCBjYWxscyB0aGUgc3lzdGVtCiAgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSBh bmQgcHJlc2VudHMgdGhlIHJlc3VsdHMgYXMgYSBkYXRhIGV4cHJlc3Npb24uCiAgVGhpcyBmdW5j dGlvbiBjYW4gYmUgdXNlZCB0byBpbmNvcnBvcmF0ZSB0aGUgc3lzdGVtIGxldmVsIGhvc3RuYW1l IG9mCiAgdGhlIHN5c3RlbSB0aGUgREhDUCBzb2Z0d2FyZSBpcyBvcGVyYXRpbmcgb24gaW4gcmVz cG9uc2VzIG9yIHF1ZXJpZXMgKHN1Y2gKICBhcyBpbmNsdWRpbmcgYSBmYWlsb3ZlciBwYXJ0bmVy J3MgaG9zdG5hbWUgaW4gYSBkaGNwIG1lc3NhZ2Ugb3IgYmluZGluZwogIHNjb3BlLCBvciBoYXZp bmcgYSBESENQIGNsaWVudCBzZW5kIGFueSBzeXN0ZW0gaG9zdG5hbWUgaW4gdGhlCmhvc3QtbmFt ZSBvcgogIEZRRE4gb3B0aW9ucyBieSBkZWZhdWx0KS4KCi0gVGhlIGRoY3AtcmVuZXdhbC10aW1l IGFuZCBkaGNwLXJlYmluZGluZy10aW1lIG9wdGlvbnMgbWF5IG5vdyBiZQpjb25maWd1cmVkCiAg Zm9yIERIQ1B2NCBvcGVyYXRpb24gYW5kIHVzZWQgaW5kZXBlbmRlbnRseSBvZiB0aGUgZGhjcC1s ZWFzZS10aW1lCiAgY2FsY3VsYXRpb25zLiAgSW52YWxpZCByZW5ldyBhbmQgcmViaW5kaW5nIHRp bWVzIChlLmcuLCBncmVhdGVyIHRoYW4gdGhlCiAgZGV0ZXJtaW5lZCBsZWFzZSB0aW1lKSBhcmUg b21pdHRlZC4KCi0gUHJvY2Vzc2luZyB0aGUgREhDUCB0byBETlMgc2VydmVyIHRyYW5zYWN0aW9u cyBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbiwKICB0aGUgREhDUCBzZXJ2ZXIgb3IgY2xpZW50 IGNhbiBub3cgY29udGludWUgd2l0aCBpdHMgcHJvY2Vzc2luZyB3aGlsZQogIGF3YWl0aW5nIHJl cGxpZXMgZnJvbSB0aGUgRE5TIHNlcnZlci4KCi0gVGhlICdoYXJkd2FyZSBbZXRoZXJuZXR8ZXRj XSAuLi47JyBwYXJhbWV0ZXIgaW4gaG9zdCByZWNvcmRzIGhhcyBiZWVuCiAgZXh0ZW5kZWQgdG8g YXR0ZW1wdCB0byBtYXRjaCBESENQdjYgY2xpZW50cyBieSB0aGUgbGFzdCBvY3RldHMgb2YgYQog IERVSUQtTEwgb3IgRFVJRC1MTFQgcHJvdmlkZWQgYnkgdGhlIGNsaWVudC4KCgkJCUNoYW5nZXMg c2luY2UgNC4xLjAgKGJ1ZyBmaXhlcykKCi0gUmVtb3ZlIGluZmluaXRlIGxvb3AgaW4gdG9rZW5f cHJpbnRfaW5kZW50X2NvbmNhdCgpLgoKLSBWYWxpZGF0ZSB0aGUgYXJndW1lbnQgdG8gdGhlIC1w IG9wdGlvbi4KCi0gVGhlIG5vdG9yaW91cyAnb3B0aW9uIDx1bmtub3duPiAuLi4gbGFyZ2VyIHRo YW4gYnVmZmVyJyBsb2cgbGluZSwKICB3aGljaCBpcyBzZWVuIGluIHNvbWUgbWFsZm9ybWVkIERI Q1AgY2xpZW50IHBhY2tldHMsIHdhcyBtb2RpZmllZC4KICBJdCBub3cgbG9ncyB0aGUgdW5pdmVy c2UgbmFtZSwgYW5kIGRvZXMgbm90IGxvZyB0aGUgbGVuZ3RoIHZhbHVlcwogICh3aGljaCBhcmUg Ym9ndXMgY29ycnVwdGlvbiByZWFkIGZyb20gdGhlIHBhY2tldCBhbnl3YXkpLiAgSXQgYWxzbwog IGNhcnJpZXMgYSBob3BlZnVsbHkgbW9yZSB1c2VmdWwgZXhwbGFuYXRpb24uCgotIFN1cHByZXNz IHNwdXJpb3VzIHdhcm5pbmdzIGZyb20gY29uZmlndXJlIGFib3V0IC0tZGF0YXJvb3RkaXIKCi0g QSBidWcgd2FzIGZpeGVkIHRoYXQgY2F1c2VkIHRoZSBzZXJ2ZXIgbm90IHRvIGFuc3dlciBzb21l IHZhbGlkIFNvbGljaXQKICBhbmQgUmVxdWVzdCBwYWNrZXRzLCBpZiB0aGUgZHluYW1pYyByYW5n ZSBjb3ZlcmluZyBhbnkgcmVxdWVzdGVkIGFkZHJlc3NlcwogIGhhZCBiZWVuIGRlbGV0ZWQgZnJv bSBjb25maWd1cmF0aW9uLgoKLSBVcGRhdGUgdGhlIGNvZGUgdG8gZGVhbCB3aXRoIEdDQyA0LjMu ICBUaGlzIGluY2x1ZGVkIHR3byBzZXRzIG9mIGNoYW5nZXMuCiAgVGhlIGZpcnN0IGlzIHRvIHRo ZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGluY2x1ZGUgdGhlIHVzZSBvZgogIEFDX1VTRV9TWVNU RU1fRVhURU5TSU9OUy4gIFRoZSBzZWNvbmQgaXMgdG8gZGVhbCB3aXRoIHJldHVybiB2YWx1ZXMg dGhhdAogIHdlcmUgYmVpbmcgaWdub3JlZC4KCi0gVGhlIGRiLXRpbWUtZm9ybWF0IG9wdGlvbiB3 YXMgZG9jdW1lbnRlZCBpbiBtYW5wYWdlcy4KCi0gVXNpbmcgcmVzZXJ2ZWQgbGVhc2VzIG5vIGxv bmdlciByZXN1bHRzIGluICdsZWFzZSB3aXRoIGJpbmRpbmcgc3RhdGUKICBmcmVlIG5vdCBvbiBp dHMgcXVldWUnIGVycm9yIG1lc3NhZ2VzLCB0aGFua3MgdG8gYSBwYXRjaCBmcm9tIEZyb2RlCiAg Tm9yZGFobC4KCi0gRml4IGEgYnVpbGQgZXJyb3IgaW4gZGhjcmVsYXksIHVzaW5nIG9sZGVyIHZl cnNpb25zIG9mIGdjYyB3aXRoCiAgZGhjcHY2IGRpc2FibGVkLgoKLSBUd28gdW5pbml0aWFsaXpl ZCBzdGFjayBzdHJ1Y3R1cmVzIGFyZSBub3cgbWVtc2V0IHRvIHplcm8sIHRoYW5rcyB0byBhCiAg cGF0Y2ggZnJvbSBEYXZpZCBDYW50cmVsbCBhdCBSZWQgSGF0LgoKLSBGaXhlZCBhIGNvc21ldGlj IGJ1ZyB3aGVyZSBwcmV0dHktcHJpbnRpbmcgdmFsaWQgZG9tYWluLXNlYXJjaCBvcHRpb25zCndv dWxkCiAgcmVzdWx0IGluIGFuIGVycm9uZW91cyBlcnJvciBsb2cgbWVzc2FnZSAoJ2dhcmJhZ2Ug aW4gZm9ybWF0IHN0cmluZycpLgoKLSBBIGJ1ZyBpbiBETFBJIHBhY2tldCB0cmFuc21pc3Npb24g KFNvbGFyaXMsIEhQL1VYKSB0aGF0IGNhdXNlZCB0aGUgc2VydmVyCiAgdG8gc3RvcCByZWNlaXZp bmcgcGFja2V0cyBpcyBmaXhlZC4gIFRoZSBzYW1lIGZpeCBhbHNvIG1lYW5zIHRoYXQgdGhlIE1B QwogIGFkZHJlc3Mgd2lsbCBubyBsb25nZXIgYXBwZWFyICdib2d1cycgb24gRExQSS1iYXNlZCBz eXN0ZW1zLgoKLSBBIGJ1ZyBpbiBzZWxlY3QgaGFuZGxpbmcgd2FzIGRpc2NvdmVyZWQgd2hlcmUg dGhlIHJlc3VsdHMgb2Ygb25lIHNlbGVjdCgpCiAgY2FsbCB3ZXJlIGRpc2NhcmRlZCwgY2F1c2lu ZyB0aGUgc2VydmVyIHRvIHByb2Nlc3MgdGhlIG5leHQgc2VsZWN0KCkgY2FsbAogIGFuZCB1c2Ug bW9yZSBzeXN0ZW0gY2FsbHMgdGhhbiByZXF1aXJlZC4gIFRoaXMgaGFzIGJlZW4gcmVwYWlyZWQg LSB0aGUKICBzb2NrZXRzIHdpbGwgYmUgaGFuZGxlZCBhZnRlciB0aGUgZmlyc3QgcmV0dXJuIGZy b20gc2VsZWN0KCksIHJlc3VsdGluZyBpbgogIGZld2VyIHN5c3RlbSBjYWxscy4KCi0gVGhlIHVw ZGF0ZS1jb25mbGljdC1kZXRlY3Rpb24gZmVhdHVyZSB3b3VsZCBsZWF2ZSBhbiBGUUROIHVwZGF0 ZWQgd2l0aG91dAogIGEgREhDSUQgKHN0aWxsIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBhIFRY VCBSUikuICBUaGlzIHdvdWxkIGNhdXNlIGxhdGVyCiAgZXhwaXJhdGlvbiBvciByZWxlYXNlIGV2 ZW50cyB0byBmYWlsIHRvIHJlbW92ZSB0aGUgZG9tYWluIG5hbWUuICBUaGUKZmVhdHVyZQogIG5v dyBhbHNvIGluc2VydHMgdGhlIGNsaWVudCdzIHVwIHRvIGRhdGUgREhDSUQgcmVjb3JkLCBzbyBy ZWNvcmRzIG1heQpzYWZlbHkKICBiZSByZW1vdmVkIGF0IGV4cGlyYXRpb24gb3IgcmVsZWFzZSB0 aW1lLiAgVGhhbmtzIHRvIGEgcGF0Y2ggc3VibWl0dGVkIGJ5CiAgQ2hyaXN0b2YgQ2hlbi4KCi0g TWVtb3J5IGxlYWsgaW4gdGhlIGxvYWRfYmFsYW5jZV9taW5lKCkgZnVuY3Rpb24gaXMgZml4ZWQu ICBUaGlzIHdvdWxkCiAgbGVhayB+MjAtMzAgb2N0ZXRzIHBlciBESENQRElTQ09WRVIgcGFja2V0 IHdoaWxlIGZhaWxvdmVyIHdhcyBpbiB1c2UKICBhbmQgaW4gbm9ybWFsIHN0YXRlLgoKLSBWYXJp b3VzIGNvbXBpbGF0aW9uIGZpeGVzIGhhdmUgYmVlbiBpbmNsdWRlZCBmb3IgdGhlIG1lbW9yeSBy ZWxhdGVkCiAgREVCVUcgI2RlZmluZXMgaW4gaW5jbHVkZXMvc2l0ZS5oLgoKLSBGaXhlZCBMaW51 eCBjbGllbnQgc2NyaXB0ICd1bmFyeSBvcGVyYXRvciBleHBlY3RlZCcgZXJyb3JzIHdpdGggREhD UHY2LgoKLSBGaXhlZCBzZXR0aW5nIGhvc3RuYW1lIGluIExpbnV4IGhvc3RzIHRoYXQgcmVxdWly ZSBob3N0bmFtZSBhcmd1bWVudAogIHRvIGJlIGRvdWJsZS1xdW90ZWQuICBBbHNvIGFsbG93IHNl cnZlci1wcm92aWRlZCBob3N0bmFtZSB0bwogIG92ZXJyaWRlIGhvc3RuYW1lcyAnbG9jYWxob3N0 JyBhbmQgJyhub25lKScuCgotIEZpeGVkIGZhaWxvdmVyIHJlY29ubmVjdGlvbiByZXRyeSBjb2Rl IHRvIGNvbnRpbnVlIHRvIHJldHJ5IHRvIHJlY29ubmVjdAogIHJhdGhlciB0aGFuIHJlc3RhcnRp bmcgdGhlIGxpc3RlbmVyLgoKLSBDb21waWxhdGlvbiBvbiBTb2xhcmlzIHdpdGggVVNFX1NPQ0tF VFMgZGVmaW5lZCBpbiBpbmNsdWRlcy9zaXRlLmggaGFzCiAgYmVlbiByZXBhaXJlZC4gIE90aGVy IFVTRV8gb3ZlcnJpZGVzIHNob3VsZCB3b3JrIGJldHRlci4KCi0gQSBjaGVjayBmb3IgdGhlIGxv Y2FsIGZsYXZvciBvZiBJRk5BTVNJWiBoYWQgYSBicm9rZW4gJ2Vsc2UnIGNvbmRpdGlvbiwKICB0 aGF0IHByb2JhYmx5IHN0aWxsIHJlc3VsdGVkIGluIHRoZSBjb3JyZWN0IGJlaGF2aW91ciAoYnV0 IHdvdWxkbid0IHVzZQogIGEgbGFyZ2VyIGRlZmluZWQgdmFsdWUgcHJvdmlkZWQgYnkgdGhlIGhv c3QgT1MpLgoKLSBGaXhlZCBhIGJ1ZyB3aGVyZSBhbiBPTUFQSSBzb2NrZXQgZGlzY29ubmVjdGlv biBtZXNzYWdlIHdvdWxkIG5vdCByZXN1bHQKICBpbiBzY2hlZHVsaW5nIGEgZmFpbG92ZXIgcmVj b25uZWN0aW9uLCBpZiB0aGUgbGluayBoYWQgbm90IG5lZ290aWF0ZWQgYQogIGZhaWxvdmVyIGNv bm5lY3QgeWV0IChlLmcuOiBjb25uZWN0aW9uIHJlZnVzZWQsIGFzeW5jaCBzb2NrZXQgY29ubmVj dCgpCiAgdGltZW91dHMpLgoKLSBBIGJ1ZyB3YXMgZml4ZWQgdGhhdCBjYXVzZWQgdGhlICdjb25m bGljdC1kb25lJyBzdGF0ZSB0byBmYWlsIHRvIGJlIHBhcnNlZAogIGluIGZhaWxvdmVyIHN0YXRl IHJlY29yZHMuCgohIEEgc3RhY2sgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3YXMgZml4ZWQgaW4g ZGhjbGllbnQgdGhhdCBjb3VsZCBhbGxvdwogIHJlbW90ZSBhdHRhY2tlcnMgdG8gZXhlY3V0ZSBh cmJpdHJhcnkgY29tbWFuZHMgYXMgcm9vdCBvbiB0aGUgc3lzdGVtLAogIG9yIHNpbXBseSB0ZXJt aW5hdGUgdGhlIGNsaWVudCwgYnkgcHJvdmlkaW5nIGFuIG92ZXItbG9uZyBzdWJuZXQtbWFzawog IG9wdGlvbi4gIENFUlQgVlUjNDEwNjc2IC0gQ1ZFLTIwMDktMDY5MgoKLSBGaXhlZCBhIGJ1ZyB3 aGVyZSByZWxheSBhZ2VudCBvcHRpb25zIHdvdWxkIG5ldmVyIGJlIHJldHVybmVkIHdoZW4KICBw cm9jZXNzaW5nIGEgREhDUElORk9STS4KCi0gVmVyc2lvbnMgMy4wLnggc3ludGF4IHdpdGggbXVs dGlwbGUgbmFtZS0+Y29kZSBvcHRpb24gZGVmaW5pdGlvbnMgaXMgbm93CiAgc3VwcG9ydGVkLiAg Tm90ZSB0aGF0LCBzaW1pbGFybHkgdG8gMy4wLngsIGZvciBieS1jb2RlIGxvb2t1cHMgb25seSB0 aGUKICBsYXN0IG9wdGlvbiBkZWZpbml0aW9uIGlzIHVzZWQuCgotIEZpeGVkIGEgYnVnIHdoZXJl IGEgdGltZSBkaWZmZXJlbmNlIG9mIGdyZWF0ZXIgdGhhbiA2MCBzZWNvbmRzIGJldHdlZW4gYQog IGZhaWxvdmVyIHBhaXIgY291bGQgY2F1c2UgdGhlIHByaW1hcnkgdG8gY3Jhc2ggb24gY29udGFj dCB3aXRoIHRoZQogIHNlY29uZGFyeS4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gU3RlaW5hciBI YXVnLgoKLSBEb24ndCBsb29rIGZvciBJUHY2IGludGVyZmFjZXMgb24gTGludXggd2hlbiBydW5u aW5nIGluIERIQ1B2NCBtb2RlLgogIFRoYW5rcyB0byBwYXRjaGVzIGZyb20gTWF0dGhldyBOZXd0 b24gYW5kIERhdmlkIENhbnRyZWxsLgoKLSBTZWNvbmRhcnkgc2VydmVycyBpbiBhIGZhaWxvdmVy IHBhaXIgd2lsbCBub3cgcGVyZm9ybSBkZG5zIHJlbW92YWxzIGlmCiAgdGhleSBoYWQgcGVyZm9y bWVkIGRkbnMgdXBkYXRlcyBvbiBhIGxlYXNlIHRoYXQgaXMgZXhwaXJpbmcsIG9yIHdhcwogIHJl bGVhc2VkIHRocm91Z2ggdGhlIHByaW1hcnkuICBBcyBwYXJ0IG9mIHRoZSBzYW1lIGZpeCwgc3Rh bGUgYmluZGluZwpzY29wZXMKICB3aWxsIG5vdyBiZSByZW1vdmVkIGlmIGEgY2hhbmdlIGluIGlk ZW50aXR5IG9mIGEgbGVhc2UncyBhY3RpdmUgY2xpZW50IGlzCiAgZGV0ZWN0ZWQsIHJhdGhlciB0 aGFuIHNpbXBseSBpZiBhIGxlYXNlIGlzIG5vdGljZWQgdG8gaGF2ZSBleHBpcmVkCih3aGljaCBp dAogIG1heSBoYXZlIGV4cGlyZWQgd2l0aG91dCBhIGZhaWxvdmVyIHNlcnZlciBub3RpY2luZyBp biBzb21lIHNpdHVhdGlvbnMpLgoKLSBBIHBhdGNoIHN1cHBsaWVkIGJ5IERhdmlkIENhbnRyZWxs IGF0IFJlZEhhdCB3YXMgYXBwbGllZCB0aGF0IGRldGVjdHMKICBpbnZhbGlkIGNhbGxpbmcgcGFy YW1ldGVycyBnaXZlbiB0byB0aGUgbnNfbmFtZV9udG9wKCkgZnVuY3Rpb24uCiAgU3BlY2lmaWNh bGx5LCBpdCBkZXRlY3RzIGlmIHRoZSBjYWxsZXIgcGFzc2VkIGEgcG9pbnRlciBhbmQgc2l6ZSBw YWlyCiAgdGhhdCBjYXVzZXMgdGhlIHBvaW50ZXIgdG8gaW50ZWdlci13cmFwIHBhc3QgemVyby4K CiEgRml4ZWQgYSBmZW5jZXBvc3RpbmcgYnVnIHdoZW4gYSBjbGllbnQgaGFkIHR3byBob3N0IHJl Y29yZHMgY29uZmlndXJlZCwKICBvbmUgdXNpbmcgJ3VpZCcgYW5kIHRoZSBvdGhlciB1c2luZyAn aGFyZHdhcmUgZXRoZXJuZXQnLiAgQ1ZFLTIwMDktMTg5MgoKLSBGaXhlZCB0aGUgY2hlY2sgaW4g dGhlIGRoY3BfaW50ZXJmYWNlX3NpZ25hbF9oYW5kbGVyIHJvdXRpbmUgdG8gdmVyaWZ5CiAgdGhl IGV4aXN0ZW5jZSBvZiB0aGUgbGlua2VkIHNpZ25hbCBoYW5kbGVyIGJlZm9yZSBjYWxsaW5nIGl0 LgoKLSBCb3RoIGhvc3QgYW5kIHN1Ym5ldDYgY29uZmlndXJhdGlvbiBncm91cHMgYXJlIG5vdyBp bmNsdWRlZCB3aGV0aGVyIGEKICBmaXhlZC1hZGRyZXNzNiAoREhDUHY2KSBpcyBpbiB1c2Ugb3Ig bm90LiAgSG9zdCBzY29wZWQgY29uZmlndXJhdGlvbiB0YWtlcwogIHByZWNlZGVuY2UuICBUaGlz IGZpeGVzIHR3byBidWdzLCBvbmUgd2hlcmUgaG9zdCBzY29wZWQgY29uZmlndXJhdGlvbgogIHdv dWxkIG5vdCBiZSBpbmNsdWRlZCBmcm9tIGEgbm9uLWZpeGVkLWFkZHJlc3M2IGhvc3QgcmVjb3Jk LCBhbmQgdGhlIGVxdWFsCiAgYW5kIG9wcG9zaXRlIGJ1ZyB3aGVyZSBzdWJuZXQ2IHNjb3BlZCBj b25maWd1cmF0aW9uIHdvdWxkIG5vdCBiZSB1c2VkIHdoZW4KICBvdmVyLXJpZGluZyB2YWx1ZXMg d2VyZSBub3QgcHJlc2VudCBpbiBhIG1hdGNoaW5nIGZpeGVkLWFkZHJlc3M2IGhvc3QKICBjb25m aWd1cmF0aW9uLgoKLSAuL2NvbmZpZ3VyZSBub3cgY2hlY2tzIHRvIGVuc3VyZSB0aGUgaW50WF90 IGFuZCB1X2ludFhfdCB0eXBlcyBhcmUKZGVmaW5lZCwKICBjb3JyZWN0aW5nIGEgY29tcGlsYXRp b24gZmFpbHVyZSB3aGVuIHVzaW5nIFN1bidzIGNvbXBpbGVyLgoKLSBNb2RpZmllZCB0aGUgaGFu ZGxpbmcgb2YgYSBjb25uZWN0aW9uIHRvIGF2b2lkIHJlbGVhc2luZyB0aGUgb21hcGkgaW8KICBv YmplY3QgZm9yIHRoZSBjb25uZWN0aW9uIHdoaWxlIGl0IGlzIHN0aWxsIGluIHVzZS4gIE9uZSBz eW1wdG9tIGZyb20KICB0aGlzIGVycm9yIHdhcyBhIHNlZ2ZhdWx0IHdoZW4gYSBmYWlsb3ZlciBz ZWNvbmRhcnkgYXR0ZW1wdGVkIHRvIGNvbm5lY3QKICB0byB0aGUgZmFpbG92ZXIgcHJpbWFyeSBp ZiB0aGVpciBjbG9ja3Mgd2VyZSBub3Qgc3luY2hyb25pemVkLgoKLSBDbGVhbiB1cCB0byBhbGxv dyBjb21waWxhdGlvbiB3aXRoIGdjYyAyLjk1LjQgb24gRnJlZUJTRC4gIFJlbW92ZSBhbgogIGV4 dHJhIHNlbWktY29sb24gZnJvbSBjb21tb24vZG5zLmMgYW5kIG1vdmVkIHNldHRpbmcgYSB2YXJp YWJsZSB0byBOVUxMCiAgaW4gc2VydmVyL2RoY3B2Ni5jIHRvIGFsbG93IHRoZSBjb21waWxlciB0 byBkZWNpZGUgdGhhdCB0aGUgdmFyaWFibGUKICB3YXMgYWx3YXlzIHByb3Blcmx5IHNldC4KCgkJ CUNoYW5nZXMgc2luY2UgNC4xLjBiMQoKLSBBIG1pc3NpbmcgImVsc2UiIGluIGRoY3JlbGF5LmMg Y291bGQgaGF2ZSBjYXVzZWQgYW4gaW50ZXJmYWNlIG5vdCB0bwogIGJlIHJlY29nbml6ZWQuCgoJ CQlDaGFuZ2VzIHNpbmNlIDQuMS4wYTIKCi0gQSBjb3NtZXRpYyBidWcgaW4gREhDUERFQ0xJTkUg cHJvY2Vzc2luZyB3YXMgZml4ZWQgd2hpY2ggY2F1c2VkIGFsbAogIHN1Y2Nlc3NmdWwgREhDUERF Q0xJTkVzIHRvIGJlIGxvZ2dlZCBhcyAibm90IGZvdW5kIiByYXRoZXIgdGhhbgogICJhYmFuZG9u ZWQiLgoKLSBBZGRlZCBjb25maWd1cmF0aW9uIGZpbGUgZXhhbXBsZXMgZm9yIERIQ1B2Ni4KCi0g U29tZSBmYWlsb3ZlciBkZWJ1Z2dpbmcgI2RlZmluZXMgaGF2ZSBiZWVuIGJldHRlciBkZWZpbmVk IGFuZCBzb21lCiAgaGlnaCBmcmVxdWVuY3kgbWVzc2FnZXMgbW92ZWQgdG8gYSBkZWVwZXIgZGVi dWdnaW5nIHN5bWJvbC4KCi0gVGhlIENMVFQgcGFyYW1ldGVyIGluIGZhaWxvdmVyIGlzIG5vdyBv bmx5IHVwZGF0ZWQgYnkgY2xpZW50IGFjdGl2aXR5LAogIGFuZCBub3QgYnkgZmFpbG92ZXIgYmlu ZGluZyB1cGRhdGVzICh0YWtpbmcgb24gdGhlIHBlZXIncyBDTFRUKS4KCi0gRmFpbG92ZXIgQk5E VVBEIG1lc3NhZ2VzIGFyZSBub3cgZGlzY2FyZGVkIGlmIHRoZXkgY29uZmxpY3Qgd2l0aCBhbgog IHVwZGF0ZSB0aGF0IGhhcyBiZWVuIHRyYW5zbWl0dGVkLCBidXQgbm90IGFja25vd2xlZGdlZC4K Ci0gQSBidWcgY2xlYW5pbmcgdXAgdW5rbm93bi14eHggdGVtcG9yYXJ5IG9wdGlvbiBkZWZpbml0 aW9ucyB3YXMgZml4ZWQuCgotIERlbGF5ZWQtYWNrIGlzIG5vdyBhIGNvbXBpbGUtdGltZSBvcHRp b24sIGNvbXBpbGVkIG91dCBieSBkZWZhdWx0LgogIFRoaXMgZmVhdHVyZSBpcyBzaW1wbHkgdG9v IGV4cGVyaW1lbnRhbCBmb3IgcmlnaHQgbm93LCBhbmQgY2F1c2VzCiAgc29tZSBwcm9ibGVtcyB0 byBzb21lIGZhaWxvdmVyIGluc3RhbGxhdGlvbnMuICBXZSB3aWxsIHJldmlzaXQgdGhpcwogIGlu IGZ1dHVyZSByZWxlYXNlcy4KCi0gVGhlICFpbmV0X3B0b24oKSBjYWxsIGluIHJlc19ta3VwZHJl YyB3YXMgYWRqdXN0ZWQgdG8gJzw9IDAnIGFzCiAgaW5ldF9wdG9uIHJldHVybnMgZWl0aGVyIDEs IDAsIG9yIC0xLgoKLSBBIGRoY2xpZW50LXNjcmlwdCBmb3IgTWFjT1MgWCBoYXMgYmVlbiBpbmNs dWRlZCwgd2hpY2ggZW5hYmxlcwogICdkaGNsaWVudCAtNicgc3VwcG9ydC4KCi0gREROUyByZW1v dmFsIHJvdXRpbmVzIHdlcmUgdXBkYXRlZCBzbyB0aGF0IHRoZSBESENJRCBpcyBub3QgcmVtb3Zl ZCB1bnRpbAogIHRoZSBjbGllbnQgaGFzIGJlZW4gZGVwcml2ZWQgb2YgYWxsIEEgYW5kIEFBQUEg cmVjb3JkcyAobm90IG9ubHkgdGhlIGxhc3QKICBvbmUgb2YgZWl0aGVyIG9mIHRob3NlKS4gIFRo aXMgcmVzb2x2ZXMgYSBidWcgd2hlcmUgZHVhbCBzdGFjayBjbGllbnRzCiAgd291bGQgbm90IGJl IGFibGUgdG8gcmVnYWluIHRoZWlyIG5hbWVzIGFmdGVyIGVpdGhlciBleHBpcmF0aW9uIGV2ZW50 LgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjEuMGExCgotIENvcnJlY3RlZCBsaXN0IG9mIGZhaWxvdmVy IHN0YXRlIHZhbHVlcyBpbiBkaGNwZCBtYW4gcGFnZS4KCi0gRml4ZWQgYSBidWcgdGhhdCBjYXVz ZWQgc29tZSByZXF1ZXN0IHR5cGVzIHRvIGJlIGxvZ2dlZCBpbmNvcnJlY3RseS4KCi0gQ2xpZW50 cyB0aGF0IHNlbnQgYSBwYXJhbWV0ZXIgcmVxdWVzdCBsaXN0IGNvbnRhaW5pbmcgdGhlCiAgcm91 dGVycyBvcHRpb24gYmVmb3JlIHRoZSBzdWJuZXQgbWFzayBvcHRpb24gd2VyZSByZWNlaXZpbmcK ICBvbmx5IHRoZSBsYXR0ZXIuICBGaXhlZC4KCi0gVGhlIHNlcnZlciB3YXNuJ3QgYWx3YXlzIHNl bmRpbmcgdGhlIEZRRE4gb3B0aW9uIHdoZW4gaXQgc2hvdWxkLgoKLSBBIHBhcnRuZXItZG93biBm YWlsb3ZlciBzZXJ2ZXIgbm8gbG9uZ2VyIGVtaXRzICdwZWVyIGhvbGRzIGFsbCBmcmVlCmxlYXNl cycKICBpZiBpdCBpcyBhYmxlIHRvIG5ld2x5LWFsbG9jYXRlIG9uZSBvZiB0aGUgcGVlcidzIGxl YXNlcy4KCi0gRml4ZWQgYSBjb3JlZHVtcCB3aGVuIGFkZGluZyBhIGNsYXNzIHZpYSBPTUFQSS4K Ci0gQ2hlY2sgd2hldGhlciBmaWxlcyBhcmUgemVybyBsZW5ndGggYmVmb3JlIHRyeWluZyB0byBw YXJzZSB0aGVtLgoKLSBBcmkgRWRlbGtpbmQncyBQQVJBTk9JQSBwYXRjaCBoYXMgYmVlbiBpbmNs dWRlZCBhbmQgbWF5IGJlIGNvbXBpbGVkIGluCiAgdmlhIHR3byAuL2NvbmZpZ3VyZSBwYXJhbWV0 ZXJzLCAtLWVuYWJsZS1wYXJhbm9pYSBhbmQKICAtLWVuYWJsZS1lYXJseS1jaHJvb3QuCgotIC4v Y29uZmlndXJlIHdhcyBleHRlbmRlZCB0byBjb3ZlciBtYW55IG9wdGlvbmFsIGJ1aWxkIGZlYXR1 cmVzLCBzdWNoCiAgYXMgZmFpbG92ZXIsIHNlcnZlciB0cmFjaW5nLCBkZWJ1Z2dpbmcsIGFuZCB0 aGUgZXhlY3V0ZSgpIGNvbW1hbmQuCgotIFRoZXJlIGlzIG5vdyBhIGRlZmF1bHQgMS80IG9mIGEg c2Vjb25kIHNjaGVkdWxlZCBkZWxheSBiZXR3ZWVuIGRlbGF5ZWQKICBmc3luYygpJ3MsIGl0IGNh biBiZSBjb25maWd1cmVkIGJ5IHRoZSBtYXgtYWNrLWRlbGF5IGNvbmZpZ3VyYXRpb24KICBwYXJh bWV0ZXIuCgotIEEgYnVnIHdhcyBmaXhlZCB3aGVyZSB0aGUgbGVuZ3RoIG9mIGEgaG9zdG5hbWUg d2FzIG1pc2NhbGN1bGF0ZWQsIHNvIHRoYXQKICBob3N0cyB3ZXJlIGdpdmVuIG9kZC1sb29raW5n IGRvbWFpbiBuYW1lcyAoImZvby5iYXIuYmEuZXhhbXBsZS5jb20iKS4KCi0gU2hhcmVkIG5ldHdv cmsgc2VsZWN0aW9uIHNob3VsZCBiZSBkb25lIGZyb20gdGhlIGlubmVybW9zdCByZWxheQogIHZh bGlkIGxpbmstYWRkcmVzcyBmaWVsZCwgcmF0aGVyIHRoYW4gdGhlIG91dGVybW9zdC4KCi0gUHJl Zml4IHBvb2xzIGFyZSBhdHRhY2hlZCB0byBzaGFyZWQgbmV0d29yayBzY29wZXMuCgotIE1lcmdl ZCBJQV9YWCByZWxhdGVkIHN0cnVjdHVyZXMuCgotIEFkZCBESENQdjYgZmlsZXMgaW4gY29uZmln dXJlLgoKLSBBIG1lbW9yeSBsZWFrIHdoZW4gdXNpbmcgb21hcGkgaGFzIGJlZW4gZml4ZWQuCgot IERIQ1B2NiB2ZW5kb3ItY2xhc3Mgb3B0aW9ucyAoVlNJTykgYXJlIG5vdyBvbmx5IHNlbnQgd2hl biB0aGV5IGFwcGVhcgogIG9uIHRoZSBESENQdjYgT1JPLiAgVGhpcyByZXNvbHZlcyBhIGJ1ZyB3 aGVyZSBWU0lPIG9wdGlvbnMgd2VyZSBwbGFjZWQKICBpbiBJQV9OQSBlbmNhcHN1bGF0ZWQgb3B0 aW9ucyBmaWVsZHMuCgotIEludGVncmF0ZWQgY2xpZW50IHdpdGggc3RhdGVsZXNzLCB0ZW1wb3Jh cnkgYWRkcmVzcyBhbmQgcHJlZml4IGRlbGVnYXRpb24KICBzdXBwb3J0LgoKLSBBIGRvdWJsZS1k ZXJlZmVyZW5jZSBpbiBkaGNsaWVudCB0cmFuc21pc3Npb24gb2YgREhDUERFQ0xJTkVzIHdhcwog IHJlcGFpcmVkLgoKLSBGaXggaGFuZGxpbmcgb2YgZm9ybWF0IGNvZGUgJ1onLgoKLSBTdXBwb3J0 ICItMSIgYXJndW1lbnQgaW4gREhDUHY2LgoKLSBNZXJnZSBESENQdjYtb25seSAiZGhjcmVsYXk2 IiBpbnRvIGdlbmVyYWwtcHVycG9zZSAiZGhjcmVsYXkiICh1c2UKICAiLTYiIG9wdGlvbiB0byBz ZWxlY3QgREhDUHY2IG1vZGUpLgoKLSBGaXggaGFuZGxpbmcgb2YgLUEgYW5kIC1hIGZsYWdzIGlu IGRoY3JlbGF5OyBpdCB3YXMgZmFpbGluZyB0byBleHBhbmQKICBwYWNrZXQgc2l6ZSBhcyBuZWVk ZWQgdG8gYWRkIHJlbGF5IGFnZW50IG9wdGlvbnMuCgotIEEgYnVnIGluIHN1Ym5ldDYgcGFyc2lu ZyB3aGVyZSBvcHRpb25zIGNvbnRhaW5lZCBpbiBzdWJuZXQ2IGNsYXVzZXMgd291bGQKICBub3Qg YmUgYXBwbGllZCB0byBjbGllbnRzIGFkZHJlc3NlZCB3aXRoaW4gdGhhdCBuZXR3b3JrIHdhcyBy ZXBhaXJlZC4KCi0gV2hlbiBjb25maWd1cmluZyBhICJzdWJuZXQge30iIG9yICJzdWJuZXQ2IHt9 IiB3aXRob3V0IGFuIGV4cGxpY2l0CiAgc2hhcmVkLW5ldHdvcmsgZW5jbG9zaW5nIGl0LCB0aGUg REhDUCBzb2Z0d2FyZSB3b3VsZCBzeW50aGVzaXplIGEKICBzaGFyZWQtbmV0d29yayB0byBjb250 YWluIHRoZSBzdWJuZXQuICBIb3dldmVyLCBhbGwgY29uZmlndXJhdGlvbgogIHBhcmFtZXRlcnMg d2l0aGluIHRoZSBzdWJuZXQgbW9yZSBpbnR1aXRpdmVseSBiZWxvbmcgInRvIGFueSBjbGllbnQK ICBvbiB0aGF0IGludGVyZmFjZSIsIG9yIHJhdGhlciB0aGUgc3ludGhlc2l6ZWQgc2hhcmVkLW5l dHdvcmsuICBTbywKICB3aGVuIGEgc2hhcmVkLW5ldHdvcmsgaXMgc3ludGhlc2l6ZWQsIGl0IGlz IHVzZWQgdG8gY29udGFpbiB0aGUKICBjb25maWd1cmF0aW9uIHByZXNlbnQgaW5zaWRlIHRoZSBz dWJuZXQge30gY2xhdXNlLiAgVGhpcyBtZWFucyB0aGF0CiAgdGhlIGNvbmZpZ3VyYXRpb24gd2ls bCBiZSB2YWxpZCBmb3IgYWxsIGNsaWVudHMgb24gdGhhdCBuZXR3b3JrLCBub3QKICBqdXN0IHRo b3NlIGFkZHJlc3NlZCBvdXQgb2YgdGhlIHN0YXRlZCBzdWJuZXQuICBJZiB5b3UgaW50ZW5kZWQg dGhlCiAgb3Bwb3NpdGUsIHRoZSB3b3JrYXJvdW5kIGlzIHRvIGV4cGxpY2l0bHkgY29uZmlndXJl IGFuIGVtcHR5CiAgc2hhcmVkLW5ldHdvcmsuCgotIEEgYnVnIHdhcyBmaXhlZCB3aGVyZSBJbmZv cm1hdGlvbi1SZXF1ZXN0IHByb2Nlc3Npbmcgd2FzIG5vdCBzb3VyY2luZwogIGNvbmZpZ3VyZWQg b3B0aW9uIHZhbHVlcy4KCi0gQSB3YXJuaW5nIHdhcyBhZGRlZCBzaW5jZSB0aGUgREhDUHY2IHBy b2Nlc3Npbmcgc29mdHdhcmUgZG9lcyBub3QgeWV0CiAgc3VwcG9ydCBjbGFzcyBzdGF0ZW1lbnRz LgoKLSBDb21waWxhdGlvbiB3YXJuaW5ncyBvbiBHQ0MgNC4zIHJlbGF0aW5nIHRvIGJvb3RwIHNv dXJjZSBhZGRyZXNzCiAgc2VsZWN0aW9uIHdlcmUgcmVwYWlyZWQuCgotIFRoZSB2NiBCU0Qgc29j a2V0IG1ldGhvZCB3YXMgdXBkYXRlZCB0byB1c2UgYSBzaW5nbGUgVURQIEJTRCBzb2NrZXQKICBu byBtYXR0ZXIgaG93IG1hbnkgaW50ZXJmYWNlcyBhcmUgaW52b2x2ZWQsIGRpZmZlcmVudGlhdGlu ZyB0aGUKICBpbnRlcmZhY2VzIHRoZSBwYWNrZXRzIHdlcmUgcmVjZWl2ZWQgb24gYnkgdGhlIGlu dGVyZmFjZSBpbmRleCBzdXBwbGllZAogIGJ5IHRoZSBPUy4KCi0gVGhlIHJlbGF5IGFnZW50IG5v IGxvbmdlciBsaXN0ZW5zIHRvIHRoZSBBbGwgREhDUCBTZXJ2ZXJzIE11bHRpY2FzdAogIGFkZHJl c3MuCgotIEEgYnVnIHdhcyBmaXhlZCBpbiBkYXRhX3N0cmluZ19zcHJpbnRmYSgpIHdoZXJlIHZh X3N0YXJ0IHdhcyBvbmx5IGNhbGxlZAogIG9uY2UgZm9yIHR3byBpbnZvY2F0aW9ucyBvZiB2c3By aW50ZigpIHZhcmlhbnRzLgoKLSBFUk8gKFJGQyA0OTk0KSBzZXJ2ZXIgc3VwcG9ydC4KCi0gQmFz aWMgYW5kIHBhcnRpYWwgREhDUHY2IGxlYXNlcXVlcnkgc3VwcG9ydC4KCi0gUmVsaWFibGUgREhD UHY2IHJlbGVhc2UgKHByZXZpb3VzIGJlaGF2aW9yLCBzZW5kIHJlbGVhc2UgYW5kIGV4aXQsIGlz CiAgc3RpbGwgYXZhaWxhYmxlIHdpdGggZGhjbGllbnQgLTYgLTEgLXIpLgoKCQkJQ2hhbmdlcyBz aW5jZSA0LjAuMCAobmV3IGZlYXR1cmVzKQoKLSBBZGRlZCBESENQdjYgcmFwaWQgY29tbWl0IHN1 cHBvcnQuCgotIEFkZGVkIGV4cGxpY2l0IHBhcnNlciBzdXBwb3J0IGZvciB6ZXJvLWxlbmd0aCBE SENQIG9wdGlvbnMsIHN1Y2ggYXMKICByYXBpZC1jb21taXQsIHZpYSBmb3JtYXQgY29kZSAnWicu CgotIEl0J3Mgbm93IHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgImVuZHMiIGZpZWxkIG9mIGEgbGVh c2Ugd2l0aCBPTUFQSS4KICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCBub3Qgb25seSB0byBy ZWxlYXNlIGEgbGVhc2UsIGJ1dCBhbHNvIG1ha2UKICBpdCBhdmFpbGFibGUgZm9yIHJldXNlIHJp Z2h0IGF3YXkuICBIYXQgdGlwIHRvIENocmlzdG9mIENoZW4uCgotIEZpeGVkIGRlZmluaXRpb24g b2YgdGhlIGlhYWRkciBoYXNoIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGNvcnJlY3QKICBmdW5jdGlv bnMgd2hlbiByZWZlcmVuY2luZyBhbmQgZGVyZWZlcmVuY2luZyBtZW1vcnkuCgotIFNvbWUgZGVm aW5pdGlvbnMgbm90IGluIHBoYXNlIHdpdGggdGhlIElBTkEgcmVnaXN0cnkgd2VyZSB1cGRhdGVk LgoKLSBBbGxvY2F0ZWQgaW50ZXJmYWNlIElEcyBhcmUgYmV0dGVyIGNvbnRyb2xsZWQgKCd1JyBi aXQgc2V0IHRvIHplcm8sCiAgcmVzZXJ2ZWQgSURzIGF2b2lkZWQpLgoKLSBVbmljYXN0IG9wdGlv bnMgYXJlIHRha2VuIGludG8gYWNjb3VudCBvbmx5IGZvciBSRU5FV3MuCgotIE5vQWRkcnNBdmFp bCBhbnN3ZXJzIHRvIFNPTElDSVRzIGFyZSBhbHdheXMgQURWRVJUSVNFcyBldmVuIHdoZW4gYSBT T0xJQ0lUCiAgY2FycmllcyBhIHJhcGlkLWNvbW1pdCBvcHRpb24uCgotIFJldHVybiBpbiBwbGFj ZSBvZiByYWlzZSBhbiBpbXBvc3NpYmxlIGNvbmRpdGlvbiB3aGVuIG9uZSB0cmllcyB0byByZWxl YXNlCiAgYW4gZW1wdHkgYWN0aXZlIGxlYXNlLgoKLSBUaW1lciBncmFudWxhcml0eSBpcyBub3cg MS8xMDBzIGluIHRoZSBESENQdjYgY2xpZW50LgoKLSBUaGUgZGhjbGllbnQtc2NyaXB0IHdhcyB1 cGRhdGVkIHRvIGNyZWF0ZSBhIGhvc3Qgcm91dGUgZm9yIHRoZSBkZWZhdWx0CiAgZ2F0ZXdheSBp ZiB0aGUgc3VwcGxpZWQgc3VibmV0IG1hc2sgZm9yIGFuIElQdjQgYWRkcmVzcyB3YXMgYSAvMzIu ICBUaGlzCiAgYWxsb3dzIHRoZSBjbGllbnQgdG8gd29yayBpbiAnY2FwdGl2ZScgbmV0d29yayBl bnZpcm9ubWVudHMsIHdoZXJlIHRoZQogIG9wZXJhdG9yIGRvZXMgbm90IHdhbnQgY2xpZW50cyB0 byBjcm9zc3RhbGsgZGlyZWN0bHkuCgotIE1JTlVTIHRva2VucyBzaG91bGQgYmUgcGFyc2FibGUg YWdhaW4uCgotIE11bHRpcGxlICh1cCB0byAiZGVsYXllZC1hY2sgeDsiIG1heGltdW0pIERIQ1B2 NCBwYWNrZXRzIGFyZSBub3cKcXVldWVkIGFuZAogIHJlbGVhc2VkIGluIGJ1cnN0cyBhZnRlciBz aW5nbGUgZnN5bmMoKSBldmVudHMgd2hlbiB0aGUgdXBwZXIgbGltaXQgaXMKICByZWFjaGVkIG9y IGlmIHRoZSByZWNlaXZpbmcgc29ja2V0cyBnbyBkcnkuICBUaGUgcHJhY3RpY2FsIHVwc2hvdCBp cwogIHRoYXQgZnN5bmMtY291cGxlZCBzZXJ2ZXIgcGVyZm9ybWFuY2UgaXMgbm93IG11bHRpcGxp Y2l0aXZlbHkgaW5jcmVhc2VkLgogIFRoZSBkZWZhdWx0IGRlbGF5ZWQgYWNrIGxpbWl0IGlzIDI4 LiAgVGhhbmtzIGVudGlyZWx5IHRvIGEgcGF0Y2ggZnJvbQogIENocmlzdG9mIENoZW4uCgoJCQlD aGFuZ2VzIHNpbmNlIDQuMC4wIChidWcgZml4ZXMpCgotIERIQ1Agbm93IGJ1aWxkcyBvbiBBSVgu CgotIEV4aXQgd2l0aCB3YXJuaW5nIHdoZW4gREhDUHY2LXNwZWNpZmljIHN0YXRlbWVudHMgYXJl IHVzZWQgaW4gdGhlCiAgY29uZmlnIGZpbGUgYnV0IC02IGlzIG5vdCBzcGVjaWZpZWQuCgotIEZp eGVkICItLXZlcnNpb24iIGZsYWcgaW4gZGhjcmVsYXkKCi0gVGhlICdtaW4tc2VjcycgY29uZmln dXJhdGlvbiBwYXJhbWV0ZXIncyBsb2cgbWVzc2FnZSBoYXMgYmVlbiB1cGRhdGVkIHRvCiAgYmUg bW9yZSBoZWxwZnVsLgoKLSBUaGUgd2FybmluZyBsb2dnZWQgd2hlbiBhbiBhZGRyZXNzIHJhbmdl IGRvZXNuJ3QgZml0IGluIHRoZSBzdWJuZXRzCiAgdGhleSB3ZXJlIGRlY2xhcmVkIGhhcyBiZWVu IHVwZGF0ZWQgdG8gYmUgbW9yZSBoZWxwZnVsIGFuZCBpZGVudGlmeSB0aGUKICB0eXBvIGluIGNv bmZpZ3VyYXRpb24gdGhhdCBjcmVhdGVkIHRoZSBzcGFubmluZyBhZGRyZXNzZXMuCgotIEEgYnVn IGluIGZhaWxvdmVyIHBvb2wgcmViYWxhbmNpbmcgdGhhdCBjYXVzZWQgUE9PTFJFUSBtZXNzYWdl IHBpbmctcG9uZ3MKICB3YXMgcmVwYWlyZWQuCgotIEEgZmxhdyBpbiBmYWlsb3ZlciBwb29sIHJl YmFsYW5jaW5nIHRoYXQgY291bGQgY2F1c2UgUE9PTFJFUSBtZXNzYWdlcyB0bwogIGJlIHNlbnQg b3V0c2lkZSBvZiB0aGUgbWluLWJhbGFuY2UvbWF4LWJhbGFuY2Ugc2NoZWR1bGVkIGludGVydmFs cyBoYXMKICBiZWVuIHJlcGFpcmVkLgoKLSBBIGNvc21ldGljIGJ1ZyBkdXJpbmcgcG90ZW50aWFs LWNvbmZsaWN0IHJlY292ZXJ5IHRoYXQgY2F1c2VkIHRoZSBwZWVyJ3MKICAnY29uZmxpY3QtZG9u ZScgc3RhdGUgbWVzc2FnZSB0byBiZSBsb2dnZWQgYXMgJ3Vua25vd24tc3RhdGUnIGhhcyBiZWVu CiAgcmVwYWlyZWQuICBJdCBpcyBub3cgbG9nZ2VkIGNvcnJlY3RseS4KCi0gQSBidWcgd2FzIGZp eGVkIHdoZXJlIHRoZSAnZ2lhZGRyJyBtYXkgYmUgdXNlZCB0byBmaW5kIHRoZSBjbGllbnQncyBz dWJuZXQKICByYXRoZXIgdGhhbiBpdHMgb3duICdjaWFkZHInLgoKLSBBIGxvZyBtZXNzYWdlIHdh cyBpbnRyb2R1Y2VkIHRvIGNsYXJpZnkgdGhlIHNpdHVhdGlvbiB3aGVyZSBhIGZhaWxvdmVyCiAg J2FkZHJlc3MnIHBhcmFtZXRlciAodGhlIHNlcnZlcidzIGxvY2FsIGFkZHJlc3MpIGRpZCBub3Qg cmVzb2x2ZSB0byBhbgogIElQdjQgYWRkcmVzcy4KCi0gVGhlIG1pbmltdW0gc2l0ZSBjb2RlIHZh bHVlIHdhcyBzZXQgdG8gMjI0IGluIDMuMS4wIHRvIHRyYWNrIFJGQzM5NDIuCiBUaGlzCiAgYnJv a2UgYSBsb3Qgb2YgbGVnYWN5IHNpdGUgbG9jYWwgY29uZmlndXJhdGlvbnMuICBUaGUgbmV3IGNv ZGUgaW4KcGxhY2Ugd2lsbAogIHRyYWNrIHNpdGUgbG9jYWwgc3BhY2UgbWluaW11bSBvcHRpb24g Y29kZXMgYW5kIGxvZ3MgYSB3YXJuaW5nIHRvCmVuY291cmFnZQogIHVwZGF0ZXMgYW5kIGV4cGxv cmF0aW9uIG9mIHNpdGUgbG9jYWwgY29kZSBtaWdyYXRpb24gcHJvYmxlbXMuICBPcHRpb24KICBj b2RlcyBsZXNzIHRoYW4gMTI4IGluIHNpdGUgbG9jYWwgc3BhY2VzIHJlbWFpbiBpbmFjY2Vzc2li bGUuCgotIEEgcG9zc2libGUgcmVsYXkgYWdlbnQgb3B0aW9uIGJ1ZyB3YXMgcmVwYWlyZWQgd2hl cmUgcmFuZG9tIHNlcnZlcgogIGluaXRpYWxpemF0aW9uIHN0YXRlIG1heSBoYXZlIGJlZW4gdXNl ZCB0byBzaWduYWwgdGhlIHJlbGF5IGFnZW50CiAgaW5mb3JtYXRpb24gb3B0aW9ucyBzdWItb3B0 aW9uIGNvZGUgZm9yIHRoZSAnRU5EJyBvZiB0aGUgb3B0aW9uIHNwYWNlLgoKLSBGaXhlcyB0byBh bGxvdyBjb2RlIHRvIGNvbXBpbGUgYW5kIHJ1biBvbiBTb2xhcmlzIDkuCgotIEZpeGVzIHRvIGFs bG93IGNvZGUgdG8gY29tcGlsZSBvbiBNYWMgT1MgWCBMZW9wYXJkICgxMC41KS4KCi0gV2hlbiBz ZXJ2ZXIgaXMgY29uZmlndXJlZCB3aXRoIG9wdGlvbnMgdGhhdCBpdCBvdmVycmlkZXMsIGEgd2Fy bmluZyBpcwogIGlzc3VlZCB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgcmVhZCwgcmF0 aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlCiAgb3B0aW9uIGlzIG92ZXJyaWRkZW4uIFRoaXMgd2Fz IGltcG9ydGFudCwgYmVjYXVzZSB0aGUgd2FybmluZyB3YXMgZ2l2ZW4KICBldmVyeSB0aW1lIHRo ZSBvcHRpb24gd2FzIG92ZXJyaWRkZW4sIHdoaWNoIGNvdWxkIGNyZWF0ZSBhIGxvdCBvZgogIHVu bmVjZXNzYXJ5IGxvZ2dpbmcuCgotIEZpeGVkIGEgY29tcGlsYXRpb24gcHJvYmxlbXMgb24gcGxh dGZvcm1zIHRoYXQgZGVmaW5lIGEgdmFsdWUgZm9yIEZEREksCiAgd2hpY2ggY29uZmxpY3RzIHdp dGggYSBkaGNwIGNvbmZpZ3VyYXRpb24gc3ludGF4IHRva2VuIGJ5IHRoZSBzYW1lIG5hbWUuCgot IFdoZW4gYSBmYWlsb3ZlciBzZXJ2ZXIgc3VzcGVjdHMgaXQgaGFzIGVuY291bnRlcmVkIGEgcGVl ciBydW5uaW5nIGEKICB2ZXJzaW9uIDMuMC54IGZhaWxvdmVyIHNlcnZlciwgYSB3YXJuaW5nIHRo YXQgdGhlIGZhaWxvdmVyIHdpcmUgcHJvdG9jb2wKICBpcyBpbmNvbXBhdGlibGUgaXMgcHJpbnRl ZC4KCi0gVGhlIGZhaWxvdmVyIHNlcnZlciBubyBsb25nZXIgaXNzdWVzIGEgZmxvYXRpbmcgcG9p bnQgZXJyb3IgaWYgaXQKZW5jb3VudGVycwogIGEgcHJldmlvdXNseSB1bmRlZmluZWQgb3B0aW9u IGNvZGUuCgotIEZpeCBzdGFydHVwIGVycm9yIG1lc3NhZ2VzIHRvIHJlcG9ydCBhIG1pc3Npbmcg InN1Ym5ldDYgZGVjbGFyYXRpb24iLApyYXRoZXIKICB0aGFuIGEgbWlzc2luZyAic3VibmV0IGRl Y2xhcmF0aW9uIiwgd2hlbiBydW5uaW5nIGFzIGEgREhDUHY2IHNlcnZlci4KCi0gREhDUHY2IGNs aWVudCB0aW1lc3RhbXAgaW4gRFVJRCB3YXMgYmFzZWQgb24gdGhlIHllYXIgMTk3MCByYXRoZXIK ICB0aGFuIHRoZSB5ZWFyIDIwMDAuCgotIFdhcm4gd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBhIGhh cmR3YXJlIHBhcmFtZXRlciBpbiBESENQdjYuCgotIERIQ1B2NiByZWxlYXNlZCByZXNvdXJjZXMg YXJlIG5vdyBtYXJrZWQgYXMgcmVsZWFzZWQgYnkgdGhlIGNsaWVudC4KCi0gJ1NvZnQnIGJpbmRp bmdzIGhhdmUgbm8gbW9yZSBzaWRlLWVmZmVjdHMuCgoJCQlDaGFuZ2VzIHNpbmNlIDQuMC4wYjMK Ci0gVGhlIHJldmVyc2UgZG5zIG5hbWUgZm9yIFBUUiB1cGRhdGVzIG9uIElQdjYgYWRkcmVzc2Vz IGhhcyBiZWVuIGZpeGVkIHRvCiAgdXNlIGlwNi5hcnBhLiByYXRoZXIgdGhhbiBkZWZhdWx0IHRv IGluLWFkZHIuYXJwYSBhbmQgcmVxdWlyZSB1c2VyCiAgY29uZmlndXJhdGlvbi4KCi0gZGhjNl9s ZWFzZV9kZXN0cm95KCkgYW5kIGRoYzZfaWFfZGVzdHJveSgpIG5vdyBzZXQgbGVhc2UgYW5kIElB IHBvaW50ZXJzCiAgdG8gTlVMTCBhZnRlciBmcmVlaW5nLCB0byBwcmV2ZW50IHN1YnNlcXVlbnQg YWNjZXNzZXMgdG8gZnJlZWQgbWVtb3J5LgoKLSBUaGUgREhDUHY2IHNlcnZlciB3b3VsZCBub3Qg c2VuZCB0aGUgcHJlZmVyZW5jZSBvcHRpb24gdW5sZXNzIHRoZQogIGNsaWVudCByZXF1ZXN0ZWQg aXQsIHZpYSB0aGUgT1JPLiBUaGlzIGhhcyBiZWVuIGZpeGVkLCBzbyB0aGUgREhDUHY2CiAgc2Vy dmVyIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHByZWZlcmVuY2UgdmFsdWUgaWYgaXQgaXMgY29uZmln dXJlZC4KCi0gV2hlbiBhZGRyZXNzZXMgd2VyZSBwYXNzZWQgYXMgaGludHMgdG8gdGhlIHNlcnZl ciBpbiBhbiBJQSwgdGhleSB3ZXJlCiAgaW5jb3JyZWN0bHkgaGFuZGxlZCwgc29tZXRpbWVzIGJl aW5nIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIE5vdyB0aGUKICBzZXJ2ZXIgd2lsbCB0cmVhdCB0aGVz ZSBhcyBoaW50cyBhbmQgaWdub3JlIHRoZW0gaWYgaXQgY2Fubm90IHN1cHBseQogIGEgcmVxdWVz dGVkIGFkZHJlc3MuCgotIElmIHRoZSBjbGllbnQgaGFkIG11bHRpcGxlIGFkZHJlc3NlcywgYW5k IG9uZSBleHBpcmVkICh3YXMgbm90IHJlbmV3ZWQKICBieSB0aGUgc2VydmVyKSwgdGhlIGNsaWVu dCB3b3VsZCBjb250aW51ZSB0byBhdHRlbXB0IHRvIHJlbmV3IHRoZSBzYW1lCiAgb2xkIGFkZHJl c3Mgb3ZlciBhbmQgb3Zlci4gIE5vdywgdGhlIGNsaWVudCB3aWxsIG9taXQgYW55IGV4cGlyZWQK ICBhZGRyZXNzZXMgZnJvbSBmdXR1cmUgQ29uZmlybSwgUmVuZXcsIG9yIFJlYmluZCBtZXNzYWdl cy4KCi0gZGhjbGllbnQgLTYgd2lsbCBub3cgc2VsZWN0IHJlbmV3L3JlYmluZCB0aW1lcnMgYmFz ZWQgdXBvbiB0aGUgbG9uZ2VzdAogIGFkZHJlc3MgZXhwaXJhdGlvbiB0aW1lIHJhdGhlciB0aGFu IHRoZSBzaG9ydGVzdCBleHBpcmF0aW9uIHRpbWUsIGluCiAgb3JkZXIgdG8gYXZvaWQgY2FzY2Fk aW5nIHJlbmV3YWxzIGluIHRoZSBldmVudCBhIHNlcnZlciBlbGVjdHMgbm90IHRvCiAgZXh0ZW5k IG9uZSBvZiBtdWx0aXBsZSBJQUFERFIgbGVhc2VzLgoKLSBUaGUgc2VydmVyIG5vdyBsaW1pdHMg Y2xpZW50cyB0aGF0IHJlcXVlc3QgbXVsdGlwbGUgYWRkcmVzc2VzIHRvIG9uZQogIGFkZHJlc3Mg cGVyIElBIGJ5IGRlZmF1bHQsIHdoaWNoIGNhbiBiZSBhZGp1c3RlZCB0aHJvdWdoIHRoZQogICJs aW1pdC1hZGRycy1wZXItaWEiIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKLSBUaGUgREhDUHY2IGNs aWVudCBub3cgaXNzdWVzIGZyZXNoIHRyYW5zYWN0aW9uIElEcyBvbiBSZW5ldyBhbmQgUmViaW5k CiAgbWVzc2FnZSBleGNoYW5nZXMsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBtb3N0IHJlY2VudCBJ RC4KCi0gVGhlIERIQ1B2NiBzZXJ2ZXIgbm93IHJlcGxpZXMgdG8gSW5mb3JtYXRpb24tUmVxdWVz dCBtZXNzYWdlcy4KCi0gQSBidWcgd2FzIGZpeGVkIGluIHRoZSBkaGNsaWVudC1zY3JpcHQgZm9y IEJTRHMgdG8gY29ycmVjdGx5IGNhcnJ5IGVycm9yCiAgY29kZXMgdGhyb3VnaCBzb21lIGNvbmRp dGlvbnMuCgotIFRoZSBwYXJzaW5nIG9mIHNvbWUgb3B0aW9ucyBpbiB0aGUgZGhjbGllbnQgbGVh c2UgZmlsZSwgaW4gcGFydGljdWxhcgogIHRoZSBzdWNjZXNzIERIQ1B2NiBzdGF0dXMtY29kZSwg d2FzIGZpeGVkLgoKLSBBIGJ1ZyB3YXMgZml4ZWQgdGhhdCBjYXVzZWQgdGhlIERIQ1B2NiBPUk8g b3B0aW9uIHRvIGJlIGNvcnJ1cHRlZCB3aXRoCiAgc2VlbWluZ2x5IHJhbmRvbSB2YWx1ZXMuCgot IEEgcmVmZXJlbmNlIG92ZXJsZWFrIGluIERIQ1B2NiBzaGFyZWQgbmV0d29yayBwcm9jZXNzaW5n IHdhcyByZXBhaXJlZC4KCi0gLi9jb25maWd1cmUgbm93IGF1dG9kZXRlY3RzIGxvY2FsIGRhdGFi YXNlIGxvY2F0aW9ucyByYXRoZXIgdGhhbiB0cnlpbmcKICB0byBwdXQgZGhjcGQubGVhc2VzIGFu ZCBkaGNsaWVudC5sZWFzZXMgaW4gL3Vzci9sb2NhbC92YXIvZGIsIHdoaWNoIG5vCiAgb25lIGV2 ZXIgaGFzLgoKLSBSZWdyZXNzaW9uIGZpeCBmb3IgYnVnIHdoZXJlIHNlcnZlciBhZHZlcnRpc2Vk IGEgSVB2NiBhZGRyZXNzIGluCiAgcmVzcG9uc2UgdG8gYSBTT0xJQ0lUIGJ1dCB3b3VsZCBub3Qg cmV0dXJuIHRoZSBhZGRyZXNzIGluIHJlc3BvbnNlCiAgdG8gYSBSRVFVRVNULgoKLSBBIGJ1ZyB3 YXMgZml4ZWQgd2hlcmUgdGhlIERIQ1B2NiBzZXJ2ZXIgcHV0cyB0aGUgTm9BZGRyc0F2YWlsIHN0 YXR1cwogIGNvZGUgaW4gdGhlIElBX05BIHdhcyBmaXhlZC4gIFRoZSBzdGF0dXMgY29kZSBub3cg YXBwZWFycyBpbiB0aGUgcm9vdAogIGxldmVsLgoKCQkJQ2hhbmdlcyBzaW5jZSA0LjAuMGIyCgot IENsYXJpZmllZCBlcnJvciBtZXNzYWdlIHdoZW4gbGVhc2UgbGltaXQgZXhjZWVkZWQKCi0gUmVs YXRpdmUgdGltZSBtYXkgbm93IGJlIHVzZWQgYXMgYSBxdWFsaWZpZXIgZm9yICdhbGxvdycgYW5k ICdkZW55JyBhY2Nlc3MKICBjb250cm9sIGxpc3RzLiAgVGhlc2UgZGlyZWN0aXZlcyBtYXkgYmUg dXNlZCB0byBhc3Npc3QgaW4gcmUtYWRkcmVzc2luZwogIGFkZHJlc3MgcG9vbHMgd2l0aG91dCBo YXZpbmcgdG8gY29uc3RhbnRseSByZWNvbmZpZ3VyZSB0aGUgc2VydmVyLiAgUGxlYXNlCiAgc2Vl ICdtYW4gZGhjcGQuY29uZicgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYWxsb3cvZGVueSAnYWZ0 ZXIgdGltZScKc3ludGF4LgogIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gQ2hyaXN0b2YgQ2hlbi4K Ci0gVGhlIHNlcnZlciB3aWxsIG5vdyBpbmNsdWRlIG11bHRpcGxlIElBX05BJ3MgYW5kIG11bHRp cGxlIElBQUREUnMgd2l0aGluCiAgdGhlbSwgaWYgYWR2ZXJ0aXNlZCBieSB0aGUgY2xpZW50LiAg SXQgc3RpbGwgb25seSBzZWVrcyB0byBhbGxvY2F0ZSBvbmUKICBuZXcgYWRkcmVzcy4KCgkJCUNo YW5nZXMgc2luY2UgNC4wLjBiMQoKLSBVc2UgZGlmZmVyZW50IHBhdGhzIGZvciBQSUQgYW5kIGxl YXNlIGZpbGVzIHdoZW4gcnVubmluZyBpbiBESENQdjQKICBvciBESENQdjYgbW9kZSwgc28gdGhh dCBzZXJ2ZXJzIGZvciBib3RoIHByb3RvY29scyBjYW4gYmUgcnVuCiAgc2ltdWx0YW5lb3VzbHkg b24gYSBzaW5nbGUgaW50ZXJmYWNlLgoKLSBGaXhlZCBhIGJ1ZmZlciBvdmVyZmxvdyBlcnJvciB3 aGljaCBjb3VsZCBoYXZlIGFsbG93ZWQgYSBkZW5pYWwKICBvZiBzZXJ2aWNlIHVuZGVyIHVudXN1 YWwgc2VydmVyIGNvbmZpZ3VyYXRpb25zCgotIEVsaW1pbmF0ZWQgYSBzcHVyaW91cyBlcnJvciBt ZXNzYWdlIGZyb20gdGhlIGNsaWVudAoKLSBBIG51bWJlciBvZiBidWdzIHdpdGggdGhlIGludGVy bmFsIGhhbmRsaW5nIG9mIGxlYXNlIHN0YXRlIG9uIHRoZQogIHNlcnZlciBoYXZlIGJlZW4gZml4 ZWQuIFNvbWUgb2YgdGhlc2UgY291bGQgY2F1c2Ugc2VydmVyIGNyYXNoZXMuCgotIFRoZSBwZWVy X3dhbnRzX2xlYXNlcygpIGNoYW5nZXMgcHVsbGVkIHVwIGZyb20gMy4xLjAgd2VyZSBjb3JyZWN0 ZWQsCiAgJ25ldmVyIHVzZWQnIGxlYXNlcyB3aWxsIG5vIGxvbmdlciBjb25zaXN0ZW50bHkgc2hp ZnQgYmV0d2VlbiBzZXJ2ZXJzCiAgb24gZXZlcnkgcG9vbCByZWJhbGFuY2UgcnVuLgoKLSBzZW5k bXNnKCkvcmVjdm1zZygpIGNvbnRyb2wgYnVmZmVycyBhcmUgbm93IGRlY2xhcmVkIGluIHN1Y2gg YSB3YXkgdG8KICBlbnN1cmUgdGhleSBhcmUgY29ycmVjdGx5IGFsaWduZWQgb24gYWxsIChlc3Au IDY0LWJpdCkgYXJjaGl0ZWN0dXJlcy4KCi0gVGhlIGNsaWVudCBsZWFzaW5nIHN1YnN5c3RlbSB3 YXMgc3RyZWFtbGluZWQgYW5kIGNvcnJlY3RlZCB0byBhY2NvdW50CiAgbW9yZSBjbG9zZWx5IGZv ciBjaGFuZ2VzIGluIGNsaWVudCBsaW5rIGF0dGFjaG1lbnQgc2VsZWN0aW9uLgoKCQkJQ2hhbmdl cyBzaW5jZSA0LjAuMGEzCgotIFRoZSBESENQIHNlcnZlciBubyBsb25nZXIgcmVxdWlyZXMgYSAi ZGRucy11cGRhdGUtc3R5bGUiIHN0YXRlbWVudCwKICBhbmQgbm93IGRlZmF1bHRzIHRvICJub25l Iiwgd2hpY2ggbWVhbnMgRE5TIHVwZGF0ZXMgYXJlIGRpc2FibGVkLgoKLSBMb2cgbWVzc2FnZXMg d2hlbiBmYWlsb3ZlciBwZWVyIG5hbWVzIG1pc21hdGNoIGhhdmUgYmVlbiBpbXByb3ZlZCB0bwog IHBvaW50IG91dCB0aGUgcHJvYmxlbS4KCi0gQnVnIHdoZXJlIHNlcnZlciBhZHZlcnRpc2VkIGEg SVB2NiBhZGRyZXNzIGluIHJlc3BvbnNlIHRvIGEgU09MSUNJVAogIGJ1dCB3b3VsZCBub3QgcmV0 dXJuIHRoZSBhZGRyZXNzIGluIHJlc3BvbnNlIHRvIGEgUkVRVUVTVC4gVGhhbmtzIHRvCiAgRGVu bmlzIEtvdSBmb3IgZmluZGluZyB0aGUgYnVnLgoKLSBGaXhlZCBhbiBlcnJvciBjYXVzaW5nIHRo ZSBzZXJ2ZXIgdG8gbG9jayB1cCBvbiBsZWFzZSBleHBpcmF0aW9uLAogIHJlcG9ydGVkIGluZGVw ZW5kZW50bHkgYnkgSm90aGlsaW5nYW0gVmFzdSBhbmQgRGVubmlzIEtvdS4KCi0gRml4ZWQgYSAu L2NvbmZpZ3VyZSBidWcgd2hlcmUgY29tcGlsZSB0ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvCiAg Ii1XZXJyb3IiICh1bnVzZWQgdmFyaWFibGUpIHJhdGhlciB0aGFuIHRoZSBhY3R1YWwgdGVzdCBm YWlsdXJlLiAgTGVhZAogIHRvIGluY29uc2lzdGVudCBhbmQgdW53b3JrYWJsZSBhdXRvLWNvbmZp Z3VyYXRpb25zLgoKLSBDb21waWxhdGlvbiB3aXRoIERMUEkgYW5kIC1XZXJyb3IgaGFzIGJlZW4g cmVwYWlyZWQuCgotIEVycm9yIGluIGRlY29kaW5nIElBX05BIG9wdGlvbiBpZiBtdWx0aXBsZSBp bnRlcmZhY2VzIGFyZSBwcmVzZW50CiAgZml4ZWQgYnkgTWFyY3VzIEdvbGxlci4KCi0gREhDUHY2 IHNlcnZlciBDb25maXJtIG1lc3NhZ2UgcHJvY2Vzc2luZyBoYXMgYmVlbiBlbmhhbmNlZCAtIGl0 IG5vCiAgbG9uZ2VyIHJlcGxpZXMgb25seSB0byBjbGllbnRzIHdpdGggaG9zdCB7fSByZWNvcmRz LCBpdCBub3cgcmVwbGllcwogIGFzIGRpcmVjdGVkIGluIFJGQzMzMTUgc2VjdGlvbiAxOC4yLjIg LSB0aGF0IGlzLCB0byBhbGwgY2xpZW50cwogIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4aXN0ZW5jZSBv ZiBiaW5kaW5ncy4KCi0gQSBjb3JlIGR1bXAgZHVyaW5nIGV4cGlyZWQgbGVhc2UgY2xlYW51cCBo YXMgYmVlbiByZXBhaXJlZC4KCi0gREROUyB1cGRhdGVzIHN0YXRlIGluZm9ybWF0aW9uIGFyZSBu b3cgc3RvcmVkIGluICdiaW5kaW5nIHNjb3BlcycgdGhhdAogIGZvbGxvdyB0aGUgbGVhc2VzIHRo cm91Z2ggdGhlaXIgbGlmZWN5Y2xlcy4gIFRoaXMgZW5hYmxlcyBERE5TIHRlYXJkb3ducwogIG9u IGxlYXNlcyB0aGF0IGFyZSBhc3NpZ25lZCBhbmQgZXhwaXJlZCBpbmJldHdlZW4gYSBzZXJ2ZXIg cmVzdGFydCAodGhlCiAgc3RhdGUgaXMgcmVjb3ZlcmVkIGZyb20gZGhjcGQubGVhc2VzKS4gIEFy Yml0cmFyeSB1c2VyLXNwZWNpZmllZCBiaW5kaW5nCiAgc2NvcGVzICgnc2V0IHZhciA9ICJ2YWx1 ZSI7JykgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgoKLSBBZGRpdGlvbmFsIGNvbXBpbGF0aW9uIHBy b2JsZW1zIG9uIEhQL1VYIGhhdmUgYmVlbiByZXBhaXJlZC4KCgkJCUNoYW5nZXMgc2luY2UgNC4w LjBhMgoKLSBGaXggZm9yIHN0YXJ0dXAgd2hlcmUgdGhlcmUgYXJlIG5vIElQdjQgYWRkcmVzc2Vz IG9uIGFuIGludGVyZmFjZS4KICBUaGFua3MgdG8gTWFyY3VzIEdvbGxlciBmb3IgcmVwb3J0aW5n IHRoZSBidWcuCgotIEZpeGVkIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGxpc3RlbiBmYWlsdXJl LiBUaGFua3MgdG8gVG9tIENsYXJrLgoKLSBCdWcgaW4gc2VydmVyIGNvbmZpZ3VyYXRpb24gcGFy c2VyIGNhdXNlZCBzZXJ2ZXIgdG8gZ2V0IHN0dWNrIG9uCiAgc3RhcnR1cCBmb3IgY2VydGFpbiBi YWQgcG9vbCBkZWNsYXJhdGlvbnMuIFRoYW5rcyB0byBHdWlsbGF1bWUKICBLbmlzcGVsIGZvciB0 aGUgYnVnIHJlcG9ydCBhbmQgZml4LgoKLSBDb2RlIGNsZWFuZWQgdG8gcmVtb3ZlIHdhcm5pbmdz IHJlcG9ydGVkIGJ5ICJnY2MgLVdhbGwiLgoKLSBESENQdjYgaXMgbm93IHRoZSBkZWZhdWx0LiBZ b3UgY2FuIGRpc2FibGUgREhDUHY2IHN1cHBvcnQgdXNpbmcgdGhlCiAgIi0tZGlzYWJsZS1kaGNw djYiIGZsYWcgd2hlbiB5b3UgcnVuIHRoZSBjb25maWd1cmUgc2NyaXB0LgoKLSBBbiBpbnRlcm5h bCBkYXRhYmFzZSBpbmNvbnNpc3RlbmN5IGJ1ZyB3YXMgcmVwYWlyZWQgd2hlcmUgdGhlIHNlcnZl cgogIHdvdWxkIHNlZ2ZhdWx0IGlmIGEgY2xpZW50IGF0dGVtcHRlZCB0byByZW5ldyBhIGxlYXNl IHRoYXQgaGFkIGJlZW4KICBsb2FkZWQgZnJvbSBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotICdyZXF1 ZXN0JyBhbmQgJ2Fsc28gcmVxdWVzdCcgc3ludGF4ZXMgaGF2ZSBiZWVuIGFkZGVkIHRvIGFjY29t bW9kYXRlCiAgdGhlIERIQ1B2NiBjbGllbnQgY29uZmlndXJhdGlvbi4gICdzZW5kIGRoY3A2Lm9y bycgaXMgbm8gbG9uZ2VyCiAgbmVjZXNzYXJ5LgoKLSBCdWcgZml4ZWQgd2hlcmUgY29uZmlndXJh dGlvbiBmaWxlIHBhcnNpbmcgZGlkIG5vdCB3b3JrIHdpdGgKICB6ZXJvLWxlbmd0aCBvcHRpb25z OyB0aGlzIG1hZGUgaXQgaW1wb3NzaWJsZSB0byBzZXQgdGhlCiAgcmFwaWQtY29tbWl0IG9wdGlv bi4KCi0gQm9ndXMgbWVzc2FnZXMgYWJvdXQgaG9zdCByZWNvcmRzIHdpdGggSVB2NCBmaXhlZC1h ZGRyZXNzZXMgYmVpbmcgb2YKICBub24tMTI4LWJpdHMgaW4gbGVuZ3RoIHdlcmUgcmVtb3ZlZC4K CgkJCUNoYW5nZXMgc2luY2UgNC4wLjBhMQoKLSBCdWcgaW4gb2N0YWwgcGFyc2luZyBmaXhlZC4g VGhhbmtzIHRvIEJlcm5kIEZ1aHJtYW5uIGZvciB0aGUgcmVwb3J0CiAgYW5kIGZpeC4KCi0gQXV0 b2NvbmYgbm93IHN1cHBsaWVzIHByb3BlciBmbGFncyBmb3IgU29sYXJpcyBESENQdjYgYnVpbGRz LgoKLSBGaXggZm9yIHBhcnNpbmcgZXJyb3Igb24gc29tZSBJUHY2IGFkZHJlc3Nlcy4KCi0gSW52 YWxpZCBDSURSIHJlcHJlc2VudGF0aW9uIGZvciBJUHY2IHN1Ym5ldHMgb3IgcmFuZ2VzIG5vdyBj aGVja2VkCiAgZm9yIHdoZW4gbG9hZGluZyBjb25maWd1cmF0aW9uLgoKLSBDb21waWxhdGlvbiBv biBIUC9VWCBoYXMgYmVlbiByZXBhaXJlZC4gIFRoZSBjaGFuZ2VzIHNob3VsZCBnZW5lcmFsbHkK ICBhcHBseSB0byBhbnkgYXJjaGl0ZWN0dXJlIHRoYXQgc3VwcGxpZXMgU0lPQ0dMSUZDT05GIGJ1 dCBkb2VzIG5vdAogIHVzZSAnc3RydWN0IGxpZmNvbmYnIHN0cnVjdHVyZXMgdG8gcGFzcyB2YWx1 ZXMuCgotIFR3byBuZXcgb3BlcmF0b3JzLCB+PSBhbmQgfn4sIGhhdmUgYmVlbiBpbnRlZ3JhdGVk IHRvIGltcGxlbWVudAogIGJvb2xlYW4gbWF0Y2hlcyBieSByZWd1bGFyIGV4cHJlc3Npb24gKHN1 Y2ggYXMgbWF5IGJlIHVzZWQgaW4KICBjbGFzcyBtYXRjaGluZyBzdGF0ZW1lbnRzKS4gIFRoYW5r cyB0byBhIHBhdGNoIGJ5IEFsZXhhbmRyIFMuCiAgQWdyYW5vdnNreSwgd2hpY2ggdW5kZXJ3ZW50 IHNsaWdodCBtb2RpZmljYXRpb24uCgotIEZpeCBmb3IgaWNtcCBwYWNrZXRzIG9uIDY0LWJpdCBz eXN0ZW1zIChidWcgaW50cm9kdWNlZCBpbiA0LjApLgoKLSBBIGJ1ZyB3YXMgZml4ZWQgaW4gaW50 ZXJmYWNlIGRpc2NvdmVyeSB3aGVyZWluIGFuIGVycm9yIGlkZW50aWZ5aW5nCiAgYSBzZXJ2ZXIt Y29uZmlndXJlZCBpbnRlcmZhY2Ugd2l0aCBubyBJUHY0IGFkZHJlc3NlcyB3b3VsZCBTRUdWLgoK LSBGaXhlZCBhIGJ1ZyBpbiB3aGljaCB3cml0ZV9sZWFzZSgpIG1pZ2h0IHJlcG9ydCBhIGZhaWx1 cmUgaW5jb3JyZWN0bHkKCi0gQWRkZWQgc3VwcG9ydCBmb3IgREhDUHY2IFJlbGVhc2UgbWVzc2Fn ZXMKCi0gQWRkZWQgLXggb3B0aW9uIHRvIGRoY2xpZW50LCB3aGljaCB0cmlnZ2VycyBkaGNsaWVu dCBwcm9jZXNzZXMKICB0byBleGl0IGdyYWNlZnVsbHkgd2l0aG91dCByZWxlYXNpbmcgbGVhc2Vz IGZpcnN0CgotIEFsbCBiaW5hcmllcyAoY2xpZW50LCBzZXJ2ZXIsIHJlbGF5KSBub3cgY2hhbmdl IGRpcmVjdG9yaWVzCiAgdG8gLyBiZWZvcmUgZ29pbmcgaW50byBkYWVtb24gbW9kZSwgc28gYXMg bm90IHRvIGhvbGQgJENXRCBvcGVuCgotIEZpeGVkIGEgYnVnIHBhcnNpbmcgREhDUHY2IGNsaWVu dC1pZCdzIGluIGhvc3QtaWRlbnRpZmllciBzdGF0ZW1lbnRzCgotIEZpeGVkIGEgYnVnIHdpdGgg dGhlICdkZG5zLXVwZGF0ZXMnIGJvb2xlYW4gc2VydmVyIGNvbmZpZ3VyYXRpb24KICBwYXJhbWV0 ZXIsIHdoaWNoIGNhdXNlZCB0aGUgc2VydmVyIHRvIGZhaWwuCgoJCQlDaGFuZ2VzIHNpbmNlIDQu MC4wLTIwMDcwNDEzCgotIE9sZCAoZXhwaXJlZCkgbGVhc2VzIGFyZSBub3cgY2xlYW5lZC4KCi0g SVB2NiBzdWJuZXRzIG5vdyBoYXZlIHN1cHBvcnQgZm9yIGFyYml0cmFyeSBhbGxvY2F0aW9uIHJh bmdlcyB2aWEKICBhIG5ldyAncmFuZ2U2JyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4KCi0gQW4g b2J2aWF0ZWQgb3B0aW9uIGNvZGUgaGFzaCBsb29rdXAgdG8gZmluZCBENk9fQ0xJRU5USUQgd2Fz IHJlbW92ZWQuCgotIENvcnJlY3RlZCBzb21lIHNpdHVhdGlvbnMgd2hlcmUgdmFyaWFibGVzIG1p Z2h0IGJlIHVzZWQgd2l0aG91dCBiZWluZwogIGluaXRpYWxpemVkLgoKLSBTaWxlbmNlZCBzZXZl cmFsIG90aGVyIGNvbXBpbGVyIHdhcm5pbmdzLgoKLSBJbmNsdWRlIHRoZSBtb3JlIHN0YW5kYXJk IHN5cy91aW8uaCByYXRoZXIgdGhhbiByZWx5IHVwb24gb3RoZXIKICBoZWFkZXIgZmlsZXMgdG8g aW5jbHVkZSBpdCAoZml4ZXMgYSBCU0QgNC4yIGNvbXBpbGUgZmFpbHVyZSkuCgotIER1cGxpY2F0 ZSBkaGNsaWVudC1zY3JpcHQgdXBkYXRlcyBmb3IgREhDUHY2IHRvIGFsbCBwcm92aWRlZCBzY3Jp cHRzLgoKLSBESENQdjQgSS9PIG1ldGhvZHMgdGhhdCBmYWlsZWQgdG8gc2Vuc2UgaGFyZHdhcmUg YWRkcmVzcyB3ZXJlIGNvcnJlY3RlZC4KCi0gREhDUHY0IGlzIG5vdyB0aGUgZGVmYXVsdCAoYXMg ZG9jdW1lbnRlZCkgcmF0aGVyIHRoYW4gREhDUHY2LiAgVGhlIGRlZmF1bHQKICB3YXMgc2V0IHRv IERIQ1B2NiB0byBmYWNpbGl0YXRlIGVhc2UgZWFybHkgZGV2ZWxvcG1lbnQsIGFuZCBmb3Jnb3R0 ZW4uCgotIENvcnJlY3RlZCBhIHNlZ21lbnRhdGlvbiB2aW9sYXRpb24gaW4gREhDUHY0IHNvY2tl dCBwcm9jZXNzaW5nLgoKLSBkaGNsaWVudCB3aWxsIG5vdyBmb3JrKCkgaW50byB0aGUgYmFja2dy b3VuZCBvbmNlIGl0IGJpbmRzIHRvIGFuCiAgSVB2NiBhZGRyZXNzLCBvciBpbW1lZGlhdGVseSBp ZiB0aGUgLW4gZmxhZyBpcyBzdXBwbGllZC4KCi0gLXEgaXMgbm93IHRoZSBkZWZhdWx0IGJlaGF2 aW91ciBvbiBkaGNsaWVudCwgd2l0aCAtZCBvciAtdiBlbmFibGluZwogIG5vbi1xdWlldCAoc3Rk ZXJyIGxvZ2dpbmcpIG1vZGUuCgotIEZpeCBkb2N1bWVudGF0aW9uIG9mIHRoZSBkb21haW4tc2Vh cmNoIGF0b20gKHF1b3RlZCwgd2l0aCBjb21tYXMpLgoKLSBEb2N1bWVudCBESENQdjYgb3B0aW9u cyBwcmVzZW50bHkgaW4gdGhlIGRlZmF1bHQgdGFibGUuCgotIFJlcGxhY2VkIC4vY29uZmlndXJl IHNoZWxsc2NyaXB0aW5nIHdpdGggR05VIEF1dG9jb25mLgoKCQkgICAgIENoYW5nZXMgc2luY2Ug My4xLjAgKE5FVyBGRUFUVVJFUykKCi0gREhDUHY2IENsaWVudCBhbmQgU2VydmVyIHByb3RvY29s IHN1cHBvcnQuICBVc2UgJy02JyB0byBydW4gdGhlIGRhZW1vbnMKICBhcyB2Ni1vbmx5LiAgVXNl ICctNCcgdG8gcnVuIHRoZSBkYWVtb25zIGFzIHY0LW9ubHkgKGRlZmF1bHQuICBUaGVyZSBpcwog IG5vIHN1cHBvcnQgY3VycmVudGx5IGZvciBib3RoLgoKLSBTZXJ2ZXIgc3VwcG9ydCBmb3IgbXVs dGlwbGUgSUFfTkEgb3B0aW9ucywgY29udGFpbmluZyBhdCBtb3N0IG9uZQogIElBQUREUiBvcHRp b24uCgotIENsaWVudCBzdXBwb3J0IGZvciBvbmUgSUFfTkEgb3B0aW9uLCBjb250YWluaW5nIGFu eSBudW1iZXIgb2YgSUFBRERSCiAgb3B0aW9ucy4KCi0gU2VydmVyIHN1cHBvcnQgZm9yIHRoZSBE SENQdjYgSW5mb3JtYXRpb24tcmVxdWVzdCBtZXNzYWdlLgoKLSBJbmFwcHJvcHJpYXRlIHVuaWNh c3QgREhDUHY2IG1lc3NhZ2VzIHNlbnQgdG8gdGhlIHNlcnZlciBhcmUgbm93CiAgZGlzY2FyZGVk LCBhbmQgdGhpcyBoYXMgcmVhcmNoaXRlY3RlZCB0aGUgSU8gc3lzdGVtIHNsaWdodGx5LgoKLSBU aGUgREhDUHY2IHNlcnZlciBEVUlEIGRlZmF1bHRzIHRvIHR5cGUgMSwgaXMgcGVyc2lzdGVudGx5 IHN0b3JlZCBpbgogIHRoZSBsZWFzZXMgZGF0YWJhc2UsIGFuZCBjYW4gYmUgb3Zlci1yaWRkZW4g KGVpdGhlciBjb21wbGV0ZWx5LCBvciBieQogIHNwZWNpZnlpbmcgdHlwZSAxIG9yIHR5cGUgMiku CgotIFRoZSBzZXJ2ZXIgb25seSB1c2VzIFJhcGlkLUNvbW1pdCBpZiBpdCBoYXMgYmVlbiBjb25m aWd1cmVkIHdpdGggdGhlCiAgUmFwaWQtQ29tbWl0IG9wdGlvbiBhbmQgdGhlIGNsaWVudCByZXF1 ZXN0cyBpdC4KCi0gREROUyBzdXBwb3J0LiBXZSBub3cgdXBkYXRlIEFBQUEgcmVjb3JkcyBpbiB0 aGUgc2FtZSBwbGFjZSB3ZSB3b3VsZAogIHVwZGF0ZSBBIHJlY29yZHMsIGlmIHdlIGhhdmUgYW4g SVB2NiBhZGRyZXNzLiBXZSBhbHNvIGdlbmVyYXRlIElQNi5BUlBBCiAgc3R5bGUgbmFtZXMgZm9y IFBUUiByZWNvcmRzIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBJUHY2IGFkZHJlc3MuICBCb3Ro CiAgQSBhbmQgQUFBQSB1cGRhdGVzIGFyZSBkb25lIHVzaW5nIHRoZSBzYW1lICdmcWRuLicgdmly dHVhbCBvcHRpb24gc3BhY2UKICAoYWx0aG91Z2ggdGhlIERIQ1B2NCBGUUROIGFuZCBESENQdjYg RlFETiBvcHRpb25zIGFyZSBmb3JtYXR0ZWQKICBkaWZmZXJlbnRseSwgdGhleSBib3RoIHVzZSB0 aGUgc2FtZSBjb2RlIGhlcmUpLgoKLSBUaGUgTGludXggZGhjbGllbnQtc2NyaXB0IGF0dGVtcHRz IHRvIHNldCBhbmQgcmVtb3ZlIGFzc2lnbmVkIGFkZHJlc3NlcywKICBhbmQgdG8gY29uZmlndXJl IC9ldGMvcmVzb2x2LmNvbmYgZnJvbSBuYW1lc2VydmVyIGFuZCBkb21haW4gbmFtZQogIGNvbmZp Z3VyYXRpb25zLiAgSXQgY2FuIGJlIGV4dGVuZGVkIHRvIGNvbmZpZ3VyZSBvdGhlciBwYXJhbWV0 ZXJzLgoKLSBJbml0aWFsIERIQ1B2NiBsZWFzZSBzdXBwb3J0LgoKLSBUaGUgSU8gc3lzdGVtIG5v dyB0cmFja3MgYWxsIGxvY2FsIElQIGFkZHJlc3Nlcywgc28gdGhhdCB0aGUgREhDUAogIGFwcGxp Y2F0aW9ucyAocGFydGljdWxhcmx5IHRoZSBkaGNyZWxheSkgY2FuIGRpc2Nlcm4gYmV0d2VlbiB3 aGF0IGZyYW1lcwogIHdlcmUgdHJhbnNtaXR0ZWQgdG8gaXQsIGFuZCB3aGF0IGZyYW1lcyBhcmUg YmVpbmcgY2FycmllZCB0aHJvdWdoIGl0IHdoaWNoCiAgaXQgc2hvdWxkIG5vdCBpbnRlcmNlcHQu CgoJCQlDaGFuZ2VzIHNpbmNlIDMuMS4wIChNYWludGVuYW5jZSkKCi0gQSBidWcgd2FzIHJlcGFp cmVkIHdoZXJlIE1BQyBBZGRyZXNzIEFmZmluaXR5IGZvciB2aXJnaW4gbGVhc2VzIGFsd2F5cwog IG1hcHBlZCB0byB0aGUgcHJpbWFyeS4gIFZpcmdpbiBsZWFzZXMgbm93IGhhdmUgYW4gaW50ZXJs ZWF2ZWQgcHJlZmVyZW5jZQogIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5LgoKLSBBIGJ1 ZyB3YXMgcmVwYWlyZWQgd2hlcmUgTUFDIEFkZHJlc3MgQWZmaW5pdHkgZm9yIGNsaWVudHMgd2l0 aCBubyBjbGllbnQKICBpZGVudGlmaWVyIHdhcyBzb21ldGltZXMgbWlzaGFzaGVkIHRvIHRoZSBw ZWVyLiAgTG9hZCBiYWxhbmNpbmcgZHVyaW5nCiAgcnVudGltZSBhbmQgcG9vbCByZWJhbGFuY2lu ZyB3ZXJlIG9wcG9zaW5nLgoKLSBBbiBhc3NlcnRpb24gaW4gbGVhc2UgY291bnRpbmcgcmVsYXRp bmcgdG8gcmVzZXJ2ZWQgbGVhc2VzIHdhcyByZXBhaXJlZC4KCi0gVGhlIHN1Ym5ldC1tYXNrIG9w dGlvbiBpbmNsdXNpb24gbm93IGNvbmZvcm1zIHdpdGggUkZDMjEzMiBzZWN0aW9uIDMuMzsKICBp dCB3aWxsIG9ubHkgYXBwZWFyIHByaW9yIHRvIHRoZSByb3V0ZXJzIG9wdGlvbiBpZiBpdCBpcyBw cmVzZW50IG9uIHRoZQogIFBhcmFtZXRlci1SZXF1ZXN0LUxpc3QuICBUaGUgc3VibmV0LW1hc2sg b3B0aW9uIHdpbGwgYWxzbyBvbmx5IGJlCiAgaW5jbHVkZWQgYnkgZGVmYXVsdCAoaWYgaXQgaXMg bm90IG9uIHRoZSBQUkwpIGluIHJlc3BvbnNlIHRvIERJU0NPVkVSCiAgb3IgUkVRVUVTVCBtZXNz YWdlcy4KCi0gVGhlIEZRRE4gb3B0aW9uIGlzIG9ubHkgc3VwcGxpZWQgaWYgdGhlIGNsaWVudCBz dXBwbGllZCBhbiBGUUROIG9wdGlvbiBvcgogIGlmIHRoZSBGUUROIG9wdGlvbiB3YXMgZXhwbGlj aXRseSByZXF1ZXN0ZWQgb24gdGhlIFBSTC4KCi0gRHluYW1pYyBCT09UUCBsZWFzZXMgYXJlIG5v dyBsb2FkIGJhbGFuY2VkIGluIGZhaWxvdmVyLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjEuMHJjMQoK LSBUaGUgcGFyc2Ugd2FybmluZyB0aGF0ICdkZW55IGR5bmFtaWMgYm9vdHA7JyBtdXN0IGJlIGNv bmZpZ3VyZWQgZm9yCiAgZmFpbG92ZXIgcHJvdGVjdGVkIHN1Ym5ldHMgd2FzIHJlbW92ZWQuCgoJ CQlDaGFuZ2VzIHNpbmNlIDMuMS4wYjIKCi0gRmFpbG92ZXIgcmViYWxhbmNlIGV2ZW50cyBubyBs b25nZXIgcGxheSBwaW5nIHBvbmcgd2l0aCByb3VuZCBlcnJvcnMKICAobW92aW5nIGxlYXNlcyBi ZXR3ZWVuIGZyZWUgYW5kIGJhY2sgdG8gYmFja3VwIHdoZXJlIHRoZXJlIGFyZSBhbgogIG9kZCBu dW1iZXIgb2YgbGVhc2VzKS4KCi0gVGhlICdwb29sJyBsb2cgbGluZSBoYXMgYmVlbiBzcGxpdCBp bnRvIHR3byBtZXNzYWdlcywgb25lIGJlZm9yZSB0aGUKICByZWJhbGFuY2UgcnVuLCBhbmQgb25l IGFmdGVyLgoKLSBBbnkgcXVldWVkIEJOREFDS3MgYXJlIHRyYW5zbWl0dGVkIGJlZm9yZSB0cmFu c21pdHRpbmcgbmV3IEJORFVQRHMuCiAgVGhpcyBlbmZvcmNlcyB0aGUgY29ycmVjdCBzZXF1ZW5j ZSBvZiBldmVudHMgZm9yIHRoZSByZW1vdGUgc2VydmVyCiAgcHJvY2Vzc2luZyB0aGVzZSBtZXNz YWdlcy4KCgkJCUNoYW5nZXMgc2luY2UgMy4xLjBiMQoKLSBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNl ZCBPTUFQSSBjbGllbnRzIHRvIGZyZWV6ZSB3aGVuIG9wZW5pbmcgbGVhc2UKICBvYmplY3RzLgoK LSBBIG5ldyBzZXJ2ZXIgY29uZmlnIG9wdGlvbiAiZnFkbi1yZXBseSIgc3BlY2lmaWVzIHdoZXRo ZXIgdGhlIHNlcnZlcgogIHNob3VsZCBzZW5kIG91dCBvcHRpb24gODEgKEZRRE4pLiAgRGVmYXVs dHMgdG8gIm9uIi4gIElmIHNldCB0byAib2ZmIiwKICB0aGUgRlFETiBvcHRpb24gaXMgbm90IHNl bnQsIGV2ZW4gaWYgdGhlIGNsaWVudCByZXF1ZXN0ZWQgaXQuICBUaGlzIGlzCiAgbmVlZGVkIGJl Y2F1c2Ugc29tZSBjbGllbnRzIG1pc2JlaGF2ZSBvdGhlcndpc2UuICBUaGFua3MgdG8gQ2hyaXN0 b2YgQ2hlbgogIGF0IEFsbGlhbnouCgotIEFsbG93IHRyYWNlIG91dHB1dCBmaWxlcyAoLXRmIG9w dGlvbikgdG8gYmUgb3ZlcndyaXR0ZW4sIHJhdGhlciB0aGFuCiAgY3Jhc2hpbmcgZGhjcGQgaWYg dGhlIGZpbGUgYWxyZWFkeSBleGlzdHMKCi0gQSBidWcgd2FzIGZpeGVkIHRoYXQgY2F1c2VkIGRo Y3BkIHRvIHNlZ2ZhdWx0IGlmIGEgcG9vbCB3YXMgZGVjbGFyZWQKICBvdXRzaWRlIHRoZSBzY29w ZSBvZiBhIHN1Ym5ldCBpbiBkaGNwZC5jb25mLgoKLSBTb21lIHVuaW5pdGlhbGl6ZWQgdmFsdWVz IHdlcmUgcmVwYWlyZWQgaW4gZGhjcGxlYXNlcXVlcnkuYyB0aGF0CiAgY2F1c2VkIHRoZSBzZXJ2 ZXIgdG8gYWJvcnQuCgotIEEgbmV3IHNlcnZlciBjb25maWcgb3B0aW9uLCAnZG8tcmV2ZXJzZS11 cGRhdGVzJywgaGFzIGJlZW4gYWRkZWQKICB3aGljaCBjYXVzZXMgdGhlIHNlcnZlciB0byBhYnN0 YWluIGZyb20gcGVyZm9ybWluZyB1cGRhdGVzIG9uIFBUUgogIHJlY29yZHMuICBUaGFua3MgdG8g YSBwYXRjaCBmcm9tIENocmlzdG9mIENoZW4gYXQgQWxsaWFuei4KCi0gQSBidWcgd2FzIHJlcGFp cmVkIGluIHN1YmVuY2Fwc3VsYXRpb24gc3VwcG9ydCwgd2hlcmUgc3BhY2VzIHNlcGFyYXRlZAog IGJ5IGVtcHR5IHNwYWNlcyB3b3VsZCBub3QgZ2V0IGluY2x1ZGVkLgoKLSBBIGJ1ZyBpbiBkaGNs aWVudCB3YXMgcmVwYWlyZWQgd2hpY2ggY2F1c2VkIGl0IHRvIHNlbmQgcGFyYW1ldGVyIHJlcXVl c3QKICBsaXN0cyBvZiA1NSBieXRlcyBpbiBsZW5ndGggbm8gbWF0dGVyIGhvdyBsb25nIHRoZSBk ZWNsYXJlZCBQUkwgd2FzLgoKLSAnZGhjcC5jKDM5NTMpOiBub24tbnVsbCBwb2ludGVyJyBoYXMg YmVlbiByZXBhaXJlZC4gIFRoaXMgZml4ZXMgYSBmbGF3CiAgd2hlcmVpbiB0aGUgREhDUHY0IHNl cnZlciBtYXkgaWdub3JlIGEgY29uZmlndXJlZCBzZXJ2ZXItaWRlbnRpZmllci4KCi0gQSBmbGF3 IGluIGZhaWxvdmVyIHN0YXJ0dXAgc2VxdWVuY2VzIHdhcyByZXBhaXJlZCB0aGF0IHNvbWV0aW1l cyBsZWZ0CiAgdGhlIHByaW1hcnkgREhDUCBzZXJ2ZXIncyBwb29sIHJlYmFsYW5jZSBzY2hlZHVs ZXMgdW5zY2hlZHVsZWQuCgotIENvcnJlY3RlZCBhIGZsYXcgdGhhdCBicm9rZSBlbmNhcHN1bGF0 ZWQgc3BhY2VzIGluY2x1ZGVkIGR1ZSB0byBwcmVzZW5jZQogIG9uIHRoZSBwYXJhbWV0ZXIgcmVx dWVzdCBsaXN0LgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjEuMGEzCgotIFNvbWUgc3BlbGxpbmcgZml4 ZXMuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMS4wYTIKCi0gQSBidWcgd2FzIGZpeGVkIHdoZXJlIGF0 dGVtcHRpbmcgdG8gcGVybWl0IGxlYXNlcXVlcmllcyByZXN1bHRzIGluIGEKICBmYXRhbCBpbnRl cm5hbCBlcnJvciwgIlVuYWJsZSB0byBmaW5kIHNlcnZlciBvcHRpb24gNDkiLgoKLSBBIGJ1ZyB3 YXMgZml4ZWQgaW4gZGhjbGllbnQgcmVuZGVyaW5nIHRoZSB0ZXh0dWFsIG91dHB1dCBmb3JtIG9m IHRoZQogIGRvbWFpbi1zZWFyY2ggb3B0aW9uIHN5bnRheC4KCgkJCUNoYW5nZXMgc2luY2UgMy4x LjBhMQoKLSBBIGJ1ZyBpbiB0aGUgRlFETiB1bml2ZXJzZSB0aGF0IGFkZGVkIEZRRE4gY29kZXMg dG8gdGhlIE5XSVAgdW5pdmVyc2UncwogIGhhc2ggdGFibGUgd2FzIHJlcGFpcmVkLgoKLSBUaGUg c2VydmVycyBub3cgdHJ5IGhhcmRlciB0byB0cmFuc21pdCBwZW5kaW5nIGJpbmRpbmcgdXBkYXRl cyB3aGVuCiAgZW50ZXJpbmcgbm9ybWFsIHN0YXRlLgoKLSBVUERSRVEvVVBEUkVRQUxMIGhhbmRs aW5nIHdhcyBvcHRpbWl6ZWQgLSBpdCBubyBsb25nZXIgZGVxdWV1ZXMgYW5kCiAgcmVxdWV1ZXMg YWxsIHBlbmRpbmcgdXBkYXRlcy4gIFRoaXMgc2hvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNw dXJpb3VzCiAgJ3hpZCBtaXNtYXRjaCcgbG9nIG1lc3NhZ2VzLgoKLSBBbiBvcHRpb24gZGVmaW5p dGlvbiByZWZlcmVuY2luZyBsZWFrIHdhcyBmaXhlZCwgd2hpY2ggcmVzdWx0ZWQgaW4gZWFybHkK ICB0ZXJtaW5hdGlvbiBvZiBkaGNsaWVudCB1cG9uIHRoZSByZW5ld2FsIGV2ZW50LgoKLSBTb21l IGRlZmF1bHQgaGFzaCB0YWJsZSBzaXplcyB3ZXJlIHR3ZWFrZWQsIHNvbWUgdXB3YXJkcywgc29t ZSBkb3dud2FyZHMuCiAgMy4xLjBhMSdzIHRhYmxlcyByZXN1bHRlZCBpbiBhIHJlZHVjdGlvbiBp biBkZWZhdWx0IHNlcnZlciBtZW1vcnkgdXNlLgogIFRoZSBuZXcgc2VsZWN0ZWQgdmFsdWVzIHBy b3ZpZGUgbW9yZSBvZiBhIHplcm8gc3VtIChpbmNyZWFzaW5nIHRoZSBzaXplCiAgb2YgdGFibGVz IGxpa2VseSB0byBiZSBwb3B1bGF0ZWQsIGRlY3JlYXNpbmcgdGhlIHNpemUgb2YgdGFibGVzIHVu bGlrZWx5KS4KCi0gTGVhc2Ugc3RydWN0dXJlcyBhcHBlYXIgaW4gdGhyZWUgc2VwYXJhdGUgaGFz aGVzOiBieSBJUCBhZGRyZXNzLCBieSBVSUQsCiAgYW5kIGJ5IGhhcmR3YXJlIGFkZHJlc3MuICBP bmUgdHlwZSBvZiB0YWJsZSB3YXMgdXNlZCBmb3IgYWxsIHRocmVlLCBhbmQKICBpbXByb3ZlbWVu dHMgdG8gSVAgYWRkcmVzcyBoYXNoaW5nIHdlcmUgYXBwbGllZCB0byBhbGwgdGhyZWUgKHNvIFVJ RCBhbmQKICBoYXJkd2FyZSBhZGRyZXNzZXMgd2VyZSB0cmVhdGVkIGxpa2UgNC1ieXRlIGludGVn ZXJzKS4gIFRoZXJlIGFyZSBub3cgdHdvCiAgdHlwZXMgb2YgdGFibGVzLCBhbmQgdGhlIHVpZC9o dyBoYXNoZXMgdXNlIGZ1bmN0aW9ucyBtb3JlIGFwcHJvcHJpYXRlCiAgdG8gdGhlaXIgbmVlZHMu CgotIFRoZSBtYXgtbGVhc2UtbWlzYmFsYW5jZSBwZXJjZW50YWdlIG5vIGxvbmdlciBjYXVzZXMg c2NoZWR1bGVkIHJlYmFsYW5jZQogIHJ1bnMgdG8gYmUgc2tpcHBlZDogaXQgc3RpbGwgZ292ZXJu cyB0aGUgc2NoZWR1bGUsIGJ1dCBldmVyeSBzY2hlZHVsZWQKICBydW4gd2lsbCBhdHRlbXB0IGJh bGFuY2UuCgotIEEgc2VnZmF1bHQgYnVnIGluIHJlY3Vyc2l2ZSBlbmNhcHN1bGF0aW9uIHN1cHBv cnQgaGFzIGJlZW4gY29ycmVjdGVkLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAgKE5ldyBGZWF0dXJl cykKCi0gQSB3b3JrYXJvdW5kIGZvciBjZXJ0YWluIFNUU04gc2VydmVycyB0aGF0IHNlbmQgYSBt YW5nbGVkIGRvbWFpbi1uYW1lCiAgb3B0aW9uIHdhcyBpbnRyb2R1Y2VkIGZvciBkaGNsaWVudC4g IFRoZSBjbGllbnQgd2lsbCBub3cgYWNjZXB0IGNvcnJ1cHRlZAogIHNlcnZlciByZXNwb25zZXMs IGlmIHRoZXkgY29udGFpbiBhIHZhbGlkIERIQ1BfTUVTU0FHRV9UWVBFIChPRkZFUiwgQUNLLAog IG9yIE5BSykuICBUaGUgc2VydmVyIHdpbGwgY29udGludWUgdG8gbm90IGFjY2VwdCBjb3JydXB0 IGNsaWVudCBwYWNrZXRzLgoKLSBTdXBwb3J0IGZvciAncmVzZXJ2ZWQnIChwc2V1ZG8tc3RhdGlj KSBhbmQgQk9PVFAgbGVhc2VzIHZpYSBmYWlsb3ZlcgogIHdhcyBpbnRyb2R1Y2VkLgoKLSBTdXBw b3J0IGZvciBhZGRpbmcsIHJlbW92aW5nLCBhbmQgbWFuYWdpbmcgY2xhc3MgYW5kIHN1YmNsYXNz IHN0YXRlbWVudHMKICB2aWEgT01BUEkuCgotIFRoZSBmYWlsb3ZlciBpbXBsZW1lbnRhdGlvbiB3 YXMgdXBkYXRlZCB0byBjb21wbHkgd2l0aCByZXZpc2lvbiAxMiBvZgogIHRoZSBwcm90b2NvbCBk cmFmdC4KCi0gJ21ha2UgaW5zdGFsbCcgbm93IGNyZWF0ZXMgdGhlIGluaXRpYWwgemVyby1sZW5n dGggZGhjcGQubGVhc2VzIGZpbGUgaWYKICBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBvbiB0 aGUgc3lzdGVtLgoKLSBSRkMzOTQyIGNvbXBsaWFuY2UsIHNpdGUtbG9jYWwgb3B0aW9uIHNwYWNl cyBzdGFydCBhdCAyMjQgbm93LCBub3QgMTI4LgoKLSBUaGUgTG9hZCBCYWxhbmNlIEFsZ29yaXRo bSB3YXMgbWlzaW1wbGVtZW50ZWQuICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgogIG1hdGNo ZXMgUkZDIDMwNzQuCgotIGxjYXNlKCkgYW5kIHVjYXNlKCkgY29uZmlndXJhdGlvbiBleHByZXNz aW9ucyBoYXZlIGJlZW4gYWRkZWQgd2hpY2ggYWRqdXN0CiAgdGhlaXIgYXJndW1lbnRzIGZyb20g dXBwZXIgdG8gbG93ZXIgYW5kIGxvd2VyIHRvIHVwcGVyIGNhc2VzIHJlc3BlY3RpdmVseS4KICBU aGFua3MgdG8gYSBwYXRjaCBmcm9tIEFsYmVydCBIZXJyYW56LgoKLSBUaGUgZGhjbGllbnQgJ3Jl amVjdCAuLi47JyBzdGF0ZW1lbnQsIHdoaWNoIHJlamVjdHMgbGVhc2VzIGdpdmVuIGJ5IG5hbWVk CiAgc2VydmVyLWlkZW50aWZpZXJzLCBub3cgcGVybWl0cyBhZGRyZXNzIHJhbmdlcyB0byBiZSBz cGVjaWZpZWQgaW4gQ0lEUgogIG5vdGF0aW9uLiAgVGhhbmtzIHRvIGEgcGF0Y2ggZnJvbSBEYXZp ZCBCb3ljZS4KCi0gVGhlIHN1Ym5ldC1tYXNrIG9wdGlvbiBpcyBub3cgc3VwcGxpZWQgYnkgZGVm YXVsdCwgYnV0IGF0IGxvd2VzdAogIHByaW9yaXR5LiAgVGhpcyBoZWxwcyBhIHNtYWxsIG1pbm9y aXR5IG9mIGNsaWVudHMgdGhhdCBwcm92aWRlIHBhcmFtZXRlcgogIHJlcXVlc3QgbGlzdHMsIGJ1 dCBkbyBub3QgbGlzdCB0aGUgc3VibmV0LW1hc2sgb3B0aW9uIGJlY2F1c2UgdGhleSB3ZXJlCiAg ZGVzaWduZWQgdG8gaW50ZXJvcGVyYXRlIHdpdGggYSBzZXJ2ZXIgdGhhdCBiZWhhdmVzIGluIHRo aXMgbWFubmVyLgoKLSBUaGUgRlFETiBvcHRpb24gaXMgc2ltaWxhcmx5IHN1cHBsaWVkIGV2ZW4g aWYgaXQgZG9lcyBub3QgYXBwZWFyIG9uIHRoZQogIHBhcmFtZXRlciByZXF1ZXN0IGxpc3QsIGJ1 dCBub3QgdG8gdGhlIGV4Y2x1c2lvbiBvZiBvcHRpb25zIHRoYXQgZG8KICBhcHBlYXIgYXQgdGhl IHBhcmFtZXRlciByZXF1ZXN0IGxpc3QuICBVcCB1bnRpbCBub3cgaXQgaGFkIHVsdGltYXRlCiAg cHJpb3JpdHkgb3ZlciB0aGUgY2xpZW50J3MgcGFyYW1ldGVyIHJlcXVlc3QgbGlzdC4KCi0gVmFy eWluZyBvcHRpb24gc3BhY2UgY29kZSBhbmQgbGVuZ3RoIGJpdCB3aWR0aHMgKDgvMTYvMzIpIGFy ZSBub3cKICBzdXBwb3J0ZWQuICBUaGlzIGlzIGEgbWlsZXN0b25lIGluIGFjaGlldmluZyBSRkMg MzkyNSAiVklWU08iIGFuZAogIERIQ1B2NiBzdXBwb3J0LgoKLSBBIG5ldyBjb21tb24gKHNlcnZl ciBvciBjbGllbnQpIG9wdGlvbiwgJ2RiLXRpbWUtZm9ybWF0IGxvY2FsOycsIGhhcwogIGJlZW4g YWRkZWQgd2hpY2ggcHJpbnRzIHRoZSBsb2NhbCB0aW1lIGluIC92YXIvZGIvZGhjcGQubGVhc2Vz IHJhdGhlcgogIHRoYW4gVVRDLiAgVGhhbmtzIHRvIGEgcGF0Y2ggZnJvbSBLZW4gTGFsb25kZS4K Ci0gU29tZSBwYXRjaGVzIHRvIGltcHJvdmUgREhDUCBTZXJ2ZXIgc3RhcnR1cCBzcGVlZCBmcm9t IEFuZHJldyBNYXRoZXNvbgogIGhhdmUgYmVlbiBpbmNvcnBvcmF0ZWQuCgotIEZhaWxvdmVyIHBh aXJzIG5vdyBpbXBsZW1lbnQgJ01BQyBBZmZpbml0eScgb24gbGVhc2VzIG1vdmluZyBmcm9tIHRo ZQogIGFjdGl2ZSB0byBmcmVlIHN0YXRlcy4gIExlYXNlcyB0aGF0IGJlbG9uZ2VkIHRvIHRoZSBm YWlsb3ZlciBzZWNvbmRhcnkKICBhcmUgbW92ZWQgdG8gQkFDS1VQIHN0YXRlIHJhdGhlciB0aGFu IEZSRUUgdXBvbiBleGl0aW5nIEVYUElSRUQgc3RhdGUuCiAgSWYgbGVhc2UgcmViYWxhbmNpbmcg bXVzdCBtb3ZlIGxlYXNlcywgaXQgdHJpZXMgZmlyc3QgdG8gbW92ZSBsZWFzZXMKICB0aGF0IGJl bG9uZyB0byB0aGUgcGVlciBpbiBuZWVkLgoKLSBUaGUgc2VydmVyIG5vIGxvbmdlciBzZW5kcyBQ T09MUkVRIG1lc3NhZ2VzIHVubGVzcyB0aGUgcG9vbCBpcyBzZXZlcmVseQogIG1pc2JhbGFuY2Vk IGluIHRoZSBwZWVyJ3MgZmF2b3IgKHNlZSAnbWFuIGRoY3BkLmNvbmYnIGZvciBtb3JlIGRldGFp bHMpLgoKLSBQb29sIHJlYmFsYW5jZSBldmVudHMgbm8gbG9uZ2VyIGhhcHBlbiB1cG9uIHN1Y2Nl c3NmdWxseSBhbGxvY2F0aW5nIGEKICBsZWFzZS4gIEluc3RlYWQsIHRoZXkgaGFwcGVuIG9uIGEg c2NoZWR1bGUuICBTZWUgJ21hbiBkaGNwZC5jb25mJyBmb3IgdGhlCiAgbWluLWJhbGFuY2UgYW5k IG1heC1iYWxhbmNlIHN0YXRlbWVudHMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgotIFRoZSBESENQ IFJlbGF5IEFnZW50IEluZm9ybWF0aW9uIE9wdGlvbiAvIExpbmsgU2VsZWN0aW9uIFN1Yi1PcHRp b24KICBpcyBub3cgc3VwcG9ydGVkLiAgKFNlZSBSRkMzNTI3IGZvciBkZXRhaWxzKS4KCi0gQSBu ZXcgREROUyByZWxhdGVkIHNlcnZlciBvcHRpb24sIHVwZGF0ZS1jb25mbGljdC1kZXRlY3Rpb24s IGhhcyBiZWVuCiAgYWRkZWQuICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBkaGNwZCB3aWxs IHBlcmZvcm0gbm9ybWFsIERIQ0lECiAgY29uZmxpY3QgcmVzb2x1dGlvbiAodGhlIGRlZmF1bHQp LiAgSWYgdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQsIGl0IHdpbGwKICBpbnN0ZWFkIHRydXN0IHRo ZSBhc3NpZ25lZCBuYW1lIGltcGxpY2l0bHkgKHJlbW92aW5nIGFueSBvdGhlciBiaW5kaW5ncwog IG9uIHRoYXQgbmFtZSkuICBUaGlzIG9wdGlvbiBoYXMgbm90IGJlZW4gbWFkZSBhdmFpbGFibGUg aW4gZGhjbGllbnQuCgotIEluIHRob3NlIGNhc2VzIHdoZXJlIHRoZSBESENQIHNvZnR3YXJlIG1h bnVmYWN0dXJlcyBhbiBJUCBoZWFkZXIgKHRvCiAgdHJhbnNtaXQgdmlhIGJwZiwgbHBmLCBldGMp LCB0aGUgSVAgVFRMIHRoZSBzb2Z0d2FyZSBzZWxlY3RzIGhhcyBiZWVuCiAgaW5jcmVhc2VkIGZy b20gMTYgdG8gMTI4LiAgVGhpcyBpcyBpbnRlbmRlZCB0byBtYXRjaCBNaWNyb3NvZnQgV2luZG93 cwogIERIQ1AgQ2xpZW50IGJlaGF2aW91ciwgdG8gaW5jcmVhc2UgY29tcGF0aWJpbGl0eS4KCi0g J2lnbm9yZSBjbGllbnQtdXBkYXRlczsnIG5vdyBoYXMgYmVoYXZpb3VyIHRoYXQgaXMgZGlmZmVy ZW50IGZyb20KICAnZGVueSBjbGllbnQtdXBkYXRlczsnLiAgVGhlIGNsaWVudCdzIHJlcXVlc3Qg aXMgbm90IHRydWx5IGlnbm9yZWQsCiAgcmF0aGVyIGl0IGlzIGVuY291cmFnZWQuICBTaG91bGQg dGhpcyB2YWx1ZSBiZSBjb25maWd1cmVkLCB0aGUgc2VydmVyCiAgdXBkYXRlcyBETlMgYXMgdGhv dWdoIGNsaWVudC11cGRhdGVzIHdlcmUgc2V0IHRvICdkZW55Jy4gIFRoYXQgaXMsIGl0CiAgZW50 ZXJzIGludG8gRE5TIHdoYXRldmVyIGl0IGlzIGNvbmZpZ3VyZWQgdG8gZG8gYWxyZWFkeSwgcHJv dmlkZWQgaXQgaXMKICBjb25maWd1cmVkIHRvLiAgVGhlbiBpdCBzZW5kcyBhIHJlc3BvbnNlIHRv IHRoZSBjbGllbnQgdGhhdCBsZXRzIHRoZQogIGNsaWVudCBiZWxpZXZlIGl0IGlzIHBlcmZvcm1p bmcgY2xpZW50IHVwZGF0ZXMgKHdoaWNoIGl0IHdpbGwpLCBwcm9iYWJseQogIGZvciBhIGRpZmZl cmVudCBuYW1lLiAgSW4gZXNzZW5jZSwgdGhpcyBsZXRzIHRoZSBjbGllbnQgZG8gYXMgaXQgd2ls bCwKICBpZ25vcmluZyB0aGlzIGFzcGVjdCBvZiB0aGVpciByZXF1ZXN0LgoKLSBTdXBwb3J0IGZv ciBjb21wcmVzc2VkICdkb21haW4gbmFtZSBsaXN0JyBzdHlsZSBESENQIG9wdGlvbiBjb250ZW50 cywgYW5kCiAgaW4gcGFydGljdWxhciB0aGUgZG9tYWluIHNlYXJjaCBvcHRpb24gKCMxMTkpIHdh cyBhZGRlZC4KCi0gVGhlIERIQ1AgTEVBU0VRVUVSWSBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJG QzQzODggaXMgbm93IGltcGxlbWVudGVkLgogIExFQVNFUVVFUlkgbGV0cyB5b3UgcXVlcnkgdGhl IERIQ1Agc2VydmVyIGZvciBpbmZvcm1hdGlvbiBhYm91dCBhIGxlYXNlLAogIHVzaW5nIGVpdGhl ciBhbiBJUCBhZGRyZXNzLCBNQUMgYWRkcmVzcywgb3IgY2xpZW50IGlkZW50aWZpZXIuICBUaGFu a3MKICB0byBhIHBhdGNoIGZyb20gSnVzdGluIEhhZGRhZC4KCi0gREhDUEQgaXMgbm93IFJGQzIx MzEgc2VjdGlvbiA0LjEgY29tcGxpYW50IChicm9hZGNhc3QgdG8gYWxsLW9uZXMgaXAgYW5kCiAg ZXRoZXJuZXQgbWFjIGFkZHJlc3MpIG9uIHRoZSBTQ08gcGxhdGZvcm0gc3BlY2lmaWNhbGx5IHdp dGhvdXQgYW55IHN0cmFuZ2UKICBpZmNvbmZpZyBoYWNrcy4gIE1hbnkgdGhhbmtzIGdvIHRvIHRo ZSBLcm9nZXIgQ28uIGZvciBkb25hdGluZyB0aGUKICBoYXJkd2FyZSBhbmQgZnVuZGluZyB0aGUg ZGV2ZWxvcG1lbnQuCgotIEEgbmV3IGNvbW1vbiBjb25maWd1cmF0aW9uIGV4ZWN1dGFibGUgc3Rh dGVtZW50LCBleGVjdXRlKCksIGhhcyBiZWVuCiAgYWRkZWQuICBUaGlzIHBlcm1pdHMgZGhjcGQg b3IgZGhjbGllbnQgdG8gZXhlY3V0ZSBhIG5hbWVkIGV4dGVybmFsCiAgcHJvZ3JhbSB3aXRoIGNv bW1hbmQgbGluZSBhcmd1bWVudHMgc3BlY2lmaWVkIGZyb20gb3RoZXIgY29uZmlndXJhdGlvbgog IGxhbmd1YWdlLiAgVGhhbmtzIHRvIGEgcGF0Y2ggd3JpdHRlbiBieSBNYXR0aWFzIFJvbm5ibG9t LCBnb3R0ZW4gdG8gdXMKICB2aWEgUm9iaW4gQnJlYXRoZS4KCi0gQSBuZXcgZGhjcCBzZXJ2ZXIg b3B0aW9uICdhZGFwdGl2ZS1sZWFzZS10aW1lLXRocmVzaG9sZCcgaGFzIGJlZW4gYWRkZWQKICB3 aGljaCBjYXVzZXMgdGhlIHNlcnZlciB0byBzdWJzdGFudGlhbGx5IHJlZHVjZSBsZWFzZS10aW1l cyBpZiB0aGVyZSBhcmUKICBmZXcgKGNvbmZpZ3VyZWQgcGVyY2VudGFnZSkgcmVtYWluaW5nIGxl YXNlcy4gIFRoYW5rcyB0byBhIHBhdGNoIHN1Ym1pdHRlZAogIGZyb20gQ2hyaXN0b2YgQ2hlbi4K Ci0gRW5jYXBzdWxhdGVkIG9wdGlvbiBzcGFjZXMgd2l0aGluIGVuY2Fwc3VsYXRlZCBvcHRpb24g c3BhY2VzIGlzIG5vdwogIGZvcm1hbGx5IHN1cHBvcnRlZC4KCgkJCUNoYW5nZXMgc2luY2UgMy4w LjZyYzEKCi0gc3VwZXJzZWRlX2xlYXNlKCkgbm93IHJlcXVldWVzIGxlYXNlcyBpbiB0aGVpciBy ZXNwZWN0aXZlIGhhcmR3YXJlCiAgYWRkcmVzcyBoYXNoIGJ1Y2tldC4gIFRoaXMgbWlycm9ycyBj bGllbnQgaWRlbnRpZmllciBiZWhhdmlvdXIuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC41CgotIEFz c29ydGVkIGZpeGVzIGZvciBicm9rZW4gbmV0d29yayBkZXZpY2VzOiAgUGFja2V0IGxlbmd0aCBp cyBub3cKICBkZXRlcm1pbmVkIGZyb20gdGhlIElQIGhlYWRlciBsZW5ndGggZmllbGQgdG8gZmlu YWxseSBjYWxjdWxhdGUgdGhlCiAgVURQIHBheWxvYWQgbGVuZ3RoLCBiZWNhdXNlIHNvbWUgTklD IGRyaXZlcnMgcmV0dXJuIG1vcmUgZGF0YSB0aGFuCiAgdGhleSBhY3R1YWxseSByZWNlaXZlZC4K Ci0gVURQIHBhY2tldHMgYXJlIG5vdyBzdG9yZWQgaW4gYWxpZ25lZCBkYXRhIHN0cnVjdHVyZXMu CgotIEEgbG9naWMgZXJyb3IgaW4gb21hcGkgaW50ZXJmYWNlIGNvZGUgd2FzIHJlcGFpcmVkIHRo YXQgbWlnaHQgcmVzdWx0IGluCiAgaW5jb3JyZWN0bHkgaW5kaWNhdGluZyAndXAnIHN0YXRlIHdo ZW4gYW55IGZsYWdzIHdlcmUgc2V0LCByYXRoZXIgdGhhbgogIHNwZWNpZmljYWxseSB0aGUgSU5U RVJGQUNFX1JFUVVFU1RFRCBmbGFnLiAgVGhhbmtzIHRvIGEgcGF0Y2ggZnJvbQogIEpvY2hlbiBW b3NzIHdoaWNoIGdvdCB0byB1cyB2aWEgQW5kcmV3IFBvbGxvY2sgYXQgRGViaWFuLgoKLSBBIHJl ZmVyZW5jZSBsZWFrIG9uIGJpbmRpbmcgc2NvcGVzIHNldCBieSBkZG5zIHVwZGF0ZXMgd2FzIHJl cGFpcmVkLgoKLSBBIG1lbW9yeSBsZWFrIGluIHRoZSBtaW5pcmVzX25zZW5kc2lnbmVkKCkgZnVu Y3Rpb24gY2FsbCB3YXMgcmVwYWlyZWQuCiAgRWZmZWN0aXZlbHksIHRoaXMgbGVha2VkIH4xNzYg Ynl0ZXMgcGVyIERETlMgdXBkYXRlLgoKLSBJbiB0aGUgY2FzZSB3aGVyZSBhbiAiTDIiIERIQ1Ag UmVsYXkgQWdlbnQgKG9uZSB0aGF0IGRvZXMgbm90IHNldCBnaWFkZHIpCiAgd2FzIGRpcmVjdGx5 IGF0dGFjaGVkIHRvIHRoZSBzYW1lIGJyb2FkY2FzdCBkb21haW4gYXMgdGhlIERIQ1Agc2VydmVy LAogIHRoZSBSRkMzMDQ2IHJlbGF5IGFnZW50IGluZm9ybWF0aW9uIG9wdGlvbiB3YXMgbm90IGJl aW5nIHJldHVybmVkIHRvIHRoZQogIHJlbGF5IGluIHRoZSBzZXJ2ZXIncyByZXBsaWVzLiAgVGhp cyB3YXMgZml4ZWQ7IHRoZSBkaGNwIHNlcnZlciBubyBsb25nZXIKICByZXF1aXJlcyB0aGUgZ2lh ZGRyIHRvIHJlcGx5IHdpdGggcmVsYXkgYWdlbnQgaW5mb3JtYXRpb24uICBOb3RlIHRoYXQKICB0 aGlzIGFsc28gaW1wcm92ZXMgY29tcGF0aWJpbGl0eSB3aXRoIEwyIGRldmljZXMgdGhhdCAiaW50 ZXJjZXB0IiBESENQCiAgcGFja2V0cyBhbmQgZXhwZWN0IHJlbGF5IGFnZW50IGluZm9ybWF0aW9u IGV2ZW4gaW4gdW5pY2FzdCAocmVuZXdhbCkKICByZXBsaWVzLiAgVGhhbmtzIHRvIGEgcGF0Y2gg ZnJvbSBQZWtrYSBTaWx2b25lbi4KCi0gQSBidWcgd2FzIGZpeGVkIHdoZXJlIHRoZSBCT09UUCBo ZWFkZXIgJ3NuYW1lJyBmaWVsZCBoYWQgYSB2YWx1ZSwgdGhlCiAgY29weSB3cml0dGVuIHRvIHBl cnNpc3RlbnQgc3RvcmFnZSB3YXMgYWN0dWFsbHkgdGhlIGNvbnRlbnRzIG9mIHRoZQogICdmaWxl JyBmaWVsZC4KCi0gQSBidWcgd2FzIGZpeGVkIHdoZXJlIHRoZSBud2lwIHZpcnR1YWwgb3B0aW9u IHNwYWNlIHdhcyByZWZlcmVuY2luZwogIHRoZSBmcWRuIG9wdGlvbidzIHZpcnR1YWwgb3B0aW9u IHNwYWNlJ3Mgb3B0aW9uIGNhY2hlLgoKLSBUaW1lc3RhbXAgcGFyc2luZyBlcnJvcnMgdGhhdCBp bmRpY2F0ZWQgbWlzc2luZyAibWludXRlcyIgZmllbGRzIHJhdGhlcgogIHRoYW4gdGhlIGFjdHVh bGx5IG1pc3NpbmcgInNlY29uZHMiIGZpZWxkcyBoYXZlIGJlZW4gcmVwYWlyZWQgdGhhbmtzIHRv CiAgYSBwYXRjaCBmcm9tIEtldmluIFN0ZXZlcy4KCi0gQSBncmFtbWFyIGVycm9yIGluIHRoZSBk aGNsaWVudC44IG1hbnBhZ2Ugd2FzIHJlcGFpcmVkIHRoYW5rcyB0byBhIHBhdGNoCiAgZnJvbSBD aHJpcyBXYWduZXIuCgotIFNldmVyYWwgc3BlbGxpbmcgdHlwb3Mgd2VyZSByZXBhaXJlZCwgYW5k IHNvbWUgY3Jvc3MtcmVmZXJlbmNlcyB0byBvdGhlcgogIHJlbGV2YW50IGRvY3VtZW50cyB3ZXJl IGluY2x1ZGVkIGluIHRoZSBtYW5wYWdlcywgdGhhbmtzIHRvIGEgcGF0Y2gKICBieSBBbmRyZXcg UG9sbG9jayB3aGljaCBnb3QgdG8gdXMgdmlhIFRvbWFzIFBvc3Bpc2VrLgoKLSBTb21lIGJ1Z3Mg d2VyZSBmaXhlZCBpbiB0aGUgJ2VtZXJnZW5jeSByZWxheSBhZ2VudCBvcHRpb25zIGhvbG9ncmFt JwogIHdoaWNoIGlzIHVzZWQgdG8gcmV0YWluIHJlbGF5IGFnZW50IG9wdGlvbiBjb250ZW50cyBm cm9tIHdoZW4gdGhlCiAgY2xpZW50IHdhcyBpbiBJTklUIG9yIFJFQklORCBzdGF0ZXMuICBUaGlz IHNob3VsZCBzb2x2ZSBwcm9ibGVtcyB3aGVyZQogIHJlbGF5IGFnZW50IG9wdGlvbnMgd2VyZSBu b3QgZWNob2VkIGZyb20gdGhlIHNlcnZlciwgZXZlbiB3aGVuIGdpYWRkcgogIHdhcyBzZXQuCgot IGRoY2xpZW50IG5vdyBjbG9zZXMgaXRzIGRlc2NyaXB0b3IgdG8gZGhjbGllbnQubGVhc2VzIHBy aW9yIHRvIGV4ZWN1dGluZwogIGRoY2xpZW50LXNjcmlwdC4gIFRoYW5rcyB0byBhIHBhdGNoIGZy b20gVG9tYXMgUG9zcGlzZWsuCgotIFRoZSBzZXJ2ZXIncyAiYnkgY2xpZW50LWlkIiBhbmQgImJ5 IGhhcmR3YXJlIGFkZHJlc3MiIGhhc2ggdGFibGUgbGlzdHMKICBhcmUgbm93IHNvcnRlZCBhY2Nv cmRpbmcgdG8gdGhlIHByZWZlcmVuY2UgdG8gcmUtYWxsb2NhdGUgdGhhdCBsZWFzZSB0bwogIHJl dHVybmluZyBjbGllbnRzLiAgVGhpcyBzaG91bGQgZWxpbWluYXRlIHBvb2wgc3RhcnZhdGlvbiBw cm9ibGVtcwogIGFyaXNpbmcgd2hlbiAiSU5JVCIgY2xpZW50cyB3ZXJlIGdpdmVuIG5ldyBsZWFz ZXMgcmF0aGVyIHRoYW4gcHJlc2VudGx5CiAgYWN0aXZlIG9uZXMuCgoJCQlDaGFuZ2VzIHNpbmNl IDMuMC41cmMxCgotIEEgYnVnIHdhcyByZXBhaXJlZCBpbiBmaXhlcyB0byB0aGUgZGhjbGllbnQs IHdoaWNoIHNvdWdodCB0byBydW4gdGhlCiAgZGhjbGllbnQtc2NyaXB0IHdpdGggdGhlICdFWFBJ UkUnIHN0YXRlIHNob3VsZCBpdCByZWNlaXZlIGEgTkFLIGluCiAgcmVzcG9uc2UgdG8gYSBSRVFV RVNULiAgVGhlIGNsaWVudCBub3cgaXRlcmF0ZXMgdGhlIFBSRUlOSVQgc3RhdGUKICBhZnRlciB0 aGUgRVhQSVJFIHN0YXRlLCBzbyB0aGF0IGludGVyZmFjZXMgdGhhdCBtaWdodCBiZSBjb25maWd1 cmVkCiAgJ2Rvd24nIGNhbiBiZSBicm91Z2h0IGJhY2sgJ3VwJyBhbmQgaW5pdGlhbGl6ZWQuCgot IERIQ1BJTkZPUk0gaGFuZGxpbmcgZm9yIGNsaWVudHMgdGhhdCBwcm9wZXJseSBzZXQgY2lhZGRy IGFuZCBjb21lIHRvIHRoZQogIHNlcnZlciB2aWEgYSByZWxheSBhZ2V0IGhhcyBiZWVuIHJlcGFp cmVkLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuNAoKLSBBIHdhcm5pbmcgdGhhdCBob3N0IHN0YXRl bWVudHMgZGVjbGFyZWQgd2l0aGluIHN1Ym5ldCBvciBzaGFyZWQtbmV0d29yawogIHNjb3BlcyBh cmUgYWN0dWFsbHkgZ2xvYmFsIGhhcyBiZWVuIGFkZGVkLgoKLSBUaGUgZGVmYXVsdCBtaW5pbXVt IGxlYXNlIHRpbWUgKGlmIG1pbi1sZWFzZS10aW1lIHdhcyBub3Qgc3BlY2lmaWVkKQogIHdhcyBy YWlzZWQgZnJvbSAwIHRvIDMwMC4gIDAgaXMgbm90IHRob3VnaHQgdG8gYmUgc2Vuc2libGUsIGFu ZCBpcwogIGtub3duIHRvIGJlIGRhbWFnaW5nLgoKLSBBZGRlZCBhZGRpdGlvbmFsIGZhdGFsIGVy cm9yIHNhbml0eSBjaGVja3Mgc3Vycm91bmRpbmcgbGVhc2UgYmluZGluZwogIHN0YXRlIGNvdW50 IGNhbGN1bGF0aW9ucyAoZnJlZS9hY3RpdmUgY291bnRzIHVzZWQgZm9yIGZhaWxvdmVyIHBvb2wK ICBiYWxhbmNpbmcpLgoKLSBTb21lIHRpbWUgdmFsdWUgc2l6ZSBmaXhlcyBpbiAzLjAuNCBicm91 Z2h0IG9uIGZyb20gRnJlZUJTRCAvdXNyL3BvcnRzCndlcmUKICBtaXNhcHBsaWVkIHRvIHNlcnZl ciB2YWx1ZXMgcmF0aGVyIHRoYW4gY2xpZW50IHZhbHVlcy4gIFRoZSBzZXJ2ZXIgbm8KbG9uZ2Vy CiAgYWR2ZXJ0aXNlcyA4LWJ5dGUgbGVhc2UtdGltZSBvcHRpb25zIHdoZW4gb24gNjQtYml0IHBs YXRmb3Jtcy4KCi0gQSBidWcgd2hlcmUgbGVhc2VzIG5vdCBpbiBBQ1RJVkUgc3RhdGUgd291bGQg Z2V0IGJpbGxlZCB0byBiaWxsZWQgY2xhc3NlcwogIChjbGFzc2VzIHdpdGggbGVhc2UgbGltaXRh dGlvbnMpIHdhcyBmaXhlZC4gIE5vbi1hY3RpdmUgbGVhc2VzIE9GRkVSZWQKICB0byBjbGllbnRz IGFyZSBubyBsb25nZXIgYmlsbGVkIChidXQgYmlsbGluZyBpcyBjaGVja2VkIGJlZm9yZSBvZmZl cmluZykuCgotIFRoZSBkaGNwZC5jb25mLjUgbWFucGFnZSB3YXMgdXBkYXRlZCBpbiByZWdhcmQg dG8gdGhlIGRkbnMtZG9tYWlubmFtZQogIGNvbmZpZ3VyYXRpb24gb3B0aW9uIC0gdGhlIGRlZmF1 bHQgY29uZmlndXJhdGlvbiBhbmQgcmVzdWx0cyBzaG91bGQgYmUKICBtb3JlIGNsZWFyIG5vdy4K Ci0gSWYgdGhlIGRoY2xpZW50IHdlcmUgdG8gcmVjZWl2ZSBhIERIQ1BOQUsgd2hpbGUgaXQgd2Fz IGluIHRoZSBSRU5FVwogIHN0YXRlIChhbmQgY29uc2VxdWVudGx5LCBoYWQgYW4gYWN0aXZlLCAn Ym91bmQnIGFkZHJlc3MgYW5kIHJlbGF0ZWQKICBjb25maWd1cmF0aW9uIG9wdGlvbnMpLCBpdCB3 b3VsZCBmYWlsIHRvICd0ZWFyIGRvd24nIHRoaXMgaW5mb3JtYXRpb24KICBiZWZvcmUgcHJvY2Vl ZGluZyBpbnRvIElOSVQgc3RhdGUuICBkaGNsaWVudCBub3cgaXRlcmF0ZXMgdGhlIGRoY2xpZW50 LQogIHNjcmlwdCB3aXRoIHRoZSAnRVhQSVJFJyBhY3Rpb24gdG8gY2F1c2UgdGhlc2UgdGVhcmRv d25zIHByaW9yIHRvIGVudGVyaW5nCiAgSU5JVCBzdGF0ZS4gIFRoYW5rcyB0byBhIHBhdGNoIGZy b20gQ2hyaXMgWmltbWVybWFuLgoKLSBUaGUgb21hcGkuMSBtYW5wYWdlIGhhZCBzb21lIGZvcm1h dHRpbmcgZXJyb3JzIHJlcGFpcmVkIHRoYW5rcyB0byBhIHBhdGNoCiAgZnJvbSBZb3NoaWhpa28g U2FydW1hcnUuCgotIEEgZmV3IGxpbmVzIG9mIGNvZGUgdGhhdCB3ZXJlIGZhaWxvdmVyLXNwZWNp ZmljIHdlcmUgbW92ZWQgd2l0aGluCiAgI2lmIGRlZmluZWQoKSBjbGF1c2VzIHNvIHRoYXQgY29t cGlsYXRpb24gd2l0aG91dCBmYWlsb3ZlciBjb3VsZCBiZQogIG1hZGUgcG9zc2libGUuCgotIFRo ZSBsb2cgbWVzc2FnZSBlbWl0dGVkIHdoZW4gdGhlICdsZWFzZWQtYWRkcmVzcycgdmFsdWUgd2Fz IG5vdCBhdmFpbGFibGUKICBpbiBkaGNwZC5jb25mICJleGVjdXRhYmxlIHN0YXRlbWVudHMiIGhh cyBiZWVuIHVwZGF0ZWQgdG8gYmUgbW9yZSBoZWxwZnVsLgogIE1hbnBhZ2UgaW5mb3JtYXRpb24g Zm9yIHRoaXMgdmFsdWUgaGFzIGFsc28gYmVlbiB1cGRhdGVkLgoKLSBBYmFuZG9uZWQgb3IgZGlz c29jaWF0ZWQgKGVyciBjb25kaXRpb24pIGxlYXNlcyBub3cgcmVtb3ZlIGFueSByZWxhdGVkCiAg ZHluYW1pYyBkbnMgYmluZGluZ3MuICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIFBhdHJpY2sgU2No b28uCgotIEF0dGVtcHRpbmcgdG8gd3JpdGUgYSBuZXcgbGVhc2UgZmlsZSB0byByZXBsYWNlIGEg Y29ycnVwdCAoZHVlIHRvCiAgZW5jb3VudGVyaW5nIG5vbi1yZXRyeWFibGUgZXJyb3JzIGR1cmlu ZyB3cml0aW5nKSBsZWFzZSBmaWxlIHNob3VsZAogIG5vIGxvbmdlciByZXN1bHQgaW4gYW4gaW5m aW5pdGUgcmVjdXJzaW9uLgoKLSBIb3N0IGRlY2xhcmF0aW9uIGhhcmR3YXJlIGFkZHJlc3NlcyBh bmQgY2xpZW50IGlkZW50aWZpZXJzIG1heSBvbmx5IGJlCiAgY29uZmlndXJlZCBvbmNlLiAgZGhj cGQgd2lsbCBub3cgZmFpbCB0byBsb2FkIGNvbmZpZyBmaWxlcyB0aGF0IHNwZWNpZnkKICBtdWx0 aXBsZSBpZGVudGlmaWVycyAocHJldmlvdXMgdmVyc2lvbnMgd291bGQgc2lsZW50bHkgb3Zlci1y aWRlIHRoZQogIHZhbHVlIHdpdGggdGhlIGxhdGVyIGNvbmZpZ3VyZWQgdmFsdWUpLgoKLSBTZXZl cmFsIG9wdGlvbiBjb2RlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgc2luY2Ugb3VyIGxhc3Qg cmVsZWFzZQogIGhhdmUgYmVlbiBuYW1lZCBhbmQgZG9jdW1lbnRlZC4KCi0gT3B0aW9uIG5hbWVz IG9mIHRoZSBmb3JtICJ1bmtub3duLTEyMyIgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgaW4t CiAgbWVtb3J5IGhhc2ggdGFibGVzLiAgSW4gb3JkZXIgdG8gc3VwcG9ydCBvcHRpb25zIG9mIHRo ZXNlIG5hbWVzIHRoYXQKICBtYXkgYXBwZWFyIGluIGRoY2xpZW50LmxlYXNlcyBvciBzaW1pbGFy IGluIHByZXZpb3VzIHZlcnNpb25zLCB0aGUKICBwYXJzZXIgd2lsbCBub3cgZmluZCB0aGUgbmV3 IG9wdGlvbiBjb2RlIGRlZmluaXRpb24sIG9yIG1vY2sgdXAgYQogIGdlbmVyaWMgb3B0aW9uIGNv ZGUgZGVmaW5pdGlvbi4gIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHNtb290aAogIHRyYW5zaXRp b24gZnJvbSBvbmUgbmFtZSB0byB0aGUgb3RoZXIsIGFzIHRoZSBuZXcgbmFtZSBpcyB1c2VkIHRv CiAgd3JpdGUgbmV3IG91dHB1dC4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjRyYzEKCi0gVGhlIGRo Y3Atb3B0aW9ucy41IG1hbnBhZ2Ugd2FzIHVwZGF0ZWQgdG8gY29ycmVjdCBpbmRlbnRhdGlvbiBl cnJvcnMKICB0aGFua3MgdG8gYSBwYXRjaCBmcm9tIEplYW4gRGVsdmFyZS4KCgkJCUNoYW5nZXMg c2luY2UgMy4wLjRiMwoKLSBTb21lIG1hbnVhbCBwYWdlcyB3ZXJlIGNsYXJpZmllZCBwdXJzdWFu dCB0byBkaXNjdXNzaW9uIG9uIHRoZSBkaGNwLXNlcnZlcgogIG1haWxpbmcgbGlzdC4KCgkJCUNo YW5nZXMgc2luY2UgMy4wLjRiMgoKLSBOdWxsLXRlcm1pbmF0aW9uIHNlbnNpbmcgZm9yIGNlcnRh aW4gY2xpZW50cyB0aGF0IHVuZm9ydHVuYXRlbHkgcmVxdWlyZQogIGl0IGluIERIQ1BJTkZPUk0g cHJvY2Vzc2luZyB3YXMgcmVwYWlyZWQuCgotIFRoZSBob3N0LW5hbWUgb3B0aW9uIGFuZCBhIGZl dyBvdGhlcnMgd2VyZSBtb3ZlZCBmcm9tICJYIiBmb3JtYXQgdG8gInQiCiAgZm9ybWF0IHRvIGJl IGNvbXBhdGlibGUgd2l0aCBuZXcgTlVMTCBoYW5kbGluZyBmdW5jdGlvbnMuCgotIERIQ1BJTkZP Uk0gcHJvY2Vzc2luZyBpcyBhIGxpdHRsZSBtb3JlIGNhcmVmdWwgYWJvdXQgcmV0dXJuIGFkZHJl c3NpbmcKICBpdHMgcmVzcG9uc2VzLCBvciBpZiByZXNwb25kaW5nIHZpYSBhIHJlbGF5LiAgVGhl IElORk9STSByZWxhdGVkCiAgbWVzc2FnZXMgYWxzbyBsb2cgdGhlICdlZmZlY3RpdmUgY2xpZW50 IGlwIGFkZHJlc3MnIHJhdGhlciB0aGFuIHRoZQogIGNsaWVudCdzIHN1cHBsaWVkIGNpYWRkciAo c2luY2Ugc29tZSBjbGllbnRzIHByb2R1Y2UgbnVsbCBjaWFkZHJzKS4KCi0gVGhlIHNlcnZlciB3 YXMgaW5hcHByb3ByaWF0ZWx5IHNlbmRpbmcgbGVhc2VzIHRvIHRoZSBSRVNFVCBzdGF0ZSBpbiB0 aGUKICBldmVudCB0aGF0IG11bHRpcGxlIGFjdGl2ZSBsZWFzZXMgd2VyZSBmb3VuZCB0byBtYXRj aCBhIHNpbmdseS1pZGVudGlmaWVkCiAgY2xpZW50LiAgVGhpcyB3YXMgY2hhbmdlZCB0byBSRUxF QVNFRCAoYnkgYWNjZXB0aW5nIGEgZGlmZmVyZW50LCBBQ1RJVkUKICBiaW5kaW5nLCB0aGUgY2xp ZW50IGlzIGltcGxpY2l0bHkgcmVsZWFzaW5nIGl0cyBsZWFzZSkuICBUaGlzIHJlcGFpcnMgYQog IGJ1ZyB3aGVyZWluIHNlY29uZGFyeSBzZXJ2ZXJzIGluIGZhaWxvdmVyIHBhaXJzIGRldGVjdGlu ZyB0aGlzIGNvbmRpdGlvbgogIG1vdmUgbGVhc2VzIHRvIFJFU0VULCBhbmQgcHJpbWFyaWVzIHJl ZnVzZSB0byBhY2NlcHQgdGhhdCBzdGF0ZQogIHRyYW5zaXRpb24gKHByb3Blcmx5KS4KCi0gVGhl IG1lbXNldC1hZnRlci1kbWFsbG9jKCkgY2hhbmdlcyBtYWRlIGluIDMuMC40YjEgaGF2ZSBiZWVu IGJhY2tlZCBvdXQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC40YjEKCi0gQ29tbWFuZCBsaW5lIHBh cnNpbmcgaW4gb21zaGVsbCB3YXMgcmVwYWlyZWQgLSBpdCBubyBsb25nZXIgY2xvc2VzCiAgU1RE SU4gYWZ0ZXIgcmVhZGluZyBvbmUgbGluZS4KCi0gVGhlIHJlc29sdmVyIGxpYnJhcnkgbm8gbG9u Z2VyIGNsb3NlcyB0aGUgL2V0Yy9yZXNvbHYuY29uZiBmaWxlCiAgZGVzY3JpcHRvciBpdCBvcGVu ZWQgdHdpY2UuCgotIENoYW5nZXMgdG8gdHJhaWxpbmcgTlVMTCByZW1vdmFsIGluICd0JyBvcHRp b24tYXRvbXMgaGFzIGJlZW4gcmV0aG91Z2h0LAogIGl0IG5vdyBpbmNsdWRlcyAnZCcgKGRvbWFp biBuYW1lKSB0eXBlcywgYW5kIHRyaWVzIGhhcmQgbm90IHRvIHJld2luZCBhbgogIG9wdGlvbiBi ZXlvbmQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IGZpZWxkIGl0IGlzIHVuLXRlcm1pbmF0aW5nLgoK CQkJQ2hhbmdlcyBzaW5jZSAzLjAuMwoKLSBBIERETlMgdXBkYXRlIGhhbmRsaW5nIGZ1bmN0aW9u IHdhcyBtaXN1c2luZyB0aGUgRE5TIGVycm9yIGNvZGVzLCByYXRoZXIKICB0aGFuIHRoZSBpbnRl cm5hbCBnZW5lcmljIHJlc3VsdCBlbnVtZXJhdGlvbi4gIFRoZSByZXN1bHQgaXMgYSBjb25mdXNp bmcKICBzeXNsb2cgbGluZSwgbG9nZ2luZyB0aGUgd3JvbmcgY29uZGl0aW9uLgoKLSBUaGUgREhD UCBTZXJ2ZXIgd2FzIG5vdCBjaGVja2luZyBwb29sIGJhbGFuY2UgaW4gdGhlIGNhc2Ugd2hlcmUg aXQgYnJvdWdodAogIGEgbm9uLUFDVElWRSBsZWFzZSBvdXQgb2Ygc3RvcmFnZSBmb3IgYSBjbGll bnQgdGhhdCB3YXMgcmV0dXJuaW5nIHRvIHVzZQogIGEgbGVhc2UgaXQgb25jZSBoYWQgbG9uZyBh Z28sIGFuZCBoYWQgc2luY2UgZXhwaXJlZC4KCi0gRmFpbG92ZXIgcGVlcnMgbm8gbG9uZ2VyIGJv dGhlciB0byBsb29rIGZvciBmcmVlIGxlYXNlcyB0byBhbGxvY2F0ZSB3aGVuCiAgdGhleSBhbHJl YWR5IGZvdW5kIHRoZSBjbGllbnQncyBBQ1RJVkUgbGVhc2UuICBESVNDT1ZFUnMgYXJlIGxvYWQg YmFsYW5jZWQKICB3aGV0aGVyIGZyZWVseS1hbGxvY2F0ZWQgb3Igbm90LCB1bmxlc3MgdGhlIHNl cnZlciBkb3VidHMgdGhlIHBlZXIgaGFzCiAgbGVhc2VzIHRvIGFsbG9jYXRlLgoKLSBGaXhlZCBh IGJ1ZyBpbiBkaGNyZWxheSBhZ2VudCBhZGRpdGlvbiBjb2RlIHRoYXQgc3VwcHJlc3NlZCB0cmFp bGluZwogIFBBRCBvcHRpb25zIC0gaXQgd2FzIHN1cHByZXNzaW5nIG9ubHkgb25lIHRyYWlsaW5n IFBBRCBvcHRpb24sIHJhdGhlcgogIHRoYW4gdGhlIGVudGlyZSBibG9jayBvZiB0aGVtLgoKISBG aXhlZCBzb21lIHVubGlrZWx5IG92ZXJsYXBwaW5nLXJlZ2lvbiBtZW1jcHkoKSBidWdzIGluIGRo Y3JlbGF5IGFnZW50CiAgb3B0aW9uIGFkZGl0aW9uIGFuZCBzdHJpcHBpbmcgY29kZS4gIEFkZGVk IGEgZmV3IHNhbml0eSBjaGVja3MuICBBbHRob3VnaAogIGhpZ2hseSBpbXByb2JhYmxlLCBkdWUg dG8gcmVxdWlyaW5nIHRoZSByZWNlcHRpb24gb2YgYSBESENQIGRhdGFncmFtIHdlbGwKICBpbiBl eGNlc3Mgb2YgYWxsIGtub3duIHRvIGJlIHVzZWQgcGh5c2ljYWwgTVRVIGxpbWl0YXRpb25zLCBp dCBpcyBwb3NzaWJsZQogIHRoaXMgbWF5IGhhdmUgYmVlbiB1c2VkIGluIGEgc3RhY2sgb3ZlcmZs b3cgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4KVGhhbmtzCiAgdG8gYSBwYXRjaCBmcm9tIGluZmFt b3VzNDJtZC4KCiEgQWRkZWQgc29tZSBzYW5pdHkgY2hlY2tzIHRvIE9NQVBJIGNvbm5lY3Rpb24v YXV0aGVudGljYXRpb24gY29kZS4KICBBbHRob3VnaCBoaWdobHkgaW1wcm9iYWJsZSwgZHVlIHRv IGhhdmluZyB0byBkZWxpdmVyIGluIGV4Y2VzcyBvZiAyXjMyCiAgYnl0ZXMgb2YgZGF0YSB2aWEg dGhlIE9NQVBJIGNoYW5uZWwsIG5vdCB0byBtZW50aW9uIHJlcXVpcmluZyBkaGNwZCB0bwogIGJl IGFibGUgdG8gbWFsbG9jKCkgYSBtZW1vcnkgcmVnaW9uIDJeMzIgYnl0ZXMgaW4gc2l6ZSwgaXQg d2FzIHBvc3NpYmxlCiAgdGhpcyBtaWdodCBoYXZlIHJlc3VsdGVkIGluIGEgaGVhcCBvdmVyZmxv dyBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gaW5mYW1v dXM0Mm1kLgoKLSBkbWFsbG9jKCkgbWVtc2V0KCkncyB0aGUgbm9uLWRlYnVnIChkYXRhKSBwb3J0 aW9uIG9mIHRoZSBhbGxvY2F0ZWQKICBtZW1vcnkgdG8gemVyby4gIENvZGUgdGhhdCBtZW1zZXQo KSdzIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgZG1hbGxvYygpIHRvCiAgemVybyBpcyByZWR1bmRh bnQuICBUaGVzZSByZWR1bmRhbmNpZXMgd2VyZSByZW1vdmVkLgoKLSBTb21lIHR5cGUgZGVjbGFy YXRpb24gY29ycmVjdGlvbnMgdG8gdV9pbnQxNl90IHdlcmUgbWFkZSBpbiBjb21tb24vdHIuYwog IChUb2tlbiBSaW5nIHN1cHBvcnQpIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gSmFzb24gVmFzIERp YXMgYXQgUmVkIEhhdC4KCi0gQSBmYWlsb3ZlciBidWcgdGhhdCB3YXMgYWxsb3dpbmcgbGVhc2Vz IHRoYXQgRVhQSVJFRCBvciB3ZXJlIFJFTEVBU0VECiAgd2hlcmUgdHNmcCBhbmQgdHN0cCBhcmUg aWRlbnRpY2FsIHRpbWVzdGFtcHMgdG8gbGFuZ3Vpc2ggaW4gdGhlc2UKICB0cmFuc2l0aW9uYWwg c3RhdGVzIGhhcyBiZWVuIHJlcGFpcmVkLiAgQXMgYSBzaWRlIGVmZmVjdCwgbGVhc2UKICBkYXRh YmFzZXMgc2hvdWxkIGJlIGtlcHQgbW9yZSBjb25zaXN0ZW50IG92ZXJhbGwsIG5vdCBqdXN0IGZv ciB0aGVzZQogIHRyYW5zaXRpb25hbCBzdGF0ZXMuCgotIElmIHRoZSBsZWFzZSBkYiBpcyBkZWxl dGVkIG91dCBmcm9tIHVuZGVyIHRoZSBkYWVtb24sIGFuZCBpdCBtb3ZlcyB0bwpyZXdyaXRlCiAg dGhlIGRiLCBpdCB3aWxsIGdvIGFoZWFkIHdpdGggdGhlIG9wZXJhdGlvbiBhbmQgbW92ZSB0aGUg bmV3IGRiIGludG8gcGxhY2UKICBvbmNlIGl0IGRldGVjdHMgdGhlIG9sZCBkYiBkb2VzIG5vdCBl eGlzdC4KCi0gZGhjbGllbnQgbm93IGlnbm9yZXMgSVJEQSwgU0lULCBhbmQgSUVFRTEzOTQgbmV0 d29yayBpbnRlcmZhY2VzLCBhcyBpdAogIGlzIGVpdGhlciBub25zZW5zaWNhbCBvciAoaW4gdGhl IGNhc2Ugb2YgSUVFRTEzOTQpIGlzIG5vdCBrbm93biB0byBzdXBwb3J0CiAgdGhlc2UgaW50ZXJm YWNlcy4gIFRoYW5rcyB0byBNYXJpdXMgR2VkbWluYXMgYW5kIEFuZHJldyBQb2xsb2NrIG9mIERl Ymlhbi4KCi0gU29tZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCByZWFzb25zIGZvciBkaGNsaWVu dC1zY3JpcHQgaW52b2tpbmcgaGFzCiAgYmVlbiBkb2N1bWVudGVkIGluIHRoZSBkaGNsaWVudC1z Y3JpcHQuOCBtYW5wYWdlLgoKLSBGYWlsb3ZlciBwb3RlbnRpYWwgZXhwaXJ5IGNhbGN1bGF0aW9u cyAoVFNUUCkgaGF2ZSBiZWVuIGNvcnJlY3RlZC4KUmVzdWx0cwogIHNob3VsZCBiZSBzdWJzdGFu dGlhbGx5IG1vcmUgY29uc2lzdGVudCwgYW5kIHByb3BlciBnaXZlbiB0aGUgY29uc3RyYWludHMu CgotIEFkanVzdGVkIGxlYXNlIHN0YXRlIHZhbGlkYXRpb24gY2hlY2tzIGluIHBvdGVudGlhbC1j b25mbGljdCwgdG8KICBhY2NvdW50IGZvciBwb3NzaWJsZSBjbG9jayBza2V3IHNpbWlsYXJseSB0 byBub3JtYWwgc3RhdGUsIGFuZCBzZXZlcmFsCiAgcHJldmlvdXNseSBpbGxlZ2FsIHRyYW5zaXRp b25zIHdlcmUgbWFkZSBsZWdhbCAoZXg6IGFjdGl2ZS0+cmVsZWFzZWQpLgoKLSBBbiBpbXBvc3Np YmxlIHNhbml0eSBjaGVjayB3YXMgcmVtb3ZlZCBmcm9tIG9tYXBpL2J1ZmZlci5jLCB0aGFua3Mg dG8gYQogIHBhdGNoIGZyb20gJ2luZmFtb3VzNDJtZCcuCgotIEFuIE9NQVBJIGhvc3QvbmV0d29y ayBieXRlIG9yZGVyIHByb2JsZW0gaW4gbGVhc2UgdGltZSB2YWx1ZXMgaGFzIGJlZW4KICByZXBh aXJlZC4KCi0gU2V2ZXJhbCBtaW5vciBidWdzLCBsYXJnZWx5IHJlbGF0aW5nIHRvIHRyZWF0aW5n IDgtYnl0ZSB0aW1lIHZhbHVlcyBhcwogIDQtYnl0ZSBlbnRpdGllcywgaGF2ZSBiZWVuIHJlcGFp cmVkIGFmdGVyIGNhcmVmdWwgcmV2aWV3IG9mIHRoZSBGcmVlQlNECiAgcG9ydHMgY29sbGVjdGlv bidzIHBhdGNoIHNldC4gIFRoYW5rcyB0byB0aGUgbmFtZWxlc3MgZW50aXRpZXMgd2hvIGhhdmUK ICBjb250cmlidXRlZCB0byB0aGUgRnJlZUJTRCBwb3J0cy4KCi0gV2hlbiB3cml0aW5nIGEgdHJh Y2UgZmlsZSwgdGhlIGZpbGUgaXMgbm93IGNyZWF0ZWQgd2l0aCBwZXJtaXNzaW9ucyAwNjAwLAog IHRvIGhlbHAgYWRtaW5pc3RyYXRvcnMgYXZvaWQgYWNjaWRlbnRhbGx5IHB1YmxpY2lzaW5nIHNl bnNpdGl2ZSBjb25maWcKICBkYXRhLgoKLSBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIG1heGltdW0g c2l6ZSBvZiBESENQIHBhY2tldHMgbm8gbG9uZ2VyIGluY2x1ZGVzCiAgRXRoZXJuZXQgZnJhbWlu ZyBvdmVyaGVhZC4gIFRoZSByZXN1bHQgaXMgdGhhdCB0aGUgJ01heGltdW0gTWVzc2FnZQogIFNp emUnIG9wdGlvbiBhZHZlcnRpc2VkIGJ5IGNsaWVudHMsIG9yIHRoZSBkZWZhdWx0IHZhbHVlIDU3 NiwgaXMgbm8KICBsb25nZXIgcmVkdWNlZCBieSAxNCBieXRlcywgYW5kIGluc3RlYWQgZGlyZWN0 bHkgcmVmbGVjdHMgdGhlIElQIGxldmVsCiAgTVRVIChhbmQgdGhlIGRlZmF1bHQsIG1pbmltdW0g YWxsb3dlZCBJUCBNVFUgb2YgNTc2KS4KCi0gVGhlIHNwZWNpYWwgc3RhdHVzIG9mIFJFTEVBU0VE L0VYUElSRUQvUkVTRVQgbGVhc2VzIHdoZW4gYSBzZXJ2ZXIKICBpcyBvcGVyYXRpbmcgaW4gcGFy dG5lci1kb3duIHdhcyBmaXhlZC4gIEl0IG5vIGxvbmdlciByZXF1aXJlcyBhCiAgbGVhc2UgYmUg dHdpY2UgdGhlIE1DTFQgYmV5b25kIFNUT1MgdG8gJ3JlYWxsb2NhdGUnLCBhbmQgdGhlIGV4cGly eQogIGV2ZW50IHRvIHR1cm4gdGhlc2UgaW50byBGUkVFIGxlYXNlcyB3aXRob3V0IHBlZXIgYWNr bm93bGVkZ2VtZW50CiAgKGFmdGVyIFNUT1MrTUNMVCkgaGFzIGJlZW4gcmVwYWlyZWQuCgotIENv bXBpbGF0aW9uIG9uIG9sZGVyIFNvbGFyaXMgc3lzdGVtcyAobGFja2luZwovdXNyL2luY2x1ZGUv c3lzL2ludF90eXBlcy5oKQogIGhhcyBiZWVuIHJlcGFpcmVkLgoKLSAiYXBwZW5kImluZyBhIHN0 cmluZyBvbnRvIHRoZSBlbmQgb2YgYSAidCIgdHlwZSBvcHRpb24gKHN1Y2ggYXMgdGhlCiAgZG9t YWluLW5hbWUgZmllbGQpIHRoYXQgaGFkIGJlZW4gaW1wcm9wZXJseSBOVUxMLXRlcm1pbmF0ZWQg YnkgdGhlCiAgREhDUCBzZXJ2ZXIgd2lsbCBubyBsb25nZXIgcmVzdWx0IGluIGEgdHJ1bmNhdGVk IHN0cmluZyBjb250YWluaW5nCiAgb25seSB0aGUgb3B0aW9uIGZyb20gdGhlIHNlcnZlciwgYW5k IG5vdCB0aGUgZXhwZWN0ZWQgYXBwZW5kZWQgdmFsdWUuCiAgVGhhbmtzIHRvIGEgcGF0Y2ggZnJv bSBKYXNvbiBWYXMgRGlhcyBhdCBSZWQgSGF0LgoKLSBGaWxlIGhhbmRsZXJzIG9uIGNvbmZpZ3Vy YXRpb24gc3RhdGUgKGNvbmZpZyBmaWxlcyBhbmQgbGVhc2UgZGJzKSBzaG91bGQKICBiZSB0cmVh dGVkIGNvbnNpc3RlbnRseSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFRSQUNJTkcgaXMgZGVmaW5l ZCBvciBub3QuCgotIFRoZSBMaW51eCBidWlsZCBlbnZpcm9ubWVudCBoYXMgaGFkIHNvbWUgbWlu b3IgaW1wcm92ZW1lbnRzIC0gYmV0dGVyCiAgc2Vuc2luZyBvZiA2NC1iaXQgcG9pbnRlciBzaXpl cyAob25seSB1c2VkIGZvciBlc3RhYmxpc2hpbmcgYW4gaWNtcF9pZCksCiAgYW5kIGNvcnJlY3Rp b25zIHRvICNpZiBvcGVyYXRvcnMgcmVnYXJkaW5nIExJTlVYX01BSk9SIHNob3VsZCBpdCBldmVy CiAgbW92ZSB0byAzLlswMV0ueC4KCi0gVGhlIHNlcnZlciBub3cgdHJpZXMgaGFyZGVyIHRvIHN1 cnZpdmUgdGhlIGNvbmRpdGlvbiB3aGVyZSBpdCBpcyB1bmFibGUKICB0byBvcGVuIGEgbmV3IGxl YXNlIGZpbGUgdG8gcmV3cml0ZSB0aGUgbGVhc2Ugc3RhdGUgZGF0YWJhc2UuCgoJCQlDaGFuZ2Vz IHNpbmNlIDMuMC4zYjMKCi0gZGhjbGllbnQuY29uZiBkb2N1bWVudGF0aW9uIGZvciBpbnRlcmZh Y2Uge30gd2FzIHVwZGF0ZWQgdG8gcmVmbGVjdCByZWNlbnQKICBkaXNjdXNzaW9uIG9uIHRoZSBk aGNwLWhhY2tlcnMgbWFpbGluZyBsaXN0LgoKLSBJbiByZXNwb25zZSB0byByZXBvcnRzIHRoYXQg dGhlIHNvZnR3YXJlIGRvZXMgbm90IGNvbXBpbGUgb24gR0NDIDQuMC4wLAogIC1XZXJyb3Igd2Fz IHJlbW92ZWQgZnJvbSBNYWtlZmlsZS5jb25mIGZvciBhbGwgcGxhdGZvcm1zIHRoYXQgdXNlZCBp dC4KICBXZSB3aWxsIGFkZHJlc3MgdGhlIHRydWUgcHJvYmxlbSBpbiBhIGZ1dHVyZSByZWxlYXNl OyB0aGlzIGlzIGEgdGVtcG9yYXJ5CiAgd29ya2Fyb3VuZC4KCgkJCUNoYW5nZXMgc2luY2UgMy4w LjNiMgoKLSBBbiBlcnJvciBpbiBjb2RlIGNoYW5nZXMgaW50cm9kdWNlZCBpbiAzLjAuM2IyIHdh cyBjb3JyZWN0ZWQsIHdoaWNoIGNhdXNlZAogIHN0YXRpYyBCT09UUCBjbGllbnRzIHRvIHJlY2Vp dmUgcmFuZG9tIGFkZHJlc3Nlcy4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjNiMQoKLSBBIGJ1ZyB3 YXMgZml4ZWQgaW4gQk9PVFBSRVFVRVNUIGhhbmRsaW5nIGNvZGUgd2hlcmVpbiBzdGFsZSByZWZl cmVuY2VzIHRvCiAgaG9zdCByZWNvcmRzIHdvdWxkIGJlIGxlZnQgYmVoaW5kIG9uIGxlYXNlcyB0 aGF0IHdlcmUgbm90IGFsbG9jYXRlZCB0byB0aGUKICBjbGllbnQgY3VycmVudGx5IGJvb3Rpbmcg KGVnIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBob3N0IHdhcyBkZW5pZWQKYm9vdGluZykuCgotIFRo ZSBkaGNwZC5jb25mLjUgbWFucGFnZSB3YXMgdXBkYXRlZCB0byBiZSBtb3JlIGNsZWFyIGluIHJl Z2FyZHMgdG8KICBtdWx0aXBsZSBob3N0IGRlY2xhcmF0aW9ucyAodGhhbmtzIHRvIFZpbmNlbnQg TWNJbnR5cmUpLiAgJ0ludGVyaW0nIHN0eWxlCiAgZHluYW1pYyB1cGRhdGVzIHdlcmUgYWxzbyBy ZXRvdWNoZWQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4yCgotIEEgYnVnIHdhcyBmaXhlZCB3aGVy ZSBhIHNlcnZlciBtaWdodCBsb2FkIGJhbGFuY2UgYSBESENQIFJFUVVFU1QgdG8gaXRzCiAgcGVl ciBhZnRlciBhbHJlYWR5IGNob29zaW5nIG5vdCB0byBsb2FkIGJhbGFuY2UgdGhlIHByZWNlZGlu ZyBESVNDT1ZFUi4KICBUaGUgcGVlciBjYW5ub3QgYWxsb2NhdGUgdGhlIG9yaWdpbmF0aW5nIHNl cnZlcidzIGxlYXNlLgoKLSBJbiB0aGUgY2FzZSB3aGVyZSBhIHNlY29uZGFyeSBzZXJ2ZXIgbG9z dCBpdHMgc3RhYmxlIHN0b3JhZ2Ugd2hpbGUgdGhlCiAgcHJpbWFyeSB3YXMgc3RpbGwgaW4gY29t bXVuaWNhdGlvbnMtaW50ZXJydXB0ZWQsIGFuZCBjYW1lIGJhY2sgb25saW5lLAogIHRoZSBsZWFz ZSBkYXRhYmFzZXMgd291bGQgbm90IGJlIGZ1bGx5IHRyYW5zZmVycmVkIHRvIHRoZSBzZWNvbmRh cnkuCiAgVGhpcyB3YXMgZHVlIHRvIHRoZSBzZWNvbmRhcnkgZXJyYW50bHkgc2VuZGluZyBhbiBl eHRyYSBVUERSRVEgbWVzc2FnZQogIHdoZW4gdGhlIHByaW1hcnkgbWFkZSBpdHMgc3RhdGUgdHJh bnNpdGlvbiB0byBQQVJUTkVSLURPV04ga25vd24uCgotIFRoZSBwYWNrYWdlIHdpbGwgbm93IGNv bXBpbGUgY2xlYW5seSBpbiBnY2MgMy4zIGFuZCAzLjQuICBBcyBhIHNpZGUKZWZmZWN0LAogIGxl YXNlIHN0cnVjdHVyZXMgd2lsbCBiZSA5IGJ5dGVzIHNtYWxsZXIgb24gYWxsIHBsYXRmb3Jtcy4g IFRoYW5rcyB0bwogIEphc29uIFZhcyBEaWFzIGF0IFJlZCBIYXQuCgotIEludGVyZmFjZSBkaXNj b3ZlcnkgY29kZSBpbiBESVNDT1ZFUl9VTkNPTkZJR1VSRUQgbW9kZSBpcyBub3cKICBwcm9wZXJs eSByZXN0cmljdGVkIHRvIG9ubHkgZGV0ZWN0aW5nIGJyb2FkY2FzdCBpbnRlcmZhY2VzLiAgVGhh bmtzCiAgdG8gYSBwYXRjaCBmcm9tIEphc29uIFZhcyBEaWFzIGF0IFJlZCBIYXQuCgotIGRlY29k ZV91ZHBfaXBfaGVhZGVyIHdhcyBjaGFuZ2VkIHNvIHRoYXQgdGhlIElQIGFkZHJlc3Mgd2FzIGNv cGllZCBvdXQKICB0byBhIHZhcmlhYmxlLCByYXRoZXIgdGhhbiByZWZlcmVuY2VkIGJ5IGEgcG9p bnRlci4gIFRoaXMgZW5mb3JjZXMgNC1ieXRlCiAgYWxpZ25tZW50IG9mIHRoZSAzMi1iaXQgSVAg YWRkcmVzcyB2YWx1ZS4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gRHIuCiAgUGV0ZXIgUG9lbWwu CgotIEFuIGluY29ycmVjdCBsb2cgbWVzc2FnZSB3YXMgY29ycmVjdGVkIHRoYW5rcyB0byBhIHBh dGNoIGZyb20KICBEci4gUGV0ZXIgUG9lbWwuCgotIEEgYnVnIGluIERETlMgd2FzIHJlcGFpcmVk LCB3aGVyZSBpZiB0aGUgc2VydmVyJ3MgZmlyc3QgREROUyBhY3Rpb24gd2FzCiAgYSBERE5TIHJl bW92YWwgcmF0aGVyIHRoYW4gYSBERE5TIHVwZGF0ZSwgdGhlIHJlc29sdmVyIGxpYnJhcnkncwog IHJldHJhbnNtaXQgdGltZXIgYW5kIHJldHJ5IHRpbWVyIHdhcyBzZXQgdG8gdGhlIGRlZmF1bHQs IGltcGx5aW5nIGEKICAxNSBzZWNvbmQgdGltZW91dCBpbnRlcnZhbC4gIFdoaWNoIGlzIGEgbGl0 dGxlIGV4Y2Vzc2l2ZSBpbiBhIHN5bmNocm9ub3VzLAogIHNpbmdsZS10aHJlYWRlZCBzeXN0ZW0u ICBJbiBhbGwgY2FzZXMsIElTQyBESENQIHNob3VsZCBub3cgaG9sZCBmYXN0IHRvCiAgYSAxLXNl Y29uZCB0aW1lb3V0LCB0cnlpbmcgb25seSBvbmNlLgoKLSBUaGUgc2lhZGRyIGZpZWxkIHdhcyBi ZWluZyBpbXByb3Blcmx5IHNldCB0byB0aGUgc2VydmVyLWlkZW50aWZpZXIgd2hlbgogIHJlc3Bv bmRpbmcgdG8gREhDUCBtZXNzYWdlcy4gIFJGQzIxMzEgY2xhcmlmaWVkIHRoZSBzaWFkZHIgZmll bGQgYXMKICBtZWFuaW5nIHRoZSAnbmV4dCBzZXJ2ZXIgaW4gdGhlIGJvb3RzdHJhcCBwcm9jZXNz JywgZWcgYSB0ZnRwIHNlcnZlci4KICBUaGUgc2lhZGRyIGZpZWxkIGlzIG5vdyBsZWZ0IHplcm9l ZCB1bmxlc3MgbmV4dC1zZXJ2ZXIgaXMgY29uZmlndXJlZC4KCi0gbW9ja3VwX2xlYXNlKCkgY291 bGQgaGF2ZSByZXR1cm5lZCBpbiBhbiBlcnJvciBjb25kaXRpb24gKG9yIGluIHRoZQogIGNvbmRp dGlvbiB3aGVyZSBubyBmaXhlZC1hZGRyZXNzIHdhcyBmb3VuZCBtYXRjaGluZyB0aGUgc2hhcmVk CiAgbmV0d29yaykgd2l0aCBzdGFsZSByZWZlcmVuY2VzIHRvIGEgaG9zdCByZWNvcmQuICBUaGlz IGlzIHByb2JhYmx5IG5vdAogIGEgbWVtb3J5IGxlYWsgc2luY2UgaG9zdCByZWNvcmRzIGdlbmVy YWxseSBuZXZlciBkaWUgYW55d2F5LgoKLSBBIGJ1ZyB3YXMgcmVwYWlyZWQgd2hlcmUgZmFpbG92 ZXIgc2VydmVycyB3b3VsZCBsZXQgc3RhbGUgY2xpZW50CmlkZW50aWZpZXJzCiAgcGVyc2lzdCBv biBsZWFzZXMgdGhhdCB3ZXJlIHJlYWxsb2NhdGVkIHRvIG5ldyBjbGllbnRzIG5vdCBzZW5kaW5n IGFuIGlkLgoKLSBCaW5kaW5nIHNjb3BlcyAoInNldCB2YXIgPSB2YWx1ZTsiKSBhcmUgbm93IHJl bW92ZWQgZnJvbSBsZWFzZXMgYWxsb2NhdGVkCiAgYnkgZmFpbG92ZXIgcGVlcnMgaWYgdGhlIGxl YXNlIGhhZCBleHBpcmVkLiAgVGhpcyBzaG91bGQgaGVscCByZWR1Y2UgdGhlCiAgbnVtYmVyIG9m IHN0YWxlIGJpbmRpbmcgc2NvcGVzIG9uIGxlYXNlcy4KCi0gQSBzbWFsbCBtZW1vcnkgbGVhayB3 YXMgY2xvc2VkIGludm9sdmluZyBjbGllbnQgaWRlbnRpZmllcnMgbGFyZ2VyIHRoYW4KICA3IGJ5 dGVzLCBhbmQgZmFpbG92ZXIuCgotIENvbmZpZ3VyaW5nIGEgc3VibmV0IGluIGRoY3BkLmNvbmYg d2l0aCBhIHN1Ym5ldCBtYXNrIG9mIDMyIGJpdHMgbWlnaHQKICBjYXVzZSBhbiBpbnRlcm5hbCBm dW5jdGlvbiB0byBvdmVyZmxvdyBoZWFwLiAgVGhhbmtzIHRvIEphc29uIFZhcyBEaWFzCiAgYXQg UmVkIEhhdC4KCi0gU29tZSBpbmNvbnNpc3RlbmNpZXMgaW4gdHJlYXRpbmcgbnVtYmVycyB0aGF0 IHRoZSBsZXhlciBwYXJzZWQgYXMgJ05VTUJFUicKICBvciAnTlVNQkVSX09SX05BTUUnIHdhcyBy ZXBhaXJlZC4gIEhleGFkZWNpbWFsIHBhcnNpbmcgaXMgYWZmZWN0ZWQsIGFuZAogIHNob3VsZCB3 b3JrIGJldHRlci4KCi0gSW4gc2V2ZXJhbCBjYXNlcywgcGFyc2Ugd2FybmluZ3Mgd2VyZSBiZWlu ZyBpc3N1ZWQgYmVmb3JlIHRoZSBsZXhpY2FsCiAgdG9rZW4gaGFkIGJlZW4gYWR2YW5jZWQgdG8g dGhlIHRva2VuIHdob3NlIHZhbHVlIHdhcyBjYXVzaW5nIGFuIGVycm9yLi4uCiAgY2F1c2luZyBw YXJzZSB3YXJuaW5ncyB0byBjbGFpbSB0aGUgcHJvYmxlbSBpcyBvbiB0aGUgd3JvbmcgdG9rZW4u CgotIEhvc3QgZGVjbGFyYXRpb25zIG1hdGNoaW5nIG9uIGNsaWVudCBpZGVudGlmaWVyIGZvciBk eW5hbWljIGxlYXNlcyB3aWxsCiAgbm8gbG9uZ2VyIG1hdGNoIGZpeGVkLWFkZHJlc3MgaG9zdCBk ZWNsYXJhdGlvbnMgKHRoaXMgaXMgbm93IGlkZW50aWNhbAogIHRvIGJlaGF2aW91ciBmb3IgaG9z dCByZWNvcmRzIG1hdGNoaW5nIG9uIGhhcmR3YXJlIGFkZHJlc3MpLgoKCQkJQ2hhbmdlcyBzaW5j ZSAzLjAuMnJjMwoKLSBBIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIGNvbmZpZ3VyYXRpb24gZGly ZWN0aXZlLCAnbG9jYWwtYWRkcmVzcycsCiAgd2FzIGRvY3VtZW50ZWQgaW4gdGhlIGRoY3BkLmNv bmYgbWFucGFnZS4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjJyYzIKCi0gVHdvIHZhcmlhYmxlcyBp bnRyb2R1Y2VkIGluIDMuMC4yYjEgd2VyZSB1c2VkIHdpdGhvdXQgYmVpbmcgaW5pdGlhbGl6ZWQK ICBpbiB0aGUgY2FzZSB3aGVyZSBuZWl0aGVyIHRoZSBGSUxFIG5vciBTTkFNRSBmaWVsZHMgd2Vy ZSBhdmFpbGFibGUgZm9yCiAgb3ZlcmxvYWRpbmcuICBUaGlzIHdhcyByZXBhaXJlZC4KCi0gQSBo ZXJldG9mb3JlIGJlbGlldmVkIHRvIGJlIGltcG9zc2libGUgY29ybmVyIGNhc2Ugb2YgdGhlIG9w dGlvbgogIG92ZXJsb2FkaW5nIGltcGxlbWVudGF0aW9uIHR1cm5lZCBvdXQgdG8gYmUgcG9zc2li bGUgKCJVbmFibGUgdG8gc29ydAogIG92ZXJsb2FkZWQgb3B0aW9ucyBhZnRlciAxMCB0cmllcy4i KS4gIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgcmV3b3JrZWQKICB0byBjb25zaWRlciB0aGUgY2Fz ZSBvZiBhbiBvcHRpb24gc28gbGFyZ2UgaXQgd291bGQgcmVxdWlyZSBtb3JlIHRoYW4KICB0aHJl ZSBjaHVua3MgdG8gZml0LgoKLSBNYW55IG90aGVyIGluc3RhbmNlcyBvZiB2YXJpYWJsZXMgYmVp bmcgdXNlZCB3aXRob3V0IGJlaW5nIGluaXRpYWxpemVkCiAgd2VyZSByZXBhaXJlZC4KCi0gQW4g dW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBvbWFwaV9pb19kZXN0cm95KCkgbGVkIHRvIHRoZSBk aXNjb3ZlcnkKICB0aGF0IHRoaXMgZnVuY3Rpb24gbWF5IHJlc3VsdCBpbiBvcnBoYW5lZCBwb2lu dGVycyAoYW5kIGhlbmNlLCBhIG1lbW9yeQogIGxlYWspLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAu MnJjMQoKLSBhbGxvY2F0ZV9sZWFzZSgpIHdhcyByZXdyaXR0ZW4gdG8gcmVwYWlyIGEgYnVnIGlu IHdoaWNoIHRoZSBzZXJ2ZXIgd291bGQKICB0cnkgdG8gYWxsb2NhdGUgYW4gQUJBTkRPTkVEIGxl YXNlIHdoZW4gRlJFRSBsZWFzZXMgd2VyZSBhdmFpbGFibGUuCgoJCQlDaGFuZ2VzIHNpbmNlIDMu MC4yYjEKCi0gU29tZSBkaGNwLWV2YWwuNSBtYW5wYWdlIGZvcm1hdHRpbmcgd2FzIHJlcGFpcmVk LgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMQoKLSBBIGJ1ZyB3YXMgZml4ZWQgaW4gdGhlIHNlcnZl cidzICdvcHRpb24gb3ZlcmxvYWRpbmcnIGltcGxlbWVudGF0aW9uLAogIHdoZXJlIG9wdGlvbnMg bG9hZGVkIGludG8gdGhlICdmaWxlJyBhbmQgJ3NuYW1lJyBwYWNrZXQgZmllbGRzIHdlcmUKICBu b3QgYWxpZ25lZCBwcmVjaXNlbHkgYXMgcmZjMjEzMSBkaWN0YXRlcy4KCi0gVGhlIEZyZWVCU0Qg Y2xpZW50IHNjcmlwdCB3YXMgY2hhbmdlZCB0byBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIGEgZG9t YWluCiAgbmFtZSB3YXMgbm90IHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIuCgotIEEgbWVtb3J5IGxl YWsgaW4gJ29tc2hlbGwnIHBlciBlYWNoIGNvbW1hbmQgbGluZSBwYXJzZWQgd2FzCiAgcmVwYWly ZWQsIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gSmFya2tvIFRvcnBwYS4KCi0gTG9nIGZ1bmN0aW9u cyB3cml0aW5nIHRvIHN0ZGVyciB3ZXJlIGFkanVzdGVkIHRvIHVzZSB0aGUgU1RERVJSX0ZJTEVO TwogIHN5c3RlbSBkZWZpbml0aW9uIHJhdGhlciB0aGFuICcyJy4gIFRoaXMgaXMgYSBuby1vcCBm b3IgOTAlIG9mIHBsYXRmb3Jtcy4KCi0gT25lIGNhbGwgdG8gdHJhY2Vfd3JpdGVfcGFja2V0X2lv digpIGNvdW50ZWQgdGhlIG51bWJlciBvZiBpbyB2ZWN0b3JzCiAgaW5jb3JyZWN0bHksIGNhdXNp bmcgaW5jb25zaXN0ZW50IHRyYWNlZmlsZXMuICBUaGlzIHdhcyBmaXhlZC4KCi0gU29tZSBleHBy ZXNzaW9uIHBhcnNlIGZhaWx1cmUgbWVtb3J5IGxlYWtzIHdlcmUgY2xvc2VkLgoKLSBBIGhvc3Qg Ynl0ZSBvcmRlciBwcm9ibGVtIGluIHRyYWNlZmlsZXMgd2FzIHJlcGFpcmVkLgoKLSBQb29scyBj b25maWd1cmVkIGluIERIQ1BEIGZvciBmYWlsb3ZlciBwb3NzZXNzaW5nIHBlcm1pc3Npb24gbGlz dHMgdGhhdAogIHByZXZpb3VzbHkgd2VyZSBhc3N1bWVkIHRvIG5vdCBpbmNsdWRlIGR5bmFtaWMg Ym9vdHAgY2xpZW50cyBhcmUgbm93CiAgYSBsaXR0bGUgbW9yZSBwZXNzaW1pc3RpYy4gIFRoZSBy ZXN1bHQgaXMsIGRoY3BkIHdpbGwgbmFnIHlvdSBhYm91dCBqdXN0CiAgYWJvdXQgbW9zdCBwb29s cyB0aGF0IHBvc3Nlc3MgYSAnYWxsb3cnIHN0YXRlbWVudCB3aXRoIG5vICdkZW55JyB0aGF0CiAg d291bGQgZGVmaW5pdGVseSBtYXRjaCBhIGR5bmFtaWMgYm9vdHAgY2xpZW50LgoKLSBUaGUgJ2Rk bnMtdXBkYXRlLXN0eWxlJyBjb25maWd1cmF0aW9uIHdhcm5pbmcgYml0IG5vdyBpbnNpc3RzIHRo YXQKICB0aGUgY29uZmlndXJhdGlvbiBiZSBnbG9iYWxseSBzY29wZWQuCgotIFR3byBtZW1vcnkg bGVha3MgaW4gZGhjbGllbnQgd2VyZSBjbG9zZWQgdGhhbmtzIHRvIGEgcGF0Y2ggZnJvbSBGZWxp eAogIEZhcmthcy4KCi0gU29tZSBtaW5vciBidXQgZXhjZWxsZW50bHkgcGVkYW50aWMgZG9jdW1l bnRhdGlvbiBlcnJvcnMgd2VyZSBmaXhlZAogIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gVGhvbWFz IEtsYXVzbmVyLgoKLSBCdWdzIGluIG9wZXJhdG9yIHByZWNlZGVuY2UgaW4gZXhlY3V0YWJsZSBz dGF0ZW1lbnRzIGhhdmUgYmVlbiByZXBhaXJlZAogIG9uY2UgYWdhaW4uICBNb3JlIGxlZ2FsIHN5 bnRheGVzIHNob3VsZCBiZSBwYXJzZWQgbGVnYWxseS4KCi0gRmFpbGluZyB0byBpbml0aWFsaXpl IGEgdHJhY2VmaWxlIGZvciBhbnkgcmVhc29uIGlmIGEgdHJhY2VmaWxlIHdhcwogIHNwZWNpZmll ZCBpcyBub3cgYSBmYXRhbCBlcnJvci4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gQWxiZXJ0IEhl cnJhbnouCgotIENvcnJlY3RlZCBhIGJ1ZyBpbiB3aGljaCB0aGUgbnVtYmVyIG9mIGxlYXNlcyB0 cmFuc2ZlcnJlZCBhcyBjYWxjdWxhdGVkCiAgYnkgdGhlIGZhaWxvdmVyIHByaW1hcnkgYW5kIHNl bnQgdG8gcGVlcnMgaW4gUE9PTFJFU1AgcmVzcG9uc2VzIG1heSBiZQogIGluY29ycmVjdC4gIFRo aXMgdmFsdWUgaXMgbm90IGJlbGlldmVkIHRvIGJlIHVzZWQgYnkgb3RoZXIgZmFpbG92ZXIKICBp bXBsZW1lbnRhdGlvbnMsIGV4Y2VwdGluZyBwZXJoYXBzIGFzIGxvZ2dlZCBpbmZvcm1hdGlvbi4K Ci0gQ29ycmVjdGVkIGEgYnVnIGluIHdoaWNoICdkaGNwX2ZhaWxvdmVyX3NlbmRfcG9vbHJlc3Ao KScgd2FzIGluIGZhY3QKICBzZW5kaW5nIFBPT0xSRVEgbWVzc2FnZXMgaW5zdGVhZCBvZiBQT09M UkVTUCBtZXNhc2dlcy4gIFRoaXMgbWVzc2FnZQogIHdhcyBlc3NlbnRpYWxseSBpZ25vcmVkIHNp bmNlIGZhaWxvdmVyIHNlY29uZGFyaWVzIGVmZmVjdGl2ZWx5IGRvIG5vdAogIHJlc3BvbmQgdG8g UE9PTFJFUSBtZXNzYWdlcy4KCi0gVHlwZSBkZWZpbml0aW9ucyBmb3IgdmFyaW91cyBiaXR3aWR0 aHMgb2YgaW50ZWdlcnMgaW4gdGhlIHN1bm9zNS01CiAgYnVpbGQgb2YgSVNDIERIQ1AgaGF2ZSBi ZWVuIGZpeGVkLiAgSXQgc2hvdWxkIGNvbXBpbGUgYW5kIHJ1biBtb3JlCiAgZWFzaWx5IHdoZW4g YnVpbHQgaW4gNjQtYml0IGZvciB0aGlzIHBsYXRmb3JtLgoKLSAiYWxsb3cga25vd24tY2xpZW50 czsiIGlzIG5vdyBhIGxlZ2FsIHN5bnRheCwgdG8gYXZvaWQgY29uZnVzaW9uLgoKLSBJZiBvbmUg ZGhjcCBzZXJ2ZXIgY2hvb3NlcyB0byAnbG9hZCBiYWxhbmNlJyBhIHJlcXVlc3QgdG8gaXRzIGZh aWxvdmVyCiAgcGVlciwgaXQgZmlyc3QgY2hlY2tzIHRvIHNlZSBpZiBpdCBiZWxpZXZlcyBzYWlk IHBlZXIgaGFzIGEgZnJlZQogIGxlYXNlIHRvIGFsbG9jYXRlIGJlZm9yZSBpZ25vcmluZyB0aGUg RElTQ09WRVIuCgotIGxvZygpIHdhcyBsb2dnaW5nIGEgd29yayBidWZmZXIsIHJhdGhlciB0aGFu IHRoZSB2YWx1ZSByZXR1cm5lZCBieQogIGV4ZWN1dGluZyB0aGUgc3RhdGVtZW50cyBjb25maWd1 cmVkIGJ5IHRoZSB1c2VyLiAgSW4gc29tZSBjYXNlcywKICB0aGUgd29yayBidWZmZXIgYW5kIHRo ZSBpbnRlbmRlZCByZXN1bHRzIHdlcmUgdGhlIHNhbWUuICBJbiBzb21lIG90aGVyCiAgY2FzZXMs IHRoZXkgd2VyZSBub3QuICBUaGlzIHdhcyBmaXhlZCB0aGFua3MgdG8gYSBwYXRjaCBmcm9tIEd1 bm5hcgogIEZqb25lIGFuZCBkaXJlY3Rjb25uZWN0Lm5vLgoKLSBDb21waWxlciB3YXJuaW5ncyBm b3Igc29tZSBzdHJpbmcgdHlwZSBjb252ZXJzaW9ucyB3YXMgZml4ZWQsIHRoYW5rcwogIHRvIEFu ZHJlYXMgR3VzdGFmc3Nvbi4KCi0gVGhlIG5ldGJzZCBidWlsZCBlbnZpcm9ubWVudHMgd2VyZSBz aW1wbGlmaWVkIHRvIG9uZSwgaW4gd2hpY2gKICAtV2NvbnZlcnNpb24gaXMgbm90IHVzZWQsIHRo YW5rcyB0byBBbmRyZWFzIEd1c3RhZnNzb24uCgotIEhvdyByYW5kb21uZXNzIGluIHRoZSBiYWNr b2ZmLWN1dG9mZiBkaGNsaWVudCBjb25maWd1cmF0aW9uIHZhcmlhYmxlCiAgaXMgaW1wbGVtZW50 ZWQgd2FzIGJldHRlciBkb2N1bWVudGVkIGluIHRoZSBtYW5wYWdlLCBhbmQgdGhlIGJlaGF2aW91 cgogIG9mIGRoY2xpZW50IGluIFJFUVVFU1QgdGltZW91dCBoYW5kbGluZyB3YXMgY2hhbmdlZCB0 byBtYXRjaCB0aGF0IG9mCiAgRElTQ09WRVIgdGltZW91dCBoYW5kbGluZy4KCi0gT21hcGkgd2Fz IGhhcmRlbmVkIGFnYWluc3QgY2xpZW50cyB0aGF0IHBhc3MgaW4gbnVsbCB2YWx1ZXMsIHRoYW5r cwogIHRvIGEgcGF0Y2ggZnJvbSBNYXJrIEphc29uIERvbWludXMuCgotIEEgYnVnIHdhcyBmaXhl ZCBpbiBkaGNsaWVudCB0aGF0IGtlcHQgaXQgZnJvbSBkb2luZyBjbGllbnQtc2lkZQogIGRkbnMg dXBkYXRlcy4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20gQW5kcmVhcyBHdXN0YWZzc29uLCB3aGlj aAogIHVuZGVyd2VudCBzb21lIG1vZGlmaWNhdGlvbiBhZnRlciByZXZpZXcgYnkgSmFzb24gVmFz IERpYXMuCgotIEZhaWxvdmVyIGltcGxlbWVudGF0aW9ucyBkaXNjb25uZWN0ZWQgZHVlIHRvIHRo ZSBuZXR3b3JrIGJldHdlZW4KICB0aGVtIChyYXRoZXIgdGhhbiBvbmUgb2YgdGhlIHR3byBzaHV0 dGluZyBkb3duKSB3aWxsIG5vdyB0cnkgdG8KICByZS1lc3RhYmxpc2ggdGhlIGZhaWxvdmVyIGNv bm5lY3Rpb24gZXZlcnkgNSBzZWNvbmRzLCByYXRoZXIgdGhhbgogIHRvIHNpbXBseSB0cnkgb25j ZSBhbmQgZ2l2ZSB1cCB1bnRpbCBvbmUgb2YgdGhlbSBpcyByZXN0YXJ0ZWQuCiAgVGhhbmtzIHRv IGEgcGF0Y2ggZnJvbSBVbGYgRWtiZXJnIGZyb20gSW5mb2Jsb3gsIGFuZCBmaWVsZCB0ZXN0aW5n CiAgYnkgR3JlZ2VyIFYuIFRlaWdyZSB3aGljaCBsZWQgdG8gYW4gZW5oYW5jZW1lbnQgdG8gaXQu CgotIEEgcHJvYmxlbSB0aGF0IGtlcHQgREhDUCBGYWlsb3ZlciBzZWNvbmRhcmllcyBmcm9tIHRl YXJpbmcgZG93bgogIGRkbnMgcmVjb3JkcyB3YXMgcmVwYWlyZWQuICBUaGFua3MgdG8gYSBwYXRj aCBmcm9tIFVsZiBFa2JlcmcgZnJvbQogIEluZm9ibG94LgoKLSA2NGJpdCBwb2ludGVyIHNpemVz IGFyZSBkZXRlY3RlZCBwcm9wZXJseSBvbiBGcmVlQlNEIG5vdy4KCi0gQSBidWcgd2FzIHJlcGFp cmVkIHdoZXJlIHRoZSBESENQIHNlcnZlciB3b3VsZCBsZWF2ZSBzdGFsZSByZWZlcmVuY2VzCiAg dG8gaG9zdCByZWNvcmRzIG9uIGxlYXNlcyBpdCBvbmNlIHRob3VnaHQgYWJvdXQgb2ZmZXJpbmcg dG8gY2VydGFpbgogIGNsaWVudHMuICBUaGUgcmVzdWx0IHdvdWxkIGJlIHRvIGFwcGx5IGhvc3Qg YW5kICdrbm93bicgc2NvcGVzIHRvIHRoZQogIHdyb25nIGNsaWVudHMgKHBvc3NpYmx5IGRlbnlp bmcgYm9vdGluZykuICBOT1RFOiAgVGhlICdtaXMtaG9zdCcgcGF0Y2gKICB0aGF0IHdhcyBiZWlu ZyBjaXJjdWxhdGVkIGFzIGEgd29ya2Fyb3VuZCBpcyBub3QgdGhlIHdheSB0aGlzIGJ1ZyB3YXMK ICBmaXhlZC4gIElmIHlvdSB3ZXJlIGEgdmljdGltIG9mIHRoaXMgYnVnIGluIDMuMC4xLCB5b3Ug YXJlIGNhdXRpb25lZAogIHRvIHByb2NlZWQgY2FyZWZ1bGx5IGFuZCBzZWUgaWYgaXQgZml4ZXMg eW91ciBwcm9ibGVtLgoKLSBBIGJ1ZyB3YXMgcmVwYWlyZWQgaW4gdGhlIHNlcnZlcidzIERIQ1BJ TkZPUk0gaGFuZGxpbmcsIHdoZXJlIGl0CiAgdHJpZWQgdG8gZGl2aW5lIHRoZSBjbGllbnQncyBh ZGRyZXNzIGZyb20gdGhlIHNvdXJjZSBwYWNrZXQgYW5kCiAgd291bGQgZ2V0IGl0IHdyb25nLiAg VGhhbmtzIHRvIEFuc2h1bWFuIFNpbmdoIFJhd2F0LgoKLSBBIGxvZyBtZXNzYWdlIHdhcyBpbnRy b2R1Y2VkIHRvIGhlbHAgaWxsdW1pbmF0ZSB0aGUgY2FzZSB3aGVyZSB0aGUKICBzZXJ2ZXIgd2Fz IHVuYWJsZSB0byBmaW5kIGEgbGVhc2UgdG8gYXNzaWduIHRvIGFueSBCT09UUCBjbGllbnQuCiAg VGhhbmtzIHRvIERhbmllbCBCYWtlci4KCi0gQSBtaW5vciBkaGNwZC5jb25mLjUgbWFucGFnZSBl cnJvciB3YXMgZml4ZWQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4xcmMxNAoKLSBUaGUgZ2xvYmFs IHZhcmlhYmxlICdjdXJfdGltZScgd2FzIGNlbnRyYWxpemVkIGFuZCBpcyBub3cgdW5pZm9ybWx5 IG9mIGEKICB0eXBlICNkZWZpbmVkIGluIHN5c3RlbS1kZXBlbmRlbnQgaGVhZGVycy4gIEl0IGhh ZCBwcmV2aW91c2x5IGJlZW4gZGVmaW5lZAogIGluIG9uZSBvZiBtYW55IHBsYWNlcyBhcyBhIDMy LWJpdCB2YWx1ZSwgYW5kIHRoaXMgY2F1c2VzIG1heWhlbSBvbiA2NC1iaXQKICBiaWcgZW5kaWFu IHN5c3RlbXMuICBJdCBwcm9iYWJseSB3YXNuJ3QgdG9vIGhlYWx0aHkgb24gbGl0dGxlIGVuZGlh bgogIHN5c3RlbXMgZWl0aGVyLgoKLSBBIHByaW50ZiBmb3JtYXQgc3RyaW5nIGVycm9yIGludHJv ZHVjZWQgaW4gcmMxNCB3YXMgcmVwYWlyZWQuCgotIEFJWCBzeXN0ZW0tZGVwZW5kZW50IGhlYWRl ciBmaWxlIHdhcyBhbHRlcmVkIHRvIG9ubHkgZGVmaW5lIE5PX1NOUFJJTlRGCiAgaWYgdGhlIGNv bmRpdGlvbiB1c2VkIHRvICNpZmRlZiBpbiB2c25wcmludGYgaW4gQUlYJyBoZWFkZXIgZmlsZXMK ICBpcyBmYWxzZS4KCi0gVGhlIEFscGhhL09TRiBzeXN0ZW0tZGVwZW5kZW50IGhlYWRlciBmaWxl IHdhcyBhbHRlcmVkIHRvIGRlZmluZQogIE5PX1NOUFJJTlRGIG9uIE9TIHJldmlzaW9ucyBvbGRl ciB0aGFuIDQuMEcuCgotIG9tYXBpcC90ZXN0LmMgaGFkIHN0cmluZy5oIGFkZGVkIHRvIGl0cyBp bmNsdWRlcy4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzEzCgohIENBTi0yMDA0LTA0NjAgLSBD RVJUIFZVIzMxNzM1MDogRml2ZSBzdGFjayBvdmVyZmxvdyBleHBsb2l0cyB3ZXJlIGNsb3NlZAog IGluIGxvZ2dpbmcgbWVzc2FnZXMgd2l0aCBleGNlc3NpdmVseSBsb25nIGhvc3RuYW1lcyBwcm92 aWRlZCBieSB0aGUKICBjbGllbnRzLiAgSXQgaXMgaGlnaGx5IHByb2JhYmxlIHRoYXQgdGhlc2Ug Y291bGQgaGF2ZSBiZWVuIHVzZWQgYnkKICBhdHRhY2tlcnMgdG8gZ2FpbiBhcmJpdHJhcnkgcm9v dCBhY2Nlc3Mgb24gc3lzdGVtcyB1c2luZyBJU0MgREhDUCAzLjAuMQogIHJlbGVhc2UgY2FuZGlk YXRlcyAxMiBvciAxMy4gIFNwZWNpYWwgdGhhbmtzIHRvIEdyZWdvcnkgRHVjaGVtaW4gZm9yCiAg Ym90aCBmaW5kaW5nIGFuZCBzb2x2aW5nIHRoZSBwcm9ibGVtLgoKISBDQU4tMjAwNC0wNDYxIC0g Q0VSVCBWVSM2NTQzOTA6IE9uY2UgdGhlIGFib3ZlIHdhcyBjbG9zZWQsIGFuIG9wZW5pbmcKICBp biBsb2dfKigpIGZ1bmN0aW9ucyB3YXMgZXZpZGVuY2VkLCBvbiBzb21lIHNwZWNpZmljIHBsYXRm b3JtcyB3aGVyZQogIHZzbnByaW50ZigpIHdhcyBub3QgYmVsaWV2ZWQgdG8gYmUgYXZhaWxhYmxl IGFuZCBjYWxscyB3ZXJlIHdyYXBwZWQgdG8KICBzcHJpbnRmKCkgaW5zdGVhZC4gIEFnYWluLCBj cmVkaXQgZ29lcyB0byBHcmVnb3J5IER1Y2hlbWluIGZvciBmaW5kaW5nCiAgdGhlIHByb2JsZW0u ICBDYWxscyB0byBzbnByaW50ZigpIGFyZSBub3cgbGlua2VkIHRvIGEgZGlzdHJpYnV0aW9uLWxv Y2FsCiAgc25wcmludGYgaW1wbGVtZW50YXRpb24sIG9ubHkgaW4gdGhvc2UgY2FzZXMgd2hlcmUg dGhlIGFyY2hpdGVjdHVyZSBpcwogIG5vdCBrbm93biB0byBwcm92aWRlIG9uZSAoc2VlIGluY2x1 ZGVzL2NmL1thcmNoXS5oKS4gIElmIHlvdSBleHBlcmllbmNlCiAgbGlua2luZyBwcm9ibGVtcyB3 aXRoIHNucHJpbnRmL3ZzbnByaW50ZiBvciAnaXNjX3ByaW50XycgZnVuY3Rpb25zLCB0aGlzCiAg aXMgd2hlcmUgdG8gbG9vay4gIFRoaXMgdnVsbmVyYWJpbGl0eSBkaWQgbm90IGV4aXN0IGluIGFu eSBwcmV2aW91c2x5CiAgcHVibGlzaGVkIHZlcnNpb24gb2YgSVNDIERIQ1AuCgotIENvbXBpbGF0 aW9uIG9uIGhwdXggMTEuMTEgd2FzIHJlcGFpcmVkLgoKLSAnVGhlIGNyb3NzLWNvbXBpbGUgYnVn IGZpeCcgd2FzIGJhY2tlZCBvdXQuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4xcmMxMgoKLSBGaXhl ZCBhIGJ1ZyBpbiBvbWFwaSBsZWFzZSBsb29rdXAgZnVuY3Rpb24sIHRvIGZvcm0gdGhlIGhhcmR3 YXJlCiAgYWRkcmVzcyBmb3IgdGhlIGhhc2ggbG9va3VwIGNvcnJlY3RseSwgdGhhbmtzIHRvIGEg cGF0Y2ggZnJvbQogIFJpY2hhcmQgSGlyc3QuCgotIEZpeGVkIGEgYnVnIHdoZXJlIGRoY3JlbGF5 IHdhcyBzZW5kaW5nIHJlbGF5ZWQgcmVzcG9uc2VzIGJhY2sgdG8gdGhlCiAgYnJvYWRjYXN0IGFk ZHJlc3MsIGJ1dCB3aXRoIHRoZSBzb3VyY2UncyB1bmljYXN0IG1hYyBhZGRyZXNzLiAgU2hvdWxk CiAgbm93IGNvbmZvcm0gdG8gcmZjMjEzMSBzZWN0aW9uIDQuMS4KCi0gQ3Jvc3MtY29tcGlsZSBi dWcgZml4OyB1c2UgJChBUikgaW5zdGVhZCBvZiBhci4gIFRoYW5rcyB0byBNb3J0ZW4gQnJvcnVw LgoKLSBGaXhlZCBhIGNyYXNoIGJ1ZyBpbiBkaGNsaWVudCB3aGVyZSBkaGNwZCBzZXJ2ZXJzIHRo YXQgZG8gbm90IHByb3ZpZGUKICByZW5ld2FsIHRpbWVzIHJlc3VsdHMgaW4gYW4gRlBFLiAgQXMg YSBzaWRlIGVmZmVjdCwgZGhjbGllbnQgY2FuIG5vdwogIHByb3Blcmx5IGhhbmRsZSAweEZGRkZG RkZGICgtMSkgZXhwaXJ5IHRpbWVzIHN1cHBsaWVkIGJ5IHNlcnZlcnMuICBUaGFua3MKICB0byBh IHBhdGNoIGZyb20gQnVydCBTaWx2ZXJtYW4uCgotIFRoZSAncGluZyB0aW1lb3V0JyBkZWJ1Z3Mg ZnJvbSByYzEyIHdlcmUgcmVtb3ZlZCB0byAtRERFQlVHIG9ubHksCiAgYW5kIHJlZm9ybWF0dGVk IHRvIGNvcnJlY3QgYSBjb21waWxhdGlvbiBlcnJvciBvbiBTb2xhcmlzIHBsYXRmb3Jtcy4KCi0g QSBwYXRjaCB3YXMgYXBwbGllZCB3aGljaCBmaXhlcyBhIGNhc2Ugd2hlcmUgbGVhc2VzIHJlYWQg ZnJvbSB0aGUKICBsZWFzZXMgZGF0YWJhc2UgZG8gbm90IHByb3Blcmx5IG92ZXItcmlkZSBwcmV2 aW91c2x5IHJlYWQgbGVhc2VzLgoKLSBkaGNwY3RsLjMgbWFucGFnZSB3YXMgdHdlYWtlZC4KCgkJ CUNoYW5nZXMgc2luY2UgMy4wLjFyYzExCgotIEEgcGF0Y2ggZnJvbSBTdGV2ZSBDYW1wYmVsbCB3 YXMgYXBwbGllZCB3aXRoIG1pbm9yIG1vZGlmaWNhdGlvbnMgdG8KICBwZXJtaXQgcmV2ZXJzZSBk bnMgUFRSIHJlY29yZCB1cGRhdGVzIHdpdGggdmFsdWVzIGNvbnRhaW5pbmcgc3BhY2VzLgoKLSBB IHBhdGNoIGZyb20gRmxvcmlhbiBMb2hvZmYgd2FzIGFwcGxpZWQgd2l0aCBzb21lIG1vZGlmaWNh dGlvbnMgdG8KICBkaGNyZWxheS4gIEl0IG5vdyBkaXNjYXJkcyBwYWNrZXRzIHdob3NlIGhvcCBj b3VudCBleGNlZWRzIDEwIGJ5IGRlZmF1bHQsCiAgYW5kIGEgY29tbWFuZC1saW5lIG9wdGlvbiAo LWMpIGNhbiBiZSB1c2VkIHRvIHNldCB0aGlzIHRocmVzaG9sZC4KCi0gQSBmYWlsb3ZlciBidWcg cmVsYXRpbmcgdG8gaWRlbnRpZnlpbmcgcGVlcnMgYnkgbmFtZSBsZW5ndGggaW5zdGVhZCBvZgog IGJ5IG5hbWUgd2FzIGZpeGVkLgoKLSBEZWNsYXJpbmcgZmFpbG92ZXIgY29uZmlncyB3aXRoaW4g c2hhcmVkLW5ldHdvcmsgc3RhdGVtZW50cyBzaG91bGQgbm8KICBsb25nZXIgcmVzdWx0IGluIGVy cm9yLgoKLSBUaGUgLW53IGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZGhjbGllbnQgbm93IHdvcmtz LgoKLSBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIE1pY2hhZWwgUmljaGFyZHNvbjoKCS0gU29tZSBw cm9ibGVtcyB3aXRoIGxvbmcgb3B0aW9uIHByb2Nlc3NpbmcgaGF2ZSBiZWVuIGZpeGVkLgoJLSBT b21lIGZpeGVzIHRvIG1pbmlyZXMgc28gdGhhdCB1cGRhdGVzIG9mIEtFWSByZWNvcmRzIHdpbGwg d29yay4KCi0gY29udHJpYi9tczJpc2Mgd2FzIHVwZGF0ZWQgYnkgU2h1LU1pbiBDaGFuZyBvZiB0 aGUgSW50ZWwgQ29ycG9yYXRpb24uCiAgc2VlIGNvbnRyaWIvbXMyaXNjL3JlYWRtZS50eHQgZm9y IHJldmlzaW9uIG5vdGVzLgoKLSBEaGNsaWVudCBubyBsb25nZXIgdXNlcyBzaGVsbCBjb21tYW5k cyB0byBraWxsIGFub3RoZXIgaW5zdGFuY2Ugb2YKICBpdHNlbGYsIGl0IHNlbmRzIHRoZSBzaWdu YWwgZGlyZWN0bHkuICBUaGFua3MgdG8gYSBwYXRjaCBmcm9tIE1hcnRpbgogIEJsYXBwLgoKLSBU aGUgRnJlZUJTRCBkaGNsaWVudC1zY3JpcHQgd2FzIGNoYW5nZWQgc28gdGhhdCBhIGZhaWx1cmUg dG8gd3JpdGUgdG8KICAvZXRjL3Jlc29sdi5jb25mIGRvZXMgbm90IHByZW1hdHVyZWx5IGVuZCB0 aGUgc2NyaXB0LiAgVGhpcyBrZWVwcyBkaGNsaWVudAogIGZyb20gbG9vcGluZyBpbmZpbml0ZWx5 IHdoZW4gdGhpcyBpcyB0aGUgY2FzZS4gIFRoYW5rcyB0byBhIHBhdGNoIGZyb20KICBNYXJ0aW4g QmxhcHAuCgotIEEgcGF0Y2ggZnJvbSBCaWxsIFN0ZXBoZW5zIHdhcyBhcHBsaWVkIHdoaWNoIHJl c29sdmVzIGEgcHJvYmxlbSB3aXRoIGxlYXNlCiAgZXhwaXJ5IHRpbWVzIGluIGZhaWxvdmVyIGNv bmZpZ3VyYXRpb25zLgoKLSBBIG1lbW9yeSBsZWFrIGluIGNvbmZpZ3VyYXRpb24gcGFyc2luZyB3 YXMgY2xvc2VkIHRoYW5rcyB0byBhIHBhdGNoIGZyb20KICBTdGV2ZSBHLgoKLSBUaGUgZnVuY3Rp b24gd2hpY2ggZGlzY292ZXJzIGludGVyZmFjZXMgd2lsbCBub3cgc2tpcCBub24tYnJvYWRjYXN0 IG9yCiAgcG9pbnQtdG8tcG9pbnQgaW50ZXJmYWNlcywgdGhhbmtzIHRvIGEgcGF0Y2ggZnJvbSBE YXZpZCBCcm93bmxlZS4KCi0gT3B0aW9ucyBub3QgeWV0IGtub3duIGJ5IHRoZSBkaGNwZCBvciBk aGNsaWVudCBoYXZlIGhhZCB0aGVpciBuYW1lcwogIGNoYW5nZWQgc3VjaCB0aGF0IHRoZXkgZG8g bm90IGNvbnRhaW4gIyBzeW1ib2xzLCBpbiBjYXNlIHRoZXkgc2hvdWxkIGV2ZXIKICBhcHBlYXIg aW4gYSBsZWFzZSBmaWxlLiAgQW4gb3B0aW9uIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIG5hbWVkICIj MTQ0IiBpcwogIG5vdyAidW5rbm93bi0xNDQiLgoKLSBBbm90aGVyIHBhdGNoIGZyb20gQmlsbCBT dGVwaGVucyB3aGljaCBhbGxvd3MgdGhlIHBpbmctY2hlY2sgdGltZW91dCB0bwogIGJlIGNvbmZp Z3VyZWQgYXMgJ3BpbmctdGltZW91dCcuICBEZWZhdWx0cyB0byAxLgoKCQkJQ2hhbmdlcyBzaW5j ZSAzLjAuMXJjMTAKCi0gUG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MgaW4gbWluaXJlcyByZXBh aXJlZC4KCi0gQSBjaGFuZ2UgdG8gdGhlIGxpbnV4IGNsaWVudCBzY3JpcHQgdG8gdXNlIC9iaW4v YmFzaCwgc2luY2UgL2Jpbi9zaCBtYXkKICBub3QgYmUgYmFzaC4KCi0gU29tZSBtaXNzaW5nIHZh X2VuZCBjbGVhbnVwcyB0aGFua3MgdG8gYSBwYXRjaCBmcm9tIFRob21hcyBLbGF1c25lci4KCi0g QSBjb3JyZWN0aW9uIG9mIGJvb2xlYW4gcGFyc2luZyBzeW50YXggdmFsaWRhdGlvbiAtIHNvbWUg aWxsZWdhbCBzeW50YXhlcwogIHRoYXQgd29ya2VkIGJlZm9yZSBhcmUgbm93IGRldGVjdGVkIGFu ZCBwcm9kdWNlIGVycnMsIHNvbWUgbGVnYWwgc3ludGF4ZXMKICB0aGF0IGVycm9yZWQgYmVmb3Jl IHdpbGwgbm93IHdvcmsgcHJvcGVybHkuCgotIFNvbWUgc2VhcmNoLWFuZC1yZXBsYWNlIGVycm9y cyB0aGF0IGNhdXNlZCBzb21lIG9wdGlvbnMgdG8gY2hhbmdlIHRoZWlyCiAgbmFtZXMgd2FzIHJl cGFpcmVkLgoKLSBTaHUtbWluIENoYW5nIG9mIHRoZSBJbnRlbCBjb3Jwb3JhdGlvbiBoYXMgY29u dHJpYnV0ZWQgYSBwZXJsIHNjcmlwdCBhbmQKICBtb2R1bGUgdGhhdCBjb252ZXJ0cyB0aGUgTVMg TlQ0IERIQ1AgY29uZmlndXJhdGlvbiB0byBhIElTQyBESENQMwogIGNvbmZpZ3VyYXRpb24gZmls ZS4KCi0gQXBwbGllZCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkaGNwY3RsIG1lbW9yeSBsZWFrIHBh dGNoIHByb3ZpZGVkIGJ5IEJpbGwKICBTcXVpZXIgYXQgUmVlZkVkZ2UsIEluYy4gIChncm9vQHJl ZWZlZGdlLmNvbSkuCgotIE1pc3Npbmcgbm9uLW9wdGlvbmFsIGZhaWxvdmVyIHBlZXIgY29uZmln dXJhdGlvbnMgd2lsbCBub3cgcmVzdWx0IGluIGEKc29mdAogIGVycm9yIHJhdGhlciB0aGFuIGEg bnVsbCBkZXJlZmVyZW5jZS4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzkKCi0gQSBmb3JtYXQg c3RyaW5nIHdhcyBjb3JyZWN0ZWQgdG8gZml4IGNvbXBpbGVyIHdhcm5pbmdzLgoKLSBBIG51bWJl ciBvZiBzcGVsbGluZyBjb3JyZWN0aW9ucyB3ZXJlIG1hZGUgaW4gdGhlIG1hbiBwYWdlcy4KCi0g VGhlIGRoY2xpZW50LmNvbmYuNSBtYW4gcGFnZSB3YXMgY2hhbmdlZCB0byByZWZlciB0byBkby1m b3J3YXJkLXVwZGF0ZXMKICByYXRoZXIgdGhhbiBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQg ZG9lc24ndCBleGlzdC4KCi0gQSBGcmVlQlNELXNwZWNpZmljIGJ1ZyBpbiB0aGUgaW50ZXJmYWNl IHJlbW92YWwgaGFuZGxpbmcgd2FzIGZpeGVkLgoKLSBBIExpbnV4LXNwZWNpZmljIFRva2VuIFJp bmcgZGV0ZWN0aW9uIHByb2JsZW0gd2FzIGZpeGVkLgoKLSBIYXNoZXMgcmVtb3ZlZCBmcm9tIGFz LXlldC11bmtub3duIGFnZW50IG9wdGlvbnMsIGhhdmluZyB0aG9zZSBvcHRpb25zCiAgYXBwZWFy IGluIHJlYWxpdHkgYmVmb3JlIHdlIGtub3cgYWJvdXQgdGhlbSB3aWxsIG5vIGxvbmdlciBwcm9k dWNlCiAgc2VsZi1jb3JydXB0aW5nIGxlYXNlIGRhdGFiYXNlcy4KCi0gZGhjbGllbnQgd2lsbCB1 c2UgdGhlIHByb3BlciBwb3J0IG51bWJlcnMgbm93IHdoZW4gdXNpbmcgdGhlIC1nIG9wdGlvbi4K Ci0gQSBvcmRlci1vZi1vcGVyYXRpb25zIGJ1ZyB3aXRoIDIgbWF0Y2ggY2xhdXNlcyBpbiAxIGNs YXNzIHN0YXRlbWVudCBpcwogIGZpeGVkIHRoYW5rcyB0byBhIHBhdGNoIGZyb20gQW5kcmV3IE1h dGhlc29uLgoKLSBDb21waWxhdGlvbiBwcm9ibGVtcyBvbiBTb2xhcmlzIHdlcmUgZml4ZWQuCgot IENvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gYnVpbHQgd2l0aCBERUJVRyBvciBERUJVR19QQUNL RVQgd2VyZSByZXBhaXJlZC4KCi0gQSBmaXggdG8gdGhlIGRoY3AgYWNrIHByb2Nlc3Mgd2hpY2gg bWFrZXMgY2VydGFpbiBncm91cCBvcHRpb25zIHdpbGwgYmUKICBpbmNsdWRlZCBpbiB0aGUgZmly c3QgREhDUE9GRkVSIG1lc3NhZ2Ugd2FzIG1hZGUgdGhhbmtzIHRvIGEgcGF0Y2ggZnJvbQogIExp bmcgR291LgoKLSBBIGZldyBtZW1vcnkgbGVha3Mgd2VyZSByZXBhaXJlZCB0aGFua3MgdG8gcGF0 Y2hlcyBmcm9tIEJpbGwgU3F1aWVyIGF0CiAgUmVlZkVkZ2UsIEluYy4gIChncm9vQHJlZWZlZGdl LmNvbSkuCgotIEEgZml4IGZvciBzaGFyZWQtbmV0d29ya3MgdGhhdCBzb21ldGltZXMgZ2l2ZSBj bGllbnRzIG9wdGlvbnMgZm9yIHRoZQogIHdyb25nIHN1Ym5ldHMgKGluIHBhcnRpY3VsYXIsICdv cHRpb24gcm91dGVycycpIHdhcyBhcHBsaWVkLCB0aGFua3MgdG8KICBUZWQgTGVtb24gZm9yIHRo ZSBwYXRjaC4KCi0gT21zaGVsbCdzIGhhbmRsaW5nIG9mIGRvdHRlZCBvY3RldHMgYXMgdmFsdWVz IHdhcyBjaGFuZ2VkIHN1Y2ggdGhhdCBkb3RzCiAgb25lIGFmdGVyIHRoZSBvdGhlciBwcm9kdWNl IHplcm8gdmFsdWVzIGluIHRoZSBpbnRlZ2VyIHN0cmluZy4KCgkJCUNoYW5nZXMgc2luY2UgMy4w LjFyYzgKCi0gRml4IGEgZm9ybWF0IHN0cmluZyB2dWxuZXJhYmlsaXR5IGluIHRoZSBzZXJ2ZXIg dGhhdCBjb3VsZCBsZWFkIHRvIGEKICByZW1vdGUgcm9vdCBjb21wcm9taXNlIChkaXNjb3ZlcmVk IGJ5IE5HU0VDIFJlc2VhcmNoIFRlYW0sIHd3dy5uZ3NlYy5jb20pLgoKLSBBZGQgYWRkaXRpb25h bCBzdXBwb3J0IGZvciBOZXRCU0Qvc3BhcmM2NC4KCi0gRml4IGEgYnVnIGluIHRoZSBjb21tYW5k LWxpbmUgcGFyc2luZyBvZiB0aGUgY2xpZW50LiAgQWxzbywgcmVzb2x2ZQogIGEgbWVtb3J5IGxl YWsuCgotIEFkZCBiZXR0ZXIgc3VwcG9ydCBmb3Igc2hlbGxzIG90aGVyIHRoYW4gYmFzaCBpbiB0 aGUgTGludXggY2xpZW50CiAgc2NyaXB0LgoKLSBWYXJpb3VzIGJ1aWxkIGZpeGVzIGZvciBtb2Rl cm4gdmVyc2lvbnMgb2YgRnJlZUJTRCBhbmQgTGludXguCgotIEZpeCBhIGJhZCBib3VuZHMgY2hl Y2sgd2hlbiBwcmludGluZyBiaW5kaW5nIHN0YXRlIG5hbWVzLgoKLSBDbGFyaWZ5IGRvY3VtZW50 YXRpb24gYWJvdXQgZml4ZWQtYWRkcmVzcyBhbmQgbXVsdGlwbGUgYWRkcmVzc2VzLgoKLSBGaXgg YSB0eXBvIGluIHRoZSBhdXRob3JpdGF0aXZlIGVycm9yIG1lc3NhZ2UuCgotIE1ha2UgYSBsb2cg ZW50cnkgd2hlbiB3ZSBjYW4ndCB3cml0ZSBhIGJpbGxpbmcgY2xhc3MuCgotIFVzZSBjb252ZXJz aW9uIHRhcmdldHMgdGhhdCBhcmUgdGhlIHJpZ2h0IHNpemUgb24gYWxsIGFyY2hpdGVjdHVyZXMu CgotIEluY3JlbWVudCB0aGUgaG9wIGNvdW50IHdoZW4gcmVsYXlpbmcuCgotIExvZyBhIG1lc3Nh Z2Ugd2hlbiBsZWFzZSBzdGF0ZSBpcyBjaGFuZ2VkIHRocm91Z2ggT01BUEkuCgotIERvbid0IHJl cnVuIHRoZSBzaGFyZWRfbmV0d29yayB3aGVuIGV2YWx1YXRpbmcgdGhlIHBvb2wuCgotIEZpeCBh IHJldmVyc2VkIHRlc3QgaW4gdGhlIHBhcnNlci4KCi0gQ2hhbmdlIHRoZSB0eXBlIG9mIHJidWZf bWF4LgoKLSBNYWtlIEZUU19MQVNUIGEgbWFuaWZlc3QgY29uc3RhbnQgdG8gcXVpZXQgd2Fybmlu Z3MuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4xcmM3CgotIEZpeCB0d28gY29tcGlsZXIgd2Fybmlu Z3MgdGhhdCBhcmUgZ2VuZXJhdGVkIHdoZW4gY29tcGlsaW5nIG9uIFNvbGFyaXMKICB3aXRoIGdj Yy4gICBUaGVzZSBzdG9wIHRoZSBidWlsZCwgZXZlbiB0aG91Z2ggdGhleSB3ZXJlbid0IGFjdHVh bGx5CiAgZXJyb3JzLCBiZWNhdXNlIHdlIHByZWZlciB0aGF0IG91ciBidWlsZHMgZ2VuZXJhdGUg bm8gd2FybmluZ3MuCgoJCQlDaGFuZ2VzIHNpbmNlIDMuMC4xcmM2CgotIERvbid0IGFsbG93IGEg bGVhc2UgdGhhdCdzIGluIHRoZSBFWFBJUkVELCBSRUxFQVNFRCBvciBSRVNFVCBzdGF0ZQogIHRv IGJlIHJlbmV3ZWQuCgotIEltcGxlbWVudCBsZWFzZSBzdGVhbGluZyBmb3IgY2FzZXMgd2hlcmUg dGhlIHByaW1hcnkgaGFzIGZld2VyIGxlYXNlcwogIHRoYW4gdGhlIHNlY29uZGFyeSwgYXMgY2Fs bGVkIGZvciBieSB0aGUgc3RhbmRhcmQuCgotIEFkZCBhIGZ1ZGdlIGZhY3RvciB0byB0aGUgbGVh c2UgZXhwaXJ5IGFjY2VwdGFuY2UgY29kZSwgKHN1Z2dlc3RlZAogIGJ5IEtldmluIE1pbGxlciBv ZiBDTVUpLgoKLSBGaXggYSBidWcgaW4gcGVybWl0X2xpc3RfbWF0Y2ggdGhhdCBtYWRlIGl0IG11 Y2ggdG9vIHdpbGxpbmcgdG8gc2F5CiAgdGhhdCB0d28gcGVybWl0IGxpc3RzIG1hdGNoZWQuCgot IFVubGVzcyBERUJVR19ETlNfVVBEQVRFUyBpcyBkZWZpbmVkLCBwcmludCBtb3JlIHVzZXItZnJp ZW5kbHkgKGFuZAogIGFsc28gbW9yZSBjb21wYWN0KSBtZXNzYWdlcyBhYm91dCBETlMgdXBkYXRl cy4KCi0gRml4IGEgYnVnIGluIGdlbmVyYXRpbmcgd2lyZS1mb3JtYXQgZG9tYWluIG5hbWVzIGZv ciB0aGUgRlFETiBvcHRpb24uCgotIEZpeCBhIGJ1ZyB3aGVyZSB0aGUgRlFETiBvcHRpb24gd291 bGQgbm90IGJlIHJldHVybmVkIGlmIHRoZSBjbGllbnQKICByZXF1ZXN0ZWQgaXQsIGNvbnRyYXJ5 IHRvIHRoZSBzdGFuZGFyZC4KCi0gT24gRGFyd2luLCB1c2UgdGhlIEZyZWVCU0QgREhDUCBjbGll bnQgc2NyaXB0LgoKLSBPbiBOZXRCU0Qvc3BhcmMsIGRvbid0IGNoZWNrIGZvciBjYXN0aW5nIHdh cm5pbmdzLgoKLSBBZGQgYSBmbGFnIGluIHRoZSBESENQIGNsaWVudCB0byBkaXNhYmxlIHVwZGF0 aW5nIHRoZSBjbGllbnQncyBBCiAgcmVjb3JkIHdoZW4gc2VuZGluZyBhbiBGUUROIG9wdGlvbiBp bmRpY2F0aW5nIHRoYXQgdGhlIGNsaWVudCBpcwogIGdvaW5nIHRvIHVwZGF0ZSBpdHMgQSByZWNv cmQuCgotIEluIHRoZSBjbGllbnQsIGRvbid0IGF0dGVtcHQgYSBETlMgdXBkYXRlIHVudGlsIG9u ZSBzZWNvbmQgYWZ0ZXIKICBjb25maWd1cmluZyB0aGUgbmV3IElQIGFkZHJlc3MsIGFuZCBpZiB0 aGUgdXBkYXRlIHRpbWVzIG91dCwga2VlcAogIHRyeWluZyB1bnRpbCBhIHJlc3BvbnNlLCBwb3Np dGl2ZSBvciBuZWdhdGl2ZSwgaXMgcmVjZWl2ZWQgZnJvbSB0aGUKICBETlMgc2VydmVyLgoKLSBG aXggYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgYnVnIGluIHRoZSBESENQIGNsaWVudC4KCi0gQXBw bHkgc29tZSBGcmVlQlNELXNwZWNpZmljIGJ1ZyBmaXhlcyBzdWdnZXN0ZWQgYnkgTXVycmF5IFN0 b2tlbHkuCgotIEZpeCBhIGJ1ZyBpbiBuc19wYXJzZXJyKCksIHdoZXJlIGl0IHdhcyByZXR1cm5p bmcgdGhlIHdyb25nIHNvcnQKICBvZiByZXN1bHQgY29kZSBpbiBzb21lIGNhc2VzIChzdWdnZXN0 ZWQgYnkgQmVuIEhhcnJpcyBvZiB0aGUKICBOZXRCU0QgcHJvamVjdCkuCgotIEZpeCBhIGJ1ZyBp biBpc19pZGVudGlmaWVyKCksIHdoZXJlIGl0IHdhcyBjaGVja2luZyBhZ2FpbnN0IEVPRgogIGlu c3RlYWQgb2YgdGhlIEVORF9PRl9GSUxFIHRva2VuIChhbHNvIHN1Z2dlc3RlZCBieSBCZW4gSGFy cmlzKS4KCi0gRml4IGEgYnVnIHdoZXJlIGlmIGFuIG9wdGlvbiB1bml2ZXJzZSBjb250YWluZWQg bm8gb3B0aW9ucywgdGhlCiAgREhDUCBzZXJ2ZXIgY291bGQgZHVtcCBjb3JlIChXYWx0ZXIgU3Rl aW5lcikuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgaGFuZGxpbmcgb2YgZW5jYXBzdWxhdGVkIG9wdGlv bnMuCgotIEZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBOV0lQIHN1Ym9wdGlvbnMgZnJvbSBiZWlu ZyBwcm9jZXNzZWQuCgotIERlbGV0ZSB0aGUgRlRTX0JPT1RQIGFuZCBGVFNfUkVTRVJWRUQgc3Rh dGVzIGFuZCBpbXBsZW1lbnQgdGhlbQogIGFzIG1vZGlmaWVyIGZsYWdzIHRvIHRoZSBGVFNfQUNU SVZFIHN0YXRlLCBhcyBjYWxsZWQgZm9yIGluIHRoZQogIGZhaWxvdmVyIHByb3RvY29sIHN0YW5k YXJkLgoKLSBGaXggYnVncyBpbiB0aGUgcG9vbCBtZXJnaW5nIGNvZGUgdGhhdCByZXN1bHRlZCBp biByZWZlcmVuY2VzIGFuZAogIGRlcmVmZXJlbmNlcyBvZiBudWxsIHBvaW50ZXJzLiAgIFRoaXMg YnVnIGhhZCBubyBpbXBhY3QgdW5sZXNzIHRoZQogIFBPSU5URVJfREVCVUcgZmxhZyB3YXMgZGVm aW5lZC4KCi0gSW4gdGhlIHNlcnZlciwgYWRkZWQgYSBkby1mb3J3YXJkLXVwZGF0ZXMgZmxhZyB0 aGF0IGNhbiBiZSB1c2VkIHRvCiAgZGlzYWJsZSBmb3J3YXJkIHVwZGF0ZXMgaW4gYWxsIGNhc2Vz LCBzbyB0aGF0IHNpdGVzIHRoYXQgd2FudCB0aGUKICBjbGllbnRzIHRvIHRha2Ugc29sZSByZXNw b25zaWJpbGl0eSBmb3IgdXBkYXRpbmcgdGhlaXIgQSByZWNvcmQgY2FuCiAgZG8gc28uCgotIE1h a2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBvcHRpbWl6YXRpb24gb2YgUFRSIHJlY29yZCB1cGRh dGVzLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMXJjNQoKLSBJbmNsdWRlIHNvbWUgbmV3IGRvY3Vt ZW50YXRpb24gYW5kIGNoYW5nZXMgcHJvdmlkZWQgYnkgS2FybCBBdWVyLgoKLSBBZGQgYSB3b3Jr YXJvdW5kIGZvciBzb21lIExleG1hcmsgcHJpbnRlcnMgdGhhdCBzZW5kIGEgZG91YmxlLU5VTC0K ICB0ZXJtaW5hdGVkIGhvc3QtbmFtZSBvcHRpb24sIHdoaWNoIHdvdWxkIGJyZWFrIEROUyB1cGRh dGVzLgoKLSBGaXggYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiB0aGUgTUFDLWFkZHJlc3MgY2hlY2tp bmcgY29kZSBmb3IKICBESENQUkVMRUFTRSB0aGF0IHdhcyBhZGRlZCBpbiAzLjAuMXJjNS4KCi0g Rml4IGEgYnVnIHdoZXJlIGNsaWVudC1zcGVjaWZpYyBpbmZvcm1hdGlvbiB3YXMgbm90IGJlaW5n IGRpc2NhcmRlZAogIGZyb20gdGhlIGxlYXNlIHdoZW4gaXQgZXhwaXJlZCBvciB3YXMgcmVsZWFz ZWQsIHJlc3VsdGluZyBpbgogIHByb2JsZW1zIGlmIHRoZSBsZWFzZSB3YXMgcmVhbGxvY2F0ZWQg dG8gYSBkaWZmZXJlbnQgY2xpZW50LgoKLSBJZiBtb3JlIHRoYW4gb25lIGFsbG9jYXRpb24gcG9v bCBpcyBzcGVjaWZpZWQgdGhhdCBoYXMgdGhlIHNhbWUgc2V0CiAgb2YgY29uc3RyYWludHMgYXMg YW5vdGhlciBhbGxvY2F0aW9uIHBvb2wgb24gdGhlIHNhbWUgc2hhcmVkCiAgbmV0d29yaywgbWVy Z2UgdGhlIHR3byBwb29scy4KCi0gRG9uJ3QgcHJpbnQgYW4gZXJyb3IgaW4gZmFsbGJhY2tfZGlz Y2FyZCwgc2luY2UgdGhpcyBqdXN0IGNhdXNlcwogIGNvbmZ1c2lvbiBhbmQgZG9lcyBub3QgYXBw ZWFyIHRvIGJlIGhlbHBpbmcgdG8gZW5jb3VyYWdlIGFueW9uZSB0bwogIGZpeCB0aGlzIGJ1Zy4K CgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzQKCi0gRml4IGEgYnVnIHRoYXQgd291bGQgY2F1c2Ug dGhlIERIQ1Agc2VydmVyIHRvIHNwaW4gaWYgYXNrZWQgdG8gcGFyc2UKICBhIGNlcnRhaW4ga2lu ZCBvZiBpbmNvcnJlY3Qgc3RhdGVtZW50LgoKLSBGaXggYSByZWxhdGVkIGJ1ZyB0aGF0IHdvdWxk IHByZXZlbnQgYW4gZXJyb3IgZnJvbSBiZWluZyByZXBvcnRlZCBpbgogIHRoZSBzYW1lIGNhc2Uu CgotIEFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbi4KCi0gTWFrZSBzdXJlIHRoYXQgdGhlIGhhcmR3 YXJlIGFkZHJlc3MgbWF0Y2hlcyB0aGUgbGVhc2Ugd2hlbgogIHByb2Nlc3NpbmcgYSBESENQUkVM RUFTRSBtZXNzYWdlLgoKCQkJQ2hhbmdlcyBzaW5jZSAzLjAuMXJjMwoKLSBBIG1pbm9yIGJ1ZyBm aXggaW4gdGhlIGFyZ3VtZW50cyB0byBhIGxvZ2dpbmcgZnVuY3Rpb24gY2FsbC4KLSBEb2N1bWVu dGF0aW9uIHVwZGF0ZSBmb3IgZGhjcGQuY29uZi4KCgkJCUNoYW5nZXMgc2luY2UgMy4wLjFyYzIK Ci0gQWxsb3cgdGhlIHByaW1hcnkgdG8gc2VuZCBhIFBPT0xSRVEgbWVzc2FnZS4gICBUaGlzIGlz bid0IHdoYXQgdGhlIGN1cnJlbnQKICBmYWlsb3ZlciBkcmFmdCBzYXlzIHRvIGRvLCBzbyB3ZSBt YXkgaGF2ZSB0byBiYWNrIGl0IG91dCBpZiBJIGNhbid0CmdldCB0aGUKICBhdXRob3JzIHRvIHJl bGVudCwgYnV0IHRoZSBzY2hlbWUgZm9yIGJhbGFuY2luZyB0aGF0J3Mgc3BlY2lmaWVkIGluIHRo ZQogIGN1cnJlbnQgZHJhZnQgc2VlbXMgbmVlZGxlc3NseSBoYWlyeSwgc28gSSdtIGZsb2F0aW5n IGEgdHJpYWwgYmFsbG9vbi4KICBUaGUgcmMxIGNvZGUgZGlkIG5vdCBpbXBsZW1lbnQgdGhlIG1l dGhvZCBkZXNjcmliZWQgaW4gdGhlIGRyYWZ0IGVpdGhlci4KCgkJCUNoYW5nZXMgc2luY2UgMy4w LjFyYzEKCi0gVHJlYXQgTlhET01BSU4gYW5kIE5YUlJTRVQgYXMgc3VjY2VzcyB3aGVuIHdlIGFy ZSB0cnlpbmcgdG8gZGVsZXRlIGEKICBkb21haW4gb3IgUlJTRVQuICAgVGhpcyBhbGxvd3MgdGhl IERIQ1Agc2VydmVyIHRvIGZvcmdldCBhYm91dCBhIG5hbWUKICBpdCBhZGRlZCB0byB0aGUgRE5T IG9uY2UgaXQncyBiZWVuIHJlbW92ZWQsIGV2ZW4gaWYgdGhlIERIQ1Agc2VydmVyCiAgd2Fzbid0 IHRoZSBvbmUgdGhhdCByZW1vdmVkIGl0LgoKLSBJbnN0YWxsIGRlZmF1bHRzIGZvciBmYWlsb3Zl ciBtYXhpbXVtIG91dHN0YW5kaW5nIHVwZGF0ZXMgYW5kIG1heGltdW0KICBzaWxlbnQgdGltZS4g ICBUaGlzIHByZXZlbnRzIHByb2JsZW1zIHRoYXQgbWlnaHQgb2NjdXIgaWYgdGhlc2UgdmFsdWVz CiAgd2VyZSBub3QgY29uZmlndXJlZC4KCi0gRG9uJ3QgZG8gREROUyBkZWxldGVzIGlmIGRkbnMt dXBkYXRlLXN0eWxlIGlzIG5vbmUuCgotIFJldHVybiByZWxheSBhZ2VudCBpbmZvcm1hdGlvbiBv cHRpb25zIGluIERIQ1BOQUsuICAgVGhpcyBwcmV2ZW50cyBESENQTkFLCiAgbWVzc2FnZXMgZnJv bSBiZWluZyBkcm9wcGVkIHdoZW4gdGhlIHJlbGF5IGFnZW50IGluZm9ybWF0aW9uIG9wdGlvbgpj b250YWlucwogIHJvdXRpbmcgaW5mb3JtYXRpb24uCgotIEZpeCBhIHByb2JsZW0gd2hlcmUgY29t aW5nIHVwIGluIHJlY292ZXIgd291bGRuJ3QgcmVzdWx0IGluIGFuIHVwZGF0ZQogIHJlcXVlc3Qg YmVpbmcgc2VudC4KCi0gQWRkIHNvbWUgbW9yZSBjaGF0dHkgbWVzc2FnZXMgd2hlbiB3ZSBzdGFy dCBhIHJlY292ZXJ5IHVwZGF0ZSBhbmQgd2hlbgppdCdzCiAgZG9uZS4KCi0gRml4IGEgcG9zc2li bGUgcHJvYmxlbSB3aGVyZSBzb21lIHN0YXRlIG1pZ2h0IGhhdmUgYmVlbiBsZWZ0IGFyb3VuZAog IGFmdGVyIHRoZSBwZWVyIGxvc3QgY29udGFjdCBhbmQgcmVnYWluZWQgY29udGFjdCBhYm91dCBo b3cgbWFueSB1cGRhdGVzCiAgd2VyZSBwZW5kaW5nLgoKLSBEb24ndCBuaXggYSBsZWFzZSB1cGRh dGUgYmVjYXVzZSBvZiBhIGxlYXNlIGNvbmZsaWN0LiAgIFRoaXMgdGVzdCBoYXMKICBuZXZlciAo YXMgZmFyIGFzIEkga25vdykgcHJldmVudGVkIGEgbWlzdGFrZSwgYW5kIGl0IGFwcGVhcnMgdG8g Y2F1c2UKICBwcm9ibGVtcyB3aXRoIGZhaWxvdmVyLgoKLSBBZGQgc3VwcG9ydCBpbiByYyBoaXN0 b3J5IGNvZGUgZm9yIGtlZXBpbmcgYSBzZWxlY3RpdmUgaGlzdG9yeSwgcmF0aGVyCiAgdGhhbiBh IGhpc3Rvcnkgb2YgYWxsIHJlZmVyZW5jZXMgYW5kIGRlcmVmZXJlbmNlcy4gICBUaGlzIGNvZGUg aXMgb25seQp1c2VkCiAgd2hlbiBleHRlbnNpdmUgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgaXMgZW5h YmxlZC4KCgkJCSAgIENoYW5nZXMgc2luY2UgMy4wCgotIE1ha2UgYWxsb2NhdG9ycyBmb3IgaGFz aCB0YWJsZXMuICAgQXMgYSBzaWRlIGVmZmVjdCwgdGhpcyBmaXhlcyBhIG1lbW9yeQogIHNtYXNo IGluIHRoZSBzdWJjbGFzcyBhbGxvY2F0aW9uIGNvZGUuCgotIEZpeCBhIHNtYWxsIGJ1ZyBpbiBv bXNoZWxsIHdoZXJlIGlmIHlvdSB0cnkgdG8gY2xvc2UgYW4gb2JqZWN0IHdoZW4KICBubyBvYmpl Y3QgaXMgb3BlbiwgaXQgZHVtcHMgY29yZS4KCi0gRml4IGFuIG9ic2N1cmUgY29yZWR1bXAgdGhh dCBjb3VsZCBvY2N1ciBvbiBzaHV0ZG93bi4KCi0gRml4IGEgYnVnIGluIHRoZSByZWNvcmRpbmcg b2YgaG9zdCBkZWNsYXJhdGlvbiBydWJvdXRzIGluIHRoZSBsZWFzZSBmaWxlLgoKLSBGaXggdHdv IHBvdGVudGlhbCBzcGlucyBpbiB0aGUgaG9zdCBkZWxldGlvbiBjb2RlLgoKLSBGaXggYSBjb3Jl IGR1bXAgdGhhdCB3b3VsZCBoYXBwZW4gaWYgYW4gYXBwbGljYXRpb24gdHJpZWQgdG8gdXBkYXRl CiAgYSBob3N0IG9iamVjdCBhdHRyaWJ1dGUgd2l0aCBhIG51bGwgdmFsdWUuCgoJCUNoYW5nZXMg c2luY2UgMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDEyCgotIEZpeCBhIG1lbW9yeSBsZWFrIGluIHRo ZSBldmFsdWF0aW9uIGNvZGUuCgotIEZpeCBhbiBvYnNjdXJlIGNvcmUgZHVtcC4KCi0gUHJpbnQg YSBjb3VwbGUgb2YgbmV3IHdhcm5pbmdzIHdoZW4gcGFyc2luZyB0aGUgY29uZmlndXJhdGlvbiBm aWxlCiAgd2hlbiBjcnVjaWFsIGluZm9ybWF0aW9uIGlzIGxlZnQgb3V0LgoKLSBMb2cgIm5vIGZy ZWUgbGVhc2VzIiBhcyBhbiBlcnJvci4KCi0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCQlDaGFu Z2VzIHNpbmNlIDMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxMQoKLSBBbHdheXMgcmV0dXJuIGEgc3Vi bmV0IHNlbGVjdGlvbiBvcHRpb24gaWYgb25lIGlzIHNlbnQuCgotIEZpeCBhIHdhcm5pbmcgdGhh dCB3YXMgYmVpbmcgcHJpbnRlZCBiZWNhdXNlIGFuIGF1dG9tYXRpYyBkYXRhCiAgc3RydWN0dXJl IHdhc24ndCB6ZXJvZWQuCgotIEZpeCBzb21lIGZhaWxvdmVyIHN0YXRlIHRyYW5zaXRpb25zIHRo YXQgd2VyZSBiZWluZyBoYW5kbGVkCiAgaW5jb3JyZWN0bHkuCgotIFdoZW4gc3VwZXJzZWRlX2xl YXNlIGlzIGNhbGxlZCBvbiBhIGxlYXNlIHdob3NlIGVuZCB0aW1lIGhhcyBhbHJlYWR5CiAgZXhw aXJlZCwgYnV0IGZvciB3aGljaCBhIHN0YXRlIHRyYW5zaXRpb24gaGFzIG5vdCB5ZXQgYmVlbiBk b25lLCBkbwogIGEgc3RhdGUgdHJhbnNpdGlvbi4gICBUaGlzIGZpeGVzIHRoZSBjYXNlIHdoZXJl IGlmIHRoZSBzZWNvbmRhcnkKICBhbGxvY2F0ZWQgYSBsZWFzZSB0byBhIGNsaWVudCBhbmQgdGhl IGxlYXNlICJleHBpcmVkIiB3aGlsZSB0aGUKICBzZWNvbmRhcnkgd2FzIGluIHBhcnRuZXItZG93 biwgbm8gZXhwaXJ5IGV2ZW50IHdvdWxkIGFjdHVhbGx5CiAgaGFwcGVuLCBzbyB0aGUgbGVhc2Ug d291bGQgcmVtYWluIGFjdGl2ZSB1bnRpbCB0aGUgcHJpbWFyeSB3YXMKICByZXN0YXJ0ZWQuCgoJ CUNoYW5nZXMgc2luY2UgMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDEwCgotIEZpeCBhIGJ1ZyB0aGF0 IHdhcyBwcmV2ZW50aW5nIHJlbGVhc2VkIGxlYXNlcyBmcm9tIGNoYW5naW5nIHN0YXRlCiAgaW4g ZmFpbG92ZXItZW5hYmxlZCBwb29scy4KCi0gRml4IGEgY29yZSBkdW1wIGluIHRoZSBjbGllbnQg aWRlbnRpZmllciBmaW5kZXIgY29kZSAoZm9yIGhvc3QKICBkZWNsYXJhdGlvbnMpLgoKLSBGaW5p c2ggZml4aW5nIGEgYnVnIHdoZXJlIGJvZ3VzIGRhdGEgd291bGQgc29tZXRpbWVzIGdldCBsb2dn ZWQgdG8KICB0aGUgZGhjbGllbnQubGVhc2VzIGZpbGUgYmVjYXVzZSBpdCB3YXMgb3BlbmVkIGFz IGRlc2NyaXB0b3IgMi4KCi0gRml4IHRoZSBMaW51eCBkaGNsaWVudC1zY3JpcHQgYWNjb3JkaW5n IHRvIHN1Z2dlc3Rpb25zIG1hZGUgYnkKICBzZXZlcmFsIHBlb3BsZSBvbiB0aGUgZGhjcC1jbGll bnQgbWFpbGluZyBsaXN0LgoKLSBMb2cgc3VjY2Vzc2Z1bCBETlMgdXBkYXRlcyBhdCBMT0dfSU5G Tywgbm90IExPR19FUlJPUi4KCi0gUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgcmVmdXNlIHRv IHJ1biBpZiBhIGZhaWxvdmVyIHBlZXIgaXMKICBkZWZpbmVkIGJ1dCBub3QgcmVmZXJlbmNlZCBi eSBhbnkgcG9vbHMuCgotIENvcnJlY3QgYSBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZSBpbiBmYWls b3Zlci4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgOQoKLSBGaXggYSBi dWcgaW4gbGVhc2UgYWxsb2NhdGlvbiBmb3IgRHluYW1pYyBCT09UUCBjbGllbnRzLgoKCSAgQ2hh bmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgOCBQYXRjaGxldmVsIDIKCi0gRml4IGEg YnVnIHRoYXQgcHJldmVudGVkIHVwZGF0ZS1zdGF0aWMtbGVhc2VzIGZyb20gd29ya2luZy4KCi0g RG9jdW1lbnQgZmFpbG92ZXItc3RhdGUgT01BUEkgb2JqZWN0LgoKLSBGaXggYSBjb21waWxhdGlv biBlcnJvciBvbiBTdW5PUyA0LgoKCSAgQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRh dGUgOCBQYXRjaGxldmVsIDEKCi0gRml4IGEgcGFyc2luZyBidWcgdGhhdCBicm9rZSBkbnMgdXBk YXRlcyAoYm90aCBpbnRlcmltIGFuZCBhZC1ob2MpLgogIFRoaXMgd2FzIGludHJvZHVjZWQgaW4g cmM4cGwxIGFzIGFuIHVuaW50ZW5kZWQgcmVzdWx0IG9mIHRoZSBtZW1vcnkKICBsZWFrYWdlIGZp eGVzIHRoYXQgd2VyZSBpbiBwbDEuCgotIEZpeCBhIGxvbmctc3RhbmRpbmcgYnVnIHdoZXJlIHRo ZSBzZXJ2ZXIgd291bGQgcmVjb3JkIHRoYXQgYW4gdXBkYXRlCiAgaGFkIGJlZW4gZG9uZSBmb3Ig YSBjbGllbnQgd2l0aCBubyBuYW1lLCBldmVuIHRob3VnaCBubyB1cGRhdGUgaGFkCiAgYmVlbiBk b25lLCBhbmQgdGhlbiB3aGVuIHRoZSBjbGllbnQncyBsZWFzZSBleHBpcmVkIHRoZSBkZWxldGlv biBvZgogIHRoYXQgbm9uZXhpc3RhbnQgcmVjb3JkIHdvdWxkIHRpbWUgb3V0IGJlY2F1c2UgdGhl IG5hbWUgd2FzIHRoZSBudWxsCiAgc3RyaW5nLgoKLSBDbGVhbiB1cCB0aGUgb21zaGVsbCwgZGhj cGN0bCBhbmQgb21hcGkgbWFuIHBhZ2VzIGEgYml0LgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBSZWxl YXNlIENhbmRpZGF0ZSA4CgotIEZpeCBhIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHRoZSBESENQIHNl cnZlciB0byBzcGluIGlmCiAgb25lLWxlYXNlLXBlci1jbGllbnQgd2FzIGVuYWJsZWQuCgotIEZp eCBhIGJ1ZyB0aGF0IHdhcyBjYXVzaW5nIGNvcmUgZHVtcHMgb24gQlNEL29zIGluIHRoZSBwcmVz ZW5jZSBvZgogIG1hbGZvcm1lZCBwYWNrZXRzLgoKLSBJbiBwYXJ0bmVyLWRvd24gc3RhdGUsIGRv bid0IHJlc3RyaWN0IGxlYXNlIGxlbmd0aHMgdG8gTUNMVC4KCi0gT24gdGhlIGZhaWxvdmVyIHNl Y29uZGFyeSwgcmVjb3JkIHRoZSBNQ0xUIHJlY2VpdmVkIGZyb20gdGhlIHByaW1hcnkKICBzbyB0 aGF0IGlmIHdlIGNvbWUgdXAgd2l0aG91dCBhIGNvbm5lY3Rpb24gdG8gdGhlIHByaW1hcnkgd2Ug ZG9uJ3QKICB3aW5kIHVwIGdpdmluZyBvdXQgemVyby1sZW5ndGggbGVhc2VzLgoKLSBGaXggc29t ZSBjb21waWxhdGlvbiBwcm9ibGVtcyBvbiBCU0Qvb3MuCgotIEZpeCBhIGJ1bmNoIG9mIG1lbW9y eSBsZWFrcy4KCi0gRml4IGEgY291cGxlIG9mIGJ1Z3MgaW4gdGhlIG9wdGlvbiBwcmludGVyLgoK LSBGaXggYW4gb2JzY3VyZSBlcnJvciByZXBvcnRpbmcgYnVnIGluIHRoZSBkbnMgdXBkYXRlIGNv ZGUsIGFuZCBhbHNvCiAgbWFrZSB0aGUgbWVzc2FnZSBjbGVhcmVyIHdoZW4gYSBrZXkgYWxnb3Jp dGhtIGlzbid0IHN1cHBvcnRlZC4KCi0gRml4IGEgYnVnIGluIHRoZSB0cmFjaW5nIGNvZGUgdGhh dCBwcmV2ZW50ZWQgdHJhY2UgcnVucyB0aGF0IHVzZWQKICB0Y3AgY29ubmVjdGlvbnMgZnJvbSBi ZWluZyBwbGF5ZWQgYmFjay4KCi0gQWRkIHNvbWUgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgY2FwYWJp bGl0eSBmb3IgY2F0Y2hpbmcgbWVtb3J5IGxlYWtzCiAgb24gZXhpdC4KCi0gTWFrZSB0aGUgY2xp ZW50IHJlbGVhc2UgdGhlIGxlYXNlIGNvcnJlY3RseSBvbiBzaHV0ZG93bi4KCi0gQWRkIHNvbWUg Y29uZmlndXJhYmlsaXR5IHRvIHRoZSBidWlsZCBzeXN0ZW0uCgotIEluc3RhbGwgb21zaGVsbCBt YW51YWwgcGFnZSBpbiBtYW4xLCBub3QgbWFuOC4KCi0gQ3JhaWcgR3d5ZGlyIHNlbnQgaW4gYSBw YXRjaCB0aGF0IGZpeGVzIGEgbG9uZy1zdGFuZGluZyBidWcgaW4gdGhlCiAgREhDUCBjbGllbnQg dGhhdCBjb3VsZCBjYXVzZSBjb3JlIGR1bXBzLCBidXQgdGhhdCBmb3Igc29tZSByZWFzb24KICBo YWRuJ3QgYmVlbiBub3RpY2VkIHVudGlsIG5vdy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFz ZSBDYW5kaWRhdGUgNwoKLSBGaXggYSBidWcgaW4gZmFpbG92ZXIgd2hlcmUgd2Ugd2VyZW4ndCBz ZW5kaW5nIHVwZGF0ZXMgYWZ0ZXIgYQogIHRyYW5zaXRpb24gZnJvbSBjb21tdW5pY2F0aW9ucy1p bnRlcnJ1cHRlZCB0byBub3JtYWwuCgotIEhhbmRsZSBleHBpcmVkL3JlbGVhc2VkL3Jlc2V0IC0+ IGZyZWUgdHJhbnNpdGlvbiBhY2NvcmRpbmcgdG8gdGhlCiAgcHJvdG9jb2wgc3BlY2lmaWNhdGlv biAodGhpcyB3b3JrcyAtIHRoZSBvdGhlciB3YXkgbm90IG9ubHkgd2Fzbid0CiAgY29uZm9ybWFu dCwgYnV0IGFsc28gZGlkbid0IHdvcmspLgoKLSBBZGQgYSBjb250cm9sIG9iamVjdCBpbiBib3Ro IGNsaWVudCBhbmQgc2VydmVyIHRoYXQgYWxsb3dzIGVpdGhlcgogIGRhZW1vbiB0byBiZSBzaHV0 IGRvd24gY2xlYW5seS4KCi0gV2hlbiB3cml0aW5nIGEgbGVhc2UsIGlmIHdlIHJ1biBvdXQgb2Yg ZGlzayBzcGFjZSwgc2h1dCBkb3duIHRoZQogIG91dHB1dCBmaWxlIGFuZCBpbnNpc3Qgb24gd3Jp dGluZyBhIG5ldyBvbmUgYmVmb3JlIHByb2NlZWRpbmcuCgotIEluIHRoZSBzZXJ2ZXIsIGlmIHRo ZSBPTUFQSSBsaXN0ZW5lciBwb3J0IGlzIG9jY3VwaWVkLCBrZWVwIHRyeWluZwogIHRvIGdldCBp dCwgcmF0aGVyIHRoYW4gc2ltcGx5IGdpdmluZyB1cCBhbmQgZXhpdGluZy4KCi0gU3VwcG9ydCBm ZXRjaGluZyB2YXJpYWJsZXMgZnJvbSBsZWFzZXMgYW5kIGFsc28gdXBkYXRpbmcgYW5kIGFkZGlu ZwogIHZhcmlhYmxlcyB0byBsZWFzZXMgdmlhIE9NQVBJLgoKLSBJZiB0d28gZmFpbG92ZXIgcGVl cnMgaGF2ZSB3aWxkbHkgZGlmZmVyZW50IGNsb2NrcywgcmVmdXNlIHRvIHN0YXJ0CiAgZG9pbmcg ZmFpbG92ZXIuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgRE5TIHVwZGF0ZSBjb2RlIHRoYXQgY291bGQg Y2F1c2UgY29yZSBkdW1wcyB3aGVuCiAgcnVubmluZyBvbiBhbHBoYSBwcm9jZXNzb3JzLgoKLSBG aXhlZCBhIGJ1ZyBpbiBkZG5zIHVwZGF0ZXMgZm9yIHN0YXRpYyBsZWFzZSBlbnRyaWVzLCB0aGFu a3MgdG8gYQogIHBhdGNoIGZyb20gQW5kcmV5IE0gTGlua2V2aXRjaC4KCi0gQWRkIHN1cHBvcnQg Zm9yIERhcndpbi9NYWNPUyBYCgotIEluc3RhbGwgb21zaGVsbCAoaW5jbHVkaW5nIG5ldyBkb2N1 bWVudGF0aW9uKS4KCi0gU3VwcG9ydCBETlMgdXBkYXRlcyBpbiB0aGUgY2xpZW50ICh0aGlzIGlz IGEgdmVyeSBvYnNjdXJlIGZlYXR1cmUKICB0aGF0IG1vc3QgREhDUCBjbGllbnQgdXNlcnMgcHJv YmFibHkgd2lsbCBub3QgYmUgYWJsZSB0byB1c2UpLgoKLSBTb21ld2hhdCBjbGVhbmVyIHN0YXR1 cyBsb2dnaW5nIGluIHRoZSBjbGllbnQuCgotIE1ha2UgT01BUEkga2V5IG5hbWluZyBzeW50YXgg Y29tcGF0aWJsZSB3aXRoIHRoZSB3YXkga2V5cyBhcmUKICBhY3R1YWxseSBuYW1lZCAoa2V5IG5h bWVzIGFyZSBkb21haW4gbmFtZXMpLgoKLSBGaXggYSBidWcgaW4gdGhlIGxlYXNlIGZpbGUgd3Jp dGVyLgoKLSBJbnN0YWxsIERIQ1AgSVNDIGhlYWRlcnMgaW4gYSBkaWZmZXJlbnQgcGxhY2UgdGhh biBCSU5EIDkgSVNDCiAgaGVhZGVycywgdG8gYXZvaWQgY2F1c2luZyB0cm91YmxlIGluIEJJTkQg OSBidWlsZHMuCgotIERvbid0IHNlbmQgdXBkYXRlcyBmb3IgYXR0cmlidXRlcyBvbiBhbiBvYmpl Y3Qgd2hlbiB0aGUgYXR0cmlidXRlcwogIGhhdmVuJ3QgY2hhbmdlZC4gICBTdXBwb3J0IGRlbGV0 aW5nIGF0dHJpYnV0ZXMgb24gcmVtb3RlIG9iamVjdHMuCgotIEZpeCBhIG51bWJlciBvZiBidWdz IGluIG9tc2hlbGwsIGFuZCBhZGQgdGhlIHVuc2V0IGFuZCByZWZyZXNoCiAgc3RhdGVtZW50cy4K Ci0gSGFuZGxlIGRpc2Nvbm5lY3RzIGluIE9NQVBJIGEgbGl0dGxlIGJpdCBtb3JlIGludGVsbGln ZW50bHkgKHNvIHRoYXQKICB0aGUgY2FsbGVyIGdldHMgRUNPTk5SRVNFVCBpbnN0ZWFkIG9mIEVJ TlZBTCkuCgotIEZpeCBhIGJ1bmNoIG9mIGJ1Z3MgaW4gdGhlIGhhbmRsaW5nIG9mIGNsaWVudHMg dGhhdCBoYXZlIGV4aXN0aW5nCiAgbGVhc2VzIHdoZW4gdGhlIHRyeSB0byByZW5ldyB0aGVpciBs ZWFzZXMgd2hpbGUgZmFpbG92ZXIgaXMKICBvcGVyYXRpbmcuCgoJCUNoYW5nZXMgc2luY2UgMy4w IFJlbGVhc2UgQ2FuZGlkYXRlIDYKCi0gRml4IGEgY29yZSBkdW1wIHRoYXQgY291bGQgaGFwcGVu IHdoZW4gcHJvY2Vzc2luZyBhIERIQ1BSRVFVRVNUIGZyb20KICBhIGNsaWVudCB0aGF0IGhhZCBh IGhvc3QgZGVjbGFyYXRpb24gdGhhdCBjb250YWluZWQgYm90aCBhCiAgZml4ZWQtYWRkcmVzcyBk ZWNsYXJhdGlvbiBhbmQgYSBkaGNwLWNsaWVudC1pZGVudGlmaWVyIG9wdGlvbgogIGRlY2xhcmF0 aW9uLCBpZiB0aGUgY2xpZW50IGlkZW50aWZpZXIgd2FzIGxvbmdlciB0aGFuIG5pbmUgYnl0ZXMu CgotIEZpeCBhIG1lbW9yeSBsZWFrIHRoYXQgY291bGQgaGFwcGVuIGluIGNlcnRhaW4gb2JzY3Vy ZSBjYXNlcyB3aGVuCiAgdXNpbmcgb21hcGkgdG8gbWFuaXB1bGF0ZSBsZWFzZXMuCgotIEZpeCBz b21lIGJ1Z3MgYW5kIG9taXNzaW9ucyBpbiBvbXNoZWxsLgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBS ZWxlYXNlIENhbmRpZGF0ZSA1CgotIEZpeCBhIGJ1ZyBpbiBvbWFwaV9vYmplY3RfZGVyZWZlcmVu Y2UgdGhhdCBwcmV2ZW50ZWQgb2JqZWN0cyBpbgogIGNoYWlucyBmcm9tIGhhdmluZyB0aGVpciBy ZWZlcmVuY2UgY291bnRzIGRlY3JlYXNlZCBvbiBkZXJlZmVyZW5jZS4KCi0gRml4IGEgYnVnIGlu IG9tYXBpX29iamVjdF9kZXJlZmVyZW5jZSB0aGF0IHdvdWxkIHByZXZlbnQgb2JqZWN0CiAgY2hh aW5zIGZyb20gYmVpbmcgZnJlZWQgdXBvbiByZW1vdmFsIG9mIHRoZSBsYXN0IHJlZmVyZW5jZSBl eHRlcm5hbAogIHRvIHRoZSBjaGFpbi4KCi0gRml4IGEgbnVtYmVyIG9mIG90aGVyIG1lbW9yeSBs ZWFrcyBpbiB0aGUgT01BUEkgcHJvdG9jb2wgc3Vic3lzdGVtLgoKLSBBZGQgY29kZSBpbiB0aGUg T01BUEkgcHJvdG9jb2wgaGFuZGxlciB0byB0cmFjZSBtZW1vcnkgbGVha2FnZS4KCi0gQ2xlYW4g dXAgdGhlIG1lbW9yeSBhbGxvY2F0aW9uL3JlZmVyZW5jZSBoaXN0b3J5IHByaW50ZXIuCgotIFN1 cHBvcnQgaW5wdXQgb2YgZG90dGVkIHF1YWRzIGFuZCBjb2xvbi1zZXBhcmF0ZWQgaGV4IGxpc3Rz IGFzCiAgYXR0cmlidXRlIHZhbHVlcyBpbiBvbXNoZWxsLgoKLSBGaXggYSB0eXBvIGluIHRoZSBM aW51eCBpbnRlcmZhY2UgZGlzY292ZXJ5IGNvZGUuCgotIENvbmRpdGlvbmFsaXplIGEgcGllY2Ug b2YgdHJhY2UgY29kZSB0aGF0IHdhc24ndCBjb25kaXRpb25hbC4KCgkJQ2hhbmdlcyBzaW5jZSAz LjAgUmVsZWFzZSBDYW5kaWRhdGUgNAoKLSBGaXggYSBidWcgdGhhdCB3b3VsZCBwcmV2ZW50IGxl YXNlcyBmcm9tIGJlaW5nIGFiYW5kb25lZCBwcm9wZXJseSBvbgogIERIQ1BERUNMSU5FLgoKLSBG aXggZmFpbG92ZXIgcGVlciBPTUFQSSBzdXBwb3J0LgoKLSBJbiBmYWlsb3ZlciwgY29ycmVjdGx5 IGhhbmRsZSBleHBpcmF0aW9uIG9mIGxlYXNlcy4gICBQcmV2aW91c2x5LAogIGxlYXNlcyB3b3Vs ZCBuZXZlciBiZSByZWNsYWltZWQgYmVjYXVzZSB0aGV5IGNvdWxkbid0IG1ha2UgdGhlCiAgdHJh bnNpdGlvbiBmcm9tIEVYUElSRUQgdG8gRlJFRS4KCi0gRml4IHNvbWUgYnJva2VuIGZhaWxvdmVy IHN0YXRlIHRyYW5zaXRpb25zLgoKLSBEb2N1bWVudGF0aW9uIGZpeGVzLgoKLSBUYWtlIG91dCBh biB1bm5lY2Vzc2FyeSBjaGVjayBpbiBESENQIHJlbGF5IGFnZW50IGluZm9ybWF0aW9uIG9wdGlv bgogIHN0YXNoaW5nIGNvZGUgdGhhdCB3YXMgcHJldmVudGluZyBSRUJJTkRJTkcgY2xpZW50cyBm cm9tIHJlYmluZGluZy4KCi0gUHJldmVudCBmYWlsb3ZlciBwZWVycyBmcm9tIGFsbG9jYXRpbmcg bGVhc2VzIGluIERIQ1BSRVFVRVNUCiAgcHJvY2Vzc2luZyBpZiB0aGUgbGVhc2UgYmVsb25ncyB0 byB0aGUgb3RoZXIgc2VydmVyLgoKLSBSZWNvcmQgc2VydmVyIHZlcnNpb24gaW4gbGVhc2UgZmls ZSBpbnRyb2R1Y3RvcnkgY29tbWVudC4KCi0gQ29ycmVjdGx5IHJlcG9ydCBjb25uZWN0aW9uIGVy cm9ycyBpbiBPTUFQSSBhbmQgZmFpbG92ZXIuCgotIE1ha2UgYXV0aGVudGljYXRpb24gc2lnbmF0 dXJlIGFsZ29yaXRobSBuYW1lIGNvbXBhcmlzb25zIGluIE9NQVBJCiAgY2FzZS1pbnNlbnNpdGl2 ZS4KCi0gRml4IGNvbXBpbGUgcHJvYmxlbSBvbiBTdW5PUyA0LngKCi0gSWYgYSBzaWduYXR1cmUg YWxnb3JpdGhtIGlzIG5vdCB0ZXJtaW5hdGVkIHdpdGggJy4nLCB0ZXJtaW5hdGUgaXQgc28KICB0 aGF0IGNvbXBhcmlzb25zIGJldHdlZW4gZnVsbHktcXVhbGlmaWVkIG5hbWVzIHdpbGwgd29yawog IGNvbnNpc3RlbnRseS4KCi0gRGlmZmVyZW50IFNJT0NHSUZDT05GIHByb2JlIGNvZGUsIG1heSAi Zml4IiBwcm9ibGVtIG9uIHNvbWUgTGludXgKICBzeXN0ZW1zIHdpdGggdGhlIHByb2JlIG5vdCB3 b3JraW5nIGNvcnJlY3RseS4KCi0gRG9uJ3QgYWxsb3cgdXNlciB0byB0eXBlIG9tYXBpIGtleSBv biBjb21tYW5kIGxpbmUgb2Ygb21zaGVsbC4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBD YW5kaWRhdGUgMwoKLSBEbyBsZWFzZSBiaWxsaW5nIG9uIHN0YXJ0dXAgaW4gYSB3YXkgdGhhdCBJ ICp0aGluayogd2lsbCBmaW5hbGx5IGRvCiAgdGhlIGJpbGxpbmcgY29ycmVjdGx5IC0gdGhlIHBy ZXZpb3VzIG1ldGhvZCBjb3VsZCBvdmVyYmlsbCBhcyBhCiAgcmVzdWx0IG9mIGR1cGxpY2F0ZSBs ZWFzZXMuCgotIERvY3VtZW50IE9NQVBJIHNlcnZlciBvYmplY3RzLgoKCSAgQ2hhbmdlcyBzaW5j ZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgMiBQYXRjaGxldmVsIDEKCi0gRml4IHNvbWUgcHJvYmxl bXMgaW4gdGhlIERETlMgdXBkYXRlIGNvZGUuICAgVGhhbmtzIHRvIEFsYmVydAogIEhlcnJhbnog Zm9yIGZpZ3VyaW5nIG91dCB0aGUgbWFpbiBwcm9ibGVtLgoKLSBGaXggc29tZSByZWZlcmVuY2Ug Y291bnRpbmcgZXJyb3JzIG9uIGhvc3QgZW50cmllcyB0aGF0IHdlcmUgY2F1c2luZwogIGNvcmUg ZHVtcHMuCgotIEZpeCBhIGJ5dGUtc3dhcCBidWcgaW4gdGhlIHRva2VuIHJpbmcgY29kZSwgdGhh bmtzIHRvIEpvY2hlbgogIEZyaWVkcmljaC4KCi0gRml4IGEgYnVnIGluIGxlYXNlIGJpbGxpbmcs IHRoYW5rcyB0byBKb25hcyBCdWxvdy4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5k aWRhdGUgMgoKLSBDaGFuZ2UgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBESENQUkVMRUFT RSBpcyBhY3R1YWxseQogIGNvbW1pdHRlZCB0byBiZSBjb25zaXN0ZW50IHdpdGggbGVhc2UgYmlu ZGluZyBzdGF0ZXMgcmF0aGVyIHRoYW4KICB1c2luZyB0aGUgbGVhc2UgZW5kIHRpbWUuICAgVGhp cyBtYXkgZml4IHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUKICBiaWxsaW5nIGNsYXNzIGNvZGUuCgot IEZpeCBhIGJ1ZyB3aGVyZSBsZWFzZSB1cGRhdGVzIHdvdWxkIGZhaWwgb24gRGlnaXRhbCBVbml4 IChhbmQgbWF5YmUKICBvdGhlcnMpIGJlY2F1c2UgbWFsbG9jIHdhcyBjYWxsZWQgd2l0aCBhIHNp emUgb2YgemVyby4KCi0gRml4IGEgY29yZSBkdW1wIHRoYXQgaGFwcGVucyB3aGVuIHRoZSBESENQ IHNlcnZlciBjYW4ndCBjcmVhdGUgaXRzCiAgdHJhY2UgZmlsZS4KCgkgIENoYW5nZXMgc2luY2Ug My4wIFJlbGVhc2UgQ2FuZGlkYXRlIDEgUGF0Y2hsZXZlbCAxCgotIEZpeCB0aGUgZGhjcF9mYWls b3Zlcl9wdXRfbWVzc2FnZSB0byBub3QgYXR0ZW1wdCB0byBhbGxvY2F0ZSBhCiAgemVyby1sZW5n dGggYnVmZmVyLiAgIFNvbWUgdmVyc2lvbnMgb2YgbWFsbG9jKCkgZmFpbCBpZiB5b3UgdHJ5IHRv CiAgYWxsb2NhdGUgYSB6ZXJvLWxlbmd0aCBidWZmZXIsIGFuZCB0aGlzIHdhcyBjYXVzaW5nIHBy b2JsZW1zIG9uLAogIGUuZy4sIERpZ2l0YWwgVW5peC4KCi0gRml4IGEgY2FzZSB3aGVyZSB0aGUg ZmFpbG92ZXIgY29kZSB3YXMgcHJpbnRpbmcgYW4gZXJyb3IgbWVzc2FnZQogIHdoZW4gbm8gZXJy b3IgaGFkIG9jY3VycmVkLgoKLSBGaXggYSBwcm9ibGVtIHdoZXJlIHdoZW4gYSBzZXJ2ZXIgd2Vu dCBkb3duIGFuZCBiYWNrIHVwIGFnYWluLCB0aGUKICBwZWVyIHdvdWxkIG5vdCBzZWUgYSBzdGF0 ZSB0cmFuc2l0aW9uIGFuZCBzbyB3b3VsZCBzdGF5IGluIHRoZQogIG5vbi1jb21tdW5pY2F0aW5n IHN0YXRlLgoKLSBCZSBzbWFydCBhYm91dCBnb2luZyBpbnRvIHJlY292ZXJfd2FpdC4KCi0gRml4 IGEgcHJvYmxlbSBpbiB0aGUgZmFpbG92ZXIgaW1wbGVtZW50YXRpb24gd2hlcmUgcGVlcnMgd291 bGQgZmFpbAogIHRvIGNvbWUgaW50byBzeW5jIGlmIGludGVycnVwdGVkIGluIHRoZSBSRUNPVkVS IHN0YXRlLiAgIFRoaXMgY291bGQKICBoYXZlIGJlZW4gdGhlIGNhdXNlIG9mIHNvbWUgcHJvYmxl bXMgcGVvcGxlIGhhdmUgcmVwb3J0ZWQgcmVjZW50bHkuCgotIEZpeCBhIHByb2JsZW0gd2l0aCBi aWxsaW5nIGNsYXNzZXMgd2hlcmUgdGhleSB3b3VsZCBub3QgYmUgdW5iaWxsZWQKICB3aGVuIHRo ZSBjbGllbnQgbGVhc2UgZXhwaXJlZC4KCi0gSWYgc2VsZWN0IGZhaWxzLCBmaWd1cmUgb3V0IHdo aWNoIGRlc2NyaXB0b3IgaXMgYmFkLCBhbmQgY3V0IGl0IG91dAogIG9mIHRoZSBJL08gbG9vcC4g ICBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsbHkgbmFzdHkgc3Bpbi4gIEkKICBoYXZlbid0IGhl YXJkIGFueSByZXBvcnQgaXQgaW4gYSB3aGlsZSwgYnV0IGl0IGNhbWUgdXAgY29uc2lzdGVudGx5 CiAgaW4gdGVzdGluZy4KCi0gRml4IGEgYnVnIGluIHRoZSByZWxheSBhZ2VudCB3aGVyZSBpZiB5 b3Ugc3BlY2lmaWVkIGludGVyZmFjZXMgb24KICB0aGUgY29tbWFuZCBsaW5lLCBpdCB3b3VsZCBm YWlsLgoKLSBGaXggYSBjb3VwbGUgb2Ygc21hbGwgYnVncyBpbiB0aGUgb21hcGkgY29ubmVjdGlv biBvYmplY3QgKG5vIGtub3duCiAgdXNlciBpbXBhY3QpLgoKLSBBZGQgdGhlIG1pc3NpbmcgMy4w IEJldGEgMSBsZWFzZSBjb252ZXJzaW9uIHNjcmlwdC4KCi0gUmVhZCBkaGNwIGNsaWVudCBzY3Jp cHQgaG9va3MgaWYgdGhleSBleGlzdCwgcmF0aGVyIHRoYW4gb25seSBpZgogIHRoZXkncmUgZXhl Y3V0YWJsZS4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgUmVsZWFzZSBDYW5kaWRhdGUgMQoKLSBGaXgg YSBtZW1vcnkgc21hc2ggdGhhdCBoYXBwZW5zIHdoZW4gZml4ZWQtYWRkcmVzcyBsZWFzZXMgYXJl IHVzZWQuCiAgQU5ZIFNJVEUgQVQgV0hJQ0ggRklYRUQtQUREUkVTUyBTVEFURU1FTlRTIEFSRSBC RUlORyBVU0VEIFNIT1VMRAogIFVQR1JBREUgSU1NRURJQVRFTFkuICAgVGhpcyBoYXMgYmVlbiBh IGxvbmctc3RhbmRpbmcgYnVnIC0gdGhhbmtzIHRvCiAgQWx2aXNlIE5vYmlsZSBmb3IgZGlzY292 ZXJpbmcgaXQgYW5kIGhlbHBpbmcgbWUgdG8gZmluZCBpdCEKCi0gRml4IGEgc21hbGwgYnVnIGlu IGJpbmFyeS10by1hc2NpaSwgdGhhbmtzIHRvIEguIFBldGVyIEFudmluIG9mCiAgVHJhbnNtZXRh LgoKLSBUaGVyZSBpcyBhIGtub3duIHByb2JsZW0gd2l0aCB0aGUgREhDUCBzZXJ2ZXIgZG9pbmcg ZmFpbG92ZXIgb24KICBDb21wYXEgQWxwaGEgc3lzdGVtcy4gICBUaGlzIHBhdGNobGV2ZWwgaXMg bm90IGEgcmVsZWFzZSBjYW5kaWRhdGUKICBiZWNhdXNlIG9mIHRoaXMgYnVnLiAgIFRoZSBidWcg c2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZCB0byBmaXgsIHNvCiAgYSBuZXcgcmVsZWFzZSBjYW5k aWRhdGUgaXMgZXhwZWN0ZWQgc2hvcnRseS4KCi0gVGhlcmUgaXMgYSBrbm93biBwcm9ibGVtIGlu IHRoZSBERE5TIHVwZGF0ZSBjb2RlIHRoYXQgaXMgcHJvYmFibHkgYQogIGJ1ZywgYW5kIGlzIG5v dCwgYXMgZmFyIGFzIHdlIGtub3csIGZpeGVkIGluIHRoaXMgcGF0Y2hsZXZlbC4KCgkJQ2hhbmdl cyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMjQKCi0gV2VudCBvdmVyIHByb2JsZW1hdGlj IGZhaWxvdmVyIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBtYWRlIHRoZW0gYWxsCiAgd29yaywgc28g dGhhdCBmYWlsb3ZlciBzaG91bGQgbm93IG11Y2ggbGVzcyBmcmFnaWxlLgoKLSBBZGQgc29tZSBk aGNwY3RsIGFuZCBvbWFwaSBkb2N1bWVudGF0aW9uCgotIEZpeCBjb21waWxlIGVycm9ycyB3aGVu IGNvbXBpbGluZyB3aXRoIHVudXN1YWwgcHJlZGVmaW5lcy4KCi0gTWFrZSBUb2tlbiBSaW5nIHdv cmsgb24gTGludXggMi40CgotIEZpeCB0aGUgRGlnaXRhbCBVbml4IEJQRl9XT1JEQUxJR04gYnVn LgoKLSBGaXggc29tZSBkaGNwIGNsaWVudCBkb2N1bWVudGF0aW9uIGVycm9ycy4KCi0gVXBkYXRl IHNvbWUgcGFydHMgb2YgdGhlIFJFQURNRSBmaWxlLgoKLSBTdXBwb3J0IEdDQyBvbiBTQ08uCgoJ CUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVsIDIzCgotIEZpeCBhIGJ1ZyBpbiB0 aGUgRE5TIHVwZGF0ZSBjb2RlIHdoZXJlIGEgc3RhdHVzIGNvZGUgd2FzIG5vdCBiZWluZwogIGNo ZWNrZWQuICAgVGhpcyBtYXkgaGF2ZSBiZWVuIGNhdXNpbmcgY29yZSBkdW1wcy4KCi0gV2hlbiBw YXJzaW5nIHRoZSBsZWFzZSBmaWxlLCBpZiBhIGxlYXNlIGRlY2xhcmF0aW9uIGluY2x1ZGVzIGEK ICBiaWxsaW5nIGNsYXNzIHN0YXRlbWVudCwgYW5kIHRoZSBsZWFzZSBhbHJlYWR5IGhhcyBhIGJp bGxpbmcgY2xhc3MsCiAgdW5iaWxsIHRoZSBvbGQgY2xhc3MuCgotIFdoZW4gcHJvY2Vzc2luZyBm YWlsb3ZlciB0cmFuc2FjdGlvbnMsIHdoZXJlIGFja3Mgd2lsbCBiZSBkZWZlcnJlZCwKICBwcm9j ZXNzIHRoZSBzdGF0ZSB0cmFuc2l0aW9uIGltbWVkaWF0ZWx5LgoKLSAgRG9uJ3QgdHJ5IHRvIHVz ZSB0aGUgbmV3IFNJT0NHSUZDT05GIGJ1ZmZlciBzaXplIGRldGVjdGlvbiBjb2RlIG9uCiAgIExp bnV4IDIuMCwgd2hpY2ggZG9lc24ndCBwcm92aWRlIHRoaXMgZnVuY3Rpb25hbGl0eS4KCi0gQXBw bHkgYSBwYXRjaCBzdWdnZXN0ZWQgYnkgVHVhbiBVb25nIGZvciBhIHByb2JsZW0gaW4gZGxwaS5j LgoKLSBGaXggYSBwcm9ibGVtIGluIHVzaW5nIHRoZSB3aGljaCBjb21tYW5kIGluIHRoZSBjb25m aWd1cmUgc2NyaXB0LgoKLSBGaXggYSBwYXJzZSBlcnJvciBpbiB0aGUgY2xpZW50IHdoZW4gc2V0 dGluZyB1cCBhbiBvbWFwaSBsaXN0ZW5lci4KCi0gRG9jdW1lbnQgdGhlIC1uIGFuZCAtZyBmbGFn cyB0byB0aGUgY2xpZW50LgoKLSBNYWtlIHN1cmUgdGhlcmUgaXMgYWx3YXlzIGEgc3RkaW4gYW5k IHN0ZG91dCBvbiBzdGFydHVwLiAgIFRoaXMKICBwcmV2ZW50cyBzaGVsbCBzY3JpcHRzIGZyb20g YWNjaWRlbnRhbGx5IHdyaXRpbmcgZXJyb3IgbWVzc2FnZXMgaW50bwogIGNvbmZpZ3VyYXRpb24g ZmlsZXMgdGhhdCBoYXBwZW4gdG8gYmUgb3BlbmVkIGFzIHN0ZGVyci4KCi0gSWYgYW4gaW50ZXJm YWNlIGlzIHJlbW92ZWQsIHRoZSBjbGllbnQgd2lsbCBub3cgbm90aWNlIHRoYXQgaXQgaXMKICBn b25lIHJhdGhlciB0aGFuIHNwaW5uaW5nLiAgIFRoaXMgaGFzIG9ubHkgYmVlbiB0ZXN0ZWQgb24g TmV0QlNELgoKLSBUaGUgY2xpZW50IHdpbGwgYXR0ZW1wdCB0byBnZXQgYW4gYWRkcmVzcyBldmVu IGlmIGl0IGNhbid0IGNyZWF0ZSBhCiAgbGVhc2UgZmlsZS4KCi0gRG9uJ3Qgb3ZlcndyaXRlIHRy YWNlZmlsZXMuCgotIEZpeCBzb21lIG1lbW9yeSBhbGxvY2F0aW9uIGJ1Z3MgaW4gZmFpbG92ZXIu CgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVsIDIyCgotIEFwcGx5IHNvbWUg cGF0Y2hlcyBzdWdnZXN0ZWQgYnkgQ3lyaWxsZSBMZWZldnJlLCB3aG8gaXMgbWFpbnRhaW5pbmcK ICB0aGUgRnJlZUJTRCBJU0MgREhDUCBEaXN0cmlidXRpb24gcG9ydC4KCi0gRml4IGEgY29yZSBk dW1wIGluIERIQ1BSRUxFQVNFLgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZl bCAyMQoKLSBUaGlzIHRpbWUgZm9yIHN1cmU6IGZpeCB0aGUgc3BpbiBkZXNjcmliZWQgaW4gdGhl IGNoYW5nZXMgZm9yIHBsMjAuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVs IDIwCgotIEZpeCBhIHByb2JsZW0gd2l0aCBMaW51eCBkZXRlY3RpbmcgbGFyZ2UgbnVtYmVycyBv ZiBpbnRlcmZhY2VzIChCZW4pCgotIEZpeCBhIG1lbW9yeSBzbWFzaCBpbiB0aGUgcXVvdGlmeSBj b2RlLCB3aGljaCB3YXMgaW50cm9kdWNlZCBpbgogIHBsMTkuCgotIEFjdHVhbGx5IGZpeCB0aGUg c3BpbiBkZXNjcmliZWQgaW4gdGhlIGNoYW5nZXMgZm9yIHBsMjAuICAgVGhlCiAgcHJldmlvdXMg Zml4IG9ubHkgcGFydGlhbGx5IGZpeGVkIHRoZSBwcm9ibGVtIC0gZW5vdWdoIHRvIGdldCBpdAog IHBhc3QgdGhlIHJlZ3Jlc3Npb24gdGVzdC4KCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBh dGNobGV2ZWwgMTkKCi0gRml4IGEgYnVnIHRoYXQgY291bGQgY2F1c2UgdGhlIHNlcnZlciB0byBh Ym9ydCBpZiBjb21waWxlZCB3aXRoCiAgUE9JTlRFUl9ERUJVRyBlbmFibGVkLgoKLSBGaXggYSBi dWcgdGhhdCBjb3VsZCBjYXVzZSB0aGUgc2VydmVyIHRvIHNwaW4gd2hlbiByZXNwb25kaW5nIHRv IGEKICBESENQUkVRVUVTVC4KCi0gQXBwbHkgSm9vc3QgTXVsZGVycycgc3VnZ2VzdGVkIHBhdGNo ZXMgZm9yIERMUEkgb24geDg2LgoKLSBTdXBwb3J0IE5VTCBjaGFyYWN0ZXJzIGluIHF1b3RlZCBz dHJpbmdzLgoKLSBJbnN0YWxsIHVuZm9ybWF0dGVkIG1hbiBwYWdlcyBvbiBTdW5PUy4KCgkJQ2hh bmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMTgKCi0gQWxsb3cgdGhlIHNlcnZlciB0 byBiZSBwbGFjZWQgaW4gcGFydG5lci1kb3duIHN0YXRlIHVzaW5nIE9NQVBJLgogIChEYW1pZW4g TmVpbCkKCi0gSW1wbGVtZW50IG9tc2hlbGwsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRvIGFyYml0 cmFyeSB0aGluZ3MgdG8gdGhlCiAgc2VydmVyIChpbiB0aGVvcnkpLiAoRGFtaWVuIE5laWwpCgot IEZpeCBhIGNhc2Ugd2hlcmUgaWYgYSBjbGllbnQgaGFkIHR3byBkaWZmZXJlbnQgbGVhc2VzIHRo ZSBzZXJ2ZXIgY291bGQKICBhY3R1YWxseSBkZXJlZmVyZW5jZSB0aGUgc2Vjb25kIG9uZSB3aGVu IGl0IGhhZG4ndCBiZWVuIHJlZmVyZW5jZWQsCiAgbGVhZGluZyB0byBtZW1vcnkgY29ycnVwdGlv biBhbmQgYSBjb3JlIGR1bXAuIChKYW1lcyBCcmlzdGVyKQoKLSBGaXggYSBjYXNlIHdoZXJlIGEg Y2xpZW50IGNvdWxkIHJlcXVlc3QgdGhlIGFkZHJlc3Mgb2YgYW5vdGhlciBjbGllbnQncwogIGxl YXNlLCBidXQgZmluZF9sZWFzZSB3b3VsZG4ndCBkZXRlY3QgdGhhdCB0aGUgb3RoZXIgY2xpZW50 IGhhZCBpdCwgYW5kCiAgd291bGQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBpdCB0byB0aGUgY2xpZW50 LCByZXN1bHRpbmcgaW4gYSBsZWFzZSBjb25mbGljdAogIG1lc3NhZ2UuCgotIEZpeCBhIGNhc2Ug d2hlcmUgYSBjbGllbnQgd2l0aCBtb3JlIHRoYW4gb25lIGNsaWVudCBpZGVudGlmaWVyIGNvdWxk IGJlCiAgZ2l2ZW4gYSBsZWFzZSB3aGVyZSB0aGUgaGFyZHdhcmUgYWRkcmVzcyB3YXMgY29ycmVj dCBidXQgdGhlIGNsaWVudAogIGlkZW50aWZpZXIgd2FzIG5vdCwgcmVzdWx0aW5nIGluIGEgbGVh c2UgY29uZmxpY3QgbWVzc2FnZS4KCi0gRml4IGEgcHJvYmxlbSB3aGVyZSB0aGUgc2VydmVyIGNv dWxkIHdyaXRlIG91dCBhIGNvbG9uLXNlcGFyYXRlZAogIGhleCBsaXN0IGFzIGEgdmFsdWUgZm9y IGEgdmFyaWFibGUsIHdoaWNoIHdvdWxkIHRoZW4gbm90IHBhcnNlLgogIFRoZSBmaXggaXMgdG8g YWx3YXlzIHdyaXRlIHN0cmluZ3MgYXMgcXVvdGVkIHN0cmluZ3MsIHdpdGggYW55CiAgbm9uLXBy aW50YWJsZSBjaGFyYWN0ZXJzIHF1b3RlZCBhcyBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzLiAgIFNv CiAgYSBmaWxlIHdyaXR0ZW4gdGhlIG9sZCB3YXkgc3RpbGwgd29uJ3Qgd29yaywgYnV0IG5ldyBm aWxlcyB3cml0dGVuCiAgdGhpcyB3YXkgd2lsbCB3b3JrLgoKLSBGaXggZG9jdW1lbnRhdGlvbiBm b3Igc2VuZGluZyBub24tc3RhbmRhcmQgb3B0aW9ucy4KCi0gVXNlIHVucGFyc2FibGUgbmFtZXMg Zm9yIHVua25vd24gb3B0aW9ucy4gICAgV0FSTklORzogdGhpcyB3aWxsCiAgYnJlYWsgYW55IGNv bmZpZ3VyYXRpb24gZmlsZXMgdGhhdCB1c2UgdGhlIG9wdGlvbi1ubm4gY29udmVudGlvbi4KICBJ ZiB5b3Ugd2FudCB0byBjb250aW51ZSB0byB1c2UgdGhpcyBjb252ZW50aW9uIGZvciBzb21lIG9w dGlvbnMsCiAgcGxlYXNlIGJlIHN1cmUgdG8gd3JpdGUgYSBkZWZpbml0aW9uLCBsaWtlIHRoaXM6 CgogIG9wdGlvbiBvcHRpb24tbm5uIGNvZGUgbm5uID0gc3RyaW5nOwoKICBZb3UgY2FuIHVzZSBh IGRlc2NyaXB0aXZlIG5hbWUgaW5zdGVhZCBvZiBvcHRpb24tbm5uIGlmIHlvdSBsaWtlLgoKLSBG aXggYSBwcm9ibGVtIHdoZXJlIHdlIHdvdWxkIHNlZSBhIERIQ1BESVNDT1ZFUi9ESENQT0ZGRVIv CiAgREhDUFJFUVVFU1QvREhDUEFDSy9ESENQUkVRVUVTVC9ESENQTkFLIHNlcXVlbmNlLiAgIFRo aXMgd2FzIHRoZQogIHJlc3VsdCBvZiBhIGRlY2VwdGl2ZWx5IHNpbGx5IGJ1ZyBpbiBzdXBlcnNl ZGVfbGVhc2UuCgotIEZpeCBjbGllbnQgc2NyaXB0IGV4aXQgc3RhdHVzIGNoZWNrLCBhY2NvcmRp bmcgdG8gYSBmaXggc3VwcGxpZWQgYnkKICBIZXJtYW5uIExhdWVyLgoKLSBGaXggYW4gZW5kaWFu bmVzcyBidWcgaW4gdGhlIHRyYWNlZmlsZSBzdXBwb3J0LCByZWdhcmRpbmcgSUNNUAogIG1lc3Nh Z2VzLgoKLSBGaXggYSBidWcgaW4gdGhlIGNsaWVudCB3aGVyZSB0aGUgbWVkaXVtIHdvdWxkIG5v dCB3b3JrIGNvcnJlY3RseSBpZgogIGl0IGNvbnRhaW5lZCBxdW90ZWQgc3RyaW5ncy4KCgkJICAg ICAgICoqIHRoZXJlIHdhcyBubyBwbDE3ICoqCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQ YXRjaGxldmVsIDE2CgotIEFkZCBzdXBwb3J0IGZvciB0cmFuc2FjdGlvbiB0cmFjaW5nLiAgIFRo aXMgYWxsb3dzIHRoZSBzdGF0ZSBvZiB0aGUKICBESENQIHNlcnZlciBvbiBzdGFydHVwLCBhbmQg YWxsIHRoZSBzdWJzZXF1ZW50IHRyYW5zYWN0aW9ucywgdG8gYmUKICByZWNvcmRlZCBpbiBhIGZp bGUgd2hpY2ggY2FuIHRoZW4gYmUgcGxheWVkIGJhY2sgdG8gcmVwcm9kdWNlIHRoZQogIGJlaGF2 aW91ciBvZiB0aGUgREhDUCBzZXJ2ZXIuICAgVGhpcyBjYW4gYmUgdXNlZCB0byBxdWlja2x5CiAg cmVwcm9kdWNlIGJ1Z3MgdGhhdCBjYXVzZSBjb3JlIGR1bXBzIG9yIGNvcnJ1cHRpb24sIGFuZCBh bHNvIGZvcgogIHRyYWNraW5nIGRvd24gbWVtb3J5IGxlYWtzLgoKLSBJbmNvcnBvcmF0ZSBzb21l IGJ1ZyBmaXhlcyBwcm92aWRlZCBieSBKb29zdCBNdWxkZXJzIGZvciB0aGUgRExQSQogIHBhY2th Z2Ugd2hpY2ggc2hvdWxkIGNsZWFyIHVwIHByb2JsZW1zIHBlb3BsZSBoYXZlIGJlZW4gc2VlaW5n IG9uCiAgU29sYXJpcy4KCi0gRml4IGJ1Z3MgaW4gdGhlIGhhbmRsaW5nIG9mIG9wdGlvbnMgc3Rv cmVkIGFzIGxpbmtlZCBsaXN0cyAoYWdlbnQKICBvcHRpb25zLCBmcWRuIG9wdGlvbnMgYW5kIG53 aXAgb3B0aW9ucykgdGhhdCBjb3VsZCBjYXVzZSBtZW1vcnkKICBjb3JydXB0aW9uIGFuZCBjb3Jl IGR1bXBzLgoKLSBGaXggYSBidWcgaW4gREhDUFJFUVVFU1QgaGFuZGxpbmcgdGhhdCByZXN1bHRl ZCBpbiBESENQTkFLIG1lc3NhZ2VzCiAgbm90IGJlaW5nIHNlbmQgaW4gc29tZSBjYXNlcyB3aGVu IHRoZXkgd2VyZSBuZWVkZWQuCgotIE1ha2UgdGhlIGxlYXNlIHN0cnVjdHVyZSBzb21ld2hhdCBt b3JlIGNvbXBhY3QuCgotIE1ha2UgaW5pdGlhbCBmYWlsb3ZlciBzdGFydHVwICptdWNoKiBmYXN0 ZXIuICAgVGhpcyB3YXMgcmVzZWFyY2hlZAogIGFuZCBpbXBsZW1lbnRlZCBieSBEYW1pZW4gTmVp bC4KCi0gQWRkIGEgLS12ZXJzaW9uIGZsYWcgdG8gYWxsIGV4ZWN1dGFibGVzLCB3aGljaCBwcmlu dHMgdGhlIHByb2dyYW0KICBuYW1lIGFuZCB2ZXJzaW9uIHRvIHN0YW5kYXJkIG91dHB1dC4KCi0g RG9uJ3QgcmV3cml0ZSB0aGUgbGVhc2UgZmlsZSBldmVyeSB0aG91c2FuZCBsZWFzZXMuCgotIEEg YnVnIGluIG5pdC5jIGZvciBvbGRlciBTdW5PUyBtYWNoaW5lcyB3YXMgZml4ZWQgYnkgYSBwYXRj aCBzZW50IGluCiAgYnkgVGFrZXNoaSBIYWdpd2FyYS4KCi0gRml4IGEgbWVtb3J5IGNvcnJ1cHRp b24gYnVnIGluIHRoZSBESENQIGNsaWVudC4KCi0gTG90cyBvZiBkb2N1bWVudGF0aW9uIHVwZGF0 ZXMuCgotIEFkZCBhIGZlYXR1cmUgYWxsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGJl IHBhc3NlZCB0byB0aGUKICBESENQIGNsaWVudCBzY3JpcHQgb24gdGhlIERIQ1AgY2xpZW50IGNv bW1hbmQgbGluZS4KCi0gRml4IGNsaWVudCBtZWRpdW0gc3VwcG9ydCwgd2hpY2ggaGFkIGJlZW4g YnJva2VuIGZvciBzb21lIHRpbWUuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgREhDUCBjbGllbnQgaW5p dGlhbCBzdGFydHVwIGJhY2tvZmYgaW50ZXJ2YWwsIHdoaWNoCiAgd291bGQgY2F1c2UgdHdvIERI Q1BESVNDT1ZFUlMgdG8gYmUgc2VudCBiYWNrLXRvLWJhY2sgb24gc3RhcnR1cC4KCgkJQ2hhbmdl cyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMTUKCi0gU29tZSBkb2N1bWVudGF0aW9uIHR3 ZWFrcy4KCi0gTWF5YmUgZml4IGEgcHJvYmxlbSBpbiB0aGUgRExQSSBjb2RlLgoKLSBGaXggc29t ZSBlcnJvciBjb2RlIHNwYWNlIGluY29uc2lzdGVuY2llcyBpbiBkZG5zIHVwZGF0ZSBjb2RlLgoK LSBTdXBwb3J0IHJlbGF5IGFnZW50cyB0aGF0IGludGVyY2VwdCB1bmljYXN0IERIQ1AgbWVzc2Fn ZXMgdG8gc3R1ZmYKICBhZ2VudCBvcHRpb25zIGludG8gdGhlbS4KCi0gRml4IGEgc21hbGwgbWVt b3J5IGxlYWsgaW4gdGhlIHJlbGF5IGFnZW50IG9wdGlvbiBzdXBwb3J0IGNvZGUuCgotIEZpeCBh IGNvcmUgZHVtcCB0aGF0IHdvdWxkIG9jY3VyIGlmIGEgcGFja2V0IHdhcyBzZW50IHdpdGggbm8K ICBvcHRpb25zLgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAxNAoKLSBG aW5pc2ggZml4aW5nIGEgbG9uZy1zdGFuZGluZyBidWcgaW4gdGhlIGFnZW50IG9wdGlvbnMgY29k ZS4gICBUaGlzCiAgd2FzIGNhdXNpbmcgY29yZSBkdW1wcyBhbmQgZmFpbGluZyB0byBvcGVyYXRl IGNvcnJlY3RseSAtIGluCiAgcGFydGljdWxhciwgYWdlbnQgb3B0aW9uIHN0YXNoaW5nIHdhc24n dCB3b3JraW5nLiAgIEFnZW50IG9wdGlvbgogIHN0YXNoaW5nIHNob3VsZCBub3cgYmUgd29ya2lu ZywgbWVhbmluZyB0aGF0IGFnZW50IG9wdGlvbnMgY2FuIGJlCiAgdXNlZCBpbiBjbGFzcyBzdGF0 ZW1lbnRzIHRvIGNvbnRyb2wgYWRkcmVzcyBhbGxvY2F0aW9uLgoKLSBGaXggdXAgZG9jdW1lbnRh dGlvbi4KCi0gRml4IGEgY291cGxlIG9mIHNtYWxsIG1lbW9yeSBsZWFrcyB0aGF0IHdvdWxkIGhh dmUgYWRkZWQgdXAKICBzaWduaWZpY2FudGx5IGluIGEgaGlnaC1kZW1hbmQgc2l0dWF0aW9uLgoK LSBBZGQgYSBsb2ctZmFjaWxpdHkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCgotIEZpeCBhIGNv bXBpbGUgZXJyb3Igb24gc29tZSBvbGRlciBvcGVyYXRpbmcgc3lzdGVtcy4KCi0gQWRkIHRoZSBh YmlsaXR5IGluIHRoZSBjbGllbnQgdG8gZXhlY3V0ZSBjZXJ0YWluIHN0YXRlbWVudHMgYmVmb3Jl CiAgdHJhbnNtaXR0aW5nIHBhY2tldHMgdG8gdGhlIHNlcnZlci4gICBIYW5keSBmb3IgZGVidWdn aW5nOyBub3QgbXVjaAogIHByYWN0aWNhbCB1c2Ugb3RoZXJ3aXNlLgoKLSBEb24ndCBzZW5kIGZh a2VkLW91dCBnaWFkZHIgd2hlbiByZW5ld2luZyBvciBib3VuZCAtIGFnYWluLCB1c2VmdWwKICBm b3IgZGVidWdnaW5nLgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCAxMwoK LSBGaXhlZCBhIHByb2JsZW0gd2hlcmUgdGhlIGZxZG4gZGVjb2RlciB3b3VsZCBzb21ldGltZXMg dHJ5IHRvIHN0b3JlCiAgYW4gb3B0aW9uIHdpdGggYW4gKHVuc2lnbmVkKSBuZWdhdGl2ZSBsZW5n dGgsIHJlc3VsdGluZyBpbiBhIGNvcmUKICBkdW1wIG9uIHNvbWUgc3lzdGVtcy4KCi0gV29yayBh cm91bmQgdGhlIFdpbjk4IERIQ1AgY2xpZW50LCB3aGljaCBOVUwtdGVybWluYXRlcyB0aGUgRlFE TgogIG9wdGlvbi4KCi0gV29yayBhcm91bmQgV2luOTggYW5kIFdpbjJrIGNsaWVudHMgdGhhdCB3 aWxsIGNsYWltIHRoZXkgd2FudCB0byBkbwogIHRoZSB1cGRhdGUgZXZlbiB3aGVuIHRoZXkgZG9u J3QgaGF2ZSBhbnkgd2F5IHRvIGRvIGl0LgoKLSBGaXggc29tZSBsb2cgbWVzc2FnZXMgdGhhdCBj YW4gYmUgcHJpbnRlZCB3aGVuIGZhaWxvdmVyIGlzIG9wZXJhdGluZwogIHRoYXQgd2VyZSBub3Qg cHJpbnRpbmcgZW5vdWdoIGluZm9ybWF0aW9uLgoKLSBJdCB3YXMgcG9zc2libGUgZm9yIGEgREhD UERJU0NPVkVSIHRvIGdldCBhbiBhbGxvY2F0aW9uIGV2ZW4gd2hlbgogIHRoZSBzdGF0ZSBtYWNo aW5lIHNhaWQgdGhlIHNlcnZlciBzaG91bGRuJ3QgYmUgcmVzcG9uZGluZy4KCi0gRG9uJ3QgbG9h ZCBiYWxhbmNlIERIQ1BSRVFVRVNUcyBmcm9tIGNsaWVudHMgaW4gUkVORVdJTkcgYW5kCiAgUkVC SU5ESU5HLCBzaW5jZSBpbiBSRU5FV0lORywgaWYgd2UgaGVhcmQgaXQsIGl0J3MgZm9yIHVzLCBh bmQgaW4KICBSRUJJTkRJTkcsIHRoZSBjbGllbnQgd291bGRuJ3QgaGF2ZSBnb3QgdG8gUkVCSU5E SU5HIGlmIGl0cyBwcmltYXJ5CiAgd2VyZSBhbnN3ZXJpbmcuCgotIFdoZW4gd2UgZ2V0IGEgYm9n dXMgc3RhdGUgbGVhc2UgYmluZGluZyBzdGF0ZSB0cmFuc2l0aW9uLCBkb24ndCBkbwogIHRoZSB0 cmFuc2l0aW9uLgoKCgkJQ2hhbmdlcyBzaW5jZSAzLjAgQmV0YSAyIFBhdGNobGV2ZWwgMTIKCi0g Rml4ZWQgYSBjb3VwbGUgb2Ygc2lsbHkgY29tcGlsZSBlcnJvcnMuCgoJCUNoYW5nZXMgc2luY2Ug My4wIEJldGEgMiBQYXRjaGxldmVsIDExCgotIEFsYmVydCBIZXJyYW56IHRyYWNrZWQgZG93biBh bmQgZml4ZWQgYSBzdWJ0bGUgYnVnIGluIHRoZSBiYXNlNjQKICBkZWNvZGVyIHRoYXQgd291bGQg cHJldmVudCBhbnkga2V5IHdpdGggYW4gJ3gnIGluIGl0cyBiYXNlNjQKICByZXByZXNlbnRhdGlv biBmcm9tIHdvcmtpbmcgY29ycmVjdGx5LgoKLSBUaGFua3MgdG8gQ2hyaXMgQ2hlbmV5IGFuZCBN aWNoYWVsIFNhbmRlcnMsIHdlIGhhdmUgYSBmaXggZm9yIHRoZQogIGhhbmcgdGhhdCB0aGV5IGJv dGggc3BvdHRlZCBpbiB0aGUgREhDUCBzZXJ2ZXIgLSB3aGVuCiAgb25lLWxlYXNlLXBlci1jbGll bnQgd2FzIHNldCwgdGhlIGNvZGUgdG8gcmVsZWFzZSB0aGUgIm90aGVyIiBsZWFzZQogIGNvdWxk IHNwaW4uCgotIEZpeCBhIHByb2JsZW0gd2l0aCBhbGlnbm1lbnQgb2YgdGhlIGlucHV0IGJ1ZmZl ciBpbiBicGYgaW4gY2FzZXMKICB3aGVyZSB0d28gcGFja2V0cyBhcnJpdmUgaW4gdGhlIHNhbWUg YnBmIHJlYWQuCgotIEZpeCBhIHByb2JsZW0gd2hlcmUgdGhlIHJlbGF5IGFnZW50IHdvdWxkIGNy YXNoIGlmIHlvdSBzcGVjaWZpZWQgYW4KICBpbnRlcmZhY2UgbmFtZSBvbiB0aGUgY29tbWFuZCBs aW5lLgoKLSBBZGQgdGhlIGFiaWxpdHkgdG8gY29uZGl0aW9uYWxpemUgY2xpZW50IGJlaGF2aW91 ciBiYXNlZCBvbiB0aGUKICBjbGllbnQgc3RhdGUuCgotIEFkZCBzdXBwb3J0IGZvciB0aGUgRlFE TiBvcHRpb24sIGFuZCBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyB3YXkgb2YKICBkb2luZyBkZG5z IHVwZGF0ZXMgKGRkbnMgdXBkYXRlIHN0eWxlIGludGVyaW0pIHRoYXQgYWxsb3dzIG1vcmUgdGhh bgogIG9uZSBESENQIHNlcnZlciB0byB1cGRhdGUgdGhlIEROUyBmb3IgdGhlIHNhbWUgbmV0d29y ayhzKS4gICBUaGlzCiAgd2FzIGltcGxlbWVudGVkIGJ5IERhbWllbiBOZWlsIHdpdGggc29tZSBh ZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkKICBhZGRlZCBieSBUZWQgTGVtb24uCgotIERhbWllbiBh ZGRlZCBhICJsb2ciIHN0YXRlbWVudCwgc28gdGhhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGNh bgogIGJlIG1hZGUgdG8gbG9nIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhbmQgb3RoZXIgaW5mb3Jt YXRpb24uCgotIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIG9wdGlvbiBidWZmZXJzIG5vdCB0byBi ZSB0ZXJtaW5hdGVkIHdpdGggYW4KICBlbmQgb3B0aW9uLgoKLSBGaXhlZCBhIGxvbmctc3RhbmRp bmcgYnVnIGluIHRoZSBzdXBwb3J0IGZvciBvcHRpb24gc3BhY2VzIHdoZXJlIHRoZQogIG9wdGlv bnMgYXJlIHN0b3JlZCBhcyBhbiBvcmRlcmVkIGxpc3QgcmF0aGVyIHRoYW4gaW4gYSBoYXNoIHRh YmxlLAogIHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgcmVzdWx0IGluIG1lbW9yeSBwb29sIGNv cnJ1cHRpb24uCgotIFByZXZlbnQgaGFyZHdhcmUgZGVjbGFyYXRpb25zIHdpdGggbm8gYWN0dWFs IGhhcmR3YXJlIGFkZHJlc3MgZnJvbQogIGJlaW5nIHdyaXR0ZW4gYXMgc29tZXRoaW5nIHVucGFy c2FibGUsIGFuZCBiZWhhdmUgY29ycmVjdGx5IGluIHRoZQogIGZhY2Ugb2YgYSBudWxsIGhhcmR3 YXJlIGFkZHJlc3Mgb24gaW5wdXQuCgotIEFsbG93IGtleSBuYW1lcyB0byBiZSBGUUROcywgYW5k IHF1YWxpZnkgdGhlIGFsZ29yaXRobSBuYW1lIGlmIGl0IGlzCiAgc3BlY2lmaWVkIHVucXVhbGlm aWVkLgoKLSBNb2RpZnkgdGhlIERETlMgdXBkYXRlIGNvZGUgc28gdGhhdCBpdCBuZXZlciBwcmlu dHMgdGhlICJyZXNvbHZlcgogIGZhaWxlZCIgbWVzc2FnZSwgYnV0IGluc3RlYWQgc2F5cyAqd2h5 KiB0aGUgcmVzb2x2ZXIgZmFpbGVkLgoKLSBPZmZpY2lhbGx5IHN1cHBvcnQgdGhlIHN1Ym5ldCBz ZWxlY3Rpb24gb3B0aW9uLCB3aGljaCBub3cgaGFzIGFuCiAgUkZDLgoKLSBGaXggYSBidWlsZCBi dWcgb24gTWFjT1MgWC4KCi0gQWxsb3cgYWRtaW5pc3RyYXRvciB0byBkaXNhYmxlIHBpbmcgY2hl Y2tpbmcuCgotIENsZWFuIHVwIGRoY3BkLmNvbmYgZG9jdW1lbnRhdGlvbiBhbmQgYWRkIG1vcmUg aW5mb3JtYXRpb24gYWJvdXQgaG93CiAgaXQgd29ya3MuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJl dGEgMiBQYXRjaGxldmVsIDEwCgotIEZpeCBhIGJ1ZyBpbnRyb2R1Y2VkIGR1cmluZyBkZWJ1Z2dp bmcgKCEpIGFuZCBhY2NpZGVudGFsbHkgY29tbWl0dGVkCiAgdG8gQ1ZTLgoKCQlDaGFuZ2VzIHNp bmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZlbCA5CgotIEZpeCBESENQIGNsaWVudCBoYW5kbGluZyBv ZiB2ZW5kb3IgZW5jYXBzdWxhdGVkIG9wdGlvbnMuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgaGFuZGxp bmcgb2YgcmVsYXkgYWdlbnQgaW5mb3JtYXRpb24gb3B0aW9ucyBpbnRyb2R1Y2VkCiAgaW4gcGF0 Y2hsZXZlbCA5LgoKLSBTdGFzaCBhZ2VudCBvcHRpb25zIG9uIGNsaWVudCBsZWFzZXMgYnkgZGVm YXVsdCwgYW5kIHVzZSB0aGUgc3Rhc2hlZAogIG9wdGlvbnMgYXQgcmVuZXdhbCB0aW1lLgoKLSBB ZGQgdGhlIGFiaWxpdHkgdG8gdGVzdCB0aGUgY2xpZW50J3MgYmluZGluZyBzdGF0ZSBpbiB0aGUg Y2xpZW50CiAgY29uZmlndXJhdGlvbiBsYW5ndWFnZS4KCi0gRml4IGEgY29yZSBkdW1wIGluIHRo ZSBETlMgdXBkYXRlIGNvZGUuCgotIEZpeCBzb21lIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBidWdz IHRoYXQgd2VyZSBjYXVzaW5nIHVwZGF0ZXMgdG8gYmUKICBkb25lIHdoZW4gbm8gY2xpZW50IGhv c3RuYW1lIHdhcyByZWNlaXZlZC4KCi0gRml4IGV4cHJlc3Npb24gZXZhbHVhdGlvbiBkZWJ1Z2dp bmcgcHJpbnRmcy4KCi0gVGVhY2ggcHJldHR5X3ByaW50X29wdGlvbiB0byBwcmludCBvcHRpb25z IGluIG9wdGlvbiBzcGFjZXMgb3RoZXIgdGhhbgogIHRoZSBESENQIG9wdGlvbiBzcGFjZS4KCi0g QWRkIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBSSFMgb2YgYSBub3QgaXMgbm90IGJvb2xlYW4u CgotIE5ldmVyIHNlbGVjdCBmb3IgbW9yZSB0aGFuIGEgZGF5LCBiZWNhdXNlIHNvbWUgaW1wbGVt ZW50YXRpb25zIG9mCiAgc2VsZWN0IHdpbGwganVzdCBmYWlsIGlmIHRoZSB0aW1lb3V0IGlzIHRv byBsb25nICghKS4KCi0gRml4IGEgY2FzZSB3aGVyZSBhIERIQ1BESVNDT1ZFUiBmcm9tIGFuIHVu a25vd24gbmV0d29yayB3b3VsZCBiZQogIHNpbGVudGx5IGRyb3BwZWQuCgotIEZpeCBhIGJ1ZyB3 aGVyZSBpZiBhIGNsaWVudCByZXF1ZXN0ZWQgYW4gSVAgYWRkcmVzcyBmb3Igd2hpY2ggYSBkaWZm ZXJlbnQKICBjbGllbnQgaGFkIHRoZSBsZWFzZSwgdGhlIERIQ1Agc2VydmVyIHdvdWxkIHJlYWxs b2NhdGUgaXQgYW55d2F5LgoKLSBGaXggdGhlIEROUyB1cGRhdGUgY29kZSBzbyB0aGF0IGlmIHRo ZSBjbGllbnQgY2hhbmdlcyBpdHMgbmFtZSwgdGhlIEROUwogIHdpbGwgYmUgY29ycmVjdGx5IHVw ZGF0ZWQuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVsIDgKCi0gT29wcywg dGhlcmUgd2FzIGFub3RoZXIgc3VidGxlIG1hdGggZXJyb3IgaW4gdGhlIGhlYWRlci1sZW5ndGgK ICBib3VuZHMtY2hlY2tpbmcuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVs IDcKCi0gT29wcywgZm9yZ290IHRvIGJ5dGUtc3dhcCB1ZHAgaGVhZGVyIGxlbmd0aCBiZWZvcmUg Ym91bmRzLWNoZWNraW5nIGl0LgoKCQlDaGFuZ2VzIHNpbmNlIDMuMCBCZXRhIDIgUGF0Y2hsZXZl bCA2CgotIEZpeCBhIHBvc3NpYmxlIERvUyBhdHRhY2sgd2hlcmUgYSBjbGllbnQgY291bGQgY2F1 c2UgdGhlIGNoZWNrc3VtbWVyCiAgdG8gZHVtcCBjb3JlLiAgIFRoaXMgd2FzIGEgcmVhZCwgbm90 IGEgd3JpdGUsIHNvIGl0IHNob3VsZG4ndCBiZQogIHBvc3NpYmxlIHRvIGV4cGxvaXQgaXQgYW55 IGZ1cnRoZXIgdGhhbiB0aGF0LgoKLSBJbXBsZW1lbnQgY2xpZW50LSBhbmQgc2VydmVyLXNpZGUg c3VwcG9ydCBmb3IgdXNpbmcgdGhlIENsaWVudCBGUUROCiAgb3B0aW9uLgoKLSBTdXBwb3J0IGZv ciBvdGhlciBvcHRpb24gc3BhY2VzIGluIHRoZSBjbGllbnQgaGFzIGJlZW4gYWRkZWQuICAgVGhp cwogIG1lYW5zIHRoYXQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGRlZmluZSBhIHZlbmRvciBvcHRp b24gc3BhY2Ugb24gdGhlCiAgY2xpZW50LCByZXF1ZXN0IG9wdGlvbnMgaW4gdGhhdCBzcGFjZSBm cm9tIHRoZSBzZXJ2ZXIgKHdoaWNoIG11c3QKICBkZWZpbmUgdGhlIHNhbWUgb3B0aW9uIHNwYWNl KSwgYW5kIHRoZW4gdXNlIHRob3NlIG9wdGlvbnMgaW4gdGhlCiAgY2xpZW50LiAgIFRoaXMgYWxz byBhbGxvd3MgTldJUCBhbmQgQ2xpZW50IEZRRE4gb3B0aW9ucyB0byBiZSB1c2VkCiAgbWVhbmlu Z2Z1bGx5LgoKLSBBZGQgb2JqZWN0IGluaXRpYWxpemVyIHN1cHBvcnQuICAgVGhpcyBtZWFucyB0 aGF0IG9iamVjdHMgY2FuIG5vdyBiZQogIGluaXRpYWxpemVkIHRvIHNvbWV0aGluZyBvdGhlciB0 aGFuIGFsbC16ZXJvcyB3aGVuIGFsbG9jYXRlZCwgd2hpY2gKICBtYWtlcywgZS5nLiwgdGhlIGlu dGVyZmFjZSBvYmplY3Qgc3VwcG9ydCBjb2RlIGEgbGl0dGxlIG1vcmUgcm9idXN0LgoKLSBGaXgg YW4gb2ZmLWJ5LW9uZSBidWcgaW4gdGhlIGhvc3Qgc3R1ZmZlci4gICBUaGlzIHdhcyBjYXVzaW5n IGhvc3QKICBkZWxldGVzIG5vdCB0aGUgd29yaywgYW5kIG1heSBhbHNvIGhhdmUgYmVlbiBjYXVz aW5nIE9NQVBJCiAgY29ubmVjdGlvbnMgdG8gZ2V0IGRyb3BwZWQuICAgVGhhbmtzIHRvIEphbWVz IEJyaXN0ZXIgZm9yIHRyYWNraW5nCiAgdGhpcyBvbmUgZG93biEKCi0gRml4ZWQgYSBjb3JlIGR1 bXAgaW4gdGhlIGludGVyZmFjZSBkaXNjb3ZlcnkgY29kZSB0aGF0IGlzIHRyaWdnZXJlZAogIHdo ZW4gdGhlcmUgaXMgbm8gc3VibmV0IGRlY2xhcmF0aW9uIGZvciBhbiBpbnRlcmZhY2UsIGJ1dCB0 aGUgc2VydmVyCiAgZGVjaWRlcyB0byBjb250aW51ZSBydW5uaW5nLiAgIFRoYW5rcyB0byBTaGFu ZSBLZXJyIGZvciB0cmFja2luZwogIGRvd24gYW5kIGZpeGluZyB0aGlzIHByb2JsZW0uCgoJCUNo YW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVsIDUKCi0gRml4IGEgYnVnIGluIHRoZSBy ZWNlbnQgZW5oYW5jZW1lbnQgdG8gdGhlIGludGVyZmFjZSBkaXNjb3ZlcnkgY29kZQogIHRvIHN1 cHBvcnQgYXJiaXRyYXJ5LWxlbmd0aCBpbnRlcmZhY2UgbGlzdHMuCgotIFN1cHBvcnQgTlVMLXRl cm1pbmF0ZWQgREhDUCBvcHRpb25zIHdoZW4gaW5pdGlhbGl6aW5nIGNsaWVudC1zY3JpcHQKICBl bnZpcm9ubWVudC4KCi0gRml4IHN1ZmZpeCBvcGVyYXRvci4KCi0gRml4IE5ldFdhcmUvSVAgb3B0 aW9uIHBhcnNpbmcuCgotIEJldHRlciBlcnJvci9zdGF0dXMgY2hlY2tpbmcgaW4gZGhjcGN0bCBp bml0aWFsaXphdGlvbiBhbmQgb21hcGkKICBjb25uZWN0aW9uIGNvZGUuCgotIEZpeCBhIHBvdGVu dGlhbCBtZW1vcnkgc21hc2ggaW4gZGhjcGN0bCBjb2RlLgoKLSBGaXggU3VuT1M0IGFuZCAobWF5 YmUpIFVsdHJpeCBidWlsZHMuCgotIEZpeCBhIGJ1ZyB3aGVyZSBhIGNlcnRhaW4gc29ydCBvZiBp bmNvbWluZyBwYWNrZXQgY291bGQgY2F1c2UgYSBjb3JlCiAgZHVtcCBvbiBTb2xhcmlzIChhbmQg cHJvYmFibHkgZWxzZXdoZXJlKS4KCi0gQWRkIHNvbWUgbW9yZSBzYWZldHkgY2hlY2tzIGluIGVy cm9yIGxvZ2dpbmcgY29kZS4KCi0gQWRkIHN1cHBvcnQgZm9yIElTQ19SX0lOQ09NUExFVEUgaW4g T01BUEkgcHJvdG9jb2wgY29ubmVjdGlvbiBjb2RlLgoKLSBGaXggcmVsYXkgYWdlbnQgc28gdGhh dCBpZiBhbiBpbnRlcmZhY2UgaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kCiAgbGluZSwgdGhl IHJlbGF5IGFnZW50IGRvZXMgbm90IGR1bXAgY29yZS4KCi0gRml4IGNsYXNzIG1hdGNoaW5nIHNv IHRoYXQgbWF0Y2ggaWYgY2FuIGJlIGNvbWJpbmVkIHdpdGggbWF0Y2ggb3IKICBzcGF3biB3aXRo LgoKLSBEbyBub3QgYWxsb3cgc3B1cmlvdXMgbGVhc2VzIGluIHRoZSBsZWFzZSBkYXRhYmFzZSB0 byBpbnRyb2R1Y2UKICBwb3RlbnRpYWxseSBib2d1cyBsZWFzZXMgaW50byB0aGUgaW4tbWVtb3J5 IGRhdGFiYXNlLgoKLSBGaXggYSBieXRlLW9yZGVyIHByb2JsZW0gaW4gdGhlIGNsaWVudCBoYXJk d2FyZSBhZGRyZXNzIHR5cGUgY29kZQogIGZvciBPTUFQSS4KCi0gQmUgc2xpZ2h0bHkgbGVzcyBw aWNreSBhYm91dCB3aGF0IHNvcnQgb2YgaGFyZHdhcmUgYWRkcmVzc2VzIE9NQVBJCiAgY2FuIGlu c3RhbGwgaW4gaG9zdCBkZWNsYXJhdGlvbnMuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQ YXRjaGxldmVsIDQKCi0gSW5jb3Jwb3JhdGVkIFBldGVyIE1hcnNjaGFsbCdzIHByb3Bvc2VkIGNo YW5nZSB0byBhcnJheS9yZWNvcmQKICBwYXJzaW5nLCB3aGljaCBhbGxvd3MgdGhpbmdzIGxpa2Ug dGhlIHNscC1hZ2VudCBvcHRpb24gdG8gYmUgZW5jb2RlZAogIGNvcnJlY3RseS4gICBUaGFua3Mg dmVyeSBtdWNoIHRvIFBldGVyIGZvciB0YWtpbmcgdGhlIGluaXRpYXRpdmUgdG8KICBkbyB0aGlz LCBhbmQgZm9yIGRvaW5nIHN1Y2ggYSBjYXJlZnVsIGpvYiBvZiBpdCAoZS5nLiwgdXBkYXRpbmcg dGhlCiAgY29tbWVudHMpIQoKLSBBZGRlZCBhbiBlbmNvZGluZyBmb3IgdGhlIHNscC1hZ2VudCBv cHRpb24uICAgOicpCgotIEZpeGVkIFN1bk9TIDQgYnVpbGQuICBUaGFua3MgdG8gUm9iZXJ0IEVs eiBmb3IgcmVzcG9uZGluZyB0byBteQogIHJlcXVlc3QgZm9yIGhlbHAgb24gdGhpcyB3aXRoIHBh dGNoZXMhCgotIEluY29ycG9yYXRlZCBhIGNoYW5nZSB0aGF0IHNob3VsZCBmaXggYSBwcm9ibGVt IHJlcG9ydGVkIGJ5IFBoaWxpcHBlCiAgSnVtZWxsZSB3aGVyZSB3aGVuIHRoZSBuZXR3b3JrIGNv bm5lY3Rpb24gYmV0d2VlbiB0d28gc2VydmVycyBpcwogIGxvc3QsIHRoZXkgbmV2ZXIgcmVjb25u ZWN0LgoKLSBGaXggY2xpZW50IHNjcmlwdCBmaWxlcyBvdGhlciB0aGFuIHRoYXQgZm9yIE5ldEJT RCB0byBhY3R1YWxseSB1c2UKICBtYWtlX3Jlc29sdl9jb25mIGFzIGRvY3VtZW50ZWQgaW4gdGhl IG1hbnVhbCBwYWdlLgoKLSBGaXggYSBidWcgaW4gdGhlIHBhY2tldCBoYW5kbGluZyBjb2RlIHRo YXQgY291bGQgcmVzdWx0IGluIGEgY29yZQogIGR1bXAuCgotIEZpeCBhIGJ1ZyBpbiB0aGUgYm9v dHAgY29kZSB3aGVyZSByZXNwb25zZXMgb24gdGhlIGxvY2FsIG5ldCB3b3VsZAogIGJlIHNlbnQg dG8gdGhlIHdyb25nIE1BQyBhZGRyZXNzLiAgIFRoYW5rcyB0byBKZXJyeSBTY2hhdmUgZm9yCiAg Y2F0Y2hpbmcgdGhpcyBvbmUuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVs IDMKCi0gSW4gdGhlIERIQ1AgY2xpZW50LCBleGVjdXRlIGNsaWVudCBzdGF0ZW1lbnRzIHByaW9y IHRvIHVzaW5nIHRoZSB2YWx1ZXMKICBvZiBvcHRpb25zLCBzbyB0aGF0IHRoZSBjbGllbnQgY29u ZmlndXJhdGlvbiBjYW4gb3ZlcnJpZGRlbiwgZS5nLiwgdGhlCiAgbGVhc2UgcmVuZXdhbCB0aW1l LgoKLSBGaXggYSByZWZlcmVuY2UgY291bnRpbmcgZXJyb3IgdGhhdCB3b3VsZCByZXN1bHQgaW4g dmVyeSByZXByb2R1Y2libGUKICBmYWlsdXJlcyBpbiB1cGRhdGVzLCBhcyB3ZWxsIGFzIG9jY2Fz aW9uYWwgY29yZSBkdW1wcywgaWYgYSB6b25lIHdhcwogIGRlY2xhcmVkIHdpdGhvdXQgYSBrZXku CgotIEZpeCBzb21lIExpbnV4IDIuMCBjb21waWxhdGlvbiBwcm9ibGVtcy4KCi0gRml4IGEgYnVn IGluIHNjb3BlIGV2YWx1YXRpb24gZHVyaW5nIGV4ZWN1dGlvbiBvZiAib24iIHN0YXRlbWVudHMg dGhhdAogIGNhdXNlZCB2YWx1ZXMgbm90IHRvIGJlIHJlY29yZGVkIG9uIGxlYXNlcy4KCi0gSWYg dGhlIGRoY3AtbWF4LW1lc3NhZ2Utc2l6ZSBvcHRpb24gaXMgc3BlY2lmaWVkIGluIHNjb3BlLCBh bmQgdGhlCiAgY2xpZW50IGRpZG4ndCBzZW5kIHRoaXMgb3B0aW9uLCB1c2UgdGhlIG9uZSBzcGVj aWZpZWQgaW4gc2NvcGUgdG8KICBkZXRlcm1pbmUgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgcmVz cG9uc2UuCgoJCUNoYW5nZXMgc2luY2UgMy4wIEJldGEgMiBQYXRjaGxldmVsIDIKCi0gRml4IGEg Y2FzZSB3aGVyZSBzcGF3bmluZyBzdWJjbGFzc2VzIHdlcmUgYmVpbmcgYWxsb2NhdGVkCiAgaW5j b3JyZWN0bHksIHJlc3VsdGluZyBpbiBhIGNvcmUgZHVtcC4KCi0gRml4IGEgY2FzZSB3aGVyZSB0 aGUgREhDUCBzZXJ2ZXIgbWlnaHQgaW5hcHByb3ByaWF0ZWx5IE5BSyBhCiAgUkVORVdJTkcgY2xp ZW50LgoKLSBGaXggYSBwbGFjZSBkaGNwcmVxdWVzdCgpIHdoZXJlIHN0YXRpYyBsZWFzZXMgY291 bGQgbGVhay4KCi0gSW5jbHVkZSBtZW1vcnkuaCBpbiBvbWFwaXBfcC5oIHNvIHRoYXQgd2UgZG9u J3QgZ2V0IHdhcm5pbmdzIGFib3V0CiAgdXNpbmcgbWVtY21wKCkuCgoJCUNoYW5nZXMgc2luY2Ug My4wIEJldGEgMiBQYXRjaGxldmVsIDEKCi0gTm90aWNlIHdoZW4gU0lPQ0ZJR0NPTkYgcmV0dXJu cyBtb3JlIGRhdGEgdGhhbiBmaXQgaW4gdGhlIGJ1ZmZlciAtCiAgYWxsb2NhdGUgYSBsYXJnZXIg YnVmZmVyLCBhbmQgcmV0cnkuICAgVGhhbmtzIHRvIEdyZWcgRmF1c2FrIGZvcgogIHBvaW50aW5n IHRoaXMgb3V0LgoKLSBJbiB0aGUgc2VydmVyLCBpZiBubyBpbnRlcmZhY2VzIHdlcmUgY29uZmln dXJlZCwgcmVwb3J0IGFuIGVycm9yIGFuZAogIGV4aXQuCgotIERvbid0IGV2ZXIgcmVjb3JkIGEg c3RhdGUgb2YgJ3N0YXJ0dXAnLgoKLSBEb24ndCB0cnkgdG8gZXZhbHVhdGUgdGhlIGxvY2FsIGZh aWxvdmVyIGJpbmRpbmcgYWRkcmVzcyBpZiBub25lIHdhcwogIHNwZWNpZmllZC4gICBUaGFua3Mg dG8gSm9zZXBoIEJyZXUgZm9yIGZpbmRpbmcgdGhpcy4KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRoY3AtYW5ub3VuY2UgbWFpbGluZyBsaXN0CmRoY3At YW5ub3VuY2VAbGlzdHMuaXNjLm9yZwpodHRwczovL2xpc3RzLmlzYy5vcmcvbWFpbG1hbi9saXN0 aW5mby9kaGNwLWFubm91bmNl