# Name: smd_gallery v0.52 # 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 bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC41MiI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjM0OTI1OiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJ J2FzcGVjdCcgPT4gJycsDQoJCSdhdXRob3InID0+ICcnLA0KCQknZGltZW5zaW9ucycgPT4g JycsDQoJCSdleHRlbnNpb24nID0+ICcnLA0KCQknZGlyZWN0b3J5JyA9PiAnJywNCgkJJ21h dGNoJyA9PiAnJywNCgkJJ3N1YmxldmVsJyA9PiAnMCcsDQoJCSdlc2NhcGUnID0+ICdhbHQs IHRpdGxlLCBjYXB0aW9uJywNCgkJJ3NvcnQnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnMCcs DQoJCSdsaW1pdCcgPT4gJzAnLA0KCQknbWF4bGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVt YmxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1i JyA9PiAnMDoxJywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSdpbWdzaXplJyA9PiAnJywN CgkJJ29uY2hhbmdlJyA9PiAnY2F0ZWdvcnknLA0KCQknb25jaGFuZ2V3cmFwdGFnJyA9PiAn JywNCgkJJ29uY2hhbmdlY2xhc3MnID0+ICcnLA0KCQknb2JqZWN0Zm9ybScgPT4gJycsDQoJ CSdncm91cHRhZycgPT4gJycsDQoJCSdncm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ ICcnLA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ2dtdCcgPT4gJycsDQoJCSds YW5nJyA9PiAnJywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknY29tYm8nID0+ICcnLA0KCQkn cGFnaW5nJyA9PiAnMCcsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSdwYWdlcG9zJyA9PiAn YmVsb3cnLA0KCQknbmF2d3JhcHRhZycgPT4gJ3VsJywNCgkJJ25hdmJyZWFrJyA9PiAnbGkn LA0KCQknbmF2Y2xhc3MnID0+ICdzbWRfZ2FsbGVyeV9uYXYnLA0KCQknZW1wdHljbGFzcycg PT4gJ2VtcHR5JywNCgkJJ2dhbGxlcnlpZCcgPT4gJz80OjYnLA0KCQknd3JhcHRhZycgPT4g JycsDQoJCSdodG1sX2lkJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9 PiAnJywNCgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIENhdGVnb3J5 IHJlbGllcyBvbiB3aGV0aGVyIGlkIGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJLy8g bEF0dHMoKSB3b24ndCBsZXQgdXMgaGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRvIGJl IGRvbmUgbWFudWFsbHkNCgkkYXR0ZW1wdE1hdGNoID0gKGVtcHR5KCRjYXRlZ29yeSkgJiYg ZW1wdHkoJGlkKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVn b3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYydd OiAnJyk7DQoJJHNvcnQgPSAoJHNvcnQpID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdj YXRlZ29yeScgKTsNCg0KCS8vICoqIExPT0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9s ZHMgZGF0YWJhc2UgY29sdW1uIGFzIGtleSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIg YXMgdmFsdWUuDQoJLy8gQWRkaXRpb25hbCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9y IGl0ZXJhdGlvbiB3aGlsZSBjcmVhdGluZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5 X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5 IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgp Ow0KCSRleHRyYU1hcCA9IGFycmF5KCk7DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAi aWQiLCAiYWx0IiwgImNhcHRpb24iLCAiY2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAi ZXh0IiwgInc6d2lkdGgiLCAiaDpoZWlnaHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0 aHVtYl9oOnRodW1iX2hlaWdodCIsICJ0aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmll bGRzID0gYXJyYXkoImFsdCIsICJjYXB0aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUg TUxQIGNvbHVtbiBuYW1lcywgc2luY2UgdXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90 LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhhcyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xh bmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2Vb J2xvbmcnXSA6IExBTkc7DQoJJGRmbHRfdGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1 bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVD b2xzLCAkY29sdW1ucykgYXMgJGNvbGluZm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNv bGluZm8sICI6Iik7DQoJCSRjb2x0YmwgPSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoN CgkJaWYgKCRjb2xiaXRbMF0gPT0gJycpIGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29s dGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAkY29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29s dGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJJHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1l ID0gJGNvbHRibFswXTsNCgkJfQ0KCQkkY29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsNCgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6 JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xu YW1lLCAkbWxwRmllbGRzKSkgPyBfbDEwbl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0 aGlzbGFuZykuICcgQVMgJy4kY29sbmFtZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJ aWYgKCFpbl9hcnJheSgkY29saW5mbywgJGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRj b2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0KCX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUo JGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcg aWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6 IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBo cmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6 ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBm ZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsNCg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxs b3dlZCA9IGFycmF5KCJhYm92ZSIsICJiZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXko KTsNCgkkY291bnRpbmcgPSAwOw0KCWlmICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9 IDE7DQoJCSRjb3VudGZvcm0gPSBkb19saXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRj b3VudHBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBj b252ZW5pZW5jZQ0KCQkkY291bnRwb3MgPSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsN CgkJZm9yZWFjaCAoJGNvdW50cG9zIGFzICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25z W10gPSAoaW5fYXJyYXkoJGNvdW50aXRlbSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50 aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5p dA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdl b3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkk cGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3Jl cGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBh Z2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0K CQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkp ID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25j aGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRk ZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDog JG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRvbmNoYW5n ZSBhcyAkcmVzZXRPcHQpIHsNCgkJJHJlc2V0T3B0c1skcmVzZXRPcHRdID0gIiI7DQoJfQ0K DQoJLy8gRXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8gMCA6IDE7DQoJJGVz Y2FwZXMgPSBkb19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAoJGVzY2FwZXMg YXMgJGlkeCA9PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1bnNldCgkZXNj YXBlc1skaWR4XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVudGlmaWVyIGlz IHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1ibmFpbCBwYWdlIGxp bmtzDQoJJGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcnIHx8IHN1YnN0cigk Z2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEgKGZhaXJseSBsaWtl bHkpIHVuaXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJCSRnYWxsVG1wID0g bWQ1KCRjYXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1YmxldmVsLiRzb3J0LiRs aW1pdC4kbWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXApID0gZXhwbG9k ZSgiOiIsIHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAgKGVtcHR5KCRn YWxsTGVuKSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChlbXB0eSgkZ2Fs bFNraXApKSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7 ICRjbnQgPCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxsU2tpcCkgJSBz dHJsZW4oJGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFskaWR4XTsNCgkJ fQ0KCX0gZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCgkkZ2FsbElEID0g InNtZF9nbHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5jcmVkaWJseSB1bmxp a2VseSkgbmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUgdmFyaWFibGVzIGZy b20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJlIG9y IHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9fbGlzdCgkdGh1 bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJJGZ1bGxtb2Qg PSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAidCI7 DQoJfSBlbHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6 ICIiOw0KCQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ICJ0IiA6ICIiOw0K CX0NCg0KCS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRpZmZlcnMgaWYgdXNp bmcgZGlyZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXkoKTsNCglpZiAoJGRp cmVjdG9yeSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1 YmxldmVsLCAkbWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51 bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElE LCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0w KSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRm aXhlZE9yZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBlbHNlIHsNCgkJLy8g UHJvY2VzcyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1eCBvZiB0aGUgd2hl cmUgY2xhdXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0cyBBTkQgIWNhdHMg QU5EICFJRHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VPUiA9IGFycmF5KCk7 DQoNCgkJLy8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlzdCB3aXRoIHF1b3Rl cyBhbmQgbWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0gKCRzdWJsZXZlbCkg PyAiaW1hZ2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMsICRpZGV4YykgPSBz bWRfZG9MaXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3Qo JGNhdGluYywgJGNhdGV4YykgPSBzbWRfZG9MaXN0KCRjYXRlZ29yeSwgZmFsc2UsICRzdWJp bmZvLCB0cnVlLCAkZGVsaW0sICRzcGMpOw0KCQlpZiAoJGlkaW5jKSB7DQoJCQkkY2xhdXNl T1JbXSA9IFBGWC4ndHhwX2ltYWdlLmlkIElOICgnLmltcGxvZGUoIiwiLCAkaWRpbmMpLicp JzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9p bWFnZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJ CWlmICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2Rl KCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUo IiBBTkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgJy5Q RlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMp LicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9p bWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDogJyc7DQoNCgkJ Ly8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBhbmQgdGhleSBtYXRjaGVk IG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hvdWxkIG5vdCBleGlzdC4N CgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRoZSBleHBlY3RlZCB0 aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBmaW5kcyBub3RoaW5n Lg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNoKSB7DQoJICAJCSRj bGF1c2UgPSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSA9ICJzbWRfJyAubXRfcmFuZCgpLiAn Iic7DQoJCX0NCg0KCQkkY2xhdXNlID0gJygnLnN0cl9yZXBsYWNlKCdTTURfRU1QVFknLCAn JywgJGNsYXVzZSkuJyknOw0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICIrKyBJ TkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJaWYgKCRpZGluYykgZG1w KCRpZGluYyk7DQoJCQlpZiAoJGlkZXhjKSBkbXAoJGlkZXhjKTsNCgkJCWlmICgkY2F0aW5j KSBkbXAoJGNhdGluYyk7DQoJCQlpZiAoJGNhdGV4YykgZG1wKCRjYXRleGMpOw0KCQl9DQoN CgkJLy8gRmlsdGVyIGJ5IGFzcGVjdCByYXRpbw0KCQlpZiAoJGFzcGVjdCkgew0KCQkJJGFz cGVjdHMgPSBkb19saXN0KCRhc3BlY3QsICRkZWxpbSk7DQoNCgkJCS8vIENvbXBhcmUgZnVs bHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRmbGRtb2QgPSAoJGZ1bGxt b2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9IFBGWC4ndHhwX2ltYWdl LicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2ltYWdlLicuJGZsZG1vZC4n aCc7DQoNCgkJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoJCQlmb3JlYWNoICgkYXNwZWN0cyBh cyAkcmF0aW8pIHsNCgkJCQlzd2l0Y2goJHJhdGlvKSB7DQoJCQkJCWNhc2UgJ3BvcnRyYWl0 JzoNCgkJCQkJCSRjbGF1c2VPUltdID0gJGhmbGQuICcgPiAnLiAkd2ZsZDsNCgkJCQkJCWJy ZWFrOw0KCQkJCQljYXNlICdsYW5kc2NhcGUnOg0KCQkJCQkJJGNsYXVzZU9SW10gPSAkd2Zs ZC4gJyA+ICcuICRoZmxkOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgJ3NxdWFyZSc6DQoJ CQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID0gJy4gJHdmbGQ7DQoJCQkJCQlicmVhazsN CgkJCQl9DQoJCQl9DQoJCQlpZiAoIWVtcHR5KCRjbGF1c2VPUikpIHsNCgkJCQkkY2xhdXNl IC49ICcgQU5EICcuJHdmbGQuJyA+IDAgQU5EICcuJGhmbGQuJyA+IDAgQU5EICgnLmltcGxv ZGUoIiBPUiAiLCAkY2xhdXNlT1IpLicpICc7DQoJCQl9DQoJCX0NCg0KCQkvLyBGaWx0ZXIg YnkgYXV0aG9yDQoJCWlmICgkYXV0aG9yKSB7DQoJCQkkYXV0aG9ycyA9IGRvX2xpc3QoJGF1 dGhvciwgJGRlbGltKTsNCgkJCSRjbGF1c2UgLj0gIiBBTkQgIiAuIFBGWC4idHhwX2ltYWdl LmF1dGhvciBJTiAoJyIuaW1wbG9kZSgiJywnIiwgJGF1dGhvcnMpLiInKSI7DQoJCX0NCg0K CQkvLyBGaWx0ZXIgYnkgZXh0ZW5zaW9uDQoJCWlmICgkZXh0ZW5zaW9uKSB7DQoJCQkkZXh0 ZW5zaW9ucyA9IGRvX2xpc3QoJGV4dGVuc2lvbiwgJGRlbGltKTsNCgkJCWZvcmVhY2ggKCRl eHRlbnNpb25zIGFzICRpZHggPT4gJGV4dCkgew0KCQkJCSRleHRlbnNpb25zWyRpZHhdID0g Ii4iLiRleHQ7DQoJCQl9DQoJCQkkY2xhdXNlIC49ICIgQU5EICIgLiBQRlguInR4cF9pbWFn ZS5leHQgSU4gKCciLmltcGxvZGUoIicsJyIsICRleHRlbnNpb25zKS4iJykiOw0KCQl9DQoN CgkJLy8gRmlsdGVyIGJ5IGRpbWVuc2lvbnMNCgkJaWYgKCRkaW1lbnNpb25zKSB7DQoJCQkk ZGltQWxsb3cgPSBhcnJheSgnPScsICc+JywgJzwnLCAnPj0nLCAnPD0nKTsNCgkJCSRkaW1z ID0gZG9fbGlzdCgkZGltZW5zaW9ucywgJGRlbGltKTsNCg0KCQkJLy8gQ29tcGFyZSBmdWxs c2l6ZSBvciB0aHVtYm5haWwgYXNwZWN0IHJhdGlvcw0KCQkJJGZsZG1vZCA9ICgkZnVsbG1v ZCkgPT0gJ3QnID8gJ3RodW1iXycgOiAnJzsNCgkJCSR3ZmxkID0gUEZYLid0eHBfaW1hZ2Uu Jy4kZmxkbW9kLid3JzsNCgkJCSRoZmxkID0gUEZYLid0eHBfaW1hZ2UuJy4kZmxkbW9kLido JzsNCg0KCQkJJHdkaW0gPSAkZGltc1swXTsNCgkJCSRoZGltID0gKGlzc2V0KCRkaW1zWzFd KSkgPyAkZGltc1sxXSA6ICcnOw0KDQoJCQkkd2RpbXZhbCA9IHByZWdfcmVwbGFjZSgnL1te MC05XS8nLCAnJywgJHdkaW0pOw0KCQkJJGhkaW12YWwgPSBwcmVnX3JlcGxhY2UoJy9bXjAt OV0vJywgJycsICRoZGltKTsNCgkJCSR3ZGltb3AgPSBwcmVnX3JlcGxhY2UoJy9bMC05XS8n LCAnJywgJHdkaW0pOw0KCQkJJHdkaW1vcCA9IGluX2FycmF5KCR3ZGltb3AsICRkaW1BbGxv dykgPyAkd2RpbW9wIDogJz0nOw0KCQkJJGhkaW1vcCA9IHByZWdfcmVwbGFjZSgnL1swLTld LycsICcnLCAkaGRpbSk7DQoJCQkkaGRpbW9wID0gaW5fYXJyYXkoJGhkaW1vcCwgJGRpbUFs bG93KSA/ICRoZGltb3AgOiAnPSc7DQoJCQkkY2xhdXNlIC49ICgoJHdkaW0pID8gJyBBTkQg JyAuICR3ZmxkIC4gJHdkaW1vcCAuICR3ZGltdmFsIDogJycpIC4gKCgkaGRpbSkgPyAnIEFO RCAnIC4gJGhmbGQgLiAkaGRpbW9wIC4gJGhkaW12YWwgOiAnJyk7DQoJCX0NCg0KCQkvLyBD b252ZXJ0IHRoZSBzb3J0IGludG8gYSB2YWxpZCBzb3J0aW5nIGhpZXJhcmNoeS4NCgkJLy8g Tm90ZSB0aGF0IHJhbmRvbSBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgdGhlIGZvbGxvd2luZyBy dWxlcyBhcHBseToNCgkJLy8gIDEpIEFueXRoaW5nIGFwcGVhcmluZyBiZWZvcmUgcmFuZG9t IGlzIHBhc3NlZCB0byB0aGUgZGF0YWJhc2UgcXVlcnkgZm9yIG9yZGVyaW5nDQoJCS8vICAy KSBBcyBzb29uIGFzIHJhbmRvbSBpcyBlbmNvdW50ZXJlZCwgdGhlIHJlc3Qgb2YgdGhlIHNv cnQgc3RyaW5nIGlzIGlnbm9yZWQuDQoJCS8vICAgICBUaGUgcmVzdWx0c2V0IHdpbGwgYmUg c29ydGVkIHJhbmRvbWx5IGluc3RlYWQNCgkJLy8gIDMpIElmIHJhbmRvbSBhcHBlYXJzIGZp cnN0IGluIHRoZSBsaXN0LCB0aGUgZGF0YSBpcyByZXRyaWV2ZWQgcmFuZG9tbHkgdGhlbiB0 aGUNCgkJLy8gICAgIHJlbWFpbmluZyBvcHRpb25zIHNvcnQgdGhlIHJlc3VsdHNldA0KCQkk Y2xhdXNlU29ydCA9IGFycmF5KCk7DQoJCSRwb3N0T3JkZXIgPSBhcnJheSgpOw0KCQkkcnVs ZSA9ICJzcWwiOw0KCQkkcG9zdFByZWZpeCA9ICJTT1JUXyI7DQoJCSRmaXhlZE9yZGVyID0g JHJhbmRzb3J0ID0gZmFsc2U7DQoJCSRzb3J0ID0gZG9fbGlzdCgkc29ydCwgJGRlbGltKTsN CgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsgJGlkeCsrKSB7DQoJCQkk c29ydF9kaXIgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlkeF0pOw0KCQkJJGRpcmVjdGlvbiA9 ICRjb2xSZWYgPSAnJzsNCgkJCWlmIChjb3VudCgkc29ydF9kaXIpIDw9IDEpIHsNCgkJCQkk c29ydF9kaXJbMV0gPSAiYXNjIjsNCgkJCX0NCgkJCWlmICgkcnVsZSA9PSAic3FsIikgew0K CQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNjIikgPyAnIGRlc2MnIDog JyBhc2MnOw0KCQkJfSBlbHNlIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9 PSAiZGVzYyIpID8gJHBvc3RQcmVmaXguJ0RFU0MnIDogJHBvc3RQcmVmaXguJ0FTQyc7DQoJ CQl9DQoNCgkJCXN3aXRjaCAoJHNvcnRfZGlyWzBdKSB7DQoJCQkJY2FzZSAncmFuZG9tJzoN CgkJCQkJJHJ1bGUgPSAicG9zdCI7DQoJCQkJCWlmICgkaWR4ID09IDApIHsNCgkJCQkJCSRj bGF1c2VTb3J0W10gPSAncmFuZCgpJzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRyYW5kc29y dCA9IHRydWU7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnZml4ZWQnOg0KCQkJ CQkvLyAnZml4ZWQnIG9ubHkgd29ya3Mgb24gaWRzIG9yIGNhdGVnb3JpZXMNCgkJCQkJJGZp eGVkT3JkZXIgPSAoJGlkID09ICcnICYmICRjYXRlZ29yeSA9PSAnJykgPyBmYWxzZSA6IHRy dWU7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjb2xSZWYgPSBhcnJheV9z ZWFyY2goJHNvcnRfZGlyWzBdLCAkZmllbGRNYXApOw0KCQkJCQkkY29sTmFtZSA9ICRmaWVs ZE1hcFskY29sUmVmXTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0gInNx bCIpIHsNCgkJCQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJCQkkY2xhdXNlU29ydFtdID0g JGNvbFJlZi4kZGlyZWN0aW9uOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJaWYgKCEkcmFu ZHNvcnQpIHsNCgkJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJCSRwb3N0T3JkZXJb XSA9IGFycmF5KCJjb2wiID0+ICRjb2xOYW1lLCAic29ydCIgPT4gJGRpcmVjdGlvbik7DQoJ CQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoY291bnQoJGNsYXVzZVNvcnQpID4g MCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZICcgLiBpbXBsb2RlKCIsIiwkY2xhdXNl U29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCWVjaG8gIisrIFdIRVJFIENM QVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJCX0NCgkJLy8gVGhlIGRhdGFiYXNlIGZp ZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1wbG9kZSgiLCIsIGFycmF5X2tleXMoJGZp ZWxkTWFwKSk7DQoJCSRjVGl0bGUgPSAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkp ID8gX2wxMG5fbWFrZV9maWVsZF9uYW1lKCd0aXRsZScsICR0aGlzbGFuZykgOiAndGl0bGUn Ow0KDQoJCSRycyA9IGdldFJvd3MoIg0KCQkJU0VMRUNUIERJU1RJTkNUICRmaWVsZHMsICIu UEZYLiJ0eHBfY2F0ZWdvcnkuIi4kY1RpdGxlLiIgQVMgY2F0ZWdvcnlfdGl0bGUNCgkJCUZS T00gIi5QRlguInR4cF9pbWFnZSBMRUZUIEpPSU4gIi5QRlguInR4cF9jYXRlZ29yeQ0KCQkJ T04gIi5QRlguInR4cF9pbWFnZS5jYXRlZ29yeSA9ICIuUEZYLiJ0eHBfY2F0ZWdvcnkubmFt ZQ0KCQkJV0hFUkUgJGNsYXVzZQ0KCQkJTElNSVQgMCwgJG1heGxpbWl0DQoJCSIsICRkZWJ1 Zyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQp ID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcp Ow0KCX0NCg0KDQoJLy8gSXMgcG9zdC1vcmRlcmluZyByZXF1aXJlZD8gRG8gaXQNCglpZiAo JHJhbmRzb3J0KSB7DQoJCXNodWZmbGUoJHJzKTsNCgl9IGVsc2UgaWYgKGNvdW50KCRwb3N0 T3JkZXIpID4gMCkgew0KCQkvLyBUcmFuc2xhdGUgdGhlIHJvd3MgaW50byBjb2x1bW5zIHRo YXQgY2FuIGJlIHNvcnRlZA0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJ CWZvcmVhY2ggKCRyb3cgYXMgJGlkZW50aWZpZXIgPT4gJGl0ZW0pIHsNCgkJCQkkdmFybmFt ZSA9ICJjb2xfIi4kaWRlbnRpZmllcjsNCgkJCQkkeyR2YXJuYW1lfVska2V5XSA9ICRpdGVt Ow0KCQkJfQ0KCQl9DQoNCgkJLy8gTWFrZSB1cCBhbiBhcnJheV9tdWx0aXNvcnQgYXJnIGxp c3QgYW5kIGV4ZWN1dGUgaXQuDQoJCS8vIFRoZSBuZWNlc3NhcnkgZXZpbCgpIGlzIGJlY2F1 c2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueSBjb2xzIHRoZXJlIHdpbGwgYmUgaW4gdGhlIGFy cmF5DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVyKTsgJGlkeCsr KSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4XVsnY29sJ107 DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsNCgkJfQ0KCQkk c29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3MpLics ICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhlZC1vcmRlciBv dXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAoJGZpeGVkT3Jk ZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0ID0gQXJyYXko KTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCg0KCQkvLyBTdWNrIG91dCB0aGUgZml4 ZWQgaXRlbXMgZmlyc3QuIElEcyB0aGVuIGNhdGVnb3JpZXMNCgkJZm9yICgkaWR4ID0gMDsg JGlkeCA8IGNvdW50KCRpZGluYyk7ICRpZHgrKykgew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJv dykgew0KCQkJCWlmICgkaWQgJiYgZG9RdW90ZSgkcm93WydpZCddKSA9PSAkaWRpbmNbJGlk eF0pIHsNCgkJCQkJJG9yZGVyZWRSU1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9 ICRyb3dbJ2lkJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlmb3IgKCRp ZHggPSAwOyAkaWR4IDwgY291bnQoJGNhdGluYyk7ICRpZHgrKykgew0KCQkJZm9yZWFjaCgk cnMgYXMgJHJvdykgew0KCQkJCWlmICgkY2F0ZWdvcnkgJiYgZG9RdW90ZSgkcm93WydjYXRl Z29yeSddKSA9PSAkY2F0aW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRyb3c7 DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCX0NCgkJCX0NCgkJfQ0K CQkvLyBUYWNrIG9uIHRoZSByZW1haW5pbmcgcm93cw0KCQlpZiAoJHJzKSB7DQoJCQlmb3Jl YWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdu b3JlTGlzdCkpIHsNCgkJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJCX0NCgkJCX0N CgkJfQ0KCQkkcnMgPSBhcnJheV9tZXJnZSgkb3JkZXJlZFJTLCAkcmVtYWluaW5nUlMpOw0K CX0NCg0KCS8vIEdyYWIgdGhlIHBvcnRpb24gb2YgdGhlIHJlY29yZCBzZXQgYWN0dWFsbHkg cmVxdWlyZWQgdG8gaXRlcmF0ZSBvdmVyDQoJaWYgKCRycykgew0KCQkkcnMgPSBhcnJheV9z bGljZSgkcnMsICRvZmZzZXQsICgoJGRpcmVjdG9yeSkgPyAkZGlybGltaXQgOiAoKCRsaW1p dD09MCkgPyAkbWF4bGltaXQgOiAkbGltaXQpKSk7DQoJfQ0KDQoJLy8gUHJlcGFyZSBmaXhl ZCB0aHVtYnNpemVzDQoJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSAnJzsNCgkkdGh1 bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMgPSAnJzsNCglpZiAoJHRodW1ic2l6ZSkgew0KCQkk dGh1bWJTaXplcyA9IGRvX2xpc3QoJHRodW1ic2l6ZSwgJGRlbGltKTsNCgkJJHVuaXRzID0g cHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJaWYgKGNv dW50KCR0aHVtYlNpemVzKSA9PSAxKSB7DQoJCQkkdGh1bWJXaWR0aCA9ICR0aHVtYkhlaWdo dCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJ JHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkdGh1bWJX VW5pdHMgOiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkdGh1bWJXaWR0aCA9IHByZWdfcmVw bGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iSGVpZ2h0 ID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkk dGh1bWJXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYldpZHRoICE9ICcnKSA/ICR0 aHVtYldVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTld LycsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09 ICcnICYmICR0aHVtYkhlaWdodCAhPSAnJykgPyAkdGh1bWJIVW5pdHMgOiAkdW5pdHM7DQoJ CX0NCgl9DQoNCgkvLyBQcmVwYXJlIGZpeGVkIGltYWdlIHNpemVzDQoJJGltYWdlV2lkdGgg PSAkaW1hZ2VIZWlnaHQgPSAnJzsNCgkkaW1hZ2VXVW5pdHMgPSAkaW1hZ2VIVW5pdHMgPSAn JzsNCglpZiAoJGltZ3NpemUpIHsNCgkJJGltYWdlU2l6ZXMgPSBkb19saXN0KCRpbWdzaXpl LCAkZGVsaW0pOw0KCQkkdW5pdHMgPSBwcmVnX3JlcGxhY2UoJy9bMC05XS8nLCAnJywgJGlt YWdlU2l6ZXNbMF0pOw0KCQlpZiAoY291bnQoJGltYWdlU2l6ZXMpID09IDEpIHsNCgkJCSRp bWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcn LCAkaW1hZ2VTaXplc1swXSk7DQoJCQkkaW1hZ2VXVW5pdHMgPSAkaW1hZ2VIVW5pdHMgPSAo JHVuaXRzID09ICcnKSA/ICRpbWFnZVdVbml0cyA6ICR1bml0czsNCgkJfSBlbHNlIHsNCgkJ CSRpbWFnZVdpZHRoID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkaW1hZ2VTaXpl c1swXSk7DQoJCQkkaW1hZ2VIZWlnaHQgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycs ICRpbWFnZVNpemVzWzFdKTsNCgkJCSRpbWFnZVdVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYg JGltYWdlV2lkdGggIT0gJycpID8gJGltYWdlV1VuaXRzIDogJHVuaXRzOw0KCQkJJHVuaXRz ID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICRpbWFnZVNpemVzWzFdKTsNCgkJCSRp bWFnZUhVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYgJGltYWdlSGVpZ2h0ICE9ICcnKSA/ICRp bWFnZUhVbml0cyA6ICR1bml0czsNCgkJfQ0KCX0NCg0KCS8vIENvbGxhdGlvbiBkZWZlcnMg cGFyc2luZyB0aGUgZm9ybSBmb3IgZWFjaCByZXR1cm5lZCBpdGVtLg0KCS8vIEluc3RlYWQg aXQgb3V0cHV0cyB0aGUgZGF0YSBhcyBhIGxpc3QgYXQgdGhlIGVuZCAoaXRlbXMgbWF5IGJl IGluZGl2aWR1YWxseSBxdW90ZWQgb3IgZXh0cmFjdGVkIGlmIHJlcXVpcmVkKQ0KCS8vVE9E TyA6IEFkZCBBTFdBWVMgc3dpdGNoIGFzIGEgc2hvcnRjdXQgdG8gc3BlY2lmeSB0aGF0IGFs bCBtYXRjaGluZyBpdGVtcyAocmVnYXJkbGVzcyBvZiAjMSwgIzIsICMzIGV0YykgYXJlIHRv IGJlIHF1b3RlZA0KCWlmICgkY29sbGF0ZSkgew0KCQkkZGJsUXVvdGUgPSAkc2dsUXVvdGUg PSBhcnJheSgnU01ETk9ORScpOw0KCQkkY29sbGF0ZU9wdHMgPSBkb19saXN0KCRjb2xsYXRl LCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29sbGF0ZU9wdHMgYXMgJG9wdGlvbikgew0KCQkJ JGluZGV4ZXMgPSBkb19saXN0KCRvcHRpb24sICRwYXJhbWRlbGltKTsNCgkJCSRjb2xUeXBl ID0gYXJyYXlfc2hpZnQoJGluZGV4ZXMpOw0KCQkJLy8gU3VwcGx5aW5nICdxdW90ZScgb24g aXRzIG93biB3aWxsIGVtcHR5IHRoZSByZWxldmFudCBhcnJheSwgaW1wbHlpbmcgIkFMTCIg ZmllbGRzIGFyZSB0byBiZSBxdW90ZWQNCgkJCXN3aXRjaCAoJGNvbFR5cGUpIHsNCgkJCQlj YXNlICJzZ2xxdW90ZSI6DQoJCQkJCSRzZ2xRdW90ZSA9ICRpbmRleGVzOw0KCQkJCQlicmVh azsNCgkJCQljYXNlICJkYmxxdW90ZSI6DQoJCQkJY2FzZSAicXVvdGUiOg0KCQkJCQkkZGJs UXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBD b21ib3MgYXJlIHVzZXItZGVmaW5lZCBjb21iaW5hdGlvbnMgb2YgcmVwbGFjZW1lbnQgbW9k aWZpZXJzIChlLmcuIGlkZXh0OiB7aWR9e2V4dH0sIC4uLg0KCSRjb21ib3MgPSBhcnJheSgp Ow0KCWlmICgkY29tYm8pIHsNCgkJJGNvbWJvID0gZG9fbGlzdCgkY29tYm8sICRkZWxpbSk7 DQoJCWZvcmVhY2ggKCRjb21ibyBhcyAkbmV3RGVmKSB7DQoJCQlsaXN0KCRkZWZQYXJ0cywg JHVud2FudGVkKSA9IHNtZF9kb0xpc3QoJG5ld0RlZiwgZmFsc2UsICcnLCBmYWxzZSwgJHBh cmFtZGVsaW0sICRzcGMpOw0KCQkJJGRlZk5hbWUgPSAieyIuYXJyYXlfc2hpZnQoJGRlZlBh cnRzKS4ifSI7DQoJCQkkY29tYm9zWyRkZWZOYW1lXSA9ICRkZWZQYXJ0c1swXTsNCgkJfQ0K CX0NCglpZiAoJGRlYnVnID4gMSkgew0KCQllY2hvICIrKyBDT01CT3MgKysiOw0KCQlkbXAo JGNvbWJvcyk7DQoJfQ0KCS8vIENvbnN0cnVjdCB0aGUgb3V0cHV0DQoJJHRodW1ib3V0ID0g YXJyYXkoKTsNCgkkZ3JvdXBvdXQgPSBhcnJheSgpOw0KCSRuYXZvdXQgPSBhcnJheSgpOw0K CSRvdXQgPSBhcnJheSgpOw0KCSRjb2xsYXRpb25zID0gYXJyYXkoKTsNCgkkY2hJZGVudGlm aWVyID0gIm9uY2hhbmdlIjsNCg0KCWlmICgkZGVidWcgPiAyKSB7DQoJCWVjaG8gIisrIFJF Q09SRCBTRVQgKysiOw0KCQlkbXAoJHJzKTsNCgl9DQoJaWYgKCRkZWJ1ZyA+IDMpIHsNCgkJ ZWNobyAiKysgQVZBSUxBQkxFICc/JyBWQVJTICsrIjsNCgkJaWYgKCRwcmV0ZXh0KSBkbXAo JHByZXRleHQpOw0KCQlpZiAoJHRoaXNhcnRpY2xlKSBkbXAoJHRoaXNhcnRpY2xlKTsNCgl9 DQoNCglpZigkcnMpIHsNCgkJJGlkeCA9IDA7DQoJCSRjdHIgPSAxOw0KCQkkdGh1bWJJZHgg PSAwOw0KCQkkdGh1bWJDdHIgPSAxOw0KCQkkbnVtSW1hZ2VzID0gY291bnQoJHJzKTsNCgkJ JHJlcGFnZW1lbnRzID0gYXJyYXkoKTsNCg0KCQkvLyBTZXQgdXAgdGhlIHBhZ2luZyBmZWF0 dXJlcyBpZiByZXF1aXJlZA0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJ CSRuZXh0ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlICE9ICRudW1QYWdlcyk7DQoJ CQkkcHJldiA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSA+IDEpOw0KCQkJJHByZXZQ YWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAk dGh1bVBhZ2UtMSk7DQoJCQkkbmV4dFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSsxKTsNCgkJCSR0aGlzUGFnZSA9IHNt ZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdl KTsNCgkJCSRmaXJzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJp J10sICRnYWxsSUQsIDEpOw0KCQkJJGxhc3RQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0 WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkbnVtUGFnZXMpOw0KDQoJCQkvLyBMYWJlbHMg Y2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgcmVwbGFjZW1lbnQgdGFnIGFmdGVyIGEgcGFyYW1k ZWxpbS4NCgkJCS8vICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBkb24ndCBoYXZlIGxhYmVscy4g QW55dGhpbmcgc3BlY2lmaWVkIGFmdGVyIHBhcmFtZGVsaW0gaXMgdGhlIG1heCBudW1iZXIg b2YgcGFnZXMgdG8gc2hvdzsgZW1wdHkgPSBhbGwgcGFnZXMNCgkJCSRsYWJlbCA9IGFycmF5 KA0KCQkJCQkne25hdmZpcnN0fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4dCgnbmF2Zmlyc3Qn KSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4dCgnbmF2cHJldicp LA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZ0aGlzfScgPT4gJHRo dW1QYWdlLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiAkdGh1bVBhZ2UsDQoJCQkJCSd7bmF2 bGF0ZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZuZXh0fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4 dCgnbmF2bmV4dCcpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAkc21kX2dhbGxMYW5nLT5nVHh0 KCduYXZsYXN0JyksDQoJCQkJKTsNCg0KCQkJJGxhYmVsUkUgPSAnL1x7KG5hdlthLXpdKykn LiRwYXJhbWRlbGltLicoLis/KVx9Lyc7DQoJCQkkbnVtTGFiZWxzID0gcHJlZ19tYXRjaF9h bGwoJGxhYmVsUkUsICRwYWdlZm9ybSwgJGxhYmVscyk7DQoNCgkJCWZvciAoJGxhYmVsQ3Ry ID0gMDsgJGxhYmVsQ3RyIDwgJG51bUxhYmVsczsgJGxhYmVsQ3RyKyspIHsNCgkJCQkkZmll bGRuYW1lID0gJ3snLiRsYWJlbHNbMV1bJGxhYmVsQ3RyXS4nfSc7DQoJCQkJJGxhYmVsWyRm aWVsZG5hbWVdID0gJGxhYmVsc1syXVskbGFiZWxDdHJdOw0KCQkJCSRwYWdlZm9ybSA9IHN0 cl9yZXBsYWNlKCRsYWJlbHNbMF1bJGxhYmVsQ3RyXSwgJ3snLiRsYWJlbHNbMV1bJGxhYmVs Q3RyXS4nfScsICRwYWdlZm9ybSk7DQoJCQl9DQoNCgkJCWlmICgkZGVidWcgPiAxKSB7DQoJ CQkJZWNobyAiKysgUEFHSU5HIExBQkVMUyArKyI7DQoJCQkJZG1wKCRsYWJlbCk7DQoJCQl9 DQoNCgkJCS8vIEdlbmVyYXRlICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBsaXN0cw0KCQkJJG51 bUVhcmxpZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2ZWFybGllcn0nXSk7DQoJCQkkbnVtTGF0 ZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2bGF0ZXJ9J10pOw0KCQkJJG51bUVhcmxpZXIgPSAo JG51bUVhcmxpZXIgJiYgKCR0aHVtUGFnZS0kbnVtRWFybGllciA+IDEpKSA/ICRudW1FYXJs aWVyIDogJHRodW1QYWdlLTE7DQoJCQkkbnVtTGF0ZXIgPSAoJG51bUxhdGVyICYmICgkdGh1 bVBhZ2UrJG51bUxhdGVyIDwgJG51bVBhZ2VzKSkgPyAkbnVtTGF0ZXIgOiAkbnVtUGFnZXMt JHRodW1QYWdlOw0KCQkJJG5hdkVhcmxpZXIgPSAkbmF2TGF0ZXIgPSBhcnJheSgpOw0KCQkJ Zm9yICgkY29kID0gJHRodW1QYWdlLSRudW1FYXJsaWVyOyAkY29kIDwgJHRodW1QYWdlOyAk Y29kKyspIHsNCgkJCQkkbmF2RWFybGllcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFy KCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4nIj4nLiRjb2QuJzwv YT4nOw0KCQkJfQ0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlKzE7ICRjb2QgPD0gJHRodW1Q YWdlKyRudW1MYXRlcjsgJGNvZCsrKSB7DQoJCQkJJG5hdkxhdGVyW10gPSAnPGEgaHJlZj0i Jy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICRjb2Qp LiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQkkbmF2RWFybGllciA9IGRvV3JhcCgkbmF2 RWFybGllciwgJycsICRuYXZicmVhaywgJycpOw0KCQkJJG5hdkxhdGVyID0gZG9XcmFwKCRu YXZMYXRlciwgJycsICRuYXZicmVhaywgJycpOw0KDQoJCQkvLyBNYWtlIHVwIHRoZSByZXBh Z2VtZW50cyBhcnJheSBmb3IgcGFnZWZvcm0NCgkJCSRyZXBhZ2VtZW50cyA9IGFycmF5KA0K CQkJCQkne25hdmZpcnN0fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEgaHJlZj0iJy4kZmly c3RQYWdlLiciPicuJGxhYmVsWyd7bmF2Zmlyc3R9J10uJzwvYT4nLCAkbmF2YnJlYWspIDog ZG9UYWcoJGxhYmVsWyd7bmF2Zmlyc3R9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3MpKSwN CgkJCQkJJ3tuYXZwcmV2fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEgaHJlZj0iJy4kcHJl dlBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZwcmV2fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRv VGFnKCRsYWJlbFsne25hdnByZXZ9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3MpKSwNCgkJ CQkJJ3tuYXZlYXJsaWVyfScgPT4gJG5hdkVhcmxpZXIsDQoJCQkJCSd7bmF2dGhpc30nID0+ IGRvVGFnKCRsYWJlbFsne25hdnRoaXN9J10sICRuYXZicmVhaywgJ2N1cnJlbnQgJy4kZW1w dHljbGFzcyksDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+IGRvVGFnKCc8YSBocmVmPSInLiR0 aGlzUGFnZS4nIj4nLiRsYWJlbFsne25hdnRoaXN1cmx9J10uJzwvYT4nLCAkbmF2YnJlYWss ICdjdXJyZW50JyksDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAkbmF2TGF0ZXIsDQoJCQkJCSd7 bmF2bmV4dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJG5leHRQYWdlLici PicuJGxhYmVsWyd7bmF2bmV4dH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFi ZWxbJ3tuYXZuZXh0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2 bGFzdH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJGxhc3RQYWdlLiciPicu JGxhYmVsWyd7bmF2bGFzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxb J3tuYXZsYXN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2dGhp c3BhZ2V1cmx9JyA9PiAkdGhpc1BhZ2UsDQoJCQkJCSd7bmF2bmV4dHBhZ2V1cmx9JyA9PiAo KCRuZXh0KSA/ICRuZXh0UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZwcmV2cGFnZXVybH0nID0+ ICgoJHByZXYpID8gJHByZXZQYWdlIDogJycpLA0KCQkJCQkne25hdmZpcnN0cGFnZXVybH0n ID0+ICRmaXJzdFBhZ2UsDQoJCQkJCSd7bmF2bGFzdHBhZ2V1cmx9JyA9PiAkbGFzdFBhZ2Us DQoJCQkJCSd7dG90YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0KCQkJCQkne3RvdGFscGFn ZXN9JyA9PiAkbnVtUGFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4gJGFsbEltYWdlcywN CgkJCQkpOw0KDQoJCQkJLy8gUGVyZm9ybSBlc2NhcGluZyBoZXJlLCBqdXN0IHByaW9yIHRv IG91dHB1dA0KCQkJCWlmICgkZXNjYXBlcykgew0KCQkJCQlmb3JlYWNoICgkcmVwYWdlbWVu dHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQkJaWYgKGluX2FycmF5KHRyaW0o JGRlZk5hbWUsICJ7fSIpLCAkZXNjYXBlcykpIHsNCgkJCQkJCQkkcmVwYWdlbWVudHNbJGRl Zk5hbWVdID0gaHRtbHNwZWNpYWxjaGFycygkZGVmVmFsLCBFTlRfUVVPVEVTKTsNCgkJCQkJ CX0NCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCS8vIFBlcmZvcm0gdGhlIHN1YnN0aXR1dGlvbnMN CgkJCQkkbmF2b3V0W10gPSBwYXJzZShzdHJ0cigkcGFnZWZvcm0sICRyZXBhZ2VtZW50cykp Ow0KCQl9DQoNCgkJLy8gRm9yIGV2ZXJ5IGltYWdlIGluIHRoZSBnYWxsZXJ5Li4uDQoJCWZv cmVhY2goJHJzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJaWYgKCRkaXJlY3RvcnkpIHsNCgkJ CQkkdXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS4nLyc7DQoJCQl9IGVsc2Ugew0KCQkJCSR1cmxQ YXRoID0gaHUuJGltZ19kaXIuJy8nOw0KCQkJfQ0KCQkJJHRoZVRodW1iID0gJHVybFBhdGgg LiAkcm93WydpZCddIC4gJHRodW1ibW9kIC4gJHJvd1snZXh0J107DQoJCQkkZnVsbFNpemUg PSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkZnVsbG1vZCAuJHJvd1snZXh0J107DQoNCgkJ CS8vIERvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRodW1iIGNvdW50ZXIgdGhpcyB0aW1lPw0K CQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJ CQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9PT0gMCkgew0KCQkJCQkk aXRlciA9IGV4cGxvZGUoJHBhcmFtZGVsaW0sICRyZXNldE9wdCk7DQoJCQkJCSRpdGVyID0g KGNvdW50KCRpdGVyKSA+IDEpID8gJGl0ZXJbMV0gOiAwOw0KCQkJCQlpZiAoJHRodW1iSWR4 ICUgJGl0ZXIgPT0gMCkgew0KCQkJCQkJJHRodW1iSWR4ID0gMDsNCgkJCQkJCSR0aHVtYkN0 ciA9IDE7DQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKCRyb3dbJHJlc2V0T3B0XSAhPSAkcmVz ZXRWYWwpIHsNCgkJCQkJJHRodW1iSWR4ID0gMDsNCgkJCQkJJHRodW1iQ3RyID0gMTsNCgkJ CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBPdmVycmlkZSB0aHVtYnNpemUgLyBp bWdzaXplIGlmIHJlcXVpcmVkDQoJCQlpZiAoJHRodW1ic2l6ZSkgew0KCQkJCSR0aGVUaHVt YldpZHRoID0gZW1wdHkoJHRodW1iV2lkdGgpID8gJHJvd1sndGh1bWJfdyddIDogJHRodW1i V2lkdGg7DQoJCQkJJHRoZVRodW1iSGVpZ2h0ID0gZW1wdHkoJHRodW1iSGVpZ2h0KSA/ICRy b3dbJ3RodW1iX2gnXSA6ICR0aHVtYkhlaWdodDsNCgkJCQkkdGhlVGh1bWJXVW5pdHMgPSAk dGh1bWJXVW5pdHM7DQoJCQkJJHRoZVRodW1iSFVuaXRzID0gJHRodW1iSFVuaXRzOw0KCQkJ fSBlbHNlIHsNCgkJCQkkdGhlVGh1bWJXaWR0aCA9ICRyb3dbJ3RodW1iX3cnXTsNCgkJCQkk dGhlVGh1bWJIZWlnaHQgPSAkcm93Wyd0aHVtYl9oJ107DQoJCQkJJHRoZVRodW1iV1VuaXRz ID0gJHRoZVRodW1iSFVuaXRzID0gJyc7DQoJCQl9DQoNCgkJCWlmICgkaW1nc2l6ZSkgew0K CQkJCSR0aGVJbWFnZVdpZHRoID0gZW1wdHkoJGltYWdlV2lkdGgpID8gJHJvd1sndyddIDog JGltYWdlV2lkdGg7DQoJCQkJJHRoZUltYWdlSGVpZ2h0ID0gZW1wdHkoJGltYWdlSGVpZ2h0 KSA/ICRyb3dbJ2gnXSA6ICRpbWFnZUhlaWdodDsNCgkJCQkkdGhlSW1hZ2VXVW5pdHMgPSAk aW1hZ2VXVW5pdHM7DQoJCQkJJHRoZUltYWdlSFVuaXRzID0gJGltYWdlSFVuaXRzOw0KCQkJ fSBlbHNlIHsNCgkJCQkkdGhlSW1hZ2VXaWR0aCA9ICRyb3dbJ3cnXTsNCgkJCQkkdGhlSW1h Z2VIZWlnaHQgPSAkcm93WydoJ107DQoJCQkJJHRoZUltYWdlV1VuaXRzID0gJHRoZUltYWdl SFVuaXRzID0gJyc7DQoJCQl9DQoNCgkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1lbnQg YXJyYXkNCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tpZH0nID0+ICRyb3db J2lkJ10sDQoJCQkJCSd7bmFtZX0nID0+ICRyb3dbJ25hbWUnXSwNCgkJCQkJJ3tleHR9JyA9 PiAkcm93WydleHQnXSwNCgkJCQkJJ3tjYXRlZ29yeX0nID0+ICRyb3dbJ2NhdGVnb3J5J10s DQoJCQkJCSd7Y2F0ZWdvcnlfdGl0bGV9JyA9PiAoKGlzc2V0KCRyb3dbJ2NhdGVnb3J5X3Rp dGxlJ10pKSA/ICRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10gOiAnJyksDQoJCQkJCSd7YXV0aG9y fScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9JyA9PiAoaXNzZXQoJHJv d1sndGh1bWJuYWlsJ10pID8gJHJvd1sndGh1bWJuYWlsJ10gOiAwKSwNCgkJCQkJJ3t1cmx9 JyA9PiAkZnVsbFNpemUsDQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhlVGh1bWIsDQoJCQkJ CSd7aW1hZ2VwYXRofScgPT4gJHVybFBhdGgsDQoJCQkJCSd7aW1hZ2VkZWZ9JyA9PiBiYXNl bmFtZSgkZnVsbFNpemUpLA0KCQkJCQkne3RodW1iZGVmfScgPT4gYmFzZW5hbWUoJHRoZVRo dW1iKSwNCgkJCQkJJ3thbHR9JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJJ3t0aXRsZX0nID0+ ICRyb3dbJ2NhcHRpb24nXSwNCgkJCQkJJ3tjYXB0aW9ufScgPT4gJHJvd1snY2FwdGlvbidd LA0KCQkJCQkne3RodW1id2lkdGh9JyA9PiAkdGhlVGh1bWJXaWR0aCwNCgkJCQkJJ3t0aHVt YmhlaWdodH0nID0+ICR0aGVUaHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVtYnd1bml0c30nID0+ ICR0aGVUaHVtYldVbml0cywNCgkJCQkJJ3t0aHVtYmh1bml0c30nID0+ICR0aGVUaHVtYkhV bml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ICR0aGVJbWFnZVdpZHRoLA0KCQkJCQkne2hlaWdo dH0nID0+ICR0aGVJbWFnZUhlaWdodCwNCgkJCQkJJ3t3dW5pdHN9JyA9PiAkdGhlSW1hZ2VX VW5pdHMsDQoJCQkJCSd7aHVuaXRzfScgPT4gJHRoZUltYWdlSFVuaXRzLA0KCQkJCQkne2Rh dGV9JyA9PiAoKCRmb3JtYXQpID8gc2FmZV9zdHJmdGltZSgkZm9ybWF0LCBzdHJ0b3RpbWUo JHJvd1snZGF0ZSddKSwgJGdtdCwgJGxhbmcpIDogJHJvd1snZGF0ZSddKSwNCgkJCQkJJ3tn YWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4fScgPT4gJGlkeCwNCgkJCQkJ J3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0aHVtYmluZGV4fScgPT4gJHRodW1iSWR4 LA0KCQkJCQkne3RodW1iY291bnRlcn0nID0+ICR0aHVtYkN0ciwNCgkJCQkJJ3t0b3RhbGlt YWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4gJGFsbEltYWdl cywNCgkJCQkpOw0KDQoJCQkvLyBBZGQgYW55IGN1c3RvbSBjb2x1bW5zDQoJCQlmb3JlYWNo ICgkZXh0cmFNYXAgYXMgJGVDb2wgPT4gJGVWYWwpIHsNCgkJCQkkcmVwbGFjZW1lbnRzWyd7 Jy4kZVZhbC4nfSddID0gJHJvd1skZUNvbF07DQoJCQl9DQoNCgkJCS8vIEFwcGVuZCBhbnkg Y2hhbmdlZCBpdGVtcyB0aGF0IGFyZSByZXF1aXJlZA0KCQkJJGVuZHRhZyA9IGZhbHNlOw0K CQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJ CQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9PT0gMCkgew0KCQkJCQkk aXRlciA9IGV4cGxvZGUoJHBhcmFtZGVsaW0sICRyZXNldE9wdCk7DQoJCQkJCSRpdGVyID0g KGNvdW50KCRpdGVyKSA+IDEpID8gJGl0ZXJbMV0gOiAwOw0KCQkJCQlpZiAoJHRodW1iQ3Ry ICUgJGl0ZXIgPT09IDAgfHwgJGN0ciA9PSAkbnVtSW1hZ2VzKSB7DQoJCQkJCQkkZW5kdGFn ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCSRyZXBsYWNlbWVudHNbJ3sn LiRjaElkZW50aWZpZXIuJHBhcmFtZGVsaW0uJHJlc2V0T3B0Lid9J10gPSAoJHRodW1iSWR4 ID09IDApID8gZG9UYWcoJHJvd1skcmVzZXRPcHRdLCAkb25jaGFuZ2V3cmFwdGFnLCAkb25j aGFuZ2VjbGFzcykgOiAnJzsNCgkJCQkJLy8gRG8gYSBzbmVha3kgKHl1aykgbG9va2FoZWFk DQoJCQkJCWlmIChpc3NldCgkcnNbJGtleSsxXSkpIHsNCgkJCQkJCWlmKCRyc1ska2V5KzFd WyRyZXNldE9wdF0gIT0gJHJvd1skcmVzZXRPcHRdKSB7DQoJCQkJCQkJJGVuZHRhZyA9IHRy dWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZW5kdGFnID0gdHJ1ZTsgLy8g TGFzdCBpbWFnZQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkkcmVwbGFjZW1lbnRzWyd7 Z3JvdXB0YWdlbmR9J10gPSAoJGdyb3VwdGFnICYmICRlbmR0YWcpID8gJzwvJyAuICRncm91 cHRhZyAuICc+JyA6ICcnOw0KCQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFnc3RhcnR9J10g PSAoJGdyb3VwdGFnICYmICR0aHVtYklkeCA9PSAwKSA/ICc8JyAuICRncm91cHRhZyAuICgo JGdyb3VwY2xhc3MpID8gJyBjbGFzcz0iJy4kZ3JvdXBjbGFzcy4nIicgOiAnJykgLiAnPicg OiAnJzsNCg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21ib3Mg YXMgJGRlZk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0cygk ZGVmTmFtZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVmTmFt ZV0gPSBzdHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoNCgkJ CS8vIFNvbG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJlIGRl dGFpbHMgZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9uDQoJ CQkvLyBtb2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9u IGFuIGFzLW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUgPSAn L1x7KFthLXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19tYXRj aF9hbGwoJHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9IDA7 ICRzb2xvQ3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9 ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZpZWxk ID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNbJGZp ZWxkbmFtZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkvLyBQ ZXJmb3JtIGVzY2FwaW5nIG9uIHRoZSByZXBsYWNlbWVudHMuDQoJCQkvLyBOb3RlIHRoZSBy ZXBhZ2VtZW50cyBoYXZlIGFscmVhZHkgYmVlbiBlc2NhcGVkIHNvIHdoZW4vaWYgdGhleSBh cmUgY29tYmluZWQgd2l0aCB0aGUgcmVwbGFjZW1lbnRzLA0KCQkJLy8gdGhlIGVzY2FwaW5n IGlzIG5vdCBkb25lIHR3aWNlDQoJCQlpZiAoJGVzY2FwZXMpIHsNCgkJCQlmb3JlYWNoICgk cmVwbGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJaWYgKGluX2Fy cmF5KHRyaW0oJGRlZk5hbWUsICJ7fSIpLCAkZXNjYXBlcykpIHsNCgkJCQkJCSRyZXBsYWNl bWVudHNbJGRlZk5hbWVdID0gaHRtbHNwZWNpYWxjaGFycygkZGVmVmFsLCBFTlRfUVVPVEVT KTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQWRkIHRoZSBuYXZpZ2F0aW9uIGl0 ZW1zIGlmIHRoZXkncmUgZGVmaW5lZA0KCQkJaWYgKGNvdW50KCRyZXBhZ2VtZW50cykgPiAw KSB7DQoJCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5X21lcmdlKCRyZXBhZ2VtZW50cywgJHJl cGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3QgcmVx dWlyZWQgdGhpcyB0aW1lPw0KCQkJJG9iamVjdCA9ICcnOw0KCQkJaWYgKCR0aHVtYklkeCA+ PSAkdGh1bWJvZmZzZXQgJiYgJHRodW1iSWR4IDwgJHRodW1ib2Zmc2V0KyR0aHVtYmxpbWl0 KSB7DQoJCQkJJG9iamVjdCA9ICgkb2JqZWN0Zm9ybSkgPyBwYXJzZShzdHJ0cigkb2JqZWN0 Zm9ybSwgJHJlcGxhY2VtZW50cykpIDogKCgkdGV4dCkgPyAkdGV4dCA6ICc8aW1nIHNyYz0i Jy4kdGhlVGh1bWIuJyInIC4oKCRyb3dbJ2FsdCddKSA/ICcgYWx0PSInLiRyb3dbJ2FsdCdd LiciJyA6ICcnKSAuKCgkdGhlVGh1bWJXaWR0aCkgPyAnIHdpZHRoPSInLiR0aGVUaHVtYldp ZHRoLiR0aGVUaHVtYldVbml0cy4nIicgOiAnJykgLigoJHRoZVRodW1iSGVpZ2h0KSA/ICcg aGVpZ2h0PSInLiR0aGVUaHVtYkhlaWdodC4kdGhlVGh1bWJIVW5pdHMuJyInIDogJycpIC4n IC8+Jyk7DQoJCQl9DQoJCQkkcmVwbGFjZW1lbnRzWyd7b2JqZWN0fSddID0gJG9iamVjdDsN Cg0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgOiBJ TUFHRSAiLiRjdHIuIiArKyI7DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJ CQkvLyBDaGVjayBpZiBjb3VudGZvcm0gaXMgdG8gYmUgY2FsbGVkDQoJCQkkY291bnRwcmUg PSAkY291bnRwb3N0ID0gYXJyYXkoKTsNCgkJCWlmICgkY291bnRpbmcpIHsNCgkJCQlmb3Jl YWNoICgkY291bnRmb3JtIGFzICRjb3VudGxpc3QpIHsNCgkJCQkJJHBvc292ZXIgPSBhcnJh eSgpOw0KCQkJCQkkY291bnRsaXN0ID0gc3RydHIoJGNvdW50bGlzdCwgJHJlcGxhY2VtZW50 cyk7IC8vIFJlcGxhY2UgYW55IHt9IHZhcnMgd2l0aCB0aGVpciByZWFsIHZhbHVlcw0KCQkJ CQkkY291bnRsaXN0ID0gZG9fbGlzdCgkY291bnRsaXN0LCAkcGFyYW1kZWxpbSk7DQoJCQkJ CWlmICgkZHBvcz1hcnJheV9zZWFyY2goJ3NtZF9hYm92ZScsICRjb3VudGxpc3QpKSB7DQoJ CQkJCQkkcG9zb3ZlcltdID0gImFib3ZlIjsNCgkJCQkJCXVuc2V0KCRjb3VudGxpc3RbJGRw b3NdKTsNCgkJCQkJfQ0KCQkJCQlpZiAoJGRwb3M9YXJyYXlfc2VhcmNoKCdzbWRfYmVsb3cn LCAkY291bnRsaXN0KSkgew0KCQkJCQkJJHBvc292ZXJbXSA9ICJiZWxvdyI7DQoJCQkJCQl1 bnNldCgkY291bnRsaXN0WyRkcG9zXSk7DQoJCQkJCX0NCgkJCQkJJGNvdW50bGlzdCA9IGFy cmF5X21lcmdlKCRjb3VudGxpc3QpOyAvLyByZS1pbmRleA0KDQoJCQkJCSRwb3NvdmVyID0g KGVtcHR5KCRwb3NvdmVyKSkgPyAkY291bnRwb3NucyA6ICRwb3NvdmVyOw0KCQkJCQkkZGl2 YnkgPSBmYWxzZTsNCgkJCQkJaWYgKCRjb3VudGxpc3RbMF0gPT0gJ3NtZF9ldmVyeScpIHsN CgkJCQkJCSRkaXZieSA9IHRydWU7DQoJCQkJCQlhcnJheV9zaGlmdCgkY291bnRsaXN0KTsN CgkJCQkJfQ0KCQkJCQkkbnVtZm9ybXMgPSBjb3VudCgkY291bnRsaXN0KTsNCgkJCQkJJGNh bGxmb3JtID0gZmV0Y2hfZm9ybSgkY291bnRsaXN0WyRudW1mb3Jtcy0xXSk7DQoJCQkJCXVu c2V0KCRjb3VudGxpc3RbJG51bWZvcm1zLTFdKTsNCgkJCQkJJG9ybG9naWMgPSAkYW5kbG9n aWMgPSBhcnJheSgpOw0KCQkJCQlmb3JlYWNoICgkY291bnRsaXN0IGFzICRjdXN0Y291bnQp IHsNCgkJCQkJCSRzaG93dmFsID0gKHN0cnBvcygkY3VzdGNvdW50LCAiISIpID09PSAwKSA/ IGZhbHNlIDogdHJ1ZTsvLyBOZWdhdGl2ZSBsb2dpYyByZXF1aXJlZA0KCQkJCQkJJGN1c3Rj b3VudCA9IHN0cl9yZXBsYWNlKCchJywgJycsICRjdXN0Y291bnQpOw0KCQkJCQkJaWYgKCRz aG93dmFsKSB7DQoJCQkJCQkJJG9ybG9naWNbXSA9IGVtcHR5KCRjdXN0Y291bnQpIHx8ICgo JGRpdmJ5KSA/ICgoJGN0ciAlICRjdXN0Y291bnQgPT09IDApID8gdHJ1ZSA6IGZhbHNlKSA6 ICgoJGN1c3Rjb3VudCA9PSAkY3RyKSA/IHRydWUgOiBmYWxzZSkpOw0KCQkJCQkJfSBlbHNl IHsNCgkJCQkJCQkkYW5kbG9naWNbXSA9ICgkY3VzdGNvdW50ID09ICRjdHIpID8gZmFsc2Ug OiB0cnVlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWlmIChpbl9hcnJheSgnMScsICRvcmxv Z2ljKSAmJiAhaW5fYXJyYXkoJzAnLCAkYW5kbG9naWMpKSB7DQoJCQkJCQlpZiAoaW5fYXJy YXkoImFib3ZlIiwgJHBvc292ZXIpKSB7DQoJCQkJCQkJJGNvdW50cHJlW10gPSBwYXJzZShz dHJ0cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsNCgkJCQkJCX0NCgkJCQkJCWlmIChp bl9hcnJheSgiYmVsb3ciLCAkcG9zb3ZlcikpIHsNCgkJCQkJCQkkY291bnRwb3N0W10gPSBw YXJzZShzdHJ0cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsNCgkJCQkJCX0NCgkJCQkJ fQ0KICAgICAgICAgICAgfQ0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMCAmJiAoJGNvdW50 cHJlIHx8ICRjb3VudHBvc3QpKSB7DQoJCQkJZWNobyAiKysgQ09VTlQgRk9STSBUUklHR0VS RUQgKysiOw0KCQkJCWlmICgkY291bnRwcmUpIHsNCgkJCQkJZG1wKCRjb3VudHByZSk7DQoJ CQkJfQ0KCQkJCWlmICgkY291bnRwb3N0KSB7DQoJCQkJCWRtcCgkY291bnRwb3N0KTsNCgkJ CQl9DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBh cnNlZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJh eSBvZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAo JHJlcGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRp b25zWyRkZWZOYW1lXVtdID0gJGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlm ICgkY291bnRpbmcpIHsNCgkJCQkJJHRodW1ib3V0ID0gYXJyYXlfbWVyZ2UoJHRodW1ib3V0 LCAkY291bnRwcmUpOw0KCQkJCX0NCg0KCQkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIo JHRoaW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoNCgkJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJ CSR0aHVtYm91dCA9IGFycmF5X21lcmdlKCR0aHVtYm91dCwgJGNvdW50cG9zdCk7DQoJCQkJ fQ0KCQkJfQ0KDQoJCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHZhbHVlcyBzbyB3 ZSBrbm93IGlmIHRoZXkgY2hhbmdlIG5leHQgdGltZQ0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0 cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRP cHQsICdzbWRfZXZlcnknKSA9PT0gZmFsc2UpIHsNCgkJCQkJJHJlc2V0T3B0c1skcmVzZXRP cHRdID0gJHJvd1skcmVzZXRPcHRdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRyZXNldE9wdHNb JHJlc2V0T3B0XSA9ICR0aHVtYkN0cjsNCgkJCQl9DQoJCQl9DQoJCQkkdGh1bWJJZHgrKzsN CgkJCSR0aHVtYkN0cisrOw0KCQkJJGlkeCsrOw0KCQkJJGN0cisrOw0KCQl9DQoJCWlmICgk Y29sbGF0ZSkgew0KCQkJZm9yZWFjaCAoJGNvbGxhdGlvbnMgYXMgJGl0ZW0gPT4gJGxpc3Qp IHsNCgkJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJCQkkbGlzdCA9IChl bXB0eSgkZGJsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkZGJsUXVvdGUpKSA/IGRvQXJy YXkoJGxpc3QsICdzbWRfZG9EYmxRdW90ZScpIDogJGxpc3Q7DQoJCQkJJGxpc3QgPSAoZW1w dHkoJHNnbFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJHNnbFF1b3RlKSkgPyBkb0FycmF5 KCRsaXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkJJGNvbGxhdGlvbnNbJGl0ZW1dID0g aW1wbG9kZSgkY29sbGF0ZWRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlpZiAoJGRlYnVnID4g MCkgew0KCQkJCWVjaG8gIisrIENPTExBVElPTlMgKysiOw0KCQkJCWRtcCgkY29sbGF0aW9u cyk7DQoJCQl9DQoJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJGNvbGxh dGlvbnMpKTsNCgkJfQ0KDQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBmcm9tIGVhcmxpZXIg aWYgaXQncyB0byBnbyBhZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2lu Zykgew0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgUkVQTEFD RU1FTlRTICsrIjsNCgkJCQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0NCgkJfQ0KCX0NCg0K CS8vIEFkZCB0aGUgcGFnaW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0byBnbyBhYm92ZSB0 aGUgdGh1bWJzDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9h cnJheSgiYWJvdmUiLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0 LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCgkkb3V0W10gPSBk b1dyYXAoJHRodW1ib3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycs ICRodG1sX2lkKTsNCg0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQlpZiAo aW5fYXJyYXkoImJlbG93IiwgJHBhZ2VvdXQpKSB7DQoJCQkkb3V0W10gPSBkb1dyYXAoJG5h dm91dCwgJG5hdndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQl9DQoJfQ0KDQoJaWYgKCRk ZWJ1ZyA+IDIpIHsNCgkJZWNobyAiKysgRklOQUwgT1VUUFVUICsrIjsNCgkJZG1wKCRvdXQp Ow0KCX0NCg0KCXJldHVybiBqb2luKCIgIiwgJG91dCk7DQp9DQoNCi8vIFdvcmsgb3V0IHdo aWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGlu Zm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0 LCAkcGFnaW5nKSB7DQoJJG51bVRodW1zID0gY291bnQoJHJzKSAtICRvZmZzZXQ7DQoJaWYg KCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCSRudW1QYWdlcyA9ICgkbnVtVGh1bXMg PiAwKSA/IGNlaWwoJG51bVRodW1zLyRsaW1pdCkgOiAxOw0KCQkkdGh1bVBhZ2UgPSAoIWdw cygkZ2FsbElEKSkgPyAxIDogZ3BzKCRnYWxsSUQpOw0KCQkkb2Zmc2V0ID0gKCgkdGh1bVBh Z2UgLSAxKSAqICRsaW1pdCkgKyAkb2Zmc2V0Ow0KCX0gZWxzZSB7DQoJCS8vIE5vIHBhZ2lu ZyByZXF1aXJlZA0KCQkkbnVtUGFnZXMgPSAxOw0KCQkkdGh1bVBhZ2UgPSAxOw0KCX0NCgly ZXR1cm4gYXJyYXkoJG51bVRodW1zLCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCk7 DQp9DQoNCi8vIFJlYWQgdGhlIGdpdmVuIGRlbGltaXRlZCBkaXJlY3RvcmllcyBhbmQgZ2V0 IGFsbCBmaWxlcyB0aGF0IG1hdGNoLg0KLy8gR28gZG93biBhcyBtYW55IHN1YmRpciBsZXZl bHMgYXMgZ2l2ZW4gaW4gdGhlICRzdWIgcGFyYW1ldGVyDQpmdW5jdGlvbiBzbWRfZG9EaXJl Y3RvcnkoJGxzdCwgJGx2bD0wLCAkc3ViPTAsICRtYXRjaD0iIiwgJGRsbT0iLCIsICRzcGM9 MSwgJGN0cj0wKSB7DQoJbGlzdCgkZGlyaW5jLCAkZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxz dCwgZmFsc2UsICRzdWIsIGZhbHNlLCAkZGxtLCAkc3BjKTsNCglsaXN0KCRtYXRjaGluYywg JG1hdGNoZXhjKSA9IHNtZF9kb0xpc3QoJG1hdGNoLCBmYWxzZSwgJycsIGZhbHNlLCAkZGxt LCAkc3BjKTsNCgkkbWF0Y2hpbmMgPSAiLioiIC4oKCRtYXRjaGluYykgPyAiKCIgLmltcGxv ZGUoInwiLCRtYXRjaGluYykuIikrLioiIDogIiIpOw0KCSRtYXRjaGV4YyA9ICgkbWF0Y2hl eGMpID8gIi4qKCIgLmltcGxvZGUoInwiLCRtYXRjaGV4YykuIikrLioiIDogInNtZF9nbHJ5 XyIubXRfcmFuZCgpOw0KDQoJJHN1YiA9IChlbXB0eSgkc3ViKSkgPyAwIDogJHN1YjsNCgkk c3ViID0gKHN0cnRvbG93ZXIoJHN1Yik9PSJhbGwiKSA/IDk5OTk5IDogJHN1YjsNCgkkZmls ZUxpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRkaXJpbmMgYXMgJGRpcikgew0KCQlpZiAo JGhhbmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB7DQoJCQl3aGlsZSAoKCRmaWxlID0gQHJlYWRk aXIoJGhhbmRsZSkpICE9PSBmYWxzZSkgew0KCQkJCSRmdWxscGF0aCA9ICRkaXIuRFMuJGZp bGU7DQoJCQkJaWYgKHByZWdfbWF0Y2goIi8iLiRtYXRjaGluYy4iLyIsICRmdWxscGF0aCkg JiYgIXByZWdfbWF0Y2goIi8iLiRtYXRjaGV4Yy4iLyIsICRmdWxscGF0aCkpIHsNCgkJCQkJ aWYgKGlzX2RpcigkZnVsbHBhdGgpKSB7DQoJCQkJCQlpZiAoKCRmaWxlID09ICIuIikgfHwg KCRmaWxlPT0gIi4uIikgfHwgKGluX2FycmF5KCRmaWxlLCAkZGlyZXhjKSkgfHwgKCRsdmwg Pj0gJHN1YikpIHsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJ Ly8gUmVjdXJzZSB0aGUgc3ViZGlyLiBOb3RlIHRoYXQgdGhlICchJyBpcyB0ZW1wb3Jhcmls eSBhZGRlZCBiYWNrIHRvIGVhY2ggZGlyZXhjIGl0ZW0NCgkJCQkJCQkkdG1wID0gJGRpcmV4 YzsgLy8gRG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBhcnJheQ0KCQkJCQkJCWFycmF5 X3Vuc2hpZnQoJHRtcCwgJGZ1bGxwYXRoKTsNCgkJCQkJCQkkc3ViRmlsZXMgPSBzbWRfZG9E aXJlY3RvcnkoaW1wbG9kZSgkZGxtLiIhIiwgJHRtcCksICRsdmwrMSwgJHN1YiwgJG1hdGNo LCAkZGxtLCAkc3BjLCAkY3RyKTsNCgkJCQkJCQkkZmlsZUxpc3QgPSBhcnJheV9tZXJnZSgk ZmlsZUxpc3QsICRzdWJGaWxlcyk7DQoJCQkJCQkJJGN0ciArPSBjb3VudCgkc3ViRmlsZXMp Ow0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZp bGVzdGF0ID0gc3RhdCgkZnVsbHBhdGgpOw0KCQkJCQkJJGltZ3NpemUgPSBnZXRpbWFnZXNp emUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsncGF0aCddID0gJGRpcjsN CgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnbmFtZSddID0gYmFzZW5hbWUoJGZ1bGxwYXRoKTsN CgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaWQnXSA9IHByZWdfcmVwbGFjZSgnL1wuLiskLycs ICcnLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2FsdCddID0gJyc7DQoJCQkJ CQkkZmlsZUxpc3RbJGN0cl1bJ2NhcHRpb24nXSA9ICcnOw0KCQkJCQkJJHBhcnRzID0gZXhw bG9kZShEUywgJGRpcik7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhdGVnb3J5J10gPSAo Y291bnQoJHBhcnRzKSA+IDEpID8gZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlz dFskY3RyXVsnYXV0aG9yJ10gPSBzdHJ2YWwoJGZpbGVzdGF0Wyd1aWQnXSk7DQoJCQkJCQkk ZmlsZUxpc3RbJGN0cl1bJ2RhdGUnXSA9IHN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIs ICRmaWxlc3RhdFsnY3RpbWUnXSk7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKCIuIiwgJGZp bGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydleHQnXSA9IChjb3VudCgkcGFydHMpID4g MSkgPyAiLiIuZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsndydd ID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMF0pIDogJyc7DQoJ CQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2gnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3Ry dmFsKCRpbWdzaXplWzFdKSA6ICcnOw0KCQkJCQl9DQoJCQkJCSRjdHIrKzsNCgkJCQl9DQoJ CQl9DQoJCX0NCgkJaWYgKCRoYW5kbGUpIHsNCgkJCUBjbG9zZWRpcigkaGFuZGxlKTsNCgkJ fQ0KCX0NCglyZXR1cm4gJGZpbGVMaXN0Ow0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToi b3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6NTU3OTQ6 IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxlcnk8L2gxPgoK CTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRz IGFsbCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxsZXJ5IHNjcmlwdHMgaW5j bHVkaW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwgbGlnaHRib3gsIGxpdGVib3gs IHNsaW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNob3csIGZhbmN5em9vbSwgZXRj PC9saT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gZGF0YWJhc2UgdGhhdCBtYXRjaCBjYXRlZ29yaWVzLCBJRHMsIGF1dGhvciwg ZXh0ZW5zaW9uIG9yIHBhcnRpY3VsYXIgZGltZW5zaW9ucyAvIGFzcGVjdCByYXRpb3M8L2xp PgoJCTxsaT5Vc2UgYXJ0aWNsZSBmaWVsZHMgdG8gaG9sZCBsaXN0cyBvZiBpbWFnZSBjYXRl Z29yaWVzL0lEcyBmb3IgYXJ0aWNsZS1zcGVjaWZpYyBnYWxsZXJpZXM8L2xpPgoJCTxsaT5N dWx0aS1sZXZlbCBzdWItY2F0ZWdvcnkgc3VwcG9ydDwvbGk+CgkJPGxpPkdhbGxlcnkgbGF5 b3V0IGlzIGRlZmluZWQgaW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3Jt L2NvbnRhaW5lcjwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBw b3J0ZWQgYW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZlYXR1cmVzIGNhbiBiZSBjb250cm9s bGVkIGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxsaT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50 IHN5c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc3VwcG9ydDwvbGk+Cgk8L3VsPgoKCTxo MiBpZD0iYXV0aG9yIj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBGb3Igb3RoZXIgc29mdHdh cmUgYnkgbWUsIG9yIHRvIG1ha2UgYSBkb25hdGlvbiwgc2VlIHRoZSA8YSBocmVmPSJodHRw Oi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9 Imluc3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFz cz0icmVxdWlyZWQiPlJlcXVpcmVzIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQu Mi4wKyBhbmQgc21kX2xpYiB2MC4zNis8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBm cm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3 L3NtZF9nYWxsZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgc29mdHdhcmUgcGFn ZSBhYm92ZSwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUg dGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVy bi5jb20vdmlld3RvcGljLnBocD9pZD0yNjQ4MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9y ZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhl IHBsdWdpbi48L3A+CgoJPHA+VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUg aXQgZnJvbSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgdGFiLiBJZiBubyBvdGhlciBwbHVnaW5z IGFyZSB1c2luZyBzbWRfbGliIHlvdSBtYXkgc2FmZWx5IGRlbGV0ZSB0aGF0IHRvby48L3A+ CgoJPGgyIGlkPSJ1c2FnZSI+T3ZlcnZpZXc8L2gyPgoKCTxwPlRoZSBnZW5lcmFsIGlkZWEg aXMgdGhhdCB0aGlzIHBsdWdpbiBhY3RzIGFzIGEgZmxleGlibGUgaW1hZ2UgZmlsdGVyOyBu b3RoaW5nIG1vcmUuIFRoZSBwbHVnaW4gb3B0aW9ucyBnb3Zlcm4gd2hpY2ggaW1hZ2VzIGFy ZSBwdWxsZWQgb3V0IG9mIHRoZSBkYXRhYmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8g d2hhdGV2ZXIgb3JkZXIgeW91IGxpa2UuPC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1h Z2UgJiM4MjEyOyBvbmUgYnkgb25lICYjODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBw YXNzZWQgdGhyb3VnaCB0aGUgY29udGFpbmVyIG9yIDxjb2RlPmZvcm08L2NvZGU+IG9mIHlv dXIgY2hvaWNlOyB5b3Ugc2ltcGx5IGNob29zZSB0byBkaXNwbGF5IHdoaWNoZXZlciBpbWFn ZSBhdHRyaWJ1dGVzIHlvdSBsaWtlIGluIHRoaXMgZm9ybS4gVGhpcyBtZWFucyBhbnkgaW1h Z2UgYXR0cmlidXRlcyBjYW4gYmUgJiM4MjIwO2luamVjdGVkJiM4MjIxOyBkaXJlY3RseSBp bnRvIGFueSBtYXJrdXA7IGl0IGNvdWxkIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IHRhZ3MsIGl0IGNvdWxkIGJlIGNvbnRlbnQsIGl0IGNvdWxkIGJlIGphdmFzY3JpcHQs IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+OyBhbnl0aGluZy48L3A+CgoJPHA+ UGFnaW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXksIGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5 IGhvdyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlvdXIgaW1hZ2UgZ2FsbGVyaWVzLjwvcD4K Cgk8cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCAmIzgyMjA7Y29sbGF0ZSYjODIyMTsgbW9k ZSB0aGF0IGFsbG93cyB5b3UgdG8gY29sbGVjdCBhbGwgaW1hZ2UgYXR0cmlidXRlcyB0b2dl dGhlciBpbnRvIGEgc2VyaWVzIG9mIGJpZyBsb25nIGxpc3RzIDxlbT53aXRob3V0PC9lbT4g Y2FsbGluZyB0aGUgZm9ybSBldmVyeSB0aW1lLiBUaGUgZm9ybS9jb250YWluZXIgaXMgdGhl biBvbmx5IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQuPC9wPgoKCTxwPkJldHdlZW4gdGhl c2UgdHdvIG1vZGVzIHlvdSBzaG91bGQgYmUgYWJsZSB0byByZWFsaXNlIGFueSBnYWxsZXJ5 aW5nIHNvbHV0aW9uOyBub3cgYW5kIGluIGZ1dHVyZS48L3A+CgoJPGgyIGNsYXNzPSJ0YWcg IiBpZD0ic21kX2dhbGxlcnkiPnNtZF9nYWxsZXJ5PC9oMj4KCgk8cCBjbGFzcz0idGFnLXN1 bW1hcnkiPlBsYWNlIG9uZSBvciBtb3JlIHNtZF9nYWxsZXJ5IHRhZ3MgaW4gYW4gYXJ0aWNs ZSwgcGFnZSBvciBmb3JtLCBhbmQgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlv bnMgdG8gY29uZmlndXJlIGl0LiBUaGUgYXR0cmlidXRlcyBhcmUgZ3JvdXBlZCBieSBmdW5j dGlvbiB0byBtYWtlIGl0IGVhc2llciBvbiB5b3VyIGV5ZXMgLyBzYW5pdHkuPC9wPgoKCTxo MyBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDM+CgoJPGg0PkZpbHRlcnM8L2g0PgoK CTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1h Z2UgSURzIHRvIGRpc3BsYXkuIE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMsIGZvciBleGFt cGxlIDxjb2RlPmlkPSZxdW90OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFi IGltYWdlcyA1LCA4LCA5LCAxMCwgMTEgYW5kIDQyLiBVc2UgJiM4MjE2OyEmIzgyMTc7IGlu IGZyb250IG9mIGEgbnVtYmVyIG9yIHJhbmdlIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzLiBV c2UgJiM4MjE2Oz8mIzgyMTc7IGFuZCB0aGUgbmFtZSBvZiBhIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGZpZWxkIHRvIHJlYWQgdGhlIGxpc3Qgb2YgaW1hZ2UgSURzIGZyb20g dGhhdCBmaWVsZCwgZS5nLiA8Y29kZT5pZD0/YXJ0aWNsZV9pbWFnZSZxdW90OzwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogbGlzdCBv ZiBpbWFnZSBjYXRlZ29yaWVzIHRvIGRpc3BsYXkuIFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1u YW1lIGNhdGVnb3JpZXMgKGUuZy4gJiM4MjIwO2FuaW1hbHMmIzgyMjE7KSBvciBhJiM4MjE3 Oz8mIzgyMTc7IGZvbGxvd2VkIGJ5IGFuIGFydGljbGUgZmllbGQgbmFtZS4gZS5nLiA8Y29k ZT5jYXRlZ29yeT0mcXVvdDthbmltYWxzLCBhcnQtP3RoaXNpZCZxdW90OzwvY29kZT4gd291 bGQgZ3JhYiBhbGwgaW1hZ2VzIGZyb20gY2F0ZWdvcnkgJiM4MjIwO2FuaW1hbHMmIzgyMjE7 IGFuZCBjYXRlZ29yeSAmIzgyMjA7YXJ0LTQyJiM4MjIxOyAoYXNzdW1pbmcgdGhlIGN1cnJl bnQgYXJ0aWNsZSBoYXMgYW4gaWQgb2YgNDIpLiBVc2UgJiM4MjE2OyEmIzgyMTc7IHRvIDxl bT5leGNsdWRlPC9lbT4gdGhlIGdpdmVuIGNhdGVnb3J5IG9yIGZpZWxkLjxkaXYgY2xhc3M9 ImJyZWFrIj5GaWVsZHMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBsaXN0cyBvZiBjYXRlZ29y aWVzLiBUaGUgJiM4MjE2Oz8mIzgyMTc7IGZpZWxkIG5hbWVzIG1heSBiZSBjb21iaW5lZCAo ZS5nLiA/cy0/YXJ0aWNsZV9pbWFnZSkgYnV0IGJlIGF3YXJlIHRoYXQgY3VzdG9tIGZpZWxk IG5hbWVzIG1heSBjb250YWluIHNwYWNlcyBpZiA8Y29kZT5zdHJpY3RmaWVsZHM9JnF1b3Q7 MCZxdW90OzwvY29kZT48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3Vi bGV2ZWw8L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgy MTY7bGV2ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdv cnkuIDxjb2RlPnN1YmxldmVsPSZxdW90OzAmcXVvdDs8L2NvZGU+ICh0aGUgZGVmYXVsdCkg aXMgb25seSB0aGUgdG9wLWxldmVsOyAxID0gdG9wLWxldmVsIHBsdXMgdGhlIDFzdCBzdWIt Y2F0OyAyID0gdG9wLWxldmVsIHBsdXMgdGhlIG5leHQgMiBzdWItY2F0cywgYW5kIHNvIG9u LiA8Y29kZT5zdWJsZXZlbD0mcXVvdDthbGwmcXVvdDs8L2NvZGU+IGlzIGFsbCBzdWItY2F0 czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5hdXRob3I8L3NwYW4+IDogZmlsdGVy IGltYWdlcyBieSB0aGlzIGxpc3Qgb2YgYXV0aG9yIGxvZ2luIG5hbWVzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmV4dGVuc2lvbjwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5 IHRoaXMgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgKHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90 KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5hc3BlY3Q8L3NwYW4+IDogZmlsdGVy IGltYWdlcyBieSB0aGlzIGxpc3Qgb2YgYXNwZWN0IHJhdGlvcy4gQ2hvb3NlIGZyb20gYW55 IG9mIDxjb2RlPnBvcnRyYWl0PC9jb2RlPiwgPGNvZGU+bGFuZHNjYXBlPC9jb2RlPiBvciA8 Y29kZT5zcXVhcmU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpbWVu c2lvbnM8L3NwYW4+IDogZmlsdGVyIGltYWdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gZGltZW5z aW9ucy4gU3BlY2lmeSB1cCB0byB0d28gdmFsdWVzLiBUaGUgZmlyc3QgaXMgdGhlIHdpZHRo IGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBoZWlnaHQuIElmIHlvdSB3aXNoIHRvIHNwZWNpZnkg bWluaW11bSBvciBtYXhpbXVtIGRpbWVuc2lvbnMsIGFkZCA8Y29kZT4mZ3Q7PC9jb2RlPiwg PGNvZGU+Jmd0Oz08L2NvZGU+LCA8Y29kZT4mbHQ7PC9jb2RlPiBvciA8Y29kZT4mbHQ7PTwv Y29kZT4gYmVmb3JlIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsIDxjb2RlPmRpbWVuc2lvbnM9 JnF1b3Q7Jmd0Oz0xMDI0LCAmZ3Q7PTc2OCZxdW90OzwvY29kZT4gd291bGQgb25seSBzaG93 IGltYWdlcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTAyNCAmIzIxNTsgNzY4IHBpeGVs czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IHJlLW9yZGVy IHRoZSBpbWFnZXMgYnkgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxj b2RlPm5hbWU8L2NvZGU+LCA8Y29kZT5kYXRlPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+ICh0 aGUgZGVmYXVsdCBpZiB1c2luZyBhbiBpZCksIGZpbGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lv biwgPGNvZGU+YWx0PC9jb2RlPiwgPGNvZGU+Y2FwdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhv cjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNv ZGU+dGh1bWJfd2lkdGg8L2NvZGU+LCA8Y29kZT50aHVtYl9oZWlnaHQ8L2NvZGU+LCA8Y29k ZT5oYXN0aHVtYjwvY29kZT4gaW4gZWl0aGVyIDxjb2RlPmFzYzwvY29kZT5lbmRpbmcgb3Ig PGNvZGU+ZGVzYzwvY29kZT5lbmRpbmcgb3JkZXIuIFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0 OiA8Y29kZT5maXhlZDwvY29kZT4gbWFpbnRhaW5zIHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVk IGluIHRoZSBpZCBhbmQvb3IgY2F0ZWdvcnkgYXR0cmlidXRlLCB3aGlsZSA8Y29kZT5yYW5k b208L2NvZGU+IHNodWZmbGVzIHRoZSBvcmRlci48ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0 aGF0IGlmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBwZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBp biB0aGUgbGlzdCwgcmFuZG9tIGltYWdlcyB3aWxsIGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRh YmFzZSBhbmQgdGhleSB3aWxsIHRoZW4gYmUgc29ydGVkIGFjY29yZGluZyB0byB0aGUgb3Jk ZXIgbGlzdGVkIGFmdGVyIGl0LiBJZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYW55 d2hlcmUgZWxzZSBpbiB0aGUgbGlzdCwgYW55IHNvcnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwg ZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiBkYXRhIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwg YW5kIHRoZSByZXN1bHRzIHdpbGwgdGhlbiBiZSBvcmRlcmVkIHJhbmRvbWx5LiBJbiB0aGUg Mm5kIGNhc2UsIGFueSBpdGVtcyBsaXN0ZWQgYWZ0ZXIgJiM4MjE2O3JhbmRvbSYjODIxNzsg d2lsbCBiZSBpZ25vcmVkLCBidXQgPGNvZGU+Zml4ZWQ8L2NvZGU+IGlzIHN0aWxsIGhvbm91 cmVkPC9kaXY+PC9saT4KCTwvdWw+CgoJPGg0PkxpbWl0cyAvIG9mZnNldHMgLyBzaXplczwv aDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+IDogdGhl IG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBzaG93IDxlbT5wZXIgcGFnZTwvZW0+LiAw ICh0aGUgZGVmYXVsdCkgb3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5tYXhsaW1pdDwvc3Bhbj4gOiB0aGUgYWJzb2x1dGUgbWF4aW11bSBu dW1iZXIgb2YgaW1hZ2UgdG8gcHVsbCBmcm9tIHRoZSBkYXRhYmFzZS4gTXVzdCBiZSBncmVh dGVyIHRoYW4gMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+ IDogc2tpcCB0aGlzIG1hbnkgaW1hZ2VzIGFuZCBzdGFydCBkaXNwbGF5aW5nIHRoZW0gdGhl cmVhZnRlcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYmxpbWl0PC9zcGFu PiA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHVtYm5haWxzIHRvIHNob3cuIDAgb3Igb21p dHRlZCA9IGFsbCB0aHVtYnMuIE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSBsaW1pdDsg eW91IGNhbiBsYXVuY2ggYSAyMC1pbWFnZSBnYWxsZXJ5IGJ1dCBvbmx5IHNob3cgMSB0aHVt Ym5haWwgb24gdGhlIHBhZ2UuIEJlIGF3YXJlIHRoYXQgaWYgeW91IGFyZSBzaG93aW5nIG11 bHRpcGxlIGNhdGVnb3JpZXMgZnJvbSBhIHNpbmdsZSB0YWcsIHlvdSB3aWxsIHNlZSA8Y29k ZT50aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5haWxzIDxlbT5hdCBlYWNoIGNoYW5nZSBpbiBj YXRlZ29yeTwvZW0+LiBJZiB5b3UgZG9uJiM4MjE3O3Qgd2FudCB0aGlzLCBzZXQgPGNvZGU+ b25jaGFuZ2U8L2NvZGU+IHRvIHNvbWV0aGluZyBlbHNlLiBTZWUgdGhlIDxjb2RlPntvYmpl Y3R9PC9jb2RlPiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZzwvYT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJvZmZzZXQ8L3NwYW4+IDogc2tp cCB0aGlzIG1hbnkgdGh1bWJzIGJlZm9yZSBkaXNwbGF5aW5nIDxjb2RlPnRodW1ibGltaXQ8 L2NvZGU+IHRodW1ibmFpbHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJz aXplPC9zcGFuPiA6IHRha2VzIG9uZSBvciB0d28gY29tbWEtc2VwYXJhdGVkIG51bWJlcnMg dG8gc3BlY2lmeSB3aWR0aCBhbmQvb3IgaGVpZ2h0IG9mIGFsbCB5b3VyIGdhbGxlcnkgdGh1 bWJuYWlscy4gVGhlIGRlZmF1bHQgaXMgaW4gcGl4ZWxzIGlmIHlvdSBkb24mIzgyMTc7dCBz cGVjaWZ5IHVuaXRzLiBNaXNzaW5nIG91dCBvbmUgb3IgdGhlIG90aGVyIHBhcmFtZXRlciAo aS5lLiBoYXZpbmcgYW4gJiM4MjIwO2VtcHR5JiM4MjIxOyBwYXJhbWV0ZXIgYmVmb3JlIG9y IGFmdGVyIHRoZSBjb21tYSkgd2lsbCBvbmx5IHNldCBvbmUgb2YgdGhlIGRpbWVuc2lvbnMu IFVzZSBhIHNpbmdsZSB2YWx1ZSB0byBtYWtlIHNxdWFyZSB0aHVtYnMuIElmIHlvdSBvbWl0 IGVpdGhlciBvciBib3RoLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSB3aWxsIGJlIHJlYWQg ZnJvbSB0aGUgZGF0YWJhc2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aW1nc2l6 ZTwvc3Bhbj4gOiBpZGVudGljYWwgdG8gPGNvZGU+dGh1bWJzaXplPC9jb2RlPiBidXQgZm9y IHRoZSBmdWxsIHNpemUgaW1hZ2VzPC9saT4KCTwvdWw+CgoJPGg0PkZvcm1zIGFuZCBwYWdp bmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+IDog dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBsYXlvdXQg eW91ciBtYXRjaGluZyBpbWFnZXMuIFdpdGhvdXQgdGhpcyBhdHRyaWJ1dGUgdGhlIHBsdWdp biBhY3RzIGFzIGEgY29udGFpbmVyIHRhZy4gV2l0aG91dCBhIGNvbnRhaW5lciwgdGhlIHBs dWdpbiBkaXNwbGF5cyBlYWNoIGZ1bGwtc2l6ZSBpbWFnZSwgaHlwZXJsaW5rZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZWZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQg b2YgeW91ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5wYWdpbmc8L3NwYW4+IDogc3dpdGNoIHBhZ2luZyBvbiB3aXRob3V0IGhhdmluZyB0byBz cGVjaWZ5IGEgcGFnZWZvcm0uIFdoZW4gdGhpcyBpcyB1c2VkLCBhbGwgPGEgaHJlZj0iI3Jl cF9wYWdpbmciPnBhZ2UgcmVwbGFjZW1lbnQgdGFnczwvYT4gYmVjb21lIGF2YWlsYWJsZSBp biB0aGUgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5IHJlcGxhY2VtZW50IHRhZ3M8 L2E+IGFzIHdlbGw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZXBvczwvc3Bh bj4gOiB0aGUgcG9zaXRpb24gb2YgdGhlIHBhZ2luZyBibG9jay4gT3B0aW9ucyBhcmUgPGNv ZGU+YmVsb3c8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPmFib3ZlPC9jb2RlPiwgb3Ig Ym90aCBvZiB0aGVtIHNlcGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+b2JqZWN0Zm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBv ZiB5b3VyIDxjb2RlPntvYmplY3R9PC9jb2RlPiByZXBsYWNlbWVudCB0YWcuIFlvdSBjYW4g dXNlIGFsbCB0aGUgc3RhbmRhcmQgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5IHJl cGxhY2VtZW50IHRhZ3M8L2E+IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiA8Y29kZT57b2JqZWN0 fTwvY29kZT4gaXRzZWxmISBVc2VzIGEgaHlwZXJsaW5rZWQgaW1hZ2UgaWYgbm8gZm9ybSBp cyBzcGVjaWZpZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnRmb3JtPC9z cGFuPiA6IGxpc3Qgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybXMgdG8g dXNlIHdoZW4gY2VydGFpbiBudW1iZXJlZCBpbWFnZXMgYXJlIHJlYWNoZWQuIFNlZSA8YSBo cmVmPSIjY291bnRmb3JtIj5jb3VudCBmb3JtczwvYT4gYW5kIDxhIGhyZWY9IiNlZzEwIj5l eGFtcGxlIDEwPC9hPi4gVGhpcyBoYXMgbm8gZWZmZWN0IGluIGNvbGxhdGUgbW9kZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb3VudHBvczwvc3Bhbj4gOiBkZWZhdWx0IHBv c2l0aW9uIG9mIHRoZSA8Y29kZT5jb3VudGZvcm08L2NvZGU+cy4gRWl0aGVyIDxjb2RlPmFi b3ZlPC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5iZWxvdzwvY29kZT4sIG9yIGJvdGgg b2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+LiBDYW4gYmUgb3ZlcnJp ZGRlbiBvbiBhIHBlci1mb3JtIGJhc2lzPC9saT4KCTwvdWw+CgoJPGg0Pkdyb3VwaW5nIGlt YWdlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2U8L3Nw YW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gJiM4MjIwO3dhdGNoJiM4MjIxOy4gSXQg dGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3YW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gaXRl bXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2Uu IFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFz IHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFyYW1ldGVyIG9yIHlvdSBtYXkgZ2V0IHNvbWUg ZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPi48 ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3Igc3BsaXR0aW5nIGdh bGxlcmllcyBhdCBldmVyeSBjaGFuZ2UgaW4gY2F0ZWdvcnkgYW5kIGRpc3BsYXlpbmcgdGhl IGNhdGVnb3J5IHRpdGxlIGFib3ZlIGVhY2ggZ3JvdXAuIEl0ZW1zIHlvdSB3YXRjaCBhcmUg YWRkZWQgdG8gdGhlIGxpc3Qgb2YgcmVwbGFjZW1lbnQgdGFncyBhbmQgYXJlIGF2YWlsYWJs ZSBieSBwdXR0aW5nICYjODIyMDtvbmNoYW5nZTomIzgyMjE7IGluIGZyb250IG9mIHRoZWly IG5hbWUgKGUuZy4gPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5fTwvY29kZT4gJiM4MjEyOyBz ZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgbW9yZSkuIFRoZSBjb2xvbiBk ZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0aCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPi48 L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+QW5vdGhlciB3YXkgb2YgdXNpbmcgdGhpcyBhdHRy aWJ1dGUgaXMgd2l0aCB0aGUgc3BlY2lhbCBwcmVmaXggPGNvZGU+c21kX2V2ZXJ5Om48L2Nv ZGU+IHdoaWNoIHdpbGwgdHJpZ2dlciBhIGNoYW5nZSBldmVyeSBOdGggaW1hZ2U8L2Rpdj48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2V3cmFwdGFnPC9zcGFuPiA6 IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBhbnkgPGNvZGU+b25jaGFuZ2U8L2NvZGU+ IGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcsIGUuZy4gPGNvZGU+b25jaGFuZ2V3cmFwdGFn PSZxdW90O2gzJnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5v bmNoYW5nZWNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiBjbGFzcyBuYW1lIHRybyBhcHBseSB0byB0aGUgd3JhcHRhZyBvZiBhbnkgb25jaGFuZ2Ug ZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5ncm91cHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUg YXMgYSByZXBsYWNlbWVudCBzbyB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0 IGVhY2ggPGNvZGU+b25jaGFuZ2U8L2NvZGU+LiBEZWZhdWx0OiB1bnNldC4gU2VlIDxhIGhy ZWY9IiNlZzYiPmV4YW1wbGVzIDY8L2E+IGZvciBtb3JlIG9uIHRoZSA8Y29kZT5ncm91cHRh Z3N0YXJ0PC9jb2RlPiAvIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiByZXBsYWNlbWVudCB0 YWdzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdyb3VwY2xhc3M8L3NwYW4+IDog dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0 byBhbnkgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGg0PlRhZy9jbGFz cy9mb3JtYXR0aW5nIGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRo ZSBlbnRpcmUgZ2FsbGVyeSwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90Ozwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhl IChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggdGh1bWJuYWlsPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIGFwcGxpZWQgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4gOiB0aGUgbmFtZSBvZiBhbiA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0 ZSB0byBhcHBseSB0byB0aGUgd3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5uYXZ3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUg ZW50aXJlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90 O2RpdiZxdW90OzwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPnVsPC9jb2RlPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZicmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcg dG8gc3Vycm91bmQgZWFjaCBpdGVtIHdpdGhpbiB0aGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+ LiBEZWZhdWx0OiA8Y29kZT5saTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+bmF2Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGNsYXNzIG5hbWUgb2YgdGhlIG5hdmlnYXRpb24gd3JhcHRhZy4gRGVmYXVsdDogPGNvZGU+ c21kX2dhbGxlcnlfbmF2PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5l bXB0eWNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBj bGFzcyBuYW1lIG9mIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIHRoYXQgYXJlIDxlbT5ub3Q8L2Vt PiBsaW5rcy4gRGVmYXVsdDogPGNvZGU+ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmZvcm1hdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25s eSBpZiB1c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBhbGxvd3MgeW91IHRv IGNoYW5nZSB0aGUgZGF0ZSBmb3JtYXQgdXNlZC4gQ2FuIHRha2UgYW55IDxhIGhyZWY9Imh0 dHA6Ly91ay5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiB2YWx1ZXMuIERlZmF1 bHRzIHRvIHRoZSBkYXRlIHN5c3RlbSBhcyBzZXQgaW4gdGhlIHNpdGUmIzgyMTc7cyBwcmVm czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiAoPHNwYW4gY2xh c3M9InJlcXVpcmVkIj5vbmx5IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29kZT48L3NwYW4+ KSA6IHNldHMgdGhlIGxhbmd1YWdlIGNvZGUgb2YgdGhlIGRhdGUgZm9ybWF0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdtdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJl ZCI+b25seSBpZiB1c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiByZXR1cm5z IGVpdGhlciBsb2NhbCB0aW1lIGFjY29yZGluZyB0byB0aGUgc2V0IHRpbWUgem9uZSBwcmVm ZXJlbmNlcyAoMCksIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+IHRpbWUgKDEp LiBEZWZhdWx0OiAwPC9saT4KCTwvdWw+CgoJPGg0PlBsdWdpbiBjdXN0b21pc2F0aW9uPC9o ND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWxpbTwvc3Bhbj4gOiBjaGFu Z2UgdGhlIGRlbGltaXRlciBmb3Igc3BlY2lmeWluZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1 bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhcmFtZGVs aW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXIt cGFyYW1ldGVyIGF0dHJpYnV0ZXMuIERlZmF1bHQgaXMgY29sb24gKDopPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmNvbGxhdGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4g aW50byA8YSBocmVmPSIjY29sbGF0ZV9tb2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbGxhdGVkZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhl IGRlbGltaXRlciBiZXR3ZWVuIGVhY2ggY29sbGF0ZWQgaXRlbS4gRGVmYXVsdCBpcyBjb21t YSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29tYm88L3NwYW4+IDogc3Bl Y2lmeSB5b3VyIG93biA8YSBocmVmPSIjY29tYm9zIj5jdXN0b20gcmVwbGFjZW1lbnQgdGFn czwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXNjYXBlPC9zcGFuPiA6IGxp c3Qgb2YgcmVwbGFjZW1lbnQgdmFyaWFibGUgbmFtZXMgdG8gJiM4MjE2O2VzY2FwZSYjODIx NzssIGluIG90aGVyIHdvcmRzIGNvbnZlcnQgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1M PC9zcGFuPiB0YWdzIHRvIHRoZWlyIGNoYXJhY3RlciBlbnRpdHkgZXF1aXZhbGVudHMuIFNl dCB0byA8Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJuIHRoaXMgZmVh dHVyZSBvZmYuIFlvdSBjYW4gZXNjYXBlIHlvdXIgb3duIGNvbWJvcy4gRGVmYXVsdDogPGNv ZGU+YWx0LCB0aXRsZSwgY2FwdGlvbjwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+c3RyaWN0ZmllbGRzPC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8mIzgyMTc7 IG9yICYjODIxNjshJiM4MjE3OyBmaWVsZHMsIHNwYWNlcyBhcmUgYWxsb3dlZCBpbiBmaWVs ZCBuYW1lcy4gU2V0IDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0 byBmb3JiaWQgc3BhY2VzLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmdhbGxlcnlpZDwvc3Bhbj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ug c2hvdWxkIG5ldmVyIG5lZWQgdGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5p cXVlIElEIGJhc2VkIG9uIHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzIHNvIHlvdSBtYXkgdXNl IG1vcmUgdGhhbiBvbmUgZ2FsbGVyeSBvbiBhIHBhZ2UgYW5kIG5hdmlnYXRlIHRoZW0gaW5k ZXBlbmRlbnRseS4gSW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgdHdvIGlkZW50aWNhbCBJ RHMgYXJlIGdlbmVyYXRlZCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBJRCBmb3IgYSBnYWxsZXJ5 IGJ5IHVzaW5nIHRoaXMgYXR0cmlidXRlLjxkaXYgY2xhc3M9ImJyZWFrIj5JbnRlcm5hbGx5 IHRoZSBwbHVnaW4gZ2VuZXJhdGVzIGEgMzItY2hhcmFjdGVyIGhhc2ggc3RyaW5nIGZvciBl YWNoIHRhZywgdGhlbiBwaWNrcyBhIDQtY2hhciBjb2RlIGZyb20gdGhpcyBzdHJpbmcgKGl0 IHRha2VzIGV2ZXJ5IDZ0aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCkuIFlvdSBjYW4gc3VwcGx5 IGEgdW5pcXVlIGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7TXlH YWwmcXVvdDs8L2NvZGU+KSBvciBnaXZlIGl0IGEgcXVlc3Rpb24gbWFyayBhbmQgMiBudW1i ZXJzIHNlcGFyYXRlZCBieSBhIGNvbG9uIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/ NTo0JnF1b3Q7PC9jb2RlPikuIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxlbmd0aCBvZiB0 aGUgZmluYWwgc3RyaW5nIHRvIGdlbmVyYXRlLCB0aGUgc2Vjb25kIG51bWJlciBpcyBob3cg bWFueSBjaGFyYWN0ZXJzIHRvIHNraXAgaW4gdGhlIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGlt ZSBpdCBwaWNrcyBvbmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkluIHRoaXMgY2FzZSBp dCBnZW5lcmF0ZXMgYSA1LWNoYXJhY3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBp dCBmaW5kcyBhdCBwb3NpdGlvbnMgMSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhl IDJuZCBudW1iZXIgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2Rl PikgaXQgd2lsbCBhc3N1bWUgaXQmIzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMTwvZGl2Pjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYjwvc3Bhbj4gOiB1bmRlciBub3Jt YWwgb3BlcmF0aW9uLCB0aHVtYm5haWxzIHVzZSB0aGUgJiM4MjE2O3QmIzgyMTc7IGltYWdl IGluIHlvdXIgPGNvZGU+aW1hZ2VzPC9jb2RlPiBkaXJlY3RvcnkgYW5kIHRoZSBmdWxsIHNp emUgcGljdHVyZXMgZG9uJiM4MjE3O3QuIElmIHlvdSB3aXNoIHRvIHJlZGVmaW5lIHRoaXMg eW91IG1heSBzcGVjaWZ5IHVwIHRvIHR3byB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGEgY29sb24u IFRoZSBmaXJzdCBpbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBmdWxsIHNpemUgaW1hZ2Us IGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBzdGF0ZSBvZiB0aGUgdGh1bWJuYWlsOgoJPHVsPgoJ CTxsaT50aHVtYj0wOjEgJiM4MjEyOyBmdWxsc2l6ZSA9IHJlZ3VsYXIgaW1hZ2UgOiB0aHVt Ym5haWwgPSB0aHVtYjwvbGk+CgkJPGxpPnRodW1iPTE6MCAmIzgyMTI7IGZ1bGxzaXplID0g dGh1bWIgOiB0aHVtYm5haWwgPSByZWd1bGFyIGltYWdlPC9saT4KCQk8bGk+dGh1bWI9MDow IChvciB0aHVtYj0wKSAmIzgyMTI7IGZ1bGxzaXplID0gcmVndWxhciBpbWFnZSA6IHRodW1i bmFpbCA9IHJlZ3VsYXIgaW1hZ2U8L2xpPgoJCTxsaT50aHVtYj0xOjEgKG9yIHRodW1iPTEp ICYjODIxMjsgZnVsbHNpemUgPSB0aHVtYiA6IHRodW1ibmFpbCA9IHRodW1iPC9saT4KCTwv dWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRleHQ8L3NwYW4+IDogZGlzcGxh eSB0aGUgZ2l2ZW4gdGV4dCBpbnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0ZXh0IGNhbiBj b250YWluIDxjb2RlPj88L2NvZGU+IGFydGljbGUgZmllbGRzPC9saT4KCTwvdWw+CgoJPGg0 PlNwZWNpYWwgYXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Y29sdW1uczwvc3Bhbj4gOiBnaXZlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRk aXRpb25hbCBjb2x1bW5zIHlvdSB3b3VsZCBsaWtlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJh c2UuIEVhY2ggaXRlbSB5b3Ugc3BlY2lmeSBpcyBzcGxpdCBpbnRvIHRocmVlIHBhcnRzOiA8 Y29kZT50YWJsZS5jb2x1bW46cmVwbGFjZW1lbnQgbmFtZTwvY29kZT4uIFRoZSBvbmx5IG1h bmRhdG9yeSBwYXJ0IGlzIHRoZSByZXBsYWNlbWVudCBuYW1lLCBzaW5jZSA8Y29kZT50YWJs ZTwvY29kZT4gZGVmYXVsdHMgdG8gdHhwX2ltYWdlLCBhbmQgdGhlIDxjb2RlPmNvbHVtbjwv Y29kZT4gZGVmYXVsdHMgdG8gdGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVwbGFjZW1lbnQgeW91 IHNwZWNpZnkuPGRpdiBjbGFzcz0iYnJlYWsiPkZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBp bnN0YWxsZWQgdGhlIGNub19pbWFnZV9vcmRlciBwbHVnaW4geW91IGNvdWxkIHVzZSA8Y29k ZT5jb2x1bW5zPSZxdW90O3Bvc2l0aW9uJnF1b3Q7PC9jb2RlPiwgc2luY2UgdGhlIHBsdWdp biBhZGRzIHRoZSAmIzgyMTY7cG9zaXRpb24mIzgyMTc7IGNvbHVtbiB0byB0eHBfaW1hZ2Uu IFlvdSBjb3VsZCB0aGVuIHNvcnQgYnkgPGNvZGU+cG9zaXRpb248L2NvZGU+IGFuZCBhbHNv IGRpc3BsYXkgdGhlIGltYWdlJiM4MjE3O3MgPGNvZGU+e3Bvc2l0aW9ufTwvY29kZT4uIElm IHlvdSB3aXNoZWQgdG8gcmVuYW1lIHRoZSB2YXJpYWJsZSB0bywgc2F5LCA8Y29kZT5pbWdw b3M8L2NvZGU+IHlvdSB3b3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbjpp bWdwb3MmcXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgdGhlIHRhYmxl IG5hbWUgeW91IG11c3QgYWxzbyBpbmNsdWRlIHRoZSB0YWJsZSBwcmVmaXggaWYgeW91IGhh dmUgdXNlZCBvbmUuPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpcmVj dG9yeTwvc3Bhbj4gOiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5leHBlcmltZW50YWw8L3Nw YW4+KSByZWFkIGltYWdlcyBmcm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBkYXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5tYXRjaDwvc3Bhbj4gOiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9z ZW4gaW4gPGNvZGU+ZGlyZWN0b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3Jk cyB0byBpbmNsdWRlIG9yICFleGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGly ZWN0b3JpZXMgd2lsbCBiZSBjaG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUg bWF0Y2ggdGVybXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2ls ZCYjODIyMTsgc28gYW55IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmln Z2VyIHRoZSBtYXRjaDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bh bj4gOiB0dXJuIG9uIGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkg ZnJvbSAwIChub25lKSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImdhbGxl cnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9oMj4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4g aXMgd2hlcmUgeW91IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlr ZSBvbiB0aGUgc2NyZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIDxzcGFuIGNsYXNz PSJjYXBzIj5IVE1MPC9zcGFuPiBtYXJrdXAgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gdGFncyBhcyBub3JtYWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIGZv ciBleGFtcGxlLCBhbiBpbWFnZSBJRCAvIGFsdCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBk aXNwbGF5ZWQsIHlvdSBzcGVjaWZ5IHNwZWNpYWwgcmVwbGFjZW1lbnQgdGFncywgZGV0YWls ZWQgYmVsb3cuIFRoZXNlIGFyZSByZXBsYWNlZCBmb3IgZWFjaCBpbWFnZSBpbiB0dXJuLCB0 aHVzIGJ1aWxkaW5nIHVwIHRoZSBnYWxsZXJ5LjwvcD4KCgk8cD5JbiBjb2xsYXRlIG1vZGUs IHRoZSBpbWFnZSBkZXRhaWxzIGFyZSBpbnN0ZWFkIG1hZGUgaW50byBsaXN0cy4gVGhlIGZv cm0gaXMgb25seSBwcm9jZXNzZWQgb25jZSBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgb3V0 cHV0IHRoZSBlbnRpcmUgbGlzdC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9n YWxsZXJ5Ij5SZXBsYWNlbWVudCB0YWdzOiBnYWxsZXJ5PC9oMz4KCgk8dWw+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57aWR9PC9zcGFuPiA6IGltYWdlIElEIChvciwgaW4gZGlyZWN0 b3J5IG1vZGUsIHRoZSBmaWxlbmFtZSB3aXRob3V0IGl0cyBleHRlbnNpb24pPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYW1lfTwvc3Bhbj4gOiBmdWxsIGltYWdlIGZpbGVu YW1lIGFzIGRlZmluZWQgaW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRl bnNpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2V4dH08L3NwYW4+IDogZmls ZSBleHRlbnNpb24sIGluY2x1ZGluZyBkb3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e2NhdGVnb3J5fTwvc3Bhbj4gOiBpbWFnZSBjYXRlZ29yeSBuYW1lPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDogaW1hZ2UgY2F0 ZWdvcnkgdGl0bGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2F1dGhvcn08L3Nw YW4+IDogd2hvIHVwbG9hZGVkIHRoZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57dXJsfTwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0 aGUgZnVsbHNpemUgaW1hZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1i dXJsfTwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1 bWJuYWlsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZXBhdGh9PC9zcGFu PiA6IGRpcmVjdG9yeSB0aGUgaW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e2ltYWdlZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0 aGUgaW1hZ2UgKGUuZy4gNS5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0 aHVtYmRlZn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIHRodW1i bmFpbCAoZS5nLiA1dC5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnthbHR9 PC9zcGFuPiA6IGFsdCB0ZXh0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aXRs ZX0gb3Ige2NhcHRpb259PC9zcGFuPiA6IGNhcHRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e2RhdGV9PC9zcGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnt3aWR0aH08L3NwYW4+IDogaW1hZ2Ugd2lkdGg8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2hlaWdodH08L3NwYW4+IDogaW1hZ2UgaGVpZ2h0 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt3dW5pdHN9PC9zcGFuPiA6IGltYWdl IHdpZHRoIHVuaXRzIChlLmcuIHB4LCAlLCBlbSwgZXRjLik8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e2h1bml0c308L3NwYW4+IDogaW1hZ2UgaGVpZ2h0IHVuaXRzPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYndpZHRofTwvc3Bhbj4gOiB0aHVtYm5h aWwgd2lkdGg8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaGVpZ2h0fTwv c3Bhbj4gOiB0aHVtYm5haWwgaGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pnt0aHVtYnd1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4 LCAlLCBlbSwgZXRjLik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaHVu aXRzfTwvc3Bhbj4gOiB0aHVtYm5haWwgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntoYXN0aHVtYn08L3NwYW4+IDogaWYgdGhlIGltYWdlIGhhcyBhbiBh c3NvY2lhdGVkIHRodW1ibmFpbCBvciBub3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e2dhbGxlcnlpZH08L3NwYW4+IDogZ2FsbGVyeSBpZCB0aGF0IHlvdSBvciB0aGUgcGx1 Z2luIGFzc2lnbmVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntvYmplY3R9PC9z cGFuPiA6IGEgc3BlY2lhbCBpdGVtIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSA8Y29kZT50ZXh0 PC9jb2RlPiBPUiB0aGUgaW1hZ2UgdGFnIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRodW1ibmFp bCwgYnV0IDxlbT5vbmx5PC9lbT4gaWYgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gYWxsb3dz IGl0LiBlLmcuIGlmIDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdGhp cyB2YXJpYWJsZSBpcyBvbmx5IHNldCBmb3IgdGhlIGZpcnN0IHRodW1ibmFpbCBpbiB0aGUg bGlzdDsgZXZlcnkgb3RoZXIgdGltZSBpdCBpcyBlbXB0eTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57Y291bnRlcn08L3NwYW4+IDogaW1hZ2UgY291bnRlciwgc3RhcnRpbmcg ZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgZWFjaCB0aW1lPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntpbmRleH08L3NwYW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAm IzgyMTI7IHByb2JhYmx5IG5vdCBtdWNoIHVzZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e3RodW1iY291bnRlcn08L3NwYW4+IDogdGh1bWJuYWlsIGltYWdlIGNvdW50ZXIs IHN0YXJ0aW5nIGZyb20gMS4gTm90ZSBpdCBpcyAmIzgyMTY7cmVzZXQmIzgyMTc7IHdoZW5l dmVyIGFuIGVsZW1lbnQgZ2l2ZW4gaW4gPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGRpZmZlcnMg ZnJvbSB0aGUgcHJldmlvdXMgaXRlbTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 dGh1bWJpbmRleH08L3NwYW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7 IHByb2JhYmx5IG5vdCBtdWNoIHVzZSkuIEl0IGlzIHJlc2V0IGxpa2UgPGNvZGU+e3RodW1i Y291bnRlcn08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGlt YWdlc308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoaXMg cGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4g OiBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwv bGk+Cgk8L3VsPgoKCTxwPkluIGFkZGl0aW9uLCBpZiBlaXRoZXIgPGNvZGU+cGFnaW5nPSZx dW90OzEmcXVvdDs8L2NvZGU+IG9yIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiBoYXZlIGJlZW4g c3BlY2lmaWVkLCBhbGwgdGhlIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdpbmcgcmVwbGFj ZW1lbnQgdGFnczwvYT4gYXJlIGF2YWlsYWJsZSB0b28uIElmIHRob3NlIGFyZW4mIzgyMTc7 dCBlbm91Z2gsIHlvdSBjYW4gPGEgaHJlZj0iI2NvbWJvcyI+Y3JlYXRlIHlvdXIgb3duPC9h PiBieSBncm91cGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIGFib3ZlLCBvcHRpb25hbGx5IHdp dGggYXJ0aWNsZSB2YXJpYWJsZXMgc3VjaCBhcyA8Y29kZT4/ZXhjZXJwdDwvY29kZT4sIDxj b2RlPj9rZXl3b3JkczwvY29kZT4sIDxjb2RlPj9hcnRpY2xlX2ltYWdlPC9jb2RlPiwgZXRj LjwvcD4KCgk8cD5PdGhlciB0YWdzIGFyZSBhZGRlZCBkZXBlbmRpbmcgaWYgeW91IGFyZSB3 YXRjaGluZyBmb3IgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzLCBvciBpZiB5b3Ug aGF2ZSBzcGVjaWZpZWQgYSA8Y29kZT5ncm91cHRhZzwvY29kZT4uIElmIHlvdSBhZGRlZCA8 Y29kZT5vbmNoYW5nZT0mcXVvdDthdXRob3IsIGNhdGVnb3J5JnF1b3Q7PC9jb2RlPiB0aGVu IGV2ZXJ5IHRpbWUgdGhlIGF1dGhvciBvciBjYXRlZ29yeSBjaGFuZ2VkIGNvbXBhcmVkIHRv IHRoZSBwcmV2aW91cyBpbWFnZSwgb25lIG9yIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyB3 b3VsZCBiZWNvbWUgYXZhaWxhYmxlOyBuYW1lbHkgPGNvZGU+e29uY2hhbmdlOmF1dGhvcn08 L2NvZGU+IGFuZCA8Y29kZT57b25jaGFuZ2U6Y2F0ZWdvcnkpPC9jb2RlPi4gVXNpbmcgb25j aGFuZ2Ugd2l0aCA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+IGRvZXMgPGVtPm5vdDwvZW0+IGFk ZCBhIG5ldyByZXBsYWNlbWVudCB0YWcgYXMgaXQgaXMgbWVyZWx5IHVzZWQgdG8gY291bnQu PC9wPgoKCTxwPklmIHlvdSB1c2VkIDxjb2RlPmdyb3VwdGFnPSZxdW90O2RpdiZxdW90Ozwv Y29kZT4gYXMgd2VsbCwgeW91IHdvdWxkIGJlIGdpdmVuIHR3byBuZXcgcmVwbGFjZW1lbnQg dGFncyBsYWJlbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3Jv dXB0YWdlbmQ8L2NvZGU+LiBTZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3Ig ZGV0YWlscy48L3A+CgoJPGgyIGlkPSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gyPgoK CTxwPkFkZCBnYWxsZXJ5IG5hdmlnYXRpb24gdG8geW91ciBwYWdlLiBXb3JrcyBpbiBhIHNp bWlsYXIgbWFubmVyIHRvIHRoZSA8YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5nYWxsZXJ5IGZv cm08L2E+OiBhIHNlcmllcyBvZiByZXBsYWNlbWVudCB0YWdzIGdvdmVybiB3aGljaCBnYWxs ZXJ5IG5hdmlnYXRpb24gaXRlbXMgYXJlIGF2YWlsYWJsZS4gWW91IGNvdWxkIGNob29zZSB0 byBvbmx5IHNob3cgbmV4dC9wcmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4g T3IgbnVtYmVyZWQgcGFnZSBsaW5rcy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJl cF9wYWdpbmciPlJlcGxhY2VtZW50IHRhZ3M6IHBhZ2luZzwvaDM+CgoJPHVsPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e25hdmZpcnN0fTwvc3Bhbj4gOiBmaXJzdCBwYWdlIChkZWZh dWx0IGxhYmVsOiAmIzgyMjA7Rmlyc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1M UDwvc3Bhbj4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2fTwvc3Bh bj4gOiBwcmV2aW91cyBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JmxhcXVvOyYjODIy MTsgLyA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e25hdmVhcmxpZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYmVm b3JlIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25h dnRoaXN1cmx9PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4gbGluayB0byBpdHNlbGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e25hdnRoaXN9PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRob3V0IGEgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluazwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57bmF2bGF0ZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYWZ0ZXIgdGhlIGN1 cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dH08L3Nw YW4+IDogbmV4dCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTsg LyA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e25hdmxhc3R9PC9zcGFuPiA6IGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDog JiM4MjIwO0xhc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZmaXJzdHBhZ2V1cmx9PC9zcGFuPiA6 IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBmaXJzdCBwYWdlPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3 IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIHByZXZpb3VzIHBhZ2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gY3VycmVudCBwYWdlPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZuZXh0cGFnZXVybH08L3NwYW4+IDogcmF3IDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57bmF2bGFzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e3RvdGFsaW1hZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgaW1h Z2VzIG1hdGNoZWQgb24gdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57dG90YWxwYWdlc308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGlu IHRoaXMgY29sbGVjdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1h Z2VzfTwvc3Bhbj4gOiBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3Nz IGFsbCBwYWdlczwvbGk+Cgk8L3VsPgoKCTxwPlRoZSBjdXJyZW50IHBhZ2UgaGFzIGEgZml4 ZWQgY2xhc3Mgb2YgJiM4MjE2O2N1cnJlbnQmIzgyMTc7IGFuZCBlYWNoIGl0ZW0gaXMsIGJ5 IGRlZmF1bHQsIGEgPGNvZGU+Jmx0O2xpJmd0OzwvY29kZT4gZm9yIGVhc3kgc3R5bGluZy4g Q3VzdG9tIGxhYmVscyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGY7 IGZvciBleGFtcGxlIHRvIGxhYmVsIHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhl IGZpcnN0IHBhZ2Ugb2YgdGhlIGdhbGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTssIHVzZTo8 L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldpdGggdGhp cyBzeW50YXggeW91IGNhbiBsYWJlbCBuYXZmaXJzdCwgbmF2bGFzdCwgbmF2cHJldiwgbmF2 bmV4dCBhbmQgbmF2dGhpcyAodGhlICYjODIxNjs6JiM4MjE3OyBkZWxpbWl0ZXIgaW4gdGhp cyBjYXNlIGlzIHNwZWNpZmllZCBieSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPikuIFlvdSBj YW4gdXNlIHRoaXMgbWVjaGFuaXNtIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwv c3Bhbj4gc25pcHBldHMsIGUuZzo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RM YWJlbCMjfTwvY29kZT48L3A+CgoJPHA+WW91IGFyZSBub3QgbGltaXRlZCB0byB0ZXh0IGxh YmVscy4gSW1hZ2VzIGNvdWxkIGJlIHVzZWQ6PC9wPgoKCTxwPjxjb2RlPntuYXZsYXN0OiAm bHQ7aW1nIHNyYz0mcXVvdDtpbWFnZXMvbGFzdC5wbmcmcXVvdDsgLyZndDt9PC9jb2RlPjwv cD4KCgk8cD5Zb3UgY2FuIG92ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVk IGJ5IG5hdmVhcmxpZXIgYW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQg YSBudW1iZXIuIFNvIHRvIG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBj dXJyZW50IHBhZ2UgYW5kIDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVh cmxpZXI6Mn0ge25hdmxhdGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIElmIHlvdSB3ZXJl IG9uIHBhZ2UgOSBvZiAxNSwge25hdmVhcmxpZXI6NH0ge25hdmxhdGVyOjN9IHdvdWxkIHNo b3cgPGNvZGU+Jmx0OyZsdDsgNSA2IDcgOCA5IDEwIDExIDEyICZndDsmZ3Q7PC9jb2RlPjwv cD4KCgk8cD5DdXJyZW50bHkgPGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+ e25hdmxhdGVyfTwvY29kZT4gb25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlk ZWFzIG9uIGhvdyB0byBvZmZlciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJl Y2lhdGVkLjwvcD4KCgk8aDIgaWQ9ImNvdW50Zm9ybSI+Q291bnQgZm9ybXM8L2gyPgoKCTxw PlNvbWV0aW1lcyBpdCYjODIxNztzIGhhbmR5IHRvIGJlIGFibGUgdG8gdGFrZSBhY3Rpb24g b25seSB3aGVuIGNlcnRhaW4gaW1hZ2VzIGFyZSByZWFjaGVkOyBmb3IgZXhhbXBsZTo8L3A+ CgoJPHVsPgoJCTxsaT5vbmx5IGRpc3BsYXkgc29tZXRoaW5nIG9uIHRoZSBmaXJzdCBvciBs YXN0IGltYWdlPC9saT4KCQk8bGk+c3RhcnQgYSBuZXcgPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+ICYjODIxNjtyb3cmIzgyMTc7IGV2ZXJ5IDNyZCBpbWFnZTwvbGk+CgkJPGxp PmJyZWFrIHlvdXIgZ2FsbGVyeSB1cCB3aXRoIGFuIGFkdmVydDwvbGk+Cgk8L3VsPgoKCTxw PlRoaXMgY2FuIGJlIGRvbmUgd2l0aCBzbWRfaWYgYnV0IHNpbmNlIGl0IGlzIHN1Y2ggYSBj b21tb24gZmVhdHVyZSwgdGhlIHBsdWdpbiBoYXMgdGhlIGFiaWxpdHkgYnVpbHQgaW4uIEFs bCByZXBsYWNlbWVudCB0YWdzIGFyZSBhdmFpbGFibGUgd2l0aGluIHlvdXIgY291bnRmb3Jt cyBzbyB5b3UgY2FuIGRvIHNvbWUgcHJldHR5IG5lYXQgc3R1ZmYuIEl0IGlzIGJlc3QgZXhw bGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZx dW90OzE6Z2FsX2hlYWQmcXVvdDs8L2NvZGU+IDogdGhpcyB3b3VsZCBvdXRwdXQgdGhlIGZv cm0gPGVtPmdhbF9oZWFkPC9lbT4gb25seSB3aGVuIHRoZSBmaXJzdCBpbWFnZSBpcyBkaXNw bGF5ZWQ8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7e3RvdGFsaW1hZ2VzfTpn YWxfZm9vdCZxdW90OzwvY29kZT4gOiB0aGlzIHdvdWxkIG91dHB1dCB0aGUgZm9ybSA8ZW0+ Z2FsX2Zvb3Q8L2VtPiBvbmx5IHdoZW4gdGhlIGxhc3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9s aT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQsIHt0b3RhbGltYWdl c306Z2FsX2Zvb3QmcXVvdDs8L2NvZGU+IDogZG8gYm90aCBvZiB0aGUgYWJvdmU8L2xpPgoJ CTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7MTpnYWxfaGVhZCwge3RvdGFsaW1hZ2VzfTpn YWxfZm9vdDpzbWRfYmVsb3cmcXVvdDs8L2NvZGU+IDogdGhlIHNhbWUgYXMgdGhlIHByZXZp b3VzIGV4YW1wbGUsIGJ1dCBwdXQgdGhlIGNvbnRlbnRzIGJlbG93IHRoZSBsYXN0IGltYWdl IChieSBkZWZhdWx0LCBhbGwgb3V0cHV0IGFwcGVhcnMgYWJvdmUgdGhlIGdpdmVuIGltYWdl KTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDs0Ojk6c21kX2JlbG93OmdhbF9h ZCZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVtPmdhbF9hZDwvZW0+IGFmdGVyIHRoZSA0dGgg YW5kIDl0aCBpbWFnZXMgb25seTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDtz bWRfZXZlcnk6MzpnYWxfcm93JnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+Z2FsX3Jvdzwv ZW0+IGJlZm9yZSBldmVyeSAzcmQgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09 JnF1b3Q7c21kX2V2ZXJ5OjI6ITg6Z2FsX3JvdyZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVt PmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgZXZlbiBpbWFnZSBidXQgbm90IG9uIHRoZSA4 dGggaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OmdhbF9yb3cmcXVv dDs8L2NvZGU+IDogdXNlIGFuIGVtcHR5IGZpcnN0IHZhbHVlIHRvIG91dHB1dCA8ZW0+Z2Fs X3JvdzwvZW0+IGJlZm9yZSBldmVyeSBpbWFnZS4gVGhpcyBtYXkgc2VlbSB1c2VsZXNzLCBi dXQgaXQgbWVhbnMgeW91IGNhbiB1c2UgdHdvLCB0aHJlZSwgZm91ciYjODIzMDsgZm9ybXMg KG9yIGFueSBudW1iZXIgb2YgZm9ybXMgYW5kIHRoZSBjb250YWluZXIpIHNpbXVsdGFuZW91 c2x5IHRvIGl0ZXJhdGUgb3ZlciB0aGUgc2FtZSBnYWxsZXJ5LiBPciB1c2UgdGhlIHNhbWUg Zm9ybSBhdCBkaWZmZXJlbnQgZnJlcXVlbmNpZXMuIEdldCBjcmVhdGl2ZSE8L2xpPgoJCTxs aT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OiE1OmdhbF9yb3c6c21kX2JlbG93JnF1b3Q7PC9j b2RlPiA6IGFnYWluLCBtaXNzaW5nIG91dCB0aGUgZmlyc3QgdmFsdWUgd2lsbCBvdXRwdXQg Z2FsX3JvdyBhZnRlciBldmVyeSBpbWFnZSwgYnV0IHRoaXMgdGltZSBza2lwcGluZyB0aGUg NXRoIGltYWdlPC9saT4KCTwvdWw+CgoJPHA+VGhlIDxjb2RlPiw8L2NvZGU+IGFuZCA8Y29k ZT46PC9jb2RlPiBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29k ZT4gYW5kIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0dHJpYnV0ZXMsIHJlc3BlY3RpdmVs eS48L3A+CgoJPHA+VGhlcmUgYXJlIGEgZmV3IHJ1bGVzIHdoZW4gdXNpbmcgdGhlIGNvdW50 Zm9ybTo8L3A+CgoJPHVsPgoJCTxsaT5udW1iZXJzIG11c3QgYXBwZWFyIGJlZm9yZSB0aGUg Zm9ybSBuYW1lPC9saT4KCQk8bGk+dGhlIGZvcm0gbmFtZSBpcyB1c3VhbGx5IHRoZSBsYXN0 IGl0ZW0gaW4gdGhlIGNvbG9uLXNlcGFyYXRlZCBsaXN0LCB0aG91Z2ggeW91IGNhbiBwdXQg PGNvZGU+c21kX2Fib3ZlPC9jb2RlPiBvciA8Y29kZT5zbWRfYmVsb3c8L2NvZGU+IGxhc3Qg aWYgeW91IHdpc2g8L2xpPgoJCTxsaT48Y29kZT5zbWRfZXZlcnk8L2NvZGU+IG9ubHkgYWZm ZWN0cyB0aGUgdmFsdWUgdGhhdCA8ZW0+aW1tZWRpYXRlbHk8L2VtPiBmb2xsb3dzIGl0LCBl LmcuIDxjb2RlPmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6NTo3OjEyOm15X2FkJnF1b3Q7 PC9jb2RlPiB3aWxsIG91dHB1dCA8ZW0+bXlfYWQ8L2VtPiBhdCBldmVyeSA1dGggaW1hZ2Us IGFzIHdlbGwgYXMgPGVtPm9ubHk8L2VtPiBvbiB0aGUgN3RoIGFuZCAxMnRoIGltYWdlcy4g VGh1cyB0aGUgc2VxdWVuY2Ugd291bGQgYmUgNSwgNywgMTAsIDEyLCAxNSwgMjAsIDI1LCAz MCYjODIzMDs8L2xpPgoJCTxsaT5pZiB1c2luZyA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+LCBp dCA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gYXBwZWFyIGFzIHRoZSBmaXJzdCBpdGVtLiBGb3Ig ZXhhbXBsZSA8Y29kZT5jb3VudGZvcm09JnF1b3Q7NDp0aGVfZm91cnRoLCA2OnNtZF9ldmVy eTo1Om15X2FkJnF1b3Q7PC9jb2RlPiBpcyBpbnZhbGlkLCBidXQgPGNvZGU+Y291bnRmb3Jt PSZxdW90OzQ6dGhlX2ZvdXJ0aCwgc21kX2V2ZXJ5OjU6NjpteV9hZCZxdW90OzwvY29kZT4g aXMgT0s8L2xpPgoJPC91bD4KCgk8cD5TZWUgPGEgaHJlZj0iI2VnMTAiPmV4YW1wbGUgMTA8 L2E+IGZvciBtb3JlLjwvcD4KCgk8aDIgaWQ9ImNvbWJvcyI+Q29tYm9zPC9oMj4KCgk8cD5J ZiB0aGUgYnVpbHQtaW4gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdz PC9hPiBhcmVuJiM4MjE3O3QgZW5vdWdoIGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlv dXJzZWxmIHJlcGVhdGluZyB0aGUgc2FtZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZl IHlvdXJzZWxmIHNvbWUgdHlwaW5nLCB5b3UgY2FuIGRlZmluZSB5b3VyIG93bi4gVGhlIHN5 bnRheCBpczo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7bmV3dGFnMTpkZWZpbml0aW9u LCBuZXd0YWcyOmRlZmluaXRpb24sIC4uLiZxdW90OzwvY29kZT48L3A+CgoJPHA+JiM4MjE2 O2RlZmluaXRpb24mIzgyMTc7IGNhbiBiZSBhbnkgZml4ZWQgdGV4dCwgYW55IGV4aXN0aW5n IHJlcGxhY2VtZW50IHRhZywgb3IgYW55ICYjODIxNjs/JiM4MjE3OyBhcnRpY2xlIHZhcmlh YmxlIHNvIHlvdSBjYW4gZ2V0IHJlYWxseSB3aWxkIGhlcmUsIGZvciBleGFtcGxlOjwvcD4K Cgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3VuZCBpbiA/cyBbdGFnZ2VkIHdpdGgg P2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPk9u Y2UgZGVmaW5lZCwgPGNvZGU+e2ltZ2lufTwvY29kZT4gaXMgYXZhaWxhYmxlIHRvIHlvdXIg Z2FsbGVyeSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgbWlnaHQgYmUgcmVwbGFjZWQgd2l0aCAm IzgyMjA7Zm91bmQgaW4gem9vIFt0YWdnZWQgd2l0aCB6ZWJyYSwgYWZyaWNhLCBzdHJpcGVz LiBQaG90byBieSBCbG9rZV0mIzgyMjE7LiAkcHJldGV4dCBpcyBhbHNvIGF2YWlsYWJsZSBm b3IgdGhvc2UgZ2Vla3Mgd2hvIGtub3cgd2hhdCYjODIxNztzIGluIGl0ICh0ZW1wb3Jhcmls eSB1c2UgPGNvZGU+ZGVidWc9JnF1b3Q7NCZxdW90OzwvY29kZT4gdG8gdmlldyBhbGwgYXZh aWxhYmxlIGFydGljbGUgdmFyaWFibGVzKS48L3A+CgoJPHA+T25lIHRoaW5nIHRvIHdhdGNo IG91dCBmb3IgaXMgdGhhdCB0aGUgc3BhY2UgY2hhcmFjdGVyIGlzbiYjODIxNzt0IG5lY2Vz c2FyaWx5IGEgZGVsaW1pdGVyIGZvciA8Y29kZT4/PC9jb2RlPiB2YXJpYWJsZXMgKGJlY2F1 c2UgY3VzdG9tIGZpZWxkcyBjYW4gaGF2ZSBzcGFjZXMgaW4gdGhlbSkuIFNvIDxjb2RlPmNv bWJvPSZxdW90O2RvZXNub3R3b3JrOj9zIGluID9jYXRlZ29yeTEmcXVvdDs8L2NvZGU+IHdp bGwgbG9vayBmb3IgYSB2YXJpYWJsZSBsYWJlbGxlZCAmIzgyMjA7cyBpbiYjODIyMTsgYW5k IG9uZSBjYWxsZWQgJiM4MjIwO2NhdGVnb3J5MSYjODIyMTsuIE9ubHkgb25lIG9mIHRob3Nl IGV4aXN0cyEgQ2xldmVyIHVzZSBvZiBwYXJlbnRoZXNlcyBvciBvdGhlciBwdW5jdHVhdGlv biBjYW4gd29yayByb3VuZCB0aGlzLiBPciB1c2UgPGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90 OzAmcXVvdDs8L2NvZGU+IHRvIHR1cm4gb2ZmIHRoZSB1c2Ugb2Ygc3BhY2VzIGluIGN1c3Rv bSBmaWVsZCBuYW1lcy48L3A+CgoJPGgyIGlkPSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9k ZTwvaDI+CgoJPHA+SWYgeW91IHdhbnQgdG8gZ2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5 b3UgY2FuIHB1dCB0aGUgcGx1Z2luIGludG8gYSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2Nv bGxhdGlvbiBtb2RlJiM4MjIxOy4gVGhpcyBtZWFucyB5b3VyIGNob3NlbiBmb3JtIGlzIDxz dHJvbmc+bm90PC9zdHJvbmc+IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25s eSB1c2VkIG9uY2UgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgdGhl IGltYWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVkJiM4MjIxOy4g SW4gZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5IG9mIGFsbCBt YXRjaGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBhbGwgaW4gb25l IGdvLiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3MgYW5kIGlzIGJl c3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7 MSZxdW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1vZGUgb24uIElm IHRoZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8gdXNlIHRoZSBy ZXBsYWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZvcm0gbGlrZSB0 aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBt YXRjaGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91IG1pZ2h0IGdl dCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRo ZSBtYXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUuanBnLHB1ZmZp bi5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztzIHVzZWZ1bCB0 byBiZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5b3UgY2FuIHRl bGwgY29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+PGNvZGU+Y29s bGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllvdSB3b3Vs ZCB0aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVu Z3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1 b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGluIHRoaXMg Y2FzZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGF0 dHJpYnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRvIHdyYXAgc2lu Z2xlIHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90ZSYjODIyMTsg YXMgYSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBwcmVmZXIuIFlv dSBjYW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNwZWNpZnlpbmcg dGhlIGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9 JnF1b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+PC9wPgoKCTxw PlllcywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBp dGVtcyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2RlPmNvbGxhdGVkZWxpbTwvY29k ZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBj b2xsYXRpb24gbW9kZSBpcyB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0 IHRoZSBlbnRpcmUgbGlzdC4gWW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJv bSB3aXRoaW4gdGhlIGludGVybmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIx Nzsgbm90YXRpb24gdGh1czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj57bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVv dDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5q cGcmcXVvdDsgKGFzIGJlZm9yZSkKe25hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24u anBnCntuYW1lIzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgdGhhdCB3aGVuIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5 IDxzdHJvbmc+ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVn YXJkbGVzcyBvZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3Qu IFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5 IHB1dCB0aGUgcXVvdGVzIGluIHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7 bmFtZSMyfSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1lc3NpbmcgYXJvdW5kIHdpdGggcHVs bGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlzdHMgY2FuIHlpZWxkIHNvbWUgdmVy eSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mgc29tZSBjb21wbGV0ZWx5IHdhY2t5 IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBjb21iaW5pbmcgc21kX2dhbGxlcnkg dGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gZm9yIGEg cmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxl czwvaDI+CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2UgdGhlIGNsYXNzaWMgem9vIHdlYnNp dGUuIExldCYjODIxNztzIGdldCBzb21lIHBpY3R1cmVzIG91dCBvZiB0aGUgZGF0YWJhc2Um IzgyMzA7PC9wPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94 ZWQgZ2FsbGVyeTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3Vi bGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhl IGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGluZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBw YXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxsZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZv ciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGNsYXNzPSZxdW90O2FuaW1hZ2UmcXVv dDsgc3JjPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0Owom bHQ7ZGl2IGNsYXNzPSZxdW90O2FjYXB0aW9uJnF1b3Q7Jmd0O3t0aXRsZX0mbHQ7L2RpdiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbWVhbnMsIGZvciBldmVyeSBtYXRjaGVkIGlt YWdlLCBzdWJzdGl0dXRlIGl0cyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiwgYWx0 IGFuZCB0aXRsZSB0YWdzIGludG8gdGhlIHJlbGV2YW50IHBsYWNlcy4gVGh1cyB5b3UgZ2V0 IGEgc2VyaWVzIG9mIGltYWdlcyBvbiB0aGUgcGFnZSwgd2hpY2ggeW91IGNhbiBzdHlsZSBh Y2NvcmRpbmdseS48L3A+CgoJPHA+Rm9yIGEgbW9yZSBmYW5jeSBvdXRwdXQgdXNpbmcsIHNh eSwgc2xpbWJveCwgeW91IGNvdWxkIGxvYWQgdGhlIHJlbGV2YW50IGxpYnJhcmllcyBhbmQg c3R5bGVzIGluIHRoZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IG9mIHlvdXIgcGFnZTo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0 IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9v bHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0 ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9zbGltYm94LmpzJnF1b3Q7Jmd0 OyZsdDsvc2NyaXB0Jmd0OwombHQ7bGluayByZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0 eXBlPSZxdW90O3RleHQvY3NzJnF1b3Q7IGhyZWY9JnF1b3Q7L2Nzcy9zbGltYm94LmNzcyZx dW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiB5b3VyICYjODIxNjtnYWxsZXJ5 JiM4MjE3OyBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7 IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yg e2NhcHRpb259JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZx dW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcg dGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUg Z2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQg c2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0 aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3 aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3Ug bG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVj dCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhh bXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2gzPgoKCTxwPkEgY29tbW9uIHJlcXVl c3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2Fs bGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUg aW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgc3Vi bGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRo dW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGZv cm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2Vt ZW50IHRhZyBzbyBpdCBvbmx5IGRpc3BsYXlzIHRoZSB0aHVtYm5haWwgaWYgdGhlIHZhbHVl IG9mIHRodW1ibGltaXQgaGFzIDxzdHJvbmc+bm90PC9zdHJvbmc+IGJlZW4gcmVhY2hlZDo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9 JnF1b3Q7bGlnaHRib3gtc21kJnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0 aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90OyZndDsKe29iamVjdH0KJmx0 Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBz cGVjaWZ5aW5nIDxjb2RlPnRodW1ib2Zmc2V0PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3 aWxsIGFsc28gc3RhcnQgdGhlIGxpZ2h0Ym94IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3Ug Y2hvb3NlLiBJZiB5b3Ugd2FudCB0byBzdGFydCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBv c2l0aW9uIDEsIHVzZSB0aGUgPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBp dCB0byB0aGUgdG9wIG9mIHRoZSBsaXN0LCBvciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9w PgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gbGF1bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0 IGxpbmssIGFkZCBzb21ldGhpbmcgbGlrZSA8Y29kZT50ZXh0PSZxdW90O0NsaWNrIHRvIHN0 YXJ0IGxpZ2h0Ym94JnF1b3Q7PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUg MzogcG9wdXAgZ2FsbGVyeTwvaDM+CgoJPHA+VG8gYWNoaWV2ZSBhbiBlZmZlY3Qgc2ltaWxh ciB0byByc3NfdGh1bWJwb3AsIGFkZCBhbiBpbWFnZSBhbmQgY2FwdGlvbiBwbGFjZWhvbGRl ciBvdXRzaWRlIHRoZSBjYWxsIHRvIHNtZF9nYWxsZXJ5LCB0aGVuIGluY2x1ZGUgeW91ciBz bWRfZ2FsbGVyeSB0YWcgYXMgdXN1YWwuIFRoaXMgdGltZSB3ZSBhcmUgb25seSBpbnRlcmVz dGVkIGluIGFsbCB0aGUgcGljdHVyZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyB1cCB0byB0d28g bGV2ZWxzIGJlbG93IGJvdGggJiM4MjIwO2FuaW1hbHMmIzgyMjE7LCBwbHVzIHdoaWNoZXZl ciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2Rl PiBhbmQgdGhlIGltYWdlcyB3aXRoIElEcyAyNSwgMzgsIDM5LCA0MCBhbmQgNDI6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVv dDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZn dDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0 OwombHQ7dHhwOnNtZF9nYWxsZXJ5IHN1YmxldmVsPSZxdW90OzImcXVvdDsKICAgICBjYXRl Z29yeT0mcXVvdDthbmltYWxzLCA/bXlfY3VzdG9tX2ZpZWxkJnF1b3Q7CiAgICAgaWQ9JnF1 b3Q7MjUsIDQyLCAzOC00MCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlz IG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3Ig dGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNv cHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBh IG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1 b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1M ID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlOyZxdW90OwogICAgIG9ubW91c2VvdXQ9JnF1 b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSAm IzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo JiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSAmIzM5OyYjMzk7OyByZXR1cm4g ZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsg YWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVhdGVyIHdheXMgb2YgZG9pbmcgdGhpcyAoZS5n LiB3aXRoIGpRdWVyeSkgYW5kIGl0JiM4MjE3O3Mgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0 aGlzIGZvcm0gaW4gYSBsaXZlIHNpdGUsIGJ1dCBpdCBnaXZlcyBhIGZsYXZvdXIgb2Ygd2hh dCBpcyBwb3NzaWJsZS48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogc2xpZGVzaG93 PC9oMz4KCgk8cD5UaGlzIG9uZSB1c2VzIGNvbGxhdGUgbW9kZSBidXQgaXMgbm90IG11Y2gg bW9yZSBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZC4gSW4geW91ciA8Y29kZT4mbHQ7aGVhZCZn dDs8L2NvZGU+IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBz cmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7 c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMv c2xpZGVzaG93LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhlIHRhZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVv dDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgY29tYm89JnF1b3Q7aW1nbGlzdDp7aWR9 e2V4dH0mcXVvdDsKICBjb2xsYXRlPSZxdW90O3F1b3RlOntpbWdsaXN0fTp7YWx0fSZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBhbGwgcGljdHVyZXMgZnJv bSB0aGUgYmlyZHMgYW5kIGZpc2ggY2F0ZWdvcmllcy4gQWx0aG91Z2ggdGVjaG5pY2FsbHkg dW5uZWNlc3NhcnksIGEgY29tYm8gaGFzIGJlZW4gZGVmaW5lZCB0byBzaG93IGhvdyBpdCBj YW4gYmUgdXNlZC4gVGhpcyBjb21ibyBpcyBjYWxsZWQgPGNvZGU+aW1nbGlzdDwvY29kZT4g YW5kIGlzIGRlZmluZWQgYXMgdGhlIGltYWdlJiM4MjE3O3MgSUQgbnVtYmVyIHBsdXMgaXRz IGV4dGVuc2lvbi4gV2UgdXNlIHRoaXMgaW4gdGhlIGNvbGxhdGUgYXR0cmlidXRlIGFuZCB0 ZWxsIGl0IHRvIHB1dCBkb3VibGUgcXVvdGVzIHJvdW5kIGV2ZXJ5IGl0ZW0gaW4gJiM4MjE2 O2ltZ2xpc3QmIzgyMTc7IGFuZCAmIzgyMTY7YWx0JiM4MjE3Oy4gVGhlbiB3ZSBjYW4gcHV0 IHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBuZWNlc3NhcnkgamF2YXNjcmlwdCBpbiB0aGUgPGNv ZGU+Z2FsbGVyeTwvY29kZT4gZm9ybSB0byBnZW5lcmF0ZSB0aGUgc2xpZGVzaG93OjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9 JnF1b3Q7c2xpZGVzaG93JnF1b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEmcXVvdDsmZ3Q7CiAm bHQ7aW1nIHNyYz0mcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzL3tpZCMxfS5q cGcmcXVvdDsKICAgICBhbHQ9JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0aD0mcXVvdDt7d2lk dGgjMX0mcXVvdDsgaGVpZ2h0PSZxdW90O3toZWlnaHQjMX0mcXVvdDsgLyZndDsKJmx0Oy9k aXYmZ3Q7CjwvY29kZT4KPGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1 b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3IFNsaWRlc2hvdygm cXVvdDtzbGlkZXNob3cxJnF1b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0eHA6c2l0ZV91cmwg LyZndDtpbWFnZXMvJnF1b3Q7LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9XSwKICAgIGNhcHRp b25zOiBbe2FsdH1dLAogICAgY2xhc3NlczogWyZxdW90O3ByZXYmcXVvdDssJnF1b3Q7bmV4 dCZxdW90OywmcXVvdDthY3RpdmUmcXVvdDtdLAogICAgdHlwZTogJnF1b3Q7ZmFkZSZxdW90 OwogIH0pOwombHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0 aGUgaW5pdGlhbCBwb3J0aW9uIChpbiB0aGUgZGl2IGFuZCBpbWcgdGFncykgdXNlcyB0aGUg JiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGRpc3Bs YXkgb25lIGltYWdlIHRvICYjODIyMDtzdGFydCYjODIyMTsgdGhlIHNsaWRlc2hvdy4gSW4g dGhpcyBjYXNlIHdlJiM4MjE3O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgbGlz dCwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlvdSB3YW50ZWQgdG8g c2hvdyB0aGUgZm9ydHktc2Vjb25kIGltYWdlIGluc3RlYWQhIFRoZSBwYXJ0IGluIHRoZSBz Y3JpcHQgdGFnIHVzZXMgdGhlIGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNhdXNlIHRoYXQmIzgy MTc7cyB0aGUgZm9ybWF0IHRoZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwvcD4KCgk8aDMgaWQ9 ImVnNSI+RXhhbXBsZSA1OiBwYWdpbmF0aW9uPC9oMz4KCgk8cD5UbyBhZGQgcGFnaW5nIHRv IGEgZ2FsbGVyeSB5b3UgdXNlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4gYXR0cmlidXRlIHRv IHNob3cgYSBudW1iZXIgb2YgdGh1bWJzIHBlciBwYWdlLiBGb3IgYSBwYWdlZCB0aHVtYnBv cCBnYWxsZXJ5IHRoYXQgc2hvd3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxs c2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0 O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7 dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICBmb3JtPSZx dW90O2dhbGxlcnkmcXVvdDsgcGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9uYXYmcXVvdDsKICBs aW1pdD0mcXVvdDs1JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgJiM4MjE2 O2dhbGxlcnkmIzgyMTc7IGZvcm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgaW4gPGEgaHJl Zj0iI2VnNCI+ZXhhbXBsZSA0PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5X25hdiBmb3JtIG1p Z2h0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsmZ3Q7IyBvZiBwaWNz OiB7dG90YWxpbWFnZXN9Jmx0Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0fSB7bmF2cHJldn0K ICAgICB7bmF2ZWFybGllcn0ge25hdnRoaXN9IHtuYXZsYXRlcn0KICAgICB7bmF2bmV4dH0g e25hdmxhc3R9CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJlbmRlciBzb21ldGhp bmcgc2ltaWxhciB0byB0aGlzIGJlbG93IHRoZSB0aHVtYnM6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+IyBvZiBwaWNzOiAzOAogICAgIEZpcnN0ICZs dDsgMSAyIDMgNCA1IDYgNyA4ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJl ZzYiPkV4YW1wbGUgNjogb25jaGFuZ2U8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIHNpbXVs YXRlIG11bHRpcGxlIGdhbGxlcmllcyBmcm9tIG9uZSBzbWRfZ2FsbGVyeSB0YWcgeW91IGNh biB1c2UgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvICYjODIyMDt3YXRjaCYjODIyMTsgZm9y IHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGltYWdlcyBjaGFuZ2UgYW5kIGluc2VydCBz cGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0 aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6 aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8cD5Zb3UgY2FuIHdhdGNoIHRo ZSB1c3VhbCB0aGluZ3MgbGlrZSA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhv cjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNv ZGU+ZXh0PC9jb2RlPmVuc2lvbiBhbmQgc28gb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5 PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAg IG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFw dGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUg cGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUg ZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntvbmNoYW5nZTpj YXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGh1 bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBjYXRlZ29yeSBzd2l0Y2hlcyBmcm9tICYjODIx NjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zpc2gmIzgyMTc7LiBUaHVzIHlvdXIgZ2FsbGVy eSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJs fSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVj dH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCB3b3VsZCBtYWtlIHR3byBs aWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5haWxzIHdpdGggYSBoZWFkaW5nIDMgYWJvdmUg ZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBjYXRlZ29yeSB0aXRsZS48L3A+CgoJPHA+Tm90 ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2Rl PiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gc2hvdyBqdXN0IG9uZSB0aHVtYm5h aWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFkaW5ncyBhYm92ZSBlYWNoIHRodW1iLiBWaXNp dG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2lsbCBsYXVuY2ggdGhlIGxpZ2h0Ym94IGFuZCBi ZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuPC9wPgoKCTxwPkFuIGV4 dHJhIHBhaXIgb2YgcmVwbGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxlIGlmIHlvdSB3aXNo IHRvIHdyYXAgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyB0byBncm91cCB0aGVtLiBVc2UgdGhl IDxjb2RlPmdyb3VwdGFnPC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXBjbGFzczwvY29kZT4gYXR0 cmlidXRlcyB0byBzZXQgaXQgdXAsIHRoZW4gdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGNh bGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8 L2NvZGU+IGJlY29tZSBhdmFpbGFibGUuIFRoZXkgYXJlIGNvbmRpdGlvbmFsIGFuZCBhcmUg b25seSBwb3B1bGF0ZWQgd2hlbiB0aGUgYXR0cmlidXRlcyB5b3UgYXJlIHdhdGNoaW5nL3Nv cnRpbmcgYnkgY2hhbmdlLiBVc2UgaXQgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgaWQ9JnF1b3Q7 P2FydGljbGVfaW1hZ2UmcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZx dW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRl Z29yeV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90Owog ICAgIGdyb3VwdGFnPSZxdW90O2RpdiZxdW90OyBncm91cGNsYXNzPSZxdW90O2JveCZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9Cntncm91cHRhZ3N0YXJ0fQombHQ7 YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9 JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7Cntncm91cHRhZ2VuZH0KPC9jb2RlPjwv cHJlPgoKCTxwPk5vdGUgdGhhdCB5b3UgY2FuIG1vdmUgdGhlIDxjb2RlPmdyb3VwdGFnc3Rh cnQ8L2NvZGU+IHRvIHN1cnJvdW5kIHRoZSA8Y29kZT5vbmNoYW5nZTwvY29kZT5kIHRpdGxl IGlmIHlvdSB3aXNoLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3OiBzbWRfZXZlcnk8 L2gzPgoKCTxwPllvdSBjYW4gYWxzbyB0cmlnZ2VyIGFuIG9uY2hhbmdlIGV2ZW50IGV2ZXJ5 IG50aCBpbWFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2Zyb250cGFnZSZxdW90Owog ICAgIGxpbWl0PSZxdW90OzkmcXVvdDsgc29ydD0mcXVvdDtyYW5kb20mcXVvdDsKICAgICBv bmNoYW5nZT0mcXVvdDtzbWRfZXZlcnk6MyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O3Vs JnF1b3Q7IGdyb3VwY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7Jmd0Owp7Z3JvdXB0YWdz dGFydH0KICAgJmx0O2xpJmd0OwogICAgICAmbHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6cGVy bWxpbmsgaWQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICAgICZs dDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0 OwogICAgICAgICAmbHQ7c3BhbiZndDt7dGl0bGV9Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7 L2EmZ3Q7CiAgICZsdDsvbGkmZ3Q7Cntncm91cHRhZ2VuZH0KJmx0Oy90eHA6c21kX2dhbGxl cnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4OiB1bmNhdGVn b3JpemVkIGltYWdlczwvaDM+CgoJPHA+U29tZXRpbWVzIHlvdSBtaWdodCB3aXNoIHRvIGV4 dHJhY3QgaW1hZ2VzIHRoYXQgZG8gbm90IGhhdmUgYSBjYXRlZ29yeSBhc3NpZ25lZC4gWW91 IG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHZhbHVlIDxjb2RlPlNNRF9FTVBUWTwvY29kZT4g Zm9yIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDtTTURfRU1QVFksIHNob2VzJnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Zb3UgY2FuIGFsc28gbmVnYXRlIHRoZSBs b2dpYyBzbyB5b3UgY2FuIGV4dHJhY3QgYWxsIGltYWdlcyB0aGF0IGhhdmUgc29tZSAoYW55 KSBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7 IVNNRF9FTVBUWSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzkiPkV4 YW1wbGUgOToge29iamVjdH0gYW5kIG9iamVjdGZvcm08L2gzPgoKCTxwPlRoZSBkZWZhdWx0 IDxjb2RlPntvYmplY3R9PC9jb2RlPiBvdXRwdXRzIGEgc2ltcGxlIGh5cGVybGlua2VkIHRo dW1ibmFpbC4gSWYgeW91IHdhbnQgc29tZXRoaW5nIGEgYml0IG1vcmUgZXhvdGljLCBsaWtl IGxhdW5jaGluZyBhIHNoYWRvd2JveCBlZmZlY3QgZnJvbSBhIHNpbmdsZSB0aHVtYm5haWwg dGhhdCBhbHNvIGhhcyB0aGUgY2FwdGlvbiBiZW5lYXRoIGl0LCB5b3UgbmVlZCB0byBjdXN0 b21pc2UgdGhlIDxjb2RlPntvYmplY3R9PC9jb2RlPiB2aWEgdGhlIDxjb2RlPm9iamVjdGZv cm08L2NvZGU+IGF0dHJpYnV0ZS4gUHV0IGEgbGlzdCBvZiBpbWFnZSBJRHMgaW4geW91ciBh cnRpY2xlIGltYWdlIGZpZWxkIGFuZCB0aGVuOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgdGh1bWJsaW1pdD0mcXVv dDsxJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgd3JhcHRhZz0m cXVvdDtkaXYmcXVvdDsKICAgICBjbGFzcz0mcXVvdDt0aHVtYnMmcXVvdDsgb2JqZWN0Zm9y bT0mcXVvdDtteV9vYmomcXVvdDsKICAgICBjb21ibz0mcXVvdDthcnRpZDo/dGhpc2lkJnF1 b3Q7Jmd0OwogICZsdDthIHJlbD0mcXVvdDtzaGFkb3dib3hbe2FydGlkfV07CiAgICAgb3B0 aW9ucz17Y291bnRlclR5cGU6JiMzOTtza2lwJiMzOTssCiAgICAgY29udGludW91czp0cnVl LAogICAgIGFuaW1hdGU6ZmFsc2UsCiAgICAgYW5pbVNlcXVlbmNlOiYjMzk7c3luYyYjMzk7 fSZxdW90OwogICAgIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDt7 YWx0fSZxdW90OyZndDt7b2JqZWN0fSZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkm Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BbmQgaW4gPGNvZGU+bXlfb2JqPC9jb2RlPiwgeW91 IGNvdWxkIHB1dDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8m Z3Q7e3RpdGxlfQo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNlIGhvdyB0aGUgcmVwbGFjZW1l bnQgdGFncyBzdGlsbCB3b3JrIGluIHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPj8gVGhp cyBhbGxvd3MgeW91IHRvIGJ1aWxkIHVwIGEgY29tcGxldGUgbGF5b3V0IGZvciB0aGUgbGF1 bmNoYWJsZSB0aHVtYm5haWwgYW5kIGhhdmUgaXQgb25seSByZW5kZXJlZCBvbmNlIG9uIHRo ZSBwYWdlLiBUaGUgcmVzdCBvZiB0aGUgY29udGFpbmVyIGluIHRoaXMgZXhhbXBsZSByZW5k ZXJzIGFsbCB0aGUgJiM4MjIwO2hpZGRlbiYjODIyMTsgaW1hZ2VzIGluIHRoZSBzaGFkb3di b3ggZ2FsbGVyeS48L3A+CgoJPGgzIGlkPSJlZzEwIj5FeGFtcGxlIDEwOiA8Y29kZT5jb3Vu dGZvcm08L2NvZGU+PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90Owog ICAgIGNvdW50Zm9ybT0mcXVvdDsxOmdhbF9hOnNtZF9hYm92ZSwKICAgICAgIHt0b3RhbGlt YWdlc306Z2FsX2MsCiAgICAgICBzbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYiZx dW90OwogICAgIGNvdW50cG9zPSZxdW90O2JlbG93JnF1b3Q7Jmd0OwombHQ7dHhwOnRodW1i bmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IDxjb2RlPmNvdW50cG9zPC9jb2RlPiBp cyBzZXQgdG8gPGNvZGU+YmVsb3c8L2NvZGU+IGluIHRoaXMgZXhhbXBsZSBzbyBhbGwgb3V0 cHV0IGFwcGVhcnMgPGVtPmFmdGVyPC9lbT4gdGhlIGdpdmVuIGltYWdlcy4gSWYgeW91IG1h ZGUgdGhlIGZvbGxvd2luZyB0aHJlZSBmb3JtcywgeW91ciB0YWcgd291bGQgc3BsaXQgdGhl IGdhbGxlcnkgaW50byAmIzgyMTY7cm93cyYjODIxNzsgb2YgMyBpbWFnZXM6PC9wPgoKCTxw PmdhbF9hOiA8Y29kZT4mbHQ7ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZndDs8L2Nv ZGU+PGJyIC8+CmdhbF9iOiA8Y29kZT4mbHQ7L2RpdiZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90 O25ld3JvdyZxdW90OyZndDs8L2NvZGU+PGJyIC8+CmdhbF9jOiA8Y29kZT4mbHQ7L2RpdiZn dDs8L2NvZGU+PC9wPgoKCTxwPkJyZWFraW5nIHRoZSA8Y29kZT5jb3VudGZvcm08L2NvZGU+ IGF0dHJpYnV0ZSBkb3duIGludG8gaXRzIGNvbXBvbmVudHMsIHlvdSBjYW4gc2VlIHRoYXQ6 PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+MTpnYWxfYTpzbWRfYWJvdmU8L2NvZGU+IGFkZHMg dGhlICYjODIxNjtuZXdyb3cmIzgyMTc7IGRpdiBhYm92ZSB0aGUgZmlyc3QgaW1hZ2U8L2xp PgoJCTxsaT48Y29kZT57dG90YWxpbWFnZXN9OmdhbF9jPC9jb2RlPiBhZGRzIHRoZSBjbG9z aW5nIGRpdiBiZWxvdyB0aGUgbGFzdCBpbWFnZSBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48 Y29kZT5zbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYjwvY29kZT4gYWRkcyBhIGNs b3NpbmcgYW5kIHRoZW4gYW4gb3BlbmluZyBkaXYgYWZ0ZXIgZXZlcnkgM3JkIGltYWdlLCA8 ZW0+ZXhjZXB0PC9lbT4gb24gdGhlIGxhc3QgaW1hZ2UuIElmIHdlIGRpZG4mIzgyMTc7dCBw dXQgdGhlIGV4Y2VwdGlvbiBpbiwgYW5kIHlvdSBoYWQgMTIgdGh1bWJuYWlscyBpbiB5b3Vy IGdhbGxlcnkgKHdoaWNoIGlzIGRpdmlzaWJsZSBieSAzISkgeW91IHdvdWxkIHNlZSB0aGUg Y29udGVudHMgb2YgZ2FsMiBhZnRlciB0aGUgbGFzdCBpbWFnZSBhcyB3ZWxsPC9saT4KCTwv dWw+CgoJPGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHA+QWxsIGF2YWls YWJsZSB2ZXJzaW9ucyBhbmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxz dHJvbmc+QmV0YTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDAuMSB8 IEluaXRpYWwgcmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+ CgkJPGxpPjE5IEZlYiAwOCB8IDAuMiB8IEFkZGVkIHtnYWxsZXJ5aWR9ICh0aGFua3Mgcmxv YWRlcnJvKSBhbmQgc29tZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9u Zz5PZmZpY2lhbDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDAuMyB8 IE9mZmljaWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7 IGFkZGVkIHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyBq YWtvYik8L2xpPgoJCTxsaT4xNSBNYXIgMDggfCAwLjMxIHwgRml4ZWQgYSBjb3VwbGUgb2Yg dW5kZWZpbmVkIGluZGV4ZXMgYW5kIGFkZGVkIHtjYXRlZ29yeV90aXRsZX0gKHRoYW5rcyBq c3R1YmJzKTwvbGk+CgkJPGxpPjE3IE1hciAwOCB8IDAuMzIgfCBGaXhlZCBhbm90aGVyIHVu ZGVmaW5lZCBpbmRleCBhbmQgcmVtb3ZlZCBib2d1cyBjYWxsIHRvIHNtZF9saWIgKGJvdGgg dGhhbmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1hciAwOCB8IDAuMzMgfCBEaWQgdjAu MzEgcHJvcGVybHksIGluY2x1ZGluZyB0YWJsZSBwcmVmaXggKHRoYW5rcyBuYXJkbyk8L2xp PgoJCTxsaT4wMSBBcHIgMDggfCAwLjM0IHwgRml4ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlNR TDwvc3Bhbj4gcGFyZW50aGVzaXMgYnVnIDsgYWRkZWQgZW1wdHljbGFzcyBhbmQge21heGlt YWdlc30gKHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgMC40IHwg Q2hhbmdlZCB0aHVtYiB0byBhbGxvdyB0aHVtYi9mdWxsc2l6ZSBzd2FwcGluZyA7IEFkZGVk IHRodW1iY2hhbmdlLCB0aHVtYmNoYW5nZXdyYXB0YWcsIHRodW1iY2hhbmdlY2xhc3MsIHt0 aHVtYmluZGV4fSwge3RodW1iY291bnRlcn0gYW5kIHRoZSB7Y2hhbmdlZDoqfSByZXBsYWNl bWVudCB0YWdzICh0aGFua3MgZnVscyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjQxIHwg Rml4ZWQgRGlyZWN0b3J5IHNlcGFyYXRvciAodGhhbmtzIGN1ZGEpIDsgYWRkZWQgcmF3IHBh Z2UgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBuYXYgcmVwbGFjZW1l bnQgYXJyYXkgYW5kIG1hZGUgdGhlIG5hdiBhcnJheSBhdmFpbGFibGUgaW4gdGhlIHN0YW5k YXJkIHJlcGxhY2VtZW50cyBhcnJheSAodGhhbmtzIHZpc3VhbHBlb3BsZSk8L2xpPgoJCTxs aT4yNyBNYXkgMDggfCAwLjQyIHwgQWRkZWQgcGFnZXBvcyBhbmQgbWFkZSBwYWdlIGJsb2Nr cyBpbmRlcGVuZGVudCBvZiB0aHVtYiBibG9jayAodGhhbmtzIGR1Y2hhbXApPC9saT4KCQk8 bGk+MTAgSnVuIDA4IHwgMC40MyB8IEZpeGVkIHNvcnQ9JiM4MjIwO2ZpeGVkJiM4MjIxOyB3 aGVuIHVzaW5nIGxpbWl0ICh0aGFua3Mgcm9iaW43NDYpIDsgYWRkZWQgcGVyLWdyb3VwIG9u Y2hhbmdlIHdyYXBwaW5nIGFuZCBhbGxvd2VkIGZpeGVkIHNvcnRpbmcgb2YgY2F0ZWdvcmll cyAodGhhbmtzIGpzdHViYnMpIDsgZGVwcmVjYXRlZCB0aHVtYmNoYW5nZSogYW5kIHJlbmFt ZWQgYXMgb25jaGFuZ2UqIDsgZml4ZWQgJGlkeCBjb3VudGVyIHByb2JsZW08L2xpPgoJCTxs aT4xMCBKdW4gMDggfCAwLjQ0IHwgQXR0ZW1wdCAjMiBhdCBwZXItZ3JvdXAgb25jaGFuZ2Ug d3JhcHBpbmcgKHRoYW5rcyBhZ2FpbiBqc3R1YmJzKTwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8 IDAuNDUgfCBGaXhlZCBsYWNrIG9mIG91dHB1dCB3aGVuIG5vdCB1c2luZyBjYXRlZ29yaWVz ICh0aGFua3Mgcm9iaW43NDYpPC9saT4KCQk8bGk+MTYgTm92IDA4IHwgMC40NiB8IEFkZGVk IGNvbGxhdGVkZWxpbSAodGhhbmtzIGN1cmlvdXopIDsgZml4ZWQgKEkgaG9wZSkgdGhlIGNh dGVnb3J5IC8gaWQgYnVnIGZyb20gMC40NCBhbmQgMC40NSAodGhhbmtzIHJvYmluNzQ2L25h cmRvKTwvbGk+CgkJPGxpPjEzIEZlYiAwOSB8IDAuNSB8IFJlcXVpcmVzIHNtZF9saWIgOyBh ZGRlZCA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0ICh0aGFua3MgbmV0 LWNhcnZlcikgOyBhZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIHVuY2F0ZWdvcmlzZWQg aW1hZ2VzICh0aGFua3MgeHphbWVuKSA7ICYjODIxNjs/JiM4MjE3OyB2YXJzIGV4cGFuZGVk IHRvIGxpbmsgLyBpbWFnZSAvIGZpbGUgLyA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7 PC9jb2RlPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgOyBu ZXcgYXR0cmlidXRlczogPGNvZGU+ZXNjYXBlPC9jb2RlPiwgPGNvZGU+aHRtbF9pZDwvY29k ZT4sIDxjb2RlPmZvcm1hdDwvY29kZT4sIDxjb2RlPmdtdDwvY29kZT4sIDxjb2RlPmxhbmc8 L2NvZGU+ICh0aGFua3MgbWFuaXF1aSksIDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gOyBp bXByb3ZlZCA8Y29kZT57b2JqZWN0fTwvY29kZT4gc3VwcG9ydCBhbmQgYWRkZWQgPGNvZGU+ b2JqZWN0Zm9ybTwvY29kZT4gKHRoYW5rcyB0eWUvcnZ0dXJuYWdlKSA7IDxjb2RlPnt0aXRs ZX08L2NvZGU+ID09IDxjb2RlPntjYXB0aW9ufTwvY29kZT4gYXQgbGFzdCEgOyByZW1vdmVk IDxjb2RlPnRodW1iY2hhbmdlPC9jb2RlPiogYXR0cmlidXRlcyA7IGltcHJvdmVkIHN1cHBv cnQgZm9yIHRhYmxlIGV4dGVuc2lvbnMgKHZpYSB0aGUgPGNvZGU+Y29sdW1uczwvY29kZT4g YXR0cmlidXRlOiB0aGFua3MgUmVkRm94KSA7IGFkZGVkIDxjb2RlPnNtZF9ldmVyeTwvY29k ZT4gc3ludGF4IHRvIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiAodGhhbmtzIGpha29iKSA7IGZp eGVkIG9mZnNldCBidWcgKHRoYW5rcyBmZXJhZ25vbGkpPC9saT4KCQk8bGk+MDEgTWFyIDA5 IHwgMC41MSB8IEFkZGVkIDxjb2RlPmNvdW50Zm9ybTwvY29kZT4gYW5kIDxjb2RlPmNvdW50 cG9zPC9jb2RlPiA7IGZpeGVkIDxjb2RlPntoYXN0aHVtYn08L2NvZGU+IHdhcm5pbmc8L2xp PgoJCTxsaT4xNiBOb3YgMDkgfCAwLjUyIHwgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gNC4yLjAgb25seSA7IGFkZGVkIGRhdGFiYXNlIHRodW1ibmFpbCBoZWlnaHQgYW5kIHdp ZHRoIHN1cHBvcnQgOyBhZGRlZCA8Y29kZT5hc3BlY3Q8L2NvZGU+LCA8Y29kZT5kaW1lbnNp b25zPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+ZXh0ZW5zaW9uPC9jb2Rl PiBhbmQgPGNvZGU+aW1nc2l6ZTwvY29kZT4gYXR0cmlidXRlcyA7IGZpeGVkIHF1b3RlIHBh cnNpbmcgaW4gPGNvZGU+ZXNjYXBlPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIHdhcm5pbmcgd2hl biB1c2luZyA8Y29kZT5maXhlZDwvY29kZT4gc29ydGluZyAoYm90aCB0aGFua3MgbWFuaXF1 aSk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoKCTxwPlRo aXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRoZSBhd2Vz b21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdldF9mb3JfZWFjaF9pbWFnZSBw bHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0YW5kcyBvbiB0aGUgc2hvdWxk ZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3VwZWQgdXAgdmVyc2lvbiBvZiB0 aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20gc21kX3NsaW1ib3guIFRvIHRo YXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQgdG8gYW55b25lIHdobyBoYXMg cG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1lIG9yIHRoZSBzbWRfc2xpbWJv eCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91cy48L3A+Cgo8L2Rpdj4KPCEt LSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQt d2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBt b25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5i bG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFj a2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBw eCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6 dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1i b3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAg YTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3Jh dGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90 dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3Jn aWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRf aGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4 IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQoj c21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5z LXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJh bnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hl bHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFj aW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7 IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQoj c21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5 OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBw YWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVy OjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qt c3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1aXJlZCB7Y29sb3I6cmVkO30K I3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAu YnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lO IENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6ImIzYWZkYWYyNDA1ODcwNGViYzQ0YjZk MDk1MzY5M2ViIjt9