From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 2/3] tests/gem_vmap_blits: Remove obsolete test case Date: Fri, 25 Apr 2014 15:42:19 +0100 Message-ID: <1398436940-14924-2-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1398436940-14924-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 71EFD6E1A4 for ; Fri, 25 Apr 2014 07:42:31 -0700 (PDT) In-Reply-To: <1398436940-14924-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCk5vIG5lZWQg Zm9yIHRoZSBvbGQgdGVzdCBjYXNlIG9uY2UgdGhlIG5ldyBvbmUgd2FzIGFkZGVkLgoKdjI6CiAg ICogSnVzdCByZWJhc2UgZm9yIGxpYi8gcmVvcmdhbml6YXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQnJh ZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgotLS0KIHRlc3RzLy5naXRpZ25v cmUgICAgICAgfCAgIDEgLQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSAtCiB0ZXN0cy9n ZW1fdm1hcF9ibGl0cy5jIHwgMzQ1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzQ3IGRlbGV0aW9ucygtKQogZGVsZXRl IG1vZGUgMTAwNjQ0IHRlc3RzL2dlbV92bWFwX2JsaXRzLmMKCmRpZmYgLS1naXQgYS90ZXN0cy8u Z2l0aWdub3JlIGIvdGVzdHMvLmdpdGlnbm9yZQppbmRleCAzNDEwNmNiLi5mZWRkZGJmIDEwMDY0 NAotLS0gYS90ZXN0cy8uZ2l0aWdub3JlCisrKyBiL3Rlc3RzLy5naXRpZ25vcmUKQEAgLTk3LDcg Kzk3LDYgQEAgZ2VtX3RpbGVkX3N3YXBwaW5nCiBnZW1fdGlsaW5nX21heF9zdHJpZGUKIGdlbV91 bmZlbmNlX2FjdGl2ZV9idWZmZXJzCiBnZW1fdW5yZWZfYWN0aXZlX2J1ZmZlcnMKLWdlbV92bWFw X2JsaXRzCiBnZW1fdXNlcnB0cl9ibGl0cwogZ2VtX3dhaXRfcmVuZGVyX3RpbWVvdXQKIGdlbV93 cml0ZV9yZWFkX3Jpbmdfc3dpdGNoCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz IGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCBmZWJlMTdmLi5hOGEwOTFkIDEwMDY0NAot LS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMK QEAgLTEyMyw3ICsxMjMsNiBAQCBURVNUU19wcm9ncyA9IFwKIAlnZW1fdGlsaW5nX21heF9zdHJp ZGUgXAogCWdlbV91bmZlbmNlX2FjdGl2ZV9idWZmZXJzIFwKIAlnZW1fdW5yZWZfYWN0aXZlX2J1 ZmZlcnMgXAotCWdlbV92bWFwX2JsaXRzIFwKIAlnZW1fdXNlcnB0cl9ibGl0cyBcCiAJZ2VtX3dh aXRfcmVuZGVyX3RpbWVvdXQgXAogCWdlbjNfbWl4ZWRfYmxpdHMgXApkaWZmIC0tZ2l0IGEvdGVz dHMvZ2VtX3ZtYXBfYmxpdHMuYyBiL3Rlc3RzL2dlbV92bWFwX2JsaXRzLmMKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDQzMDMzOGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZ2VtX3ZtYXBf YmxpdHMuYworKysgL2Rldi9udWxsCkBAIC0xLDM0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0 IMKpIDIwMDksMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0g KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCi0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAotICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCi0gKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MK LSAqIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBBdXRob3JzOgotICogICAgRXJpYyBBbmhvbHQg PGVyaWNAYW5ob2x0Lm5ldD4KLSAqICAgIENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgotICoKLSAqLwotCi0vKiogQGZpbGUgZ2VtX3ZtYXBfYmxpdHMuYwotICoKLSAqIFRo aXMgaXMgYSB0ZXN0IG9mIGRvaW5nIG1hbnkgYmxpdHMgdXNpbmcgYSBtaXh0dXJlIG9mIG5vcm1h bCBzeXN0ZW0gcGFnZXMKLSAqIGFuZCB1bmNhY2hlZCBsaW5lYXIgYnVmZmVycywgd2l0aCBhIHdv cmtpbmcgc2V0IGxhcmdlciB0aGFuIHRoZQotICogYXBlcnR1cmUgc2l6ZS4KLSAqCi0gKiBUaGUg Z29hbCBpcyB0byBzaW1wbHkgZW5zdXJlIHRoZSBiYXNpY3Mgd29yay4KLSAqLwotCi0jaW5jbHVk ZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNp bmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jaW5jbHVkZSA8ZXJybm8u aD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0KLSNpbmNs dWRlICJkcm0uaCIKLSNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgotI2luY2x1ZGUgImRybXRl c3QuaCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKLSNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1 ZmZlci5oIgotI2luY2x1ZGUgImludGVsX2lvLmgiCi0KLSNpZiAhZGVmaW5lZChJOTE1X1BBUkFN X0hBU19WTUFQKQotI3ByYWdtYSBtZXNzYWdlKCJObyB2bWFwIHN1cHBvcnQgaW4gZHJtLCBza2lw cGluZyIpCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0JZnByaW50ZihzdGRl cnIsICJObyB2bWFwIHN1cHBvcnQgaW4gZHJtLlxuIik7Ci0JcmV0dXJuIDc3OwotfQotI2Vsc2UK LQotI2RlZmluZSBXSURUSCA1MTIKLSNkZWZpbmUgSEVJR0hUIDUxMgotCi1zdGF0aWMgdWludDMy X3QgbGluZWFyW1dJRFRIKkhFSUdIVF07Ci0KLXN0YXRpYyB1aW50MzJfdCBnZW1fdm1hcChpbnQg ZmQsIHZvaWQgKnB0ciwgaW50IHNpemUsIGludCByZWFkX29ubHkpCi17Ci0Jc3RydWN0IGRybV9p OTE1X2dlbV92bWFwIHZtYXA7Ci0KLQl2bWFwLnVzZXJfcHRyID0gKHVpbnRwdHJfdClwdHI7Ci0J dm1hcC51c2VyX3NpemUgPSBzaXplOwotCXZtYXAuZmxhZ3MgPSAwOwotCWlmIChyZWFkX29ubHkp Ci0JCXZtYXAuZmxhZ3MgfD0gSTkxNV9WTUFQX1JFQURfT05MWTsKLQotCWlmIChkcm1Jb2N0bChm ZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNQVAsICZ2bWFwKSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1 cm4gdm1hcC5oYW5kbGU7Ci19Ci0KLQotc3RhdGljIHZvaWQgZ2VtX3ZtYXBfc3luYyhpbnQgZmQs IHVpbnQzMl90IGhhbmRsZSkKLXsKLQlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxlLCBJOTE1X0dF TV9ET01BSU5fQ1BVLCBJOTE1X0dFTV9ET01BSU5fQ1BVKTsKLX0KLQotc3RhdGljIHZvaWQKLWNv cHkoaW50IGZkLCB1aW50MzJfdCBkc3QsIHVpbnQzMl90IHNyYykKLXsKLQl1aW50MzJfdCBiYXRj aFsxMF07Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jWzJdOwot CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialszXTsKLQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWM7Ci0JdWludDMyX3QgaGFuZGxlOwotCWludCByZXQ7Ci0K LQliYXRjaFswXSA9IFhZX1NSQ19DT1BZX0JMVF9DTUQgfAotCQkgIFhZX1NSQ19DT1BZX0JMVF9X UklURV9BTFBIQSB8Ci0JCSAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQiB8IDY7Ci0JYmF0Y2hb MV0gPSAoMyA8PCAyNCkgfCAvKiAzMiBiaXRzICovCi0JCSAgKDB4Y2MgPDwgMTYpIHwgLyogY29w eSBST1AgKi8KLQkJICBXSURUSCo0OwotCWJhdGNoWzJdID0gMDsgLyogZHN0IHgxLHkxICovCi0J YmF0Y2hbM10gPSAoSEVJR0hUIDw8IDE2KSB8IFdJRFRIOyAvKiBkc3QgeDIseTIgKi8KLQliYXRj aFs0XSA9IDA7IC8qIGRzdCByZWxvYyAqLwotCWJhdGNoWzVdID0gMDsgLyogc3JjIHgxLHkxICov Ci0JYmF0Y2hbNl0gPSBXSURUSCo0OwotCWJhdGNoWzddID0gMDsgLyogc3JjIHJlbG9jICovCi0J YmF0Y2hbOF0gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwotCWJhdGNoWzldID0gTUlfTk9PUDsKLQot CWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwotCWdlbV93cml0ZShmZCwgaGFuZGxlLCAw LCBiYXRjaCwgc2l6ZW9mKGJhdGNoKSk7Ci0KLQlyZWxvY1swXS50YXJnZXRfaGFuZGxlID0gZHN0 OwotCXJlbG9jWzBdLmRlbHRhID0gMDsKLQlyZWxvY1swXS5vZmZzZXQgPSA0ICogc2l6ZW9mKGJh dGNoWzBdKTsKLQlyZWxvY1swXS5wcmVzdW1lZF9vZmZzZXQgPSAwOwotCXJlbG9jWzBdLnJlYWRf ZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7OwotCXJlbG9jWzBdLndyaXRlX2RvbWFp biA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Ci0KLQlyZWxvY1sxXS50YXJnZXRfaGFuZGxlID0g c3JjOwotCXJlbG9jWzFdLmRlbHRhID0gMDsKLQlyZWxvY1sxXS5vZmZzZXQgPSA3ICogc2l6ZW9m KGJhdGNoWzBdKTsKLQlyZWxvY1sxXS5wcmVzdW1lZF9vZmZzZXQgPSAwOwotCXJlbG9jWzFdLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7OwotCXJlbG9jWzFdLndyaXRlX2Rv bWFpbiA9IDA7Ci0KLQlvYmpbMF0uaGFuZGxlID0gZHN0OwotCW9ialswXS5yZWxvY2F0aW9uX2Nv dW50ID0gMDsKLQlvYmpbMF0ucmVsb2NzX3B0ciA9IDA7Ci0Jb2JqWzBdLmFsaWdubWVudCA9IDA7 Ci0Jb2JqWzBdLm9mZnNldCA9IDA7Ci0Jb2JqWzBdLmZsYWdzID0gMDsKLQlvYmpbMF0ucnN2ZDEg PSAwOwotCW9ialswXS5yc3ZkMiA9IDA7Ci0KLQlvYmpbMV0uaGFuZGxlID0gc3JjOwotCW9ialsx XS5yZWxvY2F0aW9uX2NvdW50ID0gMDsKLQlvYmpbMV0ucmVsb2NzX3B0ciA9IDA7Ci0Jb2JqWzFd LmFsaWdubWVudCA9IDA7Ci0Jb2JqWzFdLm9mZnNldCA9IDA7Ci0Jb2JqWzFdLmZsYWdzID0gMDsK LQlvYmpbMV0ucnN2ZDEgPSAwOwotCW9ialsxXS5yc3ZkMiA9IDA7Ci0KLQlvYmpbMl0uaGFuZGxl ID0gaGFuZGxlOwotCW9ialsyXS5yZWxvY2F0aW9uX2NvdW50ID0gMjsKLQlvYmpbMl0ucmVsb2Nz X3B0ciA9ICh1aW50cHRyX3QpcmVsb2M7Ci0Jb2JqWzJdLmFsaWdubWVudCA9IDA7Ci0Jb2JqWzJd Lm9mZnNldCA9IDA7Ci0Jb2JqWzJdLmZsYWdzID0gMDsKLQlvYmpbMl0ucnN2ZDEgPSBvYmpbMl0u cnN2ZDIgPSAwOwotCi0JZXhlYy5idWZmZXJzX3B0ciA9ICh1aW50cHRyX3Qpb2JqOwotCWV4ZWMu YnVmZmVyX2NvdW50ID0gMzsKLQlleGVjLmJhdGNoX3N0YXJ0X29mZnNldCA9IDA7Ci0JZXhlYy5i YXRjaF9sZW4gPSBzaXplb2YoYmF0Y2gpOwotCWV4ZWMuRFIxID0gZXhlYy5EUjQgPSAwOwotCWV4 ZWMubnVtX2NsaXByZWN0cyA9IDA7Ci0JZXhlYy5jbGlwcmVjdHNfcHRyID0gMDsKLQlleGVjLmZs YWdzID0gSEFTX0JMVF9SSU5HKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA/IEk5MTVfRVhFQ19C TFQgOiAwOwotCWV4ZWMucnN2ZDEgPSBleGVjLnJzdmQyID0gMDsKLQotCXJldCA9IGRybUlvY3Rs KGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIsICZleGVjKTsKLQl3aGlsZSAocmV0 ICYmIGVycm5vID09IEVCVVNZKSB7Ci0JCWRybUNvbW1hbmROb25lKGZkLCBEUk1fSTkxNV9HRU1f VEhST1RUTEUpOwotCQlyZXQgPSBkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNC VUZGRVIyLCAmZXhlYyk7Ci0JfQotCWlndF9hc3NlcnQocmV0ID09IDApOwotCi0JZ2VtX2Nsb3Nl KGZkLCBoYW5kbGUpOwotfQotCi1zdGF0aWMgdWludDMyX3QKLWNyZWF0ZV92bWFwKGludCBmZCwg dWludDMyX3QgdmFsLCB1aW50MzJfdCAqcHRyKQotewotCXVpbnQzMl90IGhhbmRsZTsKLQlpbnQg aTsKLQotCWhhbmRsZSA9IGdlbV92bWFwKGZkLCBwdHIsIHNpemVvZihsaW5lYXIpLCAwKTsKLQot CS8qIEZpbGwgdGhlIEJPIHdpdGggZHdvcmRzIHN0YXJ0aW5nIGF0IHZhbCAqLwotCWZvciAoaSA9 IDA7IGkgPCBXSURUSCpIRUlHSFQ7IGkrKykKLQkJcHRyW2ldID0gdmFsKys7Ci0KLQlyZXR1cm4g aGFuZGxlOwotfQotCi1zdGF0aWMgdWludDMyX3QKLWNyZWF0ZV9ibyhpbnQgZmQsIHVpbnQzMl90 IHZhbCkKLXsKLQl1aW50MzJfdCBoYW5kbGU7Ci0JaW50IGk7Ci0KLQloYW5kbGUgPSBnZW1fY3Jl YXRlKGZkLCBzaXplb2YobGluZWFyKSk7Ci0KLQkvKiBGaWxsIHRoZSBCTyB3aXRoIGR3b3JkcyBz dGFydGluZyBhdCB2YWwgKi8KLQlmb3IgKGkgPSAwOyBpIDwgV0lEVEgqSEVJR0hUOyBpKyspCi0J CWxpbmVhcltpXSA9IHZhbCsrOwotCWdlbV93cml0ZShmZCwgaGFuZGxlLCAwLCBsaW5lYXIsIHNp emVvZihsaW5lYXIpKTsKLQotCXJldHVybiBoYW5kbGU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jaGVj a19jcHUodWludDMyX3QgKnB0ciwgdWludDMyX3QgdmFsKQotewotCWludCBpOwotCi0JZm9yIChp ID0gMDsgaSA8IFdJRFRIKkhFSUdIVDsgaSsrKSB7Ci0JCWlmIChwdHJbaV0gIT0gdmFsKSB7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgIkV4cGVjdGVkIDB4JTA4eCwgZm91bmQgMHglMDh4ICIKLQkJCQki YXQgb2Zmc2V0IDB4JTA4eFxuIiwKLQkJCQl2YWwsIHB0cltpXSwgaSAqIDQpOwotCQkJYWJvcnQo KTsKLQkJfQotCQl2YWwrKzsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi1jaGVja19ncHUoaW50IGZk LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHZhbCkKLXsKLQlnZW1fcmVhZChmZCwgaGFuZGxl LCAwLCBsaW5lYXIsIHNpemVvZihsaW5lYXIpKTsKLQljaGVja19jcHUobGluZWFyLCB2YWwpOwot fQotCi1zdGF0aWMgaW50IGhhc192bWFwKGludCBmZCkKLXsKLQlkcm1faTkxNV9nZXRwYXJhbV90 IGdwOwotCWludCBpOwotCi0JZ3AucGFyYW0gPSBJOTE1X1BBUkFNX0hBU19WTUFQOwotCWdwLnZh bHVlID0gJmk7Ci0KLQlyZXR1cm4gZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFVFBBUkFN LCAmZ3ApID09IDAgJiYgaSA+IDA7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKLXsKLQl1aW50MzJfdCAqbWVtb3J5OwotCXVpbnQzMl90ICpjcHUsICpjcHVfdmFsOwotCXVp bnQzMl90ICpncHUsICpncHVfdmFsOwotCXVpbnQzMl90IHN0YXJ0ID0gMDsKLQlpbnQgaSwgZmQs IGNvdW50OwotCi0JaWd0X3NpbXBsZV9pbml0KCk7Ci0KLQlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9u KCk7Ci0KLQlmZCA9IGRybV9vcGVuX2FueSgpOwotCi0JaWYgKCFoYXNfdm1hcChmZCkpIHsKLQkJ ZnByaW50ZihzdGRlcnIsICJObyB2bWFwIHN1cHBvcnQsIGlnbm9yaW5nLlxuIik7Ci0JCXJldHVy biA3NzsKLQl9Ci0KLQljb3VudCA9IDA7Ci0JaWYgKGFyZ2MgPiAxKQotCQljb3VudCA9IGF0b2ko YXJndlsxXSk7Ci0JaWYgKGNvdW50ID09IDApCi0JCWNvdW50ID0gMyAqIGdlbV9hcGVydHVyZV9z aXplKGZkKSAvICgxMDI0KjEwMjQpIC8gNDsKLQlwcmludGYoIlVzaW5nIDJ4JWQgMU1pQiBidWZm ZXJzXG4iLCBjb3VudCk7Ci0KLQltZW1vcnkgPSBtYWxsb2MoY291bnQqc2l6ZW9mKGxpbmVhcikp OwotCWlmIChtZW1vcnkgPT0gTlVMTCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBh bGxvY2F0ZSAlbGxkIGJ5dGVzXG4iLAotCQkJKGxvbmcgbG9uZyljb3VudCpzaXplb2YobGluZWFy KSk7Ci0JCXJldHVybiAxOwotCX0KLQotCWdwdSA9IG1hbGxvYyhzaXplb2YodWludDMyX3QpKmNv dW50KjQpOwotCWdwdV92YWwgPSBncHUgKyBjb3VudDsKLQljcHUgPSBncHVfdmFsICsgY291bnQ7 Ci0JY3B1X3ZhbCA9IGNwdSArIGNvdW50OwotCi0JZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKysp IHsKLQkJZ3B1W2ldID0gY3JlYXRlX2JvKGZkLCBzdGFydCk7Ci0JCWdwdV92YWxbaV0gPSBzdGFy dDsKLQkJc3RhcnQgKz0gV0lEVEgqSEVJR0hUOwotCX0KLQotCWZvciAoaSA9IDA7IGkgPCBjb3Vu dDsgaSsrKSB7Ci0JCWNwdVtpXSA9IGNyZWF0ZV92bWFwKGZkLCBzdGFydCwgbWVtb3J5K2kqV0lE VEgqSEVJR0hUKTsKLQkJY3B1X3ZhbFtpXSA9IHN0YXJ0OwotCQlzdGFydCArPSBXSURUSCpIRUlH SFQ7OwotCX0KLQotCXByaW50ZigiVmVyaWZ5aW5nIGluaXRpYWxpc2F0aW9uLi4uXG4iKTsKLQlm b3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQljaGVja19ncHUoZmQsIGdwdVtpXSwgZ3B1 X3ZhbFtpXSk7Ci0JCWNoZWNrX2NwdShtZW1vcnkraSpXSURUSCpIRUlHSFQsIGNwdV92YWxbaV0p OwotCX0KLQotCXByaW50ZigiQ3ljbGljIGJsaXRzIGNwdS0+Z3B1LCBmb3J3YXJkLi4uXG4iKTsK LQlmb3IgKGkgPSAwOyBpIDwgY291bnQgKiA0OyBpKyspIHsKLQkJaW50IHNyYyA9IGkgJSBjb3Vu dDsKLQkJaW50IGRzdCA9IChpICsgMSkgJSBjb3VudDsKLQotCQljb3B5KGZkLCBncHVbZHN0XSwg Y3B1W3NyY10pOwotCQlncHVfdmFsW2RzdF0gPSBjcHVfdmFsW3NyY107Ci0JfQotCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKQotCQljaGVja19ncHUoZmQsIGdwdVtpXSwgZ3B1X3ZhbFtpXSk7 Ci0KLQlwcmludGYoIkN5Y2xpYyBibGl0cyBncHUtPmNwdSwgYmFja3dhcmQuLi5cbiIpOwotCWZv ciAoaSA9IDA7IGkgPCBjb3VudCAqIDQ7IGkrKykgewotCQlpbnQgc3JjID0gKGkgKyAxKSAlIGNv dW50OwotCQlpbnQgZHN0ID0gaSAlIGNvdW50OwotCi0JCWNvcHkoZmQsIGNwdVtkc3RdLCBncHVb c3JjXSk7Ci0JCWNwdV92YWxbZHN0XSA9IGdwdV92YWxbc3JjXTsKLQl9Ci0JZm9yIChpID0gMDsg aSA8IGNvdW50OyBpKyspIHsKLQkJZ2VtX3ZtYXBfc3luYyhmZCwgY3B1W2ldKTsKLQkJY2hlY2tf Y3B1KG1lbW9yeStpKldJRFRIKkhFSUdIVCwgY3B1X3ZhbFtpXSk7Ci0JfQotCi0JcHJpbnRmKCJS YW5kb20gYmxpdHMuLi5cbiIpOwotCWZvciAoaSA9IDA7IGkgPCBjb3VudCAqIDQ7IGkrKykgewot CQlpbnQgc3JjID0gcmFuZG9tKCkgJSBjb3VudDsKLQkJaW50IGRzdCA9IHJhbmRvbSgpICUgY291 bnQ7Ci0KLQkJaWYgKHJhbmRvbSgpICYgMSkgewotCQkJY29weShmZCwgZ3B1W2RzdF0sIGNwdVtz cmNdKTsKLQkJCWdwdV92YWxbZHN0XSA9IGNwdV92YWxbc3JjXTsKLQkJfSBlbHNlIHsKLQkJCWNv cHkoZmQsIGNwdVtkc3RdLCBncHVbc3JjXSk7Ci0JCQljcHVfdmFsW2RzdF0gPSBncHVfdmFsW3Ny Y107Ci0JCX0KLQl9Ci0JZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQkJY2hlY2tfZ3B1 KGZkLCBncHVbaV0sIGdwdV92YWxbaV0pOwotCQlnZW1fdm1hcF9zeW5jKGZkLCBjcHVbaV0pOwot CQljaGVja19jcHUobWVtb3J5K2kqV0lEVEgqSEVJR0hULCBjcHVfdmFsW2ldKTsKLQl9Ci0KLQly ZXR1cm4gMDsKLX0KLQotI2VuZGlmCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK