[From nobody Mon Dec 24 19:06:43 2018
Return-Path: &lt;apache-modules-return-4871-gavin=openfusion.com.au@covalent.net&gt;
Delivered-To: gavin@openfusion.com.au
Received: (qmail 23993 invoked by uid 364); 14 Jan 2005 11:35:38 -0000
Received: from granite.openfusion.com.au (HELO mattock.openfusion.com.au)
 (10.10.10.1) by granite.openfusion.com.au (qpsmtpd/0.28) with ESMTP;
 Fri, 14 Jan 2005 22:35:38 +1100
Received: by mattock.openfusion.com.au with ODMR (ATRN);
 Fri, 14 Jan 2005 12:08:09 -0000
X-ODMR-Delivered-To: gavin@openfusion.com.au
Received: (qmail 14275 invoked by uid 364); 14 Jan 2005 12:06:48 -0000
Received: from 69-225-174-131.ded.pacbell.net (HELO mail.covalent.net)
 (69.225.174.131)
 by mattock.openfusion.com.au (qpsmtpd/0.28) with SMTP;
 Fri, 14 Jan 2005 23:06:45 +1100
Received: (qmail 22615 invoked by alias); 14 Jan 2005 11:33:48 -0000
Mailing-List: contact apache-modules-help@covalent.net; run by ezmlm
Precedence: bulk
List-Post: &lt;mailto:apache-modules@covalent.net&gt;
List-Help: &lt;mailto:apache-modules-help@covalent.net&gt;
List-Unsubscribe: &lt;mailto:apache-modules-unsubscribe@covalent.net&gt;
List-Subscribe: &lt;mailto:apache-modules-subscribe@covalent.net&gt;
Reply-To: apache-modules@covalent.net
Delivered-To: mailing list apache-modules@covalent.net
Received: (qmail 28948 invoked from network); 14 Jan 2005 11:33:48 -0000
Date: Fri, 14 Jan 2005 12:33:36 +0100 (CET)
From: Tim Verhoeven &lt;dj@rootshell.be&gt;
To: apache-modules@covalent.net
Message-ID: &lt;Pine.LNX.4.61.0501141226320.17368@phenix.rootshell.be&gt;
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY=&quot;8323328-728524536-1099318783=:28350&quot;
Content-ID: &lt;Pine.LNX.4.61.0411011523170.28350@phenix.rootshell.be&gt;
X-pstn-levels: (S:40.69433/99.90000 R:95.9108 P:95.9108 M:97.0232 C:98.7678 )
X-pstn-settings: 4 (1.5000:1.5000) s gt3 gt2 gt1 r p m c 
X-pstn-addresses: from &lt;dj@rootshell.be&gt; [33/1] 
Subject: [apache-modules] mod_bandwidth2 v0.3 - bandwidth control module for
 Apache2
X-Spam-Score: 0.1/4.0
X-Spam-Report: Spam detection software,
 running on the system &quot;mail.mailhost.com.au&quot;, has
X-Spam-Report: identified this incoming email as possible spam. The original
 message
X-Spam-Report: has been attached to this so you can view it (if it isn't spam)
 or label
X-Spam-Report: similar future email.  If you have any questions, see
X-Spam-Report: the administrator of that system for details.
X-Spam-Report: 
X-Spam-Report: Content preview:  Hello,
 Attached is version 0.3 of my bandwidth control
X-Spam-Report: module for Apache2. It has seen some updates and plenty of
 testing
X-Spam-Report: since the 0.1 version I posted here. It is now also running on
 a couple
X-Spam-Report: of production websites without any issues so for. [...] 
X-Spam-Report: 
X-Spam-Report: Content analysis details:   (0.1 points, 4.0 required)
X-Spam-Report: 
X-Spam-Report: pts rule name              description
X-Spam-Report: ---- ----------------------
 --------------------------------------------------
X-Spam-Report: 0.1 FORGED_RCVD_HELO       Received: contains a forged HELO
X-Spam-Report: 
X-Spamhandler-Score: 0.1

--8323328-728524536-1099318783=:28350
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; FORMAT=flowed
Content-ID: &lt;Pine.LNX.4.61.0411011523171.28350@phenix.rootshell.be&gt;

Hello,

Attached is version 0.3 of my bandwidth control module for Apache2. It has 
seen some updates and plenty of testing since the 0.1 version I posted 
here. It is now also running on a couple of production websites without 
any issues so for.

So feel free to use it yourself. Also all feedback/bugs/remarks/feature 
requests/ideas/... are ofcourse welcome.

One thing I'm still looking for is a good place to host this module. 
Sourceforge seems a bit of overkill for something this small. I guess some 
personal webspace should do. But if anyone has a good idea i'm open to 
suggestions.

Kind regards,
Tim Verhoeven


--
Tim Verhoeven - dj@rootshell.be - 0479 / 88 11 83

/* This is total bullshit: */
         linux-2.6.6/drivers/video/sis/init301.c
--8323328-728524536-1099318783=:28350
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=&quot;mod_bandwidth2.c&quot;
Content-Transfer-Encoding: BASE64
Content-ID: &lt;Pine.LNX.4.61.0501141233360.8325@phenix.rootshell.be&gt;
Content-Description: 
Content-Disposition: attachment; filename=&quot;mod_bandwidth2.c&quot;

LyogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaW0gVmVyaG9ldmVuDQogKg0KICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQog
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCiAq
DQogKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wDQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKi8NCg0KLyoNCiAqIFRoaXMgbW9k
dWxlIGlzIGluc3BpcmVkIGJ5IGZvbGxvd2luZyBwcm9qZWN0cw0KICoNCiAq
IC0gVGhlIEFwYWNoZSBIVFRQRCBzZXJ2ZXIgJiBBUFIgbGlicmFyeQ0KICog
LSBtb2RfYmFuZHdpZHRoDQogKiAtIG1vZF90aHJvdHRsZQ0KICogLSBtb2Rf
YndzaGFyZQ0KICogDQogKiBNeSB0aGFua3MgZ29lcyB0byB0aGUgYXV0aG9y
cyBvZiB0aGVzZSBwcm9qZWN0cyBhcyBhIHNvdXJjZSBvZiBpbnNwaXJhdGlv
bg0KICoNCiAqLw0KDQovKg0KICogVVNBR0UNCiAqID09PT09DQogKiANCiAq
IEV4YW1wbGUgY29uZmlnIChkZXRhaWxlZCBpbmZvIGJlbG93KSA6DQogKiA8
SWZNb2R1bGUgbW9kX2JhbmR3aWR0aDIuYz4NCiAqICAgIFNldE91dHB1dEZp
bHRlciBiYW5kd2lkdGgyDQogKiAgICBCYW5kV2lkdGhQZXJDb25uIDEwMjQw
MA0KICogICAgUGFja2V0U2l6ZSAxNjM4NA0KICogICAgVG90YWxCYW5kV2lk
dGggMjUwMDAwMA0KICogICAgTWF4Q29ubmVjdGlvbnMgNQ0KICogICAgTWlu
Rmlyc3RXYWl0IDENCiAqICAgIE1heEZpcnN0V2FpdCAyDQogKiAgICBNaW5T
ZWNvbmRXYWl0IDINCiAqICAgIE1heFNlY29uZFdhaXQgNQ0KICogPC9JZk1v
ZHVsZT4NCiAqDQogKiAgICANCiAqIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDoN
CiAqIA0KICogQmFuZFdpZHRoUGVyQ29ubiA6IFNldCB0aGUgYmFuZHdpZHRo
IHBlciBjb25uZWN0aW9uIGluIGJ5dGVzIHBlciBzZWNvbmQgKEJwcykNCiAq
IFBhY2tldFNpemUgOiAgICAgICBTZXQgdGhlIHBhY2tldHNpemUgdXNlZCBp
biB0aHJvdHRsaW5nIGluIGJ5dGVzIChCKQ0KICogVG90YWxCYW5kV2lkdGgg
OiAgIFNldCB0aGUgbWF4aW11bSBiYW5kd2lkdGggdXNlZCBieSB0aGUgY29t
cGxldGUgc2VydmVyIGluIGJ5dGVzIHBlciBzZWNvbmQgKEJwcykNCiAqIE1h
eENvbm5lY3Rpb25zIDogICBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNv
bmN1cnJlbnQgY29ubmVjdGlvbnMNCiAqIE1pbkZpcnN0V2FpdCA6ICAgICBT
ZXQgdGhlIG1pbmltdW0gd2FpdCB0aW1lIHdoZW4gb3ZlciBhIGxpbWl0IGZv
ciBhIGZpcnN0IHRpbWUgKHNlY29uZHMpDQogKiBNYXhGaXJzdFdhaXQgOiAg
ICAgU2V0IHRoZSBtYXhpbXVtIHdhaXQgdGltZSB3aGVuIG92ZXIgYSBsaW1p
dCBmb3IgYSBmaXJzdCB0aW1lIChzZWNvbmRzKQ0KICogTWluU2Vjb25kV2Fp
dCA6ICAgIFNldCB0aGUgbWF4aW11bSB3YWl0IHRpbWUgd2hlbiBvdmVyIGEg
bGltaXQgZm9yIGEgc2Vjb25kIHRpbWUgKHNlY29uZHMpDQogKiBNYXhTZWNv
bmRXYWl0IDogICAgU2V0IHRoZSBtYXhpbXVtIHdhaXQgdGltZSB3aGVuIG92
ZXIgYSBsaW1pdCBmb3IgYSBzZWNvbmQgdGltZSAoc2Vjb25kcykNCiAqDQog
Kg0KICogTW9kdXMgb3BlcmFuZGkgKGhvdyBkb2VzIGFsbCB0aGlzIHdvcmsg
PykgOg0KICogDQogKiBUaGlzIG1vZHVsZSBwcm92aWRlcyAzIGZ1bmN0aW9u
cy4gVGhlIGZpcnN0IG9uZSBpcyB0aHJvdHRsaW5nLiBUaGlzIG1lYW5zDQog
KiB0aGF0IGVhY2ggY29ubmVjdGlvbi9kb3dubG9hZC8uLi4gd2lsbCBiZSBs
aW1pdGVkIHRvIGEgY2VydGFpbiBiYW5kd2l0aC4NCiAqIFRoaXMgYmFuZHdp
ZHRoIGlzIGNvbnRyb2xsZWQgd2l0aCB0aGUgIkJhbmRXaWR0aFBlckNvbm4i
IHBhcmFtZXRlci4NCiAqIA0KICogVGhlIHNlY29uZCBmdW5jdGlvbiBpcyBh
IGxpbWl0YXRpb24gb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBhY3Rp
dmUgYXQNCiAqIG9uZSBtb21lbnQuIFRoaXMgaXMgY29udHJvbGxlZCB3aXRo
IHRoZSAiTWF4Q29ubmVjdGlvbnMiIHBhcmFtZXRlci4gVGhlDQogKiB0aGly
ZCBmdW5jdGlvbiBpcyBhIGxpbWl0IG9uIHRoZSB0b3RhbCBiYW5kd2lkdGgg
dXNlZCBieSB0aGUgc2VydmVyLiBUaGlzDQogKiBsaW1pdCBpcyBjb250cm9s
bGVkIHdpdGggdGhlICJUb3RhbEJhbmRXaWR0aCIgcGFyYW1ldGVyLg0KICoN
CiAqIFRoZW4gdGhlIGxpbWl0IG9mIGFjdGl2ZSBjb25uZWN0aW9ucyBvciB0
b3RhbCBiYW5kd2lkdGggaXMgcmVhY2hlZCB3ZSBmaXJzdA0KICogZGVsYXkg
dGhlIGNvbm5lY3Rpb24gYmV0d2VlbiAiTWluRmlyc3RXYWl0IiBhbmQgIk1h
eEZpcnN0V2FpdCIgc2Vjb25kcy4gSWYNCiAqIGFueSBsaW1pdCBpcyBzdGls
bCByZWFjaGVkIHdlIHdhaXQgYmV0d2VlbiAiTWluU2Vjb25kV2FpdCIgYW5k
DQogKiAiTWF4U2Vjb25kV2FpdCIgc2Vjb25kcy4gSWYgd2UgdGhlbiBhcmUg
c3RpbGwgb3ZlciBhIGxpbWl0IHdlIGRyb3AgdGhlDQogKiBjb25uZWN0aW9u
Lg0KICoNCiAqIFNpbmNlIHZlcnNpb24gMC4zIGFsbCBwYWdlcyB3aXRoIGEg
c3RhdHVzIGNvZGUgYWJvdmUgMjk5IHdpbGwgYmUgcGFzc2VkDQogKiB3aXRo
b3V0IGNoZWNraW5nIHRoZSBNYXhDb25uZWN0aW9ucyBhbmQgVG90YWxCYW5k
d2lkdGguIFRoaXMgYWxsb3dzIGVycm9yDQogKiBwYWdlcyB0byBhbHdheXMg
YmUgcGFzc2VkIHRvIHRoZSBjbGllbnQuDQogKiANCiAqIENvbnRhY3QgOiAN
CiAqDQogKiBGb3IgYW55IHF1ZXN0aW9ucywgYnVncywgaWRlYXMsIHN1Z2dl
c3Rpb25zLCAuLi4gcGxlYXNlIGNvbnRhY3QgbWUgYnkgYXQgOg0KICogZGpA
cm9vdHNoZWxsLmJlDQogKg0KICogVGltIFZlcmhvZXZlbg0KICovDQoNCg0K
I2RlZmluZSBWRVJTSU9OICIwLjMiDQoNCg0KI2luY2x1ZGUgImFwcl9idWNr
ZXRzLmgiDQojaW5jbHVkZSAiYXByX3N0cmluZ3MuaCINCiNpbmNsdWRlICJh
cHJfYXRvbWljLmgiDQojaW5jbHVkZSAiYXByX3NobS5oIg0KI2luY2x1ZGUg
ImFwX2NvbmZpZy5oIg0KI2luY2x1ZGUgInV0aWxfZmlsdGVyLmgiDQojaW5j
bHVkZSAiYXBfbXBtLmgiDQojaW5jbHVkZSAiaHR0cGQuaCINCiNpbmNsdWRl
ICJodHRwX2NvbmZpZy5oIg0KI2luY2x1ZGUgImh0dHBfcmVxdWVzdC5oIg0K
I2luY2x1ZGUgImh0dHBfY29yZS5oIg0KI2luY2x1ZGUgImh0dHBfcHJvdG9j
b2wuaCINCiNpbmNsdWRlICJodHRwX2xvZy5oIg0KI2luY2x1ZGUgImh0dHBf
bWFpbi5oIg0KI2luY2x1ZGUgInV0aWxfc2NyaXB0LmgiDQojaW5jbHVkZSAi
aHR0cF9jb3JlLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KI2luY2x1ZGUgInNjb3Jl
Ym9hcmQuaCINCiNpbmNsdWRlIDx0aW1lLmg+DQoNCg0KI2RlZmluZSBCV19E
RUJVRw0KI2lmZGVmIEJXX0RFQlVHDQovLyAjdW5kZWYgQldfREVCVUcNCiNl
bmRpZg0KDQojZGVmaW5lIEJXX1NITQ0KI2lmZGVmIEJXX1NITQ0KLy8gI3Vu
ZGVmIEJXX1NITQ0KI2VuZGlmDQoNCg0KLyoNCiAqIERlZmF1bHQgcGFyYW1l
dGVyIHZhbHVlcw0KICovDQojZGVmaW5lIERFRkFVTFRfUEFDS0VUIDE2Mzg0
ICAgICAgICAvLyBEZWZhdWx0IGZvciBQYWNrZXRTaXplICgxNkspDQojZGVm
aW5lIERFRkFVTFRfQldDT05OIDEwMjQwMCAgICAgICAvLyBEZWZhdWx0IGZv
ciBCYW5kV2lkdGhQZXJDb25uICgxMDBLQnBzKQ0KI2RlZmluZSBERUZBVUxU
X1RPVEFMQlcgMTMxMDcyMDAgICAgLy8gRGVmYXVsdCBmb3IgVG90YWxCYW5k
V2lkdGggKDEwME1icHMpDQojZGVmaW5lIERFRkFVTFRfTUFYQ09OTiAxNDAg
ICAgICAgICAvLyBEZWZhdWx0IGZvciBNYXhDb25uZWN0aW9ucyAoMTQwIGNv
bm5lY3Rpb25zKQ0KI2RlZmluZSBERUZBVUxUX01JTkZJUlNUV0FJVCAxICAg
ICAgLy8gRGVmYXVsdCBmb3IgTWluRmlyc3RXYWl0ICgxIHNlY29uZCkNCiNk
ZWZpbmUgREVGQVVMVF9NQVhGSVJTVFdBSVQgMiAgICAgIC8vIERlZmF1bHQg
Zm9yIE1heEZpcnN0V2FpdCAoMSBzZWNvbmQpDQojZGVmaW5lIERFRkFVTFRf
TUlOU0VDT05EV0FJVCAyICAgICAvLyBEZWZhdWx0IGZvciBNaW5TZWNvbmRX
YWl0ICgyIHNlY29uZHMpDQojZGVmaW5lIERFRkFVTFRfTUFYU0VDT05EV0FJ
VCA1ICAgICAvLyBEZWZhdWx0IGZvciBNYXhTZWNvbmRXYWl0ICgzIHNlY29u
ZHMpDQoNCm1vZHVsZSBBUF9NT0RVTEVfREVDTEFSRV9EQVRBIGJ3Ml9tb2R1
bGU7DQoNCg0KLyoNCiAqIFN0cnVjdCB0aGF0IGNvbnRhaW5zIGNvbnRleHQg
aW5mb3JtYXRpb24NCiAqLw0KdHlwZWRlZiBzdHJ1Y3QgY3R4X3N0cnVjdF90
IHsNCiAgICBhcHJfYnVja2V0X2JyaWdhZGUgKmJiOw0KICAgIHN0cnVjdCB0
aW1ldmFsIHdhaXQ7DQp9IGN0eF9zdHJ1Y3Q7DQoNCg0KLyoNCiAqIFN0cnVj
dCB0aGF0IGNvbnRhaW5zIGFsbCBjb25maWcgcGFyYW1ldGVycw0KICovDQp0
eXBlZGVmIHN0cnVjdCBid19maWx0ZXJfY29uZmlnX3QNCnsNCiAgICBsb25n
IGludCBid3BlcmNvbm47DQogICAgbG9uZyBpbnQgdG90YWxidzsNCiAgICBp
bnQgYndwYWNrZXQ7DQogICAgaW50IG1heGNvbm47DQogICAgaW50IG1pbmZp
cnN0d2FpdDsNCiAgICBpbnQgbWF4Zmlyc3R3YWl0Ow0KICAgIGludCBtaW5z
ZWNvbmR3YWl0Ow0KICAgIGludCBtYXhzZWNvbmR3YWl0Ow0KfSBid19maWx0
ZXJfY29uZmlnOw0KDQoNCi8qDQogKg0KICovDQp0eXBlZGVmIHN0cnVjdCBi
d19zdGF0c190DQp7DQogICAgYXByX3RpbWVfdCBsYXN0dXBkYXRlOw0KICAg
IHZvbGF0aWxlIGludCBsb2NrOw0KICAgIGRvdWJsZSBid191c2VkOw0KICAg
IGxvbmcgaW50IGJ5dGVzX2RsOw0KLy8gICAgaW50IGFjdGl2ZTsNCiAgICB1
bnNpZ25lZCBpbnQgYndfYnl0ZXNfZGw7DQogICAgaW50IGJ3X2FjdGl2ZTsN
Cn0gYndfc3RhdHM7DQoNCg0KLy8gTmVlZGVkIGZvciB0b3RhbCBiYW5kd2lk
dGggbW9uaXRvcmluZw0KLy8gVGhleSBhcmUgb25seSByZWFkIHNvIHRoZXkg
YXJlIHRocmVhZC1zYWZlDQppbnQgc2VydmVyX2xpbWl0LCB0aHJlYWRfbGlt
aXQ7DQoNCiNpZmRlZiBCV19TSE0NCi8vIFRoaXMgb25lIGlzIG5lZWRzIHdp
bGwgYmUgdXBkYXRlZCBzbyBwcm90ZWN0aW9uIGlzIG5lZWRlZA0KYndfc3Rh
dHMgKmJ3c3RhdDsNCg0KI2RlZmluZSBTSEFSRURfU0laRSAoYXByX3NpemVf
dCkoc2l6ZW9mKGJ3X3N0YXRzKSoyKQ0KI2RlZmluZSBTSEFSRURfRklMRU5B
TUUgIi90bXAvYXByLmJhbmR3aWR0aC5zaG0iDQojZW5kaWYNCg0KDQpzdGF0
aWMgdm9pZCBidzJfdXBkYXRlX3N0YXRzKGJ3X3N0YXRzICpid3N0YXQsIGFw
cl90aW1lX3Qgbm93dGltZSwgYXBfZmlsdGVyX3QgKmYpIHsNCg0KICAgLy8g
V2UgYXRvbWljYWxseSBjb21wYWlyIGxvY2sgd2l0aCAwLCBpZiAwIHVwZGF0
ZSBsb2NrIHRvIDEuDQogICAvLyBJZiB3ZSBnZXQgYSAwIHRoZSB0aGVyZSB3
YXMgbm8gbG9jayBhbmQgd2UgY2FuIGNvbnRpbnVlIHVwZGF0aW5nDQogICBp
ZiAoIGFwcl9hdG9taWNfY2FzKCAmYndzdGF0LT5sb2NrLCAxLCAwICkgPT0g
MCApIHsNCg0KICAgICAgLy8gT2ssIHdlIGFyZSBub3cgc2FmZSB0byB1cGRh
dGUgc3R1ZmYNCg0KICAgICAgLy8gQ2FsY3VsYXRlIGJ3IHVzZWQgaW4gdGhl
IGxhc3QgdGltZWludGVydmFsDQogICAgICBid3N0YXQtPmJ3X3VzZWQgPSAo
YndzdGF0LT5id19ieXRlc19kbCAtIGJ3c3RhdC0+Ynl0ZXNfZGwpIC8gKCAo
ZG91YmxlKShub3d0aW1lIC0gYndzdGF0LT5sYXN0dXBkYXRlKSAvIDEwMDAw
MDAgKSA7IA0KICAgICAgLy8gVXBkYXRlIGJ5dGVzX2RsIHRvIGN1cnJlbnQg
c3RhdHMNCiAgICAgIGJ3c3RhdC0+Ynl0ZXNfZGwgPSBid3N0YXQtPmJ3X2J5
dGVzX2RsOw0KDQogICAgICAvLyBVcGRhdGUgYWN0aXZlIHRvIGN1cnJlbnQg
bnVtYmVyIG9mIGFjdGl2ZSBjb25uZWN0aW9ucw0KICAgICAgLy9id3N0YXQt
PmFjdGl2ZSA9IGJ1c3k7DQoNCiAgICAgIC8vIERvbmUgdXBkYXRpbmcsIHVw
ZGF0ZSB0aW1lc3RhbXANCiAgICAgIGJ3c3RhdC0+bGFzdHVwZGF0ZSA9IGFw
cl90aW1lX25vdygpOw0KDQogICAgICAvLyBVcGRhdGUgZG9uZSwgcmVsZWFz
ZSBsb2NrDQogICAgICBhcHJfYXRvbWljX3NldCggJmJ3c3RhdC0+bG9jaywg
MCApOw0KICAgfQ0KfQ0KDQovKg0KICogVGhlIG1haW4gZnVuY3Rpb24sIHRo
aXMgb25lIGRvZXMgYWxsIHRoZSBtYWdpYw0KICovDQpzdGF0aWMgaW50IGJ3
Ml9maWx0ZXIoYXBfZmlsdGVyX3QgKmYsIGFwcl9idWNrZXRfYnJpZ2FkZSAq
YmIpDQp7DQogICAgYXByX3N0YXR1c190IHN0YXR1czsNCiAgICBjdHhfc3Ry
dWN0ICpjdHggPSBmLT5jdHg7DQogICAgYXByX2J1Y2tldCAqYiA9IEFQUl9C
UklHQURFX0ZJUlNUKGJiKTsNCiAgICBhcHJfcG9vbF90ICpwID0gZi0+ci0+
cG9vbDsNCiAgICBhcHJfYnVja2V0X2FsbG9jX3QgKmJ1Y2tldF9hbGxvYzsN
CiAgICBzdHJ1Y3QgdGltZXZhbCB3YWl0Ow0KICAgIGFwcl9zaXplX3QgZ2V0
bGVuOw0KICAgIGJ1Y2tldF9hbGxvYyA9IGFwcl9idWNrZXRfYWxsb2NfY3Jl
YXRlKHApOw0KICAgIGFwcl9zaG1fdCAqc2htOw0KICAgIGJ3X2ZpbHRlcl9j
b25maWcgKmMgPSBhcF9nZXRfbW9kdWxlX2NvbmZpZyhmLT5yLT5zZXJ2ZXIt
Pm1vZHVsZV9jb25maWcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmJ3Ml9tb2R1bGUpOw0KICAgIGFw
cl90aW1lX3Qgbm93dGltZSwgc2F2ZXRpbWU7DQogICAgdW5zaWduZWQgaW50
IGJ5dGVzc3RhcnQsIGJ5dGVzZW5kOw0KDQoNCiAgICAvLyBTZXR1cCBjb250
ZXh0IG9mIG5vdCBhbHJlYWR5IGRvbmUNCiAgICBpZiAoY3R4ID09IE5VTEwp
IHsNCiAgICAgICAgZi0+Y3R4ID0gY3R4ID0gYXByX3BjYWxsb2MoZi0+ci0+
cG9vbCwgc2l6ZW9mKCpjdHgpKTsNCiAgICAgICAgY3R4LT5iYiA9IGFwcl9i
cmlnYWRlX2NyZWF0ZShmLT5yLT5wb29sLCBidWNrZXRfYWxsb2MpOw0KICAg
IH0NCg0KICAgIC8vIENhbGN1bGF0ZSBkZWxheSBmb3IgdGhyb3R0bGluZyAt
IHByb2JhYmx5IG5lZWRzIHRvIG1vdmUgYSBiaXQgbG93ZXINCiAgICB3YWl0
LnR2X3VzZWM9KGxvbmcgaW50KSAoICggKGRvdWJsZSljLT5id3BhY2tldCAv
IChjLT5id3BlcmNvbm4gKiAxLjAwKSApICogMTAwMDAwMCApOw0KICAgIGN0
eC0+d2FpdCA9IHdhaXQ7DQoNCiNpZmRlZiBCV19TSE0NCiAgICAvLyBJZiBz
dGF0cyBvcmUgbW9yZSB0aGVuIDEgc2Vjb25kIG9sZCwgdXBkYXRlIHRoZW0N
CiAgICBub3d0aW1lID0gYXByX3RpbWVfbm93KCk7DQogICAgaWYgKCBid3N0
YXQtPmxhc3R1cGRhdGUgPCAobm93dGltZSAtIDEwMDAwMDApICkgew0KICAg
ICAgIGJ3Ml91cGRhdGVfc3RhdHMoYndzdGF0LCBub3d0aW1lLCBmKTsNCiAg
ICB9DQojZW5kaWYNCg0KICAgIC8vIFNraXAgdGVzdHMgaWYgd2UgYXJlIGhh
bmRsaW5nIGEgZXJyb3IgcGFnZSAoc3RhdHVzIGNvZGUgPiAyOTkpDQoNCiAg
ICBpZiAoIGYtPnItPnN0YXR1cyA8IDI5OSkgeyANCg0KICAgICAgIC8vIEhl
cmUgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSB0b3RhbCBidyBvciBtYXggY29u
bmVjdGlvbnMgaXNuJ3QgcmVhY2hlZA0KDQogICAgICAgLy8gRmlyc3QgdGVz
dA0KICAgICAgIGlmICggKGJ3c3RhdC0+YndfdXNlZCA+IGMtPnRvdGFsYncp
IHx8IChid3N0YXQtPmJ3X2FjdGl2ZSA+PSBjLT5tYXhjb25uKSApIHsNCg0K
ICAgICAgICAgIC8vIFNsZWVwIGJldHdlZW4gTWluRmlyc3RXYWl0IGFuZCBN
YXhGaXN0V2FpdCBzZWNvbmRzDQogICAgICAgICAgYXByX3NsZWVwKCAoYy0+
bWluZmlyc3R3YWl0ICogMTAwMDAwMCkgKyAoaW50KSggKGMtPm1heGZpcnN0
d2FpdCAtIGMtPm1pbmZpcnN0d2FpdCkgKiAxMDAwMDAwICogKCByYW5kKCkg
LyBSQU5EX01BWCkgKSApOw0KDQogICAgICAgICAgLy8gU2Vjb25kIHRlc3QN
Cg0KICAgICAgICAgIC8vIFVwZGF0ZSBzdGF0cyBmaXJzdA0KICAgICAgICAg
IG5vd3RpbWUgPSBhcHJfdGltZV9ub3coKTsNCiAgICAgICAgICBidzJfdXBk
YXRlX3N0YXRzKGJ3c3RhdCwgbm93dGltZSwgZik7DQogICAgICAgICAgLy8g
RG8gdGhlIGNoZWNrIGFnYWluDQogICAgICAgICAgaWYgKCAoYndzdGF0LT5i
d191c2VkID4gYy0+dG90YWxidykgfHwgKGJ3c3RhdC0+YndfYWN0aXZlID49
IGMtPm1heGNvbm4pICkgew0KDQogICAgICAgICAgICAgLy8gU2xlZXAgYmV0
d2VlbiBNaW5TZWNvbmRXYWl0IGFuZCBNYXhTZWNvbmRXYWl0DQogICAgICAg
ICAgICAgYXByX3NsZWVwKCAoYy0+bWluc2Vjb25kd2FpdCAqIDEwMDAwMDAp
ICsgKGludCkoIChjLT5tYXhzZWNvbmR3YWl0IC0gYy0+bWluZmlyc3R3YWl0
KSAqIDEwMDAwMDAgKiAoIHJhbmQoKSAvIFJBTkRfTUFYKSApICk7DQoNCiAg
ICAgICAgICAgICAvLyBUaGlyZCB0ZXN0DQogICAgICAgICAgICAgLy8gVXBk
YXRlIHN0YXRzIGZpcnN0DQogICAgICAgICAgICAgbm93dGltZSA9IGFwcl90
aW1lX25vdygpOw0KICAgICAgICAgICAgIGJ3Ml91cGRhdGVfc3RhdHMoYndz
dGF0LCBub3d0aW1lLCBmKTsNCiAgICAgICAgICAgICAvLyBEbyB0aGUgY2hl
Y2sgYWdhaW4NCg0KICAgICAgICAgICAgIGlmICggKGJ3c3RhdC0+YndfdXNl
ZCA+IGMtPnRvdGFsYncpIHx8IChid3N0YXQtPmJ3X2FjdGl2ZSA+PSBjLT5t
YXhjb25uKSApIHsNCg0KICAgICAgICAgICAgICAgIC8vIFN0aWxsIG92ZXIg
YSBsaW1pdCwgZGVueSBjb25uZWN0aW9uDQogICAgICAgICAgICAgICAgcmV0
dXJuIEhUVFBfU0VSVklDRV9VTkFWQUlMQUJMRTsNCiAgICAgICAgICAgICB9
DQogICAgICAgICAgfQ0KICAgICAgIH0NCg0KICAgIH0NCg0KICAgIC8vIEFs
bCBjaGVja3Mgb2ssIHN0YXJ0IHRocm90dGxpbmcgYW5kIHVwZGF0ZSBid19h
Y3RpdmUgY291bnRlcg0KICAgIGFwcl9hdG9taWNfaW5jKCAmYndzdGF0LT5i
d19hY3RpdmUgKTsNCg0KICAgIC8vIEhlcmUgd2UgZG8gdGhlIGFjdHVhbCB0
aHJvdGxpbmcNCg0KICAgIC8vIEFzIGxvbmcgYXMgd28gZG9udCByZWFjaCBh
IHNlbnRpbmVsIHdlIGRpdmlkZSB0aGUgYnJpZ2FkZSBpbnRvIGtub3cgc2l6
ZSBwb3J0aW9ucw0KICAgIHdoaWxlIChiICE9IEFQUl9CUklHQURFX1NFTlRJ
TkVMKGJiKSkgew0KICAgICAgICBjb25zdCBjaGFyICpzdHI7DQoNCiAgICAg
ICAgLy8gSWYgdGhlIGJ1Y2tldCBpbmRpY2F0ZSBFT1MgcGFzcyBpdCBvbiBh
bmQgc3RvcA0KICAgICAgICBpZiAoQVBSX0JVQ0tFVF9JU19FT1MoYikgfHwg
QVBSX0JVQ0tFVF9JU19GTFVTSChiKSkgew0KICAgICAgICAgICAgQVBSX0JV
Q0tFVF9SRU1PVkUoYik7DQogICAgICAgICAgICBBUFJfQlJJR0FERV9JTlNF
UlRfVEFJTChjdHgtPmJiLCBiKTsNCiAgICAgICAgICAgIGFwX3Bhc3NfYnJp
Z2FkZShmLT5uZXh0LCBjdHgtPmJiKTsNCg0KICAgICAgICAgICAgLy8gRG9u
J3QgZm9yZ2V0IHRvIGRlY3JlYXNlIGFjdGl2ZSBjb3VudGVyIDotKQ0KICAg
ICAgICAgICAgYXByX2F0b21pY19kZWMoICZid3N0YXQtPmJ3X2FjdGl2ZSAp
Ow0KICAgICAgICAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOw0KICAgICAgICB9
DQoNCiAgICAgICAgLy8gUmVhZCBhIGJ1Y2tldCBlbiBnZXQgaXQncyBzaXpl
IChnZXRsZW4pDQogICAgICAgIGFwcl9idWNrZXRfcmVhZChiLCAmc3RyLCAm
Z2V0bGVuLCBBUFJfTk9OQkxPQ0tfUkVBRCk7DQoNCiAgICAgICAgLy8gQXMg
bG9uZyBhcyB3ZSBoYXZlbid0IHNlbmQgdGhlIGNvbXBsZXRlIGJ1Y2tldA0K
ICAgICAgICB3aGlsZSAoZ2V0bGVuID4gYy0+YndwYWNrZXQpIHsNCg0KICAg
ICAgICAgICAgLy8gU3BsaXQgdGhlIGJ1Y2tldA0KICAgICAgICAgICAgYXBy
X2J1Y2tldF9zcGxpdChiLCBjLT5id3BhY2tldCk7DQoNCiAgICAgICAgICAg
IC8vIE1vdmUgaXQgdG8gdGhlIG5leHQgYnJpZ2FkZQ0KICAgICAgICAgICAg
QVBSX0JVQ0tFVF9SRU1PVkUoYik7DQogICAgICAgICAgICBBUFJfQlJJR0FE
RV9JTlNFUlRfVEFJTChjdHgtPmJiLCBiKTsNCg0KICAgICAgICAgICAgLy8g
U3Vic3RyYWN0IHRoZSBwYWNrZXRzaXplIGZyb20gdGhlIGxlbmd0aCBvZiB0
aGUgYnVja2V0DQogICAgICAgICAgICBnZXRsZW4gLT0gYy0+YndwYWNrZXQ7
DQoNCiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZ2xvYmFsIGJ5dGVjb3Vu
dGVyDQogICAgICAgICAgICBhcHJfYXRvbWljX2FkZCggJmJ3c3RhdC0+Yndf
Ynl0ZXNfZGwsIGMtPmJ3cGFja2V0ICk7DQoNCiAgICAgICAgICAgIC8vIFdh
aXQgdG8gZ2V0IHRoZSBjb25maWd1cmVkIGJhbmR3aWR0aA0KICAgICAgICAg
ICAgYXByX3NsZWVwKHdhaXQudHZfdXNlYyk7DQoNCiAgICAgICAgICAgIC8v
IEZsdXNoIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGJ1Y2tldA0KICAgICAgICAg
ICAgYXBfZmZsdXNoKGYtPm5leHQsIGN0eC0+YmIpOw0KICAgICAgICAgICAg
YiA9IEFQUl9CUklHQURFX0ZJUlNUKGJiKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIC8vIE9uZSBmaW5hbCBidWNrZXQgbGVmdCBvZiBsZW5ndGggc21hbGxl
ciB0aGVuIGMtPmJ3cGFja2V0DQogICAgICAgIC8vIE1vdmUgaXQgdG8gdGhl
IG5leHQgYnJpZ2FkZQ0KCUFQUl9CVUNLRVRfUkVNT1ZFKGIpOw0KICAgICAg
ICBBUFJfQlJJR0FERV9JTlNFUlRfVEFJTChjdHgtPmJiLCBiKTsNCiAgICAg
ICAgYiA9IEFQUl9CUklHQURFX0ZJUlNUKGJiKTsNCg0KICAgICAgICAvLyBV
cGRhdGUgdGhlIGdsb2JhbCBieXRlY291bnRlcg0KICAgICAgICBhcHJfYXRv
bWljX2FkZCggJmJ3c3RhdC0+YndfYnl0ZXNfZGwsIGdldGxlbiApOw0KDQog
ICAgICAgIC8vIFBhc3MgdGhlIGNvbXBsZXRlZCBicmlnYWRlDQogICAgICAg
IGFwX3Bhc3NfYnJpZ2FkZShmLT5uZXh0LCBjdHgtPmJiKTsNCg0KICAgIH0N
Cg0KICAgIC8vIFdlcmUgZG9uZSwgZGVjcmVhc2UgYWN0aXZlIGNvdW50ZXIN
CiAgICBhcHJfYXRvbWljX2RlYyggJmJ3c3RhdC0+YndfYWN0aXZlICk7DQoN
CiAgICByZXR1cm4gQVBSX1NVQ0NFU1M7CQ0KfQ0KDQoNCi8qDQogKiBJbml0
IGZ1bmN0aW9uDQogKi8NCnN0YXRpYyBpbnQgYncyX2luaXQoYXByX3Bvb2xf
dCAqcCwgYXByX3Bvb2xfdCAqcGxvZywgYXByX3Bvb2xfdCAqcHRlbXAsDQog
ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9yZWMgKnMpDQp7DQogICAg
YXByX3N0YXR1c190IHN0YXR1czsNCiAgICBhcHJfc2htX3QgKnNobTsNCiAg
ICBhcHJfc2l6ZV90IHJldHNpemU7DQoNCg0KICAgIC8vIEluaXQgQVBSJ3Mg
YXRvbWljIGZ1bmN0aW9ucw0KICAgIHN0YXR1cyA9IGFwcl9hdG9taWNfaW5p
dChwKTsNCiAgICBpZiAoIHN0YXR1cyAhPSBBUFJfU1VDQ0VTUykgcmV0dXJu
IEhUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9SOw0KDQogICAgLy8gTmVlZGVk
IHRvIGdldCB0b3RhbCBieXRlcyBkb3dubG9hZGVkDQogICAgLy8gSW5pdHMg
dGhlIG1heCBudW1iZXIgb2YgaHR0cGQgcHJvY2Vzc2VzL3RocmVhZHMgcnVu
bmluZw0KICAgIGFwX21wbV9xdWVyeShBUF9NUE1RX0hBUkRfTElNSVRfVEhS
RUFEUywgJnRocmVhZF9saW1pdCk7DQogICAgYXBfbXBtX3F1ZXJ5KEFQX01Q
TVFfSEFSRF9MSU1JVF9EQUVNT05TLCAmc2VydmVyX2xpbWl0KTsNCg0KI2lm
ZGVmIEJXX1NITQ0KICAgIC8vIENyZWF0ZSBzaGFyZWQgbWVtb3J5IGJsb2Nr
DQogICAgc3RhdHVzID0gYXByX3NobV9jcmVhdGUoJnNobSwgU0hBUkVEX1NJ
WkUsIE5VTEwsIHApOw0KICAgIGlmIChzdGF0dXMgIT0gQVBSX1NVQ0NFU1Mp
IHsNCiAgICAgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0VS
UiwgMCwgcywgIm1vZF9iYW5kd2lkdGgyIDogRXJyb3IgY3JlYXRpbmcgc2ht
IGJsb2NrXG4iKTsNCiAgICAgICAgcmV0dXJuIHN0YXR1czsNCiAgICB9DQog
ICAgLy8gQ2hlY2sgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IGJsb2NrDQogICAg
cmV0c2l6ZSA9IGFwcl9zaG1fc2l6ZV9nZXQoc2htKTsNCiAgICBpZiAocmV0
c2l6ZSAhPSBTSEFSRURfU0laRSkgew0KICAgICAgICBhcF9sb2dfZXJyb3Io
QVBMT0dfTUFSSywgQVBMT0dfRVJSLCAwLCBzLCAibW9kX2JhbmR3aWR0aDIg
OiBFcnJvciBhbGxvY2F0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2tcbiIpOw0K
ICAgICAgICByZXR1cm4gc3RhdHVzOw0KICAgIH0NCiAgICAvLyBJbml0IHNo
bSBibG9jaw0KICAgIGJ3c3RhdCA9IGFwcl9zaG1fYmFzZWFkZHJfZ2V0KHNo
bSk7DQogICAgaWYgKGJ3c3RhdCA9PSBOVUxMKSB7DQogICAgICAgIGFwX2xv
Z19lcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIDAsIHMsICJtb2RiYW5k
d2lkdGgyIDogRXJyb3IgY3JlYXRpbmcgc3RhdHVzIGJsb2NrLlxuIik7DQog
ICAgICAgIHJldHVybiBzdGF0dXM7DQogICAgfQ0KDQogICAgLy8gVGhpcyBp
bml0cyB0aGUgc3RydWN0IHRoYXQgd2lsbCBjb250YWluIGN1cnJlbnQgYncg
dXNlDQogICAgYndzdGF0LT5sYXN0dXBkYXRlID0gYXByX3RpbWVfbm93KCk7
DQogICAgYndzdGF0LT5sb2NrID0gMDsNCiAgICBid3N0YXQtPmJ3X3VzZWQg
PSAwOw0KICAgIGJ3c3RhdC0+Ynl0ZXNfZGwgPSAwOw0KLy8gICAgYndzdGF0
LT5hY3RpdmUgPSAwOw0KICAgIGJ3c3RhdC0+YndfYnl0ZXNfZGwgPSAwOw0K
ICAgIGJ3c3RhdC0+YndfYWN0aXZlID0gMDsNCiNlbmRpZg0KDQogICAgLy8g
V2UgbmVlZCB0byBlbmFibGUgZXh0ZW5kZWQgc3RhdHVzIHRvIGdldCBhbGwg
dGhlIHN0YXRzIHdlIG5lZWQNCiAgICBhcF9leHRlbmRlZF9zdGF0dXMgPSAx
Ow0KDQogICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX05PVElD
RSwgMCwgcywgIm1vZF9iYW5kd2lkdGgyIDogdmVyc2lvbiAlcyAtIGluaXQg
ZG9uZSIsIFZFUlNJT04pOw0KDQogICAgcmV0dXJuIE9LOw0KfQ0KDQoNCi8q
DQogKiBSZWdpc3RlciBidzJfZmlsdGVyIGFzIGEgb3V0cHV0IGZpbHRlcg0K
ICogUmVnaXN0ZXIgYncyX2luaXQgYXMgdGhlIGluaXRpYWxpc2F0aW9uIGZ1
Y3Rpb24NCiAqLw0Kc3RhdGljIHZvaWQgYncyX3JlZ2lzdGVyX2hvb2soYXBy
X3Bvb2xfdCAqcCkNCnsNCiAgICBhcF9yZWdpc3Rlcl9vdXRwdXRfZmlsdGVy
KCJiYW5kd2lkdGgyIiwgYncyX2ZpbHRlciwgTlVMTCwgQVBfRlRZUEVfVFJB
TlNDT0RFKTsNCiAgICBhcF9ob29rX3Bvc3RfY29uZmlnKGJ3Ml9pbml0LCBO
VUxMLCBOVUxMLCBBUFJfSE9PS19NSURETEUpOw0KfQ0KDQoNCi8qDQogKiBJ
bml0aWFsaXphdGlvbiBvZiBtb2R1bGUgY29uZmlnDQogKi8NCnN0YXRpYyB2
b2lkICpjcmVhdGVfYndfc2VydmVyX2NvbmZpZyhhcHJfcG9vbF90ICpwLCBz
ZXJ2ZXJfcmVjICpzKQ0Kew0KICAgIGJ3X2ZpbHRlcl9jb25maWcgKmMgPSBh
cHJfcGNhbGxvYyhwLCBzaXplb2YgKmMpOw0KDQogICAgYy0+YndwZXJjb25u
ID0gREVGQVVMVF9CV0NPTk47DQogICAgYy0+YndwYWNrZXQgPSBERUZBVUxU
X1BBQ0tFVDsNCiAgICBjLT50b3RhbGJ3ID0gREVGQVVMVF9UT1RBTEJXOw0K
ICAgIGMtPm1heGNvbm4gPSBERUZBVUxUX01BWENPTk47DQogICAgYy0+bWlu
Zmlyc3R3YWl0ID0gREVGQVVMVF9NSU5GSVJTVFdBSVQ7DQogICAgYy0+bWF4
Zmlyc3R3YWl0ID0gREVGQVVMVF9NQVhGSVJTVFdBSVQ7DQogICAgYy0+bWlu
c2Vjb25kd2FpdCA9IERFRkFVTFRfTUlOU0VDT05EV0FJVDsNCiAgICBjLT5t
YXhzZWNvbmR3YWl0ID0gREVGQVVMVF9NQVhTRUNPTkRXQUlUOw0KDQogICAg
cmV0dXJuIGM7DQp9DQoNCg0KLyoNCiAqIENhbGxiYWNrIGZ1bmN0aW9uIHRv
IHNldCBQYWNrZXRTaXplIGRpcmVjdGl2ZQ0KICovDQpzdGF0aWMgY29uc3Qg
Y2hhciAqYndfc2V0X3BhY2tldChjbWRfcGFybXMgKmNtZCwgdm9pZCAqY29u
ZmlnLCBjb25zdCBjaGFyICphcmcpDQp7DQogICAgYndfZmlsdGVyX2NvbmZp
ZyAqYyA9IGFwX2dldF9tb2R1bGVfY29uZmlnKGNtZC0+c2VydmVyLT5tb2R1
bGVfY29uZmlnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZidzJfbW9kdWxlKTsNCiAgICBpbnQgaTsN
CiAgICBpID0gYXRvaShhcmcpOw0KICAgIGlmIChpIDwgMCkNCiAgICAgICBy
ZXR1cm4gIlBhY2tldFNpemUgbXVzdCBiZSBsYXJnZXIgdGhlbiAwIjsNCg0K
ICAgIGMtPmJ3cGFja2V0ID0gaTsNCg0KICAgIHJldHVybiBOVUxMOw0KfQ0K
DQoNCi8qDQogKiBDYWxsYmFjayBmdW5jdGlvbiB0byBzZXQgQmFuZHdpZHRo
UGVyQ29ubiBkaXJlY3RpdmUNCiAqLw0Kc3RhdGljIGNvbnN0IGNoYXIgKmJ3
X3NldF9id3BlcmNvbm4oY21kX3Bhcm1zICpjbWQsIHZvaWQgKmNvbmZpZywg
Y29uc3QgY2hhciAqYXJnKQ0Kew0KICAgIGJ3X2ZpbHRlcl9jb25maWcgKmMg
PSBhcF9nZXRfbW9kdWxlX2NvbmZpZyhjbWQtPnNlcnZlci0+bW9kdWxlX2Nv
bmZpZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYncyX21vZHVsZSk7DQogICAgbG9uZyBpbnQgaTsN
CiAgICBpID0gYXRvaShhcmcpOw0KICAgIGlmIChpIDwgMCkNCiAgICAgICBy
ZXR1cm4gIkJhbmRXaWR0aFBlckNvbm4gbXVzdCBiZSBsYXJnZXIgdGhlbiAw
IjsNCg0KICAgIGMtPmJ3cGVyY29ubiA9IGk7DQoNCiAgICByZXR1cm4gTlVM
TDsNCn0NCg0KLyoNCiAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHNldCBUb3Rh
bEJhbmR3aWR0aCBkaXJlY3RpdmUNCiAqLw0Kc3RhdGljIGNvbnN0IGNoYXIg
KmJ3X3NldF90b3RhbGJ3KGNtZF9wYXJtcyAqY21kLCB2b2lkICpjb25maWcs
IGNvbnN0IGNoYXIgKmFyZykNCnsNCiAgICBid19maWx0ZXJfY29uZmlnICpj
ID0gYXBfZ2V0X21vZHVsZV9jb25maWcoY21kLT5zZXJ2ZXItPm1vZHVsZV9j
b25maWcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmJ3Ml9tb2R1bGUpOw0KICAgIGxvbmcgaW50IGk7
DQogICAgaSA9IGF0b2koYXJnKTsNCiAgICBpZiAoaSA8IDApDQogICAgICAg
cmV0dXJuICJUb3RhbCBCYW5kV2lkdGggbXVzdCBiZSBsYXJnZXIgb3IgZXF1
YWwgdG8gMCI7DQoNCiAgICBpZiAoaSA9PSAwICkgew0KICAgICAgIGMtPnRv
dGFsYncgPSBJTlRfTUFYOw0KICAgIH0gZWxzZSB7DQogICAgICAgYy0+dG90
YWxidyA9IGk7DQogICAgfQ0KDQogICAgcmV0dXJuIE5VTEw7DQp9DQoNCi8q
DQogKiBDYWxsYmFjayBmdW5jdGlvbiB0byBzZXQgTWF4Q29ubmVjdGlvbnMg
ZGlyZWN0aXZlDQogKi8NCnN0YXRpYyBjb25zdCBjaGFyICpid19zZXRfbWF4
Y29ubihjbWRfcGFybXMgKmNtZCwgdm9pZCAqY29uZmlnLCBjb25zdCBjaGFy
ICphcmcpDQp7DQogICAgYndfZmlsdGVyX2NvbmZpZyAqYyA9IGFwX2dldF9t
b2R1bGVfY29uZmlnKGNtZC0+c2VydmVyLT5tb2R1bGVfY29uZmlnLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZidzJfbW9kdWxlKTsNCiAgICBsb25nIGludCBpOw0KICAgIGkgPSBh
dG9pKGFyZyk7DQogICAgaWYgKGkgPCAwKQ0KICAgICAgIHJldHVybiAiTWF4
aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbXVzdCBiZSBsYXJnZXIgb3Ig
ZXF1YWwgdG8gMCI7DQoNCiAgICBpZiAoaSA9PSAwKSB7DQogICAgICAgYy0+
bWF4Y29ubiA9IElOVF9NQVg7DQogICAgfSBlbHNlIHsNCiAgICAgICBjLT5t
YXhjb25uID0gaTsNCiAgICB9DQoNCiAgICByZXR1cm4gTlVMTDsNCn0NCg0K
LyoNCiAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHNldCBNaW5GaXJzdFdhaXQg
ZGlyZWN0aXZlDQogKi8NCnN0YXRpYyBjb25zdCBjaGFyICpid19zZXRfbWlu
Zmlyc3R3YWl0KGNtZF9wYXJtcyAqY21kLCB2b2lkICpjb25maWcsIGNvbnN0
IGNoYXIgKmFyZykNCnsNCiAgICBid19maWx0ZXJfY29uZmlnICpjID0gYXBf
Z2V0X21vZHVsZV9jb25maWcoY21kLT5zZXJ2ZXItPm1vZHVsZV9jb25maWcs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmJ3Ml9tb2R1bGUpOw0KICAgIGxvbmcgaW50IGk7DQogICAg
aSA9IGF0b2koYXJnKTsNCiAgICBpZiAoaSA8IDApDQogICAgICAgcmV0dXJu
ICJNaW5GaXJzdFdhaXQgbXVzdCBiZSBsYXJnZXIgb3IgZXF1YWwgdG8gMCI7
DQoNCiAgICBjLT5taW5maXJzdHdhaXQgPSBpOw0KDQogICAgcmV0dXJuIE5V
TEw7DQp9DQoNCi8qDQogKiBDYWxsYmFjayBmdW5jdGlvbiB0byBzZXQgTWF4
Rmlyc3RXYWl0IGRpcmVjdGl2ZQ0KICovDQpzdGF0aWMgY29uc3QgY2hhciAq
Yndfc2V0X21heGZpcnN0d2FpdChjbWRfcGFybXMgKmNtZCwgdm9pZCAqY29u
ZmlnLCBjb25zdCBjaGFyICphcmcpDQp7DQogICAgYndfZmlsdGVyX2NvbmZp
ZyAqYyA9IGFwX2dldF9tb2R1bGVfY29uZmlnKGNtZC0+c2VydmVyLT5tb2R1
bGVfY29uZmlnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZidzJfbW9kdWxlKTsNCiAgICBsb25nIGlu
dCBpOw0KICAgIGkgPSBhdG9pKGFyZyk7DQogICAgaWYgKGkgPCAwKQ0KICAg
ICAgIHJldHVybiAiTWF4Rmlyc3RXYWl0IG11c3QgYmUgbGFyZ2VyIG9yIGVx
dWFsIHRvIDAiOw0KDQogICAgYy0+bWF4Zmlyc3R3YWl0ID0gaTsNCg0KICAg
IHJldHVybiBOVUxMOw0KfQ0KDQovKg0KICogQ2FsbGJhY2sgZnVuY3Rpb24g
dG8gc2V0IE1pblNlY29uZFdhaXQgZGlyZWN0aXZlDQogKi8NCnN0YXRpYyBj
b25zdCBjaGFyICpid19zZXRfbWluc2Vjb25kd2FpdChjbWRfcGFybXMgKmNt
ZCwgdm9pZCAqY29uZmlnLCBjb25zdCBjaGFyICphcmcpDQp7DQogICAgYndf
ZmlsdGVyX2NvbmZpZyAqYyA9IGFwX2dldF9tb2R1bGVfY29uZmlnKGNtZC0+
c2VydmVyLT5tb2R1bGVfY29uZmlnLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZidzJfbW9kdWxlKTsN
CiAgICBsb25nIGludCBpOw0KICAgIGkgPSBhdG9pKGFyZyk7DQogICAgaWYg
KGkgPCAwKQ0KICAgICAgIHJldHVybiAiTWluU2Vjb25kV2FpdCBtdXN0IGJl
IGxhcmdlciBvciBlcXVhbCB0byAwIjsNCg0KICAgIGMtPm1pbnNlY29uZHdh
aXQgPSBpOw0KDQogICAgcmV0dXJuIE5VTEw7DQp9DQoNCi8qDQogKiBDYWxs
YmFjayBmdW5jdGlvbiB0byBzZXQgTWF4U2Vjb25kV2FpdCBkaXJlY3RpdmUN
CiAqLw0Kc3RhdGljIGNvbnN0IGNoYXIgKmJ3X3NldF9tYXhzZWNvbmR3YWl0
KGNtZF9wYXJtcyAqY21kLCB2b2lkICpjb25maWcsIGNvbnN0IGNoYXIgKmFy
ZykNCnsNCiAgICBid19maWx0ZXJfY29uZmlnICpjID0gYXBfZ2V0X21vZHVs
ZV9jb25maWcoY21kLT5zZXJ2ZXItPm1vZHVsZV9jb25maWcsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmJ3Ml9tb2R1bGUpOw0KICAgIGxvbmcgaW50IGk7DQogICAgaSA9IGF0b2ko
YXJnKTsNCiAgICBpZiAoaSA8IDApDQogICAgICAgcmV0dXJuICJNYXhTZWNv
bmRXYWl0IG11c3QgYmUgbGFyZ2VyIG9yIGVxdWFsIHRvIDAiOw0KDQogICAg
Yy0+bWF4c2Vjb25kd2FpdCA9IGk7DQoNCiAgICByZXR1cm4gTlVMTDsNCn0N
Cg0KDQovKg0KICogTGlzdCBvZiBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMg
dXNlZCBieSB0aGlzIG1vZHVsZQ0KICovDQpzdGF0aWMgY29uc3QgY29tbWFu
ZF9yZWMgYndfY21kc1tdID0NCnsNCiAgICBBUF9JTklUX1RBS0UxKCJCYW5k
V2lkdGhQZXJDb25uIiwgYndfc2V0X2J3cGVyY29ubiwgTlVMTCwgUlNSQ19D
T05GLA0KICAgICAgICAgICAgICAgICAgIlNldCB0aGUgYmFuZHdpZHRoIHBl
ciBjb25uZWN0aW9uIGluIGJ5dGVzIHBlciBzZWNvbmQgKEJwcykiKSwNCiAg
ICBBUF9JTklUX1RBS0UxKCJQYWNrZXRTaXplIiwgYndfc2V0X3BhY2tldCwg
TlVMTCwgUlNSQ19DT05GLA0KICAgICAgICAgICAgICAgICAgIlNldCB0aGUg
cGFja2V0c2l6ZSB1c2VkIGluIHRocm90dGxpbmcgaW4gYnl0ZXMgKEIpIiks
DQogICAgQVBfSU5JVF9UQUtFMSgiVG90YWxCYW5kV2lkdGgiLCBid19zZXRf
dG90YWxidywgTlVMTCwgUlNSQ19DT05GLA0KICAgICAgICAgICAgICAgICAg
IlNldCB0aGUgbWF4aW11bSBiYW5kd2lkdGggdXNlZCBieSB0aGUgY29tcGxl
dGUgc2VydmVyIGluIGJ5dGVzIHBlciBzZWNvbmQgKEJwcykiKSwNCiAgICBB
UF9JTklUX1RBS0UxKCJNYXhDb25uZWN0aW9ucyIsIGJ3X3NldF9tYXhjb25u
LCBOVUxMLCBSU1JDX0NPTkYsDQogICAgICAgICAgICAgICAgICAiU2V0IHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IGNvbm5lY3Rpb25zIiks
DQogICAgQVBfSU5JVF9UQUtFMSgiTWluRmlyc3RXYWl0IiwgYndfc2V0X21p
bmZpcnN0d2FpdCwgTlVMTCwgUlNSQ19DT05GLA0KICAgICAgICAgICAgICAg
ICAgIlNldCB0aGUgbWluaW11bSB3YWl0IHRpbWUgd2hlbiBvdmVyIGEgbGlt
aXQgZm9yIGEgZmlyc3QgdGltZSIpLA0KICAgIEFQX0lOSVRfVEFLRTEoIk1h
eEZpcnN0V2FpdCIsIGJ3X3NldF9tYXhmaXJzdHdhaXQsIE5VTEwsIFJTUkNf
Q09ORiwNCiAgICAgICAgICAgICAgICAgICJTZXQgdGhlIG1heGltdW0gd2Fp
dCB0aW1lIHdoZW4gb3ZlciBhIGxpbWl0IGZvciBhIGZpcnN0IHRpbWUiKSwN
CiAgICBBUF9JTklUX1RBS0UxKCJNaW5TZWNvbmRXYWl0IiwgYndfc2V0X21p
bnNlY29uZHdhaXQsIE5VTEwsIFJTUkNfQ09ORiwNCiAgICAgICAgICAgICAg
ICAgICJTZXQgdGhlIG1heGltdW0gd2FpdCB0aW1lIHdoZW4gb3ZlciBhIGxp
bWl0IGZvciBhIHNlY29uZCB0aW1lIiksDQogICAgQVBfSU5JVF9UQUtFMSgi
TWF4U2Vjb25kV2FpdCIsIGJ3X3NldF9tYXhzZWNvbmR3YWl0LCBOVUxMLCBS
U1JDX0NPTkYsDQogICAgICAgICAgICAgICAgICAiU2V0IHRoZSBtYXhpbXVt
IHdhaXQgdGltZSB3aGVuIG92ZXIgYSBsaW1pdCBmb3IgYSBzZWNvbmQgdGlt
ZSIpLA0KICAge05VTEx9ICAgDQp9Ow0KDQoNCi8qDQogKiBBcGFjaGUgbW9k
dWxlIGNvbmZpZ3VyYXRpb24gOg0KICogTGluayBjYWxsYmFjayByb3V0aW5l
cyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRvIEFwYWNoZSBzdGF0aWMgaG9va3Mu
DQogKi8NCg0KbW9kdWxlIEFQX01PRFVMRV9ERUNMQVJFX0RBVEEgYncyX21v
ZHVsZSA9IA0Kew0KICAgIFNUQU5EQVJEMjBfTU9EVUxFX1NUVUZGLA0KICAg
IE5VTEwsCQkJLyogY3JlYXRlIHBlci1kaXJlY3RvcnkgY29uZmlnIHN0cnVj
dHVyZSAqLw0KICAgIE5VTEwsICAgICAgICAJCS8qIG1lcmdlIHBlci1kaXJl
Y3RvcnkgY29uZmlnIHN0cnVjdHVyZXMgKi8NCiAgICBjcmVhdGVfYndfc2Vy
dmVyX2NvbmZpZywgICAgLyogY3JlYXRlIHBlci1zZXJ2ZXIgY29uZmlnIHN0
cnVjdHVyZSAqLw0KICAgIE5VTEwsCQkJLyogbWVyZ2UgcGVyLXNlcnZlciBj
b25maWcgc3RydWN0dXJlcyAqLw0KICAgIGJ3X2NtZHMsCQkJLyogY29tbWFu
ZCBhcHJfdGFibGVfdCAqLw0KICAgIGJ3Ml9yZWdpc3Rlcl9ob29rCQkvKiBy
ZWdpc3RlciBob29rcyAqLw0KfTsNCg==


--8323328-728524536-1099318783=:28350
Content-Type: text/plain; charset=us-ascii

---------------------------------------------------------------------
To unsubscribe, e-mail: apache-modules-unsubscribe@covalent.net
For additional commands, e-mail: apache-modules-help@covalent.net
--8323328-728524536-1099318783=:28350--
]