# Name: smd_calendar v0.32 # Type: Client side plugin # Calendar / event / schedule system with events as TXP articles # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzIiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjYyOiJDYWxlbmRhciAvIGV2ZW50IC8gc2NoZWR1bGUgc3lzdGVtIHdpdGggZXZlbnRzIGFz IFRYUCBhcnRpY2xlcyI7czo0OiJjb2RlIjtzOjU0MTEwOiIvLyBCYXNlZCBoZWF2aWx5IG9u IG1kcF9jYWxlbmRhciAtIHRoYW5rcyENCi8vVE9ETzogSW52ZXN0aWdhdGUNCi8qDQokZCA9 IG5ldyBEYXRlVGltZSgnMjAwOC0xMi0yMiAxMjo1MicpOw0KZWNobyAkZC0+Z2V0VGltZXpv bmUoKS0+Z2V0TmFtZSgpOw0KKi8NCg0KaWYoICRkYXRlID0gZ3BzKCdkYXRlJykgKSB7DQoJ JF9HRVRbJ21vbnRoJ10gPSAkZGF0ZTsNCn0NCg0KZnVuY3Rpb24gc21kX2NhbGVuZGFyKCRh dHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR2YXJpYWJsZSwgJHByZWZz LCAkc21kX2NhbF9mbGFnLCAkc2RtX2NhbF91Y2xzLCAkc21kX2NhbF9pZCwgJHNtZF95ZWFy LCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0KDQoJZXh0cmFjdChsQXR0cyhh cnJheSgNCgkJJ3RpbWUnID0+ICdhbnknLCAvLyBwYXN0LCBmdXR1cmUsIGFueQ0KCQknc2l6 ZScgPT4gJ2xhcmdlJywgLy8gc21hbGwgb3IgbGFyZ2UgKGNhbGVuZGFyKQ0KCQknZXhwaXJl ZCcgPT4gJycsIC8vIDA9bm8sIDE9eWVzIHB1Ymxpc2ggZXhwaXJlZCBldmVudHMsIGVtcHR5 PXVzZSBwcmVmcw0KCQknY2F0ZWdvcnknID0+ICcnLA0KCQknc2VjdGlvbicgPT4gJycsDQoJ CSdhdXRob3InID0+ICcnLA0KCQknc3RhdHVzJyA9PiAnbGl2ZScsDQoJCSdzdGF0aWMnID0+ ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdzcGFuZm9ybScgPT4gJ1NNRF9TQU1FJywNCgkJ J3JlY3VyZm9ybScgPT4gJ1NNRF9TQU1FJywNCgkJJ2NlbGxmb3JtJyA9PiAnJywNCgkJJ3N0 ZXBmaWVsZCcgPT4gJycsDQoJCSdza2lwZmllbGQnID0+ICcnLA0KCQknb21pdGZpZWxkJyA9 PiAnJywNCgkJJ3Nob3dza2lwcGVkJyA9PiAnMCcsDQoJCSdzaG93c3Bhbm5lZCcgPT4gJzEn LA0KCQknaG9saWRheXMnID0+ICcnLA0KCQknaG9saWRheWZsYWdzJyA9PiAnc3RhbmRhcmQn LCAvLyBwZXJtaXQgdGhlc2UgZXZlbnRzIHRvICJsYW5kIiBvbiBhIGhvbGlkYXkgKHN0YW5k YXJkLCByZWN1ciwgbXVsdGkpDQoJCSdjbGFzc2xldmVscycgPT4gJ2NlbGwsIGV2ZW50Jywg Ly8gY2VsbCwgZXZlbnQsIGNlbGxwbHVzIChjb21iaW5lcyBldmVudCBhbmQgY2VsbCBpbnRv IGNlbGwgbGV2ZWwgY2xhc3NlcykNCgkJJ2xpbmtwb3N0ZWQnID0+ICdyZWN1ciwgbXVsdGks IG11bHRpcHJldiwgbXVsdGlsYXN0JywgLy8gd2hpY2ggZXZlbnRzIGNhdXNlIHRoZSBtaW5p Y2FsIHRvIGxpbmsgdG8gcG9zdGVkIGRhdGUNCgkJJ2NsYXNzcHJlZml4ZXMnID0+ICdzbWRf Y2FsXywgc21kX2NhbF9ldl8nLCAvLyAxc3Q9Y2VsbC1sZXZlbCBwZngsIDJuZD1ldmVudC1s ZXZlbCBwZnggKG9wdGlvbmFsKQ0KCQknY2xhc3MnID0+ICcnLCAvLyBUYWJsZSBjbGFzcw0K CQkncm93Y2xhc3MnID0+ICcnLA0KCQknY2VsbGNsYXNzJyA9PiAnJywNCgkJJ2VtcHR5Y2xh c3MnID0+ICdlbXB0eScsDQoJCSdpc293ZWVrY2xhc3MnID0+ICd3ZWVrJywNCgkJJ25hdmNs YXNzJyA9PiAnbmF2cHJldiwgbmF2bmV4dCcsDQoJCSduYXZhcnJvdycgPT4gJyYjNjA7LCAm IzYyOycsDQoJCSduYXZpZCcgPT4gJycsDQoJCSdldmVudGNsYXNzZXMnID0+ICdjYXRlZ29y eScsDQoJCSdldmVudHdyYXB0YWcnID0+ICdzcGFuJywNCgkJJ3NlbGVjdCcgPT4gJycsIC8v IHdlZWssIG1vbnRoIGFuZC9vciB5ZWFyICh0byBkaXNwbGF5IGRyb3Bkb3ducykNCgkJJ3Nl bGVjdGJ0bicgPT4gJycsIC8vIGVtcHR5ID0gYXV0b3NlbGVjdCAob25jaGFuZ2UpLCBvciB0 ZXh0IHRvIGdvIG9uIHRoZSBzdWJtaXQgYnV0dG9uDQoJCSdteWNsYXNzJyA9PiAnJywgLy8g bW9udGgteWVhciBoZWFkZXIgY2xhc3MNCgkJJ215d3JhcHRhZycgPT4gJycsIC8vIG1vbnRo LXllYXIgaGVhZGVyIHdyYXB0YWcNCgkJJ2lkJyA9PiAnJywgLy8gVGFibGUgSUQgKD1jYWxp ZCkNCgkJJ3dlZWsnID0+ICcnLA0KCQknbW9udGgnID0+ICcnLA0KCQkneWVhcicgPT4gJycs DQoJCSd5ZWFyd2lkdGgnID0+ICcwLDAnLCAvLyBudW1iZXIgb2YgeWVhcnMgZWl0aGVyIHNp ZGUgb2YgdGhlIGZpcnN0L2xhc3QgYXJ0aWNsZSB0byBwZXJtaXQNCgkJJ2lzb3dlZWtzJyA9 PiAnJywgLy8gZW1wdHkgPSBkb24ndCBzaG93IElTTyB3ZWVrczsgb3IgdGV4dCBvZiBjb2x1 bW4gaGVhZGluZywgdGV4dCBvZiBjZWxsIHByZWZpeA0KCQknZGF5Zm9ybWF0JyA9PiAnQUJC UicsIC8vIEFCQlIgPSAlYSwgRlVMTCA9ICVBLCBvciBjdXN0b20gc3RyZnRpbWUgc3RyaW5n DQoJCSdtb250aGZvcm1hdCcgPT4gJ0ZVTEwnLCAvLyBBQkJSID0gJWIsIEZVTEwgPSAlQiwg b3IgY3VzdG9tIHN0cmZ0aW1lIHN0cmluZw0KCQknZmlyc3RkYXknID0+IDAsIC8vIDFzdCBk YXkgb2Ygd2VlayAwPVN1bmRheSwgNj1TYXR1cmRheSAoZm9yY2VkIHRvIE1vbmRheSBpZiBp c293ZWVrcz0xKQ0KCQknbWFpbnRhaW4nID0+ICdjYWxpZCcsIC8vIHdoZW4gbmF2aWdhdGlu Zywga2VlcCB0aGVzZSBpdGVtcyBpbiB0aGUgVVJMDQoJCSdnbXQnID0+IDAsDQoJCSdsYW5n JyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAwLA0KCSksICRhdHRzKSk7DQoNCgkkZnV0dXJlID0g KCAkdGltZSAhPSAncGFzdCcgKSA/IHRydWUgOiBmYWxzZTsgLy8gRGV0ZXJtaW5lIGhlYWRp bmcgc3R5bGUNCgkkc3RhdHVzID0gKCRzdGF0dXMpID8gJHN0YXR1cyA6ICdsaXZlJzsgLy8g aW4gY2FzZSBzdGF0dXMgaGFzIGJlZW4gZW1wdGllZA0KCSRmaXJzdGRheSA9ICgkaXNvd2Vl a3MgPT0gJycpID8gJGZpcnN0ZGF5IDogMTsNCgkkc3BhbmZvcm0gPSAoJHNwYW5mb3JtID09 ICdTTURfU0FNRScpID8gJGZvcm0gOiAkc3BhbmZvcm07DQoJJHJlY3VyZm9ybSA9ICgkcmVj dXJmb3JtID09ICdTTURfU0FNRScpID8gJGZvcm0gOiAkcmVjdXJmb3JtOw0KCSRjZWxsZm9y bSA9IChlbXB0eSgkY2VsbGZvcm0pKSA/ICcnIDogZmV0Y2hfZm9ybSgkY2VsbGZvcm0pOw0K DQoJLy8gU2V0IHVwIHRoZSBjbGFzcyBwcmVmaXhlcw0KCSRjbGV2cyA9IGRvX2xpc3QoJGNs YXNzbGV2ZWxzKTsNCgkkY2xzID0gZG9fbGlzdCgkY2xhc3NwcmVmaXhlcyk7DQoJJGNsYXNz cHJlZml4ID0gJGV2Y2xhc3NwcmVmaXggPSAkY2xzWzBdOw0KCWlmIChjb3VudCgkY2xzKSA+ IDEpew0KCQkkZXZjbGFzc3ByZWZpeCA9ICRjbHNbMV07DQoJfQ0KDQoJLy8gU2V0IHVwIHRo ZSBuYXYgY2xhc3MoZXMpDQoJJG1haW50YWluID0gZG9fbGlzdCgkbWFpbnRhaW4pOw0KCSRu YXZhcnJvdyA9IGRvX2xpc3QoJG5hdmFycm93KTsNCgkkbmF2cGFyciA9ICRuYXZhcnJvd1sw XTsNCgkkbmF2bmFyciA9IChjb3VudCgkbmF2YXJyb3cpID4gMSkgPyAkbmF2YXJyb3dbMV0g OiAkbmF2YXJyb3dbMF07DQoJJG5hdmNsYXNzID0gZG9fbGlzdCgkbmF2Y2xhc3MpOw0KCSRu YXZwY2xhc3MgPSAkbmF2Y2xhc3NbMF07DQoJJG5hdm5jbGFzcyA9IChjb3VudCgkbmF2Y2xh c3MpID4gMSkgPyAkbmF2Y2xhc3NbMV0gOiAkbmF2Y2xhc3NbMF07DQoNCgkvLyBGaWx0ZXJz DQoJJGZvcHRzID0gYXJyYXkoKTsNCgkkY2F0U1FMID0gJHNlY1NRTCA9ICRhdXRoU1FMID0g Jyc7DQoJaWYoJGNhdGVnb3J5KSB7DQoJCSRmb3B0c1snYyddID0gJGNhdGVnb3J5Ow0KCQkk Y2F0U1FMID0gZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGNhdGVnb3J5 KSkpKTsNCgkJJGNhdFNRTCA9ICIgQU5EICggQ2F0ZWdvcnkxIElOICgiLiRjYXRTUUwuIikg T1IgQ2F0ZWdvcnkyIElOICgiLiRjYXRTUUwuIikgKSAiOw0KCX0NCglpZigkc2VjdGlvbikg ew0KCQkkZm9wdHNbJ3MnXSA9ICRzZWN0aW9uOw0KCQkkc2VjU1FMID0gZG9RdW90ZShqb2lu KCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJHNlY3Rpb24pKSkpOw0KCQkkc2VjU1FMID0gIiBB TkQgU2VjdGlvbiBJTiAoIi4kc2VjU1FMLiIpICI7DQoJfQ0KCWlmKCRhdXRob3IpIHsNCgkJ JGZvcHRzWydhdXRob3InXSA9IGh0bWxlbnRpdGllcyhncHMoJ2F1dGhvcicpKTsNCgkJJGF1 dGhTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkYXV0aG9yKSkp KTsNCgkJJGF1dGhTUUwgPSAiIEFORCBBdXRob3JJRCBJTiAoIi4kYXV0aFNRTC4iKSAiOw0K CX0NCgkkc3RhdHVzID0gZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkgPSBhcnJheSgpOw0K CWZvcmVhY2ggKCRzdGF0dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5KCRzdGF0KSkgew0K CQkJY29udGludWU7DQoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkpIHsNCgkJCSRz dGF0aVtdID0gJHN0YXQ7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9IGdldFN0YXR1c051 bSgkc3RhdCk7DQoJCX0NCgl9DQoJJHN0YXRpID0gIiBTdGF0dXMgSU4gKCIuZG9RdW90ZShq b2luKCcsJywgJHN0YXRpKSkuIikiOw0KDQoJJGV4cGlyZWQgPSAoJGV4cGlyZWQpID8gJGV4 cGlyZWQgOiAkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddOw0KCSRleHBpcmVk ID0gKCgkZXhwaXJlZCkgPyAnJyA6ICcgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4cGly ZXMgPSAnLk5VTExEQVRFVElNRS4nKScpOw0KCSRldmVudGNsYXNzZXMgPSBkb19saXN0KCRl dmVudGNsYXNzZXMpOw0KCSRob2xpZGF5ZmxhZ3MgPSBkb19saXN0KCRob2xpZGF5ZmxhZ3Mp Ow0KCSRsaW5rcG9zdGVkID0gZG9fbGlzdCgkbGlua3Bvc3RlZCk7DQoNCgkvLyBXb3JrIG91 dCB0aGUgZmlyc3QgYW5kIGxhc3QgcG9zdHMgdG8gZGV0ZXJtaW5lIHRoZSB5ZWFyIHJhbmdl DQoJJGVhcmxpZXN0ID0gc2FmZV9yb3coJ3VuaXhfdGltZXN0YW1wKFBvc3RlZCkgQVMgdVBv c3RlZCcsICd0ZXh0cGF0dGVybicsICRzdGF0aS4oKCRjYXRlZ29yeSkgPyAkY2F0U1FMIDog JycpLigoJHNlY3Rpb24pID8gJHNlY1NRTCA6ICcnKS4oKCRhdXRob3IpID8gJGF1dGhTUUwg OiAnJykuJyBPUkRFUiBCWSBQb3N0ZWQgQVNDIExJTUlUIDAsIDEnLCAkZGVidWcpOw0KCSRs YXRlc3QgPSBzYWZlX3JvdygndW5peF90aW1lc3RhbXAoTGFzdE1vZCkgQVMgdUxhc3RNb2Qn LCAndGV4dHBhdHRlcm4nLCAkc3RhdGkuKCgkY2F0ZWdvcnkpID8gJGNhdFNRTCA6ICcnKS4o KCRzZWN0aW9uKSA/ICRzZWNTUUwgOiAnJykuKCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycp LicgQU5EIFBvc3RlZCA8IG5vdygpIE9SREVSIEJZIExhc3RNb2QgREVTQyBMSU1JVCAwLCAx JywgJGRlYnVnKTsNCgkkeWVhcndpZHRoID0gZG9fbGlzdCgkeWVhcndpZHRoKTsNCglpZiAo Y291bnQoJHllYXJ3aWR0aCkgPT0gMSkgJHllYXJ3aWR0aFsxXSA9ICR5ZWFyd2lkdGhbMF07 DQoJJGVhcmxpZXN0ID0gZGF0ZSgiWSIsIHN0cnRvdGltZSgiLSIuJHllYXJ3aWR0aFswXS4i IHllYXIiLCAoIChlbXB0eSgkZWFybGllc3QpKSA/IHRpbWUoKSA6ICRlYXJsaWVzdFsndVBv c3RlZCddKSApICk7DQoJJGxhdGVzdCA9IGRhdGUoIlkiLCBzdHJ0b3RpbWUoIisiLiR5ZWFy d2lkdGhbMV0uIiB5ZWFyIiwgKCAoZW1wdHkoJGxhdGVzdCkpID8gdGltZSgpIDogJGxhdGVz dFsndUxhc3RNb2QnXSkgKSApOw0KDQoJLy8gQ2hlY2sgdGhlIFVSTCBmb3IgY3VycmVudCBk YXRlIGFuZCBjYWxlbmRhciB0YXJnZXQgaW5mbw0KCSRpbmNvbWluZ19jYWxpZCA9IGdwcygn Y2FsaWQnKTsNCgkkaW5jb21pbmdfeWVhciA9IChncHMoJ3knKSBhbmQgaXNfbnVtZXJpYyhn cHMoJ3knKSkpID8gKGludClncHMoJ3knKSA6ICcnOw0KCSRpbmNvbWluZ19tb250aCA9IChn cHMoJ20nKSBhbmQgaXNfbnVtZXJpYyhncHMoJ20nKSkpID8gKGludClncHMoJ20nKSA6ICcn Ow0KCSRpbmNvbWluZ193ZWVrID0gKGdwcygndycpIGFuZCBpc19udW1lcmljKGdwcygndycp KSkgPyAoaW50KWdwcygndycpIDogJyc7DQoNCglpZigkc3RhdGljKSB7IC8vIGlmIHdlJ3Jl IHN0YXRpYyB3L28gYW55IHN1cHBsaWVkIHZhcnMsIHVzZSB0aGUgY3VycmVudCBkYXRlDQoJ CWlmKCEkeWVhcikgeyAkeWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJaWYoISRt b250aCkgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJfSBlbHNlIHsgLy8g b3RoZXJ3aXNlIHVzZSBjdXJyZW50IGRhdGUgb25seSBpZiB0aGVyZSdzIG5vdGhpbmcgZWxz ZQ0KCQlpZiggJGlkID09ICRpbmNvbWluZ19jYWxpZCApIHsgLy8gdXNlIGluY29taW5nDQoJ CQkkeWVhciA9ICgkaW5jb21pbmdfeWVhcikgPyAkaW5jb21pbmdfeWVhciA6ICgoJHllYXIp ID8gJHllYXIgOiBzYWZlX3N0cmZ0aW1lKCclWScpKTsNCgkJCSRtb250aCA9ICgkaW5jb21p bmdfbW9udGgpID8gJGluY29taW5nX21vbnRoIDogKCgkbW9udGgpID8gJG1vbnRoIDogc2Fm ZV9zdHJmdGltZSgnJW0nKSk7DQoJCQkvLyBJZiB3ZWVrIGlzIHVzZWQsIGFkanVzdCBtb250 aCBzbyBpdCBlbmNvbXBhc3NlcyB0aGUgZ2l2ZW4gd2Vlaw0KCQkJJHdlZWsgPSAkaW5jb21p bmdfd2VlazsNCgkJCWlmICgkd2Vlaykgew0KCQkJCSRtb250aCA9IHNhZmVfc3RyZnRpbWUo IiVtIiwgZ21ta3RpbWUgKDEsMSwxLDEsNyokd2VlaywkeWVhcikpOyAvLyBHdWVzcyB0aGUg bW9udGggZnJvbSB0aGUgd2Vlaw0KCQkJfQ0KCQl9IGVsc2UgeyAvLyB1c2UgY3VycmVudA0K CQkJaWYoISR5ZWFyKSB7ICR5ZWFyID0gc2FmZV9zdHJmdGltZSgnJVknKTsgfQ0KCQkJaWYo ISRtb250aCkgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJCQlpZigkd2Vl aykgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCIlbSIsIGdtbWt0aW1lICgxLDEsMSwxLDcq JHdlZWssJHllYXIpKTsgfQ0KCQl9DQoJfQ0KCSRzbWRfY2FsX2lkID0gKCRpbmNvbWluZ19j YWxpZCkgPyAkaW5jb21pbmdfY2FsaWQgOiAkaWQ7DQoJJHNtZF95ZWFyID0gJHllYXI7ICRz bWRfbW9udGggPSAkbW9udGg7IC8vICRzbWRfd2VlayBhbmQgc21kX2RheSBhcmUgc2V0IHBl ciBldmVudCBsYXRlcg0KDQoJLy8gVGhlIHRpbWVzIGluIHRoZSBEQiBhcmUgc3RvcmVkIHVz aW5nIHRoZSBzZXJ2ZXIncyBsb2NhbCB0aW1lLCBzbyB3ZSBkb24ndA0KCS8vIHdhbnQgdG8g YWRqdXN0IGFueXRoaW5nIChzaW5jZSBta3RpbWUgdXNlcyB0aGUgc2VydmVyJ3MgbG9jYWwg dGltZSkuDQoJLy9UT0RPOiBXb3JyeSBhYm91dCBnbXQgLyBkc3QNCgkkdHNfZmlyc3QgPSBt a3RpbWUoMCwgMCwgMCwgJG1vbnRoLCAxLCAkeWVhcik7DQoJJHRzX2xhc3QgPSBta3RpbWUo MjMsIDU5LCA1OSwgJG1vbnRoLCBkYXRlKCd0JywkdHNfZmlyc3QpLCAkeWVhcik7DQoNCgkk ZXh0cmFzcWwgPSAkY2F0U1FMIC4gJHNlY1NRTCAuICRhdXRoU1FMOw0KCXN3aXRjaCgkdGlt ZSkgew0KCQljYXNlICJhbnkiIDogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSIgOiAkZXh0cmFz cWwgLj0gIiBBTkQgUG9zdGVkID4gQ1VSREFURSgpIjsgYnJlYWs7DQoJCWRlZmF1bHQgOiAk ZXh0cmFzcWwgLj0gIiBBTkQgUG9zdGVkIDwgQ1VSREFURSgpIjsgYnJlYWs7IC8vIFRoZSBw YXN0DQoJfQ0KDQoJLy8gSG9saWRheXMgYXJlIGdsb2JhbCAnZXhjbHVzaW9ucycsIGVpdGhl ciBkZWZpbmVkIGRpcmVjdGx5IG9yIGluIGEgPHR4cDp2YXJpYWJsZSAvPg0KCSRob2xpZGF5 cyA9IGRvX2xpc3QoJGhvbGlkYXlzKTsNCgkkdHhwaG9scyA9IGRvX2xpc3QoJGhvbGlkYXlz WzBdLCAiOiIpOw0KCWlmICgkdHhwaG9sc1swXSA9PSAidHhwdmFyIikgew0KCQkkaG9saWRh eXMgPSBkb19saXN0KCR2YXJpYWJsZVskdHhwaG9sc1sxXV0pOw0KCX0NCgkvLyBGb3JjZSBl YWNoIGhvbGlkYXkgdG8gYSBrbm93biBmb3JtYXQuIEhvbGlkYXlzIHdpdGhvdXQgeWVhcnMg dXNlIGN1cnJlbnQgeWVhcg0KCWZvcmVhY2ggKCRob2xpZGF5cyBhcyAka2V5ID0+ICR2YWwp IHsNCgkJaWYgKGVtcHR5KCR2YWwpKSBjb250aW51ZTsNCgkJJG51bXBhcnRzID0gcHJlZ19t YXRjaCgnL14oW1xkXHddKykuPyhbXGRcd10rKS4/KFtcZFx3XSspPyQvJywgJHZhbCwgJHBh cnRzKTsNCg0KCQlpZiAoJG51bXBhcnRzKSB7DQoJCQlpZiAoY291bnQoJHBhcnRzKSA9PSAz KSB7DQoJCQkJJHBhcnRzWzNdID0gJHllYXI7DQogICAgICAgICB9DQoJCQkkdmFsID0gc3Ry X3BhZCgkcGFydHNbMV0sIDIsICcwJywgU1RSX1BBRF9MRUZUKS4nLScuc3RyX3BhZCgkcGFy dHNbMl0sIDIsICcwJywgU1RSX1BBRF9MRUZUKS4nLScuJHBhcnRzWzNdOw0KCQl9DQoJCSRo b2xpZGF5c1ska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgl9DQoN CglpZiAoJGRlYnVnID4gMCAmJiAhZW1wdHkoJGhvbGlkYXlzKSAmJiAkaG9saWRheXNbMF0g IT0gJycpIHsNCgkJZWNobyAiKysgSE9MSURBWVMgKysgIjsNCgkJZG1wKCRob2xpZGF5cyk7 DQoJfQ0KDQoJLy8gR2V0IGFsbCBtYXRjaGluZyBhcnRpY2xlcyBpbiAoYW5kIGJlZm9yZSkg dGhpcyBtb250aA0KCSRldmVudHMgPSBhcnJheSgpOw0KCSRzcWwyID0gJHN0YXRpIC4gIiBI QVZJTkcgdVBvc3RlZCA8PSAiLiR0c19sYXN0IC4gJGV4cGlyZWQgLiAkZXh0cmFzcWwgLiIg T1JERVIgQlkgUG9zdGVkIEFTQyI7DQoJJGdyYWJDb2xzID0gJyosIHVuaXhfdGltZXN0YW1w KFBvc3RlZCkgYXMgdVBvc3RlZCwgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RN b2QsIHVuaXhfdGltZXN0YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzJzsNCgkkZXZsaXN0ID0g c2FmZV9yb3dzKCRncmFiQ29scywgJ3RleHRwYXR0ZXJuJywgJHNxbDIsICRkZWJ1Zyk7DQoJ YXJ0aWNsZV9wdXNoKCk7DQoNCgkvLyBJZiBhbnkgZXZlbnRzIHJlY3VyIGFuZCBmYWxsIHdp dGhpbiB0aGUgY3VycmVudCBtb250aCwgYWRkIHRob3NlIGFzIHdlbGwNCgkvLyBJZiBhbnkg ZGF0ZXMgYXJlIHRvIGJlIGV4Y2x1ZGVkLCB0aGUgZW50cnkgaXMgc2tpcHBlZCBVTkxFU1Mg c2hvd3NraXBwZWQgaW5kaWNhdGVzIG90aGVyd2lzZQ0KCWZvcmVhY2ggKCRldmxpc3QgYXMg JHJvdykgew0KCQkkaWR4ID0gMDsgLy8gSW4gY2FzZSB0aGUgMXN0IGRheSBvZiB0aGUgbW9u dGggaXMgYSBjb250aW51YXRpb24gb2YgYW4gZXZlbnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBw cmV2aW91cyBtb250aA0KCQkkc3RhcnQgPSAkcm93Wyd1UG9zdGVkJ107DQoJCSRzdGFydF9k YXRlID0gZGF0ZSgiWS1tLWQiLCAkc3RhcnQpOyAvLyBGb3IgcmVjdXJyaW5nL3NwYW5uZWQg ZXZlbnRzIG9uIGEgbWluaWNhbCwgdGhpcyBpcyB0aGUgZXZlbnQgdGhlIGNlbGwgbGlua3Mg dG8NCgkJJHJlYWxfZW5kID0gJHJvd1sndUV4cGlyZXMnXTsNCgkJJGVuZCA9ICgkcmVhbF9l bmQgIT0gMCAmJiAkcmVhbF9lbmQgPCAkdHNfbGFzdCkgPyAkcmVhbF9lbmQgOiAkdHNfbGFz dDsNCgkJJHNtZF9jYWxfZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KDQoJCWlm ICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICcrKyBFVkVOVCBTVEFSVCAvLyBFTkQgLy8gUkVB TCBFTkQgKysnOw0KCQkJZG1wKCRyb3dbJ1RpdGxlJ10pOw0KCQkJZG1wKGRhdGUoJ2QtTS1Z IEg6aTpzJywgJHN0YXJ0KSAuJyAvLyAnLiBkYXRlKCdkLU0tWSBIOmk6cycsICRlbmQpIC4n IC8vICcuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHJlYWxfZW5kKSk7DQoJCQlpZiAoJGRlYnVn ID4gMikgew0KCQkJCWRtcCgkcm93KTsNCgkJCX0NCgkJfQ0KDQoJCSRtdWx0aSA9ICgkcm93 Wyd1RXhwaXJlcyddID4gJHJvd1sndVBvc3RlZCddICYmICRyb3dbJ3VFeHBpcmVzJ10gPiAk dHNfZmlyc3QpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkcmVjdXIgPSAoZW1wdHkoJHJvd1skc3Rl cGZpZWxkXSkpID8gZmFsc2UgOiB0cnVlOw0KCQkkaG9sX2hpdCA9IGluX2FycmF5KGRhdGUo ImQtTS1ZIiwgJHN0YXJ0KSwgJGhvbGlkYXlzKTsNCgkJJGV2Y2xhc3NlcyA9IGFycmF5KCk7 DQoJCWZvcmVhY2ggKCRldmVudGNsYXNzZXMgYXMgJGV2Y2xzKSB7DQoJCQlzd2l0Y2ggKCRl dmNscykgew0KCQkJCWNhc2UgIiI6DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImdjYXQiOg0K CQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ2MnXSkgJiYgIWVtcHR5KCRwcmV0ZXh0WydjJ10p KSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcHJldGV4dFsnYydd Ow0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVnb3J5IjoNCgkJCQkJaWYg KGlzc2V0KCRyb3dbJ0NhdGVnb3J5MSddKSAmJiAhZW1wdHkoJHJvd1snQ2F0ZWdvcnkxJ10p KSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcm93WydDYXRlZ29y eTEnXTsNCgkJCQkJfQ0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnkyJ10pICYmICFl bXB0eSgkcm93WydDYXRlZ29yeTInXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNs YXNzcHJlZml4LiRyb3dbJ0NhdGVnb3J5MiddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ CWNhc2UgInNlY3Rpb24iOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ3MnXSkgJiYgIWVt cHR5KCRwcmV0ZXh0WydzJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3By ZWZpeC4kcHJldGV4dFsncyddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImF1 dGhvciI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsnYXV0aG9yJ10pICYmICFlbXB0eSgk cHJldGV4dFsnYXV0aG9yJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3By ZWZpeC4kcHJldGV4dFsnYXV0aG9yJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJZGVm YXVsdDoNCgkJCQkJaWYgKGlzc2V0KCRyb3dbJGV2Y2xzXSkgJiYgIWVtcHR5KCRyb3dbJGV2 Y2xzXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNsYXNzcHJlZml4LiRyb3dbJGV2 Y2xzXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQkkZXZjbGFzc2VzID0g KCRldmNsYXNzZXMpID8gJyAnLiBqb2luKCcgJywgJGV2Y2xhc3NlcykgOiAnJzsNCgkJJGln bm9yZSA9ICRvbWl0ID0gJGNmbGFnID0gYXJyYXkoKTsNCg0KCQlpZiAoJGRlYnVnID4gMSAm JiAkZXZjbGFzc2VzKSB7DQoJCQllY2hvICcrKyBFVkVOVCBDTEFTU0VTICsrJzsNCgkJCWRt cCgkZXZjbGFzc2VzKTsNCgkJfQ0KDQoJCS8vIEV2ZW50cyB0aGF0IHN0YXJ0IHRoaXMgbW9u dGgNCgkJaWYgKCRzdGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2ZpcnN0KSB7DQoJCQlw b3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJLy8gYSBzdGFuZGFyZCBldmVudCBvciBz dGFydCBvZiBhIG11bHRpDQoJCQlpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSAmJiAhJHJl Y3VyKSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ211bHRpZmlyc3QnOw0KCQkJfQ0KCQkJ aWYgKCRyZWN1cikgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cmZpcnN0JzsNCgkJ CX0NCgkJCWlmICghJHNtZF9jYWxfZmxhZykgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdz dGFuZGFyZCc7DQoJCQl9DQoJCQlpZiAoICggJGhvbF9oaXQgJiYgIWluX2FycmF5KCdtdWx0 aScsJGhvbGlkYXlmbGFncykgJiYgaW5fYXJyYXkoJ211bHRpZmlyc3QnLCRzbWRfY2FsX2Zs YWcpICkgfHwgKCAkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3N0YW5kYXJkJywkaG9saWRheWZs YWdzKSAmJiBpbl9hcnJheSgnc3RhbmRhcmQnLCRzbWRfY2FsX2ZsYWcpICkgKSB7DQoJCQkJ JHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQl9DQoJCQlmb3JlYWNoICgkc21kX2Nh bF9mbGFnIGFzICRpdGVtKSB7DQoJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07 DQoJCQl9DQoNCgkJCSRpZHggPSAoaW50KXN0cmZ0aW1lKCclZCcsICRzdGFydCk7DQoJCQkk c21kX2RheSA9ICRpZHg7DQoJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkc3RhcnQp Ow0KCQkJJG9wID0gKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9ybSkgPyBwYXJz ZV9mb3JtKCRmb3JtKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVmKCRyb3dbJ1Rp dGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyIn KSkgKTsNCgkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycg PT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFy cmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdw b3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAk c21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCgkJfQ0KDQoJCS8vIEdlbmVyYXRlIGEgc2tpcCBh cnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJHNraXBmaWVsZCAmJiAkcm93WyRza2lwZmll bGRdICE9ICcnKSB7DQoJCQkkaWdub3JlID0gZG9fbGlzdCgkcm93WyRza2lwZmllbGRdKTsN CgkJCWZvcmVhY2ggKCRpZ25vcmUgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGlnbm9yZVsk a2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsgLy8gRm9yY2UgZWFjaCBk YXRlIHRvIGEga25vd24gZm9ybWF0DQoJCQl9DQoJCX0NCgkJLy8gR2VuZXJhdGUgYW4gb21p dCBhcnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0 ZmllbGRdICE9ICcnKSB7DQoJCQkkb21pdCA9IGRvX2xpc3QoJHJvd1skb21pdGZpZWxkXSk7 DQoJCQlmb3JlYWNoICgkb21pdCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkkb21pdFska2V5 XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgkJCX0NCgkJfQ0KCQlpZiAo JGRlYnVnID4gMSAmJiAoJGlnbm9yZSB8fCAkb21pdCkpIHsNCgkJCWVjaG8gJysrIE9NSVRU RUQgREFURVMgKysnOw0KCQkJZG1wKCRvbWl0KTsNCgkJCWVjaG8gJysrIENBTkNFTExFRCBE QVRFUyArKyc7DQoJCQlkbXAoJGlnbm9yZSk7DQoJCX0NCgkJLy8gQ2FsY3VsYXRlIHRoZSBk YXRlIG9mZnNldHMgYW5kIGNoZWNrIHJlY3VycmluZyBldmVudHMgdGhhdCBmYWxsIHdpdGhp biB0aGUgbW9udGggb2YgaW50ZXJlc3QNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJvd1skc3Rl cGZpZWxkXSAhPSAnJykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBmaWVsZF0p Ow0KCQkJZm9yZWFjaCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJG1heF9sb29wID0g OTk5OTk7IC8vIFl1aywgYnV0IHByYWN0aWNhbGx5IGxpbWl0bGVzcw0KCQkJCSRpbnRlcnZh bCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJG1v bnRoLDEpKSwgJGludGVydmFsKTsNCgkJCQkkaW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgiP3ll YXIiLCAkeWVhciwgJGludGVydmFsKTsNCgkJCQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgImxh c3QiKSA9PT0gMCkgew0KCQkJCQkkaW50ZXJ2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0 b3RpbWUoJGludGVydmFsLCBta3RpbWUoMTIsIDAsIDAsIGRhdGUoIm4iLG1rdGltZSgwLDAs MCwkbW9udGgsMSwkeWVhcikpKzEsIDEsICR5ZWFyKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAx Ow0KCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRpbnRlcnZhbCwgImZpcnN0IikgPT09IDApIHsN CgkJCQkJJGludGVydmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCRpbnRlcnZh bCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRtb250aD4xKSA/ICRtb250aC0xIDogMTIpLCBkYXRl KCJ0Iixta3RpbWUoMCwwLDAsJG1vbnRoLTEsMSwoKCRtb250aD09MSkgPyAkeWVhci0xOiAk eWVhcikpKSwgKCgkbW9udGg9PTEpID8gJHllYXItMTogJHllYXIpKSkpOw0KCQkJCQkkbWF4 X2xvb3AgPSAxOw0KCQkJCX0NCgkJCQkkdHNfbG9vcCA9IDA7DQoJCQkJJHRzX2N1cnIgPSAk c3RhcnQ7DQoJCQkJd2hpbGUgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfbG9vcCA8ICRtYXhf bG9vcCkgew0KCQkJCQlpZiAoJG1heF9sb29wID09IDEpIHsNCgkJCQkJCSR0c19jdXJyID0g c3RydG90aW1lKCRpbnRlcnZhbCk7DQoJCQkJCQkkdHNfY3VyciA9ICgkdHNfY3VyciA8ICRz dGFydCB8fCAkdHNfY3VyciA+ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1cnI7DQoJCQkJCX0g ZWxzZSB7DQoJCQkJCQkkdHNfY3VyciA9IHN0cnRvdGltZSgkaW50ZXJ2YWwsICR0c19jdXJy KTsNCgkJCQkJfQ0KCQkJCQlpZiAoJHRzX2N1cnIgPT09IGZhbHNlKSB7DQoJCQkJCQkkdHNf bG9vcCsrOw0KCQkJCQkJYnJlYWs7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlpZiAoJGRlYnVn ID4gMSkgew0KCQkJCQkJCWRtcCgiSU5URVJWQUw6ICIuIGRhdGUoJ2QtTS1ZIEg6aTpzJywg JHRzX2N1cnIpKTsNCgkJCQkJCX0NCgkJCQkJCWlmICgkdHNfY3VyciA8ICRlbmQgJiYgJHRz X2N1cnIgPj0gJHRzX2ZpcnN0ICYmICR0c19jdXJyICE9ICRzdGFydCkgew0KCQkJCQkJCS8v IEEgcmVjdXJyaW5nIGV2ZW50LiBDaGVjayBpdCBpc24ndCBhIGhvbGlkYXkgb3IgdG8gYmUg aWdub3JlZA0KCQkJCQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkJCQkJJG9w ID0gJyc7DQoJCQkJCQkJJGlkeCA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRzX2N1cnIpOw0K CQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cic7DQoJCQkJCQkJJHRoaXNkYXRlID0g ZGF0ZSgiZC1NLVkiLCAkdHNfY3Vycik7DQoJCQkJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgk dGhpc2RhdGUsICRvbWl0KTsNCgkJCQkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2Rh dGUsICRpZ25vcmUpOw0KCQkJCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAk aG9saWRheXMpOw0KCQkJCQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXko J3JlY3VyJywkaG9saWRheWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCQkJCWlmICgg JG9taXRfbWUgKSB7DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQkJ CQl9DQoJCQkJCQkJaWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9t ZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQkJCQkJfQ0K CQkJCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCQkJCQkJJGNm bGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJCQkJfQ0KDQoJCQkJCQkJLy8gQ3Jl YXRlIHRoZSBldmVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0IG9ubHkgaWYgdGhl eSd2ZSBub3QgYXBwZWFyZWQgYmVmb3JlLCBvciBhcmUgdG8gYmUgaWdub3JlZC9vbWl0dGVk DQoJCQkJCQkJaWYgKCEkb21pdF9tZSkgew0KCQkJCQkJCQlpZiAoKCRzaG93X21lICYmICRz aG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCQkkc21kX2RheSA9ICRpZHg7 DQoJCQkJCQkJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdHNfY3Vycik7DQoJCQkJ CQkJCQkkb3AgPSAoJHJlY3VyZm9ybSkgPyBwYXJzZV9mb3JtKCRyZWN1cmZvcm0pIDogKCgk dGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVm KCRyb3dbJ1RpdGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1Rp dGxlJ10uJyInKSkgKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkkdXNlZCA9IGFy cmF5KCk7DQoJCQkJCQkJaWYgKGlzc2V0KCRldmVudHNbJGlkeF0pICYmICRldmVudHNbJGlk eF0gIT0gTlVMTCkgew0KCQkJCQkJCQlmb3JlYWNoICgkZXZlbnRzWyRpZHhdIGFzICRldikg ew0KCQkJCQkJCQkJJHVzZWRbXSA9ICRldlsnZXYnXTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0N CgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSA9PSBO VUxMIHx8ICFpbl9hcnJheSgkb3AsICR1c2VkKSkgew0KCQkJCQkJCQkkZXZlbnRzWyRpZHhd W10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFz c2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRf Y2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7 DQoJCQkJCQkJfQ0KCQkJCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2NhbF91 Y2xzID0gYXJyYXkoKTsNCgkJCQkJCX0NCgkJCQkJCSR0c19sb29wKys7DQoJCQkJCX0NCgkJ CQl9DQoJCQl9DQoJCX0gZWxzZSBpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSkgew0KCQkJ Ly8gTm9uLXJlY3VycmluZyBldmVudHMgbWF5IHNwYW4gbW9yZSB0aGFuIG9uZSBkYXRlIGJ1 dCB0aGV5IG11c3Qgc3RpbGwgcmVzcGVjdCBpZ25vcmVkIGRhdGVzIGFuZCBob2xpZGF5cw0K CQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJCSRsYXN0ZGF5ID0gKGludClzdHJm dGltZSgnJWQnLCAkZW5kKTsNCgkJCSRyZWFsX2xhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCcl ZCcsICRyZWFsX2VuZCk7DQoJCQl3aGlsZSAoKyskaWR4IDw9ICRsYXN0ZGF5KSB7DQoJCQkJ JG9wID0gJyc7DQoJCQkJJG11bHRpZmxhZyA9ICgkaWR4PT0kcmVhbF9sYXN0ZGF5KSA/ICdt dWx0aWxhc3QnIDogKCgkaWR4PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRpJyk7DQoJCQkJ JHNtZF9jYWxfZmxhZ1tdID0gJG11bHRpZmxhZzsNCgkJCQkkdGhpc3RpbWUgPSBnbW1rdGlt ZSgwLCAwLCAwLCAkbW9udGgsICRpZHgsICR5ZWFyKTsNCgkJCQkkdGhpc2RhdGUgPSBkYXRl KCJkLU0tWSIsICR0aGlzdGltZSk7DQoJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2Rh dGUsICRvbWl0KTsNCgkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25v cmUpOw0KCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9saWRheXMpOw0K CQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ211bHRpJywkaG9saWRh eWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJ CSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQl9DQoJCQkJaWYgKCAoISRzaG93X21l IHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9jYWxfZmxhZ1td ID0gJ2NhbmNlbCc7DQoJCQkJfQ0KCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0 ZW0pIHsNCgkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJfQ0KCQkJ CS8vIENyZWF0ZSB0aGUgc3Bhbm5lZCBldmVudCB0aGF0IGFwcGVhcnMgaW4gdGhlIGNlbGwN CgkJCQlpZiAoISRvbWl0X21lKSB7DQoJCQkJCWlmICggKCRzaG93X21lICYmICRzaG93X2hv bCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkkc21kX2RheSA9ICRpZHg7DQoJCQkJCQkk c21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdGhpc3RpbWUpOw0KCQkJCQkJJG9wID0gKCRz cGFuZm9ybSkgPyBwYXJzZV9mb3JtKCRzcGFuZm9ybSkgOiAoKCR0aGluZykgPyBwYXJzZSgk dGhpbmcpIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJyZyYXJyOycsIHBlcm1s aW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyInKSkgKTsNCgkJCQkJ fQ0KCQkJCX0NCgkJCQkkZXZlbnRzWyRpZHhdW10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2Zs YWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcg JyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2Vz LCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7DQoJCQkJJHNtZF9jYWxfZmxhZyA9ICRjZmxh ZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJfQ0KCQl9DQoJfQ0KCWFydGljbGVf cG9wKCk7DQoNCgkvLyBHZW5lcmF0ZSB0aGUgY2FsZW5kYXINCglpZiggJHNpemUgPT0gInNt YWxsIiApIHsNCgkJJGNhbGVuZGFyID0gbmV3IFNNRF9TbWFsbF9DYWxlbmRhcigkeWVhciwg JG1vbnRoLCAkZXZlbnRzLCAkc2VjdGlvbiwgJGNhdGVnb3J5KTsNCgl9IGVsc2Ugew0KCQkk Y2FsZW5kYXIgPSBuZXcgU01EX0NhbGVuZGFyKCR5ZWFyLCAkbW9udGgsICRldmVudHMpOw0K CX0NCgkkY2FsZW5kYXItPnNldFdlZWsoJHdlZWspOw0KCSRjYWxlbmRhci0+c2V0R01UKCRn bXQpOw0KCSRjYWxlbmRhci0+c2V0TGFuZygkbGFuZyk7DQoJJGNhbGVuZGFyLT5zZXRDbGFz c0xldmVscygkY2xldnMpOw0KCSRjYWxlbmRhci0+c2V0Q2xhc3NQcmVmaXgoJGNsYXNzcHJl Zml4KTsNCgkkY2FsZW5kYXItPnNldEV2ZW50UHJlZml4KCRldmNsYXNzcHJlZml4KTsNCgkk Y2FsZW5kYXItPnNldEV2ZW50V3JhcHRhZygkZXZlbnR3cmFwdGFnKTsNCgkkY2FsZW5kYXIt PnNldENlbGxGb3JtKCRjZWxsZm9ybSk7DQoJJGNhbGVuZGFyLT5zZXRNWVdyYXB0YWcoJG15 d3JhcHRhZyk7DQoJJGNhbGVuZGFyLT5zZXRUYWJsZUlEKCRpZCk7DQoJJGNhbGVuZGFyLT5z ZXRUYWJsZUNsYXNzKCRjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRSb3dDbGFzcygkcm93Y2xh c3MpOw0KCSRjYWxlbmRhci0+c2V0Q2VsbENsYXNzKCRjZWxsY2xhc3MpOw0KCSRjYWxlbmRh ci0+c2V0RW1wdHlDbGFzcygkZW1wdHljbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRJU09XZWVr Q2xhc3MoJGlzb3dlZWtjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXROYXZJbmZvKCRuYXZwY2xh c3MsJG5hdm5jbGFzcywkbmF2cGFyciwkbmF2bmFyciwkbmF2aWQpOw0KCSRjYWxlbmRhci0+ c2V0TmF2S2VlcCgkbWFpbnRhaW4pOw0KCSRjYWxlbmRhci0+c2V0TVlDbGFzcygkbXljbGFz cyk7DQoJJGNhbGVuZGFyLT5zZXROYW1lRm9ybWF0KCRkYXlmb3JtYXQsICJkIik7DQoJJGNh bGVuZGFyLT5zZXROYW1lRm9ybWF0KCRtb250aGZvcm1hdCwgIm0iKTsNCgkkY2FsZW5kYXIt PnNldFNob3dJU09XZWVrKCRpc293ZWVrcyk7DQoJJGNhbGVuZGFyLT5zZXRFWWVhcigkZWFy bGllc3QpOw0KCSRjYWxlbmRhci0+c2V0TFllYXIoJGxhdGVzdCk7DQoJJGNhbGVuZGFyLT5z ZXRGaWx0ZXJPcHRzKCRmb3B0cyk7DQoJJGNhbGVuZGFyLT5zZXRIb2xpZGF5cygkaG9saWRh eXMpOw0KCSRjYWxlbmRhci0+c2V0U2VsZWN0b3JzKGRvX2xpc3QoJHNlbGVjdCksICRzZWxl Y3RidG4pOw0KCSRjYWxlbmRhci0+c2V0Rmlyc3REYXlPZldlZWsoJGZpcnN0ZGF5KTsNCgkk Y2FsZW5kYXItPnNldExpbmtQb3N0ZWQoJGxpbmtwb3N0ZWQpOw0KDQoJcmV0dXJuICRjYWxl bmRhci0+ZGlzcGxheSgkc3RhdGljLCAkZnV0dXJlKTsNCn0NCg0KY2xhc3MgU01EX0NhbGVu ZGFyIGV4dGVuZHMgU01EX1Jhd19DYWxlbmRhciB7DQoJLy8gT3ZlcnJpZGUgQ29uc3RydWN0 b3INCgkvLyBQZXJtaXRzIG11bHRpcGxlIGV2ZW50cyB0byBzaG93IHBlciBkYXkNCglmdW5j dGlvbiBTTURfQ2FsZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpIHsNCgkJJHRoaXMtPmV2 ZW50cyA9ICRldmVudHM7DQoJCSR0aGlzLT5TTURfUmF3X0NhbGVuZGFyKCR5ZWFyLCRtb250 aCk7DQoJfQ0KDQoJLy8gT3ZlcnJpZGUgZHNwRGF5Q2VsbCB0byBkaXNwbGF5IHN0dWZmIHJp Z2h0DQoJZnVuY3Rpb24gZHNwRGF5Q2VsbCgkdGhlZGF5KSB7DQoJCWdsb2JhbCAkc21kX2Nh bF9mbGFnLCAkc21kX2NhbF9pZCwgJHNtZF9jYWxfdWNscywgJHNtZF95ZWFyLCAkc21kX21v bnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0KDQoJCSRzbWRfY2FsX2ZsYWcgPSAkc21kX2Nh bF91Y2xzID0gYXJyYXkoKTsNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRz WyR0aGVkYXldKTsNCgkJJHRoZWRhdGUgPSBnbW1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9u dGgsICR0aGVkYXksICR0aGlzLT55ZWFyKTsNCgkJJGhvbF9oaXQgPSBpbl9hcnJheShkYXRl KCJkLU0tWSIsICR0aGVkYXRlKSwgJHRoaXMtPmhvbGlkYXlzKTsNCgkJaWYgKCRoYXNhcnRp Y2xlKSB7DQoJCQkkc21kX2NhbF9mbGFnW10gPSAnZXZlbnQnOw0KCQl9DQoJCWlmICgkaG9s X2hpdCkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2hvbHMnOw0KCQl9DQoJCSRjZmxhZyA9 IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCSRj ZmxhZ1tdID0gJHRoaXMtPmNsYXNzcHJlZml4LiRpdGVtOw0KCQl9DQoJCSR0ZGNsYXNzID0g JHRoaXMtPmNlbGxjbGFzcyAuICgoJGNmbGFnKSA/ICcgJy5qb2luKCcgJywgJGNmbGFnKSA6 ICcnKTsNCgkJJHJ1bm5pbmdjbGFzcyA9IChpbl9hcnJheSgiY2VsbCIsICR0aGlzLT5jbGFz c2xldmVscykgfHwgaW5fYXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkg PyBleHBsb2RlKCcgJywgJHRkY2xhc3MpIDogYXJyYXkoKTsNCgkJaWYoJHRoaXMtPnllYXIg PT0gZGF0ZSgnWScsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBk YXRlKCduJyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0 aW1lKCkrdHpfb2Zmc2V0KCkpICkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3RvZGF5JzsN CgkJCSRydW5uaW5nY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZpeC4ndG9kYXknOw0KCQl9 DQoNCgkJJG91dCA9ICRmbGFncyA9IGFycmF5KCk7DQoJCWlmIChlbXB0eSgkdGhpcy0+Y2Vs bGZvcm0pKSB7DQoJCQkkb3V0W10gPSBoZWQoJHRoZWRheSw0KTsNCgkJfQ0KCQlpZiggaXNz ZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVudHMgPSAkdGhp cy0+ZXZlbnRzWyR0aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMgYXMgJGV2KSB7 DQoJCQkJJGV2Y2xhc3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQkkZmxhZ3MgPSBh cnJheV9tZXJnZSgkZmxhZ3MsICRldlsnZmxhZyddKTsNCgkJCQlpZiAoaW5fYXJyYXkoImNl bGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgew0KCQkJCQlmb3JlYWNoIChleHBsb2Rl KCcgJywgJGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJCSRydW5uaW5nY2xhc3NbXT0gJGV2 YzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3JhcHRhZykgPyB0 YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzICYmIGluX2FycmF5 KCJldmVudCIsICR0aGlzLT5jbGFzc2xldmVscykpID8gJyBjbGFzcz0iJy4kZXZjbGFzcy4n IicgOiAnJykpIDogJGV2WydldiddOw0KCQkJfQ0KCQl9DQoJCSRydW5uaW5nY2xhc3MgPSBh cnJheV91bmlxdWUoJHJ1bm5pbmdjbGFzcyk7DQoJCWlmIChpbl9hcnJheSgiY2VsbHBsdXMi LCAkdGhpcy0+Y2xhc3NsZXZlbHMpKSB7DQoJCQkkc21kX2NhbF9mbGFnID0gYXJyYXlfbWVy Z2UoJHNtZF9jYWxfZmxhZywgJGZsYWdzKTsNCgkJfQ0KDQoJCWlmICgkdGhpcy0+Y2VsbGZv cm0pIHsNCgkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICR0aGlzLT5tb250aCwg JHRoZWRheSwgJHRoaXMtPnllYXIpOw0KCQkJJHNtZF9jYWxfaWQgPSAkdGhpcy0+dGFibGVJ RDsNCgkJCSRzbWRfeWVhciA9ICR0aGlzLT55ZWFyOw0KCQkJJHNtZF9tb250aCA9ICR0aGlz LT5tb250aDsNCgkJCSRzbWRfd2VlayA9IHN0cmZ0aW1lKCIlViIsICR0aGlzdGltZSk7DQoJ CQkkc21kX2RheSA9ICR0aGVkYXk7DQoJCQkkcmVwcyA9IGFycmF5KA0KCQkJCSd7ZXZlbnRz fScgPT4gam9pbignJywkb3V0KSwNCgkJCQkne2RheX0nID0+ICR0aGVkYXksDQoJCQkJJ3t3 ZWVrZGF5fScgPT4gKChpc19hcnJheSgkdGhpcy0+ZGF5TmFtZUZtdCkpID8gJHRoaXMtPmRh eU5hbWVzW2RhdGUoJ3cnLCR0aGlzdGltZSldIDogc3RyZnRpbWUoJHRoaXMtPmRheU5hbWVG bXQsICR0aGlzdGltZSkpLA0KCQkJCSd7d2Vla30nID0+ICRzbWRfd2VlaywNCgkJCQkne21v bnRofScgPT4gJHRoaXMtPm1vbnRoLA0KCQkJCSd7bW9udGhuYW1lfScgPT4gc3RyZnRpbWUo JHRoaXMtPm10aE5hbWVGbXQsICR0aGlzdGltZSksDQoJCQkJJ3t5ZWFyfScgPT4gJHRoaXMt PnllYXIsDQoJCQkJJ3tzaG9ydHllYXJ9JyA9PiBzdHJmdGltZSgiJWciLCAkdGhpc3RpbWUp LA0KCQkJKTsNCgkJCSRjZWxsb3V0ID0gcGFyc2Uoc3RydHIoJHRoaXMtPmNlbGxmb3JtLCAk cmVwcykpOw0KCQkJJGNhcnJheSA9IGFycmF5X21lcmdlKCRydW5uaW5nY2xhc3MsICRzbWRf Y2FsX3VjbHMpOw0KCQkJJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoNCgkJCXJldHVybiBk b1RhZygkY2VsbG91dCwndGQnLGpvaW4oJyAnLCRjYXJyYXkpKTsNCgkJfSBlbHNlIHsNCgkJ CS8vIEFtYWxnYW1hdGUgdGhlIGV2ZW50LWxldmVsIGNsYXNzZXMgYW5kIGNlbGwtbGV2ZWwg Y2xhc3NlcywgaWYgcmVxdWlyZWQNCgkJCXJldHVybiBkb1RhZyhqb2luKCcnLCRvdXQpLCd0 ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gZGlz cGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7DQoJCSRpZCA9ICgkdGhpcy0+ dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0KCQkkY1tdID0g JHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsNCgkJJGNbXSA9ICR0aGlzLT5k c3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNlbGxzKCk7DQoNCgkJcmV0 dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMtPnRhYmxlY2xhc3MsJGlkKTsN Cgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywgJGZ1dHVyZSkgew0KCQlnbG9i YWwgJHByZXRleHQsICRzbWRfd2VlazsNCg0KCQkkY3Vycm1vID0gJHRoaXMtPm1vbnRoOw0K CQkkY3VycnlyID0gJHRoaXMtPnllYXI7DQoJCSRuYXZwY2xhc3MgPSAkdGhpcy0+Z2V0TmF2 SW5mbygicGMiKTsNCgkJJG5hdm5jbGFzcyA9ICR0aGlzLT5nZXROYXZJbmZvKCJuYyIpOw0K CQkkbmF2cGFycm93ID0gJHRoaXMtPmdldE5hdkluZm8oInBhIik7DQoJCSRuYXZuYXJyb3cg PSAkdGhpcy0+Z2V0TmF2SW5mbygibmEiKTsNCgkJJG5hdmlkID0gJHRoaXMtPmdldE5hdklu Zm8oImlkIik7DQoJCSRuYXZwY2xhc3MgPSAoJG5hdnBjbGFzcykgPyAnIGNsYXNzPSInLiRu YXZwY2xhc3MuJyInIDogJyc7DQoJCSRuYXZuY2xhc3MgPSAoJG5hdm5jbGFzcykgPyAnIGNs YXNzPSInLiRuYXZuY2xhc3MuJyInIDogJyc7DQoJCSRmb3B0cyA9ICR0aGlzLT5mb3B0czsN CgkJZm9yZWFjaCAoJHRoaXMtPm1haW50YWluIGFzICRjb2wpIHsNCgkJCXN3aXRjaCAoJGNv bCkgew0KCQkJCWNhc2UgInNlY3Rpb24iOg0KCQkJCQlpZiAoJHByZXRleHRbJ3MnXSkgew0K CQkJCQkJJGZvcHRzID0gYXJyYXkoJ3MnID0+ICRwcmV0ZXh0WydzJ10pICsgJGZvcHRzOw0K CQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImFydGljbGUiOg0KCQkJCQlpZiAoJHBy ZXRleHRbJ2lkJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdpZCcgPT4gJHByZXRleHRb J2lkJ10pICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVn b3J5IjoNCgkJCQkJaWYgKCRwcmV0ZXh0WydjJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5 KCdjJyA9PiAkcHJldGV4dFsnYyddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsN CgkJCQljYXNlICJhdXRob3IiOg0KCQkJCQlpZiAoZ3BzKCdhdXRob3InKSkgew0KCQkJCQkJ JGZvcHRzID0gYXJyYXkoJ2F1dGhvcicgPT4gZ3BzKCdhdXRob3InKSkgKyAkZm9wdHM7DQoJ CQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAicGciOg0KCQkJCQlpZiAoJHByZXRleHRb J3BnJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdwZycgPT4gJHByZXRleHRbJ3BnJ10p ICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhbGlkIjoNCgkJ CQkJaWYgKCR0aGlzLT50YWJsZUlEKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnY2FsaWQn ID0+ICR0aGlzLT50YWJsZUlEKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJ CQlkZWZhdWx0Og0KCQkJCQlpZiAoZ3BzKCRjb2wpKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJh eSgkY29sID0+IGdwcygkY29sKSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJ CQl9DQoJCX0NCgkJJGZvcHRzID0gYXJyYXlfdW5pcXVlKCRmb3B0cyk7DQoJCSRmaWx0ZXJz ID0gYXJyYXkoKTsNCgkJJGZpbHRlckhpZCA9IGFycmF5KCk7DQoJCWlmICghJHN0YXRpYykg ew0KCQkJZm9yZWFjaCgkZm9wdHMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGZpbHRlcnNb XSA9ICRrZXkuJz0nLiR2YWw7DQoJCQkJJGZpbHRlckhpZFtdID0gaElucHV0KCRrZXksICR2 YWwpOw0KCQkJfQ0KCQl9DQoJCSRmaWx0ZXJVUkwgPSBqb2luKGEsICRmaWx0ZXJzKTsNCg0K CQkvLyBXZWVrIHNlbGVjdCBsaXN0DQoJCWlmICgkdGhpcy0+dXNlU2VsZWN0b3IoJ3dlZWsn KSAmJiAhJHN0YXRpYykgew0KCQkJJGN1cnJ3ayA9ICgkdGhpcy0+d2VlaykgPyAkdGhpcy0+ d2VlayA6IGRhdGUoJ1cnLCBzdHJ0b3RpbWUoICRjdXJyeXIuIi0iLiRjdXJybW8uIi0xIDEy OjAwIiApKTsNCgkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDUyOyAkaWR4KysgKSB7DQoJ CQkJJHRhZ2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOw0KCQkJCWlmICggJGlkeCA9PSAk Y3VycndrICkgJHRhZ2F0dHMgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkkb3B0 aW9udGFnc1tdID0gZG9UYWcoc3RyX3BhZCgkaWR4LCAyLCAnMCcsIFNUUl9QQURfTEVGVCks ICdvcHRpb24nLCAnJywgJHRhZ2F0dHMpOw0KCQkJfQ0KCQkJJHNlbGVjdG9yW10gPSBkb1Rh Zyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcsICgoJHRoaXMtPm15d3JhcHRhZykg PyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSJ3IicuKCgkdGhpcy0+c2VsYnRuKSA/ ICcnIDogJyBvbmNoYW5nZT0ic3VibWl0KCkiJyksICcnKQ0KICAgCQkJCS4gKCgkdGhpcy0+ dXNlU2VsZWN0b3IoJ3llYXInKSkgPyAnJyA6IGhJbnB1dCgneScsICRjdXJyeXIpKTsNCgkJ CSRvcHRpb250YWdzID0gYXJyYXkoKTsgLy8gQmxhbmsgb3V0DQoJCX0NCg0KCQkvLyBNb250 aCBzZWxlY3QgbGlzdCAtIG5vdGUgbWt0aW1lIGhhcyB0aGUgZGF5IGZvcmNlZCB0byAxLiBJ ZiBub3QgeW91IGdldA0KCQkvLyBiaXphcnJlIHJlcGVhdGVkIG1vbnRoIG5hbWVzIG9uIHRo ZSAzMXN0IG9mIHNvbWUgbW9udGhzIDotXA0KCQlpZiAoISR0aGlzLT51c2VTZWxlY3Rvcign d2VlaycpKSB7DQoJCQlpZiAoJHRoaXMtPnVzZVNlbGVjdG9yKCdtb250aCcpICYmICEkc3Rh dGljKSB7DQoJCQkJZm9yICggJGlkeCA9IDE7ICRpZHggPD0gMTI7ICRpZHgrKyApIHsNCgkJ CQkJJHRhZ2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOw0KCQkJCQlpZiAoICRpZHggPT0g JGN1cnJtbyApICR0YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7DQoJCQkJCSRv cHRpb250YWdzW10gPSBkb1RhZyhzdHJmdGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgZ21ta3Rp bWUoMTIsMCwwLCRpZHgsMSkpLCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCQl9DQoJ CQkJJHNlbGVjdG9yW10gPSBkb1RhZyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcs ICgoJHRoaXMtPm15d3JhcHRhZykgPyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSJt IicuKCgkdGhpcy0+c2VsYnRuKSA/ICcnIDogJyBvbmNoYW5nZT0ic3VibWl0KCkiJyksICcn KQ0KCSAgIAkJCQkuICgoJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5w dXQoJ3knLCAkY3VycnlyKSk7DQoJCQkJJG9wdGlvbnRhZ3MgPSBhcnJheSgpOyAvLyBCbGFu ayBvdXQNCgkJCX0gZWxzZSB7DQoJCQkJJHNlbGVjdG9yW10gPSBkb1RhZygkdGhpcy0+Z2V0 TW9udGhOYW1lKCksICdzcGFuJywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMt Pm15Y2xhc3MpKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFllYXIgc2VsZWN0IGxpc3QNCgkJJHkw ID0gJHRoaXMtPmV5cjsNCgkJJHkxID0gJHRoaXMtPmx5cjsNCgkJaWYgKCR0aGlzLT51c2VT ZWxlY3RvcigneWVhcicpICYmICgkeTAgIT0gJHkxKSAmJiAhJHN0YXRpYykgew0KCQkJZm9y ICggJGlkeCA9ICR5MDsgJGlkeCA8PSAkeTE7ICRpZHgrKyApIHsNCgkJCQkkdGFnYXR0cyA9 ICcgdmFsdWU9IicuJGlkeC4nIic7DQoJCQkJaWYgKCAkaWR4ID09ICRjdXJyeXIgKSAkdGFn YXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KCQkJCSRvcHRpb250YWdzW10gPSBk b1RhZygkaWR4LCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3Rv cltdID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5t eXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0ieSInLigoJHRoaXMt PnNlbGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCgkJCQkJLiAo KCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgnKSkgPyAnJyA6IGhJbnB1dCgnbScsICRjdXJy bW8pKTsNCgkJfSBlbHNlIHsNCgkJCSRzZWxlY3RvcltdID0gZG9UYWcoJGN1cnJ5ciwgJ3Nw YW4nLCAoKCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcykpOw0KCQl9 DQoNCgkJJGV4dHJhcyA9ICcnOw0KCQlpZiAoISRzdGF0aWMgJiYgKCAkdGhpcy0+dXNlU2Vs ZWN0b3IoJ21vbnRoJykgfHwgJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykgKSkgew0KCQkJ aWYgKCR0aGlzLT5zZWxidG4pIHsNCgkJCQkkZXh0cmFzIC49IGRvVGFnKCcnLCAnaW5wdXQn LCAnc21kX2NhbF9pbnB1dCcsICcgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJy4kdGhpcy0+c2Vs YnRuLiciJyk7DQoJCQl9DQoJCQkkZXh0cmFzIC49IGpvaW4oJycsICRmaWx0ZXJIaWQpOw0K CQl9DQoNCgkJJHVybHAgPSBwYXJzZV91cmwoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10pOw0K CQkkc2VsZWN0b3IgPSAnPGZvcm0gYWN0aW9uPSInLiR1cmxwWydwYXRoJ10uJyIgbWV0aG9k PSJnZXQiJy4oKCRuYXZpZCkgPyAnIGlkPSInLiRuYXZpZC4nIicgOiAnJykuJz4nLmRvVGFn KGpvaW4oc3AsICRzZWxlY3RvcikuJGV4dHJhcywgJHRoaXMtPm15d3JhcHRhZywgJHRoaXMt Pm15Y2xhc3MpLic8L2Zvcm0+JzsNCg0KCQkkbmF2X2JhY2tfbGluayA9ICR0aGlzLT5uYXZp Z2F0aW9uKCR0aGlzLT55ZWFyLCAkdGhpcy0+bW9udGgsICctJywgJGZpbHRlclVSTCk7DQoJ CSRuYXZfZndkX2xpbmsgID0gJHRoaXMtPm5hdmlnYXRpb24oJHRoaXMtPnllYXIsICR0aGlz LT5tb250aCwgJysnLCAkZmlsdGVyVVJMKTsNCg0KCQkkbmF2X2JhY2sgPSAoISRzdGF0aWMg JiYgJG5hdl9iYWNrX2xpbmspID8gJzxhIGhyZWY9IicuJG5hdl9iYWNrX2xpbmsuJyInLiRu YXZwY2xhc3MuJz4nLiRuYXZwYXJyb3cuJzwvYT4nIDogJyZuYnNwOyc7DQoJCSRuYXZfZndk ICA9ICghJHN0YXRpYyAmJiAkZnV0dXJlICYmICRuYXZfZndkX2xpbmspID8gJzxhIGhyZWY9 IicuJG5hdl9md2RfbGluay4nIicuJG5hdm5jbGFzcy4nPicuJG5hdm5hcnJvdy4nPC9hPicg OiAnJm5ic3A7JzsNCg0KCQkkY1tdID0gZG9UYWcoJG5hdl9iYWNrLCd0aCcpOw0KCQkkY1td ID0gJzx0aCBjb2xzcGFuPSInLigoJHRoaXMtPnNob3dJU09XZWVrKSA/IDYgOiA1KS4nIj4n LiRzZWxlY3Rvci4nPC90aD4nOw0KCQkkY1tdID0gZG9UYWcoJG5hdl9md2QsJ3RoJyk7DQoN CgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0cicsICdzbWRfY2FsX25hdnJvdycpOw0K CX0NCg0KCWZ1bmN0aW9uIG5hdmlnYXRpb24oJHllYXIsJG1vbnRoLCRkaXJlY3Rpb24sJGZs dCkgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJaWYoJGRpcmVjdGlvbiA9PSAn LScpIHsNCgkJCWlmKCRtb250aCAtIDEgPCAxKSB7DQoJCQkJJG1vbnRoID0gMTI7DQoJCQkJ JHllYXIgLT0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG1vbnRoIC09IDE7DQoJCQl9DQoJCX0g ZWxzZSB7DQoJCQlpZigkbW9udGggKyAxID4gMTIpIHsNCgkJCQkkbW9udGggPSAxOw0KCQkJ CSR5ZWFyICs9IDE7DQoJCQl9IGVsc2Ugew0KCQkJCSRtb250aCArPSAxOw0KCQkJfQ0KCQl9 DQoNCgkJLy8gQWJvcnQgaWYgd2UncmUgYWJvdXQgdG8gZ28gb3V0IG9mIHJhbmdlDQoJCWlm ICgkeWVhciA8ICR0aGlzLT5leXIgfHwgJHllYXIgPiAkdGhpcy0+bHlyKSB7DQoJCQlyZXR1 cm4gJyc7DQoJCX0NCg0KCQlpZigkcGVybWxpbmtfbW9kZSAhPSAnbWVzc3knKSB7DQoJCQly ZXR1cm4gIj9tPSRtb250aCIuYS4ieT0keWVhciIuYS4kZmx0Ow0KCQl9IGVsc2UgeyAvLyBm b3IgbWVzc3kgVVJMJ3Mgd2UgbmVlZCB0byBidWlsZCB0aGUgZW50aXJlIHJlcXVlc3Qgc3Ry aW5nIGZpcnN0LCB0aGVuIHRhY2sgb24gdGhlIHJlc3QNCgkJCSRvdXQgPSBtYWtlT3V0KCdp ZCcsJ3MnLCdjJywncScsJ3BnJywncCcsJ21vbnRoJyk7DQoJCQkkciA9ICc/JzsNCgkJCWZv cmVhY2goJG91dCBhcyAka2V5ID0+ICR2YWwgKSB7DQoJCQkJJHIgLj0gKCR2YWwpID8gIiRr ZXk9JHZhbCIuYSA6ICcnOw0KCQkJfQ0KCQkJcmV0dXJuICRyLiJtPSRtb250aCIuYS4ieT0k eWVhciIuYS4kZmx0Ow0KCQl9DQoJfQ0KfQ0KDQpjbGFzcyBTTURfU21hbGxfQ2FsZW5kYXIg ZXh0ZW5kcyBTTURfQ2FsZW5kYXIgew0KCXZhciAkc2VjdGlvbiA9ICcnOw0KCXZhciAkY2F0 ZWdvcnkgPSAnJzsNCglmdW5jdGlvbiBTTURfU21hbGxfQ2FsZW5kYXIoJHllYXIsJG1vbnRo LCRldmVudHMsJHNlY3Rpb24sJGNhdGVnb3J5KSB7DQoJCSR0aGlzLT5zZWN0aW9uID0gJHNl Y3Rpb247DQoJCSR0aGlzLT5jYXRlZ29yeSA9ICRjYXRlZ29yeTsNCgkJJHRoaXMtPlNNRF9D YWxlbmRhcigkeWVhciwkbW9udGgsJGV2ZW50cyk7DQoJfQ0KDQoJZnVuY3Rpb24gZHNwRGF5 Q2VsbCgkdGhlZGF5KSB7DQoJCWdsb2JhbCAkcGVybWxpbmtfbW9kZTsNCg0KCQkkaGFzYXJ0 aWNsZSA9IGlzc2V0KCR0aGlzLT5ldmVudHNbJHRoZWRheV0pOw0KCQkkY2xhc3NbXSA9ICR0 aGlzLT5jZWxsY2xhc3MuJyAnIC4gKCgkaGFzYXJ0aWNsZSkgPyAkdGhpcy0+Y2xhc3NwcmVm aXguJ2V2ZW50JyA6ICcnKTsNCgkJaWYgKChpbl9hcnJheSggZGF0ZSgnZC1NLVknLCBnbW1r dGltZSggMCwgMCwgMCwgJHRoaXMtPm1vbnRoLCAkdGhlZGF5LCAkdGhpcy0+eWVhcikgKSwg JHRoaXMtPmhvbGlkYXlzKSkgKSB7DQoJCQkkY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZp eC4naG9scyc7DQoJCX0NCgkJaWYoJHRoaXMtPnllYXIgPT0gZGF0ZSgnWScsdGltZSgpK3R6 X29mZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBkYXRlKCduJyx0aW1lKCkrdHpfb2Zm c2V0KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0aW1lKCkrdHpfb2Zmc2V0KCkpICkg ew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXguJ3RvZGF5JzsNCgkJfQ0KDQoJ CWlmKCBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKSApIHsNCgkJCSRkYXlzX2V2ZW50 cyA9ICR0aGlzLT5ldmVudHNbJHRoZWRheV07DQoJCQlmb3JlYWNoKCRkYXlzX2V2ZW50cyBh cyAkZXYpIHsNCgkJCQkkZXZjbGFzcyA9IHRyaW0oJGV2WydjbGFzc2VzJ10pOw0KCQkJCWZv cmVhY2ggKGV4cGxvZGUoJyAnLCAkZXZjbGFzcykgYXMgJGV2Yykgew0KCQkJCQkkY2xhc3Nb XT0gJGV2YzsNCgkJCQl9DQoNCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3JhcHRhZykgPyB0 YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzKSA/ICcgY2xhc3M9 IicuJGV2Y2xhc3MuJyInIDogJycpKSA6ICRldlsnZXYnXTsNCgkJCX0NCgkJCSR1c2VfcG9z dGVkID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkdGhpcy0+bGlua3Bvc3RlZCBhcyAkZGxpbmtz KSB7DQoJCQkJaWYgKGluX2FycmF5KCRkbGlua3MsICRjbGFzcykpIHsNCgkJCQkJJHVzZV9w b3N0ZWQgPSB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCQlpZiggJHBlcm1s aW5rX21vZGUgIT0gJ3llYXJfbW9udGhfZGF5X3RpdGxlJyApIHsNCgkJCQkkbGlua2RhdGUg PSAoJHVzZV9wb3N0ZWQpID8gJGV2Wydwb3N0ZWQnXSA6ICR0aGlzLT55ZWFyLictJy4kdGhp cy0+ZG91YmxlZGlnaXQoJHRoaXMtPm1vbnRoKS4nLScuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0 aGVkYXkpOw0KCQkJCSRocmVmID0gJyBocmVmPSInLmh1Lic/ZGF0ZT0nLiRsaW5rZGF0ZTsN CgkJCQlpZigkdGhpcy0+c2VjdGlvbikgeyAkaHJlZiA9ICRocmVmLmEuJ3M9Jy4kdGhpcy0+ c2VjdGlvbjsgfQ0KCQkJCWlmKCR0aGlzLT5jYXRlZ29yeSkgeyAkaHJlZiA9ICRocmVmLmEu J2M9Jy4kdGhpcy0+Y2F0ZWdvcnk7IH0NCgkJCQkkaHJlZiAuPSAnIic7DQoJCQl9IGVsc2Ug ew0KCQkJCSRzZWN0aW9uID0gKCR0aGlzLT5zZWN0aW9uKSA/ICR0aGlzLT5zZWN0aW9uLicv JyA6ICcnOw0KCQkJCSRsaW5rZGF0ZSA9ICgkdXNlX3Bvc3RlZCkgPyBwcmVnX3JlcGxhY2Uo Ii0iLCAiLyIsICRldlsncG9zdGVkJ10pIDogJHRoaXMtPnllYXIuJy8nLiR0aGlzLT5kb3Vi bGVkaWdpdCgkdGhpcy0+bW9udGgpLicvJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRoZWRheSk7 DQoJCQkJJGhyZWYgPSAnIGhyZWY9IicuaHUuJHNlY3Rpb24uJGxpbmtkYXRlLiciJzsNCgkJ CX0NCg0KCQkJJGNbXSA9IGRvVGFnKCR0aGVkYXkuam9pbignJywkb3V0KSwnYScsJycsJGhy ZWYpOw0KCQl9IGVsc2Ugew0KCQkJJGNbXSA9ICR0aGVkYXk7DQoJCX0NCg0KCQlyZXR1cm4g ZG9UYWcoam9pbignJywkYyksJ3RkJyxqb2luKCcgJywkY2xhc3MpKTsNCgl9DQoNCglmdW5j dGlvbiBkb3VibGVkaWdpdCgkbikgew0KCQlpZigkbiA8IDEwKSB7ICRuID0gJzAnLihpbnQp JG47IH0NCgkJcmV0dXJuICRuOw0KCX0NCg0KfQ0KDQovKioNCiogQmFzaWMgQ2FsZW5kYXIg ZGF0YSBhbmQgZGlzcGxheQ0KKiBodHRwOi8vd3d3Lm9zY2FybS5vcmcvc3RhdGljL3BnL2Nh bGVuZGFyQ2xhc3MvDQoqIEBhdXRob3IgT3NjYXIgTWVyaWRhDQoqIEBjcmVhdGVkIEphbiAx OCAyMDA0DQoqIEBwYWNrYWdlICBnb0NvcmVMaWINCiovDQpjbGFzcyBTTURfUmF3X0NhbGVu ZGFyIHsNCnZhciAkZ210ID0gMTsNCnZhciAkbGFuZzsNCnZhciAkeWVhcjsNCnZhciAkZXly Ow0KdmFyICRseXI7DQp2YXIgJG1vbnRoOw0KdmFyICR3ZWVrOw0KdmFyICRkYXlOYW1lRm10 Ow0KdmFyICRtdGhOYW1lRm10Ow0KdmFyICRkYXlOYW1lczsNCnZhciAkc3RhcnREYXk7DQp2 YXIgJHNlbGVjdG9yczsNCnZhciAkc2VsYnRuOw0KdmFyICRzaG93SVNPV2VlazsNCnZhciAk SVNPV2Vla0hlYWQ7DQp2YXIgJElTT1dlZWtDZWxsOw0KdmFyICRlbmREYXk7DQp2YXIgJGZp cnN0RGF5T2ZXZWVrID0gMDsNCnZhciAkc3RhcnRPZmZzZXQgPSAwOw0KdmFyICRjbGFzc2xl dmVsczsNCnZhciAkY2xhc3NwcmVmaXg7DQp2YXIgJGV2Y2xhc3NwcmVmaXg7DQp2YXIgJGV2 d3JhcHRhZzsNCnZhciAkbXl3cmFwdGFnOw0KdmFyICRyb3djbGFzczsNCnZhciAkY2VsbGNs YXNzOw0KdmFyICRlbXB0eWNsYXNzOw0KdmFyICRpc29jbGFzczsNCnZhciAkbmF2cGNsYXNz Ow0KdmFyICRuYXZuY2xhc3M7DQp2YXIgJG5hdnBhcnJvdzsNCnZhciAkbmF2bmFycm93Ow0K dmFyICRuYXZpZDsNCnZhciAkbXljbGFzczsNCnZhciAkZm9wdHM7DQp2YXIgJGhvbGlkYXlz Ow0KdmFyICRsaW5rcG9zdGVkOw0KdmFyICRjZWxsZm9ybTsNCnZhciAkdGFibGVJRDsNCnZh ciAkbWFpbnRhaW47DQovKioNCiogQ29uc3RydWN0b3INCioNCiogQHBhcmFtIGludGVnZXIs IHllYXINCiogQHBhcmFtIGludGVnZXIsIG1vbnRoDQoqIEByZXR1cm4gb2JqZWN0DQoqIEBw dWJsaWMNCiovDQpmdW5jdGlvbiBTTURfUmF3X0NhbGVuZGFyICggJHlyLCAkbW8gKSB7DQoJ JHRoaXMtPnNldFllYXIoJHlyKTsNCgkkdGhpcy0+c2V0TW9udGgoJG1vKTsNCgkkdGhpcy0+ c2V0Q2xhc3NQcmVmaXgoJ3NtZF9jYWxfJyk7DQoNCgkkdGhpcy0+c3RhcnRUaW1lID0gc3Ry dG90aW1lKCAiJHlyLSRtby0wMSAwMDowMCIgKTsNCgkkdGhpcy0+c3RhcnREYXkJPSBkYXRl KCAnRCcsICR0aGlzLT5zdGFydFRpbWUgKTsNCgkkdGhpcy0+ZW5kRGF5ID0gZGF0ZSggJ3Qn LCAkdGhpcy0+c3RhcnRUaW1lICk7DQoJJHRoaXMtPmVuZFRpbWUgICA9IHN0cnRvdGltZSgg IiR5ci0kbW8tIi4kdGhpcy0+ZW5kRGF5LiIgMjM6NTkiICk7DQoNCgkkdGhpcy0+c2V0TmFt ZUZvcm1hdCgnJWEnLCAnZCcpOw0KCSR0aGlzLT5zZXROYW1lRm9ybWF0KCclQicsICdtJyk7 DQoJJHRoaXMtPnNldEZpcnN0RGF5T2ZXZWVrKDApOw0KCSR0aGlzLT5zZXRTaG93SVNPV2Vl aygnJyk7DQoJJHRoaXMtPnNldFRhYmxlSUQoJycpOw0KCSR0aGlzLT5zZXRUYWJsZUNsYXNz KCcnKTsNCn0NCi8vID09PT0gZW5kIENhbGVuZGFyID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLy8gR2V0dGVycw0KZnVuY3Rpb24gdXNlU2Vs ZWN0b3IoJHZhbCkgeyByZXR1cm4gaW5fYXJyYXkoJHZhbCwgJHRoaXMtPnNlbGVjdG9ycyk7 IH0NCmZ1bmN0aW9uIGdldERheU5hbWUoJGRheSkgeyByZXR1cm4gKCR0aGlzLT5kYXlOYW1l c1skZGF5JTddKTsgfQ0KZnVuY3Rpb24gZ2V0TW9udGhOYW1lKCkgeyByZXR1cm4gc3RyZnRp bWUoICR0aGlzLT5tdGhOYW1lRm10LCAkdGhpcy0+c3RhcnRUaW1lICk7IH0NCmZ1bmN0aW9u IGdldE5hdkluZm8oJHR5cGUpIHsNCgkkciA9ICcnOw0KCXN3aXRjaCAoJHR5cGUpIHsNCgkJ Y2FzZSAiaWQiOiAkciA9ICR0aGlzLT5uYXZpZDsgYnJlYWs7DQoJCWNhc2UgInBjIjogJHIg PSAkdGhpcy0+bmF2cGNsYXNzOyBicmVhazsNCgkJY2FzZSAibmMiOiAkciA9ICR0aGlzLT5u YXZuY2xhc3M7IGJyZWFrOw0KCQljYXNlICJwYSI6ICRyID0gJHRoaXMtPm5hdnBhcnJvdzsg YnJlYWs7DQoJCWNhc2UgIm5hIjogJHIgPSAkdGhpcy0+bmF2bmFycm93OyBicmVhazsNCgl9 DQoJcmV0dXJuICRyOw0KfQ0KLy8gU2V0dGVycw0KZnVuY3Rpb24gc2V0R01UKCRiKXsgJHRo aXMtPmdtdCA9ICRiOyB9DQpmdW5jdGlvbiBzZXRMYW5nKCRjb2RlKXsgJHRoaXMtPmxhbmcg PSAkY29kZTsgfQ0KZnVuY3Rpb24gc2V0Q2VsbEZvcm0oJGZybSl7ICR0aGlzLT5jZWxsZm9y bSA9ICRmcm07IH0NCmZ1bmN0aW9uIHNldFRhYmxlSUQoJGlkKXsgJHRoaXMtPnRhYmxlSUQg PSAkaWQ7IH0NCmZ1bmN0aW9uIHNldFllYXIoJHlyKXsgJHRoaXMtPnllYXIgPSAkeXI7IH0N CmZ1bmN0aW9uIHNldEVZZWFyKCR5cil7ICR0aGlzLT5leXIgPSAkeXI7IH0NCmZ1bmN0aW9u IHNldExZZWFyKCR5cil7ICR0aGlzLT5seXIgPSAkeXI7IH0NCmZ1bmN0aW9uIHNldE1vbnRo KCRtdGgpeyAkdGhpcy0+bW9udGggPSAoaW50KSRtdGg7IH0NCmZ1bmN0aW9uIHNldFdlZWso JHdrKXsNCglpZiAoJHdrKSB7DQoJCSR0aGlzLT53ZWVrID0gKGludCkkd2s7DQoJCSR0aGlz LT5tb250aCA9IHNhZmVfc3RyZnRpbWUoIiVtIiwgZ21ta3RpbWUgKDEsMSwxLDEsNyokd2ss JHRoaXMtPnllYXIpKTsNCgl9DQp9DQpmdW5jdGlvbiBzZXROYXZLZWVwKCRhcil7ICR0aGlz LT5tYWludGFpbiA9ICRhcjsgfQ0KZnVuY3Rpb24gc2V0U2hvd0lTT1dlZWsoJHZhbCkgew0K CSR0aGlzLT5zaG93SVNPV2VlayA9ICgkdmFsKSA/IHRydWUgOiBmYWxzZTsNCglpZiAoJHZh bCkgew0KCQkkdmFsID0gZG9fbGlzdCgkdmFsKTsNCgkJJHRoaXMtPklTT1dlZWtIZWFkID0g JHZhbFswXTsNCgkJJHRoaXMtPklTT1dlZWtDZWxsID0gKGlzc2V0KCR2YWxbMV0pKSA/ICR2 YWxbMV0gOiAne3dlZWt9JzsNCgl9DQp9DQpmdW5jdGlvbiBzZXRDbGFzc0xldmVscygkY2xz KXsgJHRoaXMtPmNsYXNzbGV2ZWxzID0gJGNsczsgfQ0KZnVuY3Rpb24gc2V0Q2xhc3NQcmVm aXgoJGNscyl7ICR0aGlzLT5jbGFzc3ByZWZpeCA9ICRjbHM7IH0NCmZ1bmN0aW9uIHNldEV2 ZW50UHJlZml4KCRjbHMpeyAkdGhpcy0+ZXZjbGFzc3ByZWZpeCA9ICRjbHM7IH0NCmZ1bmN0 aW9uIHNldEV2ZW50V3JhcHRhZygkd3JhcCl7ICR0aGlzLT5ldndyYXB0YWcgPSAkd3JhcDsg fQ0KZnVuY3Rpb24gc2V0TVlXcmFwdGFnKCR3cmFwKXsgJHRoaXMtPm15d3JhcHRhZyA9ICR3 cmFwOyB9DQpmdW5jdGlvbiBzZXRUYWJsZUNsYXNzKCRjbHMpIHsgJHRoaXMtPnRhYmxlY2xh c3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlv biBzZXRSb3dDbGFzcygkY2xzKXsgJHRoaXMtPnJvd2NsYXNzID0gKCRjbHMpID8gJHRoaXMt PmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Q2VsbENsYXNzKCRjbHMp eyAkdGhpcy0+Y2VsbGNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsYXNzcHJlZml4LiRjbHMg OiAnJzsgfQ0KZnVuY3Rpb24gc2V0RW1wdHlDbGFzcygkY2xzKXsgJHRoaXMtPmVtcHR5Y2xh c3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlv biBzZXRJU09XZWVrQ2xhc3MoJGNscyl7ICR0aGlzLT5pc29jbGFzcyA9ICgkY2xzKSA/ICR0 aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNldE5hdkluZm8oJGNs c3AsICRjbHNuLCAkYXJycCwgJGFycm4sICRuaWQpew0KCSR0aGlzLT5uYXZwY2xhc3MgPSAo JGNsc3ApID8gJHRoaXMtPmNsYXNzcHJlZml4LiRjbHNwIDogJyc7DQoJJHRoaXMtPm5hdm5j bGFzcyA9ICgkY2xzbikgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNsc24gOiAnJzsNCgkkdGhp cy0+bmF2cGFycm93ID0gKCRhcnJwKSA/ICRhcnJwIDogJyc7DQoJJHRoaXMtPm5hdm5hcnJv dyA9ICgkYXJybikgPyAkYXJybiA6ICcnOw0KCSR0aGlzLT5uYXZpZCA9ICgkbmlkKSA/ICR0 aGlzLT5jbGFzc3ByZWZpeC4kbmlkIDogJyc7DQp9DQpmdW5jdGlvbiBzZXRNWUNsYXNzKCRj bHMpeyAkdGhpcy0+bXljbGFzcyA9ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xz IDogJyc7IH0NCmZ1bmN0aW9uIHNldEZpbHRlck9wdHMoJGYpIHsgJHRoaXMtPmZvcHRzID0g JGY7IH0NCmZ1bmN0aW9uIHNldExpbmtQb3N0ZWQoJGRsKSB7DQoJZm9yZWFjaCAoJGRsIGFz ICRkdmFsKSB7DQoJCSR0aGlzLT5saW5rcG9zdGVkW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXgu JGR2YWw7DQoJfQ0KfQ0KZnVuY3Rpb24gc2V0SG9saWRheXMoJGhvbHMpIHsgJHRoaXMtPmhv bGlkYXlzID0gJGhvbHM7IH0NCmZ1bmN0aW9uIHNldFNlbGVjdG9ycygkc2VsLCAkYnRuKSB7 ICR0aGlzLT5zZWxlY3RvcnMgPSAkc2VsOyAkdGhpcy0+c2VsYnRuID0gJGJ0bjsgfQ0KZnVu Y3Rpb24gc2V0Rmlyc3REYXlPZldlZWsoJGQpIHsNCgkkdGhpcy0+Zmlyc3REYXlPZldlZWsg PSAoKGludCkkZCA8PSA2IGFuZCAoaW50KSRkID49IDApID8gKGludCkkZCA6IDA7DQoNCgkk dGhpcy0+c3RhcnRPZmZzZXQgPSBkYXRlKCAndycsICR0aGlzLT5zdGFydFRpbWUgKS0kdGhp cy0+Zmlyc3REYXlPZldlZWs7DQoJaWYgKCAkdGhpcy0+c3RhcnRPZmZzZXQgPCAwICkgew0K CQkkdGhpcy0+c3RhcnRPZmZzZXQgPSA3IC0gYWJzKCR0aGlzLT5zdGFydE9mZnNldCk7DQoJ fQ0KfQ0KLyoqDQoqIGZybTogYW55IHZhbGlkIFBIUCBzdHJmdGltZSgpIHN0cmluZyBvciBB QkJSL0ZVTEwNCiogdHlwOiBkIHRvIHNldCBkYXksIG0gdG8gc2V0IG1vbnRoIGZvcm1hdA0K Ki8NCmZ1bmN0aW9uIHNldE5hbWVGb3JtYXQoJGZybSwgJHR5cD0iZCIpIHsNCglzd2l0Y2gg KCRmcm0pIHsNCgkJY2FzZSAiRlVMTCI6DQoJCQkkZm10ID0gKCR0eXAgPT0gJ2QnKSA/ICIl QSIgOiAiJUIiOw0KCQkJYnJlYWs7DQoJCWNhc2UgIkFCQlIiOg0KCQkJJGZtdCA9ICgkdHlw ID09ICdkJykgPyAiJWEiIDogIiViIjsNCgkJCWJyZWFrOw0KCQlkZWZhdWx0Og0KCQkJaWYg KCR0eXAgPT0gJ2QnKSB7DQoJCQkJaWYgKHN0cnBvcygkZnJtLCAnJScpID09PSAwKSB7DQoJ CQkJCSRmbXQgPSAkZnJtOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRmcm0gPSB0cmltKCRmcm0s ICd7fScpOw0KCQkJCQkkZnJtID0gZG9fbGlzdCgkZnJtKTsNCgkJCQkJJGZtdCA9ICRmcm07 DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkZm10ID0gJGZybTsNCgkJCX0NCgkJCWJyZWFr Ow0KCX0NCg0KCWlmICgkdHlwID09ICJkIikgew0KCQkkdGhpcy0+ZGF5TmFtZUZtdCA9ICRm bXQ7DQoJCSR0aGlzLT5kYXlOYW1lcyA9IGFycmF5KCk7DQoNCgkJLy8gVGhpcyBpcyBkb25l IHRvIG1ha2Ugc3VyZSBTdW5kYXkgaXMgYWx3YXlzIHRoZSBmaXJzdCBkYXkgb2Ygb3VyIGFy cmF5DQoJCS8vIFVuaXggdGltZSBnZXRzIGEgbGl0dGxlIGZ1bmt5IGF0IHRoZSBiZWdpbm5p bmcgZGVwZW5kaW5nIHVwb24geW91ciB0aW1lem9uZS4NCgkJJHNlcnZlcm9mZnNldCA9IGdt bWt0aW1lKDAsMCwwKSAtIG1rdGltZSgwLDAsMCk7DQoJCSRzdGFydCA9ICgkc2VydmVyb2Zm c2V0IDwgMCkgPyA0IDogMzsNCgkJJGVuZCA9ICRzdGFydCArIDc7DQoJCWZvcigkaT0kc3Rh cnQ7ICRpPCRlbmQ7ICRpKyspIHsNCgkJCWlmIChpc19hcnJheSgkZm10KSkgew0KCQkJCSR0 aGlzLT5kYXlOYW1lc1tdID0gJGZtdFskaS0kc3RhcnRdOw0KCQkJfSBlbHNlIHsNCgkJCQkk dGhpcy0+ZGF5TmFtZXNbXSA9IHVjZmlyc3Qoc2FmZV9zdHJmdGltZSgkZm10LCA4NjQwMCok aSAtIHR6X29mZnNldCgpLCAkdGhpcy0+Z210LCAkdGhpcy0+bGFuZyApKTsNCgkJCX0NCgkJ fQ0KCX0gZWxzZSB7DQoJCSR0aGlzLT5tdGhOYW1lRm10ID0gJGZtdDsNCgl9DQp9DQovKioN CiogUmV0dXJucyBtYXJrdXAgZm9yIGRpc3BsYXlpbmcgdGhlIGNhbGVuZGFyLg0KKiBAcmV0 dXJuDQoqIEBwdWJsaWMNCiovDQpmdW5jdGlvbiBkaXNwbGF5ICggKSB7DQoJJGlkID0gKCR0 aGlzLT50YWJsZUlEKSA/ICcgaWQ9IicuJHRoaXMtPnRhYmxlSUQuJyInIDogJyc7DQoJJGNb XSA9ICc8dGFibGUnLiRpZC4nPic7DQoJJGNbXSA9ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0K CSRjW10gPSAkdGhpcy0+ZHNwRGF5Q2VsbHMoKTsNCgkkY1tdID0gJzwvdGFibGU+JzsNCg0K CXJldHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRpc3BsYXkgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovKioNCiogRGlzcGxh eXMgdGhlIHJvdyBvZiBkYXkgbmFtZXMuDQoqIEByZXR1cm4gc3RyaW5nDQoqIEBwcml2YXRl DQoqLw0KZnVuY3Rpb24gZHNwRGF5TmFtZXMgKCApIHsNCgkkY1tdID0gJzx0ciBjbGFzcz0i c21kX2NhbF9kYXluYW1lcyI+JzsNCg0KCSRpID0gJHRoaXMtPmZpcnN0RGF5T2ZXZWVrOw0K CSRqID0gMDsgLy8gY291bnQgbnVtYmVyIG9mIGRheXMgZGlzcGxheWVkDQoJJGVuZCA9IGZh bHNlOw0KDQoJaWYgKCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkkY1tdID0gIjx0aD4iLiR0 aGlzLT5JU09XZWVrSGVhZC4iPC90aD4iOw0KCX0NCglmb3IoJGogPSAwOyAkajw9NjsgJGor KywgJGkrKykgew0KCQlpZigkaSA9PSA3KSB7ICRpID0gMDsgfQ0KCQkkY1tdID0gJzx0aD4n LiR0aGlzLT5nZXREYXlOYW1lKCRpKS4iPC90aD4iOw0KCX0NCg0KCSRjW10gPSAnPC90cj4n Ow0KCXJldHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRzcERheU5hbWVzID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLyoqDQoq IERpc3BsYXlzIGFsbCBkYXkgY2VsbHMgZm9yIHRoZSBtb250aA0KKg0KKiBAcmV0dXJuIHN0 cmluZw0KKiBAcHJpdmF0ZQ0KKi8NCmZ1bmN0aW9uIGRzcERheUNlbGxzICggKSB7DQoJJGkg PSAwOyAvLyBjZWxsIGNvdW50ZXINCgkkZW1wdHlDbGFzcyA9ICR0aGlzLT5lbXB0eWNsYXNz Ow0KCSRpc29DbGFzcyA9ICR0aGlzLT5pc29jbGFzczsNCgkkcm93Q2xhc3MgPSAkdGhpcy0+ cm93Y2xhc3M7DQoJJHJvd0NsYXNzID0gKCRyb3dDbGFzcykgPyAnIGNsYXNzPSInLiRyb3dD bGFzcy4nIicgOiAnJzsNCg0KCSRjW10gPSAnPHRyJy4kcm93Q2xhc3MuJz4nOw0KDQoJaWYg KCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkkd2tjZWxsID0gc3RydHIoJHRoaXMtPklTT1dl ZWtDZWxsLCBhcnJheSgne3dlZWt9JyA9PiBkYXRlKCAnVycsICR0aGlzLT5zdGFydFRpbWUg KSApKTsNCgkJJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlzb0NsYXNzLiciPicuJHdrY2VsbC4n PC90ZD4nOw0KCX0NCgkvLyBmaXJzdCBkaXNwbGF5IGVtcHR5IGNlbGxzIGJhc2VkIG9uIHdo YXQgd2Vla2RheSB0aGUgbW9udGggc3RhcnRzIGluDQoJZm9yKCAkaj0wOyAkajwkdGhpcy0+ c3RhcnRPZmZzZXQ7ICRqKysgKQl7DQoJCSRpKys7DQoJCSRjW10gPSAnPHRkIGNsYXNzPSIn LiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsNCgl9IC8vIGVuZCBvZmZzZXQgY2VsbHMN Cg0KCS8vIHdyaXRlIG91dCB0aGUgcmVzdCBvZiB0aGUgZGF5cywgYXQgZWFjaCBzdW5kYXks IHN0YXJ0IGEgbmV3IHJvdy4NCglmb3IoICRkPTE7ICRkPD0kdGhpcy0+ZW5kRGF5OyAkZCsr ICkgew0KCQkkaSsrOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNlbGwoICRkICk7DQoJCWlm ICggJGklNyA9PSAwICkgeyAkY1tdID0gJzwvdHI+JzsgfQ0KCQlpZiAoICRkPCR0aGlzLT5l bmREYXkgJiYgJGklNyA9PSAwICkgew0KCQkJJGNbXSA9ICc8dHInLiRyb3dDbGFzcy4nPic7 DQoJCQlpZiAoJHRoaXMtPnNob3dJU09XZWVrKSB7DQoJCQkJJHdrY2VsbCA9IHN0cnRyKCR0 aGlzLT5JU09XZWVrQ2VsbCwgYXJyYXkoJ3t3ZWVrfScgPT4gZGF0ZSggJ1cnLCBzdHJ0b3Rp bWUoICR0aGlzLT55ZWFyLiItIi4kdGhpcy0+bW9udGguIi0iLihpbnQpKCRkICsgMSkgLiIg MDA6MDAiICkpICkpOw0KCQkJCSRjW10gPSAnPHRkIGNsYXNzPSInLiRpc29DbGFzcy4nIj4n LiR3a2NlbGwuJzwvdGQ+JzsNCgkJCX0NCgkJfQ0KCX0NCgkvLyBmaWxsIGluIHRoZSBmaW5h bCByb3cNCgkkbGVmdCA9IDcgLSAoICRpJTcgKTsNCglpZiAoICRsZWZ0IDwgNykJew0KCQlm b3IgKCAkaj0wOyAkajwkbGVmdDsgJGorKyApCXsNCgkJICAkY1tdID0gJzx0ZCBjbGFzcz0i Jy4kZW1wdHlDbGFzcy4nIj4mbmJzcDs8L3RkPic7DQoJCX0NCgkJJGNbXSA9ICJcblx0PC90 cj4iOw0KCX0NCglyZXR1cm4gam9pbignJywkYyk7DQp9DQovLyA9PT09IGVuZCBkc3BEYXlD ZWxscyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci8qKg0KKiBvdXRwdXRzIHRoZSBjb250ZW50cyBmb3IgYSBnaXZlbiBkYXkNCioNCiogQHBh cmFtIGludGVnZXIsIGRheQ0KKiBAYWJzdHJhY3QNCiovDQpmdW5jdGlvbiBkc3BEYXlDZWxs ICggJGRheSApIHsNCglyZXR1cm4gJzx0ZD4nLiRkYXkuJzwvdGQ+JzsNCn0NCi8vID09PT0g ZW5kIGRheUNlbGwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQp9IC8vIGVuZCBjbGFzcw0KDQovLyBQZXJmb3JtIG9uZSBvZiAyIHR5cGVzIG9m IHRlc3Q6IGEgZmxhZy1iYXNlZCB0ZXN0LCBvciBhbiBpbmZvLWJhc2VkIHRlc3QNCmZ1bmN0 aW9uIHNtZF9pZl9jYWwoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2NhbF9mbGFn LCAkc21kX2NhbF9pZCwgJHNtZF95ZWFyLCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRf ZGF5Ow0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmbGFnJyA9PiAnJywgLy8gZXZlbnQs IHN0YW5kYXJkLCByZWN1cihmaXJzdCksIG11bHRpKGZpcnN0LGxhc3QscHJldiksIGNhbmNl bCwgb21pdCwgaG9scywgdG9kYXksIFNNRF9BTlkNCgkJJ2NhbGlkJyA9PiAnJywNCgkJJ3ll YXInID0+ICcnLA0KCQknbW9udGgnID0+ICcnLA0KCQknd2VlaycgPT4gJycsDQoJCSdkYXkn ID0+ICcnLA0KCQknbG9naWMnID0+ICdhbmQnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAk YXR0cykpOw0KDQoJJGZsYWcgPSBkb19saXN0KCRmbGFnKTsNCgkkY3RyID0gJG51bSA9IDA7 DQoNCglpZiAoJGRlYnVnKSB7DQoJCWRtcCgkYXR0cyk7DQoJfQ0KDQoJaWYgKCRmbGFnICYm ICRmbGFnWzBdICE9ICcnKSB7DQoJCSRudW0gKz0gY291bnQoJGZsYWcpOw0KCQlmb3JlYWNo ICgkZmxhZyBhcyAkd2hhdG5vdCkgew0KCQkJaWYgKGVtcHR5KCR3aGF0bm90KSkgY29udGlu dWU7DQoJCQkkY3RyICs9IChpbl9hcnJheSgkd2hhdG5vdCwgJHNtZF9jYWxfZmxhZykgfHwg KCR3aGF0bm90ID09ICdTTURfQU5ZJyAmJiAhZW1wdHkoJHNtZF9jYWxfZmxhZykpKSA/IDEg OiAwOw0KCQl9DQoJfQ0KCWlmICgkY2FsaWQpIHsNCgkJJG51bSsrOw0KCQkkY3RyICs9ICgk c21kX2NhbF9pZCA9PT0gJGNhbGlkKSA/IDEgOiAwOw0KCX0NCglmb3JlYWNoIChhcnJheSgi eWVhciIsICJtb250aCIsICJ3ZWVrIiwgImRheSIpIGFzICR0ZXN0KSB7DQoJCSR0ZXN0ZXIg PSAkJHRlc3Q7DQoJCSRnYmwgPSAnc21kXycuJHRlc3Q7DQoJCSRjb21wYXJlID0gJCRnYmw7 DQoNCgkJaWYgKCR0ZXN0ZXIpIHsNCgkJCSRudW0rKzsNCgkJCXByZWdfbWF0Y2goJy8oWyE9 PD5dKyk/KFtcZF0rKS8nLCAkdGVzdGVyLCAkbWF0Y2hlcyk7DQoJCQlpZiAoJGRlYnVnKSB7 DQoJCQkJZG1wKCJURVNUIElGOiAiLiAkY29tcGFyZS4gKCgkbWF0Y2hlc1sxXSkgPyAkbWF0 Y2hlc1sxXSA6ICc9JykgLiAkbWF0Y2hlc1syXSApOw0KCQkJfQ0KCQkJc3dpdGNoICgkbWF0 Y2hlc1sxXSkgew0KCQkJCWNhc2UgIiEiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZSE9JG1h dGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIj4iOg0KCQkJCQkk Y3RyICs9ICgkY29tcGFyZT4kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJ CQkJY2FzZSAiPj0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT49JG1hdGNoZXNbMl0pID8g MSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIjwiOg0KCQkJCQkkY3RyICs9ICgkY29t cGFyZTwkbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPD0i Og0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTw9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJ CWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjdHIgKz0gKCRjb21wYXJlPT0kbWF0Y2hl c1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoJJHJlc3VsdCA9 ICgoJGN0ciA9PT0gJG51bSAmJiAkbG9naWMgPT0gImFuZCIpIHx8ICRjdHIgPiAwICYmICRs b2dpYyA9PSAib3IiKSA/IHRydWUgOiBmYWxzZTsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2Uo JHRoaW5nLCAkcmVzdWx0KSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9jYWxfaW5mbygkYXR0cykg ew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkc21kX2NhbF9mbGFnLCAkc21k X2NhbF9pZCwgJHNtZF95ZWFyLCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0K DQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3R5cGUnID0+ICdmbGFnJywgLy8gZmxhZywg eWVhciwgbW9udGgsIHdlZWssIGRheSwgY2FsaWQsIHNlY3Rpb24sIGNhdGVnb3J5LCBhdXRo b3INCgkJJ2pvaW4nID0+ICcgJywNCgkJJ2pvaW5fcHJlZml4JyA9PiAnU01EX0FVVE8nLA0K CQknaHRtbCcgPT4gMCwNCgkJJ2VzY2FwZScgPT4gJ2h0bWwnLA0KCSksICRhdHRzKSk7DQoN Cgkkam9pbiA9ICgkaHRtbCkgPyBhIDogJGpvaW47IC8vIGh0bWwgbW9kZSBmb3JjZXMgYW1w ZXJzYW5kIGpvaW4NCgkkdHlwZSA9IGRvX2xpc3QoJHR5cGUpOw0KCSRyZXQgPSBhcnJheSgp Ow0KCWZvcmVhY2ggKCR0eXBlIGFzICRpdGVtKSB7DQoJCXN3aXRjaCAoJGl0ZW0pIHsNCgkJ CWNhc2UgImZsYWciOg0KCQkJCSRyZXRbXSA9ICgoJGpvaW5fcHJlZml4PT0iU01EX0FVVE8i KSA/ICRqb2luIDogJycpLmpvaW4oJGpvaW4sICRzbWRfY2FsX2ZsYWcpOw0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAieWVhciI6DQoJCQkJaWYgKCRzbWRfeWVhcikgew0KCQkJCQkkcmV0W10g PSAoKCRodG1sKSA/ICd5PScgOiAnJykgLiAkc21kX3llYXI7DQoJCQkJfQ0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAibW9udGgiOg0KCQkJCWlmICgkc21kX21vbnRoKSB7DQoJCQkJCSRyZXRb XSA9ICgoJGh0bWwpID8gJ209JyA6ICcnKSAuICRzbWRfbW9udGg7DQoJCQkJfQ0KCQkJCWJy ZWFrOw0KCQkJY2FzZSAid2VlayI6DQoJCQkJaWYgKCRzbWRfd2Vlaykgew0KCQkJCQkkcmV0 W10gPSAoKCRodG1sKSA/ICd3PScgOiAnJykgLiAkc21kX3dlZWs7DQoJCQkJfQ0KCQkJCWJy ZWFrOw0KCQkJY2FzZSAiZGF5IjoNCgkJCQlpZiAoJHNtZF9kYXkpIHsNCgkJCQkJJHJldFtd ID0gKCgkaHRtbCkgPyAnZD0nIDogJycpIC4gJHNtZF9kYXk7DQoJCQkJfQ0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAic2VjdGlvbiI6DQoJCQkJaWYgKCRwcmV0ZXh0WydzJ10pIHsNCgkJCQkJ JHJldFtdID0gKCgkaHRtbCkgPyAncz0nIDogJycpIC4gJHByZXRleHRbJ3MnXTsNCgkJCQl9 DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjYXRlZ29yeSI6DQoJCQkJaWYgKCRwcmV0ZXh0Wydj J10pIHsNCgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAnYz0nIDogJycpIC4gJHByZXRleHRb J2MnXTsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJhdXRob3IiOg0KCQkJCWlmICgk dGhpc2FydGljbGUgPT0gTlVMTCkgew0KCQkJCQkkY3VycmF1dGhvciA9ICcnOw0KCQkJCX0g ZWxzZSB7DQoJCQkJCSRjdXJyYXV0aG9yID0gYXV0aG9yKGFycmF5KCkpOw0KCQkJCX0NCgkJ CQlpZiAoJGN1cnJhdXRob3IpIHsNCgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAnYXV0aG9y PScgOiAnJykgLiAkY3VycmF1dGhvcjsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJj YWxpZCI6DQoJCQkJaWYgKCRzbWRfY2FsX2lkKSB7DQoJCQkJCSRyZXRbXSA9ICgoJGh0bWwp ID8gJ2NhbGlkPScgOiAnJykgLiAkc21kX2NhbF9pZDsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJ CX0NCgl9DQoJJG91dCA9ICgoJGpvaW5fcHJlZml4PT0iU01EX0FVVE8iKSA/ICgoJGh0bWwp ID8gJz8nIDogJycpIDogJGpvaW5fcHJlZml4KS5qb2luKCRqb2luLCAkcmV0KTsNCglyZXR1 cm4gKCRlc2NhcGU9PSdodG1sJykgPyBodG1sc3BlY2lhbGNoYXJzKCRvdXQpIDogJG91dDsN Cn0NCg0KZnVuY3Rpb24gc21kX2NhbF9ub3coJGF0dHMpIHsNCglnbG9iYWwgJGRhdGVmb3Jt YXQ7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1h dCwNCgkJJ25vdycgPT4gJycsDQoJCSdvZmZzZXQnID0+ICcnLA0KCQknZ210JyA9PiAnJywN CgkJJ2xhbmcnID0+ICcnLA0KCSksICRhdHRzKSk7DQoNCgkkdGhlRGF5ID0gKGdwcygnZCcp ICYmIGlzX251bWVyaWMoZ3BzKCdkJykpKSA/IChpbnQpZ3BzKCdkJykgOiBzYWZlX3N0cmZ0 aW1lKCclZCcpOw0KCSR0aGVNb250aCA9IChncHMoJ20nKSAmJiBpc19udW1lcmljKGdwcygn bScpKSkgPyAoaW50KWdwcygnbScpIDogc2FmZV9zdHJmdGltZSgnJW0nKTsNCgkkdGhlWWVh ciA9IChncHMoJ3knKSAmJiBpc19udW1lcmljKGdwcygneScpKSkgPyAoaW50KWdwcygneScp IDogc2FmZV9zdHJmdGltZSgnJVknKTsNCglpZiAoJG5vdykgew0KCQkkbm93ID0gc3RyX3Jl cGxhY2UoIj9tb250aCIsIGRhdGUoJ0YnLCBnbW1rdGltZSgxMiwwLDAsJHRoZU1vbnRoLCR0 aGVEYXksJHRoZVllYXIpKSwgJG5vdyk7DQoJCSRub3cgPSBzdHJfcmVwbGFjZSgiP3llYXIi LCAkdGhlWWVhciwgJG5vdyk7DQoJCSRub3cgPSBzdHJfcmVwbGFjZSgiP2RheSIsICR0aGVE YXksICRub3cpOw0KCQkkbm93ID0gc3RydG90aW1lKCRub3cpOw0KCX0gZWxzZSB7DQoJCSRu b3cgPSB0aW1lKCk7DQoJfQ0KDQoJaWYgKCRvZmZzZXQpIHsNCgkJJG5vdyA9IHN0cnRvdGlt ZSgkb2Zmc2V0LCAkbm93KTsNCgl9DQoNCglyZXR1cm4gc2FmZV9zdHJmdGltZSgkZm9ybWF0 LCAkbm93LCAkZ210LCAkbGFuZyk7DQp9DQoNCi8vIFNldCB1c2VyLWRlZmluZWQgY2xhc3Nl cyBmb3IgYSBjZWxsDQpmdW5jdGlvbiBzbWRfY2FsX2NsYXNzKCRhdHRzKSB7DQoJZ2xvYmFs ICRzbWRfY2FsX3VjbHM7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknbmFtZScgPT4g JycsDQoJKSwgJGF0dHMpKTsNCg0KCSRuYW1lID0gZG9fbGlzdCgkbmFtZSk7DQoJJHNtZF9j YWxfdWNscyA9IGFycmF5X21lcmdlKCRzbWRfY2FsX3VjbHMsICRuYW1lKTsNCn0NCg0KLy8g PHR4cDphcnRpY2xlX2N1c3RvbSAvPiByZXBsYWNlbWVudChpc2gpIHRhZyB0aGF0IHVuZGVy c3RhbmRzIGhvdyB0byBoYW5kbGUgcmVjdXJyaW5nIGV2ZW50cw0KZnVuY3Rpb24gc21kX2Fy dGljbGVfZXZlbnQoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJlZnMsICRwcmV0 ZXh0LCAkdGhpc3BhZ2U7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndGltZScgPT4g J2FueScsDQoJCSd0eXBlJyA9PiAnc3RhbmRhcmQscmVjdXIsbXVsdGknLCAvLyB0eXBlIG9m IGV2ZW50IHRvIHNob3cNCgkJJ2V4cGlyZWQnID0+ICcnLCAvLyAwPW5vLCAxPXllcyBwdWJs aXNoIGV4cGlyZWQgZXZlbnRzLCBlbXB0eT11c2UgcHJlZnMNCgkJJ2lkJyA9PiAnJywNCgkJ J2NhdGVnb3J5JyA9PiAnJywNCgkJJ3NlY3Rpb24nID0+ICcnLA0KCQknYXV0aG9yJyA9PiAn JywNCgkJJ3N0YXR1cycgPT4gJ2xpdmUnLA0KCQknc29ydCcgPT4gJycsDQoJCSdmb3JtJyA9 PiAnJywNCgkJJ3N0ZXBmaWVsZCcgPT4gJycsDQoJCSdza2lwZmllbGQnID0+ICcnLA0KCQkn b21pdGZpZWxkJyA9PiAnJywNCgkJJ21vbnRoJyA9PiAnJywNCgkJJ2Zyb20nID0+ICcnLCAv LyBzdGFydCBkYXRlDQoJCSd0bycgPT4gJycsIC8vIGVuZCBkYXRlDQoJCSdvZmZzZXQnID0+ IDAsDQoJCSdsaW1pdCcgPT4gJzEwJywNCgkJJ2V2ZW50bGltaXQnID0+ICcxMCcsIC8vIG1h eCBudW1iZXIgb2YgcmVjdXJyaW5nIGV2ZW50cyB0byBjcmVhdGUgcGVyIHJlYWwgZXZlbnQN CgkJJ3BhZ2VieScgPT4gJycsDQoJCSdwZ29ubHknID0+ICcnLA0KCQknd3JhcHRhZycgPT4g JycsDQoJCSdicmVhaycgPT4gJycsDQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4g MCwNCgkpLCAkYXR0cykpOw0KDQoJLy8gUGhhc2UgMSBmaWx0ZXJzDQoJJGZpbHRTUUwgPSAk c3ViU1FMID0gYXJyYXkoKTsNCglpZigkY2F0ZWdvcnkpIHsNCgkJJHRtcCA9IGRvUXVvdGUo am9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29yeSkpKSk7DQoJCSRmaWx0U1FM W10gPSAnKCBDYXRlZ29yeTEgSU4gKCcuJHRtcC4nKSBPUiBDYXRlZ29yeTIgSU4gKCcuJHRt cC4nKSApJzsNCgl9DQoJaWYoJHNlY3Rpb24pIHsNCgkJJGZpbHRTUUxbXSA9ICdTZWN0aW9u IElOICgnLmRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRzZWN0aW9uKSkp KS4nKSc7DQoJfQ0KCWlmKCRhdXRob3IpIHsNCgkJJGZpbHRTUUxbXSA9ICdBdXRob3JJRCBJ TiAoJy5kb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkYXV0aG9yKSkpKS4n KSc7DQoJfQ0KCWlmKCRpZCkgew0KCQkkZmlsdFNRTFtdID0gJ0lEIElOICgnLmpvaW4oJywn LCBhcnJheV9tYXAoJ2ludHZhbCcsIGRvX2xpc3QoJGlkKSkpLicpJzsNCgl9DQoJJHR5cGUg PSBkb19saXN0KCR0eXBlKTsNCgkkcGFnZWJ5ID0gKGVtcHR5KCRwYWdlYnkpID8gJGxpbWl0 IDogJHBhZ2VieSk7DQoNCglmb3JlYWNoICgkdHlwZSBhcyAkZXZ0eXApIHsNCgkJc3dpdGNo KCRldnR5cCkgew0KCQkJY2FzZSAnc3RhbmRhcmQnOg0KCQkJCWlmICgkc3RlcGZpZWxkKSB7 DQoJCQkJCSRzdWJTUUxbXSA9ICIoIi4kc3RlcGZpZWxkLiIgPSAnJyBBTkQgRXhwaXJlcyA9 ICIuTlVMTERBVEVUSU1FLiIpIjsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdyZWN1 cic6DQoJCQkJaWYgKCRzdGVwZmllbGQpIHsNCgkJCQkJJHN1YlNRTFtdID0gIigiLiRzdGVw ZmllbGQuIiAhPSAnJykiOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ211bHRpJzoN CgkJCQlpZiAoJHN0ZXBmaWVsZCkgew0KCQkJCQkkc3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVs ZC4iID0gJycgQU5EIEV4cGlyZXMgIT0gIi5OVUxMREFURVRJTUUuIikiOw0KCQkJCX0NCgkJ CQlicmVhazsNCgkJfQ0KCX0NCglpZiAoJHN1YlNRTCkgew0KCQkkZmlsdFNRTFtdID0gJygn LmpvaW4oJyBPUiAnLCAkc3ViU1FMKS4nKSc7DQoJfQ0KDQoJJHN0YXR1cyA9ICgkc3RhdHVz KSA/ICRzdGF0dXMgOiAnbGl2ZSc7IC8vIGluIGNhc2Ugc3RhdHVzIGhhcyBiZWVuIGVtcHRp ZWQNCgkkc3RhdHVzID0gZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkgPSBhcnJheSgpOw0K CWZvcmVhY2ggKCRzdGF0dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5KCRzdGF0KSkgew0K CQkJY29udGludWU7DQoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkpIHsNCgkJCSRz dGF0aVtdID0gJHN0YXQ7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9IGdldFN0YXR1c051 bSgkc3RhdCk7DQoJCX0NCgl9DQoJJGZpbHRTUUxbXSA9ICdTdGF0dXMgSU4gKCcuZG9RdW90 ZShqb2luKCInLCciLCAkc3RhdGkpKS4nKSc7DQoNCgkkZXhwaXJlZCA9ICgkZXhwaXJlZCkg PyAkZXhwaXJlZCA6ICRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ107DQoJaWYg KCEkZXhwaXJlZCkgew0KCQkkZmlsdFNRTFtdID0gJyhub3coKSA8PSBFeHBpcmVzIE9SIEV4 cGlyZXMgPSAnLk5VTExEQVRFVElNRS4nKSc7DQoJfQ0KDQoJLy8gU29ydGluZyBydWxlczog ZGF0YSBpcyBzb3J0ZWQgb25jZSBhcyBpdCBpcyBleHRyYWN0ZWQgdmlhIFNRTCBhbmQgdGhl biBhZ2FpbiBhZnRlciB0aGUgZmFrZSBkYXRlcyBoYXZlIGJlZW4gaW5zZXJ0ZWQNCgkkc29y dCA9IChlbXB0eSgkc29ydCkpID8gJ1Bvc3RlZCBhc2MnIDogJHNvcnQ7DQoJJHNvcnQgPSBk b19saXN0KCRzb3J0KTsNCgkkc29ydFByZWZpeCA9ICJTT1JUXyI7DQoJJHNvcnRPcmRlciA9 IGFycmF5KCk7DQoJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsgJGlkeCsr KSB7DQoJCSRzb3J0aWVzID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsNCgkJaWYgKGNv dW50KCRzb3J0aWVzKSA8PSAxKSB7DQoJCQkkc29ydGllc1sxXSA9ICJhc2MiOw0KCQl9DQoJ CSRzb3J0aWVzWzFdID0gJHNvcnRQcmVmaXguKCgkc29ydGllc1sxXSA9PSAiZGVzYyIpID8g J0RFU0MnIDogJ0FTQycpOw0KCQkkc29ydE9yZGVyW10gPSBhcnJheSgiYnkiID0+ICRzb3J0 aWVzWzBdLCAiZGlyIiA9PiAkc29ydGllc1sxXSk7DQoJfQ0KDQoJJGZpbHRTUUwgPSBqb2lu KCcgQU5EICcsICRmaWx0U1FMKTsNCgkkZmlsdFNRTCAuPSAnIE9SREVSIEJZICcuam9pbign LCcsZG9TbGFzaCgkc29ydCkpOw0KDQoJJGdyYWJDb2xzID0gJyosIHVuaXhfdGltZXN0YW1w KFBvc3RlZCkgYXMgdVBvc3RlZCwgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RN b2QsIHVuaXhfdGltZXN0YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzJzsNCgkkZXZsaXN0ID0g c2FmZV9yb3dzKCRncmFiQ29scywgJ3RleHRwYXR0ZXJuJywgJGZpbHRTUUwsICRkZWJ1Zyk7 DQoNCglpZiAoJGRlYnVnPjIpIHsNCgkJZWNobyAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRt cCgkZXZsaXN0KTsNCgl9DQoJJGFsbF9ldnMgPSAkZXZfdGFsbHkgPSBhcnJheSgpOw0KCSRu b3cgPSB0aW1lKCk7DQoNCgkvLyBQaGFzZSAyOiBleHBhbmQgYW55IHJlY3VycmluZyBkYXRl cyBhbmQgY29sbGF0ZSBhbGwgZXZlbnRzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGFsbG90ZWQg cmFuZ2VzDQoJZm9yZWFjaCAoJGV2bGlzdCBhcyAkcm93KSB7DQoJCSRldl9wb3N0ZWQgPSAk cm93Wyd1UG9zdGVkJ107DQoJCSRldl9leHBpcmVzID0gJHJvd1sndUV4cGlyZXMnXTsNCgkJ JGV2X2RheSA9IGRhdGUoJ2onLCAkZXZfcG9zdGVkKTsNCgkJJGV2X21vbnRoID0gZGF0ZSgn bScsICRldl9wb3N0ZWQpOw0KCQkkZXZfeWVhciA9IGRhdGUoJ1knLCAkZXZfcG9zdGVkKTsN CgkJJGV2X2hyID0gZGF0ZSgnSCcsICRldl9wb3N0ZWQpOw0KCQkkZXZfbWluID0gZGF0ZSgn aScsICRldl9wb3N0ZWQpOw0KCQkkZXZfc2VjID0gZGF0ZSgncycsICRldl9wb3N0ZWQpOw0K CQkkaWdub3JlID0gYXJyYXkoKTsNCg0KCQkvLyBHZW5lcmF0ZSBhIHNraXAgYXJyYXkgZm9y IHRoaXMgZXZlbnQNCgkJaWYgKCRza2lwZmllbGQgJiYgJHJvd1skc2tpcGZpZWxkXSAhPSAn Jykgew0KCQkJJGlnbm9yZSA9IGRvX2xpc3QoJHJvd1skc2tpcGZpZWxkXSk7DQoJCQlmb3Jl YWNoICgkaWdub3JlIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRpZ25vcmVbJGtleV0gPSBk YXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7IC8vIEZvcmNlIGVhY2ggZGF0ZSB0byBh IGtub3duIGZvcm1hdA0KCQkJfQ0KCQl9DQoJCS8vIEFwcGVuZCBhbnkgb21pdHRlZCBldmVu dHMNCgkJaWYgKCRvbWl0ZmllbGQgJiYgJHJvd1skb21pdGZpZWxkXSAhPSAnJykgew0KCQkJ JG9taXQgPSBkb19saXN0KCRyb3dbJG9taXRmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJG9taXQg YXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGlnbm9yZVska2V5XSA9IGRhdGUoImQtTS1ZIiwg c3RydG90aW1lKCR2YWwpKTsNCgkJCX0NCgkJfQ0KCQlpZiAoJGRlYnVnID4gMSAmJiAkaWdu b3JlKSB7DQoJCQllY2hvICcrKyBJR05PUkVEIERBVEVTICsrJzsNCgkJCWRtcCgkaWdub3Jl KTsNCgkJfQ0KDQoJCS8vIERvZXMgdGhlIGV2ZW50IGRlc2VydmUgdG8gYmUgaW4gdGhlIHJl c3VsdHM/DQoJCWlmIChzbWRfaW5jbHVkZV9ldmVudCgkZXZfcG9zdGVkLCAkbm93LCAkaWdu b3JlLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKSkgew0KCQkJJGFsbF9ldnNbXSA9ICRy b3c7DQoJCQkkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxseVsk cm93WydQb3N0ZWQnXV0pKSA/ICRldl90YWxseVskcm93WydQb3N0ZWQnXV0rMSA6IDE7DQoJ CX0NCg0KCQlpZiAoJHN0ZXBmaWVsZCAmJiAkcm93WyRzdGVwZmllbGRdICE9ICcnKSB7DQoJ CQkkZnJlcSA9IGRvX2xpc3QoJHJvd1skc3RlcGZpZWxkXSk7DQoJCQkkbW9udGhseSA9IGZh bHNlOw0KCQkJJGN1cnJzdGFtcCA9ICRldl9wb3N0ZWQ7DQoJCQkkY3Vycm1vbnRoID0gJGV2 X21vbnRoOw0KCQkJJGN1cnJ5ZWFyID0gJGV2X3llYXI7DQoJCQlmb3JlYWNoICgkZnJlcSBh cyAkaW50ZXJ2YWwpIHsNCgkJCQkkZmFrZXJvdyA9ICRyb3c7DQoJCQkJJHN0YW1wb2ZmID0g MDsNCgkJCQlmb3IoJGlkeCA9IDA7ICRpZHggPCA5OTk5OTsgJGlkeCsrKSB7DQoJCQkJCSRs YXN0YW1wID0gJGN1cnJzdGFtcDsNCgkJCQkJaWYgKChpc3NldCgkZXZfdGFsbHlbJHJvd1sn UG9zdGVkJ11dKSAmJiAoJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSA+PSAkZXZlbnRsaW1p dCkpIHx8ICgkdG8gJiYgJGN1cnJzdGFtcCA+IHN0cnRvdGltZSgkdG8pKSkgew0KCQkJCQkJ YnJlYWs7DQoJCQkJCX0NCgkJCQkJJGl2YWwgPSBzdHJfcmVwbGFjZSgiP21vbnRoIiwgZGF0 ZSgnRicsIGdtbWt0aW1lKDAsMCwwLCRjdXJybW9udGgsMSkpLCAkaW50ZXJ2YWwpOw0KCQkJ CQkkaXZhbCA9IHN0cl9yZXBsYWNlKCI/eWVhciIsICRjdXJyeWVhciwgJGludGVydmFsKTsN Cg0KCQkJCQlpZiAoc3RycG9zKCRpdmFsLCAibGFzdCIpID09PSAwKSB7DQoJCQkJCQkkaXZh bCA9IGRhdGUoImwsIEYgalMgWSIsIHN0cnRvdGltZSgkaXZhbCwgbWt0aW1lKDEyLCAwLCAw LCBkYXRlKCJuIixta3RpbWUoMCwwLDAsJGN1cnJtb250aCwxLCRjdXJyeWVhcikpKzEsIDEs ICRjdXJyeWVhcikpKTsNCgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsNCgkJCQkJfSBlbHNlIGlm IChzdHJwb3MoJGl2YWwsICJmaXJzdCIpID09PSAwKSB7DQoJCQkJCQkkaXZhbCA9IGRhdGUo ImwsIEYgalMgWSIsIHN0cnRvdGltZSgkaXZhbCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRjdXJy bW9udGg+MSkgPyAkY3Vycm1vbnRoLTEgOiAxMiksIGRhdGUoInQiLG1rdGltZSgwLDAsMCwk Y3Vycm1vbnRoLTEsMSwoKCRjdXJybW9udGg9PTEpID8gJGN1cnJ5ZWFyLTE6ICRjdXJyeWVh cikpKSwgKCgkY3Vycm1vbnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3VycnllYXIpKSkpOw0K CQkJCQkJJG1vbnRobHkgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWlmICgkbW9udGhseSkgew0K CQkJCQkJJGN1cnJzdGFtcCA9IHN0cnRvdGltZSgkaXZhbCk7DQoJCQkJCQkkc3RhbXBvZmYg PSAoJHN0YW1wb2ZmPT0wKSA/IChpbnQpKDM2MDAqJGV2X2hyKSArIChpbnQpKDYwKiRldl9t aW4pICsgKGludCkkZXZfc2VjIDogJHN0YW1wb2ZmOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJ JGN1cnJzdGFtcCA9IHN0cnRvdGltZSgkaXZhbCwgJGN1cnJzdGFtcCk7DQoJCQkJCX0NCgkJ CQkJLy8gVGhpcyBrbHVkZ2UgaXMgdG8gdGFrZSBhY2NvdW50IG9mIHRpbWVzdGFtcHMgbGlr ZSAibGFzdCBUaHVyc2RheSIgKG9mIHRoZSBtb250aCkuIFRoZSBsYXN0ICd3aGF0ZXZlciBk YXknIG9mDQoJCQkJCS8vIGEgbW9udGggY2FuIG9ubHkgYmUgYSBtYXhpbXVtIG9mIDMxIGRh eXMgYmVmb3JlIHRoZSBsYXN0IHRpbWVzdGFtcCB3ZSBzYXcsIHNvIGNoZWNrIGZvciB0aGF0 IChnaXZlIG9yIHRha2UgMTAgbWlucykNCgkJCQkJJGRpZmZzdGFtcCA9ICRjdXJyc3RhbXAg LSAkbGFzdGFtcDsNCgkJCQkJaWYgKCRkaWZmc3RhbXAgPCAwKSB7DQoJCQkJCQlpZiAoJGRp ZmZzdGFtcCA+IC0oNjAqNjAqMjQqMzEpKzYwMCkgew0KCQkJCQkJCSRjdXJyc3RhbXAgPSBm YWxzZTsgLy8gSnVzdCBzb21lICdsYXN0IHdlZWtkYXknIG9mIHRoZSBwcmV2aW91cyBtb250 aA0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlicmVhazsgLy8gUEhQX0lOVF9NQVggZXhjZWVk ZWQNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoJGN1cnJzdGFtcCAhPT0gZmFsc2UpIHsN CgkJCQkJCWlmICgkZGVidWcgPiAxKSB7DQoJCQkJCQkJZG1wKCJJTlRFUlZBTDogIi4gJGN1 cnJzdGFtcCAuICcgLy8gJyAuZGF0ZSgnZC1NLVkgSDppOnMnLCAkY3VycnN0YW1wKSk7DQoJ CQkJCQl9DQoNCgkJCQkJCWlmICgoJGN1cnJzdGFtcCA8ICRldl9leHBpcmVzIHx8ICRldl9l eHBpcmVzID09ICcwJykgJiYgKCRjdXJyc3RhbXAgIT0gJGV2X3Bvc3RlZCkpIHsNCgkJCQkJ CQkkc2hvd19tZSA9IHNtZF9pbmNsdWRlX2V2ZW50KCRjdXJyc3RhbXAsICRub3csICRpZ25v cmUsICR0aW1lLCAkZnJvbSwgJHRvLCAkbW9udGgpOw0KCQkJCQkJCWlmICgkc2hvd19tZSkg ew0KCQkJCQkJCQkkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICRj dXJyc3RhbXArJHN0YW1wb2ZmKTsNCgkJCQkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9ICRj dXJyc3RhbXArJHN0YW1wb2ZmOw0KCQkJCQkJCQkkYWxsX2V2c1tdID0gJGZha2Vyb3c7DQoJ CQkJCQkJCSRldl90YWxseVskcm93WydQb3N0ZWQnXV0gPSAoaXNzZXQoJGV2X3RhbGx5WyRy b3dbJ1Bvc3RlZCddXSkpID8gJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSsxIDogMTsNCgkJ CQkJCQl9DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCWJyZWFrOw0KCQkJCQkJfQ0KCQkJCQl9 DQoJCQkJCS8vIEluY3JlbWVudCB0aGUgbW9udGgveWVhciByZWFkeSBmb3IgdGhlIG5leHQg aW50ZXJ2YWwNCgkJCQkJaWYgKCRtb250aGx5KSB7DQoJCQkJCQkkY3VycnllYXIgPSAoJGN1 cnJtb250aD09MTIpID8gJGN1cnJ5ZWFyKzEgOiAkY3VycnllYXI7DQoJCQkJCQkkY3Vycm1v bnRoID0gKCRjdXJybW9udGg9PTEyKSA/IDEgOiAkY3Vycm1vbnRoKzE7DQoJCQkJCX0NCgkJ CQl9DQoJCQkJaWYgKCRkZWJ1Zz4xKSB7DQoJCQkJCWlmIChpc3NldCgkZXZfdGFsbHlbJHJv d1snUG9zdGVkJ11dKSkgew0KCQkJCQkJZG1wKCJUQUxMWTogIi4gJGV2X3RhbGx5WyRyb3db J1Bvc3RlZCddXSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglpZiAoJGRl YnVnPjIpIHsNCgkJZWNobyAiKysgUFJFLVNPUlRFRCArKyI7DQoJCWRtcCgkYWxsX2V2cyk7 DQoJfQ0KDQoJLy8gTWFrZSB1cCBhbiBhcnJheV9tdWx0aXNvcnQgYXJnIGxpc3QgYW5kIGV4 ZWN1dGUgaXQNCglmb3JlYWNoKCRhbGxfZXZzIGFzICRrZXkgPT4gJHJvdykgew0KCQlmb3Jl YWNoICgkcm93IGFzICRpZGVudGlmaWVyID0+ICRpdGVtKSB7DQoJCQkkdmFybmFtZSA9ICJj b2xfIi4kaWRlbnRpZmllcjsNCgkJCSR7JHZhcm5hbWV9WyRrZXldID0gJGl0ZW07DQoJCX0N Cgl9DQoJaWYoY291bnQoJGFsbF9ldnMpID4gMCkgew0KCQlmb3IgKCRpZHggPSAwOyAkaWR4 IDwgY291bnQoJHNvcnRPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNv bF8nLiRzb3J0T3JkZXJbJGlkeF1bJ2J5J107DQoJCQkkc29ydGFyZ3NbXSA9ICRzb3J0T3Jk ZXJbJGlkeF1bJ2RpciddOw0KCQl9DQoJCSRzb3J0aXQgPSAnYXJyYXlfbXVsdGlzb3J0KCcu aW1wbG9kZSgiLCAiLCRzb3J0YXJncykuJywgJGFsbF9ldnMpOyc7DQoJCWV2YWwoJHNvcnRp dCk7DQoJfQ0KDQoJaWYgKCRkZWJ1Zz4yKSB7DQoJCWVjaG8gIisrIFBPU1QtU09SVEVEICsr IjsNCgkJZG1wKCRhbGxfZXZzKTsNCgl9DQoNCgkvLyBIYW5kbGUgcGFnaW5nDQoJJGdyYW5k X3RvdGFsID0gY291bnQoJGFsbF9ldnMpOw0KCSR0b3RhbCA9ICRncmFuZF90b3RhbCAtICRv ZmZzZXQ7DQoJJG51bVBhZ2VzID0gY2VpbCgkdG90YWwvJHBhZ2VieSk7DQoJJHBnID0gKCEk cHJldGV4dFsncGcnXSkgPyAxIDogJHByZXRleHRbJ3BnJ107DQoJJHBnb2Zmc2V0ID0gJG9m ZnNldCArICgoJHBnIC0gMSkgKiAkcGFnZWJ5KTsNCgkvLyBzZW5kIHBhZ2luZyBpbmZvIHRv IHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJJHBhZ2VvdXRbJ3BnJ10gPSAkcGc7DQoJJHBh Z2VvdXRbJ251bVBhZ2VzJ10gPSAkbnVtUGFnZXM7DQoJJHBhZ2VvdXRbJ3MnXSA9ICRwcmV0 ZXh0WydzJ107DQoJJHBhZ2VvdXRbJ2MnXSA9ICRwcmV0ZXh0WydjJ107DQoJJHBhZ2VvdXRb J2dyYW5kX3RvdGFsJ10gPSAkZ3JhbmRfdG90YWw7DQoJJHBhZ2VvdXRbJ3RvdGFsJ10gPSAk dG90YWw7DQoNCglpZiAoZW1wdHkoJHRoaXNwYWdlKSkNCgkJJHRoaXNwYWdlID0gJHBhZ2Vv dXQ7DQoJaWYgKCRwZ29ubHkpDQoJCXJldHVybjsNCg0KCS8vIFBoYXNlIDM6IGl0ZXJhdGUg b3ZlciB0aGUgbmV3IGFycmF5IG9iZXlpbmcgYW55IG9mZnNldC9saW1pdC4gQW55dGhpbmcg aW4gdGhlIHJhbmdlIGdldHMgcG9wdWxhdGVkIGFuZCBwYXJzZWQNCgkkb3V0ID0gYXJyYXko KTsNCgkkY3RyID0gMDsNCglhcnRpY2xlX3B1c2goKTsNCglmb3JlYWNoICgkYWxsX2V2cyBh cyAkaWR4ID0+ICRyb3cpIHsNCgkJaWYgKCRpZHggPj0gJHBnb2Zmc2V0ICYmICRjdHIgPCAk bGltaXQpIHsNCgkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkkb3V0W10gPSAo JHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRmb3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0p IDogaHJlZigkcm93WydQb3N0ZWQnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9Iicu JHJvd1snVGl0bGUnXS4nIicpICk7DQoJCQkkY3RyKys7DQoJCX0NCgl9DQoJYXJ0aWNsZV9w b3AoKTsNCglyZXR1cm4gZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7 DQp9DQoNCi8vIENoZWNrIHRoZSBwYXNzZWQgdGltZXN0YW1wIGFnYWluc3QgZXZlcnkgdGlt ZSByZXN0cmljdGlvbiBhbmQgcmV0dXJuIHRydWUgaWYgaXQgcGFzc2VzIHRoZW0gYWxsDQpm dW5jdGlvbiBzbWRfaW5jbHVkZV9ldmVudCgkdHMsICRub3csICRpZ24sICR0aW1lLCAkZnJv bSwgJHRvLCAkbW9udGgpIHsNCgkkc2hvdyA9IGFycmF5KCk7DQoJJHNob3dbXSA9ICFpbl9h cnJheShkYXRlKCJkLU0tWSIsICR0cyksICRpZ24pOw0KCXN3aXRjaCgkdGltZSkgew0KCQlj YXNlICJhbnkiOiBicmVhazsNCgkJY2FzZSAiZnV0dXJlIjogJHNob3dbXSA9ICgkdHMgPiAk bm93KSA/IHRydWUgOiBmYWxzZTsgYnJlYWs7DQoJCWRlZmF1bHQgOiAkc2hvd1tdID0gKCR0 cyA8ICRub3cpID8gdHJ1ZSA6IGZhbHNlOyBicmVhazsgLy8gVGhlIHBhc3QNCgl9DQoJaWYg KCRmcm9tKSB7ICRzaG93W10gPSAoJHRzID49IHN0cnRvdGltZSgkZnJvbSkpID8gdHJ1ZSA6 IGZhbHNlOyB9DQoJaWYgKCR0bykgeyAkc2hvd1tdID0gKCR0cyA8PSBzdHJ0b3RpbWUoJHRv KSkgPyB0cnVlIDogZmFsc2U7IH0NCglpZiAoJG1vbnRoKSB7ICRzaG93W10gPSAoZGF0ZSgi WS1tIiwgJHRzKSA9PSAkbW9udGgpID8gdHJ1ZSA6IGZhbHNlOyB9DQoNCglyZXR1cm4gKCFp bl9hcnJheSgwLCAkc2hvdykpID8gdHJ1ZSA6IGZhbHNlOw0KfSI7czo0OiJ0eXBlIjtzOjE6 IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo0OiJoZWxwIjtzOjYyOTQ3OiIJPHA+PGRpdiBp ZD0ic21kX2hlbHAiPjwvcD4KCgk8aDEgaWQ9InRvcCI+c21kX2NhbGVuZGFyPC9oMT4KCgk8 cD5SZW5kZXIgYSBjYWxlbmRhciB3aXRoIG9uZSBvciBtb3JlIGFydGljbGVzIGFzIGV2ZW50 cyBvbiBlYWNoIGRheS4gVXNlZnVsIGZvciBnaWcgZ3VpZGVzLCAmIzgyMjA7d2hhdCYjODIx NztzIG9uJiM4MjIxOyBvciBzY2hlZHVsaW5nLjwvcD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5G ZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5GdWxsLXNpemUgb3IgbWluaSBjYWxlbmRhciBi eSBtb250aCB3aXRoIG9wdGlvbmFsIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdl ZWsgZGlzcGxheTwvbGk+CgkJPGxpPk5hdmlnYXRpb246IG5leHQvcHJldiBtb250aCBvciBv cHRpb25hbCBkcm9wZG93biBvZiBtb250aCAvIHllYXIuIFBlcm1pdHRlZCB5ZWFyIHJhbmdl IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGZpcnN0L2xhc3QgYXJ0aWNsZSBvciBleHRlbmRlZCBi eSArLy0gTiB5ZWFycyBpbiBlaXRoZXIgZGlyZWN0aW9uPC9saT4KCQk8bGk+T25lIGFydGlj bGUgPSBvbmUgZXZlbnQsIG5hdGl2ZSB0byA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiB3aXRoIHRoZSBQb3N0ZWQgZGF0ZSBiZWluZyB0aGUgZGF0ZSBpdCBhcHBlYXJzIGluIHRo ZSBjYWxlbmRhcjwvbGk+CgkJPGxpPkZpbHRlciBldmVudHMgYnkgY2F0ZWdvcnkgLyBzZWN0 aW9uIC8gYXV0aG9yIC8gc3RhdHVzIC8gdGltZSBvciBleHBpcnk8L2xpPgoJCTxsaT5Ob21p bmF0ZSBhIGN1c3RvbSBmaWVsZCB0byBzcGVjaWZ5IGV2ZW50IGZyZXF1ZW5jeSAoMSB3ZWVr IG9yIDEwIGRheXMgb3IgMyBtb250aHMsIGV0YykuIE11bHRpcGxlIGZyZXF1ZW5jaWVzIGNh biBiZSBnaXZlbjwvbGk+CgkJPGxpPk5vbWluYXRlIGN1c3RvbSBmaWVsZHMgZm9yIGV4Y2x1 c2lvbnMgKGEgbGlzdCBvZiBkYXRlcyBvbiB3aGljaCB0aGF0IGV2ZW50IGlzIGNhbmNlbGxl ZC9vbWl0dGVkKS4gT3B0aW9uIHRvIGVpdGhlciBzaG93IGNhbmNlbGxlZCBldmVudHMgb24g dGhhdCBkYXkgc28geW91IGNhbiBzdHlsZSB0aGVtIGRpZmZlcmVudGx5LCBvciByZW1vdmUg dGhlbSBjb21wbGV0ZWx5PC9saT4KCQk8bGk+U2hvdyBzcGFubmVkIGV2ZW50cyAob25lcyB0 aGF0IGxhc3QgbW9yZSB0aGFuIGEgZGF5KSBiYXNlZCBvbiB0aGUgYXJ0aWNsZeKAmXMgZXhw aXJ5LiBBbnkgZXZlbnQgdGhhdCBkb2VzIDxzcGFuIGNsYXNzPSJjYXBzIj5OT1Q8L3NwYW4+ IHJlY3VyIGFuZCBoYXMgYSBmdXR1cmUgZXhwaXJ5IGNhbiBiZSB0cmVhdGVkIHRoaXMgd2F5 PC9saT4KCQk8bGk+RnV0dXJlLCBleHBpcmVkIG9yIHN0aWNreSBldmVudHMgbWF5IGJlIGRp c3BsYXllZCBpZiB5b3Ugd2lzaDwvbGk+CgkJPGxpPlNwZWNpZnkgaG9saWRheXMgb24gYSBw ZXIgY2FsZW5kYXIgYmFzaXMgKGVpdGhlciByZWN1cnJpbmcgZXZlbnRzICYjODIxMjsgd2l0 aG91dCB5ZWFyICYjODIxMjsgb3Igc3BlY2lmaWMgaG9saWRheXMpLiBEZWZpbmUgdGhlIGxp c3QgZWl0aGVyIGRpcmVjdGx5IGluIHRoZSBwbHVnaW4gYXR0cmlidXRlIG9yIGluIGEgPGNv ZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gb2YgeW91ciBjaG9pY2UgYW5kIGRl Y2lkZSB3aGljaCB0eXBlcyBvZiBldmVudCBhcmUgdG8gYmUgY2FuY2VsbGVkIGR1ZSB0byBo b2xpZGF5czwvbGk+CgkJPGxpPkVhY2ggZXZlbnQgY2FuIGJlIHBhc3NlZCB0byBhIGZvcm0v Y29udGFpbmVyIHNvIHlvdSBjYW4gYnVpbGQgaXQgeW91ciB3YXksIG9yIHVzZSB0aGUgYnVp bHQtaW4gaHlwZXJsaW5rZWQgdGl0bGUuIFNwYW5uZWQgYW5kL29yIHJlY3VycmluZyBldmVu dHMgY2FuIGJlIHNlbnQgdG8gYSBzZXBhcmF0ZSBmb3JtIGlmIHlvdSB3aXNoLiBBbHRlcm5h dGl2ZWx5LCBzZW5kIHRoZSBlbnRpcmUgY2VsbCB0byBhIGZvcm0gYW5kIHN0eWxlIGl0IHlv dXIgd2F5PC9saT4KCQk8bGk+Q29uZGl0aW9uYWwgdGVzdHMgZm9yIGZsYWdzIChzdGFuZGFy ZCwgcmVjdXJyaW5nLCBzcGFubmVkLCBjYW5jZWxsZWQsIGhvbGlkYXlzKSBhbmQgZGF0ZXMg c28geW91IGNhbiBidWlsZCB5b3VyIG93biBsb2dpYyBpbiB5b3VyIGZvcm1zL2NvbnRhaW5l cjwvbGk+CgkJPGxpPkNsYXNzIHNvdXA6IHRhYmxlLSwgcm93LSwgY2VsbC0sIGFuZCBldmVu dC1sZXZlbCBjbGFzc2VzIGZvciBpbmRpY2F0aW5nIGRpZmZlcmVudCBzY2VuYXJpb3MgKHNw YW5uZWQgZXZlbnQsIHJlY3VycmluZyBldmVudCwgY2FuY2VsbGVkIGV2ZW50LCBldGMpOyBj dXN0b20gY2xhc3NlcyBjYW4gYmUgc3BlY2lmaWVkIGJhc2VkIG9uIGFuIGV2ZW50PC9saT4K CQk8bGk+VGFnIHRvIGRpc3BsYXkgcmVjdXJyaW5nIGV2ZW50czwvbGk+CgkJPGxpPlRhZyB0 byBvdXRwdXQgdmFyaW91cyBldmVudCBvciBjYWxlbmRhciBjaGFyYWN0ZXJpc3RpY3MgKGUu Zy4gdGhlIG1vbnRoLCB5ZWFyLCBjYWxlbmRhciBpZCwgc2VjdGlvbiBhbmQgc28gb24pPC9s aT4KCQk8bGk+VGFnIHRvIG91dHB1dCB0aGUgY3VycmVudCBkYXRlL3RpbWUgKGZvcm1hdHRl ZCBob3cgeW91IGxpa2UpPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhvciAv IGNyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21t ZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBKb2ludGx5IGZ1bmRlZCBieSBnZW5lcm91cyBk b25hdG9yczogbXJkYWxlLCB3b29mLCBqYWtvYiwgcmVub2JpcmQgYW5kIGpvZWJhaWNoLiBC YXNlZCBoZWF2aWx5IG9uIG1kcF9jYWxlbmRhci4gQWxsIHByb3BzIHRvIHRoZSBvcmlnaW5h bCBhdXRob3Igb2YgdGhlIHBsdWdpbiwgYW5kIG9mIGNvdXJzZSB0aGUgY2xhc3MgdXBvbiB3 aGljaCB0aGUgY2FsZW5kYXIgaXMgYmFzZWQuIEFuZCBub3QgZm9yZ2V0dGluZyBvdXIgYXdl c29tZSBUZXh0cGF0dGVybiBkZXZzIHdobyBjb250aW51ZSB0byBwdXNoIHRoaXMgbGl0dGxl IDxzcGFuIGNsYXNzPSJjYXBzIj5DTVM8L3NwYW4+IHRvIHRoZSBzdGFycy48L3A+CgoJPGgy IGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHAg Y2xhc3M9InJlcXVpcmVkIj5SZXF1aXJlcyBUZXh0cGF0dGVybiA0LjAuNys8L3A+CgoJPHA+ RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBh dHRlcm4ub3JnL3BsdWdpbnMvMTA1Mi9zbWRfY2FsZW5kYXIiPnRleHRwYXR0ZXJuLm9yZzwv YT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJl IHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJs ZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0 ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTI5MjAwIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBt b3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0 aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIHNpbXBseSBkZWxldGUgZnJvbSB0 aGUgQWRtaW4gLSZndDsgUGx1Z2lucyBwYWdlLjwvcD4KCgk8aDIgaWQ9Im5hbWluZyI+TmFt aW5nIGNvbnZlbnRpb248L2gyPgoKCTxwPkJlZm9yZSBiZWdpbm5pbmcgdGhlcmUmIzgyMTc7 cyBhIGxpdHRsZSBiaXQgb2Ygbm9tZW5jbGF0dXJlIHRvIGdldCBvdXQgb2YgdGhlIHdheTo8 L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbDwvc3Bhbj4gOiBhIHNw ZWNpZmljIGRheSBvbiB0aGUgY2FsZW5kYXIgaW4gYSBwYXJ0aWN1bGFyIG1vbnRoL3llYXI8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnQ8L3NwYW4+IDogYW4gYXJ0aWNs ZS4gSXQmIzgyMTc7cyBiZXN0IHRvIG5vbWluYXRlIGEgZGVkaWNhdGVkIHNlY3Rpb24gZm9y IGV2ZW50cyBzbyBpdCBrZWVwcyB0aGluZ3MgbmVhdGVyIG9uIHlvdXIgY2FsZW5kYXIgYnV0 IHlvdSBjYW4gdXNlIGV2ZW50cyBmcm9tIG1vcmUgdGhhbiBvbmUgc2VjdGlvbiBpZiB5b3Ug d2lzaC4gQW55IGFydGljbGUgd3JpdHRlbiBpbiB0aGUgZ2l2ZW4gc2VjdGlvbihzKSB3aWxs IGFwcGVhciBvbiB0aGUgY2FsZW5kYXIgYXMgbG9uZyBhcyBpdHMgZXhwaXJ5IGhhc24mIzgy MTc7dCBiZWVuIG1ldC4gTW9yZSB0aGFuIG9uZSBldmVudCBtYXkgYXBwZWFyIGluIGVhY2gg Y2VsbDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsIGZsYWc8L3NwYW4+IDog ZWFjaCBjZWxsIGNhbiBlaXRoZXIgYmUgPGNvZGU+ZW1wdHk8L2NvZGU+IChpLmUuIG5vIGRh dGU6IGEgZmlsbGVyIGF0IHRoZSBzdGFydC9lbmQgb2YgdGhlIG1vbnRoKSwgaXQgY2FuIGJl IGEgcmVndWxhciBkYXkgKG5vIGZsYWcpLCBpdCBjYW4gY29udGFpbiBhbiA8Y29kZT5ldmVu dDwvY29kZT4sIG9yIGl0IG1heSBiZSBhIGhvbGlkYXkgKDxhIGhyZWY9IiNob2xpZGF5cyI+ aG9sczwvYT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50IGZsYWc8L3Nw YW4+IDogZWFjaCBldmVudCBjYW4gZWl0aGVyIGJlIGEgPGEgaHJlZj0iI2V2ZW50cyI+c3Rh bmRhcmQ8L2E+IGV2ZW50LCBpdCBjYW4gPGEgaHJlZj0iI3JlY3VyIj5yZWN1cjwvYT4sIGl0 IGNhbiBzcGFuIG1vcmUgdGhhbiBvbmUgZGF5ICg8YSBocmVmPSIjbXVsdGkiPm11bHRpPC9h PiksIGRhdGVzIGNhbiBiZSB1bnNjaGVkdWxlZCBvciBvbWl0dGVkICg8YSBocmVmPSIjY2Fu Y2VsIj5jYW5jZWwgLyBvbWl0PC9hPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2FsaWQ8L3NwYW4+IDogeW91IG1heSBwdXQgbW9yZSB0aGFuIG9uZSBjYWxlbmRhciBvbiBh IHBhZ2UuIElmIHNvLCBlYWNoIG9uZSBtdXN0IGJlIHVuaXF1ZWx5IHJlZmVyZW5jZWQgd2l0 aCB0aGlzIGNhbGVuZGFyIElEPC9saT4KCTwvdWw+CgoJPHA+SXQmIzgyMTc7cyBhbHNvIHdv cnRoIGJlYXJpbmcgaW4gbWluZCB0aGUgPGEgaHJlZj0iI2RhdGVzIj5kYXRlIGNhdmVhdHM8 L2E+IHRoYXQgbWF5IHdlbGwgYml0ZSB5b3UgaGFyZC48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+ VXNhZ2U6IDxjb2RlPiZsdDt0eHA6c21kX2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJ PHA+UHV0IHRoZSA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxlbmRhciAvJmd0OzwvY29kZT4gdGFn IHdoZXJldmVyIHlvdSB3YW50IHlvdXIgY2FsZW5kYXIgdG8gYXBwZWFyLiBVc2UgYW55IG9m IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB0byBjb250cm9sIGl0cyBvdXRwdXQgZGlzcGxh eSBhbmQgdXNlIHRoZSA8YSBocmVmPSIjYXR0c3R5bGVzIj5zdHlsZSBhdHRyaWJ1dGVzPC9h PiB0byBkZXRlcm1pbmUgaG93IHRvIGFwcGx5IHN0eWxlcyB0byB0aGUgdmFyaW91cyBldmVu dHMgYW5kIGNlbGxzLjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+ TWFpbiBhdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z aXplPC9zcGFuPiA6IGNhbGVuZGFyIHNpemUsIDxjb2RlPmxhcmdlPC9jb2RlPiBvciA8Y29k ZT5zbWFsbDwvY29kZT4uIFRoZSBzbWFsbCBpcyBtb3JlIGdlYXJlZCB0b3dhcmRzIGEgbWlu aWNhbCwgYWx0aG91Z2ggZnVuY3Rpb25hbGx5IHRoZXJlIDxhIGhyZWY9IiNzaXplZGlmZiI+ aXNuJiM4MjE3O3QgbXVjaCBiZXR3ZWVuIHRoZW08L2E+LiBEZWZhdWx0OiA8Y29kZT5sYXJn ZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGltZTwvc3Bhbj4gOiBz aG93IDxjb2RlPnBhc3Q8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+LCBvciA8Y29kZT5h bnk8L2NvZGU+IGV2ZW50LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmV4cGlyZWQ8L3NwYW4+IDogZGVmaW5pdGl2ZWx5IGhpZGUg KDxjb2RlPjA8L2NvZGU+KSBvciBzaG93ICg8Y29kZT4xPC9jb2RlPikgZXhwaXJlZCBldmVu dHMuIExlYXZlIGJsYW5rIHRvIHVzZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gQWR2YW5jZWQgUHJlZmVyZW5jZSA8Y29kZT5QdWJsaXNoIGV4cGlyZWQgYXJ0aWNsZXM8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZpcnN0ZGF5PC9zcGFuPiA6 IHRoZSAxc3QgZGF5IG9mIHRoZSB3ZWVrIHRvIHNob3cgaW4gdGhlIGNhbGVuZGFyLiAwPVN1 bmRheSwgMT1Nb25kYXkgYW5kIHNvIG9uIGRvd24gdG8gNj1TYXR1cmRheS4gRGVmYXVsdDog PGNvZGU+MDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGF5Zm9ybWF0 PC9zcGFuPiA6IHRoZSB3YXkgaW4gd2hpY2ggdGhlIGRheSBuYW1lcyBhcmUgcmVuZGVyZWQu IENob29zZSBmcm9tIGVpdGhlciA8Y29kZT5BQkJSPC9jb2RlPiAodGhlIGRlZmF1bHQpIHRv IHNob3cgdGhlIGRheXMgYXMgTW9uLCBUdWUsIFdlZCwgZXRjIG9yIDxjb2RlPkZVTEw8L2Nv ZGU+IHRvIHJlbmRlciB0aGVpciBmdWxsIG5hbWVzLiBBbHRlcm5hdGl2ZWx5LCBzdXBwbHkg YW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9zdHJmdGltZSI+c3RyZnRp bWUoKTwvYT4gY29kZXMgdG8gdXNlIHRoYXQgaW5zdGVhZC4gTG9jYWxlLXNwZWNpZmljIG5h bWVzIGFyZSByZXR1cm5lZC48ZGl2IGNsYXNzPSJicmVhayI+RmluYWxseSwgaWYgeW91IHJl YWxseSBkb24mIzgyMTc7dCBsaWtlIGFueSBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBI UDwvc3Bhbj4gZGlzcGxheSBtZXRob2RzIHlvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duLiBX cml0ZSBlYWNoIGVudHJ5IGFzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgc3Vycm91bmRlZCBi eSA8Y29kZT57fTwvY29kZT4gYnJhY2tldHMuIFNvLCBpZiB5b3Ugd2FudGVkIHR3by1sZXR0 ZXIgR2VybWFuIHdlZWsgZGF5cyB5b3UgY291bGQgdXNlOiA8Y29kZT5kYXlmb3JtYXQ9JnF1 b3Q7e1NvLE1vLERpLE1pLERvLEZyLFNhfSZxdW90OzwvY29kZT4uIFRoZSBmaXJzdCBkYXkg aW4gdGhlIGxpc3QgPHN0cm9uZz5tdXN0PC9zdHJvbmc+IGJlIGEgU3VuZGF5IG9yIHRoaW5n cyB3aWxsIGdldCBtaWdodHkgYml6YXJyZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5tb250aGZvcm1hdDwvc3Bhbj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtb250 aCBuYW1lcyBhcmUgcmVuZGVyZWQuIENob29zZSBmcm9tIGVpdGhlciA8Y29kZT5GVUxMPC9j b2RlPiAodGhlIGRlZmF1bHQpIHRvIHNob3cgdGhlIGZ1bGwgbW9udGggbmFtZXMgb3IgPGNv ZGU+QUJCUjwvY29kZT4gdG8gcmVuZGVyIHRoZWlyIGFiYnJldmlhdGVkIG5hbWVzLiBBbHRl cm5hdGl2ZWx5LCBzdXBwbHkgYW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5l dC9zdHJmdGltZSI+c3RyZnRpbWUoKTwvYT4gY29kZXMgdG8gdXNlIHRoYXQgaW5zdGVhZC4g TG9jYWxlLXNwZWNpZmljIG5hbWVzIGFyZSByZXR1cm5lZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5zZWxlY3Q8L3NwYW4+IDogdXNlIGEgc2VsZWN0IGRyb3Bkb3duIGZvciBy YXBpZCBhY2Nlc3MgdG8gd2Vla3MsIG1vbnRocyBvciB5ZWFycyBpbnN0ZWFkIG9mIHJlbmRl cmluZyBqdXN0IHRoZSBuYW1lcy4gRGVmYXVsdDogdW5zZXQsIGJ1dCB5b3UgbWF5IG1ha2Ug YSAoY29tbWEtc2VwYXJhdGVkKSBsaXN0IGZyb20gZWl0aGVyIDxjb2RlPndlZWs8L2NvZGU+ IC8gPGNvZGU+bW9udGg8L2NvZGU+IG9yIDxjb2RlPnllYXI8L2NvZGU+LiAod2VlayBhbmQg bW9udGggYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSkuIE5vdGUgdGhhdCB3aGVuIHVzaW5nIDxj b2RlPndlZWs8L2NvZGU+LCB0aGUgcGx1Z2luIG1ha2VzIGFuIGVkdWNhdGVkIGd1ZXNzIGF0 IHRoZSBtb250aCBhbmQgbWF5IG5vdCBnZXQgaXQgcmlnaHQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c2VsZWN0YnRuPC9zcGFuPiA6IGJ5IGRlZmF1bHQsIHRoZSBzZWxlY3Qg ZHJvcGRvd25zIHdpbGwgYXV0by1zdWJtaXQgd2hlbiB0aGV5IGFyZSBjaGFuZ2VkLiBJZiB5 b3UgcHJlZmVyIGEgZGVkaWNhdGVkIHN1Ym1pdCBidXR0b24sIGdpdmUgdGhlIHRleHQgeW91 IHdpc2ggdG8gYXBwZWFyIG9uIHRoZSBidXR0b24gaGVyZS4gVGhlIGJ1dHRvbiBoYXMgYSBm aXhlZCBjbGFzcyBvZiA8Y29kZT5zbWRfY2FsX2lucHV0PC9jb2RlPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5pc293ZWVrczwvc3Bhbj4gOiBzaG93IHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcnMgYXMgYSBjb2x1bW4gYXQgdGhlIHN0 YXJ0IG9mIHRoZSBjYWxlbmRhci4gQW55IHRleHQgaW4gdGhpcyBhdHRyaWJ1dGUgZW5hYmxl cyB0aGUgZmVhdHVyZSwgYW5kIHlvdXIgdGV4dCBiZWNvbWVzIHRoZSBoZWFkaW5nIG9mIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIGNvbHVtbi4gWW91IG1heSBv cHRpb25hbGx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IHdlZWsgbnVtYmVyIGRpc3BsYXllZCBp biBlYWNoIGNlbGwgYnkgYWRkaW5nIGEgY29tbWEgYW5kIHNvbWUgdGV4dDsgd2hhdGV2ZXIg eW91IGVudGVyIHdpbGwgYmUgcHV0IGluIGVhY2ggPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwv c3Bhbj4gd2VlayBjZWxsLiBVc2UgdGhlIHJlcGxhY2VtZW50IGNvZGUgPGNvZGU+e3dlZWt9 PC9jb2RlPiBpbiB5b3VyIG1hcmt1cCB0byBpbnNlcnQgdGhlIGN1cnJlbnQgd2VlayBudW1i ZXIuIDxkaXYgY2xhc3M9ImJyZWFrIj5FeGFtcGxlOiA8Y29kZT5pc293ZWVrcz0mcXVvdDt3 aywgI3t3ZWVrfSZxdW90OzwvY29kZT4gd2lsbCByZW5kZXIgJiM4MjE2O3drJiM4MjE3OyBh dCB0aGUgdG9wIG9mIHRoZSBjb2x1bW4gYW5kIHNvbWV0aGluZyBsaWtlIDxjb2RlPiMyNDwv Y29kZT4sIDxjb2RlPiMyNTwvY29kZT4sIDxjb2RlPiMyNjwvY29kZT4mIzgyMzA7IGF0IHRo ZSBzdGFydCBvZiBlYWNoIHdlZWsgcm93LiBJZiB0aGUgYXR0cmlidXRlIGJlZ2lucyB3aXRo IGEgY29tbWEgKGkuZSB0aGUgZmlyc3QgaXRlbSBpcyBvbWl0dGVkKSwgdGhlcmUgd2lsbCBi ZSBubyBjb2x1bW4gaGVhZGluZy48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0 IGlmIHRoZSBpc293ZWVrcyBmZWF0dXJlIGlzIGVuYWJsZWQsIDxjb2RlPmZpcnN0ZGF5PC9j b2RlPiB3aWxsIGJlIGZvcmNlZCB0byBzdGFydCBvbiBhIE1vbmRheSBhcyBnb3Zlcm5lZCBi eSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gc3BlY2lmaWNhdGlvbi4gRGVm YXVsdDogdW5zZXQ8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVz PC9zcGFuPiA6IGV2ZW50cyBpbiB0aGlzIGxpc3Qgb2Ygc3RhdHVzIGFyZSBwdWJsaXNoZWQu IERlZmF1bHQ6IDxjb2RlPmxpdmU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmNhdGVnb3J5PC9zcGFuPiA6IGZpbHRlciBldmVudHMgYnkgdGhpcyBsaXN0IG9mIGNh dGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnNlY3Rpb248L3NwYW4+IDogZmlsdGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2Ygc2VjdGlv bnMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhv cjwvc3Bhbj4gOiBmaWx0ZXIgZXZlbnRzIGJ5IHRoaXMgYXV0aG9yIFJlYWwgTmFtZS4gRGVm YXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+IDog dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBJRCB0byBhcHBseSB0byB0aGUg dGFibGUgdGhhdCBob2xkcyB0aGUgY2FsZW5kYXIuIFRoaXMgaXMgdGhlIHZhbHVlIG9mIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA8Y29kZT5jYWxpZDwv Y29kZT4gYW5kIGl0cyBkZWZhdWx0IGlzIHVuc2V0LiBFYWNoIGNhbGVuZGFyIG9uIGEgcGFn ZSA8YSBocmVmPSIjbmFtaW5nIj5tdXN0IGJlIHVuaXF1ZTwvYT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+bmF2aWQ8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5I VE1MPC9zcGFuPiBJRCB0byBhcHBseSB0byB0aGUgcHJldi9uZXh0L21vbnRoL3llYXIgbmF2 aWdhdGlvbiBmb3JtLiBJZiB1c2VkLCBlYWNoIGNhbGVuZGFyIG9uIGEgcGFnZSBtdXN0IGhh dmUgYSB1bmlxdWUgbmF2aWQuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm5hdmFycm93PC9zcGFuPiA6IGNvbW1hLXNlcGFyYXRlZCBwYWlyIG9mIGl0 ZW1zIHlvdSB3YW50IHRvIGFwcGVhciBhcyBwcmV2L25leHQgYXJyb3dzIGluIHRoZSBjYWxl bmRhci4gRGVmYXVsdDogPGNvZGU+JmFtcDsjNjA7LCAmYW1wOyM2Mjs8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6IHN0YXJ0IHRoZSBjYWxl bmRhciBvbiB0aGlzIG1vbnRoIGZyb20gMSAoSmFudWFyeSkgdG8gMTIgKERlY2VtYmVyKS4g Tm9ybWFsIGNhbGVuZGFyIG5hdmlnYXRpb24gb3ZlcnJpZGVzIHRoaXMgdmFsdWUuIElmIDxj b2RlPnN0YXRpYzwvY29kZT4gaXMgdXNlZCwgdGhpcyBtb250aCBiZWNvbWVzIHRoZSBvbmx5 IG9uZSB5b3UgbWF5IHZpZXcuIElmIHVuc2V0LCBhbmQgbm8gPGNvZGU+bT08L2NvZGU+IHZh bHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUs IHRoZSBjdXJyZW50IG1vbnRoIGlzIHVzZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+d2Vlazwvc3Bhbj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgZHVyaW5nIHRoZSBtb250aCBj b250YWluaW5nIHRoaXMgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayAoZnJv bSAxIHRvIDUzKS4gSWdub3JlZCBpZiA8Y29kZT5zdGF0aWM8L2NvZGU+IG9yIG9uZSBvZiB0 aGUgY2FsZW5kYXIgbmF2aWdhdGlvbiBjb250cm9scyBpcyB1c2VkLiBJZiBhIDxjb2RlPnc9 PC9jb2RlPiB2YWx1ZSBhcHBlYXJzIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBsaW5lLCB0aGUgZ2l2ZW4gd2VlayBvdmVycmlkZXMgYW55IG1vbnRoIHZhbHVlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnllYXI8L3NwYW4+IDogc3RhcnQgdGhlIGNh bGVuZGFyIGF0IHRoaXMgNC1kaWdpdCB5ZWFyLiBOb3JtYWwgY2FsZW5kYXIgbmF2aWdhdGlv biBvdmVycmlkZXMgdGhpcyB2YWx1ZS4gSWYgPGNvZGU+c3RhdGljPC9jb2RlPiBpcyB1c2Vk LCB0aGlzIHllYXIgYmVjb21lcyB0aGUgb25seSBvbmUgeW91IG1heSB2aWV3LiBJZiB1bnNl dCwgYW5kIG5vIDxjb2RlPnk9PC9jb2RlPiB2YWx1ZSBhcHBlYXJzIG9uIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLCB0aGUgY3VycmVudCB5ZWFyIGlzIHVzZWQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+eWVhcndpZHRoPC9zcGFuPiA6IGEgY29t bWEtc2VwYXJhdGVkIGxpc3QgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgeWVhcnMgeW91ciBj YWxlbmRhciBzcGFucy4gQnkgZGVmYXVsdCBpdCBpcyA8Y29kZT4wLDA8L2NvZGU+IHdoaWNo IHVzZXMgdGhlIGVhcmxpZXN0IChwb3N0ZWQpIGV2ZW50IGluIHRoZSBzZWN0aW9uIGFzIHRo ZSBsb3dlc3QgeWVhciBhbmQgdGhlIGxhdGVzdCAobW9kaWZpZWQpIGV2ZW50IGluIHRoZSBz ZWN0aW9uIGFzIHRoZSBsYXRlc3QgeWVhci4gWW91IHdpbGwgbm90IGJlIHBlcm1pdHRlZCB0 byBuYXZpZ2F0ZSB0aGUgY2FsZW5kYXIgb3V0c2lkZSB0aGlzIHJhbmdlLiBUbyB3aWRlbiB0 aGUgcmFuZ2UsIHNwZWNpZnkgc29tZSB2YWx1ZXMsIGZvciBleGFtcGxlIDxjb2RlPnllYXJ3 aWR0aD0mcXVvdDsyLDQmcXVvdDs8L2NvZGU+IHdpbGwgc3VidHJhY3QgMiB3aG9sZSB5ZWFy cyBmcm9tIHRoZSBlYXJsaWVzdCBldmVudCBhbmQgYWRkIDQgd2hvbGUgeWVhcnMgdG8gdGhl IGxhdGVzdCBldmVudC4gSWYgeW91IHNwZWNpZnkgYSBzaW5nbGUgbnVtYmVyLCB0aGF0IHZh bHVlIHdpbGwgYmUgdXNlZCB0byBleHBhbmQgdGhlIHJhbmdlIGVxdWFsbHkgaW4gYm90aCBk aXJlY3Rpb25zPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+IDog dXNlIHRoaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB0byBwcm9jZXNz IGVhY2ggZXZlbnQuIElmIHRoZSBjYWxlbmRhciB0YWcgaXMgdXNlZCBhcyBhIGNvbnRhaW5l ciBpdCB3aWxsIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgZm9ybS4gSWYgbmVpdGhl ciBhcmUgdXNlZCwgdGhlIGRlZmF1bHQgZm9yIGEgbGFyZ2UgY2FsZW5kYXIgaXMgYSBoeXBl cmxpbmtlZCBhcnRpY2xlIHRpdGxlLiBUaGUgc21hbGwgY2FsZW5kYXIgcmVuZGVycyBhbiBl bXB0eSBldmVudDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zcGFuZm9ybTwvc3Bh bj4gOiB5b3UgbWF5IGVsZWN0IHRvIHJlbmRlciBzcGFubmVkIGV2ZW50cyBkaWZmZXJlbnRs eSB0byBzdGFuZGFyZCBldmVudHMuIEJ5IGRlZmF1bHQgdGhleSB1c2UgdGhlIHNhbWUgPGNv ZGU+Zm9ybTwvY29kZT4gYnV0ICYjODIxMjsgaWYgbmVpdGhlciB0aGF0IG5vciB0aGUgY29u dGFpbmVyIGFyZSBzcGVjaWZpZWQgJiM4MjEyOyB3aWxsIGJlIHJlbmRlcmVkIGFzIGEgaHlw ZXJsaW5rZWQgcmlnaHQtYXJyb3cgdG8gaW5kaWNhdGUgY29udGludWF0aW9uIG9mIHRoZSBw cmV2aW91cyBkYXkmIzgyMTc7cyBldmVudC4gTm90ZSB0aGUgZmlyc3QgZGF5IG9mIGEgc3Bh bm5lZCBzZXQgaXMgPGVtPm5vdDwvZW0+IHBhc3NlZCB0byB0aGUgPGNvZGU+c3BhbmZvcm08 L2NvZGU+OyBvbmx5IGNvbnRpbnVhdGlvbiBjZWxscyBhcmUgcGFzc2VkIHRvIGl0PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJlY3VyZm9ybTwvc3Bhbj4gOiBzaW1pbGFybHkg dG8gPGNvZGU+c3BhbmZvcm08L2NvZGU+IHlvdSBtYXkgZWxlY3QgdG8gcmVuZGVyIHJlY3Vy cmluZyBldmVudHMgZGlmZmVyZW50bHkgdG8gc3RhbmRhcmQgZXZlbnRzLiBCeSBkZWZhdWx0 IHRoZXkgdXNlIHRoZSBzYW1lIDxjb2RlPmZvcm08L2NvZGU+IChvciBjb250YWluZXIpIGFz IHN0YW5kYXJkIGV2ZW50cyBhbmQgdGhlIGZpcnN0IGV2ZW50IG9mIGEgcmVjdXJyaW5nIHNl dCBpcyBub3QgcGFzc2VkIHRvIDxjb2RlPnJlY3VyZm9ybTwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGZvcm08L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWly ZWQiPm9ubHkgb24gbGFyZ2UgY2FsZW5kYXJzPC9zcGFuPikgOiB1c2UgdGhpcyBpZiB5b3Ug d2lzaCB0byBidWlsZCBlYWNoIGNlbGwgZW50aXJlbHkgZnJvbSBzY3JhdGNoLiBJdCB3b3Jr cyBkaWZmZXJlbnRseSB0byB0aGUgb3RoZXIgZm9ybSBhdHRyaWJ1dGVzIGluIHRoYXQgaXQg PGVtPm11c3Q8L2VtPiBiZSBhIGZvcm0gYW5kIGNhbm5vdCB1c2UgdGhlIGNvbnRhaW5lci4g VGhlcmUgYXJlIGFsc28gc29tZSA8YSBocmVmPSIjY2VsbGZvcm0iPnJlcGxhY2VtZW50IHZh cmlhYmxlczwvYT4geW91IGNhbiB1c2UgdG8gaW5zZXJ0IGR5bmFtaWMgcGllY2VzIG9mIGlu Zm9ybWF0aW9uIGluIHlvdXIgY2VsbHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ c3RlcGZpZWxkPC9zcGFuPiA6IHRoZSBJRCBvZiBhIGZpZWxkIHdpdGhpbiB3aGljaCBhbiBl dmVudCBtYXkgYmUgdG9sZCB0byByZXBlYXQuIE5vdGUgaXQgaXMgdGhlIGZpZWxkJiM4MjE3 O3MgSUQgbm90IGl0cyBuYW1lLCBzbyBmb3IgY3VzdG9tIGZpZWxkcyB5b3UgbXVzdCB1c2Ug PGNvZGU+Y3VzdG9tXzE8L2NvZGU+IG9yIDxjb2RlPmN1c3RvbV8yPC9jb2RlPiBldGMuIFdp dGhvdXQgdGhpcyBhdHRyaWJ1dGUgKGl0cyBkZWZhdWx0KSwgbm8gcmVjdXJyaW5nIGV2ZW50 cyBtYXkgYmUgZGVmaW5lZC4gU2VlIDxhIGhyZWY9IiNyZWN1ciI+cmVjdXJyaW5nIGV2ZW50 czwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b21pdGZpZWxkPC9zcGFuPiA6 IHRoZSBJRCBvZiBhIGZpZWxkIGZyb20gd2hpY2ggZXZlbnQgZGF0ZXMgbWF5IGJlIG9taXR0 ZWQgaWYgcmVxdWlyZWQuIEFzIGFib3ZlLCB0aGlzIGlzIHRoZSBJRCAobm90IG5hbWUpIG9m IHRoZSBmaWVsZC4gU3BlY2lmeSBhIGxpc3Qgb2YgZGF0ZXMgb24gd2hpY2ggdGhpcyBldmVu dCBpcyBub3QgcnVubmluZy4gU2VlIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbGxpbmcgYW5k IG9taXR0aW5nIGV2ZW50czwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2tp cGZpZWxkPC9zcGFuPiA6IHRoZSBJRCBvZiBhIGZpZWxkIGZyb20gd2hpY2ggZXZlbnQgZGF0 ZXMgbWF5IGJlIGNhbmNlbGxlZCBpZiByZXF1aXJlZC4gQWdhaW4sIHRoaXMgaXMgdGhlIElE IChub3QgbmFtZSkgb2YgdGhlIGZpZWxkLiBTcGVjaWZ5IGEgbGlzdCBvZiBkYXRlcyBvbiB3 aGljaCB0aGlzIGV2ZW50IHdpbGwgYmUgY2FuY2VsbGVkLiBTZWUgPGEgaHJlZj0iI2NhbmNl bCI+Y2FuY2VsbGluZyBhbmQgb21pdHRpbmcgZXZlbnRzPC9hPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5zaG93c2tpcHBlZDwvc3Bhbj4gOiB3aGVuIGFuIGV2ZW50IGlzIGNh bmNlbGxlZCB5b3UgY2FuIHJlbW92ZSBpdCBmcm9tIHRoZSBjYWxlbmRhciAoPGNvZGU+MDwv Y29kZT4pIG9yIHNob3cgaXQgKDxjb2RlPjE8L2NvZGU+KS4gRGVmYXVsdDogPGNvZGU+MDwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2hvd3NwYW5uZWQ8L3NwYW4+ IDogZXZlbnRzIHdpdGggZXhwaXJ5IHRpbWVzIGxhdGVyIHRoYW4gdGhlaXIgcG9zdGVkIGRh dGUgbWF5IGJlIHJlbmRlcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxscy4gSWYgeW91IGRvIG5v dCB3YW50IHRoaXMgZmVhdHVyZSB5b3UgY2FuIHR1cm4gaXQgb2ZmICg8Y29kZT4wPC9jb2Rl PikuIERlZmF1bHQ6IDxjb2RlPjE8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmhvbGlkYXlzPC9zcGFuPiA6IGxpc3Qgb2YgZGF0ZXMgdGhhdCBhcmUgZGVjcmVlZCBh cyA8YSBocmVmPSIjaG9saWRheXMiPmhvbGlkYXlzPC9hPi4gRXZlbnRzIGNhbiBiZSBzY2hl ZHVsZWQgb24gaG9saWRheXMgYnV0IG1heSBub3QgcmVjdXIgb3Igc3BhbiBhIGhvbGlkYXkg dW5sZXNzIHlvdSBleHBsaWNpdGx5IHNheSBzbyB2aWEgdGhlIDxjb2RlPmhvbGlkYXlmbGFn czwvY29kZT4gYXR0cmlidXRlLiBZb3VyIGxpc3Qgb2YgZGF0ZXMgbWF5IGJlIGRlZmVycmVk IHRvIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4sIGluIHdoaWNoIGNh c2UgZGVmaW5lIHlvdXIgbGlzdCBpbiBhIG5hbWVkIHZhcmlhYmxlIGFuZCB1c2UgPGNvZGU+ aG9saWRheXM9JnF1b3Q7dHhwdmFyOm15X3Zhcl9uYW1lJnF1b3Q7PC9jb2RlPiB0byByZWFk IHRoZW0gaW50byB0aGUgcGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmhv bGlkYXlmbGFnczwvc3Bhbj4gOiBwZXJtaXQgY2VydGFpbiA8YSBocmVmPSIjbmFtaW5nIj5l dmVudCBmbGFnczwvYT4gdG8gYmUgc2NoZWR1bGVkIG9uIGhvbGlkYXlzLiBEZWZhdWx0OiA8 Y29kZT5zdGFuZGFyZDwvY29kZT4gKGkuZS4gc3RhbmRhcmQgb25lLW9mZiBldmVudHMpIGJ1 dCBvdGhlcnMgbWF5IGJlIGxpc3RlZCBhcyB3ZWxsLiBDaG9vc2UgZnJvbSA8Y29kZT5zdGFu ZGFyZDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiBvciA8Y29kZT5tdWx0aTwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGlua3Bvc3RlZDwvc3Bhbj4gKDxzcGFu IGNsYXNzPSJyZXF1aXJlZCI+b25seSBvbiBzbWFsbCBjYWxlbmRhcnM8L3NwYW4+KSA6IGVh Y2ggY2VsbCB0aGF0IGNvbnRhaW5zIGFuIDxhIGhyZWY9IiNuYW1pbmciPmV2ZW50IGZsYWc8 L2E+IG9mIHRoZSBnaXZlbiB0eXBlKHMpIHdpbGwgaGF2ZSBpdHMgZGF5IG51bWJlciBsaW5r ZWQgdG8gdGhlIGV2ZW50JiM4MjE3O3MgdHJ1ZSBzdGFydCBkYXRlIGluc3RlYWQgb2YgdGhl IGNlbGwmIzgyMTc7cyBkYXRlLiBUaHVzLCBpZiB5b3UgaGF2ZSBhIHdlZWtseSBldmVudCB0 aGF0IHN0YXJ0cyBvbiB0aGUgMjB0aCBEZWNlbWJlciAyMDA4LCBzZXR0aW5nIDxjb2RlPmxp bmtwb3N0ZWQ9JnF1b3Q7cmVjdXImcXVvdDs8L2NvZGU+IHdpbGwgY2F1c2UgdGhlIGxpbmsg dG8gc2hvdyA8Y29kZT5kYXRlPTIwMDgtMTItMjA8L2NvZGU+IGVhY2ggd2Vlay4gVGhpcyBh bGxvd3MgeW91IHRvIGFsd2F5cyBsaW5rIHRvIGEgdmFsaWQgYXJ0aWNsZS9ldmVudC4gV2l0 aG91dCBsaW5rcG9zdGVkLCB0aGUgZGF0ZXMgd291bGQgYmUgMjAwOC0xMi0yMCwgMjAwOC0x Mi0yNywgMjAwOS0wMS0wMywgYW5kIHNvIG9uLiBEZWZhdWx0OiA8Y29kZT5yZWN1ciwgbXVs dGksIG11bHRpcHJldiwgbXVsdGlsYXN0PC9jb2RlPiAoaS5lLiBhbnkgcmVjdXJyaW5nIG9y IHNwYW5uZWQgZXZlbnQpLiBOb3RlIHRoYXQgaWYgbW9yZSB0aGFuIG9uZSBldmVudCBvY2N1 cnMgaW4gdGhlIGNlbGwsIHRoZSBsaW5rIHdpbGwgb25seSBiZSB0byB0aGUgZmlyc3QgZXZl bnQgdGhlIHBsdWdpbiBmaW5kczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYWlu dGFpbjwvc3Bhbj4gOiBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB3aGVuIG5hdmlnYXRpbmcgdGhlIGNhbGVu ZGFyIHVzaW5nIHRoZSBuZXh0L3ByZXYgb3IgbW9udGgveWVhciBzZWxlY3QgbGlzdHMuIEl0 ZW1zIHRoYXQgeW91IHdhbnQgdG8gcHJlc2VydmUgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRl ZCBoZXJlLiBDaG9vc2UgZnJvbSA8Y29kZT5jYWxpZDwvY29kZT4sIDxjb2RlPnNlY3Rpb248 L2NvZGU+LCA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxj b2RlPmFydGljbGU8L2NvZGU+LCA8Y29kZT5wZzwvY29kZT4gb3IgeW91ciBvd24gPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUuIERlZmF1bHQ6IDxjb2RlPmNhbGlk PC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+VXNlIDxjb2RlPm1haW50YWluPSZxdW90O3Nl Y3Rpb24sIGFydGljbGUsIGNhbGlkJnF1b3Q7PC9jb2RlPiBpZiB5b3UgaGF2ZSBhbiBpbmRp dmlkdWFsIGFydGljbGUgcGFnZSB3aXRoIGEgY2FsZW5kYXIgaW4gYSBzaWRlYmFyLCBzbyB0 aGUgY3VycmVudGx5IHZpZXdlZCBhcnRpY2xlIHdpbGwgcmVtYWluIGluIHZpZXcgd2hlbiBj aGFuZ2luZyBkYXRlLiBJZiB5b3Ugd2lzaCB0byBtYWludGFpbiBzdGF0ZSB5b3Vyc2VsZiBv ciBkbyBzb21ldGhpbmcgZXhvdGljLCBlbXB0eSB0aGlzIGF0dHJpYnV0ZSBmaXJzdCB0byBh dm9pZCB3ZWlyZG5lc3M8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3Rh dGljPC9zcGFuPiA6IGZvcmNlIHRoZSBjYWxlbmRhciB0byBiZSBmaXhlZCB0byBvbmUgbW9u dGgveWVhciAoaS5lLiBubyBuYXZpZ2F0aW9uKS4gTW9udGggYW5kIHllYXIgZGVjaWRlZCBi eSBhdHRyaWJ1dGVzIDxjb2RlPm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+eWVhcjwvY29kZT4g b3IgJiM4MjEyOyBpZiBvbWl0dGVkICYjODIxMjsgdGhlIGN1cnJlbnQgZGF0ZSB3aWxsIGJl IHVzZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z210PC9zcGFuPiA6IHJldHVy biBlaXRoZXIgbG9jYWwgdGltZSAoPGNvZGU+MDwvY29kZT4pIGFjY29yZGluZyB0byB0aGUg dGltZSB6b25lIHNldCBpbiBCYXNpYyBQcmVmcywgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkdN VDwvc3Bhbj4gdGltZSAoPGNvZGU+MTwvY29kZT4pLiBEZWZhdWx0OiA8Y29kZT4wPC9jb2Rl PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiA6IGFuIDxzcGFu IGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IGxhbmd1YWdlIGNvZGUgdGhhdCBmb3JtYXRzIHRp bWUgc3RyaW5ncyBzdWl0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZSAob3IgbG9j YWxlKSBhcyBkZWZpbmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dp a2kvSVNPXzYzOSI+PHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gNjM5PC9hPi4gRGVm YXVsdDogdW5zZXQgKGkuZS4gdXNlIHRoZSB2YWx1ZSBhcyBzdGF0ZWQgaW4gPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gcHJlZnMpPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJh dHRzICIgaWQ9ImF0dHN0eWxlcyI+U3R5bGUgYXR0cmlidXRlczwvaDM+CgoJPHA+T25jZSB5 b3UgaGF2ZSB0d2Vha2VkIHlvdXIgYmFzaWMgY2FsZW5kYXIgYXMgZGVzY3JpYmVkIGFib3Zl IHlvdSBjYW4gbW92ZSBvbnRvIHRoZSBzdHlsZSBhdHRyaWJ1dGVzIHNvIHlvdSBtYXkgZ2V0 IGF0IGVhY2ggZmFjZXQgb2YgdGhlIGNhbGVuZGFyIGFuZCB2aXN1YWxseSBhbHRlciBpdDo8 L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3NsZXZlbHM8L3NwYW4+ IDogY2xhc3NlcyBjYW4gYmUgYXBwbGllZCBhdCB0aGUgZXZlbnQgbGV2ZWwgKHNvIHlvdSBj YW4gY29sb3VyIGVhY2ggZXZlbnQgaW4gYSBjZWxsKSwgb3IgdGhlIGNlbGwgbGV2ZWwgKHNv IHlvdSBjYW4gY29sb3VyIHRoZSB3aG9sZSBkYXkpLCBvciBib3RoLiBZb3UgbWF5IGFsc28g cHJvbW90ZSAoaS5lLiBjb3B5KSBhbGwgZXZlbnQtbGV2ZWwgY2xhc3NlcyB0aGF0IG9jY3Vy IGluIGEgZGF5IHRvIHRoZSBjZWxsIGxldmVsIHNvIHlvdSBjYW4gY29sb3VyIHRoZSBjZWxs IGJhc2VkIG9uIHRoZSBldmVudHMgdGhhdCBpdCBjb250YWlucy4gQ29tbWEtc2VwYXJhdGUg YW55IG9mIDxjb2RlPmV2ZW50PC9jb2RlPiAoZm9yIHJlbmRlcmluZyBldmVudC1sZXZlbCBz dHlsZXMpLCA8Y29kZT5jZWxsPC9jb2RlPiAoZm9yIHJlbmRlcmluZyBzdHlsZXMgYXQgdGhl IGNlbGwgbGV2ZWwpLCBvciA8Y29kZT5jZWxscGx1czwvY29kZT4gKGZvciBjb3B5aW5nIHVu aXF1ZSBldmVudCBjbGFzc2VzIHRvIHRoZSBjZWxsKS4gTm90ZSB5b3Ugd2lsbCBub3QgbmVl ZCB0byB1c2UgPGNvZGU+Y2VsbDwvY29kZT4gYW5kIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiB0 b2dldGhlciBiZWNhdXNlIHRoZSBsYXR0ZXIgb3ZlcnJpZGVzIHRoZSBmb3JtZXIsIGJ1dCB0 aGVyZSYjODIxNztzIG5vIGhhcm0gaWYgeW91IGRvLiBEZWZhdWx0OiA8Y29kZT5jZWxsLCBl dmVudDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3NwcmVmaXhl czwvc3Bhbj4gOiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHVwIHRvIHR3byBwcmVmaXhl cyB0byBhcHBseSB0byB5b3VyIGNsYXNzIG5hbWVzLiBUaGUgZmlyc3QgcHJlZml4IGlzIGFw cGxpZWQgdG8gY2VsbC1sZXZlbCBjbGFzc2VzIChhbmQgZmxhZ3MpIGFuZCB0aGUgc2Vjb25k IHByZWZpeCBpcyBhcHBsaWVkIHRvIGV2ZW50IGNsYXNzZXMgKHNlZSA8Y29kZT5ldmVudGNs YXNzZXM8L2NvZGU+KSBzbyB5b3UgbWF5IGRpc3Rpbmd1aXNoIHRoZW0gaWYgeW91IHdpc2gu IElmIHlvdSBvbmx5IHNwZWNpZnkgb25lIHByZWZpeCBpdCB3aWxsIGJlIHVzZWQgZm9yIGJv dGggdHlwZXMgb2YgY2xhc3MuIElmIHlvdSB1c2UgPGNvZGU+Y2xhc3NwcmVmaXhlcz0mcXVv dDsmcXVvdDs8L2NvZGU+IHRoZW4gbm8gcHJlZml4ZXMgd2lsbCBiZSB1c2VkIGF0IGFsbC4g RGVmYXVsdDogPGNvZGU+c21kX2NhbF8sIHNtZF9jYWxfZXZfPC9jb2RlPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1 cyBjbGFzcyBwcmVmaXgpIHRvIGFwcGx5IHRvIHRoZSBjYWxlbmRhciB0YWJsZSBpdHNlbGYu IERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJvd2NsYXNz PC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkg dG8gZWFjaCB0YWJsZSByb3cuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmNlbGxjbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFz cyBwcmVmaXgpIHRvIGFwcGx5IHRvIGVhY2ggdGFibGUgY2VsbC4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZW1wdHljbGFzczwvc3Bhbj4gOiB0aGUg Y2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVmaXgpIHRvIGFwcGx5IHRvIGFueSBjZWxscyB0 aGF0IGRvbiYjODIxNzt0IGNvbnRhaW4gYSBkYXkgbnVtYmVyIChpLmUuIHRoZSBibGFuayBj ZWxscyBhdCB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhIG1vbnRoKS4gRGVmYXVsdDogPGNvZGU+ ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3dlZWtjbGFz czwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVmaXgpIHRvIGFwcGx5 IHRvIGVhY2ggY2VsbCBjb250YWluaW5nIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3Nw YW4+IHdlZWsgKGlmIDxjb2RlPmlzb3dlZWtzPC9jb2RlPiBpcyB1c2VkKS4gRGVmYXVsdDog PGNvZGU+d2VlazwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2Y2xh c3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0byBhcHBs eSB0byB0aGUgcHJldi9uZXh0IG1vbnRoIG5hdmlnYXRpb24gYXJyb3dzLiBJZiBhIGNvbW1h LXNlcGFyYXRlZCBsaXN0IGlzIHVzZWQsIHRoZSBmaXJzdCBpdGVtIHdpbGwgYmUgdGhlIG5h bWUgb2YgdGhlIGNsYXNzIG9uIHRoZSBsaW5rIHRvIHRoZSBwcmV2aW91cyBtb250aCwgdGhl IDJuZCBpdGVtIHRvIHRoZSBuZXh0IG1vbnRoLiBJZiBhIHNpbmdsZSB2YWx1ZSBpcyB1c2Vk LCBib3RoIGNsYXNzIG5hbWVzIHdpbGwgYmUgdGhlIHNhbWUuIERlZmF1bHQ6IDxjb2RlPm5h dnByZXYsIG5hdm5leHQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15 Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0byBh cHBseSB0byBib3RoIHRoZSBtb250aCBhbmQgeWVhciBpbiB0aGUgY2FsZW5kYXIgaGVhZGVy IChlaXRoZXIgdGhlIDxjb2RlPiZsdDtzcGFuJmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0O3Nl bGVjdCZndDs8L2NvZGU+IHRhZ3MpLiBJZiA8Y29kZT5teXdyYXB0YWc8L2NvZGU+IGlzIHVz ZWQsIHRoZSBjbGFzcyBpcyBhcHBsaWVkIHRvIHRoZSB3cmFwdGFnIGluc3RlYWQuIERlZmF1 bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50Y2xhc3Nlczwv c3Bhbj4gOiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGl0ZW1zIHRvIGFkZCBhcyBjbGFz c2VzIHRvIGVhY2ggZXZlbnQgKGVhY2ggcHJlZml4ZWQgd2l0aCB0aGUgZXZlbnQgcHJlZml4 KS4gSXQgZGVmYXVsdHMgdG8gPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IHNvIGl0IGFkZHMgdGhl IENhdGVnb3J5MSBhbmQgMiBuYW1lcyBhcyBjbGFzcyBpZGVudGlmaWVycyB0byBlYWNoIGV2 ZW50LiBUaHVzLCBvdXQgb2YgdGhlIGJveCwgeW91IGNhbiBzdHlsZSBldmVudHMgYnkgY2F0 ZWdvcnkuIDxkaXYgY2xhc3M9ImJyZWFrIj5JZiB5b3Ugd2lzaCB0byBleHRlbmQgb3IgYWx0 ZXIgdGhpcywganVzdCBnaXZlIGEgbGlzdCBvZiBmaWVsZHMgdGhhdCB5b3Ugd2FudCB0byBh cHBseSB0byB0aGUgZXZlbnQgKGUuZy4gPGNvZGU+ZXZlbnRjbGFzc2VzPSZxdW90O0lELCBB dXRob3JJRCwgY3VzdG9tXzUmcXVvdDs8L2NvZGU+IHdvdWxkIGFkZCB0aHJlZSBjbGFzc2Vz IHRvIGVhY2ggZXZlbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZXZlbnQmIzgyMTc7cyBJRCwg aXRzIGF1dGhvciAobG9naW4pIG5hbWUgYW5kIHRoZSBjb250ZW50cyBvZiBjdXN0b21fNSku IE9mIGNvdXJzZSwgaWYgeW91IHVzZSA8Y29kZT5jZWxscGx1czwvY29kZT4gbW9kZSB0aGVz ZSBjbGFzc2VzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBjZWxsIGxldmVsLiA8L2Rpdj48ZGl2 IGNsYXNzPSJicmVhayI+U29tZSBzcGVjaWFsIG5hbWVzIGV4aXN0OiA8Y29kZT5jYXRlZ29y eTwvY29kZT4gcmV0dXJucyBib3RoIENhdGVnb3J5MSBhbmQgQ2F0ZWdvcnkyIChpZiBzZXQp OyA8Y29kZT5nY2F0PC9jb2RlPiB3aWxsIHJldHVybiB0aGUgY3VycmVudCAmIzgyMTY7Z2xv YmFsJiM4MjE3OyBjYXRlZ29yeSAoaWYgY3VycmVudGx5IGZpbHRlcmluZyBieSBjYXRlZ29y eSk7IDxjb2RlPmF1dGhvcjwvY29kZT4gcmV0dXJucyB0aGUgYXV0aG9yIElEIChpZiBjdXJy ZW50bHkgZmlsdGVyaW5nIGJ5IGF1dGhvcik7IDxjb2RlPnNlY3Rpb248L2NvZGU+IGdpdmVz IHRoZSBjdXJyZW50IHNlY3Rpb248L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZXZlbnR3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZywgd2l0aG91dCBpdHMg YnJhY2tldHMsIHRvIHdyYXAgZWFjaCBldmVudCB3aXRoLiBEZWZhdWx0OiA8Y29kZT5zcGFu PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5teXdyYXB0YWc8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGl0cyBicmFja2V0cywgdG8gd3JhcCBhcm91 bmQgPGVtPmJvdGg8L2VtPiBtb250aCArIHllYXIgZHJvcGRvd24gc2VsZWN0IGxpc3RzIGFu ZCBvcHRpb25hbCBzdWJtaXQgYnV0dG9uIChpdCB3cmFwcyB0aGUgbG90LCBjb21iaW5lZCku IERlZmF1bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPGgyIGlkPSJldmVudHMiPlN0YW5kYXJk IGNlbGxzIGFuZCBldmVudHM8L2gyPgoKCTxwPlRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgY2xh c3MgLyBmbGFnIG5hbWluZyBydWxlcywgYW5kIHRoZXkgYXJlIGN1bXVsYXRpdmU6PC9wPgoK CTx1bD4KCQk8bGk+Tm9ybWFsIChkYXkpIGNlbGxzIGRvbiYjODIxNzt0IGhhdmUgYSBjbGFz cyBhc3NpZ25lZCB0byB0aGVtIHVubGVzcyB5b3Ugc3BlY2lmeSBvbmUgd2l0aCA8Y29kZT5j ZWxsY2xhc3M8L2NvZGU+PC9saT4KCQk8bGk+QW55IGNlbGwgdGhhdCBjb250YWlucyBhbiBl dmVudCAob2YgYW55IHR5cGUpIGlzIGZsYWdnZWQgYXMgYW4gPGNvZGU+ZXZlbnQ8L2NvZGU+ PC9saT4KCQk8bGk+QW55IGNlbGwgdGhhdCBmYWxscyBvbiBhIGhvbGlkYXkgaXMgZ2l2ZW4g dGhlIGZsYWcgPGNvZGU+aG9sczwvY29kZT48L2xpPgoJCTxsaT5UaGUgY3VycmVudCBkYXkg aXMgZ2l2ZW4gdGhlIGZsYWcgPGNvZGU+dG9kYXk8L2NvZGU+PC9saT4KCQk8bGk+SWYgdGhl IGNlbGwgY29udGFpbnMgYSBzdGFuZGFyZCAob25lLW9mZikgZXZlbnQsIHRoZSA8ZW0+ZXZl bnQ8L2VtPiB3aWxsIGJlIGZsYWdnZWQgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+PC9saT4KCQk8 bGk+RmxhZ3MgcHJvdmlkZSBpbmZvcm1hdGlvbiA8ZW0+YWJvdXQ8L2VtPiB0aGUgY2VsbCAv IGV2ZW50IHRoYXQgY2FuIGJlIHRlc3RlZCB3aXRoIHRoZSA8YSBocmVmPSIjaWZjYWwiPmNv bmRpdGlvbmFsIHRhZzwvYT4sIGFuZCBhcmUgYWxzbyBhZGRlZCBhcyBjbGFzcyBuYW1lcy4g V2hlbiBhc3NpZ25lZCBhcyBjbGFzc2VzLCBmbGFncyA8c3Ryb25nPmFsd2F5czwvc3Ryb25n PiB0YWtlIHRoZSAmIzgyMTY7Y2xhc3MmIzgyMTc7IHByZWZpeCAoaS5lLiB0aGUgMXN0IGl0 ZW0gZ2l2ZW4gaW4gPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4pICYjODIxMjsgd2hldGhl ciB0aGV5IGFwcGVhciBhdCB0aGUgPGVtPmV2ZW50PC9lbT4gb3IgPGVtPmNlbGw8L2VtPiBs ZXZlbHMuIFRoZSBvbmx5IGNsYXNzZXMgdGhhdCB0YWtlIHRoZSAybmQgJiM4MjE2O2V2ZW50 JiM4MjE3OyBwcmVmaXggYXJlIHRoZSBmaWVsZHMgeW91IHNwZWNpZnkgaW4gPGNvZGU+ZXZl bnRjbGFzc2VzPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPkZsYWdzIGZvciBvdGhlciB0eXBl cyBvZiBldmVudCBhcmUgZGV0YWlsZWQgYmVsb3cuPC9wPgoKCTxoMiBpZD0icmVjdXIiPlJl Y3VycmluZyBldmVudHM8L2gyPgoKCTxwPklmIHlvdSBoYXZlIG5vbWluYXRlZCBhbiBhcnRp Y2xlIGZpZWxkIGFzIHlvdXIgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPiB5b3UgbWF5IGVudGVy IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZnJlcXVlbmNpZXMgYXQgd2hpY2ggdGhpcyBl dmVudCBpcyB0byBiZSByZXBlYXRlZC4gVGhlIGZvcm1hdCBvZiB0aGUgcmVwZXRpdGlvbiBp cyAmIzgyMjA7bnVtYmVyIGludGVydmFsJiM4MjIxOywgZS5nLiA8Y29kZT40IHdlZWtzPC9j b2RlPiBvciA8Y29kZT4xMCBkYXlzPC9jb2RlPiBvciA8Y29kZT42IG1vbnRoczwvY29kZT4u IFRoZSBwbHVnaW4gd2lsbCBkbyBpdHMgYmVzdCB0byBmaWd1cmUgb3V0IHdoYXQgeW91IG1l YW4uIENvbnN1bHQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci9t YW51YWwvaHRtbF9ub2RlL0RhdGUtaW5wdXQtZm9ybWF0cy5odG1sIj5kYXRlIGlucHV0IGZv cm1hdHM8L2E+IGZvciBzb21lIG1vcmUgZXhhbXBsZXMgKGxpa2UgJiM4MjIwO3RoaXJkIG1v bmRheSYjODIyMTsgYW5kIHNvIG9uKS4gVGhpbmdzIGxpa2UgJiM4MjIwO2ZpcnN0IHRodXJz ZGF5JiM4MjIxOyBvciAmIzgyMjA7bGFzdCBmcmlkYXkmIzgyMjE7IHdpbGwgb25seSBzaG93 IHRoZSBldmVudCBvbiB0aGUgZ2l2ZW4gZmlyc3QvbGFzdCBkYXkgb2YgdGhlIG1vbnRoLjwv cD4KCgk8cD5JZiB5b3UgY2FuIGZpbmQgYSB1c2UgZm9yIGl0LCB5b3UgbWF5IHNwZWNpZnkg bXVsdGlwbGUgZnJlcXVlbmNpZXMsIGZvciBleGFtcGxlIDxjb2RlPjMgZGF5cywgMSB3ZWVr PC9jb2RlPi4gU28geW91IHdvdWxkIHNlZSB0aGF0IGV2ZW50IG9uIHRoZSBmaXJzdCBkYXks IHRoZW4gdGhlIDNyZCwgNnRoLCA3dGgsIDl0aCwgMTJ0aCwgMTR0aCwgMTV0aCwgMTh0aCwg MjFzdCwgMjR0aCYjODIzMDsgZGF5cyB0aGVyZWFmdGVyLiBOb3RlIHRoYXQgdGhlIGV2ZW50 IG9ubHkgb2NjdXJzIG9uY2Ugb24gdGhlIDIxc3QgZGF5IGV2ZW4gdGhvdWdoIHRoZSB0d28g ZnJlcXVlbmNpZXMgY2xhc2guPC9wPgoKCTxwPlJlY3VyIHJ1bGVzOjwvcD4KCgk8dWw+CgkJ PGxpPlRoZSByZXBldGl0aW9uIHdpbGwgY29udGludWUgZm9yZXZlcjxzdXAgY2xhc3M9ImZv b3Rub3RlIj48YSBocmVmPSIjZm4xNzQ3ODQ5NTA0OTYxNTM3OTBlYmJmIj4xPC9hPjwvc3Vw PiB1bmxlc3MgeW91IHNwZWNpZnkgdGhhdCB0aGUgZXZlbnQgZXhwaXJlcyBieSBzZXR0aW5n IGFuIGV4cGlyeSB0aW1lIHVuZGVyIHRoZSBhcnRpY2xlJiM4MjE3O3MgPGVtPk1vcmU8L2Vt PiBhcmVhPC9saT4KCQk8bGk+VGhlIHZlcnkgZmlyc3QgZXZlbnQgb2YgYSByZWN1cnJpbmcg c2V0IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2RlPnJlY3VyZmlyc3Q8L2NvZGU+PC9saT4K CQk8bGk+RWFjaCBmb2xsb3dpbmcgY2VsbCB0aGF0IGNvbnRhaW5zIGEgcmVjdXJyaW5nIGV2 ZW50IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2RlPnJlY3VyPC9jb2RlPjwvbGk+CgkJPGxp PkJvdGggZmxhZ3MgYXJlIGFwcGxpZWQgdG8gdGhlIGV2ZW50IGFzIGNsYXNzZXMgdXNpbmcg dGhlIGNsYXNzIHByZWZpeDwvbGk+CgkJPGxpPlJlcGVhdGVkIGV2ZW50cyBtYXkgYmUgPGEg aHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkIG9yIG9taXR0ZWQ8L2E+IG9uIGEgcGVyLWRhdGUg YmFzaXM8L2xpPgoJPC91bD4KCgk8cCBjbGFzcz0ic21hbGwiIGlkPSJmbjE3NDc4NDk1MDQ5 NjE1Mzc5MGViYmYiPjxzdXA+MTwvc3VwPiAmIzgyMTY7Zm9yZXZlciYjODIxNzsgaXMgbGlt aXRlZCB0byA5OTk5OSByZWN1cnJlbmNlcyBwZXIgZXZlbnQsIG9yIDI3NCB5ZWFycyYjODIx Nzsgd29ydGggb2YgZGFpbHkgZXZlbnRzLiA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFu PiB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGxvbmcgYmVmb3JlIHlvdSByZWFjaCB0aGlzIGxp bWl0IDotKTwvcD4KCgk8aDIgaWQ9Im11bHRpIj5NdWx0aXBsZSAoc3Bhbm5lZCkgZXZlbnRz PC9oMj4KCgk8cD5BbnkgZXZlbnQgdGhhdCBoYXMgYSBzdGFydCBkYXRlIGFuZCBhbiBleHBp cnkgZGF0ZSB0aGF0IGlzIGEgZGF5IG9yIG1vcmUgbGF0ZXIsIGFuZCA8ZW0+ZG9lcyBub3Q8 L2VtPiBoYXZlIGFueSByZXBldGl0aW9uIGluIGl0cyA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+ LCBpcyBmbGFnZ2VkIGFzIGEgPGNvZGU+bXVsdGk8L2NvZGU+LiBCeSBkZWZhdWx0IHRoZSBm aXJzdCBldmVudCBpcyBkaXNwbGF5ZWQgaW4gZnVsbCBhbmQgZWFjaCAmIzgyMTY7Y29udGlu dWF0aW9uJiM4MjE3OyBldmVudCBpcyBzaG93biBvbmx5IGFzIGEgcmlnaHQgYXJyb3cgaW4g c3Vic2VxdWVudCBjZWxscyAodGhlIGV2ZW50IHRpdGxlIGlzIGRpc3BsYXllZCBvbiBtb3Vz ZSBob3ZlcikuIEV2ZW50cyBtYXkgc3BhbiBtb250aHMgb3IgeWVhcnMgYW5kIHRoZSBwbHVn aW4gZmlndXJlcyBldmVyeXRoaW5nIG91dCB1c2luZyB0aGUgZmxhZyBydWxlczo8L3A+CgoJ PHVsPgoJCTxsaT5UaGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5uZWQgc2V0IGlzIGEgPGNvZGU+ bXVsdGlmaXJzdDwvY29kZT48L2xpPgoJCTxsaT5UaGUgbGFzdCBjZWxsIGlzIGEgPGNvZGU+ bXVsdGlsYXN0PC9jb2RlPjwvbGk+CgkJPGxpPkV2ZXJ5IG90aGVyIGNlbGwgaXMgYSA8Y29k ZT5tdWx0aTwvY29kZT4gPGVtPmV4Y2VwdDwvZW0+IGlmIHRoZSBldmVudCByb2xscyBvdmVy IGludG8gdGhlIG5leHQgbW9udGguIEluIHRoYXQgY2FzZSwgdGhlIGVudHJ5IG9uIHRoZSAx c3Qgb2YgdGhlIG1vbnRoIGlzIGEgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiB0byBpbmRpY2F0 ZSBpdCBiZWxvbmdzIHRvIGEgcHJldmlvdXMgZXZlbnQ8L2xpPgoJCTxsaT5JZiB0aGUgMXN0 IGRheSBvZiB0aGUgbW9udGggaXMgdGhlIGxhc3QgZGF5IG9mIHRoZSBldmVudCwgdGhlIDxj b2RlPm11bHRpcHJldjwvY29kZT4gaXMgZHJvcHBlZCBpbiBmYXZvdXIgb2YgPGNvZGU+bXVs dGlsYXN0PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPlN3aXRjaCBvZmYgc3Bhbm5pbmcgY29t cGxldGVseSB3aXRoIHRoZSA8Y29kZT5zaG93c3Bhbm5lZD0mcXVvdDswJnF1b3Q7PC9jb2Rl PiBhdHRyaWJ1dGUuIEV2ZW50cyB0aGF0IGhhdmUgYW4gZXhwaXJ5IGFyZSB0aGVuIGp1c3Qg c3RhbmRhcmQgZXZlbnRzLjwvcD4KCgk8cD4mIzgyMTY7Q29udGludWF0aW9uJiM4MjE3OyBj ZWxscyBtYXkgYmUgcHJvY2Vzc2VkIHdpdGggYSBzZXBhcmF0ZSBmb3JtIChjYWxsZWQgYSA8 Y29kZT5zcGFuZm9ybTwvY29kZT4gYmVjYXVzZSAmIzgyMTY7Y29udGZvcm0mIzgyMTc7IGRp ZG4mIzgyMTc7dCBzb3VuZCB2ZXJ5IG5pY2UhKS4gSWYgeW91IGNob29zZSBub3QgdG8gdXNl IGEgPGNvZGU+c3BhbmZvcm08L2NvZGU+LCB0aGUgc3RhbmRhcmQgPGNvZGU+Zm9ybTwvY29k ZT4gb3IgY29udGFpbmVyIHdpbGwgYmUgdXNlZCBhbmQgeW91IHdpbGwgaGF2ZSB0byBkaXN0 aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgbXVsdGkgZmxhZ3MgeW91cnNlbGYgdXNp bmcgdGhlIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWwgdGFnPC9hPi48L3A+CgoJPHA+ WW91IGNhbiBhbHNvIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbCBvciBvbWl0PC9hPiBkYXlz IG9mIGEgc3Bhbm5lZCBldmVudCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgeW91IGRvIHdpdGgg PGEgaHJlZj0iI3JlY3VyIj5yZWN1cnJpbmcgZXZlbnRzPC9hPiwgZXhjZXB0IHlvdSBjYW5u b3QgY2FuY2VsIHRoZSBmaXJzdCBkYXk7IHlvdSBzaG91bGQgbW92ZSB0aGUgZXZlbnQgc3Rh cnQgZGF0ZSBhbmQgYXBvbG9naXNlITwvcD4KCgk8aDIgaWQ9ImNhbmNlbCI+Q2FuY2VsbGlu ZyBhbmQgb21pdHRpbmcgZXZlbnRzPC9oMj4KCgk8cD5QbGFucyBjaGFuZ2UgYW5kIHlvdSBt YXkgZmluZCB0aGF0IGEgZ2lnIGhhcyB0byBiZSBjYW5jZWxsZWQgZm9yIHdoYXRldmVyIHJl YXNvbi4gUGVyaGFwcyB5b3UgYWR2ZXJ0aXNlIGEgd2Vla2x5IGJvb3QgZmFpciBidXQgdGhl IGZpZWxkIGlzIHdhdGVybG9nZ2VkIG9uZSB3ZWVrLiBObyBwcm9ibGVtLiBOb21pbmF0ZSBh IDxjb2RlPnNraXBmaWVsZDwvY29kZT4gaW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxl bmRhciAvJmd0OzwvY29kZT4gdGFnIGFuZCBlbnRlciB0aGUgZGF0ZSBvZiB0aGUgY2FuY2Vs bGVkIGV2ZW50LjwvcD4KCgk8cD5TaW1pbGFybHkgeW91IG1pZ2h0IHJ1biBhIHRoZWF0cmUg d2ViIHNpdGUgdGhhdCBoYXMgYSB0aHJlZS13ZWVrIHByb2R1Y3Rpb24gcGVyZm9ybWFuY2Ug b24gd2Vla25pZ2h0cyBvbmx5LiBJbnN0ZWFkIG9mIHNldHRpbmcgdXAgdGhyZWUgc2VwYXJh dGUgZXZlbnRzICYjODIxMjsgb25lIGZvciBlYWNoIHdlZWsgJiM4MjEyOyBub21pbmF0ZSBh biA8Y29kZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCBsaXN0IHRoZSBkYXRlcyBvbiB3aGljaCB0 aGUgcGVyZm9ybWFuY2UgZG9lcyBub3QgYWlyLiBPbWl0dGVkIGRhdGVzIHdpbGwgbm90LCB1 bmRlciBhbnkgY2lyY3Vtc3RhbmNlcywgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciBhbmQgdGhl eSBvdmVycmlkZSBjYW5jZWxsZWQgZGF0ZXMvaG9saWRheXMuIElmIDxjb2RlPmNlbGxwbHVz PC9jb2RlPiBtb2RlIGlzIHVzZWQsIHlvdSB3aWxsIGhvd2V2ZXIgc2VlIGEgY2VsbCBmbGFn IGxhYmVsbGVkIDxjb2RlPm9taXQ8L2NvZGU+IChwbHVzIGNsYXNzIHByZWZpeCkgaW4gY2Fz ZSB5b3UgZG8gd2lzaCB0byBzdHlsZSBzdWNoIGNlbGxzLjwvcD4KCgk8cD5UbyBzcGVjaWZ5 IHRoZSBkYXRlcyBpbiBlaXRoZXIgZmllbGQsIHVzZSBhbnkgYWNjZXB0YWJsZSBkYXRlIGZv cm1hdCwgYnV0IGRlcml2YXRpdmVzIG9mIGRkLW1vbnRobmFtZS15eXl5IG9yIG1vbnRobmFt ZS1kZC15eXl5IGFyZSB0aGUgbW9zdCB1bmFtYmlndW91cyB0byBhdm9pZCBwcm9ibGVtcyBv ZiBob3cgdGhlIHBsdWdpbiBtaWdodCBpbnRlcnByZXQgPGNvZGU+MS81PC9jb2RlPiBhcyBK YW4gNXRoIG9yIE1heSAxc3QuIFlvdSBjYW4gc3BlY2lmeSBhcyBtYW55IGNhbmNlbGxhdGlv bnMgb3Igb21pc3Npb25zIGFzIHlvdSBsaWtlOyBjb21tYS1zZXBhcmF0ZSBlYWNoIG9uZS48 L3A+CgoJPHA+QnkgZGVmYXVsdCBjYW5jZWxsZWQgZXZlbnRzIHdpbGwgbm90IGFwcGVhciBv biB0aGUgY2FsZW5kYXIgYW5kIHRoZXJlIHdpbGwgYmUgYSBjb25zcGljdW91cyBob2xlIGlu IHRoZSByZXBldGl0aW9uLiBJZiB5b3Ugc3dpdGNoIDxjb2RlPnNob3dza2lwcGVkPSZxdW90 OzEmcXVvdDs8L2NvZGU+IHRoZSBldmVudCB3aWxsIGFwcGVhciBpbiB0aGUgY2VsbCBhcyBu b3JtYWwgYW5kIHRoZSA8Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcgd2lsbCBhcHBseSB0byB0 aGUgZXZlbnQgKGFuZCBjZWxsIGlmIHlvdSBjaG9vc2UpIHNvIHlvdSBtYXkgZGV0ZWN0L3N0 eWxlIGl0LjwvcD4KCgk8aDIgaWQ9ImhvbGlkYXlzIj5Ib2xpZGF5czwvaDI+CgoJPHA+UHVi bGljIGhvbGlkYXlzIG5lZWQgbm90IGJlIGEgbnVpc2FuY2UgdG8geW91ciBldmVudHMuIEdp dmUgdGhlIHBsdWdpbiBhIGhvbGlkYXkgbGlzdCBhbmQgaXQmIzgyMTc7bGwgbWFrZSBzdXJl IHRoYXQgYW55IHJlY3VycmluZyBvciBtdWx0aSBldmVudHMgYXJlIG5vdCBzY2hlZHVsZWQg b24gdGhvc2UgZGF5cy4gPGEgaHJlZj0iI2V2ZW50cyI+U3RhbmRhcmQ8L2E+IG9uZS1vZmYg ZXZlbnRzIGFyZSBwZXJtaXR0ZWQgYnkgZGVmYXVsdCBiZWNhdXNlIHlvdSBtaWdodCB3YW50 IHRvIG9yZ2FuaXNlIGEgc3BlY2lhbCBldmVudCBvbiB0aGF0IGRheSwgdGhvdWdoIHlvdSBj YW4gZm9yYmlkIHRob3NlIHRvbyBpZiB5b3Ugd2lzaC48L3A+CgoJPHA+VGhlIGxpc3Qgb2Yg ZGF0ZXMgeW91IHNwZWNpZnkgY2FuIGJlIGVudGVyZWQgZGlyZWN0bHkgaW4gYSBzdHJpbmcg aW4gdGhlIDxjb2RlPmhvbGlkYXlzPC9jb2RlPiBhdHRyaWJ1dGUgb3IgaW4gYSA8Y29kZT4m bHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPi4gVGhlIGxhdHRlciBpcyBtb3JlIGZ1biBz byBsZXQmIzgyMTc7cyB0cnkgdGhhdDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7bmF0X2hvbHMmcXVv dDsKICAgICB2YWx1ZT0mcXVvdDtEZWMgMjUsIDI2IERlYywgMzEvRGVjLCBKYW4tMSwKICAg ICAgICBNYXkgNCAyMDA5LCAyMDA5LTA4LTMxJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6c21kX2Nh bGVuZGFyIGhvbGlkYXlzPSZxdW90O3R4cHZhcjpuYXRfaG9scyZxdW90OyAvJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+VGhlcmUgeW91IGdvLCBhbGwgZG9uZS4gVGhlIGxpc3QgdGhlcmUg c2hvd3Mgc29tZSBvZiB0aGUgdmFyaWV0eSBhbmQgYnJlYWR0aCBvZiBmb3JtYXRzIHRoYXQg dGhlIHBsdWdpbiBhbGxvd3MuIFRoZXJlIGFyZSBtb3JlLiBOb3RlIHRoYXQgc29tZSBldmVu dHMgaGF2ZSBhIHllYXIgYW5kIG90aGVycyBkb24mIzgyMTc7dC4gVGhlIG9uZXMgd2l0aG91 dCBhIHllYXIgb2NjdXIgb24gdGhlIHNhbWUgZGF0ZSBldmVyeSB5ZWFyIHdoZXJlYXMgdGhl IG9uZXMgd2l0aCBhIHllYXIgd2lsbCBvbmx5IG9jY3VyIG9uIHRoYXQgc3BlY2lmaWMgZGF0 ZS48L3A+CgoJPHA+T25jZSB5b3VyIGRhdGVzIGFyZSBkZWZpbmVkIHlvdSBjYW4gY29udHJv bCB3aGNoIGV2ZW50cyBhcmUgYWxsb3dlZCB0byBmYWxsIG9uIHRob3NlIGRhdGVzIHZpYSA8 Y29kZT5ob2xpZGF5ZmxhZ3M8L2NvZGU+LiBKdWRpY2lhbCB1c2Ugb2YgdGhhdCBhdHRyaWJ1 dGUsIDxjb2RlPnNob3dzcGFubmVkPC9jb2RlPiwgPGNvZGU+c2hvd3NraXBwZWQ8L2NvZGU+ IGFuZCB0aGUgdmFyaW91cyBmb3JtcyAmIzgyMTI7IGFsb25nIHdpdGggdGhlIDxhIGhyZWY9 IiNpZmNhbCI+Y29uZGl0aW9uYWwgdGFnPC9hPiAmIzgyMTI7IGNhbiBnaXZlIHlvdSBhIHdp ZGUgdmFyaWV0eSBvZiB3YXlzIHRvIGRpc3BsYXkgZXZlbnRzIGFuZCBjZWxscy48L3A+CgoJ PHA+SG9saWRheSBjZWxscyBhcmUgZ2l2ZW4gdGhlIGZsYWcgPGNvZGU+aG9sczwvY29kZT4s IGFuZCBhbnkgZXZlbnQgdGhhdCBpcyBub3Qgc3BlY2lmaWNhbGx5IHBlcm1pdHRlZCBieSB0 aGUgPGNvZGU+aG9saWRheWZsYWdzPC9jb2RlPiBpcyBhdXRvbWF0aWNhbGx5IGFzc2lnbmVk IGEgPGNvZGU+Y2FuY2VsPC9jb2RlPiBmbGFnIGlmIGl0IGZhbGxzIG9uIG9uZSBvZiB0aGUg ZGF5cy4gT21pdHRlZCBkYXRlcyB3aWxsLCBob3dldmVyLCBjYXVzZSB0aGUgPGNvZGU+Y2Fu Y2VsPC9jb2RlPiBmbGFnIHRvIGJlIHJlbW92ZWQuPC9wPgoKCTxoMiBpZD0iY2VsbGZvcm0i PlVzaW5nIGEgPGNvZGU+Y2VsbGZvcm08L2NvZGU+IHdpdGggcmVwbGFjZW1lbnQgdmFyaWFi bGVzPC9oMj4KCgk8cD5JZiB5b3UgZG9uJiM4MjE3O3QgbGlrZSB0aGUgbGF5b3V0IG9mIHRo ZSBkZWZhdWx0IGNlbGwsIHlvdSBjYW4gZG8gaXQgeW91cnNlbGYgd2l0aCB0aGUgPGNvZGU+ Y2VsbGZvcm08L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPHA+VG8gYnVpbGQgeW91ciBvd24g Y2VsbHMgeW91IG9mdGVuIG5lZWQgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgKHByZS1wcm9j ZXNzZWQpIGV2ZW50cywgdGhlIGRheSwgb3IgbW9udGggZXRjLiBTbyAmIzgyMTI7IGluIGFk ZGl0aW9uIHRvIHlvdXIgdXN1YWwgbWFya3VwIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiB0YWdzICYjODIxMjsgeW91IG1heSBhbHNvIGluc2VydCBhbnkgb2YgdGhlIGZv bGxvd2luZyAmIzgyMTY7cmVwbGFjZW1lbnRzJiM4MjE3OyB0byBoYXZlIHRoZSByZWxldmFu dCB2YWx1ZSBpbnNlcnRlZCBhdCB0aGF0IHBsYWNlIGluIHRoZSBjZWxsOjwvcD4KCgk8dWw+ CgkJPGxpPjxjb2RlPntkYXl9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgZGF5IChh cyBhIG51bWJlciBmcm9tIDEgdG8gMzEpPC9saT4KCQk8bGk+PGNvZGU+e3dlZWtkYXl9PC9j b2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgd2Vla2RheSAoYXMgYSB3b3JkIGluIHRoZSBs b2NhbCBsYW5ndWFnZSwgb3IgZnJvbSB5b3VyIDxjb2RlPmRheWZvcm1hdDwvY29kZT4gbGlz dCk8L2xpPgoJCTxsaT48Y29kZT57d2Vla308L2NvZGU+IDogaW5zZXJ0cyB0aGUgY3VycmVu dCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcjwvbGk+CgkJPGxp Pjxjb2RlPnttb250aH08L2NvZGU+IDogaW5zZXJ0cyB0aGUgY3VycmVudCBtb250aCAoYXMg YSBudW1iZXIgZnJvbSAxIHRvIDEyKTwvbGk+CgkJPGxpPjxjb2RlPnttb250aG5hbWV9PC9j b2RlPiA6IGluc2VydHMgdGhlIG1vbnRoIG5hbWUgaW4gdGhlIGxvY2FsIGxhbmd1YWdlPC9s aT4KCQk8bGk+PGNvZGU+e3llYXJ9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgeWVh ciAoNCBkaWdpdHMpPC9saT4KCQk8bGk+PGNvZGU+e3Nob3J0eWVhcn08L2NvZGU+IDogaW5z ZXJ0cyB0aGUgY3VycmVudCB5ZWFyICgyIGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57ZXZl bnRzfTwvY29kZT4gOiBpbnNlcnRzIGFsbCBldmVudHMgKGluY2x1ZGluZyB0aGVpciBwcm9j ZXNzZWQgZm9ybS9jb250YWluZXIgaW5mbyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9InNpemVk aWZmIj5EaWZmZXJlbmNlcyBiZXR3ZWVuIGxhcmdlIGFuZCBzbWFsbCBjYWxlbmRhcnM8L2gy PgoKCTxwPk5vdCBhIGxvdCEgQnV0IHRoZXJlIGFyZSBzb21lIHN1YnRsZXRpZXM6PC9wPgoK CTx1bD4KCQk8bGk+PGNvZGU+Y2VsbGZvcm08L2NvZGU+IGNhbm5vdCBiZSB1c2VkIG9uIGEg c21hbGwgY2FsZW5kYXI8L2xpPgoJCTxsaT5CeSBkZWZhdWx0LCBubyBldmVudHMgYXJlIHBs YWNlZCBpbiB0aGUgc21hbGwgY2FsZW5kYXIuIFlvdSBjYW4gYWRkIHRoZW0geW91cnNlbGYg aWYgeW91IHdpc2ggYmVjYXVzZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmb3JtL2NvbnRhaW5l ciBtZWNoYW5pc20gYXMgdGhlIGxhcmdlIGNhbGVuZGFyPC9saT4KCQk8bGk+VGhlIG9ubHkg dGhpbmcgcmVuZGVyZWQgaW4gYSBzbWFsbCBjYWxlbmRhciBjZWxsIGlzIHRoZSBoeXBlcmxp bmtlZCBkYXRlIGFuZCBhbnkgPGEgaHJlZj0iI25hbWluZyI+ZmxhZ3M8L2E+IHNvIHlvdSBj YW4gc3R5bGUgdGhlIGJveGVzPC9saT4KCQk8bGk+PGNvZGU+Y2xhc3NsZXZlbHM8L2NvZGU+ IGFyZSBpZ25vcmVkOiBldmVyeXRoaW5nIGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYXQg dGhlIGNlbGwgbGV2ZWwgKGkuZS4gPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IGlzIHNldCk8L2xp PgoJCTxsaT48Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+IGFyZSBzdGlsbCBob25vdXJlZCBp ZiB5b3Ugd2lzaCB0byB1c2UgYSA8Y29kZT5mb3JtPC9jb2RlPiB0byBwcm9jZXNzIHRoZW0g eW91cnNlbGY8L2xpPgoJCTxsaT5UaGUgc21hbGwgY2FsZW5kYXIgb3V0cHV0cyB5ZWFyLW1v bnRoLWRheS10aXRsZSBvciBtZXNzeSBwZXJtbGlua3Mgb25seTwvbGk+Cgk8L3VsPgoKCTxw PkFzaWRlIGZyb20gdGhhdCB0aGV5JiM4MjE3O3JlIHByZXR0eSBtdWNoIGlkZW50aWNhbC48 L3A+CgoJPGgyIGlkPSJkYXRlcyI+RGF0ZXMsIGdvdGNoYXMgYW5kIGlkaW9zeW5jcmFjaWVz PC9oMj4KCgk8cD5JZiB0aGVyZSB3YXMgb25lIGdsb2JhbCB0aW1lIHpvbmUgdGhlIHdvcmxk IHdvdWxkIGJlIHNpbXBsZXIuIFNhZGx5LCB3ZSBhbGwgbGl2ZSBpbiBkaWZmZXJlbnQgcGxh Y2VzIGFuZCB0aGUgSW50ZXJuZXQgQmVhdCBoYXNuJiM4MjE3O3QgcmVhbGx5IHRha2VuIG9m Zi4gRXZlbiBtb3JlIHNhZGx5LCBjZXJ0YWluIHVwcGVyIGVjaGVsb25zIG9mIHBvd2VyIGRl Y3JlZSB0aGF0IHR3aWNlIGEgeWVhciBzb21lIGNvdW50cmllcyBtdXN0IGFsdGVyIHRoZWly IGNsb2NrcyB0byBTYXZlIERheWxpZ2h0ICh3aGF0ZXZlciB0aGF0IG1lYW5zKS48L3A+CgoJ PHA+PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZG9lcyBpdHMgYmVzdCB0byBzaGll bGQgeW91IGZyb20gdGhpcyBtYXloZW0gYnkgYWxsb3dpbmcgeW91IHRvIHNwZWNpZnkgeW91 ciBsb2NhbGUsIHRpbWUgb2Zmc2V0IGZyb20gPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bh bj4sIGFuZCB3aGVuIDxzcGFuIGNsYXNzPSJjYXBzIj5EU1Q8L3NwYW4+IGFwcGxpZXMgaW4g eW91ciB0aW1lIHpvbmUgKG5vdCBmb3JnZXR0aW5nIHRoZSB0aW1lIHpvbmUgb2YgeW91ciBz ZXJ2ZXIgaWYgaXQgaGFwcGVucyB0byBiZSBub3doZXJlIG5lYXIgeW91KS48L3A+CgoJPHA+ QW5kIHRoZXJlaW4gbGllcyB0aGUgcnViLjwvcD4KCgk8cD5Gb3IgYSBjYWxlbmRhciBzeXN0 ZW0sIHRoaXMgaXMgc3ViLW9wdGltYWwuIEluIGZhY3QgaXQmIzgyMTc7cyBkb3ducmlnaHQg YW5ub3lpbmcgYmVjYXVzZSB3aGVuIHlvdSBzYXkgdGhhdCBhbiBldmVudCBpcyBnb2luZyB0 byBvY2N1ciBhdCA4cG0gaW4gc2l4IG1vbnRocyYjODIxNzsgdGltZSwgcGVza3kgRGF5bGln aHQgU2F2aW5ncyBtYXkgdGhlbiBiZSBpbiBlZmZlY3QgYW5kIHlvdXIgZXZlbnQgd2lsbCBh cHBlYXIgYW4gaG91ciAmIzgyMTY7b2ZmJiM4MjE3OyAoaXQgbWF5IGxvb2sgd3JvbmcgaW4g dGhlIGFkbWluIGludGVyZmFjZSBhcyB3ZWxsIGFzIGluIHlvdXIgY2FsZW5kYXIsIGRlcGVu ZGluZyBvbiB0aGUgc2V0dGluZ3MpLjwvcD4KCgk8cD5BbHNvLCBpZiB5b3VyIHNlcnZlciBv ciB5b3VyIG9mZmljZSBpcyByZWxvY2F0ZWQgYW5kIHlvdSBoYXZlIHRvIGFkanVzdCB0aW1l IHpvbmUsIGFsbCB5b3VyIGJlYXV0aWZ1bGx5IGNyYWZ0ZWQgZGF0ZXMgd2lsbCBiZSBzaGlm dGVkLiBXZWxsLCB0aGV5JiM4MjE3O3JlIG5vdCBhY3R1YWxseSBjaGFuZ2VkIGluIHRoZSBk YXRhYmFzZSB1bmxlc3MgeW91IGVkaXQgYW4gYXJ0aWNsZSBhbmQgcmUtc2F2ZSBpdCwgYnV0 IHRoZXkgPGVtPmFwcGVhcjwvZW0+IHRvIGhhdmUgc2hpZnRlZCBiZWNhdXNlIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGlzIHRyeWluZyB0byBzaGllbGQgeW91IGZyb20gdGlt ZSBidXJlYXVjcmFjeSBpbiBhIHdvcmxkIGdvbmUgbWFkLjwvcD4KCgk8cD5VbmZvcnR1bmF0 ZWx5IHRoZXJlIGlzIGxpdHRsZSB3ZSBjYW4gZG8gYWJvdXQgdGhpcyBhdCB0aGUgbW9tZW50 IHVudGlsIHRoZSB3YXkgZGF0ZXMgYXJlIGhhbmRsZWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gaXMgY2hhbmdlZC4gQnV0IHRoZXJlIGFyZSBzb21lIHNldHRpbmdzIHRo YXQgeW91IGNhbiBwbGF5IHdpdGggdG8gdHJ5IGFuZCBtYWtlIHNlbnNlIG9mIGl0IGFsbC4g TmFtZWx5IHRoZSA8Y29kZT5nbXQ8L2NvZGU+IGF0dHJpYnV0ZSB0byB0aGUgY2FsZW5kYXIg cGx1Z2luIGFuZCBhbnkgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7 cyBkYXRlLWJhc2VkIHRhZ3Mgc3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0Ozwv Y29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6ZXhwaXJlcyAvJmd0OzwvY29kZT4uIFNvbWV0aW1l cyBmaWRkbGluZyB3aXRoIHRoYXQgYW5kIHRoZSB0aW1lIHpvbmUvRFNUIGZsYWdzIHdpbGwg aGVscC4gT3RoZXIgdGltZXMgeW91JiM4MjE3O2xsIGdldCBpbiBhIHJpZ2h0IG9sZCBtZXNz LjwvcD4KCgk8cD5JZiBhbGwgdGhhdCBmYWlscywgdGhlIGNvbmRpdGlvbmFsIHRhZyBtYXkg YmUgYWJsZSB0byBoZWxwIHlvdSBjb21wYXJlIGNlcnRhaW4gZGF0ZXMgYW5kIGFwcGx5IGRp ZmZlcmVudCBhdHRyaWJ1dGVzIGRlcGVuZGluZyBvbiB0aGUgZGF5IG9mIHRoZSB5ZWFyLiBG YWlsaW5nIHRoYXQsIGp1c3QgdXNlIDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+IGFu ZCByZWZ1c2UgdG8gb2JzZXJ2ZSA8c3BhbiBjbGFzcz0iY2FwcyI+RFNUPC9zcGFuPiA6LSk8 L3A+CgoJPGgyIGlkPSJpZmNhbCI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9pZl9jYWwmZ3Q7 PC9jb2RlPjwvaDI+CgoJPHA+VGhpcyBjb25kaXRpb25hbCB0YWcgYWxsb3dzIHlvdSAmIzgy MTI7IGluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcyAgJiM4MjEyOyB0byB0ZXN0IGNlcnRh aW4gY29uZGl0aW9ucyBvZiB0aGUgY3VycmVudCBldmVudC9jZWxsLiBGb3IgZW5oYW5jZWQg Y29uZGl0aW9uYWwgY2hlY2tpbmcgKHBlcmhhcHMgaW4gY29uanVuY3Rpb24gd2l0aCA8YSBo cmVmPSIjY2Fsbm93IiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+dHhwOnNtZF9jYWxfbm93 IC8mZ3Q7PC9hPiksIGNvbnNpZGVyIHRoZSBzbWRfaWYgcGx1Z2luLjwvcD4KCgk8aDMgY2xh c3M9ImF0dHMgIiBpZD0iYXR0c2lmY2FsIj5BdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5mbGFnPC9zcGFuPiA6IHRoZSBjZWxsIG9yIGV2ZW50IGZs YWcocykgeW91IHdhbnQgdG8gdGVzdCwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gQ2hv b3NlIGZyb206IDxjb2RlPmV2ZW50PC9jb2RlPiwgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+LCA8 Y29kZT5yZWN1cmZpcnN0PC9jb2RlPiwgPGNvZGU+cmVjdXI8L2NvZGU+LCA8Y29kZT5tdWx0 aWZpcnN0PC9jb2RlPiwgPGNvZGU+bXVsdGlsYXN0PC9jb2RlPiwgPGNvZGU+bXVsdGk8L2Nv ZGU+LCA8Y29kZT5tdWx0aXByZXY8L2NvZGU+LCA8Y29kZT5jYW5jZWw8L2NvZGU+LCA8Y29k ZT5vbWl0PC9jb2RlPiwgPGNvZGU+aG9sczwvY29kZT4sIDxjb2RlPnRvZGF5PC9jb2RlPiBv ciB0aGUgc3BlY2lhbCBmbGFnIDxjb2RlPlNNRF9BTlk8L2NvZGU+IHdoaWNoIHdpbGwgdHJp Z2dlciBpZiB0aGUgY2VsbCBvciBldmVudCBjb250YWlucyBhbnkgb2YgdGhlIGFib3ZlLiBE ZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYWxpZDwvc3Bh bj4gOiB0aGUgY2FsZW5kYXIgSUQgeW91IHdpc2ggdG8gY2hlY2sgZm9yIGEgbWF0Y2guIERl ZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnllYXI8L3NwYW4+ IDogdGhlIHllYXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDogdGhlIG1vbnRo IG51bWJlciAoMS0xMikgdGhhdCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZhdWx0 OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9zcGFuPiA6IHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlciB0aGF0IHRoZSBj dXJyZW50IGNlbGwgZmFsbHMgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmRheTwvc3Bhbj4gOiB0aGUgZGF5IG51bWJlciB0aGUgY3VycmVudCBj ZWxsIGZhbGxzIGluLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5sb2dpYzwvc3Bhbj4gOiB3aGV0aGVyIHlvdSB3YW50IHRvIGNoZWNrIGlmIDxlbT5h bGw8L2VtPiB0ZXN0cyB5b3Ugbm9taW5hdGVkIGFyZSB0cnVlIGluIHRoZSBjdXJyZW50IGNl bGwgKDxjb2RlPmxvZ2ljPSZxdW90O2FuZCZxdW90OzwvY29kZT4pIG9yIDxlbT5hdCBsZWFz dCBvbmU8L2VtPiBvZiB0aGUgdGVzdHMgaXMgdHJ1ZSAoPGNvZGU+bG9naWM9JnF1b3Q7b3Im cXVvdDs8L2NvZGU+KS4gRGVmYXVsdDogPGNvZGU+YW5kPC9jb2RlPjwvbGk+Cgk8L3VsPgoK CTxwPllvdSBtYXkgY29tYmluZSB0aGUgdGVzdHMgc28sIGZvciBleGFtcGxlLCB5b3UgY2Fu IGNoZWNrIGlmIHRoZSBjZWxsIGlzIG9mIGEgY2VydGFpbiB0eXBlIDxzcGFuIGNsYXNzPSJj YXBzIj5BTkQ8L3NwYW4+IGlzIGxhdGVyIHRoYW4gdGhlIDE1dGggb2YgdGhlIG1vbnRoLjwv cD4KCgk8cD5SdWRpbWVudGFyeSBjb21wYXJhdG9ycyBjYW4gYmUgYXBwbGllZCB0byB0aGUg PGNvZGU+eWVhcjwvY29kZT4sIDxjb2RlPm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+ZGF5PC9j b2RlPiBhdHRyaWJ1dGVzLiBOb3JtYWxseSB0aGUgdmFsdWUgeW91IHN1cHBseSB3aWxsIGJl IHRlc3RlZCBmb3IgYW4gZXhhY3QgbWF0Y2ggYnV0IGlmIHlvdSBwcmVmaXggaXQgd2l0aCBv bmUgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgc2VxdWVuY2VzIHRoZW4gdGhlIGJlaGF2 aW91ciBjaGFuZ2VzOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPiZndDs8L2NvZGU+IHRlc3Rz IGlmIGF0dHJpYnV0ZSBpcyA8ZW0+Z3JlYXRlciB0aGFuPC9lbT4gdGhlIGdpdmVuIHZhbHVl IChlLmcuIDxjb2RlPnllYXI9JnF1b3Q7Jmd0OzIwMDgmcXVvdDs8L2NvZGU+KTwvbGk+CgkJ PGxpPjxjb2RlPiZndDs9PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmdyZWF0 ZXIgdGhhbiBvciBlcXVhbCB0bzwvZW0+IHRoZSBnaXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT5t b250aD0mcXVvdDsmZ3Q7PTcmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxjb2RlPiZsdDs8 L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bGVzcyB0aGFuPC9lbT4gdGhlIGdp dmVuIHZhbHVlIChlLmcuIDxjb2RlPmRheT0mcXVvdDsmbHQ7MTUmcXVvdDs8L2NvZGU+KTwv bGk+CgkJPGxpPjxjb2RlPiZsdDs9PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVt Pmxlc3MgdGhhbiBvciBlcXVhbCB0bzwvZW0+IHRoZSBnaXZlbiB2YWx1ZSAoZS5nLiA8Y29k ZT5tb250aD0mcXVvdDsmbHQ7PTUmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxjb2RlPiE8 L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bm90PC9lbT4gdGhlIGdpdmVuIHZh bHVlIChlLmcuIDxjb2RlPmRheT0mcXVvdDshMTUmcXVvdDs8L2NvZGU+KTwvbGk+Cgk8L3Vs PgoKCTxoMiBpZD0iY2FsaW5mbyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfaW5mbyAv Jmd0OzwvY29kZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcywgdXNl IHRoaXMgdGFnIHRvIG91dHB1dCBjZXJ0YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJy ZW50IGV2ZW50LjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2NhbGluZm8iPkF0 dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5cGU8L3Nw YW4+IDogdGhlIHR5cGUocykgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gcmV0dXJuLCBl YWNoIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBDaG9vc2UgZnJvbTogPGNvZGU+ZmxhZzwvY29k ZT4sIDxjb2RlPnllYXI8L2NvZGU+LCA8Y29kZT5tb250aDwvY29kZT4sIDxjb2RlPndlZWs8 L2NvZGU+LCA8Y29kZT5kYXk8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+ Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5jYWxpZDwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+am9pbjwvc3Bhbj4gOiB0aGUgY2hh cmFjdGVycyB5b3Ugd2FudCB0byB1c2UgdG8gc2VwYXJhdGUgZWFjaCBpdGVtIHlvdSBhc2tl ZCBmb3IuIE5vdGUgaXQgaXMgdGhlIGNoYXJhY3RlcnMgPGVtPmJldHdlZW48L2VtPiBlYWNo IGl0ZW0gc28gdGhlIHZlcnkgZmlyc3QgZW50cnkgd2lsbCA8c3Ryb25nPm5vdDwvc3Ryb25n PiBoYXZlIHRoZSA8Y29kZT5qb2luPC9jb2RlPiBpbiBmcm9udCBvZiBpdCAoc2VlIDxjb2Rl PmpvaW5fcHJlZml4PC9jb2RlPikuIERlZmF1bHQ6IGEgc3BhY2U8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+am9pbl9wcmVmaXg8L3NwYW4+IDogdGhlIHN0cmluZyB5b3Ugd2Fu dCB0byBwdXQgaW4gZnJvbnQgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxp c3QuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIGF0dHJpYnV0ZSBpdCBkZWZhdWx0cyB0 byA8Y29kZT5TTURfQVVUTzwvY29kZT4gd2hpY2ggdHJpZXMgdG8gYmUgY2xldmVyOgoJPHVs PgoJCTxsaT5pZiB1c2luZyA8Y29kZT50eXBlPSZxdW90O2ZsYWcmcXVvdDs8L2NvZGU+IHRo ZSBqb2luX3ByZWZpeCBpcyBzZXQgdG8gdGhlIHNhbWUgYXMgPGNvZGU+am9pbjwvY29kZT4u IFRodXMgd2l0aCA8Y29kZT5qb2luPSZxdW90OyBjYWxfJnF1b3Q7PC9jb2RlPiB5b3UgbWln aHQgZ2V0IDxjb2RlPiBjYWxfbXVsdGkgY2FsX3RvZGF5IGNhbF9ob2xzPC9jb2RlPjwvbGk+ CgkJPGxpPmlmIHVzaW5nIDxjb2RlPmh0bWw9JnF1b3Q7MSZxdW90OzwvY29kZT4gdGhlIGpv aW5fcHJlZml4IGlzIHNldCB0byBhIHF1ZXN0aW9uIG1hcmssIHRodXM6IDxjb2RlPnR5cGU9 JnF1b3Q7bW9udGgseWVhcixjYXRlZ29yeSZxdW90OyBodG1sPSZxdW90OzEmcXVvdDs8L2Nv ZGU+IG1pZ2h0IHJlbmRlciA8Y29kZT4/bT0xMiZhbXA7eT0yMDA4JmFtcDtjPWdpZ3M8L2Nv ZGU+LCB3aGljaCBjYW4gYmUgcHV0IHN0cmFpZ2h0IG9uIHRoZSBlbmQgb2YgYW4gYW5jaG9y PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmh0bWw8L3NwYW4+ IDogSWYgc2V0IHRvIDxjb2RlPjE8L2NvZGU+LCByZXR1cm5zIG5vdCBvbmx5IHRoZSB2YWx1 ZXMgeW91IHNwZWNpZmllZCBidXQgdGhlaXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdmFyaWFibGUgbmFtZXMgYXMgd2VsbCwgZ2l2aW5nIHlvdSB0aGUgZW50aXJlIHN0cmlu ZyBhcyBhIHZhbGlkIHNldCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBwYXJh bWV0ZXJzIHdoaWNoIGNhbiBiZSBhZGRlZCB0byBhbiBhbmNob3IuIEl0IG92ZXJyaWRlcyB0 aGUgPGNvZGU+am9pbjwvY29kZT4gYXR0cmlidXRlIGFuZCBzZXRzIGl0IHRvIGFuIGFtcGVy c2FuZC4gRGVmYXVsdDogPGNvZGU+MDwvY29kZT4uPGRpdiBjbGFzcz0iYnJlYWsiPlRoaXMg YXR0cmlidXRlIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGJ1aWxkaW5nIHlvdXIgb3duIGNvbnRl bnQgaW5zaWRlIGVhY2ggY2VsbCB2aWEgYSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgd2lzaCB0 byBtYWludGFpbiB0aGUgY3VycmVudCBzZWFyY2ggZW52aXJvbm1lbnQuIElmIHlvdSBhbGxv dyBwZW9wbGUgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSBvciBhdXRob3IgeW91IGNh biB1c2UgdGhpcyB0byByZXR1cm4gdGhlICYjODIxNjtjdXJyZW50JiM4MjE3OyBzdGF0ZSBv ZiBjZXJ0YWluIHZhcmlhYmxlcyBzbyB5b3UgY2FuIHBhc3MgdGhlbSB0byB0aGUgbmV4dCBw YWdlIGFuZCBtYWludGFpbiBzdGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5lc2NhcGU8L3NwYW4+IDogZXNjYXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBlbnRpdGllcyBzdWNoIGFzIDxjb2RlPiZsdDs8L2NvZGU+LCA8Y29kZT4mZ3Q7PC9j b2RlPiBhbmQgPGNvZGU+JmFtcDs8L2NvZGU+IGZvciBwYWdlIHZhbGlkYXRpb24gcHVycG9z ZXMuIFNldCB0byA8Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJuIGl0 IG9mZi4gRGVmYXVsdDogPGNvZGU+aHRtbDwvY29kZT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9 ImNhbGNsYXNzIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9jbGFzcyAvJmd0OzwvY29k ZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcywgdXNlIHRoaXMgdGFn IHRvIGFkZCBhIGxpc3Qgb2YgY2xhc3NlcyB0byB0aGUgY3VycmVudCBjZWxsL2V2ZW50LiBW ZXJ5IHVzZWZ1bCBpZiBidWlsZGluZyBjZWxscyB5b3Vyc2VsZiBiZWNhdXNlIGluc2lkZSBh IDxhIGhyZWY9IiNjYWxpZiI+Y29uZGl0aW9uYWw8L2E+IHRhZyB5b3UgY291bGQgYWRkIHBh cnRpY3VsYXIgY2xhc3MgbmFtZXMgYmFzZWQgb24gc29tZSB2YWx1ZSBpbiBhIGNlbGwuPC9w PgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzY2FsY2xhc3MiPkF0dHJpYnV0ZXM8L2gz PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hbWU8L3NwYW4+IDogYSBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgY3VycmVudCBj ZWxsL2V2ZW50LiBUaGVzZSBhcmUgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gc3ViamVjdCB0byBh bnkgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gc28gd2lsbCBhbHdheXMgYXBwZWFyIGV4 YWN0bHkgYXMgeW91IHdyaXRlIHRoZW08L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNhbG5vdyI+ VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+ UmV0dXJuIHRoZSBjdXJyZW50IGRhdGUvdGltZSwgZm9ybWF0dGVkIGhvd2V2ZXIgeW91IHBs ZWFzZS4gVXNlZnVsIGZvciBleHRyYWN0aW5nIHBhcnRzIG9mIHRoZSBjdXJyZW50IHN5c3Rl bSB0aW1lc3RhbXAgdG8gY29tcGFyZSB0aGluZ3MgdmlhIG90aGVyIGNvbmRpdGlvbmFsIHBs dWdpbnMgb3IgdGhlIDxjb2RlPiZsdDt0eHA6c21kX2lmX2NhbCZndDs8L2NvZGU+IHRhZy48 L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxub3ciPkF0dHJpYnV0ZXM8L2gz PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm1hdDwvc3Bhbj4gOiB0aGUg d2F5IHlvdSB3YW50IHRoZSBkYXRlL3RpbWUgcmVwcmVzZW50ZWQuIFVzZSBhbnkgdmFsaWQg PGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBz dHJpbmcuIERlZmF1bHRzIHRvIHRoZSBkYXRlIGZvcm1hdCB5b3Ugc2V0IGluIEJhc2ljIFBy ZWZzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5vdzwvc3Bhbj4gOiBpZiB5b3Ug ZG9uJiM4MjE3O3Qgd2FudCB0aGUgdGltZSB0byBiZSwgdW1tLCAmIzgyMTY7bm93JiM4MjE3 OyB5b3UgY2FuIHN0YXRlIHdoYXQgdGltZSAmIzgyMTY7bm93JiM4MjE3OyBpcyEgVXNlIGFu eSBzdGFuZGFyZCBkYXRlL3RpbWUgZm9ybWF0LiAgRGVmYXVsdDogdGhlIHRpbWUgYXQgd2hp Y2ggeW91IGNhbGwgdGhlIHRhZy48ZGl2IGNsYXNzPSJicmVhayI+WW91IG1heSBhbHNvIHVz ZSB0aGUgY29kZXMgPGNvZGU+P2RheTwvY29kZT4sIDxjb2RlPj9tb250aDwvY29kZT4gb3Ig PGNvZGU+P3llYXI8L2NvZGU+IGluIHlvdXIgdGltZSBzdHJpbmcgd2hpY2ggd2lsbCBkbyBv bmUgb2YgdHdvIHRoaW5nczoKCTx1bD4KCQk8bGk+cmVwbGFjZSB0aGUgY29kZXMgd2l0aCB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1ldGVycyA8Y29kZT5kPTwv Y29kZT4sIDxjb2RlPm09PC9jb2RlPiBvciA8Y29kZT55PTwvY29kZT4sIGlmIHRoZXkgYXJl IGJlaW5nIHVzZWQ8L2xpPgoJCTxsaT51c2UgdGhlIGN1cnJlbnQgZGF5LCBtb250aCBvciB5 ZWFyIChpLmUuIHRoZSBwYXJ0cyBvZiB0b2RheSYjODIxNztzIGRhdGUpPGJyIC8+CjwvZGl2 PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3Nw YW4+IDogYW4gb2Zmc2V0IGludG8gdGhlIGZ1dHVyZSB0aGF0IHlvdSB3aXNoIHRvIGFwcGx5 IHRvIDxjb2RlPm5vdzwvY29kZT4uIGUuZy4gPGNvZGU+MiBtb250aHM8L2NvZGU+LiBTZWUg PGEgaHJlZj0iI2VnNiI+RXhhbXBsZSA2PC9hPiBmb3IgYSBwcmFjdGljYWwgYXBwbGljYXRp b24gb2YgdGhpcyBhdHRyaWJ1dGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z210 PC9zcGFuPiA6IHJldHVybiBlaXRoZXIgbG9jYWwgdGltZSAoPGNvZGU+MDwvY29kZT4pIGFj Y29yZGluZyB0byB0aGUgdGltZSB6b25lIHNldCBpbiBCYXNpYyBQcmVmcywgb3IgPHNwYW4g Y2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAoPGNvZGU+MTwvY29kZT4pLiBEZWZhdWx0 OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9z cGFuPiA6IGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IGxhbmd1YWdlIGNvZGUg dGhhdCBmb3JtYXRzIHRpbWUgc3RyaW5ncyBzdWl0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBs YW5ndWFnZSAob3IgbG9jYWxlKSBhcyBkZWZpbmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvSVNPXzYzOSI+PHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bh bj4gNjM5PC9hPi4gRGVmYXVsdDogdW5zZXQgKGkuZS4gdXNlIHRoZSB2YWx1ZSBhcyBzdGF0 ZWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcHJlZnMpPC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJhcnRldiI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50 IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+V2hlbiB5b3UgY3JlYXRlIGV2ZW50cywgdGhleSBy ZWFsbHkgb25seSBleGlzdCBvbmNlIGFzIGEgc2luZ2xlIGFydGljbGU7IHRoZSByZXBldGl0 aW9uIGlzIGEgdHJpY2suIFRodXMgdGhlIGJ1aWx0LWluIGFydGljbGUgdGFncyBvbmx5IHNo b3cgdGhlIHNpbmdsZSwgcmVhbCBhcnRpY2xlcy48L3A+CgoJPHA+VGhpcyB0YWcgJiM4MjEy OyBzaW1pbGFyIGluIGZ1bmN0aW9uIHRvIDxjb2RlPiZsdDt0eHA6YXJ0aWNsZV9jdXN0b20g LyZndDs8L2NvZGU+ICYjODIxMjsgYWxsb3dzIHlvdSB0byBzZWUgcmVjdXJyaW5nIGFydGlj bGVzIGFzIGlmIHRoZXkgd2VyZSAmIzgyMTY7cmVhbCYjODIxNzsgYXJ0aWNsZXMgaW4gdGhl IGRhdGFiYXNlLiBJbnNpZGUgdGhlIHRhZyYjODIxNztzIDxjb2RlPmZvcm08L2NvZGU+IG9y IGNvbnRhaW5lciB5b3UgY2FuIHVzZSBhbGwgZXhpc3RpbmcgYXJ0aWNsZSB0YWdzIHRvIGRp c3BsYXkgYW55IGluZm9ybWF0aW9uIHlvdSBsaWtlIGFib3V0IGVhY2ggJiM4MjE2O3ZpcnR1 YWwmIzgyMTc7IGFydGljbGUuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzYXJ0 ZXYiPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0 ZXBmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIGluIDxhIGhyZWY9IiN1c2FnZSI+c21kX2NhbGVu ZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVsZCB0aGF0IGNvbnRhaW5zIGV2ZW50IHJlcGV0 aXRpb25zLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z a2lwZmllbGQ8L3NwYW4+IDogc2FtZSBhcyBpbiA8YSBocmVmPSIjdXNhZ2UiPnNtZF9jYWxl bmRhcjwvYT4sIHRoZSBJRCBvZiB0aGUgZmllbGQgdGhhdCBjb250YWlucyB0aGUgbGlzdCBv ZiBldmVudCBjYW5jZWxsYXRpb24gZGF0ZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPm9taXRmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIGluIDxhIGhy ZWY9IiN1c2FnZSI+c21kX2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVsZCB0aGF0 IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGV2ZW50IG9taXNzaW9uIGRhdGVzLiBEZWZhdWx0OiB1 bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50eXBlPC9zcGFuPiA6IHRoZSB0 eXBlcyBvZiBldmVudCB0byBkaXNwbGF5LiBDaG9vc2UgZnJvbSA8Y29kZT5zdGFuZGFyZDwv Y29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiBvciA8Y29kZT5tdWx0aTwvY29kZT4uIERlZmF1 bHQ6IDxjb2RlPnN0YW5kYXJkLCByZWN1ciwgbXVsdGk8L2NvZGU+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0 byBhIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8g YSBsaXN0IG9mIGNhdGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEg bGlzdCBvZiBhdXRob3JzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5pZDwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlzdCBvZiBh cnRpY2xlIElEcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+c3RhdHVzPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gdGhpcyBsaXN0IG9m IGFydGljbGUgc3RhdHVzLiBEZWZhdWx0OiA8Y29kZT5saXZlPC9jb2RlPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5leHBpcmVkPC9zcGFuPiA6IGRlZmluaXRpdmVseSBoaWRl ICg8Y29kZT4wPC9jb2RlPikgb3Igc2hvdyAoPGNvZGU+MTwvY29kZT4pIGV4cGlyZWQgZXZl bnRzLiBMZWF2ZSBibGFuayB0byB1c2UgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IEFkdmFuY2VkIFByZWZlcmVuY2UgPGNvZGU+UHVibGlzaCBleHBpcmVkIGFydGljbGVz PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IG9u bHkgc2hvdyBldmVudHMgaW4gdGhpcyB0aW1lIGZyYW1lLiBDaG9vc2UgZnJvbSA8Y29kZT5h bnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2RlPnBhc3Q8L2NvZGU+LiBE ZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pm1vbnRoPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgdGhhdCBvY2N1ciBpbiB0aGUgZ2l2 ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPllZWVk8L3NwYW4+LW1tLiBEZWZhdWx0OiB1bnNldDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mcm9tPC9zcGFuPiA6IG9ubHkgc2hvdyBl dmVudHMgZnJvbSB0aGlzIHN0YXJ0IGRhdGUuIENhbiBiZSBhbnkgdmFsaWQgZGF0ZSBmb3Jt YXQuIERlZmF1bHQ6IHVuc2V0IChpLmUuIGFsbCBkYXRlcyk8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+dG88L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyB1cCB0byB0aGlzIGVu ZCBkYXRlLiBDYW4gYmUgYW55IHZhbGlkIGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1bnNldCAo aS5lLiBhbGwgZGF0ZXMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3Nw YW4+IDogb3JkZXIgdGhlIGV2ZW50cyBieSB0aGlzIGNvbHVtbi4gVGhlIG1vc3QgdXNlZnVs IHZhbHVlIGlzIHRoZSBkZWZhdWx0OiA8Y29kZT5Qb3N0ZWQgYXNjPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHBhc3MgZWFjaCBtYXRjaGlu ZyBldmVudCB0byB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9y bS4gRGVmYXVsdDogdW5zZXQuIE5vdGUgdGhhdCB1c2luZyB0aGUgY29udGFpbmVyIG92ZXJy aWRlcyB0aGlzIGF0dHJpYnV0ZSwgYW5kIGlmIHlvdSBzcGVjaWZ5IG5laXRoZXIgYSBmb3Jt IG5vciBjb250YWluZXIsIHlvdSB3aWxsIHNlZSBhIGxpc3Qgb2YgYXJ0aWNsZSBwb3N0ZWQg ZGF0ZXM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6IHVu bGlrZSBhcnRpY2xlX2N1c3RvbSwgZXZlbnRzIGZyb20gdGhlIHNtZF9hcnRpY2xlX2V2ZW50 IHRhZyBtYXkgYmUgcGFnZWQgdXNpbmcgPGNvZGU+Jmx0O3R4cDpvbGRlciAvJmd0OzwvY29k ZT4gYW5kIDxjb2RlPiZsdDt0eHA6bmV3ZXIgLyZndDs8L2NvZGU+LiBZb3UgbWF5IHNwZWNp ZnkgYSBmaXhlZCBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpc3Qgb2YgZXZlbnRz IGlmIHlvdSB3aXNoLiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cgdGhpcyBtYW55IGV2ZW50 cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBhZ2U8L3N0cm9uZz4sIGkuZS4gdGhlIG51bWJlciBv ZiBldmVudHMgdG8gZGlzcGxheSwgd2hldGhlciB0aGV5IGNvbWUgZnJvbSBvbmUgJiM4MjE2 O3JlYWwmIzgyMTc7IGFydGljbGUgb3IgbWFueS4gRGVmYXVsdDogPGNvZGU+MTA8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50bGltaXQ8L3NwYW4+IDogb25s eSBzaG93IHRoaXMgbWFueSBldmVudHMgbWF4aW11bSwgPHN0cm9uZz5wZXIgZXZlbnQ8L3N0 cm9uZz4uIFNvIGlmIHlvdSBoYXZlIGEgd2Vla2x5IHJlcGVhdGVkIGV2ZW50IHRoYXQgbGFz dHMgZm9yIGZvdXIgbW9udGhzIGFuZCB5b3Ugc2V0IDxjb2RlPmV2ZW50bGltaXQ9JnF1b3Q7 NiZxdW90OzwvY29kZT4geW91IHdpbGwgb25seSBzZWUgYSBtYXhpbXVtIG9mIDYgZXZlbnRz IGZyb20gZXZlcnkgYXJ0aWNsZSBjb250YWluaW5nIHJlcGV0aXRpb24uIFRoZSByYW5nZSAo c3RhcnQgYW5kIGVuZCBkYXRlKSBpcyBkZXRlcm1pbmVkIGJ5IG90aGVyIHBsdWdpbiBhdHRy aWJ1dGVzLiBEZWZhdWx0OiA8Y29kZT4xMDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+cGFnZWJ5PC9zcGFuPiA6IGVzb3RlcmljIHBhZ2luZyBmZWF0dXJlLCBpZGVu dGljYWwgdG8gPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPi4gRGVmYXVsdDog c2FtZSBhcyA8Y29kZT5saW1pdDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+cGdvbmx5PC9zcGFuPiA6IHNldCB0byA8Y29kZT4xPC9jb2RlPiB0byBwZXJmb3JtIHRo ZSBwYWdpbmcgYWN0aW9uIHdpdGhvdXQgZGlzcGxheWluZyBhbnl0aGluZy4gUHJvYmFibHkg dXNlbGVzcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIHRv IHdyYXAgdGhlIGxpc3QgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzZXBhcmF0ZSBl YWNoIGl0ZW0gd2l0aC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLiBEZWZhdWx0OiB1bnNldDwvbGk+Cgk8 L3VsPgoKCTxwPkl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRoaXMgdGFnIGV4ZWN1dGVzIGlu IDMtcGhhc2VzOjwvcD4KCgk8b2w+CgkJPGxpPlByZS1maWx0ZXI6IGFsbCBldmVudHMgdGhh dCBtYXRjaCA8Y29kZT50eXBlPC9jb2RlPiwgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29k ZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+c3RhdHVzPC9j b2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBhbmQgPGNvZGU+ZXhwaXJlZDwvY29kZT4gYXJlIGV4 dHJhY3RlZDwvbGk+CgkJPGxpPlRpbWUtZmlsdGVyOiBhbnkgJiM4MjIwO3RpbWUtYmFzZWQm IzgyMjE7IGF0dHJpYnV0ZXMgYXJlIHRoZW4gYXBwbGllZCB0byB0aGUgYWJvdmUgbGlzdC4g QXQgdGhpcyBwb2ludCwgYW55IDxjb2RlPnN0ZXBmaWVsZDwvY29kZT4sIDxjb2RlPm9taXRm aWVsZDwvY29kZT4sIG9yIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gYXJlIGNhbGN1bGF0ZWQg dG8gZmluZCByZXBlYXRlZCBkYXRlcyAodXAgdG8gYXMgbWFueSBhcyA8Y29kZT5ldmVudGxp bWl0PC9jb2RlPiBhbGxvd3Mgb3IgdGhlIGNhbGN1bGF0aW9uIGV4Y2VlZHMgdGhlIGV2ZW50 JiM4MjE3O3MgZXhwaXJ5IHRpbWUpLiBTbyB0aGUgYXR0cmlidXRlcyA8Y29kZT50aW1lPC9j b2RlPiwgPGNvZGU+bW9udGg8L2NvZGU+LCA8Y29kZT5mcm9tPC9jb2RlPiwgYW5kIDxjb2Rl PnRvPC9jb2RlPiBhcmUgdXNlZCB0byByZWZpbmUgdGhlIGZpbHRyYXRpb248L2xpPgoJCTxs aT5PdXRwdXQ6IHdoYXRldmVyIHRoZSBwcmV2aW91cyBwaGFzZXMgaGF2ZSBsZWZ0IGJlaGlu ZCBpcyBzdWJqZWN0IHRvIGFueSBwYWdpbmcsIDxjb2RlPm9mZnNldDwvY29kZT4gYW5kIDxj b2RlPmxpbWl0PC9jb2RlPiB5b3UgbWF5IGhhdmUgc3BlY2lmaWVkLCB0aGVuIHdyYXBwZWQg YW5kIGRpc3BsYXllZDwvbGk+Cgk8L29sPgoKCTxoMiBjbGFzcz0iZXhhbXBsZXMiPkV4YW1w bGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCgk8cD5UaGUgYmVhdXR5 IG9mIHRoZSBwbHVnaW4gaXMgdGhhdCB5b3UgaGF2ZSB0aGUgZW50aXJlIGFyc2VuYWwgb2Yg PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyBhdmFpbGFibGUgdG8geW91IGlm IHlvdSBjaG9vc2UgdG8gdXNlIGEgPGNvZGU+Zm9ybTwvY29kZT4uIFRodXMgeW91IGNhbiBz ZXQgdGhlIGFydGljbGUmIzgyMTc7cyBzdGFydCBhbmQgZW5kIGRhdGVzIHRvIHRoZSBzYW1l IGRheSBhbmQgc2V0IHRoZSBzdGFydCBhbmQgZW5kIHRpbWVzIHRvIGluZGljYXRlIHRoZSBz dGFydCBhbmQgZW5kIG9mIHRoZSBldmVudC4gWW91IGNhbiB0aGVuIHVzZSBzdGFuZGFyZCA8 Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0O3R4cDpleHBp cmVzIC8mZ3Q7PC9jb2RlPiB0YWdzIHdpdGggdmFyaW91cyA8Y29kZT5mb3JtYXQ8L2NvZGU+ IHN0cmluZ3MgdG8gcmVuZGVyIHRoZSBldmVudCYjODIxNztzIGNyaXRlcmlhLjwvcD4KCgk8 cD5TaW1pbGFybHkgeW91IGNhbiB1c2UgPGNvZGU+Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7PC9j b2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDp0aXRsZSAvJmd0OzwvY29kZT4gb3Igb2YgY291cnNl IGFueSBjdXN0b20gZmllbGRzIHRvIHNob3cgYXMgbXVjaCBvciBhcyBsaXR0bGUgZGV0YWls IGFzIHlvdSBsaWtlIGluIHRoZSBjYWxlbmRhciBjZWxsLjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2NhbGVuZGFyIHNlY3Rpb249 JnF1b3Q7ZXZlbnRzJnF1b3Q7Jmd0OwombHQ7ZGl2Jmd0OwogICBFdmVudDogJmx0O3R4cDpw ZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAg ICZsdDticiAvJmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OwombHQ7L2RpdiZndDsKJmx0O2Rp diBjbGFzcz0mcXVvdDtldnRpbWUmcXVvdDsmZ3Q7CiAgIFN0YXJ0OiAmbHQ7dHhwOnBvc3Rl ZCBmb3JtYXQ9JnF1b3Q7JUg6JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDtkaXYg Y2xhc3M9JnF1b3Q7ZXZ0aW1lJnF1b3Q7Jmd0OwogICBFbmQ6ICZsdDt0eHA6ZXhwaXJlcyBm b3JtYXQ9JnF1b3Q7JUg6JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDsvdHhwOnNt ZF9jYWxlbmRhciZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI8 L2gzPgoKCTxwPlVzaW5nIHRoZSBjb25kaXRpb25hbCB0YWcgeW91IGNhbiB0YWtlIGFjdGlv biBpZiBjZXJ0YWluIGV2ZW50cyBjb250YWluIHBhcnRpY3VsYXIgZmxhZ3MuIFRoaXMgZXhh bXBsZSBhbHNvIHNob3cgYSBjb21wbGV0ZWx5IHVzZWxlc3MgbWFubmVyIG9mIGVtcGxveWlu ZyA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPi48L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaW1lIGlzOiAmbHQ7dHhwOnNtZF9j YWxfbm93IGZvcm1hdD0mcXVvdDslVCZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9jYWxlbmRh ciBmb3JtPSZxdW90O2V2Zm9ybSZxdW90OwogICAgIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21f MyZxdW90OyBza2lwZmllbGQ9JnF1b3Q7Y3VzdG9tXzYmcXVvdDsKICAgICBzcGFuZm9ybT0m cXVvdDttdWx0aXMmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkluIGZvcm0gPGNv ZGU+ZXZmb3JtPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1ciZxdW90OyZndDsK ICAmbHQ7dHhwOnBlcm1saW5rJmd0OyhSRUNVUikmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0 O3R4cDplbHNlIC8mZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAv Jmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0m cXVvdDttdWx0aWZpcnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDty aWdodCZxdW90OyZndDsmYW1wO2xhcXVvOy0tJmx0Oy9zcGFuJmd0OwogICAmbHQ7L3R4cDpz bWRfaWZfY2FsJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1cmZp cnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiZndDtPbmUgb2YgbWFueS4uLiZsdDsvc3Bh biZndDsKICAgJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPkFuZCBpbiBmb3JtIDxjb2RlPm11bHRpczwvY29kZT46 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGksIG11bHRpcHJldiZxdW90OwogICAgIGxvZ2lj PSZxdW90O29yJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0Oy0tJmFtcDtyYXF1 bzstLSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4cDpzbWRfaWZfY2FsJmd0OwombHQ7 dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDttdWx0aWxhc3QmcXVvdDsmZ3Q7CiAgICZsdDt0 eHA6cGVybWxpbmsmZ3Q7CiAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2xlZnQmcXVvdDsm Z3Q7LS0mYW1wO3JhcXVvOyZsdDsvc3BhbiZndDsgRU5EICZsdDt0eHA6dGl0bGUgLyZndDsK ICAgJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5Ob3RpY2UgdGhhdCA8Y29kZT5tdWx0aWZpcnN0PC9jb2RlPiBpcyB0 ZXN0ZWQgaW5zaWRlIHRoZSBzYW1lIGZvcm0gYXMgc3RhbmRhcmQgZXZlbnRzLiBUaGlzIGlz IGJlY2F1c2Ugb25seSA8ZW0+Y29udGludWF0aW9uIHNwYW5uZWQgY2VsbHM8L2VtPiBhcmUg cGFzc2VkIHRvIHRoZSA8Y29kZT5zcGFuZm9ybTwvY29kZT47IHRoZSBmaXJzdCBldmVudCBv ZiBhIHNwYW5uZWQgZ3JvdXAgaXMganVzdCBsaWtlIGFueSBzdGFuZGFyZCBldmVudC4gU2lt aWxhcmx5LCBpZiB5b3UgaGFkIGJlZW4gdXNpbmcgPGNvZGU+cmVjdXJmb3JtPC9jb2RlPiB0 aGUgZmlyc3QgZXZlbnQgb2YgdGhlIHJlY3VycmluZyBzZXQgd291bGQgYmUgcHJvY2Vzc2Vk IGluIHRoZSB1c3VhbCBmb3JtL2NvbnRhaW5lciBhbmQgZXZlcnkgc3Vic2VxdWVudCBldmVu dCB3b3VsZCBiZSBwYXNzZWQgdG8gdGhlIGRlZGljYXRlZCBmb3JtLjwvcD4KCgk8aDMgaWQ9 ImVnMyI+RXhhbXBsZSAzPC9oMz4KCgk8cD5Zb3UgY291bGQgdXNlIHRoZSBjYWxlbmRhciB0 YWdzIHRvIG91dHB1dCB2YXJpb3VzIHBpZWNlcyBvZiBmbGFnIGluZm9ybWF0aW9uIHRvIGJ1 aWxkIHlvdXIgb3duIGNsYXNzIG5hbWVzLiBUaGlzIGV4YW1wbGUgYWxzbyBkZW1vbnN0cmF0 ZXMgdGhlIDxjb2RlPmh0bWw8L2NvZGU+IGF0dHJpYnV0ZSBvZiA8Y29kZT4mbHQ7dHhwOnNt ZF9jYWxfaW5mbyAvJmd0OzwvY29kZT4gdG8gYnVpbGQgdXAgYSBxdWVyeSBzdHJpbmcgdGhh dCBpcyBwYXNzZWQgYWxvbmcgd2l0aCBhbiBldmVudCYjODIxNztzIDxjb2RlPmNhdGVnb3J5 MTwvY29kZT4gd2hlbiBhIHZpc2l0b3IgY2xpY2tzIHRoZSBhbmNob3IuPC9wPgoKCTxwPlRo aXMgYWxsb3dzIHlvdXIgc2l0ZSB2aXNpdG9ycyB0byBmaWx0ZXIgZXZlbnRzIGJ5IGNhdGVn b3J5IHdoaWxlIHJldGFpbmluZyB0aGUgYWJpbGl0eSB0byBzaG93IHRoZSBjYWxlbmRhciBm b3IgdGhlIGN1cnJlbnQgbW9udGgveWVhciBhbmQgc2VjdGlvbiB0aGV5IGFyZSB2aWV3aW5n IGluc3RlYWQgb2YgZHJvcHBpbmcgYmFjayB0byB0aGUgY3VycmVudCBtb250aC95ZWFyIGxp a2Ugb3RoZXIgY2FsZW5kYXIgc3lzdGVtcyBvZnRlbiBkby48L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9jYWxlbmRhciBpc293ZWVr cz0mcXVvdDtXRUVLIyZxdW90OwogICAgIHllYXJ3aWR0aD0mcXVvdDswLDImcXVvdDsgc2Vs ZWN0PSZxdW90O3llYXIsIG1vbnRoJnF1b3Q7CiAgICAgc3RlcGZpZWxkPSZxdW90O2N1c3Rv bV8xJnF1b3Q7IHNraXBmaWVsZD0mcXVvdDtjdXN0b21fMiZxdW90OwogICAgIHNob3dza2lw cGVkPSZxdW90OzEmcXVvdDsgZXhwaXJlZD0mcXVvdDsxJnF1b3Q7Jmd0OwogICAmbHQ7c3Bh biBjbGFzcz0mcXVvdDsmbHQ7dHhwOnNtZF9jYWxfaW5mbyBqb2luPSZxdW90OyBjYWxfJnF1 b3Q7IC8mZ3Q7JnF1b3Q7Jmd0OwogICAgICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6 dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgICAgJmx0O2EgaHJlZj0mcXVv dDs/Yz0mbHQ7dHhwOmNhdGVnb3J5MQogICAgICAgICAvJmd0OyZhbXA7Jmx0O3R4cDpzbWRf Y2FsX2luZm8gdHlwZT0mcXVvdDtzZWN0aW9uLCB5ZWFyLAogICAgICAgICBtb250aCwgY2Fs aWQmcXVvdDsgaHRtbD0mcXVvdDsxJnF1b3Q7IGpvaW5fcHJlZml4PSZxdW90OyZxdW90Owog ICAgICAgICAvJmd0OyZxdW90OyZndDsmbHQ7dHhwOmNhdGVnb3J5MSB0aXRsZT0mcXVvdDsx JnF1b3Q7IC8mZ3Q7Jmx0Oy9hJmd0OwogICAmbHQ7L3NwYW4mZ3Q7CiZsdDsvdHhwOnNtZF9j YWxlbmRhciZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldoYXQgaXMgYWxzbyB1c2VmdWwgYWJv dXQgdGhlIDxjb2RlPiZsdDt0eHA6c21kX2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPiB0YWcgaXMg dGhhdCBpZiBhIHBhcnRpY3VsYXIgdmFsdWUgaXMgbm90IHNldCBpdCB3aWxsIG5vdCBiZSBp bmNsdWRlZCBpbiB0aGUgb3V0cHV0LjwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0PC9o Mz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtoMiZndDtV cGNvbWluZyBFdmVudHMmbHQ7L2gyJmd0OwombHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50IHN0 ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGwmcXVv dDsgdGltZT0mcXVvdDtmdXR1cmUmcXVvdDsgZXZlbnRsaW1pdD0mcXVvdDs1JnF1b3Q7Jmd0 OwogICAmbHQ7dHhwOmlmX2RpZmZlcmVudCZndDsKICAgICAmbHQ7ZHQmZ3Q7Jmx0O3R4cDpw b3N0ZWQgZm9ybWF0PSZxdW90OyVCICVZJnF1b3Q7IC8mZ3Q7Jmx0Oy9kdCZndDsKICAgJmx0 Oy90eHA6aWZfZGlmZmVyZW50Jmd0OwogICAmbHQ7ZGQmZ3Q7CiAgICAgICZsdDt0eHA6cGVy bWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZS8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICAg ICZsdDt0eHA6cG9zdGVkIC8mZ3Q7CiAgICZsdDsvZGQmZ3Q7CiZsdDsvdHhwOnNtZF9hcnRp Y2xlX2V2ZW50Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBsaXN0cyB0aGUgbmV4dCA1 IHVwY29taW5nICYjODIxMjsgcmVjdXJyaW5nICYjODIxMjsgZXZlbnRzLCBwbHVzIGFueSBz dGFuZGFyZCBhbmQgc3Bhbm5lZCBldmVudHMsIGZvcm1hdHRpbmcgdGhlbSBhcyBhIGRlZmlu aXRpb24gbGlzdC4gSWYgeW91IGFkZCBwYWdpbmF0aW9uIHRhZ3MgeW91IGNhbiBmbGlwIHRo cm91Z2ggYWxsIHRoZSBldmVudHM7IHRoZXkgd2lsbCBiZSBkaXNwbGF5ZWQgMTAgYXQgYSB0 aW1lIG9uIGVhY2ggcGFnZSAoaWYgeW91IHdhbnQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBw YWdlIHlvdSBhcmUgb24gYXMgeW91IGZsaXAgdGhyb3VnaCBhIGNhbGVuZGFyIHRoYXQgaXMg aW4gYSBzaWRlYmFyLCBhZGQgPGNvZGU+cGc8L2NvZGU+IHRvIHRoZSA8Y29kZT5tYWludGFp bjwvY29kZT4gYXR0cmlidXRlIGluIHlvdXIgY2FsZW5kYXIpLjwvcD4KCgk8cD5Ob3RlIHRo ZSBoeXBlcmxpbmtlZCB0aXRsZSBzaG93biBoZXJlIHdpbGwgcmV0dXJuIHRvIHRoZSAmIzgy MTY7cmVhbCYjODIxNzsgYXJ0aWNsZSB3aGVuIGNsaWNrZWQuIElmIHlvdSB3YW50ZWQgdG8g YWxsb3cgcGVvcGxlIHRvIGJvb2sgYW4gZXZlbnQgb24geW91ciBpbmRpdmlkdWFsIGFydGlj bGUsIHRyeSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0OwogJmx0O3R4cDphcnRpY2xl IGxpbWl0PSZxdW90OzEmcXVvdDsmZ3Q7CiAgJmx0O2gzJmd0OyZsdDt0eHA6dGl0bGUgLyZn dDsmbHQ7L2gzJmd0OwogICZsdDt0eHA6Ym9keSAvJmd0OwogICZsdDtwJmd0O1BsZWFzZSBj aG9vc2UgYSBkYXRlIHRvIGJvb2s6Jmx0Oy9wJmd0OwogICZsdDtzZWxlY3QmZ3Q7CiAgJmx0 O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsK ICAgIHR5cGU9JnF1b3Q7cmVjdXImcXVvdDsgaWQ9JiMzOTsmbHQ7dHhwOmFydGljbGVfaWQg LyZndDsmIzM5OyZndDsKICAgICZsdDtvcHRpb24KICAgICB2YWx1ZT0mIzM5OyZsdDt0eHA6 cG9zdGVkIGZvcm1hdD0mcXVvdDslRy0lbS0lZCZxdW90Oy8mZ3Q7JiMzOTsmZ3Q7CiAgICAg ICZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslbSAlZCwgJEcmcXVvdDsgLyZndDsKICAg ICZsdDsvb3B0aW9uJmd0OwogICZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0OwogICZs dDsvc2VsZWN0Jmd0OwogJmx0Oy90eHA6YXJ0aWNsZSZndDsKJmx0Oy90eHA6aWZfaW5kaXZp ZHVhbF9hcnRpY2xlJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2l0aCBzb21lIGN1bm5pbmcg eW91IGNvdWxkIGV2ZW4gYWRkIHRoZSAmIzgyMTY7dmlydHVhbCYjODIxNzsgZGF0ZSB0aGF0 IHRoZXkgY2hvc2UgaW4geW91ciBvcmlnaW5hbCBhcnRpY2xlX2V2ZW50IGxpc3QgYW5kIHBh c3MgaXQgYXMgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSB0byB5 b3VyIGluZGl2aWR1YWwgYXJ0aWNsZSB3aGVyZSB5b3UgY291bGQgcmVhZCB0aGUgdmFsdWUg YW5kIHByZS1zZWxlY3QgdGhlIGRhdGUgZm9yIHRoZSB2aXN0b3IuPC9wPgoKCTxoMyBpZD0i ZWc1Ij5FeGFtcGxlIDU8L2gzPgoKCTxwPkhvdyBhYm91dCBiZWluZyBhYmxlIHRvIG91dHB1 dCB5b3VyIGV2ZW50cyBpbiBpQ2FsIGZvcm1hdCBzbyBvdGhlciBwZW9wbGUgY2FuIHN5bmMg dGhlaXIgY2FsZW5kYXJzIHRvIHlvdXJzPyBQdXQgdGhpcyBpbiBhIG5ldyBQYWdlIHRlbXBs YXRlIGluIGl0cyBvd24gU2VjdGlvbjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj5CRUdJTjpWQ0FMRU5EQVIKVkVSU0lPTjoyLjAKWC1XUi1DQUxOQU1F OkdpZ3MgQ2FsZW5kYXIKUFJPRElEOi0vL0FwcGxlIENvbXB1dGVyLCBJbmMvL2lDYWwgMS41 Ly9FTgpYLVdSLVRJTUVaT05FOkV1cm9wZS9Mb25kb24KJmx0O3R4cDpzbWRfYXJ0aWNsZV9l dmVudCBmb3JtPSZxdW90O2ljc2l0ZW0mcXVvdDsgdGltZT0mcXVvdDthbnkmcXVvdDsKc2Vj dGlvbj0mcXVvdDtnaWdzJnF1b3Q7IGxpbWl0PSZxdW90OzEwMDAmcXVvdDsmZ3Q7CiBCRUdJ TjpWRVZFTlQKIERUU1RBUlQ6Jmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZxdW90OyVZJW0lZFQl SCVpJXMmcXVvdDsgLyZndDsKIERURU5EOiZsdDt0eHA6ZXhwaXJlcyBmb3JtYXQ9JnF1b3Q7 JVklbSVkVCVIJWklcyZxdW90OyAvJmd0OwogU1VNTUFSWTombHQ7dHhwOnRpdGxlIC8mZ3Q7 CiBFTkQ6VkVWRU5UCiZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0OwpFTkQ6VkNBTEVO REFSCjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgb3V0cHV0IGFuIGlDYWwtZm9ybWF0 dGVkIGdpZyBsaXN0IChyZXBlYXRlZCBvciBvdGhlcndpc2UpLiBJZiB5b3UgZ290IGZyZWFr eSB3aXRoIGl0IGFuZCBhZGRlZCBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGluc2lkZSB0aGUg dGVtcGxhdGUgeW91IGNvdWxkIGV2ZW4gcmVhZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiB2YXJpYWJsZXMgYW5kIHBsdWcgdGhlbSBpbi4gVGh1cyB5b3UgY291bGQgbGlu ayB0byBpdCBkaXJlY3RseSBvZmYgdGhlIGNhbGVuZGFyIGl0c2VsZiwgcGFzcyBpbiB0aGUg c2VjdGlvbiwgY2F0ZWdvcnkgb3IgZXZlbnQgaW5mbyBhbmQgaGF2ZSBhIGN1c3RvbWlzZWQg aUNhbCBzdHJlYW0gcHVtcGVkIG91dCBvZiBUZXh0cGF0dGVybi48L3A+CgoJPHA+VGhhbmtz IHRvIHdvb2YgZm9yIGJyaW5naW5nIHRoZSBvcmlnaW5hbCA8YSBocmVmPSJodHRwOi8vZGUt b25saW5lLmNvLnVrLzIwMDYvMDUvMDUvdGV4dHBhdHRlcm4tYW5kLWljYWwiPkRhdmlkIEVt ZXJ5PC9hPiBhcnRpY2xlIHRvIG15IGF0dGVudGlvbi48L3A+CgoJPGgzIGlkPSJlZzYiPkV4 YW1wbGUgNjwvaDM+CgoJPHA+VXNpbmcgdGhlIDxjb2RlPm5vdzwvY29kZT4gYW5kIDxjb2Rl Pm9mZnNldDwvY29kZT4gYXR0cmlidXRlcyBvZiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93 IC8mZ3Q7PC9jb2RlPiB5b3UgY2FuIGVmZmVjdGl2ZWx5IHNldCAmIzgyMTY7bm93JiM4MjE3 OyB0byBiZSBhbnkgdGltZSB5b3UgbGlrZSBhbmQgbWFrZSBjYWxjdWxhdGlvbnMgYmFzZWQg b24gYSBwYXJ0aWN1bGFyIGRhdGUuPC9wPgoKCTxwPlBsdWdnaW5nIHRoZSA8Y29kZT4/bW9u dGg8L2NvZGU+IGFuZCA8Y29kZT4/eWVhcjwvY29kZT4gY29kZXMgaW4gYWxsb3dzIHlvdSB0 byBtYWtlIDxjb2RlPiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgLyZndDs8L2NvZGU+IHRy YWNrIHRoZSBjYWxlbmRhci4gU28geW91IGNhbiBhdXRvbWF0aWNhbGx5IHNob3cgb25seSB0 aGUgZXZlbnRzIHRoYXQgb2NjdXIgaW4gdGhlIG1vbnRoIHRoZSB2aXNpdG9yIGlzIGJyb3dz aW5nIHZpYSB0aGUgY2FsZW5kYXI6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgc3RlcGZpZWxkPSZxdW90O2N1c3Rv bV8xJnF1b3Q7IC8mZ3Q7CiZsdDtoMiZndDtFdmVudHMgdGhpcyBtb250aCZsdDsvaDImZ3Q7 CiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1 b3Q7CiAgICAgZnJvbT0mIzM5OyZsdDt0eHA6c21kX2NhbF9ub3cgbm93PSZxdW90OzAxLT9t b250aC0/eWVhciZxdW90OyAvJmd0OyYjMzk7CiAgICAgdG89JiMzOTsmbHQ7dHhwOnNtZF9j YWxfbm93IG5vdz0mcXVvdDs/bW9udGgtP3llYXImcXVvdDsKICAgICAgICBvZmZzZXQ9JnF1 b3Q7MSBtb250aCZxdW90OyAvJmd0OyYjMzk7IHRpbWU9JnF1b3Q7YW55JnF1b3Q7IHdyYXB0 YWc9JnF1b3Q7dWwmcXVvdDsmZ3Q7CiZsdDtsaSZndDsmbHQ7dHhwOnBlcm1saW5rJmd0OyZs dDtiJmd0OyZsdDt0eHA6dGl0bGUvJmd0OyZsdDsvYiZndDsmbHQ7L3R4cDpwZXJtbGluayZn dDsKJmx0O2JyLyZndDsmbHQ7dHhwOnBvc3RlZCAvJmd0OyZsdDsvbGkmZ3Q7CiZsdDsvdHhw OnNtZF9hcnRpY2xlX2V2ZW50Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgyIGNsYXNzPSJjaGFu Z2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4yMSBEZWMgMDggfCAwLjEgfCBJ bml0aWFsIHJlbGVhc2UgKHNwb25zb3JzIG9ubHkpPC9saT4KCQk8bGk+MjIgRGVjIDA4IHwg MC4yIHwgRml4ZWQgYSBmZXcgVzNDIHZhbGlkYXRpb24gaXNzdWVzIGFuZCBhZGRlZCBtb3Jl IGRhdGEgdmFsaWRpdHkgY2hlY2tzIDsgYXR0ZW1wdGVkIHRvIGFkZHJlc3MgZGF0ZS90aW1l em9uZSBwcm9ibGVtcyAoYW5kIG1vc3RseSBmYWlsZWQsIHNvIHdyb3RlIGFib3V0IGl0IGlu c3RlYWQpIDsgZW5oYW5jZWQgPGNvZGU+c21kX2lmX2NhbDwvY29kZT4gdGFnIHRvIGNoZWNr IGZvciBkYXRlcyBhbmQgPGNvZGU+Y2FsaWQ8L2NvZGU+IDsgYWRkZWQgPGNvZGU+ZXNjYXBl PC9jb2RlPiBhdHRyaWJ1dGUgdG8gc21kX2NhbF9pbmZvIHRhZzwvbGk+CgkJPGxpPjIzIERl YyAwOCB8IDAuMjEgfCBDaGFuZ2VkIDxjb2RlPmlzb3dlZWtzPC9jb2RlPiBzbyBhbnkgZ2l2 ZW4gdGV4dCBiZWNvbWVzIHRoZSBjb2x1bW4gaGVhZGluZyA7IGFkZGVkIDxjb2RlPndlZWs8 L2NvZGU+IGF0dHJpYnV0ZSB0byBhbGwgcmVsZXZhbnQgdGFncyA7IGFkZGVkIDxjb2RlPmRh eTwvY29kZT4gYXR0cmlidXRlIHRvIDxjb2RlPnNtZF9jYWxfaW5mbzwvY29kZT4gOyBmaXhl ZCA8Y29kZT5tb250aDwvY29kZT4gYW5kIDxjb2RlPnllYXI8L2NvZGU+IGF0dHJpYnV0ZXMg c28gY2FsZW5kYXIgbmF2aWdhdGlvbiBvdmVycmlkZXMgdGhlbTwvbGk+CgkJPGxpPjI2IERl YyAwOCB8IDAuMjIgfCBFbmhhbmNlZCA8Y29kZT5uYXZjbGFzczwvY29kZT4gOyBhZGRlZCA8 Y29kZT5saW5rcG9zdGVkPC9jb2RlPiAoYm90aCB0aGFua3MgbXJkYWxlKTwvbGk+CgkJPGxp PjI4IERlYyAwOCB8IDAuMjMgfCBDb3JyZWN0ZWQgdGltZXpvbmUgb2Zmc2V0IGZhdXggcGFz IDsgYWRkZWQgZmlyc3QvbGFzdCB3ZWVrZGF5IHJlY3VycmVuY2UgYW5kIDxjb2RlPnJlY3Vy Zm9ybTwvY29kZT4gKGFsbCB0aGFua3MgbXJkYWxlKSA7IGZpeGVkIG1pbmljYWwgJiM4MjE2 O3RvZGF5JiM4MjE3OyBiZWluZyB3cm9uZ2x5IHNldDwvbGk+CgkJPGxpPjAxIEphbiAwOSB8 IDAuMyB8IEFkZGVkIDxjb2RlPmNlbGxmb3JtPC9jb2RlPiwgPGNvZGU+bmF2aWQ8L2NvZGU+ LCA8Y29kZT5uYXZhcnJvdzwvY29kZT4sIGFuZCA8Y29kZT5tYWludGFpbjwvY29kZT4gOyBh ZGRlZCA8Y29kZT4mbHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50IC8mZ3Q7PC9jb2RlPiAodGhh bmtzIG1yZGFsZSkgYW5kIDxjb2RlPiZsdDt0eHA6c21kX2NhbF9jbGFzcyAvJmd0OzwvY29k ZT4gOyBhZGRlZCB0aGUgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+IGFuZCA8Y29kZT5yZWN1cmZp cnN0PC9jb2RlPiBldmVudCBmbGFncyA7IG1hZGUgY2VsbC9ldmVudCBmbGFnIGRpc3RpbmN0 aW9uIGJldHRlciAoZS5nLiA8Y29kZT5ldmVudDwvY29kZT4gYW5kIDxjb2RlPmhvbHM8L2Nv ZGU+IGZsYWdzIG5vdyBvY2N1ciA8ZW0+b25seTwvZW0+IGF0IHRoZSBjZWxsIGxldmVsKSA7 IGFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBhIDxjb2RlPmRheWZvcm1hdDwvY29kZT4gYXJy YXksIGFkZGVkIGEgd2VlayBzZWxlY3QgbGlzdCBhbmQgZW5oYW5jZWQgdGhlIDxjb2RlPmlz b3dlZWtzPC9jb2RlPiBhdHRyaWJ1dGUgKHRoYW5rcyB1bGkpIDsgZml4ZWQgc21kX2lmX2Nh bCYjODIxNztzIDxjb2RlPmZsYWc8L2NvZGU+IGJ1bWJsaW5nLCBhbmQgYWRkZWQgPGNvZGU+ U01EX0FOWTwvY29kZT4gdGVzdCA7IGZpeGVkIHNtZF9jYWxfaW5mbyA8Y29kZT5hdXRob3I8 L2NvZGU+IHdhcm5pbmcgYW5kIGFkZGVkIDxjb2RlPmpvaW5fcHJlZml4PC9jb2RlPiA7IGZp eGVkIGRhbmdsaW5nIGFydGljbGUgYWZ0ZXIgcGx1Z2luIHRlcm1pbmF0ZXM8L2xpPgoJCTxs aT4wMiBKYW4gMDkgfCAwLjMxIHwgQWRkZWQgPGNvZGU+b21pdGZpZWxkPC9jb2RlPiBhbmQg dGhlIDxjb2RlPm9taXQ8L2NvZGU+IGNlbGwgZmxhZyAodGhhbmtzIHdvb2YpPC9saT4KCQk8 bGk+MDQgSmFuIDA5IHwgMC4zMiB8IEFkZGVkIDxjb2RlPm5vdzwvY29kZT4gYW5kIDxjb2Rl Pm9mZnNldDwvY29kZT4gdG8gPGNvZGU+c21kX2NhbF9ub3c8L2NvZGU+IDsgZml4ZWQgd2Fy bmluZyBpZiBubyBldmVudHMgbWF0Y2ggaW4gc21kX2FydGljbGVfZXZlbnQgOyBmaXhlZCBm aXJzdC9sYXN0IHRpbWVzdGFtcHMgKHRoYW5rcyBtcmRhbGUpPC9saT4KCTwvdWw+CgoJPHA+ PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5 cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVs cCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5l dyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNz bWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBt YXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5r LCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjog bm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFw eDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1 ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1 ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZv bnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBj ZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNr OyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBz YW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEy cHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBw eCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVy bGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJp ZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zv cm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBj b2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1h bGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9o ZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9o ZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVk IHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7 IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0g LS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiNjFkM2RhY2Iw YWY0MzBlNzI0ZWJjMGE5NjIzMjhmYzQiO30=