# rvm_inherit v0.4 # Template inheritance # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/txp/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InJ2bV9pbmhlcml0IjtzOjc6InZlcnNpb24iO3M6Mzoi MC40IjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2YW4gTWVsaWNrIjtzOjEwOiJhdXRob3Jf dXJpIjtzOjI1OiJodHRwOi8vdmFubWVsaWNrLmNvbS90eHAvIjtzOjExOiJkZXNjcmlwdGlv biI7czoyMDoiVGVtcGxhdGUgaW5oZXJpdGFuY2UiO3M6NDoidHlwZSI7aTowO3M6NDoiaGVs cCI7czoxNTE1MToiPHN0eWxlPgogICBsaSBjb2RlIHtmb250LXdlaWdodDogYm9sZDt9CiAg IHByZSB7cGFkZGluZzogMC41ZW0gMWVtOyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFw eCBkYXNoZWQgI2NjYzt9CiAgIGgxLCBoMiwgaDMsIGgzIGNvZGUge2ZvbnQtZmFtaWx5OiBz YW5zLXNlcmlmOyBmb250LXdlaWdodDogYm9sZDt9CiAgIGgxLCBoMiwgaDMge21hcmdpbi1s ZWZ0OiAtMWVtO30KICAgaDIsIGgzIHttYXJnaW4tdG9wOiAyZW07fQogICBsaSBhIGNvZGUg e2ZvbnQtd2VpZ2h0OiBub3JtYWw7fQogICBjb2RlIHtib3JkZXI6IDBweDsgYmFja2dyb3Vu ZDogbm9uZTt9Cjwvc3R5bGU+CgoKPGgxIGlkPSJ0b3AiPnJ2bV9pbmhlcml0PC9oMT4KCjxw PlRoaXMgcGx1Z2luIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0ZW1wbGF0ZSBpbmhlcml0 YW5jZS48L3A+Cgo8cD5QbGVhc2UgcmVwb3J0cyBidWdzIGFuZCBwcm9ibGVtcyB3aXRoIHRo aXMgcGx1Z2luIGluIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD00NTU1MiI+dGhpcyBmb3J1bSB0aHJlYWQ8L2E+PC9wPgoKCjxoMiBp ZD0iY29udGVudHMiPkNvbnRlbnRzPC9oMj4KCjx1bD4KCTxsaT48YSBocmVmPSIjdGFncyI+ VGFnczwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3J2bV9pbmhlcml0Ij48Y29kZT4mbHQ7 dHhwOnJ2bV9pbmhlcml0Jmd0OzwvY29kZT48L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3J2 bV9ibG9jayI+PGNvZGU+Jmx0O3R4cDpydm1fYmxvY2smZ3Q7PC9jb2RlPjwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjcnZtX2NoaWxkIj48Y29kZT4mbHQ7dHhwOnJ2bV9jaGlsZCZndDs8 L2NvZGU+PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNydm1fcGFyZW50Ij48Y29kZT4mbHQ7 dHhwOnJ2bV9wYXJlbnQmZ3Q7PC9jb2RlPjwvYT48L2xpPgoJPC91bD48L2xpPgoJPGxpPjxh IGhyZWY9IiNzdGFydCI+R2V0dGluZyBzdGFydGVkPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0i I25lc3RpbmciPk5lc3RpbmcgYmxvY2tzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI211bHRp cGxlIj5SZW5kZXJpbmcgYSBibG9jayBtdWx0aXBsZSB0aW1lczwvYT48L2xpPgoJPGxpPjxh IGhyZWY9IiNjaGlsZCI+Q2hpbGRyZW48L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcGFyZW50 Ij5QYXJlbnRzPC9hPjwvbGk+CjwvdWw+CgoKPGgzIGlkPSJydm1faW5oZXJpdCI+PGNvZGU+ Jmx0O3R4cDpydm1faW5oZXJpdCAvJmd0OzwvY29kZT48L2gzPgoKPHA+TXVzdCBiZSB1c2Vk IGFzIGEgY29udGFpbmVyIHRhZy4gU2hvdWxkIGNvbnRhaW4gb25seSA8Y29kZT4mbHQ7dHhw OnJ2bV9ibG9jayZndDs8L2NvZGU+LCA8Y29kZT4mbHQ7dHhwOnJ2bV9jaGlsZCZndDs8L2Nv ZGU+IGFuZC9vciA8Y29kZT4mbHQ7dHhwOnJ2bV9wYXJlbnQmZ3Q7PC9jb2RlPiB0YWdzLCBh bHRob3VnaCB0aG9zZSB0YWdzIGNhbiBvZiBjb3Vyc2UgY29udGFpbiBvdGhlciA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzLjwvcD4KCjxoND5BdHRyaWJ1dGVzOjwvaDQ+ Cgo8dWw+Cgk8bGk+PGNvZGU+Zm9ybT0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpO YW1lIG9mIGFuIGV4aXN0aW5nIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0g eW91IHdpc2ggdG8gaW5oZXJpdC48L2xpPgoJPGxpPjxjb2RlPnBhZ2U9JnF1b3Q7dGV4dCZx dW90OzwvY29kZT48YnIgLz4KTmFtZSBvZiBhbiBleGlzdGluZyA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBwYWdlIHlvdSB3aXNoIHRvIGluaGVyaXQuPC9saT4KPC91bD4KCjxw PlRoZSA8Y29kZT5wYWdlPC9jb2RlPiBhbmQgPGNvZGU+Zm9ybTwvY29kZT4gYXR0cmlidXRl cyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBJZiBuZWl0aGVyIGlzIHNldCBpdCwgPGNvZGU+ cGFnZTwvY29kZT4gaXMgc2V0IHRvICYjODIxNjtkZWZhdWx0JiM4MjE3Ozs8L3A+Cgo8cD48 YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+Cgo8aDMgaWQ9InJ2bV9ibG9jayI+ PGNvZGU+Jmx0O3R4cDpydm1fYmxvY2sgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkNhbiBiZSB1 c2VkIGFzIGEgc2VsZi1jbG9zaW5nIHRhZyBhbmQgYXMgYSBjb250YWluZXIgdGFnLjwvcD4K CjxoND5BdHRyaWJ1dGVzOjwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt0ZXh0 JnF1b3Q7PC9jb2RlPjxiciAvPgpJZGVudGlmaWVyIG9mIGEgYmxvY2sgaW4gdGhlIGluaGVy aXRhbmNlIGNoYWluLiBJZiBuZWl0aGVyIDxjb2RlPmNoaWxkPC9jb2RlPiBub3IgPGNvZGU+ cGFyZW50PC9jb2RlPiBpcyBzZXQsIDxjb2RlPm5hbWU8L2NvZGU+IGRlZmF1bHRzIHRvIGFu IGVtcHR5IHN0cmluZy4gSW4gb3RoZXIgY2FzZXMsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBn dWVzcyB0aGUgY29ycmVjdCBuYW1lIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCB3aGVyZSB0 aGlzIHRhZyBpcyB1c2VkLjwvbGk+Cgk8bGk+PGNvZGU+Y2hpbGQ9JnF1b3Q7aW50ZWdlciZx dW90OzwvY29kZT48YnIgLz4KSWYgc2V0IHRvIDxjb2RlPjE8L2NvZGU+IGl0IHJlZmVyZW5j ZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGlsZCBibG9jayBpbiB0aGUgaW5oZXJpdGFuY2Ug Y2hhaW4uIElmIHNldCB0byA8Y29kZT4yPC9jb2RlPiBpdCByZWZlcmVuY2VzIHRoZSBjb250 ZW50cyBvZiB0aGUgZ3JhbmRjaGlsZCYjODIzMDsgZXRjLjwvbGk+Cgk8bGk+PGNvZGU+cGFy ZW50PSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+CklmIHNldCB0byA8Y29kZT4x PC9jb2RlPiBpdCByZWZlcmVuY2VzIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2Nr IGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi4gSWYgc2V0IHRvIDxjb2RlPjI8L2NvZGU+IGl0 IHJlZmVyZW5jZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBncmFuZHBhcmVudCYjODIzMDsgZXRj LjwvbGk+CjwvdWw+Cgo8cD5UaGUgPGNvZGU+Y2hpbGQ8L2NvZGU+IGFuZCA8Y29kZT5wYXJl bnQ8L2NvZGU+IGF0dHJpYnV0ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTsgYXQgbW9zdCBv bmx5IG9uZSBvZiB0aGVtIG1heSBiZSBzZXQuPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFj ayB0byB0b3A8L2E+PC9wPgoKPGgzIGlkPSJydm1fY2hpbGQiPjxjb2RlPiZsdDt0eHA6cnZt X2NoaWxkIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5TaG91bGQgb25seSBiZSB1c2VkIGFzIGEg c2VsZi1jbG9zaW5nIHRhZyBhbmQgaXMgbWVyZWx5IHNob3J0ZXIgd2F5IHRvIHdyaXRlIDxj b2RlPiZsdDt0eHA6cnZtX2Jsb2NrIGNoaWxkPSZxdW90OzEmcXVvdDsvJmd0OzwvY29kZT48 L3A+Cgo8aDQ+QXR0cmlidXRlczo8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7 dGV4dCZxdW90OzwvY29kZT48YnIgLz4KSWRlbnRpZmllciBvZiBhIGJsb2NrIGluIHRoZSBp bmhlcml0YW5jZSBjaGFpbi4gSWYgbm90IHNldCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGd1 ZXNzIHRoZSBjb3JyZWN0IG5hbWUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IHdoZXJlIHRo aXMgdGFnIGlzIHVzZWQgKG9yIGl0IGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZykuPC9s aT4KPC91bD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCjxoMyBp ZD0icnZtX2NoaWxkIj48Y29kZT4mbHQ7dHhwOnJ2bV9wYXJlbnQgLyZndDs8L2NvZGU+PC9o Mz4KCjxwPlNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBzZWxmLWNsb3NpbmcgdGFnIGFuZCBp cyBtZXJlbHkgc2hvcnRlciB3YXkgdG8gd3JpdGUgPGNvZGU+Jmx0O3R4cDpydm1fYmxvY2sg cGFyZW50PSZxdW90OzEmcXVvdDsvJmd0OzwvY29kZT48L3A+Cgo8aDQ+QXR0cmlidXRlczo8 L2g0PgoKPHVsPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KSWRlbnRpZmllciBvZiBhIGJsb2NrIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi4gSWYg bm90IHNldCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IG5hbWUg ZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IHdoZXJlIHRoaXMgdGFnIGlzIHVzZWQgKG9yIGl0 IGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZykuPC9saT4KPC91bD4KCjxwPjxhIGhyZWY9 IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9InN0YXJ0Ij5HZXR0aW5nIHN0 YXJ0ZWQ8L2gyPgoKPHA+VXNpbmcgdGVtcGxhdGUgaW5oZXJpdGFuY2UsIHR3byBvciBtb3Jl IHRlbXBsYXRlcyBjYW4gb3JnYW5pemUgdGhlbXNlbHZlcyBpbnRvIGFuIGluaGVyaXRhbmNl IGNoYWluLiBUaGVzZSB0ZW1wbGF0ZXMgY2FuIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IHBhZ2VzIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1zLiBZ b3UgY2FuIG1peCBmb3JtcyBhbmQgcGFnZXMgaW4gYW4gaW5oZXJpdGFuY2UgY2hhaW4uIFRo aXMgcGx1Z2luIHRyZWF0cyB0aGVtIGFzIGlmIHRoZXkgd2VyZSB0aGUgc2FtZS48L3A+Cgo8 cD5JbiB0aGUgZXhhbXBsZXMgZ2l2ZW4gaGVyZSBJJiM4MjE3O2xsIG9ubHkgdXNlIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHBhZ2VzLiBUaGVzZSBleGFtcGxlcyB3ZXJlIGJv cnJvd2VkIGZyb20gPGEgaHJlZj0iaHR0cDovL2RvY3MubWFrb3RlbXBsYXRlcy5vcmcvZW4v bGF0ZXN0L2luaGVyaXRhbmNlLmh0bWwiPk1ha288L2E+LCB3aGljaCBpbnNwaXJlZCBtZSB0 byB3cml0ZSB0aGlzIHBsdWdpbi48L3A+Cgo8cD5TdXBwb3NlIHlvdSBoYXZlIGEgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcGFnZSAmIzgyMTY7ZGVmYXVsdCYjODIxNzsgdGhh dCBjb250YWluczo8L3A+Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0OwogICAgJmx0O2JvZHkm Z3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXImcXVvdDsmZ3Q7CiAgICAg ICAgICAgICZsdDtydm1fYmxvY2sgbmFtZT0mcXVvdDtoZWFkZXImcXVvdDsgLyZndDsKICAg ICAgICAmbHQ7L2RpdiZndDsKCiAgICAgICAgJmx0O3R4cDpydm1fYmxvY2smZ3Q7CgogICAg ICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Zm9vdGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAm bHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O2Zvb3RlciZxdW90OyZndDsKICAgICAgICAg ICAgICAgIHRoaXMgaXMgdGhlIGZvb3RlcgogICAgICAgICAgICAmbHQ7L3R4cDpydm1fYmxv Y2smZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2JvZHkmZ3Q7CiZsdDsvaHRt bCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5BbmQgeW91IGhhdmUgYW4gaW5oZXJpdGluZyA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwYWdlICYjODIxNjtkYXVnaHRlciYjODIxNzsg d2hpY2ggY29udGFpbnM6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9pbmhlcml0IHBh Z2U9JnF1b3Q7ZGVmYXVsdCZxdW90OyZndDsKICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9 JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgIHRoaXMgaXMgc29tZSBoZWFkZXIgY29u dGVudAogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwoKICAgICZsdDt0eHA6cnZtX2Jsb2Nr Jmd0OwogICAgICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KICAgICZsdDsvdHhwOnJ2 bV9ibG9jayZndDsKJmx0Oy90eHA6cnZtX2luaGVyaXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+ VGhlIHJlc3VsdCwgd2hlbiB1c2luZyB0aGF0ICYjODIxNjtkYXVnaHRlciYjODIxNzsgdGVt cGxhdGUsIGlzOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7Ym9keSZn dDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAg ICAgICAgdGhpcyBpcyBzb21lIGhlYWRlciBjb250ZW50CiAgICAgICAgJmx0Oy9kaXYmZ3Q7 CgogICAgICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KCiAgICAgICAgJmx0O2RpdiBj bGFzcz0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZv b3RlcgogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwm Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+SW4gdGhpcyBleGFtcGxlIHRoZSBib2R5IGFuZCBoZWFk ZXIgY29udGVudCBvZiB0aGUgJiM4MjE2O2RhdWdodGVyJiM4MjE3OyBwYWdlIG92ZXJyaWRl IHRoZSBjb3JyZXNwb25kaW5nIHBhcnRzIGluIHRoZSAmIzgyMTY7ZGVmYXVsdCYjODIxNzsg cGFnZS4gTm90aGluZyB3YXMgc3BlY2lmaWVkIGZvciB0aGUgJiM4MjE2O2Zvb3RlciYjODIx NzsgYmxvY2sgaW4gdGhlICYjODIxNjtkYXVnaHRlciYjODIxNzsgdGVtcGxhdGUsIHNvIHRo YXQgcmVtYWlucyBhcyBpdCB3YXMgaW4gdGhlICYjODIxNjtkZWZhdWx0JiM4MjE3OyB0ZW1w bGF0ZS48L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgy IGlkPSJuZXN0aW5nIj5OZXN0aW5nIGJsb2NrczwvaDI+Cgo8cD5UaGUgbmFtZWQgYmxvY2tz IGRlZmluZWQgaW4gYW4gaW5oZXJpdGVkIHRlbXBsYXRlIGNhbiBhbHNvIGJlIG5lc3RlZCB3 aXRoaW4gb3RoZXIgYmxvY2tzLiBUaGUgbmFtZSBnaXZlbiB0byBlYWNoIGJsb2NrIGlzIGds b2JhbGx5IGFjY2Vzc2libGUgdmlhIGFueSBpbmhlcml0aW5nIHRlbXBsYXRlLiBXZSBjYW4g YWRkIGEgbmV3IGJsb2NrIHRpdGxlIHRvIG91ciBoZWFkZXIgYmxvY2sgaW4gdGhlICYjODIx NjtkZWZhdWx0JiM4MjE3OyB0ZW1wbGF0ZTo8L3A+Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0 OwogICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXIm cXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVh ZGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2gyJmd0OwogICAgICAgICAgICAg ICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7dGl0bGUmcXVvdDsgLyZndDsK ICAgICAgICAgICAgICAgICZsdDsvaDImZ3Q7CiAgICAgICAgICAgICZsdDsvdHhwOnJ2bV9i bG9jayZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKCiAgICAgICAgJmx0O3R4cDpydm1fYmxv Y2sgLyZndDsKCiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7 CiAgICAgICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7Zm9vdGVyJnF1b3Q7 Jmd0OwogICAgICAgICAgICAgICAgdGhpcyBpcyB0aGUgZm9vdGVyCiAgICAgICAgICAgICZs dDsvdHhwOnJ2bV9ibG9jayZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvYm9k eSZndDsKJmx0Oy9odG1sJmd0OzwvY29kZT48L3ByZT4KCjxwPlRoZSBpbmhlcml0aW5nIHRl bXBsYXRlICYjODIxNjtkYXVnaHRlciYjODIxNzsgY2FuIG5hbWUgZWl0aGVyIG9yIGJvdGgg b2YgaGVhZGVyIGFuZCB0aXRsZSwgc2VwYXJhdGVseSBvciBuZXN0ZWQgdGhlbXNlbHZlczo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2luaGVyaXQgcGFnZT0mcXVvdDtkZWZhdWx0 JnF1b3Q7Jmd0OwogICAgJmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDtoZWFkZXImcXVv dDsmZ3Q7CiAgICAgICAgdGhpcyBpcyBzb21lIGhlYWRlciBjb250ZW50CiAgICAgICAgJmx0 O3R4cDpydm1fcGFyZW50IC8mZ3Q7CiAgICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CgogICAg Jmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDt0aXRsZSZxdW90OyZndDsKICAgICAgICB0 aGlzIGlzIHRoZSB0aXRsZQogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwoKICAgICZsdDt0 eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KICAg ICZsdDt0eHA6cnZtX2Jsb2NrJmd0OwombHQ7L3R4cDpydm1faW5oZXJpdCZndDs8L2NvZGU+ PC9wcmU+Cgo8cD5UaGUgcmVzdWx0IHdvdWxkIGJlOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2h0 bWwmZ3Q7CiAgICAmbHQ7Ym9keSZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2hl YWRlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyBjb21lIGhlYWRlciBjb250ZW50 CiAgICAgICAgICAgICZsdDtoMiZndDsKICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIHRp dGxlCiAgICAgICAgICAgICZsdDsvaDImZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAg ICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KCiAgICAgICAgJmx0O2RpdiBjbGFzcz0m cXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZvb3Rlcgog ICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7PC9j b2RlPjwvcHJlPgoKPHA+Tm90ZSB3aGVuIHdlIG92ZXJyb2RlIGhlYWRlciwgd2UgYWRkZWQg YW4gZXh0cmEgPGNvZGU+Jmx0O3R4cDpydm1fcGFyZW50IC8mZ3Q7PC9jb2RlPiBpbiBvcmRl ciB0byBpbnZva2UgdGhlIHBhcmVudOKAmXMgaGVhZGVyIGJsb2NrIGluIGFkZGl0aW9uIHRv IG91ciBvd24uIFRoYXTigJlzIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCA8YSBocmVmPSIj cGFyZW50Ij5iZWxvdzwvYT4uPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8 L2E+PC9wPgoKCjxoMiBpZD0ibXVsdGlwbGUiPlJlbmRlcmluZyBhIG5hbWVkIGJsb2NrIG11 bHRpcGxlIHRpbWVzPC9oMj4KCjxwPllvdSBjYW4gdXNlIG11bHRpcGxlIGJsb2NrcyB3aXRo IHRoZSBzYW1lIG5hbWUgd2l0aGluIG9uZSB0ZW1wbGF0ZTo8L3A+Cgo8cHJlPjxjb2RlPiZs dDtodG1sJmd0OwogICAgJmx0O2hlYWQmZ3Q7CiAgICAgICAgJmx0O3RpdGxlJmd0OyZsdDt0 eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7dGl0bGUmcXVvdDsgLyZndDsmbHQ7L3RpdGxlJmd0 OwogICAgJmx0Oy9oZWFkJmd0OwogICAgJmx0O2JvZHkmZ3Q7CiAgICAmbHQ7dHhwOnJ2bV9i bG9jayBuYW1lPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICAmbHQ7aDImZ3Q7Jmx0 O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDt0aXRsZSZxdW90OyAvJmd0OyZsdDsvaDImZ3Q7 CiAgICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CiAgICAmbHQ7L2JvZHkmZ3Q7CiZsdDsvaHRt bCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5XaGVyZSBhYm92ZSBhbiBpbmhlcml0aW5nIHRlbXBs YXRlIGNhbiBkZWZpbmUgPGNvZGU+Jmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDt0aXRs ZSZxdW90OyZndDs8L2NvZGU+IGp1c3Qgb25jZSwgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbiB0 aGUgYmFzZSB0ZW1wbGF0ZSBib3RoIGluIHRoZSA8Y29kZT4mbHQ7dGl0bGUmZ3Q7PC9jb2Rl PiBzZWN0aW9uIGFzIHdlbGwgYXMgdGhlIDxjb2RlPiZsdDtoMiZndDs8L2NvZGU+PGJyIC8+ CnRoaXMgaXMgdGhlIGJvZHkgY29udGVudC48L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNr IHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJjaGlsZCI+Q2hpbGRyZW48L2gyPgoKPHA+U29t ZXRpbWVzIHlvdSBoYXZlIGFuIGluaGVyaXRhbmNlIGNoYWluIHRoYXQgc3BhbnMgbW9yZSB0 aGFuIHR3byB0ZW1wbGF0ZXMuIE9yIG1heWJlIHlvdSBkb27igJl0LCBidXQgeW914oCZZCBs aWtlIHRvIGJ1aWxkIHlvdXIgc3lzdGVtIHN1Y2ggdGhhdCBleHRyYSBpbmhlcml0ZWQgdGVt cGxhdGVzIGNhbiBiZSBpbnNlcnRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgY2hhaW4gd2hlcmUg dGhleSB3b3VsZCBiZSBzbW9vdGhseSBpbnRlZ3JhdGVkLiBJZiBlYWNoIHRlbXBsYXRlIHdh bnRzIHRvIGRlZmluZSBpdHMgbGF5b3V0IGp1c3Qgd2l0aGluIGl0cyBtYWluIGJvZHksIHlv dSBjYW7igJl0IGp1c3QgY2FsbCA8Y29kZT4mbHQ7dHhwOmJsb2NrIC8mZ3Q7PC9jb2RlPiB0 byBnZXQgYXQgdGhlIGluaGVyaXRpbmcgdGVtcGxhdGXigJlzIGJvZHksIHNpbmNlIHRoYXQg aXMgb25seSB0aGUgdG9wbW9zdCBib2R5LiBUbyBnZXQgYXQgdGhlIGJvZHkgb2YgdGhlIGlu aGVyaXRpbmcgdGVtcGxhdGUsIHlvdSB1c2UgPGNvZGU+Jmx0O3R4cDpydm1fY2hpbGQgLyZn dDs8L2NvZGU+LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7Ym9keSZn dDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAg ICAgICAgJmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDtoZWFkZXImcXVvdDsgLyZndDsK ICAgICAgICAmbHQ7L2RpdiZndDsKCiAgICAgICAgJmx0O3R4cDpydm1fY2hpbGQgLyZndDsK CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAg ICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7Zm9vdGVyJnF1b3Q7Jmd0OwogICAg ICAgICAgICAgICAgdGhpcyBpcyB0aGUgZm9vdGVyCiAgICAgICAgICAgICZsdDsvdHhwOnJ2 bV9ibG9jayZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvYm9keSZndDsKJmx0 Oy9odG1sJmd0OzwvY29kZT48L3ByZT4KCjxwPkxldHMgYWxzbyBhZGQgYW4gaW50ZXJtZWRp YXRlIHRlbXBsYXRlIGNhbGxlZCAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IHdoaWNoIGluaGVy aXRzIGZyb20gdGhlICYjODIxNjtkZWZhdWx0JiM4MjE3OyBwYWdlOjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDpydm1faW5oZXJpdCBwYWdlPSZxdW90O2RlZmF1bHQmcXVvdDsvJmd0Owog ICAgJmx0O3VsJmd0OwogICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7dG9v bGJhciZxdW90OyZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAxJmx0Oy9s aSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAyJmx0Oy9saSZndDsKICAg ICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAzJmx0Oy9saSZndDsKICAgICAgICAmbHQ7 L3R4cDpydm1fYmxvY2smZ3Q7CiAgICAmbHQ7L3VsJmd0OwogICAgJmx0O2RpdiBjbGFzcz0m cXVvdDttYWlubGF5b3V0JnF1b3Q7Jmd0OwogICAgICAgICZsdDt0eHA6cnZtX2NoaWxkIC8m Z3Q7CiAgICAmbHQ7L2RpdiZndDsKJmx0Oy90eHA6cnZtX2luaGVyaXQmZ3Q7PC9jb2RlPjwv cHJlPgoKPHA+QW5kIGZpbmFsbHkgY3JlYXRlIGEgJiM4MjE2O2dyYW5kZGF1Z2h0ZXImIzgy MTc7IHRlbXBsYXRlIHRvIGluaGVyaXQgZnJvbSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7Ojwv cD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1faW5oZXJpdCBwYWdlPSZxdW90O2RhdWdodGVy JnF1b3Q7LyZndDsKICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1 b3Q7Jmd0OwogICAgICAgIHRoaXMgaXMgc29tZSBoZWFkZXIgY29udGVudAogICAgJmx0Oy90 eHA6cnZtX2Jsb2NrJmd0OwoKICAgICZsdDt0eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgIHRo aXMgaXMgdGhlIGJvZHkgY29udGVudC4KICAgICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKJmx0 Oy90eHA6cnZtX2luaGVyaXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+SW4gdGhpcyBzZXR1cCwg ZWFjaCBjYWxsIHRvIDxjb2RlPiZsdDt0eHA6cnZtX2NoaWxkIC8mZ3Q7PC9jb2RlPiB3aWxs IHJlbmRlciB0aGUgYm9keSBvZiB0aGUgbmV4dCB0ZW1wbGF0ZSBpbiB0aGUgaW5oZXJpdGFu Y2UgY2hhaW4gKHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzICYjODIxNjtncmFuZGRhdWdodGVy JiM4MjE3OyAtJmd0OyAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IC0mZ3Q7ICYjODIxNjtkZWZh dWx0JiM4MjE3OykuIFRoZSBvdXRwdXQgd2UgZ2V0IHdvdWxkIGJlOjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7Ym9keSZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNz PSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyBzb21lIGhlYWRl ciBjb250ZW50CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZsdDt1bCZndDsKICAg ICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAxJmx0Oy9saSZndDsKICAgICAgICAgICAg Jmx0O2xpJmd0O3NlbGVjdGlvbiAyJmx0Oy9saSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0 O3NlbGVjdGlvbiAzJmx0Oy9saSZndDsKICAgICAgICAmbHQ7L3VsJmd0OwoKICAgICAgICAm bHQ7ZGl2IGNsYXNzPSZxdW90O21haW5sYXlvdXQmcXVvdDsmZ3Q7CiAgICAgICAgdGhpcyBp cyB0aGUgYm9keSBjb250ZW50LgogICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAmbHQ7 ZGl2IGNsYXNzPSZxdW90O2Zvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyB0 aGUgZm9vdGVyCiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2JvZHkmZ3Q7CiZsdDsv aHRtbCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5TbyBhYm92ZSwgd2UgaGF2ZSB0aGUgPGNvZGU+ Jmx0O2h0bWwmZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O2JvZHkmZ3Q7PC9jb2RlPiBhbmQgaGVh ZGVyL2Zvb3RlciBsYXlvdXQgb2YgdGhlICYjODIxNjtkZWZhdWx0JiM4MjE3OyBwYWdlLCB3 ZSBoYXZlIHRoZSA8Y29kZT4mbHQ7dWwmZ3Q7PC9jb2RlPiBhbmQgbWFpbmxheW91dCBzZWN0 aW9uIG9mIHRoZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IHBhZ2UsIGFuZCB0aGUgbWFpbiBi b2R5IG9mIHRoZSAmIzgyMTY7Z3JhbmRkYXVnaHRlciYjODIxNzsgcGFnZSBhcyB3ZWxsIGFz IGl0cyBvdmVycmlkZGVuICYjODIxNjtoZWFkZXImIzgyMTc7IGJsb2NrLiBUaGUgJiM4MjE2 O2RhdWdodGVyJiM4MjE3OyB0ZW1wbGF0ZSBpcyBpbnNlcnRlZCBpbnRvIHRoZSBtaWRkbGUg b2YgdGhlIGNoYWluIHdpdGhvdXQgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IHRlbXBsYXRlIGhh dmluZyB0byBjaGFuZ2UgYW55dGhpbmcuIFdpdGhvdXQgPGNvZGU+Jmx0O3R4cDpydm1fY2hp bGQmZ3Q7PC9jb2RlPiwgb25seSB0aGUgbWFpbiBib2R5IG9mIHRoZSAmIzgyMTY7Z3JhbmRk YXVnaHRlciYjODIxNzsgdGVtcGxhdGUgY291bGQgYmUgdXNlZDsgdGhlcmUgd291bGQgYmUg bm8gd2F5IHRvIGNhbGwgdGhlICYjODIxNjtkYXVnaHRlciYjODIxNzsgYm9keSBjb250ZW50 LjwvcD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9 InBhcmVudCI+UGFyZW50czwvaDI+Cgo8cD5MZXRzIG5vdyBsb29rIGF0IHBhcmVudHM7IHRo ZSBvcHBvc2l0ZSBvZiBjaGlsZHJlbi4gVGhlIHBhcmVudCB0ZW1wbGF0ZSBpcyB0aGUgb25l IGltbWVkaWF0ZWx5IHByZWNlZGluZyB0aGUgY3VycmVudCB0ZW1wbGF0ZS4gQmxvY2tzIGNh biBjYWxsIHVwb24gdGhlaXIgb3ZlcnJpZGRlbiB2ZXJzaW9ucy4gVGhpcyBpcyBub3QgYXMg aGFyZCBhcyBpdCBzb3VuZHMuIExldHMgbW9kaWZ5IHRoZSAmIzgyMTY7Z3JhbmRkYXVnaHRl ciYjODIxNzsgdGVtcGxhdGUgdG8gYXVnbWVudCB0aGUgbGlzdCBvZiBzZWxlY3Rpb25zIHBy b3ZpZGVkIGJ5IHRoZSAmIzgyMTY7dG9vbGJhciYjODIxNzsgYmxvY2sgaW4gdGhlICYjODIx NjtkYXVnaHRlciYjODIxNzsgdGVtcGxhdGU6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2 bV9pbmhlcml0IHBhZ2U9JnF1b3Q7ZGF1Z2h0ZXImcXVvdDsgLyZndDsKICAgICZsdDt0eHA6 cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgIHRoaXMgaXMg c29tZSBoZWFkZXIgY29udGVudAogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwoKICAgICZs dDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7dG9vbGJhciZxdW90OyZndDsKICAgICAgICAm bHQ7dHhwOnJ2bV9wYXJlbnQgLyZndDsKICAgICAgICAmbHQ7bGkmZ3Q7c2VsZWN0aW9uIDQm bHQ7L2xpJmd0OwogICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gNSZsdDsvbGkmZ3Q7CiAg ICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CgogICAgJmx0O3R4cDpydm1fYmxvY2smZ3Q7CiAg ICAgICAgdGhpcyBpcyB0aGUgYm9keSBjb250ZW50LgogICAgJmx0Oy90eHA6cnZtX2Jsb2Nr Jmd0OwombHQ7L3R4cDpydm1faW5oZXJpdCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5BYm92ZSwg d2UgaW1wbGVtZW50ZWQgYSAmIzgyMTY7dG9vbGJhciYjODIxNzsgYmxvY2ssIHdoaWNoIGlz IG1lYW50IHRvIG92ZXJyaWRlIHRoZSBkZWZpbml0aW9uIG9mIHRvb2xiYXIgd2l0aGluIHRo ZSBpbmhlcml0ZWQgdGVtcGxhdGUgJiM4MjE2O2dyYW5kZGF1Z2h0ZXImIzgyMTc7LiBIb3dl dmVyLCBzaW5jZSB3ZSB3YW50IHRoZSBjb250ZW50IGZyb20gdGhhdCBvZiAmIzgyMTY7ZGF1 Z2h0ZXImIzgyMTc7IGFzIHdlbGwsIHdlIGNhbGwgaXQgdmlhIHRoZSA8Y29kZT4mbHQ7dHhw OnJ2bV9wYXJlbnQmZ3Q7PC9jb2RlPiB0YWcgd2hlbmV2ZXIgd2Ugd2FudCBpdOKAmXMgY29u dGVudCwgaW4gdGhpcyBjYXNlIGJlZm9yZSB3ZSBhZGQgb3VyIG93biBzZWxlY3Rpb25zLiBT byB0aGUgb3V0cHV0IGZvciB0aGUgd2hvbGUgdGhpbmcgaXMgbm93OjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7Ym9keSZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNz PSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyBzb21lIGhlYWRl ciBjb250ZW50CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZsdDt1bCZndDsKICAg ICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAxJmx0Oy9saSZndDsKICAgICAgICAgICAg Jmx0O2xpJmd0O3NlbGVjdGlvbiAyJmx0Oy9saSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0 O3NlbGVjdGlvbiAzJmx0Oy9saSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlv biA0Jmx0Oy9saSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiA1Jmx0Oy9s aSZndDsKICAgICAgICAmbHQ7L3VsJmd0OwoKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90 O21haW5sYXlvdXQmcXVvdDsmZ3Q7CiAgICAgICAgdGhpcyBpcyB0aGUgYm9keSBjb250ZW50 LgogICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2Zv b3RlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyB0aGUgZm9vdGVyCiAgICAgICAg Jmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2JvZHkmZ3Q7CiZsdDsvaHRtbCZndDs8L2NvZGU+PC9w cmU+Cgo8cD5hbmQgeW914oCZcmUgbm93IGEgdGVtcGxhdGUgaW5oZXJpdGFuY2UgbmluamEh PC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPiI7czo0OiJjb2Rl IjtzOjMyNjU6IgppZiAoY2xhc3NfZXhpc3RzKCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5 JykpIHsKCVR4cDo6Z2V0KCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykKCQktPnJlZ2lz dGVyKCdydm1faW5oZXJpdCcpCgkJLT5yZWdpc3RlcigncnZtX2Jsb2NrJykKCQktPnJlZ2lz dGVyKCdydm1fY2hpbGQnKQoJCS0+cmVnaXN0ZXIoJ3J2bV9wYXJlbnQnKTsKfQoKZnVuY3Rp b24gcnZtX2luaGVyaXQoJGF0dHMsICR0aGluZyA9IG51bGwpCnsKCXN0YXRpYyAkc3RhY2sg PSBhcnJheSgpOwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ3BhZ2UnID0+IGZhbHNlLAoJ CSdmb3JtJyA9PiBmYWxzZQoJKSwgJGF0dHMpKTsKCgkkb3V0ID0gJyc7Cglydm1fYmxvY2so ZmFsc2UpOwoKCWlmICgkdGhpbmcgIT09IG51bGwpCgl7CgkJcGFyc2UoJHRoaW5nKTsKCX0K CWVsc2UKCXsKCQl0cmlnZ2VyX2Vycm9yKCdydm1faW5oZXJpdCBzaG91bGQgYmUgdXNlZCBh cyBhIGNvbnRhaW5lciB0YWcnKTsKCX0KCglydm1fYmxvY2sodHJ1ZSk7CgoJaWYgKCRwYWdl ID09PSBmYWxzZSBhbmQgJGZvcm0gPT09IGZhbHNlKQoJewoJCSRwYWdlID0gJ2RlZmF1bHQn OwoJfQoKCWlmICgkcGFnZSAhPT0gZmFsc2UpCgl7CgkJaWYgKGluX2FycmF5KCRwYWdlLCAk c3RhY2ssIHRydWUpKQoJCXsKCQkJdHJpZ2dlcl9lcnJvcignY2lyY3VsYXIgcGFnZSByZWZl cmVuY2U6ICcgLiBhcnJheV9wb3AoJHN0YWNrKSAuICcgY2FsbHMgJyAuICRwYWdlKTsKCQl9 CgkJZWxzZQoJCXsKCQkJJHN0YWNrW10gPSAkcGFnZTsKCgkJCWlmIChpc19jYWxsYWJsZSgn ZmV0Y2hfcGFnZScpKQoJCQl7CgkJCQkkcGFnZSA9IGZldGNoX3BhZ2UoJHBhZ2UpOwoJCQl9 CgkJCWVsc2UKCQkJewoJCQkJJHBhZ2UgPSBzYWZlX2ZpZWxkKCd1c2VyX2h0bWwnLCd0eHBf cGFnZScsIm5hbWU9JyIuZG9TbGFzaCgkcGFnZSkuIiciKTsKCQkJfQoKCQkJJG91dCA9ICgk cGFnZSA9PT0gZmFsc2UgPyAnJyA6IHBhcnNlKCRwYWdlKSk7CgkJfQoJfQoJZWxzZQoJewoJ CSRvdXQgPSBwYXJzZV9mb3JtKCRmb3JtKTsKCX0KCglydm1fYmxvY2soZmFsc2UpOwoJcmV0 dXJuICRvdXQ7Cn0KCmZ1bmN0aW9uIHJ2bV9ibG9jaygkYXR0cywgJHRoaW5nID0gbnVsbCkK ewoJc3RhdGljICRwYXJzZSA9IHRydWU7CglzdGF0aWMgJGNoYWluID0gYXJyYXkoKTsKCXN0 YXRpYyAkY2hpbGRyZW4gPSBhcnJheSgpOwoJc3RhdGljICRwYXJlbnRzID0gYXJyYXkoKTsK CXN0YXRpYyAkcXVldWUgPSBhcnJheSgpOwoKCWlmIChpc19ib29sKCRhdHRzKSkKCXsKCQkk cGFyc2UgPSAkYXR0czsKCQlyZXR1cm47Cgl9CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkn bmFtZScgPT4gZmFsc2UsCgkJJ2NoaWxkJyA9PiBmYWxzZSwKCQkncGFyZW50JyA9PiBmYWxz ZQoJKSwgJGF0dHMpKTsKCgkkb3V0ID0gJyc7CgoJaWYgKCRjaGlsZCBvciAkcGFyZW50KQoJ ewoJCWlmICgkdGhpbmcgIT09IG51bGwpCgkJewoJCQl0cmlnZ2VyX2Vycm9yKCdpZ25vcmlu ZyBjb250YWluZXIgY29udGVudHMgYmVjYXVzZSBjaGlsZCBvciBwYXJlbnQgYXR0cmlidXRl IGlzIHNwZWNpZmllZCcpOwoJCX0KCgkJaWYgKCRuYW1lID09PSBmYWxzZSkKCQl7CgkJIAlp ZiAoIWVtcHR5KCRxdWV1ZSkpCgkJIAl7CgkJCQkkbmFtZSA9IGVuZCgkcXVldWUpOwoJCQl9 CgkJCWVsc2VpZiAoJHBhcmVudCkKCQkJewoJCQkJdHJpZ2dlcl9lcnJvcigndXNlIG9mIHBh cmVudCBhdHRyaWJ1dGUgaW4gYSBzdGFuZGFsb25lIGJsb2NrIHRhZyBpcyBub3QgYWxsb3dl ZCcpOwoJCQl9CgkJfQoJfQoKCWlmICgkbmFtZSA9PT0gZmFsc2UpCgl7CgkJJG5hbWUgPSAn JzsKCX0KCglpZiAoJGNoaWxkICE9PSBmYWxzZSkKCXsKCQlpZiAoYXNzZXJ0X2ludCgkY2hp bGQpIGFuZCAkY2hpbGQgPiAwKQoJCXsKCQkJaWYgKCFpc3NldCgkY2hpbGRyZW5bJG5hbWVd KSkKCQkJewoJCQkJJGNoaWxkcmVuWyRuYW1lXSA9IGNvdW50KCRjaGFpblskbmFtZV0pOwoJ CQl9CgoJCQkkY2hpbGRyZW5bJG5hbWVdIC09ICRjaGlsZDsKCgkJCWlmIChpc3NldCgkY2hh aW5bJG5hbWVdKSBhbmQgJGNoaWxkcmVuWyRuYW1lXSA+PSAwKQoJCQl7CgkJCQkkdGhpbmcg PSAkY2hhaW5bJG5hbWVdWyRjaGlsZHJlblskbmFtZV1dOwoJCQkJJG91dCA9ICgkdGhpbmcg PT09IG51bGwgPyAnJyA6IHBhcnNlKCR0aGluZykpOwoJCQl9CgkJfQoJfQoJZWxzZWlmICgk cGFyZW50ICE9PSBmYWxzZSkKCXsKCQlpZiAoYXNzZXJ0X2ludCgkcGFyZW50KSBhbmQgJHBh cmVudCA+IDApCgkJewoJCQlpZiAoIWlzc2V0KCRwYXJlbnRzWyRuYW1lXSkpCgkJCXsKCQkJ CSRwYXJlbnRzWyRuYW1lXSA9IDA7CgkJCX0KCgkJCSRwYXJlbnRzWyRuYW1lXSArPSAkcGFy ZW50OwoKCQkJaWYgKGlzc2V0KCRjaGFpblskbmFtZV0pIGFuZCAkcGFyZW50c1skbmFtZV0g PCBjb3VudCgkY2hhaW5bJG5hbWVdKSkKCQkJewoJCQkJJHRoaW5nID0gJGNoYWluWyRuYW1l XVskcGFyZW50c1skbmFtZV1dOwoJCQkJJG91dCA9ICgkdGhpbmcgPT09IG51bGwgPyAnJyA6 IHBhcnNlKCR0aGluZykpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJdHJpZ2dlcl9lcnJvcign bWlzc2luZyBwYXJlbnQnKTsKCQkJfQoJCX0KCX0KCWVsc2UKCXsKCQkkY2hhaW5bJG5hbWVd W10gPSAkdGhpbmc7CgoJCWlmICgkcGFyc2UpCgkJewoJCQlpZiAoaW5fYXJyYXkoJG5hbWUs ICRxdWV1ZSkpCgkJCXsKCQkJCXRyaWdnZXJfZXJyb3IoJ2RvIG5vdCBuZXN0IGJsb2NrcyB3 aXRoIHRoZSBzYW1lIG5hbWUsIHVubGVzcyBpdCBpcyBhIHBhcmVudC9jaGlsZCBjb25zdHJ1 Y3QuJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkcXVldWVbXSA9ICRuYW1lOwoJCQkJJHRo aW5nID0gJGNoYWluWyRuYW1lXVswXTsKCQkJCSRvdXQgPSAoJHRoaW5nID09PSBudWxsID8g JycgOiBwYXJzZSgkdGhpbmcpKTsKCQkJCWFycmF5X3BvcCgkcXVldWUpOwoJCQl9CgoJCQlh cnJheV9wb3AoJGNoYWluWyRuYW1lXSk7ICMgbmVlZGVkIGluIGNhc2UgYSB0ZW1wbGF0ZSBj b250YWlucyB0aGUgc2FtZSBibG9jayBtb3JlIHRoZW4gb25jZS4KCQl9Cgl9CgoJcmV0dXJu ICRvdXQ7Cn0KCmZ1bmN0aW9uIHJ2bV9jaGlsZCgkYXR0cywgJHRoaW5nID0gbnVsbCkKewoJ JGF0dHNbJ2NoaWxkJ10gPSAxOwoJcmV0dXJuIHJ2bV9ibG9jaygkYXR0cyk7Cn0KCmZ1bmN0 aW9uIHJ2bV9wYXJlbnQoJGF0dHMsICR0aGluZyA9IG51bGwpCnsKCSRhdHRzWydwYXJlbnQn XSA9IDE7CglyZXR1cm4gcnZtX2Jsb2NrKCRhdHRzKTsKfQoiO3M6MzoibWQ1IjtzOjMyOiJm MzkwZTFlOGUxYmUyNzQ1MTgwMTc1YTNiMThmYzQ1MCI7fQ==