# Name: smd_gallery v0.32 # 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 LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjMyIjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MjQ0OTE6ImZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXI7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEUNCgkvLyBIb2xkcyBkYXRh YmFzZSBmaWVsZCBhcyBrZXkgaW5kZXggYW5kIHBsdWdpbiBvcHRpb24gbmFtZXMgYXMgdmFs dWUuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQg cmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkk ZmllbGRNYXAgPSBhcnJheSgNCgkJInR4cF9pbWFnZS5uYW1lIiA9PiAibmFtZSIsDQoJCSJ0 eHBfaW1hZ2UuaWQiID0+ICJpZCIsDQoJCSJ0eHBfaW1hZ2UuYWx0IiA9PiAiYWx0IiwNCgkJ InR4cF9pbWFnZS5jYXB0aW9uIiA9PiAiY2FwdGlvbiIsDQoJCSJ0eHBfaW1hZ2UuY2F0ZWdv cnkiID0+ICJjYXRlZ29yeSIsDQoJCSJ0eHBfaW1hZ2UuYXV0aG9yIiA9PiAiYXV0aG9yIiwN CgkJInR4cF9pbWFnZS5kYXRlIiA9PiAiZGF0ZSIsDQoJCSJ0eHBfaW1hZ2UuZXh0IiA9PiAi ZXh0IiwNCgkJInR4cF9pbWFnZS53IiA9PiAid2lkdGgiLA0KCQkidHhwX2ltYWdlLmgiID0+ ICJoZWlnaHQiLA0KCQkidHhwX2ltYWdlLnRodW1ibmFpbCIgPT4gImhhc3RodW1iIiwNCgkp Ow0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlw ZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGltJyA9PiAn OicsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAn JywNCgkJJ2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZl bCcgPT4gJzAnLA0KCQknc29ydCcgPT4gJ2NhdGVnb3J5JywNCgkJJ29mZnNldCcgPT4gJzAn LA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1 bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ib2Zmc2V0JyA9PiAnMCcsDQoJCSd0aHVt YicgPT4gJzAnLA0KCQkndGh1bWJzaXplJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQkn Y29sbGF0ZScgPT4gJycsDQoJCSdjb21ibycgPT4gJycsDQoJCSdwYWdlZm9ybScgPT4gJycs DQoJCSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQknbmF2YnJlYWsnID0+ICdsaScsDQoJCSdu YXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdicsDQoJCSdnYWxsZXJ5aWQnID0+ICc/NDo2 JywNCgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8gQ2F0ZWdvcnkg cmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lmaWVkIG9yIG5vdC4NCgkvLyBs QXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dpYyBzbyBpdCBoYXMgdG8gYmUg ZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1wdHkoJGNhdGVnb3J5KSAmJiBl bXB0eSgkaWQpKSA/IGZhbHNlIDogdHJ1ZTsNCgkkY2F0ZWdvcnkgPSBpc3NldCgkY2F0ZWdv cnkpID8gZG9TbGFzaCgkY2F0ZWdvcnkpIDogKCgkaWQ9PScnKSA/ICRwcmV0ZXh0WydjJ106 ICcnKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9u ZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNo X2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7 dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGlu ZzsNCg0KCS8vIFBhZ2luZyBpbml0DQoJJHBhZ2luZyA9IDA7DQoJaWYgKCRwYWdlZm9ybSkg ew0KCQkkcGFnaW5nID0gMTsNCgkJJHBhZ2Vmb3JtID0gZmV0Y2hfZm9ybSgkcGFnZWZvcm0p Ow0KCX0NCg0KCS8vIFRoZSBnYWxsZXJ5IGlkZW50aWZpZXIgaXMgdXNlZCBmb3Iga2VlcGlu ZyB0cmFjayBvZiBuZXh0L3ByZXYgdGh1bWJuYWlsIHBhZ2UgbGlua3MNCgkkZ2FsbElEID0g Jyc7DQoJaWYgKCRnYWxsZXJ5aWQgPT0gJycgfHwgc3Vic3RyKCRnYWxsZXJ5aWQsMCwxKSA9 PSAiPyIpIHsNCgkJLy8gR2VuZXJhdGUgYSAoZmFpcmx5IGxpa2VseSkgdW5pcXVlIElEIGZv ciB0aGlzIGdhbGxlcnkgaW5zdGFuY2UNCgkJJGdhbGxUbXAgPSBtZDUoJGNhdGVnb3J5LiRp ZC4kZGlyZWN0b3J5LiRtYXRjaC4kc3VibGV2ZWwuJHNvcnQuJGxpbWl0LiRtYXhsaW1pdCk7 DQoJCWxpc3QoJGdhbGxMZW4sICRnYWxsU2tpcCkgPSBleHBsb2RlKCI6Iiwgc3Vic3RyKCRn YWxsZXJ5aWQsMSkpOw0KCQkkZ2FsbExlbiA9ICAoZW1wdHkoJGdhbGxMZW4pKSA/ICI0IiA6 ICRnYWxsTGVuOw0KCQkkZ2FsbFNraXAgPSAgKGVtcHR5KCRnYWxsU2tpcCkpID8gIjEiIDog JGdhbGxTa2lwOw0KCQlmb3IgKCRpZHggPSAwLCAkY250ID0gMDsgJGNudCA8ICRnYWxsTGVu OyAkY250KyssICRpZHggPSAoKCRpZHgrJGdhbGxTa2lwKSAlIHN0cmxlbigkZ2FsbFRtcCkp KSB7DQoJCQkkZ2FsbElEIC49ICRnYWxsVG1wWyRpZHhdOw0KCQl9DQoJfSBlbHNlIHsNCgkJ JGdhbGxJRCA9ICRnYWxsZXJ5aWQ7DQoJfQ0KCSRnYWxsSUQgPSAic21kX2dscnlfIi4kZ2Fs bElEOyAvLyBBdm9pZCAoYWxyZWFkeSBpbmNyZWRpYmx5IHVubGlrZWx5KSBuYW1lc3BhY2Ug Y2xhc2hlcw0KDQoJLy8gVGhlIG1hbm5lciBvZiBvYnRhaW5pbmcgZmlsZXMgZGlmZmVycyBp ZiB1c2luZyBkaXJlY3RvcnkgdnMgY2F0ZWdvcnkvaWQNCglpZiAoJGRpcmVjdG9yeSkgew0K CQkkcnMgPSBhcnJheSgpOw0KCQkkcnNhbGwgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9y eSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSk7DQoJCWxpc3QoJG51bVBhZ2VzLCAk dGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzYWxsLCAkZ2FsbElELCAkbGlt aXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRt YXhsaW1pdCA6ICRsaW1pdDsNCgkJJHJzID0gYXJyYXlfc2xpY2UoJHJzYWxsLCAkb2Zmc2V0 LCAkZGlybGltaXQpOw0KCQkkcG9zdE9yZGVyID0gYXJyYXkoKTsNCgkJJGZpeGVkT3JkZXIg PSAwOw0KCQkkcmFuZHNvcnQgPSBmYWxzZTsNCgl9IGVsc2Ugew0KCQkvLyBQcm9jZXNzIGNh dGVnb3JpZXMvSURzIGFuZCBtYWtlIHVwIHRoZSBjcnV4IG9mIHRoZSB3aGVyZSBjbGF1c2Uu DQoJCS8vIENsYXVzZSBvcmRlciA9IElEcyBPUiBjYXRzIEFORCAhY2F0cyBBTkQgIUlEcw0K CQkkY2xhdXNlW10gPSAnMT0xJzsNCgkJJGNsYXVzZU9SID0gYXJyYXkoKTsNCg0KCQkvLyBT dXJyb3VuZCBlYWNoIGVudHJ5IGluIHRoZSBJRCBsaXN0IHdpdGggcXVvdGVzIGFuZCBtYWtl IGFuIFNRTCAiaW4iIGxpc3QNCgkJJHN1YmluZm8gPSAoJHN1YmxldmVsKSA/ICJpbWFnZToi LiRzdWJsZXZlbCA6ICcnOw0KCQlsaXN0KCRpZGluYywgJGlkZXhjKSA9IHNtZF9kb0xpc3Qo JGlkLCB0cnVlLCAnJywgdHJ1ZSwgJGRlbGltKTsNCgkJbGlzdCgkY2F0aW5jLCAkY2F0ZXhj KSA9IHNtZF9kb0xpc3QoJGNhdGVnb3J5LCBmYWxzZSwgJHN1YmluZm8sIHRydWUsICRkZWxp bSk7DQoJCWlmICgkaWRpbmMpIHsNCgkJCSRjbGF1c2VPUltdID0gJ2lkIElOICgnLmltcGxv ZGUoIiwiLCAkaWRpbmMpLicpJzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVz ZU9SW10gPSAnY2F0ZWdvcnkgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRpbmMpLicpJzsNCgkJ fQ0KCQlpZiAoIWVtcHR5KCRjbGF1c2VPUikpIHsNCgkJCSRjbGF1c2VbXSA9IGltcGxvZGUo IiBPUiAiLCAkY2xhdXNlT1IpOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBBTkQg IiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgY2F0ZWdvcnkg Tk9UIElOICgnLmltcGxvZGUoIiwiLCAkY2F0ZXhjKS4nKScgOiAnJzsNCgkJJGNsYXVzZSAu PSAoJGlkZXhjKSA/ICcgQU5EIGlkIE5PVCBJTiAoJy5pbXBsb2RlKCIsIiwgJGlkZXhjKS4n KScgOiAnJzsNCg0KCQkvLyBJZiBhIGNhdGVnb3J5L2lkIG9wdGlvbiB3YXMgY2hvc2VuIGFu ZCB0aGV5IG1hdGNoZWQgbm90aGluZywgdXNlIGEgYm9ndXMgY2F0ZWdvcnkgdGhhdCBzaG91 bGQgbm90IGV4aXN0Lg0KCQkvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcGx1Z2luIGRvZXMg dGhlIGV4cGVjdGVkIHRoaW5nIG9mIG1hdGNoaW5nIG5vdGhpbmcgaW4gdGhlIGV2ZW50IGl0 IGZpbmRzIG5vdGhpbmcuDQoJCWlmICgkY2xhdXNlID09ICIxPTEiICYmICRhdHRlbXB0TWF0 Y2gpIHsNCgkgIAkJJGNsYXVzZSA9ICdjYXRlZ29yeSA9ICJzbWRfJyAubXRfcmFuZCgpLiAn Iic7DQoJCX0NCg0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgSU5DTFVERUQv RVhDTFVERUQgSURzIEFORCBDQVRzICsrIjsNCgkJCWRtcCgkaWRpbmMpOw0KCQkJZG1wKCRp ZGV4Yyk7DQoJCQlkbXAoJGNhdGluYyk7DQoJCQlkbXAoJGNhdGV4Yyk7DQoJCX0NCg0KCQkv LyBDb252ZXJ0IHRoZSBzb3J0IGludG8gYSB2YWxpZCBzb3J0aW5nIGhpZXJhcmNoeS4NCgkJ Ly8gTm90ZSB0aGF0IHJhbmRvbSBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgdGhlIGZvbGxvd2lu ZyBydWxlcyBhcHBseToNCgkJLy8gIDEpIEFueXRoaW5nIGFwcGVhcmluZyBiZWZvcmUgcmFu ZG9tIGlzIHBhc3NlZCB0byB0aGUgZGF0YWJhc2UgcXVlcnkgZm9yIG9yZGVyaW5nDQoJCS8v ICAyKSBBcyBzb29uIGFzIHJhbmRvbSBpcyBlbmNvdW50ZXJlZCwgdGhlIHJlc3Qgb2YgdGhl IHNvcnQgc3RyaW5nIGlzIGlnbm9yZWQuDQoJCS8vICAgICBUaGUgcmVzdWx0c2V0IHdpbGwg YmUgc29ydGVkIHJhbmRvbWx5IGluc3RlYWQNCgkJLy8gIDMpIElmIHJhbmRvbSBhcHBlYXJz IGZpcnN0IGluIHRoZSBsaXN0LCB0aGUgZGF0YSBpcyByZXRyaWV2ZWQgcmFuZG9tbHkgdGhl biB0aGUNCgkJLy8gICAgIHJlbWFpbmluZyBvcHRpb25zIHNvcnQgdGhlIHJlc3VsdHNldA0K CQkkY2xhdXNlU29ydCA9IGFycmF5KCk7DQoJCSRwb3N0T3JkZXIgPSBhcnJheSgpOw0KCQkk cnVsZSA9ICJzcWwiOw0KCQkkcG9zdFByZWZpeCA9ICJTT1JUXyI7DQoJCSRmaXhlZE9yZGVy ID0gJHJhbmRzb3J0ID0gZmFsc2U7DQoJCSRzb3J0ID0gZG9fbGlzdCgkc29ydCwgJGRlbGlt KTsNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsgJGlkeCsrKSB7DQoJ CQkkc29ydF9kaXIgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlkeF0pOw0KCQkJJGRpcmVjdGlv biA9ICRjb2xSZWYgPSAnJzsNCgkJCWlmIChjb3VudCgkc29ydF9kaXIpIDw9IDEpIHsNCgkJ CQkkc29ydF9kaXJbMV0gPSAiYXNjIjsNCgkJCX0NCgkJCWlmICgkcnVsZSA9PSAic3FsIikg ew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNjIikgPyAnIGRlc2Mn IDogJyBhc2MnOw0KCQkJfSBlbHNlIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2Rpclsx XSA9PSAiZGVzYyIpID8gJHBvc3RQcmVmaXguJ0RFU0MnIDogJHBvc3RQcmVmaXguJ0FTQyc7 DQoJCQl9DQoNCgkJCXN3aXRjaCAoJHNvcnRfZGlyWzBdKSB7DQoJCQkJY2FzZSAncmFuZG9t JzoNCgkJCQkJJHJ1bGUgPSAicG9zdCI7DQoJCQkJCWlmICgkaWR4ID09IDApIHsNCgkJCQkJ CSRjbGF1c2VTb3J0W10gPSAncmFuZCgpJzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRyYW5k c29ydCA9IHRydWU7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnZml4ZWQnOg0K CQkJCQkvLyAnZml4ZWQnIG9ubHkgd29ya3Mgb24gaWRzDQoJCQkJCSRmaXhlZE9yZGVyID0g KCRpZCA9PSAnJykgPyBmYWxzZSA6IHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6 DQoJCQkJCSRjb2xSZWYgPSBhcnJheV9zZWFyY2goJHNvcnRfZGlyWzBdLCAkZmllbGRNYXAp Ow0KCQkJCQlicmVhazsNCgkJCX0NCgkJCWlmICgkcnVsZSA9PSAic3FsIikgew0KCQkJCWlm ICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCSRjbGF1c2VTb3J0W10gPSAkY29sUmVmLiRkaXJl Y3Rpb247DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlpZiAoISRyYW5kc29ydCkgew0KCQkJ CQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJCQkJJHBvc3RPcmRlcltdID0gYXJyYXkoImNv bCIgPT4gJGNvbFJlZiwgInNvcnQiID0+ICRkaXJlY3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0K CQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50KCRjbGF1c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1 c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgiLCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJ CWlmICgkZGVidWcgPiAwKSB7DQoJCQllY2hvICIrKyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJ ZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8vIFRoZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQN CgkJJGZpZWxkcyA9IGltcGxvZGUoIiwiLCBhcnJheV9rZXlzKCRmaWVsZE1hcCkpOw0KDQoJ CS8vIFRpbWUgdG8gZ3JhYiB0aGUgbWF0Y2hpbmcgcm93cyBmcm9tIHRoZSBkYXRhYmFzZQ0K CQkkcnNhbGwgPSBzYWZlX3Jvd3MoJGZpZWxkcywgJ3R4cF9pbWFnZScsICRjbGF1c2UgLicg TElNSVQgJy4kb2Zmc2V0LicsJy4kbWF4bGltaXQpOw0KCQlsaXN0KCRudW1QYWdlcywgJHRo dW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRyc2FsbCwgJGdhbGxJRCwgJGxpbWl0 LCAkb2Zmc2V0LCAkcGFnaW5nKTsNCgkJJHJzID0gc2FmZV9yb3dzKCRmaWVsZHMuJywgdHhw X2NhdGVnb3J5LnRpdGxlIEFTIGNhdF90aXRsZScsICd0eHBfaW1hZ2UsIHR4cF9jYXRlZ29y eScsICd0eHBfY2F0ZWdvcnkubmFtZSA9IHR4cF9pbWFnZS5jYXRlZ29yeSBBTkQgdHhwX2Nh dGVnb3J5LnR5cGU9ImltYWdlIiBBTkQgJyAuJGNsYXVzZSAuJyBMSU1JVCAnIC4kb2Zmc2V0 LiAnLCcuICgoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdCkpOw0KCX0NCg0KCS8v IElzIHBvc3Qtb3JkZXJpbmcgcmVxdWlyZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0K CQlzaHVmZmxlKCRycyk7DQoJfSBlbHNlIGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsN CgkJLy8gVHJhbnNsYXRlIHRoZSByb3dzIGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0 ZWQNCgkJZm9yZWFjaCgkcnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQkkY29sX2lkWyRrZXld ID0gJHJvd1snaWQnXTsNCgkJCSRjb2xfbmFtZVska2V5XSA9ICRyb3dbJ25hbWUnXTsNCgkJ CSRjb2xfY2FwdGlvblska2V5XSA9ICRyb3dbJ2NhcHRpb24nXTsNCgkJCSRjb2xfYWx0WyRr ZXldID0gJHJvd1snYWx0J107DQoJCQkkY29sX2NhdGVnb3J5WyRrZXldID0gJHJvd1snY2F0 ZWdvcnknXTsNCgkJCSRjb2xfZGF0ZVska2V5XSA9ICRyb3dbJ2RhdGUnXTsNCgkJCSRjb2xf ZXh0WyRrZXldID0gJHJvd1snZXh0J107DQoJCQkkY29sX2F1dGhvclska2V5XSA9ICRyb3db J2F1dGhvciddOw0KCQkJJGNvbF93WyRrZXldID0gJHJvd1sndyddOw0KCQkJJGNvbF9oWyRr ZXldID0gJHJvd1snaCddOw0KCQkJJGNvbF90aHVtYm5haWxbJGtleV0gPSAkcm93Wyd0aHVt Ym5haWwnXTsNCgkJfQ0KCQkvLyBNYWtlIHVwIGFuIGFycmF5X211bHRpc29ydCBhcmcgbGlz dCBhbmQgZXhlY3V0ZSBpdA0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHBvc3RP cmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRwb3N0T3JkZXJb JGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVyWyRpZHhdWydzb3J0 J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIsICIs JHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJLy8gSXMg Zml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRlciB0aGUgJHJzDQoJ aWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgpOw0KCQkkaWdub3Jl TGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7DQoJCS8vIFN1Y2sg b3V0IHRoZSBmaXhlZCBpdGVtcyBmaXJzdA0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291 bnQoJGlkaW5jKTsgJGlkeCsrKSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJ aWYgKCInIi4kcm93WydpZCddLiInIiA9PSAkaWRpbmNbJGlkeF0pIHsNCgkJCQkJJG9yZGVy ZWRSU1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJCQkJ fQ0KCQkJfQ0KCQl9DQoJCS8vIFRhY2sgb24gdGhlIHJlbWFpbmluZyByb3dzDQoJCWZvcmVh Y2goJHJzIGFzICRyb3cpIHsNCgkJCWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9y ZUxpc3QpKSB7DQoJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJfQ0KCQl9DQoJCSRy cyA9IGFycmF5X21lcmdlKCRvcmRlcmVkUlMsICRyZW1haW5pbmdSUyk7DQoJfQ0KDQoJLy8g SGFuZGxlIHRodW1ic2l6ZSAtIG9mIGxpbWl0ZWQgdXNlIG5vdyBidXQgc3RpbGwgYXZhaWxh YmxlDQoJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSAnJzsNCgkkdGh1bWJXVW5pdHMg PSAkdGh1bWJIVW5pdHMgPSAnJzsNCglpZiAoJHRodW1ic2l6ZSkgew0KCQkkdGh1bWJTaXpl cyA9IGRvX2xpc3QoJHRodW1ic2l6ZSwgJGRlbGltKTsNCgkJaWYgKGNvdW50KCR0aHVtYlNp emVzKSA9PSAxKSB7DQoJCQkkdGh1bWJXaWR0aCA9ICR0aHVtYkhlaWdodCA9IGVyZWdfcmVw bGFjZSgiW14wLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR1bml0cyA9IGVyZWdf cmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iV1VuaXRz ID0gJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkdGh1bWJXVW5pdHMgOiAkdW5p dHM7DQoJCX0gZWxzZSB7DQoJCQkkdGh1bWJXaWR0aCA9IGVyZWdfcmVwbGFjZSgiW14wLTld IiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYkhlaWdodCA9IGVyZWdfcmVwbGFj ZSgiW14wLTldIiwgJycsICR0aHVtYlNpemVzWzFdKTsNCgkJCSR1bml0cyA9IGVyZWdfcmVw bGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iV1VuaXRzID0g KCR1bml0cyA9PSAnJyAmJiAkdGh1bWJXaWR0aCAhPSAnJykgPyAkdGh1bWJXVW5pdHMgOiAk dW5pdHM7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlswLTldIiwgJycsICR0aHVtYlNp emVzWzFdKTsNCgkJCSR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYgJHRodW1iSGVp Z2h0ICE9ICcnKSA/ICR0aHVtYkhVbml0cyA6ICR1bml0czsNCgkJfQ0KCX0NCg0KCS8vIENv bGxhdGlvbiBkZWZlcnMgcGFyc2luZyB0aGUgZm9ybSBmb3IgZWFjaCByZXR1cm5lZCBpdGVt Lg0KCS8vIEluc3RlYWQgaXQgb3V0cHV0cyB0aGUgZGF0YSBhcyBhIGxpc3QgYXQgdGhlIGVu ZCAoaXRlbXMgbWF5IGJlIGluZGl2aWR1YWxseSBxdW90ZWQgb3IgZXh0cmFjdGVkIGlmIHJl cXVpcmVkKQ0KCS8vVE9ETyA6IEFkZCBBTFdBWVMgc3dpdGNoIGFzIGEgc2hvcnRjdXQgdG8g c3BlY2lmeSB0aGF0IGFsbCBtYXRjaGluZyBpdGVtcyAocmVnYXJkbGVzcyBvZiAjMSwgIzIs ICMzIGV0YykgYXJlIHRvIGJlIHF1b3RlZA0KCWlmICgkY29sbGF0ZSkgew0KCQkkZGJsUXVv dGUgPSAkc2dsUXVvdGUgPSBhcnJheSgnU01ETk9ORScpOw0KCQkkY29sbGF0ZU9wdHMgPSBk b19saXN0KCRjb2xsYXRlLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29sbGF0ZU9wdHMgYXMg JG9wdGlvbikgew0KCQkJJGluZGV4ZXMgPSBkb19saXN0KCRvcHRpb24sICRwYXJhbWRlbGlt KTsNCgkJCSRjb2xUeXBlID0gYXJyYXlfc2hpZnQoJGluZGV4ZXMpOw0KCQkJLy8gU3VwcGx5 aW5nICdxdW90ZScgb24gaXRzIG93biB3aWxsIGVtcHR5IHRoZSByZWxldmFudCBhcnJheSwg aW1wbHlpbmcgIkFMTCIgZmllbGRzIGFyZSB0byBiZSBxdW90ZWQNCgkJCXN3aXRjaCAoJGNv bFR5cGUpIHsNCgkJCQljYXNlICJzZ2xxdW90ZSI6DQoJCQkJCSRzZ2xRdW90ZSA9ICRpbmRl eGVzOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJkYmxxdW90ZSI6DQoJCQkJY2FzZSAicXVv dGUiOg0KCQkJCQkkZGJsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJ CX0NCgl9DQoNCgkvLyBDb21ib3MgYXJlIHVzZXItZGVmaW5lZCBjb21iaW5hdGlvbnMgb2Yg cmVwbGFjZW1lbnQgbW9kaWZpZXJzIChlLmcuIGlkZXh0OiB7aWR9e2V4dH0sIC4uLg0KCSRj b21ib3MgPSBhcnJheSgpOw0KCWlmICgkY29tYm8pIHsNCgkJJGNvbWJvID0gZG9fbGlzdCgk Y29tYm8sICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb21ibyBhcyAkbmV3RGVmKSB7DQoJCQls aXN0KCRkZWZQYXJ0cywgJHVud2FudGVkKSA9IHNtZF9kb0xpc3QoJG5ld0RlZiwgZmFsc2Us ICcnLCBmYWxzZSwgJHBhcmFtZGVsaW0pOw0KCQkJJGRlZk5hbWUgPSAieyIuYXJyYXlfc2hp ZnQoJGRlZlBhcnRzKS4ifSI7DQoJCQkkY29tYm9zWyRkZWZOYW1lXSA9ICRkZWZQYXJ0c1sw XTsNCgkJfQ0KCX0NCglpZiAoJGRlYnVnID4gMSkgew0KCQllY2hvICIrKyBDT01CT3MgKysi Ow0KCQlkbXAoJGNvbWJvcyk7DQoJfQ0KCS8vIENvbnN0cnVjdCB0aGUgb3V0cHV0DQoJJG91 dCA9IGFycmF5KCk7DQoJJGNvbGxhdGlvbnMgPSBhcnJheSgpOw0KCWlmICgkZGVidWcgPiAy KSB7DQoJCWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJHJzKTsNCgl9DQoJaWYg KCRkZWJ1ZyA+IDMpIHsNCgkJZWNobyAiKysgQVZBSUxBQkxFICc/JyBWQVJTICsrIjsNCgkJ ZG1wKCRwcmV0ZXh0KTsNCgkJZG1wKCR0aGlzYXJ0aWNsZSk7DQoJfQ0KDQoJaWYoJHJzKSB7 DQoJCSRpZHggPSAwOw0KCQkkY3RyID0gMTsNCgkJJG51bUltYWdlcyA9IGNvdW50KCRycyk7 DQoJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCWlmICgkZGlyZWN0b3J5KSB7DQoJCQkJ JHVybFBhdGggPSAkcm93WydwYXRoJ10uRFM7DQoJCQl9IGVsc2Ugew0KCQkJCSR1cmxQYXRo ID0gaHUuJGltZ19kaXIuRFM7DQoJCQl9DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0aCAuICRy b3dbJ2lkJ10gLiAndCcgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsU2l6ZSA9ICR1cmxQYXRo IC4gJHJvd1snaWQnXSAuICgoJHRodW1iKSA/ICJ0IiA6ICcnKSAuJHJvd1snZXh0J107DQoN CgkJCS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3QgcmVxdWlyZWQgdGhpcyB0aW1lPw0KCQkJ JG9iamVjdCA9ICcnOw0KCQkJaWYgKCRpZHggPj0gJHRodW1ib2Zmc2V0ICYmICRpZHggPCAk dGh1bWJvZmZzZXQrJHRodW1ibGltaXQpIHsNCgkJCQlzd2l0Y2ggKCR0eXBlKSB7DQoJCQkJ CWNhc2UgJ2ltYWdlJzoNCgkJCQkJCSRvYmplY3QgPSAoJHRleHQpID8gJHRleHQgOiAnPGlt ZyBzcmM9IicuJHRoZVRodW1iLiciJyAuKCgkcm93WydhbHQnXSkgPyAnIGFsdD0iJy4kcm93 WydhbHQnXS4nIicgOiAnJykgLigoJHRodW1iV2lkdGgpID8gJyB3aWR0aD0iJy4kdGh1bWJX aWR0aC4kdGh1bWJXVW5pdHMuJyInIDogJycpIC4oKCR0aHVtYkhlaWdodCkgPyAnIGhlaWdo dD0iJy4kdGh1bWJIZWlnaHQuJHRodW1iSFVuaXRzLiciJyA6ICcnKSAuJyAvPic7DQoJCQkJ CQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1l bnQgYXJyYXkNCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tpZH0nID0+ICRy b3dbJ2lkJ10sDQoJCQkJCSd7bmFtZX0nID0+ICRyb3dbJ25hbWUnXSwNCgkJCQkJJ3tleHR9 JyA9PiAkcm93WydleHQnXSwNCgkJCQkJJ3tjYXRlZ29yeX0nID0+ICRyb3dbJ2NhdGVnb3J5 J10sDQoJCQkJCSd7Y2F0ZWdvcnlfdGl0bGV9JyA9PiAkcm93WydjYXRfdGl0bGUnXSwNCgkJ CQkJJ3thdXRob3J9JyA9PiAkcm93WydhdXRob3InXSwNCgkJCQkJJ3toYXN0aHVtYn0nID0+ ICRyb3dbJ3RodW1ibmFpbCddLA0KCQkJCQkne3VybH0nID0+ICRmdWxsU2l6ZSwNCgkJCQkJ J3t0aHVtYnVybH0nID0+ICR0aGVUaHVtYiwNCgkJCQkJJ3tpbWFnZXBhdGh9JyA9PiAkdXJs UGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0nID0+IGJhc2VuYW1lKCRmdWxsU2l6ZSksDQoJCQkJ CSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFtZSgkdGhlVGh1bWIpLA0KCQkJCQkne2FsdH0nID0+ ICRyb3dbJ2FsdCddLA0KCQkJCQkne3RpdGxlfScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJ CQkne3RodW1id2lkdGh9JyA9PiAkdGh1bWJXaWR0aCwNCgkJCQkJJ3t0aHVtYmhlaWdodH0n ID0+ICR0aHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVtYnd1bml0c30nID0+ICR0aHVtYldVbml0 cywNCgkJCQkJJ3t0aHVtYmh1bml0c30nID0+ICR0aHVtYkhVbml0cywNCgkJCQkJJ3t3aWR0 aH0nID0+ICRyb3dbJ3cnXSwNCgkJCQkJJ3toZWlnaHR9JyA9PiAkcm93WydoJ10sDQoJCQkJ CSd7ZGF0ZX0nID0+ICRyb3dbJ2RhdGUnXSwNCgkJCQkJJ3tvYmplY3R9JyA9PiAkb2JqZWN0 LA0KCQkJCQkne2dhbGxlcnlpZH0nID0+ICRnYWxsSUQsDQoJCQkJCSd7aW5kZXh9JyA9PiAk aWR4LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAkY3RyLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScg PT4gJG51bUltYWdlcywNCgkJCQkpOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJ Zm9yZWFjaCAoJGNvbWJvcyBhcyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFh cnJheV9rZXlfZXhpc3RzKCRkZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVw bGFjZW1lbnRzWyRkZWZOYW1lXSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0K CQkJCX0NCgkJCX0NCg0KCQkJLy8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9y bSB0aGF0IHJlcXVpcmUgZGV0YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25s eSBpbiBjb2xsYXRpb24NCgkJCS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBs YWNlbWVudHMgYXJyYXkgb24gYW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGlt ZQ0KCQkJJHNvbG9SRSA9ICcvXHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVt U29sb3MgPSBwcmVnX21hdGNoX2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlm b3IgKCRzb2xvQ3RyID0gMDsgJHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsN CgkJCQkkZmllbGRuYW1lID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30n Ow0KCQkJCSRncmFiZmllbGQgPSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJ JHJlcGxhY2VtZW50c1skZmllbGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07 DQoJCQl9DQoNCgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUkVQTEFDRU1F TlRTIDogSU1BR0UgIi4kY3RyLiIgKysiOw0KCQkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJ CX0NCg0KCQkJLy8gSW4gY29sbGF0ZSBtb2RlIHRoZSBmb3JtIGlzIG9ubHkgcGFyc2VkIGF0 IHRoZSBlbmQ6IGJ1aWxkIGEgY29sbG9zYWwgbXVsdGktZGltZW5zaW9uIGFycmF5IG9mIGFs bCBpdGVtcyBoZXJlDQoJCQlpZiAoJGNvbGxhdGUpIHsNCgkJCQlmb3JlYWNoICgkcmVwbGFj ZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJJGNvbGxhdGlvbnNbJGRl Zk5hbWVdW10gPSAkZGVmVmFsOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJJG91dFtdID0g cGFyc2Uoc3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQl9DQoNCgkJCSRpZHgr KzsNCgkJCSRjdHIrKzsNCgkJfQ0KCQlpZiAoJGNvbGxhdGUpIHsNCgkJCWZvcmVhY2ggKCRj b2xsYXRpb25zIGFzICRpdGVtID0+ICRsaXN0KSB7DQoJCQkJLy8gUXVvdGUgdGhlIGxpc3Rz IGlmIHJlcXVpcmVkDQoJCQkJJGxpc3QgPSAoZW1wdHkoJGRibFF1b3RlKSB8fCBpbl9hcnJh eSgkaXRlbSwgJGRibFF1b3RlKSkgPyBkb0FycmF5KCRsaXN0LCAnc21kX2RvRGJsUXVvdGUn KSA6ICRsaXN0Ow0KCQkJCSRsaXN0ID0gKGVtcHR5KCRzZ2xRdW90ZSkgfHwgaW5fYXJyYXko JGl0ZW0sICRzZ2xRdW90ZSkpID8gZG9BcnJheSgkbGlzdCwgJ2RvUXVvdGUnKSA6ICRsaXN0 Ow0KCQkJCSRjb2xsYXRpb25zWyRpdGVtXSA9IGltcGxvZGUoJGRlbGltLCAkbGlzdCk7DQoJ CQl9DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIENPTExBVElPTlMgKysi Ow0KCQkJCWRtcCgkY29sbGF0aW9ucyk7DQoJCQl9DQoJCQkkb3V0W10gPSBwYXJzZShzdHJ0 cigkdGhpbmcsICRjb2xsYXRpb25zKSk7DQoJCX0NCg0KCQkvLyBBZGQgdGhlIHBhZ2luZyBm ZWF0dXJlcyBpZiByZXF1aXJlZA0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsN CgkJCSRuYXZvdXQgPSBhcnJheSgpOw0KCQkJJG5leHQgPSAoJG51bVBhZ2VzID4gMSAmJiAk dGh1bVBhZ2UgIT0gJG51bVBhZ2VzKTsNCgkJCSRwcmV2ID0gKCRudW1QYWdlcyA+IDEgJiYg JHRodW1QYWdlID4gMSk7DQoNCgkJCS8vIFJlcGxhY2UgYW55IHBhZ2luZyBpbmZvIGluIHRo ZSBxdWVyeSBzdHJpbmcNCgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsn cmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0g c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBh Z2UrMSk7DQoJCQkkdGhpc1BhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3Rf dXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFT VmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFn ZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51 bVBhZ2VzKTsNCg0KCQkJLy8gTGFiZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxh Y2VtZW50IHRhZyBhZnRlciBhIHBhcmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICds YXRlcicgZG9uJ3QgaGF2ZSBsYWJlbHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJh bWRlbGltIGlzIHRoZSBtYXggbnVtYmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxs IHBhZ2VzDQoJCQkkbGFiZWwgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICdGaXJz dCcsDQoJCQkJCSd7bmF2cHJldn0nID0+ICcmbGFxdW87JywNCgkJCQkJJ3tuYXZlYXJsaWVy fScgPT4gJycsDQoJCQkJCSd7bmF2dGhpc30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0 aGlzdXJsfScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJ CSd7bmF2bmV4dH0nID0+ICcmcmFxdW87JywNCgkJCQkJJ3tuYXZsYXN0fScgPT4gJ0xhc3Qn LA0KCQkJCSk7DQoNCgkJCSRsYWJlbFJFID0gJy9ceyhuYXZbYS16XSspJy4kcGFyYW1kZWxp bS4nKC4rPylcfS8nOw0KCQkJJG51bUxhYmVscyA9IHByZWdfbWF0Y2hfYWxsKCRsYWJlbFJF LCAkcGFnZWZvcm0sICRsYWJlbHMpOw0KDQoJCQlmb3IgKCRsYWJlbEN0ciA9IDA7ICRsYWJl bEN0ciA8ICRudW1MYWJlbHM7ICRsYWJlbEN0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7 Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nOw0KCQkJCSRsYWJlbFskZmllbGRuYW1lXSA9 ICRsYWJlbHNbMl1bJGxhYmVsQ3RyXTsNCgkJCQkkcGFnZWZvcm0gPSBzdHJfcmVwbGFjZSgk bGFiZWxzWzBdWyRsYWJlbEN0cl0sICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nLCAk cGFnZWZvcm0pOw0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gIisr IFBBR0lORyBMQUJFTFMgKysiOw0KCQkJCWRtcCgkbGFiZWwpOw0KCQkJfQ0KDQoJCQkvLyBH ZW5lcmF0ZSAnZWFybGllcicgYW5kICdsYXRlcicgbGlzdHMNCgkJCSRudW1FYXJsaWVyID0g aW50dmFsKCRsYWJlbFsne25hdmVhcmxpZXJ9J10pOw0KCQkJJG51bUxhdGVyID0gaW50dmFs KCRsYWJlbFsne25hdmxhdGVyfSddKTsNCgkJCSRudW1FYXJsaWVyID0gKCRudW1FYXJsaWVy ICYmICgkdGh1bVBhZ2UtJG51bUVhcmxpZXIgPiAxKSkgPyAkbnVtRWFybGllciA6ICR0aHVt UGFnZS0xOw0KCQkJJG51bUxhdGVyID0gKCRudW1MYXRlciAmJiAoJHRodW1QYWdlKyRudW1M YXRlciA8ICRudW1QYWdlcykpID8gJG51bUxhdGVyIDogJG51bVBhZ2VzLSR0aHVtUGFnZTsN CgkJCSRuYXZFYXJsaWVyID0gJG5hdkxhdGVyID0gYXJyYXkoKTsNCgkJCWZvciAoJGlkeCA9 ICR0aHVtUGFnZS0kbnVtRWFybGllcjsgJGlkeCA8ICR0aHVtUGFnZTsgJGlkeCsrKSB7DQoJ CQkJJG5hdkVhcmxpZXJbXSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsn cmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGlkeCkuJyI+Jy4kaWR4Lic8L2E+JzsNCgkJCX0N CgkJCWZvciAoJGlkeCA9ICR0aHVtUGFnZSsxOyAkaWR4IDw9ICR0aHVtUGFnZSskbnVtTGF0 ZXI7ICRpZHgrKykgew0KCQkJCSRuYXZMYXRlcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFT VmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkaWR4KS4nIj4nLiRpZHgu JzwvYT4nOw0KCQkJfQ0KCQkJJG5hdkVhcmxpZXIgPSBkb1dyYXAoJG5hdkVhcmxpZXIsICcn LCAkbmF2YnJlYWssICcnKTsNCgkJCSRuYXZMYXRlciA9IGRvV3JhcCgkbmF2TGF0ZXIsICcn LCAkbmF2YnJlYWssICcnKTsNCg0KCQkJLy8gTWFrZSB1cCB0aGUgcmVwbGFjZW1lbnRzIGFy cmF5IGZvciBwYWdlZm9ybQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne25h dmZpcnN0fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEgaHJlZj0iJy4kZmlyc3RQYWdlLici PicuJGxhYmVsWyd7bmF2Zmlyc3R9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxh YmVsWyd7bmF2Zmlyc3R9J10sICRuYXZicmVhaykpLA0KCQkJCQkne25hdnByZXZ9JyA9PiAo KCRwcmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRwcmV2UGFnZS4nIj4nLiRsYWJlbFsne25h dnByZXZ9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2cHJldn0n XSwgJG5hdmJyZWFrKSksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICRuYXZFYXJsaWVyLA0K CQkJCQkne25hdnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlzfSddLCAkbmF2YnJl YWssICdjdXJyZW50JyksDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+IGRvVGFnKCc8YSBocmVm PSInLiR0aGlzUGFnZS4nIj4nLiRsYWJlbFsne25hdnRoaXN1cmx9J10uJzwvYT4nLCAkbmF2 YnJlYWssICdjdXJyZW50JyksDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAkbmF2TGF0ZXIsDQoJ CQkJCSd7bmF2bmV4dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJG5leHRQ YWdlLiciPicuJGxhYmVsWyd7bmF2bmV4dH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1Rh ZygkbGFiZWxbJ3tuYXZuZXh0fSddLCAkbmF2YnJlYWspKSwNCgkJCQkJJ3tuYXZsYXN0fScg PT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0iJy4kbGFzdFBhZ2UuJyI+Jy4kbGFiZWxb J3tuYXZsYXN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmxh c3R9J10sICRuYXZicmVhaykpLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdl cywNCgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJCSk7DQoNCgkJCWlm ICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIFJFUExBQ0VNRU5UUyArKyI7 DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KCQkJLy8gUGVyZm9ybSBhbGwgc3Vi c3RpdHV0aW9ucyBhbmQgd3JhcCB0aGUgZW50aXJlIGxvdCBpZiByZXF1aXJlZA0KCQkJJG5h dm91dFtdID0gcGFyc2Uoc3RydHIoJHBhZ2Vmb3JtLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQkk b3V0W10gPSBkb1dyYXAoJG5hdm91dCwgJG5hdndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0K CQl9DQoJCWlmICgkZGVidWcgPiAyKSB7DQoJCQllY2hvICIrKyBGSU5BTCBPVVRQVVQgKysi Ow0KCQkJZG1wKCRvdXQpOw0KCQl9DQoJfQ0KDQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3Jh cHRhZywgJGJyZWFrLCAkY2xhc3MpOw0KfQ0KDQovLyBSZXR1cm4gYW4gZXhwYW5kZWQgbGlz dCBvZiBpdGVtczoNCi8vIDEpIEFueXRoaW5nIGNvbnRhaW5pbmcgJz8nIG9yICchJyBpcyBj aGVja2VkIGZvciBhIG1hdGNoIHdpdGggYSBUWFAgZmllbGQNCi8vIDIpIEFueSByYW5nZXMg b2YgaXRlbXMgYXJlIGV4cGFuZGVkIChlLmcuIDQtNyA9IDQsNSw2LDcpDQovLyAzKSBUWFAg ZmllbGRzIG1heSB0aGVtc2VsdmVzIGJlIGxpc3RzIG9yIHJhbmdlcw0KLy8gNCkgQW55dGhp bmcgdGhhdCBpcyBub3QgYSBUWFAgZmllbGQgaXMgdXNlZCB2ZXJiYXRpbQ0KLy8gNSkgVGhl IGl0ZW1zIGFyZSByZXR1cm5lZCBhcyAyIGxpc3RzOyBpbmNsdXNpb24gYW5kIGV4Y2x1c2lv bg0KLy8gQXJnczoNCi8vICBsc3QgPSB0aGUgbGlzdCBhcyBhIGRlbGltaXRlZCBzdHJpbmcN Ci8vICBybmcgPSB3aGV0aGVyIHRvIGFsbG93IHJhbmdlcyBvciBub3QgKGJvb2wpDQovLyAg c3ViID0gdGhlIHR5cGUgb2Ygc3ViY2F0ZWdvcnkgdG8gdHJhdmVyc2UgKGltYWdlLCBmaWxl LCBsaW5rLCBhcnRpY2xlLCBub25lPSIiKSBhbmQgaG93IG1hbnkgbGV2ZWxzIHRvIGdvIGRv d24gKGUuZy4gaW1hZ2U6MikNCi8vICBxdGUgPSB3aGV0aGVyIHRvIHF1b3RlIGVhY2ggaXRl bSBpbiB0aGUgYXJyYXkgb3Igbm90IChib29sKQ0KLy8gIGRsbSA9IHRoZSBkZWxpbWl0ZXIg KHN0cmluZykNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfZG9MaXN0IikpIHsNCmZ1bmN0 aW9uIHNtZF9kb0xpc3QoJGxzdCwgJHJuZz10cnVlLCAkc3ViPSIiLCAkcXRlPXRydWUsICRk bG09IiwiKSB7DQoJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJHByZXRleHQ7DQoNCgkkaW5jID0g JGV4YyA9IGFycmF5KCk7DQoJJGxzdCA9IGRvX2xpc3QoJGxzdCwgJGRsbSk7DQoJJG1vZFJF ID0gJy8oXD98XCEpKFtBLVphLXowLTlfXC0gXSspLyc7DQoJZm9yZWFjaCAoJGxzdCBhcyAk aXRlbSkgew0KCQkkbW9kID0gMDsgLy8gMCA9IGluY2x1ZGUsIDEgPSBleGNsdWRlDQoJCSRu dW1Nb2RzID0gcHJlZ19tYXRjaF9hbGwoJG1vZFJFLCAkaXRlbSwgJG1vZHMpOw0KDQoJCWZv ciAoJG1vZEN0ciA9IDA7ICRtb2RDdHIgPCAkbnVtTW9kczsgJG1vZEN0cisrKSB7DQoJCQkv LyBtb2QgInR5cGUiIGlzIGdvdmVybmVkIGJ5IHRoZSBmaXJzdCBvbmUgZm91bmQgb25seS4g aS5lLiBpZiAiYXJ0aWNsZS0/YyFzIiB3YXMgdXNlZCBpbiBvbmUgZmllbGQNCgkJCS8vIGl0 IHdvdWxkIGJlIGFuICJpbmNsdWRlIiBvZiB0aGUgd29yZCAiYXJ0aWNsZS0iIHBsdXMgdGhl IGNhdGVnb3J5IGFuZCBzZWN0aW9uIGNvbmNhdGVuYXRlZA0KCQkJJG1vZCA9ICgkbW9kc1sx XVswXSA9PT0gIiEiKSA/IDEgOiAwOw0KCQkJJG1vZENoYXIgPSAkbW9kc1sxXVskbW9kQ3Ry XTsNCgkJCSRtb2RJdGVtID0gdHJpbSgkbW9kc1syXVskbW9kQ3RyXSk7DQoJCQkkbG93aXRl bSA9IHN0cnRvbG93ZXIoJG1vZEl0ZW0pOw0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGxv d2l0ZW0sICRwcmV0ZXh0KSkgew0KCQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIu JG1vZEl0ZW0sICRwcmV0ZXh0WyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQkJfSBlbHNlIGlmIChp c3NldCgkdGhpc2FydGljbGVbJGxvd2l0ZW1dKSkgew0KCQkJCSRpdGVtID0gc3RyX3JlcGxh Y2UoJG1vZENoYXIuJG1vZEl0ZW0sICR0aGlzYXJ0aWNsZVskbG93aXRlbV0sICRpdGVtKTsN CgkJCX0gZWxzZSB7DQoJCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRl bSwgJG1vZEl0ZW0sICRpdGVtKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIEhhbmRsZSByYW5nZXMg b2YgdmFsdWVzDQoJCWlmICgkcm5nICYmIHByZWdfbWF0Y2goJy9eKFxkKylcLShcZCspJC8n LCAkaXRlbSkpIHsNCgkJCWxpc3QoJGxvLCAkaGkpID0gZXhwbG9kZSgiLSIsICRpdGVtLCAy KTsNCgkJCSRpdGVtID0gaW1wbG9kZSgkZGxtLCByYW5nZSgkbG8sICRoaSkpOw0KCQl9DQoN CgkJLy8gSXRlbSBtYXkgYmUgZW1wdHk7IGlnbm9yZSBpdCBpZiBzbw0KCQlpZiAoJGl0ZW0p IHsNCgkJCSRpdGVtID0gZG9fbGlzdCgkaXRlbSwgJGRsbSk7DQoJCQkvLyBIYW5kbGUgc3Vi LWNhdGVnb3JpZXMNCgkJCWlmICgkc3ViKSB7DQoJCQkJbGlzdCgkc3VidHlwZSwgJGxldmVs KSA9IGV4cGxvZGUoIjoiLCAkc3ViKTsNCgkJCQkkbGV2ZWwgPSAoZW1wdHkoJGxldmVsKSkg PyAwIDogJGxldmVsOw0KCQkJCSRsZXZlbCA9IChzdHJ0b2xvd2VyKCRsZXZlbCk9PSJhbGwi KSA/IDk5OTk5IDogJGxldmVsOw0KCQkJCWZvcmVhY2ggKCRpdGVtIGFzICRjYXQpIHsNCgkJ CQkJJGNhdHMgPSBnZXRUcmVlKGRvc2xhc2goJGNhdCksICRzdWJ0eXBlKTsNCgkJCQkJZm9y ZWFjaCAoJGNhdHMgYXMgJGpkeCA9PiAkdmFsKSB7DQoJCQkJCQlpZiAoJGNhdHNbJGpkeF1b J2xldmVsJ10gPD0gJGxldmVsKSB7DQoJCQkJCQkJJGl0ZW1bXSA9ICRjYXRzWyRqZHhdWydu YW1lJ107DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIFF1b3RlIGlm IGFza2VkDQoJCQkkaXRlbSA9ICgkcXRlKSA/IGRvQXJyYXkoJGl0ZW0sICdkb1F1b3RlJykg OiAkaXRlbTsNCgkJCWlmICgkbW9kID09PSAwKSB7DQoJCQkJJGluYyA9IGFycmF5X3VuaXF1 ZShhcnJheV9tZXJnZSgkaW5jLCAkaXRlbSkpOw0KCQkJfSBlbHNlIHsNCgkJCQkkZXhjID0g YXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRleGMsICRpdGVtKSk7DQoJCQl9DQoJCX0NCgl9 DQoJcmV0dXJuIGFycmF5KCRpbmMsICRleGMpOw0KfQ0KfQ0KDQovLyBBbHRlcm5hdGl2ZSB0 byB0aGUgY29yZSdzIGRvUXVvdGUoKS4gVGhpcyBvbmUgZGJsLXF1b3RlcyBpbnN0ZWFkIG9m IHNnbC1xdW90ZXMNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfZG9EYmxRdW90ZSIpKSB7 DQpmdW5jdGlvbiBzbWRfZG9EYmxRdW90ZSgkdmFsKSB7DQoJcmV0dXJuICciJy4kdmFsLici JzsNCn0NCn0NCg0KLy8gV29yayBvdXQgd2hpY2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMgb24g YW5kIHJldHVybiB0aGUgcmVsZXZhbnQgaW5mbw0KZnVuY3Rpb24gc21kX2dldFBhZ2UoJHJz LCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpIHsNCglpZiAoKCRsaW1pdCA+ IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVRodW1zID0gY291bnQoJHJzKTsNCgkJJG51bVBh Z2VzID0gKCRudW1UaHVtcyA+IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJ CSR0aHVtUGFnZSA9ICghZ3BzKCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRv ZmZzZXQgPSAoJHRodW1QYWdlIC0gMSkgKiAkbGltaXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8g cGFnaW5nIHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJ fQ0KCXJldHVybiBhcnJheSgkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCk7DQp9DQoN Ci8vIFJlYWQgdGhlIGdpdmVuIGRlbGltaXRlZCBkaXJlY3RvcmllcyBhbmQgZ2V0IGFsbCBm aWxlcyB0aGF0IG1hdGNoLg0KLy8gR28gZG93biBhcyBtYW55IHN1YmRpciBsZXZlbHMgYXMg Z2l2ZW4gaW4gdGhlICRzdWIgcGFyYW1ldGVyDQpmdW5jdGlvbiBzbWRfZG9EaXJlY3Rvcnko JGxzdCwgJGx2bD0wLCAkc3ViPTAsICRtYXRjaD0iIiwgJGRsbT0iLCIsICRjdHI9MCkgew0K CWxpc3QoJGRpcmluYywgJGRpcmV4YykgPSBzbWRfZG9MaXN0KCRsc3QsIGZhbHNlLCAkc3Vi LCBmYWxzZSwgJGRsbSk7DQoJbGlzdCgkbWF0Y2hpbmMsICRtYXRjaGV4YykgPSBzbWRfZG9M aXN0KCRtYXRjaCwgZmFsc2UsICcnLCBmYWxzZSwgJGRsbSk7DQoJJG1hdGNoaW5jID0gIi4q IiAuKCgkbWF0Y2hpbmMpID8gIigiIC5pbXBsb2RlKCJ8IiwkbWF0Y2hpbmMpLiIpKy4qIiA6 ICIiKTsNCgkkbWF0Y2hleGMgPSAoJG1hdGNoZXhjKSA/ICIuKigiIC5pbXBsb2RlKCJ8Iiwk bWF0Y2hleGMpLiIpKy4qIiA6ICJzbWRfZ2xyeV8iLm10X3JhbmQoKTsNCg0KCSRzdWIgPSAo ZW1wdHkoJHN1YikpID8gMCA6ICRzdWI7DQoJJHN1YiA9IChzdHJ0b2xvd2VyKCRzdWIpPT0i YWxsIikgPyA5OTk5OSA6ICRzdWI7DQoJJGZpbGVMaXN0ID0gYXJyYXkoKTsNCglmb3JlYWNo ICgkZGlyaW5jIGFzICRkaXIpIHsNCgkJaWYgKCRoYW5kbGUgPSBAb3BlbmRpcigkZGlyKSkg ew0KCQkJd2hpbGUgKCgkZmlsZSA9IEByZWFkZGlyKCRoYW5kbGUpKSAhPT0gZmFsc2UpIHsN CgkJCQkkZnVsbHBhdGggPSAkZGlyLkRTLiRmaWxlOw0KCQkJCWlmIChwcmVnX21hdGNoKCIv Ii4kbWF0Y2hpbmMuIi8iLCAkZnVsbHBhdGgpICYmICFwcmVnX21hdGNoKCIvIi4kbWF0Y2hl eGMuIi8iLCAkZnVsbHBhdGgpKSB7DQoJCQkJCWlmIChpc19kaXIoJGZ1bGxwYXRoKSkgew0K CQkJCQkJaWYgKCgkZmlsZSA9PSAiLiIpIHx8ICgkZmlsZT09ICIuLiIpIHx8IChpbl9hcnJh eSgkZmlsZSwgJGRpcmV4YykpIHx8ICgkbHZsID49ICRzdWIpKSB7DQoJCQkJCQkJY29udGlu dWU7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCS8vIFJlY3Vyc2UgdGhlIHN1YmRpci4gTm90 ZSB0aGF0IHRoZSAnIScgaXMgdGVtcG9yYXJpbHkgYWRkZWQgYmFjayB0byBlYWNoIGRpcmV4 YyBpdGVtDQoJCQkJCQkJJHRtcCA9ICRkaXJleGM7IC8vIERvbid0IG92ZXJ3cml0ZSB0aGUg b3JpZ2luYWwgYXJyYXkNCgkJCQkJCQlhcnJheV91bnNoaWZ0KCR0bXAsICRmdWxscGF0aCk7 DQoJCQkJCQkJJHN1YkZpbGVzID0gc21kX2RvRGlyZWN0b3J5KGltcGxvZGUoJGRsbS4iISIs ICR0bXApLCAkbHZsKzEsICRzdWIsICRtYXRjaCwgJGRsbSwgJGN0cik7DQoJCQkJCQkJJGZp bGVMaXN0ID0gYXJyYXlfbWVyZ2UoJGZpbGVMaXN0LCAkc3ViRmlsZXMpOw0KCQkJCQkJCSRj dHIgKz0gY291bnQoJHN1YkZpbGVzKTsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJ CQkJfSBlbHNlIHsNCgkJCQkJCSRmaWxlc3RhdCA9IHN0YXQoJGZ1bGxwYXRoKTsNCgkJCQkJ CSRpbWdzaXplID0gZ2V0aW1hZ2VzaXplKCRmdWxscGF0aCk7DQoJCQkJCQkkZmlsZUxpc3Rb JGN0cl1bJ3BhdGgnXSA9ICRkaXI7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ25hbWUnXSA9 IGJhc2VuYW1lKCRmdWxscGF0aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2lkJ10gPSBw cmVnX3JlcGxhY2UoJy9cLi4rJC8nLCAnJywgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRj dHJdWydhbHQnXSA9ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXB0aW9uJ10gPSAn JzsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxvZGUoRFMsICRkaXIpOw0KCQkJCQkJJGZpbGVMaXN0 WyRjdHJdWydjYXRlZ29yeSddID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/IGVuZCgkcGFydHMp IDogJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2F1dGhvciddID0gc3RydmFsKCRmaWxl c3RhdFsndWlkJ10pOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydkYXRlJ10gPSBzdHJmdGlt ZSgiJVktJW0tJWQgJUg6JU06JVMiLCAkZmlsZXN0YXRbJ2N0aW1lJ10pOw0KCQkJCQkJJHBh cnRzID0gZXhwbG9kZSgiLiIsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZXh0 J10gPSAoY291bnQoJHBhcnRzKSA+IDEpID8gIi4iLmVuZCgkcGFydHMpIDogJyc7DQoJCQkJ CQkkZmlsZUxpc3RbJGN0cl1bJ3cnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFs KCRpbWdzaXplWzBdKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydoJ10gPSAoaXNf YXJyYXkoJGltZ3NpemUpKSA/IHN0cnZhbCgkaW1nc2l6ZVsxXSkgOiAnJzsNCgkJCQkJfQ0K CQkJCQkkY3RyKys7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWlmICgkaGFuZGxlKSB7DQoJCQlA Y2xvc2VkaXIoJGhhbmRsZSk7DQoJCX0NCgl9DQoJcmV0dXJuICRmaWxlTGlzdDsNCn0NCg0K aWYgKCFmdW5jdGlvbl9leGlzdHMoInNtZF9yZW1vdmVRU1ZhciIpKSB7DQpmdW5jdGlvbiBz bWRfcmVtb3ZlUVNWYXIoJHVybCwgJGtleSkgew0KCSR1cmwgPSBwcmVnX3JlcGxhY2UoJy8o LiopKFw/fCYpJyAuICRrZXkgLiAnPVteJl0rPygmKSguKikvaScsICckMSQyJDQnLCAkdXJs IC4gJyYnKTsNCgkkdXJsID0gc3Vic3RyKCR1cmwsIDAsIC0xKTsNCglyZXR1cm4gKCR1cmwp Ow0KfQ0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2FkZFFTVmFyIikpIHsNCmZ1 bmN0aW9uIHNtZF9hZGRRU1ZhcigkdXJsLCAka2V5LCAkdmFsdWUpIHsNCgkkdXJsID0gc21k X3JlbW92ZVFTVmFyKCR1cmwsICRrZXkpOw0KCWlmIChzdHJwb3MoJHVybCwgJz8nKSA9PT0g ZmFsc2UpIHsNCgkJcmV0dXJuICgkdXJsIC4gJz8nIC4gJGtleSAuICc9JyAuICR2YWx1ZSk7 DQoJfSBlbHNlIHsNCgkJcmV0dXJuICgkdXJsIC4gJyYnIC4gJGtleSAuICc9JyAuICR2YWx1 ZSk7DQoJfQ0KfQ0KfQ0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjM2ODY4 OiIJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxl cnk8L2gxPgoKCTxoMiBpZD0iY29udGVudHMiPkNvbnRlbnRzPC9oMj4KCgk8dWw+CgkJPGxp PjxhIGhyZWY9IiNmZWF0dXJlcyI+RmVhdHVyZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I2F1dGhvciI+QXV0aG9yPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbnN0YWxsIj5JbnN0 YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjdXNh Z2UiPlRhZyB1c2FnZTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NtZF9nYWxsZXJ5Ij5z bWRfZ2FsbGVyeTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5HYWxs ZXJ5IGZvcm08L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+UmVwbGFj ZW1lbnQgdGFnczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjcGFnaW5n X2Zvcm0iPlBhZ2luZyBmb3JtPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX3BhZ2lu ZyI+UmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVm PSIjY29tYm9zIj5Db21ib3M8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbGxhdGVfbW9k ZSI+Q29sbGF0ZSBtb2RlPC9hPjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNl eGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NoYW5nZWxvZyI+ Q2hhbmdlbG9nPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjcmVkaXRzIj5DcmVkaXRzPC9h PjwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+ CgkJPGxpPlN1cHBvcnRzIGFsbCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxs ZXJ5IHNjcmlwdHMgaW5jbHVkaW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwgbGln aHRib3gsIGxpdGVib3gsIHNsaW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNob3cs IGZhbmN5em9vbSwgZXRjPC9saT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UgKG9yIG9wdGlvbmFsbHkgYSBsaXN0 IG9mIGRpcmVjdG9yaWVzKSB0aGF0IG1hdGNoIGNhdGVnb3JpZXMgb3IgSURzPC9saT4KCQk8 bGk+VXNlIGFydGljbGUgZmllbGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2UgY2F0ZWdvcmll cy9JRHMgZm9yIGFydGljbGUtc3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8bGk+TXVsdGkt bGV2ZWwgc3ViLWNhdGVnb3J5IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5IGxheW91dCBp cyBkZWZpbmVkIGluIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybTwvbGk+ CgkJPGxpPkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBs YXlvdXQgb2YgcGFnaW5nIGZlYXR1cmVzIGlzIGNvbnRyb2xsZWQgYnkgYSBzZWNvbmQgZm9y bTwvbGk+CgkJPGxpPlVzZXMgYSB0YWctcmVwbGFjZW1lbnQgc3lzdGVtIGxpa2UgdGhlIHdl dF9mb3JfZWFjaF9pbWFnZSBwbHVnaW48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+ QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVu dEZvcm0iPlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5IG1lLCBvciB0 byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24u Y29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0 YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdp biBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMv OTU3L3NtZF9nYWxsZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhl IGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZn dDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQg dGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBo cD9pZD0yNjQ4MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9y dCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+ VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRtaW4t Jmd0O1BsdWdpbnMgdGFiLjwvcD4KCgk8aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+CgoJPHA+ Rm9yIHNvbWUgaWRlYXMgb24gdXNhZ2Ugc2NlbmFyaW9zLCBzZWUgdGhlIDxhIGhyZWY9IiNl eGFtcGxlcyI+ZXhhbXBsZXM8L2E+LjwvcD4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRo YXQgdGhpcyBwbHVnaW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90aGlu ZyBtb3JlLiBUaGUgcGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoYXQgaW1hZ2VzIGFyZSBwdWxs ZWQgb3V0IG9mIHRoZSBkYXRhYmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8gd2hhdGV2 ZXIgb3JkZXIgeW91IGxpa2UuPC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1hZ2UgJiM4 MjEyOyBvbmUgYnkgb25lICYjODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBwYXNzZWQg dG8gdGhlIDxjb2RlPmZvcm08L2NvZGU+IG9mIHlvdXIgY2hvaWNlOyB5b3Ugc2ltcGx5IGNo b29zZSB0byBkaXNwbGF5IHdoaWNoZXZlciBpbWFnZSBhdHRyaWJ1dGVzIHlvdSBsaWtlIGlu IHRoaXMgZm9ybS4gVGhpcyBtZWFucyBhbnkgaW1hZ2UgYXR0cmlidXRlcyBjYW4gYmUgJiM4 MjIwO2luamVjdGVkJiM4MjIxOyBkaXJlY3RseSBpbnRvIGFueSBtYXJrdXA7IGl0IGNvdWxk IGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGl0IGNvdWxkIGJlIGNv bnRlbnQsIGl0IGNvdWxkIGJlIGphdmFzY3JpcHQsIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+OyBhbnl0aGluZy4gUGFnaW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXksIGFs bG93aW5nIHlvdSB0byBzcGVjaWZ5IGhvdyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlvdXIg aW1hZ2UgZ2FsbGVyaWVzLjwvcD4KCgk8cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCBtb2Rl IGNhbGxlZCAmIzgyMjA7Y29sbGF0ZSYjODIyMTsgdGhhdCBhbGxvd3MgeW91IHRvIGNvbGxl Y3QgYWxsIGltYWdlIGF0dHJpYnV0ZXMgdG9nZXRoZXIgaW50byBhIHNlcmllcyBvZiBiaWcg bG9uZyBsaXN0cyA8ZW0+d2l0aG91dDwvZW0+IGNhbGxpbmcgdGhlIGZvcm0gZXZlcnkgdGlt ZS4gVGhlIGZvcm0gaXMgdGhlbiBvbmx5IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQuPC9w PgoKCTxwPkJldHdlZW4gdGhlc2UgdHdvIG1vZGVzIHlvdSA8ZW0+c2hvdWxkPC9lbT4gYmUg YWJsZSB0byByZWFsaXNlIGFueSBnYWxsZXJ5aW5nIHNvbHV0aW9uOyBub3cgYW5kIGluIGZ1 dHVyZS48L3A+CgoJPGgzIGNsYXNzPSJ0YWcgIiBpZD0ic21kX2dhbGxlcnkiPnNtZF9nYWxs ZXJ5PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlBsYWNlIG9uZSBvciBtb3JlIHNt ZF9nYWxsZXJ5IHRhZ3MgaW4gYW55IGFydGljbGUsIHBhZ2Ugb3IgZm9ybSwgc3VwcGx5IGFu eSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIGl0IGFuZCB1c2UgYSBm b3JtIHRvIGRlZmluZSBob3cgdGhlIGdhbGxlcnkgaXMgZGlzcGxheWVkLjwvcD4KCgk8aDQg Y2xhc3M9ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDQ+CgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5pZDwvc3Bhbj4gOiBs aXN0IG9mIGltYWdlIElEcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBnYWxsZXJ5LiBNYXkgYmUg aW50ZWdlcnMgb3IgcmFuZ2VzLCBmb3IgZXhhbXBsZSA8Y29kZT5pZD0mcXVvdDs1LCA0Miwg OC0xMSZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBpbWFnZXMgNSwgOCwgOSwgMTAsIDExIGFu ZCA0Mi4gVXNlIGFuIGV4Y2xhbWF0aW9uIG1hcmsgaW4gZnJvbnQgb2YgYSBudW1iZXIgb3Ig cmFuZ2UgdG8gZXhjbHVkZSB0aG9zZSBpbWFnZXM8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0i YXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2F0ZWdvcnk8L3NwYW4+IDog bGlzdCBvZiBpbWFnZSBjYXRlZ29yaWVzIGZvciBpbmNsdXNpb24gaW4gdGhlIGdhbGxlcnku IFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1lIGNhdGVnb3JpZXMgKGUuZy4gJiM4MjIwO2Fu aW1hbHMmIzgyMjE7KSBvciBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNs ZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/ aWQmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgYWxsIGltYWdlcyBmcm9tIHRoZSBjYXRlZ29y aWVzIGNhbGxlZCAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIHRoZSBjYXRlZ29yeSBjYWxs ZWQgJiM4MjIwO2FydC00MiYjODIyMTsgKGFzc3VtaW5nIHRoZSBjdXJyZW50IGFydGljbGUg aGFzIGFuIGlkIG9mIDQyIG9mIGNvdXJzZSkuIFVzZSBhbiBleGNsYW1hdGlvbiBtYXJrIHRv IGV4Y2x1ZGUgdGhlIGdpdmVuIGNhdGVnb3J5IG9yIGZpZWxkLiBGaWVsZHMgbWF5IHRoZW1z ZWx2ZXMgY29udGFpbiBsaXN0cyBvZiBjYXRlZ29yaWVzLiBUaGUgPyBmaWVsZCBuYW1lcyBt YXkgYmUgY29tYmluZWQgKGUuZy4gP3MtP2FydGljbGVfaW1hZ2UpIGJ1dCBiZSBhd2FyZSB0 aGF0IGZpZWxkIG5hbWVzIG1heSBjb250YWluIHNwYWNlczwvbGk+Cgk8L3VsPgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5zdWJsZXZlbDwvc3Bh bj4gOiBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGhvdyBtYW55ICYjODIxNjtsZXZlbHMm IzgyMTc7IGRvd24gdG8gdHJhdmVyc2UgZWFjaCBtYXRjaGluZyBjYXRlZ29yeS4gc3VibGV2 ZWw9JiM4MjIwOzAmIzgyMjE7ICh0aGUgZGVmYXVsdCkgaXMgb25seSB0aGUgdG9wLWxldmVs OyAxID0gdG9wLWxldmVsIHBsdXMgdGhlIDFzdCBzdWItY2F0OyAyID0gdG9wLWxldmVsIHBs dXMgdGhlIG5leHQgMiBzdWItY2F0cywgYW5kIHNvIG9uLiBzdWJsZXZlbD0mIzgyMjA7YWxs JiM4MjIxOyBpcyBhbGwgc3ViLWNhdGVnb3JpZXM8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0i YXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+c29ydDwvc3Bhbj4gOiByZS1v cmRlciB0aGUgaW1hZ2VzIGJ5IDxjb2RlPmNhdGVnb3J5PC9jb2RlPiAodGhlIGRlZmF1bHQp LCA8Y29kZT5uYW1lPC9jb2RlPiwgPGNvZGU+ZGF0ZTwvY29kZT4sIDxjb2RlPmlkPC9jb2Rl PiwgZmlsZSA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uLCA8Y29kZT5hbHQ8L2NvZGU+LCA8Y29k ZT5jYXB0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2Nv ZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5oYXN0aHVtYjwvY29kZT4gaW4gZWl0 aGVyIDxjb2RlPmFzYzwvY29kZT5lbmRpbmcgb3IgPGNvZGU+ZGVzYzwvY29kZT5lbmRpbmcg b3JkZXIuIFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0OiA8Y29kZT5maXhlZDwvY29kZT4gbWFp bnRhaW5zIHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVkIGluIHRoZSBpZCBhdHRyaWJ1dGUsIHdo aWxlIDxjb2RlPnJhbmRvbTwvY29kZT4gc2h1ZmZsZXMgdGhlIG9yZGVyLiBOb3RlIHRoYXQg aWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFzIHRoZSBmaXJzdCBpdGVtIGluIHRo ZSBsaXN0LCByYW5kb20gaW1hZ2VzIHdpbGwgYmUgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNl IGFuZCB0aGV5IHdpbGwgdGhlbiBiZSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBs aXN0ZWQgYWZ0ZXIgaXQuIElmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBwZWFycyBhbnl3aGVy ZSBlbHNlIGluIHRoZSBsaXN0LCBhbnkgc29ydCBpdGVtcyBiZWZvcmUgaXQgd2lsbCBkZXRl cm1pbmUgdGhlIG9yZGVyIG9mIGRhdGEgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlLCBhbmQg dGhlIHJlc3VsdHMgd2lsbCB0aGVuIGJlIG9yZGVyZWQgcmFuZG9tbHkgKGluIHRoYXQgY2Fz ZSwgYW55IGl0ZW1zIGxpc3RlZCBhZnRlciByYW5kb20gd2lsbCBiZSBpZ25vcmVkLiA8Y29k ZT5maXhlZDwvY29kZT4gaXMsIGhvd2V2ZXIsIHN0aWxsIGhvbm91cmVkKTwvbGk+Cgk8L3Vs PgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5saW1p dDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIHRvIHNob3cgPGVtPnBl ciBwYWdlPC9lbT4uIDAgb3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+Cgk8L3VsPgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5tYXhsaW1pdDwv c3Bhbj4gOiB0aGUgYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgdGh1bWJuYWlscyB0byBw dWxsIGZyb20gdGhlIGRhdGFiYXNlLiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJ PC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ b2Zmc2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55IGltYWdlcyBhbmQgc3RhcnQgY291bnRp bmcgdGhlcmVhZnRlcjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhpbXVtIG51 bWJlciBvZiB0aHVtYm5haWxzIHRvIHNob3cuIDAgb3Igb21pdHRlZCA9IGFsbCB0aHVtYnMu IE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSBsaW1pdDsgeW91IGNhbiBsYXVuY2ggYSAy MC1pbWFnZSBnYWxsZXJ5IGJ1dCBvbmx5IHNob3cgMSB0aHVtYm5haWwgb24gdGhlIHBhZ2U8 L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+dGh1bWJvZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgdGh1bWJzIGJlZm9y ZSBkaXNwbGF5aW5nIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFpbHM8L2xpPgoJ PC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ dGV4dDwvc3Bhbj4gOiBkaXNwbGF5IHRoZSBnaXZlbiB0ZXh0IGluc3RlYWQgb2YgdGh1bWJu YWlscy4gVGhlIHRleHQgY2FuIGNvbnRhaW4gPyBhcnRpY2xlIGZpZWxkcyBsaWtlIDxjb2Rl PmNhdGVnb3J5PC9jb2RlPjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYjwvc3Bhbj4gOiBkaXNwbGF5cyB0aGUgZnVs bHNpemUgcGljIGFzIGEgdGh1bWJuYWlsIGluc3RlYWQgb2YgYSBmdWxsc2l6ZSBwaWMoISk8 L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+dGh1bWJzaXplPC9zcGFuPiA6IHRha2VzIG9uZSBvciB0d28gY29tbWEtc2VwYXJh dGVkIHBhcmFtZXRlcnMgdG8gc3BlY2lmeSB3aWR0aCBhbmQvb3IgaGVpZ2h0IG9mIGFsbCB5 b3VyIGdhbGxlcnkgdGh1bWJuYWlscy4gVGhlIGRlZmF1bHQgaXMgaW4gcGl4ZWxzIGlmIHlv dSBkb24mIzgyMTc7dCBzcGVjaWZ5IHVuaXRzLiBNaXNzaW5nIG91dCBvbmUgb3IgdGhlIG90 aGVyIHBhcmFtZXRlciAoaS5lLiBoYXZpbmcgYW4gJiM4MjIwO2VtcHR5JiM4MjIxOyBwYXJh bWV0ZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb21tYSkgd2lsbCBvbmx5IHNldCBvbmUgb2Yg dGhlIGRpbWVuc2lvbnMuIFVzaW5nIG9ubHkgb25lIHZhbHVlLCBib3RoIHdpZHRoIGFuZCBo ZWlnaHQgd2lsbCBiZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWU8L2xpPgoJPC91bD4KCTx1bCBj bGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Zm9ybTwvc3Bhbj4g OiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIGxheW91 dCB5b3VyIG1hdGNoaW5nIGltYWdlczwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5wYWdlZm9ybTwvc3Bhbj4gOiB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxh eW91dCBvZiB5b3VyIHBhZ2luZyBuYXZpZ2F0aW9uPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmdhbGxlcnlpZDwvc3Bhbj4g OiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdGhp cy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEIGJhc2VkIG9uIHRoZSBh dHRyaWJ1dGVzIHlvdSBzdXBwbHkuIEluIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IHR3byBp ZGVudGljYWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91IGNhbiBvdmVycmlkZSB0aGUgSUQgZm9y IGEgZ2FsbGVyeSB3aXRoIHRoaXMgYXR0cmlidXRlLiBXaGF0IHRoZSBwbHVnaW4gZG9lcyAo aW50ZXJuYWxseSkgaXMgZ2VuZXJhdGUgYSAzMi1jaGFyYWN0ZXIgaGFzaCBzdHJpbmcgZm9y IGVhY2ggdGFnLCB0aGVuIHBpY2tzIGEgNC1jaGFyIGNvZGUgZnJvbSB0aGlzIHN0cmluZyAo aXQgdGFrZXMgZXZlcnkgNnRoIGNoYXJhY3RlciBieSBkZWZhdWx0KS4gWW91IGNhbiBzdXBw bHkgYSB1bmlxdWUgZml4ZWQgc3RyaW5nIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDtU aGVHYWxsZXJ5MiZxdW90OzwvY29kZT4pIG9yIGdpdmUgaXQgYSBxdWVzdGlvbiBtYXJrIGFu ZCAyIG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEgY29sb24gKGUuZy4gPHN1Yj5nYWxsZXJ5aWQ9 JiM4MjIxOz81OjQmIzgyMjE7PC9zdWI+KS4gVGhlIGZpcnN0IG51bWJlciBpcyB0aGUgbGVu Z3RoIG9mIHRoZSBmaW5hbCBzdHJpbmcgdG8gZ2VuZXJhdGUsIHRoZSBzZWNvbmQgbnVtYmVy IGlzIGhvdyBtYW55IGNoYXJhY3RlcnMgdG8gc2tpcCBvdmVyIGluIHRoZSBmdWxsIDMyLWNo YXIgc3RyaW5nIGVhY2ggdGltZSBpdCBwaWNrcyBvbmUuIFNvIGluIHRoaXMgY2FzZSwgaXQg Z2VuZXJhdGVzIGEgNS1jaGFyYWN0ZXIgc3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlcnMgaXQg ZmluZHMgYXQgcG9zaXRpb25zIDEsNSw5LDEzLCBhbmQgMTcuIElmIHlvdSBvbWl0IHRoZSAy bmQgbnVtYmVyIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NiZxdW90OzwvY29kZT4p IGl0IHdpbGwgYXNzdW1lIGl0JiM4MjE3O3MgYW4gaW5jcmVtZW50IG9mIDEsIHNvIGluIHRo aXMgY2FzZSBpdCYjODIxNztsbCB1c2UgdGhlIDFzdCA2IGNoYXJhY3RlcnM8L2xpPgoJPC91 bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+d3Jh cHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBn YWxsZXJ5LiBTcGVjaWZ5IGl0IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNvZGU+ d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0IChpLmUu IG5vIHRhZyk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJv dW5kIGVhY2ggdGh1bWJuYWlsLiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIHRhZ3MpPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBj bGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBlbnRpcmUgZ2FsbGVyeS4gRGVmYXVsdCBpcyB1 bnNldCAoaS5lLiBubyBjbGFzcyk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgp SFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4u IFNwZWNpZnkgaXQgd2l0aG91dCBhbmdsZSBicmFja2V0cywgZS5nLiA8Y29kZT53cmFwdGFn PSZxdW90O2RpdiZxdW90OzwvY29kZT4uIERlZmF1bHQgaXMgJiM4MjIwO3VsJiM4MjIxOzwv bGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5uYXZicmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFj aCBpdGVtIHdpdGhpbiB0aGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBEZWZhdWx0IGlzICYj ODIyMDtsaSYjODIyMTs8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIG5hdmlnYXRp b24gd3JhcHRhZy4gRGVmYXVsdCBpcyAmIzgyMjA7c21kX2dhbGxlcnlfbmF2JiM4MjIxOzwv bGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBmb3Igc3BlY2lmeWlu ZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCTwvdWw+Cgk8 dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnBhcmFtZGVs aW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXIt cGFyYW1ldGVyIGF0dHJpYnV0ZXMuIERlZmF1bHQgaXMgY29sb24gKDopPC9saT4KCTwvdWw+ Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNvbGxh dGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8YSBocmVmPSIjY29sbGF0ZV9t b2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91 ciBvd24gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+ Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij5kaXJlY3Rvcnk8L3NwYW4+IDogcmVhZCBpbWFnZXMgZnJvbSBhIGxpc3Qgb2YgZGlyZWN0 b3JpZXMgKG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cykgaW5zdGVhZCBvZiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2U8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF0Y2g8 L3NwYW4+IDogbGltaXQgdGhlIGltYWdlcyBhbmQgZGlyZWN0b3JpZXMgY2hvc2VuIGluIGRp cmVjdG9yeSBtb2RlLiBHaXZlIGl0IGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRlIG9yICFl eGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBiZSBj aG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMgYXJlIGF1 dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28gYW55IHBh cnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRjaDwvbGk+ Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij5kZWJ1Zzwvc3Bhbj4gOiB0dXJuIG9uIGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBv ZiB2ZXJib3NpdHkgZnJvbSAwIChub25lKSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8 aDMgaWQ9ImdhbGxlcnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9oMz4KCgk8cD5UaGUgPGNvZGU+ Zm9ybTwvY29kZT4gaXMgd2hlcmUgeW91IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3 aWxsIGxvb2sgbGlrZSBvbiB0aGUgc2NyZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5n IG1hcmt1cCBvciB0YWdzIGFzIG5vcm1hbC4gSW4ga2V5IHBsYWNlcyB3aGVyZSB5b3Ugd2Fu dCwgc2F5LCBhbiBpbWFnZSBJRCBvciBhbHQgdGFnIG9yIGltYWdlIHdpZHRoIHRvIGJlIGRp c3BsYXllZCwgeW91IHNwZWNpZnkgc3BlY2lhbCA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJl cGxhY2VtZW50IHRhZ3M8L2E+LiBUaGVzZSBhcmUgcmVwbGFjZWQgZm9yIGVhY2ggaW1hZ2Ug aW4gdHVybiwgdGh1cyBidWlsZGluZyB1cCB0aGUgZ2FsbGVyeS48L3A+CgoJPHA+SW4gY29s bGF0ZSBtb2RlLCB0aGUgaW1hZ2UgZGV0YWlscyBhcmUgaW5zdGVhZCBtYWRlIGludG8gbGlz dHMuIFRoZSBmb3JtIGlzIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYW5kIHRoZSByZXBsYWNlbWVu dCB0YWdzIG91dHB1dCB0aGUgZW50aXJlIGxpc3QuPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAi IGlkPSJyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczogZ2FsbGVyeTwvaDQ+CgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aWR9PC9zcGFu PiA6IHRoZSBpbWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5hbWUg d2l0aG91dCBpdHMgZXh0ZW5zaW9uKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmFtZX08L3NwYW4+IDogdGhlIGZ1bGwg aW1hZ2UgZmlsZW5hbWUgYXMgZGVmaW5lZCBpbiB0aGUgZGF0YWJhc2UsIHVzdWFsbHkgaW5j bHVkaW5nIGV4dGVuc2lvbjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57ZXh0fTwvc3Bhbj4gOiB0aGUgZmlsZSBleHRlbnNp b24gaW5jbHVkaW5nIHBlcmlvZDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57Y2F0ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFn ZSBjYXRlZ29yeSBuYW1lPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDogdGhlIGlt YWdlIGNhdGVnb3J5IHRpdGxlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnthdXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRl ZCB0aGUgaW1hZ2U8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e3VybH08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IG9mIHRoZSBmdWxsc2l6ZSBpbWFnZTwvbGk+Cgk8L3VsPgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ1cmx9PC9z cGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJu YWlsPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPntpbWFnZXBhdGh9PC9zcGFuPiA6IHRoZSBkaXJlY3RvcnkgdGhlIGltYWdl IGlzIGluPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntpbWFnZWRlZn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBh cnQgb2YgdGhlIGltYWdlIChlLmcuIDUuanBnKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJkZWZ9PC9zcGFuPiA6 IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBn KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57YWx0fTwvc3Bhbj4gOiB0aGUgYWx0IHRleHQ8L2xpPgoJPC91bD4KCTx1bCBj bGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RpdGxlfTwvc3Bh bj4gOiB0aGUgY2FwdGlvbjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57ZGF0ZX08L3NwYW4+IDogaW1hZ2UgdXBsb2FkIGRh dGU8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e3dpZHRofTwvc3Bhbj4gOiBpbWFnZSB3aWR0aDwvbGk+Cgk8L3VsPgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aGVpZ2h0fTwv c3Bhbj4gOiBpbWFnZSBoZWlnaHQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1id2lkdGh9PC9zcGFuPiA6IHRodW1i bmFpbCB3aWR0aCAoaWYgZGVmaW5lZDogc2VlIHRoZSA8Y29kZT50aHVtYnNpemU8L2NvZGU+ IGF0dHJpYnV0ZSk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e3RodW1oZWlnaHR9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWln aHQgKGRpdHRvKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ3dW5pdHN9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0 aCB1bml0cyAoZS5nLiBweCwgJSwgZW0gZXRjLiBPbmx5IGlmIGRlZmluZWQgdmlhIDxjb2Rl PnRodW1ic2l6ZTwvY29kZT4pPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmh1bml0c308L3NwYW4+IDogdGh1bWJu YWlsIGhlaWdodCB1bml0cyAoZGl0dG8pPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMi PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntoYXN0aHVtYn08L3NwYW4+IDogaWYg dGhlIGltYWdlIGhhcyBhbiBhc3NvY2lhdGVkIHRodW1ibmFpbCBvciBub3QgKHByb2JhYmx5 IG5vdCBtdWNoIHVzZSk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e2dhbGxlcnlpZH08L3NwYW4+IDogdGhlIGdhbGxlcnkg aWQgeW91IG9yIHRoZSBwbHVnaW4gYXNzaWduZWQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0i YXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e29iamVjdH08L3NwYW4+IDog YSBzcGVjaWFsIGl0ZW0gY29udGFpbmluZyBlaXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+ IE9SIHRoZSBpbWFnZSB0YWcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdGh1bWJuYWlsIGJ1dCBv bmx5IGlmIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29k ZT50aHVtYmxpbWl0PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25s eSBzZXQgZm9yIHRoZSBmaXJzdCB0aHVtYm5haWwgaW4gdGhlIGxpc3QuIEV2ZXJ5IG90aGVy IHRpbWUgaXQgaXMgZW1wdHk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2NvdW50ZXJ9PC9zcGFuPiA6IGFuIGltYWdlIGNv dW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVhY2ggdGltZTwvbGk+ Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij57aW5kZXh9PC9zcGFuPiA6IGFuIGluZGV4IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEy OyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMi PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0b3RhbGltYWdlc308L3NwYW4+IDog dGhlIHRvdGFsIG51bWJlciBvZiBpbWFnZXMgbWF0Y2hlZDwvbGk+Cgk8L3VsPgoKCTxwPklm IHRob3NlIGFyZW4mIzgyMTc7dCBlbm91Z2gsIHlvdSBjYW4gPGEgaHJlZj0iI2NvbWJvcyI+ Y3JlYXRlIHlvdXIgb3duPC9hPiBieSBncm91cGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIGFi b3ZlLCBvcHRpb25hbGx5IHdpdGggYXJ0aWNsZSB2YXJpYWJsZXMgc3VjaCBhcyA8Y29kZT4/ ZXhjZXJwdDwvY29kZT4sIDxjb2RlPj9rZXl3b3JkczwvY29kZT4sIDxjb2RlPj9hcnRpY2xl X2ltYWdlPC9jb2RlPiwgZXRjLjwvcD4KCgk8aDMgaWQ9InBhZ2luZ19mb3JtIj5QYWdpbmcg Zm9ybTwvaDM+CgoJPHA+V2hlbiBhbGwgdGhlIHRodW1ibmFpbHMgaGF2ZSBiZWVuIHByb2Nl c3NlZCwgdGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiBpcyBwcm9jZXNzZWQgYW5kIGRpc3Bs YXllZC4gSW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgd2F5IHRoZSA8YSBocmVmPSIjZ2Fs bGVyeV9mb3JtIj5nYWxsZXJ5IGZvcm08L2E+IHdvcmtzLCBhIHNlcmllcyBvZiA8YSBocmVm PSIjcmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgVGFnczwvYT4gZ292ZXJuIHdoaWNoIGdhbGxl cnkgbmF2aWdhdGlvbiBpdGVtcyBhcmUgYXZhaWxhYmxlLiBGb3IgZXhhbXBsZSB5b3UgY291 bGQgY2hvb3NlIHRvIG9ubHkgc2hvdyBuZXh0L3ByZXYuIE9yIHBlcmhhcHMgMXN0IHBhZ2Uv bGFzdCBwYWdlLiBPciBudW1iZXJlZCBwYWdlIGxpbmtzLjwvcD4KCgk8aDQgY2xhc3M9ImF0 dHMgIiBpZD0icmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgdGFnczogcGFnaW5nPC9oND4KCgk8 dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntuYXZmaXJz dH08L3NwYW4+IDogdGhlIGZpcnN0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDtGaXJz dCYjODIyMTspPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPntuYXZwcmV2fTwvc3Bhbj4gOiB0aGUgcHJldmlvdXMgcGFnZSAo ZGVmYXVsdCBsYWJlbDogJiM4MjIwOyZsYXF1bzsmIzgyMjE7KTwvbGk+Cgk8L3VsPgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2ZWFybGll cn08L3NwYW4+IDogYW55IHBhZ2UgbnVtYmVycyBiZWZvcmUgdGhlIGN1cnJlbnQgcGFnZTwv bGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj57bmF2dGhpc3VybH08L3NwYW4+IDogdGhlIGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluayB0byBpdHNlbGY8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdnRo aXN9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBhZ2Ugd2l0aG91dCBhIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IGxpbms8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkgcGFn ZSBudW1iZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJPC91bD4KCTx1bCBjbGFz cz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdm5leHR9PC9zcGFu PiA6IHRoZSBwcmV2aW91cyBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYj ODIyMTspPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntuYXZsYXN0fTwvc3Bhbj4gOiB0aGUgbGFzdCBwYWdlIChkZWZhdWx0 IGxhYmVsOiAmIzgyMjA7TGFzdCYjODIyMTspPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0 dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0b3RhbGltYWdlc308L3NwYW4+ IDogdGhlIHRvdGFsIG51bWJlciBvZiBpbWFnZXMgbWF0Y2hlZDwvbGk+Cgk8L3VsPgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxwYWdl c308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rp b248L2xpPgoJPC91bD4KCgk8cD5UaGUgY3VycmVudCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNz IG9mICYjODIxNjtjdXJyZW50JiM4MjE3OyBhbmQgZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0 LCBhIDxjb2RlPiZsdDtsaSZndDs8L2NvZGU+IGZvciBlYXN5IHN0eWxpbmcuIFRvIGF2b2lk IGEgemlsbGlvbiBvcHRpb25zLCBjdXN0b20gbGFiZWxzIGFyZSBkZWZpbmVkIGRpcmVjdGx5 IGluIHRoZSBmb3JtIGl0c2VsZjo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OjFzdH08L2Nv ZGU+PC9wPgoKCTxwPldvdWxkIGxhYmVsIHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8g dGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGdhbGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTsuIFRo aXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3Nw YW4+IHNuaXBwZXRzLCBlLmcuOjwvcD4KCgk8cD48Y29kZT57bmF2Zmlyc3Q6IyNmaXJzdExh YmVsIyN9PC9jb2RlPjwvcD4KCgk8cD5Zb3UgY2FuIG92ZXJyaWRlIHRoZSBudW1iZXIgb2Yg aXRlbXMgZGlzcGxheWVkIGJ5IG5hdmVhcmxpZXIgYW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlp bmcgYSBjb2xvbiBhbmQgYSBudW1iZXIuIFNvIHRvIG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRo ZSBsZWZ0IG9mIHRoZSBjdXJyZW50IHBhZ2UgYW5kIDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1 c2UgPGNvZGU+e25hdmVhcmxpZXI6Mn0ge25hdmxhdGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZv cm0uIEN1cnJlbnRseSA8Y29kZT57bmF2ZWFybGllcn08L2NvZGU+IGFuZCA8Y29kZT57bmF2 bGF0ZXJ9PC9jb2RlPiBvbmx5IGRpc3BsYXkgYXJhYmljIG51bWVyYWxzLiBBbnkgaWRlYXMg b24gaG93IHRvIG9mZmVyIG90aGVyIGNoYXJhY3RlciBzZXRzIGdyZWF0bHkgYXBwcmVjaWF0 ZWQuPC9wPgoKCTxoMyBpZD0iY29tYm9zIj5Db21ib3M8L2gzPgoKCTxwPklmIHRoZSBidWls dC1pbiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZW4m IzgyMTc7dCBlbm91Z2ggZm9yIHlvdXIgbmVlZHMgb3IgeW91IGZpbmQgeW91cnNlbGYgcmVw ZWF0aW5nIHRoZSBzYW1lIGNvbWJpbmF0aW9uIGFuZCB3YW50IHRvIHNhdmUgeW91cnNlbGYg c29tZSB0eXBpbmcsIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duIHJlcGxhY2VtZW50IHRhZ3Mu IFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90O25ld3RhZzE6ZGVm aW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9uLCAuLi4mcXVvdDs8L2NvZGU+PC9wPgoKCTxw PiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBjYW4gYmUgYW55IGZpeGVkIHRleHQsIGFueSBl eGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9yIGFueSBhcnRpY2xlIHZhcmlhYmxlIHNvIHlv dSBjYW4gZ2V0IHJlYWxseSB3aWxkIGhlcmU6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90 O2ltZ2luOmZvdW5kIGluID9zIFt0YWdnZWQgd2l0aCA/a2V5d29yZHMuIFBob3RvIGJ5IHth dXRob3J9XSZxdW90OzwvY29kZT48L3A+CgoJPHA+c28gbm93IDxjb2RlPntpbWdpbn08L2Nv ZGU+IGlzIGF2YWlsYWJsZSB0byB5b3VyIGZvcm0gYW5kIG1pZ2h0IGJlIHJlcGxhY2VkIHdp dGggJiM4MjIwO2ZvdW5kIGluIHpvbyBbdGFnZ2VkIHdpdGggemVicmEsIGFmcmljYSwgc3Ry aXBlcy4gUGhvdG8gYnkgQmxva2VdJiM4MjIxOy4gJHByZXRleHQgaXMgYWxzbyBhdmFpbGFi bGUgZm9yIHRob3NlIGdlZWtzIHdobyBrbm93IHdoYXQmIzgyMTc7cyBpbiBpdCAodXNlIDxj b2RlPmRlYnVnPSZxdW90OzQmcXVvdDs8L2NvZGU+IHRvIHZpZXcgYWxsIGF2YWlsYWJsZSBh cnRpY2xlIHZhcmlhYmxlcykuPC9wPgoKCTxwPk9uZSB0aGluZyB0byB3YXRjaCBvdXQgZm9y IGlzIHRoYXQgdGhlIHNwYWNlIGNoYXJhY3RlciBpc24mIzgyMTc7dCBuZWNlc3NhcmlseSBh IGRlbGltaXRlciBmb3IgPGNvZGU+PzwvY29kZT4gdmFyaWFibGVzIChiZWNhdXNlIGN1c3Rv bSBmaWVsZHMgY2FuIGhhdmUgc3BhY2VzIGluIHRoZW0pLiBTbyA8Y29kZT5jb21ibz0mcXVv dDtkb2Vzbm90d29yazo/cyBpbiA/Y2F0ZWdvcnkxJnF1b3Q7PC9jb2RlPiB3aWxsIGxvb2sg Zm9yIGEgdmFyaWFibGUgbGFiZWxsZWQgJiM4MjIwO3MgaW4mIzgyMjE7IGFuZCBvbmUgY2Fs bGVkICYjODIyMDtjYXRlZ29yeTEmIzgyMjE7LiBPbmx5IG9uZSBvZiB0aG9zZSBleGlzdHMh IENsZXZlciB1c2Ugb2YgcGFyZW50aGVzZXMgb3Igb3RoZXIgcHVuY3R1YXRpb24gY2FuIHdv cmsgcm91bmQgdGhpcy48L3A+CgoJPGgzIGlkPSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9k ZTwvaDM+CgoJPHA+SWYgeW91IHdhbnQgdG8gZ2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5 b3UgY2FuIHB1dCB0aGUgcGx1Z2luIGludG8gYSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2Nv bGxhdGlvbiBtb2RlJiM4MjIxOy4gSW4gdGhpcyBtb2RlIHlvdXIgY2hvc2VuIGZvcm0gaXMg PHN0cm9uZz5ub3Q8L3N0cm9uZz4gZXhlY3V0ZWQgZm9yIGV2ZXJ5IGltYWdlOyBpdCBpcyBv bmx5IHVzZWQgb25jZSBhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QsIGFmdGVyIGFsbCBp bWFnZXMgaGF2ZSBiZWVuIGludGVybmFsbHkgJiM4MjIwO2NvbGxlY3RlZCYjODIyMTsuIElu IGVmZmVjdCwgdGhlIHBsdWdpbiBidWlsZHMgdXAgYSBnaWFudCBhcnJheSBvZiBhbGwgbWF0 Y2hpbmcgaW1hZ2VzIHJlYWR5IGZvciB5b3UgdG8gb3V0cHV0IHRoZW0gYWxsIGluIG9uZSBn by4gVGhpcyBpcyB2ZXJ5IGhhbmR5IGZvciBkb2luZyBzbGlkZXNob3dzIGFuZCBpcyBiZXN0 IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90OzEm cXVvdDs8L2NvZGU+PC9wPgoKCTxwPnN3aXRjaGVzIGNvbGxhdGlvbiBtb2RlIG9uLiBJZiB0 aGUgcGx1Z2luIG1hdGNoZWQgNCBpbWFnZXMgYW5kIHlvdSB3ZXJlIHRvIHVzZSB0aGUgcmVw bGFjZW1lbnQgdGFnIDxjb2RlPntuYW1lfTwvY29kZT4gaW4geW91ciBmb3JtIGxpa2UgdGhp czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0 Y2hpbmcgaW1hZ2VzOiB7bmFtZX0KPC9jb2RlPjwvcHJlPgoKCTxwPnlvdSBtaWdodCBnZXQg dGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUg bWF0Y2hpbmcgaW1hZ2VzOiBoZXJvbi5qcGcscGVuZ3Vpbi5qcGcsZW11LmpwZyxwdWZmaW4u anBnCjwvY29kZT48L3ByZT4KCgk8cD5Tb21ldGltZXMgaXQmIzgyMTc7cyB1c2VmdWwgdG8g YmUgYWJsZSB0byBwdXQgcXVvdGVzIGFyb3VuZCBlYWNoIGl0ZW0gc28geW91IGNhbiB0ZWxs IGNvbGxhdGUgbW9kZSB0byBkbyB0aGF0IGluc3RlYWQ6PC9wPgoKCTxwPjxjb2RlPmNvbGxh dGU9JnF1b3Q7cXVvdGU6e25hbWV9JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5Zb3Ugd291bGQg dGhlbiBnZXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ VGhlIG1hdGNoaW5nIGltYWdlczogJnF1b3Q7aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1 aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcmcXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90 Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGRlbGltaXRlciAoYSBjb21tYSBpbiB0aGlzIGNh c2UpIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2RlPiBhdHRy aWJ1dGUuIFlvdSBtYXkgdXNlIDxjb2RlPnNnbHF1b3RlPC9jb2RlPiB0byB3cmFwIHNpbmds ZSBxdW90ZXMgcm91bmQgdGhlIGl0ZW1zLCBvciAmIzgyMjA7ZGJscXVvdGUmIzgyMjE7IGFz IGEgc3lub255bSBmb3IgJiM4MjIwO3F1b3RlJiM4MjIxOyBpZiB5b3UgcHJlZmVyLiBZb3Ug Y2FuIHF1b3RlIG1vcmUgdGhhbiBvbmUgdGhpbmcgYXQgb25jZSBieSBzcGVjaWZ5aW5nIHRo ZSBpdGVtcyBhcyBhIGRlbGltaXRlZCBsaXN0OjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZx dW90O3F1b3RlOntuYW1lfTp7YWx0fTp7aW1naW59JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5Z ZXMsIHlvdSBjYW4gdXNlIGNvbWJvcyEgVGhlIGRlbGltaXRlciB1c2VkIGJldHdlZW4gaXRl bXMgY2FuIGJlIG92ZXJyaWRlbiB3aXRoIHRoZSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBh dHRyaWJ1dGUuPC9wPgoKCTxwPlRoZSBzZWNvbmQgc3BlY2lhbCBmZWF0dXJlIG9mIGNvbGxh dGlvbiBtb2RlIGlzIHRoYXQgeW91IGRvIG5vdCBoYXZlIHRvIGFsd2F5cyBvdXRwdXQgdGhl IGVudGlyZSBsaXN0LiBZb3UgY2FuIGdyYWIgaW5kaXZpZHVhbCBlbnRpdGllcyBmcm9tIHdp dGhpbiB0aGUgaW50ZXJuYWwgYXJyYXkgYnkgdXNpbmcgdGhlICYjODIxNjsjJiM4MjE3OyBu b3RhdGlvbiB0aHVzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPntuYW1lfSBtaWdodCBvdXRwdXQgJnF1b3Q7aGVyb24uanBnJnF1b3Q7LCZxdW90O3Bl bmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcmcXVvdDssJnF1b3Q7cHVmZmluLmpwZyZx dW90OyAoYXMgYmVmb3JlKQoobmFtZSMxfSB3b3VsZCBvbmx5IG91dHB1dCBoZXJvbi5qcGcK KG5hbWUjM30gd291bGQgb25seSBvdXRwdXQgZW11LmpwZwo8L2NvZGU+PC9wcmU+CgoJPHA+ Tm90ZSB0aGF0IHdoZW4gcHVsbGluZyBvdXQgaW5kaXZpZHVhbCBlbnRyaWVzIHRoZXkgPHN0 cm9uZz5kbyBub3Q8L3N0cm9uZz4gZ2V0IHF1b3RlcyBhZGRlZCB0byB0aGVtLCByZWdhcmRs ZXNzIG9mIHdoZXRoZXIgeW91IHVzZWQgPGNvZGU+cXVvdGU8L2NvZGU+IG9yIG5vdC4gVGhp cyBpcyBiZWNhdXNlIGl0IGlzIGEgc2luZ2xlIGl0ZW0gc28geW91IGNhbiBlYXNpbHkgcHV0 IHRoZSBxdW90ZXMgaW4gdGhlIGZvcm0gaXRzZWxmICh2aXo6IDxjb2RlPiZxdW90O3tuYW1l fSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1lc3NpbmcgYXJvdW5kIHdpdGggcHVsbGluZyBv dXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlzdHMgY2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRl cmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mgc29tZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxl cmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBjb21iaW5pbmcgc21kX2dhbGxlcnkgdGFncyB3 aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBt aW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDMgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDM+ CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2UgdGhlIGNsYXNzaWMgem9vIHdlYnNpdGUuIExl dCYjODIxNztzIHNwZWNpZnkgc29tZSBwaWN0dXJlcyB0byBwdWxsIG91dCBvZiB0aGUgZGF0 YWJhc2U6PC9wPgoKCTxoNCBpZD0iZWcxIj5FeGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94 ZWQgZ2FsbGVyeTwvaDQ+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3Vi bGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhl IGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGluZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBw YXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxsZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZv ciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3VsZCBqdXN0IGJlIHRoaXM6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBjbGFzcz0mcXVvdDth bmltYWdlJnF1b3Q7IHNyYz0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVv dDsgLyZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDthY2FwdGlvbiZxdW90OyZndDt7dGl0bGV9 Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1lYW5zLCBmb3IgZXZlcnkg bWF0Y2hlZCBpbWFnZSwgc3Vic3RpdHV0ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4sIGFsdCBhbmQgdGl0bGUgdGFncyBpbnRvIHRoZSByZWxldmFudCBwbGFjZXMuIFRo dXMgeW91IGdldCBhIHNlcmllcyBvZiBpbWFnZXMgb24gdGhlIHBhZ2UsIHdoaWNoIHlvdSBj YW4gc3R5bGUgYWNjb3JkaW5nbHkuPC9wPgoKCTxwPkZvciBhIG1vcmUgZmFuY3kgb3V0cHV0 IHVzaW5nLCBzYXksIHNsaW1ib3gsIHlvdSBjb3VsZCBsb2FkIHRoZSByZWxldmFudCBsaWJy YXJpZXMgYW5kIHN0eWxlcyBpbiB0aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBvZiB5 b3VyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7 L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5 cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpbWJveC5q cyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hl ZXQmcXVvdDsgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyBocmVmPSZxdW90Oy9jc3Mvc2xp bWJveC5jc3MmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4geW91ciAmIzgy MTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVn b3J5fSZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90 OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7IGhlaWdodD0m cXVvdDt7aGVpZ2h0fSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGh9JnF1b3Q7Jmd0OwogJmx0 O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFn IHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBz aW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkg dGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBs aWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVw ZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVj dGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9n YWxsZXJ5LjwvcD4KCgk8aDQgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUg aW1hZ2U8L2g0PgoKCTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgy MjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdl IG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29y eT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVv dDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1 b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ Tm90ZSB0aGF0IHRoaXMgdGltZSB3ZSBhcmUgYWRkaW5nIHRvIHRoZSBnYWxsZXJ5IHRoZSBp bWFnZShzKSBwdWxsZWQgZnJvbSB0aGUgYXJ0aWNsZS1pbWFnZSBmaWVsZCBvZiB0aGUgY3Vy cmVudCBhcnRpY2xlLiBUaGUgZm9ybSB3aWxsIHVzZSB0aGUgc3BlY2lhbCA8Y29kZT57b2Jq ZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnLiBUaGUgcGx1Z2luIG9ubHkgZGlzcGxheXMg dGhpcyBwYXJ0IGlmIHRoZSB2YWx1ZSBvZiB0aHVtYmxpbWl0IGhhcyA8c3Ryb25nPm5vdDwv c3Ryb25nPiBiZWVuIHJlYWNoZWQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O2EgcmVsPSZxdW90O2xpZ2h0Ym94LXNtZCZxdW90OyBocmVmPSZx dW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OwogICAgIHRpdGxlPSZxdW90 O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0fSZxdW90 OyB3aWR0aD0mcXVvdDt7d2lkdGh9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5DaGFuZ2UgdGhlIHN0YXJ0IGltYWdlIGJ5IHNwZWNpZnlpbmcg PGNvZGU+dGh1bWJvZmZzZXQ8L2NvZGU+ICYjODIxMjsgbm90ZSB0aGlzIHdpbGwgYWxzbyBz dGFydCB0aGUgbGlnaHRib3ggZWZmZWN0IGZyb20gdGhlIGltYWdlIHlvdSBjaG9vc2UuIElm IHlvdSB3YW50IHRvIHN0YXJ0IG9uIGEgc3BlY2lmaWMgaW1hZ2UgaW4gcG9zaXRpb24gMSwg dXNlIHRoZSA8Y29kZT5pZDwvY29kZT4gYXR0cmlidXRlIHRvIGJyaW5nIGl0IHRvIHRoZSB0 b3Agb2YgdGhlIGxpc3QsIG9yIGNoYW5nZSB0aGUgc29ydCBvcmRlci48L3A+CgoJPHA+SWYg eW91IHdhbnRlZCB0byBsYXVuY2ggdGhlIGdhbGxlcnkgZnJvbSBhIHRleHQgbGluaywgbW9k aWZ5IHRoZSB0YWcgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFs cyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZx dW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0 PSZxdW90OzEmcXVvdDsKICAgICB0ZXh0PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94 JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDQgaWQ9ImVnMyI+RXhhbXBsZSAzOiBw b3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBhY2hpZXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRv IHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdlIGFuZCBjYXB0aW9uIHBsYWNlaG9sZGVyIG91 dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxlcnksIHRoZW4gaW5jbHVkZSB5b3VyIHNtZF9n YWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0aW1lIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQg aW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRoZSBjYXRlZ29yaWVzIHVwIHRvIHR3byBsZXZl bHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIHdoaWNoZXZlciBjYXRl Z29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPjo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZx dW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVvdDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAv Jmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxsY2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4m Z3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgc3VibGV2ZWw9JnF1b3Q7MiZxdW90OwogICAgIGNh dGVnb3J5PSZxdW90O2FuaW1hbHMsID9teV9jdXN0b21fZmllbGQmcXVvdDsKICAgICBmb3Jt PSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxs ZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vy cm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWdu ZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24g aW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9 JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91 c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5 Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7 ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNl JnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVvdDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgm IzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYjMzk7L2ltYWdlcy8xNy5qcGcmIzM5OzsKICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0aW9uJiMzOTspLmlubmVy SFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBmYWxzZTsmcXVvdDsmZ3Q7CiAgJmx0O2ltZyBz cmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsK Jmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGVyZSBhcmUgbXVjaCBuZWF0 ZXIgd2F5cyBvZiBkb2luZyB0aGlzIGFuZCBpdCYjODIxNztzIG5vdCByZWNvbW1lbmRlZCB0 byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBzaXRlLCBidXQgaXQgZ2l2ZXMgYSBmbGF2b3Vy IG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoKCTxoNCBpZD0iZWc0Ij5FeGFtcGxlIDQ6IHNs aWRlc2hvdzwvaDQ+CgoJPHA+VGhpcyBvbmUgdXNlcyBjb2xsYXRlIG1vZGUgYnV0IGlzIG5v dCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuIEluIHlvdXIgPGNvZGU+Jmx0 O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQm cXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZn dDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1 b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBm aXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogIGNvbWJvPSZxdW90O2ltZ2xp c3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0ZT0mcXVvdDtxdW90ZTp7aW1nbGlzdH06e2Fs dH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgYWxsIHBpY3R1 cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNoIGNhdGVnb3JpZXMuIEFsdGhvdWdoIHRlY2hu aWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJvIGhhcyBiZWVuIGRlZmluZWQgdG8gc2hvdyBo b3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29tYm8gaXMgY2FsbGVkIDxjb2RlPmltZ2xpc3Q8 L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRoZSBpbWFnZSYjODIxNztzIElEIG51bWJlciBw bHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0aGlzIGluIHRoZSBjb2xsYXRlIGF0dHJpYnV0 ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91YmxlIHF1b3RlcyByb3VuZCBldmVyeSBpdGVtIGlu ICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQgJiM4MjE2O2FsdCYjODIxNzsuIFRoZW4gd2Ug Y2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgbmVjZXNzYXJ5IGphdmFzY3JpcHQgdG8g Z2VuZXJhdGUgdGhlIHNsaWRlc2hvdzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3NsaWRlc2hvdyZxdW90OyBpZD0m cXVvdDtzbGlkZXNob3cxJnF1b3Q7Jmd0OwogJmx0O2ltZyBzcmM9JnF1b3Q7Jmx0O3R4cDpz aXRlX3VybCAvJmd0O2ltYWdlcy97aWQjMX0uanBnJnF1b3Q7CiAgICAgYWx0PSZxdW90O3th bHQjMX0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRoIzF9JnF1b3Q7IGhlaWdodD0mcXVvdDt7 aGVpZ2h0IzF9JnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZn dDsKbXlTaG93MSA9IG5ldyBTbGlkZXNob3coJnF1b3Q7c2xpZGVzaG93MSZxdW90OywKICB7 IGh1OiAmcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzLyZxdW90OywKICAgIGlt YWdlczogW3tpbWdsaXN0fV0sCiAgICBjYXB0aW9uczogW3thbHR9XSwKICAgIGNsYXNzZXM6 IFsmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O25leHQmcXVvdDssJnF1b3Q7YWN0aXZlJnF1b3Q7 XSwKICAgIHR5cGU6ICZxdW90O2ZhZGUmcXVvdDsKICB9KTsKJmx0Oy9zY3JpcHQmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgdGhlIGluaXRpYWwgcG9ydGlvbiAoaW4gdGhl IGRpdiBhbmQgaW1nIHRhZ3MpIHVzZXMgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiBi ZWNhdXNlIHdlIG9ubHkgd2FudCB0byBkaXNwbGF5IG9uZSBpbWFnZSB0byAmIzgyMjA7c3Rh cnQmIzgyMjE7IHRoZSBzbGlkZXNob3cuIEluIHRoaXMgY2FzZSB3ZSYjODIxNztyZSB1c2lu ZyB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIGxpc3QsIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUg IzEgZm9yICM0MiBpZiB5b3Ugd2FudGVkIHRvIHNob3cgdGhlIGZvcnR5LXNlY29uZCBpbWFn ZSBpbnN0ZWFkISBUaGUgcGFydCBpbiB0aGUgc2NyaXB0IHRhZyB1c2VzIHRoZSBmdWxsLCBx dW90ZWQgbGlzdHMgYmVjYXVzZSB0aGF0JiM4MjE3O3MgdGhlIGZvcm1hdCB0aGUgamF2YXNj cmlwdCByZXF1aXJlcy48L3A+CgoJPGg0IGlkPSJlZzUiPkV4YW1wbGUgNTogcGFnaW5hdGlv bjwvaDQ+CgoJPHA+VG8gYWRkIHBhZ2luZyB0byBhIGdhbGxlcnkgeW91IHVzZSB0aGUgPGNv ZGU+bGltaXQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBzaG93IGEgbnVtYmVyIG9mIHRodW1icyBw ZXIgcGFnZS4gRm9yIGEgcGFnZWQgdGh1bWJwb3AgZ2FsbGVyeSB0aGF0IHNob3dzIGZpdmUg dGh1bWJzIHBlciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFn ZXMvZW1wdHkuanBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9u JnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDthbmltYWxzJnF1b3Q7CiAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHBhZ2Vmb3Jt PSZxdW90O2dhbGxlcnlfbmF2JnF1b3Q7CiAgbGltaXQ9JnF1b3Q7NSZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhlICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGlzIGlk ZW50aWNhbCB0byB0aGUgb25lIGluIDxhIGhyZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4sIHdo aWxlIHlvdXIgZ2FsbGVyeV9uYXYgZm9ybSBtaWdodCBsb29rIGxpa2UgdGhpczo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZx dW90O3RvdGFsJnF1b3Q7Jmd0OyMgb2YgcGljczoge3RvdGFsaW1hZ2VzfSZsdDsvZGl2Jmd0 OwogICAgIHtuYXZmaXJzdH0ge25hdnByZXZ9CiAgICAge25hdmVhcmxpZXJ9IHtuYXZ0aGlz fSB7bmF2bGF0ZXJ9CiAgICAge25hdm5leHR9IHtuYXZsYXN0fQo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhhdCBtaWdodCByZW5kZXIgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhpcyBiZWxvdyB0 aGUgdGh1bWJzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiMgb2YgcGljczogMzgKICAgICBGaXJzdCAmbHQ7IDEgMiAzIDQgNSA2IDcgOCAmZ3Q7IExh c3QKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGVzOjwvcD4KCgk8dWw+CgkJPGxpPlVzZSB7bmF2 dGhpc3VybH0gaWYgeW91IHdhbnQgdGhlIGN1cnJlbnQgcGFnZSBoeXBlcmxpbmtlZDwvbGk+ CgkJPGxpPlRoZSBjdXJyZW50IGl0ZW0gYWx3YXlzIGhhcyBhIGNsYXNzIG9mICYjODIyMDtj dXJyZW50JiM4MjIxOzwvbGk+CgkJPGxpPlVzZSB0aGUgPGNvZGU+bmF2d3JhcHRhZzwvY29k ZT4sIDxjb2RlPm5hdmJyZWFrPC9jb2RlPiwgYW5kIDxjb2RlPm5hdmNsYXNzPC9jb2RlPiB0 YWcgYXR0cmlidXRlcyB0byBzcGVjaWZ5IGl0ZW1zIHRvIHdyYXAgYXJvdW5kIHRoZSBlbnRp cmUgcGFnZWZvcm0uIFRoZSBkZWZhdWx0cyBhcmU6IDxjb2RlPnVsPC9jb2RlPiwgPGNvZGU+ bGk8L2NvZGU+LCBhbmQgPGNvZGU+c21kX2dhbGxlcnlfbmF2PC9jb2RlPiByZXNwZWN0aXZl bHk8L2xpPgoJCTxsaT5Zb3UgY2FuIGxhYmVsIG5hdmZpcnN0LCBuYXZsYXN0LCBuYXZwcmV2 LCBuYXZuZXh0IGFuZCBuYXZ0aGlzIGJ5IHNwZWNpZnlpbmcgdGhlbSBsaWtlIHRoaXM6IDxj b2RlPntuYXZwcmV2OlByZXZpb3VzfTwvY29kZT4gKHRoZSAmIzgyMTY7OiYjODIxNzsgZGVs aW1pdGVyIGluIHRoaXMgY2FzZSBpcyB0aGUgaXRlbSBzcGVjaWZpZWQgYnkgcGFyYW1kZWxp bSk8L2xpPgoJCTxsaT5uYXZlYXJsaWVyIGFuZCBuYXZsYXRlciB3aWxsIGJ5IGRlZmF1bHQg c2hvdyBhbGwgcGFnZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUgY3VycmVudCBvbmUuIFlvdSBj YW4gb3ZlcnJpZGUgdGhpcyBieSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGFnZXMgeW91 IHdhbnQgdG8gc2hvdyBlaXRoZXIgc2lkZS4gZS5nLiBpZiB5b3Ugd2VyZSBvbiBwYWdlIDkg b2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZsYXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZs dDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAmZ3Q7Jmd0OzwvY29kZT48L2xpPgoJPC91bD4K Cgk8aDMgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMz4KCgk8cD5BbGwgYXZhaWxhYmxl IHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFyZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9u Zz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+MTQgRmViIDA4IHwgPGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4xLnR4dCI+ MC4xPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21k X2dhbGxlcnlfdjAuMV96aXAudHh0Ij5jb21wcmVzc2VkPC9hPiBdIHwgSW5pdGlhbCByZWxl YXNlICYjODIxMTsgSGFwcHkgVmFsZW50aW5lcyBEYXkgOi0pPC9saT4KCQk8bGk+MTkgRmVi IDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2Fs bGVyeV92MC4yLnR4dCI+MC4yPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMl96aXAudHh0Ij5jb21wcmVzc2VkPC9hPiBd IHwgQWRkZWQgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9w aWMucGhwP3BpZD0xNzI0NTkjcDE3MjQ1OSI+e2dhbGxlcnlpZH08L2E+ICh0aGFua3Mgcmxv YWRlcnJvKSBhbmQgc29tZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9u Zz5PZmZpY2lhbDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMy50 eHQiPjAuMzwvYT4gWyA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRz L3NtZF9nYWxsZXJ5X3YwLjNfemlwLnR4dCI+Y29tcHJlc3NlZDwvYT4gXSB8IE9mZmljaWFs IHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFkZGVkIHtj b3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyA8YSBocmVmPSJo dHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3MzQ5MCNw MTczNDkwIj5qYWtvYjwvYT4pPC9saT4KCQk8bGk+MTUgTWFyIDA4IHwgPGEgaHJlZj0iaHR0 cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMS50eHQiPjAu MzE8L2E+IFsgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRf Z2FsbGVyeV92MC4zMV96aXAudHh0Ij5jb21wcmVzc2VkPC9hPiBdIHwgRml4ZWQgYSBjb3Vw bGUgb2YgdW5kZWZpbmVkIGluZGV4ZXMgYW5kIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0 cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc0ODE4I3AxNzQ4MTgiPmFkZGVkIHtj YXRlZ29yeV90aXRsZX08L2E+ICh0aGFua3MgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRw YXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xNzQ4MjAjcDE3NDgyMCI+anN0dWJiczwv YT4pPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24u Y29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMi50eHQiPjAuMzI8L2E+IFsgPGEgaHJl Zj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMl96 aXAudHh0Ij5jb21wcmVzc2VkPC9hPiBdIHwgRml4ZWQgYW5vdGhlciA8YSBocmVmPSJodHRw Oi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk0NyNwMTc0 OTQ3Ij51bmRlZmluZWQgaW5kZXg8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4 dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk2MSNwMTc0OTYxIj5yZW1vdmVk IGJvZ3VzIGNhbGwgdG8gc21kX2xpYjwvYT4gKGJvdGggdGhhbmtzIHNlY3VuZGFyKTwvbGk+ Cgk8L3VsPgoKCTxoMyBpZD0iY3JlZGl0cyI+Q3JlZGl0czwvaDM+CgoJPHA+VGhpcyBwbHVn aW4gd291bGRuJiM4MjE3O3QgaGF2ZSBleGlzdGVkIHdpdGhvdXQgdGhlIGF3ZXNvbWUgbWlu ZCBvZiBSb2JlcnQgV2V0emxtYXlyLiBIaXMgd2V0X2Zvcl9lYWNoX2ltYWdlIHBsdWdpbiBp cyB0cnVlIGdlbml1czsgdGhpcyBzaW1wbHkgc3RhbmRzIG9uIHRoZSBzaG91bGRlcnMgb2Yg dGhhdCBpZGVhIGFuZCByb2xscyBpbiBhIHNvdXBlZCB1cCB2ZXJzaW9uIG9mIHRoZSB0aHVt Ym5haWwgZ2VuZXJhdGlvbiBlbmdpbmUgZnJvbSBzbWRfc2xpbWJveC4gVG8gdGhhdCBlbmQs IHRoZSBwbHVnaW4gaXMgYWxzbyBpbmRlYnRlZCB0byBhbnlvbmUgd2hvIGhhcyBwb3N0ZWQg ZmVhdHVyZXMgb3IgYnVnIHJlcG9ydHMgdG8gbWUgb3IgdGhlIHNtZF9zbGltYm94IHRocmVh ZC4gWW91JiM4MjE3O3JlIGFsbCBtYXJ2ZWxsb3VzLjwvcD4KCgk8cD48L2Rpdj48L3A+Cjwh LS0gLS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3Mi Pgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250 LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwg bW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUu YmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJh Y2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEw cHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBh OnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXIt Ym90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxw IGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29y YXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJv dHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9y Z2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21k X2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBw eCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0K I3NtZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fu cy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRy YW5zZm9ybTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFy aWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAw IDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBm b250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsg Ym9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjEwMCU7 IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQs ICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9 Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7 czozMjoiM2MzMDIyMTQwOWUzMDRlYzY3YmVhM2QxZGQ2NTRiYjMiO30=