R2F0ZS5pbyBQb2RjYXN0IHwgIkV0aGVyZXVtIGdhYXQgZmFsZW4iIHpvYWxzIHZlcmtsYWFyZCBkb29yIEphY2sgRG9yc2V5LCBDcnlwdG8taW5mbHVlbmNlciBTaGlsbGluZyBCZXRhbGluZ3NsaWpzdCBnZWxla3QsIFRlc2xhIGdhYXQgQlRDLW1pam5mYWNpbGl0ZWl0IGZpbmFuY2llcmVu
Wy8vXTpjb250ZW50LXR5cGUtTUFSS0RPV04tRE9OT1QtREVMRVRFClshW10oaHR0cHM6Ly9naW1nMi5nYXRlaW1nLmNvbS9pbWFnZS9hcnRpY2xlLzE2NTA2MDEyNDQwNDIxTGluZWFyRmluYW5jZV9lbi5qcGcpXShodHRwczovL2dpbWcyLmdhdGVpbWcuY29tL2ltYWdlL2FydGljbGUvMTY1MDYwMTI0NDA0MjFMaW5lYXJGaW5hbmNlX2VuLmpwZ2h0dHA6Ly8pCgpEZXplIGFmbGV2ZXJpbmcgd29yZHQgdSBhYW5nZWJvZGVuIGRvb3IgW0dhdGUuaW9dKGh0dHBzOi8vd3d3LmdhdGUuaW8vaHR0cDovLyAiR2F0ZS5pbyIpIGVuIExpbmVhciBGaW5hbmNlIChbQWlyZHJvcF0oaHR0cHM6Ly93d3cuZ2F0ZS5pby9hcnRpY2xlLzI2MjcwP2NoPWxpbmEyNjI3MHR3aSNnaXZlYXdheWh0dHA6Ly8gIkFpcmRyb3AiKSkuIEphY2sgRG9yc2V5IGJla3JpdGlzZWVydCBFdGhlcmV1bSBlbiB2ZXJrbGFhcnQgZGF0IGhldCBwcm9qZWN0IHZlbGUgcmVkZW5lbiBoZWVmdCBvbSB0ZSBtaXNsdWtrZW47IGVlbiBsaWpzdCB2b2wgY3J5cHRvLWluZmx1ZW5jZXItc2hpbGxpbmdiZXRhbGluZ2VuIGlzIGdlcHVibGljZWVyZCBvcCBUd2l0dGVyLCB3YXQgZGUgdmVyYmF6aW5nIHZhbiBkZSBnZW1lZW5zY2hhcCBvcHdla3RlOyBBbGdvcmFuZCBuYW0gVGltZSBTcXVhcmUgb3ZlciBvbSBkZSBFYXJ0aCBEYXktbWFuaWZlc3RhdGllIHRlIHZpZXJlbi4gR2V2b2xnZCBkb29yIGVlbiBEZWVwIERpdmUgaW4gaG9lIHRlY2hiZWRyaWp2ZW4gb21nYWFuIG1ldCBkZSBvdmVyZ2FuZyBuYWFyIHdlYjMgZW4gaG9lIGh1biBuaWV1d2UgcHJvZHVjdGVuIHZvcm0gZ2V2ZW4gYWFuIGVlbiBuaWV1dyBzb29ydCBnZW1lZW5zY2hhcHNpbnRlcmFjdGllIHR1c3NlbiBtZW5zZW4gZW4gQVIuCgotLS0tLS0tLS0tLS0KCgojIyMgSW4gZGUga3JhbnRlbmtvcHBlbiB2YW4gdmFuZGFhZzoKCkFyZ2VudGluacOrIGdhYXQgQlRDIGRlbHZlbiBvbSBkZSBpbmZsYXRpZSB0ZSBiZXN0cmlqZGVuIHwgWzFdKGh0dHBzOi8vZW4uY3J5cHRvbm9taXN0LmNoLzIwMjIvMDQvMTkvYXJnZW50aW5hLWNvbnNpZGVyaW5nLVtCaXRjb2luXShodHRwczovL3d3dy5nYXRlLmlvL3RyYWRlL0JUQ19VU0RUKSB8CkFsZ29yYW5kIG5lZW10IGNvbnRyb2xlIG92ZXIgTlkncyBUaW1lIFNxdWFyZSB8IFsxXShodHRwczovL3d3dy5wcm5ld3N3aXJlLmNvbS9uZXdzLXJlbGVhc2VzL2FsZ29yYW5kLXRvLXRha2Utb3Zlci10aW1lcy1zcXVhcmUtaW4tbmV3LXlvcmstY2l0eS10aGlzLWVhcnRoLWRheS10by1hZHZvY2F0ZS1mb3ItYS1ncmVlbmVyLWZ1dHVyZS0zMDE1MjY4MDcuaHRtbGh0dHA6Ly8gIjEiKSB8CiJFdGhlcmV1bSBoZWVmdCB2ZWVsIFNpbmdsZSBQb2ludHMgRmFpbHVyZSIgWmVndCBKYWNrIERvcnNleSwgZGUgbWVkZW9wcmljaHRlciB2YW4gVHdpdHRlciB8IFsxXShodHRwczovL25ld3MuW0JpdGNvaW5dKGh0dHBzOi8vd3d3LmdhdGUuaW8vdHJhZGUvQlRDX1VTRFQpIHwgWzJdKGh0dHBzOi8vZGVjcnlwdC5jby85ODE2MC9qYWNrLWRvcnNleS1ldGhlcmV1bS1tYW55LXNpbmdsZS1wb2ludHMtZmFpbHVyZWh0dHA6Ly8gIjIiKSB8CkJlw69udmxvZWRlcnMgQ3J5cHRvIFNoaWxsaW5nIEJldGFsaW5nc2xpanN0IGdlbGVrdCB8IFsxXShodHRwczovL2VuLmV0aGVyZXVtd29ybGRuZXdzLmNvbS9ob3ctbXVjaC10d2l0dGVyLWluZmx1ZW5jZXJzLWdldC1wYWlkLXRvLXNoaWxsLWNyeXB0by1wcm9qZWN0cy9odHRwOi8vICIxIikgfCAKVGVzbGEgaW52ZXN0ZWVydCBpbiBCVEMgbWlqbmJvdXdmYWNpbGl0ZWl0IHwgWzFdKGh0dHBzOi8vd3d3LmluZGVwZW5kZW50LmNvLnVrL3RlY2gvdGVzbGEtW0JpdGNvaW5dKGh0dHBzOi8vd3d3LmdhdGUuaW8vdHJhZGUvQlRDX1VTRFQpICB8CgpTcG9uc29yOiBMaW5lYXIgRmluYW5jZSAoW0FpcmRyb3BdKGh0dHBzOi8vd3d3LmdhdGUuaW8vYXJ0aWNsZS8yNjI3MD9jaD1saW5hMjYyNzB0d2kjZ2l2ZWF3YXlodHRwOi8vICJBaXJkcm9wIikpCkRlZXAgRGl2ZTogV2Vsa2UgcHJvZHVjdGVuIG9udHdpa2tlbGVuIHRlY2huaXNjaGUgYmVkcmlqdmVuIHZvb3IgZGUgV2ViMy1yZXZvbHV0aWU/ICB8IFsxXShodHRwczovL3d3dy5nYXRlLmlvL2Jsb2dfZGV0YWlsLzgxNC9TbmFwY2hhdC1BbmQtTWV0YXZlcnNlaHR0cDovLyAiMSIpIHwgWzJdKGh0dHBzOi8vd3d3LmdhdGUuaW8vYmxvZ19kZXRhaWwvODMyL0Fkb2JlLXMtUGxhbnMtRm9yLXRoZS1NZXRhdmVyc2VodHRwOi8vICIyIikgfCBbM10oaHR0cHM6Ly93d3cuZ2F0ZS5pby9ibG9nX2RldGFpbC84MjQvQW1hem9uLWhpdHMtdGhlLU1ldGF2ZXJzZS13aXRoLWEtM0QtZ2FtZWh0dHA6Ly8gIjMiKSB8IFs0XShodHRwczovL3d3dy5nYXRlLmlvL2Jsb2dfZGV0YWlsLzg1Mi9Ib3ctTW9zdC1XZWIyLUNvbXBhbmllcy1BcmUtQWRvcHRpbmctVGhlLVdlYjMtVGVjaG5vbG9neWh0dHA6Ly8gIjQiKSB8Ckx1aXN0ZXI6IGh0dHBzOi8vd3d3LmJ1enpzcHJvdXQuY29tLzE4MjU3MjkvMTA0ODIzNDAKCi0tLS0tLS0tLS0tLQoKCiMjIyBJbnRyb2R1Y3Rpb246DQoNCldlbGNvbWUgYmFjayB0byB0aGUgQWx0Y29pbiBOZXdzIFBvZGNhc3RzLiBJ4oCZbSBQZXRlciwgdGhpcyBpcyB0aGUgc2hvdyB0byBnZXQgYSBuZXV0cmFsIHBlcnNwZWN0aXZlIG9uIHNvbWUgb2YgdGhlIGxhdGVzdCBoZWFkbGluZXMgaW4gRGVGaSwgTWV0YXZlcnNlLCBORlRzLCBhbmQgQmlnIFRlY2guIEJyb3VnaHQgdG8geW91IGJ5IEdhdGUuaW8sIGEgY2VudHJhbGl6ZWQgZXhjaGFuZ2Ugd2l0aCBhIG5ldXRyYWwgc3RhbmNlIG9uIGN1cnJlbnQgZXZlbnRzIGFuZCB1cGhvbGQgcHJpdmFjeSAmIHNlY3VyaXR5Lg0KDQpUaGUgaW5mb3JtYXRpb24gcHJlc2VudGVkIGluIHRoaXMgcG9kY2FzdCBpcyB0byBoZWxwIHlvdSBzdGF5IHVwLXRvLWRhdGUgb24gdGhlIGxhdGVzdCBoYXBwZW5pbmcgaW4gdGhlIGNyeXB0byBzcGFjZSwgYW5kIG5vdGhpbmcgcHJlc2VudGVkIGhlcmVieSBpcyBmaW5hbmNpYWwgYWR2aWNlLiBUaGUgbmV3cyB0aGF0IEkgY292ZXIgaW4gdGhpcyBwb2RjYXN0IHdpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgc291cmNlIGF0IHlvdXIgZGlzY3JldGlvbi4gU3RpY2sgYnkgdGhpcyBwb2RjYXN0IGFzIEkgc2hvdyB5b3UgaG93IHRvIHN0YXkgdmlnaWxhbnQgYW5kIGxlYXJuIHRvIGRvIHlvdXIgb3duIHJlc2VhcmNoLg0KDQpOb3csIHdpdGhvdXQgZnVydGhlciBhZG8uDQoNCiMjIyBBcmdlbnRpbmnDqyBnYWF0IEJUQyBkZWx2ZW4gb20gaW5mbGF0aWUgdGUgYmVzdHJpamRlbiB8IFsxXShodHRwczovL2VuLmNyeXB0b25vbWlzdC5jaC8yMDIyLzA0LzE5L2FyZ2VudGluYS1jb25zaWRlcmluZy1bQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgfAoKVmVlbCBadWlkLUFtZXJpa2FhbnNlIGxhbmRlbiB3b3JkZW4gZ2V0cm9mZmVuIGRvb3IgaG9nZSBpbmZsYXRpZSwgdm9vcmFsIGxhbmRlbiBhbHMgVmVuZXp1ZWxhIG9mLCB6b2FscyBpbiBkaXQgZ2V2YWwsIEFyZ2VudGluacOrLiBFZW4gdmFuIGRlIGVlcnN0ZSBvcGxvc3Npbmdlbiwgb20gZGUgaW5mbGF0aWUgdGUgYmVzdHJpamRlbiwgd2FzIGhldCBpbnZvZXJlbiB2YW4gY3J5cHRvY3VycmVuY2llczsgZGFhcm9tIGhlZWZ0IGVlbiBzdGFkIGFscyBSaW8gRGUgSmFuZWlybyBvbmxhbmdzIGFhbmdla29uZGlnZCBkYXQgaGFhciBlY29ub21pZSBlZW4gbmlldXdlIHN0cmF0ZWdpZSBnYWF0IHZvbGdlbiBkaWUgZ2VyaWNodCBpcyBvcCBoZXQgaW52b2VyZW4gdmFuIFtCaXRjb2luXShodHRwczovL3d3dy5nYXRlLmlvL3RyYWRlL0JUQ19VU0RUKSwgd2FhcmRvb3IgaGFhciBidXJnZXJzIGJlbGFzdGluZyBrdW5uZW4gYmV0YWxlbiBlbiBhbmRlcmUgYmV0YWxpbmdlbiBrdW5uZW4gZG9lbiB2aWEgdmlydHVlbGUgdmFsdXRhLgoKQWZnZWxvcGVuIHpvbWVyIGxlZWsgQXJnZW50aW5pw6sgZWVuIG5pZXV3ZSB3ZWcgaW4gdGUgc2xhYW4gbmFhciBkZSBhY2NlcHRhdGllIHZhbiBjcnlwdG9jdXJyZW5jaWVzLCBkaWUga29ydCBkYWFybmEgd2VyZCBzdG9wZ2V6ZXQgdmFud2VnZSBldmVudHVlbGUgSU1GLWJlcGVya2luZ2VuLiAKCkluIGp1bGkgMjAyMSBkaWVuZGUgaGV0IEFyZ2VudGlqbnNlIHBhcmxlbWVudHNsaWQgSm9zw6kgTHVpeiBSYW1vbiBlZW4gd2V0c3Zvb3JzdGVsIGluIG9tIHNhbGFyaXNzZW4gYmV0YWFsZCBpbiBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgaW4gdGUgdm9lcmVuLiBlbiBpbiBhbmRlcmUgY3J5cHRvY3VycmVuY2llcy4gQm92ZW5kaWVuIGtvbmRpZ2RlIHByZXNpZGVudCBBbGJlcnRvIEZlcm5hbmRleiB2YW4gaGV0IGxhbmQgYWFuIGRhdCBlciBlZW4gc2VyaWV1emUgc3RyYXRlZ2llIHdlcmQgZ2VwbGFuZCBvbSBoZXQgZ2VicnVpayB2YW4gY3J5cHRvY3VycmVuY2llcyBhYW4gdGUgbW9lZGlnZW4gZW4gZGF0IGRlIGNlbnRyYWxlIGJhbmsgb3Zlcndvb2cgZWVuIGRpZ2l0YWxlIHN0YWF0c211bnQgaW4gdGUgdm9lcmVuLgoKQWxsZXMgbWlzbHVrdGUgZWNodGVyIGluIG1hYXJ0LCB0b2VuIEFyZ2VudGluacOrIGVlbiBvdmVyZWVua29tc3QgdGVrZW5kZSBtZXQgaGV0IElNRiwgZGllIGVlbiBlaW5kZSBtYWFrdGUgYWFuIGVsa2UgbW9nZWxpamtoZWlkIHRvdCBhZG9wdGllIHZhbiBjcnlwdG8gaW4gaGV0IGxhbmQsIGluIHJ1aWwgdm9vciBmaW5hbmNpw6tsZSBzdGV1biB2YW4gYmlqbmEgJDQ1IG1pbGphcmQuIAoKRGUgaG9nZSBpbmZsYXRpZSBibGlqZnQgZGUgYmlubmVubGFuZHNlIGVjb25vbWllIHNjaGFkZW4sIGRhYXJvbSBoZWVmdCBoZXQgQXJnZW50aWpuc2Ugc3RhZGplIFNlcm9kaW5vIGJlc2xvdGVuIHRlZ2VuIGhldCBmaW5hbmNpw6tsZSBiZXNsdWl0IHZhbiBoZXQgbGFuZCBpbiB0ZSBnYWFuIGVuIGRlIG1pam5ib3V3IHZhbiBjcnlwdG9jdXJyZW5jaWVzIHRlIG9tYXJtZW46IG9wIDEwIGFwcmlsIGtvY2h0IGhldCB6ZXMgbWlqbmJvdXdpbnN0YWxsYXRpZXMuIAoKCk9vayBhbCB6aWpuIGVyIHZlZWwgem9yZ2VuIGdldWl0IGRvb3IgZGUgZ2VtZWVuc2NoYXAgdmFud2VnZSBkZSB2b2xhdGlsaXRlaXQgdmFuIGNyeXB0b2N1cnJlbmNpZXMsIGhlZWZ0IGRlIGJ1cmdlbWVlc3RlciB6aWpuIGJ1cmdlcnMgdmVyemVrZXJkIGRhdCBkZSBzdGFkIGdlZW4gY3J5cHRvJ3MgemFsIGtvcGVuLCBtYWFyIGRhdCBkZSBoZWxlIGludmVzdGVyaW5nIHphbCBkaWVuZW4gb20gbWlqbmJvdXdhY3Rpdml0ZWl0ZW4gdGUgZmluYW5jaWVyZW4sIHdhdCBoaWogYmVzY2hvdXd0IGFscyBlZW4gdmVpbGlnZSB1aXRnYXZlLiAKCk9uZGFua3MgZGUgb256ZWtlcmhlaWQgdmFuIHppam4gd2FhcmRlLCBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgbGlqa3QgdGUgd29yZGVuIGJlc2Nob3V3ZCBhbHMgZGUgb3Bsb3NzaW5nIHZvb3IgdmVlbCBsYW5kZW4gb20gZGUgdm9sYXRpbGl0ZWl0IHZhbiBodW4gZWlnZW4gbmF0aW9uYWxlIHZhbHV0YSB0ZSBiZWhlZXJzZW4gZW4gYWYgdGUgcmVtbWVuLCBlZW4gYmVzbHVpdCBkYXQgbm9nIG1lZXIgc3RlZGVuIGVuIGxhbmRlbiBrYW4gYWFubW9lZGlnZW4gb20gaGV0emVsZmRlIGluaXRpYXRpZWYgdGUgbmVtZW4gZW4gZGUgaG9nZSBpbmZsYXRpZSB0ZSBiZXN0cmlqZGVuIGRpZSBtb21lbnRlZWwgZGUgd2VyZWxkZWNvbm9taWXDq24gc2NoYWFkdC4KCgojIyMgQWxnb3JhbmQgVGFrZXMgQ29udHJvbCBPdmVyIE5Z4oCZcyBUaW1lIFNxdWFyZSB8IFsxXShodHRwczovL3d3dy5wcm5ld3N3aXJlLmNvbS9uZXdzLXJlbGVhc2VzL2FsZ29yYW5kLXRvLXRha2Utb3Zlci10aW1lcy1zcXVhcmUtaW4tbmV3LXlvcmstY2l0eS10aGlzLWVhcnRoLWRheS10by1hZHZvY2F0ZS1mb3ItYS1ncmVlbmVyLWZ1dHVyZS0zMDE1MjY4MDcuaHRtbGh0dHA6Ly8gIjEiKSB8DQoNCkFsZ29yYW5kIHRvb2sgb3ZlciBUaW1lcyBTcXVhcmUgeWVzdGVyZGF5LCBvbiB0aGUgb2NjYXNpb24gb2YgdGhlIEVhcnRoIERheSBjZWxlYnJhdGlvbnMuIA0KDQpUaGUgcGVjdWxpYXJpdHkgb2YgdGhlaXIgYWR2ZXJ0aXNlbWVudD8gQWxsIHRoZSBiaWxsYm9hcmRzIHdlcmUgdHVybmVkIG9mZi4NClRoaXMgYXBwcm9hY2ggc2hvd2Nhc2VzIEFsZ29yYW5k4oCZcyBjb21taXRtZW50IHRvIHN1c3RhaW5hYmlsaXR5IGFuZCBlbmVyZ3kgZWZmaWNpZW5jeSwgd2hpbGUgYWxzbyBicmluZ2luZyBhIHJhcmUgbW9tZW50IG9mIGNhbG0gaW4gb25lIG9mIHRoZSBidXNpZXN0IGFuZCBtb3N0IGZhbW91cyBwbGFjZXMgaW4gdGhlIHdvcmxkLg0KVGhlIHRha2Ugb3ZlciBsYXN0ZWQgZm9yIG9uZSBob3VyLCBmcm9tIDggYW0gdG8gOSBhbSwganVzdCBhcyB0aGUgY2VsZWJyYXRpb25zIGFyb3VuZCB0aGUgZ2xvYmUga2lja2VkLW9mZi4NCg0KSW4gYW4gaG91ciwgVGltZXMgU3F1YXJlIGNvbnN1bWVzIHJvdWdobHkgNjUwMCBraWxvd2F0dCwgd2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgb2YgZmluYWxpemluZyAzNTAgbWlsbGlvbiB0cmFuc2FjdGlvbnMgb24gdGhlIEFsZ29yYW5kIGNoYWluLCBvciBrZWVwaW5nIHRoZSBuZXR3b3JrIG9ubGluZSBmb3IgYXBwcm94aW1hdGVseSAyIHdlZWtzLg0KQnkgY29tcGFyaXNvbiwgdGhlIHNhbWUgYW1vdW50IG9mIHBvd2VyIGlzIG5lY2Vzc2FyeSB0byBjb21wbGV0ZSB1cCB0byBzaXggdHJhbnNhY3Rpb25zIG9uIHRoZSBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgbmV0d29yaywgb3Igc3VzdGFpbiB0aGUgbmV0d29yayBmb3IganVzdCAxLjUgc2Vjb25kcy4NCg0KVGhpcyBpbXByZXNzaXZlIHBlcmZvcm1hbmNlIGlzIG9uZSBvZiB0aGUga2V5IGFzcGVjdHMgb2YgQWxnb3JhbmQsIHdoaWNoIHdhcyBidWlsdCBmcm9tIHRoZSBzdGFydCB3aXRoIHRoZSBpbnRlbnRpb24gdG8gYWNoaWV2ZSBzcGVlZCwgc2NhbGUgYW5kIGRlY2VudHJhbGl6YXRpb24gd2hpbGUgaGF2aW5nIGEgbWluaW1hbCBpbXBhY3Qgb24gdGhlIGVudmlyb25tZW50LiANCkNvbnNpZGVyZWQgdGhlIHdvcmxk4oCZcyBmaXJzdCBwdXJlIHByb29mLW9mLXN0YWtlIGJsb2NrY2hhaW4sIEFsZ29yYW5kIGhhcyBxdWlja2x5IGJlY29tZSBhIGxlYWRlciBpbiB0ZXJtcyBvZiBlbnZpcm9ubWVudGFsbHkgZnJpZW5kbHkgYmxvY2tjaGFpbiB0ZWNobm9sb2d5LCB3aXRoIGFuIG91dHB1dCBvZiB1cCB0byAxMjAgbWlsbGlvbiB0aW1lcyBsZXNzIENPMiBlbWlzc2lvbnMgd2hlbiBjb21wYXJlZCB0byBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkuDQoNCkFjY29yZGluZyB0byBTdGFjaSBXYXJkZW4sIENFTyBvZiB0aGUgQWxnb3JhbmQgRm91bmRhdGlvbiwgdGhlIGdvYWwgb2YgQWxnb3JhbmQgaXMgdG8gcHJvdmUgdGhhdCBibG9ja2NoYWluIHRlY2hub2xvZ3kgY2FuIGJlIGVuZXJneSBlZmZpY2llbnQgYW5kIHBvd2VyZnVsIGF0IHRoZSBzYW1lIHRpbWUsIHdpdGhvdXQgY29tcHJvbWlzaW5nIG9uIHNlY3VyaXR5LiBTaGUgYWxzbyBhZGRlZCB0aGF0IHBsYW5zIHRvIGZ1cnRoZXIgQWxnb3JhbmTigJlzIGNhcmJvbi1uZWdhdGl2ZSBwbGVkZ2UgYXJlIGluIHRoZSB3b3Jrcy4NCg0KU28gd2hhdCBkbyB5b3UgdGhpbms/IElzIHRoaXMgYSBwdWJsaWNpdHkgc3R1bnQsIG9yIGlzIGl0IHdoYXQgQWxnb3JhbmQgdHJ1bHkgYmVsaWV2ZXM/DQpUcmFuc2l0aW9u4oCULS0tLS0tLQ0KDQpUaGFua3MgYWdhaW4gZm9yIHR1bmluZyBpbi4gSWYgeW91IGVuam95IHRoaXMgcG9kY2FzdCwgbWFrZSBzdXJlIHRvIHN1YnNjcmliZSwgdHVybiBvbiB0aGF0IGJlbGwsIGFuZCBnaXZlIHVzIGFuIGhvbmVzdCByYXRpbmcgb24gYW55IHBsYXRmb3JtIHlvdeKAmXJlIHVzaW5nIHRvIGxpc3RlbiB0byBvdXIgcG9kY2FzdC4gSGVscCB1cyBzcHJlYWQgdGhpcyBjaGFubmVsIHRvIGhlbHAgZWR1Y2F0ZSBtb3JlIHBlb3BsZSBhYm91dCBjcnlwdG8gc3BhY2UuIFRoYW5rIHlvdS4NCg0KDQojIyMgIkV0aGVyZXVtIGhlZWZ0IHZlZWwgc2luZ2xlIHBvaW50cyBmYWlsdXJlIiB6ZWd0IEphY2sgRG9yc2V5LCBkZSBtZWRlb3ByaWNodGVyIHZhbiBUd2l0dGVyIHwgWzFdKGh0dHBzOi8vbmV3cy5bQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgfCBbMl0oaHR0cHM6Ly9kZWNyeXB0LmNvLzk4MTYwL2phY2stZG9yc2V5LWV0aGVyZXVtLW1hbnktc2luZ2xlLXBvaW50cy1mYWlsdXJlaHR0cDovLyAiMiIpIHwKCkluIGRlIGFmZ2Vsb3BlbiBkYWdlbiBoZWVmdCBEb3JzZXkgaGFyZCBnZXR3ZWV0IHRlZ2VuIHZlZWwgZ2VicnVpa2VycyBlbiBiZWRyaWp2ZW46IGVlbiB2YW4gZGUgbWVlc3QgcmVjZW50ZSB6aWpuIGRlIGFudHdvb3JkZW4gdWl0Z2V3aXNzZWxkIHR1c3NlbiBoZW0gZW4gVmxhZCBUZW5ldiBkaWUgdm9vcnN0ZWxkZSBvbSBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgdGUga29wZW4uIHZpYSBkZSBoYW5kZWxzYXBwIHZhbiBSb2Jpbmhvb2QuIAoKVGVuZXYgd2lsZGUgemlqbiBwbGF0Zm9ybSBwcm9tb3RlbiBhbHMgaGV0IHBsYXRmb3JtIGRhdCBnb2Vka29wZXJlIHRhcmlldmVuIGJpZWR0OiBlZW4gYWFuYm9kIHdhYXJvcCBEb3JzZXkgcmVhZ2VlcmRlIGVuIHN1Z2dlcmVlcmRlIGRhdCBkZSBDRU8gdmFuIFJvYmluSG9vZCBhbGxlZW4gdWl0IHdhcyBvcCBoZXQgdmVyaG9nZW4gdmFuIHppam4gaW5rb21zdGVuLCB3YWFyYmlqIGhpaiBoZW0gZXJ2YW4gYmVzY2h1bGRpZ2RlICJkb3JzdGlnIiB0ZSB6aWpuLiBIZXQgZ2VzcHJlayB0dXNzZW4gZGUgdHdlZSBlaW5kaWdkZSBtZXQgRG9yc2V5IGRpZSBoZXQgYWFuYm9kIHdlaWdlcmRlIGVuIHZlcmtsYWFyZGUgZGF0IGhpaiBkaWUgZGllbnN0IG5pZXQgZ2VicnVpa3RlLCB3YWFybWVlIGhpaiBpbmRpcmVjdCBzbGVjaHRlIHB1YmxpY2l0ZWl0IG1hYWt0ZSB2b29yIGRlIGJlcm9lbWRlIGFhbmRlbGVuYXBwLgpCb3ZlbmRpZW4gYmxlZWYgSmFjayBEb3JzZXkgcHJvbXB0IHZlZWwgem9yZ2VuIHVpdGVuIG92ZXIgZGUgRXRoZXJldW0gYmxvY2tjaGFpbiwgd2FhcmJpaiBoaWogaGV0IGhlbGUgc3lzdGVlbSBiaWpuYSBiZWtyaXRpc2VlcmRlLiBEZSBkaXNjdXNzaWUgdHVzc2VuIGhlbSBlbiBWaXRhbGlrIEJ1dGVyaW4gYmVnb24gbmFkYXQgZWVyc3RnZW5vZW1kZSB6aWpuIG1lbmluZyBoYWQgZ2VnZXZlbiBvdmVyIGRlIG1vZ2VsaWpraGVpZCBkYXQgRWxvbiBNdXNrIGRlIGNvbnRyb2xlIG92ZXIgVHdpdHRlciB6b3Ugb3Zlcm5lbWVuLiAKCkVlbiBtZW5pbmcgd2FhciBEb3JzZXkgaGV0IG1lZSBlZW5zIHdhcyBkb29yIGVyIG9vayBhYW4gdG9lIHRlIHZvZWdlbiBkYXQgc29jaWFsZSBtZWRpYSBuaWV0IGdlcmVnZWVyZCBtb2V0ZW4gd29yZGVuIGRvb3IgaW5kaXZpZHVlbiBvZiBpbnN0ZWxsaW5nZW4sIG1hYXIgZWVyZGVyIGVlbiBvcGVuIGVuIGNvbnRyb2xlZXJiYWFyIHByb3RvY29sIG1vZXRlbiB6aWpuLgoKRGVzbyBQcm90b2NvbCwgZWVuIGNyeXB0by1zb2NpYWFsIG1lZGlhcGxhdGZvcm0sIG5hbSBvb2sgZGVlbCBhYW4gaGV0IGdlc3ByZWsgbWV0IGFscyBkb2VsIHppY2h6ZWxmIHRlIHByb21vdGVuLCBtZXQgZ2VicmVrIGFhbiBzdWNjZXMuCgoKRGUgbWVkZW9wcmljaHRlciB2YW4gVHdpdHRlciBhbnR3b29yZGRlIGRhdCBEZXNvIGdlYmFzZWVyZCBpcyBvcCBoZXQgRXRoZXJldW0tcHJvdG9jb2wgZW4gZGF0IGRpdCBkZSBiZWxhbmdyaWprc3RlIHJlZGVuIGlzIHdhYXJvbSBoaWogbmlldCBnZcOvbnRlcmVzc2VlcmQgaXMgaW4gaGV0IHByb2plY3QsIHdhYXJiaWogaGlqIFZpdGFsaWtzIHByb2plY3QgZXJ2YW4gYmVzY2h1bGRpZ2RlIHZlZWwgZmFhbHB1bnRlbiB0ZSBoZWJiZW4uIAoKRGUgdmlqYW5kaWdoZWlkIHZhbiBEb3JzZXkgdGVnZW5vdmVyIEV0aGVyZXVtIGlzIG5pZXQgbmlldXc6IGFmZ2Vsb3BlbiB6b21lciB2ZXJrbGFhcmRlIGhpaiBkYXQgaGlqIGhlbGVtYWFsIG5pZXQgdmFuIHBsYW4gd2FzIHRlIGludmVzdGVyZW4gaW4gZGUgZ2VkZWNlbnRyYWxpc2VlcmRlIGJsb2NrY2hhaW4sIHdhdCBvbnpla2VyaGVpZCBlbiBvbnJ1c3QgdmVyb29yemFha3RlIGluIGRlIGNyeXB0b2dlbWVlbnNjaGFwLCBlZW4gc3RhbmRwdW50IGRhdCBrYW4gdmVyYW5kZXJlbiBhbHMgRXRoZXJldW0gZXJpbiB6b3Ugc2xhZ2VuIG92ZXIgdGUgc2NoYWtlbGVuIHZhbiBoZXQgUG9XLSBuYWFyIGhldCBQb1MtY29uc2Vuc3VzbWVjaGFuaXNtZSwgZGF0IG9wbmlldXcgaXMgdWl0Z2VzdGVsZCB0b3QgZGl0IG5hamFhci4gIAoKIyMjIEluZmx1ZW5jZXJzIENyeXB0byBTaGlsbGluZyBQYXltZW50IExlYWtlZCB8WzFdKGh0dHBzOi8vZW4uZXRoZXJldW13b3JsZG5ld3MuY29tL2hvdy1tdWNoLXR3aXR0ZXItaW5mbHVlbmNlcnMtZ2V0LXBhaWQtdG8tc2hpbGwtY3J5cHRvLXByb2plY3RzL2h0dHA6Ly8gIjEiKSB8DQoNClphY2h4YnQsIGEgbWVtYmVyIG9mIHRoZSBjcnlwdG8gY29tbXVuaXR5IG9uIFR3aXR0ZXIgZmFtb3VzIGZvciBoaXMgZGV0ZWN0aXZlLWxpa2Ugd29yayBvZiBleHBvc2luZyBzY2FtcywgcnVnIHB1bGxzIGFuZCBtYW55IG90aGVyIGZvdWwgcHJhY3RpY2VzIGhhcHBlbmluZyBpbiB0aGUgY3J5cHRvIHdvcmxkLCBoYXMgcmVjZW50bHkgbGVha2VkIGEgbGlzdCBvZiBwcmljZXMgdGhhdCBzb21lIGluZmx1ZW5jZXJzIGNoYXJnZSB0byDigJxzaGlsbOKAnSBhIHByb2plY3QuDQoNClRoZSBsaXN0IGNvbnRhaW5zIGEgdG90YWwgb2YgMTE1IGNyeXB0byBpbmZsdWVuY2Vycywgd2l0aCBwcmljZXMgc3RhcnRpbmcgZnJvbSB0aGUgbG93IGh1bmRyZWRzIGFuZCByZWFjaGluZyBldmVuIHRlbnMgb2YgdGhvdXNhbmRzIG9mIGRvbGxhcnMgZm9yIGp1c3Qgb25lIHR3ZWV0LiANCg0KVGhlIHRlcm0g4oCcc2hpbGxpbmfigJ0gcmVmZXJzIHRvIHRoZSB1bmRpc2Nsb3NlZCBhZHZlcnRpc2luZyBvZiBhIHByb2plY3QsIHdpdGggdGhlIGdvYWwgb2YgaW5jcmVhc2luZyBpdHMgdmlzaWJpbGl0eSBhbmQgY29udmluY2luZyB0aGUgZm9sbG93ZXJzIG9mIHRoZSBzaGlsbGVyIHRvIGludmVzdCBpbiBpdC4gVGhlIHByYWN0aWNlIGhhcyBiZWNvbWUgaW5jcmVhc2luZ2x5IHBvcHVsYXIsIGNvbnNpZGVyaW5nIHRoYXQgaXQgaXMgYSBmYWlybHkgbG93LWVmZm9ydCBqb2IgYnV0IGEgaGlnaGx5IHByb2ZpdGlhYmxlIG9uZS4gQW5kIGl0IGlzIGFsc28gcmVtdW5lcmF0aXZlIGZvciB0aGUgcHJvamVjdHMsIHdoaWNoIG1vc3Qgb2YgdGhlIHRpbWVzIGFyZSBzY2FtcyBhbmQgcnVnIHB1bGxzIGxvb2tpbmcgdG8gYXR0cmFjdCBsaXF1aWRpdHksIHNvbWV0aGluZyB0aGV5IGNhbiBmaW5kIGJ5IHJlbHlpbmcgb24gaW5mbHVlbmNlcnMgd2l0aCBodWdlIGZvbGxvd2luZ3MuDQoNCkFsdGhvdWdoIGl0IGlzIHdvcnRoIG1lbnRpb25pbmcgdGhhdCBub3QgYWxsIHByb2plY3RzIHRoYXQgcmVseSBvbiB1bmNvbnZlbnRpb25hbCBtZWFucyB0byBhZHZlcnRpc2UgdGhlbXNlbHZlcyBoYXZlIGJhZCBpbnRlbnRpb25zOiBpbmZsdWVuY2VycyBhcmUgcXVpY2tseSBiZWNvbWluZyBhbiBlc3NlbnRpYWwgcGFydCBvZiBtYXJrZXRpbmcsIG5vdCBvbmx5IGluIGNyeXB0byBidXQgYWxzbyBpbiBmYXNoaW9uLCBnYW1pbmcsIG1vdmllcywgYW5kIG1hbnkgb3RoZXIgY29tbWVyY2lhbCBzZWN0b3JzLg0KDQpUaGF0IGlzIHdoeSBpdCBpcyBhbHdheXMgcmVjb21tZW5kZWQgdG8gZG8geW91ciBvd24gcmVzZWFyY2ggd2hlbiBpdCBjb21lcyB0byBpbnZlc3RpbmcsIGJlIGl0IGFuIGFkdmVydGlzZWQgcHJvamVjdCBmcm9tIHlvdXIgZmF2b3VyaXRlIGluZmx1ZW5jZXIsIG9yIGEgZ2VtIHRoYXQgeW91IGZvdW5kIGJ5IHlvdXJzZWxmIQ0KDQojIyMgVGVzbGEgZ2FhdCBpbnZlc3RlcmVuIGluIEJUQy1taWpuZmFjaWxpdGVpdCB8IFsxXShodHRwczovL3d3dy5pbmRlcGVuZGVudC5jby51ay90ZWNoL3Rlc2xhLVtCaXRjb2luXShodHRwczovL3d3dy5nYXRlLmlvL3RyYWRlL0JUQ19VU0RUKSB8CkVlbiB2YW4gZGUgbWVlc3QgcG9wdWxhaXJlIHpvcmdlbiBvdmVyIGNyeXB0b2N1cnJlbmNpZXMgaXMgZGUgaG9ldmVlbGhlaWQgZW5lcmdpZSBkaWUgbm9kaWcgaXMgb20gZWVuIG5pZXV3ZSBlZW5oZWlkIHZhbiBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgdGUgZGVsdmVuLiBvZiBhbmRlcmUgdmlydHVlbGUgdmFsdXRhIGRpZSB2b2xnZW5zIGRlIENhbWJyaWRnZSBbQml0Y29pbl0oaHR0cHM6Ly93d3cuZ2F0ZS5pby90cmFkZS9CVENfVVNEVCkgVWl0IGRlIGVsZWt0cmljaXRlaXRzdmVyYnJ1aWtzaW5kZXggYmxpamt0IGRhdCBTYXRvc2hpJ3MgbWlqbmJvdXcgZXZlbnZlZWwgZW5lcmdpZSB2ZXJndCBhbHMgZGUgaG9ldmVlbGhlaWQgZGllIEVneXB0ZSBpbiBlZW4gamFhciBnZWJydWlrdC4gCgpEZSBtaWpuYm91d2FjdGl2aXRlaXQgaXMgZGUgYmVsYW5ncmlqa3N0ZSByZWRlbiB3YWFyb20gdmVlbCBhY3RpdmlzdGVuIG9ubWlkZGVsbGlqayBrcml0aWVrIGhlYmJlbiBvcCBkZSBvbnR3aWtrZWxpbmdlbiBlbiBoZXQgbnV0IHZhbiBjcnlwdG9jdXJyZW5jeSwgZW4gZGUgcHJvamVjdGVuIGVydmFuIGJlc2NodWxkaWdlbiBoZXQgbWlsaWV1IG5hdXdlbGlqa3MgdGUgc2NoYWRlbi4KCkRlIG1lZXN0IHBvcHVsYWlyZSBvcGxvc3NpbmcgaXMgZGllIHdhYXJiaWogcHJvamVjdGVuIHpvYWxzIEV0aGVyZXVtLCBkaWUgbW9tZW50ZWVsIGFmaGFua2VsaWprIHppam4gdmFuIFBvVy12ZXJpZmljYXRpZSB0cmFuc2FjdGllcywgem91ZGVuIG92ZXJzY2hha2VsZW4gb3AgZWVuIG1lZXIgbWlsaWV1dnJpZW5kZWxpamtlIG1pam5ib3V3YWN0aXZpdGVpdCwgZ2VuYWFtZCBQb1MuIE9vayBhbCB2ZXJndCBkZSBvbXNjaGFrZWxpbmcgbWVlciB0aWpkIGRhbiB2ZXJ3YWNodCwgem93ZWwgdmFudWl0IHRlY2hub2xvZ2lzY2ggYWxzIHZhbnVpdCB2ZWlsaWdoZWlkc29vZ3B1bnQsIHRvY2ggem91IGRlIG9tc2NoYWtlbGluZyBkZSBtaWpuYm91d2FjdGl2aXRlaXQgZWVuIHZlcm1pbmRlcmluZyB2YW4gZGUgZW5lcmdpZWJlaG9lZnRlIGdhcmFuZGVyZW4uCgpFZW4gYW5kZXJlIG9wbG9zc2luZyBkaWUgbW9tZW50ZWVsIHdvcmR0IGdldGVzdCBpcyBkZSBvcGxvc3NpbmcgZGllIGdlcmljaHQgaXMgb3AgZHV1cnphbWUgZW5lcmdpZWJyb25uZW4gem9hbHMgd2luZCwgd2F0ZXJrcmFjaHQgb2Ygem9ubmUtZW5lcmdpZSwgZGllIGFsIGRvb3IgVGVzbGEgaXMgb21hcm1kLiBEZSBmYWJyaWthbnQgdmFuIGVsZWt0cmlzY2hlIGF1dG8ncyB3ZXJrdCBzYW1lbiBtZXQgQmxvY2sgZW4gQmxvY2tzdHJlYW0gYWFuIGRlIGJvdXcgdmFuIGVlbiBpbnN0YWxsYXRpZSB2YW4gMyw4IG1lZ2F3YXR0IGRpZSBsYXRlciBkaXQgamFhciBpbiBiZWRyaWpmIHphbCB3b3JkZW4gZ2Vub21lbi4KClRlc2xhIGVuIE1lZ2FwYWNrIGhlYmJlbiBhbCB6b25uZXBhbmVsZW4gZW4gYmF0dGVyaWplbiBuYWFyIFRleGFzIGdlc3R1dXJkIG9tIHRlIGJlZ2lubmVuIG1ldCBoZXQgaGVsZSBwcm9qZWN0IGRhdCB0b3QgZG9lbCBoZWVmdCBbQml0Y29pbl0gdGUgZGVsdmVuIChodHRwczovL3d3dy5nYXRlLmlvL3RyYWRlL0JUQ19VU0RUKSBtZXQgMTAwJSBoZXJuaWV1d2JhcmUgZW5lcmdpZS4gRWVuIGluaXRpYXRpZWYgZGF0IGRlIGJla2VuZGhlaWQgdmFuIGNyeXB0byBvdmVyIGRlIGhlbGUgd2VyZWxkIHBvc2l0aWVmIGthbiB2ZXJiZXRlcmVuLCB3YWFyZG9vciBoZXQgc2xlY2h0ZSBpbWFnbyB3YWFyIGRlIHNlY3RvciBtb21lbnRlZWwgdm9vcmFsIGxhc3QgdmFuIGhlZWZ0LCB2ZXJiZXRlcnQuCgotLS0tLS0tLS0tLS0KCgojIyMgU3BvbnNvciB8IExpbmVhciBGaW5hbmNlDQoNCkJlZm9yZSBJIGNvbnRpbnVlIHdpdGggdG9kYXnigJlzIERlZXAgRGl2ZSwgSSBtdXN0IHRlbGwgeW91IGFib3V0IHRvZGF54oCZcyBzcG9uc29yLiANCg0KTGluZWFyIEZpbmFuY2UgaXMgYSBkaXN0cmlidXRlZCBwcm90b2NvbCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCBtdWx0aXBsZSBjaGFpbnMgYW5kIG1ham9ycyB3aXRoIHN5bnRoZXRpYyBhc3NldHMuIE9uZSBvZiB0aGUgd2F5cyB0aGUgcHJvamVjdCBhY2hpZXZlcyB0aGlzIGlzIGJ5IGVuYWJsaW5nIGludmVzdG9ycyB0byBzYXZlIG9uIHRyYW5zYWN0aW9uIGZlZXMgYW5kIHJlZHVjZSB0aGUgdGltZSBpdCB0YWtlcyB0byBicmluZyBhbiBpbnZlc3RtZW50IHBvc2l0aW9uIHRvIGxpZmUuDQoNClRoZSBwcm9qZWN04oCZcyB3aGl0ZSBwYXBlciBzdHJlc3NlcyBkZWx0YS1vbmUgYW5kIHN5bnRoZXRpYyBhc3NldHMuIEluIGRlcml2YXRpdmVzLCBkZWx0YS1vbmUgbWVhbnMgdGhhdCBhIGNoYW5nZSBpbiB0aGUgcHJpY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgaWduaXRlcyB0aGUgc2FtZSBjaGFuZ2UgdG8gdGhlIHByb2R1Y3QuIFN5bnRoZXRpYywgb24gdGhlIG90aGVyIGhhbmQsIGFyZSBhc3NldHMgdGhhdCBkZXJpdmUgdGhlaXIgdmFsdWUgZnJvbSBvdGhlciBhc3NldHMuIEV4YW1wbGVzIG9mIHN5bnRoZXRpY3MgaW5jbHVkZSBmdXR1cmVzIGFuZCBvcHRpb25zLiBJbiB0aGUgY3J5cHRvIHdvcmxkLCBzeW50aGV0aWMgYXNzZXRzIGVuYWJsZSBpbnZlc3RvcnMgdG8gaW50ZXJhY3Qgd2l0aCBjcnlwdG9jdXJyZW5jaWVzIHdpdGhvdXQgbmVjZXNzYXJpbHkgaG9sZGluZyB0aGVtLg0KDQpUaGVzZSBhc3NldHMgYXJlIGFsc28ga25vd24gYXMgbGlxdWlkcyBiZWNhdXNlIHRoZXkgY2FuIGVhc2lseSBiZSBjb252ZXJ0ZWQgdG8gY2FzaC4gVGhlIExpbmVhciBwcm90b2NvbCBzdXBwb3J0cyBsaXF1aWRzIGluIGNyeXB0b2N1cnJlbmNpZXMsIGNydWRlIG9pbCwgY29mZmVlLCBtYXJrZXQgaW5kaWNlcywgZS1zcG9ydHMsIGFtb25nIG90aGVycy4NCg0KVGhlIHByb2plY3QgaXMgbGVkIGJ5IERyZXkgTmcgYW5kIEtldmluIFRhaS4gRHJleSBoYXMgYW4gTVMgaW4gQ29tcHV0ZXIgU2NpZW5jZSBmcm9tIHRoZSBVbml2ZXJzaXR5IG9mIEhvbmcgS29uZywgd2hpbGUgS2V2aW4gaGFzIGEgSGFydmFyZCBCdXNpbmVzcyBTY2hvb2wgTUJBOyBib3RoIGZvdW5kZXJzIGhhdmUgd29ya2VkIGV4dGVuc2l2ZWx5IGluIHRlY2ggYW5kIGZpbmFuY2UsIHdpdGggRHJleSBjdXJyZW50bHkgc2VydmluZyBhcyBDUE8gYXQgTGlxdWVmeSBhbmQgS2V2aW4gd2hvc2UgcGFzdCByb2xlcyBpbmNsdWRlIGJlaW5nIHZpY2UgcHJlc2lkZW50IG9mIHN0cnVjdHVyZWQgcHJvZHVjdHMgYXQgQ3JlZGl0IFN1aXNzZS4NCg0KTGluZWFyIGlzIGdvdmVybmVkIGJ5IHRoZSBMaW5lYXJEQU8uIEl04oCZcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgZXNzZW50aWFsIHBsYXRmb3JtIGRlc2lnbnMsIGFzIHdlbGwgYXMgc3lzdGVtIHBhcmFtZXRlcnMgbGlrZSAkTElOQSByZXdhcmRzIGFuZCBmcmVxdWVuY3ksIHBsZWRnZSByYXRpbywgdGhlIGludHJvZHVjdGlvbiBvZiBuZXcgZnVuY3Rpb25hbGl0eSwgdGVjaG5vbG9neSByb2FkbWFwLCBhbmQgc3BsaXQgb2YgdHJhbnNhY3Rpb24gZmVlcy4NCg0KTm93IHRvIGl0cyB0b2tlbm9taWNzLCB0aGUgJExJTkEgdG9rZW4gaXMgdXNlZCBvbiB0aGUgbmV0d29yayB0byBiYWNrIGNvbGxhdGVyYWxpemVkIGRlYnRzLCBhcyB3ZWxsIGFzIHBoeXNpY2FsIGFuZCBkaWdpdGFsIGFzc2V0cy4gSG9sZGVycyBvZiB0aGUgdG9rZW4gY2FuIGFjY2VzcyBMaW5lYXIgVVNEIChMVVNEKSB3aGljaCBjYW4gYmUgdXNlZCB0byBpbnRlcmFjdCB3aXRoIExpbmVhciBsaXF1aWRzIG9uIHRoZSBMaW5lYXIgZXhjaGFuZ2UuIEFkZGl0aW9uYWxseSwgdG9rZW4gaG9sZGVycyBjb250cmlidXRlIHRvIGdvdmVybmFuY2UgZGVjaXNpb25zIHN1Y2ggYXMgd2hpY2ggYXNzZXRzIHRvIGJlIGxpc3RlZCwgYW5kIGRpc3RyaWJ1dGlvbiBtb2RlbHMuDQoNCkJlIHN1cmUgdG8gY2hlY2sgb3V0IHRoZSBkZXNjcmlwdGlvbiBiZWxvdyBiZWNhdXNlIHdl4oCZcmUgZ2l2aW5nIGF3YXkgNTksMDAwICRMSU5BIHRva2VucyB2aWEgYWlyZHJvcHMgYmV0d2VlbiBBcHJpbCAyMXN0IHRvIHRoZSAyOHRoLiBJZiB5b3UgaGFwcGVuIHRvIHdpbiwgdGhlIGZpcnN0IHRoaW5nIHlvdSBzaG91bGQgZG8gaXMgdG8gZXZhbHVhdGUgTGluZWFy4oCZcyBzdGFraW5nIG1lY2hhbmlzbS4gT2YgY291cnNlLCB0aGlzIGlzbuKAmXQgZmluYW5jaWFsIGFkdmljZSBhbmQgeW914oCZcmUgZnJlZSB0byBkbyBhcyB5b3Ugd2lsbC4NCg0KQnV0IGp1c3QgdG8gZ2l2ZSB5b3Ugc29tZSBpZGVhcywgJExJTkEgc3Rha2VycyBlYXJuIHJld2FyZHMgb24gZWl0aGVyIHByby1yYXRhIGV4Y2hhbmdlIGZlZXMgb3IgYW4gaW5mbGF0aW9uYXJ5IHJld2FyZCBiYXNpcy4gRm9yIHRoZSBmaXJzdCBvcHRpb24sIHRoZSByZXdhcmRzIGFyZSBhdHRhaW5lZCBvbiBhIHdlZWtseSBiYXNpcywgYW5kIHRoZSBjYWxjdWxhdGlvbiBpcyBkb25lIHdoaWxlIGNvbnNpZGVyaW5nIHRoZSBzdGFrZXJz4oCZIHBsZWRnZSByYXRpby4gT3RoZXIgd2F5cyBzdGFrZXJzIGVhcm4gcmV3YXJkcyBhcmUgdmlhIHlpZWxkIGZhcm1pbmcsIGEgcG9zaXRpdmUgdmFyaWF0aW9uIG9mIHRoZSBwbGVkZ2UgcmF0aW8sIGFuZCBwcm92aWRpbmcgbGlxdWlkaXR5IG9uIHRoZSBMaW5lYXIgcG9vbC4NCg0KDQotLS0tLS0tLS0tLS0NCg0KDQoNCiMjIyBERCB8IFdlbGtlIHByb2R1Y3RlbiBib3V3ZW4gdGVjaG5pc2NoZSBiZWRyaWp2ZW4gdm9vciBkZSBXZWIzLXJldm9sdXRpZT8gfCBbMV0oaHR0cHM6Ly93d3cuZ2F0ZS5pby9ibG9nX2RldGFpbC84MTQvU25hcGNoYXQtQW5kLU1ldGF2ZXJzZWh0dHA6Ly8gIjEiKSB8IFsyXShodHRwczovL3d3dy5nYXRlLmlvL2Jsb2dfZGV0YWlsLzgzMi9BZG9iZS1zLVBsYW5zLUZvci10aGUtTWV0YXZlcnNlaHR0cDovLyAiMiIpIHwgWzNdKGh0dHBzOi8vd3d3LmdhdGUuaW8vYmxvZ19kZXRhaWwvODI0L0FtYXpvbi1oaXRzLXRoZS1NZXRhdmVyc2Utd2l0aC1hLTNELWdhbWVodHRwOi8vICIzIikgfCBbNF0oaHR0cHM6Ly93d3cuZ2F0ZS5pby9ibG9nX2RldGFpbC84NTIvSG93LU1vc3QtV2ViMi1Db21wYW5pZXMtQXJlLUFkb3B0aW5nLVRoZS1XZWIzLVRlY2hub2xvZ3lodHRwOi8vICI0IikgfAoKRGUgb3Brb21zdCB2YW4gZGUgV2ViMy1yZXZvbHV0aWUKTWV0IGRlIHRvZW5lbWVuZGUgcG9wdWxhcml0ZWl0IHZhbiBXZWIzIGhlYmJlbiB2ZWVsIGJlZHJpanZlbiB6aWNoIG9wIGRlIG5pZXV3ZSBtYXJrdCBiZWdldmVuIGluIGRlIGhvb3AgaHVuIGRpZW5zdGVuIHRlIHZlcmJldGVyZW4sIGh1biBnZW1lZW5zY2hhcCB0b2VnYW5nIHRlIGdldmVuIHRvdCBuaWV1d2UgZnVuY3Rpb25hbGl0ZWl0ZW4gZW4gdGVnZWxpamtlcnRpamQgZGUgaW5rb21zdGVuIHZhbiBodW4gbWVyayB0ZSB2ZXJob2dlbi4KCkhldCBpbnRlcm5ldCBibGlqZnQgemljaCBvbnR3aWtrZWxlbiBlbiB3ZXJkIGFhbnZhbmtlbGlqayBhbGxlZW4gZ2VicnVpa3QgYWxzIGluZm9ybWF0aWVicm9uLCBtYWFyIGlzIG51IGhldCBiZWxhbmdyaWprc3RlIGluc3RydW1lbnQgdm9vciBtZW5zZW4gb20gbWV0IGVsa2FhciB0ZSBjb21tdW5pY2VyZW4uIERlIGh1aWRpZ2UgZWNvbm9taWUgZW4gZGUgbWVlc3RlIHZhbiBvbnplIGRhZ2VsaWprc2UgaW50ZXJhY3RpZXMgYmVydXN0ZW4gb3AgdmlydHVlbGUgY29tbXVuaWNhdGllIGVuIGRhYXJvbSB6aWpuIHNvY2lhbGUgbmV0d2Vya2VuIGVuIHZlZWwgZGlnaXRhbGUgYmVkcmlqdmVuIHN0ZWVkcyBwb3B1bGFpcmRlciBnZXdvcmRlbi4gCgpab2FscyBpbiBhbGxlIHNlY3RvcmVuIGlzIGRlIGNvbmN1cnJlbnRpZSBlY2h0ZXIgaGV2aWcsIGVuIGJlZHJpanZlbiB6aWpuIHZvb3J0ZHVyZW5kIG9wIHpvZWsgbmFhciBkZSBuaWV1d3N0ZSwgYWxsZXJuaWV1d3N0ZSB0ZWNobm9sb2dpZcOrbiB3YWFybWVlIHppaiBodW4gYWN0aXZpdGVpdGVuIGt1bm5lbiB1aXRicmVpZGVuIGVuIGVlbiB2b29yc3Byb25nIGt1bm5lbiBuZW1lbiBvcCBodW4gY29uY3VycmVudGVuLiAKCkVlbiB2YW4gZGV6ZSB0ZWNobm9sb2dpZcOrbiwgd2FhcmluIGJlZHJpanZlbiBkZSBhZmdlbG9wZW4gamFyZW4gYWFuemllbmxpamtlIGhvZXZlZWxoZWRlbiBrYXBpdGFhbCB6aWpuIGdhYW4gaW52ZXN0ZXJlbiwgaXMgV2ViMy4KCldhdCB2b29yYWwgZGUgYWFuZGFjaHQgdmFuIGdyb3RlIGJlZHJpanZlbiBoZWVmdCBnZXRyb2trZW4sIGlzIGhldCBwb3RlbnRpZWVsIGRhdCBXZWIzIGthbiBiaWVkZW4sIG9tIGVlbiB2b2xsZWRpZyBkaWdpdGFsZSB3ZXJlbGQgdGUgY3Jlw6tyZW4gZGllIGxpamt0IG9wIGRlIGVjaHRlLCB3YWFyaW4gZ29lZGVyZW4gZW4gZGllbnN0ZW4ga3VubmVuIHdvcmRlbiB2ZXJrb2NodCBhYW4gZGUgbWVuc2VuIGRpZSB2aXJ0dWVsZSBidXJnZXJzIHppam4gZ2V3b3JkZW4uCgoKU29jaWFsZSBuZXR3ZXJrcGxhdGZvcm1zLCBiZWtlbmRlIG1lcmtlbiwgZ3JvdGUga29ycHNlbiBlbiBiZWRyaWpmc29yZ2FuaXNhdGllcyBnYWFuIHZlcnNjaGlsbGVuZGUgcGFydG5lcnNjaGFwcGVuIGVuIHNhbWVud2Vya2luZ3N2ZXJiYW5kZW4gYWFuIG9tIHBlcnNvb25saWprZSBwcm9qZWN0ZW4gdGUgbGFuY2VyZW4gZGllIG9wIGRlIGJsb2NrY2hhaW50ZWNobm9sb2dpZSB6aWpuIGdlYm91d2QuICAKV2ViMiB3b3JkdCBnZWNvbnRyb2xlZXJkIGRvb3IgbWVya2VuIGVuIHRlY2hub2xvZ2llYmVkcmlqdmVuIGRpZSBodW4gYXV0b3JpdGVpdCBub2cgdmVyZGVyIHdpbGxlbiB1aXRicmVpZGVuLCBkYWFyb20gaGViYmVuIHppaiBhbCB2ZXJzY2hpbGxlbmRlIHN0cmF0ZWdpZcOrbiBnZXBsYW5kIG1ldCBiZXRyZWtraW5nIHRvdCBkZSB2b2xnZW5kZSBpbnRlcm5ldHJldm9sdXRpZS4gU29tbWlnZW4gZmluYW5jaWVyZW4ga2xlaW5lcmUgdmVzdGlnaW5nZW4gYmlubmVuIGRlIGJlZHJpanZlbiwgdGVyd2lqbCBhbmRlcmVuIGludmVzdGVyZW4gaW4gc3RhcnQtdXBzIGluIGRlIGhvb3AgZGUgdmVyYm9yZ2VuIHBhcmVsIHRlIHZpbmRlbi4KCkFtYXpvbidzIE1ldGF2ZXJzZSAzRCBHYW1lCkFtYXpvbiwgZWVuIHZhbiBkZSBncm9vdHN0ZSBlLWNvbW1lcmNlYmVkcmlqdmVuIGRpZSBlciB6aWpuLCBoZWVmdCBvbmxhbmdzIHppam4gZWlnZW4gM0QtZ2FtZSBpbiBkZSBtZXRhdmVyc2UgZ2VsYW5jZWVyZDogaGV0IGhlZWZ0IGVlbiBpbnRlcmFjdGlldmUsIGVjb25vbWlzY2hlIGVuIHZlcmtvb3BiZW5hZGVyaW5nLCBnZXJpY2h0IG9wIGhldCBvbmRlcndpanplbiB2YW4gc3R1ZGVudGVuIG92ZXIgY2xvdWQgY29tcHV0aW5nLiBIZXQgc3BlbCwgZ2VuYWFtZCBBV1MgQ2xvdWQgUXVlc3Rpb24sIGdlZWZ0IGRlIGdlYnJ1aWtlciBkZSBtb2dlbGlqa2hlaWQgb20gZG9vciBlZW4gdmlydHVlbGUgc3RhZCB0ZSBsb3BlbiB3YWFyIHplIGRlIGJld29uZXJzIG1vZXRlbiBoZWxwZW4gYmlqIGhldCBvcGxvc3NlbiB2YW4gY2xvdWQtZ2VyZWxhdGVlcmRlIElULXByb2JsZW1lbi4gTmFhc3QgaGV0IGVkdWNhdGlldmUgZ2VkZWVsdGUgbW9lZGlndCBoZXQgcGxhdGZvcm0gZ2VicnVpa2VycyBhYW4gb20gaGV0IHNwZWwgdGUgc3BlbGVuIGRvb3IgaGVuIG9vayBpbiBzdGFhdCB0ZSBzdGVsbGVuIHZlcnNjaGlsbGVuZGUgaW4tZ2FtZSBhY3RpdmEgdnJpaiB0ZSBzcGVsZW4sIHdhdCBlZW4gdnJpaiB2ZXJnZWxpamtiYXJlIGJlbmFkZXJpbmcgaXMgYWxzIGRlIGh1aWRpZ2UgdmlkZW9nYW1lLWluZHVzdHJpZS4KClNuYXBjaGF0IHNwcmluZ3QgaW4gaGV0IFdlYjM6IEJpdG1vamktc2VydmljZSAmIEFSLWJyaWwKU25hcGNoYXQgaGVlZnQgb25sYW5ncyBnZcOvbnZlc3RlZXJkIGluIGRlIEFSLXRlY2hub2xvZ2llIGRpZSBkZSBNZXRhdmVyc2UtaW50ZWdyYXRpZSBiaW5uZW4gZGUgYXBwIHZvcm0gbW9ldCBnZXZlbi4gSGV0IHBsYW4gaXMgb20gZGUgZ2VicnVpa2VycyBkZSBtb2dlbGlqa2hlaWQgdGUgYmllZGVuIGNyZWF0aWVzIHRlIHJlYWxpc2VyZW4gZGllIGRlIGdlbWVlbnNjaGFwIGhlbHBlbiBkZSBkaWdpdGFsZSB3ZXJlbGQgdGUgZXJ2YXJlbiBlbiB0ZW4gdm9sbGUgdGUgYmVsZXZlbi4gClNpbmRzIGRlIGxhbmNlcmluZyB2YW4gaGV0IHByb2plY3QgemlqbiBvbmdldmVlciAzMDAgdmFuIGRlemUgQVItZWZmZWN0ZW4gbWVlciBkYW4gMSBtaWxqYXJkIGtlZXIgYmVrZWtlbi4gCgpUb2NoIGRyb29tdCBTbmFwY2hhdCBub2cgZ3JvdGVyIGVuIGRhYXJvbSBoZWVmdCBoZXQgbWVuc2VuIGRlIG1vZ2VsaWpraGVpZCBnZWdldmVuIGh1biBlaWdlbiB2aXJ0dWVsZSBtZW5zZW4gdGUgY3Jlw6tyZW4gZW4gdGUgcGVyc29uYWxpc2VyZW4gdmlhIGRlIEJpdG1vamktZGllbnN0LCB3YWFybWVlIGhldCBkdWlkZWxpamsgb3ZlcnNjaGFrZWx0IHZhbiBlZW4gMkQtcGVyc29uYWdlIG5hYXIgZWVuIDNELXBlcnNvbmFnZS4KCkhldCBiZWRyaWpmIGhlZWZ0IG9vayBkZSBBUi1icmlsIGdlY3Jlw6tlcmQgd2Fhcm1lZSBtZW5zZW4gZGlnaXRhbGUgb2JqZWN0ZW4gaW4gZGUgZWNodGUgd2VyZWxkIGt1bm5lbiBwcm9qZWN0ZXJlbiwgd2FhcmRvb3IgbWVuc2VuIGVlbiBuaWV1dyBsZXZlbiBrdW5uZW4gbGVpZGVuIGRhdCB3b3JkdCBnZWtlbm1lcmt0IGRvb3IgdmlydHVlbGUgaHVscG1pZGRlbGVuIGJpbm5lbiBodW4gZWlnZW4gcGVyc29vbmxpamtlIGxldmVuLgoKQWRvYmUncyBTb2Z0d2FyZXMgQXJlIFNoYXBpbmcgTWV0YXZlcnNlJ3MgQVIKWmVsZnMgQWRvYmUsIGRlIHRlY2hnaWdhbnQsIGhlZWZ0IGluIG1hYXJ0IGFhbmdla29uZGlnZCBkYXQgaGV0IGJlZHJpamYgemljaCByaWNodCBvcCBoZXQgbWFrZW4gdmFuIGVlbiB3aGl0ZXBhcGVyIG92ZXIgemlqbiBwbGFuIG9tIHRvZSB0ZSB0cmVkZW4gdG90IGRlIE1ldGF2ZXJzZS1yZWFsaXRlaXQuIEhldCBob29mZGRvZWwgaXMgaGV0IGxldmVyZW4gdmFuIEFSL1ZSLWRpZW5zdGVuIGVuIGhldCBjcmXDq3JlbiB2YW4gM0QtaW5ob3VkLCB3YXQgYmV0ZWtlbnQgZGF0IGhldCBiZWRyaWpmIGtpamt0IG5hYXIgaGV0IGJvdXdlbiB2YW4gZWVuIHNvb3J0IGNyZWF0aWV2ZSBodWxwIHZvb3IgYW5kZXJlIG1lcmtlbi4gCgoKTWV0IFN1YnN0YW5jZSAzRCwgZWVuIHZhbiBkZSBkaWVuc3RlbiB2YW4gQWRvYmUsIGt1bm5lbiBtZW5zZW4gM0Qta3Vuc3Qgb250d2VycGVuIGVuIGRlemUgdmlhIEFSLXRlY2hub2xvZ2llIHRvdCBsZXZlbiBicmVuZ2VuLiBBbmRlcnppamRzIGJpZWR0IEFlcm8sIGVlbiBhbmRlcmUgaW5ub3ZhdGlldmUgc29mdHdhcmUsIGdlYnJ1aWtlcnMgZGUgbW9nZWxpamtoZWlkIG9tIHNuZWwgdmlydHVlbGUgb2JqZWN0ZW4gdGUgY3Jlw6tyZW4gZW4gdGUgZGVsZW4gdmlhIHNtYXJ0cGhvbmUgb2YgdGFibGV0LgoKQ29uY2x1c2llCkVyIHppam4gdGFsbG96ZSBhbmRlcmUgdm9vcmJlZWxkZW4gdmFuIGdyb3RlIGJlZHJpanZlbiwgd2FhcnZhbiBzb21taWdlIG5pZXQgZWVucyBhY3RpZWYgemlqbiBpbiBkZSB0ZWNobm9sb2dpZS1pbmR1c3RyaWUsIGRpZSBlZW4gbmlldXdlIGlua29tc3RlbnN0cm9vbSBuYXN0cmV2ZW4gZG9vciB6aWNoIGluIGRlIFdlYjMtcnVpbXRlIHRlIGJlZ2V2ZW4uIE9mIGRlemUgaW5zcGFubmluZ2VuIHZydWNodGVuIHp1bGxlbiBhZndlcnBlbiwgemFsIGFsbGVlbiBkZSB0aWpkIGxlcmVuOiBhYW5nZXppZW4gV2ViMyBlZW4gcmVsYXRpZWYgbmlldXdlIHNlY3RvciBpcywgc3RhYW4gcmFkaWNhbGUgaW5ub3ZhdGllcyBlbiB2ZXJhbmRlcmluZ2VuIGFsdGlqZCB2b29yIGRlIGRldXIsIHdhdCBkZSBkb3JzdCBuYWFyIGlubm92YXRpZSBhbGxlZW4gbWFhciBrYW4gYWFud2Fra2VyZW4gZW4gZGUgY29uY3VycmVudGllIG5vZyBoZXZpZ2VyIGthbiBtYWtlbi4=