From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t 5/5] igt/kms: Do not wait for fence completion during commit Date: Thu, 6 Jul 2017 09:11:47 +0200 Message-ID: <20170706071147.15414-6-maarten.lankhorst@linux.intel.com> References: <20170706071147.15414-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 076016E5AB for ; Thu, 6 Jul 2017 07:12:08 +0000 (UTC) In-Reply-To: <20170706071147.15414-1-maarten.lankhorst@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 Cc: gustavo.padovan@collabora.co.uk List-Id: intel-gfx@lists.freedesktop.org VGhpcyB3aWxsIG1ha2UgdGhlIElHVCB0ZXN0cyB0aGF0IHVzZSBmZW5jZXMgbW9yZSB1c2VmdWws IHNpbmNlIHRoZXkgY2FuCnBlcmZvcm0gdGhlIHdhaXRpbmcgdGhlbXNlbHZlcyB3aGVuIHJlcXVp cmVkLgoKVG8gY2VsZWJyYXRlLCBhbHNvIGFkZCBwbGFuZS11c2UtYWZ0ZXItbm9uYmxvY2tpbmct dW5iaW5kLWZlbmNpbmcsCnRoZSBmZW5jZSB2ZXJzaW9uIG9mIHBsYW5lLXVzZS1hZnRlci1ub25i bG9ja2luZy11bmJpbmQuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGxpYi9pZ3Rfa21zLmMgICAgICAgICAg ICAgICAgIHwgMTkgKysrKysrLS0tLS0tCiB0ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYyB8 IDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMKaW5kZXggOGJmNTZmYWY0MWU5Li42MzkwMjI5 ZjE1NDYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAt MTY5OCw2ICsxNjk4LDcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRp c3BsYXksIGludCBkcm1fZmQpCiAJCXBpcGUtPnBsYW5lX2N1cnNvciA9IC0xOwogCQlwaXBlLT5w bGFuZV9wcmltYXJ5ID0gLTE7CiAJCXBpcGUtPnBsYW5lcyA9IE5VTEw7CisJCXBpcGUtPm91dF9m ZW5jZV9mZCA9IC0xOwogCiAJCWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgcGlw ZS0+Y3J0Y19pZCwKIAkJCQkgICAgImJhY2tncm91bmRfY29sb3IiLApAQCAtMTkxMyw2ICsxOTE0 LDkgQEAgc3RhdGljIHZvaWQgaWd0X3BpcGVfZmluaShpZ3RfcGlwZV90ICpwaXBlKQogCiAJZnJl ZShwaXBlLT5wbGFuZXMpOwogCXBpcGUtPnBsYW5lcyA9IE5VTEw7CisKKwlpZiAocGlwZS0+b3V0 X2ZlbmNlX2ZkICE9IC0xKQorCQljbG9zZShwaXBlLT5vdXRfZmVuY2VfZmQpOwogfQogCiBzdGF0 aWMgdm9pZCBpZ3Rfb3V0cHV0X2ZpbmkoaWd0X291dHB1dF90ICpvdXRwdXQpCkBAIC0yNTAyLDcg KzI1MDYsMTEgQEAgc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2NydGNfY29tbWl0KGln dF9waXBlX3QgKnBpcGVfb2JqLCBkcm1Nb2RlQXRvbWljUmUKIAkJaWd0X2F0b21pY19wb3B1bGF0 ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19BQ1RJVkUsICEhb3V0cHV0KTsKIAl9 CiAKLQlwaXBlX29iai0+b3V0X2ZlbmNlX2ZkID0gLTE7CisJaWYgKHBpcGVfb2JqLT5vdXRfZmVu Y2VfZmQgIT0gLTEpIHsKKwkJY2xvc2UocGlwZV9vYmotPm91dF9mZW5jZV9mZCk7CisJCXBpcGVf b2JqLT5vdXRfZmVuY2VfZmQgPSAtMTsKKwl9CisKIAlpZiAocGlwZV9vYmotPm91dF9mZW5jZV9y ZXF1ZXN0ZWQpCiAJewogCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9v YmosIElHVF9DUlRDX09VVF9GRU5DRV9QVFIsCkBAIC0yNjA3LDE2ICsyNjE1LDkgQEAgZGlzcGxh eV9jb21taXRfY2hhbmdlZChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIGlndF9jb21taXRf c3R5bGUgcykKIAkJaWYgKHMgIT0gQ09NTUlUX1VOSVZFUlNBTCkKIAkJCXBpcGVfb2JqLT5tb2Rl X2NoYW5nZWQgPSBmYWxzZTsKIAotCQlpZiAocyA9PSBDT01NSVRfQVRPTUlDKSB7CisJCWlmIChz ID09IENPTU1JVF9BVE9NSUMgJiYgcGlwZV9vYmotPm91dF9mZW5jZV9yZXF1ZXN0ZWQpIHsKIAkJ CXBpcGVfb2JqLT5vdXRfZmVuY2VfcmVxdWVzdGVkID0gZmFsc2U7Ci0KLQkJCWlmIChwaXBlX29i ai0+b3V0X2ZlbmNlX2ZkID09IC0xKQotCQkJCWNvbnRpbnVlOwotCiAJCQlpZ3RfYXNzZXJ0KHBp cGVfb2JqLT5vdXRfZmVuY2VfZmQgPj0gMCk7Ci0JCQlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vf d2FpdChwaXBlX29iai0+b3V0X2ZlbmNlX2ZkLCAxMDAwKSwgMCk7Ci0JCQljbG9zZShwaXBlX29i ai0+b3V0X2ZlbmNlX2ZkKTsKLQkJCXBpcGVfb2JqLT5vdXRfZmVuY2VfZmQgPSAtMTsKIAkJfQog CiAJCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jIGIvdGVzdHMva21zX2F0b21pY190 cmFuc2l0aW9uLmMKaW5kZXggNmUyYjI1ZGE3NWRiLi5lMjI3NjNiZGY5NGIgMTAwNjQ0Ci0tLSBh L3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jCisrKyBiL3Rlc3RzL2ttc19hdG9taWNfdHJh bnNpdGlvbi5jCkBAIC0zNzcsNiArMzc3LDMxIEBAIHN0YXRpYyB2b2lkIGF0b21pY19jb21taXQo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUsIHVuc2lnbmVkIGludCBmCiAJ aWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCBmbGFncywgZGF0YSk7CiB9CiAKK3N0 YXRpYyBpbnQgZmRfY29tcGxldGVkKGludCBmZCkKK3sKKwlzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsg ZmQsIFBPTExJTiB9OworCWludCByZXQ7CisKKwlyZXQgPSBwb2xsKCZwZmQsIDEsIDApOworCWln dF9hc3NlcnQocmV0ID49IDApOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRf Zm9yX3RyYW5zaXRpb24oaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUsIGJv b2wgbm9uYmxvY2tpbmcsIGJvb2wgZmVuY2luZykKK3sKKwlpZiAoZmVuY2luZykgeworCQlpbnQg ZmVuY2VfZmQgPSBkaXNwbGF5LT5waXBlc1twaXBlXS5vdXRfZmVuY2VfZmQ7CisKKwkJaWd0X2Fz c2VydF9uZXEoZmRfY29tcGxldGVkKGZlbmNlX2ZkKSwgbm9uYmxvY2tpbmcpOworCisJCWlndF9h c3NlcnQoc3luY19mZW5jZV93YWl0KGZlbmNlX2ZkLCAzMDAwMCkgPT0gMCk7CisJfSBlbHNlIHsK KwkJaWd0X2Fzc2VydF9uZXEoZmRfY29tcGxldGVkKGRpc3BsYXktPmRybV9mZCksIG5vbmJsb2Nr aW5nKTsKKworCQlkcm1IYW5kbGVFdmVudChkaXNwbGF5LT5kcm1fZmQsICZkcm1fZXZlbnRzKTsK Kwl9Cit9CisKIC8qCiAgKiAxLiBTZXQgcHJpbWFyeSBwbGFuZSB0byBhIGtub3duIGZiLgogICog Mi4gTWFrZSBzdXJlIGdldGNydGMgcmV0dXJucyB0aGUgY29ycmVjdCBmYiBpZC4KQEAgLTM5Mywx NCArNDE4LDE3IEBAIHJ1bl90cmFuc2l0aW9uX3Rlc3QoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwg ZW51bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0CiAJc3RydWN0IGlndF9mYiBmYiwg YXJnYl9mYiwgc3ByaXRlX2ZiOwogCWRybU1vZGVNb2RlSW5mbyAqbW9kZSwgb3ZlcnJpZGVfbW9k ZTsKIAlpZ3RfcGxhbmVfdCAqcGxhbmU7Ci0JdWludDMyX3QgaXRlcl9tYXggPSAxIDw8IGRpc3Bs YXktPnBpcGVzW3BpcGVdLm5fcGxhbmVzLCBpOwotCXN0cnVjdCBwbGFuZV9wYXJtcyBwYXJtc1tk aXNwbGF5LT5waXBlc1twaXBlXS5uX3BsYW5lc107CisJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAm ZGlzcGxheS0+cGlwZXNbcGlwZV07CisJdWludDMyX3QgaXRlcl9tYXggPSAxIDw8IHBpcGVfb2Jq LT5uX3BsYW5lcywgaTsKKwlzdHJ1Y3QgcGxhbmVfcGFybXMgcGFybXNbcGlwZV9vYmotPm5fcGxh bmVzXTsKIAlib29sIHNraXBfdGVzdCA9IGZhbHNlOwotCXVuc2lnbmVkIGZsYWdzID0gRFJNX01P REVfUEFHRV9GTElQX0VWRU5UOworCXVuc2lnbmVkIGZsYWdzID0gMDsKIAlpbnQgcmV0OwogCiAJ aWYgKGZlbmNpbmcpCiAJCXByZXBhcmVfZmVuY2luZyhkaXNwbGF5LCBwaXBlKTsKKwllbHNlCisJ CWZsYWdzIHw9IERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVDsKIAogCWlmIChub25ibG9ja2luZykK IAkJZmxhZ3MgfD0gRFJNX01PREVfQVRPTUlDX05PTkJMT0NLOwpAQCAtNDQ0LDEwICs0NzIsMTAg QEAgcnVuX3RyYW5zaXRpb25fdGVzdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUg cGlwZSwgaWd0X291dHB1dF90ICpvdXRwdXQKIAkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwgcGlw ZSwgaXRlcl9tYXggLSAxLCBwYXJtcyk7CiAKIAkJaWYgKGZlbmNpbmcpCi0JCQlpZ3RfcGlwZV9y ZXF1ZXN0X291dF9mZW5jZSgmZGlzcGxheS0+cGlwZXNbcGlwZV0pOworCQkJaWd0X3BpcGVfcmVx dWVzdF9vdXRfZmVuY2UocGlwZV9vYmopOwogCiAJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21t aXRfYXRvbWljKGRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgfCBEUk1fTU9ERV9B VE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7Ci0JCWlmIChyZXQgIT0gLUVJTlZBTCB8fCBkaXNw bGF5LT5waXBlc1twaXBlXS5uX3BsYW5lcyA8IDMpCisJCWlmIChyZXQgIT0gLUVJTlZBTCB8fCBw aXBlX29iai0+bl9wbGFuZXMgPCAzKQogCQkJYnJlYWs7CiAKIAkJcmV0ID0gMDsKQEAgLTQ3NCwy NSArNTAyLDI4IEBAIHJ1bl90cmFuc2l0aW9uX3Rlc3QoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwg ZW51bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0CiAJaWd0X2Rpc3BsYXlfY29tbWl0 MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKIAogCWlmICh0eXBlID09IFRSQU5TSVRJT05fQUZU RVJfRlJFRSkgewotCQlzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgZGlzcGxheS0+ZHJtX2ZkLCBQT0xM SU4gfTsKKwkJaW50IGZlbmNlX2ZkID0gLTE7CiAKIAkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwg cGlwZSwgMCwgcGFybXMpOwogCiAJCWF0b21pY19jb21taXQoZGlzcGxheSwgcGlwZSwgZmxhZ3Ms ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpMCwgZmVuY2luZyk7CisJCWlmIChmZW5jaW5nKSB7CisJ CQlmZW5jZV9mZCA9IHBpcGVfb2JqLT5vdXRfZmVuY2VfZmQ7CisJCQlwaXBlX29iai0+b3V0X2Zl bmNlX2ZkID0gLTE7CisJCX0KIAogCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBp cGUsIHBsYW5lKQogCQkJcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwogCiAJCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CiAKLQkJLyoKLQkJICogUHJldmlvdXMg YXRvbWljIGNvbW1pdCBzaG91bGQgaGF2ZSBjb21wbGV0ZWQKLQkJICogYmVmb3JlIHRoaXMgcGxh bmUtb25seSBhdG9taWMgY29tbWl0LgotCQkgKi8KLQkJaWd0X2Fzc2VydF9lcShwb2xsKCZwZmQs IDEsIDApLCAxKTsKLQotCQlkcm1IYW5kbGVFdmVudChkaXNwbGF5LT5kcm1fZmQsICZkcm1fZXZl bnRzKTsKLQorCQlpZiAoZmVuY2VfZmQgIT0gLTEpIHsKKwkJCWlndF9hc3NlcnQoZmRfY29tcGxl dGVkKGZlbmNlX2ZkKSk7CisJCQljbG9zZShmZW5jZV9mZCk7CisJCX0gZWxzZSB7CisJCQlpZ3Rf YXNzZXJ0KGZkX2NvbXBsZXRlZChkaXNwbGF5LT5kcm1fZmQpKTsKKwkJCXdhaXRfZm9yX3RyYW5z aXRpb24oZGlzcGxheSwgcGlwZSwgZmFsc2UsIGZlbmNpbmcpOworCQl9CiAJCWdvdG8gY2xlYW51 cDsKIAl9CiAKQEAgLTUwMiw3ICs1MzMsNyBAQCBydW5fdHJhbnNpdGlvbl90ZXN0KGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dAogCQl3 bV9zZXR1cF9wbGFuZShkaXNwbGF5LCBwaXBlLCBpLCBwYXJtcyk7CiAKIAkJYXRvbWljX2NvbW1p dChkaXNwbGF5LCBwaXBlLCBmbGFncywgKHZvaWQgKikodW5zaWduZWQgbG9uZylpLCBmZW5jaW5n KTsKLQkJZHJtSGFuZGxlRXZlbnQoZGlzcGxheS0+ZHJtX2ZkLCAmZHJtX2V2ZW50cyk7CisJCXdh aXRfZm9yX3RyYW5zaXRpb24oZGlzcGxheSwgcGlwZSwgbm9uYmxvY2tpbmcsIGZlbmNpbmcpOwog CiAJCWlmICh0eXBlID09IFRSQU5TSVRJT05fTU9ERVNFVF9ESVNBQkxFKSB7CiAJCQlpZ3Rfb3V0 cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsKQEAgLTUxMCw3ICs1NDEsNyBAQCBydW5f dHJhbnNpdGlvbl90ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBp Z3Rfb3V0cHV0X3QgKm91dHB1dAogCQkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwgcGlwZSwgMCwg cGFybXMpOwogCiAJCQlhdG9taWNfY29tbWl0KGRpc3BsYXksIHBpcGUsIGZsYWdzLCAodm9pZCAq KSAwVUwsIGZlbmNpbmcpOwotCQkJZHJtSGFuZGxlRXZlbnQoZGlzcGxheS0+ZHJtX2ZkLCAmZHJt X2V2ZW50cyk7CisJCQl3YWl0X2Zvcl90cmFuc2l0aW9uKGRpc3BsYXksIHBpcGUsIG5vbmJsb2Nr aW5nLCBmZW5jaW5nKTsKIAkJfSBlbHNlIHsKIAkJCXVpbnQzMl90IGo7CiAKQEAgLTUyMiwxNCAr NTUzLDE0IEBAIHJ1bl90cmFuc2l0aW9uX3Rlc3QoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51 bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0CiAJCQkJCWlndF9vdXRwdXRfb3ZlcnJp ZGVfbW9kZShvdXRwdXQsICZvdmVycmlkZV9tb2RlKTsKIAogCQkJCWF0b21pY19jb21taXQoZGlz cGxheSwgcGlwZSwgZmxhZ3MsICh2b2lkICopKHVuc2lnbmVkIGxvbmcpIGosIGZlbmNpbmcpOwot CQkJCWRybUhhbmRsZUV2ZW50KGRpc3BsYXktPmRybV9mZCwgJmRybV9ldmVudHMpOworCQkJCXdh aXRfZm9yX3RyYW5zaXRpb24oZGlzcGxheSwgcGlwZSwgbm9uYmxvY2tpbmcsIGZlbmNpbmcpOwog CiAJCQkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwgcGlwZSwgaSwgcGFybXMpOwogCQkJCWlmICh0 eXBlID09IFRSQU5TSVRJT05fTU9ERVNFVCkKIAkJCQkJaWd0X291dHB1dF9vdmVycmlkZV9tb2Rl KG91dHB1dCwgTlVMTCk7CiAKIAkJCQlhdG9taWNfY29tbWl0KGRpc3BsYXksIHBpcGUsIGZsYWdz LCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKSBpLCBmZW5jaW5nKTsKLQkJCQlkcm1IYW5kbGVFdmVu dChkaXNwbGF5LT5kcm1fZmQsICZkcm1fZXZlbnRzKTsKKwkJCQl3YWl0X2Zvcl90cmFuc2l0aW9u KGRpc3BsYXksIHBpcGUsIG5vbmJsb2NraW5nLCBmZW5jaW5nKTsKIAkJCX0KIAkJfQogCX0KQEAg LTg3NCw2ICs5MDUsMTAgQEAgaWd0X21haW4KIAkJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291 dHB1dCgmZGlzcGxheSwgcGlwZSwgb3V0cHV0KQogCQkJcnVuX3RyYW5zaXRpb25fdGVzdCgmZGlz cGxheSwgcGlwZSwgb3V0cHV0LCBUUkFOU0lUSU9OX0FGVEVSX0ZSRUUsIHRydWUsIGZhbHNlKTsK IAorCWlndF9zdWJ0ZXN0KCJwbGFuZS11c2UtYWZ0ZXItbm9uYmxvY2tpbmctdW5iaW5kLWZlbmNp bmciKQorCQlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCZkaXNwbGF5LCBwaXBlLCBv dXRwdXQpCisJCQlydW5fdHJhbnNpdGlvbl90ZXN0KCZkaXNwbGF5LCBwaXBlLCBvdXRwdXQsIFRS QU5TSVRJT05fQUZURVJfRlJFRSwgdHJ1ZSwgdHJ1ZSk7CisKIAlpZ3Rfc3VidGVzdCgicGxhbmUt YWxsLW1vZGVzZXQtdHJhbnNpdGlvbiIpCiAJCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRw dXQoJmRpc3BsYXksIHBpcGUsIG91dHB1dCkKIAkJCXJ1bl90cmFuc2l0aW9uX3Rlc3QoJmRpc3Bs YXksIHBpcGUsIG91dHB1dCwgVFJBTlNJVElPTl9NT0RFU0VULCBmYWxzZSwgZmFsc2UpOwotLSAK Mi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK