# Name: msd_admin_datepicker v0.5 # Type: Admin only plugin # Add a jQuery UI date picker to a field in the write tab. # Author: Matt Davis # URL: http://photographdaddy.com # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjIwOiJtc2RfYWRtaW5fZGF0ZXBpY2tlciI7czo2OiJhdXRo b3IiO3M6MTA6Ik1hdHQgRGF2aXMiO3M6MTA6ImF1dGhvcl91cmkiO3M6MjY6Imh0dHA6Ly9w aG90b2dyYXBoZGFkZHkuY29tIjtzOjc6InZlcnNpb24iO3M6MzoiMC41IjtzOjExOiJkZXNj cmlwdGlvbiI7czo1NjoiQWRkIGEgalF1ZXJ5IFVJIGRhdGUgcGlja2VyIHRvIGEgZmllbGQg aW4gdGhlIHdyaXRlIHRhYi4iO3M6NDoiY29kZSI7czoxMjUzMToiIyMjIyMjIyMjIyMjIyMj IyMjDQojDQojCW1zZF9hZG1pbl9kYXRlcGlja2VyIGZvciBUZXh0cGF0dGVybg0KIwl2ZXJz aW9uIDAuNQ0KIwlieSBNYXR0IERhdmlzDQojCWh0dHA6Ly9waG90b2dyYXBoZGFkZHkuY29t DQojDQojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojICAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yDQojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQoj DQojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLA0KIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyAgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojICAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojDQojICAgIEEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0 IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uDQojDQojICAgIHYwLjIgLSBBZGRlZCBv cHRpb24gdG8gdXNlIGRhdGVwaWNrZXIgZm9yIHBvc3RlZCBvciBleHBpcmUgZGF0ZS4gDQoj ICAgICAgICAgICBVbmFibGUgdG8gc2V0IGNhbGVuZGFyIHVzaW5nIHBvc3RlZCBvciBleHBp cmUgdmFsdWUgYnV0IHNlbGVjdGluZyBhIGRhdGUgd29ya3MuDQojICAgIHYwLjMgLSBBbGxv dyBibGFuayB2YWx1ZSBmb3IgRGF0ZSBDdXN0b20gRmllbGQgcHJlZmVyZW5jZS4NCiMgICAg djAuNCAtIEZpeGVkIGxpbmsgdG8gT3B0aW9ucyBpbiBIZWxwLiAoVGhhbmtzIHBpZW1hbikN CiMgICAgdjAuNSAtIEFkZGVkIGljb24gZnJvbSBodHRwOi8vd3d3LmZhbWZhbWZhbS5jb20v bGFiL2ljb25zL3NpbGsvDQojDQojIyMjIyMjIyMjIyMjIyMjIyMjDQpkZWZpbmUoICdNU0Rf REFURVBJQ0tFUl9QUkVGSVgnICwgJ21zZF9kdHBrJyApOy8vRm9yIE1MUA0KZ2xvYmFsICRt c2RfZGF0ZXBpY2tlcl9zdHJpbmdzOyANCiRtc2RfZGF0ZXBpY2tlcl9zdHJpbmdzID0gYXJy YXkoIC8vRm9yIE1MUA0KCSdwcmVmZXJlbmNlcycJPT4gJ0RhdGUgUGlja2VyIFByZWZlcmVu Y2VzJywNCgknaW5zdHJ1Y3Rpb25zJwk9PiAnU2V0IHRoZSBEYXRlIEN1c3RvbSBGaWVsZCB0 byBhIGpRdWVyeSBTZWxlY3RvciBmb3IgdGhlIGZpZWxkIHlvdSBhcmUgdXNpbmcuPGJyLz5V c2UgYSBkaWZmZXJlbnQgc291cmNlIGZvciB0aGUgalF1ZXJ5IFVJIHNjcmlwdCBhbmQgQ1NT LiBNYXliZSBhIGxvY2FsIHZlcnNpb24/JywNCgknZmllbGQnID0+ICdEYXRlIEN1c3RvbSBG aWVsZCcsDQoJJ2pxdWVyeXVpJyA9PiAnalF1ZXJ5IFVJIFVSTCcsDQoJJ3RhYicgPT4gJ0Rh dGUgUGlja2VyJywNCgknanF1ZXJ5dWljc3MnID0+ICdqUXVlcnkgVUkgQ1NTIFVSTCcsDQoJ J2RhdGVmb3JtYXQnID0+ICdEYXRlIFBpY2tlciBEYXRlIEZvcm1hdCcsDQoJJ2FydGljbGVk YXRlJyA9PiAnVXNlIERhdGUgUGlja2VyIGZvciBQb3N0ZWQgRGF0ZT8nLA0KCSdleHBpcmVk YXRlJyA9PiAnVXNlIERhdGUgUGlja2VyIGZvciBFeHBpcmUgRGF0ZT8nDQopOw0KICANCnJl Z2lzdGVyX2NhbGxiYWNrKCdtc2RfYWRtaW5fZGF0ZXBpY2tlcl9vcHRpb25zJywgJ3BsdWdp bl9wcmVmcy5tc2RfYWRtaW5fZGF0ZXBpY2tlcicpOw0KcmVnaXN0ZXJfY2FsbGJhY2soJ21z ZF9hZG1pbl9kYXRlcnBpY2tlcl9pbnN0YWxsJywNCgkncGx1Z2luX2xpZmVjeWNsZS5tc2Rf YWRtaW5fZGF0ZXBpY2tlcicsICdpbnN0YWxsZWQnKTsNCnJlZ2lzdGVyX2NhbGxiYWNrKCdt c2RfYWRtaW5fZGF0ZXBpY2tlcl91bmluc3RhbGwnLA0KCSdwbHVnaW5fbGlmZWN5Y2xlLm1z ZF9hZG1pbl9kYXRlcGlja2VyJywgJ2RlbGV0ZWQnKTsNCnJlZ2lzdGVyX2NhbGxiYWNrKCdt c2RfZGF0ZXBpY2tlcl9lbnVtZXJhdGVfc3RyaW5ncycgLCAnbDEwbi5lbnVtZXJhdGVfc3Ry aW5ncycgKTsNCmFkZF9wcml2cygnbXNkX2FkbWluX2RhdGVwaWNrZXJfb3B0aW9ucycsIDEp Oy8vRXh0ZW4gdGFiDQphZGRfcHJpdnMoJ3BsdWdpbl9wcmVmcy5tc2RfYWRtaW5fZGF0ZXBp Y2tlcicsJzEsMicpOw0KcmVnaXN0ZXJfdGFiKCJleHRlbnNpb25zIiwgIm1zZF9hZG1pbl9k YXRlcGlja2VyX29wdGlvbnMiLCBtc2RfYWRtaW5fZGF0ZXBpY2tlcl9nVHh0KCd0YWInKSk7 Ly9FeHRlbiBUYWINCnJlZ2lzdGVyX2NhbGxiYWNrKCJtc2RfYWRtaW5fZGF0ZXBpY2tlcl9v cHRpb25zIiwgIm1zZF9hZG1pbl9kYXRlcGlja2VyX29wdGlvbnMiKTsvL0V4dGVuIFRhYg0K cmVnaXN0ZXJfY2FsbGJhY2soIm1zZF9hZG1pbl9kYXRlcGlja2VyIiwgImFydGljbGUiKTsN CnN3aXRjaChncHMoJ21zZF9kdHBrcicpKSB7DQoJY2FzZSAnanF1ZXJ5JzoNCgkJbXNkX2Fk bWluX2RhdGVwaWNrZXJfaWNvbl9qcXVlcnkoKTsNCgkJYnJlYWs7DQoJY2FzZSAnZmFtZmFt JzoNCgkJbXNkX2FkbWluX2RhdGVwaWNrZXJfaWNvbl9mYW1fZmFtKCk7DQoJCWJyZWFrOw0K CWRlZmF1bHQ6DQoJCWJyZWFrOw0KfQ0KbXNkX2FkbWluX2RhdGVwaWNrZXJfaW5zdGFsbCgp Ow0KIw0KI0FkZCBqYXZhc2NyaXB0IGFuZCBjc3MgdG8gQWRtaW4gV3JpdGUgVGFiLg0KIw0K ZnVuY3Rpb24gbXNkX2FkbWluX2RhdGVwaWNrZXIoJGV2ZW50LCAkc3RlcCkNCnsNCmdsb2Jh bCAkbXNkX2RhdGVwaWNrZXJfY3VzdG9tZmllbGQsICRtc2RfZGF0ZXBpY2tlcl9qcXVlcnl1 aSwgJG1zZF9kYXRlcGlja2VyX2pxdWVyeXVpX2NzcywgDQoJJG1zZF9kYXRlcGlja2VyX2Zv cm1hdCwgJG1zZF9kYXRlcGlja2VyX3Bvc3RlZCwkbXNkX2RhdGVwaWNrZXJfZXhwaXJlOw0K JG1zZF9pY29ucGF0aD0gaHUgLiAidGV4dHBhdHRlcm4vP21zZF9kdHBrcj1mYW1mYW0iOw0K ZWNobyA8PDxtc2RfZGF0ZV9qcw0KCTxsaW5rIGhyZWY9IiRtc2RfZGF0ZXBpY2tlcl9qcXVl cnl1aV9jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+DQoJPHNjcmlw dCBzcmM9JyRtc2RfZGF0ZXBpY2tlcl9qcXVlcnl1aScgdHlwZT0ndGV4dC9qYXZhc2NyaXB0 Jz48L3NjcmlwdD4NCgk8c2NyaXB0IHR5cGU9InRleHQvSmF2YVNjcmlwdCI+DQptc2RfZGF0 ZV9qczsNCmlmICgkbXNkX2RhdGVwaWNrZXJfcG9zdGVkPT0xKXsNCmVjaG8gPDw8bXNkX2Rh dGVfanMNCglmdW5jdGlvbiB1cGRhdGVMaW5rZWQoZGF0ZSkgew0KCQkkKCdpbnB1dFtuYW1l PW1vbnRoXScpLnZhbChkYXRlLnN1YnN0cmluZygwLDIpKTsNCgkJJCgnaW5wdXRbbmFtZT1k YXldJykudmFsKGRhdGUuc3Vic3RyaW5nKDMsNSkpOw0KCQkkKCdpbnB1dFtuYW1lPXllYXJd JykudmFsKGRhdGUuc3Vic3RyaW5nKDYsMTApKTsNCgl9DQptc2RfZGF0ZV9qczsNCn0NCmlm ICgkbXNkX2RhdGVwaWNrZXJfZXhwaXJlPT0xKXsNCmVjaG8gPDw8bXNkX2RhdGVfanMNCglm dW5jdGlvbiB1cGRhdGVMaW5rZWRFeHBpcmUoZGF0ZSkgew0KCQkkKCdpbnB1dFtuYW1lPWV4 cF9tb250aF0nKS52YWwoZGF0ZS5zdWJzdHJpbmcoMCwyKSk7DQoJCSQoJ2lucHV0W25hbWU9 ZXhwX2RheV0nKS52YWwoZGF0ZS5zdWJzdHJpbmcoMyw1KSk7DQoJCSQoJ2lucHV0W25hbWU9 ZXhwX3llYXJdJykudmFsKGRhdGUuc3Vic3RyaW5nKDYsMTApKTsNCgl9DQptc2RfZGF0ZV9q czsNCn0NCmlmICgkbXNkX2RhdGVwaWNrZXJfY3VzdG9tZmllbGQgIT0gJycpew0KZWNobyA8 PDxtc2RfZGF0ZV9qcw0KCSQoZG9jdW1lbnQpLnJlYWR5KCBmdW5jdGlvbigpew0KCQkkKCck bXNkX2RhdGVwaWNrZXJfY3VzdG9tZmllbGQnKS5kYXRlcGlja2VyKHsgZGF0ZUZvcm1hdDog JyRtc2RfZGF0ZXBpY2tlcl9mb3JtYXQnIH0pOw0KCX0pOw0KbXNkX2RhdGVfanM7DQp9DQpp ZiAoJG1zZF9kYXRlcGlja2VyX3Bvc3RlZD09MSl7DQplY2hvIDw8PG1zZF9kYXRlX2pzDQoJ JChkb2N1bWVudCkucmVhZHkoIGZ1bmN0aW9uKCl7DQoJCSQoJ2lucHV0W25hbWU9ZGF5XScp LmFmdGVyKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBzaXplPSIxMCIgaWQ9ImxpbmtlZERhdGVw aWNrZXIiIGRpc2FibGVkPSJkaXNhYmxlZCI+Jyk7DQoJCXBvc3RlZERhdGVwaWNrZXIgPSAk KCcjbGlua2VkRGF0ZXBpY2tlcicpLmRhdGVwaWNrZXIoe29uU2VsZWN0OnVwZGF0ZUxpbmtl ZCwNCgkJCXNob3dPbjogJ2JvdGgnLCBidXR0b25JbWFnZU9ubHk6IHRydWUsIGJ1dHRvbklt YWdlOiAnJG1zZF9pY29ucGF0aCd9KTsNCgl9KTsNCm1zZF9kYXRlX2pzOw0KfQ0KaWYgKCRt c2RfZGF0ZXBpY2tlcl9leHBpcmU9PTEpew0KZWNobyA8PDxtc2RfZGF0ZV9qcw0KCSQoZG9j dW1lbnQpLnJlYWR5KCBmdW5jdGlvbigpew0KCQkkKCdpbnB1dFtuYW1lPWV4cF9kYXldJyku YWZ0ZXIoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIHNpemU9IjEwIiBpZD0ibGlua2VkRGF0ZXBp Y2tlckV4cGlyZSIgZGlzYWJsZWQ9ImRpc2FibGVkIj4nKTsNCgkJJCgnI2xpbmtlZERhdGVw aWNrZXJFeHBpcmUnKS5kYXRlcGlja2VyKHtvblNlbGVjdDp1cGRhdGVMaW5rZWRFeHBpcmUs DQoJCQlzaG93T246ICdib3RoJywgYnV0dG9uSW1hZ2VPbmx5OiB0cnVlLCBidXR0b25JbWFn ZTogJyRtc2RfaWNvbnBhdGgnfSk7DQoJfSk7DQptc2RfZGF0ZV9qczsNCn0NCmVjaG8gIjwv c2NyaXB0PiI7DQp9DQojDQojUHJlZmVyZW5jZXMgUGFnZQ0KIw0KZnVuY3Rpb24gbXNkX2Fk bWluX2RhdGVwaWNrZXJfb3B0aW9ucygkZXZlbnQsICRzdGVwKXsNCmdsb2JhbCAkbXNkX2Rh dGVwaWNrZXJfY3VzdG9tZmllbGQsICRtc2RfZGF0ZXBpY2tlcl9qcXVlcnl1aSwgJG1zZF9k YXRlcGlja2VyX2pxdWVyeXVpX2NzcywgDQoJJG1zZF9kYXRlcGlja2VyX2Zvcm1hdCwgJG1z ZF9kYXRlcGlja2VyX3Bvc3RlZCwgJG1zZF9kYXRlcGlja2VyX2V4cGlyZTsNCmluY2x1ZGVf b25jZSB0eHBhdGggLiAnL2luY2x1ZGUvdHhwX3ByZWZzLnBocCc7DQppZiAocHMoInNhdmUi KSkgew0KCXByZWZzX3NhdmUoKTsNCgloZWFkZXIoIkxvY2F0aW9uOiBpbmRleC5waHA/ZXZl bnQ9bXNkX2FkbWluX2RhdGVwaWNrZXJfb3B0aW9ucyIpOw0KCX0NCnBhZ2V0b3AobXNkX2Fk bWluX2RhdGVwaWNrZXJfZ1R4dCgicHJlZmVyZW5jZXMiKSk7DQplY2hvIGZvcm0oc3RhcnRU YWJsZSgibGlzdCIpLg0KdHIodGRjcyhoZWQobXNkX2FkbWluX2RhdGVwaWNrZXJfZ1R4dCgi cHJlZmVyZW5jZXMiKSwxKSwyKSkuDQp0cih0ZGNzKGhlZChtc2RfYWRtaW5fZGF0ZXBpY2tl cl9nVHh0KCJpbnN0cnVjdGlvbnMiKSw0KSwyKSkuDQp0cih0ZGEobXNkX2FkbWluX2RhdGVw aWNrZXJfZ1R4dCgiZmllbGQiKSwgJyBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDt2ZXJ0aWNh bC1hbGlnbjptaWRkbGUiJykudGQodGV4dF9pbnB1dCgibXNkX2RhdGVwaWNrZXJfY3VzdG9t ZmllbGQiLCRtc2RfZGF0ZXBpY2tlcl9jdXN0b21maWVsZCwnMjAnKSkpLg0KdHIodGRhKG1z ZF9hZG1pbl9kYXRlcGlja2VyX2dUeHQoImpxdWVyeXVpIiksICcgc3R5bGU9InRleHQtYWxp Z246cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxlIicpLnRkKHRleHRfaW5wdXQoIm1zZF9k YXRlcGlja2VyX2pxdWVyeXVpIiwkbXNkX2RhdGVwaWNrZXJfanF1ZXJ5dWksJzIwJykpKS4N CnRyKHRkYShtc2RfYWRtaW5fZGF0ZXBpY2tlcl9nVHh0KCJqcXVlcnl1aWNzcyIpLCAnIHN0 eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZSInKS50ZCh0ZXh0 X2lucHV0KCJtc2RfZGF0ZXBpY2tlcl9qcXVlcnl1aV9jc3MiLCRtc2RfZGF0ZXBpY2tlcl9q cXVlcnl1aV9jc3MsJzIwJykpKS4NCnRyKHRkYShtc2RfYWRtaW5fZGF0ZXBpY2tlcl9nVHh0 KCJkYXRlZm9ybWF0IiksICcgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7dmVydGljYWwtYWxp Z246bWlkZGxlIicpLnRkKHRleHRfaW5wdXQoIm1zZF9kYXRlcGlja2VyX2Zvcm1hdCIsJG1z ZF9kYXRlcGlja2VyX2Zvcm1hdCwnMjAnKSkpLg0KdHIodGRhKGdUeHQobXNkX2FkbWluX2Rh dGVwaWNrZXJfZ1R4dCgiYXJ0aWNsZWRhdGUiKSksICcgc3R5bGU9InRleHQtYWxpZ246cmln aHQ7dmVydGljYWwtYWxpZ246bWlkZGxlIicpLnRkKHllc25vcmFkaW8oIm1zZF9kYXRlcGlj a2VyX3Bvc3RlZCIsJG1zZF9kYXRlcGlja2VyX3Bvc3RlZCkpKS4NCnRyKHRkYShnVHh0KG1z ZF9hZG1pbl9kYXRlcGlja2VyX2dUeHQoImV4cGlyZWRhdGUiKSksICcgc3R5bGU9InRleHQt YWxpZ246cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxlIicpLnRkKHllc25vcmFkaW8oIm1z ZF9kYXRlcGlja2VyX2V4cGlyZSIsJG1zZF9kYXRlcGlja2VyX2V4cGlyZSkpKS4NCnRyKHRk YShmSW5wdXQoInN1Ym1pdCIsInNhdmUiLGdUeHQoInNhdmVfYnV0dG9uIiksInB1Ymxpc2gi KS5lSW5wdXQoIm1zZF9hZG1pbl9kYXRlcGlja2VyX29wdGlvbnMiKS5zSW5wdXQoJ3NhdmVw cmVmcycpLCAiIGNvbHNwYW49JzInIGNsYXNzPSdub2xpbmUnIikpLg0KZW5kVGFibGUoKSk7 DQp9DQoNCiMNCiMJTVBMIFN1cHBvcnQNCiMNCmZ1bmN0aW9uIG1zZF9kYXRlcGlja2VyX2Vu dW1lcmF0ZV9zdHJpbmdzKCRldmVudCAsICRzdGVwPScnICwgJHByZT0wKQ0KCXsNCglnbG9i YWwgJG1zZF9kYXRlcGlja2VyX3N0cmluZ3M7DQoJJHIgPSBhcnJheQkoDQoJCQkJJ293bmVy Jwk9PiAnbXNkX2FkbWluX2RhdGVwaWNrZXInLAkJIwlDaGFuZ2UgdG8geW91ciBwbHVnaW5z IG5hbWUNCgkJCQkncHJlZml4Jwk9PiBNU0RfREFURVBJQ0tFUl9QUkVGSVgsCQkjCUl0cyB1 bmlxdWUgc3RyaW5nIHByZWZpeA0KCQkJCSdsYW5nJwk9PiAnZW4tdXMnLAkJCQkJIwlUaGUg bGFuZ3VhZ2Ugb2YgdGhlIGluaXRpYWwgc3RyaW5ncy4NCgkJCQknZXZlbnQnCT0+ICdhZG1p bicsCQkJCQkjCXB1YmxpYy9hZG1pbi9jb21tb24gPSB3aGljaCBpbnRlcmZhY2UgdGhlIHN0 cmluZ3Mgd2lsbCBiZSBsb2FkZWQgaW50bw0KCQkJCSdzdHJpbmdzJwk9PiAkbXNkX2RhdGVw aWNrZXJfc3RyaW5ncywJCSMJVGhlIHN0cmluZ3MgdGhlbXNlbHZlcy4NCgkJCQkpOw0KCXJl dHVybiAkcjsNCgl9DQojDQojCU1QTCBTdXBwb3J0DQojDQpmdW5jdGlvbiBtc2RfYWRtaW5f ZGF0ZXBpY2tlcl9nVHh0KCAkd2hhdCAsICRhcmdzID0gYXJyYXkoKSApDQoJew0KCWdsb2Jh bCAkdGV4dGFycmF5Ow0KCWdsb2JhbCAkbXNkX2RhdGVwaWNrZXJfc3RyaW5nczsNCg0KCSMN CgkjCVByZXBhcmUgdGhlIHByZWZpeGVkIGtleSBmb3IgdXNlLi4uDQoJIw0KCSRrZXkgPSBN U0RfREFURVBJQ0tFUl9QUkVGSVggLiAnLScgLiAkd2hhdDsNCgkka2V5ID0gc3RydG9sb3dl cigka2V5KTsNCg0KCSMNCgkjCUdyYWIgZnJvbSB0aGUgZ2xvYmFsIHRleHRhcnJheSAocG9z c2libHkgZWRpdGVkIGJ5IE1MUCkgaWYgd2UgY2FuLi4uDQoJIw0KCWlmKGlzc2V0KCR0ZXh0 YXJyYXlbJGtleV0pKQ0KCQl7DQoJCSRzdHIgPSAkdGV4dGFycmF5WyRrZXldOw0KCQl9DQoJ ZWxzZQ0KCQl7DQoJCSMNCgkJIwlUaGUgc3RyaW5nIGlzbnQgaW4gdGhlIGxvY2FsaXNlZCAk dGV4dGFycmF5IHNvIGZhbGxiYWNrIHRvIHVzaW5nDQoJCSMgdGhlIHN0cmluZyBhcnJheSBp biB0aGUgcGx1Z2luICh3aGljaCBpcyBub3QgcHJlZml4ZWQuKQ0KCQkjDQoJCSRrZXkgPSBz dHJ0b2xvd2VyKCR3aGF0KTsNCg0KCQlpZiggaXNzZXQoICRtc2RfZGF0ZXBpY2tlcl9zdHJp bmdzWyRrZXldICkgKQ0KCQkJJHN0ciA9ICRtc2RfZGF0ZXBpY2tlcl9zdHJpbmdzWyRrZXld Ow0KCQllbHNlDQoJCQkjDQoJCQkjCUZhbGxiYWNrIHRvIHJldHVybmluZyB0aGUga2V5IGlm IHRoZSBzdHJpbmcgaXMgbm90IHByZXNlbnQuLi4NCgkJCSMNCgkJCSRzdHIgPSAkd2hhdDsN CgkJfQ0KDQoJIw0KCSMJSWYgbmVlZGVkLCBwZXJmb3JtIHN1YnN0aXR1dGlvbnMuLi4NCgkj DQoJaWYoICFlbXB0eSgkYXJncykgKQ0KCQkkc3RyID0gc3RydHIoICRzdHIgLCAkYXJncyAp Ow0KDQoJcmV0dXJuICRzdHI7DQoJfQ0KIw0KI0luc3RhbGwgUHJlZmVyZW5jZXMNCiMNCmZ1 bmN0aW9uIG1zZF9hZG1pbl9kYXRlcGlja2VyX2luc3RhbGwoKXsNCmdsb2JhbCAkcHJlZnM7 DQppZiAoIWlzc2V0KCRwcmVmc1snbXNkX2RhdGVwaWNrZXJfanF1ZXJ5dWknXSkpew0KCXNh ZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCAiDQoJCW5hbWUgPSAnbXNkX2RhdGVwaWNrZXJfanF1 ZXJ5dWknLA0KCQl2YWwgPSAnaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJz L2pxdWVyeXVpLzEuNy4yL2pxdWVyeS11aS5taW4uanMnLA0KCQlodG1sID0gJ3RleHRfaW5w dXQnLA0KCQlwcmVmc19pZCA9IDEsDQoJCXR5cGUgPSAyLA0KCQlldmVudCA9ICdwdWJsaXNo JywNCgkJcG9zaXRpb24gPSAwDQoJCSIpOw0KfQ0KaWYgKCFpc3NldCgkcHJlZnNbJ21zZF9k YXRlcGlja2VyX2N1c3RvbWZpZWxkJ10pKXsNCglzYWZlX2luc2VydCgndHhwX3ByZWZzJywg Ig0KCQluYW1lID0gJ21zZF9kYXRlcGlja2VyX2N1c3RvbWZpZWxkJywNCgkJdmFsID0gJyNj dXN0b20tMScsDQoJCWh0bWwgPSAndGV4dF9pbnB1dCcsDQoJCXByZWZzX2lkID0gMSwNCgkJ dHlwZSA9IDIsDQoJCWV2ZW50ID0gJ3B1Ymxpc2gnLA0KCQlwb3NpdGlvbiA9IDANCgkJIik7 DQp9DQppZiAoIWlzc2V0KCRwcmVmc1snbXNkX2RhdGVwaWNrZXJfanF1ZXJ5dWlfY3NzJ10p KXsNCglzYWZlX2luc2VydCgndHhwX3ByZWZzJywgIg0KCQluYW1lID0gJ21zZF9kYXRlcGlj a2VyX2pxdWVyeXVpX2NzcycsDQoJCXZhbCA9ICdodHRwOi8vYWpheC5nb29nbGVhcGlzLmNv bS9hamF4L2xpYnMvanF1ZXJ5dWkvMS43LjIvdGhlbWVzL3VpLWxpZ2h0bmVzcy9qcXVlcnkt dWkuY3NzJywNCgkJaHRtbCA9ICd0ZXh0X2lucHV0JywNCgkJcHJlZnNfaWQgPSAxLA0KCQl0 eXBlID0gMiwNCgkJZXZlbnQgPSAncHVibGlzaCcsDQoJCXBvc2l0aW9uID0gMA0KCQkiKTsN Cn0NCmlmICghaXNzZXQoJHByZWZzWydtc2RfZGF0ZXBpY2tlcl9mb3JtYXQnXSkpew0KCXNh ZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCAiDQoJCW5hbWUgPSAnbXNkX2RhdGVwaWNrZXJfZm9y bWF0JywNCgkJdmFsID0gJ21tL2RkL3l5eXknLA0KCQlodG1sID0gJ3RleHRfaW5wdXQnLA0K CQlwcmVmc19pZCA9IDEsDQoJCXR5cGUgPSAyLA0KCQlldmVudCA9ICdwdWJsaXNoJywNCgkJ cG9zaXRpb24gPSAwDQoJCSIpOw0KfQ0KaWYgKCFpc3NldCgkcHJlZnNbJ21zZF9kYXRlcGlj a2VyX3JlZ2lvbiddKSl7DQoJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsICINCgkJbmFtZSA9 ICdtc2RfZGF0ZXBpY2tlcl9yZWdpb24nLA0KCQl2YWwgPSAnZW4nLA0KCQlodG1sID0gJ3Rl eHRfaW5wdXQnLA0KCQlwcmVmc19pZCA9IDEsDQoJCXR5cGUgPSAyLA0KCQlldmVudCA9ICdw dWJsaXNoJywNCgkJcG9zaXRpb24gPSAwDQoJCSIpOw0KfQ0KaWYgKCFpc3NldCgkcHJlZnNb J21zZF9kYXRlcGlja2VyX3Bvc3RlZCddKSl7DQoJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycs ICINCgkJbmFtZSA9ICdtc2RfZGF0ZXBpY2tlcl9wb3N0ZWQnLA0KCQl2YWwgPSAnMCcsDQoJ CXByZWZzX2lkID0gMQ0KCQkiKTsNCn0gICANCmlmICghaXNzZXQoJHByZWZzWydtc2RfZGF0 ZXBpY2tlcl9leHBpcmUnXSkpew0KCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCAiDQoJCW5h bWUgPSAnbXNkX2RhdGVwaWNrZXJfZXhwaXJlJywNCgkJdmFsID0gJzAnLA0KCQlwcmVmc19p ZCA9IDENCgkJIik7DQp9IA0KfQ0KIw0KI1VuaW5zdGFsbCBQcmVmZXJlbmNlcw0KIw0KZnVu Y3Rpb24gbXNkX2FkbWluX2RhdGVwaWNrZXJfdW5pbnN0YWxsKCl7DQpnbG9iYWwgJHByZWZz Ow0KaWYgKGlzc2V0KCRwcmVmc1snbXNkX2RhdGVwaWNrZXJfanF1ZXJ5dWknXSkpew0KCXNh ZmVfZGVsZXRlKCd0eHBfcHJlZnMnLCAiDQoJCW5hbWUgPSAnbXNkX2RhdGVwaWNrZXJfanF1 ZXJ5dWknIik7DQp9DQppZiAoaXNzZXQoJHByZWZzWydtc2RfZGF0ZXBpY2tlcl9jdXN0b21m aWVsZCddKSl7DQoJc2FmZV9kZWxldGUoJ3R4cF9wcmVmcycsICINCgkJbmFtZSA9ICdtc2Rf ZGF0ZXBpY2tlcl9jdXN0b21maWVsZCciKTsNCn0NCmlmIChpc3NldCgkcHJlZnNbJ21zZF9k YXRlcGlja2VyX2pxdWVyeXVpX2NzcyddKSl7DQoJc2FmZV9kZWxldGUoJ3R4cF9wcmVmcycs ICINCgkJbmFtZSA9ICdtc2RfZGF0ZXBpY2tlcl9qcXVlcnl1aV9jc3MnIik7DQp9DQppZiAo aXNzZXQoJHByZWZzWydtc2RfZGF0ZXBpY2tlcl9mb3JtYXQnXSkpew0KCXNhZmVfZGVsZXRl KCd0eHBfcHJlZnMnLCAiDQoJCW5hbWUgPSAnbXNkX2RhdGVwaWNrZXJfZm9ybWF0JyIpOw0K fSAgICAgIA0KaWYgKGlzc2V0KCRwcmVmc1snbXNkX2RhdGVwaWNrZXJfcmVnaW9uJ10pKXsN CglzYWZlX2RlbGV0ZSgndHhwX3ByZWZzJywgIg0KCQluYW1lID0gJ21zZF9kYXRlcGlja2Vy X3JlZ2lvbiciKTsNCn0NCmlmIChpc3NldCgkcHJlZnNbJ21zZF9kYXRlcGlja2VyX3Bvc3Rl ZCddKSl7DQoJc2FmZV9kZWxldGUoJ3R4cF9wcmVmcycsICINCgkJbmFtZSA9ICdtc2RfZGF0 ZXBpY2tlcl9wb3N0ZWQnIik7DQp9DQppZiAoaXNzZXQoJHByZWZzWydtc2RfZGF0ZXBpY2tl cl9leHBpcmUnXSkpew0KCXNhZmVfZGVsZXRlKCd0eHBfcHJlZnMnLCAiDQoJCW5hbWUgPSAn bXNkX2RhdGVwaWNrZXJfZXhwaXJlJyIpOw0KfSAgICANCn0NCiMNCiNDYWxlbmRhciBJY29u DQojDQpmdW5jdGlvbiBtc2RfYWRtaW5fZGF0ZXBpY2tlcl9pY29uX2pxdWVyeSgpew0KCXdo aWxlKEBvYl9lbmRfY2xlYW4oKSk7DQoJaGVhZGVyKCJDb250ZW50LVR5cGU6IGltYWdlL2dp ZiIpOw0KCWhlYWRlcigiRXhwaXJlczogIi5kYXRlKCJyIiwgdGltZSgpKzM2MDApKTsNCglo ZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHB1YmxpYyIpOw0KCWVjaG8gYmFzZTY0X2RlY29kZQ0K KCdSMGxHT0RsaEVBQVBBUFFBQUl5cTd6bHgzbHFLNXpGcHpuT2U3LzcyOWZ2aDMvM3k4ZTFs WHQxalhPNXRaZTl6Ykx4ZVdmQjZjNmxiDQpWL0dEZmZLSWd2S05oL09Za3ZTYmx2U2luZldy cDNkVFVmYXdxL2Uxc2YzcjZ2LzgvUC85L2YvLy8vLy8vd0FBQUFBQUFDSDVCQUVBDQpBQjBB TEFBQUFBQVFBQThBQUFXSzRHV0pwRFdONktVOG5OSytic0l4czNGZFZVVlJVaFE5d01VQ2di aGtqc2hiYmtrcEtuV1NxQzg0DQpySEE0a21zV3U5bElDZ1dIbFFPNWxzbGRTTUVncmtBYWtu Y2NRQkFFNG1LdGZrUFFhQUlaRnc0VFptWmRBaG9IQXhrWWcyNXdjaEFCDQpBUU1EZUlSWUhG NWdFa2NTQm8yWUVHbGdFRWNRb0k0U0RSV3JyYXlyRnhDRERyVzJ0N2doQURzPScpOw0KfQ0K ZnVuY3Rpb24gbXNkX2FkbWluX2RhdGVwaWNrZXJfaWNvbl9mYW1fZmFtKCl7DQoJd2hpbGUo QG9iX2VuZF9jbGVhbigpKTsNCgloZWFkZXIoIkNvbnRlbnQtVHlwZTogaW1hZ2UvcG5nIik7 DQoJaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLCB0aW1lKCkrMzYwMCkpOw0KCWhlYWRl cigiQ2FjaGUtQ29udHJvbDogcHVibGljIik7DQoJZWNobyBiYXNlNjRfZGVjb2RlDQooJ2lW Qk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVB QUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VY SEpaVHdBQUFJMVNVUkJWRGpMcFpQTlM1UlJGSWVmOThOUkczTTA1Z09hcU1oQ0Fvc2tFRnRW TzJrVDVEWm8xU1pvVzlFaUZHclZvazEvUWhSR21sSFlKb1F5OHd1SklvTFEwaUg4bkNHY01t em0zbnRPaTFlZFdiUUpMeHpPUFp2ZmZjN3YzT09wS2pzNUljQ0RrYlZicWx4Mkt2dEVCQ2Rn UlhCT2NLSllKMVhoY0ZaeElsTjNMaDdwQ0FGRTlXcDN4KzdrLzd6YzB6ZDdmSnZBaVNRQjR2 MVhRQldjQlhGZ1RIUXZsOENVb1dUQUdIN2ZHTVlZVjFzbHNPV0R3dDRVaUkxQzdhWklDVXdK YkJrK0x3RmdyS3Q0NEp4c0NuaXdtQWVWaUVRa0luRmJHY2hrQUNodkNxQ3EzSCs1cE9zYlJo K09yS2lxYXQvYlpWVlZmZnd1cXArTVJmWGdlSlR6eFEyOWRHOUtWVFVpTUU0UVZjSUErc2RX Q1FLZmdmRlZ3Z0NlVGE0eXVuS2JONE9DaWxBejNjUFI3QzdLSmlMd3QxcFFJQXc4dWsrbENY MjQwSm1teG9mekhXbDhMNkMxNVRDK0gzRHVaQ1lhclpXS0I4WUpLaEQ2OEdJNnoyVGhMaE5E aXFvU3ZyK083M3ZNemVjSS9JQ25FeXRrRXo1S3RZQVZWSldhQUxyYVU0d053YUVEQi9tV202 ZXJQVVhnM2FTenRSbHh5c3hDa1QyTnRjUnJ3MG9MVmlLMXdQZDQ5YUVBd0Z3dWg0Zkg4TWND UmtCRW1WMHMwdFFRSTlsWXR6MjVFTUJhRzNuZ3c5bGpTY0xnR21mYWtyeitWT0IwVzVLQjhU eGZGMzZTaU1kSUplb1FVUUtmQ29GeFVRdHQreHRZK3JGQlM2YWV1ZVYxc3MweHZud3ZrazFB b2lGR3VxaytJZzA4UkZTcVBwS085ajZhT1ZGMkVqZldZYXpEV2NFNHdUcjd6MTFZKy9Ybk9Z QzMwM1grQ3lOQ1dvMDlIZXR3QUFBQUFFbEZUa1N1UW1DQycpOw0KfQ0KIjtzOjQ6InR5cGUi O3M6MToiMyI7czo0OiJoZWxwIjtzOjcyMjoiCTxoMSBjbGFzcz0idGl0bGUiPm1zZF9hZG1p bl9kYXRlcGlja2VyPC9oMT4KCgk8aDIgY2xhc3M9InNlY3Rpb24iPkZlYXR1cmVzPC9oMj4K Cgk8cD5BZGRzIGEgalF1ZXJ5IFVJIERhdGVwaWNrZXIgdG8gdGhlIEFydGljbGUgV3JpdGUg cGFnZSBhbGxvd2luZyBhdXRob3JzIHRvIGVhc2lseSBhc3NvY2lhdGUgYSBjdXN0b20gZm9y bWF0ZWQgZGF0ZSB3aXRoIGVhY2ggYXJ0aWNsZS48L3A+CgoJPGgyIGNsYXNzPSJzZWN0aW9u Ij5TZXR1cDwvaDI+CgoJPHA+U2V0IHRoZSA8YSBocmVmPSIvdGV4dHBhdHRlcm4vaW5kZXgu cGhwP2V2ZW50PXBsdWdpbl9wcmVmcy5tc2RfYWRtaW5fZGF0ZXBpY2tlciI+cGx1Z2luIHBy ZWZlcmVuY2VzPC9hPiB0byBjb25maWd1cmUgeW91ciBkYXRlIHBpY2tlci4gU2V0IHRoZSBE YXRlIEN1c3RvbSBGaWVsZCB0byB0aGUgPGEgaHJlZj0iaHR0cDovL2RvY3MuanF1ZXJ5LmNv bS9TZWxlY3RvcnMiPmpRdWVyeSBTZWxlY3RvcjwvYT4gZm9yIHRoZSBpbnB1dCB5b3Ugd2Fu dCB0byB1c2UuICBOZWVkIG11bHRpcGxlIGRhdGUgcGlja2Vycz8gVXNlIG11bHRpcGxlIHNl bGVjdG9ycywgc2VwYXJhdGVkIHdpdGggYSBjb21tYS4gSXQmIzgyMTc7cyBhbGwgalF1ZXJ5 IGdvb2RuZXNzLjwvcD4KCgk8cD5PcHRpb25hbGx5IHVzZSBkYXRlcGlja2VyIGZvciBzZXR0 aW5nIHRoZSBBcnRpY2xlIFBvc3RlZCBhbmQvb3IgRXhwaXJlIGRhdGVzLjwvcD4iO3M6NToi b3JkZXIiO3M6MToiNSI7czozOiJtZDUiO3M6MzI6ImFhMTgyNmZmMWMxN2RhODRlZTkwYThh MTZhZTgxNmM1Ijt9