# Name: smd_gallery v0.42 # 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 LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjQyIjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MjcwNjY6ImZ1bmN0aW9uIHNtZF9n 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 PT4gJycsDQoJCSdwYWdlcG9zJyA9PiAnYmVsb3cnLA0KCQknbmF2d3JhcHRhZycgPT4gJ3Vs JywNCgkJJ25hdmJyZWFrJyA9PiAnbGknLA0KCQknbmF2Y2xhc3MnID0+ICdzbWRfZ2FsbGVy eV9uYXYnLA0KCQknZW1wdHljbGFzcycgPT4gJ2VtcHR5JywNCgkJJ2dhbGxlcnlpZCcgPT4g Jz80OjYnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4gJycsDQoJCSdjbGFz cycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gJzAnLA0KCSksICRhdHRzKSk7DQoNCgkvLyBDYXRl Z29yeSByZWxpZXMgb24gd2hldGhlciBpZCBoYXMgYmVlbiBzcGVjaWZpZWQgb3Igbm90Lg0K CS8vIGxBdHRzKCkgd29uJ3QgbGV0IHVzIGhhbmRsZSB0aGlzIGxvZ2ljIHNvIGl0IGhhcyB0 byBiZSBkb25lIG1hbnVhbGx5DQoJJGF0dGVtcHRNYXRjaCA9IChlbXB0eSgkY2F0ZWdvcnkp ICYmIGVtcHR5KCRpZCkpID8gZmFsc2UgOiB0cnVlOw0KCSRjYXRlZ29yeSA9IGlzc2V0KCRj YXRlZ29yeSkgPyBkb1NsYXNoKCRjYXRlZ29yeSkgOiAoKCRpZD09JycpID8gJHByZXRleHRb J2MnXTogJycpOw0KDQoJLy8gSGFuZGxlIGZvcm1zIGFuZCBzZXQgYSBkZWZhdWx0IHRhZyBp ZiBub25lIHNwZWNpZmllZA0KCSR0aGluZyA9IChlbXB0eSgkZm9ybSkpID8gJHRoaW5nIDog ZmV0Y2hfZm9ybSgkZm9ybSk7DQoJJHRoaW5nID0gKGVtcHR5KCR0aGluZykpID8gJzxhIGhy ZWY9Int1cmx9IiBhbHQ9InthbHR9Ij48dHhwOmltYWdlIGlkPSJ7aWR9IiAvPjwvYT4nIDog JHRoaW5nOw0KDQoJLy8gUGFnaW5nIGluaXQNCgkkcGFnZVBvc0FsbG93ZWQgPSBhcnJheSgi YmVsb3ciLCAiYWJvdmUiKTsNCglpZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0K CQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gKGlu X2FycmF5KCRwYWdlcG9zLCAkcGFnZVBvc0FsbG93ZWQpKSA/ICRwYWdlcG9zIDogJHBhZ2VQ b3NBbGxvd2VkWzBdOw0KCX0NCg0KCS8vIFRodW1iY2hhbmdlIHZlcmlmaWNhdGlvbg0KCSR0 aHVtYmNoYW5nZSA9IGRvX2xpc3QoJHRodW1iY2hhbmdlLCAkZGVsaW0pOw0KCSRyZXNldE9w dHMgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCR0aHVtYmNoYW5nZSBhcyAkcmVzZXRPcHQpIHsN CgkJJHJlc2V0T3B0c1skcmVzZXRPcHRdID0gIiI7DQoJfQ0KDQoJLy8gVGhlIGdhbGxlcnkg aWRlbnRpZmllciBpcyB1c2VkIGZvciBrZWVwaW5nIHRyYWNrIG9mIG5leHQvcHJldiB0aHVt Ym5haWwgcGFnZSBsaW5rcw0KCSRnYWxsSUQgPSAnJzsNCglpZiAoJGdhbGxlcnlpZCA9PSAn JyB8fCBzdWJzdHIoJGdhbGxlcnlpZCwwLDEpID09ICI/Iikgew0KCQkvLyBHZW5lcmF0ZSBh IChmYWlybHkgbGlrZWx5KSB1bmlxdWUgSUQgZm9yIHRoaXMgZ2FsbGVyeSBpbnN0YW5jZQ0K CQkkZ2FsbFRtcCA9IG1kNSgkY2F0ZWdvcnkuJGlkLiRkaXJlY3RvcnkuJG1hdGNoLiRzdWJs ZXZlbC4kc29ydC4kbGltaXQuJG1heGxpbWl0KTsNCgkJbGlzdCgkZ2FsbExlbiwgJGdhbGxT a2lwKSA9IGV4cGxvZGUoIjoiLCBzdWJzdHIoJGdhbGxlcnlpZCwxKSk7DQoJCSRnYWxsTGVu ID0gIChlbXB0eSgkZ2FsbExlbikpID8gIjQiIDogJGdhbGxMZW47DQoJCSRnYWxsU2tpcCA9 ICAoZW1wdHkoJGdhbGxTa2lwKSkgPyAiMSIgOiAkZ2FsbFNraXA7DQoJCWZvciAoJGlkeCA9 IDAsICRjbnQgPSAwOyAkY250IDwgJGdhbGxMZW47ICRjbnQrKywgJGlkeCA9ICgoJGlkeCsk Z2FsbFNraXApICUgc3RybGVuKCRnYWxsVG1wKSkpIHsNCgkJCSRnYWxsSUQgLj0gJGdhbGxU bXBbJGlkeF07DQoJCX0NCgl9IGVsc2Ugew0KCQkkZ2FsbElEID0gJGdhbGxlcnlpZDsNCgl9 DQoJJGdhbGxJRCA9ICJzbWRfZ2xyeV8iLiRnYWxsSUQ7IC8vIEF2b2lkIChhbHJlYWR5IGlu Y3JlZGlibHkgdW5saWtlbHkpIG5hbWVzcGFjZSBjbGFzaGVzDQoNCgkvLyBTZXQgdXAgdGhl IHZhcmlhYmxlcyBmcm9tIHRoZSB0aHVtYiBvcHRpb24uDQoJLy8gRG9uJ3QgdXNlIHBhcmFt ZGVsaW0gaGVyZSBvciB0aGUgZGVmYXVsdCBvcHRpb24gYnJlYWtzDQoJJHRodW1iT3B0cyA9 IGRvX2xpc3QoJHRodW1iLCAiOiIpOw0KCWlmIChjb3VudCgkdGh1bWJPcHRzKSA9PSAxKSB7 DQoJCSRmdWxsbW9kID0gKCR0aHVtYk9wdHNbMF0gPT0gMSkgPyAidCIgOiAiIjsNCgkJJHRo dW1ibW9kID0gInQiOw0KCX0gZWxzZSB7DQoJCSRmdWxsbW9kID0gKCR0aHVtYk9wdHNbMF0g PT0gMSkgPyAidCIgOiAiIjsNCgkJJHRodW1ibW9kID0gKCR0aHVtYk9wdHNbMV0gPT0gMSkg PyAidCIgOiAiIjsNCgl9DQoNCgkvLyBUaGUgbWFubmVyIG9mIG9idGFpbmluZyBmaWxlcyBk aWZmZXJzIGlmIHVzaW5nIGRpcmVjdG9yeSB2cyBjYXRlZ29yeS9pZA0KCWlmICgkZGlyZWN0 b3J5KSB7DQoJCSRycyA9IGFycmF5KCk7DQoJCSRyc2FsbCA9IHNtZF9kb0RpcmVjdG9yeSgk ZGlyZWN0b3J5LCAwLCAkc3VibGV2ZWwsICRtYXRjaCwgJGRlbGltKTsNCgkJbGlzdCgkYWxs SW1hZ2VzLCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCkgPSBzbWRfZ2V0UGFnZSgk cnNhbGwsICRnYWxsSUQsICRsaW1pdCwgJG9mZnNldCwgJHBhZ2luZyk7DQoJCSRkaXJsaW1p dCA9ICgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0Ow0KCQkkcnMgPSBhcnJheV9z bGljZSgkcnNhbGwsICRvZmZzZXQsICRkaXJsaW1pdCk7DQoJCSRwb3N0T3JkZXIgPSBhcnJh eSgpOw0KCQkkZml4ZWRPcmRlciA9IDA7DQoJCSRyYW5kc29ydCA9IGZhbHNlOw0KCX0gZWxz ZSB7DQoJCS8vIFByb2Nlc3MgY2F0ZWdvcmllcy9JRHMgYW5kIG1ha2UgdXAgdGhlIGNydXgg b2YgdGhlIHdoZXJlIGNsYXVzZS4NCgkJLy8gQ2xhdXNlIG9yZGVyID0gSURzIE9SIGNhdHMg QU5EICFjYXRzIEFORCAhSURzDQoJCSRjbGF1c2VbXSA9ICcxPTEnOw0KCQkkY2xhdXNlT1Ig PSBhcnJheSgpOw0KDQoJCS8vIFN1cnJvdW5kIGVhY2ggZW50cnkgaW4gdGhlIElEIGxpc3Qg d2l0aCBxdW90ZXMgYW5kIG1ha2UgYW4gU1FMICJpbiIgbGlzdA0KCQkkc3ViaW5mbyA9ICgk c3VibGV2ZWwpID8gImltYWdlOiIuJHN1YmxldmVsIDogJyc7DQoJCWxpc3QoJGlkaW5jLCAk aWRleGMpID0gc21kX2RvTGlzdCgkaWQsIHRydWUsICcnLCB0cnVlLCAkZGVsaW0pOw0KCQls aXN0KCRjYXRpbmMsICRjYXRleGMpID0gc21kX2RvTGlzdCgkY2F0ZWdvcnksIGZhbHNlLCAk c3ViaW5mbywgdHJ1ZSwgJGRlbGltKTsNCgkJaWYgKCRpZGluYykgew0KCQkJJGNsYXVzZU9S W10gPSAndHhwX2ltYWdlLmlkIElOICgnLmltcGxvZGUoIiwiLCAkaWRpbmMpLicpJzsNCgkJ fQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSAndHhwX2ltYWdlLmNhdGVn b3J5IElOICgnLmltcGxvZGUoIiwiLCAkY2F0aW5jKS4nKSc7DQoJCX0NCgkJaWYgKCFlbXB0 eSgkY2xhdXNlT1IpKSB7DQoJCQkkY2xhdXNlW10gPSAnICgnLmltcGxvZGUoIiBPUiAiLCAk Y2xhdXNlT1IpLicpICc7DQoJCX0NCg0KCQkkY2xhdXNlID0gaW1wbG9kZSgiIEFORCAiLCAk Y2xhdXNlKTsNCgkJJGNsYXVzZSAuPSAoJGNhdGV4YykgPyAnIEFORCB0eHBfaW1hZ2UuY2F0 ZWdvcnkgTk9UIElOICgnLmltcGxvZGUoIiwiLCAkY2F0ZXhjKS4nKScgOiAnJzsNCgkJJGNs YXVzZSAuPSAoJGlkZXhjKSA/ICcgQU5EIHR4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9k ZSgiLCIsICRpZGV4YykuJyknIDogJyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRp b24gd2FzIGNob3NlbiBhbmQgdGhleSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNh dGVnb3J5IHRoYXQgc2hvdWxkIG5vdCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQg dGhlIHBsdWdpbiBkb2VzIHRoZSBleHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5n IGluIHRoZSBldmVudCBpdCBmaW5kcyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0x IiAmJiAkYXR0ZW1wdE1hdGNoKSB7DQoJICAJCSRjbGF1c2UgPSAndHhwX2ltYWdlLmNhdGVn b3J5ID0gInNtZF8nIC5tdF9yYW5kKCkuICciJzsNCgkJfQ0KDQoJCWlmICgkZGVidWcgPiAx KSB7DQoJCQllY2hvICIrKyBJTkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0K CQkJZG1wKCRpZGluYyk7DQoJCQlkbXAoJGlkZXhjKTsNCgkJCWRtcCgkY2F0aW5jKTsNCgkJ CWRtcCgkY2F0ZXhjKTsNCgkJfQ0KDQoJCS8vIENvbnZlcnQgdGhlIHNvcnQgaW50byBhIHZh bGlkIHNvcnRpbmcgaGllcmFyY2h5Lg0KCQkvLyBOb3RlIHRoYXQgcmFuZG9tIGlzIGEgc3Bl Y2lhbCBjYXNlIGFuZCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFwcGx5Og0KCQkvLyAgMSkgQW55 dGhpbmcgYXBwZWFyaW5nIGJlZm9yZSByYW5kb20gaXMgcGFzc2VkIHRvIHRoZSBkYXRhYmFz ZSBxdWVyeSBmb3Igb3JkZXJpbmcNCgkJLy8gIDIpIEFzIHNvb24gYXMgcmFuZG9tIGlzIGVu Y291bnRlcmVkLCB0aGUgcmVzdCBvZiB0aGUgc29ydCBzdHJpbmcgaXMgaWdub3JlZC4NCgkJ Ly8gICAgIFRoZSByZXN1bHRzZXQgd2lsbCBiZSBzb3J0ZWQgcmFuZG9tbHkgaW5zdGVhZA0K CQkvLyAgMykgSWYgcmFuZG9tIGFwcGVhcnMgZmlyc3QgaW4gdGhlIGxpc3QsIHRoZSBkYXRh IGlzIHJldHJpZXZlZCByYW5kb21seSB0aGVuIHRoZQ0KCQkvLyAgICAgcmVtYWluaW5nIG9w dGlvbnMgc29ydCB0aGUgcmVzdWx0c2V0DQoJCSRjbGF1c2VTb3J0ID0gYXJyYXkoKTsNCgkJ JHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRydWxlID0gInNxbCI7DQoJCSRwb3N0UHJlZml4 ID0gIlNPUlRfIjsNCgkJJGZpeGVkT3JkZXIgPSAkcmFuZHNvcnQgPSBmYWxzZTsNCgkJJHNv cnQgPSBkb19saXN0KCRzb3J0LCAkZGVsaW0pOw0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwg Y291bnQoJHNvcnQpOyAkaWR4KyspIHsNCgkJCSRzb3J0X2RpciA9IGV4cGxvZGUoJyAnLCAk c29ydFskaWR4XSk7DQoJCQkkZGlyZWN0aW9uID0gJGNvbFJlZiA9ICcnOw0KCQkJaWYgKGNv dW50KCRzb3J0X2RpcikgPD0gMSkgew0KCQkJCSRzb3J0X2RpclsxXSA9ICJhc2MiOw0KCQkJ fQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9k aXJbMV0gPT0gImRlc2MiKSA/ICcgZGVzYycgOiAnIGFzYyc7DQoJCQl9IGVsc2Ugew0KCQkJ CSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNjIikgPyAkcG9zdFByZWZpeC4n REVTQycgOiAkcG9zdFByZWZpeC4nQVNDJzsNCgkJCX0NCg0KCQkJc3dpdGNoICgkc29ydF9k aXJbMF0pIHsNCgkJCQljYXNlICdyYW5kb20nOg0KCQkJCQkkcnVsZSA9ICJwb3N0IjsNCgkJ CQkJaWYgKCRpZHggPT0gMCkgew0KCQkJCQkJJGNsYXVzZVNvcnRbXSA9ICdyYW5kKCknOw0K CQkJCQl9IGVsc2Ugew0KCQkJCQkJJHJhbmRzb3J0ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQli cmVhazsNCgkJCQljYXNlICdmaXhlZCc6DQoJCQkJCS8vICdmaXhlZCcgb25seSB3b3JrcyBv biBpZHMNCgkJCQkJJGZpeGVkT3JkZXIgPSAoJGlkID09ICcnKSA/IGZhbHNlIDogdHJ1ZTsN CgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJJGNvbFJlZiA9IGFycmF5X3NlYXJj aCgkc29ydF9kaXJbMF0sICRmaWVsZE1hcCk7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJaWYg KCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJGNs YXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0K CQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJ CQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sUmVmLCAic29ydCIgPT4gJGRp cmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoY291bnQoJGNs YXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZICcgLiBpbXBsb2Rl KCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCWVjaG8g IisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJCX0NCgkJLy8gVGhl IGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1wbG9kZSgiLCIsIGFy cmF5X2tleXMoJGZpZWxkTWFwKSk7DQoNCgkJLy8gVGltZSB0byBncmFiIHRoZSBtYXRjaGlu ZyByb3dzIGZyb20gdGhlIGRhdGFiYXNlDQoJCSRyc2FsbCA9IHNhZmVfcm93cygkZmllbGRz LCAndHhwX2ltYWdlJywgJGNsYXVzZSAuJyBMSU1JVCAnLiRvZmZzZXQuJywnLiRtYXhsaW1p dCk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQp ID0gc21kX2dldFBhZ2UoJHJzYWxsLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdp bmcpOw0KCQkkcnMgPSBzYWZlX3Jvd3MoJGZpZWxkcy4nLCB0eHBfY2F0ZWdvcnkudGl0bGUg QVMgY2F0ZWdvcnlfdGl0bGUnLCAndHhwX2ltYWdlLCB0eHBfY2F0ZWdvcnknLCAndHhwX2Nh dGVnb3J5Lm5hbWUgPSB0eHBfaW1hZ2UuY2F0ZWdvcnkgQU5EIHR4cF9jYXRlZ29yeS50eXBl PSJpbWFnZSIgQU5EICcgLiRjbGF1c2UgLicgTElNSVQgJyAuJG9mZnNldC4gJywnLiAoKCRs aW1pdD09MCkgPyAkbWF4bGltaXQgOiAkbGltaXQpKTsNCgl9DQoNCgkvLyBJcyBwb3N0LW9y ZGVyaW5nIHJlcXVpcmVkPyBEbyBpdA0KCWlmICgkcmFuZHNvcnQpIHsNCgkJc2h1ZmZsZSgk cnMpOw0KCX0gZWxzZSBpZiAoY291bnQoJHBvc3RPcmRlcikgPiAwKSB7DQoJCS8vIFRyYW5z bGF0ZSB0aGUgcm93cyBpbnRvIGNvbHVtbnMgdGhhdCBjYW4gYmUgc29ydGVkDQoJCWZvcmVh Y2goJHJzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJJGNvbF9pZFska2V5XSA9ICRyb3dbJ2lk J107DQoJCQkkY29sX25hbWVbJGtleV0gPSAkcm93WyduYW1lJ107DQoJCQkkY29sX2NhcHRp b25bJGtleV0gPSAkcm93WydjYXB0aW9uJ107DQoJCQkkY29sX2FsdFska2V5XSA9ICRyb3db J2FsdCddOw0KCQkJJGNvbF9jYXRlZ29yeVska2V5XSA9ICRyb3dbJ2NhdGVnb3J5J107DQoJ CQkkY29sX2RhdGVbJGtleV0gPSAkcm93WydkYXRlJ107DQoJCQkkY29sX2V4dFska2V5XSA9 ICRyb3dbJ2V4dCddOw0KCQkJJGNvbF9hdXRob3JbJGtleV0gPSAkcm93WydhdXRob3InXTsN CgkJCSRjb2xfd1ska2V5XSA9ICRyb3dbJ3cnXTsNCgkJCSRjb2xfaFska2V5XSA9ICRyb3db J2gnXTsNCgkJCSRjb2xfdGh1bWJuYWlsWyRrZXldID0gJHJvd1sndGh1bWJuYWlsJ107DQoJ CX0NCgkJLy8gTWFrZSB1cCBhbiBhcnJheV9tdWx0aXNvcnQgYXJnIGxpc3QgYW5kIGV4ZWN1 dGUgaXQNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRwb3N0T3JkZXIpOyAkaWR4 KyspIHsNCgkJCSRzb3J0YXJnc1tdID0gJyRjb2xfJy4kcG9zdE9yZGVyWyRpZHhdWydjb2wn XTsNCgkJCSRzb3J0YXJnc1tdID0gJHBvc3RPcmRlclskaWR4XVsnc29ydCddOw0KCQl9DQoJ CSRzb3J0aXQgPSAnYXJyYXlfbXVsdGlzb3J0KCcuaW1wbG9kZSgiLCAiLCRzb3J0YXJncyku JywgJHJzKTsnOw0KCQlldmFsKCRzb3J0aXQpOw0KCX0NCg0KCS8vIElzIGZpeGVkLW9yZGVy IG91dHB1dCBkZXNpcmVkPyBJZiBzbywgcmUtb3JkZXIgdGhlICRycw0KCWlmICgkZml4ZWRP cmRlcikgew0KCQkkb3JkZXJlZFJTID0gQXJyYXkoKTsNCgkJJGlnbm9yZUxpc3QgPSBBcnJh eSgpOw0KCQkkcmVtYWluaW5nUlMgPSBBcnJheSgpOw0KCQkvLyBTdWNrIG91dCB0aGUgZml4 ZWQgaXRlbXMgZmlyc3QNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRpZGluYyk7 ICRpZHgrKykgew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgiJyIuJHJv d1snaWQnXS4iJyIgPT0gJGlkaW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRy b3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCX0NCgkJCX0NCgkJ fQ0KCQkvLyBUYWNrIG9uIHRoZSByZW1haW5pbmcgcm93cw0KCQlmb3JlYWNoKCRycyBhcyAk cm93KSB7DQoJCQlpZiAoIWluX2FycmF5KCRyb3dbJ2lkJ10sICRpZ25vcmVMaXN0KSkgew0K CQkJCSRyZW1haW5pbmdSU1tdID0gJHJvdzsNCgkJCX0NCgkJfQ0KCQkkcnMgPSBhcnJheV9t ZXJnZSgkb3JkZXJlZFJTLCAkcmVtYWluaW5nUlMpOw0KCX0NCg0KCS8vIEhhbmRsZSB0aHVt YnNpemUgLSBvZiBsaW1pdGVkIHVzZSBub3cgYnV0IHN0aWxsIGF2YWlsYWJsZQ0KCSR0aHVt YldpZHRoID0gJHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRzID0gJHRodW1iSFVu aXRzID0gJyc7DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6ZXMgPSBkb19saXN0 KCR0aHVtYnNpemUsICRkZWxpbSk7DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0gMSkg ew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxhY2UoIlteMC05 XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlsw LTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhV bml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVs c2Ugew0KCQkJJHRodW1iV2lkdGggPSBlcmVnX3JlcGxhY2UoIlteMC05XSIsICcnLCAkdGh1 bWJTaXplc1swXSk7DQoJCQkkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxhY2UoIlteMC05XSIs ICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlswLTld IiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICgkdW5pdHMgPT0g JycgJiYgJHRodW1iV2lkdGggIT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQkJ JHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJ CQkkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhlaWdodCAhPSAnJykg PyAkdGh1bWJIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBDb2xsYXRpb24gZGVm ZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0dXJuZWQgaXRlbS4NCgkvLyBJbnN0 ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0IGF0IHRoZSBlbmQgKGl0ZW1zIG1h eSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJhY3RlZCBpZiByZXF1aXJlZCkNCgkv L1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNob3J0Y3V0IHRvIHNwZWNpZnkgdGhh dCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mgb2YgIzEsICMyLCAjMyBldGMpIGFy ZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsNCgkJJGRibFF1b3RlID0gJHNnbFF1 b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxhdGVPcHRzID0gZG9fbGlzdCgkY29s bGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxhdGVPcHRzIGFzICRvcHRpb24pIHsN CgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAkcGFyYW1kZWxpbSk7DQoJCQkkY29s VHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJCS8vIFN1cHBseWluZyAncXVvdGUn IG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZhbnQgYXJyYXksIGltcGx5aW5nICJB TEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlzd2l0Y2ggKCRjb2xUeXBlKSB7DQoJ CQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJCWNhc2UgInF1b3RlIjoNCgkJCQkJ JGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJ Ly8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmluYXRpb25zIG9mIHJlcGxhY2VtZW50 IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9LCAuLi4NCgkkY29tYm9zID0gYXJy YXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9IGRvX2xpc3QoJGNvbWJvLCAkZGVs aW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0RlZikgew0KCQkJbGlzdCgkZGVmUGFy dHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdEZWYsIGZhbHNlLCAnJywgZmFsc2Us ICRwYXJhbWRlbGltKTsNCgkJCSRkZWZOYW1lID0gInsiLmFycmF5X3NoaWZ0KCRkZWZQYXJ0 cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFtZV0gPSAkZGVmUGFydHNbMF07DQoJCX0NCgl9 DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNobyAiKysgQ09NQk9zICsrIjsNCgkJZG1wKCRj b21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3QgdGhlIG91dHB1dA0KCSRvdXQgPSBhcnJheSgp Ow0KCSRjb2xsYXRpb25zID0gYXJyYXkoKTsNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hv ICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJfQ0KCWlmICgkZGVidWcgPiAz KSB7DQoJCWVjaG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyArKyI7DQoJCWRtcCgkcHJldGV4 dCk7DQoJCWRtcCgkdGhpc2FydGljbGUpOw0KCX0NCg0KCWlmKCRycykgew0KCQkkaWR4ID0g MDsNCgkJJGN0ciA9IDE7DQoJCSR0aHVtYklkeCA9IDA7DQoJCSR0aHVtYkN0ciA9IDE7DQoJ CSRudW1JbWFnZXMgPSBjb3VudCgkcnMpOw0KCQkkcmVwYWdlbWVudHMgPSBhcnJheSgpOw0K CQkkbmF2b3V0ID0gYXJyYXkoKTsNCg0KCQkvLyBTZXQgdXAgdGhlIHBhZ2luZyBmZWF0dXJl cyBpZiByZXF1aXJlZA0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJCSRu ZXh0ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlICE9ICRudW1QYWdlcyk7DQoJCQkk cHJldiA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSA+IDEpOw0KDQoJCQkvLyBSZXBs YWNlIGFueSBwYWdpbmcgaW5mbyBpbiB0aGUgcXVlcnkgc3RyaW5nDQoJCQkkcHJldlBhZ2Ug PSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVt UGFnZS0xKTsNCgkJCSRuZXh0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVz dF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlKzEpOw0KCQkJJHRoaXNQYWdlID0gc21kX2Fk ZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UpOw0K CQkJJGZpcnN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwg JGdhbGxJRCwgMSk7DQoJCQkkbGFzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsICRudW1QYWdlcyk7DQoNCgkJCS8vIExhYmVscyBjYW4g YmUgc3BlY2lmaWVkIGluIHRoZSByZXBsYWNlbWVudCB0YWcgYWZ0ZXIgYSBwYXJhbWRlbGlt Lg0KCQkJLy8gJ2VhcmxpZXInIGFuZCAnbGF0ZXInIGRvbid0IGhhdmUgbGFiZWxzLiBBbnl0 aGluZyBzcGVjaWZpZWQgYWZ0ZXIgcGFyYW1kZWxpbSBpcyB0aGUgbWF4IG51bWJlciBvZiBw YWdlcyB0byBzaG93OyBlbXB0eSA9IGFsbCBwYWdlcw0KCQkJJGxhYmVsID0gYXJyYXkoDQoJ CQkJCSd7bmF2Zmlyc3R9JyA9PiAnRmlyc3QnLA0KCQkJCQkne25hdnByZXZ9JyA9PiAnJmxh cXVvOycsDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICcnLA0KCQkJCQkne25hdnRoaXN9JyA9 PiAkdGh1bVBhZ2UsDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+ICR0aHVtUGFnZSwNCgkJCQkJ J3tuYXZsYXRlcn0nID0+ICcnLA0KCQkJCQkne25hdm5leHR9JyA9PiAnJnJhcXVvOycsDQoJ CQkJCSd7bmF2bGFzdH0nID0+ICdMYXN0JywNCgkJCQkpOw0KDQoJCQkkbGFiZWxSRSA9ICcv XHsobmF2W2Etel0rKScuJHBhcmFtZGVsaW0uJyguKz8pXH0vJzsNCgkJCSRudW1MYWJlbHMg PSBwcmVnX21hdGNoX2FsbCgkbGFiZWxSRSwgJHBhZ2Vmb3JtLCAkbGFiZWxzKTsNCg0KCQkJ Zm9yICgkbGFiZWxDdHIgPSAwOyAkbGFiZWxDdHIgPCAkbnVtTGFiZWxzOyAkbGFiZWxDdHIr Kykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9JzsN CgkJCQkkbGFiZWxbJGZpZWxkbmFtZV0gPSAkbGFiZWxzWzJdWyRsYWJlbEN0cl07DQoJCQkJ JHBhZ2Vmb3JtID0gc3RyX3JlcGxhY2UoJGxhYmVsc1swXVskbGFiZWxDdHJdLCAneycuJGxh YmVsc1sxXVskbGFiZWxDdHJdLid9JywgJHBhZ2Vmb3JtKTsNCgkJCX0NCg0KCQkJaWYgKCRk ZWJ1ZyA+IDEpIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgTEFCRUxTICsrIjsNCgkJCQlkbXAo JGxhYmVsKTsNCgkJCX0NCg0KCQkJLy8gR2VuZXJhdGUgJ2VhcmxpZXInIGFuZCAnbGF0ZXIn IGxpc3RzDQoJCQkkbnVtRWFybGllciA9IGludHZhbCgkbGFiZWxbJ3tuYXZlYXJsaWVyfSdd KTsNCgkJCSRudW1MYXRlciA9IGludHZhbCgkbGFiZWxbJ3tuYXZsYXRlcn0nXSk7DQoJCQkk bnVtRWFybGllciA9ICgkbnVtRWFybGllciAmJiAoJHRodW1QYWdlLSRudW1FYXJsaWVyID4g MSkpID8gJG51bUVhcmxpZXIgOiAkdGh1bVBhZ2UtMTsNCgkJCSRudW1MYXRlciA9ICgkbnVt TGF0ZXIgJiYgKCR0aHVtUGFnZSskbnVtTGF0ZXIgPCAkbnVtUGFnZXMpKSA/ICRudW1MYXRl ciA6ICRudW1QYWdlcy0kdGh1bVBhZ2U7DQoJCQkkbmF2RWFybGllciA9ICRuYXZMYXRlciA9 IGFycmF5KCk7DQoJCQlmb3IgKCRpZHggPSAkdGh1bVBhZ2UtJG51bUVhcmxpZXI7ICRpZHgg PCAkdGh1bVBhZ2U7ICRpZHgrKykgew0KCQkJCSRuYXZFYXJsaWVyW10gPSAnPGEgaHJlZj0i Jy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICRpZHgp LiciPicuJGlkeC4nPC9hPic7DQoJCQl9DQoJCQlmb3IgKCRpZHggPSAkdGh1bVBhZ2UrMTsg JGlkeCA8PSAkdGh1bVBhZ2UrJG51bUxhdGVyOyAkaWR4KyspIHsNCgkJCQkkbmF2TGF0ZXJb XSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwg JGdhbGxJRCwgJGlkeCkuJyI+Jy4kaWR4Lic8L2E+JzsNCgkJCX0NCgkJCSRuYXZFYXJsaWVy ID0gZG9XcmFwKCRuYXZFYXJsaWVyLCAnJywgJG5hdmJyZWFrLCAnJyk7DQoJCQkkbmF2TGF0 ZXIgPSBkb1dyYXAoJG5hdkxhdGVyLCAnJywgJG5hdmJyZWFrLCAnJyk7DQoNCgkJCS8vIE1h a2UgdXAgdGhlIHJlcGFnZW1lbnRzIGFycmF5IGZvciBwYWdlZm9ybQ0KCQkJJHJlcGFnZW1l bnRzID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAoKCRwcmV2KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRmaXJzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZmaXJzdH0nXS4nPC9hPics ICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZmaXJzdH0nXSwgJG5hdmJyZWFrLCAk ZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnByZXZ9JyA9PiAoKCRwcmV2KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRwcmV2UGFnZS4nIj4nLiRsYWJlbFsne25hdnByZXZ9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2cHJldn0nXSwgJG5hdmJyZWFrLCAkZW1w dHljbGFzcykpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAkbmF2RWFybGllciwNCgkJCQkJ J3tuYXZ0aGlzfScgPT4gZG9UYWcoJGxhYmVsWyd7bmF2dGhpc30nXSwgJG5hdmJyZWFrLCAn Y3VycmVudCAnLiRlbXB0eWNsYXNzKSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScgPT4gZG9UYWco JzxhIGhyZWY9IicuJHRoaXNQYWdlLiciPicuJGxhYmVsWyd7bmF2dGhpc3VybH0nXS4nPC9h PicsICRuYXZicmVhaywgJ2N1cnJlbnQnKSwNCgkJCQkJJ3tuYXZsYXRlcn0nID0+ICRuYXZM YXRlciwNCgkJCQkJJ3tuYXZuZXh0fScgPT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0i Jy4kbmV4dFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZuZXh0fSddLic8L2E+JywgJG5hdmJyZWFr KSA6IGRvVGFnKCRsYWJlbFsne25hdm5leHR9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3Mp KSwNCgkJCQkJJ3tuYXZsYXN0fScgPT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0iJy4k bGFzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZsYXN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6 IGRvVGFnKCRsYWJlbFsne25hdmxhc3R9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3MpKSwN CgkJCQkJJ3tuYXZ0aGlzcGFnZXVybH0nID0+ICR0aGlzUGFnZSwNCgkJCQkJJ3tuYXZuZXh0 cGFnZXVybH0nID0+ICRuZXh0UGFnZSwNCgkJCQkJJ3tuYXZwcmV2cGFnZXVybH0nID0+ICRw cmV2UGFnZSwNCgkJCQkJJ3tuYXZmaXJzdHBhZ2V1cmx9JyA9PiAkZmlyc3RQYWdlLA0KCQkJ CQkne25hdmxhc3RwYWdldXJsfScgPT4gJGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1hZ2Vz fScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0K CQkJCQkne21heGltYWdlc30nID0+ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8vIFBl cmZvcm0gdGhlIHN1YnN0aXR1dGlvbnMNCgkJCQkkbmF2b3V0W10gPSBwYXJzZShzdHJ0cigk cGFnZWZvcm0sICRyZXBhZ2VtZW50cykpOw0KDQoJCQkJLy8gQWRkIHRoZSBwYWdpbmcgdG8g dGhlIG91dHB1dCBpZiBpdCdzIHRvIGdvIGFib3ZlIHRoZSB0aHVtYnMNCgkJCQlpZiAoJHBh Z2Vwb3MgPT0gImFib3ZlIikgew0KCQkJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91dCwgJG5h dndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQkJCX0NCgkJfQ0KDQoJCS8vIEZvciBldmVy eSBpbWFnZSBpbiB0aGUgZ2FsbGVyeS4uLg0KCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJ CQlpZiAoJGRpcmVjdG9yeSkgew0KCQkJCSR1cmxQYXRoID0gJHJvd1sncGF0aCddLicvJzsN CgkJCX0gZWxzZSB7DQoJCQkJJHVybFBhdGggPSBodS4kaW1nX2Rpci4nLyc7DQoJCQl9DQoJ CQkkdGhlVGh1bWIgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93 WydleHQnXTsNCgkJCSRmdWxsU2l6ZSA9ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICRmdWxs bW9kIC4kcm93WydleHQnXTsNCg0KCQkJLy8gRG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGh1 bWIgY291bnRlciB0aGlzIHRpbWU/DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNl dE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNl dFZhbCkgew0KCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkkdGh1bWJDdHIgPSAxOw0KCQkJ CQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3Qg cmVxdWlyZWQgdGhpcyB0aW1lPw0KCQkJJG9iamVjdCA9ICcnOw0KCQkJaWYgKCR0aHVtYklk eCA+PSAkdGh1bWJvZmZzZXQgJiYgJHRodW1iSWR4IDwgJHRodW1ib2Zmc2V0KyR0aHVtYmxp bWl0KSB7DQoJCQkJc3dpdGNoICgkdHlwZSkgew0KCQkJCQljYXNlICdpbWFnZSc6DQoJCQkJ CQkkb2JqZWN0ID0gKCR0ZXh0KSA/ICR0ZXh0IDogJzxpbWcgc3JjPSInLiR0aGVUaHVtYi4n IicgLigoJHJvd1snYWx0J10pID8gJyBhbHQ9IicuJHJvd1snYWx0J10uJyInIDogJycpIC4o KCR0aHVtYldpZHRoKSA/ICcgd2lkdGg9IicuJHRodW1iV2lkdGguJHRodW1iV1VuaXRzLici JyA6ICcnKSAuKCgkdGh1bWJIZWlnaHQpID8gJyBoZWlnaHQ9IicuJHRodW1iSGVpZ2h0LiR0 aHVtYkhVbml0cy4nIicgOiAnJykgLicgLz4nOw0KCQkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJ fQ0KDQoJCQkvLyBDb25zdHJ1Y3QgdGhlIHJlcGxhY2VtZW50IGFycmF5DQoJCQkkcmVwbGFj ZW1lbnRzID0gYXJyYXkoDQoJCQkJCSd7aWR9JyA9PiAkcm93WydpZCddLA0KCQkJCQkne25h bWV9JyA9PiAkcm93WyduYW1lJ10sDQoJCQkJCSd7ZXh0fScgPT4gJHJvd1snZXh0J10sDQoJ CQkJCSd7Y2F0ZWdvcnl9JyA9PiAkcm93WydjYXRlZ29yeSddLA0KCQkJCQkne2NhdGVnb3J5 X3RpdGxlfScgPT4gJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSwNCgkJCQkJJ3thdXRob3J9JyA9 PiAkcm93WydhdXRob3InXSwNCgkJCQkJJ3toYXN0aHVtYn0nID0+ICRyb3dbJ3RodW1ibmFp bCddLA0KCQkJCQkne3VybH0nID0+ICRmdWxsU2l6ZSwNCgkJCQkJJ3t0aHVtYnVybH0nID0+ ICR0aGVUaHVtYiwNCgkJCQkJJ3tpbWFnZXBhdGh9JyA9PiAkdXJsUGF0aCwNCgkJCQkJJ3tp bWFnZWRlZn0nID0+IGJhc2VuYW1lKCRmdWxsU2l6ZSksDQoJCQkJCSd7dGh1bWJkZWZ9JyA9 PiBiYXNlbmFtZSgkdGhlVGh1bWIpLA0KCQkJCQkne2FsdH0nID0+ICRyb3dbJ2FsdCddLA0K CQkJCQkne3RpdGxlfScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJCQkne3RodW1id2lkdGh9 JyA9PiAkdGh1bWJXaWR0aCwNCgkJCQkJJ3t0aHVtYmhlaWdodH0nID0+ICR0aHVtYkhlaWdo dCwNCgkJCQkJJ3t0aHVtYnd1bml0c30nID0+ICR0aHVtYldVbml0cywNCgkJCQkJJ3t0aHVt Ymh1bml0c30nID0+ICR0aHVtYkhVbml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ICRyb3dbJ3cn XSwNCgkJCQkJJ3toZWlnaHR9JyA9PiAkcm93WydoJ10sDQoJCQkJCSd7ZGF0ZX0nID0+ICRy b3dbJ2RhdGUnXSwNCgkJCQkJJ3tvYmplY3R9JyA9PiAkb2JqZWN0LA0KCQkJCQkne2dhbGxl cnlpZH0nID0+ICRnYWxsSUQsDQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkne2Nv dW50ZXJ9JyA9PiAkY3RyLA0KCQkJCQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgsDQoJ CQkJCSd7dGh1bWJjb3VudGVyfScgPT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1hZ2Vz fScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0K CQkJCSk7DQoNCgkJCS8vIEFwcGVuZCBhbnkgY2hhbmdlZCBpdGVtcyB0aGF0IGFyZSByZXF1 aXJlZA0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFs KSB7DQoJCQkJJHJlcGxhY2VtZW50c1sne2NoYW5nZWQnLiRwYXJhbWRlbGltLiRyZXNldE9w dC4nfSddID0gKCRyb3dbJHJlc2V0T3B0XSAhPSAkcmVzZXRWYWwpID8gZG9UYWcoJHJvd1sk cmVzZXRPcHRdLCAkdGh1bWJjaGFuZ2V3cmFwdGFnLCAkdGh1bWJjaGFuZ2VjbGFzcykgOiAn JzsNCgkJCX0NCg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21i b3MgYXMgJGRlZk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0 cygkZGVmTmFtZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVm TmFtZV0gPSBzdHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoN CgkJCS8vIFNvbG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJl IGRldGFpbHMgZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9u DQoJCQkvLyBtb2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5 IG9uIGFuIGFzLW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUg PSAnL1x7KFthLXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19t YXRjaF9hbGwoJHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9 IDA7ICRzb2xvQ3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFt ZSA9ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZp ZWxkID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNb JGZpZWxkbmFtZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkv LyBBZGQgdGhlIG5hdmlnYXRpb24gaXRlbXMgaWYgdGhleSdyZSBkZWZpbmVkDQoJCQlpZiAo Y291bnQoJHJlcGFnZW1lbnRzKSA+IDApIHsNCgkJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXlf bWVyZ2UoJHJlcGFnZW1lbnRzLCAkcmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJaWYgKCRk ZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgOiBJTUFHRSAiLiRjdHIu IiArKyI7DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJCQkvLyBJbiBjb2xs YXRlIG1vZGUgdGhlIGZvcm0gaXMgb25seSBwYXJzZWQgYXQgdGhlIGVuZDogYnVpbGQgYSBj b2xsb3NhbCBtdWx0aS1kaW1lbnNpb24gYXJyYXkgb2YgYWxsIGl0ZW1zIGhlcmUNCgkJCWlm ICgkY29sbGF0ZSkgew0KCQkJCWZvcmVhY2ggKCRyZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUg PT4gJGRlZlZhbCkgew0KCQkJCQkkY29sbGF0aW9uc1skZGVmTmFtZV1bXSA9ICRkZWZWYWw7 DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkb3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcs ICRyZXBsYWNlbWVudHMpKTsNCgkJCX0NCg0KCQkJLy8gS2VlcCB0cmFjayBvZiB0aGUgY3Vy cmVudCB2YWx1ZXMgc28gd2Uga25vdyBpZiB0aGV5IGNoYW5nZSBuZXh0IHRpbWUNCgkJCWZv cmVhY2ggKCRyZXNldE9wdHMgYXMgJHJlc2V0T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCSRy ZXNldE9wdHNbJHJlc2V0T3B0XSA9ICRyb3dbJHJlc2V0T3B0XTsNCgkJCX0NCgkJCSR0aHVt YklkeCsrOw0KCQkJJHRodW1iQ3RyKys7DQoJCQkkaWR4Kys7DQoJCQkkY3RyKys7DQoJCX0N CgkJaWYgKCRjb2xsYXRlKSB7DQoJCQlmb3JlYWNoICgkY29sbGF0aW9ucyBhcyAkaXRlbSA9 PiAkbGlzdCkgew0KCQkJCS8vIFF1b3RlIHRoZSBsaXN0cyBpZiByZXF1aXJlZA0KCQkJCSRs aXN0ID0gKGVtcHR5KCRkYmxRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRkYmxRdW90ZSkp ID8gZG9BcnJheSgkbGlzdCwgJ3NtZF9kb0RibFF1b3RlJykgOiAkbGlzdDsNCgkJCQkkbGlz dCA9IChlbXB0eSgkc2dsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkc2dsUXVvdGUpKSA/ IGRvQXJyYXkoJGxpc3QsICdkb1F1b3RlJykgOiAkbGlzdDsNCgkJCQkkY29sbGF0aW9uc1sk aXRlbV0gPSBpbXBsb2RlKCRkZWxpbSwgJGxpc3QpOw0KCQkJfQ0KCQkJaWYgKCRkZWJ1ZyA+ IDApIHsNCgkJCQllY2hvICIrKyBDT0xMQVRJT05TICsrIjsNCgkJCQlkbXAoJGNvbGxhdGlv bnMpOw0KCQkJfQ0KCQkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAkY29sbGF0aW9u cykpOw0KCQl9DQoNCgkJLy8gVGFjayBvbiB0aGUgcGFnaW5nIGZyb20gZWFybGllciBpZiBp dCdzIHRvIGdvIGFmdGVyd2FyZHMNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7 DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBMQUNFTUVO VFMgKysiOw0KCQkJCWRtcCgkcmVwYWdlbWVudHMpOw0KCQkJfQ0KCQkJaWYgKCRwYWdlcG9z ID09ICJiZWxvdyIpIHsNCgkJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91dCwgJG5hdndyYXB0 YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQkJfQ0KCQl9DQoNCgkJaWYgKCRkZWJ1ZyA+IDIpIHsN CgkJCWVjaG8gIisrIEZJTkFMIE9VVFBVVCArKyI7DQoJCQlkbXAoJG91dCk7DQoJCX0NCgl9 DQoNCglyZXR1cm4gZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7DQp9 DQoNCi8vIFJldHVybiBhbiBleHBhbmRlZCBsaXN0IG9mIGl0ZW1zOg0KLy8gMSkgQW55dGhp bmcgY29udGFpbmluZyAnPycgb3IgJyEnIGlzIGNoZWNrZWQgZm9yIGEgbWF0Y2ggd2l0aCBh IFRYUCBmaWVsZA0KLy8gMikgQW55IHJhbmdlcyBvZiBpdGVtcyBhcmUgZXhwYW5kZWQgKGUu Zy4gNC03ID0gNCw1LDYsNykNCi8vIDMpIFRYUCBmaWVsZHMgbWF5IHRoZW1zZWx2ZXMgYmUg bGlzdHMgb3IgcmFuZ2VzDQovLyA0KSBBbnl0aGluZyB0aGF0IGlzIG5vdCBhIFRYUCBmaWVs ZCBpcyB1c2VkIHZlcmJhdGltDQovLyA1KSBUaGUgaXRlbXMgYXJlIHJldHVybmVkIGFzIDIg bGlzdHM7IGluY2x1c2lvbiBhbmQgZXhjbHVzaW9uDQovLyBBcmdzOg0KLy8gIGxzdCA9IHRo ZSBsaXN0IGFzIGEgZGVsaW1pdGVkIHN0cmluZw0KLy8gIHJuZyA9IHdoZXRoZXIgdG8gYWxs b3cgcmFuZ2VzIG9yIG5vdCAoYm9vbCkNCi8vICBzdWIgPSB0aGUgdHlwZSBvZiBzdWJjYXRl Z29yeSB0byB0cmF2ZXJzZSAoaW1hZ2UsIGZpbGUsIGxpbmssIGFydGljbGUsIG5vbmU9IiIp IGFuZCBob3cgbWFueSBsZXZlbHMgdG8gZ28gZG93biAoZS5nLiBpbWFnZToyKQ0KLy8gIHF0 ZSA9IHdoZXRoZXIgdG8gcXVvdGUgZWFjaCBpdGVtIGluIHRoZSBhcnJheSBvciBub3QgKGJv b2wpDQovLyAgZGxtID0gdGhlIGRlbGltaXRlciAoc3RyaW5nKQ0KaWYgKCFmdW5jdGlvbl9l eGlzdHMoInNtZF9kb0xpc3QiKSkgew0KZnVuY3Rpb24gc21kX2RvTGlzdCgkbHN0LCAkcm5n PXRydWUsICRzdWI9IiIsICRxdGU9dHJ1ZSwgJGRsbT0iLCIpIHsNCglnbG9iYWwgJHRoaXNh cnRpY2xlLCAkcHJldGV4dDsNCg0KCSRpbmMgPSAkZXhjID0gYXJyYXkoKTsNCgkkbHN0ID0g ZG9fbGlzdCgkbHN0LCAkZGxtKTsNCgkkbW9kUkUgPSAnLyhcP3xcISkoW0EtWmEtejAtOV9c LSBdKykvJzsNCglmb3JlYWNoICgkbHN0IGFzICRpdGVtKSB7DQoJCSRtb2QgPSAwOyAvLyAw ID0gaW5jbHVkZSwgMSA9IGV4Y2x1ZGUNCgkJJG51bU1vZHMgPSBwcmVnX21hdGNoX2FsbCgk bW9kUkUsICRpdGVtLCAkbW9kcyk7DQoNCgkJZm9yICgkbW9kQ3RyID0gMDsgJG1vZEN0ciA8 ICRudW1Nb2RzOyAkbW9kQ3RyKyspIHsNCgkJCS8vIG1vZCAidHlwZSIgaXMgZ292ZXJuZWQg YnkgdGhlIGZpcnN0IG9uZSBmb3VuZCBvbmx5LiBpLmUuIGlmICJhcnRpY2xlLT9jIXMiIHdh cyB1c2VkIGluIG9uZSBmaWVsZA0KCQkJLy8gaXQgd291bGQgYmUgYW4gImluY2x1ZGUiIG9m IHRoZSB3b3JkICJhcnRpY2xlLSIgcGx1cyB0aGUgY2F0ZWdvcnkgYW5kIHNlY3Rpb24gY29u Y2F0ZW5hdGVkDQoJCQkkbW9kID0gKCRtb2RzWzFdWzBdID09PSAiISIpID8gMSA6IDA7DQoJ CQkkbW9kQ2hhciA9ICRtb2RzWzFdWyRtb2RDdHJdOw0KCQkJJG1vZEl0ZW0gPSB0cmltKCRt b2RzWzJdWyRtb2RDdHJdKTsNCgkJCSRsb3dpdGVtID0gc3RydG9sb3dlcigkbW9kSXRlbSk7 DQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkbG93aXRlbSwgJHByZXRleHQpKSB7DQoJCQkJ JGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHByZXRleHRbJGxvd2l0 ZW1dLCAkaXRlbSk7DQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskbG93aXRl bV0pKSB7DQoJCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRo aXNhcnRpY2xlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQkJfSBlbHNlIHsNCgkJCQkkaXRlbSA9 IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkbW9kSXRlbSwgJGl0ZW0pOw0KCQkJ fQ0KCQl9DQoNCgkJLy8gSGFuZGxlIHJhbmdlcyBvZiB2YWx1ZXMNCgkJaWYgKCRybmcgJiYg cHJlZ19tYXRjaCgnL14oXGQrKVwtKFxkKykkLycsICRpdGVtKSkgew0KCQkJbGlzdCgkbG8s ICRoaSkgPSBleHBsb2RlKCItIiwgJGl0ZW0sIDIpOw0KCQkJJGl0ZW0gPSBpbXBsb2RlKCRk bG0sIHJhbmdlKCRsbywgJGhpKSk7DQoJCX0NCg0KCQkvLyBJdGVtIG1heSBiZSBlbXB0eTsg aWdub3JlIGl0IGlmIHNvDQoJCWlmICgkaXRlbSkgew0KCQkJJGl0ZW0gPSBkb19saXN0KCRp dGVtLCAkZGxtKTsNCgkJCS8vIEhhbmRsZSBzdWItY2F0ZWdvcmllcw0KCQkJaWYgKCRzdWIp IHsNCgkJCQlsaXN0KCRzdWJ0eXBlLCAkbGV2ZWwpID0gZXhwbG9kZSgiOiIsICRzdWIpOw0K CQkJCSRsZXZlbCA9IChlbXB0eSgkbGV2ZWwpKSA/IDAgOiAkbGV2ZWw7DQoJCQkJJGxldmVs ID0gKHN0cnRvbG93ZXIoJGxldmVsKT09ImFsbCIpID8gOTk5OTkgOiAkbGV2ZWw7DQoJCQkJ Zm9yZWFjaCAoJGl0ZW0gYXMgJGNhdCkgew0KCQkJCQkkY2F0cyA9IGdldFRyZWUoZG9zbGFz aCgkY2F0KSwgJHN1YnR5cGUpOw0KCQkJCQlmb3JlYWNoICgkY2F0cyBhcyAkamR4ID0+ICR2 YWwpIHsNCgkJCQkJCWlmICgkY2F0c1skamR4XVsnbGV2ZWwnXSA8PSAkbGV2ZWwpIHsNCgkJ CQkJCQkkaXRlbVtdID0gJGNhdHNbJGpkeF1bJ25hbWUnXTsNCgkJCQkJCX0NCgkJCQkJfQ0K CQkJCX0NCgkJCX0NCg0KCQkJLy8gUXVvdGUgaWYgYXNrZWQNCgkJCSRpdGVtID0gKCRxdGUp ID8gZG9BcnJheSgkaXRlbSwgJ2RvUXVvdGUnKSA6ICRpdGVtOw0KCQkJaWYgKCRtb2QgPT09 IDApIHsNCgkJCQkkaW5jID0gYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRpbmMsICRpdGVt KSk7DQoJCQl9IGVsc2Ugew0KCQkJCSRleGMgPSBhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2Uo JGV4YywgJGl0ZW0pKTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gYXJyYXkoJGluYywgJGV4 Yyk7DQp9DQp9DQoNCi8vIEFsdGVybmF0aXZlIHRvIHRoZSBjb3JlJ3MgZG9RdW90ZSgpLiBU aGlzIG9uZSBkYmwtcXVvdGVzIGluc3RlYWQgb2Ygc2dsLXF1b3Rlcw0KaWYgKCFmdW5jdGlv bl9leGlzdHMoInNtZF9kb0RibFF1b3RlIikpIHsNCmZ1bmN0aW9uIHNtZF9kb0RibFF1b3Rl KCR2YWwpIHsNCglyZXR1cm4gJyInLiR2YWwuJyInOw0KfQ0KfQ0KDQovLyBXb3JrIG91dCB3 aGljaCBwYWdlIHRoaXMgZ2FsbGVyeSBpcyBvbiBhbmQgcmV0dXJuIHRoZSByZWxldmFudCBp bmZvDQpmdW5jdGlvbiBzbWRfZ2V0UGFnZSgkcnMsICRnYWxsSUQsICRsaW1pdCwgJG9mZnNl dCwgJHBhZ2luZykgew0KCSRudW1UaHVtcyA9IGNvdW50KCRycyk7DQoJaWYgKCgkbGltaXQg PiAwKSAmJiAkcGFnaW5nKSB7DQoJCSRudW1QYWdlcyA9ICgkbnVtVGh1bXMgPiAwKSA/IGNl aWwoJG51bVRodW1zLyRsaW1pdCkgOiAxOw0KCQkkdGh1bVBhZ2UgPSAoIWdwcygkZ2FsbElE KSkgPyAxIDogZ3BzKCRnYWxsSUQpOw0KCQkkb2Zmc2V0ID0gKCR0aHVtUGFnZSAtIDEpICog JGxpbWl0Ow0KCX0gZWxzZSB7DQoJCS8vIE5vIHBhZ2luZyByZXF1aXJlZA0KCQkkbnVtUGFn ZXMgPSAxOw0KCQkkdGh1bVBhZ2UgPSAxOw0KCX0NCglyZXR1cm4gYXJyYXkoJG51bVRodW1z LCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCk7DQp9DQoNCi8vIFJlYWQgdGhlIGdp dmVuIGRlbGltaXRlZCBkaXJlY3RvcmllcyBhbmQgZ2V0IGFsbCBmaWxlcyB0aGF0IG1hdGNo Lg0KLy8gR28gZG93biBhcyBtYW55IHN1YmRpciBsZXZlbHMgYXMgZ2l2ZW4gaW4gdGhlICRz dWIgcGFyYW1ldGVyDQpmdW5jdGlvbiBzbWRfZG9EaXJlY3RvcnkoJGxzdCwgJGx2bD0wLCAk c3ViPTAsICRtYXRjaD0iIiwgJGRsbT0iLCIsICRjdHI9MCkgew0KCWxpc3QoJGRpcmluYywg JGRpcmV4YykgPSBzbWRfZG9MaXN0KCRsc3QsIGZhbHNlLCAkc3ViLCBmYWxzZSwgJGRsbSk7 DQoJbGlzdCgkbWF0Y2hpbmMsICRtYXRjaGV4YykgPSBzbWRfZG9MaXN0KCRtYXRjaCwgZmFs c2UsICcnLCBmYWxzZSwgJGRsbSk7DQoJJG1hdGNoaW5jID0gIi4qIiAuKCgkbWF0Y2hpbmMp ID8gIigiIC5pbXBsb2RlKCJ8IiwkbWF0Y2hpbmMpLiIpKy4qIiA6ICIiKTsNCgkkbWF0Y2hl eGMgPSAoJG1hdGNoZXhjKSA/ICIuKigiIC5pbXBsb2RlKCJ8IiwkbWF0Y2hleGMpLiIpKy4q IiA6ICJzbWRfZ2xyeV8iLm10X3JhbmQoKTsNCg0KCSRzdWIgPSAoZW1wdHkoJHN1YikpID8g MCA6ICRzdWI7DQoJJHN1YiA9IChzdHJ0b2xvd2VyKCRzdWIpPT0iYWxsIikgPyA5OTk5OSA6 ICRzdWI7DQoJJGZpbGVMaXN0ID0gYXJyYXkoKTsNCglmb3JlYWNoICgkZGlyaW5jIGFzICRk aXIpIHsNCgkJaWYgKCRoYW5kbGUgPSBAb3BlbmRpcigkZGlyKSkgew0KCQkJd2hpbGUgKCgk ZmlsZSA9IEByZWFkZGlyKCRoYW5kbGUpKSAhPT0gZmFsc2UpIHsNCgkJCQkkZnVsbHBhdGgg PSAkZGlyLkRTLiRmaWxlOw0KCQkJCWlmIChwcmVnX21hdGNoKCIvIi4kbWF0Y2hpbmMuIi8i LCAkZnVsbHBhdGgpICYmICFwcmVnX21hdGNoKCIvIi4kbWF0Y2hleGMuIi8iLCAkZnVsbHBh dGgpKSB7DQoJCQkJCWlmIChpc19kaXIoJGZ1bGxwYXRoKSkgew0KCQkJCQkJaWYgKCgkZmls ZSA9PSAiLiIpIHx8ICgkZmlsZT09ICIuLiIpIHx8IChpbl9hcnJheSgkZmlsZSwgJGRpcmV4 YykpIHx8ICgkbHZsID49ICRzdWIpKSB7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9IGVs c2Ugew0KCQkJCQkJCS8vIFJlY3Vyc2UgdGhlIHN1YmRpci4gTm90ZSB0aGF0IHRoZSAnIScg aXMgdGVtcG9yYXJpbHkgYWRkZWQgYmFjayB0byBlYWNoIGRpcmV4YyBpdGVtDQoJCQkJCQkJ JHRtcCA9ICRkaXJleGM7IC8vIERvbid0IG92ZXJ3cml0ZSB0aGUgb3JpZ2luYWwgYXJyYXkN CgkJCQkJCQlhcnJheV91bnNoaWZ0KCR0bXAsICRmdWxscGF0aCk7DQoJCQkJCQkJJHN1YkZp bGVzID0gc21kX2RvRGlyZWN0b3J5KGltcGxvZGUoJGRsbS4iISIsICR0bXApLCAkbHZsKzEs ICRzdWIsICRtYXRjaCwgJGRsbSwgJGN0cik7DQoJCQkJCQkJJGZpbGVMaXN0ID0gYXJyYXlf bWVyZ2UoJGZpbGVMaXN0LCAkc3ViRmlsZXMpOw0KCQkJCQkJCSRjdHIgKz0gY291bnQoJHN1 YkZpbGVzKTsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJ CQkJCSRmaWxlc3RhdCA9IHN0YXQoJGZ1bGxwYXRoKTsNCgkJCQkJCSRpbWdzaXplID0gZ2V0 aW1hZ2VzaXplKCRmdWxscGF0aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ3BhdGgnXSA9 ICRkaXI7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ25hbWUnXSA9IGJhc2VuYW1lKCRmdWxs cGF0aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2lkJ10gPSBwcmVnX3JlcGxhY2UoJy9c Li4rJC8nLCAnJywgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydhbHQnXSA9ICcn Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXB0aW9uJ10gPSAnJzsNCgkJCQkJCSRwYXJ0 cyA9IGV4cGxvZGUoRFMsICRkaXIpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXRlZ29y eSddID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/IGVuZCgkcGFydHMpIDogJyc7DQoJCQkJCQkk ZmlsZUxpc3RbJGN0cl1bJ2F1dGhvciddID0gc3RydmFsKCRmaWxlc3RhdFsndWlkJ10pOw0K CQkJCQkJJGZpbGVMaXN0WyRjdHJdWydkYXRlJ10gPSBzdHJmdGltZSgiJVktJW0tJWQgJUg6 JU06JVMiLCAkZmlsZXN0YXRbJ2N0aW1lJ10pOw0KCQkJCQkJJHBhcnRzID0gZXhwbG9kZSgi LiIsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZXh0J10gPSAoY291bnQoJHBh cnRzKSA+IDEpID8gIi4iLmVuZCgkcGFydHMpIDogJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0 cl1bJ3cnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzBdKSA6 ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydoJ10gPSAoaXNfYXJyYXkoJGltZ3NpemUp KSA/IHN0cnZhbCgkaW1nc2l6ZVsxXSkgOiAnJzsNCgkJCQkJfQ0KCQkJCQkkY3RyKys7DQoJ CQkJfQ0KCQkJfQ0KCQl9DQoJCWlmICgkaGFuZGxlKSB7DQoJCQlAY2xvc2VkaXIoJGhhbmRs ZSk7DQoJCX0NCgl9DQoJcmV0dXJuICRmaWxlTGlzdDsNCn0NCg0KaWYgKCFmdW5jdGlvbl9l eGlzdHMoInNtZF9yZW1vdmVRU1ZhciIpKSB7DQpmdW5jdGlvbiBzbWRfcmVtb3ZlUVNWYXIo JHVybCwgJGtleSkgew0KCSR1cmwgPSBwcmVnX3JlcGxhY2UoJy8oLiopKFw/fCYpJyAuICRr ZXkgLiAnPVteJl0rPygmKSguKikvaScsICckMSQyJDQnLCAkdXJsIC4gJyYnKTsNCgkkdXJs ID0gc3Vic3RyKCR1cmwsIDAsIC0xKTsNCglyZXR1cm4gKCR1cmwpOw0KfQ0KfQ0KDQppZiAo IWZ1bmN0aW9uX2V4aXN0cygic21kX2FkZFFTVmFyIikpIHsNCmZ1bmN0aW9uIHNtZF9hZGRR U1ZhcigkdXJsLCAka2V5LCAkdmFsdWUpIHsNCgkkdXJsID0gc21kX3JlbW92ZVFTVmFyKCR1 cmwsICRrZXkpOw0KCWlmIChzdHJwb3MoJHVybCwgJz8nKSA9PT0gZmFsc2UpIHsNCgkJcmV0 dXJuICgkdXJsIC4gJz8nIC4gJGtleSAuICc9JyAuICR2YWx1ZSk7DQoJfSBlbHNlIHsNCgkJ cmV0dXJuICgkdXJsIC4gJyYnIC4gJGtleSAuICc9JyAuICR2YWx1ZSk7DQoJfQ0KfQ0KfSI7 czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czo0MjU1ODoiCTxwPjxkaXYgaWQ9InNt ZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9nYWxsZXJ5PC9oMT4KCgk8aDIgaWQ9 ImNvbnRlbnRzIj5Db250ZW50czwvaDI+CgoJPHVsPgoJCTxsaT48YSBocmVmPSIjZmVhdHVy ZXMiPkZlYXR1cmVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNhdXRob3IiPkF1dGhvcjwv YT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0 YWxsYXRpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3VzYWdlIj5UYWcgdXNhZ2U8L2E+ Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9hPgoJPHVs PgoJCTxsaT48YSBocmVmPSIjcmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M8L2E+PC9s aT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3BhZ2luZ19mb3JtIj5QYWdpbmcgZm9y bTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3JlcF9wYWdpbmciPlJlcGxhY2VtZW50IHRh Z3M8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbWJvcyI+Q29tYm9z PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9kZTwv YT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjZXhhbXBsZXMiPkV4YW1wbGVz PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0czwvYT48L2xpPgoJPC91bD4KCgk8 aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBh bGwgY3VycmVudCBhbmQgKHByb2JhYmx5KSBmdXR1cmUgZ2FsbGVyeSBzY3JpcHRzIGluY2x1 ZGluZyB0aHVtYnBvcCwgcm9sbG92ZXIsIHRvb2x0aXAsIGxpZ2h0Ym94LCBsaXRlYm94LCBz bGltYm94LCBtb29uYm94LCB0aGlja2JveCwgc2xpZGVzaG93LCBmYW5jeXpvb20sIGV0Yzwv bGk+CgkJPGxpPlB1bGwgaW1hZ2VzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGRhdGFiYXNlIChvciBvcHRpb25hbGx5IGEgbGlzdCBvZiBkaXJlY3Rvcmllcykg dGhhdCBtYXRjaCBjYXRlZ29yaWVzIG9yIElEczwvbGk+CgkJPGxpPlVzZSBhcnRpY2xlIGZp ZWxkcyB0byBob2xkIGxpc3RzIG9mIGltYWdlIGNhdGVnb3JpZXMvSURzIGZvciBhcnRpY2xl LXNwZWNpZmljIGdhbGxlcmllczwvbGk+CgkJPGxpPk11bHRpLWxldmVsIHN1Yi1jYXRlZ29y eSBzdXBwb3J0PC9saT4KCQk8bGk+R2FsbGVyeSBsYXlvdXQgaXMgZGVmaW5lZCBpbiBhIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm08L2xpPgoJCTxsaT5EaXJlY3QtYWNj ZXNzIHBhZ2luYXRpb24gaXMgc3VwcG9ydGVkIGFuZCB0aGUgbGF5b3V0IG9mIHBhZ2luZyBm ZWF0dXJlcyBpcyBjb250cm9sbGVkIGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxsaT5Vc2Vz IGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hfaW1hZ2Ug cGx1Z2luPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJPHA+ PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVmIERhd3Nv bjwvYT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBtZSwgb3IgdG8gbWFrZSBhIGRvbmF0aW9u LCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUg cGFnZTwvYT4uPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0 YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEg aHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9zbWRfZ2FsbGVyeSI+ dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwg aW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRw Oi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjY0ODIiPmZvcnVt IHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mg b3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHJlbW92ZSB0aGUgcGx1 Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZyb20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHRhYi48 L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoKCTxwPkZvciBzb21lIGlkZWFzIG9u IHVzYWdlIHNjZW5hcmlvcywgc2VlIHRoZSA8YSBocmVmPSIjZXhhbXBsZXMiPmV4YW1wbGVz PC9hPi48L3A+CgoJPHA+VGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IHRoaXMgcGx1Z2luIGFj dHMgYXMgYSBmbGV4aWJsZSBpbWFnZSBmaWx0ZXI7IG5vdGhpbmcgbW9yZS4gVGhlIHBsdWdp biBvcHRpb25zIGdvdmVybiB3aGF0IGltYWdlcyBhcmUgcHVsbGVkIG91dCBvZiB0aGUgZGF0 YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdoYXRldmVyIG9yZGVyIHlvdSBsaWtl LjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdlICYjODIxMjsgb25lIGJ5IG9uZSAm IzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFzc2VkIHRvIHRoZSA8Y29kZT5mb3Jt PC9jb2RlPiBvZiB5b3VyIGNob2ljZTsgeW91IHNpbXBseSBjaG9vc2UgdG8gZGlzcGxheSB3 aGljaGV2ZXIgaW1hZ2UgYXR0cmlidXRlcyB5b3UgbGlrZSBpbiB0aGlzIGZvcm0uIFRoaXMg bWVhbnMgYW55IGltYWdlIGF0dHJpYnV0ZXMgY2FuIGJlICYjODIyMDtpbmplY3RlZCYjODIy MTsgZGlyZWN0bHkgaW50byBhbnkgbWFya3VwOyBpdCBjb3VsZCBiZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiB0YWdzLCBpdCBjb3VsZCBiZSBjb250ZW50LCBpdCBjb3VsZCBi ZSBqYXZhc2NyaXB0LCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjsgYW55dGhp bmcuIFBhZ2luYXRpb24gd29ya3MgdGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3UgdG8gc3Bl Y2lmeSBob3cgdXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxlcmllcy48 L3A+CgoJPHA+VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwgbW9kZSBjYWxsZWQgJiM4MjIwO2Nv bGxhdGUmIzgyMjE7IHRoYXQgYWxsb3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFnZSBhdHRy aWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMgPGVtPndp dGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3JtIGlzIHRo ZW4gb25seSBwcm9jZXNzZWQgb25jZSBhdCB0aGUgZW5kLjwvcD4KCgk8cD5CZXR3ZWVuIHRo ZXNlIHR3byBtb2RlcyB5b3UgPGVtPnNob3VsZDwvZW0+IGJlIGFibGUgdG8gcmVhbGlzZSBh bnkgZ2FsbGVyeWluZyBzb2x1dGlvbjsgbm93IGFuZCBpbiBmdXR1cmUuPC9wPgoKCTxoMyBj bGFzcz0idGFnICIgaWQ9InNtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvaDM+CgoJPHAgY2xh c3M9InRhZy1zdW1tYXJ5Ij5QbGFjZSBvbmUgb3IgbW9yZSBzbWRfZ2FsbGVyeSB0YWdzIGlu IGFueSBhcnRpY2xlLCBwYWdlIG9yIGZvcm0sIHN1cHBseSBhbnkgb2YgdGhlIGZvbGxvd2lu ZyBvcHRpb25zIHRvIGNvbmZpZ3VyZSBpdCBhbmQgdXNlIGEgZm9ybSB0byBkZWZpbmUgaG93 IHRoZSBnYWxsZXJ5IGlzIGRpc3BsYXllZC48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9 ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj5pZDwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIElEcyBmb3IgaW5jbHVzaW9u IGluIHRoZSBnYWxsZXJ5LiBNYXkgYmUgaW50ZWdlcnMgb3IgcmFuZ2VzLCBmb3IgZXhhbXBs ZSA8Y29kZT5pZD0mcXVvdDs1LCA0MiwgOC0xMSZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBp bWFnZXMgNSwgOCwgOSwgMTAsIDExIGFuZCA0Mi4gVXNlIGFuIGV4Y2xhbWF0aW9uIG1hcmsg aW4gZnJvbnQgb2YgYSBudW1iZXIgb3IgcmFuZ2UgdG8gZXhjbHVkZSB0aG9zZSBpbWFnZXM8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhdGVnb3J5PC9zcGFuPiA6IGxp c3Qgb2YgaW1hZ2UgY2F0ZWdvcmllcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBnYWxsZXJ5LiBZ b3UgbWF5IHNwZWNpZnkgZml4ZWQtbmFtZSBjYXRlZ29yaWVzIChlLmcuICYjODIyMDthbmlt YWxzJiM4MjIxOykgb3IgYSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IGFuIGFydGljbGUg ZmllbGQgbmFtZS4gZS5nLiA8Y29kZT5jYXRlZ29yeT0mcXVvdDthbmltYWxzLCBhcnQtP2lk JnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSB0aGUgY2F0ZWdvcmll cyBjYWxsZWQgJiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCB0aGUgY2F0ZWdvcnkgY2FsbGVk ICYjODIyMDthcnQtNDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhh cyBhbiBpZCBvZiA0MiBvZiBjb3Vyc2UpLjxkaXYgY2xhc3M9ImJyZWFrIj5Vc2UgYW4gZXhj bGFtYXRpb24gbWFyayB0byBleGNsdWRlIHRoZSBnaXZlbiBjYXRlZ29yeSBvciBmaWVsZC4g RmllbGRzIG1heSB0aGVtc2VsdmVzIGNvbnRhaW4gbGlzdHMgb2YgY2F0ZWdvcmllcy4gVGhl ID8gZmllbGQgbmFtZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRpY2xlX2ltYWdl KSBidXQgYmUgYXdhcmUgdGhhdCBmaWVsZCBuYW1lcyBtYXkgY29udGFpbiBzcGFjZXM8L2Rp dj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnN1YmxldmVsPC9zcGFuPiA6 IGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgJiM4MjE2O2xldmVscyYjODIx NzsgZG93biB0byB0cmF2ZXJzZSBlYWNoIG1hdGNoaW5nIGNhdGVnb3J5LiBzdWJsZXZlbD0m IzgyMjA7MCYjODIyMTsgKHRoZSBkZWZhdWx0KSBpcyBvbmx5IHRoZSB0b3AtbGV2ZWw7IDEg PSB0b3AtbGV2ZWwgcGx1cyB0aGUgMXN0IHN1Yi1jYXQ7IDIgPSB0b3AtbGV2ZWwgcGx1cyB0 aGUgbmV4dCAyIHN1Yi1jYXRzLCBhbmQgc28gb24uIHN1YmxldmVsPSYjODIyMDthbGwmIzgy MjE7IGlzIGFsbCBzdWItY2F0ZWdvcmllczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+c29ydDwvc3Bhbj4gOiByZS1vcmRlciB0aGUgaW1hZ2VzIGJ5IDxjb2RlPmNhdGVn b3J5PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5uYW1lPC9jb2RlPiwgPGNvZGU+ZGF0 ZTwvY29kZT4sIDxjb2RlPmlkPC9jb2RlPiwgZmlsZSA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9u LCA8Y29kZT5hbHQ8L2NvZGU+LCA8Y29kZT5jYXB0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9y PC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29k ZT5oYXN0aHVtYjwvY29kZT4gaW4gZWl0aGVyIDxjb2RlPmFzYzwvY29kZT5lbmRpbmcgb3Ig PGNvZGU+ZGVzYzwvY29kZT5lbmRpbmcgb3JkZXIuIFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0 OiA8Y29kZT5maXhlZDwvY29kZT4gbWFpbnRhaW5zIHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVk IGluIHRoZSBpZCBhdHRyaWJ1dGUsIHdoaWxlIDxjb2RlPnJhbmRvbTwvY29kZT4gc2h1ZmZs ZXMgdGhlIG9yZGVyLjxkaXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgPGNvZGU+cmFu ZG9tPC9jb2RlPiBhcHBlYXJzIGFzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LCByYW5k b20gaW1hZ2VzIHdpbGwgYmUgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB0aGV5IHdp bGwgdGhlbiBiZSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBsaXN0ZWQgYWZ0ZXIg aXQuIElmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBwZWFycyBhbnl3aGVyZSBlbHNlIGluIHRo ZSBsaXN0LCBhbnkgc29ydCBpdGVtcyBiZWZvcmUgaXQgd2lsbCBkZXRlcm1pbmUgdGhlIG9y ZGVyIG9mIGRhdGEgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlLCBhbmQgdGhlIHJlc3VsdHMg d2lsbCB0aGVuIGJlIG9yZGVyZWQgcmFuZG9tbHkgKGluIHRoYXQgY2FzZSwgYW55IGl0ZW1z IGxpc3RlZCBhZnRlciByYW5kb20gd2lsbCBiZSBpZ25vcmVkLiA8Y29kZT5maXhlZDwvY29k ZT4gaXMsIGhvd2V2ZXIsIHN0aWxsIGhvbm91cmVkKTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+bGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9m IGltYWdlcyB0byBzaG93IDxlbT5wZXIgcGFnZTwvZW0+LiAwIG9yIG9taXR0ZWQgPSB1bmxp bWl0ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1heGxpbWl0PC9zcGFu PiA6IHRoZSBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiB0aHVtYm5haWxzIHRvIHB1bGwg ZnJvbSB0aGUgZGF0YWJhc2UuIDAgb3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+b2Zmc2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55 IGltYWdlcyBhbmQgc3RhcnQgY291bnRpbmcgdGhlcmVhZnRlcjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+dGh1bWJsaW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1i ZXIgb2YgdGh1bWJuYWlscyB0byBzaG93LiAwIG9yIG9taXR0ZWQgPSBhbGwgdGh1bWJzLiBO b3RlIHRoYXQgdGhpcyBkaWZmZXJzIGZyb20gbGltaXQ7IHlvdSBjYW4gbGF1bmNoIGEgMjAt aW1hZ2UgZ2FsbGVyeSBidXQgb25seSBzaG93IDEgdGh1bWJuYWlsIG9uIHRoZSBwYWdlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYm9mZnNldDwvc3Bhbj4gOiBz a2lwIHRoaXMgbWFueSB0aHVtYnMgYmVmb3JlIGRpc3BsYXlpbmcgPGNvZGU+dGh1bWJsaW1p dDwvY29kZT4gdGh1bWJuYWlsczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ dGh1bWJjaGFuZ2U8L3NwYW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gJiM4MjIwO3dh dGNoJiM4MjIxOzsgaS5lLiBpdCB0ZWxscyB0aGUgcGx1Z2luIHRoYXQgeW91IHdhbnQgdG8g YmUgbm90aWZpZWQgd2hlbiBpdGVtcyBpbiB0aGlzIGxpc3QgY2hhbmdlIGNvbXBhcmVkIHRv IHRoZSBwcmV2aW91cyB0aHVtYm5haWwuIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRo aXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFyYW1l dGVyIG9yIGVsc2UgeW91IGNhbiBnZXQgc29tZSBmcmVha3kgcmVzdWx0cyEgSXQgZGVmYXVs dHMgdG8gPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LjxkaXYgY2xhc3M9ImJyZWFrIj5UaGlzIGF0 dHJpYnV0ZSBpcyB2ZXJ5IHVzZWZ1bCBmb3Igc3BsaXR0aW5nIGdhbGxlcmllcyBhdCwgc2F5 LCBldmVyeSBjaGFuZ2UgaW4gY2F0ZWdvcnkgYW5kIGRpc3BsYXlpbmcgdGhlIGNhdGVnb3J5 IHRpdGxlIGFib3ZlIGVhY2ggZ3JvdXAuIEl0ZW1zIHlvdSB3YXRjaCBhcmUgYWRkZWQgdG8g dGhlIGxpc3Qgb2YgcmVwbGFjZW1lbnQgdGFncyBhbmQgYXJlIGF2YWlsYWJsZSBieSBwdXR0 aW5nICYjODIyMDtjaGFuZ2VkOiYjODIyMTsgaW4gZnJvbnQgb2YgdGhlaXIgbmFtZSAoZS5n LiA8Y29kZT57Y2hhbmdlZDpjYXRlZ29yeX08L2NvZGU+ICYjODIxMjsgc2VlIDxhIGhyZWY9 IiNlZzYiPmV4YW1wbGUgNjwvYT4gZm9yIGEgcmVhbCB1c2UgY2FzZSkuIFRoZSBjb2xvbiBk ZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0aCB0aGUgPGNvZGU+cGFyYW1kZWxpbTwvY29k ZT4gYXR0cmlidXRlPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50 aHVtYmNoYW5nZXdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5k IGFueSBjaGFuZ2VkIGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcgd2l0aCB0aGUgPGNvZGU+ dGh1bWJjaGFuZ2U8L2NvZGU+IGF0dHJpYnV0ZS4gIFNwZWNpZnkgaXQgd2l0aG91dCBhbmds ZSBicmFja2V0cywgZS5nLiA8Y29kZT50aHVtYmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVv dDs8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIHRhZ3MpPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYmNoYW5nZWNsYXNzPC9zcGFuPiA6IHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIGFu eSBjaGFuZ2VkIGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcgd3RoIHRoZSA8Y29kZT50aHVt YmNoYW5nZTwvY29kZT4gYXR0cmlidXRlLiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIGNs YXNzKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+dGV4dDwvc3Bhbj4gOiBk aXNwbGF5IHRoZSBnaXZlbiB0ZXh0IGluc3RlYWQgb2YgdGh1bWJuYWlscy4gVGhlIHRleHQg Y2FuIGNvbnRhaW4gPyBhcnRpY2xlIGZpZWxkcyBsaWtlIDxjb2RlPmNhdGVnb3J5PC9jb2Rl PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+dGh1bWI8L3NwYW4+IDogaWYg eW91IHdpc2ggdGhlIGZ1bGxzaXplIGltYWdlcyBkaXNwbGF5ZWQgYXMgdGh1bWJuYWlscywg b3IgaWYgeW91IHdhbnQgdGhlIHRodW1ibmFpbCBnYWxsZXJ5IHRvIHVzZSB0aGUgZnVsbHNp emUgaW1hZ2VzLCBzcGVjaWZ5IGl0IHdpdGggdGhpcyBhdHRyaWJ1dGUuIFVzZSA8Y29kZT50 aHVtYj0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBzcGVjaWZ5IHRoYXQgYm90aCBmdWxsc2l6 ZSBpbWFnZSBhbmQgdGh1bWJuYWlsIGRpc3BsYXkgdGhlICYjODIxNjt0JiM4MjE3OyAodGh1 bWJuYWlsKSBpbWFnZS4gQ29udmVyc2VseSwgdXNlIDxjb2RlPnRodW1iPSZxdW90OzAmcXVv dDs8L2NvZGU+IHRvIHNwZWNpZnkgdGhhdCBib3RoIGZ1bGxzaXplIGFuZCB0aHVtYm5haWxz IHVzZSB0aGUgZnVsbCBzaXplIGltYWdlcy4gWW91IGNhbiBhbHNvIGNob29zZSBvbmUgb3Ig dGhlIG90aGVyIGJ5IGdpdmluZyB0aGlzIGF0dHJpYnV0ZSB0d28gbnVtYmVycyBzZXBhcmF0 ZWQgYnkgYSBjb2xvbi48ZGl2IGNsYXNzPSJicmVhayI+Rm9yICYjODIxNjtub3JtYWwmIzgy MTc7IG9wZXJhdGlvbiAmIzgyMTI7IGkuZS4gZnVsbHNpemUgaW1hZ2UgaXMgZnVsbCBzaXpl LCB0aHVtYm5haWwgaXMgIHRodW1iIHNpemVkICYjODIxMjsgc3BlY2lmeSA8Y29kZT50aHVt Yj0mcXVvdDswOjEmcXVvdDs8L2NvZGU+LiBUbyByZXZlcnNlIHRoaXMsIHVzZSA8Y29kZT50 aHVtYj0mcXVvdDsxOjAmcXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQgPGNvZGU+MToxPC9jb2Rl PiBhbmQgPGNvZGU+MDowPC9jb2RlPiBhbHNvIHdvcmsgdG8gc2V0IGJvdGggaW1hZ2VzIHRv IHRoZSBzYW1lIHNpemUgaWYgeW91IHByZWZlciB0aGF0IHN5bnRheCBvdmVyIHVzaW5nIGEg c2luZ2xlIGRpZ2l0PC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50 aHVtYnNpemU8L3NwYW4+IDogdGFrZXMgb25lIG9yIHR3byBjb21tYS1zZXBhcmF0ZWQgcGFy YW1ldGVycyB0byBzcGVjaWZ5IHdpZHRoIGFuZC9vciBoZWlnaHQgb2YgYWxsIHlvdXIgZ2Fs bGVyeSB0aHVtYm5haWxzLiBUaGUgZGVmYXVsdCBpcyBpbiBwaXhlbHMgaWYgeW91IGRvbiYj ODIxNzt0IHNwZWNpZnkgdW5pdHMuIE1pc3Npbmcgb3V0IG9uZSBvciB0aGUgb3RoZXIgcGFy YW1ldGVyIChpLmUuIGhhdmluZyBhbiAmIzgyMjA7ZW1wdHkmIzgyMjE7IHBhcmFtZXRlciBi ZWZvcmUgb3IgYWZ0ZXIgdGhlIGNvbW1hKSB3aWxsIG9ubHkgc2V0IG9uZSBvZiB0aGUgZGlt ZW5zaW9ucy4gVXNpbmcgb25seSBvbmUgdmFsdWUsIGJvdGggd2lkdGggYW5kIGhlaWdodCB3 aWxsIGJlIHNldCB0byB0aGUgc2FtZSB2YWx1ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+Zm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gZm9ybSB1c2VkIHRvIGxheW91dCB5b3VyIG1hdGNoaW5nIGltYWdlczwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFnZWZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQg b2YgeW91ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+cGFnaW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcg dG8gc3BlY2lmeSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9 IiNyZXBfcGFnaW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFi bGUgaW4gdGhlIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0 YWdzPC9hPiBhcyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5wYWdl cG9zPC9zcGFuPiA6IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFnaW5nIGJsb2NrLiBPcHRpb25z IGFyZSA8Y29kZT5hYm92ZTwvY29kZT4gb3IgPGNvZGU+YmVsb3c8L2NvZGU+ICh0aGUgZGVm YXVsdCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmdhbGxlcnlpZDwvc3Bh bj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQg dGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEIGJhc2VkIG9uIHRo ZSBhdHRyaWJ1dGVzIHlvdSBzdXBwbHkuIEluIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IHR3 byBpZGVudGljYWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91IGNhbiBvdmVycmlkZSB0aGUgSUQg Zm9yIGEgZ2FsbGVyeSB3aXRoIHRoaXMgYXR0cmlidXRlLjxkaXYgY2xhc3M9ImJyZWFrIj5X aGF0IHRoZSBwbHVnaW4gZG9lcyAoaW50ZXJuYWxseSkgaXMgZ2VuZXJhdGUgYSAzMi1jaGFy YWN0ZXIgaGFzaCBzdHJpbmcgZm9yIGVhY2ggdGFnLCB0aGVuIHBpY2tzIGEgNC1jaGFyIGNv ZGUgZnJvbSB0aGlzIHN0cmluZyAoaXQgdGFrZXMgZXZlcnkgNnRoIGNoYXJhY3RlciBieSBk ZWZhdWx0KS4gWW91IGNhbiBzdXBwbHkgYSB1bmlxdWUgZml4ZWQgc3RyaW5nIChlLmcuIDxj b2RlPmdhbGxlcnlpZD0mcXVvdDtUaGVHYWxsZXJ5MiZxdW90OzwvY29kZT4pIG9yIGdpdmUg aXQgYSBxdWVzdGlvbiBtYXJrIGFuZCAyIG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEgY29sb24g KGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz81OjQmcXVvdDs8L2NvZGU+KS4gVGhlIGZp cnN0IG51bWJlciBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmaW5hbCBzdHJpbmcgdG8gZ2VuZXJh dGUsIHRoZSBzZWNvbmQgbnVtYmVyIGlzIGhvdyBtYW55IGNoYXJhY3RlcnMgdG8gc2tpcCBv dmVyIGluIHRoZSBmdWxsIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGltZSBpdCBwaWNrcyBvbmUu PC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPlNvIGluIHRoaXMgY2FzZSwgaXQgZ2VuZXJhdGVz IGEgNS1jaGFyYWN0ZXIgc3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlcnMgaXQgZmluZHMgYXQg cG9zaXRpb25zIDEsNSw5LDEzLCBhbmQgMTcuIElmIHlvdSBvbWl0IHRoZSAybmQgbnVtYmVy IChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NiZxdW90OzwvY29kZT4pIGl0IHdpbGwg YXNzdW1lIGl0JiM4MjE3O3MgYW4gaW5jcmVtZW50IG9mIDEsIHNvIGluIHRoaXMgY2FzZSBp dCYjODIxNztsbCB1c2UgdGhlIDFzdCA2IGNoYXJhY3RlcnM8L2Rpdj48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFn IHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVyeS4gU3BlY2lmeSBpdCB3aXRob3V0IGFu Z2xlIGJyYWNrZXRzLCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2Rl Pi4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyB0YWcpPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91 bmQgZWFjaCB0aHVtYm5haWwuIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8gdGFncyk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNsYXNzPC9zcGFuPiA6IHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBl bnRpcmUgZ2FsbGVyeS4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyBjbGFzcyk8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm5hdndyYXB0YWc8L3NwYW4+IDogdGhlIChY KUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZvcm08L2NvZGU+ LiBTcGVjaWZ5IGl0IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNvZGU+d3JhcHRh Zz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzICYjODIyMDt1bCYjODIyMTs8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm5hdmJyZWFrPC9zcGFuPiA6IHRo ZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIGl0ZW0gd2l0aGluIHRoZSA8Y29kZT5w YWdlZm9ybTwvY29kZT4uIERlZmF1bHQgaXMgJiM4MjIwO2xpJiM4MjIxOzwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIG5hdmln YXRpb24gd3JhcHRhZy4gRGVmYXVsdCBpcyAmIzgyMjA7c21kX2dhbGxlcnlfbmF2JiM4MjIx OzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZW1wdHljbGFzczwvc3Bhbj4g OiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBs eSB0byB0aGUgbmF2aWdhdGlvbiBpdGVtcyB0aGF0IGFyZSA8ZW0+bm90PC9lbT4gbGlua3Mu IERlZmF1bHQgaXMgJiM4MjIwO2VtcHR5JiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+ZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNw ZWNpZnlpbmcgYXR0cmlidXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFyYW1kZWxpbTwvc3Bhbj4gOiBjaGFuZ2Ug dGhlIGRlbGltaXRlciBmb3Igc3BlY2lmeWluZyBpbnRlci1wYXJhbWV0ZXIgYXR0cmlidXRl cy4gRGVmYXVsdCBpcyBjb2xvbiAoOik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPmNvbGxhdGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8YSBocmVmPSIj Y29sbGF0ZV9tb2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj5jb21ibzwvc3Bhbj4gOiBzcGVjaWZ5IHlvdXIgb3duIDxhIGhyZWY9IiNy ZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPmRpcmVjdG9yeTwvc3Bhbj4gOiByZWFkIGltYWdlcyBmcm9tIGEgbGlz dCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zKSBp bnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBkYXRhYmFzZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF0Y2g8L3NwYW4+IDogbGltaXQg dGhlIGltYWdlcyBhbmQgZGlyZWN0b3JpZXMgY2hvc2VuIGluIGRpcmVjdG9yeSBtb2RlLiBH aXZlIGl0IGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRlIG9yICFleGNsdWRlIGFuZCBhbnkg bWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBiZSBjaG9zZW4gb3IgaWdub3Jl ZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNz dW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28gYW55IHBhcnQgb2YgdGhlIGZpbGUg bmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRjaDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+ZGVidWc8L3NwYW4+IDogdHVybiBvbiBkaWFnbm9zdGljcy4gVmFy eWluZyBsZXZlbHMgb2YgdmVyYm9zaXR5IGZyb20gMCAobm9uZSkgdG8gNCAoYSBsb3QpPC9s aT4KCTwvdWw+CgoJPGgzIGlkPSJnYWxsZXJ5X2Zvcm0iPkdhbGxlcnkgZm9ybTwvaDM+CgoJ PHA+VGhlIDxjb2RlPmZvcm08L2NvZGU+IGlzIHdoZXJlIHlvdSBkZXNpZ24gd2hhdCBldmVy eSB0aHVtYm5haWwgd2lsbCBsb29rIGxpa2Ugb24gdGhlIHNjcmVlbi4gWW91IGRvIHRoaXMg Ynkgc3BlY2lmeWluZyBtYXJrdXAgb3IgdGFncyBhcyBub3JtYWwuIEluIGtleSBwbGFjZXMg d2hlcmUgeW91IHdhbnQsIHNheSwgYW4gaW1hZ2UgSUQgb3IgYWx0IHRhZyBvciBpbWFnZSB3 aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlvdSBzcGVjaWZ5IHNwZWNpYWwgPGEgaHJlZj0iI3Jl cF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPi4gVGhlc2UgYXJlIHJlcGxhY2VkIGZv ciBlYWNoIGltYWdlIGluIHR1cm4sIHRodXMgYnVpbGRpbmcgdXAgdGhlIGdhbGxlcnkuPC9w PgoKCTxwPkluIGNvbGxhdGUgbW9kZSwgdGhlIGltYWdlIGRldGFpbHMgYXJlIGluc3RlYWQg bWFkZSBpbnRvIGxpc3RzLiBUaGUgZm9ybSBpcyBvbmx5IHByb2Nlc3NlZCBvbmNlIGFuZCB0 aGUgcmVwbGFjZW1lbnQgdGFncyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LjwvcD4KCgk8aDQg Y2xhc3M9ImF0dHMgIiBpZD0icmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M6IGdhbGxl cnk8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aWR9PC9zcGFu PiA6IHRoZSBpbWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5hbWUg d2l0aG91dCBpdHMgZXh0ZW5zaW9uKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+e25hbWV9PC9zcGFuPiA6IHRoZSBmdWxsIGltYWdlIGZpbGVuYW1lIGFzIGRlZmluZWQg aW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRlbnNpb248L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntleHR9PC9zcGFuPiA6IHRoZSBmaWxlIGV4dGVu c2lvbiBpbmNsdWRpbmcgcGVyaW9kPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij57Y2F0ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29yeSBuYW1lPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57Y2F0ZWdvcnlfdGl0bGV9PC9zcGFuPiA6IHRo ZSBpbWFnZSBjYXRlZ29yeSB0aXRsZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+e2F1dGhvcn08L3NwYW4+IDogd2hvIHVwbG9hZGVkIHRoZSBpbWFnZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3VybH08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBmdWxsc2l6ZSBpbWFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1idXJsfTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e2ltYWdlcGF0aH08L3NwYW4+IDogdGhlIGRpcmVjdG9yeSB0 aGUgaW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntpbWFn ZWRlZn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIGltYWdlIChl LmcuIDUuanBnKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1iZGVm fTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgdGh1bWJuYWlsIChl LmcuIDV0LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnthbHR9PC9z cGFuPiA6IHRoZSBhbHQgdGV4dDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e3RpdGxlfTwvc3Bhbj4gOiB0aGUgY2FwdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e2RhdGV9PC9zcGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57d2lkdGh9PC9zcGFuPiA6IGltYWdlIHdpZHRoPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aGVpZ2h0fTwvc3Bhbj4gOiBpbWFn ZSBoZWlnaHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYndpZHRo fTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lkdGggKGlmIGRlZmluZWQ6IHNlZSB0aGUgPGNvZGU+ dGh1bWJzaXplPC9jb2RlPiBhdHRyaWJ1dGUpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57dGh1bWhlaWdodH08L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodCAoZGl0dG8p PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ3dW5pdHN9PC9zcGFu PiA6IHRodW1ibmFpbCB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0gZXRjLiBPbmx5IGlm IGRlZmluZWQgdmlhIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57dGh1bWJodW5pdHN9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWln aHQgdW5pdHMgKGRpdHRvKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2hh c3RodW1ifTwvc3Bhbj4gOiBpZiB0aGUgaW1hZ2UgaGFzIGFuIGFzc29jaWF0ZWQgdGh1bWJu YWlsIG9yIG5vdCAocHJvYmFibHkgbm90IG11Y2ggdXNlKTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+e2dhbGxlcnlpZH08L3NwYW4+IDogdGhlIGdhbGxlcnkgaWQgeW91 IG9yIHRoZSBwbHVnaW4gYXNzaWduZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPntvYmplY3R9PC9zcGFuPiA6IGEgc3BlY2lhbCBpdGVtIGNvbnRhaW5pbmcgZWl0aGVy IHRoZSA8Y29kZT50ZXh0PC9jb2RlPiBPUiB0aGUgaW1hZ2UgdGFnIG9mIHRoZSBjb3JyZXNw b25kaW5nIHRodW1ibmFpbCBidXQgb25seSBpZiA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiBh bGxvd3MgaXQuIGUuZy4gaWYgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2Rl PiB0aGlzIHZhcmlhYmxlIGlzIG9ubHkgc2V0IGZvciB0aGUgZmlyc3QgdGh1bWJuYWlsIGlu IHRoZSBsaXN0LiBFdmVyeSBvdGhlciB0aW1lIGl0IGlzIGVtcHR5PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57Y291bnRlcn08L3NwYW4+IDogYW4gaW1hZ2UgY291bnRl ciwgc3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgZWFjaCB0aW1lPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aW5kZXh9PC9zcGFuPiA6IGFuIGluZGV4IGNv dW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJjb3VudGVyfTwvc3Bhbj4gOiBh IHRodW1ibmFpbCBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVu dGluZyBlYWNoIHRpbWUuIE5vdGUgaXQgaXMgJiM4MjE2O3Jlc2V0JiM4MjE3OyBiYWNrIHRv IDEgd2hlbmV2ZXIgYW4gZWxlbWVudCBnaXZlbiBpbiA8Y29kZT50aHVtYmNoYW5nZTwvY29k ZT4gZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyB0aHVtYm5haWw8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmluZGV4fTwvc3Bhbj4gOiBhbiBpbmRleCBjb3Vu dGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90IG11Y2ggdXNlKS4gSXQgaXMg YWxzbyByZXNldCBqdXN0IGxpa2UgPGNvZGU+e3RodW1iY291bnRlcn08L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRo ZSB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdlPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiB0aGUgYWJz b2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJ PC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYgZWl0aGVyIDxjb2RlPnBhZ2luZz0mcXVvdDsx JnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdlZm9ybTwvY29kZT4gaGF2ZSBiZWVuIHNwZWNp ZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVwX3BhZ2luZyI+cGFnaW5nIHJlcGxhY2VtZW50 IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9vLiBJZiB0aG9zZSBhcmVuJiM4MjE3O3QgZW5v dWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21ib3MiPmNyZWF0ZSB5b3VyIG93bjwvYT4gYnkg Z3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSwgb3B0aW9uYWxseSB3aXRoIGFy dGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNvZGU+P2V4Y2VycHQ8L2NvZGU+LCA8Y29kZT4/ a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0aWNsZV9pbWFnZTwvY29kZT4sIGV0Yy48L3A+ CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91IGFy ZSB3YXRjaGluZyBmb3IgY2hhbmdlZCBlbGVtZW50cyB2aWEgdGhlIDxjb2RlPnRodW1iY2hh bmdlPC9jb2RlPiBhdHRyaWJ1dGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmaWVkIDxj b2RlPnRodW1iY2hhbmdlPSZxdW90O2F1dGhvciwgY2F0ZWdvcnkmcXVvdDs8L2NvZGU+IHRo ZW4gZXZlcnkgdGltZSB0aGUgYXV0aG9yIG9yIGNhdGVnb3J5IGNoYW5nZWQgY29tcGFyZWQg dG8gdGhlIHByZXZpb3VzIHRodW1ibmFpbCwgb25lIG9yIHR3byBuZXcgcmVwbGFjZW1lbnQg dGFncyB3b3VsZCBiZWNvbWUgYXZhaWxhYmxlOyBuYW1lbHkgPGNvZGU+e2NoYW5nZWQ6YXV0 aG9yfTwvY29kZT4gYW5kIDxjb2RlPntjaGFuZ2VkOmNhdGVnb3J5KTwvY29kZT4uPC9wPgoK CTxoMyBpZD0icGFnaW5nX2Zvcm0iPlBhZ2luZyBmb3JtPC9oMz4KCgk8cD5XaGVuIGFsbCB0 aGUgdGh1bWJuYWlscyBoYXZlIGJlZW4gcHJvY2Vzc2VkLCB0aGUgPGNvZGU+cGFnZWZvcm08 L2NvZGU+IGlzIHByb2Nlc3NlZCBhbmQgZGlzcGxheWVkLiBJbiBhIHNpbWlsYXIgbWFubmVy IHRvIHRoZSB3YXkgdGhlIDxhIGhyZWY9IiNnYWxsZXJ5X2Zvcm0iPmdhbGxlcnkgZm9ybTwv YT4gd29ya3MsIGEgc2VyaWVzIG9mIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5SZXBsYWNlbWVu dCBUYWdzPC9hPiBnb3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0ZW1zIGFyZSBh dmFpbGFibGUuIEZvciBleGFtcGxlIHlvdSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5l eHQvcHJldi4gT3IgcGVyaGFwcyAxc3QgcGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBh Z2UgbGlua3MuPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBs YWNlbWVudCB0YWdzOiBwYWdpbmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57bmF2Zmlyc3R9PC9zcGFuPiA6IHRoZSBmaXJzdCBwYWdlIChkZWZhdWx0IGxh YmVsOiAmIzgyMjA7Rmlyc3QmIzgyMjE7KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+e25hdnByZXZ9PC9zcGFuPiA6IHRoZSBwcmV2aW91cyBwYWdlIChkZWZhdWx0IGxh YmVsOiAmIzgyMjA7JmxhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57bmF2ZWFybGllcn08L3NwYW4+IDogYW55IHBhZ2UgbnVtYmVycyBiZWZvcmUg dGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25h dnRoaXN1cmx9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBhZ2Ugd2l0aCBhIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IGxpbmsgdG8gaXRzZWxmPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bmF2dGhpc308L3NwYW4+IDogdGhlIGN1cnJlbnQgcGFnZSB3aXRo b3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluazwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1i ZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUiPntuYXZuZXh0fTwvc3Bhbj4gOiB0aGUgbmV4dCBwYWdlIChkZWZhdWx0IGxhYmVs OiAmIzgyMjA7JnJhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj57bmF2bGFzdH08L3NwYW4+IDogdGhlIGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDog JiM4MjIwO0xhc3QmIzgyMjE7KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e25hdmZpcnN0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHRvIHRoZSBmaXJzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj57bmF2cHJldnBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB0byB0aGUgcHJldmlvdXMgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4gdG8gdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e25hdm5leHRwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gdGhlIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdmxhc3RwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gdGhlIGxhc3QgcGFnZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RvdGFsaW1hZ2VzfTwvc3Bhbj4gOiB0aGUgdG90 YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0b3RhbHBhZ2VzfTwvc3Bhbj4gOiB0aGUg dG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMgY29sbGVjdGlvbjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e21heGltYWdlc308L3NwYW4+IDogdGhlIGFic29sdXRl IG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+ CgoJPHA+VGhlIGN1cnJlbnQgcGFnZSBoYXMgYSBmaXhlZCBjbGFzcyBvZiAmIzgyMTY7Y3Vy cmVudCYjODIxNzsgYW5kIGVhY2ggaXRlbSBpcywgYnkgZGVmYXVsdCwgYSA8Y29kZT4mbHQ7 bGkmZ3Q7PC9jb2RlPiBmb3IgZWFzeSBzdHlsaW5nLiBUbyBhdm9pZCBhIHppbGxpb24gb3B0 aW9ucywgY3VzdG9tIGxhYmVscyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBp dHNlbGY6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwvcD4KCgk8cD5X b3VsZCBsYWJlbCB0aGUgbGluayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBwYWdl IG9mIHRoZSBnYWxsZXJ5IGFzICYjODIyMDsxc3QmIzgyMjE7LiBUaGlzIHN5bnRheCBhbGxv d3MgeW91IHRvIHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzbmlwcGV0cywg ZS5nLjo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29kZT48 L3A+CgoJPHA+WW91IGNhbiBvdmVycmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXll ZCBieSBuYXZlYXJsaWVyIGFuZCBuYXZsYXRlciBieSBzcGVjaWZ5aW5nIGEgY29sb24gYW5k IGEgbnVtYmVyLiBTbyB0byBvbmx5IHNob3cgMiBpdGVtcyB0byB0aGUgbGVmdCBvZiB0aGUg Y3VycmVudCBwYWdlIGFuZCAzIGl0ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxjb2RlPntuYXZl YXJsaWVyOjJ9IHtuYXZsYXRlcjozfTwvY29kZT4gaW4geW91ciBmb3JtLiBDdXJyZW50bHkg PGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxhdGVyfTwvY29kZT4g b25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9uIGhvdyB0byBvZmZl ciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD4KCgk8aDMg aWQ9ImNvbWJvcyI+Q29tYm9zPC9oMz4KCgk8cD5JZiB0aGUgYnVpbHQtaW4gPGEgaHJlZj0i I3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3O3QgZW5vdWdo IGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGluZyB0aGUgc2Ft ZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUgdHlwaW5nLCB5 b3UgY2FuIGRlZmluZSB5b3VyIG93biByZXBsYWNlbWVudCB0YWdzLiBUaGUgc3ludGF4IGlz OjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtuZXd0YWcxOmRlZmluaXRpb24sIG5ld3Rh ZzI6ZGVmaW5pdGlvbiwgLi4uJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD4mIzgyMTY7ZGVmaW5p dGlvbiYjODIxNzsgY2FuIGJlIGFueSBmaXhlZCB0ZXh0LCBhbnkgZXhpc3RpbmcgcmVwbGFj ZW1lbnQgdGFnLCBvciBhbnkgYXJ0aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCByZWFs bHkgd2lsZCBoZXJlOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3VuZCBp biA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPnNvIG5vdyA8Y29kZT57aW1naW59PC9jb2RlPiBpcyBhdmFpbGFi bGUgdG8geW91ciBmb3JtIGFuZCBtaWdodCBiZSByZXBsYWNlZCB3aXRoICYjODIyMDtmb3Vu ZCBpbiB6b28gW3RhZ2dlZCB3aXRoIHplYnJhLCBhZnJpY2EsIHN0cmlwZXMuIFBob3RvIGJ5 IEJsb2tlXSYjODIyMTsuICRwcmV0ZXh0IGlzIGFsc28gYXZhaWxhYmxlIGZvciB0aG9zZSBn ZWVrcyB3aG8ga25vdyB3aGF0JiM4MjE3O3MgaW4gaXQgKHVzZSA8Y29kZT5kZWJ1Zz0mcXVv dDs0JnF1b3Q7PC9jb2RlPiB0byB2aWV3IGFsbCBhdmFpbGFibGUgYXJ0aWNsZSB2YXJpYWJs ZXMpLjwvcD4KCgk8cD5PbmUgdGhpbmcgdG8gd2F0Y2ggb3V0IGZvciBpcyB0aGF0IHRoZSBz cGFjZSBjaGFyYWN0ZXIgaXNuJiM4MjE3O3QgbmVjZXNzYXJpbHkgYSBkZWxpbWl0ZXIgZm9y IDxjb2RlPj88L2NvZGU+IHZhcmlhYmxlcyAoYmVjYXVzZSBjdXN0b20gZmllbGRzIGNhbiBo YXZlIHNwYWNlcyBpbiB0aGVtKS4gU28gPGNvZGU+Y29tYm89JnF1b3Q7ZG9lc25vdHdvcms6 P3MgaW4gP2NhdGVnb3J5MSZxdW90OzwvY29kZT4gd2lsbCBsb29rIGZvciBhIHZhcmlhYmxl IGxhYmVsbGVkICYjODIyMDtzIGluJiM4MjIxOyBhbmQgb25lIGNhbGxlZCAmIzgyMjA7Y2F0 ZWdvcnkxJiM4MjIxOy4gT25seSBvbmUgb2YgdGhvc2UgZXhpc3RzISBDbGV2ZXIgdXNlIG9m IHBhcmVudGhlc2VzIG9yIG90aGVyIHB1bmN0dWF0aW9uIGNhbiB3b3JrIHJvdW5kIHRoaXMu PC9wPgoKCTxoMyBpZD0iY29sbGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2gzPgoKCTxwPklm IHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5PC9lbT4gZnVua3kgeW91IGNhbiBwdXQgdGhl IHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRpb24gbW9kZSYj ODIyMTsuIEluIHRoaXMgbW9kZSB5b3VyIGNob3NlbiBmb3JtIGlzIDxzdHJvbmc+bm90PC9z dHJvbmc+IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25seSB1c2VkIG9uY2Ug YXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgaW1hZ2VzIGhhdmUgYmVl biBpbnRlcm5hbGx5ICYjODIyMDtjb2xsZWN0ZWQmIzgyMjE7LiBJbiBlZmZlY3QsIHRoZSBw bHVnaW4gYnVpbGRzIHVwIGEgZ2lhbnQgYXJyYXkgb2YgYWxsIG1hdGNoaW5nIGltYWdlcyBy ZWFkeSBmb3IgeW91IHRvIG91dHB1dCB0aGVtIGFsbCBpbiBvbmUgZ28uIFRoaXMgaXMgdmVy eSBoYW5keSBmb3IgZG9pbmcgc2xpZGVzaG93cyBhbmQgaXMgYmVzdCBleHBsYWluZWQgYnkg ZXhhbXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDsxJnF1b3Q7PC9jb2RlPjwv cD4KCgk8cD5zd2l0Y2hlcyBjb2xsYXRpb24gbW9kZSBvbi4gSWYgdGhlIHBsdWdpbiBtYXRj aGVkIDQgaW1hZ2VzIGFuZCB5b3Ugd2VyZSB0byB1c2UgdGhlIHJlcGxhY2VtZW50IHRhZyA8 Y29kZT57bmFtZX08L2NvZGU+IGluIHlvdXIgZm9ybSBsaWtlIHRoaXM6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczog e25hbWV9CjwvY29kZT48L3ByZT4KCgk8cD55b3UgbWlnaHQgZ2V0IHRoaXM6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdl czogaGVyb24uanBnLHBlbmd1aW4uanBnLGVtdS5qcGcscHVmZmluLmpwZwo8L2NvZGU+PC9w cmU+CgoJPHA+U29tZXRpbWVzIGl0JiM4MjE3O3MgdXNlZnVsIHRvIGJlIGFibGUgdG8gcHV0 IHF1b3RlcyBhcm91bmQgZWFjaCBpdGVtIHNvIHlvdSBjYW4gdGVsbCBjb2xsYXRlIG1vZGUg dG8gZG8gdGhhdCBpbnN0ZWFkOjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3Rl OntuYW1lfSZxdW90OzwvY29kZT48L3A+CgoJPHA+WW91IHdvdWxkIHRoZW4gZ2V0OjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBp bWFnZXM6ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90Oywm cXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoZSBkZWxpbWl0ZXIgKGEgY29tbWEgaW4gdGhpcyBjYXNlKSBjYW4gYmUgb3Zl cnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRlLiBZb3UgbWF5 IHVzZSA8Y29kZT5zZ2xxdW90ZTwvY29kZT4gdG8gd3JhcCBzaW5nbGUgcXVvdGVzIHJvdW5k IHRoZSBpdGVtcywgb3IgJiM4MjIwO2RibHF1b3RlJiM4MjIxOyBhcyBhIHN5bm9ueW0gZm9y ICYjODIyMDtxdW90ZSYjODIyMTsgaWYgeW91IHByZWZlci4gWW91IGNhbiBxdW90ZSBtb3Jl IHRoYW4gb25lIHRoaW5nIGF0IG9uY2UgYnkgc3BlY2lmeWluZyB0aGUgaXRlbXMgYXMgYSBk ZWxpbWl0ZWQgbGlzdDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFt ZX06e2FsdH06e2ltZ2lufSZxdW90OzwvY29kZT48L3A+CgoJPHA+WWVzLCB5b3UgY2FuIHVz ZSBjb21ib3MhIFRoZSBkZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGl0ZW1zIGNhbiBiZSBvdmVy cmlkZW4gd2l0aCB0aGUgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYXR0cmlidXRlLjwvcD4K Cgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBpcyB0 aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlzdC4g WW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGludGVy bmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1czo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0gbWln aHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90 OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJlZm9y ZSkKKG5hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24uanBnCihuYW1lIzN9IHdvdWxk IG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVu IHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90PC9z dHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVzZSBp dCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVzIGlu IHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7bmFtZX0mcXVvdDs8L2NvZGU+ KTwvcD4KCgk8cD5NZXNzaW5nIGFyb3VuZCB3aXRoIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwg aXRlbXMgYW5kIGxpc3RzIGNhbiB5aWVsZCBzb21lIHZlcnkgaW50ZXJlc3RpbmcgcmVzdWx0 cyBhbmQgYWxsb3dzIHNvbWUgY29tcGxldGVseSB3YWNreSBnYWxsZXJpZXMgdG8gYmUgZ2Vu ZXJhdGVkLiBUcnkgY29tYmluaW5nIHNtZF9nYWxsZXJ5IHRhZ3Mgd2l0aCA8Y29kZT4mbHQ7 dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IGZvciBhIHJlYWwgbWluZCBzY3JhbWJsZSA6 LSk8L3A+CgoJPGgzIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gzPgoKCTxwPlRoZSBleGFt cGxlcyBhbGwgdXNlIHRoZSBjbGFzc2ljIHpvbyB3ZWJzaXRlLiBMZXQmIzgyMTc7cyBzcGVj aWZ5IHNvbWUgcGljdHVyZXMgdG8gcHVsbCBvdXQgb2YgdGhlIGRhdGFiYXNlOjwvcD4KCgk8 aDQgaWQ9ImVnMSI+RXhhbXBsZSAxOiBzaW1wbGUgLyBsaWdodGJveGVkIGdhbGxlcnk8L2g0 PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRf Z2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7IHN1YmxldmVsPSZxdW90O2Fs bCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPlRoYXQgcHVsbHMgb3V0IGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBhbmltYWxzIGNhdGVn b3J5LCBpbmNsdWRpbmcgYWxsIHN1Yi1jYXRlZ29yaWVzLCBhbmQgcGFzc2VzIHRoZW0gdG8g dGhlIGZvcm0gY2FsbGVkICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3IgcHJvY2Vzc2luZy4g VGhlIGZvcm0gY291bGQganVzdCBiZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgY2xhc3M9JnF1b3Q7YW5pbWFnZSZxdW90OyBz cmM9JnF1b3Q7e3VybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDtk aXYgY2xhc3M9JnF1b3Q7YWNhcHRpb24mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvZGl2Jmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtZWFucywgZm9yIGV2ZXJ5IG1hdGNoZWQgaW1hZ2Us IHN1YnN0aXR1dGUgaXRzIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LCBhbHQgYW5k IHRpdGxlIHRhZ3MgaW50byB0aGUgcmVsZXZhbnQgcGxhY2VzLiBUaHVzIHlvdSBnZXQgYSBz ZXJpZXMgb2YgaW1hZ2VzIG9uIHRoZSBwYWdlLCB3aGljaCB5b3UgY2FuIHN0eWxlIGFjY29y ZGluZ2x5LjwvcD4KCgk8cD5Gb3IgYSBtb3JlIGZhbmN5IG91dHB1dCB1c2luZywgc2F5LCBz bGltYm94LCB5b3UgY291bGQgbG9hZCB0aGUgcmVsZXZhbnQgbGlicmFyaWVzIGFuZCBzdHls ZXMgaW4gdGhlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gb2YgeW91ciBwYWdlOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlw ZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5q cyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQv amF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaW1ib3guanMmcXVvdDsmZ3Q7Jmx0 Oy9zY3JpcHQmZ3Q7CiZsdDtsaW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9 JnF1b3Q7dGV4dC9jc3MmcXVvdDsgaHJlZj0mcXVvdDsvY3NzL3NsaW1ib3guY3NzJnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGVuIHlvdXIgJiM4MjE2O2dhbGxlcnkmIzgy MTc7IGZvcm0gY291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O2EgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsgaHJl Zj0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsKICAgICB0aXRsZT0m cXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdodH0m cXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRofSZxdW90OyZndDsKICZsdDt0eHA6dGh1bWJuYWls IGlkPSZxdW90O3tpZH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+Vm9pbGEhIFVzaW5nIHRoZSBzYW1lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgaGF2ZSBjaGFu Z2VkIHRoZSB3YXkgdGhlIGdhbGxlcnkgcmVuZGVycyBmcm9tIGEgc2ltcGxlIGxpc3QgdG8g YSBmdWxsLWZlYXR1cmVkIHNsaW1ib3guIFdpdGggdmlydHVhbGx5IHRoZSBzYW1lIGZvcm0g eW91IGNhbiBzd2l0Y2ggdGhlIG91dHB1dCB0byB0aGlja2JveCwgbGlnaHRib3gsIGxpdGVi b3gsIG1vb25ib3ggb3Igd2hhdGV2ZXIteW91LWxpa2UtYm94IGRlcGVuZGluZyBvbiB3aGlj aCBsaWJyYXJpZXMgeW91IGxvYWQuIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3Vy IGZhdm91cml0ZSBlZmZlY3QgYW5kIHBsdWcgaXQgaW50byBzbWRfZ2FsbGVyeS48L3A+CgoJ PGg0IGlkPSJlZzIiPkV4YW1wbGUgMjogbGF1bmNoIGZyb20gb25lIGltYWdlPC9oND4KCgk8 cD5BIGNvbW1vbiByZXF1ZXN0IGlzIHRvIGJlIGFibGUgdG8gJiM4MjIwO2xhdW5jaCYjODIy MTsgYSBzbGltYm94IGdhbGxlcnkgZnJvbSBhIHNpbmdsZSBpbWFnZSBvciB0ZXh0IGxpbmsu IFVzaW5nIGEgc2luZ2xlIGltYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFs cyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZx dW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0 PSZxdW90OzEmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGlz IHRpbWUgd2UgYXJlIGFkZGluZyB0byB0aGUgZ2FsbGVyeSB0aGUgaW1hZ2UocykgcHVsbGVk IGZyb20gdGhlIGFydGljbGUtaW1hZ2UgZmllbGQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNsZS4g VGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJl cGxhY2VtZW50IHRhZy4gVGhlIHBsdWdpbiBvbmx5IGRpc3BsYXlzIHRoaXMgcGFydCBpZiB0 aGUgdmFsdWUgb2YgdGh1bWJsaW1pdCBoYXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gYmVlbiBy ZWFjaGVkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDthIHJlbD0mcXVvdDtsaWdodGJveC1zbWQmcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90 OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7Jmd0Owp7b2Jq ZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGFuZ2UgdGhlIHN0YXJ0IGlt YWdlIGJ5IHNwZWNpZnlpbmcgPGNvZGU+dGh1bWJvZmZzZXQ8L2NvZGU+ICYjODIxMjsgbm90 ZSB0aGlzIHdpbGwgYWxzbyBzdGFydCB0aGUgbGlnaHRib3ggZWZmZWN0IGZyb20gdGhlIGlt YWdlIHlvdSBjaG9vc2UuIElmIHlvdSB3YW50IHRvIHN0YXJ0IG9uIGEgc3BlY2lmaWMgaW1h Z2UgaW4gcG9zaXRpb24gMSwgdXNlIHRoZSA8Y29kZT5pZDwvY29kZT4gYXR0cmlidXRlIHRv IGJyaW5nIGl0IHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QsIG9yIGNoYW5nZSB0aGUgc29ydCBv cmRlci48L3A+CgoJPHA+SWYgeW91IHdhbnRlZCB0byBsYXVuY2ggdGhlIGdhbGxlcnkgZnJv bSBhIHRleHQgbGluaywgbW9kaWZ5IHRoZSB0YWcgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0 ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdl JnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVy eSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsKICAgICB0ZXh0PSZxdW90O0NsaWNr IHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDQgaWQ9 ImVnMyI+RXhhbXBsZSAzOiBwb3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBhY2hpZXZlIGFu IGVmZmVjdCBzaW1pbGFyIHRvIHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdlIGFuZCBjYXB0 aW9uIHBsYWNlaG9sZGVyIG91dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxlcnksIHRoZW4g aW5jbHVkZSB5b3VyIHNtZF9nYWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0aW1lIHdlIGFy ZSBvbmx5IGludGVyZXN0ZWQgaW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRoZSBjYXRlZ29y aWVzIHVwIHRvIHR3byBsZXZlbHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFscyYjODIyMTsg YW5kIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9t X2ZpZWxkPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVvdDsvaW1hZ2Vz L2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxsY2FwdGlvbiZx dW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgc3VibGV2ZWw9JnF1 b3Q7MiZxdW90OwogICAgIGNhdGVnb3J5PSZxdW90O2FuaW1hbHMsID9teV9jdXN0b21fZmll bGQmcXVvdDsKICAgICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0 aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGgg dHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBp Y3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0 IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxl fSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlk KCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50 aXRsZTsgcmV0dXJuIGZhbHNlJnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVvdDtkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYjMzk7L2ltYWdl cy8xNy5qcGcmIzM5OzsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxj YXB0aW9uJiMzOTspLmlubmVySFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBmYWxzZTsmcXVv dDsmZ3Q7CiAgJmx0O2ltZyBzcmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBhbHQ9JnF1b3Q7 e2FsdH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0 aGVyZSBhcmUgbXVjaCBuZWF0ZXIgd2F5cyBvZiBkb2luZyB0aGlzIGFuZCBpdCYjODIxNztz IG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBzaXRlLCBidXQg aXQgZ2l2ZXMgYSBmbGF2b3VyIG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoKCTxoNCBpZD0i ZWc0Ij5FeGFtcGxlIDQ6IHNsaWRlc2hvdzwvaDQ+CgoJPHA+VGhpcyBvbmUgdXNlcyBjb2xs YXRlIG1vZGUgYnV0IGlzIG5vdCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQu IEluIHlvdXIgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVv dDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90 OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNj cmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZndDsmbHQ7L3Nj cmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogIGNhdGVn b3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90Owog IGNvbWJvPSZxdW90O2ltZ2xpc3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0ZT0mcXVvdDtx dW90ZTp7aW1nbGlzdH06e2FsdH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRo YXQgcHVsbHMgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNoIGNhdGVnb3Jp ZXMuIEFsdGhvdWdoIHRlY2huaWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJvIGhhcyBiZWVu IGRlZmluZWQgdG8gc2hvdyBob3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29tYm8gaXMgY2Fs bGVkIDxjb2RlPmltZ2xpc3Q8L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRoZSBpbWFnZSYj ODIxNztzIElEIG51bWJlciBwbHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0aGlzIGluIHRo ZSBjb2xsYXRlIGF0dHJpYnV0ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91YmxlIHF1b3RlcyBy b3VuZCBldmVyeSBpdGVtIGluICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQgJiM4MjE2O2Fs dCYjODIxNzsuIFRoZW4gd2UgY2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgbmVjZXNz YXJ5IGphdmFzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIHNsaWRlc2hvdzo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3Ns aWRlc2hvdyZxdW90OyBpZD0mcXVvdDtzbGlkZXNob3cxJnF1b3Q7Jmd0OwogJmx0O2ltZyBz cmM9JnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdlcy97aWQjMX0uanBnJnF1b3Q7 CiAgICAgYWx0PSZxdW90O3thbHQjMX0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRoIzF9JnF1 b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0IzF9JnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0Owo8 L2NvZGU+Cjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQv amF2YXNjcmlwdCZxdW90OyZndDsKbXlTaG93MSA9IG5ldyBTbGlkZXNob3coJnF1b3Q7c2xp ZGVzaG93MSZxdW90OywKICB7IGh1OiAmcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1h Z2VzLyZxdW90OywKICAgIGltYWdlczogW3tpbWdsaXN0fV0sCiAgICBjYXB0aW9uczogW3th bHR9XSwKICAgIGNsYXNzZXM6IFsmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O25leHQmcXVvdDss JnF1b3Q7YWN0aXZlJnF1b3Q7XSwKICAgIHR5cGU6ICZxdW90O2ZhZGUmcXVvdDsKICB9KTsK Jmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgdGhlIGluaXRp YWwgcG9ydGlvbiAoaW4gdGhlIGRpdiBhbmQgaW1nIHRhZ3MpIHVzZXMgdGhlICYjODIxNjsj JiM4MjE3OyBub3RhdGlvbiBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBkaXNwbGF5IG9uZSBp bWFnZSB0byAmIzgyMjA7c3RhcnQmIzgyMjE7IHRoZSBzbGlkZXNob3cuIEluIHRoaXMgY2Fz ZSB3ZSYjODIxNztyZSB1c2luZyB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIGxpc3QsIGJ1dCB5 b3UgY2FuIGNoYW5nZSB0aGUgIzEgZm9yICM0MiBpZiB5b3Ugd2FudGVkIHRvIHNob3cgdGhl IGZvcnR5LXNlY29uZCBpbWFnZSBpbnN0ZWFkISBUaGUgcGFydCBpbiB0aGUgc2NyaXB0IHRh ZyB1c2VzIHRoZSBmdWxsLCBxdW90ZWQgbGlzdHMgYmVjYXVzZSB0aGF0JiM4MjE3O3MgdGhl IGZvcm1hdCB0aGUgamF2YXNjcmlwdCByZXF1aXJlcy48L3A+CgoJPGg0IGlkPSJlZzUiPkV4 YW1wbGUgNTogcGFnaW5hdGlvbjwvaDQ+CgoJPHA+VG8gYWRkIHBhZ2luZyB0byBhIGdhbGxl cnkgeW91IHVzZSB0aGUgPGNvZGU+bGltaXQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBzaG93IGEg bnVtYmVyIG9mIHRodW1icyBwZXIgcGFnZS4gRm9yIGEgcGFnZWQgdGh1bWJwb3AgZ2FsbGVy eSB0aGF0IHNob3dzIGZpdmUgdGh1bWJzIHBlciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVv dDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHkuanBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlk PSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRf Z2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgZm9ybT0mcXVvdDtnYWxs ZXJ5JnF1b3Q7IHBhZ2Vmb3JtPSZxdW90O2dhbGxlcnlfbmF2JnF1b3Q7CiAgbGltaXQ9JnF1 b3Q7NSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlICYjODIxNjtnYWxsZXJ5 JiM4MjE3OyBmb3JtIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIGluIDxhIGhyZWY9IiNlZzQi PmV4YW1wbGUgNDwvYT4sIHdoaWxlIHlvdXIgZ2FsbGVyeV9uYXYgZm9ybSBtaWdodCBsb29r IGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7ZGl2IGNsYXNzPSZxdW90O3RvdGFsJnF1b3Q7Jmd0OyMgb2YgcGljczoge3RvdGFs aW1hZ2VzfSZsdDsvZGl2Jmd0OwogICAgIHtuYXZmaXJzdH0ge25hdnByZXZ9CiAgICAge25h dmVhcmxpZXJ9IHtuYXZ0aGlzfSB7bmF2bGF0ZXJ9CiAgICAge25hdm5leHR9IHtuYXZsYXN0 fQo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtaWdodCByZW5kZXIgc29tZXRoaW5nIHNpbWls YXIgdG8gdGhpcyBiZWxvdyB0aGUgdGh1bWJzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiMgb2YgcGljczogMzgKICAgICBGaXJzdCAmbHQ7IDEgMiAz IDQgNSA2IDcgOCAmZ3Q7IExhc3QKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGVzOjwvcD4KCgk8 dWw+CgkJPGxpPlVzZSB7bmF2dGhpc3VybH0gaWYgeW91IHdhbnQgdGhlIGN1cnJlbnQgcGFn ZSBoeXBlcmxpbmtlZDwvbGk+CgkJPGxpPlRoZSBjdXJyZW50IGl0ZW0gYWx3YXlzIGhhcyBh IGNsYXNzIG9mICYjODIyMDtjdXJyZW50JiM4MjIxOzwvbGk+CgkJPGxpPlVzZSB0aGUgPGNv ZGU+bmF2d3JhcHRhZzwvY29kZT4sIDxjb2RlPm5hdmJyZWFrPC9jb2RlPiwgYW5kIDxjb2Rl Pm5hdmNsYXNzPC9jb2RlPiB0YWcgYXR0cmlidXRlcyB0byBzcGVjaWZ5IGl0ZW1zIHRvIHdy YXAgYXJvdW5kIHRoZSBlbnRpcmUgcGFnZWZvcm0uIFRoZSBkZWZhdWx0cyBhcmU6IDxjb2Rl PnVsPC9jb2RlPiwgPGNvZGU+bGk8L2NvZGU+LCBhbmQgPGNvZGU+c21kX2dhbGxlcnlfbmF2 PC9jb2RlPiByZXNwZWN0aXZlbHk8L2xpPgoJCTxsaT5Zb3UgY2FuIGxhYmVsIG5hdmZpcnN0 LCBuYXZsYXN0LCBuYXZwcmV2LCBuYXZuZXh0IGFuZCBuYXZ0aGlzIGJ5IHNwZWNpZnlpbmcg dGhlbSBsaWtlIHRoaXM6IDxjb2RlPntuYXZwcmV2OlByZXZpb3VzfTwvY29kZT4gKHRoZSAm IzgyMTY7OiYjODIxNzsgZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBpcyB0aGUgaXRlbSBzcGVj aWZpZWQgYnkgcGFyYW1kZWxpbSk8L2xpPgoJCTxsaT5uYXZlYXJsaWVyIGFuZCBuYXZsYXRl ciB3aWxsIGJ5IGRlZmF1bHQgc2hvdyBhbGwgcGFnZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUg Y3VycmVudCBvbmUuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieSBzcGVjaWZ5aW5nIHRoZSBu dW1iZXIgb2YgcGFnZXMgeW91IHdhbnQgdG8gc2hvdyBlaXRoZXIgc2lkZS4gZS5nLiBpZiB5 b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZsYXRlcjozfSB3 b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAmZ3Q7Jmd0Ozwv Y29kZT48L2xpPgoJPC91bD4KCgk8aDQgaWQ9ImVnNiI+RXhhbXBsZSA2OiB0aHVtYmNoYW5n ZTwvaDQ+CgoJPHA+SWYgeW91IHdhbnQgdG8gc2ltdWxhdGUgbXVsdGlwbGUgZ2FsbGVyaWVz IGZyb20gb25lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHVzZSA8Y29kZT50aHVtYmNoYW5n ZTwvY29kZT4gdG8gJiM4MjIwO3dhdGNoJiM4MjIxOyBmb3Igd2hlbiBjZXJ0YWluIGF0dHJp YnV0ZXMgb2YgdGh1bWJuYWlscyBjaGFuZ2UgYW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVt Pm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBh Y3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDx0eHA6aWZfZGlmZmVyZW50PiB0YWcuPC9wPgoK CTxwPllvdSBjYW4gd2F0Y2ggdGhlIHVzdWFsIHRoaW5ncyBsaWtlIDxjb2RlPmNhdGVnb3J5 PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29k ZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uIGFuZCBzbyBvbi4gSGVy ZSYjODIxNztzIGFuIGV4YW1wbGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2Jp cmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAgIHRodW1iY2hh bmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgdGh1bWJjaGFuZ2V3cmFwdGFn PSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUgcGx1 Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUgZWZm ZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntjaGFuZ2VkOmNhdGVn b3J5X3RpdGxlfTwvY29kZT4gYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0aHVtYiBs aXN0IGFuZCBhbHNvIHdoZW4gdGhlIGNhdGVnb3J5IHN3aXRjaGVzIGZyb20gJiM4MjE2O2Jp cmRzJiM4MjE3OyB0byAmIzgyMTY7ZmlzaCYjODIxNzsuIFRodXMgeW91ciBnYWxsZXJ5IGZv cm0gY291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+e2NoYW5nZWQ6Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVv dDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZs dDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd291bGQgbWFrZSB0d28gbGlnaHRi b3hhYmxlIHNldHMgb2YgdGh1bWJuYWlscyB3aXRoIGEgaGVhZGluZyAzIGFib3ZlIGVhY2gg Z3JvdXAgY29udGFpbmluZyB0aGUgY2F0ZWdvcnkgdGl0bGUuPC9wPgoKCTxwPk5vdGUgdGhh dCBpZiB5b3UgYWRkIDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8g dGhlIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHNob3cganVzdCBvbmUgdGh1bWJuYWlsIGlu IGVhY2ggZ3JvdXAsIHdpdGggaGVhZGluZ3MgYWJvdmUgZWFjaCB0aHVtYi4gVmlzaXRvcnMg Y2xpY2tpbmcgdGhlIHRodW1iIHdpbGwgbGF1bmNoIHRoZSBsaWdodGJveCBhbmQgYmUgYWJs ZSB0byBicm93c2UgdGhlIHJlbGV2YW50IGNhdGVnb3J5LjwvcD4KCgk8aDMgaWQ9ImNoYW5n ZWxvZyI+Q2hhbmdlbG9nPC9oMz4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNpb25zIGFuZCBj aGFuZ2VzIGFyZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRhPC9zdHJvbmc+ PC9wPgoKCTx1bD4KCQk8bGk+MTQgRmViIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdz b24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4xLnR4dCI+MC4xPC9hPiB8IEluaXRp YWwgcmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJPGxp PjE5IEZlYiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMv c21kX2dhbGxlcnlfdjAuMi50eHQiPjAuMjwvYT4gfCBBZGRlZCA8YSBocmVmPSJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3MjQ1OSNwMTcyNDU5 Ij57Z2FsbGVyeWlkfTwvYT4gKHRoYW5rcyBybG9hZGVycm8pIGFuZCBzb21lIHNrZWxldG9u IGRvY3M8L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPk9mZmljaWFsPC9zdHJvbmc+PC9wPgoK CTx1bD4KCQk8bGk+MTEgTWFyIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29t L2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zLnR4dCI+MC4zPC9hPiB8IE9mZmljaWFsIHB1 YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFkZGVkIHtjb3Vu dGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyA8YSBocmVmPSJodHRw Oi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3MzQ5MCNwMTcz NDkwIj5qYWtvYjwvYT4pPC9saT4KCQk8bGk+MTUgTWFyIDA4IHwgPGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMS50eHQiPjAuMzE8 L2E+IHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5kZWZpbmVkIGluZGV4ZXMgYW5kIDxhIGhyZWY9 Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc0ODE4 I3AxNzQ4MTgiPmFkZGVkIHtjYXRlZ29yeV90aXRsZX08L2E+ICh0aGFua3MgPGEgaHJlZj0i aHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xNzQ4MjAj cDE3NDgyMCI+anN0dWJiczwvYT4pPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwgPGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4zMi50eHQi PjAuMzI8L2E+IHwgRml4ZWQgYW5vdGhlciA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBh dHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk0NyNwMTc0OTQ3Ij51bmRlZmluZWQg aW5kZXg8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3Zp ZXd0b3BpYy5waHA/cGlkPTE3NDk2MSNwMTc0OTYxIj5yZW1vdmVkIGJvZ3VzIGNhbGwgdG8g c21kX2xpYjwvYT4gKGJvdGggdGhhbmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1hciAw OCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxl cnlfdjAuMzMudHh0Ij4wLjMzPC9hPiB8IERpZCB2MC4zMSBwcm9wZXJseSwgaW5jbHVkaW5n IHRhYmxlIHByZWZpeCAodGhhbmtzIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVy bi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc1MzAyI3AxNzUzMDIiPm5hcmRvPC9hPik8L2xp PgoJCTxsaT4wMSBBcHIgMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93 bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjM0LnR4dCI+MC4zNDwvYT4gfCBGaXhlZCA8c3BhbiBj bGFzcz0iY2FwcyI+U1FMPC9zcGFuPiBwYXJlbnRoZXNpcyBidWcgOyBhZGRlZCA8YSBocmVm PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NTYz NyNwMTc1NjM3Ij5lbXB0eWNsYXNzIGFuZCB7bWF4aW1hZ2VzfTwvYT4gKHRoYW5rcyB0aGVf Z2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdz b24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC40LnR4dCI+MC40PC9hPiB8IENoYW5n ZWQgdGh1bWIgdG8gYWxsb3cgdGh1bWIvZnVsbHNpemUgc3dhcHBpbmcgOyBBZGRlZCB0aHVt YmNoYW5nZSwgdGh1bWJjaGFuZ2V3cmFwdGFnLCB0aHVtYmNoYW5nZWNsYXNzLCB7dGh1bWJp bmRleH0sIHt0aHVtYmNvdW50ZXJ9IGFuZCB0aGUge2NoYW5nZWQ6Kn0gcmVwbGFjZW1lbnQg dGFncyAodGhhbmtzIGZ1bHMpPC9saT4KCQk8bGk+MjYgTWF5IDA4IHwgPGEgaHJlZj0iaHR0 cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC40MS50eHQiPjAu NDE8L2E+IHwgRml4ZWQgRGlyZWN0b3J5IHNlcGFyYXRvciAodGhhbmtzIGN1ZGEpIDsgYWRk ZWQgcmF3IHBhZ2UgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBuYXYg cmVwbGFjZW1lbnQgYXJyYXkgYW5kIG1hZGUgdGhlIG5hdiBhcnJheSBhdmFpbGFibGUgaW4g dGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50cyBhcnJheSAodGhhbmtzIHZpc3VhbHBlb3BsZSk8 L2xpPgoJCTxsaT4yNyBNYXkgMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20v ZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjQyLnR4dCI+MC40MjwvYT4gfCBBZGRlZCBwYWdl cG9zICh0aGFua3MgZHVjaGFtcCk8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImNyZWRpdHMiPkNy ZWRpdHM8L2gzPgoKCTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3Rl ZCB3aXRob3V0IHRoZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdl dF9mb3JfZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0 YW5kcyBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3Vw ZWQgdXAgdmVyc2lvbiBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20g c21kX3NsaW1ib3guIFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQg dG8gYW55b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1l IG9yIHRoZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91 cy48L3A+CgoJPHA+PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAt LT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS40 NSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMw JSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6 ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsg Ym9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlz cGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3Nt ZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0 LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRk aW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZl IHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTog MnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNv bG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsg dGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFw eCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3 cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5Mzsg Zm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4 OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVj b3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAg O3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZv bnQtd2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBi b3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6OTAlOyB0 ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9oZWxwIHRkLCAj c21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQoj c21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRfaGVscCBsaSB7 IG1hcmdpbi1sZWZ0OjM1cHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4 OyB9Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1k NSI7czozMjoiNWZhNGY5MzVjOTI2OWY2Y2ZkZmJjZjY3YTMxNGIwMmEiO30=