# Name: smd_gallery v0.41 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InNtZF9nYWxsZXJ5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjQxIjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MjY2MzM6ImZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXI7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEUNCgkvLyBIb2xkcyBkYXRh YmFzZSBmaWVsZCBhcyBrZXkgaW5kZXggYW5kIHBsdWdpbiBvcHRpb24gbmFtZXMgYXMgdmFs dWUuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQg cmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkk ZmllbGRNYXAgPSBhcnJheSgNCgkJInR4cF9pbWFnZS5uYW1lIiA9PiAibmFtZSIsDQoJCSJ0 eHBfaW1hZ2UuaWQiID0+ICJpZCIsDQoJCSJ0eHBfaW1hZ2UuYWx0IiA9PiAiYWx0IiwNCgkJ InR4cF9pbWFnZS5jYXB0aW9uIiA9PiAiY2FwdGlvbiIsDQoJCSJ0eHBfaW1hZ2UuY2F0ZWdv cnkiID0+ICJjYXRlZ29yeSIsDQoJCSJ0eHBfaW1hZ2UuYXV0aG9yIiA9PiAiYXV0aG9yIiwN CgkJInR4cF9pbWFnZS5kYXRlIiA9PiAiZGF0ZSIsDQoJCSJ0eHBfaW1hZ2UuZXh0IiA9PiAi ZXh0IiwNCgkJInR4cF9pbWFnZS53IiA9PiAid2lkdGgiLA0KCQkidHhwX2ltYWdlLmgiID0+ ICJoZWlnaHQiLA0KCQkidHhwX2ltYWdlLnRodW1ibmFpbCIgPT4gImhhc3RodW1iIiwNCgkp Ow0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlw ZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGltJyA9PiAn OicsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAn JywNCgkJJ2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZl bCcgPT4gJzAnLA0KCQknc29ydCcgPT4gJ2NhdGVnb3J5JywNCgkJJ29mZnNldCcgPT4gJzAn LA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1 bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ib2Zmc2V0JyA9PiAnMCcsDQoJCSd0aHVt YicgPT4gJzA6MScsDQoJCSd0aHVtYnNpemUnID0+ICcnLA0KCQkndGh1bWJjaGFuZ2UnID0+ ICdjYXRlZ29yeScsDQoJCSd0aHVtYmNoYW5nZXdyYXB0YWcnID0+ICcnLA0KCQkndGh1bWJj aGFuZ2VjbGFzcycgPT4gJycsDQoJCSd0ZXh0JyA9PiAnJywNCgkJJ2NvbGxhdGUnID0+ICcn LA0KCQknY29tYm8nID0+ICcnLA0KCQkncGFnaW5nJyA9PiAnMCcsDQoJCSdwYWdlZm9ybScg PT4gJycsDQoJCSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQknbmF2YnJlYWsnID0+ICdsaScs DQoJCSduYXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdicsDQoJCSdlbXB0eWNsYXNzJyA9 PiAnZW1wdHknLA0KCQknZ2FsbGVyeWlkJyA9PiAnPzQ6NicsDQoJCSd3cmFwdGFnJyA9PiAn JywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAn MCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIENhdGVnb3J5IHJlbGllcyBvbiB3aGV0aGVyIGlk IGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJLy8gbEF0dHMoKSB3b24ndCBsZXQgdXMg aGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHkNCgkkYXR0 ZW1wdE1hdGNoID0gKGVtcHR5KCRjYXRlZ29yeSkgJiYgZW1wdHkoJGlkKSkgPyBmYWxzZSA6 IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVnb3J5KSA/IGRvU2xhc2goJGNhdGVn b3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYyddOiAnJyk7DQoNCgkvLyBIYW5kbGUg Zm9ybXMgYW5kIHNldCBhIGRlZmF1bHQgdGFnIGlmIG5vbmUgc3BlY2lmaWVkDQoJJHRoaW5n ID0gKGVtcHR5KCRmb3JtKSkgPyAkdGhpbmcgOiBmZXRjaF9mb3JtKCRmb3JtKTsNCgkkdGhp bmcgPSAoZW1wdHkoJHRoaW5nKSkgPyAnPGEgaHJlZj0ie3VybH0iIGFsdD0ie2FsdH0iPjx0 eHA6aW1hZ2UgaWQ9IntpZH0iIC8+PC9hPicgOiAkdGhpbmc7DQoNCgkvLyBQYWdpbmcgaW5p dA0KCWlmICgkcGFnZWZvcm0pIHsNCgkJJHBhZ2luZyA9IDE7DQoJCSRwYWdlZm9ybSA9IGZl dGNoX2Zvcm0oJHBhZ2Vmb3JtKTsNCgl9DQoNCgkvLyBUaHVtYmNoYW5nZSB2ZXJpZmljYXRp b24NCgkkdGh1bWJjaGFuZ2UgPSBkb19saXN0KCR0aHVtYmNoYW5nZSwgJGRlbGltKTsNCgkk cmVzZXRPcHRzID0gYXJyYXkoKTsNCglmb3JlYWNoICgkdGh1bWJjaGFuZ2UgYXMgJHJlc2V0 T3B0KSB7DQoJCSRyZXNldE9wdHNbJHJlc2V0T3B0XSA9ICIiOw0KCX0NCg0KCS8vIFRoZSBn YWxsZXJ5IGlkZW50aWZpZXIgaXMgdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBuZXh0L3By ZXYgdGh1bWJuYWlsIHBhZ2UgbGlua3MNCgkkZ2FsbElEID0gJyc7DQoJaWYgKCRnYWxsZXJ5 aWQgPT0gJycgfHwgc3Vic3RyKCRnYWxsZXJ5aWQsMCwxKSA9PSAiPyIpIHsNCgkJLy8gR2Vu ZXJhdGUgYSAoZmFpcmx5IGxpa2VseSkgdW5pcXVlIElEIGZvciB0aGlzIGdhbGxlcnkgaW5z dGFuY2UNCgkJJGdhbGxUbXAgPSBtZDUoJGNhdGVnb3J5LiRpZC4kZGlyZWN0b3J5LiRtYXRj aC4kc3VibGV2ZWwuJHNvcnQuJGxpbWl0LiRtYXhsaW1pdCk7DQoJCWxpc3QoJGdhbGxMZW4s ICRnYWxsU2tpcCkgPSBleHBsb2RlKCI6Iiwgc3Vic3RyKCRnYWxsZXJ5aWQsMSkpOw0KCQkk Z2FsbExlbiA9ICAoZW1wdHkoJGdhbGxMZW4pKSA/ICI0IiA6ICRnYWxsTGVuOw0KCQkkZ2Fs bFNraXAgPSAgKGVtcHR5KCRnYWxsU2tpcCkpID8gIjEiIDogJGdhbGxTa2lwOw0KCQlmb3Ig KCRpZHggPSAwLCAkY250ID0gMDsgJGNudCA8ICRnYWxsTGVuOyAkY250KyssICRpZHggPSAo KCRpZHgrJGdhbGxTa2lwKSAlIHN0cmxlbigkZ2FsbFRtcCkpKSB7DQoJCQkkZ2FsbElEIC49 ICRnYWxsVG1wWyRpZHhdOw0KCQl9DQoJfSBlbHNlIHsNCgkJJGdhbGxJRCA9ICRnYWxsZXJ5 aWQ7DQoJfQ0KCSRnYWxsSUQgPSAic21kX2dscnlfIi4kZ2FsbElEOyAvLyBBdm9pZCAoYWxy ZWFkeSBpbmNyZWRpYmx5IHVubGlrZWx5KSBuYW1lc3BhY2UgY2xhc2hlcw0KDQoJLy8gU2V0 IHVwIHRoZSB2YXJpYWJsZXMgZnJvbSB0aGUgdGh1bWIgb3B0aW9uLg0KCS8vIERvbid0IHVz ZSBwYXJhbWRlbGltIGhlcmUgb3IgdGhlIGRlZmF1bHQgb3B0aW9uIGJyZWFrcw0KCSR0aHVt Yk9wdHMgPSBkb19saXN0KCR0aHVtYiwgIjoiKTsNCglpZiAoY291bnQoJHRodW1iT3B0cykg PT0gMSkgew0KCQkkZnVsbG1vZCA9ICgkdGh1bWJPcHRzWzBdID09IDEpID8gInQiIDogIiI7 DQoJCSR0aHVtYm1vZCA9ICJ0IjsNCgl9IGVsc2Ugew0KCQkkZnVsbG1vZCA9ICgkdGh1bWJP cHRzWzBdID09IDEpID8gInQiIDogIiI7DQoJCSR0aHVtYm1vZCA9ICgkdGh1bWJPcHRzWzFd ID09IDEpID8gInQiIDogIiI7DQoJfQ0KDQoJLy8gVGhlIG1hbm5lciBvZiBvYnRhaW5pbmcg ZmlsZXMgZGlmZmVycyBpZiB1c2luZyBkaXJlY3RvcnkgdnMgY2F0ZWdvcnkvaWQNCglpZiAo JGRpcmVjdG9yeSkgew0KCQkkcnMgPSBhcnJheSgpOw0KCQkkcnNhbGwgPSBzbWRfZG9EaXJl Y3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSk7DQoJCWxp c3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dl dFBhZ2UoJHJzYWxsLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkk ZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHJzID0g YXJyYXlfc2xpY2UoJHJzYWxsLCAkb2Zmc2V0LCAkZGlybGltaXQpOw0KCQkkcG9zdE9yZGVy ID0gYXJyYXkoKTsNCgkJJGZpeGVkT3JkZXIgPSAwOw0KCQkkcmFuZHNvcnQgPSBmYWxzZTsN Cgl9IGVsc2Ugew0KCQkvLyBQcm9jZXNzIGNhdGVnb3JpZXMvSURzIGFuZCBtYWtlIHVwIHRo ZSBjcnV4IG9mIHRoZSB3aGVyZSBjbGF1c2UuDQoJCS8vIENsYXVzZSBvcmRlciA9IElEcyBP UiBjYXRzIEFORCAhY2F0cyBBTkQgIUlEcw0KCQkkY2xhdXNlW10gPSAnMT0xJzsNCgkJJGNs YXVzZU9SID0gYXJyYXkoKTsNCg0KCQkvLyBTdXJyb3VuZCBlYWNoIGVudHJ5IGluIHRoZSBJ RCBsaXN0IHdpdGggcXVvdGVzIGFuZCBtYWtlIGFuIFNRTCAiaW4iIGxpc3QNCgkJJHN1Ymlu Zm8gPSAoJHN1YmxldmVsKSA/ICJpbWFnZToiLiRzdWJsZXZlbCA6ICcnOw0KCQlsaXN0KCRp ZGluYywgJGlkZXhjKSA9IHNtZF9kb0xpc3QoJGlkLCB0cnVlLCAnJywgdHJ1ZSwgJGRlbGlt KTsNCgkJbGlzdCgkY2F0aW5jLCAkY2F0ZXhjKSA9IHNtZF9kb0xpc3QoJGNhdGVnb3J5LCBm YWxzZSwgJHN1YmluZm8sIHRydWUsICRkZWxpbSk7DQoJCWlmICgkaWRpbmMpIHsNCgkJCSRj bGF1c2VPUltdID0gJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2RlKCIsIiwgJGlkaW5jKS4n KSc7DQoJCX0NCgkJaWYgKCRjYXRpbmMpIHsNCgkJCSRjbGF1c2VPUltdID0gJ3R4cF9pbWFn ZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlm ICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2RlKCIg T1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBB TkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgdHhwX2lt YWdlLmNhdGVnb3J5IE5PVCBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGV4YykuJyknIDogJyc7 DQoJCSRjbGF1c2UgLj0gKCRpZGV4YykgPyAnIEFORCB0eHBfaW1hZ2UuaWQgTk9UIElOICgn LmltcGxvZGUoIiwiLCAkaWRleGMpLicpJyA6ICcnOw0KDQoJCS8vIElmIGEgY2F0ZWdvcnkv aWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3RoaW5nLCB1c2UgYSBi b2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8vIFRoaXMgZW5zdXJl cyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcgb2YgbWF0Y2hpbmcg bm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJaWYgKCRjbGF1c2Ug PT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNlID0gJ3R4cF9pbWFn ZS5jYXRlZ29yeSA9ICJzbWRfJyAubXRfcmFuZCgpLiAnIic7DQoJCX0NCg0KCQlpZiAoJGRl YnVnID4gMSkgew0KCQkJZWNobyAiKysgSU5DTFVERUQvRVhDTFVERUQgSURzIEFORCBDQVRz ICsrIjsNCgkJCWRtcCgkaWRpbmMpOw0KCQkJZG1wKCRpZGV4Yyk7DQoJCQlkbXAoJGNhdGlu Yyk7DQoJCQlkbXAoJGNhdGV4Yyk7DQoJCX0NCg0KCQkvLyBDb252ZXJ0IHRoZSBzb3J0IGlu dG8gYSB2YWxpZCBzb3J0aW5nIGhpZXJhcmNoeS4NCgkJLy8gTm90ZSB0aGF0IHJhbmRvbSBp cyBhIHNwZWNpYWwgY2FzZSBhbmQgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToNCgkJLy8g IDEpIEFueXRoaW5nIGFwcGVhcmluZyBiZWZvcmUgcmFuZG9tIGlzIHBhc3NlZCB0byB0aGUg ZGF0YWJhc2UgcXVlcnkgZm9yIG9yZGVyaW5nDQoJCS8vICAyKSBBcyBzb29uIGFzIHJhbmRv bSBpcyBlbmNvdW50ZXJlZCwgdGhlIHJlc3Qgb2YgdGhlIHNvcnQgc3RyaW5nIGlzIGlnbm9y ZWQuDQoJCS8vICAgICBUaGUgcmVzdWx0c2V0IHdpbGwgYmUgc29ydGVkIHJhbmRvbWx5IGlu c3RlYWQNCgkJLy8gIDMpIElmIHJhbmRvbSBhcHBlYXJzIGZpcnN0IGluIHRoZSBsaXN0LCB0 aGUgZGF0YSBpcyByZXRyaWV2ZWQgcmFuZG9tbHkgdGhlbiB0aGUNCgkJLy8gICAgIHJlbWFp bmluZyBvcHRpb25zIHNvcnQgdGhlIHJlc3VsdHNldA0KCQkkY2xhdXNlU29ydCA9IGFycmF5 KCk7DQoJCSRwb3N0T3JkZXIgPSBhcnJheSgpOw0KCQkkcnVsZSA9ICJzcWwiOw0KCQkkcG9z dFByZWZpeCA9ICJTT1JUXyI7DQoJCSRmaXhlZE9yZGVyID0gJHJhbmRzb3J0ID0gZmFsc2U7 DQoJCSRzb3J0ID0gZG9fbGlzdCgkc29ydCwgJGRlbGltKTsNCgkJZm9yICgkaWR4ID0gMDsg JGlkeCA8IGNvdW50KCRzb3J0KTsgJGlkeCsrKSB7DQoJCQkkc29ydF9kaXIgPSBleHBsb2Rl KCcgJywgJHNvcnRbJGlkeF0pOw0KCQkJJGRpcmVjdGlvbiA9ICRjb2xSZWYgPSAnJzsNCgkJ CWlmIChjb3VudCgkc29ydF9kaXIpIDw9IDEpIHsNCgkJCQkkc29ydF9kaXJbMV0gPSAiYXNj IjsNCgkJCX0NCgkJCWlmICgkcnVsZSA9PSAic3FsIikgew0KCQkJCSRkaXJlY3Rpb24gPSAo JHNvcnRfZGlyWzFdID09ICJkZXNjIikgPyAnIGRlc2MnIDogJyBhc2MnOw0KCQkJfSBlbHNl IHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJHBvc3RQ cmVmaXguJ0RFU0MnIDogJHBvc3RQcmVmaXguJ0FTQyc7DQoJCQl9DQoNCgkJCXN3aXRjaCAo JHNvcnRfZGlyWzBdKSB7DQoJCQkJY2FzZSAncmFuZG9tJzoNCgkJCQkJJHJ1bGUgPSAicG9z dCI7DQoJCQkJCWlmICgkaWR4ID09IDApIHsNCgkJCQkJCSRjbGF1c2VTb3J0W10gPSAncmFu ZCgpJzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRyYW5kc29ydCA9IHRydWU7DQoJCQkJCX0N CgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnZml4ZWQnOg0KCQkJCQkvLyAnZml4ZWQnIG9ubHkg d29ya3Mgb24gaWRzDQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJykgPyBmYWxzZSA6 IHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjb2xSZWYgPSBhcnJh eV9zZWFyY2goJHNvcnRfZGlyWzBdLCAkZmllbGRNYXApOw0KCQkJCQlicmVhazsNCgkJCX0N CgkJCWlmICgkcnVsZSA9PSAic3FsIikgew0KCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJ CQkJCSRjbGF1c2VTb3J0W10gPSAkY29sUmVmLiRkaXJlY3Rpb247DQoJCQkJfQ0KCQkJfSBl bHNlIHsNCgkJCQlpZiAoISRyYW5kc29ydCkgew0KCQkJCQlpZiAoJGNvbFJlZiAhPSAnJykg ew0KCQkJCQkJJHBvc3RPcmRlcltdID0gYXJyYXkoImNvbCIgPT4gJGNvbFJlZiwgInNvcnQi ID0+ICRkaXJlY3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNv dW50KCRjbGF1c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4g aW1wbG9kZSgiLCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJ CQllY2hvICIrKyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJ CS8vIFRoZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUo IiwiLCBhcnJheV9rZXlzKCRmaWVsZE1hcCkpOw0KDQoJCS8vIFRpbWUgdG8gZ3JhYiB0aGUg bWF0Y2hpbmcgcm93cyBmcm9tIHRoZSBkYXRhYmFzZQ0KCQkkcnNhbGwgPSBzYWZlX3Jvd3Mo JGZpZWxkcywgJ3R4cF9pbWFnZScsICRjbGF1c2UgLicgTElNSVQgJy4kb2Zmc2V0LicsJy4k bWF4bGltaXQpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAk b2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRyc2FsbCwgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0 LCAkcGFnaW5nKTsNCgkJJHJzID0gc2FmZV9yb3dzKCRmaWVsZHMuJywgdHhwX2NhdGVnb3J5 LnRpdGxlIEFTIGNhdGVnb3J5X3RpdGxlJywgJ3R4cF9pbWFnZSwgdHhwX2NhdGVnb3J5Jywg J3R4cF9jYXRlZ29yeS5uYW1lID0gdHhwX2ltYWdlLmNhdGVnb3J5IEFORCB0eHBfY2F0ZWdv cnkudHlwZT0iaW1hZ2UiIEFORCAnIC4kY2xhdXNlIC4nIExJTUlUICcgLiRvZmZzZXQuICcs Jy4gKCgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSk7DQoJfQ0KDQoJLy8gSXMg cG9zdC1vcmRlcmluZyByZXF1aXJlZD8gRG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNo dWZmbGUoJHJzKTsNCgl9IGVsc2UgaWYgKGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkv LyBUcmFuc2xhdGUgdGhlIHJvd3MgaW50byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0K CQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJCSRjb2xfaWRbJGtleV0gPSAk cm93WydpZCddOw0KCQkJJGNvbF9uYW1lWyRrZXldID0gJHJvd1snbmFtZSddOw0KCQkJJGNv bF9jYXB0aW9uWyRrZXldID0gJHJvd1snY2FwdGlvbiddOw0KCQkJJGNvbF9hbHRbJGtleV0g PSAkcm93WydhbHQnXTsNCgkJCSRjb2xfY2F0ZWdvcnlbJGtleV0gPSAkcm93WydjYXRlZ29y eSddOw0KCQkJJGNvbF9kYXRlWyRrZXldID0gJHJvd1snZGF0ZSddOw0KCQkJJGNvbF9leHRb JGtleV0gPSAkcm93WydleHQnXTsNCgkJCSRjb2xfYXV0aG9yWyRrZXldID0gJHJvd1snYXV0 aG9yJ107DQoJCQkkY29sX3dbJGtleV0gPSAkcm93Wyd3J107DQoJCQkkY29sX2hbJGtleV0g PSAkcm93WydoJ107DQoJCQkkY29sX3RodW1ibmFpbFska2V5XSA9ICRyb3dbJ3RodW1ibmFp bCddOw0KCQl9DQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFu ZCBleGVjdXRlIGl0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVy KTsgJGlkeCsrKSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4 XVsnY29sJ107DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsN CgkJfQ0KCQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29y dGFyZ3MpLicsICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhl ZC1vcmRlciBvdXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAo JGZpeGVkT3JkZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0 ID0gQXJyYXkoKTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCgkJLy8gU3VjayBvdXQg dGhlIGZpeGVkIGl0ZW1zIGZpcnN0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgk aWRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAo IiciLiRyb3dbJ2lkJ10uIiciID09ICRpZGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJT W10gPSAkcm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJ CQl9DQoJCX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJZm9yZWFjaCgk cnMgYXMgJHJvdykgew0KCQkJaWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdub3JlTGlz dCkpIHsNCgkJCQkkcmVtYWluaW5nUlNbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJJHJzID0g YXJyYXlfbWVyZ2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBIYW5k bGUgdGh1bWJzaXplIC0gb2YgbGltaXRlZCB1c2Ugbm93IGJ1dCBzdGlsbCBhdmFpbGFibGUN CgkkdGh1bWJXaWR0aCA9ICR0aHVtYkhlaWdodCA9ICcnOw0KCSR0aHVtYldVbml0cyA9ICR0 aHVtYkhVbml0cyA9ICcnOw0KCWlmICgkdGh1bWJzaXplKSB7DQoJCSR0aHVtYlNpemVzID0g ZG9fbGlzdCgkdGh1bWJzaXplLCAkZGVsaW0pOw0KCQlpZiAoY291bnQoJHRodW1iU2l6ZXMp ID09IDEpIHsNCgkJCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNl KCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBs YWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAk dGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsN CgkJfSBlbHNlIHsNCgkJCSR0aHVtYldpZHRoID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAn JywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJb XjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNl KCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAoJHVu aXRzID09ICcnICYmICR0aHVtYldpZHRoICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0 czsNCgkJCSR1bml0cyA9IGVyZWdfcmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNb MV0pOw0KCQkJJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQg IT0gJycpID8gJHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gQ29sbGF0 aW9uIGRlZmVycyBwYXJzaW5nIHRoZSBmb3JtIGZvciBlYWNoIHJldHVybmVkIGl0ZW0uDQoJ Ly8gSW5zdGVhZCBpdCBvdXRwdXRzIHRoZSBkYXRhIGFzIGEgbGlzdCBhdCB0aGUgZW5kIChp dGVtcyBtYXkgYmUgaW5kaXZpZHVhbGx5IHF1b3RlZCBvciBleHRyYWN0ZWQgaWYgcmVxdWly ZWQpDQoJLy9UT0RPIDogQWRkIEFMV0FZUyBzd2l0Y2ggYXMgYSBzaG9ydGN1dCB0byBzcGVj aWZ5IHRoYXQgYWxsIG1hdGNoaW5nIGl0ZW1zIChyZWdhcmRsZXNzIG9mICMxLCAjMiwgIzMg ZXRjKSBhcmUgdG8gYmUgcXVvdGVkDQoJaWYgKCRjb2xsYXRlKSB7DQoJCSRkYmxRdW90ZSA9 ICRzZ2xRdW90ZSA9IGFycmF5KCdTTUROT05FJyk7DQoJCSRjb2xsYXRlT3B0cyA9IGRvX2xp c3QoJGNvbGxhdGUsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb2xsYXRlT3B0cyBhcyAkb3B0 aW9uKSB7DQoJCQkkaW5kZXhlcyA9IGRvX2xpc3QoJG9wdGlvbiwgJHBhcmFtZGVsaW0pOw0K CQkJJGNvbFR5cGUgPSBhcnJheV9zaGlmdCgkaW5kZXhlcyk7DQoJCQkvLyBTdXBwbHlpbmcg J3F1b3RlJyBvbiBpdHMgb3duIHdpbGwgZW1wdHkgdGhlIHJlbGV2YW50IGFycmF5LCBpbXBs eWluZyAiQUxMIiBmaWVsZHMgYXJlIHRvIGJlIHF1b3RlZA0KCQkJc3dpdGNoICgkY29sVHlw ZSkgew0KCQkJCWNhc2UgInNnbHF1b3RlIjoNCgkJCQkJJHNnbFF1b3RlID0gJGluZGV4ZXM7 DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImRibHF1b3RlIjoNCgkJCQljYXNlICJxdW90ZSI6 DQoJCQkJCSRkYmxRdW90ZSA9ICRpbmRleGVzOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0K CX0NCg0KCS8vIENvbWJvcyBhcmUgdXNlci1kZWZpbmVkIGNvbWJpbmF0aW9ucyBvZiByZXBs YWNlbWVudCBtb2RpZmllcnMgKGUuZy4gaWRleHQ6IHtpZH17ZXh0fSwgLi4uDQoJJGNvbWJv cyA9IGFycmF5KCk7DQoJaWYgKCRjb21ibykgew0KCQkkY29tYm8gPSBkb19saXN0KCRjb21i bywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbWJvIGFzICRuZXdEZWYpIHsNCgkJCWxpc3Qo JGRlZlBhcnRzLCAkdW53YW50ZWQpID0gc21kX2RvTGlzdCgkbmV3RGVmLCBmYWxzZSwgJycs IGZhbHNlLCAkcGFyYW1kZWxpbSk7DQoJCQkkZGVmTmFtZSA9ICJ7Ii5hcnJheV9zaGlmdCgk ZGVmUGFydHMpLiJ9IjsNCgkJCSRjb21ib3NbJGRlZk5hbWVdID0gJGRlZlBhcnRzWzBdOw0K CQl9DQoJfQ0KCWlmICgkZGVidWcgPiAxKSB7DQoJCWVjaG8gIisrIENPTUJPcyArKyI7DQoJ CWRtcCgkY29tYm9zKTsNCgl9DQoJLy8gQ29uc3RydWN0IHRoZSBvdXRwdXQNCgkkb3V0ID0g YXJyYXkoKTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJaWYgKCRkZWJ1ZyA+IDIpIHsN CgkJZWNobyAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRtcCgkcnMpOw0KCX0NCglpZiAoJGRl YnVnID4gMykgew0KCQllY2hvICIrKyBBVkFJTEFCTEUgJz8nIFZBUlMgKysiOw0KCQlkbXAo JHByZXRleHQpOw0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgl9DQoNCglpZigkcnMpIHsNCgkJ JGlkeCA9IDA7DQoJCSRjdHIgPSAxOw0KCQkkdGh1bWJJZHggPSAwOw0KCQkkdGh1bWJDdHIg PSAxOw0KCQkkbnVtSW1hZ2VzID0gY291bnQoJHJzKTsNCgkJJHJlcGFnZW1lbnRzID0gYXJy YXkoKTsNCg0KCQkvLyBTZXQgdXAgdGhlIHBhZ2luZyBmZWF0dXJlcyBpZiByZXF1aXJlZA0K CQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJCSRuYXZvdXQgPSBhcnJheSgp Ow0KCQkJJG5leHQgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgIT0gJG51bVBhZ2Vz KTsNCgkJCSRwcmV2ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlID4gMSk7DQoNCgkJ CS8vIFJlcGxhY2UgYW55IHBhZ2luZyBpbmZvIGluIHRoZSBxdWVyeSBzdHJpbmcNCgkJCSRw cmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJ RCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0 WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UrMSk7DQoJCQkkdGhpc1BhZ2Ug PSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVt UGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0 X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJl dGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51bVBhZ2VzKTsNCg0KCQkJLy8gTGFi ZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxhY2VtZW50IHRhZyBhZnRlciBhIHBh cmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICdsYXRlcicgZG9uJ3QgaGF2ZSBsYWJl bHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJhbWRlbGltIGlzIHRoZSBtYXggbnVt YmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxsIHBhZ2VzDQoJCQkkbGFiZWwgPSBh cnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICdGaXJzdCcsDQoJCQkJCSd7bmF2cHJldn0n ID0+ICcmbGFxdW87JywNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJycsDQoJCQkJCSd7bmF2 dGhpc30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScgPT4gJHRodW1QYWdl LA0KCQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICcmcmFx dW87JywNCgkJCQkJJ3tuYXZsYXN0fScgPT4gJ0xhc3QnLA0KCQkJCSk7DQoNCgkJCSRsYWJl bFJFID0gJy9ceyhuYXZbYS16XSspJy4kcGFyYW1kZWxpbS4nKC4rPylcfS8nOw0KCQkJJG51 bUxhYmVscyA9IHByZWdfbWF0Y2hfYWxsKCRsYWJlbFJFLCAkcGFnZWZvcm0sICRsYWJlbHMp Ow0KDQoJCQlmb3IgKCRsYWJlbEN0ciA9IDA7ICRsYWJlbEN0ciA8ICRudW1MYWJlbHM7ICRs YWJlbEN0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0 cl0uJ30nOw0KCQkJCSRsYWJlbFskZmllbGRuYW1lXSA9ICRsYWJlbHNbMl1bJGxhYmVsQ3Ry XTsNCgkJCQkkcGFnZWZvcm0gPSBzdHJfcmVwbGFjZSgkbGFiZWxzWzBdWyRsYWJlbEN0cl0s ICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nLCAkcGFnZWZvcm0pOw0KCQkJfQ0KDQoJ CQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBMQUJFTFMgKysiOw0K CQkJCWRtcCgkbGFiZWwpOw0KCQkJfQ0KDQoJCQkvLyBHZW5lcmF0ZSAnZWFybGllcicgYW5k ICdsYXRlcicgbGlzdHMNCgkJCSRudW1FYXJsaWVyID0gaW50dmFsKCRsYWJlbFsne25hdmVh cmxpZXJ9J10pOw0KCQkJJG51bUxhdGVyID0gaW50dmFsKCRsYWJlbFsne25hdmxhdGVyfSdd KTsNCgkJCSRudW1FYXJsaWVyID0gKCRudW1FYXJsaWVyICYmICgkdGh1bVBhZ2UtJG51bUVh cmxpZXIgPiAxKSkgPyAkbnVtRWFybGllciA6ICR0aHVtUGFnZS0xOw0KCQkJJG51bUxhdGVy ID0gKCRudW1MYXRlciAmJiAoJHRodW1QYWdlKyRudW1MYXRlciA8ICRudW1QYWdlcykpID8g JG51bUxhdGVyIDogJG51bVBhZ2VzLSR0aHVtUGFnZTsNCgkJCSRuYXZFYXJsaWVyID0gJG5h dkxhdGVyID0gYXJyYXkoKTsNCgkJCWZvciAoJGlkeCA9ICR0aHVtUGFnZS0kbnVtRWFybGll cjsgJGlkeCA8ICR0aHVtUGFnZTsgJGlkeCsrKSB7DQoJCQkJJG5hdkVhcmxpZXJbXSA9ICc8 YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJ RCwgJGlkeCkuJyI+Jy4kaWR4Lic8L2E+JzsNCgkJCX0NCgkJCWZvciAoJGlkeCA9ICR0aHVt UGFnZSsxOyAkaWR4IDw9ICR0aHVtUGFnZSskbnVtTGF0ZXI7ICRpZHgrKykgew0KCQkJCSRu YXZMYXRlcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0 X3VyaSddLCAkZ2FsbElELCAkaWR4KS4nIj4nLiRpZHguJzwvYT4nOw0KCQkJfQ0KCQkJJG5h dkVhcmxpZXIgPSBkb1dyYXAoJG5hdkVhcmxpZXIsICcnLCAkbmF2YnJlYWssICcnKTsNCgkJ CSRuYXZMYXRlciA9IGRvV3JhcCgkbmF2TGF0ZXIsICcnLCAkbmF2YnJlYWssICcnKTsNCg0K CQkJLy8gTWFrZSB1cCB0aGUgcmVwYWdlbWVudHMgYXJyYXkgZm9yIHBhZ2Vmb3JtDQoJCQkk cmVwYWdlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICgoJHByZXYpID8g ZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmZpcnN0fSdd Lic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmZpcnN0fSddLCAkbmF2 YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2cHJldn0nID0+ICgoJHByZXYpID8g ZG9UYWcoJzxhIGhyZWY9IicuJHByZXZQYWdlLiciPicuJGxhYmVsWyd7bmF2cHJldn0nXS4n PC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZwcmV2fSddLCAkbmF2YnJl YWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICRuYXZFYXJsaWVy LA0KCQkJCQkne25hdnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlzfSddLCAkbmF2 YnJlYWssICdjdXJyZW50ICcuJGVtcHR5Y2xhc3MpLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9 PiBkb1RhZygnPGEgaHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlzdXJs fSddLic8L2E+JywgJG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25hdmxhdGVyfScg PT4gJG5hdkxhdGVyLA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRuZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5leHR9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJyZWFrLCAkZW1w dHljbGFzcykpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBo cmVmPSInLiRsYXN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmxhc3R9J10uJzwvYT4nLCAkbmF2 YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bGFzdH0nXSwgJG5hdmJyZWFrLCAkZW1wdHlj bGFzcykpLA0KCQkJCQkne25hdnRoaXNwYWdldXJsfScgPT4gJHRoaXNQYWdlLA0KCQkJCQkn e25hdm5leHRwYWdldXJsfScgPT4gJG5leHRQYWdlLA0KCQkJCQkne25hdnByZXZwYWdldXJs fScgPT4gJHByZXZQYWdlLA0KCQkJCQkne25hdmZpcnN0cGFnZXVybH0nID0+ICRmaXJzdFBh Z2UsDQoJCQkJCSd7bmF2bGFzdHBhZ2V1cmx9JyA9PiAkbGFzdFBhZ2UsDQoJCQkJCSd7dG90 YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0KCQkJCQkne3RvdGFscGFnZXN9JyA9PiAkbnVt UGFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4gJGFsbEltYWdlcywNCgkJCQkpOw0KDQoJ CQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBMQUNFTUVOVFMg KysiOw0KCQkJCWRtcCgkcmVwYWdlbWVudHMpOw0KCQkJfQ0KCQkJLy8gUGVyZm9ybSBhbGwg c3Vic3RpdHV0aW9ucyBhbmQgd3JhcCB0aGUgZW50aXJlIGxvdCBpZiByZXF1aXJlZA0KCQkJ JG5hdm91dFtdID0gcGFyc2Uoc3RydHIoJHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMpKTsNCgkJ CSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7 DQoJCX0NCg0KCQkvLyBGb3IgZXZlcnkgaW1hZ2UgaW4gdGhlIGdhbGxlcnkuLi4NCgkJZm9y ZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJaWYgKCRkaXJlY3RvcnkpIHsNCgkJCQkkdXJsUGF0 aCA9ICRyb3dbJ3BhdGgnXS4nLyc7DQoJCQl9IGVsc2Ugew0KCQkJCSR1cmxQYXRoID0gaHUu JGltZ19kaXIuJy8nOw0KCQkJfQ0KCQkJJHRoZVRodW1iID0gJHVybFBhdGggLiAkcm93Wydp ZCddIC4gJHRodW1ibW9kIC4gJHJvd1snZXh0J107DQoJCQkkZnVsbFNpemUgPSAkdXJsUGF0 aCAuICRyb3dbJ2lkJ10gLiAkZnVsbG1vZCAuJHJvd1snZXh0J107DQoNCgkJCS8vIERvIHdl IG5lZWQgdG8gcmVzZXQgdGhlIHRodW1iIGNvdW50ZXIgdGhpcyB0aW1lPw0KCQkJZm9yZWFj aCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYgKCRy b3dbJHJlc2V0T3B0XSAhPSAkcmVzZXRWYWwpIHsNCgkJCQkJJHRodW1iSWR4ID0gMDsNCgkJ CQkJJHRodW1iQ3RyID0gMTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBJ cyBhIHRodW1iL3RleHQgb2JqZWN0IHJlcXVpcmVkIHRoaXMgdGltZT8NCgkJCSRvYmplY3Qg PSAnJzsNCgkJCWlmICgkdGh1bWJJZHggPj0gJHRodW1ib2Zmc2V0ICYmICR0aHVtYklkeCA8 ICR0aHVtYm9mZnNldCskdGh1bWJsaW1pdCkgew0KCQkJCXN3aXRjaCAoJHR5cGUpIHsNCgkJ CQkJY2FzZSAnaW1hZ2UnOg0KCQkJCQkJJG9iamVjdCA9ICgkdGV4dCkgPyAkdGV4dCA6ICc8 aW1nIHNyYz0iJy4kdGhlVGh1bWIuJyInIC4oKCRyb3dbJ2FsdCddKSA/ICcgYWx0PSInLiRy b3dbJ2FsdCddLiciJyA6ICcnKSAuKCgkdGh1bWJXaWR0aCkgPyAnIHdpZHRoPSInLiR0aHVt YldpZHRoLiR0aHVtYldVbml0cy4nIicgOiAnJykgLigoJHRodW1iSGVpZ2h0KSA/ICcgaGVp Z2h0PSInLiR0aHVtYkhlaWdodC4kdGh1bWJIVW5pdHMuJyInIDogJycpIC4nIC8+JzsNCgkJ CQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNl bWVudCBhcnJheQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne2lkfScgPT4g JHJvd1snaWQnXSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJvd1snbmFtZSddLA0KCQkJCQkne2V4 dH0nID0+ICRyb3dbJ2V4dCddLA0KCQkJCQkne2NhdGVnb3J5fScgPT4gJHJvd1snY2F0ZWdv cnknXSwNCgkJCQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ICRyb3dbJ2NhdGVnb3J5X3RpdGxl J10sDQoJCQkJCSd7YXV0aG9yfScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1 bWJ9JyA9PiAkcm93Wyd0aHVtYm5haWwnXSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNpemUs DQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRofScg PT4gJHVybFBhdGgsDQoJCQkJCSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNpemUp LA0KCQkJCQkne3RodW1iZGVmfScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJJ3th bHR9JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRpb24n XSwNCgkJCQkJJ3t0aHVtYndpZHRofScgPT4gJHRodW1iV2lkdGgsDQoJCQkJCSd7dGh1bWJo ZWlnaHR9JyA9PiAkdGh1bWJIZWlnaHQsDQoJCQkJCSd7dGh1bWJ3dW5pdHN9JyA9PiAkdGh1 bWJXVW5pdHMsDQoJCQkJCSd7dGh1bWJodW5pdHN9JyA9PiAkdGh1bWJIVW5pdHMsDQoJCQkJ CSd7d2lkdGh9JyA9PiAkcm93Wyd3J10sDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHJvd1snaCdd LA0KCQkJCQkne2RhdGV9JyA9PiAkcm93WydkYXRlJ10sDQoJCQkJCSd7b2JqZWN0fScgPT4g JG9iamVjdCwNCgkJCQkJJ3tnYWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4 fScgPT4gJGlkeCwNCgkJCQkJJ3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0aHVtYmlu ZGV4fScgPT4gJHRodW1iSWR4LA0KCQkJCQkne3RodW1iY291bnRlcn0nID0+ICR0aHVtYkN0 ciwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7bWF4aW1h Z2VzfScgPT4gJGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNoYW5n ZWQgaXRlbXMgdGhhdCBhcmUgcmVxdWlyZWQNCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMgYXMg JHJlc2V0T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3tjaGFuZ2Vk Jy4kcGFyYW1kZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgkcm93WyRyZXNldE9wdF0gIT0gJHJl c2V0VmFsKSA/IGRvVGFnKCRyb3dbJHJlc2V0T3B0XSwgJHRodW1iY2hhbmdld3JhcHRhZywg JHRodW1iY2hhbmdlY2xhc3MpIDogJyc7DQoJCQl9DQoNCgkJCS8vIEFwcGVuZCBhbnkgY29t Ym9zDQoJCQlmb3JlYWNoICgkY29tYm9zIGFzICRkZWZOYW1lID0+ICRuZXdEZWYpIHsNCgkJ CQlpZiAoIWFycmF5X2tleV9leGlzdHMoJGRlZk5hbWUsICRyZXBsYWNlbWVudHMpKSB7DQoJ CQkJCSRyZXBsYWNlbWVudHNbJGRlZk5hbWVdID0gc3RydHIoJG5ld0RlZiwgJHJlcGxhY2Vt ZW50cyk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBTb2xvcyBhcmUgaXRlbXMgaW4gdGhlIG91 dHB1dCBmb3JtIHRoYXQgcmVxdWlyZSBkZXRhaWxzIGZyb20gYSBzcGVjaWZpYyByb3cuIFVz ZWZ1bCBvbmx5IGluIGNvbGxhdGlvbg0KCQkJLy8gbW9kZSwgdGhleSBhcmUgYWRkZWQgdG8g dGhlIHJlcGxhY2VtZW50cyBhcnJheSBvbiBhbiBhcy1uZWVkZWQgYmFzaXMgdG8gc2F2ZSBz cGFjZS90aW1lDQoJCQkkc29sb1JFID0gJy9ceyhbYS16MC05XSspIycuJGN0ci4nXH0vJzsN CgkJCSRudW1Tb2xvcyA9IHByZWdfbWF0Y2hfYWxsKCRzb2xvUkUsICR0aGluZywgJHNvbG9z KTsNCgkJCWZvciAoJHNvbG9DdHIgPSAwOyAkc29sb0N0ciA8ICRudW1Tb2xvczsgJHNvbG9D dHIrKykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nIycu JGN0ci4nfSc7DQoJCQkJJGdyYWJmaWVsZCA9ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJdLid9 JzsNCgkJCQkkcmVwbGFjZW1lbnRzWyRmaWVsZG5hbWVdID0gJHJlcGxhY2VtZW50c1skZ3Jh YmZpZWxkXTsNCgkJCX0NCg0KCQkJLy8gQWRkIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIGlmIHRo ZXkncmUgZGVmaW5lZA0KCQkJaWYgKGNvdW50KCRyZXBhZ2VtZW50cykgPiAwKSB7DQoJCQkJ JHJlcGxhY2VtZW50cyA9IGFycmF5X21lcmdlKCRyZXBhZ2VtZW50cywgJHJlcGxhY2VtZW50 cyk7DQoJCQl9DQoNCgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUkVQTEFD RU1FTlRTIDogSU1BR0UgIi4kY3RyLiIgKysiOw0KCQkJCWRtcCgkcmVwbGFjZW1lbnRzKTsN CgkJCX0NCg0KCQkJLy8gSW4gY29sbGF0ZSBtb2RlIHRoZSBmb3JtIGlzIG9ubHkgcGFyc2Vk IGF0IHRoZSBlbmQ6IGJ1aWxkIGEgY29sbG9zYWwgbXVsdGktZGltZW5zaW9uIGFycmF5IG9m IGFsbCBpdGVtcyBoZXJlDQoJCQlpZiAoJGNvbGxhdGUpIHsNCgkJCQlmb3JlYWNoICgkcmVw bGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJJGNvbGxhdGlvbnNb JGRlZk5hbWVdW10gPSAkZGVmVmFsOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJJG91dFtd ID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQl9DQoNCgkJCS8v IEtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIHNvIHdlIGtub3cgaWYgdGhleSBj aGFuZ2UgbmV4dCB0aW1lDQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9 PiAkcmVzZXRWYWwpIHsNCgkJCQkkcmVzZXRPcHRzWyRyZXNldE9wdF0gPSAkcm93WyRyZXNl dE9wdF07DQoJCQl9DQoJCQkkdGh1bWJJZHgrKzsNCgkJCSR0aHVtYkN0cisrOw0KCQkJJGlk eCsrOw0KCQkJJGN0cisrOw0KCQl9DQoJCWlmICgkY29sbGF0ZSkgew0KCQkJZm9yZWFjaCAo JGNvbGxhdGlvbnMgYXMgJGl0ZW0gPT4gJGxpc3QpIHsNCgkJCQkvLyBRdW90ZSB0aGUgbGlz dHMgaWYgcmVxdWlyZWQNCgkJCQkkbGlzdCA9IChlbXB0eSgkZGJsUXVvdGUpIHx8IGluX2Fy cmF5KCRpdGVtLCAkZGJsUXVvdGUpKSA/IGRvQXJyYXkoJGxpc3QsICdzbWRfZG9EYmxRdW90 ZScpIDogJGxpc3Q7DQoJCQkJJGxpc3QgPSAoZW1wdHkoJHNnbFF1b3RlKSB8fCBpbl9hcnJh eSgkaXRlbSwgJHNnbFF1b3RlKSkgPyBkb0FycmF5KCRsaXN0LCAnZG9RdW90ZScpIDogJGxp c3Q7DQoJCQkJJGNvbGxhdGlvbnNbJGl0ZW1dID0gaW1wbG9kZSgkZGVsaW0sICRsaXN0KTsN CgkJCX0NCgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyAr KyI7DQoJCQkJZG1wKCRjb2xsYXRpb25zKTsNCgkJCX0NCgkJCSRvdXRbXSA9IHBhcnNlKHN0 cnRyKCR0aGluZywgJGNvbGxhdGlvbnMpKTsNCgkJfQ0KCQlpZiAoJGRlYnVnID4gMikgew0K CQkJZWNobyAiKysgRklOQUwgT1VUUFVUICsrIjsNCgkJCWRtcCgkb3V0KTsNCgkJfQ0KCX0N Cg0KCXJldHVybiBkb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzKTsNCn0N Cg0KLy8gUmV0dXJuIGFuIGV4cGFuZGVkIGxpc3Qgb2YgaXRlbXM6DQovLyAxKSBBbnl0aGlu ZyBjb250YWluaW5nICc/JyBvciAnIScgaXMgY2hlY2tlZCBmb3IgYSBtYXRjaCB3aXRoIGEg VFhQIGZpZWxkDQovLyAyKSBBbnkgcmFuZ2VzIG9mIGl0ZW1zIGFyZSBleHBhbmRlZCAoZS5n LiA0LTcgPSA0LDUsNiw3KQ0KLy8gMykgVFhQIGZpZWxkcyBtYXkgdGhlbXNlbHZlcyBiZSBs aXN0cyBvciByYW5nZXMNCi8vIDQpIEFueXRoaW5nIHRoYXQgaXMgbm90IGEgVFhQIGZpZWxk IGlzIHVzZWQgdmVyYmF0aW0NCi8vIDUpIFRoZSBpdGVtcyBhcmUgcmV0dXJuZWQgYXMgMiBs aXN0czsgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24NCi8vIEFyZ3M6DQovLyAgbHN0ID0gdGhl IGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3RyaW5nDQovLyAgcm5nID0gd2hldGhlciB0byBhbGxv dyByYW5nZXMgb3Igbm90IChib29sKQ0KLy8gIHN1YiA9IHRoZSB0eXBlIG9mIHN1YmNhdGVn b3J5IHRvIHRyYXZlcnNlIChpbWFnZSwgZmlsZSwgbGluaywgYXJ0aWNsZSwgbm9uZT0iIikg YW5kIGhvdyBtYW55IGxldmVscyB0byBnbyBkb3duIChlLmcuIGltYWdlOjIpDQovLyAgcXRl ID0gd2hldGhlciB0byBxdW90ZSBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5IG9yIG5vdCAoYm9v bCkNCi8vICBkbG0gPSB0aGUgZGVsaW1pdGVyIChzdHJpbmcpDQppZiAoIWZ1bmN0aW9uX2V4 aXN0cygic21kX2RvTGlzdCIpKSB7DQpmdW5jdGlvbiBzbWRfZG9MaXN0KCRsc3QsICRybmc9 dHJ1ZSwgJHN1Yj0iIiwgJHF0ZT10cnVlLCAkZGxtPSIsIikgew0KCWdsb2JhbCAkdGhpc2Fy dGljbGUsICRwcmV0ZXh0Ow0KDQoJJGluYyA9ICRleGMgPSBhcnJheSgpOw0KCSRsc3QgPSBk b19saXN0KCRsc3QsICRkbG0pOw0KCSRtb2RSRSA9ICcvKFw/fFwhKShbQS1aYS16MC05X1wt IF0rKS8nOw0KCWZvcmVhY2ggKCRsc3QgYXMgJGl0ZW0pIHsNCgkJJG1vZCA9IDA7IC8vIDAg PSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0KCQkkbnVtTW9kcyA9IHByZWdfbWF0Y2hfYWxsKCRt b2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCQlmb3IgKCRtb2RDdHIgPSAwOyAkbW9kQ3RyIDwg JG51bU1vZHM7ICRtb2RDdHIrKykgew0KCQkJLy8gbW9kICJ0eXBlIiBpcyBnb3Zlcm5lZCBi eSB0aGUgZmlyc3Qgb25lIGZvdW5kIG9ubHkuIGkuZS4gaWYgImFydGljbGUtP2MhcyIgd2Fz IHVzZWQgaW4gb25lIGZpZWxkDQoJCQkvLyBpdCB3b3VsZCBiZSBhbiAiaW5jbHVkZSIgb2Yg dGhlIHdvcmQgImFydGljbGUtIiBwbHVzIHRoZSBjYXRlZ29yeSBhbmQgc2VjdGlvbiBjb25j YXRlbmF0ZWQNCgkJCSRtb2QgPSAoJG1vZHNbMV1bMF0gPT09ICIhIikgPyAxIDogMDsNCgkJ CSRtb2RDaGFyID0gJG1vZHNbMV1bJG1vZEN0cl07DQoJCQkkbW9kSXRlbSA9IHRyaW0oJG1v ZHNbMl1bJG1vZEN0cl0pOw0KCQkJJGxvd2l0ZW0gPSBzdHJ0b2xvd2VyKCRtb2RJdGVtKTsN CgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRsb3dpdGVtLCAkcHJldGV4dCkpIHsNCgkJCQkk aXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRl bV0sICRpdGVtKTsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRsb3dpdGVt XSkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhp c2FydGljbGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCQl9IGVsc2Ugew0KCQkJCSRpdGVtID0g c3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRtb2RJdGVtLCAkaXRlbSk7DQoJCQl9 DQoJCX0NCg0KCQkvLyBIYW5kbGUgcmFuZ2VzIG9mIHZhbHVlcw0KCQlpZiAoJHJuZyAmJiBw cmVnX21hdGNoKCcvXihcZCspXC0oXGQrKSQvJywgJGl0ZW0pKSB7DQoJCQlsaXN0KCRsbywg JGhpKSA9IGV4cGxvZGUoIi0iLCAkaXRlbSwgMik7DQoJCQkkaXRlbSA9IGltcGxvZGUoJGRs bSwgcmFuZ2UoJGxvLCAkaGkpKTsNCgkJfQ0KDQoJCS8vIEl0ZW0gbWF5IGJlIGVtcHR5OyBp Z25vcmUgaXQgaWYgc28NCgkJaWYgKCRpdGVtKSB7DQoJCQkkaXRlbSA9IGRvX2xpc3QoJGl0 ZW0sICRkbG0pOw0KCQkJLy8gSGFuZGxlIHN1Yi1jYXRlZ29yaWVzDQoJCQlpZiAoJHN1Yikg ew0KCQkJCWxpc3QoJHN1YnR5cGUsICRsZXZlbCkgPSBleHBsb2RlKCI6IiwgJHN1Yik7DQoJ CQkJJGxldmVsID0gKGVtcHR5KCRsZXZlbCkpID8gMCA6ICRsZXZlbDsNCgkJCQkkbGV2ZWwg PSAoc3RydG9sb3dlcigkbGV2ZWwpPT0iYWxsIikgPyA5OTk5OSA6ICRsZXZlbDsNCgkJCQlm b3JlYWNoICgkaXRlbSBhcyAkY2F0KSB7DQoJCQkJCSRjYXRzID0gZ2V0VHJlZShkb3NsYXNo KCRjYXQpLCAkc3VidHlwZSk7DQoJCQkJCWZvcmVhY2ggKCRjYXRzIGFzICRqZHggPT4gJHZh bCkgew0KCQkJCQkJaWYgKCRjYXRzWyRqZHhdWydsZXZlbCddIDw9ICRsZXZlbCkgew0KCQkJ CQkJCSRpdGVtW10gPSAkY2F0c1skamR4XVsnbmFtZSddOw0KCQkJCQkJfQ0KCQkJCQl9DQoJ CQkJfQ0KCQkJfQ0KDQoJCQkvLyBRdW90ZSBpZiBhc2tlZA0KCQkJJGl0ZW0gPSAoJHF0ZSkg PyBkb0FycmF5KCRpdGVtLCAnZG9RdW90ZScpIDogJGl0ZW07DQoJCQlpZiAoJG1vZCA9PT0g MCkgew0KCQkJCSRpbmMgPSBhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2UoJGluYywgJGl0ZW0p KTsNCgkJCX0gZWxzZSB7DQoJCQkJJGV4YyA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgk ZXhjLCAkaXRlbSkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBhcnJheSgkaW5jLCAkZXhj KTsNCn0NCn0NCg0KLy8gQWx0ZXJuYXRpdmUgdG8gdGhlIGNvcmUncyBkb1F1b3RlKCkuIFRo aXMgb25lIGRibC1xdW90ZXMgaW5zdGVhZCBvZiBzZ2wtcXVvdGVzDQppZiAoIWZ1bmN0aW9u X2V4aXN0cygic21kX2RvRGJsUXVvdGUiKSkgew0KZnVuY3Rpb24gc21kX2RvRGJsUXVvdGUo JHZhbCkgew0KCXJldHVybiAnIicuJHZhbC4nIic7DQp9DQp9DQoNCi8vIFdvcmsgb3V0IHdo aWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGlu Zm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0 LCAkcGFnaW5nKSB7DQoJJG51bVRodW1zID0gY291bnQoJHJzKTsNCglpZiAoKCRsaW1pdCA+ IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBhZ2VzID0gKCRudW1UaHVtcyA+IDApID8gY2Vp bCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJCSR0aHVtUGFnZSA9ICghZ3BzKCRnYWxsSUQp KSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRvZmZzZXQgPSAoJHRodW1QYWdlIC0gMSkgKiAk bGltaXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFnaW5nIHJlcXVpcmVkDQoJCSRudW1QYWdl cyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJfQ0KCXJldHVybiBhcnJheSgkbnVtVGh1bXMs ICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KTsNCn0NCg0KLy8gUmVhZCB0aGUgZ2l2 ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFuZCBnZXQgYWxsIGZpbGVzIHRoYXQgbWF0Y2gu DQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGlyIGxldmVscyBhcyBnaXZlbiBpbiB0aGUgJHN1 YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9kb0RpcmVjdG9yeSgkbHN0LCAkbHZsPTAsICRz dWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwgJGN0cj0wKSB7DQoJbGlzdCgkZGlyaW5jLCAk ZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxzdCwgZmFsc2UsICRzdWIsIGZhbHNlLCAkZGxtKTsN CglsaXN0KCRtYXRjaGluYywgJG1hdGNoZXhjKSA9IHNtZF9kb0xpc3QoJG1hdGNoLCBmYWxz ZSwgJycsIGZhbHNlLCAkZGxtKTsNCgkkbWF0Y2hpbmMgPSAiLioiIC4oKCRtYXRjaGluYykg PyAiKCIgLmltcGxvZGUoInwiLCRtYXRjaGluYykuIikrLioiIDogIiIpOw0KCSRtYXRjaGV4 YyA9ICgkbWF0Y2hleGMpID8gIi4qKCIgLmltcGxvZGUoInwiLCRtYXRjaGV4YykuIikrLioi IDogInNtZF9nbHJ5XyIubXRfcmFuZCgpOw0KDQoJJHN1YiA9IChlbXB0eSgkc3ViKSkgPyAw IDogJHN1YjsNCgkkc3ViID0gKHN0cnRvbG93ZXIoJHN1Yik9PSJhbGwiKSA/IDk5OTk5IDog JHN1YjsNCgkkZmlsZUxpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRkaXJpbmMgYXMgJGRp cikgew0KCQlpZiAoJGhhbmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB7DQoJCQl3aGlsZSAoKCRm aWxlID0gQHJlYWRkaXIoJGhhbmRsZSkpICE9PSBmYWxzZSkgew0KCQkJCSRmdWxscGF0aCA9 ICRkaXIuRFMuJGZpbGU7DQoJCQkJaWYgKHByZWdfbWF0Y2goIi8iLiRtYXRjaGluYy4iLyIs ICRmdWxscGF0aCkgJiYgIXByZWdfbWF0Y2goIi8iLiRtYXRjaGV4Yy4iLyIsICRmdWxscGF0 aCkpIHsNCgkJCQkJaWYgKGlzX2RpcigkZnVsbHBhdGgpKSB7DQoJCQkJCQlpZiAoKCRmaWxl ID09ICIuIikgfHwgKCRmaWxlPT0gIi4uIikgfHwgKGluX2FycmF5KCRmaWxlLCAkZGlyZXhj KSkgfHwgKCRsdmwgPj0gJHN1YikpIHsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0gZWxz ZSB7DQoJCQkJCQkJLy8gUmVjdXJzZSB0aGUgc3ViZGlyLiBOb3RlIHRoYXQgdGhlICchJyBp cyB0ZW1wb3JhcmlseSBhZGRlZCBiYWNrIHRvIGVhY2ggZGlyZXhjIGl0ZW0NCgkJCQkJCQkk dG1wID0gJGRpcmV4YzsgLy8gRG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBhcnJheQ0K CQkJCQkJCWFycmF5X3Vuc2hpZnQoJHRtcCwgJGZ1bGxwYXRoKTsNCgkJCQkJCQkkc3ViRmls ZXMgPSBzbWRfZG9EaXJlY3RvcnkoaW1wbG9kZSgkZGxtLiIhIiwgJHRtcCksICRsdmwrMSwg JHN1YiwgJG1hdGNoLCAkZGxtLCAkY3RyKTsNCgkJCQkJCQkkZmlsZUxpc3QgPSBhcnJheV9t ZXJnZSgkZmlsZUxpc3QsICRzdWJGaWxlcyk7DQoJCQkJCQkJJGN0ciArPSBjb3VudCgkc3Vi RmlsZXMpOw0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJ CQkJJGZpbGVzdGF0ID0gc3RhdCgkZnVsbHBhdGgpOw0KCQkJCQkJJGltZ3NpemUgPSBnZXRp bWFnZXNpemUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsncGF0aCddID0g JGRpcjsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnbmFtZSddID0gYmFzZW5hbWUoJGZ1bGxw YXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaWQnXSA9IHByZWdfcmVwbGFjZSgnL1wu LiskLycsICcnLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2FsdCddID0gJyc7 DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhcHRpb24nXSA9ICcnOw0KCQkJCQkJJHBhcnRz ID0gZXhwbG9kZShEUywgJGRpcik7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhdGVnb3J5 J10gPSAoY291bnQoJHBhcnRzKSA+IDEpID8gZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRm aWxlTGlzdFskY3RyXVsnYXV0aG9yJ10gPSBzdHJ2YWwoJGZpbGVzdGF0Wyd1aWQnXSk7DQoJ CQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2RhdGUnXSA9IHN0cmZ0aW1lKCIlWS0lbS0lZCAlSDol TTolUyIsICRmaWxlc3RhdFsnY3RpbWUnXSk7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKCIu IiwgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydleHQnXSA9IChjb3VudCgkcGFy dHMpID4gMSkgPyAiLiIuZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsndyddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMF0pIDog Jyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2gnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkp ID8gc3RydmFsKCRpbWdzaXplWzFdKSA6ICcnOw0KCQkJCQl9DQoJCQkJCSRjdHIrKzsNCgkJ CQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRoYW5kbGUpIHsNCgkJCUBjbG9zZWRpcigkaGFuZGxl KTsNCgkJfQ0KCX0NCglyZXR1cm4gJGZpbGVMaXN0Ow0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4 aXN0cygic21kX3JlbW92ZVFTVmFyIikpIHsNCmZ1bmN0aW9uIHNtZF9yZW1vdmVRU1Zhcigk dXJsLCAka2V5KSB7DQoJJHVybCA9IHByZWdfcmVwbGFjZSgnLyguKikoXD98JiknIC4gJGtl eSAuICc9W14mXSs/KCYpKC4qKS9pJywgJyQxJDIkNCcsICR1cmwgLiAnJicpOw0KCSR1cmwg PSBzdWJzdHIoJHVybCwgMCwgLTEpOw0KCXJldHVybiAoJHVybCk7DQp9DQp9DQoNCmlmICgh ZnVuY3Rpb25fZXhpc3RzKCJzbWRfYWRkUVNWYXIiKSkgew0KZnVuY3Rpb24gc21kX2FkZFFT VmFyKCR1cmwsICRrZXksICR2YWx1ZSkgew0KCSR1cmwgPSBzbWRfcmVtb3ZlUVNWYXIoJHVy bCwgJGtleSk7DQoJaWYgKHN0cnBvcygkdXJsLCAnPycpID09PSBmYWxzZSkgew0KCQlyZXR1 cm4gKCR1cmwgLiAnPycgLiAka2V5IC4gJz0nIC4gJHZhbHVlKTsNCgl9IGVsc2Ugew0KCQly ZXR1cm4gKCR1cmwgLiAnJicgLiAka2V5IC4gJz0nIC4gJHZhbHVlKTsNCgl9DQp9DQp9Ijtz OjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjQyMjc3OiIJPHA+PGRpdiBpZD0ic21k X2hlbHAiPjwvcD4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxlcnk8L2gxPgoKCTxoMiBpZD0i Y29udGVudHMiPkNvbnRlbnRzPC9oMj4KCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNmZWF0dXJl cyI+RmVhdHVyZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2F1dGhvciI+QXV0aG9yPC9h PjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3Rh bGxhdGlvbjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjdXNhZ2UiPlRhZyB1c2FnZTwvYT4K CTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5HYWxsZXJ5IGZvcm08L2E+Cgk8dWw+ CgkJPGxpPjxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczwvYT48L2xp PgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjcGFnaW5nX2Zvcm0iPlBhZ2luZyBmb3Jt PC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgdGFn czwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjY29tYm9zIj5Db21ib3M8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Q29sbGF0ZSBtb2RlPC9h PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NoYW5nZWxvZyI+Q2hhbmdlbG9nPC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNjcmVkaXRzIj5DcmVkaXRzPC9hPjwvbGk+Cgk8L3VsPgoKCTxo MiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIGFs bCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxsZXJ5IHNjcmlwdHMgaW5jbHVk aW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwgbGlnaHRib3gsIGxpdGVib3gsIHNs aW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNob3csIGZhbmN5em9vbSwgZXRjPC9s aT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gZGF0YWJhc2UgKG9yIG9wdGlvbmFsbHkgYSBsaXN0IG9mIGRpcmVjdG9yaWVzKSB0 aGF0IG1hdGNoIGNhdGVnb3JpZXMgb3IgSURzPC9saT4KCQk8bGk+VXNlIGFydGljbGUgZmll bGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2UgY2F0ZWdvcmllcy9JRHMgZm9yIGFydGljbGUt c3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8bGk+TXVsdGktbGV2ZWwgc3ViLWNhdGVnb3J5 IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5IGxheW91dCBpcyBkZWZpbmVkIGluIGEgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybTwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nl c3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZl YXR1cmVzIGlzIGNvbnRyb2xsZWQgYnkgYSBzZWNvbmQgZm9ybTwvbGk+CgkJPGxpPlVzZXMg YSB0YWctcmVwbGFjZW1lbnQgc3lzdGVtIGxpa2UgdGhlIHdldF9mb3JfZWFjaF9pbWFnZSBw bHVnaW48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9yPC9oMj4KCgk8cD48 YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29u PC9hPi4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24s IHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBw YWdlPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3Rh bGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBo cmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3L3NtZF9nYWxsZXJ5Ij50 ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24u Y29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBp bnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6 Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yNjQ4MiI+Zm9ydW0g dGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBv ciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gcmVtb3ZlIHRoZSBwbHVn aW4sIHNpbXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgdGFiLjwv cD4KCgk8aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+CgoJPHA+Rm9yIHNvbWUgaWRlYXMgb24g dXNhZ2Ugc2NlbmFyaW9zLCBzZWUgdGhlIDxhIGhyZWY9IiNleGFtcGxlcyI+ZXhhbXBsZXM8 L2E+LjwvcD4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRoYXQgdGhpcyBwbHVnaW4gYWN0 cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90aGluZyBtb3JlLiBUaGUgcGx1Z2lu IG9wdGlvbnMgZ292ZXJuIHdoYXQgaW1hZ2VzIGFyZSBwdWxsZWQgb3V0IG9mIHRoZSBkYXRh YmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8gd2hhdGV2ZXIgb3JkZXIgeW91IGxpa2Uu PC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1hZ2UgJiM4MjEyOyBvbmUgYnkgb25lICYj ODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBwYXNzZWQgdG8gdGhlIDxjb2RlPmZvcm08 L2NvZGU+IG9mIHlvdXIgY2hvaWNlOyB5b3Ugc2ltcGx5IGNob29zZSB0byBkaXNwbGF5IHdo aWNoZXZlciBpbWFnZSBhdHRyaWJ1dGVzIHlvdSBsaWtlIGluIHRoaXMgZm9ybS4gVGhpcyBt ZWFucyBhbnkgaW1hZ2UgYXR0cmlidXRlcyBjYW4gYmUgJiM4MjIwO2luamVjdGVkJiM4MjIx OyBkaXJlY3RseSBpbnRvIGFueSBtYXJrdXA7IGl0IGNvdWxkIGJlIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGl0IGNvdWxkIGJlIGNvbnRlbnQsIGl0IGNvdWxkIGJl IGphdmFzY3JpcHQsIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+OyBhbnl0aGlu Zy4gUGFnaW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXksIGFsbG93aW5nIHlvdSB0byBzcGVj aWZ5IGhvdyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlvdXIgaW1hZ2UgZ2FsbGVyaWVzLjwv cD4KCgk8cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCBtb2RlIGNhbGxlZCAmIzgyMjA7Y29s bGF0ZSYjODIyMTsgdGhhdCBhbGxvd3MgeW91IHRvIGNvbGxlY3QgYWxsIGltYWdlIGF0dHJp YnV0ZXMgdG9nZXRoZXIgaW50byBhIHNlcmllcyBvZiBiaWcgbG9uZyBsaXN0cyA8ZW0+d2l0 aG91dDwvZW0+IGNhbGxpbmcgdGhlIGZvcm0gZXZlcnkgdGltZS4gVGhlIGZvcm0gaXMgdGhl biBvbmx5IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQuPC9wPgoKCTxwPkJldHdlZW4gdGhl c2UgdHdvIG1vZGVzIHlvdSA8ZW0+c2hvdWxkPC9lbT4gYmUgYWJsZSB0byByZWFsaXNlIGFu eSBnYWxsZXJ5aW5nIHNvbHV0aW9uOyBub3cgYW5kIGluIGZ1dHVyZS48L3A+CgoJPGgzIGNs YXNzPSJ0YWcgIiBpZD0ic21kX2dhbGxlcnkiPnNtZF9nYWxsZXJ5PC9oMz4KCgk8cCBjbGFz cz0idGFnLXN1bW1hcnkiPlBsYWNlIG9uZSBvciBtb3JlIHNtZF9nYWxsZXJ5IHRhZ3MgaW4g YW55IGFydGljbGUsIHBhZ2Ugb3IgZm9ybSwgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5n IG9wdGlvbnMgdG8gY29uZmlndXJlIGl0IGFuZCB1c2UgYSBmb3JtIHRvIGRlZmluZSBob3cg dGhlIGdhbGxlcnkgaXMgZGlzcGxheWVkLjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0i YXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgSURzIGZvciBpbmNsdXNpb24g aW4gdGhlIGdhbGxlcnkuIE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMsIGZvciBleGFtcGxl IDxjb2RlPmlkPSZxdW90OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGlt YWdlcyA1LCA4LCA5LCAxMCwgMTEgYW5kIDQyLiBVc2UgYW4gZXhjbGFtYXRpb24gbWFyayBp biBmcm9udCBvZiBhIG51bWJlciBvciByYW5nZSB0byBleGNsdWRlIHRob3NlIGltYWdlczwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2F0ZWdvcnk8L3NwYW4+IDogbGlz dCBvZiBpbWFnZSBjYXRlZ29yaWVzIGZvciBpbmNsdXNpb24gaW4gdGhlIGdhbGxlcnkuIFlv dSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1lIGNhdGVnb3JpZXMgKGUuZy4gJiM4MjIwO2FuaW1h bHMmIzgyMjE7KSBvciBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNsZSBm aWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/aWQm cXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgYWxsIGltYWdlcyBmcm9tIHRoZSBjYXRlZ29yaWVz IGNhbGxlZCAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIHRoZSBjYXRlZ29yeSBjYWxsZWQg JiM4MjIwO2FydC00MiYjODIyMTsgKGFzc3VtaW5nIHRoZSBjdXJyZW50IGFydGljbGUgaGFz IGFuIGlkIG9mIDQyIG9mIGNvdXJzZSkuPGRpdiBjbGFzcz0iYnJlYWsiPlVzZSBhbiBleGNs YW1hdGlvbiBtYXJrIHRvIGV4Y2x1ZGUgdGhlIGdpdmVuIGNhdGVnb3J5IG9yIGZpZWxkLiBG aWVsZHMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBsaXN0cyBvZiBjYXRlZ29yaWVzLiBUaGUg PyBmaWVsZCBuYW1lcyBtYXkgYmUgY29tYmluZWQgKGUuZy4gP3MtP2FydGljbGVfaW1hZ2Up IGJ1dCBiZSBhd2FyZSB0aGF0IGZpZWxkIG5hbWVzIG1heSBjb250YWluIHNwYWNlczwvZGl2 PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+c3VibGV2ZWw8L3NwYW4+IDog YW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7bGV2ZWxzJiM4MjE3 OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnkuIHN1YmxldmVsPSYj ODIyMDswJiM4MjIxOyAodGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhlIHRvcC1sZXZlbDsgMSA9 IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRvcC1sZXZlbCBwbHVzIHRo ZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9JiM4MjIwO2FsbCYjODIy MTsgaXMgYWxsIHN1Yi1jYXRlZ29yaWVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5zb3J0PC9zcGFuPiA6IHJlLW9yZGVyIHRoZSBpbWFnZXMgYnkgPGNvZGU+Y2F0ZWdv cnk8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPm5hbWU8L2NvZGU+LCA8Y29kZT5kYXRl PC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBmaWxlIDxjb2RlPmV4dDwvY29kZT5lbnNpb24s IDxjb2RlPmFsdDwvY29kZT4sIDxjb2RlPmNhcHRpb248L2NvZGU+LCA8Y29kZT5hdXRob3I8 L2NvZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxjb2RlPmhlaWdodDwvY29kZT4sIDxjb2Rl Pmhhc3RodW1iPC9jb2RlPiBpbiBlaXRoZXIgPGNvZGU+YXNjPC9jb2RlPmVuZGluZyBvciA8 Y29kZT5kZXNjPC9jb2RlPmVuZGluZyBvcmRlci4gVHdvIHNwZWNpYWwgY2FzZXMgZXhpc3Q6 IDxjb2RlPmZpeGVkPC9jb2RlPiBtYWludGFpbnMgdGhlIG9yZGVyIHlvdSBzcGVjaWZpZWQg aW4gdGhlIGlkIGF0dHJpYnV0ZSwgd2hpbGUgPGNvZGU+cmFuZG9tPC9jb2RlPiBzaHVmZmxl cyB0aGUgb3JkZXIuPGRpdiBjbGFzcz0iYnJlYWsiPk5vdGUgdGhhdCBpZiA8Y29kZT5yYW5k b208L2NvZGU+IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QsIHJhbmRv bSBpbWFnZXMgd2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgd2ls bCB0aGVuIGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGxpc3RlZCBhZnRlciBp dC4gSWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFueXdoZXJlIGVsc2UgaW4gdGhl IGxpc3QsIGFueSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxsIGRldGVybWluZSB0aGUgb3Jk ZXIgb2YgZGF0YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGFuZCB0aGUgcmVzdWx0cyB3 aWxsIHRoZW4gYmUgb3JkZXJlZCByYW5kb21seSAoaW4gdGhhdCBjYXNlLCBhbnkgaXRlbXMg bGlzdGVkIGFmdGVyIHJhbmRvbSB3aWxsIGJlIGlnbm9yZWQuIDxjb2RlPmZpeGVkPC9jb2Rl PiBpcywgaG93ZXZlciwgc3RpbGwgaG9ub3VyZWQpPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj5saW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2Yg aW1hZ2VzIHRvIHNob3cgPGVtPnBlciBwYWdlPC9lbT4uIDAgb3Igb21pdHRlZCA9IHVubGlt aXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF4bGltaXQ8L3NwYW4+ IDogdGhlIGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8gcHVsbCBm cm9tIHRoZSBkYXRhYmFzZS4gMCBvciBvbWl0dGVkID0gdW5saW1pdGVkPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5vZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkg aW1hZ2VzIGFuZCBzdGFydCBjb3VudGluZyB0aGVyZWFmdGVyPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj50aHVtYmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhpbXVtIG51bWJl ciBvZiB0aHVtYm5haWxzIHRvIHNob3cuIDAgb3Igb21pdHRlZCA9IGFsbCB0aHVtYnMuIE5v dGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSBsaW1pdDsgeW91IGNhbiBsYXVuY2ggYSAyMC1p bWFnZSBnYWxsZXJ5IGJ1dCBvbmx5IHNob3cgMSB0aHVtYm5haWwgb24gdGhlIHBhZ2U8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1ib2Zmc2V0PC9zcGFuPiA6IHNr aXAgdGhpcyBtYW55IHRodW1icyBiZWZvcmUgZGlzcGxheWluZyA8Y29kZT50aHVtYmxpbWl0 PC9jb2RlPiB0aHVtYm5haWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50 aHVtYmNoYW5nZTwvc3Bhbj4gOiBhIGxpc3Qgb2YgYXR0cmlidXRlcyB0byAmIzgyMjA7d2F0 Y2gmIzgyMjE7OyBpLmUuIGl0IHRlbGxzIHRoZSBwbHVnaW4gdGhhdCB5b3Ugd2FudCB0byBi ZSBub3RpZmllZCB3aGVuIGl0ZW1zIGluIHRoaXMgbGlzdCBjaGFuZ2UgY29tcGFyZWQgdG8g dGhlIHByZXZpb3VzIHRodW1ibmFpbC4gVW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMgdGhp cyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgeW91ciA8Y29kZT5zb3J0PC9jb2RlPiBwYXJhbWV0 ZXIgb3IgZWxzZSB5b3UgY2FuIGdldCBzb21lIGZyZWFreSByZXN1bHRzISBJdCBkZWZhdWx0 cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4uPGRpdiBjbGFzcz0iYnJlYWsiPlRoaXMgYXR0 cmlidXRlIGlzIHZlcnkgdXNlZnVsIGZvciBzcGxpdHRpbmcgZ2FsbGVyaWVzIGF0LCBzYXks IGV2ZXJ5IGNoYW5nZSBpbiBjYXRlZ29yeSBhbmQgZGlzcGxheWluZyB0aGUgY2F0ZWdvcnkg dGl0bGUgYWJvdmUgZWFjaCBncm91cC4gSXRlbXMgeW91IHdhdGNoIGFyZSBhZGRlZCB0byB0 aGUgbGlzdCBvZiByZXBsYWNlbWVudCB0YWdzIGFuZCBhcmUgYXZhaWxhYmxlIGJ5IHB1dHRp bmcgJiM4MjIwO2NoYW5nZWQ6JiM4MjIxOyBpbiBmcm9udCBvZiB0aGVpciBuYW1lIChlLmcu IDxjb2RlPntjaGFuZ2VkOmNhdGVnb3J5fTwvY29kZT4gJiM4MjEyOyBzZWUgPGEgaHJlZj0i I2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgYSByZWFsIHVzZSBjYXNlKS4gVGhlIGNvbG9uIGRl bGltaXRlciBjYW4gYmUgY2hhbmdlZCB3aXRoIHRoZSA8Y29kZT5wYXJhbWRlbGltPC9jb2Rl PiBhdHRyaWJ1dGU8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRo dW1iY2hhbmdld3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQg YW55IGNoYW5nZWQgZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZyB3aXRoIHRoZSA8Y29kZT50 aHVtYmNoYW5nZTwvY29kZT4gYXR0cmlidXRlLiAgU3BlY2lmeSBpdCB3aXRob3V0IGFuZ2xl IGJyYWNrZXRzLCBlLmcuIDxjb2RlPnRodW1iY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90 OzwvY29kZT4uIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8gdGFncyk8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1iY2hhbmdlY2xhc3M8L3NwYW4+IDogdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gYW55 IGNoYW5nZWQgZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZyB3dGggdGhlIDxjb2RlPnRodW1i Y2hhbmdlPC9jb2RlPiBhdHRyaWJ1dGUuIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8gY2xh c3MpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50ZXh0PC9zcGFuPiA6IGRp c3BsYXkgdGhlIGdpdmVuIHRleHQgaW5zdGVhZCBvZiB0aHVtYm5haWxzLiBUaGUgdGV4dCBj YW4gY29udGFpbiA/IGFydGljbGUgZmllbGRzIGxpa2UgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYjwvc3Bhbj4gOiBpZiB5 b3Ugd2lzaCB0aGUgZnVsbHNpemUgaW1hZ2VzIGRpc3BsYXllZCBhcyB0aHVtYm5haWxzLCBv ciBpZiB5b3Ugd2FudCB0aGUgdGh1bWJuYWlsIGdhbGxlcnkgdG8gdXNlIHRoZSBmdWxsc2l6 ZSBpbWFnZXMsIHNwZWNpZnkgaXQgd2l0aCB0aGlzIGF0dHJpYnV0ZS4gVXNlIDxjb2RlPnRo dW1iPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIHNwZWNpZnkgdGhhdCBib3RoIGZ1bGxzaXpl IGltYWdlIGFuZCB0aHVtYm5haWwgZGlzcGxheSB0aGUgJiM4MjE2O3QmIzgyMTc7ICh0aHVt Ym5haWwpIGltYWdlLiBDb252ZXJzZWx5LCB1c2UgPGNvZGU+dGh1bWI9JnF1b3Q7MCZxdW90 OzwvY29kZT4gdG8gc3BlY2lmeSB0aGF0IGJvdGggZnVsbHNpemUgYW5kIHRodW1ibmFpbHMg dXNlIHRoZSBmdWxsIHNpemUgaW1hZ2VzLiBZb3UgY2FuIGFsc28gY2hvb3NlIG9uZSBvciB0 aGUgb3RoZXIgYnkgZ2l2aW5nIHRoaXMgYXR0cmlidXRlIHR3byBudW1iZXJzIHNlcGFyYXRl ZCBieSBhIGNvbG9uLjxkaXYgY2xhc3M9ImJyZWFrIj5Gb3IgJiM4MjE2O25vcm1hbCYjODIx Nzsgb3BlcmF0aW9uICYjODIxMjsgaS5lLiBmdWxsc2l6ZSBpbWFnZSBpcyBmdWxsIHNpemUs IHRodW1ibmFpbCBpcyAgdGh1bWIgc2l6ZWQgJiM4MjEyOyBzcGVjaWZ5IDxjb2RlPnRodW1i PSZxdW90OzA6MSZxdW90OzwvY29kZT4uIFRvIHJldmVyc2UgdGhpcywgdXNlIDxjb2RlPnRo dW1iPSZxdW90OzE6MCZxdW90OzwvY29kZT4uIE5vdGUgdGhhdCA8Y29kZT4xOjE8L2NvZGU+ IGFuZCA8Y29kZT4wOjA8L2NvZGU+IGFsc28gd29yayB0byBzZXQgYm90aCBpbWFnZXMgdG8g dGhlIHNhbWUgc2l6ZSBpZiB5b3UgcHJlZmVyIHRoYXQgc3ludGF4IG92ZXIgdXNpbmcgYSBz aW5nbGUgZGlnaXQ8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRo dW1ic2l6ZTwvc3Bhbj4gOiB0YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBwYXJh bWV0ZXJzIHRvIHNwZWNpZnkgd2lkdGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBnYWxs ZXJ5IHRodW1ibmFpbHMuIFRoZSBkZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9uJiM4 MjE3O3Qgc3BlY2lmeSB1bml0cy4gTWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBwYXJh bWV0ZXIgKGkuZS4gaGF2aW5nIGFuICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVyIGJl Zm9yZSBvciBhZnRlciB0aGUgY29tbWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBkaW1l bnNpb25zLiBVc2luZyBvbmx5IG9uZSB2YWx1ZSwgYm90aCB3aWR0aCBhbmQgaGVpZ2h0IHdp bGwgYmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIgbWF0Y2hpbmcgaW1hZ2VzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5wYWdlZm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBv ZiB5b3VyIHBhZ2luZyBuYXZpZ2F0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5wYWdpbmc8L3NwYW4+IDogc3dpdGNoIHBhZ2luZyBvbiB3aXRob3V0IGhhdmluZyB0 byBzcGVjaWZ5IGEgcGFnZWZvcm0uIFdoZW4gdGhpcyBpcyB1c2VkLCBhbGwgPGEgaHJlZj0i I3JlcF9wYWdpbmciPnBhZ2UgcmVwbGFjZW1lbnQgdGFnczwvYT4gYmVjb21lIGF2YWlsYWJs ZSBpbiB0aGUgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5IHJlcGxhY2VtZW50IHRh Z3M8L2E+IGFzIHdlbGw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmdhbGxl cnlpZDwvc3Bhbj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkIG5l dmVyIG5lZWQgdGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEIGJh c2VkIG9uIHRoZSBhdHRyaWJ1dGVzIHlvdSBzdXBwbHkuIEluIHRoZSB1bmxpa2VseSBldmVu dCB0aGF0IHR3byBpZGVudGljYWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91IGNhbiBvdmVycmlk ZSB0aGUgSUQgZm9yIGEgZ2FsbGVyeSB3aXRoIHRoaXMgYXR0cmlidXRlLjxkaXYgY2xhc3M9 ImJyZWFrIj5XaGF0IHRoZSBwbHVnaW4gZG9lcyAoaW50ZXJuYWxseSkgaXMgZ2VuZXJhdGUg YSAzMi1jaGFyYWN0ZXIgaGFzaCBzdHJpbmcgZm9yIGVhY2ggdGFnLCB0aGVuIHBpY2tzIGEg NC1jaGFyIGNvZGUgZnJvbSB0aGlzIHN0cmluZyAoaXQgdGFrZXMgZXZlcnkgNnRoIGNoYXJh Y3RlciBieSBkZWZhdWx0KS4gWW91IGNhbiBzdXBwbHkgYSB1bmlxdWUgZml4ZWQgc3RyaW5n IChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDtUaGVHYWxsZXJ5MiZxdW90OzwvY29kZT4p IG9yIGdpdmUgaXQgYSBxdWVzdGlvbiBtYXJrIGFuZCAyIG51bWJlcnMgc2VwYXJhdGVkIGJ5 IGEgY29sb24gKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz81OjQmcXVvdDs8L2NvZGU+ KS4gVGhlIGZpcnN0IG51bWJlciBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmaW5hbCBzdHJpbmcg dG8gZ2VuZXJhdGUsIHRoZSBzZWNvbmQgbnVtYmVyIGlzIGhvdyBtYW55IGNoYXJhY3RlcnMg dG8gc2tpcCBvdmVyIGluIHRoZSBmdWxsIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGltZSBpdCBw aWNrcyBvbmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPlNvIGluIHRoaXMgY2FzZSwgaXQg Z2VuZXJhdGVzIGEgNS1jaGFyYWN0ZXIgc3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlcnMgaXQg ZmluZHMgYXQgcG9zaXRpb25zIDEsNSw5LDEzLCBhbmQgMTcuIElmIHlvdSBvbWl0IHRoZSAy bmQgbnVtYmVyIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NiZxdW90OzwvY29kZT4p IGl0IHdpbGwgYXNzdW1lIGl0JiM4MjE3O3MgYW4gaW5jcmVtZW50IG9mIDEsIHNvIGluIHRo aXMgY2FzZSBpdCYjODIxNztsbCB1c2UgdGhlIDFzdCA2IGNoYXJhY3RlcnM8L2Rpdj48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPndyYXB0YWc8L3NwYW4+IDogdGhlIChY KUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVyeS4gU3BlY2lmeSBpdCB3 aXRob3V0IGFuZ2xlIGJyYWNrZXRzLCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1 b3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyB0YWcpPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcg dG8gc3Vycm91bmQgZWFjaCB0aHVtYm5haWwuIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8g dGFncyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNsYXNzPC9zcGFuPiA6 IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5 IHRvIHRoZSBlbnRpcmUgZ2FsbGVyeS4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyBjbGFz cyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm5hdndyYXB0YWc8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZv cm08L2NvZGU+LiBTcGVjaWZ5IGl0IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNv ZGU+d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzICYjODIyMDt1 bCYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm5hdmJyZWFrPC9z cGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIGl0ZW0gd2l0aGluIHRo ZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4uIERlZmF1bHQgaXMgJiM4MjIwO2xpJiM4MjIxOzwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2Y2xhc3M8L3NwYW4+IDogdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8g dGhlIG5hdmlnYXRpb24gd3JhcHRhZy4gRGVmYXVsdCBpcyAmIzgyMjA7c21kX2dhbGxlcnlf bmF2JiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZW1wdHljbGFz czwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFt ZSB0byBhcHBseSB0byB0aGUgbmF2aWdhdGlvbiBpdGVtcyB0aGF0IGFyZSA8ZW0+bm90PC9l bT4gbGlua3MuIERlZmF1bHQgaXMgJiM4MjIwO2VtcHR5JiM4MjIxOzwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+ZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0 ZXIgZm9yIHNwZWNpZnlpbmcgYXR0cmlidXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgs KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFyYW1kZWxpbTwvc3Bhbj4g OiBjaGFuZ2UgdGhlIGRlbGltaXRlciBmb3Igc3BlY2lmeWluZyBpbnRlci1wYXJhbWV0ZXIg YXR0cmlidXRlcy4gRGVmYXVsdCBpcyBjb2xvbiAoOik8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPmNvbGxhdGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8 YSBocmVmPSIjY29sbGF0ZV9tb2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj5jb21ibzwvc3Bhbj4gOiBzcGVjaWZ5IHlvdXIgb3duIDxh IGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmRpcmVjdG9yeTwvc3Bhbj4gOiByZWFkIGltYWdlcyBm cm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBk YXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF0Y2g8L3NwYW4+ IDogbGltaXQgdGhlIGltYWdlcyBhbmQgZGlyZWN0b3JpZXMgY2hvc2VuIGluIGRpcmVjdG9y eSBtb2RlLiBHaXZlIGl0IGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRlIG9yICFleGNsdWRl IGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBiZSBjaG9zZW4g b3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMgYXJlIGF1dG9tYXRp Y2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28gYW55IHBhcnQgb2Yg dGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRjaDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZGVidWc8L3NwYW4+IDogdHVybiBvbiBkaWFnbm9z dGljcy4gVmFyeWluZyBsZXZlbHMgb2YgdmVyYm9zaXR5IGZyb20gMCAobm9uZSkgdG8gNCAo YSBsb3QpPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJnYWxsZXJ5X2Zvcm0iPkdhbGxlcnkgZm9y bTwvaDM+CgoJPHA+VGhlIDxjb2RlPmZvcm08L2NvZGU+IGlzIHdoZXJlIHlvdSBkZXNpZ24g d2hhdCBldmVyeSB0aHVtYm5haWwgd2lsbCBsb29rIGxpa2Ugb24gdGhlIHNjcmVlbi4gWW91 IGRvIHRoaXMgYnkgc3BlY2lmeWluZyBtYXJrdXAgb3IgdGFncyBhcyBub3JtYWwuIEluIGtl eSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIHNheSwgYW4gaW1hZ2UgSUQgb3IgYWx0IHRhZyBv ciBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlvdSBzcGVjaWZ5IHNwZWNpYWwgPGEg aHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPi4gVGhlc2UgYXJlIHJl cGxhY2VkIGZvciBlYWNoIGltYWdlIGluIHR1cm4sIHRodXMgYnVpbGRpbmcgdXAgdGhlIGdh bGxlcnkuPC9wPgoKCTxwPkluIGNvbGxhdGUgbW9kZSwgdGhlIGltYWdlIGRldGFpbHMgYXJl IGluc3RlYWQgbWFkZSBpbnRvIGxpc3RzLiBUaGUgZm9ybSBpcyBvbmx5IHByb2Nlc3NlZCBv bmNlIGFuZCB0aGUgcmVwbGFjZW1lbnQgdGFncyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0Ljwv cD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0icmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRh Z3M6IGdhbGxlcnk8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57 aWR9PC9zcGFuPiA6IHRoZSBpbWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUg ZmlsZW5hbWUgd2l0aG91dCBpdHMgZXh0ZW5zaW9uKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e25hbWV9PC9zcGFuPiA6IHRoZSBmdWxsIGltYWdlIGZpbGVuYW1lIGFz IGRlZmluZWQgaW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRlbnNpb248 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntleHR9PC9zcGFuPiA6IHRoZSBm aWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgcGVyaW9kPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj57Y2F0ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29yeSBuYW1l PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57Y2F0ZWdvcnlfdGl0bGV9PC9z cGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29yeSB0aXRsZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e2F1dGhvcn08L3NwYW4+IDogd2hvIHVwbG9hZGVkIHRoZSBpbWFnZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3VybH08L3NwYW4+IDogdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBmdWxsc2l6ZSBpbWFnZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1idXJsfTwvc3Bhbj4gOiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2ltYWdlcGF0aH08L3NwYW4+IDogdGhlIGRp cmVjdG9yeSB0aGUgaW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPntpbWFnZWRlZn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhl IGltYWdlIChlLmcuIDUuanBnKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e3RodW1iZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgdGh1 bWJuYWlsIChlLmcuIDV0LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PnthbHR9PC9zcGFuPiA6IHRoZSBhbHQgdGV4dDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e3RpdGxlfTwvc3Bhbj4gOiB0aGUgY2FwdGlvbjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e2RhdGV9PC9zcGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57d2lkdGh9PC9zcGFuPiA6IGltYWdl IHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aGVpZ2h0fTwvc3Bh bj4gOiBpbWFnZSBoZWlnaHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0 aHVtYndpZHRofTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lkdGggKGlmIGRlZmluZWQ6IHNlZSB0 aGUgPGNvZGU+dGh1bWJzaXplPC9jb2RlPiBhdHRyaWJ1dGUpPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57dGh1bWhlaWdodH08L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdo dCAoZGl0dG8pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ3dW5p dHN9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0gZXRj LiBPbmx5IGlmIGRlZmluZWQgdmlhIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4pPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJodW5pdHN9PC9zcGFuPiA6IHRodW1i bmFpbCBoZWlnaHQgdW5pdHMgKGRpdHRvKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+e2hhc3RodW1ifTwvc3Bhbj4gOiBpZiB0aGUgaW1hZ2UgaGFzIGFuIGFzc29jaWF0 ZWQgdGh1bWJuYWlsIG9yIG5vdCAocHJvYmFibHkgbm90IG11Y2ggdXNlKTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2dhbGxlcnlpZH08L3NwYW4+IDogdGhlIGdhbGxl cnkgaWQgeW91IG9yIHRoZSBwbHVnaW4gYXNzaWduZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntvYmplY3R9PC9zcGFuPiA6IGEgc3BlY2lhbCBpdGVtIGNvbnRhaW5p bmcgZWl0aGVyIHRoZSA8Y29kZT50ZXh0PC9jb2RlPiBPUiB0aGUgaW1hZ2UgdGFnIG9mIHRo ZSBjb3JyZXNwb25kaW5nIHRodW1ibmFpbCBidXQgb25seSBpZiA8Y29kZT50aHVtYmxpbWl0 PC9jb2RlPiBhbGxvd3MgaXQuIGUuZy4gaWYgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1 b3Q7PC9jb2RlPiB0aGlzIHZhcmlhYmxlIGlzIG9ubHkgc2V0IGZvciB0aGUgZmlyc3QgdGh1 bWJuYWlsIGluIHRoZSBsaXN0LiBFdmVyeSBvdGhlciB0aW1lIGl0IGlzIGVtcHR5PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57Y291bnRlcn08L3NwYW4+IDogYW4gaW1h Z2UgY291bnRlciwgc3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgZWFjaCB0aW1l PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aW5kZXh9PC9zcGFuPiA6IGFu IGluZGV4IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1 c2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJjb3VudGVyfTwv c3Bhbj4gOiBhIHRodW1ibmFpbCBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEgYW5k IGluY3JlbWVudGluZyBlYWNoIHRpbWUuIE5vdGUgaXQgaXMgJiM4MjE2O3Jlc2V0JiM4MjE3 OyBiYWNrIHRvIDEgd2hlbmV2ZXIgYW4gZWxlbWVudCBnaXZlbiBpbiA8Y29kZT50aHVtYmNo YW5nZTwvY29kZT4gZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyB0aHVtYm5haWw8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmluZGV4fTwvc3Bhbj4gOiBhbiBp bmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90IG11Y2ggdXNl KS4gSXQgaXMgYWxzbyByZXNldCBqdXN0IGxpa2UgPGNvZGU+e3RodW1iY291bnRlcn08L2Nv ZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9z cGFuPiA6IHRoZSB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdl PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bWF4aW1hZ2VzfTwvc3Bhbj4g OiB0aGUgYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFn ZXM8L2xpPgoJPC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYgZWl0aGVyIDxjb2RlPnBhZ2lu Zz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdlZm9ybTwvY29kZT4gaGF2ZSBi ZWVuIHNwZWNpZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVwX3BhZ2luZyI+cGFnaW5nIHJl cGxhY2VtZW50IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9vLiBJZiB0aG9zZSBhcmVuJiM4 MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21ib3MiPmNyZWF0ZSB5b3VyIG93 bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSwgb3B0aW9uYWxs eSB3aXRoIGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNvZGU+P2V4Y2VycHQ8L2NvZGU+ LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0aWNsZV9pbWFnZTwvY29kZT4s IGV0Yy48L3A+CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQgZGVwZW5kaW5nIG9uIHdoZXRo ZXIgeW91IGFyZSB3YXRjaGluZyBmb3IgY2hhbmdlZCBlbGVtZW50cyB2aWEgdGhlIDxjb2Rl PnRodW1iY2hhbmdlPC9jb2RlPiBhdHRyaWJ1dGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugc3Bl Y2lmaWVkIDxjb2RlPnRodW1iY2hhbmdlPSZxdW90O2F1dGhvciwgY2F0ZWdvcnkmcXVvdDs8 L2NvZGU+IHRoZW4gZXZlcnkgdGltZSB0aGUgYXV0aG9yIG9yIGNhdGVnb3J5IGNoYW5nZWQg Y29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIHRodW1ibmFpbCwgb25lIG9yIHR3byBuZXcgcmVw bGFjZW1lbnQgdGFncyB3b3VsZCBiZWNvbWUgYXZhaWxhYmxlOyBuYW1lbHkgPGNvZGU+e2No YW5nZWQ6YXV0aG9yfTwvY29kZT4gYW5kIDxjb2RlPntjaGFuZ2VkOmNhdGVnb3J5KTwvY29k ZT4uPC9wPgoKCTxoMyBpZD0icGFnaW5nX2Zvcm0iPlBhZ2luZyBmb3JtPC9oMz4KCgk8cD5X aGVuIGFsbCB0aGUgdGh1bWJuYWlscyBoYXZlIGJlZW4gcHJvY2Vzc2VkLCB0aGUgPGNvZGU+ cGFnZWZvcm08L2NvZGU+IGlzIHByb2Nlc3NlZCBhbmQgZGlzcGxheWVkLiBJbiBhIHNpbWls YXIgbWFubmVyIHRvIHRoZSB3YXkgdGhlIDxhIGhyZWY9IiNnYWxsZXJ5X2Zvcm0iPmdhbGxl cnkgZm9ybTwvYT4gd29ya3MsIGEgc2VyaWVzIG9mIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5S ZXBsYWNlbWVudCBUYWdzPC9hPiBnb3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0 ZW1zIGFyZSBhdmFpbGFibGUuIEZvciBleGFtcGxlIHlvdSBjb3VsZCBjaG9vc2UgdG8gb25s eSBzaG93IG5leHQvcHJldi4gT3IgcGVyaGFwcyAxc3QgcGFnZS9sYXN0IHBhZ2UuIE9yIG51 bWJlcmVkIHBhZ2UgbGlua3MuPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfcGFn aW5nIj5SZXBsYWNlbWVudCB0YWdzOiBwYWdpbmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57bmF2Zmlyc3R9PC9zcGFuPiA6IHRoZSBmaXJzdCBwYWdlIChk ZWZhdWx0IGxhYmVsOiAmIzgyMjA7Rmlyc3QmIzgyMjE7KTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+e25hdnByZXZ9PC9zcGFuPiA6IHRoZSBwcmV2aW91cyBwYWdlIChk ZWZhdWx0IGxhYmVsOiAmIzgyMjA7JmxhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57bmF2ZWFybGllcn08L3NwYW4+IDogYW55IHBhZ2UgbnVtYmVy cyBiZWZvcmUgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+e25hdnRoaXN1cmx9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBhZ2Ugd2l0aCBhIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmsgdG8gaXRzZWxmPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2dGhpc308L3NwYW4+IDogdGhlIGN1cnJlbnQg cGFnZSB3aXRob3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluazwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkg cGFnZSBudW1iZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPntuYXZuZXh0fTwvc3Bhbj4gOiB0aGUgbmV4dCBwYWdlIChkZWZh dWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bmF2bGFzdH08L3NwYW4+IDogdGhlIGxhc3QgcGFnZSAoZGVmYXVs dCBsYWJlbDogJiM4MjIwO0xhc3QmIzgyMjE7KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e25hdmZpcnN0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHRvIHRoZSBmaXJzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bmF2cHJldnBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB0byB0aGUgcHJldmlvdXMgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdm5leHRwYWdldXJsfTwvc3Bhbj4gOiBy YXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gdGhlIG5leHQgcGFnZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdmxhc3RwYWdldXJsfTwvc3Bhbj4g OiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gdGhlIGxhc3QgcGFnZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RvdGFsaW1hZ2VzfTwvc3Bhbj4g OiB0aGUgdG90YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoZSBjdXJyZW50IHBh Z2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0b3RhbHBhZ2VzfTwvc3Bh bj4gOiB0aGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMgY29sbGVjdGlvbjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e21heGltYWdlc308L3NwYW4+IDogdGhl IGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9s aT4KCTwvdWw+CgoJPHA+VGhlIGN1cnJlbnQgcGFnZSBoYXMgYSBmaXhlZCBjbGFzcyBvZiAm IzgyMTY7Y3VycmVudCYjODIxNzsgYW5kIGVhY2ggaXRlbSBpcywgYnkgZGVmYXVsdCwgYSA8 Y29kZT4mbHQ7bGkmZ3Q7PC9jb2RlPiBmb3IgZWFzeSBzdHlsaW5nLiBUbyBhdm9pZCBhIHpp bGxpb24gb3B0aW9ucywgY3VzdG9tIGxhYmVscyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0 aGUgZm9ybSBpdHNlbGY6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwv cD4KCgk8cD5Xb3VsZCBsYWJlbCB0aGUgbGluayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBm aXJzdCBwYWdlIG9mIHRoZSBnYWxsZXJ5IGFzICYjODIyMDsxc3QmIzgyMjE7LiBUaGlzIHN5 bnRheCBhbGxvd3MgeW91IHRvIHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBz bmlwcGV0cywgZS5nLjo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMj fTwvY29kZT48L3A+CgoJPHA+WW91IGNhbiBvdmVycmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1z IGRpc3BsYXllZCBieSBuYXZlYXJsaWVyIGFuZCBuYXZsYXRlciBieSBzcGVjaWZ5aW5nIGEg Y29sb24gYW5kIGEgbnVtYmVyLiBTbyB0byBvbmx5IHNob3cgMiBpdGVtcyB0byB0aGUgbGVm dCBvZiB0aGUgY3VycmVudCBwYWdlIGFuZCAzIGl0ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxj b2RlPntuYXZlYXJsaWVyOjJ9IHtuYXZsYXRlcjozfTwvY29kZT4gaW4geW91ciBmb3JtLiBD dXJyZW50bHkgPGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxhdGVy fTwvY29kZT4gb25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9uIGhv dyB0byBvZmZlciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVkLjwv cD4KCgk8aDMgaWQ9ImNvbWJvcyI+Q29tYm9zPC9oMz4KCgk8cD5JZiB0aGUgYnVpbHQtaW4g PGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3 O3QgZW5vdWdoIGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGlu ZyB0aGUgc2FtZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUg dHlwaW5nLCB5b3UgY2FuIGRlZmluZSB5b3VyIG93biByZXBsYWNlbWVudCB0YWdzLiBUaGUg c3ludGF4IGlzOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtuZXd0YWcxOmRlZmluaXRp b24sIG5ld3RhZzI6ZGVmaW5pdGlvbiwgLi4uJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD4mIzgy MTY7ZGVmaW5pdGlvbiYjODIxNzsgY2FuIGJlIGFueSBmaXhlZCB0ZXh0LCBhbnkgZXhpc3Rp bmcgcmVwbGFjZW1lbnQgdGFnLCBvciBhbnkgYXJ0aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2Fu IGdldCByZWFsbHkgd2lsZCBoZXJlOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdp bjpmb3VuZCBpbiA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9y fV0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPnNvIG5vdyA8Y29kZT57aW1naW59PC9jb2RlPiBp cyBhdmFpbGFibGUgdG8geW91ciBmb3JtIGFuZCBtaWdodCBiZSByZXBsYWNlZCB3aXRoICYj ODIyMDtmb3VuZCBpbiB6b28gW3RhZ2dlZCB3aXRoIHplYnJhLCBhZnJpY2EsIHN0cmlwZXMu IFBob3RvIGJ5IEJsb2tlXSYjODIyMTsuICRwcmV0ZXh0IGlzIGFsc28gYXZhaWxhYmxlIGZv ciB0aG9zZSBnZWVrcyB3aG8ga25vdyB3aGF0JiM4MjE3O3MgaW4gaXQgKHVzZSA8Y29kZT5k ZWJ1Zz0mcXVvdDs0JnF1b3Q7PC9jb2RlPiB0byB2aWV3IGFsbCBhdmFpbGFibGUgYXJ0aWNs ZSB2YXJpYWJsZXMpLjwvcD4KCgk8cD5PbmUgdGhpbmcgdG8gd2F0Y2ggb3V0IGZvciBpcyB0 aGF0IHRoZSBzcGFjZSBjaGFyYWN0ZXIgaXNuJiM4MjE3O3QgbmVjZXNzYXJpbHkgYSBkZWxp bWl0ZXIgZm9yIDxjb2RlPj88L2NvZGU+IHZhcmlhYmxlcyAoYmVjYXVzZSBjdXN0b20gZmll bGRzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtKS4gU28gPGNvZGU+Y29tYm89JnF1b3Q7ZG9l c25vdHdvcms6P3MgaW4gP2NhdGVnb3J5MSZxdW90OzwvY29kZT4gd2lsbCBsb29rIGZvciBh IHZhcmlhYmxlIGxhYmVsbGVkICYjODIyMDtzIGluJiM4MjIxOyBhbmQgb25lIGNhbGxlZCAm IzgyMjA7Y2F0ZWdvcnkxJiM4MjIxOy4gT25seSBvbmUgb2YgdGhvc2UgZXhpc3RzISBDbGV2 ZXIgdXNlIG9mIHBhcmVudGhlc2VzIG9yIG90aGVyIHB1bmN0dWF0aW9uIGNhbiB3b3JrIHJv dW5kIHRoaXMuPC9wPgoKCTxoMyBpZD0iY29sbGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2gz PgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5PC9lbT4gZnVua3kgeW91IGNh biBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRp b24gbW9kZSYjODIyMTsuIEluIHRoaXMgbW9kZSB5b3VyIGNob3NlbiBmb3JtIGlzIDxzdHJv bmc+bm90PC9zdHJvbmc+IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25seSB1 c2VkIG9uY2UgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgaW1hZ2Vz IGhhdmUgYmVlbiBpbnRlcm5hbGx5ICYjODIyMDtjb2xsZWN0ZWQmIzgyMjE7LiBJbiBlZmZl Y3QsIHRoZSBwbHVnaW4gYnVpbGRzIHVwIGEgZ2lhbnQgYXJyYXkgb2YgYWxsIG1hdGNoaW5n IGltYWdlcyByZWFkeSBmb3IgeW91IHRvIG91dHB1dCB0aGVtIGFsbCBpbiBvbmUgZ28uIFRo aXMgaXMgdmVyeSBoYW5keSBmb3IgZG9pbmcgc2xpZGVzaG93cyBhbmQgaXMgYmVzdCBleHBs YWluZWQgYnkgZXhhbXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDsxJnF1b3Q7 PC9jb2RlPjwvcD4KCgk8cD5zd2l0Y2hlcyBjb2xsYXRpb24gbW9kZSBvbi4gSWYgdGhlIHBs dWdpbiBtYXRjaGVkIDQgaW1hZ2VzIGFuZCB5b3Ugd2VyZSB0byB1c2UgdGhlIHJlcGxhY2Vt ZW50IHRhZyA8Y29kZT57bmFtZX08L2NvZGU+IGluIHlvdXIgZm9ybSBsaWtlIHRoaXM6PC9w PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5n IGltYWdlczoge25hbWV9CjwvY29kZT48L3ByZT4KCgk8cD55b3UgbWlnaHQgZ2V0IHRoaXM6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNo aW5nIGltYWdlczogaGVyb24uanBnLHBlbmd1aW4uanBnLGVtdS5qcGcscHVmZmluLmpwZwo8 L2NvZGU+PC9wcmU+CgoJPHA+U29tZXRpbWVzIGl0JiM4MjE3O3MgdXNlZnVsIHRvIGJlIGFi bGUgdG8gcHV0IHF1b3RlcyBhcm91bmQgZWFjaCBpdGVtIHNvIHlvdSBjYW4gdGVsbCBjb2xs YXRlIG1vZGUgdG8gZG8gdGhhdCBpbnN0ZWFkOjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZx dW90O3F1b3RlOntuYW1lfSZxdW90OzwvY29kZT48L3A+CgoJPHA+WW91IHdvdWxkIHRoZW4g Z2V0OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBt YXRjaGluZyBpbWFnZXM6ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpw ZyZxdW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsKPC9j b2RlPjwvcHJlPgoKCTxwPlRoZSBkZWxpbWl0ZXIgKGEgY29tbWEgaW4gdGhpcyBjYXNlKSBj YW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRl LiBZb3UgbWF5IHVzZSA8Y29kZT5zZ2xxdW90ZTwvY29kZT4gdG8gd3JhcCBzaW5nbGUgcXVv dGVzIHJvdW5kIHRoZSBpdGVtcywgb3IgJiM4MjIwO2RibHF1b3RlJiM4MjIxOyBhcyBhIHN5 bm9ueW0gZm9yICYjODIyMDtxdW90ZSYjODIyMTsgaWYgeW91IHByZWZlci4gWW91IGNhbiBx dW90ZSBtb3JlIHRoYW4gb25lIHRoaW5nIGF0IG9uY2UgYnkgc3BlY2lmeWluZyB0aGUgaXRl bXMgYXMgYSBkZWxpbWl0ZWQgbGlzdDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtx dW90ZTp7bmFtZX06e2FsdH06e2ltZ2lufSZxdW90OzwvY29kZT48L3A+CgoJPHA+WWVzLCB5 b3UgY2FuIHVzZSBjb21ib3MhIFRoZSBkZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGl0ZW1zIGNh biBiZSBvdmVycmlkZW4gd2l0aCB0aGUgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYXR0cmli dXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24g bW9kZSBpcyB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRp cmUgbGlzdC4gWW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4g dGhlIGludGVybmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRp b24gdGh1czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57 bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWlu LmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsg KGFzIGJlZm9yZSkKKG5hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24uanBnCihuYW1l IzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUg dGhhdCB3aGVuIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMg YmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUg cXVvdGVzIGluIHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7bmFtZX0mcXVv dDs8L2NvZGU+KTwvcD4KCgk8cD5NZXNzaW5nIGFyb3VuZCB3aXRoIHB1bGxpbmcgb3V0IGlu ZGl2aWR1YWwgaXRlbXMgYW5kIGxpc3RzIGNhbiB5aWVsZCBzb21lIHZlcnkgaW50ZXJlc3Rp bmcgcmVzdWx0cyBhbmQgYWxsb3dzIHNvbWUgY29tcGxldGVseSB3YWNreSBnYWxsZXJpZXMg dG8gYmUgZ2VuZXJhdGVkLiBUcnkgY29tYmluaW5nIHNtZF9nYWxsZXJ5IHRhZ3Mgd2l0aCA8 Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IGZvciBhIHJlYWwgbWluZCBz Y3JhbWJsZSA6LSk8L3A+CgoJPGgzIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gzPgoKCTxw PlRoZSBleGFtcGxlcyBhbGwgdXNlIHRoZSBjbGFzc2ljIHpvbyB3ZWJzaXRlLiBMZXQmIzgy MTc7cyBzcGVjaWZ5IHNvbWUgcGljdHVyZXMgdG8gcHVsbCBvdXQgb2YgdGhlIGRhdGFiYXNl OjwvcD4KCgk8aDQgaWQ9ImVnMSI+RXhhbXBsZSAxOiBzaW1wbGUgLyBsaWdodGJveGVkIGdh bGxlcnk8L2g0PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7IHN1YmxldmVs PSZxdW90O2FsbCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgb3V0IGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBhbmlt YWxzIGNhdGVnb3J5LCBpbmNsdWRpbmcgYWxsIHN1Yi1jYXRlZ29yaWVzLCBhbmQgcGFzc2Vz IHRoZW0gdG8gdGhlIGZvcm0gY2FsbGVkICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3IgcHJv Y2Vzc2luZy4gVGhlIGZvcm0gY291bGQganVzdCBiZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgY2xhc3M9JnF1b3Q7YW5pbWFn ZSZxdW90OyBzcmM9JnF1b3Q7e3VybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8m Z3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7YWNhcHRpb24mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsv ZGl2Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtZWFucywgZm9yIGV2ZXJ5IG1hdGNo ZWQgaW1hZ2UsIHN1YnN0aXR1dGUgaXRzIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ LCBhbHQgYW5kIHRpdGxlIHRhZ3MgaW50byB0aGUgcmVsZXZhbnQgcGxhY2VzLiBUaHVzIHlv dSBnZXQgYSBzZXJpZXMgb2YgaW1hZ2VzIG9uIHRoZSBwYWdlLCB3aGljaCB5b3UgY2FuIHN0 eWxlIGFjY29yZGluZ2x5LjwvcD4KCgk8cD5Gb3IgYSBtb3JlIGZhbmN5IG91dHB1dCB1c2lu Zywgc2F5LCBzbGltYm94LCB5b3UgY291bGQgbG9hZCB0aGUgcmVsZXZhbnQgbGlicmFyaWVz IGFuZCBzdHlsZXMgaW4gdGhlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gb2YgeW91ciBw YWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtz Y3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9t b290b29scy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZx dW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaW1ib3guanMmcXVv dDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtsaW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1 b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDsgaHJlZj0mcXVvdDsvY3NzL3NsaW1ib3gu Y3NzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGVuIHlvdXIgJiM4MjE2O2dh bGxlcnkmIzgyMTc7IGZvcm0gY291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0m cXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsKICAg ICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90OyBoZWlnaHQ9JnF1b3Q7 e2hlaWdodH0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRofSZxdW90OyZndDsKICZsdDt0eHA6 dGh1bWJuYWlsIGlkPSZxdW90O3tpZH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+Vm9pbGEhIFVzaW5nIHRoZSBzYW1lIHNtZF9nYWxsZXJ5IHRhZyB5b3Ug aGF2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIGdhbGxlcnkgcmVuZGVycyBmcm9tIGEgc2ltcGxl IGxpc3QgdG8gYSBmdWxsLWZlYXR1cmVkIHNsaW1ib3guIFdpdGggdmlydHVhbGx5IHRoZSBz YW1lIGZvcm0geW91IGNhbiBzd2l0Y2ggdGhlIG91dHB1dCB0byB0aGlja2JveCwgbGlnaHRi b3gsIGxpdGVib3gsIG1vb25ib3ggb3Igd2hhdGV2ZXIteW91LWxpa2UtYm94IGRlcGVuZGlu ZyBvbiB3aGljaCBsaWJyYXJpZXMgeW91IGxvYWQuIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25z IGZvciB5b3VyIGZhdm91cml0ZSBlZmZlY3QgYW5kIHBsdWcgaXQgaW50byBzbWRfZ2FsbGVy eS48L3A+CgoJPGg0IGlkPSJlZzIiPkV4YW1wbGUgMjogbGF1bmNoIGZyb20gb25lIGltYWdl PC9oND4KCgk8cD5BIGNvbW1vbiByZXF1ZXN0IGlzIHRvIGJlIGFibGUgdG8gJiM4MjIwO2xh dW5jaCYjODIyMTsgYSBzbGltYm94IGdhbGxlcnkgZnJvbSBhIHNpbmdsZSBpbWFnZSBvciB0 ZXh0IGxpbmsuIFVzaW5nIGEgc2luZ2xlIGltYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1 b3Q7YW5pbWFscyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHN1 YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyB0 aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUg dGhhdCB0aGlzIHRpbWUgd2UgYXJlIGFkZGluZyB0byB0aGUgZ2FsbGVyeSB0aGUgaW1hZ2Uo cykgcHVsbGVkIGZyb20gdGhlIGFydGljbGUtaW1hZ2UgZmllbGQgb2YgdGhlIGN1cnJlbnQg YXJ0aWNsZS4gVGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08 L2NvZGU+IHJlcGxhY2VtZW50IHRhZy4gVGhlIHBsdWdpbiBvbmx5IGRpc3BsYXlzIHRoaXMg cGFydCBpZiB0aGUgdmFsdWUgb2YgdGh1bWJsaW1pdCBoYXMgPHN0cm9uZz5ub3Q8L3N0cm9u Zz4gYmVlbiByZWFjaGVkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC1zbWQmcXVvdDsgaHJlZj0mcXVvdDt7 dXJsfSZxdW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7 Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGFuZ2UgdGhl IHN0YXJ0IGltYWdlIGJ5IHNwZWNpZnlpbmcgPGNvZGU+dGh1bWJvZmZzZXQ8L2NvZGU+ICYj ODIxMjsgbm90ZSB0aGlzIHdpbGwgYWxzbyBzdGFydCB0aGUgbGlnaHRib3ggZWZmZWN0IGZy b20gdGhlIGltYWdlIHlvdSBjaG9vc2UuIElmIHlvdSB3YW50IHRvIHN0YXJ0IG9uIGEgc3Bl Y2lmaWMgaW1hZ2UgaW4gcG9zaXRpb24gMSwgdXNlIHRoZSA8Y29kZT5pZDwvY29kZT4gYXR0 cmlidXRlIHRvIGJyaW5nIGl0IHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QsIG9yIGNoYW5nZSB0 aGUgc29ydCBvcmRlci48L3A+CgoJPHA+SWYgeW91IHdhbnRlZCB0byBsYXVuY2ggdGhlIGdh bGxlcnkgZnJvbSBhIHRleHQgbGluaywgbW9kaWZ5IHRoZSB0YWcgbGlrZSB0aGlzOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dh bGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRp Y2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1 b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsKICAgICB0ZXh0PSZx dW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4K Cgk8aDQgaWQ9ImVnMyI+RXhhbXBsZSAzOiBwb3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBh Y2hpZXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdl IGFuZCBjYXB0aW9uIHBsYWNlaG9sZGVyIG91dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxl cnksIHRoZW4gaW5jbHVkZSB5b3VyIHNtZF9nYWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0 aW1lIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRo ZSBjYXRlZ29yaWVzIHVwIHRvIHR3byBsZXZlbHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFs cyYjODIyMTsgYW5kIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+ bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVv dDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxs Y2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgc3Vi bGV2ZWw9JnF1b3Q7MiZxdW90OwogICAgIGNhdGVnb3J5PSZxdW90O2FuaW1hbHMsID9teV9j dXN0b21fZmllbGQmcXVvdDsKICAgICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlz IG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3Ig dGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNv cHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBh IG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1 b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1M ID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlJnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVv dDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYj Mzk7L2ltYWdlcy8xNy5qcGcmIzM5OzsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgm IzM5O2Z1bGxjYXB0aW9uJiMzOTspLmlubmVySFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBm YWxzZTsmcXVvdDsmZ3Q7CiAgJmx0O2ltZyBzcmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBh bHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+Tm90ZSB0aGVyZSBhcmUgbXVjaCBuZWF0ZXIgd2F5cyBvZiBkb2luZyB0aGlzIGFuZCBp dCYjODIxNztzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBz aXRlLCBidXQgaXQgZ2l2ZXMgYSBmbGF2b3VyIG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoK CTxoNCBpZD0iZWc0Ij5FeGFtcGxlIDQ6IHNsaWRlc2hvdzwvaDQ+CgoJPHA+VGhpcyBvbmUg dXNlcyBjb2xsYXRlIG1vZGUgYnV0IGlzIG5vdCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVu ZGVyc3RhbmQuIEluIHlvdXIgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQg dHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29s cy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3Rl eHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZn dDsmbHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVy eQogIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVy eSZxdW90OwogIGNvbWJvPSZxdW90O2ltZ2xpc3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0 ZT0mcXVvdDtxdW90ZTp7aW1nbGlzdH06e2FsdH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoYXQgcHVsbHMgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNo IGNhdGVnb3JpZXMuIEFsdGhvdWdoIHRlY2huaWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJv IGhhcyBiZWVuIGRlZmluZWQgdG8gc2hvdyBob3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29t Ym8gaXMgY2FsbGVkIDxjb2RlPmltZ2xpc3Q8L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRo ZSBpbWFnZSYjODIxNztzIElEIG51bWJlciBwbHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0 aGlzIGluIHRoZSBjb2xsYXRlIGF0dHJpYnV0ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91Ymxl IHF1b3RlcyByb3VuZCBldmVyeSBpdGVtIGluICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQg JiM4MjE2O2FsdCYjODIxNzsuIFRoZW4gd2UgY2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0 aGUgbmVjZXNzYXJ5IGphdmFzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIHNsaWRlc2hvdzo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNz PSZxdW90O3NsaWRlc2hvdyZxdW90OyBpZD0mcXVvdDtzbGlkZXNob3cxJnF1b3Q7Jmd0Owog Jmx0O2ltZyBzcmM9JnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdlcy97aWQjMX0u anBnJnF1b3Q7CiAgICAgYWx0PSZxdW90O3thbHQjMX0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dp ZHRoIzF9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0IzF9JnF1b3Q7IC8mZ3Q7CiZsdDsv ZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZx dW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsKbXlTaG93MSA9IG5ldyBTbGlkZXNob3co JnF1b3Q7c2xpZGVzaG93MSZxdW90OywKICB7IGh1OiAmcXVvdDsmbHQ7dHhwOnNpdGVfdXJs IC8mZ3Q7aW1hZ2VzLyZxdW90OywKICAgIGltYWdlczogW3tpbWdsaXN0fV0sCiAgICBjYXB0 aW9uczogW3thbHR9XSwKICAgIGNsYXNzZXM6IFsmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O25l eHQmcXVvdDssJnF1b3Q7YWN0aXZlJnF1b3Q7XSwKICAgIHR5cGU6ICZxdW90O2ZhZGUmcXVv dDsKICB9KTsKJmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQg dGhlIGluaXRpYWwgcG9ydGlvbiAoaW4gdGhlIGRpdiBhbmQgaW1nIHRhZ3MpIHVzZXMgdGhl ICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBkaXNw bGF5IG9uZSBpbWFnZSB0byAmIzgyMjA7c3RhcnQmIzgyMjE7IHRoZSBzbGlkZXNob3cuIElu IHRoaXMgY2FzZSB3ZSYjODIxNztyZSB1c2luZyB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIGxp c3QsIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUgIzEgZm9yICM0MiBpZiB5b3Ugd2FudGVkIHRv IHNob3cgdGhlIGZvcnR5LXNlY29uZCBpbWFnZSBpbnN0ZWFkISBUaGUgcGFydCBpbiB0aGUg c2NyaXB0IHRhZyB1c2VzIHRoZSBmdWxsLCBxdW90ZWQgbGlzdHMgYmVjYXVzZSB0aGF0JiM4 MjE3O3MgdGhlIGZvcm1hdCB0aGUgamF2YXNjcmlwdCByZXF1aXJlcy48L3A+CgoJPGg0IGlk PSJlZzUiPkV4YW1wbGUgNTogcGFnaW5hdGlvbjwvaDQ+CgoJPHA+VG8gYWRkIHBhZ2luZyB0 byBhIGdhbGxlcnkgeW91IHVzZSB0aGUgPGNvZGU+bGltaXQ8L2NvZGU+IGF0dHJpYnV0ZSB0 byBzaG93IGEgbnVtYmVyIG9mIHRodW1icyBwZXIgcGFnZS4gRm9yIGEgcGFnZWQgdGh1bWJw b3AgZ2FsbGVyeSB0aGF0IHNob3dzIGZpdmUgdGh1bWJzIHBlciBwYWdlOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgaWQ9JnF1b3Q7ZnVs bHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHkuanBnJnF1b3Q7IC8mZ3Q7CiZs dDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0 O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgZm9ybT0m cXVvdDtnYWxsZXJ5JnF1b3Q7IHBhZ2Vmb3JtPSZxdW90O2dhbGxlcnlfbmF2JnF1b3Q7CiAg bGltaXQ9JnF1b3Q7NSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlICYjODIx NjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIGluIDxhIGhy ZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4sIHdoaWxlIHlvdXIgZ2FsbGVyeV9uYXYgZm9ybSBt aWdodCBsb29rIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3RvdGFsJnF1b3Q7Jmd0OyMgb2YgcGlj czoge3RvdGFsaW1hZ2VzfSZsdDsvZGl2Jmd0OwogICAgIHtuYXZmaXJzdH0ge25hdnByZXZ9 CiAgICAge25hdmVhcmxpZXJ9IHtuYXZ0aGlzfSB7bmF2bGF0ZXJ9CiAgICAge25hdm5leHR9 IHtuYXZsYXN0fQo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtaWdodCByZW5kZXIgc29tZXRo aW5nIHNpbWlsYXIgdG8gdGhpcyBiZWxvdyB0aGUgdGh1bWJzOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiMgb2YgcGljczogMzgKICAgICBGaXJzdCAm bHQ7IDEgMiAzIDQgNSA2IDcgOCAmZ3Q7IExhc3QKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGVz OjwvcD4KCgk8dWw+CgkJPGxpPlVzZSB7bmF2dGhpc3VybH0gaWYgeW91IHdhbnQgdGhlIGN1 cnJlbnQgcGFnZSBoeXBlcmxpbmtlZDwvbGk+CgkJPGxpPlRoZSBjdXJyZW50IGl0ZW0gYWx3 YXlzIGhhcyBhIGNsYXNzIG9mICYjODIyMDtjdXJyZW50JiM4MjIxOzwvbGk+CgkJPGxpPlVz ZSB0aGUgPGNvZGU+bmF2d3JhcHRhZzwvY29kZT4sIDxjb2RlPm5hdmJyZWFrPC9jb2RlPiwg YW5kIDxjb2RlPm5hdmNsYXNzPC9jb2RlPiB0YWcgYXR0cmlidXRlcyB0byBzcGVjaWZ5IGl0 ZW1zIHRvIHdyYXAgYXJvdW5kIHRoZSBlbnRpcmUgcGFnZWZvcm0uIFRoZSBkZWZhdWx0cyBh cmU6IDxjb2RlPnVsPC9jb2RlPiwgPGNvZGU+bGk8L2NvZGU+LCBhbmQgPGNvZGU+c21kX2dh bGxlcnlfbmF2PC9jb2RlPiByZXNwZWN0aXZlbHk8L2xpPgoJCTxsaT5Zb3UgY2FuIGxhYmVs IG5hdmZpcnN0LCBuYXZsYXN0LCBuYXZwcmV2LCBuYXZuZXh0IGFuZCBuYXZ0aGlzIGJ5IHNw ZWNpZnlpbmcgdGhlbSBsaWtlIHRoaXM6IDxjb2RlPntuYXZwcmV2OlByZXZpb3VzfTwvY29k ZT4gKHRoZSAmIzgyMTY7OiYjODIxNzsgZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBpcyB0aGUg aXRlbSBzcGVjaWZpZWQgYnkgcGFyYW1kZWxpbSk8L2xpPgoJCTxsaT5uYXZlYXJsaWVyIGFu ZCBuYXZsYXRlciB3aWxsIGJ5IGRlZmF1bHQgc2hvdyBhbGwgcGFnZXMgYmVmb3JlIGFuZCBh ZnRlciB0aGUgY3VycmVudCBvbmUuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieSBzcGVjaWZ5 aW5nIHRoZSBudW1iZXIgb2YgcGFnZXMgeW91IHdhbnQgdG8gc2hvdyBlaXRoZXIgc2lkZS4g ZS5nLiBpZiB5b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZs YXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAm Z3Q7Jmd0OzwvY29kZT48L2xpPgoJPC91bD4KCgk8aDQgaWQ9ImVnNiI+RXhhbXBsZSA2OiB0 aHVtYmNoYW5nZTwvaDQ+CgoJPHA+SWYgeW91IHdhbnQgdG8gc2ltdWxhdGUgbXVsdGlwbGUg Z2FsbGVyaWVzIGZyb20gb25lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHVzZSA8Y29kZT50 aHVtYmNoYW5nZTwvY29kZT4gdG8gJiM4MjIwO3dhdGNoJiM4MjIxOyBmb3Igd2hlbiBjZXJ0 YWluIGF0dHJpYnV0ZXMgb2YgdGh1bWJuYWlscyBjaGFuZ2UgYW5kIGluc2VydCBzcGVjaWFs IHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0aGlzIHJl Z2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDx0eHA6aWZfZGlmZmVyZW50PiB0 YWcuPC9wPgoKCTxwPllvdSBjYW4gd2F0Y2ggdGhlIHVzdWFsIHRoaW5ncyBsaWtlIDxjb2Rl PmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2Nv ZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uIGFuZCBz byBvbi4gSGVyZSYjODIxNztzIGFuIGV4YW1wbGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5 PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAg IHRodW1iY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgdGh1bWJjaGFu Z2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5j ZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2 ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntjaGFu Z2VkOmNhdGVnb3J5X3RpdGxlfTwvY29kZT4gYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRo ZSB0aHVtYiBsaXN0IGFuZCBhbHNvIHdoZW4gdGhlIGNhdGVnb3J5IHN3aXRjaGVzIGZyb20g JiM4MjE2O2JpcmRzJiM4MjE3OyB0byAmIzgyMTY7ZmlzaCYjODIxNzsuIFRodXMgeW91ciBn YWxsZXJ5IGZvcm0gY291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+e2NoYW5nZWQ6Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9JnF1b3Q7 e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7Cntv YmplY3R9CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd291bGQgbWFrZSB0 d28gbGlnaHRib3hhYmxlIHNldHMgb2YgdGh1bWJuYWlscyB3aXRoIGEgaGVhZGluZyAzIGFi b3ZlIGVhY2ggZ3JvdXAgY29udGFpbmluZyB0aGUgY2F0ZWdvcnkgdGl0bGUuPC9wPgoKCTxw Pk5vdGUgdGhhdCBpZiB5b3UgYWRkIDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90Ozwv Y29kZT4gdG8gdGhlIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHNob3cganVzdCBvbmUgdGh1 bWJuYWlsIGluIGVhY2ggZ3JvdXAsIHdpdGggaGVhZGluZ3MgYWJvdmUgZWFjaCB0aHVtYi4g VmlzaXRvcnMgY2xpY2tpbmcgdGhlIHRodW1iIHdpbGwgbGF1bmNoIHRoZSBsaWdodGJveCBh bmQgYmUgYWJsZSB0byBicm93c2UgdGhlIHJlbGV2YW50IGNhdGVnb3J5LjwvcD4KCgk8aDMg aWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMz4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNp b25zIGFuZCBjaGFuZ2VzIGFyZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRh PC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+MTQgRmViIDA4IHwgPGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4xLnR4dCI+MC4xPC9h PiB8IEluaXRpYWwgcmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwv bGk+CgkJPGxpPjE5IEZlYiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9k b3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMi50eHQiPjAuMjwvYT4gfCBBZGRlZCA8YSBocmVm PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3MjQ1 OSNwMTcyNDU5Ij57Z2FsbGVyeWlkfTwvYT4gKHRoYW5rcyBybG9hZGVycm8pIGFuZCBzb21l IHNrZWxldG9uIGRvY3M8L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPk9mZmljaWFsPC9zdHJv bmc+PC9wPgoKCTx1bD4KCQk8bGk+MTEgTWFyIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZk YXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zLnR4dCI+MC4zPC9hPiB8IE9m ZmljaWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFk ZGVkIHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyA8YSBo cmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3 MzQ5MCNwMTczNDkwIj5qYWtvYjwvYT4pPC9saT4KCQk8bGk+MTUgTWFyIDA4IHwgPGEgaHJl Zj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMS50 eHQiPjAuMzE8L2E+IHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5kZWZpbmVkIGluZGV4ZXMgYW5k IDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9w aWQ9MTc0ODE4I3AxNzQ4MTgiPmFkZGVkIHtjYXRlZ29yeV90aXRsZX08L2E+ICh0aGFua3Mg PGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3Bp ZD0xNzQ4MjAjcDE3NDgyMCI+anN0dWJiczwvYT4pPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwg PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92 MC4zMi50eHQiPjAuMzI8L2E+IHwgRml4ZWQgYW5vdGhlciA8YSBocmVmPSJodHRwOi8vZm9y dW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk0NyNwMTc0OTQ3Ij51 bmRlZmluZWQgaW5kZXg8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRl cm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk2MSNwMTc0OTYxIj5yZW1vdmVkIGJvZ3Vz IGNhbGwgdG8gc21kX2xpYjwvYT4gKGJvdGggdGhhbmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxp PjIxIE1hciAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMv c21kX2dhbGxlcnlfdjAuMzMudHh0Ij4wLjMzPC9hPiB8IERpZCB2MC4zMSBwcm9wZXJseSwg aW5jbHVkaW5nIHRhYmxlIHByZWZpeCAodGhhbmtzIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50 ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc1MzAyI3AxNzUzMDIiPm5hcmRv PC9hPik8L2xpPgoJCTxsaT4wMSBBcHIgMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nv bi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjM0LnR4dCI+MC4zNDwvYT4gfCBGaXhl ZCA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiBwYXJlbnRoZXNpcyBidWcgOyBhZGRl ZCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/ cGlkPTE3NTYzNyNwMTc1NjM3Ij5lbXB0eWNsYXNzIGFuZCB7bWF4aW1hZ2VzfTwvYT4gKHRo YW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgPGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC40LnR4dCI+MC40PC9h PiB8IENoYW5nZWQgdGh1bWIgdG8gYWxsb3cgdGh1bWIvZnVsbHNpemUgc3dhcHBpbmcgOyBB ZGRlZCB0aHVtYmNoYW5nZSwgdGh1bWJjaGFuZ2V3cmFwdGFnLCB0aHVtYmNoYW5nZWNsYXNz LCB7dGh1bWJpbmRleH0sIHt0aHVtYmNvdW50ZXJ9IGFuZCB0aGUge2NoYW5nZWQ6Kn0gcmVw bGFjZW1lbnQgdGFncyAodGhhbmtzIGZ1bHMpPC9saT4KCQk8bGk+MjYgTWF5IDA4IHwgPGEg aHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC40 MS50eHQiPjAuNDE8L2E+IHwgRml4ZWQgRGlyZWN0b3J5IHNlcGFyYXRvciAodGhhbmtzIGN1 ZGEpIDsgYWRkZWQgcmF3IHBhZ2UgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zIHRv IHRoZSBuYXYgcmVwbGFjZW1lbnQgYXJyYXkgYW5kIG1hZGUgdGhlIG5hdiBhcnJheSBhdmFp bGFibGUgaW4gdGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50cyBhcnJheSAodGhhbmtzIHZpc3Vh bHBlb3BsZSk8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gzPgoK CTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRo ZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdldF9mb3JfZWFjaF9p bWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0YW5kcyBvbiB0aGUg c2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3VwZWQgdXAgdmVyc2lv biBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20gc21kX3NsaW1ib3gu IFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQgdG8gYW55b25lIHdo byBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1lIG9yIHRoZSBzbWRf c2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91cy48L3A+CgoJPHA+ PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5 cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS40NSA7fQojc21kX2hl bHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBO ZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQoj c21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsg bWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGlu aywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbTox cHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJs dWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJs dWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBm b250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjog Y2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwg c2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAx MnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEw cHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRl cmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2Vy aWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJv bGQ7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNl bnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgg e2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQojc21kX2hlbHAgdWwg eyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRfaGVscCBsaSB7IG1hcmdpbi1sZWZ0 OjM1cHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+ CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiMjhm OGEzODc3ZTQzNmQ5Yjg0NTg1Y2U2ZmZkMWVmOTEiO30=