# Name: smd_featured v0.30 # Type: Admin/Client side plugin # Quickly label and display featured articles for your site's home / landing pages # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzAiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjMwODY0OiJp ZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzOw0KDQoJJHNtZF9mZWF0dXJlZF9l dmVudCA9ICdzbWRfZmVhdHVyZWQnOw0KCSRzbWRfZmVhdHVyZWRfcHJpdnMgPSBnZXRfcHJl Zignc21kX2ZlYXR1cmVkX3ByaXZzJywgJzEsMicpOw0KCSRzbWRfZmVhdHVyZWRfcHJlZl9w cml2cyA9ICcxLDInOw0KCSRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzID0gYXJyYXkoDQoJ CTAgPT4gJ3RpdGxlJywNCgkJMSA9PiAnZGVzYycsDQoJKTsNCg0KCWFkZF9wcml2cygkc21k X2ZlYXR1cmVkX2V2ZW50LCAkc21kX2ZlYXR1cmVkX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIo ImNvbnRlbnQiLCAkc21kX2ZlYXR1cmVkX2V2ZW50LCBzbWRfZmVhdHVyZWRfZ1R4dCgndGFi X25hbWUnKSk7DQoJcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9mZWF0dXJlZF9tYW5hZ2UnLCAk c21kX2ZlYXR1cmVkX2V2ZW50KTsNCglyZWdpc3Rlcl9jYWxsYmFjaygnc21kX2ZlYXR1cmVk X3dlbGNvbWUnLCAncGx1Z2luX2xpZmVjeWNsZS5zbWRfZmVhdHVyZWQnKTsNCn0NCg0KaWYg KCFkZWZpbmVkKCdTTURfRkVBVCcpKSB7DQoJZGVmaW5lKCJTTURfRkVBVCIsICdzbWRfZmVh dHVyZWQnKTsNCn0NCg0KLy8gKioqKioqKioqKg0KLy8gQURNSU4gU0lERQ0KLy8gKioqKioq KioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVy ZWRfbWFuYWdlKCRldnQsICRzdHApIHsNCglpZiAoJHN0cCA9PSAnc2F2ZV9wYW5lX3N0YXRl Jykgew0KCQlzbWRfZmVhdHVyZWRfc2F2ZV9wYW5lX3N0YXRlKCk7DQoJfSBlbHNlIHsNCgkJ aWYoISRzdHAgb3IgIWluX2FycmF5KCRzdHAsIGFycmF5KA0KCQkJCSdzbWRfZmVhdHVyZWRf dGFibGVfaW5zdGFsbCcsDQoJCQkJJ3NtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUnLA0KCQkJ CSdzbWRfZmVhdHVyZWRfcHJlZnNhdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfc2F2ZScsDQoJ CQkJJ3NtZF9mZWF0dXJlZF90YWdpdCcsDQoJCQkJJ3NtZF9mZWF0dXJlZF9jaGFuZ2VfcGFn ZWJ5JywNCgkJCSkpKSB7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgnJyk7DQoJCX0gZWxzZSAk c3RwKCk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF9mZWF0dXJlZF93ZWxjb21lKCRldnQsICRzdHApIHsNCgkkbXNnID0gJyc7DQoJc3dp dGNoICgkc3RwKSB7DQoJCWNhc2UgJ2luc3RhbGxlZCc6DQoJCQlzbWRfZmVhdHVyZWRfdGFi bGVfaW5zdGFsbCgwKTsNCgkJCSRtc2cgPSAnVGhhbmtzIGZvciBpbnN0YWxsaW5nIHNtZF9m ZWF0dXJlZC4gUGxlYXNlIHJlYWQgdGhlIGRvY3MgOi0pJzsNCgkJCWJyZWFrOw0KCQljYXNl ICdkZWxldGVkJzoNCgkJCXNtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUoMCk7DQoJCQlicmVh azsNCgl9DQoJcmV0dXJuICRtc2c7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX2xpc3QoJG1zZz0nJykgew0KCWdsb2JhbCAkc21k X2ZlYXR1cmVkX2V2ZW50LCAkc21kX2ZlYXR1cmVkX2xpc3RfcGFnZWJ5LCAkc21kX2ZlYXR1 cmVkX3RleHRpbGVfb3B0czsNCg0KCXBhZ2V0b3Aoc21kX2ZlYXR1cmVkX2dUeHQoJ3RhYl9u YW1lJyksICRtc2cpOw0KCWV4dHJhY3QoZ3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21k X2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfc2VhcmNoa2VlcCcsICdzbWRfZmVhdF9maWx0a2Vl cCcsICdwYWdlJykpKTsNCg0KCWlmIChzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoMSkpIHsN CgkJJGZlYXRsaXN0ID0gc2FmZV9yb3dzKCcqJywgU01EX0ZFQVQsICcxPTEnKTsNCgkJJGZl YXRsaXN0ID0gZW1wdHkoJGZlYXRsaXN0KSA/IGFycmF5KCkgOiAkZmVhdGxpc3Q7DQoJCSRl ZGl0bmFtZSA9ICRmZWF0X2xhYmVsID0gJGZlYXRfdGl0bGUgPSAkZmVhdF9kZXNjID0gJyc7 DQoNCgkJJGV0eXBlcyA9ICRmdHlwZXMgPSAkZmxpc3QgPSBhcnJheSgpOw0KCQkkZXR5cGVz WycnXSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCSRmdHlwZXNbJ3Nt ZF91bmxhYmVsbGVkJ10gPSBzbWRfZmVhdHVyZWRfZ1R4dCgndW5sYWJlbGxlZCcpOw0KCQlm b3JlYWNoICgkZmVhdGxpc3QgYXMgJGl0ZW0pIHsNCgkJCWlmIChpc3NldCgkaXRlbVsnbGFi ZWwnXSkgJiYgIWVtcHR5KCRpdGVtWydsYWJlbCddKSkgew0KCQkJCSRmdHlwZXNbJGl0ZW1b J2xhYmVsJ11dID0gJGV0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkaXRlbVsnbGFiZWwnXTsN CgkJCX0NCgkJCSRmbGlzdFskaXRlbVsnZmVhdF9pZCddXSA9IGFycmF5KCdsYWJlbCcgPT4g JGl0ZW1bJ2xhYmVsJ10sICd0aXRsZScgPT4gJGl0ZW1bJ2ZlYXRfdGl0bGUnXSwgJ3RpdGxl X2h0bWwnID0+ICRpdGVtWydmZWF0X3RpdGxlX2h0bWwnXSwgJ2Rlc2NyaXB0aW9uJyA9PiAk aXRlbVsnZGVzY3JpcHRpb24nXSwgJ2Rlc2NfaHRtbCcgPT4gJGl0ZW1bJ2Rlc2NfaHRtbCdd KTsNCgkJfQ0KDQoJCSRmZWF0bGlzdCA9ICRmbGlzdDsNCg0KCQkvLyBHZXQgYWRkaXRpb25h bCBmaWx0ZXJpbmcgZnJvbSBoaWRkZW4gcHJlZnMNCgkJJHdoZXJlID0gYXJyYXkoJzE9MScp Ow0KCQkkc2VjbGlzdCA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfc2VjdGlvbl9saXN0Jywg JycpOw0KCQlpZiAoJHNlY2xpc3QpIHsNCgkJCSR3aGVyZVtdID0gIlNlY3Rpb24gSU4gKCci LmpvaW4oIicsJyIsIGRvX2xpc3QoJHNlY2xpc3QpKS4iJykiOw0KCQl9DQoJCSR3aGVyZVtd ID0gIlN0YXR1cyBJTiAoNCw1KSI7DQoNCgkJJG9yZGVyYnkgPSBnZXRfcHJlZignc21kX2Zl YXR1cmVkX3NvcnQnLCAnUG9zdGVkIGRlc2MnLCAxKTsNCgkJJG9yZGVycXJ5ID0gKCRvcmRl cmJ5KSA/ICcgT1JERVIgQlkgJy5kb1NsYXNoKCRvcmRlcmJ5KSA6ICcnOw0KCQkkY3Vyck9y ZGVyID0gZXhwbG9kZSgnICcsICRvcmRlcmJ5KTsNCgkJJGN1cnJPcmRlclswXSA9IChpc3Nl dCgkY3Vyck9yZGVyWzBdKSkgPyAkY3Vyck9yZGVyWzBdIDogJ1Bvc3RlZCc7DQoJCSRjdXJy T3JkZXJbMV0gPSAoaXNzZXQoJGN1cnJPcmRlclsxXSkpID8gJGN1cnJPcmRlclsxXSA6ICdk ZXNjJzsNCgkJJGRpc3BsYXkgPSBnZXRfcHJlZignc21kX2ZlYXR1cmVkX2Rpc3BsYXknLCAn YWxsJywgMSk7DQoNCgkJLy8gR2VuZXJhdGUgdGhlIGV4dHJhIGNyaXRlcmlhIGlmIGluIGxp c3Qgdmlldw0KCQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnKSB7DQoJCQlpZiAoJHNtZF9m ZWF0X3NlYXJjaGtlZXApIHsNCgkJCQkkaXRlbXMgPSBkb19saXN0KCRzbWRfZmVhdF9zZWFy Y2hrZWVwLCAnICcpOw0KCQkJCSRpdGxpc3QgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCRp dGVtcyBhcyAkaXRlbSkgew0KCQkJCQlpZiAodHJpbSgkaXRlbSkgIT0gJycpIHsNCgkJCQkJ CSRpdGxpc3RbXSA9ICJUaXRsZSBsaWtlICclJGl0ZW0lJyI7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJJHdoZXJlW10gPSAnKCcuam9pbignIE9SICcsICRpdGxpc3QpLicpJzsNCgkJCX0NCgkJ CWlmICgkc21kX2ZlYXRfZmlsdGtlZXApIHsNCgkJCQkkbGJsID0gKCRzbWRfZmVhdF9maWx0 a2VlcCA9PSAnc21kX3VubGFiZWxsZWQnKSA/ICcnIDogJHNtZF9mZWF0X2ZpbHRrZWVwOw0K CQkJCSRpZHMgPSBzYWZlX2NvbHVtbignZmVhdF9pZCcsIFNNRF9GRUFULCAiQklOQVJZIGxh YmVsID0gJyRsYmwnIik7DQoJCQkJJHdoZXJlW10gPSAiSUQgSU4gKCciLmpvaW4oIicsJyIs ICRpZHMpLiInKSI7DQoJCQl9DQoJCX0NCg0KCQkkd2hlcmUgPSBqb2luKCcgQU5EICcsICR3 aGVyZSk7DQoJCSR0b3RhbCA9IHNhZmVfY291bnQoJ3RleHRwYXR0ZXJuJywgJHdoZXJlKTsN CgkJJGRvX3BhZyA9ICEkc21kX2ZlYXRfZmlsdGtlZXAgJiYgISRzbWRfZmVhdF9zZWFyY2hr ZWVwOw0KDQoJCSRsaW1pdCA9ICgkZGlzcGxheT09J3BhZ2luYXRlZCcgJiYgJGRvX3BhZykg PyBtYXgoJHNtZF9mZWF0dXJlZF9saXN0X3BhZ2VieSwgMTUpIDogOTk5OTk7DQoJCWxpc3Qo JHBhZ2UsICRvZmZzZXQsICRudW1QYWdlcykgPSBwYWdlcigkdG90YWwsICRsaW1pdCwgJHBh Z2UpOw0KDQoJCSRycyA9IHNhZmVfcm93cygnKicsICd0ZXh0cGF0dGVybicsICR3aGVyZS4g JG9yZGVycXJ5IC4gIiBsaW1pdCAkb2Zmc2V0LCAkbGltaXQiKTsNCgkJJG91dCA9IGFycmF5 KCk7DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQkkZnR5cGUgPSBpc3NldCgkZmVh dGxpc3RbJHJvd1snSUQnXV1bJ2xhYmVsJ10pID8gJGZlYXRsaXN0WyRyb3dbJ0lEJ11dWyds YWJlbCddIDogJyc7DQoJCQkkb3V0W10gPSBhcnJheSgkcm93WydJRCddLCAkcm93WydUaXRs ZSddLCAkZnR5cGUpOw0KCQkJaWYgKCRzbWRfZmVhdF9pZCAmJiAkcm93WydJRCddID09ICRz bWRfZmVhdF9pZCkgew0KCQkJCSRlZGl0bmFtZSA9ICRyb3dbJ1RpdGxlJ107DQoJCQkJJGZl YXRfbGFiZWwgPSAkZmVhdGxpc3RbJHNtZF9mZWF0X2lkXVsnbGFiZWwnXTsNCgkJCQkkZmVh dF90aXRsZSA9ICRmZWF0bGlzdFskc21kX2ZlYXRfaWRdWyd0aXRsZSddOw0KCQkJCSRmZWF0 X2Rlc2MgPSBkb1N0cmlwKHN0cl9yZXBsYWNlKCdcclxuJywnDQonLCAkZmVhdGxpc3RbJHNt ZF9mZWF0X2lkXVsnZGVzY3JpcHRpb24nXSkpOw0KCQkJfQ0KCQl9DQoNCgkJJHNvcnRvcHRz ID0gYXJyYXkoDQoJCQknUG9zdGVkJyA9PiAnUG9zdGVkJywNCgkJCSdFeHBpcmVzJyA9PiAn RXhwaXJ5JywNCgkJCSdMYXN0TW9kJyA9PiAnTW9kaWZpZWQnLA0KCQkJJ1RpdGxlJyA9PiAn VGl0bGUnLA0KCQkJJ1NlY3Rpb24nID0+ICdTZWN0aW9uJywNCgkJCSdDYXRlZ29yeTEnID0+ ICdDYXRlZ29yeTEnLA0KCQkJJ0NhdGVnb3J5MicgPT4gJ0NhdGVnb3J5MicsDQoJCSk7DQoJ CSRzb3J0ZGlycyA9IGFycmF5KA0KCQkJJ2FzYycgPT4gJ0FzY2VuZGluZycsDQoJCQknZGVz YycgPT4gJ0Rlc2NlbmRpbmcnLA0KCQkpOw0KCQkkZGlzcGxheW9wdHMgPSBhcnJheSgNCgkJ CSdhbGwnID0+ICdBbGwnLA0KCQkJJ3BhZ2luYXRlZCcgPT4gJ1BhZ2luYXRlZCcsDQoJCSk7 DQoJCSR0ZXh0aWxlb25vZmYgPSBzbWRfZmVhdHVyZWRfcHJlZl9leHBsb2RlKCRzbWRfZmVh dHVyZWRfdGV4dGlsZV9vcHRzLCBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3RleHRpbGUnLCAn MTEnLCAxKSk7DQoNCgkJJHNpemVzID0gZG9fbGlzdChnZXRfcHJlZignc21kX2ZlYXR1cmVk X2JveF9zaXplJywgJzE1MHg0MCcsIDEpLCAneCcpOw0KCQkkc2l6ZXNbMF0gPSAoaXNzZXQo JHNpemVzWzBdKSAmJiBpc19udW1lcmljKCRzaXplc1swXSkpID8gJHNpemVzWzBdIDogJzE1 MCc7DQoJCSRzaXplc1sxXSA9IChpc3NldCgkc2l6ZXNbMV0pICYmIGlzX251bWVyaWMoJHNp emVzWzFdKSkgPyAkc2l6ZXNbMV0gOiAnNDAnOw0KCQkkZGlzcGxheV9qcyA9ICgkZGlzcGxh eT09J2FsbCcpID8gMSA6IDA7DQoNCgkJZWNobyAnPGRpdiBpZD0ic21kX2xvYWRpbmciIHN0 eWxlPSJjb2xvcjojOTYzOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIwMCU7IGZv bnQtc3R5bGU6aXRhbGljOyB3aWR0aDo1MDBweDsgaGVpZ2h0OjEwMHB4OyBtYXJnaW46MCBh dXRvOyBib3JkZXI6MXB4IHNvbGlkICM3Nzc7IGJhY2tncm91bmQ6I2ZmYztkaXNwbGF5OmJs b2NrIj48ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjMwcHg7Ij5Mb2FkaW5nLi4uPC9kaXY+PC9k aXY+JzsNCgkJZWNobyAnPGRpdiBpZD0ic21kX2NvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6 bm9uZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2NvbnRyb2xf cGFuZWwiIGNsYXNzPSJ0eHAtY29udHJvbC1wYW5lbCI+PGxlZ2VuZCBjbGFzcz0icGxhaW4g bGV2ZXInLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3BhbmVsX3Zpc2libGUnKSA/ ICcgZXhwYW5kZWQnIDogJycpLiciPjxhIGhyZWY9IiNzbWRfZmVhdHVyZWRfY3BhbmVsIj4n LnNtZF9mZWF0dXJlZF9nVHh0KCdjb250cm9sX3BhbmVsJykuJzwvYT48L2xlZ2VuZD4nOw0K CQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdHVyZWRfY3BhbmVsIiBjbGFzcz0idG9nZ2xlIiBz dHlsZT0iZGlzcGxheTonLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3BhbmVsX3Zp c2libGUnKSA/ICdibG9jaycgOiAnbm9uZScpLiciPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9 InNtZF9mZWF0X2ZpbHRmb3JtIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0IiBv bnN1Ym1pdD0ic21kX2ZlYXR1cmVkX2VkaXRrZWVwKDApO3JldHVybiBmYWxzZTsiPic7DQoJ CWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2ZpbHQiIGNsYXNzPSJzbWRfZmVh dHVyZWRfc3VicGFuZWwiPjxsZWdlbmQ+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgoKCRkaXNwbGF5 PT0nYWxsJykgPyAnc2VhcmNoX2xpdmUnIDogJ3NlYXJjaF9zdGFuZGFyZCcpKS4nPC9sZWdl bmQ+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfc2VhcmNoIj4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdieV9uYW1lJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21kX2Zl YXRfc2VhcmNoJywgJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcnLCAnJywgJycsICcnLCAnJywg J3NtZF9mZWF0X3NlYXJjaCcpLg0KCQkJKCgkZnR5cGVzKSA/ICc8ZGl2IGlkPSJzbWRfZmVh dHVyZWRfYnlsYWJlbCI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgnYnlfbGFiZWwnKS5zZWxlY3RJ bnB1dCgnc21kX2ZlYXRfZmlsdCcsICRmdHlwZXMsICRzbWRfZmVhdF9maWx0a2VlcCwgMSwg JycsICdzbWRfZmVhdF9maWx0JykuJzwvZGl2PicgOiAnJyk7DQoJCWVjaG8gKCRkaXNwbGF5 PT0ncGFnaW5hdGVkJykgPyBmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0KCdnbycpLCAnc21h bGxlcmJveCBzbWRfZmVhdHVyZWRfc2F2ZScsICcnLCAncmV0dXJuIHNtZF9mZWF0dXJlZF9l ZGl0a2VlcCgwKTsnKSA6ICcnOw0KCQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50 KS5zSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwvZmllbGRzZXQ+JzsN CgkJZWNobyAnPC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X3ByZWZz IiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0KCQllY2hvICc8ZmllbGRz ZXQgaWQ9InNtZF9mZWF0dXJlZF9wcmVmcyIgY2xhc3M9InNtZF9mZWF0dXJlZF9zdWJwYW5l bCI+PGxlZ2VuZD4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmcycpLic8L2xlZ2VuZD4nOw0K DQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8 bGFiZWwgZm9yPSJzbWRfZmVhdF9kaXNwbGF5Ij4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVm X2Rpc3BsYXknKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRfZmVhdF9kaXNwbGF5Jywg JGRpc3BsYXlvcHRzLCAkZGlzcGxheSwgJycsICcnLCAnc21kX2ZlYXRfZGlzcGxheScpOw0K CQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9w cmVmIj4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9zb3J0Ij4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdwcmVmX3NvcnQnKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRfZmVh dF9zb3J0JywgJHNvcnRvcHRzLCAkY3Vyck9yZGVyWzBdLCAnJywgJycsICdzbWRfZmVhdF9z b3J0JykuDQoJCQlzZWxlY3RJbnB1dCgnc21kX2ZlYXRfc29ydGRpcicsICRzb3J0ZGlycywg JGN1cnJPcmRlclsxXSwgJycsICcnLCAnc21kX2ZlYXRfc29ydGRpcicpOw0KCQllY2hvICc8 L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0K CQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdF9kaXNwbGF5X2JveCI+JzsNCgkJZWNobyAnPGxh YmVsIGZvcj0ic21kX2ZlYXRfYm94c2l6ZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9i b3hzaXplJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21kX2ZlYXRfYm94X3gnLCAk c2l6ZXNbMF0sICcnLCAnJywgJycsICczJywgJycsICdzbWRfZmVhdF9ib3hzaXplJykuDQoJ CQlzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9ib3hzaXplYnknKS5mSW5wdXQoJ3RleHQnLCAn c21kX2ZlYXRfYm94X3knLCAkc2l6ZXNbMV0sICcnLCAnJywgJycsICczJyk7DQoJCWVjaG8g JzwvZGl2Pic7DQoNCgkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2ZlYXR1cmVkX3ByZWYgc21k X2ZlYXRfdGV4dGlsZSI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfdGV4dGls ZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgndGV4dGlsZScpLic8L2xhYmVsPic7DQoJCWZvcmVh Y2ggKCR0ZXh0aWxlb25vZmYgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQllY2hvIGNoZWNrYm94 KCdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSwgMSwgJHRleHRpbGVvbm9mZlska2V5XSwgJycs ICdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSkuc3Auc21kX2ZlYXR1cmVkX2dUeHQoJ3RleHRp bGVfJy4ka2V5KTsNCgkJfQ0KCQllY2hvIGZJbnB1dCgnaGlkZGVuJywgJ3NtZF9mZWF0X3Rl eHRpbGUnLCBpbXBsb2RlKCR0ZXh0aWxlb25vZmYpLCcnLCcnLCcnLCcnLCcnLCdzbWRfZmVh dF90ZXh0aWxlJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNobyAnPC9kaXY+JzsNCg0K CQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS5zSW5wdXQoJ3NtZF9mZWF0dXJl ZF9wcmVmc2F2ZScpOw0KCQllY2hvIGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3NhdmUn KSwgJ3NtYWxsZXJib3ggc21kX2ZlYXR1cmVkX3NhdmUnLCAnJywgJ3NtZF9mZWF0X3ByZXN1 YigpOycpOw0KCQllY2hvICc8L2ZpZWxkc2V0Pic7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJ CWVjaG8gJyZuYnNwOyc7IC8vIFdpdGhvdXQgdGhpcyAnY29udGVudCcgalF1ZXJ5IDEuMy4y IHdvbid0IC50b2dnbGUoKSBhbiBlbGVtZW50IHdpdGggZW50aXJlbHkgZmxvYXRlZCBpbm5l ciBlbGVtZW50cyA6LXMNCgkJZWNobyAnPC9kaXY+JzsNCgkJZWNobyAnPC9maWVsZHNldD4n Ow0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9lZGl0Zm9ybSIgYWN0aW9uPSJpbmRl eC5waHAiIG1ldGhvZD0icG9zdCI+JzsNCgkJZWNobyBoSW5wdXQoJ3NtZF9mZWF0X3NlYXJj aGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9maWx0a2VlcCcsICcnKS4NCgkJ CQloSW5wdXQoJ3NtZF9mZWF0X2lkJywgJycpLg0KCQkJCWVJbnB1dCgkc21kX2ZlYXR1cmVk X2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwv Zm9ybT4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9zYXZlZm9ybSIgYWN0aW9u PSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCIgb25zdWJtaXQ9InJldHVybiBzbWRfZmVhdHVy ZWRfc2F2ZWtlZXAoKTsiPic7DQoJCWVjaG8gc3RhcnRUYWJsZSgnY29udHJvbCcsJycsJycs JzMnKTsNCgkJaWYgKCRzbWRfZmVhdF9pZCkgew0KCQkJZWNobyB0cigNCgkJCQl0ZCgnJm5i c3A7JykudGRjcyhnVHh0KCdlZGl0Jykuc3Auc3Ryb25nKCRlZGl0bmFtZSksIDIpDQoJCQkp Ow0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2xhYmVsJyksICcnLCAnc21k X2ZlYXRfbGFiZWwnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0ZXh0JywgJ3NtZF9mZWF0 X2xhYmVsJywgJGZlYXRfbGFiZWwsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9mZWF0X2xh YmVsJykuDQoJCQkJCXNlbGVjdElucHV0KCdzbWRfZmVhdF9sYWJlbGNob29zZScsICRldHlw ZXMsICRmZWF0X2xhYmVsLCAwLCAnJywgJ3NtZF9mZWF0X2xhYmVsY2hvb3NlJykNCgkJCQkp DQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ3RpdGxlJyksICcn LCAnc21kX2ZlYXRfdGl0bGUnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0ZXh0JywgJ3Nt ZF9mZWF0X3RpdGxlJywgJGZlYXRfdGl0bGUsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9m ZWF0X3RpdGxlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxs KGdUeHQoJ2Rlc2NyaXB0aW9uJyksICcnLCAnc21kX2ZlYXRfZGVzYycpLg0KCQkJCXRkKHRl eHRfYXJlYSgnc21kX2ZlYXRfZGVzYycsIDgwLCA0MDAsICRmZWF0X2Rlc2MsICdzbWRfZmVh dF9kZXNjJykpLg0KCQkJCXRkKGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3NhdmUnKSwg J3NtYWxsZXJib3gnKSkuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9zZWFyY2hrZWVwJywgJycp Lg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfZmlsdGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdz bWRfZmVhdF9pZCcsICRzbWRfZmVhdF9pZCkuDQoJCQkJZUlucHV0KCRzbWRfZmVhdHVyZWRf ZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1cmVkX3NhdmUnKQ0KCQkJKTsNCgkJfQ0K CQllY2hvIGVuZFRhYmxlKCk7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCSRlZGJ0biA9IHNt YWxsKCdbJy5nVHh0KCdlZGl0JykuJ10nKTsNCg0KCQlpZiAoJG91dCkgew0KCQkJJHJvd3Mg PSBjb3VudCgkcnMpOw0KCQkJJHRibG91dCA9IGFycmF5KCk7DQoJCQkkYXR0cyA9ICcgY2xh c3M9InNtZF9mZWF0dXJlZF90YWJsZSBzbWRfY2xlYXIiIGlkPSJzbWRfJy4kZGlzcGxheS4n IiBhbGlnbj0iY2VudGVyIic7DQoNCgkJCSR0YmxvdXRbXSA9IGhlZChzbWRfZmVhdHVyZWRf Z1R4dCgnbWFuYWdlX2xibCcsIGFycmF5KCksICdyYXcnKSwgMywgJyBjbGFzcz0ic21kX2Ns ZWFyIicpOw0KCQkJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRyb3dzOyAkaWR4KyspIHsNCgkJ CQkkaXNmZWF0ID0gKGlzc2V0KCRvdXRbJGlkeF0pICYmIGFycmF5X2tleV9leGlzdHMoJG91 dFskaWR4XVswXSwgJGZlYXRsaXN0KSk7DQoJCQkJJGNlbGxjbGFzcyA9ICRpc2ZlYXQgPyAn IGNsYXNzPSJzbWRfZmVhdHVyZWQiJyA6ICcnOw0KCQkJCSRlZGxpbmsgPSAkaXNmZWF0ID8g JzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRfZmVhdHVy ZWRfZWRpdGtlZXAoXCcnLiRvdXRbJGlkeF1bMF0uJ1wnKTsiPicuJGVkYnRuLic8L2E+Jy5z cCA6ICcnOw0KCQkJCSRyb3dkYXRhID0gKGlzc2V0KCRvdXRbJGlkeF0pKSA/ICc8c3BhbiBu YW1lPSJzbWRfZmVhdF9uYW1lIiBjbGFzcz0ic21kX2hpZGRlbiI+Jy4kb3V0WyRpZHhdWzFd Lic8L3NwYW4+JyA6ICcnOw0KCQkJCSRyb3dkYXRhIC49ICRpc2ZlYXQgPyAnPHNwYW4gbmFt ZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlkZGVuIj4nLiRvdXRbJGlk eF1bMl0uJzwvc3Bhbj4nIDogJyc7DQoJCQkJJHRibG91dFtdID0gKGlzc2V0KCRvdXRbJGlk eF0pKSA/ICc8ZGl2Jy4kY2VsbGNsYXNzLic+Jy4kZWRsaW5rLic8YSBocmVmPSIjIiBvbmNs aWNrPSJyZXR1cm4gc21kX2ZlYXR1cmVkX3NlbGVjdCh0aGlzLCBcJycuJG91dFskaWR4XVsw XS4nXCcpIj4nLiRvdXRbJGlkeF1bMV0uJzwvYT4nLiRyb3dkYXRhLic8L2Rpdj4nIDogJzxk aXY+PC9kaXY+JzsNCgkJCX0NCgkJCWVjaG8gdGFnKGpvaW4oIiIsJHRibG91dCksICdkaXYn LCAkYXR0cyk7DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfY2xlYXIiPjwvZGl2Pic7DQoJ CQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcpIHsNCgkJCQllY2hvIG4u JzxkaXYgaWQ9IicuJHNtZF9mZWF0dXJlZF9ldmVudC4nX25hdmlnYXRpb24iIGNsYXNzPSJ0 eHAtbmF2aWdhdGlvbiI+Jy4NCgkJCQkJbi5uYXZfZm9ybSgkc21kX2ZlYXR1cmVkX2V2ZW50 LCAkcGFnZSwgJG51bVBhZ2VzLCAnJywgJycsICcnLCAnJywgJHRvdGFsLCAkbGltaXQpLg0K CQkJCQluLnBhZ2VieV9mb3JtKCRzbWRfZmVhdHVyZWRfZXZlbnQsICRzbWRfZmVhdHVyZWRf bGlzdF9wYWdlYnkpOw0KCQkJCQluLic8L2Rpdj4nOw0KCQkJfQ0KCQl9DQoNCgkJJHFzID0g YXJyYXkoDQoJCQkiZXZlbnQiID0+ICRzbWRfZmVhdHVyZWRfZXZlbnQsDQoJCSk7DQoNCgkJ JHFzVmFycyA9ICJpbmRleC5waHAiLmpvaW5fcXMoJHFzKTsNCgkJJHZlcmlmeVR4dCA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd1bmZlYXR1cmVfY29uZmlybScpOw0KDQoJCWVjaG8gPDw8RU9T DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLyBDb25jYXRlbmF0ZSBjaGVj a2JveCBvcHRpb25zIGZvciBzdG9yYWdlDQpmdW5jdGlvbiBzbWRfZmVhdF9wcmVzdWIoKSB7 DQoJdmFyIHNtZF9vdXQgPSAiIjsNCglqUXVlcnkoIi5zbWRfZmVhdF90ZXh0aWxlIDpjaGVj a2JveCIpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXNtZF9vdXQgKz0gKHRoaXMuY2hlY2tlZCkg PyAxIDogMDsNCgl9KTsNCglqUXVlcnkoIiNzbWRfZmVhdF90ZXh0aWxlIikudmFsKHNtZF9v dXQpOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zZWxl Y3Qob2JqLCBpZCkgew0KCW9iaiA9IGpRdWVyeShvYmopLnBhcmVudCgpOw0KDQoJLy8gTi5C LiBOZWdhdGl2ZSBsb2dpYyB1c2VkIGhlcmUgYmVjYXVzZSB3ZSdyZSBjaGVja2luZyB0aGUg Y2xhc3MgX2JlZm9yZV8gaXQncyBiZWVuIHRvZ2dsZWQNCgl2YXIgYWN0aW9uID0gKChvYmop Lmhhc0NsYXNzKCJzbWRfZmVhdHVyZWQiKSkgPyAncmVtb3ZlJyA6ICdhZGQnOw0KCWlmIChh Y3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJdmFyIHJldCA9IGNvbmZpcm0oJ3skdmVyaWZ5VHh0 fScpOw0KCQlpZiAocmV0ID09IGZhbHNlKSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9 DQoJalF1ZXJ5LnBvc3QoJ3skcXNWYXJzfScsIHsgc3RlcDogInNtZF9mZWF0dXJlZF90YWdp dCIsIHNtZF9mZWF0X2lkOiBpZCwgc21kX2ZlYXRfYWN0aW9uOiBhY3Rpb24gfSwNCgkJZnVu Y3Rpb24oZGF0YSkgew0KCQkJb2JqLnRvZ2dsZUNsYXNzKCdzbWRfZmVhdHVyZWQnKTsNCgkJ CWlmIChhY3Rpb24gPT0gJ2FkZCcpIHsNCgkJCQlvYmoucHJlcGVuZCgnPGEgY2xhc3M9ImVk bGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNtZF9mZWF0dXJlZF9lZGl0a2VlcChc JycraWQrJ1wnKSI+eyRlZGJ0bn08L2E+Jm5ic3A7Jyk7DQoJCQkJb2JqLmFwcGVuZCgnPHNw YW4gbmFtZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlkZGVuIj48L3Nw YW4+Jyk7DQoJCQl9IGVsc2Ugew0KCQkJCW9iai5maW5kKCdhLmVkbGluaycpLnJlbW92ZSgp Ow0KCQkJCW9iai5maW5kKCdzcGFuLmV4dHJhJykucmVtb3ZlKCk7DQoJCQkJaWYgKGpRdWVy eSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgpICE9ICcnKSBqUXVlcnkoIiNzbWRfZmVhdF9z ZWFyY2giKS5rZXl1cCgpOw0KCQkJCWlmIChqUXVlcnkoIiNzbWRfZmVhdF9maWx0IikudmFs KCkgIT0gJycpIGpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS5jaGFuZ2UoKTsNCgkJCX0NCgkJ fQ0KCSk7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfZWRp dGtlZXAoaWQpIHsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2Zl YXRfc2VhcmNoa2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgp KTsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2ZlYXRfZmlsdGtl ZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdHVyZWRfYnlsYWJlbCAjc21kX2ZlYXRfZmls dCBvcHRpb246c2VsZWN0ZWQiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZv cm0gW25hbWU9J3NtZF9mZWF0X2lkJ10iKS52YWwoaWQpOw0KCWpRdWVyeSgiI3NtZF9mZWF0 X2VkaXRmb3JtIikuc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZl a2VlcCgpIHsNCglqUXVlcnkoIiNzbWRfZmVhdF9zYXZlZm9ybSBbbmFtZT0nc21kX2ZlYXRf c2VhcmNoa2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgpKTsN CglqUXVlcnkoIiNzbWRfZmVhdF9zYXZlZm9ybSBbbmFtZT0nc21kX2ZlYXRfZmlsdGtlZXAn XSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdHVyZWRfYnlsYWJlbCAjc21kX2ZlYXRfZmlsdCBv cHRpb246c2VsZWN0ZWQiKS52YWwoKSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0X2ZpbHRl cihzZWxlY3RvciwgcXVlcnksIG5hbSwgY3NlbnNlLCBleGFjdCkgew0KCWlmICh7JGRpc3Bs YXlfanN9ID09IDEpIHsNCgkJdmFyIHF1ZXJ5ID0galF1ZXJ5LnRyaW0ocXVlcnkpOw0KCQlj c2Vuc2UgPSAoY3NlbnNlKSA/ICIiIDogImkiOw0KCQlxdWVyeSA9IHF1ZXJ5LnJlcGxhY2Uo LyAvZ2ksICd8Jyk7IC8vIGFkZCBPUiBmb3IgcmVnZXggcXVlcnkNCgkJaWYgKGV4YWN0KSB7 DQoJCQl0bXAgPSBxdWVyeS5zcGxpdCgnfCcpOw0KCQkJZm9yICh2YXIgaWR4ID0gMDsgaWR4 IDwgdG1wLmxlbmd0aDsgaWR4KyspIHsNCgkJCQl0bXBbaWR4XSA9ICdeJyt0bXBbaWR4XSsn JCc7DQoJCQl9DQoJCQlxdWVyeSA9IHRtcC5qb2luKCd8Jyk7DQoJCX0NCgkJdmFyIHJlID0g bmV3IFJlZ0V4cChxdWVyeSwgY3NlbnNlKTsNCgkJalF1ZXJ5KHNlbGVjdG9yKS5lYWNoKGZ1 bmN0aW9uKCkgew0KCQkJc2VsID0gKHR5cGVvZiBuYW09PSJ1bmRlZmluZWQiIHx8IG5hbT09 JycpID8galF1ZXJ5KHRoaXMpIDogalF1ZXJ5KHRoaXMpLmZpbmQoInNwYW5bbmFtZT0nIitu YW0rIiddIik7DQoJCQlpZiAocXVlcnkgPT0gJycpIHsNCgkJCQlpZiAoc2VsLmxlbmd0aCA9 PSAxICYmIHNlbC50ZXh0KCkgPT0gJycpIHsNCgkJCQkJalF1ZXJ5KHRoaXMpLnNob3coKTsN CgkJCQl9IGVsc2Ugew0KCQkJCQlqUXVlcnkodGhpcykuaGlkZSgpOw0KCQkJCX0NCgkJCX0g ZWxzZSB7DQoJCQkJaWYgKHNlbC50ZXh0KCkuc2VhcmNoKHJlKSA8IDApIHsNCgkJCQkJalF1 ZXJ5KHRoaXMpLmhpZGUoKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlqUXVlcnkodGhpcykuc2hv dygpOw0KCQkJCX0NCgkJCX0NCgkJfSk7DQoJfQ0KfQ0KDQpqUXVlcnkoZnVuY3Rpb24oKSB7 DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoZnVuY3Rpb24oZXZlbnQpIHsN CgkJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLnZhbCgnMCcpOyAvLyBDbGVhciB0aGUgZmls dGVyIGRyb3Bkb3duDQoJCS8vIGlmIGVzYyBpcyBwcmVzc2VkIG9yIG5vdGhpbmcgaXMgZW50 ZXJlZA0KCQlpZiAoZXZlbnQua2V5Q29kZSA9PSAyNyB8fCBqUXVlcnkodGhpcykudmFsKCkg PT0gJycpIHsNCgkJCWpRdWVyeSh0aGlzKS52YWwoJycpOw0KCQkJaWYgKHskZGlzcGxheV9q c30gPT0gMSkgew0KCQkJCWpRdWVyeSgiLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50 YmxoZWFkKSIpLnNob3coKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXNtZF9mZWF0X2ZpbHRl cignLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScsIGpRdWVyeSh0aGlz KS52YWwoKSwgJ3NtZF9mZWF0X25hbWUnLCAwLCAwKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRz bWRfZmVhdF9zZWFyY2hrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfc2Vh cmNoIikua2V5dXAoKTsNCgl9DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLmNoYW5nZShm dW5jdGlvbihldmVudCkgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS52YWwoJycp OyAvLyBFbXB0eSB0aGUgc2VhcmNoIGJveA0KCQlpZiAoalF1ZXJ5KHRoaXMpLnZhbCgpID09 ICcnKSB7DQoJCQlpZiAoeyRkaXNwbGF5X2pzfSA9PSAxKSB7DQoJCQkJalF1ZXJ5KCcuc21k X2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJykuc2hvdygpOw0KCQkJfQ0KCQl9 IGVsc2UgaWYgKGpRdWVyeSh0aGlzKS52YWwoKSA9PSAnc21kX3VubGFiZWxsZWQnKSB7DQoJ CQlzbWRfZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVh ZCknLCAnJywgJ3NtZF9mZWF0X2xhYmVsJywgMCwgMCk7DQoJCX0gZWxzZSB7DQoJCQlzbWRf ZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVhZCknLCBq UXVlcnkodGhpcykudmFsKCksICdzbWRfZmVhdF9sYWJlbCcsIDEsIDEpOw0KCQl9DQoJfSk7 DQoJaWYgKCd7JHNtZF9mZWF0X2ZpbHRrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21k X2ZlYXRfZmlsdCIpLmNoYW5nZSgpOw0KCX0NCglpZiAoJ3skc21kX2ZlYXRfaWR9JyAhPSAn Jykgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLmZvY3VzKCk7DQoJCWpRdWVyeSgi I3NtZF9mZWF0X2xhYmVsY2hvb3NlIikuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCQlq UXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLnZhbChqUXVlcnkodGhpcykudmFsKCkpOw0KCQl9 KTsNCgl9DQoJalF1ZXJ5KCIjc21kX2xvYWRpbmciKS5oaWRlKCk7DQoJalF1ZXJ5KCIjc21k X2NvbnRhaW5lciIpLnNob3coKTsNCn0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyI+DQouc21kX2hpZGRlbiB7DQoJZGlzcGxheTpub25lOw0KfQ0KLnNtZF9mZWF0 dXJlZCB7DQoJYmFja2dyb3VuZDojZmZjOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQojc21k X2ZlYXR1cmVkX2NvbnRyb2xfcGFuZWwgew0KCWZvbnQtc2l6ZTo5MCU7DQoJbWFyZ2luOjAg YXV0byAyMHB4Ow0KCXBhZGRpbmc6N3B4IDhweDsNCgl3aWR0aDo0NTBweDsNCn0NCi5zbWRf ZmVhdHVyZWRfcHJlZiB7DQoJbWFyZ2luOjZweDsNCn0NCi5zbWRfZmVhdHVyZWRfc2F2ZSB7 DQoJZmxvYXQ6cmlnaHQ7DQp9DQouc21kX2ZlYXR1cmVkX3N1YnBhbmVsIHsNCglmbG9hdDps ZWZ0Ow0KCW1hcmdpbjowIDVweDsNCn0NCi5zbWRfZmVhdHVyZWRfdGFibGUgew0KCXdpZHRo OjgwMHB4Ow0KCW1hcmdpbjowIGF1dG8gODBweDsNCn0NCi5zbWRfY2xlYXIgew0KCWNsZWFy OmJvdGg7DQp9DQouc21kX2ZlYXR1cmVkX3RhYmxlIGRpdiB7DQoJZmxvYXQ6bGVmdDsNCgl3 aWR0aDp7JHNpemVzWzBdfXB4Ow0KCWhlaWdodDp7JHNpemVzWzFdfXB4Ow0KCWJvcmRlcjox cHggc29saWQgI2RkZDsNCglwYWRkaW5nOjRweDsNCglvdmVyZmxvdzpoaWRkZW47DQp9DQo8 L3N0eWxlPg0KRU9TOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJfSBlbHNlIHsNCgkJLy8gVGFi bGUgbm90IGluc3RhbGxlZA0KCQkkYnRuSW5zdGFsbCA9ICc8Zm9ybSBtZXRob2Q9InBvc3Qi IGFjdGlvbj0iP2V2ZW50PScuJHNtZF9mZWF0dXJlZF9ldmVudC5hLidzdGVwPXNtZF9mZWF0 dXJlZF90YWJsZV9pbnN0YWxsIiBzdHlsZT0iZGlzcGxheTppbmxpbmUiPicuZklucHV0KCdz dWJtaXQnLCAnc3VibWl0Jywgc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9pbnN0YWxsX2xibCcp LCAnc21hbGxlcmJveCcpLic8L2Zvcm0+JzsNCgkJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9y ZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7DQoJCWVj aG8gdHIodGRhKHN0cm9uZyhzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZnNfc29tZV90YmwnKSku YnIuYnINCgkJCQkuc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZzX3NvbWVfZXhwbGFpbicpLmJy LmJyDQoJCQkJLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmc19zb21lX29wdHMnKSwgJyBjb2xz cGFuPSIyIicpDQoJCSk7DQoJCWVjaG8gdHIodGRhKCRidG5JbnN0YWxsLCAkYnRuU3R5bGUp KTsNCgkJZWNobyBlbmRUYWJsZSgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g c21kX2ZlYXR1cmVkX2NoYW5nZV9wYWdlYnkoKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQ7DQoJDQoJZXZlbnRfY2hhbmdlX3BhZ2VieSgkc21kX2ZlYXR1cmVkX2V2ZW50KTsN CglzbWRfZmVhdHVyZWRfbGlzdCgpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi8vIFVwZGF0ZSB0aGUgcGFzc2VkIHJlY29yZCBpbiB0aGUgZmVhdHVyZWQgdGFibGUN CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZlKCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2V2ZW50LCAkc21kX2ZlYXR1cmVkX3RleHRpbGVfb3B0czsNCg0KCWV4dHJhY3QoZ3BzYShh cnJheSgnc21kX2ZlYXRfaWQnLCAnc21kX2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfdGl0bGUn LCAnc21kX2ZlYXRfZGVzYycpKSk7DQoJYXNzZXJ0X2ludCgkc21kX2ZlYXRfaWQpOw0KDQoJ JHNtZF9mZWF0X3RpdGxldGlsZSA9ICRzbWRfZmVhdF90aXRsZTsNCgkkc21kX2ZlYXRfZGVz Y3RpbGUgPSAkc21kX2ZlYXRfZGVzYzsNCgkkc21kX2ZlYXRfbGFiZWwgPSBkb1NsYXNoKCRz bWRfZmVhdF9sYWJlbCk7DQoNCglpZiAoc21kX2ZlYXR1cmVkX3RhYmxlX2V4aXN0KCkpIHsN CgkJQGluY2x1ZGVfb25jZSB0eHBhdGguJy9saWIvY2xhc3NUZXh0aWxlLnBocCc7DQoJCUBp bmNsdWRlX29uY2UgdHhwYXRoLicvcHVibGlzaC5waHAnOw0KDQoJCSR0ZXh0aWxlb25vZmYg PSBzbWRfZmVhdHVyZWRfcHJlZl9leHBsb2RlKCRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRz LCBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3RleHRpbGUnLCAnMTEnKSk7DQoNCgkJaWYgKGNs YXNzX2V4aXN0cygnVGV4dGlsZScpKSB7DQoJCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7 DQoJCQkkc21kX2ZlYXRfdGl0bGV0aWxlID0gZG9TbGFzaCgoKCR0ZXh0aWxlb25vZmZbJ3Rp dGxlJ10gPT0gJzEnKSA/ICR0ZXh0aWxlLT5UZXh0aWxlVGhpcyhwYXJzZSgkc21kX2ZlYXRf dGl0bGUpKSA6IHBhcnNlKCRzbWRfZmVhdF90aXRsZSkpKTsNCgkJCSRzbWRfZmVhdF9kZXNj dGlsZSA9IGRvU2xhc2goKCgkdGV4dGlsZW9ub2ZmWydkZXNjJ10gPT0gJzEnKSA/ICR0ZXh0 aWxlLT5UZXh0aWxlVGhpcyhwYXJzZSgkc21kX2ZlYXRfZGVzYykpIDogcGFyc2UoJHNtZF9m ZWF0X2Rlc2MpKSk7DQoJCX0NCg0KCQkkc21kX2ZlYXRfdGl0bGUgPSBkb1NsYXNoKCRzbWRf ZmVhdF90aXRsZSk7DQoJCSRzbWRfZmVhdF9kZXNjID0gZG9TbGFzaCgkc21kX2ZlYXRfZGVz Yyk7DQoJCSRyZXQgPSBzYWZlX3Vwc2VydChTTURfRkVBVCwgImxhYmVsPSckc21kX2ZlYXRf bGFiZWwnLCBmZWF0X3RpdGxlPSckc21kX2ZlYXRfdGl0bGUnLCBmZWF0X3RpdGxlX2h0bWw9 JyRzbWRfZmVhdF90aXRsZXRpbGUnLCBkZXNjcmlwdGlvbj0nJHNtZF9mZWF0X2Rlc2MnLCBk ZXNjX2h0bWw9JyRzbWRfZmVhdF9kZXNjdGlsZSciLCAiZmVhdF9pZD0nJHNtZF9mZWF0X2lk JyIpOw0KCQl1bnNldCgkX1BPU1RbJ3NtZF9mZWF0X2lkJ10pOw0KCX0NCg0KCXNtZF9mZWF0 dXJlZF9saXN0KHNtZF9mZWF0dXJlZF9nVHh0KCdzYXZlZCcpKTsNCn0NCg0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQovLyBDcmVhdGUgYW4gZW1wdHkgZW50cnkgaW4gdGhlIGZl YXR1cmVkIHRhYmxlIG9yIGRlc3Ryb3kgaXQNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWdp dCgpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudDsNCglleHRyYWN0KGRvU2xhc2go Z3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21kX2ZlYXRfYWN0aW9uJykpKSk7DQoNCglh c3NlcnRfaW50KCRzbWRfZmVhdF9pZCk7DQoNCglpZiAoJHNtZF9mZWF0X2FjdGlvbiA9PSAn YWRkJykgew0KCQkkcmV0ID0gc2FmZV91cHNlcnQoU01EX0ZFQVQsICJsYWJlbD0nJyIsICJm ZWF0X2lkPSckc21kX2ZlYXRfaWQnIik7DQoJfSBlbHNlIGlmICgkc21kX2ZlYXRfYWN0aW9u ID09ICdyZW1vdmUnKSB7DQoJCSRyZXQgPSBzYWZlX2RlbGV0ZShTTURfRkVBVCwgImZlYXRf aWQ9JyRzbWRfZmVhdF9pZCciKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNt ZF9mZWF0dXJlZF9wcmVmc2F2ZSgpIHsNCglleHRyYWN0KGdwc2EoYXJyYXkoJ3NtZF9mZWF0 X2Rpc3BsYXknLCAnc21kX2ZlYXRfc29ydCcsICdzbWRfZmVhdF9zb3J0ZGlyJywgJ3NtZF9m ZWF0X2JveF94JywgJ3NtZF9mZWF0X2JveF95JywgJ3NtZF9mZWF0X3RleHRpbGUnKSkpOw0K CSRtc2cgPSAnJzsNCg0KCWlmICgkc21kX2ZlYXRfZGlzcGxheSkgew0KCQlzZXRfcHJlZigi c21kX2ZlYXR1cmVkX2Rpc3BsYXkiLCAkc21kX2ZlYXRfZGlzcGxheSwgJ3NtZF9mZWF0dXJl ZCcsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJCSRt c2cgPSBnVHh0KCdwcmVmZXJlbmNlc19zYXZlZCcpOw0KCX0NCg0KCWlmICgkc21kX2ZlYXRf c29ydCAmJiAkc21kX2ZlYXRfc29ydGRpcikgew0KCQkkc29ydF9jcml0ID0gJHNtZF9mZWF0 X3NvcnQuJyAnLiAkc21kX2ZlYXRfc29ydGRpcjsNCgkJc2V0X3ByZWYoInNtZF9mZWF0dXJl ZF9zb3J0IiwgJHNvcnRfY3JpdCwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElEREVOLCAndGV4 dF9pbnB1dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJCSRtc2cgPSBnVHh0KCdwcmVmZXJlbmNl c19zYXZlZCcpOw0KCX0NCg0KCWlmICgkc21kX2ZlYXRfYm94X3ggJiYgJHNtZF9mZWF0X2Jv eF95KSB7DQoJCSRkaW1zID0gJHNtZF9mZWF0X2JveF94Lid4Jy4kc21kX2ZlYXRfYm94X3k7 DQoJCXNldF9wcmVmKCJzbWRfZmVhdHVyZWRfYm94X3NpemUiLCAkZGltcywgJ3NtZF9mZWF0 dXJlZCcsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJ CSRtc2cgPSBnVHh0KCdwcmVmZXJlbmNlc19zYXZlZCcpOw0KCX0NCg0KCWlmICgkc21kX2Zl YXRfdGV4dGlsZSkgew0KCQlzZXRfcHJlZigic21kX2ZlYXR1cmVkX3RleHRpbGUiLCAkc21k X2ZlYXRfdGV4dGlsZSwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1 dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJCSRtc2cgPSBnVHh0KCdwcmVmZXJlbmNlc19zYXZl ZCcpOw0KCX0NCg0KCXNtZF9mZWF0dXJlZF9saXN0KCRtc2cpOw0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCi8vIFNwbGl0IGEgbXVsdGktY2hhciBwcmVmZXJlbmNlIHZh bHVlIGludG8gYW4gYXJyYXkgb2Yga2V5cy92YWx1ZXMuDQovLyBOb3RlOiB2YWx1ZSBpcyBw YXNzZWQgaW4gYW5kIG5vdCByZWFkIGRpcmVjdGx5IGZyb20gdGhlIHByZWZzIGFycmF5IGlu IHRoaXMgZnVuY3Rpb24gLSBpbnRlbnRpb25hbGx5DQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRf cHJlZl9leHBsb2RlKCRpdGVtcywgJG9wdHZhbCkgew0KCSRvbm9mZiA9IGFycmF5X3ZhbHVl cyhwcmVnX3NwbGl0KCcvLycsICRvcHR2YWwsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKSk7 DQoJJG91dCA9IGFycmF5KCk7DQoJZm9yZWFjaCgkaXRlbXMgYXMgJGtleSA9PiAkdmFsdWUp IHsNCgkJJG91dFsoc3RyaW5nKSR2YWx1ZV0gPSAkb25vZmZbJGtleV07DQoJfQ0KCXJldHVy biAkb3V0Ow0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfc2F2ZV9w YW5lX3N0YXRlKCkgew0KCSRwYW5lcyA9IGFycmF5KCdzbWRfZmVhdHVyZWRfY3BhbmVsJyk7 DQoJJHBhbmUgPSBncHMoJ3BhbmUnKTsNCglpZiAoaW5fYXJyYXkoJHBhbmUsICRwYW5lcykp DQoJew0KCQlzZXRfcHJlZigicGFuZV97JHBhbmV9X3Zpc2libGUiLCAoZ3BzKCd2aXNpYmxl JykgPT0gJ3RydWUnID8gJzEnIDogJzAnKSwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElEREVO LCAneWVzbm9yYWRpbycsIDAsIFBSRUZfUFJJVkFURSk7DQoJCXNlbmRfeG1sX3Jlc3BvbnNl KCk7DQoJfSBlbHNlIHsNCgkJc2VuZF94bWxfcmVzcG9uc2UoYXJyYXkoJ2h0dHAtc3RhdHVz JyA9PiAnNDAwIEJhZCBSZXF1ZXN0JykpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQovLyBBZGQgZmVhdHVyZWQgdGFibGUgaWYgbm90IGFscmVhZHkgaW5zdGFs bGVkDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFibGVfaW5zdGFsbCgkc2hvd3BhbmU9JzEn KSB7DQoJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9IDA7DQoJJHJldCA9ICcnOw0KCSRz cWwgPSBhcnJheSgpOw0KCSRzcWxbXSA9ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBg Ii5QRlguU01EX0ZFQVQuImAgKA0KCQlgZmVhdF9pZGAgaW50KDgpIE5PVCBOVUxMIGRlZmF1 bHQgJzAnLA0KCQlgbGFiZWxgIHZhcmNoYXIoMzIpIE5VTEwgZGVmYXVsdCAnJywNCgkJYGZl YXRfdGl0bGVgIHZhcmNoYXIoMjU1KSBOVUxMIGRlZmF1bHQgJycsDQoJCWBmZWF0X3RpdGxl X2h0bWxgIHZhcmNoYXIoMjU1KSBOVUxMIGRlZmF1bHQgJycsDQoJCWBkZXNjcmlwdGlvbmAg dGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCWBkZXNjX2h0bWxgIHRleHQgTlVMTCBkZWZhdWx0 ICcnLA0KCQlQUklNQVJZIEtFWSAoYGZlYXRfaWRgKQ0KCSkgRU5HSU5FPU15SVNBTSI7DQoN CglpZihncHMoJ2RlYnVnJykpIHsNCgkJZG1wKCRzcWwpOw0KCX0NCglmb3JlYWNoICgkc3Fs IGFzICRxcnkpIHsNCgkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQoJCWlmICgkcmV0PT09 ZmFsc2UpIHsNCgkJCSRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10rKzsNCgkJCWVjaG8gIjxi PiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIi5teXNxbF9lcnJvcigpLiI8 YnIgLz5cbiI7DQoJCQllY2hvICI8IS0tXG4gJHFyeSBcbi0tPlxuIjsNCgkJfQ0KCX0NCg0K CS8vIEhhbmRsZSB1cGdyYWRlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zDQoJJGNvbHMgPSBn ZXRUaGluZ3MoJ2Rlc2NyaWJlIGAnLlBGWC5TTURfRkVBVC4nYCcpOw0KCWlmICghaW5fYXJy YXkoJ2ZlYXRfaWQnLCAkY29scykpIHsNCgkJc2FmZV9hbHRlcihTTURfRkVBVCwgIkNIQU5H RSBgaWRgIGBmZWF0X2lkYCBpbnQoIDggKSBOT1QgTlVMTCBERUZBVUxUICcwJyIpOw0KCX0N CglpZiAoIWluX2FycmF5KCdmZWF0X3RpdGxlJywgJGNvbHMpKSB7DQoJCXNhZmVfYWx0ZXIo U01EX0ZFQVQsICJBREQgYGZlYXRfdGl0bGVgIHZhcmNoYXIoIDI1NSApIE5VTEwgREVGQVVM VCAnJyBBRlRFUiBgbGFiZWxgIik7DQoJfQ0KCWlmICghaW5fYXJyYXkoJ2ZlYXRfdGl0bGVf aHRtbCcsICRjb2xzKSkgew0KCQlzYWZlX2FsdGVyKFNNRF9GRUFULCAiQUREIGBmZWF0X3Rp dGxlX2h0bWxgIHZhcmNoYXIoIDI1NSApIE5VTEwgREVGQVVMVCAnJyBBRlRFUiBgZmVhdF90 aXRsZWAiKTsNCgl9DQoNCgkvLyBTcGl0IG91dCByZXN1bHRzDQoJaWYgKCRHTE9CQUxTWyd0 eHBfZXJyX2NvdW50J10gPT0gMCkgew0KCQlpZiAoJHNob3dwYW5lKSB7DQoJCQkkbWVzc2Fn ZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfaW5zdGFsbGVkJyk7DQoJCQlzbWRfZmVhdHVy ZWRfbGlzdCgkbWVzc2FnZSk7DQoJCX0NCgl9IGVsc2Ugew0KCQlpZiAoJHNob3dwYW5lKSB7 DQoJCQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0Ymxfbm90X2luc3RhbGxlZCcp Ow0KCQkJc21kX2ZlYXR1cmVkX2xpc3QoJG1lc3NhZ2UpOw0KCQl9DQoJfQ0KfQ0KDQovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIERyb3AgdGFibGUgaWYgaW4gZGF0YWJhc2UN CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUoKSB7DQoJJHJldCA9ICcnOw0K CSRzcWwgPSBhcnJheSgpOw0KCSRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10gPSAwOw0KCWlm IChzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoKSkgew0KCQkkc3FsW10gPSAiRFJPUCBUQUJM RSBJRiBFWElTVFMgIiAuUEZYLlNNRF9GRUFULiAiOyAiOw0KCQlpZihncHMoJ2RlYnVnJykp IHsNCgkJCWRtcCgkc3FsKTsNCgkJfQ0KCQlmb3JlYWNoICgkc3FsIGFzICRxcnkpIHsNCgkJ CSRyZXQgPSBzYWZlX3F1ZXJ5KCRxcnkpOw0KCQkJaWYgKCRyZXQ9PT1mYWxzZSkgew0KCQkJ CSRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10rKzsNCgkJCQllY2hvICI8Yj4iLiRHTE9CQUxT Wyd0eHBfZXJyX2NvdW50J10uIi48L2I+ICIubXlzcWxfZXJyb3IoKS4iPGJyIC8+XG4iOw0K CQkJCWVjaG8gIjwhLS1cbiAkcXJ5IFxuLS0+XG4iOw0KCQkJfQ0KCQl9DQoJfQ0KCWlmICgk R0xPQkFMU1sndHhwX2Vycl9jb3VudCddID09IDApIHsNCgkJJG1lc3NhZ2UgPSBzbWRfZmVh dHVyZWRfZ1R4dCgndGJsX3JlbW92ZWQnKTsNCgl9IGVsc2Ugew0KCQkkbWVzc2FnZSA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd0Ymxfbm90X3JlbW92ZWQnKTsNCgkJc21kX2ZlYXR1cmVkX2xp c3QoJG1lc3NhZ2UpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoJGFsbD0nJykgew0KCWlmICgkYWxs KSB7DQoJCSR0YmxzID0gYXJyYXkoU01EX0ZFQVQgPT4gNik7DQoJCSRvdXQgPSBjb3VudCgk dGJscyk7DQoJCWZvcmVhY2ggKCR0YmxzIGFzICR0YmwgPT4gJGNvbHMpIHsNCgkJCWlmIChn cHMoJ2RlYnVnJykpIHsNCgkJCQllY2hvICIrKyBUQUJMRSAiLiR0YmwuIiBIQVMgIi5jb3Vu dChAc2FmZV9zaG93KCdjb2x1bW5zJywgJHRibCkpLiIgQ09MVU1OUzsgUkVRVUlSRVMgIi4k Y29scy4iICsrIi5icjsNCgkJCX0NCgkJCWlmIChjb3VudChAc2FmZV9zaG93KCdjb2x1bW5z JywgJHRibCkpID09ICRjb2xzKSB7DQoJCQkJJG91dC0tOw0KCQkJfQ0KCQl9DQoJCXJldHVy biAoJG91dD09PTApID8gMSA6IDA7DQoJfSBlbHNlIHsNCgkJaWYgKGdwcygnZGVidWcnKSkg ew0KCQkJZWNobyAiKysgVEFCTEUgIi5TTURfRkVBVC4iIEhBUyAiLmNvdW50KEBzYWZlX3No b3coJ2NvbHVtbnMnLCBTTURfRkVBVCkpLiIgQ09MVU1OUzsiOw0KCQl9DQoJCXJldHVybihA c2FmZV9zaG93KCdjb2x1bW5zJywgU01EX0ZFQVQpKTsNCgl9DQp9DQoNCi8vICoqKioqKioq KioqKioqKioNCi8vIFBVQkxJQyBTSURFIFRBR1MNCi8vICoqKioqKioqKioqKioqKioNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkKCRhdHRz LCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9pbmZvLCAkc21kX3ByaW9yX2Zl YXR1cmVkLCAkcHJlZnM7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknbGFiZWwnICAg ID0+ICcnLA0KCQkndW5sYWJlbCcgID0+ICdGZWF0dXJlZCcsDQoJCSdsYWJlbHRhZycgPT4g JycsDQoJCSd0aW1lJyAgICAgPT4gJ3Bhc3QnLA0KCQknc3RhdHVzJyAgID0+ICc0LDUnLA0K CQknc2VjdGlvbicgID0+ICcnLA0KCQknbGltaXQnICAgID0+ICcxMCcsDQoJCSdzb3J0JyAg ICAgPT4gJycsDQoJCSdmb3JtJyAgICAgPT4gJycsDQoJCSd3cmFwdGFnJyAgPT4gJycsDQoJ CSdicmVhaycgICAgPT4gJycsDQoJCSdjbGFzcycgICAgPT4gJycsDQoJCSdodG1sX2lkJyAg PT4gJycsDQoJKSwkYXR0cykpOw0KDQoJaWYgKGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0K CQlpZiAoJGxhYmVsKSB7DQoJCQkkd2hlcmUgPSAiQklOQVJZIGxhYmVsIFJFR0VYUCAnIi4k YXR0c1snbGFiZWwnXS4iJyI7DQoJCX0gZWxzZSB7DQoJCQkkd2hlcmUgPSAibGFiZWw9Jyci Ow0KCQl9DQoJCXVuc2V0KCRhdHRzWydsYWJlbCddKTsNCgl9IGVsc2Ugew0KCQkvLyBJZiBu byBsYWJlbCBhdHRyaWJ1dGUgaGFzIGJlZW4gZ2l2ZW4sIHRyZWF0IHRoaXMgYXMgJ2FsbCBm ZWF0dXJlZCBpdGVtcycNCgkJJGlkcyA9IHNhZmVfY29sdW1uKCdmZWF0X2lkJywgU01EX0ZF QVQsICcxPTEnKTsNCgkJJGlkcyA9IGpvaW4oIicsJyIsIGRvU2xhc2goJGlkcykpOw0KCQkk d2hlcmUgPSAic21kZmVhdC5mZWF0X2lkIElOICgnJGlkcycpIjsNCgl9DQoNCgkvLyBFeGNs dWRlIHByZXZpb3VzbHkgc2VlbiBhcnRpY2xlcw0KCWlmICghZW1wdHkoJHNtZF9wcmlvcl9m ZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49ICcgQU5EIHNtZGZlYXQuZmVhdF9pZCBOT1QgSU4o JyAuIGpvaW4oJywnLCAkc21kX3ByaW9yX2ZlYXR1cmVkKSAuICcpJzsNCgl9DQoNCgkvLyBO T1RFOiB0aW1lIGlzIGxlZnQgaW4gdGhlICRhdHRzIGFycmF5IGFuZCBwYXNzZWQgdG8gYXJ0 aWNsZV9jdXN0b20uIE90aGVyd2lzZSB0aGUgZGVmYXVsdA0KCS8vIHRpbWUgdmFsdWUgKHBh c3QpIHdpbGwgYmUgdXNlZA0KCWlmICgkdGltZSkgew0KCQlzd2l0Y2ggKCR0aW1lKSB7DQoJ CQljYXNlICdhbnknOg0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnZnV0dXJlJzoNCgkJCQkkd2hl cmUgLj0gIiBBTkQgUG9zdGVkID4gbm93KCkiOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoN CgkJCQkkd2hlcmUgLj0gIiBBTkQgUG9zdGVkIDw9IG5vdygpIjsNCgkJfQ0KCQlpZiAoISRw cmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ10pIHsNCgkJCSR3aGVyZSAuPSAiIEFO RCAobm93KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOw0K CQl9DQoJfQ0KDQoJaWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBJ TiAoJy5qb2luKCcsJywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCQl1bnNldCgkYXR0c1sn c3RhdHVzJ10pOw0KCX0NCg0KCWlmICgkc2VjdGlvbikgew0KCQkkd2hlcmUgLj0gIiBBTkQg U2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjdGlvbikpLiInKSI7DQoJ CXVuc2V0KCRhdHRzWydzZWN0aW9uJ10pOw0KCX0NCg0KCWlmICgkc29ydCkgew0KCQkkd2hl cmUgLj0nIE9SREVSIEJZICcuJHNvcnQ7DQoJCXVuc2V0KCRhdHRzWydzb3J0J10pOw0KCX0N Cg0KCS8vIExlYXZlIGxpbWl0IGluIHRoZSAkYXR0cyBhcnJheSB0b28gc28gaXQgZG9lc24n dCBkZWZhdWx0IHRvIGFydGljbGVfY3VzdG9tJ3MgdmFsdWUgaWYgc2V0IGhlcmUNCglpZiAo JGxpbWl0KSB7DQoJCSR3aGVyZSAuPScgTElNSVQgJy4kbGltaXQ7DQoJfQ0KDQoJLy8gRG9u J3QgcGFzcyB0aGUgcmVtYWluaW5nIGF0dHJpYnV0ZXMgd2UndmUgYWxyZWFkeSBoYW5kbGVk IG9udG8gdGhlIGFydGljbGVfY3VzdG9tIHRhZw0KCXVuc2V0KA0KCQkkYXR0c1snbGFiZWwn XSwNCgkJJGF0dHNbJ3VubGFiZWwnXSwNCgkJJGF0dHNbJ2xhYmVsdGFnJ10sDQoJCSRhdHRz Wyd3cmFwdGFnJ10sDQoJCSRhdHRzWydicmVhayddLA0KCQkkYXR0c1snY2xhc3MnXSwNCgkJ JGF0dHNbJ2h0bWxfaWQnXQ0KCSk7DQoNCgkkcnMgPSBnZXRSb3dzKCdTRUxFQ1QgKiwgdW5p eF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1bml4X3RpbWVzdGFtcChFeHBpcmVz KSBhcyB1RXhwaXJlcywgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RNb2QgRlJP TSAnLlBGWC4ndGV4dHBhdHRlcm4gQVMgdHhwIExFRlQgSk9JTiAnLlBGWC5TTURfRkVBVC4n IEFTIHNtZGZlYXQgT04gdHhwLklEPXNtZGZlYXQuZmVhdF9pZCBXSEVSRSAnLiR3aGVyZSk7 DQoNCgkkb3V0ID0gYXJyYXkoKTsNCglpZiAoJHJzKSB7DQoJCWZvcmVhY2ggKCRycyBhcyAk cm93KSB7DQoJCQkkc21kX2ZlYXR1cmVkX2luZm9bJ2xhYmVsJ10gPSAkcm93WydsYWJlbCdd Ow0KCQkJJHNtZF9mZWF0dXJlZF9pbmZvWyd0aXRsZSddID0gJHJvd1snZmVhdF90aXRsZV9o dG1sJ107DQoJCQkkc21kX2ZlYXR1cmVkX2luZm9bJ2Rlc2NyaXB0aW9uJ10gPSAkcm93Wydk ZXNjX2h0bWwnXTsNCgkJCSRhdHRzWydpZCddID0gJHJvd1snSUQnXTsNCg0KCQkJJGFydG91 dCA9IGFydGljbGVfY3VzdG9tKCRhdHRzLCAkdGhpbmcpOw0KDQoJCQlpZiAoJGFydG91dCkg ew0KCQkJCSRzbWRfcHJpb3JfZmVhdHVyZWRbXSA9ICRyb3dbJ0lEJ107DQoJCQkJJG91dFtd ID0gJGFydG91dDsNCgkJCX0NCgkJfQ0KCX0NCglpZiAoJG91dCkgew0KCQlyZXR1cm4gKCgk bGFiZWx0YWcpID8gZG9MYWJlbCggKCAoJGxhYmVsID09ICcnKSA/ICR1bmxhYmVsIDogJGxh YmVsKSwgJGxhYmVsdGFnICkgOiAnJykNCgkJCS5kb1dyYXAoJG91dCwgJHdyYXB0YWcsICRi cmVhaywgJGNsYXNzLCAnJywgJycsICcnLCAkaHRtbF9pZCk7DQoJfQ0KCXJldHVybiAnJzsN Cn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfdW5mZWF0 dXJlZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRfcHJpb3JfZmVhdHVyZWQ7DQoN Cgkkd2hlcmUgPSAiMT0xIjsNCg0KCS8vIEV4Y2x1ZGUgcHJldmlvdXNseSBzZWVuIGFydGlj bGVzDQoJaWYgKCFlbXB0eSgkc21kX3ByaW9yX2ZlYXR1cmVkKSkgew0KCQkkd2hlcmUgLj0g JyBBTkQgaWQgTk9UIElOKCcgLiBqb2luKCcsJywgJHNtZF9wcmlvcl9mZWF0dXJlZCkgLiAn KSc7DQoJfQ0KDQoJJHJzID0gc2FmZV9jb2x1bW4oJ0lEJywgJ3RleHRwYXR0ZXJuJywgJHdo ZXJlKTsNCgkkYXR0c1snaWQnXSA9IGpvaW4oJywnLCAkcnMpOw0KCSRvdXQgPSBhcnRpY2xl X2N1c3RvbSgkYXR0cywgJHRoaW5nKTsNCg0KCXJldHVybiAkb3V0Ow0KfQ0KDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9pbmZvKCRhdHRz KSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRfaW5mbzsNCg0KCWV4dHJhY3QobEF0dHMoYXJy YXkoDQoJCSdpdGVtJyA9PiAnJywNCgkpLCRhdHRzKSk7DQoNCglyZXR1cm4gKGlzc2V0KCRz bWRfZmVhdHVyZWRfaW5mb1skaXRlbV0pID8gJHNtZF9mZWF0dXJlZF9pbmZvWyRpdGVtXSA6 ICcnKTsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRf aWZfZmVhdHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2lu Zm8sICR0aGlzYXJ0aWNsZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdpZCcgPT4g JycsDQoJCSdsYWJlbCcgPT4gJycsDQoJKSwkYXR0cykpOw0KDQoJaWYgKCRpZCkgew0KCQkk aWQgPSBqb2luKCInLCciLCBkb19saXN0KGRvU2xhc2goJGlkKSkpOw0KCX0NCg0KCWlmICgh JGlkICYmICR0aGlzYXJ0aWNsZSkgew0KCQkkaWQgPSAkdGhpc2FydGljbGVbJ3RoaXNpZCdd Ow0KCX0NCg0KCSR3aGVyZVtdID0gImZlYXRfaWQgSU4gKCciLiRpZC4iJykiOw0KDQoJaWYg KGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0KCQkkbGFiZWwgPSBleHBsb2RlKCcsJywgZG9T bGFzaCgkbGFiZWwpKTsNCgkJJGxibHdoZXJlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGxh YmVsIGFzICRsYmwpIHsNCgkJCSRsYmx3aGVyZVtdID0gIiciLnRyaW0oJGxibCkuIiciOw0K CQl9DQoJCWlmICgkbGJsd2hlcmUpIHsNCgkJCSR3aGVyZVtdID0gJyggQklOQVJZIGxhYmVs IElOICgnIC4gam9pbignLCcsICRsYmx3aGVyZSkgLiAnKSApJzsNCgkJfQ0KCX0NCg0KCSRy ZXQgPSBzYWZlX3JvdygnZmVhdF9pZCcsIFNNRF9GRUFULCBqb2luKCcgQU5EJywgJHdoZXJl KSk7DQoNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmV0KSk7DQp9DQoNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJlcGxhY2Vt ZW50IHN0cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJlZA0KLy8gVE9ETzogbWFrZSB0aGVz ZSBpbnRvIGEgdGV4dHBhY2sgd2hlbiBwbHVnaW4gY29tcG9zZXIgc3VwcG9ydHMgdGhlbQ0K ZnVuY3Rpb24gc21kX2ZlYXR1cmVkX2dUeHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkgew0K CSRsYW5nID0gYXJyYXkoDQoJCSdieV9sYWJlbCcgPT4gJ0J5IGxhYmVsOiAnLA0KCQknYnlf bmFtZScgPT4gJ0J5IG5hbWU6ICcsDQoJCSdjb250cm9sX3BhbmVsJyA9PiAnQ29udHJvbCBw YW5lbCcsDQoJCSdtYW5hZ2VfbGJsJyA9PiAnQ2xpY2sgdG8gc2VsZWN0IGZlYXR1cmVkIGFy dGljbGVzLCB3aGljaCB3aWxsIGJlIHNob3duIDxzcGFuIGNsYXNzPSJzbWRfZmVhdHVyZWQi PjxhIGhyZWY9IiMiPmhpZ2hsaWdodGVkPC9hPjwvc3Bhbj4uJywNCgkJJ3ByZWZzJyA9PiAn UHJlZmVyZW5jZXMnLA0KCQkncHJlZl9ib3hzaXplJyA9PiAnQm94IHNpemU6ICcsDQoJCSdw cmVmX2JveHNpemVieScgPT4gJ3gnLA0KCQkncHJlZl9kaXNwbGF5JyA9PiAnRGlzcGxheTog JywNCgkJJ3ByZWZfc29ydCcgPT4gJ1NvcnQgYnk6ICcsDQoJCSdwcmVmc19zb21lX2V4cGxh aW4nID0+ICdUaGlzIGlzIGVpdGhlciBhIG5ldyBpbnN0YWxsYXRpb24gb3IgYSBkaWZmZXJl bnQgdmVyc2lvbicuYnIuJ29mIHRoZSBwbHVnaW4gdG8gb25lIHlvdSBoYWQgYmVmb3JlLics DQoJCSdwcmVmc19zb21lX29wdHMnID0+ICdDbGljayAiSW5zdGFsbCB0YWJsZSIgdG8gYWRk IG9yIHVwZGF0ZSB0aGUgdGFibGUnLmJyLidsZWF2aW5nIGFsbCBleGlzdGluZyBkYXRhIHVu dG91Y2hlZC4nLA0KCQkncHJlZnNfc29tZV90YmwnID0+ICdOb3QgYWxsIHRhYmxlIGluZm8g YXZhaWxhYmxlLicsDQoJCSdzYXZlZCcgPT4gJ0FydGljbGUgaW5mbyB1cGRhdGVkJywNCgkJ J3NlYXJjaF9saXZlJyA9PiAnQXJ0aWNsZSBsaXZlIHNlYXJjaCcsDQoJCSdzZWFyY2hfc3Rh bmRhcmQnID0+ICdBcnRpY2xlIHNlYXJjaCcsDQoJCSd0YWJfbmFtZScgPT4gJ0ZlYXR1cmVk IGFydGljbGVzJywNCgkJJ3RibF9pbnN0YWxsX2xibCcgPT4gJ0luc3RhbGwgdGFibGUnLA0K CQkndGJsX2luc3RhbGxlZCcgPT4gJ1RhYmxlIGluc3RhbGxlZCcsDQoJCSd0Ymxfbm90X2lu c3RhbGxlZCcgPT4gJ1RhYmxlIG5vdCBpbnN0YWxsZWQnLA0KCQkndGJsX3JlbW92ZWQnID0+ ICdUYWJsZSByZW1vdmVkJywNCgkJJ3RibF9ub3RfcmVtb3ZlZCcgPT4gJ1RhYmxlIG5vdCBy ZW1vdmVkJywNCgkJJ3RleHRpbGUnID0+ICdUZXh0aWxlOiAnLA0KCQkndGV4dGlsZV9kZXNj JyA9PiAnRGVzY3JpcHRpb24nLA0KCQkndGV4dGlsZV90aXRsZScgPT4gJ1RpdGxlJywNCgkJ J3VuZmVhdHVyZV9jb25maXJtJyA9PiAnU3VyZSB0byB1bmZlYXR1cmUgdGhpcyBhcnRpY2xl PycsDQoJCSd1bmxhYmVsbGVkJyA9PiAnW3VubGFiZWxsZWRdJywNCgkpOw0KCXJldHVybiBz dHJ0cigkbGFuZ1skd2hhdF0sICRhdHRzKTsNCn0iO3M6NDoidHlwZSI7czoxOiIxIjtzOjU6 Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMiI7czo0OiJoZWxwIjtzOjIwMTYy OiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9mZWF0dXJlZDwvaDE+CgoJPHA+UHVs bCBvbmUgb3IgbW9yZSBhcnRpY2xlcyBvdXQgb2YgdGhlIHJlZ3VsYXIgYXJ0aWNsZSBmbG93 IGFuZCBwaW1wIHRoZW0gJiM4MjEyOyBwZXJoYXBzIG9uIGEgc2VjdGlvbiBsYW5kaW5nIHBh Z2Ugb3IgeW91ciBob21lIHBhZ2UuPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJ CTxsaT5PbmUtY2xpY2sgc2VsZWN0aW9uIG9mIGFydGljbGVzIHRvIGZlYXR1cmU8L2xpPgoJ CTxsaT5MYWJlbCB5b3VyIGZlYXR1cmVkIGFydGljbGVzLCBhbGxvd2luZyB5b3UgdG8gZ3Jv dXAgdGhlbSBpbnRvIGFyZWFzIGxpa2UgRmVhdHVyZWQsIFRlYXNlcnMsIGV0YzwvbGk+CgkJ PGxpPkFkZCBhbiBvcHRpb25hbCB0aXRsZS9kZXNjcmlwdGlvbiB0byBlYWNoIGFydGljbGUg c28geW91IGNhbiB1c2UgdGhhdCBhcyBjb3B5LCBpbnN0ZWFkIG9mIHNvbWV0aGluZyBmcm9t IHRoZSBhcnRpY2xlIGl0c2VsZiAoc3VwcG9ydHMgVGV4dGlsZSBhbmQgc29tZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzKTwvbGk+CgkJPGxpPlNlYXJjaCB5b3VyIGZl YXR1cmVkIGFydGljbGVzIGJ5IG5hbWUgb3IgbGFiZWw7IGZpbHRlcmluZyBpbiByZWFsLXRp bWUgaWYgeW91IHdpc2g8L2xpPgoJCTxsaT5IaWRkZW4gcHJlZiBhbGxvd3MgcHJlLWZpbHRl cmluZyBieSBhbiBhZG1pbmlzdHJhdG9yIHNvIG9ubHkgYXJ0aWNsZXMgZnJvbSBjZXJ0YWlu IHNlY3Rpb25zIGFyZSBhdmFpbGFibGUgZm9yIHBpbXBhZ2U8L2xpPgoJCTxsaT5EaXNwbGF5 IGluZm9ybWF0aW9uIGZyb20gdGhlIGZlYXR1cmVkIGFydGljbGVzIHVzaW5nIHJlZ3VsYXIg PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gYXJ0aWNsZSB0YWdzPC9saT4KCQk8bGk+ S2VlcHMgdHJhY2sgb2Ygd2hpY2ggYXJ0aWNsZXMgaGF2ZSBiZWVuIHNlZW4gYWxyZWFkeSBv biB0aGUgcGFnZSBzbyBsYXRlciBmZWF0dXJlZCAob3IgdW5mZWF0dXJlZCkgYXJ0aWNsZXMg YXJlbiYjODIxNzt0IGR1cGxpY2F0ZWQ8L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yIC8gQ3Jl ZGl0czwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbnRhY3Qi PlN0ZWYgRGF3c29uPC9hPjwvcD4KCgk8aDI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRp b248L2gyPgoKCTxwIGNsYXNzPSJpbXBvcnRhbnQiPlJlcXVpcmVzIFRleHRwYXR0ZXJuIDQu Mi4wKyAoNC4zLjArIHJlY29tbWVuZGVkKTwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2lu IGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8x MTc0L3NtZF9mZWF0dXJlZCI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRo ZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0m Z3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0 IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5w aHA/aWQ9MzM5MzgiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBv cnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxw PldoZW4geW91IGluc3RhbGwgdGhlIHBsdWdpbiwgdGhlIG5lY2Vzc2FyeSB0YWJsZSBpcyBh dXRvbWF0aWNhbGx5IGluc3RhbGxlZCBmb3IgeW91LiBUaGVyZSYjODIxNztzIGN1cnJlbnRs eSBubyBmYWNpbGl0eSBmb3IgcmVtb3ZpbmcgaXQgZHVyaW5nIHBsdWdpbiBvcGVyYXRpb24s IGJ1dCBpdCB3aWxsIGJlIGRlbGV0ZWQgaWYgdGhlIHBsdWdpbiBpcyBkZWxldGVkIGZyb20g eW91ciBzeXN0ZW0uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSB0aGUg cGx1Z2luIGZyb20gdGhlIDxlbT5BZG1pbi0mZ3Q7UGx1Z2luczwvZW0+IHBhZ2UuPC9wPgoK CTxwIGNsYXNzPSJpbXBvcnRhbnQiPlVuZGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IDQuMi4wLCBpZiB5b3UgY2hhbmdlIGFueSBvZiB0aGUgcHJlZnMgYW5kIHNhdmUgdGhl bSwgeW91IG5lZWQgdG8gcmVsb2FkIHRoZSBwbHVnaW4gdGFiIChqdXN0IGNsaWNrIGl0KSB0 byBhY3R1YWxseSBzZWUgdGhlbSB0YWtlIGVmZmVjdC4gVGhpcyBzaXR1YXRpb24gaXMgZml4 ZWQgdW5kZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4zLjAuPC9wPgoKCTxo Mj5Db25maWd1cmluZyBmZWF0dXJlZCBhcnRpY2xlczwvaDI+CgoJPHA+VmlzaXQgdGhlIDxl bT5Db250ZW50LSZndDtGZWF0dXJlZCBhcnRpY2xlczwvZW0+IHRhYi4gQSBsaXN0IG9mIGFs bCBhcnRpY2xlcyAoZnJvbSB0aGUgYWRtaW4tc2VsZWN0ZWQgc2VjdGlvbnMpIGFyZSBwcmVz ZW50ZWQgaW4gYSBncmlkLjwvcD4KCgk8aDM+VG8gZmVhdHVyZSBhbiBhcnRpY2xlPC9oMz4K Cgk8cD5DbGljayBpdHMgbmFtZS4gSXQgd2lsbCBiZSBoaWdobGlnaHRlZCBhbmQgYW4gPGNv ZGU+W0VkaXRdPC9jb2RlPiBidXR0b24gYXBwZWFycyBiZXNpZGUgaXQuIElmIHlvdSBjaG9v c2Ugbm90IHRvIGVkaXQgdGhlIGFydGljbGUgaW5mb3JtYXRpb24sIGl0IHdpbGwgYmUgZmVh dHVyZWQgYnV0IHVubGFiZWxsZWQuPC9wPgoKCTxwPkNsaWNraW5nIDxjb2RlPltFZGl0XTwv Y29kZT4gd2lsbCBkaXNwbGF5IHRocmVlIGlucHV0IGJveGVzOjwvcD4KCgk8dWw+CgkJPGxp PjxzdHJvbmc+TGFiZWw8L3N0cm9uZz4gOiBhbGxvd3MgeW91IHRvIGxhYmVsIChncm91cCkg dGhlIGFydGljbGUgd2l0aCBvdGhlcnMgb2YgYSBzaW1pbGFyIGZlYXR1cmVkIHN0YXR1cy4g Rm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBsYWJlbCBzb21lIGFydGljbGVzIHRvIGdvIGluIGEg JiM4MjE2O3RlYXNlcnMmIzgyMTc7IGJsb2NrIG9uIHlvdXIgaG9tZSBwYWdlIGJ5IGxhYmVs bGluZyBlYWNoIHBvdGVudGlhbCBhcnRpY2xlIHdpdGggPGNvZGU+VGVhc2VyPC9jb2RlPi4g QmUgY2FyZWZ1bDogPHN0cm9uZz5sYWJlbHMgYXJlIGNhc2Ugc2Vuc2l0aXZlPC9zdHJvbmc+ LiBUbyBoZWxwLCB5b3UgbWF5IGNob29zZSBhIGxhYmVsIGZyb20gdGhlIGRyb3Bkb3duIGxp c3Qgb2YgYWxsIGN1cnJlbnRseSBkZWZpbmVkIGxhYmVsczwvbGk+CgkJPGxpPjxzdHJvbmc+ VGl0bGU8L3N0cm9uZz4gOiBhbGxvd3MgeW91IHRvIHN0b3JlIHNvbWUgVGV4dGlsZS1hd2Fy ZSB0aXRsZSByZWxhdGVkIHRvIHRoZSBhcnRpY2xlLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9t IHRoZSBhcnRpY2xlJiM4MjE3O3MgYWN0dWFsIFRpdGxlIGFuZCBjYW4gYmUgdXNlZCBmb3Ig YW55IHB1cnBvc2UgeW91IHNlZSBmaXQ8L2xpPgoJCTxsaT48c3Ryb25nPkRlc2NyaXB0aW9u PC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBzdG9yZSBzb21lIFRleHRpbGUtYXdhcmUgc3Vw cG9ydGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJ0aWNsZS4gVGhpcyBjb3VsZCBzaW1w bHkgYmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgeW91ciBvd24gdXNlLCBvciBzb21l IGNvcHkgdGhhdCB5b3UgbWF5IHdpc2ggdG8gZGlzcGxheSBpbiB5b3VyIHRlYXNlcnMgYmxv Y2sgdG8gZW50aWNlIHBlb3BsZSB0byByZWFkIHRoZSBhcnRpY2xlLiBJdCBjYW4gYmUgYXMg c2ltcGxlIG9yIGFzIGNvbXBsZXggYXMgeW91IGxpa2UgYW5kIGNhbiBjb250YWluIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MgKGlmIHRoZXkgbWFrZSBzZW5zZSB0byB1 c2UgYXQgdGhhdCBwb2ludCAmIzgyMTI7IGFydGljbGUgdGFncyBjYW5ub3QgYmUgdXNlZCwg Zm9yIGV4YW1wbGUsIGJ1dCA8Y29kZT4mbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7PC9jb2RlPiBj YW4pPC9saT4KCTwvdWw+CgoJPHA+V2hlbiB5b3UmIzgyMTc7cmUgaGFwcHkgd2l0aCB5b3Vy IGNhdGVnb3Jpc2F0aW9uIGFuZC9vciBkZXNjcmlwdGlvbiB0ZXh0LCBoaXQgU2F2ZSB0byBz dG9yZSBpdC4gWW91IGNhbiBlZGl0IHRoZSBpbmZvcm1hdGlvbiBhdCBhbnkgdGltZSBieSBj bGlja2luZyB0aGUgYXBwcm9wcmlhdGUgPGNvZGU+W0VkaXRdPC9jb2RlPiBidXR0b24gZnJv bSB0aGUgZmVhdHVyZWQgYXJ0aWNsZSBsaXN0LjwvcD4KCgk8aDM+VG8gdW5mZWF0dXJlIGFu IGFydGljbGU8L2gzPgoKCTxwPkNsaWNrIGl0cyBuYW1lIGFnYWluLiBXaGVuIHlvdSBjb25m aXJtIHRoYXQgeW91IGFyZSBzdXJlLCB0aGUgYXJ0aWNsZSYjODIxNztzIGxhYmVsIGFuZCBk ZXNjcmlwdGlvbiBhcmUgZGVsZXRlZCwgc28gYmUgc3VyZSB5b3UgcmVhbGx5IHdhbnQgdG8g cmVtb3ZlIHRoZW0sIG9yIGhhdmUgYmFja2VkIHRoZSBpbmZvcm1hdGlvbiB1cCBzb21ld2hl cmUuPC9wPgoKCTxoMz5GaW5kaW5nIGFydGljbGVzIHRvIGZlYXR1cmU8L2gzPgoKCTxwPldp dGggbGFyZ2UgYXJ0aWNsZSBsaXN0cyBpdCBjYW4gYmVjb21lIGRpZmZpY3VsdCB0byBmaW5k IHRoZSBvbmUgeW91IHdhbnQuIEFib3ZlIHRoZSBncmlkIGlzIGEgY29udHJvbCBwYW5lbC4g Q2xpY2sgaXQgdG8gcmV2ZWFsIHRoZSBwbHVnaW4gb3B0aW9ucy4gIE9uIHRoZSBsZWZ0IGlz IHRoZSBBcnRpY2xlIHNlYXJjaCBhcmVhIGFuZCBvbiB0aGUgcmlnaHQgYXJlIHRoZSBwbHVn aW4gcHJlZmVyZW5jZXMuIElmIHlvdSBhcmUgaW4gPGVtPkRpc3BsYXk6IEFsbDwvZW0+IG1v ZGUsIHNpbXBseSBzdGFydCB0eXBpbmcgaW4gdGhlIDxlbT5CeSBuYW1lPC9lbT4gYm94IGFu ZCB5b3VyIGFydGljbGUgbGlzdCB3aWxsIGJlIHJlZHVjZWQgYXMgeW91IHR5cGUgdG8gb25s eSB0aG9zZSB0aGF0IG1hdGNoLiBUeXBlIG11bHRpcGxlIHdvcmRzIHRvIGZpbmQgYXJ0aWNs ZXMgdGhhdCBjb250YWluIGFueSBvZiB0aGUgZ2l2ZW4gd29yZHMuIFRvIHF1aWNrbHkgY2xl YXIgdGhlIGJveCwgaGl0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+RVNDPC9zcGFuPmFwZSBr ZXkuPC9wPgoKCTxwPkFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBzZWxlY3QgbGlz dCB0byBjaG9vc2UgYWxsIGFydGljbGVzIHdpdGggYSBwYXJ0aWN1bGFyIGxhYmVsLiBUaGUg ZW1wdHkgZW50cnkgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdCBtZWFucyAmIzgyMjA7YWxsIGFy dGljbGVzJiM4MjIxOy4gSWYgeW91IGhhdmUgZmVhdHVyZWQgYW4gYXJ0aWNsZSBidXQgZG9u JiM4MjE3O3Qgc3VwcGx5IGEgbGFiZWwgeW91IGNhbiBmaWx0ZXIgaXQgYnkgY2hvb3Npbmcg dGhlIDxjb2RlPlt1bmxhYmVsbGVkXTwvY29kZT4gaXRlbSBmcm9tIHRoZSBsaXN0LiBJZiB5 b3UgaGF2ZSBsYWJlbGxlZCBhbnkgYXJ0aWNsZXMsIGVhY2ggbGFiZWwgeW91IGhhdmUgc3Vw cGxpZWQgd2lsbCBhbHNvIGJlIGFuIG9wdGlvbiBpbiB0aGUgbGlzdC4gUmVtZW1iZXIgdGhh dCBsYWJlbHMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvcD4KCgk8cD5Ob3RlIHRoYXQgZmlsdGVy aW5nIGJ5IG5hbWUgb3IgYnkgbGFiZWwgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBhY3Rpb25z OiBzZWxlY3Rpbmcgc29tZXRoaW5nIGZyb20gdGhlIGRyb3Bkb3duIHdpbGwgY2xlYXIgdGhl IHRleHQgYm94LCBhbmQgdHlwaW5nIHNvbWV0aGluZyBpbiB0aGUgdGV4dCBib3ggd2lsbCBy ZXNldCB0aGUgZHJvcGRvd24uPC9wPgoKCTxwPllvdXIgc2VhcmNoIGNyaXRlcmlhIGFyZSBy ZW1lbWJlcmVkIGJldHdlZW4gZWRpdC9saXN0IHZpZXdzIHNvIHlvdSB3b24mIzgyMTc7dCBs b3NlIHlvdXIgcGxhY2UuIElmIHlvdSBhcmUgaW4gPGVtPkRpc3BsYXk6IFBhZ2luYXRlZDwv ZW0+IG1vZGUsIHRoZSBzZWFyY2ggd29ya3MgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgYnV0 IHlvdSBoYXZlIHRvIGhpdCBFbnRlciBvciBjbGljayA8ZW0+R288L2VtPiB0byBzdWJtaXQg dGhlIHNlYXJjaCBjcml0ZXJpYS48L3A+CgoJPGgzPlBsdWdpbiBwcmVmZXJlbmNlczwvaDM+ CgoJPHA+VXNlcnMgb2YgdGhlIDxlbT5GZWF0dXJlZCBhcnRpY2xlczwvZW0+IHRhYiBhbHNv IGhhdmUgYSBmZXcgcHJlZmVyZW5jZXMgYXQgdGhlaXIgZGlzcG9zYWwgd2hpY2ggY2FuIGJl IGFsdGVyZWQgYXQgd2lsbDo8L3A+CgoJPG9sPgoJCTxsaT48c3Ryb25nPkRpc3BsYXk8L3N0 cm9uZz4gOiBjaG9vc2Ugd2hldGhlciB5b3Ugd2lzaCB0byBkaXNwbGF5IGFsbCBhcnRpY2xl cyBvbiBvbmUgcGFnZSAoYW5kIHVzZSB0aGUgbGl2ZSBzZWFyY2ggdG8gZmlsdGVyIHRoZW0p IG9yIGNob29zZSBhIHBhZ2luYXRlZCB2aWV3IChhbmQgdXNlIHRoZSB0cmFkaXRpb25hbCBz ZWFyY2gpLiBUaGUgdHJhZGl0aW9uYWwgc2VhcmNoIG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3Ug aGF2ZSBhIGxvdCBvZiBhcnRpY2xlcyAob3ZlciAxMDAwKSBiZWNhdXNlIHRoZSBsaXZlIHNl YXJjaCBtaWdodCBzbG93IGRvd24gc2lnbmlmaWNhbnRseS4gTm90ZSB0aGF0IHdoZW4geW91 IHNlYXJjaCBmb3Igc29tZXRoaW5nIGluIHBhZ2luYXRlZCBtb2RlLCB0aGUgcmVzdWx0cyB0 aGVtc2VsdmVzIGFyZW4mIzgyMTc7dCBwYWdpbmF0ZWQ8L2xpPgoJCTxsaT48c3Ryb25nPlNv cnQgYnk8L3N0cm9uZz4gOiBkZWZpbmUgdGhlIHNvcnQgb3JkZXIgb2YgdGhlIGFydGljbGUg bGlzdDwvbGk+CgkJPGxpPjxzdHJvbmc+Qm94IHNpemU8L3N0cm9uZz4gOiBzcGVjaWZ5IHRo ZSA8Y29kZT53aWR0aDwvY29kZT4gYW5kIDxjb2RlPmhlaWdodDwvY29kZT4gdmFsdWVzIGlu IHBpeGVscyBvZiBlYWNoIGNlbGwgaW4gdGhlIGdyaWQuIERlZmF1bHQgaXMgPGNvZGU+MTUw eDQwPC9jb2RlPjwvbGk+CgkJPGxpPjxzdHJvbmc+VGV4dGlsZTwvc3Ryb25nPjogY2hvb3Nl IHRoZSBpdGVtcyB0byB3aGljaCB5b3Ugd2lzaCB0byBhcHBseSBUZXh0aWxlIHdoZW4geW91 IEVkaXQgYW5kIFNhdmUgYSBmZWF0dXJlZCBhcnRpY2xlLiA8c3Ryb25nPk5vdGUgdGhpcyBv bmx5IGFmZmVjdHMgZmVhdHVyZWQgYXJ0aWNsZXMgc2F2ZWQgZnJvbSB0aGlzIHBvaW50IGZv cndhcmQ8L3N0cm9uZz4uIFRodXMgaWYgeW91IHdpc2ggdG8gYXBwbHkgYSBuZXcgVGV4dGls ZSBzZXR0aW5nIHRvIGV4aXN0aW5nIGFydGljbGVzIHlvdSBuZWVkIHRvIHZpc2l0IGVhY2gg b25lIGluIHR1cm4gYnkgY2xpY2tpbmcgPGNvZGU+W0VkaXRdPC9jb2RlPiBhbmQgdGhlbiA8 ZW0+U2F2ZTwvZW0+LjwvbGk+Cgk8L29sPgoKCTxwPllvdSAoYXMgYWRtaW5pc3RyYXRvcikg Y2FuIGFsc28gYWx0ZXIgdGhlIGJlaGF2aW91ciBvZiB0aGUgcGx1Z2luIGJ5IGNyZWF0aW5n IHNvbWUgaGlkZGVuIHByZWZlcmVuY2VzICh0aGUgc21kX3ByZWZhbGl6ZXIgcGx1Z2luIGNh biBoZWxwIGhlcmUpLiBUaGVyZSBhcmUgdHdvIHByZWZzIHlvdSBtYXkgZGVmaW5lOjwvcD4K Cgk8b2w+CgkJPGxpPjxzdHJvbmc+c21kX2ZlYXR1cmVkX3ByaXZzPC9zdHJvbmc+IDogYSBj b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwcml2IGxldmVsIG51bWJlcnMgdGhhdCBjYW4gYWNj ZXNzIHRoZSA8ZW0+RmVhdHVyZWQgYXJ0aWNsZXM8L2VtPiB0YWIuIERlZmF1bHQ6IDxjb2Rl PjEsMjwvY29kZT48L2xpPgoJCTxsaT48c3Ryb25nPnNtZF9mZWF0dXJlZF9zZWN0aW9uX2xp c3Q8L3N0cm9uZz46IGRlZmluZSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNlY3Rpb24g bmFtZXMuIFRoZXNlIHdpbGwgYmUgdGhlIG9ubHkgc2VjdGlvbnMgZnJvbSB3aGljaCBhcnRp Y2xlcyBhcmUgYWxsb3dlZCB0byBiZSBmZWF0dXJlZDwvbGk+Cgk8L29sPgoKCTxwPklmIHVz aW5nIHNtZF9wcmVmYWxpemVyIHRvIGNyZWF0ZSB0aGUgcHJlZnMsIHNldCB0aGUgbmFtZSBh bmQgdmFsdWUgYXMgYWJvdmUgYW5kIHRoZW4gc2V0IHRoZSBmb2xsb3dpbmcgYWRkaXRpb25h bCBwYXJhbWV0ZXJzOjwvcD4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+dHlwZTwvc3Ryb25nPiA6 IGhpZGRlbjwvbGk+CgkJPGxpPjxzdHJvbmc+ZXZlbnQ8L3N0cm9uZz4gOiBzbWRfZmVhdHVy ZWQ8L2xpPgoJCTxsaT48c3Ryb25nPmlucHV0IGNvbnRyb2w8L3N0cm9uZz4gOiB0ZXh0X2lu cHV0PC9saT4KCQk8bGk+PHN0cm9uZz51c2VyPC9zdHJvbmc+IDogLyBlbXB0eSAvPC9saT4K CQk8bGk+PHN0cm9uZz5wb3NpdGlvbjwvc3Ryb25nPjogMDwvbGk+Cgk8L3VsPgoKCTxoMj5E aXNwbGF5aW5nIGZlYXR1cmVkIGFydGljbGVzPC9oMj4KCgk8cD5PbmNlIHlvdSBoYXZlIGNo b3NlbiB5b3VyIGZlYXR1cmVkIGFydGljbGVzLCB5b3UgbmVlZCBhIHdheSB0byBkaXNwbGF5 IHRoZW06PC9wPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29k ZT48L2gzPgoKCTxwPkFjdHMgYSBiaXQgbGlrZSB0aGUgc3RhbmRhcmQgPGNvZGU+Jmx0O3R4 cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiB0YWcgdG8gZGlzcGxheSBmZWF0dXJlZCBhcnRpY2xl cy4gQXR0cmlidXRlczo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFi ZWw8L3NwYW4+IDogZGlzcGxheSBmZWF0dXJlZCBhcnRpY2xlcyB3aXRoIHRoaXMgbGFiZWwu IFNwZWNpZnkgPGNvZGU+bGFiZWw9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBkaXNwbGF5IHVu bGFiZWxsZWQgYXJ0aWNsZXMgKHdoaWNoIGFyZSA8c3Ryb25nPm5vdDwvc3Ryb25nPiB0aGUg c2FtZSBhcyB1bmZlYXR1cmVkIGFydGljbGVzKS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgb21p dHRlZCwgYWxsIGZlYXR1cmVkIGFydGljbGVzICYjODIxMjsgaXJyZXNwZWN0aXZlIG9mIGxh YmVsICYjODIxMjsgd2lsbCBiZSBkaXNwbGF5ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bGFiZWx0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnICYjODIxMjsgd2l0aG91 dCBicmFja2V0cyAmIzgyMTI7IHRvIGFwcGx5IHRvIHRoZSBsYWJlbCBhdHRyaWJ1dGUuIElm IHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGUgbGFiZWwgaXRzZWxmIGlzIGRpc3Bs YXllZCBhdCB0aGUgaGVhZCBvZiB5b3VyIGZlYXR1cmVkIGFydGljbGUgbGlzdC4gSWYgeW91 IHdpc2ggdG8gZGlzcGxheSB1bmxhYmVsbGVkIGFydGljbGVzIHlvdSBuZWVkIHRvIHNwZWNp ZnkgdGhlIDxjb2RlPnVubGFiZWw8L2NvZGU+IGF0dHJpYnV0ZSBvciB5b3UmIzgyMTc7bGwg c2VlIG5vIGxhYmVsLiBOb3RlIHRoYXQgdGhpcyB0YWcgZGlmZmVycyBmcm9tIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBjb252ZW50aW9uOiB5b3Ugd2lsbCA8ZW0+b25s eTwvZW0+IHNlZSB0aGUgbGFiZWwgaWYgeW91IHNwZWNpZnkgdGhlIDxjb2RlPmxhYmVsdGFn PC9jb2RlPi4gWW91IGNhbiBkaXNwbGF5IHRoZSBsYWJlbCBpbnNpZGUgeW91ciBhcnRpY2xl cyB1c2luZyB0aGUgPGNvZGU+Jmx0O3R4cDpmZWF0dXJlZF9pbmZvIC8mZ3Q7PC9jb2RlPiB0 YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dW5sYWJlbDwvc3Bhbj4gOiB3aGVu IHVzaW5nIDxjb2RlPmxhYmVsPSZxdW90OyZxdW90OzwvY29kZT4gKHRvIHNob3cgdW5sYWJl bGxlZCBhcnRpY2xlcykgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBsYWJlbCB0byB1 c2UgaW5zaWRlIHRoZSA8Y29kZT5sYWJlbHRhZzwvY29kZT4uIERlZmF1bHQ6ICYjODIyMDtG ZWF0dXJlZCYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGltZTwvc3Bh bj4gOiBsaW1pdCB0aGUgYXJ0aWNsZXMgdG8gdGhvc2UgaW4gdGhlIDxjb2RlPnBhc3Q8L2Nv ZGU+LCB0aGUgPGNvZGU+ZnV0dXJlPC9jb2RlPiBvciA8Y29kZT5hbnk8L2NvZGU+LiBEZWZh dWx0OiA8Y29kZT5wYXN0PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z dGF0dXM8L3NwYW4+IDogb25seSBkaXNwbGF5IGFydGljbGVzIG9mIHRoZSBnaXZlbiBzdGF0 dXMgbnVtYmVyKHMpLiBEZWZhdWx0OiA8Y29kZT40LDU8L2NvZGU+IChhLmsuYS4gbGl2ZSBh bmQgc3RpY2t5KS4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlIG1heSBiZSBpZ25vcmVkIGlm IHlvdSBhcmUgdHJ5aW5nIHRvIHZpZXcgYW55dGhpbmcgb3RoZXIgbGl2ZSBhbmQgc3RpY2t5 IGFydGljbGVzIChzaW5jZSBhcnRpY2xlX2N1c3RvbSBkb2VzIHRoZSBzYW1lKTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zZWN0aW9uPC9zcGFuPiA6IG9ubHkgZGlzcGxheSBh cnRpY2xlcyBmcm9tIHRoZSBnaXZlbiBzZWN0aW9uKHMpLiBJZiB0aGUgc2VjdGlvbiBsaXN0 IGlzIHJlc3RyaWN0ZWQgdXNpbmcgdGhlIHBsdWdpbiBwcmVmZXJlbmNlcywgdGhlIHNlY3Rp b25zIHVzZWQgaGVyZSBtdXN0IGFsc28gYmUgaW4gdGhhdCBsaXN0PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+IDogdXNlIHRoaXMgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gZm9ybSB0byBkaXNwbGF5IGVhY2ggYXJ0aWNsZSwgaW5zdGVhZCBv ZiB1c2luZyB0aGUgY29udGFpbmVyIGNvbnRlbnRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmxpbWl0PC9zcGFuPiA6IG1heGltdW0gbnVtYmVyIG9mIGZlYXR1cmVkIGFydGlj bGVzIHRvIGRpc3BsYXkuIERlZmF1bHQ6IDEwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnNvcnQ8L3NwYW4+IDogb3JkZXIgdGhlIGZlYXR1cmVkIGFydGljbGVzIGJ5IDxjb2Rl PmlkPC9jb2RlPiwgPGNvZGU+bGFiZWw8L2NvZGU+LCA8Y29kZT5UaXRsZTwvY29kZT4sIDxj b2RlPlBvc3RlZDwvY29kZT4sIGFuZCBzbyBvbi4gVGhlIHNhbWUgbGlzdCBhdmFpbGFibGUg Zm9yIHRoZSA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2NvZGU+IHRhZyBhcmUgdXNh YmxlIGhlcmUuIEFkZCA8Y29kZT5hc2M8L2NvZGU+IG9yIDxjb2RlPmRlc2M8L2NvZGU+IHRv IHRoZSBhdHRyaWJ1dGUgdG8gYWx0ZXIgdGhlIGRpcmVjdGlvbiBvZiB0aGUgc29ydC4gWW91 IG1heSBhbHNvIHVzZSA8Y29kZT5yYW5kKCk8L2NvZGU+IHRvIHNvcnQgdGhlIGFydGljbGVz IHJhbmRvbWx5PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnICYjODIxMjsgd2l0aG91dCBicmFja2V0cyAmIzgyMTI7IHRv IHdyYXAgYXJvdW5kIHRoZSBsaXN0IG9mIGZlYXR1cmVkIGFydGljbGVzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgy MTI7IHdpdGhvdXQgYnJhY2tldHMgJiM4MjEyOyBvciB0ZXh0IHRvIHB1dCBiZXR3ZWVuIGVh Y2ggYXJ0aWNsZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4g OiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBs eSB0byB0aGUgd3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sX2lk PC9zcGFuPiA6IGEgPHNwYW4gY2xhc3M9ImNhcHMiPkRPTTwvc3Bhbj4gSUQgdG8gYXBwbHkg dG8gdGhlIHdyYXB0YWc8L2xpPgoJPC91bD4KCgk8cD5Zb3UgbWF5IHVzZSB0aGUgdGFnIGFz IGEgY29udGFpbmVyIGFuZCBhbnkgdGFncyB5b3Ugc3BlY2lmeSB3aWxsIGJlIGRpc3BsYXll ZCBpbiBlYWNoIGZlYXR1cmVkIGFydGljbGUuIFlvdSBjYW4gdXNlIHN0YW5kYXJkIGFydGlj bGUgdGFncyBzdWNoIGFzIDxjb2RlPiZsdDt0eHA6dGl0bGUgLyZndDs8L2NvZGU+LCA8Y29k ZT4mbHQ7dHhwOmV4Y2VycHQgLyZndDs8L2NvZGU+LCA8Y29kZT4mbHQ7dHhwOnBlcm1saW5r IC8mZ3Q7PC9jb2RlPiwgZXRjLCBhbHRob3VnaCBzb21lIGFydGljbGVzIGFyZSBub3QgZGlz cGxheWFibGUgYnkgVGV4dHBhdHRlcm4gKGUuZy4gaGlkZGVuLCBwZW5kaW5nIGFuZCBkcmFm dCBhcnRpY2xlcykuPC9wPgoKCTxwIGNsYXNzPSJpbXBvcnRhbnQiPk5vdGUgdGhhdCB5b3Ug Y2FuJiM4MjE3O3QgdXNlIDxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkJmd0OzwvY29kZT4g aW5zaWRlIGFuIGFydGljbGUgb3IgYW4gQXJ0aWNsZSBGb3JtLiBEb2luZyBzbyB3aWxsIHRy aWdnZXIgYSB3YXJuaW5nIGJlY2F1c2UgaXQmIzgyMTc7cyB0aGUgc2FtZSBhcyBwdXR0aW5n IGFub3RoZXIgYXJ0aWNsZSB0YWcgaW5zaWRlIGFuIGFydGljbGUuIFVzZSB0aGUgdGFnIG9u bHkgaW4gUGFnZXMsIG9yIGluIGEgRm9ybSB0aGF0IGlzIG5ldmVyIGRpcmVjdGx5IHVzZWQg dG8gZGlzcGxheSBhcnRpY2xlIGNvbnRlbnQuPC9wPgoKCTxwPkVhY2ggdGltZSB5b3UgdXNl IDxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9jb2RlPiBpdCBtYWtlcyBhIG5v dGUgb2YgdGhlIGFydGljbGVzIGl0IGhhcyBkaXNwbGF5ZWQgYW5kIHdpbGwgbm90IGR1cGxp Y2F0ZSBhcnRpY2xlcyBpbiBsYXRlciB0YWdzLjwvcD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpz bWRfZmVhdHVyZWRfaW5mbyAvJmd0OzwvY29kZT48L2gzPgoKCTxwPkFsbG93cyB5b3UgdG8g ZGlzcGxheSB0aGUgbGFiZWwgb3IgdGhlIGRlc2NyaXB0aW9uIHdpdGhpbiB5b3VyIDxjb2Rl PiZsdDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9jb2RlPiAgZm9ybS9jb250YWluZXIuPC9w PgoKCTxwPkhhcyBvbmUgYXR0cmlidXRlOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5pdGVtPC9zcGFuPiA6IHRoZSB0aGluZyB5b3Ugd2FudCB0byBkaXNwbGF5LiBD aG9vc2UgZnJvbToKCTx1bD4KCQk8bGk+PHN0cm9uZz5sYWJlbDwvc3Ryb25nPjogdGhlIGxh YmVsPC9saT4KCQk8bGk+PHN0cm9uZz50aXRsZTwvc3Ryb25nPjogdGhlIChwb3NzaWJseSBU ZXh0aWxlLXByb2Nlc3NlZCkgdGl0bGU8L2xpPgoJCTxsaT48c3Ryb25nPmRlc2NyaXB0aW9u PC9zdHJvbmc+OiB0aGUgKHBvc3NpYmx5IFRleHRpbGUtcHJvY2Vzc2VkKSBkZXNjcmlwdGlv bjwvbGk+Cgk8L3VsPjwvbGk+Cgk8L3VsPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNtZF91bmZl YXR1cmVkIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+VXNlIHRoaXMgdGFnIGlmIHlvdSB3aXNo IHRvIHNob3cgdGhlICYjODIxNjtyZW1haW5pbmcmIzgyMTc7IGFydGljbGVzICYjODIxMjsg aS5lLiBvbmVzIG5vdCBhbHJlYWR5IGRpc3BsYXllZCBieSBhbnkgcHJlY2VkaW5nIDxjb2Rl PiZsdDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9jb2RlPiB0YWdzLiBJdCBhY3RzIHZlcnkg bXVjaCBsaWtlIHRoZSBidWlsdC1pbiBhcnRpY2xlIHRhZyAmIzgyMTI7IGFuZCB0YWtlcyBh bGwgdGhlIHNhbWUgYXR0cmlidXRlcyAmIzgyMTI7IGJ1dCBpdHMgY29udGV4dCBpcyAmIzgy MjA7YW55IGFydGljbGVzIGZyb20gYW55IHNlY3Rpb24gZGVmaW5lZCBpbiB0aGUgc21kX2Zl YXR1cmVkIHBsdWdpbiB0aGF0IGhhdmUgbm90IGJlZW4gZGlzcGxheWVkIGFscmVhZHkmIzgy MjE7LjwvcD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7PC9jb2Rl PjwvaDM+CgoJPHA+VGhpcyB0YWcgYWxsb3dzIHlvdSB0byBkZXRlY3QgaWYgdGhlIGN1cnJl bnQgKGluZGl2aWR1YWwpIGFydGljbGUgaXMgZmVhdHVyZWQgYW5kL29yIGhhcyBhIHBhcnRp Y3VsYXIgbGFiZWwuIFlvdSBtYXkgYWxzbyB1c2UgdGhpcyBvdXRzaWRlIGFuIGFydGljbGUg Y29udGV4dCBieSBzdXBwbHlpbmcgYSBsaXN0IG9mIGFydGljbGUgSURzLjwvcD4KCgk8cD5I YXMgdHdvIGF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmlkPC9zcGFuPiA6IGxpc3Qgb2YgYXJ0aWNsZSBJRHMgb2Ygd2hpY2ggeW91IHdpc2ggdG8g Y2hlY2sgdGhlIGZlYXR1cmVkIHN0YXR1cy4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhl IGN1cnJlbnQgYXJ0aWNsZSAoaWYgdXNlZCBpbnNpZGUgYSA8Y29kZT4mbHQ7dHhwOmFydGlj bGUgLyZndDs8L2NvZGU+IGNvbnRhaW5lci9mb3JtKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBsaXN0IG9mIGxhYmVscyB0byBjb21wYXJlIHRoZSBn aXZlbiBJRChzKSB3aXRoLiBTcGVjaWZ5IDxjb2RlPmxhYmVsPSZxdW90OyZxdW90OzwvY29k ZT4gdG8gY2hlY2sgZm9yIHVubGFiZWxsZWQgYXJ0aWNsZXMsIG9yIHVzZSBhbiBlbXB0eSBp dGVtIGlmIHNwZWNpZnlpbmcgYSBsaXN0LCBlLmcuIDxjb2RlPmxhYmVsPSZxdW90OywgRmVh dHVyZWQsIFRlYXNlciZxdW90OzwvY29kZT4uIFJlbWVtYmVyIHRoYXQgbGFiZWxzIGFyZSBj YXNlIHNlbnNpdGl2ZTwvbGk+Cgk8L3VsPgoKCTxwPklmIHRoZSBhcnRpY2xlIG1hdGNoZXMg b25lIG9mIHRoZSBnaXZlbiBsYWJlbHMgdGhlIGNvbnRhaW5lZCBjb250ZW50IHdpbGwgYmUg ZXhlY3V0ZWQuIElmIG5vIGxhYmVsIGlzIGdpdmVuIHRoZSBhcnRpY2xlKHMpIHdpbGwgYmUg Y2hlY2tlZCBpZiB0aGV5IGFyZSBmZWF0dXJlZCwgaXJyZXNwZWN0aXZlIG9mIGxhYmVsLjwv cD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IENvbXBs ZXRlIGRpcmVjdG9yeSBvZiBmZWF0dXJlZCBhcnRpY2xlczwvaDM+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJlbHRh Zz0mcXVvdDtoMiZxdW90OyBsaW1pdD0mcXVvdDsyMCZxdW90OwogICAgIHdyYXB0YWc9JnF1 b3Q7ZGwmcXVvdDsgc29ydD0mcXVvdDtsYWJlbCZxdW90OyZndDsKICAgJmx0O3R4cDppZl9k aWZmZXJlbnQmZ3Q7CiAgICAgICZsdDtoMiZndDsmbHQ7dHhwOnNtZF9mZWF0dXJlZF9pbmZv IGl0ZW09JnF1b3Q7bGFiZWwmcXVvdDsgLyZndDsmbHQ7L2gyJmd0OwogICAmbHQ7L3R4cDpp Zl9kaWZmZXJlbnQmZ3Q7CiAgICZsdDtkdCZndDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZn dDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDsvZHQm Z3Q7CiAgICZsdDtkZCZndDsKICAgICAgJmx0O3R4cDpleGNlcnB0IC8mZ3Q7CiAgICZsdDsv ZGQmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBp ZD0iZWcyIj5FeGFtcGxlIDI6IE9uZSBmZWF0dXJlZCBhcnRpY2xlIGFuZCBzaXggdGVhc2Vy cyBvbiB0aGUgaG9tZSBwYWdlPC9oMz4KCgk8cD5TZWxlY3QgYW4gYXJ0aWNsZSBhbmQgbGFi ZWwgaXQgPGNvZGU+ZmVhdHVyZTwvY29kZT4uIFNlbGVjdCBzaXggb3RoZXJzIGFuZCBsYWJl bCB0aGVtIDxjb2RlPnRlYXNlcnM8L2NvZGU+LiBBZGQgc29tZSBkZXNjcmlwdGlvbiB0ZXh0 IHRvIHlvdXIgdGVhc2VyIGFydGljbGVzLjwvcD4KCgk8cD5JbiB5b3VyIGRlZmF1bHQgUGFn ZSwgcHV0IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWw9JnF1b3Q7ZmVhdHVyZSZxdW90OwogICAg IHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7IGh0bWxfaWQ9JnF1b3Q7bWFpbl9mZWF0dXJlJnF1 b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7 L3R4cDpwZXJtbGluayZndDsKICAgJmx0O3R4cDphcnRpY2xlX2ltYWdlIGNsYXNzPSZxdW90 O2ZlYXRfaW1hZ2UmcXVvdDsgLyZndDsKICAgJmx0O3AgY2xhc3M9JnF1b3Q7bGVhZGluJnF1 b3Q7Jmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2Zl YXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJlbD0mcXVvdDt0ZWFzZXJzJnF1 b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyBo dG1sX2lkPSZxdW90O3RlYXNlcl9ibG9jayZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGlu ayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDtw IGNsYXNzPSZxdW90O2xlYWRpbiZxdW90OyZndDsmbHQ7dHhwOmV4Y2VycHQgLyZndDsmbHQ7 L3AmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPklm IHlvdSB3YW50ZWQgdG8gaGF2ZSBzb21lIG90aGVyIGFydGljbGVzIGJlbmVhdGggdGhvc2Us IGJ1dCBkaWRuJiM4MjE3O3Qgd2FudCBhbnkgZHVwbGljYXRlcyB0byBhcHBlYXIgeW91IGNv dWxkIHVzZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnNtZF91bmZlYXR1cmVkIGZvcm09JnF1b3Q7bXlfbGlzdCZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzogUGVyLXNlY3Rpb24gbGFu ZGluZyBwYWdlIGZlYXR1cmVkIGFydGljbGVzPC9oMz4KCgk8cD5JZiB5b3UgaGFkIGEgem9v IHNpdGUgd2l0aCBhIHNlY3Rpb24gZm9yIHByaW1hdGVzLCBhIHNlY3Rpb24gZm9yIG1hbW1h bHMgYW5kIGEgc2VjdGlvbiBmb3IgcmVwdGlsZXMsIHdoZW4geW91IHNldCB1cCB5b3VyIGZl YXR1cmVkIGFydGljbGUgbGlzdCBkZWZpbmUgdGhlaXIgbmFtZXMgbGlrZSB0aGlzOjwvcD4K Cgk8dWw+CgkJPGxpPkZlYXR1cmVkIHByaW1hdGVzPC9saT4KCQk8bGk+RmVhdHVyZWQgbWFt bWFsczwvbGk+CgkJPGxpPkZlYXR1cmVkIHJlcHRpbGVzPC9saT4KCTwvdWw+CgoJPHA+T24g eW91ciBzZWN0aW9uIGxhbmRpbmcgcGFnZSB0ZW1wbGF0ZSB5b3UgY2FuIHRoZW4gZG8gdGhp cyB0byBkaXNwbGF5IGZvdXIgYXJ0aWNsZXMgZnJvbSB0aGUgcmVsZXZhbnQgKGN1cnJlbnQp IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O2gyJmd0O0xvb2sgd2hvJiMzOTtzIGhlcmU6Jmx0Oy9oMiZndDsKJmx0O3R4cDpzbWRf ZmVhdHVyZWQgbGFiZWw9JiMzOTtGZWF0dXJlZCAmbHQ7dHhwOnNlY3Rpb24gLyZndDsmIzM5 OwogICAgIHNlY3Rpb249JiMzOTsmbHQ7dHhwOnNlY3Rpb24gLyZndDsmIzM5OyBsaW1pdD0m cXVvdDs0JnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsgaHRtbF9pZD0mcXVv dDtmZWF0X2Jsb2NrJnF1b3Q7Jmd0OwogICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3BpbXBlZF9h cnRpY2xlJnF1b3Q7Jmd0OwogICAgICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0 bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgICAgJmx0O3R4cDpzbWRfZmVhdHVy ZWRfaW5mbyBpdGVtPSZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7IC8mZ3Q7CiAgICZsdDsvZGl2 Jmd0OwombHQ7L3R4cDpzbWRfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9 ImVnNCI+RXhhbXBsZSA0OiBDb25kaXRpb25hbCBjaGVjayBmb3IgZmVhdHVyZWQtbmVzczwv aDM+CgoJPHA+SWYgYSBzaXRlIHZpc2l0b3IgaGFzIG5hdmlnYXRlZCBhd2F5IGZyb20geW91 ciBmcm9udCBwYWdlIGFuZCBpcyB2aWV3aW5nIGFuIGFydGljbGUsIHlvdSBtYXkgd2lzaCB0 byBoaWdobGlnaHQgdGhlIGZhY3QgdGhlIGN1cnJlbnQgYXJ0aWNsZSBpcyBhIGZlYXR1cmVk IHByb2R1Y3QuIFNvLCBzb21ld2hlcmUgaW5zaWRlIHlvdSBhcnRpY2xlIGZvcm0gYWRkOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2lmX2ZlYXR1cmVkJmd0OwogICAmbHQ7cCBjbGFzcz0mcXVvdDtoaWxpZ2h0JnF1b3Q7Jmd0 O0ZFQVRVUkVEIFBST0RVQ1QmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9mZWF0dXJlZCZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPk9yIGlmIHlvdSB3YW50ZWQgdG8gb25seSBoaWdobGln aHQgdGhlIGFydGljbGUgaWYgaXQgd2FzIGEgZmVhdHVyZWQgb3Igb24gc3BlY2lhbCBvZmZl cjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9pZl9mZWF0dXJlZCBsYWJlbD0mcXVvdDtGZWF0dXJlZCwgU3BlY2lhbCZxdW90OyZn dDsKICAgJmx0O3AgY2xhc3M9JnF1b3Q7aGlsaWdodCZxdW90OyZndDtBcyBmZWF0dXJlZCBv biB0aGUgZnJvbnQgcGFnZSEmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9mZWF0dXJlZCZn dDsKPC9jb2RlPjwvcHJlPgoKCTxoMiBpZD0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoK CTx1bD4KCQk8bGk+MTggSnVuIDEwIHwgMC4xMCB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJ PGxpPjA3IFNlcCAxMCB8IDAuMjAgfCBSZW5hbWVkIGlkIGNvbHVtbiB0byBmZWF0X2lkIDsg Zml4ZWQgPGNvZGU+bGFiZWw8L2NvZGU+IGF0dHJpYnV0ZSBidWcgKGJvdGggdGhhbmtzIHBp ZW1hbikgOyBsYWJlbCBzZWFyY2hlcyBhcmUgbm93IGV4YWN0IG1hdGNoZXMgOyBhZGRlZCBw cmVmcyBhbmQgcGFnaW5hdGlvbiBzdXBwb3J0IGZvciBhZG1pbiBzaWRlIDsgYWRkZWQgPGNv ZGU+Jmx0O3R4cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7PC9jb2RlPiA7IGFkZGVkIGxhYmVsIHNl bGVjdGlvbiBmcm9tIGRyb3Bkb3duIGR1cmluZyBlZGl0aW5nICh0aGFua3MgdHllKTwvbGk+ CgkJPGxpPjEzIFNlcCAxMCB8IDAuMjEgfCBBZGRlZCAmIzgyMTY7dGl0bGUmIzgyMTc7IGFu ZCBUZXh0aWxlIG9wdGlvbnMgKGJvdGggdGhhbmtzIGJnKTwvbGk+CgkJPGxpPjEzIFNlcCAx MCB8IDAuMjIgfCBGaXhlZCBtaXNzaW5nIGRvU2xhc2goKSBvbiB1bnRleHRpbGVkIGh0bWwg Y29udGVudCAodGhhbmtzIGJnKTwvbGk+CgkJPGxpPjA1IE9jdCAxMCB8IDAuMzAgfCBVc2Ug PGNvZGU+YXJ0aWNsZV9jdXN0b20oKTwvY29kZT4gbm90IDxjb2RlPmFydGljbGUoKTwvY29k ZT4gdG8gc2lkZXN0ZXAgaW5kaXZpZHVhbCBhcnRpY2xlIGNvbnRleHQgKHRoYW5rcyBqb2hu c3RlcGhlbnMpIDsgcGFzcyA8Y29kZT50aW1lPC9jb2RlPiBhbmQgPGNvZGU+bGltaXQ8L2Nv ZGU+IHRvIDxjb2RlPmFydGljbGVfY3VzdG9tKCk8L2NvZGU+IDsgPGNvZGU+bGltaXQ8L2Nv ZGU+IGhhcyBkZWZhdWx0IG9mIDEwPC9saT4KCTwvdWw+Cgo8L2Rpdj4KPCEtLSAqKiogQkVH SU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVs cCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJv bGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7 IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZv bnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1j b2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBw YWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHgg R2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0K I3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5n OjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlm OyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMjc1Njg1OyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9 CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0 dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVw cGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjoj MzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpj ZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRo IHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVs IHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLmltcG9ydGFudCB7Y29s b3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNz bWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBF TkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjUzZmM4MzdhY2IxNDBk YjE4MjU4YTBkYjNmY2VkY2JiIjt9