From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Stefano D Angelo" Subject: Re: Line6 TonePort UX1 driver Date: Fri, 12 May 2006 11:15:52 +0300 Message-ID: <20060512111552.M16903@oneonline.it> References: <20060508201619.M38508@oneonline.it> <20060510165635.M757@oneonline.it> <20060512004915.M47766@oneonline.it> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=OPENWEBMAIL_ATT_0.692797807976604" Return-path: In-Reply-To: <20060512004915.M47766@oneonline.it> Sender: alsa-devel-admin@lists.sourceforge.net Errors-To: alsa-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org This is a multi-part message in MIME format. ------=OPENWEBMAIL_ATT_0.692797807976604 Content-Type: text/plain; charset=iso-8859-1 Ok, I attached the code to this e-mail. I followed your suggestion, Takashi, and, as you can see, now I'm implementing all supporte formats for playback. But another problem arouses... I'm trying to set period/buffer sizes through a rule_add, but now I can't make it work yet. playback_copy works only for 24-bits 48000 outputs now, but now I'm going to solve the problem I just told you first. Please, let me know and thanks for your supporting. Stefano ----------------- Registra il tuo nome di dominio su: http://www.oneonline.it/domini One On Line ti offre domino + spazio web illimitato + 5 email + 5000 uscite banner + PHP + Link a soli Euro 15 iva compresa ------=OPENWEBMAIL_ATT_0.692797807976604 Content-Type: application/octet-stream; name="snd_line6_tp_ux1.c" Content-Transfer-Encoding: base64 LyoKICogICBMaW5lNiBUb25lUG9ydCBVWDEgKGFuZCBtYXliZSBUb25lUG9ydCBVWDIpIFVTQiBk cml2ZXIgZm9yIEFMU0EKICoKICoKICogICBDb3B5cmlnaHQgKGMpIDIwMDYgYnkgU3RlZmFubyBE J0FuZ2VsbyA8ZGFzdGVAb25lb25saW5lLml0PgogKgogKiAgIFNvbWUgY29kZSBib3Jyb3dlZCBm cm9tCiAqICAgICAgICAgIFVTQiBBdWRpbyBEcml2ZXIgZm9yIEFMU0EgYnkgVGFrYXNoaSBJd2Fp IDx0aXdhaUBzdXNlLmRlPgogKiAgICAgICAgICAiV3JpdGluZyBhbiBBTFNBIERyaXZlciIgYnkg VGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgogKiAgICAgICAgICAiTGludXggVVNCIERyaXZl ciBCYXNpY3MiIGF0IGh0dHA6Ly93d3cubGludXh0ZWNoYXJ0aWNsZXMuY29tCiAqICAgYW5kIG1h eWJlLCBjb25zZXF1ZW50bHksIGFsc28gZnJvbSBhdWRpby5jIGJ5CiAqCSAgICBBbGFuIENveCA8 YWxhbkBseG9yZ3VrLnVrdXUub3JnLnVrPgogKgkgICAgVGhvbWFzIFNhaWxlciA8c2FpbGVyQGlm ZS5lZS5ldGh6LmNoPgogKgogKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgogKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCiAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqICAgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTEx LTEzMDcgVVNBCiAqCiAqLwoKI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgojaW5jbHVkZSA8bGludXgv ZGV2aWNlLmg+CiNpbmNsdWRlIDxzb3VuZC9kcml2ZXIuaD4KI2luY2x1ZGUgPHNvdW5kL2NvcmUu aD4KI2luY2x1ZGUgPHNvdW5kL2luZm8uaD4KI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgojaW5jbHVk ZSA8c291bmQvcGNtX3BhcmFtcy5oPgojaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgojaW5jbHVk ZSA8c291bmQvY29udHJvbC5oPgoKI2luY2x1ZGUgInNuZF9saW5lNl90cF91eDEuaCIKCi8qIHVy YiBsaXN0IHN0cnVjdCAtIFRPRE86IG1heWJlIGNvbnZlcnQgdG8gbGlzdF9oZWFkICovCgpzdHJ1 Y3QgdXJiX2xpc3QgewoJc3RydWN0IHVyYiAqdXJiOwoJc3RydWN0IHVyYl9saXN0ICpuZXh0Owp9 OwoKLyogY2hpcCBzdHJ1Y3QgKi8KCnN0cnVjdCBzbmRfbGluZTZfdHBfdXgxIHsKCWludCBpbmRl eDsJCQkvKiBkZXZpY2UgaW5kZXggKi8KCglzdHJ1Y3QgdXNiX2RldmljZSAqZGV2OwoJc25kX2Nh cmRfdCAqY2FyZDsKCXNuZF9wY21fdCAqcGNtOwoKCWludCBhbHRzZXR0aW5nOwkJCS8qIGN1cnJl bnQgYWx0c2V0dGluZyAqLwoKCXVuc2lnbmVkIGludCBwbGF5YmFja19wb3M7CS8qIGJ1ZmZlciBw b3NpdGlvbiBpbiBmcmFtZXMgKi8KCgl1bnNpZ25lZCBpbnQgcGxheWJhY2tfbHZvbDsJLyogbWFz dGVyIHBsYXliYWNrIGxlZnQgdm9sdW1lICovCgl1bnNpZ25lZCBpbnQgcGxheWJhY2tfcnZvbDsJ LyogbWFzdGVyIHBsYXliYWNrIHJpZ2h0IHZvbHVtZSAqLwoKCXN0cnVjdCB1cmJfbGlzdCAqcGVu ZGluZ19wbGF5YmFja191cmJzOwoJc3RydWN0IHVyYl9saXN0ICpsYXN0X3BlbmRpbmdfcGxheWJh Y2tfdXJiOwp9OwoKLyogZnVuY3Rpb24gcHJvdG90eXBlcyAqLwoKc3RhdGljIGludCBzbmRfbGlu ZTZfdHBfdXgxX2RyaXZlcl9pbml0ICgpOwpzdGF0aWMgdm9pZCBzbmRfbGluZTZfdHBfdXgxX2Ry aXZlcl9leGl0ICgpOwoKc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX3Byb2JlIChzdHJ1Y3Qg dXNiX2ludGVyZmFjZSAqaW50ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpOwpzdGF0aWMgaW50IHNuZF9saW5lNl90cF91 eDFfY3JlYXRlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgaWR4KTsKc3RhdGljIGludCBz bmRfbGluZTZfdHBfdXgxX2luaXRfbXNncyAoc3RydWN0IHVzYl9kZXZpY2UqIGRldik7CnN0YXRp YyBpbnQgc25kX2xpbmU2X3RwX3V4MV9uZXdfcGNtIChzdHJ1Y3Qgc25kX2xpbmU2X3RwX3V4MSAq Y2hpcCk7CnN0YXRpYyB2b2lkIHNuZF9saW5lNl90cF91eDFfZGlzY29ubmVjdCAoc3RydWN0IHVz Yl9pbnRlcmZhY2UgKmludGYpOwpzdGF0aWMgaW50IHNuZF9saW5lNl90cF91eDFfZnJlZSAoc3Ry dWN0IHNuZF9saW5lNl90cF91eDEgKmNoaXBfcHRyKTsKc3RhdGljIGludCBzbmRfbGluZTZfdHBf dXgxX2Rldl9mcmVlIChzbmRfZGV2aWNlX3QgKmRldmljZSk7CgpzdGF0aWMgaW50IHNuZF9saW5l Nl90cF91eDFfc3VibWl0X2NvbnRyb2xfdHJhbnNmZXIgKHN0cnVjdCB1c2JfZGV2aWNlKiBkZXYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciogcGFja2V0KTsKc3RhdGljIHZvaWQgc25kX2xpbmU2X3RwX3V4MV9jb21wbGV0 ZV9jb250cm9sX3RyYW5zZmVyIChzdHJ1Y3QgdXJiKiB1cmIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHB0X3JlZ3MqIHJlZ3Mp OwpzdGF0aWMgdm9pZCBzbmRfbGluZTZfdHBfdXgxX2NvbXBsZXRlX3BsYXliYWNrX3RyYW5zZmVy IChzdHJ1Y3QgdXJiKiB1cmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdzKiByZWdzKTsKCnN0YXRpYyBpbnQgc25k X2xpbmU2X3RwX3V4MV9od19wZXJpb2RfYnlfcmF0ZSAoc25kX3BjbV9od19wYXJhbXNfdCAqcGFy YW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZF9w Y21faHdfcnVsZV90ICpydWxlKTsKCnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9wbGF5YmFj a19vcGVuIChzbmRfcGNtX3N1YnN0cmVhbV90ICpzdWJzdHJlYW0pOwpzdGF0aWMgaW50IHNuZF9s aW5lNl90cF91eDFfcGxheWJhY2tfY2xvc2UgKHNuZF9wY21fc3Vic3RyZWFtX3QgKnN1YnN0cmVh bSk7CnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9wY21faHdfcGFyYW1zIChzbmRfcGNtX3N1 YnN0cmVhbV90ICpzdWJzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzbmRfcGNtX2h3X3BhcmFtc190ICpod19wYXJhbXMpOwpzdGF0aWMgaW50IHNuZF9s aW5lNl90cF91eDFfcGNtX2h3X2ZyZWUgKHNuZF9wY21fc3Vic3RyZWFtX3QgKnN1YnN0cmVhbSk7 CnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9wY21fcHJlcGFyZSAoc25kX3BjbV9zdWJzdHJl YW1fdCAqc3Vic3RyZWFtKTsKc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX3BjbV90cmlnZ2Vy IChzbmRfcGNtX3N1YnN0cmVhbV90ICpzdWJzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGNtZCk7CnN0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdCBzbmRf bGluZTZfdHBfdXgxX3BjbV9wb2ludGVyICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzbmRfcGNtX3N1YnN0cmVhbV90KiBzdWJzdHJlYW0pOwpzdGF0aWMg aW50IHNuZF9saW5lNl90cF91eDFfcGxheWJhY2tfY29weSAoc25kX3BjbV9zdWJzdHJlYW1fdCAq c3Vic3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGNoYW5uZWwsIHNuZF9wY21fdWZyYW1lc190IHBvcywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKnNyYywgc25kX3BjbV91ZnJhbWVzX3QgY291bnQpOwov KiBzdGF0aWMgaW50IHNuZF9saW5lNl90cF91eDFfcGxheWJhY2tfc2lsZW5jZSAoc25kX3BjbV9z dWJzdHJlYW1fdCAqc3Vic3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGNoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzbmRfcGNtX3VmcmFtZXNfdCBwb3MsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfcGNtX3VmcmFtZXNfdCBjb3VudCk7ICovCgpz dGF0aWMgaW5saW5lIHMzMiBzbmRfbGluZTZfdHBfdXgxX3ZvbHVtaXplXzI0ICh1OCBieXRlMSwg dTggYnl0ZTIsIHU4IGJ5dGUzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmbG9hdCBub3JtX3ZvbCk7CgpzdGF0aWMgaW50IHNuZF9saW5lNl90cF91eDFf cGxheWJhY2tfdm9sX2luZm8gKHNuZF9rY29udHJvbF90ICprY29udHJvbCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfY3RsX2VsZW1faW5mb190ICp1 aW5mbyk7CnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9wbGF5YmFja192b2xfZ2V0IChzbmRf a2NvbnRyb2xfdCAqa2NvbnRyb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzbmRfY3RsX2VsZW1fdmFsdWVfdCAqdWNvbnRyb2wpOwpzdGF0aWMgaW50IHNu ZF9saW5lNl90cF91eDFfcGxheWJhY2tfdm9sX3B1dCAoc25kX2tjb250cm9sX3QgKmtjb250cm9s LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kX2N0bF9l bGVtX3ZhbHVlX3QgKnVjb250cm9sKTsKCi8qIGdsb2JhbCB2YXJpYWJsZXMgKi8KCnN0YXRpYyBp bnQgIGluZGV4W1NORFJWX0NBUkRTXSAgPSBTTkRSVl9ERUZBVUxUX0lEWDsKc3RhdGljIGNoYXIg KmlkW1NORFJWX0NBUkRTXSAgICA9IFNORFJWX0RFRkFVTFRfU1RSOwpzdGF0aWMgaW50ICBlbmFi bGVbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9FTkFCTEVfUE5QOwoKc3RhdGljIHN0cnVj dCBzbmRfbGluZTZfdHBfdXgxICpjaGlwW1NORFJWX0NBUkRTXSA9IHtOVUxMfTsKCi8qIE5PVEU6 IGFkZCBUb25lUG9ydCBVWDIgUElEPyAqLwpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgc25k X2xpbmU2X3RwX3V4MV9pZF90YWJsZSBbXSA9CnsKCXsgVVNCX0RFVklDRSAoTElORTZfVkVORE9S X0lELCBMSU5FNl9UUF9VWDFfUElEKSB9LAoJeyB9Cn07CgpzdGF0aWMgc3RydWN0IHVzYl9kcml2 ZXIgc25kX2xpbmU2X3RwX3V4MV9kcml2ZXIgPSB7Cgkub3duZXIgICAgICA9IFRISVNfTU9EVUxF LAoJLm5hbWUgICAgICAgPSAic25kLWxpbmU2LXRwLXV4MSIsCgkuaWRfdGFibGUgICA9IHNuZF9s aW5lNl90cF91eDFfaWRfdGFibGUsCgkucHJvYmUgICAgICA9IHNuZF9saW5lNl90cF91eDFfcHJv YmUsCgkuZGlzY29ubmVjdCA9IHNuZF9saW5lNl90cF91eDFfZGlzY29ubmVjdAp9OwoKc3RhdGlj IHNuZF9wY21faGFyZHdhcmVfdCBzbmRfbGluZTZfdHBfdXgxX3BsYXliYWNrX2h3ID0gewoJLmlu Zm8gICAgICAgICAgICAgPSBTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRCwKCS5mb3JtYXRzICAg ICAgICAgID0gU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfAoJICAgICAgICAgICAgICAgICAgICBT TkRSVl9QQ01fRk1UQklUX1MyNF8zTEUsCgkucmF0ZXMgICAgICAgICAgICA9IFNORFJWX1BDTV9S QVRFXzQ0MTAwIHwKCSAgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX1JBVEVfNDgwMDAsCgku cmF0ZV9taW4gICAgICAgICA9IDQ0MTAwLAoJLnJhdGVfbWF4ICAgICAgICAgPSA0ODAwMCwKCS5j aGFubmVsc19taW4gICAgID0gMiwKCS5jaGFubmVsc19tYXggICAgID0gMiwKCS8qIGRvdWJsZSBi dWZmZXJpbmcgKi8KCS5idWZmZXJfYnl0ZXNfbWF4ID0gTElORTZfVFBfVVgxXzQ4MDAwXzI0X1BB Q0tFVF9TSVpFX09VVCAqIDEwMjQgKiAyLAoJLnBlcmlvZF9ieXRlc19taW4gPSBMSU5FNl9UUF9V WDFfNDQxMDBfMTZfUEFDS0VUX1NJWkVfT1VUICogMiwKCS5wZXJpb2RfYnl0ZXNfbWF4ID0gTElO RTZfVFBfVVgxXzQ4MDAwXzI0X1BBQ0tFVF9TSVpFX09VVCAqIDIsCgkucGVyaW9kc19taW4gICAg ICA9IDEsCgkucGVyaW9kc19tYXggICAgICA9IDEwMjQKfTsKCnN0YXRpYyBzbmRfZGV2aWNlX29w c190IHNuZF9saW5lNl90cF91eDFfb3BzID0KewogICAgICAgIC5kZXZfZnJlZSA9IHNuZF9saW5l Nl90cF91eDFfZGV2X2ZyZWUKfTsKCnN0YXRpYyBzbmRfcGNtX29wc190IHNuZF9saW5lNl90cF91 eDFfcGxheWJhY2tfb3BzID0gewoJLm9wZW4gICAgICA9IHNuZF9saW5lNl90cF91eDFfcGxheWJh Y2tfb3BlbiwKCS5jbG9zZSAgICAgPSBzbmRfbGluZTZfdHBfdXgxX3BsYXliYWNrX2Nsb3NlLAoJ LmlvY3RsICAgICA9IHNuZF9wY21fbGliX2lvY3RsLAoJLmh3X3BhcmFtcyA9IHNuZF9saW5lNl90 cF91eDFfcGNtX2h3X3BhcmFtcywKCS5od19mcmVlICAgPSBzbmRfbGluZTZfdHBfdXgxX3BjbV9o d19mcmVlLAoJLnByZXBhcmUgICA9IHNuZF9saW5lNl90cF91eDFfcGNtX3ByZXBhcmUsCgkudHJp Z2dlciAgID0gc25kX2xpbmU2X3RwX3V4MV9wY21fdHJpZ2dlciwKCS5wb2ludGVyICAgPSBzbmRf bGluZTZfdHBfdXgxX3BjbV9wb2ludGVyLAoJLmNvcHkgICAgICA9IHNuZF9saW5lNl90cF91eDFf cGxheWJhY2tfY29weSwKLyoJLnNpbGVuY2UgICA9IHNuZF9saW5lNl90cF91eDFfcGxheWJhY2tf c2lsZW5jZSAqLwp9OwoKLyogVE9ETzogY2FwdHVyZSBvcHMgKi8KCnN0YXRpYyBzbmRfa2NvbnRy b2xfbmV3X3Qgc25kX2xpbmU2X3RwX3V4MV9wbGF5YmFja192b2wgPSB7CgkuaWZhY2UgID0gU05E UlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCgkubmFtZSAgID0gIk1hc3RlciBQbGF5YmFjayBWb2x1 bWUiLAoJLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUsCgkuaW5mbyAg ID0gc25kX2xpbmU2X3RwX3V4MV9wbGF5YmFja192b2xfaW5mbywKCS5nZXQgICAgPSBzbmRfbGlu ZTZfdHBfdXgxX3BsYXliYWNrX3ZvbF9nZXQsCgkucHV0ICAgID0gc25kX2xpbmU2X3RwX3V4MV9w bGF5YmFja192b2xfcHV0Cn07CgovKiBUT0RPOiBjYXB0dXJlIHZvbHVtZSAqLwoKLyogbW9kdWxl IHJlbGF0ZWQgc3R1ZmYgKi8KCm1vZHVsZV9wYXJhbV9hcnJheSAoaW5kZXgsIGludCwgTlVMTCwg MDQ0NCk7Ck1PRFVMRV9QQVJNX0RFU0MgKGluZGV4LCAiSW5kZXggdmFsdWUgZm9yIHRoZSBMaW5l NiBUb25lUG9ydCBVWDEgYWRhcHRlci4iKTsKbW9kdWxlX3BhcmFtX2FycmF5IChpZCwgY2hhcnAs IE5VTEwsIDA0NDQpOwpNT0RVTEVfUEFSTV9ERVNDIChpZCwgIklEIHN0cmluZyBmb3IgdGhlIExp bmU2IFRvbmVQb3J0IFVYMSBhZGFwdGVyLiIpOwptb2R1bGVfcGFyYW1fYXJyYXkgKGVuYWJsZSwg Ym9vbCwgTlVMTCwgMDQ0NCk7Ck1PRFVMRV9QQVJNX0RFU0MgKGVuYWJsZSwgIkVuYWJsZSBMaW5l NiBUb25lUG9ydCBVWDEgYWRhcHRlci4iKTsKCk1PRFVMRV9BVVRIT1IgKCJTdGVmYW5vIEQnQW5n ZWxvIDxkYXN0ZUBvbmVvbmxpbmUuaXQ+Iik7Ck1PRFVMRV9ERVNDUklQVElPTiAoIkxpbmU2IFRv bmVQb3J0IFVYMSBVU0IgZHJpdmVyIGZvciBBTFNBIik7Ck1PRFVMRV9MSUNFTlNFICgiR1BMIik7 Ck1PRFVMRV9TVVBQT1JURURfREVWSUNFICgiTGluZTYgVG9uZVBvcnQgVVgxIFVTQiIpOwpNT0RV TEVfREVWSUNFX1RBQkxFICh1c2IsIHNuZF9saW5lNl90cF91eDFfaWRfdGFibGUpOwoKLyogZnVu Y3Rpb25zICovCgovKgogKiBkcml2ZXIncyBlbnRyeS1wb2ludAogKi8Kc3RhdGljIGludCBzbmRf bGluZTZfdHBfdXgxX2RyaXZlcl9pbml0ICgpCnsKCXJldHVybiB1c2JfcmVnaXN0ZXIgKCZzbmRf bGluZTZfdHBfdXgxX2RyaXZlcik7Cn0KCi8qCiAqIGRyaXZlcidzIGV4aXQtcG9pbnQKICovCnN0 YXRpYyB2b2lkIHNuZF9saW5lNl90cF91eDFfZHJpdmVyX2V4aXQgKCkKewoJdXNiX2RlcmVnaXN0 ZXIgKCZzbmRfbGluZTZfdHBfdXgxX2RyaXZlcik7Cn0KCi8qCiAqIHByb2JlcyB0aGUgc291bmQg Y2FyZAogKgogKiBjaGVja3Mgd2hldGhlciB0aGUgZGV2aWNlIGlzIGFscmVhZHkgcmVnaXN0ZXJl ZCBvciBub3QgYW5kIGV2ZW50dWFsbHkgaW5pdHMKICogaXQgdXNpbmcgdGhlIGZpcnN0IGF2YWli bGUgc2xvdC4KICoKICogaXQgZG9lc24ndCBzZWVtIHRvIGhhcHBlbiB0aGF0IHRoaXMgZnVuY3Rp b24gaXMgZXhlY3V0ZWQgbXVsdHBpbGUgdGltZXMgZm9yCiAqIGEgc2luZ2xlIGNhcmQsIGJ1dCB3 ZSBjaGVjayB0aGUgc2FtZQogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX3Byb2JlIChz dHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCnsKCXN0cnVjdCB1c2JfZGV2aWNl ICpkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2IChpbnRmKTsKCWludCBpLCBqOwoKCWogPSAtMTsK CWZvciAoaSA9IDA7IGkgPCBTTkRSVl9DQVJEUzsgaSsrKSB7CgkJaWYgKGNoaXBbaV0pIHsKCQkJ LyogY291bGRuJ3QgZG8gdGhlIGZvbGxvd2luZyBjaGVjayBiZWZvcmUgKi8KCQkJaWYgKGRldiA9 PSBjaGlwW2ldLT5kZXYpIHsKCQkJCS8qIHllcywgYWxyZWFkeSByZWdpc3RlcmVkICovCgkJCQly ZXR1cm4gMDsKCQkJfQoJCX0gZWxzZSB7CgkJCS8qIG9oLCB3ZSd2ZSBnb3QgYSBzbG90ICovCgkJ CWlmIChqID09IC0xKQoJCQkJaiA9IGk7CgkJfQoJfQoKCWlmIChqID09IC0xKSB7CgkJc25kX3By aW50ayAoS0VSTl9FUlIgIm5vIGF2YWlsYWJsZSBVU0IgYXVkaW8gZGV2aWNlXG4iKTsKCQlyZXR1 cm4gLUVOT0RFVjsKCX0KCglyZXR1cm4gc25kX2xpbmU2X3RwX3V4MV9jcmVhdGUgKGRldiwgaik7 Cn0KCi8qCiAqIGluaXRzIHRoZSBzb3VuZGNhcmQgYW5kIHRoZSBkcml2ZXJzJyBoYW5kbGVzCiAq CiAqIFRPRE86IGFkZCBjYXB0dXJlIHZvbHVtZQogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBf dXgxX2NyZWF0ZSAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGlkeCkKewoJc25kX2NhcmRf dCogY2FyZDsKCWludCBpOwoKCWNoaXBbaWR4XSA9IGt6YWxsb2MgKHNpemVvZiAoc3RydWN0IHNu ZF9saW5lNl90cF91eDEpLCBHRlBfS0VSTkVMKTsKCgkvKiBjcmVhdGUgYSBjYXJkIGluc3RhbmNl ICovCglpZiAoIShjaGlwW2lkeF0tPmNhcmQgPSBzbmRfY2FyZF9uZXcgKGluZGV4W2lkeF0sIGlk W2lkeF0sIFRISVNfTU9EVUxFLAoJICAgIHNpemVvZiAoc3RydWN0IHNuZF9saW5lNl90cF91eDEq KSkpKSB7CgkJc25kX3ByaW50ayAoS0VSTl9FUlIgImNhbm5vdCBjcmVhdGUgY2FyZCBpbnN0YW5j ZSAlZFxuIiwgaWR4KTsKCQlrZnJlZSAoY2hpcFtpZHhdKTsKCQljaGlwW2lkeF0gPSBOVUxMOwoJ CXJldHVybiAtRU5PTUVNOwoJfQoKCWNhcmQgPSBjaGlwW2lkeF0tPmNhcmQ7CgljYXJkLT5wcml2 YXRlX2RhdGEgPSBjaGlwW2lkeF07CgoJLyogc2V0IHRoZSBkcml2ZXIgSUQgYW5kIG5hbWUgc3Ry aW5ncyAqLwoJc3RybGNhdCAoY2FyZC0+ZHJpdmVyLCAiTGluZTYtVFAtVVgxIiwgc2l6ZW9mIChj YXJkLT5kcml2ZXIpKTsKCXN0cmxjYXQgKGNhcmQtPnNob3J0bmFtZSwgIkxpbmU2IFRvbmVQb3J0 IFVYMSBVU0IiLAoJICAgICAgICAgc2l6ZW9mIChjYXJkLT5zaG9ydG5hbWUpKTsKCWkgPSBzdHJs Y2F0IChjYXJkLT5sb25nbmFtZSwgIkxpbmU2IFRvbmVQb3J0IFVYMSBVU0IgYXQgIiwKCSAgICAg ICAgICAgICBzaXplb2YgKGNhcmQtPmxvbmduYW1lKSk7CglpZiAoaSA8IHNpemVvZiAoY2FyZC0+ bG9uZ25hbWUpKSB7CgkJdXNiX21ha2VfcGF0aCAoZGV2LCBjYXJkLT5sb25nbmFtZSArIGksCgkJ ICAgICAgICAgICAgICAgc2l6ZW9mIChjYXJkLT5sb25nbmFtZSkgLSBpKTsKICAgICAgICB9Cglp ZiAoZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURfRlVMTCkgewoJCXN0cmxjYXQgKGNhcmQtPmxvbmdu YW1lLCAiLCBmdWxsIHNwZWVkIiwKCQkgICAgICAgICBzaXplb2YgKGNhcmQtPmxvbmduYW1lKSk7 Cgl9IGVsc2UgewoJCXN0cmxjYXQgKGNhcmQtPmxvbmduYW1lLCAiLCB1bmtub3duIHNwZWVkIiwK CQkgICAgICAgICBzaXplb2YgKGNhcmQtPmxvbmduYW1lKSk7Cgl9CgoJLyogaW5pdCBVU0IgbWVz c2FnZXMgKi8KCWlmICgoaSA9IHNuZF9saW5lNl90cF91eDFfaW5pdF9tc2dzIChkZXYpKSkgewoJ CXNuZF9wcmludGsgKEtFUk5fRVJSICJmYWlsZWQgdG8gc2VuZCBpbml0IG1lc3NhZ2VzIHRvIHRo ZSAiCgkJICAgICAgICAgICAgInNvdW5kIGNhcmRcbiIpOwoJCXNuZF9jYXJkX2ZyZWVfaW5fdGhy ZWFkIChjYXJkKTsKCQlrZnJlZSAoY2hpcFtpZHhdKTsKCQljaGlwW2lkeF0gPSBOVUxMOwoJCXJl dHVybiBpOwoJfQoKCS8qIGNyZWF0ZSBjb21wb25lbnRzLCBzdWNoIGFzIG1peGVyLCBNSURJLCBl dGMuICovCglpZiAoKGkgPSBzbmRfZGV2aWNlX25ldyAoY2FyZCwgU05EUlZfREVWX0xPV0xFVkVM LCBjaGlwW2lkeF0sCgkgICAgICAgICAgICAgICAgICAgICAgICAgJnNuZF9saW5lNl90cF91eDFf b3BzKSkpIHsKCQlzbmRfcHJpbnRrIChLRVJOX0VSUiAiY291bGQgbm90IGNyZWF0ZSBhIGRldmlj ZSBoYW5kbGVyIGZvciAiCgkJICAgICAgICAgICAgInRoZSBjYXJkXG4iKTsKCQlzbmRfY2FyZF9m cmVlX2luX3RocmVhZCAoY2FyZCk7CgkJa2ZyZWUgKGNoaXBbaWR4XSk7CgkJY2hpcFtpZHhdID0g TlVMTDsKCQlyZXR1cm4gaTsKICAgICAgICB9CiAgICAgICAgaWYgKChpID0gc25kX2xpbmU2X3Rw X3V4MV9uZXdfcGNtIChjaGlwW2lkeF0pKSkgewoJCXNuZF9wcmludGsgKEtFUk5fRVJSICJjb3Vs ZCBub3QgY3JlYXRlIGEgcGNtIHN0cmVhbSBmb3IgdGhlICIKCQkgICAgICAgICAgICAiY2FyZFxu Iik7CiAgICAgICAgfSBlbHNlIHsKCQlpZiAoKGkgPSBzbmRfY3RsX2FkZCAoY2FyZCwgc25kX2N0 bF9uZXcxICgKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzbmRfbGluZTZfdHBf dXgxX3BsYXliYWNrX3ZvbCwKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaXBb aWR4XSkpKSA8IDApIHsKCQkJc25kX3ByaW50ayAoS0VSTl9FUlIgImNvdWxkIG5vdCBhZGQgdGhl IG1hc3RlciBwbGF5YmFjayAiCgkJCSAgICAgICAgICAgICJ2b2x1bWUgY29udHJvbCB0byB0aGUg Y2FyZFxuIik7CgkJfQoJfQoKCS8qIHJlZ2lzdGVyIHRoZSBjYXJkIGluc3RhbmNlICovCglpZiAo KGkgPSBzbmRfY2FyZF9yZWdpc3RlciAoY2FyZCkpKSB7CgkJc25kX3ByaW50ayAoS0VSTl9FUlIg ImNvdWxkIG5vdCByZWdpc3RlciB0aGUgY2FyZCdzICIKCQkgICAgICAgICAgICAiaW5zdGFuY2Uh XG4iKTsKCQlzbmRfY2FyZF9mcmVlX2luX3RocmVhZCAoY2FyZCk7CgkJa2ZyZWUgKGNoaXBbaWR4 XSk7CgkJY2hpcFtpZHhdID0gTlVMTDsKCQlyZXR1cm4gaTsKCX0KCgkvKiBzZXQgc29tZSBvdGhl ciBkYXRhICovCgljaGlwW2lkeF0tPmluZGV4ID0gaWR4OwoJY2hpcFtpZHhdLT5kZXYgPSBkZXY7 CgljaGlwW2lkeF0tPmFsdHNldHRpbmcgPSAwOwoJY2hpcFtpZHhdLT5wbGF5YmFja19sdm9sID0g TElORTZfVFBfVVgxX1ZPTF9NQVg7CgljaGlwW2lkeF0tPnBsYXliYWNrX3J2b2wgPSBMSU5FNl9U UF9VWDFfVk9MX01BWDsKCWNoaXBbaWR4XS0+cGVuZGluZ19wbGF5YmFja191cmJzID0gTlVMTDsK CglyZXR1cm4gMDsKfQoKLyoKICogc2VuZHMgdmVuZG9yIHNwZWNpZmljIGluaXQgbWVzc2FnZXMg dG8gdGhlIGNhcmQKICovCnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9pbml0X21zZ3MgKHN0 cnVjdCB1c2JfZGV2aWNlKiBkZXYpCnsKCXVuc2lnbmVkIGNoYXIgbXNnMVtdID0gTElORTZfVFBf VVgxX01TR18xOwoJdW5zaWduZWQgY2hhciBtc2cyW10gPSBMSU5FNl9UUF9VWDFfTVNHXzI7Cgl1 bnNpZ25lZCBjaGFyIG1zZzNbXSA9IExJTkU2X1RQX1VYMV9NU0dfMzsKCXVuc2lnbmVkIGNoYXIg bXNnNFtdID0gTElORTZfVFBfVVgxX01TR180OwoJaW50IGk7CgoJaWYgKChpID0gc25kX2xpbmU2 X3RwX3V4MV9zdWJtaXRfY29udHJvbF90cmFuc2ZlciAoZGV2LCBtc2cxKSkpCgkJcmV0dXJuIGk7 CgoJaWYgKChpID0gc25kX2xpbmU2X3RwX3V4MV9zdWJtaXRfY29udHJvbF90cmFuc2ZlciAoZGV2 LCBtc2cyKSkpCgkJcmV0dXJuIGk7CgoJaWYgKChpID0gc25kX2xpbmU2X3RwX3V4MV9zdWJtaXRf Y29udHJvbF90cmFuc2ZlciAoZGV2LCBtc2czKSkpCgkJcmV0dXJuIGk7CgoJcmV0dXJuIHNuZF9s aW5lNl90cF91eDFfc3VibWl0X2NvbnRyb2xfdHJhbnNmZXIgKGRldiwgbXNnNCk7Cn0KCi8qCiAq IGNyZWF0ZXMgYSBwY20gc3RyZWFtIGZvciB0aGUgZGV2aWNlCiAqCiAqIFRPRE86IGFkZCBjYXB0 dXJlCiAqLwpzdGF0aWMgaW50IHNuZF9saW5lNl90cF91eDFfbmV3X3BjbSAoc3RydWN0IHNuZF9s aW5lNl90cF91eDEgKmNoaXApCnsKCXNuZF9wY21fdCAqcGNtOwoJaW50IGVycjsKCglpZiAoKGVy ciA9IHNuZF9wY21fbmV3IChjaGlwLT5jYXJkLCAiTGluZTYgVG9uZVBvcnQgVVgxIiwgMCwgMSwg MCwKCSAgICAgICAgICAgICAgICAgICAgICAgICZwY20pKSA8IDApCgkJcmV0dXJuIGVycjsKCglw Y20tPnByaXZhdGVfZGF0YSA9IGNoaXA7CglzdHJjcHkgKHBjbS0+bmFtZSwgIkxpbmU2IFRvbmVQ b3J0IFVYMSIpOwoJY2hpcC0+cGNtID0gcGNtOwoKCXNuZF9wY21fc2V0X29wcyAocGNtLCBTTkRS Vl9QQ01fU1RSRUFNX1BMQVlCQUNLLAoJICAgICAgICAgICAgICAgICAmc25kX2xpbmU2X3RwX3V4 MV9wbGF5YmFja19vcHMpOwoKCXNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwg KHBjbSwgU05EUlZfRE1BX1RZUEVfREVWLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hpcC0+ZGV2LCA2NCoxMDI0LCA2NCoxMDI0KTsKCiAgICAgICAgcmV0dXJuIDA7 Cn0KCi8qCiAqIGhhbmRsZXMgdGhlIGNhcmQncyBkaXNjb25uZWN0aW9uCiAqLwpzdGF0aWMgdm9p ZCBzbmRfbGluZTZfdHBfdXgxX2Rpc2Nvbm5lY3QgKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRm KQp7CglpbnQgaTsKCgkvKiBmaW5kIHRoZSBjYXJkICovCglmb3IgKGkgPSAwOyBpIDwgU05EUlZf Q0FSRFM7IGkrKykgewoJCWlmIChjaGlwW2ldKSB7CgkJCS8qIGNvdWxkbid0IGRvIHRoaXMgY2hl Y2sgYmVmb3JlIGFnYWluICovCgkJCWlmIChjaGlwW2ldLT5kZXYgPT0gaW50ZXJmYWNlX3RvX3Vz YmRldihpbnRmKSkKCQkJCWJyZWFrOwoJCX0KCX0KCglpZiAoaSAhPSBTTkRSVl9DQVJEUykKCQlz bmRfbGluZTZfdHBfdXgxX2ZyZWUgKGNoaXBbaV0pOwp9CgovKgogKiBmYWtlIGNvbXBvbmVudCBk ZXN0cnVjdG9yCiAqLwpzdGF0aWMgaW50IHNuZF9saW5lNl90cF91eDFfZGV2X2ZyZWUgKHNuZF9k ZXZpY2VfdCAqZGV2aWNlKQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCi8qCiAqIGNoaXAtc3BlY2lm aWMgZGVzdHJ1Y3RvcgogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX2ZyZWUgKHN0cnVj dCBzbmRfbGluZTZfdHBfdXgxICpjaGlwX3B0cikKewoJaW50IGk7CgoJaWYgKCEoaSA9IHNuZF9j YXJkX2ZyZWVfaW5fdGhyZWFkIChjaGlwX3B0ci0+Y2FyZCkpKSB7CgkJY2hpcFtjaGlwX3B0ci0+ aW5kZXhdID0gTlVMTDsKCQlrZnJlZSAoY2hpcF9wdHIpOwoJfQoKCXJldHVybiBpOwp9CgovKgog KiBzdWJtaXRzIGFuIFVTQiBjb250cm9sIHRyYW5zZmVyIHRvIHRoZSBjYXJkIHdpdGggcGFja2V0 IGFzIHNldHVwX3BhY2tldAogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX3N1Ym1pdF9j b250cm9sX3RyYW5zZmVyIChzdHJ1Y3QgdXNiX2RldmljZSogZGV2LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHBhY2tl dCkKewoJc3RydWN0IHVyYiogdXJiOwoJc3RydWN0IGNvbXBsZXRpb24gZG9uZTsKCWludCBpOwoK CXVyYiA9IHVzYl9hbGxvY191cmIgKDAsIEdGUF9LRVJORUwpOwoJaW5pdF9jb21wbGV0aW9uICgm ZG9uZSk7Cgl1c2JfZmlsbF9jb250cm9sX3VyYiAodXJiLCBkZXYsIHVzYl9zbmRjdHJscGlwZSAo ZGV2LCAwKSwgcGFja2V0LCBOVUxMLAoJICAgICAgICAgICAgICAgICAgICAgIDAsIHNuZF9saW5l Nl90cF91eDFfY29tcGxldGVfY29udHJvbF90cmFuc2ZlciwKCSAgICAgICAgICAgICAgICAgICAg ICAmZG9uZSk7CglpID0gdXNiX3N1Ym1pdF91cmIgKHVyYiwgR0ZQX0tFUk5FTCk7Cgl3YWl0X2Zv cl9jb21wbGV0aW9uICgmZG9uZSk7CgoJcmV0dXJuIGk7Cn0KCi8qCiAqIGNvbnRyb2wgdHJhbnNm ZXJzJyBjb21wbGV0aXRpb24gY2FsbGJhY2sKICoKICogVE9ETzogd3JpdGUgc29tZSBlcnJvciBo YW5kbGluZwogKi8Kc3RhdGljIHZvaWQgc25kX2xpbmU2X3RwX3V4MV9jb21wbGV0ZV9jb250cm9s X3RyYW5zZmVyIChzdHJ1Y3QgdXJiKiB1cmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHB0X3JlZ3MqIHJlZ3MpCnsKCWlmICgh dXJiLT5zdGF0dXMpIHsKCQl1c2JfZnJlZV91cmIgKHVyYik7Cgl9CgoJY29tcGxldGUgKHVyYi0+ Y29udGV4dCk7Cn0KCi8qCiAqIHBsYXliYWNrIHRyYW5zZmVycycgY29tcGxldGl0aW9uIGNhbGxi YWNrCiAqCiAqIFRPRE86IGVycm9yIGNoZWNraW5nPwogKi8Kc3RhdGljIHZvaWQgc25kX2xpbmU2 X3RwX3V4MV9jb21wbGV0ZV9wbGF5YmFja190cmFuc2ZlciAoc3RydWN0IHVyYiogdXJiLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgcHRfcmVncyogcmVncykKewoJc3RydWN0IHVyYl9saXN0KiogcGVuZF91cmJzID0gJihjaGlw WyooKGludCopKHVyYi0+Y29udGV4dCkpXS0+CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX3BsYXliYWNrX3VyYnMpOwoJc3RydWN0IHVyYl9s aXN0ICp0bXA7CgoJaWYgKCgqcGVuZF91cmJzKS0+bmV4dCkgewoJCXRtcCA9ICpwZW5kX3VyYnM7 CgkJKnBlbmRfdXJicyA9ICgqcGVuZF91cmJzKS0+bmV4dDsKCQlrZnJlZSAodG1wKTsKCX0gZWxz ZSB7CgkJa2ZyZWUgKCpwZW5kX3VyYnMpOwoJCSpwZW5kX3VyYnMgPSBOVUxMOwoJfQoKCWtmcmVl ICh1cmItPnRyYW5zZmVyX2J1ZmZlcik7Cgl1c2JfZnJlZV91cmIgKHVyYik7Cn0KCi8qCiAqIHNl dHMgaHcgcnVsZXMgZm9yIHBsYXliYWNrIGF0IGRpZmZlcmVudCByYXRlcwogKi8Kc3RhdGljIGlu dCBzbmRfbGluZTZfdHBfdXgxX2h3X3BlcmlvZF9ieV9yYXRlIChzbmRfcGNtX2h3X3BhcmFtc190 ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c25kX3BjbV9od19ydWxlX3QgKnJ1bGUpCnsKCXNuZF9pbnRlcnZhbF90ICpwID0gaHdfcGFyYW1f aW50ZXJ2YWwgKHBhcmFtcywKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfU0laRSk7CglzbmRfaW50ZXJ2YWxfdCAqciA9IGh3 X3BhcmFtX2ludGVydmFsIChwYXJhbXMsCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSk7CglzbmRfaW50ZXJ2YWxfdCAqYnMgPSBo d19wYXJhbV9pbnRlcnZhbCAocGFyYW1zLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFKTsKCXNuZF9pbnRlcnZhbF90 ICpiYiA9IGh3X3BhcmFtX2ludGVydmFsIChwYXJhbXMsCgkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfQllURVMpOwoJc25kX2lu dGVydmFsX3QgcF9zaXplOwoJc25kX2ludGVydmFsX3QgYl9zaXplOwoJaW50IGksIGo7CgoJc25k X2ludGVydmFsX2FueSAoJnBfc2l6ZSk7CglzbmRfaW50ZXJ2YWxfYW55ICgmYl9zaXplKTsKCWlm IChyLT5tYXggPT0gNDgwMDApIHsKCQlwcmludGsgKCJhXG4iKTsKCQlwX3NpemUubWluID0gcF9z aXplLm1heCA9IDQ4ICogMjsKCQliX3NpemUubWluID0gNDggKiAyOwoJCWJfc2l6ZS5tYXggPSA0 OCAqIDIgKiAxMDI0OwoJCWkgPSBzbmRfaW50ZXJ2YWxfcmVmaW5lIChicywgJmJfc2l6ZSk7CgkJ aiA9IHNuZF9pbnRlcnZhbF9yZWZpbmUgKHAsICZwX3NpemUpOwoJCXByaW50ayAoIiVkICVkICVk ICVkICVkICVkICVkICVkXG4iLCBpLCBqLCBicy0+bWluLCBicy0+bWF4LCBiYi0+bWluLCBiYi0+ bWF4LCBwLT5taW4sIHAtPm1heCk7CgkJcmV0dXJuIGo7Cgl9IGVsc2UgaWYgKHItPm1heCA9PSA0 NDEwMCkgewoJCXByaW50ayAoImJcbiIpOwoJCXBfc2l6ZS5taW4gPSBwX3NpemUubWF4ID0gNDUg KiAyOwoJCWJfc2l6ZS5taW4gPSA0NSAqIDI7CgkJYl9zaXplLm1heCA9IDQ1ICogMiAqIDEwMjQ7 CgkJcHJpbnRrICgiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWRcbiIsIGksIGosIGJzLT5taW4sIGJz LT5tYXgsIGJiLT5taW4sIGJiLT5tYXgsIHAtPm1pbiwgcC0+bWF4KTsKCQlpID0gc25kX2ludGVy dmFsX3JlZmluZSAoYnMsICZiX3NpemUpOwoJCWogPSBzbmRfaW50ZXJ2YWxfcmVmaW5lIChwLCAm cF9zaXplKTsKCQlwcmludGsgKCIlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZFxuIiwgaSwgaiwgYnMt Pm1pbiwgYnMtPm1heCwgYmItPm1pbiwgYmItPm1heCwgcC0+bWluLCBwLT5tYXgpOwoJCXJldHVy biBqOwoJfQoKCXJldHVybiAwOwp9CgovKgogKiBzZXRzIHRoZSBod19wYXJhbXMgZm9yIGEgcGxh eWJhY2sgc3RyZWFtCiAqLwpzdGF0aWMgaW50IHNuZF9saW5lNl90cF91eDFfcGxheWJhY2tfb3Bl biAoc25kX3BjbV9zdWJzdHJlYW1fdCAqc3Vic3RyZWFtKQp7CglzdHJ1Y3Qgc25kX2xpbmU2X3Rw X3V4MSAqY2hpcCA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAgKHN1YnN0cmVhbSk7CglzbmRfcGNt X3J1bnRpbWVfdCAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKCWludCBlcnI7CgoJaWYg KChlcnIgPSBzbmRfcGNtX2h3X3J1bGVfYWRkIChydW50aW1lLCAwLCBTTkRSVl9QQ01fSFdfUEFS QU1fUkFURSwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kX2xpbmU2X3RwX3V4 MV9od19wZXJpb2RfYnlfcmF0ZSwgMCwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9TSVpFLCAtMSkpKQoJCXJldHVybiBlcnI7CgoJcnVu dGltZS0+aHcgPSBzbmRfbGluZTZfdHBfdXgxX3BsYXliYWNrX2h3OwoKCXJldHVybiAwOwp9Cgov KgogKiByZXNldHMgdGhlIGRldmljZSB0byB0aGUgIm5vcm1hbCIgKG5vbi10cmFuc2ZlcikgbW9k ZQogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX3BsYXliYWNrX2Nsb3NlIChzbmRfcGNt X3N1YnN0cmVhbV90ICpzdWJzdHJlYW0pCnsKCXJldHVybiAwOwp9CgovKgogKiBod19wYXJhbXMg Y2FsbGJhY2sKICoKICogVE9ETzogY2FwdHVyZQogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBf dXgxX3BjbV9od19wYXJhbXMgKHNuZF9wY21fc3Vic3RyZWFtX3QgKnN1YnN0cmVhbSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZF9wY21faHdfcGFyYW1zX3Qg Kmh3X3BhcmFtcykKewoJc3RydWN0IHNuZF9saW5lNl90cF91eDEgKmNoaXAgPSBzbmRfcGNtX3N1 YnN0cmVhbV9jaGlwIChzdWJzdHJlYW0pOwoJdW5zaWduZWQgY2hhciBtc2dbXSA9IExJTkU2X1RQ X1VYMV9NU0dfMzsKCWludCBlcnIsIGVycjI7CgoJY2hpcC0+cGxheWJhY2tfcG9zID0gMDsKCglp ZiAoY2hpcC0+YWx0c2V0dGluZykKCQlyZXR1cm4gc25kX3BjbV9saWJfbWFsbG9jX3BhZ2VzIChz dWJzdHJlYW0sCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zX2J1ZmZlcl9i eXRlcyAoaHdfcGFyYW1zKSk7CgoJc3dpdGNoIChwYXJhbXNfcmF0ZSAoaHdfcGFyYW1zKSkgewoJ Y2FzZSA0ODAwMDoKCQlpZiAocGFyYW1zX2Zvcm1hdCAoaHdfcGFyYW1zKSA9PSBTTkRSVl9QQ01f Rk1UQklUX1MxNl9MRSkgewoJCQljaGlwLT5hbHRzZXR0aW5nID0gTElORTZfVFBfVVgxXzQ4MDAw XzE2X0FMVFNFVFRJTkc7CgkJfSBlbHNlIHsKCQkJY2hpcC0+YWx0c2V0dGluZyA9IExJTkU2X1RQ X1VYMV80ODAwMF8yNF9BTFRTRVRUSU5HOwoJCX0KCQlicmVhazsKCWNhc2UgNDQxMDA6CgkJaWYg KHBhcmFtc19mb3JtYXQgKGh3X3BhcmFtcykgPT0gU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUpIHsK CQkJY2hpcC0+YWx0c2V0dGluZyA9IExJTkU2X1RQX1VYMV80NDEwMF8xNl9BTFRTRVRUSU5HOwoJ CX0gZWxzZSB7CgkJCWNoaXAtPmFsdHNldHRpbmcgPSBMSU5FNl9UUF9VWDFfNDQxMDBfMjRfQUxU U0VUVElORzsKCQl9CgkJYnJlYWs7CglkZWZhdWx0OgoJCWNoaXAtPmFsdHNldHRpbmcgPSBMSU5F Nl9UUF9VWDFfNDgwMDBfMjRfQUxUU0VUVElORzsKCQlicmVhazsKCX0KCglwcmludGsgKCIlZFxu IiwgcGFyYW1zX3BlcmlvZF9zaXplKGh3X3BhcmFtcykpOwoKCWlmICgoZXJyID0gdXNiX3NldF9p bnRlcmZhY2UgKGNoaXAtPmRldiwgMCwgY2hpcC0+YWx0c2V0dGluZykpIDwgMCkgewoJCWNoaXAt PmFsdHNldHRpbmcgPSAwOwoJCXJldHVybiBlcnI7Cgl9CgoJaWYgKChlcnIgPSBzbmRfbGluZTZf dHBfdXgxX3N1Ym1pdF9jb250cm9sX3RyYW5zZmVyIChjaGlwLT5kZXYsIG1zZykpIDwKCSAgICAw KSB7CgkJY2hpcC0+YWx0c2V0dGluZyA9IDA7CgkJaWYgKChlcnIyID0gdXNiX3NldF9pbnRlcmZh Y2UgKGNoaXAtPmRldiwgMCwgMCkpIDwgMCkKCQkJcmV0dXJuIGVycjI7CgoJCXJldHVybiBlcnI7 Cgl9CgoJcmV0dXJuIHNuZF9wY21fbGliX21hbGxvY19wYWdlcyAoc3Vic3RyZWFtLAoJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zX2J1ZmZlcl9ieXRlcyAoaHdfcGFyYW1z KSk7Cn0KCi8qCiAqIGh3X2ZyZWUgY2FsbGJhY2sKICoKICogVE9ETzogdW5zZXQgcGxheWJhY2sv Y2FwdHVyZS9ib3RoIG1vZGVzIGFuZCByZWxhdGl2ZSBwYXJhbWV0ZXJzCiAqLwpzdGF0aWMgaW50 IHNuZF9saW5lNl90cF91eDFfcGNtX2h3X2ZyZWUgKHNuZF9wY21fc3Vic3RyZWFtX3QgKnN1YnN0 cmVhbSkKewoJc3RydWN0IHNuZF9saW5lNl90cF91eDEgKmNoaXAgPSBzbmRfcGNtX3N1YnN0cmVh bV9jaGlwIChzdWJzdHJlYW0pOwoJc3RydWN0IHVyYl9saXN0ICpsaXN0OwoJaW50IGVycjsKCglp ZiAoKGxpc3QgPSBjaGlwLT5wZW5kaW5nX3BsYXliYWNrX3VyYnMpKSB7CgkJZG8gewoJCQl1c2Jf dW5saW5rX3VyYiAobGlzdC0+dXJiKTsJCQkKCQl9IHdoaWxlICgobGlzdCA9IGxpc3QtPm5leHQp KTsKCX0KCgljaGlwLT5hbHRzZXR0aW5nID0gMDsKCglpZiAoKGVyciA9IHVzYl9zZXRfaW50ZXJm YWNlIChjaGlwLT5kZXYsIDAgLDApKSA8IDApCgkJcmV0dXJuIGVycjsKCglyZXR1cm4gc25kX3Bj bV9saWJfZnJlZV9wYWdlcyAoc3Vic3RyZWFtKTsKfQoKLyoKICogcHJlcGFyZSBjYWxsYmFjawog KgogKiBUT0RPOiB3cml0ZSBpdAogKi8Kc3RhdGljIGludCBzbmRfbGluZTZfdHBfdXgxX3BjbV9w cmVwYXJlIChzbmRfcGNtX3N1YnN0cmVhbV90ICpzdWJzdHJlYW0pCnsKCS8qIHN0cnVjdCBzbmRf bGluZTZfdHBfdXgxICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcCAoc3Vic3RyZWFtKTsK CXNuZF9wY21fcnVudGltZV90ICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOyAqLwoKCS8q IHNldCB1cCB0aGUgaGFyZHdhcmUgd2l0aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIChzYW1w bGUgZm9ybWF0LAoJICAgc2FtcGxlIHJhdGUsIGV0Yy4pICovCgoJcmV0dXJuIDA7Cn0KCi8qCiAq IHRyaWdnZXIgY2FsbGJhY2sKICoKICogVE9ETzogd3JpdGUgaXQKICovCnN0YXRpYyBpbnQgc25k X2xpbmU2X3RwX3V4MV9wY21fdHJpZ2dlciAoc25kX3BjbV9zdWJzdHJlYW1fdCAqc3Vic3RyZWFt LCBpbnQgY21kKQp7Cglzd2l0Y2ggKGNtZCkgewoJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVEFS VDoKCQlwcmludGsgKCJ0cmlnZ2VyIHN0YXJ0XG4iKTsKCQlicmVhazsKCWNhc2UgU05EUlZfUENN X1RSSUdHRVJfU1RPUDoKCQlwcmludGsgKCJ0cmlnZ2VyIHN0b3BcbiIpOwoJCWJyZWFrOwoJZGVm YXVsdDoKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCglyZXR1cm4gMDsKfQoKLyoKICogcG9pbnRlciBj YWxsYmFjawogKgogKiByZXR1cm5zIHRoZSBwb3NpdGlvbiBpbiBmcmFtZXMgb2YgdGhlIGJ1ZmZl ciBhY3R1YWxseSBzZW50L3JlY2VpdmVkCiAqCiAqIFRPRE86IGNhcHR1cmUKICovCnN0YXRpYyBz bmRfcGNtX3VmcmFtZXNfdCBzbmRfbGluZTZfdHBfdXgxX3BjbV9wb2ludGVyICgKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfcGNtX3N1YnN0cmVhbV90 KiBzdWJzdHJlYW0pCnsKCXN0cnVjdCBzbmRfbGluZTZfdHBfdXgxICpjaGlwID0gc25kX3BjbV9z dWJzdHJlYW1fY2hpcCAoc3Vic3RyZWFtKTsKCglyZXR1cm4gY2hpcC0+cGxheWJhY2tfcG9zOwp9 CgovKgogKiBkb2VzIHRoZSBwbGF5YmFjawogKgogKiBUT0RPOiBoYW5kbGUgZGlmZmVyZW50IGZv cm1hdHMsIGV0Yy4KICovCnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9wbGF5YmFja19jb3B5 IChzbmRfcGNtX3N1YnN0cmVhbV90ICpzdWJzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbCwgc25kX3BjbV91ZnJhbWVzX3QgcG9zLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLCBzbmRf cGNtX3VmcmFtZXNfdCBjb3VudCkKewoJc3RydWN0IHNuZF9saW5lNl90cF91eDEgKmNoaXAgPSBz bmRfcGNtX3N1YnN0cmVhbV9jaGlwIChzdWJzdHJlYW0pOwoJZmxvYXQgbm9ybV9sdm9sID0gKGZs b2F0KSBjaGlwLT5wbGF5YmFja19sdm9sIC8KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmbG9hdCkgTElORTZfVFBfVVgxX1ZPTF9NQVg7CiAgICAgICAgZmxvYXQg bm9ybV9ydm9sID0gKGZsb2F0KSBjaGlwLT5wbGF5YmFja19ydm9sIC8KCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgTElORTZfVFBfVVgxX1ZPTF9NQVg7 CglzdHJ1Y3QgdXJiKiB1cmI7Cgl1OCogZGF0YSA9IHNyYzsKCXU4KiBidWY7CglpbnQgdmFsOwoJ aW50IGkgPSAwOwoKCXVyYiA9IHVzYl9hbGxvY191cmIgKDIsIEdGUF9BVE9NSUMpOwoKCWlmICgh Y2hpcC0+cGVuZGluZ19wbGF5YmFja191cmJzKSB7CgkJY2hpcC0+bGFzdF9wZW5kaW5nX3BsYXli YWNrX3VyYiA9IGNoaXAtPnBlbmRpbmdfcGxheWJhY2tfdXJicyA9CgkJICAgICAgICAgICAgICAg IGttYWxsb2MgKHNpemVvZiAoc3RydWN0IHVyYl9saXN0KSwgR0ZQX0FUT01JQyk7CgkJY2hpcC0+ cGVuZGluZ19wbGF5YmFja191cmJzLT51cmIgPSB1cmI7CgkJY2hpcC0+cGVuZGluZ19wbGF5YmFj a191cmJzLT5uZXh0ID0gTlVMTDsKCX0gZWxzZSB7CgkJY2hpcC0+bGFzdF9wZW5kaW5nX3BsYXli YWNrX3VyYiA9CgkJY2hpcC0+bGFzdF9wZW5kaW5nX3BsYXliYWNrX3VyYi0+bmV4dCA9CgkJICAg ICAgICAgICAgICAgIGttYWxsb2MgKHNpemVvZiAoc3RydWN0IHVyYl9saXN0KSwgR0ZQX0FUT01J Qyk7CgkJY2hpcC0+bGFzdF9wZW5kaW5nX3BsYXliYWNrX3VyYi0+dXJiID0gdXJiOwoJCWNoaXAt Pmxhc3RfcGVuZGluZ19wbGF5YmFja191cmItPm5leHQgPSBOVUxMOwoJfQoKCXVyYi0+ZGV2ID0g Y2hpcC0+ZGV2OwoJdXJiLT5waXBlID0gdXNiX3NuZGlzb2NwaXBlICh1cmItPmRldiwgMSk7Cgl1 cmItPmNvbXBsZXRlID0gc25kX2xpbmU2X3RwX3V4MV9jb21wbGV0ZV9wbGF5YmFja190cmFuc2Zl cjsKCXVyYi0+Y29udGV4dCA9ICZjaGlwLT5pbmRleDsKCWJ1ZiA9IHVyYi0+dHJhbnNmZXJfYnVm ZmVyID0ga21hbGxvYyAoCgkJICAgICAgICBMSU5FNl9UUF9VWDFfNDgwMDBfMjRfUEFDS0VUX1NJ WkVfT1VUICogMiwgR0ZQX0FUT01JQyk7Cgl1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSBM SU5FNl9UUF9VWDFfNDgwMDBfMjRfUEFDS0VUX1NJWkVfT1VUICoKCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDI7Cgl1cmItPnRyYW5zZmVyX2ZsYWdzID0gVVJCX0lTT19BU0FQOwoJdXJi LT5pbnRlcnZhbCA9IDE7Cgl1cmItPm51bWJlcl9vZl9wYWNrZXRzID0gMjsKCXVyYi0+aXNvX2Zy YW1lX2Rlc2NbMF0ub2Zmc2V0ID0gMDsKCXVyYi0+aXNvX2ZyYW1lX2Rlc2NbMF0ubGVuZ3RoID0g dXJiLT5pc29fZnJhbWVfZGVzY1sxXS5vZmZzZXQgPQoJdXJiLT5pc29fZnJhbWVfZGVzY1sxXS5s ZW5ndGggPSBMSU5FNl9UUF9VWDFfNDgwMDBfMjRfUEFDS0VUX1NJWkVfT1VUOwoKCXdoaWxlIChp IDwgTElORTZfVFBfVVgxXzQ4MDAwXzI0X1BBQ0tFVF9TSVpFX09VVCAqIDIpIHsKCQl2YWwgPSBz bmRfbGluZTZfdHBfdXgxX3ZvbHVtaXplXzI0IChkYXRhW2kgKyAyXSwgZGF0YVtpICsgMV0sIGRh dGFbaV0sIG5vcm1fbHZvbCk7CgkJYnVmW2krK10gPSB2YWwgJiAweDAwMDAwMGZmOwoJCWJ1Zltp KytdID0gKHZhbCAmIDB4MDAwMGZmMDApID4+IDg7CgkJYnVmW2krK10gPSAodmFsICYgMHgwMGZm MDAwMCkgPj4gMTY7CgkJdmFsID0gc25kX2xpbmU2X3RwX3V4MV92b2x1bWl6ZV8yNCAoZGF0YVtp ICsgMl0sIGRhdGFbaSArIDFdLCBkYXRhW2ldLCBub3JtX3J2b2wpOwoJCWJ1ZltpKytdID0gdmFs ICYgMHgwMDAwMDBmZjsKCQlidWZbaSsrXSA9ICh2YWwgJiAweDAwMDBmZjAwKSA+PiA4OwoJCWJ1 ZltpKytdID0gKHZhbCAmIDB4MDBmZjAwMDApID4+IDE2OwoJCWNoaXAtPnBsYXliYWNrX3Bvcysr OwoJfQoKCXVzYl9zdWJtaXRfdXJiICh1cmIsIEdGUF9BVE9NSUMpOwoKCXJldHVybiBjb3VudDsK fQoKLyoKICogMjQtYml0ICJ2b2x1bWl6ZXIiIGZ1bmN0aW9uCiAqLwpzdGF0aWMgaW5saW5lIHMz MiBzbmRfbGluZTZfdHBfdXgxX3ZvbHVtaXplXzI0ICh1OCBieXRlMSwgdTggYnl0ZTIsIHU4IGJ5 dGUzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h dCBub3JtX3ZvbCkKewoJczMyIHZhbCA9IChieXRlMSA8PCAxNikgKyAoYnl0ZTIgPDwgOCkgKyBi eXRlMzsKCglpZiAoYnl0ZTEgJiAweDgwKQoJCXZhbCB8PSAweGZmMDAwMDAwOwoKCXJldHVybiAo czMyKSAoKGZsb2F0KSB2YWwgKiBub3JtX3ZvbCk7Cn0KCi8qCiAqIHNldHMgbWFzdGVyIHBsYXli YWNrIHZvbHVtZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgogKi8Kc3RhdGljIGludCBzbmRfbGlu ZTZfdHBfdXgxX3BsYXliYWNrX3ZvbF9pbmZvIChzbmRfa2NvbnRyb2xfdCAqa2NvbnRyb2wsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kX2N0bF9lbGVt X2luZm9fdCAqdWluZm8pCnsKCXVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRF R0VSOwoJdWluZm8tPmNvdW50ID0gMjsKCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IExJTkU2 X1RQX1VYMV9WT0xfTUlOOwoJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gTElORTZfVFBfVVgx X1ZPTF9NQVg7CgoJcmV0dXJuIDA7Cn0KCi8qCiAqIHB1dHMgaW50byB1Y29udHJvbCB0aGUgY3Vy cmVudCB2YWx1ZXMgb2YgcGxheWJhY2sgdm9sdW1lcwogKi8Kc3RhdGljIGludCBzbmRfbGluZTZf dHBfdXgxX3BsYXliYWNrX3ZvbF9nZXQgKHNuZF9rY29udHJvbF90ICprY29udHJvbCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZF9jdGxfZWxlbV92YWx1 ZV90ICp1Y29udHJvbCkKewoJc3RydWN0IHNuZF9saW5lNl90cF91eDEgKmNoaXAgPSBzbmRfa2Nv bnRyb2xfY2hpcCAoa2NvbnRyb2wpOwoKCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBd ID0gY2hpcC0+cGxheWJhY2tfbHZvbDsKCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFd ID0gY2hpcC0+cGxheWJhY2tfcnZvbDsKCglyZXR1cm4gMDsKfQoKLyoKICogc2V0cyB2YWx1ZXMg Zm9yIHBsYXliYWNrIHZvbHVtZXMKICovCnN0YXRpYyBpbnQgc25kX2xpbmU2X3RwX3V4MV9wbGF5 YmFja192b2xfcHV0IChzbmRfa2NvbnRyb2xfdCAqa2NvbnRyb2wsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfY3RsX2VsZW1fdmFsdWVfdCAqdWNvbnRy b2wpCnsKCXN0cnVjdCBzbmRfbGluZTZfdHBfdXgxICpjaGlwID0gc25kX2tjb250cm9sX2NoaXAg KGtjb250cm9sKTsKCWludCBjaGFuZ2VkID0gMDsKCglpZiAoY2hpcC0+cGxheWJhY2tfbHZvbCAh PSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSkgewoJCWNoaXAtPnBsYXliYWNrX2x2 b2wgPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsKCQljaGFuZ2VkID0gMTsKCX0K CWlmIChjaGlwLT5wbGF5YmFja19ydm9sICE9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVl WzFdKSB7CgkJY2hpcC0+cGxheWJhY2tfcnZvbCA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZh bHVlWzFdOwoJCWNoYW5nZWQgPSAxOwoJfQoKCXJldHVybiBjaGFuZ2VkOwp9CgovKiBlbnRyeSBh bmQgZXhpdC1wb2ludHMgb2YgdGhpcyBkcml2ZXIgKi8KCm1vZHVsZV9pbml0IChzbmRfbGluZTZf dHBfdXgxX2RyaXZlcl9pbml0KTsKbW9kdWxlX2V4aXQgKHNuZF9saW5lNl90cF91eDFfZHJpdmVy X2V4aXQpOwo= ------=OPENWEBMAIL_ATT_0.692797807976604 Content-Type: application/octet-stream; name="snd_line6_tp_ux1.h" Content-Transfer-Encoding: base64 LyoKICogICBMaW5lNiBUb25lUG9ydCBVWDEgKGFuZCBtYXliZSBUb25lUG9ydCBVWDIpIFVTQiBk cml2ZXIgZm9yIEFMU0EKICoKICoKICogICBDb3B5cmlnaHQgKGMpIDIwMDYgYnkgU3RlZmFubyBE J0FuZ2VsbyA8ZGFzdGVAb25lb25saW5lLml0PgogKgogKiAgIFNvbWUgY29kZSBib3Jyb3dlZCBm cm9tCiAqICAgICAgICAgIFVTQiBBdWRpbyBEcml2ZXIgZm9yIEFMU0EgYnkgVGFrYXNoaSBJd2Fp IDx0aXdhaUBzdXNlLmRlPgogKiAgICAgICAgICAiV3JpdGluZyBhbiBBTFNBIERyaXZlciIgYnkg VGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgogKiAgICAgICAgICAiTGludXggVVNCIERyaXZl ciBCYXNpY3MiIGF0IGh0dHA6Ly93d3cubGludXh0ZWNoYXJ0aWNsZXMuY29tCiAqICAgYW5kIG1h eWJlLCBjb25zZXF1ZW50bHksIGFsc28gZnJvbSBhdWRpby5jIGJ5CiAqCSAgICBBbGFuIENveCA8 YWxhbkBseG9yZ3VrLnVrdXUub3JnLnVrPgogKgkgICAgVGhvbWFzIFNhaWxlciA8c2FpbGVyQGlm ZS5lZS5ldGh6LmNoPgogKgogKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgogKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCiAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqICAgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTEx LTEzMDcgVVNBCiAqCiAqLwoKI2lmbmRlZiBfX0xJTkU2X1RQX1VYMV9IXwojZGVmaW5lIF9fTElO RTZfVFBfVVgxX0hfCgojZGVmaW5lIExJTkU2X1ZFTkRPUl9JRCAweDBlNDEKI2RlZmluZSBMSU5F Nl9UUF9VWDFfUElEIDB4NDE0MQoKLyogb2JzY3VyZSBjb250cm9sIG1lc3NhZ2VzICovCiNkZWZp bmUgTElORTZfVFBfVVgxX01TR18xIHsweDQwLCAweDY3LCAweDAxLCAweDAyLCAweDAyLCAweDAw LCAweDAwLCAweDAwfQojZGVmaW5lIExJTkU2X1RQX1VYMV9NU0dfMiB7MHgwMCwgMHgwMywgMHgw MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH0KI2RlZmluZSBMSU5FNl9UUF9VWDFfTVNH XzMgezB4NDAsIDB4NjcsIDB4MDEsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9CiNkZWZp bmUgTElORTZfVFBfVVgxX01TR180IHsweDQwLCAweDY3LCAweDAxLCAweDAzLCAweDAwLCAweDAw LCAweDAwLCAweDAwfQoKLyogaW50ZXJuYWwgdm9sdW1lIHJlcHJlc2VudGF0aW9uICovCiNkZWZp bmUgTElORTZfVFBfVVgxX1ZPTF9NSU4gMHgwMDAwCiNkZWZpbmUgTElORTZfVFBfVVgxX1ZPTF9N QVggMHhmZmZmCgovKiA0OCBrSHosIDE2LWJpdHMgKi8KI2RlZmluZSBMSU5FNl9UUF9VWDFfNDgw MDBfMTZfQUxUU0VUVElORyAgICAgICAgMQojZGVmaW5lIExJTkU2X1RQX1VYMV80ODAwMF8xNl9Q QUNLRVRfU0laRV9PVVQgMTkyCiNkZWZpbmUgTElORTZfVFBfVVgxXzQ4MDAwXzE2X1BBQ0tFVF9T SVpFX0lOICAyMDAKCi8qIDQ0LjEga0h6LCAxNi1iaXRzICovCiNkZWZpbmUgTElORTZfVFBfVVgx XzQ0MTAwXzE2X0FMVFNFVFRJTkcgICAgICAgIDIKI2RlZmluZSBMSU5FNl9UUF9VWDFfNDQxMDBf MTZfUEFDS0VUX1NJWkVfT1VUIDE4MAojZGVmaW5lIExJTkU2X1RQX1VYMV80NDEwMF8xNl9QQUNL RVRfU0laRV9JTiAgMTg4CgovKiA0OCBrSHosIDI0LWJpdHMgKi8KI2RlZmluZSBMSU5FNl9UUF9V WDFfNDgwMDBfMjRfQUxUU0VUVElORyAgICAgICAgMwojZGVmaW5lIExJTkU2X1RQX1VYMV80ODAw MF8yNF9QQUNLRVRfU0laRV9PVVQgMjg4CiNkZWZpbmUgTElORTZfVFBfVVgxXzQ4MDAwXzI0X1BB Q0tFVF9TSVpFX0lOICAzMDAKCi8qIDQ0LjEga0h6LCAyNC1iaXRzICovCiNkZWZpbmUgTElORTZf VFBfVVgxXzQ0MTAwXzI0X0FMVFNFVFRJTkcgICAgICAgIDQKI2RlZmluZSBMSU5FNl9UUF9VWDFf NDQxMDBfMjRfUEFDS0VUX1NJWkVfT1VUIDI3MAojZGVmaW5lIExJTkU2X1RQX1VYMV80NDEwMF8y NF9QQUNLRVRfU0laRV9JTiAgMjgyCgojZW5kaWYgIC8qIF9fTElORTZfVFBfVVgxX0hfICovCg== ------=OPENWEBMAIL_ATT_0.692797807976604-- ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642