From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: =?utf-8?q?=5BPATCH=5D_Add_intel=5Fpanel=5Ffitter_tool?= Date: Fri, 3 Feb 2012 13:09:26 -0200 Message-ID: <1328281766-15792-1-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yx0-f177.google.com (mail-yx0-f177.google.com [209.85.213.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 7B05BA1688 for ; Fri, 3 Feb 2012 07:10:42 -0800 (PST) Received: by yenm4 with SMTP id m4so1711586yen.36 for ; Fri, 03 Feb 2012 07:10:42 -0800 (PST) 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 Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CgpUaGUgdG9vbCBh bGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgcGFuZWwgZml0dGVyIHNldHRpbmdzLCBzbyB5b3UgY2Fu CmNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgc2NyZWVuIGJlaW5nIGRpc3BsYXllZCBvbiB5b3VyIG1v bml0b3Igd2l0aG91dApjaGFuZ2luZyB0aGUgcmVhbCBwaXhlbCBzaXplIG9mIHlvdXIgZGVza3Rv cC4gVGhlIGJpZ2dlc3QgdXNlIGNhc2UgZm9yCnRoaXMgdG9vbCBpcyB0byB3b3JrIGFyb3VuZCBv dmVyc2NhbiBkb25lIGJ5IFRWcyBhbmQgc29tZSBtb25pdG9ycyBpbgppbnRlcmxhY2VkIG1vZGUu CgpTaWduZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4K LS0tCiBtYW4vTWFrZWZpbGUuYW0gICAgICAgICAgICB8ICAgIDEgKwogbWFuL2ludGVsX3BhbmVs X2ZpdHRlci5tYW4gfCAgIDUwICsrKysrKysKIHRvb2xzLy5naXRpZ25vcmUgICAgICAgICAgIHwg ICAgMSArCiB0b29scy9NYWtlZmlsZS5hbSAgICAgICAgICB8ICAgIDEgKwogdG9vbHMvaW50ZWxf cGFuZWxfZml0dGVyLmMgfCAgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDM3NCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1hbi9pbnRlbF9wYW5lbF9maXR0ZXIubWFuCiBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMKCmRpZmYgLS1naXQgYS9t YW4vTWFrZWZpbGUuYW0gYi9tYW4vTWFrZWZpbGUuYW0KaW5kZXggMmI1NDE5NS4uMGYxOTdhOSAx MDA2NDQKLS0tIGEvbWFuL01ha2VmaWxlLmFtCisrKyBiL21hbi9NYWtlZmlsZS5hbQpAQCAtNyw2 ICs3LDcgQEAgYXBwbWFuX1BSRSA9IAkJCQlcCiAJaW50ZWxfZ3B1X3RvcC5tYW4JCVwKIAlpbnRl bF9ndHQubWFuCQkJXAogCWludGVsX2xpZC5tYW4JCQlcCisJaW50ZWxfcGFuZWxfZml0dGVyLm1h bgkJXAogCWludGVsX3JlZ19kdW1wZXIubWFuCQlcCiAJaW50ZWxfcmVnX3JlYWQubWFuCQlcCiAJ aW50ZWxfcmVnX3dyaXRlLm1hbgkJXApkaWZmIC0tZ2l0IGEvbWFuL2ludGVsX3BhbmVsX2ZpdHRl ci5tYW4gYi9tYW4vaW50ZWxfcGFuZWxfZml0dGVyLm1hbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi45YTQ2YTJlCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL2ludGVsX3BhbmVs X2ZpdHRlci5tYW4KQEAgLTAsMCArMSw1MCBAQAorLlwiIHNob3J0aGFuZCBmb3IgZG91YmxlIHF1 b3RlIHRoYXQgd29ya3MgZXZlcnl3aGVyZS4KKy5kcyBxIFxOJzM0JworLlRIIGludGVsX3BhbmVs X2ZpdHRlciBfX2FwcG1hbnN1ZmZpeF9fIF9feG9yZ3ZlcnNpb25fXworLlNIIE5BTUUKK2ludGVs X3BhbmVsX2ZpdHRlciBcLSBDaGFuZ2UgdGhlIHBhbmVsIGZpdHRlciBzZXR0aW5ncworLlNIIFNZ Tk9QU0lTCisuQiBpbnRlbF9wYW5lbF9maXR0ZXIgW29wdGlvbnNdCisuU0ggREVTQ1JJUFRJT04K Ky5CIGludGVsX3BhbmVsX2ZpdHRlcgoraXMgYSB0b29sIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFu Z2UgdGhlIHBhbmVsIGZpdHRlciBzZXR0aW5ncywgc28geW91IGNhbiBjaGFuZ2UKK3RoZSBzaXpl IG9mIHRoZSBzY3JlZW4gYmVpbmcgZGlzcGxheWVkIG9uIHlvdXIgbW9uaXRvciB3aXRob3V0IGNo YW5naW5nIHRoZSByZWFsCitwaXhlbCBzaXplIG9mIHlvdXIgZGVza3RvcC4gVGhlIGJpZ2dlc3Qg dXNlIGNhc2UgZm9yIHRoaXMgdG9vbCBpcyB0byB3b3JrIGFyb3VuZAorb3ZlcnNjYW4gZG9uZSBi eSBUVnMgYW5kIHNvbWUgbW9uaXRvcnMgaW4gaW50ZXJsYWNlZCBtb2RlLgorLlNTIE9wdGlvbnMK Ky5UUAorLkIgLXAgW3BpcGVdCitwaXBlIHRvIGJlIHVzZWQgKEEsIEIgb3IgQywgYnV0IEMgaXMg b25seSBwcmVzZW50IG9uIEl2eSBCcmlkZ2UgYW5kIG5ld2VyKS4KKy5UUAorLkIgLXggW3ZhbHVl XQorZmluYWwgc2NyZWVuIHdpZHRoIHNpemUgaW4gcGl4ZWxzIChuZWVkcyAtcCBvcHRpb24pLgor LlRQCisuQiAteSBbdmFsdWVdCitmaW5hbCBzY3JlZW4gaGVpZ2h0IHNpemUgaW4gcGl4ZWxzIChu ZWVkcyAtcCBvcHRpb24pLgorLlRQCisuQiAtZAorZGlzYWJsZSBwYW5lbCBmaXR0ZXIgKG5lZWRz IC1wIG9wdGlvbiwgaWdub3JlcyAteCBhbmQgLXkgb3B0aW9ucykuCisuVFAKKy5CIC1sCitsaXN0 IGN1cnJlbnQgc3RhdGUgb2YgZWFjaCBwaXBlLgorLlRQCisuQiAtaAorcHJpbnRzIHRoZSBoZWxw IG1lc3NhZ2UuCisuU1MKKworLlNIIEVYQU1QTEVTCisuVFAKKy5CIGludGVsX3BhbmVsX2ZpdHRl ciAtbAord2lsbCBsaXN0IHRoZSBjdXJyZW50IHN0YXR1cyBvZiBlYWNoIHBpcGUsIHNvIHlvdSBj YW4gZGVjaWRlIHdoYXQgdG8gZG8uCisuVFAKKy5CIGludGVsX3BhbmVsX2ZpdHRlciAtcCBBIC14 IDE4NTAgLXkgMTA0MAord2lsbCBjaGFuZ2UgdGhlIHBpcGUgQSBzaXplIHRvIDE4NTB4MTA0MCBw aXhlbHMuCisuVFAKKy5CIGludGVsX3BhbmVsX2ZpdHRlciAtcCBBIC1kCit3aWxsIGRpc2FibGUg dGhlIHBhbmVsIGZpdHRlciBmb3IgcGlwZSBBLgorCisuU0ggTk9URVMKK0luIHRoZSBmdXR1cmUs IHRoZXJlIHdpbGwgYmUgc3VwcG9ydCBmb3IgdGhpcyBmZWF0dXJlIGluc2lkZSB0aGUgTGludXgg S2VybmVsLgorCitNYWNoaW5lcyBvbGRlciB0aGFuIElyb25sYWtlIGFyZSBzdGlsbCBub3Qgc3Vw cG9ydGVkLCBidXQgc3VwcG9ydCBtYXkgYmUKK3Bvc3NpYmxlIHRvIGltcGxlbWVudC4KZGlmZiAt LWdpdCBhL3Rvb2xzLy5naXRpZ25vcmUgYi90b29scy8uZ2l0aWdub3JlCmluZGV4IDBiYmRkZTEu LmVjODJiNmQgMTAwNjQ0Ci0tLSBhL3Rvb2xzLy5naXRpZ25vcmUKKysrIGIvdG9vbHMvLmdpdGln bm9yZQpAQCAtMTEsNiArMTEsNyBAQCBpbnRlbF9ncHVfdGltZQogaW50ZWxfZ3B1X3RvcAogaW50 ZWxfZ3R0CiBpbnRlbF9saWQKK2ludGVsX3BhbmVsX2ZpdHRlcgogaW50ZWxfcmVnX2NoZWNrZXIK IGludGVsX3JlZ19kdW1wZXIKIGludGVsX3JlZ19yZWFkCmRpZmYgLS1naXQgYS90b29scy9NYWtl ZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFtCmluZGV4IDdlZTBhNDcuLjk3NDAwYTQgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCisrKyBiL3Rvb2xzL01ha2VmaWxlLmFtCkBAIC04LDYg KzgsNyBAQCBiaW5fUFJPR1JBTVMgPSAJCQkJXAogCWludGVsX2dwdV90b3AgCQkJXAogCWludGVs X2dwdV90aW1lIAkJCVwKIAlpbnRlbF9ndHQgCQkJXAorCWludGVsX3BhbmVsX2ZpdHRlcgkJXAog CWludGVsX3N0ZXBwaW5nIAkJCVwKIAlpbnRlbF9yZWdfY2hlY2tlciAJCVwKIAlpbnRlbF9yZWdf ZHVtcGVyIAkJXApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90b29s cy9pbnRlbF9wYW5lbF9maXR0ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43NmE5MGM5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMK QEAgLTAsMCArMSwzMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxMiBJbnRlbCBDb3Jwb3Jh dGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQor ICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS SVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisg KiBBdXRob3JzOgorICogICAgICBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNv bT4KKyAqLworCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2lu Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+ CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiaW50ZWxfZ3B1X3Rvb2xzLmgiCisKK2lu dCBnZW47CisKK3VpbnQzMl90IEhUT1RBTFtdICAgICA9IHsgMHg2MDAwMCwgMHg2MTAwMCwgMHg2 MjAwMCB9OwordWludDMyX3QgVlRPVEFMW10gICAgID0geyAweDYwMDBDLCAweDYxMDBDLCAweDYy MDBDIH07Cit1aW50MzJfdCBQSVBFQ09ORltdICAgPSB7IDB4NzAwMDgsIDB4NzEwMDgsIDB4NzIw MDggfTsKK3VpbnQzMl90IFBJUEVTUkNbXSAgICA9IHsgMHg2MDAxQywgMHg2MTAxQywgMHg2MjAx QyB9OwordWludDMyX3QgUEZfQ1RSTDFbXSAgID0geyAweDY4MDgwLCAweDY4ODgwLCAweDY5MDgw IH07Cit1aW50MzJfdCBQRl9XSU5fUE9TW10gPSB7IDB4NjgwNzAsIDB4Njg4NzAsIDB4NjkwNzAg fTsKK3VpbnQzMl90IFBGX1dJTl9TWltdICA9IHsgMHg2ODA3NCwgMHg2ODg3NCwgMHg2OTA3NCB9 OworCisjZGVmaW5lIFBJUEVDT05GX0VOQUJMRSAgICAgICAgICgxIDw8IDMxKQorI2RlZmluZSBQ SVBFQ09ORl9JTlRFUkxBQ0VfTUFTSyAoNyA8PCAyMSkKKyNkZWZpbmUgUElQRUNPTkZfUEZfUEQg ICAgICAgICAgKDAgPDwgMjEpCisjZGVmaW5lIFBJUEVDT05GX1BGX0lEICAgICAgICAgICgxIDw8 IDIxKQorI2RlZmluZSBQSVBFQ09ORl9JRl9JRCAgICAgICAgICAoMyA8PCAyMSkKKworI2RlZmlu ZSBIVE9UQUxfQUNUSVZFX01BU0sgKDB4RkZGIDw8IDApCisjZGVmaW5lIFZUT1RBTF9BQ1RJVkVf TUFTSyAoMHhGRkYgPDwgMCkKKworI2RlZmluZSBQSVBFU1JDX0hPUklaX01BU0sgKDB4RkZGIDw8 IDE2KQorI2RlZmluZSBQSVBFU1JDX1ZFUlRfTUFTSyAgKDB4RkZGIDw8IDApCisKKy8qI2RlZmlu ZSBQRl9FTkFCTEUgICAgKDEgPDwgMzEpKi8KKyNkZWZpbmUgUEZfUElQRV9NQVNLICAgKDMgPDwg MjkpCisjZGVmaW5lIFBGX0ZJTFRFUl9NQVNLICgzIDw8IDIzKQorI2RlZmluZSBQRl9GSUxURVJf TUVEICAoMSA8PCAyMykKKyNkZWZpbmUgUEZfUElQRV9BICAgICAgKDAgPDwgMjkpCisjZGVmaW5l IFBGX1BJUEVfQiAgICAgICgxIDw8IDI5KQorI2RlZmluZSBQRl9QSVBFX0MgICAgICAoMiA8PCAy OSkKKworI2RlZmluZSBQRl9XSU5fU1pfWF9NQVNLICgweDFGRkYgPDwgMTYpCisjZGVmaW5lIFBG X1dJTl9TWl9ZX01BU0sgKDB4RkZGIDw8IDApCisKK3N0cnVjdCBwaXBlX2luZm8geworCWJvb2wg ZW5hYmxlZDsKKwlib29sIHBmX2VuYWJsZWQ7CisJdWludDMyX3QgaW50ZXJsYWNlX21vZGU7CisJ dWludDMyX3QgdG90X3dpZHRoOyAgLyogaHRvdGFsICovCisJdWludDMyX3QgdG90X2hlaWdodDsg LyogdnRvdGFsICovCisJdWludDMyX3Qgc3JjX3dpZHRoOyAgLyogcGlwZXNyYy54ICovCisJdWlu dDMyX3Qgc3JjX2hlaWdodDsgLyogcGlwZXNyYy55ICovCisJdWludDMyX3QgZHN0X3dpZHRoOyAg LyogcGZfd2luX3N6LnggKi8KKwl1aW50MzJfdCBkc3RfaGVpZ2h0OyAvKiBwZl93aW5fc3oueSAq LworfTsKKworc3RhdGljIHZvaWQgcmVhZF9waXBlX2luZm8oaW50IGludGVsX3BpcGUsIHN0cnVj dCBwaXBlX2luZm8gKmluZm8pCit7CisJdWludDMyX3QgY29uZiwgdnRvdGFsLCBodG90YWwsIHNy YywgY3RybDEsIHdpbl9zejsKKworCWNvbmYgICA9IElOUkVHKFBJUEVDT05GW2ludGVsX3BpcGVd KTsKKwlodG90YWwgPSBJTlJFRyhIVE9UQUxbaW50ZWxfcGlwZV0pOworCXZ0b3RhbCA9IElOUkVH KFZUT1RBTFtpbnRlbF9waXBlXSk7CisJc3JjICAgID0gSU5SRUcoUElQRVNSQ1tpbnRlbF9waXBl XSk7CisJY3RybDEgID0gSU5SRUcoUEZfQ1RSTDFbaW50ZWxfcGlwZV0pOworCXdpbl9zeiA9IElO UkVHKFBGX1dJTl9TWltpbnRlbF9waXBlXSk7CisKKwlpbmZvLT5lbmFibGVkID0gKGNvbmYgJiBQ SVBFQ09ORl9FTkFCTEUpID8gdHJ1ZSA6IGZhbHNlOworCWluZm8tPnRvdF93aWR0aCA9IChodG90 YWwgJiBIVE9UQUxfQUNUSVZFX01BU0spICsgMTsKKwlpbmZvLT50b3RfaGVpZ2h0ID0gKHZ0b3Rh bCAmIFZUT1RBTF9BQ1RJVkVfTUFTSykgKyAxOworCWluZm8tPnNyY193aWR0aCA9ICgoc3JjICYg UElQRVNSQ19IT1JJWl9NQVNLKSA+PiAxNikgKyAxOworCWluZm8tPnNyY19oZWlnaHQgPSAoc3Jj ICYgUElQRVNSQ19WRVJUX01BU0spICsgMTsKKwlpbmZvLT5pbnRlcmxhY2VfbW9kZSA9IGNvbmYg JiBQSVBFQ09ORl9JTlRFUkxBQ0VfTUFTSzsKKwlpbmZvLT5wZl9lbmFibGVkID0gY3RybDEgJiBQ Rl9FTkFCTEU7CisJaW5mby0+ZHN0X3dpZHRoID0gKHdpbl9zeiAmIFBGX1dJTl9TWl9YX01BU0sp ID4+IDE2OworCWluZm8tPmRzdF9oZWlnaHQgPSB3aW5fc3ogJiBQRl9XSU5fU1pfWV9NQVNLOwor fQorCitzdGF0aWMgdm9pZCBkdW1wX3BpcGUoaW50IGludGVsX3BpcGUpCit7CisJc3RydWN0IHBp cGVfaW5mbyBpbmZvOworCisJcmVhZF9waXBlX2luZm8oaW50ZWxfcGlwZSwgJmluZm8pOworCisJ cHJpbnRmKCJcblBpcGUgJWM6XG4iLCBpbnRlbF9waXBlICsgJ0EnKTsKKworCXByaW50ZigiLSAl c1xuIiwgaW5mby5lbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisJaWYgKCFpbmZv LmVuYWJsZWQpCisJCXJldHVybjsKKworCXN3aXRjaCAoaW5mby5pbnRlcmxhY2VfbW9kZSkgewor CWNhc2UgUElQRUNPTkZfUEZfUEQ6CisJCXByaW50ZigiLSBwcm9ncmVzc2l2ZVxuIik7CisJCWJy ZWFrOworCWNhc2UgUElQRUNPTkZfUEZfSUQ6CisJCXByaW50ZigiLSBpbnRlcmxhY2VkIChwcm9n cmVzc2l2ZSBmZXRjaClcbiIpOworCQlicmVhazsKKwljYXNlIFBJUEVDT05GX0lGX0lEOgorCQlw cmludGYoIi0gaW50ZXJsYWNlZCAoaW50ZXJsYWNlZCBmZXRjaClcbiIpOworCQlicmVhazsKKwlk ZWZhdWx0OgorCQlhc3NlcnQoMCk7CisJfQorCisJcHJpbnRmKCItIHBmICVzXG4iLCBpbmZvLnBm X2VuYWJsZWQgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKKwlwcmludGYoIi0gdG90ICVkeCVk XG4iLCBpbmZvLnRvdF93aWR0aCwgaW5mby50b3RfaGVpZ2h0KTsKKwlwcmludGYoIi0gc3JjICVk eCVkXG4iLCBpbmZvLnNyY193aWR0aCwgaW5mby5zcmNfaGVpZ2h0KTsKKwlwcmludGYoIi0gZHN0 ICVkeCVkXG4iLCBpbmZvLmRzdF93aWR0aCwgaW5mby5kc3RfaGVpZ2h0KTsKK30KKworc3RhdGlj IHZvaWQgZHVtcF9pbmZvKHZvaWQpCit7CisJaW50IGk7CisJaW50IHBpcGVzOworCisJaWYgKGdl biA8IDcpCisJCXBpcGVzID0gMjsKKwllbHNlCisJCXBpcGVzID0gMzsKKworCWZvciAoaSA9IDA7 IGkgPCBwaXBlczsgaSsrKSB7CisJCWR1bXBfcGlwZShpKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQg Y2hhbmdlX3NjcmVlbl9zaXplKGludCBpbnRlbF9waXBlLCBpbnQgeCwgaW50IHkpCit7CisJc3Ry dWN0IHBpcGVfaW5mbyBpbmZvOworCXVpbnQzMl90IGRzdF93aWR0aCwgZHN0X2hlaWdodCwgcG9z X3gsIHBvc195OworCXVpbnQzMl90IGN0cmwxX3ZhbDsKKwl1aW50MzJfdCB3aW5fcG9zX3ZhbDsK Kwl1aW50MzJfdCB3aW5fc3pfdmFsOworCisJcmVhZF9waXBlX2luZm8oaW50ZWxfcGlwZSwgJmlu Zm8pOworCisJaWYgKHggPT0gMCkgeworCQlpZiAoaW5mby5kc3Rfd2lkdGggIT0gMCkKKwkJCWRz dF93aWR0aCA9IGluZm8uZHN0X3dpZHRoOworCQllbHNlCisJCQlkc3Rfd2lkdGggPSBpbmZvLnNy Y193aWR0aDsKKwl9IGVsc2UgeworCQlkc3Rfd2lkdGggPSB4OworCX0KKworCWlmICh5ID09IDAp IHsKKwkJaWYgKGluZm8uZHN0X2hlaWdodCAhPSAwKQorCQkJZHN0X2hlaWdodCA9IGluZm8uZHN0 X2hlaWdodDsKKwkJZWxzZQorCQkJZHN0X2hlaWdodCA9IGluZm8uc3JjX2hlaWdodDsKKwl9IGVs c2UgeworCQlkc3RfaGVpZ2h0ID0geTsKKwl9CisKKwlwb3NfeCA9IGFicygoaW5mby50b3Rfd2lk dGggLSBkc3Rfd2lkdGgpKSAvIDI7CisJcG9zX3kgPSBhYnMoKGluZm8udG90X2hlaWdodCAtIGRz dF9oZWlnaHQpKSAvIDI7CisKKwlpZiAocG9zX3ggPT0gMSkKKwkJcG9zX3ggPSAwOworCisJaWYg KGluZm8uc3JjX3dpZHRoIC8gKGRvdWJsZSkgZHN0X3dpZHRoID4gMS4xMjUpIHsKKwkJcHJpbnRm KCJYIGlzIHRvbyBzbWFsbFxuIik7CisJCXJldHVybiAxOworCX0KKwlpZiAoZHN0X3dpZHRoICYg MSkgeworCQlwcmludGYoIlggbXVzdCBiZSBldmVuXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCWlm IChpbmZvLnNyY19oZWlnaHQgLyAoZG91YmxlKSBkc3RfaGVpZ2h0ID4gMS4xMjUpIHsKKwkJcHJp bnRmKCJZIGlzIHRvbyBzbWFsbFxuIik7CisJCXJldHVybiAxOworCX0KKwlpZiAoZHN0X2hlaWdo dCAmIDEpIHsKKwkJcHJpbnRmKCJZIG11c3QgYmUgZXZlblxuIik7CisJCXJldHVybiAxOworCX0K KworCXByaW50ZigiQ2hhbmdpbmcgc2l6ZSBmb3IgcGlwZSAlYzpcbiIKKwkgICAgICAgIi0gd2lk dGg6ICAlZCAtPiAlZFxuIgorCSAgICAgICAiLSBoZWlnaHQ6ICVkIC0+ICVkXG4iCisJICAgICAg ICItIHBvczogJWR4JWRcbiIsCisJICAgICAgIGludGVsX3BpcGUgKyAnQScsIGluZm8uc3JjX3dp ZHRoLCBkc3Rfd2lkdGgsIGluZm8uc3JjX2hlaWdodCwKKwkgICAgICAgZHN0X2hlaWdodCwgcG9z X3gsIHBvc195KTsKKworCWN0cmwxX3ZhbCA9IFBGX0VOQUJMRSB8IFBGX0ZJTFRFUl9NRUQ7CisK KwkvKiBUaGlzIGNhbiBicmVhayBzdHVmZiBpZiB0aGUgcGFuZWwgZml0dGVyIGlzIGFscmVhZHkg ZW5hYmxlZCBmb3IKKwkgKiBhbm90aGVyIHBpcGUgKi8KKwlpZiAoZ2VuID49IDcpIHsKKwkJc3dp dGNoIChpbnRlbF9waXBlKSB7CisJCWNhc2UgMDoKKwkJCWN0cmwxX3ZhbCB8PSBQRl9QSVBFX0E7 CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJY3RybDFfdmFsIHw9IFBGX1BJUEVfQjsKKwkJCWJy ZWFrOworCQljYXNlIDI6CisJCQljdHJsMV92YWwgfD0gUEZfUElQRV9DOworCQkJYnJlYWs7CisJ CWRlZmF1bHQ6CisJCQlhc3NlcnQoMCk7CisJCX0KKwl9CisJT1VUUkVHKFBGX0NUUkwxW2ludGVs X3BpcGVdLCBjdHJsMV92YWwpOworCisJd2luX3Bvc192YWwgPSBwb3NfeCA8PCAxNjsKKwl3aW5f cG9zX3ZhbCB8PSBwb3NfeTsKKwlPVVRSRUcoUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwgd2luX3Bv c192YWwpOworCisJd2luX3N6X3ZhbCA9IGRzdF93aWR0aCA8PCAxNjsKKwl3aW5fc3pfdmFsIHw9 IGRzdF9oZWlnaHQ7CisJT1VUUkVHKFBGX1dJTl9TWltpbnRlbF9waXBlXSwgd2luX3N6X3ZhbCk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkaXNhYmxlX3BhbmVsX2ZpdHRlcihpbnQg aW50ZWxfcGlwZSkKK3sKKwlPVVRSRUcoUEZfQ1RSTDFbaW50ZWxfcGlwZV0sIDApOworCU9VVFJF RyhQRl9XSU5fUE9TW2ludGVsX3BpcGVdLCAwKTsKKwlPVVRSRUcoUEZfV0lOX1NaW2ludGVsX3Bp cGVdLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2Uodm9pZCkK K3sKKwlwcmludGYoIk9wdGlvbnM6XG4iCisiICAtcCBwaXBlOiAgICBwaXBlIHRvIGJlIHVzZWQg KEEsIEIgb3IgQylcbiIKKyIgIC14IHZhbHVlOiAgIGZpbmFsIHNjcmVlbiB3aWR0aCBzaXplIGlu IHBpeGVsc1xuIgorIiAgLXkgdmFsdWU6ICAgZmluYWwgc2NyZWVuIGhlaWdodCBzaXplIGluIHBp eGVsc1xuIgorIiAgLWQ6ICAgICAgICAgZGlzYWJsZSBwYW5lbCBmaXR0ZXJcbiIKKyIgIC1sOiAg ICAgICAgIGxpc3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZWFjaCBwaXBlXG4iCisiICAtaDogICAg ICAgICBwcmludHMgdGhpcyBtZXNzYWdlXG4iKTsKK30KKworaW50IG1haW4gKGludCBhcmdjLCBj aGFyICphcmd2W10pCit7CisJaW50IG9wdDsKKwljaGFyIGludGVsX3BpcGUgPSAnXDAnOworCWlu dCB4ID0gMCwgeSA9IDA7CisJYm9vbCBkaXNhYmxlID0gZmFsc2U7CisJc3RydWN0IHBjaV9kZXZp Y2UgKnBjaV9kZXY7CisJdWludDMyX3QgZGV2aWQ7CisKKwlwY2lfZGV2ID0gaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKTsKKwlpbnRlbF9nZXRfbW1pbyhwY2lfZGV2KTsKKwlkZXZpZCA9IHBjaV9kZXYt PmRldmljZV9pZDsKKwlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2aWQpKSB7CisJCXByaW50ZigiVGhp cyB0b29sIHdhcyBvbmx5IHRlc3RlZCBvbiBJcm9ubGFrZSBhbmQgbmV3ZXJcbiIpOworCQlyZXR1 cm4gMTsKKwl9CisJaWYgKElTX0dFTjUoZGV2aWQpKQorCQlnZW4gPSA1OworCWVsc2UgaWYgKElT X0dFTjYoZGV2aWQpKQorCQlnZW4gPSA2OworCWVsc2UKKwkJZ2VuID0gNzsKKworCXdoaWxlICgo b3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJwOng6eTpkbGgiKSkgIT0gLTEpIHsKKwkJc3dpdGNo IChvcHQpIHsKKwkJY2FzZSAncCc6CisJCQlpbnRlbF9waXBlID0gb3B0YXJnWzBdOworCQkJaWYg KGludGVsX3BpcGUgIT0gJ0EnICYmIGludGVsX3BpcGUgIT0gJ0InICYmCisJCQkgICAgKGdlbiA8 PSA2IHx8IGludGVsX3BpcGUgIT0gJ0MnKSkgeworCQkJCXByaW50ZigiSW52YWxpZCBwaXBlXG4i KTsKKwkJCQlyZXR1cm4gMTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICd4JzoKKwkJCXggPSBh dG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAneSc6CisJCQl5ID0gYXRvaShvcHRhcmcp OworCQkJYnJlYWs7CisJCWNhc2UgJ2QnOgorCQkJZGlzYWJsZSA9IHRydWU7CisJCQlicmVhazsK KwkJY2FzZSAnbCc6CisJCQlkdW1wX2luZm8oKTsKKwkJCXJldHVybiAwOworCQljYXNlICdoJzoK KwkJCXByaW50X3VzYWdlKCk7CisJCQlyZXR1cm4gMDsKKwkJZGVmYXVsdDoKKwkJCXByaW50X3Vz YWdlKCk7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmIChpbnRlbF9waXBlKSB7CisJCWlm IChkaXNhYmxlKQorCQkJcmV0dXJuIGRpc2FibGVfcGFuZWxfZml0dGVyKGludGVsX3BpcGUgLSAn QScpOworCQllbHNlCisJCQlyZXR1cm4gY2hhbmdlX3NjcmVlbl9zaXplKGludGVsX3BpcGUgLSAn QScsIHgsIHkpOworCX0gZWxzZSB7CisJCXByaW50X3VzYWdlKCk7CisJCXJldHVybiAxOworCX0K K30KLS0gCjEuNy44LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==