# Name: rah_autogrowing_textarea v0.3.3 # Type: Admin/Client side plugin # Autogrowing textareas to Textpattern's backend # Author: Jukka Svahn # URL: http://rahforum.biz # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjI0OiJyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEiO3M6Njoi YXV0aG9yIjtzOjExOiJKdWtrYSBTdmFobiI7czoxMDoiYXV0aG9yX3VyaSI7czoxOToiaHR0 cDovL3JhaGZvcnVtLmJpeiI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuMy4zIjtzOjExOiJkZXNj cmlwdGlvbiI7czo0NjoiQXV0b2dyb3dpbmcgdGV4dGFyZWFzIHRvIFRleHRwYXR0ZXJuJ3Mg YmFja2VuZCI7czo0OiJoZWxwIjtzOjQwMjc6Igk8aDE+cmFoX2F1dG9ncm93aW5nX3RleHRh cmVhPC9oMT4KCgk8cD5BdXRvZ3Jvd2luZyB0ZXh0YXJlYXMgdG8gVGV4dHBhdHRlcm4mIzgy MTc7cyBiYWNrZW5kLiBXaXRoIHRoZSBwbHVnaW4sIGFsbCBiYWNrZW5kIHRleHRhcmVhcyBj YW4gYmUgYWRqdXN0ZWQgdG8gYXV0b21hdGljYWxseSBncm93IGFsb25nIHRoZSBjb250ZW50 LiBXaGlsZSB5b3UgdHlwZSwgdGhlIHRleHRhcmVhIHdpbGwgZm9sbG93IGFuZCByZXNpemUs IGRlcGVuZGluZyBvbiB0aGUgYW1vdW50IG9mIHRoZSBjb250ZW50IGFuZCBsaW5lcy4gVGhl IHBsdWdpbiBhbHNvIGluY2x1ZGVzIHNpbXBsZSBhZG1pbiBwYW5lbCB1bmRlciBFeHRlbnNp b25zIC10YWIsIHdoZXJlIHlvdSBjYW4gc2V0IHdoaWNoIHRleHRhcmVhcyB3aWxsIGdyb3cs IHBsdXMgc2V0IHNvbWUgYWRkaXRpb25hbCBncm93aW5nIHByZWZlcmVuY2VzLjwvcD4KCgk8 dWw+CgkJPGxpPlZlcnNpb246IDAuMy4zPC9saT4KCQk8bGk+VXBkYXRlZDogMjAwOS8wNi8w MyAwOTo1MCBBTSA8c3BhbiBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiszPC9saT4KCTwvdWw+ CgoJPGgzPlRhYmxlIG9mIENvbnRlbnRzPC9oMz4KCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNp bnRyby1hbmQtZGVzY3JpcHRpb24iPkludHJvIGFuZCBkZXNjcmlwdGlvbjwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjbGlzdC1vZi1mZWF0dXJlcyI+TGlzdCBvZiBmZWF0dXJlczwvYT48 L2xpPgoJCTxsaT48YSBocmVmPSIjcmVxdWlyZW1lbnRzIj5SZXF1aXJlbWVudHM8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI2luc3RhbGxhdGlvbi1hbmQtdXNhZ2UiPkluc3RhbGxhdGlv biBhbmQgdXNhZ2U8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NoYW5nZWxvZyI+Q2hhbmdl bG9nPC9hPjwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iaW50cm8tYW5kLWRlc2NyaXB0aW9uIj5J bnRybyBhbmQgZGVzY3JpcHRpb248L2gzPgoKCTxwPkFuIGFkbWluc2lkZSBwbHVnaW4gdGhh dCBicmluZ3MgYXV0b2dyb3dpbmcgdGV4dGFyZWFzIHRvIFRleHRwYXR0ZXJuJiM4MjE3O3Mg YmFja2VuZC4gRmllbGRzIHdpbGwgYXV0b21hdGljYWxseSByZXNpemUgd2hpbGUgdHlwaW5n LCBkZXBlbmRpbmcgb24gdGhlIGFtb3VudCBvZiBjb250ZW50LiBVc2VzIHRoZSBqUXVlcnkg cGx1Z2luIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWNsZXZlcmNvb2tpZS5jb20vZGVtb3MvYXV0 b2dyb3dfdGV4dGFyZWEuaHRtbCI+QXV0b2dyb3duIFRleHRhcmVhPC9hPiBieSA8YSBocmVm PSJodHRwOi8vd3d3LmNocnlzYmFkZXIuY29tIj5DaHJ5cyBCYWRlci48L2E+PC9wPgoKCTxo MyBpZD0ibGlzdC1vZi1mZWF0dXJlcyI+TGlzdCBvZiBmZWF0dXJlczwvaDM+CgoJPHVsPgoJ CTxsaT5TaW1wbGUgc2V0dXA6IGp1c3QgcnVuIHRoZSBhdXRvbWF0aWMgcGx1Z2luIHNldHVw IGFuZCBhY3RpdmF0ZS48L2xpPgoJCTxsaT5BdXRvbWF0aWNhbGx5IGdyb3dpbmcgdGV4dGFy ZWFzIHRvIFRleHRwYXR0ZXJuJiM4MjE3O3MgYmFja2VuZC48L2xpPgoJCTxsaT5PdXRwdXRz IHZhbGlkIDxzcGFuIGNsYXNzPSJjYXBzIj5YSFRNTDwvc3Bhbj4sIGFuZCB0aW55IGFuZCBj bGVhbiBKYXZhU2NyaXB0IGNvZGUuPC9saT4KCQk8bGk+QSBzaW1wbGUgYWRtaW4gaW50ZXJm YWNlIHVuZGVyIEV4dGVuc2lvbnMgZm9yIHNldHRpbmcgc3R5bGVzIGFuZCBwcmVmZXJlbmNl cy48L2xpPgoJPC91bD4KCgk8aDMgaWQ9InJlcXVpcmVtZW50cyI+UmVxdWlyZW1lbnRzPC9o Mz4KCgk8cD5yYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEmIzgyMTc7cyBtaW5pbXVtIHJlcXVp cmVtZW50czo8L3A+CgoJPHVsPgoJCTxsaT5UZXh0cGF0dGVybiA0LjAuNSs8L2xpPgoJCTxs aT5UZXh0cGF0dGVybiB3aXRoIGpRdWVyeSB2ZXJzaW9uIDEuMi4yKzwvbGk+CgkJPGxpPkNs aWVudCBicm93c2VyIHNob3VsZCBiZSBtb2Rlcm4gYW5kLCBhbHNvLCBzaG91bGQgYmUgc3Vw cG9ydGVkIGJ5IGpRdWVyeS48L2xpPgoJPC91bD4KCgk8cD5SZWNvbW1lbmRlZDo8L3A+CgoJ PHVsPgoJCTxsaT5UZXh0cGF0dGVybiA0LjAuOCs8L2xpPgoJPC91bD4KCgk8aDMgaWQ9Imlu c3RhbGxhdGlvbi1hbmQtdXNhZ2UiPkluc3RhbGxhdGlvbiBhbmQgdXNhZ2U8L2gzPgoKCTxw PlRoZSBnZW5lcmFsIHNpbXBsZSBiZWhhdmlvciBzdGFuZHM6IHBhc3RlIHBsdWdpbiBjb2Rl IHRvIHRoZSBwbHVnaW4gaW5zdGFsbGVyIHRleHRhcmVhIGFuZCBydW4gdGhlIGF1dG9tYXRp YyBzZXR1cC4gVGhlbiBqdXN0IGFjdGl2YXRlIHRoZSBwbHVnaW4gYW5kIGl0JiM4MjE3O3Mg cmVhZHksIHRleHRhcmVhcyBhcmUgYXV0b2dyb3dpbmcuPC9wPgoKCTxwPlVuZGVyIEV4dGVu c2lvbnMgdGFiIHlvdSB3aWxsIGZpbmQgYSBzdWJwYWdlIGNhbGxlZCA8ZW0+QXV0b2dyb3dp bmcgVGV4dGFyZWFzPC9lbT4gd2hlcmUgeW91IGNhbiBzZXQgYWxsIHNvcnQgb2Ygc2V0dGlu Z3MgYW5kIGNyZWF0ZSBhIHNvIGNhbGxlZCA8ZW0+dGV4dGFyZWEgY2FsbGJhY2tzPC9lbT4g d2hpY2ggd2lsbCBiYXNpY2FsbHkgaG9vayB0aGUgYXV0b2dyb3dpbmcgZnVuY3Rpb24gdG8g dGhlIHNwZWNpZmljIHRleHRhcmVhLjwvcD4KCgk8cD5EZWZpbmluZyAoYW5kIGhvb2tpbmcp IHRoZSBUZXh0YXJlYSBpcyBkb25lIGJ5IGNob29zaW5nIHRoZSBiYWNrZW5kIHBhZ2Ugd2hl cmUgdGhlIFRleHRhcmVhIGV4aXN0cyBhbmQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5YSFRN TDwvc3Bhbj4gSUQgKGllLiBib2R5LCBleGNlcnB0IGV0Yy4pIHdoaWNoIGlzIGRlZmluZWQg Zm9yIHRoZSB0ZXh0YXJlYS4gVGhlIGF1dG9ncm93ZWQgdGV4dGFyZWEgY2FuIGVpdGhlciBi ZSBwbHVnaW4mIzgyMTc7cyAoaWYgcGx1Z2luIHVzZXMgdmFsaWQgY29kZSBtZXRob2RzKSBv ciBUZXh0cGF0dGVybiYjODIxNztzIGNvcmUgdGV4dGFyZWEuIEFueSB2YWxpZCB0ZXh0YXJl YSB3aXRoIElEIChsb2NhdGVkIHVuZGVyIHZhbGlkIDxjb2RlPmV2ZW50PC9jb2RlPiAtZ2V0 IGNhbGxiYWNrKSBjYW4gYmUgbWFkZSB0byBhdXRvZ3JvdyB3aXRoIHVzZXJzIG93biBsaWtl cy48L3A+CgoJPGgzIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDM+CgoJPHA+PHN0cm9u Zz5WZXJzaW9uIDAuMy4zPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+UmVtb3ZlZCB1c2Vs ZXNzIHF1ZXJpZXMuPC9saT4KCQk8bGk+SW1wcm92ZWQgY2FsbGJhY2tzLjwvbGk+Cgk8L3Vs PgoKCTxwPjxzdHJvbmc+VmVyc2lvbiAwLjMuMjwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxp PkZpeGVkOiBSZW1vdmVkIGxvc3QgY2hpbGQgc2NlbGV0b24gZnVuY3Rpb247IEZpeGVzIGVy cm9yOiA8Y29kZT5GYXRhbCBlcnJvcjogQ2FsbCB0byB1bmRlZmluZWQgZnVuY3Rpb24gcmFo X3BsdWdpbl9kb3dubG9hZF9pbnN0YWxsKCk8L2NvZGU+LjwvbGk+Cgk8L3VsPgoKCTxwPjxz dHJvbmc+VmVyc2lvbiAwLjM8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT5BZGRlZDogQWRt aW4gaW50ZXJmYWNlIHVuZGVyIEV4dGVuc2lvbnMgLXRhYi48L2xpPgoJCTxsaT5BZGRlZDog QWJsZSB0byBkZWZpbmUgd2hpY2ggdGV4dGFyZWFzIGF1dG9ncm93LjwvbGk+CgkJPGxpPkFk ZGVkOiBNYXguIGhlaWdodCBsaW1pdCwgbGluZSBoZWlnaHQgYW5kIG90aGVyIG9wdGlvbmFs IHN0eWxlIHNldHRpbmdzIGFyZSBub3cgYWRqdXN0YWJsZS48L2xpPgoJPC91bD4KCgk8cD48 c3Ryb25nPlZlcnNpb24gMC4yPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+Q2hhbmdlZCA8 Y29kZT5saW5lLWhlaWdodDwvY29kZT4gZnJvbSBlbXMgdG8gcGl4ZWxzOiBmaXhlcyB0aGUg c21hbGwtdG8tc21hbGxlci1ieS1saW5lLXRvLWxpbmUgPGNvZGU+bGluZS1oZWlnaHQ8L2Nv ZGU+LWJ1ZyB0aGF0IG9jY3VycyBpbiBzb21lIGJyb3dzZXJzIHRoYXQgY2F1c2Ugc29tZSBw cm9ibGVtcyB3aXRoIHRleHRhcmVhcy48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPlZlcnNp b24gMC4xPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+Rmlyc3QgcmVsZWFzZS48L2xpPgoJ PC91bD4iO3M6NDoiY29kZSI7czoxNjEwODoiCSMjIyMjIyMjIyMjIyMjIyMjIw0KCSMNCgkj CXJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYS1wbHVnaW4gZm9yIFRleHRwYXR0ZXJuDQoJIwl2 ZXJzaW9uIDAuMy4zDQoJIwlieSBKdWtrYSBTdmFobg0KCSMJaHR0cDovL3JhaGZvcnVtLmJp eg0KCSMNCgkjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCglpZiAoQHR4cGludGVyZmFjZSA9PSAn YWRtaW4nKSB7DQoJCWdsb2JhbCAkZXZlbnQ7DQoJCXJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJl YV9pbnN0YWxsKCk7DQoJCXJlZ2lzdGVyX2NhbGxiYWNrKCdyYWhfYXV0b2dyb3dpbmdfdGV4 dGFyZWEnLCdhZG1pbl9zaWRlJywnaGVhZF9lbmQnKTsNCgkJYWRkX3ByaXZzKCdyYWhfYXV0 b2dyb3dpbmdfdGV4dGFyZWFfcGFnZScsICcxLDInKTsNCgkJcmVnaXN0ZXJfdGFiKCJleHRl bnNpb25zIiwgInJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYV9wYWdlIiwgIkF1dG9ncm93aW5n IFRleHRhcmVhIik7DQoJCXJlZ2lzdGVyX2NhbGxiYWNrKCJyYWhfYXV0b2dyb3dpbmdfdGV4 dGFyZWFfcGFnZSIsICJyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWFfcGFnZSIpOw0KCX0gZWxz ZSBpZihncHMoJ3JhaF9hdXRvZ3Jvd2luZ19qcycpKSByYWhfYXV0b2dyb3dpbmdfdGV4dGFy ZWFfanMoKTsNCg0KCWZ1bmN0aW9uIHJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYSgpIHsNCgkJ Z2xvYmFsICRldmVudDsNCgkJJHJzID0gc2FmZV9yb3dzX3N0YXJ0KCduYW1lLG1pbl9oZWln aHQsaGVpZ2h0LGxpbmVfaGVpZ2h0LG1heF9oZWlnaHQnLCdyYWhfYXV0b2dyb3dpbmdfdGV4 dGFyZWEnLCAicGFnZT0nIi5kb1NsYXNoKCRldmVudCkuIicgYW5kIGFjdGl2ZT0nWWVzJyBv cmRlciBieSBpZCBhc2MiKTsNCgkJaWYoJHJzICYmIG51bVJvd3MoJHJzKSA+IDApIHsNCgkJ CSRjc3MgPSBhcnJheSgpOw0KCQkJJG91dCA9IGFycmF5KCk7DQoJCQl3aGlsZSAoJGEgPSBu ZXh0Um93KCRycykpew0KCQkJCWV4dHJhY3QoJGEpOw0KCQkJCSRvdXRbXSA9ICd0ZXh0YXJl YSMnLiRuYW1lOw0KCQkJCSRjc3NbXSA9IA0KCQkJCQknCQkJdGV4dGFyZWEjJy4kbmFtZS4n IHsnLm4uDQoJCQkJCScJCQkJbWluLWhlaWdodDogJy4kbWluX2hlaWdodC4ncHg7Jy5uLg0K CQkJCQknCQkJCWhlaWdodDogJy4kaGVpZ2h0LidweDsnLm4uDQoJCQkJCScJCQkJbGluZS1o ZWlnaHQ6ICcuJGxpbmVfaGVpZ2h0LidweDsnLm4uDQoJCQkJCScJCQkJbWF4LWhlaWdodDog Jy4kbWF4X2hlaWdodC4ncHg7Jy5uLg0KCQkJCQknCQkJfScubjsNCgkJCX0NCgkJCWVjaG8g bi5uLg0KCQkJCScJPCEtLSBTdGFydCBvZiBjb2RlOiByYWhfYXV0b2dyb3dpbmdfdGV4dGFy ZWEgLS0+Jy5uLg0KCQkJCScJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9 IicuaHUuJz9yYWhfYXV0b2dyb3dpbmdfanM9MSI+PC9zY3JpcHQ+Jy5uLg0KCQkJCScJCTxz Y3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Jy5u Lg0KCQkJCScJCQkkKGRvY3VtZW50KS5yZWFkeSAoZnVuY3Rpb24oKSB7Jy5uLg0KCQkJCScJ CQkJJCgiJy50cmltKGltcGxvZGUoJywnLCRvdXQpLCcsJykuJyIpLmF1dG9ncm93KCk7Jy5u Lg0KCQkJCScJCQl9KTsnLm4uDQoJCQkJJwkJPC9zY3JpcHQ+Jy5uLg0KCQkJCScJCTxzdHls ZSB0eXBlPSJ0ZXh0L2NzcyI+Jy5uLg0KCQkJCWltcGxvZGUoJycsJGNzcykuDQoJCQkJJwkJ PC9zdHlsZT4nLm4uDQoJCQkJJwk8IS0tIEVuZCBvZiBjb2RlOiByYWhfYXV0b2dyb3dpbmdf dGV4dGFyZWEgLS0+Jy5uLm47DQoJCX0NCgl9DQoNCglmdW5jdGlvbiByYWhfYXV0b2dyb3dp bmdfdGV4dGFyZWFfaW5zdGFsbCgpIHsNCgkJc2FmZV9xdWVyeSgNCgkJCSJDUkVBVEUgVEFC TEUgSUYgTk9UIEVYSVNUUyAiLnNhZmVfcGZ4KCdyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEn KS4iICgNCgkJCQlgaWRgIGludCgxMSkgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsDQoJCQkJ YHBvc3RlZGAgZGF0ZXRpbWUgTk9UIE5VTEwgZGVmYXVsdCAnMDAwMC0wMC0wMCAwMDowMDow MCcsDQoJCQkJYG5hbWVgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KCQkJ CWBtaW5faGVpZ2h0YCB2YXJjaGFyKDEyKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KCQkJCWBo ZWlnaHRgIHZhcmNoYXIoMTIpIE5PVCBOVUxMIGRlZmF1bHQgJycsDQoJCQkJYGxpbmVfaGVp Z2h0YCB2YXJjaGFyKDEyKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KCQkJCWBtYXhfaGVpZ2h0 YCB2YXJjaGFyKDEyKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KCQkJCWBhY3RpdmVgIHZhcmNo YXIoMykgTk9UIE5VTEwgZGVmYXVsdCAnJywNCgkJCQlgcGFnZWAgdmFyY2hhcigyNTUpIE5P VCBOVUxMIGRlZmF1bHQgJycsDQoJCQkJUFJJTUFSWSBLRVkoYGlkYCkNCgkJCSkgUEFDS19L RVlTPTEgQVVUT19JTkNSRU1FTlQ9MSINCgkJKTsNCgkJaWYoc2FmZV9jb3VudCgncmFoX2F1 dG9ncm93aW5nX3RleHRhcmVhJywibmFtZT0nZXhjZXJwdCciKSA9PSAwKSB7DQoJCQlzYWZl X2luc2VydCgNCgkJCQkicmFoX2F1dG9ncm93aW5nX3RleHRhcmVhIiwNCgkJCQkibmFtZT0n ZXhjZXJwdCcsDQoJCQkJcG9zdGVkPW5vdygpLA0KCQkJCW1pbl9oZWlnaHQ9JzEwNScsDQoJ CQkJaGVpZ2h0PScxMDUnLA0KCQkJCWxpbmVfaGVpZ2h0PScxNicsDQoJCQkJbWF4X2hlaWdo dD0nMzAwMCcsDQoJCQkJYWN0aXZlPSdZZXMnLA0KCQkJCXBhZ2U9J2FydGljbGUnIg0KCQkJ KTsNCgkJfQ0KCQlpZihzYWZlX2NvdW50KCdyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEnLCJu YW1lPSdib2R5JyIpID09IDApIHsNCgkJCXNhZmVfaW5zZXJ0KA0KCQkJCSJyYWhfYXV0b2dy b3dpbmdfdGV4dGFyZWEiLA0KCQkJCSJuYW1lPSdib2R5JywNCgkJCQlwb3N0ZWQ9bm93KCks DQoJCQkJbWluX2hlaWdodD0nNDI1JywNCgkJCQloZWlnaHQ9JzQyNScsDQoJCQkJbGluZV9o ZWlnaHQ9JzE2JywNCgkJCQltYXhfaGVpZ2h0PSczMDAwJywNCgkJCQlhY3RpdmU9J1llcycs DQoJCQkJcGFnZT0nYXJ0aWNsZSciDQoJCQkpOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gcmFo X2F1dG9ncm93aW5nX3RleHRhcmVhX2xpc3QoJG1lc3NhZ2U9JycpIHsNCgkJcGFnZXRvcCgn QXV0b2dyb3dpbmcgVGV4dGFyZWEnLCRtZXNzYWdlKTsNCgkJZ2xvYmFsICRldmVudDsNCgkJ ZWNobyANCgkJCW4ubi4NCgkJCQknCTxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJpbmRl eC5waHAiIHN0eWxlPSJ3aWR0aDo5NTBweDttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0 aXZlOyI+Jy5uLg0KCQkJCScJCTxoMT48c3Ryb25nPnJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJl YTwvc3Ryb25nPiB8IENyZWF0ZSBuZXcgVGV4dGFyZWEgY2FsbGJhY2s8L2gxPicubi4NCgkJ CQlyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWFfaGVhZGVyKCkuDQoJCQkJJwkJPHRhYmxlIGNl bGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgaWQ9Imxpc3QiIGNsYXNzPSJsaXN0IiBz dHlsZT0id2lkdGg6MTAwJTsiPicubi4NCgkJCQknCQkJPHRyPicubi4NCgkJCQknCQkJCTx0 aD5OYW1lPC90aD4nLm4uDQoJCQkJJwkJCQk8dGg+VXBkYXRlZDwvdGg+Jy5uLg0KCQkJCScJ CQkJPHRoPkFjdGl2ZT88L3RoPicubi4NCgkJCQknCQkJCTx0aD5QYWdlPC90aD4nLm4uDQoJ CQkJJwkJCQk8dGg+I0lEPC90aD4nLm4uDQoJCQkJJwkJCQk8dGg+JiMxNjA7PC90aD4nLm4u DQoJCQkJJwkJCTwvdHI+Jy5uOw0KDQoJCSRycyA9IHNhZmVfcm93c19zdGFydCgnaWQsbmFt ZSxwb3N0ZWQscGFnZSxhY3RpdmUnLCdyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEnLCIxPTEg b3JkZXIgYnkgbmFtZSBhc2MsIGlkIGFzYyIpOw0KCQlpZiAoJHJzIGFuZCBudW1Sb3dzKCRy cykgPiAwKXsNCgkJCXdoaWxlICgkYSA9IG5leHRSb3coJHJzKSl7DQoJCQkJZXh0cmFjdCgk YSk7DQoJCQkJZWNobyANCgkJCQkJJwkJCTx0cj4nLm4uDQoJCQkJCScJCQkJPHRkPjxhIGhy ZWY9Ij9ldmVudD0nLiRldmVudC4nJmFtcDtzdGVwPXJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJl YV9mb3JtJmFtcDtpZD0nLiRpZC4nIj4nLigoJG5hbWUpID8gaHRtbHNwZWNpYWxjaGFycygk bmFtZSkgOiBnVHh0KCd1bnRpdGxlZCcpKS4nPC9hPjwvdGQ+Jy5uLg0KCQkJCQknCQkJCTx0 ZD4nLnNhZmVfc3RyZnRpbWUoJyViICVkICVZICVIOiVNJyxzdHJ0b3RpbWUoJHBvc3RlZCkp Lic8L3RkPicubi4NCgkJCQkJJwkJCQk8dGQ+Jy4kYWN0aXZlLic8L3RkPicubi4NCgkJCQkJ JwkJCQk8dGQ+PGEgaHJlZj0iP2V2ZW50PScuaHRtbHNwZWNpYWxjaGFycygkcGFnZSkuJyI+ Jy5odG1sc3BlY2lhbGNoYXJzKCRwYWdlKS4nPC9hPjwvdGQ+Jy5uLg0KCQkJCQknCQkJCTx0 ZD4nLigoJG5hbWUpID8gJzxjb2RlPnRleHRhcmVhIycuaHRtbHNwZWNpYWxjaGFycygkbmFt ZSkuJzwvY29kZT4nIDogJyYjMTYwOycpLic8L3RkPicubi4NCgkJCQkJJwkJCQk8dGQ+PGlu cHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJkZWxldGVbXSIgdmFsdWU9IicuJGlkLiciIC8+ PC90ZD4nLm4uDQoJCQkJCScJCQk8L3RyPicubjsNCgkJCX0NCgkJfSBlbHNlIGVjaG8gDQoJ CQkJCScJCQk8dHI+Jy5uLg0KCQkJCQknCQkJCTx0ZCBjb2xzcGFuPSI2IiBzdHlsZT0idGV4 dC1hbGlnbjpjZW50ZXI7Ij5ObyBydWxlcyBkb25lIHlldC48L3RkPicubi4NCgkJCQkJJwkJ CTwvdHI+Jy5uOw0KCQkNCgkJZWNobyANCgkJCScJCTwvdGFibGU+Jy5uLg0KCQkJJwkJPHAg c3R5bGU9InRleHQtYWxpZ246IHJpZ2h0O3BhZGRpbmctdG9wOjEwcHg7Ij4nLm4uDQoJCQkn CQkJPGxhYmVsIGZvcj0icmFoX2F1dG9ncm93aW5nX3RleHRhcmVhX3N0ZXAiPldpdGggc2Vs ZWN0ZWQ6PC9sYWJlbD4nLm4uDQoJCQknCQkJPHNlbGVjdCBuYW1lPSJzdGVwIiBpZD0icmFo X2F1dG9ncm93aW5nX3RleHRhcmVhX3N0ZXAiPicubi4NCgkJCScJCQkJPG9wdGlvbiB2YWx1 ZT0iIj5TZWxlY3QuLi48L29wdGlvbj4nLm4uDQoJCQknCQkJCTxvcHRpb24gdmFsdWU9InJh aF9hdXRvZ3Jvd2luZ190ZXh0YXJlYV9kZWxldGUiPkRlbGV0ZTwvb3B0aW9uPicubi4NCgkJ CScJCQk8L3NlbGVjdD4nLm4uDQoJCQknCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9 InNtYWxsZXJib3giIHZhbHVlPSJHbyIgLz4nLm4uDQoJCQknCQk8L3A+Jy5uLg0KCQkJJwkJ PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXZlbnQiIHZhbHVlPSInLiRldmVudC4nIiAv Picubi4NCgkJCScJPC9mb3JtPicubi5uOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9hdXRvZ3Jv d2luZ190ZXh0YXJlYV9ldmVudHMoJHBhZ2U9JycpIHsNCgkJZ2xvYmFsICRwcml2cywgJHBs dWdpbl9hcmVhczsNCgkJJGFyZWFzWydjb250ZW50J10gPSBhcnJheSgNCgkJCWdUeHQoJ3Rh Yl9vcmdhbmlzZScpID0+ICdjYXRlZ29yeScsDQoJCQlnVHh0KCd0YWJfd3JpdGUnKSA9PiAn YXJ0aWNsZScsDQoJCQlnVHh0KCd0YWJfbGlzdCcpID0+ICAnbGlzdCcsDQoJCQlnVHh0KCd0 YWJfaW1hZ2UnKSA9PiAnaW1hZ2UnLA0KCQkJZ1R4dCgndGFiX2ZpbGUnKSA9PiAnZmlsZScs CQkJCQkgDQoJCQlnVHh0KCd0YWJfbGluaycpID0+ICdsaW5rJywNCgkJCWdUeHQoJ3RhYl9j b21tZW50cycpID0+ICdkaXNjdXNzJw0KCQkpOw0KCQkkYXJlYXNbJ3ByZXNlbnRhdGlvbidd ID0gYXJyYXkoDQoJCQlnVHh0KCd0YWJfc2VjdGlvbnMnKSA9PiAnc2VjdGlvbicsDQoJCQln VHh0KCd0YWJfcGFnZXMnKSA9PiAncGFnZScsDQoJCQlnVHh0KCd0YWJfZm9ybXMnKSA9PiAn Zm9ybScsDQoJCQlnVHh0KCd0YWJfc3R5bGUnKSA9PiAnY3NzJw0KCQkpOw0KCQkkYXJlYXNb J2FkbWluJ10gPSBhcnJheSgNCgkJCWdUeHQoJ3RhYl9kaWFnbm9zdGljcycpID0+ICdkaWFn JywNCgkJCWdUeHQoJ3RhYl9wcmVmZXJlbmNlcycpID0+ICdwcmVmcycsDQoJCQlnVHh0KCd0 YWJfc2l0ZV9hZG1pbicpICA9PiAnYWRtaW4nLA0KCQkJZ1R4dCgndGFiX2xvZ3MnKSA9PiAn bG9nJywNCgkJCWdUeHQoJ3RhYl9pbXBvcnQnKSA9PiAnaW1wb3J0Jw0KCQkpOw0KCQkkYXJl YXNbJ2V4dGVuc2lvbnMnXSA9IGFycmF5KCk7DQoJCWlmKGlzX2FycmF5KCRwbHVnaW5fYXJl YXMpKSAkYXJlYXMgPSBhcnJheV9tZXJnZV9yZWN1cnNpdmUoJGFyZWFzLCAkcGx1Z2luX2Fy ZWFzKTsNCgkJJG91dCA9IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRhcmVhcyBhcyAkYSA9PiAk Yikgew0KCQkJaWYgKCFoYXNfcHJpdnMoJ3RhYi4nLiRhKSkgew0KCQkJCWNvbnRpbnVlOw0K CQkJfQ0KCQkJaWYgKGNvdW50KCRiKSA+IDApIHsNCgkJCQkkb3V0W10gPSAnCQkJCQkJCTxv cHRncm91cCBsYWJlbD0iJy5nVHh0KCd0YWJfJy4kYSkuJyI+Jy5uOw0KCQkJCWZvcmVhY2gg KCRiIGFzICRjID0+ICRkKSB7DQoJCQkJCWlmIChoYXNfcHJpdnMoJGQpKSB7DQoJCQkJCQkk b3V0W10gPSAnCQkJCQkJCQk8b3B0aW9uIHZhbHVlPSInLiRkLiciJy4oKCRkID09ICRwYWdl KSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIicgOiAnJykuJz4nLiRjLic8L29wdGlvbj4nLm47 DQoJCQkJCX0NCgkJCQl9DQoJCQkJJG91dFtdID0gJwkJCQkJCQk8L29wdGdyb3VwPicubjsN CgkJCX0NCgkJfQ0KCQlpZigkb3V0KSByZXR1cm4gaW1wbG9kZSgnJywkb3V0KTsNCgl9DQoN CglmdW5jdGlvbiByYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWFfcGFnZSgpIHsNCgkJZ2xvYmFs ICRzdGVwOw0KCQlyZXF1aXJlX3ByaXZzKCdyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWFfcGFn ZScpOw0KCQlpZihpbl9hcnJheSgkc3RlcCxhcnJheSgNCgkJCSdyYWhfYXV0b2dyb3dpbmdf dGV4dGFyZWFfc2F2ZScsDQoJCQkncmFoX2F1dG9ncm93aW5nX3RleHRhcmVhX2RlbGV0ZScs DQoJCQkncmFoX2F1dG9ncm93aW5nX3RleHRhcmVhX2Zvcm0nDQoJCSkpKSAkc3RlcCgpOw0K CQllbHNlIHJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYV9saXN0KCk7DQoJfQ0KDQoJZnVuY3Rp b24gcmFoX2F1dG9ncm93aW5nX3RleHRhcmVhX2hlYWRlcigpIHsNCgkJcmV0dXJuICcJCTxw PicuDQoJCQknJiMxODc7IDxhIGhyZWY9Ij9ldmVudD1yYWhfYXV0b2dyb3dpbmdfdGV4dGFy ZWFfcGFnZSZhbXA7c3RlcD1yYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWFfZm9ybSI+Q3JlYXRl IGEgbmV3IGNhbGxiYWNrPC9hPicuDQoJCQknICYjMTg3OyA8YSBocmVmPSI/ZXZlbnQ9cGx1 Z2luJmFtcDtzdGVwPXBsdWdpbl9oZWxwJmFtcDtuYW1lPXJhaF9hdXRvZ3Jvd2luZ190ZXh0 YXJlYSI+RG9jdW1lbnRhdGlvbjwvYT4nLg0KCQkJJzwvcD4nLm47DQoJfQ0KDQoJZnVuY3Rp b24gcmFoX2F1dG9ncm93aW5nX3RleHRhcmVhX2Zvcm0oJG1lc3NhZ2U9JycpIHsNCgkJZ2xv YmFsICRldmVudDsNCgkJcGFnZXRvcCgnQXV0b2dyb3dpbmcgVGV4dGFyZWEnLCRtZXNzYWdl KTsNCgkJaWYoZ3BzKCdpZCcpKSB7DQoJCQkkcnMgPSBzYWZlX3JvdygnKicsJ3JhaF9hdXRv Z3Jvd2luZ190ZXh0YXJlYScsImlkPSciLmRvU2xhc2goZ3BzKCdpZCcpKS4iJyIpOw0KCQkJ ZXh0cmFjdCgkcnMpOw0KCQl9IGVsc2Ugew0KCQkJJG5hbWUgPSAnJzsNCgkJCSRtaW5faGVp Z2h0ID0gJzQyNSc7DQoJCQkkaGVpZ2h0ID0gJzQyNSc7DQoJCQkkbGluZV9oZWlnaHQgPSAn MTYnOw0KCQkJJG1heF9oZWlnaHQgPSAnMzAwMCc7DQoJCQkkYWN0aXZlID0gJyc7DQoJCQkk cGFnZSA9ICcnOw0KCQkJJGlkID0gJyc7DQoJCX0NCgkJZWNobyANCgkJCW4ubi4NCgkJCQkn CTxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJpbmRleC5waHAiIHN0eWxlPSJ3aWR0aDo5 NTBweDttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0aXZlOyI+Jy5uLg0KCQkJCScJCTxo MT48c3Ryb25nPnJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYTwvc3Ryb25nPiB8IENyZWF0ZSBh IG5ldyBUZXh0YXJlYSBjYWxsYmFjazwvaDE+Jy5uLg0KCQkJCXJhaF9hdXRvZ3Jvd2luZ190 ZXh0YXJlYV9oZWFkZXIoKS4NCgkJCQknCQk8cD48bGFiZWwgZm9yPSJuYW1lIj48Y29kZT5J RDwvY29kZT4gb2YgdGhlIHRleHRhcmVhOjwvbGFiZWw+PGJyIC8+PGlucHV0IGNsYXNzPSJl ZGl0IiB0eXBlPSJ0ZXh0IiBzaXplPSI2MCIgbmFtZT0ibmFtZSIgaWQ9Im5hbWUiIHZhbHVl PSInLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiciIC8+PC9wPicubi4NCgkJCQknCQk8Zmll bGRzZXQgc3R5bGU9InBhZGRpbmc6MjBweDttYXJnaW46MjBweCAwOyI+Jy5uLg0KCQkJCScJ CQk8bGVnZW5kPlN0eWxpbmcgcHJlZmVyZW5jZXMgYW5kIDxhY3JvbnltIHRpdGxlPSJDYXNj YWRpbmcgU3R5bGUgU2hlZXRzIj5DU1M8L2Fjcm9ueW0+IHJ1bGVzPC9sZWdlbmQ+Jy5uLg0K CQkJCScJCQk8dGFibGUgc3R5bGU9IndpZHRoOjEwMCU7IiBjZWxsc3BhY2luZz0iMiIgY2Vs bHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Jy5uLg0KCQkJCScJCQkJPHRyPicubi4NCgkJCQkn CQkJCQk8dGQ+PGxhYmVsIGZvcj0ibWluX2hlaWdodCI+TWluLWhlaWdodDo8L2xhYmVsPjwv dGQ+Jy5uLg0KCQkJCScJCQkJCTx0ZD48aW5wdXQgY2xhc3M9ImVkaXQiIGlkPSJtaW5faGVp Z2h0IiB0eXBlPSJ0ZXh0IiBzaXplPSI1IiBuYW1lPSJtaW5faGVpZ2h0IiB2YWx1ZT0iJy5o dG1sc3BlY2lhbGNoYXJzKCRtaW5faGVpZ2h0KS4nIiAvPiBweDwvdGQ+Jy5uLg0KCQkJCScJ CQkJCTx0ZD48bGFiZWwgZm9yPSJtYXhfaGVpZ2h0Ij5NYXgtaGVpZ2h0OjwvbGFiZWw+PC90 ZD4nLm4uDQoJCQkJJwkJCQkJPHRkPjxpbnB1dCBjbGFzcz0iZWRpdCIgaWQ9Im1heF9oZWln aHQiIHR5cGU9InRleHQiIHNpemU9IjUiIG5hbWU9Im1heF9oZWlnaHQiIHZhbHVlPSInLmh0 bWxzcGVjaWFsY2hhcnMoJG1heF9oZWlnaHQpLiciIC8+IHB4PC90ZD4nLm4uDQoJCQkJJwkJ CQk8L3RyPicubi4NCgkJCQknCQkJCTx0cj4nLm4uDQoJCQkJJwkJCQkJPHRkPjxsYWJlbCBm b3I9ImxpbmVfaGVpZ2h0Ij5MaW5lLWhlaWdodDo8L2xhYmVsPjwvdGQ+Jy5uLg0KCQkJCScJ CQkJCTx0ZD48aW5wdXQgY2xhc3M9ImVkaXQiIGlkPSJsaW5lX2hlaWdodCIgdHlwZT0idGV4 dCIgc2l6ZT0iNSIgbmFtZT0ibGluZV9oZWlnaHQiIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hh cnMoJGxpbmVfaGVpZ2h0KS4nIiAvPiBweDwvdGQ+Jy5uLg0KCQkJCScJCQkJCTx0ZD48bGFi ZWwgZm9yPSJoZWlnaHQiPkhlaWdodDo8L2xhYmVsPjwvdGQ+Jy5uLg0KCQkJCScJCQkJCTx0 ZD48aW5wdXQgY2xhc3M9ImVkaXQiIGlkPSJoZWlnaHQiIHR5cGU9InRleHQiIHNpemU9IjUi IG5hbWU9ImhlaWdodCIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkaGVpZ2h0KS4nIiAv PiBweDwvdGQ+Jy5uLg0KCQkJCScJCQkJPC90cj4nLm4uDQoJCQkJJwkJCTwvdGFibGU+Jy5u Lg0KCQkJCScJCTwvZmllbGRzZXQ+Jy5uLg0KCQkJCScJCTxmaWVsZHNldCBzdHlsZT0icGFk ZGluZzoyMHB4O21hcmdpbjoyMHB4IDA7Ij4nLm4uDQoJCQkJJwkJCTxsZWdlbmQ+Q2FsbGJh Y2sgc2V0dGluZ3M8L2xlZ2VuZD4nLm4uDQoJCQkJJwkJCTx0YWJsZSBjZWxsc3BhY2luZz0i MiIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Jy5uLg0KCQkJCScJCQkJPHRyPicubi4N CgkJCQknCQkJCQk8dGQ+PGxhYmVsIGZvcj0icmFoX3BhZ2UiPkV2ZW50OjwvbGFiZWw+PC90 ZD4nLm4uDQoJCQkJJwkJCQkJPHRkPicubi4NCgkJCQknCQkJCQkJPHNlbGVjdCBuYW1lPSJw YWdlIiBjbGFzcz0iZWRpdCIgaWQ9InJhaF9wYWdlIj4nLm4uDQoJCQkJcmFoX2F1dG9ncm93 aW5nX3RleHRhcmVhX2V2ZW50cygkcGFnZSkuDQoJCQkJJwkJCQkJCTwvc2VsZWN0Picubi4N CgkJCQknCQkJCQk8L3RkPicubi4NCgkJCQknCQkJCQk8dGQ+PGxhYmVsIGZvcj0icmFoX2Fj dGl2ZSI+QWN0aXZlPzwvbGFiZWw+PC90ZD4nLm4uDQoJCQkJJwkJCQkJPHRkPicubi4NCgkJ CQknCQkJCQkJPHNlbGVjdCBuYW1lPSJhY3RpdmUiIGlkPSJyYWhfYWN0aXZlIiBjbGFzcz0i ZWRpdCI+Jy5uLg0KCQkJCScJCQkJCQkJPG9wdGlvbiB2YWx1ZT0iWWVzIicuKCgkYWN0aXZl ID09ICdZZXMnKSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIicgOiAnJykuJz5ZZXM8L29wdGlv bj4nLm4uDQoJCQkJJwkJCQkJCQk8b3B0aW9uIHZhbHVlPSJObyInLigoJGFjdGl2ZSA9PSAn Tm8nKSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIicgOiAnJykuJz5Obzwvb3B0aW9uPicubi4N CgkJCQknCQkJCQkJPC9zZWxlY3Q+Jy5uLg0KCQkJCScJCQkJCTwvdGQ+Jy5uLg0KCQkJCScJ CQkJPC90cj4nLm4uDQoJCQkJJwkJCTwvdGFibGU+Jy5uLg0KCQkJCScJCQk8aW5wdXQgdHlw ZT0iaGlkZGVuIiBuYW1lPSJldmVudCIgdmFsdWU9IicuJGV2ZW50LiciIC8+Jy5uLg0KCQkJ CScJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdGVwIiB2YWx1ZT0icmFoX2F1dG9n cm93aW5nX3RleHRhcmVhX3NhdmUiIC8+Jy5uLg0KCQkJCSgoJGlkKSA/ICcJCQk8aW5wdXQg dHlwZT0iaGlkZGVuIiBuYW1lPSJpZCIgdmFsdWU9IicuJGlkLiciIC8+Jy5uIDogJycpLg0K CQkJCScJCTwvZmllbGRzZXQ+Jy5uLg0KCQkJCScJCTxwPjxpbnB1dCB0eXBlPSJzdWJtaXQi IHZhbHVlPSJTYXZlIiBjbGFzcz0icHVibGlzaCIgLz48L3A+Jy5uLg0KCQkJCScJPC9mb3Jt Picubi5uOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYV9qcygp IHsNCgkJb2Jfc3RhcnQoKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoJCWhlYWRlcignQ29udGVu dC10eXBlOiBhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKTsNCgkJJGpzID0gJ0x5b2dEUW9x RFFvcUNVTnZjSGx5YVdkb2RITWdabTl5SUhSb1pTQm1iMnhzYjNkcGJtY2dTbUYyWVhOamNt bHdkQ0JqYjJSbE9nMEtLZzBLS2dsQmRYUnZJRVY0Y0dGdVpHbHVaeUJVWlhoMElFRnlaV0Vn S0RFdU1pNHlLUTBLS2dsaWVTQkRhSEo1Y3lCQ1lXUmxjaUFvZDNkM0xtTm9jbmx6WW1Ga1pY SXVZMjl0S1EwS0tnbGphSEo1YzJKQVoyMWhhV3d1WTI5dERRb3FEUW9xQ1ZOd1pXTnBZV3dn ZEdoaGJtdHpJSFJ2T2cwS0tnbEtZV3RsSUVOb1lYQmhJQzBnYW1GclpVQm9lV0p5YVdSemRI VmthVzh1WTI5dERRb3FDVXB2YUc0Z1VtVnphV2NnTFNCcVpYSmxjMmxuUUdkdFlXbHNMbU52 YlEwS0tnMEtLaUFKUTI5d2VYSnBaMmgwSUNoaktTQXlNREE0SUVOb2NubHpJRUpoWkdWeUlD aDNkM2N1WTJoeWVYTmlZV1JsY2k1amIyMHBEUW9xSUFsRWRXRnNJR3hwWTJWdWMyVmtJSFZ1 WkdWeUlIUm9aU0JOU1ZRZ0tFMUpWQzFNU1VORlRsTkZMblI0ZENrTkNpb2dDV0Z1WkNCSFVF d2dLRWRRVEMxTVNVTkZUbE5GTG5SNGRDa2diR2xqWlc1elpYTXVEUW9xRFFvcUx3MEtEUW9v Wm5WdVkzUnBiMjRvYWxGMVpYSjVLU0I3RFFvSmRtRnlJSE5sYkdZZ1BTQnVkV3hzT3cwS0NX cFJkV1Z5ZVM1bWJpNWhkWFJ2WjNKdmR5QTlJR1oxYm1OMGFXOXVLRzhwZXcwS0NRbHlaWFIx Y200Z2RHaHBjeTVsWVdOb0tHWjFibU4wYVc5dUtDa2dldzBLQ1FrSmJtVjNJR3BSZFdWeWVT NWhkWFJ2WjNKdmR5aDBhR2x6TENCdktUc05DZ2tKZlNrN0RRb0pmVHNOQ2dscVVYVmxjbmt1 WVhWMGIyZHliM2NnUFNCbWRXNWpkR2x2YmlBb1pTd2dieWw3RFFvSkNYUm9hWE11YjNCMGFX OXVjd2tKSUNBSlBTQnZJSHg4SUh0OU93MEtDUWwwYUdsekxtUjFiVzE1Q1FrSklDQUpQU0J1 ZFd4c093MEtDUWwwYUdsekxtbHVkR1Z5ZG1Gc0NTQUpJQ0FKUFNCdWRXeHNPdzBLQ1FsMGFH bHpMbXhwYm1WZmFHVnBaMmgwQ1NBZ0NUMGdkR2hwY3k1dmNIUnBiMjV6TG14cGJtVklaV2xu YUhRZ2ZId2djR0Z5YzJWSmJuUW9hbEYxWlhKNUtHVXBMbU56Y3lnbmJHbHVaUzFvWldsbmFI UW5LU2s3RFFvSkNYUm9hWE11YldsdVgyaGxhV2RvZEFrSklDQUpQU0IwYUdsekxtOXdkR2x2 Ym5NdWJXbHVTR1ZwWjJoMElIeDhJSEJoY25ObFNXNTBLR3BSZFdWeWVTaGxLUzVqYzNNb0oy MXBiaTFvWldsbmFIUW5LU2s3RFFvSkNYUm9hWE11YldGNFgyaGxhV2RvZEFrSklDQUpQU0Iw YUdsekxtOXdkR2x2Ym5NdWJXRjRTR1ZwWjJoMElIeDhJSEJoY25ObFNXNTBLR3BSZFdWeWVT aGxLUzVqYzNNb0oyMWhlQzFvWldsbmFIUW5LU2s3T3cwS0NRbDBhR2x6TG5SbGVIUmhjbVZo Q1FrZ0lBazlJR3BSZFdWeWVTaGxLVHNOQ2drSmFXWWdLSFJvYVhNdWJHbHVaVjlvWldsbmFI UWdQVDBnVG1GT0tYc05DZ2tKQ1hSb2FYTXViR2x1WlY5b1pXbG5hSFFnUFNBd093MEtDUWw5 RFFvSkNXbG1JQ2gwYUdsekxtMXBibDlvWldsbmFIUWdQVDBnVG1GT0lIeDhJSFJvYVhNdWJX bHVYMmhsYVdkb2RDQTlQU0F3S1hzTkNna0pDWFJvYVhNdWJXbHVYMmhsYVdkb2RDQTlQU0Iw YUdsekxuUmxlSFJoY21WaExtaGxhV2RvZENncE93a05DZ2tKZlEwS0NRbDBhR2x6TG1sdWFY UW9LVHNOQ2dsOU93MEtDV3BSZFdWeWVTNWhkWFJ2WjNKdmR5NW1iaUE5SUdwUmRXVnllUzVo ZFhSdlozSnZkeTV3Y205MGIzUjVjR1VnUFNCN0RRb0pDV0YxZEc5bmNtOTNPaUFuTVM0eUxq SW5EUW9KZlRzTkNpQUphbEYxWlhKNUxtRjFkRzluY205M0xtWnVMbVY0ZEdWdVpDQTlJR3BS ZFdWeWVTNWhkWFJ2WjNKdmR5NWxlSFJsYm1RZ1BTQnFVWFZsY25rdVpYaDBaVzVrT3cwS0NX cFJkV1Z5ZVM1aGRYUnZaM0p2ZHk1bWJpNWxlSFJsYm1Rb2V3MEtDUWxwYm1sME9pQm1kVzVq ZEdsdmJpZ3BJSHNKQ1FrTkNna0pDWFpoY2lCelpXeG1JRDBnZEdocGN6c0pDUWtOQ2drSkNY Um9hWE11ZEdWNGRHRnlaV0V1WTNOektIdHZkbVZ5Wm14dmR6b2dKMmhwWkdSbGJpY3NJR1Jw YzNCc1lYazZJQ2RpYkc5amF5ZDlLVHNOQ2drSkNYUm9hWE11ZEdWNGRHRnlaV0V1WW1sdVpD Z25abTlqZFhNbkxDQm1kVzVqZEdsdmJpZ3BJSHNnYzJWc1ppNXpkR0Z5ZEVWNGNHRnVaQ2dw SUgwZ0tTNWlhVzVrS0NkaWJIVnlKeXdnWm5WdVkzUnBiMjRvS1NCN0lITmxiR1l1YzNSdmNF VjRjR0Z1WkNncElIMHBPdzBLQ1FrSmRHaHBjeTVqYUdWamEwVjRjR0Z1WkNncE93a05DZ2tK ZlN3TkNna0pjM1JoY25SRmVIQmhibVE2SUdaMWJtTjBhVzl1S0NrZ2V3a0pDUWtOQ2drSklD QjJZWElnYzJWc1ppQTlJSFJvYVhNN0RRb0pDUWwwYUdsekxtbHVkR1Z5ZG1Gc0lEMGdkMmx1 Wkc5M0xuTmxkRWx1ZEdWeWRtRnNLR1oxYm1OMGFXOXVLQ2tnZTNObGJHWXVZMmhsWTJ0RmVI QmhibVFvS1gwc0lEUXdNQ2s3RFFvSkNYMHNEUW9KQ1hOMGIzQkZlSEJoYm1RNklHWjFibU4w YVc5dUtDa2dldzBLQ1FrSlkyeGxZWEpKYm5SbGNuWmhiQ2gwYUdsekxtbHVkR1Z5ZG1Gc0tU c0pEUW9KQ1gwc0RRb0pDV05vWldOclJYaHdZVzVrT2lCbWRXNWpkR2x2YmlncElIc05DZ2tK Q1dsbUlDaDBhR2x6TG1SMWJXMTVJRDA5SUc1MWJHd3BldzBLQ1FrSkNYUm9hWE11WkhWdGJY a2dQU0JxVVhWbGNua29KenhrYVhZK1BDOWthWFkrSnlrN0RRb0pDUWtKZEdocGN5NWtkVzF0 ZVM1amMzTW9ldzBLQ1FrSkNRa25abTl1ZEMxemFYcGxKeUFnT2lCMGFHbHpMblJsZUhSaGNt VmhMbU56Y3lnblptOXVkQzF6YVhwbEp5a3NEUW9KQ1FrSkNTZG1iMjUwTFdaaGJXbHNlU2M2 SUhSb2FYTXVkR1Y0ZEdGeVpXRXVZM056S0NkbWIyNTBMV1poYldsc2VTY3BMQTBLQ1FrSkNR a25kMmxrZEdnbklDQWdJQ0FnT2lCMGFHbHpMblJsZUhSaGNtVmhMbU56Y3lnbmQybGtkR2du S1N3TkNna0pDUWtKSjNCaFpHUnBibWNuSUNBZ0lEb2dkR2hwY3k1MFpYaDBZWEpsWVM1amMz TW9KM0JoWkdScGJtY25LU3dOQ2drSkNRa0pKMnhwYm1VdGFHVnBaMmgwSnpvZ2RHaHBjeTVz YVc1bFgyaGxhV2RvZENBcklDZHdlQ2NzRFFvSkNRa0pDU2R2ZG1WeVpteHZkeTE0SnlBNklD ZG9hV1JrWlc0bkxBMEtDUWtKQ1FrbmNHOXphWFJwYjI0bklDQWdPaUFuWVdKemIyeDFkR1Vu TEEwS0NRa0pDUWtuZEc5d0p5QWdJQ0FnSUNBZ09pQXdMQTBLQ1FrSkNRa25iR1ZtZENjSkNT QTZJQzA1T1RrNURRb0pDUWtKZlNrdVlYQndaVzVrVkc4b0oySnZaSGtuS1RzTkNna0pDWDBO Q2drSkNYWmhjaUJvZEcxc0lEMGdkR2hwY3k1MFpYaDBZWEpsWVM1MllXd29LUzV5WlhCc1lX TmxLQzhvUEh3K0tTOW5MQ0FuSnlrN0RRb0pDUWxwWmlBb0pDNWljbTkzYzJWeUxtMXphV1Vw ZXcwS0NRa0pDV2gwYld3Z1BTQm9kRzFzTG5KbGNHeGhZMlVvTDF4dUwyY3NJQ2M4UWxJK2Jt VjNKeWs3RFFvSkNRbDlaV3h6WlhzTkNna0pDUWxvZEcxc0lEMGdhSFJ0YkM1eVpYQnNZV05s S0M5Y2JpOW5MQ0FuUEdKeVBtNWxkeWNwT3cwS0NRa0pmUTBLQ1FrSmFXWWdLSFJvYVhNdVpI VnRiWGt1YUhSdGJDZ3BJQ0U5SUdoMGJXd3BldzBLQ1FrSkNYUm9hWE11WkhWdGJYa3VhSFJ0 YkNob2RHMXNLVHNOQ2drSkNRbHBaaUFvZEdocGN5NXRZWGhmYUdWcFoyaDBJRDRnTUNBbUpp QW9kR2hwY3k1a2RXMXRlUzVvWldsbmFIUW9LU0FySUhSb2FYTXViR2x1WlY5b1pXbG5hSFFn UGlCMGFHbHpMbTFoZUY5b1pXbG5hSFFwS1hzTkNna0pDUWtKZEdocGN5NTBaWGgwWVhKbFlT NWpjM01vSjI5MlpYSm1iRzkzTFhrbkxDQW5ZWFYwYnljcE93a05DZ2tKQ1FsOURRb0pDUWtK Wld4elpYc05DZ2tKQ1FrSmRHaHBjeTUwWlhoMFlYSmxZUzVqYzNNb0oyOTJaWEptYkc5M0xY a25MQ0FuYUdsa1pHVnVKeWs3RFFvSkNRa0pDV2xtSUNoMGFHbHpMblJsZUhSaGNtVmhMbWhs YVdkb2RDZ3BJRHdnZEdocGN5NWtkVzF0ZVM1b1pXbG5hSFFvS1NBcklIUm9hWE11YkdsdVpW OW9aV2xuYUhRZ2ZId2dLSFJvYVhNdVpIVnRiWGt1YUdWcFoyaDBLQ2tnUENCMGFHbHpMblJs ZUhSaGNtVmhMbWhsYVdkb2RDZ3BLU2w3Q1EwS0NRa0pDUWtKZEdocGN5NTBaWGgwWVhKbFlT NWhibWx0WVhSbEtIdG9aV2xuYUhRNklDaDBhR2x6TG1SMWJXMTVMbWhsYVdkb2RDZ3BJQ3Nn ZEdocGN5NXNhVzVsWDJobGFXZG9kQ2tnS3lBbmNIZ25mU3dnTVRBd0tUc0pEUW9KQ1FrSkNY ME5DZ2tKQ1FsOURRb0pDUWw5RFFvSkNYME5DZ2w5S1RzTkNuMHBLR3BSZFdWeWVTazcnOw0K CQllY2hvIGJhc2U2NF9kZWNvZGUoJGpzKTsNCgkJZXhpdCgpOw0KCX0NCg0KCWZ1bmN0aW9u IHJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYV9zYXZlKCkgew0KCQlleHRyYWN0KGRvU2xhc2go Z3BzYShhcnJheSgnaWQnLCduYW1lJywnbWluX2hlaWdodCcsJ2hlaWdodCcsJ2xpbmVfaGVp Z2h0JywnbWF4X2hlaWdodCcsJ2FjdGl2ZScsJ3BhZ2UnKSkpKTsNCgkJaWYoJGlkICYmIHNh ZmVfY291bnQoJ3JhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYScsImlkPSciLiRpZC4iJyIpID09 IDEpIHsNCgkJCXNhZmVfdXBkYXRlKA0KCQkJCSdyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEn LA0KCQkJCSJuYW1lID0gJyRuYW1lJywNCgkJCQlwb3N0ZWQ9bm93KCksDQoJCQkJbWluX2hl aWdodCA9ICckbWluX2hlaWdodCcsDQoJCQkJaGVpZ2h0ID0gJyRoZWlnaHQnLA0KCQkJCWxp bmVfaGVpZ2h0ID0gJyRsaW5lX2hlaWdodCcsDQoJCQkJbWF4X2hlaWdodCA9ICckbWF4X2hl aWdodCcsDQoJCQkJYWN0aXZlID0gJyRhY3RpdmUnLA0KCQkJCXBhZ2UgPSAnJHBhZ2UnIiwN CgkJCQkiaWQ9JyIuJGlkLiInIg0KCQkJKTsNCgkJCXJhaF9hdXRvZ3Jvd2luZ190ZXh0YXJl YV9mb3JtKCdVcGRhdGVkLicpOw0KCQl9IGVsc2Ugew0KCQkJc2FmZV9pbnNlcnQoDQoJCQkJ J3JhaF9hdXRvZ3Jvd2luZ190ZXh0YXJlYScsDQoJCQkJIm5hbWUgPSAnJG5hbWUnLA0KCQkJ CXBvc3RlZD1ub3coKSwNCgkJCQltaW5faGVpZ2h0ID0gJyRtaW5faGVpZ2h0JywNCgkJCQlo ZWlnaHQgPSAnJGhlaWdodCcsDQoJCQkJbGluZV9oZWlnaHQgPSAnJGxpbmVfaGVpZ2h0JywN CgkJCQltYXhfaGVpZ2h0ID0gJyRtYXhfaGVpZ2h0JywNCgkJCQlhY3RpdmUgPSAnJGFjdGl2 ZScsDQoJCQkJcGFnZSA9ICckcGFnZSciDQoJCQkpOw0KCQkJcmFoX2F1dG9ncm93aW5nX3Rl eHRhcmVhX2xpc3QoJ1NhdmVkLicpOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX2F1dG9n cm93aW5nX3RleHRhcmVhX2RlbGV0ZSgpIHsNCgkJJHNlbGVjdGVkID0gcHMoJ2RlbGV0ZScp Ow0KCQkkaSA9IDA7DQoJCWlmKCFpc19hcnJheSgkc2VsZWN0ZWQpKSAkc2VsZWN0ZWQgPSBl eHBsb2RlKCcsJywkc2VsZWN0ZWQpOw0KCQlmb3JlYWNoKCRzZWxlY3RlZCBhcyAkaWQpIHsN CgkJCXNhZmVfZGVsZXRlKCdyYWhfYXV0b2dyb3dpbmdfdGV4dGFyZWEnLCJpZD0nIi5kb1Ns YXNoKCRpZCkuIiciKTsNCgkJCSRpKys7DQoJCX0NCgkJcmFoX2F1dG9ncm93aW5nX3RleHRh cmVhX2xpc3QoKCgkaSA+IDApID8gJ0RlbGV0ZWQuJyA6ICcnKSk7DQoJfSI7czo0OiJ0eXBl IjtzOjE6IjEiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6 Im1kNSI7czozMjoiZmU1MTE3NWUzNWI2NTdmNTI2YjI3ZDEwZDdlZmVjYmEiO30=