From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 59FAFC4332F for ; Tue, 31 Oct 2023 15:29:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qPp3GT5NBXEbQmROKpWbZFtJRBhIhZZ4+SFINOWJZkQ=; b=Q1yB/W5t3zc2tU PkiF0gzTjdzV90Rmlc21A7FEhq+PmEuU03fmEqrZK9gl95rhAaNbk/lQTED296bDkhO8TIWdR85dp tAmTDZYLA23YhxR0PxtSLFWzOiJ9qNtyMHKmsWS9om4iJYJWyKaskdt7BxH8F1umrmXojlN3L69Y7 dtvSsCwdcSGoSZheYBRKXGJUuuXkNr0GnAK/3caG+q44TCBFnQbGz+mlgwS36HhPimCQ5aEcdP6eG wa8gKsP5wKwqn1Q312MCVdFdVcY5COrh7o55Pg9BXGkjwTa44rHEk0MBKxNBZAn8NiDE9I4HrmTDX EOOMCKgYcs25+A/D6dFQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qxqg3-005Wuq-2p; Tue, 31 Oct 2023 15:29:11 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qxqfz-005Wty-0T for linux-mtd@lists.infradead.org; Tue, 31 Oct 2023 15:29:09 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 363031C000B; Tue, 31 Oct 2023 15:28:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1698766141; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RPYUkZNPreY88VDhOmVn3AFyOFRRtuLzyph5YgbM3vw=; b=eP6LsbtTgo6LDa5+lKR/f83CNNGqISbapv0U2I6aLXb3X2fCHkzNPjvbXI1xd8xmC8qEsu ZP+B3iYZkLiCfqYxfwRtRmYIgodRCtj5xUMpZ3+md0+S3mkMWhz3PmgtFW8ZtViHj+2oA7 0Fr17W394i8zUeZPr8rGCvn86z/D01hN4L1Hj/MfJUbqhT33IcrHURRtb4+JEzcNukl009 UNfV5KwMIhT5KmeWzzo1hY1mHENs+Of8aq//RVhE9iono7AxX+yNSFJLx18/ot9RPr/qEc xNLLGDLNcQaWDcmYUZQa22+G2wydV42L2Qq+LzH0euWuFOiOUQMIlhiu7as/qQ== Date: Tue, 31 Oct 2023 16:28:56 +0100 From: Miquel Raynal To: Md Sadre Alam Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, robh+dt@kernel.org, conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, richard@nod.at, vigneshr@ti.com, broonie@kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, linux-spi@vger.kernel.org, quic_srichara@quicinc.com, qpic_varada@quicinc.com Subject: Re: [RFC PATCH 1/5] mtd: nand: ecc-qcom: Add support for ECC Engine Driver Message-ID: <20231031162856.1d9e3246@xps-13> In-Reply-To: <20231031120307.1600689-2-quic_mdalam@quicinc.com> References: <20231031120307.1600689-1-quic_mdalam@quicinc.com> <20231031120307.1600689-2-quic_mdalam@quicinc.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-GND-Sasl: miquel.raynal@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231031_082907_482316_69C249FB X-CRM114-Status: GOOD ( 29.26 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGksCgpxdWljX21kYWxhbUBxdWljaW5jLmNvbSB3cm90ZSBvbiBUdWUsIDMxIE9jdCAyMDIzIDE3 OjMzOjAzICswNTMwOgoKQ29tbWl0IGxvZyBpcyBtaXNzaW5nLgoKPiBTaWduZWQtb2ZmLWJ5OiBN ZCBTYWRyZSBBbGFtIDxxdWljX21kYWxhbUBxdWljaW5jLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBT cmljaGFyYW4gUiA8cXVpY19zcmljaGFyYUBxdWljaW5jLmNvbT4KCklmIFNyaWNoYXJhbiBpcyBh IGNvIGRldmVsb3BlciB5b3UgbmVlZCB0byB1c2UgdGhlIHJpZ2h0IHRhZ3MuIFBsZWFzZQpoYXZl IGEgbG9vayBhdCB0aGUgZG9jdW1lbnRhdGlvbi4gVXNpbmcgdGhlIHR3byBTb0IgaGVyZSBkb2Vz IG5vdCBtZWFuCmFueXRoaW5nLgoKPiAtLS0KPiAgZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnICAg IHwgICA3ICsrCj4gIGRyaXZlcnMvbXRkL25hbmQvTWFrZWZpbGUgICB8ICAgMSArCj4gIGRyaXZl cnMvbXRkL25hbmQvZWNjLXFjb20uYyB8IDE5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9tdGQvbmFuZC9lY2MtcWNvbS5jCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZwo+IGlu ZGV4IDViMGMyYzk1ZjEwYy4uMzMzY2VjODE4N2M4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbXRk L25hbmQvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZwo+IEBAIC02MSw2 ICs2MSwxMyBAQCBjb25maWcgTVREX05BTkRfRUNDX01FRElBVEVLCj4gIAloZWxwCj4gIAkgIFRo aXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgRUNDIGVuZ2luZSBmcm9tIE1lZGlh dGVrLgo+ICAKPiArY29uZmlnIE1URF9OQU5EX0VDQ19RQ09NCj4gKwl0cmlzdGF0ZSAiUXVhbGNv bW0gaGFyZHdhcmUgRUNDIGVuZ2luZSIKPiArCWRlcGVuZHMgb24gQVJDSF9RQ09NCgpTYW1lIGNv bW1lbnQgYXMgTWFyayByZWdhcmRpbmcgQ09NUElMRV9URVNUCgo+ICsJc2VsZWN0IE1URF9OQU5E X0VDQwo+ICsJaGVscAo+ICsJICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJl IEVDQyBlbmdpbmUgZnJvbSBRdWFsY29tbS4KPiArCj4gIGVuZG1lbnUKPiAgCj4gIGVuZG1lbnUK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9NYWtlZmlsZSBiL2RyaXZlcnMvbXRkL25h bmQvTWFrZWZpbGUKPiBpbmRleCAxOWUxMjkxYWM0ZDUuLmM3M2I4YTM0NTZlYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL210ZC9uYW5kL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9N YWtlZmlsZQo+IEBAIC0zLDYgKzMsNyBAQAo+ICBuYW5kY29yZS1vYmpzIDo9IGNvcmUubyBiYnQu bwo+ICBvYmotJChDT05GSUdfTVREX05BTkRfQ09SRSkgKz0gbmFuZGNvcmUubwo+ICBvYmotJChD T05GSUdfTVREX05BTkRfRUNDX01FRElBVEVLKSArPSBlY2MtbXRrLm8KPiArb2JqLSQoQ09ORklH X01URF9OQU5EX0VDQ19RQ09NKSArPSBlY2MtcWNvbS5vIHFwaWNfY29tbW9uLm8KPiAgCj4gIG9i ai15CSs9IG9uZW5hbmQvCj4gIG9iai15CSs9IHJhdy8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t dGQvbmFuZC9lY2MtcWNvbS5jIGIvZHJpdmVycy9tdGQvbmFuZC9lY2MtcWNvbS5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmE4NTQyM2VkMzY4YQo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL210ZC9uYW5kL2VjYy1xY29tLmMKPiBAQCAtMCwwICsx LDE5OCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQKPiAr LyoKPiArICogUUNPTSBFQ0MgRW5naW5lICBEcml2ZXIuCj4gKyAqIENvcHlyaWdodCAoQykgMjAy MyAgUXVhbGNvbW0gSW5jLgo+ICsgKiBBdXRob3JzOglNZCBzYWRyZSBBbGFtCQk8cXVpY19tZGFs YW1AcXVpY2luYy5jb20+Cj4gKyAqCQlTcmljaGFyYW4gUgkJPHF1aWNfc3JpY2hhcmFAcXVpY2lu Yy5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ludGVy cnVwdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2Yu aD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9t dXRleC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXRkL25hbmQtcXBpYy1jb21tb24uaD4KPiArCj4g Kwo+ICsKPiArLyogRUNDIG1vZGVzIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlciAqLwo+ICsj ZGVmaW5lIEVDQ19OT05FICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBFQ0NfUlNfNEJJVCAgICAg QklUKDEpCj4gKyNkZWZpbmUgRUNDX0JDSF80QklUICAgIEJJVCgyKQo+ICsjZGVmaW5lIEVDQ19C Q0hfOEJJVCAgICBCSVQoMykKPiArCj4gK3N0cnVjdCBxcGljX2VjY19jYXBzIHsKPiArCXUzMiBl cnJfbWFzazsKPiArCXUzMiBlcnJfc2hpZnQ7Cj4gKwljb25zdCB1OCAqZWNjX3N0cmVuZ3RoOwo+ ICsJY29uc3QgdTMyICplY2NfcmVnczsKPiArCXU4IG51bV9lY2Nfc3RyZW5ndGg7Cj4gKwl1OCBl Y2NfbW9kZV9zaGlmdDsKPiArCXUzMiBwYXJpdHlfYml0czsKPiArCWludCBwZ19pcnFfc2VsOwo+ ICt9Owo+ICsKPiArCj4gK3N0cnVjdCBxY29tX25hbmRfaG9zdCAqdG9fcWNvbV9uYW5kX2hvc3Qo c3RydWN0IG5hbmRfY2hpcCAqY2hpcCkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihjaGlw LCBzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QsIGNoaXApOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wodG9f cWNvbV9uYW5kX2hvc3QpOwo+ICsKPiArc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICoKPiAr Z2V0X3Fjb21fbmFuZF9jb250cm9sbGVyKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXApCj4gK3sKPiAr CXJldHVybiBjb250YWluZXJfb2YoY2hpcC0+Y29udHJvbGxlciwgc3RydWN0IHFjb21fbmFuZF9j b250cm9sbGVyLAo+ICsJCQkgICAgY29udHJvbGxlcik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChn ZXRfcWNvbV9uYW5kX2NvbnRyb2xsZXIpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBxcGljX2VjYyAq cXBpY19lY2NfZ2V0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gK3sKPiArCXN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gKwlzdHJ1Y3QgcXBpY19lY2MgKmVjYzsKPiArCj4gKwlwZGV2 ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShucCk7Cj4gKwlpZiAoIXBkZXYpCj4gKwkJcmV0dXJu IEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4gKwo+ICsJZWNjID0gcGxhdGZvcm1fZ2V0X2RydmRh dGEocGRldik7Cj4gKwlpZiAoIWVjYykgewo+ICsJCXB1dF9kZXZpY2UoJnBkZXYtPmRldik7Cj4g KwkJcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGVj YzsKPiArfQo+ICsKPiArc3RydWN0IHFwaWNfZWNjICpvZl9xcGljX2VjY19nZXQoc3RydWN0IGRl dmljZV9ub2RlICpvZl9ub2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgcXBpY19lY2MgKmVjYyA9IE5VTEw7 Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwo+ICsKPiArCW5wID0gb2ZfcGFyc2VfcGhhbmRs ZShvZl9ub2RlLCAibmFuZC1lY2MtZW5naW5lIiwgMCk7Cj4gKwkvKiBmb3IgYmFja3dhcmQgY29t cGF0aWJpbGl0eSAqLwoKVGhlcmUgaXMgbm8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBoYW5k bGUgdXBzdHJlYW0KCj4gKwlpZiAoIW5wKQo+ICsJCW5wID0gb2ZfcGFyc2VfcGhhbmRsZShvZl9u b2RlLCAiZWNjLWVuZ2luZSIsIDApOwo+ICsJaWYgKG5wKSB7Cj4gKwkJZWNjID0gcXBpY19lY2Nf Z2V0KG5wKTsKPiArCQlvZl9ub2RlX3B1dChucCk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGVjYzsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKG9mX3FwaWNfZWNjX2dldCk7Cj4gKwo+ICtpbnQgcWNvbV9l Y2NfY29uZmlnKHN0cnVjdCBxcGljX2VjYyAgKmVjYywgaW50IGVjY19zdHJlbmd0aCwKPiArCQkJ Ym9vbCB3aWRlX2J1cykKPiArewo+ICsJZWNjLT5lY2NfbW9kZXMgPSAoRUNDX1JTXzRCSVQgfCBF Q0NfQkNIXzhCSVQpOwo+ICsKPiArCWlmIChlY2Nfc3RyZW5ndGggPj0gOCkgewoKSWYgeW91ciBl bmdpbmUgZG9lcyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gYW4gOC1iaXQgc3RyZW5ndGggdGhpcwpj b25kaXRpb24gc2VlbXMgYSBiaXQgc3RyYW5nZS4KCj4gKwkJLyogOCBiaXQgRUNDIGRlZmF1bHRz IHRvIEJDSCBFQ0Mgb24gYWxsIHBsYXRmb3JtcyAqLwo+ICsJCWVjYy0+YmNoX2VuYWJsZWQgPSB0 cnVlOwo+ICsJCWVjYy0+ZWNjX21vZGUgPSAxOwoKZWNjX21vZGVzIGFib3ZlLCBlY2NfbW9kZSBo ZXJlLCBub3QgdmVyeSBjbGVhciB3aGF0IHRoaXMgaXMuClBsZWFzZSBnaXZlIG1lYW5pbmdmdWwg bmFtZXMgdG8geW91ciB2YXJpYWJsZXMsIG5vdCBqdXN0IHRoZSBiaXQgbmFtZQp0aGF0IHRoaXMg aXMgY2FwdHVyaW5nIGJlY2F1c2UgaGVyZSBpdCdzIHVuY2xlYXIgd2hhdCB0aGlzIGlzLgoKPiAr Cj4gKwkJaWYgKHdpZGVfYnVzKSB7Cj4gKwkJCWVjYy0+ZWNjX2J5dGVzX2h3ID0gMTQ7Cj4gKwkJ CWVjYy0+c3BhcmVfYnl0ZXMgPSAwOwoKU3BhcmUgYnl0ZXMgZGVwZW5kIG9uIHRoZSBmbGFzaCwg eW91IGNhbid0IHVzZSBjb25zdGFudCB2YWx1ZXMgbGlrZQp0aGF0LgoKSSBhbHNvIGRvbid0IHVu ZGVyc3RhbmQgd2hhdCB3aWRlX2J1cyBpcyBhbmQgd2h5IGl0IGhhcyBhbiBpbXBhY3Qgb2YKb25s eSAxIG9uIHRoZSBudW1iZXIgb2YgRUNDIGJ5dGVzLiBQbGVhc2UgbWFrZSBhbGwgdGhpcyBtb3Jl IGV4cGxpY2l0LgoKPiArCQkJZWNjLT5iYm1fc2l6ZSA9IDI7Cj4gKwkJfSBlbHNlIHsKPiArCQkJ ZWNjLT5lY2NfYnl0ZXNfaHcgPSAxMzsKPiArCQkJZWNjLT5zcGFyZV9ieXRlcyA9IDI7Cj4gKwkJ CWVjYy0+YmJtX3NpemUgPSAxOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4gKwkJLyoKPiArCQkgKiBp ZiB0aGUgY29udHJvbGxlciBzdXBwb3J0cyBCQ0ggZm9yIDQgYml0IEVDQywgdGhlIGNvbnRyb2xs ZXIKPiArCQkgKiB1c2VzIGxlc3NlciBieXRlcyBmb3IgRUNDLiBJZiBSUyBpcyB1c2VkLCB0aGUg RUNDIGJ5dGVzIGlzCj4gKwkJICogYWx3YXlzIDEwIGJ5dGVzCj4gKwkJICovCj4gKwkJaWYgKGVj Yy0+ZWNjX21vZGVzICYgRUNDX0JDSF80QklUKSB7Cj4gKwkJCS8qIEJDSCAqLwo+ICsJCQllY2Mt PmJjaF9lbmFibGVkID0gdHJ1ZTsKPiArCQkJZWNjLT5lY2NfbW9kZSA9IDA7Cj4gKwkJCWlmICh3 aWRlX2J1cykgewo+ICsJCQkJZWNjLT5lY2NfYnl0ZXNfaHcgPSA4Owo+ICsJCQkJZWNjLT5zcGFy ZV9ieXRlcyA9IDI7Cj4gKwkJCQllY2MtPmJibV9zaXplID0gMjsKPiArCQkJfSBlbHNlIHsKPiAr CQkJCWVjYy0+ZWNjX2J5dGVzX2h3ID0gNzsKPiArCQkJCWVjYy0+c3BhcmVfYnl0ZXMgPSA0Owo+ ICsJCQkJZWNjLT5iYm1fc2l6ZSA9IDE7Cj4gKwkJCX0KPiArCQl9IGVsc2Ugewo+ICsJCQkvKiBS UyAqLwo+ICsJCQllY2MtPmVjY19ieXRlc19odyA9IDEwOwo+ICsJCQlpZiAod2lkZV9idXMpIHsK PiArCQkJCWVjYy0+c3BhcmVfYnl0ZXMgPSAwOwo+ICsJCQkJZWNjLT5iYm1fc2l6ZSA9IDI7Cj4g KwkJCX0gZWxzZSB7Cj4gKwkJCQllY2MtPnNwYXJlX2J5dGVzID0gMTsKPiArCQkJCWVjYy0+YmJt X3NpemUgPSAxOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g K0VYUE9SVF9TWU1CT0wocWNvbV9lY2NfY29uZmlnKTsKClRoYW5rcywKTWlxdcOobAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1U RCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K