# +--------------------------------------------------------------+ # | | # | bas_lightbox v0.4 | # | Lightbox is a simple, unobtrusive javascript script | # | used to to overlay images on the current page. | # | | # | by Bastian Sackermann | # | http://samisdat.org | # | | # +--------------------------------------------------------------+ # +--------------------------------------------------------------+ # | | # | This is a plugin for Textpattern - http://textpattern.com/ | # | To install: textpattern > admin > plugins | # | Paste this page's content into the 'Install plugin' box. | # | Activate the plugin and run the advanced install | # | which is located at the extensions tab | # | | # +--------------------------------------------------------------+ YToxMTp7czo0OiJuYW1lIjtzOjEyOiJiYXNfbGlnaHRib3giO3M6NzoidmVyc2lvbiI7czoz OiIwLjQiO3M6NjoiYXV0aG9yIjtzOjE4OiJCYXN0aWFuIFNhY2tlcm1hbW4iO3M6MTA6ImF1 dGhvcl91cmkiO3M6MjA6Imh0dHA6Ly9zYW1pc2RhdC5vcmcvIjtzOjExOiJkZXNjcmlwdGlv biI7czoyNzM6IlRoaXMgcGx1Z2luIGJyaW5ncyB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5o dWRkbGV0b2dldGhlci5jb20vcHJvamVjdHMvbGlnaHRib3gyLyI+TGlnaHRib3ggSlMgdjIu MDwvYT4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5odWRkbGV0b2dldGhlci5jb20vIj5Mb2tl c2ggRGhha2FyIjwvYT4gdG8gdGV4dHBhdHRlcm4uIExpZ2h0Ym94IEpTIGlzIGEgc2ltcGxl LCB1bm9idHJ1c2l2ZSBzY3JpcHQgdXNlZCB0byB0byBvdmVybGF5IGltYWdlcyBvbiB0aGUg Y3VycmVudCBwYWdlLiI7czo0OiJ3b3JrIjtpOjA7czo0OiJ0eXBlIjtpOjE7czo2OiJoZWFk ZXIiO3M6MTI5NDoiIwkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQojCXwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCiMJfCAgYmFzX2xpZ2h0 Ym94IHYwLjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0K Iwl8ICBMaWdodGJveCBpcyBhIHNpbXBsZSwgdW5vYnRydXNpdmUgamF2YXNjcmlwdCBzY3Jp cHQgCSAgICAgICB8DQojCXwgIHVzZWQgdG8gdG8gb3ZlcmxheSBpbWFnZXMgb24gdGhlIGN1 cnJlbnQgcGFnZS4gICAgICAgICAgICAgIHwNCiMJfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KIwl8ICBieSBCYXN0 aWFuIFNhY2tlcm1hbm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 DQojCXwgIGh0dHA6Ly9zYW1pc2RhdC5vcmcgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCiMJfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KIwkrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQoNCiMJKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KIwl8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8DQojCXwgIFRoaXMgaXMgYSBwbHVnaW4gZm9yIFRleHRwYXR0 ZXJuIC0gaHR0cDovL3RleHRwYXR0ZXJuLmNvbS8gIHwNCiMJfCAgVG8gaW5zdGFsbDogdGV4 dHBhdHRlcm4gPiBhZG1pbiA+IHBsdWdpbnMgICAgICAgICAgICAgICAgICAgfA0KIwl8ICBQ YXN0ZSB0aGlzIHBhZ2UncyBjb250ZW50IGludG8gdGhlICdJbnN0YWxsIHBsdWdpbicgYm94 LiAgICB8DQojCXwgIEFjdGl2YXRlIHRoZSBwbHVnaW4gYW5kIHJ1biB0aGUgYWR2YW5jZWQg aW5zdGFsbCAgICAgICAgICAgIHwNCiMJfCAgd2hpY2ggaXMgbG9jYXRlZCBhdCB0aGUgZXh0 ZW5zaW9ucyB0YWIgICAgICAgICAgICAgICAgICAgICAgfA0KIwl8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQojCSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsNCiI7czo0OiJoZWxwIjtzOjUxODA6IgoJPGgxPjxzdHJvbmc+YmFzIExpZ2h0 Ym94PC9zdHJvbmc+PC9oMT4KCgk8cD5ieSA8YSBocmVmPSJodHRwOi8vc2FtaXNkYXQub3Jn Ij5CYXN0aWFuIFNhY2tlcm1hbm48L2E+PC9wPgoKCTxwPlRoaXMgcGx1Z2luIGJyaW5ncyB0 aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5odWRkbGV0b2dldGhlci5jb20vcHJvamVjdHMvbGln aHRib3gyLyI+TGlnaHRib3ggSlM8L2E+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuaHVkZGxl dG9nZXRoZXIuY29tLyI+TG9rZXNoIERoYWthcjwvYT4gdG8gdGV4dHBhdHRlcm4uPGJyIC8+ CkxpZ2h0Ym94IEpTIGlzIGEgc2ltcGxlLCB1bm9idHJ1c2l2ZSBzY3JpcHQgdXNlZCB0byB0 byBvdmVybGF5IGltYWdlcyBvbiB0aGUgY3VycmVudCBwYWdlLjwvcD4KCgk8cD5MaWdodGJv eCB1c2VzIDxhIGhyZWY9Imh0dHA6Ly9wcm90b3R5cGUuY29uaW8ubmV0LyI+UHJvdG90eXBl PC9hPiBieSA8YSBocmVmPSJodHRwOi8vY29uaW8ubmV0LyI+U2FtIFN0ZXBoZW5zb248L2E+ IGFuZCA8YSBocmVmPSJodHRwOi8vc2NyaXB0LmFjdWxvLnVzLyI+U2NyaXB0YWN1bG91czwv YT4gYnkgPGEgaHJlZj0iaHR0cDovL21pci5hY3Vsby51cy8iPlRob21hcyBGdWNoczwvYT4u PC9wPgoKCTxoMj5JbnN0YWxsYXRpb248L2gyPgoKCTxwPkJlZm9yZSB5b3UgY2FuIHVzZSB0 aGlzIHBsdWdpbiwgeW91IGhhdmUgdG8gcnVuIHRoZSBhZHZhbmNlZCBpbnN0YWxsIGF0IDxl bT5leHRlbnNpb248L2VtPiAtPiA8c3Ryb25nPjxlbT5iYXMgTGlnaHRib3g8L3N0cm9uZz48 L2VtPi48YnIgLz4KVGhlIHNjcmlwdCBpbXBvcnRzIGFsbCBmaWxlcyBhbmQgaW1hZ2VzIHlv dSBuZWVkIGZvciBsaWdodGJveGluZyBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9zYW1pc2RhdC5v cmciPnNhbWlzZGF0Lm9yZy48L2E+PC9wPgoKCTxwPllvdSBjYW4gc2tpcCB0aGUgYXV0b21h dGljIGltcG9ydCBhbmQgZG93bmxvYWQgdGhlIGZpbGVzIGFzIDxhIGhyZWY9Imh0dHA6Ly9z YW1pc2RhdC5vcmcvcHVibGljLWZpbGVzL2xpZ2h0Ym94MDQvYmFzX2xpZ2h0Ym94LnppcCI+ YmFzX2xpZ2h0Ym94LnppcDwvYT4gYW5kIHVwbG9hZCB0aGUgbWFudWFsLjxiciAvPgpVc2Ug dGhlIHR4cCBpbWFnZS1tYW5hZ21lbnQgZm9yIGltYWdlcyBhbmQgZmlsZS1tYW5hZ21lbnQg Zm9yIGZpbGVzLiBEb25gdCByZW5hbWUgdGhlIGZpbGVzLjwvcD4KCgk8cD5JZiB5b3Ugd2Fu dCB0byB1c2UgYSBjdXN0b20tZmllbGQgdG8gcmVmZXIgdGhlIGltYWdlIGNhdGVnb3J5LCBq dXN0IHJlbmFtZSBhbiBjdXN0b20tZmllbGQgdG8gPHN0cm9uZz5MaWdodGJveDwvc3Ryb25n Pi48YnIgLz4KWW91IGNhbiByZW5hbWUgY3VzdG9tLWZpZWxkIGF0IGFkbWluIC0+IGFkdmFu Y2VkIHByZWZlcmVuY2VzPC9wPgoKCTxoMj5Mb2NhbGlzYXRpb248L2gyPgoKCTxwPlRoZSBk ZWZhdWx0IGxhbmd1YWdlIG9mIDxzdHJvbmc+YmFzIExpZ2hib3g8L3N0cm9uZz4gaXMgRW5n bGlzaCwgYnV0IHRoZXJlIGFyZSBzb21lIHRyYW5zbGF0aW9ucy48YnIgLz4KRm9yIGV2ZXJ5 IHN1cHBvcnRlZCBsYW5ndWFnZSB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBsdWdpbjo8L3A+ CgoJPHVsPgoJCTxsaT48YSBocmVmPSJodHRwOi8vc2FtaXNkYXQub3JnL2ZpbGVzL2Jhc19s aWdodGJveF9sYW5nX25sX25sLnR4dCI+RHV0Y2g6IGJhc19saWdodGJveF9sYW5nX25sX25s PC9hPiB0cmFuc2xhdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9zZXJlcG8uY29tIj5TZWJhc3Rp YWFuIFBvdXlldDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSJodHRwOi8vc2FtaXNkYXQub3Jn L2ZpbGVzL2Jhc19saWdodGJveF9sYW5nX2RlX2RlLnR4dCI+R2VybWFuOiBiYXNfbGlnaHRi b3hfbGFuZ19kZV9kZTwvYT4gdHJhbnNsYXRlZCBieSA8YSBocmVmPSJodHRwOi8vc2FtaXNk YXQub3JnIj5CYXN0aWFuIFNhY2tlcm1hbjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSJodHRw Oi8vc2FtaXNkYXQub3JnL2ZpbGVzL2Jhc19saWdodGJveF9sYW5nX3B0X3B0LnR4dCI+UG9y dHVndWVzZTogYmFzX2xpZ2h0Ym94X2xhbmdfcHRfcHQ8L2E+IHRyYW5zbGF0ZWQgYnkgPGEg aHJlZj0iaHR0cDovL3d3dy5wYXBlbGRpZ2l0YWwucHQiPlJ1aSBQaW50bzwvYT48L2xpPgoJ PC91bD4KCgk8cD5Eb3dubG9hZCB0aGUgbGFuZ3VhZ2UgcGx1Z2luLCBpbnN0YWxsIGFuZCBh Y3RpdmF0ZSBpdC48YnIgLz4KPHN0cm9uZz5iYXMgTGlnaHRib3g8L3N0cm9uZz4gd2lsbCB1 c2UgdGhpcyBsYW5ndWFnZSBwbHVnaW4sIGlmIHlvdSBhY3RpdmUgdGhpcyBsYW5ndWFnZSBh dCA8ZW0+YWRtaW48L2VtPiAtPiA8ZW0+bWFuYWdlIGxhbmd1YWdlPC9lbT4uPC9wPgoKCTxo Mj5QbHVnaW4mIzgyMTc7cyBQZXJmZXJlbmNlczwvaDI+CgoJPHA+QWZ0ZXIgeW91IHJ1biB0 aGUgYWR2YW5jZWQgaW5zdGFsbCwgeW91IGNhbiBzYXZlIHNvbWUgcGx1Z2luIHByZWZlcmVu Y2VzLjxiciAvPgpUaGUgc2F2ZWQgcHJlZnMgYXJlIHVzZWQgYXMgZGVmYXVsdCB2YWx1ZXMg YW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBpbmNsdWRpbmcgdGhlIGF0dHJpYnV0ZSBpbnRh ZyBwbHVnaW4mIzgyMTc7cyB0YWcuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+UGxlYXNl IDxjb2RlPiZsdDt0eHA6YmFzX2xpZ2h0Ym94X2hlYWQgLyZndDs8L2NvZGU+IGludG8geW91 ciBzaXRlcyBoZWFkLCB0aGlzIHRhZyB3aWxsIGFkZCBhbGwgc2NyaXB0IGFuZCBjc3MgdG8g eW91ciBzaXRlLjxiciAvPgpUaGUgbGlnaHRib3ggc2NyaXB0cyBhcmUgMTI0IGtCIGJpZywg c28gaW5jbHVkZSBpdCBvbmx5IHRvIHNlY3Rpb25zIHdoZXJlIHlvdSB3YW50IHRvIHVzZSBp dC48L3A+CgoJPGgyPlVzYWdlIGluIGFydGljbGUmIzgyMTc7cyBib2R5IG9yIGV4Y2VycHQg b3IgaW4gYXJ0aWNsZS1mb3JtPC9oMj4KCgk8cD5JbmNsdWRlIDxjb2RlPiZsdDt0eHA6YmFz X2xpZ2h0Ym94IC8mZ3Q7PC9jb2RlPiB0byBhbiBhcnRpY2xlLCB5b3UgY2FuIGluY2x1ZGUg aXQgdG8gYm9keSBhbmQvb3IgZXhjZXJwdC48L3A+CgoJPHA+WW91IGNhbiByZWZlciB0aGUg aW1hZ2VzIHdpdGhpbiB0aGUgdGFnIGJ5IGF0cnJpYnV0ZXMgPHN0cm9uZz5pbWc8L3N0cm9u Zz4gb3IgPHN0cm9uZz5jYXQ8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4mbHQ7 dHhwOmJhc19saWdodGJveCBpbWc9JzIsMyw3Jy8mZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxj b2RlPiZsdDt0eHA6YmFzX2xpZ2h0Ym94IGNhdD0nYS1jYXQnLyZndDs8L2NvZGU+PC9saT4K CTwvdWw+CgoJPHA+T3IgeW91IGluY2x1ZGUganVzdCBpbmNsdWRlIDxjb2RlPiZsdDt0eHA6 YmFzX2xpZ2h0Ym94IC8mZ3Q7PC9jb2RlPiBpbnRvIGFydGljbGUgYW5kIHJlZmVyIGltYWdl czo8L3A+CgoJPHVsPgoJCTxsaT5Db21tYSBzZXBlcmF0ZWQgaW4gYXJ0aWNsZSYjODIxNztz IGltYWdlIGZpZWxkPC9saT4KCQk8bGk+UmVuYW1lIGEgY3VzdG9tLWZpZWxkIHRvIDxzdHJv bmc+TGlnaHRib3g8L3N0cm9uZz4uIFRoaXMgY3VzdG9tLWZpZWxkIHdpbGwgYmUgcmVwbGFj ZWQgYnkgYSBkcm9wLWRvd24gbGlzdCBvZiBhbGwgaW1hZ2UgY2F0ZWdvcmllcy4gU2VsZWN0 IGEgY2F0IGZyb20gdGhpcyBsaXN0LjwvbGk+Cgk8L3VsPgoKCTxoMj5Vc2FnZSBpbiBwYWdl IG9yIGZvcm1zPC9oMj4KCgk8cD5Zb3UgY2FuIGluY2x1ZGUgPGNvZGU+Jmx0O3R4cDpiYXNf bGlnaHRib3ggLyZndDs8L2NvZGU+IGludG8gcGFnZSwgdG9vLjxiciAvPgpGb3IgZXhhbXBs ZSBwbGFjZSBpdCBpbnRvIHlvdXIgc2lyZWJhciBhbmQgc2hvdyB5b3VyIHRodW1icyB0aGVy ZS48L3A+CgoJPHA+SW4gcGFnZSB0aGVyZSBpcyBvbmx5IGEgaW5kaXJlY3Qgd2F5IHRvIHJl ZmVyIHRoZSBpbWFnZXM6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+Jmx0O3R4cDpiYXNfbGln aHRib3ggdXNlX3NlY3Rpb249J3RydWUnLyZndDs8L2NvZGU+IFRoaXMgd2lsbCBzaG93IGFs bCB0aHVtYnMgZnJvbSB0aGUgY2F0ZWdvcnkgd2l0aCB0aGUgdmVyeSBzYW1lIG5hbWUgYXMg dGhlIGFjdHVhbCBzZWN0aW9uLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gc2hvdyBz b21lIGltYWdlcyBhdCBzZWN0aW9uICYjODIyMDthYm91dCYjODIyMTssIGFkZCBhbGwgdGhl c2UgaW1hZ2VzIHRvIGltZy1jYXQgJiM4MjIwO2Fib3V0JiM4MjIxOy4gUmVtZW1iZXIgdGhh dCBzZWN0aW9uJiM4MjE3O3MgbmFtZSBhbmQgc2VjdGlvbiYjODIxNztzIGl0bGUgbXVzdCBi ZSB0aGUgc2FtZS48L2xpPgoJCTxsaT48Y29kZT4mbHQ7dHhwOmJhc19saWdodGJveCB1c2Vf Y2F0PSd0cnVlJy8mZ3Q7PC9jb2RlPiBUaGlzIHdpbGwgc2hvdyBhbGwgdGh1bWJzIGZyb20g dGhlIGNhdGVnb3J5IHdpdGggdGhlIHZlcnkgc2FtZSBuYW1lIGFzIHRoZSBhY3R1YWwgY2F0 ZWdvcnkuPC9saT4KCTwvdWw+CgoJPGgyPlBsdWdpbnMgQXR0cmlidXRlczwvaDI+CgoJPHA+ WW91IGNhbiBjdXN0b21pc2UgdGhlIHBsdWdpbiBieSBpbmNsdWRpbmcgYXR0cmlidXRlcyB0 byB0YWcsIHlvdSBjYW4gZWRpdCB0aGUgZGVmYXVsdCB2YWx1ZXMgYXQgPGVtPmV4dGVuc2lv bjwvZW0+IC0+IDxlbT5iYXMgTGlnaHRib3g8L2VtPjwvcD4KCgk8dWw+CgkJPGxpPjxjb2Rl PiZsdDt0eHA6YmFzX2xpZ2h0Ym94IGNhcHRpb249Im5hbWV8YWx0fGNhcHRpb24iIC8mZ3Q7 PC9jb2RlPiBVc2UgY2FwdGlvbiB0byBkZWZpbmUgd2hhdCB0ZXh0IGlzIGRpc3BsYXllZCBp biB0aGUgTGlnaHRib3guIENob29zZSBmcm9tIDxzdHJvbmc+bmFtZTwvc3Ryb25nPiwgPHN0 cm9uZz5hbHQ8L3N0cm9uZz4gb3IgPHN0cm9uZz5jYXB0aW9uPC9zdHJvbmc+PC9saT4KCQk8 bGk+PGNvZGU+Jmx0O3R4cDpiYXNfbGlnaHRib3ggbGFiZWw9Ik15IHBpY3MiIGxhYmVsdGFn PSJoMiIgLyZndDs8L2NvZGU+IERlZmluZSBhIGxhYmVsPC9saT4KCQk8bGk+PGNvZGU+Jmx0 O3R4cDpiYXNfbGlnaHRib3ggd3JhcHRhZz0idWwiIGJyZWFrPSJsaSIgLyZndDs8L2NvZGU+ PC9saT4KCQk8bGk+PGNvZGU+Jmx0O3R4cDpiYXNfbGlnaHRib3ggd3JhcHRhZz0idWwiIHdy YXBjbGFzcz0idGh1bWJsaXN0IiBicmVhaz0ibGkiIGJyZWFrY2xhc3M9ImltZyIgLyZndDs8 L2NvZGU+IEFzaWduIGNsYXNzZXMgdG8gd3JhcHRhZyBhbmQgYnJlYWsgdG8gc3R5bGUgdGhl bSBieSBDU1MuPC9saT4KCTwvdWw+CgoKCgogIjtzOjQ6ImNvZGUiO3M6MzMwMDE6Ii8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCWZ1bmN0aW9uIGJhc19saWdodGJveCgkYXR0cywgJHRoaW5nKQoJewoJCWdsb2Jh bCAkcHJlZnMsJHByZXRleHQsJHRoaXNhcnRpY2xlLCRpbWdfZGlyOwoJCWV4dHJhY3QobEF0 dHMoYXJyYXkoCgkJCSdpbWcnICAgPT4gJycsCgkJCSdjYXQnID0+ICcnLAoKCQkJJ2xhYmVs JyAgID0+IChlbXB0eSgkcHJlZnNbJ2Jhc19saWdodGJveF9sYWJlbCddKSk/Jyc6JHByZWZz WydiYXNfbGlnaHRib3hfbGFiZWwnXSwKCQkJJ2xhYmVsdGFnJyA9PiAoZW1wdHkoJHByZWZz WydiYXNfbGlnaHRib3hfbGFiZWx0YWcnXSkpPycnOiRwcmVmc1snYmFzX2xpZ2h0Ym94X2xh YmVsdGFnJ10sCgkJCSd3cmFwdGFnJyA9PiAoZW1wdHkoJHByZWZzWydiYXNfbGlnaHRib3hf d3JhcHRhZyddKSk/Jyc6JHByZWZzWydiYXNfbGlnaHRib3hfd3JhcHRhZyddLAoJCQknd3Jh cGNsYXNzJyAgICA9PiAoZW1wdHkoJHByZWZzWydiYXNfbGlnaHRib3hfd3JhcGNsYXNzJ10p KT8nJzokcHJlZnNbJ2Jhc19saWdodGJveF93cmFwY2xhc3MnXSwKCQkJJ2JyZWFrJyAgID0+ IChlbXB0eSgkcHJlZnNbJ2Jhc19saWdodGJveF9icmVhayddKSk/Jyc6JHByZWZzWydiYXNf bGlnaHRib3hfYnJlYWsnXSwKCQkJJ2JyZWFrY2xhc3MnICAgPT4gKGVtcHR5KCRwcmVmc1sn YmFzX2xpZ2h0Ym94X2JyZWFrY2xhc3MnXSkpPycnOiRwcmVmc1snYmFzX2xpZ2h0Ym94X2Jy ZWFrY2xhc3MnXSwKCgkJCSd1c2Vfc2VjdGlvbicgPT4gKGVtcHR5KCRwcmVmc1snYmFzX2xp Z2h0Ym94X3VzZV9zZWN0aW9uJ10pKT8nZmFsc2UnOiRwcmVmc1snYmFzX2xpZ2h0Ym94X3Vz ZV9zZWN0aW9uJ10sCgkJCSd1c2VfY2F0JyA9PiAoZW1wdHkoJHByZWZzWydiYXNfbGlnaHRi b3hfdXNlX2NhdCddKSk/J2ZhbHNlJzokcHJlZnNbJ2Jhc19saWdodGJveF91c2VfY2F0J10s CgoJCQknY2FwdGlvbicgPT4gKGVtcHR5KCRwcmVmc1snYmFzX2xpZ2h0Ym94X2NhcHRpb24n XSkpPydhbHQnOiRwcmVmc1snYmFzX2xpZ2h0Ym94X2NhcHRpb24nXSwKCQkpLCRhdHRzKSk7 CgoJCWlmKGVtcHR5KCRwcmVmc1siYmFzX2xpZ2h0Ym94X2luc3RhbGwiXSkpCgkJCXJldHVy biAnJzsKCgkJLy9jaGVja2luZyBhcnRpY2xlIGltYWdlcwoJCWlmKCFlbXB0eSgkdGhpc2Fy dGljbGVbJ2FydGljbGVfaW1hZ2UnXSkpCgkJCSRnZXRJbWdzID0gc3BsaXQoJywnLCR0aGlz YXJ0aWNsZVsnYXJ0aWNsZV9pbWFnZSddKTsKCgkJLy9jaGVja2luZyBjdXN0b20gZmllbGQg IkxpZ2h0Ym94IgoJCWlmKCFlbXB0eSgkdGhpc2FydGljbGVbJ0xpZ2h0Ym94J10pKQoJCQkk Z2V0SW1ncyA9IHNhZmVfY29sdW1uKCdpZCcsICd0eHBfaW1hZ2UnLCdjYXRlZ29yeT0iJy4k dGhpc2FydGljbGVbJ0xpZ2h0Ym94J10uJyInKTsKCgoJCS8vY2hlY2tpbmcgY2F0ZWdvcmll IGZvciBhbiBpbWcgY2F0CgkJaWYoJHVzZV9jYXQgPT0gJ3RydWUnICYmICFlbXB0eSgkcHJl dGV4dFsnYyddKSl7CgkJCSRnZXRJbWdzID0gc2FmZV9jb2x1bW4oJ2lkJywgJ3R4cF9pbWFn ZScsJ2NhdGVnb3J5PSInLiRwcmV0ZXh0WydjJ10uJyInKTsKCgkJfQoJCS8vY2hlY2tpbmcg c2VjdGlvbiBmb3IgYW4gaW1nIGNhdAoJCWlmKCR1c2Vfc2VjdGlvbiA9PSAndHJ1ZScgJiYg IWVtcHR5KCRwcmV0ZXh0WydzJ10pKXsKCQkJJGdldEltZ3MgPSBzYWZlX2NvbHVtbignaWQn LCAndHhwX2ltYWdlJywnY2F0ZWdvcnk9IicuJHByZXRleHRbJ3MnXS4nIicpOwoKCQl9CgkJ Ly9jaGVja2luZyB0YWcgYXR0ciAiaW1nIgoJCWlmKCFlbXB0eSgkaW1nKSkKCQkJJGdldElt Z3MgPSBzcGxpdCgnLCcsJGltZyk7CgoJCS8vY2hlY2tpbmcgdGFnIGF0dHIgImNhdCIKCQlp ZighZW1wdHkoJGNhdCkpCgkJCSRnZXRJbWdzID0gc2FmZV9jb2x1bW4oJ2lkJywgJ3R4cF9p bWFnZScsJ2NhdGVnb3J5PSInLiRjYXQuJyInKTsKCQlpZihlbXB0eSgkZ2V0SW1ncykpCgkJ CXJldHVybiAnJzsKCgkJaWYoY291bnQoJGdldEltZ3MpID09IDEpewoJCQkkdGh1bWIgPSB0 aHVtYm5haWwoQXJyYXkoJ2lkJyA9PiAkZ2V0SW1nc1swXSkpOwoJCQkkYmlnID0gc2FmZV9y b3coJ2lkLCBleHQsJy4kY2FwdGlvbiwndHhwX2ltYWdlJywnaWQgPSInLiRnZXRJbWdzWzBd LiciJyk7CgkJCSRvdXRbXSA9ICc8YSBocmVmPSInLmh1LiRpbWdfZGlyLicvJy4kYmlnWydp ZCddLiRiaWdbJ2V4dCddLiciIHJlbD0ibGlnaHRib3giIHRpdGxlPSInLiRiaWdbJGNhcHRp b25dLiciPicuJHRodW1iLic8L2E+JzsKCgkJfQoJCWVsc2V7CgkJCS8vZ2VuZXJhdGUgYW4g cm9hZHRyaXAgaWQKCQkJJHByZWZzWydiYXNfbGlnaHRib3hfcm9hZHRyaXAnXSA9IChlbXB0 eSgkcHJlZnNbJ2Jhc19saWdodGJveF9yb2FkdHJpcCddKSk/MTokcHJlZnNbJ2Jhc19saWdo dGJveF9yb2FkdHJpcCddKzE7CgoJCQlmb3JlYWNoKCRnZXRJbWdzIGFzICRnZXRJbWcpewoJ CQkJJHRodW1iID0gdGh1bWJuYWlsKEFycmF5KCdpZCcgPT4gJGdldEltZykpOwoJCQkJJGJp ZyA9IHNhZmVfcm93KCdpZCwgZXh0LCcuJGNhcHRpb24sJ3R4cF9pbWFnZScsJ2lkID0iJy4k Z2V0SW1nLiciJyk7CgkJCQkkb3V0W10gPSAnPGEgaHJlZj0iJy5odS4kaW1nX2Rpci4nLycu JGJpZ1snaWQnXS4kYmlnWydleHQnXS4nIiByZWw9ImxpZ2h0Ym94WycuJHByZWZzWydiYXNf bGlnaHRib3hfcm9hZHRyaXAnXS4nXSIgdGl0bGU9IicuJGJpZ1skY2FwdGlvbl0uJyI+Jy4k dGh1bWIuJzwvYT4nOwoJCQl9CgkJfQoJCXJldHVybiAgZG9MYWJlbCgkbGFiZWwsICRsYWJl bHRhZykuZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICR3cmFwY2xhc3MsJGJyZWFr Y2xhc3MpOwoKCX0KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGln aHRib3hfaGVhZCgpCgl7CgkJZ2xvYmFsICRwcmVmczsKCQkkcHJvdG90eXBlID0gZmV0Y2go J2ZpbGVuYW1lJywndHhwX2ZpbGUnLCdpZCcsJHByZWZzWyJiYXNfbGlnaHRib3hfYmFzX2xi MDRfcHJvdG90eXBlX2pzIl0pOwoJCSRzY3JpcHRhY3Vsb3VzID0gZmV0Y2goJ2ZpbGVuYW1l JywndHhwX2ZpbGUnLCdpZCcsJHByZWZzWyJiYXNfbGlnaHRib3hfYmFzX2xiMDRfc2NyaXB0 YWN1bG91c19qcyJdKTsKCQkkbGlnaHRib3ggPSBmZXRjaCgnZmlsZW5hbWUnLCd0eHBfZmls ZScsJ2lkJywkcHJlZnNbImJhc19saWdodGJveF9iYXNfbGIwNF9saWdodGJveF9qcyJdKTsK CQkkY3NzID0gZmV0Y2goJ2ZpbGVuYW1lJywndHhwX2ZpbGUnLCdpZCcsJHByZWZzWyJiYXNf bGlnaHRib3hfYmFzX2xiMDRfbGlnaHRib3hfY3NzIl0pOwoJCSRvdXRbXSA9ICI8c2NyaXB0 IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSciLmh1LiJmaWxlcy8kcHJvdG90eXBlJz48 L3NjcmlwdD4iOwoJCSRvdXRbXSA9ICI8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcg c3JjPSciLmh1LiJmaWxlcy8kc2NyaXB0YWN1bG91cz9sb2FkPWVmZmVjdHMnPjwvc2NyaXB0 PiI7CgkJJG91dFtdID0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9JyIu aHUuImZpbGVzLyRsaWdodGJveCc+PC9zY3JpcHQ+IjsKCQkkb3V0W10gPSAiPGxpbmsgcmVs PSdzdHlsZXNoZWV0JyBocmVmPSciLmh1LiJmaWxlcy8kY3NzJyB0eXBlPSd0ZXh0L2Nzcycg bWVkaWE9J3NjcmVlbicgLz4iOwoKCQlyZXR1cm4gam9pbihuLCRvdXQpOwoJfQoKCi8vLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLy8gQmx1Z2luJ3MgYmFja2VuZAovLy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCglpZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKQoJewoJCWdsb2JhbCAkZXZl bnQ7CgkJaWYoJGV2ZW50ID09ICdiYXNfbGlnaHRib3hfYWRtaW4nKQoJCQliYXNfbGlnaHRi b3hfdGV4dCgpOwoJCWFkZF9wcml2cygnYmFzX2xpZ2h0Ym94X2FkbWluJywgJzEnKTsKCQlh ZGRfcHJpdnMoJ2Jhc19saWdodGJveF9jdXN0b21fZmllbGQnLCAnMScpOwoJCXJlZ2lzdGVy X3RhYigiZXh0ZW5zaW9ucyIsICdiYXNfbGlnaHRib3hfYWRtaW4nLCAnYmFzIExpZ2h0Ym94 Jyk7CgkJcmVnaXN0ZXJfY2FsbGJhY2soJ2Jhc19saWdodGJveF9hZG1pbicsImJhc19saWdo dGJveF9hZG1pbiIpOwoJCXJlZ2lzdGVyX2NhbGxiYWNrKCdiYXNfbGlnaHRib3hfY3VzdG9t X2ZpZWxkJywnYXJ0aWNsZScsICcnLCAxKTsKCX0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K CWdsb2JhbCAkY3VzdG9tX2ZpZWxkOwoJJGN1c3RvbV9maWVsZCA9ICcnOwoJZnVuY3Rpb24g YmFzX2xpZ2h0Ym94X2N1c3RvbV9maWVsZCgpCgl7CgkJZ2xvYmFsICRjdXN0b21fZmllbGQ7 CgkJJGN1c3RvbV9maWVsZCA9IHNhZmVfcm93KCduYW1lJywgJ3R4cF9wcmVmcycsICd2YWw9 IkxpZ2h0Ym94IiBBTkQgZXZlbnQgPSJjdXN0b20iJyk7CgkJaWYoIWVtcHR5KCRjdXN0b21f ZmllbGQpKXsKCQkJJGN1c3RvbV9maWVsZCA9IHN0cl9yZXBsYWNlKCdfc2V0JywnJywkY3Vz dG9tX2ZpZWxkWyduYW1lJ10pOwoJCQlvYl9zdGFydCgnYmFzX2xpZ2h0Ym94X2N1c3RvbV9j YXQnKTsKCQl9Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGln aHRib3hfY3VzdG9tX2NhdCgkYnVmZmVyKXsKCQlnbG9iYWwgJGN1c3RvbV9maWVsZDsKCQkk ZmluZCA9ICc9XDxpbnB1dCB0eXBlXD0idGV4dCIgbmFtZVw9IicuJGN1c3RvbV9maWVsZC4n IiB2YWx1ZVw9IiguKj8pIiBjbGFzc1w9ImVkaXQiIC9cPj0nOwoKCQkvL2ZpbmQgc2F2ZWQg dmFsdWUKCQlwcmVnX21hdGNoKCRmaW5kLCAkYnVmZmVyLCAkaGl0KTsKCgkJJGltZ19jYXRz ID0gc2FmZV9yb3dzKCduYW1lLHRpdGxlJywndHhwX2NhdGVnb3J5JywndHlwZSA9ICJpbWFn ZSInKTsKCQkkaW1nX3NlbGVjdCA9IGFycmF5KCk7CgkJZm9yZWFjaCgkaW1nX2NhdHMgYXMg JGNhdCl7CgkJCWV4dHJhY3QoJGNhdCk7CgkJCSRpbWdfc2VsZWN0WyRuYW1lXSA9ICR0aXRs ZTsKCQl9CgkJJHJlcGxhY2UgPSBzZWxlY3RJbnB1dCgkY3VzdG9tX2ZpZWxkLCAkaW1nX3Nl bGVjdCwgJGhpdFsxXSwgJ3RydWUnKTsKCQlyZXR1cm4gcHJlZ19yZXBsYWNlKCRmaW5kLCRy ZXBsYWNlLCAkYnVmZmVyKTsKCgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlv biBiYXNfbGlnaHRib3hfYWRtaW4oJGV2ZW50LCRzdGVwKQoJewoJCWdsb2JhbCAkcHJlZnM7 CgkJaWYoZW1wdHkoJHByZWZzWyJiYXNfbGlnaHRib3hfaW5zdGFsbCJdKSl7CgoJCQlpZigh JHN0ZXAgb3IgIWZ1bmN0aW9uX2V4aXN0cygnYmFzX2xpZ2h0Ym94X2luc3RhbGxfJy4kc3Rl cCkgb3IgIWluX2FycmF5KCRzdGVwLCBhcnJheSgnc3RlcDEnLCdzdGVwMicsJ3N0ZXAzJywn c3RlcDQnLCkpKQoJCQl7CgkJCQllY2hvIGJhc19saWdodGJveF9pbnN0YWxsX3N0ZXAxKCk7 CgkJCX0KCQkJZWxzZXsKCQkJCSRmdW5jdCA9ICdiYXNfbGlnaHRib3hfaW5zdGFsbF8nLiRz dGVwOwoJCQkJZWNobyAkZnVuY3QoKTsKCQkJfQoJCX0KCQllbHNlaWYoaW5fYXJyYXkoJHN0 ZXAsYXJyYXkoJ3VuaW5zdGFsbF9zdGVwMScsJ3VuaW5zdGFsbF9zdGVwMicpKSl7CgkJCSRm dW5jdCA9ICdiYXNfbGlnaHRib3hfJy4kc3RlcDsKCQkJZWNobyAkZnVuY3QoKTsKCQl9CgkJ ZWxzZXsKCQkJaWYoaW5fYXJyYXkoJHN0ZXAsYXJyYXkoJ3ByZWZzJywncHJlZnNfc2F2ZScp KSl7CgkJCQkkZnVuY3QgPSAnYmFzX2xpZ2h0Ym94XycuJHN0ZXA7CgkJCQllY2hvICRmdW5j dCgpOwoJCQl9CgkJCWVsc2UKCQkJCWVjaG8gYmFzX2xpZ2h0Ym94X3ByZWZzKCk7CgkJfQoK CX0KCgoJZ2xvYmFsICR2YXJzOwoJJHZhcnMgPSBhcnJheSgnYmFzX2xpZ2h0Ym94X3VzZV9z ZWN0aW9uJywnYmFzX2xpZ2h0Ym94X3VzZV9jYXQnLCdiYXNfbGlnaHRib3hfY2FwdGlvbics J2Jhc19saWdodGJveF9sYWJlbCcsJ2Jhc19saWdodGJveF9sYWJlbHRhZycsJ2Jhc19saWdo dGJveF93cmFwdGFnJywnYmFzX2xpZ2h0Ym94X3dyYXBjbGFzcycsJ2Jhc19saWdodGJveF9i cmVhaycsJ2Jhc19saWdodGJveF9icmVha2NsYXNzJyk7CgovLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCglmdW5jdGlvbiBiYXNfbGlnaHRib3hfcHJlZnMoKXsKCQlnbG9iYWwgJHByZWZzLCR2 YXJzOwoJCXBhZ2V0b3AoJ2JhcyBMaWdodGJveCcsZ1R4dCgnYmFzX2xiX2FkbWluJykpOwoJ CSRvdXRbXSA9IHN0YXJ0VGFibGUoICdsaXN0JyApOwoJCSRvdXRbXSA9IHRyKAoJCQkJdGRh KHRhZyhnVHh0KCdiYXNfbGJfYWRtaW4nKSwnaDEnKSwnIGNvbHNwYW49IjIiJykKCQkJKTsK CQlmb3JlYWNoKCR2YXJzIGFzICR2YXIpewoJCQkkb3V0W10gPSB0cih0ZChzdHJfcmVwbGFj ZSgnYmFzX2xpZ2h0Ym94XycsJycsJHZhcikpLnRkKGZJbnB1dCgndGV4dCcsJHZhciwgJHBy ZWZzWyR2YXJdLCdlZGl0JykpKTsKCQl9CgoJCSRvdXRbXSA9IHRyKAoJCQkJdGRhKAoJCQkJ CWZJbnB1dCggInN1Ym1pdCIsICcnLCBnVHh0KCAnYmFzX2xiX2FkbWluX3NhdmUnICksICJw dWJsaXNoIiApLgoJCQkJCWVJbnB1dCggJ2Jhc19saWdodGJveF9hZG1pbicgKS4KCQkJCQlz SW5wdXQoJ3ByZWZzX3NhdmUnKQoJCQkJLCcgY29sc3Bhbj0iMiIgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyOyInKQoJCQkpOwoJCSRvdXRbXSA9IGVuZFRhYmxlKCk7CgkJJG91dFtdID0g YmFzX2xpZ2h0Ym94X3VuaW5zdGFsbF9zdGFydCgpOwoJCXJldHVybiBmb3JtKGpvaW4obiwk b3V0KSk7Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGlnaHRi b3hfcHJlZnNfc2F2ZSgpewoJCWdsb2JhbCAkdmFycywkcHJlZnM7CgkJZXh0cmFjdChncHNh KCR2YXJzKSk7CgkJJGNoYW5nZXMgPSBmYWxzZTsKCQlmb3JlYWNoKCR2YXJzIGFzICR2YXIp ewoJCQlpZigkcHJlZnNbJHZhcl0gIT0gJCR2YXIpCgkJCXsKCQkJCSRxID0gc2FmZV91cGRh dGUoInR4cF9wcmVmcyIsInZhbCA9ICciLiQkdmFyLiInIiwibmFtZSA9ICckdmFyJyIpOwoJ CQkJJGNoYW5nZXMgPSB0cnVlOwoJCQl9CgkJfQoJCWlmKCRjaGFuZ2VzID09IHRydWUpCgkJ CSRwcmVmcyA9IGdldF9wcmVmcygpOwoJCXJldHVybiBiYXNfbGlnaHRib3hfcHJlZnMoKTsK CX0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGJhc19saWdodGJveF9pbnN0 YWxsX3N0ZXAxKCkKCXsKCQlwYWdldG9wKCdiYXMgTGlnaHRib3gnLGdUeHQoJ2Jhc19sYl9p bnN0YWxsJykuJyAtICcuZ1R4dCgnYmFzX2xiX2luX3N0ZXAxJykpOwoJCSRvdXRbXSA9IHN0 YXJ0VGFibGUoICdlZGl0JyApOwoJCSRvdXRbXSA9IHRyKAoJCQkJdGQoCgkJCQkJZ1R4dCgn YmFzX2xiX2luX3N0ZXAxX3RleHQnKS4KCQkJCQlmSW5wdXQoICJzdWJtaXQiLCAnJywgZ1R4 dCggJ2Jhc19sYl9pbl9zdGFydCcgKSwgInB1Ymxpc2giICkuCgkJCQkJZUlucHV0KCAnYmFz X2xpZ2h0Ym94X2FkbWluJyApLgoJCQkJCXNJbnB1dCgnc3RlcDInKQoJCQkJKQoJCQkpOwoJ CSRvdXRbXSA9IGVuZFRhYmxlKCAnZWRpdCcgKTsKCQlyZXR1cm4gZm9ybShqb2luKG4sJG91 dCkpOwoJfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJZnVuY3Rpb24gYmFzX2xpZ2h0Ym94 X2luc3RhbGxfc3RlcDIoKQoJewoJCWdsb2JhbCAkcHJlZnM7CgkJJGltcG9ydCA9IGdwcygn c3RhcnRfaW1wb3J0Jyk7CgkJaWYoZW1wdHkoJGltcG9ydCkpCgkJewoJCQlwYWdldG9wKCdi YXMgTGlnaHRib3gnLGdUeHQoJ2Jhc19sYl9pbnN0YWxsJykuJyAtICcuZ1R4dCgnYmFzX2xi X2luX3N0ZXAyJykpOwoJCQkkb3V0W10gPSBzdGFydFRhYmxlKCAnZWRpdCcgKTsKCQkJJG91 dFtdID0gdHIoCgkJCQkJdGQoCgkJCQkJCWdUeHQoJ2Jhc19sYl9pbl9zdGVwMl9zdGFydCcp LgoJCQkJCQlmb3JtKAoJCQkJCQkJZklucHV0KCAic3VibWl0IiwgJycsIGdUeHQoICdiYXNf bGJfaW5fc3RhcnRfaW1wb3J0JyApLCAicHVibGlzaCIgKS4KCQkJCQkJCWVJbnB1dCggJ2Jh c19saWdodGJveF9hZG1pbicgKS4KCQkJCQkJCXNJbnB1dCgnc3RlcDInKS4KCQkJCQkJCSc8 aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdGFydF9pbXBvcnQidmFsdWU9InRydWUiIC8+ JwoJCQkJCQkpCgkJCQkJKQoJCQkJKTsKCQkJJG91dFtdID0gdHIoCgkJCQkJdGQoCgkJCQkJ CWdUeHQoJ2Jhc19sYl9pbl9zdGVwMl9za2lwJykuCgkJCQkJCWZvcm0oCgkJCQkJCQlmSW5w dXQoICJzdWJtaXQiLCAnJywgZ1R4dCggJ2Jhc19sYl9pbl9za2lwJyApLCAicHVibGlzaCIg KS4KCQkJCQkJCWVJbnB1dCggJ2Jhc19saWdodGJveF9hZG1pbicgKS4KCQkJCQkJCXNJbnB1 dCgnc3RlcDMnKQoJCQkJCQkpCgkJCQkJKQoJCQkJKTsKCQkJJG91dFtdID0gZW5kVGFibGUo ICdlZGl0JyApOwoKCQl9CgkJZWxzZXsKCQkJcGFnZXRvcCgnYmFzIExpZ2h0Ym94JyxnVHh0 KCdiYXNfbGJfaW5zdGFsbCcpLicgLSAnLmdUeHQoJ2Jhc19sYl9pbl9zdGVwMicpKTsKCgkJ CWdsb2JhbCAkZmlsZXMsJGltYWdlczsKCgkJCWlmKCFzYWZlX2NvbHVtbignaWQnLCd0eHBf Y2F0ZWdvcnknLCduYW1lID0iYmFzX2xpZ2h0Ym94IiBBTkQgdHlwZSA9ICJmaWxlIicpKXsK CQkJCSRxID0gc2FmZV9pbnNlcnQoInR4cF9jYXRlZ29yeSIsICJuYW1lPSdiYXNfbGlnaHRi b3gnLCB0aXRsZT0nYmFzX2xpZ2h0Ym94JywgdHlwZT0nZmlsZScsIHBhcmVudD0ncm9vdCci KTsKCQkJCXJlYnVpbGRfdHJlZSgncm9vdCcsIDEsICdmaWxlJyk7CgkJCX0KCQkJJG91dFtd ID0gc3RhcnRUYWJsZSggJ2xpc3QnICk7CgkJCSRvdXRbXSA9ICc8dHI+PHRkPic7CgkJCSRv dXRbXSA9IGdUeHQoJ2Jhc19sYl9pbl9zdGVwMicpOwoJCQkkb3V0W10gPSAnPHVsPic7CgkJ CWZvcmVhY2goJGZpbGVzIGFzICRmaWxlKQoJCQkJJG91dFtdID0gdGFnKGJhc19saWdodGJv eF9pbXBvcnRfZmlsZSgkZmlsZSwnZmlsZScpLCdsaScpOwoKCQkJJG91dFtdID0gJzwvdWw+ JzsKCQkJJG91dFtdID0gJzx1bD4nOwoKCQkJZm9yZWFjaCgkaW1hZ2VzIGFzICRpbWcpCgkJ CQkkb3V0W10gPSB0YWcoYmFzX2xpZ2h0Ym94X2ltcG9ydF9maWxlKCRpbWcsJ2ltYWdlJyks J2xpJyk7CgoJCQkkb3V0W10gPSAnPC91bD4nOwoJCQkkb3V0W10gPSBmSW5wdXQoICJzdWJt aXQiLCAnJywgZ1R4dCggJ2Jhc19sYl9pbl9uZXh0JyApLCAicHVibGlzaCIgKTsKCQkJJG91 dFtdID0gZUlucHV0KCAnYmFzX2xpZ2h0Ym94X2FkbWluJyApOwoJCQkkb3V0W10gPSBzSW5w dXQoJ3N0ZXAzJyk7CgkJCSRvdXRbXSA9ICc8L3RkPjwvdHI+JzsKCQkJJG91dFtdID0gZW5k VGFibGUoICdlZGl0JyApOwoJCX0KCQlyZXR1cm4gZm9ybShqb2luKG4sJG91dCkpOwoKCX0K Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGJhc19saWdodGJveF9pbnN0YWxs X3N0ZXAzKCkKCXsKCQlnbG9iYWwgJGZpbGVzLCRpbWFnZXM7CgkJcGFnZXRvcCgnYmFzIExp Z2h0Ym94JyxnVHh0KCdiYXNfbGJfaW5zdGFsbCcpLicgLSAnLmdUeHQoJ2Jhc19sYl9pbl9z dGVwMycpKTsKCQkkc2F2ZSA9IGdwcygnc2F2ZScpOwoJCWlmKGVtcHR5KCRzYXZlKSkKCQl7 CgkJCSRvdXRbXSA9IHN0YXJ0VGFibGUoICdsaXN0JyApOwoJCQkkb3V0W10gPSB0cigKCQkJ CQl0ZGEoCgkJCQkJCWdUeHQoJ2Jhc19sYl9pbl9zdGVwM190ZXh0JyksJyBjb2xzcGFuPSIy IicKCQkJCQkpCgkJCQkpOwoKCQkJJG91dFtdID0gdHIoIHRkKCAnPGI+RmlsZW5hbWU8L2I+ JykgLiB0ZCggJzxiPnR4cCBpZDwvYj4nKSk7CgoJCQlmb3JlYWNoKCRmaWxlcyBhcyAkZmls ZSkKCQkJewoJCQkJZXh0cmFjdCgkZmlsZSk7CgkJCQkkb3V0W10gPSB0ciggdGQoICRmaWxl bmFtZSkgLiB0ZChmSW5wdXQoJ3RleHQnLCdiYXNfbGlnaHRib3hfJy5zdHJfcmVwbGFjZSgn LicsJ18nLCRmaWxlbmFtZSksIGZldGNoKCdpZCcsJ3R4cF9maWxlJywnZmlsZW5hbWUnLCRm aWxlbmFtZSksJ2VkaXQnKSkpOwoJCQl9CgkJCSRvdXRbXSA9IHRyKCB0ZCggJ2ltYWdlIG5h bWUnKSAuIHRkKCAndHhwIGlkJykpOwoKCQkJZm9yZWFjaCgkaW1hZ2VzIGFzICRpbWcpCgkJ CXsKCQkJCWV4dHJhY3QoJGltZyk7CgkJCQkJICRvdXRbXSA9IHRyKCB0ZCggJG5hbWUpIC4g dGQoZklucHV0KCd0ZXh0JywnYmFzX2xpZ2h0Ym94Xycuc3RyX3JlcGxhY2UoJy4nLCdfJywk bmFtZSksIGZldGNoKCdpZCcsJ3R4cF9pbWFnZScsJ25hbWUnLCRuYW1lKSwnZWRpdCcpKSk7 CgkJCX0KCgkJCSRvdXRbXSA9IHRyKAoJCQkJCXRkKAoJCQkJCQlmSW5wdXQoICJzdWJtaXQi LCAnJywgZ1R4dCggJ3NhdmUnICksICJwdWJsaXNoIiApLgoJCQkJCQllSW5wdXQoICdiYXNf bGlnaHRib3hfYWRtaW4nICkuCgkJCQkJCXNJbnB1dCgnc3RlcDMnKS4KCQkJCQkJJzxpbnB1 dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNhdmUiIHZhbHVlPSJ0cnVlIiAvPicKCQkJCQkpCgkJ CQkpOwoKCQkJJG91dFtdID0gZW5kVGFibGUoKTsKCQkJcmV0dXJuIGZvcm0oam9pbihuLCRv dXQpKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHBvcyA9IDEwOwoJCQlmb3JlYWNoKCRmaWxlcyBh cyAkZmlsZSkKCQkJewoJCQkJJGZpbGUgPSAkZmlsZVsnZmlsZW5hbWUnXTsKCQkJCSR2YWx1 ZSA9IGdwcygnYmFzX2xpZ2h0Ym94Xycuc3RyX3JlcGxhY2UoJy4nLCdfJywkZmlsZSkpOwoJ CQkJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsInByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFz X2xpZ2h0Ym94XyIuc3RyX3JlcGxhY2UoJy4nLCdfJywkZmlsZSkuIicsdmFsID0gJyIuJHZh bHVlLiInLHR5cGUgPSAnMicsZXZlbnQgPSAnYmFzX2xpZ2h0Ym94JyxodG1sID0gJ3RleHRf aW5wdXQnLHBvc2l0aW9uID0gJyRwb3MnIik7CgkJCQkkcG9zID0gJHBvcyArIDEwOwoJCQl9 CgkJCWZvcmVhY2goJGltYWdlcyBhcyAkaW1nKQoJCQl7CgkJCQkkaW1nID0gJGltZ1snbmFt ZSddOwoJCQkJJHZhbHVlID0gZ3BzKCdiYXNfbGlnaHRib3hfJy5zdHJfcmVwbGFjZSgnLics J18nLCRpbWcpKTsKCQkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCJwcmVmc19pZCA9ICcx JyxuYW1lID0gJ2Jhc19saWdodGJveF8iLnN0cl9yZXBsYWNlKCcuJywnXycsJGltZykuIics dmFsID0gJyIuJHZhbHVlLiInLHR5cGUgPSAnMicsZXZlbnQgPSAnYmFzX2xpZ2h0Ym94Jyxo dG1sID0gJ3RleHRfaW5wdXQnLHBvc2l0aW9uID0gJyRwb3MnIik7CgkJCQkkcG9zID0gJHBv cyArIDEwOwoJCQl9CgoKCgkJCSRsaWdodGJveF9jc3MgPSBqb2luKCcnLGZpbGUoIi4uL2Zp bGVzL2Jhc19sYjA0X2xpZ2h0Ym94LmNzcyIpKTsKCQkJJGxpZ2h0Ym94X2NzcyA9IHN0cl9y ZXBsYWNlKCcuLi9pbWFnZXMvYmxhbmsuZ2lmJyxodS4naW1hZ2VzLycuZ3BzKCdiYXNfbGln aHRib3hfYmFzX2xiMDRfYmxhbmtfZ2lmJykuJy5naWYnLCRsaWdodGJveF9jc3MpOwoJCQkk bGlnaHRib3hfY3NzID0gc3RyX3JlcGxhY2UoJy4uL2ltYWdlcy9wcmV2bGFiZWwuZ2lmJyxo dS4naW1hZ2VzLycuZ3BzKCdiYXNfbGlnaHRib3hfYmFzX2xiMDRfcHJldmxhYmVsX2dpZicp LicuZ2lmJywkbGlnaHRib3hfY3NzKTsKCQkJJGxpZ2h0Ym94X2NzcyA9IHN0cl9yZXBsYWNl KCcuLi9pbWFnZXMvbmV4dGxhYmVsLmdpZicsaHUuJ2ltYWdlcy8nLmdwcygnYmFzX2xpZ2h0 Ym94X2Jhc19sYjA0X25leHRsYWJlbF9naWYnKS4nLmdpZicsJGxpZ2h0Ym94X2Nzcyk7CgkJ CSRmcCA9IGZvcGVuKCIuLi9maWxlcy9iYXNfbGIwNF9saWdodGJveC5jc3MiLCJ3Iik7CgkJ CWlmICgkZnApe2Zsb2NrKCRmcCwyKTtmcHV0cyAoJGZwLCAkbGlnaHRib3hfY3NzKTtmbG9j aygkZnAsMyk7ZmNsb3NlKCRmcCk7fQoKCgoJCQkkbGlnaHRib3hfanMgPSBqb2luKCcnLGZp bGUoIi4uL2ZpbGVzL2Jhc19sYjA0X2xpZ2h0Ym94LmpzIikpOwoJCQkkbGlnaHRib3hfanMg PSBzdHJfcmVwbGFjZSgnLi4vaW1hZ2VzL2xvYWRpbmcuZ2lmJyxodS4naW1hZ2VzLycuZ3Bz KCdiYXNfbGlnaHRib3hfYmFzX2xiMDRfbG9hZGluZ19naWYnKS4nLmdpZicsJGxpZ2h0Ym94 X2pzKTsKCQkJJGxpZ2h0Ym94X2pzID0gc3RyX3JlcGxhY2UoJy4uL2ltYWdlcy9jbG9zZWxh YmVsLmdpZicsaHUuJ2ltYWdlcy8nLmdwcygnYmFzX2xpZ2h0Ym94X2Jhc19sYjA0X2Nsb3Nl bGFiZWxfZ2lmJykuJy5naWYnLCRsaWdodGJveF9qcyk7CgkJCSRmcCA9IGZvcGVuKCIuLi9m aWxlcy9iYXNfbGIwNF9saWdodGJveC5qcyIsInciKTsKCQkJaWYgKCRmcCl7ZmxvY2soJGZw LDIpO2ZwdXRzICgkZnAsICRsaWdodGJveF9qcyk7ZmxvY2soJGZwLDMpO2ZjbG9zZSgkZnAp O30KCgoJCQlzYWZlX2luc2VydCgndHhwX3ByZWZzJywicHJlZnNfaWQgPSAnMScsbmFtZSA9 ICdiYXNfbGlnaHRib3hfdXNlX3NlY3Rpb24nLHZhbCA9ICdmYWxzZScsdHlwZSA9ICcyJyxl dmVudCA9ICdiYXNfbGlnaHRib3gnLGh0bWwgPSAndGV4dF9pbnB1dCcscG9zaXRpb24gPSAn JyIpOwoJCQlzYWZlX2luc2VydCgndHhwX3ByZWZzJywicHJlZnNfaWQgPSAnMScsbmFtZSA9 ICdiYXNfbGlnaHRib3hfdXNlX2NhdCcsdmFsID0gJ2ZhbHNlJyx0eXBlID0gJzInLGV2ZW50 ID0gJ2Jhc19saWdodGJveCcsaHRtbCA9ICd0ZXh0X2lucHV0Jyxwb3NpdGlvbiA9ICcnIik7 CgkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCJwcmVmc19pZCA9ICcxJyxuYW1lID0gJ2Jh c19saWdodGJveF9jYXB0aW9uJyx2YWwgPSAnY2FwdGlvbicsdHlwZSA9ICcyJyxldmVudCA9 ICdiYXNfbGlnaHRib3gnLGh0bWwgPSAndGV4dF9pbnB1dCcscG9zaXRpb24gPSAnJyIpOwoJ CQlzYWZlX2luc2VydCgndHhwX3ByZWZzJywicHJlZnNfaWQgPSAnMScsbmFtZSA9ICdiYXNf bGlnaHRib3hfbGFiZWwnLHZhbCA9ICdiYXMgTGlnaHRib3gnLHR5cGUgPSAnMicsZXZlbnQg PSAnYmFzX2xpZ2h0Ym94JyxodG1sID0gJ3RleHRfaW5wdXQnLHBvc2l0aW9uID0gJyciKTsK CQkJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsInByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFz X2xpZ2h0Ym94X2xhYmVsdGFnJyx2YWwgPSAnaDInLHR5cGUgPSAnMicsZXZlbnQgPSAnYmFz X2xpZ2h0Ym94JyxodG1sID0gJ3RleHRfaW5wdXQnLHBvc2l0aW9uID0gJyciKTsKCQkJc2Fm ZV9pbnNlcnQoJ3R4cF9wcmVmcycsInByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFzX2xpZ2h0 Ym94X3dyYXB0YWcnLHZhbCA9ICd1bCcsdHlwZSA9ICcyJyxldmVudCA9ICdiYXNfbGlnaHRi b3gnLGh0bWwgPSAndGV4dF9pbnB1dCcscG9zaXRpb24gPSAnJyIpOwoJCQlzYWZlX2luc2Vy dCgndHhwX3ByZWZzJywicHJlZnNfaWQgPSAnMScsbmFtZSA9ICdiYXNfbGlnaHRib3hfd3Jh cGNsYXNzJyx2YWwgPSAnbGlnaHRib3gnLHR5cGUgPSAnMicsZXZlbnQgPSAnYmFzX2xpZ2h0 Ym94JyxodG1sID0gJ3RleHRfaW5wdXQnLHBvc2l0aW9uID0gJyciKTsKCQkJc2FmZV9pbnNl cnQoJ3R4cF9wcmVmcycsInByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFzX2xpZ2h0Ym94X2Jy ZWFrJyx2YWwgPSAnbGknLHR5cGUgPSAnMicsZXZlbnQgPSAnYmFzX2xpZ2h0Ym94JyxodG1s ID0gJ3RleHRfaW5wdXQnLHBvc2l0aW9uID0gJyciKTsKCQkJc2FmZV9pbnNlcnQoJ3R4cF9w cmVmcycsInByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFzX2xpZ2h0Ym94X2JyZWFrY2xhc3Mn LHZhbCA9ICcnLHR5cGUgPSAnMicsZXZlbnQgPSAnYmFzX2xpZ2h0Ym94JyxodG1sID0gJ3Rl eHRfaW5wdXQnLHBvc2l0aW9uID0gJyciKTsKCQkJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycs InByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFzX2xpZ2h0Ym94X2luc3RhbGwnLHZhbCA9ICd0 cnVlJyx0eXBlID0gJzInLGV2ZW50ID0gJ2Jhc19saWdodGJveCcsaHRtbCA9ICd0ZXh0X2lu cHV0Jyxwb3NpdGlvbiA9ICcnIik7CgkJCSRvdXRbXSA9IHN0YXJ0VGFibGUoICdlZGl0JyAp OwoJCQkkb3V0W10gPSB0cigKCQkJCQl0ZCgKCQkJCQkJZ1R4dCgnYmFzX2xiX2luX2RvbmUn KS4KCQkJCQkJZm9ybSgKCQkJCQkJCWZJbnB1dCggInN1Ym1pdCIsICcnLCBnVHh0KCAnZG9u ZScgKSwgInB1Ymxpc2giICkuCgkJCQkJCQllSW5wdXQoICdiYXNfbGlnaHRib3hfYWRtaW4n ICkKCQkJCQkJKQoJCQkJCSkKCQkJCSk7CgkJCSRvdXRbXSA9IGVuZFRhYmxlKCk7CgkJCXJl dHVybiBqb2luKG4sJG91dCk7CgkJfQoKCgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglm dW5jdGlvbiBiYXNfbGlnaHRib3hfaW5zdGFsbF9zdGVwNCgpCgl7CgkJcGFnZXRvcCgnYmFz IExpZ2h0Ym94JyxnVHh0KCdiYXNfbGJfaW5zdGFsbCcpLicgLSAnLmdUeHQoJ2Jhc19sYl9z dGVwNCcpKTsKCgkJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsInByZWZzX2lkID0gJzEnLG5h bWUgPSAnYmFzX2xpZ2h0Ym94X2luc3RhbGwnLHZhbCA9ICd0cnVlJyx0eXBlID0gJzInLGV2 ZW50ID0gJ2Jhc19saWdodGJveCcsaHRtbCA9ICd0ZXh0X2lucHV0Jyxwb3NpdGlvbiA9ICcn Iik7CgkJJG91dFtdID0gc3RhcnRUYWJsZSggJ2VkaXQnICk7CgkJJG91dFtdID0gdHIoCgkJ CQl0ZCgKCQkJCQlnVHh0KCdiYXNfbGJfc3RlcDRfdGV4dCcpLgoJCQkJCWZvcm0oCgkJCQkJ CWZJbnB1dCggInN1Ym1pdCIsICcnLCBnVHh0KCAnZG9uZScgKSwgInB1Ymxpc2giICkuCgkJ CQkJCWVJbnB1dCggJ2Jhc19saWdodGJveF9hZG1pbicgKQoJCQkJCSkKCQkJCSkKCQkJKTsK CQkkb3V0W10gPSBlbmRUYWJsZSgpOwoJCXJldHVybiBqb2luKG4sJG91dCk7Cgl9CgovLy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGlnaHRib3hfdW5pbnN0YWxsX3N0 YXJ0KCkKCXsKCQlyZXR1cm4gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO21hcmdp bjo1MHB4OyI+PGhyIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOjFweCBzb2xpZCBn cmV5IiAvPjxhIGhyZWY9Ij9ldmVudD1iYXNfbGlnaHRib3hfYWRtaW4mYW1wO3N0ZXA9dW5p bnN0YWxsX3N0ZXAxIj5Vbmluc3RhbGwgYmFzIExpZ2h0Ym94PC9hPjwvZGl2Pic7Cgl9Cgov Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGlnaHRib3hfdW5pbnN0YWxs X3N0ZXAxKCkKCXsKCQlwYWdldG9wKCdiYXMgTGlnaHRib3gnLGdUeHQoJ2Jhc19sYl91bmlu c3RhbGwnKS4nIC0gJy5nVHh0KCdiYXNfbGJfdW5fc3RlcDEnKSk7CgkJJG91dFtdID0gc3Rh cnRUYWJsZSggJ2VkaXQnICk7CgkJJG91dFtdID0gdHIoCgkJCQl0ZCgKCQkJCQlnVHh0KCdi YXNfbGJfdW5fc3RlcDFfdGV4dCcpLgoJCQkJCWZvcm0oCgkJCQkJCWZJbnB1dCggInN1Ym1p dCIsICcnLCBnVHh0KCAnYmFzX2xiX3VuaW5zdGFsbF9zdGFydCcgKSwgInB1Ymxpc2giICku CgkJCQkJCWVJbnB1dCggJ2Jhc19saWdodGJveF9hZG1pbicgKS4KCQkJCQkJc0lucHV0KCd1 bmluc3RhbGxfc3RlcDInKQoJCQkJCSkKCQkJCSkKCQkJKTsKCQkkb3V0W10gPSB0cigKCQkJ CXRkKAoJCQkJCWZvcm0oCgkJCQkJCWZJbnB1dCggInN1Ym1pdCIsICcnLCBnVHh0KCAnYmFz X2xiX3VuaW5zdGFsbF9hYm9ydCcgKSwgInB1Ymxpc2giICkuCgkJCQkJCWVJbnB1dCggJ2Jh c19saWdodGJveF9hZG1pbicgKQoKCQkJCQkpCgkJCQkpCgkJCSk7CgkJJG91dFtdID0gZW5k VGFibGUoICdlZGl0JyApOwoJCXJldHVybiBqb2luKG4sJG91dCk7Cgl9CgovLy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGlnaHRib3hfdW5pbnN0YWxsX3N0ZXAyKCkK CXsKCQlnbG9iYWwgJGZpbGVzLCRpbWFnZXM7CgkJcGFnZXRvcCgnYmFzIExpZ2h0Ym94Jyxn VHh0KCdiYXNfbGJfdW5pbnN0YWxsJykuJyAtICcuZ1R4dCgnYmFzX2xiX3VuX3N0ZXAyJykp OwoJCQkkb3V0W10gPSAnPGgxPllvdSBjYW4gbm93IGRlbGV0ZSB0aGUgcGx1Z2luPC9oMT4n OwoJCQkkb3V0W10gPSAnPHVsPic7CgkJCWZvcmVhY2goJGZpbGVzIGFzICRmaWxlKXsKCQkJ CSRmaWxlSUQgPSBmZXRjaCgnaWQnLCd0eHBfZmlsZScsJ2ZpbGVuYW1lJywkZmlsZVsnZmls ZW5hbWUnXSk7CgkJCQkkcSA9IHNhZmVfZGVsZXRlKCJ0eHBfZmlsZSIsImlkPSckZmlsZUlE JyIpOwoJCQkJJGRlbGV0ZSA9IHVubGluaygnLi4vZmlsZXMvJy4kZmlsZVsnZmlsZW5hbWUn XSk7CgkJCQkkb3V0W10gPSB0YWcoZ1R4dCgnZmlsZScpLicgIicuJGZpbGVbJ2ZpbGVuYW1l J10uJyInIC5nVHh0KCdkZWxldGVkJyksJ2xpJyk7CgkJCX0KCQkJZm9yZWFjaCgkaW1hZ2Vz IGFzICRpbWcpewoJCQkJJGltZ0lEID0gZmV0Y2goJ2lkJywndHhwX2ltYWdlJywnbmFtZScs JGltZ1snbmFtZSddKTsKCQkJCSRxID0gc2FmZV9kZWxldGUoInR4cF9pbWFnZSIsImlkPSck aW1nSUQnIik7CgoJCQkJJGRlbGV0ZSA9IHVubGluaygnLi4vaW1hZ2VzLycuJGltZ0lELiRp bWdbJ2V4dCddKTsKCQkJCSRvdXRbXSA9IHRhZyhnVHh0KCdpbWFnZScpLicgIicuJGltZ0lE LiRpbWdbJ2V4dCddLiciJyAuZ1R4dCgnZGVsZXRlZCcpLCdsaScpOwoJCQl9CgoJCQkkcSA9 IHNhZmVfZGVsZXRlKCJ0eHBfcHJlZnMiLCJldmVudD0nYmFzX2xpZ2h0Ym94JyIpOwoJCQkk b3V0W10gPSB0YWcoZ1R4dCgnYmFzX2xiX3ByZWZzX2RlbGV0ZWQnKSwnbGknKTsKCQkJJHEg PSBzYWZlX2RlbGV0ZSgidHhwX2NhdGVnb3J5IiwibmFtZT0nYmFzX2xpZ2h0Ym94JyIpOwoJ CQkkb3V0W10gPSB0YWcoZ1R4dCgnYmFzX2xiX2NhdF9kZWxldGVkJyksJ2xpJyk7CgkJCSRv dXRbXSA9ICc8L3VsPic7CgkJCSRvdXRbXSA9IHRhZyhnVHh0KCdiYXNfbGJfcmVtb3ZlJyks J3AnKTsKCQkJcmV0dXJuICc8ZGl2IHN0eWxlPSJtYXJnaW46NTBweDsiPicuam9pbihuLCRv dXQpLic8L2Rpdj4nOwoJfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJZnVuY3Rpb24gYmFz X2xpZ2h0Ym94X3RleHQoKQoJewoJCWdsb2JhbCAkcHJlZnM7CgkJJGFjdExhbmcgPSBzdHJf cmVwbGFjZSgnLScsJ18nLCRwcmVmc1snbGFuZ3VhZ2UnXSk7CgkJJGxhbmdGdW5jdCA9ICdi YXNfbGlnaHRib3hfbGFuZ18nLiRhY3RMYW5nOwoJCUBpbmNsdWRlX3BsdWdpbigkbGFuZ0Z1 bmN0KTsKCQlpZihmdW5jdGlvbl9leGlzdHMoJGxhbmdGdW5jdCkpewoJCQkkYmFzVGV4dGFy cmF5ID0gJGxhbmdGdW5jdCgpOwoJCQkkY2hlY2tIZWxwID0gZmV0Y2goJ2hlbHAnLCd0eHBf cGx1Z2luJywnbmFtZScsJ2Jhc19saWdodGJveCcpOwoJCQlpZighcHJlZ19tYXRjaCgiPVw8 XCFcLVwtIExhbmdcOiRhY3RMYW5nIFwtXC1cPj0iLCRjaGVja0hlbHApKXsKCQkJCQkkbGFu Z0Z1bmN0KCd1cGRhdGVEQicpOwoJCQl9CgkJfQoJCWVsc2V7CgkJCSRiYXNUZXh0YXJyYXkg PSBiYXNfbGlnaHRib3hfbGFuZ19lbl9nYigpOwoJCQkkY2hlY2tIZWxwID0gZmV0Y2goJ2hl bHAnLCd0eHBfcGx1Z2luJywnbmFtZScsJ2Jhc19saWdodGJveCcpOwoJCQlpZighcHJlZ19t YXRjaCgiPVw8XCFcLVwtIExhbmdcOmVuX2diIFwtXC1cPj0iLCRjaGVja0hlbHApKXsKCQkJ CQliYXNfbGlnaHRib3hfbGFuZ19lbl9nYigndXBkYXRlREInKTsKCgkJCX0KCgkJfQoJCWZv cmVhY2goJGJhc1RleHRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSl7CgkJCSRHTE9CQUxTWyd0 ZXh0YXJyYXknXVska2V5XSA9ICR2YWx1ZTsKCQl9Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCglnbG9iYWwgJGZpbGVVUkw7CgkkZmlsZVVSTCA9ICdodHRwOi8vc2FtaXNkYXQub3Jn L3B1YmxpYy1maWxlcy9saWdodGJveDA0JzsKCSRmaWxlVVJMID0gJy4uL3B1YmxpYy1maWxl cy9saWdodGJveDA0JzsKCglnbG9iYWwgJGZpbGVzOwoJJGZpbGVzW10gPSBhcnJheSgnZmls ZW5hbWUnPT4nYmFzX2xiMDRfcHJvdG90eXBlLmpzJywnY2F0ZWdvcnknPT4nYmFzX2xpZ2h0 Ym94JywnZGVzY3JpcHRpb24nID0+ICdUaGlzIGZpbGUgaXMgdXNlZCBieSBiYXMgTGlnaHRi b3guPGJyLz4gUHJvdG90eXBlIGJ5IFNhbSBTdGVwaGVuc29uLjxici8+IFZpc2l0IGh0dHA6 Ly9wcm90b3R5cGUuY29uaW8ubmV0LycpOwoJJGZpbGVzW10gPSBhcnJheSgnZmlsZW5hbWUn PT4nYmFzX2xiMDRfc2NyaXB0YWN1bG91cy5qcycsJ2NhdGVnb3J5Jz0+J2Jhc19saWdodGJv eCcsJ2Rlc2NyaXB0aW9uJyA9PiAnVGhpcyBmaWxlIGlzIHVzZWQgYnkgYmFzIExpZ2h0Ym94 Ljxici8+IFNjcmlwdGFjdWxvdXMgYnkgVGhvbWFzIEZ1Y2hzLjxici8+IFZpc2l0IGh0dHA6 Ly9zY3JpcHQuYWN1bG8udXMvJyk7CgkkZmlsZXNbXSA9IGFycmF5KCdmaWxlbmFtZSc9Pidi YXNfbGIwNF9lZmZlY3RzLmpzJywnY2F0ZWdvcnknPT4nYmFzX2xpZ2h0Ym94JywnZGVzY3Jp cHRpb24nID0+ICdUaGlzIGZpbGUgaXMgdXNlZCBieSBiYXMgTGlnaHRib3guPGJyLz4gU2Ny aXB0YWN1bG91cyBieSBUaG9tYXMgRnVjaHMuPGJyLz4gVmlzaXQgaHR0cDovL3NjcmlwdC5h Y3Vsby51cy8nKTsKCSRmaWxlc1tdID0gYXJyYXkoJ2ZpbGVuYW1lJz0+J2Jhc19sYjA0X2xp Z2h0Ym94LmpzJywnY2F0ZWdvcnknPT4nYmFzX2xpZ2h0Ym94JywnZGVzY3JpcHRpb24nID0+ ICdUaGlzIGZpbGUgaXMgdXNlZCBieSBiYXMgTGlnaHRib3guPGJyLz4gTGlnaHRib3ggYnkg TG9rZXNoIERoYWthci4gPGJyLz4gVmlzaXQgaHR0cDovL3d3dy5odWRkbGV0b2dldGhlci5j b20vcHJvamVjdHMvbGlnaHRib3gyLycpOwoJJGZpbGVzW10gPSBhcnJheSgnZmlsZW5hbWUn PT4nYmFzX2xiMDRfbGlnaHRib3guY3NzJywnY2F0ZWdvcnknPT4nYmFzX2xpZ2h0Ym94Jywn ZGVzY3JpcHRpb24nID0+ICdUaGlzIGZpbGUgaXMgdXNlZCBieSBiYXMgTGlnaHRib3guPGJy Lz4gTGlnaHRib3ggYnkgTG9rZXNoIERoYWthci48YnIvPiBWaXNpdCBodHRwOi8vd3d3Lmh1 ZGRsZXRvZ2V0aGVyLmNvbS9wcm9qZWN0cy9saWdodGJveDIvJyk7CgoJZ2xvYmFsICRpbWFn ZXM7CgkkaW1hZ2VzW10gPSBhcnJheSgnbmFtZSc9PidiYXNfbGIwNF9ibGFuay5naWYnLCdl eHQnPT4nLmdpZicsJ3cnPT4nMScsJ2gnPT4nMScsJ2NhdGVnb3J5Jz0+J2Jhc19saWdodGJv eCcsJ2NhcHRpb24nPT4nVGhpcyBpbWFnZSBpcyB1c2VkIGJ5IGJhcyBMaWdodGJveCcpOwoJ JGltYWdlc1tdID0gYXJyYXkoJ25hbWUnPT4nYmFzX2xiMDRfY2xvc2UuZ2lmJywnZXh0Jz0+ Jy5naWYnLCd3Jz0+JzI2JywnaCc9PicyNicsJ2NhdGVnb3J5Jz0+J2Jhc19saWdodGJveCcs J2NhcHRpb24nPT4nVGhpcyBpbWFnZSBpcyB1c2VkIGJ5IGJhcyBMaWdodGJveCcpOwoJJGlt YWdlc1tdID0gYXJyYXkoJ25hbWUnPT4nYmFzX2xiMDRfY2xvc2VsYWJlbC5naWYnLCdleHQn PT4nLmdpZicsJ3cnPT4nNjYnLCdoJz0+JzIyJywnY2F0ZWdvcnknPT4nYmFzX2xpZ2h0Ym94 JywnY2FwdGlvbic9PidUaGlzIGltYWdlIGlzIHVzZWQgYnkgYmFzIExpZ2h0Ym94Jyk7Cgkk aW1hZ2VzW10gPSBhcnJheSgnbmFtZSc9PidiYXNfbGIwNF9sb2FkaW5nLmdpZicsJ2V4dCc9 PicuZ2lmJywndyc9PiczMicsJ2gnPT4nMzInLCdjYXRlZ29yeSc9PidiYXNfbGlnaHRib3gn LCdjYXB0aW9uJz0+J1RoaXMgaW1hZ2UgaXMgdXNlZCBieSBiYXMgTGlnaHRib3gnKTsKCSRp bWFnZXNbXSA9IGFycmF5KCduYW1lJz0+J2Jhc19sYjA0X25leHQuZ2lmJywnZXh0Jz0+Jy5n aWYnLCd3Jz0+JzQ1JywnaCc9Pic0NScsJ2NhdGVnb3J5Jz0+J2Jhc19saWdodGJveCcsJ2Nh cHRpb24nPT4nVGhpcyBpbWFnZSBpcyB1c2VkIGJ5IGJhcyBMaWdodGJveCcpOwoJJGltYWdl c1tdID0gYXJyYXkoJ25hbWUnPT4nYmFzX2xiMDRfbmV4dGxhYmVsLmdpZicsJ2V4dCc9Picu Z2lmJywndyc9Pic2MycsJ2gnPT4nMzInLCdjYXRlZ29yeSc9PidiYXNfbGlnaHRib3gnLCdj YXB0aW9uJz0+J1RoaXMgaW1hZ2UgaXMgdXNlZCBieSBiYXMgTGlnaHRib3gnKTsKCSRpbWFn ZXNbXSA9IGFycmF5KCduYW1lJz0+J2Jhc19sYjA0X3ByZXYuZ2lmJywnZXh0Jz0+Jy5naWYn LCd3Jz0+JzQ1JywnaCc9Pic0NScsJ2NhdGVnb3J5Jz0+J2Jhc19saWdodGJveCcsJ2NhcHRp b24nPT4nVGhpcyBpbWFnZSBpcyB1c2VkIGJ5IGJhcyBMaWdodGJveCcpOwoJJGltYWdlc1td ID0gYXJyYXkoJ25hbWUnPT4nYmFzX2xiMDRfcHJldmxhYmVsLmdpZicsJ2V4dCc9PicuZ2lm Jywndyc9Pic2MycsJ2gnPT4nMzInLCdjYXRlZ29yeSc9PidiYXNfbGlnaHRib3gnLCdjYXB0 aW9uJz0+J1RoaXMgaW1hZ2UgaXMgdXNlZCBieSBiYXMgTGlnaHRib3gnKTsKCgovLy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBiYXNfbGlnaHRib3hfaW1wb3J0X2ZpbGUoJGZp bGUsJHR5cGUpCgl7CgkJZ2xvYmFsICRmaWxlVVJMOwoJCWV4dHJhY3QoJGZpbGUpOwoJCWZv cmVhY2goJGZpbGUgYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQkkYnVpbGRfcXVlcnkgW10g PSAiJGtleSA9ICckdmFsdWUnIjsKCQl9CgkJJGJ1aWxkX3F1ZXJ5ID0gam9pbignLCcsJGJ1 aWxkX3F1ZXJ5KTsKCgkJaWYoJHR5cGUgPT0gJ2ZpbGUnKQoJCXsKCQkJaWYoIWZpbGVfZXhp c3RzKCIuLi9maWxlcy8kZmlsZW5hbWUiKSkKCQkJewoJCQkJaWYoQGNvcHkoIiRmaWxlVVJM LyRmaWxlbmFtZSIsICIuLi9maWxlcy8kZmlsZW5hbWUiKSkKCQkJCXsKCQkJCQkkcXVlcnkg PSBzYWZlX2luc2VydCgidHhwXyR0eXBlIiwkYnVpbGRfcXVlcnkpOwoJCQkJCXJldHVybiB0 YWcoJGZpbGVuYW1lLCdiJykuZ1R4dCgnYmFzX2xiX2luX2ZpbGVfaW1wb3J0ZWQnKTsKCQkJ CX0KCQkJCWVsc2UKCQkJCQlyZXR1cm4gdGFnKCRmaWxlbmFtZSwnYicpLmdUeHQoJ2Jhc19s Yl9pbl9maWxlX2ltcG9ydF9lcnJvcicpOzsKCQkJfQoJCQllbHNlewoJCQkJcmV0dXJuIHRh ZygkZmlsZW5hbWUsJ2InKS5nVHh0KCdiYXNfbGJfaW5fZmlsZV9hbHJlYXlkX2V4aXN0Jyk7 CgkJCX0KCgkJfQoJCWlmKCR0eXBlID09ICdpbWFnZScpewoJCQlpZighZmV0Y2goJ2lkJywn dHhwX2ltYWdlJywnbmFtZScsJG5hbWUpKXsKCQkJCWlmKEBjb3B5KCIkZmlsZVVSTC8kbmFt ZSIsICIuLi9pbWFnZXMvJG5hbWUiKSkKCQkJCXsKCQkJCQkkcXVlcnkgPSBzYWZlX2luc2Vy dCgidHhwXyR0eXBlIiwkYnVpbGRfcXVlcnkpOwoJCQkJCSRpZCA9IG15c3FsX2luc2VydF9p ZCgpOwoJCQkJCXJlbmFtZSgiLi4vaW1hZ2VzLyRuYW1lIiwgIi4uL2ltYWdlcy8kaWQkZXh0 Iik7CgkJCQkJcmV0dXJuIHRhZygkbmFtZSwnYicpLmdUeHQoJ2Jhc19sYl9pbl9maWxlX2lt cG9ydGVkJyk7CgkJCQl9CgkJCQllbHNlCgkJCQkJcmV0dXJuIHRhZygkbmFtZSwnYicpLmdU eHQoJ2Jhc19sYl9pbl9maWxlX2ltcG9ydF9lcnJvcicpOzsKCQkJfQoJCQllbHNlCgkJCQly ZXR1cm4gdGFnKCRuYW1lLCdiJykuZ1R4dCgnYmFzX2xiX2luX2ZpbGVfYWxyZWF5ZF9leGlz dCcpOwoJCX0KCX0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGJhc19saWdo dGJveF9sYW5nX2VuX2diKCRhY3Rpb24gPSAndGV4dGFycmF5JykKCXsKCQkkYmFzTGFuZ1sn dGV4dGFycmF5J11bJ2Jhc19sYl9hZG1pbiddID0gJ0xpZ2h0Ym94IHByZWZlcmVuY2VzJzsK CQkkYmFzTGFuZ1sndGV4dGFycmF5J11bJ2Jhc19sYl9hZG1pbl9zYXZlJ10gPSAnU2F2ZSBw cmVmZXJlbmNlcyc7CgkJJGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfaW5zdGFsbCdd ID0gJ0luc3RhbGwnOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsnYmFzX2xiX2luX3N0ZXAx J10gPSAnU3RhcnQnOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsnYmFzX2xiX2luX3N0ZXAx X3RleHQnXSA9ICcKCQkJCQkJCTxoMj5BZHZhbmNlZCBJbnN0YWxsIG9mIGJhcyBMaWdodGJv eDwvaDI+CgkJCQkJCQk8cD5UaGlzIHNjcmlwdCBsZWFkcyB5b3UgdGhvdWdoIHRoZSBhZHZh Y2VkIGluc3RhbGwgb2YgYmFzIExpZ2h0Ym94LjwvcD4KCQkJCQkJCTxwPkZvbGxvd2luZyBh Y3Rpb25zIHdpbGwgYmUgZG9uZTo8L3A+CgkJCQkJCQk8dWw+CgkJCQkJCQkJPGxpPkltcG9y dCBpbWFnZXMgYW5kIGZpbGVzLjwvbGk+CgkJCQkJCQkJPGxpPkNvbmZpZ3VyZSB0aGUgLmNz cyBhbmQgLmpzIGZpbGVzLjwvbGk+CgkJCQkJCQkJPGxpPkFkZCBwbHVnaW5cJ3MgcHJlZmVy ZW5jZXMgdG8gdHhwLjwvbGk+CgkJCQkJCQkJPGxpPkNvbmZpZ3VyZSBwbHVnaW48L2xpPgoJ CQkJCQkJPC91bD4KCQkJCQkJCTxwPk1ha2Ugc3VyZSB0aGF0IGEgaW50ZXJuZXQgY29ubmVj dGlvbiBpcyBvcGVuIHRvIGltcG9ydGluZyBmaWxlcyBhbmQgaW1hZ2VzLjwvcD4KCQkJCQkJ CTxwPk9mIGNvdXJzZSB0aGVyZSBpcyBhIHVuaW5zdGFsbCBzY3JpcHQsIGlmIHlvdSB3YW50 IHRvIHJlbW92ZSB0aGUgcGx1Z2luIGxhdGVyLjwvcD4KCQkJCQkJCSc7CgoJCSRiYXNMYW5n Wyd0ZXh0YXJyYXknXVsnYmFzX2xiX2luX3N0YXJ0J10gPSAnU3RhcnQgYWR2YW5kZWQgaW5z dGFsbCc7CgkJJGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfaW5fbmV4dCddID0gJ05l eHQgU3RlcCc7CgkJJGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfaW5fc3RlcDInXSA9 ICdJbXBvcnRpbmcgRmlsZXMnOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsnYmFzX2xiX2lu X3N0ZXAyX3N0YXJ0J10gPSAnCgkJCQkJCQk8aDE+SW1wb3J0aW5nIGltYWdlcyBhbmQgZmls ZXM8L2gxPgoJCQkJCQkJPHA+WW91IGNhbiBpbXBvcnQgYWxsIG5lZWRlZCBmaWxlcyBhbmQg aW1hZ2VzIGF1dG9tYXRpY2x5IGJ5IGNsaWNraW5nICJJbXBvcnQiLjwvcD4KCQkJCQkJCTxw PlRoZSBmaWxlcyB3aWxsIGJlIGNvcGllZCBmcm9tIHNhbWlzZGF0Lm9yZyB0byB5b3VyIHR4 cC1zeXN0ZW0uPC9wPgoJCQkJCQkJPHA+TWFrZSBzdXJlIHRoYXQgeW91IGFyZSBjb25uZWN0 ZWQgdG8gdGhlIGludGVybmV0LjwvcD4KCQkJCQkJCSc7CgkJJGJhc0xhbmdbJ3RleHRhcnJh eSddWydiYXNfbGJfaW5fc3RlcDJfc2tpcCddID0gJwoJCQkJCQkJPGgxPlNraXAgaW1wb3J0 aW5nPC9oMT4KCQkJCQkJCTxwPklmIHRoaXMgaW1wb3J0IGZ1bmN0aW9uIGZhaWxzIG9yIHlv dSB3YW50IHRvIHVwbG9hZCB0byBmaWxlcyBtYW51YWwsIGRvd25sb2FkPC9wPgoJCQkJCQkJ PHA+PGEgaHJlZj0iaHR0cDovL3NhbWlzZGF0Lm9yZy9wdWJsaWMtZmlsZXMvbGlnaHRib3gw NC9iYXNfbGlnaHRib3guemlwIj5iYXNfbGlnaHRib3guemlwPC9hPjwvcD4KCQkJCQkJCTxw PlVwbG9hZCBhbGwgaW1hZ2VzIHdpdGggdHhwLWltYWdlIG1hbmFnbWVudCBhbmQgYWxsIC5q cyBhbmQgLmNzcyBmaWxlIGJ5IHR4cCBmaWxlIG1hbmFnbWVudC48L3A+CgkJCQkJCQknOwoJ CSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsnYmFzX2xiX2luX3N0YXJ0X2ltcG9ydCddID0gJ1N0 YXJ0IGltcG9ydCc7CgkJJGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfaW5fc2tpcCdd ID0gJ1NraXAgSW1wb3J0JzsKCQkkYmFzTGFuZ1sndGV4dGFycmF5J11bJ2Jhc19sYl9pbl9m aWxlX2ltcG9ydGVkJ10gPSAnIGhhcyBiZWVuIGltcG9ydGVkLic7CgkJJGJhc0xhbmdbJ3Rl eHRhcnJheSddWydiYXNfbGJfaW5fZmlsZV9pbXBvcnRfZXJyb3InXSAgPSAnIGltcG9ydCBm YWlsZC4nOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsnYmFzX2xiX2luX2ZpbGVfYWxyZWF5 ZF9leGlzdCddID0gJyBhbHJlYWR5IGV4aXN0cy4nOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXkn XVsnYmFzX2xiX2luX3N0ZXAzJ10gPSAnQ29uZmlndXJlJzsKCQkkYmFzTGFuZ1sndGV4dGFy cmF5J11bJ2Jhc19sYl9pbl9zdGVwM190ZXh0J10gPSAnCgkJCQkJCQk8aDE+Q29uZmlndXJl IHBsdWdpbnMgcHJlZmVyZW5jZXM8L2gxPgoJCQkJCQkJPHA+SW4gdGhpcyBzdGVwIGFsbCBm aWxlIGFuZCBpbWFnZXMgaWRcJ3Mgd2lsbCBiZSBzYXZlZCB0byBkYi48L3A+CgkJCQkJCQk8 cD5JZiB5b3Ugc2tpcGVkIHRoZSBhdXRvbWF0aWMgaW1wb3J0LCBtYWtlIHN1cmUsIHRoYXQg eW91IHVwbG9hZGVkIGFsbCBmaWxlcyBhbmQgaW1hZ2VzLjwvcD4KCQkJCQkJCTxwPlRoZSBq YXZhc2NyaXB0IGFuZCBDU1MgZmlsZXMgd2lsbCBiZSB1cGRhdGVkIHRvIGZpdCB0byB5b3Vy IHR4cC48L3A+CgkJCQkJCQknOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsnYmFzX2xiX2lu X2RvbmUnXSA9ICcKCQkJCQkJCTxoMT5JbnN0YWxsYXRpb24gY29tcGxldGVkPC9oMT4KCQkJ CQkJCTxwPllvdSBjYW4gdXNlIGJhc19saWdodGJveCBub3c6PC9wPgoJCQkJCQkJPHA+SW5j bHVkZSA8Y29kZT4mbHQ7dHhwOmJhc19saWdodGJveF9oZWFkIC8+PC9jb2RlPiBpbnRvIHlv dXIgaGVhZC48L3A+CgkJCQkJCQk8cD5JIHdvdWxkIHJlY29tbW9uIHRoYXQgeW91IG9ubHkg aW5jbHVkZSBpdCB0byBzZWN0aW9ucyB3aGVyZSB5b3UgdXNlIExpZ2h0Ym94LCBiZWNhdXNl IHRoZSBzY3JpcHRzIG5vdCBzbWFsbC48L3A+CgkJCQkJCQk8cD5Vc2UgPGNvZGU+Jmx0O3R4 cDpiYXNfbGlnaHRib3ggLz48L2NvZGU+IGluIHlvdXIgYXJ0aWNsZSBvciBhcnRpY2xlIGZv cm1zLjwvcD4KCQkJCQkJCTxwPlVzZSA8Y29kZT4mbHQ7dHhwOmJhc19saWdodGJveCB1c2Vf c2VjdGlvbj0idHJ1ZSIvPjwvY29kZT4gb3IgPGNvZGU+Jmx0O3R4cDpiYXNfbGlnaHRib3gg dXNlX2NhdD0idHJ1ZSIvPjwvY29kZT4gcGFnZXMgb3IgZm9ybXMuPC9wPgoJCQkJCQkJPHA+ T24gdGhlIG5leHQgc2NyZWVuIHlvdSBjYW4gY29uZmlnIHRoZSBwbHVnaW4gdG8gbWFrZSBp dCBmaXR0aW5nIHRwIHlvdXIgcHJvcG9zYWxzLjwvcD4KCQkJCQkJCTxwPkZvciBtb3JlIGlu Zm9ybWF0aW9ucyByZWFkIHRoZSA8YSBocmVmPSI/ZXZlbnQ9cGx1Z2luJnN0ZXA9cGx1Z2lu X2hlbHAmbmFtZT1iYXNfbGlnaHRib3giPnBsdWdpblwncyBoZWxwPC9hPiBvciB2aXNpdCA8 YSBocmVmPSJodHRwOi8vbGFiLnNhbWlzZGF0Lm9yZy9iYXMtbGlnaHRib3giPnNhbWlzZGF0 Lm9yZzwvYT4uPC9wPgoJCQkJCQkJJzsKCQkkYmFzTGFuZ1sndGV4dGFycmF5J11bJ2Jhc19s Yl91bmluc3RhbGwnXSA9ICdVbmluc3RhbGwnOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsn YmFzX2xiX3VuX3N0ZXAxJ10gPSAnU3RhcnQnOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsn YmFzX2xiX3VuX3N0ZXAyJ10gPSAnUmVtb3ZpbmcgYWxsIGZpbGVzIGFuZCBwcmVmcyc7CgkJ JGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfdW5fc3RlcDFfdGV4dCddID0gJwoJCQkJ CQkJPGgxPlVuaW5zdGFsbCBiYXMgTGlnaHRib3g8L2gxPgoJCQkJCQkJPHA+VGhpcyBzY3Jp cHQgd2lsbCByZW1vdmUgYmFzIExpZ2h0Ym94IGFuZCB5b3UgY2FuIGRlbGV0ZSBpdCBhdCBw bHVnaW5zIHRhYi48L3A+CgkJCQkJCQk8cD5Gb2xsb3dpbmcgYWN0aW9ucyB3aWxsIGJlIGRv bmU6PC9wPgoJCQkJCQkJPHVsPgoJCQkJCQkJCTxsaT5EZWxldGUgYWxsIGltYWdlcyBhbmQg ZmlsZXMgd2ppY2ggd2hlcmUgaW1wb3J0ZWQgZHVyaW5nIHRoZSBhZHZhbmNlZCBpbnN0YWxs LjwvbGk+CgkJCQkJCQkJPGxpPlJlbW92aW5nIGFsbCBwbHVnaW4gcHJlZnMgZnJvbSB0eHAu PC9saT4KCQkJCQkJCTwvdWw+CgkJCQkJCQk8cD5UaGluayB0d2ljZSwgYmVmb3JlIHlvdSBz dGFydCBvciBhYm9ydC48L3A+CgkJCQkJCQknOwoJCSRiYXNMYW5nWyd0ZXh0YXJyYXknXVsn YmFzX2xiX3VuaW5zdGFsbF9zdGFydCddID0gJ1N0YXJ0IHVuaW5zdGFsbCc7CgkJJGJhc0xh bmdbJ3RleHRhcnJheSddWydiYXNfbGJfdW5pbnN0YWxsX2Fib3J0J10gPSAnQWJvcnQgdW5p bnN0YWxsJzsKCQkkYmFzTGFuZ1sndGV4dGFycmF5J11bJ2Jhc19sYl91bl9zdGVwMiddID0g J1N0ZXAgMic7CgkJJGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfcHJlZnNfZGVsZXRl ZCddID0gJ0FsbCBwbHVnaW4gcHJlZmVyZW5jZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBk Yic7CgkJJGJhc0xhbmdbJ3RleHRhcnJheSddWydiYXNfbGJfY2F0X2RlbGV0ZWQnXSA9ICdU aGUgZmlsZSBjYXQgYmFzX2xpZ2h0Ym94IGhhcyBiZWVuIGRlbGV0ZWQnOwoJCSRiYXNMYW5n Wyd0ZXh0YXJyYXknXVsnYmFzX2xiX3JlbW92ZSddID0gJ1lvdSBjYW4gbm93IGRlbGV0ZSB0 aGUgcGx1Z2luIGF0IDxhIGhyZWY9Ij9ldmVudD1wbHVnaW4iPnBsdWdpbnMgdGFiPC9hPi4n OwoKCQkkYmFzTGFuZ1snZGInXVsnZGVzY3JpcHRpb24nXSA9ICdUaGlzIHBsdWdpbiBicmlu Z3MgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuaHVkZGxldG9nZXRoZXIuY29tL3Byb2plY3Rz L2xpZ2h0Ym94Mi8iPkxpZ2h0Ym94IEpTIHYyLjA8L2E+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93 d3cuaHVkZGxldG9nZXRoZXIuY29tLyI+TG9rZXNoIERoYWthciI8L2E+IHRvIHRleHRwYXR0 ZXJuLiBMaWdodGJveCBKUyBpcyBhIHNpbXBsZSwgdW5vYnRydXNpdmUgc2NyaXB0IHVzZWQg dG8gdG8gb3ZlcmxheSBpbWFnZXMgb24gdGhlIGN1cnJlbnQgcGFnZS4nOwoJCSRiYXNMYW5n WydkYiddWydoZWxwJ10gPSAnPCEtLSBMYW5nOmVuX2diIC0tPgoJCQkJCQk8aDE+PHN0cm9u Zz5iYXMgTGlnaHRib3g8L3N0cm9uZz48L2gxPgoJCQkJCQk8cD5ieSA8YSBocmVmPSJodHRw Oi8vc2FtaXNkYXQub3JnIj5CYXN0aWFuIFNhY2tlcm1hbm48L2E+PC9wPgoJCQkJCQk8cD5U aGlzIHBsdWdpbiBicmluZ3MgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuaHVkZGxldG9nZXRo ZXIuY29tL3Byb2plY3RzL2xpZ2h0Ym94Mi8iPkxpZ2h0Ym94IEpTPC9hPiBieSA8YSBocmVm PSJodHRwOi8vd3d3Lmh1ZGRsZXRvZ2V0aGVyLmNvbS8iPkxva2VzaCBEaGFrYXI8L2E+IHRv IHRleHRwYXR0ZXJuLjxiciAvPgoJCQkJCQlMaWdodGJveCBKUyBpcyBhIHNpbXBsZSwgdW5v YnRydXNpdmUgc2NyaXB0IHVzZWQgdG8gdG8gb3ZlcmxheSBpbWFnZXMgb24gdGhlIGN1cnJl bnQgcGFnZS48L3A+CgkJCQkJCTxwPkxpZ2h0Ym94IHVzZXMgPGEgaHJlZj0iaHR0cDovL3By b3RvdHlwZS5jb25pby5uZXQvIj5Qcm90b3R5cGU8L2E+IGJ5IDxhIGhyZWY9Imh0dHA6Ly9j b25pby5uZXQvIj5TYW0gU3RlcGhlbnNvbjwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly9zY3Jp cHQuYWN1bG8udXMvIj5TY3JpcHRhY3Vsb3VzPC9hPiBieSA8YSBocmVmPSJodHRwOi8vbWly LmFjdWxvLnVzLyI+VGhvbWFzIEZ1Y2hzPC9hPi48L3A+CgoJCQkJCQk8aDI+SW5zdGFsbGF0 aW9uPC9oMj4KCQkJCQkJPHA+QmVmb3JlIHlvdSBjYW4gdXNlIHRoaXMgcGx1Z2luLCB5b3Ug aGF2ZSB0byBydW4gdGhlIGFkdmFuY2VkIGluc3RhbGwgYXQgPGVtPmV4dGVuc2lvbjwvZW0+ IC0+IDxzdHJvbmc+PGVtPmJhcyBMaWdodGJveDwvc3Ryb25nPjwvZW0+LjxiciAvPgoJCQkJ CQlUaGUgc2NyaXB0IGltcG9ydHMgYWxsIGZpbGVzIGFuZCBpbWFnZXMgeW91IG5lZWQgZm9y IGxpZ2h0Ym94aW5nIGZyb20gPGEgaHJlZj0iaHR0cDovL3NhbWlzZGF0Lm9yZyI+c2FtaXNk YXQub3JnLjwvYT48L3A+CgkJCQkJCTxwPllvdSBjYW4gc2tpcCB0aGUgYXV0b21hdGljIGlt cG9ydCBhbmQgZG93bmxvYWQgdGhlIGZpbGVzIGFzIDxhIGhyZWY9Imh0dHA6Ly9zYW1pc2Rh dC5vcmcvcHVibGljLWZpbGVzL2xpZ2h0Ym94MDQvYmFzX2xpZ2h0Ym94LnppcCI+YmFzX2xp Z2h0Ym94LnppcDwvYT4gYW5kIHVwbG9hZCB0aGUgbWFudWFsLjxiciAvPgoJCQkJCQlVc2Ug dGhlIHR4cCBpbWFnZS1tYW5hZ21lbnQgZm9yIGltYWdlcyBhbmQgZmlsZS1tYW5hZ21lbnQg Zm9yIGZpbGVzLiBEb25gdCByZW5hbWUgdGhlIGZpbGVzLjwvcD4KCQkJCQkJPHA+SWYgeW91 IHdhbnQgdG8gdXNlIGEgY3VzdG9tLWZpZWxkIHRvIHJlZmVyIHRoZSBpbWFnZSBjYXRlZ29y eSwganVzdCByZW5hbWUgYW4gY3VzdG9tLWZpZWxkIHRvIDxzdHJvbmc+TGlnaHRib3g8L3N0 cm9uZz4uPGJyIC8+CgkJCQkJCVlvdSBjYW4gcmVuYW1lIGN1c3RvbS1maWVsZCBhdCBhZG1p biAtPiBhZHZhbmNlZCBwcmVmZXJlbmNlczwvcD4KCgkJCQkJCTxoMj5Mb2NhbGlzYXRpb248 L2gyPgoJCQkJCQk8cD5UaGUgZGVmYXVsdCBsYW5ndWFnZSBvZiA8c3Ryb25nPmJhcyBMaWdo Ym94PC9zdHJvbmc+IGlzIEVuZ2xpc2gsIGJ1dCB0aGVyZSBhcmUgc29tZSB0cmFuc2xhdGlv bnMuPGJyIC8+CgkJCQkJCUZvciBldmVyeSBzdXBwb3J0ZWQgbGFuZ3VhZ2UgdGhlcmUgaXMg YW4gYWRkaXRpb25hbCBwbHVnaW46PC9wPgoJCQkJCQk8dWw+CgkJCQkJCQk8bGk+PGEgaHJl Zj0iaHR0cDovL3NhbWlzZGF0Lm9yZy9maWxlcy9iYXNfbGlnaHRib3hfbGFuZ19ubF9ubC50 eHQiPkR1dGNoOiBiYXNfbGlnaHRib3hfbGFuZ19ubF9ubDwvYT4gdHJhbnNsYXRlZCBieSA8 YSBocmVmPSJodHRwOi8vc2VyZXBvLmNvbSI+U2ViYXN0aWFhbiBQb3V5ZXQ8L2E+PC9saT4K CQkJCQkJCTxsaT48YSBocmVmPSJodHRwOi8vc2FtaXNkYXQub3JnL2ZpbGVzL2Jhc19saWdo dGJveF9sYW5nX2RlX2RlLnR4dCI+R2VybWFuOiBiYXNfbGlnaHRib3hfbGFuZ19kZV9kZTwv YT4gdHJhbnNsYXRlZCBieSA8YSBocmVmPSJodHRwOi8vc2FtaXNkYXQub3JnIj5CYXN0aWFu IFNhY2tlcm1hbjwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9zYW1pc2Rh dC5vcmcvZmlsZXMvYmFzX2xpZ2h0Ym94X2xhbmdfcHRfcHQudHh0Ij5Qb3J0dWd1ZXNlOiBi YXNfbGlnaHRib3hfbGFuZ19wdF9wdDwvYT4gdHJhbnNsYXRlZCBieSA8YSBocmVmPSJodHRw Oi8vd3d3LnBhcGVsZGlnaXRhbC5wdCI+UnVpIFBpbnRvPC9hPjwvbGk+CgkJCQkJCTwvdWw+ CgkJCQkJCTxwPkRvd25sb2FkIHRoZSBsYW5ndWFnZSBwbHVnaW4sIGluc3RhbGwgYW5kIGFj dGl2YXRlIGl0LjxiciAvPgoJCQkJCQk8c3Ryb25nPmJhcyBMaWdodGJveDwvc3Ryb25nPiB3 aWxsIHVzZSB0aGlzIGxhbmd1YWdlIHBsdWdpbiwgaWYgeW91IGFjdGl2ZSB0aGlzIGxhbmd1 YWdlIGF0IDxlbT5hZG1pbjwvZW0+IC0+IDxlbT5tYW5hZ2UgbGFuZ3VhZ2U8L2VtPi48L3A+ CgoJCQkJCQk8aDI+UGx1Z2luIFBlcmZlcmVuY2VzPC9oMj4KCQkJCQkJPHA+QWZ0ZXIgeW91 IHJ1biB0aGUgYWR2YW5jZWQgaW5zdGFsbCwgeW91IGNhbiBzYXZlIHNvbWUgcGx1Z2luIHBy ZWZlcmVuY2VzLjxiciAvPgoJCQkJCQlUaGUgc2F2ZWQgcHJlZnMgYXJlIHVzZWQgYXMgZGVm YXVsdCB2YWx1ZXMgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBpbmNsdWRpbmcgdGhlIGF0 dHJpYnV0ZSBpbnRhZyBwbHVnaW4mIzgyMTc7cyB0YWcuPC9wPgoKCQkJCQkJPGgyPlVzYWdl PC9oMj4KCQkJCQkJPHA+UGxlYXNlIDxjb2RlPiZsdDt0eHA6YmFzX2xpZ2h0Ym94X2hlYWQg LyZndDs8L2NvZGU+IGludG8geW91ciBzaXRlcyBoZWFkLCB0aGlzIHRhZyB3aWxsIGFkZCBh bGwgc2NyaXB0IGFuZCBjc3MgdG8geW91ciBzaXRlLjxiciAvPgoJCQkJCQlUaGUgbGlnaHRi b3ggc2NyaXB0cyBhcmUgMTI0IGtCIGJpZywgc28gaW5jbHVkZSBpdCBvbmx5IHRvIHNlY3Rp b25zIHdoZXJlIHlvdSB3YW50IHRvIHVzZSBpdC48L3A+CgoJCQkJCQk8aDI+VXNhZ2UgaW4g YXJ0aWNsZSYjODIxNztzIGJvZHkgb3IgZXhjZXJwdCBvciBpbiBhcnRpY2xlLWZvcm08L2gy PgoJCQkJCQk8cD5JbmNsdWRlIDxjb2RlPiZsdDt0eHA6YmFzX2xpZ2h0Ym94IC8mZ3Q7PC9j b2RlPiB0byBhbiBhcnRpY2xlLCB5b3UgY2FuIGluY2x1ZGUgaXQgdG8gYm9keSBhbmQvb3Ig ZXhjZXJwdC48L3A+CgkJCQkJCTxwPllvdSBjYW4gcmVmZXIgdGhlIGltYWdlcyB3aXRoaW4g dGhlIHRhZyBieSBhdHJyaWJ1dGVzIDxzdHJvbmc+aW1nPC9zdHJvbmc+IG9yIDxzdHJvbmc+ Y2F0PC9zdHJvbmc+PC9wPgoJCQkJCQk8dWw+CgkJCQkJCQk8bGk+PGNvZGU+Jmx0O3R4cDpi YXNfbGlnaHRib3ggaW1nPSIyLDMsNyIvJmd0OzwvY29kZT48L2xpPgoJCQkJCQkJPGxpPjxj b2RlPiZsdDt0eHA6YmFzX2xpZ2h0Ym94IGNhdD0iYS1jYXQiLyZndDs8L2NvZGU+PC9saT4K CQkJCQkJPC91bD4KCQkJCQkJPHA+T3IgeW91IGluY2x1ZGUganVzdCBpbmNsdWRlIDxjb2Rl PiZsdDt0eHA6YmFzX2xpZ2h0Ym94IC8mZ3Q7PC9jb2RlPiBpbnRvIGFydGljbGUgYW5kIHJl ZmVyIGltYWdlczo8L3A+CgkJCQkJCTx1bD4KCQkJCQkJCTxsaT5Db21tYSBzZXBlcmF0ZWQg aW4gYXJ0aWNsZSYjODIxNztzIGltYWdlIGZpZWxkPC9saT4KCQkJCQkJCTxsaT5SZW5hbWUg YSBjdXN0b20tZmllbGQgdG8gPHN0cm9uZz5MaWdodGJveDwvc3Ryb25nPi4gVGhpcyBjdXN0 b20tZmllbGQgd2lsbCBiZSByZXBsYWNlZCBieSBhIGRyb3AtZG93biBsaXN0IG9mIGFsbCBp bWFnZSBjYXRlZ29yaWVzLiBTZWxlY3QgYSBjYXQgZnJvbSB0aGlzIGxpc3QuPC9saT4KCQkJ CQkJPC91bD4KCQkJCQkJPGgyPlVzYWdlIGluIHBhZ2Ugb3IgZm9ybXM8L2gyPgoJCQkJCQk8 cD5Zb3UgY2FuIGluY2x1ZGUgPGNvZGU+Jmx0O3R4cDpiYXNfbGlnaHRib3ggLyZndDs8L2Nv ZGU+IGludG8gcGFnZSwgdG9vLjxiciAvPgoJCQkJCQlGb3IgZXhhbXBsZSBwbGFjZSBpdCBp bnRvIHlvdXIgc2lyZWJhciBhbmQgc2hvdyB5b3VyIHRodW1icyB0aGVyZS48L3A+CgkJCQkJ CTxwPkluIHBhZ2UgdGhlcmUgaXMgb25seSBhIGluZGlyZWN0IHdheSB0byByZWZlciB0aGUg aW1hZ2VzOjwvcD4KCQkJCQkJPHVsPgoJCQkJCQkJPGxpPjxjb2RlPiZsdDt0eHA6YmFzX2xp Z2h0Ym94IHVzZV9zZWN0aW9uPSJ0cnVlIi8mZ3Q7PC9jb2RlPiBUaGlzIHdpbGwgc2hvdyBh bGwgdGh1bWJzIGZyb20gdGhlIGNhdGVnb3J5IHdpdGggdGhlIHZlcnkgc2FtZSBuYW1lIGFz IHRoZSBhY3R1YWwgc2VjdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIHNob3cg c29tZSBpbWFnZXMgYXQgc2VjdGlvbiAmIzgyMjA7YWJvdXQmIzgyMjE7LCBhZGQgYWxsIHRo ZXNlIGltYWdlcyB0byBpbWctY2F0ICYjODIyMDthYm91dCYjODIyMTsuIFJlbWVtYmVyIHRo YXQgc2VjdGlvbiYjODIxNztzIG5hbWUgYW5kIHNlY3Rpb24mIzgyMTc7cyBpdGxlIG11c3Qg YmUgdGhlIHNhbWUuPC9saT4KCQkJCQkJCTxsaT48Y29kZT4mbHQ7dHhwOmJhc19saWdodGJv eCB1c2VfY2F0PSJ0cnVlIi8mZ3Q7PC9jb2RlPiBUaGlzIHdpbGwgc2hvdyBhbGwgdGh1bWJz IGZyb20gdGhlIGNhdGVnb3J5IHdpdGggdGhlIHZlcnkgc2FtZSBuYW1lIGFzIHRoZSBhY3R1 YWwgY2F0ZWdvcnkuPC9saT4KCQkJCQkJPC91bD4KCgkJCQkJCTxoMj5QbHVnaW5zIEF0dHJp YnV0ZXM8L2gyPgoJCQkJCQk8cD5Zb3UgY2FuIGN1c3RvbWlzZSB0aGUgcGx1Z2luIGJ5IGlu Y2x1ZGluZyBhdHRyaWJ1dGVzIHRvIHRhZywgeW91IGNhbiBlZGl0IHRoZSBkZWZhdWx0IHZh bHVlcyBhdCA8ZW0+ZXh0ZW5zaW9uPC9lbT4gLT4gPGVtPmJhcyBMaWdodGJveDwvZW0+PC9w PgoJCQkJCQk8dWw+CgkJCQkJCQk8bGk+PGNvZGU+Jmx0O3R4cDpiYXNfbGlnaHRib3ggY2Fw dGlvbj0ibmFtZXxhbHR8Y2FwdGlvbiIgLyZndDs8L2NvZGU+IFVzZSBjYXB0aW9uIHRvIGRl ZmluZSB3aGF0IHRleHQgaXMgZGlzcGxheWVkIGluIHRoZSBMaWdodGJveC4gQ2hvb3NlIGZy b20gPHN0cm9uZz5uYW1lPC9zdHJvbmc+LCA8c3Ryb25nPmFsdDwvc3Ryb25nPiBvciA8c3Ry b25nPmNhcHRpb248L3N0cm9uZz48L2xpPgoJCQkJCQkJPGxpPjxjb2RlPiZsdDt0eHA6YmFz X2xpZ2h0Ym94IGxhYmVsPSJNeSBwaWNzIiBsYWJlbHRhZz0iaDIiIC8mZ3Q7PC9jb2RlPiBE ZWZpbmUgYSBsYWJlbDwvbGk+CgkJCQkJCQk8bGk+PGNvZGU+Jmx0O3R4cDpiYXNfbGlnaHRi b3ggd3JhcHRhZz0idWwiIGJyZWFrPSJsaSIgLyZndDs8L2NvZGU+PC9saT4KCQkJCQkJCTxs aT48Y29kZT4mbHQ7dHhwOmJhc19saWdodGJveCB3cmFwdGFnPSJ1bCIgd3JhcGNsYXNzPSJ0 aHVtYmxpc3QiIGJyZWFrPSJsaSIgYnJlYWtjbGFzcz0iaW1nIiAvJmd0OzwvY29kZT4gQXNp Z24gY2xhc3NlcyB0byB3cmFwdGFnIGFuZCBicmVhayB0byBzdHlsZSB0aGVtIGJ5IENTUy48 L2xpPgoJCQkJCQk8L3VsPgoJCQkJCQknOwoKCQlpZigkYWN0aW9uID09ICd0ZXh0YXJyYXkn KQoJCQlyZXR1cm4gJGJhc0xhbmdbJ3RleHRhcnJheSddOwoJCWlmKCRhY3Rpb24gPT0gJ3Vw ZGF0ZURCJyl7CgkJCQkJc2FmZV91cGRhdGUoInR4cF9wbHVnaW4iLCJoZWxwID0gJyIuJGJh c0xhbmdbJ2RiJ11bJ2hlbHAnXS4iJyIsIm5hbWU9J2Jhc19saWdodGJveCciKTsKCQkJCQlz YWZlX3VwZGF0ZSgidHhwX3BsdWdpbiIsImRlc2NyaXB0aW9uID0gJyIuJGJhc0xhbmdbJ2Ri J11bJ2Rlc2NyaXB0aW9uJ10uIiciLCJuYW1lPSdiYXNfbGlnaHRib3gnIik7CgoJCQl9CgoJ fQoiO3M6MzoibWQ1IjtzOjMyOiJkMWNmZWE1YjZlNTgxNWEwNjRiM2E1YmY1MDVlZmM1OCI7 fQ==