# Name: smd_query v0.50 # Type: Client side plugin # Generic database access via SQL # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InNtZF9xdWVyeSI7czo2OiJhdXRob3IiO3M6MTE6IlN0 ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5j b20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC41MCI7czoxMToiZGVzY3JpcHRpb24iO3M6MzE6 IkdlbmVyaWMgZGF0YWJhc2UgYWNjZXNzIHZpYSBTUUwiO3M6NDoiaGVscCI7czo0MzEyOToi PGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfcXVlcnk8L2gxPgoKCTxwPlRoZSBsYXpp ZXN0IHRhZyBldmVyISBBbGxvd3MgeW91IHRvIG1ha2UgYWQtaG9jIHF1ZXJpZXMgdG8gdGhl IGRhdGFiYXNlIGFuZCBwcm9jZXNzIHRoZSByZXN1bHRzLCByb3cgYnkgcm93LCBpbiBhIGZv cm0gb3IgY29udGFpbmVyLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+ U3VwcG9ydHMgc2ltcGxlIHF1ZXJpZXMgd2l0aCBhIHJlZHVjZWQgc3ludGF4ICg8c3BhbiBj bGFzcz0iY2FwcyI+U0VMRUNUPC9zcGFuPiBjb2xzIDxzcGFuIGNsYXNzPSJjYXBzIj5GUk9N PC9zcGFuPiB0YWJsZSA8c3BhbiBjbGFzcz0iY2FwcyI+V0hFUkU8L3NwYW4+IGNsYXVzZSkg b3IgeW91ciBvd24gY3VzdG9tIHF1ZXJpZXM8L2xpPgoJCTxsaT5SZWFkIGluZm9ybWF0aW9u IGZyb20gYW55IHBhcnQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNsZSwgaW1hZ2UgKHBsYW5uZWQp LCBmaWxlLCBsaW5rLCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBvciA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLiBJZiBhbnkgZmllbGRzIGFyZSBt aXNzaW5nIHlvdSBjYW4gc3BlY2lmeSBhIGRlZmF1bHQgdmFsdWU8L2xpPgoJCTxsaT5PcHRp b25hbGx5IGZpbHRlciB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gaW5wdXQg dXNpbmcgcmVndWxhciBleHByZXNzaW9ucywgZm9yIHNhZmV0eTwvbGk+CgkJPGxpPkVhY2gg cm93IGNhbiBiZSBwYXNzZWQgdG8gYSBmb3JtIChvciB0aGUgcGx1Z2luIGNhbiBiZSB1c2Vk IGFzIGEgY29udGFpbmVyIHRhZyB3aXRoIG9yIHdpdGhvdXQgPGNvZGU+Jmx0O3R4cDplbHNl IC8mZ3Q7PC9jb2RlPikgdG8gZGlzcGxheSB0aGUgcmVzdWx0czwvbGk+CgkJPGxpPkNvbHVt biBoZWFkaW5ncyBtYXkgYmUgb3V0cHV0IHVzaW5nIGEgc2Vjb25kIGZvcm08L2xpPgoJCTxs aT5SZXN1bHQgc2V0cyBjYW4gYmUgcGFnaW5hdGVkLCB3aXRoIHN1cHBvcnQgZm9yIGEgcGFn aW5nIGZvcm08L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJo dHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFjdCI+U3RlZiBEYXdzb248L2E+PC9wPgoKCTxo Mj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhl IHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3Bs dWdpbnMvOTc2L3NtZF9xdWVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3Rl IHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWlu IC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZp c2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/aWQ9MjcyNzkiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byBy ZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoK CTxwPlVuaW5zdGFsbCBieSBzaW1wbHkgZGVsZXRpbmcgdGhlIHBsdWdpbiBmcm9tIHRoZSBB ZG1pbi0mZ3Q7UGx1Z2lucyBwYW5lLjwvcD4KCgk8aDI+PGNvZGU+Jmx0O3R4cDpzbWRfcXVl cnkgLyZndDs8L2NvZGU+IHVzYWdlPC9oMj4KCgk8cD5Vc2UgdGhpcyB0YWcgaW4gYW55IHBh Z2UsIGZvcm0sIGFydGljbGUsIGZpbGUsIGxpbmssIGV0YyBjb250ZXh0IHRvIGdyYWIgc3R1 ZmYgZnJvbSB0aGUgZGF0YWJhc2UuIFRoZSBwbHVnaW4gY2FuIG9wZXJhdGUgaW4gb25lIG9m IHR3byBtb2Rlczo8L3A+CgoJPG9sPgoJCTxsaT5zaW1wbGUgbW9kZSBqdXN0IGFsbG93cyA8 Y29kZT5TRUxFQ1Qgc3R1ZmYgRlJPTSB0YWJsZSBXSEVSRSBjbGF1c2U8L2NvZGU+PC9saT4K CQk8bGk+YWR2YW5jZWQgbW9kZSB1c2VzIHRoZSA8Y29kZT5xdWVyeTwvY29kZT4gYXR0cmli dXRlIHNvIHlvdSBjYW4gZGVzaWduIHlvdXIgb3duIHF1ZXJ5LiBJdCBjYW4gaW5jbHVkZSA8 c3BhbiBjbGFzcz0iY2FwcyI+Q09VTlQ8L3NwYW4+ICgqKSwgam9pbnMsIGFueXRoaW5nOyBw ZXJoYXBzIGV2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPklOU0VSVDwvc3Bhbj4gYW5kIDxzcGFu IGNsYXNzPSJjYXBzIj5VUERBVEU8L3NwYW4+ICg/KSBhbHRob3VnaCBpdCYjODIxNztzIHVu dGVzdGVkIGFuZCBsaWFibGUgdG8gZmxvb2Rpbmc8L2xpPgoJPC9vbD4KCgk8aDMgY2xhc3M9 ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDM+CgoJPGg0PlNpbXBsZSBx dWVyaWVzPC9oND4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Y29sdW1uPC9zcGFuPiA6IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbHVtbnMgdG8g cmV0cmlldmUgZnJvbSB0aGUgZGF0YWJhc2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+dGFibGU8L3NwYW4+IDogbmFtZSBvZiB0aGUgdGFibGUgdG8gcmV0cmlldmUgdGhlIGNv bHVtbnMgZnJvbSAoeWVzLCBub24tPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFi bGVzIGFyZSBhbHNvIHN1cHBvcnRlZCBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBkYXRhYmFz ZSA6LSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d2hlcmU8L3NwYW4+IDogYW55 IGV4dHJhIGNsYXVzZSB5b3Ugd2lzaCB0byBzcGVjaWZ5LiBEZWZhdWx0cyB0byAmIzgyMjA7 dGhlIHdob2xlIGRhcm4gdGFibGUmIzgyMjE7PC9saT4KCTwvdWw+CgoJPGg0PkFkdmFuY2Vk IHF1ZXJpZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnF1ZXJ5PC9z cGFuPiA6IGFueSBxdWVyeSB5b3UgbGlrZSBjYW4gYmUgdXNlZCBoZXJlLiBPdmVycmlkZXMg PGNvZGU+Y29sdW1uPC9jb2RlPiwgPGNvZGU+dGFibGU8L2NvZGU+IGFuZCA8Y29kZT53aGVy ZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9kZTwvc3Bhbj4gOiB5 b3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGFsdGVyIHRoaXMgcGFyYW1ldGVyIGFzIGl0IGlzIHNl dCB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcXVlcnkgdHlwZS4gSWYgeW91IGFyZSB1 c2luZyA8c3BhbiBjbGFzcz0iY2FwcyI+U0VMRUNUPC9zcGFuPiBvciA8c3BhbiBjbGFzcz0i Y2FwcyI+U0hPVzwvc3Bhbj4gc3RhdGVtZW50cywgdGhlIG1vZGUgaXMgc2V0IHRvIDxjb2Rl Pm91dHB1dDwvY29kZT47IGZvciBhbnkgb3RoZXIgdHlwZSBvZiBxdWVyeSAoZS5nLiA8c3Bh biBjbGFzcz0iY2FwcyI+SU5TRVJUPC9zcGFuPi9VUERBVEUpIGl0IGlzIHNldCB0byA8Y29k ZT5pbnB1dDwvY29kZT4uIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG1v ZGVzIGlzIHRoYXQgaWYgaXQgc2V0IHRvIDxjb2RlPmlucHV0PC9jb2RlPiB5b3UgY2FuIHVz ZSBzbWRfcXVlcnkgYXMgYSBzZWxmLWNsb3NpbmcgdGFnIGJlY2F1c2UgaXQgZG9lcyBub3Qg dXNlIHRoZSBmb3JtL2NvbnRhaW5lciB0byBwYXJzZSB0aGUgcmVzdWx0IHNldC4gQ2hhbmdl IHRoaXMgcGFyYW1ldGVyIG9ubHkgaWYgdGhlIHBsdWdpbiBkZXRlY3RzIHRoZSBtb2RlIHdy b25nbHkgb3IgeW91IGFyZSBkb2luZyBzb21ldGhpbmcgdW5vcnRob2RveCB3aXRoIHlvdXIg cXVlcnkuIERlZmF1bHQ6IDxjb2RlPmF1dG88L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnBvcHVsYXRlPC9zcGFuPiA6IHlvdSB1c3VhbGx5IHVzZSA8Y29kZT57cmVw bGFjZW1lbnR9PC9jb2RlPiB2YXJpYWJsZXMgaW4geW91ciBzbWRfcXVlcnkgY29udGFpbmVy IGJ1dCBpZiB5b3UgYXJlIGRlYWxpbmcgd2l0aCB0aGUgbmF0aXZlIFRleHRwYXR0ZXJuIGNv bnRlbnQgdHlwZXMgKGFydGljbGUsIGltYWdlLCBmaWxlLCBsaW5rKSB5b3UgY2FuIGluZm9y bSBzbWRfcXVlcnkgd2hpY2ggb2YgdGhlIGZvdXIgeW91IGFyZSB1c2luZyB2aWEgdGhpcyBh dHRyaWJ1dGUuIFlvdSBjYW4gdGhlbiB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gdGFncyBpbnNpZGUgeW91ciBmb3JtL2NvbnRhaW5lci4gU2VlIDxhIGhyZWY9IiNlZzEz Ij5leGFtcGxlIDEzPC9hPjwvbGk+Cgk8L3VsPgoKCTxoND5Gb3JtcyBhbmQgcGFnaW5nPC9o ND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSBm b3JtIHRvIHVzZSB0byBwYXJzZSBlYWNoIHJldHVybmVkIHJvdy4gU2VlIDxhIGhyZWY9IiNy ZXBsYWNlbWVudHMiPnJlcGxhY2VtZW50czwvYT4uIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBw bHVnaW4gd2lsbCB1c2UgYW55dGhpbmcgY29udGFpbmVkIGJldHdlZW4gaXRzIG9wZW5pbmcg YW5kIGNsb3NpbmcgdGFnPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbHNmb3Jt PC9zcGFuPiA6IG9wdGlvbmFsIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0g dG8gcGFyc2UgYW55IGhlYWRlciByb3cgY29udGFpbmluZyBjb2x1bW4gbmFtZXMgKG9mIGxp bWl0ZWQgdXNlKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdlZm9ybTwvc3Bh bj4gOiBvcHRpb25hbCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQg dG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIGFueSBwYWdpbmcgbmF2aWdhdGlvbiBhbmQgc3Rh dGlzdGljcyBzdWNoIGFzIHBhZ2UgbnVtYmVyLCBxdWFudGl0eSBvZiByZWNvcmRzIHBlciBw YWdlLCB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcywgZXRjLjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5wYWdlcG9zPC9zcGFuPiA6IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFnaW5n IGluZm9ybWF0aW9uLiBPcHRpb25zIGFyZSA8Y29kZT5iZWxvdzwvY29kZT4gKHRoZSBkZWZh dWx0KSwgPGNvZGU+YWJvdmU8L2NvZGU+LCBvciBib3RoIG9mIHRoZW0gc2VwYXJhdGVkIGJ5 IDxjb2RlPmRlbGltPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wcmVw YXJzZTwvc3Bhbj4gOiBub3JtYWxseSwgYW55IGNvbnRhaW5lciBvciBmb3JtIHdpbGwgaGF2 ZSBpdHMgcmVwbGFjZW1lbnQgdmFyaWFibGVzIHN3YXBwZWQgZm9yIGNvbnRlbnQgYW5kIDxl bT50aGVuPC9lbT4gaXQgd2lsbCBiZSBwYXJzZWQgdG8gcHJvY2VzcyBhbnkgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncy4gSWYgeW91IHdpc2ggdG8gcmV2ZXJzZSB0aGlz IG9yZGVyIHNvIHRoYXQgdGhlIGNvbnRhaW5lciBpcyBwYXJzZWQgZmlyc3QgYmVmb3JlIHRo ZSByZXBsYWNlbWVudHMgYXJlIG1hZGUsIHNwZWNpZnkgPGNvZGU+cHJlcGFyc2U9JnF1b3Q7 MSZxdW90OzwvY29kZT4uIFZlcnkgdXNlZnVsIHdoZW4gdXNpbmcgdGhlIDxjb2RlPiZsdDt0 eHA6eWllbGQgLyZndDs8L2NvZGU+IHRhZyAoc2VlIDxhIGhyZWY9IiNlZzkiPmV4YW1wbGUg OTwvYT4pLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0 PC9zcGFuPiA6IHNob3cgdGhpcyBtYW55IHJlc3VsdHMgcGVyIHBhZ2UuIEhhcyBubyBiZWFy aW5nIG9uIGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiA8Y29kZT5MSU1JVDwv Y29kZT4geW91IG1heSBzZXQuIFNldHRpbmcgYSA8Y29kZT5saW1pdDwvY29kZT4gaW4gdGhl IHNtZF9xdWVyeSB0YWcgc3dpdGNoZXMgcGFnaW5nIG9uIGF1dG9tYXRpY2FsbHkgc28geW91 IGNhbiB1c2UgdGhlIDxjb2RlPiZsdDt0eHA6b2xkZXIgLyZndDs8L2NvZGU+IGFuZCA8Y29k ZT4mbHQ7dHhwOm5ld2VyIC8mZ3Q7PC9jb2RlPiB0YWdzIGluc2lkZSB5b3VyIDxjb2RlPnBh Z2Vmb3JtPC9jb2RlPiB0byBzdGVwIHRocm91Z2ggZWFjaCBwYWdlIG9mIHJlc3VsdHMuIFlv dSBtYXkgYWxzbyBjb25zdHJ1Y3QgeW91ciBvd24gcGFnaW5nIChzZWUgPGEgaHJlZj0iI2Vn MTEiPmV4YW1wbGUgMTE8L2E+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZz ZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgcm93cyBiZWZvcmUgb3V0cHV0dGluZyB0aGUg cmVzdWx0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdldmFyPC9zcGFuPiA6 IGlmIHlvdSBhcmUgcHV0dGluZyBhbiBzbWRfcXVlcnkgb24gdGhlIHNhbWUgcGFnZSBhcyBh IHN0YW5kYXJkIGFydGljbGUgbGlzdCwgdGhlIGJ1aWx0LWluIG5ld2VyIGFuZCBvbGRlciB0 YWdzIHdpbGwgY2xhc2ggd2l0aCB0aG9zZSBvZiBzbWRfcXVlcnk7IGNsaWNraW5nIG5leHQv cHJldiB3aWxsIHN0ZXAgdGhyb3VnaCBib3RoIHlvdXIgcmVzdWx0IHNldCBhbmQgeW91ciBh cnRpY2xlIGxpc3QuIFNwZWNpZnkgYSBkaWZmZXJlbnQgdmFyaWFibGUgbmFtZSBoZXJlIHNv IHRoZSB0d28gbGlzdHMgY2FuIGJlIG5hdmlnYXRlZCBpbmRlcGVuZGVudGx5LCBlLmcuIDxj b2RlPnBhZ2V2YXI9JnF1b3Q7cXBhZ2UmcXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQgaWYgeW91 IGNoYW5nZSB0aGlzLCB5b3Ugd2lsbCBoYXZlIHRvIGdlbmVyYXRlIHlvdXIgb3duIGN1c3Rv bSBuZXdlci9vbGRlciBsaW5rcyAoc2VlIDxhIGhyZWY9IiNlZzExIj5leGFtcGxlIDExPC9h PikgYW5kIHRoZSA8YSBocmVmPSIjc21kX3FpZiI+Y29uZGl0aW9uYWwgdGFnczwvYT4uIFlv dSBtYXkgYWxzbyB1c2UgdGhlIHNwZWNpYWwgdmFsdWUgPGNvZGU+cGFnZXZhcj0mcXVvdDtT TURfUVVFUllfVU5JUVVFX0lEJnF1b3Q7PC9jb2RlPiB3aGljaCB3aWxsIGFzc2lnbiB0aGUg cGFnaW5nIHZhcmlhYmxlIHRvIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2Ugb2YgeW91ciBxdWVy eS4gVGhpcyB3aWxsIGFsbG93IHlvdSB0byB1c2UgbXVsdGlwbGUgc21kX3F1ZXJ5IHRhZ3Mg b24gYSBzaW5nbGUgcGFnZSBhbmQgbmF2aWdhdGUgdGhlbSBpbmRlcGVuZGVudGx5IHVzaW5n IHRoZSBzYW1lIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiAoc2VlIDxhIGhyZWY9IiNlZzEyIj5l eGFtcGxlIDEyPC9hPiBmb3IgZGV0YWlscykuIERlZmF1bHQ6IDxjb2RlPnBnPC9jb2RlPjwv bGk+Cgk8L3VsPgoKCTxoND5GaWx0ZXJzPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj51cmxmaWx0ZXI8L3NwYW4+IDogZmlsdGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IGlucHV0IHdpdGggdGhpcyBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMg KGVhY2ggc2VwYXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPik8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+dXJscmVwbGFjZTwvc3Bhbj4gOiByZXBsYWNlIGVhY2ggZmlsdGVy ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gZWxlbWVudCBsaXN0ZWQgaW4gPGNv ZGU+dXJsZmlsdGVyPC9jb2RlPiB3aXRoIHRoaXMgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Np b25zIChlYWNoIHNlcGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT4pLiBJZiBub3QgdXNl ZCwgYW55dGhpbmcgbWF0Y2hpbmcgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB3aWxsIGJlIHJl bW92ZWQgZnJvbSBhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGVz LiBTZWUgPGEgaHJlZj0iI2ZpbHRlcmluZyI+RmlsdGVyaW5nIGFuZCBpbmplY3Rpb248L2E+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRlZmF1bHRzPC9zcGFuPiA6IGNvbW1h IHNlcGFyYXRlZCBsaXN0IG9mIHZhbHVlcyB0byB1c2UgaW4gdGhlIGV2ZW50IHNvbWUgZmll bGQgeW91IHNwZWNpZmllZCBkb2VzbiYjODIxNzt0IGV4aXN0LiBFYWNoIGRlZmF1bHQgc2hv dWxkIGJlIGdpdmVuIGFzIDxjb2RlPm5hbWU6IHZhbHVlPC9jb2RlPiAodGhlIDxjb2RlPjo8 L2NvZGU+IGlzIGNvbmZpZ3VyYWJsZSB2aWEgdGhlIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+ IGF0dHJpYnV0ZSkuIEZvciBleGFtcGxlIDxjb2RlPmRlZmF1bHRzPSZxdW90O2lkOiAxLCBt eV9jYXQ6IG1hbW1hbHMsIHVzZXJfc2VjOiA/ZGVmc2VjJnF1b3Q7PC9jb2RlPiB3b3VsZCBt ZWFuIHRoYXQgaWYgdGhlIDxjb2RlPmlkPC9jb2RlPiBmaWVsZCB3YXMgYmxhbmssIHRoZSBu dW1iZXIgMSB3b3VsZCBiZSB1c2VkOyBpZiB0aGUgdmFyaWFibGUgPGNvZGU+bXlfY2F0PC9j b2RlPiB3YXMgZW1wdHksIHRoZSB3b3JkIDxjb2RlPm1hbW1hbHM8L2NvZGU+IHdvdWxkIGJl IHVzZWQ7IGFuZCBpZiB0aGUgPGNvZGU+dXNlcl9zZWM8L2NvZGU+IHZhcmlhYmxlIHdhcyBl bXB0eSwgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIGFzIGZvdW5kIGluIHRoZSB2YXJpYWJsZSA8 Y29kZT5kZWZzZWM8L2NvZGU+ICh3aGljaCBjb3VsZCBoYXZlIGJlZW4gc2V0IHZpYSBhIDxj b2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IGVhcmxpZXIgaW4gdGhlIHBhZ2Up PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVzY2FwZTwvc3Bhbj4gOiBsaXN0IG9m IGNvbHVtbiBuYW1lcyB3aXRoIHdoaWNoIHRvIGVzY2FwZSA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gZW50aXRpZXMuIFVzZWZ1bCBpZiB5b3UgaGF2ZSByZXR1cm5lZCBib2R5 IG9yIGV4Y2VycHQgYmxvY2tzIHRoYXQgbWF5IGNvbnRhaW4gYXBvc3Ryb3BoZXMgdGhhdCBj b3VsZCBraWxsIHRhZ3MgaW5zaWRlIHRoZSBzbWRfcXVlcnkgY29udGFpbmVyPC9saT4KCTwv dWw+CgoJPGg0PlRhZy9jbGFzcy9mb3JtYXR0aW5nIGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhYmVsPC9zcGFuPiA6IGxhYmVsIHRvIGRpc3Bs YXkgYWJvdmUgdGhlIGVudGlyZSBvdXRwdXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+bGFiZWx0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBs YWJlbCB3aXRoLiBTcGVjaWZ5IGl0IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMgKGUuZy4gPGNv ZGU+bGFiZWx0YWc9JnF1b3Q7aDMmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3Vu ZCB0aGUgZW50aXJlIG91dHB1dCAoZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O3RhYmxlJnF1 b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aHRtbF9pZDwvc3Bh bj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gSUQgdG8gYXBwbHkgdG8gdGhl IHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDog PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBseSB0byB0 aGUgd3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4g OiBlYWNoIHJldHVybmVkIHJvdyBvZiBkYXRhIHdpbGwgYmUgd3JhcHBlZCB3aXRoIHRoaXMg dGFnIChlLmcuIDxjb2RlPmJyZWFrPSZxdW90O3RyJnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWtjbGFzczwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0i Y2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBicmVhayB0YWc8 L2xpPgoJPC91bD4KCgk8aDQ+UGx1Z2luIGN1c3RvbWlzYXRpb248L2g0PgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0cmljdGZpZWxkczwvc3Bhbj4gOiB3aGVuIHVzaW5n ICYjODIxNjs/JiM4MjE3OyBmaWVsZHMsIHNwYWNlcyBhcmUgYWxsb3dlZCBpbiBmaWVsZCBu YW1lcy4gU2V0IDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBm b3JiaWQgc3BhY2VzLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmRlbGltPC9zcGFuPiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gcGF0dGVybnMg aW4gPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiBhbmQgPGNvZGU+dXJscmVwbGFjZTwvY29kZT4u IERlZmF1bHQ6IGNvbW1hICg8Y29kZT4sPC9jb2RlPik8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+cGFyYW1kZWxpbTwvc3Bhbj4gOiB0aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3 ZWVuIG5hbWUtdmFsdWUgcGFpcnMgaW4gPGNvZGU+ZGVmYXVsdHM8L2NvZGU+LiBEZWZhdWx0 OiBjb2xvbiAoPGNvZGU+OjwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pmhhc2hzaXplPC9zcGFuPiA6IChzaG91bGQgbm90IGJlIG5lZWRlZCkgdGhlIHBsdWdpbiBh c3NpZ25zIGEgMzItY2hhcmFjdGVyLCB1bmlxdWUgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50 IHNtZF9xdWVyeSBiYXNlZCBvbiB5b3VyIHF1ZXJ5IGF0dHJpYnV0ZXMuIDxjb2RlPmhhc2hz aXplPC9jb2RlPiBnb3Zlcm5zIHRoZSBtZWNoYW5pc20gZm9yIG1ha2luZyB0aGlzIGxvbmcg cmVmZXJlbmNlIHNob3J0ZXIuIEl0IGNvbXByaXNlcyB0d28gbnVtYmVycyBzZXBhcmF0ZWQg YnkgYSBjb2xvbjsgdGhlIGZpcnN0IGlzIHRoZSBsZW5ndGggb2YgdGhlIHVuaXFlIElELCB0 aGUgc2Vjb25kIGlzIGhvdyBtYW55IGNoYXJhY3RlcnMgdG8gc2tpcCBwYXN0IGVhY2ggdGlt ZSBhIGNoYXJhY3RlciBpcyBjaG9zZW4uIEZvciBleGFtcGxlLCBpZiB0aGUgdW5pcXVlX3Jl ZmVyZW5jZSB3YXMgPGNvZGU+MGNmMjg1ODc5YmY5ZDZiODEyNTM5ZWI3NDhmYmM4ZjY8L2Nv ZGU+IHRoZW4gPGNvZGU+aGFzaHNpemU9JnF1b3Q7Njo1JnF1b3Q7PC9jb2RlPiB3b3VsZCBt YWtlIGEgNi1jaGFyYWN0ZXIgdW5pcXVlIElEIHVzaW5nIGV2ZXJ5IDV0aCBjaGFyYWN0ZXI7 IGluIG90aGVyIHdvcmRzIDxjb2RlPjA1Zjg5ODwvY29kZT4uIElmIGF0IGFueSB0aW1lLCB5 b3UgJiM4MjIwO2ZhbGwgb2ZmJiM4MjIxOyB0aGUgZW5kIG9mIHRoZSBsb25nIHN0cmluZywg dGhlIHBsdWdpbiB3cmFwcyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBh bmQgY29udGludWVzIGNvdW50aW5nLiBEZWZhdWx0OiA8Y29kZT42OjU8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNpbGVudDwvc3Bhbj4gOiBpZiB5b3VyIHF1ZXJ5 IGNvbnRhaW5zIGFuIGVycm9yICh3cm9uZyBjb2x1bW4gbmFtZSBvciBzb21lIG1hbGZvcm1l ZCBpbnB1dCksIHRoZSBwbHVnaW4gd2lsbCBpc3N1ZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IGVycm9yIG1lc3NhZ2UuIFVzaW5nIDxjb2RlPnNpbGVudD0mcXVvdDsxJnF1 b3Q7PC9jb2RlPiB3aWxsIGF0dGVtcHQgdG8gaGlkZSB0aGlzIGVycm9yIG1lc3NhZ2U8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnQ8L3NwYW4+IDogQ2FuIGJlIGVpdGhl ciAmIzgyMjA7dXAmIzgyMjE7ICh0aGUgZGVmYXVsdCkgb3IgJiM4MjIwO2Rvd24mIzgyMjE7 LiBTZWUgPGEgaHJlZj0iI3JlcGxhY2VtZW50cyI+e3NtZF90aGlzcm93fTwvYT48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVidWc8L3NwYW4+IDogc2V0IHRvIDEgdG8gc2hv dyBzb21lIGRlYnVnIG91dHB1dDsgdXNlIDIgdG8gc2hvdyBhIGJpdCBtb3JlIGRldGFpbDwv bGk+Cgk8L3VsPgoKCTxwPlRoZSBhdHRyaWJ1dGVzIDxjb2RlPnF1ZXJ5PC9jb2RlPiwgPGNv ZGU+Y29sdW1uPC9jb2RlPiwgPGNvZGU+dGFibGU8L2NvZGU+IGFuZCA8Y29kZT53aGVyZTwv Y29kZT4gY2FuIGNvbnRhaW4gcmVwbGFjZW1lbnRzIHRoZW1zZWx2ZXMgdG8gcmVhZCB2YWx1 ZXMgZnJvbSB0aGUgY3VycmVudCBjb250ZXh0LiBTcGVjaWZ5IHRoZSBmaWVsZCBuYW1lIHdp dGggYSA8Y29kZT4/PC9jb2RlPiBpbiBmcm9udCBvZiBpdCAoZS5nLiA8Y29kZT5xdWVyeT0m cXVvdDtTRUxFQ1QgKiBGUk9NIHR4cF9pbWFnZSBXSEVSRSBjYXRlZ29yeT0mIzM5Oz9jYXRl Z29yeTEmIzM5OyBPUiBjYXRlZ29yeT0mIzM5Oz9jYXRlZ29yeTImIzM5OzwvY29kZT4pIHdv dWxkIHNob3cgaW1hZ2VzIHRoYXQgaGFkIHRoZWlyIGNhdGVnb3J5IHNldCB0byBvbmUgb2Yg dGhlIGFydGljbGUmIzgyMTc7cyBjYXRlZ29yaWVzLjwvcD4KCgk8cD5UaGUgJiM4MjE2Oz8m IzgyMTc7IGZpZWxkcyBjYW4gYmUgYW55IGl0ZW0gZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gdW5pdmVyc2UsIGluY2x1ZGluZyBhbnl0aGluZyBzZXQgaW4gYSA8 Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBvciBzb21lIHVzZXItaW5wdXQg b24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MgYmFyLiBGaWVs ZHMgYXJlIHByb2Nlc3NlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOyBhcyBzb29uIGFzIGEg bWF0Y2hpbmcgZW50cnkgaXMgZm91bmQsIHRoZSByZXN0IGFyZSBub3QgY2hlY2tlZDo8L3A+ CgoJPHA+PGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gLSZndDsgPGNvZGU+ JF9TRVJWRVI8L2NvZGU+IHZhciAtJmd0OyBpbWFnZSAtJmd0OyBmaWxlIC0mZ3Q7IGxpbmsg LSZndDsgZ2xvYmFsIGFydGljbGUgLSZndDsgY3VycmVudCBhcnRpY2xlIC0mZ3Q7IDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhciAtJmd0OyBkZWZhdWx0IHZhbHVlIC0mZ3Q7 IHZlcmJhdGltICh3aXRob3V0ICYjODIxNjs/JiM4MjE3Oyk8L3A+CgoJPHA+VGhpcyBoaWVy YXJjaHkgYWxsb3dzIHNvbWUgZGVncmVlIG9mIHNhZmV0eTogc2luY2UgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gdmFyaWFibGVzIGFyZSB1bHRpbWF0ZWx5IHNldCBieSB5b3Us IHRoZXkgYXJlIGNoZWNrZWQgZmlyc3QsIHRoZW4gZ3JhZHVhbGx5IGxlc3Mgc3BlY2lmaWMg c3R1ZmYgaXMgY2hlY2tlZCB1bnRpbCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2 YXJpYWJsZXMgYXJlIGNvbnNpZGVyZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZm9vZCBjaGFp bi48L3A+CgoJPGgyIGNsYXNzPSJhdHRzICIgaWQ9InJlcGxhY2VtZW50cyI+UmVwbGFjZW1l bnQgdGFnczwvaDI+CgoJPHA+SW4geW91ciBvdXRwdXQgZm9ybSB5b3UgbWF5IHNwZWNpZnkg YW55IGNvbHVtbiBuYW1lIHN1cnJvdW5kZWQgd2l0aCA8Y29kZT57fTwvY29kZT4gY2hhcmFj dGVycyB0byBkaXNwbGF5IHRoYXQgZmllbGQuIFNvIGlmIHlvdXIgcXVlcnkgd2FzIDxjb2Rl PlNFTEVDVCBpZCwgbmFtZSwgY2F0ZWdvcnkgRlJPTSB0eHBfaW1hZ2UgV0hFUkUgZXh0PSZx dW90Oy5qcGcmcXVvdDs8L2NvZGU+IHlvdSB3b3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcmVw bGFjZW1lbnRzIGF2YWlsYWJsZTo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e2lkfTwvc3Bhbj4gOiB0aGUgaW1hZ2UgSUQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e25hbWV9PC9zcGFuPiA6IHRoZSBpbWFnZSBmaWxlbmFtZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57Y2F0ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29y eTwvbGk+Cgk8L3VsPgoKCTxwPkp1c3QgcHV0IHRob3NlIG5hbWVzIGludG8geW91ciA8Y29k ZT5mb3JtPC9jb2RlPiBhbW9uZyBvdGhlciBub3JtYWwgPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGFuZCB0 aGUgcmVsZXZhbnQgdmFsdWUgZnJvbSB0aGF0IHJvdyB3aWxsIGJlIGRpc3BsYXllZC4gVGhl IHJlcGxhY2VtZW50cyBob25vdXIgYW55IDxjb2RlPkFTPC9jb2RlPiBzdGF0ZW1lbnQgeW91 IG1heSBlbXBsb3kgdG8gcmVuYW1lIHRoZW0uPC9wPgoKCTxwPkluIGFkZGl0aW9uLCB0aGUg Zm9sbG93aW5nIHJlcGxhY2VtZW50cyBhcmUgYWRkZWQgdG8gZWFjaCByb3c6PC9wPgoKCTx1 bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfYWxscm93c308L3NwYW4+IDogdGhl IHRvdGFsIG51bWJlciBvZiByb3dzIGluIHRoZSByZXN1bHQgc2V0PHN1cCBpZD0iZm5yZXYx ODI5NjM4Nzc2NGM3ZDZkODMyYTQ5MSIgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4x ODI5NjM4Nzc2NGM3ZDZkODMyYTQ5MSI+MTwvYT48L3N1cD48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e3NtZF9yb3dzfTwvc3Bhbj4gOiB0aGUgdG90YWwgbnVtYmVyIG9mIHJv d3MgdmlzaWJsZSBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e3NtZF9wYWdlc308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyBpbiB0aGlz IHJlc3VsdCBzZXQ8c3VwIGNsYXNzPSJmb290bm90ZSI+PGEgaHJlZj0iI2ZuMTgyOTYzODc3 NjRjN2Q2ZDgzMmE0OTEiPjE8L2E+PC9zdXA+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntzbWRfdGhpc3BhZ2V9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGJl aW5nIHZpZXdlZDxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xODI5NjM4Nzc2 NGM3ZDZkODMyYTQ5MSI+MTwvYT48L3N1cD48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e3NtZF90aGlzcm93fTwvc3Bhbj4gOiB0aGUgY3VycmVudCByb3cgbnVtYmVyIG9uIHRo aXMgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57c21kX3RoaXNpbmRleH08 L3NwYW4+IDogdGhlIGN1cnJlbnQgcm93IG51bWJlciAoemVyby1iYXNlZCkgb24gdGhpcyBw YWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfY3Vyc29yfTwvc3Bhbj4g OiB0aGUgY3VycmVudCByb3cgbnVtYmVyIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByZXN1bHQg c2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfY3Vyc29yaW5kZXh9PC9z cGFuPiA6IHRoZSBjdXJyZW50IHJvdyBudW1iZXIgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHJl c3VsdCBzZXQgKHplcm8tYmFzZWQpPC9saT4KCTwvdWw+CgoJPHAgaWQ9ImZuMTgyOTYzODc3 NjRjN2Q2ZDgzMmE0OTEiIGNsYXNzPSJmb290bm90ZSI+PHN1cD4xPC9zdXA+IFRoZXNlIHRo cmVlIGl0ZW1zIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiB5b3VyIGRlc2lnbmF0ZWQgPGNvZGU+ cGFnZWZvcm08L2NvZGU+LiBUaGUgcGFnZWZvcm0gY2FuIGFsc28gdXRpbGlzZSB0aGVzZSBl eHRyYSByZXBsYWNlbWVudHM6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntzbWRfcHJldnBhZ2V9PC9zcGFuPiA6IHRoZSBwcmV2aW91cyBwYWdlIG51bWJlciAoZW1w dHkgaWYgb24gZmlyc3QgcGFnZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3Nt ZF9uZXh0cGFnZX08L3NwYW4+IDogdGhlIG5leHQgcGFnZSBudW1iZXIgKGVtcHR5IGlmIG9u IGxhc3QgcGFnZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9yb3dfc3Rh cnR9PC9zcGFuPiA6IHRoZSBmaXJzdCByb3cgbnVtYmVyIGJlaW5nIGRpc3BsYXllZDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57c21kX3Jvd19lbmR9PC9zcGFuPiA6IHRoZSBs YXN0IHJvdyBudW1iZXIgYmVpbmcgZGlzcGxheWVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntzbWRfcm93c19wcmV2fTwvc3Bhbj4gOiB0aGUgbnVtYmVyIG9mIHJvd3Mgb24g dGhlIHByZXZpb3VzIHBhZ2UuIFdpbGwgZWl0aGVyIGJlIHRoZSB2YWx1ZSBvZiB5b3VyIDxj b2RlPmxpbWl0PC9jb2RlPiwgb3IgMCBpZiBvbiB0aGUgZmlyc3QgcGFnZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57c21kX3Jvd3NfbmV4dH08L3NwYW4+IDogdGhlIG51bWJl ciBvZiByb3dzIG9uIHRoZSBuZXh0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e3NtZF9xdWVyeV91bmlxdWVfaWR9PC9zcGFuPiA6IHRoZSB1bmlxdWUgSUQgYXNzaWdu ZWQgdG8gdGhpcyBzbWRfcXVlcnkgdGFnIChzZWUgdGhlIDxjb2RlPmhhc2hzaXplPC9jb2Rl PiBhdHRyaWJ1dGUgYW5kIDxhIGhyZWY9IiNlZzEyIj5leGFtcGxlIDEyPC9hPiBmb3IgbW9y ZSk8L2xpPgoJPC91bD4KCgk8cD5UaGVzZSBhcmUgdXNlZnVsIGZvciB0YWJsZXMgdG8gc2hv dyByb3cgbnVtYmVycywgYnV0IGNhbiBhbHNvIGJlIHVzZWQgZm9yIHBhZ2luYXRpb24gb3Ig Y2FuIGJlIHRlc3RlZCB3aXRoIHNtZF9pZiB0byB0YWtlIGFjdGlvbiBmcm9tIHdpdGhpbiB5 b3VyIGZvcm0uIDxjb2RlPntzbWRfdGhpc3Jvd308L2NvZGU+LCA8Y29kZT57c21kX3RoaXNp bmRleH08L2NvZGU+LCA8Y29kZT57c21kX2N1cnNvcn08L2NvZGU+LCBhbmQgPGNvZGU+e3Nt ZF9jdXJzb3JpbmRleH08L2NvZGU+IGNvdW50IHVwIG9yIGRvd24gZGVwZW5kaW5nIG9uIHRo ZSA8Y29kZT5jb3VudDwvY29kZT4gYXR0cmlidXRlICg8Y29kZT57c21kX3Jvd19zdGFydH08 L2NvZGU+IGFuZCA8Y29kZT57c21kX3Jvd19lbmR9PC9jb2RlPiBhbHNvIGNoYW5nZSBhY2Nv cmRpbmdseSkuPC9wPgoKCTxoMiBpZD0ic21kX3FpZiI+PGNvZGU+Jmx0O3R4cDpzbWRfcXVl cnlfaWZfcHJldiZndDsgLyAmbHQ7dHhwOnNtZF9xdWVyeV9pZl9uZXh0Jmd0OzwvY29kZT48 L2gyPgoKCTxwPlVzZSB0aGVzZSBjb250YWluZXIgdGFncyB0byBkZXRlcm1pbmUgaWYgdGhl cmUgaXMgYSBuZXh0IG9yIHByZXZpb3VzIHBhZ2UgYW5kIHRha2UgYWN0aW9uIGlmIHNvLiBD YW4gb25seSBiZSB1c2VkIGluc2lkZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4sIHRodXMgYWxs IDxhIGhyZWY9IiNyZXBsYWNlbWVudHMiPnBhZ2luZyByZXBsYWNlbWVudCB2YXJpYWJsZXM8 L2E+IGFyZSBhdmFpbGFibGUgaW5zaWRlIHRoZXNlIHRhZ3MuPC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnlfaWZfcHJldiZn dDtQcmV2aW91cyBwYWdlJmx0Oy90eHA6c21kX3F1ZXJ5X2lmX3ByZXYmZ3Q7CiZsdDt0eHA6 c21kX3F1ZXJ5X2lmX25leHQmZ3Q7TmV4dCBwYWdlJmx0Oy90eHA6c21kX3F1ZXJ5X2lmX25l eHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TZWUgPGEgaHJlZj0iI2VnMTEiPmV4YW1wbGUg MTE8L2E+IGZvciBtb3JlLjwvcD4KCgk8aDIgaWQ9ImZpbHRlcmluZyI+RmlsdGVyaW5nIGFu ZCBpbmplY3Rpb248L2gyPgoKCTxwPkFmdGVyIGdyZWF0IGRlbGliZXJhdGlvbiwgYWNjZXNz IHRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lIGhhcyBiZWVuIGdy YW50ZWQgc28geW91IG1heSBlbXBsb3kgdXNlci1lbnRlcmVkIGRhdGEgaW4geW91ciBxdWVy aWVzLCBhbGxvd2luZyBjb21wbGV0ZSBmbGV4aWJpbGl0eSBmb3IgeW91ciB1c2VyIGJhc2Uu IEhvd2V2ZXIsIGFzIFBldGVyIFBhcmtlciYjODIxNztzIGNvbnNjaWVuY2UgbWlnaHQgc2F5 OjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD5XaXRoIGdyZWF0IHBvd2VyIGNvbWVzIGdyZWF0 IHJlc3BvbnNpYmlsaXR5PC9wPgoJPC9ibG9ja3F1b3RlPgoKCTxwPk5vdCBldmVyeWJvZHkg b3V0IHRoZXJlIGlzIHRydXN0d29ydGh5IHNvIGhlZWQgdGhpcyB3YXJuaW5nOiA8c3Ryb25n PkFzc3VtZSA8c3BhbiBjbGFzcz0iY2FwcyI+QUxMPC9zcGFuPiB1c2VyIGlucHV0IGlzIHRh aW50ZWQ8L3N0cm9uZz4uIENoZWNrIGV2ZXJ5dGhpbmcuIElmIHlvdSB3YW50IHRvIGtub3cg bW9yZSBhYm91dCB3aGF0IHBlb3BsZSBjYW4gZG8gd2l0aCBhY2Nlc3MgdG8gb25lIHNpbXBs ZSBwb3J0aW9uIG9mIHlvdXIgPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4gcXVlcnks IEdvb2dsZSBmb3IgJiM4MjE2OzxzcGFuIGNsYXNzPSJjYXBzIj5TUUw8L3NwYW4+IGluamVj dGlvbiYjODIxNzsuPC9wPgoKCTxwPkZvciB0aG9zZSBzdGlsbCByZWFkaW5nLCB0aGUgZ29v ZCBuZXdzIGlzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIGV2ZXJ5dGhpbmcgaXQgY2FuIHRvIHBy ZS1maWx0ZXIgc3R1ZmYgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxp bmUgYmVmb3JlIGl0IGdldHMgdG8gdGhlIHF1ZXJ5LiBUaGlzIHNob3VsZCBtYWtlIHlvdXIg dXNlciBpbnB1dCBzYWZlIGVub3VnaCwgYnV0IGZvciB0aGUgcGFyYW5vaWQgKG9yIHNlbnNp YmxlKSB0aGVyZSBhcmUgdHdvIGF0dHJpYnV0ZXMgeW91IGNhbiB1c2UgdG8gY2xhbXAgZG93 biBhbGxvd2FibGUgdXNlciBpbnB1dC4gSWYgeW91IGtub3cgYW55dGhpbmcgYWJvdXQgPGEg aHJlZj0iaHR0cDovL3d3dy5yZWd1bGFyLWV4cHJlc3Npb25zLmluZm8vcXVpY2tzdGFydC5o dG1sIj5yZWd1bGFyIGV4cHJlc3Npb25zPC9hPiBvciBhcmUgZmFtaWxpYXIgd2l0aCB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gZnVuY3Rpb24gPGEgaHJlZj0iaHR0cDov L3VrMi5waHAubmV0L3ByZWdfcmVwbGFjZSI+cHJlZ19yZXBsYWNlKCk8L2E+IHRoZW4geW91 JiM4MjE3O2xsIGJlIHJpZ2h0IGF0IGhvbWUgYmVjYXVzZSwgcHV0IHNpbXBseSwgeW91IGNh biBvcHRpb25hbGx5IHBhc3MgZXZlcnkgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g dmFyaWFibGUgdGhyb3VnaCBpdCB0byByZW1vdmUgc3R1ZmYgeW91IGRvbiYjODIxNzt0IHdh bnQuPC9wPgoKCTxoMyBpZD0idXJsZmlsdGVyIj51cmxmaWx0ZXI8L2gzPgoKCTxwPlRoaXMg dGFrZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCAoYXQgbGVhc3QgYnkgZGVmYXVsdDsgb3Zl cnJpZGUgdGhlIGNvbW1hIHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUg aWYgeW91IG5lZWQgdG8gdXNlIGNvbW1hcyBpbiB5b3VyIGZpbHRlciBzdHJpbmdzKSBvZiBj b21wbGV0ZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybnMgdGhhdCB5b3Ugd2lzaCB0byBz ZWFyY2ggZm9yLCBpbiBldmVyeSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJp YWJsZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50ZWQgdG8gZW5zdXJlIHRoYXQgeW91ciB1 c2VycyBvbmx5IGVudGVyZWQgZGlnaXRzIHlvdSBjb3VsZCBzcGVjaWZ5IHRoaXM6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+dXJsZmlsdGVyPSZxdW90 Oy9bXlxkXSsvJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5CcmllZmx5LCB0aGUgc3RhcnRp bmcgYW5kIHRyYWlsaW5nIDxjb2RlPi88L2NvZGU+IG1hcmtzIGRlbGltaXQgYSByZWd1bGFy IGV4cHJlc3Npb24gJiM4MjEyOyB0aGV5IG11c3QgYWx3YXlzIGJlIHByZXNlbnQuIFRoZSBz cXVhcmUgYnJhY2tldHMgZGVub3RlIGEgZ3JvdXAgb2YgY2hhcmFjdGVycywgdGhlIGNpcmN1 bWZsZXggbmVnYXRlcyB0aGUgZ3JvdXAsIHRoZSA8Y29kZT5cZDwvY29kZT4gbWVhbnMgJiM4 MjIwO2FueSBkaWdpdCYjODIyMTsgYW5kIHRoZSA8Y29kZT4rPC9jb2RlPiBzcGVjaWZpZXMg dGhhdCB5b3Ugd2FudCBpdCB0byBjaGVjayBmb3Igb25lIG9yIG1vcmUgb2YgdGhlIHByZWNl ZGluZyB0aGluZ3MuIEluIG90aGVyIHdvcmRzLCBsb29rIGZvciBhbnl0aGluZyBpbiB0aGUg aW5wdXQgdGhhdCBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBvbmUgb3IgbW9yZSBkaWdpdHMu IFRoYXQgd291bGQgbWF0Y2ggYW55IGxldHRlcnMsIHF1b3Rlcywgc3BlY2lhbCBjaGFyYWN0 ZXJzLCBhbnl0aGluZyBhdCBhbGwgdGhhdCB3YXNuJiM4MjE3O3QgYSB6ZXJvIHRvIG5pbmUu PC9wPgoKCTxwPllvdSBjYW4gc3BlY2lmeSBtb3JlIHRoYW4gb25lIGZpbHRlciBsaWtlIHRo aXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+dXJsZmls dGVyPSZxdW90Oy9cZC8sIC9ccy8mcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd291 bGQgbG9vayBmb3IgYW55IHNpbmdsZSBkaWdpdCBhbmQgYW55IHNpbmdsZSBzcGFjZSBjaGFy YWN0ZXIuIFRoYXQmIzgyMTc7cyBhIHNpbXBsZSBleGFtcGxlIGFuZCB5b3UgY291bGQgZG8g aXQgYWxsIGluIG9uZSByZWdleCwgYnV0IHNwbGl0dGluZyB0aGVtIHVwIGNhbiBoZWxwIHlv dSBmaWx0ZXIgc3R1ZmYgYmV0dGVyIChzZWUgPGEgaHJlZj0iI3VybHJlcGxhY2UiPnVybHJl cGxhY2U8L2E+IGZvciBhbiBleGFtcGxlKS48L3A+CgoJPHA+QnkgZGVmYXVsdCwgaWYgeW91 IGp1c3Qgc3BlY2lmeSA8Y29kZT51cmxmaWx0ZXI8L2NvZGU+IHdpdGhvdXQgPGNvZGU+dXJs cmVwbGFjZTwvY29kZT4sIGFueXRoaW5nIHRoYXQgbWF0Y2hlcyB5b3VyIGZpbHRlciBwYXR0 ZXJucyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgdXNlciBpbnB1dC48L3A+CgoJPGgzIGlk PSJ1cmxyZXBsYWNlIj51cmxyZXBsYWNlPC9oMz4KCgk8cD5UaGUgb3RoZXIgaGFsZiBvZiB0 aGUgZmlsdGVyaW5nIGppZ3NhdyBhbGxvd3MgeW91IHRvIG5vdCBqdXN0IHJlbW92ZSBhbnl0 aGluZyB0aGF0IG1hdGNoZXMsIGJ1dCBhY3R1YWxseSByZXBsYWNlIGl0IHdpdGggc29tZXRo aW5nIGVsc2UuIFNwZWNpZnkgYSBmaXhlZCBzdHJpbmcsIGEgbGlzdCBvZiBmaXhlZCBzdHJp bmdzIG9yIG1vcmUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGF0dGVybnMgdG8g cmVwbGFjZSB3aGF0ZXZlciBtYXRjaGVzIHlvdXIgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPi4g VXNpbmcgdGhlIGZpcnN0IGZpbHRlciBleGFtcGxlIGZyb20gYWJvdmUsIHlvdSBjb3VsZCBy ZXBsYWNlIGFueXRoaW5nIHRoYXQgaXMgbm90IGEgZGlnaXQgd2l0aCBhIGh5cGhlbiBieSBz cGVjaWZ5aW5nOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PnVybHJlcGxhY2U9JnF1b3Q7LSZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+U28gaWYgeW91 IGFsbG93ZWQgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBjYWxs ZWQgPGNvZGU+ZGlnaXRzPC9jb2RlPiBhbmQgYSBzaXRlIHZpc2l0b3IgZW50ZXJlZCA8Y29k ZT4/ZGlnaXRzPVphcGhvZCA0IFRyaWxsaWFuPC9jb2RlPiwgeW91ciA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSB3b3VsZCBiZWNvbWU6IDxjb2RlPi0tLS0tLS00 LS0tLS0tLS08L2NvZGU+LiBOb3QgbXVjaCB1c2UsIGJ1dCBoZXksIGl0JiM4MjE3O3MgYW4g ZXhhbXBsZSE8L3A+CgoJPHA+QXMgd2l0aCA8Y29kZT51cmxmaWx0ZXI8L2NvZGU+IHlvdSBj YW4gc3BlY2lmeSBtb3JlIHRoYW4gb25lIHJlcGxhY2VtZW50IGFuZCB0aGV5IHdpbGwgcGFp ciB1cCB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgZmlsdGVyLiBJbiBvdGhlciB3b3Jkcywg aWYgeW91IHRha2UgdGhlIHNlY29uZCBmaWx0ZXIgYWJvdmUgKDxjb2RlPnVybGZpbHRlcj0m cXVvdDsvXGQvLCAvXHMvJnF1b3Q7PC9jb2RlPikgYW5kIHVzZWQgdGhpczo8L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj51cmxyZXBsYWNlPSZxdW90Oywg LSZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiBhbnkgZGlnaXQgaW4geW91ciB1c2Vy IGlucHV0IHdvdWxkIGJlIHJlbW92ZWQgKHRoZXJlIGlzIG5vdGhpbmcgYmVmb3JlIHRoZSBj b21tYSkgYW5kIGFueSBzcGFjZSBjaGFyYWN0ZXIgd291bGQgYmUgcmVwbGFjZWQgd2l0aCBh IGh5cGhlbi48L3A+CgoJPHA+SWYgYXQgYW55IHRpbWUgYSBmaWVsZCBnaXZlcyBhbiBlbXB0 eSByZXN1bHQgKGkuZS4gaXQgdG90YWxseSBmYWlscyBhbnkgPGNvZGU+dXJsZmlsdGVyPC9j b2RlPiB0ZXN0cyBvciBzaW1wbHkgcmV0dXJucyBub3RoaW5nIGJlY2F1c2UgaXQgaGFzIG5v dCBiZWVuIHNldCksIGFueSA8Y29kZT5kZWZhdWx0czwvY29kZT4gYXNzaWduZWQgdG8gdGhh dCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgaW5zdGVhZC4gSWYgdGhlcmUgYXJlIG5vIGRlZmF1 bHRzLCB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgaXRzZWxmIChtaW51cyBpdHMgPGNvZGU+ PzwvY29kZT4pIHdpbGwgYmUgdXNlZC48L3A+CgoJPHA+V2l0aCB0aGVzZSB0d28gZmlsdGVy cyBhdCB5b3VyIGRpc3Bvc2FsIGFuZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGRlZmF1bHQg dmFsdWVzIGZvciB1c2VyIHZhcmlhYmxlcywgeW91IGNhbiBtYWtlIHlvdXIgcXVlcmllcyBt dWNoIHNhZmVyIHRvIHRoZSBvdXRzaWRlIHdvcmxkIGFuZCBzdGFydCB1c2luZyA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gZm9ybXMgdG8gZ2F0aGVyIGlucHV0IGZyb20gdXNl cnMgdGhhdCBjYW4gdGhlbiBiZSBwbHVnZ2VkIGludG8gcXVlcmllcywgZmFpcmx5IHNhZmUg aW4gdGhlIGtub3dsZWRnZSB0aGF0IHlvdXIgZGF0YWJhc2UgaXMgbm90IGdvaW5nIHRvIGlt cGxvZGUuPC9wPgoKCTxwPkJ1dCBwbGVhc2UgcmVtZW1iZXI6PC9wPgoKCTxibG9ja3F1b3Rl PgoJCTxwPkFzc3VtZSA8c3Ryb25nPmFsbDwvc3Ryb25nPiB1c2VyIGlucHV0IGlzIHRhaW50 ZWQ6IGNoZWNrIGV2ZXJ5dGhpbmcuPC9wPgoJPC9ibG9ja3F1b3RlPgoKCTxoMiBpZD0iZXhh bXBsZXMiPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxOiBTaW1wbGUg aW1hZ2Ugc2VsZWN0IHF1ZXJ5PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IGNvbHVtbj0mcXVvdDsqJnF1b3Q7CiAgICAg dGFibGU9JnF1b3Q7dHhwX2ltYWdlJnF1b3Q7CiAgICAgd2hlcmU9JnF1b3Q7Y2F0ZWdvcnk9 JiMzOTttYW1tYWwmIzM5OyBPUiBjYXRlZ29yeT0mIzM5O2JpcmQmIzM5OyZxdW90OwogICAg IGZvcm09JnF1b3Q7ZGJvdXQmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0m cXVvdDtsaSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2l0aCBmb3JtIDxjb2Rl PmRib3V0PC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7L2ltYWdlcy97aWR9e2V4dH0mcXVv dDsgLyZndDsmbHQ7dHhwOnRodW1ibmFpbCBuYW1lPSZxdW90O3tuYW1lfSZxdW90OyAvJmd0 OyZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpbGwgcmVuZGVyIGFuIHVub3JkZXJl ZCBsaXN0IG9mIHRodW1ibmFpbHMgd2l0aCBsaW5rcyB0byB0aGUgZnVsbHNpemUgaW1hZ2Ug aWYgdGhlIGNhdGVnb3J5IGlzIGVpdGhlciA8Y29kZT5tYW1tYWw8L2NvZGU+IG9yIDxjb2Rl PmJpcmQ8L2NvZGU+LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsaW5rIGNhdGVn b3J5IGxpc3QgdG8gcGFyZW50PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCBESVNUSU5D VAogICAgIHR4Yy5uYW1lIEZST00gdHhwX2NhdGVnb3J5IEFTIHR4YywgdGV4dHBhdHRlcm4g QVMgdHhwCiAgICAgV0hFUkUgdHlwZT0mIzM5O2FydGljbGUmIzM5OyBBTkQgcGFyZW50PSYj Mzk7YW5pbWFscyYjMzk7CiAgICAgQU5EICh0eGMubmFtZSA9IHR4cC5jYXRlZ29yeTEgT1Ig dHhjLm5hbWUgPSB0eHAuY2F0ZWdvcnkyKQogICAgIGZvcm09JnF1b3Q7ZGJvdXQmcXVvdDsg d3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyAvJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+V2l0aCBmb3JtIDxjb2RlPmRib3V0PC9jb2RlPiBjb250YWluaW5n OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 Y2F0ZWdvcnkgbmFtZT0mcXVvdDt7bmFtZX0mcXVvdDsgbGluaz0mcXVvdDsxJnF1b3Q7IHRp dGxlPSZxdW90OzEmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpbGwgcmVuZGVy IGEgbGlzdCBvZiBsaW5rYWJsZSBjYXRlZ29yeSBuYW1lcyB0aGF0IGNvbnRhaW4gYXJ0aWNs ZXMgd2l0aCBjYXRlZ29yaWVzIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gcGFyZW50LiBJZiBhIGNh dGVnb3J5IGlzIHVudXNlZCBpdCB3aWxsIG5vdCBiZSBsaXN0ZWQuPC9wPgoKCTxoMyBpZD0i ZWczIj5FeGFtcGxlIDM6IGNoaWxkIGNhdGVnb3J5IGNvdW50czwvaDM+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0m cXVvdDtTRUxFQ1QgRElTVElOQ1QKICAgICB0eGMubmFtZSwgQ09VTlQoKikgQVMgY291bnQg RlJPTSB0eHBfY2F0ZWdvcnkgQVMgdHhjLAogICAgIHRleHRwYXR0ZXJuIEFTIHR4cAogICAg IFdIRVJFIHR5cGU9JiMzOTthcnRpY2xlJiMzOTsgQU5EIHBhcmVudD0mIzM5Oz9jdXN0b20z JiMzOTsKICAgICBBTkQgKHR4Yy5uYW1lID0gdHhwLmNhdGVnb3J5MSBPUiB0eGMubmFtZSA9 IHR4cC5jYXRlZ29yeTIpCiAgICAgR1JPVVAgQlkgdHhjLm5hbWUmcXVvdDsKICAgICBmb3Jt PSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7 bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpdGggZm9ybSA8Y29kZT5kYm91 dDwvY29kZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOmNhdGVnb3J5IG5hbWU9JnF1b3Q7e25hbWV9JnF1b3Q7IGxp bms9JnF1b3Q7MSZxdW90OyB0aXRsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7ICh7Y291bnR9KQo8 L2NvZGU+PC9wcmU+CgoJPHA+V2lsbCByZWFkIHRoZSBwYXJlbnQgaXRlbSBmcm9tIHRoZSA8 Y29kZT5jdXN0b20zPC9jb2RlPiBmaWVsZCBhbmQgcmVuZGVyIGEgc2ltaWxhciBsaXN0IHRv IEV4YW1wbGUgMiBidXQgd2l0aCB0aGUgYXJ0aWNsZSBjb3VudHMgYWRkZWQgaW4gcGFyZW50 aGVzZXMgYWZ0ZXJ3YXJkcy48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogVG9wIDEw IGRvd25sb2FkczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9xdWVyeSBjb2x1bW49JnF1b3Q7KiZxdW90OyB0YWJsZT0mcXVvdDt0 eHBfZmlsZSZxdW90OwogICAgIHdoZXJlPSZxdW90OyhjYXRlZ29yeT0mIzM5Oz9jYXRlZ29y eTEmIzM5OyBPUiBjYXRlZ29yeT0mIzM5Oz9jYXRlZ29yeTImIzM5OykKICAgICBBTkQgc3Rh dHVzPTQgT1JERVIgQlkgZG93bmxvYWRzIGRlc2MgTElNSVQgMTAmcXVvdDsKICAgICB3cmFw dGFnPSZxdW90O3RhYmxlJnF1b3Q7IGJyZWFrPSZxdW90O3RyJnF1b3Q7CiAgICAgbGFiZWw9 JnF1b3Q7TW9zdCBwb3B1bGFyIGRvd25sb2FkcyZxdW90OyBsYWJlbHRhZz0mcXVvdDtoMyZx dW90OyZndDsKICAmbHQ7dGQmZ3Q7Jmx0O3R4cDpmaWxlX2Rvd25sb2FkX2xpbmsgaWQ9JnF1 b3Q7e2lkfSZxdW90OyZndDt7ZmlsZW5hbWV9Jmx0Oy90eHA6ZmlsZV9kb3dubG9hZF9saW5r Jmd0OyZsdDsvdGQmZ3Q7CiAgJmx0O3RkJmd0O3tkZXNjcmlwdGlvbn0mbHQ7L3RkJmd0Owog ICZsdDt0ZCZndDtkb3dubG9hZHM6IHtkb3dubG9hZHN9Jmx0Oy90ZCZndDsKJmx0O3R4cDpl bHNlIC8mZ3Q7CiAgJmx0O3AmZ3Q7Tm8gcmVjZW50IGRvd25sb2Fkcywgc29ycnkmbHQ7L3Am Z3Q7CiZsdDsvdHhwOnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoaXMgb25l IHVzZXMgdGhlIHBsdWdpbiBhcyBhIGNvbnRhaW5lciB0YWcgaW5zdGVhZCBvZiBhIGZvcm0g YW5kIHRhYnVsYXRlcyB0aGUgdG9wIDEwIGRvd25sb2FkcyAoc3RhdHVzPWxpdmUpIHRoYXQg aGF2ZSBhIGNhdGVnb3J5IG1hdGNoaW5nIGVpdGhlciBvZiB0aGUgY3VycmVudCBhcnRpY2xl JiM4MjE3O3MgY2F0ZWdvcmllcywgd2l0aCBtb3N0IHBvcHVsYXIgbGlzdGVkIGZpcnN0LiBJ ZiB0aGVyZSBhcmUgbm8gZG93bmxvYWRzLCB0aGUgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7 PC9jb2RlPiBwb3J0aW9uIGRpc3BsYXlzIGEgbWVzc2FnZS48L3A+CgoJPGgzIGlkPSJlZzUi PkV4YW1wbGUgNTogQXJ0aWNsZSBrZXl3b3JkcyByZWxhdGVkIHRvIGxpbms8L2gzPgoKCTxw PlZlcnkgaW50ZXJlc3RpbmcgdXNlIGNhc2UgaGVyZS4gUHV0IHRoaXMgaW4gdGhlIHBsYWlu bGlua3MgZm9ybTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOmxpbmtkZXNjdGl0bGUgLyZndDsKJmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9 JnF1b3Q7U0VMRUNUIERJU1RJTkNUCiAgICAgdHhwLmlkLCB0eHAudGl0bGUgRlJPTSB0ZXh0 cGF0dGVybiBBUyB0eHAKICAgICBXSEVSRSAodHhwLmtleXdvcmRzIExJS0UgJiMzOTslLD9j YXRlZ29yeSUsJiMzOTsKICAgICBPUiB0eHAua2V5d29yZHMgTElLRSAmIzM5OyU/Y2F0ZWdv cnklLCYjMzk7CiAgICAgT1IgdHhwLmtleXdvcmRzIExJS0UgJiMzOTslLD9jYXRlZ29yeSUm IzM5OykKICAgICBHUk9VUCBCWSB0eHAudGl0bGUmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90 O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7Jmd0OwogICZsdDt0eHA6cGVybWxpbmsg aWQ9JnF1b3Q7e2lkfSZxdW90OyZndDt7dGl0bGV9Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZs dDsvdHhwOnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldoZW4geW91IGV4ZWN1 dGUgPGNvZGU+Jmx0O3R4cDpsaW5rbGlzdCAvJmd0OzwvY29kZT4gZnJvbSBhIHBhZ2UgeW91 IHdpbGwgZ2V0IGEgbGlzdCBvZiBsaW5rcyBhcyB1c3VhbCwgYnV0IHVuZGVyIGVhY2ggb25l IHlvdSB3aWxsIHNlZSBhIGh5cGVybGlua2VkIGxpc3Qgb2YgYXJ0aWNsZXMgdGhhdCBhcmUg cmVsYXRlZCAoYnkga2V5d29yZCkgdG8gdGhlIGNhdGVnb3J5IG9mIHRoZSBsaW5rLjwvcD4K Cgk8cD5UaGUgcmVhc29uIGl0IGlzIGNvbXBhcmVkIHRocmVlIHRpbWVzIGlzIGJlY2F1c2Ug YXJ0aWNsZSBrZXl3b3JkcyBhcmUgc3RvcmVkIGxpa2UgdGhpcyBpbiB0aGUgZGF0YWJhc2U6 PC9wPgoKCTxwPjxjb2RlPmdvdmVybm1lbnQsY29uc3BpcmFjeSxpZCxjYXJkLGRhdGEsYmlv bWV0cmljLGJhZCxpZGVhPC9jb2RlPjwvcD4KCgk8cD5JZiBlYWNoIGNhdGVnb3J5IHdvcmQg d2FzIGNvbXBhcmVkIG9ubHkgb25jZSB3aXRob3V0IGNvbW1hcyAoaS5lLiA8Y29kZT50eHAu a2V5d29yZHMgTElLRSAmIzM5OyU/Y2F0ZWdvcnklJiMzOTs8L2NvZGU+KSB0aGVuIGEgbGlu ayB3aXRoIGNhdGVnb3J5IDxjb2RlPnBpcmFjeTwvY29kZT4gd291bGQgY2F1c2UgYW55IGFy dGljbGUgY29udGFpbmluZyBrZXl3b3JkIDxjb2RlPmNvbnNwaXJhY3k8L2NvZGU+IHRvIGJl IGluY2x1ZGVkLiBFc3NlbnRpYWxseSwgYnkgY29tcGFyaW5nIHRoZSBjYXRlZ29yeSBlaXRo ZXIgc3Vycm91bmRlZCBieSBjb21tYXMsIHdpdGggYSBjb21tYSBhZnRlciBpdCwgb3Igd2l0 aCBhIGNvbW1hIGJlZm9yZSBpdCwgdGhlIHNlYXJjaCBpcyByZXN0cmljdGVkIHRvIG9ubHkg bWF0Y2ggd2hvbGUgd29yZHMuPC9wPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY6IENvbXBh cmlzb24gaW4gcXVlcmllczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgKgogICAgIEZS T00gdHhwX2ZpbGUgV0hFUkUgZG93bmxvYWRzICZhbXA7Z3Q7PSA0MiZxdW90OyZndDsKICAm bHQ7dHhwOmZpbGVfZG93bmxvYWRfbGluayBpZD0mcXVvdDt7aWR9JnF1b3Q7Jmd0OwogICAg IHtmaWxlbmFtZX0KICAmbHQ7L3R4cDpmaWxlX2Rvd25sb2FkX2xpbmsmZ3Q7CiZsdDsvdHhw OnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNob3dzIGxpbmtzIHRvIGFsbCBk b3dubG9hZHMgd2hlcmUgdGhlIGRvd25sb2FkIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byA0Mi4gTm90ZSB0aGF0IHVuZGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IDQuMC42IGFuZCBiZWxvdyB5b3UgbXVzdCB1c2UgdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBlbnRpdHkgbmFtZXMgZm9yIDxjb2RlPiZhbXA7Z3Q7PC9jb2RlPiBh bmQgPGNvZGU+JmFtcDtsdDs8L2NvZGU+IG9yIHRoZSBwYXJzZXIgZ2V0cyBjb25mdXNlZC48 L3A+CgoJPGgzIGlkPSJlZzciPkV4YW1wbGUgNzogdW5maWx0ZXJlZCA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiBwYXJhbXMgKGJhZCk8L2gzPgoKCTxwPihhIGJhZCBxdWVyeSk8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnZh cmlhYmxlIG5hbWU9JnF1b3Q7Y3V0b2ZmJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7NDImcXVv dDsgLyZndDsKJmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1b3Q7U0VMRUNUIFRpdGxlCiAg ICAgRlJPTSB0ZXh0cGF0dGVybgogICAgIFdIRVJFIGlkICZsdDsgJiMzOTs/dXNlcmN1dCYj Mzk7JnF1b3Q7CiAgICAgZGVmYXVsdHM9JnF1b3Q7dXNlcmN1dDogP2N1dG9mZiZxdW90OyZn dDsKICAgJmx0O3R4cDpwZXJtbGluayZndDt7VGl0bGV9Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7 CiZsdDsvdHhwOnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNob3dzIGh5cGVy bGlua3MgdG8gb25seSB0aG9zZSBhcnRpY2xlcyB3aXRoIGFuIElEIGJlbG93IHRoZSBudW1i ZXIgZ2l2ZW4gYnkgdGhlIHVzZXIgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IGxpbmUuIElmIHRoZSB2YWx1ZSBpcyBub3Qgc3VwcGxpZWQsIHRoZSBkZWZhdWx0IHZh bHVlIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHZhcmlhYmxlIGlz IHVzZWQgaW5zdGVhZCAoNDIgaW4gdGhpcyBjYXNlKS48L3A+CgoJPHA+PHN0cm9uZz48c3Bh biBjbGFzcz0iY2FwcyI+Tk9URTwvc3Bhbj48L3N0cm9uZz46IHZhbGlkYXRpb24gaXMgbm90 IHBlcmZvcm1lZCBhbmQgeW91IGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGUgPGNvZGU+dXNl cmN1dDwvY29kZT4gdmFyaWFibGUgaXMgZ29pbmcgdG8gYmUgbnVtZXJpYy4gWW91IHNob3Vs ZCBub3QgdXNlIHRoaXMgcXVlcnkgb24gYSBwcm9kdWN0aW9uIHNpdGUgdW5sZXNzIHlvdSBh ZGQgYSA8Y29kZT51cmxmaWx0ZXI8L2NvZGU+IHRvIHJlbW92ZSBhbnkgbm9uLW51bWVyaWMg Y2hhcmFjdGVycyAoc2VlIG5leHQgZXhhbXBsZSBmb3IgYSBiZXR0ZXIgcXVlcnkpLjwvcD4K Cgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4OiBmaWx0ZXJlZCA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBwYXJhbXMgKGJldHRlciEpPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVD VCBUaXRsZQogICAgIEZST00gdGV4dHBhdHRlcm4KICAgICBXSEVSRSBzdGF0dXMgPSAmIzM5 Oz91c2VyX3N0YXR1cyYjMzk7JnF1b3Q7CiAgICAgdXJsZmlsdGVyPSZxdW90Oy9bXjEtNV0v JnF1b3Q7CiAgICAgZGVmYXVsdHM9JnF1b3Q7dXNlcl9zdGF0dXM6IDQmcXVvdDsmZ3Q7CiAg ICZsdDt0eHA6cGVybWxpbmsmZ3Q7e1RpdGxlfSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7 L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5QdWxscyBhbGwgYXJ0aWNs ZXMgb3V0IG9mIHRoZSBkYXRhYmFzZSB0aGF0IG1hdGNoIHRoZSBnaXZlbiBzdGF0dXMuIFRo aXMgaXMgYSBtb3JlIHJvYnVzdCBxdWVyeSB0aGFuIEV4YW1wbGUgNyBiZWNhdXNlIGl0IGNo ZWNrcyBpZiB0aGUgPGNvZGU+dXNlcl9zdGF0dXM8L2NvZGU+IGZpZWxkIGlzIDEsIDIsIDMs IDQsIG9yIDUgKHRoZSByZWdleCBzcGVjaWZpZXMgdG8gcmVtb3ZlIGV2ZXJ5dGhpbmcgZnJv bSB0aGUgdXNlcl9zdGF0dXMgdmFyaWFibGUgdGhhdCBpcyBub3QgaW4gdGhlIHJhbmdlIDEt NSkuIElmIHRoaXMgY29uZGl0aW9uIGlzIG5vdCBtZXQgJiM4MjEyOyBlLmcuIHRoZSB1c2Vy IHNwZWNpZmllcyA8Y29kZT51c2VyX3N0YXR1cz02PC9jb2RlPiBvciA8Y29kZT51c2VyX3N0 YXR1cz0mcXVvdDthYmMmcXVvdDs8L2NvZGU+ICYjODIxMjsgdGhlbiB1c2VyX3N0YXR1cyB3 aWxsIGJlIHNldCB0byA8Y29kZT40PC9jb2RlPi4gTm90ZSB0aGF0IHVzaW5nIDxjb2RlPnVz ZXJfc3RhdHVzPSZxdW90O1phcGhvZCA0IFRyaWxsaWFuJnF1b3Q7PC9jb2RlPiBvbiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYWRkcmVzcyBiYXIgd2lsbCBhY3R1YWxs eSBwYXNzIHRoZSB0ZXN0IGJlY2F1c2UgYWxsIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiB0aGUg bnVtYmVyICYjODIxNjs0JiM4MjE3OyB3aWxsIGJlIHJlbW92ZWQuPC9wPgoKCTxwPllvdSBj b3VsZCB1c2UgYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBpZiB5b3Ug d2lzaCBhbmQgc2V0IGFsbCB5b3VyIGRlZmF1bHRzIGluIGEgc3BlY2lhbCBmb3JtLCByZWFk eSB0byB1c2UgdGhyb3VnaG91dCB5b3VyIHBhZ2UuIEluIHRoYXQgY2FzZSAmIzgyMTI7IGlm IHlvdSBoYWQgY3JlYXRlZCBhIHZhcmlhYmxlIGNhbGxlZCA8Y29kZT5kZmx0X3N0YXQ8L2Nv ZGU+ICYjODIxMjsgeW91IG1pZ2h0IHByZWZlciB0byB1c2UgPGNvZGU+ZGVmYXVsdHM9JnF1 b3Q7dXNlcl9zdGF0dXM6ID9kZmx0X3N0YXQmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD5RdWVy eS10YXN0aWMgOi0pPC9wPgoKCTxoMyBpZD0iZWc5Ij5FeGFtcGxlIDk6IFVzaW5nIHByZXBh cnNlIHdpdGggPGNvZGU+Jmx0O3R4cDp5aWVsZCAvJmd0OzwvY29kZT48L2gzPgoKCTxwPlNv bWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gcmUtdXNlIGEgcXVlcnkgaW4gYSBmZXcgcGxhY2Vz IHRocm91Z2hvdXQgeW91ciBzaXRlIGFuZCBzaG93IGRpZmZlcmVudCBjb250ZW50LiBGb3Ig ZXhhbXBsZSwgdGhlIHNhbWUgcXVlcnkgY291bGQgYmUgdXNlZCBmb3IgbG9nZ2VkLWluIGFu ZCBub3QtbG9nZ2VkLWluIHVzZXJzIGJ1dCB5b3UmIzgyMTc7ZCBzZWUgbW9yZSBkZXRhaWwg aWYgeW91IHdlcmUgbG9nZ2VkIGluLiBOb3JtYWxseSB5b3Ugd291bGQgbmVlZCB0byB3cml0 ZSB0aGUgcXVlcnkgbW9yZSB0aGFuIG9uY2UsIHdoaWNoIGlzIGZhciBmcm9tIGlkZWFsLiBU aGlzIHRlY2huaXF1ZSBhbGxvd3MgeW91IHRvIHdyaXRlIHRoZSBxdWVyeSBqdXN0IG9uY2Ug YW5kIHJldXNlIHRoZSBmb3JtLiBQdXQgdGhpcyBpbiBhIGZvcm0gY2FsbGVkIDxjb2RlPnVz ZXJfdGFibGU8L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCAqIEZST00gdHhw X3VzZXJzJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt0YWJsZSZxdW90OyBicmVhaz0mcXVv dDt0ciZxdW90OyBwcmVwYXJzZT0mcXVvdDsxJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnlpZWxk IC8mZ3Q7CiZsdDsvdHhwOnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlVzaW5n IDxjb2RlPiZsdDt0eHA6b3V0cHV0X2Zvcm0mZ3Q7PC9jb2RlPiBhcyBhIGNvbnRhaW5lciAo aW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4yLjAgb3IgaGlnaGVyKSB5b3Ug Y2FuIHRoZW4gY2FsbCB0aGUgcXVlcnkgbGlrZSB0aGlzIHRvIHNob3cgYmFzaWMgaW5mbzo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOm91 dHB1dF9mb3JtIGZvcm09JnF1b3Q7dXNlcl90YWJsZSZxdW90OyZndDsKJmx0O3RkJmd0O3tu YW1lfSZsdDsvdGQmZ3Q7CiZsdDt0ZCZndDt7UmVhbE5hbWV9Jmx0Oy90ZCZndDsKJmx0Oy90 eHA6b3V0cHV0X2Zvcm0mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5hbmQgbGlrZSB0aGlzIGZv ciBtb3JlIGRldGFpbGVkIG91dHB1dDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOm91dHB1dF9mb3JtIGZvcm09JnF1b3Q7dXNlcl90YWJs ZSZxdW90OyZndDsKJmx0O3RkJmd0O3tuYW1lfSZsdDsvdGQmZ3Q7CiZsdDt0ZCZndDt7UmVh bE5hbWV9Jmx0Oy90ZCZndDsKJmx0O3RkJmd0O3tlbWFpbH0mbHQ7L3RkJmd0OwombHQ7dGQm Z3Q7e2xhc3RfYWNjZXNzfSZsdDsvdGQmZ3Q7CiZsdDsvdHhwOm91dHB1dF9mb3JtJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHdoZW4gdXNpbmcgc21kX3F1ZXJ5IGluIHRo aXMgbWFubmVyIHlvdSBtdXN0IHJlbWVtYmVyIHRvIHVzZSA8Y29kZT5wcmVwYXJzZT0mcXVv dDsxJnF1b3Q7PC9jb2RlPiBiZWNhdXNlIHlvdSBuZWVkIHRvIGZldGNoIHRoZSBjb250ZW50 cyBvZiB0aGUgc21kX3F1ZXJ5IGNvbnRhaW5lciAodGhlIDxjb2RlPiZsdDt0eHA6eWllbGQg LyZndDs8L2NvZGU+IHRhZyBpbiB0aGlzIGNhc2UpLCBwYXJzZSBpdCBzbyBpdCBnZXRzIHRo ZSBjb250ZW50cyBvZiA8Y29kZT4mbHQ7dHhwOm91dHB1dF9mb3JtJmd0OzwvY29kZT4mIzgy MTc7cyBjb250YWluZXIgYW5kIDxlbT50aGVuPC9lbT4gYXBwbGllcyB0aGUgcmVwbGFjZW1l bnRzLiBXaXRob3V0IHRoZSA8Y29kZT5wcmVwYXJzZTwvY29kZT4sIHRoZSBwbHVnaW4gdHJp ZXMgdG8gYXBwbHkgdGhlIHJlcGxhY2VtZW50cyBkaXJlY3RseSB0byB0aGUgc21kX3F1ZXJ5 IGNvbnRhaW5lciwgd2hpY2ggZG9lcyBub3QgYWN0dWFsbHkgY29udGFpbiBhbnkgPGNvZGU+ ey4uLn08L2NvZGU+IHRhZ3MuPC9wPgoKCTxoMyBpZD0iZWcxMCI+RXhhbXBsZSAxMDogcGFn aW5hdGlvbjwvaDM+CgoJPHA+SXRlcmF0ZSBvdmVyIHNvbWUgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gdXNlciBpbmZvcm1hdGlvbiwgNSBwZW9wbGUgYXQgYSB0aW1lOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3F1 ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCAqIGZyb20gdHhwX3VzZXJzJnF1b3Q7CiAgICAgbGlt aXQ9JnF1b3Q7NSZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xp JnF1b3Q7CiAgICAgcGFnZWZvcm09JnF1b3Q7cGFnZV9pbmZvJnF1b3Q7Jmd0OwogICB7UmVh bE5hbWV9ICh7cHJpdnN9KQombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5JbiA8Y29kZT5wYWdlX2luZm88L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPlBhZ2Uge3NtZF90aGlzcGFnZX0gb2Yge3NtZF9wYWdl c30gfApTaG93aW5nIHJlY29yZHMge3NtZF9yb3dfc3RhcnR9IHRvIHtzbWRfcm93X2VuZH0K b2Yge3NtZF9hbGxyb3dzfSB8CiZsdDt0eHA6b2xkZXImZ3Q7TmV4dCB7c21kX3Jvd3NfbmV4 dH0mbHQ7L3R4cDpvbGRlciZndDsgfAombHQ7dHhwOm5ld2VyJmd0O1ByZXZpb3VzIHtzbWRf cm93c19wcmV2fSZsdDsvdHhwOm5ld2VyJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VW5kZXJu ZWF0aCB5b3VyIHJlc3VsdCBzZXQgeW91IHdvdWxkIHRoZW4gc2VlIHRoZSBpbmZvcm1hdGlv biByZWdhcmRpbmcgd2hpY2ggcGFnZSBhbmQgcm93cyB5b3VyIHZpc2l0b3JzIHdlcmUgY3Vy cmVudGx5IHZpZXdpbmcuIFlvdSB3b3VsZCBhbHNvIHNlZSBuZXh0L3ByZXYgbGlua3MgdG8g dGhlIHJlc3Qgb2YgdGhlIHJlc3VsdHMuPC9wPgoKCTxoMyBpZD0iZWcxMSI+RXhhbXBsZSAx MTogY3VzdG9tIHBhZ2luYXRpb248L2gzPgoKCTxwPlRoZXJlIGlzIGEgcHJvYmxlbSB3aXRo IDxhIGhyZWY9IiNlZzEwIj5leGFtcGxlIDEwPC9hPiA7IGlmIHlvdSB1c2UgdHhwOm9sZGVy IGFuZCB0eHA6bmV3ZXIgd2hlbiB5b3UgYXJlIHNob3dpbmcgYSBzdGFuZGFyZCBhcnRpY2xl IGxpc3Q7IHRoZSBwYWdpbmcgdGFncyB3aWxsIHN0ZXAgdGhyb3VnaCA8ZW0+Ym90aDwvZW0+ IHlvdXIgcmVzdWx0IHNldCBhbmQgeW91ciBhcnRpY2xlcy4gVG8gYnJlYWsgdGhlIGFzc29j aWF0aW9uIGJldHdlZW4gdGhlbSB5b3UgbmVlZCB0byBhbHRlciB0aGUgdmFyaWFibGUgdGhh dCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB1c2VzIHRvIGNvbnRyb2wgcGFnaW5n LiBJdCBpcyBjYWxsZWQgPGNvZGU+cGc8L2NvZGU+YW5kIHlvdSYjODIxNztsbCBub3RpY2Ug aXQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ICg8Y29kZT4/cGc9Mjwv Y29kZT4gZm9yIGV4YW1wbGUpIGFzIHlvdSBzdGVwIHRocm91Z2ggYXJ0aWNsZSBsaXN0cy48 L3A+CgoJPHA+VXNpbmcgdGhlIDxjb2RlPnBhZ2V2YXI8L2NvZGU+IGF0dHJpYnV0ZSB5b3Ug Y2FuIHRlbGwgc21kX3F1ZXJ5IHRvIHdhdGNoIGZvciB5b3VyIG93biB2YXJpYWJsZSBpbnN0 ZWFkIG9mIHRoZSBkZWZhdWx0IDxjb2RlPnBnPC9jb2RlPiBhbmQgdGh1cyBidWlsZCB5b3Vy IG93biBuZXh0L3ByZXYgbGlua3MgdGhhdCBvbmx5IGNvbnRyb2wgc21kX3F1ZXJ5LjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3F1 ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCAqIGZyb20gdHhwX3VzZXJzJnF1b3Q7CiAgICAgbGlt aXQ9JnF1b3Q7NSZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xp JnF1b3Q7CiAgICAgcGFnZWZvcm09JnF1b3Q7cGFnZV9pbmZvJnF1b3Q7IHBhZ2V2YXI9JnF1 b3Q7c21kX3FwZyZxdW90OyZndDsKICAge1JlYWxOYW1lfSAoe3ByaXZzfSkKJmx0Oy90eHA6 c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+SW4gPGNvZGU+cGFnZV9pbmZvPC9j b2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5QYWdl IHtzbWRfdGhpc3BhZ2V9IG9mIHtzbWRfcGFnZXN9IHwKICAgU2hvd2luZyByZWNvcmRzIHtz bWRfcm93X3N0YXJ0fQogICB0byB7c21kX3Jvd19lbmR9IG9mIHtzbWRfYWxscm93c30gfAom bHQ7dHhwOnNtZF9xdWVyeV9pZl9wcmV2Jmd0OwogICZsdDthIGhyZWY9JnF1b3Q7Jmx0O3R4 cDpwZXJtbGluayAvJmd0Oz9zbWRfcXBnPXtzbWRfcHJldnBhZ2V9JnF1b3Q7Jmd0OwogICAg IFByZXZpb3VzIHtzbWRfcm93c19wcmV2fSZsdDsvYSZndDsKJmx0Oy90eHA6c21kX3F1ZXJ5 X2lmX3ByZXYmZ3Q7CiZsdDt0eHA6c21kX3F1ZXJ5X2lmX25leHQmZ3Q7CiAgJmx0O2EgaHJl Zj0mcXVvdDsmbHQ7dHhwOnBlcm1saW5rIC8mZ3Q7P3NtZF9xcGc9e3NtZF9uZXh0cGFnZX0m cXVvdDsmZ3Q7CiAgICAgTmV4dCB7c21kX3Jvd3NfbmV4dH0mbHQ7L2EmZ3Q7CiZsdDsvdHhw OnNtZF9xdWVyeV9pZl9uZXh0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzEyIj5F eGFtcGxlIDEyOiB1c2luZyA8Y29kZT5TTURfUVVFUllfVU5JUVVFX0lEPC9jb2RlPjwvaDM+ CgoJPHA+SWYgeW91IHdpc2ggdG8gdXNlIG1vcmUgdGhhbiBvbmUgc21kX3F1ZXJ5IG9uIGEg c2luZ2xlIHBhZ2UgYnV0IHNoYXJlIGEgcGFnZWZvcm0gYmV0d2VlbiB0aGVtIHlvdSBjYW4g dXNlIDxzcGFuIGNsYXNzPSJjYXBzIj5TTUQ8L3NwYW4+X1FVRVJZX1VOSVFVRV9JRCBhcyB0 aGUgcGFnaW5nIHZhcmlhYmxlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCAqIGZyb20g dHhwX3VzZXJzJnF1b3Q7CiAgICAgbGltaXQ9JnF1b3Q7NSZxdW90OyB3cmFwdGFnPSZxdW90 O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7CiAgICAgcGFnZWZvcm09JnF1b3Q7cGFn ZV9pbmZvJnF1b3Q7CiAgICAgcGFnZXZhcj0mcXVvdDtTTURfUVVFUllfVU5JUVVFX0lEJnF1 b3Q7Jmd0OwogICB7UmVhbE5hbWV9ICh7cHJpdnN9KQombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8cD5JbiA8Y29kZT5wYWdlX2luZm88L2NvZGU+OjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlBhZ2Uge3NtZF90aGlzcGFn ZX0gb2Yge3NtZF9wYWdlc30gfAogICBTaG93aW5nIHJlY29yZHMge3NtZF9yb3dfc3RhcnR9 CiAgIHRvIHtzbWRfcm93X2VuZH0gb2Yge3NtZF9hbGxyb3dzfSB8CiZsdDt0eHA6c21kX3F1 ZXJ5X2lmX3ByZXYmZ3Q7CiAgJmx0O2EgaHJlZj0mcXVvdDsmbHQ7dHhwOnBlcm1saW5rIC8m Z3Q7P3tzbWRfcXVlcnlfdW5pcXVlX2lkfT17c21kX3ByZXZwYWdlfSZxdW90OyZndDsKICAg ICBQcmV2aW91cyB7c21kX3Jvd3NfcHJldn0mbHQ7L2EmZ3Q7CiZsdDsvdHhwOnNtZF9xdWVy eV9pZl9wcmV2Jmd0OwombHQ7dHhwOnNtZF9xdWVyeV9pZl9uZXh0Jmd0OwogICZsdDthIGhy ZWY9JnF1b3Q7Jmx0O3R4cDpwZXJtbGluayAvJmd0Oz97c21kX3F1ZXJ5X3VuaXF1ZV9pZH09 e3NtZF9uZXh0cGFnZX0mcXVvdDsmZ3Q7CiAgICAgTmV4dCB7c21kX3Jvd3NfbmV4dH0mbHQ7 L2EmZ3Q7CiZsdDsvdHhwOnNtZF9xdWVyeV9pZl9uZXh0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+Tm90ZSB0aGlzIGlzIGp1c3QgYSBzaW1wbGUgZXhhbXBsZTogeW91IHdpbGwgaGF2ZSB0 byBiZSBtb3JlIGNsZXZlciB0aGFuIHRoYXQgaWYgeW91IGFyZSBwYWdpbmcgaW5kZXBlbmRl bnQgc2V0cyBvZiByb3dzIGJlY2F1c2UgeW91IHdpbGwgbmVlZCB0byBpbmNvcnBvcmF0ZSB0 aGUgcGFnaW5nIHZhcmlhYmxlIGZyb20gYm90aCBzbWRfcXVlcnkgdGFncyBpbiB5b3VyIHBh Z2Vmb3JtLjwvcD4KCgk8aDMgaWQ9ImVnMTMiPkV4YW1wbGUgMTM6IDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IHRhZ3MgaW4gY29udGFpbmVyPC9oMz4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPj09Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1 b3Q7U0VMRUNUICosCiAgICAgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLAog ICAgIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLAogICAgIHVuaXhfdGlt ZXN0YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzCiAgICAgRlJPTSB0ZXh0cGF0dGVybiBXSEVS RSBTdGF0dXMgSU4gKDQsNSkmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJy ZWFrPSZxdW90O2xpJnF1b3Q7IGh0bWxfaWQ9JnF1b3Q7bXlRdWVyeSZxdW90OwogICAgIHBv cHVsYXRlPSZxdW90O2FydGljbGUmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6dGl0bGUgLyZndDsg WyAmbHQ7dHhwOnBvc3RlZCAvJmd0OyBdCiZsdDsvdHhwOnNtZF9xdWVyeSZndDs9PQo8L2Nv ZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHRoZSA8Y29kZT5wb3B1bGF0ZTwvY29kZT4gYXR0 cmlidXRlIHJlbGllcyBvbiB5b3UgZXh0cmFjdGluZyA8c3Ryb25nPmFsbDwvc3Ryb25nPiBj b2x1bW5zIHRvIHNhdGlzZnkgdGV4dHBhdHRlcm4mIzgyMTc7cyBpbnRlcm5hbCBmdW5jdGlv bnMgc28gdGhpcyBmZWF0dXJlIHdvcmtzIGNvcnJlY3RseS4gQSBzaW1wbGUgPGNvZGU+c2Vs ZWN0ICogZnJvbSAuLi48L2NvZGU+IHdpbGwgbm90IHdvcmsuIEluIGZ1dHVyZSB2ZXJzaW9u cyBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0aGlzIG1pZ2h0IGNoYW5nZSBh bmQgYSBzaW1wbGUgc2VsZWN0ICogbWF5IHRoZW4gYmUgZW5vdWdoLjwvcD4KCgk8cD5Gb3Ig cmVmZXJlbmNlLCB0aGVzZSBhcmUgdGhlIGV4dHJhIGNvbHVtbnMgcmVxdWlyZWQgaW4gNC4y LjAgKGFuZCBlYXJsaWVyKTo8L3A+CgoJPHVsPgoJCTxsaT5BcnRpY2xlOiA8Y29kZT51bml4 X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0YW1wKExhc3RNb2Qp IGFzIHVMYXN0TW9kLCB1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlczwvY29k ZT48L2xpPgoJCTxsaT5JbWFnZTogbm9uZTwvbGk+CgkJPGxpPkZpbGU6IG5vbmU8L2xpPgoJ CTxsaT5MaW5rOiA8Y29kZT51bml4X3RpbWVzdGFtcChkYXRlKSBhcyB1RGF0ZTwvY29kZT48 L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImVnMTQiPkV4YW1wbGUgMTQ6IDxjb2RlPiZsdDt0eHA6 ZWxzZSAvJmd0OzwvY29kZT4gd2l0aCBmb3JtczwvaDM+CgoJPHA+SWYgeW91IHdpc2ggdG8g dXNlIHR4cCB0YWdzIHdpdGggYW4gJiM4MjE2O2Vsc2UmIzgyMTc7IGNsYXVzZSwgeW91IHVz dWFsbHkgbmVlZCB0byBlbXBsb3kgYSBjb250YWluZXIuIEFzIGEgY29udmVuaWVuY2UsIHNt ZF9xdWVyeSBhbGxvd3MgeW91IHRvIHVzZSB0aGUgY29udGFpbmVyJiM4MjE3O3MgPGNvZGU+ Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPiBjbGF1c2Ugd2l0aCBhIGZvcm0gc28geW91IGNh biByZS11c2UgdGhlIHF1ZXJ5IG91dHB1dCBhbmQgZGlzcGxheSBkaWZmZXJlbnQgcmVzdWx0 cyBpbiB0aGUgZXZlbnQgdGhlIHF1ZXJ5IHJldHVybnMgbm90aGluZy48L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVy eT0mcXVvdDtTRUxFQ1QgKiBGUk9NIHR4cF91c2VycyZxdW90OwogICAgIGZvcm09JnF1b3Q7 c2hvd191c2VycyZxdW90OyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiZsdDtwJmd0O05vIHVz ZXIgaW5mbyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+WW91ciA8Y29kZT5zaG93X3VzZXJzPC9jb2RlPiBmb3JtIGNhbiBjb250YWluIHVz dWFsIHJlcGxhY2VtZW50IHZhcmlhYmxlcyBhbmQgbWFya3VwIHRvIGZvcm1hdCB0aGUgcmVz dWx0cy4gUGVyaGFwcyBsYXRlciB5b3UgbWF5IHdpc2ggdG8gcmUtdXNlIHRoZSBzaG93X3Vz ZXJzIG91dHB1dCBpbiBhbm90aGVyIHF1ZXJ5OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPj09Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1b3Q7U0VM RUNUICogRlJPTSB0eHBfdXNlcnMgV0hFUkUKICAgICBSZWFsTmFtZSBsaWtlICYjMzk7JT91 c3IlJiMzOTsmcXVvdDsgZm9ybT0mcXVvdDtzaG93X3VzZXJzJnF1b3Q7Jmd0OwombHQ7dHhw OmVsc2UgLyZndDsKJmx0O3AmZ3Q7Tm8gbWF0Y2hpbmcgdXNlcnMgZm91bmQmbHQ7L3AmZ3Q7 CiZsdDsvdHhwOnNtZF9xdWVyeSZndDs9PQo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0 IHlvdSBjYW4gZGlzcGxheSBhIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlIGJ1dCB1c2UgdGhl IHNhbWUgZm9ybSAod2UmIzgyMTc7cmUgZXNjYXBpbmcgVGV4dGlsZSBoZXJlIHdpdGggPGNv ZGU+PT08L2NvZGU+IHNvIGl0IGRvZXNuJiM4MjE3O3QgaW50ZXJwcmV0IHRoZSBwZXJjZW50 IHNpZ25zIGFzIDxjb2RlPiZsdDtzcGFuJmd0OzwvY29kZT4gZWxlbWVudHMpLjwvcD4KCgk8 cD5JZiB5b3UgYXJlIGNhcmVmdWwgYW5kIGtub3cgeW91IHdpbGwgPGVtPm5ldmVyPC9lbT4g dXNlIGEgcGFydGljdWxhciBmb3JtIHdpdGggYW4gc21kX3F1ZXJ5IGNvbnRhaW5lciB5b3Ug Y2FuIGhhcmQtY29kZSB5b3VyICYjODIxNjtlbHNlJiM4MjE3OyBjbGF1c2UgZGlyZWN0bHkg aW4geW91ciBmb3JtIGFuZCB1c2Ugc21kX3F1ZXJ5IGFzIGEgc2VsZi1jbG9zaW5nIHRhZy4g WW91ciBmb3JtIHdpbGwgbG9vayBhIGJpdCBvZGQgd2l0aCBhIHNlZW1pbmcgJiM4MjE2O2Rh bmdsaW5nJiM4MjE3OyBlbHNlLCBidXQgaXQgd2lsbCB3b3JrIGR1ZSB0byB0aGUgd2F5IHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwYXJzZXIgb3BlcmF0ZXMuIElmIHlv dSBkbyB0cnkgYW5kIHVzZSBhIGZvcm0gd2l0aCBhIDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0 OzwvY29kZT4gaW4gaXQgYXMgd2VsbCBhcyBjYWxsaW5nIHRoZSBmb3JtIHVzaW5nIGFuIHNt ZF9xdWVyeSB3aXRoIGEgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPiBpbiBpdHMg Y29udGFpbmVyLCBUZXh0cGF0dGVybiB3aWxsIHRocm93IGFuIGVycm9yICh1c3VhbGx5IHRo ZSwgcGVyaGFwcyB1bmV4cGVjdGVkLCA8Y29kZT50YWcgZG9lcyBub3QgZXhpc3Q8L2NvZGU+ IGVycm9yKS4gQmUgY2FyZWZ1bCE8L3A+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5n ZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4yMiBNYXkgMDggfCAwLjEwIHwgSW5pdGlhbCByZWxl YXNlPC9saT4KCQk8bGk+MjMgTWF5IDA4IHwgMC4xMSB8IEFsbG93ZWQgbWF0aHMgaW4gcXVl cmllcyAodXNlIGh0bWwgZW50aXRpZXMgaW4gVFhQNC4wLjYpIGFuZCBmaXhlZCA8c3BhbiBj bGFzcz0iY2FwcyI+V0hFUkU8L3NwYW4+IGNsYXVzZSB0byBkZWZhdWx0IHRvIDE9MSBpZiBu b25lIHN1cHBsaWVkIChib3RoIHRoYW5rcyBqbSkgOyBhZGRlZCBtb3JlIGRldGFpbGVkIGZp bGUgYW5kIGxpbmsgc3VwcG9ydDwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8IDAuMTIgfCBBZGRl ZCA8Y29kZT50eHA6ZWxzZTwvY29kZT4gc3VwcG9ydCBpbiBjb250YWluZXIgKHRoYW5rcyBq YWtvYikgOyBhZGRlZCA8Y29kZT5zaWxlbnQ8L2NvZGU+IGFuZCA8Y29kZT5jb3VudDwvY29k ZT4gYXR0cmlidXRlcywgYW5kIHRoZSByZXBsYWNlbWVudCB0YWdzIDxjb2RlPntzbWRfcm93 c30ge3NtZF90aGlzcm93fSB7c21kX3RoaXNpbmRleH08L2NvZGU+PC9saT4KCQk8bGk+MjMg Tm92IDA4IHwgMC4yMCB8IEFkZGVkIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2Nv ZGU+IHN1cHBvcnQgOyBlbmFibGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZh cmlhYmxlIHN1cHBvcnQgOyBhZGRlZCA8Y29kZT51cmxmaWx0ZXI8L2NvZGU+LCA8Y29kZT51 cmxyZXBsYWNlPC9jb2RlPiwgPGNvZGU+ZGVsaW08L2NvZGU+LCA8Y29kZT5wYXJhbWRlbGlt PC9jb2RlPiBhbmQgPGNvZGU+ZGVmYXVsdHM8L2NvZGU+IGF0dHJpYnV0ZXM8L2xpPgoJCTxs aT4xNyBNYXIgMDkgfCAwLjIxIHwgQWRkZWQgPGNvZGU+JF9TRVJWRVI8L2NvZGU+IHZhciBz dXBwb3J0PC9saT4KCQk8bGk+MTYgT2N0IDA5IHwgMC4yMiB8IEFkZGVkIDxjb2RlPmVzY2Fw ZTwvY29kZT4gYXR0cmlidXRlICh0aGFua3MgamFrb2IpIDsgYWRkZWQgPGNvZGU+cHJlcGFy c2U8L2NvZGU+IGF0dHJpYnV0ZTwvbGk+CgkJPGxpPjAyIERlYyAwOSB8IDAuMzAgfCBBZGRl ZCB1bmljb2RlIHN1cHBvcnQgYW5kIDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gdG8gZml4 IGEgZmV3IGJ1Z3MgKHRoYW5rcyBzcGVla2UpIDsgYWRkZWQgZGlyZWN0IHBhZ2luYXRpb24g c3VwcG9ydDwvbGk+CgkJPGxpPjA1IERlYyAwOSB8IDAuNDAgfCBBZGRlZCA8Y29kZT5wYWdl dmFyPC9jb2RlPiwgPGNvZGU+e3NtZF9wcmV2cGFnZX08L2NvZGU+LCA8Y29kZT57c21kX25l eHRwYWdlfTwvY29kZT4sIDxjb2RlPntzbWRfcm93c19wcmV2fTwvY29kZT4gYW5kIDxjb2Rl PntzbWRfcm93c19uZXh0fTwvY29kZT4sIDxjb2RlPiZsdDt0eHA6c21kX3F1ZXJ5X2lmX3By ZXYmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpzbWRfcXVlcnlfaWZfbmV4dCZndDs8 L2NvZGU+IDsgcmVtb3ZlZCA8Y29kZT5wZ29ubHk8L2NvZGU+IGFzIHBhZ2luZyBjYW4gbm93 IDxlbT5vbmx5PC9lbT4gYmUgcGVyZm9ybWVkIGluIHRoZSA8Y29kZT5wYWdlZm9ybTwvY29k ZT48L2xpPgoJCTxsaT4xNyBKYW4gMTAgfCAwLjQxIHwgQWRkZWQgPGNvZGU+aGFzaHNpemU8 L2NvZGU+LCA8Y29kZT5tb2RlPC9jb2RlPiBhbmQgPGNvZGU+e3NtZF9xdWVyeV91bmlxdWVf aWR9PC9jb2RlPjwvbGk+CgkJPGxpPjMxIEF1ZyAxMCB8IDAuNTAgfCA8Y29kZT5mb3JtPC9j b2RlPiBvdmVycmlkZXMgY29udGFpbmVyIDsgY29udGFpbmVyJiM4MjE3O3MgZWxzZSBhdXRv bWF0aWNhbGx5IHdvcmtzIGluIDxjb2RlPmZvcm08L2NvZGU+cyA7IGFkZGVkIDxjb2RlPnBv cHVsYXRlPC9jb2RlPiAodGhhbmtzIGF0YnJhZGxleSk7IGZpeGVkIDxzcGFuIGNsYXNzPSJj YXBzIj5QSFA8L3NwYW4+IDQgY29tcGF0aWJpbGl0eSBhbmQgYWRkZWQgPGNvZGU+aHRtbF9p ZDwvY29kZT4gYW5kIDxjb2RlPmJyZWFrY2xhc3M8L2NvZGU+ICh0aGFua3MgbWFrc3MpIDsg PHNwYW4gY2xhc3M9ImNhcHMiPlNIT1c8L3NwYW4+IGRlZmF1bHRzIHRvIG91dHB1dCBtb2Rl PC9saT4KCTwvdWw+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+ CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7 fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAi Q291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNG RkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9y ZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxh eTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9o ZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5n LWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsg Y29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4 IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9y OiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4 dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBz b2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHgg R2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9u dDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBt YXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3Jh dGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWws IHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3Rl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWln aHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNl ZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5 MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAg dGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0g MDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxw IC5yZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4 IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0 eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czo0OiJjb2RlIjtzOjEy NzU0OiJmdW5jdGlvbiBzbWRfcXVlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAk cHJldGV4dCwgJHNtZF9xdWVyeV9wZ2luZm8sICR0aGlzcGFnZSwgJHRoaXNhcnRpY2xlLCAk dGhpc2ltYWdlLCAkdGhpc2ZpbGUsICR0aGlzbGluazsNCg0KCWV4dHJhY3QobEF0dHMoYXJy YXkoDQoJCSdjb2x1bW4nID0+ICcnLA0KCQkndGFibGUnID0+ICcnLA0KCQknd2hlcmUnID0+ ICcnLA0KCQkncXVlcnknID0+ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdwYWdlZm9ybScg PT4gJycsDQoJCSdwYWdldmFyJyA9PiAncGcnLA0KCQkncGFnZXBvcycgPT4gJ2JlbG93JywN CgkJJ2NvbHNmb3JtJyA9PiAnJywNCgkJJ2VzY2FwZScgPT4gJycsDQoJCSdzdHJpY3RmaWVs ZHMnID0+ICcwJywNCgkJJ3ByZXBhcnNlJyA9PiAnMCcsDQoJCSdwb3B1bGF0ZScgPT4gJycs IC8vIG9uZSBvZiBhcnRpY2xlLCBpbWFnZSwgZmlsZSwgb3IgbGluaw0KCQkndXJsZmlsdGVy JyA9PiAnJywNCgkJJ3VybHJlcGxhY2UnID0+ICcnLA0KCQknZGVmYXVsdHMnID0+ICcnLA0K CQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ICc6JywNCgkJJ3NpbGVudCcg PT4gJzAnLA0KCQknbW9kZScgPT4gJ2F1dG8nLCAvLyBhdXRvIGNob29zZXMgb25lIG9mIGlu cHV0IChJTlNFUlQvVVBEQVRFKSBvciBvdXRwdXQgKFFVRVJZKQ0KCQknY291bnQnID0+ICd1 cCcsDQoJCSdsaW1pdCcgPT4gMCwNCgkJJ29mZnNldCcgPT4gMCwNCgkJJ2hhc2hzaXplJyA9 PiAnNjo1JywNCgkJJ2xhYmVsJyA9PiAnJywNCgkJJ2xhYmVsdGFnJyA9PiAnJywNCgkJJ3dy YXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQkn YnJlYWtjbGFzcycgPT4gJycsDQoJCSdodG1sX2lkJyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAn MCcsDQoJKSwkYXR0cykpOw0KDQoJLy8gR3JhYiB0aGUgZm9ybSBvciBlbWJlZGRlZCAkdGhp bmcNCgkkZmFsc2VQYXJ0ID0gRXZhbEVsc2UoJHRoaW5nLCAwKTsNCg0KCSR0aGluZyA9ICgk Zm9ybSkgPyBmZXRjaF9mb3JtKCRmb3JtKSAuICgoJGZhbHNlUGFydCkgPyAnPHR4cDplbHNl IC8+JyAuICRmYWxzZVBhcnQgOiAnJykgOiAoKCR0aGluZykgPyAkdGhpbmcgOiAnJyk7DQoJ JGNvbHNmb3JtID0gKGVtcHR5KCRjb2xzZm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRjb2xz Zm9ybSk7DQoJJHBhZ2ViaXQgPSBhcnJheSgpOw0KCWlmICgkcGFnZWZvcm0pIHsNCgkJJHBh Z2VQb3NBbGxvd2VkID0gYXJyYXkoImJlbG93IiwgImFib3ZlIik7DQoJCSRwYWdpbmcgPSAx Ow0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0g c3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xp c3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRl bSkgew0KCQkJJHBhZ2ViaXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxs b3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJ Ly8gTWFrZSBhIHVuaXF1ZSBoYXNoIHZhbHVlIGZvciB0aGlzIGluc3RhbmNlIHNvIHRoZSBx dWVyaWVzIGNhbiBiZSBwYWdlZCBpbmRlcGVuZGVudGx5DQoJJHVuaXEgPSAnJzsNCgkkbWQ1 ID0gbWQ1KCRjb2x1bW4uJHRhYmxlLiR3aGVyZS4kcXVlcnkuJGRlZmF1bHRzKTsNCglsaXN0 KCRoYXNoTGVuLCAkaGFzaFNraXApID0gZXhwbG9kZSgnOicsICRoYXNoc2l6ZSk7DQoJZm9y ICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAkaGFzaExlbjsgJGNudCsrLCAkaWR4ID0g KCgkaWR4KyRoYXNoU2tpcCkgJSBzdHJsZW4oJG1kNSkpKSB7DQoJCSR1bmlxIC49ICRtZDVb JGlkeF07DQoJfQ0KDQoJJHBhZ2V2YXIgPSAoJHBhZ2V2YXIgPT0gJ1NNRF9RVUVSWV9VTklR VUVfSUQnKSA/ICR1bmlxIDogJHBhZ2V2YXI7DQoJJHVybGZpbHRlciA9ICghZW1wdHkoJHVy bGZpbHRlcikpID8gZG9fbGlzdCgkdXJsZmlsdGVyLCAkZGVsaW0pIDogJyc7DQoJJHVybHJl cGxhY2UgPSAoIWVtcHR5KCR1cmxyZXBsYWNlKSkgPyBkb19saXN0KCR1cmxyZXBsYWNlLCAk ZGVsaW0pIDogJyc7DQoJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJZWNobyAiKysgVVJMIEZJTFRF UlMgKysiOw0KCQlkbXAoJHVybGZpbHRlcik7DQoJCWRtcCgkdXJscmVwbGFjZSk7DQoJfQ0K DQoJLy8gUHJvY2VzcyBhbnkgZGVmYXVsdHMNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8g MCA6IDE7DQoJJGRlZmF1bHRzID0gZG9fbGlzdCgkZGVmYXVsdHMsICRkZWxpbSk7DQoJJGRm bHRzID0gYXJyYXkoKTsNCglmb3JlYWNoICgkZGVmYXVsdHMgYXMgJGl0ZW0pIHsNCgkJJGl0 ZW0gPSBkb19saXN0KCRpdGVtLCAkcGFyYW1kZWxpbSk7DQoJCWlmICgkaXRlbVswXSA9PSAn JykgY29udGludWU7DQoJCWlmIChjb3VudCgkaXRlbSkgPT0gMikgew0KCQkJJGRmbHRzWyRp dGVtWzBdXSA9IHNtZF9xdWVyeV9wYXJzZSgkaXRlbVsxXSwgYXJyYXkoJycpLCBhcnJheSgn JyksIGFycmF5KCcnKSwgJHNwYyk7DQoJCX0NCgl9DQoNCglpZiAoJGRlYnVnID4gMCkgew0K CQllY2hvICIrKyBERUZBVUxUUyArKyI7DQoJCWRtcCgkZGZsdHMpOw0KCX0NCg0KCS8vIEdl dCBhIGxpc3Qgb2YgZmllbGRzIHRvIGVzY2FwZQ0KCSRlc2NhcGVzID0gZG9fbGlzdCgkZXNj YXBlLCAkZGVsaW0pOw0KCWZvcmVhY2ggKCRlc2NhcGVzIGFzICRpZHggPT4gJHZhbCkgew0K CQlpZiAoJHZhbCA9PSAnJykgew0KCQkJdW5zZXQoJGVzY2FwZXNbJGlkeF0pOw0KCQl9DQoJ fQ0KDQoJJHJzID0gYXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sb3V0ID0gJGZp bmFsb3V0ID0gYXJyYXkoKTsNCgkkcGFnZW91dCA9ICcnOw0KDQoJLy8gcXVlcnkgb3ZlcnJp ZGVzIGNvbHVtbi90YWJsZS93aGVyZQ0KCWlmICgkcXVlcnkpIHsNCgkJJHF1ZXJ5ID0gc21k X3F1ZXJ5X3BhcnNlKCRxdWVyeSwgJGRmbHRzLCAkdXJsZmlsdGVyLCAkdXJscmVwbGFjZSwg JHNwYyk7DQoJCSRtb2RlID0gKCRtb2RlID09ICdhdXRvJykgPyAoKHByZWdfbWF0Y2goJy8o c2VsZWN0fHNob3cpL2knLCAkcXVlcnkpKSA/ICdvdXRwdXQnIDogJ2lucHV0JykgOiAkbW9k ZTsNCgkJaWYgKCRtb2RlID09ICdpbnB1dCcpIHsNCgkJCSRycyA9ICgkc2lsZW50KSA/IEBz YWZlX3F1ZXJ5KCRxdWVyeSwgJGRlYnVnKSA6IHNhZmVfcXVlcnkoJHF1ZXJ5LCAkZGVidWcp Ow0KCQl9IGVsc2Ugew0KCQkJJHJzID0gKCRzaWxlbnQpID8gQGdldFJvd3MoJHF1ZXJ5LCAk ZGVidWcpIDogZ2V0Um93cygkcXVlcnksICRkZWJ1Zyk7DQoJCX0NCgl9IGVsc2Ugew0KCQlp ZiAoJGNvbHVtbiAmJiAkdGFibGUpIHsNCgkJCS8vIFRPRE86IFBlcmhhcHMgZG9TbGFzaCgp IHRoZXNlPw0KCQkJJGNvbHVtbiA9IHNtZF9xdWVyeV9wYXJzZSgkY29sdW1uLCAkZGZsdHMs ICR1cmxmaWx0ZXIsICR1cmxyZXBsYWNlLCAkc3BjKTsNCgkJCSR0YWJsZSA9IHNtZF9xdWVy eV9wYXJzZSgkdGFibGUsICRkZmx0cywgJHVybGZpbHRlciwgJHVybHJlcGxhY2UsICRzcGMp Ow0KCQkJJHdoZXJlID0gc21kX3F1ZXJ5X3BhcnNlKCR3aGVyZSwgJGRmbHRzLCAkdXJsZmls dGVyLCAkdXJscmVwbGFjZSwgJHNwYyk7DQoJCQkkd2hlcmUgPSAoJHdoZXJlKSA/ICR3aGVy ZSA6ICIxPTEiOw0KCQkJJG1vZGUgPSAnb3V0cHV0JzsNCgkJCSRycyA9ICgkc2lsZW50KSA/ IEBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hlcmUsICRkZWJ1ZykgOiBzYWZlX3Jv d3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hlcmUsICRkZWJ1Zyk7DQoJCX0gZWxzZSB7DQoJCQl0 cmlnZ2VyX2Vycm9yKCJZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IDEgJ2NvbHVtbicgYW5k IGEgJ3RhYmxlJy4iKTsNCgkJfQ0KCX0NCg0KCWlmICgkbW9kZSA9PSAnb3V0cHV0Jykgew0K CQkkbnVtcm93cyA9IGNvdW50KCRycyk7DQoJCSR0cnVlUGFydCA9IEV2YWxFbHNlKCR0aGlu ZywgMSk7DQoNCgkJaWYgKCRycykgew0KCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQllY2hv ICIrKyBRVUVSWSBSRVNVTFQgU0VUICsrIjsNCgkJCQlkbXAoJG51bXJvd3MgLiAiIFJPV1Mi KTsNCgkJCQlkbXAoJHJzKTsNCgkJCX0NCg0KCQkJaWYgKCRsaW1pdCA+IDApIHsNCgkJCQkk c2FmZXBhZ2UgPSAkdGhpc3BhZ2U7DQoJCQkJJHRvdGFsID0gJG51bXJvd3MgLSAkb2Zmc2V0 Ow0KCQkJCSRudW1QYWdlcyA9IGNlaWwoJHRvdGFsLyRsaW1pdCk7DQoJCQkJJHBnID0gKCFn cHMoJHBhZ2V2YXIpKSA/IDEgOiBncHMoJHBhZ2V2YXIpOw0KCQkJCSRwZ29mZnNldCA9ICRv ZmZzZXQgKyAoKCRwZyAtIDEpICogJGxpbWl0KTsNCgkJCQkvLyBzZW5kIHBhZ2luZyBpbmZv IHRvIHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJCQkJJHBhZ2VvdXRbJ3BnJ10gPSAkcGc7 DQoJCQkJJHBhZ2VvdXRbJ251bVBhZ2VzJ10gPSAkbnVtUGFnZXM7DQoJCQkJJHBhZ2VvdXRb J3MnXSA9ICRwcmV0ZXh0WydzJ107DQoJCQkJJHBhZ2VvdXRbJ2MnXSA9ICRwcmV0ZXh0Wydj J107DQoJCQkJJHBhZ2VvdXRbJ2dyYW5kX3RvdGFsJ10gPSAkbnVtcm93czsNCgkJCQkkcGFn ZW91dFsndG90YWwnXSA9ICR0b3RhbDsNCgkJCQkkdGhpc3BhZ2UgPSAkcGFnZW91dDsNCgkJ CX0gZWxzZSB7DQoJCQkJJHBnb2Zmc2V0ID0gJG9mZnNldDsNCgkJCX0NCg0KCQkJJHJzID0g YXJyYXlfc2xpY2UoJHJzLCAkcGdvZmZzZXQsICgoJGxpbWl0PT0wKSA/IDk5OTk5IDogJGxp bWl0KSk7DQoJCQkkcGFnZXJvd3MgPSBjb3VudCgkcnMpOw0KDQoJCQkkcmVwbGFjZW1lbnRz ID0gJHJlcGFnZW1lbnRzID0gJGNvbHJlcGxhY2VtZW50cyA9IGFycmF5KCk7DQoJCQkkcGFn ZV9yb3djbnQgPSAoJGNvdW50PT0idXAiKSA/IDAgOiAkcGFnZXJvd3MtMTsNCgkJCSRxcnlf cm93Y250ID0gKCRjb3VudD09InVwIikgPyAkcGdvZmZzZXQtJG9mZnNldCA6ICRudW1yb3dz LSRwZ29mZnNldC0xOw0KCQkJJGZpcnN0X3JvdyA9ICRxcnlfcm93Y250ICsgMTsNCg0KCQkJ Ly8gUHJlc2VydmUgYW55IGV4dGVybmFsIGNvbnRleHQNCgkJCXN3aXRjaCAoJHBvcHVsYXRl KSB7DQoJCQkJY2FzZSAnYXJ0aWNsZSc6DQoJCQkJCSRzYWZlID0gKCR0aGlzYXJ0aWNsZSkg PyAkdGhpc2FydGljbGUgOiBhcnJheSgpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdpbWFn ZSc6DQoJCQkJCSRzYWZlID0gKCR0aGlzaW1hZ2UpID8gJHRoaXNpbWFnZSA6IGFycmF5KCk7 DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2ZpbGUnOg0KCQkJCQkkc2FmZSA9ICgkdGhpc2Zp bGUpID8gJHRoaXNmaWxlIDogYXJyYXkoKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnbGlu ayc6DQoJCQkJCSRzYWZlID0gKCR0aGlzbGluaykgPyAkdGhpc2xpbmsgOiBhcnJheSgpOw0K CQkJCQlicmVhazsNCgkJCX0NCg0KCQkJZm9yZWFjaCAoJHJzIGFzICRyb3cpIHsNCgkJCQlm b3JlYWNoICgkcm93IGFzICRjb2xpZCA9PiAkdmFsKSB7DQoJCQkJCWlmICgkcGFnZV9yb3dj bnQgPT0gMCAmJiAkY29sc2Zvcm0pIHsNCgkJCQkJCSRjb2xyZXBsYWNlbWVudHNbJ3snLiRj b2xpZC4nfSddID0gJGNvbGlkOw0KCQkJCQl9DQoJCQkJCS8vIENvbnN0cnVjdCB0aGUgcmVw bGFjZW1lbnQgYXJyYXlzDQoJCQkJCSRyZXBsYWNlbWVudHNbJ3snLiRjb2xpZC4nfSddID0g KGluX2FycmF5KCRjb2xpZCwgJGVzY2FwZXMpID8gaHRtbHNwZWNpYWxjaGFycygkdmFsLCBF TlRfUVVPVEVTKSA6ICR2YWwpOw0KCQkJCQlpZiAoJHBhZ2Vfcm93Y250ID09ICgoJGNvdW50 PT0idXAiKSA/ICRwYWdlcm93cy0xIDogMCkgJiYgJHBhZ2Vmb3JtICYmICRsaW1pdD4wKSB7 DQoJCQkJCQkkcHJldnBnID0gKCgkcGctMSkgPiAwKSA/ICRwZy0xIDogJyc7DQoJCQkJCQkk bmV4dHBnID0gKCgkcGcrMSkgPD0gJG51bVBhZ2VzKSA/ICRwZysxIDogJyc7DQoJCQkJCQkk cmVwYWdlbWVudHNbJ3tzbWRfYWxscm93c30nXSA9ICR0b3RhbDsNCgkJCQkJCSRyZXBhZ2Vt ZW50c1sne3NtZF9wYWdlc30nXSA9ICRudW1QYWdlczsNCgkJCQkJCSRyZXBhZ2VtZW50c1sn e3NtZF9wcmV2cGFnZX0nXSA9ICRwcmV2cGc7DQoJCQkJCQkkcmVwYWdlbWVudHNbJ3tzbWRf dGhpc3BhZ2V9J10gPSAkcGc7DQoJCQkJCQkkcmVwYWdlbWVudHNbJ3tzbWRfbmV4dHBhZ2V9 J10gPSAkbmV4dHBnOw0KCQkJCQkJJHJlcGFnZW1lbnRzWyd7c21kX3Jvd19zdGFydH0nXSA9 ICRmaXJzdF9yb3c7DQoJCQkJCQkkcmVwYWdlbWVudHNbJ3tzbWRfcm93X2VuZH0nXSA9ICRx cnlfcm93Y250ICsgMTsNCgkJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF9yb3dzX3ByZXZ9J10g PSAoKCRwcmV2cGcpID8gJGxpbWl0IDogMCk7DQoJCQkJCQkkcmVwYWdlbWVudHNbJ3tzbWRf cm93c19uZXh0fSddID0gKCgkbmV4dHBnKSA/ICgoJHFyeV9yb3djbnQrJGxpbWl0KzEpID4g JHRvdGFsID8gJHRvdGFsLSRxcnlfcm93Y250LTEgOiAkbGltaXQpIDogMCk7DQoJCQkJCQkk cmVwYWdlbWVudHNbJ3tzbWRfcXVlcnlfdW5pcXVlX2lkfSddID0gJHVuaXE7DQoJCQkJCQkk c21kX3F1ZXJ5X3BnaW5mbyA9ICRyZXBhZ2VtZW50czsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkk cmVwbGFjZW1lbnRzWyd7c21kX2FsbHJvd3N9J10gPSAoKCRsaW1pdD4wKSA/ICR0b3RhbCA6 ICRudW1yb3dzLSRwZ29mZnNldCk7DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF9yb3dzfSdd ID0gJHBhZ2Vyb3dzOw0KCQkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcGFnZXN9J10gPSAoKCRs aW1pdD4wKSA/ICRudW1QYWdlcyA6IDEpOw0KCQkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfdGhp c3BhZ2V9J10gPSAoKCRsaW1pdD4wKSA/ICRwZyA6IDEpOw0KCQkJCSRyZXBsYWNlbWVudHNb J3tzbWRfdGhpc2luZGV4fSddID0gJHBhZ2Vfcm93Y250Ow0KCQkJCSRyZXBsYWNlbWVudHNb J3tzbWRfdGhpc3Jvd30nXSA9ICRwYWdlX3Jvd2NudCArIDE7DQoJCQkJJHJlcGxhY2VtZW50 c1sne3NtZF9jdXJzb3JpbmRleH0nXSA9ICRxcnlfcm93Y250Ow0KCQkJCSRyZXBsYWNlbWVu dHNbJ3tzbWRfY3Vyc29yfSddID0gJHFyeV9yb3djbnQgKyAxOw0KCQkJCWlmICgkZGVidWcg PiAwKSB7DQoJCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyArKyI7DQoJCQkJCWRtcCgkcmVw bGFjZW1lbnRzKTsNCgkJCQl9DQoNCgkJCQkvLyBBdHRlbXB0IHRvIHNldCB1cCBjb250ZXh0 cyB0byBhbGxvdyBUWFAgdGFncyB0byBiZSB1c2VkLg0KCQkJCS8vIFRoaXMgZmFjaWxpdHkg cmVsaWVzIG9uIHRoZSBjb3JyZWN0IGNvbHVtbnMgYmVpbmcgcHVsbGVkIG91dCBieSB0aGUg cXVlcnk6IGNhdmVhdCB1dGlsaXRvcg0KCQkJCXN3aXRjaCAoJHBvcHVsYXRlKSB7DQoJCQkJ CWNhc2UgJ2FydGljbGUnOg0KCQkJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJ CQkJCSR0aGlzYXJ0aWNsZVsnaXNfZmlyc3QnXSA9ICgkcGFnZV9yb3djbnQgPT0gMSk7DQoJ CQkJCQkkdGhpc2FydGljbGVbJ2lzX2xhc3QnXSA9ICgoJHBhZ2Vfcm93Y250ICsgMSkgPT0g JHBhZ2Vyb3dzKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdpbWFnZSc6DQoJCQkJCQkk dGhpc2ltYWdlID0gaW1hZ2VfZm9ybWF0X2luZm8oJHJvdyk7DQoJCQkJCQlicmVhazsNCgkJ CQkJY2FzZSAnZmlsZSc6DQoJCQkJCQkkdGhpc2ZpbGUgPSBmaWxlX2Rvd25sb2FkX2Zvcm1h dF9pbmZvKCRyb3cpOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgJ2xpbmsnOg0KCQkJCQkJ JHRoaXNsaW5rID0gYXJyYXkoDQoJCQkJCQkJJ2lkJyAgICAgICAgICA9PiAkcm93WydpZCdd LA0KCQkJCQkJCSdsaW5rbmFtZScgICAgPT4gJHJvd1snbGlua25hbWUnXSwNCgkJCQkJCQkn dXJsJyAgICAgICAgID0+ICRyb3dbJ3VybCddLA0KCQkJCQkJCSdkZXNjcmlwdGlvbicgPT4g JHJvd1snZGVzY3JpcHRpb24nXSwNCgkJCQkJCQknZGF0ZScgICAgICAgID0+ICRyb3dbJ3VE YXRlJ10sDQoJCQkJCQkJJ2NhdGVnb3J5JyAgICA9PiAkcm93WydjYXRlZ29yeSddLA0KCQkJ CQkJCSdhdXRob3InICAgICAgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCQkpOw0KCQkJCQkJ YnJlYWs7DQoJCQkJfQ0KDQoJCQkJJG91dFtdID0gKCRwcmVwYXJzZSkgPyBzdHJ0cihwYXJz ZSgkdHJ1ZVBhcnQpLCAkcmVwbGFjZW1lbnRzKSA6IHBhcnNlKHN0cnRyKCR0cnVlUGFydCwg JHJlcGxhY2VtZW50cykpOw0KCQkJCSRxcnlfcm93Y250ID0gKCRjb3VudD09InVwIikgPyAk cXJ5X3Jvd2NudCsxIDogJHFyeV9yb3djbnQtMTsNCgkJCQkkcGFnZV9yb3djbnQgPSAoJGNv dW50PT0idXAiKSA/ICRwYWdlX3Jvd2NudCsxIDogJHBhZ2Vfcm93Y250LTE7DQoJCQl9DQoN CgkJCWlmICgkb3V0KSB7DQoJCQkJaWYgKCRjb2xyZXBsYWNlbWVudHMpIHsNCgkJCQkJJGNv bG91dFtdID0gKCRwcmVwYXJzZSkgPyBzdHJ0cihwYXJzZSgkY29sc2Zvcm0pLCAkY29scmVw bGFjZW1lbnRzKSA6IHBhcnNlKHN0cnRyKCRjb2xzZm9ybSwgJGNvbHJlcGxhY2VtZW50cykp Ow0KCQkJCX0NCgkJCQlpZiAoJHJlcGFnZW1lbnRzKSB7DQoJCQkJCSRwYWdlb3V0ID0gKCRw cmVwYXJzZSkgPyBzdHJ0cihwYXJzZSgkcGFnZWZvcm0pLCAkcmVwYWdlbWVudHMpIDogcGFy c2Uoc3RydHIoJHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMpKTsNCgkJCQl9DQoNCgkJCQkvLyBN YWtlIHVwIHRoZSBmaW5hbCBvdXRwdXQNCgkJCQlpZiAoaW5fYXJyYXkoImFib3ZlIiwgJHBh Z2ViaXQpKSB7DQoJCQkJCSRmaW5hbG91dFtdID0gJHBhZ2VvdXQ7DQoJCQkJfQ0KCQkJCSRm aW5hbG91dFtdID0gZG9MYWJlbCgkbGFiZWwsICRsYWJlbHRhZykuZG9XcmFwKGFycmF5X21l cmdlKCRjb2xvdXQsICRvdXQpLCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICRicmVha2Ns YXNzLCAnJywgJycsICRodG1sX2lkKTsNCgkJCQlpZiAoaW5fYXJyYXkoImJlbG93IiwgJHBh Z2ViaXQpKSB7DQoJCQkJCSRmaW5hbG91dFtdID0gJHBhZ2VvdXQ7DQoJCQkJfQ0KDQoJCQkJ Ly8gUmVzdG9yZSB0aGUgcGFnaW5nIG91dHNpZGUgdGhlIHBsdWdpbiBjb250YWluZXINCgkJ CQlpZiAoJGxpbWl0ID4gMCkgew0KCQkJCQkkdGhpc3BhZ2UgPSAkc2FmZXBhZ2U7DQoJCQkJ fQ0KDQoJCQkJLy8gUmVzdG9yZSB0aGUgb3RoZXIgY29udGV4dHMNCgkJCQlpZiAoaXNzZXQo JHNhZmUpKSB7DQoJCQkJCXN3aXRjaCAoJHBvcHVsYXRlKSB7DQoJCQkJCQljYXNlICdhcnRp Y2xlJzoNCgkJCQkJCQkkdGhpc2FydGljbGUgPSAkc2FmZTsNCgkJCQkJCQlicmVhazsNCgkJ CQkJCWNhc2UgJ2ltYWdlJzoNCgkJCQkJCQkkdGhpc2ltYWdlID0gJHNhZmU7DQoJCQkJCQkJ YnJlYWs7DQoJCQkJCQljYXNlICdmaWxlJzoNCgkJCQkJCQkkdGhpc2ZpbGUgPSAkc2FmZTsN CgkJCQkJCQlicmVhazsNCgkJCQkJCWNhc2UgJ2xpbmsnOg0KCQkJCQkJCSR0aGlzbGluayA9 ICRzYWZlOw0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXJldHVybiBqb2lu KCcnLCAkZmluYWxvdXQpOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJcmV0dXJuIHBhcnNlKEV2 YWxFbHNlKCR0aGluZywgMCkpOw0KCQl9DQoJfQ0KCXJldHVybiAnJzsNCn0NCg0KLy8gUmV0 dXJucyBhIHN0cmluZyB3aXRoIGFueSA/IHZhcmlhYmxlcyByZXBsYWNlZCB3aXRoIHRoZWly IGdsb2JhbHMNCi8vIFVSTCBWYXJpYWJsZXMgYXJlIG9wdGlvbmFsbHkgcnVuIHRocm91Z2gg cHJlZ19yZXBsYWNlKCkgdG8gc2FuaXRpemUgdGhlbS4NCi8vICAkcGF0IGlzIGFuIGFycmF5 IG9mIHJlZ2V4IHNlYXJjaCBwYXR0ZXJucw0KLy8gICRyZXAgaXMgYW4gYXJyYXkgb2YgcmVn ZXggc2VhcmNoIHJlcGFsY2VtZW50cyAoZGVmYXVsdCA9ICcnLCBpLmUuIHJlbW92ZSB3aGF0 ZXZlciBtYXRjaGVzKQ0KZnVuY3Rpb24gc21kX3F1ZXJ5X3BhcnNlKCRpdGVtLCAkZGZsdHM9 YXJyYXkoJycpLCAkcGF0PWFycmF5KCcnKSwgJHJlcD1hcnJheSgnJyksICRsYXg9dHJ1ZSkg ew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkdGhpc2ltYWdlLCAkdGhpc2Zp bGUsICR0aGlzbGluaywgJHZhcmlhYmxlOw0KDQoJJGl0ZW0gPSBodG1sX2VudGl0eV9kZWNv ZGUoJGl0ZW0pOw0KDQoJLy8gU29tZXRpbWVzIHBlc2t5IFVuaWNvZGUgaXMgbm90IGNvbXBp bGVkIGluLiBEZXRlY3QgaWYgc28gYW5kIGZhbGwgYmFjayB0byBBU0NJSQ0KCWlmICghQHBy ZWdfbWF0Y2goJy9ccEwvdScsICdhJykpIHsNCgkJJG1vZFJFID0gKCRsYXgpID8gJy8oXD8p KFtBLVphLXowLTlfXC0gXSspLycgOiAnLyhcPykoW0EtWmEtejAtOV9cLV0rKS8nOw0KCX0g ZWxzZSB7DQoJCSRtb2RSRSA9ICgkbGF4KSA/ICcvKFw/KShbXHB7TH1ccHtOfVxwe1BjfVxw e1BkfVxwe1pzfV0rKS8nIDogJy8oXD8pKFtccHtMfVxwe059XHB7UGN9XHB7UGR9XSspLyc7 DQoJfQ0KDQoJJG51bU1vZHMgPSBwcmVnX21hdGNoX2FsbCgkbW9kUkUsICRpdGVtLCAkbW9k cyk7DQoNCglmb3IgKCRtb2RDdHIgPSAwOyAkbW9kQ3RyIDwgJG51bU1vZHM7ICRtb2RDdHIr Kykgew0KCQkkbW9kQ2hhciA9ICRtb2RzWzFdWyRtb2RDdHJdOw0KCQkkbW9kSXRlbSA9IHRy aW0oJG1vZHNbMl1bJG1vZEN0cl0pOw0KCQkkbG93aXRlbSA9IHN0cnRvbG93ZXIoJG1vZEl0 ZW0pOw0KCQkkdXJsdmFyID0gJHN2cnZhciA9ICcnOw0KDQoJCWlmIChncHMoJGxvd2l0ZW0p ICE9ICcnKSB7DQoJCQkkdXJsdmFyID0gZG9TbGFzaChncHMoJGxvd2l0ZW0pKTsNCgkJCWlm ICgkdXJsdmFyICYmICRwYXQpIHsNCgkJCQkkdXJsdmFyID0gcHJlZ19yZXBsYWNlKCRwYXQs ICRyZXAsICR1cmx2YXIpOw0KCQkJfQ0KCQl9DQoJCWlmIChzZXJ2ZXJTZXQoJG1vZEl0ZW0p ICE9ICcnKSB7DQoJCQkkc3ZydmFyID0gZG9TbGFzaChzZXJ2ZXJTZXQoJG1vZEl0ZW0pKTsN CgkJCWlmICgkc3ZydmFyICYmICRwYXQpIHsNCgkJCQkkc3ZydmFyID0gcHJlZ19yZXBsYWNl KCRwYXQsICRyZXAsICRzdnJ2YXIpOw0KCQkJfQ0KCQl9DQoNCgkJaWYgKGlzc2V0KCR2YXJp YWJsZVskbG93aXRlbV0pICYmICR2YXJpYWJsZVskbG93aXRlbV0gIT0gJycpIHsNCgkJCSRp dGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICR2YXJpYWJsZVskbG93aXRl bV0sICRpdGVtKTsNCgkJfSBlbHNlIGlmICgkc3ZydmFyICE9ICcnKSB7DQoJCQkkaXRlbSA9 IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkc3ZydmFyLCAkaXRlbSk7DQoJCX0g ZWxzZSBpZiAoaXNzZXQoJHRoaXNpbWFnZVskbG93aXRlbV0pICYmICFlbXB0eSgkdGhpc2lt YWdlWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1v ZEl0ZW0sICR0aGlzaW1hZ2VbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoaXNz ZXQoJHRoaXNmaWxlWyRsb3dpdGVtXSkgJiYgIWVtcHR5KCR0aGlzZmlsZVskbG93aXRlbV0p KSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2Zp bGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNsaW5rWyRs b3dpdGVtXSkgJiYgIWVtcHR5KCR0aGlzbGlua1skbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9 IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2xpbmtbJGxvd2l0ZW1dLCAk aXRlbSk7DQoJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4aXN0cygkbG93aXRlbSwgJHByZXRl eHQpICYmICFlbXB0eSgkcHJldGV4dFskbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9y ZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRlbV0sICRpdGVtKTsN CgkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJGxvd2l0ZW1dKSAmJiAhZW1wdHko JHRoaXNhcnRpY2xlWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1v ZENoYXIuJG1vZEl0ZW0sICR0aGlzYXJ0aWNsZVskbG93aXRlbV0sICRpdGVtKTsNCgkJfSBl bHNlIGlmICgkdXJsdmFyICE9ICcnKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RD aGFyLiRtb2RJdGVtLCAkdXJsdmFyLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJGRm bHRzWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1v ZEl0ZW0sICRkZmx0c1skbG93aXRlbV0sICRpdGVtKTsNCgkJfSBlbHNlIHsNCgkJCSRpdGVt ID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRtb2RJdGVtLCAkaXRlbSk7DQoJ CX0NCgl9DQoJcmV0dXJuICRpdGVtOw0KfQ0KLy8gQ29udmVuaWVuY2UgZnVuY3Rpb25zIHRv IGNoZWNrIGlmIHRoZXJlJ3MgYSBwcmV2L25leHQgcGFnZSBkZWZpbmVkLiBDb3VsZCBhbHNv IHVzZSBzbWRfaWYNCmZ1bmN0aW9uIHNtZF9xdWVyeV9pZl9wcmV2KCRhdHRzLCAkdGhpbmcp IHsNCglnbG9iYWwgJHNtZF9xdWVyeV9wZ2luZm87DQoNCgkkcmVzID0gJHNtZF9xdWVyeV9w Z2luZm8gJiYgJHNtZF9xdWVyeV9wZ2luZm9bJ3tzbWRfcHJldnBhZ2V9J10gIT0gJyc7DQoJ cmV0dXJuIHBhcnNlKEV2YWxFbHNlKHN0cnRyKCR0aGluZywgJHNtZF9xdWVyeV9wZ2luZm8p LCAkcmVzKSk7DQp9DQpmdW5jdGlvbiBzbWRfcXVlcnlfaWZfbmV4dCgkYXR0cywgJHRoaW5n KSB7DQoJZ2xvYmFsICRzbWRfcXVlcnlfcGdpbmZvOw0KDQoJJHJlcyA9ICRzbWRfcXVlcnlf cGdpbmZvICYmICRzbWRfcXVlcnlfcGdpbmZvWyd7c21kX25leHRwYWdlfSddICE9ICcnOw0K CXJldHVybiBwYXJzZShFdmFsRWxzZShzdHJ0cigkdGhpbmcsICRzbWRfcXVlcnlfcGdpbmZv KSwgJHJlcykpOw0KDQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJmbGFncyI7czoxOiIw IjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6MzoibWQ1IjtzOjMyOiI1ODdkMGY2MjQ4YTI4Mjkz YWJhNzMxZDk1YzMzNTU1NCI7fQ==