This message generated a parse failure. Raw output follows here. Please use 'back' to navigate. From devnull@lkml.org Tue Mar 21 12:09:02 2023 Received: from nic.funet.fi (nic.funet.fi [128.214.248.6]) by herbie.ucs.indiana.edu (8.7.5/8.6.12) with ESMTP id SAA03479 for ; Mon, 25 Nov 1996 18:44:20 -0500 (EST) Received: from vger.rutgers.edu ([128.6.190.2]) by nic.funet.fi with ESMTP id <60624-11631>; Tue, 26 Nov 1996 01:42:15 +0200 Received: by vger.rutgers.edu id <213177-269>; Mon, 25 Nov 1996 18:30:20 -0500 Date: Mon, 25 Nov 1996 11:50:06 -0500 (EST) From: "Richard B. Johnson" To: Linux kernel Subject: TCP/IP Checksumming Message-Id: Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1295196120-145632947-848940606=:136" Sender: owner-linux-kernel@vger.rutgers.edu Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1295196120-145632947-848940606=:136 Content-Type: TEXT/PLAIN; charset=US-ASCII This should be a good answer to my initial inquiry about the checksumming code and the flames that I have received. Cheers, Dick Johnson -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Richard B. Johnson Project Engineer Analogic Corporation Voice : (508) 977-3000 ext. 3754 Fax : (508) 532-6097 Modem : (508) 977-6870 Ftp : ftp@boneserver.analogic.com Email : rjohnson@analogic.com, johnson@analogic.com Penguin : Linux version 2.1.11 on an i586 machine. Warning : It's hard to remain at the trailing edge of technology. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ---1295196120-145632947-848940606=:136 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="xxx.xxx" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: ICAgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBhIGRlZmluaXRpdmUgc3RhdGVt ZW50IGFib3V0IHRoZSBUQ1AvSVANDQogICBjaGVja3N1bW1pbmcuDQ0KDQ0K ICAgU3RhdGVtZW50IG9mIHRoZSBwcm9ibGVtOg0NCg0NCiAgIEl0IGlzIG9i c2VydmVkIHRoYXQgdGhlIFRDUC9JUCBjaGVja3N1bW1pbmcgaXMgYW4gaW1w b3J0YW50IGNvbXBvbmVudA0NCiAgIG9mIExpbnV4IE5ldHdvcmtpbmcuDQ0K DQ0KICAgSXQgaXMgZnVydGhlciBvYnNlcnZlZCB0aGF0IHRoZSBMaW51eCBj aGVja3N1bW1pbmcgY29kZSByZXF1aXJlcyBzb21lDQ0KICAgdGVjaG5pY2Fs IHN0dWR5IHRvIHNob3cgd2hldGhlciBvciBub3QgYW55IGltcHJvdmVtZW50 cyBhcmUgd2FycmFudGVkLg0NCg0NCiAgIE15IGF0dGVtcHRzIHRvIGJyaW5n IHRoaXMgdG8gdGhlIGF0dGVudGlvbiBvZiBzb21lIGRldmVsb3BlcnMgd2Fz IG1ldA0NCiAgIHdpdGggcmVzcG9uc2VzIHRoYXQgYXJlIG1vcmUgZW1vdGlv bmFsIHRoYW4gZmFjdHVhbC4NDQoNDQogICBSZXNlYXJjaDoNDQoNDQogICBJ IGhhdmUgd3JpdHRlbiBhIHByb2dyYW0sIHdoaWNoIGlzIGluY2x1ZGVkIGhl cmV3aXRoLCB0aGF0IG1lYXN1cmVzDQ0KICAgdGhlIGFjdHVhbCBDUFUgY3lj bGVzIHVzZWQgdG8gcGVyZm9ybSBjaGVja3N1bW1pbmcgcHJvY2VkdXJlcy4g VGhpcw0NCiAgIHByb2dyYW0gbXVzdCBvcGVyYXRlIG9uIGEgUGVudGl1bSwg YmVjYXVzZSB0aGlzIGlzIHRoZSBvbmx5IGtub3duDQ0KICAgSW50ZWwgQXJj aGl0ZWN0dXJlIE1pY3JvcHJvY2Vzc29yIHRoYXQgbWFrZXMgdGhlIGludGVy bmFsIGN5Y2xlLWNvdW50DQ0KICAgYXZhaWxhYmxlLg0NCg0NCiAgIE9ic2Vy dmF0aW9uczoNDQoNDQogICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgc2ltcGxl c3QgY2hlY2tzdW0gcHJvY2VkdXJlIGlzIGJlaW5nIHVzZWQNDQogICBhcyBh IGJhc2VsaW5lLiBUaGUgYWN0dWFsIGNvZGUgZm9yIGV2ZXJ5dGhpbmcgZm9s bG93cyB0aGlzIHN1bW1hcnkuDQ0KDQ0KICAgVGhlIGRpZmZlcmVuY2UgYmV0 d2VlbiB0aGUgc2hvcnRlc3QgZXhlY3V0aW9uIHRpbWUgcHJvY2VkdXJlIHdo aWNoDQ0KICAgdXNlcyBtdWNoIG1vcmUgYWdncmVzc2l2ZSBsb29wLXVucm9s bGluZyB0aGFuIHRoZSBMaW51eCBjb2RlIGFuZCB0aGUNDQogICBzaW1wbGVz dCBwcm9jZWR1cmUgaXM6DQ0KDQ0KICAgTG9uZ2VzdCAgPSAweDI3RDcgIDEw LDE5OSBkZWNpbWFsDQ0KICAgU2hvcnRlc3QgPSAweDBBMjAgICAyLDU5MiBk ZWNpbWFsDQ0KDQ0KICAgMTAsMTk5IC8gMiw1OTIgPSAzLjkzICAoMy45Mzox IGltcHJvdmVtZW50KQ0NCg0NCiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4g dGhlIGNvZGUgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBMaW51eCBjb2RlDQ0K ICAgYW5kIHRoZSBzaW1wbGVzdCBwcm9jZWR1cmUgaXM6DQ0KDQ0KICAgTG9u Z2VzdCA9IDB4MjdENyAxMCwxOTkgZGVjaW1hbA0NCiAgIFRlc3RiZWQgPSAw eDE0QjQgIDUsMzAwIGRlY2ltYWwNDQoNDQogICAxMCwxOTkgLyA1LDMwMCA9 IDEuOTIgKDEuOTI6MSBpbXByb3ZlbWVudCkNDQoNDQogICBUaGUgZGlmZmVy ZW5jZSBiZXR3ZWVuIHRoZSBjb2RlIHRoYXQgaXMgc2ltaWxhciB0byB0aGUg TGludXggY29kZQ0NCiAgIGFuZCB0aGUgZmFzdGVzdCBwcm9jZWR1cmUgc2hv d24gaXM6DQ0KDQ0KICAgVGVzdGJlZCA9IDB4MTRCNCAgNSwzMDAgZGVjaW1h bA0NCiAgIEZhc3Rlc3QgPSAweDBBMjAgIDIsNTkyIGRlY2ltYWwNDQoNDQog ICA1LDMwMCAvIDIsNTkyID0gMi4wNCAoMi4wNDoxIGltcHJvdmVtZW50KQ0N Cg0NCiAgIENvbW1lbnQ6DQ0KICAgVGhlIHByZXZpb3VzbHkgc3RhdGVkIGRp ZmZlcmVuY2VzIG9mIDEwOjEgb3IgZ3JlYXRlciBjYW4ndCBiZQ0NCiAgIGNh dXNlZCBieSBjb2RpbmcgZGlmZmVyZW5jZXMuIFRoZXkgbXVzdCwgdGhlcmVm b3JlLCByZXN1bHQgZnJvbQ0NCiAgIG1lYXN1cmVtZW50IGVycm9ycy4NDQoN DQogICBJIGRlbGliZXJhdGVseSBkaWQgbm90IHVzZSB0aGUgYWN0dWFsIExp bnV4IGNoZWNrc3VtbWluZyBjb2RlLg0NCiAgIEhvd2V2ZXIsIHRoZSBwcm9n cmFtIHRoYXQgaXMgcHJvdmlkZWQgaGVyZXdpdGgsIGNhbiBlYXNpbHkgaGF2 ZQ0NCiAgIHRoYXQgY29kZSBpbmNsdWRlZCBmb3IgdGVzdHMgYW5kIG1lYXN1 cmVtZW50cy4gVGhpcyB3YXMgZG9uZSB0bw0NCiAgIHByZXZlbnQgYW55IHBv bGl0aWNhbCBpbnZvbHZlbWVudC4NDQoNDQogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0NCiAgIEFjdHVhbCBwcm9ncmFtIG91dHB1dDoNDQoNDQogICBUaGlz IHByb2dyYW0gbWVhc3VyZXMgdGhlIENQVSBjeWNsZXMgbmVjZXNzYXJ5IHRv IHBlcmZvcm0gdmFyaW91cw0NCiAgIFRDUC9JUCBDaGVja3N1bSByb3V0aW5l cy4gIEl0IGlzIG1hZGUgc28geW91IGNhbiByZWFkaWx5IGFkZCB5b3VyDQ0K ICAgb3duIHJvdXRpbmVzIHRvIHNlZSBob3cgdGhleSBjb21wYXJlLiBUaGlz IHByb2dyYW0gbmVlZHMgYSBQZW50aXVtDQ0KICAgdG8gZXhlY3V0ZS4gIElm IHlvdXIgbWFjaGluZSBqdXN0IGNyYXNoZWQsICBpdCBpcyBOT1QgYSBQZW50 aXVtLg0NCiAgIFNvcnJ5Lg0NCg0NCiAgIFRoaXMganVzdCBnZXRzIHRoZSBv dmVyaGVhZCBpbiBtYWtpbmcgdGhlIGZ1bmN0aW9uIGNhbGxzLg0NCiAgIFlv dSBjYW4gc3VidHJhY3QgdGhlIHJldHVybmVkIGN5Y2xlcyBmcm9tIHRoZSBv dGhlciBjYWxscyBpZg0NCiAgIHlvdSB3YW50IHRvIGJlIHBlZGFudGljLiBU aGUgcmV0dXJuZWQgY2hlY2tzdW0gaXMgdW5kZWZpbmVkLg0NCkZ1bmN0aW9u IDB4MDEsIENoZWNrc3VtIDB4MkM0QywgUHJvY2Vzc29yIGN5Y2xlcyAweDAw MDAwMDAwMDAwMDAwQjUNDQoNDQogICBUaGlzIHJldHVybnMgYSB3b3JkIGlu IEVBWCByZXByZXNlbnRpbmcgdGhlIFRDUC9JUCBDaGVja3N1bS4NDQogICBJ dCB1c2VzIExPRFNXIGFuZCBpcyBkZXNpZ25lZCBvbmx5IHRvIGJlIHNpbXBs ZS4NDQpGdW5jdGlvbiAweDAyLCBDaGVja3N1bSAweDFBOEEsIFByb2Nlc3Nv ciBjeWNsZXMgMHgwMDAwMDAwMDAwMDAyN0Q3DQ0KDQ0KICAgVGhpcyBwZXJm b3JtcyB0aGUgc2FtZSBjaGVja3N1bSwgYnV0IGRvZXMgbm90IHVzZSBidWls dC1pbiBtYWNyb3MNDQogICBzdWNoIGFzIExPT1AgYW5kIExPRFNXLg0NCkZ1 bmN0aW9uIDB4MDMsIENoZWNrc3VtIDB4MUE4QSwgUHJvY2Vzc29yIGN5Y2xl cyAweDAwMDAwMDAwMDAwMDIwOTgNDQoNDQogICBUaGlzIHRyaWVzIHRvIGJl IGN1dGUgYW5kIHVucm9sbCBsb29wcy4gTm90ZSB0aGF0IHRoZSB1bnJvbGxp bmcNDQogICB3b3JrcyBva2F5LCBob3dldmVyIHRoZXJlIGlzIGEgbG90IG9m IGxvZ2ljIG5lY2Vzc2FyeSB3aGljaCBjb3VsZA0NCiAgIHVuZHVlIGp1c3Qg YWJvdXQgZXZlcnl0aGluZyB3ZSBhcmUgYXR0ZW1wdGluZyB0byBhY2NvbXBs aXNoLg0NCkZ1bmN0aW9uIDB4MDQsIENoZWNrc3VtIDB4MUE4QSwgUHJvY2Vz c29yIGN5Y2xlcyAweDAwMDAwMDAwMDAwMDE0QjQNDQoNDQogICBUaGlzIHRy aWVzIHRvIGJlIGN1dGUgYW5kIHVucm9sbCBsb29wcyBidXQgc3VtcyBmcm9t IG1lbW9yeQ0NCiAgIHdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIHJlZ2lzdGVy IG9wZXJhbmQuDQ0KRnVuY3Rpb24gMHgwNSwgQ2hlY2tzdW0gMHgxQThBLCBQ cm9jZXNzb3IgY3ljbGVzIDB4MDAwMDAwMDAwMDAwMTA2Nw0NCg0NCiAgIFRo aXMgdHJpZXMgdG8gYmUgY3V0ZSBhbmQgdW5yb2xsIGxvb3BzIGJ1dCBzdW1z IGZyb20gbWVtb3J5DQ0KICAgd2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgcmVn aXN0ZXIgb3BlcmFuZC4gSXQgYWxzbyBnb2VzIG92ZXJib2FyZA0NCiAgIG9u IHRoZSBsb29wLXVucm9sbGluZy4NDQpGdW5jdGlvbiAweDA2LCBDaGVja3N1 bSAweDFBOEEsIFByb2Nlc3NvciBjeWNsZXMgMHgwMDAwMDAwMDAwMDAwRUM3 DQ0KDQ0KICAgVGhpcyB0cmllcyB0byBiZSBjdXRlIHdpdGggdGhlIExPRFNX IGFuZCB1bnJvbGxzIHNvbWUgbG9vcHMuDQ0KICAgSXQgaXMgYW4gZXhhbXBs ZSBvZiBleHRyZW1lIGNvbXBsaWNhdGlvbiBkb2luZyB2ZXJ5IGxpdHRsZS4N DQpGdW5jdGlvbiAweDA3LCBDaGVja3N1bSAweDFBOEEsIFByb2Nlc3NvciBj eWNsZXMgMHgwMDAwMDAwMDAwMDAwRjFBDQ0KDQ0KICAgVGhpcyBpcyBhIHZl cnNpb24gb2YgdGhlIHNpbXBsZSBjaGVja3N1bS4gSXQgdXNlcyBMT0RTVy4g SG93ZXZlcg0NCiAgIGl0IGZvbGRzIGJhY2sgYWxsIHRoZSBjYXJyaWVzIG11 Y2ggbGlrZSB0aGUgc3RhbmRhcmQgQyBjb2RlLg0NCkZ1bmN0aW9uIDB4MDgs IENoZWNrc3VtIDB4MUE4QSwgUHJvY2Vzc29yIGN5Y2xlcyAweDAwMDAwMDAw MDAwMDIwODkNDQoNDQogICBUaGlzIGlzIGEgdmVyc2lvbiBvZiB0aGUgc2lt cGxlIGNoZWNrc3VtLiBJdCB1c2VzIExPRFNXLiBIb3dldmVyDQ0KICAgaXQg ZG9lcyBub3QgdXNlIGEgbG9vcCBjb3VudGVyLiBJdCB1c2VzIGZvbGQtYmFj ayBmb3IgY2Fycmllcy4NDQpGdW5jdGlvbiAweDA5LCBDaGVja3N1bSAweDFB OEEsIFByb2Nlc3NvciBjeWNsZXMgMHgwMDAwMDAwMDAwMDAxNTFCDQ0KDQ0K ICAgVGhpcyB0cmllcyB0byBiZSBjdXRlIGFuZCB1bnJvbGwgbG9vcHMgYnV0 IHN1bXMgZnJvbSBtZW1vcnkNDQogICB3aXRob3V0IGFuIGludGVybWVkaWF0 ZSByZWdpc3RlciBvcGVyYW5kLiBJdCBhbHNvIGdvZXMgb3ZlcmJvYXJkDQ0K ICAgb24gdGhlIGxvb3AtdW5yb2xsaW5nLiBJdCBhbHNvIGF0dGVtcHRzIHRv IGJlIHRoZSBiZXN0IHRlc3RlZC4NDQpGdW5jdGlvbiAweDBBLCBDaGVja3N1 bSAweDFBOEEsIFByb2Nlc3NvciBjeWNsZXMgMHgwMDAwMDAwMDAwMDAwQTIw DQ0KDQ0KICAgICAgICBBY3R1YWwgc29mdHdhcmUgc291cmNlLiBJdCBpcyBp biBJbnRlbCBmb3JtYXQgKHNvcnJ5KS4NDQogLS0tLS0tLS0tLS0tLS0tLS0t LS0tICAgQyBVIFQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KDQ0K Q09NTUVOVCAqDQ0KCVdyaXR0ZW4gYnkgUmljaGFyZCBCLiBKb2huc29uLCBy am9obnNvbkBhbmFsb2dpYy5jb20uDQ0KCUdpdmVuIHRvIHRoZSBMaW51eCBj b21tdW5pdHkgaW4gaG9wZXMgdGhhdCBzb21lb25lIHdpbGwgZmluZA0NCglh IHVzZSBmb3IgdGhpcyB0b29sLg0NCg0NCglUbyBjb21waWxlOg0NCglNQVNN IENIS1NVTTsNDQoJTElOSyAvVCBDSEtTVU07DQ0KDQ0KCVRoaXMgY29kZSB0 ZXN0cyB0aGUgc3BlZWQgb2YgdmFyaW91cyBUQ1AvSVAgY2hlY2tzdW0gbWV0 aG9kcy4NDQoJSXQgcmVjb3JkcyB0aGUgYWN0dWFsIG1hY2hpbmUgY3ljbGVz IG5lY2Vzc2FyeSB0byBhY2NvbXBsaXNoDQ0KCXRhc2suIFRoZSBwcm9jZXNz b3IgbWFjaGluZSBjeWNsZXMgY29udGludWUgdG8gYWNjdW11bGF0ZSBldmVu DQ0KCXdoZW4gdGhlIHByb2Nlc3NvciBpcyBIQUxURUQuIEl0IGlzLCB0aGVy ZWZvcmUsIGEgdmVyeSBuaWNlIHdheQ0NCglvZiB0ZXN0aW5nIHRoZSBwZXJm b3JtYW5jZSBvZiBhbiBhY3R1YWwgcm91dGluZSB3aXRob3V0IGluZmx1ZW5j ZQ0NCglmcm9tIG90aGVyIHRoaW5ncyB0aGF0IHVzdWFsbHkgaGFwcGVuIG9u IHRoZSB0YXJnZXQgbWFjaGluZS4NDQoNDQoJVGhpcyBjb2RlIHJlcXVpcmVz IGEgUGVudGl1bSB0byBvcGVyYXRlIGJlY2F1c2UgdGhpcyBjaGlwIGhhcw0N Cgl0aGUgaW50ZXJuYWwgY291bnRlciB0aGF0IHdlIGFjY2Vzcy4gSG93ZXZl ciB0aGUgdGVzdGluZyByZXN1bHRzDQ0KCXNob3VsZCBiZSAoYXJlKSBzY2Fs YWJsZSB0byBvdGhlciBtYWNoaW5lcy4NDQoNDQoJVGhpcyB3aWxsIG9wZXJh dGUgdW5kZXIgTVMtRE9TIGlmIHlvdSByZW1vdmUgeW91ciBtZW1vcnkgbWFu YWdlci4NDQoJVGhpcyBjb2RlIGRvZXMgbm90IGVudGVyIHByb3RlY3RlZCBt b2RlIHNvIHlvdSBjYW4gcmVhZGlseSB1c2UNDQoJTVMtRE9TIGZhY2lsaXRp ZXMgdG8gcmVjb3JkIHJlc3VsdHMgYW5kIG1vZGlmeSBjb2RlLiBUaGUgMzIt Yml0DQ0KCWluc3RydWN0aW9ucyB3b3JrIGluIHJlYWwgbW9kZSBqdXN0IGFz IHRoZXkgZG8gaW4gcHJvdGVjdGVkIG1vZGUNDQoJYXMgbG9uZyBhcyB5b3Ug ZG9uJ3QgYXR0ZW1wdCB0byB1c2UgbWVtb3J5IG9mZnNldHMgZ3JlYXRlciB0 aGFuIDY0ay4NDQoNDQoJWWVzLCB0aGVyZSBzdGlsbCBJUyBhIHJlYXNvbiBm b3IgRE9TLiBJdCdzIGEgZ29vZCB0ZXN0IGJlbmNoLg0NCglOb3RlOiBEbyBO T1QgbG9hZCBhIG1lbW9yeSBtYW5hZ2VyIG9yIHlvdSB3aWxsIGdldCBhbiBp bGxlZ2FsDQ0KCW9wY29kZSBleGNlcHRpb24gd2hlbiB5b3UgdHJ5IHRvIGFj Y2VzcyB0aGUgY3ljbGUtdGltZXIuDQ0KDQ0KCVdBUk5JTkchIEFsbCBkZW1v IGNvZGUgYXNzdW1lcyB0aGF0IGEgVENQL0lQIGNoZWNrc3VtIHdpbGwgYWx3 YXlzDQ0KCWNoZWNrc3VtIGFuIEVWRU4gbnVtYmVyIG9mIGJ5dGVzLiBBZGRp bmcgbG9naWMgZm9yIGFuIGV4dHJhIGJ5dGUNDQoJaXQgdHJpdmlhbCwgYnV0 IHRha2VzIENQVSB0aW1lIGFzIHdlbGwuIEFsbCBUQ1AvSVAgYnVmZmVycyBB UkUNDQoJRVZFTiB0byBzdGFydCwgaWYgT0RELCB5b3UgYWRkIHRoZSBleHRy YSBsb2dpYyBPTkNFIHBlciBjYWxsLg0NCioNDQo7DQ0KTVNfRE9TCQlFUVUJ MjFIDQ0KRE9TX1FVSVQJRVFVCTRDMDBIDQ0KRE9TX1BSVAkJRVFVCTA5MDBI DQ0KOy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQ0KOw0NCjsJ SnVzdCBhIGZldyBNQUNST1Mgc2luY2UgdGhpcyBJUyBhIE1BQ1JPIGFzc2Vt Ymxlcg0NCjsNDQpGTFVTSAlNQUNSTw0NCglMT0NBTAlYMSwgWDINDQoJSk1Q IFNIT1JUIFgxDQ0KWDE6CUpNUCBTSE9SVCBYMg0NClgyOg0NCkVORE0NDQo7 DQ0KQVNDSUkJTUFDUk8gVEVYVA0NCklGTkIJPFRFWFQ+DQ0KCURCCScgICAn DQ0KCURCCScmVEVYVCcsMERILCAwQUgNDQpFTFNFDQ0KCURCCTBESCwgMEFI DQ0KRU5ESUYNDQpFTkRNDQ0KDQ0KRU9MCU1BQ1JPDQ0KCURCCSckJw0NCkVO RE0NDQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NDQo7DQ0K OwlMaWtlIGEgJ0MnIHR5cGVkZWYgc3RydWN0Lg0NCjsNDQpUT0RPCVNUUlVD DQ0KRElTUAlEVwkJPwkJOyBPZmZzZXQgb2YgY29tbWVudHMgdG8gcHJpbnQN DQpFWEVDCURXCQk/CQk7IE9mZnNldCBvZiByb3V0aW5lIHRvIGNhbGwNDQpU T0RPCUVORFMNDQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0N DQpQU0VHCVNFR01FTlQgUEFSQSBQVUJMSUMJJ0VWRVJZVEhJTkcnDQ0KCUFT U1VNRQlEUzpQU0VHLCBFUzpQU0VHLCBTUzpQU0VHLCBDUzpQU0VHDQ0KT1JH CTEwMEgNDQpNQUlOCVBST0MJTkVBUg0NCglKTVAJQllQQVNTX0RBVEENDQo7 DQ0KOwlBZGQgbmV3IHByb2NlZHVyZXMgdG8gdGhpcyBzdHJ1Y3R1cmUuIFRl cm1pbmF0ZSB3aXRoIGEgMC4NDQo7DQ0KVEhJTkdTCVRPRE8JPFBSUDAsIENB TENfT1ZFUkhFQUQ+DQ0KCVRPRE8JPFBSUDEsIFNJTVBMRV9DSEtTVU0+DQ0K CVRPRE8JPFBSUDIsIFNJTVBMRV9OT0xPRFNXPg0NCglUT0RPCTxQUlAzLCBV TlJPTExfTE9PUFM+DQ0KCVRPRE8JPFBSUDQsIFVOUk9MTF9MT09QU00+DQ0K CVRPRE8JPFBSUDUsIFVOUk9MTF9MT09QU04+DQ0KCVRPRE8JPFBSUDYsIFNJ TVBMRV9VTlJPTEw+DQ0KCVRPRE8JPFBSUDcsIEZPTERCQUNLX0NIS1NVTT4N DQoJVE9ETwk8UFJQOCwgTk9DT1VOVF9DSEtTVU0+DQ0KCVRPRE8JPFBSUDks IFVOUk9MTF9MT09QU08+DQ0KCVRPRE8JPDAsIDA+DQ0KOw0NCkNUSU1fTE9X X0xXCURECT8JCQk7IEN5Y2xlIHRpbWUgTE9XIGxvbmd3b3JkDQ0KQ1RJTV9I SUdfTFcJREQJPwkJCTsgQ3ljbGUgdGltZSBISUdIIGxvbmd3b3JkDQ0KQ0hL U1VNCQlEVwk/CQkJOyBSZXR1cm5lZCBjaGVja3N1bQ0NCkVWRU4JCQkJCQk7 IFN0YXJ0IG9uIGEgV09SRCBib3VuZGFyeQ0NCklQX1BBQ0tFVAlEQgkxMjgg RFVQKCdJUCBQYWNrZXQuLi4uLi4gJykNDQo7DQ0KOyAgRm9yIHRlc3Rpbmcg dGhhdCBjaGVja3N1bXMgYXJlIGNvcnJlY3QuLi4NDQo7SVBfUEFDS0VUCURC CTIwNDcgZHVwKDBGRkgpDQ0KOwkJREIJMQ0NCjsNDQpQQUNLRVRfTEVOCUVR VQkkIC0gSVBfUEFDS0VUDQ0KU0lHTk9OCUxBQkVMCUJZVEUNDQpBU0NJSQk8 VGhpcyBwcm9ncmFtIG1lYXN1cmVzIHRoZSBDUFUgY3ljbGVzIG5lY2Vzc2Fy eSB0byBwZXJmb3JtIHZhcmlvdXM+DQ0KQVNDSUkJPFRDUC9JUCBDaGVja3N1 bSByb3V0aW5lcy4gIEl0IGlzIG1hZGUgc28geW91IGNhbiByZWFkaWx5IGFk ZCB5b3VyPg0NCkFTQ0lJCTxvd24gcm91dGluZXMgdG8gc2VlIGhvdyB0aGV5 IGNvbXBhcmUuIFRoaXMgcHJvZ3JhbSBuZWVkcyBhIFBlbnRpdW0+DQ0KQVND SUkJPHRvIGV4ZWN1dGUuICBJZiB5b3VyIG1hY2hpbmUganVzdCBjcmFzaGVk LCAgaXQgaXMgTk9UIGEgUGVudGl1bS4+DQ0KQVNDSUkJPFNvcnJ5Lj4NDQpB U0NJSQk8Pg0NCkVPTA0NCjsNDQo7CVRleHQgdG8gYmUgcHJpbnRlZCBvbiB0 aGUgc2NyZWVuIGFmdGVyIG1vZGlmaWNhdGlvbi4NDQo7DQ0KUFJQCURCCSdG dW5jdGlvbiAweCcNDQpGTglEQgknMDAsICcNDQoJREIJJ0NoZWNrc3VtIDB4 Jw0NCkNISwlEQgknMDAwMCwgJw0NCglEQgknUHJvY2Vzc29yIGN5Y2xlcyAw eCcNDQpIMQlEQgknMDAwMCcNDQpIMAlEQgknMDAwMCcNDQpMMQlEQgknMDAw MCcNDQpMMAlEQgknMDAwMCcsIDBESCwwQUgsMERILDBBSCwnJCcNDQpGVU4J REIJMQ0NCi4zODYNDQpCWVBBU1NfREFUQToNDQoJWE9SCUVBWCxFQVgJCQk7 IEhhbmcgZWFybHkgaWYgYSBiYWQgbWFjaGluZS4NDQoJTU9WCUFYLENTDQ0K CU1PVglEUyxBWAkJCTsgTWFrZSBzdXJlIHNlZ21lbnRzIGFyZSBzZXQuDQ0K CU1PVglFUyxBWA0NCglNT1YJU1MsQVgNDQoJTU9WCVNQLE9GRlNFVCBNQUlO CQk7IFN0YWNrIGJlbG93IGNvZGUsIG91dCBvZiB0aGUgd2F5DQ0KOw0NCjsJ Tm93ICBlbmFibGUgQTIwLiBUaGlzIHNob3VsZCBOT1QgYmUgbmVjZXNzYXJ5 LCBidXQgc29tZSBtYWNoaW5lcw0NCjsJbmVlZCB0aGlzIHRvIGhhbmRsZSBF QlgsIEVESSwgZXRjLiwgd2l0aG91dCBhbiBpbGxlZ2FsIG9wY29kZQ0NCjsJ dHJhcC4gTm90ZSwgd2UgYXJlIE5PVCBnb2luZyBpbnRvIHByb3RlY3RlZCBt b2RlLCBhbmQgd2UgYXJlIG5vdA0NCjsJYWNjZXNzaW5nIG1vcmUgdGhhbiAx IG1iIG9mIFJBTS4gVW5jb21tZW50IHRoaXMgaWYgeW91ciBtYWNoaW5lDQ0K OwltYWtlcyBzdHJhbmdlIGdyb2Fucy4NDQo7DQ0KOwlNT1YJQUwsMEQxSAkJ CTsgQ29tbWFuZCB3cml0ZQ0NCjsJT1VUCTY0SCxBTA0NCjsJTU9WCUFMLDBE RkgNDQo7CU9VVAk2MEgsQUwJCQk7IFR1cm4gQTIwIG9uDQ0KOw0NCglNT1YJ RFgsT0ZGU0VUIFNJR05PTgkJOyBQb2ludCB0byBzaWdub24gbWVzc2FnZQ0N CglNT1YJQVgsRE9TX1BSVAkJCTsgTVMtRE9TIHByaW50IGZ1bmN0aW9uDQ0K CUlOVAlNU19ET1MJCQkJOyBDYWxsIE1TLURPUw0NCjsNDQoJTU9WCUJYLE9G RlNFVCBUSElOR1MJCTsgVGFibGUgb2YgdGhpbmdzIHRvIGRvDQ0KUlVOOglQ VVNICUJYCQkJCTsgU2F2ZSwgZGVzdHJveWVkIGV2ZXJ5d2hlcmUNDQoJTU9W CURYLFdPUkQgUFRSIFtCWC5UT0RPLkRJU1BdCTsgR2V0IHN0cmluZyB0byBw cmludA0NCglNT1YJQVgsRE9TX1BSVAkJCTsgTVMtRE9TIHByaW50IGZ1bmN0 aW9uDQ0KCUlOVAlNU19ET1MJCQkJOyBDYWxsIE1TLURPUw0NCglDQUxMCVNU QVJUX1RJTUVSCQkJOyBTdGFydCBjeWNsZSB0aW1lcg0NCglDQUxMCVtCWC5U T0RPLkVYRUNdCQkJOyBFeGVjdXRlIHRoZSBmdW5jdGlvbg0NCglNT1YJV09S RCBQVFIgQ0hLU1VNLEFYCQk7IFNhdmUgcmVzdWx0DQ0KCUNBTEwJU1RPUF9U SU1FUgkJCTsgU3RvcCB0aGUgY3ljbGUgdGltZXINDQoJTU9WCUFMLEJZVEUg UFRSIFtGVU5dCQk7IEdldCBmdW5jdGlvbiBudW1iZXINDQoJSU5DCUJZVEUg UFRSIFtGVU5dCQkJOyBSZWFkeSBuZXh0IGZ1bmN0aW9uDQ0KCUNBTEwJRElT UExBWQkJCQk7IERpc3BsYXkgdGhlIHJlc3VsdHMNDQoJUE9QCUJYCQkJCTsg UmVzdG9yZSBwb2ludGVyDQ0KOw0NCglBREQJQlgsIFRZUEUoVE9ETykJCQk7 IFRZUEUgaXMgbGlrZSBzaXplb2YoKQ0NCglDTVAJV09SRCBQVFIgW0JYLlRP RE8uRElTUF0sMAk7IENoZWNrIGZvciBlbmQgb2YgbGlzdA0NCglKTloJUlVO CQkJCTsgTm90IGRvbmUgeWV0DQ0KOw0NCglNT1YJQVgsRE9TX1FVSVQJCQk7 IEV4aXQgdG8gTVMtRE9TDQ0KCUlOVAlNU19ET1MJCQkJOyBDYWxsIE1TLURP Uw0NCk1BSU4JRU5EUA0NCjsNDQo7DQ0KOy09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tDQ0KOw0NClBSUDAJTEFCRUwJQllURQ0NCkFTQ0lJCTxU aGlzIGp1c3QgZ2V0cyB0aGUgb3ZlcmhlYWQgaW4gbWFraW5nIHRoZSBmdW5j dGlvbiBjYWxscy4+DQ0KQVNDSUkJPFlvdSBjYW4gc3VidHJhY3QgdGhlIHJl dHVybmVkIGN5Y2xlcyBmcm9tIHRoZSBvdGhlciBjYWxscyBpZj4NDQpBU0NJ SQk8eW91IHdhbnQgdG8gYmUgcGVkYW50aWMuIFRoZSByZXR1cm5lZCBjaGVj a3N1bSBpcyB1bmRlZmluZWQuPg0NCkVPTA0NCjsNDQpDQUxDX09WRVJIRUFE CVBST0MJTkVBUg0NCglSRVQNDQpDQUxDX09WRVJIRUFECUVORFANDQo7DQ0K Oy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQ0KOw0NClBSUDEJ TEFCRUwJQllURQ0NCkFTQ0lJIDxUaGlzIHJldHVybnMgYSB3b3JkIGluIEVB WCByZXByZXNlbnRpbmcgdGhlIFRDUC9JUCBDaGVja3N1bS4+DQ0KQVNDSUkg PEl0IHVzZXMgTE9EU1cgYW5kIGlzIGRlc2lnbmVkIG9ubHkgdG8gYmUgc2lt cGxlLj4NDQpFT0wNDQo7DQ0KU0lNUExFX0NIS1NVTQlQUk9DCU5FQVINDQoJ TU9WCUVDWCwgKFBBQ0tFVF9MRU4gU0hSIDEpCTsgR2V0IHBhY2tldCBsZW5n dGgNDQoJTU9WCUVTSSwgT0ZGU0VUIElQX1BBQ0tFVAk7IFBvaW50IHRvIHBh Y2tldA0NCglYT1IJRURYLCBFRFgJCTsgQ2xlYXIgQ1ksIHplcm8NDQoJTU9W CUVBWCwgRURYCQk7IE1ha2Ugc3VyZSBoaWdoIHdvcmQgaXMgemVybw0NCglD TEQNDQo7DQ0KQ0hLRU06CUxPRFNXCQkJCTsgRG9pdA0NCglBREMJRFgsQVgJ CQk7IFN1bSB3b3JkcyBvbmx5IHdpdGggcHJldmlvdXMgQ1kNDQoJTE9PUAlD SEtFTQkJCTsgRG9pdDJpdA0NCglBREMJRFgsMAkJCTsgUG9zc2libGUgbGFz dCBDWQ0NCglNT1YJRUFYLEVEWAkJCTsgUmV0dXJuIGluIEVBWCB0byBiZSBm YWlyDQ0KCVJFVA0NClNJTVBMRV9DSEtTVU0JRU5EUA0NCjstPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LQ0NClBSUDIJTEFCRUwJQllURQ0NCkFT Q0lJCTxUaGlzIHBlcmZvcm1zIHRoZSBzYW1lIGNoZWNrc3VtLCBidXQgZG9l cyBub3QgdXNlIGJ1aWx0LWluIG1hY3Jvcz4NDQpBU0NJSQk8c3VjaCBhcyBM T09QIGFuZCBMT0RTVy4+DQ0KRU9MDQ0KOw0NClNJTVBMRV9OT0xPRFNXCVBS T0MJTkVBUg0NCglNT1YJRUNYLCAoUEFDS0VUX0xFTiBTSFIgMSkJOyBHZXQg cGFja2V0IGxlbmd0aA0NCglNT1YJRUJYLCBPRkZTRVQgSVBfUEFDS0VUCTsg UG9pbnQgdG8gcGFja2V0DQ0KCVhPUglFRFgsIEVEWAkJOyBDbGVhciBDWSwg emVybw0NCglNT1YJRUFYLCBFRFgJCTsgTWFrZSBzdXJlIGhpZ2ggd29yZCBp cyB6ZXJvDQ0KOw0NClNVTUlUOglNT1YJQVgsIFdPUkQgUFRSIFtFQlhdCTsg R2V0IHRoZSB3b3JkDQ0KCUFERAlEWCxBWAkJCTsgU3VtIHdpdGggcHJldmlv dXMNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQoJQURECUVCWCwg MgkJCTsgUmVhZHkgbmV4dCB3b3JkDQ0KCURFQwlFQ1gJCQk7IEJ1bXAgdGhl IHBhY2tldCBsZW5ndGgNDQoJSk5aCVNVTUlUCQkJOyBDb250aW51ZQ0NCglN T1YJRUFYLEVEWAkJCTsgUmV0dXJuIGluIEVBWCB0byBiZSBmYWlyDQ0KCVJF VA0NClNJTVBMRV9OT0xPRFNXCUVORFANDQo7DQ0KOy09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tDQ0KUFJQMwlMQUJFTAlCWVRFDQ0KQVNDSUkg PFRoaXMgdHJpZXMgdG8gYmUgY3V0ZSBhbmQgdW5yb2xsIGxvb3BzLiBOb3Rl IHRoYXQgdGhlIHVucm9sbGluZz4NDQpBU0NJSSA8d29ya3Mgb2theSwgaG93 ZXZlciB0aGVyZSBpcyBhIGxvdCBvZiBsb2dpYyBuZWNlc3Nhcnkgd2hpY2gg Y291bGQ+DQ0KQVNDSUkgPHVuZHVlIGp1c3QgYWJvdXQgZXZlcnl0aGluZyB3 ZSBhcmUgYXR0ZW1wdGluZyB0byBhY2NvbXBsaXNoLj4NDQpFT0wNDQo7DQ0K VU5ST0xMX0xPT1BTCVBST0MJTkVBUg0NCglNT1YJRUNYLCAoUEFDS0VUX0xF TiBTSFIgMSkJOyBHZXQgcGFja2V0IGxlbmd0aA0NCglNT1YJRUJYLCBPRkZT RVQgSVBfUEFDS0VUCTsgUG9pbnQgdG8gcGFja2V0DQ0KCVhPUglFRFgsIEVE WAkJOyBDbGVhciBDWSwgemVybw0NCglNT1YJRUFYLCBFRFgJCTsgTWFrZSBz dXJlIGhpZ2ggd29yZCBpcyB6ZXJvDQ0KOw0NClRSSUFMOglDTVAJRUNYLDgJ CQk7IEF0IGxlYXN0IDggd29yZHM/DQ0KCUpBRQlETzgJCQk7IFllcywgZG8g OCB3b3JkcywgdW5yb2xsZWQNDQoJQ01QCUVDWCw0CQkJOyBBdCBsZWFzdCA0 IHdvcmRzPw0NCglKQUUJRE80CQkJOyBZZXMsIGRvIDQgd29yZHMgdW5yb2xs ZWQNDQoJSk1QCURPSVQJCQk7IE5vbmUgb2YgYWJvdmUNDQoNDQpETzg6CU1P VglBWCwgV09SRCBQVFIgW0VCWF0JOyBHZXQgdGhlIHdvcmQNDQoJQURECURY LEFYCQkJOyBTdW0gd2l0aCBwcmV2aW91cw0NCglBREMJRFgsMAkJCTsgUGlj ayB1cCBjYXJyeQ0NCjsNDQoJTU9WCUFYLCBXT1JEIFBUUiBbRUJYKzJdCTsg R2V0IHRoZSB3b3JkDQ0KCUFERAlEWCxBWAkJCTsgU3VtIHdpdGggcHJldmlv dXMNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCU1PVglB WCwgV09SRCBQVFIgW0VCWCs0XQk7IEdldCB0aGUgd29yZA0NCglBREQJRFgs QVgJCQk7IFN1bSB3aXRoIHByZXZpb3VzDQ0KCUFEQwlEWCwwCQkJOyBQaWNr IHVwIGNhcnJ5DQ0KOw0NCglNT1YJQVgsIFdPUkQgUFRSIFtFQlgrNl0JOyBH ZXQgdGhlIHdvcmQNDQoJQURECURYLEFYCQkJOyBTdW0gd2l0aCBwcmV2aW91 cw0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJTU9WCUFY LCBXT1JEIFBUUiBbRUJYKzhdCTsgR2V0IHRoZSB3b3JkDQ0KCUFERAlEWCxB WAkJCTsgU3VtIHdpdGggcHJldmlvdXMNDQoJQURDCURYLDAJCQk7IFBpY2sg dXAgY2FycnkNDQo7DQ0KCU1PVglBWCwgV09SRCBQVFIgW0VCWCsxMF0JOyBH ZXQgdGhlIHdvcmQNDQoJQURECURYLEFYCQkJOyBTdW0gd2l0aCBwcmV2aW91 cw0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJTU9WCUFY LCBXT1JEIFBUUiBbRUJYKzEyXQk7IEdldCB0aGUgd29yZA0NCglBREQJRFgs QVgJCQk7IFN1bSB3aXRoIHByZXZpb3VzDQ0KCUFEQwlEWCwwCQkJOyBQaWNr IHVwIGNhcnJ5DQ0KOw0NCglNT1YJQVgsIFdPUkQgUFRSIFtFQlgrMTRdCTsg R2V0IHRoZSB3b3JkDQ0KCUFERAlEWCxBWAkJCTsgU3VtIHdpdGggcHJldmlv dXMNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlF QlgsMTYJCQk7IEFkanVzdCBwb2ludGVyDQ0KCVNVQglFQ1gsOAkJCTsgQWRq dXN0IGNvdW50DQ0KCUpaCURPTkUJCQk7IEFsbCBkb25lDQ0KCUpNUAlUUklB TAkJCTsgRG8gbW9yZQ0NCg0NCkRPNDoJTU9WCUFYLCBXT1JEIFBUUiBbRUJY XQk7IEdldCB0aGUgd29yZA0NCglBREQJRFgsQVgJCQk7IFN1bSB3aXRoIHBy ZXZpb3VzDQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglN T1YJQVgsIFdPUkQgUFRSIFtFQlgrMl0JOyBHZXQgdGhlIHdvcmQNDQoJQURE CURYLEFYCQkJOyBTdW0gd2l0aCBwcmV2aW91cw0NCglBREMJRFgsMAkJCTsg UGljayB1cCBjYXJyeQ0NCjsNDQoJTU9WCUFYLCBXT1JEIFBUUiBbRUJYKzRd CTsgR2V0IHRoZSB3b3JkDQ0KCUFERAlEWCxBWAkJCTsgU3VtIHdpdGggcHJl dmlvdXMNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCU1P VglBWCwgV09SRCBQVFIgW0VCWCs2XQk7IEdldCB0aGUgd29yZA0NCglBREQJ RFgsQVgJCQk7IFN1bSB3aXRoIHByZXZpb3VzDQ0KCUFEQwlEWCwwCQkJOyBQ aWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRUJYLDgJCQk7IEFkanVzdCBwb2lu dGVyDQ0KCVNVQglFQ1gsNAkJCTsgQWRqdXN0IGxlbmd0aA0NCglKWglET05F CQkJOyBXZSBhcmUgZG9uZQ0NCglKTVAJVFJJQUwJCQk7IFRyeSBtb3JlDQ0K DQ0KRE8yOglNT1YJQVgsIFdPUkQgUFRSIFtFQlhdCTsgR2V0IHRoZSB3b3Jk DQ0KCUFERAlEWCxBWAkJCTsgU3VtIHdpdGggcHJldmlvdXMNDQoJQURDCURY LDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCU1PVglBWCwgV09SRCBQVFIg W0VCWCsyXQk7IEdldCB0aGUgd29yZA0NCglBREQJRFgsQVgJCQk7IFN1bSB3 aXRoIHByZXZpb3VzDQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0K Ow0NCglBREQJRUJYLDQJCQk7IEFkanVzdCBwb2ludGVyDQ0KCVNVQglFQ1gs MgkJCTsgQWRqdXN0IGxlbmd0aA0NCglKWglET05FCQkJOyBXZSBhcmUgZG9u ZQ0NCglKTVAJVFJJQUwJCQk7IFRyeSBtb3JlDQ0KDQ0KRE9JVDoJTU9WCUFY LCBXT1JEIFBUUiBbRUJYXQk7IEdldCB0aGUgd29yZA0NCglBREQJRFgsQVgJ CQk7IFN1bSB3aXRoIHByZXZpb3VzDQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVw IGNhcnJ5DQ0KCUFERAlFQlgsIDIJCQk7IFJlYWR5IG5leHQgd29yZA0NCglE RUMJRUNYCQkJOyBCdW1wIHRoZSBwYWNrZXQgbGVuZ3RoDQ0KCUpOWglET0lU CQkJOyBDb250aW51ZQ0NCjsNDQpET05FOglNT1YJRUFYLEVEWAkJCTsgUmV0 dXJuIGluIEVBWCB0byBiZSBmYWlyDQ0KCVJFVA0NClVOUk9MTF9MT09QUwlF TkRQDQ0KOw0NCjstPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0N ClBSUDQJTEFCRUwJQllURQ0NCkFTQ0lJIDxUaGlzIHRyaWVzIHRvIGJlIGN1 dGUgYW5kIHVucm9sbCBsb29wcyBidXQgc3VtcyBmcm9tIG1lbW9yeT4NDQpB U0NJSSA8d2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgcmVnaXN0ZXIgb3BlcmFu ZC4+DQ0KRU9MDQ0KOw0NClVOUk9MTF9MT09QU00JUFJPQwlORUFSDQ0KCU1P VglFQ1gsIChQQUNLRVRfTEVOIFNIUiAxKQk7IEdldCBwYWNrZXQgbGVuZ3Ro DQ0KCU1PVglFQlgsIE9GRlNFVCBJUF9QQUNLRVQJOyBQb2ludCB0byB0aGUg cGFja2V0DQ0KCVhPUglFRFgsIEVEWAkJOyBDbGVhciBDWSwgemVybw0NCglN T1YJRUFYLCBFRFgJCTsgTWFrZSBzdXJlIGhpZ2ggd29yZCBpcyB6ZXJvDQ0K Ow0NCk1UUklBTDoJQ01QCUVDWCw4CQkJOyBBdCBsZWFzdCA4IHdvcmRzPw0N CglKQUUJTURPOAkJCTsgWWVzLCBkbyA4IHdvcmRzLCB1bnJvbGxlZA0NCglD TVAJRUNYLDQJCQk7IEF0IGxlYXN0IDQgd29yZHM/DQ0KCUpBRQlNRE80CQkJ OyBZZXMsIGRvIDQgd29yZHMsIHVucm9sbGVkDQ0KCUpNUAlNRE9JVAkJCTsg Tm9uZSBvZiBhYm92ZQ0NCg0NCk1ETzg6CUFERAlEWCwgV09SRCBQVFIgW0VC WF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2Fy cnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsyXQk7IFN1bSB0aGUg d29yZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURE CURYLCBXT1JEIFBUUiBbRUJYKzRdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlE WCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRFgsIFdPUkQgUFRS IFtFQlgrNl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sg dXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCs4XQk7IFN1 bSB0aGUgd29yZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsN DQoJQURECURYLCBXT1JEIFBUUiBbRUJYKzEwXQk7IFN1bSB0aGUgd29yZA0N CglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURECURYLCBX T1JEIFBUUiBbRUJYKzEyXQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsMAkJ CTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURECURYLCBXT1JEIFBUUiBbRUJY KzE0XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBj YXJyeQ0NCjsNDQoJQURECUVCWCwxNgkJCTsgQWRqdXN0IHBvaW50ZXINDQoJ U1VCCUVDWCw4CQkJOyBBZGp1c3QgY291bnQNDQoJSloJTURPTkUJCQk7IFdl IGFyZSBkb25lDQ0KCUpNUAlNVFJJQUwJCQk7IFRyeSBtb3JlDQ0KDQ0KTURP NDoJQURECURYLCBXT1JEIFBUUiBbRUJYXQk7IFN1bSB0aGUgd29yZA0NCglB REMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURECURYLCBXT1JE IFBUUiBbRUJYKzJdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwwCQkJOyBQ aWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRFgsIFdPUkQgUFRSIFtFQlgrNF0J OyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkN DQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCs2XQk7IFN1bSB0aGUgd29y ZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURECUVC WCw4CQkJOyBBZGp1c3QgcG9pbnRlcg0NCglTVUIJRUNYLDQJCQk7IEFkanVz dCBjb3VudA0NCglKWglNRE9ORQkJCTsgV2UgYXJlIGRvbmUNDQoJSk1QCU1U UklBTAkJCTsgVHJ5IG1vcmUNDQoNDQpNRE8yOglBREQJRFgsIFdPUkQgUFRS IFtFQlhdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVw IGNhcnJ5DQ0KOw0NCglBREQJRFgsIFdPUkQgUFRSIFtFQlgrMl0JOyBTdW0g dGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0K CUFERAlFQlgsNAkJCTsgQWRqdXN0IHBvaW50ZXINDQoJU1VCCUVDWCwyCQkJ OyBBZGp1c3QgY291bnQNDQoJSloJTURPTkUJCQk7IFdlIGFyZSBkb25lDQ0K CUpNUAlNVFJJQUwJCQk7IFRyeSBtb3JlDQ0KDQ0KTURPSVQ6CUFERAlEWCwg V09SRCBQVFIgW0VCWF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7 IFBpY2sgdXAgY2FycnkNDQoJQURECUVCWCwgMgkJCTsgUmVhZHkgbmV4dCB3 b3JkDQ0KCURFQwlFQ1gJCQk7IEJ1bXAgdGhlIHBhY2tldCBsZW5ndGgNDQoJ Sk5aCU1ET0lUCQkJOyBDb250aW51ZQ0NCjsNDQpNRE9ORToJTU9WCUVBWCxF RFgJCQk7IFJldHVybiBpbiBFQVggdG8gYmUgZmFpcg0NCglSRVQNDQpVTlJP TExfTE9PUFNNCUVORFANDQo7DQ0KOy09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tDQ0KUFJQNQlMQUJFTAlCWVRFDQ0KQVNDSUkgPFRoaXMgdHJp ZXMgdG8gYmUgY3V0ZSBhbmQgdW5yb2xsIGxvb3BzIGJ1dCBzdW1zIGZyb20g bWVtb3J5Pg0NCkFTQ0lJIDx3aXRob3V0IGFuIGludGVybWVkaWF0ZSByZWdp c3RlciBvcGVyYW5kLiBJdCBhbHNvIGdvZXMgb3ZlcmJvYXJkPg0NCkFTQ0lJ IDxvbiB0aGUgbG9vcC11bnJvbGxpbmcuPg0NCkVPTA0NCjsNDQpVTlJPTExf TE9PUFNOCVBST0MJTkVBUg0NCglNT1YJRUNYLCAoUEFDS0VUX0xFTiBTSFIg MSkJOyBHZXQgcGFja2V0IGxlbmd0aA0NCglNT1YJRUJYLCBPRkZTRVQgSVBf UEFDS0VUCTsgUG9pbnQgdG8gdGhlIHBhY2tldA0NCglYT1IJRURYLCBFRFgJ CTsgQ2xlYXIgQ1ksIHplcm8NDQoJTU9WCUVBWCwgRURYCQk7IE1ha2Ugc3Vy ZSBoaWdoIHdvcmQgaXMgemVybw0NCg0NCk5UUklBTDoJQ01QCUVDWCwxNgkJ CTsgQXQgbGVhc3QgMTYgd29yZHM/DQ0KCUpBRQlORE8xNgkJCTsgWWVzLCBk byAxNiB3b3JkcyB1bnJvbGxlZA0NCglDTVAJRUNYLDgJCQk7IEF0IGxlYXN0 IDggd29yZHM/DQ0KCUpBRQlORE84CQkJOyBZZXMsIGRvIDggd29yZHMgdW5y b2xsZWQNDQoJQ01QCUVDWCw0CQkJOyBBdCBsZWFzdCA0IHdvcmRzPw0NCglK QUUJTkRPNAkJCTsgWWVzLCBkbyA0IHdvcmRzIHVucm9sbGVkDQ0KCUpNUAlO RE9JVAkJCTsgTm9uZSBvZiBhYm92ZQ0NCg0NCk5ETzE2OglBREQJRFgsIFdP UkQgUFRSIFtFQlhdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwwCQkJOyBQ aWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRFgsIFdPUkQgUFRSIFtFQlgrMl0J OyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkN DQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCs0XQk7IFN1bSB0aGUgd29y ZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURECURY LCBXT1JEIFBUUiBbRUJYKzZdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCww CQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRFgsIFdPUkQgUFRSIFtF QlgrOF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAg Y2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsxMF0JOyBTdW0g dGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0K CUFERAlEWCwgV09SRCBQVFIgW0VCWCsxMl0JOyBTdW0gdGhlIHdvcmQNDQoJ QURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09S RCBQVFIgW0VCWCsxNF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7 IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsx Nl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2Fy cnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsxOF0JOyBTdW0gdGhl IHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFE RAlEWCwgV09SRCBQVFIgW0VCWCsyMF0JOyBTdW0gdGhlIHdvcmQNDQoJQURD CURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQ VFIgW0VCWCsyMl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBp Y2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsyNF0J OyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkN DQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsyNl0JOyBTdW0gdGhlIHdv cmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlE WCwgV09SRCBQVFIgW0VCWCsyOF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURY LDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIg W0VCWCszMF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sg dXAgY2FycnkNDQo7DQ0KCUFERAlFQlgsMzIJCQk7IEFkanVzdCBwb2ludGVy DQ0KCVNVQglFQ1gsMTYJCQk7IEFkanVzdCBjb3VudA0NCglKWglORE9ORQkJ CTsgV2UgYXJlIGRvbmUNDQoJSk1QCU5UUklBTAkJCTsgVHJ5IG1vcmUNDQoN DQpORE84OglBREQJRFgsIFdPUkQgUFRSIFtFQlhdCTsgU3VtIHRoZSB3b3Jk DQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRFgs IFdPUkQgUFRSIFtFQlgrMl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJ CQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VC WCs0XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBj YXJyeQ0NCjsNDQoJQURECURYLCBXT1JEIFBUUiBbRUJYKzZdCTsgU3VtIHRo ZSB3b3JkDQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglB REQJRFgsIFdPUkQgUFRSIFtFQlgrOF0JOyBTdW0gdGhlIHdvcmQNDQoJQURD CURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQ VFIgW0VCWCsxMF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBp Y2sgdXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsxMl0J OyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkN DQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsxNF0JOyBTdW0gdGhlIHdv cmQNDQoJQURDCURYLDAJCQk7IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlF QlgsMTYJCQk7IEFkanVzdCBwb2ludGVyDQ0KCVNVQglFQ1gsOAkJCTsgQWRq dXN0IGNvdW50DQ0KCUpaCU5ET05FCQkJOyBXZSBhcmUgZG9uZQ0NCglKTVAJ TlRSSUFMCQkJOyBUcnkgbW9yZQ0NCg0NCk5ETzQ6CUFERAlEWCwgV09SRCBQ VFIgW0VCWF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7IFBpY2sg dXAgY2FycnkNDQo7DQ0KCUFERAlEWCwgV09SRCBQVFIgW0VCWCsyXQk7IFN1 bSB0aGUgd29yZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsN DQoJQURECURYLCBXT1JEIFBUUiBbRUJYKzRdCTsgU3VtIHRoZSB3b3JkDQ0K CUFEQwlEWCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRFgsIFdP UkQgUFRSIFtFQlgrNl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLDAJCQk7 IFBpY2sgdXAgY2FycnkNDQo7DQ0KCUFERAlFQlgsOAkJCTsgQWRqdXN0IHBv aW50ZXINDQoJU1VCCUVDWCw0CQkJOyBBZGp1c3QgY291bnQNDQoJSloJTkRP TkUJCQk7IFdlIGFyZSBkb25lDQ0KCUpNUAlOVFJJQUwJCQk7IFRyeSBtb3Jl DQ0KDQ0KTkRPMjoJQURECURYLCBXT1JEIFBUUiBbRUJYXQk7IFN1bSB0aGUg d29yZA0NCglBREMJRFgsMAkJCTsgUGljayB1cCBjYXJyeQ0NCjsNDQoJQURE CURYLCBXT1JEIFBUUiBbRUJYKzJdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlE WCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0KOw0NCglBREQJRUJYLDQJCQk7IEFk anVzdCBwb2ludGVyDQ0KCVNVQglFQ1gsMgkJCTsgQWRqdXN0IGNvdW50DQ0K CUpaCU5ET05FCQkJOyBXZSBhcmUgZG9uZQ0NCglKTVAJTlRSSUFMCQkJOyBU cnkgbW9yZQ0NCg0NCk5ET0lUOglBREQJRFgsIFdPUkQgUFRSIFtFQlhdCTsg U3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwwCQkJOyBQaWNrIHVwIGNhcnJ5DQ0K CUFERAlFQlgsIDIJCQk7IFJlYWR5IG5leHQgd29yZA0NCglERUMJRUNYCQkJ OyBCdW1wIHRoZSBwYWNrZXQgbGVuZ3RoDQ0KCUpOWglORE9JVAkJCTsgQ29u dGludWUNDQo7DQ0KTkRPTkU6CU1PVglFQVgsRURYCQkJOyBSZXR1cm4gaW4g RUFYIHRvIGJlIGZhaXINDQoJUkVUDQ0KVU5ST0xMX0xPT1BTTglFTkRQDQ0K Ow0NCjstPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0NCjsNDQpQ UlA2CUxBQkVMCUJZVEUNDQpBU0NJSSA8VGhpcyB0cmllcyB0byBiZSBjdXRl IHdpdGggdGhlIExPRFNXIGFuZCB1bnJvbGxzIHNvbWUgbG9vcHMuPg0NCkFT Q0lJIDxJdCBpcyBhbiBleGFtcGxlIG9mIGV4dHJlbWUgY29tcGxpY2F0aW9u IGRvaW5nIHZlcnkgbGl0dGxlLj4NDQpFT0wNDQo7DQ0KU0lNUExFX1VOUk9M TAlQUk9DCU5FQVINDQoJTU9WCUVDWCwgKFBBQ0tFVF9MRU4gU0hSIDEpDQ0K CU1PVglFU0ksIE9GRlNFVCBJUF9QQUNLRVQNDQoJWE9SCUVEWCwgRURYCQk7 IENsZWFyIENZLCB6ZXJvDQ0KCU1PVglFQlgsIEVEWAkJOyBaZXJvIHRoaXMg dG9vDQ0KCU1PVglFQVgsIEVEWAkJOyBNYWtlIHN1cmUgaGlnaCB3b3JkIGlz IHplcm8NDQoJQ0xEDQ0KDQ0KVFJZRU06CUNNUAlFQ1gsMTYJCQk7IEF0IGxl YXN0IDE2IHdvcmRzPw0NCglKQUUJUzE2CQkJOyBZZXMsIGRvIDE2IHdvcmRz IHVucm9sbGVkDQ0KCUNNUAlFQ1gsOAkJCTsgQXQgbGVhc3QgOCB3b3Jkcz8N DQoJSkFFCVM4CQkJOyBZZXMsIGRvIDggd29yZHMgdW5yb2xsZWQNDQoJQ01Q CUVDWCw0CQkJOyBBdCBsZWFzdCA0IHdvcmRzPw0NCglKQUUJUzQJCQk7IFll cywgZG8gNCB3b3JkcyB1bnJvbGxlZA0NCglKTVAJUFJPUAkJCTsgTm9uZSBv ZiBhYm92ZQ0NCjsNDQpTMTY6CVNIUglCWCwxCQkJOyBQcm9wYWdhdGUgbGFz dCBDWQ0NCglMT0RTVw0NCglBREMJRFgsQVgNDQoJTE9EU1cNDQoJQURDCURY LEFYDQ0KCUxPRFNXDQ0KCUFEQwlEWCxBWA0NCglMT0RTVw0NCglBREMJRFgs QVgNDQoJTE9EU1cNDQoJQURDCURYLEFYDQ0KCUxPRFNXDQ0KCUFEQwlEWCxB WA0NCglMT0RTVw0NCglBREMJRFgsQVgNDQoJTE9EU1cNDQoJQURDCURYLEFY DQ0KCUxPRFNXDQ0KCUFEQwlEWCxBWA0NCglMT0RTVw0NCglBREMJRFgsQVgN DQoJTE9EU1cNDQoJQURDCURYLEFYDQ0KCUxPRFNXDQ0KCUFEQwlEWCxBWA0N CglMT0RTVw0NCglBREMJRFgsQVgNDQoJTE9EU1cNDQoJQURDCURYLEFYDQ0K CUxPRFNXDQ0KCUFEQwlEWCxBWA0NCglMT0RTVw0NCglBREMJRFgsQVgNDQo7 DQ0KCUFEQwlCWCwwCQkJOyBQcm9wYWdhdGUgbGFzdCBDWQ0NCglTVUIJRUNY LDE2CQkJOyBBZGp1c3QgY291bnQNDQoJSloJU0RPTkUJCQk7IFdlIGFyZSBk b25lDQ0KCUpNUAlUUllFTQkJCTsgVHJ5IG1vcmUNDQo7DQ0KUzg6CVNIUglC WCwxCQkJOyBQcm9wYWdhdGUgbGFzdCBDWQ0NCglMT0RTVw0NCglBREMJRFgs QVgNDQoJTE9EU1cNDQoJQURDCURYLEFYDQ0KCUxPRFNXDQ0KCUFEQwlEWCxB WA0NCglMT0RTVw0NCglBREMJRFgsQVgNDQoJTE9EU1cNDQoJQURDCURYLEFY DQ0KCUxPRFNXDQ0KCUFEQwlEWCxBWA0NCglMT0RTVw0NCglBREMJRFgsQVgN DQoJTE9EU1cNDQoJQURDCURYLEFYDQ0KOw0NCglBREMJQlgsMAkJCTsgUHJv cGFnYXRlIHBvc3NpYmxlIGNhcnJ5DQ0KCVNVQglFQ1gsOAkJCTsgQWRqdXN0 IGNvdW50DQ0KCUpaCVNET05FCQkJOyBXZSBhcmUgZG9uZQ0NCglKTVAJVFJZ RU0JCQk7IFRyeSBtb3JlDQ0KOw0NClM0OglTSFIJQlgsMQkJCTsgUHJvcGFn YXRlIGxhc3QgY2FycnkNDQoJTE9EU1cNDQoJQURDCURYLEFYDQ0KCUxPRFNX DQ0KCUFEQwlEWCxBWA0NCglMT0RTVw0NCglBREMJRFgsQVgNDQoJTE9EU1cN DQoJQURDCURYLEFYDQ0KCUFEQwlCWCwwCQkJOyBTYXZlIHBvc3NpYmxlIGNh cnJ5DQ0KOw0NCglTVUIJRUNYLDQJCQk7IEFkanVzdCBjb3VudA0NCglKWglT RE9ORQkJCTsgV2UgYXJlIGRvbmUNDQoJSk1QCVRSWUVNCQkJOyBUcnkgbW9y ZQ0NCjsNDQpQUk9QOglTSFIJQlgsMQkJCTsgUHJvcGFnYXRlIGxhc3QgQ1kN DQpTSU1QTEU6CUxPRFNXCQkJCTsgRG9pdA0NCglBREMJRFgsQVgJCQk7IFN1 bSB3b3JkcyBvbmx5IHdpdGggcHJldmlvdXMgQ1kNDQoJTE9PUAlTSU1QTEUJ CQk7IERvaXQyaXQNDQoJQURDCUJYLDAJCQk7IFBvc3NpYmxlIGxhc3QgQ1kN DQpTRE9ORToJU0hSCUJYLDENDQoJQURDCURYLDAJCQk7IFByb3BhZ2F0ZSBs YXN0IENZDQ0KCU1PVglFQVgsRURYCQkJOyBSZXR1cm4gaW4gRUFYIHRvIGJl IGZhaXINDQoJUkVUDQ0KU0lNUExFX1VOUk9MTAlFTkRQDQ0KOw0NCjstPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0NCjsNDQpQUlA3CUxBQkVM CUJZVEUNDQpBU0NJSSA8VGhpcyBpcyBhIHZlcnNpb24gb2YgdGhlIHNpbXBs ZSBjaGVja3N1bS4gSXQgdXNlcyBMT0RTVy4gSG93ZXZlcj4NDQpBU0NJSSA8 aXQgZm9sZHMgYmFjayBhbGwgdGhlIGNhcnJpZXMgbXVjaCBsaWtlIHRoZSBz dGFuZGFyZCBDIGNvZGUuPg0NCkVPTA0NCjsNDQpGT0xEQkFDS19DSEtTVU0J UFJPQwlORUFSDQ0KCU1PVglFQ1gsIChQQUNLRVRfTEVOIFNIUiAxKQk7IEdl dCBwYWNrZXQgbGVuZ3RoDQ0KCU1PVglFU0ksIE9GRlNFVCBJUF9QQUNLRVQJ OyBQb2ludCB0byBwYWNrZXQNDQoJWE9SCUVEWCwgRURYCQk7IENsZWFyIENZ LCB6ZXJvDQ0KCU1PVglFQVgsIEVEWAkJOyBNYWtlIHN1cmUgaGlnaCB3b3Jk IGlzIHplcm8NDQoJQ0xEDQ0KOw0NCkNIS0VNVzoJTE9EU1cJCQkJOyBEb2l0 DQ0KCUFERAlFRFgsRUFYCQkJOyBTdW0gbG9uZ3dvcmRzIG9ubHkNDQoJTE9P UAlDSEtFTVcJCQk7IERvaXQyaXQNDQoJTU9WCUVBWCxFRFgNDQoJU0hSCUVB WCwxNgkJCTsgRXhwb3NlIHRoZSBjYXJyaWVzDQ0KCUFERAlEWCxBWAkJCTsg U3VtIGFsbCB0aGUgY2FycmllcyBpbnRvIExPVyB3b3JkDQ0KCUFEQwlEWCww CQkJOyBUaGUgbGFzdCBzdW0gY291bGQgaGF2ZSBjYXJyaWVkDQ0KCUFORAlF RFgsMEZGRkZICQk7IFNhdmUgb25seSB0aGUgbG93IHdvcmQNDQoJTU9WCUVB WCxFRFgJCQk7IFJldHVybiBpbiBFQVggdG8gYmUgZmFpcg0NCglSRVQNDQpG T0xEQkFDS19DSEtTVU0JRU5EUA0NCjsNDQo7LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS0NDQo7DQ0KUFJQOAlMQUJFTAlCWVRFDQ0KQVNDSUkg PFRoaXMgaXMgYSB2ZXJzaW9uIG9mIHRoZSBzaW1wbGUgY2hlY2tzdW0uIEl0 IHVzZXMgTE9EU1cuIEhvd2V2ZXI+DQ0KQVNDSUkgPGl0IGRvZXMgbm90IHVz ZSBhIGxvb3AgY291bnRlci4gSXQgdXNlcyBmb2xkLWJhY2sgZm9yIGNhcnJp ZXMuPg0NCkVPTA0NCjsNDQpOT0NPVU5UX0NIS1NVTQlQUk9DCU5FQVINDQoJ TU9WCUVDWCwgUEFDS0VUX0xFTgkJOyBHZXQgcGFja2V0IGxlbmd0aCAoYnl0 ZXMpDQ0KCU1PVglFU0ksIE9GRlNFVCBJUF9QQUNLRVQJOyBQb2ludCB0byBw YWNrZXQNDQoJQURECUVDWCwgRVNJCQk7IEVDWCBwb2ludHMgdG8gbGFzdCBw YWNrZXQNDQoJWE9SCUVEWCwgRURYCQk7IENsZWFyIENZLCB6ZXJvDQ0KCU1P VglFQVgsIEVEWAkJOyBNYWtlIHN1cmUgaGlnaCB3b3JkIGlzIHplcm8NDQoJ Q0xEDQ0KOw0NCkNIS0VNWDoJTE9EU1cJCQkJOyBEb2l0DQ0KCUFERAlFRFgs RUFYCQkJOyBTdW0gbG9uZ3dvcmRzIG9ubHkNDQoJQ01QCUVTSSxFQ1gJCQk7 IEVuZCBvZiB0aGUgbGlzdD8NDQoJSkIJQ0hLRU1YCQkJOyBEb2l0Mml0DQ0K CU1PVglFQVgsRURYDQ0KCVNIUglFQVgsMTYJCQk7IEV4cG9zZSB0aGUgY2Fy cmllcw0NCglBREQJRFgsQVgJCQk7IFN1bSBhbGwgdGhlIGNhcnJpZXMgaW50 byBMT1cgd29yZA0NCglBREMJRFgsMAkJCTsgVGhlIGxhc3Qgc3VtIGNvdWxk IGhhdmUgY2FycmllZA0NCglBTkQJRURYLDBGRkZGSAkJOyBTYXZlIG9ubHkg dGhlIGxvdyB3b3JkDQ0KCU1PVglFQVgsRURYCQkJOyBSZXR1cm4gaW4gRUFY IHRvIGJlIGZhaXINDQoJUkVUDQ0KTk9DT1VOVF9DSEtTVU0JRU5EUA0NCjsN DQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NDQpQUlA5CUxB QkVMCUJZVEUNDQpBU0NJSSA8VGhpcyB0cmllcyB0byBiZSBjdXRlIGFuZCB1 bnJvbGwgbG9vcHMgYnV0IHN1bXMgZnJvbSBtZW1vcnk+DQ0KQVNDSUkgPHdp dGhvdXQgYW4gaW50ZXJtZWRpYXRlIHJlZ2lzdGVyIG9wZXJhbmQuIEl0IGFs c28gZ29lcyBvdmVyYm9hcmQ+DQ0KQVNDSUkgPG9uIHRoZSBsb29wLXVucm9s bGluZy4gSXQgYWxzbyBhdHRlbXB0cyB0byBiZSB0aGUgYmVzdCB0ZXN0ZWQu Pg0NCkVPTA0NCjsNDQpVTlJPTExfTE9PUFNPCVBST0MJTkVBUg0NCglNT1YJ RUNYLCAoUEFDS0VUX0xFTiBTSFIgMSkJOyBHZXQgcGFja2V0IGxlbmd0aA0N CglNT1YJRUJYLCBPRkZTRVQgSVBfUEFDS0VUCTsgUG9pbnQgdG8gdGhlIHBh Y2tldA0NCglYT1IJRURYLCBFRFgJCTsgQ2xlYXIgQ1ksIHplcm8NDQoJTU9W CUVBWCwgRURYCQk7IE1ha2Ugc3VyZSBoaWdoIHdvcmQgaXMgemVybw0NCglN T1YJRVNJLCBFRFgJCTsgQ2xlYXIgdGhpcyB0b28NDQoNDQpPVFJJQUw6CUNN UAlFQ1gsMzIJCQk7IEF0IGxlYXN0IDMyIHdvcmRzPw0NCglKQUUJT0RPMzIJ CQk7IFllcywgZG8gMTYgd29yZHMgdW5yb2xsZWQNDQoJQ01QCUVDWCwxNgkJ CTsgQXQgbGVhc3QgMTYgd29yZHM/DQ0KCUpBRQlPRE8xNgkJCTsgWWVzLCBk byAxNiB3b3JkcyB1bnJvbGxlZA0NCglDTVAJRUNYLDgJCQk7IEF0IGxlYXN0 IDggd29yZHM/DQ0KCUpBRQlPRE84CQkJOyBZZXMsIGRvIDggd29yZHMgdW5y b2xsZWQNDQoJQ01QCUVDWCw0CQkJOyBBdCBsZWFzdCA0IHdvcmRzPw0NCglK QUUJT0RPNAkJCTsgWWVzLCBkbyA0IHdvcmRzIHVucm9sbGVkDQ0KCUpNUAlP UFJPUAkJCTsgTm9uZSBvZiBhYm92ZQ0NCg0NCk9ETzMyOglTSFIJU0ksMQkJ CTsgUHJvcGFnYXRlIENZDQ0KCUFEQwlEWCwgV09SRCBQVFIgW0VCWF0JOyBT dW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBUUiBbRUJYKzJdCTsgU3Vt IHRoZSB3b3JkOw0NCglBREMJRFgsIFdPUkQgUFRSIFtFQlgrNF0JOyBTdW0g dGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBUUiBbRUJYKzZdCTsgU3VtIHRo ZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQVFIgW0VCWCs4XQk7IFN1bSB0aGUg d29yZA0NCglBREMJRFgsIFdPUkQgUFRSIFtFQlgrMTBdCTsgU3VtIHRoZSB3 b3JkDQ0KCUFEQwlEWCwgV09SRCBQVFIgW0VCWCsxMl0JOyBTdW0gdGhlIHdv cmQNDQoJQURDCURYLCBXT1JEIFBUUiBbRUJYKzE0XQk7IFN1bSB0aGUgd29y ZA0NCglBREMJRFgsIFdPUkQgUFRSIFtFQlgrMTZdCTsgU3VtIHRoZSB3b3Jk DQ0KCUFEQwlEWCwgV09SRCBQVFIgW0VCWCsxOF0JOyBTdW0gdGhlIHdvcmQN DQoJQURDCURYLCBXT1JEIFBUUiBbRUJYKzIwXQk7IFN1bSB0aGUgd29yZA0N CglBREMJRFgsIFdPUkQgUFRSIFtFQlgrMjJdCTsgU3VtIHRoZSB3b3JkDQ0K CUFEQwlEWCwgV09SRCBQVFIgW0VCWCsyNF0JOyBTdW0gdGhlIHdvcmQNDQoJ QURDCURYLCBXT1JEIFBUUiBbRUJYKzI2XQk7IFN1bSB0aGUgd29yZA0NCglB REMJRFgsIFdPUkQgUFRSIFtFQlgrMjhdCTsgU3VtIHRoZSB3b3JkDQ0KCUFE QwlEWCwgV09SRCBQVFIgW0VCWCszMF0JOyBTdW0gdGhlIHdvcmQNDQoJQURD CURYLCBXT1JEIFBUUiBbRUJYKzMyXQk7IFN1bSB0aGUgd29yZA0NCglBREMJ RFgsIFdPUkQgUFRSIFtFQlgrMzRdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlE WCwgV09SRCBQVFIgW0VCWCszNl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURY LCBXT1JEIFBUUiBbRUJYKzM4XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgs IFdPUkQgUFRSIFtFQlgrNDBdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwg V09SRCBQVFIgW0VCWCs0Ml0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBX T1JEIFBUUiBbRUJYKzQ0XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdP UkQgUFRSIFtFQlgrNDZdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09S RCBQVFIgW0VCWCs0OF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JE IFBUUiBbRUJYKzUwXQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQg UFRSIFtFQlgrNTJdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQ VFIgW0VCWCs1NF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBU UiBbRUJYKzU2XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQgUFRS IFtFQlgrNThdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQVFIg W0VCWCs2MF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBUUiBb RUJYKzYyXQk7IFN1bSB0aGUgd29yZA0NCglBREMJU0ksMAkJCTsgUHJvcGFn YXRlIGxhc3QgY2FycnkNDQo7DQ0KCUFERAlFQlgsNjQJCQk7IEFkanVzdCBw b2ludGVyDQ0KCVNVQglFQ1gsMzIJCQk7IEFkanVzdCBjb3VudA0NCglKWglP RE9ORQkJCTsgV2UgYXJlIGRvbmUNDQoJSk1QCU9UUklBTAkJCTsgVHJ5IG1v cmUNDQo7DQ0KT0RPMTY6CVNIUglTSSwxCQkJOyBQcm9wYWdhdGUgQ1kNDQoJ QURDCURYLCBXT1JEIFBUUiBbRUJYXQk7IFN1bSB0aGUgd29yZA0NCglBREMJ RFgsIFdPUkQgUFRSIFtFQlgrMl0JOyBTdW0gdGhlIHdvcmQ7DQ0KCUFEQwlE WCwgV09SRCBQVFIgW0VCWCs0XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgs IFdPUkQgUFRSIFtFQlgrNl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBX T1JEIFBUUiBbRUJYKzhdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09S RCBQVFIgW0VCWCsxMF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JE IFBUUiBbRUJYKzEyXQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQg UFRSIFtFQlgrMTRdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQ VFIgW0VCWCsxNl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBU UiBbRUJYKzE4XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQgUFRS IFtFQlgrMjBdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQVFIg W0VCWCsyMl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBUUiBb RUJYKzI0XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQgUFRSIFtF QlgrMjZdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQVFIgW0VC WCsyOF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBUUiBbRUJY KzMwXQk7IFN1bSB0aGUgd29yZA0NCglBREMJU0ksMAkJCTsgUHJvcGFnYXRl IGxhc3QgY2FycnkNDQo7DQ0KCUFERAlFQlgsMzIJCQk7IEFkanVzdCBwb2lu dGVyDQ0KCVNVQglFQ1gsMTYJCQk7IEFkanVzdCBjb3VudA0NCglKWglPRE9O RQkJCTsgV2UgYXJlIGRvbmUNDQoJSk1QCU9UUklBTAkJCTsgVHJ5IG1vcmUN DQoNDQpPRE84OglTSFIJU0ksMQkJCTsgUHJvcGFnYXRlIGxhc3QgY2FycnkN DQoJQURDCURYLCBXT1JEIFBUUiBbRUJYXQk7IFN1bSB0aGUgd29yZA0NCglB REMJRFgsIFdPUkQgUFRSIFtFQlgrMl0JOyBTdW0gdGhlIHdvcmQNDQoJQURD CURYLCBXT1JEIFBUUiBbRUJYKzRdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlE WCwgV09SRCBQVFIgW0VCWCs2XQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgs IFdPUkQgUFRSIFtFQlgrOF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBX T1JEIFBUUiBbRUJYKzEwXQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdP UkQgUFRSIFtFQlgrMTJdCTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09S RCBQVFIgW0VCWCsxNF0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCVNJLDAJCQk7 IFByb3BhZ2F0ZSBjYXJyeQ0NCjsNDQoJQURECUVCWCwxNgkJCTsgQWRqdXN0 IHBvaW50ZXINDQoJU1VCCUVDWCw4CQkJOyBBZGp1c3QgY291bnQNDQoJSloJ TkRPTkUJCQk7IFdlIGFyZSBkb25lDQ0KCUpNUAlOVFJJQUwJCQk7IFRyeSBt b3JlDQ0KDQ0KT0RPNDoJU0hSCVNJLDENDQoJQURDCURYLCBXT1JEIFBUUiBb RUJYXQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQgUFRSIFtFQlgr Ml0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCURYLCBXT1JEIFBUUiBbRUJYKzRd CTsgU3VtIHRoZSB3b3JkDQ0KCUFEQwlEWCwgV09SRCBQVFIgW0VCWCs2XQk7 IFN1bSB0aGUgd29yZA0NCglBREMJU0ksMAkJCTsgUHJvcGFnYXRlIGNhcnJ5 DQ0KOw0NCglBREQJRUJYLDgJCQk7IEFkanVzdCBwb2ludGVyDQ0KCVNVQglF Q1gsNAkJCTsgQWRqdXN0IGNvdW50DQ0KCUpaCU9ET05FCQkJOyBXZSBhcmUg ZG9uZQ0NCglKTVAJT1RSSUFMCQkJOyBUcnkgbW9yZQ0NCg0NCk9ETzI6CVNI UglTSSwxCQkJOyBQcm9wYWdhdGUgQ2FycnkNDQoJQURDCURYLCBXT1JEIFBU UiBbRUJYXQk7IFN1bSB0aGUgd29yZA0NCglBREMJRFgsIFdPUkQgUFRSIFtF QlgrMl0JOyBTdW0gdGhlIHdvcmQNDQoJQURDCVNJLDAJCQk7IFByb3BhZ2F0 ZSBjYXJyeQ0NCjsNDQoJQURECUVCWCw0CQkJOyBBZGp1c3QgcG9pbnRlcg0N CglTVUIJRUNYLDIJCQk7IEFkanVzdCBjb3VudA0NCglKWglPRE9ORQkJCTsg V2UgYXJlIGRvbmUNDQoJSk1QCU9UUklBTAkJCTsgVHJ5IG1vcmUNDQo7DQ0K T1BST1A6CVNIUglTSSwxDQ0KT0RPSVQ6CUFEQwlEWCwgV09SRCBQVFIgW0VC WF0JOyBTdW0gdGhlIHdvcmQNDQoJQURECUVCWCwgMgkJCTsgUmVhZHkgbmV4 dCB3b3JkDQ0KCURFQwlFQ1gJCQk7IEJ1bXAgdGhlIHBhY2tldCBsZW5ndGgN DQoJSk5aCU9ET0lUCQkJOyBDb250aW51ZQ0NCglDTVAJRFgsIFdPUkQgUFRS IFtFQlggLTJdCTsgRGlkIHRoZSBsYXN0IGNhcnJ5Pw0NCglBREMJU0ksMAkJ CTsgSWYgaXQgZGlkLg0NCjsNDQpPRE9ORToJU0hSCVNJLDENDQoJQURDCURY LDANDQoJTU9WCUVBWCxFRFgJCQk7IFJldHVybiBpbiBFQVggdG8gYmUgZmFp cg0NCglSRVQNDQpVTlJPTExfTE9PUFNPCUVORFANDQo7DQ0KOy09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tDQ0KOwlUaGlzIHR1cm5zIE9GRiB0 aGUgaW50ZXJydXB0cyBhbmQgZ2V0cyB0aGUgY3VycmVudCBpbnRlcm5hbA0N CjsJY3ljbGUgdGltZXIgdmFsdWUuDQ0KOw0NClNUQVJUX1RJTUVSCVBST0MJ TkVBUg0NCglDTEkJCQkJOyBEb24ndCBpbnRlcnJ1cHQNDQoJREIJMEZIDQ0K CURCCTMxSA0NCglNT1YJRFdPUkQgUFRSIENUSU1fTE9XX0xXLCBFQVgNDQoJ TU9WCURXT1JEIFBUUiBDVElNX0hJR19MVywgRURYDQ0KCVJFVA0NClNUQVJU X1RJTUVSCUVORFANDQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS0NDQo7CVRoaXMgZ2V0cyB0aGUgY3VycmVudCBpbnRlcm5hbCBjeWNsZSB0 aW1lciB2YWx1ZSwgdHVybnMgdGhlDQ0KOwlpbnRlcnJ1cHRzIGJhY2sgT04g YW5kIGNhbGN1bGF0ZXMgdGhlIGN5Y2xlcyB1c2VkIHNpbmNlIHRoZQ0NCjsJ cHJldmlvdXMgY2FsbCB0byBTVEFSVF9USU1FUg0NCjsNDQpTVE9QX1RJTUVS CVBST0MJTkVBUg0NCglEQgkwRkgNDQoJREIJMzFIDQ0KCVNUSQkJCQk7IENh biBub3cgaW50ZXJydXB0DQ0KCVNVQglFQVgsIERXT1JEIFBUUiBDVElNX0xP V19MVw0NCglTQkIJRURYLCBEV09SRCBQVFIgQ1RJTV9ISUdfTFcNDQoJTU9W CURXT1JEIFBUUiBDVElNX0xPV19MVywgRUFYDQ0KCU1PVglEV09SRCBQVFIg Q1RJTV9ISUdfTFcsIEVEWA0NCglSRVQNDQpTVE9QX1RJTUVSCUVORFANDQo7 DQ0KOy09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQ0KOw0NCjsJ V3JpdGUgYSBoZXgtQVNDSUkgV09SRCBpbiBBWCB0byBtZW1vcnkgYWRkcmVz c2VkIGJ5IEVTOkRJLg0NCjsNDQpIRVhXCVBST0MJTkVBUg0NCglQVVNICUFY CQkJOyBTYXZlIGhleCBXT1JEDQ0KCU1PVglBTCxBSAkJCTsgSGlnaCBCWVRF IGZpcnN0DQ0KCUNBTEwJSEVYQgkJCTsgQ29udmVydCBieXRlDQ0KCVBPUAlB WAkJCTsgR2V0IG9yaWdpbmFsLCBmYWxsIHRocm91Z2gNDQo7LT0tPS09LT0t PS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS0NDQo7DQ0KOwlXcml0ZSBhIGhleC1B U0NJSSBCWVRFIGluIEFMIHRvIG1lbW9yeSBhZGRyZXNzZWQgYnkgRVM6REku DQ0KOw0NCkhFWEIJUFJPQwlORUFSDQ0KCU1PVglBSCxBTAkJCTsgU2F2ZSBi eXRlDQ0KCVNIUglBTCw0CQkJOyBJc29sYXRlIHRvcCBuaWJibGUNDQoJQ0FM TAlIRVhOCQkJOyBDb252ZXJ0IGhpYmJsZQ0NCglNT1YJQUwsQUgJCQk7IEdl dCBoZXggYnl0ZQ0NCglBTkQJQUwsMDAwMDExMTFCCQk7IE1hc2sgaGlnaCwg ZmFsbCB0aHJvdWdoDQ0KSEVYTglQUk9DCU5FQVINDQoJQURECUFMLDkwSAkJ CTsgQWRkIGJpYXMNDQoJREFBCQkJCTsgT2xkIEludGVsIHRyaWNrDQ0KCUFE QwlBTCw0MEgJCQk7IFBpY2sgdXAgQ1kgaW50byBoaWdoIG5pYmJsZQ0NCglE QUEJCQkJOyBSZWFkanVzdA0NCglTVE9TQgkJCQk7IFB1dCBpbnRvIG1lbW9y eQ0NCglSRVQNDQpIRVhOCUVORFANDQpIRVhCCUVORFANDQpIRVhXCUVORFAN DQo7LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NDQo7DQ0KOwlU aGlzIGRpc3BsYXlzIHRoZSByZXN1bHRzLiBUaGUgZnVuY3Rpb24gbnVtYmVy IGlzIGluIEFMIHdoZW4NDQo7CXRoaXMgaXMgY2FsbGVkLg0NCjsNDQpESVNQ TEFZCVBST0MJTkVBUg0NCglNT1YJREksT0ZGU0VUIEZODQ0KCUNBTEwJSEVY Qg0NCglNT1YJREksT0ZGU0VUIENISw0NCglNT1YJQVgsV09SRCBQVFIgQ0hL U1VNDQ0KCUNBTEwJSEVYVw0NCglNT1YJQVgsV09SRCBQVFIgQ1RJTV9ISUdf TFcrMg0NCglNT1YJREksT0ZGU0VUIEgxDQ0KCUNBTEwJSEVYVw0NCglNT1YJ QVgsV09SRCBQVFIgQ1RJTV9ISUdfTFcNDQoJTU9WCURJLE9GRlNFVCBIMA0N CglDQUxMCUhFWFcNDQoJTU9WCUFYLFdPUkQgUFRSIENUSU1fTE9XX0xXKzIN DQoJTU9WCURJLE9GRlNFVCBMMQ0NCglDQUxMCUhFWFcNDQoJTU9WCUFYLFdP UkQgUFRSIENUSU1fTE9XX0xXDQ0KCU1PVglESSxPRkZTRVQgTDANDQoJQ0FM TAlIRVhXDQ0KCU1PVglBWCxET1NfUFJUDQ0KCU1PVglEWCxPRkZTRVQgUFJQ DQ0KCUlOVAlNU19ET1MNDQoJUkVUDQ0KRElTUExBWQlFTkRQDQ0KOw0NClBT RUcJRU5EUw0NCglFTkQJTUFJTg0NCg0NCho= ---1295196120-145632947-848940606=:136--