# Name: cbe_frontauth v0.9.7 # Type: Client side plugin # Manage backend connections from frontend # Author: Claire Brione # URL: http://www.clairebrione.com/ # Recommended load order: 4 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJjYmVfZnJvbnRhdXRoIjtzOjY6ImF1dGhvciI7czox MzoiQ2xhaXJlIEJyaW9uZSI7czoxMDoiYXV0aG9yX3VyaSI7czoyODoiaHR0cDovL3d3dy5j bGFpcmVicmlvbmUuY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuOS43IjtzOjExOiJkZXNj cmlwdGlvbiI7czo0MDoiTWFuYWdlIGJhY2tlbmQgY29ubmVjdGlvbnMgZnJvbSBmcm9udGVu ZCI7czo0OiJoZWxwIjtzOjI0NTE1OiI8ZGl2IGlkPSJjYmUtcGx1Z2luLWhlbHAiPgo8aDE+ Y2JlX2Zyb250YXV0aDwvaDE+Cgo8cD5UaGlzIGNsaWVudC1zaWRlIHBsdWdpbiBsZXRzIHlv dXIgdXNlcnMgKG9yIHlvdSkgbWFuYWdlIGJhY2tlbmQgY29ubmVjdGlvbiBmcm9tIGZyb250 ZW5kLCBpLmUuIGNvbm5lY3QgYW5kIGRpc2Nvbm5lY3QgYXMgdGhleSAoeW91KSB3b3VsZCBk byBmcm9tIGJhY2tlbmQuCjxiciAvPllvdSBjYW4gdGh1cyBtYWtlIHRoaW5ncyB2aXNpYmxl IGFuZCBvcGVuIGFjdGlvbnMgZm9yIGNvbm5lY3RlZCB1c2VycyBvbmx5LjwvcD4KPHA+RGV2 ZWxvcGVkIGFuZCB0ZXN0ZWQgd2l0aCBUZXh0cGF0dGVybiA0LjQuMSwgdGhlbiA0LjUtYmV0 YS48L3A+CjxwIGNsYXNzPSJyZWFkbWUiPlBsZWFzZSByZWFkIHRoZSBmaXJzdCA8YSBocmVm PSIjcXVpY2stc3RhcnQiPlF1aWNrIHN0YXJ0PC9hPiBwYXJhZ3JhcGggdG8gYXZvaWQgKGFz IG11Y2ggYXMgcG9zc2libGUpIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLjwvcD4KPHA+QSBmZXcg ZXhhbXBsZXMgKGluIGZyZW5jaCkgY2FuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRw Oi8vd3d3LmNsYWlyZWJyaW9uZS5jb20vZGVtby1jYmVfZnJvbnRhdXRoIj5kZW1vbnN0cmF0 aW9uIHBhZ2U8L2E+LjwvcD4KCjxoMj5UYWJsZSBvZiBjb250ZW50czwvaDI+Cjx1bD4KICA8 bGk+PGEgaHJlZj0iI2ZlYXR1cmVzIj5GZWF0dXJlczwvYT48L2xpPgogIDxsaT48YSBocmVm PSIjZGwtaW5zdGFsbC1zdXBwIj5Eb3dubG9hZCwgaW5zdGFsbGF0aW9uLCBzdXBwb3J0PC9h PjwvbGk+CiAgPGxpPjxhIGhyZWY9IiN0YWdzLWxpc3QiPlRhZ3MgbGlzdDwvYT48L2xpPgog IDxsaT48YSBocmVmPSIjbm90YXRpb25zIj5Ob3RhdGlvbnM8L2E+PC9saT4KICA8bGk+PGEg aHJlZj0iI3F1aWNrLXN0YXJ0Ij5RdWljayBzdGFydDwvYT48L2xpPgogIDxsaT48YSBocmVm PSIjaW5kaXZpZHVhbC1lbGVtZW50cyI+VGFrZSBjb250cm9sIG9uIGluZGl2aWR1YWwgZWxl bWVudHM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI2FkZGl0aW9uYWwtdGFncyI+QWRkaXRp b25hbCBhbmQgc3BlY2lhbCB0YWdzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNjYWxsYmFj a3MiPkNhbGxiYWNrczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjaG93LXRvIj5Ib3ctdG86 IGlkZWFzIGFuZCBzbmlwcGV0czwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjYWR2YW5jZWQt dXNhZ2UiPkFkdmFuY2VkIHVzYWdlPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNjaGFuZ2Vs b2ciPkNoYW5nZWxvZzwvYT48L2xpPgo8L3VsPgoKPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVy ZXM8L2gyPgoKPHVsPgogIDxsaT5hdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgPGEgaHJlZj0i I2xvZ2luLWxvZ291dC1ib3giPmxvZ2luL2xvZ291dCBib3g8L2E+Li4uPC9saT4KICA8bGk+ Li4uIG9yIGluZGVwZW5kZW50IDxhIGhyZWY9IiNsb2dpbi1hcmVhIj5sb2dpbjwvYT4gb3Ig PGEgaHJlZj0iI2xvZ291dC1hcmVhIj5sb2dvdXQ8L2E+IGZvcm1zIGFuZCBsaW5rczwvbGk+ CiAgPGxpPmNob29zZSBpZiB0aCB1c2VyIG11c3QgY29ubmVjdCB3aXRoIGhpcy9oZXIgPGEg aHJlZj0iI2xvZ2luLW1ldGhvZCI+dXNlcm5hbWUsIG9yIGVtYWlsIGFkZHJlc3MsIG9yIG9u ZSBvZiBib3RoPC9hPjwvbGk+CiAgPGxpPnNob3cvaGlkZSBjb250ZW50IGRlcGVuZGluZyBv biB3aGV0aGVyIGEgdXNlciBpcyBjb25uZWN0ZWQgb3Igbm90IChzZWUgPGEgaHJlZj0iI3By b3RlY3QtcGFydHMiPnByb3RlY3QgcGFydHMgb2YgYSBwYWdlPC9hPik8L2xpPgogIDxsaT5z ZXQgPGEgaHJlZj0iI2F1dG9tYXRpYy1yZWRpcmVjdCI+YXV0b21hdGljIHJlZGlyZWN0aW9u czwvYT4gYWZ0ZXIgbG9naW4gYW5kL29yIGxvZ291dDwvbGk+CiAgPGxpPm9wdGlvbmFsOiBk ZWZpbmUgeW91ciBvd24gZGVmYXVsdCB2YWx1ZXMgZm9yIDxhIGhyZWY9IiNzZXR0aW5nLWlu dml0ZXMiPmxvZ2luL2xvZ291dCBpbnZpdGVzPC9hPiBhbmQgPGEgaHJlZj0iI3NldHRpbmct bGFiZWxzIj5idXR0b24vbGluayBsYWJlbHM8L2E+LCA8YSBocmVmPSIjbG9naW4tbWV0aG9k Ij5kZWZpbmUgbG9naW4gbWV0aG9kPC9hPjwvbGk+CiAgPGxpPm92ZXJyaWRlIHRoZXNlIHZh bHVlcyBhbnl3aGVyZSBpbiB0aGUgcGFnZSBpZiB5b3UgbmVlZCB0bzwvbGk+CiAgPGxpPmFs c28gcHJvdmlkZXMgPGEgaHJlZj0iI2FkZGl0aW9uYWwtdGFncyI+YWRkaXRpb25hbCB0YWdz PC9hPiB0byBlYXNlIHNjcmlwdGVyJ3MgbGlmZTwvbGk+CiAgPGxpPmFuZCA8YSBocmVmPSIj Y2FsbGJhY2tzIj5ob29rcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zPC9hPiBwcmltYXJpbHkg aW4gb3JkZXIgdG8gcmVzZXQgb3IgY2hhbmdlIHVzZXIncyBwYXNzd29yZDwvbGk+CjwvdWw+ Cgo8aDIgaWQ9ImRsLWluc3RhbGwtc3VwcCI+RG93bmxvYWQsIGluc3RhbGxhdGlvbiwgc3Vw cG9ydDwvaDI+CjxwPkRvd25sb2FkIGZyb20gPGEgaHJlZj0iCkFsc28gYXZhaWxhYmxlIG9u ICJHaXRIdWIiOmh0dHBzOi8vZ2l0aHViLmNvbS9DbGFpcmVCcmlvbmUvY2JlX2Zyb250YXV0 aCIgdGFyZ2V0PSJfYmxhbmsiPkdpdEh1YjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0 dGVybi5vcmcvcGx1Z2lucy8xMjM0L2NiZV9mcm9udGF1dGgiIHRhcmdldD0iX2JsYW5rIj50 ZXh0cGF0dGVybiByZXNvdXJjZXM8L2E+IG9yIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmNs YWlyZWJyaW9uZS5jb20vY2JlX2Zyb250YXV0aCIgdGFyZ2V0PSJfYmxhbmsiPnBsdWdpbiBw YWdlPC9hPi48L3A+CjxwPkNvcHkvcGFzdGUgaW4gdGhlIEFkbWluID4gUGx1Z2lucyB0YWIg dG8gaW5zdGFsbCBvciB1bmluc3RhbGwsIGFjdGl2YXRlIG9yIGRlc2FjdGl2YXRlLjwvcD4K PHA+VmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD0zNjU1MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3Igc3VwcG9ydC48L3A+ Cgo8aDIgaWQ9InRhZ3MtbGlzdCI+VGFncyBsaXN0PC9oMj4KCjxwPkFscGhhYmV0aWNhbGx5 Ogo8YnIgLz48YSBocmVmPSIjYWR2YW5jZWQtdXNhZ2UiPmNiZV9mcm9udGF1dGg8L2E+Cjxi ciAvPjxhIGhyZWY9IiNwYXRoLWJhY2tlbmQiPmNiZV9mcm9udGF1dGhfYmFja2VuZDwvYT4K PGJyIC8+PGEgaHJlZj0iI2xvZ2luLWxvZ291dC1ib3giPmNiZV9mcm9udGF1dGhfYm94PC9h Pgo8YnIgLz48YSBocmVmPSIjZWRpdC1hcnRpY2xlIj5jYmVfZnJvbnRhdXRoX2VkaXRfYXJ0 aWNsZTwvYT4KPGJyIC8+PGEgaHJlZj0iI3Byb3RlY3QtcGFydHMiPmNiZV9mcm9udGF1dGhf aWZfY29ubmVjdGVkPC9hPgo8YnIgLz48YSBocmVmPSIjc2V0dGluZy1pbnZpdGVzIj5jYmVf ZnJvbnRhdXRoX2ludml0ZTwvYT4KPGJyIC8+PGEgaHJlZj0iI3NldHRpbmctbGFiZWxzIj5j YmVfZnJvbnRhdXRoX2xhYmVsPC9hPgo8YnIgLz48YSBocmVmPSIjbGluay1nZW5lcmF0aW9u Ij5jYmVfZnJvbnRhdXRoX2xpbms8L2E+CjxiciAvPjxhIGhyZWY9IiNwcm90ZWN0LXBhcnRz Ij5jYmVfZnJvbnRhdXRoX2lmX2xvZ2dlZDwvYT4KPGJyIC8+PGEgaHJlZj0iI2xvZ2luLWFy ZWEiPmNiZV9mcm9udGF1dGhfbG9naW48L2E+CjxiciAvPjxhIGhyZWY9IiNsb2dpbi1tZXRo b2QiPmNiZV9mcm9udGF1dGhfbG9naW53aXRoPC9hPgo8YnIgLz48YSBocmVmPSIjZm9ybS1l bGVtZW50cyI+Y2JlX2Zyb250YXV0aF9sb2duYW1lPC9hPgo8YnIgLz48YSBocmVmPSIjbG9n b3V0LWFyZWEiPmNiZV9mcm9udGF1dGhfbG9nb3V0PC9hPgo8YnIgLz48YSBocmVmPSIjZm9y bS1lbGVtZW50cyI+Y2JlX2Zyb250YXV0aF9wYXNzd29yZDwvYT4KPGJyIC8+PGEgaHJlZj0i I3Byb3RlY3QtcGFydHMiPmNiZV9mcm9udGF1dGhfcHJvdGVjdDwvYT4KPGJyIC8+PGEgaHJl Zj0iI2F1dG9tYXRpYy1yZWRpcmVjdCI+Y2JlX2Zyb250YXV0aF9yZWRpcmVjdDwvYT4KPGJy IC8+PGEgaHJlZj0iI2Zvcm0tZWxlbWVudHMiPmNiZV9mcm9udGF1dGhfcmVzZXQ8L2E+Cjxi ciAvPjxhIGhyZWY9IiNmb3JtLWVsZW1lbnRzIj5jYmVfZnJvbnRhdXRoX3N0YXk8L2E+Cjxi ciAvPjxhIGhyZWY9IiNmb3JtLWVsZW1lbnRzIj5jYmVfZnJvbnRhdXRoX3N1Ym1pdDwvYT4K PGJyIC8+PGEgaHJlZj0iI3VzZXItaW5mbyI+Y2JlX2Zyb250YXV0aF93aG9pczwvYT4KPC9w PgoKPGgyIGlkPSJub3RhdGlvbnMiPk5vdGF0aW9uczwvaDI+Cgo8cD48Y29kZT5UYWdzIGFu ZCBleGFtcGxlcyBhcmUgcHJlc2VudGVkIHdpdGggdGhpcyB0eXBvZ3JhcGh5PC9jb2RlPiAo Zml4ZWQgd2lkdGgpLjwvcD4KPHA+UG9zc2libGUgdmFsdWVzIGZvciBhdHRyaWJ1dGVzIGFy ZSBzZXBhcmF0ZWQgYnkgYSAiPGNvZGU+IHwgPC9jb2RlPiIgKHBpcGUpLjwvcD4KPHA+PGI+ Qm9sZDwvYj4gbWVhbnMgZGVmYXVsdCB2YWx1ZS48L3A+CjxwPiI8Y29kZT4uLi48L2NvZGU+ IiAoZWxsaXBzaXMpIGlzIHRvIGJlIHJlcGxhY2VkIGJ5IGFueSBjdXN0b20gdmFsdWUsIHVz dWFsbHkgYSBzdHJpbmcuPC9wPgo8cD5BdHRyaWJ1dGVzIHN1cnJvdW5kZWQgYnkgIjxjb2Rl Pls8L2NvZGU+IiBhbmQgIjxjb2RlPl08L2NvZGU+IiAoc3F1YXJlIGJyYWNrZXRzKSBhcmUg b3B0aW9uYWwuPC9wPgoKPGgyIGlkPSJxdWljay1zdGFydCI+UXVpY2sgc3RhcnQ8L2gyPgoK PHA+TWVzc2FnZSBzdHJpbmdzIGFyZSBjdXN0b21pc2FibGUgYnkgZWRpdGluZyB0aGVtIGlu IHRoZSBmdW5jdGlvbiBfY2JlX2ZhX2xhbmcoKS4gV2hlbiBwb3NzaWJsZSwgdGhlaXIgZGVm YXVsdCB2YWx1ZXMgYXJlIHB1bGxlZCBmcm9tIHRoZSBsYW5ndWFnZSB0YWJsZS4gSW4gbW9z dCBjYXNlcywgeW91IHdvbid0IGhhdmUgdG8gZWRpdCB0aGVtIGFzIHRoZXkgYXJlIGFscmVh ZHkgbG9jYWxpc2VkLjwvcD4KCjxwIGNsYXNzPSJyZWFkbWUiPldoYXQgeW91IGhhdmUgdG8g a25vdyBhbmQgY2FyZSBhYm91dCA6PC9wPgo8dWw+CiAgPGxpPlRoZSBsb2dpbi9sb2dvdXQg bWVjaGFuaXNtIHJlbGllcyBvbiBjb29raWVzLiBBIGNvb2tpZSBpcyBhdHRhY2hlZCB0byBv bmUsIGFuZCBvbmx5IG9uZSwgc3ViZG9tYWluLjwvbGk+CiAgPGxpPjxjb2RlPmh0dHA6Ly9k b21haW4udGxkPC9jb2RlPiBhbmQgPGNvZGU+aHR0cDovL3d3dy5kb21haW4udGxkPC9jb2Rl PiBhcmUgPGI+ZGlmZmVyZW50PC9iPiBzdWJkb21haW5zLCBldmVuIGlmIHlvdSBwcmVzZW50 IHRoZSBzYW1lIGNvbnRlbnQgdGhyb3VnaCBib3RoIFVSTHMuPC9saT4KPC91bD4KPHA+PT4g WW91IHdpbGwgaGF2ZSB0byBjaG9vc2Ugd2hpY2ggYmFzZSBVUkwgeW91IHdhbnQgdG8gdXNl ICh3aXRoIG9yIHdpdGhvdXQgd3d3KSBhbmQgc3RpY2sgdG8gaXQgYWxvbmcgYWxsIHRoZSBu YXZpZ2F0aW9uLiBUaGlzIGlzIGFsc28gYSBnb29kIHByYWN0aWNlIHRvIGF2b2lkIGR1cGxp Y2F0ZSBjb250ZW50LjwvcD4KCjxwPkhlcmUgaXMgaG93IHRvOjwvcD4KPHA+MS4gUGx1Z2lu IGxvYWQgb3JkZXI6IGFzIGl0IGhhbmRsZXMgcmVkaXJlY3Rpb25zLCBpdCBoYXMgdG8gYmUg bG9hZGVkIGJlZm9yZSBhbnkgb3RoZXIgcGx1Z2luLiBTZXQgYnkgZGVmYXVsdCB0byA8Yj40 PC9iPiwgYWRqdXN0IGFjY29yZGluZyB0byB5b3VyIG5lZWRzLjwvcD4KPHA+Mi4gQWRtaW4g PiBQcmVmZXJlbmNlcyA6IGdpdmUgKG9yIHZlcmlmeSkgeW91ciBzaXRlIFVSTCBhbmQgc2F2 ZS48L3A+CjxwPjMuIEVkaXQgdGhlIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZSBsb2Nh dGVkIGF0IHRoZSByb290IG9mIHlvdXIgc2l0ZSwgYW5kIGFwcGVuZCBhcyBjbG9zZXIgYXMg cG9zc2libGUgdG8gPGNvZGU+UmV3cml0ZUVuZ2luZSBPbjwvY29kZT4gKHJlcGxhY2UgPGNv ZGU+ZG9tYWluLnRsZDwvY29kZT4gd2l0aCB5b3VyIGFjdHVhbCBVUkwpOjwvcD4KCjxwPkVJ VEhFUiwgd2l0aCB3d3c8L3A+CjxwcmU+PGNvZGU+UmV3cml0ZUNvbmQgJXtIVFRQX0hPU1R9 ICFed3d3XC5kb21haW5cLnRsZCQgW05DXQpSZXdyaXRlUnVsZSBeKC4qKSBodHRwOi8vd3d3 LmRvbWFpbi50bGQvJDEgW1FTQSxSPTMwMSxMXTwvY29kZT48L3ByZT4KCjxwPk9SLCB3aXRo b3V0IHd3dzwvcD4KPHByZT48Y29kZT5SZXdyaXRlQ29uZCAle0hUVFBfSE9TVH0gXnd3d1wu ZG9tYWluXC50bGQkIFtOQ10KUmV3cml0ZVJ1bGUgXiguKikgaHR0cDovL2RvbWFpbi50bGQv JDEgW1FTQSxSPTMwMSxMXTwvY29kZT48L3ByZT4KCjxwPjxzcGFuIGNsYXNzPSJhY2NlbnQi Pkl0J3MgdGltZSBub3cgdG8gc3RhcnQgdXNpbmcgdGhlIHBsdWdpbjwvc3Bhbj46IDxhIGhy ZWY9IiNsb2dpbi1sb2dvdXQtYm94Ij5hbGxvdyB1c2VycyB0byBsb2dpbiBhbmQgbG9nb3V0 PC9hPiwgPGEgaHJlZj0iI2F1dG9tYXRpYy1yZWRpcmVjdCI+cmVkaXJlY3RpbmcgdGhlbTwv YT4gKG9yIG5vdCkgYWZ0ZXIgbG9naW4gYW5kL29yIGxvZ291dCwgPGEgaHJlZj0iI3Byb3Rl Y3QtcGFydHMiPnNlcnZlIHRoZW0gc3BlY2lhbCBjb250ZW50PC9hPiwgPGEgaHJlZj0iI2lu ZGl2aWR1YWwtZWxlbWVudHMiPnRoZSByZXN0IGlzIHVwIHRvIHlvdTwvYT4uPC9wPgoKPHA+ PGNvZGU+d3JhcHRhZzwvY29kZT4sIDxjb2RlPmNsYXNzPC9jb2RlPiwgPGNvZGU+YnJlYWs8 L2NvZGU+IGFuZCA8Y29kZT5icmVha2NsYXNzPC9jb2RlPiBhcmUgc3VwcG9ydGVkIGJ5IGV2 ZXJ5IHRhZyBhbmQgYm90aCBkZWZhdWx0IHRvIDxiPnVuc2V0PC9iPi48L3A+Cgo8aDMgaWQ9 ImxvZ2luLWxvZ291dC1ib3giPkxvZ2luL2xvZ291dCBib3g6ICZsdDt0eHA6Y2JlX2Zyb250 YXV0aF9ib3ggLyZndDs8L2gzPgoKPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhf Ym94CiAgWyBsb2dpbl9pbnZpdGU9IjxiPkNvbm5lY3QgdG8gdGV4dHBhdHRlcm48L2I+IHwg Li4uIgogICAgbG9nb3V0X2ludml0ZT0iPGI+bm9uZTwvYj4gfCAuLi4iCiAgICB0YWdfaW52 aXRlPSIuLi4iCiAgICBsb2dpbl9sYWJlbD0iLi4uIgogICAgbG9nb3V0X2xhYmVsPSIuLi4i CiAgICBsb2dvdXRfdHlwZT0iPGI+YnV0dG9uPC9iPiB8IGxpbmsiCiAgICB0YWdfZXJyb3I9 IjxiPnNwYW48L2I+IiBjbGFzc19lcnJvcj0iPGI+Y2JlX2ZhX2Vycm9yPC9iPiIKICAgIHdy YXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIiBd IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+RGlzcGxheXMKPGJyIC8+LSBzaW1wbGUgbG9naW4g Zm9ybSBpZiBub3QgY29ubmVjdGVkCjxiciAvPi0gImNvbm5lY3RlZCBhcyB7bG9naW4gbmFt ZX0iIGFuZCBhIGxvZ291dCBidXR0b24gb3IgbGluayBpZiBjb25uZWN0ZWQKPC9wPgoKPHA+ SWYgbG9naW4gZmFpbHMsIGEgYmFzaWMgbWVzc2FnZSB3aWxsIGFwcGVhciBqdXN0IGJlZm9y ZSB0aGUgbG9naW4gZm9ybS4gWW91IGNhbiBjdXN0b21pc2UgaXRzIHdyYXBwaW5nIHRhZyBh bmQgY2xhc3MuPC9wPgoKPHA+SWYgeW91IGRvbid0IHdhbnQgImNvbm5lY3RlZCBhcyIgbWVz c2FnZSwgdXNlIGFzIGEgY29udGFpbmVyIHRhZyBhbmQgcHV0IGEgYmxhbmsgb3IgPGEgaHJl Zj0iI2JveC1pZGVhcyI+YW55dGhpbmcgZWxzZTwvYT4gaW4gYmV0d2Vlbjo8L3A+CjxwcmU+ PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2JveCZndDsgJmx0Oy90eHA6Y2JlX2Zyb250 YXV0aF9ib3gmZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJwcm90ZWN0LXBhcnRzIj5Qcm90 ZWN0IHBhcnRzIG9mIGEgcGFnZTogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3Byb3RlY3QgLyZn dDssICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9pZl9sb2dnZWQgLyZndDsgYW5kICZsdDt0eHA6 Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQgLyZndDs8L2gzPgoKPHByZT48Y29kZT4mbHQ7 dHhwOmNiZV9mcm9udGF1dGhfcHJvdGVjdAogIFsgbmFtZT0iPGI+bm9uZTwvYj4gfCBjb21t YS1zZXBhcmF0ZWQgdmFsdWVzIgogICAgbGV2ZWw9IjxiPm5vbmU8L2I+IHwgY29tbWEtc2Vw YXJhdGVkIHZhbHVlcyIKICAgIGxpbms9IjxiPm5vbmU8L2I+IHwgdXJsIgogICAgbGlua2xh YmVsPSI8Yj5ub25lPC9iPiB8IGFuY2hvciIKICAgIHRhcmdldD0iPGI+X3NlbGY8L2I+IHwg X2JsYW5rIgogICAgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVh a2NsYXNzPSIuLi4iIF0mZ3Q7CiAgV2hhdCB0byBwcm90ZWN0CiZsdDt0eHA6ZWxzZSAvJmd0 OwogIFdoYXQgdG8gZGlzcGxheSBpZiBub3QgY29ubmVjdGVkCiZsdDsvdHhwOmNiZV9mcm9u dGF1dGhfcHJvdGVjdCZndDs8L2NvZGU+PC9wcmU+CjxwPlN5bm9ueW1zOiA8Y29kZT4mbHQ7 dHhwOmNiZV9mcm9udGF1dGhfaWZfY29ubmVjdGVkIC8mZ3Q7PC9jb2RlPiA8Y29kZT4mbHQ7 dHhwOmNiZV9mcm9udGF1dGhfaWZfbG9nZ2VkIC8mZ3Q7PC9jb2RlPiBpZiB5b3UgZmluZCBv bmUgb2YgdGhlc2UgZm9ybXMgbW9yZSBjb252ZW5pZW50PC9wPgoKPHA+SWYgY29ubmVjdGVk LCB5b3UgY2FuIGF1dG9tYXRpY2FsbHkgYWRkIGEgbGluayB0byBjbGljayB0byBnbyBzb21l d2hlcmUuIFRoaXMgbGluayB3aWxsIHNob3cgZmlyc3QgKGJlZm9yZSBhbnkgb3RoZXIgY29u dGVudCkuCjxiciAvPllvdSBkbyB0aGlzIHVzaW5nIHRoZSBhdHRyaWJ1dGVzIDxjb2RlPmxp bms8L2NvZGU+LCA8Y29kZT5saW5rbGFiZWw8L2NvZGU+LCBvcHRpb25hbGx5IDxjb2RlPnRh cmdldDwvY29kZT4gKCJfc2VsZiIgb3BlbnMgdGhlIGxpbmsgaW4gdGhlIHNhbWUgd2luZG93 L3RhYiwgIl9ibGFuayIgaW4gYSBuZXcgd2luZG93L3RhYikuCjwvcD4KCjxwPklmIHlvdSB3 YW50IHRvIGRpc3BsYXkgdGhlIGxpbmsgYW55d2hlcmUgZWxzZSwgb3IgZGlzcGxheSBtb3Jl IHRoYW4gb25lIGxpbmssIG9yIGNvbmRpdGlvbmFsbHkgc2hvdyBhIGxpbmssIHByZWZlciA8 YSBocmVmPSIjbGluay1nZW5lcmF0aW9uIj4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfbGluayAv Jmd0OzwvYT48L3A+Cgo8aDMgaWQ9ImxvZ2luLW1ldGhvZCI+TG9naW4gbWV0aG9kICZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9sb2dpbndpdGggLyZndDs8L2gzPgoKPHA+V2hhdCB0byB1c2Ug YXMgbG9naW4gbmFtZSA6IHVzZXJuYW1lIChhcyB0ZXh0cGF0dGVybiB1c3VhbGx5IGRvZXMp LCBlbWFpbCwgb3IgYXV0byBmb3IgYXV0b21hdGljIGRldGVjdGlvbi48L3A+CjxwPjxzcGFu IGNsYXNzPSJyZWFkbWUiPkNhdXRpb24gaWYgdXNpbmcgZW1haWwgbG9naW4gbWV0aG9kPC9z cGFuPiA6IHRleHRwYXR0ZXJuIGRvZXNuJ3QgY2hlY2sgZm9yIGR1cGxpY2F0ZSBlbWFpbCBh ZGRyZXNzZXMgdXBvbiB1c2VyIGNyZWF0aW9uLiBJZiBzb21lb25lIHRyaWVzIHRvIGxvZyBp biB1c2luZyBzdWNoIGFuIGFkZHJlc3MsIGl0IHdpbGwgZmFpbC48L3A+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dpbndpdGgKICAgIHZhbHVlPSI8Yj5hdXRvPC9i PiB8IHVzZXJuYW1lIHwgZW1haWwiIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJhdXRv bWF0aWMtcmVkaXJlY3QiPkF1dG9tYXRpYyByZWRpcmVjdDogJmx0O3R4cDpjYmVfZnJvbnRh dXRoX3JlZGlyZWN0IC8mZ3Q7PC9oMz4KCjxwPlVzZXIgd2lsbCBiZSBhdXRvbWF0aWNhbGx5 IHJlZGlyZWN0ZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBsb2dpbiBhbmQvb3IgbG9nb3V0Lgo8YnIg Lz5Vc2UgdGhpcyB0YWcgYmVmb3JlIGFueSBvdGhlciBjYmVfZnJvbnRhdXRoXyogYXMgaXQg c2V0cyByZWRpcmVjdGlvbihzKSBmb3IgdGhlIHdob2xlIHBhZ2UuPC9wPgoKPHByZT48Y29k ZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfcmVkaXJlY3QKICAgIGZvcj0ibG9naW4gfCBsb2dv dXQgfCBsb2dpbixsb2dvdXQiCiAgICB2YWx1ZT0iYWZ0ZXJfbG9naW5fdXJsIHwgYWZ0ZXJf bG9nb3V0X3VybCB8IGFmdGVyX2xvZ2luX3VybCxhZnRlcl9sb2dvdXRfdXJsIiAvJmd0Ozwv Y29kZT48L3ByZT4KCjxwPkluIG90aGVyIHdvcmRzIGFuZCBpbiBkZXRhaWxzOjwvcD4KPHA+ PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX3JlZGlyZWN0IGZvcj0ibG9naW4iIHZhbHVl PSJhZnRlcl9sb2dpbl91cmwiIC8mZ3Q7PC9jb2RlPgo8YnIgLz5zZXRzIGF1dG9tYXRpYyBy ZWRpcmVjdGlvbiBhZnRlciBsb2dpbjwvcD4KPHA+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRh dXRoX3JlZGlyZWN0IGZvcj0ibG9nb3V0IiB2YWx1ZT0iYWZ0ZXJfbG9nb3V0X3VybCIgLyZn dDs8L2NvZGU+CjxiciAvPnNldHMgYXV0b21hdGljIHJlZGlyZWN0aW9uIGFmdGVyIGxvZ291 dDwvcD4KPHA+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX3JlZGlyZWN0IGZvcj0ibG9n aW4iIHZhbHVlPSJhZnRlcl9sb2dpbl91cmwiIC8mZ3Q7CiZsdDt0eHA6Y2JlX2Zyb250YXV0 aF9yZWRpcmVjdCBmb3I9ImxvZ291dCIgdmFsdWU9ImFmdGVyX2xvZ291dF91cmwiIC8mZ3Q7 PC9jb2RlPgo8YnIgLz5zZXRzIGF1dG9tYXRpYyByZWRpcmVjdGlvbiBmb3IgYm90aDwvcD4K PHA+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX3JlZGlyZWN0IGZvcj0ibG9naW4sbG9n b3V0IiB2YWx1ZT0iYWZ0ZXJfbG9naW5fdXJsLGFmdGVyX2xvZ291dF91cmwiIC8mZ3Q7PC9j b2RlPgo8YnIgLz5zZXRzIGF1dG9tYXRpYyByZWRpcmVjdGlvbiBmb3IgYm90aCB0b288L3A+ Cgo8aDMgaWQ9InNldHRpbmctaW52aXRlcyI+U2V0dGluZyBpbnZpdGVzIGdsb2JhbGx5IGZv ciB0aGUgd2hvbGUgcGFnZTogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2ludml0ZSAvJmd0Ozwv aDM+Cgo8cD5Xb3JrcyB0aGUgc2FtZSB3YXkgPGEgaHJlZj0iI2F1dG9tYXRpYy1yZWRpcmVj dCI+YXMgYWJvdmU8L2E+OjwvcD4KPHA+PHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1 dGhfaW52aXRlIGZvcj0iLi4uIiB2YWx1ZT0iLi4uIiAvJmd0OzwvY29kZT48L3ByZT48L3A+ CjxwPkNvbWJpbmF0aW9uczogPGNvZGU+bG9naW4sIGxvZ291dCAob3IgbG9nZ2VkKSwgdGFn PC9jb2RlPjwvcD4KPHA+U3lub255bTogPGNvZGU+bG9nZ2VkPC9jb2RlPiBmb3IgbG9nb3V0 LCBpZiB5b3UgZmluZCB0aGlzIGZvcm0gbW9yZSBjb252ZW5pZW50LiA8c3BhbiBjbGFzcz0i YWNjZW50Ij5BcyBzeW5vbnltcyB0aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmU8L3NwYW4+ IGFuZCBpZiBib3RoIHVzZWQgPGNvZGU+bG9nb3V0PC9jb2RlPiB3aWxsIHRha2UgcHJlY2Vk ZW5jZS48L3A+CjxwPkNhbiBiZSBvdmVycmlkZGVuIGJ5IGFueSB0YWcgdGhhdCBoYXMgPGNv ZGU+aW52aXRlPC9jb2RlPiBhcyBhdHRyaWJ1dGUuPC9wPgoKPHA+RXhhbXBsZTo8L3A+Cjxw cmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2ludml0ZSBmb3I9ImxvZ2luLGxvZ291 dCx0YWciIGludml0ZT0iUGxlYXNlIGxvZ2luLFlvdSBjYW4gbG9nb3V0IGhlcmUsaDIiIC8m Z3Q7CiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9ib3ggLyZndDsKICAuLi4gWW91ciBwYWdlIGhl cmUgLi4uCiAgLi4uIGFuZCBpbiB0aGUgZm9vdGVyLCBmb3IgZXhhbXBsZSAuLi4KJmx0O3R4 cDpjYmVfZnJvbnRhdXRoX2xvZ2luIGludml0ZT0iU2F5IGhlbGxvICEiIHRhZ19pbnZpdGU9 InNwYW4iIC8mZ3Q7CjwvY29kZT48L3ByZT4KCjxoMyBpZD0ic2V0dGluZy1sYWJlbHMiPlNl dHRpbmcgYnV0dG9uIGFuZCBsaW5rIGxhYmVscyBnbG9iYWxseSBmb3IgdGhlIHdob2xlIHBh Z2U6ICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sYWJlbCAvJmd0OzwvaDM+Cgo8cD5Xb3JrcyB0 aGUgc2FtZSB3YXkgPGEgaHJlZj0iI2F1dG9tYXRpYy1yZWRpcmVjdCI+YXMgYWJvdmU8L2E+ IHRvbzo8L3A+CjxwPjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xhYmVsIGZv cj0iLi4uIiB2YWx1ZT0iLi4uIiAvJmd0OzwvY29kZT48L3ByZT48L3A+CjxwPkNvbWJpbmF0 aW9uczogPGNvZGU+bG9naW4sIGxvZ291dDwvY29kZT48L3A+CjxwPkNhbiBiZSBvdmVycmlk ZGVuIGJ5IGFueSB0YWcgdGhhdCBoYXMgPGNvZGU+bGFiZWw8L2NvZGU+IGFzIGF0dHJpYnV0 ZS48L3A+Cgo8aDIgaWQ9ImluZGl2aWR1YWwtZWxlbWVudHMiPlRha2UgY29udHJvbCBvbiBp bmRpdmlkdWFsIGVsZW1lbnRzPC9oMj4KCjxoMyBpZD0ibG9naW4tYXJlYSI+TG9naW4gYXJl YTogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ2luIC8mZ3Q7PC9oMz4KCjxwcmU+PGNvZGU+ Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ2luCiAgWyBpbnZpdGU9IjxiPkNvbm5lY3QgdG8g dGV4dHBhdHRlcm48L2I+IHwgLi4uIgogICAgdGFnX2ludml0ZT0iPGI+bm9uZTwvYj4gfCAu Li4iCiAgICAoIHtsYWJlbD0iPGI+TG9naW48L2I+fC4uLiIgc2hvd19zdGF5PSI8Yj4wPC9i PnwxIiBzaG93X3Jlc2V0PSIwfDxiPjE8L2I+In0gfCBmb3JtPSI8Yj5ub25lPC9iPnxmb3Jt IG5hbWUiICkKICAgIHRhZ19lcnJvcj0iPGI+c3BhbjwvYj4iIGNsYXNzX2Vycm9yPSI8Yj5j YmVfZmFfZXJyb3I8L2I+IgogICAgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0i Li4uIiBicmVha2NsYXNzPSIuLi4iIF0gLyZndDsKCiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9s b2dpbgogIFsgaW52aXRlPSI8Yj5Db25uZWN0IHRvIHRleHRwYXR0ZXJuPC9iPiB8IC4uLiIK ICAgIHRhZ19pbnZpdGU9IjxiPm5vbmU8L2I+IHwgLi4uIgogICAgdGFnX2Vycm9yPSI8Yj5z cGFuPC9iPiIgY2xhc3NfZXJyb3I9IjxiPmNiZV9mYV9lcnJvcjwvYj4iCiAgICB3cmFwdGFn PSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4uLiIgXSZndDsK ICAgZm9ybSBlbGVtZW50cwombHQ7L3R4cDpjYmVfZnJvbnRhdXRoX2xvZ2luJmd0OzwvY29k ZT48L3ByZT4KCjxwPklmIGxvZ2luIGZhaWxzLCBhIGJhc2ljIG1lc3NhZ2Ugd2lsbCBhcHBl YXIganVzdCBiZWZvcmUgdGhlIGxvZ2luIGZvcm0uIFlvdSBjYW4gY3VzdG9taXNlIGl0cyB3 cmFwcGluZyB0YWcgYW5kIGNsYXNzLjwvcD4KCjxwIGlkPSJmb3JtLWVsZW1lbnRzIiA+V2hl cmUgPGNvZGU+Zm9ybSBlbGVtZW50czwvY29kZT4gYXJlOjwvcD4KPHByZT48Y29kZT4mbHQ7 dHhwOmNiZV9mcm9udGF1dGhfbG9nbmFtZSBbbGFiZWw9IjxiPk5hbWU8L2I+fC4uLiIgd3Jh cHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iXSAv Jmd0OwombHQ7dHhwOmNiZV9mcm9udGF1dGhfcGFzc3dvcmQgW2xhYmVsPSI8Yj5QYXNzd29y ZDwvYj58Li4uIiB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFr Y2xhc3M9Ii4uLiJdIC8mZ3Q7CiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9zdGF5IFtsYWJlbD0i PGI+U3RheSBjb25uZWN0ZWQgd2l0aCB0aGlzIGJyb3dzZXI8L2I+fC4uLiIgd3JhcHRhZz0i Li4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iXSAvJmd0Owom bHQ7dHhwOmNiZV9mcm9udGF1dGhfcmVzZXQgW2xhYmVsPSI8Yj5QYXNzd29yZCBmb3Jnb3R0 ZW4gPzwvYj58Li4uIiB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJy ZWFrY2xhc3M9Ii4uLiJdIC8mZ3Q7CiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9zdWJtaXQgW2xh YmVsPSI8Yj5Mb2dpbjwvYj58Li4uIiB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFr PSIuLi4iIGJyZWFrY2xhc3M9Ii4uLiJdIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJs b2dvdXQtYXJlYSI+TG9nb3V0IGFyZWE6ICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dvdXQg LyZndDs8L2gzPgoKPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfbG9nb3V0CiAg WyBpbnZpdGU9IjxiPm5vbmU8L2I+fC4uLiIKICAgIHRhZ19pbnZpdGU9IjxiPm5vbmU8L2I+ fC4uLiIKICAgICgge2xhYmVsPSI8Yj5Mb2dvdXQ8L2I+fC4uLiIgdHlwZT0iPGI+YnV0dG9u PC9iPnxsaW5rIiBzaG93X2NoYW5nZT0iMHw8Yj4xPC9iPn0gfCBmb3JtPSI8Yj5ub25lPC9i Pnxmb3JtIG5hbWUiKQogICAgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4u IiBicmVha2NsYXNzPSIuLi4iIF0gLyZndDsKCiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dv dXQKICBbIGludml0ZT0iPGI+bm9uZTwvYj58Li4uIgogICAgdGFnX2ludml0ZT0iPGI+bm9u ZTwvYj58Li4uIgogICAgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBi cmVha2NsYXNzPSIuLi4iIF0mZ3Q7CiAgIGZvcm0gZWxlbWVudHMKJmx0Oy90eHA6Y2JlX2Zy b250YXV0aF9sb2dvdXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+V2hlcmUgPGNvZGU+Zm9ybSBl bGVtZW50czwvY29kZT4gYXJlOjwvcD4KPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1 dGhfc3VibWl0IHR5cGU9ImxvZ291dCIgW2xhYmVsPSI8Yj5Mb2dvdXQ8L2I+fC4uLiIgd3Jh cHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iXSAv Jmd0OwombHQ7dHhwOmNiZV9mcm9udGF1dGhfbGluayBsaW5rPSJsb2dvdXQ9MSIgdGFyZ2V0 PSJfZ2V0IiBbbGFiZWw9Ii4uLiIgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0i Li4uIiBicmVha2NsYXNzPSIuLi4iXSAvJmd0OzwvY29kZT48L3ByZT4KCjxoMiBpZD0iYWRk aXRpb25hbC10YWdzIj5BZGRpdGlvbmFsIGFuZCBzcGVjaWFsIHRhZ3M8L2gyPgoKPGgzIGlk PSJ1c2VyLWluZm8iPkNvbm5lY3RlZCB1c2VyIGluZm9ybWF0aW9uOiAmbHQ7dHhwOmNiZV9m cm9udGF1dGhfd2hvaXMgLyZndDs8L2gzPgoKPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9u dGF1dGhfd2hvaXMgW3R5cGU9Ils8Yj5uYW1lPC9iPl1bLCBSZWFsTmFtZV1bLCBlbWFpbF1b LCBwcml2c11bLCBsYXN0X2FjY2Vzc10iIGZvcm1hdD0iPGI+YXMgc2V0IGluIHByZWZlcmVu Y2VzPC9iPnxzaW5jZXxyZmM4MjJ8aXNvODYwMXx3M2NkdGZ8c3RyZnRpbWUoKSBzdHJpbmcg dmFsdWUiIHdyYXB0YWc9Ii4uLiIgYnJlYWs9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWtjbGFz cz0iLi4uIl0gLyZndDs8L2NvZGU+PC9wcmU+CjxwPjxjb2RlPmZvcm1hdDwvY29kZT4gYXBw bGllcyB0byA8Y29kZT5sYXN0X2FjY2VzczwvY29kZT4gaWYgcHJlc2VudC48L3A+Cgo8aDMg aWQ9InBhdGgtYmFja2VuZCI+UGF0aCB0byBUZXh0cGF0dGVybiBiYWNrZW5kOiAmbHQ7dHhw OmNiZV9mcm9udGF1dGhfYmFja2VuZCAvJmd0OzwvaDM+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6 Y2JlX2Zyb250YXV0aF9iYWNrZW5kIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+UmV0dXJucyBw YXRoIHRvIHRleHRwYXR0ZXJuIHJvb3QgKGluIG1vc3QgY2FzZXMgL3RleHRwYXR0ZXJuL2lu ZGV4LnBocCkuPC9wPgoKPGgzIGlkPSJlZGl0LWFydGljbGUiPkRpcmVjdCBidXR0b24gb3Ig bGluayB0byBlZGl0IGN1cnJlbnQgYXJ0aWNsZSAod3JpdGUgYXJ0aWNsZSk8L2gzPgoKPHA+ SW4gYW4gaW5kaXZpZHVhbCBhcnRpY2xlIGZvcm0gb3IgZW5jbG9zZWQgaW4gPGNvZGU+Jmx0 O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7ICZsdDsvdHhwOmlmX2luZGl2aWR1YWxf YXJ0aWNsZSZndDs8L2NvZGU+OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRh dXRoX2lmX2Nvbm5lY3RlZCZndDsKICAgICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9lZGl0X2Fy dGljbGUgbGFiZWw9IjxiPmVkaXQ8L2I+fC4uLiIgIHR5cGU9IjxiPmJ1dHRvbjwvYj58bGlu ayIgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIu Li4iIC8mZ3Q7CiZsdDsvdHhwOmNiZV9mcm9udGF1dGhfaWZfY29ubmVjdGVkJmd0OzwvY29k ZT48L3ByZT4KCjxwPjxzcGFuIGNsYXNzPSJhY2NlbnQiPldoeSB1c2UgYSBidXR0b24gcmF0 aGVyIHRoYW4gYSBsaW5rID88L3NwYW4+IEFuc3dlcjogYXMgaXQgaXMgZW5jbG9zZWQgaW4g YW4gSFRNTCBmb3JtLCBpdCBhbGxvd3MgdG8gZ28gdG8gdGhlIGVkaXQgcGFnZSB3aXRob3V0 IHNob3dpbmcgcGFyYW1ldGVycyBpbiB0aGUgVVJMLjwvcD4KCjxoMyBpZD0ibGluay1nZW5l cmF0aW9uIj5MaW5rIGdlbmVyYXRpb246ICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9saW5rIC8m Z3Q7PC9oMz4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xpbmsgbGFiZWw9 Ii4uLiIgbGluaz0iLi4uIiBbdGFyZ2V0PSI8Yj5fc2VsZjwvYj58X2JsYW5rfF9nZXQiIHdy YXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIl0g LyZndDs8L2NvZGU+PC9wcmU+Cgo8cD48Y29kZT5jbGFzczwvY29kZT4gYXBwbGllcyB0byB0 aGUgYW5jaG9yIGlmIHRoZXJlIGlzIG5vIDxjb2RlPndyYXB0YWc8L2NvZGU+IHN1cHBsaWVk LjwvcD4KPHA+PGNvZGU+X2dldDwvY29kZT4gd2lsbCBhZGQgPGNvZGU+bGluazwvY29kZT4g dG8gdGhlIGN1cnJlbnQgVVJMLCBmb3IgZXhhbXBsZTo8L3A+CjxwPlVSTCA6IGh0dHA6Ly93 d3cuZXhhbXBsZS5jb20vcGFnZQo8YnIgLz48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhf bGluayBsYWJlbD0iTG9nb3V0IiBsaW5rPSJsb2dvdXQ9MSIgdGFyZ2V0PSJfZ2V0IiAvJmd0 OzwvY29kZT4KPGJyIC8+VVJMIFJlc3VsdCA6IGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vcGFn ZT9sb2dvdXQ9MTwvcD4KCjxoMiBpZD0iY2FsbGJhY2tzIj5DYWxsYmFja3M8L2gyPgo8cD5U aGV5IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRvIGhvb2sgY2JlX2Zyb250YXV0aCdzIGNvbXBh bmlvbiwgPGEgaHJlZj0iL2NiZV9tZW1iZXJzIj5jYmVfbWVtYmVyczwvYT4gKHNlZSBkZXRh aWxzIGluIHRoZSB0YWJsZSBiZWxvdykuPC9wPgo8dGFibGUgY2xhc3M9Imxpc3QiPgogIDx0 cj4gPHRoPkV2ZW50PC90aD4gPHRoPlN0ZXA8L3RoPiA8dGg+V2hhdCBpdCBpczwvdGg+IDwv dHI+CiAgPHRyPiA8dGQ+PGNvZGU+Y2JlZnJvbnRhdXRoLnJlc2V0X3Bhc3N3b3JkPC9jb2Rl PjwvdGQ+IDx0ZD48Y29kZT5jYmVfZmFfYmVmb3JlX2xvZ2luPC9jb2RlPjwvdGQ+IDx0ZD5U cmlnZ2VyZWQgYmVmb3JlIHNob3dpbmcgbG9naW4gZm9ybSwgd2hlbiByZXNldHRpbmcgcGFz c3dvcmQgaXMgaW4gcHJvZ3Jlc3MuPGJyIC8+SWYgY2JlX21lbWJlcnMgaXMgaW5zdGFsbGVk LCBkaXNwbGF5cyBoZXJlIHRoZSAicmVzZXQgcGFzc3dvcmQiIGZvcm0sIG9yIHBlcmZvcm1z IHRoZSBhY3R1YWwgcmVzZXQgaWYgdGhlIGZvcm0gaXMgc3VjY2Vzc2Z1bGx5IGZpbGxlZCBp bi48L3RkPiA8L3RyPgogIDx0cj4gPHRkPjxjb2RlPmNiZWZyb250YXV0aC5yZXNldF9wYXNz d29yZDwvY29kZT48L3RkPiA8dGQ+PGNvZGU+Y2JlX2ZhX2FmdGVyX2xvZ2luPC9jb2RlPjwv dGQ+IDx0ZD5UcmlnZ2VyZWQgYWZ0ZXIgc2hvd2luZyBsb2dpbiBmb3JtLjxiciAvPklmIGNi ZV9tZW1iZXJzIGlzIGluc3RhbGxlZCwgZGlzcGxheXMgYSBsaW5rIHRvIHRoZSAicmVzZXQg cGFzc3dvcmQiIGZvcm0uPC90ZD4gPC90cj4KICA8dHI+IDx0ZD48Y29kZT5jYmVmcm9udGF1 dGguY2hhbmdlX3Bhc3N3b3JkPC9jb2RlPjwvdGQ+IDx0ZD48Y29kZT5jYmVfZmFfYmVmb3Jl X2xvZ291dDwvY29kZT48L3RkPiA8dGQ+VHJpZ2dlcmVkIGJlZm9yZSBzaG93aW5nIGxvZ291 dCBmb3JtLCB3aGVuIGNoYW5naW5nIHBhc3N3b3JkIGlzIGluIHByb2dyZXNzLjxiciAvPklm IGNiZV9tZW1iZXJzIGlzIGluc3RhbGxlZCwgZGlzcGxheXMgdGhlICJjaGFuZ2UgcGFzc3dv cmQiIGZvcm0sIG9yIHBlcmZvcm1zIHRoZSBhY3R1YWwgY2hhbmdlIGlmIHRoZSBmb3JtIGlz IHN1Y2Nlc3NmdWxseSBmaWxsZWQgaW4uPC90ZD4gPC90cj4KICA8dHI+IDx0ZD48Y29kZT5j YmVmcm9udGF1dGguY2hhbmdlX3Bhc3N3b3JkPC9jb2RlPjwvdGQ+IDx0ZD48Y29kZT5jYmVf ZmFfYWZ0ZXJfbG9nb3V0PC9jb2RlPjwvdGQ+IDx0ZD5UcmlnZ2VyZWQgYWZ0ZXIgc2hvd2lu ZyBsb2dvdXQgZm9ybS48YnIgLz5JZiBjYmVfbWVtYmVycyBpcyBpbnN0YWxsZWQsIGRpc3Bs YXlzIGEgbGluayB0byB0aGUgImNoYW5nZSBwYXNzd29yZCIgZm9ybS48L3RkPiA8L3RyPgo8 L3RhYmxlPgoKPGgyIGlkPSJob3ctdG8iPkhvdy10bzogaWRlYXMgYW5kIHNuaXBwZXRzPC9o Mj4KCjxoMyBpZD0iYm94LWlkZWFzIj5Gb3IgbG9naW4vbG9nb3V0IGJveDwvaDM+Cgo8cD5S ZXBsYWNlIHRoZSBzdGFuZGFyZCBtZXNzYWdlIHdpdGggc29tZXRoaW5nIGVsc2U6PC9wPgo8 cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9ib3gmZ3Q7V2VsY29tZSAhJmx0Oy90 eHA6Y2JlX2Zyb250YXV0aF9ib3gmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+T3IgZXZlbjo8L3A+ CjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2JveCZndDtHcmVldGluZ3MgJmx0 O3R4cDpjYmVfZnJvbnRhdXRoX3dob2lzIHR5cGU9IlJlYWxOYW1lIiAvJmd0OyAhJmx0Oy90 eHA6Y2JlX2Zyb250YXV0aF9ib3gmZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJpbnZpdGVz LWlkZWFzIj5Gb3IgaW52aXRlczwvaDM+CjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRh dXRoX2ludml0ZSBmb3I9ImxvZ2dlZCIgdmFsdWU9JyZsdDt0eHA6Y2JlX2Zyb250YXV0aF93 aG9pcyB0eXBlPSJSZWFsTmFtZSIgLyZndDsnIC8mZ3Q7PC9jb2RlPjwvcHJlPgo8cD5Ob3Rl OiBpZiBhIHVzZXIgaXMgY29ubmVjdGVkLCB0aGUgbG9naW4gaW52aXRlIGRvZXNuJ3Qgc2hv dyBhbmQgdGhlIGxvZ291dCBpbnZpdGUgdGFrZXMgaXRzIHBsYWNlLiBTbyB3ZSBjb3VsZCB1 c2UgPGNvZGU+Zm9yPSJsb2dvdXQiPC9jb2RlPiBhcyB3ZWxsLjwvcD4KCjxoMyBpZD0iZ3Jl ZXRpbmctbWVzc2FnZSI+QSBncmVldGluZyBtZXNzYWdlPC9oMz4KPHByZT48Y29kZT5HcmVl dGluZ3MgJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2lmX2Nvbm5lY3RlZCZndDsmbHQ7dHhwOmNi ZV9mcm9udGF1dGhfd2hvaXMgdHlwZT0iUmVhbE5hbWUiIC8mZ3Q7Jmx0O3R4cDplbHNlIC8m Z3Q7ZGVhciBVc2VyJmx0Oy90eHA6Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQmZ3Q7ICE8 L2NvZGU+PC9wcmU+Cgo8aDIgaWQ9ImFkdmFuY2VkLXVzYWdlIj5BZHZhbmNlZCB1c2FnZTwv aDI+Cgo8cCBjbGFzcz0icmVhZG1lIj5BcyBwcmV2aW91cyB0YWdzIHNob3VsZCBjb3ZlciBt YWpvcml0eSdzIG5lZWRzLCB5b3UgZG9uJ3QgaGF2ZSB0byByZWFkIHRoaXMgc2VjdGlvbiBp ZiB5b3UgYWxyZWFkeSBhY2hpZXZlZCB3aGF0IHlvdSB3YW50ZWQgdG8uPC9wPgoKPHA+VGhp cyBpcyB0aGUgcHJvZ3JhbW1lcidzIGNvcm5lcjogaXQgZGVzY3JpYmVzIGF0dHJpYnV0ZXMg Zm9yIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBw dWJsaWMgdGFnIGRpc2N1c3NlZCBhYm92ZS48L3A+Cgo8cD5IZXJlIGFyZSB0aGUgcGFyYW1l dGVycyBmb3IgdGhlIG1haW4gZnVuY3Rpb246PC9wPgo8cHJlPjxjb2RlPiZsdDt0eHA6Y2Jl X2Zyb250YXV0aCZndDsKICBXaGF0IHRvIGRvL2Rpc3BsYXkgaWYgY29ubmVjdGVkCiZsdDt0 eHA6ZWxzZSAvJmd0OwogIFdoYXQgdG8gZG8vZGlzcGxheSBpZiBub3QgY29ubmVjdGVkCiZs dDsvdHhwOmNiZV9mcm9udGF1dGgmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+Zm9ybSAoJycpIG9y IHRoaW5nID0gd2hhdCB0byBkaXNwbGF5IGlmIGxvZ2dlZCBpbgo8YnIgLz50YWdfaW52aXRl ICgnJykgPSBIVE1MIHRhZyBlbmNsb3NpbmcgdGhlIGxhYmVsLCB3aXRob3V0IGJyYWNrZXRz CjxiciAvPgo8YnIgLz5zaG93X2xvZ2luICgxKSA9IHdoZXRoZXIgdG8gZGlzcGxheSBvciBu b3QgYSBsb2dpbiBmb3JtLCBhcHBlYXJzIG9ubHkgaWYgbm90IGxvZ2dlZCBpbgo8YnIgLz4t IGxvZ2luX2ludml0ZSAoJ2xvZ2luX3RvX3RleHRwYXR0ZXJuJykgPSBpbnZpdGUgdG8gbG9n aW4KPGJyIC8+LSBsb2dpbl9mb3JtICgnJykgPSBmb3JtIHRvIGJ1aWxkIHlvdXIgb3duIEhU TUwgbG9naW4gZm9ybSB3aXRoIHR4cDpjYmVfZnJvbnRhdXRoX2xvZ2luLCBvciB0eHA6Y2Jl X2Zyb250YXV0aF9sb2duYW1lLCBjYmVfZnJvbnRhdXRoX3Bhc3N3b3JkLCBjYmVfZnJvbnRh dXRoX3N0YXksIGNiZV9mcm9udGF1dGhfcmVzZXQsIGNiZV9mcm9udGF1dGhfc3VibWl0LiBJ ZiBub3QgdXNlZCwgYSBkZWZhdWx0IEhUTUwgZm9ybSBpcyBkaXNwbGF5ZWQKPGJyIC8+LSBs b2dpbl9sYWJlbCAoJ2xvZ19pbl9idXR0b24nKSA9IGxhYmVsIGZvciB0aGUgbG9naW4gZm9y bQo8YnIgLz4tIGxvZ2luX3dpdGggKGF1dG8pID0gd2hldGhlciB0byB1c2UgdXNlcm5hbWUs IG9yIGVtYWlsLCBvciBhdXRvIGRldGVjdGlvbiBhcyB1c2VyIGxvZ29uCjxiciAvPi0gbG9n aW5fcmVkaXIgKCcnKSA9IGdvIGltbWVkaWF0ZWx5IHRvIHBhdGggYWZ0ZXIgc3VjY2Vzc2Z1 bCBsb2dpbgo8YnIgLz4tIHNob3dfc3RheSAoMCkgPSB1c2VkIGluIHRoZSBnZW5lcmljIGxv Z2luIGZvcm0sIHdoZXRoZXIgdG8gZGlzcGxheSBvciBub3QgYSBjaGVja2JveCB0byBzdGF5 IGxvZ2dlZCBpbgo8YnIgLz4tIHNob3dfcmVzZXQgKDEpID0gdXNlZCBpbiB0aGUgZ2VuZXJp YyBsb2dpbiBmb3JtLCB3aGV0aGVyIHRvIGRpc3BsYXkgb3Igbm90IGEgbGluayB0byByZXNl dCBwYXNzd29yZAo8YnIgLz4KPGJyIC8+c2hvd19sb2dvdXQgKDEpID0gd2hldGhlciB0byBk aXNwbGF5IG9yIG5vdCBhIGRlZmF1bHQgYnV0dG9uIHRvIGxvZyBvdXQsIGFwcGVhcnMgb25s eSBpZiBsb2dnZWQgaW4KPGJyIC8+LSBsb2dvdXRfaW52aXRlICgnJykgPSBpbnZpdGUgdG8g bG9nb3V0CjxiciAvPi0gbG9nb3V0X2Zvcm0gKCcnKSA9IGZvcm0gdG8gYnVpbGQgeW91ciBv d24gSFRNTCBsb2dvdXQgZm9ybSwgb3IgeW91ciBvd24gbGluawo8YnIgLz4tIGxvZ291dF9s YWJlbCAoYXMgc2V0IGluIGxhbmcgcGFjaykgPSBsYWJlbCBmb3IgdGhlIGxvZ291dCBidXR0 b24KPGJyIC8+LSBsb2dvdXRfdHlwZSAoJ2J1dHRvbicpLCBvdGhlciB0eXBlIGlzICdsaW5r Jwo8YnIgLz4tIGxvZ291dF9yZWRpciAoJycpID0gZ28gaW1tZWRpYXRlbHkgdG8gcGF0aCBh ZnRlciBsb2dvdXQKPGJyIC8+LSBzaG93X2NoYW5nZSAoMSkgPSB1c2VkIGluIHRoZSBnZW5l cmljIGxvZ291dCBmb3JtLCB3aGV0aGVyIHRvIGRpc3BsYXkgb3Igbm90IGEgbGluayB0byBj aGFuZ2UgcGFzc3dvcmQKPGJyIC8+CjxiciAvPmxpbmsgKCcnKSA9IGEgcGFnZSB0byBnbyB0 byBpZiBjb25uZWN0ZWQKPGJyIC8+LSBsaW5rbGFiZWwgKCcnKSA9IHRleHQgYW5jaG9yIGZv ciBsaW5rCjxiciAvPi0gdGFyZ2V0IChfc2VsZikgPSBfc2VsZiBfYmxhbmsgb3IgX2dldCwg d2hldGhlciB0byBvcGVuIHRoZSBsaW5rIGluIHRoZSBzYW1lIHdpbmRvdyAob3IgdGFiKSwg b3IgaW4gYSBuZXcgb25lLCBvciB0byBnZW5lcmF0ZSBhbiBVUkwgd2l0aCBhZGRyZXNzIGxp bmsgYXMgR0VUIHBhcmFtZXRlci4gV29ya3Mgb25seSB3aXRoIGh5cGVybGluayAobm90IGxv Z2luX3JlZGlyLCBub3QgbG9nb3V0X3JlZGlyKQo8YnIgLz4KPGJyIC8+Q2hlY2tpbmcgdXNl cnMgYW5kIHByaXZpbGVnZXMgOgo8YnIgLz4tIG5hbWUgKCcnKSA9IGxpc3Qgb2YgbmFtZXMg dG8gY2hlY2sKPGJyIC8+LSBsZXZlbCAoJycpID0gbGlzdCBvZiBwcml2aWxlZ2UgbGV2ZWxz IHRvIGNoZWNrCjxiciAvPgo8YnIgLz5QcmVzZW50YXRpb25hbCBhdHRyaWJ1dGVzIDoKPGJy IC8+LSB3cmFwdGFnICgnJyksIGNsYXNzICgnJykKPGJyIC8+CjxiciAvPmluaXQgPSBTcGVj aWFsIGF0dHJpYnV0ZSBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgYW5kIGRvY3VtZW50ZWQgb25s eSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIGtub3cgOikKIDxiciAvPiBXaGV0aGVyIHRvIHNl dCAoJzEnKSBvciBnZXQgKCcwJykgZ2xvYmFsIHNldHRpbmdzIGZvciByZWRpcmVjdGlvbnMg KGxvZ2luX3JlZGlyLCBsb2dvdXRfcmVkaXIpLCBpbnZpdGVzIChsb2dpbl9pbnZpdGUsIGxv Z291dF9pbnZpdGUsIHRhZ19pbnZpdGUpLCBsYWJlbHMgKGxvZ2luX2xhYmVsLCBsb2dvdXRf bGFiZWwpLCBsb2dpbiB0eXBlIChsb2dpbl93aXRoKSBvciB1c2VyJ3MgaW5mb3JtYXRpb25z LiBJbW1lZGlhdGVseSByZXR1cm5zIGFuZCBkb2Vzbid0IGRpc3BsYXkgYW55dGhpbmcuCiA8 YnIgLz4gdmFsdWUgPSBzZXR0aW5nIHRvIHNldCBvciBnZXQsIHN0cmluZyBvciBhcnJheS4K PC9wPgoKPGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+Cjx1bD4KICA8bGk+MjAg Tm92IDE1IC0gdjAuOS43IC0gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNv bS92aWV3dG9waWMucGhwP3BpZD0yOTY3MjAjcDI5NjcyMCI+Rml4IHRoaXM8L2E+PC9saT4K ICA8bGk+MDcgQXByIDE0IC0gdjAuOS42IC0gRXJyb3Igd2hlbiBwYXNzaW5nIHByZXNlbnRh dGlvbmFsIGF0dHJpYnV0ZXMgZnJvbSBjYmVfZnJvbnRhdXRoX2VkaXRfYXJ0aWNsZSB0byBj YmVfZnJvbnRhdXRoX2xpbms8L2xpPgogIDxsaT4wNCBBcHIgMTQgLSB2MC45LjUgLSBNaXNz aW5nIGxhc3QgYWNjZXNzIHN0b3JhZ2U8L2xpPgogIDxsaT4yNyBNYXIgMTMgLSB2MC45LjQK ICA8YnIgLz5NaXNzaW5nIGluaXRpYWxpemF0aW9uIGZvciBjYmVfZnJvbnRhdXRoX3dob2lz CiAgPGJyIC8+RXJyb3IgbWVzc2FnZSB3aGVuIGxvZ2luIGZhaWxzCiAgPGJyIC8+TG9jYWwg bGFuZ3VhZ2Ugc3RyaW5ncwogIDwvbGk+CiAgPGxpPjIyIE1hciAxMiAtIHYwLjkuMyAtIERv YyB0eXBvIGZvciBjYmVfZnJvbnRhdXRoX2ludml0ZTwvbGk+CiAgPGxpPj8/ID8/PyAxMiAt IHYwLjkuMiAtID8/PC9saT4KICA8bGk+MjIgTWFyIDEyIC0gdjAuOS4xIC0gZml4ZWQgbWlz c2luZyBhdHRyaWJ1dGVzIChzaG93X2xvZ2luIGFuZCBzaG93X2NoYW5nZSkgZm9yIGNiZV9m cm9udGF1dGhfYm94PC9saT4KICA8bGk+MjEgTWFyIDEyIC0gdiAwLjkgLSBDYWxsYmFjayBo b29rczogYWJpbGl0eSB0byBhc2sgZm9yIHBhc3N3b3JkIHJlc2V0IGlmIG5vdCBjb25uZWN0 ZWQsIGZvciBwYXNzd29yZCBjaGFuZ2UgaWYgY29ubmVjdGVkPC9saT4KICA8bGk+MTAgSmFu IDEyIC0gdiAwLjggLSBJbnRyb2R1Y2VzICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dpbndp dGggLyZndDssIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3Rv cGljLnBocD9waWQ9MjU2NjMyI3AyNTY2MzIiPmlkZWEgY29tZXMgZnJvbSBhbm90aGVyIGRl bWFuZCBpbiB0aGUgdGV4dHBhdHRlcm4gZm9ydW08L2E+LgogIDwvbGk+CiAgPGxpPjA1IEph biAxMiAtIHYwLjcuMSAtIERvY3VtZW50YXRpb24gYWRkZW5kYTwvbGk+CiAgPGxpPjA2IEF1 ZyAxMSAtIHYwLjctYmV0YQogIDxiciAvPiAqIEludHJvZHVjZXMgJmx0O3R4cDpjYmVfZnJv bnRhdXRoX2VkaXRfYXJ0aWNsZSAvJmd0CiAgPGJyIC8+ICogQ1NSRiBwcm90ZWN0aW9uIHJl YWR5CiAgPGJyIC8+ICogRG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudHMKICA8L2xpPgogIDxs aT4yOSBKdWwgMTEgLSB2MC42LWJldGEKICA8YnIgLz4gKiBPcHRpbWl6YXRpb25zIHRvIGF2 b2lkIG11bHRpcGxlIGNhbGxzIHRvIGRhdGFiYXNlIHdoZW4gcmV0cmlldmluZyB1c2VyJ3Mg aW5mb3JtYXRpb25zCiAgPGJyIC8+ICogQWRkZWQgbmFtZSBhbmQgcHJpdmlsZWdlIGNvbnRy b2xzIMOgIGxhIDxhIGhyZWY9Imh0dHA6Ly92YW5tZWxpY2suY29tL3R4cC8iPiZsdDt0eHA6 cnZtX2lmX3ByaXZpbGVnZWQgLyZndDs8L2E+CiAgPGJyIC8+ICogTWlub3IgY2hhbmdlcyB0 byBkb2N1bWVudGF0aW9uCiAgPC9saT4KICA8bGk+MjcgSnVsIDExIC0gdjAuNS1iZXRhLSBG aXJzdCBwdWJsaWMgYmV0YSByZWxlYXNlPC9saT4KICA8bGk+MjYgSnVsIDExIC0gdjAuNC1i ZXRhLSBSZXN0cmljdGVkIGJldGEgcmVsZWFzZTwvbGk+CiAgPGxpPjI0IEp1bCAxMSAtIHYw LjMtZGV2IC0gUmVzdHJpY3RlZCBkZXZlbG9wbWVudCByZWxlYXNlPC9saT4KICA8bGk+MjMg SnVsIDExIC0gdjAuMi1kZXYgLSBSZXN0cmljdGVkIGRldmVsb3BtZW50IHJlbGVhc2U8L2xp PgogIDxsaT4yMiBKdWwgMTEgLSB2MC4xLWRldiAtIFJlc3RyaWN0ZWQgZGV2ZWxvcG1lbnQg cmVsZWFzZTwvbGk+CjwvdWw+CjwvZGl2Pgo8IS0tICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoq KiAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI2NiZS1wbHVnaW4taGVscCAucmVhZG1l IHsKICBjb2xvcjogcmVkOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CiNjYmUtcGx1Z2luLWhl bHAgLmFjY2VudCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KI2NiZS1wbHVnaW4taGVscCAu bGlzdCB0aHsKCXRleHQtYWxpZ246bGVmdDsKCWNvbG9yOiNmZmY7CgliYWNrZ3JvdW5kOiM1 NTU7CglwYWRkaW5nOjZweCAxNnB4IDZweCA0cHg7Cglib3JkZXItcmlnaHQ6MXB4IHNvbGlk ICM5OTk7Cglmb250LXdlaWdodDpub3JtYWw7Cn0KI2NiZS1wbHVnaW4taGVscCAubGlzdCB0 aCBhewoJY29sb3I6I2ZmZjsKCWRpc3BsYXk6YmxvY2s7Cn0KI2NiZS1wbHVnaW4taGVscCAu bGlzdCB0aCBoMnsKCW1hcmdpbjowOwoJZm9udC1zaXplOjExcHg7Cn0KI2NiZS1wbHVnaW4t aGVscCAubGlzdCB0ZHsKCXBhZGRpbmc6NnB4IDRweDsKfQo8L3N0eWxlPgo8IS0tICoqKiBF TkQgUExVR0lOIENTUyAqKiogLS0+CiI7czo0OiJjb2RlIjtzOjMzODY2OiIvKg0KKiogY2Jl X2Zyb250YXV0aA0KKiogQ2xpZW50LXNpZGUgdGV4dHBhdHRlcm4gcGx1Z2luDQoqKiBDb25u ZWN0IChhbmQgZGlzY29ubmVjdCkgZnJvbSBmcm9udGVuZCB0byBiYWNrZW5kDQoqKiBFc3Rh Ymxpc2hlcyBiaWRpcmVjdGlvbmFsIGxpbmtzIGJldHdlZW4gYXJ0aWNsZSBkaXNwbGF5IGFu ZCBlZGl0aW9uDQoqKiBDbGFpcmUgQnJpb25lIC0gaHR0cDovL3d3dy5jbGFpcmVicmlvbmUu Y29tLw0KKioNCioqIDAuMS1kZXYgLSAyMiBKdWwgMjAxMSAtIFJlc3RyaWN0ZWQgZGV2ZWxv cG1lbnQgcmVsZWFzZQ0KKiogMC4yLWRldiAtIDIzIEp1bCAyMDExIC0gUmVzdHJpY3RlZCBk ZXZlbG9wbWVudCByZWxlYXNlDQoqKiAwLjMtZGV2IC0gMjQgSnVsIDIwMTEgLSBSZXN0cmlj dGVkIGRldmVsb3BtZW50IHJlbGVhc2UNCioqIDAuNC1iZXRhLSAyNiBKdWwgMjAxMSAtIFJl c3RyaWN0ZWQgYmV0YSByZWxlYXNlDQoqKiAwLjUtYmV0YS0gMjcgSnVsIDIwMTEgLSBGaXJz dCBwdWJsaWMgYmV0YSByZWxlYXNlDQoqKiAwLjYtYmV0YS0gMjkgSnVsIDIwMTEgLSBPcHRp bWl6YXRpb25zIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIGRhdGFiYXNlDQoqKiAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcmV0cmlldmluZyB1c2VyJ3MgaW5mb3JtYXRp b25zDQoqKiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBuYW1lIGFuZCBwcml2aWxl Z2UgY29udHJvbHMNCioqICAgICAgICAgICAgICAgICAgICAgICAgICAgw6AgbGEgPHR4cDpy dm1faWZfcHJpdmlsZWdlZCAvPiAoaHR0cDovL3Zhbm1lbGljay5jb20vdHhwLykNCioqICAg ICAgICAgICAgICAgICAgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbg0K KiogMC43LWJldGEtIDA2IEF1ZyAyMDExIC0gSW50cm9kdWNlcyA8dHhwOmNiZV9mcm9udGF1 dGhfZWRpdF9hcnRpY2xlIC8+DQoqKiAgICAgICAgICAgICAgICAgICAgICAgICBDU1JGIHBy b3RlY3Rpb24gcmVhZHkNCioqICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRp b24gaW1wcm92ZW1lbnRzDQoqKiAwLjcuMSAgIC0gMDUgSmFuIDIwMTIgLSBEb2N1bWVudGF0 aW9uIGFkZGVuZGENCioqIDAuOCAgICAgLSAxMCBKYW4gMjAxMiAtIEludHJvZHVjZXMgPHR4 cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aCAvPg0KKiogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9 MjU2NjMyI3AyNTY2MzINCioqICAgICAgICAgICAgICAgICAgICAgICAgIHR4cDpjYmVfZnJv bnRhdXRoX2xvZ2lud2l0aCAoKmF1dG8qfHVzZXJuYW1lfGVtYWlsKQ0KKiogMC45ICAgICAt IDIxIE1hciAyMDEyIC0gQWRkZWQgY2FsbGJhY2sgaG9va3MgKHJlc2V0IGFuZCBjaGFuZ2Ug cGFzc3dvcmQpDQoqKiAwLjkuMSAgIC0gMjIgTWFyIDIwMTIgLSBGaXhlZCBtaXNzaW5nIGF0 dHJpYnV0ZXMgKHNob3dfbG9naW4gYW5kIHNob3dfY2hhbmdlKSBmb3IgY2JlX2Zyb250YXV0 aF9ib3gNCioqIDAuOS4yICAgLSA/PyA/Pz8gMjAxMiAtID8/DQoqKiAwLjkuMyAgIC0gMjIg QXVnIDIwMTIgLSBEb2MgdHlwbyBmb3IgY2JlX2Zyb250YXV0aF9pbnZpdGUNCioqIDAuOS40 ICAgLSAyNyBNYXIgMjAxMyAtIE1pc3NpbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNiZV9mcm9u dGF1dGhfd2hvaXMNCioqICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yIG1lc3NhZ2Ug d2hlbiBsb2dpbiBmYWlscw0KKiogICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwgbGFu Z3VhZ2Ugc3RyaW5ncw0KKiogMC45LjUgICAtIDA0IEFwciAyMDE0IC0gTWlzc2luZyBsYXN0 IGFjY2VzcyBzdG9yYWdlDQoqKiAwLjkuNiAgIC0gMDcgQXByIDIwMTQgLSBFcnJvciB3aGVu IHBhc3NpbmcgcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBmcm9tIGNiZV9mcm9udGF1dGhf ZWRpdF9hcnRpY2xlIHRvIGNiZV9mcm9udGF1dGhfbGluaw0KKiogMC45LjcgICAtIDIwIE5v diAyMDE1IC0gZml4OiBodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5w aHA/cGlkPTI5NjcyMCNwMjk2NzIwDQoqKg0KKiogVE9ETw0KKiogLSBicmVhaywgYnJlYWtj bGFzcyAtPiBpbiBwcm9ncmVzcywgZnVsbCB0ZXN0cyBuZWVkZWQNCioqIC0gZW5oZW5jZSBl cnJvciBtZXNzYWdlcyA/DQoqKg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKioNCiAqKiBM b2NhbCBsYW5ndWFnZSBzdHJpbmdzLCBwb3NzaWJsZSBjdXN0b21pc2F0aW9uIGhlcmUNCiAq Kg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lw0KZnVuY3Rpb24gX2NiZV9mYV9sYW5nKCkNCnsNCiAgICByZXR1cm4oIGFycmF5KCAnbG9n aW5fZmFpbGVkJyAgICAgICAgID0+ICJMb2dpbiBmYWlsZWQiDQogICAgICAgICAgICAgICAg ICwgJ2xvZ2luX3RvX3RleHRwYXR0ZXJuJyA9PiBnVHh0KCAnbG9naW5fdG9fdGV4dHBhdHRl cm4nICkNCiAgICAgICAgICAgICAgICAgLCAnbmFtZScgICAgICAgICAgICAgICAgID0+IGdU eHQoICduYW1lJyApDQogICAgICAgICAgICAgICAgICwgJ3Bhc3N3b3JkJyAgICAgICAgICAg ICA9PiBnVHh0KCAncGFzc3dvcmQnICkNCiAgICAgICAgICAgICAgICAgLCAnbG9nX2luX2J1 dHRvbicgICAgICAgID0+IGdUeHQoICdsb2dfaW5fYnV0dG9uJyApDQogICAgICAgICAgICAg ICAgICwgJ3N0YXlfbG9nZ2VkX2luJyAgICAgICA9PiBnVHh0KCAnc3RheV9sb2dnZWRfaW4n ICkNCiAgICAgICAgICAgICAgICAgLCAnbG9nb3V0JyAgICAgICAgICAgICAgID0+IGdUeHQo ICdsb2dvdXQnICkNCiAgICAgICAgICAgICAgICAgLCAnZWRpdCcgICAgICAgICAgICAgICAg ID0+IGdUeHQoICdlZGl0JyApDQogICAgICAgICAgICAgICAgICwgJ2NoYW5nZV9wYXNzd29y ZCcgICAgICA9PiBnVHh0KCAnY2hhbmdlX3Bhc3N3b3JkJyApDQogICAgICAgICAgICAgICAg ICwgJ3Bhc3N3b3JkX3Jlc2V0JyAgICAgICA9PiBnVHh0KCAncGFzc3dvcmRfcmVzZXQnICkg DQogICAgICAgICAgICAgICAgICkNCiAgICAgICAgICApIDsNCn0NCi8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoqDQogKiogRG9uJ3Qg ZWRpdCBmdXJ0aGVyDQogKioNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqDQogKioNCiAqKiBBdmFpbGFibGUgdGFncw0KICoqDQogKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCi8q ID09IFNob3J0Y3V0cyBmb3IgY2JlX2Zyb250YXV0aCgpID09ICovDQoNCi8vIC0tIEdsb2Jh bCBpbml0IGZvciByZWRpcmVjdGlvbiBhZnRlciBsb2dpbiBhbmQvb3IgbG9nb3V0DQovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX3JlZGlyZWN0KCAkYXR0cyAp DQp7DQogICAgcmV0dXJuKCBfY2JlX2ZhX2luaXQoICRhdHRzLCAncmVkaXInICkgKSA7DQp9 DQoNCi8vIC0tIEdsb2JhbCBpbml0IGZvciBsb2dpbi9sb2dvdXQgaW52aXRlcw0KLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9pbnZpdGUoICRhdHRzICkNCnsN CiAgICByZXR1cm4oIF9jYmVfZmFfaW5pdCggJGF0dHMsICdpbnZpdGUnICkgKSA7DQp9DQoN Ci8vIC0tIEdsb2JhbCBpbml0IGZvciBsb2dpbi9sb2dvdXQgYnV0dG9ucy9saW5rIGxhYmVs cw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9sYWJlbCggJGF0 dHMgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pbml0KCAkYXR0cywgJ2xhYmVsJyApICkg Ow0KfQ0KDQovLyAtLSBHbG9iYWwgaW5pdCBmb3IgbG9naW4gd2l0aCB1c2VyIG5hbWUsIGVt YWlsLCBvciBhdXRvbWF0aWMgZGV0ZWN0aW9uDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aCggJGF0dHMgKQ0Kew0KICAgIHJldHVybiggX2Ni ZV9mYV9pbml0KCAkYXR0cywgJ3dpdGgnICkgKSA7DQp9DQoNCi8vIC0tIExvZ2luIC8gTG9n b3V0IGJveA0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9ib3go ICRhdHRzLCAkdGhpbmcgPSAnJyApDQp7DQogICAgJHB1YmxpY19hdHRzID0gbEF0dHMoIGFy cmF5KCAnbG9naW5faW52aXRlJyAgPT4gX2NiZV9mYV9nVHh0KCAnbG9naW5fdG9fdGV4dHBh dHRlcm4nICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdsb2dvdXRfaW52 aXRlJyA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfY2hh bmdlJyAgID0+ICcxJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3df cmVzZXQnICAgID0+ICcxJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Rh Z19pbnZpdGUnICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAn bG9naW5fbGFiZWwnICAgPT4gX2NiZV9mYV9nVHh0KCAnbG9nX2luX2J1dHRvbicgKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ291dF9sYWJlbCcgID0+IF9jYmVf ZmFfZ1R4dCggJ2xvZ291dCcgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg J2xvZ291dF90eXBlJyAgID0+ICdidXR0b24nDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLCAndGFnX2Vycm9yJyAgICAgPT4gJ3NwYW4nDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLCAnY2xhc3NfZXJyb3InICAgPT4gJ2NiZV9mYV9lcnJvcicNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAg ICArIF9jYmVfZmFfZm9ybWF0KCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAsICRhdHRz ICkgOw0KDQogICAgcmV0dXJuKCBjYmVfZnJvbnRhdXRoKCAkcHVibGljX2F0dHMNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgLCAkdGhpbmcgPyAkdGhpbmcgOiAnPHA+PHR4cDp0ZXh0 IGl0ZW09ImxvZ2dlZF9pbl9hcyIgLz4gPHR4cDpjYmVfZnJvbnRhdXRoX3dob2lzIHdyYXB0 YWc9InNwYW4iIGNsYXNzPSJ1c2VyIi8+PC9wPicNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKSApIDsNCg0KfQ0KDQovLyAtLSBTdGFuZGFsb25lIGxvZ2luIGZvcm0NCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfbG9naW4oICRhdHRzLCAkdGhpbmcg PSAnJyApDQp7DQogICAgcmV0dXJuKCBfY2JlX2ZhX2lub3V0X3Byb2Nlc3MoICdsb2dpbics ICRhdHRzLCAkdGhpbmcgKSApIDsNCn0NCg0KLy8gLS0gU3RhbmRhbG9uZSBsb2dvdXQgZm9y bSAvIGxpbmsNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfbG9n b3V0KCAkYXR0cywgJHRoaW5nID0gJycgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pbm91 dF9wcm9jZXNzKCAnbG9nb3V0JywgJGF0dHMsICR0aGluZyApICkgOw0KfQ0KDQovLyAtLSBQ cm90ZWN0IHBhcnRzIGZyb20gbm9uLWNvbm5lY3RlZCB2aWV3ZXJzDQovLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX3Byb3RlY3QoICRhdHRzLCAkdGhpbmcgKQ0K ew0KICAgICRwdWJsaWNfYXR0cyA9IGxBdHRzKCBhcnJheSggJ2xpbmsnICAgICAgPT4gJycN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdsaW5rbGFiZWwnID0+ICcnDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAndGFyZ2V0JyAgICA9PiAnX3NlbGYn DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbmFtZScgICAgICA9PiAnJw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xldmVsJyAgICAgPT4gJycNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAg ICAgKyBfY2JlX2ZhX2Zvcm1hdCgpDQogICAgICAgICAgICAgICAgICAgICAgICAgLCAkYXR0 cyApIDsNCg0KICAgIGlmKCAkcHVibGljX2F0dHNbJ3RhcmdldCddID09ICdfZ2V0JyApDQog ICAgICAgICRwdWJsaWNfYXR0c1sndGFyZ2V0J10gPSAnX3NlbGYnIDsNCg0KICAgIHJldHVy biggY2JlX2Zyb250YXV0aCggYXJyYXkoICdsb2dpbl9pbnZpdGUnID0+ICcnICwgJ2xvZ291 dF9pbnZpdGUnID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3No b3dfbG9naW4nICAgPT4gJzAnLCAnc2hvd19sb2dvdXQnICAgPT4gJzAnDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfcmVzZXQnICAgPT4gJzAnLCAnc2hvd19j aGFuZ2UnICAgPT4gJzAnICkgKyAkcHVibGljX2F0dHMNCiAgICAgICAgICAgICAgICAgICAg ICAgICAsICR0aGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICkgKSA7DQp9DQpmdW5j dGlvbiBjYmVfZnJvbnRhdXRoX2lmX2xvZ2dlZCggJGF0dHMsICR0aGluZyApDQp7DQogICAg cmV0dXJuKCBjYmVfZnJvbnRhdXRoX3Byb3RlY3QoICRhdHRzLCAkdGhpbmcgKSApIDsNCn0N CmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfaWZfY29ubmVjdGVkKCAkYXR0cywgJHRoaW5nICkN CnsNCiAgICByZXR1cm4oIGNiZV9mcm9udGF1dGhfcHJvdGVjdCggJGF0dHMsICR0aGluZyAp ICkgOw0KfQ0KDQovKiA9PSBFbGVtZW50cyA9PSAqLw0KDQovLyAtLSBHZW5lcmF0ZXMgaW5w dXQgZmllbGQgZm9yIG5hbWUNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9u dGF1dGhfbG9nbmFtZSggJGF0dHMsICRkZWZ2YWx1ZT1udWxsICkNCnsNCiAgICByZXR1cm4o IF9jYmVfZmFfaWRlbnRpdHkoICduYW1lJywgJGF0dHMsICRkZWZ2YWx1ZSApICkgOw0KfQ0K DQovLyAtLSBHZW5lcmF0ZXMgaW5wdXQgZmllbGQgZm9yIHBhc3N3b3JkDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX3Bhc3N3b3JkKCAkYXR0cywgJGRlZnZh bHVlPW51bGwgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pZGVudGl0eSggJ3Bhc3N3b3Jk JywgJGF0dHMsICRkZWZ2YWx1ZSApICkgOw0KfQ0KDQovLyAtLSBHZW5lcmF0ZXMgY2hlY2ti b3ggZm9yIHN0YXkgKGNvbm5lY3RlZCBvbiB0aGlzIGJyb3dzZXIpDQovLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX3N0YXkoICRhdHRzICkNCnsNCiAgICBleHRy YWN0KCBsQXR0cyggYXJyYXkgKCAnbGFiZWwnID0+IF9jYmVfZmFfZ1R4dCggJ3N0YXlfbG9n Z2VkX2luJyApDQogICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAg ICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0KICAg ICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICRvdXQgID0gY2hlY2ti b3goJ3Bfc3RheScsIDEsIGNzKCd0eHBfbG9naW4nKSwgJycsICdzdGF5JykgOw0KICAgICRv dXQgLj0gJzxsYWJlbCBmb3I9InN0YXkiPicuJGxhYmVsLic8L2xhYmVsPicgOw0KICAgIHJl dHVybiggZG9UYWcoICRvdXQsICR3cmFwdGFnLCAkY2xhc3MgKSApIDsNCn0NCg0KLy8gLS0g R2VuZXJhdGVzIHN1Ym1pdCBidXR0b24NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNi ZV9mcm9udGF1dGhfc3VibWl0KCAkYXR0cyApDQp7DQogICAgJHB1YmxpY19hdHRzID0gbEF0 dHMoIGFycmF5ICggJ2xhYmVsJyA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAsICd0eXBlJyAgPT4gJ2xvZ2luJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICArIF9jYmVfZmFfZm9ybWF0KCkNCiAg ICAgICAgICAgICAgICAgICAgICAgICwgJGF0dHMNCiAgICAgICAgICAgICAgICAgICAgICAg ICkgOw0KDQogICAgcmV0dXJuKCBfY2JlX2ZhX2J1dHRvbiggJHB1YmxpY19hdHRzICkgKSA7 DQp9DQoNCi8vIC0tIERpc3BsYXlzIGNvbm5lY3RlZCB1c2VyJ3MgaW5mb3JtYXRpb25zDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX3dob2lzKCAkYXR0cyAp DQp7DQogICAgZXh0cmFjdCggbEF0dHMoIGFycmF5ICggJ3R5cGUnICAgICAgID0+ICduYW1l Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAsICdmb3JtYXQnICAgICA9PiAnJw0KICAg ICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICsgX2NiZV9m YV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0KICAgICAgICAgICAgICAg ICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICR0eXBlcyA9IGRvX2xpc3QoICR0eXBlICkg Ow0KICAgICR3aG9pcyA9IGNiZV9mcm9udGF1dGgoIGFycmF5KCAnaW5pdCcgPT4gJzAnLCAn dmFsdWUnID0+ICR0eXBlcyApICkgOw0KDQogICAgaWYoIGlzc2V0KCAkd2hvaXNbJ2xhc3Rf YWNjZXNzJ10gKSApDQogICAgew0KICAgICAgICBnbG9iYWwgJGRhdGVmb3JtYXQgOw0KICAg ICAgICAkd2hvaXNbJ2xhc3RfYWNjZXNzJ10gPSBzYWZlX3N0cmZ0aW1lKCAkZm9ybWF0ID8g JGZvcm1hdCA6ICRkYXRlZm9ybWF0LCBzdHJ0b3RpbWUoICR3aG9pc1snbGFzdF9hY2Nlc3Mn XSApICkgOw0KICAgIH0NCg0KICAgIHJldHVybiggZG9XcmFwKCAkd2hvaXMsICR3cmFwdGFn LCAkYnJlYWssICRjbGFzcywgJGJyZWFrY2xhc3MgKSApIDsNCn0NCg0KLyogPT0gT2ZmLXRv cGljLCBidXQgdXNlZnVsID09ICovDQoNCi8vIC0tIEdlbmVyYXRlcyBhIGxpbmssIG5vcm1h bCBvciB3aXRoIGEgR0VUIHBhcmFtZXRlcg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g Y2JlX2Zyb250YXV0aF9saW5rKCAkYXR0cyApDQp7ICAgLy8gJGNsYXNzIGFwcGxpZXMgdG8g YW5jaG9yIGlmIG5vICR3cmFwdGFnIHN1cHBsaWVkDQogICAgZXh0cmFjdCggbEF0dHMoIGFy cmF5ICggJ2xhYmVsJyAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbGlu aycgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAsICd0YXJnZXQnID0+ICdf c2VsZicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAg KyBfY2JlX2ZhX2Zvcm1hdCgpDQogICAgICAgICAgICAgICAgICAsICRhdHRzDQogICAgICAg ICAgICAgICAgICApDQogICAgICAgICAgICkgOw0KDQogICAgJGxpbmsgPSBkb1N0cmlwVGFn cyggJGxpbmsgKSA7DQogICAgJG91dCA9IF9jYmVfZmFfbGluayggY29tcGFjdCggJ2xpbmsn LCAndGFyZ2V0JyApICkgOw0KICAgICRvdXQgPSBocmVmKCAkbGFiZWwsICRvdXQNCiAgICAg ICAgICAgICAgICwgKCgkdGFyZ2V0ICE9PSAnX2dldCcpICA/ICcgdGFyZ2V0PSInLiR0YXJn ZXQuJyInIDogJycpDQogICAgICAgICAgICAgICAuICgoISR3cmFwdGFnICYmICRjbGFzcykg PyAnIGNsYXNzPSInLiRjbGFzcy4nIicgICA6ICcnKSApIDsNCiAgICByZXR1cm4oIGRvVGFn KCAkb3V0LCAkd3JhcHRhZywgJGNsYXNzICkgKSA7DQp9DQoNCi8vIC0tIFJldHVybnMgcGF0 aCB0byB0ZXh0cGF0dGVybiBiYWNrZW5kDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBj YmVfZnJvbnRhdXRoX2JhY2tlbmQoKQ0Kew0KLy8gICAgICAgICAgICAuIHN1YnN0cihzdHJy Y2hyKHR4cGF0aCwgIi8iKSwgMSkNCiAgICByZXR1cm4oIHByZWdfcmVwbGFjZSgnfC8vJHwn LCcvJywgcmh1LicvJykNCiAgICAgICAgICAgIC4gc3Vic3RyKHN0cnJjaHIodHhwYXRoLCBE UyksIDEpDQogICAgICAgICAgICAuICcvaW5kZXgucGhwJw0KICAgICAgICAgICApIDsNCn0N Cg0KLy8gLS0gUmV0dXJucyBidXR0b24gKHN0YW5kYWxvbmUpIG9yIGxpbmsgdG8gZWRpdCBj dXJyZW50IGFydGljbGUNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1 dGhfZWRpdF9hcnRpY2xlKCAkYXR0cyApDQp7DQogICAgZ2xvYmFsICR0aGlzYXJ0aWNsZSA7 DQogICAgYXNzZXJ0X2FydGljbGUoKSA7DQoNCiAgICBleHRyYWN0KCBsQXR0cyggYXJyYXkg KCAnbGFiZWwnID0+IF9jYmVfZmFfZ1R4dCggJ2VkaXQnICkNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgLCAndHlwZScgID0+ICdidXR0b24nDQogICAgICAgICAgICAgICAgICAgICAg ICAgICkNCiAgICAgICAgICAgICAgICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAg ICAgICAgICAgLCAkYXR0cw0KICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsN Cg0KICAgICRwYXRoX3BhcnRzID0gYXJyYXkoICdldmVudCcgICAgICA9PiAnYXJ0aWNsZScN CiAgICAgICAgICAgICAgICAgICAgICAgLCAnc3RlcCcgICAgICAgPT4gJ2VkaXQnDQogICAg ICAgICAgICAgICAgICAgICAgICwgJ0lEJyAgICAgICAgID0+ICR0aGlzYXJ0aWNsZVsndGhp c2lkJ10NCiAgICAgICAgICAgICAgICAgICAgICAgKSA7DQoNCiAgICBpZiggJHR5cGUgPT0g J2J1dHRvbicgKQ0KICAgIHsNCiAgICAgICAgJG91dCA9IGFycmF5KCkgOw0KDQogICAgICAg IGZvcmVhY2goICRwYXRoX3BhcnRzIGFzICRwYXJ0ID0+ICR2YWx1ZSApDQogICAgICAgICAg ICAkb3V0W10gPSBoSW5wdXQoICRwYXJ0LCAkdmFsdWUgKSA7DQoNCiAgICAgICAgJG91dFtd ID0gY2JlX2Zyb250YXV0aF9zdWJtaXQoIGFycmF5KCAnbGFiZWwnID0+ICRsYWJlbCwgJ3R5 cGUnID0+ICcnLCAnY2xhc3MnID0+J3B1Ymxpc2gnICkgKSA7DQoNCiAgICAgICAgIHJldHVy biggX2NiZV9mYV9mb3JtKCBhcnJheSggJ3N0YXRlbWVudHMnID0+IGpvaW4oIG4sICRvdXQg KSApICkgKSA7DQogICAgfQ0KICAgIGVsc2VpZiggJHR5cGUgPT0gJ2xpbmsnICkNCiAgICB7 DQogICAgICAgICRwYXRoX3BhcnRzWyAnX3R4cF90b2tlbicgXSA9IGZvcm1fdG9rZW4oKSA7 DQogICAgICAgIGFycmF5X3dhbGsoICRwYXRoX3BhcnRzLCBjcmVhdGVfZnVuY3Rpb24oICcm JHYsICRrJywgJyR2ID0gJGsuIj0iLiR2IDsnICkgKSA7DQogICAgICAgICRsaW5rID0gY2Jl X2Zyb250YXV0aF9iYWNrZW5kKCkgLiAnPycgLiBqb2luKCAnJicsICRwYXRoX3BhcnRzICkg Ow0KDQogICAgICAgIHJldHVybiggY2JlX2Zyb250YXV0aF9saW5rKCBjb21wYWN0KCAnbGlu aycsICdsYWJlbCcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsIGFycmF5X2tleXMoIF9jYmVfZmFfZm9ybWF0KCkgKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApDQogICAgICAgICAgICAgICkgOw0KICAgIH0NCiAgICBlbHNlDQogICAgICAg IHJldHVybiA7DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KICoqDQogKiogVXRpbGl0aWVzIChraW5kYSBwcml2YXRlIGZ1bmN0 aW9ucykNCiAqKg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLw0KDQovLyAtLSBHZXRzIGFuZCByZXR1cm5zIGxvY2FsIGxhbmcgc3RyaW5n cyAodHhwIGFkbWluICsgcGx1Z2luIHNwZWNpZmljcykNCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1 bmN0aW9uIF9jYmVfZmFfZ1R4dCggJHRleHQsICRhdHRzID0gYXJyYXkoKSApDQp7DQogICAg c3RhdGljICRhVGV4dHMgPSBhcnJheSgpIDsNCiAgICBpZiggISAkYVRleHRzICkNCiAgICAg ICAgJGFUZXh0cyA9IF9jYmVfZmFfbGFuZygpIDsNCg0KICAgIHJldHVybiggaXNzZXQoICRh VGV4dHNbICR0ZXh0IF0gKSA/IHN0cnRyKCAkYVRleHRzWyAkdGV4dCBdLCAkYXR0cyApIDog Z1R4dCggJHRleHQgKSApIDsNCn0NCg0KLy8gLS0gQ29tbW9uIHByZXNlbnRhdGlvbmFsIGF0 dHJpYnV0ZXMNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfZm9ybWF0KCkN CnsNCiAgICByZXR1cm4oIGFycmF5KCAnd3JhcHRhZycgICAgPT4gJycNCiAgICAgICAgICAg ICAgICAgLCAnY2xhc3MnICAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgLCAnYnJlYWsn ICAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgLCAnYnJlYWtjbGFzcycgPT4gJycNCiAg ICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICkgOw0KfQ0KDQovLyAtLSBHbG9iYWwgaW5p dGlhbGlzYXRpb25zIChyZWRpcmVjdCwgaW52aXRlLCBsYWJlbCwgbG9naW53aXRoKQ0KLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9pbml0KCAkYXR0cywgJHR5cGUgKQ0K ew0KICAgIGV4dHJhY3QoIGxBdHRzKCBhcnJheSAoICdmb3InID0+ICcnLCAndmFsdWUnID0+ ICcnICksICRhdHRzICkgKSA7DQogICAgaWYoICRmb3IgPT09ICcnICkNCiAgICAgICAgJGZv ciA9ICdsb2dpbicgOw0KICAgICRpbml0X2ZvciA9IGRvX2xpc3QoICRmb3IgKSA7DQoNCiAg ICBpZiggKCRpbmRleD1hcnJheV9zZWFyY2goICdsb2dnZWQnLCAkaW5pdF9mb3IgKSkgIT09 IGZhbHNlICkNCiAgICAgICAgJGluaXRfZm9yWyAkaW5kZXggXSA9ICdsb2dvdXQnIDsNCg0K ICAgIGFycmF5X3dhbGsoICRpbml0X2ZvciwgY3JlYXRlX2Z1bmN0aW9uKCAnJiR2LCAkaywg JHAnLCAnJHYgPSAkdi4iXyIuJHAgOycpLCAkdHlwZSApIDsNCg0KICAgIGlmKCAoJGluaXRf bGlzdCA9IEBhcnJheV9jb21iaW5lKCAkaW5pdF9mb3IsIGRvX2xpc3QoICR2YWx1ZSApICkp ID09PSBmYWxzZSApDQogICAgICAgIHJldHVybiA7DQoNCiAgICBjYmVfZnJvbnRhdXRoKCBh cnJheSggJ2luaXQnID0+ICcxJyApICsgJGluaXRfbGlzdCApIDsNCiAgICByZXR1cm4gOw0K fQ0KDQovLyAtLSBSZXRyaWV2ZSB1c2VyJ3MgaW5mbywgaWYgY29ubmVjdGVkIA0KLy8gLS0g dGV4dHBhdHRlcm4vbGliL3R4cF9taXNjLnBocCAtIGlzX2xvZ2dlZF9pbigpIGFzIGEgc3Rh cnRpbmcgcG9pbnQNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfbG9nZ2Vk X2luKCAmJHVzZXIsICR0eHBfdXNlciA9IG51bGwgKQ0Kew0KICAgIGlmKCAkdHhwX3VzZXIg IT09IG51bGwgKQ0KICAgICAgICAkbmFtZSA9ICR0eHBfdXNlciA7DQogICAgZWxzZWlmKCAh KCRuYW1lID0gc3Vic3RyKGNzKCd0eHBfbG9naW5fcHVibGljJyksIDEwKSkgKQ0KICAgIHsN CiAgICAgICAgJHVzZXJbICduYW1lJyBdID0gZmFsc2UgOw0KICAgICAgICByZXR1cm4oIGZh bHNlICkgOw0KICAgIH0NCg0KICAgICRycyA9IHNhZmVfcm93KCdub25jZSwgbmFtZSwgUmVh bE5hbWUsIGVtYWlsLCBwcml2cywgbGFzdF9hY2Nlc3MnLCAndHhwX3VzZXJzJywgIm5hbWUg PSAnIi5kb1NsYXNoKCRuYW1lKS4iJyIpOw0KDQogICAgaWYoICRycyAmJiAoJHR4cF91c2Vy ICE9PSBudWxsIHx8IHN1YnN0cihtZDUoJHJzWydub25jZSddKSwgLTEwKSA9PT0gc3Vic3Ry KGNzKCd0eHBfbG9naW5fcHVibGljJyksIDAsIDEwKSApICkNCiAgICB7DQogICAgICAgIHVu c2V0KCAkcnNbICdub25jZScgXSApIDsNCiAgICAgICAgJHVzZXIgPSAkcnMgOw0KICAgICAg ICByZXR1cm4oIHRydWUgKSA7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICR1 c2VyWyAnbmFtZScgXSA9IGZhbHNlIDsNCiAgICAgICAgcmV0dXJuKCBmYWxzZSApIDsNCiAg ICB9DQp9DQoNCi8vIC0tIENoZWNrcyBjdXJyZW50IHVzZXIgYWdhaW5zdCByZXF1aXJlZCBw cml2aWxlZ2VzDQovLyAtLSBUaGFua3MgdG8gUnV1ZCBWYW4gTWVsaWNrJ3MgcnZtX3ByaXZp bGVnZWQgKGh0dHA6Ly92YW5tZWxpY2suY29tL3R4cC8pDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBfY2JlX2ZhX3ByaXZpbGVnZWQoICRyX25hbWUsICRyX2xldmVsLCAkdV9uYW1l LCAkdV9sZXZlbCApDQp7DQogICAgJGNoa19uYW1lICA9ICEkcl9uYW1lICB8fCBpbl9hcnJh eSggJHVfbmFtZSAsIGRvX2xpc3QoICRyX25hbWUgICkgKSA7DQogICAgJGNoa19sZXZlbCA9 ICEkcl9sZXZlbCB8fCBpbl9hcnJheSggJHVfbGV2ZWwsIGRvX2xpc3QoICRyX2xldmVsICkg KSA7DQogICAgcmV0dXJuKCAkY2hrX25hbWUgfHwgJGNoa19sZXZlbCApIDsNCn0NCg0KLy8g LS0gR2VuZXJhdGVzIGlucHV0IGZpZWxkIGZvciBuYW1lIG9yIHBhc3N3b3JkDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpmdW5jdGlvbiBfY2JlX2ZhX2lkZW50aXR5KCAkZmllbGQsICRhdHRzLCAk dmFsdWU9bnVsbCApDQp7DQogICAgZXh0cmFjdCggbEF0dHMoIGFycmF5ICggJ2xhYmVsJyAg ICAgPT4gX2NiZV9mYV9nVHh0KCAkZmllbGQgKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAsICdsYWJlbF9zZngnID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAg ICAgICAgICAgICAgICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAg LCAkYXR0cw0KICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICQk ZmllbGQgPSAnJyA7DQogICAgaWYoICRmaWVsZCA9PSAnbmFtZScgJiYgY3MoJ2NiZV9mcm9u dGF1dGhfbG9naW4nKSAhPSAnJyApDQogICAgICAgIGxpc3QoJG5hbWUpID0gZXhwbG9kZSgg JywnLCBjcygnY2JlX2Zyb250YXV0aF9sb2dpbicpICkgOw0KDQogICAgJG91dCA9IGFycmF5 KCkgOw0KICAgICRvdXRbXSA9ICc8bGFiZWwgZm9yPSInLiRmaWVsZC4kbGFiZWxfc2Z4Lici PicuJGxhYmVsLic8L2xhYmVsPicgOw0KICAgICRvdXRbXSA9ICBmSW5wdXQoICgkZmllbGQg PT0gJ25hbWUnKSAgICA/ICd0ZXh0JyAgICAgOiAncGFzc3dvcmQnDQogICAgICAgICAgICAg ICAgICAgICwoKCRmaWVsZCA9PSAnbmFtZScpICAgID8gJ3BfdXNlcmlkJyA6ICdwX3Bhc3N3 b3JkJykgLiAkbGFiZWxfc2Z4DQogICAgICAgICAgICAgICAgICAgICwgKCRmaWVsZCA9PSAn bmFtZScpICAgID8gJG5hbWUgICAgICA6ICgkdmFsdWUgIT09IG51bGwgPyAkdmFsdWUgOiAn JykNCiAgICAgICAgICAgICAgICAgICAgLCAoISR3cmFwdGFnICYmICRjbGFzcykgPyAkY2xh c3MgICAgIDogJycNCiAgICAgICAgICAgICAgICAgICAgLCAnJywgJycsICcnLCAnJywgJGZp ZWxkLiRsYWJlbF9zZnggKSA7DQoNCiAgICByZXR1cm4oIGRvV3JhcCggJG91dCwgJHdyYXB0 YWcsICRicmVhaywgJGNsYXNzLCAkYnJlYWtjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBQcmVw YXJlIGNhbGwgdG8gY2JlX2Zyb250YXV0aCgpIGZvciBsb2dpbi9sb2dvdXQgZm9ybS9saW5r DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfY2JlX2ZhX2lub3V0X3Byb2Nlc3MoICRp bm91dCwgJGF0dHMsICR0aGluZyA9ICcnICkNCnsNCiAgICAkcGx1c19hdHRzID0gKCRpbm91 dCA9PSAnbG9nb3V0JyApDQogICAgICAgICAgICAgICA/IGFycmF5KCAndHlwZScgICAgICAg ID0+ICdidXR0b24nDQogICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19jaGFuZ2UnID0+ ICcxJyAgICAgICkNCiAgICAgICAgICAgICAgIDogYXJyYXkoICdzaG93X3N0YXknICAgPT4g JzAnDQogICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19yZXNldCcgID0+ICcxJyAgICAg ICkgOw0KICAgICRwdWJsaWNfYXR0cyA9IGxBdHRzKCBhcnJheSAoICdpbnZpdGUnICAgICA9 PiBfY2JlX2ZhX2dUeHQoICgkaW5vdXQgPT0gJ2xvZ2luJykgPyAnbG9naW5fdG9fdGV4dHBh dHRlcm4nIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyApDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3RhZ19pbnZpdGUnID0+ICcnDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xhYmVsJyAgICAgID0+IF9jYmVfZmFfZ1R4 dCggKCRpbm91dCA9PSAnbG9naW4nKSA/ICdsb2dfaW5fYnV0dG9uJw0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiAnbG9nb3V0JyApDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ2Zvcm0nICAgICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ3RhZ19lcnJvcicgID0+ICdzcGFuJywgJ2NsYXNzX2Vycm9yJyA9PiAn Y2JlX2ZhX2Vycm9yJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAg ICAgICAgICAgICAgICAgICAgICArICRwbHVzX2F0dHMgKyBfY2JlX2ZhX2Zvcm1hdCgpDQog ICAgICAgICAgICAgICAgICAgICAgICAsICRhdHRzICkgOw0KDQogICAgaWYoIGlzc2V0KCAk cHVibGljX2F0dHNbJ2ludml0ZSddICkgKQ0KICAgIHsNCiAgICAgICAgJHB1YmxpY19hdHRz WyRpbm91dC4nX2ludml0ZSddID0gJHB1YmxpY19hdHRzWydpbnZpdGUnXSA7DQogICAgICAg IHVuc2V0KCAkcHVibGljX2F0dHNbJ2ludml0ZSddICkgOw0KICAgIH0NCiAgICBpZiggaXNz ZXQoICRwdWJsaWNfYXR0c1snbGFiZWwnXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNf YXR0c1skaW5vdXQuJ19sYWJlbCddID0gJHB1YmxpY19hdHRzWydsYWJlbCddIDsNCiAgICAg ICAgdW5zZXQoICRwdWJsaWNfYXR0c1snbGFiZWwnXSApIDsNCiAgICB9DQogICAgaWYoIGlz c2V0KCAkcHVibGljX2F0dHNbJ2Zvcm0nXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNf YXR0c1skaW5vdXQuJ19mb3JtJ10gPSAkcHVibGljX2F0dHNbJ2Zvcm0nXSA7DQogICAgICAg IHVuc2V0KCAkcHVibGljX2F0dHNbJ2Zvcm0nXSApIDsNCiAgICB9DQogICAgaWYoIGlzc2V0 KCAkcHVibGljX2F0dHNbJ3R5cGUnXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0 c1skaW5vdXQuJ190eXBlJ10gPSAkcHVibGljX2F0dHNbJ3R5cGUnXSA7DQogICAgICAgIHVu c2V0KCAkcHVibGljX2F0dHNbJ3R5cGUnXSApIDsNCiAgICB9DQogICAgaWYoICR0aGluZyAp DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5vdXQuJ19mb3JtJ10gPSAkdGhpbmcgOw0KDQog ICAgJHNob3cgPSAoJGlub3V0ID09ICdsb2dpbicpID8gJ2xvZ291dCcgOiAnbG9naW4nIDsN CiAgICByZXR1cm4oIGNiZV9mcm9udGF1dGgoIGFycmF5KCAnc2hvd18nLiRzaG93ID0+ICcw JyApICsgJHB1YmxpY19hdHRzICkgKSA7DQp9DQoNCi8vIC0tIEVuY2xvc2VzIHN0YXRlbWVu dHMgaW4gYSBzdWJtaXQgZm9ybQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9m YV9mb3JtKCAkYXR0cyApDQp7DQogICAgZXh0cmFjdCggbEF0dHMoIGFycmF5KCAnc3RhdGVt ZW50cycgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAsICdhY3Rpb24nICAgICA9 PiBjYmVfZnJvbnRhdXRoX2JhY2tlbmQoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICwg J21ldGhvZCcgICAgID0+ICdwb3N0Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAg ICAgICAgICAgICAgICAgICwgJGF0dHMNCiAgICAgICAgICAgICAgICAgICkNCiAgICAgICAg ICAgKSA7DQoNCiAgICBpZiggISAkc3RhdGVtZW50cyApDQogICAgICAgIHJldHVybiA7DQoN CiAgICByZXR1cm4oICc8Zm9ybSBhY3Rpb249IicuJGFjdGlvbi4nIiBtZXRob2Q9IicuJG1l dGhvZC4nIj4nDQogICAgICAgICAgICAubi4gJHN0YXRlbWVudHMNCiAgICAgICAgICAgIC5u LiAnPC9mb3JtPicgKSA7DQp9DQoNCi8vIC0tIEdlbmVyYXRlcyBhIGJ1dHRvbiAocHJpbWFy eSBwdXJwb3NlIDogbG9naW4vbG9nb3V0IGJ1dHRvbikNCi8vIC0tIEV4dGVuZGVkIHRvICdl ZGl0JyAoanVzdCBpbiBjYXNlKSAtIDAuNw0KLy8gLS0gTm90ZTogcHJvdmlkaW5nIGEgbGFi ZWwgYW5kIHNldHRpbmcgdHlwZSB0byBibGFuayB3b3JrcyB0b28NCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCmZ1bmN0aW9uIF9jYmVfZmFfYnV0dG9uKCAkYXR0cyApDQp7DQogICAgZXh0cmFjdCgg JGF0dHMgKSA7IC8vICdsYWJlbCcsICd0eXBlJywgJ3dyYXB0YWcnLCBjbGFzcycNCg0KICAg IGlmKCAhICRsYWJlbCBhbmQgISAoJGxhYmVsID0gY2JlX2Zyb250YXV0aCggYXJyYXkoICdp bml0JyA9PiAnMCcsICd2YWx1ZScgPT4gJHR5cGUuJ19sYWJlbCcgKSApKSApDQogICAgICAg ICRsYWJlbCA9IF9jYmVfZmFfZ1R4dCggKCR0eXBlID09ICdsb2dvdXQnIHx8ICR0eXBlID09 ICdlZGl0JyApID8gJHR5cGUgOiAnbG9nX2luX2J1dHRvbicgKSA7DQoNCiAgICAkb3V0ID0g ZklucHV0KCAnc3VibWl0JywgJycsICRsYWJlbCwgKCEkd3JhcHRhZyAmJiAkY2xhc3MpID8g JGNsYXNzIDogJycgKSA7DQogDQogICAgaWYoICR0eXBlID09ICdsb2dvdXQnICkNCiAgICAg ICAgJG91dCAuPSBoSW5wdXQoICdwX2xvZ291dCcsICcxJyApIDsNCiAgICBlbHNlaWYoICR0 eXBlID09ICdlZGl0JyApDQogICAgICAgICRvdXQgLj0gdElucHV0KCkgOw0KDQogICAgcmV0 dXJuKCBkb1RhZyggJG91dCwgJHdyYXB0YWcsICRjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBH ZW5lcmF0ZXMgYSBsaW5rIChwcmltYXJ5IHB1cnBvc2UgOiBsb2dvdXQgbGluaykNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfbGluayggJGF0dHMgKQ0Kew0KICAgIGV4 dHJhY3QoICRhdHRzICkgOyAvLyAnbGluaycsICd0YXJnZXQnDQogICAgDQogICAgaWYoICR0 YXJnZXQgPT0gJ19nZXQnICkNCiAgICB7DQogICAgICAgICR1cmkgPSBzZXJ2ZXJTZXQoICdS RVFVRVNUX1VSSScgICkgOw0KICAgICAgICAkcXVzID0gc2VydmVyU2V0KCAnUVVFUllfU1RS SU5HJyApIDsNCg0KICAgICAgICAkbGVuX3VyaSA9IHN0cmxlbiggJHVyaSApIDsNCiAgICAg ICAgJGxlbl9xdXMgPSBzdHJsZW4oICRxdXMgKSA7DQoNCiAgICAgICAgJHVyaSA9ICgkbGVu X3F1cyA+IDApID8gc3Vic3RyKCAkdXJpLCAwLCAkbGVuX3VyaS0kbGVuX3F1cy0xICkgOiAk dXJpIDsNCiAgICAgICAgJHF1cyA9ICRxdXMgLiAoJGxlbl9xdXMgPiAwID8gJyYnIDogJycp IC4gJGxpbmsgOw0KDQogICAgICAgICRvdXQgPSAoc3Vic3RyKCAkdXJpLCAtMSApICE9PSAn PycgKSA/ICgkdXJpLic/Jy4kcXVzKSA6ICgkdXJpLiRxdXMpIDsNCiAgICB9DQogICAgZWxz ZQ0KICAgIHsNCiAgICAgICAgJG91dCA9ICRsaW5rIDsNCiAgICB9DQoNCiAgICByZXR1cm4o ICRvdXQgKSA7DQp9DQoNCi8vIC0tIEdlbmVyYXRlcyBsb2dpbi9sb2dvdXQgZm9ybSBvciBs b2dvdXQgbGluaw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9pbm91dCgg JGF0dHMgKQ0Kew0KICAgIGV4dHJhY3QoICRhdHRzICkgOw0KDQogICAgJG91dCA9IGFycmF5 KCkgOw0KDQogICAgaWYoICRmb3JtICkNCiAgICAgICAgJG91dFtdID0gKCRmPUBmZXRjaF9m b3JtKCAkZm9ybSApKSA/IHBhcnNlKCAkZiApIDogcGFyc2UoICRmb3JtICkgOyAvLyBsYWJl bCB0YWtlcyBwcmVjZWRlbmNlIGhlcmUNCiAgICBlbHNlDQogICAgew0KICAgICAgICBpZigg aXNzZXQoICRzaG93X3N0YXkgKSApDQogICAgICAgIHsgICAvLyBsb2dpbg0KDQogICAgICAg ICAgICAkb3V0W10gPSBjYmVfZnJvbnRhdXRoX2xvZ25hbWUoICBhcnJheSggJ2NsYXNzJyA9 PiAnZWRpdCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr ICBjb21wYWN0KCAnYnJlYWsnLCAnYnJlYWtjbGFzcycgKSApIDsNCiAgICAgICAgICAgICRv dXRbXSA9IGNiZV9mcm9udGF1dGhfcGFzc3dvcmQoIGFycmF5KCAnY2xhc3MnID0+ICdlZGl0 JykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBh Y3QoICdicmVhaycsICdicmVha2NsYXNzJyApICkgOw0KICAgICAgICAgICAgaWYoICRzaG93 X3N0YXkgKQ0KICAgICAgICAgICAgICAgICRvdXRbXSA9IGNiZV9mcm9udGF1dGhfc3RheSgg YXJyYXkoKSApIDsNCg0KICAgICAgICAgICAgJG91dFtdID0gY2JlX2Zyb250YXV0aF9zdWJt aXQoIGFycmF5KCAnbGFiZWwnID0+ICRsYWJlbCwgJ2NsYXNzJyA9PiAncHVibGlzaCcgKSAp IDsNCg0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgeyAgIC8vIGxvZ291dA0K ICAgICAgICAgICAgJG91dFtdID0gKCR0eXBlID09ICdidXR0b24nKQ0KICAgICAgICAgICAg ICAgICAgID8gY2JlX2Zyb250YXV0aF9zdWJtaXQoIGFycmF5KCAnbGFiZWwnID0+ICRsYWJl bCwgJ3R5cGUnID0+ICdsb2dvdXQnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAsICdjbGFzcycgPT4gJGNsYXNzID8gJGNsYXNzIDogJ3B1Ymxp c2gnICkgKQ0KICAgICAgICAgICAgICAgICAgIDogY2JlX2Zyb250YXV0aF9saW5rKCBhcnJh eSggJ2xhYmVsJyA9PiAkbGFiZWwsICdsaW5rJyA9PiAnbG9nb3V0PTEnLCAndGFyZ2V0JyA9 PiAnX2dldCcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsICdjbGFzcycgPT4gJGNsYXNzID8gJGNsYXNzIDogJ3B1Ymxpc2gnICkgKSA7DQogICAg ICAgIH0NCiAgICB9DQoNCi8vICAgICRvdXQgPSBqb2luKCBuLCAkb3V0ICkgOw0KICAgICRv dXQgPSBkb1dyYXAoICRvdXQsICR3cmFwdGFnLCAkYnJlYWssICcnLCAkYnJlYWtjbGFzcyAp IDsNCiAgICByZXR1cm4oIChpc3NldCggJHR5cGUgKSAmJiAkdHlwZT09J2xpbmsnKQ0KICAg ICAgICAgICAgPyAkb3V0DQogICAgICAgICAgICA6IF9jYmVfZmFfZm9ybSggYXJyYXkoICdz dGF0ZW1lbnRzJyA9PiAkb3V0LCAnYWN0aW9uJyA9PiBwYWdlX3VybCggYXJyYXkoKSApICkg KSApIDsNCn0NCg0KLyogPT0gQmFja2JvbmUgPT0gKi8NCg0KLy8gLS0gQ29va2llIG1lY2hh bmlzbSAtIGZyb20gdGV4dHBhdHRlcm4vaW5jbHVkZS90eHBfYXV0aC5waHAgLSBkb1R4cFZh bGlkYXRlKCkNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfYXV0aCggJHJl ZGlyLCAkcF9sb2dvdXQsICRwX3VzZXJpZD0nJywgJHBfcGFzc3dvcmQ9JycsICRwX3N0YXk9 JycgKQ0Kew0KICAgIGRlZmluZWQoJ0xPR0lOX0NPT0tJRV9IVFRQX09OTFknKSB8fCBkZWZp bmUoJ0xPR0lOX0NPT0tJRV9IVFRQX09OTFknLCB0cnVlKTsNCiAgICAkaGFzaCAgPSBtZDUo dW5pcWlkKG10X3JhbmQoKSwgVFJVRSkpOw0KICAgICRub25jZSA9IG1kNSgkcF91c2VyaWQu cGFjaygnSConLCRoYXNoKSk7DQogICAgJHB1Yl9wYXRoID0gcHJlZ19yZXBsYWNlKCd8Ly8k fCcsJy8nLCByaHUuJy8nKSA7DQogICAgJGFkbV9wYXRoID0gJHB1Yl9wYXRoIC4gc3Vic3Ry KHN0cnJjaHIodHhwYXRoLCBEUyksIDEpIC4gJy8nIDsNCg0KICAgIGlmKCAkcF9sb2dvdXQg KQ0KICAgIHsNCiAgICAgICAgJGxvZ19uYW1lID0gZmFsc2UgOw0KDQogICAgICAgIHNhZmVf dXBkYXRlKCAndHhwX3VzZXJzJw0KICAgICAgICAgICAgICAgICAgICwgIm5vbmNlID0gJyIu ZG9TbGFzaCgkaGFzaCkuIiciDQogICAgICAgICAgICAgICAgICAgLCAibmFtZSA9ICciLmRv U2xhc2goJHBfdXNlcmlkKS4iJyINCiAgICAgICAgICAgICAgICAgICApIDsNCg0KICAgICAg ICBzZXRjb29raWUoICd0eHBfbG9naW4nDQogICAgICAgICAgICAgICAgICwgJycNCiAgICAg ICAgICAgICAgICAgLCB0aW1lKCktMzYwMA0KICAgICAgICAgICAgICAgICAsICRhZG1fcGF0 aA0KICAgICAgICAgICAgICAgICApIDsNCg0KICAgICAgICBzZXRjb29raWUoICd0eHBfbG9n aW5fcHVibGljJw0KICAgICAgICAgICAgICAgICAsICcnDQogICAgICAgICAgICAgICAgICwg dGltZSgpLTM2MDANCiAgICAgICAgICAgICAgICAgLCAkcHViX3BhdGgNCiAgICAgICAgICAg ICAgICAgKSA7DQoNCiAgICAgICAgc2V0Y29va2llKCAnY2JlX2Zyb250YXV0aF9sb2dpbicN CiAgICAgICAgICAgICAgICAgLCAnJw0KICAgICAgICAgICAgICAgICAsIHRpbWUoKS0zNjAw DQogICAgICAgICAgICAgICAgICwgJHB1Yl9wYXRoDQogICAgICAgICAgICAgICAgICkgOw0K ICAgIH0NCi8vICAgIGVsc2VpZiggKCRsb2dfbmFtZSA9IHR4cF92YWxpZGF0ZSggJHBfdXNl cmlkLCAkcF9wYXNzd29yZCwgZmFsc2UgKSkgIT09IGZhbHNlICkNCiAgICBlbHNlaWYoICgk bG9nX25hbWUgPSB0eHBfdmFsaWRhdGUoICRwX3VzZXJpZCwgJHBfcGFzc3dvcmQgKSkgIT09 IGZhbHNlICkNCiAgICB7DQogICAgICAgIHNhZmVfdXBkYXRlKCAndHhwX3VzZXJzJw0KICAg ICAgICAgICAgICAgICAgICwgIm5vbmNlID0gJyIuZG9TbGFzaCgkbm9uY2UpLiInIg0KICAg ICAgICAgICAgICAgICAgICwgIm5hbWUgPSAnIi5kb1NsYXNoKCRwX3VzZXJpZCkuIiciDQog ICAgICAgICAgICAgICAgICAgKSA7DQoNCiAgICAgICAgc2V0Y29va2llKCAndHhwX2xvZ2lu Jw0KICAgICAgICAgICAgICAgICAsICRwX3VzZXJpZC4nLCcuJGhhc2gNCiAgICAgICAgICAg ICAgICAgLCAoJHBfc3RheSA/IHRpbWUoKSszNjAwKjI0KjM2NSA6IDApDQogICAgICAgICAg ICAgICAgICwgJGFkbV9wYXRoDQogICAgICAgICAgICAgICAgICwgbnVsbA0KICAgICAgICAg ICAgICAgICAsIG51bGwNCiAgICAgICAgICAgICAgICAgLCBMT0dJTl9DT09LSUVfSFRUUF9P TkxZDQogICAgICAgICAgICAgICAgICkgOw0KDQogICAgICAgIHNldGNvb2tpZSggJ3R4cF9s b2dpbl9wdWJsaWMnDQogICAgICAgICAgICAgICAgICwgc3Vic3RyKG1kNSgkbm9uY2UpLCAt MTApLiRwX3VzZXJpZA0KICAgICAgICAgICAgICAgICAsICgkcF9zdGF5ID8gdGltZSgpKzM2 MDAqMjQqMzAgOiAwKQ0KICAgICAgICAgICAgICAgICAsICRwdWJfcGF0aA0KICAgICAgICAg ICAgICAgICApIDsNCg0KICAgICAgICBpZiggJHBfc3RheSApDQogICAgICAgICAgICBzZXRj b29raWUoICdjYmVfZnJvbnRhdXRoX2xvZ2luJw0KICAgICAgICAgICAgICAgICAgICAgLCAk cF91c2VyaWQuJywnLiRoYXNoDQogICAgICAgICAgICAgICAgICAgICAsIHRpbWUoKSszNjAw KjI0KjM2NQ0KICAgICAgICAgICAgICAgICAgICAgLCAkcHViX3BhdGgNCiAgICAgICAgICAg ICAgICAgICAgICkgOw0KICAgIH0NCg0KICAgIGlmKCAkcmVkaXIgJiYgKCAkcF9sb2dvdXQg fHwgJGxvZ19uYW1lICE9PSBmYWxzZSApICkNCiAgICB7DQogICAgICAgIGhlYWRlciggIkxv Y2F0aW9uOiRyZWRpciIgKSA7DQogICAgICAgIGV4aXQgOw0KICAgIH0NCg0KICAgIHJldHVy biggJGxvZ19uYW1lICkgOw0KfQ0KDQovLyAtLSBHZXQgdGhlIGpvYiBkb25lDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoKCAkYXR0cywgJHRoaW5nID0gbnVs bCApDQp7DQogICAgaW5jbHVkZV9vbmNlKCB0eHBhdGguJy9pbmNsdWRlL3R4cF9hdXRoLnBo cCcgKSA7DQogICAgZ2xvYmFsICR0eHBfdXNlciA7DQogICAgc3RhdGljICRpbml0cyA9IGFy cmF5KCAnbG9naW5faW52aXRlJyA9PiAnJyAsICdsb2dvdXRfaW52aXRlJyA9PiAnJyAsICd0 YWdfaW52aXRlJyA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ2luX2xh YmVsJyAgPT4gJycgLCAnbG9nb3V0X2xhYmVsJyAgPT4gJycNCiAgICAgICAgICAgICAgICAg ICAgICAgICAsICdsb2dpbl9yZWRpcicgID0+ICcnICwgJ2xvZ291dF9yZWRpcicgID0+ICcn DQogICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9naW5fd2l0aCcgICA9PiAnJw0KICAg ICAgICAgICAgICAgICAgICAgICAgICkgOw0KICAgIHN0YXRpYyAkY2JlX2ZhX3VzZXIgPSBh cnJheSggJ25hbWUnICA9PiBmYWxzZSAsICdSZWFsTmFtZScgICAgPT4gJycgLCAnZW1haWwn ID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAncHJpdnMnID0+ICcn ICAgICwgJ2xhc3RfYWNjZXNzJyA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkgOw0KDQogICAgaWYoIGlzc2V0KCAkYXR0c1snaW5pdCddICkgKQ0KICAgIHsNCiAg ICAgICAgaWYoICRhdHRzWydpbml0J10gKQ0KICAgICAgICB7DQogICAgICAgICAgICB1bnNl dCggJGF0dHNbJ2luaXQnXSApIDsNCg0KICAgICAgICAgICAgZm9yZWFjaCggJGF0dHMgYXMg JHBhcmFtID0+ICR2YWx1ZSApDQogICAgICAgICAgICAgICAgJGluaXRzWyRwYXJhbV0gPSAk dmFsdWUgOw0KDQogICAgICAgICAgICByZXR1cm4gOw0KICAgICAgICB9DQogICAgICAgIGVs c2UNCiAgICAgICAgew0KICAgICAgICAgICAgaWYoIGlzX2FycmF5KCAkYXR0c1sgJ3ZhbHVl JyBdICkgKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR3aG9pcyA9IGFycmF5 KCkgOw0KICAgICAgICAgICAgICAgIGlmKCAhICRjYmVfZmFfdXNlclsgJ25hbWUnIF0gKSBf Y2JlX2ZhX2xvZ2dlZF9pbiggJGNiZV9mYV91c2VyICkgOw0KICAgICAgICAgICAgICAgIGZv cmVhY2goICRhdHRzWyAndmFsdWUnIF0gYXMgJHR5cGUgKQ0KICAgICAgICAgICAgICAgICAg ICAkd2hvaXNbICR0eXBlIF0gPSAkY2JlX2ZhX3VzZXJbICR0eXBlIF0gOw0KICAgICAgICAg ICAgICAgIA0KICAgICAgICAgICAgICAgIHJldHVybiggJHdob2lzICkgOw0KICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHJldHVybiggaXNzZXQo ICRpbml0c1sgJGF0dHNbICd2YWx1ZScgXSBdICkgPyAkaW5pdHNbICRhdHRzWyAndmFsdWUn IF0gXSA6ICcnICkgOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgJGRlZl9hdHRzID0gYXJy YXkoICdmb3JtJyAgICAgICAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAndGFn X2ludml0ZScgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfbG9naW4n ICAgID0+ICcxJw0KICAgICAgICAgICAgICAgICAgICAgLCAnbG9naW5faW52aXRlJyAgPT4g X2NiZV9mYV9nVHh0KCAnbG9naW5fdG9fdGV4dHBhdHRlcm4nICkNCiAgICAgICAgICAgICAg ICAgICAgICwgJ2xvZ2luX2Zvcm0nICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAs ICdsb2dpbl9sYWJlbCcgICA9PiBfY2JlX2ZhX2dUeHQoICdsb2dfaW5fYnV0dG9uJyApDQog ICAgICAgICAgICAgICAgICAgICAsICdsb2dpbl93aXRoJyAgICA9PiAnYXV0bycNCiAgICAg ICAgICAgICAgICAgICAgICwgJ2xvZ2luX3JlZGlyJyAgID0+ICcnDQogICAgICAgICAgICAg ICAgICAgICAsICdzaG93X2xvZ291dCcgICA9PiAnMScNCiAgICAgICAgICAgICAgICAgICAg ICwgJ2xvZ291dF9pbnZpdGUnID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAsICdsb2dv dXRfZm9ybScgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAnbG9nb3V0X2xhYmVs JyAgPT4gX2NiZV9mYV9nVHh0KCAnbG9nb3V0JyApDQogICAgICAgICAgICAgICAgICAgICAs ICdsb2dvdXRfdHlwZScgICA9PiAnYnV0dG9uJw0KICAgICAgICAgICAgICAgICAgICAgLCAn bG9nb3V0X3JlZGlyJyAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfc3Rh eScgICAgID0+ICcwJw0KICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19yZXNldCcgICAg PT4gJzEnDQogICAgICAgICAgICAgICAgICAgICAsICdzaG93X2NoYW5nZScgICA9PiAnMScN CiAgICAgICAgICAgICAgICAgICAgICwgJ2xpbmsnICAgICAgICAgID0+ICcnDQogICAgICAg ICAgICAgICAgICAgICAsICdsaW5rbGFiZWwnICAgICA9PiAnJw0KICAgICAgICAgICAgICAg ICAgICAgLCAndGFyZ2V0JyAgICAgICAgPT4gJ19zZWxmJw0KICAgICAgICAgICAgICAgICAg ICAgLCAnbmFtZScgICAgICAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICwgJ2xl dmVsJyAgICAgICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAsICd0YWdfZXJyb3In ICAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAnY2xhc3NfZXJyb3InICAgPT4g JycNCiAgICAgICAgICAgICAgICAgICAgICkgOw0KDQogICAgJGluaV9hdHRzID0gYXJyYXko KSA7DQogICAgZm9yZWFjaCggJGluaXRzIGFzICRwYXJhbSA9PiAkdmFsdWUgKQ0KICAgIHsg ICAvKiBJbml0cyB0YWtlIHByZWNlZGVuY2Ugb24gZGVmYXVsdCB2YWx1ZXMgKi8NCiAgICAg ICAgaWYoICFpc3NldCggJGF0dHNbJHBhcmFtXSApIHx8ICRhdHRzWyRwYXJhbV0gPT09ICRk ZWZfYXR0c1skcGFyYW1dICkNCiAgICAgICAgICAgICRpbmlfYXR0c1skcGFyYW1dID0gJHZh bHVlIDsNCiAgICB9DQoNCiAgICBleHRyYWN0KCBsQXR0cyggJGRlZl9hdHRzICsgX2NiZV9m YV9mb3JtYXQoKSwgYXJyYXlfbWVyZ2UoICRhdHRzLCBhcnJheV9maWx0ZXIoICRpbmlfYXR0 cyApICkgKSApIDsNCg0KICAgIGV4dHJhY3QoIHBzYSggYXJyYXkoICdwX3VzZXJpZCcsICdw X3Bhc3N3b3JkJywgJ3Bfc3RheScsICdwX3Jlc2V0JywgJ3BfbG9nb3V0JywgJ3BfY2hhbmdl JyApICkgKSA7DQogICAgJGxvZ291dCA9IGdwcyggJ2xvZ291dCcgKSA7DQogICAgJHBfbG9n b3V0ID0gJHBfbG9nb3V0IHx8ICRsb2dvdXQgOw0KICAgICRyZXNldCA9IGdwcyggJ3Jlc2V0 JyApIDsNCiAgICAkcF9yZXNldCA9ICRwX3Jlc2V0IHx8ICRyZXNldCA7DQogICAgJGNoYW5n ZSA9IGdwcyggJ2NoYW5nZScgKSA7DQogICAgJHBfY2hhbmdlID0gJHBfY2hhbmdlIHx8ICRj aGFuZ2UgOw0KDQogICAgaWYoICRwX3VzZXJpZCAmJiAkcF9wYXNzd29yZCApDQogICAgew0K ICAgICAgICAkdXNlcm5hbWUgPSAoJGxvZ2luX3dpdGggPT0gJ2F1dG8nKSA/IHNhZmVfY291 bnQoICd0eHBfdXNlcnMnLCAibmFtZT0nJHBfdXNlcmlkJyIgKSA6IDAgOw0KDQogICAgICAg IGlmKCAkdXNlcm5hbWUgPT0gMCAmJiAkbG9naW5fd2l0aCAhPSAndXNlcm5hbWUnICkNCiAg ICAgICAgeyAvLyBFbWFpbCBwcm9iYWJseSBnaXZlbiwgcmV0cmlldmUgdXNlciBuYW1lIGlm IHBvc3NpYmxlDQogICAgICAgICAgICAkcF91c2VyaWQgPSBzYWZlX3Jvd3MoICduYW1lJywg J3R4cF91c2VycycsICJlbWFpbD0nJHBfdXNlcmlkJyIgKSA7DQogICAgICAgICAgICAkcF91 c2VyaWQgPSAoY291bnQoICRwX3VzZXJpZCApID09IDEpID8gJHBfdXNlcmlkWyAwIF1bICdu YW1lJyBdIDogJycgOw0KICAgICAgICB9DQoNCiAgICAgICAgJGxvZ2luX3JlZGlyID0gKCRs b2dpbl9yZWRpcj09PSdsaW5rJykgPyAkbGluayA6ICRsb2dpbl9yZWRpciA7DQogICAgICAg ICRsb2dpbl9mYWlsZWQgPSAoJHR4cF91c2VyID0gX2NiZV9mYV9hdXRoKCAkbG9naW5fcmVk aXIsIDAsICRwX3VzZXJpZCwgJHBfcGFzc3dvcmQsICRwX3N0YXkgKSkgPT09IGZhbHNlIDsN CiAgICAgICAgX2NiZV9mYV9sb2dnZWRfaW4oICRjYmVfZmFfdXNlciwgJHR4cF91c2VyICkg Ow0KICAgIH0NCiAgICBlbHNlaWYoICRwX2xvZ291dCApDQogICAgew0KICAgICAgICBpZigg JGxvZ291dCAmJiAhJGxvZ291dF9yZWRpciApDQogICAgICAgICAgICAkbG9nb3V0X3JlZGly ID0gcHJlZ19yZXBsYWNlKCAiL1s/Jl1sb2dvdXQ9MS8iLCAiIiwgc2VydmVyU2V0KCdSRVFV RVNUX1VSSScpICkgOw0KDQogICAgICAgICR0eHBfdXNlciA9IF9jYmVfZmFfYXV0aCggJGxv Z291dF9yZWRpciwgMSApIDsNCiAgICAgICAgX2NiZV9mYV9sb2dnZWRfaW4oICRjYmVfZmFf dXNlciwgZmFsc2UgKSA7DQogICAgfQ0KICAgIGVsc2UNCiAgICAgICAgJHR4cF91c2VyID0g X2NiZV9mYV9sb2dnZWRfaW4oICRjYmVfZmFfdXNlciApID8gJGNiZV9mYV91c2VyWyAnbmFt ZScgXSA6IGZhbHNlIDsNCg0KICAgICRvdXQgPSBhcnJheSgpIDsNCiAgICAkaW52aXRlID0g JycgOw0KICAgICRwYXJ0XzAgPSBFdmFsRWxzZSggJHRoaW5nLCAwICkgOw0KICAgICRwYXJ0 XzEgPSBFdmFsRWxzZSggJHRoaW5nLCAxICkgOw0KICAgIGlmKCAkdHhwX3VzZXIgPT09IGZh bHNlICkNCiAgICB7DQogICAgICAgICRvdXRbXSA9IHBhcnNlKCAkcGFydF8wICkgOw0KDQog ICAgICAgIGlmKCAkc2hvd19sb2dpbiApDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmKCAk cF9yZXNldCApDQogICAgICAgICAgICB7ICAgLy8gUmVzZXR0aW5nIHBhc3N3b3JkIGluIHBy b2dyZXNzDQogICAgICAgICAgICAgICAgJGludml0ZSA9IF9jYmVfZmFfZ1R4dCggJ3Bhc3N3 b3JkX3Jlc2V0JyApIDsNCiAgICAgICAgICAgICAgICAkb3V0W10gID0gY2FsbGJhY2tfZXZl bnQoICdjYmVmcm9udGF1dGgucmVzZXRfcGFzc3dvcmQnLCAnY2JlX2ZhX2JlZm9yZV9sb2dp bicsIDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHBzKCdz dGVwJykgPyBhcnJheSggJ3BfdXNlcmlkJyAgID0+ICRwX3VzZXJpZA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9n aW5fd2l0aCcgPT4gJGxvZ2luX3dpdGgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3RhZ19lcnJvcicgID0+ICR0YWdf ZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICwgJ2NsYXNzX2Vycm9yJyA9PiAkY2xhc3NfZXJyb3IgKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwg KSA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7ICAg Ly8gV2UgYXJlIG5vdCByZXNldHRpbmcgdGhlIHBhc3N3b3JkIGF0IHRoZSBtb21lbnQsIGRp c3BsYXkgbG9naW4gZm9ybQ0KICAgICAgICAgICAgICAgIGlmKCBpc3NldCggJGxvZ2luX2Zh aWxlZCApICYmICRsb2dpbl9mYWlsZWQgKQ0KICAgICAgICAgICAgICAgICAgICAkb3V0W10g PSBkb1RhZyggX2NiZV9mYV9nVHh0KCAnbG9naW5fZmFpbGVkJyApLCAkdGFnX2Vycm9yLCAk Y2xhc3NfZXJyb3IgKSA7DQogICAgICAgICAgICAgICAgJGludml0ZSA9ICRsb2dpbl9pbnZp dGUgOw0KICAgICAgICAgICAgICAgICRvdXRbXSAgPSBfY2JlX2ZhX2lub3V0KCBhcnJheSgg J2xhYmVsJyAgICAgID0+ICRsb2dpbl9sYWJlbA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICwgJ2Zvcm0nICAgICAgID0+ICRsb2dpbl9mb3JtDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19z dGF5JyAgPT4gJHNob3dfc3RheQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICwgJ3Nob3dfcmVzZXQnID0+ICRzaG93X3Jlc2V0DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSArIGNvbXBhY3QoICd3cmFw dGFnJywgJ2NsYXNzJywgJ2JyZWFrJywgJ2JyZWFrY2xhc3MnICkgKSA7DQogICAgICAgICAg ICAgICAgaWYoICRzaG93X3Jlc2V0ICkNCiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0g Y2FsbGJhY2tfZXZlbnQoICdjYmVmcm9udGF1dGgucmVzZXRfcGFzc3dvcmQnLCAnY2JlX2Zh X2FmdGVyX2xvZ2luJyApIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAg ICBlbHNlDQogICAgew0KICAgICAgICBpZiggKCEkbmFtZSAmJiAhJGxldmVsKQ0KICAgICAg ICAgICAgfHwNCiAgICAgICAgICAgIF9jYmVfZmFfcHJpdmlsZWdlZCggJG5hbWUsICRsZXZl bCwgJGNiZV9mYV91c2VyWyAnbmFtZScgXSwgJGNiZV9mYV91c2VyWyAncHJpdnMnIF0gKQ0K ICAgICAgICAgICkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYoICRsaW5rICkNCiAgICAg ICAgICAgICAgICAkb3V0W10gPSBjYmVfZnJvbnRhdXRoX2xpbmsoIGFycmF5KCAnbGFiZWwn ID0+ICRsaW5rbGFiZWwgKSArIGNvbXBhY3QoICdsaW5rJywgJ3RhcmdldCcgKSApIDsNCg0K ICAgICAgICAgICAgaWYoICR0aGluZyApDQogICAgICAgICAgICAgICAgJG91dFtdID0gcGFy c2UoICRwYXJ0XzEgKSA7DQogICAgICAgICAgICBlbHNlaWYoICRmb3JtICkNCiAgICAgICAg ICAgICAgICAkb3V0W10gPSBwYXJzZV9mb3JtKCAkZm9ybSApIDsNCiAgICAgICAgfQ0KICAg ICAgICBlbHNlDQogICAgICAgICAgICAkb3V0W10gPSBwYXJzZSggJHBhcnRfMCApIDsNCg0K ICAgICAgICBpZiggJHNob3dfbG9nb3V0ICkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYo ICRwX2NoYW5nZSApDQogICAgICAgICAgICB7ICAgLy8gQ2hhbmdpbmcgcGFzc3dvcmQgaW4g cHJvZ3Jlc3MNCiAgICAgICAgICAgICAgICAkaW52aXRlID0gX2NiZV9mYV9nVHh0KCAnY2hh bmdlX3Bhc3N3b3JkJyApIDsNCiAgICAgICAgICAgICAgICAkb3V0W10gID0gY2FsbGJhY2tf ZXZlbnQoICdjYmVmcm9udGF1dGguY2hhbmdlX3Bhc3N3b3JkJywgJ2NiZV9mYV9iZWZvcmVf bG9nb3V0JywgMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg cHMoJ3N0ZXAnKSA/IGFycmF5KCAncF91c2VyaWQnICAgICA9PiAkdHhwX3VzZXINCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ3BfcGFzc3dvcmQnICAgPT4gJHBfcGFzc3dvcmQNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3BfcGFzc3dvcmRf MScNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID0+IHN0cmlwX3RhZ3MoIHBzKCAncF9wYXNzd29yZF8xJyApICkNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwgJ3BfcGFzc3dvcmRfMicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHN0cmlwX3RhZ3MoIHBzKCAncF9w YXNzd29yZF8yJyApICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICwgJ3RhZ19lcnJvcicgICAgPT4gJHRhZ19lcnJvcg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLCAnY2xhc3NfZXJyb3InICA9PiAkY2xhc3NfZXJyb3IgKQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwgKSA7DQog ICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7ICAgLy8gV2Ug YXJlIG5vdCBjaGFuZ2luZyB0aGUgcGFzc3dvcmQgYXQgdGhlIG1vbWVudCwgZGlzcGxheSBs b2dvdXQgZm9ybQ0KICAgICAgICAgICAgICAgICRpbnZpdGUgPSAkbG9nb3V0X2ludml0ZSA7 DQogICAgICAgICAgICAgICAgJG91dFtdID0gX2NiZV9mYV9pbm91dCggYXJyYXkoICdsYWJl bCcgICAgICAgPT4gJGxvZ291dF9sYWJlbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLCAnZm9ybScgICAgICAgID0+ICRsb2dvdXRfZm9ybQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAndHlwZScgICAg ICAgID0+ICRsb2dvdXRfdHlwZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLCAnc2hvd19jaGFuZ2UnID0+ICRzaG93X2NoYW5nZQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAncF9jaGFuZ2UnICAgID0+ ICRwX2NoYW5nZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLCAndGFnX2Vycm9yJyAgID0+ICR0YWdfZXJyb3INCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2NsYXNzX2Vycm9yJyA9PiAkY2xhc3NfZXJy b3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgKyBj b21wYWN0KCAnd3JhcHRhZycsICdjbGFzcycsICdicmVhaycsICdicmVha2NsYXNzJyApICkg Ow0KICAgICAgICAgICAgICAgIGlmKCAkc2hvd19jaGFuZ2UgKQ0KICAgICAgICAgICAgICAg ICAgICAkb3V0W10gPSBjYWxsYmFja19ldmVudCggJ2NiZWZyb250YXV0aC5jaGFuZ2VfcGFz c3dvcmQnLCAnY2JlX2ZhX2FmdGVyX2xvZ291dCcgKSA7DQogICAgICAgICAgICB9DQogICAg ICAgIH0NCiAgICB9DQoNCi8vICAgIHJldHVybiggZG9MYWJlbCggJGludml0ZSwgJHRhZ19p bnZpdGUgKSAuIGRvV3JhcCggJG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAkYnJl YWtjbGFzcyApICkgOw0KICAgIHJldHVybiggZG9MYWJlbCggJGludml0ZSwgJHRhZ19pbnZp dGUgKSAuIGRvV3JhcCggJG91dCwgJHdyYXB0YWcsICcnLCAkY2xhc3MgKSApIDsNCn0NCiI7 czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo1OiJvcmRlciI7czox OiI0IjtzOjM6Im1kNSI7czozMjoiMDI3YWMwYjIzYTIxNzcxYWY4OWYwNzE0YzhmMjM0NTYi O30=