From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Reese, Armin C" Subject: SNB/IVB sprite demo Date: Wed, 8 Feb 2012 02:16:09 +0000 Message-ID: <07EEC142D30DAC40BA4DD9C0F9EE51090B7E37@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_004_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_" Return-path: Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by gabe.freedesktop.org (Postfix) with ESMTP id 58B159E8EB for ; Tue, 7 Feb 2012 18:16:16 -0800 (PST) Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org --_004_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_ Content-Type: multipart/alternative; boundary="_000_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_" --_000_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I worked with Jesse Barnes to develop a sprite demo/test program for SNB/IV= B. It uses the new IOCTLs: GETPLANERESOURCES, GETPLANE, and SETPLANE. I a= lso intend on using the program as an example of how to set up a mode, disp= lay a framebuffer, and display sprite on Intel graphics. The source is att= ached. I was hoping it could be put into intel_gpu_tools for all to use. Thanks, Armin --_000_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

I worked with Jesse Barnes to develop a sprite demo/= test program for SNB/IVB.  It uses the new IOCTLs: GETPLANERESOURCES, = GETPLANE, and SETPLANE.  I also intend on using the program as an exam= ple of how to set up a mode, display a framebuffer, and display sprite on Intel graphics.  The source is attached.  = I was hoping it could be put into intel_gpu_tools for all to use.

 

Thanks,

Armin

--_000_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_-- --_004_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_ Content-Type: text/plain; name="sprite_on.c" Content-Description: sprite_on.c Content-Disposition: attachment; filename="sprite_on.c"; size=38832; creation-date="Tue, 31 Jan 2012 17:55:39 GMT"; modification-date="Wed, 08 Feb 2012 01:29:36 GMT" Content-Transfer-Encoding: base64 LyoKICogQ29weXJpZ2h0IDIwMTAgSW50ZWwgQ29ycG9yYXRpb24KICogICBBcm1pbiBSZWVzZSA8 YXJtaW4uYy5yZWVzZUBpbnRlbC5jb20+CiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCiAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKICog SU4gVEhFIFNPRlRXQVJFLgogKi8KCi8qCiAqIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCBmb3Ig dGVzdGluZyBzcHJpdGUgZnVuY3Rpb25hbGl0eS4KICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KI2lu Y2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2lu Y2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoj aW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDx0ZXJtaW9zLmg+CiNpbmNsdWRlIDxzeXMvdGlt ZS5oPgojaW5jbHVkZSA8c3lzL3BvbGwuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+CiNpbmNsdWRl IDxzeXMvbW1hbi5oPgojaW5jbHVkZSA8c3lzL2lvY3RsLmg+CgojaW5jbHVkZSAieGY4NmRybS5o IgojaW5jbHVkZSAieGY4NmRybU1vZGUuaCIKI2luY2x1ZGUgImk5MTVfZHJtLmgiCgojaWYgZGVm aW5lZChEUk1fSU9DVExfTU9ERV9BRERGQjIpICYmIGRlZmluZWQoRFJNX0k5MTVfU0VUX1NQUklU RV9DT0xPUktFWSkKI2RlZmluZSBURVNUX1BMQU5FUyAxCiNpbmNsdWRlICJkcm1fZm91cmNjLmgi CiNlbmRpZgoKI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChh cnIpWzBdKSkKCnN0cnVjdCB0eXBlX25hbWUKewoJaW50IHR5cGU7CgljaGFyICpuYW1lOwp9OwoK I2RlZmluZSB0eXBlX25hbWVfZm4ocmVzKSBcCnN0YXRpYyBjaGFyICogcmVzIyNfc3RyKGludCB0 eXBlKSB7CQkJXAoJdW5zaWduZWQgaW50IGk7CQkJCQlcCglmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShyZXMjI19uYW1lcyk7IGkrKykgeyBcCgkJaWYgKHJlcyMjX25hbWVzW2ldLnR5cGUgPT0g dHlwZSkJXAoJCQlyZXR1cm4gcmVzIyNfbmFtZXNbaV0ubmFtZTsJXAoJfQkJCQkJCVwKCXJldHVy biAiKGludmFsaWQpIjsJCQkJXAp9CgpzdHJ1Y3QgdHlwZV9uYW1lIGVuY29kZXJfdHlwZV9uYW1l c1tdID0gewoJeyBEUk1fTU9ERV9FTkNPREVSX05PTkUsICJub25lIiB9LAoJeyBEUk1fTU9ERV9F TkNPREVSX0RBQywgIkRBQyIgfSwKCXsgRFJNX01PREVfRU5DT0RFUl9UTURTLCAiVE1EUyIgfSwK CXsgRFJNX01PREVfRU5DT0RFUl9MVkRTLCAiTFZEUyIgfSwKCXsgRFJNX01PREVfRU5DT0RFUl9U VkRBQywgIlRWREFDIiB9LAp9OwoKdHlwZV9uYW1lX2ZuKGVuY29kZXJfdHlwZSkKCnN0cnVjdCB0 eXBlX25hbWUgY29ubmVjdG9yX3N0YXR1c19uYW1lc1tdID0gewoJeyBEUk1fTU9ERV9DT05ORUNU RUQsICJjb25uZWN0ZWQiIH0sCgl7IERSTV9NT0RFX0RJU0NPTk5FQ1RFRCwgImRpc2Nvbm5lY3Rl ZCIgfSwKCXsgRFJNX01PREVfVU5LTk9XTkNPTk5FQ1RJT04sICJ1bmtub3duIiB9LAp9OwoKdHlw ZV9uYW1lX2ZuKGNvbm5lY3Rvcl9zdGF0dXMpCgpzdHJ1Y3QgdHlwZV9uYW1lIGNvbm5lY3Rvcl90 eXBlX25hbWVzW10gPSB7Cgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9Vbmtub3duLCAidW5rbm93biIg fSwKCXsgRFJNX01PREVfQ09OTkVDVE9SX1ZHQSwgIlZHQSIgfSwKCXsgRFJNX01PREVfQ09OTkVD VE9SX0RWSUksICJEVkktSSIgfSwKCXsgRFJNX01PREVfQ09OTkVDVE9SX0RWSUQsICJEVkktRCIg fSwKCXsgRFJNX01PREVfQ09OTkVDVE9SX0RWSUEsICJEVkktQSIgfSwKCXsgRFJNX01PREVfQ09O TkVDVE9SX0NvbXBvc2l0ZSwgImNvbXBvc2l0ZSIgfSwKCXsgRFJNX01PREVfQ09OTkVDVE9SX1NW SURFTywgInMtdmlkZW8iIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTLCAiTFZEUyIgfSwK CXsgRFJNX01PREVfQ09OTkVDVE9SX0NvbXBvbmVudCwgImNvbXBvbmVudCIgfSwKCXsgRFJNX01P REVfQ09OTkVDVE9SXzlQaW5ESU4sICI5LXBpbiBESU4iIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RP Ul9EaXNwbGF5UG9ydCwgIkRpc3BsYXlQb3J0IiB9LAoJeyBEUk1fTU9ERV9DT05ORUNUT1JfSERN SUEsICJIRE1JLUEiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQiwgIkhETUktQiIgfSwK CXsgRFJNX01PREVfQ09OTkVDVE9SX1RWLCAiVFYiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9l RFAsICJFbWJlZGRlZCBEaXNwbGF5UG9ydCIgfSwKfTsKCnR5cGVfbmFtZV9mbihjb25uZWN0b3Jf dHlwZSkKCi8qCiAqIE1vZGUgc2V0dGluZyB3aXRoIHRoZSBrZXJuZWwgaW50ZXJmYWNlcyBpcyBh IGJpdCBvZiBhIGNob3JlLgogKiBGaXJzdCB5b3UgaGF2ZSB0byBmaW5kIHRoZSBjb25uZWN0b3Ig aW4gcXVlc3Rpb24gYW5kIG1ha2Ugc3VyZSB0aGUKICogcmVxdWVzdGVkIG1vZGUgaXMgYXZhaWxh YmxlLgogKiBUaGVuIHlvdSBuZWVkIHRvIGZpbmQgdGhlIGVuY29kZXIgYXR0YWNoZWQgdG8gdGhh dCBjb25uZWN0b3Igc28geW91CiAqIGNhbiBiaW5kIGl0IHdpdGggYSBmcmVlIGNydGMuCiAqLwpz dHJ1Y3QgY29ubmVjdG9yCnsKCXVpbnQzMl90ICAgICAgICAgICAgaWQ7CglpbnQgICAgICAgICAg ICAgICAgIG1vZGVfdmFsaWQ7Cglkcm1Nb2RlTW9kZUluZm8gICAgIG1vZGU7Cglkcm1Nb2RlRW5j b2RlciAgICAgICplbmNvZGVyOwoJZHJtTW9kZUNvbm5lY3RvciAgICAqY29ubmVjdG9yOwoJaW50 ICAgICAgICAgICAgICAgICBjcnRjOwoJaW50ICAgICAgICAgICAgICAgICBwaXBlOwp9OwoKLy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgovLwovLyB1c2FnZQovLwovLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CnN0YXRpYyB2b2lkIGR1bXBfbW9kZSgKICAgICAgICBkcm1Nb2RlTW9kZUluZm8gICAgICAgICAg ICAgKm1vZGUpCnsKCXByaW50ZigiICAlcyAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAweCV4 IDB4JXggJWRcbiIsCgkgICAgICAgbW9kZS0+bmFtZSwKCSAgICAgICBtb2RlLT52cmVmcmVzaCwK CSAgICAgICBtb2RlLT5oZGlzcGxheSwKCSAgICAgICBtb2RlLT5oc3luY19zdGFydCwKCSAgICAg ICBtb2RlLT5oc3luY19lbmQsCgkgICAgICAgbW9kZS0+aHRvdGFsLAoJICAgICAgIG1vZGUtPnZk aXNwbGF5LAoJICAgICAgIG1vZGUtPnZzeW5jX3N0YXJ0LAoJICAgICAgIG1vZGUtPnZzeW5jX2Vu ZCwKCSAgICAgICBtb2RlLT52dG90YWwsCgkgICAgICAgbW9kZS0+ZmxhZ3MsCgkgICAgICAgbW9k ZS0+dHlwZSwKCSAgICAgICBtb2RlLT5jbG9jayk7Cn0KCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Ly8KLy8gZHVtcF9jb25uZWN0b3JzCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIHZv aWQgZHVtcF9jb25uZWN0b3JzKAogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBn ZnhfZmQsCiAgICAgICAgZHJtTW9kZVJlcyAgICAgICAgICAgICAgICAgICpyZXNvdXJjZXMpCnsK CWludCBpLCBqOwoKCXByaW50ZigiQ29ubmVjdG9yczpcbiIpOwoJcHJpbnRmKCJpZFx0ZW5jb2Rl clx0c3RhdHVzXHRcdHR5cGVcdHNpemUgKG1tKVx0bW9kZXNcbiIpOwoJZm9yIChpID0gMDsgaSA8 IHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9yczsgaSsrKSB7CgkJZHJtTW9kZUNvbm5lY3RvciAq Y29ubmVjdG9yOwoKCQljb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yKGdmeF9mZCwgcmVz b3VyY2VzLT5jb25uZWN0b3JzW2ldKTsKCQlpZiAoIWNvbm5lY3RvcikgewoJCQlwcmludGYoImNv dWxkIG5vdCBnZXQgY29ubmVjdG9yICVpOiAlc1xuIiwKCQkJCXJlc291cmNlcy0+Y29ubmVjdG9y c1tpXSwgc3RyZXJyb3IoZXJybm8pKTsKCQkJY29udGludWU7CgkJfQoKCQlwcmludGYoIiVkXHQl ZFx0JXNcdCVzXHQlZHglZFx0XHQlZFxuIiwKCQkgICAgICAgY29ubmVjdG9yLT5jb25uZWN0b3Jf aWQsCgkJICAgICAgIGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZCwKCQkgICAgICAgY29ubmVjdG9yX3N0 YXR1c19zdHIoY29ubmVjdG9yLT5jb25uZWN0aW9uKSwKCQkgICAgICAgY29ubmVjdG9yX3R5cGVf c3RyKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUpLAoJCSAgICAgICBjb25uZWN0b3ItPm1tV2lk dGgsIGNvbm5lY3Rvci0+bW1IZWlnaHQsCgkJICAgICAgIGNvbm5lY3Rvci0+Y291bnRfbW9kZXMp OwoKCQlpZiAoIWNvbm5lY3Rvci0+Y291bnRfbW9kZXMpCgkJCWNvbnRpbnVlOwoKCQlwcmludGYo IiAgbW9kZXM6XG4iKTsKCQlwcmludGYoIiAgbmFtZSByZWZyZXNoIChIeikgaGRpc3AgaHNzIGhz ZSBodG90IHZkaXNwICIKCQkgICAgICAgInZzcyB2c2UgdnRvdCBmbGFncyB0eXBlIGNsb2NrXG4i KTsKCQlmb3IgKGogPSAwOyBqIDwgY29ubmVjdG9yLT5jb3VudF9tb2RlczsgaisrKQoJCQlkdW1w X21vZGUoJmNvbm5lY3Rvci0+bW9kZXNbal0pOwoKCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25u ZWN0b3IpOwoJfQoJcHJpbnRmKCJcbiIpOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8v IGR1bXBfY3J0Y3MKLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpzdGF0aWMgdm9pZCBkdW1wX2Ny dGNzKAogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBnZnhfZmQsCiAgICAgICAg ZHJtTW9kZVJlcyAgICAgICAgICAgICAgICAgICpyZXNvdXJjZXMpCnsKCWludCBpOwoKCXByaW50 ZigiQ1JUQ3M6XG4iKTsKCXByaW50ZigiaWRcdGZiXHRwb3NcdHNpemVcbiIpOwoJZm9yIChpID0g MDsgaSA8IHJlc291cmNlcy0+Y291bnRfY3J0Y3M7IGkrKykgewoJCWRybU1vZGVDcnRjICpjcnRj OwoKCQljcnRjID0gZHJtTW9kZUdldENydGMoZ2Z4X2ZkLCByZXNvdXJjZXMtPmNydGNzW2ldKTsK CQlpZiAoIWNydGMpIHsKCQkJcHJpbnRmKCJjb3VsZCBub3QgZ2V0IGNydGMgJWk6ICVzXG4iLAoJ CQkJICAgcmVzb3VyY2VzLT5jcnRjc1tpXSwKCQkJCSAgIHN0cmVycm9yKGVycm5vKSk7CgkJCWNv bnRpbnVlOwoJCX0KCQlwcmludGYoIiVkXHQlZFx0KCVkLCVkKVx0KCVkeCVkKVxuIiwKCQkgICAg ICAgY3J0Yy0+Y3J0Y19pZCwKCQkgICAgICAgY3J0Yy0+YnVmZmVyX2lkLAoJCSAgICAgICBjcnRj LT54LCBjcnRjLT55LAoJCSAgICAgICBjcnRjLT53aWR0aCwgY3J0Yy0+aGVpZ2h0KTsKCQlkdW1w X21vZGUoJmNydGMtPm1vZGUpOwoKCQlkcm1Nb2RlRnJlZUNydGMoY3J0Yyk7Cgl9CglwcmludGYo IlxuIik7Cn0KCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gZHVtcF9wbGFuZXMKLy8KLy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgpzdGF0aWMgdm9pZCBkdW1wX3BsYW5lcygKICAgICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkLAogICAgICAgIGRybU1vZGVSZXMgICAgICAg ICAgICAgICAgICAqcmVzb3VyY2VzKQp7Cglkcm1Nb2RlUGxhbmVSZXMgICAgICAgICAgICAgKnBs YW5lX3Jlc291cmNlczsKCWRybU1vZGVQbGFuZSAgICAgICAgICAgICAgICAqb3ZyOwoJaW50IGk7 CgoJcGxhbmVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFBsYW5lUmVzb3VyY2VzKGdmeF9mZCk7Cglp ZiAoIXBsYW5lX3Jlc291cmNlcykgewoJCXByaW50ZigiZHJtTW9kZUdldFBsYW5lUmVzb3VyY2Vz IGZhaWxlZDogJXNcbiIsCgkJCSAgIHN0cmVycm9yKGVycm5vKSk7CgkJcmV0dXJuOwoJfQoKCXBy aW50ZigiUGxhbmVzOlxuIik7CglwcmludGYoImlkXHRjcnRjXHRmYlx0Q1JUQyB4LHlcdHgseVx0 Z2FtbWEgc2l6ZVxuIik7Cglmb3IgKGkgPSAwOyBpIDwgcGxhbmVfcmVzb3VyY2VzLT5jb3VudF9w bGFuZXM7IGkrKykgewoJCW92ciA9IGRybU1vZGVHZXRQbGFuZShnZnhfZmQsIHBsYW5lX3Jlc291 cmNlcy0+cGxhbmVzW2ldKTsKCQlpZiAoIW92cikgewoJCQlwcmludGYoImRybU1vZGVHZXRQbGFu ZSBmYWlsZWQ6ICVzXG4iLAoJCQkgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKCQkJY29udGludWU7 CgkJfQoKCQlwcmludGYoIiVkXHQlZFx0JWRcdCVkLCVkXHRcdCVkLCVkXHQlZFxuIiwKCQkgICAg ICAgb3ZyLT5wbGFuZV9pZCwgb3ZyLT5jcnRjX2lkLCBvdnItPmZiX2lkLAoJCSAgICAgICBvdnIt PmNydGNfeCwgb3ZyLT5jcnRjX3ksIG92ci0+eCwgb3ZyLT55LAoJCSAgICAgICBvdnItPmdhbW1h X3NpemUpOwoKCQlkcm1Nb2RlRnJlZVBsYW5lKG92cik7Cgl9CglwcmludGYoIlxuIik7CgoJcmV0 dXJuOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIGNvbm5lY3Rvcl9maW5kX3ByZWZl cnJlZF9tb2RlCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIHZvaWQgY29ubmVjdG9y X2ZpbmRfcHJlZmVycmVkX21vZGUoCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZ2Z4 X2ZkLAogICAgICAgIGRybU1vZGVSZXMgICAgICAgICAgICAgICpnZnhfcmVzb3VyY2VzLAogICAg ICAgIHN0cnVjdCBjb25uZWN0b3IgICAgICAgICpjKQp7Cglkcm1Nb2RlQ29ubmVjdG9yICpjb25u ZWN0b3I7Cglkcm1Nb2RlRW5jb2RlciAqZW5jb2RlciA9IE5VTEw7CglpbnQgaSwgajsKCgkvKiBG aXJzdCwgZmluZCB0aGUgY29ubmVjdG9yICYgbW9kZSAqLwoJYy0+bW9kZV92YWxpZCA9IDA7Cglj b25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yKGdmeF9mZCwgYy0+aWQpOwoJaWYgKCFjb25u ZWN0b3IpIHsKCQlwcmludGYoImNvdWxkIG5vdCBnZXQgY29ubmVjdG9yICVkOiAlc1xuIiwKCQkJ ICAgYy0+aWQsCgkJCSAgIHN0cmVycm9yKGVycm5vKSk7CgkJZHJtTW9kZUZyZWVDb25uZWN0b3Io Y29ubmVjdG9yKTsKCQlyZXR1cm47Cgl9CgoJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdGlvbiAhPSBE Uk1fTU9ERV9DT05ORUNURUQpIHsKCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwoJ CXJldHVybjsKCX0KCglpZiAoIWNvbm5lY3Rvci0+Y291bnRfbW9kZXMpIHsKCQlwcmludGYoImNv bm5lY3RvciAlZCBoYXMgbm8gbW9kZXNcbiIsCgkJICAgICAgIGMtPmlkKTsKCQlkcm1Nb2RlRnJl ZUNvbm5lY3Rvcihjb25uZWN0b3IpOwoJCXJldHVybjsKCX0KCglpZiAoY29ubmVjdG9yLT5jb25u ZWN0b3JfaWQgIT0gYy0+aWQpIHsKCQlwcmludGYoImNvbm5lY3RvciBpZCBkb2Vzbid0IG1hdGNo ICglZCAhPSAlZClcbiIsCgkJCSAgICBjb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCwKCQkJICAgIGMt PmlkKTsKCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwoJCXJldHVybjsKCX0KCglm b3IgKGogPSAwOyBqIDwgY29ubmVjdG9yLT5jb3VudF9tb2RlczsgaisrKSB7CgkJYy0+bW9kZSA9 IGNvbm5lY3Rvci0+bW9kZXNbal07CgkJaWYgKGMtPm1vZGUudHlwZSAmIERSTV9NT0RFX1RZUEVf UFJFRkVSUkVEKSB7CgkJCWMtPm1vZGVfdmFsaWQgPSAxOwoJCQlicmVhazsKCQl9Cgl9CgoJaWYg KCFjLT5tb2RlX3ZhbGlkKSB7CgkJaWYgKGNvbm5lY3Rvci0+Y291bnRfbW9kZXMgPiAwKSB7CgkJ CS8qIHVzZSB0aGUgZmlyc3QgbW9kZSBhcyB0ZXN0IG1vZGUgKi8KCQkJYy0+bW9kZSA9IGNvbm5l Y3Rvci0+bW9kZXNbMF07CgkJCWMtPm1vZGVfdmFsaWQgPSAxOwoJCX0gZWxzZSB7CgkJCXByaW50 ZigiZmFpbGVkIHRvIGZpbmQgYW55IG1vZGVzIG9uIGNvbm5lY3RvciAlZFxuIiwKCQkJCSAgIGMt PmlkKTsKCQkJcmV0dXJuOwoJCX0KCX0KCgkvKiBOb3cgZ2V0IHRoZSBlbmNvZGVyICovCglmb3Ig KGkgPSAwOyBpIDwgY29ubmVjdG9yLT5jb3VudF9lbmNvZGVyczsgaSsrKSB7CgkJZW5jb2RlciA9 IGRybU1vZGVHZXRFbmNvZGVyKGdmeF9mZCwgY29ubmVjdG9yLT5lbmNvZGVyc1tpXSk7CgoJCWlm ICghZW5jb2RlcikgewoJCQlwcmludGYoImNvdWxkIG5vdCBnZXQgZW5jb2RlciAlaTogJXNcbiIs CgkJCQkgICBnZnhfcmVzb3VyY2VzLT5lbmNvZGVyc1tpXSwKCQkJCSAgIHN0cmVycm9yKGVycm5v KSk7CgkJCWRybU1vZGVGcmVlRW5jb2RlcihlbmNvZGVyKTsKCQkJY29udGludWU7CgkJfQoKCQli cmVhazsKCX0KCgljLT5lbmNvZGVyID0gZW5jb2RlcjsKCglpZiAoaSA9PSBnZnhfcmVzb3VyY2Vz LT5jb3VudF9lbmNvZGVycykgewoJCXByaW50ZigiZmFpbGVkIHRvIGZpbmQgZW5jb2RlclxuIik7 CgkJYy0+bW9kZV92YWxpZCA9IDA7CgkJcmV0dXJuOwoJfQoKCS8qIEZpbmQgZmlyc3QgQ1JUQyBu b3QgaW4gdXNlICovCglmb3IgKGkgPSAwOyBpIDwgZ2Z4X3Jlc291cmNlcy0+Y291bnRfY3J0Y3M7 IGkrKykgewoJCWlmIChnZnhfcmVzb3VyY2VzLT5jcnRjc1tpXSAmJiAoYy0+ZW5jb2Rlci0+cG9z c2libGVfY3J0Y3MgJiAoMTw8aSkpKQoJCQlicmVhazsKCX0KCWMtPmNydGMgPSBnZnhfcmVzb3Vy Y2VzLT5jcnRjc1tpXTsKCWMtPnBpcGUgPSBpOwoKCWdmeF9yZXNvdXJjZXMtPmNydGNzW2ldID0g MDsKCgljLT5jb25uZWN0b3IgPSBjb25uZWN0b3I7Cn0KCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Ly8KLy8gZ2VtX2NyZWF0ZQovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0YXRpYyB1aW50MzJf dCBnZW1fY3JlYXRlKGludCBmZCwgaW50IHNpemUpCnsKCXN0cnVjdCBkcm1faTkxNV9nZW1fY3Jl YXRlIGNyZWF0ZTsKCgljcmVhdGUuaGFuZGxlID0gMDsKCWNyZWF0ZS5zaXplID0gKHNpemUgKyA0 MDk1KSAmIC00MDk2OwoJKHZvaWQpZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DUkVB VEUsICZjcmVhdGUpOwoKCXJldHVybiBjcmVhdGUuaGFuZGxlOwp9CgovLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi8vCi8vIGdlbV9tbWFwCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIHZv aWQgKmdlbV9tbWFwKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBpbnQgc2l6ZSwgaW50IHByb3Qp CnsKCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9ndHQgbW1hcF9hcmc7Cgl2b2lkICpwdHI7CgoJ bW1hcF9hcmcuaGFuZGxlID0gaGFuZGxlOwoJaWYgKGRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkx NV9HRU1fTU1BUF9HVFQsICZtbWFwX2FyZykpCgkJcmV0dXJuIE5VTEw7CgoJcHRyID0gbW1hcCgw LCBzaXplLCBwcm90LCBNQVBfU0hBUkVELCBmZCwgbW1hcF9hcmcub2Zmc2V0KTsKCWlmIChwdHIg PT0gTUFQX0ZBSUxFRCkKCQlwdHIgPSBOVUxMOwoKCXJldHVybiBwdHI7Cn0KCi8vKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKLy8KLy8gZ2VtX2Nsb3NlCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3Rh dGljIHZvaWQgZ2VtX2Nsb3NlKGludCBmZCwgdWludDMyX3QgaGFuZGxlKQp7CglzdHJ1Y3QgZHJt X2dlbV9jbG9zZSBjbG9zZV9zdDsKCgljbG9zZV9zdC5oYW5kbGUgPSBoYW5kbGU7Cgkodm9pZClk cm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgJmNsb3NlX3N0KTsKfQoKLy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgovLwovLyBjb25uZWN0b3JfZmluZF9wbGFuZQovLwovLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCnN0YXRpYyBpbnQgY29ubmVjdG9yX2ZpbmRfcGxhbmUoaW50IGdmeF9mZCwgc3Ry dWN0IGNvbm5lY3RvciAqYykKewoJZHJtTW9kZVBsYW5lUmVzICpwbGFuZV9yZXNvdXJjZXM7Cglk cm1Nb2RlUGxhbmUgKm92cjsKCXVpbnQzMl90IGlkID0gMDsKCWludCBpOwoKCXBsYW5lX3Jlc291 cmNlcyA9IGRybU1vZGVHZXRQbGFuZVJlc291cmNlcyhnZnhfZmQpOwoJaWYgKCFwbGFuZV9yZXNv dXJjZXMpIHsKCQlwcmludGYoImRybU1vZGVHZXRQbGFuZVJlc291cmNlcyBmYWlsZWQ6ICVzXG4i LAoJCSAgICAgICBzdHJlcnJvcihlcnJubykpOwoJCXJldHVybiAwOwoJfQoKCWZvciAoaSA9IDA7 IGkgPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaSsrKSB7CgkJb3ZyID0gZHJtTW9k ZUdldFBsYW5lKGdmeF9mZCwgcGxhbmVfcmVzb3VyY2VzLT5wbGFuZXNbaV0pOwoJCWlmICghb3Zy KSB7CgkJCXByaW50ZigiZHJtTW9kZUdldFBsYW5lIGZhaWxlZDogJXNcbiIsCgkJCQkgICBzdHJl cnJvcihlcnJubykpOwoJCQljb250aW51ZTsKCQl9CgoJCWlmIChvdnItPnBvc3NpYmxlX2NydGNz ICYgKDEgPDwgYy0+cGlwZSkpIHsKCQkJaWQgPSBvdnItPnBsYW5lX2lkOwoJCQlkcm1Nb2RlRnJl ZVBsYW5lKG92cik7CgkJCWJyZWFrOwoJCX0KCQlkcm1Nb2RlRnJlZVBsYW5lKG92cik7Cgl9CgoJ cmV0dXJuIGlkOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIGRpc2FibGVfcGxhbmVz Ci8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIHZvaWQgZGlzYWJsZV9wbGFuZXMoCiAg ICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkKQp7CglzdHJ1Y3QgICAgICAgICAg ICAgICAgICBjb25uZWN0b3IgKmNvbm5lY3RvcnM7CiAgICBkcm1Nb2RlUmVzICAgICAgICAgICAg ICAqcmVzb3VyY2VzOwoJaW50ICAgICAgICAgICAgICAgICAgICAgYzsKCglyZXNvdXJjZXMgPSBk cm1Nb2RlR2V0UmVzb3VyY2VzKGdmeF9mZCk7CglpZiAoIXJlc291cmNlcykgewoJCXByaW50Zigi ZHJtTW9kZUdldFJlc291cmNlcyBmYWlsZWQ6ICVzXG4iLAoJCQkgICBzdHJlcnJvcihlcnJubykp OwoJCXJldHVybjsKCX0KCgljb25uZWN0b3JzID0gY2FsbG9jKHJlc291cmNlcy0+Y291bnRfY29u bmVjdG9ycywKCQkJICAgIHNpemVvZihzdHJ1Y3QgY29ubmVjdG9yKSk7CglpZiAoIWNvbm5lY3Rv cnMpCgkJcmV0dXJuOwoKCS8qIEZpbmQgYW55IGNvbm5lY3RlZCBkaXNwbGF5cyAqLwoJZm9yIChj ID0gMDsgYyA8IHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9yczsgYysrKSB7CgkJdWludDMyX3Qg c3ByaXRlX3BsYW5lX2lkOwoKCQlzcHJpdGVfcGxhbmVfaWQgPSBjb25uZWN0b3JfZmluZF9wbGFu ZShnZnhfZmQsICZjb25uZWN0b3JzW2NdKTsKCQlpZiAoIXNwcml0ZV9wbGFuZV9pZCkgewoJCQlw cmludGYoImZhaWxlZCB0byBmaW5kIHBsYW5lIGZvciBjcnRjXG4iKTsKCQkJcmV0dXJuOwoJCX0K CQlpZiAoZHJtTW9kZVNldFBsYW5lKGdmeF9mZCwgc3ByaXRlX3BsYW5lX2lkLCBjb25uZWN0b3Jz W2NdLmNydGMsIDAsIDAsIDAsCgkJCQkgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCkpIHsKCQkJcHJp bnRmKCJmYWlsZWQgdG8gZGlzYWJsZSBwbGFuZTogJXNcbiIsCgkJCQlzdHJlcnJvcihlcnJubykp OwoJCQlyZXR1cm47CgkJfQoJfQoJZHJtTW9kZUZyZWVSZXNvdXJjZXMocmVzb3VyY2VzKTsKCXJl dHVybjsKfQoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBwcmVwYXJlX3ByaW1hcnlfc3Vy ZmFjZQovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0YXRpYyBpbnQgcHJlcGFyZV9wcmltYXJ5 X3N1cmZhY2UoCiAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGZkLAogICAgICAg ICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBwcmltX3dpZHRoLAogICAgICAgICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICBwcmltX2hlaWdodCwKICAgICAgICAgICAgdWludDMyX3QgICAg ICAgICAgICAgICAgKnByaW1faGFuZGxlLAogICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAg ICAgICAqcHJpbV9zdHJpZGUsCiAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICpw cmltX3NpemUsCiAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHRpbGVkKQp7CiAg ICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3Blcl9waXhlbCA9IHNpemVv Zih1aW50MzJfdCk7CiAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICpwcmltX2Zi X3B0cjsKICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fc2V0X3RpbGluZyAgc2V0X3RpbGluZzsKCiAg ICBpZiAoYnl0ZXNfcGVyX3BpeGVsICE9IHNpemVvZih1aW50MzJfdCkpIHsKICAgICAgICBwcmlu dGYoIkJhZCBieXRlc19wZXJfcGl4ZWwgZm9yIHByaW1hcnkgc3VyZmFjZTogJWRcbiIsCiAgICAg ICAgICAgICAgIGJ5dGVzX3Blcl9waXhlbCk7CiAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICB9 CgogICAgaWYgKHRpbGVkKSB7CiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHY7 CgogICAgICAgIC8qIFJvdW5kIHRoZSB0aWxpbmcgdXAgdG8gdGhlIG5leHQgcG93ZXItb2YtdHdv IGFuZCB0aGUKICAgICAgICAgKiByZWdpb24gdXAgdG8gdGhlIG5leHQgcG90IGZlbmNlIHNpemUg c28gdGhhdCB0aGlzIHdvcmtzCiAgICAgICAgICogb24gYWxsIGdlbmVyYXRpb25zLgogICAgICAg ICAqCiAgICAgICAgICogVGhpcyBjYW4gc3RpbGwgZmFpbCBpZiB0aGUgZnJhbWVidWZmZXIgaXMg dG9vIGxhcmdlIHRvCiAgICAgICAgICogYmUgdGlsZWQuIEJ1dCB0aGVuIHRoYXQgZmFpbHVyZSBp cyBleHBlY3RlZC4KICAgICAgICAgKi8KCiAgICAgICAgdiA9IHByaW1fd2lkdGggKiBieXRlc19w ZXJfcGl4ZWw7CiAgICAgICAgZm9yICgqcHJpbV9zdHJpZGUgPSA1MTI7ICpwcmltX3N0cmlkZSA8 IHY7ICpwcmltX3N0cmlkZSAqPSAyKQogICAgICAgICAgICA7CgogICAgICAgIHYgPSAqcHJpbV9z dHJpZGUgKiBwcmltX2hlaWdodDsKICAgICAgICBmb3IgKCpwcmltX3NpemUgPSAxMDI0KjEwMjQ7 ICpwcmltX3NpemUgPCB2OyAqcHJpbV9zaXplICo9IDIpCiAgICAgICAgICAgIDsKICAgIH0gZWxz ZSB7CiAgICAgICAgLyogU2Nhbi1vdXQgaGFzIGEgNjQgYnl0ZSBhbGlnbm1lbnQgcmVzdHJpY3Rp b24gKi8KICAgICAgICAqcHJpbV9zdHJpZGUgPSAocHJpbV93aWR0aCAqIGJ5dGVzX3Blcl9waXhl bCArIDYzKSAmIH42MzsKICAgICAgICAqcHJpbV9zaXplID0gKnByaW1fc3RyaWRlICogcHJpbV9o ZWlnaHQ7CiAgICB9CgogICAgKnByaW1faGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgKnByaW1fc2l6 ZSk7CgogICAgaWYgKHRpbGVkKSB7CiAgICAgICAgc2V0X3RpbGluZy5oYW5kbGUgPSAqcHJpbV9o YW5kbGU7CiAgICAgICAgc2V0X3RpbGluZy50aWxpbmdfbW9kZSA9IEk5MTVfVElMSU5HX1g7CiAg ICAgICAgc2V0X3RpbGluZy5zdHJpZGUgPSAqcHJpbV9zdHJpZGU7CiAgICAgICAgaWYgKGlvY3Rs KGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fU0VUX1RJTElORywgJnNldF90aWxpbmcpKSB7CiAgICAg ICAgICAgIHByaW50ZigiU2V0IHRpbGluZyBmYWlsZWQ6ICVzIChzdHJpZGU9JWQsIHNpemU9JWQp XG4iLAogICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSwgKnByaW1fc3RyaWRlLCAq cHJpbV9zaXplKTsKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgIH0KCiAgICBw cmltX2ZiX3B0ciA9IGdlbV9tbWFwKGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAqcHJp bV9oYW5kbGUsICpwcmltX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVB RCB8IFBST1RfV1JJVEUpOwoKICAgIGlmIChwcmltX2ZiX3B0ciAhPSBOVUxMKSB7CiAgICAgICAg Ly8gV3JpdGUgcHJpbWFyeSBzdXJmYWNlIHdpdGggZ3JheSBiYWNrZ3JvdW5kCiAgICAgICAgbWVt c2V0KHByaW1fZmJfcHRyLCAweDNmLCAqcHJpbV9zaXplKTsKICAgICAgICBtdW5tYXAocHJpbV9m Yl9wdHIsICpwcmltX3NpemUpOwogICAgfQoKICAgIHJldHVybiAwOwp9CgovLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCi8vCi8vIGZpbGxfc3ByaXRlCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3Rh dGljIHZvaWQgZmlsbF9zcHJpdGUoCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcHJpdGVfd2lkdGgsCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcHJpdGVfaGVpZ2h0LAogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3ByaXRlX3N0cmlkZSwKICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw cml0ZV9pbmRleCwKICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzcHJp dGVfZmJfcHRyKQp7CiAgICBfX3UzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGluZVBh dDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGluZVBhdDEsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGluZVB0cjsKICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGluZTsKICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlX3dpZHRo OwoKICAgIHN0cmlwZV93aWR0aCA9ICgoc3ByaXRlX3dpZHRoID4gNjQpICYmCiAgICAgICAgICAg ICAgICAgICAgKHNwcml0ZV9oZWlnaHQgPiA2NCkpID8gKHNwcml0ZV9pbmRleCArIDEpICogOCA6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcml0ZV9pbmRl eCArIDEpICogMjsKCiAgICAvLyBOb3RlOiAgc3ByaXRlX3N0cmlkZSBpcyBpbiBieXRlcy4gIHBM aW5lUGF0MCBhbmQgcExpbmVQYXQxCiAgICAvLyAgICAgICAgYXJlIGJvdGggX191MzIgcG9pbnRl cnMKICAgIHBMaW5lUGF0MCA9IHNwcml0ZV9mYl9wdHI7CiAgICBwTGluZVBhdDEgPSBwTGluZVBh dDAgKyAoc3RyaXBlX3dpZHRoICogKHNwcml0ZV9zdHJpZGUgLyBzaXplb2YoKnBMaW5lUGF0MCkp KTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc3ByaXRlX3dpZHRoOyBpKyspIHsKICAgICAgICAqKHBM aW5lUGF0MCArIGkpID0gKChpIC8gc3RyaXBlX3dpZHRoKSAmIDB4MSkgPyAwIDogfjA7CiAgICAg ICAgKihwTGluZVBhdDEgKyBpKSA9IH4oKihwTGluZVBhdDAgKyBpKSk7CiAgICB9CgogICAgZm9y IChsaW5lID0gMTsgbGluZSA8IHNwcml0ZV9oZWlnaHQ7IGxpbmUrKykgewogICAgICAgIGlmIChs aW5lID09IHN0cmlwZV93aWR0aCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9Cgog ICAgICAgIHBMaW5lUHRyID0gKChsaW5lIC8gc3RyaXBlX3dpZHRoKSAmIDB4MSkgPyBwTGluZVBh dDEgOiBwTGluZVBhdDA7CiAgICAgICAgbWVtY3B5KCBwTGluZVBhdDAgKyAoKHNwcml0ZV9zdHJp ZGUgLyBzaXplb2YoKnBMaW5lUGF0MCkpICogbGluZSksCiAgICAgICAgICAgICAgICBwTGluZVB0 ciwKICAgICAgICAgICAgICAgIHNwcml0ZV93aWR0aCAqIHNpemVvZigqcExpbmVQYXQwKSk7CiAg ICB9CgogICAgcmV0dXJuOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIHByZXBhcmVf c3ByaXRlX3N1cmZhY2VzCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIGludCBwcmVw YXJlX3Nwcml0ZV9zdXJmYWNlcygKICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ZmQsCiAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV93aWR0aCwKICAg ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX2hlaWdodCwKICAgICAgICAg ICAgdWludDMyX3QgICAgICAgICAgICAgICAgbnVtX3N1cmZhY2VzLAogICAgICAgICAgICB1aW50 MzJfdCAgICAgICAgICAgICAgICAqc3ByaXRlX2hhbmRsZXMsCiAgICAgICAgICAgIHVpbnQzMl90 ICAgICAgICAgICAgICAgICpzcHJpdGVfc3RyaWRlLAogICAgICAgICAgICB1aW50MzJfdCAgICAg ICAgICAgICAgICAqc3ByaXRlX3NpemUsCiAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAg ICAgIHRpbGVkKQp7CiAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3Bl cl9waXhlbCA9IHNpemVvZih1aW50MzJfdCk7CiAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAg ICAgICAgICpzcHJpdGVfZmJfcHRyOwogICAgc3RydWN0IGRybV9pOTE1X2dlbV9zZXRfdGlsaW5n ICBzZXRfdGlsaW5nOwogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOwoKICAg IGlmIChieXRlc19wZXJfcGl4ZWwgIT0gc2l6ZW9mKHVpbnQzMl90KSkgewogICAgICAgIHByaW50 ZigiQmFkIGJ5dGVzX3Blcl9waXhlbCBmb3Igc3ByaXRlOiAlZFxuIiwgYnl0ZXNfcGVyX3BpeGVs KTsKICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgIH0KCiAgICBpZiAodGlsZWQpIHsKICAgICAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgdjsKCiAgICAgICAgLyogUm91bmQgdGhlIHRp bGluZyB1cCB0byB0aGUgbmV4dCBwb3dlci1vZi10d28gYW5kIHRoZQogICAgICAgICAqIHJlZ2lv biB1cCB0byB0aGUgbmV4dCBwb3QgZmVuY2Ugc2l6ZSBzbyB0aGF0IHRoaXMgd29ya3MKICAgICAg ICAgKiBvbiBhbGwgZ2VuZXJhdGlvbnMuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIGNhbiBz dGlsbCBmYWlsIGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyB0b28gbGFyZ2UgdG8KICAgICAgICAgKiBi ZSB0aWxlZC4gQnV0IHRoZW4gdGhhdCBmYWlsdXJlIGlzIGV4cGVjdGVkLgogICAgICAgICAqLwoK ICAgICAgICB2ID0gc3ByaXRlX3dpZHRoICogYnl0ZXNfcGVyX3BpeGVsOwogICAgICAgIGZvciAo KnNwcml0ZV9zdHJpZGUgPSA1MTI7ICpzcHJpdGVfc3RyaWRlIDwgdjsgKnNwcml0ZV9zdHJpZGUg Kj0gMikKICAgICAgICAgICAgOwoKICAgICAgICB2ID0gKnNwcml0ZV9zdHJpZGUgKiBzcHJpdGVf aGVpZ2h0OwogICAgICAgIGZvciAoKnNwcml0ZV9zaXplID0gMTAyNCoxMDI0OyAqc3ByaXRlX3Np emUgPCB2OyAqc3ByaXRlX3NpemUgKj0gMikKICAgICAgICAgICAgOwogICAgfSBlbHNlIHsKICAg ICAgICAvKiBTY2FuLW91dCBoYXMgYSA2NCBieXRlIGFsaWdubWVudCByZXN0cmljdGlvbiAqLwog ICAgICAgICpzcHJpdGVfc3RyaWRlID0gKHNwcml0ZV93aWR0aCAqIGJ5dGVzX3Blcl9waXhlbCAr IDYzKSAmIH42MzsKICAgICAgICAqc3ByaXRlX3NpemUgPSAqc3ByaXRlX3N0cmlkZSAqIHNwcml0 ZV9oZWlnaHQ7CiAgICB9CgogICAgZm9yIChpID0gMDsgaSA8IG51bV9zdXJmYWNlczsgIGkrKykg ewogICAgICAgIC8vIENyZWF0ZSB0aGUgc3ByaXRlIHN1cmZhY2UKICAgICAgICBzcHJpdGVfaGFu ZGxlc1tpXSA9IGdlbV9jcmVhdGUoZmQsICpzcHJpdGVfc2l6ZSk7CgogICAgICAgIGlmICh0aWxl ZCkgewogICAgICAgICAgICBzZXRfdGlsaW5nLmhhbmRsZSA9IHNwcml0ZV9oYW5kbGVzW2ldOwog ICAgICAgICAgICBzZXRfdGlsaW5nLnRpbGluZ19tb2RlID0gSTkxNV9USUxJTkdfWDsKICAgICAg ICAgICAgc2V0X3RpbGluZy5zdHJpZGUgPSAqc3ByaXRlX3N0cmlkZTsKICAgICAgICAgICAgaWYg KGlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fU0VUX1RJTElORywgJnNldF90aWxpbmcpKSB7 CiAgICAgICAgICAgICAgICBwcmludGYoIlNldCB0aWxpbmcgZmFpbGVkOiAlcyAoc3RyaWRlPSVk LCBzaXplPSVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubyksICpz cHJpdGVfc3RyaWRlLCAqc3ByaXRlX3NpemUpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwog ICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBHZXQgcG9pbnRlciB0byB0aGUgc3Vy ZmFjZQogICAgICAgIHNwcml0ZV9mYl9wdHIgPSBnZW1fbW1hcChmZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3ByaXRlX2hhbmRsZXNbaV0sICpzcHJpdGVfc2l6ZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CgogICAg ICAgIGlmIChzcHJpdGVfZmJfcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgLy8gRmlsbCB3aXRo IGNoZWNrZXJib2FyZCBwYXR0ZXJuCiAgICAgICAgICAgIGZpbGxfc3ByaXRlKAogICAgICAgICAg ICAgICAgICAgIHNwcml0ZV93aWR0aCwKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfaGVpZ2h0 LAogICAgICAgICAgICAgICAgICAgICpzcHJpdGVfc3RyaWRlLAogICAgICAgICAgICAgICAgICAg IGksIHNwcml0ZV9mYl9wdHIpOwoKICAgICAgICAgICAgbXVubWFwKHNwcml0ZV9mYl9wdHIsICpz cHJpdGVfc2l6ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaS0tOwogICAgICAgICAg ICB3aGlsZSAoaSA+PSAwKSB7CiAgICAgICAgICAgICAgICBnZW1fY2xvc2UoZmQsIHNwcml0ZV9o YW5kbGVzW2ldKTsKICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgfQogICAgICAgIH0K ICAgIH0KCiAgICByZXR1cm4gMDsKfQoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyByaWNv Y2hldAovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0YXRpYyB2b2lkIHJpY29jaGV0KAogICAg ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZWQsCiAgICAgICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfdywKICAgICAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNwcml0ZV9oLAogICAgICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3V0X3csCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvdXRfaCwKICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaW5m bykKewogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0OwogICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkOwogICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga2VlcF9tb3Zpbmc7CiAgICBjb25zdCBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICBudW1fc3VyZmFjZXMgPSAzOwogICAgdWludDMyX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX2hhbmRsZXNbbnVtX3N1cmZhY2VzXTsKICAgIHVp bnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV9mYl9pZFtudW1fc3VyZmFj ZXNdOwogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3g7CiAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfeTsKICAgIHVpbnQz Ml90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV9zdHJpZGU7CiAgICB1aW50MzJf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfc2l6ZTsKICAgIHVpbnQzMl90ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbNF0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwaXRjaGVzWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0c1s0XTsgLyogd2Ugb25seSB1c2UgWzBdICovCiAgICB1aW50 MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltX3dpZHRoLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbV9oZWlnaHQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcmltX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByaW1fc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJpbV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpbV9mYl9pZDsKICAgIHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5 ICAgIHNldDsKICAgIHN0cnVjdCBjb25uZWN0b3IgICAgICAgICAgICAgICAgICAgIGN1cnJfY29u bmVjdG9yOwogICAgZHJtTW9kZVJlcyAgICAgICAgICAgICAgICAgICAgICAgICAgKmdmeF9yZXNv dXJjZXM7CiAgICBzdHJ1Y3QgdGVybWlvcyAgICAgICAgICAgICAgICAgICAgICBvcmlnX3Rlcm0s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3Rlcm07CiAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2luZGV4OwogICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX2luZGV4OwogICAgdW5zaWduZWQgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3BsYW5lX2lkOwogICAgdWludDMyX3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfZmxhZ3MgPSAwOwogICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFfeCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlbHRhX3k7CiAgICBzdHJ1Y3QgdGltZXZhbCAgICAgICAgICAgICAg ICAgICAgICBzdFRpbWVWYWw7CiAgICBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdXJyVGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZG bGlwVGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb3Zl VGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhRmxpcFRp bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YU1vdmVUaW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xlZXBUaW1lOwogICAg Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OwoKICAgIC8vIE9wZW4gdXAg STkxNSBncmFwaGljcyBkZXZpY2UKICAgIGdmeF9mZCA9IGRybU9wZW4oImk5MTUiLCBOVUxMKTsK ICAgIGlmIChnZnhfZmQgPCAwKSB7CiAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gbG9hZCBpOTE1 IGRyaXZlcjogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoK ICAgIC8vIE9idGFpbiBwb2ludGVyIHRvIHN0cnVjdCBjb250YWluaW5nIGdyYXBoaWNzIHJlc291 cmNlcwogICAgZ2Z4X3Jlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZ2Z4X2ZkKTsKICAg IGlmICghZ2Z4X3Jlc291cmNlcykgewogICAgICAgIHByaW50ZigiZHJtTW9kZUdldFJlc291cmNl cyBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIHJldHVybjsKICAgIH0K CiAgICBpZiAoZHVtcF9pbmZvICE9IDApIHsKICAgICAgICBkdW1wX2Nvbm5lY3RvcnMoZ2Z4X2Zk LCBnZnhfcmVzb3VyY2VzKTsKICAgICAgICBkdW1wX2NydGNzKGdmeF9mZCwgZ2Z4X3Jlc291cmNl cyk7CiAgICAgICAgZHVtcF9wbGFuZXMoZ2Z4X2ZkLCBnZnhfcmVzb3VyY2VzKTsKICAgIH0KCiAg ICAvLyBTYXZlIHByZXZpb3VzIHRlcm1pbmFsIHNldHRpbmdzCiAgICBpZiAodGNnZXRhdHRyKCAw LCAmb3JpZ190ZXJtKSAhPSAwKSB7CiAgICAgICAgcHJpbnRmKCJ0Y2dldGF0dHIgZmFpbHVyZTog JXNcbiIsCiAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgcmV0dXJuOwog ICAgfQoKICAgIC8vIFNldCB1cCBpbnB1dCB0byByZXR1cm4gY2hhcmFjdGVycyBpbW1lZGlhdGVs eQogICAgY3Vycl90ZXJtID0gb3JpZ190ZXJtOwogICAgY3Vycl90ZXJtLmNfbGZsYWcgJj0gfihJ Q0FOT04gfCBFQ0hPIHwgRUNIT05MKTsKICAgIGN1cnJfdGVybS5jX2NjW1ZNSU5dID0gMDsgICAg ICAgLy8gTm8gbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycwogICAgY3Vycl90ZXJtLmNfY2Nb VlRJTUVdID0gMCA7ICAgICAvLyBSZXR1cm4gaW1tZWRpYXRlbHksIGV2ZW4gaWYKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZyBoYXMgYmVlbiBlbnRlcmVkLgog ICAgaWYgKHRjc2V0YXR0ciggMCwgVENTQU5PVywgJmN1cnJfdGVybSkgIT0gMCkgewogICAgICAg IHByaW50ZigidGNnZXRhdHRyIGZhaWx1cmU6ICVzXG4iLAogICAgICAgICAgICAgICBzdHJlcnJv cihlcnJubykpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBDeWNsZSB0aHJvdWdoIGFs bCBjb25uZWN0b3JzIGFuZCBkaXNwbGF5IHRoZSBmbHlpbmcgc3ByaXRlCiAgICAvLyB3aGVyZSB0 aGVyZSBhcmUgZGlzcGxheXMgYXR0YWNoZWQgYW5kIHRoZSBoYXJkd2FyZSB3aWxsIHN1cHBvcnQg aXQuCiAgICBmb3IgKGNfaW5kZXggPSAwOyBjX2luZGV4IDwgZ2Z4X3Jlc291cmNlcy0+Y291bnRf Y29ubmVjdG9yczsgY19pbmRleCsrKSAgewogICAgICAgIGN1cnJfY29ubmVjdG9yLmlkID0gZ2Z4 X3Jlc291cmNlcy0+Y29ubmVjdG9yc1tjX2luZGV4XTsKCiAgICAgICAgLy8gRmluZCB0aGUgbmF0 aXZlIChwcmVmZXJyZWQpIGRpc3BsYXkgbW9kZQogICAgICAgIGNvbm5lY3Rvcl9maW5kX3ByZWZl cnJlZF9tb2RlKGdmeF9mZCwgZ2Z4X3Jlc291cmNlcywgJmN1cnJfY29ubmVjdG9yKTsKICAgICAg ICBpZiAoY3Vycl9jb25uZWN0b3IubW9kZV92YWxpZCA9PSAwKSB7CiAgICAgICAgICAgIHByaW50 ZigiTm8gdmFsaWQgcHJlZmVycmVkIG1vZGUgZGV0ZWN0ZWRcbiIpOwogICAgICAgICAgICBnb3Rv IG91dDsKICAgICAgICB9CgogICAgICAgIC8vIERldGVybWluZSBpZiBzcHJpdGUgaGFyZHdhcmUg aXMgYXZhaWxhYmxlIG9uIHBpcGUKICAgICAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb25u ZWN0b3IuCiAgICAgICAgc3ByaXRlX3BsYW5lX2lkID0gY29ubmVjdG9yX2ZpbmRfcGxhbmUoZ2Z4 X2ZkLCAmY3Vycl9jb25uZWN0b3IpOwogICAgICAgIGlmICghc3ByaXRlX3BsYW5lX2lkKSB7CiAg ICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGZpbmQgc3ByaXRlIHBsYW5lIG9uIGNydGNcbiIp OwogICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICB9CgogICAgICAgIC8vIFdpZHRoIGFuZCBo ZWlnaHQgb2YgcHJlZmVycmVkIG1vZGUKICAgICAgICBwcmltX3dpZHRoID0gY3Vycl9jb25uZWN0 b3IubW9kZS5oZGlzcGxheTsKICAgICAgICBwcmltX2hlaWdodCA9IGN1cnJfY29ubmVjdG9yLm1v ZGUudmRpc3BsYXk7CgogICAgICAgIC8vIEFsbG9jYXRlIGFuZCBmaWxsIG1lbW9yeSBmb3IgcHJp bWFyeSBzdXJmYWNlCiAgICAgICAgcmV0ID0gcHJlcGFyZV9wcmltYXJ5X3N1cmZhY2UoCiAgICAg ICAgICAgICAgICAgICAgICBnZnhfZmQsCiAgICAgICAgICAgICAgICAgICAgICBwcmltX3dpZHRo LAogICAgICAgICAgICAgICAgICAgICAgcHJpbV9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAg ICAmcHJpbV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAmcHJpbV9zdHJpZGUsCiAgICAg ICAgICAgICAgICAgICAgICAmcHJpbV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgdGlsZWQp OwogICAgICAgIGlmIChyZXQgIT0gMCkgewogICAgICAgICAgICBwcmludGYoIkZhaWxlZCB0byBh ZGQgcHJpbWFyeSBmYiAoJWR4JWQpOiAlc1xuIiwKICAgICAgICAgICAgICAgIHByaW1fd2lkdGgs IHByaW1faGVpZ2h0LCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICBnb3RvIG91dDsKICAg ICAgICB9CgogICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBzdXJmYWNlIGZyYW1lYnVmZmVyCiAg ICAgICAgcmV0ID0gZHJtTW9kZUFkZEZCKAogICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkLAog ICAgICAgICAgICAgICAgICAgICAgcHJpbV93aWR0aCwKICAgICAgICAgICAgICAgICAgICAgIHBy aW1faGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgMjQsIDMyLAogICAgICAgICAgICAgICAg ICAgICAgcHJpbV9zdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICBwcmltX2hhbmRsZSwKICAg ICAgICAgICAgICAgICAgICAgICZwcmltX2ZiX2lkKTsKICAgICAgICBnZW1fY2xvc2UoZ2Z4X2Zk LCBwcmltX2hhbmRsZSk7CgogICAgICAgIGlmIChyZXQgIT0gMCkgewogICAgICAgICAgICBwcmlu dGYoIkZhaWxlZCB0byBhZGQgcHJpbWFyeSBmYiAoJWR4JWQpOiAlc1xuIiwKICAgICAgICAgICAg ICAgIHByaW1fd2lkdGgsIHByaW1faGVpZ2h0LCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAg ICBnb3RvIG91dDsKICAgICAgICB9CgogICAgICAgIC8vIEFsbG9jYXRlIGFuZCBmaWxsIHNwcml0 ZSBzdXJmYWNlcwogICAgICAgIHJldCA9IHByZXBhcmVfc3ByaXRlX3N1cmZhY2VzKAogICAgICAg ICAgICAgICAgICAgICAgZ2Z4X2ZkLAogICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3csCiAg ICAgICAgICAgICAgICAgICAgICBzcHJpdGVfaCwKICAgICAgICAgICAgICAgICAgICAgIG51bV9z dXJmYWNlcywKICAgICAgICAgICAgICAgICAgICAgICZzcHJpdGVfaGFuZGxlc1swXSwKICAgICAg ICAgICAgICAgICAgICAgICZzcHJpdGVfc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgJnNw cml0ZV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgdGlsZWQpOwogICAgICAgIGlmIChyZXQg IT0gMCkgewogICAgICAgICAgICBwcmludGYoIlByZXBhcmF0aW9uIG9mIHNwcml0ZSBzdXJmYWNl cyBmYWlsZWQgJWR4JWRcbiIsCiAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3csIHNwcml0ZV9o KTsKICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgdGhlIHNw cml0ZSBmcmFtZWJ1ZmZlcnMKICAgICAgICBmb3IgKHNwcml0ZV9pbmRleCA9IDA7IHNwcml0ZV9p bmRleCA8IG51bV9zdXJmYWNlczsgc3ByaXRlX2luZGV4KyspIHsKICAgICAgICAgICAgaGFuZGxl c1swXSA9IHNwcml0ZV9oYW5kbGVzW3Nwcml0ZV9pbmRleF07CiAgICAgICAgICAgIGhhbmRsZXNb MV0gPSBoYW5kbGVzWzBdOwogICAgICAgICAgICBoYW5kbGVzWzJdID0gaGFuZGxlc1swXTsKICAg ICAgICAgICAgaGFuZGxlc1szXSA9IGhhbmRsZXNbMF07CiAgICAgICAgICAgIHBpdGNoZXNbMF0g PSBzcHJpdGVfc3RyaWRlOwogICAgICAgICAgICBwaXRjaGVzWzFdID0gc3ByaXRlX3N0cmlkZTsK ICAgICAgICAgICAgcGl0Y2hlc1syXSA9IHNwcml0ZV9zdHJpZGU7CiAgICAgICAgICAgIHBpdGNo ZXNbM10gPSBzcHJpdGVfc3RyaWRlOwogICAgICAgICAgICBtZW1zZXQob2Zmc2V0cywgMCwgc2l6 ZW9mKG9mZnNldHMpKTsKCiAgICAgICAgICAgIHJldCA9IGRybU1vZGVBZGRGQjIoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2Z4X2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0 ZV93LCBzcHJpdGVfaCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwKICAgICAgICAgICAgICAgICAgICAg ICAgICBoYW5kbGVzLCBwaXRjaGVzLCBvZmZzZXRzLCAmc3ByaXRlX2ZiX2lkW3Nwcml0ZV9pbmRl eF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfZmxhZ3MpOwogICAgICAgICAgICBn ZW1fY2xvc2UoZ2Z4X2ZkLCBzcHJpdGVfaGFuZGxlc1tzcHJpdGVfaW5kZXhdKTsKCiAgICAgICAg ICAgIGlmIChyZXQpIHsKICAgICAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGFkZCBzcHJp dGUgZmIgKCVkeCVkKTogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3csIHNw cml0ZV9oLCBzdHJlcnJvcihlcnJubykpOwoKICAgICAgICAgICAgICAgIHNwcml0ZV9pbmRleC0t OwogICAgICAgICAgICAgICAgd2hpbGUgKHNwcml0ZV9pbmRleCA+PSAwKSB7CiAgICAgICAgICAg ICAgICAgICAgZHJtTW9kZVJtRkIoZ2Z4X2ZkLCBzcHJpdGVfZmJfaWRbc3ByaXRlX2luZGV4XSk7 CiAgICAgICAgICAgICAgICAgICAgc3ByaXRlX2luZGV4LS07CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg aWYgKGR1bXBfaW5mbyAhPSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiRGlzcGxheWVkIE1vZGUg Q29ubmVjdG9yIHN0cnVjdDpcbiIKICAgICAgICAgICAgICAgICAgICIgICAgLmlkID0gJWRcbiIK ICAgICAgICAgICAgICAgICAgICIgICAgLm1vZGVfdmFsaWQgPSAlZFxuIgogICAgICAgICAgICAg ICAgICAgIiAgICAuY3J0YyA9ICVkXG4iCiAgICAgICAgICAgICAgICAgICAiICAgIC5waXBlID0g JWRcbiIKICAgICAgICAgICAgICAgICAgICIgICAgZHJtTW9kZU1vZGVJbmZvIC4uLlxuIgogICAg ICAgICAgICAgICAgICAgIiAgICAgICAgLm5hbWUgPSAlc1xuIgogICAgICAgICAgICAgICAgICAg IiAgICAgICAgLnR5cGUgPSAlZFxuIgogICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmZsYWdz ID0gJTA4eFxuIgogICAgICAgICAgICAgICAgICAgIiAgICBkcm1Nb2RlRW5jb2RlciAuLi5cbiIK ICAgICAgICAgICAgICAgICAgICIgICAgICAgIC5lbmNvZGVyX2lkID0gJWRcbiIKICAgICAgICAg ICAgICAgICAgICIgICAgICAgIC5lbmNvZGVyX3R5cGUgPSAlZFxuIgogICAgICAgICAgICAgICAg ICAgIiAgICAgICAgLmNydGNfaWQgPSAlZFxuIgogICAgICAgICAgICAgICAgICAgIiAgICAgICAg LnBvc3NpYmxlX2NydGNzID0gJWRcbiIKICAgICAgICAgICAgICAgICAgICIgICAgICAgIC5wb3Nz aWJsZV9jbG9uZXMgPSAlZFxuIgogICAgICAgICAgICAgICAgICAgIiAgICBkcm1Nb2RlQ29ubmVj dG9yIC4uLlxuIgogICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmNvbm5lY3Rvcl9pZCA9ICVk XG4iCiAgICAgICAgICAgICAgICAgICAiICAgICAgICAuZW5jb2Rlcl9pZCA9ICVkXG4iCiAgICAg ICAgICAgICAgICAgICAiICAgICAgICAuY29ubmVjdG9yX3R5cGUgPSAlZFxuIgogICAgICAgICAg ICAgICAgICAgIiAgICAgICAgLmNvbm5lY3Rvcl90eXBlX2lkID0gJWRcblxuIiwKICAgICAgICAg ICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmlkLAogICAgICAgICAgICAgICAgICAgY3Vycl9jb25u ZWN0b3IubW9kZV92YWxpZCwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNydGMs CiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5waXBlLAogICAgICAgICAgICAgICAg ICAgY3Vycl9jb25uZWN0b3IubW9kZS5uYW1lLAogICAgICAgICAgICAgICAgICAgY3Vycl9jb25u ZWN0b3IubW9kZS50eXBlLAogICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IubW9kZS5m bGFncywKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmVuY29kZXItPmVuY29kZXJf aWQsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5lbmNvZGVyX3R5 cGUsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5jcnRjX2lkLAog ICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rlci0+cG9zc2libGVfY3J0Y3Ms CiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5wb3NzaWJsZV9jbG9u ZXMsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jb25uZWN0b3ItPmNvbm5lY3Rv cl9pZCwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNvbm5lY3Rvci0+ZW5jb2Rl cl9pZCwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNvbm5lY3Rvci0+Y29ubmVj dG9yX3R5cGUsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jb25uZWN0b3ItPmNv bm5lY3Rvcl90eXBlX2lkKTsKCiAgICAgICAgICAgIHByaW50ZigiU3ByaXRlIHN1cmZhY2UgZGlt ZW5zaW9ucyA9ICVkeCVkXG4iCiAgICAgICAgICAgICAgICAgICAiU3ByaXRlIG91dHB1dCBkaW1l bnNpb25zID0gJWR4JWRcbiIKICAgICAgICAgICAgICAgICAgICAiUHJlc3MgYW55IGtleSB0byBj b250aW51ZSA+XG4iLAogICAgICAgICAgICAgICAgICAgIHNwcml0ZV93LAogICAgICAgICAgICAg ICAgICAgIHNwcml0ZV9oLAogICAgICAgICAgICAgICAgICAgIG91dF93LAogICAgICAgICAgICAg ICAgICAgIG91dF9oKTsKCiAgICAgICAgICAgIC8vIFdhaXQgZm9yIGEga2V5LXByZXNzCiAgICAg ICAgICAgIHdoaWxlKCByZWFkKDAsICZrZXksIDEpID09IDApOwogICAgICAgICAgICAvLyBQdXJn ZSB1bnJlYWQgY2hhcmFjdGVycwogICAgICAgICAgICB0Y2ZsdXNoKDAsIFRDSUZMVVNIKTsKICAg ICAgICB9CgogICAgICAgIC8vIFNldCB1cCB0aGUgcHJpbWFyeSBkaXNwbGF5IG1vZGUKICAgICAg ICByZXQgPSBkcm1Nb2RlU2V0Q3J0YygKICAgICAgICAgICAgICAgICAgICAgIGdmeF9mZCwKICAg ICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNydGMsCiAgICAgICAgICAgICAgICAg ICAgICBwcmltX2ZiX2lkLAogICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAg ICAgICAgICAgICZjdXJyX2Nvbm5lY3Rvci5pZCwKICAgICAgICAgICAgICAgICAgICAgIDEsCiAg ICAgICAgICAgICAgICAgICAgICAmY3Vycl9jb25uZWN0b3IubW9kZSk7CiAgICAgICAgaWYgKHJl dCAhPSAwKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gc2V0IG1vZGUg KCVkeCVkQCVkSHopOiAlc1xuIiwKICAgICAgICAgICAgICAgIHByaW1fd2lkdGgsIHByaW1faGVp Z2h0LCBjdXJyX2Nvbm5lY3Rvci5tb2RlLnZyZWZyZXNoLAogICAgICAgICAgICAgICAgc3RyZXJy b3IoZXJybm8pKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvLyBT ZXQgdGhlIHNwcml0ZSBjb2xvcmtleSBzdGF0ZQogICAgICAgIHNldC5wbGFuZV9pZCA9IHNwcml0 ZV9wbGFuZV9pZDsKICAgICAgICBzZXQubWluX3ZhbHVlID0gMDsKICAgICAgICBzZXQubWF4X3Zh bHVlID0gMDsKICAgICAgICBzZXQuZmxhZ3MgPSBJOTE1X1NFVF9DT0xPUktFWV9OT05FOwogICAg ICAgIHJldCA9IGRybUNvbW1hbmRXcml0ZShnZnhfZmQsIERSTV9JOTE1X1NFVF9TUFJJVEVfQ09M T1JLRVksICZzZXQsCiAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc2V0KSk7CgogICAgICAg IC8vIFNldCB1cCBzcHJpdGUgb3V0cHV0IGRpbWVuc2lvbnMsIGluaXRpYWwgcG9zaXRpb24sIGV0 Yy4KICAgICAgICBpZiAob3V0X3cgPiBwcmltX3dpZHRoIC8gMikKICAgICAgICAgICAgb3V0X3cg PSBwcmltX3dpZHRoIC8gMjsKICAgICAgICBpZiAob3V0X2ggPiBwcmltX2hlaWdodCAvIDIpCiAg ICAgICAgICAgIG91dF9oIC0gcHJpbV9oZWlnaHQgLyAyOwoKICAgICAgICBkZWx0YV94ID0gMzsK ICAgICAgICBkZWx0YV95ID0gNDsKICAgICAgICBzcHJpdGVfeCA9IChwcmltX3dpZHRoIC8gMikg LSAob3V0X3cgLyAyKTsKICAgICAgICBzcHJpdGVfeSA9IChwcmltX2hlaWdodCAvIDIpIC0gKG91 dF9oIC8gMik7CgogICAgICAgIGN1cnJUaW1lID0gMDsKICAgICAgICBwcmV2RmxpcFRpbWUgPSAw OyAgICAgICAvLyBXaWxsIGZvcmNlIGltbWVkaWF0ZSBzcHJpdGUgZmxpcAogICAgICAgIHByZXZN b3ZlVGltZSA9IDA7ICAgICAgIC8vIFdpbGwgZm9yY2UgaW1tZWRpYXRlIHNwcml0ZSBtb3ZlCiAg ICAgICAgZGVsdGFGbGlwVGltZSA9IDUwMDAwMDsgLy8gRmxpcCBzcHJpdGUgc3VyZmFjZSBldmVy eSAxLzIgc2Vjb25kCiAgICAgICAgZGVsdGFNb3ZlVGltZSA9IDEwMDAwMDsgLy8gTW92ZSBzcHJp dGUgZXZlcnkgMTAwIG1zCiAgICAgICAgc3ByaXRlX2luZGV4ID0gbnVtX3N1cmZhY2VzIC0gMTsK ICAgICAgICBrZWVwX21vdmluZyA9IDE7CgogICAgICAgIC8vIEJvdW5jZSBzcHJpdGUgb2ZmIHRo ZSB3YWxscwogICAgICAgIHdoaWxlIChrZWVwX21vdmluZykgewogICAgICAgICAgICAvLyBPYnRh aW4gc3lzdGVtIHRpbWUgaW4gdXNlYy4KICAgICAgICAgICAgaWYgKGdldHRpbWVvZmRheSggJnN0 VGltZVZhbCwgTlVMTCApICE9IDApIHsKICAgICAgICAgICAgICAgIHByaW50ZigiZ2V0dGltZW9m ZGF5IGVycm9yOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykp OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY3VyclRpbWUgPSAoKGxvbmcg bG9uZylzdFRpbWVWYWwudHZfc2VjICogMTAwMDAwMCkgKyBzdFRpbWVWYWwudHZfdXNlYzsKICAg ICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXQncyB0aW1lIHRvIGZsaXAgdGhl IHNwcml0ZSBzdXJmYWNlCiAgICAgICAgICAgIGlmIChjdXJyVGltZSAtIHByZXZGbGlwVGltZSA+ IGRlbHRhRmxpcFRpbWUpICB7CiAgICAgICAgICAgICAgICBzcHJpdGVfaW5kZXggPSAoc3ByaXRl X2luZGV4ICsgMSkgJSBudW1fc3VyZmFjZXM7CgogICAgICAgICAgICAgICAgcHJldkZsaXBUaW1l ID0gY3VyclRpbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE1vdmUgdGhlIHNwcml0 ZSBvbiB0aGUgc2NyZWVuIGFuZCBmbGlwCiAgICAgICAgICAgIC8vIHRoZSBzdXJmYWNlIGlmIHRo ZSBpbmRleCBoYXMgY2hhbmdlZAogICAgICAgICAgICBpZiAoZHJtTW9kZVNldFBsYW5lKAogICAg ICAgICAgICAgICAgICAgICAgICBnZnhfZmQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0 ZV9wbGFuZV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuY3J0YywK ICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX2ZiX2lkW3Nwcml0ZV9pbmRleF0sCiAgICAg ICAgICAgICAgICAgICAgICAgIHBsYW5lX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICBz cHJpdGVfeCwgc3ByaXRlX3ksCiAgICAgICAgICAgICAgICAgICAgICAgIG91dF93LCBvdXRfaCwK ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgc3By aXRlX3csIHNwcml0ZV9oKSkgewogICAgICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gZW5h YmxlIHNwcml0ZSBwbGFuZTogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3Io ZXJybm8pKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXQncyB0aW1l IHRvIG1vdmUgdGhlIHNwcml0ZSBzdXJmYWNlCiAgICAgICAgICAgIGlmIChjdXJyVGltZSAtIHBy ZXZNb3ZlVGltZSA+IGRlbHRhTW92ZVRpbWUpICB7CgogICAgICAgICAgICAgICAgLy8gQ29tcHV0 ZSB0aGUgbmV4dCBwb3NpdGlvbiBmb3Igc3ByaXRlCiAgICAgICAgICAgICAgICBzcHJpdGVfeCAr PSBkZWx0YV94OwogICAgICAgICAgICAgICAgc3ByaXRlX3kgKz0gZGVsdGFfeTsKICAgICAgICAg ICAgICAgIGlmIChzcHJpdGVfeCA8IDApIHsKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfeCA9 IDA7CiAgICAgICAgICAgICAgICAgICAgZGVsdGFfeCA9IC1kZWx0YV94OwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ByaXRlX3ggPiBwcmltX3dpZHRoIC0gb3V0 X3cpIHsKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfeCA9IHByaW1fd2lkdGggLSBvdXRfdzsK ICAgICAgICAgICAgICAgICAgICBkZWx0YV94ID0gLWRlbHRhX3g7CiAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgaWYgKHNwcml0ZV95IDwgMCkgewogICAgICAgICAgICAgICAgICAg IHNwcml0ZV95ID0gMDsKICAgICAgICAgICAgICAgICAgICBkZWx0YV95ID0gLWRlbHRhX3k7CiAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChzcHJpdGVfeSA+IHByaW1f aGVpZ2h0IC0gb3V0X2gpIHsKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfeSA9IHByaW1faGVp Z2h0IC0gb3V0X2g7CiAgICAgICAgICAgICAgICAgICAgZGVsdGFfeSA9IC1kZWx0YV95OwogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHByZXZNb3ZlVGltZSA9IGN1cnJUaW1lOwog ICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBGZXRjaCBhIGtleSBmcm9tIGlucHV0IChub24t YmxvY2tpbmcpCiAgICAgICAgICAgIGlmIChyZWFkKDAsICZrZXksIDEpID09IDEpIHsKICAgICAg ICAgICAgICAgIHN3aXRjaCAoa2V5KSB7CiAgICAgICAgICAgICAgICBjYXNlICdxJzogICAgICAg Ly8gS2lsbCB0aGUgcHJvZ3JhbQogICAgICAgICAgICAgICAgY2FzZSAnUSc6CiAgICAgICAgICAg ICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICBjYXNlICdzJzogICAgICAgLy8gU2xvdyBkb3duIHNwcml0ZSBtb3ZlbWVudDsKICAgICAg ICAgICAgICAgICAgICAgZGVsdGFNb3ZlVGltZSA9IChkZWx0YU1vdmVUaW1lICogMTAwKSAvIDkw OwogICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhTW92ZVRpbWUgPiA4MDAwMDApIHsKICAgICAg ICAgICAgICAgICAgICAgICAgZGVsdGFNb3ZlVGltZSA9IDgwMDAwMDsKICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdT JzogICAgICAgLy8gU3BlZWQgdXAgc3ByaXRlIG1vdmVtZW50OwogICAgICAgICAgICAgICAgICAg IGRlbHRhTW92ZVRpbWUgPSAoZGVsdGFNb3ZlVGltZSAqIDEwMCkgLyAxMTA7CiAgICAgICAgICAg ICAgICAgICAgaWYgKGRlbHRhTW92ZVRpbWUgPCAyMDAwKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgIGRlbHRhTW92ZVRpbWUgPSAyMDAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2YnOiAgICAgICAvLyBTbG93 IGRvd24gc3ByaXRlIGZsaXBwaW5nOwogICAgICAgICAgICAgICAgICAgIGRlbHRhRmxpcFRpbWUg PSAoZGVsdGFGbGlwVGltZSAqIDEwMCkgLyA5MDsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVs dGFGbGlwVGltZSA+IDEwMDAwMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFGbGlw VGltZSA9IDEwMDAwMDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnRic6ICAgICAgIC8vIFNwZWVkIHVwIHNwcml0 ZSBmbGlwcGluZzsKICAgICAgICAgICAgICAgICAgICBkZWx0YUZsaXBUaW1lID0gKGRlbHRhRmxp cFRpbWUgKiAxMDApIC8gMTEwOwogICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YUZsaXBUaW1l IDwgMjAwMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFGbGlwVGltZSA9IDIwMDAw OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgICAgIGNhc2UgJ24nOiAgICAgICAvLyBOZXh0IGNvbm5lY3RvcgogICAgICAgICAgICAg ICAgY2FzZSAnTic6CiAgICAgICAgICAgICAgICAgICAga2VlcF9tb3ZpbmcgPSAwOwogICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBQdXJn ZSB1bnJlYWQgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgdGNmbHVzaCgwLCBUQ0lGTFVTSCk7 CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFdhaXQgZm9yIG1pbiBvZiBmbGlwIG9yIG1v dmUgZGVsdGFzCiAgICAgICAgICAgIFNsZWVwVGltZSA9IChkZWx0YUZsaXBUaW1lIDwgZGVsdGFN b3ZlVGltZSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFGbGlwVGltZSA6IGRl bHRhTW92ZVRpbWU7CiAgICAgICAgICAgIHVzbGVlcChTbGVlcFRpbWUpOwogICAgICAgIH0KICAg IH0KCm91dDoKICAgIC8vIFB1cmdlIHVucmVhZCBjaGFyYWN0ZXJzCiAgICB0Y2ZsdXNoKDAsIFRD SUZMVVNIKTsKICAgIC8vIFJlc3RvcmUgcHJldmlvdXMgdGVybWluYWwgc2V0dGluZ3MKICAgIGlm ICh0Y3NldGF0dHIoIDAsIFRDU0FOT1csICZvcmlnX3Rlcm0pICE9IDApIHsKICAgICAgICBwcmlu dGYoInRjZ2V0YXR0ciBmYWlsdXJlOiAlc1xuIiwKICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJy bm8pKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZHJtTW9kZUZyZWVSZXNvdXJjZXMoZ2Z4 X3Jlc291cmNlcyk7Cn0KCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gdXNhZ2UKLy8KLy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgpzdGF0aWMgdm9pZCB1c2FnZShjaGFyICpuYW1lKQp7Cglwcmlu dGYoInVzYWdlOiAlcyAtcyA8cGxhbmUgd2lkdGg+eDxwbGFuZSBoZWlnaHQ+IFstZGh0b11cbiIK ICAgICAgICAgICAiXHQtZFx0W29wdGlvbmFsXSBkdW1wIG1vZGUgaW5mb3JtYXRpb25cbiIKICAg ICAgICAgICAiXHQtaFx0W29wdGlvbmFsXSBvdXRwdXQgaGVscCBtZXNzYWdlXG4iCgkgICAgICAg Ilx0LXRcdFtvcHRpb25hbF0gZW5hYmxlIHRpbGluZ1xuIgogICAgICAgICAgICJcdC1vXHRbb3B0 aW9uYWxdIDxvdXRwdXQgcmVjdCB3aWR0aD54PG91dHB1dCByZWN0IGhlaWdodD5cblxuIgogICAg ICAgICAgICJLZXlib2FyZCBjb250cm9sIGZvciBzcHJpdGUgbW92ZW1lbnQgYW5kIGZsaXAgcmF0 ZSAuLi5cbiIKICAgICAgICAgICAiXHQncScgb3IgJ1EnIC0gUXVpdCB0aGUgcHJvZ3JhbVxuIgog ICAgICAgICAgICJcdCduJyBvciAnTicgLSBTd2l0Y2ggdG8gbmV4dCBkaXNwbGF5XG4iCiAgICAg ICAgICAgIlx0J3MnICAgICAgICAtIFNsb3cgc3ByaXRlIG1vdmVtZW50XG4iCiAgICAgICAgICAg Ilx0J1MnICAgICAgICAtIFNwZWVkIHVwIHNwcml0ZSBtb3ZlbWVudFxuIgogICAgICAgICAgICJc dCdmJyAgICAgICAgLSBTbG93IHNwcml0ZSBzdXJmYWNlIGZsaXBwaW5nXG4iCiAgICAgICAgICAg Ilx0J0YnICAgICAgICAtIFNwZWVkIHVwIHNwcml0ZSBzdXJmYWNlIGZsaXBwaW5nXG4iLAogICAg ICAgICAgIG5hbWUpOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIG1haW4KLy8KLy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKCWlu dCAgICAgICAgICAgICAgICAgYzsKCWludCAgICAgICAgICAgICAgICAgdGVzdF9vdmVybGF5ID0g MCwKCSAgICAgICAgICAgICAgICAgICAgZW5hYmxlX3RpbGluZyA9IDAsCiAgICAgICAgICAgICAg ICAgICAgICAgIGR1bXBfaW5mbyA9IDA7CiAgICBpbnQgICAgICAgICAgICAgICAgIHBsYW5lX3dp ZHRoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfaGVpZ2h0ID0gMCwKICAgICAg ICAgICAgICAgICAgICAgICAgb3V0X3dpZHRoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAg b3V0X2hlaWdodCA9IDA7CglzdGF0aWMgY2hhciAgICAgICAgIG9wdHN0cltdID0gImRzOm86dGgi OwoKCW9wdGVyciA9IDA7Cgl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgb3B0c3RyKSkg IT0gLTEpIHsKCQlzd2l0Y2ggKGMpIHsKICAgICAgICBjYXNlICdkJzogICAgICAgICAgICAgICAv LyBEdW1wIGluZm9ybWF0aW9uCiAgICAgICAgICAgIGR1bXBfaW5mbyA9IDE7CiAgICAgICAgICAg IGJyZWFrOwoJCWNhc2UgJ3QnOiAgICAgICAgICAgICAgIC8vIFRpbGluZyBlbmFibGUKCQkJZW5h YmxlX3RpbGluZyA9IDE7CgkJCWJyZWFrOwoJCWNhc2UgJ3MnOiAgICAgICAgICAgICAgIC8vIFN1 cmZhY2UgZGltZW5zaW9ucwogICAgICAgICAgICBpZiAoc3NjYW5mKG9wdGFyZywgIiVkeCVkIiwK ICAgICAgICAgICAgICAgICAgICAgICAmcGxhbmVfd2lkdGgsICZwbGFuZV9oZWlnaHQpICE9IDIp CiAgICAgICAgICAgICAgICB1c2FnZShhcmd2WzBdKTsKCQkgICAgdGVzdF9vdmVybGF5ID0gMTsK CQkJYnJlYWs7CiAgICAgICAgY2FzZSAnbyc6ICAgICAgICAgICAgICAgLy8gT3V0cHV0IGRpbWVu c2lvbnMKICAgICAgICAgICAgaWYgKHNzY2FuZihvcHRhcmcsICIlZHglZCIsCiAgICAgICAgICAg ICAgICAgICAgICAgJm91dF93aWR0aCwgJm91dF9oZWlnaHQpICE9IDIpCiAgICAgICAgICAgICAg ICB1c2FnZShhcmd2WzBdKTsKICAgICAgICAgICAgYnJlYWs7CgkJZGVmYXVsdDoKCQkJcHJpbnRm KCJ1bmtub3duIG9wdGlvbiAlY1xuIiwgYyk7CgkJCS8qIGZhbGwgdGhyb3VnaCAqLwoJCWNhc2Ug J2gnOiAgICAgICAgICAgICAgIC8vIEhlbHAhCgkJCXVzYWdlKGFyZ3ZbMF0pOwoJCQlnb3RvIG91 dDsKCQl9Cgl9CgoJaWYgKHRlc3Rfb3ZlcmxheSkgewoJICAgIGlmIChvdXRfd2lkdGggPCAocGxh bmVfd2lkdGggLyAyKSkgewoJICAgICAgICBvdXRfd2lkdGggPSBwbGFuZV93aWR0aDsKCSAgICB9 CgoJICAgIGlmIChvdXRfaGVpZ2h0IDwgKHBsYW5lX2hlaWdodCAvIDIpKSB7CgkgICAgICAgIG91 dF9oZWlnaHQgPSBwbGFuZV9oZWlnaHQ7CgkgICAgfQoKCSAgICByaWNvY2hldChlbmFibGVfdGls aW5nLAoJICAgICAgICAgICAgIHBsYW5lX3dpZHRoLAoJICAgICAgICAgICAgIHBsYW5lX2hlaWdo dCwKCSAgICAgICAgICAgICBvdXRfd2lkdGgsCgkgICAgICAgICAgICAgb3V0X2hlaWdodCwKICAg ICAgICAgICAgICAgICBkdW1wX2luZm8pOwoJfSBlbHNlIHsKCSAgICBwcmludGYoIlNwcml0ZSBk aW1lbnNpb25zIGFyZSByZXF1aXJlZDpcbiIpOwoJICAgIHVzYWdlKGFyZ3ZbMF0pOwoJfQoKb3V0 OgoJZXhpdCgwKTsKfQoK --_004_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx --_004_07EEC142D30DAC40BA4DD9C0F9EE51090B7E37FMSMSX102amrcorpi_-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: SNB/IVB sprite demo Date: Wed, 8 Feb 2012 16:50:13 +0100 Message-ID: <20120208155013.GE5030@phenom.ffwll.local> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B7E37@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-we0-f177.google.com (mail-we0-f177.google.com [74.125.82.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 03113A0263 for ; Wed, 8 Feb 2012 07:50:03 -0800 (PST) Received: by wera10 with SMTP id a10so567795wer.36 for ; Wed, 08 Feb 2012 07:50:03 -0800 (PST) Content-Disposition: inline In-Reply-To: <07EEC142D30DAC40BA4DD9C0F9EE51090B7E37@FMSMSX102.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "Reese, Armin C" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org On Wed, Feb 08, 2012 at 02:16:09AM +0000, Reese, Armin C wrote: > I worked with Jesse Barnes to develop a sprite demo/test program for > SNB/IVB. It uses the new IOCTLs: GETPLANERESOURCES, GETPLANE, and > SETPLANE. I also intend on using the program as an example of how to > set up a mode, display a framebuffer, and display sprite on Intel > graphics. The source is attached. I was hoping it could be put into > intel_gpu_tools for all to use. It's a bit a duplication with the existing testdisplay stuff and imo cleaning that up would have been nicer, but whatever. Slurped into i-g-t under demos/ Cheers, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: SNB/IVB sprite demo Date: Wed, 8 Feb 2012 10:14:02 -0800 Message-ID: <20120208101402.0d48d325@jbarnes-desktop> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B7E37@FMSMSX102.amr.corp.intel.com> <20120208155013.GE5030@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1607216787==" Return-path: Received: from oproxy8-pub.bluehost.com (oproxy8-pub.bluehost.com [69.89.22.20]) by gabe.freedesktop.org (Postfix) with SMTP id 92D369EB51 for ; Wed, 8 Feb 2012 10:14:07 -0800 (PST) In-Reply-To: <20120208155013.GE5030@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Daniel Vetter Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org --===============1607216787== Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/LHNiTmBo9gOjjK7RQpWCAAD"; protocol="application/pgp-signature" --Sig_/LHNiTmBo9gOjjK7RQpWCAAD Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Wed, 8 Feb 2012 16:50:13 +0100 Daniel Vetter wrote: > On Wed, Feb 08, 2012 at 02:16:09AM +0000, Reese, Armin C wrote: > > I worked with Jesse Barnes to develop a sprite demo/test program for > > SNB/IVB. It uses the new IOCTLs: GETPLANERESOURCES, GETPLANE, and > > SETPLANE. I also intend on using the program as an example of how to > > set up a mode, display a framebuffer, and display sprite on Intel > > graphics. The source is attached. I was hoping it could be put into > > intel_gpu_tools for all to use. >=20 > It's a bit a duplication with the existing testdisplay stuff and imo > cleaning that up would have been nicer, but whatever. Slurped into i-g-t > under demos/ That just means testdisplay needs to go on a diet. :) I'm ok with the duplication in the meantime... --=20 Jesse Barnes, Intel Open Source Technology Center --Sig_/LHNiTmBo9gOjjK7RQpWCAAD Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIbBAEBAgAGBQJPMrtqAAoJEIEoDkX4Qk9hhoUP91WI2hn76IVfc7c8GCTzu8qT X1Y2Sg99SO+kn/m+lmE3v8YC3ZF2FdIE2aKNgwc38WWpVelmzU/l4jY0DcSa77Rq 5o4QtqU2+R75HKGrvZNVFULOUBJXTqkbn4Wf9HuQhN3rBvgPNYHi39k7YvZ9S2WG mmclyUVkPTibG53NpTMXb+EDQTLDeuTMZJH75sUJ5E+4wsBd4yhw+LCZYAtuz92m 7zov27euMDmhFYS24xysC9IMnwkVj5FldOXIkDMmqUIqUY6/CAJngKKfZVfEIcmo 2jCugK9RsO4OAySvcKifFpaLGqSudSvCyTCW7DDUpOeIgEi/g92+CdrFVKqteOJG DyqEulhYJpW9iy4mIgJtn89pl+6b85+FHxwmlF4knNA6V3dO0pYo7880wJxlfXzc C5gCVrdqj432yqmnVJHBi5POmce7TE0gVvRvBoyOqf/XZDC9uj8VKDTWY/YYc1D1 3QsKuEDGTI4qdpDJqNS/PpytQt84SU+EQP+Lg2qoiaQLL3fNR9W0tlnrCpAZFZ7W TWjznF7ZE3eBXUrOtndZdoGq+A8O2Afd3BnnwU88AKDhRlWSd+6HGytCjrI02Ytv OCkCSvJDVibn5fCmnsdMMO6sLnTSOpVYAjaTQwKDQ8wh7Yas+5qC/NqAuUgW2q45 S7ztjR0E1gQxrCwhIN4= =NrpI -----END PGP SIGNATURE----- --Sig_/LHNiTmBo9gOjjK7RQpWCAAD-- --===============1607216787== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx --===============1607216787==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: SNB/IVB sprite demo Date: Fri, 10 Feb 2012 18:48:56 +0100 Message-ID: <20120210174856.GB27809@phenom.ffwll.local> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B7E37@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 52F339EB3C for ; Fri, 10 Feb 2012 09:48:45 -0800 (PST) Received: by wico1 with SMTP id o1so2516797wic.36 for ; Fri, 10 Feb 2012 09:48:44 -0800 (PST) Content-Disposition: inline In-Reply-To: <07EEC142D30DAC40BA4DD9C0F9EE51090B7E37@FMSMSX102.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "Reese, Armin C" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org Hi Armin, On Wed, Feb 08, 2012 at 02:16:09AM +0000, Reese, Armin C wrote: > I worked with Jesse Barnes to develop a sprite demo/test program for > SNB/IVB. It uses the new IOCTLs: GETPLANERESOURCES, GETPLANE, and > SETPLANE. I also intend on using the program as an example of how to > set up a mode, display a framebuffer, and display sprite on Intel > graphics. The source is attached. I was hoping it could be put into > intel_gpu_tools for all to use. I've noticed that sprite_on.c spews more warnings into my build logs than the entire rest of intel-gpu-tools. And that is mostly testdisplay.c doing stupid and ugly things. Care to send in a patch to make building sprite_on.c less noisy? I have gcc 4.6 here, so that's the benchmark ;-) Cheers, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Reese, Armin C" Subject: Re: SNB/IVB sprite demo Date: Sat, 11 Feb 2012 01:11:16 +0000 Message-ID: <07EEC142D30DAC40BA4DD9C0F9EE51090B9FBC@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_005_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_" Return-path: Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by gabe.freedesktop.org (Postfix) with ESMTP id E0917A0E0B for ; Fri, 10 Feb 2012 17:11:18 -0800 (PST) Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org --_005_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_ Content-Type: multipart/alternative; boundary="_000_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_" --_000_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Daniel, Thanks for letting me know about the GCC warning messages. I did my final = tweeks on the program in Android and compiled in that environment. The com= piler there is a bit blind and the build jobs generate so much output, it's= easy to ignore warnings. Anyway, I'll be more careful next time. The GCC compiler on my Ubuntu 11.0= 4 system is version 4.5.2. I haven't installed 4.6.2 yet. GCC produced no= warnings after the patch was applied. I attached both the patch and the n= ew source code for sprite_on.c. Thanks for taking time for this. I intend on adding color key support into= sprite_on.c to validate operation of that feature, so there will be more p= atches coming. Armin --_000_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi Daniel,

 

Thanks for letting me know about the GCC warning mes= sages.  I did my final tweeks on the program in Android and compiled i= n that environment.  The compiler there is a bit blind and the build j= obs generate so much output, it's easy to ignore warnings.

 

Anyway, I'll be more careful next time.  The GC= C compiler on my Ubuntu 11.04 system is version 4.5.2.  I haven't inst= alled 4.6.2 yet.  GCC produced no warnings after the patch was applied= .  I attached both the patch and the new source code for sprite_on.c.

 

Thanks for taking time for this.  I intend on a= dding color key support into sprite_on.c to validate operation of that feat= ure, so there will be more patches coming.

 

Armin

--_000_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_-- --_005_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_ Content-Type: text/plain; name="sprite_on.c" Content-Description: sprite_on.c Content-Disposition: attachment; filename="sprite_on.c"; size=37900; creation-date="Sat, 11 Feb 2012 00:58:25 GMT"; modification-date="Sat, 11 Feb 2012 00:41:42 GMT" Content-Transfer-Encoding: base64 LyoKICogQ29weXJpZ2h0IDIwMTAgSW50ZWwgQ29ycG9yYXRpb24KICogICBBcm1pbiBSZWVzZSA8 YXJtaW4uYy5yZWVzZUBpbnRlbC5jb20+CiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCiAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKICog SU4gVEhFIFNPRlRXQVJFLgogKi8KCi8qCiAqIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCBmb3Ig dGVzdGluZyBzcHJpdGUgZnVuY3Rpb25hbGl0eS4KICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KI2lu Y2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2lu Y2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoj aW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDx0ZXJtaW9zLmg+CiNpbmNsdWRlIDxzeXMvdGlt ZS5oPgojaW5jbHVkZSA8c3lzL3BvbGwuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+CiNpbmNsdWRl IDxzeXMvbW1hbi5oPgojaW5jbHVkZSA8c3lzL2lvY3RsLmg+CgojaW5jbHVkZSAieGY4NmRybS5o IgojaW5jbHVkZSAieGY4NmRybU1vZGUuaCIKI2luY2x1ZGUgImk5MTVfZHJtLmgiCgojaWYgZGVm aW5lZChEUk1fSU9DVExfTU9ERV9BRERGQjIpICYmIGRlZmluZWQoRFJNX0k5MTVfU0VUX1NQUklU RV9DT0xPUktFWSkKI2RlZmluZSBURVNUX1BMQU5FUyAxCiNpbmNsdWRlICJkcm1fZm91cmNjLmgi CiNlbmRpZgoKI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChh cnIpWzBdKSkKCnN0cnVjdCB0eXBlX25hbWUKewoJaW50ICAgICAgICAgICAgICAgICB0eXBlOwoJ Y29uc3QgY2hhciAgICAgICAgICAqbmFtZTsKfTsKCiNkZWZpbmUgdHlwZV9uYW1lX2ZuKHJlcykg XApzdGF0aWMgY29uc3QgY2hhciAqIHJlcyMjX3N0cihpbnQgdHlwZSkgewkJCVwKCXVuc2lnbmVk IGludCBpOwkJCQkJXAoJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocmVzIyNfbmFtZXMpOyBp KyspIHsgXAoJCWlmIChyZXMjI19uYW1lc1tpXS50eXBlID09IHR5cGUpCVwKCQkJcmV0dXJuIHJl cyMjX25hbWVzW2ldLm5hbWU7CVwKCX0JCQkJCQlcCglyZXR1cm4gIihpbnZhbGlkKSI7CQkJCVwK fQoKc3RydWN0IHR5cGVfbmFtZSBlbmNvZGVyX3R5cGVfbmFtZXNbXSA9IHsKCXsgRFJNX01PREVf RU5DT0RFUl9OT05FLCAibm9uZSIgfSwKCXsgRFJNX01PREVfRU5DT0RFUl9EQUMsICJEQUMiIH0s Cgl7IERSTV9NT0RFX0VOQ09ERVJfVE1EUywgIlRNRFMiIH0sCgl7IERSTV9NT0RFX0VOQ09ERVJf TFZEUywgIkxWRFMiIH0sCgl7IERSTV9NT0RFX0VOQ09ERVJfVFZEQUMsICJUVkRBQyIgfSwKfTsK CnR5cGVfbmFtZV9mbihlbmNvZGVyX3R5cGUpCgpzdHJ1Y3QgdHlwZV9uYW1lIGNvbm5lY3Rvcl9z dGF0dXNfbmFtZXNbXSA9IHsKCXsgRFJNX01PREVfQ09OTkVDVEVELCAiY29ubmVjdGVkIiB9LAoJ eyBEUk1fTU9ERV9ESVNDT05ORUNURUQsICJkaXNjb25uZWN0ZWQiIH0sCgl7IERSTV9NT0RFX1VO S05PV05DT05ORUNUSU9OLCAidW5rbm93biIgfSwKfTsKCnR5cGVfbmFtZV9mbihjb25uZWN0b3Jf c3RhdHVzKQoKc3RydWN0IHR5cGVfbmFtZSBjb25uZWN0b3JfdHlwZV9uYW1lc1tdID0gewoJeyBE Uk1fTU9ERV9DT05ORUNUT1JfVW5rbm93biwgInVua25vd24iIH0sCgl7IERSTV9NT0RFX0NPTk5F Q1RPUl9WR0EsICJWR0EiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9EVklJLCAiRFZJLUkiIH0s Cgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9EVklELCAiRFZJLUQiIH0sCgl7IERSTV9NT0RFX0NPTk5F Q1RPUl9EVklBLCAiRFZJLUEiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9Db21wb3NpdGUsICJj b21wb3NpdGUiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl9TVklERU8sICJzLXZpZGVvIiB9LAoJ eyBEUk1fTU9ERV9DT05ORUNUT1JfTFZEUywgIkxWRFMiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RP Ul9Db21wb25lbnQsICJjb21wb25lbnQiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RPUl85UGluRElO LCAiOS1waW4gRElOIiB9LAoJeyBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQsICJEaXNw bGF5UG9ydCIgfSwKCXsgRFJNX01PREVfQ09OTkVDVE9SX0hETUlBLCAiSERNSS1BIiB9LAoJeyBE Uk1fTU9ERV9DT05ORUNUT1JfSERNSUIsICJIRE1JLUIiIH0sCgl7IERSTV9NT0RFX0NPTk5FQ1RP Ul9UViwgIlRWIiB9LAoJeyBEUk1fTU9ERV9DT05ORUNUT1JfZURQLCAiRW1iZWRkZWQgRGlzcGxh eVBvcnQiIH0sCn07Cgp0eXBlX25hbWVfZm4oY29ubmVjdG9yX3R5cGUpCgovKgogKiBNb2RlIHNl dHRpbmcgd2l0aCB0aGUga2VybmVsIGludGVyZmFjZXMgaXMgYSBiaXQgb2YgYSBjaG9yZS4KICog Rmlyc3QgeW91IGhhdmUgdG8gZmluZCB0aGUgY29ubmVjdG9yIGluIHF1ZXN0aW9uIGFuZCBtYWtl IHN1cmUgdGhlCiAqIHJlcXVlc3RlZCBtb2RlIGlzIGF2YWlsYWJsZS4KICogVGhlbiB5b3UgbmVl ZCB0byBmaW5kIHRoZSBlbmNvZGVyIGF0dGFjaGVkIHRvIHRoYXQgY29ubmVjdG9yIHNvIHlvdQog KiBjYW4gYmluZCBpdCB3aXRoIGEgZnJlZSBjcnRjLgogKi8Kc3RydWN0IGNvbm5lY3Rvcgp7Cgl1 aW50MzJfdCAgICAgICAgICAgIGlkOwoJaW50ICAgICAgICAgICAgICAgICBtb2RlX3ZhbGlkOwoJ ZHJtTW9kZU1vZGVJbmZvICAgICBtb2RlOwoJZHJtTW9kZUVuY29kZXIgICAgICAqZW5jb2RlcjsK CWRybU1vZGVDb25uZWN0b3IgICAgKmNvbm5lY3RvcjsKCWludCAgICAgICAgICAgICAgICAgY3J0 YzsKCWludCAgICAgICAgICAgICAgICAgcGlwZTsKfTsKCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Ly8KLy8gdXNhZ2UKLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpzdGF0aWMgdm9pZCBkdW1wX21v ZGUoCiAgICAgICAgZHJtTW9kZU1vZGVJbmZvICAgICAgICAgICAgICptb2RlKQp7CglwcmludGYo IiAgJXMgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgMHgleCAweCV4ICVkXG4iLAoJICAgICAg IG1vZGUtPm5hbWUsCgkgICAgICAgbW9kZS0+dnJlZnJlc2gsCgkgICAgICAgbW9kZS0+aGRpc3Bs YXksCgkgICAgICAgbW9kZS0+aHN5bmNfc3RhcnQsCgkgICAgICAgbW9kZS0+aHN5bmNfZW5kLAoJ ICAgICAgIG1vZGUtPmh0b3RhbCwKCSAgICAgICBtb2RlLT52ZGlzcGxheSwKCSAgICAgICBtb2Rl LT52c3luY19zdGFydCwKCSAgICAgICBtb2RlLT52c3luY19lbmQsCgkgICAgICAgbW9kZS0+dnRv dGFsLAoJICAgICAgIG1vZGUtPmZsYWdzLAoJICAgICAgIG1vZGUtPnR5cGUsCgkgICAgICAgbW9k ZS0+Y2xvY2spOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIGR1bXBfY29ubmVjdG9y cwovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0YXRpYyB2b2lkIGR1bXBfY29ubmVjdG9ycygK ICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkLAogICAgICAgIGRybU1v ZGVSZXMgICAgICAgICAgICAgICAgICAqcmVzb3VyY2VzKQp7CglpbnQgaSwgajsKCglwcmludGYo IkNvbm5lY3RvcnM6XG4iKTsKCXByaW50ZigiaWRcdGVuY29kZXJcdHN0YXR1c1x0XHR0eXBlXHRz aXplIChtbSlcdG1vZGVzXG4iKTsKCWZvciAoaSA9IDA7IGkgPCByZXNvdXJjZXMtPmNvdW50X2Nv bm5lY3RvcnM7IGkrKykgewoJCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKCgkJY29ubmVj dG9yID0gZHJtTW9kZUdldENvbm5lY3RvcihnZnhfZmQsIHJlc291cmNlcy0+Y29ubmVjdG9yc1tp XSk7CgkJaWYgKCFjb25uZWN0b3IpIHsKCQkJcHJpbnRmKCJjb3VsZCBub3QgZ2V0IGNvbm5lY3Rv ciAlaTogJXNcbiIsCgkJCQlyZXNvdXJjZXMtPmNvbm5lY3RvcnNbaV0sIHN0cmVycm9yKGVycm5v KSk7CgkJCWNvbnRpbnVlOwoJCX0KCgkJcHJpbnRmKCIlZFx0JWRcdCVzXHQlc1x0JWR4JWRcdFx0 JWRcbiIsCgkJICAgICAgIGNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLAoJCSAgICAgICBjb25uZWN0 b3ItPmVuY29kZXJfaWQsCgkJICAgICAgIGNvbm5lY3Rvcl9zdGF0dXNfc3RyKGNvbm5lY3Rvci0+ Y29ubmVjdGlvbiksCgkJICAgICAgIGNvbm5lY3Rvcl90eXBlX3N0cihjb25uZWN0b3ItPmNvbm5l Y3Rvcl90eXBlKSwKCQkgICAgICAgY29ubmVjdG9yLT5tbVdpZHRoLCBjb25uZWN0b3ItPm1tSGVp Z2h0LAoJCSAgICAgICBjb25uZWN0b3ItPmNvdW50X21vZGVzKTsKCgkJaWYgKCFjb25uZWN0b3It PmNvdW50X21vZGVzKQoJCQljb250aW51ZTsKCgkJcHJpbnRmKCIgIG1vZGVzOlxuIik7CgkJcHJp bnRmKCIgIG5hbWUgcmVmcmVzaCAoSHopIGhkaXNwIGhzcyBoc2UgaHRvdCB2ZGlzcCAiCgkJICAg ICAgICJ2c3MgdnNlIHZ0b3QgZmxhZ3MgdHlwZSBjbG9ja1xuIik7CgkJZm9yIChqID0gMDsgaiA8 IGNvbm5lY3Rvci0+Y291bnRfbW9kZXM7IGorKykKCQkJZHVtcF9tb2RlKCZjb25uZWN0b3ItPm1v ZGVzW2pdKTsKCgkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKCX0KCXByaW50Zigi XG4iKTsKfQoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBkdW1wX2NydGNzCi8vCi8vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKc3RhdGljIHZvaWQgZHVtcF9jcnRjcygKICAgICAgICBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkLAogICAgICAgIGRybU1vZGVSZXMgICAgICAgICAg ICAgICAgICAqcmVzb3VyY2VzKQp7CglpbnQgaTsKCglwcmludGYoIkNSVENzOlxuIik7Cglwcmlu dGYoImlkXHRmYlx0cG9zXHRzaXplXG4iKTsKCWZvciAoaSA9IDA7IGkgPCByZXNvdXJjZXMtPmNv dW50X2NydGNzOyBpKyspIHsKCQlkcm1Nb2RlQ3J0YyAqY3J0YzsKCgkJY3J0YyA9IGRybU1vZGVH ZXRDcnRjKGdmeF9mZCwgcmVzb3VyY2VzLT5jcnRjc1tpXSk7CgkJaWYgKCFjcnRjKSB7CgkJCXBy aW50ZigiY291bGQgbm90IGdldCBjcnRjICVpOiAlc1xuIiwKCQkJCSAgIHJlc291cmNlcy0+Y3J0 Y3NbaV0sCgkJCQkgICBzdHJlcnJvcihlcnJubykpOwoJCQljb250aW51ZTsKCQl9CgkJcHJpbnRm KCIlZFx0JWRcdCglZCwlZClcdCglZHglZClcbiIsCgkJICAgICAgIGNydGMtPmNydGNfaWQsCgkJ ICAgICAgIGNydGMtPmJ1ZmZlcl9pZCwKCQkgICAgICAgY3J0Yy0+eCwgY3J0Yy0+eSwKCQkgICAg ICAgY3J0Yy0+d2lkdGgsIGNydGMtPmhlaWdodCk7CgkJZHVtcF9tb2RlKCZjcnRjLT5tb2RlKTsK CgkJZHJtTW9kZUZyZWVDcnRjKGNydGMpOwoJfQoJcHJpbnRmKCJcbiIpOwp9CgovLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi8vCi8vIGR1bXBfcGxhbmVzCi8vCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK c3RhdGljIHZvaWQgZHVtcF9wbGFuZXMoCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgIGdmeF9mZCwKICAgICAgICBkcm1Nb2RlUmVzICAgICAgICAgICAgICAgICAgKnJlc291cmNl cykKewoJZHJtTW9kZVBsYW5lUmVzICAgICAgICAgICAgICpwbGFuZV9yZXNvdXJjZXM7Cglkcm1N b2RlUGxhbmUgICAgICAgICAgICAgICAgKm92cjsKCWludCBpOwoKCXBsYW5lX3Jlc291cmNlcyA9 IGRybU1vZGVHZXRQbGFuZVJlc291cmNlcyhnZnhfZmQpOwoJaWYgKCFwbGFuZV9yZXNvdXJjZXMp IHsKCQlwcmludGYoImRybU1vZGVHZXRQbGFuZVJlc291cmNlcyBmYWlsZWQ6ICVzXG4iLAoJCQkg ICBzdHJlcnJvcihlcnJubykpOwoJCXJldHVybjsKCX0KCglwcmludGYoIlBsYW5lczpcbiIpOwoJ cHJpbnRmKCJpZFx0Y3J0Y1x0ZmJcdENSVEMgeCx5XHR4LHlcdGdhbW1hIHNpemVcbiIpOwoJZm9y IChpID0gMDsgaSA8IHBsYW5lX3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOyBpKyspIHsKCQlvdnIg PSBkcm1Nb2RlR2V0UGxhbmUoZ2Z4X2ZkLCBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tpXSk7CgkJ aWYgKCFvdnIpIHsKCQkJcHJpbnRmKCJkcm1Nb2RlR2V0UGxhbmUgZmFpbGVkOiAlc1xuIiwKCQkJ ICAgICAgIHN0cmVycm9yKGVycm5vKSk7CgkJCWNvbnRpbnVlOwoJCX0KCgkJcHJpbnRmKCIlZFx0 JWRcdCVkXHQlZCwlZFx0XHQlZCwlZFx0JWRcbiIsCgkJICAgICAgIG92ci0+cGxhbmVfaWQsIG92 ci0+Y3J0Y19pZCwgb3ZyLT5mYl9pZCwKCQkgICAgICAgb3ZyLT5jcnRjX3gsIG92ci0+Y3J0Y195 LCBvdnItPngsIG92ci0+eSwKCQkgICAgICAgb3ZyLT5nYW1tYV9zaXplKTsKCgkJZHJtTW9kZUZy ZWVQbGFuZShvdnIpOwoJfQoJcHJpbnRmKCJcbiIpOwoKCXJldHVybjsKfQoKLy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgovLwovLyBjb25uZWN0b3JfZmluZF9wcmVmZXJyZWRfbW9kZQovLwovLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCnN0YXRpYyB2b2lkIGNvbm5lY3Rvcl9maW5kX3ByZWZlcnJlZF9tb2Rl KAogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGdmeF9mZCwKICAgICAgICBkcm1Nb2Rl UmVzICAgICAgICAgICAgICAqZ2Z4X3Jlc291cmNlcywKICAgICAgICBzdHJ1Y3QgY29ubmVjdG9y ICAgICAgICAqYykKewoJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwoJZHJtTW9kZUVuY29k ZXIgKmVuY29kZXIgPSBOVUxMOwoJaW50IGksIGo7CgoJLyogRmlyc3QsIGZpbmQgdGhlIGNvbm5l Y3RvciAmIG1vZGUgKi8KCWMtPm1vZGVfdmFsaWQgPSAwOwoJY29ubmVjdG9yID0gZHJtTW9kZUdl dENvbm5lY3RvcihnZnhfZmQsIGMtPmlkKTsKCWlmICghY29ubmVjdG9yKSB7CgkJcHJpbnRmKCJj b3VsZCBub3QgZ2V0IGNvbm5lY3RvciAlZDogJXNcbiIsCgkJCSAgIGMtPmlkLAoJCQkgICBzdHJl cnJvcihlcnJubykpOwoJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7CgkJcmV0dXJu OwoJfQoKCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rpb24gIT0gRFJNX01PREVfQ09OTkVDVEVEKSB7 CgkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKCQlyZXR1cm47Cgl9CgoJaWYgKCFj b25uZWN0b3ItPmNvdW50X21vZGVzKSB7CgkJcHJpbnRmKCJjb25uZWN0b3IgJWQgaGFzIG5vIG1v ZGVzXG4iLAoJCSAgICAgICBjLT5pZCk7CgkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9y KTsKCQlyZXR1cm47Cgl9CgoJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkICE9IGMtPmlkKSB7 CgkJcHJpbnRmKCJjb25uZWN0b3IgaWQgZG9lc24ndCBtYXRjaCAoJWQgIT0gJWQpXG4iLAoJCQkg ICAgY29ubmVjdG9yLT5jb25uZWN0b3JfaWQsCgkJCSAgICBjLT5pZCk7CgkJZHJtTW9kZUZyZWVD b25uZWN0b3IoY29ubmVjdG9yKTsKCQlyZXR1cm47Cgl9CgoJZm9yIChqID0gMDsgaiA8IGNvbm5l Y3Rvci0+Y291bnRfbW9kZXM7IGorKykgewoJCWMtPm1vZGUgPSBjb25uZWN0b3ItPm1vZGVzW2pd OwoJCWlmIChjLT5tb2RlLnR5cGUgJiBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRCkgewoJCQljLT5t b2RlX3ZhbGlkID0gMTsKCQkJYnJlYWs7CgkJfQoJfQoKCWlmICghYy0+bW9kZV92YWxpZCkgewoJ CWlmIChjb25uZWN0b3ItPmNvdW50X21vZGVzID4gMCkgewoJCQkvKiB1c2UgdGhlIGZpcnN0IG1v ZGUgYXMgdGVzdCBtb2RlICovCgkJCWMtPm1vZGUgPSBjb25uZWN0b3ItPm1vZGVzWzBdOwoJCQlj LT5tb2RlX3ZhbGlkID0gMTsKCQl9IGVsc2UgewoJCQlwcmludGYoImZhaWxlZCB0byBmaW5kIGFu eSBtb2RlcyBvbiBjb25uZWN0b3IgJWRcbiIsCgkJCQkgICBjLT5pZCk7CgkJCXJldHVybjsKCQl9 Cgl9CgoJLyogTm93IGdldCB0aGUgZW5jb2RlciAqLwoJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rv ci0+Y291bnRfZW5jb2RlcnM7IGkrKykgewoJCWVuY29kZXIgPSBkcm1Nb2RlR2V0RW5jb2Rlcihn ZnhfZmQsIGNvbm5lY3Rvci0+ZW5jb2RlcnNbaV0pOwoKCQlpZiAoIWVuY29kZXIpIHsKCQkJcHJp bnRmKCJjb3VsZCBub3QgZ2V0IGVuY29kZXIgJWk6ICVzXG4iLAoJCQkJICAgZ2Z4X3Jlc291cmNl cy0+ZW5jb2RlcnNbaV0sCgkJCQkgICBzdHJlcnJvcihlcnJubykpOwoJCQlkcm1Nb2RlRnJlZUVu Y29kZXIoZW5jb2Rlcik7CgkJCWNvbnRpbnVlOwoJCX0KCgkJYnJlYWs7Cgl9CgoJYy0+ZW5jb2Rl ciA9IGVuY29kZXI7CgoJaWYgKGkgPT0gZ2Z4X3Jlc291cmNlcy0+Y291bnRfZW5jb2RlcnMpIHsK CQlwcmludGYoImZhaWxlZCB0byBmaW5kIGVuY29kZXJcbiIpOwoJCWMtPm1vZGVfdmFsaWQgPSAw OwoJCXJldHVybjsKCX0KCgkvKiBGaW5kIGZpcnN0IENSVEMgbm90IGluIHVzZSAqLwoJZm9yIChp ID0gMDsgaSA8IGdmeF9yZXNvdXJjZXMtPmNvdW50X2NydGNzOyBpKyspIHsKCQlpZiAoZ2Z4X3Jl c291cmNlcy0+Y3J0Y3NbaV0gJiYgKGMtPmVuY29kZXItPnBvc3NpYmxlX2NydGNzICYgKDE8PGkp KSkKCQkJYnJlYWs7Cgl9CgljLT5jcnRjID0gZ2Z4X3Jlc291cmNlcy0+Y3J0Y3NbaV07CgljLT5w aXBlID0gaTsKCglnZnhfcmVzb3VyY2VzLT5jcnRjc1tpXSA9IDA7CgoJYy0+Y29ubmVjdG9yID0g Y29ubmVjdG9yOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIGdlbV9jcmVhdGUKLy8K Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgpzdGF0aWMgdWludDMyX3QgZ2VtX2NyZWF0ZShpbnQgZmQs IGludCBzaXplKQp7CglzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSBjcmVhdGU7CgoJY3JlYXRl LmhhbmRsZSA9IDA7CgljcmVhdGUuc2l6ZSA9IChzaXplICsgNDA5NSkgJiAtNDA5NjsKCSh2b2lk KWRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ1JFQVRFLCAmY3JlYXRlKTsKCglyZXR1 cm4gY3JlYXRlLmhhbmRsZTsKfQoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBnZW1fbW1h cAovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0YXRpYyB2b2lkICpnZW1fbW1hcChpbnQgZmQs IHVpbnQzMl90IGhhbmRsZSwgaW50IHNpemUsIGludCBwcm90KQp7CglzdHJ1Y3QgZHJtX2k5MTVf Z2VtX21tYXBfZ3R0IG1tYXBfYXJnOwoJdm9pZCAqcHRyOwoKCW1tYXBfYXJnLmhhbmRsZSA9IGhh bmRsZTsKCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfR1RULCAmbW1h cF9hcmcpKQoJCXJldHVybiBOVUxMOwoKCXB0ciA9IG1tYXAoMCwgc2l6ZSwgcHJvdCwgTUFQX1NI QVJFRCwgZmQsIG1tYXBfYXJnLm9mZnNldCk7CglpZiAocHRyID09IE1BUF9GQUlMRUQpCgkJcHRy ID0gTlVMTDsKCglyZXR1cm4gcHRyOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIGdl bV9jbG9zZQovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0YXRpYyB2b2lkIGdlbV9jbG9zZShp bnQgZmQsIHVpbnQzMl90IGhhbmRsZSkKewoJc3RydWN0IGRybV9nZW1fY2xvc2UgY2xvc2Vfc3Q7 CgoJY2xvc2Vfc3QuaGFuZGxlID0gaGFuZGxlOwoJKHZvaWQpZHJtSW9jdGwoZmQsIERSTV9JT0NU TF9HRU1fQ0xPU0UsICZjbG9zZV9zdCk7Cn0KCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8g Y29ubmVjdG9yX2ZpbmRfcGxhbmUKLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpzdGF0aWMgaW50 IGNvbm5lY3Rvcl9maW5kX3BsYW5lKGludCBnZnhfZmQsIHN0cnVjdCBjb25uZWN0b3IgKmMpCnsK CWRybU1vZGVQbGFuZVJlcyAqcGxhbmVfcmVzb3VyY2VzOwoJZHJtTW9kZVBsYW5lICpvdnI7Cgl1 aW50MzJfdCBpZCA9IDA7CglpbnQgaTsKCglwbGFuZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0UGxh bmVSZXNvdXJjZXMoZ2Z4X2ZkKTsKCWlmICghcGxhbmVfcmVzb3VyY2VzKSB7CgkJcHJpbnRmKCJk cm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMgZmFpbGVkOiAlc1xuIiwKCQkgICAgICAgc3RyZXJyb3Io ZXJybm8pKTsKCQlyZXR1cm4gMDsKCX0KCglmb3IgKGkgPSAwOyBpIDwgcGxhbmVfcmVzb3VyY2Vz LT5jb3VudF9wbGFuZXM7IGkrKykgewoJCW92ciA9IGRybU1vZGVHZXRQbGFuZShnZnhfZmQsIHBs YW5lX3Jlc291cmNlcy0+cGxhbmVzW2ldKTsKCQlpZiAoIW92cikgewoJCQlwcmludGYoImRybU1v ZGVHZXRQbGFuZSBmYWlsZWQ6ICVzXG4iLAoJCQkJICAgc3RyZXJyb3IoZXJybm8pKTsKCQkJY29u dGludWU7CgkJfQoKCQlpZiAob3ZyLT5wb3NzaWJsZV9jcnRjcyAmICgxIDw8IGMtPnBpcGUpKSB7 CgkJCWlkID0gb3ZyLT5wbGFuZV9pZDsKCQkJZHJtTW9kZUZyZWVQbGFuZShvdnIpOwoJCQlicmVh azsKCQl9CgkJZHJtTW9kZUZyZWVQbGFuZShvdnIpOwoJfQoKCXJldHVybiBpZDsKfQoKLy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgovLwovLyBwcmVwYXJlX3ByaW1hcnlfc3VyZmFjZQovLwovLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCnN0YXRpYyBpbnQgcHJlcGFyZV9wcmltYXJ5X3N1cmZhY2UoCiAgICAg ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGZkLAogICAgICAgICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICBwcmltX3dpZHRoLAogICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAg ICAgICBwcmltX2hlaWdodCwKICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgKnBy aW1faGFuZGxlLAogICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAqcHJpbV9zdHJp ZGUsCiAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICpwcmltX3NpemUsCiAgICAg ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHRpbGVkKQp7CiAgICB1aW50MzJfdCAgICAg ICAgICAgICAgICAgICAgICAgIGJ5dGVzX3Blcl9waXhlbCA9IHNpemVvZih1aW50MzJfdCk7CiAg ICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICpwcmltX2ZiX3B0cjsKICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fc2V0X3RpbGluZyAgc2V0X3RpbGluZzsKCiAgICBpZiAoYnl0ZXNfcGVy X3BpeGVsICE9IHNpemVvZih1aW50MzJfdCkpIHsKICAgICAgICBwcmludGYoIkJhZCBieXRlc19w ZXJfcGl4ZWwgZm9yIHByaW1hcnkgc3VyZmFjZTogJWRcbiIsCiAgICAgICAgICAgICAgIGJ5dGVz X3Blcl9waXhlbCk7CiAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICB9CgogICAgaWYgKHRpbGVk KSB7CiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHY7CgogICAgICAgIC8qIFJv dW5kIHRoZSB0aWxpbmcgdXAgdG8gdGhlIG5leHQgcG93ZXItb2YtdHdvIGFuZCB0aGUKICAgICAg ICAgKiByZWdpb24gdXAgdG8gdGhlIG5leHQgcG90IGZlbmNlIHNpemUgc28gdGhhdCB0aGlzIHdv cmtzCiAgICAgICAgICogb24gYWxsIGdlbmVyYXRpb25zLgogICAgICAgICAqCiAgICAgICAgICog VGhpcyBjYW4gc3RpbGwgZmFpbCBpZiB0aGUgZnJhbWVidWZmZXIgaXMgdG9vIGxhcmdlIHRvCiAg ICAgICAgICogYmUgdGlsZWQuIEJ1dCB0aGVuIHRoYXQgZmFpbHVyZSBpcyBleHBlY3RlZC4KICAg ICAgICAgKi8KCiAgICAgICAgdiA9IHByaW1fd2lkdGggKiBieXRlc19wZXJfcGl4ZWw7CiAgICAg ICAgZm9yICgqcHJpbV9zdHJpZGUgPSA1MTI7ICpwcmltX3N0cmlkZSA8IHY7ICpwcmltX3N0cmlk ZSAqPSAyKQogICAgICAgICAgICA7CgogICAgICAgIHYgPSAqcHJpbV9zdHJpZGUgKiBwcmltX2hl aWdodDsKICAgICAgICBmb3IgKCpwcmltX3NpemUgPSAxMDI0KjEwMjQ7ICpwcmltX3NpemUgPCB2 OyAqcHJpbV9zaXplICo9IDIpCiAgICAgICAgICAgIDsKICAgIH0gZWxzZSB7CiAgICAgICAgLyog U2Nhbi1vdXQgaGFzIGEgNjQgYnl0ZSBhbGlnbm1lbnQgcmVzdHJpY3Rpb24gKi8KICAgICAgICAq cHJpbV9zdHJpZGUgPSAocHJpbV93aWR0aCAqIGJ5dGVzX3Blcl9waXhlbCArIDYzKSAmIH42MzsK ICAgICAgICAqcHJpbV9zaXplID0gKnByaW1fc3RyaWRlICogcHJpbV9oZWlnaHQ7CiAgICB9Cgog ICAgKnByaW1faGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgKnByaW1fc2l6ZSk7CgogICAgaWYgKHRp bGVkKSB7CiAgICAgICAgc2V0X3RpbGluZy5oYW5kbGUgPSAqcHJpbV9oYW5kbGU7CiAgICAgICAg c2V0X3RpbGluZy50aWxpbmdfbW9kZSA9IEk5MTVfVElMSU5HX1g7CiAgICAgICAgc2V0X3RpbGlu Zy5zdHJpZGUgPSAqcHJpbV9zdHJpZGU7CiAgICAgICAgaWYgKGlvY3RsKGZkLCBEUk1fSU9DVExf STkxNV9HRU1fU0VUX1RJTElORywgJnNldF90aWxpbmcpKSB7CiAgICAgICAgICAgIHByaW50Zigi U2V0IHRpbGluZyBmYWlsZWQ6ICVzIChzdHJpZGU9JWQsIHNpemU9JWQpXG4iLAogICAgICAgICAg ICAgICAgICAgIHN0cmVycm9yKGVycm5vKSwgKnByaW1fc3RyaWRlLCAqcHJpbV9zaXplKTsKICAg ICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgIH0KCiAgICBwcmltX2ZiX3B0ciA9IGdl bV9tbWFwKGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAqcHJpbV9oYW5kbGUsICpwcmlt X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp OwoKICAgIGlmIChwcmltX2ZiX3B0ciAhPSBOVUxMKSB7CiAgICAgICAgLy8gV3JpdGUgcHJpbWFy eSBzdXJmYWNlIHdpdGggZ3JheSBiYWNrZ3JvdW5kCiAgICAgICAgbWVtc2V0KHByaW1fZmJfcHRy LCAweDNmLCAqcHJpbV9zaXplKTsKICAgICAgICBtdW5tYXAocHJpbV9mYl9wdHIsICpwcmltX3Np emUpOwogICAgfQoKICAgIHJldHVybiAwOwp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8v IGZpbGxfc3ByaXRlCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIHZvaWQgZmlsbF9z cHJpdGUoCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfd2lk dGgsCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfaGVpZ2h0 LAogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3N0cmlkZSwK ICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV9pbmRleCwKICAg ICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzcHJpdGVfZmJfcHRyKQp7CiAg ICBfX3UzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGluZVBhdDAsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpwTGluZVBhdDEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpwTGluZVB0cjsKICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTsKICAgIGlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlX3dpZHRoOwoKICAgIHN0cmlwZV93 aWR0aCA9ICgoc3ByaXRlX3dpZHRoID4gNjQpICYmCiAgICAgICAgICAgICAgICAgICAgKHNwcml0 ZV9oZWlnaHQgPiA2NCkpID8gKHNwcml0ZV9pbmRleCArIDEpICogOCA6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcml0ZV9pbmRleCArIDEpICogMjsKCiAg ICAvLyBOb3RlOiAgc3ByaXRlX3N0cmlkZSBpcyBpbiBieXRlcy4gIHBMaW5lUGF0MCBhbmQgcExp bmVQYXQxCiAgICAvLyAgICAgICAgYXJlIGJvdGggX191MzIgcG9pbnRlcnMKICAgIHBMaW5lUGF0 MCA9IHNwcml0ZV9mYl9wdHI7CiAgICBwTGluZVBhdDEgPSBwTGluZVBhdDAgKyAoc3RyaXBlX3dp ZHRoICogKHNwcml0ZV9zdHJpZGUgLyBzaXplb2YoKnBMaW5lUGF0MCkpKTsKCiAgICBmb3IgKGkg PSAwOyBpIDwgc3ByaXRlX3dpZHRoOyBpKyspIHsKICAgICAgICAqKHBMaW5lUGF0MCArIGkpID0g KChpIC8gc3RyaXBlX3dpZHRoKSAmIDB4MSkgPyAwIDogfjA7CiAgICAgICAgKihwTGluZVBhdDEg KyBpKSA9IH4oKihwTGluZVBhdDAgKyBpKSk7CiAgICB9CgogICAgZm9yIChsaW5lID0gMTsgbGlu ZSA8IHNwcml0ZV9oZWlnaHQ7IGxpbmUrKykgewogICAgICAgIGlmIChsaW5lID09IHN0cmlwZV93 aWR0aCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHBMaW5lUHRy ID0gKChsaW5lIC8gc3RyaXBlX3dpZHRoKSAmIDB4MSkgPyBwTGluZVBhdDEgOiBwTGluZVBhdDA7 CiAgICAgICAgbWVtY3B5KCBwTGluZVBhdDAgKyAoKHNwcml0ZV9zdHJpZGUgLyBzaXplb2YoKnBM aW5lUGF0MCkpICogbGluZSksCiAgICAgICAgICAgICAgICBwTGluZVB0ciwKICAgICAgICAgICAg ICAgIHNwcml0ZV93aWR0aCAqIHNpemVvZigqcExpbmVQYXQwKSk7CiAgICB9CgogICAgcmV0dXJu Owp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIHByZXBhcmVfc3ByaXRlX3N1cmZhY2Vz Ci8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKc3RhdGljIGludCBwcmVwYXJlX3Nwcml0ZV9zdXJm YWNlcygKICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZmQsCiAgICAgICAgICAg IGludCAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV93aWR0aCwKICAgICAgICAgICAgaW50ICAg ICAgICAgICAgICAgICAgICAgc3ByaXRlX2hlaWdodCwKICAgICAgICAgICAgdWludDMyX3QgICAg ICAgICAgICAgICAgbnVtX3N1cmZhY2VzLAogICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAg ICAgICAqc3ByaXRlX2hhbmRsZXMsCiAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAg ICpzcHJpdGVfc3RyaWRlLAogICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAqc3By aXRlX3NpemUsCiAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHRpbGVkKQp7CiAg ICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3Blcl9waXhlbCA9IHNpemVv Zih1aW50MzJfdCk7CiAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICpzcHJpdGVf ZmJfcHRyOwogICAgc3RydWN0IGRybV9pOTE1X2dlbV9zZXRfdGlsaW5nICBzZXRfdGlsaW5nOwog ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOwoKICAgIGlmIChieXRlc19wZXJf cGl4ZWwgIT0gc2l6ZW9mKHVpbnQzMl90KSkgewogICAgICAgIHByaW50ZigiQmFkIGJ5dGVzX3Bl cl9waXhlbCBmb3Igc3ByaXRlOiAlZFxuIiwgYnl0ZXNfcGVyX3BpeGVsKTsKICAgICAgICByZXR1 cm4gLUVJTlZBTDsKICAgIH0KCiAgICBpZiAodGlsZWQpIHsKICAgICAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgdjsKCiAgICAgICAgLyogUm91bmQgdGhlIHRpbGluZyB1cCB0byB0aGUg bmV4dCBwb3dlci1vZi10d28gYW5kIHRoZQogICAgICAgICAqIHJlZ2lvbiB1cCB0byB0aGUgbmV4 dCBwb3QgZmVuY2Ugc2l6ZSBzbyB0aGF0IHRoaXMgd29ya3MKICAgICAgICAgKiBvbiBhbGwgZ2Vu ZXJhdGlvbnMuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIGNhbiBzdGlsbCBmYWlsIGlmIHRo ZSBmcmFtZWJ1ZmZlciBpcyB0b28gbGFyZ2UgdG8KICAgICAgICAgKiBiZSB0aWxlZC4gQnV0IHRo ZW4gdGhhdCBmYWlsdXJlIGlzIGV4cGVjdGVkLgogICAgICAgICAqLwoKICAgICAgICB2ID0gc3By aXRlX3dpZHRoICogYnl0ZXNfcGVyX3BpeGVsOwogICAgICAgIGZvciAoKnNwcml0ZV9zdHJpZGUg PSA1MTI7ICpzcHJpdGVfc3RyaWRlIDwgdjsgKnNwcml0ZV9zdHJpZGUgKj0gMikKICAgICAgICAg ICAgOwoKICAgICAgICB2ID0gKnNwcml0ZV9zdHJpZGUgKiBzcHJpdGVfaGVpZ2h0OwogICAgICAg IGZvciAoKnNwcml0ZV9zaXplID0gMTAyNCoxMDI0OyAqc3ByaXRlX3NpemUgPCB2OyAqc3ByaXRl X3NpemUgKj0gMikKICAgICAgICAgICAgOwogICAgfSBlbHNlIHsKICAgICAgICAvKiBTY2FuLW91 dCBoYXMgYSA2NCBieXRlIGFsaWdubWVudCByZXN0cmljdGlvbiAqLwogICAgICAgICpzcHJpdGVf c3RyaWRlID0gKHNwcml0ZV93aWR0aCAqIGJ5dGVzX3Blcl9waXhlbCArIDYzKSAmIH42MzsKICAg ICAgICAqc3ByaXRlX3NpemUgPSAqc3ByaXRlX3N0cmlkZSAqIHNwcml0ZV9oZWlnaHQ7CiAgICB9 CgogICAgZm9yIChpID0gMDsgaSA8IG51bV9zdXJmYWNlczsgIGkrKykgewogICAgICAgIC8vIENy ZWF0ZSB0aGUgc3ByaXRlIHN1cmZhY2UKICAgICAgICBzcHJpdGVfaGFuZGxlc1tpXSA9IGdlbV9j cmVhdGUoZmQsICpzcHJpdGVfc2l6ZSk7CgogICAgICAgIGlmICh0aWxlZCkgewogICAgICAgICAg ICBzZXRfdGlsaW5nLmhhbmRsZSA9IHNwcml0ZV9oYW5kbGVzW2ldOwogICAgICAgICAgICBzZXRf dGlsaW5nLnRpbGluZ19tb2RlID0gSTkxNV9USUxJTkdfWDsKICAgICAgICAgICAgc2V0X3RpbGlu Zy5zdHJpZGUgPSAqc3ByaXRlX3N0cmlkZTsKICAgICAgICAgICAgaWYgKGlvY3RsKGZkLCBEUk1f SU9DVExfSTkxNV9HRU1fU0VUX1RJTElORywgJnNldF90aWxpbmcpKSB7CiAgICAgICAgICAgICAg ICBwcmludGYoIlNldCB0aWxpbmcgZmFpbGVkOiAlcyAoc3RyaWRlPSVkLCBzaXplPSVkKVxuIiwK ICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubyksICpzcHJpdGVfc3RyaWRlLCAq c3ByaXRlX3NpemUpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICB9CiAg ICAgICAgfQoKICAgICAgICAvLyBHZXQgcG9pbnRlciB0byB0aGUgc3VyZmFjZQogICAgICAgIHNw cml0ZV9mYl9wdHIgPSBnZW1fbW1hcChmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3ByaXRlX2hhbmRsZXNbaV0sICpzcHJpdGVfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CgogICAgICAgIGlmIChzcHJpdGVf ZmJfcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgLy8gRmlsbCB3aXRoIGNoZWNrZXJib2FyZCBw YXR0ZXJuCiAgICAgICAgICAgIGZpbGxfc3ByaXRlKAogICAgICAgICAgICAgICAgICAgIHNwcml0 ZV93aWR0aCwKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfaGVpZ2h0LAogICAgICAgICAgICAg ICAgICAgICpzcHJpdGVfc3RyaWRlLAogICAgICAgICAgICAgICAgICAgIGksIHNwcml0ZV9mYl9w dHIpOwoKICAgICAgICAgICAgbXVubWFwKHNwcml0ZV9mYl9wdHIsICpzcHJpdGVfc2l6ZSk7CiAg ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaS0tOwogICAgICAgICAgICB3aGlsZSAoaSA+PSAw KSB7CiAgICAgICAgICAgICAgICBnZW1fY2xvc2UoZmQsIHNwcml0ZV9oYW5kbGVzW2ldKTsKICAg ICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1 cm4gMDsKfQoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyByaWNvY2hldAovLwovLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCnN0YXRpYyB2b2lkIHJpY29jaGV0KAogICAgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGlsZWQsCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzcHJpdGVfdywKICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNwcml0ZV9oLAogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0 X3csCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfaCwKICAgICAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaW5mbykKewogICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0OwogICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2Z4X2ZkOwogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAga2VlcF9tb3Zpbmc7CiAgICBjb25zdCBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICBudW1fc3VyZmFjZXMgPSAzOwogICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3ByaXRlX2hhbmRsZXNbbnVtX3N1cmZhY2VzXTsKICAgIHVpbnQzMl90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNwcml0ZV9mYl9pZFtudW1fc3VyZmFjZXNdOwogICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3g7CiAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfeTsKICAgIHVpbnQzMl90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNwcml0ZV9zdHJpZGU7CiAgICB1aW50MzJfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzcHJpdGVfc2l6ZTsKICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhhbmRsZXNbNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwaXRjaGVzWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0c1s0XTsgLyogd2Ugb25seSB1c2UgWzBdICovCiAgICB1aW50MzJfdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmltX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJpbV9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmltX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaW1fc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpbV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbV9m Yl9pZDsKICAgIHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICAgIHNldDsKICAgIHN0 cnVjdCBjb25uZWN0b3IgICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yOwogICAgZHJt TW9kZVJlcyAgICAgICAgICAgICAgICAgICAgICAgICAgKmdmeF9yZXNvdXJjZXM7CiAgICBzdHJ1 Y3QgdGVybWlvcyAgICAgICAgICAgICAgICAgICAgICBvcmlnX3Rlcm0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3Rlcm07CiAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjX2luZGV4OwogICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3ByaXRlX2luZGV4OwogICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgc3ByaXRlX3BsYW5lX2lkOwogICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGxhbmVfZmxhZ3MgPSAwOwogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVsdGFfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlbHRhX3k7CiAgICBzdHJ1Y3QgdGltZXZhbCAgICAgICAgICAgICAgICAgICAgICBzdFRpbWVW YWw7CiAgICBsb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVGltZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZGbGlwVGltZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb3ZlVGltZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhRmxpcFRpbWUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YU1vdmVUaW1lLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xlZXBUaW1lOwogICAgY2hhciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2V5OwoKICAgIC8vIE9wZW4gdXAgSTkxNSBncmFwaGljcyBk ZXZpY2UKICAgIGdmeF9mZCA9IGRybU9wZW4oImk5MTUiLCBOVUxMKTsKICAgIGlmIChnZnhfZmQg PCAwKSB7CiAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gbG9hZCBpOTE1IGRyaXZlcjogJXNcbiIs IHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIE9idGFpbiBw b2ludGVyIHRvIHN0cnVjdCBjb250YWluaW5nIGdyYXBoaWNzIHJlc291cmNlcwogICAgZ2Z4X3Jl c291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZ2Z4X2ZkKTsKICAgIGlmICghZ2Z4X3Jlc291 cmNlcykgewogICAgICAgIHByaW50ZigiZHJtTW9kZUdldFJlc291cmNlcyBmYWlsZWQ6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoZHVtcF9p bmZvICE9IDApIHsKICAgICAgICBkdW1wX2Nvbm5lY3RvcnMoZ2Z4X2ZkLCBnZnhfcmVzb3VyY2Vz KTsKICAgICAgICBkdW1wX2NydGNzKGdmeF9mZCwgZ2Z4X3Jlc291cmNlcyk7CiAgICAgICAgZHVt cF9wbGFuZXMoZ2Z4X2ZkLCBnZnhfcmVzb3VyY2VzKTsKICAgIH0KCiAgICAvLyBTYXZlIHByZXZp b3VzIHRlcm1pbmFsIHNldHRpbmdzCiAgICBpZiAodGNnZXRhdHRyKCAwLCAmb3JpZ190ZXJtKSAh PSAwKSB7CiAgICAgICAgcHJpbnRmKCJ0Y2dldGF0dHIgZmFpbHVyZTogJXNcbiIsCiAgICAgICAg ICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFNl dCB1cCBpbnB1dCB0byByZXR1cm4gY2hhcmFjdGVycyBpbW1lZGlhdGVseQogICAgY3Vycl90ZXJt ID0gb3JpZ190ZXJtOwogICAgY3Vycl90ZXJtLmNfbGZsYWcgJj0gfihJQ0FOT04gfCBFQ0hPIHwg RUNIT05MKTsKICAgIGN1cnJfdGVybS5jX2NjW1ZNSU5dID0gMDsgICAgICAgLy8gTm8gbWluaW11 bSBudW1iZXIgb2YgY2hhcmFjdGVycwogICAgY3Vycl90ZXJtLmNfY2NbVlRJTUVdID0gMCA7ICAg ICAvLyBSZXR1cm4gaW1tZWRpYXRlbHksIGV2ZW4gaWYKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gbm90aGluZyBoYXMgYmVlbiBlbnRlcmVkLgogICAgaWYgKHRjc2V0YXR0 ciggMCwgVENTQU5PVywgJmN1cnJfdGVybSkgIT0gMCkgewogICAgICAgIHByaW50ZigidGNnZXRh dHRyIGZhaWx1cmU6ICVzXG4iLAogICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwogICAg ICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBDeWNsZSB0aHJvdWdoIGFsbCBjb25uZWN0b3JzIGFu ZCBkaXNwbGF5IHRoZSBmbHlpbmcgc3ByaXRlCiAgICAvLyB3aGVyZSB0aGVyZSBhcmUgZGlzcGxh eXMgYXR0YWNoZWQgYW5kIHRoZSBoYXJkd2FyZSB3aWxsIHN1cHBvcnQgaXQuCiAgICBmb3IgKGNf aW5kZXggPSAwOyBjX2luZGV4IDwgZ2Z4X3Jlc291cmNlcy0+Y291bnRfY29ubmVjdG9yczsgY19p bmRleCsrKSAgewogICAgICAgIGN1cnJfY29ubmVjdG9yLmlkID0gZ2Z4X3Jlc291cmNlcy0+Y29u bmVjdG9yc1tjX2luZGV4XTsKCiAgICAgICAgLy8gRmluZCB0aGUgbmF0aXZlIChwcmVmZXJyZWQp IGRpc3BsYXkgbW9kZQogICAgICAgIGNvbm5lY3Rvcl9maW5kX3ByZWZlcnJlZF9tb2RlKGdmeF9m ZCwgZ2Z4X3Jlc291cmNlcywgJmN1cnJfY29ubmVjdG9yKTsKICAgICAgICBpZiAoY3Vycl9jb25u ZWN0b3IubW9kZV92YWxpZCA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiTm8gdmFsaWQgcHJl ZmVycmVkIG1vZGUgZGV0ZWN0ZWRcbiIpOwogICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICB9 CgogICAgICAgIC8vIERldGVybWluZSBpZiBzcHJpdGUgaGFyZHdhcmUgaXMgYXZhaWxhYmxlIG9u IHBpcGUKICAgICAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb25uZWN0b3IuCiAgICAgICAg c3ByaXRlX3BsYW5lX2lkID0gY29ubmVjdG9yX2ZpbmRfcGxhbmUoZ2Z4X2ZkLCAmY3Vycl9jb25u ZWN0b3IpOwogICAgICAgIGlmICghc3ByaXRlX3BsYW5lX2lkKSB7CiAgICAgICAgICAgIHByaW50 ZigiRmFpbGVkIHRvIGZpbmQgc3ByaXRlIHBsYW5lIG9uIGNydGNcbiIpOwogICAgICAgICAgICBn b3RvIG91dDsKICAgICAgICB9CgogICAgICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgb2YgcHJlZmVy cmVkIG1vZGUKICAgICAgICBwcmltX3dpZHRoID0gY3Vycl9jb25uZWN0b3IubW9kZS5oZGlzcGxh eTsKICAgICAgICBwcmltX2hlaWdodCA9IGN1cnJfY29ubmVjdG9yLm1vZGUudmRpc3BsYXk7Cgog ICAgICAgIC8vIEFsbG9jYXRlIGFuZCBmaWxsIG1lbW9yeSBmb3IgcHJpbWFyeSBzdXJmYWNlCiAg ICAgICAgcmV0ID0gcHJlcGFyZV9wcmltYXJ5X3N1cmZhY2UoCiAgICAgICAgICAgICAgICAgICAg ICBnZnhfZmQsCiAgICAgICAgICAgICAgICAgICAgICBwcmltX3dpZHRoLAogICAgICAgICAgICAg ICAgICAgICAgcHJpbV9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAmcHJpbV9oYW5kbGUs CiAgICAgICAgICAgICAgICAgICAgICAmcHJpbV9zdHJpZGUsCiAgICAgICAgICAgICAgICAgICAg ICAmcHJpbV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgdGlsZWQpOwogICAgICAgIGlmIChy ZXQgIT0gMCkgewogICAgICAgICAgICBwcmludGYoIkZhaWxlZCB0byBhZGQgcHJpbWFyeSBmYiAo JWR4JWQpOiAlc1xuIiwKICAgICAgICAgICAgICAgIHByaW1fd2lkdGgsIHByaW1faGVpZ2h0LCBz dHJlcnJvcihlcnJubykpOwogICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICB9CgogICAgICAg IC8vIEFkZCB0aGUgcHJpbWFyeSBzdXJmYWNlIGZyYW1lYnVmZmVyCiAgICAgICAgcmV0ID0gZHJt TW9kZUFkZEZCKAogICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkLAogICAgICAgICAgICAgICAg ICAgICAgcHJpbV93aWR0aCwKICAgICAgICAgICAgICAgICAgICAgIHByaW1faGVpZ2h0LAogICAg ICAgICAgICAgICAgICAgICAgMjQsIDMyLAogICAgICAgICAgICAgICAgICAgICAgcHJpbV9zdHJp ZGUsCiAgICAgICAgICAgICAgICAgICAgICBwcmltX2hhbmRsZSwKICAgICAgICAgICAgICAgICAg ICAgICZwcmltX2ZiX2lkKTsKICAgICAgICBnZW1fY2xvc2UoZ2Z4X2ZkLCBwcmltX2hhbmRsZSk7 CgogICAgICAgIGlmIChyZXQgIT0gMCkgewogICAgICAgICAgICBwcmludGYoIkZhaWxlZCB0byBh ZGQgcHJpbWFyeSBmYiAoJWR4JWQpOiAlc1xuIiwKICAgICAgICAgICAgICAgIHByaW1fd2lkdGgs IHByaW1faGVpZ2h0LCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICBnb3RvIG91dDsKICAg ICAgICB9CgogICAgICAgIC8vIEFsbG9jYXRlIGFuZCBmaWxsIHNwcml0ZSBzdXJmYWNlcwogICAg ICAgIHJldCA9IHByZXBhcmVfc3ByaXRlX3N1cmZhY2VzKAogICAgICAgICAgICAgICAgICAgICAg Z2Z4X2ZkLAogICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3csCiAgICAgICAgICAgICAgICAg ICAgICBzcHJpdGVfaCwKICAgICAgICAgICAgICAgICAgICAgIG51bV9zdXJmYWNlcywKICAgICAg ICAgICAgICAgICAgICAgICZzcHJpdGVfaGFuZGxlc1swXSwKICAgICAgICAgICAgICAgICAgICAg ICZzcHJpdGVfc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgJnNwcml0ZV9zaXplLAogICAg ICAgICAgICAgICAgICAgICAgdGlsZWQpOwogICAgICAgIGlmIChyZXQgIT0gMCkgewogICAgICAg ICAgICBwcmludGYoIlByZXBhcmF0aW9uIG9mIHNwcml0ZSBzdXJmYWNlcyBmYWlsZWQgJWR4JWRc biIsCiAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3csIHNwcml0ZV9oKTsKICAgICAgICAgICAg Z290byBvdXQ7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgdGhlIHNwcml0ZSBmcmFtZWJ1ZmZl cnMKICAgICAgICBmb3IgKHNwcml0ZV9pbmRleCA9IDA7IHNwcml0ZV9pbmRleCA8IG51bV9zdXJm YWNlczsgc3ByaXRlX2luZGV4KyspIHsKICAgICAgICAgICAgaGFuZGxlc1swXSA9IHNwcml0ZV9o YW5kbGVzW3Nwcml0ZV9pbmRleF07CiAgICAgICAgICAgIGhhbmRsZXNbMV0gPSBoYW5kbGVzWzBd OwogICAgICAgICAgICBoYW5kbGVzWzJdID0gaGFuZGxlc1swXTsKICAgICAgICAgICAgaGFuZGxl c1szXSA9IGhhbmRsZXNbMF07CiAgICAgICAgICAgIHBpdGNoZXNbMF0gPSBzcHJpdGVfc3RyaWRl OwogICAgICAgICAgICBwaXRjaGVzWzFdID0gc3ByaXRlX3N0cmlkZTsKICAgICAgICAgICAgcGl0 Y2hlc1syXSA9IHNwcml0ZV9zdHJpZGU7CiAgICAgICAgICAgIHBpdGNoZXNbM10gPSBzcHJpdGVf c3RyaWRlOwogICAgICAgICAgICBtZW1zZXQob2Zmc2V0cywgMCwgc2l6ZW9mKG9mZnNldHMpKTsK CiAgICAgICAgICAgIHJldCA9IGRybU1vZGVBZGRGQjIoCiAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2Z4X2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV93LCBzcHJpdGVfaCwg RFJNX0ZPUk1BVF9YUkdCODg4OCwKICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVzLCBw aXRjaGVzLCBvZmZzZXRzLCAmc3ByaXRlX2ZiX2lkW3Nwcml0ZV9pbmRleF0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgcGxhbmVfZmxhZ3MpOwogICAgICAgICAgICBnZW1fY2xvc2UoZ2Z4X2Zk LCBzcHJpdGVfaGFuZGxlc1tzcHJpdGVfaW5kZXhdKTsKCiAgICAgICAgICAgIGlmIChyZXQpIHsK ICAgICAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGFkZCBzcHJpdGUgZmIgKCVkeCVkKTog JXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3csIHNwcml0ZV9oLCBzdHJlcnJv cihlcnJubykpOwoKICAgICAgICAgICAgICAgIHNwcml0ZV9pbmRleC0tOwogICAgICAgICAgICAg ICAgd2hpbGUgKHNwcml0ZV9pbmRleCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZHJtTW9k ZVJtRkIoZ2Z4X2ZkLCBzcHJpdGVfZmJfaWRbc3ByaXRlX2luZGV4XSk7CiAgICAgICAgICAgICAg ICAgICAgc3ByaXRlX2luZGV4LS07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBn b3RvIG91dDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGR1bXBfaW5mbyAh PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiRGlzcGxheWVkIE1vZGUgQ29ubmVjdG9yIHN0cnVj dDpcbiIKICAgICAgICAgICAgICAgICAgICIgICAgLmlkID0gJWRcbiIKICAgICAgICAgICAgICAg ICAgICIgICAgLm1vZGVfdmFsaWQgPSAlZFxuIgogICAgICAgICAgICAgICAgICAgIiAgICAuY3J0 YyA9ICVkXG4iCiAgICAgICAgICAgICAgICAgICAiICAgIC5waXBlID0gJWRcbiIKICAgICAgICAg ICAgICAgICAgICIgICAgZHJtTW9kZU1vZGVJbmZvIC4uLlxuIgogICAgICAgICAgICAgICAgICAg IiAgICAgICAgLm5hbWUgPSAlc1xuIgogICAgICAgICAgICAgICAgICAgIiAgICAgICAgLnR5cGUg PSAlZFxuIgogICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmZsYWdzID0gJTA4eFxuIgogICAg ICAgICAgICAgICAgICAgIiAgICBkcm1Nb2RlRW5jb2RlciAuLi5cbiIKICAgICAgICAgICAgICAg ICAgICIgICAgICAgIC5lbmNvZGVyX2lkID0gJWRcbiIKICAgICAgICAgICAgICAgICAgICIgICAg ICAgIC5lbmNvZGVyX3R5cGUgPSAlZCAoJXMpXG4iCiAgICAgICAgICAgICAgICAgICAiICAgICAg ICAuY3J0Y19pZCA9ICVkXG4iCiAgICAgICAgICAgICAgICAgICAiICAgICAgICAucG9zc2libGVf Y3J0Y3MgPSAlZFxuIgogICAgICAgICAgICAgICAgICAgIiAgICAgICAgLnBvc3NpYmxlX2Nsb25l cyA9ICVkXG4iCiAgICAgICAgICAgICAgICAgICAiICAgIGRybU1vZGVDb25uZWN0b3IgLi4uXG4i CiAgICAgICAgICAgICAgICAgICAiICAgICAgICAuY29ubmVjdG9yX2lkID0gJWRcbiIKICAgICAg ICAgICAgICAgICAgICIgICAgICAgIC5lbmNvZGVyX2lkID0gJWRcbiIKICAgICAgICAgICAgICAg ICAgICIgICAgICAgIC5jb25uZWN0b3JfdHlwZSA9ICVkICglcylcbiIKICAgICAgICAgICAgICAg ICAgICIgICAgICAgIC5jb25uZWN0b3JfdHlwZV9pZCA9ICVkXG5cbiIsCiAgICAgICAgICAgICAg ICAgICBjdXJyX2Nvbm5lY3Rvci5pZCwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9y Lm1vZGVfdmFsaWQsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jcnRjLAogICAg ICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IucGlwZSwKICAgICAgICAgICAgICAgICAgIGN1 cnJfY29ubmVjdG9yLm1vZGUubmFtZSwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9y Lm1vZGUudHlwZSwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLm1vZGUuZmxhZ3Ms CiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5lbmNvZGVyX2lkLAog ICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rlci0+ZW5jb2Rlcl90eXBlLAog ICAgICAgICAgICAgICAgICAgZW5jb2Rlcl90eXBlX3N0cihjdXJyX2Nvbm5lY3Rvci5lbmNvZGVy LT5lbmNvZGVyX3R5cGUpLAogICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rl ci0+Y3J0Y19pZCwKICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmVuY29kZXItPnBv c3NpYmxlX2NydGNzLAogICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rlci0+ cG9zc2libGVfY2xvbmVzLAogICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuY29ubmVj dG9yLT5jb25uZWN0b3JfaWQsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jb25u ZWN0b3ItPmVuY29kZXJfaWQsCiAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlLAogICAgICAgICAgICAgICAgICAgY29ubmVjdG9yX3R5cGVf c3RyKGN1cnJfY29ubmVjdG9yLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUpLAogICAgICAgICAg ICAgICAgICAgY3Vycl9jb25uZWN0b3IuY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZV9pZCk7Cgog ICAgICAgICAgICBwcmludGYoIlNwcml0ZSBzdXJmYWNlIGRpbWVuc2lvbnMgPSAlZHglZFxuIgog ICAgICAgICAgICAgICAgICAgIlNwcml0ZSBvdXRwdXQgZGltZW5zaW9ucyA9ICVkeCVkXG4iCiAg ICAgICAgICAgICAgICAgICAgIlByZXNzIGFueSBrZXkgdG8gY29udGludWUgPlxuIiwKICAgICAg ICAgICAgICAgICAgICBzcHJpdGVfdywKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfaCwKICAg ICAgICAgICAgICAgICAgICBvdXRfdywKICAgICAgICAgICAgICAgICAgICBvdXRfaCk7CgogICAg ICAgICAgICAvLyBXYWl0IGZvciBhIGtleS1wcmVzcwogICAgICAgICAgICB3aGlsZSggcmVhZCgw LCAma2V5LCAxKSA9PSAwKTsKICAgICAgICAgICAgLy8gUHVyZ2UgdW5yZWFkIGNoYXJhY3RlcnMK ICAgICAgICAgICAgdGNmbHVzaCgwLCBUQ0lGTFVTSCk7CiAgICAgICAgfQoKICAgICAgICAvLyBT ZXQgdXAgdGhlIHByaW1hcnkgZGlzcGxheSBtb2RlCiAgICAgICAgcmV0ID0gZHJtTW9kZVNldENy dGMoCiAgICAgICAgICAgICAgICAgICAgICBnZnhfZmQsCiAgICAgICAgICAgICAgICAgICAgICBj dXJyX2Nvbm5lY3Rvci5jcnRjLAogICAgICAgICAgICAgICAgICAgICAgcHJpbV9mYl9pZCwKICAg ICAgICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAmY3Vycl9jb25u ZWN0b3IuaWQsCiAgICAgICAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgICAgICAg JmN1cnJfY29ubmVjdG9yLm1vZGUpOwogICAgICAgIGlmIChyZXQgIT0gMCkKICAgICAgICB7CiAg ICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIHNldCBtb2RlICglZHglZEAlZEh6KTogJXNcbiIs CiAgICAgICAgICAgICAgICBwcmltX3dpZHRoLCBwcmltX2hlaWdodCwgY3Vycl9jb25uZWN0b3Iu bW9kZS52cmVmcmVzaCwKICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAg ICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gU2V0IHRoZSBzcHJpdGUgY29sb3Jr ZXkgc3RhdGUKICAgICAgICBzZXQucGxhbmVfaWQgPSBzcHJpdGVfcGxhbmVfaWQ7CiAgICAgICAg c2V0Lm1pbl92YWx1ZSA9IDA7CiAgICAgICAgc2V0Lm1heF92YWx1ZSA9IDA7CiAgICAgICAgc2V0 LmZsYWdzID0gSTkxNV9TRVRfQ09MT1JLRVlfTk9ORTsKICAgICAgICByZXQgPSBkcm1Db21tYW5k V3JpdGUoZ2Z4X2ZkLCBEUk1fSTkxNV9TRVRfU1BSSVRFX0NPTE9SS0VZLCAmc2V0LAogICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHNldCkpOwoKICAgICAgICAvLyBTZXQgdXAgc3ByaXRlIG91 dHB1dCBkaW1lbnNpb25zLCBpbml0aWFsIHBvc2l0aW9uLCBldGMuCiAgICAgICAgaWYgKG91dF93 ID4gcHJpbV93aWR0aCAvIDIpCiAgICAgICAgICAgIG91dF93ID0gcHJpbV93aWR0aCAvIDI7CiAg ICAgICAgaWYgKG91dF9oID4gcHJpbV9oZWlnaHQgLyAyKQogICAgICAgICAgICBvdXRfaCA9IHBy aW1faGVpZ2h0IC8gMjsKCiAgICAgICAgZGVsdGFfeCA9IDM7CiAgICAgICAgZGVsdGFfeSA9IDQ7 CiAgICAgICAgc3ByaXRlX3ggPSAocHJpbV93aWR0aCAvIDIpIC0gKG91dF93IC8gMik7CiAgICAg ICAgc3ByaXRlX3kgPSAocHJpbV9oZWlnaHQgLyAyKSAtIChvdXRfaCAvIDIpOwoKICAgICAgICBj dXJyVGltZSA9IDA7CiAgICAgICAgcHJldkZsaXBUaW1lID0gMDsgICAgICAgLy8gV2lsbCBmb3Jj ZSBpbW1lZGlhdGUgc3ByaXRlIGZsaXAKICAgICAgICBwcmV2TW92ZVRpbWUgPSAwOyAgICAgICAv LyBXaWxsIGZvcmNlIGltbWVkaWF0ZSBzcHJpdGUgbW92ZQogICAgICAgIGRlbHRhRmxpcFRpbWUg PSA1MDAwMDA7IC8vIEZsaXAgc3ByaXRlIHN1cmZhY2UgZXZlcnkgMS8yIHNlY29uZAogICAgICAg IGRlbHRhTW92ZVRpbWUgPSAxMDAwMDA7IC8vIE1vdmUgc3ByaXRlIGV2ZXJ5IDEwMCBtcwogICAg ICAgIHNwcml0ZV9pbmRleCA9IG51bV9zdXJmYWNlcyAtIDE7CiAgICAgICAga2VlcF9tb3Zpbmcg PSAxOwoKICAgICAgICAvLyBCb3VuY2Ugc3ByaXRlIG9mZiB0aGUgd2FsbHMKICAgICAgICB3aGls ZSAoa2VlcF9tb3ZpbmcpIHsKICAgICAgICAgICAgLy8gT2J0YWluIHN5c3RlbSB0aW1lIGluIHVz ZWMuCiAgICAgICAgICAgIGlmIChnZXR0aW1lb2ZkYXkoICZzdFRpbWVWYWwsIE5VTEwgKSAhPSAw KSB7CiAgICAgICAgICAgICAgICBwcmludGYoImdldHRpbWVvZmRheSBlcnJvcjogJXNcbiIsCiAg ICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgICAgIGN1cnJUaW1lID0gKChsb25nIGxvbmcpc3RUaW1lVmFsLnR2X3Nl YyAqIDEwMDAwMDApICsgc3RUaW1lVmFsLnR2X3VzZWM7CiAgICAgICAgICAgIH0KCiAgICAgICAg ICAgIC8vIENoZWNrIGlmIGl0J3MgdGltZSB0byBmbGlwIHRoZSBzcHJpdGUgc3VyZmFjZQogICAg ICAgICAgICBpZiAoY3VyclRpbWUgLSBwcmV2RmxpcFRpbWUgPiBkZWx0YUZsaXBUaW1lKSAgewog ICAgICAgICAgICAgICAgc3ByaXRlX2luZGV4ID0gKHNwcml0ZV9pbmRleCArIDEpICUgbnVtX3N1 cmZhY2VzOwoKICAgICAgICAgICAgICAgIHByZXZGbGlwVGltZSA9IGN1cnJUaW1lOwogICAgICAg ICAgICB9CgogICAgICAgICAgICAvLyBNb3ZlIHRoZSBzcHJpdGUgb24gdGhlIHNjcmVlbiBhbmQg ZmxpcAogICAgICAgICAgICAvLyB0aGUgc3VyZmFjZSBpZiB0aGUgaW5kZXggaGFzIGNoYW5nZWQK ICAgICAgICAgICAgaWYgKGRybU1vZGVTZXRQbGFuZSgKICAgICAgICAgICAgICAgICAgICAgICAg Z2Z4X2ZkLAogICAgICAgICAgICAgICAgICAgICAgICBzcHJpdGVfcGxhbmVfaWQsCiAgICAgICAg ICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNydGMsCiAgICAgICAgICAgICAgICAgICAg ICAgIHNwcml0ZV9mYl9pZFtzcHJpdGVfaW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICBw bGFuZV9mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3gsIHNwcml0ZV95LAog ICAgICAgICAgICAgICAgICAgICAgICBvdXRfdywgb3V0X2gsCiAgICAgICAgICAgICAgICAgICAg ICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwcml0ZV93LCBzcHJpdGVfaCkpIHsK ICAgICAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGVuYWJsZSBzcHJpdGUgcGxhbmU6ICVz XG4iLAogICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAg IH0KCiAgICAgICAgICAgIC8vIENoZWNrIGlmIGl0J3MgdGltZSB0byBtb3ZlIHRoZSBzcHJpdGUg c3VyZmFjZQogICAgICAgICAgICBpZiAoY3VyclRpbWUgLSBwcmV2TW92ZVRpbWUgPiBkZWx0YU1v dmVUaW1lKSAgewoKICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIG5leHQgcG9zaXRpb24g Zm9yIHNwcml0ZQogICAgICAgICAgICAgICAgc3ByaXRlX3ggKz0gZGVsdGFfeDsKICAgICAgICAg ICAgICAgIHNwcml0ZV95ICs9IGRlbHRhX3k7CiAgICAgICAgICAgICAgICBpZiAoc3ByaXRlX3gg PCAwKSB7CiAgICAgICAgICAgICAgICAgICAgc3ByaXRlX3ggPSAwOwogICAgICAgICAgICAgICAg ICAgIGRlbHRhX3ggPSAtZGVsdGFfeDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg IGVsc2UgaWYgKHNwcml0ZV94ID4gcHJpbV93aWR0aCAtIG91dF93KSB7CiAgICAgICAgICAgICAg ICAgICAgc3ByaXRlX3ggPSBwcmltX3dpZHRoIC0gb3V0X3c7CiAgICAgICAgICAgICAgICAgICAg ZGVsdGFfeCA9IC1kZWx0YV94OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlm IChzcHJpdGVfeSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBzcHJpdGVfeSA9IDA7CiAgICAg ICAgICAgICAgICAgICAgZGVsdGFfeSA9IC1kZWx0YV95OwogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgZWxzZSBpZiAoc3ByaXRlX3kgPiBwcmltX2hlaWdodCAtIG91dF9oKSB7CiAg ICAgICAgICAgICAgICAgICAgc3ByaXRlX3kgPSBwcmltX2hlaWdodCAtIG91dF9oOwogICAgICAg ICAgICAgICAgICAgIGRlbHRhX3kgPSAtZGVsdGFfeTsKICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICBwcmV2TW92ZVRpbWUgPSBjdXJyVGltZTsKICAgICAgICAgICAgfQoKICAgICAg ICAgICAgLy8gRmV0Y2ggYSBrZXkgZnJvbSBpbnB1dCAobm9uLWJsb2NraW5nKQogICAgICAgICAg ICBpZiAocmVhZCgwLCAma2V5LCAxKSA9PSAxKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGtl eSkgewogICAgICAgICAgICAgICAgY2FzZSAncSc6ICAgICAgIC8vIEtpbGwgdGhlIHByb2dyYW0K ICAgICAgICAgICAgICAgIGNhc2UgJ1EnOgogICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owog ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAncyc6ICAgICAg IC8vIFNsb3cgZG93biBzcHJpdGUgbW92ZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgIGRlbHRh TW92ZVRpbWUgPSAoZGVsdGFNb3ZlVGltZSAqIDEwMCkgLyA5MDsKICAgICAgICAgICAgICAgICAg IGlmIChkZWx0YU1vdmVUaW1lID4gODAwMDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRl bHRhTW92ZVRpbWUgPSA4MDAwMDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnUyc6ICAgICAgIC8vIFNwZWVkIHVw IHNwcml0ZSBtb3ZlbWVudDsKICAgICAgICAgICAgICAgICAgICBkZWx0YU1vdmVUaW1lID0gKGRl bHRhTW92ZVRpbWUgKiAxMDApIC8gMTEwOwogICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YU1v dmVUaW1lIDwgMjAwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWx0YU1vdmVUaW1lID0g MjAwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgICBjYXNlICdmJzogICAgICAgLy8gU2xvdyBkb3duIHNwcml0ZSBmbGlwcGlu ZzsKICAgICAgICAgICAgICAgICAgICBkZWx0YUZsaXBUaW1lID0gKGRlbHRhRmxpcFRpbWUgKiAx MDApIC8gOTA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhRmxpcFRpbWUgPiAxMDAwMDAw KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhRmxpcFRpbWUgPSAxMDAwMDAwOwogICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgIGNhc2UgJ0YnOiAgICAgICAvLyBTcGVlZCB1cCBzcHJpdGUgZmxpcHBpbmc7CiAgICAgICAg ICAgICAgICAgICAgZGVsdGFGbGlwVGltZSA9IChkZWx0YUZsaXBUaW1lICogMTAwKSAvIDExMDsK ICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGFGbGlwVGltZSA8IDIwMDAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGRlbHRhRmxpcFRpbWUgPSAyMDAwMDsKICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICduJzog ICAgICAgLy8gTmV4dCBjb25uZWN0b3IKICAgICAgICAgICAgICAgIGNhc2UgJ04nOgogICAgICAg ICAgICAgICAgICAgIGtlZXBfbW92aW5nID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gUHVyZ2UgdW5yZWFkIGNoYXJhY3RlcnMK ICAgICAgICAgICAgICAgIHRjZmx1c2goMCwgVENJRkxVU0gpOwogICAgICAgICAgICB9CgogICAg ICAgICAgICAvLyBXYWl0IGZvciBtaW4gb2YgZmxpcCBvciBtb3ZlIGRlbHRhcwogICAgICAgICAg ICBTbGVlcFRpbWUgPSAoZGVsdGFGbGlwVGltZSA8IGRlbHRhTW92ZVRpbWUpID8KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlbHRhRmxpcFRpbWUgOiBkZWx0YU1vdmVUaW1lOwogICAgICAg ICAgICB1c2xlZXAoU2xlZXBUaW1lKTsKICAgICAgICB9CiAgICB9CgpvdXQ6CiAgICAvLyBQdXJn ZSB1bnJlYWQgY2hhcmFjdGVycwogICAgdGNmbHVzaCgwLCBUQ0lGTFVTSCk7CiAgICAvLyBSZXN0 b3JlIHByZXZpb3VzIHRlcm1pbmFsIHNldHRpbmdzCiAgICBpZiAodGNzZXRhdHRyKCAwLCBUQ1NB Tk9XLCAmb3JpZ190ZXJtKSAhPSAwKSB7CiAgICAgICAgcHJpbnRmKCJ0Y2dldGF0dHIgZmFpbHVy ZTogJXNcbiIsCiAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgcmV0dXJu OwogICAgfQoKICAgIGRybU1vZGVGcmVlUmVzb3VyY2VzKGdmeF9yZXNvdXJjZXMpOwp9CgovLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi8vCi8vIHVzYWdlCi8vCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK c3RhdGljIHZvaWQgdXNhZ2UoY2hhciAqbmFtZSkKewoJcHJpbnRmKCJ1c2FnZTogJXMgLXMgPHBs YW5lIHdpZHRoPng8cGxhbmUgaGVpZ2h0PiBbLWRodG9dXG4iCiAgICAgICAgICAgIlx0LWRcdFtv cHRpb25hbF0gZHVtcCBtb2RlIGluZm9ybWF0aW9uXG4iCiAgICAgICAgICAgIlx0LWhcdFtvcHRp b25hbF0gb3V0cHV0IGhlbHAgbWVzc2FnZVxuIgoJICAgICAgICJcdC10XHRbb3B0aW9uYWxdIGVu YWJsZSB0aWxpbmdcbiIKICAgICAgICAgICAiXHQtb1x0W29wdGlvbmFsXSA8b3V0cHV0IHJlY3Qg d2lkdGg+eDxvdXRwdXQgcmVjdCBoZWlnaHQ+XG5cbiIKICAgICAgICAgICAiS2V5Ym9hcmQgY29u dHJvbCBmb3Igc3ByaXRlIG1vdmVtZW50IGFuZCBmbGlwIHJhdGUgLi4uXG4iCiAgICAgICAgICAg Ilx0J3EnIG9yICdRJyAtIFF1aXQgdGhlIHByb2dyYW1cbiIKICAgICAgICAgICAiXHQnbicgb3Ig J04nIC0gU3dpdGNoIHRvIG5leHQgZGlzcGxheVxuIgogICAgICAgICAgICJcdCdzJyAgICAgICAg LSBTbG93IHNwcml0ZSBtb3ZlbWVudFxuIgogICAgICAgICAgICJcdCdTJyAgICAgICAgLSBTcGVl ZCB1cCBzcHJpdGUgbW92ZW1lbnRcbiIKICAgICAgICAgICAiXHQnZicgICAgICAgIC0gU2xvdyBz cHJpdGUgc3VyZmFjZSBmbGlwcGluZ1xuIgogICAgICAgICAgICJcdCdGJyAgICAgICAgLSBTcGVl ZCB1cCBzcHJpdGUgc3VyZmFjZSBmbGlwcGluZ1xuIiwKICAgICAgICAgICBuYW1lKTsKfQoKLy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgovLwovLyBtYWluCi8vCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CglpbnQgICAgICAgICAgICAgICAgIGM7 CglpbnQgICAgICAgICAgICAgICAgIHRlc3Rfb3ZlcmxheSA9IDAsCgkgICAgICAgICAgICAgICAg ICAgIGVuYWJsZV90aWxpbmcgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2luZm8g PSAwOwogICAgaW50ICAgICAgICAgICAgICAgICBwbGFuZV93aWR0aCA9IDAsCiAgICAgICAgICAg ICAgICAgICAgICAgIHBsYW5lX2hlaWdodCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG91 dF93aWR0aCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG91dF9oZWlnaHQgPSAwOwoJc3Rh dGljIGNoYXIgICAgICAgICBvcHRzdHJbXSA9ICJkczpvOnRoIjsKCglvcHRlcnIgPSAwOwoJd2hp bGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIG9wdHN0cikpICE9IC0xKSB7CgkJc3dpdGNoIChj KSB7CiAgICAgICAgY2FzZSAnZCc6ICAgICAgICAgICAgICAgLy8gRHVtcCBpbmZvcm1hdGlvbgog ICAgICAgICAgICBkdW1wX2luZm8gPSAxOwogICAgICAgICAgICBicmVhazsKCQljYXNlICd0Jzog ICAgICAgICAgICAgICAvLyBUaWxpbmcgZW5hYmxlCgkJCWVuYWJsZV90aWxpbmcgPSAxOwoJCQli cmVhazsKCQljYXNlICdzJzogICAgICAgICAgICAgICAvLyBTdXJmYWNlIGRpbWVuc2lvbnMKICAg ICAgICAgICAgaWYgKHNzY2FuZihvcHRhcmcsICIlZHglZCIsCiAgICAgICAgICAgICAgICAgICAg ICAgJnBsYW5lX3dpZHRoLCAmcGxhbmVfaGVpZ2h0KSAhPSAyKQogICAgICAgICAgICAgICAgdXNh Z2UoYXJndlswXSk7CgkJICAgIHRlc3Rfb3ZlcmxheSA9IDE7CgkJCWJyZWFrOwogICAgICAgIGNh c2UgJ28nOiAgICAgICAgICAgICAgIC8vIE91dHB1dCBkaW1lbnNpb25zCiAgICAgICAgICAgIGlm IChzc2NhbmYob3B0YXJnLCAiJWR4JWQiLAogICAgICAgICAgICAgICAgICAgICAgICZvdXRfd2lk dGgsICZvdXRfaGVpZ2h0KSAhPSAyKQogICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7CiAg ICAgICAgICAgIGJyZWFrOwoJCWRlZmF1bHQ6CgkJCXByaW50ZigidW5rbm93biBvcHRpb24gJWNc biIsIGMpOwoJCQkvKiBmYWxsIHRocm91Z2ggKi8KCQljYXNlICdoJzogICAgICAgICAgICAgICAv LyBIZWxwIQoJCQl1c2FnZShhcmd2WzBdKTsKCQkJZ290byBvdXQ7CgkJfQoJfQoKCWlmICh0ZXN0 X292ZXJsYXkpIHsKCSAgICBpZiAob3V0X3dpZHRoIDwgKHBsYW5lX3dpZHRoIC8gMikpIHsKCSAg ICAgICAgb3V0X3dpZHRoID0gcGxhbmVfd2lkdGg7CgkgICAgfQoKCSAgICBpZiAob3V0X2hlaWdo dCA8IChwbGFuZV9oZWlnaHQgLyAyKSkgewoJICAgICAgICBvdXRfaGVpZ2h0ID0gcGxhbmVfaGVp Z2h0OwoJICAgIH0KCgkgICAgcmljb2NoZXQoZW5hYmxlX3RpbGluZywKCSAgICAgICAgICAgICBw bGFuZV93aWR0aCwKCSAgICAgICAgICAgICBwbGFuZV9oZWlnaHQsCgkgICAgICAgICAgICAgb3V0 X3dpZHRoLAoJICAgICAgICAgICAgIG91dF9oZWlnaHQsCiAgICAgICAgICAgICAgICAgZHVtcF9p bmZvKTsKCX0gZWxzZSB7CgkgICAgcHJpbnRmKCJTcHJpdGUgZGltZW5zaW9ucyBhcmUgcmVxdWly ZWQ6XG4iKTsKCSAgICB1c2FnZShhcmd2WzBdKTsKCX0KCm91dDoKCWV4aXQoMCk7Cn0KCg== --_005_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_ Content-Type: application/octet-stream; name="sprite_on_patch" Content-Description: sprite_on_patch Content-Disposition: attachment; filename="sprite_on_patch"; size=3746; creation-date="Sat, 11 Feb 2012 00:55:34 GMT"; modification-date="Sat, 11 Feb 2012 00:57:31 GMT" Content-Transfer-Encoding: base64 LS0tIC9ob21lL2FjcmVlc2UvUGVyZldTL0xQSUEvYWNyZWVzZV9MUElBL2dmeF9EZXZlbG9wbWVu dC9Tb3VyY2UvTGludXgvaGFyZHdhcmUvaW50ZWwvdGVzdC9zcHJpdGVfb24uYworKysgL2hvbWUv YWNyZWVzZS9PVEMvZHJtLW92ZXJsYXlzL2ludGVsLWdwdS10b29scy90ZXN0cy9zcHJpdGVfb24u YwpAQCAtNTIsMTIgKzUyLDEyIEBACiAKIHN0cnVjdCB0eXBlX25hbWUKIHsKLQlpbnQgdHlwZTsK LQljaGFyICpuYW1lOworCWludCAgICAgICAgICAgICAgICAgdHlwZTsKKwljb25zdCBjaGFyICAg ICAgICAgICpuYW1lOwogfTsKIAogI2RlZmluZSB0eXBlX25hbWVfZm4ocmVzKSBcCi1zdGF0aWMg Y2hhciAqIHJlcyMjX3N0cihpbnQgdHlwZSkgewkJCVwKK3N0YXRpYyBjb25zdCBjaGFyICogcmVz IyNfc3RyKGludCB0eXBlKSB7CQkJXAogCXVuc2lnbmVkIGludCBpOwkJCQkJXAogCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHJlcyMjX25hbWVzKTsgaSsrKSB7IFwKIAkJaWYgKHJlcyMjX25h bWVzW2ldLnR5cGUgPT0gdHlwZSkJXApAQCAtNDU1LDUwICs0NTUsNiBAQAogCX0KIAogCXJldHVy biBpZDsKLX0KLQotLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLy8KLS8vIGRpc2FibGVfcGxhbmVz Ci0vLwotLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotc3RhdGljIHZvaWQgZGlzYWJsZV9wbGFuZXMo Ci0gICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGdmeF9mZCkKLXsKLQlzdHJ1Y3QgICAg ICAgICAgICAgICAgICBjb25uZWN0b3IgKmNvbm5lY3RvcnM7Ci0gICAgZHJtTW9kZVJlcyAgICAg ICAgICAgICAgKnJlc291cmNlczsKLQlpbnQgICAgICAgICAgICAgICAgICAgICBjOwotCi0JcmVz b3VyY2VzID0gZHJtTW9kZUdldFJlc291cmNlcyhnZnhfZmQpOwotCWlmICghcmVzb3VyY2VzKSB7 Ci0JCXByaW50ZigiZHJtTW9kZUdldFJlc291cmNlcyBmYWlsZWQ6ICVzXG4iLAotCQkJICAgc3Ry ZXJyb3IoZXJybm8pKTsKLQkJcmV0dXJuOwotCX0KLQotCWNvbm5lY3RvcnMgPSBjYWxsb2MocmVz b3VyY2VzLT5jb3VudF9jb25uZWN0b3JzLAotCQkJICAgIHNpemVvZihzdHJ1Y3QgY29ubmVjdG9y KSk7Ci0JaWYgKCFjb25uZWN0b3JzKQotCQlyZXR1cm47Ci0KLQkvKiBGaW5kIGFueSBjb25uZWN0 ZWQgZGlzcGxheXMgKi8KLQlmb3IgKGMgPSAwOyBjIDwgcmVzb3VyY2VzLT5jb3VudF9jb25uZWN0 b3JzOyBjKyspIHsKLQkJdWludDMyX3Qgc3ByaXRlX3BsYW5lX2lkOwotCi0JCXNwcml0ZV9wbGFu ZV9pZCA9IGNvbm5lY3Rvcl9maW5kX3BsYW5lKGdmeF9mZCwgJmNvbm5lY3RvcnNbY10pOwotCQlp ZiAoIXNwcml0ZV9wbGFuZV9pZCkgewotCQkJcHJpbnRmKCJmYWlsZWQgdG8gZmluZCBwbGFuZSBm b3IgY3J0Y1xuIik7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJaWYgKGRybU1vZGVTZXRQbGFuZShnZnhf ZmQsIHNwcml0ZV9wbGFuZV9pZCwgY29ubmVjdG9yc1tjXS5jcnRjLCAwLCAwLCAwLAotCQkJCSAg ICAwLCAwLCAwLCAwLCAwLCAwLCAwKSkgewotCQkJcHJpbnRmKCJmYWlsZWQgdG8gZGlzYWJsZSBw bGFuZTogJXNcbiIsCi0JCQkJc3RyZXJyb3IoZXJybm8pKTsKLQkJCXJldHVybjsKLQkJfQotCX0K LQlkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXNvdXJjZXMpOwotCXJldHVybjsKIH0KIAogLy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgpAQCAtOTE5LDE0ICs4NzUsMTQgQEAKICAgICAgICAgICAgICAgICAg ICAiICAgICAgICAuZmxhZ3MgPSAlMDh4XG4iCiAgICAgICAgICAgICAgICAgICAgIiAgICBkcm1N b2RlRW5jb2RlciAuLi5cbiIKICAgICAgICAgICAgICAgICAgICAiICAgICAgICAuZW5jb2Rlcl9p ZCA9ICVkXG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmVuY29kZXJfdHlwZSA9ICVk XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmVuY29kZXJfdHlwZSA9ICVkICglcylc biIKICAgICAgICAgICAgICAgICAgICAiICAgICAgICAuY3J0Y19pZCA9ICVkXG4iCiAgICAgICAg ICAgICAgICAgICAgIiAgICAgICAgLnBvc3NpYmxlX2NydGNzID0gJWRcbiIKICAgICAgICAgICAg ICAgICAgICAiICAgICAgICAucG9zc2libGVfY2xvbmVzID0gJWRcbiIKICAgICAgICAgICAgICAg ICAgICAiICAgIGRybU1vZGVDb25uZWN0b3IgLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgIiAg ICAgICAgLmNvbm5lY3Rvcl9pZCA9ICVkXG4iCiAgICAgICAgICAgICAgICAgICAgIiAgICAgICAg LmVuY29kZXJfaWQgPSAlZFxuIgotICAgICAgICAgICAgICAgICAgICIgICAgICAgIC5jb25uZWN0 b3JfdHlwZSA9ICVkXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmNvbm5lY3Rvcl90 eXBlID0gJWQgKCVzKVxuIgogICAgICAgICAgICAgICAgICAgICIgICAgICAgIC5jb25uZWN0b3Jf dHlwZV9pZCA9ICVkXG5cbiIsCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuaWQs CiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IubW9kZV92YWxpZCwKQEAgLTkzNywx MiArODkzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IubW9kZS5mbGFn cywKICAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5lbmNvZGVyX2lk LAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmVuY29kZXItPmVuY29kZXJfdHlw ZSwKKyAgICAgICAgICAgICAgICAgICBlbmNvZGVyX3R5cGVfc3RyKGN1cnJfY29ubmVjdG9yLmVu Y29kZXItPmVuY29kZXJfdHlwZSksCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3Iu ZW5jb2Rlci0+Y3J0Y19pZCwKICAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNv ZGVyLT5wb3NzaWJsZV9jcnRjcywKICAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5l bmNvZGVyLT5wb3NzaWJsZV9jbG9uZXMsCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0 b3IuY29ubmVjdG9yLT5jb25uZWN0b3JfaWQsCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25u ZWN0b3IuY29ubmVjdG9yLT5lbmNvZGVyX2lkLAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29u bmVjdG9yLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUsCisgICAgICAgICAgICAgICAgICAgY29u bmVjdG9yX3R5cGVfc3RyKGN1cnJfY29ubmVjdG9yLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUp LAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNvbm5lY3Rvci0+Y29ubmVjdG9y X3R5cGVfaWQpOwogCiAgICAgICAgICAgICBwcmludGYoIlNwcml0ZSBzdXJmYWNlIGRpbWVuc2lv bnMgPSAlZHglZFxuIgpAQCAtOTg4LDcgKzk0Niw3IEBACiAgICAgICAgIGlmIChvdXRfdyA+IHBy aW1fd2lkdGggLyAyKQogICAgICAgICAgICAgb3V0X3cgPSBwcmltX3dpZHRoIC8gMjsKICAgICAg ICAgaWYgKG91dF9oID4gcHJpbV9oZWlnaHQgLyAyKQotICAgICAgICAgICAgb3V0X2ggLSBwcmlt X2hlaWdodCAvIDI7CisgICAgICAgICAgICBvdXRfaCA9IHByaW1faGVpZ2h0IC8gMjsKIAogICAg ICAgICBkZWx0YV94ID0gMzsKICAgICAgICAgZGVsdGFfeSA9IDQ7Cgo= --_005_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx --_005_07EEC142D30DAC40BA4DD9C0F9EE51090B9FBCFMSMSX102amrcorpi_-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: SNB/IVB sprite demo Date: Sat, 11 Feb 2012 11:53:26 +0100 Message-ID: <20120211105326.GC4531@phenom.ffwll.local> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B9FBC@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTP id AC2C39E73F for ; Sat, 11 Feb 2012 02:53:14 -0800 (PST) Received: by wico1 with SMTP id o1so2927086wic.36 for ; Sat, 11 Feb 2012 02:53:13 -0800 (PST) Content-Disposition: inline In-Reply-To: <07EEC142D30DAC40BA4DD9C0F9EE51090B9FBC@FMSMSX102.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "Reese, Armin C" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org Hi Armin, On Sat, Feb 11, 2012 at 01:11:16AM +0000, Reese, Armin C wrote: > Thanks for letting me know about the GCC warning messages. I did my > final tweeks on the program in Android and compiled in that environment. > The compiler there is a bit blind and the build jobs generate so much > output, it's easy to ignore warnings. Np. Btw I've just merged the Android build patches for i-g-t in case that's useful for you. > Anyway, I'll be more careful next time. The GCC compiler on my Ubuntu > 11.04 system is version 4.5.2. I haven't installed 4.6.2 yet. GCC > produced no warnings after the patch was applied. I attached both the > patch and the new source code for sprite_on.c. Thanks, patch looks nice. Can I have it as a git patch? That's much esier to handle than your patch which contains funny paths into your own home directory ;-) /me is a lazy bastard > Thanks for taking time for this. I intend on adding color key support > into sprite_on.c to validate operation of that feature, so there will be > more patches coming. Awesome, but I that case if more stuff is to show up, I _really_ prefer git patches. Cheers, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Reese, Armin C" Subject: Re: SNB/IVB sprite demo Date: Fri, 17 Feb 2012 19:22:19 +0000 Message-ID: <07EEC142D30DAC40BA4DD9C0F9EE51090BC90C@FMSMSX102.amr.corp.intel.com> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B9FBC@FMSMSX102.amr.corp.intel.com> <20120211105326.GC4531@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_07EEC142D30DAC40BA4DD9C0F9EE51090BC90CFMSMSX102amrcorpi_" Return-path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id A3D3D9E78F for ; Fri, 17 Feb 2012 11:22:22 -0800 (PST) In-Reply-To: <20120211105326.GC4531@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Daniel Vetter Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org --_002_07EEC142D30DAC40BA4DD9C0F9EE51090BC90CFMSMSX102amrcorpi_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Yeah, I got lazy and just did a diff. Sorry about that ... Here is a real git patch made by "git diff sprite_on.c" Thanks & have a good weekend, Armin -----Original Message----- From: Daniel Vetter [mailto:daniel.vetter@ffwll.ch] On Behalf Of Daniel Vet= ter Sent: Saturday, February 11, 2012 2:53 AM To: Reese, Armin C Cc: intel-gfx@lists.freedesktop.org Subject: Re: [Intel-gfx] SNB/IVB sprite demo Hi Armin, On Sat, Feb 11, 2012 at 01:11:16AM +0000, Reese, Armin C wrote: > Thanks for letting me know about the GCC warning messages. I did my=20 > final tweeks on the program in Android and compiled in that environment. > The compiler there is a bit blind and the build jobs generate so much=20 > output, it's easy to ignore warnings. Np. Btw I've just merged the Android build patches for i-g-t in case that's= useful for you. > Anyway, I'll be more careful next time. The GCC compiler on my Ubuntu > 11.04 system is version 4.5.2. I haven't installed 4.6.2 yet. GCC=20 > produced no warnings after the patch was applied. I attached both the=20 > patch and the new source code for sprite_on.c. Thanks, patch looks nice. Can I have it as a git patch? That's much esier t= o handle than your patch which contains funny paths into your own home dire= ctory ;-) /me is a lazy bastard > Thanks for taking time for this. I intend on adding color key support=20 > into sprite_on.c to validate operation of that feature, so there will=20 > be more patches coming. Awesome, but I that case if more stuff is to show up, I _really_ prefer git= patches. Cheers, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 --_002_07EEC142D30DAC40BA4DD9C0F9EE51090BC90CFMSMSX102amrcorpi_ Content-Type: application/octet-stream; name="sprite_on_patch" Content-Description: sprite_on_patch Content-Disposition: attachment; filename="sprite_on_patch"; size=3927; creation-date="Fri, 17 Feb 2012 19:18:06 GMT"; modification-date="Fri, 17 Feb 2012 18:57:32 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3Rlc3RzL3Nwcml0ZV9vbi5jIGIvdGVzdHMvc3ByaXRlX29uLmMKaW5kZXgg NDljY2ZmMi4uNTg1MTg5ZCAxMDA2NDQKLS0tIGEvdGVzdHMvc3ByaXRlX29uLmMKKysrIGIvdGVz dHMvc3ByaXRlX29uLmMKQEAgLTUyLDEyICs1MiwxMiBAQAogCiBzdHJ1Y3QgdHlwZV9uYW1lCiB7 Ci0JaW50IHR5cGU7Ci0JY2hhciAqbmFtZTsKKwlpbnQgICAgICAgICAgICAgICAgIHR5cGU7CisJ Y29uc3QgY2hhciAgICAgICAgICAqbmFtZTsKIH07CiAKICNkZWZpbmUgdHlwZV9uYW1lX2ZuKHJl cykgXAotc3RhdGljIGNoYXIgKiByZXMjI19zdHIoaW50IHR5cGUpIHsJCQlcCitzdGF0aWMgY29u c3QgY2hhciAqIHJlcyMjX3N0cihpbnQgdHlwZSkgewkJCVwKIAl1bnNpZ25lZCBpbnQgaTsJCQkJ CVwKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShyZXMjI19uYW1lcyk7IGkrKykgeyBcCiAJ CWlmIChyZXMjI19uYW1lc1tpXS50eXBlID09IHR5cGUpCVwKQEAgLTQ1OSw1MCArNDU5LDYgQEAg c3RhdGljIGludCBjb25uZWN0b3JfZmluZF9wbGFuZShpbnQgZ2Z4X2ZkLCBzdHJ1Y3QgY29ubmVj dG9yICpjKQogCiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAvLwotLy8gZGlzYWJsZV9wbGFuZXMK LS8vCi0vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi1zdGF0aWMgdm9pZCBkaXNhYmxlX3BsYW5lcygK LSAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZ2Z4X2ZkKQotewotCXN0cnVjdCAgICAg ICAgICAgICAgICAgIGNvbm5lY3RvciAqY29ubmVjdG9yczsKLSAgICBkcm1Nb2RlUmVzICAgICAg ICAgICAgICAqcmVzb3VyY2VzOwotCWludCAgICAgICAgICAgICAgICAgICAgIGM7Ci0KLQlyZXNv dXJjZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGdmeF9mZCk7Ci0JaWYgKCFyZXNvdXJjZXMpIHsK LQkJcHJpbnRmKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsCi0JCQkgICBzdHJl cnJvcihlcnJubykpOwotCQlyZXR1cm47Ci0JfQotCi0JY29ubmVjdG9ycyA9IGNhbGxvYyhyZXNv dXJjZXMtPmNvdW50X2Nvbm5lY3RvcnMsCi0JCQkgICAgc2l6ZW9mKHN0cnVjdCBjb25uZWN0b3Ip KTsKLQlpZiAoIWNvbm5lY3RvcnMpCi0JCXJldHVybjsKLQotCS8qIEZpbmQgYW55IGNvbm5lY3Rl ZCBkaXNwbGF5cyAqLwotCWZvciAoYyA9IDA7IGMgPCByZXNvdXJjZXMtPmNvdW50X2Nvbm5lY3Rv cnM7IGMrKykgewotCQl1aW50MzJfdCBzcHJpdGVfcGxhbmVfaWQ7Ci0KLQkJc3ByaXRlX3BsYW5l X2lkID0gY29ubmVjdG9yX2ZpbmRfcGxhbmUoZ2Z4X2ZkLCAmY29ubmVjdG9yc1tjXSk7Ci0JCWlm ICghc3ByaXRlX3BsYW5lX2lkKSB7Ci0JCQlwcmludGYoImZhaWxlZCB0byBmaW5kIHBsYW5lIGZv ciBjcnRjXG4iKTsKLQkJCXJldHVybjsKLQkJfQotCQlpZiAoZHJtTW9kZVNldFBsYW5lKGdmeF9m ZCwgc3ByaXRlX3BsYW5lX2lkLCBjb25uZWN0b3JzW2NdLmNydGMsIDAsIDAsIDAsCi0JCQkJICAg IDAsIDAsIDAsIDAsIDAsIDAsIDApKSB7Ci0JCQlwcmludGYoImZhaWxlZCB0byBkaXNhYmxlIHBs YW5lOiAlc1xuIiwKLQkJCQlzdHJlcnJvcihlcnJubykpOwotCQkJcmV0dXJuOwotCQl9Ci0JfQot CWRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291cmNlcyk7Ci0JcmV0dXJuOwotfQotCi0vLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0vLwogLy8gcHJlcGFyZV9wcmltYXJ5X3N1cmZhY2UKIC8vCiAvLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCkBAIC05MTksMTQgKzg3NSwxNCBAQCBzdGF0aWMgdm9pZCByaWNv Y2hldCgKICAgICAgICAgICAgICAgICAgICAiICAgICAgICAuZmxhZ3MgPSAlMDh4XG4iCiAgICAg ICAgICAgICAgICAgICAgIiAgICBkcm1Nb2RlRW5jb2RlciAuLi5cbiIKICAgICAgICAgICAgICAg ICAgICAiICAgICAgICAuZW5jb2Rlcl9pZCA9ICVkXG4iCi0gICAgICAgICAgICAgICAgICAgIiAg ICAgICAgLmVuY29kZXJfdHlwZSA9ICVkXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAg LmVuY29kZXJfdHlwZSA9ICVkICglcylcbiIKICAgICAgICAgICAgICAgICAgICAiICAgICAgICAu Y3J0Y19pZCA9ICVkXG4iCiAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgLnBvc3NpYmxlX2Ny dGNzID0gJWRcbiIKICAgICAgICAgICAgICAgICAgICAiICAgICAgICAucG9zc2libGVfY2xvbmVz ID0gJWRcbiIKICAgICAgICAgICAgICAgICAgICAiICAgIGRybU1vZGVDb25uZWN0b3IgLi4uXG4i CiAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgLmNvbm5lY3Rvcl9pZCA9ICVkXG4iCiAgICAg ICAgICAgICAgICAgICAgIiAgICAgICAgLmVuY29kZXJfaWQgPSAlZFxuIgotICAgICAgICAgICAg ICAgICAgICIgICAgICAgIC5jb25uZWN0b3JfdHlwZSA9ICVkXG4iCisgICAgICAgICAgICAgICAg ICAgIiAgICAgICAgLmNvbm5lY3Rvcl90eXBlID0gJWQgKCVzKVxuIgogICAgICAgICAgICAgICAg ICAgICIgICAgICAgIC5jb25uZWN0b3JfdHlwZV9pZCA9ICVkXG5cbiIsCiAgICAgICAgICAgICAg ICAgICAgY3Vycl9jb25uZWN0b3IuaWQsCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0 b3IubW9kZV92YWxpZCwKQEAgLTkzNywxMiArODkzLDE0IEBAIHN0YXRpYyB2b2lkIHJpY29jaGV0 KAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLm1vZGUuZmxhZ3MsCiAgICAgICAg ICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rlci0+ZW5jb2Rlcl9pZCwKICAgICAgICAg ICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5lbmNvZGVyX3R5cGUsCisgICAgICAg ICAgICAgICAgICAgZW5jb2Rlcl90eXBlX3N0cihjdXJyX2Nvbm5lY3Rvci5lbmNvZGVyLT5lbmNv ZGVyX3R5cGUpLAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmVuY29kZXItPmNy dGNfaWQsCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rlci0+cG9zc2li bGVfY3J0Y3MsCiAgICAgICAgICAgICAgICAgICAgY3Vycl9jb25uZWN0b3IuZW5jb2Rlci0+cG9z c2libGVfY2xvbmVzLAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNvbm5lY3Rv ci0+Y29ubmVjdG9yX2lkLAogICAgICAgICAgICAgICAgICAgIGN1cnJfY29ubmVjdG9yLmNvbm5l Y3Rvci0+ZW5jb2Rlcl9pZCwKICAgICAgICAgICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlLAorICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rvcl90eXBl X3N0cihjdXJyX2Nvbm5lY3Rvci5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKSwKICAgICAgICAg ICAgICAgICAgICBjdXJyX2Nvbm5lY3Rvci5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlX2lkKTsK IAogICAgICAgICAgICAgcHJpbnRmKCJTcHJpdGUgc3VyZmFjZSBkaW1lbnNpb25zID0gJWR4JWRc biIKQEAgLTk4OCw3ICs5NDYsNyBAQCBzdGF0aWMgdm9pZCByaWNvY2hldCgKICAgICAgICAgaWYg KG91dF93ID4gcHJpbV93aWR0aCAvIDIpCiAgICAgICAgICAgICBvdXRfdyA9IHByaW1fd2lkdGgg LyAyOwogICAgICAgICBpZiAob3V0X2ggPiBwcmltX2hlaWdodCAvIDIpCi0gICAgICAgICAgICBv dXRfaCAtIHByaW1faGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIG91dF9oID0gcHJpbV9oZWlnaHQg LyAyOwogCiAgICAgICAgIGRlbHRhX3ggPSAzOwogICAgICAgICBkZWx0YV95ID0gNDsK --_002_07EEC142D30DAC40BA4DD9C0F9EE51090BC90CFMSMSX102amrcorpi_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx --_002_07EEC142D30DAC40BA4DD9C0F9EE51090BC90CFMSMSX102amrcorpi_-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Menzel Subject: Re: SNB/IVB sprite demo Date: Sat, 18 Feb 2012 17:59:45 +0100 Message-ID: <1329584385.3624.26.camel@mattotaupa> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B9FBC@FMSMSX102.amr.corp.intel.com> <20120211105326.GC4531@phenom.ffwll.local> <07EEC142D30DAC40BA4DD9C0F9EE51090BC90C@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0729157713==" Return-path: Received: from mail.gw90.de (mail.gw90.de [188.40.100.199]) by gabe.freedesktop.org (Postfix) with ESMTP id B21ED9E7CE for ; Sat, 18 Feb 2012 08:59:56 -0800 (PST) In-Reply-To: <07EEC142D30DAC40BA4DD9C0F9EE51090BC90C@FMSMSX102.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "Reese, Armin C" Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org --===============0729157713== Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-3GLbv+SQaEq90/Wg3Kns" --=-3GLbv+SQaEq90/Wg3Kns Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Am Freitag, den 17.02.2012, 19:22 +0000 schrieb Reese, Armin C: > Yeah, I got lazy and just did a diff. Sorry about that ... >=20 > Here is a real git patch made by "git diff sprite_on.c" I think a real git patch is made by doing `git format-patch -1 -s`. Thanks, Paul --=-3GLbv+SQaEq90/Wg3Kns Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iEYEABECAAYFAk8/2QEACgkQPX1aK2wOHVg6mACdHMRJU5Yqk76/gzoKXg8IG3b7 ILsAmwf+5dgbj74VArkmw+aNMnp/hAut =8eH1 -----END PGP SIGNATURE----- --=-3GLbv+SQaEq90/Wg3Kns-- --===============0729157713== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx --===============0729157713==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: SNB/IVB sprite demo Date: Wed, 22 Feb 2012 11:00:59 +0100 Message-ID: <20120222100059.GD4872@phenom.ffwll.local> References: <07EEC142D30DAC40BA4DD9C0F9EE51090B9FBC@FMSMSX102.amr.corp.intel.com> <20120211105326.GC4531@phenom.ffwll.local> <07EEC142D30DAC40BA4DD9C0F9EE51090BC90C@FMSMSX102.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 3F7B69E7A4 for ; Wed, 22 Feb 2012 02:00:59 -0800 (PST) Received: by wico1 with SMTP id o1so4955714wic.36 for ; Wed, 22 Feb 2012 02:00:58 -0800 (PST) Content-Disposition: inline In-Reply-To: <07EEC142D30DAC40BA4DD9C0F9EE51090BC90C@FMSMSX102.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "Reese, Armin C" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org On Fri, Feb 17, 2012 at 07:22:19PM +0000, Reese, Armin C wrote: > Yeah, I got lazy and just did a diff. Sorry about that ... > > Here is a real git patch made by "git diff sprite_on.c" > > Thanks & have a good weekend, Thanks for the build noise fixes, patch applied. Fyi git patches preferred, and I've also moved around sprite_on.c a bit, so this patch was a bit a hassle to apply ... Yours, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48