10 Questions to Ask Before Refinancing Student Loans

By Mentor Staff | Edited By Mentor Staff

Updated On January 13, 2022

Editorial Note: This content is based solely on the author's opinions and is not provided, approved, endorsed or reviewed by any financial institution or partner.

How do we make money? The products featured on this website are from our partners who compensate us. This may impact which companies we review, the products we evaluate, and where and how a product appears on a page. We receive compensation from a partner when you apply for and receive a product through Mentor. This helps us to support our website, offer free content, tools and calculators, and continue to be one of the leading sources on personal finance.

Should I refinance my student loans?

It’s a popular question on Google that many student loan borrowers ask.

Student loan refinancing is a smart strategy to get a lower interest rate, lower your monthly payment and save money. Many borrowers consider student loan refinancing to be the best student loan repayment strategy.

Before you decide to refinance your student loans, it’s important to ask these 10 questions:

  1. Why should I refinance student loans?
  2. What interest rate can I get?
  3. What credit score do I need to refinance student loans?
  4. What income do I need to refinance student loans?
  5. Can I lower my student loan payment?
  6. Should I refinance federal student loans?
  7. Do I need a cosigner?
  8. Is there a cosigner release option?
  9. How many lenders should I apply to?
  10. Can I refinance my student loans more than once?

Top Picks For Student Loan Refinancing

PD9waHAKCWVjaG8gZGF0ZSgnRicpIC4gIiAiIC4gZGF0ZSgiWSIpOwo/Pg==

PGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93LXdyYXBwZXIiPgoJPGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItbG9nby1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJCVZhcmlhYmxlIEFQUiA8c3BhbiBjbGFzcz0ibW9yZS1pbmZvLXRvb2x0aXAtdHJpZ2dlciI+PzxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10ZXh0Ij5BUFIsIG9yIEFubnVhbCBQZXJjZW50YWdlIFJhdGUsIGlzIHRoZSBwcmljZSB5b3UgcGF5IHRvIGJvcnJvdyBtb25leS4gVmFyaWFibGUgQVBSIG1lYW5zIHRoYXQgeW91ciBpbnRlcmVzdCByYXRlIGNhbiBmbHVjdHVhdGUgb3ZlciB0aW1lLCB3aGljaCBjYW4gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgeW91ciBtb250aGx5IHN0dWRlbnQgbG9hbiBwYXltZW50LiBUeXBpY2FsbHksIGEgdmFyaWFibGUtcmF0ZSBsb2FuIGhhcyBhIGxvd2VyIGludHJvZHVjdG9yeSByYXRlIHRoYW4gYSBmaXhlZC1sb2FuIHJhdGUgbG9hbi4gVmFyaWFibGUgQVBSIGluY2x1ZGVzIGEgMC4yNSUgZGlzY291bnQgd2hlbiB5b3UgZW5yb2xsIGluIGF1dG9wYXkuPC9zcGFuPjwvc3Bhbj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQkJRml4ZWQgQVBSIDxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10cmlnZ2VyIj4/PHNwYW4gY2xhc3M9Im1vcmUtaW5mby10b29sdGlwLXRleHQiPkFQUiwgb3IgQW5udWFsIFBlcmNlbnRhZ2UgUmF0ZSwgaXMgdGhlIHByaWNlIHlvdSBwYXkgdG8gYm9ycm93IG1vbmV5LiBGaXhlZCBBUFIgbWVhbnMgdGhhdCB5b3VyIGludGVyZXN0IHJhdGUgd2lsbCBhbHdheXMgc3RheSB0aGUgc2FtZS4gRXZlbiBpZiBpbnRlcmVzdCByYXRlcyBjaGFuZ2UsIHlvdXIgaW50ZXJlc3QgcmF0ZSBvciBtb250aGx5IHBheW1lbnQgd2lsbCBub3QuIEZpeGVkIEFQUiBpbmNsdWRlcyBhIDAuMjUlIGRpc2NvdW50IHdoZW4geW91IGVucm9sbCBpbiBhdXRvcGF5Ljwvc3Bhbj48L3NwYW4+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQkJQVBSCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24taGVhZGVyIGxlbmRlcnMtdGFibGUtaGVhZGVyLWNlbGwiPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pg==
PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4=

PD9waHAKCSRvdXRwdXQgPSAnJzsKCQoJJGFyZ3MgPSBhcnJheSgKICAgICAgICAncG9zdF90eXBlJyA9PiAnc2xyX2xlbmRlcicsCiAgICAgICAgJ3Bvc3RzX3Blcl9wYWdlJyA9PiAtMSwKCQknbWV0YV9xdWVyeScgPT4gYXJyYXkoCgkJCQkJCQkncmVsYXRpb24nID0+ICdBTkQnLAoJCQkJCQkJYXJyYXkoCgkJCQkJCQkJJ2tleScgPT4gJ3Nscl9sZW5kZXJfdmlzaWJsZScsCgkJCQkJCQkJJ3ZhbHVlJyA9PiAnMScsCgkJCQkJCQkJJ2NvbXBhcmUnID0+ICc9JywKCQkJCQkJCSksCgkJCQkJCQlhcnJheSgKCQkJCQkJCQkna2V5JyA9PiAnc2xyX2xlbmRlcl9kaXNjbG9zdXJlX3VybCcsCgkJCQkJCQkJJ2NvbXBhcmUnID0+ICdFWElTVFMnLAoJCQkJCQkJKSwKCQkJCQkJKSwKCQknbWV0YV9rZXknID0+ICdzbHJfbGVuZGVyX3Bvc2l0aW9uJywKCQknb3JkZXJieScgPT4gJ21ldGFfdmFsdWVfbnVtJywKCQknb3JkZXInID0+ICdBU0MnLAogICAgKTsKCgkkbG9vcCA9IG5ldyBXUF9RdWVyeSggJGFyZ3MgKTsKCglpZiAoICRsb29wIC0+IGhhdmVfcG9zdHMoKSApIHsKCQkKCQkkb3V0cHV0ID0gJ0Rpc2Nsb3N1cmVzOiAnOwoJCQoJCXdoaWxlICggJGxvb3AgLT4gaGF2ZV9wb3N0cygpICkgewoJCQkKCQkJJGxvb3AgLT4gdGhlX3Bvc3QoKTsKCQkJCgkJCSRvdXRwdXQgLj0gJzxhIGhyZWY9IicgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2Rpc2Nsb3N1cmVfdXJsJyApIC4gJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciPicgLiBnZXRfdGhlX3RpdGxlKCkgLiAnPC9hPiB8ICc7CgkJCQoJCX0KCQkKCX0KCgl3cF9yZXNldF9wb3N0ZGF0YSgpOwoKCSRvdXRwdXQgPSBzdWJzdHIoICRvdXRwdXQsIDAsIHN0cmxlbiggJG91dHB1dCApIC0gMyApOwoKCWVjaG8gJG91dHB1dDsKPz4=

1. Why should I refinance student loans?

Why should you refinance student loans? There are many advantages of refinancing student loans. First, you can get a lower interest rate. Second, you can lower your monthly payment. Third, you can pay off student loan debt faster. Make sure you understand your goals before you decide to refinance student loans.

2. What interest rate can I get?

When you refinance student loans, your first question may be: What interest rate can I get? You can compare the latest rates for student loan refinancing on Mentor Money.

There are many factors that determine your interest rate. Lenders will evaluate your credit score, income, monthly cash flow and debt-to-income ratio, among other criteria. Your interest rate also depends whether you choose a fixed or variable interest rate. A fixed interest rate means your interest rate will not change during the term of your student loan. A variable interest rate can increase or decrease during your loan term. Typically, a variable interest rate is lower than a fixed interest rate. If you choose a shorter loan term such as a 5-year loan term, you can get a lower interest rate. In contrast, a 20-year loan term, for example, typically has a relatively higher interest rate. Finally, your credit and income profile may affect your interest rate.

Most lenders will let you check your interest rate for free within about two minutes. This process is known as a soft credit check, which doesn’t impact your credit score.

3. What credit score do I need to refinance student loans?

You may be wondering what credit score you need to refinance student loans. Each lender has its own criteria for student loan refinancing. Some lenders have no minimum credit score. Other lenders have a minimum credit score of at least 650. Most borrowers who are approved have a credit score above 700. Lenders want to ensure that you have a history of financial responsibility, including on-time payments. This helps lenders ensure that you can pay off your student loans responsibly. The lowest interest rate often is available to the borrower with the best credit score, which is typically 750 or higher.

4. What income do I need to refinance student loans?

You also may be wondering how much income you need to refinance student loans. The good news is that most lenders don’t require a minimum income level. Rather, lenders want to ensure that you have enough monthly cash flow to pay your living expenses and monthly debt obligations. Other lenders may specify a minimum required income. A debt-to-income ratio may be a better metric on which to focus. This ratio evaluates the relationship between your monthly debt payments and your income. Your goal is to have as low a debt-to-income ratio as possible.

5. Can I lower my student loan payment?

Student loan refinancing is a smart way to lower your student loan payment. There are several ways to lower your student loan payments. The best way to lower your monthly student loan payment is to get a lower interest rate. The most popular reason to refinance student loans is to get a lower interest rate. With a lower interest rate, your monthly payment can decline, which helps you save money. Alternatively, you could choose a longer student loan repayment term. For example, if you choose a 20-year repayment term, you could get a lower monthly payment. However, a longer student loan repayment period also could cost more money since more interest can accrue.

6. Should I refinance federal student loans?

Student loan refinancing is available for both federal student loans and private student loans. You can refinance federal student loans, private student loans or both. If you have federal student loans, there are several considerations. First, if you’re struggling to pay off student loans, determine if you think you’ll need an income-driven repayment plan. To qualify for an income-driven repayment plan, you will need a federal student loan. Similarly, the Public Service Loan Forgiveness program requires federal student loans. If you plan to participate in either of these options, you may choose to keep your federal student loans outstanding and only refinance private student loans. However, if you don’t need these options or other federal student loan benefits such as forbearance or deferment through the federal government, then you could refinance both your federal student loans and private student loans.

7. Do I need a cosigner?

Many borrowers ask whether they need a cosigner when they refinance student loans. A cosigner is someone such as a parent or spouse that takes equal financial responsibility for your student loans. A qualified cosigner can help you get a lower interest rate and help you get approved for student loan refinancing. Student loan refinancing lenders prefer cosigners with a good to excellent credit profile, stable monthly income, a low debt-to-income ratio and strong monthly cash flow. There is no requirement to have a cosigner when you apply to refinance student loans. However, it’s possible that you can strengthen your chances to get approved for student loan refinancing.

8. Is there a cosigner release option?

If you decide to use a cosigner when you apply to refinance your student loans, some lenders also may offer a cosigner release option. A cosigner release option helps you release your cosigner from financial responsibility for your student loans. After you refinance, you can ask your lender for a cosigner release. Importantly, not every lender offers a cosigner release option. Each lender may have certain requirements for a cosigner release so make sure you understand the requirements. It’s also possible that you don’t need a cosigner release and can continue to pay off your student loans even if you still have a cosigner.

9. How many lenders should I apply to?

After you compare the student loan refinancing lenders on Mentor Money, you can apply to as many lenders as you prefer. To increase your chances of approval, you should apply to multiple lenders. The good news is that multiple applications typically only count as a single credit inquiry. For example, if you submit five student loan refinancing applications within one week, a credit bureau would count only one inquiry on your credit report or credit score. Plus, the more lenders you apply to, the more you can compare interest rates and loan terms.

10. Can I refinance my student loans more than once?

Yes, you can refinance your student loans as many times as you would like. If you can find a lower interest rate, it may make sense to refinance your student loans again. Student loan refinancing has no fees, so it won’t cost you money each time you refinance.

Let's mentor your money

Get the latest personal finance advice delivered directly to your inbox.