From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3939 invoked by alias); 15 Mar 2007 21:19:04 -0000 Received: (qmail 3927 invoked by uid 22791); 15 Mar 2007 21:19:02 -0000 X-Spam-Status: No, hits=0.8 required=5.0 tests=BAYES_50,DK_SIGNED,SARE_MSGID_LONG40,SPF_PASS,TW_DC,TW_TX X-Spam-Check-By: sourceware.org Received: from wx-out-0506.google.com (HELO wx-out-0506.google.com) (66.249.82.237) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 15 Mar 2007 21:18:54 +0000 Received: by wx-out-0506.google.com with SMTP id s17so343528wxc for ; Thu, 15 Mar 2007 14:18:52 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; b=jcFQDFjLsILIm0hEZq6ckCqGDFMUzh2zHZh/ePQQ/Yr+D7luW9towkdlgV9V40QmJ1k1IzWdm8SpA0WCzUYh+JErCOLdGIzc5kt+xf/yua0pnUkkG7R7SJlsQ8gRrRMYMsJuQlC5Yqd1OMvoVxn63eiQBh/tbJPfHJGKhgeGjK8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type; b=sxNpX4IRjjOWtn61bgTIkNv7FUjTApaLLidwGUeTzrMknCldBMUOgvOMoT1bFhfPKybQppA5sQbvSR6sILQ47DLtz+w5pvKZeKLf40NRniP0wch7X1QlguUU6bBKdIvemflS22mca2QDqkGqDr4y0pScSmZl6ffNZIUUIzN/09o= Received: by 10.115.93.16 with SMTP id v16mr454343wal.1173993531890; Thu, 15 Mar 2007 14:18:51 -0700 (PDT) Received: by 10.114.124.12 with HTTP; Thu, 15 Mar 2007 14:18:51 -0700 (PDT) Message-ID: <2f5d26900703151418yf01f580t1e5fbd28a62e2a14@mail.gmail.com> Date: Thu, 15 Mar 2007 21:19:00 -0000 From: Jhoberg To: ecos-maintainers@ecos.sourceware.org Subject: Applications Measure of electrical energy using eCos with Driver ADC 16bits two Chanels using embeded WebServer and LwIp MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_75940_27285329.1173993531197" X-Virus-Checked: Checked by ClamAV on sourceware.org Mailing-List: contact ecos-maintainers-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-maintainers-owner@ecos.sourceware.org X-SW-Source: 2007-03/txt/msg00001.txt.bz2 ------=_Part_75940_27285329.1173993531197 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 431 This Develop capture two signals a electrical current and another one of voltage, with its respective adjustment of signal using operational-amplifer and scaling to 0-5V the signals. * Driver for ADC_7654 the 16 bits. * Lwip * WebServer embedded * Control of load using a Triac. Show the information the energy , values instant the current electrical and voltage, Control of the load using the Web Server embedded with a button. ------=_Part_75940_27285329.1173993531197 Content-Type: text/x-csrc; name=WebEnergyCounter.c; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezbox46x Content-Disposition: attachment; filename="WebEnergyCounter.c" Content-length: 20875 I0RldmVscCBieSBKaG9iZXJnIFF1ZXZlZG8KI2VtYWlsOiBqcnF1ZXZlZG9y QGdtYWlsLmNvbQoKCiNpbmNsdWRlICJsd2lwL2RlYnVnLmgiCiNpbmNsdWRl ICJsd2lwL3N0YXRzLmgiCiNpbmNsdWRlICJsd2lwL3RjcC5oIgoKCiNpbmNs dWRlIDxwa2djb25mL2lvX3NlcmlhbC5oPgojaW5jbHVkZSA8cGtnY29uZi9s aWJjLmg+CiNpbmNsdWRlIDxjeWcvaW8vaW8uaD4KI2luY2x1ZGUgPGN5Zy9o YWwvaGFsX2lvLmg+CiNpbmNsdWRlIDxjeWcvaGFsL2hhbF9pbnRyLmg+CiNp bmNsdWRlIDxjeWcvaW8vc2VyaWFsLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4K I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRl IDxmbG9hdC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgojaW5jbHVkZSAiaHRt bC5oIgoKI2RlZmluZSBNQVhTSVpFVENQIDIwNDgKCgovLyA8aW1nIHNyYz1n bnUuYm1wID48L2ltZz4KLy8gPGFwcGxldCBjb2RlPUdyYXBoQXBwbGV0LmNs YXNzIHdpZHRoPTMwMCBoZWlnaHQ9MTIwPgovLyA8L2FwcGxldD4Kdm9sYXRp bGUgY2hhciAqIGNhZGVuYWluZm87CnZvbGF0aWxlIGNoYXIgKiBhcGNvbWFu ZG87CgpjaGFyIHR4ZGF0YSBbTUFYU0laRVRDUF07CmNoYXIgaW5mb1s1MTJd OwoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KipEZWZpbmljaW9uIHZhcmlhYmxlcyBlQ29zIAojZGVmaW5lIFNUQUNLX1NJ WkUgMHg4MDAKY3lnX2FsYXJtX3QgdGVzdF90aW1lcjE7CnN0YXRpYyBjeWdf dGhyZWFkIHRocmVhZF9zWzFdOwpjeWdfdGhyZWFkX2VudHJ5X3Qgc2FtcGxl c19wcm9ncmFtOwpjeWdfaGFuZGxlX3Qgc2FtcGxlc190aHJlYWQ7CmN5Z19o YW5kbGVfdCBodHRwX3RocmVhZDsKc3RhdGljIGNoYXIgc3RhY2tbMV1bU1RB Q0tfU0laRV07CmN5Z19tdXRleF90IGFkY2Jsb2NrOwpjeWdfaGFuZGxlX3Qg aGFuZGxlX0FEQ19JU1IwOwpjeWdfaW50ZXJydXB0IGludHJBREM7CmN5Z19z ZW1fdCBzZW1hZm9yb19BREMsc2VtYWZvcm9fbnNhbXBsZXM7CmN5Z19pb19o YW5kbGVfdCBoYW5kbGVfSU87CmludCBhdXg9MDsKCi8vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqZmluIERlZmluaWNpb24g dmFyaWFibGVzIGVDb3MgCgoKCiNkZWZpbmUgTEVEXzEJKDE8PDE2KQojZGVm aW5lIExFRF8yCSgxPDwxNykKI2RlZmluZSBMRURfMwkoMTw8MTgpCgoKICBp bnQgIGF4Z25kPTA7CiAgaW50ICBheGduZGk9MDsKICBpbnQgYXhtaW49MDsK ICBpbnQgYXhtYXg9MDsKICBkb3VibGUgKnRvcHB3OwogIGRvdWJsZSBheGVu ZXJneTsKCiAgZmxvYXQgamg9MDsKICBmbG9hdCBqaDI9MDsKICBmbG9hdCBq aDM9MDsKICBmbG9hdCBheGpoPTA7CgovLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKmRlZmluaWNpb24gZGUgbGEgY2xhc2Ug QURDIEFOQUxPRyBERVZJQ0UgZW4gQwojZGVmaW5lIE5TQU1QTEVTIDY0CiNk ZWZpbmUgRkFNUExFUyAgMzg0MAoKCnN0YXRpYyBjeWdfdWludDMyIEFEUk1F TU9SWUs9MHgyOTc7CmludCAgIE1hcGVhcih2b2lkKTsKYm9vbCAgQ29udmVy dGlvblN0YXJ0KHZvaWQpOwpib29sICBSZWFkQWRjKHVuc2lnbmVkIHNob3J0 ICosY3lnX3VpbnQzMiAqKTsKYm9vbCAgc2V0Q2hhbmVsKGludCk7CmJvb2wg ZnBjYWxjKGZsb2F0IGF4bnRmcHYsZmxvYXQgYXhudGZwaSk7CgoKCmludCBN YXBlYXIodm9pZCkKewogIEhBTF9XUklURV9VSU5UMzIoQVQ5MV9QSU8gKyBB VDkxX1BJT19QRFIgLEFUOTFfUElPX1BTUl9OQ1MzKTsKICBIQUxfV1JJVEVf VUlOVDMyKEFUOTFfRUJJICsgQVQ5MV9FQklfTUNSLEFUOTFfRUJJX01DUl9B TEVfOE18KDA8PDQpICk7CiAgSEFMX1dSSVRFX1VJTlQzMihBVDkxX0VCSSAr IEFUOTFfRUJJX0NTUjEsIEFUOTFfRUJJX0NTUl9EQldfMTYgfCBBVDkxX0VC SV9DU1JfTldTXzggfCBBVDkxX0VCSV9DU1JfV1NFICAKCQkgICB8IEFUOTFf RUJJX0NTUl9QQUdFU18xTSB8IEFUOTFfRUJJX0NTUl9UREZfMSB8IEFUOTFf RUJJX0NTUl9DU0VOIHwgKEFEUk1FTU9SWUs8PDIwKSAgKTsKICBIQUxfV1JJ VEVfVUlOVDMyKEFUOTFfUElPICsgQVQ5MV9QSU9fUEVSICwgIEFUOTFfUElP X1BTUl9USU9BMXxBVDkxX1BJT19QU1JfUDIzfEFUOTFfUElPX1BTUl9QMjQg KTsKICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFfUElPICsgQVQ5MV9QSU9fT0VS LCBBVDkxX1BJT19QU1JfVElPQTF8QVQ5MV9QSU9fUFNSX1AyM3xBVDkxX1BJ T19QU1JfUDI0ICk7CiAgSEFMX1dSSVRFX1VJTlQzMihBVDkxX1BJTyArIEFU OTFfUElPX1NPRFIsIEFUOTFfUElPX1BTUl9USU9BMSk7IAogIC8vZGVmaW5p Y2lvbiBkZSBsb3MgcGluZXMgcGFyYSBlc2NvamVyIHVuIGNhbmFsIGRlIGNv bnZlcnNpb24gZGVmYXVsIGNoMwogIEhBTF9XUklURV9VSU5UMzIoQVQ5MV9Q SU8gKyBBVDkxX1BJT19TT0RSLCBBVDkxX1BJT19QU1JfUDIzKTsgCiAgSEFM X1dSSVRFX1VJTlQzMihBVDkxX1BJTyArIEFUOTFfUElPX0NPRFIsIEFUOTFf UElPX1BTUl9QMjQpOyAKICByZXR1cm4gMTsKICAvLzAsMCAtPiBCCiAgLy8x LDAgLT4gVm9sdGFqZSAKCgp9CmJvb2wgQ29udmVydGlvblN0YXJ0KHZvaWQp ICAKeyAKICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFfUElPICsgQVQ5MV9QSU9f Q09EUiwgQVQ5MV9QSU9fUFNSX1RJT0ExKTsgCiAgSEFMX1dSSVRFX1VJTlQz MihBVDkxX1BJTyArIEFUOTFfUElPX1NPRFIsIEFUOTFfUElPX1BTUl9USU9B MSk7IAogIHJldHVybiAxOyAKfQpib29sIFJlYWRBZGMoY3lnX3VpbnQxNiAq RGF0b2F4LCBjeWdfdWludDMyICphZGRyZXNzKQp7CiAgSEFMX1JFQURfVUlO VDE2KCgqYWRkcmVzczw8MjApICwqRGF0b2F4ICk7CiAgcmV0dXJuIDE7Cn0K Ym9vbCBzZXRDaGFuZWwoaW50IGNob3ApCnsKICBzd2l0Y2goY2hvcCkKICAg IHsKICAgIGNhc2UgMDp7ICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFfUElPICsg QVQ5MV9QSU9fQ09EUiwgQVQ5MV9QSU9fUFNSX1AyMyk7IAogICAgICAgICAg ICAgIEhBTF9XUklURV9VSU5UMzIoQVQ5MV9QSU8gKyBBVDkxX1BJT19DT0RS LCBBVDkxX1BJT19QU1JfUDI0KTsKCSAgICAgIC8vdm9sdGFqZSAKCSAgICAg IGJyZWFrO30KICAgIGNhc2UgMTp7ICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFf UElPICsgQVQ5MV9QSU9fQ09EUiwgQVQ5MV9QSU9fUFNSX1AyMyk7IAogICAg ICAgICAgICAgIEhBTF9XUklURV9VSU5UMzIoQVQ5MV9QSU8gKyBBVDkxX1BJ T19TT0RSLCBBVDkxX1BJT19QU1JfUDI0KTsKCSAgICAgIGJyZWFrO30KICAg IGNhc2UgMjp7ICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFfUElPICsgQVQ5MV9Q SU9fU09EUiwgQVQ5MV9QSU9fUFNSX1AyMyk7IAogICAgSEFMX1dSSVRFX1VJ TlQzMihBVDkxX1BJTyArIEFUOTFfUElPX0NPRFIsIEFUOTFfUElPX1BTUl9Q MjQpOwoJICAgICAgLy9jb3JyaWVudGUKCSAgICAgIGJyZWFrO30KICAgIGNh c2UgMzp7ICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFfUElPICsgQVQ5MV9QSU9f U09EUiwgQVQ5MV9QSU9fUFNSX1AyMyk7IAogICAgICAgICAgICAgIEhBTF9X UklURV9VSU5UMzIoQVQ5MV9QSU8gKyBBVDkxX1BJT19TT0RSLCBBVDkxX1BJ T19QU1JfUDI0KTsKCSAgICAgIGJyZWFrO30KICAgIH0KICByZXR1cm4gMTsK fQoKCgp0eXBlZGVmIHN0cnVjdCBhZGNfNzY1NAp7CiAgdm9sYXRpbGUgY3ln X3VpbnQzMiBBRFJNRU1PUlk7CiAgdm9sYXRpbGUgY3lnX3VpbnQxNiBEYXRv OwogIHZvbGF0aWxlIGludCBzYW1wbGVzSFtOU0FNUExFU107CiAgaW50ICpp OwogIHZvbGF0aWxlIGludCAqU2FtcGxlc1tOU0FNUExFU107CiAgY2hhciAq Y0RhdG87CiAgY2hhciAqY1NhbXBsZXM7CiAgaW50IHRvcHNhbXBsZXM7CiAg aW50IG51bXNhbXBsZTsKCiAgdW5zaWduZWQgbG9uZyBlbmVyZ3lzYW1wbGU7 CiAgZmxvYXQgZW5lcmd5dG9wOwogIGRvdWJsZSAqRW5lcmd5RGF0bzsKICBp bnQgcmF0ZWVuZXJneTsKICBpbnQgTWF4VjsKICBpbnQgTWluVjsKICB2b2xh dGlsZSB1bnNpZ25lZCBpbnQgKk1heEk7CiAgdm9sYXRpbGUgdW5zaWduZWQg aW50ICpNaW5JOwogIAogIHZvbGF0aWxlIGZsb2F0IGluc3RhbnRWb2w7CiAg dm9sYXRpbGUgZmxvYXQgaW5zdGFudEN1cjsKICBpbnQgQ29tZGF0bzsKICBp bnQgbnRmcHY7CiAgaW50IG50ZnBpOwogIGZsb2F0IGZwOwogIGludCBDb21h bmRvOwogIGludCBwcm9tZWRpb0g7CiAgaW50IHByb21lZGlvVjsKICAKICBp bnQgKCogYXBNYXBlYXIpKHZvaWQpOwogIGJvb2wgKCogYXBDb252ZXJ0aW9u U3RhcnQpKHZvaWQpOwogIGJvb2wgKCogYXBSZWFkQWRjKShjeWdfdWludDE2 ICosY3lnX3VpbnQzMiAqKTsKICBib29sICgqIGFwc2V0Q2hhbmVsKShpbnQp OwoKfTsKCgoKCnZvbGF0aWxlIHN0cnVjdCBhZGNfNzY1NCBhZGMsYXhhZGM7 IApib29sIGZwY2FsYyhmbG9hdCBheG50ZnB2LGZsb2F0IGF4bnRmcGkpCnsK IAogIGlmKGF4bnRmcHY+YXhudGZwaSkgewogICAgYXhudGZwdj1heG50ZnB2 LWF4bnRmcGk7CiAgICBheG50ZnBpPWF4bnRmcHYqOTgxNzQ3N0UtODsKICAg IGF4bnRmcHY9Y29zKGF4bnRmcGkpOwogICAgYXhhZGMuZnA9YXhudGZwdjsK CiAgfQogIGVsc2V7CiAgICBheG50ZnB2PWF4bnRmcGktYXhudGZwdjsKICAg IGF4bnRmcGk9YXhudGZwdio5ODE3NDc3RS04OwogICAgYXhudGZwdj1jb3Mo YXhudGZwaSk7CiAgICBheGFkYy5mcD1heG50ZnB2OwogIH0KICAKICByZXR1 cm4gMTsKfQoKCgpjeWdfdWludDMyIGZ1bl9pc3IwIChjeWdfdmVjdG9yX3Qg dmVjdG9yLCBjeWdfYWRkcndvcmRfdCBkYXRhICkKewoKICBjeWdfdWludDMy IHJlc3VsdFBJTzsKCiAgLy8gIEhBTF9XUklURV9VSU5UMzIoIEFUOTFfUElP ICsgQVQ5MV9QSU9fU09EUiAsTEVEXzIgICk7IAogIEhBTF9SRUFEX1VJTlQz MihBVDkxX1BJTyArIEFUOTFfUElPX0lTUiwgcmVzdWx0UElPKTsKICBjeWdf aW50ZXJydXB0X21hc2sodmVjdG9yKTsKICBjeWdfaW50ZXJydXB0X2Fja25v d2xlZGdlKHZlY3Rvcik7CiAgcmV0dXJuIChDWUdfSVNSX0hBTkRMRUQgfCBD WUdfSVNSX0NBTExfRFNSKTsKCn0Kdm9pZCBmdW5fZHNyMChjeWdfdmVjdG9y X3QgdmVjdG9yLCBjeWdfdWNvdW50MzIgY291bnQsIGN5Z19hZGRyd29yZF90 IGRhdGEpewoKICBjeWdfaW50ZXJydXB0X3VubWFzayh2ZWN0b3IpOyAKfQoK Ly8gZnVuY2lvbiBkZSBtdWVzdHJlbywgY29uIGZyZWN1ZW5jaWEgdmFyaWFi bGUKCnZvaWQgYml0QWRjX2FsYXJtX2Z1bmMoY3lnX2hhbmRsZV90IGFsYXJt SCwgY3lnX2FkZHJ3b3JkX3QgZGF0YSkKeyAKICAKIAoKICBheG1heD0wOwog IGF4bWluPTA7CiAgYXhnbmQ9MDsKICBqaD0wOwogIGpoMj0wOwogIGpoMz0w OwogSEFMX1dSSVRFX1VJTlQzMiggQVQ5MV9QSU8gKyBBVDkxX1BJT19TT0RS ICxMRURfMiApOyAKCiBjeWdfc2NoZWR1bGVyX2xvY2soKTsKIGN5Z19tdXRl eF9sb2NrKCZhZGNibG9jayk7CiAKIGlmKGFkYy5udW1zYW1wbGU+TlNBTVBM RVMpCiAgICB7IAogICAgICBIQUxfV1JJVEVfVUlOVDMyKCBBVDkxX1BJTyAr IEFUOTFfUElPX0NPRFIgLExFRF8yICk7IAogICAgICAKICAgICAgaWYoYXhh ZGMuQ29tYW5kbz09MCkKCWF4YWRjPShzdHJ1Y3QgIGFkY183NjU0KWFkYzsK ICAgICAgCiAgICAgIGN5Z19zZW1hcGhvcmVfcG9zdCgmc2VtYWZvcm9fbnNh bXBsZXMpOwogICAgCWlmKCgqYWRjLkVuZXJneURhdG8pPGFkYy5lbmVyZ3l0 b3ApCgkgIHsKCSAgICBheG1heD1hZGMuTWF4VjsJCgkgICAgYXhtaW49YWRj Lk1pblY7CgkgICAgLy9heGduZD1hZGMucHJvbWVkaW9WOwoJICAgIC8vIGF4 Z25kPShpbnQpKGF4Z25kL05TQU1QTEVTKTsKCSAgICAgYXhnbmQ9YXhtaW4r KCgoYXhtYXgpLShheG1pbikpLzIgKTsKCSAgICBqaDI9KGZsb2F0KShheG1h eC1heGduZCk7CgkgICAgamg9MUUzLzY1NTM1RTA7CgkgICAgaWYoamgyPjAp CgkgICAgICBhZGMuaW5zdGFudFZvbD1qaDIqamg7CgkgICAgZWxzZQoJICAg ICAgYWRjLmluc3RhbnRWb2w9MTIwRTA7CgoKCSAgICBheG1heD0oKmFkYy5N YXhJKTsJCgkgICAgYXhtaW49KCphZGMuTWluSSk7CgkgICAgLy8gYXhnbmQ9 YWRjLnByb21lZGlvSDsKCSAgICAvL2F4Z25kPShpbnQpKGF4Z25kL05TQU1Q TEVTKTsKCSAgICBheGduZD1heG1pbisoKChheG1heCktKGF4bWluKSkvMiAp OwoJICAgIC8vcGFyYSBjYWxjdWFyIGNvbiBkY2duZCB2YXJpYWJsZQoJICAg ICBqaDI9KGZsb2F0KSggYXhtYXggLSBheGduZCk7CgkgICAgCgkgICAgamg9 NDU2NUUtNjsKCSAgICBpZiggamgyID4gMCkKCSAgICAgIGpoMz1qaDIqamg7 CgkgICAgZWxzZQoJICAgICAgamgzPTA7CgoJICAgIGlmKGpoMz4wKQoJICAg ICAgewoJCWFkYy5pbnN0YW50Q3VyPWpoMzsKCQlqaD0oYWRjLmluc3RhbnRW b2wqKGpoMykpOwoJCgkJKnRvcHB3Kz1qaDsKICAgICAgIAkJKmFkYy5FbmVy Z3lEYXRvPSp0b3BwdzsKCQoJCgkgICAgICB9CgkgICAgZWxzZXsKCSAgICAg IGFkYy5pbnN0YW50Q3VyPTBFMDsKCSAgICAgIGFkYy5pbnN0YW50Vm9sPTEy MEUwOwoKCSAgICB9CgkgICAgCgkgICAgYWRjLk1heFY9MDsKCSAgICAqYWRj Lk1pbkk9MHhGRkZGOwoJICAgICphZGMuTWF4ST0wOwoJICAgIGFkYy5NaW5W PTB4RkZGRjsKCSAgICBhZGMubnVtc2FtcGxlPTA7CgkgICAgYWRjLnByb21l ZGlvSD0wOwoJICAgIGFkYy5wcm9tZWRpb1Y9MDsKCSAgICBhZGMuZW5lcmd5 c2FtcGxlKys7CgkgIH1lbHNlewoJICAgIGFkYy5Db21kYXRvPTE7CgkgIH0K CQoJCiAgICB9ZWxzZQogICAgICB7CgkvL2RhdG8gZGUgQgoJCglhZGMuYXBz ZXRDaGFuZWwoMik7CglhZGMuYXBDb252ZXJ0aW9uU3RhcnQoKTsKCWFkYy5h cFJlYWRBZGMoJmFkYy5EYXRvLGFkYy5BRFJNRU1PUlkpOyAKCWFkYy5zYW1w bGVzSFthZGMubnVtc2FtcGxlXT1hZGMuRGF0bzsKCWFkYy5wcm9tZWRpb0gr PWFkYy5zYW1wbGVzSFthZGMubnVtc2FtcGxlXTsKCWlmKCphZGMuTWF4STxh ZGMuc2FtcGxlc0hbYWRjLm51bXNhbXBsZV0pCgkgIHsKCSAgICAqYWRjLk1h eEk9YWRjLnNhbXBsZXNIW2FkYy5udW1zYW1wbGVdOwoJICAgIGFkYy5udGZw aT1hZGMubnVtc2FtcGxlOwoJICAgIAoJICB9CglpZigqYWRjLk1pbkk+YWRj LnNhbXBsZXNIW2FkYy5udW1zYW1wbGVdKQoJICAqYWRjLk1pbkk9KHVuc2ln bmVkIGludClhZGMuc2FtcGxlc0hbYWRjLm51bXNhbXBsZV07CgkKCWFkYy5p PTc7CgkKICAgICAgICAvL2RhdG8gZGUgVgoJYWRjLmFwc2V0Q2hhbmVsKDAp OwoJYWRjLmFwQ29udmVydGlvblN0YXJ0KCk7ICAgCglhZGMuYXBSZWFkQWRj KCZhZGMuRGF0byxhZGMuQURSTUVNT1JZKTsgCglhZGMuU2FtcGxlc1thZGMu bnVtc2FtcGxlXT1hZGMuRGF0bzsKCWFkYy5wcm9tZWRpb1YrPSgqYWRjLlNh bXBsZXNbYWRjLm51bXNhbXBsZV0pOwoJaWYoYWRjLk1heFY8YWRjLlNhbXBs ZXNbYWRjLm51bXNhbXBsZV0pCgkgIHsKCSAgYWRjLk1heFY9YWRjLlNhbXBs ZXNbYWRjLm51bXNhbXBsZV07CgkgIGFkYy5udGZwaT1hZGMubnVtc2FtcGxl OwoJICB9CglpZihhZGMuTWluVj5hZGMuU2FtcGxlc1thZGMubnVtc2FtcGxl XSkKCSAgewoJICBhZGMuTWluVj1hZGMuU2FtcGxlc1thZGMubnVtc2FtcGxl XTsJCgkgIGFkYy5udGZwdj1hZGMubnVtc2FtcGxlOwoJICB9CglhZGMubnVt c2FtcGxlKys7CiAgICAgIH0KCgogY3lnX211dGV4X3VubG9jaygmYWRjYmxv Y2spOwogY3lnX3NjaGVkdWxlcl91bmxvY2soKTsKfQoKCnZvaWQgc2FtcGxl c19wcm9ncmFtKGN5Z19hZGRyd29yZF90IGRhdGEpCnsKICBpbnQgbWVzc2Fn ZSA9IChpbnQpIGRhdGE7CiAgaW50IGRlbGF5OwogIGludCBuLHg7CiAgY2hh ciBvdXRwdXQ7CiAgY3lnX2hhbmRsZV90IHRlc3RfY291bnRlckgsIHN5c3Rl bV9jbG9ja0gsIHRlc3RfYWxhcm1IOwogIGN5Z190aWNrX2NvdW50X3QgdGlj a3M7CiAgY3lnX2FsYXJtIHRlc3RfYWxhcm07CiAgY3lnX2hhbmRsZV90IHRp ZW1wb19yZWFsOwogIHVuc2lnbmVkIGhvd19tYW55X2FsYXJtcyA9IDAsIHBy ZXZfYWxhcm1zID0gMCwgdG1wX2hvd19tYW55OwogIHN5c3RlbV9jbG9ja0gg PSBjeWdfcmVhbF90aW1lX2Nsb2NrKCk7CiAgY3lnX2Nsb2NrX3RvX2NvdW50 ZXIoc3lzdGVtX2Nsb2NrSCwgJnRlc3RfY291bnRlckgpOwogIGN5Z19hbGFy bV9jcmVhdGUodGVzdF9jb3VudGVySCwgYml0QWRjX2FsYXJtX2Z1bmMsCgkJ ICAgKGN5Z19hZGRyd29yZF90KSAmaG93X21hbnlfYWxhcm1zICwKCQkgICAm dGVzdF9hbGFybUgsICZ0ZXN0X2FsYXJtKTsKICBjeWdfYWxhcm1faW5pdGlh bGl6ZSh0ZXN0X2FsYXJtSCwgY3lnX2N1cnJlbnRfdGltZSgpKzEsIDIpOwog IGZvciAoOzspCiAgICB7CiAgCgogICAgfQoKICAKfQoKLy8gZmluIGZyZWN1 ZW5jaWEgZGUgbXVlc3RyZW8KCgoKCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqZmluIGRlIGxhIGNsYXNlIEFEQyBkZSBB TkFMT0cgREVWSUNFIGVuIEMKCgoKc3RydWN0IGh0dHBfc3RhdGUgewogIGNo YXIgKmZpbGU7CiAgdTMyX3QgbGVmdDsKICB1OF90IHJldHJpZXM7Cn07CgoK CgoKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K c3RhdGljIHZvaWQgY29ubl9lcnIodm9pZCAqYXJnLCBlcnJfdCBlcnIpCnsK ICBzdHJ1Y3QgaHR0cF9zdGF0ZSAqaHM7CgogIGhzID0gYXJnOwogIG1lbV9m cmVlKGhzKTsKfQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCnN0YXRpYyB2b2lkIGNsb3NlX2Nvbm4oc3RydWN0IHRjcF9wY2Ig KnBjYiwgc3RydWN0IGh0dHBfc3RhdGUgKmhzKQp7CiAgdGNwX2FyZyhwY2Is IE5VTEwpOwogIHRjcF9zZW50KHBjYiwgTlVMTCk7CiAgdGNwX3JlY3YocGNi LCBOVUxMKTsKICBtZW1fZnJlZShocyk7CiAgdGNwX2Nsb3NlKHBjYik7Cn0K Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdGF0 aWMgdm9pZCBzZW5kX2RhdGEoc3RydWN0IHRjcF9wY2IgKnBjYiwgc3RydWN0 IGh0dHBfc3RhdGUgKmhzKQp7CiAgZXJyX3QgZXJyOwogIHUxNl90IGxlbjsK CiAgLy8gV2UgY2Fubm90IHNlbmQgbW9yZSBkYXRhIHRoYW4gc3BhY2UgYXZh aWxhYmxlIGluIHRoZSBzZW5kCiAgLy8gYnVmZmVyLiAKICBpZih0Y3Bfc25k YnVmKHBjYikgPCBocy0+bGVmdCkgewogICAgbGVuID0gdGNwX3NuZGJ1Zihw Y2IpOwogIH0gZWxzZSB7CiAgICBsZW4gPSBocy0+bGVmdDsKICB9CgogIGRv IHsKICAgIGVyciA9IHRjcF93cml0ZShwY2IsIGhzLT5maWxlLCBsZW4sIDAp OwogICAgaWYoZXJyID09IEVSUl9NRU0pIHsKICAgICAgbGVuIC89IDI7CiAg ICB9CiAgfSB3aGlsZShlcnIgPT0gRVJSX01FTSAmJiBsZW4gPiAxKTsgIAog IAogIGlmKGVyciA9PSBFUlJfT0spIHsKICAgIGhzLT5maWxlICs9IGxlbjsK ICAgIGhzLT5sZWZ0IC09IGxlbjsKICB9Cn0KLy8tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdGF0aWMgZXJyX3QgaHR0cF9wb2xs KHZvaWQgKmFyZywgc3RydWN0IHRjcF9wY2IgKnBjYikKewogIHN0cnVjdCBo dHRwX3N0YXRlICpoczsKCiAgaHMgPSBhcmc7CiAgCiAgLy8gIHByaW50Zigi UG9sbGxcbiIpOwogIGlmKGhzID09IE5VTEwpIHsKICAgIC8vICAgIHByaW50 ZigiTnVsbCwgY2xvc2VcbiIpOwogICAgdGNwX2Fib3J0KHBjYik7CiAgICBy ZXR1cm4gRVJSX0FCUlQ7CiAgfSBlbHNlIHsKICAgICsraHMtPnJldHJpZXM7 CiAgICBpZihocy0+cmV0cmllcyA9PSA0KSB7CiAgICAgIHRjcF9hYm9ydChw Y2IpOwogICAgICByZXR1cm4gRVJSX0FCUlQ7CiAgICB9CiAgICBzZW5kX2Rh dGEocGNiLCBocyk7CiAgfQoKICByZXR1cm4gRVJSX09LOwp9Ci8vLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3RhdGljIGVycl90 IGh0dHBfc2VudCh2b2lkICphcmcsIHN0cnVjdCB0Y3BfcGNiICpwY2IsIHUx Nl90IGxlbikKewogIHN0cnVjdCBodHRwX3N0YXRlICpoczsKICBocyA9IGFy ZzsKICBocy0+cmV0cmllcyA9IDA7CiAgaWYoaHMtPmxlZnQgPiAwKSB7ICAg IAogICAgc2VuZF9kYXRhKHBjYiwgaHMpOwogIH0gZWxzZSB7CiAgICBjbG9z ZV9jb25uKHBjYiwgaHMpOwogIH0KCiAgcmV0dXJuIEVSUl9PSzsKCn0KCi8v CgoKCgppbnQgcmVxdHlwZWh0dHAoY2hhciAqZGF0YSkKewoKICBpbnQgaSxh dXgsajsKICBjaGFyIHRpcG9bMjBdOwogIGludCB2YXJ0b3AsdmFybWVtLHZh cjsKCiAgaWYoc3RybmNtcCgiR0VUIC8gIixkYXRhLDYpKQogICAgewogICAg ICBhdXg9MDsKICAgICAgd2hpbGUoIGRhdGFbYXV4KzVdICE9IE5VTEwgKQoJ ewoJICBpZiggKChjaGFyICopZGF0YSs1KVthdXhdPT0nICcgKQoJICAgIGJy ZWFrOwoJICBlbHNlICAKCSAgICB0aXBvW2F1eF09KChjaGFyICopZGF0YSs1 KVthdXhdOyAgCgoJICBhdXgrKzsgCgl9CgkgIAoJICAgCiAgICB9ZWxzZQog ICAgICB7CgoJY3lnX3NlbWFwaG9yZV93YWl0KCZzZW1hZm9yb19uc2FtcGxl cyk7CglheGFkYy5Db21hbmRvPTE7CglqPXNpemVvZih2cGFnZV9pbmRleCk7 CgltZW1jcHkodHhkYXRhLHZwYWdlX2luZGV4LGopOwoJaj1zdHJsZW4odHhk YXRhKTsKCWZwY2FsYyhheGFkYy5udGZwdixheGFkYy5udGZwaSk7CgkvLwlh eGVuZXJneT0oZG91YmxlKSpheGFkYy5FbmVyZ3lEYXRvOwoJLy9heGVuZXJn eT1heGVuZXJneS8yMUU2OwoJc3ByaW50ZihpbmZvLCI8SDM+RGF0b3MgcmVt b3RvczwvSDM+PFA+PHRhYmxlIGFsaWduPVwibGVmdFwiIGJvcmRlcj1cIjNc IiB2YWxpZ249XCJib3R0b21cIiBiZ2NvbG9yPVwibGlnaHRHcmF5XCI+PFRS PjxURD5FbmVyZ2lhPC9URD48VEQ+JWZfS3cqaDwvVEQ+PC9UUj48VFI+PFRE PlZpbnN0YTo8L1REPjxURD4lZl9WPC9UUj48L1REPjxUUj48VEQ+SWluc3Rh OjwvVEQ+PFREPiVmX0E8L1REPjwvVFI+PFRSPjxURD5GLlA8L1REPjxURD4l ZjwvVEQ+PC9UUj48VFI+PFREPkNpY2xvczwvVEQ+PFREPiVsdTwvVEQ+PC9U Uj48VFI+PEZPUk0gbmFtZT1cImNvbWFuZG9cIiBtZXRob2Q9XCJQT1NUXCI+ PFREPjxJTlBVVCB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJDb25lY3Rhclwi PjwvVEQ+PFREPjxJTlBVVCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJBcGFn YXJcIj48L1REPjwvRk9STT48L1RSPjwvVEFCTEU+PC9QPiIsKmF4YWRjLkVu ZXJneURhdG8sYXhhZGMuaW5zdGFudEN1cixheGFkYy5pbnN0YW50Vm9sLGF4 YWRjLmZwLGF4YWRjLmVuZXJneXNhbXBsZSk7CglqPXN0cmxlbih0eGRhdGEp OwoJaT1zdHJsZW4oaW5mbyk7CgltZW1jcHkoJih0eGRhdGFbal0pLGluZm8s aSk7CQkKCgkvKgoJdmFydG9wPTA7Cglmb3IodmFyPTA7dmFyPE5TQU1QTEVT O3ZhcisrKQoJICB7CgkgICAgc3ByaW50ZihhcGNvbWFuZG8sIiVkLCBcbiIs YXhhZGMuU2FtcGxlc1t2YXJdKTsKCSAgICB2YXJtZW09MDsKCSAgICB3aGls ZSgodmFybWVtPDYpJiYoKGNoYXIgKilhcGNvbWFuZG8pW3Zhcm1lbV0hPScg JykKCSAgICAgIHsKCQkoKGNoYXIgKiljYWRlbmFpbmZvK3ZhcnRvcClbdmFy bWVtXT0oY2hhciAqKWFwY29tYW5kb1t2YXJtZW1dOwoJCXZhcm1lbSsrOwoJ ICAgICAgfQoJICAgIHZhcnRvcD12YXJ0b3ArdmFybWVtOwoJICAgIAoJICB9 CgkKCWo9c3RybGVuKHR4ZGF0YSk7CglpPXNpemVvZih2cGFnZV9jaWVycmUp OwoJbWVtY3B5KCYodHhkYXRhW2pdKSx2cGFnZV9jaWVycmUsaSk7CgkKCglq PXN0cmxlbih0eGRhdGEpOwoJaT1zaXplb2YoY2llcnJlKTsJICAKCW1lbWNw eSgmKHR4ZGF0YVtqXSksY2llcnJlLGkpOwoJKi8KCglheGFkYy5Db21hbmRv PTA7CgkKCglyZXR1cm4gc2l6ZW9mKHR4ZGF0YSk7CiAgICAgIH0KCgogIHJl dHVybiAxOwp9CgoKLy8KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgpzdGF0aWMgZXJyX3QgaHR0cF9yZWN2KHZvaWQgKmFy Zywgc3RydWN0IHRjcF9wY2IgKnBjYiwgc3RydWN0IHBidWYgKnAsIGVycl90 IGVycikKewogIGludCBpOwogIGNoYXIgKmRhdGE7CiAgc3RydWN0IGh0dHBf c3RhdGUgKmhzOwogIGhzID0gYXJnOwogIGludCBzaXpldHg7CgoKICBpZihl cnIgPT0gRVJSX09LICYmIHAgIT0gTlVMTCkgewoKICAgIC8vIEluZm9ybSBU Q1AgdGhhdCB3ZSBoYXZlIHRha2VuIHRoZSBkYXRhLiAKICAgIHRjcF9yZWN2 ZWQocGNiLCBwLT50b3RfbGVuKTsKICAgIAogICAgaWYoaHMtPmZpbGUgPT0g TlVMTCkgewogICAgICBkYXRhID0gcC0+cGF5bG9hZDsgICAgCiAgICAgIHNp emV0eD1yZXF0eXBlaHR0cChkYXRhKTsKICAgICAgaHMtPmZpbGUgPSAmdHhk YXRhOyAKICAgICAgaHMtPmxlZnQgPSBzaXpldHg7CiAgICAgIHBidWZfZnJl ZShwKTsKICAgICAgc2VuZF9kYXRhKHBjYiwgaHMpOwoKICAgICAgdGNwX3Nl bnQocGNiLCBodHRwX3NlbnQpOwoKICB9IGVsc2UgewogICAgICBwYnVmX2Zy ZWUocCk7CiAgICAgIGNsb3NlX2Nvbm4ocGNiLCBocyk7CiAgICB9CiAgfSBl bHNlIHsKICAgIHBidWZfZnJlZShwKTsKICB9CiAgCgogIGlmKGVyciA9PSBF UlJfT0sgJiYgcCA9PSBOVUxMKSB7CiAgICBjbG9zZV9jb25uKHBjYiwgaHMp OwogIH0KICByZXR1cm4gRVJSX09LOwp9Ci8vLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3RhdGljIGVycl90IGh0dHBfYWNjZXB0 KHZvaWQgKmFyZywgc3RydWN0IHRjcF9wY2IgKnBjYiwgZXJyX3QgZXJyKQp7 CiAgc3RydWN0IGh0dHBfc3RhdGUgKmhzOwoKICB0Y3Bfc2V0cHJpbyhwY2Is IFRDUF9QUklPX01JTik7CiAgCiAgLy8gQWxsb2NhdGUgbWVtb3J5IGZvciB0 aGUgc3RydWN0dXJlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZQogIC8v ICAgY29ubmVjdGlvbi4gCiAgaHMgPSBtZW1fbWFsbG9jKHNpemVvZihzdHJ1 Y3QgaHR0cF9zdGF0ZSkpOwoKICBpZihocyA9PSBOVUxMKSB7CiAgICByZXR1 cm4gRVJSX01FTTsKICB9CiAgCiAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RydWN0 dXJlLiAKICBocy0+ZmlsZSA9IE5VTEw7CiAgaHMtPmxlZnQgPSAwOwogIGhz LT5yZXRyaWVzID0gMDsKICAKICAvLyBUZWxsIFRDUCB0aGF0IHRoaXMgaXMg dGhlIHN0cnVjdHVyZSB3ZSB3aXNoIHRvIGJlIHBhc3NlZCBmb3Igb3VyCiAg Ly8gICBjYWxsYmFja3MuIAogIHRjcF9hcmcocGNiLCBocyk7CgogIC8vIFRl bGwgVENQIHRoYXQgd2Ugd2lzaCB0byBiZSBpbmZvcm1lZCBvZiBpbmNvbWlu ZyBkYXRhIGJ5IGEgY2FsbAogIC8vICAgdG8gdGhlIGh0dHBfcmVjdigpIGZ1 bmN0aW9uLiAKICB0Y3BfcmVjdihwY2IsIGh0dHBfcmVjdik7CgogIHRjcF9l cnIocGNiLCBjb25uX2Vycik7CiAgCiAgdGNwX3BvbGwocGNiLCBodHRwX3Bv bGwsIDQpOwogIHJldHVybiBFUlJfT0s7Cn0KCi8vLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm9pZCBodHRwZF9pbml0KHZvaWQg KmFyZykKewogIHN0cnVjdCB0Y3BfcGNiICpwY2I7CgogIHBjYiA9IHRjcF9u ZXcoKTsKICB0Y3BfYmluZChwY2IsIElQX0FERFJfQU5ZLCA4MCk7CiAgcGNi ID0gdGNwX2xpc3RlbihwY2IpOwogIHRjcF9hY2NlcHQocGNiLCBodHRwX2Fj Y2VwdCk7CiAgd2hpbGUoMSkKICAgIGN5Z190aHJlYWRfZGVsYXkoMTAwMCk7 Cn0KCi8vIGZ1bmNpbiBwcmluY2lwYWwKCnZvaWQgd2Vic2VydmVyKGN5Z19h ZGRyd29yZF90IHApCnsKICBsd2lwX2luaXQoKTsJCiAgc3lzX3RocmVhZF9u ZXcoaHR0cGRfaW5pdCwgKHZvaWQqKSJodHRwZCIsNyk7ICAKfQoKCnZvaWQg Y3lnX3VzZXJfc3RhcnQodm9pZCkKewogIAoKICAvL2luaWNpYWxpemFjaW8g ZGUgbGEgY2xhc2UKIGFkYy50b3BzYW1wbGVzPU5TQU1QTEVTOwogIGFkYy5u dW1zYW1wbGU9MDsgCiAgYWRjLmVuZXJneXNhbXBsZT0wOwogIGFkYy5lbmVy Z3l0b3A9MjE2RTY7ICAvLzFLVy9oCiAgYWRjLmNEYXRvPShjaGFyICopbWFs bG9jKHNpemVvZihjaGFyIFs0XSkpOwogIGFkYy5hcE1hcGVhcj1NYXBlYXI7 CiAgYWRjLmFwQ29udmVydGlvblN0YXJ0PUNvbnZlcnRpb25TdGFydDsKICBh ZGMuYXBSZWFkQWRjPVJlYWRBZGM7CiAgYWRjLmFwc2V0Q2hhbmVsPXNldENo YW5lbDsKICBhZGMuQURSTUVNT1JZPSZBRFJNRU1PUllLOwogIGFkYy5hcE1h cGVhcigpOwogIGFkYy5Db21kYXRvPTA7CiAgYWRjLkVuZXJneURhdG89bWFs bG9jKHNpemVvZihkb3VibGUgKikpOzsKICBhZGMucmF0ZWVuZXJneT0xMDsK ICBhZGMuTWF4ST1tYWxsb2Moc2l6ZW9mKGludCAqKSk7CiAgYWRjLk1pbkk9 bWFsbG9jKHNpemVvZihpbnQgKikpOwogICphZGMuTWF4ST0wOwogICphZGMu TWluST0weEZGRkY7CiAgYWRjLmluc3RhbnRWb2w9MDsKICBhZGMuaW5zdGFu dEN1cj0wOwogIGFkYy5udGZwaT0wOwogIGFkYy5udGZwdj0wOwogIGFkYy5m cD0xOwogIGFkYy5Db21hbmRvPTA7CiAgYWRjLnByb21lZGlvSD0wOwogIGFk Yy5wcm9tZWRpb1Y9MDsKCiAgdG9wcHc9bWFsbG9jKHNpemVvZihmbG9hdCAq KSk7CiAgKnRvcHB3PTA7CgogIGFwY29tYW5kbz1tYWxsb2Moc2l6ZW9mKGNo YXIgKls4XSkpOwogIGNhZGVuYWluZm89bWFsbG9jKHNpemVvZihjaGFyICpb MTAwXSkpOwogIC8vZmluIGRlIGluaWNpYWxpemFjaW9uCgogIGN5Z19tdXRl eF9pbml0KCZhZGNibG9jayk7CiAgY3lnX3NlbWFwaG9yZV9pbml0KCZzZW1h Zm9yb19uc2FtcGxlcywwKTsKICBjeWdfc2VtYXBob3JlX2luaXQoJnNlbWFm b3JvX0FEQywwKTsKCiAgY3lnX3RocmVhZF9jcmVhdGUoMTAsIHNhbXBsZXNf cHJvZ3JhbSwgKGN5Z19hZGRyd29yZF90KSAwLAoJCSAgICAgICJIaWxvIHBh cmEgQUQ3NjU0IGRlIEFOQUxPRyIsICh2b2lkICopIHN0YWNrWzBdLFNUQUNL X1NJWkUsCgkJICAgICAgJnNhbXBsZXNfdGhyZWFkLCZ0aHJlYWRfc1swXSk7 IAogIGN5Z190aHJlYWRfY3JlYXRlKDEwLHdlYnNlcnZlciwwLAoJCSAgICAi dGhyZWFkIiwgJnN0YWNrWzFdLFNUQUNLX1NJWkUsCgkJICAgICZodHRwX3Ro cmVhZCwmdGhyZWFkX3NbMV0pOwoKICBjeWdfdGhyZWFkX3Jlc3VtZShodHRw X3RocmVhZCk7IAogIGN5Z190aHJlYWRfcmVzdW1lKHNhbXBsZXNfdGhyZWFk KTsKCn0KCg== ------=_Part_75940_27285329.1173993531197 Content-Type: text/x-chdr; name=html.h; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezboxhpv Content-Disposition: attachment; filename="html.h" Content-length: 3034 LyoKY2hhciB2cGFnZV9pbmRleFtdPSI8SFRNTD48SEVBRD4gPHRpdGxlPkNv bnRhZG9yIGRlIEVuZXJnaWEgRWxlY3RyaWNhIHYxLjEgPC90aXRsZT4gPC9I RUFEPiA8Qk9EWT4KPFNDUklQVD5kb2N1bWVudC53cml0ZShcIjxIMz5UaXBv IGRlIG5hdmVnYWRvciA6IFtcIisgbmF2aWdhdG9yLmFwcE5hbWUgK1wiLCAg VmVyc2lvblwiK25hdmlnYXRvci5hcHBWZXJzaW9uK1wiXTwvSDM+XCIpPC9T Q1JJUFQ+ICAgPEgxPkRhdG9zIGRlIENvbnN1bW8gZGUgRW5lcmdpYTwvSDE+ PHRhYmxlIGFsaWduPVwibGVmdFwiPiA8VEQgYWxpZ249XCJsZWZ0XCI+PEZP Uk0gb25TdWJtaXQ9XCJyZXR1cm4gZmFsc2VcIiAgbmFtZT1cImZvcm1wcnVl YmFcIj4gPHRyPjx0ZD5FbnRyZSBub21icmUgOiA8L3RkPiA8dGQ+PElOUFVU IFRZUEU9XCJ0ZXh0XCIgTkFNRT1cIm5vbWJyZVwiIFNJWkU9IDEwPjwvdGQ+ PC90cj48dHI+PHRkPkVxdWl0b3M8L3RkPjx0ZD48U0VMRUNUIG5hbWU9XCJl cXVpcG9zXCI+PE9QVElPTiB2YWx1ZT1cIjFcIj4xOTIuMTY4LjIuMTwvT1BU SU9OPiA8T1BUSU9OIHZhbHVlPVwiMlwiID4xOTIuMTY4LjIuMjwvT1BUSU9O PjwvdGQ+PC90cj4gPHRyPiA8dGQ+TW9kdWxvIDE8L3RkPiA8dGQ+PElOUFVU IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJvcGNpb24xXCIgYWxpZ249XCJ0 b3BcIj48L3RkPjwvdHI+PFRSPiA8VEQ+UmVnaXN0cmFyPC9URD48VEQ+PElO UFVUIFRZUEU9XCJidXR0b25cIiB2YWx1ZT1cIlJlZ2lzdGVyXCIgb25DbGlj az1cInJlZ2lzdGVyKGRvY3VtZW50LmZvcm1wcnVlYmEubm9tYnJlLnZhbHVl KVwiPjwvVEQ+PC9UUj4KIDwvRk9STT4gIDxUUj48VEQ+PEgzIGFsaWduPVwi bGVmdFwiPkxpbmtzPC9IMz48L1REPiAgPFREPjxBIGhyZWY9XCJtYWlsdG86 ZGVzdGVjbm9AY2lyLm9yZy5jbz9zdWJqZWN0PWluZm9ybWFjaW9uXCIgdGl0 bGU9XCJwcnVlYmFcIiBocmVmPVwiSW5mb3JtYWNpb246IFwiPmRlc3RlY25v QGNpZi5vcmcuY288L0E+PC9URD48L1RSPjwvdGFibGU+CiI7CgoqLwoKCmNo YXIgdnBhZ2VfaW5kZXhbXT0iPEhUTUw+PEhFQUQ+IDx0aXRsZT5Db250YWRv ciBkZSBFbmVyZ2lhIEVsZWN0cmljYSB2MS4xIDwvdGl0bGU+IDwvSEVBRD4g PEJPRFk+CjxTQ1JJUFQ+ZG9jdW1lbnQud3JpdGUoXCI8SDU+VGlwbyBkZSBu YXZlZ2Fkb3IgOiBbXCIrIG5hdmlnYXRvci5hcHBOYW1lICtcIiwgIFZlcnNp b25cIituYXZpZ2F0b3IuYXBwVmVyc2lvbitcIl08L0g1PlwiKTwvU0NSSVBU PjxIMT5Db250YWRvciBkZSBFbmVyZ2lhIHJlbW90bzwvSDE+PFREPjxBIGhy ZWY9XCJtYWlsdG86ZGVzdGVjbm9AY2lyLm9yZy5jbz9zdWJqZWN0PWluZm9y bWFjaW9uXCIgdGl0bGU9XCJwcnVlYmFcIiBocmVmPVwiSW5mb3JtYWNpb246 IFwiPmRlc3RlY25vQGNpZi5vcmcuY288L0E+PC9URD48UD5DYXJnYSBkZSBw cnVlYmEgY29uZmlndXJhZGEgYSAxS3cqaCwgdW5hIHZleiBzZSBhIHV0aWxp emFkbyBsYSBlbmVyZ2lhIGVsIGVxdWlwbyBhcGFnYSBsYSBjYXJnYSByZW1v dGE8L1A+PC9CT0RZPjwvSFRNTD4iOwoKY2hhciB2cGFnZV9mb3JtW109Igo8 dGFibGUgYWxpZ249XCJsZWZ0XCI+IDxURCBhbGlnbj1cImxlZnRcIj48Rk9S TSBvblN1Ym1pdD1cInJldHVybiBmYWxzZVwiICBuYW1lPVwiZm9ybXBydWVi YVwiPiA8dHI+PHRkPkVudHJlIG5vbWJyZSA6IDwvdGQ+IDx0ZD48SU5QVVQg VFlQRT1cInRleHRcIiBOQU1FPVwibm9tYnJlXCIgU0laRT0gMTA+PC90ZD48 L3RyPjx0cj48dGQ+RXF1aXRvczwvdGQ+PHRkPjxTRUxFQ1QgbmFtZT1cImVx dWlwb3NcIj48T1BUSU9OIHZhbHVlPVwiMVwiPjE5Mi4xNjguMi4xPC9PUFRJ T04+IDxPUFRJT04gdmFsdWU9XCIyXCIgPjE5Mi4xNjguMi4yPC9PUFRJT04+ PC90ZD48L3RyPiA8dHI+IDx0ZD5Nb2R1bG8gMTwvdGQ+IDx0ZD48SU5QVVQg dHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIm9wY2lvbjFcIiBhbGlnbj1cInRv cFwiPjwvdGQ+PC90cj48VFI+IDxURD5SZWdpc3RyYXI8L1REPjxURD48SU5Q VVQgVFlQRT1cImJ1dHRvblwiIHZhbHVlPVwiUmVnaXN0ZXJcIiBvbkNsaWNr PVwicmVnaXN0ZXIoZG9jdW1lbnQuZm9ybXBydWViYS5ub21icmUudmFsdWUp XCI+PC9URD48L1RSPgogPC9GT1JNPiAgPFRSPjxURD48SDMgYWxpZ249XCJs ZWZ0XCI+TGlua3M8L0gzPjwvVEQ+PC9UUj48L3RhYmxlPgoiOwoKY2hhciB2 cGFnZV9jaWVycmVbXT0KIjwvQk9EWT48L0hUTUw+IjsK ------=_Part_75940_27285329.1173993531197--