Asterisk Realtime – Error With Index Length In Alembic Script
Hi!
I just tried setting up Asterisk realtime database following the wiki article https://wiki.asterisk.org/wiki/display/AST/Setting+up+PJSIP+Realtime on a Debian 9 machine (which switched from MyQSL to MariaDB).
One has to install mariadb-plugin-connect, python-mysqldb and alembic packages (alembic does not work when installed via pip). Additionally – since MariaDB by default does not have a root user password set and running mysql -u root requires sudo as well – you need to execute the following:
sudo mysql_secure_installation sudo mysql_upgrade -p –force
So far so good. I run into problems when running alembic when I get to the following change:
e96a0b8071c_increase_pjsip_column_size.py mariadb fails this operation with error “Specified key was too long; max key length is 767 bytes” when it tries to increase some fields to varchar(255).
Any idea how to solve this? Do I maybe have to switch to a different encoding for this to work?
Thanks in advance
4 thoughts on - Asterisk Realtime – Error With Index Length In Alembic Script
Nevermind guys!
I just found out the solution myself:
MariaDB in Debian uses utf8mb4 as default character set (see here: https://mariadb.com/kb/en/mariadb/differences-in-mariadb-in-debian-and-ubuntu/).
I needed to uncomment the lines with utf8mb4 in /etc/mysql/maria.db.conf in the following files:
50-client.cnf (1 line)
50-mysql-clients.cnf (1 line)
50-server.cnf (2 lines)
Please open a Ticket (https://issues.asterisk.org), to let them know that they need to update the documentation in Wiki and also handle this situation when using Alembic in Debian 9 (could happens in other Distros too).
Marcelo H. Terres
IM: mhterres@jabber.mundoopensource.com.br https://www.mundoopensource.com.br https://twitter.com/mhterres https://linkedin.com/in/marceloterres
WWVhaCwgSSB3aWxsIGRvIHRoYXQuDQoNCkkgaGF2ZSBzb21lIG1vcmUgdGhpbmdzIEkgbmVlZCB0
byBjbGFyaWZ5LCBzbyBJIHdpbGwganVzdCBnYXRoZXIgYWxsIHRoZSBpbmZvcm1hdGlvbiBhbmQg c3VtIGl0IHVwIGJlZm9yZWhhbmQuDQoNCg0KDQpXaXRoIGJlc3QgcmVnYXJkcw0KDQpGbG9yaWFu IEZsb2ltYWlyDQoNCg0KVm9uOiBhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5j b20gW21haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb21dIEltIEF1
ZnRyYWcgdm9uIE1hcmNlbG8gVGVycmVzDQpHZXNlbmRldDogTWl0dHdvY2gsIDEyLiBKdWxpIDIw MTcgMjI6NTUNCkFuOiBBc3RlcmlzayBVc2VycyBNYWlsaW5nIExpc3QgLSBOb24tQ29tbWVyY2lh bCBEaXNjdXNzaW9uIDxhc3Rlcmlzay11c2Vyc0BsaXN0cy5kaWdpdW0uY29tPg0KQmV0cmVmZjog UmU6IFthc3Rlcmlzay11c2Vyc10gQXN0ZXJpc2sgcmVhbHRpbWUgLSBFcnJvciB3aXRoIGluZGV4
IGxlbmd0aCBpbiBhbGVtYmljIHNjcmlwdA0KDQpQbGVhc2Ugb3BlbiBhIFRpY2tldCAoaHR0cHM6
Ly9pc3N1ZXMuYXN0ZXJpc2sub3JnKSwgdG8gbGV0IHRoZW0ga25vdyB0aGF0IHRoZXkgbmVlZCB0
byB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gaW4gV2lraSBhbmQgYWxzbyBoYW5kbGUgdGhpcyBz aXR1YXRpb24gd2hlbiB1c2luZyBBbGVtYmljIGluIERlYmlhbiA5IChjb3VsZCBoYXBwZW5zIGlu IG90aGVyIERpc3Ryb3MgdG9vKS4NCg0KTWFyY2VsbyBILiBUZXJyZXMgPG1odGVycmVzQGdtYWls LmNvbTxtYWlsdG86bWh0ZXJyZXNAZ21haWwuY29tPj4NCklNOiBtaHRlcnJlc0BqYWJiZXIubXVu ZG9vcGVuc291cmNlLmNvbS5icjxtYWlsdG86bWh0ZXJyZXNAamFiYmVyLm11bmRvb3BlbnNvdXJj ZS5jb20uYnI+DQpodHRwczovL3d3dy5tdW5kb29wZW5zb3VyY2UuY29tLmJyPGh0dHBzOi8vbGlu a3Byb3RlY3QuY3VkYXN2Yy5jb20vdXJsP2E9aHR0cHM6Ly93d3cubXVuZG9vcGVuc291cmNlLmNv bS5iciZjPUUsMSxjQzk4UC1hVW8wc0dXMG5tNHg2MUlFSmEzSjBhZkIxemJQZHBzM0g2bjNQSWdM
VFg3QXFLM1R1MjNfek54NTIwWXljOFl6czQ3VVY5aTI1QzBYc1dDQzI0UzhmUUFYc3RhaHd2Skhw SXhSY21yTXUwX0ZVLCZ0eXBvPTE+DQpodHRwczovL3R3aXR0ZXIuY29tL21odGVycmVzDQpodHRw czovL2xpbmtlZGluLmNvbS9pbi9tYXJjZWxvdGVycmVzDQoNCk9uIDEyIEp1bHkgMjAxNyBhdCAx MzoxMSwgRmxvaW1haXIgRmxvcmlhbiA8Zi5mbG9pbWFpckBjb21tZW5kLmNvbTxtYWlsdG86Zi5m bG9pbWFpckBjb21tZW5kLmNvbT4+IHdyb3RlOg0KTmV2ZXJtaW5kIGd1eXMhDQoNCkkganVzdCBm b3VuZCBvdXQgdGhlIHNvbHV0aW9uIG15c2VsZjoNCg0KTWFyaWFEQiBpbiBEZWJpYW4gdXNlcyB1
dGY4bWI0IGFzIGRlZmF1bHQgY2hhcmFjdGVyIHNldCAoc2VlIGhlcmU6IGh0dHBzOi8vbWFyaWFk Yi5jb20va2IvZW4vbWFyaWFkYi9kaWZmZXJlbmNlcy1pbi1tYXJpYWRiLWluLWRlYmlhbi1hbmQt dWJ1bnR1LzxodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29tL3VybD9hPWh0dHBzOi8vbWFy aWFkYi5jb20va2IvZW4vbWFyaWFkYi9kaWZmZXJlbmNlcy1pbi1tYXJpYWRiLWluLWRlYmlhbi1h bmQtdWJ1bnR1LyZjPUUsMSx2Y3N0RGRhMUVYaUx1RWZZSF9iV1NFUWlLVU5TbHhzSlJFWkJnWU13
cEZUbEZhMVJXSXVGZS1lb3hWdlFJR3V4V3E0TGFIeWhySUdodWxxb2x6MTZOUFdJR3RQWUxiU1VS
RnhxOWIwVGw1QjRyM3ZkNTZOcUJOQXpHQSwsJnR5cG89MT4pLg0KDQpJIG5lZWRlZCB0byB1bmNv bW1lbnQgdGhlIGxpbmVzIHdpdGggdXRmOG1iNCBpbiAvZXRjL215c3FsL21hcmlhLmRiLmNvbmYg aW4gdGhlIGZvbGxvd2luZyBmaWxlczoNCg0KNTAtY2xpZW50LmNuZiAoMSBsaW5lKQ0KNTAtbXlz cWwtY2xpZW50cy5jbmYgKDEgbGluZSkNCjUwLXNlcnZlci5jbmYgKDIgbGluZXMpDQoNCg0KDQpX
aXRoIGJlc3QgcmVnYXJkcw0KDQpGbG9yaWFuIEZsb2ltYWlyDQoNCg0KLS0tLS1VcnNwcsO8bmds aWNoZSBOYWNocmljaHQtLS0tLQ0KVm9uOiBhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRp Z2l1bS5jb208bWFpbHRvOmFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbT4g W21haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb208bWFpbHRvOmFz dGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbT5dIEltIEF1ZnRyYWcgdm9uIEZs b2ltYWlyIEZsb3JpYW4NCkdlc2VuZGV0OiBNaXR0d29jaCwgMTIuIEp1bGkgMjAxNyAxMzo1MA0K
QW46IEFzdGVyaXNrIFVzZXJzIE1haWxpbmcgTGlzdCAtIE5vbi1Db21tZXJjaWFsIERpc2N1c3Np b24gPGFzdGVyaXNrLXVzZXJzQGxpc3RzLmRpZ2l1bS5jb208bWFpbHRvOmFzdGVyaXNrLXVzZXJz QGxpc3RzLmRpZ2l1bS5jb20+Pg0KQmV0cmVmZjogW2FzdGVyaXNrLXVzZXJzXSBBc3RlcmlzayBy ZWFsdGltZSAtIEVycm9yIHdpdGggaW5kZXggbGVuZ3RoIGluIGFsZW1iaWMgc2NyaXB0DQoNCkhp IQ0KDQpJIGp1c3QgdHJpZWQgc2V0dGluZyB1cCBBc3RlcmlzayByZWFsdGltZSBkYXRhYmFzZSBm b2xsb3dpbmcgdGhlIHdpa2kgYXJ0aWNsZSBodHRwczovL3dpa2kuYXN0ZXJpc2sub3JnL3dpa2kv ZGlzcGxheS9BU1QvU2V0dGluZyt1cCtQSlNJUCtSZWFsdGltZSBvbiBhIERlYmlhbiA5IG1hY2hp bmUgKHdoaWNoIHN3aXRjaGVkIGZyb20gTXlRU0wgdG8gTWFyaWFEQikuDQoNCk9uZSBoYXMgdG8g aW5zdGFsbCBtYXJpYWRiLXBsdWdpbi1jb25uZWN0LCBweXRob24tbXlzcWxkYiBhbmQgYWxlbWJp YyBwYWNrYWdlcyAoYWxlbWJpYyBkb2VzIG5vdCB3b3JrIHdoZW4gaW5zdGFsbGVkIHZpYSBwaXAp Lg0KQWRkaXRpb25hbGx5IC0gc2luY2UgTWFyaWFEQiBieSBkZWZhdWx0IGRvZXMgbm90IGhhdmUg YSByb290IHVzZXIgcGFzc3dvcmQgc2V0IGFuZCBydW5uaW5nIG15c3FsIC11IHJvb3QgcmVxdWly ZXMgc3VkbyBhcyB3ZWxsIC0geW91IG5lZWQgdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nOg0Kc3Vk byBteXNxbF9zZWN1cmVfaW5zdGFsbGF0aW9uDQpzdWRvIG15c3FsX3VwZ3JhZGUgLXAgLS1mb3Jj ZQ0KDQpTbyBmYXIgc28gZ29vZC4gSSBydW4gaW50byBwcm9ibGVtcyB3aGVuIHJ1bm5pbmcgYWxl bWJpYyB3aGVuIEkgZ2V0IHRvIHRoZSBmb2xsb3dpbmcgY2hhbmdlOg0KaHR0cHM6Ly9saW5rcHJv dGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwczovL2U5NmEwYjgwNzFjX2luY3JlYXNlX3Bqc2lw X2NvbHVtbl9zaXplLnB5JmM9RSwxLGRHSkh6SnR1WDdlWURFTEkzOXRFQzRlY1lhZlpqc0NValdE
TDVwMDlET1dlMjhjTkFiZF9HRm1KTEQyakJaZmZmUy12WVB2VUgxQ1VValI3Z1gxcnRkdm01TkZD
VFZfdERWQ3RRZXJHZzZSWiZ0eXBvPTENCm1hcmlhZGIgZmFpbHMgdGhpcyBvcGVyYXRpb24gd2l0
aCBlcnJvciAiU3BlY2lmaWVkIGtleSB3YXMgdG9vIGxvbmc7IG1heCBrZXkgbGVuZ3RoIGlzIDc2
NyBieXRlcyIgd2hlbiBpdCB0cmllcyB0byBpbmNyZWFzZSBzb21lIGZpZWxkcyB0byB2YXJjaGFy KDI1NSkuDQoNCkFueSBpZGVhIGhvdyB0byBzb2x2ZSB0aGlzPyBEbyBJIG1heWJlIGhhdmUgdG8g c3dpdGNoIHRvIGEgZGlmZmVyZW50IGVuY29kaW5nIGZvciB0aGlzIHRvIHdvcms/DQoNClRoYW5r cyBpbiBhZHZhbmNlDQoNCg0KDQpXaXRoIGJlc3QgcmVnYXJkcw0KDQpGbG9yaWFuIEZsb2ltYWly DQoNCkNPTU1FTkQgSU5URVJOQVRJT05BTCBHTUJIDQpBLTUwMjAgU2FsemJ1cmcsIFNhYWxhY2hz dHJhw59lIDUxDQpodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29tL3VybD9hPWh0dHA6Ly93
d3cuY29tbWVuZC5jb20mYz1FLDEsQU1tWHRKSHNJNGhtYkJ3eXVNM00xeGJSb0d4LWppVGFDaVA3
Tnhva1V1TW5hZEFJamI4eGtJOVAxa2lfdDJ4ek43OEthU04wN0RJcEFhbUhUNVZVVEQ1ZmJXdVJx QlZNazhaQXZDWHo0dDl3azg5UmdHVTI4RVksJnR5cG89MQ0KDQpTZWN1cml0eSBhbmQgQ29tbXVu aWNhdGlvbiBieSBDb21tZW5kDQoNCkZOIDE3ODYxOHogfCBMRyBTYWx6YnVyZw0KDQotLS0tLVVy c3Byw7xuZ2xpY2hlIE5hY2hyaWNodC0tLS0tDQpWb246IGh0dHBzOi8vbGlua3Byb3RlY3QuY3Vk YXN2Yy5jb20vdXJsP2E9aHR0cHM6Ly9hc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1
bS5jb20mYz1FLDEsN3M3X0RfTXljOUJyWHNxZXhnLWJfamVHVzk5SWxucXJoWkNNaEdLekJCRTBt Ny00bHpsNFBxZjBGQmhQRFU3WXZ5c0JoM1h5dUs3anFvbFlacnljNVB2MjE0T093aUFmN3JGVlNs UjZYWkt6VFNfMG95cVFMQSwsJnR5cG89MSBodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29t L3VybD9hPWh0dHBzOi8vW21haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1
bS5jb20mYz1FLDEsYjAydDlXTXVNc3R3aVdBSHowWHJyWmpIVFZTUXduRXk1eXhYSmk1cHFORTZl cUpfWnppalE0X1Bzb0xhM3RuYWNvM0JZWFE1Q2syT0hmbWtfRG00RUhiRTc3ejIyMG8yYy1WenV2
QmJFY3E3UENZLCZ0eXBvPTFdPGh0dHBzOi8vbGlua3Byb3RlY3QuY3VkYXN2Yy5jb20vdXJsP2E9
aHR0cHM6Ly8lNWJtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29t JmM9RSwxLGIwMnQ5V011TXN0d2lXQUh6MFhyclpqSFRWU1F3bkV5NXl4WEppNXBxTkU2ZXFKX1p6
aWpRNF9Qc29MYTN0bmFjbzNCWVhRNUNrMk9IZm1rX0RtNEVIYkU3N3oyMjBvMmMtVnp1dkJiRWNx N1BDWSwmdHlwbz0xJTVkPiBJbSBBdWZ0cmFnIHZvbiBUaG9tYXMNCkdlc2VuZGV0OiBNb250YWcs IDEwLiBKdWxpIDIwMTcgMTQ6MDcNCkFuOiBodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29t L3VybD9hPWh0dHBzOi8vYXN0ZXJpc2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbSZjPUUsMSxMSUNx S1RHT3QxSkpDcWQ3Y0x0RGVBWVRSbGFlVy0wSWFBamVvZmhjRUdscUhpVWE5Rlgxdl8wWjYxZmpu NkNnbGMxTHdKRVNkWjVDc25CMVplVU1QbjdnVjJ6NWFna3oza2g4b25IVjBPeG5tbjljNERqSDZD
QlUmdHlwbz0xDQpCZXRyZWZmOiBbYXN0ZXJpc2stdXNlcnNdIENvbmZCcmlkZ2UgaW5jcmVhc2Ug dGFsa2luZyB2b2x1bWUgYXMgc3RhbmRhcmQNCg0KSGVsbG8sDQoNCmlzIGl0IHBvc3NpYmxlIHRv IGluY3JlYXNlIHRhbGtpbmcgdm9sdW1lIGZvciBjYWxsZXIgaW4gQ29uZkJyaWRnZSBhcyBzdGFu ZGFyZCB3aXRob3V0IG5lZWQgdG8gcHJlc3MgYnV0dG9ucyBhZnRlciBqb2luaW5nIGFuIGNvbmZl cmVuY2Ugcm9vbS4NCg0KYmVzdCByZWdhcmRzDQpUaG9tYXMNCg0KLS0NCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K
LS0gQmFuZHdpZHRoIGFuZCBDb2xvY2F0aW9uIFByb3ZpZGVkIGJ5IGh0dHBzOi8vbGlua3Byb3Rl Y3QuY3VkYXN2Yy5jb20vdXJsP2E9aHR0cDovL3d3dy5hcGktZGlnaXRhbC5jb20mYz1FLDEsM2N4
Z1ZwWXo2cmo4SEpoODdUaUdnOXZtTk9OVmI4UjlnajhDVXRzS1FvNEo3WFpkM0E4UDVRMmxna3Vx UmI3STJoMElMV1Y5ZmIyVlZ0TV9mTEQ1V2tqYzFnNjM3cnN6cklJRmxZVjVnRXEtdDFPWTV0ZDBN
akksJnR5cG89MSAtLQ0KDQpDaGVjayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9y dW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNr PyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3Bs YXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRv IFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cHM6Ly9saW5rcHJv dGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwOi8vbGlzdHMuZGlnaXVtLmNvbS9tYWlsbWFuL2xp c3RpbmZvL2FzdGVyaXNrLXVzZXJzJmM9RSwxLDh3ZEZFQlBhd0poZTNRN3o5Q0RKc3BrdGNXWm1h azZfRjdRd3ktS2xnVDhZM1JLZmk4cno2R1pib0VFWXQzQ1pudDQtSmpIN2dLWVZZNzl4NzJNNmRV
djB5WG1TbkNkdVlWRmNCTUs0RkpOS0NfUU9IcUk5YVNqdCZ0eXBvPTENCg0KLS0NCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KLS0gQmFuZHdpZHRoIGFuZCBDb2xvY2F0aW9uIFByb3ZpZGVkIGJ5IGh0dHBzOi8vbGlu a3Byb3RlY3QuY3VkYXN2Yy5jb20vdXJsP2E9aHR0cDovL3d3dy5hcGktZGlnaXRhbC5jb20mYz1F
LDEsVlZGUjF2dC1WVHRZOFRrbUhaVVdmdmpfcVd5dkt1VmozajNrRVdXUmtEVHFJb0s1NzkzZmtt eno5QW5UM09jUHNOZTVLNUIzZjRkWHNYblA0R2FUMXJDSjNlanE5SUc2OUNRVHdackRxc2kxM09l Z0M1UlE4aGR4JnR5cG89MSAtLQ0KDQpDaGVjayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5p dHkgZm9ydW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFz dGVyaXNrPyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtp L2Rpc3BsYXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxp c3QNClRvIFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cHM6Ly9s aW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwOi8vbGlzdHMuZGlnaXVtLmNvbS9tYWls bWFuL2xpc3RpbmZvL2FzdGVyaXNrLXVzZXJzJmM9RSwxLDhYT0RacDNWcFBjNnFiMHRjaWhmSVpk R3JkSXJrZC1WQ3JlMGNTVzBCZWdUV0VfRlF3dmt3RFRIR204VTN6b2g3U2VvdWpOWGxRdTUwanJQ
UmZELWVXaC1pbVFUdTNvM3dGQTZhZy1yVWN1bmYxVFpSWTExJnR5cG89MQ0KDQotLQ0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fDQotLSBCYW5kd2lkdGggYW5kIENvbG9jYXRpb24gUHJvdmlkZWQgYnkgaHR0cDovL3d3
dy5hcGktZGlnaXRhbC5jb208aHR0cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1o dHRwOi8vd3d3LmFwaS1kaWdpdGFsLmNvbSZjPUUsMSxRM3pURzRlWEtsY0RQS25OVTFYNjQ4cG5a R0xrazhaWV8yaDVMU3dOeVpwTHNIRHF2VXlXZzZCRkFaNDVDbGluaEM3UDlpZVl6ZzczSW5ncDFh S2pMOC1mUjc5WnVjUjF2ZnRXblZLLXVqLTRMLUl1VV9LZnhhM2gmdHlwbz0xPiAtLQ0KDQpDaGVj ayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9ydW0gYXQ6IGh0dHBzOi8vY29tbXVu aXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNrPyBTdGFydCBoZXJlOg0KICAgICAg aHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3BsYXkvQVNUL0dldHRpbmcrU3RhcnRl ZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRvIFVOU1VCU0NSSUJFIG9yIHVwZGF0
ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cDovL2xpc3RzLmRpZ2l1bS5jb20vbWFpbG1hbi9saXN0
aW5mby9hc3Rlcmlzay11c2VyczxodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29tL3VybD9h PWh0dHA6Ly9saXN0cy5kaWdpdW0uY29tL21haWxtYW4vbGlzdGluZm8vYXN0ZXJpc2stdXNlcnMm Yz1FLDEsa01HQmVKQ0JvTW56LWtYLUplY0ZRdDc5LU1oSjZhVUczYzFfMUtHNnZWOVJ5S1o1MnhX
XzJxczFlaUZZMEFNUEh4OEVwaURPM2hlajdXTGgyd0ZuOU5QQ3BLeDhHUllyVWxrdXh4Sk1mcVc4
JnR5cG89MT4NCg0K
Rm9yIGFueW9uZSBpbnRlcmVzdGVkIEkgZG9jdW1lbnRlZCBteSBmaW5kaW5ncyBhcyBhIGNvbW1l bnQgdG8gdGhlIG9yaWdpbmFsIHdpa2kgYXJ0aWNsZSBoZXJlOg0KDQpodHRwczovL3dpa2kuYXN0
ZXJpc2sub3JnL3dpa2kvZGlzcGxheS9BU1QvU2V0dGluZyt1cCtQSlNJUCtSZWFsdGltZT9yZWZy ZXNoPTE1MDE1OTIyNDYzMjUmcmVmcmVzaD0xNTAxNTkyMzA5ODUyJnJlZnJlc2g9MTUwMTU5MjM4
NTQwMSZmb2N1c2VkQ29tbWVudElkPTM3NDU1MDUxI2NvbW1lbnQtMzc0NTUwNTENCg0KDQoNCldp dGggYmVzdCByZWdhcmRzDQoNCkZsb3JpYW4gRmxvaW1haXINCg0KDQpWb246IGFzdGVyaXNrLXVz ZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbSBbbWFpbHRvOmFzdGVyaXNrLXVzZXJzLWJvdW5j ZXNAbGlzdHMuZGlnaXVtLmNvbV0gSW0gQXVmdHJhZyB2b24gRmxvaW1haXIgRmxvcmlhbg0KR2Vz ZW5kZXQ6IERvbm5lcnN0YWcsIDEzLiBKdWxpIDIwMTcgMTE6NTINCkFuOiBBc3RlcmlzayBVc2Vy cyBNYWlsaW5nIExpc3QgLSBOb24tQ29tbWVyY2lhbCBEaXNjdXNzaW9uIDxhc3Rlcmlzay11c2Vy c0BsaXN0cy5kaWdpdW0uY29tPg0KQmV0cmVmZjogUmU6IFthc3Rlcmlzay11c2Vyc10gQXN0ZXJp c2sgcmVhbHRpbWUgLSBFcnJvciB3aXRoIGluZGV4IGxlbmd0aCBpbiBhbGVtYmljIHNjcmlwdA0K
DQpZZWFoLCBJIHdpbGwgZG8gdGhhdC4NCg0KSSBoYXZlIHNvbWUgbW9yZSB0aGluZ3MgSSBuZWVk IHRvIGNsYXJpZnksIHNvIEkgd2lsbCBqdXN0IGdhdGhlciBhbGwgdGhlIGluZm9ybWF0aW9uIGFu ZCBzdW0gaXQgdXAgYmVmb3JlaGFuZC4NCg0KDQoNCldpdGggYmVzdCByZWdhcmRzDQoNCkZsb3Jp YW4gRmxvaW1haXINCg0KVm9uOiBhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5j b208aHR0cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwczovL2FzdGVyaXNr LXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbSZjPUUsMSwwWHFXbHJ4X2p6ZWpyR05VSHRU
eWFKSzRxVU1fNDJUMjk0Uk8wMkFlWngxeUM3UzRWQWhQZ2h4MFYzZUFCdGM2aUN5aTJIdzk0dFhm b2d4UWU3LV9kNG5IdGFWS3lEUmh1VjlFTm9UdkxkY3l0NU9qJnR5cG89MT4gW21haWx0bzphc3Rl cmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb208aHR0cHM6Ly9saW5rcHJvdGVjdC5j dWRhc3ZjLmNvbS91cmw/YT1odHRwczovLyU1Ym1haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2Vz QGxpc3RzLmRpZ2l1bS5jb20mYz1FLDEsYzE3OEZEMFZnbXJGZVBsblAyclZxQmJOYWpIRWZrX0tN
WnNCUDV5U1ZkVThyR2FzVGxGaEc4OXpvTTNXMWVnVlVDQnR1OFBjVWVCc2VrcVl6c1hIOXBEdVFC
Wm8xa2ZzNFplTWRiaDkmdHlwbz0xPl0gSW0gQXVmdHJhZyB2b24gTWFyY2VsbyBUZXJyZXMNCkdl c2VuZGV0OiBNaXR0d29jaCwgMTIuIEp1bGkgMjAxNyAyMjo1NQ0KQW46IEFzdGVyaXNrIFVzZXJz IE1haWxpbmcgTGlzdCAtIE5vbi1Db21tZXJjaWFsIERpc2N1c3Npb24gPGFzdGVyaXNrLXVzZXJz QGxpc3RzLmRpZ2l1bS5jb208aHR0cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1o dHRwczovLyUyNmx0O2FzdGVyaXNrLXVzZXJzQGxpc3RzLmRpZ2l1bS5jb20mYz1FLDEsRG03Sm5a bFM5U0IwZjFHcGpCSFdLd29XOGJiRU1DTmU5SWZ2SE5NanJtM21veXZRLWsxVDRTSFJjQWgzNUp4
QnlKYW5Yb01KVS15ZG9nT0pXZFdyOWxXelBWNlV6U1ZKcXlUYmdra2ZSa1FzMENaZHp5a3pZdyws JnR5cG89MT4+DQpCZXRyZWZmOiBSZTogW2FzdGVyaXNrLXVzZXJzXSBBc3RlcmlzayByZWFsdGlt ZSAtIEVycm9yIHdpdGggaW5kZXggbGVuZ3RoIGluIGFsZW1iaWMgc2NyaXB0DQoNClBsZWFzZSBv cGVuIGEgVGlja2V0IChodHRwczovL2lzc3Vlcy5hc3Rlcmlzay5vcmcpLCB0byBsZXQgdGhlbSBr bm93IHRoYXQgdGhleSBuZWVkIHRvIHVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiBXaWtpIGFu ZCBhbHNvIGhhbmRsZSB0aGlzIHNpdHVhdGlvbiB3aGVuIHVzaW5nIEFsZW1iaWMgaW4gRGViaWFu IDkgKGNvdWxkIGhhcHBlbnMgaW4gb3RoZXIgRGlzdHJvcyB0b28pLg0KDQpNYXJjZWxvIEguIFRl cnJlcyA8bWh0ZXJyZXNAZ21haWwuY29tPG1haWx0bzptaHRlcnJlc0BnbWFpbC5jb20+Pg0KSU06
IG1odGVycmVzQGphYmJlci5tdW5kb29wZW5zb3VyY2UuY29tLmJyPG1haWx0bzptaHRlcnJlc0Bq YWJiZXIubXVuZG9vcGVuc291cmNlLmNvbS5icj4NCmh0dHBzOi8vd3d3Lm11bmRvb3BlbnNvdXJj ZS5jb20uYnI8aHR0cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwczovL3d3
dy5tdW5kb29wZW5zb3VyY2UuY29tLmJyJmM9RSwxLGNDOThQLWFVbzBzR1cwbm00eDYxSUVKYTNK
MGFmQjF6YlBkcHMzSDZuM1BJZ0xUWDdBcUszVHUyM196Tng1MjBZeWM4WXpzNDdVVjlpMjVDMFhz V0NDMjRTOGZRQVhzdGFod3ZKSHBJeFJjbXJNdTBfRlUsJnR5cG89MT4NCmh0dHBzOi8vdHdpdHRl ci5jb20vbWh0ZXJyZXMNCmh0dHBzOi8vbGlua2VkaW4uY29tL2luL21hcmNlbG90ZXJyZXMNCg0K
T24gMTIgSnVseSAyMDE3IGF0IDEzOjExLCBGbG9pbWFpciBGbG9yaWFuIDxmLmZsb2ltYWlyQGNv bW1lbmQuY29tPG1haWx0bzpmLmZsb2ltYWlyQGNvbW1lbmQuY29tPj4gd3JvdGU6DQpOZXZlcm1p bmQgZ3V5cyENCg0KSSBqdXN0IGZvdW5kIG91dCB0aGUgc29sdXRpb24gbXlzZWxmOg0KDQpNYXJp YURCIGluIERlYmlhbiB1c2VzIHV0ZjhtYjQgYXMgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0IChzZWUg aGVyZTogaHR0cHM6Ly9tYXJpYWRiLmNvbS9rYi9lbi9tYXJpYWRiL2RpZmZlcmVuY2VzLWluLW1h cmlhZGItaW4tZGViaWFuLWFuZC11YnVudHUvPGh0dHBzOi8vbGlua3Byb3RlY3QuY3VkYXN2Yy5j b20vdXJsP2E9aHR0cHM6Ly9tYXJpYWRiLmNvbS9rYi9lbi9tYXJpYWRiL2RpZmZlcmVuY2VzLWlu LW1hcmlhZGItaW4tZGViaWFuLWFuZC11YnVudHUvJmM9RSwxLHZjc3REZGExRVhpTHVFZllIX2JX
U0VRaUtVTlNseHNKUkVaQmdZTXdwRlRsRmExUldJdUZlLWVveFZ2UUlHdXhXcTRMYUh5aHJJR2h1
bHFvbHoxNk5QV0lHdFBZTGJTVVJGeHE5YjBUbDVCNHIzdmQ1Nk5xQk5BekdBLCwmdHlwbz0xPiku DQoNCkkgbmVlZGVkIHRvIHVuY29tbWVudCB0aGUgbGluZXMgd2l0aCB1dGY4bWI0IGluIC9ldGMv bXlzcWwvbWFyaWEuZGIuY29uZiBpbiB0aGUgZm9sbG93aW5nIGZpbGVzOg0KDQo1MC1jbGllbnQu Y25mICgxIGxpbmUpDQo1MC1teXNxbC1jbGllbnRzLmNuZiAoMSBsaW5lKQ0KNTAtc2VydmVyLmNu ZiAoMiBsaW5lcykNCg0KDQoNCldpdGggYmVzdCByZWdhcmRzDQoNCkZsb3JpYW4gRmxvaW1haXIN
Cg0KDQotLS0tLVVyc3Byw7xuZ2xpY2hlIE5hY2hyaWNodC0tLS0tDQpWb246IGFzdGVyaXNrLXVz ZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91bmNl c0BsaXN0cy5kaWdpdW0uY29tPiBbbWFpbHRvOmFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMu ZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29t Pl0gSW0gQXVmdHJhZyB2b24gRmxvaW1haXIgRmxvcmlhbg0KR2VzZW5kZXQ6IE1pdHR3b2NoLCAx Mi4gSnVsaSAyMDE3IDEzOjUwDQpBbjogQXN0ZXJpc2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9u LUNvbW1lcmNpYWwgRGlzY3Vzc2lvbiA8YXN0ZXJpc2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbTxt YWlsdG86YXN0ZXJpc2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbT4+DQpCZXRyZWZmOiBbYXN0ZXJp c2stdXNlcnNdIEFzdGVyaXNrIHJlYWx0aW1lIC0gRXJyb3Igd2l0aCBpbmRleCBsZW5ndGggaW4g YWxlbWJpYyBzY3JpcHQNCg0KSGkhDQoNCkkganVzdCB0cmllZCBzZXR0aW5nIHVwIEFzdGVyaXNr IHJlYWx0aW1lIGRhdGFiYXNlIGZvbGxvd2luZyB0aGUgd2lraSBhcnRpY2xlIGh0dHBzOi8vd2lr aS5hc3Rlcmlzay5vcmcvd2lraS9kaXNwbGF5L0FTVC9TZXR0aW5nK3VwK1BKU0lQK1JlYWx0aW1l IG9uIGEgRGViaWFuIDkgbWFjaGluZSAod2hpY2ggc3dpdGNoZWQgZnJvbSBNeVFTTCB0byBNYXJp YURCKS4NCg0KT25lIGhhcyB0byBpbnN0YWxsIG1hcmlhZGItcGx1Z2luLWNvbm5lY3QsIHB5dGhv bi1teXNxbGRiIGFuZCBhbGVtYmljIHBhY2thZ2VzIChhbGVtYmljIGRvZXMgbm90IHdvcmsgd2hl biBpbnN0YWxsZWQgdmlhIHBpcCkuDQpBZGRpdGlvbmFsbHkgLSBzaW5jZSBNYXJpYURCIGJ5IGRl ZmF1bHQgZG9lcyBub3QgaGF2ZSBhIHJvb3QgdXNlciBwYXNzd29yZCBzZXQgYW5kIHJ1bm5pbmcg bXlzcWwgLXUgcm9vdCByZXF1aXJlcyBzdWRvIGFzIHdlbGwgLSB5b3UgbmVlZCB0byBleGVjdXRl IHRoZSBmb2xsb3dpbmc6DQpzdWRvIG15c3FsX3NlY3VyZV9pbnN0YWxsYXRpb24NCnN1ZG8gbXlz cWxfdXBncmFkZSAtcCAtLWZvcmNlDQoNClNvIGZhciBzbyBnb29kLiBJIHJ1biBpbnRvIHByb2Js ZW1zIHdoZW4gcnVubmluZyBhbGVtYmljIHdoZW4gSSBnZXQgdG8gdGhlIGZvbGxvd2luZyBjaGFu Z2U6DQpodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29tL3VybD9hPWh0dHBzOi8vZTk2YTBi ODA3MWNfaW5jcmVhc2VfcGpzaXBfY29sdW1uX3NpemUucHkmYz1FLDEsZEdKSHpKdHVYN2VZREVM
STM5dEVDNGVjWWFmWmpzQ1VqV0RMNXAwOURPV2UyOGNOQWJkX0dGbUpMRDJqQlpmZmZTLXZZUHZV
SDFDVVVqUjdnWDFydGR2bTVORkNUVl90RFZDdFFlckdnNlJaJnR5cG89MQ0KbWFyaWFkYiBmYWls cyB0aGlzIG9wZXJhdGlvbiB3aXRoIGVycm9yICJTcGVjaWZpZWQga2V5IHdhcyB0b28gbG9uZzsg bWF4IGtleSBsZW5ndGggaXMgNzY3IGJ5dGVzIiB3aGVuIGl0IHRyaWVzIHRvIGluY3JlYXNlIHNv bWUgZmllbGRzIHRvIHZhcmNoYXIoMjU1KS4NCg0KQW55IGlkZWEgaG93IHRvIHNvbHZlIHRoaXM/
IERvIEkgbWF5YmUgaGF2ZSB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgZW5jb2RpbmcgZm9yIHRo aXMgdG8gd29yaz8NCg0KVGhhbmtzIGluIGFkdmFuY2UNCg0KDQoNCldpdGggYmVzdCByZWdhcmRz DQoNCkZsb3JpYW4gRmxvaW1haXINCg0KQ09NTUVORCBJTlRFUk5BVElPTkFMIEdNQkgNCkEtNTAy MCBTYWx6YnVyZywgU2FhbGFjaHN0cmHDn2UgNTENCmh0dHBzOi8vbGlua3Byb3RlY3QuY3VkYXN2
Yy5jb20vdXJsP2E9aHR0cDovL3d3dy5jb21tZW5kLmNvbSZjPUUsMSxBTW1YdEpIc0k0aG1iQnd5
dU0zTTF4YlJvR3gtamlUYUNpUDdOeG9rVXVNbmFkQUlqYjh4a0k5UDFraV90Mnh6Tjc4S2FTTjA3
RElwQWFtSFQ1VlVURDVmYld1UnFCVk1rOFpBdkNYejR0OXdrODlSZ0dVMjhFWSwmdHlwbz0xDQoN
ClNlY3VyaXR5IGFuZCBDb21tdW5pY2F0aW9uIGJ5IENvbW1lbmQNCg0KRk4gMTc4NjE4eiB8IExH
IFNhbHpidXJnDQoNCi0tLS0tVXJzcHLDvG5nbGljaGUgTmFjaHJpY2h0LS0tLS0NClZvbjogaHR0
cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwczovL2FzdGVyaXNrLXVzZXJz LWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbSZjPUUsMSw3czdfRF9NeWM5QnJYc3FleGctYl9qZUdX
OTlJbG5xcmhaQ01oR0t6QkJFMG03LTRsemw0UHFmMEZCaFBEVTdZdnlzQmgzWHl1SzdqcW9sWVpy eWM1UHYyMTRPT3dpQWY3ckZWU2xSNlhaS3pUU18wb3lxUUxBLCwmdHlwbz0xIGh0dHBzOi8vbGlu a3Byb3RlY3QuY3VkYXN2Yy5jb20vdXJsP2E9aHR0cHM6Ly9bbWFpbHRvOmFzdGVyaXNrLXVzZXJz LWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbSZjPUUsMSxiMDJ0OVdNdU1zdHdpV0FIejBYcnJaakhU
VlNRd25FeTV5eFhKaTVwcU5FNmVxSl9aemlqUTRfUHNvTGEzdG5hY28zQllYUTVDazJPSGZta19E
bTRFSGJFNzd6MjIwbzJjLVZ6dXZCYkVjcTdQQ1ksJnR5cG89MV08aHR0cHM6Ly9saW5rcHJvdGVj dC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwczovLyU1Ym1haWx0bzphc3Rlcmlzay11c2Vycy1ib3Vu Y2VzQGxpc3RzLmRpZ2l1bS5jb20mYz1FLDEsYjAydDlXTXVNc3R3aVdBSHowWHJyWmpIVFZTUXdu RXk1eXhYSmk1cHFORTZlcUpfWnppalE0X1Bzb0xhM3RuYWNvM0JZWFE1Q2syT0hmbWtfRG00RUhi RTc3ejIyMG8yYy1WenV2QmJFY3E3UENZLCZ0eXBvPTElNWQ+IEltIEF1ZnRyYWcgdm9uIFRob21h cw0KR2VzZW5kZXQ6IE1vbnRhZywgMTAuIEp1bGkgMjAxNyAxNDowNw0KQW46IGh0dHBzOi8vbGlu a3Byb3RlY3QuY3VkYXN2Yy5jb20vdXJsP2E9aHR0cHM6Ly9hc3Rlcmlzay11c2Vyc0BsaXN0cy5k aWdpdW0uY29tJmM9RSwxLExJQ3FLVEdPdDFKSkNxZDdjTHREZUFZVFJsYWVXLTBJYUFqZW9maGNF
R2xxSGlVYTlGWDF2XzBaNjFmam42Q2dsYzFMd0pFU2RaNUNzbkIxWmVVTVBuN2dWMno1YWdrejNr aDhvbkhWME94bm1uOWM0RGpINkNCVSZ0eXBvPTENCkJldHJlZmY6IFthc3Rlcmlzay11c2Vyc10g Q29uZkJyaWRnZSBpbmNyZWFzZSB0YWxraW5nIHZvbHVtZSBhcyBzdGFuZGFyZA0KDQpIZWxsbywN
Cg0KaXMgaXQgcG9zc2libGUgdG8gaW5jcmVhc2UgdGFsa2luZyB2b2x1bWUgZm9yIGNhbGxlciBp biBDb25mQnJpZGdlIGFzIHN0YW5kYXJkIHdpdGhvdXQgbmVlZCB0byBwcmVzcyBidXR0b25zIGFm dGVyIGpvaW5pbmcgYW4gY29uZmVyZW5jZSByb29tLg0KDQpiZXN0IHJlZ2FyZHMNClRob21hcw0K
DQotLQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQotLSBCYW5kd2lkdGggYW5kIENvbG9jYXRpb24gUHJvdmlkZWQg YnkgaHR0cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwOi8vd3d3LmFwaS1k aWdpdGFsLmNvbSZjPUUsMSwzY3hnVnBZejZyajhISmg4N1RpR2c5dm1OT05WYjhSOWdqOENVdHNL
UW80SjdYWmQzQThQNVEybGdrdXFSYjdJMmgwSUxXVjlmYjJWVnRNX2ZMRDVXa2pjMWc2Mzdyc3py SUlGbFlWNWdFcS10MU9ZNXRkME1qSSwmdHlwbz0xIC0tDQoNCkNoZWNrIG91dCB0aGUgbmV3IEFz dGVyaXNrIGNvbW11bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3Jn Lw0KDQpOZXcgdG8gQXN0ZXJpc2s/IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dpa2kuYXN0
ZXJpc2sub3JnL3dpa2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVyaXNrLXVz ZXJzIG1haWxpbmcgbGlzdA0KVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6
DQogICBodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29tL3VybD9hPWh0dHA6Ly9saXN0cy5k aWdpdW0uY29tL21haWxtYW4vbGlzdGluZm8vYXN0ZXJpc2stdXNlcnMmYz1FLDEsOHdkRkVCUGF3
SmhlM1E3ejlDREpzcGt0Y1dabWFrNl9GN1F3eS1LbGdUOFkzUktmaThyejZHWmJvRUVZdDNDWm50
NC1Kakg3Z0tZVlk3OXg3Mk02ZFV2MHlYbVNuQ2R1WVZGY0JNSzRGSk5LQ19RT0hxSTlhU2p0JnR5
cG89MQ0KDQotLQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fDQotLSBCYW5kd2lkdGggYW5kIENvbG9jYXRpb24gUHJv dmlkZWQgYnkgaHR0cHM6Ly9saW5rcHJvdGVjdC5jdWRhc3ZjLmNvbS91cmw/YT1odHRwOi8vd3d3
LmFwaS1kaWdpdGFsLmNvbSZjPUUsMSxWVkZSMXZ0LVZUdFk4VGttSFpVV2Z2al9xV3l2S3VWajNq M2tFV1dSa0RUcUlvSzU3OTNma216ejlBblQzT2NQc05lNUs1QjNmNGRYc1huUDRHYVQxckNKM2Vq cTlJRzY5Q1FUd1pyRHFzaTEzT2VnQzVSUThoZHgmdHlwbz0xIC0tDQoNCkNoZWNrIG91dCB0aGUg bmV3IEFzdGVyaXNrIGNvbW11bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJp c2sub3JnLw0KDQpOZXcgdG8gQXN0ZXJpc2s/IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dp a2kuYXN0ZXJpc2sub3JnL3dpa2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVy aXNrLXVzZXJzIG1haWxpbmcgbGlzdA0KVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMg dmlzaXQ6DQogICBodHRwczovL2xpbmtwcm90ZWN0LmN1ZGFzdmMuY29tL3VybD9hPWh0dHA6Ly9s aXN0cy5kaWdpdW0uY29tL21haWxtYW4vbGlzdGluZm8vYXN0ZXJpc2stdXNlcnMmYz1FLDEsOFhP
RFpwM1ZwUGM2cWIwdGNpaGZJWmRHcmRJcmtkLVZDcmUwY1NXMEJlZ1RXRV9GUXd2a3dEVEhHbThV
M3pvaDdTZW91ak5YbFF1NTBqclBSZkQtZVdoLWltUVR1M28zd0ZBNmFnLXJVY3VuZjFUWlJZMTEm dHlwbz0xDQoNCi0tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCi0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQ
cm92aWRlZCBieSBodHRwOi8vd3d3LmFwaS1kaWdpdGFsLmNvbTxodHRwczovL2xpbmtwcm90ZWN0
LmN1ZGFzdmMuY29tL3VybD9hPWh0dHA6Ly93d3cuYXBpLWRpZ2l0YWwuY29tJmM9RSwxLFEzelRH
NGVYS2xjRFBLbk5VMVg2NDhwblpHTGtrOFpZXzJoNUxTd055WnBMc0hEcXZVeVdnNkJGQVo0NUNs aW5oQzdQOWllWXpnNzNJbmdwMWFLakw4LWZSNzladWNSMXZmdFduVkstdWotNEwtSXVVX0tmeGEz aCZ0eXBvPTE+IC0tDQoNCkNoZWNrIG91dCB0aGUgbmV3IEFzdGVyaXNrIGNvbW11bml0eSBmb3J1
bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3JnLw0KDQpOZXcgdG8gQXN0ZXJpc2s/
IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dpa2kuYXN0ZXJpc2sub3JnL3dpa2kvZGlzcGxh eS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVyaXNrLXVzZXJzIG1haWxpbmcgbGlzdA0KVG8g VU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6DQogICBodHRwOi8vbGlzdHMuZGln aXVtLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2FzdGVyaXNrLXVzZXJzPGh0dHBzOi8vbGlua3Byb3Rl Y3QuY3VkYXN2Yy5jb20vdXJsP2E9aHR0cDovL2xpc3RzLmRpZ2l1bS5jb20vbWFpbG1hbi9saXN0
aW5mby9hc3Rlcmlzay11c2VycyZjPUUsMSxrTUdCZUpDQm9Nbnota1gtSmVjRlF0NzktTWhKNmFV
RzNjMV8xS0c2dlY5UnlLWjUyeFdfMnFzMWVpRlkwQU1QSHg4RXBpRE8zaGVqN1dMaDJ3Rm45TlBD
cEt4OEdSWXJVbGt1eHhKTWZxVzgmdHlwbz0xPg0KDQo