Content-Type: text/html Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdp bmRvd3MtMTI1MiIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+DQo8U1RZTEU+LnRpdGxlIHsNCglD T0xPUjogYmx1ZTsgRklMVEVSOiBnbG93KENvbG9yPXJlZCwgU3RyZW5ndGg9MSk7IEZPTlQtU0la RTogNTBwdDsgUE9TSVRJT046IGFic29sdXRlOyBWSVNJQklMSVRZOiBoaWRkZW47IGZvbnQtZmFj ZTogJ2FyaWFsLCBhcmlhbCBibGFjaywgc2FucyBzZXJpZicNCn0NCi5zdWJUaXRsZSB7DQoJQ09M T1I6IGJsYWNrOyBGT05ULVNUWUxFOiBpdGFsaWM7IEZPTlQtV0VJR0hUOiBib2xkOyBIRUlHSFQ6 IDE0ZW07IFBPU0lUSU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDEwMGVtDQp9DQoubmFtZSB7DQoJQ09M T1I6IHJlZDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IEhFSUdIVDogMTRlbTsgUE9TSVRJT046IGFic29s dXRlOyBXSURUSDogMTAwZW0NCn0NCjwvU1RZTEU+DQoNCjxTQ1JJUFQgaWQ9Y2xpZW50RXZlbnRI YW5kbGVyc0pTIGxhbmd1YWdlPWphdmFzY3JpcHQ+DQo8IS0tDQp2YXIgZ19hcnJheU5hbWVzID0g Ww0KCS8vIERldg0KCVsNCgkJIlN0ZXZlbiBCYWlsZXkiLA0KCQkiTmVpbCBCcmVuY2giLA0KCQki UmF5bW9uZCBDaGVuZyIsDQoJCSJDaHJpcyBFdmFucyIsDQoJCSJKdXN0aW4gRmVycmFyaSIsDQoJ CSJHcmVnIEZyaWVkbWFuIiwNCgkJIkRhdmUgSGF3cyIsDQoJCSJQYXVsIEhpZ2luYm90aGFtIiwN CgkJIk1pY2hhZWwgTGkiLA0KCQkiVmlrcmFtIE1hZGFuIiwNCgkJIkJyZXR0IE1hcmwiLA0KCQki QnJpYW4gTW9vcmUiLA0KCQkiU2hhaGVlZGEgUGFydmVlbiIsDQoJCSJKaW0gU2NoYWFkIiwNCgkJ IlN0ZXZlIFNlcmR5IiwNCgkJIkphc29uIFNvdWJpZXIiLA0KCQkiSmFzb24gU3RhamljaCIsDQoJ CSJZdXJpIFN0YXJpa292Ig0KCV0sDQoJLy8gVGVzdA0KCVsNCgkJIkdheWFuYSBCYWdkYXNhcnlh biIsDQoJCSJKb2huIEJvd3NlciIsDQoJCSJNYXJrIEJveWNlIiwNCgkJIkJyYWQgQnV0bGVyIiwN CgkJIkZyYW5rIENhc3RlbCIsDQoJCSJNYXR0IENsZW1lbnRzIiwNCgkJIkNocmlzIERyZWhlciIs DQoJCSJMb25uaWUgRmVyZ3Vzb24iLA0KCQkiU3VzYW4gSGlnZ3MiLA0KCQkiUmFjaGVsIEl3YW1v dG8iLA0KCQkiR2FyeSBKdXJnZW5zZW4iLA0KCQkiQ3JhaWcgS29lZ2VsIiwNCgkJIkdvcmRvbiBN Y0Vscm95IiwNCgkJIkJ1cm5zeSBNY05hbWVlIiwNCgkJIkRhbmllbCBNdXJkb2NrIiwNCgkJIlJh bmQgTXlsZXMiLA0KCQkiQ29saW4gT3JmZmVyIiwNCgkJIldvbiBSbyIsDQoJCSJDdXJ0IFN0aWxs IiwNCgkJIktlcnJ5IFdlc3RmYWxsIg0KCV0sDQoJLy8gUE0NCglbDQoJCSJMYXVyZW4gQW50b25v ZmYiLA0KCQkiQ2F0aGVsaWpuZSBCZXJ0ZWxzIiwNCgkJIlNhcmFoIEZ1ZWxsaW5nIiwNCgkJIkdl b3JnZSBIYXRvdW4iLA0KCQkiQ2hyaXN0b3BoZXIgU2FnZXIiLA0KCQkiSm9obiBUYWZveWEiLA0K CQkiQW5uIFRvb2tlIiwNCgkJIkRlYnJhIEwuIFdlaXNzbWFuIg0KCV0sDQoJLy8gSW50ZXJuYXRp b25hbA0KCVsNCgkJIk1hamQgQWJiYXIiLA0KCQkiQWhtZWQgQWJkZWwtaGFkeSBIZWxhbCIsDQoJ CSJWZXJvbmljYSBCcm9uZHVtIiwNCgkJIkphbWVzIENhcnJvbGwiLA0KCQkiQ2hhcm4gR29vayBD aG9uZyIsDQoJCSJHYXZpbiBEZW1wc2V5IiwNCgkJIktlbiBGaXR6Z2VyYWxkIiwNCgkJIlNob3No YW5uYWggRm9yYmVzIiwNCgkJIlJlbmUgRnVsbGVyIiwNCgkJIll1dWtpIEhhc2hpbW90byIsDQoJ CSJIYWppbWUgSGlyb3NlIiwNCgkJIk1ha290byBJd2FvaGppIiwNCgkJIkVyaWMgS2FvIiwNCgkJ Ikhpcm9zaGkgS2FtYXRhIiwNCgkJIkphZSBId2FuIEtpbSIsDQoJCSJKaSBZb3VuZyBLaW0iLA0K CQkiQ2hhcmxlcyBMYXUiLA0KCQkiSm9obiBNY0Nvbm5lbGwiLA0KCQkiTG9yaSBBbm4gTWVkbGV5 IiwNCgkJIlZhbGVyaWUgTWVycmlsbCIsDQoJCSJUZXJ1eXVraSBNaWhhc2hpIiwNCgkJIlRpdHRp IFJpbmdzdHJvbSIsDQoJCSJNb2hhbWVkIFNhZGVrIiwNCgkJIlRlb21hbiBTbWl0aCIsDQoJCSJS ZXJrYm9vbiBTdXdhbmFzdWsiLA0KCQkiVGFrYW8gU3V6dWtpIiwNCgkJIkFsaWNlIFRzdW5nIiwN CgkJIkdlbm5hZHkgV2V4bGVyIiwNCgkJIk1pa2kgWW9zaGlkYSINCgldLA0KCS8vIE90aGVyDQoJ Ww0KCQkiKlVzZXIgQXNzaXN0YW5jZTxCUj4iLA0KCQkiTWFyY2lhIENoYXJsdG9uPEJSPiIsDQoJ CSJTdXphbm5lIENoaWxlczxCUj4iLA0KCQkiS2VsbHkgSG9ybjxCUj4iLA0KCQkiTmFuY3kgUmFp a2VuPEJSPiIsDQoJCSJKb24gU3RlaW5lcjxCUj4iLA0KCQkiRGlhbmUgU3RpZWxzdHJhPEJSPiIs DQoJCSJSb2JlcnQgU3Rvcnk8QlI+IiwNCgkJIipIb3RtYWlsIFNlcnZlcjxCUj4iLA0KCQkiU2hh eW5lIEJyYWRsZXk8QlI+IiwNCgkJIlJpY2sgSG9semxpPEJSPiIsDQoJCSJSb2xhbmQgVG9rdW1p PEJSPiIsDQoJCSJEYXZlIFRvbmc8QlI+IiwNCgkJIipNYW5hZ2VtZW50IGFuZCBBZG1pbmlzdHJh dGlvbjxCUj4iLA0KCQkiQmxha2UgSXJ2aW5nPEJSPiIsDQoJCSJKb2huIEx1ZHdpZzxCUj4iLA0K CQkiR2VvcmdpYSBNYXJyYTxCUj4iLA0KCQkiSmFuaWNlIE1jS2VldmVyPEJSPiIsDQoJCSIqTWFy a2V0aW5nIGFuZCBQcm9kdWN0IFBsYW5uaW5nPEJSPiIsDQoJCSJLaW0gQWtlcnM8QlI+IiwNCgkJ IkVkIEdyYWN6eWs8QlI+IiwNCgkJIipXaXRoIHRoYW5rcyB0by4uLjxCUj4iLA0KCQkiRXJpYyBC ZXJtYW48QlI+IiwNCgkJIk1heCBDaGlja2VyaW5nPEJSPiIsDQoJCSJLZWl0aCBDbGFudG9uPEJS PiIsDQoJCSJEYXZpZCBIZWNrZXJtYW48QlI+IiwNCgkJIkVyaWMgSG9ydml0ejxCUj4iLA0KCQki QW5keSBKYWNvYnM8QlI+IiwNCgkJIk1hcmsgTGl1bTxCUj4iLA0KCQkiQ2hyaXMgTWVlazxCUj4i LA0KCQkiRGFycmVuIE1pdGNoZWxsPEJSPiIsDQoJCSJKb2huIFBsYXR0PEJSPiIsDQoJCSJQaGls IFJvZ2FuPEJSPiIsDQoJCSJSb2JlcnQgUm91bnRod2FpdGU8QlI+IiwNCgkJIk1laHJhbiBTYWhh bWk8QlI+IiwNCgkJIlJpY2hhcmQgU2h1cGFrPEJSPiIsDQogICAgICAgICJCcnlhbiBUdXR0bGU8 QlI+Ig0KCV0NCl07DQp2YXIgZ19hcnJheVNheWluZ3MgPSBbDQoJIpNMb29rISBUaGUgUmVkIENo YWlyIGlzIGJhY2shlCIsDQoJIpNJdCdzIDxCPmFsbDwvQj4gZ29vZC6UIiwNCgkik09FIFJvY2tz IZQiLA0KCSJBY3RpdmVEQj8gLi4uIE5haC4iLA0KCSJIb3RTdG9yZT8uLi4gTm9wZS4iLA0KCSJP cGllREI/Li4uIE5vdCBxdWl0ZS4uLiIsDQoJIlRCRERCPy4uLiBIaGhtbW1tLi4uIiwNCgkiRGly ZWN0REIuLi4gT0ssIGZvciBub3cuIiwNCgkik1dobydzIHlvdXIgZGFkZHk/lCIsDQoJIkZhYmlv IHRoZSBicmluZ2VyIG9mIE1vcmFsZSIsDQoJIlRpbWUgdG8gdGFrZSB0aGUgbW91c2UgZm9yIGEg d2Fsay4uLiIsDQoJIpNDb2ZmZWU/lCIsDQoJIpNIZXkhIEkgZ290IHRoZSBmaW5nZXIhlCIsDQoJ IpNJIG11c3QgYmUgYWxpZW4gc21hcnQhlCIsDQoJIpNTbyBJIGhhdmUgdGhpcyBpZGVhLi4uIFdl IGhhdmUgdGhpcyBnb3JpbGxhLi4ulCIsDQoJIpNUaGlzIG9uZSdzIG5vdCBqdXN0IHN1cGVyIGhv dCwgaXQncyBwbGFzbWEgaG90LpQiLA0KCSI8SU1HIFNSQz0ncG1oZWFkLmdpZic+IiwNCgkik1ll YWgsIGJhYnkhlCIsDQoJIpNBcyBhIHNoYXJlaG9sZGVyLCBJIGFtIGFwcGFsbGVkLpQiLA0KCSJT cGVjaWFsIHRoYW5rcyB0byBSZW1vLCBTcGFja2xlciwgS2FnZSwgV2VlbmllLCBSb29raWUgYW5k IFNpdHRpbmcgRHVjay4iLA0KCSKTSGlzIGNhciB3YXMgc3RvbGVuLi4uIEFnYWluIT+UIiwNCgki k1doYXQgdGhlIColISMgaXMgYW4gLk9EUyBmaWxlP5QiLA0KCSJTbm93Ym9hcmRpbmcgc2Vhc29u IGlzIG9wZW4hIiwNCgkik0l0J3MgdGhlIFJlZFdlc3QgbGlmZXN0eWxlLpQiLA0KCSKTSXQgbXVz dCBiZSBhIFRyaWRlbnQgYnVnLpQiLA0KCSKTVmVyZGFuYSBvciBUYWhvbWE/lCIsDQoJIkNvbnRy YXJ5IHRvIHBvcHVsYXIgYmVsaWVmOiIsDQoJIk9FIDxCPndvbid0PC9iPiBnaXZlIHlvdXIgZXgt Z2lybGZyaWVuZCB5b3VyIG5ldyBwaG9uZSBudW1iZXIuIiwNCgkiT0UgPGI+d29uJ3Q8L2I+IG1p eCBLb29sLUFpZCBpbnRvIHlvdXIgZmlzaHRhbmsuIiwNCgkiT0UgPGI+d29udCd0PC9iPiBraWNr IHlvdXIgZG9nLiIsDQoJIpNEdWRlISBUaGF0IGlzIHNvb29vIGNvb2whlCIsDQoJIlNwZWNpYWwg VGhhbmtzIHRvLi4uIiwNCgkiVGhlIHBlb3BsZSB0aGF0IG1hZGUgaXQgaW50byB3b3JrIGJlZm9y ZSAxMWFtIiwNCgkiV2hvZXZlciBkZWNpZGVkIHRoZSBwZXJmLWZvcmsgd2FzIGEgZ29vZCBpZGVh Ig0KXTsNCg0KdmFyIFBJID0gTWF0aC5QSTsNCnZhciBjb3MgPSBNYXRoLmNvczsNCnZhciBzaW4g PSBNYXRoLnNpbjsNCnZhciBhYnMgPSBNYXRoLmFiczsNCnZhciByYW5kID0gTWF0aC5yYW5kb207 DQp2YXIgcm91bmQgPSBNYXRoLnJvdW5kOw0KDQp2YXIgZ19kaXN0RGVsdGEgPSAwOw0KdmFyIGdf dGltZURlbHRhID0gNTA7DQp2YXIgZ19uYW1lQ29sb3IgPSAwOw0KDQp2YXIgZ19tYXhUaXRsZVdp ZHRoRGl2MiA9IDA7DQp2YXIgZ19tYXhUaXRsZUhlaWdodERpdjIgPSAwOw0KdmFyIGdfbWF4VGl0 bGVIZWlnaHQgPSAwOw0KDQp2YXIgZ19udW1TdGVwc1RvR3JvdyA9IDIwOw0KdmFyIGdfTGFyZ2VG b250U2l6ZSA9IDI0Ow0KdmFyIGdfU2l6ZUdyb3dEZWx0YSA9ICgxMDAgLSBnX0xhcmdlRm9udFNp emUpIC8gZ19udW1TdGVwc1RvR3JvdzsNCnZhciBnX1NpemVTaHJpbmtEZWx0YSA9IC1nX0xhcmdl Rm9udFNpemUgLyBnX251bVN0ZXBzVG9Hcm93Ow0KDQp2YXIgZ19pQ2xpY2tlZEluZGV4ID0gMDsN Cg0KdmFyIGdfYXJyYXlTaXplID0gNTsNCnZhciBnX3RpdGxlQXJyYXkgPSBbZ19hcnJheVNpemVd Ow0KDQp2YXIgU2hvb3RhZ2FpbjsNCnZhciBjbGlja1ZhbGlkID0gdHJ1ZTsNCnZhciBzdG9wVmFs aWQgPSBmYWxzZTsNCnZhciBjU2F5aW5nID0gMDsNCg0KdmFyIGdfdGltZU91dElEOw0KdmFyIGdf dGltZU91dE9FaXNtczsNCg0KZnVuY3Rpb24gU3RhcnRQYWdlKCkgew0KCWZvciAoaSA9IDA7IGkg PCA1OyBpKyspIHsNCgkJZ190aXRsZUFycmF5W2ldLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJs ZSI7DQoJfQ0KCWNsaWNrVmFsaWQgPSB0cnVlOw0KCXN0b3BWYWxpZCA9IGZhbHNlOw0KCWdfQ2Fu U2hvd09FaXNtcyA9IHRydWU7DQoJbG9nby5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOw0K CUluaXRPYmplY3RzKCk7DQoJUG9zVGl0bGVzKCk7DQp9DQoNCmZ1bmN0aW9uIE9uTG9hZCgpIHsN CglnX3RpdGxlQXJyYXlbMF0gPSB0aXRsZURldjsNCglnX3RpdGxlQXJyYXlbMV0gPSB0aXRsZVRz dDsNCglnX3RpdGxlQXJyYXlbMl0gPSB0aXRsZVBNczsNCglnX3RpdGxlQXJyYXlbM10gPSB0aXRs ZUludDsNCglnX3RpdGxlQXJyYXlbNF0gPSB0aXRsZU90aDsNCgkNCglmb3IgKGk9MDsgaSA8IGdf YXJyYXlTaXplOyBpKyspIHsNCgkJdmFyIGUgPSBnX3RpdGxlQXJyYXlbaV07DQoJCWlmIChnX21h eFRpdGxlV2lkdGhEaXYyIDwgZS5jbGllbnRXaWR0aC8yKQ0KCQkJZ19tYXhUaXRsZVdpZHRoRGl2 MiA9IGUuY2xpZW50V2lkdGgvMjsNCgkJaWYgKGdfbWF4VGl0bGVIZWlnaHREaXYyIDwgZS5jbGll bnRIZWlnaHQvMil7DQoJCQlnX21heFRpdGxlSGVpZ2h0ID0gZS5jbGllbnRIZWlnaHQ7DQoJCQln X21heFRpdGxlSGVpZ2h0RGl2MiA9IGdfbWF4VGl0bGVIZWlnaHQvMjsNCgkJfQ0KCX0NCglTdGFy dFBhZ2UoKTsNCn0NCg0KZnVuY3Rpb24gR2V0WENlbnRlcigpIHtyZXR1cm4gKChkb2N1bWVudC5i b2R5LmNsaWVudFdpZHRoKS8yKTt9DQpmdW5jdGlvbiBHZXRZQ2VudGVyKCkge3JldHVybiAoKGRv Y3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KS8yKTt9DQoNCmZ1bmN0aW9uIEdldE1heERpc3QoeENl bnRlciwgeUNlbnRlcikgew0KCXJldHVybiAoKHhDZW50ZXIgLSBnX21heFRpdGxlV2lkdGhEaXYy KSA+ICh5Q2VudGVyIC0gZ19tYXhUaXRsZUhlaWdodERpdjIpKSA/IA0KCQkJeUNlbnRlciAtIGdf bWF4VGl0bGVIZWlnaHREaXYyOiANCgkJCXhDZW50ZXIgLSBnX21heFRpdGxlV2lkdGhEaXYyOw0K fQ0KDQpmdW5jdGlvbiBTZXRYWVBvcyAoZSwgeENlbnRlciwgeUNlbnRlciwgbWF4RGlzdCl7DQoJ dmFyIGFjdERpc3Q7DQoJdmFyIHZhckFtb3VudDsNCgl2YXIgZG9jSGVpZ2h0ID0gZG9jdW1lbnQu Ym9keS5jbGllbnRXaWR0aDsNCg0KCWFjdERpc3QgPSBjb3MoZS5yYWRpYW5zKjYuMCk7DQoJZS5z dHlsZS5wb3NMZWZ0ID0geENlbnRlciAtIGUuY2xpZW50V2lkdGgvMi4wICsgbWF4RGlzdCphY3RE aXN0KmNvcyhlLnJhZGlhbnMpOw0KCWUuc3R5bGUucG9zVG9wID0geUNlbnRlciAtIGUuY2xpZW50 SGVpZ2h0LzIuMCArIG1heERpc3QqYWN0RGlzdCpzaW4oZS5yYWRpYW5zKTsNCgl2YXIgcmFuZDEg PSAyNSooKGNvcyhlLnJhZGlhbnMpKSArIDIpOw0KCWUuc3R5bGUuZm9udFNpemUgPSAocmFuZDE+ NTAgPyA1MCA6IHJhbmQxKTsNCglpZiAoIWUuc3RheW9udG9wKXsNCgkJZS5zdHlsZS56SW5kZXgg PSAoKHJhbmQxIDwgMzcpID8gMSA6IDMpOw0KCX0NCgl2YXJBbW91bnQgPSBhYnMoYWN0RGlzdCkg KiAyNTU7DQoJaWYgKHZhckFtb3VudCA+IDI1NSkNCgkJdmFyQW1vdW50ID0gMjU1Ow0KCXZhckFt b3VudCA9ICh2YXJBbW91bnQgPDwgOCkgKyAoKDI1NSAtIHZhckFtb3VudCkgPDwgMTYpOw0KCWUu ZmlsdGVycy5nbG93LkNvbG9yID0gdmFyQW1vdW50Ow0KCWUucmFkaWFucyArPSBlLmFuZ2xlRGVs dGE7DQp9DQoNCmZ1bmN0aW9uIEluaXRPYmplY3RzKCkgew0KCXZhciBhbmdsZSA9IDAuMDsNCgl2 YXIgeENlbnRlciA9IEdldFhDZW50ZXIoKTsNCgl2YXIgeUNlbnRlciA9IEdldFlDZW50ZXIoKTsN Cgl2YXIgbWF4RGlzdCA9IEdldE1heERpc3QoeENlbnRlciwgeUNlbnRlcik7DQoNCglsb2dvLnN0 eWxlLnBvc0xlZnQgPSB4Q2VudGVyLTE1MDsNCglsb2dvLnN0eWxlLnBvc1RvcCA9IHlDZW50ZXIt NTA7DQoNCglmb3IgKGk9MDsgaSA8IGdfYXJyYXlTaXplOyBpKyspIHsNCgkJdmFyIGUgPSBnX3Rp dGxlQXJyYXlbaV07DQoJCQ0KCQllLnN0YXlvbnRvcCA9IGZhbHNlOw0KCQllLnJhZGlhbnMgPSBh bmdsZTsNCgkJZS5zdHlsZS5mb250U2l6ZSA9IGdfTGFyZ2VGb250U2l6ZTsNCgkJZS54RGVsdGEg PSAwOw0KCQllLnlEZWx0YSA9IDA7DQoJCWUuZm9udERlbHRhID0gMDsNCgkJZS5mTW91c2VPdmVy ID0gZmFsc2U7DQoJCWUuYW5nbGVEZWx0YSA9ICguMDA0KlBJKSArIC4wMDUgKyAoLjAxKihyYW5k KCktLjUpKTsNCgkJU2V0WFlQb3MoZSwgeENlbnRlciwgeUNlbnRlciwgbWF4RGlzdCk7ICAgICAN CgkJYW5nbGUgKz0gMi4wKlBJKnJhbmQoKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIFBvc1RpdGxlcygp IHsNCgl2YXIgeENlbnRlciA9IEdldFhDZW50ZXIoKTsNCgl2YXIgeUNlbnRlciA9IEdldFlDZW50 ZXIoKTsNCgl2YXIgbWF4RGlzdCA9IEdldE1heERpc3QoeENlbnRlciwgeUNlbnRlcik7DQoNCglm b3IgKGk9MDsgaSA8IGdfYXJyYXlTaXplOyBpKyspIHsNCgkJdmFyIGUgPSBnX3RpdGxlQXJyYXlb aV07DQoJCVNldFhZUG9zKGUsIHhDZW50ZXIsIHlDZW50ZXIsIG1heERpc3QpOyAgICAgDQoJCWUu cmFkaWFucyArPSBlLmFuZ2xlRGVsdGE7DQoJfQ0KCWdfdGltZU91dElEID0gc2V0VGltZW91dCgi UG9zVGl0bGVzKCkiLCBnX3RpbWVEZWx0YSk7DQp9DQoNCmZ1bmN0aW9uIEdyb3dFbGVtZW50cyh0 aW1lcykgew0KCWZvciAoaT0wOyBpIDwgZ19hcnJheVNpemU7IGkrKykgew0KCQl2YXIgZSA9IGdf dGl0bGVBcnJheVtpXTsNCgkJdmFyIG5ld0xlZnQgPSBlLnN0eWxlLnBvc0xlZnQgKyBlLnhEZWx0 YTsNCgkJdmFyIG5ld1RvcCA9IGUuc3R5bGUucG9zVG9wICsgZS55RGVsdGE7DQoJCWUuc3R5bGUu cG9zTGVmdCA9IG5ld0xlZnQ7DQoJCWUuc3R5bGUucG9zVG9wID0gbmV3VG9wOw0KCQllLnN0eWxl LmZvbnRTaXplID0gZ19MYXJnZUZvbnRTaXplICsgKGdfbnVtU3RlcHNUb0dyb3cgLSB0aW1lcykq ZS5mb250RGVsdGE7DQoJfQ0KDQoJaWYgKHRpbWVzID4gMikgew0KCQlnX3RpbWVPdXRJRCA9IHNl dFRpbWVvdXQoIkdyb3dFbGVtZW50cygiICsgKHRpbWVzIC0gMSkgKyAiKSIsIGdfdGltZURlbHRh KTsNCgl9IGVsc2Ugew0KCQlPbkdyb3dGaW5pc2goKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIEZvY3Vz T25DbGlja2VkKCkgew0KCXZhciB4Q2VudGVyID0gR2V0WENlbnRlcigpOw0KCXZhciB5Q2VudGVy ID0gR2V0WUNlbnRlcigpOw0KCQ0KCUNsb3NlT0Vpc21zKHRydWUpOw0KCWdfQ2FuU2hvd09FaXNt cyA9IGZhbHNlOw0KDQoJZm9yIChpPTA7IGkgPCBnX2FycmF5U2l6ZTsgaSsrKSB7DQoJCXZhciBl ID0gZ190aXRsZUFycmF5W2ldOw0KCQlpZiAoaSA9PSBnX2lDbGlja2VkSW5kZXgpIHsNCgkJCWUu eERlbHRhID0gLWUuc3R5bGUucG9zTGVmdCAvIGdfbnVtU3RlcHNUb0dyb3c7DQoJCQllLnlEZWx0 YSA9IC1lLnN0eWxlLnBvc1RvcCAvIGdfbnVtU3RlcHNUb0dyb3c7DQoJCQllLmZvbnREZWx0YSA9 IGdfU2l6ZUdyb3dEZWx0YTsNCgkJfQ0KCQllbHNlIHsNCgkJCWUueERlbHRhID0gKHhDZW50ZXIg LSBlLnN0eWxlLnBvc0xlZnQpIC8gZ19udW1TdGVwc1RvR3JvdzsNCgkJCWUueURlbHRhID0gKHlD ZW50ZXIgLSBlLnN0eWxlLnBvc1RvcCkgLyBnX251bVN0ZXBzVG9Hcm93Ow0KCQkJZS5mb250RGVs dGEgPSBnX1NpemVTaHJpbmtEZWx0YTsNCgkJCWUuZmlsdGVycy5nbG93LmNvbG9yID0gMDsNCgkJ fQ0KCX0NCg0KCWdfdGltZU91dElEID0gc2V0VGltZW91dCgiR3Jvd0VsZW1lbnRzKCIgKyBnX251 bVN0ZXBzVG9Hcm93ICsgIikiLCBnX3RpbWVEZWx0YSk7DQp9DQoNCmZ1bmN0aW9uIFNsb3dFckRv d24ob2JqKSB7DQoJaWYgKCFvYmouZk1vdXNlT3Zlcikgew0KCQlvYmouZk1vdXNlT3ZlciA9IHRy dWU7DQoJCW9iai5zdGF5b250b3AgPSB0cnVlOw0KCQlvYmouYW5nbGVEZWx0YSAvPSA0Ow0KCQlv Ymoub3JpZ0luZGV4ID0gb2JqLnN0eWxlLnpJbmRleDsNCgkJb2JqLnN0eWxlLnpJbmRleCA9IDc7 DQoJCW9iai5vcmlnQ29sb3IgPSBvYmouc3R5bGUuY29sb3I7DQoJCW9iai5zdHlsZS5jb2xvciA9 ICJyZWQiOw0KCX0NCn0NCg0KZnVuY3Rpb24gU3BlZWRFclVwKG9iaikgew0KCWlmIChvYmouZk1v dXNlT3Zlcikgew0KCQlvYmouZk1vdXNlT3ZlciA9IGZhbHNlOw0KCQlvYmouc3RheW9udG9wID0g ZmFsc2U7DQoJCW9iai5hbmdsZURlbHRhICo9IDQ7DQoJCW9iai5zdHlsZS5jb2xvciA9IG9iai5v cmlnQ29sb3I7DQoJCW9iai5zdHlsZS56SW5kZXggPSBvYmoub3JpZ0luZGV4Ow0KCX0NCn0NCg0K ZnVuY3Rpb24gT25PYmpDbGljayhpbmRleCkgew0KCWlmIChjbGlja1ZhbGlkKSB7DQoJCWNsZWFy VGltZW91dChnX3RpbWVPdXRJRCk7DQoJCWdfaUNsaWNrZWRJbmRleCA9IGluZGV4Ow0KCQlGb2N1 c09uQ2xpY2tlZCgpOw0KCX0NCglpZiAoc3RvcFZhbGlkKSB7ICAgIA0KCQljbGVhclRpbWVvdXQo U2hvb3RhZ2Fpbik7DQoJCWdfaUNsaWNrZWRJbmRleCA9IGluZGV4Ow0KCQlJbmRpdk5hbWUuc3R5 bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0KCQlzZXRUaW1lb3V0KCJTdGFydFBhZ2UoKTsiLCAx MDAwKTsNCgl9DQoJCQ0KfQ0KDQpmdW5jdGlvbiBPbkdyb3dGaW5pc2goKSB7DQoJY2xpY2tWYWxp ZCA9IGZhbHNlOw0KCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsNCgkJaWYgKGkgIT0gZ19pQ2xp Y2tlZEluZGV4KQ0KCQkJZ190aXRsZUFycmF5W2ldLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVu IjsgDQoJfQ0KCWxvZ28uZmlsdGVyc1swXS5hcHBseSgpOw0KCWxvZ28uc3R5bGUudmlzaWJpbGl0 eSA9ICJoaWRkZW4iOw0KCWxvZ28uZmlsdGVyc1swXS5wbGF5KCk7DQoJc2V0VGltZW91dCgiTmFt ZURpc3BsYXkoMCk7IiwgMjUwMCk7DQoJDQp9DQoNCmZ1bmN0aW9uIE5hbWVTaG9vdCh4aW5jciwg eWluY3IsIG1heFNoaWZ0LCBpbmRleCkgew0KCXZhciBmVmVydCA9ICh5aW5jciAhPSAwKTsNCgl2 YXIgcGVyY2VudDsNCgl2YXIgbmV3Q29sb3I7DQoJdmFyIGJWYWw7DQoJdmFyIHJldmVyc2UgPSBm YWxzZTsNCgkNCglJbmRpdk5hbWUuc3R5bGUucG9zTGVmdCArPSB4aW5jcjsNCglJbmRpdk5hbWUu c3R5bGUucG9zVG9wICs9IHlpbmNyOw0KCQ0KCWlmIChmVmVydCkgew0KCQlwZXJjZW50ID0gYWJz KEluZGl2TmFtZS5zdHlsZS5wb3NUb3ApL21heFNoaWZ0Ow0KCQlpZiAoeWluY3IgPiAwKQ0KCQkJ cmV2ZXJzZSA9IHRydWU7DQoJfQ0KCWVsc2Ugew0KCQlwZXJjZW50ID0gYWJzKEluZGl2TmFtZS5z dHlsZS5wb3NMZWZ0KS9tYXhTaGlmdDsNCgkJaWYgKHhpbmNyID4gMCkNCgkJCXJldmVyc2UgPSB0 cnVlOw0KCX0NCglpZiAocmV2ZXJzZSkNCgkJcGVyY2VudCA9IDEuMC1wZXJjZW50Ow0KCQkNCgli VmFsID0gcm91bmQoMjU1KnBlcmNlbnQpOw0KDQoJc3dpdGNoIChnX25hbWVDb2xvcikgew0KCQlj YXNlIDA6IG5ld0NvbG9yID0gYlZhbDw8MTY7IGJyZWFrOw0KCQljYXNlIDE6IG5ld0NvbG9yID0g YlZhbDw8ODsgYnJlYWs7DQoJCWNhc2UgMjogbmV3Q29sb3IgPSAoYlZhbDw8MTYpICsgKGJWYWw8 PDgpOyBicmVhazsNCgkJY2FzZSAzOiBuZXdDb2xvciA9IGJWYWw7IGJyZWFrOw0KCQljYXNlIDQ6 IG5ld0NvbG9yID0gKGJWYWw8PDE2KSArIGJWYWw7IGJyZWFrOw0KCQljYXNlIDU6IG5ld0NvbG9y ID0gKGJWYWw8PDgpICsgYlZhbDsgYnJlYWs7DQoJCWNhc2UgNjogbmV3Q29sb3IgPSAoYlZhbDw8 MTYpICsgKGJWYWw8PDgpICsgYlZhbDsgYnJlYWs7DQoJfSAgIA0KCQ0KCUluZGl2TmFtZS5zdHls ZS5jb2xvciA9IG5ld0NvbG9yOw0KCUluZGl2TmFtZS5zdHlsZS5mb250U2l6ZSA9IHJvdW5kKDgw KnBlcmNlbnQpOw0KCWlmIChwZXJjZW50ID4gMC4wNSl7DQoJCVNob290YWdhaW4gPSBzZXRUaW1l b3V0KCJOYW1lU2hvb3QoIiArIHhpbmNyICsgIiwgIiArIHlpbmNyICsgIiwgIiArIG1heFNoaWZ0 ICsgIiwgIiArIGluZGV4ICsgIikiLCAyNSk7DQoJfQ0KCWVsc2Ugew0KCQlnX25hbWVDb2xvciA9 IChnX25hbWVDb2xvcisxKSAlIDY7DQoJCU5hbWVEaXNwbGF5KGluZGV4KzEpDQoJfQ0KfQ0KCQ0K ZnVuY3Rpb24gTG9nb0NsaWNrZWQoKSB7DQoJaWYgKGdfQ2FuU2hvd09FaXNtcykgDQoJeyAgIA0K CQlnX0NhblNob3dPRWlzbXMgPSBmYWxzZTsNCgkJU2hvd09FaXNtcygpOw0KCX0NCn0gICAgICAg DQoNCmZ1bmN0aW9uIFNob3dPRWlzbXMoKSB7DQoJaWYgKGNTYXlpbmcgPCBnX2FycmF5U2F5aW5n cy5sZW5ndGgpIHsNCgkJSW5kaXZTYXlpbmcuaW5uZXJIVE1MID0gZ19hcnJheVNheWluZ3NbY1Nh eWluZ107DQoJCXZhciBoZWlnaHQgPSBJbmRpdlNheWluZy5jbGllbnRIZWlnaHQ7DQoJCQ0KCQl2 YXIgSG9yaXpQb3MgPSAocmFuZCgpKihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLUluZGl2U2F5 aW5nLmNsaWVudFdpZHRoKSk7DQoJCXZhciBWZXJ0UG9zID0gKHJhbmQoKSooZG9jdW1lbnQuYm9k eS5jbGllbnRIZWlnaHQtbG9nby5oZWlnaHQtaGVpZ2h0KjIpKTsNCgkJDQoJCWlmIChWZXJ0UG9z ID4gKGxvZ28uc3R5bGUucG9zVG9wIC0gaGVpZ2h0KSkNCgkJCVZlcnRQb3MgKz0gbG9nby5oZWln aHQgKyBoZWlnaHQ7DQoJCQ0KCQlJbmRpdlNheWluZy5zdHlsZS5wb3NUb3AgPSBWZXJ0UG9zOw0K CQlJbmRpdlNheWluZy5zdHlsZS5wb3NMZWZ0ID0gSG9yaXpQb3M7DQoJCUluZGl2U2F5aW5nLmZp bHRlcnNbMF0uYXBwbHkoKTsNCgkJSW5kaXZTYXlpbmcuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNp YmxlIjsNCgkJSW5kaXZTYXlpbmcuZmlsdGVyc1swXS5wbGF5KCk7DQoJCWNTYXlpbmcrKzsNCgkJ Z190aW1lT3V0T0Vpc21zID0gc2V0VGltZW91dCgiQ2xvc2VPRWlzbXMoZmFsc2UpOyIsIDIwMDAp Ow0KCX0NCgllbHNlIHsNCgkJY1NheWluZyA9IDA7DQoJCWdfQ2FuU2hvd09FaXNtcyA9IHRydWU7 DQoJfQ0KfQ0KCQ0KZnVuY3Rpb24gQ2xvc2VPRWlzbXMoc3RvcEN5Y2xlKSB7DQoJaWYgKHN0b3BD eWNsZSkgew0KCQlnX0NhblNob3dPRWlzbXMgPSB0cnVlOw0KCQljU2F5aW5nID0gMDsNCgkJSW5k aXZTYXlpbmcuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0KCQljbGVhclRpbWVvdXQoZ190 aW1lT3V0T0Vpc21zKTsNCgl9DQoJZWxzZSB7DQoJCUluZGl2U2F5aW5nLmZpbHRlcnNbMF0uYXBw bHkoKTsNCgkJSW5kaXZTYXlpbmcuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0KCQlJbmRp dlNheWluZy5maWx0ZXJzWzBdLnBsYXkoKTsNCgkJZ190aW1lT3V0T0Vpc21zID0gc2V0VGltZW91 dCgiU2hvd09FaXNtcygpIiwgMjAwMCk7DQoJfSAgIA0KfQ0KCQ0KZnVuY3Rpb24gTmFtZURpc3Bs YXkoaW5kZXgpIHsNCgl2YXIgd2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOw0KCXZh ciBoZWlnaHQgPSBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsNCgl2YXIgbmFtZXMgPSBnX2Fy cmF5TmFtZXNbZ19pQ2xpY2tlZEluZGV4XTsNCglzdG9wVmFsaWQgPSB0cnVlOw0KCWlmIChpbmRl eCA8IG5hbWVzLmxlbmd0aCl7DQoJCUluZGl2TmFtZS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2li bGUiOw0KCQlpZiAobmFtZXNbaW5kZXhdLmNoYXJBdCgwKSAhPSAiKiIpIHsNCgkJCUluZGl2TmFt ZS5vdXRlckhUTUwgPSAiPERJViBpZD1JbmRpdk5hbWUgY2xhc3MgPSBuYW1lPiIgKyBuYW1lc1tp bmRleF0gKyAiPC9ESVY+IjsNCgkJfQ0KCQllbHNlIHsNCgkJCXZhciB0U3RyID0gbmFtZXNbaW5k ZXhdLnN1YnN0cmluZygxLG5hbWVzW2luZGV4XS5sZW5ndGgpOw0KCQkJSW5kaXZOYW1lLm91dGVy SFRNTCA9ICI8RElWIGlkPUluZGl2TmFtZSBjbGFzcyA9IHN1YlRpdGxlPiIgKyB0U3RyICsgIjwv RElWPiI7DQoJCX0NCgkJDQoJCUVkZ2VTdGFydCA9IHJvdW5kKGFicyhyYW5kKCkqNC0uNSkpOw0K CQlpZiAoRWRnZVN0YXJ0ID4gMykNCgkJCUVkZ2VTdGFydCA9IDM7DQoJCQkNCgkJc3dpdGNoKEVk Z2VTdGFydCkgew0KCQkJY2FzZSAwOiBJbmRpdk5hbWUuc3R5bGUucG9zVG9wID0gKHJhbmQoKSoo aGVpZ2h0LTI1MCkpKzEyNTsNCgkJCQkJSW5kaXZOYW1lLnN0eWxlLnBvc0xlZnQgPSB3aWR0aDsN CgkJCQkJTmFtZVNob290KC0xMCwgMCwgd2lkdGgrMTUwLCBpbmRleCk7DQoJCQkJCWJyZWFrOw0K CQkJY2FzZSAxOiBJbmRpdk5hbWUuc3R5bGUucG9zTGVmdCA9IChyYW5kKCkqKHdpZHRoLTMwMCkp Ow0KCQkJCQlJbmRpdk5hbWUuc3R5bGUucG9zVG9wID0gaGVpZ2h0Ow0KCQkJCQlOYW1lU2hvb3Qo MCwgLTEwLCBoZWlnaHQrMTUwLCBpbmRleCk7DQoJCQkJCWJyZWFrOw0KCQkJY2FzZSAyOiBJbmRp dk5hbWUuc3R5bGUucG9zVG9wID0gKHJhbmQoKSooaGVpZ2h0LTI1MCkpKzEyNTsNCgkJCQkJSW5k aXZOYW1lLnN0eWxlLnBvc0xlZnQgPSAwOw0KCQkJCQlOYW1lU2hvb3QoMTAsIDAsIHdpZHRoKzE1 MCwgaW5kZXgpOw0KCQkJCQlicmVhazsNCgkJCWNhc2UgMzogSW5kaXZOYW1lLnN0eWxlLnBvc0xl ZnQgPSAocmFuZCgpKih3aWR0aC0zMDApKTsNCgkJCQkJSW5kaXZOYW1lLnN0eWxlLnBvc1RvcCA9 IDA7DQoJCQkJCU5hbWVTaG9vdCgwLCAxMCwgaGVpZ2h0KzE1MCwgaW5kZXgpOw0KCQkJCQlicmVh azsNCgkJfQ0KCX0NCgllbHNlIHsNCgkJc3RvcFZhbGlkID0gZmFsc2U7DQoJCUluZGl2TmFtZS5z dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7DQoJCXNldFRpbWVvdXQoIlN0YXJ0UGFnZSgpOyIs IDMwMDApOw0KCX0NCn0NCgkJCQkNCmZ1bmN0aW9uIEhpZGUoaXRlbSkgew0KCWl0ZW0uc3R5bGUu dmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0KCVN0YXJ0UGFnZSgpOw0KfQ0KLy8tLT4NCg0KPC9TQ1JJ UFQ+DQoNCjxTQ1JJUFQgZm9yPXdpbmRvdyBldmVudD1vbnJlc2l6ZT4NCg0KCXZhciB4Q2VudGVy ID0gR2V0WENlbnRlcigpOw0KCXZhciB5Q2VudGVyID0gR2V0WUNlbnRlcigpOw0KDQoJbG9nby5z dHlsZS5wb3NMZWZ0ID0geENlbnRlci0xNTA7DQoJbG9nby5zdHlsZS5wb3NUb3AgPSB5Q2VudGVy LTUwOw0KDQo8L1NDUklQVD4NCg0KPE1FVEEgY29udGVudD0iTVNIVE1MIDUuMDAuMjAxMi4yMzAw IiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+DQo8Qk9EWSBiZ0NvbG9yPXdoaXRlIGxhbmd1YWdlPWph dmFzY3JpcHQgb25sb2FkPU9uTG9hZCgpPjwhLS1TdGFydCBNYWluIHRpdGxlcy0tPg0KPERJViBj bGFzcz10aXRsZSBpZD10aXRsZURldiBvbmNsaWNrPU9uT2JqQ2xpY2soMCkgb25tb3VzZW91dD1T cGVlZEVyVXAodGhpcykgDQpvbm1vdXNlb3Zlcj1TbG93RXJEb3duKHRoaXMpPkRldmVsb3BlcnM8 L0RJVj4NCjxESVYgY2xhc3M9dGl0bGUgaWQ9dGl0bGVUc3Qgb25jbGljaz1Pbk9iakNsaWNrKDEp IG9ubW91c2VvdXQ9U3BlZWRFclVwKHRoaXMpIA0Kb25tb3VzZW92ZXI9U2xvd0VyRG93bih0aGlz KT5UZXN0ZXJzPC9ESVY+DQo8RElWIGNsYXNzPXRpdGxlIGlkPXRpdGxlUE1zIG9uY2xpY2s9T25P YmpDbGljaygyKSBvbm1vdXNlb3V0PVNwZWVkRXJVcCh0aGlzKSANCm9ubW91c2VvdmVyPVNsb3dF ckRvd24odGhpcyk+UHJvZ3JhbTxCUj5NYW5hZ2VyczwvRElWPg0KPERJViBjbGFzcz10aXRsZSBp ZD10aXRsZUludCBvbmNsaWNrPU9uT2JqQ2xpY2soMykgb25tb3VzZW91dD1TcGVlZEVyVXAodGhp cykgDQpvbm1vdXNlb3Zlcj1TbG93RXJEb3duKHRoaXMpPkludGVybmF0aW9uYWw8L0RJVj4NCjxE SVYgY2xhc3M9dGl0bGUgaWQ9dGl0bGVPdGggb25jbGljaz1Pbk9iakNsaWNrKDQpIG9ubW91c2Vv dXQ9U3BlZWRFclVwKHRoaXMpIA0Kb25tb3VzZW92ZXI9U2xvd0VyRG93bih0aGlzKT5TcGVjaWFs PEJSPlRoYW5rcyBUbzwvRElWPjxJTUcgaWQ9bG9nbyANCm9uY2xpY2s9TG9nb0NsaWNrZWQoKSBz cmM9InJlczovL21zb2VyZXMuZGxsL29lbG9nby5naWYiIA0Kc3R5bGU9IkZJTFRFUjogcmV2ZWFs VHJhbnMoVHJhbnNpdGlvbj0yMywgRHVyYXRpb249Mi41KTsgTEVGVDogMHB4OyBQT1NJVElPTjog YWJzb2x1dGU7IFRPUDogMHB4OyBaLUlOREVYOiAyIj4gDQo8IS0tU3RhcnQgbmFtZXMgc2VjdGlv bi0tPg0KPERJViBpZD1JbmRpdk5hbWUgc3R5bGU9IlZJU0lCSUxJVFk6IGhpZGRlbiI+PC9ESVY+ DQo8RElWIGlkPUluZGl2U2F5aW5nIA0Kc3R5bGU9IkNPTE9SOiByZWQ7IEZJTFRFUjogcmV2ZWFs VHJhbnMoVHJhbnNpdGlvbj0xMiwgRHVyYXRpb249MSk7IEZPTlQtU0laRTogMjRwdDsgRk9OVC1X RUlHSFQ6IGJvbGQ7IExFRlQ6IDBweDsgUE9TSVRJT046IGFic29sdXRlOyBUT1A6IDBweDsgVklT SUJJTElUWTogaGlkZGVuOyBaLUlOREVYOiA4Ij48L0RJVj48L0JPRFk+PC9IVE1MPg0K