# upm_image v.0.6.2 # More powerful image display. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-image # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InVwbV9pbWFnZSI7czoxMToiZGVzY3JpcHRpb24iO3M6 Mjg6Ik1vcmUgcG93ZXJmdWwgaW1hZ2UgZGlzcGxheS4iO3M6NzoidmVyc2lvbiI7czo1OiIw LjYuMiI7czo0OiJ0eXBlIjtpOjE7czo2OiJhdXRob3IiO3M6MTM6Ik1hcnkgRnJlZGJvcmci O3M6MTA6ImF1dGhvcl91cmkiO3M6NDM6Imh0dHA6Ly91dHRlcnBsdXNoLmNvbS90eHAtcGx1 Z2lucy91cG0taW1hZ2UiO3M6NDoiY29kZSI7czoyNTI0MzoidXBtX2ltYWdlX2luc3RhbGwo KTsKCglpZiAodHhwaW50ZXJmYWNlID09ICdhZG1pbicpCgl7CgkJYWRkX3ByaXZzKCd1cG1f aW1hZ2VfcHJlZnMnLCAnMSwyJyk7CgkJcmVnaXN0ZXJfdGFiKCdleHRlbnNpb25zJywgJ3Vw bV9pbWFnZV9wcmVmcycsICd1cG1faW1hZ2UnKTsKCQlyZWdpc3Rlcl9jYWxsYmFjaygndXBt X2ltYWdlX3ByZWZzJywgJ3VwbV9pbWFnZV9wcmVmcycpOwoJfQoKCWVsc2UKCXsKCQlpZiAo Z3BzKCdqcycpID09ICd1cG1faW1hZ2UnKQoJCXsKCQkJd2hpbGUgKEBvYl9lbmRfY2xlYW4o KSk7CgoJCQl1cG1faW1hZ2VfanMoKTsKCQl9CgoJCWVsc2UKCQl7CgkJCXVwbV9pbWFnZV9j aGVja19sb2FkKCk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9hcnRpY2xl X2ltYWdlKCRhdHRzID0gYXJyYXkoKSwgJHRoaW5nID0gTlVMTCkKCXsKCQlnbG9iYWwgJHBy ZWZzLCAkdGhpc2FydGljbGU7CgoJCSRhdHRzID0gbEF0dHMoYXJyYXkoCgkJCSdicmVhaycJ CQkJPT4gJycsCgkJCSdicmVha19jbGFzcycgPT4gJycsCgkJCSdjbGFzcycJCQkJPT4gJycs CgkJCSdmb3JtJwkJCQk9PiAnJywKCQkJJ2lkJwkJCQkJPT4gJycsCgkJCSdsaW1pdCcJCQkJ PT4gJycsCgkJCSdvZmZzZXQnCQkJPT4gMCwKCQkJJ3Nob3dfd2lkdGgnCT0+ICd5ZXMnLAoJ CQknc2hvd19oZWlnaHQnID0+ICd5ZXMnLAoJCQknc2hvd19hbHQnCQk9PiAneWVzJywKCQkJ J3Nob3dfdGl0bGUnCT0+ICd5ZXMnLAoJCQkndHlwZScJCQkJPT4gJ2ltYWdlJywKCQkJJ3Vy bCcJCQkJCT0+ICcnLAoJCQknd3JhcGZvcm0nCQk9PiAnJywKCQkJJ3dyYXB0YWcnCQkJPT4g JycsCgkJCSd4aHRtbCcJCQkJPT4gJ3llcycKCQkpLCAkYXR0cyk7CgoJCWV4dHJhY3QoJGF0 dHMpOwoKCQkkYXJ0aWNsZV9pbWFnZSA9ICR0aGlzYXJ0aWNsZVsnYXJ0aWNsZV9pbWFnZSdd OwoKCQlpZiAoZW1wdHkoJGFydGljbGVfaW1hZ2UpKQoJCXsKCQkJcmV0dXJuOwoJCX0KCgkJ JGltYWdlX3VybCA9IHJhd3VybGVuY29kZSgkYXJ0aWNsZV9pbWFnZSk7CgoJCWlmIChmaWxl X2V4aXN0cygkaW1hZ2VfdXJsKSkKCQl7CgkJCSR3ID0gJyc7CgkJCSRoID0gJyc7CgoJCQlp ZiAoJHNob3dfd2lkdGggb3IgJHNob3dfaGVpZ2h0KQoJCQl7CgkJCQkkZm9wZW4gPSBnZXRf Y2ZnX3ZhcignYWxsb3dfdXJsX2ZvcGVuJykgPyB0cnVlIDogZmFsc2U7CgoJCQkJaWYgKCRm b3BlbikKCQkJCXsKCQkJCQlsaXN0KCR3LCAkaCkgPSBnZXRpbWFnZXNpemUoJGltYWdlX3Vy bCk7CgkJCQl9CgkJCX0KCgkJCSRvdXQgPSAnPGltZyBzcmM9IicuJGltYWdlX3VybC4nIicu CgkJCQkoICgkaWQgYW5kICEkd3JhcHRhZykgPyAnIGlkPSInLiRpZC4nIicgOiAnJykuCgkJ CQkoICgkY2xhc3MgYW5kICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicgOiAn JykuCgkJCQkoICgkdyBhbmQgKCRzaG93X3dpZHRoID09ICd5ZXMnKSkgPyAnIHdpZHRoPSIn LiR3LiciJyA6ICcnICkuCgkJCQkoICgkaCBhbmQgKCRzaG93X2hlaWdodCA9PSAneWVzJykp ID8gJyBoZWlnaHQ9IicuJGguJyInIDogJycgKS4KCQkJCScgYWx0PSIiJy4KCQkJCSgkeGh0 bWwgPT0gJ3llcycgPyAnIC8+JyA6ICc+Jyk7CgoJCQlpZiAoJHVybCkKCQkJewoJCQkJJG91 dCA9IGlzX251bWVyaWMoJHVybCkgPyBocmVmKCRvdXQsIHBlcm1saW5rdXJsX2lkKCR1cmwp KSA6CWhyZWYoJG91dCwgJHVybCk7CgkJCX0KCgkJCXJldHVybiAoJHdyYXB0YWcpID8gZG9U YWcoJG91dCwgJHdyYXB0YWcsICRjbGFzcywgJycsICRpZCkgOiAkb3V0OwoJCX0KCgkJaWYg KHN0cnN0cigkYXJ0aWNsZV9pbWFnZSwgJywnKSkKCQl7CgkJCWlmICgkbGltaXQgPT0gMSkK CQkJewoJCQkJJGFydGljbGVfaW1hZ2UgPSBqb2luKCcnLCBhcnJheV9zbGljZShleHBsb2Rl KCcsJywgJGFydGljbGVfaW1hZ2UpLCAkb2Zmc2V0LCAxKSk7CgkJCX0KCgkJCWVsc2UKCQkJ ewoJCQkJcmV0dXJuIHVwbV9hcnRpY2xlX2ltYWdlX2xpc3QoJGFydGljbGVfaW1hZ2UsICRh dHRzLCAkdGhpbmcpOwoJCQl9CgkJfQoKCQlpZiAoaXNfbnVtZXJpYygkYXJ0aWNsZV9pbWFn ZSkpCgkJewoJCQkkaW1hZ2VfaWQgPSBkb1NsYXNoKCRhcnRpY2xlX2ltYWdlKTsKCgkJCSRy cyA9IHNhZmVfcm93KCcqJywgJ3R4cF9pbWFnZScsICJpZCA9ICckaW1hZ2VfaWQnIGxpbWl0 IDAsIDEiKTsKCgkJCWlmICghJHJzKQoJCQl7CgkJCQlyZXR1cm4gKCRwcmVmc1sncHJvZHVj dGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpID8KCQkJCQl1cG1faW1hZ2VfZ1R4dCgnbm90X2Zv dW5kJywgYXJyYXkoJ3tpbWFnZX0nID0+ICRpbWFnZV9pZCkpIDoKCQkJCQknJzsKCQkJfQoJ CX0KCgkJZWxzZQoJCXsKCQkJJGltYWdlX25hbWUgPSBkb1NsYXNoKCRhcnRpY2xlX2ltYWdl KTsKCgkJCSRycyA9IHNhZmVfcm93KCcqJywgJ3R4cF9pbWFnZScsICJuYW1lID0gJyRpbWFn ZV9uYW1lJyBsaW1pdCAwLCAxIik7CgoJCQlpZiAoISRycykKCQkJewoJCQkJcmV0dXJuICgk cHJlZnNbJ3Byb2R1Y3Rpb25fc3RhdHVzJ10gIT0gJ2xpdmUnKSA/CgkJCQkJdXBtX2ltYWdl X2dUeHQoJ25vdF9mb3VuZCcsIGFycmF5KCd7aW1hZ2V9JyA9PiAkaW1hZ2VfbmFtZSkpIDoK CQkJCQknJzsKCQkJfQoJCX0KCgkJaWYgKCRmb3JtIG9yICR0aGluZykKCQl7CgkJCXJldHVy biB1cG1faW1nX2N1c3RvbSgkcnMsICRhdHRzLCAkZm9ybSwgJHRoaW5nKTsKCQl9CgoJCWVs c2UKCQl7CgkJCXJldHVybiB1cG1faW1nX2RlZmF1bHQoJHJzLCAkYXR0cyk7CgkJfQoJfQoK Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQovLyBQYXJ0cyBmcm9tIHplbV9hcnRpY2xlX2ltYWdlCi8vIGh0dHA6Ly90 aHJlc2hvbGRzdGF0ZS5jb20vCi8vIGh0dHA6Ly92aWdpbGFudC50di8KLy8gVGhhbmtzIEFs ZXguCgoJZnVuY3Rpb24gdXBtX2FydGljbGVfaW1hZ2VfbGlzdCgkYXJ0aWNsZV9pbWFnZSwg JGF0dHMsICR0aGluZyA9IE5VTEwpCgl7CgkJZ2xvYmFsICRwcmVmczsKCgkJZXh0cmFjdCgk YXR0cyk7CgoJCSRvdXQgPSBhcnJheSgpOwoKCQlpZiAoJGxpbWl0KQoJCXsKCQkJJGltYWdl cyA9IGFycmF5X3NsaWNlKGV4cGxvZGUoJywnLCAkYXJ0aWNsZV9pbWFnZSksICRvZmZzZXQs ICRsaW1pdCk7CgkJfQoKCQllbHNlCgkJewoJCQkkaW1hZ2VzID0gYXJyYXlfc2xpY2UoZXhw bG9kZSgnLCcsICRhcnRpY2xlX2ltYWdlKSwgJG9mZnNldCk7CgkJfQoKCQlmb3IgKCRpID0g MDsgJGkgPCBjb3VudCgkaW1hZ2VzKTsgJGkrKykKCQl7CgkJCWlmIChlbXB0eSgkaW1hZ2Vz WyRpXSkpCgkJCXsKCQkJCXVuc2V0KCRpbWFnZXNbJGldKTsKCQkJfQoJCX0KCgkJJGlkc19y ZXF1ZXN0ZWQgPSAkaW1hZ2VzOwoKCQkkaW1hZ2VzID0gZG9TbGFzaChqb2luKCcsJywgJGlt YWdlcykpOwoKCQkkcnMgPSBzYWZlX3Jvd3MoJyonLCAndHhwX2ltYWdlJywgImlkIGluKCRp bWFnZXMpIG9yZGVyIGJ5IGZpZWxkKGlkLCAkaW1hZ2VzKSIpOwoKCQlpZiAoJHJzKQoJCXsK CQkJJGlkc19mb3VuZCA9IGFycmF5KCk7CgoJCQlmb3JlYWNoICgkcnMgYXMgJHJvdykKCQkJ ewoJCQkJJGlkc19mb3VuZFtdID0gJHJvd1snaWQnXTsKCgkJCQlpZiAoJGZvcm0gb3IgJHRo aW5nKQoJCQkJewoJCQkJCSRvdXRbXSA9IHVwbV9pbWdfY3VzdG9tKCRyb3csICRhdHRzLCAk Zm9ybSwgJHRoaW5nKTsKCQkJCX0KCgkJCQllbHNlCgkJCQl7CgkJCQkJJGltZ191cmwgPSBo dS4kcHJlZnNbJ2ltZ19kaXInXS4nLyc7CgkJCQkJJGltZyA9ICRyb3dbJ2lkJ10uJHJvd1sn ZXh0J107CgoJCQkJCWlmIChpbl9hcnJheSgkdHlwZSwgYXJyYXkoJ3BvcHVwJywgJ3RodW1i JywgJ3RodW1ibmFpbCcpKSkKCQkJCQl7CgkJCQkJCSRpbWdfcGF0aCA9ICRwcmVmc1sncGF0 aF90b19zaXRlJ10uRFMuJHByZWZzWydpbWdfZGlyJ10uRFM7CgkJCQkJCSR0aHVtYiA9ICRy b3dbJ2lkJ10uJ3QnLiRyb3dbJ2V4dCddOwoKCQkJCQkJJHRodW1iX2V4aXN0cyA9IGZhbHNl OwoKCQkJCQkJaWYgKCRyb3dbJ3RodW1ibmFpbCddIGFuZCBmaWxlX2V4aXN0cygkaW1nX3Bh dGguJHRodW1iKSkKCQkJCQkJewoJCQkJCQkJJHRodW1iX2V4aXN0cyA9IHRydWU7CgoJCQkJ CQkJbGlzdCgkdGh1bWJfdywgJHRodW1iX2gpID0gZ2V0aW1hZ2VzaXplKCRpbWdfcGF0aC4k dGh1bWIpOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlzd2l0Y2ggKCR0eXBlKQoJCQkJCXsKCQkJ CQkJY2FzZSAncG9wdXAnOgoJCQkJCQkJaWYgKCR0aHVtYl9leGlzdHMpCgkJCQkJCQl7CgkJ CQkJCQkJJG91dFtdID0gJzxhIGhyZWY9IicuJGltZ191cmwuJGltZy4nIicuCgkJCQkJCQkJ CSggKCRyb3dbJ2NhcHRpb24nXSBhbmQgKCRzaG93X3RpdGxlID09ICd5ZXMnKSkgPyAnIHRp dGxlPSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snY2FwdGlvbiddKS4nIicgOiAnJyApLgoJ CQkJCQkJCQkoICgkY2xhc3MgYW5kICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4n IicgOiAnJykuCgkJCQkJCQkJCScgb25jbGljaz0idXBtX3BvcF9pbWcodGhpcy5ocmVmLCBc JycuJHJvd1sndyddLidcJywgXCcnLiRyb3dbJ2gnXS4nXCcsIFwnJy4kcm93WyduYW1lJ10u J1wnLCB0aGlzLnRpdGxlKTsgcmV0dXJuIGZhbHNlOyI+Jy4KCQkJCQkJCQkJJzxpbWcgc3Jj PSInLiRpbWdfdXJsLiR0aHVtYi4nIicuCgkJCQkJCQkJCSgkc2hvd193aWR0aCA9PSAneWVz JyA/ICcgd2lkdGg9IicuJHRodW1iX3cuJyInIDogJycpLgoJCQkJCQkJCQkoJHNob3dfaGVp Z2h0ID09ICd5ZXMnID8gJyBoZWlnaHQ9IicuJHRodW1iX2guJyInIDogJycpLgoJCQkJCQkJ CQkoICgkcm93WydhbHQnXSBhbmQgKCRzaG93X2FsdCA9PSAneWVzJykpID8gJyBhbHQ9Iicu aHRtbHNwZWNpYWxjaGFycygkcm93WydhbHQnXSkuJyIgdGl0bGU9IiInIDogJyBhbHQ9IiIn ICkuCgkJCQkJCQkJCSgkeGh0bWwgPT0gJ3llcycgPyAnIC8+JyA6ICc+JykuCgkJCQkJCQkJ CSc8L2E+JzsKCQkJCQkJCX0KCgkJCQkJCQllbHNlaWYgKCRwcmVmc1sncHJvZHVjdGlvbl9z dGF0dXMnXSAhPSAnbGl2ZScpCgkJCQkJCQl7CgkJCQkJCQkJJG91dFtdID0gdXBtX2ltYWdl X2dUeHQoJ25vX3RodW1iJywgYXJyYXkoJ3tpbWFnZX0nID0+ICRyb3dbJ2lkJ10pKTsKCQkJ CQkJCX0KCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd0aHVtYm5haWwnOgoJCQkJCQljYXNl ICd0aHVtYic6CgkJCQkJCQlpZiAoJHRodW1iX2V4aXN0cykKCQkJCQkJCXsKCQkJCQkJCQkk b3V0W10gPSAnPGltZyBzcmM9IicuJGltZ191cmwuJHRodW1iLiciJy4KCQkJCQkJCQkJKCAo JGNsYXNzIGFuZCAhJHdyYXB0YWcpID8gJyBjbGFzcz0iJy4kY2xhc3MuJyInIDogJycpLgoJ CQkJCQkJCQkoJHNob3dfd2lkdGggPT0gJ3llcycgPyAnIHdpZHRoPSInLiR0aHVtYl93Lici JyA6ICcnKS4KCQkJCQkJCQkJKCRzaG93X2hlaWdodCA9PSAneWVzJyA/ICcgaGVpZ2h0PSIn LiR0aHVtYl9oLiciJyA6ICcnKS4KCQkJCQkJCQkJKCAoJHJvd1snYWx0J10gYW5kICgkc2hv d19hbHQgPT0gJ3llcycpKSA/ICcgYWx0PSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snYWx0 J10pLiciJyA6ICcgYWx0PSIiJykuCgkJCQkJCQkJCSggKCRyb3dbJ2NhcHRpb24nXSBhbmQg KCRzaG93X3RpdGxlID09ICd5ZXMnKSkgPyAnIHRpdGxlPSInLmh0bWxzcGVjaWFsY2hhcnMo JHJvd1snY2FwdGlvbiddKS4nIicgOiAnJykuCgkJCQkJCQkJCSgkeGh0bWwgPT0gJ3llcycg PyAnIC8+JyA6ICc+Jyk7CgkJCQkJCQl9CgoJCQkJCQkJZWxzZWlmICgkcHJlZnNbJ3Byb2R1 Y3Rpb25fc3RhdHVzJ10gIT0gJ2xpdmUnKQoJCQkJCQkJewoJCQkJCQkJCSRvdXRbXSA9IHVw bV9pbWFnZV9nVHh0KCdub190aHVtYicsIGFycmF5KCd7aW1hZ2V9JyA9PiAkcm93WydpZCdd KSk7CgkJCQkJCQl9CgkJCQkJCWJyZWFrOwoKCQkJCQkJZGVmYXVsdDoKCQkJCQkJCSR0ZW1w ID0gJzxpbWcgc3JjPSInLiRpbWdfdXJsLiRpbWcuJyInLgoJCQkJCQkJCSggKCRjbGFzcyBh bmQgISR3cmFwdGFnKSA/ICcgY2xhc3M9IicuJGNsYXNzLiciJyA6ICcnKS4KCQkJCQkJCQko JHNob3dfd2lkdGggPT0gJ3llcycgPyAnIHdpZHRoPSInLiRyb3dbJ3cnXS4nIicgOiAnJyku CgkJCQkJCQkJKCRzaG93X2hlaWdodCA9PSAneWVzJyA/ICcgaGVpZ2h0PSInLiRyb3dbJ2gn XS4nIicgOiAnJykuCgkJCQkJCQkJKCAoJHJvd1snYWx0J10gYW5kICgkc2hvd19hbHQgPT0g J3llcycpKSA/ICcgYWx0PSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snYWx0J10pLiciJyA6 ICcnICkuCgkJCQkJCQkJKCAoJHJvd1snY2FwdGlvbiddIGFuZCAoJHNob3dfdGl0bGUgPT0g J3llcycpKSA/ICcgdGl0bGU9IicuaHRtbHNwZWNpYWxjaGFycygkcm93WydjYXB0aW9uJ10p LiciJyA6ICcnICkuCgkJCQkJCQkJKCR4aHRtbCA9PSAneWVzJyA/ICcgLz4nIDogJz4nKTsK CgkJCQkJCQlpZiAoJHVybCkKCQkJCQkJCXsKCQkJCQkJCQkkdGVtcCA9IGlzX251bWVyaWMo JHVybCkgPwoJCQkJCQkJCQlocmVmKCR0ZW1wLCBwZXJtbGlua3VybF9pZCgkdXJsKSkgOgoJ CQkJCQkJCQlocmVmKCR0ZW1wLCAkdXJsKTsKCQkJCQkJCX0KCgkJCQkJCQkkb3V0W10gPSAk dGVtcDsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkkaWRzX3JlcXVlc3Rl ZCA9IGFycmF5X3VuaXF1ZSgkaWRzX3JlcXVlc3RlZCk7CgoJCQlpZiAoJHdyYXBmb3JtKQoJ CQl7CgkJCQkkdXBtX2ltZ19jdXN0b21bJ2xpc3QnXSA9IGpvaW4oJycsICRvdXQpOwoKCQkJ CSR0ZW1wID0gcGFyc2UoZmV0Y2hfZm9ybSgkd3JhcGZvcm0pKTsKCQkJfQoKCQkJZWxzZQoJ CQl7CgkJCQkkYXR0cyA9ICgkaWQpID8gJyBpZD0iJy4kaWQuJyInIDogJyc7CgoJCQkJJHRl bXAgPSBkb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAkYnJlYWtfY2xh c3MsICRhdHRzKTsKCQkJfQoKCQkJaWYgKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMnXSAh PSAnbGl2ZScgJiYgKCRpZHNfcmVxdWVzdGVkICE9ICRpZHNfZm91bmQpKQoJCQl7CgkJCQkk aWRzX21pc3NpbmcgPSBhcnJheV9kaWZmKCRpZHNfcmVxdWVzdGVkLCAkaWRzX2ZvdW5kKTsK CgkJCQlyZXR1cm4gJHRlbXAudXBtX2ltYWdlX2dUeHQoJ25vdF9mb3VuZF9saXN0JywgYXJy YXkoJ3tsaXN0fScgPT4gam9pbignLCAnLCAkaWRzX21pc3NpbmcpKSk7CgkJCX0KCgkJCWVs c2UKCQkJewoJCQkJcmV0dXJuICR0ZW1wOwoJCQl9CgkJfQoKCQlyZXR1cm4gKCRwcmVmc1sn cHJvZHVjdGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpID8KCQkJdXBtX2ltYWdlX2dUeHQoJ25v dF9mb3VuZF9saXN0JywgYXJyYXkoJ3tsaXN0fScgPT4gam9pbignLCAnLCAkaW1hZ2VzKSkp CgkJCTogJyc7Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIGlmIG9uZSBvciBtb3JlIGFydGljbGUgaW1h Z2VzIGV4aXN0CgoJZnVuY3Rpb24gdXBtX2lmX2FydGljbGVfaW1hZ2UoJGF0dHMgPSBhcnJh eSgpLCAkdGhpbmcgPSBOVUxMKQoJewoJCWdsb2JhbCAkdGhpc2FydGljbGU7CgoJCWFzc2Vy dF9hcnRpY2xlKCk7CgoJCSRjb25kaXRpb24gPSAoICFlbXB0eSgkdGhpc2FydGljbGVbJ2Fy dGljbGVfaW1hZ2UnXSkgKTsKCgkJcmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgJGNv bmRpdGlvbikpOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBpZiBtb3JlIHRoYW4gb25lIGFydGljbGUg aW1hZ2UgZXhpc3RzCgoJZnVuY3Rpb24gdXBtX2lmX2FydGljbGVfaW1hZ2VfbGlzdCgkYXR0 cyA9IGFycmF5KCksICR0aGluZyA9IE5VTEwpCgl7CgkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsK CgkJYXNzZXJ0X2FydGljbGUoKTsKCgkJJGNvbmRpdGlvbiA9ICggIWVtcHR5KCR0aGlzYXJ0 aWNsZVsnYXJ0aWNsZV9pbWFnZSddKSBhbmQgc3Ryc3RyKCR0aGlzYXJ0aWNsZVsnYXJ0aWNs ZV9pbWFnZSddLCAnLCcpICk7CgoJCXJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRj b25kaXRpb24pKTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1hZ2UoJGF0dHMg PSBhcnJheSgpLCAkdGhpbmcgPSBOVUxMKQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJCSRhdHRz ID0gbEF0dHMoYXJyYXkoCgkJCSdjbGFzcycJCQkJPT4gJycsCgkJCSdmb3JtJwkJCQk9PiAn JywKCQkJJ2lkJwkJCQkJPT4gJycsCgkJCSdpbWFnZV9pZCcJCT0+ICcnLAoJCQknaW1hZ2Vf bmFtZScJPT4gJycsCgkJCSdpbWFnZV91cmwnCQk9PiAnJywKCQkJJ3Nob3dfd2lkdGgnCT0+ ICd5ZXMnLAoJCQknc2hvd19oZWlnaHQnID0+ICd5ZXMnLAoJCQknc2hvd19hbHQnCQk9PiAn eWVzJywKCQkJJ3Nob3dfdGl0bGUnCT0+ICd5ZXMnLAoJCQkndHlwZScJCQkJPT4gJ2ltYWdl JywKCQkJJ3VybCcJCQkJCT0+ICcnLAoJCQknd3JhcHRhZycJCQk9PiAnJywKCQkJJ3hodG1s JwkJCQk9PiAneWVzJwoJCSksICRhdHRzKTsKCgkJZXh0cmFjdCgkYXR0cyk7CgoJCWlmICgk dHlwZSA9PSAnYXJ0aWNsZScpCgkJewoJCQlyZXR1cm4gdXBtX2FydGljbGVfaW1hZ2UoJGF0 dHMsICR0aGluZyk7CgkJfQoKCQlpZiAoJGltYWdlX3VybCkKCQl7CgkJCSRpbWFnZV91cmwg PSByYXd1cmxlbmNvZGUoJGltYWdlX3VybCk7CgoJCQlpZiAoZmlsZV9leGlzdHMoJGltYWdl X3VybCkpCgkJCXsKCQkJCSR3ID0gJyc7CgkJCQkkaCA9ICcnOwoKCQkJCSRmb3BlbiA9IGdl dF9jZmdfdmFyKCdhbGxvd191cmxfZm9wZW4nKSA/IHRydWUgOiBmYWxzZTsKCgkJCQlpZiAo JGZvcGVuKQoJCQkJewoJCQkJCWxpc3QoJHcsICRoKSA9IGdldGltYWdlc2l6ZSgkaW1hZ2Vf dXJsKTsKCQkJCX0KCgkJCQkkb3V0ID0gJzxpbWcgc3JjPSInLiRpbWFnZV91cmwuJyInLgoJ CQkJCSggKCRpZCBhbmQgISR3cmFwdGFnKSA/ICcgaWQ9IicuJGlkLiciJyA6ICcnKS4KCQkJ CQkoICgkY2xhc3MgYW5kICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicgOiAn JykuCgkJCQkJKCAoJHcgYW5kICgkc2hvd193aWR0aCA9PSAneWVzJykpID8gJyB3aWR0aD0i Jy4kdy4nIicgOiAnJyApLgoJCQkJCSggKCRoIGFuZCAoJHNob3dfaGVpZ2h0ID09ICd5ZXMn KSkgPyAnIGhlaWdodD0iJy4kaC4nIicgOiAnJyApLgoJCQkJCScgYWx0PSIiJy4KCQkJCQko JHhodG1sID09ICd5ZXMnID8gJyAvPicgOiAnPicpOwoKCQkJCWlmICgkdXJsKQoJCQkJewoJ CQkJCSRvdXQgPSBpc19udW1lcmljKCR1cmwpID8KCQkJCQkJaHJlZigkb3V0LCBwZXJtbGlu a3VybF9pZCgkdXJsKSkgOgoJCQkJCQlocmVmKCRvdXQsICR1cmwpOwoJCQkJfQoKCQkJCXJl dHVybiAoJHdyYXB0YWcpID8gZG9UYWcoJG91dCwgJHdyYXB0YWcsICRjbGFzcywgJycsICRp ZCkgOiAkb3V0OwoJCQl9CgoJCQlyZXR1cm4gKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMn XSAhPSAnbGl2ZScpID8KCQkJCXVwbV9pbWFnZV9nVHh0KCdub3RfZm91bmQnLCBhcnJheSgn e2ltYWdlfScgPT4gJGltYWdlX3VybCkpIDoKCQkJCScnOwoJCX0KCgkJZWxzZWlmICgkaW1h Z2VfaWQpCgkJewoJCQlpZiAoIWlzX251bWVyaWMoJGltYWdlX2lkKSkKCQkJewoJCQkJcmV0 dXJuIHVwbV9pbWFnZV9nVHh0KCdpbnZhbGlkX2lkJyk7CgkJCX0KCgkJCSRpbWFnZV9pZCA9 IGRvU2xhc2goJGltYWdlX2lkKTsKCgkJCSRycyA9IHNhZmVfcm93KCcqJywgJ3R4cF9pbWFn ZScsICJpZCA9ICckaW1hZ2VfaWQnIGxpbWl0IDAsIDEiKTsKCgkJCWlmICghJHJzKQoJCQl7 CgkJCQlyZXR1cm4gKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpID8K CQkJCQl1cG1faW1hZ2VfZ1R4dCgnbm90X2ZvdW5kJywgYXJyYXkoJ3tpbWFnZX0nID0+ICRp bWFnZV9pZCkpIDoKCQkJCQknJzsKCQkJfQoJCX0KCgkJZWxzZWlmICgkaW1hZ2VfbmFtZSAh PSAnJykKCQl7CgkJCSRpbWFnZV9uYW1lID0gZG9TbGFzaCgkaW1hZ2VfbmFtZSk7CgoJCQkk cnMgPSBzYWZlX3JvdygnKicsICd0eHBfaW1hZ2UnLCAibmFtZSA9ICckaW1hZ2VfbmFtZScg bGltaXQgMCwgMSIpOwoKCQkJaWYgKCEkcnMpCgkJCXsKCQkJCXJldHVybiAoJHByZWZzWydw cm9kdWN0aW9uX3N0YXR1cyddICE9ICdsaXZlJykgPwoJCQkJCXVwbV9pbWFnZV9nVHh0KCdu b3RfZm91bmQnLCBhcnJheSgne2ltYWdlfScgPT4gJGltYWdlX25hbWUpKSA6CgkJCQkJJyc7 CgkJCX0KCQl9CgoJCWVsc2UKCQl7CgkJCXJldHVybiAoJHByZWZzWydwcm9kdWN0aW9uX3N0 YXR1cyddICE9ICdsaXZlJykgPwoJCQkJdXBtX2ltYWdlX2dUeHQoJ25vdGhpbmdfcmVxdWVz dGVkJykgOgoJCQkJJyc7CgkJfQoKCQlpZiAoJGZvcm0gb3IgJHRoaW5nKQoJCXsKCQkJcmV0 dXJuIHVwbV9pbWdfY3VzdG9tKCRycywgJGF0dHMsICRmb3JtLCAkdGhpbmcpOwoJCX0KCgkJ ZWxzZQoJCXsKCQkJcmV0dXJuIHVwbV9pbWdfZGVmYXVsdCgkcnMsICRhdHRzKTsKCQl9Cgl9 CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltZ19jdXN0b20oJHJvdywgJGF0dHMsICRm b3JtID0gJycsICR0aGluZyA9IE5VTEwpCgl7CgkJZ2xvYmFsICRwcmVmcywgJHVwbV9pbWdf Y3VzdG9tOwoKCQlpZiAoJGZvcm0pCgkJewoJCQkkd2hhdCA9IGZldGNoX2Zvcm0oJGZvcm0p OwoJCX0KCgkJZWxzZWlmICgkdGhpbmcpCgkJewoJCQkkd2hhdCA9ICR0aGluZzsKCQl9CgoJ CWVsc2UKCQl7CgkJCXJldHVybjsKCQl9CgoJCSRpbWdfdXJsID0gaHUuJHByZWZzWydpbWdf ZGlyJ10uJy8nOwoJCSRpbWdfcGF0aCA9ICRwcmVmc1sncGF0aF90b19zaXRlJ10uRFMuJHBy ZWZzWydpbWdfZGlyJ10uRFM7CgoJCSR1cG1faW1nX2N1c3RvbSA9IGFycmF5KAoJCQknYWx0 JwkJCQkJID0+ICRyb3dbJ2FsdCddLAoJCQknYXV0aG9yJwkJCSA9PiAkcm93WydhdXRob3In XSwKCQkJJ2NhcHRpb24nCQkJID0+ICRyb3dbJ2NhcHRpb24nXSwKCQkJJ2NhdGVnb3J5JwkJ ID0+ICRyb3dbJ2NhdGVnb3J5J10sCgkJCSdkYXRlJwkJCQkgPT4gJHJvd1snZGF0ZSddLAoJ CQknZnVsbF9oZWlnaHQnCSA9PiAkcm93WydoJ10sCgkJCSdmdWxsX3VybCcJCSA9PiAkaW1n X3VybC4kcm93WydpZCddLiRyb3dbJ2V4dCddLAoJCQknZnVsbF93aWR0aCcJID0+ICRyb3db J3cnXSwKCQkJJ2hyZWYnCQkJCSA9PiAkYXR0c1sndXJsJ10sCgkJCSdpZCcJCQkJCSA9PiAk cm93WydpZCddLAoJCQknbGlzdCcJCQkJID0+ICcnLAoJCQknbmFtZScJCQkJID0+ICRyb3db J25hbWUnXSwKCQkJJ3RodW1iX3VybCcJCSA9PiAnJywKCQkJJ3RodW1iX2hlaWdodCcgPT4g JycsCgkJCSd0aHVtYl93aWR0aCcJID0+ICcnLAoJCSk7CgoJCSR0aHVtYiA9ICRyb3dbJ2lk J10uJ3QnLiRyb3dbJ2V4dCddOwoKCQlpZiAoJHJvd1sndGh1bWJuYWlsJ10gYW5kIGZpbGVf ZXhpc3RzKCRpbWdfcGF0aC4kdGh1bWIpKQoJCXsKCQkJbGlzdCgkdywgJGgpID0gZ2V0aW1h Z2VzaXplKCRpbWdfcGF0aC4kdGh1bWIpOwoKCQkJJHVwbV9pbWdfY3VzdG9tWyd0aHVtYl9o ZWlnaHQnXSA9ICRoOwoJCQkkdXBtX2ltZ19jdXN0b21bJ3RodW1iX3VybCddCQk9ICRpbWdf dXJsLiR0aHVtYjsKCQkJJHVwbV9pbWdfY3VzdG9tWyd0aHVtYl93aWR0aCddCT0gJHc7CgkJ fQoKCQlyZXR1cm4gcGFyc2UoJHdoYXQpOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVw bV9pbWdfY3VzdG9tX2Fzc2VydCgpCgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1c3RvbTsKCgkJ aWYgKGVtcHR5KCR1cG1faW1nX2N1c3RvbSkpCgkJewoJCQl0cmlnZ2VyX2Vycm9yKHVwbV9p bWFnZV9nVHh0KCdlcnJvcl9jb250ZXh0JykpOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5j dGlvbiB1cG1faW1nX2FsdCgkYXR0cyA9IGFycmF5KCkpCgl7CgkJZ2xvYmFsICR1cG1faW1n X2N1c3RvbTsKCgkJdXBtX2ltZ19jdXN0b21fYXNzZXJ0KCk7CgoJCWV4dHJhY3QobEF0dHMo YXJyYXkoCgkJCSdlc2NhcGUnID0+ICdodG1sJwoJCSksICRhdHRzKSk7CgoJCXJldHVybiAo JGVzY2FwZSA9PSAnaHRtbCcpID8KCQkJaHRtbHNwZWNpYWxjaGFycygkdXBtX2ltZ19jdXN0 b21bJ2FsdCddKSA6CgkJCSR1cG1faW1nX2N1c3RvbVsnYWx0J107Cgl9CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgoJZnVuY3Rpb24gdXBtX2ltZ19hdXRob3IoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2Jh bCAkdXBtX2ltZ19jdXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1 cm4gZ2V0X2F1dGhvcl9uYW1lKCR0aGlzYXJ0aWNsZVsnYXV0aG9yaWQnXSk7Cgl9CgovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltZ19jYXB0aW9uKCRhdHRzID0gYXJyYXkoKSkKCXsK CQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoKCQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsK CgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2NsYXNzJwkJID0+ICcnLAoJCQknZXNjYXBl JwkgPT4gJ2h0bWwnLAoJCQknbGFiZWwnCQkgPT4gJycsCgkJCSdsYWJlbHRhZycgPT4gJycs CgkJCSd3cmFwdGFnJwkgPT4gJycKCQkpLCAkYXR0cykpOwoKCQlpZiAoJHVwbV9pbWdfY3Vz dG9tWydjYXB0aW9uJ10pCgkJewoJCQkkY2FwdGlvbiA9ICgkZXNjYXBlID09ICdodG1sJykg PwoJCQkJaHRtbHNwZWNpYWxjaGFycygkdXBtX2ltZ19jdXN0b21bJ2NhcHRpb24nXSkgOgoJ CQkJJHVwbV9pbWdfY3VzdG9tWydjYXB0aW9uJ107CgoJCQlyZXR1cm4gZG9MYWJlbCgkbGFi ZWwsICRsYWJlbHRhZykuZG9UYWcoJGNhcHRpb24sICR3cmFwdGFnLCAkY2xhc3MpOwoJCX0K CX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2NhdGVnb3J5KCRhdHRzID0gYXJy YXkoKSkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoKCQl1cG1faW1nX2N1c3RvbV9h c3NlcnQoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2NsYXNzJwkJID0+ICcnLAoJ CQknbGFiZWwnCQkgPT4gJycsCgkJCSdsYWJlbHRhZycgPT4gJycsCgkJCSd0aXRsZScJCSA9 PiAnMCcsCgkJCSd3cmFwdGFnJwkgPT4gJycsCgkJKSwgJGF0dHMpKTsKCgkJaWYgKCR1cG1f aW1nX2N1c3RvbVsnY2F0ZWdvcnknXSkKCQl7CgkJCSRjYXRlZ29yeSA9ICgkdGl0bGUpID8K CQkJCWZldGNoX2NhdGVnb3J5X3RpdGxlKCR1cG1faW1nX2N1c3RvbVsnY2F0ZWdvcnknXSwg J2ltYWdlJykgOgoJCQkJJHVwbV9pbWdfY3VzdG9tWydjYXRlZ29yeSddOwoKCQkJcmV0dXJu IGRvTGFiZWwoJGxhYmVsLCAkbGFiZWx0YWcpLmRvVGFnKCRjYXRlZ29yeSwgJHdyYXB0YWcs ICRjbGFzcyk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdfZGF0ZSgk YXR0cyA9IGFycmF5KCkpCgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1c3RvbSwgJHByZWZzOwoK CQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJ J2Zvcm1hdCcJPT4gJHByZWZzWydkYXRlZm9ybWF0J10sCgkJCSdnbXQnCQkJPT4gJycsCgkJ CSdsYW5nJwkJPT4gJycsCgkJKSwgJGF0dHMpKTsKCgkJaWYgKCRmb3JtYXQpCgkJewoJCQly ZXR1cm4gc2FmZV9zdHJmdGltZSgkZm9ybWF0LCAkdXBtX2ltZ19jdXN0b21bJ2RhdGUnXSwg JGdtdCwgJGxhbmcpOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2Z1 bGxfaGVpZ2h0KCRhdHRzID0gYXJyYXkoKSkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9t OwoKCQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJcmV0dXJuICR1cG1faW1nX2N1c3Rv bVsnZnVsbF9oZWlnaHQnXTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2Z1 bGxfdXJsKCRhdHRzID0gYXJyYXkoKSkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoK CQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJcmV0dXJuICR1cG1faW1nX2N1c3RvbVsn ZnVsbF91cmwnXTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2Z1bGxfd2lk dGgoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19jdXN0b207CgoJCXVw bV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdfY3VzdG9tWydmdWxs X3dpZHRoJ107Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltZ19ocmVmKCRhdHRz ID0gYXJyYXkoKSwgJHRoaW5nID0gTlVMTCkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9t OwoKCQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgK CQkJJ2NsYXNzJwkJID0+ICcnLAoJCQknZXNjYXBlJwkgPT4gJycsCgkJCSdsYWJlbCcJCSA9 PiAnJywKCQkJJ2xhYmVsdGFnJyA9PiAnJywKCQkJJ3dyYXB0YWcnCSA9PiAnJywKCQkpLCAk YXR0cykpOwoKCQlpZiAoJHVwbV9pbWdfY3VzdG9tWydocmVmJ10pCgkJewoJCQkkaHJlZiA9 ICgkZXNjYXBlID09ICdodG1sJykgPwoJCQkJaHRtbHNwZWNpYWxjaGFycygkdXBtX2ltZ19j dXN0b21bJ2hyZWYnXSkgOgoJCQkJJHVwbV9pbWdfY3VzdG9tWydocmVmJ107CgoJCQkkaHJl ZiA9ICgkdGhpbmcpID8gaHJlZihwYXJzZSgkdGhpbmcpLCAkaHJlZikgOiAkaHJlZjsKCgkJ CXJldHVybiBkb0xhYmVsKCRsYWJlbCwgJGxhYmVsdGFnKS5kb1RhZygkaHJlZiwgJHdyYXB0 YWcsICRjbGFzcyk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdfaWQo JGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19jdXN0b207CgoJCXVwbV9p bWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdfY3VzdG9tWydpZCddOwoJ fQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdfbGlzdCgkYXR0cyA9IGFycmF5KCkp Cgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1c3RvbTsKCgkJdXBtX2ltZ19jdXN0b21fYXNzZXJ0 KCk7CgoJCXJldHVybiAkdXBtX2ltZ19jdXN0b21bJ2xpc3QnXTsKCX0KCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K CglmdW5jdGlvbiB1cG1faW1nX25hbWUoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAk dXBtX2ltZ19jdXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4g JHVwbV9pbWdfY3VzdG9tWyduYW1lJ107Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBt X2ltZ190aHVtYl9oZWlnaHQoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2lt Z19jdXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9p bWdfY3VzdG9tWyd0aHVtYl9oZWlnaHQnXTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1 cG1faW1nX3RodW1iX3VybCgkYXR0cyA9IGFycmF5KCkpCgl7CgkJZ2xvYmFsICR1cG1faW1n X2N1c3RvbTsKCgkJdXBtX2ltZ19jdXN0b21fYXNzZXJ0KCk7CgoJCXJldHVybiAkdXBtX2lt Z19jdXN0b21bJ3RodW1iX3VybCddOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9p bWdfdGh1bWJfd2lkdGgoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19j dXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdf Y3VzdG9tWyd0aHVtYl93aWR0aCddOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9p bWdfZGVmYXVsdCgkcm93LCAkYXR0cykKCXsKCQlnbG9iYWwgJHByZWZzOwoKCQlleHRyYWN0 KCRhdHRzKTsKCgkJJGltZ191cmwgPSBodS4kcHJlZnNbJ2ltZ19kaXInXS4nLyc7CgkJJGlt ZyA9ICRyb3dbJ2lkJ10uJHJvd1snZXh0J107CgoJCWlmIChpbl9hcnJheSgkdHlwZSwgYXJy YXkoJ3BvcHVwJywgJ3RodW1iJywgJ3RodW1ibmFpbCcpKSkKCQl7CgkJCSRpbWdfcGF0aCA9 ICRwcmVmc1sncGF0aF90b19zaXRlJ10uRFMuJHByZWZzWydpbWdfZGlyJ10uRFM7CgkJCSR0 aHVtYiA9ICRyb3dbJ2lkJ10uJ3QnLiRyb3dbJ2V4dCddOwoKCQkJJHRodW1iX2V4aXN0cyA9 IGZhbHNlOwoKCQkJaWYgKCRyb3dbJ3RodW1ibmFpbCddIGFuZCBmaWxlX2V4aXN0cygkaW1n X3BhdGguJHRodW1iKSkKCQkJewoJCQkJJHRodW1iX2V4aXN0cyA9IHRydWU7CgoJCQkJbGlz dCgkdGh1bWJfdywgJHRodW1iX2gpID0gZ2V0aW1hZ2VzaXplKCRpbWdfcGF0aC4kdGh1bWIp OwoJCQl9CgkJfQoKCQlzd2l0Y2ggKCR0eXBlKQoJCXsKCQkJY2FzZSAncG9wdXAnOgoJCQkJ aWYgKCR0aHVtYl9leGlzdHMpCgkJCQl7CgkJCQkJJG91dCA9ICc8YSBocmVmPSInLiRpbWdf dXJsLiRpbWcuJyInLgoJCQkJCQkoICgkaWQgYW5kICEkd3JhcHRhZykgPyAnIGlkPSInLiRp ZC4nIicgOiAnJykuCgkJCQkJCSggKCRjbGFzcyBhbmQgISR3cmFwdGFnKSA/ICcgY2xhc3M9 IicuJGNsYXNzLiciJyA6ICcnKS4KCQkJCQkJKCAoJHJvd1snY2FwdGlvbiddIGFuZCAoJHNo b3dfdGl0bGUgPT0gJ3llcycpKSA/ICcgdGl0bGU9IicuaHRtbHNwZWNpYWxjaGFycygkcm93 WydjYXB0aW9uJ10pLiciJyA6ICcnICkuCgkJCQkJCScgb25jbGljaz0idXBtX3BvcF9pbWco dGhpcy5ocmVmLCAnLmNocigzOSkuJHJvd1sndyddLmNocigzOSkuJywgJy5jaHIoMzkpLiRy b3dbJ2gnXS5jaHIoMzkpLicsICcuY2hyKDM5KS4kcm93WyduYW1lJ10uY2hyKDM5KS4nLCB0 aGlzLnRpdGxlKTsgcmV0dXJuIGZhbHNlOyI+Jy4KCQkJCQkJJzxpbWcgc3JjPSInLiRpbWdf dXJsLiR0aHVtYi4nIicuCgkJCQkJCSgkc2hvd193aWR0aCA9PSAneWVzJyA/ICcgd2lkdGg9 IicuJHRodW1iX3cuJyInIDogJycpLgoJCQkJCQkoJHNob3dfaGVpZ2h0ID09ICd5ZXMnID8g JyBoZWlnaHQ9IicuJHRodW1iX2guJyInIDogJycpLgoJCQkJCQkoICgkcm93WydhbHQnXSBh bmQgKCRzaG93X2FsdCA9PSAneWVzJykpID8gJyBhbHQ9IicuaHRtbHNwZWNpYWxjaGFycygk cm93WydhbHQnXSkuJyIgdGl0bGU9IiInIDogJyBhbHQ9IiInICkuCgkJCQkJCSgkeGh0bWwg PT0gJ3llcycgPyAnIC8+JyA6ICc+JykuCgkJCQkJCSc8L2E+JzsKCgkJCQkJcmV0dXJuICgk d3JhcHRhZykgPyBkb1RhZygkb3V0LCAkd3JhcHRhZywgJGNsYXNzLCAnJywgJGlkKSA6ICRv dXQ7CgkJCQl9CgoJCQkJZWxzZWlmICgkcHJlZnNbJ3Byb2R1Y3Rpb25fc3RhdHVzJ10gIT0g J2xpdmUnKQoJCQkJewoJCQkJCXJldHVybiB1cG1faW1hZ2VfZ1R4dCgnbm9fdGh1bWInLCBh cnJheSgne2ltYWdlfScgPT4gJHJvd1snaWQnXSkpOwoJCQkJfQoJCQlicmVhazsKCgkJCWNh c2UgJ3RodW1ibmFpbCc6CgkJCWNhc2UgJ3RodW1iJzoKCQkJCWlmICgkdGh1bWJfZXhpc3Rz KQoJCQkJewoJCQkJCSRvdXQgPSAnPGltZyBzcmM9IicuJGltZ191cmwuJHRodW1iLiciJy4K CQkJCQkJKCAoJGlkIGFuZCAhJHdyYXB0YWcpID8gJyBpZD0iJy4kaWQuJyInIDogJycpLgoJ CQkJCQkoICgkY2xhc3MgYW5kICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicg OiAnJykuCgkJCQkJCSgkc2hvd193aWR0aCA9PSAneWVzJyA/ICcgd2lkdGg9IicuJHRodW1i X3cuJyInIDogJycpLgoJCQkJCQkoJHNob3dfaGVpZ2h0ID09ICd5ZXMnID8gJyBoZWlnaHQ9 IicuJHRodW1iX2guJyInIDogJycpLgoJCQkJCQkoICgkcm93WydhbHQnXSBhbmQgKCRzaG93 X2FsdCA9PSAneWVzJykpID8gJyBhbHQ9IicuaHRtbHNwZWNpYWxjaGFycygkcm93WydhbHQn XSkuJyInIDogJyBhbHQ9IiInICkuCgkJCQkJCSggKCRyb3dbJ2NhcHRpb24nXSBhbmQgKCRz aG93X3RpdGxlID09ICd5ZXMnKSkgPyAnIHRpdGxlPSInLmh0bWxzcGVjaWFsY2hhcnMoJHJv d1snY2FwdGlvbiddKS4nIicgOiAnJyApLgoJCQkJCQkoJHhodG1sID09ICd5ZXMnID8gJyAv PicgOiAnPicpOwoKCQkJCQlpZiAoJHVybCkKCQkJCQl7CgkJCQkJCSRvdXQgPSBpc19udW1l cmljKCR1cmwpID8gaHJlZigkb3V0LCBwZXJtbGlua3VybF9pZCgkdXJsKSkgOiBocmVmKCRv dXQsICR1cmwpOwoJCQkJCX0KCgkJCQkJcmV0dXJuICgkd3JhcHRhZykgPyBkb1RhZygkb3V0 LCAkd3JhcHRhZywgJGNsYXNzLCAnJywgJGlkKSA6ICRvdXQ7CgkJCQl9CgoJCQkJZWxzZWlm ICgkcHJlZnNbJ3Byb2R1Y3Rpb25fc3RhdHVzJ10gIT0gJ2xpdmUnKQoJCQkJewoJCQkJCXJl dHVybiB1cG1faW1hZ2VfZ1R4dCgnbm9fdGh1bWInLCBhcnJheSgne2ltYWdlfScgPT4gJHJv d1snaWQnXSkpOwoJCQkJfQoJCQlicmVhazsKCgkJCWNhc2UgJ2ltYWdlJzoKCQkJZGVmYXVs dDoKCQkJCSRvdXQgPSAnPGltZyBzcmM9IicuJGltZ191cmwuJGltZy4nIicuCgkJCQkJKCAo JGlkIGFuZCAhJHdyYXB0YWcpID8gJyBpZD0iJy4kaWQuJyInIDogJycpLgoJCQkJCSggKCRj bGFzcyBhbmQgISR3cmFwdGFnKSA/ICcgY2xhc3M9IicuJGNsYXNzLiciJyA6ICcnKS4KCQkJ CQkoJHNob3dfd2lkdGggPT0gJ3llcycgPyAnIHdpZHRoPSInLiRyb3dbJ3cnXS4nIicgOiAn JykuCgkJCQkJKCRzaG93X2hlaWdodCA9PSAneWVzJyA/ICcgaGVpZ2h0PSInLiRyb3dbJ2gn XS4nIicgOiAnJykuCgkJCQkJKCAoJHJvd1snYWx0J10gYW5kICgkc2hvd19hbHQgPT0gJ3ll cycpKSA/ICcgYWx0PSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snYWx0J10pLiciJyA6ICcg YWx0PSIiJyApLgoJCQkJCSggKCRyb3dbJ2NhcHRpb24nXSBhbmQgKCRzaG93X3RpdGxlID09 ICd5ZXMnKSkgPyAnIHRpdGxlPSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snY2FwdGlvbidd KS4nIicgOiAnJyApLgoJCQkJCSgkeGh0bWwgPT0gJ3llcycgPyAnIC8+JyA6ICc+Jyk7CgoJ CQkJaWYgKCR1cmwpCgkJCQl7CgkJCQkJJG91dCA9IGlzX251bWVyaWMoJHVybCkgPyBocmVm KCRvdXQsIHBlcm1saW5rdXJsX2lkKCR1cmwpKSA6IGhyZWYoJG91dCwgJHVybCk7CgkJCQl9 CgoJCQkJcmV0dXJuICgkd3JhcHRhZykgPyBkb1RhZygkb3V0LCAkd3JhcHRhZywgJGNsYXNz LCAnJywgJGlkKSA6ICRvdXQ7CgkJCWJyZWFrOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5j dGlvbiB1cG1faW1hZ2VfY2hlY2tfbG9hZCgpCgl7CgkJZ2xvYmFsICRwcmVmczsKCgkJaWYg KCRwcmVmc1sndXBtX2ltYWdlX2xvYWRfc2NyaXB0J10gPT0gMSkKCQl7CgkJCW9iX3N0YXJ0 KCd1cG1faW1hZ2VfbGluaycpOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1f aW1hZ2VfbGluaygkYnVmZmVyKQoJewoJCSRmaW5kID0gJzwvaGVhZD4nOwoJCSRyZXBsYWNl ID0gbi50Lic8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInLmh1LidpbmRl eC5waHA/anM9dXBtX2ltYWdlIj48L3NjcmlwdD4nLm4uJGZpbmQ7CgoJCXJldHVybiBzdHJf cmVwbGFjZSgkZmluZCwgJHJlcGxhY2UsICRidWZmZXIpOwoJfQoKLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1 bmN0aW9uIHVwbV9pbWFnZV9qcygpCgl7CgkJaGVhZGVyKCJDb250ZW50LXR5cGU6IHRleHQv amF2YXNjcmlwdCIpOwoKCQllY2hvIDw8PGpzCmZ1bmN0aW9uIHVwbV9wb3BfaW1nKHNyYywg dywgaCwgbmFtZSwgdGl0bGUpCnsKCXZhciB3dyA9IHBhcnNlSW50KHcpOwoJdmFyIHdoID0g cGFyc2VJbnQoaCk7CgoJaWYgKHd3IDwgMTAwKQoJewoJCXd3ID0gMTI1OwoJfQoKCWlmICh3 aCA8IDEwMCkKCXsKCQl3aCA9IDEyNTsKCgkJd3cgKz0gNzU7Cgl9CgoJdmFyIHNjcm9sbCA9 IGZhbHNlOwoKCWlmIChzY3JlZW4ud2lkdGggJiYgKHNjcmVlbi53aWR0aCA8IHd3KSkKCXsK CQlzY3JvbGwgPSAneWVzJzsKCQl3dyA9IHNjcmVlbi53aWR0aDsKCX0KCglpZiAoc2NyZWVu LmhlaWdodCAmJiAoc2NyZWVuLmhlaWdodCA8IHdoKSkKCXsKCQlzY3JvbGwgPSAneWVzJzsK CQl3aCA9IHNjcmVlbi5oZWlnaHQ7Cgl9CgoJaWYgKCF0aXRsZSkKCXsKCQl0aXRsZSA9IG5h bWU7Cgl9CgoJdmFyIHQgPSAoc2NyZWVuLmhlaWdodCkgPyAoc2NyZWVuLmhlaWdodCAtIHdo KSAvIDIgOiAwOwoJdmFyIGwgPSAoc2NyZWVuLndpZHRoKSA/IChzY3JlZW4ud2lkdGggLSB3 dykgLyAyIDogMDsKCgl2YXIgdXBtX3BvcF93aW4gPSB3aW5kb3cub3BlbignJywgJ3VwbV9w b3Bfd2luJywgJ3RvcCA9ICcrdCsnLCBsZWZ0ID0gJytsKycsIHdpZHRoID0gJyt3dysnLCBo ZWlnaHQgPSAnK3doKycsIHRvb2xiYXIgPSBubywgbG9jYXRpb24gPSBubywgZGlyZWN0b3Jp ZXMgPSBubywgc3RhdHVzID0gbm8sIG1lbnViYXIgPSBubywgc2Nyb2xsYmFycyA9ICcrc2Ny b2xsKycsIGNvcHloaXN0b3J5ID0gbm8sIHJlc2l6YWJsZSA9IHllcycpOwoKCXVwbV9wb3Bf d2luLmRvY3VtZW50LndyaXRlbG4oJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9E VEQgSFRNTCA0LjAxLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5k dGQiPicpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignPGh0bWw+Jyk7Cgl1cG1f cG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCc8aGVhZD4nKTsKCXVwbV9wb3Bfd2luLmRvY3Vt ZW50LndyaXRlbG4oJzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50Lndy aXRlbG4oJzxtZXRhIGh0dHAtZXF1aXY9ImltYWdldG9vbGJhciIgY29udGVudD0ibm8iPicp OwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignPHRpdGxlPicrdGl0bGUrJzwvdGl0 bGU+Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCc8c3R5bGUgdHlwZT0idGV4 dC9jc3MiPicpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignPCEtLScpOwoJdXBt X3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignYm9keSB7Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1 bWVudC53cml0ZWxuKCdtYXJnaW46IDA7Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0 ZWxuKCdwYWRkaW5nOiAwOycpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignY29s b3I6ICMwMDA7Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCdiYWNrZ3JvdW5k LWNvbG9yOiAjZmZmOycpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbigndGV4dC1h bGlnbjogY2VudGVyOycpOwoKCWlmIChzY3JvbGwgPT0gZmFsc2UpCgl7CgkJdXBtX3BvcF93 aW4uZG9jdW1lbnQud3JpdGVsbignb3ZlcmZsb3c6IGhpZGRlbjsnKTsKCX0KCgl1cG1fcG9w X3dpbi5kb2N1bWVudC53cml0ZWxuKCd9Jyk7CgoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3Jp dGVsbignJyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCdpbWcgeycpOwoJdXBt X3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignbWFyZ2luOiAwIGF1dG87Jyk7Cgl1cG1fcG9w X3dpbi5kb2N1bWVudC53cml0ZWxuKCdwYWRkaW5nOiAwOycpOwoJdXBtX3BvcF93aW4uZG9j dW1lbnQud3JpdGVsbignYm9yZGVyOiBub25lOycpOwoKCWlmICh3aCA9PSAxMjUpCgl7CgkJ dXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignbWFyZ2luLXRvcDogJyArIE1hdGguZmxv b3IoNTAtKGgvMikpICsgJ3B4OycpOwoJfQoKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRl bG4oJ30nKTsKCgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCctLT4nKTsKCXVwbV9w b3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzwvc3R5bGU+Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1 bWVudC53cml0ZWxuKCc8L2hlYWQ+Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxu KCc8Ym9keT4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzxkaXYgaWQ9InVw bS1pbWFnZS12aWV3Ij4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzxpbWcg c3JjPSInK3NyYysnIiB3aWR0aD0iJyt3KyciIGhlaWdodD0iJytoKyciIGFsdD0iIj4nKTsK CXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzwvZGl2PicpOwoJdXBtX3BvcF93aW4u ZG9jdW1lbnQud3JpdGVsbignPC9ib2R5PicpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3Jp dGUoJzwvaHRtbD4nKTsKCgl1cG1fcG9wX3dpbi5kb2N1bWVudC5jbG9zZSgpOwoKCXVwbV9w b3Bfd2luLmZvY3VzKCk7CgoJcmV0dXJuIGZhbHNlOwp9CmpzOwoKCQlleGl0KDApOwoJfQoK Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWFnZV9wcmVmcygkZXZlbnQsICRzdGVwKQoJ ewoJCWdsb2JhbCAkcHJlZnM7CgoJCXBhZ2V0b3AodXBtX2ltYWdlX2dUeHQoJ3ByZWZzJyks ICgkc3RlcCA9PSAndXBkYXRlJyA/IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJykgOiAnJykp OwoKCQlpZiAoJHN0ZXAgPT0gJ3VwZGF0ZScpCgkJewoJCQkkbG9hZF9zY3JpcHQgPSBkb1Ns YXNoKHBzKCdsb2FkX3NjcmlwdCcpKTsKCgkJCXNhZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAi dmFsID0gJyRsb2FkX3NjcmlwdCciLCAibmFtZSA9ICd1cG1faW1hZ2VfbG9hZF9zY3JpcHQn Iik7CgoJCQkkcHJlZnMgPSBnZXRfcHJlZnMoKTsKCQl9CgoJCWVjaG8gbi5uLic8ZGl2IHN0 eWxlPSJtYXJnaW46IDNlbSBhdXRvIGF1dG8gYXV0bzsgd2lkdGg6IDE2ZW07Ij4nLgoKCQkJ bi5uLmhlZCh1cG1faW1hZ2VfZ1R4dCgncHJlZnMnKSwgJzEnKS4KCgkJCW4ubi5mb3JtKAoJ CQkJbi5lSW5wdXQoJ3VwbV9pbWFnZV9wcmVmcycpLgoJCQkJbi5zSW5wdXQoJ3VwZGF0ZScp LgoKCQkJCW4ubi5ncmFmKAoJCQkJCXVwbV9pbWFnZV9nVHh0KCdsb2FkX3NjcmlwdCcpLmJy LgoJCQkJCW4ueWVzbm9SYWRpbygnbG9hZF9zY3JpcHQnLCAkcHJlZnNbJ3VwbV9pbWFnZV9s b2FkX3NjcmlwdCddKQoJCQkJKS4KCgkJCQluLm4uZklucHV0KCdzdWJtaXQnLCAndXBkYXRl JywgJ1VwZGF0ZScsICdzbWFsbGVyYm94JykKCQkJKS5uLm4uJzwvZGl2Pic7Cgl9CgovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltYWdlX2luc3RhbGwoKQoJewoJCWdsb2JhbCAkcHJl ZnM7CgoJCWlmICghaXNzZXQoJHByZWZzWyd1cG1faW1hZ2VfbG9hZF9zY3JpcHQnXSkpCgkJ ewoJCQlzYWZlX2luc2VydCgndHhwX3ByZWZzJywgIgoJCQkJbmFtZSA9ICd1cG1faW1hZ2Vf bG9hZF9zY3JpcHQnLAoJCQkJdmFsID0gJzEnLAoJCQkJaHRtbCA9ICd5ZXNub3JhZGlvJywK CQkJCXByZWZzX2lkID0gMSwKCQkJCXR5cGUgPSAyLAoJCQkJZXZlbnQgPSAnYWRtaW4nLAoJ CQkJcG9zaXRpb24gPSAwCgkJCSIpOwoKCQkJJEdMT0JBTFNbJ3ByZWZzJ10gPSBnZXRfcHJl ZnMoKTsKCQl9Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltYWdlX2dUeHQoJHdo YXQsICRhdHRzID0gYXJyYXkoKSkKCXsKCQkkbGFuZyA9IGFycmF5KAoJCQknZXJyb3JfY29u dGV4dCcJCQk9PiAndXBtX2ltYWdlOiBpbnZhbGlkIGNvbnRleHQsIHRhZyBtdXN0IGJlIHVz ZWQgd2l0aGluIHRoZSB0YWcgYXMgYSB3cmFwcGVyIG9yIGZyb20gaXRzIG93biBmb3JtIGNh bGxlZCBieSB0aGUgdGFnLicsCgkJCSdpbnZhbGlkX2lkJwkJCQk9PiAndXBtX2ltYWdlOiBz dXBwbGllZCBpbWFnZSBpZCBpcyBpbnZhbGlkLCBpdCBtdXN0IGJlIGEgc2luZ2xlIG51bWVy aWMgdmFsdWUuJywKCQkJJ2xvYWRfc2NyaXB0JwkJCQk9PiAnQXV0by1sb2FkIEphdmFTY3Jp cHQ/JywKCQkJJ25vX3RodW1iJwkJCQkJPT4gJ3VwbV9pbWFnZTogaW1hZ2UgJiM4MjIwO3tp bWFnZX0mIzgyMjE7IGRvZXMgbm90IGhhdmUgYSB0aHVtYm5haWwuJywKCQkJJ25vdF9mb3Vu ZCcJCQkJCT0+ICd1cG1faW1hZ2U6IHJlcXVlc3RlZCBpbWFnZSBjb3VsZCBub3QgYmUgZm91 bmQ6ICYjODIyMDt7aW1hZ2V9JiM4MjIxOycsCgkJCSdub3RfZm91bmRfbGlzdCcJCT0+ICd1 cG1faW1hZ2U6IHJlcXVlc3RlZCBpbWFnZXMgY291bGQgbm90IGJlIGZvdW5kOiAmIzgyMjA7 e2xpc3R9JiM4MjIxOycsCgkJCSdub3RoaW5nX3JlcXVlc3RlZCcgPT4gJ3VwbV9pbWFnZTog bm8gaW1hZ2Ugd2FzIHJlcXVlc3RlZC4nLAoJCQkncHJlZnMnCQkJCQkJCT0+ICd1cG1faW1h Z2UgUHJlZmVyZW5jZXMnCgkJKTsKCgkJcmV0dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0 dHMpOwoJfSI7czo0OiJoZWxwIjtzOjE3NDY4OiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l ZGlhPSJzY3JlZW4scHJvamVjdGlvbiI+CjwhLS0KcHJlLCBjb2RlIHsKYmFja2dyb3VuZC1j b2xvcjogI2VlZTsKfQoKaDMgY29kZSB7CmZvbnQtZmFtaWx5OiBpbmhlcml0OwpiYWNrZ3Jv dW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQotLT4KPC9zdHlsZT4KCjxoMT51cG1faW1hZ2U8 L2gxPgoKPG9sIGlkPSJzdGFydCI+Cgk8bGk+PGEgaHJlZj0iI2ludHJvLXNlY3Rpb24iPklu dHJvPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3RhZy1zZWN0aW9uIj5OZXcgSW1hZ2UgVGFn czwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNjdXN0b20tc2VjdGlvbiI+Q3VzdG9taXppbmcg T3V0cHV0PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2NyZWRpdC1zZWN0aW9uIj5DcmVkaXQg YW5kIERldmVsb3BlciBOb3RlczwvYT48L2xpPgo8L29sPgoKCjxoMiBpZD0iaW50cm8tc2Vj dGlvbiI+SW50cm88L2gyPgoKPHA+VGV4dHBhdHRlcm4gY29tZXMgd2l0aCBpdHMgb3duIGlt YWdlIHRhZ3MsIGJ1dCBhcyBJIHdvcmtlZCBvbiB0aGlzIHBsdWdpbiwgSSBkZWNpZGVkIHRv CmNyZWF0ZSBleHRlbmRlZCB2ZXJzaW9ucywgdG8gYWxsb3cgYSBsb3QgbW9yZSBjdXN0b21p emF0aW9uLiBUaGlzIHBsdWdpbiB3b24mIzgyMTc7dAphdXRvbWF0aWNhbGx5IGNyZWF0ZSB2 YXN0LCBjb21wbGljYXRlZCBnYWxsZXJpZXMsIGJ1dCB5b3UgY291bGQgY2VydGFpbmx5IHVz ZSBpdCB0bwpjcmVhdGUgYSBtaW5pLWdhbGxlcnkgb2Ygc29ydHMuIDxhIGhyZWY9IiNzdGFy dCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgo8 aDIgaWQ9InRhZy1zZWN0aW9uIj5OZXcgSW1hZ2UgVGFnczwvaDI+Cgo8cD5UaGlzIHBsdWdp biBwcm92aWRlcyB5b3Ugd2l0aCB0d28gbmV3IGltYWdlIHRhZ3MuPC9wPgoKPGgzPjxjb2Rl PiZsdDt0eHA6dXBtX2ltYWdlIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8ZGw+Cgk8ZHQ+PGNvZGU+ PGI+Y2xhc3M9IjwvYj48ZW0+Y2xhc3MgbmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4K CTxkZD5UaGUgKFgpSFRNTC9DU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlLjwvZGQ+ Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZh bGlkIChYKUhUTUwvQ1NTIGNsYXNzIG5hbWUuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1 bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5mb3JtPSI8L2I+PGVtPmZvcm0gbmFtZTwvZW0+ PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5DdXN0b21pemUgdGhlIGltYWdlIGRldGFpbHMg b3V0cHV0LCBmb3IgdHlwZSA8Y29kZT48Yj5pbWFnZTwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+ UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IGV4aXN0aW5n IGZvcm0mIzgyMTc7cyBuYW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9k ZD4KCgk8ZHQ+PGNvZGU+PGI+aWQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2Rl PjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBpbWFnZS48 L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFu eSB2YWxpZCAoWClIVE1ML0NTUyBpZC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0 LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmltYWdlX2lkPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4i PC9iPjwvY29kZT4gb3IgPGNvZGU+PGI+aW1hZ2VfbmFtZT0iPC9iPjxlbT52YWx1ZTwvZW0+ PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgaW1hZ2UgdG8gZGlzcGxheS48L2RkPgoJ PGRkPlJlcXVpcmVkOiBZZXMuPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiB0aGUgaW1h Z2UgaWQjIG9yIGltYWdlIG5hbWUsIGFzIGxpc3RlZCBpbiB0aGUgaW1hZ2UgdGFiLjwvZGQ+ Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd19h bHQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhl ciB0byBzaG93IHRoZSBhbHRlcm5hdGUgdGV4dCBhcyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRh Yi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6 IDxjb2RlPjxiPnllczwvYj48L2NvZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9k ZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoK CTxkdD48Y29kZT48Yj5zaG93X3RpdGxlPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwv Y29kZT48L2R0PgoJPGRkPldoZXRoZXIgdG8gc2hvdyB0aGUgY2FwdGlvbiwgYXMgbGlzdGVk IGluIHRoZSBpbWFnZSB0YWIsIGFzIHRoZSBpbWFnZSYjODIxNztzIHRpdGxlLjwvZGQ+Cgk8 ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+ eWVzPC9iPjwvY29kZT4gb3IgPGNvZGU+PGI+bm88L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRl ZmF1bHQgdmFsdWU6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+LjwvZGQ+CgoJPGR0Pjxjb2Rl PjxiPnR5cGU9IjwvYj48ZW0+aW1hZ2UgdHlwZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4K CTxkZD5UaGUga2luZCBvZiBpbWFnZSB0byBkaXNwbGF5LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6 IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+aW1hZ2U8L2I+PC9j b2RlPiAoZGVmYXVsdCksCgk8Y29kZT48Yj50aHVtYm5haWw8L2I+PC9jb2RlPiwgYW5kIDxj b2RlPjxiPnBvcHVwPC9iPjwvY29kZT4uIFRoZSBwYXJhbWV0ZXIKCTxjb2RlPjxiPmFydGlj bGU8L2I+PC9jb2RlPiBoYXMgYmVlbiBkZXByZWNhdGVkLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2 YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+dXJsPSI8L2I+PGVtPndlYnBhZ2Ug dXJsPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldlYnNpdGUgdXJsLCBvciBhcnRp Y2xlIGlkIywgdG8gbWFrZSB0aGUgaW1hZ2UgbGluayB0by48L2RkPgoJPGRkPlJlcXVpcmVk OiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IHVybCBhZGRyZXNzIG9yIGFydGlj bGUgaWQjLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNv ZGU+PGI+d3JhcHRhZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4K CTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8gd3JhcCBhcm91bmQgdGhlIGltYWdlIChvciB0aGUg bGlzdCwgaWYgdXNpbmcgbXVsdGlwbGUgaW1hZ2VzKS48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIGVsZW1l bnQgbmFtZS4gRm9yIGV4YW1wbGU6IDxjb2RlPjxiPnA8L2I+PC9jb2RlPi48L2RkPgoJPGRk PkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnhodG1sPSI8L2I+ PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldoZXRoZXIgdGhlIHRh ZyBvdXRwdXRzIHhodG1sIG9yIGh0bWwuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4K CTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8Y29k ZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+ eWVzPC9iPjwvY29kZT4uPC9kZD4KPC9kbD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNv ZGU+Jmx0O3R4cDp1cG1fYXJ0aWNsZV9pbWFnZSAvJmd0OzwvY29kZT48L2gzPgoKPGRsPgoJ PGR0Pjxjb2RlPjxiPmJyZWFrPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48 L2R0PgoJPGRkPklmIHVzaW5nIG11bHRpcGxlIGltYWdlcyBhbmQgdGhlIHdyYXB0YWcgcGFy YW1ldGVyLCB0aGUgKFgpSFRNTCB0YWcgdG8gc2VwYXJhdGUKCQlpbWFnZXMgd2l0aC48L2Rk PgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2 YWxpZCAoWClIVE1MIGVsZW1lbnQgbmFtZSwgZm9yIGV4YW1wbGUsIDxjb2RlPjxiPmJyPC9i PjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48 Y29kZT48Yj5icmVha19jbGFzcz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+ PC9kdD4KCTxkZD5JZiB1c2luZyBtdWx0aXBsZSBpbWFnZXMgYW5kIHRoZSB3cmFwdGFnIHBh cmFtZXRlciwgdGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZQoJYnJlYWt0 YWcuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVz OiBhbnkgdmFsaWQgKFgpSFRNTC9DU1MgY2xhc3MgbmFtZS48L2RkPgoJPGRkPkRlZmF1bHQg dmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+PGVtPmNsYXNz IG5hbWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwvQ1NTIGNs YXNzIHRvIGFwcGx5IHRvIHRoZSBpbWFnZSBvciB0aGUgaW1hZ2UmIzgyMTc7cyB3cmFwdGFn LiBJZiBhIGxpc3QKCQlvZiBhcnRpY2xlIGltYWdlcywgdGhlbiB0aGUgY2xhc3MgdG8gYXBw bHkgdG8gdGhlIGxpc3QmIzgyMTc7cyB3cmFwdGFnLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5v LjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwvQ1NTIGNs YXNzIG5hbWUuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48 Y29kZT48Yj5mb3JtPSI8L2I+PGVtPmZvcm0gbmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9k dD4KCTxkZD5DdXN0b21pemUgdGhlIGltYWdlIGRldGFpbHMgb3V0cHV0LCBmb3IgdHlwZSA8 Y29kZT48Yj5pbWFnZTwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IGV4aXN0aW5nIGZvcm0mIzgyMTc7cyBuYW1l LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+ d3JhcGZvcm09IjwvYj48ZW0+Zm9ybSBuYW1lPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJ PGRkPkN1c3RvbWl6ZSB0aGUgYWRkaXRpb25hbCBvdXRwdXQgZm9yIGFydGljbGUgaW1hZ2Ug bGlzdHMgKHVzZSB3aXRoIHVwbV9pbWdfbGlzdCkuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8u PC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgZXhpc3RpbmcgZm9ybSYjODIxNztz IG5hbWUuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29k ZT48Yj5pZD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5U aGUgKFgpSFRNTC9DU1MgaWQgdG8gYXBwbHkgdG8gdGhlIGltYWdlLjwvZGQ+Cgk8ZGQ+UmVx dWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhU TUwvQ1NTIGlkLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+ PGNvZGU+PGI+bGltaXQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+ Cgk8ZGQ+SWYgdXNpbmcgbXVsdGlwbGUgaW1hZ2VzLCB0aGUgbWF4aW11bSBudW1iZXIgb2Yg aW1hZ2VzIHRvIHNob3cuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFp bGFibGUgdmFsdWVzOiBhbnkgd2hvbGUgbnVtYmVyLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1 ZTogPGNvZGU+PGI+MDwvYj48L2NvZGU+LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPm9mZnNldD0i PC9iPjxlbT5pbnRlZ2VyPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPklmIHVzaW5n IG11bHRpcGxlIGltYWdlcywgdGhlIG51bWJlciBvZiBpbWFnZXMgdG8gc2tpcCAobm90IGRp c3BsYXkpIGluIHRoZSBsaXN0LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogYW55IHdob2xlIG51bWJlci48L2RkPgoJPGRkPkRlZmF1bHQg dmFsdWU6IDxjb2RlPjxiPjA8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5zaG93 X2FsdD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0 aGVyIHRvIHNob3cgdGhlIGFsdGVybmF0ZSB0ZXh0IGFzIGxpc3RlZCBpbiB0aGUgaW1hZ2Ug dGFiLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVl czogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNvZGU+PGI+bm88L2I+PC9jb2RlPi48 L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+LjwvZGQ+ CgoJPGR0Pjxjb2RlPjxiPnNob3dfaGVpZ2h0PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9i PjwvY29kZT48L2R0PgoJPGRkPldoZXRoZXIgdG8gaW5jbHVkZSB0aGUgaW1hZ2UgaGVpZ2h0 IGluIHRoZSBpbWFnZSB0YWcgcmV0dXJuZWQuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9k ZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8 Y29kZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+ PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd190aXRsZT0iPC9i PjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIHNo b3cgdGhlIGNhcHRpb24sIGFzIGxpc3RlZCBpbiB0aGUgaW1hZ2UgdGFiLCBhcyB0aGUgaW1h Z2UmIzgyMTc7cyAoWClIVE1MIHRpdGxlIGF0dHJpYnV0ZS48L2RkPgoJPGRkPlJlcXVpcmVk OiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2Nv ZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVl OiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5zaG93X3dp ZHRoPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldoZXRo ZXIgdG8gaW5jbHVkZSB0aGUgaW1hZ2Ugd2lkdGggaW4gdGhlIGltYWdlIHRhZyByZXR1cm5l ZC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6 IDxjb2RlPjxiPnllczwvYj48L2NvZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9k ZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoK CTxkdD48Y29kZT48Yj50eXBlPSI8L2I+PGVtPmltYWdlIHR5cGU8L2VtPjxiPiI8L2I+PC9j b2RlPjwvZHQ+Cgk8ZGQ+VGhlIGtpbmQgb2YgaW1hZ2UgdG8gZGlzcGxheS48L2RkPgoJPGRk PlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPmlt YWdlPC9iPjwvY29kZT4sCgk8Y29kZT48Yj50aHVtYm5haWw8L2I+PC9jb2RlPiwgYW5kIDxj b2RlPjxiPnBvcHVwPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29k ZT48Yj5pbWFnZTwvYj48L2NvZGU+LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnVybD0iPC9iPjxl bT53ZWJwYWdlIHVybDwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XZWJzaXRlIHVy bCwgb3IgYXJ0aWNsZSBpZCMsIHRvIG1ha2UgdGhlIGltYWdlIGxpbmsgdG8uPC9kZD4KCTxk ZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiB1cmwgYWRkcmVz cyBvciBhcnRpY2xlIGlkIy48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+ CgoJPGR0Pjxjb2RlPjxiPndyYXB0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9j b2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwgdGFnIHRvIHdyYXAgYXJvdW5kIHRoZSBpbWFn ZSAob3IgdGhlIGxpc3QsIGlmIHVzaW5nIG11bHRpcGxlIGltYWdlcykuPC9kZD4KCTxkZD5S ZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgp SFRNTCBlbGVtZW50IG5hbWUsIGZvciBleGFtcGxlLCA8Y29kZT48Yj5wPC9iPjwvY29kZT4u PC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj54 aHRtbD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0 aGVyIHRoZSB0YWcgb3V0cHV0cyBYSFRNTCBvciBIVE1MLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6 IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+eWVzPC9iPjwvY29k ZT4gb3IgPGNvZGU+PGI+bm88L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6 IDxjb2RlPjxiPnllczwvYj48L2NvZGU+LjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t PgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2lmX2FydGljbGVfaW1hZ2UgLyZndDs8L2NvZGU+ PC9oMz4KCjx1bD4KCTxsaT5EZXRlcm1pbmUgd2hldGhlciBhbiBhcnRpY2xlIGltYWdlIGhh cyBiZWVuIGRlZmluZWQuPC9saT4KCTxsaT5Db25kaXRpb25hbCB3cmFwcGluZyB0YWcsIG5v IGF0dHJpYnV0ZXMuPC9saT4KPC91bD4KCgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2Rl PiZsdDt0eHA6dXBtX2lmX2FydGljbGVfaW1hZ2VfbGlzdCAvJmd0OzwvY29kZT48L2gzPgoK PHVsPgoJPGxpPkRldGVybWluZSB3aGV0aGVyIG11bHRpcGxlIGFydGljbGUgaW1hZ2VzIGhh dmUgYmVlbiBkZWZpbmVkLjwvbGk+Cgk8bGk+Q29uZGl0aW9uYWwgd3JhcHBpbmcgdGFnLCBu byBhdHRyaWJ1dGVzLjwvbGk+CjwvdWw+CgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0i SnVtcCBiYWNrIGNvbnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoKCgo8aDIgaWQ9ImN1 c3RvbS1zZWN0aW9uIj5DdXN0b21pemluZyBPdXRwdXQ8L2gyPgoKPHA+U3VwcGx5IHRoZSBp bWFnZSBpZCBvciBuYW1lLCBhbmQgdGhlIGZvcm0gdG8gYmUgdXNlZC4gQWx0ZXJuYXRlbHkg eW91IG1heSB1c2UgdGhlIHRhZ3MgYXMKY29udGFpbmluZyBvciB3cmFwcGluZyB0YWdzLiBG b3IgZXhhbXBsZTo8L3A+Cgo8cD48Y29kZT4mbHQ7dHhwOnVwbV9pbWFnZSB0eXBlPSJpbWFn ZSImZ3Q7Jmx0O3R4cDp1cG1faW1nX2NhcHRpb24gLyZndDsmbHQ7L3R4cDp1cG1faW1hZ2Um Z3Q7PC9jb2RlPjwvcD4KCjxwPlRoZSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZnJvbSB3aXRo aW4gYSBmb3JtL3dyYXBwaW5nIHRhZyBhcmUgZmFpcmx5IHNlbGYtZXhwbGFuYXRvcnkuPC9w PgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfYWx0IC8m Z3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogaW1hZ2UgYWx0ZXJuYXRlIHRleHQu PC9wPgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmVzY2FwZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+ IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIGVzY2FwZSB0aGUgcmVzdWx0IHRv IG91dHB1dCB2YWxpZCBtYXJrdXAuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxk ZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj5odG1sPC9iPjwvY29kZT4gb3IgdW5zZXQu PC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgo8L2RsPgoKPCEtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfY2FwdGlvbiAvJmd0OzwvY29k ZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGltYWdlIGNhcHRpb24uPC9wPgoKPGRsPgoJPGR0 Pjxjb2RlPjxiPmNsYXNzPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0 PgoJPGRkPlRoZSAoWClIVE1ML0NTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgd3JhcHRhZy48 L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFu eSB2YWxpZCBDU1MgY2xhc3MgbmFtZSBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFs dWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmVzY2FwZT0iPC9iPjxlbT52YWx1ZTwv ZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIGVzY2FwZSB0aGUgcmVz dWx0IHRvIG91dHB1dCB2YWxpZCBtYXJrdXAuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9k ZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj5odG1sPC9iPjwvY29kZT4gb3Ig dW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29k ZT48Yj5sYWJlbD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxk ZD5UaGlzIHN0cmluZyB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgY2FwdGlvbi48L2RkPgoJ PGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB0ZXh0 IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+ PGNvZGU+PGI+bGFiZWx0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwv ZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwgdGFnIHRvIGVuY2xvc2UgdGhlIGxhYmVsLjwvZGQ+Cgk8 ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlk IChYKUhUTUwgdGFnIG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQu PC9kZD4KCgk8ZHQ+PGNvZGU+PGI+d3JhcHRhZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+Ijwv Yj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8gZW5jbG9zZSB0aGUgY2Fw dGlvbi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1 ZXM6IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQg dmFsdWU6IHVuc2V0LjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2Rl PiZsdDt0eHA6dXBtX2ltZ19jYXRlZ29yeSAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3Jp cHRpb246IHRoZSBjYXRlZ29yeSB0aGUgaW1hZ2UgYmVsb25ncyB0by48L3A+Cgo8ZGw+Cgk8 ZHQ+PGNvZGU+PGI+Y2xhc3M9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwv ZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFn LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczog YW55IHZhbGlkIENTUyBjbGFzcyBuYW1lIG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2 YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFiZWw9IjwvYj48ZW0+dmFsdWU8 L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhpcyBzdHJpbmcgd2lsbCBiZSBwcmVw ZW5kZWQgdG8gdGhlIGNhcHRpb24uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxk ZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdGV4dCBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1 bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmxhYmVsdGFnPSI8L2I+PGVt PnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0 byBlbmNsb3NlIHRoZSBsYWJlbC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRk PkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48L2Rk PgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnRpdGxl PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClI VE1MIHRhZyB0byBlbmNsb3NlIHRoZSBsYWJlbC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48 L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPjA8L2I+PC9jb2RlPiAoemVy by9vZmYpIG9yIDxjb2RlPjxiPjE8L2I+PC9jb2RlPiAob25lL29uKS48L2RkPgoJPGRkPkRl ZmF1bHQgdmFsdWU6IDxjb2RlPjxiPjA8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48 Yj53cmFwdGFnPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRk PlRoZSAoWClIVE1MIHRhZyB0byBlbmNsb3NlIHRoZSBjYXB0aW9uLjwvZGQ+Cgk8ZGQ+UmVx dWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhU TUwgdGFnIG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4K PC9kbD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2Rh dGUgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiB0aGUgZGF0ZSB0aGUgaW1h Z2Ugd2FzIHVwbG9hZGVkLjwvcD4KCjxkbD4KCTxkdD48Y29kZT48Yj5mb3JtYXQ9IjwvYj48 ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+PC9kZD4KCTxkZD5SZXF1 aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgPGEgaHJl Zj0iaHR0cDovL3BocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IHN0cmluZyBvciA8 Y29kZT48Yj5zaW5jZTwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5z ZXQgKHVzZSAiRGF0ZSBmb3JtYXQiIHByZWZlcmVuY2UpLjwvZGQ+CgoJPGR0Pjxjb2RlPjxi PmdtdD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0 aGVyIHRvIGZvcm1hdCBkYXRldGltZSBhY2NvcmRpbmcgR01UIHRpbWUuPC9kZD4KCTxkZD5S ZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj4wPC9i PjwvY29kZT4gKG5vLCB1c2UgIlRpbWUgWm9uZSIgcHJlZmVyZW5jZSkgb3IgPGNvZGU+PGI+ MTwvYj48L2NvZGU+ICh5ZXMpLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+ MDwvYj48L2NvZGU+IChubyk8L2RkPgoKCTxkdD48Y29kZT48Yj5sYW5nPSI8L2I+PGVtPnZh bHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPkZvcm1hdCB0aW1lIHN0cmluZyBh Y2NvcmRpbmcgdG8gc3BlY2lmaWVkIGxhbmd1YWdlIGxvY2FsZS48L2RkPgoJPGRkPlJlcXVp cmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCA8L2RkPgoJ PGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0ICh1c2UgIkxhbmd1YWdlIiBsb2NhbGUgcHJlZmVy ZW5jZSkuPC9kZD4KPC9kbD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4 cDp1cG1faW1nX2Z1bGxfaGVpZ2h0IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlv bjogZnVsbC1zaXplIGltYWdlIGhlaWdodC48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgz Pjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19mdWxsX3VybCAvJmd0OzwvY29kZT48L2gzPgoKPHA+ RGVzY3JpcHRpb246IGZ1bGwtc2l6ZSBpbWFnZSB1cmwuPC9wPgoKPCEtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfZnVsbF93aWR0aCAvJmd0OzwvY29kZT48 L2gzPgoKPHA+RGVzY3JpcHRpb246IGZ1bGwtc2l6ZSBpbWFnZSB3aWR0aC48L3A+Cgo8IS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19ocmVmIC8mZ3Q7PC9j b2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogd2Vic2l0ZSB1cmwgdG8gbWFrZSB0aGUgaW1h Z2UgbGluayB0bywgYXMgcGFzc2VkIGJ5IHRoZSB1cmwgcGFyYW1ldGVyLjwvcD4KCjxwPklm IHVzZWQgYXMgYSB3cmFwcGluZyB0YWcsIGl0IHdpbGwgdHVybiB3aGF0ZXZlciBpdCBzdXJy b3VuZHMgaW50byBhIGxpbmsuPC9wPgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+ PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NT UyBjbGFzcyB0byBhcHBseSB0byB0aGUgd3JhcHRhZy48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCBDU1MgY2xhc3MgbmFt ZSBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0 Pjxjb2RlPjxiPmVzY2FwZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9k dD4KCTxkZD5XaGV0aGVyIHRvIGVzY2FwZSB0aGUgcmVzdWx0IHRvIG91dHB1dCB2YWxpZCBt YXJrdXAuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFs dWVzOiA8Y29kZT48Yj5odG1sPC9iPjwvY29kZT4gb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZh dWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5sYWJlbD0iPC9iPjxlbT52 YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGlzIHN0cmluZyB3aWxsIGJl IHByZXBlbmRlZCB0byB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2Rk PgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB0ZXh0IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+ RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFiZWx0YWc9Ijwv Yj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwg dGFnIHRvIGVuY2xvc2UgdGhlIGxhYmVsLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwgdGFnIG9yIHVuc2V0 LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+ d3JhcHRhZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5U aGUgKFgpSFRNTCB0YWcgdG8gZW5jbG9zZSB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVp cmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1M IHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+Cjwv ZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19pZCAv Jmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGltYWdlIGlkIG51bWJlci48L3A+ Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19saXN0IC8m Z3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogYXJ0aWNsZSBpbWFnZSBsaXN0LiA8 c3Ryb25nPk9ubHkgYXZhaWxhYmxlIHRvCgk8Y29kZT4mbHQ7dHhwOnVwbV9hcnRpY2xlX2lt YWdlIC8mZ3Q7PC9jb2RlPiYjODIxNztzIDxjb2RlPndyYXBmb3JtPC9jb2RlPjwvc3Ryb25n Pi48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19u YW1lIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogaW1hZ2UgbmFtZS48L3A+ Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ190aHVtYl9o ZWlnaHQgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiB0aHVtYm5haWwgaW1h Z2UgaGVpZ2h0LjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1 cG1faW1nX3RodW1iX3VybCAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IHRo dW1ibmFpbCBpbWFnZSB1cmwuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4m bHQ7dHhwOnVwbV9pbWdfdGh1bWJfd2lkdGggLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2Ny aXB0aW9uOiB0aHVtYm5haWwgaW1hZ2Ugd2lkdGguPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4K CjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4m Izg2MTc7PC9hPjwvcD4KCgoKPGgyIGlkPSJjcmVkaXQtc2VjdGlvbiI+Q3JlZGl0IGFuZCBE ZXZlbG9wZXIgTm90ZXM8L2gyPgoKPHA+VGhlIGNvZGUgZnJvbSB0aGlzIHBsdWdpbiBpcyBu b3QgZW50aXJlbHkgJiM4MjIwO2Zyb20gc2NyYXRjaCYjODIyMTs6IEkgbWFkZSB1c2Ugb2Yg Y29kZQphbHJlYWR5IGV4aXN0aW5nIGluIFRleHRwYXR0ZXJuLiBUaGlzIG1hZGUgaXQgYSBs b3QgZWFzaWVyIGZvciBtZSB0byBjcmVhdGUgd2hhdCBJIGhvcGUgaXMKYSBuZWFyLXNlYW1s ZXNzIHBsdWdpbi4gSSBkb24mIzgyMTc7dCBrbm93IGZvciBjZXJ0YWluIHdob20gd3JvdGUg dGhlIHBhcnRzIEkgdXNlZCwKdGhvdWdoIEkgc3VzcGVjdCBpdCBpcyBsYXJnZWx5IDxhIGhy ZWY9Imh0dHA6Ly90ZXh0aXNtLmNvbS8iPkRlYW48L2E+J3Mgd29yay48L3A+Cgo8cD5QYXJ0 IG9mIHRoZSBtdWx0aXBsZSBhcnRpY2xlIGltYWdlcyBzdXBwb3J0IHdhcyBvcmlnaW5hbGx5 IGJvcnJvd2VkIGZyb20KPGEgaHJlZj0iaHR0cDovL3RocmVzaG9sZHN0YXRlLmNvbS9zb2Z0 d2FyZS8zNjk5L3plbV9hcnRpY2xlX2ltYWdlIj56ZW1fYXJ0aWNsZV9pbWFnZTwvYT4uPC9w PiI7czo4OiJoZWxwX3JhdyI7czoxNzQ2ODoiPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp YT0ic2NyZWVuLHByb2plY3Rpb24iPgo8IS0tCnByZSwgY29kZSB7CmJhY2tncm91bmQtY29s b3I6ICNlZWU7Cn0KCmgzIGNvZGUgewpmb250LWZhbWlseTogaW5oZXJpdDsKYmFja2dyb3Vu ZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLS0+Cjwvc3R5bGU+Cgo8aDE+dXBtX2ltYWdlPC9o MT4KCjxvbCBpZD0ic3RhcnQiPgoJPGxpPjxhIGhyZWY9IiNpbnRyby1zZWN0aW9uIj5JbnRy bzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiN0YWctc2VjdGlvbiI+TmV3IEltYWdlIFRhZ3M8 L2E+PC9saT4KCTxsaT48YSBocmVmPSIjY3VzdG9tLXNlY3Rpb24iPkN1c3RvbWl6aW5nIE91 dHB1dDwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNjcmVkaXQtc2VjdGlvbiI+Q3JlZGl0IGFu ZCBEZXZlbG9wZXIgTm90ZXM8L2E+PC9saT4KPC9vbD4KCgo8aDIgaWQ9ImludHJvLXNlY3Rp b24iPkludHJvPC9oMj4KCjxwPlRleHRwYXR0ZXJuIGNvbWVzIHdpdGggaXRzIG93biBpbWFn ZSB0YWdzLCBidXQgYXMgSSB3b3JrZWQgb24gdGhpcyBwbHVnaW4sIEkgZGVjaWRlZCB0bwpj cmVhdGUgZXh0ZW5kZWQgdmVyc2lvbnMsIHRvIGFsbG93IGEgbG90IG1vcmUgY3VzdG9taXph dGlvbi4gVGhpcyBwbHVnaW4gd29uJiM4MjE3O3QKYXV0b21hdGljYWxseSBjcmVhdGUgdmFz dCwgY29tcGxpY2F0ZWQgZ2FsbGVyaWVzLCBidXQgeW91IGNvdWxkIGNlcnRhaW5seSB1c2Ug aXQgdG8KY3JlYXRlIGEgbWluaS1nYWxsZXJ5IG9mIHNvcnRzLiA8YSBocmVmPSIjc3RhcnQi IHRpdGxlPSJKdW1wIGJhY2sgY29udGVudHMgbGlzdCI+JiM4NjE3OzwvYT48L3A+CgoKPGgy IGlkPSJ0YWctc2VjdGlvbiI+TmV3IEltYWdlIFRhZ3M8L2gyPgoKPHA+VGhpcyBwbHVnaW4g cHJvdmlkZXMgeW91IHdpdGggdHdvIG5ldyBpbWFnZSB0YWdzLjwvcD4KCjxoMz48Y29kZT4m bHQ7dHhwOnVwbV9pbWFnZSAvJmd0OzwvY29kZT48L2gzPgoKPGRsPgoJPGR0Pjxjb2RlPjxi PmNsYXNzPSI8L2I+PGVtPmNsYXNzIG5hbWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8 ZGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBpbWFnZS48L2RkPgoJ PGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxp ZCAoWClIVE1ML0NTUyBjbGFzcyBuYW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5z ZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+Zm9ybT0iPC9iPjxlbT5mb3JtIG5hbWU8L2VtPjxi PiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+Q3VzdG9taXplIHRoZSBpbWFnZSBkZXRhaWxzIG91 dHB1dCwgZm9yIHR5cGUgPGNvZGU+PGI+aW1hZ2U8L2I+PC9jb2RlPi48L2RkPgoJPGRkPlJl cXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSBleGlzdGluZyBm b3JtJiM4MjE3O3MgbmFtZS48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+ CgoJPGR0Pjxjb2RlPjxiPmlkPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48 L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NTUyBpZCB0byBhcHBseSB0byB0aGUgaW1hZ2UuPC9k ZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkg dmFsaWQgKFgpSFRNTC9DU1MgaWQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48 L2RkPgoKCTxkdD48Y29kZT48Yj5pbWFnZV9pZD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+Ijwv Yj48L2NvZGU+IG9yIDxjb2RlPjxiPmltYWdlX25hbWU9IjwvYj48ZW0+dmFsdWU8L2VtPjxi PiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIGltYWdlIHRvIGRpc3BsYXkuPC9kZD4KCTxk ZD5SZXF1aXJlZDogWWVzLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogdGhlIGltYWdl IGlkIyBvciBpbWFnZSBuYW1lLCBhcyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRhYi48L2RkPgoJ PGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnNob3dfYWx0 PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldoZXRoZXIg dG8gc2hvdyB0aGUgYWx0ZXJuYXRlIHRleHQgYXMgbGlzdGVkIGluIHRoZSBpbWFnZSB0YWIu PC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8 Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+ Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4KCgk8 ZHQ+PGNvZGU+PGI+c2hvd190aXRsZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2Nv ZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIHNob3cgdGhlIGNhcHRpb24sIGFzIGxpc3RlZCBp biB0aGUgaW1hZ2UgdGFiLCBhcyB0aGUgaW1hZ2UmIzgyMTc7cyB0aXRsZS48L2RkPgoJPGRk PlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnll czwvYj48L2NvZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZh dWx0IHZhbHVlOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48 Yj50eXBlPSI8L2I+PGVtPmltYWdlIHR5cGU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8 ZGQ+VGhlIGtpbmQgb2YgaW1hZ2UgdG8gZGlzcGxheS48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPmltYWdlPC9iPjwvY29k ZT4gKGRlZmF1bHQpLAoJPGNvZGU+PGI+dGh1bWJuYWlsPC9iPjwvY29kZT4sIGFuZCA8Y29k ZT48Yj5wb3B1cDwvYj48L2NvZGU+LiBUaGUgcGFyYW1ldGVyCgk8Y29kZT48Yj5hcnRpY2xl PC9iPjwvY29kZT4gaGFzIGJlZW4gZGVwcmVjYXRlZC48L2RkPgoJPGRkPkRlZmF1bHQgdmFs dWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnVybD0iPC9iPjxlbT53ZWJwYWdlIHVy bDwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XZWJzaXRlIHVybCwgb3IgYXJ0aWNs ZSBpZCMsIHRvIG1ha2UgdGhlIGltYWdlIGxpbmsgdG8uPC9kZD4KCTxkZD5SZXF1aXJlZDog Tm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiB1cmwgYWRkcmVzcyBvciBhcnRpY2xl IGlkIy48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2Rl PjxiPndyYXB0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8 ZGQ+VGhlIChYKUhUTUwgdGFnIHRvIHdyYXAgYXJvdW5kIHRoZSBpbWFnZSAob3IgdGhlIGxp c3QsIGlmIHVzaW5nIG11bHRpcGxlIGltYWdlcykuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8u PC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCBlbGVtZW50 IG5hbWUuIEZvciBleGFtcGxlOiA8Y29kZT48Yj5wPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5E ZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj54aHRtbD0iPC9iPjxl bT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRoZSB0YWcg b3V0cHV0cyB4aHRtbCBvciBodG1sLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8 ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNvZGU+ PGI+bm88L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPnll czwvYj48L2NvZGU+LjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2Rl PiZsdDt0eHA6dXBtX2FydGljbGVfaW1hZ2UgLyZndDs8L2NvZGU+PC9oMz4KCjxkbD4KCTxk dD48Y29kZT48Yj5icmVhaz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9k dD4KCTxkZD5JZiB1c2luZyBtdWx0aXBsZSBpbWFnZXMgYW5kIHRoZSB3cmFwdGFnIHBhcmFt ZXRlciwgdGhlIChYKUhUTUwgdGFnIHRvIHNlcGFyYXRlCgkJaW1hZ2VzIHdpdGguPC9kZD4K CTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFs aWQgKFgpSFRNTCBlbGVtZW50IG5hbWUsIGZvciBleGFtcGxlLCA8Y29kZT48Yj5icjwvYj48 L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNv ZGU+PGI+YnJlYWtfY2xhc3M9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwv ZHQ+Cgk8ZGQ+SWYgdXNpbmcgbXVsdGlwbGUgaW1hZ2VzIGFuZCB0aGUgd3JhcHRhZyBwYXJh bWV0ZXIsIHRoZSAoWClIVE1ML0NTUyBjbGFzcyB0byBhcHBseSB0byB0aGUKCWJyZWFrdGFn LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczog YW55IHZhbGlkIChYKUhUTUwvQ1NTIGNsYXNzIG5hbWUuPC9kZD4KCTxkZD5EZWZhdWx0IHZh bHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5jbGFzcz0iPC9iPjxlbT5jbGFzcyBu YW1lPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NTUyBjbGFz cyB0byBhcHBseSB0byB0aGUgaW1hZ2Ugb3IgdGhlIGltYWdlJiM4MjE3O3Mgd3JhcHRhZy4g SWYgYSBsaXN0CgkJb2YgYXJ0aWNsZSBpbWFnZXMsIHRoZW4gdGhlIGNsYXNzIHRvIGFwcGx5 IHRvIHRoZSBsaXN0JiM4MjE3O3Mgd3JhcHRhZy48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48 L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFz cyBuYW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNv ZGU+PGI+Zm9ybT0iPC9iPjxlbT5mb3JtIG5hbWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+ Cgk8ZGQ+Q3VzdG9taXplIHRoZSBpbWFnZSBkZXRhaWxzIG91dHB1dCwgZm9yIHR5cGUgPGNv ZGU+PGI+aW1hZ2U8L2I+PC9jb2RlPi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJ PGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSBleGlzdGluZyBmb3JtJiM4MjE3O3MgbmFtZS48 L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndy YXBmb3JtPSI8L2I+PGVtPmZvcm0gbmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxk ZD5DdXN0b21pemUgdGhlIGFkZGl0aW9uYWwgb3V0cHV0IGZvciBhcnRpY2xlIGltYWdlIGxp c3RzICh1c2Ugd2l0aCB1cG1faW1nX2xpc3QpLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwv ZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IGV4aXN0aW5nIGZvcm0mIzgyMTc7cyBu YW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+ PGI+aWQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhl IChYKUhUTUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBpbWFnZS48L2RkPgoJPGRkPlJlcXVp cmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1M L0NTUyBpZC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxj b2RlPjxiPmxpbWl0PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJ PGRkPklmIHVzaW5nIG11bHRpcGxlIGltYWdlcywgdGhlIG1heGltdW0gbnVtYmVyIG9mIGlt YWdlcyB0byBzaG93LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxh YmxlIHZhbHVlczogYW55IHdob2xlIG51bWJlci48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6 IDxjb2RlPjxiPjA8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5vZmZzZXQ9Ijwv Yj48ZW0+aW50ZWdlcjwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5JZiB1c2luZyBt dWx0aXBsZSBpbWFnZXMsIHRoZSBudW1iZXIgb2YgaW1hZ2VzIHRvIHNraXAgKG5vdCBkaXNw bGF5KSBpbiB0aGUgbGlzdC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2 YWlsYWJsZSB2YWx1ZXM6IGFueSB3aG9sZSBudW1iZXIuPC9kZD4KCTxkZD5EZWZhdWx0IHZh bHVlOiA8Y29kZT48Yj4wPC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd19h bHQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhl ciB0byBzaG93IHRoZSBhbHRlcm5hdGUgdGV4dCBhcyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRh Yi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6 IDxjb2RlPjxiPnllczwvYj48L2NvZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9k ZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoK CTxkdD48Y29kZT48Yj5zaG93X2hlaWdodD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48 L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGltYWdlIGhlaWdodCBp biB0aGUgaW1hZ2UgdGFnIHJldHVybmVkLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNv ZGU+PGI+bm88L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxi PnllczwvYj48L2NvZGU+LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnNob3dfdGl0bGU9IjwvYj48 ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBzaG93 IHRoZSBjYXB0aW9uLCBhcyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRhYiwgYXMgdGhlIGltYWdl JiM4MjE3O3MgKFgpSFRNTCB0aXRsZSBhdHRyaWJ1dGUuPC9kZD4KCTxkZD5SZXF1aXJlZDog Tm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2Rl PiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTog PGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd193aWR0 aD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVy IHRvIGluY2x1ZGUgdGhlIGltYWdlIHdpZHRoIGluIHRoZSBpbWFnZSB0YWcgcmV0dXJuZWQu PC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8 Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+ Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4KCgk8 ZHQ+PGNvZGU+PGI+dHlwZT0iPC9iPjxlbT5pbWFnZSB0eXBlPC9lbT48Yj4iPC9iPjwvY29k ZT48L2R0PgoJPGRkPlRoZSBraW5kIG9mIGltYWdlIHRvIGRpc3BsYXkuPC9kZD4KCTxkZD5S ZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj5pbWFn ZTwvYj48L2NvZGU+LAoJPGNvZGU+PGI+dGh1bWJuYWlsPC9iPjwvY29kZT4sIGFuZCA8Y29k ZT48Yj5wb3B1cDwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+ PGI+aW1hZ2U8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj51cmw9IjwvYj48ZW0+ d2VicGFnZSB1cmw8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2Vic2l0ZSB1cmws IG9yIGFydGljbGUgaWQjLCB0byBtYWtlIHRoZSBpbWFnZSBsaW5rIHRvLjwvZGQ+Cgk8ZGQ+ UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogdXJsIGFkZHJlc3Mg b3IgYXJ0aWNsZSBpZCMuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoK CTxkdD48Y29kZT48Yj53cmFwdGFnPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29k ZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0byB3cmFwIGFyb3VuZCB0aGUgaW1hZ2Ug KG9yIHRoZSBsaXN0LCBpZiB1c2luZyBtdWx0aXBsZSBpbWFnZXMpLjwvZGQ+Cgk8ZGQ+UmVx dWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhU TUwgZWxlbWVudCBuYW1lLCBmb3IgZXhhbXBsZSwgPGNvZGU+PGI+cDwvYj48L2NvZGU+Ljwv ZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+eGh0 bWw9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhl ciB0aGUgdGFnIG91dHB1dHMgWEhUTUwgb3IgSFRNTC48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+ IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8 Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgo8L2RsPgoKPCEtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4K CjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pZl9hcnRpY2xlX2ltYWdlIC8mZ3Q7PC9jb2RlPjwv aDM+Cgo8dWw+Cgk8bGk+RGV0ZXJtaW5lIHdoZXRoZXIgYW4gYXJ0aWNsZSBpbWFnZSBoYXMg YmVlbiBkZWZpbmVkLjwvbGk+Cgk8bGk+Q29uZGl0aW9uYWwgd3JhcHBpbmcgdGFnLCBubyBh dHRyaWJ1dGVzLjwvbGk+CjwvdWw+CgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4m bHQ7dHhwOnVwbV9pZl9hcnRpY2xlX2ltYWdlX2xpc3QgLyZndDs8L2NvZGU+PC9oMz4KCjx1 bD4KCTxsaT5EZXRlcm1pbmUgd2hldGhlciBtdWx0aXBsZSBhcnRpY2xlIGltYWdlcyBoYXZl IGJlZW4gZGVmaW5lZC48L2xpPgoJPGxpPkNvbmRpdGlvbmFsIHdyYXBwaW5nIHRhZywgbm8g YXR0cmlidXRlcy48L2xpPgo8L3VsPgoKCjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1 bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgoKPGgyIGlkPSJjdXN0 b20tc2VjdGlvbiI+Q3VzdG9taXppbmcgT3V0cHV0PC9oMj4KCjxwPlN1cHBseSB0aGUgaW1h Z2UgaWQgb3IgbmFtZSwgYW5kIHRoZSBmb3JtIHRvIGJlIHVzZWQuIEFsdGVybmF0ZWx5IHlv dSBtYXkgdXNlIHRoZSB0YWdzIGFzCmNvbnRhaW5pbmcgb3Igd3JhcHBpbmcgdGFncy4gRm9y IGV4YW1wbGU6PC9wPgoKPHA+PGNvZGU+Jmx0O3R4cDp1cG1faW1hZ2UgdHlwZT0iaW1hZ2Ui Jmd0OyZsdDt0eHA6dXBtX2ltZ19jYXB0aW9uIC8mZ3Q7Jmx0Oy90eHA6dXBtX2ltYWdlJmd0 OzwvY29kZT48L3A+Cgo8cD5UaGUgdGFncyBhdmFpbGFibGUgdG8geW91IGZyb20gd2l0aGlu IGEgZm9ybS93cmFwcGluZyB0YWcgYXJlIGZhaXJseSBzZWxmLWV4cGxhbmF0b3J5LjwvcD4K CjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2FsdCAvJmd0 OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGltYWdlIGFsdGVybmF0ZSB0ZXh0Ljwv cD4KCjxkbD4KCTxkdD48Y29kZT48Yj5lc2NhcGU9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8 L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBlc2NhcGUgdGhlIHJlc3VsdCB0byBv dXRwdXQgdmFsaWQgbWFya3VwLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+aHRtbDwvYj48L2NvZGU+IG9yIHVuc2V0Ljwv ZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KPC9kbD4KCjwhLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2NhcHRpb24gLyZndDs8L2NvZGU+ PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiBpbWFnZSBjYXB0aW9uLjwvcD4KCjxkbD4KCTxkdD48 Y29kZT48Yj5jbGFzcz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4K CTxkZD5UaGUgKFgpSFRNTC9DU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWcuPC9k ZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkg dmFsaWQgQ1NTIGNsYXNzIG5hbWUgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVl OiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5lc2NhcGU9IjwvYj48ZW0+dmFsdWU8L2Vt PjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBlc2NhcGUgdGhlIHJlc3Vs dCB0byBvdXRwdXQgdmFsaWQgbWFya3VwLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+aHRtbDwvYj48L2NvZGU+IG9yIHVu c2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+ PGI+bGFiZWw9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+ VGhpcyBzdHJpbmcgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNhcHRpb24uPC9kZD4KCTxk ZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdGV4dCBv ciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxj b2RlPjxiPmxhYmVsdGFnPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0 PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0byBlbmNsb3NlIHRoZSBsYWJlbC48L2RkPgoJPGRk PlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAo WClIVE1MIHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0Ljwv ZGQ+CgoJPGR0Pjxjb2RlPjxiPndyYXB0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+ PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwgdGFnIHRvIGVuY2xvc2UgdGhlIGNhcHRp b24uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVz OiBhbnkgdmFsaWQgKFgpSFRNTCB0YWcgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZh bHVlOiB1bnNldC48L2RkPgo8L2RsPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4m bHQ7dHhwOnVwbV9pbWdfY2F0ZWdvcnkgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0 aW9uOiB0aGUgY2F0ZWdvcnkgdGhlIGltYWdlIGJlbG9uZ3MgdG8uPC9wPgoKPGRsPgoJPGR0 Pjxjb2RlPjxiPmNsYXNzPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0 PgoJPGRkPlRoZSAoWClIVE1ML0NTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgd3JhcHRhZy48 L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFu eSB2YWxpZCBDU1MgY2xhc3MgbmFtZSBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFs dWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmxhYmVsPSI8L2I+PGVtPnZhbHVlPC9l bT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoaXMgc3RyaW5nIHdpbGwgYmUgcHJlcGVu ZGVkIHRvIHRoZSBjYXB0aW9uLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogYW55IHRleHQgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0 IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5sYWJlbHRhZz0iPC9iPjxlbT52 YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8g ZW5jbG9zZSB0aGUgbGFiZWwuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5B dmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCB0YWcgb3IgdW5zZXQuPC9kZD4K CTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj50aXRsZT0i PC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRN TCB0YWcgdG8gZW5jbG9zZSB0aGUgbGFiZWwuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9k ZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj4wPC9iPjwvY29kZT4gKHplcm8v b2ZmKSBvciA8Y29kZT48Yj4xPC9iPjwvY29kZT4gKG9uZS9vbikuPC9kZD4KCTxkZD5EZWZh dWx0IHZhbHVlOiA8Y29kZT48Yj4wPC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+ d3JhcHRhZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5U aGUgKFgpSFRNTCB0YWcgdG8gZW5jbG9zZSB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVp cmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1M IHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+Cjwv ZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19kYXRl IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogdGhlIGRhdGUgdGhlIGltYWdl IHdhcyB1cGxvYWRlZC48L3A+Cgo8ZGw+Cgk8ZHQ+PGNvZGU+PGI+Zm9ybWF0PSI8L2I+PGVt PnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPjwvZGQ+Cgk8ZGQ+UmVxdWly ZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIDxhIGhyZWY9 Imh0dHA6Ly9waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBzdHJpbmcgb3IgPGNv ZGU+PGI+c2luY2U8L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0 ICh1c2UgIkRhdGUgZm9ybWF0IiBwcmVmZXJlbmNlKS48L2RkPgoKCTxkdD48Y29kZT48Yj5n bXQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhl ciB0byBmb3JtYXQgZGF0ZXRpbWUgYWNjb3JkaW5nIEdNVCB0aW1lLjwvZGQ+Cgk8ZGQ+UmVx dWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+MDwvYj48 L2NvZGU+IChubywgdXNlICJUaW1lIFpvbmUiIHByZWZlcmVuY2UpIG9yIDxjb2RlPjxiPjE8 L2I+PC9jb2RlPiAoeWVzKS48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPjA8 L2I+PC9jb2RlPiAobm8pPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFuZz0iPC9iPjxlbT52YWx1 ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5Gb3JtYXQgdGltZSBzdHJpbmcgYWNj b3JkaW5nIHRvIHNwZWNpZmllZCBsYW5ndWFnZSBsb2NhbGUuPC9kZD4KCTxkZD5SZXF1aXJl ZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgPC9kZD4KCTxk ZD5EZWZhdWx0IHZhbHVlOiB1bnNldCAodXNlICJMYW5ndWFnZSIgbG9jYWxlIHByZWZlcmVu Y2UpLjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6 dXBtX2ltZ19mdWxsX2hlaWdodCAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246 IGZ1bGwtc2l6ZSBpbWFnZSBoZWlnaHQuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48 Y29kZT4mbHQ7dHhwOnVwbV9pbWdfZnVsbF91cmwgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRl c2NyaXB0aW9uOiBmdWxsLXNpemUgaW1hZ2UgdXJsLjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+ Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2Z1bGxfd2lkdGggLyZndDs8L2NvZGU+PC9o Mz4KCjxwPkRlc2NyaXB0aW9uOiBmdWxsLXNpemUgaW1hZ2Ugd2lkdGguPC9wPgoKPCEtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfaHJlZiAvJmd0OzwvY29k ZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IHdlYnNpdGUgdXJsIHRvIG1ha2UgdGhlIGltYWdl IGxpbmsgdG8sIGFzIHBhc3NlZCBieSB0aGUgdXJsIHBhcmFtZXRlci48L3A+Cgo8cD5JZiB1 c2VkIGFzIGEgd3JhcHBpbmcgdGFnLCBpdCB3aWxsIHR1cm4gd2hhdGV2ZXIgaXQgc3Vycm91 bmRzIGludG8gYSBsaW5rLjwvcD4KCjxkbD4KCTxkdD48Y29kZT48Yj5jbGFzcz0iPC9iPjxl bT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTC9DU1Mg Y2xhc3MgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWcuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8u PC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgQ1NTIGNsYXNzIG5hbWUg b3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48 Y29kZT48Yj5lc2NhcGU9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+ Cgk8ZGQ+V2hldGhlciB0byBlc2NhcGUgdGhlIHJlc3VsdCB0byBvdXRwdXQgdmFsaWQgbWFy a3VwLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVl czogPGNvZGU+PGI+aHRtbDwvYj48L2NvZGU+IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVs dCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFiZWw9IjwvYj48ZW0+dmFs dWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhpcyBzdHJpbmcgd2lsbCBiZSBw cmVwZW5kZWQgdG8gdGhlIGNhcHRpb24uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4K CTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdGV4dCBvciB1bnNldC48L2RkPgoJPGRkPkRl ZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmxhYmVsdGFnPSI8L2I+ PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRh ZyB0byBlbmNsb3NlIHRoZSBsYWJlbC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJ PGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48 L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndy YXB0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhl IChYKUhUTUwgdGFnIHRvIGVuY2xvc2UgdGhlIGNhcHRpb24uPC9kZD4KCTxkZD5SZXF1aXJl ZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCB0 YWcgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgo8L2Rs PgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfaWQgLyZn dDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiBpbWFnZSBpZCBudW1iZXIuPC9wPgoK PCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfbGlzdCAvJmd0 OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGFydGljbGUgaW1hZ2UgbGlzdC4gPHN0 cm9uZz5Pbmx5IGF2YWlsYWJsZSB0bwoJPGNvZGU+Jmx0O3R4cDp1cG1fYXJ0aWNsZV9pbWFn ZSAvJmd0OzwvY29kZT4mIzgyMTc7cyA8Y29kZT53cmFwZm9ybTwvY29kZT48L3N0cm9uZz4u PC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfbmFt ZSAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGltYWdlIG5hbWUuPC9wPgoK PCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfdGh1bWJfaGVp Z2h0IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogdGh1bWJuYWlsIGltYWdl IGhlaWdodC48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBt X2ltZ190aHVtYl91cmwgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiB0aHVt Ym5haWwgaW1hZ2UgdXJsLjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0 O3R4cDp1cG1faW1nX3RodW1iX3dpZHRoIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlw dGlvbjogdGh1bWJuYWlsIGltYWdlIHdpZHRoLjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8 cD48YSBocmVmPSIjc3RhcnQiIHRpdGxlPSJKdW1wIGJhY2sgY29udGVudHMgbGlzdCI+JiM4 NjE3OzwvYT48L3A+CgoKCjxoMiBpZD0iY3JlZGl0LXNlY3Rpb24iPkNyZWRpdCBhbmQgRGV2 ZWxvcGVyIE5vdGVzPC9oMj4KCjxwPlRoZSBjb2RlIGZyb20gdGhpcyBwbHVnaW4gaXMgbm90 IGVudGlyZWx5ICYjODIyMDtmcm9tIHNjcmF0Y2gmIzgyMjE7OiBJIG1hZGUgdXNlIG9mIGNv ZGUKYWxyZWFkeSBleGlzdGluZyBpbiBUZXh0cGF0dGVybi4gVGhpcyBtYWRlIGl0IGEgbG90 IGVhc2llciBmb3IgbWUgdG8gY3JlYXRlIHdoYXQgSSBob3BlIGlzCmEgbmVhci1zZWFtbGVz cyBwbHVnaW4uIEkgZG9uJiM4MjE3O3Qga25vdyBmb3IgY2VydGFpbiB3aG9tIHdyb3RlIHRo ZSBwYXJ0cyBJIHVzZWQsCnRob3VnaCBJIHN1c3BlY3QgaXQgaXMgbGFyZ2VseSA8YSBocmVm PSJodHRwOi8vdGV4dGlzbS5jb20vIj5EZWFuPC9hPidzIHdvcmsuPC9wPgoKPHA+UGFydCBv ZiB0aGUgbXVsdGlwbGUgYXJ0aWNsZSBpbWFnZXMgc3VwcG9ydCB3YXMgb3JpZ2luYWxseSBi b3Jyb3dlZCBmcm9tCjxhIGhyZWY9Imh0dHA6Ly90aHJlc2hvbGRzdGF0ZS5jb20vc29mdHdh cmUvMzY5OS96ZW1fYXJ0aWNsZV9pbWFnZSI+emVtX2FydGljbGVfaW1hZ2U8L2E+LjwvcD4i O3M6MTU6ImFsbG93X2h0bWxfaGVscCI7aToxO3M6MzoibWQ1IjtzOjMyOiJiZDhkNjQ5MDVj MmMyYzY2ZTgxOTg4NDZiODA0YTQzMSI7fQ==