# Name: smd_random_text v0.11 # Type: Client side plugin # Random text from file, database, string or TXP field/variable # Author: Stef Dawson # URL: http://stefdawson.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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjE1OiJzbWRfcmFuZG9tX3RleHQiO3M6NjoiYXV0aG9yIjtz OjExOiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZk YXdzb24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMTEiO3M6MTE6ImRlc2NyaXB0aW9u IjtzOjYxOiJSYW5kb20gdGV4dCBmcm9tIGZpbGUsIGRhdGFiYXNlLCBzdHJpbmcgb3IgVFhQ IGZpZWxkL3ZhcmlhYmxlIjtzOjQ6ImNvZGUiO3M6Mzc0NToiZnVuY3Rpb24gc21kX3JhbmRv bV90ZXh0KCRhdHRzLCAkdGhpbmcpIHsNCglnbG9iYWwgJHR4cGNmZywgJHZhcmlhYmxlLCAk cHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkdGhpc2ZpbGUsICR0aGlzbGluaywgJHRoaXNpbWFn ZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSd0eXBlJyA9PiAnc3RyaW5nJywNCgkJ J3NvdXJjZScgPT4gJ2hlbGxvIHdvcmxkJywNCgkJJ2RlbGltJyA9PiAnfCcsDQoJCSdmaWxl X2RlbGltJyA9PiAnXG4nLA0KCQkndHJpbScgPT4gJzEnLA0KCQknZXNjYXBlJyA9PiAnaHRt bCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2xpbWl0JyA9PiAnMScsDQoJCSdjb3VudCcgPT4g J3VwJywNCgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3Mn ID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJJHNyY3B0ID0g ZXhwbG9kZSgkZGVsaW0sICRzb3VyY2UpOw0KCSRsaW1pdCA9ICgkbGltaXQgPCAxKSA/IDEg OiAkbGltaXQ7DQoJJGZyb20gPSBhcnJheSgpOw0KCSRpdGVtcyA9IGFycmF5KCk7DQoNCglz d2l0Y2ggKCR0eXBlKSB7DQoJCWNhc2UgImZpZWxkIjoNCgkJCWlmIChpc3NldCgkdGhpc2Zp bGVbJHNyY3B0WzBdXSkgJiYgJHRoaXNmaWxlWyRzcmNwdFswXV0gIT0gIiIpIHsNCgkJCQkk ZnJvbSA9ICR0aGlzZmlsZVskc3JjcHRbMF1dOw0KCQkJfSBlbHNlIGlmIChpc3NldCgkdGhp c2xpbmtbJHNyY3B0WzBdXSkgJiYgJHRoaXNsaW5rWyRzcmNwdFswXV0gIT0gIiIpIHsNCgkJ CQkkZnJvbSA9ICR0aGlzbGlua1skc3JjcHRbMF1dOw0KCQkJfSBlbHNlIGlmIChpc3NldCgk dGhpc2ltYWdlWyRzcmNwdFswXV0pICYmICR0aGlzaW1hZ2VbJHNyY3B0WzBdXSAhPSAiIikg ew0KCQkJCSRmcm9tID0gJHRoaXNpbWFnZVskc3JjcHRbMF1dOw0KCQkJfSBlbHNlIGlmIChp c3NldCgkcHJldGV4dFskc3JjcHRbMF1dKSAmJiAkcHJldGV4dFskc3JjcHRbMF1dICE9ICIi KSB7DQoJCQkJJGZyb20gPSAkcHJldGV4dFskc3JjcHRbMF1dOw0KCQkJfSBlbHNlIGlmIChp c3NldCgkdGhpc2FydGljbGVbJHNyY3B0WzBdXSkgJiYgJHRoaXNhcnRpY2xlWyRzcmNwdFsw XV0gIT0gIiIpIHsNCgkJCQkkZnJvbSA9ICR0aGlzYXJ0aWNsZVskc3JjcHRbMF1dOw0KCQkJ fQ0KCQkJaWYgKCRmcm9tKSB7DQoJCQkJJGZyb20gPSBleHBsb2RlKCRkZWxpbSwgJGZyb20p Ow0KCQkJCSRsaW1pdCA9IChjb3VudCgkZnJvbSkgPCAkbGltaXQpID8gY291bnQoJGZyb20p IDogJGxpbWl0Ow0KCQkJCSRpdGVtcyA9IGFycmF5X3JhbmQoJGZyb20sICRsaW1pdCk7DQoJ CQl9DQoJCQlicmVhazsNCgkJY2FzZSAidHhwdmFyIjoNCgkJCSRmcm9tID0gZXhwbG9kZSgk ZGVsaW0sICR2YXJpYWJsZVskc3JjcHRbMF1dKTsNCgkJCSRsaW1pdCA9IChjb3VudCgkZnJv bSkgPCAkbGltaXQpID8gY291bnQoJGZyb20pIDogJGxpbWl0Ow0KCQkJJGl0ZW1zID0gYXJy YXlfcmFuZCgkZnJvbSwgJGxpbWl0KTsNCgkJCWJyZWFrOw0KCQljYXNlICJ1cmx2YXIiOg0K CQkJJGZyb20gPSBleHBsb2RlKCRkZWxpbSwgZ3BzKCRzcmNwdFswXSkpOw0KCQkJJGxpbWl0 ID0gKGNvdW50KCRmcm9tKSA8ICRsaW1pdCkgPyBjb3VudCgkZnJvbSkgOiAkbGltaXQ7DQoJ CQkkaXRlbXMgPSBhcnJheV9yYW5kKCRmcm9tLCAkbGltaXQpOw0KCQkJYnJlYWs7DQoJCWNh c2UgImRhdGFiYXNlIjoNCgkJCSR3aGVyZSA9ICIxPTEgT1JERVIgQlkgUkFORCgpIExJTUlU ICIuJGxpbWl0Ow0KCQkJJGZyb20gPSBzYWZlX2NvbHVtbigkc3JjcHRbMV0sICRzcmNwdFsw XSwgJHdoZXJlLCAkZGVidWcpOw0KCQkJJGxpbWl0ID0gY291bnQoJGZyb20pOw0KCQkJJGl0 ZW1zID0gYXJyYXlfa2V5cygkZnJvbSk7DQoJCQlicmVhazsNCgkJY2FzZSAiZmlsZSI6DQoJ CQkkcGF0aCA9ICR0eHBjZmdbJ2RvY19yb290J10uKChzdWJzdHIoJHNyY3B0WzBdLCAwLCAx KT09Jy8nKSA/ICcnIDogJy8nKS4kc3JjcHRbMF07DQoJCQlpZiAoJGRlYnVnKSB7DQoJCQkJ ZWNobyAiKysgRklMRSBQQVRIICsrIjsNCgkJCQlkbXAgKCRwYXRoKTsNCgkJCX0NCgkJCWlm IChmaWxlX2V4aXN0cygkcGF0aCkpIHsNCgkJCQkkZnJvbSA9IGRvQXJyYXkoZmlsZSgkcGF0 aCksICdydHJpbScpOw0KCQkJCWlmICgkZmlsZV9kZWxpbSAhPSAnXG4nKSB7DQoJCQkJCSRm cm9tID0gZXhwbG9kZSgkZmlsZV9kZWxpbSwgJGZyb21bMF0pOw0KCQkJCX0NCgkJCQkkbGlt aXQgPSAoY291bnQoJGZyb20pIDwgJGxpbWl0KSA/IGNvdW50KCRmcm9tKSA6ICRsaW1pdDsN CgkJCQkkaXRlbXMgPSBhcnJheV9yYW5kKCRmcm9tLCAkbGltaXQpOw0KCQkJfQ0KCQkJYnJl YWs7DQoJCWNhc2UgInN0cmluZyI6DQoJCWRlZmF1bHQ6DQoJCQkkZnJvbSA9ICRzcmNwdDsN CgkJCSRsaW1pdCA9IChjb3VudCgkZnJvbSkgPCAkbGltaXQpID8gY291bnQoJGZyb20pIDog JGxpbWl0Ow0KCQkJJGl0ZW1zID0gYXJyYXlfcmFuZCgkZnJvbSwgJGxpbWl0KTsNCgkJCWJy ZWFrOw0KCX0NCg0KCS8vIEZvcmNlIGFycmF5IGlmIGl0IGlzbid0IGFscmVhZHkgKHNvbWUg UEhQIGZ1bmN0aW9ucyByZXR1cm4gc2luZ2xlIHZhbHVlcykNCglpZiAoIWlzX2FycmF5KCRp dGVtcykpIHsNCgkJJGl0ZW1zID0gYXJyYXkoJGl0ZW1zKTsNCgl9DQoNCgkkZnJvbSA9ICgk dHJpbSkgPyBkb0FycmF5KCRmcm9tLCAndHJpbScpIDogJGZyb207DQoNCglpZiAoJGRlYnVn KSB7DQoJCWVjaG8gIisrIElURU0gUE9PTCArKyI7DQoJCWRtcCgkZnJvbSk7DQoJCWVjaG8g IisrIENIT1NFTiBJVEVNUyArKyI7DQoJCWRtcCgkaXRlbXMpOw0KCX0NCglpZiAoJGRlYnVn ID4gMSkgew0KCQllY2hvICIrKyBQUkVURVhUICsrIjsNCgkJZG1wKCRwcmV0ZXh0KTsNCgkJ ZWNobyAiKysgVEhJUyBGSUxFICsrIjsNCgkJZG1wKCR0aGlzZmlsZSk7DQoJCWVjaG8gIisr IFRISVMgTElOSyArKyI7DQoJCWRtcCgkdGhpc2xpbmspOw0KCQllY2hvICIrKyBUSElTIElN QUdFICsrIjsNCgkJZG1wKCR0aGlzaW1hZ2UpOw0KCQllY2hvICIrKyBUSElTIEFSVElDTEUg KysiOw0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgl9DQoNCgkvLyBGaW5kIG91dCBob3cgdG8g cGxvbmsgdGhlIG91dHB1dA0KCSR3aGF0ID0gKCRmb3JtKSA/IGZldGNoX2Zvcm0oJGZvcm0p IDogKCgkdGhpbmcpID8gJHRoaW5nIDogJ3tzbWRfcm5kX3R4dH0nKTsNCg0KCS8vIFBpY2sg dGhlIGdpdmVuICRpdGVtcyBrZXlzIG91dCBvZiB0aGUgJGZyb20gYXJyYXkgYW5kIGRpc3Bs YXkgdGhlbQ0KCSRvdXQgPSBhcnJheSgpOw0KCSRjdHIgPSAoJGNvdW50PT0idXAiKSA/IDAg OiAkbGltaXQtMTsNCglmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsNCgkJJHJlcGxhY2Vt ZW50ID0gYXJyYXkoDQoJCQkne3NtZF9ybmRfdHh0fScgPT4gKCAoJGVzY2FwZSA9PSAnaHRt bCcpID8gaHRtbHNwZWNpYWxjaGFycygkZnJvbVskaXRlbV0pIDogJGZyb21bJGl0ZW1dICks DQoJCQkne3NtZF9ybmRfdHh0X3Jvd3N9JyA9PiAkbGltaXQsDQoJCQkne3NtZF9ybmRfdHh0 X3RoaXNpbmRleH0nID0+ICRjdHIsDQoJCQkne3NtZF9ybmRfdHh0X3RoaXNyb3d9JyA9PiAk Y3RyICsgMSwNCgkJKTsNCgkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHdoYXQsICRyZXBsYWNl bWVudCkpOw0KCQkkY3RyID0gKCRjb3VudD09InVwIikgPyAkY3RyKzEgOiAkY3RyLTE7DQoJ fQ0KDQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0K fSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo0OiJoZWxwIjtz OjEwNTI5OiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9yYW5kb21fdGV4dDwvaDE+ CgoJPHA+Q2hvb3NlIHJhbmRvbSB0ZXh0IHN0cmluZ3MgZnJvbSBhIHZhcmlldHkgb2Ygc291 cmNlcy4gQ291bGQgYmUgdXNlZCBhcyBhIHF1b3RlLW9mLXRoZS1kYXkgc3lzdGVtLCByYW5k b20gdGFnIGxpbmVzLCBvciBzb21ldGhpbmcgbW9yZSBlbGFib3JhdGUuPC9wPgoKCTxoMj5G ZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5QdWxsIHRoZSBpdGVtIGxpc3QgZnJvbSBlaXRo ZXI6IGEgZ2l2ZW4gZGVsaW1pdGVkIHN0cmluZywgYSBmaWxlLCBhIGRhdGFiYXNlIGNvbHVt biwgYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiwgdXNlci1zdWJtaXR0 ZWQgZm9ybSBkYXRhLCBvciBhIFRleHRwYXR0ZXJuIGZpZWxkPC9saT4KCQk8bGk+R3JhYiBh cyBtYW55IHJhbmRvbSBpdGVtcyBhcyB5b3UgbGlrZSBmcm9tIHlvdXIgY2hvc2VuIGxpc3Q8 L2xpPgoJCTxsaT5QYXNzIGVhY2ggdG8gYSBmb3JtL3RoZSBjb250YWluZXIgaWYgeW91IHdp c2ggdG8gZm9ybWF0IHRoZW08L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yPC9oMj4KCgk8cD48 YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29u PC9hPi4gQ29tYmluZXMgaWRlYXMgZnJvbSBkcnVfcmFuZG9tX3RleHQgYnkgRHJldyBNY0xl bGxhbiBhbmQgc2ltcGxlX3JhbmRvbV90ZXh0IGJ5IE1hbnVlbCBFYmVydCwgcGx1cyBzb21l IHNwcmlua2xpbmdzIG9mIG15IG93bi4gTWFueSB0aGFua3MgdG8gdGhlIGF1dGhvcnMgb2Yg dGhvc2Ugd29ya3MuPC9wPgoKCTxoMj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwv aDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRw Oi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTAyMi9zbWRfcmFuZG9tX3RleHQiPnRleHRw YXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20v c3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3Rh bGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2Zv cnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xOTA2NzUiPmZvcnVtIHRo cmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Ig b3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5 IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoKCTxoMj5V c2FnZTwvaDI+CgoJPHA+VXNlIHRoZSB0YWcgaW4gYW55IHBhZ2UsIGZvcm0gb3IgYXJ0aWNs ZS9maWxlL2ltYWdlL2xpbmsgY29udGV4dC48L3A+CgoJPGgzIGNsYXNzPSJ0YWciPnNtZF9y YW5kb21fdGV4dDwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGVyZSBhcmUgdHdv IG1hbmRhdG9yeSBhdHRyaWJ1dGVzOiA8Y29kZT50eXBlPC9jb2RlPiBhbmQgPGNvZGU+c291 cmNlPC9jb2RlPi4gVGhlIG90aGVycyBhcmUgdXNlZCB0byBjb250cm9sIGhvdyB0aGUgaW5m b3JtYXRpb24gaXMgZXh0cmFjdGVkIGFuZC9vciBwcmVzZW50ZWQuPC9wPgoKCTxoNCBjbGFz cz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIG1hbmQiPnR5cGU8L3NwYW4+IDogd2hlcmUgdG8gbG9vayBm b3IgdGhlIHBvb2wgb2YgdGV4dCBzdHJpbmdzLiBDYW4gYmUgb25lIG9mIDxjb2RlPnN0cmlu ZzwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+ZmllbGQ8L2NvZGU+LCA8Y29kZT50eHB2 YXI8L2NvZGU+LCA8Y29kZT51cmx2YXI8L2NvZGU+LCA8Y29kZT5kYXRhYmFzZTwvY29kZT4s IG9yIDxjb2RlPmZpbGU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0gbWFu ZCI+c291cmNlPC9zcGFuPiA6IGZ1cnRoZXIgcmVmaW5lbWVudCBvZiB3aGVyZSB0byBmaW5k IHRoZSBzdHJpbmdzIHVzaW5nIHRoZSBmb2xsb3dpbmcgcnVsZXM6Cgk8dWw+CgkJPGxpPjxz cGFuPnN0cmluZzwvc3Bhbj4gOiBhIGRlbGltaXRlZCBsaXN0IG9mIHRleHQgKGUuZy4gPGNv ZGU+c291cmNlPSZxdW90O215fGNyYWNraW5nfHdvcmRzfG9mfHRoZXxkYXl8aW4gYSBuYXR0 eSBsaXR0bGV8bGlzdCZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4+ZmllbGQ8L3Nw YW4+IDogdGhlIG5hbWUgb2YgdGhlIFRleHRwYXR0ZXJuIGZpZWxkIHRvIGxvb2sgaW4gKGUu Zy4gPGNvZGU+c291cmNlPSZxdW90O2FydGljbGVfaW1hZ2UmcXVvdDs8L2NvZGU+IG9yIDxj b2RlPnNvdXJjZT0mcXVvdDtteV9jdXN0b21fZmllbGRfbmFtZSZxdW90OzwvY29kZT4pPC9s aT4KCQk8bGk+PHNwYW4+dHhwdmFyPC9zcGFuPiA6IHRoZSBuYW1lIG9mIGEgPGNvZGU+Jmx0 O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gdGhhdCBoYXMgYmVlbiBkZWZpbmVkIGluIChl LmcuIDxjb2RlPnNvdXJjZT0mcXVvdDtteV9saXN0JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxs aT48c3Bhbj51cmx2YXI8L3NwYW4+IDogdGhlIG5hbWUgb2YgYSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiB2YXJpYWJsZSAodmlhIDxzcGFuIGNsYXNzPSJjYXBzIj5HRVQ8L3Nw YW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5QT1NUPC9zcGFuPikgdGhhdCB3aWxsIGJlIHBh c3NlZCB0byB0aGUgcGFnZSAoZS5nLiA8Y29kZT5zb3VyY2U9JnF1b3Q7cHJvcGVydHlfbGlz dCZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4+ZGF0YWJhc2U8L3NwYW4+IDogdGhl IHRhYmxlIGFuZCBjb2x1bW4gbmFtZSwgc2VwYXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2Rl PiAoZS5nLiA8Y29kZT5zb3VyY2U9JnF1b3Q7dHhwX2NhdGVnb3J5fHRpdGxlJnF1b3Q7PC9j b2RlPik8L2xpPgoJCTxsaT48c3Bhbj5maWxlPC9zcGFuPiA6IGEgZmlsZSBuYW1lIHJlbGF0 aXZlIHRvIHRoZSByb290IG9mIHlvdXIgc2l0ZSwgd2l0aCBvciB3aXRob3V0IGxlYWRpbmcg c2xhc2ggKGUuZy4gPGNvZGU+c291cmNlPSZxdW90O2ZpbGVzL215X3N0cmluZ3MudHh0JnF1 b3Q7PC9jb2RlPik8L2xpPgoJPC91bD48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ ZGVsaW08L3NwYW4+IDogdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiB3b3Jkcy9hdHRy aWJ1dGUgb3B0aW9ucy4gRGVmYXVsdDogcGlwZSA8Y29kZT58PC9jb2RlPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5maWxlX2RlbGltPC9zcGFuPiA6IHRoZSBkZWxpbWl0ZXIg dG8gdXNlIHdoZW4gcGFyc2luZyBmaWxlcy4gSWYgZWFjaCB3b3JkIG9yIHBocmFzZSBpcyBv biBpdHMgb3duIGxpbmUgdGhlbiB0aGUgZGVmYXVsdCBuZXdsaW5lICg8Y29kZT5cbjwvY29k ZT4pIGlzIHN1ZmZpY2llbnQuIElmIHlvdSB3aXNoIHRvIGhhdmUgYWxsIHlvdXIgdGV4dCBz dHJpbmdzIG9uIG9uZSBsaW5lIG9mIHRoZSBmaWxlIGRlbGltaXRlZCBieSBzb21lIG90aGVy IGNoYXJhY3Rlciwgc2V0IHlvdXIgb3duIGRlbGltaXRlciBoZXJlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8g cHVsbCBmcm9tIHRoZSBsaXN0LiBEZWZhdWx0cyB0byAxLiBJZiB5b3Ugc3BlY2lmeSBtb3Jl IHRoYW4gdGhlIGF2aWxhYmxlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcG9vbCwgdGhlIGVu dGlyZSBwb29sIHdpbGwgYmUgdXNlZCBhbmQgcHJlc2VudGVkIGluIGEgcmFuZG9tIG9yZGVy PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvdW50PC9zcGFuPiA6IHdoZXRoZXIg dG8gY291bnQgPGNvZGU+dXA8L2NvZGU+ICh0aGUgZGVmYXVsdCkgb3IgPGNvZGU+ZG93bjwv Y29kZT4gZm9yIGVhY2ggcmFuZG9tIHBpZWNlIG9mIHRleHQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+dHJpbTwvc3Bhbj4gOiB3aGV0aGVyIHRvIHJlbW92ZSB3aGl0ZXNwYWNl IGZyb20gYXJvdW5kIGVhY2ggbGlzdCBpdGVtICgxKSBvciBub3QgKDApLiBEZWZhdWx0OiAx PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVzY2FwZTwvc3Bhbj4gOiBlc2NhcGUg PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVudGl0aWVzIHN1Y2ggYXMgPGNvZGU+ Jmx0OzwvY29kZT4sIDxjb2RlPiZndDs8L2NvZGU+IGFuZCA8Y29kZT4mYW1wOzwvY29kZT4g aW4gYW55IHRleHQgaXRlbXMuIFVzZSA8Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2Rl PiB0byB0dXJuIGl0IG9mZi4gRGVmYXVsdDogPGNvZGU+aHRtbDwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB0aGUgZm9ybSB0byB1c2UgdG8g Zm9ybWF0IHRoZSB0ZXh0LiBJZiBub3Qgc3VwcGxpZWQsIHdpbGwgdHJ5IHRoZSBjb250YWlu ZXIuIElmIHRoYXQmIzgyMTc7cyBub3QgdXNlZCBlaXRoZXIsIHRoZSBwbHVnaW4gd2lsbCBz aW1wbHkgb3V0cHV0IHRoZSBjaG9zZW4gdGV4dCBvbiBpdHMgb3duPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHdpdGgg d2hpY2ggdG8gd3JhcCB0aGUgY2hvc2VuIHN0cmluZ3MsIGVnIDxjb2RlPndyYXB0YWc9JnF1 b3Q7dWwmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gcHV0IGJldHdl ZW4gc3VjY2Vzc2l2ZSBpdGVtcyBvZiB0ZXh0LCBlZyA8Y29kZT5icmVhaz0mcXVvdDtsaSZx dW90OzwvY29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBj bGFzcyB0byBhcHBseSB0byB0aGUgaXRlbSB3cmFwdGFnLCBlZyA8Y29kZT5jbGFzcz0mcXVv dDtyYW5kb21fc3RyaW5ncyZxdW90OzwvY29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRlYnVnPC9zcGFuPiA6IHNldCB0byAxIHRvIHNob3cg dGhlIHBvb2wsIHRoZSBmaWxlIG5hbWUgKGlmIGFwcGxpY2FibGUpIGFuZCB0aGUgY2hvc2Vu IGl0ZW1zLiBVc2UgMiB0byBzZWUgd2hhdCA8Y29kZT5maWVsZDwvY29kZT5zIGFyZSBhdmFp bGFibGU8L2xpPgoJPC91bD4KCgk8aDM+UmVwbGFjZW1lbnQgdGFnczwvaDM+CgoJPHA+V2hl biB1c2luZyBhIGZvcm0gb3IgY29udGFpbmVyLCB1c2UgdGhlIGZvbGxvd2luZyByZXBsYWNl bWVudCB0YWdzIHRvIGluc2VydCB0aGUgcmVsZXZhbnQgcGllY2Ugb2YgaW5mb3JtYXRpb24g d2hlcmV2ZXIgeW91IHdhbnQgaXQ6PC9wPgoKCTxwPjxjb2RlPntzbWRfcm5kX3R4dH08L2Nv ZGU+IDogdGhlIHRleHQgc3RyaW5nIGl0c2VsZjxiciAvPgo8Y29kZT57c21kX3JuZF90eHRf cm93c308L2NvZGU+IDogdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0b3RhbDxiciAvPgo8Y29k ZT57c21kX3JuZF90eHRfdGhpc3Jvd308L2NvZGU+IDogdGhlIGN1cnJlbnQgcm93IG51bWJl cjxiciAvPgo8Y29kZT57c21kX3JuZF90eHRfdGhpc2luZGV4fTwvY29kZT4gOiB0aGUgY3Vy cmVudCByb3cgaW5kZXggKHplcm8tYmFzZWQpPC9wPgoKCTxoMj5FeGFtcGxlczwvaDI+CgoJ PGgzIGlkPSJlZzEiPkV4YW1wbGUgMTwvaDM+CgoJPHA+UXVvdGUgb2YgdGhlIGRheSBmcm9t IGEgZGF0YWJhc2UuIFRoZSB0YWJsZSAoYWRkZWQgdG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGRhdGFiYXNlOyB0aGUgY29ubmVjdGlvbiBtdXN0IGFscmVhZHkgYmUg b3BlbikgaXMgY2FsbGVkICYjODIyMDtxdW90ZXMmIzgyMjE7IGFuZCB0aGUgY29sdW1uIGNv bnRhaW5pbmcgdGhlIHF1b3RlcyBpcyBjYWxsZWQgJiM4MjIwO3RleHQmIzgyMjE7OjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3Jh bmRvbV90ZXh0IHR5cGU9JnF1b3Q7ZGF0YWJhc2UmcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7 cXVvdGVzfHRleHQmcXVvdDsmZ3Q7CiAgJmx0O2RpdiBjbGFzcz0mcXVvdDtxb3RkJnF1b3Q7 Jmd0O1F1b3RlIG9mIHRoZSBkYXk6ICZsdDticiAvJmd0O3tzbWRfcm5kX3R4dH0mbHQ7L2Rp diZndDsKJmx0Oy90eHA6c21kX3JhbmRvbV90ZXh0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgz IGlkPSJlZzIiPkV4YW1wbGUgMjwvaDM+CgoJPHA+NSByYW5kb20gY29tbWVudHM6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcmFu ZG9tX3RleHQgdHlwZT0mcXVvdDtkYXRhYmFzZSZxdW90OwogICAgIHNvdXJjZT0mcXVvdDt0 eHBfZGlzY3Vzc3xtZXNzYWdlJnF1b3Q7IGxpbWl0PSZxdW90OzUmcXVvdDsKICAgICB3cmFw dGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7IC8mZ3Q7CjwvY29kZT48 L3ByZT4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzPC9oMz4KCgk8cD5Ub3AgdGVuIHJhbmRv bSBzaWxseSB3b3JkcyBmcm9tIGEgbGlzdCBpbiBhIGZpbGUgaW4gdGhlIHRleHRwYXR0ZXJu IHJvb3QgZm9sZGVyLCBjb3VudGluZyBkb3duIGZyb20gMTAgdG8gMS4gRWFjaCB3b3JkIG11 c3QgYmUgb24gYSBzZXBhcmF0ZSByb3cgb2YgdGhlIGZpbGUgdW5sZXNzIHlvdSBzcGVjaWZ5 IHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRlIHRvIGJlIHNvbWV0aGluZyBlbHNl OyBpbiB3aGljaCBjYXNlIHRoZSB3b3JkcyBtdXN0IGFsbCBhcHBlYXIgb24gdGhlIGZpcnN0 IHJvdyBvZiB0aGUgZmlsZS4gSWYgdGhlcmUgYXJlbiYjODIxNzt0IDEwIGl0ZW1zIGluIHRo ZSBmaWxlLCB0aGUgY291bnQgYmVnaW5zIGZyb20gaG93ZXZlciBoaWdoIGl0IGNhbiBnby48 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9yYW5kb21fdGV4dCB0eXBlPSZxdW90O2ZpbGUmcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7 d29yZHMudHh0JnF1b3Q7IGxpbWl0PSZxdW90OzEwJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDt3 b3Jkb3V0JnF1b3Q7IGNvdW50PSZxdW90O2Rvd24mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPmFuZCBpbiBmb3JtIDxjb2RlPndvcmRvdXQ8L2NvZGU+OjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiN7c21kX3JuZF90eHRfdGhpc3Jvd30g OiB7c21kX3JuZF90eHR9ICZsdDticiAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJl ZzQiPkV4YW1wbGUgNDwvaDM+CgoJPHA+VXNlIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAv Jmd0OzwvY29kZT4gdG8gaG9sZCBhIGxpc3Qgb2YgcmFuZG9tIGUtbWFpbCBhZGRyZXNzZXMg ZnJvbSB3aGljaCBvbmUgd2lsbCBiZSBzZWxlY3RlZCB0byBiZSBzZW50IHZpYSBhIHplbV9j b250YWN0X3JlYm9ybiBmb3JtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtlbWFpbHMmcXVvdDsKICAg ICB2YWx1ZT0mcXVvdDtBbGRvdXMuSHV4bGV5fFdpbGxpYW0uU2hha2VzcGVhcmV8Sm9obi5C ZXRqZW1hbiZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0CiAgICAgdG89JiMzOTsm bHQ7dHhwOnNtZF9yYW5kb21fdGV4dCB0eXBlPSZxdW90O3R4cHZhciZxdW90OwogICAgIHNv dXJjZT0mcXVvdDtlbWFpbHMmcXVvdDsgLyZndDtAd3JpdGVycy5jb20mIzM5OyZndDsKICAv LyBPdGhlciB6ZW1fY29udGFjdCBvcHRpb25zCiZsdDsvdHhwOnplbV9jb250YWN0Jmd0Owo8 L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTwvaDM+CgoJPHA+SW5kaXJl Y3RseSwgbm90IGp1c3QgZm9yIHRleHQhIENob29zZSB0d28gcmFuZG9tIGltYWdlIElEcyBm cm9tIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgZ2l2ZW4gaW4gdGhlIGN1c3RvbSBmaWVsZCBs YWJlbGxlZCAmIzgyMjA7bXlfaW1hZ2VzJiM4MjIxOyBhbmQgZGlzcGxheSB0aGVtIHZpYSB0 aGUgYnVpbHQtaW4gPGNvZGU+Jmx0O3R4cDppbWFnZSAvJmd0OzwvY29kZT4gdGFnLjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3Jh bmRvbV90ZXh0IHR5cGU9JnF1b3Q7ZmllbGQmcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7bXlf aW1hZ2VzJnF1b3Q7IGxpbWl0PSZxdW90OzImcXVvdDsgZGVsaW09JnF1b3Q7LCZxdW90OyZn dDsKICAmbHQ7dHhwOmltYWdlIGlkPSZxdW90O3tzbWRfcm5kX3R4dH0mcXVvdDsgLyZndDsK Jmx0Oy90eHA6c21kX3JhbmRvbV90ZXh0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJl ZzYiPkV4YW1wbGUgNjwvaDM+CgoJPHA+QWRkIHRoaXMgdG8geW91ciA8Y29kZT5maWxlczwv Y29kZT4gZm9ybSB0byBkaXNwbGF5IGEgcmFuZG9tIGZhY3QgYWJvdXQgZWFjaCBmaWxlIGZy b20gYSBwaXBlLWRlbG1paXRlZCBsaXN0IGRlZmluZWQgaW4gdGhlIGZpbGUmIzgyMTc7cyA8 Y29kZT5kZXNjcmlwdGlvbjwvY29kZT4gZmllbGQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcmFuZG9tX3RleHQgdHlwZT0mcXVv dDtmaWVsZCZxdW90OwogICAgIHNvdXJjZT0mcXVvdDtkZXNjcmlwdGlvbiZxdW90OyZndDsK Jmx0O2JyIC8mZ3Q7RkFDVDoge3NtZF9ybmRfdHh0fQombHQ7L3R4cDpzbWRfcmFuZG9tX3Rl eHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxp PjEwIE9jdCAwOCB8IDAuMSB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjE3IE1hciAw OSB8IDAuMTEgfCBBZGRlZCA8Y29kZT50cmltPC9jb2RlPiBhbmQgPGNvZGU+ZXNjYXBlPC9j b2RlPjwvbGk+Cgk8L3VsPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioq IC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDox LjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEz MCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9y OiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7 IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRp c3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNz bWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogIzAwYzsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2 ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206 IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBj b2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7 IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAx cHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAx N3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICMwNzk7 IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFw eDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0ZXh0LWRl Y29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFy aWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAw IDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXRubSB7IGZvbnQt d2VpZ2h0OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3Vu ZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lk dGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9o ZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzou NWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRf aGVscCBsaSB7IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFr IHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1Mg KioqIC0tPiI7czozOiJtZDUiO3M6MzI6ImZkOTgxMTZhMjEzYWI1NTVmYzBhZmQyYThhNTdj NzE1Ijt9