From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id E3578891C4 for ; Tue, 26 Mar 2019 14:35:13 +0000 (UTC) From: Stanislav Lisovskiy Date: Tue, 26 Mar 2019 16:35:04 +0200 Message-Id: <20190326143504.10393-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6] igt/tests: kms_plane_stress: Add plane stress test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: stanislav.lisovskiy@intel.com, ville.syrjala@intel.com, martin.peres@intel.com List-ID: VGhpcyB0ZXN0IGF0dGVtcHRzIHRvIHV0aWxpemUgYWxsIGNvbm5lY3RlZApvdXRwdXRzIGF0IHRo ZSBzYW1lIHRpbWUsIHVzaW5nIG1heGltdW0gcG9zc2libGUKcmVzb2x1dGlvbiBhbmQgYW1vdW50 IG9mIHBsYW5lcywgdG8gY2hlY2sgd2hldGhlcgp3ZSBhcmUgaGl0aW5nIGFueSBraW5kIG9mIGJh bmR3aWR0aCwgd2F0ZXJtYXJrIG9yCm90aGVyIGxpbWl0YXRpb25zLgoKdjI6IEFkZGVkIGNwdSBh bmQgZ3B1IGxvYWQgdGhyZWFkcywgd2hpY2ggY29uc3VtZQogICAgYWRkaXRpb25hbCBiYW5kd2lk dGguCgp2MzogUmVtb3ZlZCBiaW5hcnkgcGljdHVyZSBmaWxlLCB1c2luZyBwYXR0ZXJuIGZiCiAg ICBpbnN0ZWFkLgoKdjQ6IE1vdmVkIEZCIGNyZWF0aW9uL3JlbW92YWwgdG8gYmV0dGVyIHBsYWNl LgoKdjU6IEZpeGVkIHJlYmFzZSBjb25mbGljdCBhbmQgY2hhbmdlZCAiZmItPnRpbGluZyIKICAg IHRvICJmYi0+bW9kaWZpZXIiLgoKdjY6IFJlbW92ZWQgdW5uZWNlc3NhcnkgbmV3IG1hY3JvIGZv ciBpdGVyYXRpbmcgb24KICAgIHBpcGVzLiBUYWtlbiBpbnRvIHVzZSBpZ3RfZ2V0dGltZSBpbnN0 ZWFkIG9mCiAgICBjbG9ja19nZXR0aW1lLgoKU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IExpc292 c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUu c291cmNlcyAgIHwgICAxICsKIHRlc3RzL2ttc19wbGFuZV9zdHJlc3MuYyB8IDU1MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxkICAgICAg ICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDU1NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgdGVzdHMva21zX3BsYW5lX3N0cmVzcy5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFr ZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggNzFjY2YwMGEuLjlk MDRkODg4IDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01h a2VmaWxlLnNvdXJjZXMKQEAgLTU5LDYgKzU5LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCiAJa21zX3Bs YW5lX2xvd3JlcyBcCiAJa21zX3BsYW5lX211bHRpcGxlIFwKIAlrbXNfcGxhbmVfc2NhbGluZyBc CisJa21zX3BsYW5lX3N0cmVzcyBcCiAJa21zX3Byb3BfYmxvYiBcCiAJa21zX3Byb3BlcnRpZXMg XAogCWttc19wc3IgXApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3BsYW5lX3N0cmVzcy5jIGIvdGVz dHMva21zX3BsYW5lX3N0cmVzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li43NzI2OTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2ttc19wbGFuZV9zdHJlc3MuYwpA QCAtMCwwICsxLDU1MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisg KiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisK KyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfcmFuZC5oIgorI2luY2x1ZGUgImRybXRl c3QuaCIKKyNpbmNsdWRlICJzd19zeW5jLmgiCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRl IDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHBvbGwuaD4K KyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyNpZm5kZWYgRFJNX0NBUF9DVVJTT1JfV0lEVEgKKyNk ZWZpbmUgRFJNX0NBUF9DVVJTT1JfV0lEVEggMHg4CisjZW5kaWYKKyNpZm5kZWYgRFJNX0NBUF9D VVJTT1JfSEVJR0hUCisjZGVmaW5lIERSTV9DQVBfQ1VSU09SX0hFSUdIVCAweDkKKyNlbmRpZgor CisKK2RybU1vZGVNb2RlSW5mbyB1aGRfbW9kZV82MGh6ID0geworCS5uYW1lID0gIjM4NDB4MjE2 MEA2MGh6IiwKKwkudnJlZnJlc2ggPSA2MCwKKwkuY2xvY2sgPSAxNDI2NjcqMiwKKwkuaGRpc3Bs YXkgPSAzODQwLAorCS5oc3luY19zdGFydCA9IDE5MzYqMiwKKwkuaHN5bmNfZW5kID0gMTk1Mioy LAorCS5odG90YWwgPSAyMTA0KjIsCisJLnZkaXNwbGF5ID0gMjE2MCwKKwkudnN5bmNfc3RhcnQg PSAxMDgzKjIsCisJLnZzeW5jX2VuZCA9IDEwOTcqMiwKKwkudnRvdGFsID0gMTEyOCoyLAorCS5m bGFncyA9IDB4YSwKK307CisKKyNkZWZpbmUgTl9GT1JNQVRTIDMKK3N0YXRpYyBjb25zdCB1aW50 MzJfdCBmb3JtYXRzW05fRk9STUFUU10gPSB7CisJRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwlEUk1f Rk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX1hSR0IyMTAxMDEwLAorfTsKKworI2RlZmluZSBO X1RJTElOR19NRVRIT0RTIDMKK3N0YXRpYyBjb25zdCB1aW50NjRfdCB0aWxpbmdzW05fVElMSU5H X01FVEhPRFNdID0geworCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwKKwlJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCwKKwlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCwKK307CisKK3N0YXRpYyBjb25zdCBj aGFyICpmb3JtYXRfc3RyKGludCBmb3JtYXRfaW5kZXgpCit7CisJc3dpdGNoIChmb3JtYXRzW2Zv cm1hdF9pbmRleF0pIHsKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCQlyZXR1cm4gInJnYjU2 NSI7CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCQlyZXR1cm4gInhyZ2I4ODg4IjsKKwlj YXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6CisJCXJldHVybiAieHJnYjIxMDEwMTAiOworCWRl ZmF1bHQ6CisJCWlndF9hc3NlcnQoZmFsc2UpOworCX0KK30KKworc3RhdGljIGNvbnN0IGNoYXIg KnRpbGluZ19zdHIoaW50IHRpbGluZ19pbmRleCkKK3sKKwlzd2l0Y2ggKHRpbGluZ3NbdGlsaW5n X2luZGV4XSkgeworCWNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOgorCQlyZXR1cm4gInVudGls ZWQiOworCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CisJCXJldHVybiAieHRpbGVkIjsK KwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgorCQlyZXR1cm4gInl0aWxlZCI7CisJZGVm YXVsdDoKKwkJaWd0X2Fzc2VydChmYWxzZSk7CisJfQorfQorCisKKyNkZWZpbmUgTUFYX0NPUkVT IDgKKworc3RydWN0IGRhdGE7CisKK3N0cnVjdCB0aHJlYWRfY29udGV4dCB7CisJc3RydWN0IGRh dGEgKmRhdGE7CisJaW50IGlkOworCXZvaWQgKmJ1ZjE7CisJdm9pZCAqYnVmMjsKK307CisKK3N0 cnVjdCBncHVfY29udGV4dCB7CisJc3RydWN0IGRhdGEgKmRhdGE7CisJaW50IHBpcGU7CisJaW50 IGNvbG9yOworfTsKKworc3RydWN0IGRhdGEgeworCWludCBkcm1fZmQ7CisJaWd0X2Rpc3BsYXlf dCBkaXNwbGF5OworCWludCBudW1fcGxhbmVzOworCXVpbnQzMl90IGZvcm1hdDsKKwl1aW50NjRf dCBtb2RpZmllcjsKKwl1aW50MzJfdCBkZXZpZDsKKwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7 CisJc3RydWN0IGlndF9mYiBmYltJR1RfTUFYX1BJUEVTXTsKKwlzdHJ1Y3QgaWd0X2ZiIGN1cnNv cl9mYltJR1RfTUFYX1BJUEVTXTsKKwlwdGhyZWFkX3QgY3B1X3RocmVhZFtNQVhfQ09SRVNdOwor CWJvb2wgY3B1X3RocmVhZF9zdG9wW01BWF9DT1JFU107CisJc3RydWN0IHRocmVhZF9jb250ZXh0 IGNwdV9jb250ZXh0W01BWF9DT1JFU107CisJc3RydWN0IGdwdV9jb250ZXh0IGdwdV9jb250ZXh0 W0lHVF9NQVhfUElQRVNdOworfTsKKworCitzdHJ1Y3QgYmFzZV9jcmMgeworCWJvb2wgc2V0Owor CWlndF9jcmNfdCBjcmM7Cit9OworCitpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisKKyNkZWZp bmUgQlVGX1NJWkUgMTI4KjEwMjQqMTAyNAorCitzdGF0aWMgdm9pZCAqY3B1X2xvYWQodm9pZCAq ZCkKK3sKKwljaGFyICpidWYxLCAqYnVmMjsKKwlzdHJ1Y3QgdGhyZWFkX2NvbnRleHQgKmNvbnRl eHQgPSAoc3RydWN0IHRocmVhZF9jb250ZXh0ICopZDsKKwlzdHJ1Y3QgZGF0YSAqZGF0YSA9IGNv bnRleHQtPmRhdGE7CisKKwlidWYxID0gY29udGV4dC0+YnVmMTsKKwlidWYyID0gY29udGV4dC0+ YnVmMjsKKworCWRhdGEtPmNwdV90aHJlYWRfc3RvcFtjb250ZXh0LT5pZF0gPSBmYWxzZTsKKwor CXdoaWxlKCFkYXRhLT5jcHVfdGhyZWFkX3N0b3BbY29udGV4dC0+aWRdKSB7CisJCW1lbWNweShi dWYxLCBidWYyLCBCVUZfU0laRSk7CisJCW1lbWNweShidWYyLCBidWYxLCBCVUZfU0laRSk7CisJ fQorCisJcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChz dHJ1Y3QgaWd0X2J1ZiAqYnVmLAorCQkJZHJtX2ludGVsX2JvICpibywgaW50IHdpZHRoLCBpbnQg aGVpZ2h0LCBpbnQgc3RyaWRlLCBpbnQgdGlsaW5nKQoreworCWJ1Zi0+Ym8gPSBibzsKKwlidWYt PnN0cmlkZSA9IHN0cmlkZTsKKwlidWYtPnRpbGluZyA9IHRpbGluZzsKKwlidWYtPnNpemUgPSB3 aWR0aCAqIGhlaWdodCAqIDQ7CisJYnVmLT5icHAgPSAzMjsKK30KKworCitzdGF0aWMgdm9pZCBn cHVfbG9hZChzdHJ1Y3QgZ3B1X2NvbnRleHQgKmdwdV9jb250ZXh0KQoreworCXN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2ggPSBOVUxMOworCXN0cnVjdCBpZ3RfYnVmIGRzdDsKKwlzdHJ1 Y3QgZGF0YSAqZGF0YSA9IGdwdV9jb250ZXh0LT5kYXRhOworCWludCBwaXBlID0gZ3B1X2NvbnRl eHQtPnBpcGU7CisJaWd0X2ZpbGxmdW5jX3QgZ3BncHVfZmlsbCA9IE5VTEw7CisJZHJtX2ludGVs X2JvICpibzsKKwlzdHJ1Y3QgaWd0X2ZiICpmYiA9ICZkYXRhLT5mYltwaXBlXTsKKworCWlmICgh ZGF0YS0+ZGV2aWQpIHsKKwkJZGF0YS0+ZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRhdGEt PmRybV9mZCk7CisJCWlndF9yZXF1aXJlX2dlbShkYXRhLT5kcm1fZmQpOworCisJCWRhdGEtPmJ1 Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZGF0YS0+ZHJtX2ZkLCA0MDk2KTsKKwkJ aWd0X2Fzc2VydChkYXRhLT5idWZtZ3IpOworCX0KKworCWdwZ3B1X2ZpbGwgPSBpZ3RfZ2V0X2dw Z3B1X2ZpbGxmdW5jKGRhdGEtPmRldmlkKTsKKworCWlndF9yZXF1aXJlX2YoZ3BncHVfZmlsbCwK KwkgICAgICAibm8gZ3BncHUtZmlsbCBmdW5jdGlvblxuIik7CisKKwliYXRjaCA9IGludGVsX2Jh dGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZGV2aWQpOworCWlndF9hc3NlcnQo YmF0Y2gpOworCisJYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5idWZtZ3IsIGRh dGEtPmRybV9mZCwgIiIsIGZiLT5nZW1faGFuZGxlKTsKKworCXNjcmF0Y2hfYnVmX2luaXQoJmRz dCwgYm8sIGZiLT53aWR0aCwgZmItPmhlaWdodCwgZmItPnN0cmlkZXNbMF0sIGZiLT5tb2RpZmll cik7CisKKwlncGdwdV9maWxsKGJhdGNoLAorCSAgICZkc3QsIDAsIDAsIChmYi0+d2lkdGggKiA0 KSwgZmItPmhlaWdodCwKKwkgICBncHVfY29udGV4dC0+Y29sb3IpOworCisJZ3B1X2NvbnRleHQt PmNvbG9yICs9IDB4MTA7CisKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJhdGNoKTsKK30KKwor c3RhdGljIGlubGluZSB1aW50MzJfdCBwaXBlX3NlbGVjdChlbnVtIHBpcGUgcGlwZSkKK3sKKwlp ZiAocGlwZSA+IDEpCisJCXJldHVybiBwaXBlIDw8IERSTV9WQkxBTktfSElHSF9DUlRDX1NISUZU OworCWVsc2UgaWYgKHBpcGUgPiAwKQorCQlyZXR1cm4gRFJNX1ZCTEFOS19TRUNPTkRBUlk7CisJ ZWxzZQorCQlyZXR1cm4gMDsKK30KKworc3RhdGljIHVuc2lnbmVkIGdldF92YmxhbmsoaW50IGZk LCBlbnVtIHBpcGUgcGlwZSwgdW5zaWduZWQgZmxhZ3MpCit7CisJdW5pb24gZHJtX3dhaXRfdmJs YW5rIHZibDsKKworCW1lbXNldCgmdmJsLCAwLCBzaXplb2YodmJsKSk7CisJdmJsLnJlcXVlc3Qu dHlwZSA9IERSTV9WQkxBTktfUkVMQVRJVkUgfCBwaXBlX3NlbGVjdChwaXBlKSB8IGZsYWdzOwor CWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKSkKKwkJcmV0dXJu IDA7CisKKwlyZXR1cm4gdmJsLnJlcGx5LnNlcXVlbmNlOworfQorCisKK3N0YXRpYyBpbnQgcGxh bmVfc3RyZXNzKHN0cnVjdCBkYXRhICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBw aXBlIHBpcGUsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwgYm9vbCBncHUpCit7CisJaWd0X3BsYW5l X3QgKnBsYW5lOworCXVpbnQ2NF90IGN1cnNvcl93aWR0aCwgY3Vyc29yX2hlaWdodDsKKwlpbnQg aTsKKwlpbnQgcmV0OworCWlndF9jcmNfdAljcmMsIGNyYzI7CisKKwlpZ3Rfb3V0cHV0X292ZXJy aWRlX21vZGUob3V0cHV0LCBtb2RlKTsKKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0 b21pYygmZGF0YS0+ZGlzcGxheSwKKwkJCURSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgfCBEUk1f TU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7CisJaWYgKHJldCkgeworCQlyZXR1cm4g cmV0OworCX0KKworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCWlndF9k aXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCisJbW9kZSA9 IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKworCWRvX29yX2RpZShkcm1HZXRDYXAoZGF0 YS0+ZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9XSURUSCwgJmN1cnNvcl93aWR0aCkpOworCWRvX29y X2RpZShkcm1HZXRDYXAoZGF0YS0+ZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9IRUlHSFQsICZjdXJz b3JfaGVpZ2h0KSk7CisKKwlpZiAoIWRhdGEtPmN1cnNvcl9mYltwaXBlXS5mYl9pZCkgeworCQlp Z3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVp Z2h0LAorCQkJCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJCQkJTE9DQUxfRFJNX0ZPUk1BVF9NT0Rf Tk9ORSwKKwkJCQkJMS4wLDAuMCwwLjAsCisJCQkJCSZkYXRhLT5jdXJzb3JfZmJbcGlwZV0pOwor CX0KKworCWlmICghZGF0YS0+ZmJbcGlwZV0uZmJfaWQpIHsKKwkJaWd0X2NyZWF0ZV9jb2xvcl9w YXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAor CQkJCSAgICBkYXRhLT5mb3JtYXQsCisJCQkJICAgIGRhdGEtPm1vZGlmaWVyLAorCQkJCSAgICAw LjAsIDEuMCwgMC4wLCAmZGF0YS0+ZmJbcGlwZV0pOworCX0KKworCXJldCA9IGlndF9kaXNwbGF5 X3RyeV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfVEVTVF9P TkxZIHwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOworCWlmIChyZXQpIHsK KwkJaWd0X2luZm8oIlBsYW5lICVkIHBpcGUgJWQgdHJ5IGNvbW1pdCBmYWlsZWQsIGV4aXRpbmdc biIsIGksIHBpcGUpOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJaWd0X2Rpc3BsYXlfY29tbWl0 MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwlpID0gMDsKKworCWZvcl9lYWNo X3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIHBsYW5lKSB7CisJCWlmIChwbGFu ZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKKwkJCWlndF9wbGFuZV9zZXRfZmIo cGxhbmUsICZkYXRhLT5jdXJzb3JfZmJbcGlwZV0pOworCQkJaWd0X2ZiX3NldF9zaXplKCZkYXRh LT5jdXJzb3JfZmJbcGlwZV0sIHBsYW5lLCBjdXJzb3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQpOwor CQkJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBjdXJzb3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQp OworCQl9IGVsc2UgeworCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmZiW3BpcGVd KTsKKwkJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIDAsIDApOworCQkJaWd0X2ZiX3Nl dF9zaXplKCZkYXRhLT5mYltwaXBlXSwgcGxhbmUsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlz cGxheSk7CisJCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIG1vZGUtPmhkaXNwbGF5LCBtb2Rl LT52ZGlzcGxheSk7CisJCX0KKworCQlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21p YygmZGF0YS0+ZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8IERSTV9NT0RFX0FU T01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsKKwkJaWYgKHJldCkgeworCQkJaWd0X2luZm8oIlBs YW5lICVkIHBpcGUgJWQgdHJ5IGNvbW1pdCBmYWlsZWQsIGV4aXRpbmdcbiIsIGksIHBpcGUpOwor CQkJZ290byBjbGVhbnVwOworCQl9CisKKwkJaWYgKCsraSA+PSBkYXRhLT5udW1fcGxhbmVzKQor CQkJYnJlYWs7CisJfQorCisJaWYgKGdwdSkgeworCQlncHVfbG9hZCgmZGF0YS0+Z3B1X2NvbnRl eHRbcGlwZV0pOworCX0KKworCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENP TU1JVF9BVE9NSUMpOworCisJZ2V0X3ZibGFuayhkYXRhLT5kaXNwbGF5LmRybV9mZCwgcGlwZSwg RFJNX1ZCTEFOS19ORVhUT05NSVNTKTsKKworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBl X2NyYywgJmNyYyk7CisKKwlnZXRfdmJsYW5rKGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCBwaXBlLCBE Uk1fVkJMQU5LX05FWFRPTk1JU1MpOworCisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVf Y3JjLCAmY3JjMik7CisJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNyYywgJmNyYzIpOworCisJcmV0 dXJuIDA7CisKK2NsZWFudXA6CisJZm9yX2VhY2hfcGxhbmVfb25fcGlwZSgmZGF0YS0+ZGlzcGxh eSwgcGlwZSwgcGxhbmUpIHsKKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7CisJfQor CWlndF9yZW1vdmVfZmIoZGF0YS0+ZGlzcGxheS5kcm1fZmQsICZkYXRhLT5mYltwaXBlXSk7CisJ ZGF0YS0+ZmJbcGlwZV0uZmJfaWQgPSAwOworCisJcmV0dXJuIHJldDsKK30KKworI2RlZmluZSBE VVJBVElPTl9TRUMgNS4wMAorCitzdGF0aWMgZHJtTW9kZU1vZGVJbmZvICogZmluZF9oaWdoZXN0 X21vZGUoZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWRybU1vZGVNb2RlSW5mbyAq aGlnaGVzdF9tb2RlID0gTlVMTDsKKwlpbnQgajsKKworCWZvciAoaiA9IDA7IGogPCBjb25uZWN0 b3ItPmNvdW50X21vZGVzOyBqKyspIHsKKwkJaWYgKCFoaWdoZXN0X21vZGUpIHsKKwkJCWhpZ2hl c3RfbW9kZSA9ICZjb25uZWN0b3ItPm1vZGVzW2pdOworCQl9CisJCWVsc2UgaWYgKGNvbm5lY3Rv ci0+bW9kZXNbal0udmRpc3BsYXkgJiYgY29ubmVjdG9yLT5tb2Rlc1tqXS5oZGlzcGxheSkgewor CQkJaWYgKGhpZ2hlc3RfbW9kZS0+aGRpc3BsYXkgPCBjb25uZWN0b3ItPm1vZGVzW2pdLmhkaXNw bGF5KQorCQkJCWhpZ2hlc3RfbW9kZSA9ICZjb25uZWN0b3ItPm1vZGVzW2pdOworCQkJfQorCX0K KworCXJldHVybiBoaWdoZXN0X21vZGU7Cit9CisKK3N0YXRpYyB2b2lkIHN0cmVzcyhzdHJ1Y3Qg ZGF0YSAqZGF0YSwgYm9vbCBvdmVycmlkZSwgYm9vbCBncHUsIGludCBmb3JtYXRfaWR4LCBpbnQg dGlsaW5nX2lkeCkKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQsIGVuZDsKKwlpZ3Rfb3V0cHV0 X3QgKm91dHB1dDsKKwlpbnQgcmV0O2ludCBjcnRjX2lkID0gMDsKKwlpbnQgaTsKKwlpbnQgcGlw ZTsKKwlkcm1Nb2RlTW9kZUluZm8gKmhpZ2hlc3RfbW9kZSA9IE5VTEw7CisKKwlkcm1Nb2RlUmVz ICptb2RlX3Jlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZGF0YS0+ZHJtX2ZkKTsKKwor CWlmICghbW9kZV9yZXNvdXJjZXMpIHsKKwkJaWd0X3dhcm4oImRybU1vZGVHZXRSZXNvdXJjZXMg ZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcmV0dXJuOworCX0KKworCWlndF9n ZXR0aW1lKCZzdGFydCk7CisKKwlkbyB7CisJCS8qCisJCSAqIEluY3JlbWVudCBwaXBlIG9ubHkg Zm9yIGNvbm5lY3RlZCBvdXRwdXRzLAorCQkgKiBmb3IgZWFjaCBjb25uZWN0ZWQgb3V0cHV0IHdl IHNob3VsZCBhc3NpZ24gYQorCQkgKiBkaWZmZXJlbnQgcGlwZS4KKwkJICovCisJCXBpcGUgPSAw OworCQlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBvdXRwdXQpIHsK KwkJCWNydGNfaWQgPSAwOworCQkJZm9yIChpID0gMDsgaSA8IG1vZGVfcmVzb3VyY2VzLT5jb3Vu dF9jb25uZWN0b3JzOyBpKyspIHsKKwkJCQlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7CisK KwkJCQljb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yQ3VycmVudChkYXRhLT5kcm1fZmQs CisJCQkJCQkJICAgICAgIG1vZGVfcmVzb3VyY2VzLT5jb25uZWN0b3JzW2ldKTsKKwkJCQlpZiAo IWNvbm5lY3RvcikgeworCQkJCQlpZ3Rfd2FybigiY291bGQgbm90IGdldCBjb25uZWN0b3IgJWk6 ICVzXG4iLCBtb2RlX3Jlc291cmNlcy0+Y29ubmVjdG9yc1tpXSwgc3RyZXJyb3IoZXJybm8pKTsK KwkJCQkJY29udGludWU7CisJCQkJfQorCisJCQkJaWYgKCFjb25uZWN0b3ItPmNvdW50X21vZGVz KSB7CisJCQkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7CisJCQkJCWNvbnRpbnVl OworCQkJCX0KKworCQkJCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rpb24gPT0gRFJNX01PREVfQ09O TkVDVEVEKSB7CisJCQkJCWlmIChjcnRjX2lkID09IHBpcGUpIHsKKwkJCQkJCWlmICghb3ZlcnJp ZGUpIHsKKwkJCQkJCQloaWdoZXN0X21vZGUgPSBmaW5kX2hpZ2hlc3RfbW9kZShjb25uZWN0b3Ip OworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJCWhpZ2hlc3RfbW9kZSA9ICZ1aGRfbW9kZV82 MGh6OworCisJCQkJCQlkYXRhLT5mb3JtYXQgPSBmb3JtYXRzW2Zvcm1hdF9pZHhdOworCQkJCQkJ ZGF0YS0+bW9kaWZpZXIgPSB0aWxpbmdzW3RpbGluZ19pZHhdOworCQkJCQkJZGF0YS0+bnVtX3Bs YW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7CisKKwkJCQkJCWlndF9p bmZvKCJQaXBlICVzICVkIHBsYW5lcywgdXNpbmcgbW9kZToiLCBrbXN0ZXN0X3BpcGVfbmFtZShw aXBlKSwKKwkJCQkJCQkJZGF0YS0+bnVtX3BsYW5lcyk7CisKKwkJCQkJCWttc3Rlc3RfZHVtcF9t b2RlKGhpZ2hlc3RfbW9kZSk7CisKKwkJCQkJCXBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhk YXRhLT5kcm1fZmQsIHBpcGUsCisJCQkJCQkJSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOwor CisJCQkJCQlyZXQgPSBwbGFuZV9zdHJlc3MoZGF0YSwgb3V0cHV0LCBwaXBlLCBoaWdoZXN0X21v ZGUsIGdwdSk7CisKKwkJCQkJCWlndF9waXBlX2NyY19mcmVlKHBpcGVfY3JjKTsKKwkJCQkJfQor CQkJCQljcnRjX2lkKys7CisJCQkJfQorCQkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rv cik7CisJCQl9CisJCQlpZiAoKCsrcGlwZSkgPT0gSUdUX01BWF9QSVBFUykKKwkJCQlicmVhazsK KwkJfQorCQlpZ3RfZ2V0dGltZSgmZW5kKTsKKwl9IHdoaWxlICgoaWd0X3RpbWVfZWxhcHNlZCgm c3RhcnQsICZlbmQpIDwgRFVSQVRJT05fU0VDKSAmJiAhcmV0KTsKKworCWRybU1vZGVGcmVlUmVz b3VyY2VzKG1vZGVfcmVzb3VyY2VzKTsKK30KKworc3RhdGljIHZvaWQgdGVzdChzdHJ1Y3QgZGF0 YSAqZGF0YSwgYm9vbCBvdmVycmlkZSwgYm9vbCBjcHUsIGJvb2wgZ3B1KQoreworCWludCBpOwor CWludCBudW1iZXJfb2ZfY29yZXMgPSBtaW4oc3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTiks IE1BWF9DT1JFUyk7CisJaW50IGZvcm1hdF9pZHgsIHRpbGluZ19pZHg7CisKKwlpZ3RfZml4dHVy ZSB7CisJCWZvciAoaSA9IDA7IGkgPCBJR1RfTUFYX1BJUEVTOyBpKyspIHsKKwkJCQlkYXRhLT5m YltpXS5mYl9pZCA9IDA7CisJCQkJZGF0YS0+Y3Vyc29yX2ZiW2ldLmZiX2lkID0gMDsKKwkJfQor CQlpZiAoZ3B1KSB7CisJCQlmb3IgKGkgPSAwOyBpIDwgSUdUX01BWF9QSVBFUzsgaSsrKSB7CisJ CQkJZGF0YS0+Z3B1X2NvbnRleHRbaV0uZGF0YSA9IGRhdGE7CisJCQkJZGF0YS0+Z3B1X2NvbnRl eHRbaV0ucGlwZSA9IGk7CisJCQl9CisJCX0KKworCQlpZiAoY3B1KSB7CisJCQlmb3IgKGkgPSAw OyBpIDwgbnVtYmVyX29mX2NvcmVzO2krKykgeworCQkJCWRhdGEtPmNwdV9jb250ZXh0W2ldLmJ1 ZjEgPSBtYWxsb2MoQlVGX1NJWkUpOworCQkJCWRhdGEtPmNwdV9jb250ZXh0W2ldLmJ1ZjIgPSBt YWxsb2MoQlVGX1NJWkUpOworCQkJCWRhdGEtPmNwdV9jb250ZXh0W2ldLmlkID0gaTsKKwkJCQlk YXRhLT5jcHVfY29udGV4dFtpXS5kYXRhID0gZGF0YTsKKwkJCQlwdGhyZWFkX2NyZWF0ZSgmZGF0 YS0+Y3B1X3RocmVhZFtpXSwgTlVMTCwgY3B1X2xvYWQsICh2b2lkKikmZGF0YS0+Y3B1X2NvbnRl eHRbaV0pOworCQkJfQorCQl9CisJfQorCisJZm9yIChmb3JtYXRfaWR4ID0gMDsgZm9ybWF0X2lk eCA8IE5fRk9STUFUUzsgZm9ybWF0X2lkeCsrKSB7CisJCWZvciAodGlsaW5nX2lkeCA9IDA7IHRp bGluZ19pZHggPCBOX1RJTElOR19NRVRIT0RTOyB0aWxpbmdfaWR4KyspIHsKKwkJCWlndF9zdWJ0 ZXN0X2YoInN0cmVzcyVzJXMlcy0lcy0lcyIsCisJCQkJICAgICAgb3ZlcnJpZGUgPT0gZmFsc2Ug PyAiIiA6ICItbW9kZS1vdmVycmlkZSIsCisJCQkJICAgICAgY3B1ID09IGZhbHNlID8gIiIgOiAi LWNwdS1sb2FkIiwKKwkJCQkgICAgICBncHUgPT0gZmFsc2UgPyAiIiA6ICItZ3B1LWxvYWQiLAor CQkJCSAgICAgIGZvcm1hdF9zdHIoZm9ybWF0X2lkeCksCisJCQkJICAgICAgdGlsaW5nX3N0cih0 aWxpbmdfaWR4KSkKKworCQkJc3RyZXNzKGRhdGEsIG92ZXJyaWRlLCBncHUsIGZvcm1hdF9pZHgs IHRpbGluZ19pZHgpOworCisJCQkvKgorCQkJICogQXMgd2UgY2hhbmdlIHRpbGluZy9mb3JtYXQg d2UgbmVlZCBhIG5ldyBGQgorCQkJICovCisJCQlmb3IgKGkgPSAwOyBpIDwgSUdUX01BWF9QSVBF UzsgaSsrKSB7CisJCQkJaWYgKGRhdGEtPmZiW2ldLmZiX2lkKSB7CisJCQkJCWlndF9yZW1vdmVf ZmIoZGF0YS0+ZGlzcGxheS5kcm1fZmQsICZkYXRhLT5mYltpXSk7CisJCQkJCWRhdGEtPmZiW2ld LmZiX2lkID0gMDsKKwkJCQl9CisJCQkJaWYgKGRhdGEtPmN1cnNvcl9mYltpXS5mYl9pZCkgewor CQkJCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCAmZGF0YS0+Y3Vyc29yX2Zi W2ldKTsKKwkJCQkJZGF0YS0+Y3Vyc29yX2ZiW2ldLmZiX2lkID0gMDsKKwkJCQl9CisJCQl9CisJ CX0KKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWlmIChjcHUpIHsKKwkJCWZvciAoaSA9IDA7IGkg PCBudW1iZXJfb2ZfY29yZXM7aSsrKSB7CisJCQkJZGF0YS0+Y3B1X3RocmVhZF9zdG9wW2ldID0g dHJ1ZTsKKwkJCQlwdGhyZWFkX2pvaW4oZGF0YS0+Y3B1X3RocmVhZFtpXSwgTlVMTCk7CisJCQl9 CisJCQlmb3IgKGkgPSAwO2kgPCBudW1iZXJfb2ZfY29yZXM7IGkrKykgeworCQkJCWZyZWUoZGF0 YS0+Y3B1X2NvbnRleHRbaV0uYnVmMSk7CisJCQkJZnJlZShkYXRhLT5jcHVfY29udGV4dFtpXS5i dWYyKTsKKwkJCX0KKwkJfQorCX0KK30KKworCitzdHJ1Y3QgZGF0YSBkYXRhID0geworCS5udW1f cGxhbmVzID0gNywKKwkuZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkubW9kaWZpZXIg PSBEUk1fRk9STUFUX01PRF9MSU5FQVIsCisJLmRldmlkID0gMCwKK307CisKKworaWd0X21haW4K K3sKKwlib29sIG1vZGVfb3ZlcnJpZGUgPSBmYWxzZTsKKwlib29sIGNwdV9sb2FkID0gZmFsc2U7 CisJYm9vbCBncHVfbG9hZCA9IGZhbHNlOworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRybV9m ZCA9IGRhdGEuZGlzcGxheS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9B TlkpOworCisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKKworCQlpZ3RfZGlzcGxh eV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEuZGlzcGxheS5kcm1fZmQpOworCQlpZ3RfcmVx dWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRw dXQoJmRhdGEuZGlzcGxheSk7CisJfQorCisJdGVzdCgmZGF0YSwgbW9kZV9vdmVycmlkZSwgY3B1 X2xvYWQsIGdwdV9sb2FkKTsKKworCWNwdV9sb2FkID0gdHJ1ZTsKKwlncHVfbG9hZCA9IHRydWU7 CisKKwl0ZXN0KCZkYXRhLCBtb2RlX292ZXJyaWRlLCBjcHVfbG9hZCwgZ3B1X2xvYWQpOworCisJ bW9kZV9vdmVycmlkZSA9IHRydWU7CisJY3B1X2xvYWQgPSBmYWxzZTsKKwlncHVfbG9hZCA9IGZh bHNlOworCisJdGVzdCgmZGF0YSwgbW9kZV9vdmVycmlkZSwgY3B1X2xvYWQsIGdwdV9sb2FkKTsK KworCWNwdV9sb2FkID0gdHJ1ZTsKKwlncHVfbG9hZCA9IHRydWU7CisKKwl0ZXN0KCZkYXRhLCBt b2RlX292ZXJyaWRlLCBjcHVfbG9hZCwgZ3B1X2xvYWQpOworCisJaWd0X2ZpeHR1cmUgeworCQlp Z3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOworCX0KK30KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1 aWxkCmluZGV4IDkwMTVmODA5Li5jNTg2NjQyYyAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVp bGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdF9wcm9ncyA9 IFsKIAkna21zX3BsYW5lX2xvd3JlcycsCiAJJ2ttc19wbGFuZV9tdWx0aXBsZScsCiAJJ2ttc19w bGFuZV9zY2FsaW5nJywKKwkna21zX3BsYW5lX3N0cmVzcycsCiAJJ2ttc19wcm9wX2Jsb2InLAog CSdrbXNfcHJvcGVydGllcycsCiAJJ2ttc19wc3InLAotLSAKMi4xNy4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=