# Name: smd_gallery v0.55 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC41NSI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjM2NzU4OiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ25hbWUnID0+ICcnLA0KCQknY2F0 ZWdvcnknID0+ICcnLA0KCQknYXNwZWN0JyA9PiAnJywNCgkJJ2F1dGhvcicgPT4gJycsDQoJ CSdkaW1lbnNpb25zJyA9PiAnJywNCgkJJ2V4dGVuc2lvbicgPT4gJycsDQoJCSdkaXJlY3Rv cnknID0+ICcnLA0KCQknbWF0Y2gnID0+ICcnLA0KCQknc3VibGV2ZWwnID0+ICcwJywNCgkJ J2VzY2FwZScgPT4gJ2FsdCwgdGl0bGUsIGNhcHRpb24nLA0KCQknc29ydCcgPT4gJycsDQoJ CSdvZmZzZXQnID0+ICcwJywNCgkJJ2xpbWl0JyA9PiAnMCcsDQoJCSdtYXhsaW1pdCcgPT4g Jzk5OTk5JywNCgkJJ3RodW1ibGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVtYm9mZnNldCcg PT4gJzAnLA0KCQkndGh1bWInID0+ICcwOjEnLA0KCQkndGh1bWJzaXplJyA9PiAnJywNCgkJ J2ltZ3NpemUnID0+ICcnLA0KCQknb25jaGFuZ2UnID0+ICdjYXRlZ29yeScsDQoJCSdvbmNo YW5nZXdyYXB0YWcnID0+ICcnLA0KCQknb25jaGFuZ2VjbGFzcycgPT4gJycsDQoJCSdvYmpl Y3Rmb3JtJyA9PiAnJywNCgkJJ2dyb3VwdGFnJyA9PiAnJywNCgkJJ2dyb3VwY2xhc3MnID0+ ICcnLA0KCQkndGV4dCcgPT4gJycsDQoJCSdmb3JtYXQnID0+ICRkYXRlZm9ybWF0LA0KCQkn Z210JyA9PiAnJywNCgkJJ2xhbmcnID0+ICcnLA0KCQknY29sbGF0ZScgPT4gJycsDQoJCSdj b21ibycgPT4gJycsDQoJCSdwYWdpbmcnID0+ICcwJywNCgkJJ3BhZ2Vmb3JtJyA9PiAnJywN CgkJJ3BhZ2Vwb3MnID0+ICdiZWxvdycsDQoJCSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQkn bmF2YnJlYWsnID0+ICdsaScsDQoJCSduYXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdics DQoJCSdlbXB0eWNsYXNzJyA9PiAnZW1wdHknLA0KCQknZ2FsbGVyeWlkJyA9PiAnPzQ6Nics DQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2h0bWxfaWQnID0+ICcnLA0KCQknYnJlYWsnID0+ ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykp Ow0KDQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lm aWVkIG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dp YyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1w dHkoJGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQpICYmIGVtcHR5KCRuYW1lKSkgPyBmYWxzZSA6 IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVnb3J5KSA/IGRvU2xhc2goJGNhdGVn b3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYyddOiAnJyk7DQoJJHNvcnQgPSAoJHNv cnQpID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdjYXRlZ29yeScgKTsNCg0KCS8vICoq IExPT0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9sZHMgZGF0YWJhc2UgY29sdW1uIGFz IGtleSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIgYXMgdmFsdWUuDQoJLy8gQWRkaXRp b25hbCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9yIGl0ZXJhdGlvbiB3aGlsZSBjcmVh dGluZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZh bHVlIGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMv YXJyYXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgpOw0KCSRleHRyYU1hcCA9IGFycmF5 KCk7DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAiaWQiLCAiYWx0IiwgImNhcHRpb24i LCAiY2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAiZXh0IiwgInc6d2lkdGgiLCAiaDpo ZWlnaHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0aHVtYl9oOnRodW1iX2hlaWdodCIs ICJ0aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmllbGRzID0gYXJyYXkoImFsdCIsICJj YXB0aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUgTUxQIGNvbHVtbiBuYW1lcywgc2lu Y2UgdXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90LiBDYXRlZ29yeSB0aXRsZSBhbHNv IGhhcyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xhbmcgPSAoaXNzZXQoJGwxMG5fbGFu Z3VhZ2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSA6IExBTkc7DQoJJGRm bHRfdGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1bW5zID0gZG9fbGlzdCgkY29sdW1u cyk7DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVDb2xzLCAkY29sdW1ucykgYXMgJGNv bGluZm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNvbGluZm8sICI6Iik7DQoJCSRjb2x0 YmwgPSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoNCgkJaWYgKCRjb2xiaXRbMF0gPT0g JycpIGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29sdGJsKSA+IDEpIHsNCgkJCSR0Ymwg PSAkY29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29sdGJsWzFdOw0KCQl9IGVsc2Ugew0K CQkJJHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1lID0gJGNvbHRibFswXTsNCgkJfQ0K CQkkY29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ICRjb2xiaXRbMV0gOiAkY29sbmFt ZTsNCgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6JycpLiggKGlzc2V0KCRsMTBuX2xh bmd1YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xuYW1lLCAkbWxwRmllbGRzKSkgPyBf bDEwbl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0aGlzbGFuZykuICcgQVMgJy4kY29s bmFtZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJaWYgKCFpbl9hcnJheSgkY29saW5m bywgJGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRjb2xuYW1lXSA9ICRjb2xpZDsNCgkJ fQ0KCX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUoJGZpZWxkTWFwKTsNCg0KCS8vIEhh bmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkk dGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0K CSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0 fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGluZzsNCgkkb2JqZWN0Zm9y bSA9IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRvYmplY3Rmb3Jt KTsNCg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxsb3dlZCA9IGFycmF5KCJhYm92ZSIs ICJiZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXkoKTsNCgkkY291bnRpbmcgPSAwOw0K CWlmICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9IDE7DQoJCSRjb3VudGZvcm0gPSBk b19saXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRjb3VudHBvcyA9IHN0cl9yZXBsYWNl KCdzbWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBjb252ZW5pZW5jZQ0KCQkkY291bnRw b3MgPSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvdW50cG9z IGFzICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25zW10gPSAoaW5fYXJyYXkoJGNvdW50 aXRlbSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50aXRlbSA6ICRjb3VudFBvc0FsbG93 ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9 IGFycmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAo JHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3Jt KCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywgJHBh Z2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZv cmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0KCQkJJHBhZ2VvdXRbXSA9IChpbl9h cnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQ b3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJ JG9uY2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0g KCRvbmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9w dHMgPSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJG9uY2hhbmdlIGFzICRy ZXNldE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9IGRvX2xpc3QoJHJlc2V0T3B0LCAkcGFyYW1k ZWxpbSk7DQoNCgkJaWYgKGNvdW50KCRyZXNldFBhcnRzKSA+IDEpIHsNCgkJCWlmICgkcmVz ZXRQYXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFy dHNbMF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFydHNbMV1dID0gIiI7DQoJCQl9IGVsc2Ugew0K CQkJCSRyZXNldEZvcm1zWyRyZXNldFBhcnRzWzBdXSA9ICRyZXNldFBhcnRzWzFdOw0KCQkJ CSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF1dID0gIiI7DQoJCQl9DQoJCX0gZWxzZSB7DQoJ CQkkcmVzZXRPcHRzWyRyZXNldFBhcnRzWzBdXSA9ICIiOw0KCQl9DQoJfQ0KDQoJLy8gRXNj YXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8gMCA6IDE7DQoJJGVzY2FwZXMgPSBk b19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAoJGVzY2FwZXMgYXMgJGlkeCA9 PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1bnNldCgkZXNjYXBlc1skaWR4 XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVudGlmaWVyIGlzIHVzZWQgZm9y IGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1ibmFpbCBwYWdlIGxpbmtzDQoJJGdh bGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcnIHx8IHN1YnN0cigkZ2FsbGVyeWlk LDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEgKGZhaXJseSBsaWtlbHkpIHVuaXF1 ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJCSRnYWxsVG1wID0gbWQ1KCRjYXRl Z29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1YmxldmVsLiRzb3J0LiRsaW1pdC4kbWF4 bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXApID0gZXhwbG9kZSgiOiIsIHN1 YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVuKSkg PyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChlbXB0eSgkZ2FsbFNraXApKSA/ ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAk Z2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4oJGdh bGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0gZWxz ZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCgkkZ2FsbElEID0gInNtZF9nbHJ5 XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5jcmVkaWJseSB1bmxpa2VseSkgbmFt ZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUgdmFyaWFibGVzIGZyb20gdGhlIHRo dW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBkZWZh dWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9fbGlzdCgkdGh1bWIsICI6Iik7 DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1i T3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAidCI7DQoJfSBlbHNl IHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkk dGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCX0NCg0KCS8v IFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRpZmZlcnMgaWYgdXNpbmcgZGlyZWN0 b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXkoKTsNCglpZiAoJGRpcmVjdG9yeSkg ew0KCQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAk bWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAk dGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQs ICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhs aW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRmaXhlZE9yZGVy ID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBlbHNlIHsNCgkJLy8gUHJvY2VzcyBj YXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1eCBvZiB0aGUgd2hlcmUgY2xhdXNl Lg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0cyBBTkQgIWNhdHMgQU5EICFJRHMN CgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoNCgkJLy8g U3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlzdCB3aXRoIHF1b3RlcyBhbmQgbWFr ZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0gKCRzdWJsZXZlbCkgPyAiaW1hZ2U6 Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMsICRpZGV4YykgPSBzbWRfZG9MaXN0 KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJG5hbWluYywg JG5hbWV4YykgPSBzbWRfZG9MaXN0KCRuYW1lLCBmYWxzZSwgJycsIGZhbHNlLCAkZGVsaW0s ICRzcGMpOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMpID0gc21kX2RvTGlzdCgkY2F0ZWdv cnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGltLCAkc3BjKTsNCgkJaWYgKCRpZGlu Yykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2Rl KCIsIiwgJGlkaW5jKS4nKSc7DQoJCX0NCgkJaWYgKCRuYW1pbmMpIHsNCgkJCSRuYW1saXN0 ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJ Zm9yZWFjaCAoJG5hbWluYyBhcyAkdGhlTmFtZSkgew0KCQkJCSRuYW1lYml0cyA9IGRvX2xp c3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQo JG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lYml0c1sxXSwgJG5hbWxp c3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRz WzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYgKCRuYW1saXN0WydleGFjdCdd KSB7DQoJCQkJJGNsYXVzZU9SW10gPSBQRlguInR4cF9pbWFnZS5uYW1lIElOICgnIi5pbXBs b2RlKCInLCciLCAkbmFtbGlzdFsnZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2gg KCRuYW1saXN0WydyZWdleCddIGFzICRyZSkgew0KCQkJCSRjbGF1c2VPUltdID0gUEZYLiJ0 eHBfaW1hZ2UubmFtZSBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJ fQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5j YXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlmICgh ZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2RlKCIgT1Ig IiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBBTkQg IiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gJyBBTkQgJy5QRlguJ3R4cF9jYXRlZ29yeS50 eXBlID0gImltYWdlIic7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgJy5QRlgu J3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMpLicp JyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFn ZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDogJyc7DQoNCgkJaWYg KCRuYW1leGMpIHsNCgkJCSRuYW1saXN0ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAn ZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJZm9yZWFjaCAoJG5hbWV4YyBhcyAkdGhlTmFtZSkg ew0KCQkJCSRuYW1lYml0cyA9IGRvX2xpc3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJ CQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQoJG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhp c3RzKCRuYW1lYml0c1sxXSwgJG5hbWxpc3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7 DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRzWzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0K CQkJaWYgKCRuYW1saXN0WydleGFjdCddKSB7DQoJCQkJJGNsYXVzZSAuPSAiIEFORCAiLlBG WC4idHhwX2ltYWdlLm5hbWUgTk9UIElOICgnIi5pbXBsb2RlKCInLCciLCAkbmFtbGlzdFsn ZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRuYW1saXN0WydyZWdleCddIGFz ICRyZSkgew0KCQkJCSRjbGF1c2UgLj0gIiBBTkQgIi5QRlguInR4cF9pbWFnZS5uYW1lIE5P VCBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0KDQoJCS8vIElm IGEgY2F0ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3Ro aW5nLCB1c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8v IFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcg b2YgbWF0Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJ aWYgKCRjbGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNl ID0gUEZYLid0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAic21kXycgLm10X3JhbmQoKS4gJyInOw0K CQl9DQoNCgkJJGNsYXVzZSA9ICcoJy5zdHJfcmVwbGFjZSgnU01EX0VNUFRZJywgJycsICRj bGF1c2UpLicpJzsNCg0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgSU5DTFVE RUQvRVhDTFVERUQgSURzLCBOQU1FcyBBTkQgQ0FUcyArKyI7DQoJCQlpZiAoJGlkaW5jKSBk bXAoJGlkaW5jKTsNCgkJCWlmICgkaWRleGMpIGRtcCgkaWRleGMpOw0KCQkJaWYgKCRuYW1p bmMpIGRtcCgkbmFtaW5jKTsNCgkJCWlmICgkbmFtZXhjKSBkbXAoJG5hbWV4Yyk7DQoJCQlp ZiAoJGNhdGluYykgZG1wKCRjYXRpbmMpOw0KCQkJaWYgKCRjYXRleGMpIGRtcCgkY2F0ZXhj KTsNCgkJfQ0KDQoJCS8vIEZpbHRlciBieSBhc3BlY3QgcmF0aW8NCgkJaWYgKCRhc3BlY3Qp IHsNCgkJCSRhc3BlY3RzID0gZG9fbGlzdCgkYXNwZWN0LCAkZGVsaW0pOw0KDQoJCQkvLyBD b21wYXJlIGZ1bGxzaXplIG9yIHRodW1ibmFpbCBhc3BlY3QgcmF0aW9zDQoJCQkkZmxkbW9k ID0gKCRmdWxsbW9kKSA9PSAndCcgPyAndGh1bWJfJyA6ICcnOw0KCQkJJHdmbGQgPSBQRlgu J3R4cF9pbWFnZS4nLiRmbGRtb2QuJ3cnOw0KCQkJJGhmbGQgPSBQRlguJ3R4cF9pbWFnZS4n LiRmbGRtb2QuJ2gnOw0KDQoJCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAo JGFzcGVjdHMgYXMgJHJhdGlvKSB7DQoJCQkJc3dpdGNoKCRyYXRpbykgew0KCQkJCQljYXNl ICdwb3J0cmFpdCc6DQoJCQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID4gJy4gJHdmbGQ7 DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAnbGFuZHNjYXBlJzoNCgkJCQkJCSRjbGF1c2VP UltdID0gJHdmbGQuICcgPiAnLiAkaGZsZDsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdz cXVhcmUnOg0KCQkJCQkJJGNsYXVzZU9SW10gPSAkaGZsZC4gJyA9ICcuICR3ZmxkOw0KCQkJ CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJ CQkJJGNsYXVzZSAuPSAnIEFORCAnLiR3ZmxkLicgPiAwIEFORCAnLiRoZmxkLicgPiAwIEFO RCAoJy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQkJfQ0KCQl9DQoNCgkJ Ly8gRmlsdGVyIGJ5IGF1dGhvcg0KCQlpZiAoJGF1dGhvcikgew0KCQkJJGF1dGhvcnMgPSBk b19saXN0KCRhdXRob3IsICRkZWxpbSk7DQoJCQkkY2xhdXNlIC49ICIgQU5EICIgLiBQRlgu InR4cF9pbWFnZS5hdXRob3IgSU4gKCciLmltcGxvZGUoIicsJyIsICRhdXRob3JzKS4iJyki Ow0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGV4dGVuc2lvbg0KCQlpZiAoJGV4dGVuc2lvbikg ew0KCQkJJGV4dGVuc2lvbnMgPSBkb19saXN0KCRleHRlbnNpb24sICRkZWxpbSk7DQoJCQlm b3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkaWR4ID0+ICRleHQpIHsNCgkJCQkkZXh0ZW5zaW9u c1skaWR4XSA9ICIuIi4kZXh0Ow0KCQkJfQ0KCQkJJGNsYXVzZSAuPSAiIEFORCAiIC4gUEZY LiJ0eHBfaW1hZ2UuZXh0IElOICgnIi5pbXBsb2RlKCInLCciLCAkZXh0ZW5zaW9ucykuIicp IjsNCgkJfQ0KDQoJCS8vIEZpbHRlciBieSBkaW1lbnNpb25zDQoJCWlmICgkZGltZW5zaW9u cykgew0KCQkJJGRpbUFsbG93ID0gYXJyYXkoJz0nLCAnPicsICc8JywgJz49JywgJzw9Jyk7 DQoJCQkkZGltcyA9IGRvX2xpc3QoJGRpbWVuc2lvbnMsICRkZWxpbSk7DQoNCgkJCS8vIENv bXBhcmUgZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRmbGRtb2Qg PSAoJGZ1bGxtb2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9IFBGWC4n dHhwX2ltYWdlLicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2ltYWdlLicu JGZsZG1vZC4naCc7DQoNCgkJCSR3ZGltID0gJGRpbXNbMF07DQoJCQkkaGRpbSA9IChpc3Nl dCgkZGltc1sxXSkpID8gJGRpbXNbMV0gOiAnJzsNCg0KCQkJJHdkaW12YWwgPSBwcmVnX3Jl cGxhY2UoJy9bXjAtOV0vJywgJycsICR3ZGltKTsNCgkJCSRoZGltdmFsID0gcHJlZ19yZXBs YWNlKCcvW14wLTldLycsICcnLCAkaGRpbSk7DQoJCQkkd2RpbW9wID0gcHJlZ19yZXBsYWNl KCcvWzAtOV0vJywgJycsICR3ZGltKTsNCgkJCSR3ZGltb3AgPSBpbl9hcnJheSgkd2RpbW9w LCAkZGltQWxsb3cpID8gJHdkaW1vcCA6ICc9JzsNCgkJCSRoZGltb3AgPSBwcmVnX3JlcGxh Y2UoJy9bMC05XS8nLCAnJywgJGhkaW0pOw0KCQkJJGhkaW1vcCA9IGluX2FycmF5KCRoZGlt b3AsICRkaW1BbGxvdykgPyAkaGRpbW9wIDogJz0nOw0KCQkJJGNsYXVzZSAuPSAoKCR3ZGlt KSA/ICcgQU5EICcgLiAkd2ZsZCAuICR3ZGltb3AgLiAkd2RpbXZhbCA6ICcnKSAuICgoJGhk aW0pID8gJyBBTkQgJyAuICRoZmxkIC4gJGhkaW1vcCAuICRoZGltdmFsIDogJycpOw0KCQl9 DQoNCgkJLy8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGluZyBoaWVyYXJj aHkuDQoJCS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2UgYW5kIHRoZSBm b2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJCS8vICAxKSBBbnl0aGluZyBhcHBlYXJpbmcgYmVm b3JlIHJhbmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlIHF1ZXJ5IGZvciBvcmRlcmlu Zw0KCQkvLyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQsIHRoZSByZXN0 IG9mIHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCQkvLyAgICAgVGhlIHJlc3VsdHNl dCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJCS8vICAzKSBJZiByYW5kb20g YXBwZWFycyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhlIGRhdGEgaXMgcmV0cmlldmVkIHJhbmRv bWx5IHRoZW4gdGhlDQoJCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1 bHRzZXQNCgkJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCQkkcG9zdE9yZGVyID0gYXJyYXko KTsNCgkJJHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQcmVmaXggPSAiU09SVF8iOw0KCQkkZml4 ZWRPcmRlciA9ICRyYW5kc29ydCA9IGZhbHNlOw0KCQkkc29ydCA9IGRvX2xpc3QoJHNvcnQs ICRkZWxpbSk7DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgr Kykgew0KCQkJJHNvcnRfZGlyID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsNCgkJCSRk aXJlY3Rpb24gPSAkY29sUmVmID0gJyc7DQoJCQlpZiAoY291bnQoJHNvcnRfZGlyKSA8PSAx KSB7DQoJCQkJJHNvcnRfZGlyWzFdID0gImFzYyI7DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0g InNxbCIpIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8g JyBkZXNjJyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29y dF9kaXJbMV0gPT0gImRlc2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRwb3N0UHJlZml4 LidBU0MnOw0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRzb3J0X2RpclswXSkgew0KCQkJCWNhc2Ug J3JhbmRvbSc6DQoJCQkJCSRydWxlID0gInBvc3QiOw0KCQkJCQlpZiAoJGlkeCA9PSAwKSB7 DQoJCQkJCQkkY2xhdXNlU29ydFtdID0gJ3JhbmQoKSc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJ CQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2Zp eGVkJzoNCgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGlkcyBvciBjYXRlZ29yaWVz DQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJyAmJiAkY2F0ZWdvcnkgPT0gJycpID8g ZmFsc2UgOiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkkY29sUmVm ID0gYXJyYXlfc2VhcmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJCQkJJGNvbE5h bWUgPSAkZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJaWYgKCRy dWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJGNsYXVz ZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJ CWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCQkk cG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sTmFtZSwgInNvcnQiID0+ICRkaXJl Y3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50KCRjbGF1 c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgi LCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJCQllY2hvICIr KyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8vIFRoZSBk YXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUoIiwiLCBhcnJh eV9rZXlzKCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxlID0gKGlzc2V0KCRsMTBuX2xhbmd1YWdl Wydsb25nJ10pKSA/IF9sMTBuX21ha2VfZmllbGRfbmFtZSgndGl0bGUnLCAkdGhpc2xhbmcp IDogJ3RpdGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dzKCINCgkJCVNFTEVDVCBESVNUSU5DVCAk ZmllbGRzLCAiLlBGWC4idHhwX2NhdGVnb3J5LiIuJGNUaXRsZS4iIEFTIGNhdGVnb3J5X3Rp dGxlDQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1hZ2UgTEVGVCBKT0lOICIuUEZYLiJ0eHBfY2F0 ZWdvcnkNCgkJCU9OICIuUEZYLiJ0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAiLlBGWC4idHhwX2Nh dGVnb3J5Lm5hbWUNCgkJCVdIRVJFICRjbGF1c2UNCgkJCUxJTUlUIDAsICRtYXhsaW1pdA0K CQkiLCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRodW1QYWdl LCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0 LCAkcGFnaW5nKTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qtb3JkZXJpbmcgcmVxdWlyZWQ/IERv IGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7DQoJfSBlbHNlIGlmIChj b3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRlIHRoZSByb3dzIGludG8g Y29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgkcnMgYXMgJGtleSA9PiAk cm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVyID0+ICRpdGVtKSB7DQoJ CQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkJJHskdmFybmFtZX1bJGtl eV0gPSAkaXRlbTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlz b3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkvLyBUaGUgbmVjZXNzYXJ5IGV2aWwo KSBpcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgY29scyB0aGVyZSB3aWxsIGJl IGluIHRoZSBhcnJheQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHBvc3RPcmRl cik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRwb3N0T3JkZXJbJGlk eF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVyWyRpZHhdWydzb3J0J107 DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIsICIsJHNv cnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJLy8gSXMgZml4 ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRlciB0aGUgJHJzDQoJaWYg KCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgpOw0KCQkkaWdub3JlTGlz dCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7DQoNCgkJLy8gU3VjayBv dXQgdGhlIGZpeGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhlbiBjYXRlZ29yaWVzDQoJCWZvciAo JGlkeCA9IDA7ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2go JHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGlkICYmIGRvUXVvdGUoJHJvd1snaWQnXSkgPT0g JGlkaW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRyb3c7DQoJCQkJCSRpZ25v cmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCX0N CgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRjYXRpbmMpOyAkaWR4KyspIHsNCgkJ CWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGNhdGVnb3J5ICYmIGRvUXVvdGUo JHJvd1snY2F0ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJT W10gPSAkcm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJ CQl9DQoJCX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJaWYgKCRycykg ew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICghaW5fYXJyYXkoJHJvd1sn aWQnXSwgJGlnbm9yZUxpc3QpKSB7DQoJCQkJCSRyZW1haW5pbmdSU1tdID0gJHJvdzsNCgkJ CQl9DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVyZ2UoJG9yZGVyZWRSUywgJHJlbWFp bmluZ1JTKTsNCgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0aW9uIG9mIHRoZSByZWNvcmQgc2V0 IGFjdHVhbGx5IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zlcg0KCWlmICgkcnMpIHsNCgkJJHJz ID0gYXJyYXlfc2xpY2UoJHJzLCAkb2Zmc2V0LCAoKCRkaXJlY3RvcnkpID8gJGRpcmxpbWl0 IDogKCgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSkpOw0KCX0NCg0KCS8vIFBy ZXBhcmUgZml4ZWQgdGh1bWJzaXplcw0KCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0g Jyc7DQoJJHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gJyc7DQoJaWYgKCR0aHVtYnNp emUpIHsNCgkJJHRodW1iU2l6ZXMgPSBkb19saXN0KCR0aHVtYnNpemUsICRkZWxpbSk7DQoJ CSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcnLCAkdGh1bWJTaXplc1swXSk7 DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0gMSkgew0KCQkJJHRodW1iV2lkdGggPSAk dGh1bWJIZWlnaHQgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR0aHVtYlNpemVz WzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycp ID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVsc2Ugew0KCQkJJHRodW1iV2lkdGgg PSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0 aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6ZXNb MV0pOw0KCQkJJHRodW1iV1VuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJXaWR0aCAh PSAnJykgPyAkdGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJCQkkdW5pdHMgPSBwcmVnX3JlcGxh Y2UoJy9bMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iSFVuaXRzID0g KCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8gJHRodW1iSFVuaXRzIDog JHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gUHJlcGFyZSBmaXhlZCBpbWFnZSBzaXplcw0KCSRp bWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gJyc7DQoJJGltYWdlV1VuaXRzID0gJGltYWdl SFVuaXRzID0gJyc7DQoJaWYgKCRpbWdzaXplKSB7DQoJCSRpbWFnZVNpemVzID0gZG9fbGlz dCgkaW1nc2l6ZSwgJGRlbGltKTsNCgkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0v JywgJycsICRpbWFnZVNpemVzWzBdKTsNCgkJaWYgKGNvdW50KCRpbWFnZVNpemVzKSA9PSAx KSB7DQoJCQkkaW1hZ2VXaWR0aCA9ICRpbWFnZUhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1te MC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdlV1VuaXRzID0gJGltYWdl SFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkaW1hZ2VXVW5pdHMgOiAkdW5pdHM7DQoJCX0g ZWxzZSB7DQoJCQkkaW1hZ2VXaWR0aCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywg JGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdlSGVpZ2h0ID0gcHJlZ19yZXBsYWNlKCcvW14w LTldLycsICcnLCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VXVW5pdHMgPSAoJHVuaXRz ID09ICcnICYmICRpbWFnZVdpZHRoICE9ICcnKSA/ICRpbWFnZVdVbml0cyA6ICR1bml0czsN CgkJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcnLCAkaW1hZ2VTaXplc1sx XSk7DQoJCQkkaW1hZ2VIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICRpbWFnZUhlaWdodCAh PSAnJykgPyAkaW1hZ2VIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBDb2xsYXRp b24gZGVmZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0dXJuZWQgaXRlbS4NCgkv LyBJbnN0ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0IGF0IHRoZSBlbmQgKGl0 ZW1zIG1heSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJhY3RlZCBpZiByZXF1aXJl ZCkNCgkvL1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNob3J0Y3V0IHRvIHNwZWNp ZnkgdGhhdCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mgb2YgIzEsICMyLCAjMyBl dGMpIGFyZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsNCgkJJGRibFF1b3RlID0g JHNnbFF1b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxhdGVPcHRzID0gZG9fbGlz dCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxhdGVPcHRzIGFzICRvcHRp b24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAkcGFyYW1kZWxpbSk7DQoJ CQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJCS8vIFN1cHBseWluZyAn cXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZhbnQgYXJyYXksIGltcGx5 aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlzd2l0Y2ggKCRjb2xUeXBl KSB7DQoJCQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVvdGUgPSAkaW5kZXhlczsN CgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJCWNhc2UgInF1b3RlIjoN CgkJCQkJJGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJ fQ0KDQoJLy8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmluYXRpb25zIG9mIHJlcGxh Y2VtZW50IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9LCAuLi4NCgkkY29tYm9z ID0gYXJyYXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9IGRvX2xpc3QoJGNvbWJv LCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0RlZikgew0KCQkJbGlzdCgk ZGVmUGFydHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdEZWYsIGZhbHNlLCAnJywg ZmFsc2UsICRwYXJhbWRlbGltLCAkc3BjKTsNCgkJCSRkZWZOYW1lID0gInsiLmFycmF5X3No aWZ0KCRkZWZQYXJ0cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFtZV0gPSAkZGVmUGFydHNb MF07DQoJCX0NCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNobyAiKysgQ09NQk9zICsr IjsNCgkJZG1wKCRjb21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3QgdGhlIG91dHB1dA0KCSR0 aHVtYm91dCA9IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0gYXJyYXkoKTsNCgkkbmF2b3V0ID0g YXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJ JGNoSWRlbnRpZmllciA9ICJvbmNoYW5nZSI7DQoNCglpZiAoJGRlYnVnID4gMikgew0KCQll Y2hvICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJfQ0KCWlmICgkZGVidWcg PiAzKSB7DQoJCWVjaG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyArKyI7DQoJCWlmICgkcHJl dGV4dCkgZG1wKCRwcmV0ZXh0KTsNCgkJaWYgKCR0aGlzYXJ0aWNsZSkgZG1wKCR0aGlzYXJ0 aWNsZSk7DQoJfQ0KDQoJaWYoJHJzKSB7DQoJCSRpZHggPSAwOw0KCQkkY3RyID0gMTsNCgkJ JHRodW1iSWR4ID0gMDsNCgkJJHRodW1iQ3RyID0gMTsNCgkJJG51bUltYWdlcyA9IGNvdW50 KCRycyk7DQoJCSRyZXBhZ2VtZW50cyA9IGFycmF5KCk7DQoNCgkJLy8gU2V0IHVwIHRoZSBw YWdpbmcgZmVhdHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFn aW5nKSB7DQoJCQkkbmV4dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSAhPSAkbnVt UGFnZXMpOw0KCQkJJHByZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgPiAxKTsN CgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwg JGdhbGxJRCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0gc21kX2FkZFFTVmFyKCRw cmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UrMSk7DQoJCQkkdGhp c1BhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQs ICR0aHVtUGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0Wydy ZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFnZSA9IHNtZF9hZGRRU1Zh cigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51bVBhZ2VzKTsNCg0KCQkJ Ly8gTGFiZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxhY2VtZW50IHRhZyBhZnRl ciBhIHBhcmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICdsYXRlcicgZG9uJ3QgaGF2 ZSBsYWJlbHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJhbWRlbGltIGlzIHRoZSBt YXggbnVtYmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxsIHBhZ2VzDQoJCQkkbGFi ZWwgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQo J25hdmZpcnN0JyksDQoJCQkJCSd7bmF2cHJldn0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQo J25hdnByZXYnKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJycsDQoJCQkJCSd7bmF2dGhp c30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScgPT4gJHRodW1QYWdlLA0K CQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICRzbWRfZ2Fs bExhbmctPmdUeHQoJ25hdm5leHQnKSwNCgkJCQkJJ3tuYXZsYXN0fScgPT4gJHNtZF9nYWxs TGFuZy0+Z1R4dCgnbmF2bGFzdCcpLA0KCQkJCSk7DQoNCgkJCSRsYWJlbFJFID0gJy9ceyhu YXZbYS16XSspJy4kcGFyYW1kZWxpbS4nKC4rPylcfS8nOw0KCQkJJG51bUxhYmVscyA9IHBy ZWdfbWF0Y2hfYWxsKCRsYWJlbFJFLCAkcGFnZWZvcm0sICRsYWJlbHMpOw0KDQoJCQlmb3Ig KCRsYWJlbEN0ciA9IDA7ICRsYWJlbEN0ciA8ICRudW1MYWJlbHM7ICRsYWJlbEN0cisrKSB7 DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nOw0KCQkJ CSRsYWJlbFskZmllbGRuYW1lXSA9ICRsYWJlbHNbMl1bJGxhYmVsQ3RyXTsNCgkJCQkkcGFn ZWZvcm0gPSBzdHJfcmVwbGFjZSgkbGFiZWxzWzBdWyRsYWJlbEN0cl0sICd7Jy4kbGFiZWxz WzFdWyRsYWJlbEN0cl0uJ30nLCAkcGFnZWZvcm0pOw0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVn ID4gMSkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBMQUJFTFMgKysiOw0KCQkJCWRtcCgkbGFi ZWwpOw0KCQkJfQ0KDQoJCQkvLyBHZW5lcmF0ZSAnZWFybGllcicgYW5kICdsYXRlcicgbGlz dHMNCgkJCSRudW1FYXJsaWVyID0gaW50dmFsKCRsYWJlbFsne25hdmVhcmxpZXJ9J10pOw0K CQkJJG51bUxhdGVyID0gaW50dmFsKCRsYWJlbFsne25hdmxhdGVyfSddKTsNCgkJCSRudW1F YXJsaWVyID0gKCRudW1FYXJsaWVyICYmICgkdGh1bVBhZ2UtJG51bUVhcmxpZXIgPiAxKSkg PyAkbnVtRWFybGllciA6ICR0aHVtUGFnZS0xOw0KCQkJJG51bUxhdGVyID0gKCRudW1MYXRl ciAmJiAoJHRodW1QYWdlKyRudW1MYXRlciA8ICRudW1QYWdlcykpID8gJG51bUxhdGVyIDog JG51bVBhZ2VzLSR0aHVtUGFnZTsNCgkJCSRuYXZFYXJsaWVyID0gJG5hdkxhdGVyID0gYXJy YXkoKTsNCgkJCWZvciAoJGNvZCA9ICR0aHVtUGFnZS0kbnVtRWFybGllcjsgJGNvZCA8ICR0 aHVtUGFnZTsgJGNvZCsrKSB7DQoJCQkJJG5hdkVhcmxpZXJbXSA9ICc8YSBocmVmPSInLnNt ZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGNvZCkuJyI+ Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCWZvciAoJGNvZCA9ICR0aHVtUGFnZSsxOyAkY29k IDw9ICR0aHVtUGFnZSskbnVtTGF0ZXI7ICRjb2QrKykgew0KCQkJCSRuYXZMYXRlcltdID0g JzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2Fs bElELCAkY29kKS4nIj4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJJG5hdkVhcmxpZXIgPSBk b1dyYXAoJG5hdkVhcmxpZXIsICcnLCAkbmF2YnJlYWssICcnKTsNCgkJCSRuYXZMYXRlciA9 IGRvV3JhcCgkbmF2TGF0ZXIsICcnLCAkbmF2YnJlYWssICcnKTsNCg0KCQkJLy8gTWFrZSB1 cCB0aGUgcmVwYWdlbWVudHMgYXJyYXkgZm9yIHBhZ2Vmb3JtDQoJCQkkcmVwYWdlbWVudHMg PSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhy ZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmZpcnN0fSddLic8L2E+JywgJG5h dmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmZpcnN0fSddLCAkbmF2YnJlYWssICRlbXB0 eWNsYXNzKSksDQoJCQkJCSd7bmF2cHJldn0nID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhy ZWY9IicuJHByZXZQYWdlLiciPicuJGxhYmVsWyd7bmF2cHJldn0nXS4nPC9hPicsICRuYXZi cmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZwcmV2fSddLCAkbmF2YnJlYWssICRlbXB0eWNs YXNzKSksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICRuYXZFYXJsaWVyLA0KCQkJCQkne25h dnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlzfSddLCAkbmF2YnJlYWssICdjdXJy ZW50ICcuJGVtcHR5Y2xhc3MpLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiBkb1RhZygnPGEg aHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlzdXJsfSddLic8L2E+Jywg JG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJG5hdkxhdGVy LA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRu ZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5leHR9J10uJzwvYT4nLCAkbmF2YnJlYWspIDog ZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0K CQkJCQkne25hdmxhc3R9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRsYXN0 UGFnZS4nIj4nLiRsYWJlbFsne25hdmxhc3R9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9U YWcoJGxhYmVsWyd7bmF2bGFzdH0nXSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJ CQkne25hdnRoaXNwYWdldXJsfScgPT4gJHRoaXNQYWdlLA0KCQkJCQkne25hdm5leHRwYWdl dXJsfScgPT4gKCgkbmV4dCkgPyAkbmV4dFBhZ2UgOiAnJyksDQoJCQkJCSd7bmF2cHJldnBh Z2V1cmx9JyA9PiAoKCRwcmV2KSA/ICRwcmV2UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZmaXJz dHBhZ2V1cmx9JyA9PiAkZmlyc3RQYWdlLA0KCQkJCQkne25hdmxhc3RwYWdldXJsfScgPT4g JGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJ J3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJCQkne21heGltYWdlc30nID0+ICRh bGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8vIFBlcmZvcm0gZXNjYXBpbmcgaGVyZSwganVz dCBwcmlvciB0byBvdXRwdXQNCgkJCQlpZiAoJGVzY2FwZXMpIHsNCgkJCQkJZm9yZWFjaCAo JHJlcGFnZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJCWlmIChpbl9h cnJheSh0cmltKCRkZWZOYW1lLCAie30iKSwgJGVzY2FwZXMpKSB7DQoJCQkJCQkJJHJlcGFn ZW1lbnRzWyRkZWZOYW1lXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRlZlZhbCwgRU5UX1FVT1RF Uyk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvLyBQZXJmb3JtIHRoZSBzdWJz dGl0dXRpb25zDQoJCQkJJG5hdm91dFtdID0gcGFyc2Uoc3RydHIoJHBhZ2Vmb3JtLCAkcmVw YWdlbWVudHMpKTsNCgkJfQ0KDQoJCS8vIEZvciBldmVyeSBpbWFnZSBpbiB0aGUgZ2FsbGVy eS4uLg0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJCWlmICgkZGlyZWN0 b3J5KSB7DQoJCQkJJHVybFBhdGggPSAkcm93WydwYXRoJ10uJy8nOw0KCQkJfSBlbHNlIHsN CgkJCQkkdXJsUGF0aCA9IGh1LiRpbWdfZGlyLicvJzsNCgkJCX0NCgkJCSR0aGVUaHVtYiA9 ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICR0aHVtYm1vZCAuICRyb3dbJ2V4dCddOw0KCQkJ JGZ1bGxTaXplID0gJHVybFBhdGggLiAkcm93WydpZCddIC4gJGZ1bGxtb2QgLiRyb3dbJ2V4 dCddOw0KDQoJCQkvLyBEbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHVtYiBjb3VudGVyIHRo aXMgdGltZT8NCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMgYXMgJHJlc2V0T3B0ID0+ICRyZXNl dFZhbCkgew0KCQkJCWlmIChzdHJwb3MoJHJlc2V0T3B0LCAnc21kX2V2ZXJ5JykgPT09IDAp IHsNCgkJCQkJJGl0ZXIgPSBleHBsb2RlKCRwYXJhbWRlbGltLCAkcmVzZXRPcHQpOw0KCQkJ CQkkaXRlciA9IChjb3VudCgkaXRlcikgPiAxKSA/ICRpdGVyWzFdIDogMDsNCgkJCQkJaWYg KCR0aHVtYklkeCAlICRpdGVyID09IDApIHsNCgkJCQkJCSR0aHVtYklkeCA9IDA7DQoJCQkJ CQkkdGh1bWJDdHIgPSAxOw0KCQkJCQl9DQoJCQkJfSBlbHNlIGlmICgkcm93WyRyZXNldE9w dF0gIT0gJHJlc2V0VmFsKSB7DQoJCQkJCSR0aHVtYklkeCA9IDA7DQoJCQkJCSR0aHVtYkN0 ciA9IDE7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gT3ZlcnJpZGUgdGh1 bWJzaXplIC8gaW1nc2l6ZSBpZiByZXF1aXJlZA0KCQkJaWYgKCR0aHVtYnNpemUpIHsNCgkJ CQkkdGhlVGh1bWJXaWR0aCA9IGVtcHR5KCR0aHVtYldpZHRoKSA/ICRyb3dbJ3RodW1iX3cn XSA6ICR0aHVtYldpZHRoOw0KCQkJCSR0aGVUaHVtYkhlaWdodCA9IGVtcHR5KCR0aHVtYkhl aWdodCkgPyAkcm93Wyd0aHVtYl9oJ10gOiAkdGh1bWJIZWlnaHQ7DQoJCQkJJHRoZVRodW1i V1VuaXRzID0gJHRodW1iV1VuaXRzOw0KCQkJCSR0aGVUaHVtYkhVbml0cyA9ICR0aHVtYkhV bml0czsNCgkJCX0gZWxzZSB7DQoJCQkJJHRoZVRodW1iV2lkdGggPSAkcm93Wyd0aHVtYl93 J107DQoJCQkJJHRoZVRodW1iSGVpZ2h0ID0gJHJvd1sndGh1bWJfaCddOw0KCQkJCSR0aGVU aHVtYldVbml0cyA9ICR0aGVUaHVtYkhVbml0cyA9ICcnOw0KCQkJfQ0KDQoJCQlpZiAoJGlt Z3NpemUpIHsNCgkJCQkkdGhlSW1hZ2VXaWR0aCA9IGVtcHR5KCRpbWFnZVdpZHRoKSA/ICRy b3dbJ3cnXSA6ICRpbWFnZVdpZHRoOw0KCQkJCSR0aGVJbWFnZUhlaWdodCA9IGVtcHR5KCRp bWFnZUhlaWdodCkgPyAkcm93WydoJ10gOiAkaW1hZ2VIZWlnaHQ7DQoJCQkJJHRoZUltYWdl V1VuaXRzID0gJGltYWdlV1VuaXRzOw0KCQkJCSR0aGVJbWFnZUhVbml0cyA9ICRpbWFnZUhV bml0czsNCgkJCX0gZWxzZSB7DQoJCQkJJHRoZUltYWdlV2lkdGggPSAkcm93Wyd3J107DQoJ CQkJJHRoZUltYWdlSGVpZ2h0ID0gJHJvd1snaCddOw0KCQkJCSR0aGVJbWFnZVdVbml0cyA9 ICR0aGVJbWFnZUhVbml0cyA9ICcnOw0KCQkJfQ0KDQoJCQkvLyBDb25zdHJ1Y3QgdGhlIHJl cGxhY2VtZW50IGFycmF5DQoJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoDQoJCQkJCSd7aWR9 JyA9PiAkcm93WydpZCddLA0KCQkJCQkne25hbWV9JyA9PiAkcm93WyduYW1lJ10sDQoJCQkJ CSd7ZXh0fScgPT4gJHJvd1snZXh0J10sDQoJCQkJCSd7Y2F0ZWdvcnl9JyA9PiAkcm93Wydj YXRlZ29yeSddLA0KCQkJCQkne2NhdGVnb3J5X3RpdGxlfScgPT4gKChpc3NldCgkcm93Wydj YXRlZ29yeV90aXRsZSddKSkgPyAkcm93WydjYXRlZ29yeV90aXRsZSddIDogJycpLA0KCQkJ CQkne2F1dGhvcn0nID0+ICRyb3dbJ2F1dGhvciddLA0KCQkJCQkne2hhc3RodW1ifScgPT4g KGlzc2V0KCRyb3dbJ3RodW1ibmFpbCddKSA/ICRyb3dbJ3RodW1ibmFpbCddIDogMCksDQoJ CQkJCSd7dXJsfScgPT4gJGZ1bGxTaXplLA0KCQkJCQkne3RodW1idXJsfScgPT4gJHRoZVRo dW1iLA0KCQkJCQkne2ltYWdlcGF0aH0nID0+ICR1cmxQYXRoLA0KCQkJCQkne2ltYWdlZGVm fScgPT4gYmFzZW5hbWUoJGZ1bGxTaXplKSwNCgkJCQkJJ3t0aHVtYmRlZn0nID0+IGJhc2Vu YW1lKCR0aGVUaHVtYiksDQoJCQkJCSd7YWx0fScgPT4gJHJvd1snYWx0J10sDQoJCQkJCSd7 dGl0bGV9JyA9PiAkcm93WydjYXB0aW9uJ10sDQoJCQkJCSd7Y2FwdGlvbn0nID0+ICRyb3db J2NhcHRpb24nXSwNCgkJCQkJJ3t0aHVtYndpZHRofScgPT4gJHRoZVRodW1iV2lkdGgsDQoJ CQkJCSd7dGh1bWJoZWlnaHR9JyA9PiAkdGhlVGh1bWJIZWlnaHQsDQoJCQkJCSd7dGh1bWJ3 dW5pdHN9JyA9PiAkdGhlVGh1bWJXVW5pdHMsDQoJCQkJCSd7dGh1bWJodW5pdHN9JyA9PiAk dGhlVGh1bWJIVW5pdHMsDQoJCQkJCSd7d2lkdGh9JyA9PiAkdGhlSW1hZ2VXaWR0aCwNCgkJ CQkJJ3toZWlnaHR9JyA9PiAkdGhlSW1hZ2VIZWlnaHQsDQoJCQkJCSd7d3VuaXRzfScgPT4g JHRoZUltYWdlV1VuaXRzLA0KCQkJCQkne2h1bml0c30nID0+ICR0aGVJbWFnZUhVbml0cywN CgkJCQkJJ3tkYXRlfScgPT4gKCgkZm9ybWF0KSA/IHNhZmVfc3RyZnRpbWUoJGZvcm1hdCwg c3RydG90aW1lKCRyb3dbJ2RhdGUnXSksICRnbXQsICRsYW5nKSA6ICRyb3dbJ2RhdGUnXSks DQoJCQkJCSd7Z2FsbGVyeWlkfScgPT4gJGdhbGxJRCwNCgkJCQkJJ3tpbmRleH0nID0+ICRp ZHgsDQoJCQkJCSd7Y291bnRlcn0nID0+ICRjdHIsDQoJCQkJCSd7dGh1bWJpbmRleH0nID0+ ICR0aHVtYklkeCwNCgkJCQkJJ3t0aHVtYmNvdW50ZXJ9JyA9PiAkdGh1bWJDdHIsDQoJCQkJ CSd7dG90YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0KCQkJCQkne21heGltYWdlc30nID0+ ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJLy8gQWRkIGFueSBjdXN0b20gY29sdW1ucw0K CQkJZm9yZWFjaCAoJGV4dHJhTWFwIGFzICRlQ29sID0+ICRlVmFsKSB7DQoJCQkJJHJlcGxh Y2VtZW50c1sneycuJGVWYWwuJ30nXSA9ICRyb3dbJGVDb2xdOw0KCQkJfQ0KDQoJCQkvLyBB cHBlbmQgYW55IGNoYW5nZWQgaXRlbXMgdGhhdCBhcmUgcmVxdWlyZWQNCgkJCSRlbmR0YWcg PSBmYWxzZTsNCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMgYXMgJHJlc2V0T3B0ID0+ICRyZXNl dFZhbCkgew0KCQkJCWlmIChzdHJwb3MoJHJlc2V0T3B0LCAnc21kX2V2ZXJ5JykgPT09IDAp IHsNCgkJCQkJJGl0ZXIgPSBleHBsb2RlKCRwYXJhbWRlbGltLCAkcmVzZXRPcHQpOw0KCQkJ CQkkaXRlciA9IChjb3VudCgkaXRlcikgPiAxKSA/ICRpdGVyWzFdIDogMDsNCgkJCQkJaWYg KCR0aHVtYkN0ciAlICRpdGVyID09PSAwIHx8ICRjdHIgPT0gJG51bUltYWdlcykgew0KCQkJ CQkJJGVuZHRhZyA9IHRydWU7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQkkcmVwbGFj ZW1lbnRzWyd7Jy4kY2hJZGVudGlmaWVyLiRwYXJhbWRlbGltLiRyZXNldE9wdC4nfSddID0g KCR0aHVtYklkeCA9PSAwKSA/ICgoaXNzZXQoJHJlc2V0Rm9ybXNbJHJlc2V0T3B0XSkpID8g c3RydHIocGFyc2VfZm9ybSgkcmVzZXRGb3Jtc1skcmVzZXRPcHRdKSwgJHJlcGxhY2VtZW50 cykgOiBkb1RhZygkcm93WyRyZXNldE9wdF0sICRvbmNoYW5nZXdyYXB0YWcsICRvbmNoYW5n ZWNsYXNzKSkgOiAnJzsNCgkJCQkJLy8gRG8gYSBzbmVha3kgKHl1aykgbG9va2FoZWFkDQoJ CQkJCWlmIChpc3NldCgkcnNbJGtleSsxXSkpIHsNCgkJCQkJCWlmKCRyc1ska2V5KzFdWyRy ZXNldE9wdF0gIT0gJHJvd1skcmVzZXRPcHRdKSB7DQoJCQkJCQkJJGVuZHRhZyA9IHRydWU7 DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZW5kdGFnID0gdHJ1ZTsgLy8gTGFz dCBpbWFnZQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3Jv dXB0YWdlbmR9J10gPSAoJGdyb3VwdGFnICYmICRlbmR0YWcpID8gJzwvJyAuICRncm91cHRh ZyAuICc+JyA6ICcnOw0KCQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFnc3RhcnR9J10gPSAo JGdyb3VwdGFnICYmICR0aHVtYklkeCA9PSAwKSA/ICc8JyAuICRncm91cHRhZyAuICgoJGdy b3VwY2xhc3MpID8gJyBjbGFzcz0iJy4kZ3JvdXBjbGFzcy4nIicgOiAnJykgLiAnPicgOiAn JzsNCg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21ib3MgYXMg JGRlZk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0cygkZGVm TmFtZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVmTmFtZV0g PSBzdHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8v IFNvbG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJlIGRldGFp bHMgZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9uDQoJCQkv LyBtb2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9uIGFu IGFzLW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUgPSAnL1x7 KFthLXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19tYXRjaF9h bGwoJHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9IDA7ICRz b2xvQ3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7 Jy4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZpZWxkID0g J3snLiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNbJGZpZWxk bmFtZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkvLyBQZXJm b3JtIGVzY2FwaW5nIG9uIHRoZSByZXBsYWNlbWVudHMuDQoJCQkvLyBOb3RlIHRoZSByZXBh Z2VtZW50cyBoYXZlIGFscmVhZHkgYmVlbiBlc2NhcGVkIHNvIHdoZW4vaWYgdGhleSBhcmUg Y29tYmluZWQgd2l0aCB0aGUgcmVwbGFjZW1lbnRzLA0KCQkJLy8gdGhlIGVzY2FwaW5nIGlz IG5vdCBkb25lIHR3aWNlDQoJCQlpZiAoJGVzY2FwZXMpIHsNCgkJCQlmb3JlYWNoICgkcmVw bGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJaWYgKGluX2FycmF5 KHRyaW0oJGRlZk5hbWUsICJ7fSIpLCAkZXNjYXBlcykpIHsNCgkJCQkJCSRyZXBsYWNlbWVu dHNbJGRlZk5hbWVdID0gaHRtbHNwZWNpYWxjaGFycygkZGVmVmFsLCBFTlRfUVVPVEVTKTsN CgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQWRkIHRoZSBuYXZpZ2F0aW9uIGl0ZW1z IGlmIHRoZXkncmUgZGVmaW5lZA0KCQkJaWYgKGNvdW50KCRyZXBhZ2VtZW50cykgPiAwKSB7 DQoJCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5X21lcmdlKCRyZXBhZ2VtZW50cywgJHJlcGxh Y2VtZW50cyk7DQoJCQl9DQoNCgkJCS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3QgcmVxdWly ZWQgdGhpcyB0aW1lPw0KCQkJJG9iamVjdCA9ICcnOw0KCQkJaWYgKCR0aHVtYklkeCA+PSAk dGh1bWJvZmZzZXQgJiYgJHRodW1iSWR4IDwgJHRodW1ib2Zmc2V0KyR0aHVtYmxpbWl0KSB7 DQoJCQkJJG9iamVjdCA9ICgkb2JqZWN0Zm9ybSkgPyBwYXJzZShzdHJ0cigkb2JqZWN0Zm9y bSwgJHJlcGxhY2VtZW50cykpIDogKCgkdGV4dCkgPyAkdGV4dCA6ICc8aW1nIHNyYz0iJy4k dGhlVGh1bWIuJyInIC4oKCRyb3dbJ2FsdCddKSA/ICcgYWx0PSInLiRyb3dbJ2FsdCddLici JyA6ICcnKSAuKCgkdGhlVGh1bWJXaWR0aCkgPyAnIHdpZHRoPSInLiR0aGVUaHVtYldpZHRo LiR0aGVUaHVtYldVbml0cy4nIicgOiAnJykgLigoJHRoZVRodW1iSGVpZ2h0KSA/ICcgaGVp Z2h0PSInLiR0aGVUaHVtYkhlaWdodC4kdGhlVGh1bWJIVW5pdHMuJyInIDogJycpIC4nIC8+ Jyk7DQoJCQl9DQoJCQkkcmVwbGFjZW1lbnRzWyd7b2JqZWN0fSddID0gJG9iamVjdDsNCg0K CQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgOiBJTUFH RSAiLiRjdHIuIiArKyI7DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJCQkv LyBDaGVjayBpZiBjb3VudGZvcm0gaXMgdG8gYmUgY2FsbGVkDQoJCQkkY291bnRwcmUgPSAk Y291bnRwb3N0ID0gYXJyYXkoKTsNCgkJCWlmICgkY291bnRpbmcpIHsNCgkJCQlmb3JlYWNo ICgkY291bnRmb3JtIGFzICRjb3VudGxpc3QpIHsNCgkJCQkJJHBvc292ZXIgPSBhcnJheSgp Ow0KCQkJCQkkY291bnRsaXN0ID0gc3RydHIoJGNvdW50bGlzdCwgJHJlcGxhY2VtZW50cyk7 IC8vIFJlcGxhY2UgYW55IHt9IHZhcnMgd2l0aCB0aGVpciByZWFsIHZhbHVlcw0KCQkJCQkk Y291bnRsaXN0ID0gZG9fbGlzdCgkY291bnRsaXN0LCAkcGFyYW1kZWxpbSk7DQoJCQkJCWlm ICgkZHBvcz1hcnJheV9zZWFyY2goJ3NtZF9hYm92ZScsICRjb3VudGxpc3QpKSB7DQoJCQkJ CQkkcG9zb3ZlcltdID0gImFib3ZlIjsNCgkJCQkJCXVuc2V0KCRjb3VudGxpc3RbJGRwb3Nd KTsNCgkJCQkJfQ0KCQkJCQlpZiAoJGRwb3M9YXJyYXlfc2VhcmNoKCdzbWRfYmVsb3cnLCAk Y291bnRsaXN0KSkgew0KCQkJCQkJJHBvc292ZXJbXSA9ICJiZWxvdyI7DQoJCQkJCQl1bnNl dCgkY291bnRsaXN0WyRkcG9zXSk7DQoJCQkJCX0NCgkJCQkJJGNvdW50bGlzdCA9IGFycmF5 X21lcmdlKCRjb3VudGxpc3QpOyAvLyByZS1pbmRleA0KDQoJCQkJCSRwb3NvdmVyID0gKGVt cHR5KCRwb3NvdmVyKSkgPyAkY291bnRwb3NucyA6ICRwb3NvdmVyOw0KCQkJCQkkZGl2Ynkg PSBmYWxzZTsNCgkJCQkJaWYgKCRjb3VudGxpc3RbMF0gPT0gJ3NtZF9ldmVyeScpIHsNCgkJ CQkJCSRkaXZieSA9IHRydWU7DQoJCQkJCQlhcnJheV9zaGlmdCgkY291bnRsaXN0KTsNCgkJ CQkJfQ0KCQkJCQkkbnVtZm9ybXMgPSBjb3VudCgkY291bnRsaXN0KTsNCgkJCQkJJGNhbGxm b3JtID0gZmV0Y2hfZm9ybSgkY291bnRsaXN0WyRudW1mb3Jtcy0xXSk7DQoJCQkJCXVuc2V0 KCRjb3VudGxpc3RbJG51bWZvcm1zLTFdKTsNCgkJCQkJJG9ybG9naWMgPSAkYW5kbG9naWMg PSBhcnJheSgpOw0KCQkJCQlmb3JlYWNoICgkY291bnRsaXN0IGFzICRjdXN0Y291bnQpIHsN CgkJCQkJCSRzaG93dmFsID0gKHN0cnBvcygkY3VzdGNvdW50LCAiISIpID09PSAwKSA/IGZh bHNlIDogdHJ1ZTsvLyBOZWdhdGl2ZSBsb2dpYyByZXF1aXJlZA0KCQkJCQkJJGN1c3Rjb3Vu dCA9IHN0cl9yZXBsYWNlKCchJywgJycsICRjdXN0Y291bnQpOw0KCQkJCQkJaWYgKCRzaG93 dmFsKSB7DQoJCQkJCQkJJG9ybG9naWNbXSA9IGVtcHR5KCRjdXN0Y291bnQpIHx8ICgoJGRp dmJ5KSA/ICgoJGN0ciAlICRjdXN0Y291bnQgPT09IDApID8gdHJ1ZSA6IGZhbHNlKSA6ICgo JGN1c3Rjb3VudCA9PSAkY3RyKSA/IHRydWUgOiBmYWxzZSkpOw0KCQkJCQkJfSBlbHNlIHsN CgkJCQkJCQkkYW5kbG9naWNbXSA9ICgkY3VzdGNvdW50ID09ICRjdHIpID8gZmFsc2UgOiB0 cnVlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWlmIChpbl9hcnJheSgnMScsICRvcmxvZ2lj KSAmJiAhaW5fYXJyYXkoJzAnLCAkYW5kbG9naWMpKSB7DQoJCQkJCQlpZiAoaW5fYXJyYXko ImFib3ZlIiwgJHBvc292ZXIpKSB7DQoJCQkJCQkJJGNvdW50cHJlW10gPSBwYXJzZShzdHJ0 cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsNCgkJCQkJCX0NCgkJCQkJCWlmIChpbl9h cnJheSgiYmVsb3ciLCAkcG9zb3ZlcikpIHsNCgkJCQkJCQkkY291bnRwb3N0W10gPSBwYXJz ZShzdHJ0cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsNCgkJCQkJCX0NCgkJCQkJfQ0K ICAgICAgICAgICAgfQ0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMCAmJiAoJGNvdW50cHJl IHx8ICRjb3VudHBvc3QpKSB7DQoJCQkJZWNobyAiKysgQ09VTlQgRk9STSBUUklHR0VSRUQg KysiOw0KCQkJCWlmICgkY291bnRwcmUpIHsNCgkJCQkJZG1wKCRjb3VudHByZSk7DQoJCQkJ fQ0KCQkJCWlmICgkY291bnRwb3N0KSB7DQoJCQkJCWRtcCgkY291bnRwb3N0KTsNCgkJCQl9 DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNl ZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJheSBv ZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJl cGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRpb25z WyRkZWZOYW1lXVtdID0gJGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgk Y291bnRpbmcpIHsNCgkJCQkJJHRodW1ib3V0ID0gYXJyYXlfbWVyZ2UoJHRodW1ib3V0LCAk Y291bnRwcmUpOw0KCQkJCX0NCg0KCQkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIoJHRo aW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoNCgkJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJCSR0 aHVtYm91dCA9IGFycmF5X21lcmdlKCR0aHVtYm91dCwgJGNvdW50cG9zdCk7DQoJCQkJfQ0K CQkJfQ0KDQoJCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHZhbHVlcyBzbyB3ZSBr bm93IGlmIHRoZXkgY2hhbmdlIG5leHQgdGltZQ0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBh cyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRPcHQs ICdzbWRfZXZlcnknKSA9PT0gZmFsc2UpIHsNCgkJCQkJJHJlc2V0T3B0c1skcmVzZXRPcHRd ID0gJHJvd1skcmVzZXRPcHRdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRyZXNldE9wdHNbJHJl c2V0T3B0XSA9ICR0aHVtYkN0cjsNCgkJCQl9DQoJCQl9DQoJCQkkdGh1bWJJZHgrKzsNCgkJ CSR0aHVtYkN0cisrOw0KCQkJJGlkeCsrOw0KCQkJJGN0cisrOw0KCQl9DQoJCWlmICgkY29s bGF0ZSkgew0KCQkJZm9yZWFjaCAoJGNvbGxhdGlvbnMgYXMgJGl0ZW0gPT4gJGxpc3QpIHsN CgkJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJCQkkbGlzdCA9IChlbXB0 eSgkZGJsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkZGJsUXVvdGUpKSA/IGRvQXJyYXko JGxpc3QsICdzbWRfZG9EYmxRdW90ZScpIDogJGxpc3Q7DQoJCQkJJGxpc3QgPSAoZW1wdHko JHNnbFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJHNnbFF1b3RlKSkgPyBkb0FycmF5KCRs aXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkJJGNvbGxhdGlvbnNbJGl0ZW1dID0gaW1w bG9kZSgkY29sbGF0ZWRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlpZiAoJGRlYnVnID4gMCkg ew0KCQkJCWVjaG8gIisrIENPTExBVElPTlMgKysiOw0KCQkJCWRtcCgkY29sbGF0aW9ucyk7 DQoJCQl9DQoJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJGNvbGxhdGlv bnMpKTsNCgkJfQ0KDQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBmcm9tIGVhcmxpZXIgaWYg aXQncyB0byBnbyBhZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykg ew0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgUkVQTEFDRU1F TlRTICsrIjsNCgkJCQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8v IEFkZCB0aGUgcGFnaW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0byBnbyBhYm92ZSB0aGUg dGh1bWJzDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJh eSgiYWJvdmUiLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAk bmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCgkkb3V0W10gPSBkb1dy YXAoJHRodW1ib3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycsICRo dG1sX2lkKTsNCg0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQlpZiAoaW5f YXJyYXkoImJlbG93IiwgJHBhZ2VvdXQpKSB7DQoJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91 dCwgJG5hdndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQl9DQoJfQ0KDQoJaWYgKCRkZWJ1 ZyA+IDIpIHsNCgkJZWNobyAiKysgRklOQUwgT1VUUFVUICsrIjsNCgkJZG1wKCRvdXQpOw0K CX0NCg0KCXJldHVybiBqb2luKCIgIiwgJG91dCk7DQp9DQoNCi8vIFdvcmsgb3V0IHdoaWNo IHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGluZm8N CmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAk cGFnaW5nKSB7DQoJJG51bVRodW1zID0gY291bnQoJHJzKSAtICRvZmZzZXQ7DQoJaWYgKCgk bGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCSRudW1QYWdlcyA9ICgkbnVtVGh1bXMgPiAw KSA/IGNlaWwoJG51bVRodW1zLyRsaW1pdCkgOiAxOw0KCQkkdGh1bVBhZ2UgPSAoIWdwcygk Z2FsbElEKSkgPyAxIDogZ3BzKCRnYWxsSUQpOw0KCQkkb2Zmc2V0ID0gKCgkdGh1bVBhZ2Ug LSAxKSAqICRsaW1pdCkgKyAkb2Zmc2V0Ow0KCX0gZWxzZSB7DQoJCS8vIE5vIHBhZ2luZyBy ZXF1aXJlZA0KCQkkbnVtUGFnZXMgPSAxOw0KCQkkdGh1bVBhZ2UgPSAxOw0KCX0NCglyZXR1 cm4gYXJyYXkoJG51bVRodW1zLCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCk7DQp9 DQoNCi8vIFJlYWQgdGhlIGdpdmVuIGRlbGltaXRlZCBkaXJlY3RvcmllcyBhbmQgZ2V0IGFs bCBmaWxlcyB0aGF0IG1hdGNoLg0KLy8gR28gZG93biBhcyBtYW55IHN1YmRpciBsZXZlbHMg YXMgZ2l2ZW4gaW4gdGhlICRzdWIgcGFyYW1ldGVyDQpmdW5jdGlvbiBzbWRfZG9EaXJlY3Rv cnkoJGxzdCwgJGx2bD0wLCAkc3ViPTAsICRtYXRjaD0iIiwgJGRsbT0iLCIsICRzcGM9MSwg JGN0cj0wKSB7DQoJbGlzdCgkZGlyaW5jLCAkZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxzdCwg ZmFsc2UsICRzdWIsIGZhbHNlLCAkZGxtLCAkc3BjKTsNCglsaXN0KCRtYXRjaGluYywgJG1h dGNoZXhjKSA9IHNtZF9kb0xpc3QoJG1hdGNoLCBmYWxzZSwgJycsIGZhbHNlLCAkZGxtLCAk c3BjKTsNCgkkbWF0Y2hpbmMgPSAiLioiIC4oKCRtYXRjaGluYykgPyAiKCIgLmltcGxvZGUo InwiLCRtYXRjaGluYykuIikrLioiIDogIiIpOw0KCSRtYXRjaGV4YyA9ICgkbWF0Y2hleGMp ID8gIi4qKCIgLmltcGxvZGUoInwiLCRtYXRjaGV4YykuIikrLioiIDogInNtZF9nbHJ5XyIu bXRfcmFuZCgpOw0KDQoJJHN1YiA9IChlbXB0eSgkc3ViKSkgPyAwIDogJHN1YjsNCgkkc3Vi ID0gKHN0cnRvbG93ZXIoJHN1Yik9PSJhbGwiKSA/IDk5OTk5IDogJHN1YjsNCgkkZmlsZUxp c3QgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRkaXJpbmMgYXMgJGRpcikgew0KCQlpZiAoJGhh bmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB7DQoJCQl3aGlsZSAoKCRmaWxlID0gQHJlYWRkaXIo JGhhbmRsZSkpICE9PSBmYWxzZSkgew0KCQkJCSRmdWxscGF0aCA9ICRkaXIuRFMuJGZpbGU7 DQoJCQkJaWYgKHByZWdfbWF0Y2goIi8iLiRtYXRjaGluYy4iLyIsICRmdWxscGF0aCkgJiYg IXByZWdfbWF0Y2goIi8iLiRtYXRjaGV4Yy4iLyIsICRmdWxscGF0aCkpIHsNCgkJCQkJaWYg KGlzX2RpcigkZnVsbHBhdGgpKSB7DQoJCQkJCQlpZiAoKCRmaWxlID09ICIuIikgfHwgKCRm aWxlPT0gIi4uIikgfHwgKGluX2FycmF5KCRmaWxlLCAkZGlyZXhjKSkgfHwgKCRsdmwgPj0g JHN1YikpIHsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJLy8g UmVjdXJzZSB0aGUgc3ViZGlyLiBOb3RlIHRoYXQgdGhlICchJyBpcyB0ZW1wb3JhcmlseSBh ZGRlZCBiYWNrIHRvIGVhY2ggZGlyZXhjIGl0ZW0NCgkJCQkJCQkkdG1wID0gJGRpcmV4Yzsg Ly8gRG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBhcnJheQ0KCQkJCQkJCWFycmF5X3Vu c2hpZnQoJHRtcCwgJGZ1bGxwYXRoKTsNCgkJCQkJCQkkc3ViRmlsZXMgPSBzbWRfZG9EaXJl Y3RvcnkoaW1wbG9kZSgkZGxtLiIhIiwgJHRtcCksICRsdmwrMSwgJHN1YiwgJG1hdGNoLCAk ZGxtLCAkc3BjLCAkY3RyKTsNCgkJCQkJCQkkZmlsZUxpc3QgPSBhcnJheV9tZXJnZSgkZmls ZUxpc3QsICRzdWJGaWxlcyk7DQoJCQkJCQkJJGN0ciArPSBjb3VudCgkc3ViRmlsZXMpOw0K CQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZpbGVz dGF0ID0gc3RhdCgkZnVsbHBhdGgpOw0KCQkJCQkJJGltZ3NpemUgPSBnZXRpbWFnZXNpemUo JGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsncGF0aCddID0gJGRpcjsNCgkJ CQkJCSRmaWxlTGlzdFskY3RyXVsnbmFtZSddID0gYmFzZW5hbWUoJGZ1bGxwYXRoKTsNCgkJ CQkJCSRmaWxlTGlzdFskY3RyXVsnaWQnXSA9IHByZWdfcmVwbGFjZSgnL1wuLiskLycsICcn LCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2FsdCddID0gJyc7DQoJCQkJCQkk ZmlsZUxpc3RbJGN0cl1bJ2NhcHRpb24nXSA9ICcnOw0KCQkJCQkJJHBhcnRzID0gZXhwbG9k ZShEUywgJGRpcik7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhdGVnb3J5J10gPSAoY291 bnQoJHBhcnRzKSA+IDEpID8gZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFsk Y3RyXVsnYXV0aG9yJ10gPSBzdHJ2YWwoJGZpbGVzdGF0Wyd1aWQnXSk7DQoJCQkJCQkkZmls ZUxpc3RbJGN0cl1bJ2RhdGUnXSA9IHN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsICRm aWxlc3RhdFsnY3RpbWUnXSk7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKCIuIiwgJGZpbGUp Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydleHQnXSA9IChjb3VudCgkcGFydHMpID4gMSkg PyAiLiIuZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsndyddID0g KGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMF0pIDogJyc7DQoJCQkJ CQkkZmlsZUxpc3RbJGN0cl1bJ2gnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFs KCRpbWdzaXplWzFdKSA6ICcnOw0KCQkJCQl9DQoJCQkJCSRjdHIrKzsNCgkJCQl9DQoJCQl9 DQoJCX0NCgkJaWYgKCRoYW5kbGUpIHsNCgkJCUBjbG9zZWRpcigkaGFuZGxlKTsNCgkJfQ0K CX0NCglyZXR1cm4gJGZpbGVMaXN0Ow0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3Jk ZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6NTgzNjk6Ijxk aXYgaWQ9InNtZF9oZWxwIj4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxlcnk8L2gxPgoKCTxo MiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIGFs bCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxsZXJ5IHNjcmlwdHMgaW5jbHVk aW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwgbGlnaHRib3gsIGxpdGVib3gsIHNs aW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNob3csIGZhbmN5em9vbSwgZXRjPC9s aT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gZGF0YWJhc2UgdGhhdCBtYXRjaCBjYXRlZ29yaWVzLCBJRHMsIGF1dGhvciwgZXh0 ZW5zaW9uIG9yIHBhcnRpY3VsYXIgZGltZW5zaW9ucyAvIGFzcGVjdCByYXRpb3M8L2xpPgoJ CTxsaT5Vc2UgYXJ0aWNsZSBmaWVsZHMgdG8gaG9sZCBsaXN0cyBvZiBpbWFnZSBjYXRlZ29y aWVzL0lEcyBmb3IgYXJ0aWNsZS1zcGVjaWZpYyBnYWxsZXJpZXM8L2xpPgoJCTxsaT5NdWx0 aS1sZXZlbCBzdWItY2F0ZWdvcnkgc3VwcG9ydDwvbGk+CgkJPGxpPkdhbGxlcnkgbGF5b3V0 IGlzIGRlZmluZWQgaW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtL2Nv bnRhaW5lcjwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0 ZWQgYW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZlYXR1cmVzIGNhbiBiZSBjb250cm9sbGVk IGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxsaT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5 c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc3VwcG9ydDwvbGk+Cgk8L3VsPgoKCTxoMiBp ZD0iYXV0aG9yIj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBt ZSwgb3IgdG8gbWFrZSBhIGRvbmF0aW9uLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVm ZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4uPC9wPgoKCTxoMiBpZD0iaW5zdGFs bCI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwIGNsYXNzPSJyZXF1 aXJlZCI+UmVxdWlyZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4yLjArIGFu ZCBzbWRfbGliIHYwLjM2KzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0 aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy85NTcvc21kX2dh bGxlcnkiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSBzb2Z0d2FyZSBwYWdlIGFib3Zl LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1 Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92 aWV3dG9waWMucGhwP2lkPTI2NDgyIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8g b3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2lu LjwvcD4KCgk8cD5UbyByZW1vdmUgdGhlIHBsdWdpbiwgc2ltcGx5IGRlbGV0ZSBpdCBmcm9t IHRoZSBBZG1pbi0mZ3Q7UGx1Z2lucyB0YWIuIElmIG5vIG90aGVyIHBsdWdpbnMgYXJlIHVz aW5nIHNtZF9saWIgeW91IG1heSBzYWZlbHkgZGVsZXRlIHRoYXQgdG9vLjwvcD4KCgk8aDIg aWQ9InVzYWdlIj5PdmVydmlldzwvaDI+CgoJPHA+VGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0 IHRoaXMgcGx1Z2luIGFjdHMgYXMgYSBmbGV4aWJsZSBpbWFnZSBmaWx0ZXI7IG5vdGhpbmcg bW9yZS4gVGhlIHBsdWdpbiBvcHRpb25zIGdvdmVybiB3aGljaCBpbWFnZXMgYXJlIHB1bGxl ZCBvdXQgb2YgdGhlIGRhdGFiYXNlIGFuZCB0aGV5IGFyZSBzb3J0ZWQgaW50byB3aGF0ZXZl ciBvcmRlciB5b3UgbGlrZS48L3A+CgoJPHA+QWZ0ZXIgdGhhdCwgZWFjaCBpbWFnZSAmIzgy MTI7IG9uZSBieSBvbmUgJiM4MjEyOyBoYXMgYWxsIGl0cyBhdHRyaWJ1dGVzIHBhc3NlZCB0 aHJvdWdoIHRoZSBjb250YWluZXIgb3IgPGNvZGU+Zm9ybTwvY29kZT4gb2YgeW91ciBjaG9p Y2U7IHlvdSBzaW1wbHkgY2hvb3NlIHRvIGRpc3BsYXkgd2hpY2hldmVyIGltYWdlIGF0dHJp YnV0ZXMgeW91IGxpa2UgaW4gdGhpcyBmb3JtLiBUaGlzIG1lYW5zIGFueSBpbWFnZSBhdHRy aWJ1dGVzIGNhbiBiZSAmIzgyMjA7aW5qZWN0ZWQmIzgyMjE7IGRpcmVjdGx5IGludG8gYW55 IG1hcmt1cDsgaXQgY291bGQgYmUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFn cywgaXQgY291bGQgYmUgY29udGVudCwgaXQgY291bGQgYmUgamF2YXNjcmlwdCwgb3IgPHNw YW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj47IGFueXRoaW5nLjwvcD4KCgk8cD5QYWdpbmF0 aW9uIHdvcmtzIHRoZSBzYW1lIHdheSwgYWxsb3dpbmcgeW91IHRvIHNwZWNpZnkgaG93IHVz ZXJzIGNhbiBzdGVwIHRocm91Z2ggeW91ciBpbWFnZSBnYWxsZXJpZXMuPC9wPgoKCTxwPlRo ZXJlIGlzIGFsc28gYSBzcGVjaWFsICYjODIyMDtjb2xsYXRlJiM4MjIxOyBtb2RlIHRoYXQg YWxsb3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFnZSBhdHRyaWJ1dGVzIHRvZ2V0aGVyIGlu dG8gYSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMgPGVtPndpdGhvdXQ8L2VtPiBjYWxsaW5n IHRoZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3JtL2NvbnRhaW5lciBpcyB0aGVuIG9ubHkg cHJvY2Vzc2VkIG9uY2UgYXQgdGhlIGVuZC48L3A+CgoJPHA+QmV0d2VlbiB0aGVzZSB0d28g bW9kZXMgeW91IHNob3VsZCBiZSBhYmxlIHRvIHJlYWxpc2UgYW55IGdhbGxlcnlpbmcgc29s dXRpb247IG5vdyBhbmQgaW4gZnV0dXJlLjwvcD4KCgk8aDIgY2xhc3M9InRhZyAiIGlkPSJz bWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2gyPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+ UGxhY2Ugb25lIG9yIG1vcmUgc21kX2dhbGxlcnkgdGFncyBpbiBhbiBhcnRpY2xlLCBwYWdl IG9yIGZvcm0sIGFuZCBzdXBwbHkgYW55IG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyB0byBj b25maWd1cmUgaXQuIFRoZSBhdHRyaWJ1dGVzIGFyZSBncm91cGVkIGJ5IGZ1bmN0aW9uIHRv IG1ha2UgaXQgZWFzaWVyIG9uIHlvdXIgZXllcyAvIHNhbml0eS48L3A+CgoJPGgzIGlkPSJh dHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oMz4KCgk8aDQ+RmlsdGVyczwvaDQ+CgoJPHVsPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBJRHMg dG8gZGlzcGxheS4gTWF5IGJlIGludGVnZXJzIG9yIHJhbmdlcywgZm9yIGV4YW1wbGUgPGNv ZGU+aWQ9JnF1b3Q7NSwgNDIsIDgtMTEmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgaW1hZ2Vz IDUsIDgsIDksIDEwLCAxMSBhbmQgNDIuIFVzZSAmIzgyMTY7ISYjODIxNzsgaW4gZnJvbnQg b2YgYSBudW1iZXIgb3IgcmFuZ2UgdG8gZXhjbHVkZSB0aG9zZSBpbWFnZXMuIFVzZSAmIzgy MTY7PyYjODIxNzsgYW5kIHRoZSBuYW1lIG9mIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gZmllbGQgdG8gcmVhZCB0aGUgbGlzdCBvZiBpbWFnZSBJRHMgZnJvbSB0aGF0IGZp ZWxkLCBlLmcuIDxjb2RlPmlkPT9hcnRpY2xlX2ltYWdlJnF1b3Q7PC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYW1lPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgbmFt ZXMgdG8gZGlzcGxheS4gWW91IGNhbiBlaXRoZXIgc3BlY2lmeSBleGFjdCBtYXRjaGVzLCBl LmcuIDxjb2RlPm5hbWU9JnF1b3Q7bGlvbi5qcGcsIHRpZ2VyLmpwZyZxdW90OzwvY29kZT4g b3IgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMgYnkgYXBwZW5kaW5nIDxjb2RlPjpyZWdl eDwvY29kZT4gdG8gdGVybXMuIEZvciBleGFtcGxlLCA8Y29kZT5uYW1lPSZxdW90O2xpb246 cmVnZXgmcXVvdDs8L2NvZGU+IHdvdWxkIG1hdGNoIGxpb24uanBnLCBsaW9uZXNzLmpwZyBh bmQgbWVnYWxpb24uanBnLiBBbHRlcm5hdGl2ZWx5LCA8Y29kZT5uYW1lPSZxdW90O15saW9u OnJlZ2V4JnF1b3Q7PC9jb2RlPiB3b3VsZCBvbmx5IG1hdGNoIGltYWdlcyB0aGF0IHN0YXJ0 IHdpdGggJiM4MjE2O2xpb24mIzgyMTc7LiBVc2UgJiM4MjE2OyEmIzgyMTc7IGluIGZyb250 IG9mIG5hbWVzIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzLiBVc2UgJiM4MjE2Oz8mIzgyMTc7 IGFuZCB0aGUgbmFtZSBvZiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxk IHRvIHJlYWQgdGhlIGxpc3Qgb2YgaW1hZ2UgbmFtZXMvcmVnZXhlcyBmcm9tIHRoYXQgZmll bGQsIGUuZy4gPGNvZGU+bmFtZT0/ZmlsZW5hbWVzJnF1b3Q7PC9jb2RlPiB0byByZWFkIHRo ZW0gZnJvbSBhIGN1c3RvbSBmaWVsZCBvZiB0aGF0IG5hbWUuPGRpdiBjbGFzcz0iYnJlYWsi PklmIHlvdSB3YW50IHRvIG5lZ2F0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgdGhpbmdzIG1h eSBnZXQgdHJpY2t5IGlmIHlvdSBhcmUgdXNpbmcgbWV0YSBjaGFyYWN0ZXJzOyBpbiB0aGlz IGNhc2UgaXQgaXMgYmV0dGVyIHRvIHNldCB5b3VyIHJlZ3VsYXIgZXhwcmVzc2lvbiB1cCBp biwgc2F5LCBhIHR4cDp2YXJpYWJsZSAob3IgYW4gYXJ0aWNsZSBmaWVsZCkgYW5kIHVzZSA8 Y29kZT5uYW1lPSZxdW90OyF2YXJfbmFtZTpyZWdleCZxdW90OzwvY29kZT4uPC9kaXY+PGRp diBjbGFzcz0iYnJlYWsiPllvdSBjYW4gbWl4IGV4YWN0IG1hdGNoZXMgYW5kIHJlZ2V4IG1h dGNoZXMgaW4gdGhlIHNhbWUgPGNvZGU+bmFtZTwvY29kZT4gYXR0cmlidXRlIGlmIHlvdSB3 aXNoLiBUaGUgY29sb24gY2FuIGJlIGFsdGVyZWQgd2l0aCA8Y29kZT5wYXJhbWRlbGltPC9j b2RlPiAmIzgyMTI7IHRoaXMgaXMgc29tZXRpbWVzIG5lY2Vzc2FyeSBpZiB5b3UgYXJlIHVz aW5nIGNoYXJhY3RlciBjbGFzc2VzIHN1Y2ggYXMgPGNvZGU+W1s6ZGlnaXQ6XV08L2NvZGU+ IGluIHlvdXIgcmVndWxhciBleHByZXNzaW9uLjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5jYXRlZ29yeTwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIGNhdGVnb3JpZXMg dG8gZGlzcGxheS4gWW91IG1heSBzcGVjaWZ5IGZpeGVkLW5hbWUgY2F0ZWdvcmllcyAoZS5n LiAmIzgyMjA7YW5pbWFscyYjODIyMTspIG9yIGEmIzgyMTc7PyYjODIxNzsgZm9sbG93ZWQg YnkgYW4gYXJ0aWNsZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2Fu aW1hbHMsIGFydC0/dGhpc2lkJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGFsbCBpbWFnZXMg ZnJvbSBjYXRlZ29yeSAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIGNhdGVnb3J5ICYjODIy MDthcnQtNDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhbiBp ZCBvZiA0MikuIFVzZSAmIzgyMTY7ISYjODIxNzsgdG8gPGVtPmV4Y2x1ZGU8L2VtPiB0aGUg Z2l2ZW4gY2F0ZWdvcnkgb3IgZmllbGQuPGRpdiBjbGFzcz0iYnJlYWsiPkZpZWxkcyBtYXkg dGhlbXNlbHZlcyBjb250YWluIGxpc3RzIG9mIGNhdGVnb3JpZXMuIFRoZSAmIzgyMTY7PyYj ODIxNzsgZmllbGQgbmFtZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRpY2xlX2lt YWdlKSBidXQgYmUgYXdhcmUgdGhhdCBjdXN0b20gZmllbGQgbmFtZXMgbWF5IGNvbnRhaW4g c3BhY2VzIGlmIDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPjwvZGl2 PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdWJsZXZlbDwvc3Bhbj4gOiBhbiBp bnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGhvdyBtYW55ICYjODIxNjtsZXZlbHMmIzgyMTc7IGRv d24gdG8gdHJhdmVyc2UgZWFjaCBtYXRjaGluZyBjYXRlZ29yeS4gPGNvZGU+c3VibGV2ZWw9 JnF1b3Q7MCZxdW90OzwvY29kZT4gKHRoZSBkZWZhdWx0KSBpcyBvbmx5IHRoZSB0b3AtbGV2 ZWw7IDEgPSB0b3AtbGV2ZWwgcGx1cyB0aGUgMXN0IHN1Yi1jYXQ7IDIgPSB0b3AtbGV2ZWwg cGx1cyB0aGUgbmV4dCAyIHN1Yi1jYXRzLCBhbmQgc28gb24uIDxjb2RlPnN1YmxldmVsPSZx dW90O2FsbCZxdW90OzwvY29kZT4gaXMgYWxsIHN1Yi1jYXRzPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlz dCBvZiBhdXRob3IgbG9naW4gbmFtZXM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ ZXh0ZW5zaW9uPC9zcGFuPiA6IGZpbHRlciBpbWFnZXMgYnkgdGhpcyBsaXN0IG9mIGZpbGUg ZXh0ZW5zaW9ucyAod2l0aG91dCB0aGUgbGVhZGluZyBkb3QpPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmFzcGVjdDwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlz dCBvZiBhc3BlY3QgcmF0aW9zLiBDaG9vc2UgZnJvbSBhbnkgb2YgPGNvZGU+cG9ydHJhaXQ8 L2NvZGU+LCA8Y29kZT5sYW5kc2NhcGU8L2NvZGU+IG9yIDxjb2RlPnNxdWFyZTwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGltZW5zaW9uczwvc3Bhbj4gOiBmaWx0 ZXIgaW1hZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBkaW1lbnNpb25zLiBTcGVjaWZ5IHVwIHRv IHR3byB2YWx1ZXMuIFRoZSBmaXJzdCBpcyB0aGUgd2lkdGggYW5kIHRoZSBzZWNvbmQgaXMg dGhlIGhlaWdodC4gSWYgeW91IHdpc2ggdG8gc3BlY2lmeSBtaW5pbXVtIG9yIG1heGltdW0g ZGltZW5zaW9ucywgYWRkIDxjb2RlPiZndDs8L2NvZGU+LCA8Y29kZT4mZ3Q7PTwvY29kZT4s IDxjb2RlPiZsdDs8L2NvZGU+IG9yIDxjb2RlPiZsdDs9PC9jb2RlPiBiZWZvcmUgdGhlIHZh bHVlLiBGb3IgZXhhbXBsZSwgPGNvZGU+ZGltZW5zaW9ucz0mcXVvdDsmZ3Q7PTEwMjQsICZn dDs9NzY4JnF1b3Q7PC9jb2RlPiB3b3VsZCBvbmx5IHNob3cgaW1hZ2VzIGdyZWF0ZXIgdGhh biBvciBlcXVhbCB0byAxMDI0ICYjMjE1OyA3NjggcGl4ZWxzPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+IDogcmUtb3JkZXIgdGhlIGltYWdlcyBieSA8Y29k ZT5jYXRlZ29yeTwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+bmFtZTwvY29kZT4sIDxj b2RlPmRhdGU8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4gKHRoZSBkZWZhdWx0IGlmIHVzaW5n IGFuIGlkKSwgZmlsZSA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uLCA8Y29kZT5hbHQ8L2NvZGU+ LCA8Y29kZT5jYXB0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lk dGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT50aHVtYl93aWR0aDwvY29k ZT4sIDxjb2RlPnRodW1iX2hlaWdodDwvY29kZT4sIDxjb2RlPmhhc3RodW1iPC9jb2RlPiBp biBlaXRoZXIgPGNvZGU+YXNjPC9jb2RlPmVuZGluZyBvciA8Y29kZT5kZXNjPC9jb2RlPmVu ZGluZyBvcmRlci4gVHdvIHNwZWNpYWwgY2FzZXMgZXhpc3Q6IDxjb2RlPmZpeGVkPC9jb2Rl PiBtYWludGFpbnMgdGhlIG9yZGVyIHlvdSBzcGVjaWZpZWQgaW4gdGhlIGlkIGFuZC9vciBj YXRlZ29yeSBhdHRyaWJ1dGUsIHdoaWxlIDxjb2RlPnJhbmRvbTwvY29kZT4gc2h1ZmZsZXMg dGhlIG9yZGVyLjxkaXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgPGNvZGU+cmFuZG9t PC9jb2RlPiBhcHBlYXJzIGFzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LCByYW5kb20g aW1hZ2VzIHdpbGwgYmUgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB0aGV5IHdpbGwg dGhlbiBiZSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBsaXN0ZWQgYWZ0ZXIgaXQu IElmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBwZWFycyBhbnl3aGVyZSBlbHNlIGluIHRoZSBs aXN0LCBhbnkgc29ydCBpdGVtcyBiZWZvcmUgaXQgd2lsbCBkZXRlcm1pbmUgdGhlIG9yZGVy IG9mIGRhdGEgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlLCBhbmQgdGhlIHJlc3VsdHMgd2ls bCB0aGVuIGJlIG9yZGVyZWQgcmFuZG9tbHkuIEluIHRoZSAybmQgY2FzZSwgYW55IGl0ZW1z IGxpc3RlZCBhZnRlciAmIzgyMTY7cmFuZG9tJiM4MjE3OyB3aWxsIGJlIGlnbm9yZWQsIGJ1 dCA8Y29kZT5maXhlZDwvY29kZT4gaXMgc3RpbGwgaG9ub3VyZWQ8L2Rpdj48L2xpPgoJPC91 bD4KCgk8aDQ+TGltaXRzIC8gb2Zmc2V0cyAvIHNpemVzPC9oND4KCgk8dWw+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2Yg aW1hZ2VzIHRvIHNob3cgPGVtPnBlciBwYWdlPC9lbT4uIDAgKHRoZSBkZWZhdWx0KSBvciBv bWl0dGVkID0gdW5saW1pdGVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1heGxp bWl0PC9zcGFuPiA6IHRoZSBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZSB0byBw dWxsIGZyb20gdGhlIGRhdGFiYXNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiAwPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9mZnNldDwvc3Bhbj4gOiBza2lwIHRoaXMgbWFueSBp bWFnZXMgYW5kIHN0YXJ0IGRpc3BsYXlpbmcgdGhlbSB0aGVyZWFmdGVyPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ibGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVt YmVyIG9mIHRodW1ibmFpbHMgdG8gc2hvdy4gMCBvciBvbWl0dGVkID0gYWxsIHRodW1icy4g Tm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIGxpbWl0OyB5b3UgY2FuIGxhdW5jaCBhIDIw LWltYWdlIGdhbGxlcnkgYnV0IG9ubHkgc2hvdyAxIHRodW1ibmFpbCBvbiB0aGUgcGFnZS4g QmUgYXdhcmUgdGhhdCBpZiB5b3UgYXJlIHNob3dpbmcgbXVsdGlwbGUgY2F0ZWdvcmllcyBm cm9tIGEgc2luZ2xlIHRhZywgeW91IHdpbGwgc2VlIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+ IHRodW1ibmFpbHMgPGVtPmF0IGVhY2ggY2hhbmdlIGluIGNhdGVnb3J5PC9lbT4uIElmIHlv dSBkb24mIzgyMTc7dCB3YW50IHRoaXMsIHNldCA8Y29kZT5vbmNoYW5nZTwvY29kZT4gdG8g c29tZXRoaW5nIGVsc2UuIFNlZSB0aGUgPGNvZGU+e29iamVjdH08L2NvZGU+IDxhIGhyZWY9 IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj50aHVtYm9mZnNldDwvc3Bhbj4gOiBza2lwIHRoaXMgbWFueSB0aHVtYnMg YmVmb3JlIGRpc3BsYXlpbmcgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gdGh1bWJuYWlsczwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYnNpemU8L3NwYW4+IDogdGFrZXMg b25lIG9yIHR3byBjb21tYS1zZXBhcmF0ZWQgbnVtYmVycyB0byBzcGVjaWZ5IHdpZHRoIGFu ZC9vciBoZWlnaHQgb2YgYWxsIHlvdXIgZ2FsbGVyeSB0aHVtYm5haWxzLiBUaGUgZGVmYXVs dCBpcyBpbiBwaXhlbHMgaWYgeW91IGRvbiYjODIxNzt0IHNwZWNpZnkgdW5pdHMuIE1pc3Np bmcgb3V0IG9uZSBvciB0aGUgb3RoZXIgcGFyYW1ldGVyIChpLmUuIGhhdmluZyBhbiAmIzgy MjA7ZW1wdHkmIzgyMjE7IHBhcmFtZXRlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNvbW1hKSB3 aWxsIG9ubHkgc2V0IG9uZSBvZiB0aGUgZGltZW5zaW9ucy4gVXNlIGEgc2luZ2xlIHZhbHVl IHRvIG1ha2Ugc3F1YXJlIHRodW1icy4gSWYgeW91IG9taXQgZWl0aGVyIG9yIGJvdGgsIHRo ZSBjb3JyZXNwb25kaW5nIHZhbHVlIHdpbGwgYmUgcmVhZCBmcm9tIHRoZSBkYXRhYmFzZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pbWdzaXplPC9zcGFuPiA6IGlkZW50aWNh bCB0byA8Y29kZT50aHVtYnNpemU8L2NvZGU+IGJ1dCBmb3IgdGhlIGZ1bGwgc2l6ZSBpbWFn ZXM8L2xpPgoJPC91bD4KCgk8aDQ+Rm9ybXMgYW5kIHBhZ2luZzwvaDQ+CgoJPHVsPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIGxheW91dCB5b3VyIG1hdGNoaW5nIGltYWdl cy4gV2l0aG91dCB0aGlzIGF0dHJpYnV0ZSB0aGUgcGx1Z2luIGFjdHMgYXMgYSBjb250YWlu ZXIgdGFnLiBXaXRob3V0IGEgY29udGFpbmVyLCB0aGUgcGx1Z2luIGRpc3BsYXlzIGVhY2gg ZnVsbC1zaXplIGltYWdlLCBoeXBlcmxpbmtlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5wYWdlZm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gZm9ybSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBvZiB5b3VyIHBhZ2luZyBuYXZp Z2F0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2luZzwvc3Bhbj4gOiBz d2l0Y2ggcGFnaW5nIG9uIHdpdGhvdXQgaGF2aW5nIHRvIHNwZWNpZnkgYSBwYWdlZm9ybS4g V2hlbiB0aGlzIGlzIHVzZWQsIGFsbCA8YSBocmVmPSIjcmVwX3BhZ2luZyI+cGFnZSByZXBs YWNlbWVudCB0YWdzPC9hPiBiZWNvbWUgYXZhaWxhYmxlIGluIHRoZSA8YSBocmVmPSIjcmVw X2dhbGxlcnkiPmdhbGxlcnkgcmVwbGFjZW1lbnQgdGFnczwvYT4gYXMgd2VsbDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdlcG9zPC9zcGFuPiA6IHRoZSBwb3NpdGlvbiBv ZiB0aGUgcGFnaW5nIGJsb2NrLiBPcHRpb25zIGFyZSA8Y29kZT5iZWxvdzwvY29kZT4gKHRo ZSBkZWZhdWx0KSwgPGNvZGU+YWJvdmU8L2NvZGU+LCBvciBib3RoIG9mIHRoZW0gc2VwYXJh dGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5vYmplY3Rmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlvdXIgPGNvZGU+e29iamVj dH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZy4gWW91IGNhbiB1c2UgYWxsIHRoZSBzdGFuZGFy ZCA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPmdhbGxlcnkgcmVwbGFjZW1lbnQgdGFnczwvYT4g d2l0aCB0aGUgZXhjZXB0aW9uIG9mIDxjb2RlPntvYmplY3R9PC9jb2RlPiBpdHNlbGYhIFVz ZXMgYSBoeXBlcmxpbmtlZCBpbWFnZSBpZiBubyBmb3JtIGlzIHNwZWNpZmllZDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb3VudGZvcm08L3NwYW4+IDogbGlzdCBvZiA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtcyB0byB1c2Ugd2hlbiBjZXJ0YWluIG51 bWJlcmVkIGltYWdlcyBhcmUgcmVhY2hlZC4gU2VlIDxhIGhyZWY9IiNjb3VudGZvcm0iPmNv dW50IGZvcm1zPC9hPiBhbmQgPGEgaHJlZj0iI2VnMTAiPmV4YW1wbGUgMTA8L2E+LiBUaGlz IGhhcyBubyBlZmZlY3QgaW4gY29sbGF0ZSBtb2RlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmNvdW50cG9zPC9zcGFuPiA6IGRlZmF1bHQgcG9zaXRpb24gb2YgdGhlIDxjb2Rl PmNvdW50Zm9ybTwvY29kZT5zLiBFaXRoZXIgPGNvZGU+YWJvdmU8L2NvZGU+ICh0aGUgZGVm YXVsdCksIDxjb2RlPmJlbG93PC9jb2RlPiwgb3IgYm90aCBvZiB0aGVtIHNlcGFyYXRlZCBi eSA8Y29kZT5kZWxpbTwvY29kZT4uIENhbiBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLWZvcm0g YmFzaXM8L2xpPgoJPC91bD4KCgk8aDQ+R3JvdXBpbmcgaW1hZ2VzPC9oND4KCgk8dWw+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZTwvc3Bhbj4gOiBhIGxpc3Qgb2YgYXR0 cmlidXRlcyB0byAmIzgyMjA7d2F0Y2gmIzgyMjE7LiBJdCB0ZWxscyB0aGUgcGx1Z2luIHRo YXQgeW91IHdhbnQgdG8gYmUgbm90aWZpZWQgd2hlbiBpdGVtcyBpbiB0aGlzIGxpc3QgY2hh bmdlIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cyBpbWFnZS4gVW5kZXIgbm9ybWFsIGNpcmN1 bXN0YW5jZXMgdGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgeW91ciA8Y29kZT5zb3J0PC9j b2RlPiBwYXJhbWV0ZXIgb3IgeW91IG1heSBnZXQgc29tZSBmcmVha3kgcmVzdWx0cyEgSXQg ZGVmYXVsdHMgdG8gPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LjxkaXYgY2xhc3M9ImJyZWFrIj5U aGlzIGlzIHZlcnkgdXNlZnVsIGZvciBzcGxpdHRpbmcgZ2FsbGVyaWVzIGF0IGV2ZXJ5IGNo YW5nZSBpbiBjYXRlZ29yeSBhbmQgZGlzcGxheWluZyB0aGUgY2F0ZWdvcnkgdGl0bGUgYWJv dmUgZWFjaCBncm91cC4gSXRlbXMgeW91IHdhdGNoIGFyZSBhZGRlZCB0byB0aGUgbGlzdCBv ZiByZXBsYWNlbWVudCB0YWdzIGFuZCBhcmUgYXZhaWxhYmxlIGJ5IHB1dHRpbmcgJiM4MjIw O29uY2hhbmdlOiYjODIyMTsgaW4gZnJvbnQgb2YgdGhlaXIgbmFtZSAoZS5nLiA8Y29kZT57 b25jaGFuZ2U6Y2F0ZWdvcnl9PC9jb2RlPiAmIzgyMTI7IHNlZSA8YSBocmVmPSIjZWc2Ij5l eGFtcGxlIDY8L2E+IGZvciBtb3JlKS4gVGhlIGNvbG9uIGRlbGltaXRlciBjYW4gYmUgY2hh bmdlZCB3aXRoIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+LjwvZGl2PjxkaXYgY2xhc3M9ImJy ZWFrIj5Zb3UgY2FuIGFsc28gZWxlY3QgdG8gZGVmZXIgcHJvY2Vzc2luZyBvZiBvbmNoYW5n ZSBldmVudHMgdG8gYSBmb3JtLiBUbyBkbyBzbywgc3BlY2lmeSBhIGZvcm0gYWZ0ZXIgeW91 ciB3YXRjaCBpdGVtIGxpa2UgdGhpcyA8Y29kZT5jYXRlZ29yeV90aXRsZTpteV9mb3JtPC9j b2RlPi4gSW4gbXlfZm9ybSB5b3UgY2FuIHB1dCBhbnkgbWFya3VwIGFuZCByZXBsYWNlbWVu dCB0YWdzLiBTZWUgPGEgaHJlZj0iI2VnMTEiPmV4YW1wbGUgMTE8L2E+IGZvciBtb3JlLjwv ZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Bbm90aGVyIHdheSBvZiB1c2luZyB0aGlzIGF0dHJp YnV0ZSBpcyB3aXRoIHRoZSBzcGVjaWFsIHByZWZpeCA8Y29kZT5zbWRfZXZlcnk6bjwvY29k ZT4gd2hpY2ggd2lsbCB0cmlnZ2VyIGEgZ3JvdXAgY2hhbmdlIGV2ZXJ5IE50aCBpbWFnZS4g Tm90ZSBpdCBjYW4mIzgyMTc7dCBiZSB1c2VkIHRvIHdhdGNoIHNwZWNpZmljIHRoaW5ncyBp biB0aGlzIG1vZGU7IGl0IGlzIG9ubHkgdXNlZCB0byB0cmlnZ2VyIDxjb2RlPmdyb3VwdGFn PC9jb2RlPiBjaGFuZ2VzPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9u Y2hhbmdld3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgYW55 IDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nLCBlLmcu IDxjb2RlPm9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OzwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2VjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0cm8gYXBwbHkgdG8gdGhlIHdy YXB0YWcgb2YgYW55IG9uY2hhbmdlIGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmc8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z3JvdXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwg dGFnIHRvIG1ha2UgYXZhaWxhYmxlIGFzIGEgcmVwbGFjZW1lbnQgc28geW91IGNhbiB3cmFw IGdyb3VwcyBvZiBlbGVtZW50cyBhdCBlYWNoIDxjb2RlPm9uY2hhbmdlPC9jb2RlPi4gRGVm YXVsdDogdW5zZXQuIFNlZSA8YSBocmVmPSIjZWc2Ij5leGFtcGxlcyA2PC9hPiBmb3IgbW9y ZSBvbiB0aGUgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29kZT4gLyA8Y29kZT5ncm91cHRhZ2Vu ZDwvY29kZT4gcmVwbGFjZW1lbnQgdGFnczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5ncm91cGNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiBjbGFzcyBuYW1lIGFwcGxpZWQgdG8gYW55IDxjb2RlPmdyb3VwdGFnPC9jb2RlPjwvbGk+ Cgk8L3VsPgoKCTxoND5UYWcvY2xhc3MvZm9ybWF0dGluZyBhdHRyaWJ1dGVzPC9oND4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClI VE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJlIGdhbGxlcnksIGUuZy4gPGNvZGU+d3Jh cHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIHRo dW1ibmFpbDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBhcHBsaWVkIHRv IHRoZSB3cmFwdGFnPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmh0bWxfaWQ8L3Nw YW4+IDogdGhlIG5hbWUgb2YgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxj b2RlPmlkPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRN TCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4sIGUu Zy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiA8Y29k ZT51bDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2YnJlYWs8L3Nw YW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggaXRlbSB3aXRoaW4gdGhl IDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+bGk8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIG9mIHRoZSBuYXZpZ2F0aW9uIHdy YXB0YWcuIERlZmF1bHQ6IDxjb2RlPnNtZF9nYWxsZXJ5X25hdjwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+ZW1wdHljbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgbmF2aWdhdGlvbiBpdGVt cyB0aGF0IGFyZSA8ZW0+bm90PC9lbT4gbGlua3MuIERlZmF1bHQ6IDxjb2RlPmVtcHR5PC9j b2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtYXQ8L3NwYW4+ICg8c3Bh biBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2RhdGV9PC9jb2RlPjwv c3Bhbj4pIDogYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIGRhdGUgZm9ybWF0IHVzZWQuIENh biB0YWtlIGFueSA8YSBocmVmPSJodHRwOi8vdWsucGhwLm5ldC9zdHJmdGltZSI+c3RyZnRp bWUoKTwvYT4gdmFsdWVzLiBEZWZhdWx0cyB0byB0aGUgZGF0ZSBzeXN0ZW0gYXMgc2V0IGlu IHRoZSBzaXRlJiM4MjE3O3MgcHJlZnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ bGFuZzwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1c2luZyA8Y29k ZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBzZXRzIHRoZSBsYW5ndWFnZSBjb2RlIG9mIHRo ZSBkYXRlIGZvcm1hdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+ ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2RhdGV9PC9j b2RlPjwvc3Bhbj4pIDogcmV0dXJucyBlaXRoZXIgbG9jYWwgdGltZSBhY2NvcmRpbmcgdG8g dGhlIHNldCB0aW1lIHpvbmUgcHJlZmVyZW5jZXMgKDApLCBvciA8c3BhbiBjbGFzcz0iY2Fw cyI+R01UPC9zcGFuPiB0aW1lICgxKS4gRGVmYXVsdDogMDwvbGk+Cgk8L3VsPgoKCTxoND5Q bHVnaW4gY3VzdG9taXNhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcg YXR0cmlidXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5wYXJhbWRlbGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVy IGZvciBzcGVjaWZ5aW5nIGludGVyLXBhcmFtZXRlciBhdHRyaWJ1dGVzLiBEZWZhdWx0IGlz IGNvbG9uICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xsYXRlPC9zcGFu PiA6IHN3aXRjaCB0aGUgcGx1Z2luIGludG8gPGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Y29s bGF0ZSBtb2RlPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xsYXRlZGVs aW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBlYWNoIGNvbGxhdGVk IGl0ZW0uIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEgaHJlZj0iI2NvbWJvcyI+ Y3VzdG9tIHJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmVzY2FwZTwvc3Bhbj4gOiBsaXN0IG9mIHJlcGxhY2VtZW50IHZhcmlhYmxlIG5hbWVz IHRvICYjODIxNjtlc2NhcGUmIzgyMTc7LCBpbiBvdGhlciB3b3JkcyBjb252ZXJ0IGFueSA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFncyB0byB0aGVpciBjaGFyYWN0ZXIg ZW50aXR5IGVxdWl2YWxlbnRzLiBTZXQgdG8gPGNvZGU+ZXNjYXBlPSZxdW90OyZxdW90Ozwv Y29kZT4gdG8gdHVybiB0aGlzIGZlYXR1cmUgb2ZmLiBZb3UgY2FuIGVzY2FwZSB5b3VyIG93 biBjb21ib3MuIERlZmF1bHQ6IDxjb2RlPmFsdCwgdGl0bGUsIGNhcHRpb248L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0cmljdGZpZWxkczwvc3Bhbj4gOiB3aGVu IHVzaW5nICYjODIxNjs/JiM4MjE3OyBvciAmIzgyMTY7ISYjODIxNzsgZmllbGRzLCBzcGFj ZXMgYXJlIGFsbG93ZWQgaW4gZmllbGQgbmFtZXMuIFNldCA8Y29kZT5zdHJpY3RmaWVsZHM9 JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gZm9yYmlkIHNwYWNlcy4gRGVmYXVsdDogMDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nYWxsZXJ5aWQ8L3NwYW4+IDogdW5kZXIgbm9y bWFsIGNpcmN1bXN0YW5jZXMgeW91IHNob3VsZCBuZXZlciBuZWVkIHRoaXMuIEVhY2ggZ2Fs bGVyeSBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCBiYXNlZCBvbiB0aGUgc3VwcGxpZWQgYXR0 cmlidXRlcyBzbyB5b3UgbWF5IHVzZSBtb3JlIHRoYW4gb25lIGdhbGxlcnkgb24gYSBwYWdl IGFuZCBuYXZpZ2F0ZSB0aGVtIGluZGVwZW5kZW50bHkuIEluIHRoZSB1bmxpa2VseSBldmVu dCB0aGF0IHR3byBpZGVudGljYWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91IGNhbiBvdmVycmlk ZSB0aGUgSUQgZm9yIGEgZ2FsbGVyeSBieSB1c2luZyB0aGlzIGF0dHJpYnV0ZS48ZGl2IGNs YXNzPSJicmVhayI+SW50ZXJuYWxseSB0aGUgcGx1Z2luIGdlbmVyYXRlcyBhIDMyLWNoYXJh Y3RlciBoYXNoIHN0cmluZyBmb3IgZWFjaCB0YWcsIHRoZW4gcGlja3MgYSA0LWNoYXIgY29k ZSBmcm9tIHRoaXMgc3RyaW5nIChpdCB0YWtlcyBldmVyeSA2dGggY2hhcmFjdGVyIGJ5IGRl ZmF1bHQpLiBZb3UgY2FuIHN1cHBseSBhIHVuaXF1ZSBmaXhlZCBzdHJpbmcgKGUuZy4gPGNv ZGU+Z2FsbGVyeWlkPSZxdW90O015R2FsJnF1b3Q7PC9jb2RlPikgb3IgZ2l2ZSBpdCBhIHF1 ZXN0aW9uIG1hcmsgYW5kIDIgbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbiAoZS5nLiA8 Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzU6NCZxdW90OzwvY29kZT4pLiBUaGUgZmlyc3QgbnVt YmVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbmFsIHN0cmluZyB0byBnZW5lcmF0ZSwgdGhl IHNlY29uZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFjdGVycyB0byBza2lwIGluIHRoZSAz Mi1jaGFyIHN0cmluZyBlYWNoIHRpbWUgaXQgcGlja3Mgb25lLjwvZGl2PjxkaXYgY2xhc3M9 ImJyZWFrIj5JbiB0aGlzIGNhc2UgaXQgZ2VuZXJhdGVzIGEgNS1jaGFyYWN0ZXIgc3RyaW5n IGZyb20gdGhlIGNoYXJhY3RlcnMgaXQgZmluZHMgYXQgcG9zaXRpb25zIDEsNSw5LDEzLCBh bmQgMTcuIElmIHlvdSBvbWl0IHRoZSAybmQgbnVtYmVyIChlLmcuIDxjb2RlPmdhbGxlcnlp ZD0mcXVvdDs/NiZxdW90OzwvY29kZT4pIGl0IHdpbGwgYXNzdW1lIGl0JiM4MjE3O3MgYW4g aW5jcmVtZW50IG9mIDE8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1 bWI8L3NwYW4+IDogdW5kZXIgbm9ybWFsIG9wZXJhdGlvbiwgdGh1bWJuYWlscyB1c2UgdGhl ICYjODIxNjt0JiM4MjE3OyBpbWFnZSBpbiB5b3VyIDxjb2RlPmltYWdlczwvY29kZT4gZGly ZWN0b3J5IGFuZCB0aGUgZnVsbCBzaXplIHBpY3R1cmVzIGRvbiYjODIxNzt0LiBJZiB5b3Ug d2lzaCB0byByZWRlZmluZSB0aGlzIHlvdSBtYXkgc3BlY2lmeSB1cCB0byB0d28gdmFsdWVz IHNlcGFyYXRlZCBieSBhIGNvbG9uLiBUaGUgZmlyc3QgaW5kaWNhdGVzIHRoZSBzdGF0ZSBv ZiB0aGUgZnVsbCBzaXplIGltYWdlLCBhbmQgdGhlIHNlY29uZCBpcyB0aGUgc3RhdGUgb2Yg dGhlIHRodW1ibmFpbDoKCTx1bD4KCQk8bGk+dGh1bWI9MDoxICYjODIxMjsgZnVsbHNpemUg PSByZWd1bGFyIGltYWdlIDogdGh1bWJuYWlsID0gdGh1bWI8L2xpPgoJCTxsaT50aHVtYj0x OjAgJiM4MjEyOyBmdWxsc2l6ZSA9IHRodW1iIDogdGh1bWJuYWlsID0gcmVndWxhciBpbWFn ZTwvbGk+CgkJPGxpPnRodW1iPTA6MCAob3IgdGh1bWI9MCkgJiM4MjEyOyBmdWxsc2l6ZSA9 IHJlZ3VsYXIgaW1hZ2UgOiB0aHVtYm5haWwgPSByZWd1bGFyIGltYWdlPC9saT4KCQk8bGk+ dGh1bWI9MToxIChvciB0aHVtYj0xKSAmIzgyMTI7IGZ1bGxzaXplID0gdGh1bWIgOiB0aHVt Ym5haWwgPSB0aHVtYjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij50ZXh0PC9zcGFuPiA6IGRpc3BsYXkgdGhlIGdpdmVuIHRleHQgaW5zdGVhZCBvZiB0aHVt Ym5haWxzLiBUaGUgdGV4dCBjYW4gY29udGFpbiA8Y29kZT4/PC9jb2RlPiBhcnRpY2xlIGZp ZWxkczwvbGk+Cgk8L3VsPgoKCTxoND5TcGVjaWFsIGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbHVtbnM8L3NwYW4+IDogZ2l2ZSBhIGNvbW1h LXNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgY29sdW1ucyB5b3Ugd291bGQgbGlrZSB0 byBwdWxsIGZyb20gdGhlIGRhdGFiYXNlLiBFYWNoIGl0ZW0geW91IHNwZWNpZnkgaXMgc3Bs aXQgaW50byB0aHJlZSBwYXJ0czogPGNvZGU+dGFibGUuY29sdW1uOnJlcGxhY2VtZW50IG5h bWU8L2NvZGU+LiBUaGUgb25seSBtYW5kYXRvcnkgcGFydCBpcyB0aGUgcmVwbGFjZW1lbnQg bmFtZSwgc2luY2UgPGNvZGU+dGFibGU8L2NvZGU+IGRlZmF1bHRzIHRvIHR4cF9pbWFnZSwg YW5kIHRoZSA8Y29kZT5jb2x1bW48L2NvZGU+IGRlZmF1bHRzIHRvIHRoZSBzYW1lIG5hbWUg YXMgdGhlIHJlcGxhY2VtZW50IHlvdSBzcGVjaWZ5LjxkaXYgY2xhc3M9ImJyZWFrIj5Gb3Ig ZXhhbXBsZSwgaWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBjbm9faW1hZ2Vfb3JkZXIgcGx1 Z2luIHlvdSBjb3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbiZxdW90Ozwv Y29kZT4sIHNpbmNlIHRoZSBwbHVnaW4gYWRkcyB0aGUgJiM4MjE2O3Bvc2l0aW9uJiM4MjE3 OyBjb2x1bW4gdG8gdHhwX2ltYWdlLiBZb3UgY291bGQgdGhlbiBzb3J0IGJ5IDxjb2RlPnBv c2l0aW9uPC9jb2RlPiBhbmQgYWxzbyBkaXNwbGF5IHRoZSBpbWFnZSYjODIxNztzIDxjb2Rl Pntwb3NpdGlvbn08L2NvZGU+LiBJZiB5b3Ugd2lzaGVkIHRvIHJlbmFtZSB0aGUgdmFyaWFi bGUgdG8sIHNheSwgPGNvZGU+aW1ncG9zPC9jb2RlPiB5b3Ugd291bGQgdXNlIDxjb2RlPmNv bHVtbnM9JnF1b3Q7cG9zaXRpb246aW1ncG9zJnF1b3Q7PC9jb2RlPi4gTm90ZSB0aGF0IGlm IHlvdSBzcGVjaWZ5IHRoZSB0YWJsZSBuYW1lIHlvdSBtdXN0IGFsc28gaW5jbHVkZSB0aGUg dGFibGUgcHJlZml4IGlmIHlvdSBoYXZlIHVzZWQgb25lLjwvZGl2PjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5kaXJlY3Rvcnk8L3NwYW4+IDogKDxzcGFuIGNsYXNzPSJyZXF1 aXJlZCI+ZXhwZXJpbWVudGFsPC9zcGFuPikgcmVhZCBpbWFnZXMgZnJvbSBhIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgKG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cykgaW5zdGVh ZCBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWF0Y2g8L3NwYW4+IDogbGltaXQgdGhlIGltYWdl cyBhbmQgZGlyZWN0b3JpZXMgY2hvc2VuIGluIDxjb2RlPmRpcmVjdG9yeTwvY29kZT4gbW9k ZS4gR2l2ZSBhIGxpc3Qgb2Ygd29yZHMgdG8gaW5jbHVkZSBvciAhZXhjbHVkZSBhbmQgYW55 IG1hdGNoaW5nIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpbGwgYmUgY2hvc2VuIG9yIGlnbm9y ZWQsIHJlc3BlY3RpdmVseS4gVGhlIG1hdGNoIHRlcm1zIGFyZSBhdXRvbWF0aWNhbGx5IGFz c3VtZWQgdG8gYmUgJiM4MjIwO3dpbGQmIzgyMjE7IHNvIGFueSBwYXJ0IG9mIHRoZSBmaWxl IG5hbWUgLyBwYXRoIHdpbGwgdHJpZ2dlciB0aGUgbWF0Y2g8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+ZGVidWc8L3NwYW4+IDogdHVybiBvbiBkaWFnbm9zdGljcy4gVmFyeWlu ZyBsZXZlbHMgb2YgdmVyYm9zaXR5IGZyb20gMCAobm9uZSkgdG8gNCAoYSBsb3QpPC9saT4K CTwvdWw+CgoJPGgyIGlkPSJnYWxsZXJ5X2Zvcm0iPkdhbGxlcnkgZm9ybTwvaDI+CgoJPHA+ VGhlIDxjb2RlPmZvcm08L2NvZGU+IGlzIHdoZXJlIHlvdSBkZXNpZ24gd2hhdCBldmVyeSB0 aHVtYm5haWwgd2lsbCBsb29rIGxpa2Ugb24gdGhlIHNjcmVlbi4gWW91IGRvIHRoaXMgYnkg c3BlY2lmeWluZyA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gbWFya3VwIG9yIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MgYXMgbm9ybWFsLiBJbiBrZXkgcGxh Y2VzIHdoZXJlIHlvdSB3YW50LCBmb3IgZXhhbXBsZSwgYW4gaW1hZ2UgSUQgLyBhbHQgdGFn IC8gaW1hZ2Ugd2lkdGggdG8gYmUgZGlzcGxheWVkLCB5b3Ugc3BlY2lmeSBzcGVjaWFsIHJl cGxhY2VtZW50IHRhZ3MsIGRldGFpbGVkIGJlbG93LiBUaGVzZSBhcmUgcmVwbGFjZWQgZm9y IGVhY2ggaW1hZ2UgaW4gdHVybiwgdGh1cyBidWlsZGluZyB1cCB0aGUgZ2FsbGVyeS48L3A+ CgoJPHA+SW4gY29sbGF0ZSBtb2RlLCB0aGUgaW1hZ2UgZGV0YWlscyBhcmUgaW5zdGVhZCBt YWRlIGludG8gbGlzdHMuIFRoZSBmb3JtIGlzIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYW5kIHRo ZSByZXBsYWNlbWVudCB0YWdzIG91dHB1dCB0aGUgZW50aXJlIGxpc3QuPC9wPgoKCTxoMyBj bGFzcz0iYXR0cyAiIGlkPSJyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczogZ2FsbGVy eTwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2lkfTwvc3Bhbj4gOiBp bWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5hbWUgd2l0aG91dCBp dHMgZXh0ZW5zaW9uKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmFtZX08L3Nw YW4+IDogZnVsbCBpbWFnZSBmaWxlbmFtZSBhcyBkZWZpbmVkIGluIHRoZSBkYXRhYmFzZSwg dXN1YWxseSBpbmNsdWRpbmcgZXh0ZW5zaW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntleHR9PC9zcGFuPiA6IGZpbGUgZXh0ZW5zaW9uLCBpbmNsdWRpbmcgZG90PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeX08L3NwYW4+IDogaW1hZ2UgY2F0 ZWdvcnkgbmFtZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y2F0ZWdvcnlfdGl0 bGV9PC9zcGFuPiA6IGltYWdlIGNhdGVnb3J5IHRpdGxlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnthdXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRlZCB0aGUgaW1hZ2U8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3VybH08L3NwYW4+IDogPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIGZ1bGxzaXplIGltYWdlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnt0aHVtYnVybH08L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57aW1hZ2VwYXRofTwvc3Bhbj4gOiBkaXJlY3RvcnkgdGhlIGltYWdlIGlzIGluPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZWRlZn08L3NwYW4+IDoganVzdCB0 aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIGltYWdlIChlLmcuIDUuanBnKTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUg bmFtZSBwYXJ0IG9mIHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBnKTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57YWx0fTwvc3Bhbj4gOiBhbHQgdGV4dDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57dGl0bGV9IG9yIHtjYXB0aW9ufTwvc3Bhbj4gOiBjYXB0aW9u PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntkYXRlfTwvc3Bhbj4gOiBpbWFnZSB1 cGxvYWQgZGF0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57d2lkdGh9PC9zcGFu PiA6IGltYWdlIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntoZWlnaHR9 PC9zcGFuPiA6IGltYWdlIGhlaWdodDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 d3VuaXRzfTwvc3Bhbj4gOiBpbWFnZSB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0sIGV0 Yy4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntodW5pdHN9PC9zcGFuPiA6IGlt YWdlIGhlaWdodCB1bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ3 aWR0aH08L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnt0aHVtYmhlaWdodH08L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ3dW5pdHN9PC9zcGFuPiA6IHRodW1ibmFp bCB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0sIGV0Yy4pPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnt0aHVtYmh1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodCB1 bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aGFzdGh1bWJ9PC9zcGFuPiA6 IGlmIHRoZSBpbWFnZSBoYXMgYW4gYXNzb2NpYXRlZCB0aHVtYm5haWwgb3Igbm90PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntnYWxsZXJ5aWR9PC9zcGFuPiA6IGdhbGxlcnkg aWQgdGhhdCB5b3Ugb3IgdGhlIHBsdWdpbiBhc3NpZ25lZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57b2JqZWN0fTwvc3Bhbj4gOiBhIHNwZWNpYWwgaXRlbSBjb250YWluaW5n IGVpdGhlciB0aGUgPGNvZGU+dGV4dDwvY29kZT4gT1IgdGhlIGltYWdlIHRhZyBvZiB0aGUg Y29ycmVzcG9uZGluZyB0aHVtYm5haWwsIGJ1dCA8ZW0+b25seTwvZW0+IGlmIDxjb2RlPnRo dW1ibGltaXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxpbWl0PSZx dW90OzEmcXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9yIHRoZSBm aXJzdCB0aHVtYm5haWwgaW4gdGhlIGxpc3Q7IGV2ZXJ5IG90aGVyIHRpbWUgaXQgaXMgZW1w dHk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NvdW50ZXJ9PC9zcGFuPiA6IGlt YWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVhY2ggdGlt ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aW5kZXh9PC9zcGFuPiA6IGluZGV4 IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmNvdW50ZXJ9PC9zcGFuPiA6IHRo dW1ibmFpbCBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEuIE5vdGUgaXQgaXMgJiM4 MjE2O3Jlc2V0JiM4MjE3OyB3aGVuZXZlciBhbiBlbGVtZW50IGdpdmVuIGluIDxjb2RlPm9u Y2hhbmdlPC9jb2RlPiBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGl0ZW08L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaW5kZXh9PC9zcGFuPiA6IGluZGV4IGNvdW50 ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpLiBJdCBpcyBy ZXNldCBsaWtlIDxjb2RlPnt0aHVtYmNvdW50ZXJ9PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRvdGFsIG51bWJlciBvZiBp bWFnZXMgbWF0Y2hlZCBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1h Z2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYg ZWl0aGVyIDxjb2RlPnBhZ2luZz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdl Zm9ybTwvY29kZT4gaGF2ZSBiZWVuIHNwZWNpZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVw X3BhZ2luZyI+cGFnaW5nIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9v LiBJZiB0aG9zZSBhcmVuJiM4MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21i b3MiPmNyZWF0ZSB5b3VyIG93bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRo ZSBhYm92ZSwgb3B0aW9uYWxseSB3aXRoIGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNv ZGU+P2V4Y2VycHQ8L2NvZGU+LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0 aWNsZV9pbWFnZTwvY29kZT4sIGV0Yy48L3A+CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQg ZGVwZW5kaW5nIGlmIHlvdSBhcmUgd2F0Y2hpbmcgZm9yIDxjb2RlPm9uY2hhbmdlPC9jb2Rl PiBlbGVtZW50cywgb3IgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGEgPGNvZGU+Z3JvdXB0YWc8 L2NvZGU+LiBJZiB5b3UgYWRkZWQgPGNvZGU+b25jaGFuZ2U9JnF1b3Q7YXV0aG9yLCBjYXRl Z29yeSZxdW90OzwvY29kZT4gdGhlbiBldmVyeSB0aW1lIHRoZSBhdXRob3Igb3IgY2F0ZWdv cnkgY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UsIG9uZSBvciB0d28g bmV3IHJlcGxhY2VtZW50IHRhZ3Mgd291bGQgYmVjb21lIGF2YWlsYWJsZTsgbmFtZWx5IDxj b2RlPntvbmNoYW5nZTphdXRob3J9PC9jb2RlPiBhbmQgPGNvZGU+e29uY2hhbmdlOmNhdGVn b3J5KTwvY29kZT4uIFVzaW5nIG9uY2hhbmdlIHdpdGggPGNvZGU+c21kX2V2ZXJ5PC9jb2Rl PiBkb2VzIDxlbT5ub3Q8L2VtPiBhZGQgYSBuZXcgcmVwbGFjZW1lbnQgdGFnIGFzIGl0IGlz IG1lcmVseSB1c2VkIHRvIGNvdW50LjwvcD4KCgk8cD5JZiB5b3UgdXNlZCA8Y29kZT5ncm91 cHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+IGFzIHdlbGwsIHlvdSB3b3VsZCBiZSBnaXZl biB0d28gbmV3IHJlcGxhY2VtZW50IHRhZ3MgbGFiZWxsZWQgPGNvZGU+Z3JvdXB0YWdzdGFy dDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPi4gU2VlIDxhIGhyZWY9IiNl ZzYiPmV4YW1wbGUgNjwvYT4gZm9yIGRldGFpbHMuPC9wPgoKCTxoMiBpZD0icGFnaW5nX2Zv cm0iPlBhZ2luZyBmb3JtPC9oMj4KCgk8cD5BZGQgZ2FsbGVyeSBuYXZpZ2F0aW9uIHRvIHlv dXIgcGFnZS4gV29ya3MgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgPGEgaHJlZj0iI2dh bGxlcnlfZm9ybSI+Z2FsbGVyeSBmb3JtPC9hPjogYSBzZXJpZXMgb2YgcmVwbGFjZW1lbnQg dGFncyBnb3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0ZW1zIGFyZSBhdmFpbGFi bGUuIFlvdSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5leHQvcHJldi4gT3IgcGVyaGFw cyAxc3QgcGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBhZ2UgbGlua3MuPC9wPgoKCTxo MyBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCB0YWdzOiBwYWdp bmc8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZmaXJzdH08L3Nw YW4+IDogZmlyc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0ZpcnN0JiM4MjIxOyAv IDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57bmF2cHJldn08L3NwYW4+IDogcHJldmlvdXMgcGFnZSAoZGVmYXVsdCBsYWJl bDogJiM4MjIwOyZsYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bh bj4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZlYXJsaWVyfTwvc3Bhbj4g OiBhbnkgcGFnZSBudW1iZXJzIGJlZm9yZSB0aGUgY3VycmVudCBwYWdlPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzdXJsfTwvc3Bhbj4gOiBjdXJyZW50IHBhZ2Ug d2l0aCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmsgdG8gaXRzZWxmPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzfTwvc3Bhbj4gOiBjdXJyZW50 IHBhZ2Ugd2l0aG91dCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbms8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkgcGFn ZSBudW1iZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e25hdm5leHR9PC9zcGFuPiA6IG5leHQgcGFnZSAoZGVmYXVsdCBsYWJlbDog JiM4MjIwOyZyYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4p PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0fTwvc3Bhbj4gOiBsYXN0 IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDtMYXN0JiM4MjIxOyAvIDxzcGFuIGNsYXNz PSJjYXBzIj5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2 Zmlyc3RwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdG8gZmlyc3QgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2cHJl dnBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0 byBwcmV2aW91cyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlz cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRv IGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dHBh Z2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBu ZXh0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhc3RwYWdldXJs fTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gbGFzdCBw YWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGltYWdlc308L3NwYW4+ IDogdG90YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoZSBjdXJyZW50IHBhZ2U8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFscGFnZXN9PC9zcGFuPiA6IHRv dGFsIG51bWJlciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rpb248L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBu dW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5UaGUg Y3VycmVudCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNzIG9mICYjODIxNjtjdXJyZW50JiM4MjE3 OyBhbmQgZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0LCBhIDxjb2RlPiZsdDtsaSZndDs8L2Nv ZGU+IGZvciBlYXN5IHN0eWxpbmcuIEN1c3RvbSBsYWJlbHMgYXJlIGRlZmluZWQgZGlyZWN0 bHkgaW4gdGhlIGZvcm0gaXRzZWxmOyBmb3IgZXhhbXBsZSB0byBsYWJlbCB0aGUgbGluayB0 aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBnYWxsZXJ5IGFzICYj ODIyMDsxc3QmIzgyMjE7LCB1c2U6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDoxc3R9PC9j b2RlPjwvcD4KCgk8cD5XaXRoIHRoaXMgc3ludGF4IHlvdSBjYW4gbGFiZWwgbmF2Zmlyc3Qs IG5hdmxhc3QsIG5hdnByZXYsIG5hdm5leHQgYW5kIG5hdnRoaXMgKHRoZSAmIzgyMTY7OiYj ODIxNzsgZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBpcyBzcGVjaWZpZWQgYnkgPGNvZGU+cGFy YW1kZWxpbTwvY29kZT4pLiBZb3UgY2FuIHVzZSB0aGlzIG1lY2hhbmlzbSB0byByZWFkIDxz cGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHNuaXBwZXRzLCBlLmc6PC9wPgoKCTxwPjxj b2RlPntuYXZmaXJzdDojI2ZpcnN0TGFiZWwjI308L2NvZGU+PC9wPgoKCTxwPllvdSBhcmUg bm90IGxpbWl0ZWQgdG8gdGV4dCBsYWJlbHMuIEltYWdlcyBjb3VsZCBiZSB1c2VkOjwvcD4K Cgk8cD48Y29kZT57bmF2bGFzdDogJmx0O2ltZyBzcmM9JnF1b3Q7aW1hZ2VzL2xhc3QucG5n JnF1b3Q7IC8mZ3Q7fTwvY29kZT48L3A+CgoJPHA+WW91IGNhbiBvdmVycmlkZSB0aGUgbnVt YmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBieSBuYXZlYXJsaWVyIGFuZCBuYXZsYXRlciBieSBz cGVjaWZ5aW5nIGEgY29sb24gYW5kIGEgbnVtYmVyLiBTbyB0byBvbmx5IHNob3cgMiBpdGVt cyB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBwYWdlIGFuZCAzIGl0ZW1zIHRvIHRoZSBy aWdodCwgdXNlIDxjb2RlPntuYXZlYXJsaWVyOjJ9IHtuYXZsYXRlcjozfTwvY29kZT4gaW4g eW91ciBmb3JtLiBJZiB5b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUsIHtuYXZlYXJsaWVyOjR9 IHtuYXZsYXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7IDUgNiA3IDggOSAxMCAx MSAxMiAmZ3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+Q3VycmVudGx5IDxjb2RlPntuYXZlYXJs aWVyfTwvY29kZT4gYW5kIDxjb2RlPntuYXZsYXRlcn08L2NvZGU+IG9ubHkgZGlzcGxheSBh cmFiaWMgbnVtZXJhbHMuIEFueSBpZGVhcyBvbiBob3cgdG8gb2ZmZXIgb3RoZXIgY2hhcmFj dGVyIHNldHMgZ3JlYXRseSBhcHByZWNpYXRlZC48L3A+CgoJPGgyIGlkPSJjb3VudGZvcm0i PkNvdW50IGZvcm1zPC9oMj4KCgk8cD5Tb21ldGltZXMgaXQmIzgyMTc7cyBoYW5keSB0byBi ZSBhYmxlIHRvIHRha2UgYWN0aW9uIG9ubHkgd2hlbiBjZXJ0YWluIGltYWdlcyBhcmUgcmVh Y2hlZDsgZm9yIGV4YW1wbGU6PC9wPgoKCTx1bD4KCQk8bGk+b25seSBkaXNwbGF5IHNvbWV0 aGluZyBvbiB0aGUgZmlyc3Qgb3IgbGFzdCBpbWFnZTwvbGk+CgkJPGxpPnN0YXJ0IGEgbmV3 IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiAmIzgyMTY7cm93JiM4MjE3OyBldmVy eSAzcmQgaW1hZ2U8L2xpPgoJCTxsaT5icmVhayB5b3VyIGdhbGxlcnkgdXAgd2l0aCBhbiBh ZHZlcnQ8L2xpPgoJPC91bD4KCgk8cD5UaGlzIGNhbiBiZSBkb25lIHdpdGggc21kX2lmIGJ1 dCBzaW5jZSBpdCBpcyBzdWNoIGEgY29tbW9uIGZlYXR1cmUsIHRoZSBwbHVnaW4gaGFzIHRo ZSBhYmlsaXR5IGJ1aWx0IGluLiBBbGwgcmVwbGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxl IHdpdGhpbiB5b3VyIGNvdW50Zm9ybXMgc28geW91IGNhbiBkbyBzb21lIHByZXR0eSBuZWF0 IHN0dWZmLiBJdCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4KCgk8dWw+CgkJ PGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDsxOmdhbF9oZWFkJnF1b3Q7PC9jb2RlPiA6IHRo aXMgd291bGQgb3V0cHV0IHRoZSBmb3JtIDxlbT5nYWxfaGVhZDwvZW0+IG9ubHkgd2hlbiB0 aGUgZmlyc3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3Jt PSZxdW90O3t0b3RhbGltYWdlc306Z2FsX2Zvb3QmcXVvdDs8L2NvZGU+IDogdGhpcyB3b3Vs ZCBvdXRwdXQgdGhlIGZvcm0gPGVtPmdhbF9mb290PC9lbT4gb25seSB3aGVuIHRoZSBsYXN0 IGltYWdlIGlzIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDsx OmdhbF9oZWFkLCB7dG90YWxpbWFnZXN9OmdhbF9mb290JnF1b3Q7PC9jb2RlPiA6IGRvIGJv dGggb2YgdGhlIGFib3ZlPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6Z2Fs X2hlYWQsIHt0b3RhbGltYWdlc306Z2FsX2Zvb3Q6c21kX2JlbG93JnF1b3Q7PC9jb2RlPiA6 IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBleGFtcGxlLCBidXQgcHV0IHRoZSBjb250ZW50 cyBiZWxvdyB0aGUgbGFzdCBpbWFnZSAoYnkgZGVmYXVsdCwgYWxsIG91dHB1dCBhcHBlYXJz IGFib3ZlIHRoZSBnaXZlbiBpbWFnZSk8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1 b3Q7NDo5OnNtZF9iZWxvdzpnYWxfYWQmcXVvdDs8L2NvZGU+IDogb3V0cHV0IDxlbT5nYWxf YWQ8L2VtPiBhZnRlciB0aGUgNHRoIGFuZCA5dGggaW1hZ2VzIG9ubHk8L2xpPgoJCTxsaT48 Y29kZT5jb3VudGZvcm09JnF1b3Q7c21kX2V2ZXJ5OjM6Z2FsX3JvdyZxdW90OzwvY29kZT4g OiBvdXRwdXQgPGVtPmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgM3JkIGltYWdlPC9saT4K CQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90O3NtZF9ldmVyeToyOiE4OmdhbF9yb3cmcXVv dDs8L2NvZGU+IDogb3V0cHV0IDxlbT5nYWxfcm93PC9lbT4gYmVmb3JlIGV2ZXJ5IGV2ZW4g aW1hZ2UgYnV0IG5vdCBvbiB0aGUgOHRoIGltYWdlPC9saT4KCQk8bGk+PGNvZGU+Y291bnRm b3JtPSZxdW90OzpnYWxfcm93JnF1b3Q7PC9jb2RlPiA6IHVzZSBhbiBlbXB0eSBmaXJzdCB2 YWx1ZSB0byBvdXRwdXQgPGVtPmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgaW1hZ2UuIFRo aXMgbWF5IHNlZW0gdXNlbGVzcywgYnV0IGl0IG1lYW5zIHlvdSBjYW4gdXNlIHR3bywgdGhy ZWUsIGZvdXImIzgyMzA7IGZvcm1zIChvciBhbnkgbnVtYmVyIG9mIGZvcm1zIGFuZCB0aGUg Y29udGFpbmVyKSBzaW11bHRhbmVvdXNseSB0byBpdGVyYXRlIG92ZXIgdGhlIHNhbWUgZ2Fs bGVyeS4gT3IgdXNlIHRoZSBzYW1lIGZvcm0gYXQgZGlmZmVyZW50IGZyZXF1ZW5jaWVzLiBH ZXQgY3JlYXRpdmUhPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzohNTpnYWxf cm93OnNtZF9iZWxvdyZxdW90OzwvY29kZT4gOiBhZ2FpbiwgbWlzc2luZyBvdXQgdGhlIGZp cnN0IHZhbHVlIHdpbGwgb3V0cHV0IGdhbF9yb3cgYWZ0ZXIgZXZlcnkgaW1hZ2UsIGJ1dCB0 aGlzIHRpbWUgc2tpcHBpbmcgdGhlIDV0aCBpbWFnZTwvbGk+Cgk8L3VsPgoKCTxwPlRoZSA8 Y29kZT4sPC9jb2RlPiBhbmQgPGNvZGU+OjwvY29kZT4gY2FuIGJlIG92ZXJyaWRkZW4gd2l0 aCB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGFuZCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBh dHRyaWJ1dGVzLCByZXNwZWN0aXZlbHkuPC9wPgoKCTxwPlRoZXJlIGFyZSBhIGZldyBydWxl cyB3aGVuIHVzaW5nIHRoZSBjb3VudGZvcm06PC9wPgoKCTx1bD4KCQk8bGk+bnVtYmVycyBt dXN0IGFwcGVhciBiZWZvcmUgdGhlIGZvcm0gbmFtZTwvbGk+CgkJPGxpPnRoZSBmb3JtIG5h bWUgaXMgdXN1YWxseSB0aGUgbGFzdCBpdGVtIGluIHRoZSBjb2xvbi1zZXBhcmF0ZWQgbGlz dCwgdGhvdWdoIHlvdSBjYW4gcHV0IDxjb2RlPnNtZF9hYm92ZTwvY29kZT4gb3IgPGNvZGU+ c21kX2JlbG93PC9jb2RlPiBsYXN0IGlmIHlvdSB3aXNoPC9saT4KCQk8bGk+PGNvZGU+c21k X2V2ZXJ5PC9jb2RlPiBvbmx5IGFmZmVjdHMgdGhlIHZhbHVlIHRoYXQgPGVtPmltbWVkaWF0 ZWx5PC9lbT4gZm9sbG93cyBpdCwgZS5nLiA8Y29kZT5jb3VudGZvcm09JnF1b3Q7c21kX2V2 ZXJ5OjU6NzoxMjpteV9hZCZxdW90OzwvY29kZT4gd2lsbCBvdXRwdXQgPGVtPm15X2FkPC9l bT4gYXQgZXZlcnkgNXRoIGltYWdlLCBhcyB3ZWxsIGFzIDxlbT5vbmx5PC9lbT4gb24gdGhl IDd0aCBhbmQgMTJ0aCBpbWFnZXMuIFRodXMgdGhlIHNlcXVlbmNlIHdvdWxkIGJlIDUsIDcs IDEwLCAxMiwgMTUsIDIwLCAyNSwgMzAmIzgyMzA7PC9saT4KCQk8bGk+aWYgdXNpbmcgPGNv ZGU+c21kX2V2ZXJ5PC9jb2RlPiwgaXQgPHN0cm9uZz5tdXN0PC9zdHJvbmc+IGFwcGVhciBh cyB0aGUgZmlyc3QgaXRlbS4gRm9yIGV4YW1wbGUgPGNvZGU+Y291bnRmb3JtPSZxdW90OzQ6 dGhlX2ZvdXJ0aCwgNjpzbWRfZXZlcnk6NTpteV9hZCZxdW90OzwvY29kZT4gaXMgaW52YWxp ZCwgYnV0IDxjb2RlPmNvdW50Zm9ybT0mcXVvdDs0OnRoZV9mb3VydGgsIHNtZF9ldmVyeTo1 OjY6bXlfYWQmcXVvdDs8L2NvZGU+IGlzIE9LPC9saT4KCTwvdWw+CgoJPHA+U2VlIDxhIGhy ZWY9IiNlZzEwIj5leGFtcGxlIDEwPC9hPiBmb3IgbW9yZS48L3A+CgoJPGgyIGlkPSJjb21i b3MiPkNvbWJvczwvaDI+CgoJPHA+SWYgdGhlIGJ1aWx0LWluIDxhIGhyZWY9IiNyZXBfZ2Fs bGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT4gYXJlbiYjODIxNzt0IGVub3VnaCBmb3IgeW91 ciBuZWVkcyBvciB5b3UgZmluZCB5b3Vyc2VsZiByZXBlYXRpbmcgdGhlIHNhbWUgY29tYmlu YXRpb24gYW5kIHdhbnQgdG8gc2F2ZSB5b3Vyc2VsZiBzb21lIHR5cGluZywgeW91IGNhbiBk ZWZpbmUgeW91ciBvd24uIFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZx dW90O25ld3RhZzE6ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9uLCAuLi4mcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBjYW4gYmUgYW55IGZp eGVkIHRleHQsIGFueSBleGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9yIGFueSAmIzgyMTY7 PyYjODIxNzsgYXJ0aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCByZWFsbHkgd2lsZCBo ZXJlLCBmb3IgZXhhbXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7aW1naW46Zm91 bmQgaW4gP3MgW3RhZ2dlZCB3aXRoID9rZXl3b3Jkcy4gUGhvdG8gYnkge2F1dGhvcn1dJnF1 b3Q7PC9jb2RlPjwvcD4KCgk8cD5PbmNlIGRlZmluZWQsIDxjb2RlPntpbWdpbn08L2NvZGU+ IGlzIGF2YWlsYWJsZSB0byB5b3VyIGdhbGxlcnkgPGNvZGU+Zm9ybTwvY29kZT4gYW5kIG1p Z2h0IGJlIHJlcGxhY2VkIHdpdGggJiM4MjIwO2ZvdW5kIGluIHpvbyBbdGFnZ2VkIHdpdGgg emVicmEsIGFmcmljYSwgc3RyaXBlcy4gUGhvdG8gYnkgQmxva2VdJiM4MjIxOy4gJHByZXRl eHQgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHRob3NlIGdlZWtzIHdobyBrbm93IHdoYXQmIzgy MTc7cyBpbiBpdCAodGVtcG9yYXJpbHkgdXNlIDxjb2RlPmRlYnVnPSZxdW90OzQmcXVvdDs8 L2NvZGU+IHRvIHZpZXcgYWxsIGF2YWlsYWJsZSBhcnRpY2xlIHZhcmlhYmxlcykuPC9wPgoK CTxwPk9uZSB0aGluZyB0byB3YXRjaCBvdXQgZm9yIGlzIHRoYXQgdGhlIHNwYWNlIGNoYXJh Y3RlciBpc24mIzgyMTc7dCBuZWNlc3NhcmlseSBhIGRlbGltaXRlciBmb3IgPGNvZGU+Pzwv Y29kZT4gdmFyaWFibGVzIChiZWNhdXNlIGN1c3RvbSBmaWVsZHMgY2FuIGhhdmUgc3BhY2Vz IGluIHRoZW0pLiBTbyA8Y29kZT5jb21ibz0mcXVvdDtkb2Vzbm90d29yazo/cyBpbiA/Y2F0 ZWdvcnkxJnF1b3Q7PC9jb2RlPiB3aWxsIGxvb2sgZm9yIGEgdmFyaWFibGUgbGFiZWxsZWQg JiM4MjIwO3MgaW4mIzgyMjE7IGFuZCBvbmUgY2FsbGVkICYjODIyMDtjYXRlZ29yeTEmIzgy MjE7LiBPbmx5IG9uZSBvZiB0aG9zZSBleGlzdHMhIENsZXZlciB1c2Ugb2YgcGFyZW50aGVz ZXMgb3Igb3RoZXIgcHVuY3R1YXRpb24gY2FuIHdvcmsgcm91bmQgdGhpcy4gT3IgdXNlIDxj b2RlPnN0cmljdGZpZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byB0dXJuIG9mZiB0aGUg dXNlIG9mIHNwYWNlcyBpbiBjdXN0b20gZmllbGQgbmFtZXMuPC9wPgoKCTxoMiBpZD0iY29s bGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2gyPgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8 ZW0+cmVhbGx5PC9lbT4gZnVua3kgeW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5k IG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRpb24gbW9kZSYjODIyMTsuIFRoaXMgbWVhbnMg eW91ciBjaG9zZW4gZm9ybSBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBleGVjdXRlZCBmb3Ig ZXZlcnkgaW1hZ2U7IGl0IGlzIG9ubHkgdXNlZCBvbmNlIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0 aGUgbGlzdCwgYWZ0ZXIgYWxsIHRoZSBpbWFnZXMgaGF2ZSBiZWVuIGludGVybmFsbHkgJiM4 MjIwO2NvbGxlY3RlZCYjODIyMTsuIEluIGVmZmVjdCwgdGhlIHBsdWdpbiBidWlsZHMgdXAg YSBnaWFudCBhcnJheSBvZiBhbGwgbWF0Y2hpbmcgaW1hZ2VzIHJlYWR5IGZvciB5b3UgdG8g b3V0cHV0IHRoZW0gYWxsIGluIG9uZSBnby4gVGhpcyBpcyB2ZXJ5IGhhbmR5IGZvciBkb2lu ZyBzbGlkZXNob3dzIGFuZCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4KCgk8 cD48Y29kZT5jb2xsYXRlPSZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPnN3aXRjaGVz IGNvbGxhdGlvbiBtb2RlIG9uLiBJZiB0aGUgcGx1Z2luIG1hdGNoZWQgNCBpbWFnZXMgYW5k IHlvdSB3ZXJlIHRvIHVzZSB0aGUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntuYW1lfTwvY29k ZT4gaW4geW91ciBmb3JtIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiB7bmFtZX0KPC9jb2RlPjwv cHJlPgoKCTxwPnlvdSBtaWdodCBnZXQgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiBoZXJvbi5qcGcscGVu Z3Vpbi5qcGcsZW11LmpwZyxwdWZmaW4uanBnCjwvY29kZT48L3ByZT4KCgk8cD5Tb21ldGlt ZXMgaXQmIzgyMTc7cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBwdXQgcXVvdGVzIGFyb3VuZCBl YWNoIGl0ZW0gc28geW91IGNhbiB0ZWxsIGNvbGxhdGUgbW9kZSB0byBkbyB0aGF0IGluc3Rl YWQ6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9JnF1b3Q7PC9j b2RlPjwvcD4KCgk8cD5Zb3Ugd291bGQgdGhlbiBnZXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczogJnF1b3Q7aGVy b24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcmcXVv dDssJnF1b3Q7cHVmZmluLmpwZyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGRlbGlt aXRlciAoYSBjb21tYSBpbiB0aGlzIGNhc2UpIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhl IDxjb2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuIFlvdSBtYXkgdXNlIDxjb2RlPnNnbHF1 b3RlPC9jb2RlPiB0byB3cmFwIHNpbmdsZSBxdW90ZXMgcm91bmQgdGhlIGl0ZW1zLCBvciAm IzgyMjA7ZGJscXVvdGUmIzgyMjE7IGFzIGEgc3lub255bSBmb3IgJiM4MjIwO3F1b3RlJiM4 MjIxOyBpZiB5b3UgcHJlZmVyLiBZb3UgY2FuIHF1b3RlIG1vcmUgdGhhbiBvbmUgdGhpbmcg YXQgb25jZSBieSBzcGVjaWZ5aW5nIHRoZSBpdGVtcyBhcyBhIGRlbGltaXRlZCBsaXN0Ojwv cD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1lfTp7YWx0fTp7aW1naW59 JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5ZZXMsIHlvdSBjYW4gdXNlIGNvbWJvcyEgVGhlIGRl bGltaXRlciB1c2VkIGJldHdlZW4gaXRlbXMgY2FuIGJlIG92ZXJyaWRlbiB3aXRoIHRoZSA8 Y29kZT5jb2xsYXRlZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPHA+VGhlIHNlY29u ZCBzcGVjaWFsIGZlYXR1cmUgb2YgY29sbGF0aW9uIG1vZGUgaXMgdGhhdCB5b3UgZG8gbm90 IGhhdmUgdG8gYWx3YXlzIG91dHB1dCB0aGUgZW50aXJlIGxpc3QuIFlvdSBjYW4gZ3JhYiBp bmRpdmlkdWFsIGVudGl0aWVzIGZyb20gd2l0aGluIHRoZSBpbnRlcm5hbCBhcnJheSBieSB1 c2luZyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIHRodXM6PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e25hbWV9IG1pZ2h0IG91dHB1dCAmcXVv dDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11Lmpw ZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1b3Q7IChhcyBiZWZvcmUpCntuYW1lIzF9IHdv dWxkIG9ubHkgb3V0cHV0IGhlcm9uLmpwZwp7bmFtZSMzfSB3b3VsZCBvbmx5IG91dHB1dCBl bXUuanBnCjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgd2hlbiBwdWxsaW5nIG91dCBp bmRpdmlkdWFsIGVudHJpZXMgdGhleSA8c3Ryb25nPmRvIG5vdDwvc3Ryb25nPiBnZXQgcXVv dGVzIGFkZGVkIHRvIHRoZW0sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UgdXNlZCA8Y29k ZT5xdW90ZTwvY29kZT4gb3Igbm90LiBUaGlzIGlzIGJlY2F1c2UgaXQgaXMgYSBzaW5nbGUg aXRlbSBzbyB5b3UgY2FuIGVhc2lseSBwdXQgdGhlIHF1b3RlcyBpbiB0aGUgZm9ybSBpdHNl bGYgKHZpejogPGNvZGU+JnF1b3Q7e25hbWUjMn0mcXVvdDs8L2NvZGU+KTwvcD4KCgk8cD5N ZXNzaW5nIGFyb3VuZCB3aXRoIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgaXRlbXMgYW5kIGxp c3RzIGNhbiB5aWVsZCBzb21lIHZlcnkgaW50ZXJlc3RpbmcgcmVzdWx0cyBhbmQgYWxsb3dz IHNvbWUgY29tcGxldGVseSB3YWNreSBnYWxsZXJpZXMgdG8gYmUgZ2VuZXJhdGVkLiBUcnkg Y29tYmluaW5nIHNtZF9nYWxsZXJ5IHRhZ3Mgd2l0aCA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZl cmVudCZndDs8L2NvZGU+IGZvciBhIHJlYWwgbWluZCBzY3JhbWJsZSA6LSk8L3A+CgoJPGgy IGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gyPgoKCTxwPlRoZSBleGFtcGxlcyBhbGwgdXNl IHRoZSBjbGFzc2ljIHpvbyB3ZWJzaXRlLiBMZXQmIzgyMTc7cyBnZXQgc29tZSBwaWN0dXJl cyBvdXQgb2YgdGhlIGRhdGFiYXNlJiM4MjMwOzwvcD4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBs ZSAxOiBzaW1wbGUgLyBsaWdodGJveGVkIGdhbGxlcnk8L2gzPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDthbmltYWxzJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OyBmb3JtPSZxdW90 O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgb3V0 IGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBhbmltYWxzIGNhdGVnb3J5LCBpbmNsdWRpbmcgYWxs IHN1Yi1jYXRlZ29yaWVzLCBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlIGZvcm0gY2FsbGVkICYj ODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3IgcHJvY2Vzc2luZy4gVGhlIGZvcm0gY291bGQgYmU6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBj bGFzcz0mcXVvdDthbmltYWdlJnF1b3Q7IHNyYz0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1 b3Q7e2FsdH0mcXVvdDsgLyZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDthY2FwdGlvbiZxdW90 OyZndDt7dGl0bGV9Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1lYW5z LCBmb3IgZXZlcnkgbWF0Y2hlZCBpbWFnZSwgc3Vic3RpdHV0ZSBpdHMgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4sIGFsdCBhbmQgdGl0bGUgdGFncyBpbnRvIHRoZSByZWxldmFu dCBwbGFjZXMuIFRodXMgeW91IGdldCBhIHNlcmllcyBvZiBpbWFnZXMgb24gdGhlIHBhZ2Us IHdoaWNoIHlvdSBjYW4gc3R5bGUgYWNjb3JkaW5nbHkuPC9wPgoKCTxwPkZvciBhIG1vcmUg ZmFuY3kgb3V0cHV0IHVzaW5nLCBzYXksIHNsaW1ib3gsIHlvdSBjb3VsZCBsb2FkIHRoZSBy ZWxldmFudCBsaWJyYXJpZXMgYW5kIHN0eWxlcyBpbiB0aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7 PC9jb2RlPiBvZiB5b3VyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90 OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owom bHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsv anMvc2xpbWJveC5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O2xpbmsgcmVsPSZx dW90O3N0eWxlc2hlZXQmcXVvdDsgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyBocmVmPSZx dW90Oy9jc3Mvc2xpbWJveC5jc3MmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRo ZW4geW91ciAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGln aHRib3gte2NhdGVnb3J5fSZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7CiAgICAgdGl0 bGU9JnF1b3Q7QSBwaWN0dXJlIG9mIHtjYXB0aW9ufSZxdW90OyZndDsKICZsdDt0eHA6dGh1 bWJuYWlsIGlkPSZxdW90O3tpZH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+Vm9pbGEhIFVzaW5nIHRoZSBzYW1lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgaGF2 ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIGdhbGxlcnkgcmVuZGVycyBmcm9tIGEgc2ltcGxlIGxp c3QgdG8gYSBmdWxsLWZlYXR1cmVkIHNsaW1ib3guIFdpdGggdmlydHVhbGx5IHRoZSBzYW1l IGZvcm0geW91IGNhbiBzd2l0Y2ggdGhlIG91dHB1dCB0byB0aGlja2JveCwgbGlnaHRib3gs IGxpdGVib3gsIG1vb25ib3ggb3Igd2hhdGV2ZXIteW91LWxpa2UtYm94IGRlcGVuZGluZyBv biB3aGljaCBsaWJyYXJpZXMgeW91IGxvYWQuIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZv ciB5b3VyIGZhdm91cml0ZSBlZmZlY3QgYW5kIHBsdWcgaXQgaW50byBzbWRfZ2FsbGVyeS48 L3A+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUgMjogbGF1bmNoIGZyb20gb25lIGltYWdlPC9o Mz4KCgk8cD5BIGNvbW1vbiByZXF1ZXN0IGlzIHRvIGJlIGFibGUgdG8gJiM4MjIwO2xhdW5j aCYjODIyMTsgYSBzbGltYm94IGdhbGxlcnkgZnJvbSBhIHNpbmdsZSBpbWFnZSBvciB0ZXh0 IGxpbmsuIFVzaW5nIGEgc2luZ2xlIGltYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7 YW5pbWFscyZxdW90OwogICAgIHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09 JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsgLyZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPlRoZSBmb3JtIHdpbGwgdXNlIHRoZSBzcGVjaWFsIDxjb2RlPntv YmplY3R9PC9jb2RlPiByZXBsYWNlbWVudCB0YWcgc28gaXQgb25seSBkaXNwbGF5cyB0aGUg dGh1bWJuYWlsIGlmIHRoZSB2YWx1ZSBvZiB0aHVtYmxpbWl0IGhhcyA8c3Ryb25nPm5vdDwv c3Ryb25nPiBiZWVuIHJlYWNoZWQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O2EgcmVsPSZxdW90O2xpZ2h0Ym94LXNtZCZxdW90OyBocmVmPSZx dW90O3t1cmx9JnF1b3Q7CiAgICAgdGl0bGU9JnF1b3Q7QSBwaWN0dXJlIG9mIHt0aXRsZX0m cXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoYW5n ZSB0aGUgc3RhcnQgaW1hZ2UgYnkgc3BlY2lmeWluZyA8Y29kZT50aHVtYm9mZnNldDwvY29k ZT4gJiM4MjEyOyBub3RlIHRoaXMgd2lsbCBhbHNvIHN0YXJ0IHRoZSBsaWdodGJveCBlZmZl Y3QgZnJvbSB0aGUgaW1hZ2UgeW91IGNob29zZS4gSWYgeW91IHdhbnQgdG8gc3RhcnQgb24g YSBzcGVjaWZpYyBpbWFnZSBpbiBwb3NpdGlvbiAxLCB1c2UgdGhlIDxjb2RlPmlkPC9jb2Rl PiBhdHRyaWJ1dGUgdG8gYnJpbmcgaXQgdG8gdGhlIHRvcCBvZiB0aGUgbGlzdCwgb3IgY2hh bmdlIHRoZSBzb3J0IG9yZGVyLjwvcD4KCgk8cD5JZiB5b3Ugd2FudGVkIHRvIGxhdW5jaCB0 aGUgZ2FsbGVyeSBmcm9tIGEgdGV4dCBsaW5rLCBhZGQgc29tZXRoaW5nIGxpa2UgPGNvZGU+ dGV4dD0mcXVvdDtDbGljayB0byBzdGFydCBsaWdodGJveCZxdW90OzwvY29kZT4uPC9wPgoK CTxoMyBpZD0iZWczIj5FeGFtcGxlIDM6IHBvcHVwIGdhbGxlcnk8L2gzPgoKCTxwPlRvIGFj aGlldmUgYW4gZWZmZWN0IHNpbWlsYXIgdG8gcnNzX3RodW1icG9wLCBhZGQgYW4gaW1hZ2Ug YW5kIGNhcHRpb24gcGxhY2Vob2xkZXIgb3V0c2lkZSB0aGUgY2FsbCB0byBzbWRfZ2FsbGVy eSwgdGhlbiBpbmNsdWRlIHlvdXIgc21kX2dhbGxlcnkgdGFnIGFzIHVzdWFsLiBUaGlzIHRp bWUgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBhbGwgdGhlIHBpY3R1cmVzIGZyb20gdGhl IGNhdGVnb3JpZXMgdXAgdG8gdHdvIGxldmVscyBiZWxvdyBib3RoICYjODIyMDthbmltYWxz JiM4MjIxOywgcGx1cyB3aGljaGV2ZXIgY2F0ZWdvcmllcyBhcmUgbGlzdGVkIGluIDxjb2Rl Pm15X2N1c3RvbV9maWVsZDwvY29kZT4gYW5kIHRoZSBpbWFnZXMgd2l0aCBJRHMgMjUsIDM4 LCAzOSwgNDAgYW5kIDQyOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFn ZXMvZW1wdHkuanBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9u JnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBzdWJsZXZlbD0m cXVvdDsyJnF1b3Q7CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgP215X2N1c3RvbV9m aWVsZCZxdW90OwogICAgIGlkPSZxdW90OzI1LCA0MiwgMzgtNDAmcXVvdDsgZm9ybT0mcXVv dDtnYWxsZXJ5JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZ2FsbGVyeSBm b3JtIGxvb2tzIHNjYXJ5IGJ1dCBpcyBvbmx5IGEgdGh1bWJuYWlsIGltYWdlIHN1cnJvdW5k ZWQgYnkgYSBzaW1wbGUgYW5jaG9yIHRhZyB3aXRoIHR3byBhY3Rpb25zIGFzc2lnbmVkIHRv IGl0OiBhIG1vdXNlb3ZlciB0byBjb3B5IHRoZSBwaWN0dXJlIGFuZCBjYXB0aW9uIGludG8g dGhlIHBsYWNlaG9sZGVyOyBhbmQgYSBtb3VzZW91dCB0byByZW1vdmUgdGhlbTo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90 O3t1cmx9JnF1b3Q7IHRpdGxlPSZxdW90O3t0aXRsZX0mcXVvdDsKICAgICBvbm1vdXNlb3Zl cj0mcXVvdDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNy YyA9IHRoaXMuaHJlZjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxj YXB0aW9uJiMzOTspLmlubmVySFRNTCA9IHRoaXMudGl0bGU7IHJldHVybiBmYWxzZTsmcXVv dDsKICAgICBvbm1vdXNlb3V0PSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7 ZnVsbHNpemUmIzM5Oykuc3JjID0gJiMzOTsvaW1hZ2VzLzE3LmpwZyYjMzk7OwogICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1M ID0gJiMzOTsmIzM5OzsgcmV0dXJuIGZhbHNlOyZxdW90OyZndDsKICAmbHQ7aW1nIHNyYz0m cXVvdDt7dGh1bWJ1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0OwombHQ7 L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoZXJlIGFyZSBtdWNoIG5lYXRlciB3 YXlzIG9mIGRvaW5nIHRoaXMgKGUuZy4gd2l0aCBqUXVlcnkpIGFuZCBpdCYjODIxNztzIG5v dCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBzaXRlLCBidXQgaXQg Z2l2ZXMgYSBmbGF2b3VyIG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoKCTxoMyBpZD0iZWc0 Ij5FeGFtcGxlIDQ6IHNsaWRlc2hvdzwvaDM+CgoJPHA+VGhpcyBvbmUgdXNlcyBjb2xsYXRl IG1vZGUgYnV0IGlzIG5vdCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuIElu IHlvdXIgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0 ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZn dDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlw dCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZndDsmbHQ7L3Njcmlw dCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogIGNhdGVnb3J5 PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogIGNv bWJvPSZxdW90O2ltZ2xpc3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0ZT0mcXVvdDtxdW90 ZTp7aW1nbGlzdH06e2FsdH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQg cHVsbHMgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNoIGNhdGVnb3JpZXMu IEFsdGhvdWdoIHRlY2huaWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJvIGhhcyBiZWVuIGRl ZmluZWQgdG8gc2hvdyBob3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29tYm8gaXMgY2FsbGVk IDxjb2RlPmltZ2xpc3Q8L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRoZSBpbWFnZSYjODIx NztzIElEIG51bWJlciBwbHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0aGlzIGluIHRoZSBj b2xsYXRlIGF0dHJpYnV0ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91YmxlIHF1b3RlcyByb3Vu ZCBldmVyeSBpdGVtIGluICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQgJiM4MjE2O2FsdCYj ODIxNzsuIFRoZW4gd2UgY2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgbmVjZXNzYXJ5 IGphdmFzY3JpcHQgaW4gdGhlIDxjb2RlPmdhbGxlcnk8L2NvZGU+IGZvcm0gdG8gZ2VuZXJh dGUgdGhlIHNsaWRlc2hvdzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3NsaWRlc2hvdyZxdW90OyBpZD0mcXVvdDtz bGlkZXNob3cxJnF1b3Q7Jmd0OwogJmx0O2ltZyBzcmM9JnF1b3Q7Jmx0O3R4cDpzaXRlX3Vy bCAvJmd0O2ltYWdlcy97aWQjMX0uanBnJnF1b3Q7CiAgICAgYWx0PSZxdW90O3thbHQjMX0m cXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRoIzF9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0 IzF9JnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsKbXlT aG93MSA9IG5ldyBTbGlkZXNob3coJnF1b3Q7c2xpZGVzaG93MSZxdW90OywKICB7IGh1OiAm cXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzLyZxdW90OywKICAgIGltYWdlczog W3tpbWdsaXN0fV0sCiAgICBjYXB0aW9uczogW3thbHR9XSwKICAgIGNsYXNzZXM6IFsmcXVv dDtwcmV2JnF1b3Q7LCZxdW90O25leHQmcXVvdDssJnF1b3Q7YWN0aXZlJnF1b3Q7XSwKICAg IHR5cGU6ICZxdW90O2ZhZGUmcXVvdDsKICB9KTsKJmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5Ob3RlIHRoYXQgdGhlIGluaXRpYWwgcG9ydGlvbiAoaW4gdGhlIGRpdiBh bmQgaW1nIHRhZ3MpIHVzZXMgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiBiZWNhdXNl IHdlIG9ubHkgd2FudCB0byBkaXNwbGF5IG9uZSBpbWFnZSB0byAmIzgyMjA7c3RhcnQmIzgy MjE7IHRoZSBzbGlkZXNob3cuIEluIHRoaXMgY2FzZSB3ZSYjODIxNztyZSB1c2luZyB0aGUg Zmlyc3QgaW1hZ2UgaW4gdGhlIGxpc3QsIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUgIzEgZm9y ICM0MiBpZiB5b3Ugd2FudGVkIHRvIHNob3cgdGhlIGZvcnR5LXNlY29uZCBpbWFnZSBpbnN0 ZWFkISBUaGUgcGFydCBpbiB0aGUgc2NyaXB0IHRhZyB1c2VzIHRoZSBmdWxsLCBxdW90ZWQg bGlzdHMgYmVjYXVzZSB0aGF0JiM4MjE3O3MgdGhlIGZvcm1hdCB0aGUgamF2YXNjcmlwdCBy ZXF1aXJlcy48L3A+CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTogcGFnaW5hdGlvbjwvaDM+ CgoJPHA+VG8gYWRkIHBhZ2luZyB0byBhIGdhbGxlcnkgeW91IHVzZSB0aGUgPGNvZGU+bGlt aXQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBzaG93IGEgbnVtYmVyIG9mIHRodW1icyBwZXIgcGFn ZS4gRm9yIGEgcGFnZWQgdGh1bWJwb3AgZ2FsbGVyeSB0aGF0IHNob3dzIGZpdmUgdGh1bWJz IHBlciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1w dHkuanBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7 Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDth bmltYWxzJnF1b3Q7CiAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHBhZ2Vmb3JtPSZxdW90 O2dhbGxlcnlfbmF2JnF1b3Q7CiAgbGltaXQ9JnF1b3Q7NSZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+VGhlICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGlzIGlkZW50aWNh bCB0byB0aGUgb25lIGluIDxhIGhyZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4sIHdoaWxlIHlv dXIgZ2FsbGVyeV9uYXYgZm9ybSBtaWdodCBsb29rIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3Rv dGFsJnF1b3Q7Jmd0OyMgb2YgcGljczoge3RvdGFsaW1hZ2VzfSZsdDsvZGl2Jmd0OwogICAg IHtuYXZmaXJzdH0ge25hdnByZXZ9CiAgICAge25hdmVhcmxpZXJ9IHtuYXZ0aGlzfSB7bmF2 bGF0ZXJ9CiAgICAge25hdm5leHR9IHtuYXZsYXN0fQo8L2NvZGU+PC9wcmU+CgoJPHA+VGhh dCBtaWdodCByZW5kZXIgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhpcyBiZWxvdyB0aGUgdGh1 bWJzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiMgb2Yg cGljczogMzgKICAgICBGaXJzdCAmbHQ7IDEgMiAzIDQgNSA2IDcgOCAmZ3Q7IExhc3QKPC9j b2RlPjwvcHJlPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY6IG9uY2hhbmdlPC9oMz4KCgk8 cD5JZiB5b3Ugd2FudCB0byBzaW11bGF0ZSBtdWx0aXBsZSBnYWxsZXJpZXMgZnJvbSBvbmUg c21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gdXNlIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiB0byAm IzgyMjA7d2F0Y2gmIzgyMjE7IGZvciB3aGVuIGNlcnRhaW4gYXR0cmlidXRlcyBvZiBpbWFn ZXMgY2hhbmdlIGFuZCBpbnNlcnQgc3BlY2lhbCB0YWdzIDxlbT5vbmx5IHdoZW4gc29tZXRo aW5nIGNoYW5nZXM8L2VtPi4gSW4gdGhpcyByZWdhcmQgaXQgYWN0cyBsaWtlIGEgc291cGVk LXVwIHZlcnNpb24gb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7cyBi dWlsdC1pbiA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IHRhZy48L3A+ CgoJPHA+WW91IGNhbiB3YXRjaCB0aGUgdXN1YWwgdGhpbmdzIGxpa2UgPGNvZGU+Y2F0ZWdv cnk8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxj b2RlPmhlaWdodDwvY29kZT4sIDxjb2RlPmV4dDwvY29kZT5lbnNpb24gYW5kIHNvIG9uOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2dhbGxlcnkKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZx dW90O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZx dW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+U2luY2UgdGhlIHBsdWdpbiBub3JtYWxseSBzb3J0cyBieSBjYXRlZ29y eSwgdGhpcyB3aWxsIGhhdmUgdGhlIGVmZmVjdCBvZiBhZGRpbmcgb25lIHJlcGxhY2VtZW50 IHRhZyA8Y29kZT57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9PC9jb2RlPiBhdCB0aGUgdmVy eSBiZWdpbm5pbmcgb2YgdGhlIHRodW1iIGxpc3QgYW5kIGFsc28gd2hlbiB0aGUgY2F0ZWdv cnkgc3dpdGNoZXMgZnJvbSAmIzgyMTY7YmlyZHMmIzgyMTc7IHRvICYjODIxNjtmaXNoJiM4 MjE3Oy4gVGh1cyB5b3VyIGdhbGxlcnkgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9 CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRl Z29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxw PlRoYXQgd291bGQgbWFrZSB0d28gbGlnaHRib3hhYmxlIHNldHMgb2YgdGh1bWJuYWlscyB3 aXRoIGEgaGVhZGluZyAzIGFib3ZlIGVhY2ggZ3JvdXAgY29udGFpbmluZyB0aGUgY2F0ZWdv cnkgdGl0bGUuPC9wPgoKCTxwPk5vdGUgdGhhdCBpZiB5b3UgYWRkIDxjb2RlPnRodW1ibGlt aXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gdGhlIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2Fu IHNob3cganVzdCBvbmUgdGh1bWJuYWlsIGluIGVhY2ggZ3JvdXAsIHdpdGggaGVhZGluZ3Mg YWJvdmUgZWFjaCB0aHVtYi4gVmlzaXRvcnMgY2xpY2tpbmcgdGhlIHRodW1iIHdpbGwgbGF1 bmNoIHRoZSBsaWdodGJveCBhbmQgYmUgYWJsZSB0byBicm93c2UgdGhlIHJlbGV2YW50IGNh dGVnb3J5LjwvcD4KCgk8cD5BbiBleHRyYSBwYWlyIG9mIHJlcGxhY2VtZW50IHRhZ3MgYXJl IGF2YWlsYWJsZSBpZiB5b3Ugd2lzaCB0byB3cmFwIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMg dG8gZ3JvdXAgdGhlbS4gVXNlIHRoZSA8Y29kZT5ncm91cHRhZzwvY29kZT4gYW5kIDxjb2Rl Pmdyb3VwY2xhc3M8L2NvZGU+IGF0dHJpYnV0ZXMgdG8gc2V0IGl0IHVwLCB0aGVuIHR3byBu ZXcgcmVwbGFjZW1lbnQgdGFncyBjYWxsZWQgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29kZT4g YW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFy ZSBjb25kaXRpb25hbCBhbmQgYXJlIG9ubHkgcG9wdWxhdGVkIHdoZW4gdGhlIGF0dHJpYnV0 ZXMgeW91IGFyZSB3YXRjaGluZy9zb3J0aW5nIGJ5IGNoYW5nZS4gVXNlIGl0IGxpa2UgdGhp czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9nYWxsZXJ5IGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7CiAgICAgY2F0ZWdv cnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAg ICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0bGUmcXVvdDsKICAgICBvbmNoYW5nZXdy YXB0YWc9JnF1b3Q7aDMmcXVvdDsKICAgICBncm91cHRhZz0mcXVvdDtkaXYmcXVvdDsgZ3Jv dXBjbGFzcz0mcXVvdDtib3gmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e29uY2hhbmdlOmNhdGVnb3J5X3RpdGxl fQp7Z3JvdXB0YWdzdGFydH0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1 b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owp7 Z3JvdXB0YWdlbmR9CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgeW91IGNhbiBtb3Zl IHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiB0byBzdXJyb3VuZCB0aGUgPGNvZGU+ b25jaGFuZ2U8L2NvZGU+ZCB0aXRsZSBpZiB5b3Ugd2lzaC48L3A+CgoJPGgzIGlkPSJlZzci PkV4YW1wbGUgNzogc21kX2V2ZXJ5PC9oMz4KCgk8cD5Zb3UgY2FuIGFsc28gdHJpZ2dlciBh biBvbmNoYW5nZSBldmVudCBldmVyeSBudGggaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDtmcm9udHBhZ2UmcXVvdDsKICAgICBsaW1pdD0mcXVvdDs5JnF1b3Q7IHNvcnQ9JnF1 b3Q7cmFuZG9tJnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7c21kX2V2ZXJ5OjMmcXVvdDsK ICAgICBncm91cHRhZz0mcXVvdDt1bCZxdW90OyBncm91cGNsYXNzPSZxdW90O3NsaWRlc2hv dyZxdW90OyZndDsKe2dyb3VwdGFnc3RhcnR9CiAgICZsdDtsaSZndDsKICAgICAgJmx0O2Eg aHJlZj0mcXVvdDsmbHQ7dHhwOnBlcm1saW5rIGlkPSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7 JnF1b3Q7Jmd0OwogICAgICAgICAmbHQ7aW1nIHNyYz0mcXVvdDt7dGh1bWJ1cmx9JnF1b3Q7 IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsKICAgICAgICAgJmx0O3NwYW4mZ3Q7e3RpdGxlfSZs dDsvc3BhbiZndDsKICAgICAgJmx0Oy9hJmd0OwogICAmbHQ7L2xpJmd0Owp7Z3JvdXB0YWdl bmR9CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJl ZzgiPkV4YW1wbGUgODogdW5jYXRlZ29yaXplZCBpbWFnZXM8L2gzPgoKCTxwPlNvbWV0aW1l cyB5b3UgbWlnaHQgd2lzaCB0byBleHRyYWN0IGltYWdlcyB0aGF0IGRvIG5vdCBoYXZlIGEg Y2F0ZWdvcnkgYXNzaWduZWQuIFlvdSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCB2YWx1ZSA8 Y29kZT5TTURfRU1QVFk8L2NvZGU+IGZvciB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1 b3Q7U01EX0VNUFRZLCBzaG9lcyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+WW91 IGNhbiBhbHNvIG5lZ2F0ZSB0aGUgbG9naWMgc28geW91IGNhbiBleHRyYWN0IGFsbCBpbWFn ZXMgdGhhdCBoYXZlIHNvbWUgKGFueSkgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlbTo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5IGNhdGVnb3J5PSZxdW90OyFTTURfRU1QVFkmcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKCTxoMyBpZD0iZWc5Ij5FeGFtcGxlIDk6IHtvYmplY3R9IGFuZCBvYmplY3Rmb3Jt PC9oMz4KCgk8cD5UaGUgZGVmYXVsdCA8Y29kZT57b2JqZWN0fTwvY29kZT4gb3V0cHV0cyBh IHNpbXBsZSBoeXBlcmxpbmtlZCB0aHVtYm5haWwuIElmIHlvdSB3YW50IHNvbWV0aGluZyBh IGJpdCBtb3JlIGV4b3RpYywgbGlrZSBsYXVuY2hpbmcgYSBzaGFkb3dib3ggZWZmZWN0IGZy b20gYSBzaW5nbGUgdGh1bWJuYWlsIHRoYXQgYWxzbyBoYXMgdGhlIGNhcHRpb24gYmVuZWF0 aCBpdCwgeW91IG5lZWQgdG8gY3VzdG9taXNlIHRoZSA8Y29kZT57b2JqZWN0fTwvY29kZT4g dmlhIHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPiBhdHRyaWJ1dGUuIFB1dCBhIGxpc3Qg b2YgaW1hZ2UgSURzIGluIHlvdXIgYXJ0aWNsZSBpbWFnZSBmaWVsZCBhbmQgdGhlbjo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xl X2ltYWdlJnF1b3Q7IHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7CiAgICAgY2xhc3M9JnF1b3Q7 dGh1bWJzJnF1b3Q7IG9iamVjdGZvcm09JnF1b3Q7bXlfb2JqJnF1b3Q7CiAgICAgY29tYm89 JnF1b3Q7YXJ0aWQ6P3RoaXNpZCZxdW90OyZndDsKICAmbHQ7YSByZWw9JnF1b3Q7c2hhZG93 Ym94W3thcnRpZH1dOwogICAgIG9wdGlvbnM9e2NvdW50ZXJUeXBlOiYjMzk7c2tpcCYjMzk7 LAogICAgIGNvbnRpbnVvdXM6dHJ1ZSwKICAgICBhbmltYXRlOmZhbHNlLAogICAgIGFuaW1T ZXF1ZW5jZTomIzM5O3N5bmMmIzM5O30mcXVvdDsKICAgICBocmVmPSZxdW90O3t1cmx9JnF1 b3Q7CiAgICAgdGl0bGU9JnF1b3Q7e2FsdH0mcXVvdDsmZ3Q7e29iamVjdH0mbHQ7L2EmZ3Q7 CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QW5kIGluIDxj b2RlPm15X29iajwvY29kZT4sIHlvdSBjb3VsZCBwdXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lk fSZxdW90OyAvJmd0OyZsdDticiAvJmd0O3t0aXRsZX0KPC9jb2RlPjwvcHJlPgoKCTxwPk5v dGljZSBob3cgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgc3RpbGwgd29yayBpbiB0aGUgPGNvZGU+ b2JqZWN0Zm9ybTwvY29kZT4/IFRoaXMgYWxsb3dzIHlvdSB0byBidWlsZCB1cCBhIGNvbXBs ZXRlIGxheW91dCBmb3IgdGhlIGxhdW5jaGFibGUgdGh1bWJuYWlsIGFuZCBoYXZlIGl0IG9u bHkgcmVuZGVyZWQgb25jZSBvbiB0aGUgcGFnZS4gVGhlIHJlc3Qgb2YgdGhlIGNvbnRhaW5l ciBpbiB0aGlzIGV4YW1wbGUgcmVuZGVycyBhbGwgdGhlICYjODIyMDtoaWRkZW4mIzgyMjE7 IGltYWdlcyBpbiB0aGUgc2hhZG93Ym94IGdhbGxlcnkuPC9wPgoKCTxoMyBpZD0iZWcxMCI+ RXhhbXBsZSAxMDogPGNvZGU+Y291bnRmb3JtPC9jb2RlPjwvaDM+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5 PSZxdW90O2FuaW1hbHMmcXVvdDsKICAgICBjb3VudGZvcm09JnF1b3Q7MTpnYWxfYTpzbWRf YWJvdmUsCiAgICAgICB7dG90YWxpbWFnZXN9OmdhbF9jLAogICAgICAgc21kX2V2ZXJ5OjM6 IXt0b3RhbGltYWdlc306Z2FsX2ImcXVvdDsKICAgICBjb3VudHBvcz0mcXVvdDtiZWxvdyZx dW90OyZndDsKJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0Owom bHQ7L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCA8 Y29kZT5jb3VudHBvczwvY29kZT4gaXMgc2V0IHRvIDxjb2RlPmJlbG93PC9jb2RlPiBpbiB0 aGlzIGV4YW1wbGUgc28gYWxsIG91dHB1dCBhcHBlYXJzIDxlbT5hZnRlcjwvZW0+IHRoZSBn aXZlbiBpbWFnZXMuIElmIHlvdSBtYWRlIHRoZSBmb2xsb3dpbmcgdGhyZWUgZm9ybXMsIHlv dXIgdGFnIHdvdWxkIHNwbGl0IHRoZSBnYWxsZXJ5IGludG8gJiM4MjE2O3Jvd3MmIzgyMTc7 IG9mIDMgaW1hZ2VzOjwvcD4KCgk8cD5nYWxfYTogPGNvZGU+Jmx0O2RpdiBjbGFzcz0mcXVv dDtuZXdyb3cmcXVvdDsmZ3Q7PC9jb2RlPjxiciAvPgpnYWxfYjogPGNvZGU+Jmx0Oy9kaXYm Z3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtuZXdyb3cmcXVvdDsmZ3Q7PC9jb2RlPjxiciAvPgpn YWxfYzogPGNvZGU+Jmx0Oy9kaXYmZ3Q7PC9jb2RlPjwvcD4KCgk8cD5CcmVha2luZyB0aGUg PGNvZGU+Y291bnRmb3JtPC9jb2RlPiBhdHRyaWJ1dGUgZG93biBpbnRvIGl0cyBjb21wb25l bnRzLCB5b3UgY2FuIHNlZSB0aGF0OjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPjE6Z2FsX2E6 c21kX2Fib3ZlPC9jb2RlPiBhZGRzIHRoZSAmIzgyMTY7bmV3cm93JiM4MjE3OyBkaXYgYWJv dmUgdGhlIGZpcnN0IGltYWdlPC9saT4KCQk8bGk+PGNvZGU+e3RvdGFsaW1hZ2VzfTpnYWxf YzwvY29kZT4gYWRkcyB0aGUgY2xvc2luZyBkaXYgYmVsb3cgdGhlIGxhc3QgaW1hZ2Ugb24g dGhpcyBwYWdlPC9saT4KCQk8bGk+PGNvZGU+c21kX2V2ZXJ5OjM6IXt0b3RhbGltYWdlc306 Z2FsX2I8L2NvZGU+IGFkZHMgYSBjbG9zaW5nIGFuZCB0aGVuIGFuIG9wZW5pbmcgZGl2IGFm dGVyIGV2ZXJ5IDNyZCBpbWFnZSwgPGVtPmV4Y2VwdDwvZW0+IG9uIHRoZSBsYXN0IGltYWdl LiBJZiB3ZSBkaWRuJiM4MjE3O3QgcHV0IHRoZSBleGNlcHRpb24gaW4sIGFuZCB5b3UgaGFk IDEyIHRodW1ibmFpbHMgaW4geW91ciBnYWxsZXJ5ICh3aGljaCBpcyBkaXZpc2libGUgYnkg MyEpIHlvdSB3b3VsZCBzZWUgdGhlIGNvbnRlbnRzIG9mIGdhbDIgYWZ0ZXIgdGhlIGxhc3Qg aW1hZ2UgYXMgd2VsbDwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iZWcxMSI+RXhhbXBsZSAxMTog VXNpbmcgYW4gb25jaGFuZ2UgZm9ybTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgICAgY2F0ZWdvcnk9JnF1b3Q7 YmlyZHMsIGZpc2gmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZTpv Y19mb3JtJnF1b3Q7Jmd0Owp7b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9 JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsm Z3Q7CntvYmplY3R9CiZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5hbmQgaW4gZm9ybSA8Y29kZT5vY19mb3JtPC9jb2RlPjo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGlkPSZxdW90 O3tjYXRlZ29yeX0mcXVvdDsKICAgY2xhc3M9JnF1b3Q7Y2F0ZWdvcnkmcXVvdDsmZ3Q7e2Nh dGVnb3J5X3RpdGxlfSZsdDsvZGl2Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgyIGlkPSJjaGFu Z2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHA+QWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBhbmQg Y2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxzdHJvbmc+QmV0YTwvc3Ryb25n PjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDAuMSB8IEluaXRpYWwgcmVsZWFzZSAm IzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJPGxpPjE5IEZlYiAwOCB8 IDAuMiB8IEFkZGVkIHtnYWxsZXJ5aWR9ICh0aGFua3MgcmxvYWRlcnJvKSBhbmQgc29tZSBz a2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5PZmZpY2lhbDwvc3Ryb25n PjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDAuMyB8IE9mZmljaWFsIHB1YmxpYyBy ZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFkZGVkIHtjb3VudGVyfSwg e2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyBqYWtvYik8L2xpPgoJCTxsaT4x NSBNYXIgMDggfCAwLjMxIHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5kZWZpbmVkIGluZGV4ZXMg YW5kIGFkZGVkIHtjYXRlZ29yeV90aXRsZX0gKHRoYW5rcyBqc3R1YmJzKTwvbGk+CgkJPGxp PjE3IE1hciAwOCB8IDAuMzIgfCBGaXhlZCBhbm90aGVyIHVuZGVmaW5lZCBpbmRleCBhbmQg cmVtb3ZlZCBib2d1cyBjYWxsIHRvIHNtZF9saWIgKGJvdGggdGhhbmtzIHNlY3VuZGFyKTwv bGk+CgkJPGxpPjIxIE1hciAwOCB8IDAuMzMgfCBEaWQgdjAuMzEgcHJvcGVybHksIGluY2x1 ZGluZyB0YWJsZSBwcmVmaXggKHRoYW5rcyBuYXJkbyk8L2xpPgoJCTxsaT4wMSBBcHIgMDgg fCAwLjM0IHwgRml4ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4gcGFyZW50aGVz aXMgYnVnIDsgYWRkZWQgZW1wdHljbGFzcyBhbmQge21heGltYWdlc30gKHRoYW5rcyB0aGVf Z2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgMC40IHwgQ2hhbmdlZCB0aHVtYiB0byBh bGxvdyB0aHVtYi9mdWxsc2l6ZSBzd2FwcGluZyA7IEFkZGVkIHRodW1iY2hhbmdlLCB0aHVt YmNoYW5nZXdyYXB0YWcsIHRodW1iY2hhbmdlY2xhc3MsIHt0aHVtYmluZGV4fSwge3RodW1i Y291bnRlcn0gYW5kIHRoZSB7Y2hhbmdlZDoqfSByZXBsYWNlbWVudCB0YWdzICh0aGFua3Mg ZnVscyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjQxIHwgRml4ZWQgRGlyZWN0b3J5IHNl cGFyYXRvciAodGhhbmtzIGN1ZGEpIDsgYWRkZWQgcmF3IHBhZ2UgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBuYXYgcmVwbGFjZW1lbnQgYXJyYXkgYW5kIG1hZGUg dGhlIG5hdiBhcnJheSBhdmFpbGFibGUgaW4gdGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50cyBh cnJheSAodGhhbmtzIHZpc3VhbHBlb3BsZSk8L2xpPgoJCTxsaT4yNyBNYXkgMDggfCAwLjQy IHwgQWRkZWQgcGFnZXBvcyBhbmQgbWFkZSBwYWdlIGJsb2NrcyBpbmRlcGVuZGVudCBvZiB0 aHVtYiBibG9jayAodGhhbmtzIGR1Y2hhbXApPC9saT4KCQk8bGk+MTAgSnVuIDA4IHwgMC40 MyB8IEZpeGVkIHNvcnQ9JiM4MjIwO2ZpeGVkJiM4MjIxOyB3aGVuIHVzaW5nIGxpbWl0ICh0 aGFua3Mgcm9iaW43NDYpIDsgYWRkZWQgcGVyLWdyb3VwIG9uY2hhbmdlIHdyYXBwaW5nIGFu ZCBhbGxvd2VkIGZpeGVkIHNvcnRpbmcgb2YgY2F0ZWdvcmllcyAodGhhbmtzIGpzdHViYnMp IDsgZGVwcmVjYXRlZCB0aHVtYmNoYW5nZSogYW5kIHJlbmFtZWQgYXMgb25jaGFuZ2UqIDsg Zml4ZWQgJGlkeCBjb3VudGVyIHByb2JsZW08L2xpPgoJCTxsaT4xMCBKdW4gMDggfCAwLjQ0 IHwgQXR0ZW1wdCAjMiBhdCBwZXItZ3JvdXAgb25jaGFuZ2Ugd3JhcHBpbmcgKHRoYW5rcyBh Z2FpbiBqc3R1YmJzKTwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8IDAuNDUgfCBGaXhlZCBsYWNr IG9mIG91dHB1dCB3aGVuIG5vdCB1c2luZyBjYXRlZ29yaWVzICh0aGFua3Mgcm9iaW43NDYp PC9saT4KCQk8bGk+MTYgTm92IDA4IHwgMC40NiB8IEFkZGVkIGNvbGxhdGVkZWxpbSAodGhh bmtzIGN1cmlvdXopIDsgZml4ZWQgKEkgaG9wZSkgdGhlIGNhdGVnb3J5IC8gaWQgYnVnIGZy b20gMC40NCBhbmQgMC40NSAodGhhbmtzIHJvYmluNzQ2L25hcmRvKTwvbGk+CgkJPGxpPjEz IEZlYiAwOSB8IDAuNSB8IFJlcXVpcmVzIHNtZF9saWIgOyBhZGRlZCA8c3BhbiBjbGFzcz0i Y2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0ICh0aGFua3MgbmV0LWNhcnZlcikgOyBhZGRlZCBz dXBwb3J0IGZvciBkaXNwbGF5aW5nIHVuY2F0ZWdvcmlzZWQgaW1hZ2VzICh0aGFua3MgeHph bWVuKSA7ICYjODIxNjs/JiM4MjE3OyB2YXJzIGV4cGFuZGVkIHRvIGxpbmsgLyBpbWFnZSAv IGZpbGUgLyA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBhbmQgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgOyBuZXcgYXR0cmlidXRlczogPGNv ZGU+ZXNjYXBlPC9jb2RlPiwgPGNvZGU+aHRtbF9pZDwvY29kZT4sIDxjb2RlPmZvcm1hdDwv Y29kZT4sIDxjb2RlPmdtdDwvY29kZT4sIDxjb2RlPmxhbmc8L2NvZGU+ICh0aGFua3MgbWFu aXF1aSksIDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gOyBpbXByb3ZlZCA8Y29kZT57b2Jq ZWN0fTwvY29kZT4gc3VwcG9ydCBhbmQgYWRkZWQgPGNvZGU+b2JqZWN0Zm9ybTwvY29kZT4g KHRoYW5rcyB0eWUvcnZ0dXJuYWdlKSA7IDxjb2RlPnt0aXRsZX08L2NvZGU+ID09IDxjb2Rl PntjYXB0aW9ufTwvY29kZT4gYXQgbGFzdCEgOyByZW1vdmVkIDxjb2RlPnRodW1iY2hhbmdl PC9jb2RlPiogYXR0cmlidXRlcyA7IGltcHJvdmVkIHN1cHBvcnQgZm9yIHRhYmxlIGV4dGVu c2lvbnMgKHZpYSB0aGUgPGNvZGU+Y29sdW1uczwvY29kZT4gYXR0cmlidXRlOiB0aGFua3Mg UmVkRm94KSA7IGFkZGVkIDxjb2RlPnNtZF9ldmVyeTwvY29kZT4gc3ludGF4IHRvIDxjb2Rl Pm9uY2hhbmdlPC9jb2RlPiAodGhhbmtzIGpha29iKSA7IGZpeGVkIG9mZnNldCBidWcgKHRo YW5rcyBmZXJhZ25vbGkpPC9saT4KCQk8bGk+MDEgTWFyIDA5IHwgMC41MSB8IEFkZGVkIDxj b2RlPmNvdW50Zm9ybTwvY29kZT4gYW5kIDxjb2RlPmNvdW50cG9zPC9jb2RlPiA7IGZpeGVk IDxjb2RlPntoYXN0aHVtYn08L2NvZGU+IHdhcm5pbmc8L2xpPgoJCTxsaT4xNiBOb3YgMDkg fCAwLjUyIHwgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4yLjAgb25seSA7IGFk ZGVkIGRhdGFiYXNlIHRodW1ibmFpbCBoZWlnaHQgYW5kIHdpZHRoIHN1cHBvcnQgOyBhZGRl ZCA8Y29kZT5hc3BlY3Q8L2NvZGU+LCA8Y29kZT5kaW1lbnNpb25zPC9jb2RlPiwgPGNvZGU+ YXV0aG9yPC9jb2RlPiwgPGNvZGU+ZXh0ZW5zaW9uPC9jb2RlPiBhbmQgPGNvZGU+aW1nc2l6 ZTwvY29kZT4gYXR0cmlidXRlcyA7IGZpeGVkIHF1b3RlIHBhcnNpbmcgaW4gPGNvZGU+ZXNj YXBlPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIHdhcm5pbmcgd2hlbiB1c2luZyA8Y29kZT5maXhl ZDwvY29kZT4gc29ydGluZyAoYm90aCB0aGFua3MgbWFuaXF1aSk8L2xpPgoJCTxsaT4wMSBK YW4gMTAgfCAwLjUzIHwgQWRkZWQgb25jaGFuZ2UgZm9ybSBjYXBhYmlsaXR5ICh0aGFua3Mg TWF0dEQpPC9saT4KCQk8bGk+MDEgRmViIDEwIHwgMC41NCB8IE11bHRpcGxlIGltYWdlcyBu b3QgZGlzcGxheWVkIGlmIG11bHRpcGxlIGNhdGVnb3JpZXMgZXhpc3Qgd2l0aCB0aGUgc2Ft ZSBuYW1lIGFuZCBkaWZmZXJlbnQgdGl0bGU8L2xpPgoJCTxsaT4wMSBNYXIgMTAgfCAwLjU1 IHwgQWRkZWQgPGNvZGU+bmFtZTwvY29kZT4gZmlsdGVyaW5nPC9saT4KCTwvdWw+CgoJPGgy IGlkPSJjcmVkaXRzIj5DcmVkaXRzPC9oMj4KCgk8cD5UaGlzIHBsdWdpbiB3b3VsZG4mIzgy MTc7dCBoYXZlIGV4aXN0ZWQgd2l0aG91dCB0aGUgYXdlc29tZSBtaW5kIG9mIFJvYmVydCBX ZXR6bG1heXIuIEhpcyB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luIGlzIHRydWUgZ2VuaXVz OyB0aGlzIHNpbXBseSBzdGFuZHMgb24gdGhlIHNob3VsZGVycyBvZiB0aGF0IGlkZWEgYW5k IHJvbGxzIGluIGEgc291cGVkIHVwIHZlcnNpb24gb2YgdGhlIHRodW1ibmFpbCBnZW5lcmF0 aW9uIGVuZ2luZSBmcm9tIHNtZF9zbGltYm94LiBUbyB0aGF0IGVuZCwgdGhlIHBsdWdpbiBp cyBhbHNvIGluZGVidGVkIHRvIGFueW9uZSB3aG8gaGFzIHBvc3RlZCBmZWF0dXJlcyBvciBi dWcgcmVwb3J0cyB0byBtZSBvciB0aGUgc21kX3NsaW1ib3ggdGhyZWFkLiBZb3UmIzgyMTc7 cmUgYWxsIG1hcnZlbGxvdXMuPC9wPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBD U1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhl aWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAx MDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5k LWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpu b3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2 OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4 OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogIzAw YzsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1 ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBh OmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1i b3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAg aDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJn aW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90 dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBm b250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6 ICMwNzk7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNp bmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0 ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAx MXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEw cHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXRubSB7 IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFj a2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJs ZSB7d2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30K I3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFk ZGluZzouNWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9 CiNzbWRfaGVscCAucmVxdWlyZWQge2NvbG9yOnJlZDt9CiNzbWRfaGVscCBsaSB7IG1hcmdp bjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1 cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6Mzoi bWQ1IjtzOjMyOiIzNWFhN2FkNjE4ZmY2ZmNlNjkxZjVhMzg4MmQ4OTI0ZiI7fQ==