From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Fri, 19 Dec 2003 10:53:34 +0100 (CET) From: Thomas Fischbacher To: Sven Luther Cc: 224417@bugs.debian.org, control@bugs.debian.org Subject: Re: Bug#224417: Problem with the old Num implementation of ocaml - more details Content-Type: multipart/mixed; boundary="1418540168-270534528-1071777902=:32347" Message-ID: <20031219095334.vtVpRrlEPix6liPmfJeIb3q_GC0csGnFpmPnVAtPPgI@z> [Maybe I should file this as a separate bugreport] On Thu, 18 Dec 2003, Sven Luther wrote: > tags 224417 + upstream > thanks > On Thu, Dec 18, 2003 at 09:15:40PM +0100, Thomas Fischbacher wrote: > > > > Package: ocaml > > Version: 3.06-21 > > Severity: grave > > Huh ... > > BTW, 3.06-21 is not part of debian anymore, but i guess 3.07-7 and the > woody (and older) version are vulnerable. > > I will transmit this to upstream too, altough i somewhat doubt they will > fix it, since old-bignum is going to be replaced with the new > implementation. But i think it will interest them still. Yes, I suppose so. But strangely enough, the problem _did_ re-occur - albeit with very different values - with Package: ocaml Version: 3.07.2a-1 and Package: libnums-ocaml Version: 3.07-1 Here, I get: 0 ==> -63739694011402166976051874041676063865784980095311212432062478926751299450139305457948134038790907007782943115234375/2294287488095403763073974596800604256904498055825734116841519453845801891422853587965749144293625676308261780152348780234845939207145908383623706636688843241160704 1 ==> 0 2 ==> -12747938802280433395210374808335212773156996019062242486412495785350259890027861091589626807758181401556588623046875/11301908808351742675241254171431548063568955940028246880992706669191142322280066935791867705879929439942176256908122070122393789197763095485831067175807109562368 3 ==> 0 4 ==> -12747938802280433395210374808335212773156996019062242486412495785350259890027861091589626807758181401556588623046875/1280294357196095849929673324107480054076170790081324841987455052369309091195788832570172513556710756868449654102873203256052421432559100660504300578509399130112 5 ==> 0 6 ==> -12747938802280433395210374808335212773156996019062242486412495785350259890027861091589626807758181401556588623046875/11301908808351742675241254171431548063568955940028246880992706669191142322280066935791867705879929439942176256908122070122393789197763095485831067175807109562368 7 ==> -39148920061803210956691061036397438426365134774540146675772774556810648122275561412271743926625375084180283661376953125/2294287488095403763073974596800604256904498055825734116841519453845801891422853587965749144293625676308261780152348780234845939207145908383623706636688843241160704 8 ==> -570392894161458354485388740908288985192455282044195662517309148957502839351474204759670942202082333316731293944994384765625/95595312003975156794748941533358510704354085659405588201729977243575078809285566165239547678901069846177574173014532509785247466964412849317654443195368468381696 9 ==> -39148920061803210956691061036397438426365134774540146675772774556810648122275561412271743926625375084180283661376953125/2294287488095403763073974596800604256904498055825734116841519453845801891422853587965749144293625676308261780152348780234845939207145908383623706636688843241160704 - : unit = () Again, of course, zero is the correct value. At least, it does occur more frequently. For sure, this made me wonder whether the bug may nevertheless be on my side, considering that I am terribly overworked due to this research paper at the moment, but I stared at the source over and over again, and I simply do not use global state / non-functional features outside of the main functions that could cause such behaviour... And even if I did, how could the results depend on the particular implementation of ratio arithmetics I am using? Yet to me it seems plausible that some serious issue may have been overlooked here, since I suppose very few people use ratio arith (in contrast to bignum-only arith, which has applications for, e.g., RSA). This is all very puzzling at the moment... -- regards, tf@cip.physik.uni-muenchen.de (o_ Dr. Thomas Fischbacher - http://www.cip.physik.uni-muenchen.de/~tf //\ (lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y) V_/_ (if (= x 0) y (g g (- x 1) (* x y)))) n 1)) (Debian GNU) --1418540168-270534528-1071777902=:32347 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="ym-debug.ml" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="ym-debug.ml" b3BlbiBOdW07Ow0KDQpsZXQgaW50MT1JbnQgMTs7ICgqIFRvIGF2b2lkIG51 bWJlciBjb25zaW5nIGxhdGVyIG9uLi4uICopDQpsZXQgaW50MD1JbnQgMDs7 IA0KbGV0IGludDI9SW50IDI7OyANCg0KdHlwZSBscG93ZXIgPQ0KICAgIHtt dXRhYmxlIHBvd2VyOiBpbnQ7DQogICAgIG11dGFibGUgdmFyczogaW50OyAo KiBiaXQgdmVjdG9yICopDQogICAgIG11dGFibGUgY29lZmZzOiBpbnQgYXJy YXkgKCogYWx3YXlzIG1ha2UgZGVub21pbmF0b3JzIHJhdGlvbmFsICopDQog ICB9OzsNCg0KbGV0IHBvd2VyX29mXzIgbiA9DQogIGxldCByZWMgdHJhdiBw IHBwb3cgPQ0KICAgIGlmIHBwb3c+bg0KICAgIHRoZW4gLTENCiAgICBlbHNl IGlmIHBwb3c8bg0KICAgIHRoZW4gdHJhdiAoMStwKSAocHBvdytwcG93KQ0K ICAgIGVsc2UgcA0KICBpbiB0cmF2IDAgMTs7DQoNCigqDQogICBXZSBuZWVk IGFuIG9yZGVyIG9uIGxwb3dlcnMuLi4NCiAqKQ0KDQpsZXQgdl9jbXAgY21w IGEgYiA9DQogIGxldCBsZW5fYSA9IEFycmF5Lmxlbmd0aCBhIGluDQogIGxl dCBsZW5fYiA9IEFycmF5Lmxlbmd0aCBiIGluDQogIGxldCByZWMgdHJhdiBw b3MgPQ0KICAgIGlmIHBvcyA9PSBsZW5fYQ0KICAgIHRoZW4NCiAgICAgIGlm IGxlbl9hID09IGxlbl9iIHRoZW4gMCBlbHNlIC0xDQogICAgZWxzZQ0KICAg ICAgaWYgcG9zID09IGxlbl9iDQogICAgICB0aGVuIDENCiAgICAgIGVsc2UN CglsZXQgeGEgPSBBcnJheS5nZXQgYSBwb3MgaW4NCglsZXQgeGIgPSBBcnJh eS5nZXQgYiBwb3MgaW4NCglsZXQgY21wX3hhX3hiID0gY21wIHhhIHhiIGlu DQoJaWYgY21wX3hhX3hiICE9IDAgdGhlbiBjbXBfeGFfeGIgZWxzZSB0cmF2 ICgxK3BvcykNCiAgaW4gdHJhdiAwOzsNCg0KDQooKiANCiAgIEV4YW1wbGU6 DQoNCiAgIHZfY21wIChmdW4geCB5IC0+IGlmIHggPCB5IHRoZW4gLTEgZWxz ZSBpZiB4ID4geSB0aGVuIDEgZWxzZSAwKSBbfDE7MjszOzQ7OHxdIFt8MTsy OzM7NHxdOzsNCiAqKQ0KDQoNCmxldCBscG93ZXJfY21wIGFsc29fY21wX3Bv d2VycyBscF9hIGxwX2IgPQ0KICBpZiBscF9hLnZhcnMgPCBscF9iLnZhcnMg dGhlbiAtMQ0KICBlbHNlIGlmIGxwX2EudmFycyA+IGxwX2IudmFycyB0aGVu IDENCiAgZWxzZSBsZXQgY21wID0NCiAgICB2X2NtcCAoZnVuIHggeSAtPiBp ZiB4IDwgeQ0KICAgICAgICAgICAgICAgICAgICAgICB0aGVuIC0xDQogICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgeCA+IHkgdGhlbiAxDQogICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgMCkNCiAgICAgIGxwX2EuY29lZmZz IGxwX2IuY29lZmZzIGluDQogIGlmIGNtcCAhPSAwIHRoZW4gY21wDQogICAg ICBlbHNlDQogICAgICAgaWYgYWxzb19jbXBfcG93ZXJzDQogICAgICAgdGhl biBpZiBscF9hLnBvd2VyIDwgbHBfYi5wb3dlciB0aGVuIC0xDQogICAgICAg ICAgICBlbHNlIGlmIGxwX2EucG93ZXIgPiBscF9iLnBvd2VyIHRoZW4gMQ0K ICAgICAgICAgICAgZWxzZSAwDQogICAgICAgZWxzZSAwOzsNCg0KKCoNCiAg IFdoZW4gY29tYmluaW5nIGxwb3dlciB2ZWN0b3JzLA0KICAgd2UgZmlyc3Qg aGF2ZSB0byBjb3VudCB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBlbnRyaWVz Li4uDQogKikNCg0KDQpsZXQgbHBvd2VyX25yX2RpZmZlcmVudF9ub25jYW5j ZWxsYXRpbmcgdl9scF9hIHZfbHBfYiA9DQogIGxldCBsZW5fYSA9IEFycmF5 Lmxlbmd0aCB2X2xwX2EgaW4NCiAgbGV0IGxlbl9iID0gQXJyYXkubGVuZ3Ro IHZfbHBfYiBpbg0KICBsZXQgcmVjIHRyYXYgbl9zb19mYXIgcG9zX2EgcG9z X2IgPQ0KICAgIGlmIHBvc19hID09IGxlbl9hIHRoZW4gbl9zb19mYXIgKyBs ZW5fYi1wb3NfYg0KCWVsc2UgaWYgcG9zX2IgPT0gbGVuX2IgdGhlbiBuX3Nv X2ZhciArIGxlbl9hLXBvc19hDQoJZWxzZQ0KCSAgbGV0IGVudHJ5X2EgPSBB cnJheS5nZXQgdl9scF9hIHBvc19hIGluDQoJICBsZXQgZW50cnlfYiA9IEFy cmF5LmdldCB2X2xwX2IgcG9zX2IgaW4NCgkgIGxldCBjbXBfaGVyZSA9IGxw b3dlcl9jbXAgZmFsc2UgZW50cnlfYSBlbnRyeV9iIGluDQoJICBpZiBjbXBf aGVyZSA9PSAwIHRoZW4NCgkgICAgaWYgZW50cnlfYS5wb3dlciArIGVudHJ5 X2IucG93ZXIgPT0gMA0KCSAgICB0aGVuIHRyYXYgbl9zb19mYXIgKDErcG9z X2EpICgxK3Bvc19iKQ0KCSAgICBlbHNlIHRyYXYgKDErbl9zb19mYXIpICgx K3Bvc19hKSAoMStwb3NfYikNCgkgIGVsc2UgaWYgY21wX2hlcmUgPT0gLTEg dGhlbiB0cmF2ICgxK25fc29fZmFyKSAoMStwb3NfYSkgcG9zX2INCgkgIGVs c2UgdHJhdiAoMStuX3NvX2ZhcikgcG9zX2EgKDErcG9zX2IpDQogIGluIHRy YXYgMCAwIDA7Ow0KDQoNCigqDQogICBXZSB3aWxsIG1ha2UgZ29vZCB1c2Ug b2YgbHBvd2VyIHN1YnN0aXR1dGlvbiBub3Qgb25seQ0KICAgZm9yIGRvaW5n IGNhbGN1bGF0aW9ucywgYnV0IGFsc28gZm9yIGNvbnN0cnVjdGluZw0KICAg dGhlIGluaXRpYWwgdGVybXMuDQogKikNCg0KKCoNCg0KICAgRmlyc3Qgb2Yg YWxsLCB3ZSBuZWVkIGludGVnZXIgYml0bWFzayBmdW5jdGlvbnMuLi4NCg0K ICopDQoNCmxldCBpbnRlZ2VyX2xlbmd0aCBuID0NCiAgbGV0IHJlYyB0cmF2 IHJlc3RfbiBiaXRfbm93ID0NCiAgaWYgcmVzdF9uID09IDANCiAgdGhlbiBi aXRfbm93DQogIGVsc2UNCiAgICBsZXQgY29udHJpYiA9IDEgbHNsIGJpdF9u b3cgaW4NCiAgICBpZiAwID09IGNvbnRyaWIgbGFuZCByZXN0X24NCiAgICB0 aGVuIHRyYXYgcmVzdF9uICgxK2JpdF9ub3cpDQogICAgZWxzZSB0cmF2IChy ZXN0X24tY29udHJpYikgKDErYml0X25vdykNCiAgaW4gdHJhdiBuIDA7Ow0K DQpsZXQgbnJfYml0c19pbiBuID0NCiAgbGV0IHJlYyB0cmF2IHJlc3RfbiBi aXRfbm93IG5yID0NCiAgaWYgcmVzdF9uID09IDANCiAgdGhlbiBucg0KICBl bHNlDQogICAgbGV0IGNvbnRyaWIgPSAxIGxzbCBiaXRfbm93IGluDQogICAg aWYgMCA9PSBjb250cmliIGxhbmQgcmVzdF9uDQogICAgdGhlbiB0cmF2IHJl c3RfbiAoMStiaXRfbm93KSBucg0KICAgIGVsc2UgdHJhdiAocmVzdF9uLWNv bnRyaWIpICgxK2JpdF9ub3cpICgxK25yKQ0KICBpbiB0cmF2IG4gMCAwOzsN Cg0KDQooKiBHaXZlbiBhIG51bWJlciBhbmQgYSB2YWx1ZSAyXmJpdCwgdGVs bCBtZSB0aGUgaG93IG1hbnl0aCBzZXQgYml0DQogICBpbiB0aGUgbnVtYmVy IGl0IGlzLCBzdGFydGluZyB0byBjb3VudCBhdCAwLi4uICopDQoNCmxldCBu cl9iaXRzX3NldF9iZWZvcmUgbnVtIGJpdHBvdyA9DQogIGxldCByZWMgd2Fs ayBuciB2YWxfbm93ID0NCiAgICBpZiB2YWxfbm93ID09IGJpdHBvdw0KICAg IHRoZW4gbnINCiAgICBlbHNlIHdhbGsgKGlmICgwPT12YWxfbm93IGxhbmQg bnVtKSB0aGVuIG5yIGVsc2UgbnIrMSkNCgkodmFsX25vdyt2YWxfbm93KQ0K ICBpbiB3YWxrIDAgMTs7DQoNCigqIC4uLiBhbmQgc29tZSBvdGhlciBoZWxw ZXJzLi4uICopDQoNCmxldCBnY2QgYSBiID0NCiAgbGV0IHJlYyB3b3JrIHAg cSA9DQogICAgbGV0IG1wcSA9IHAgbW9kIHEgaW4NCiAgICBpZiBtcHE9PTAg dGhlbiBxIGVsc2Ugd29yayBxIG1wcQ0KICBpbg0KICBsZXQgYWEgPSBhYnMg YSBpbg0KICBsZXQgYWIgPSBhYnMgYiBpbg0KICBpZiBhYSA+IGFiIHRoZW4g d29yayBhYSBhYiBlbHNlIHdvcmsgYWIgYWE7Ow0KDQoNCmxldCB2X2djZCB2 X2ludCA9DQogIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdl9pbnQgaW4NCiAg aWYgbGVuID09IDANCiAgIHRoZW4gMQ0KICAgZWxzZSBpZiBsZW4gPT0gMSB0 aGVuIGFicyAoQXJyYXkuZ2V0IHZfaW50IDApDQogICBlbHNlIGxldCByZWMg dHJhdiBwb3MgZ2NkX25vdyA9DQogICAgIGlmIGdjZF9ub3c9PTEgdGhlbiAx DQogICAgIGVsc2UgaWYgcG9zPT1sZW4gdGhlbiBnY2Rfbm93DQogICAgIGVs c2UgdHJhdiAoMStwb3MpIChnY2QgZ2NkX25vdyAoQXJyYXkuZ2V0IHZfaW50 IHBvcykpDQogICBpbiB0cmF2IDEgKEFycmF5LmdldCB2X2ludCAwKTs7DQoN Cg0KbGV0IGxjbSBhIGIgPSBhYnMoYSpiLyhnY2QgYSBiKSk7Ow0KDQooKg0K DQogICBIZXJlLCBxdWl0ZSBzb21lIGludGVyZXN0aW5nIHRoaW5ncyBkbyBo YXBwZW4uLi4NCg0KICAgTm90ZSB0aGF0IHRoZSBnaXZlbiB2YXIgTVVTVCBv Y2N1ciBpbiB0aGUgc3Vic3RpdHV0aW9uIHJ1bGUuLi4NCg0KICAgV2UgZGVz cnVjdGl2ZWx5IGNoYW5nZSB0aGUgZXh0cmEgZmFjdG9ycyBpbiByZWZfbnVt ZXIgYW5kIHJlZl9kZW5vbQ0KICAgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBr ZWVwIG91ciBjb2VmZnMgaW50ZWdyYWwgYW5kIHN0YXkgZmFzdC4uLg0KDQog ICBOb3RlIHRoYXQgb25lIGhhcyB0byBjb252aW5jZSBvbmVzZWxmIHRoYXQs IGJ5IGxvb2tpbmcgYXQgdGhlIGdpdmVuDQogICBzdHJ1Y3R1cmVzIG9mIHRo ZSB0ZXJtcyBzaG93aW5nIHVwLCB3ZSBkbyBub3QgbGVhdmUgaW50ZWdlciBy YW5nZQ0KICAgYnkgYXBwbHlpbmcgI3Igc3Vic3RpdHV0aW9ucyBvZiBsaW5l YXIgZnVuY3Rpb25zIHdpdGggY29lZmZzIG1heC4gMg0KICAgKGFuZCB3aGF0 IG9uZSBjYW4gZ2V0IGZyb20gdGhhdCBpbiBjb25zZWN1dGl2ZSBzdWJzKSBh cyB3ZWxsIGFzDQogICBwb3dlcnMgdXAgdG8gMl5yLi4uDQogICANCiAgIE5v dywgaG93IGJpZyBjYW4gd2UgbWFrZSByIGJlZm9yZSB2aW9sYXRpbmcgdGhl c2UgY29uc3RyYWludHMuLi4/DQoNCiAgIFhYWCBOb3RlOiBuZWVkIGFub3Ro ZXIgdmFyaWFudCwgd2hlcmUgd2UgZG8gbm90IGNvbnMgdGhlIHJlc3VsdCwN CiAgIGJ1dCBpbnN0ZWFkIGp1c3QgZXZhbCBpdCENCg0KICopDQoNCg0KbGV0 IGdldF9jb2VmZiBscCBjb2VmZl9iaXRwb3cgPQ0KICBsZXQgcG9zID0gbnJf Yml0c19zZXRfYmVmb3JlIGxwLnZhcnMgY29lZmZfYml0cG93IGluDQogIEFy cmF5LmdldCBscC5jb2VmZnMgcG9zOzsNCg0KDQpsZXQgbHBvd2VyX3N1YnMg cmVmX3hmYWN0b3IgdmFyX2JpdHBvdyB0b19zdWJzIGxwID0NCiAgaWYgKHZh cl9iaXRwb3cgbGFuZCBscC52YXJzKSA9PSAwIHRoZW4gbHAgKCogbm90aGlu ZyB0byBzdWJzdGl0dXRlICopDQogIGVsc2UNCiAgICBsZXQgc3Vic19vdGhl cl92YXJzID0gdmFyX2JpdHBvdyBseG9yIHRvX3N1YnMudmFycyBpbg0KICAg IGxldCBscF9vdGhlcl92YXJzID0gdmFyX2JpdHBvdyBseG9yIGxwLnZhcnMg aW4NCiAgICBsZXQgdG90YWxfdmFycyA9IHN1YnNfb3RoZXJfdmFycyBsb3Ig bHBfb3RoZXJfdmFycyBpbg0KICAgIGxldCBwb3NfdmFyX2luX2xwID0gbnJf Yml0c19zZXRfYmVmb3JlIGxwLnZhcnMgdmFyX2JpdHBvdyBpbg0KICAgIGxl dCBwb3NfdmFyX2luX3N1YnMgPSBucl9iaXRzX3NldF9iZWZvcmUgdG9fc3Vi cy52YXJzIHZhcl9iaXRwb3cgaW4NCiAgICBsZXQgdmFyX2NvZWZmX2luX2xw ID0gQXJyYXkuZ2V0IGxwLmNvZWZmcyBwb3NfdmFyX2luX2xwIGluDQogICAg bGV0IHZhcl9jb2VmZl9pbl9zdWJzID0gQXJyYXkuZ2V0IHRvX3N1YnMuY29l ZmZzIHBvc192YXJfaW5fc3VicyBpbg0KICAgIGxldCB2YXJfY29lZmYgPSBs Y20gdmFyX2NvZWZmX2luX2xwIHZhcl9jb2VmZl9pbl9zdWJzIGluDQogICAg bGV0IGZhY3Rvcl9zdWJzID0gLXZhcl9jb2VmZi92YXJfY29lZmZfaW5fc3Vi cyBpbg0KICAgIGxldCBmYWN0b3JfbHAgPSB2YXJfY29lZmYvdmFyX2NvZWZm X2luX2xwIGluDQogICAgbGV0IG5yX3RvdGFsX3ZhcnMgPSBucl9iaXRzX2lu IHRvdGFsX3ZhcnMgaW4gKCogTWF5IHN0aWxsIGJlIHJlZHVjZWQgYnkgYWRk aXRpb25hbCBjYW5jZWxsYXRpb25zISAqKQ0KICAgIGxldCByZXN1bHRfY29l ZmZzID0gQXJyYXkubWFrZSBucl90b3RhbF92YXJzIDAgaW4NCiAgICBsZXQg cmVjIGZpbGxfcmVzdWx0IGJpdHBvdyByZXN1bHRfcG9zIHRydWVfcmVzdWx0 X3ZhcnMgPQ0KICAgICAgaWYgYml0cG93ID4gdG90YWxfdmFycw0KICAgICAg dGhlbiAoKiBmaW5pc2hlZCAtLSBidXQgbWF5IGhhdmUgdG8gdGFrZSBzdWIt cmFuZ2UhICopDQogICAgICAgbGV0IGZpbmFsX2NvZWZmcyA9DQoJIGlmIHJl c3VsdF9wb3M9PW5yX3RvdGFsX3ZhcnMNCiAJICB0aGVuIHJlc3VsdF9jb2Vm ZnMNCgkgIGVsc2UgQXJyYXkuc3ViIHJlc3VsdF9jb2VmZnMgMCByZXN1bHRf cG9zIGluDQogICAgICAge3Bvd2VyPWxwLnBvd2VyO3ZhcnM9dHJ1ZV9yZXN1 bHRfdmFycztjb2VmZnM9ZmluYWxfY29lZmZzfQ0KICAgICAgZWxzZSBpZiAw ICE9IChscF9vdGhlcl92YXJzIGxhbmQgYml0cG93KQ0KCSAgIHRoZW4gaWYg MCAhPSAoc3Vic19vdGhlcl92YXJzIGxhbmQgYml0cG93KQ0KCSAgICAgICAg dGhlbiBsZXQgdmFsX3RvX3NldCA9ICAoZ2V0X2NvZWZmIGxwIGJpdHBvdykq ZmFjdG9yX2xwDQoJCSAgICAgICAgICAgICAgICAgICAgICsgKGdldF9jb2Vm ZiB0b19zdWJzIGJpdHBvdykqZmFjdG9yX3N1YnMgaW4NCgkJICBpZiB2YWxf dG9fc2V0PT0wDQoJCSAgIHRoZW4gZmlsbF9yZXN1bHQgKGJpdHBvdytiaXRw b3cpIHJlc3VsdF9wb3MgdHJ1ZV9yZXN1bHRfdmFycw0KCQkgICBlbHNlIChB cnJheS5zZXQgcmVzdWx0X2NvZWZmcyByZXN1bHRfcG9zIHZhbF90b19zZXQ7 DQoJCQkgZmlsbF9yZXN1bHQgKGJpdHBvdytiaXRwb3cpICgxK3Jlc3VsdF9w b3MpICh0cnVlX3Jlc3VsdF92YXJzK2JpdHBvdykpDQoJICAgICAgICBlbHNl ICgqIGNvbnRyaWIgZnJvbSBscCwgYnV0IG5vdCBmcm9tIHN1YnMuLi4gKikN CiAgICAJICAgICAgICAgIChBcnJheS5zZXQgcmVzdWx0X2NvZWZmcyByZXN1 bHRfcG9zDQoJCSAgICAgKChnZXRfY29lZmYgbHAgYml0cG93KSpmYWN0b3Jf bHApOw0KCQkgICBmaWxsX3Jlc3VsdCAoYml0cG93K2JpdHBvdykgKDErcmVz dWx0X3BvcykgKHRydWVfcmVzdWx0X3ZhcnMrYml0cG93KSkNCiAgICAgICAg ICAgZWxzZSBpZiAwICE9IChzdWJzX290aGVyX3ZhcnMgbGFuZCBiaXRwb3cp DQoJCSgqIENvbnRyaWIgZnJvbSBzdWJzLCBidXQgbm90IGZyb20gbHAgKikN CgkgICAgICAgICB0aGVuIChBcnJheS5zZXQgcmVzdWx0X2NvZWZmcyByZXN1 bHRfcG9zDQoJCQkgKChnZXRfY29lZmYgdG9fc3VicyBiaXRwb3cpKmZhY3Rv cl9zdWJzKTsNCgkJICAgICAgIGZpbGxfcmVzdWx0IChiaXRwb3crYml0cG93 KSAoMStyZXN1bHRfcG9zKSAodHJ1ZV9yZXN1bHRfdmFycytiaXRwb3cpKQ0K CSAgICAgICAgIGVsc2UgKCogYm90aCBjb250cmlicyB6ZXJvLi4uICopDQoJ ICAgICAgICAgIGZpbGxfcmVzdWx0IChiaXRwb3crYml0cG93KSByZXN1bHRf cG9zIHRydWVfcmVzdWx0X3ZhcnMgaW4NCiAgICBsZXQgcmVzdWx0X2xwID0g ZmlsbF9yZXN1bHQgMSAwIDAgaW4NCiAgICBpZiBBcnJheS5sZW5ndGggcmVz dWx0X2xwLmNvZWZmcyA9PSAwDQoJKCogaWYgd2Ugc3Vic3RpdHV0ZWQgWCBi eSBYLCB3ZSBnZXQgb3V0IGFuIGVtcHR5IGZhY3Rvci4uLg0KCSAgIEZvciB0 ZXJtIG5vcm1hbGl6YXRpb24gcHVycG9zZXMsIHdlIG1ha2UgMF4wPTEuDQoJ ICopDQogICAgdGhlbg0KICAgICAgKHJlc3VsdF9scC5wb3dlciA8LSAwOw0K ICAgICAgIHJlc3VsdF9scC52YXJzIDwtIDA7DQogICAgICAgcmVzdWx0X2xw KQ0KICAgIGVsc2UNCiAgICBsZXQgY29lZmZzX2djZDAgPSB2X2djZCByZXN1 bHRfbHAuY29lZmZzIGluDQogICAgbGV0IGNvZWZmc19nY2QgPSBpZiAoQXJy YXkuZ2V0IHJlc3VsdF9scC5jb2VmZnMgMCkgPCAwIHRoZW4gKC1jb2VmZnNf Z2NkMCkgZWxzZSBjb2VmZnNfZ2NkMCBpbg0KICAgICgqIFByaW50Zi5wcmlu dGYgImNvZWZmc19nY2QwPSVkIGNvZWZmc19nY2Q9JWRcbiIgY29lZmZzX2dj ZDAgY29lZmZzX2djZDsgREREICopDQogICAgKA0KICAgICBpZiBjb2VmZnNf Z2NkICE9IDENCiAgICAgdGhlbiBBcnJheS5pdGVyaSAoZnVuIHBvcyBjb2Vm ZiAtPiBBcnJheS5zZXQgcmVzdWx0X2xwLmNvZWZmcyBwb3MgKGNvZWZmL2Nv ZWZmc19nY2QpKSByZXN1bHRfbHAuY29lZmZzDQogICAgIGVsc2UgKCk7DQog ICAgIHJlZl94ZmFjdG9yOj0gIXJlZl94ZmFjdG9yICovIChwb3dlcl9udW0g ICgoSW50IGZhY3Rvcl9scCkvLyhJbnQgY29lZmZzX2djZCkpIChJbnQgKC1s cC5wb3dlcikpKTsNCiAgICAgcmVzdWx0X2xwDQogICAgKTs7DQoNCg0KbGV0 IHZfbHBvd2VyX3N1YnNfdW5pcSBudW1jb2VmZl9wbHVzX3ZfbHAgdmFyX2Jp dHBvdyB0b19zdWJzID0NCiAgbGV0IChuYyx2X2xwKSA9IG51bWNvZWZmX3Bs dXNfdl9scCBpbg0KICBsZXQgcm5jID0gcmVmIG5jIGluDQogIGxldCBsZW5f dl9scCA9IEFycmF5Lmxlbmd0aCB2X2xwIGluDQogIGxldCB2X2xwX3N1YnMg PSBBcnJheS5tYXAgKGxwb3dlcl9zdWJzIHJuYyB2YXJfYml0cG93IHRvX3N1 YnMpIHZfbHAgaW4NCiAgKEFycmF5LnNvcnQgKGxwb3dlcl9jbXAgdHJ1ZSkg dl9scF9zdWJzOw0KICAgbGV0IHJlYyB0cmF2X3VuaXEgcG9zX3NyYyBwb3Nf ZHN0ID0NCiAgICAgaWYgcG9zX3NyYyA9PSBsZW5fdl9scA0KICAgICAgdGhl biBpZiBwb3NfZHN0ID09IHBvc19zcmMNCiAgICAgICAgICAgIHRoZW4gdl9s cF9zdWJzDQoJICAgIGVsc2UgQXJyYXkuc3ViIHZfbHBfc3VicyAwIHBvc19k c3QNCiAgICAgIGVsc2UgKCogc3RpbGwgd29yayB0byBiZSBkb25lICopDQog ICAgICAgaWYgcG9zX2RzdD09MA0KICAgICAgICB0aGVuICgqIG5vIHRlcm1z IG9uIHN0YWNrICopDQoJIChBcnJheS5zZXQgdl9scF9zdWJzIHBvc19kc3Qg KEFycmF5LmdldCB2X2xwX3N1YnMgcG9zX3NyYyk7DQoJICB0cmF2X3VuaXEg KDErcG9zX3NyYykgKDErcG9zX2RzdCkpDQoJZWxzZQ0KCSBsZXQgbHAxID0g QXJyYXkuZ2V0IHZfbHBfc3VicyAocG9zX2RzdC0xKSBpbg0KCSBsZXQgbHAy ID0gQXJyYXkuZ2V0IHZfbHBfc3VicyBwb3Nfc3JjIGluDQoJIGxldCBjbXAg PSBscG93ZXJfY21wIGZhbHNlIGxwMSBscDIgaW4NCgkgaWYgY21wPT0wICgq IGNvbWJpbmFibGUgdGVybXMgKikNCgkgIHRoZW4gbGV0IHRvdGFsX3Bvd2Vy ID0gIGxwMS5wb3dlciArIGxwMi5wb3dlciBpbg0KCSAgIGlmIHRvdGFsX3Bv d2VyID09IDANCgkgICAgdGhlbiB0cmF2X3VuaXEgKDErcG9zX3NyYykgKHBv c19kc3QtMSkgKCogVGVybSBvbiBzdGFjayB3YXMgZWF0ZW4gKikNCgkgICAg ZWxzZSAoQXJyYXkuc2V0IHZfbHBfc3VicyAocG9zX2RzdC0xKQ0KCQkgICAg e3Bvd2VyPXRvdGFsX3Bvd2VyOw0KCQkgICAgIHZhcnM9bHAxLnZhcnM7DQoJ CSAgICAgY29lZmZzPWxwMS5jb2VmZnN9DQoJCSAgICAoKiBUaGlzIGNvbnNl cyBtb3JlIG9mdGVuIHRoYW4gc3RyaWN0bHkgbmVjZXNzYXJ5Li4uDQoJCSAg ICAgICBIb3dldmVyLCBJIGRvIG5vdCB3YW50IHRvIHdvcnJ5IGFib3V0IHdo ZW4gSSBhbHJlYWR5DQoJCSAgICAgICBoYXZlIGNvcGllZCBhIHZhbHVlIGFu ZCBtYXkgZG8gZGVzdHJ1Y3RpdmUNCgkJICAgICAgIG1vZGlmaWNhdGlvbi4u Lg0KCQkgICAgICopOw0KCQkgIHRyYXZfdW5pcSAoMStwb3Nfc3JjKSBwb3Nf ZHN0KQ0KCSAgZWxzZSAoKiBjbXAhPTAsIHdoaWNoIG1lYW5zIHRoYXQgd2Ug aGF2ZSB0byB0cmFuc2ZlciBuZXh0IHRlcm0gKikNCgkgICAoQXJyYXkuc2V0 IHZfbHBfc3VicyBwb3NfZHN0IGxwMjsNCgkgICAgdHJhdl91bmlxICgxK3Bv c19zcmMpICgxK3Bvc19kc3QpKSBpbg0KICAgbGV0IHZfbHBfc3Vic191bmlx ID0gdHJhdl91bmlxIDAgMCBpbg0KICAgKCFybmMsdl9scF9zdWJzX3VuaXEp KTs7DQoNCg0KbGV0IGV2YWxfbmNfdl9scCBuY192X2xwIHZfRXggPQ0KICBs ZXQgKG5jLHZfbHApPW5jX3ZfbHAgaW4NCiAgbGV0IG5yX2ZhY3RvcnM9QXJy YXkubGVuZ3RoIHZfbHAgaW4NCiAgbGV0IGJpdG1hc2sgPSAoMSBsc2wgKEFy cmF5Lmxlbmd0aCB2X0V4KSktMSBpbg0KICAoKiBxdWljayBoYWNrOiB1c2Ug YSB2X2xwIHRvIHJldHJpZXZlIGNvZWZmIGRhdGEuLi4gKikNCiAgbGV0IGV2 YWxfbHA9e3Bvd2VyPTA7dmFycz1iaXRtYXNrO2NvZWZmcz12X0V4fSBpbg0K ICBsZXQgcmVjIHRyYXYgc29fZmFyIG4gPQ0KICAgIGlmIG4gPT0gbnJfZmFj dG9ycyB0aGVuIHNvX2ZhciBlbHNlDQogICAgbGV0IGZhY3Rvcl9uID0gQXJy YXkuZ2V0IHZfbHAgbiBpbg0KICAgIGxldCBjb2VmZnNfbiA9IGZhY3Rvcl9u LmNvZWZmcyBpbg0KICAgIGxldCBucl9jb2VmZnM9QXJyYXkubGVuZ3RoIGNv ZWZmc19uIGluDQogICAgbGV0IHJlYyB0cmF2X3ZhcnMgcmVzdF92YXJzIGJp dHBvdyBzdW1fbm93ID0NCiAgICAgIGlmIHJlc3RfdmFycz09MA0KICAgICAg dGhlbiBzdW1fbm93DQogICAgICBlbHNlIGlmIChiaXRwb3cgbGFuZCByZXN0 X3ZhcnMpID09IDANCiAgICAgICAgICAgIHRoZW4gdHJhdl92YXJzIHJlc3Rf dmFycyAoYml0cG93K2JpdHBvdykgc3VtX25vdw0KCSAgICBlbHNlDQoJICAg ICBsZXQgY29lZmZfaiA9IGdldF9jb2VmZiBmYWN0b3JfbiBiaXRwb3cgaW4N CgkgICAgIGxldCB2YXJfaiA9IGdldF9jb2VmZiBldmFsX2xwIGJpdHBvdyBp bg0KCSAgICAgdHJhdl92YXJzIChyZXN0X3ZhcnMtYml0cG93KSAoYml0cG93 K2JpdHBvdykgKHN1bV9ub3crLyAoSW50IGNvZWZmX2opICovIChJbnQgdmFy X2opKQ0KICAgIGluIGxldCB2YWxfZmFjdG9yX24gPSB0cmF2X3ZhcnMgZmFj dG9yX24udmFycyAxIChJbnQgMCkgaW4NCiAgICB0cmF2IChzb19mYXIqLyhw b3dlcl9udW0gdmFsX2ZhY3Rvcl9uIChJbnQgZmFjdG9yX24ucG93ZXIpKSkg KDErIG4pIGluDQogIHRyYXYgbmMgMDs7DQoNCmxldCBjaGVja19zdWJzdGl0 dXRpb24gbmNfdl9scCA9DQogIGxldCBkZWJ1Z19scF9yZXMgPSB7cG93ZXIg PSAtMTsgdmFycyA9IDgwOyBjb2VmZnMgPSBbfDM7IC0yfF19IGluDQogIGxl dCB2X2V2YWwgPSAgW3wwOzEwMDA7MTEwMDsxMTEwOy0xMDAwLTExMDAtMTEx MDsxMDE7MyooLTEwMDAtMTEwMC0xMTEwKS8yfF0gaW4NCiAgbGV0IHZhcl9i aXRwb3cgPSAxIGxzbCAoKGludGVnZXJfbGVuZ3RoIGRlYnVnX2xwX3Jlcy52 YXJzKS0xKSBpbg0KICBsZXQgc3Vic3RpdHV0ZWQgPSB2X2xwb3dlcl9zdWJz X3VuaXEgbmNfdl9scCB2YXJfYml0cG93IGRlYnVnX2xwX3JlcyBpbg0KICBs ZXQgdmFsX3N1YnN0aXR1dGVkID0gZXZhbF9uY192X2xwIHN1YnN0aXR1dGVk IHZfZXZhbCBpbg0KICBsZXQgdmFsX2RpcmVjdCA9IGV2YWxfbmNfdl9scCBu Y192X2xwIHZfZXZhbCBpbg0KICBsZXQgZGlmZmVyZW5jZSA9IHZhbF9zdWJz dGl0dXRlZC0vdmFsX2RpcmVjdCBpbg0KICAoKiBMaXN0Lm1hcCBzdHJpbmdf b2ZfbnVtIFt2YWxfc3Vic3RpdHV0ZWQ7dmFsX2RpcmVjdDtkaWZmZXJlbmNl XSAqKQ0KICBzdHJpbmdfb2ZfbnVtIGRpZmZlcmVuY2U7Ow0KDQpsZXQgZGVi dWdfdl9scD0NCigoSW50ICgtMTYpKS8vKEludCAzKSwNCiBbfHtwb3dlciA9 IDA7IHZhcnMgPSAwOyBjb2VmZnMgPSBbfHxdfTsNCiAgIHtwb3dlciA9IDM7 IHZhcnMgPSAxNjsgY29lZmZzID0gW3wxfF19Ow0KICAge3Bvd2VyID0gLTE7 IHZhcnMgPSAxODsgY29lZmZzID0gW3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9 IC0zOyB2YXJzID0gMTg7IGNvZWZmcyA9IFt8MTsgLTF8XX07DQogICB7cG93 ZXIgPSAtMzsgdmFycyA9IDE4OyBjb2VmZnMgPSBbfDE7IDF8XX07DQogICB7 cG93ZXIgPSAtMTsgdmFycyA9IDE4OyBjb2VmZnMgPSBbfDE7IDJ8XX07DQog ICB7cG93ZXIgPSAtMTsgdmFycyA9IDIwOyBjb2VmZnMgPSBbfDE7IC0yfF19 Ow0KICAge3Bvd2VyID0gLTM7IHZhcnMgPSAyMDsgY29lZmZzID0gW3wxOyAt MXxdfTsNCiAgIHtwb3dlciA9IC0zOyB2YXJzID0gMjA7IGNvZWZmcyA9IFt8 MTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMjA7IGNvZWZmcyA9 IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSAyMjsgY29lZmZz ID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMgPSAyMjsg Y29lZmZzID0gW3wxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMg PSAyMjsgY29lZmZzID0gW3wxOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gMTsg dmFycyA9IDIyOyBjb2VmZnMgPSBbfDE7IDE7IDJ8XX07DQogICB7cG93ZXIg PSAtMTsgdmFycyA9IDI0OyBjb2VmZnMgPSBbfDE7IC0yfF19Ow0KICAge3Bv d2VyID0gLTM7IHZhcnMgPSAyNDsgY29lZmZzID0gW3wxOyAtMXxdfTsNCiAg IHtwb3dlciA9IC0zOyB2YXJzID0gMjQ7IGNvZWZmcyA9IFt8MTsgMXxdfTsN CiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMjQ7IGNvZWZmcyA9IFt8MTsgMnxd fTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSAyNjsgY29lZmZzID0gW3wxOyAx OyAtMnxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMgPSAyNjsgY29lZmZzID0g W3wxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMgPSAyNjsgY29l ZmZzID0gW3wxOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDI2 OyBjb2VmZnMgPSBbfDE7IDE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJz ID0gMjg7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAz OyB2YXJzID0gMjg7IGNvZWZmcyA9IFt8MTsgMTsgLTF8XX07DQogICB7cG93 ZXIgPSAzOyB2YXJzID0gMjg7IGNvZWZmcyA9IFt8MTsgMTsgMXxdfTsNCiAg IHtwb3dlciA9IDE7IHZhcnMgPSAyODsgY29lZmZzID0gW3wxOyAxOyAyfF19 Ow0KICAge3Bvd2VyID0gMjsgdmFycyA9IDMyOyBjb2VmZnMgPSBbfDF8XX07 DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDM0OyBjb2VmZnMgPSBbfDE7IC0y fF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAzNDsgY29lZmZzID0gW3wx OyAyfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAzNjsgY29lZmZzID0g W3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0yOyB2YXJzID0gMzY7IGNvZWZm cyA9IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAzODsgY29l ZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAz ODsgY29lZmZzID0gW3wxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0gLTI7IHZh cnMgPSA0MDsgY29lZmZzID0gW3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0y OyB2YXJzID0gNDA7IGNvZWZmcyA9IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9 IDI7IHZhcnMgPSA0MjsgY29lZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtw b3dlciA9IDI7IHZhcnMgPSA0MjsgY29lZmZzID0gW3wxOyAxOyAyfF19Ow0K ICAge3Bvd2VyID0gMjsgdmFycyA9IDQ0OyBjb2VmZnMgPSBbfDE7IDE7IC0y fF19Ow0KICAge3Bvd2VyID0gMjsgdmFycyA9IDQ0OyBjb2VmZnMgPSBbfDE7 IDE7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDQ4OyBjb2VmZnMg PSBbfDE7IC0yfF19OwkNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA0ODsgY29l ZmZzID0gW3wxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA0ODsg Y29lZmZzID0gW3wxOyAxfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA0 ODsgY29lZmZzID0gW3wxOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMg PSA0ODsgY29lZmZzID0gW3wzOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2 YXJzID0gNDg7IGNvZWZmcyA9IFt8MzsgMnxdfTsNCiAgIHtwb3dlciA9IC0x OyB2YXJzID0gNTA7IGNvZWZmcyA9IFt8MTsgLTI7IC0yfF19Ow0KICAge3Bv d2VyID0gLTE7IHZhcnMgPSA1MDsgY29lZmZzID0gW3wxOyAtMjsgMnxdfTsN CiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNTA7IGNvZWZmcyA9IFt8MTsgLTE7 IC0yfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA1MDsgY29lZmZzID0g W3wxOyAtMTsgMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNTA7IGNv ZWZmcyA9IFt8MTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9 IDUwOyBjb2VmZnMgPSBbfDE7IDE7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsg dmFycyA9IDUwOyBjb2VmZnMgPSBbfDE7IDI7IC0yfF19Ow0KICAge3Bvd2Vy ID0gLTE7IHZhcnMgPSA1MDsgY29lZmZzID0gW3wxOyAyOyAyfF19Ow0KICAg e3Bvd2VyID0gLTE7IHZhcnMgPSA1MjsgY29lZmZzID0gW3wxOyAtMjsgLTJ8 XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDUyOyBjb2VmZnMgPSBbfDE7 IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA1MjsgY29lZmZz ID0gW3wxOyAtMTsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDUy OyBjb2VmZnMgPSBbfDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZh cnMgPSA1MjsgY29lZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9 IC0xOyB2YXJzID0gNTI7IGNvZWZmcyA9IFt8MTsgMTsgMnxdfTsNCiAgIHtw b3dlciA9IC0xOyB2YXJzID0gNTI7IGNvZWZmcyA9IFt8MTsgMjsgLTJ8XX07 DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDUyOyBjb2VmZnMgPSBbfDE7IDI7 IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTQ7IGNvZWZmcyA9IFt8 MTsgMTsgLTI7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDU0OyBj b2VmZnMgPSBbfDE7IDE7IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFy cyA9IDU0OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAtMnxdfTsNCiAgIHtwb3dl ciA9IDE7IHZhcnMgPSA1NDsgY29lZmZzID0gW3wxOyAxOyAtMTsgMnxdfTsN CiAgIHtwb3dlciA9IDE7IHZhcnMgPSA1NDsgY29lZmZzID0gW3wxOyAxOyAx OyAtMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA1NDsgY29lZmZzID0g W3wxOyAxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDU0OyBj b2VmZnMgPSBbfDE7IDE7IDI7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFy cyA9IDU0OyBjb2VmZnMgPSBbfDE7IDE7IDI7IDJ8XX07DQogICB7cG93ZXIg PSAtMTsgdmFycyA9IDU2OyBjb2VmZnMgPSBbfDE7IC0yOyAtMnxdfTsNCiAg IHtwb3dlciA9IC0xOyB2YXJzID0gNTY7IGNvZWZmcyA9IFt8MTsgLTI7IDJ8 XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDU2OyBjb2VmZnMgPSBbfDE7 IC0xOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNTY7IGNvZWZm cyA9IFt8MTsgLTE7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDU2 OyBjb2VmZnMgPSBbfDE7IDE7IC0yfF19Ow0KICAge3Bvd2VyID0gLTE7IHZh cnMgPSA1NjsgY29lZmZzID0gW3wxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0g LTE7IHZhcnMgPSA1NjsgY29lZmZzID0gW3wxOyAyOyAtMnxdfTsNCiAgIHtw b3dlciA9IC0xOyB2YXJzID0gNTY7IGNvZWZmcyA9IFt8MTsgMjsgMnxdfTsN CiAgIHtwb3dlciA9IDE7IHZhcnMgPSA1ODsgY29lZmZzID0gW3wxOyAxOyAt MjsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7IGNvZWZmcyA9 IFt8MTsgMTsgLTI7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7 IGNvZWZmcyA9IFt8MTsgMTsgLTE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsg dmFycyA9IDU4OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bv d2VyID0gMTsgdmFycyA9IDU4OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19 Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDU4OyBjb2VmZnMgPSBbfDE7IDE7 IDE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7IGNvZWZmcyA9 IFt8MTsgMTsgMjsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7 IGNvZWZmcyA9IFt8MTsgMTsgMjsgMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZh cnMgPSA2MDsgY29lZmZzID0gW3wxOyAxOyAtMjsgLTJ8XX07DQogICB7cG93 ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsgLTI7IDJ8XX07 DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsg LTE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDYwOyBjb2VmZnMg PSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDYw OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsg dmFycyA9IDYwOyBjb2VmZnMgPSBbfDE7IDE7IDE7IDJ8XX07DQogICB7cG93 ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsgMjsgLTJ8XX07 DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsg MjsgMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA2NDsgY29lZmZzID0g W3wxfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA2NjsgY29lZmZzID0g W3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNjY7IGNvZWZm cyA9IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNjg7IGNv ZWZmcyA9IFt8MTsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDY4 OyBjb2VmZnMgPSBbfDE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0g NzA7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2 YXJzID0gNzA7IGNvZWZmcyA9IFt8MTsgMTsgMnxdfTsNCiAgIHtwb3dlciA9 IC0xOyB2YXJzID0gNzI7IGNvZWZmcyA9IFt8MTsgLTJ8XX07DQogICB7cG93 ZXIgPSAtMTsgdmFycyA9IDcyOyBjb2VmZnMgPSBbfDE7IDJ8XX07DQogICB7 cG93ZXIgPSAxOyB2YXJzID0gNzQ7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8XX07 DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNzQ7IGNvZWZmcyA9IFt8MTsgMTsg MnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA3NjsgY29lZmZzID0gW3wx OyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA3NjsgY29lZmZz ID0gW3wxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDgwOyBj b2VmZnMgPSBbfDE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA4 MDsgY29lZmZzID0gW3wxOyAyfF19Ow0KICAge3Bvd2VyID0gMDsgdmFycyA9 IDgwOyBjb2VmZnMgPSBbfDM7IC0yfF19Ow0KICAge3Bvd2VyID0gLTE7IHZh cnMgPSA4MjsgY29lZmZzID0gW3wxOyAtMjsgMnxdfTsNCiAgIHtwb3dlciA9 IC0xOyB2YXJzID0gODI7IGNvZWZmcyA9IFt8MTsgLTE7IDJ8XX07DQogICB7 cG93ZXIgPSAtMTsgdmFycyA9IDgyOyBjb2VmZnMgPSBbfDE7IDE7IC0yfF19 Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA4MjsgY29lZmZzID0gW3wxOyAy OyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gODQ7IGNvZWZmcyA9 IFt8MTsgLTI7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDg0OyBj b2VmZnMgPSBbfDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMg PSA4NDsgY29lZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0x OyB2YXJzID0gODQ7IGNvZWZmcyA9IFt8MTsgMjsgLTJ8XX07DQogICB7cG93 ZXIgPSAxOyB2YXJzID0gODY7IGNvZWZmcyA9IFt8MTsgMTsgLTI7IDJ8XX07 DQogICB7cG93ZXIgPSAxOyB2YXJzID0gODY7IGNvZWZmcyA9IFt8MTsgMTsg LTE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gODY7IGNvZWZmcyA9 IFt8MTsgMTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gODY7 IGNvZWZmcyA9IFt8MTsgMTsgMjsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsg dmFycyA9IDg4OyBjb2VmZnMgPSBbfDE7IC0yOyAyfF19Ow0KICAge3Bvd2Vy ID0gLTE7IHZhcnMgPSA4ODsgY29lZmZzID0gW3wxOyAtMTsgMnxdfTsNCiAg IHtwb3dlciA9IC0xOyB2YXJzID0gODg7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8 XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDg4OyBjb2VmZnMgPSBbfDE7 IDI7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkwOyBjb2VmZnMg PSBbfDE7IDE7IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkw OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gMTsg dmFycyA9IDkwOyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19Ow0KICAge3Bv d2VyID0gMTsgdmFycyA9IDkwOyBjb2VmZnMgPSBbfDE7IDE7IDI7IC0yfF19 Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkyOyBjb2VmZnMgPSBbfDE7IDE7 IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkyOyBjb2VmZnMg PSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDky OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsg dmFycyA9IDkyOyBjb2VmZnMgPSBbfDE7IDE7IDI7IC0yfF19Ow0KICAge3Bv d2VyID0gMTsgdmFycyA9IDk2OyBjb2VmZnMgPSBbfDE7IC0xfF19Ow0KICAg e3Bvd2VyID0gMTsgdmFycyA9IDk2OyBjb2VmZnMgPSBbfDE7IDF8XX07DQog ICB7cG93ZXIgPSAtMjsgdmFycyA9IDk4OyBjb2VmZnMgPSBbfDE7IC0xOyAt MXxdfTsNCiAgIHtwb3dlciA9IC0yOyB2YXJzID0gOTg7IGNvZWZmcyA9IFt8 MTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDk4OyBjb2Vm ZnMgPSBbfDE7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSA5 ODsgY29lZmZzID0gW3wxOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gLTI7IHZh cnMgPSAxMDA7IGNvZWZmcyA9IFt8MTsgLTE7IC0xfF19Ow0KICAge3Bvd2Vy ID0gLTI7IHZhcnMgPSAxMDA7IGNvZWZmcyA9IFt8MTsgLTE7IDF8XX07DQog ICB7cG93ZXIgPSAtMjsgdmFycyA9IDEwMDsgY29lZmZzID0gW3wxOyAxOyAt MXxdfTsNCiAgIHtwb3dlciA9IC0yOyB2YXJzID0gMTAwOyBjb2VmZnMgPSBb fDE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTAyOyBjb2Vm ZnMgPSBbfDE7IDE7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMg PSAxMDI7IGNvZWZmcyA9IFt8MTsgMTsgLTE7IDF8XX07DQogICB7cG93ZXIg PSAyOyB2YXJzID0gMTAyOyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0xfF19Ow0K ICAge3Bvd2VyID0gMjsgdmFycyA9IDEwMjsgY29lZmZzID0gW3wxOyAxOyAx OyAxfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMDQ7IGNvZWZmcyA9 IFt8MTsgLTE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMDQ7 IGNvZWZmcyA9IFt8MTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFy cyA9IDEwNDsgY29lZmZzID0gW3wxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9 IC0yOyB2YXJzID0gMTA0OyBjb2VmZnMgPSBbfDE7IDE7IDF8XX07DQogICB7 cG93ZXIgPSAyOyB2YXJzID0gMTA2OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAt MXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAxMDY7IGNvZWZmcyA9IFt8 MTsgMTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTA2OyBj b2VmZnMgPSBbfDE7IDE7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0gMjsgdmFy cyA9IDEwNjsgY29lZmZzID0gW3wxOyAxOyAxOyAxfF19Ow0KICAge3Bvd2Vy ID0gMjsgdmFycyA9IDEwODsgY29lZmZzID0gW3wxOyAxOyAtMTsgLTF8XX07 DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTA4OyBjb2VmZnMgPSBbfDE7IDE7 IC0xOyAxfF19Ow0KICAge3Bvd2VyID0gMjsgdmFycyA9IDEwODsgY29lZmZz ID0gW3wxOyAxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAx MDg7IGNvZWZmcyA9IFt8MTsgMTsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IDE7 IHZhcnMgPSAxMTI7IGNvZWZmcyA9IFt8MTsgLTE7IC0xfF19Ow0KICAge3Bv d2VyID0gMTsgdmFycyA9IDExMjsgY29lZmZzID0gW3wxOyAxOyAtMXxdfTsN CiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTEyOyBjb2VmZnMgPSBbfDI7IC0x OyAxfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTI7IGNvZWZmcyA9 IFt8MjsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTEyOyBj b2VmZnMgPSBbfDM7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJz ID0gMTEyOyBjb2VmZnMgPSBbfDM7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0g LTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTI7IC0xOyAxfF19Ow0K ICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTI7 IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDExNDsgY29lZmZz ID0gW3wxOyAtMTsgLTE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMg PSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTE7IC0xOyAxfF19Ow0KICAge3Bvd2Vy ID0gLTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTE7IDE7IC0xfF19 Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsg LTE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDExNDsgY29l ZmZzID0gW3wxOyAxOyAtMTsgLTF8XX07DQogICB7cG93ZXIgPSAtMTsgdmFy cyA9IDExNDsgY29lZmZzID0gW3wxOyAxOyAtMTsgMXxdfTsNCiAgIHtwb3dl ciA9IC0yOyB2YXJzID0gMTE0OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0xfF19 Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsg MTsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTE0OyBjb2Vm ZnMgPSBbfDE7IDI7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJz ID0gMTE0OyBjb2VmZnMgPSBbfDE7IDI7IDE7IC0xfF19Ow0KICAge3Bvd2Vy ID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsgLTI7IC0xOyAxfF19 Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsg LTI7IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDExNjsgY29l ZmZzID0gW3wxOyAtMTsgLTE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZh cnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsgLTE7IC0xOyAxfF19Ow0KICAge3Bv d2VyID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsgLTE7IDE7IC0x fF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8 MTsgLTE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDExNjsg Y29lZmZzID0gW3wxOyAxOyAtMTsgLTF8XX07DQogICB7cG93ZXIgPSAtMTsg dmFycyA9IDExNjsgY29lZmZzID0gW3wxOyAxOyAtMTsgMXxdfTsNCiAgIHtw b3dlciA9IC0yOyB2YXJzID0gMTE2OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0x fF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8 MTsgMTsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTE2OyBj b2VmZnMgPSBbfDE7IDI7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2 YXJzID0gMTE2OyBjb2VmZnMgPSBbfDE7IDI7IDE7IC0xfF19Ow0KICAge3Bv d2VyID0gMTsgdmFycyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAtMjsgLTE7 IDF8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gMTE4OyBjb2VmZnMgPSBb fDE7IDE7IC0yOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDEx ODsgY29lZmZzID0gW3wxOyAxOyAtMTsgLTE7IC0xfF19Ow0KICAge3Bvd2Vy ID0gMjsgdmFycyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAtMTsgLTE7IDF8 XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gMTE4OyBjb2VmZnMgPSBbfDE7 IDE7IC0xOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAxMTg7 IGNvZWZmcyA9IFt8MTsgMTsgLTE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAy OyB2YXJzID0gMTE4OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0xOyAtMXxdfTsN CiAgIHtwb3dlciA9IDE7IHZhcnMgPSAxMTg7IGNvZWZmcyA9IFt8MTsgMTsg MTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTE4OyBjb2Vm ZnMgPSBbfDE7IDE7IDE7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0gMTsgdmFy cyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAxOyAxOyAxfF19Ow0KICAge3Bv d2VyID0gMTsgdmFycyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAyOyAtMTsg LTF8XX18XSk7Ow0KDQpsZXQgcmVjIHRyYXYgbiA9DQogIGlmIG4gPT0gMTAg dGhlbiAoKSBlbHNlDQogIChQcmludGYucHJpbnRmICIlZCA9PT4gJXNcbiIg biAoY2hlY2tfc3Vic3RpdHV0aW9uIGRlYnVnX3ZfbHApOw0KICAgdHJhdiAo MSsgbikpDQogICAgaW4gdHJhdiAwOzsNCg== --1418540168-270534528-1071777902=:32347-- ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners