# ob1_title v4.1 # An enhancement for txp:page_title with more features. # Henrik Jönsson # http://rise.lewander.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMDp7czo0OiJuYW1lIjtzOjk6Im9iMV90aXRsZSI7czo3OiJ2ZXJzaW9uIjtzOjM6IjQu MSI7czo2OiJhdXRob3IiO3M6MTU6IkhlbnJpayBKw7Zuc3NvbiI7czoxMDoiYXV0aG9yX3Vy aSI7czoyNToiaHR0cDovL3Jpc2UubGV3YW5kZXIuY29tLyI7czoxMToiZGVzY3JpcHRpb24i O3M6NTM6IkFuIGVuaGFuY2VtZW50IGZvciB0eHA6cGFnZV90aXRsZSB3aXRoIG1vcmUgZmVh dHVyZXMuIjtzOjQ6InR5cGUiO2k6MDtzOjM6ImNzcyI7czoxOTY1OiI8c3R5bGUgdHlwZT0i dGV4dC9jc3MiPgpAbWVkaWEgYWxsIHsKCSNoZWxwQ29udGVudHMgKiB7CgkJYm9yZGVyOiAw OwoJCW1hcmdpbjogMDsKCX0KCSNoZWxwQ29udGVudHMgewoJCWZvbnQtZmFtaWx5OiAnTHVj aWRhIEdyYW5kZScsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7CgkJZm9udC1zaXplOiAx MXB4OwoJCWxpbmUtaGVpZ2h0OjEuNGVtOwoJCXBhZGRpbmc6MTBweDsKCX0KCSNoZWxwQ29u dGVudHMgdWwgewoJCWxpc3Qtc3R5bGU6IHNxdWFyZTsKCX0KCSNoZWxwQ29udGVudHMgaDEs aDIsaDMgewoJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCWZvbnQtZmFtaWx5OiAnTHVjaWRhIEdy YW5kZScsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Cgl9CgkjaGVscENvbnRlbnRzIGgx IHsKCQltYXJnaW4tYm90dG9tOiA0cHg7Cgl9CgkjaGVscENvbnRlbnRzIGgyIHsKCQltYXJn aW4tdG9wOiAxMHB4OwoJCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cgl9CgkjaGVscENv bnRlbnRzIGgzIHsKCQlmb250LXNpemU6IDFlbTsKCQltYXJnaW4tdG9wOiAxMHB4OwoJCW1h cmdpbi1sZWZ0OiAxMHB4OwoJfQoJI2hlbHBDb250ZW50cyBsaSB7CgkJbWFyZ2luLXRvcDog NHB4OwoJfQoJI2hlbHBDb250ZW50cyBwIHsKCQlmb250LWZhbWlseTogJ1RyZWJ1Y2hldCBN UycsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7CgkJZm9udC1zaXplOiAxLjFlbTsKCQlt YXJnaW4tdG9wOiAxMHB4OwoJCW1hcmdpbi1sZWZ0OiAyMHB4OwoJfQoJI2hlbHBDb250ZW50 cyBzdHJvbmcsICNoZWxwQ29udGVudHMgYiB7CgkJZm9udC1mYW1pbHk6ICdUcmVidWNoZXQg TVMnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTogMWVtOwoJfQoJ I2hlbHBDb250ZW50cyB1bCwgI2hlbHBDb250ZW50cyBvbCB7CgkJbWFyZ2luLWxlZnQ6IDMw cHg7Cgl9CgkjaGVscENvbnRlbnRzIGJsb2NrcXVvdGUgewoJCXBhZGRpbmc6IDhweCA0cHgg OHB4IDRweDsKCX0KfQpAbWVkaWEgc2NyZWVuIHsKCSNoZWxwQ29udGVudHMgewoJCWJhY2tn cm91bmQtY29sb3I6ICMwMDVlN2U7CgkJYm9yZGVyOiAxcHggZG90dGVkICMwMDVlN2U7CgkJ d2lkdGg6IDcwMHB4OwoJCWNvbG9yOiAjYzNlOWY2OwoJfQoJI2hlbHBDb250ZW50cyBhLCAj aGVscENvbnRlbnRzIGEudmlzaXRlZCB7CgkJY29sb3I6ICM0MmIzZDc7CgkJdGV4dC1kZWNv cmF0aW9uOiBub25lOwoJCWJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgIzQyYjNkNzsKCX0K CSNoZWxwQ29udGVudHMgYVt0aXRsZT0nRXh0ZXJuYWwgbGluayddIHsKCQljb2xvcjogI2Rl ZWJjZDsKCQlib3JkZXItYm90dG9tOiAxcHggZG90dGVkICNkZWViY2Q7Cgl9CgkjaGVscENv bnRlbnRzIGE6aG92ZXIgewoJCWNvbG9yOiAjNmJkNWZhOwoJCWJvcmRlci1ib3R0b206IDA7 Cgl9CgkjaGVscENvbnRlbnRzIGFjcm9ueW0gewoJCWJvcmRlci1ib3R0b206IDFweCBkb3R0 ZWQgI2MzZTlmNjsKCQljdXJzb3I6IGhlbHA7Cgl9CgkjaGVscENvbnRlbnRzIGNvZGUsICNo ZWxwQ29udGVudHMgYmxvY2txdW90ZSB7CgkJYmFja2dyb3VuZC1jb2xvcjogIzQyYjNkNzsK CQlwYWRkaW5nLWxlZnQ6IDRweDsKCQlwYWRkaW5nLXJpZ2h0OiA0cHg7Cgl9CgkjaGVscENv bnRlbnRzIGJsb2NrcXVvdGUgewoJCW1hcmdpbi10b3A6IDEwcHg7CgkJcGFkZGluZzogNHB4 OwoJCWJvcmRlcjogMXB4IGRvdHRlZCAjMDA1ZTdlOwoJCWNvbG9yOiAjMDA1ZTdlOwoJfQp9 CkBtZWRpYSBwcmludCB7CgkjaGVscENvbnRlbnRzIHsKCQlib3JkZXI6IDFweCBkb3R0ZWQg I2NjYzsKCQljb2xvcjogIzAwMDsKCX0KCSNoZWxwQ29udGVudHMgYSwgI2hlbHBDb250ZW50 cyBhOnZpc2l0ZWQgewoJCWNvbG9yOiAjMzMzOwoJfQoJI2hlbHBDb250ZW50cyBkaXYuaW5k ZXggdWwgewoJCWRpc3BsYXk6IG5vbmU7Cgl9Cn0KPC9zdHlsZT4KPGRpdiBpZD0iaGVscENv bnRlbnRzIj4iO3M6NDoiaGVscCI7czo0NzE4OiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpA bWVkaWEgYWxsIHsKCSNoZWxwQ29udGVudHMgKiB7CgkJYm9yZGVyOiAwOwoJCW1hcmdpbjog MDsKCX0KCSNoZWxwQ29udGVudHMgewoJCWZvbnQtZmFtaWx5OiAnTHVjaWRhIEdyYW5kZScs SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7CgkJZm9udC1zaXplOiAxMXB4OwoJCWxpbmUt aGVpZ2h0OjEuNGVtOwoJCXBhZGRpbmc6MTBweDsKCX0KCSNoZWxwQ29udGVudHMgdWwgewoJ CWxpc3Qtc3R5bGU6IHNxdWFyZTsKCX0KCSNoZWxwQ29udGVudHMgaDEsaDIsaDMgewoJCWZv bnQtd2VpZ2h0OiBib2xkOwoJCWZvbnQtZmFtaWx5OiAnTHVjaWRhIEdyYW5kZScsSGVsdmV0 aWNhLEFyaWFsLHNhbnMtc2VyaWY7Cgl9CgkjaGVscENvbnRlbnRzIGgxIHsKCQltYXJnaW4t Ym90dG9tOiA0cHg7Cgl9CgkjaGVscENvbnRlbnRzIGgyIHsKCQltYXJnaW4tdG9wOiAxMHB4 OwoJCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cgl9CgkjaGVscENvbnRlbnRzIGgzIHsK CQlmb250LXNpemU6IDFlbTsKCQltYXJnaW4tdG9wOiAxMHB4OwoJCW1hcmdpbi1sZWZ0OiAx MHB4OwoJfQoJI2hlbHBDb250ZW50cyBsaSB7CgkJbWFyZ2luLXRvcDogNHB4OwoJfQoJI2hl bHBDb250ZW50cyBwIHsKCQlmb250LWZhbWlseTogJ1RyZWJ1Y2hldCBNUycsSGVsdmV0aWNh LEFyaWFsLHNhbnMtc2VyaWY7CgkJZm9udC1zaXplOiAxLjFlbTsKCQltYXJnaW4tdG9wOiAx MHB4OwoJCW1hcmdpbi1sZWZ0OiAyMHB4OwoJfQoJI2hlbHBDb250ZW50cyBzdHJvbmcsICNo ZWxwQ29udGVudHMgYiB7CgkJZm9udC1mYW1pbHk6ICdUcmVidWNoZXQgTVMnLEhlbHZldGlj YSxBcmlhbCxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTogMWVtOwoJfQoJI2hlbHBDb250ZW50 cyB1bCwgI2hlbHBDb250ZW50cyBvbCB7CgkJbWFyZ2luLWxlZnQ6IDMwcHg7Cgl9CgkjaGVs cENvbnRlbnRzIGJsb2NrcXVvdGUgewoJCXBhZGRpbmc6IDhweCA0cHggOHB4IDRweDsKCX0K fQpAbWVkaWEgc2NyZWVuIHsKCSNoZWxwQ29udGVudHMgewoJCWJhY2tncm91bmQtY29sb3I6 ICMwMDVlN2U7CgkJYm9yZGVyOiAxcHggZG90dGVkICMwMDVlN2U7CgkJd2lkdGg6IDcwMHB4 OwoJCWNvbG9yOiAjYzNlOWY2OwoJfQoJI2hlbHBDb250ZW50cyBhLCAjaGVscENvbnRlbnRz IGEudmlzaXRlZCB7CgkJY29sb3I6ICM0MmIzZDc7CgkJdGV4dC1kZWNvcmF0aW9uOiBub25l OwoJCWJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgIzQyYjNkNzsKCX0KCSNoZWxwQ29udGVu dHMgYVt0aXRsZT0nRXh0ZXJuYWwgbGluayddIHsKCQljb2xvcjogI2RlZWJjZDsKCQlib3Jk ZXItYm90dG9tOiAxcHggZG90dGVkICNkZWViY2Q7Cgl9CgkjaGVscENvbnRlbnRzIGE6aG92 ZXIgewoJCWNvbG9yOiAjNmJkNWZhOwoJCWJvcmRlci1ib3R0b206IDA7Cgl9CgkjaGVscENv bnRlbnRzIGFjcm9ueW0gewoJCWJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgI2MzZTlmNjsK CQljdXJzb3I6IGhlbHA7Cgl9CgkjaGVscENvbnRlbnRzIGNvZGUsICNoZWxwQ29udGVudHMg YmxvY2txdW90ZSB7CgkJYmFja2dyb3VuZC1jb2xvcjogIzQyYjNkNzsKCQlwYWRkaW5nLWxl ZnQ6IDRweDsKCQlwYWRkaW5nLXJpZ2h0OiA0cHg7Cgl9CgkjaGVscENvbnRlbnRzIGJsb2Nr cXVvdGUgewoJCW1hcmdpbi10b3A6IDEwcHg7CgkJcGFkZGluZzogNHB4OwoJCWJvcmRlcjog MXB4IGRvdHRlZCAjMDA1ZTdlOwoJCWNvbG9yOiAjMDA1ZTdlOwoJfQp9CkBtZWRpYSBwcmlu dCB7CgkjaGVscENvbnRlbnRzIHsKCQlib3JkZXI6IDFweCBkb3R0ZWQgI2NjYzsKCQljb2xv cjogIzAwMDsKCX0KCSNoZWxwQ29udGVudHMgYSwgI2hlbHBDb250ZW50cyBhOnZpc2l0ZWQg ewoJCWNvbG9yOiAjMzMzOwoJfQoJI2hlbHBDb250ZW50cyBkaXYuaW5kZXggdWwgewoJCWRp c3BsYXk6IG5vbmU7Cgl9Cn0KPC9zdHlsZT4KPGRpdiBpZD0iaGVscENvbnRlbnRzIj4KCgoJ PGgxPm9iMS10aXRsZSB2NC4xIFsyMDA3LTEwLTEzXTwvaDE+Cgo8ZGl2IGNsYXNzPSJpbmRl eCI+CgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcGx1Z2luU3VtbWFyeSI+U3VtbWFyeTwvYT48 L2xpPgoJCTxsaT48YSBocmVmPSIjcGx1Z2luQXR0cmlidXRlcyI+QXR0cmlidXRlczwvYT4K CTx1bD4KCQk8bGk+PGEgaHJlZj0iI3BsdWdpbk9yZGVyIj5vcmRlcjwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjcGx1Z2luU2VwYXJhdG9yIj5zZXBhcmF0b3I8L2E+PC9saT4KCQk8bGk+ PGEgaHJlZj0iI3BsdWdpblNlYXJjaENyaXRlcmlhIj5zZWFyY2hjcml0ZXJpYTwvYT48L2xp PgoJCTxsaT48YSBocmVmPSImIzM0OzojcGx1Z2luU2VhcmNoV29yZCI+c2VhcmNod29yZDwv YT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjcGx1Z2luRXhhbXBsZXMiPkV4 YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9yaXNlLmxld2FuZGVyLmNv bS8iIHRpdGxlPSJFeHRlcm5hbCBsaW5rIj5BdXRob3IgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj48L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0 ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMzNTgiIHRpdGxlPSJFeHRlcm5hbCBsaW5rIj48 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3J1bSB0aHJlYWQ8L2E+PC9saT4KCQk8 bGk+PGEgaHJlZj0iaHR0cDovL3Jpc2UubGV3YW5kZXIuY29tL3RleHRwYXR0ZXJuL29iMS10 aXRsZSIgdGl0bGU9IkV4dGVybmFsIGxpbmsiPlBsdWdpbiA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21t b25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvIiB0aXRsZT0iRXh0ZXJuYWwgbGluayI+TGlj ZW5zZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPjwvYT48L2xpPgoJPC91bD4KCjwv ZGl2PgoKCTxoMiBpZD0icGx1Z2luU3VtbWFyeSI+U3VtbWFyeTwvaDI+CgoJPHA+TXkgZmly c3QgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcGx1Z2luLiBJdCBpcyBhbiBlbmhh bmNlbWVudCB0byB0aGUgPGNvZGU+JiM2MDt0eHA6cGFnZV90aXRsZSAvJiM2Mjs8L2NvZGU+ IHRhZyBnaXZpbmcgdGhlIGRldmVsb3BlciByaWdodCB0byBjaG9vc2Ugc29tZSBzcGVjaWZp YyB3YXlzIG9mIHdyaXRpbmcgb3V0IHRoZSB0aXRsZSwgc3VjaCBhcyB3aXRoIHNlcGFyYXRv cnMsIGluIHdoYXQgb3JkZXIsIGV0Yy4gUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBm b3IgZnVsbCBmZWF0dXJlcy48L3A+CgoJPGgyIGlkPSJwbHVnaW5BdHRyaWJ1dGVzIj5BdHRy aWJ1dGVzPC9oMj4KCgk8aDMgaWQ9InBsdWdpbk9yZGVyIj5vcmRlcjwvaDM+CgoJPHA+SGVy ZSB5b3UgdHlwZSB1cCB0aGUgb3JkZXIgeW91IHdpc2ggdGhlIGRpZmZlcmVudCBwYXJ0cyB0 byBkaXNwbGF5LiBJdCB1c2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2hlcmUgdGhlIHZh bHVlcyBhbGxvd2VkIGFyZSA8Y29kZT5zaXRlbmFtZSwgc2VjdGlvbiwgY2F0ZWdvcnksIGFy dGljbGUsIHNsb2dhbjwvY29kZT4uPC9wPgoKCTxwPjxlbT5zaXRlbmFtZSxhcnRpY2xlPC9l bT4gaXMgdGhlIGRlZmF1bHQgdmFsdWUuPC9wPgoKCTxoMyBpZD0icGx1Z2luU2VwYXJhdG9y Ij5zZXBhcmF0b3I8L2gzPgoKCTxwPldoYXQgdG8gc2VwYXJhdGUgdGhlIGRpZmZlcmVudCBw YXJ0cyB3aXRoLjwvcD4KCgk8cD4tIGlzIHRoZSBkZWZhdWx0IHZhbHVlPC9wPgoKCTxoMyBp ZD0icGx1Z2luU2VhcmNoQ3JpdGVyaWEiPnNlYXJjaGNyaXRlcmlhPC9oMz4KCgk8cD5DaG9v c2UgaWYgeW91IHdhbnQgdGhlIHNlYXJjaHdvcmRzIHRvIHNob3cgaW4gdGhlIHRpdGxlIG9m IHRoZSBkb2N1bWVudC4gPGVtPlRoaXMgb25seSBlZmZlY3RzIHRoZSBkZWZhdWx0IHBhZ2Ug dGVtcGxhdGUgc2luY2UgdGhhdCB0ZW1wbGF0ZSBpcyB1c2VkIGZvciBkaXNwbGF5aW5nIHNl YXJjaCByZXN1bHRzLjwvZW0+PC9wPgoKCTxwPjxlbT4wPC9lbT4gJiM4MjExOyBEbyBub3Qg ZGlzcGxheTxiciAvPgo8ZW0+MTwvZW0+ICYjODIxMTsgRGlzcGxheSBzZWFyY2h3b3JkcyAo ZGVmYXVsdCk8L3A+CgoJPGgzIGlkPSJwbHVnaW5TZWFyY2hXb3JkIj5zZWFyY2h3b3JkPC9o Mz4KCgk8cD5XaGF0IHdvcmQgKGlmIGFueSkgc2hvdWxkIGJlIGluY2x1ZGVkIGFmdGVyIHRo ZSAmIzgyMjA7U2VhcmNoIHJlc3VsdHMmIzgyMjE7LjwvcD4KCgk8cD48ZW0+Zm9yPC9lbT4g aXMgdGhlIGRlZmF1bHQgdmFsdWUuPC9wPgoKCTxoMiBpZD0icGx1Z2luRXhhbXBsZXMiPkV4 YW1wbGVzPC9oMj4KCjxibG9ja3F1b3RlPjxjb2RlPiYjNjA7dHhwOm9iMV90aXRsZSBvcmRl cj0mIzM0O2FydGljbGUsc2l0ZW5hbWUmIzM0OyAvJiM2Mjs8L2NvZGU+PC9ibG9ja3F1b3Rl PgoKCTxwPlRoaXMgd2lsbCBvdXRwdXQgPHN0cm9uZz5BcnRpY2xlbmFtZSB8IFNpdGVuYW1l PC9zdHJvbmc+PC9wPgoKPGJsb2NrcXVvdGU+PGNvZGU+JiM2MDt0eHA6b2IxX3RpdGxlIG9y ZGVyPSYjMzQ7YXJ0aWNsZSxjYXRlZ29yeSxzZWN0aW9uLHNpdGVuYW1lJiMzNDsgc2VwYXJh dG9yPSYjMzQ7IDo6ICYjMzQ7IC8mIzYyOzwvY29kZT48L2Jsb2NrcXVvdGU+CgoJPHA+VGhp cyB3aWxsIG91dHB1dCA8c3Ryb25nPkFydGljbGVuYW1lIDo6IENhdGVnb3J5MSA6OiBDYXRl Z29yeTIgOjogU2VjdGlvbiA6OiBTaXRlbmFtZTwvc3Ryb25nPjwvcD4KCjwvZGl2PiI7czo0 OiJjb2RlIjtzOjM4MjA6IgkvKgoJCVBsdWdpbjogb2IxX3RpdGxlCgkJVVJMOiBodHRwOi8v cmlzZS5sZXdhbmRlci5jb20vdGV4dHBhdHRlcm4vb2IxLXRpdGxlCgkJUmVsZWFzZWQgdW5k ZXIgdGhlIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMy4wIFVu cG9ydGVkLCBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAv CgkqLwoKCWZ1bmN0aW9uIG9iMV90aXRsZSgkYXR0cz0iIikKCXsKCQlnbG9iYWwgJHNpdGVu YW1lLCAkaWQsICRjLCAkcSwgJHBhcmVudGlkLCAkcGcsICRzLCAkdGhpc2FydGljbGUsJHBy ZWZzOwoKCQkvLyBHZXQgQXJ0aWNsZUlEIChpZiBhbnkpCgkJJG9iMUZldGNoSUQgPSAiIjsK CgkJaWYgKCAhJHBhcmVudGlkICYmICRpZCApIHsKCQkJJG9iMUZldGNoSUQgPSAkaWQ7CgkJ fSBlbHNlIGlmICggJHBhcmVudGlkICkgewoJCQkkb2IxRmV0Y2hJRCA9ICRwYXJlbnRpZDsK CQl9CgoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJCSJvcmRlciI9PiJzaXRlbmFtZSxhcnRp Y2xlIiwKCQkJInNlcGFyYXRvciI9PiIgLSAiLAoJCQkic2VhcmNoY3JpdGVyaWEiPT4iMSIs CgkJCSJzZWFyY2h3b3JkIj0+IiBmb3IgIiwKCQkpLCRhdHRzKSk7CgoJCSRvYjFBcnJPcmRl ciA9IGRvX2xpc3QoJG9yZGVyKTsKCgkJaWYoJHEpewoJCQlpZihpbl9hcnJheSgic2VjdGlv biIsJG9iMUFyck9yZGVyKSl7JG9iMUFyck9yZGVyW2FycmF5X3NlYXJjaCgic2VjdGlvbiIs JG9iMUFyck9yZGVyKV09IiI7fSAvLyBlbXB0eSBzZWN0aW9ubmFtZQoJCQlpZihpbl9hcnJh eSgiY2F0ZWdvcnkiLCRvYjFBcnJPcmRlcikpeyRvYjFBcnJPcmRlclthcnJheV9zZWFyY2go ImNhdGVnb3J5Iiwkb2IxQXJyT3JkZXIpXT0iIjt9IC8vIGVtcHR5IGNhdGVnb3J5bmFtZQoJ CQlpZihpbl9hcnJheSgic2l0ZW5hbWUiLCRvYjFBcnJPcmRlcikpewoJCQkJJG9iMUFyck9y ZGVyW2FycmF5X3NlYXJjaCgic2l0ZW5hbWUiLCRvYjFBcnJPcmRlcildPSRzaXRlbmFtZTsK CQkJfQoJCQlpZigkc2VhcmNoY3JpdGVyaWEmJmluX2FycmF5KCJhcnRpY2xlIiwkb2IxQXJy T3JkZXIpKXsKCQkJCSRvYjFBcnJPcmRlclthcnJheV9zZWFyY2goImFydGljbGUiLCRvYjFB cnJPcmRlcildPWdUeHQoInNlYXJjaF9yZXN1bHRzIikuJHNlYXJjaHdvcmQuIiAmcXVvdDsi LiRxLiImcXVvdDsiOwoJCQl9ZWxzZSBpZihpbl9hcnJheSgiYXJ0aWNsZSIsJG9iMUFyck9y ZGVyKSl7CgkJCQkkb2IxQXJyT3JkZXJbYXJyYXlfc2VhcmNoKCJhcnRpY2xlIiwkb2IxQXJy T3JkZXIpXT1nVHh0KCJzZWFyY2hfcmVzdWx0cyIpOwoJCQl9ZWxzZXsKCQkJCSRvYjFBcnJP cmRlclthcnJheV9zZWFyY2goImFydGljbGUiLCRvYjFBcnJPcmRlcildPSIiOyAvLyBpZiBu byBhcnRpY2xlLCBvdXRwdXQgbm90aGluZwoJCQl9CgkJfWVsc2V7CgkJCS8vIGlmICRvYjFB cnJPcmRlciBjb250YWlucyBzaXRlbmFtZSwgcmVwbGFjZSBpdAoJCQlpZihpbl9hcnJheSgi c2l0ZW5hbWUiLCRvYjFBcnJPcmRlcikpewoJCQkJJG9iMUFyck9yZGVyW2FycmF5X3NlYXJj aCgic2l0ZW5hbWUiLCRvYjFBcnJPcmRlcildPSRzaXRlbmFtZTsKCQkJfQoJCQkvLyBpZiAk b2IxQXJyT3JkZXIgY29udGFpbnMgc2VjdGlvbiwgcmVwbGFjZSBpdAoJCQlpZihpbl9hcnJh eSgic2VjdGlvbiIsJG9iMUFyck9yZGVyKSl7CgkJCQlpZihlbXB0eSgkcyl8fCRzPT0iZGVm YXVsdCIpewoJCQkJCSRvYjFBcnJPcmRlclthcnJheV9zZWFyY2goInNlY3Rpb24iLCRvYjFB cnJPcmRlcildPSIiOyAvLyBzZXQgdG8gZW1wdHkgc2luY2UgdGhlcmUgaXMgbm8gc2VjdGlv biBuYW1lIGF2YWlsYWJsZQoJCQkJfWVsc2V7CgkJCQkJJG9iMUFyck9yZGVyW2FycmF5X3Nl YXJjaCgic2VjdGlvbiIsJG9iMUFyck9yZGVyKV09ZmV0Y2hfc2VjdGlvbl90aXRsZSgkcyk7 CgkJCQl9CgkJCX0KCQkJLy8gaWYgJG9iMUFyck9yZGVyIGNvbnRhaW5zIGNhdGVnb3J5LCBy ZXBsYWNlIGl0IHdpdGggY29ycmVjdCBjb250ZW50CgkJCWlmKGluX2FycmF5KCJjYXRlZ29y eSIsJG9iMUFyck9yZGVyKSl7CgkJCQlpZighZW1wdHkoJG9iMUZldGNoSUQpKXsKCQkJCQkk b2IxQ2F0ZWdvcnlLZXk9YXJyYXlfc2VhcmNoKCJjYXRlZ29yeSIsJG9iMUFyck9yZGVyKTsK CQkJCQkkb2IxQXJyT3JkZXJbJG9iMUNhdGVnb3J5S2V5XT0iIjsgLy8gY2xlYXJzIHRoZSBj b250ZW50cyBpZiBvbmx5IGNhdGVnb3J5MiBpcyBzZXQKCQkJCQlpZighZW1wdHkoJHRoaXNh cnRpY2xlWydjYXRlZ29yeTEnXSkpewoJCQkJCQkkb2IxQXJyT3JkZXJbJG9iMUNhdGVnb3J5 S2V5XT1mZXRjaF9jYXRlZ29yeV90aXRsZSgkdGhpc2FydGljbGVbJ2NhdGVnb3J5MSddKTsK CQkJCQl9CgkJCQkJaWYoIWVtcHR5KCR0aGlzYXJ0aWNsZVsnY2F0ZWdvcnkyJ10pKXsKCQkJ CQkJJG9iMUFyck9yZGVyWyRvYjFDYXRlZ29yeUtleV09KGVtcHR5KCRvYjFBcnJPcmRlclsk b2IxQ2F0ZWdvcnlLZXldKSkKCQkJCQkJCT8gZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJHRoaXNh cnRpY2xlWydjYXRlZ29yeTInXSkKCQkJCQkJCTogJG9iMUFyck9yZGVyWyRvYjFDYXRlZ29y eUtleV0uJHNlcGFyYXRvci5mZXRjaF9jYXRlZ29yeV90aXRsZSgkdGhpc2FydGljbGVbJ2Nh dGVnb3J5MiddKQoJCQkJCQk7CgkJCQkJfQoJCQkJCXVuc2V0KCRvYjFDYXRlZ29yeUtleSk7 CgkJCQl9ZWxzZXsKCQkJCQlpZihlbXB0eSgkYykpewoJCQkJCQkkb2IxQXJyT3JkZXJbYXJy YXlfc2VhcmNoKCJjYXRlZ29yeSIsJG9iMUFyck9yZGVyKV09IiI7IC8vIHNldCB0byBlbXB0 eSBzaW5jZSB0aGVyZSBpcyBubyBjYXRlZ29yeSBuYW1lIGF2YWlsYWJsZQoJCQkJCX1lbHNl ewoJCQkJCQkkb2IxQXJyT3JkZXJbYXJyYXlfc2VhcmNoKCJjYXRlZ29yeSIsJG9iMUFyck9y ZGVyKV09ZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJGMpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQkv LyBpZiAkb2IxQXJyT3JkZXIgY29udGFpbnMgYXJ0aWNsZSwgcmVwbGFjZSBpdAoJCQlpZihp bl9hcnJheSgiYXJ0aWNsZSIsJG9iMUFyck9yZGVyKSl7CgkJCQlpZihlbXB0eSgkb2IxRmV0 Y2hJRCkpewoJCQkJCSRvYjFBcnJPcmRlclthcnJheV9zZWFyY2goImFydGljbGUiLCRvYjFB cnJPcmRlcildPSIiOyAvLyBzZXQgdG8gZW1wdHkgc2luY2UgdGhlcmUgaXMgbm8gYXJ0aWNs ZSBuYW1lIGF2YWlsYWJsZQoJCQkJfWVsc2V7CgkJCQkJJG9iMUFyck9yZGVyW2FycmF5X3Nl YXJjaCgiYXJ0aWNsZSIsJG9iMUFyck9yZGVyKV09c2FmZV9maWVsZCgnVGl0bGUnLCAndGV4 dHBhdHRlcm4nLCAiSUQgPSAkb2IxRmV0Y2hJRCIpOwoJCQkJfQoJCQl9CgkJCS8vIGlmICRv YjFBcnJPcmRlciBjb250YWlucyBzbG9nYW4sIHJlcGxhY2UgaXQKCQkJaWYoaW5fYXJyYXko InNsb2dhbiIsJG9iMUFyck9yZGVyKSl7CgkJCQkkb2IxQXJyT3JkZXJbYXJyYXlfc2VhcmNo KCJzbG9nYW4iLCRvYjFBcnJPcmRlcildPSRwcmVmc1snc2l0ZV9zbG9nYW4nXTsKCQkJfQoJ CX0KCQkvLyByZW1vdmUgZW1wdHkgZmllbGRzIGZyb20gYXJyYXkgKHdvdWxkIGhhdmUgbG92 ZWQgYSBidWlsdCBpbiB0eHAgZnVuY3Rpb24gZm9yIHRoaXMgOikKCQlmb3JlYWNoKCRvYjFB cnJPcmRlciBhcyAkb2IxQXJyVmFsdWUpewoJCQlpZighZW1wdHkoJG9iMUFyclZhbHVlKSl7 CgkJCQkkb3V0W109JG9iMUFyclZhbHVlOwoJCQl9CgkJfQoJCSRvdXQgPSAoY291bnQoJG91 dCkpID8gZXNjYXBlX3RpdGxlKGpvaW4oJHNlcGFyYXRvciwkb3V0KSkgOiAiIjsKCQl1bnNl dCgkb2IxQXJyT3JkZXIpOwoJCXVuc2V0KCRvYjFGZXRjaElEKTsKCQlyZXR1cm4gJG91dDsK CX0iO3M6MzoibWQ1IjtzOjMyOiIxM2FjMTFhMTg5Y2ExOTYyNmUxNTJkYmUzMjMyYWJjNCI7 fQ==