Subject: Re: timedwork
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Iain Hibbert <plunky@rya-online.net>
List: tech-kern
Date: 01/19/2007 10:16:11
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--0-2132177583-1169201771=:17737
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Wed, 17 Jan 2007, YAMAMOTO Takashi wrote:

> i have no objections against the method.
> please complete it and commit. :)

Here is my implementation, seems stable. Points to note:

- callout locking is changed to use splclock() as per documentation

- uses callout_setflag(c, f) rather than extend callout_init()
- deprecates CALLOUT_INITIALIZER_SETFUNC

If no objections I will commit middle of next week.

iain
--0-2132177583-1169201771=:17737
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=callout.diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.64.0701191016110.17737@localhost.>
Content-Description: add threading to callout
Content-Disposition: attachment; filename=callout.diff

LS0tIC91c3Ivc3JjL3N5cy9rZXJuL2tlcm5fdGltZW91dC5jCTIwMDUtMTIt
MTMgMDg6MjE6MzEuMDAwMDAwMDAwICswMDAwDQorKysgc3lzL2tlcm4va2Vy
bl90aW1lb3V0LmMJMjAwNy0wMS0xOSAxMDoxMTozNC4wMDAwMDAwMDAgKzAw
MDANCkBAIC03Niw2ICs3Niw3IEBADQogI2luY2x1ZGUgPHN5cy9wYXJhbS5o
Pg0KICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4NCiAjaW5jbHVkZSA8c3lzL2tl
cm5lbC5oPg0KKyNpbmNsdWRlIDxzeXMva3RocmVhZC5oPg0KICNpbmNsdWRl
IDxzeXMvbG9jay5oPg0KICNpbmNsdWRlIDxzeXMvY2FsbG91dC5oPg0KIA0K
QEAgLTEwMiw2ICsxMDMsOSBAQA0KIHN0YXRpYyBzdHJ1Y3QgY2FsbG91dF9j
aXJjcSB0aW1lb3V0X3doZWVsW0JVQ0tFVFNdOwkvKiBRdWV1ZXMgb2YgdGlt
ZW91dHMgKi8NCiBzdGF0aWMgc3RydWN0IGNhbGxvdXRfY2lyY3EgdGltZW91
dF90b2RvOwkJLyogV29ya2xpc3QgKi8NCiANCitzdGF0aWMgc3RydWN0IGNh
bGxvdXRfY2lyY3EgdGltZW91dF93b3JrOwkJLyogV29ya2xpc3QgZm9yIHRo
cmVhZCAqLw0KK3N0YXRpYyBzdHJ1Y3QgcHJvYyAqdGltZW91dF9wcm9jOwkJ
CS8qIFByb2Nlc3MgZm9yIHRocmVhZCAqLw0KKw0KICNkZWZpbmUgTUFTS1dI
RUVMKHdoZWVsLCB0aW1lKSAoKCh0aW1lKSA+PiAoKHdoZWVsKSpXSEVFTEJJ
VFMpKSAmIFdIRUVMTUFTSykNCiANCiAjZGVmaW5lIEJVQ0tFVChyZWwsIGFi
cykJCQkJCQlcDQpAQCAtMTI1LDcgKzEyOSw3IEBADQogDQogI2RlZmluZQlD
QUxMT1VUX0xPQ0socykJCQkJCQkJXA0KIGRvIHsJCQkJCQkJCQlcDQotCXMg
PSBzcGxzY2hlZCgpOwkJCQkJCQlcDQorCXMgPSBzcGxjbG9jaygpOwkJCQkJ
CQlcDQogCXNpbXBsZV9sb2NrKCZjYWxsb3V0X3Nsb2NrKTsJCQkJCVwNCiB9
IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCiANCkBAIC0xOTQsNiArMTk4LDY1
IEBADQogI2VuZGlmDQogDQogLyoNCisgKiBjYWxsb3V0X3RocmVhZDoNCisg
Kg0KKyAqCUNhbGxvdXQgdGhyZWFkLiBhcmd1bWVudCBpcyB3b3JrbGlzdA0K
KyAqLw0KK3N0YXRpYyB2b2lkDQorY2FsbG91dF90aHJlYWQodm9pZCAqYXJn
KQ0KK3sNCisJc3RydWN0IGNhbGxvdXRfY2lyY3EgKnEgPSBhcmc7DQorCXN0
cnVjdCBjYWxsb3V0ICpjOw0KKwl2b2lkICgqZnVuYykodm9pZCAqKTsNCisJ
aW50IGVycm9yLCBzOw0KKwkNCisJQ0FMTE9VVF9MT0NLKHMpOw0KKwlmb3Ig
KDs7KSB7DQorCQkvKg0KKwkJICogbG9vcCBoZXJlIGZvcmV2ZXIsIHNub296
aW5nIHdoZW4gdGhlcmUgaXMgbm8gd29yaw0KKwkJICovDQorCQlpZiAoQ0lS
Q1FfRU1QVFkocSkpIHsNCisJCQllcnJvciA9IGx0c2xlZXAocSwgUFVTRVIg
LSAxLCAiY2FsbG91dCIsIDAsDQorCQkJCQkJCSAgICAmY2FsbG91dF9zbG9j
ayk7DQorCQkJaWYgKGVycm9yKQ0KKwkJCQlwYW5pYygiJXM6IGx0c2xlZXAg
ZXJyb3I9JWQiLCBfX2Z1bmNfXywgZXJyb3IpOw0KKwkJfSBlbHNlIHsNCisJ
CQljID0gQ0lSQ1FfRklSU1QocSk7DQorCQkJQ0lSQ1FfUkVNT1ZFKCZjLT5j
X2xpc3QpOw0KKw0KKwkJCWMtPmNfZmxhZ3MgJj0gfkNBTExPVVRfUEVORElO
RzsNCisJCQljLT5jX2ZsYWdzIHw9IChDQUxMT1VUX0ZJUkVEfENBTExPVVRf
SU5WT0tJTkcpOw0KKw0KKwkJCWZ1bmMgPSBjLT5jX2Z1bmM7DQorCQkJYXJn
ID0gYy0+Y19hcmc7DQorDQorCQkJQ0FMTE9VVF9VTkxPQ0socyk7DQorCQkJ
KCpmdW5jKShhcmcpOw0KKwkJCUNBTExPVVRfTE9DSyhzKTsNCisJCX0NCisJ
fQ0KKwkvKiBOT1RSRUFDSEVEICovDQorDQorCS8qIENBTExPVVRfVU5MT0NL
KHMpOyAqLw0KKwkvKiBrdGhyZWFkX2V4aXQoMCk7ICovDQorfQ0KKw0KKy8q
DQorICogY2FsbG91dF9zdGFydHVwX3RocmVhZDoNCisgKg0KKyAqCUNyZWF0
ZSBhIHRocmVhZCB0byBoYW5kbGUgdGhyZWFkZWQgY2FsbG91dHMNCisgKi8N
CitzdGF0aWMgdm9pZA0KK2NhbGxvdXRfc3RhcnR1cF90aHJlYWQodm9pZCAq
YXJnKQ0KK3sNCisJaW50IGVycm9yOw0KKw0KKwllcnJvciA9IGt0aHJlYWRf
Y3JlYXRlMShjYWxsb3V0X3RocmVhZCwgYXJnLCAmdGltZW91dF9wcm9jLCAi
Y2FsbG91dCIpOw0KKwlpZiAoZXJyb3IpDQorCQlwcmludGYoIiVzOiBmYWls
ZWQgKGVycm9yID0gJWQpXG4iLCBfX2Z1bmNfXywgZXJyb3IpOw0KK30NCisN
CisvKg0KICAqIGNhbGxvdXRfc3RhcnR1cDoNCiAgKg0KICAqCUluaXRpYWxp
emUgdGhlIGNhbGxvdXQgZmFjaWxpdHksIGNhbGxlZCBhdCBzeXN0ZW0gc3Rh
cnR1cCB0aW1lLg0KQEAgLTIwOCw2ICsyNzEsOSBAQA0KIAkJQ0lSQ1FfSU5J
VCgmdGltZW91dF93aGVlbFtiXSk7DQogCXNpbXBsZV9sb2NrX2luaXQoJmNh
bGxvdXRfc2xvY2spOw0KIA0KKwlDSVJDUV9JTklUKCZ0aW1lb3V0X3dvcmsp
Ow0KKwlrdGhyZWFkX2NyZWF0ZShjYWxsb3V0X3N0YXJ0dXBfdGhyZWFkLCAm
dGltZW91dF93b3JrKTsNCisNCiAjaWZkZWYgQ0FMTE9VVF9FVkVOVF9DT1VO
VEVSUw0KIAlldmNudF9hdHRhY2hfZHluYW1pYygmY2FsbG91dF9ldl9sYXRl
LCBFVkNOVF9UWVBFX01JU0MsDQogCSAgICBOVUxMLCAiY2FsbG91dCIsICJs
YXRlIik7DQpAQCAtMzc3LDE1ICs0NDMsMjAgQEANCiAJCQlpZiAoYy0+Y190
aW1lIC0gaGFyZGNsb2NrX3RpY2tzIDwgMCkNCiAJCQkJY2FsbG91dF9ldl9s
YXRlLmV2X2NvdW50Kys7DQogI2VuZGlmDQotCQkJYy0+Y19mbGFncyA9IChj
LT5jX2ZsYWdzICAmIH5DQUxMT1VUX1BFTkRJTkcpIHwNCi0JCQkgICAgKENB
TExPVVRfRklSRUR8Q0FMTE9VVF9JTlZPS0lORyk7DQotDQotCQkJZnVuYyA9
IGMtPmNfZnVuYzsNCi0JCQlhcmcgPSBjLT5jX2FyZzsNCi0NCi0JCQlDQUxM
T1VUX1VOTE9DSyhzKTsNCi0JCQkoKmZ1bmMpKGFyZyk7DQotCQkJQ0FMTE9V
VF9MT0NLKHMpOw0KKwkJCWlmIChjLT5jX2ZsYWdzICYgQ0FMTE9VVF9USFJF
QUQpIHsNCisJCQkJQ0lSQ1FfSU5TRVJUKCZjLT5jX2xpc3QsICZ0aW1lb3V0
X3dvcmspOw0KKwkJCQl3YWtldXAoJnRpbWVvdXRfd29yayk7DQorCQkJfSBl
bHNlIHsNCisJCQkJYy0+Y19mbGFncyAmPSB+Q0FMTE9VVF9QRU5ESU5HOw0K
KwkJCQljLT5jX2ZsYWdzIHw9IChDQUxMT1VUX0ZJUkVEfENBTExPVVRfSU5W
T0tJTkcpOw0KKw0KKwkJCQlmdW5jID0gYy0+Y19mdW5jOw0KKwkJCQlhcmcg
PSBjLT5jX2FyZzsNCisNCisJCQkJQ0FMTE9VVF9VTkxPQ0socyk7DQorCQkJ
CSgqZnVuYykoYXJnKTsNCisJCQkJQ0FMTE9VVF9MT0NLKHMpOw0KKwkJCX0N
CiAJCX0NCiAJfQ0KIA0KLS0tIC91c3Ivc3JjL3N5cy9zeXMvY2FsbG91dC5o
CTIwMDUtMTItMTMgMDg6MjM6MTcuMDAwMDAwMDAwICswMDAwDQorKysgc3lz
L3N5cy9jYWxsb3V0LmgJMjAwNy0wMS0xOCAxNjozNjoyOS4wMDAwMDAwMDAg
KzAwMDANCkBAIC05NywxOSArOTcsMjMgQEANCiAJaW50CWNfZmxhZ3M7CQkJ
Lyogc3RhdGUgb2YgdGhpcyBlbnRyeSAqLw0KIH07DQogDQorI2RlZmluZQlD
QUxMT1VUX1RIUkVBRAkJMHgwMDAxCS8qIGNhbGxvdXQgZnJvbSB0aHJlYWQg
Ki8NCiAjZGVmaW5lCUNBTExPVVRfUEVORElORwkJMHgwMDAyCS8qIGNhbGxv
dXQgaXMgb24gdGhlIHF1ZXVlICovDQogI2RlZmluZQlDQUxMT1VUX0ZJUkVE
CQkweDAwMDQJLyogY2FsbG91dCBoYXMgZmlyZWQgKi8NCiAjZGVmaW5lCUNB
TExPVVRfSU5WT0tJTkcJMHgwMDA4CS8qIGNhbGxvdXQgZnVuY3Rpb24gaXMg
YmVpbmcgaW52b2tlZCAqLw0KIA0KLSNkZWZpbmUJQ0FMTE9VVF9JTklUSUFM
SVpFUl9TRVRGVU5DKGZ1bmMsIGFyZykJCQkJXA0KLQkJCQl7IHt7TlVMTH0s
IHtOVUxMfX0sIGZ1bmMsIGFyZywgMCwgMCB9DQorI2RlZmluZSBDQUxMT1VU
X0lOSVRJQUxJWkVSX1NFVChmdW5jLCBhcmcsIGZsYWdzKQkJCVwNCisJCXsg
LmNfZnVuYyA9IGZ1bmMsIC5jX2FyZyA9IGFyZywgLmNfZmxhZ3MgPSBmbGFn
cyB9DQogDQotI2RlZmluZQlDQUxMT1VUX0lOSVRJQUxJWkVSCUNBTExPVVRf
SU5JVElBTElaRVJfU0VURlVOQyhOVUxMLCBOVUxMKQ0KKyNkZWZpbmUJQ0FM
TE9VVF9JTklUSUFMSVpFUl9TRVRGVU5DKGZ1bmMsIGFyZykJLyogKGRlcHJl
Y2F0ZWQpICovCVwNCisJCUNBTExPVVRfSU5JVElBTElaRVJfU0VUKGZ1bmMs
IGFyZywgMCkNCisNCisjZGVmaW5lCUNBTExPVVRfSU5JVElBTElaRVIJCQkJ
CQlcDQorCQlDQUxMT1VUX0lOSVRJQUxJWkVSX1NFVChOVUxMLCBOVUxMLCAw
KQ0KIA0KICNpZmRlZiBfS0VSTkVMDQogdm9pZAljYWxsb3V0X3N0YXJ0dXAo
dm9pZCk7DQogdm9pZAljYWxsb3V0X2luaXQoc3RydWN0IGNhbGxvdXQgKik7
DQotdm9pZAljYWxsb3V0X3NldGZ1bmMoc3RydWN0IGNhbGxvdXQgKiwgdm9p
ZCAoKikodm9pZCAqKSwgdm9pZCAqKTsNCiB2b2lkCWNhbGxvdXRfcmVzZXQo
c3RydWN0IGNhbGxvdXQgKiwgaW50LCB2b2lkICgqKSh2b2lkICopLCB2b2lk
ICopOw0KIHZvaWQJY2FsbG91dF9zY2hlZHVsZShzdHJ1Y3QgY2FsbG91dCAq
LCBpbnQpOw0KIHZvaWQJY2FsbG91dF9zdG9wKHN0cnVjdCBjYWxsb3V0ICop
Ow0KQEAgLTEyMSw2ICsxMjUsMTIgQEANCiAJKGMpLT5jX2FyZyA9IChhKTsJ
CQkJCQlcDQogfSB3aGlsZSAoLypDT05TVENPTkQqLzApDQogDQorI2RlZmlu
ZSBjYWxsb3V0X3NldGZsYWcoYywgZikJCQkJCQlcDQorZG8gewkJCQkJCQkJ
CVwNCisJS0FTU0VSVCgoZiAmIENBTExPVVRfVEhSRUFEKSA9PSBDQUxMT1VU
X1RIUkVBRCk7CQlcDQorCShjKS0+Y19mbGFncyB8PSAoZik7CQkJCQkJXA0K
K30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KICNkZWZpbmUJY2FsbG91
dF9wZW5kaW5nKGMpCSgoYyktPmNfZmxhZ3MgJiBDQUxMT1VUX1BFTkRJTkcp
DQogI2RlZmluZQljYWxsb3V0X2V4cGlyZWQoYykJKChjKS0+Y19mbGFncyAm
IENBTExPVVRfRklSRUQpDQogI2RlZmluZQljYWxsb3V0X2FjdGl2ZShjKQko
KGMpLT5jX2ZsYWdzICYgKENBTExPVVRfUEVORElOR3xDQUxMT1VUX0ZJUkVE
KSkNCi0tLSAvdXNyL3NyYy9zaGFyZS9tYW4vbWFuOS9NYWtlZmlsZQkyMDA2
LTA5LTIxIDA2OjE2OjI1LjAwMDAwMDAwMCArMDEwMA0KKysrIHNoYXJlL21h
bi9tYW45L01ha2VmaWxlCTIwMDctMDEtMTggMTY6Mzg6MDguMDAwMDAwMDAw
ICswMDAwDQpAQCAtMTI4LDEwICsxMjgsMTEgQEANCiAJYnVzX2RtYS45IGJ1
c19kbWFtZW1fbWFwLjkgYnVzX2RtYS45IGJ1c19kbWFtZW1fdW5tYXAuOSBc
DQogCWJ1c19kbWEuOSBidXNfZG1hbWVtX21tYXAuOQ0KIE1MSU5LUys9Y2Fs
bG91dC45IGNhbGxvdXRfaW5pdC45IGNhbGxvdXQuOSBjYWxsb3V0X3Jlc2V0
LjkgXA0KLQljYWxsb3V0LjkgY2FsbG91dF9zY2hlZHVsZS45IGNhbGxvdXQu
OSBjYWxsb3V0X3NldGZ1bmMuOSBcDQotCWNhbGxvdXQuOSBjYWxsb3V0X3N0
b3AuOSBjYWxsb3V0LjkgY2FsbG91dF9wZW5kaW5nLjkgXA0KKwljYWxsb3V0
LjkgY2FsbG91dF9zY2hlZHVsZS45IGNhbGxvdXQuOSBjYWxsb3V0X3NldGZs
YWcuOSBcDQorCWNhbGxvdXQuOSBjYWxsb3V0X3NldGZ1bmMuOSBjYWxsb3V0
LjkgY2FsbG91dF9zdG9wLjkgXA0KKwljYWxsb3V0LjkgY2FsbG91dF9wZW5k
aW5nLjkgXA0KIAljYWxsb3V0LjkgQ0FMTE9VVF9JTklUSUFMSVpFUi45IFwN
Ci0JY2FsbG91dC45IENBTExPVVRfSU5JVElBTElaRVJfU0VURlVOQy45IFwN
CisJY2FsbG91dC45IENBTExPVVRfSU5JVElBTElaRVJfU0VULjkNCiAJY2Fs
bG91dC45IHRpbWVvdXQuOSBjYWxsb3V0LjkgdW50aW1lb3V0LjkNCiBNTElO
S1MrPWNhcmRidXMuOSBjYXJkYnVzX2F0dGFjaF9jYXJkLjkgXA0KIAljYXJk
YnVzLjkgY2FyZGJ1c19kZXRhY2hfY2FyZC45IFwNCi0tLSAvdXNyL3NyYy9z
aGFyZS9tYW4vbWFuOS9jYWxsb3V0LjkJMjAwNS0wMy0wNiAwMzowMjo0MC4w
MDAwMDAwMDAgKzAwMDANCisrKyBzaGFyZS9tYW4vbWFuOS9jYWxsb3V0LjkJ
MjAwNy0wMS0xOCAxNjozNDoxNi4wMDAwMDAwMDAgKzAwMDANCkBAIC00MSwx
MyArNDEsMTQgQEANCiAuTm0gY2FsbG91dF9pbml0ICwNCiAuTm0gY2FsbG91
dF9yZXNldCAsDQogLk5tIGNhbGxvdXRfc2NoZWR1bGUgLA0KKy5ObSBjYWxs
b3V0X3NldGZsYWcsDQogLk5tIGNhbGxvdXRfc2V0ZnVuYyAsDQogLk5tIGNh
bGxvdXRfc3RvcCAsDQogLk5tIGNhbGxvdXRfZXhwaXJlZCAsDQogLk5tIGNh
bGxvdXRfaW52b2tpbmcgLA0KIC5ObSBjYWxsb3V0X2FjayAsDQogLk5tIENB
TExPVVRfSU5JVElBTElaRVIgLA0KLS5ObSBDQUxMT1VUX0lOSVRJQUxJWkVS
X1NFVEZVTkMNCisuTm0gQ0FMTE9VVF9JTklUSUFMSVpFUl9TRVQNCiAuTmQg
ZXhlY3V0ZSBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIGxlbmd0aCBv
ZiB0aW1lDQogLlNoIFNZTk9QU0lTDQogLkluIHN5cy9jYWxsb3V0LmgNCkBA
IC01OSw2ICs2MCw4IEBADQogLkZ0IHZvaWQNCiAuRm4gImNhbGxvdXRfc2No
ZWR1bGUiICJzdHJ1Y3QgY2FsbG91dCAqYyIgImludCB0aWNrcyINCiAuRnQg
dm9pZA0KKy5GbiAiY2FsbG91dF9zZXRmbGFnIiAic3RydWN0IGNhbGxvdXQg
KmMiICJpbnQgZmxhZ3MiDQorLkZ0IHZvaWQNCiAuRm4gImNhbGxvdXRfc2V0
ZnVuYyIgInN0cnVjdCBjYWxsb3V0ICpjIiAidm9pZCAoKmZ1bmMpKHZvaWQg
KikiICJ2b2lkICphcmciDQogLkZ0IHZvaWQNCiAuRm4gImNhbGxvdXRfc3Rv
cCIgInN0cnVjdCBjYWxsb3V0ICpjIg0KQEAgLTc0LDcgKzc3LDcgQEANCiAu
Rm4gImNhbGxvdXRfYWNrIiAic3RydWN0IGNhbGxvdXQgKmMiDQogLkZkIENB
TExPVVRfSU5JVElBTElaRVINCiAuUHANCi0uRm4gQ0FMTE9VVF9JTklUSUFM
SVpFUl9TRVRGVU5DICJmdW5jIiAiYXJnIg0KKy5GbiBDQUxMT1VUX0lOSVRJ
QUxJWkVSX1NFVCAiZnVuYyIgImFyZyIgImZsYWdzIg0KIC5TaCBERVNDUklQ
VElPTg0KIFRoZQ0KIC5ObSBjYWxsb3V0DQpAQCAtODIsNyArODUsMTAgQEAN
CiBUaGUgdGltZXIgaXMgYmFzZWQgb24gdGhlIGhhcmRjbG9jayB0aW1lciB3
aGljaCB0aWNrcw0KIC5EdiBoeg0KIHRpbWVzIHBlciBzZWNvbmQuDQotVGhl
IGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzb2Z0Y2xvY2sgaW50ZXJydXB0IGxl
dmVsLg0KK1RoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc29mdGNsb2NrIGlu
dGVycnVwdCBsZXZlbCwgdW5sZXNzIHRoZQ0KKy5EdiBDQUxMT1VUX1RIUkVB
RA0KK2ZsYWcgaXMgc2V0IGluIHRoZSBjYWxsb3V0IGhhbmRsZSwgaW4gd2hp
Y2ggY2FzZSB0aGUgZnVuY3Rpb24gaXMNCitjYWxsZWQgZnJvbSBhIGtlcm5l
bCB0aHJlYWQuDQogLlBwDQogQ2xpZW50cyBvZiB0aGUNCiAuTm0gY2FsbG91
dA0KQEAgLTE1MSwxMiArMTU3LDI3IEBADQogLkZuIGNhbGxvdXRfc2NoZWR1
bGUNCiBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5nDQog
LkZuIGNhbGxvdXRfcmVzZXQgLg0KLUlmIGl0IGlzIGluY29udmVuaWVudCB0
byBjYWxsDQotLkZuIGNhbGxvdXRfc2V0ZnVuYyAsDQotc3RhdGljYWxseS1h
bGxvY2F0ZWQgY2FsbG91dCBoYW5kbGVzIG1heSBiZSBpbml0aWFsaXplZCBi
eSBhc3NpZ25pbmcNCi10aGUgdmFsdWUNCi0uRHYgQ0FMTE9VVF9JTklUSUFM
SVpFUl9TRVRGVU5DDQotdG8gdGhlbSwgcGFzc2luZyB0aGUgZnVuY3Rpb24g
YW5kIGFyZ3VtZW50IHRvIHRoZSBpbml0aWFsaXplci4NCisuUHANCitUaGUN
CisuRm4gY2FsbG91dF9zZXRmbGFnDQorZnVuY3Rpb24gY2FuIGJlIHVzZWQg
dG8gc2V0IHRoZQ0KKy5EdiBDQUxMT1VUX1RIUkVBRA0KK2ZsYWcgaW4gdGhl
IGNhbGxvdXQsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiB3
aWxsIGJlIGNhbGxlZA0KK2luIGEgdGhyZWFkIGNvbnRleHQuDQorVGhlIGNh
bGxvdXQgaGFuZGxlIG11c3QgYWxyZWFkeSBiZSBpbml0aWFsaXplZC4NCitT
aW5jZSB0aGUgY2FsbG91dCB0aHJlYWQgaXMgc2hhcmVkIGFtb25nc3QgYWxs
IHVzZXJzIG9mIHRoZQ0KKy5YciBjYWxsb3V0IDkNCitBUEksIGNhcmUgc2hv
dWxkIGJlIHRha2VuIG5vdCB0byBzbGVlcCBmb3IgYW55IHNpZ25pZmljYW50
IHRpbWUuDQorLlBwDQorSWYgaXQgaXMgaW5jb252ZW5pZW50IHRvIGNhbGwg
dGhlDQorLkZuIGNhbGxvdXRfc2V0ZmxhZw0KK29yDQorLkZuIGNhbGxvdXRf
c2V0ZnVuYw0KK2Z1bmN0aW9ucywgc3RhdGljYWxseS1hbGxvY2F0ZWQgY2Fs
bG91dCBoYW5kbGVzIG1heSBiZSBpbml0aWFsaXplZA0KK2J5IHVzaW5nIHRo
ZQ0KKy5EdiBDQUxMT1VUX0lOSVRJQUxJWkVSX1NFVA0KK21hY3JvIHRvIGFz
c2lnbiBhIHZhbHVlIHRvIHRoZW0sIHBhc3NpbmcgdGhlIGZ1bmN0aW9uLCBh
cmd1bWVudCBhbmQNCitmbGFncyBhcyByZXF1aXJlZC4NCiAuUHANCiBUaGUN
CiAuRm4gY2FsbG91dF9zdG9wDQo=

--0-2132177583-1169201771=:17737--