From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [PATCH v5 09/11] drm/mediatek: add hdmi driver for MT2701 and MT7623 Date: Wed, 3 Oct 2018 11:52:51 +0800 Message-ID: <1538538771.14795.0.camel@mtksdaap41> References: <20181003034151.31452-1-bibby.hsieh@mediatek.com> <20181003034151.31452-10-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181003034151.31452-10-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Bibby Hsieh Cc: linux-kernel@vger.kernel.org, Sascha Hauer , chunhui dai , David Airlie , Daniel Vetter , Cawa Cheng , dri-devel@lists.freedesktop.org, Mao Huang , Thierry Reding , linux-mediatek@lists.infradead.org, Matthias Brugger , Yingjoe Chen , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGksIEJpYmJ5OgoKT24gV2VkLCAyMDE4LTEwLTAzIGF0IDExOjQxICswODAwLCBCaWJieSBIc2ll aCB3cm90ZToKPiBGcm9tOiBjaHVuaHVpIGRhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgo+ IAo+IFRoaXMgcGF0Y2ggYWRkcyBoZG1pIGRpcnZlciBzdXBwb3QgZm9yIGJvdGggTVQyNzAxIGFu ZCBNVDc2MjMuCj4gQW5kIGFsc28gc3VwcG9ydCBvdGhlciAoZXhpc3Rpbmcgb3IgZnV0dXJlKSBj aGlwcyB0aGF0IHVzZQo+IHRoZSBzYW1lIGJpbmRpbmcgYW5kIGRyaXZlci4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBjaHVuaHVpIGRhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgoKUmV2aWV3ZWQt Ynk6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfaGRtaS5jICAgICAgICAgICAgfCAgIDkgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jICAgICAgICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuaCAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5jIHwgMjEyICsrKysrKysrKysrKysr KysrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfbXQyNzAxX2hkbWlfcGh5LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCj4gaW5k ZXggNjFjZjBkMmFiMjhhLi44MmFlNDljNjQyMjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01h a2VmaWxlCj4gQEAgLTE5LDcgKzE5LDggQEAgb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFSykgKz0g bWVkaWF0ZWstZHJtLm8KPiAgbWVkaWF0ZWstZHJtLWhkbWktb2JqcyA6PSBtdGtfY2VjLm8gXAo+ ICAJCQkgIG10a19oZG1pLm8gXAo+ICAJCQkgIG10a19oZG1pX2RkYy5vIFwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBtdGtfbXQyNzAxX2hkbWlfcGh5Lm8gXAo+ICAJCQkgIG10a19tdDgx NzNfaGRtaV9waHkubyBcCj4gIAkJCSAgbXRrX2hkbWlfcGh5Lm8KPiAgCj4gLW9iai0kKENPTkZJ R19EUk1fTUVESUFURUtfSERNSSkgKz0gbWVkaWF0ZWstZHJtLWhkbWkubwo+IFwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQo+ICtvYmotJChDT05GSUdfRFJNX01FRElBVEVLX0hETUkpICs9IG1l ZGlhdGVrLWRybS1oZG1pLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYwo+IGluZGV4 IGQ2MmU2ODVjZWM3My4uMTFlMzY0NGRhNzlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19oZG1pLmMKPiBAQCAtMjQxLDggKzI0MSwxMyBAQCBzdGF0aWMgdm9pZCBtdGtfaGRtaV9od19t YWtlX3JlZ193cml0YWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5hYmxlKQo+ICAJ ICogVGhlIEFSTSB0cnVzdGVkIGZpcm13YXJlIHByb3ZpZGVzIGFuIEFQSSBmb3IgdGhlIEhETUkg ZHJpdmVyIHRvIHNldAo+ICAJICogdGhpcyBjb250cm9sIGJpdCB0byBlbmFibGUgSERNSSBvdXRw dXQgaW4gc3VwZXJ2aXNvciBtb2RlLgo+ICAJICovCj4gLQlhcm1fc21jY2Nfc21jKE1US19TSVBf U0VUX0FVVEhPUklaRURfU0VDVVJFX1JFRywgMHgxNDAwMDkwNCwgMHg4MDAwMDAwMCwKPiAtCQkg ICAgICAwLCAwLCAwLCAwLCAwLCAmcmVzKTsKPiArCWlmIChoZG1pX3BoeS0+Y29uZiAmJiBoZG1p X3BoeS0+Y29uZi0+dHpfZGlzYWJsZWQpCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnN5 c19yZWdtYXAsCj4gKwkJCQkgICBoZG1pLT5zeXNfb2Zmc2V0ICsgSERNSV9TWVNfQ0ZHMjAsCj4g KwkJCQkgICAweDgwMDA4MDA1LCBlbmFibGUgPyAweDgwMDAwMDA1IDogMHg4MDAwKTsKPiArCWVs c2UKPiArCQlhcm1fc21jY2Nfc21jKE1US19TSVBfU0VUX0FVVEhPUklaRURfU0VDVVJFX1JFRywg MHgxNDAwMDkwNCwKPiArCQkJICAgICAgMHg4MDAwMDAwMCwgMCwgMCwgMCwgMCwgMCwgJnJlcyk7 Cj4gIAo+ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnN5c19yZWdtYXAsIGhkbWktPnN5c19v ZmZzZXQgKyBIRE1JX1NZU19DRkcyMCwKPiAgCQkJICAgSERNSV9QQ0xLX0ZSRUVfUlVOLCBlbmFi bGUgPyBIRE1JX1BDTEtfRlJFRV9SVU4gOiAwKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19oZG1pX3BoeS5jCj4gaW5kZXggNTE0ZjNlOWE4NzY3Li40ZWY5YzU3ZmZkNDQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jCj4gQEAgLTIxNCw2ICsyMTQsOSBA QCBzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfaGRt aV9waHlfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQyNzAxLWhk bWktcGh5IiwKPiArCSAgLmRhdGEgPSAmbXRrX2hkbWlfcGh5XzI3MDFfY29uZiwKPiArCX0sCj4g IAl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pLXBoeSIsCj4gIAkgIC5kYXRh ID0gJm10a19oZG1pX3BoeV84MTczX2NvbmYsCj4gIAl9LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2hkbWlfcGh5LmgKPiBpbmRleCAwOWI4ZjUyNWU2YjguLmYzOWIxZmM2NjYxMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKPiBAQCAtMjAsNiArMjAs NyBAQAo+ICBzdHJ1Y3QgbXRrX2hkbWlfcGh5Owo+ICAKPiAgc3RydWN0IG10a19oZG1pX3BoeV9j b25mIHsKPiArCWJvb2wgdHpfZGlzYWJsZWQ7Cj4gIAljb25zdCBzdHJ1Y3QgY2xrX29wcyAqaGRt aV9waHlfY2xrX29wczsKPiAgCXZvaWQgKCpoZG1pX3BoeV9lbmFibGVfdG1kcykoc3RydWN0IG10 a19oZG1pX3BoeSAqaGRtaV9waHkpOwo+ICAJdm9pZCAoKmhkbWlfcGh5X2Rpc2FibGVfdG1kcyko c3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpOwo+IEBAIC01NCw1ICs1NSw2IEBAIHVuc2ln bmVkIGxvbmcgbXRrX2hkbWlfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAo+ICAK PiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2hkbWlfcGh5X2RyaXZlcjsKPiAg ZXh0ZXJuIHN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9waHlfODE3M19jb25mOwo+ ICtleHRlcm4gc3RydWN0IG10a19oZG1pX3BoeV9jb25mIG10a19oZG1pX3BoeV8yNzAxX2NvbmY7 Cj4gIAo+ICAjZW5kaWYgLyogX01US19IRE1JX1BIWV9IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlfcGh5LmMgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLmZjYzQyZGM2ZWE3Zgo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5jCj4gQEAgLTAs MCArMSwyMTIgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoK PiArICogQ29weXJpZ2h0IChjKSAyMDE4IE1lZGlhVGVrIEluYy4KPiArICogQXV0aG9yOiBDaHVu aHVpIERhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRl ICJtdGtfaGRtaV9waHkuaCIKPiArCj4gKyNkZWZpbmUgSERNSV9DT04wCTB4MDAKPiArI2RlZmlu ZSBSR19IRE1JVFhfRFJWX0lCSUFTCQkwCj4gKyNkZWZpbmUgUkdfSERNSVRYX0RSVl9JQklBU19N QVNLCSgweDNmIDw8IDApCj4gKyNkZWZpbmUgUkdfSERNSVRYX0VOX1NFUgkJMTIKPiArI2RlZmlu ZSBSR19IRE1JVFhfRU5fU0VSX01BU0sJCSgweDBmIDw8IDEyKQo+ICsjZGVmaW5lIFJHX0hETUlU WF9FTl9TTERPCQkxNgo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9TTERPX01BU0sJCSgweDBmIDw8 IDE2KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9QUkVECQkyMAo+ICsjZGVmaW5lIFJHX0hETUlU WF9FTl9QUkVEX01BU0sJCSgweDBmIDw8IDIwKQo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9JTVAJ CTI0Cj4gKyNkZWZpbmUgUkdfSERNSVRYX0VOX0lNUF9NQVNLCQkoMHgwZiA8PCAyNCkKPiArI2Rl ZmluZSBSR19IRE1JVFhfRU5fRFJWCQkyOAo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9EUlZfTUFT SwkJKDB4MGYgPDwgMjgpCj4gKwo+ICsjZGVmaW5lIEhETUlfQ09OMQkweDA0Cj4gKyNkZWZpbmUg UkdfSERNSVRYX1BSRURfSUJJQVMJCTE4Cj4gKyNkZWZpbmUgUkdfSERNSVRYX1BSRURfSUJJQVNf TUFTSwkoMHgwZiA8PCAxOCkKPiArI2RlZmluZSBSR19IRE1JVFhfUFJFRF9JTVAJCSgweDAxIDw8 IDIyKQo+ICsjZGVmaW5lIFJHX0hETUlUWF9EUlZfSU1QCQkyNgo+ICsjZGVmaW5lIFJHX0hETUlU WF9EUlZfSU1QX01BU0sJCSgweDNmIDw8IDI2KQo+ICsKPiArI2RlZmluZSBIRE1JX0NPTjIJMHgw OAo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9UWF9DS0xETwkJKDB4MDEgPDwgMCkKPiArI2RlZmlu ZSBSR19IRE1JVFhfRU5fVFhfUE9TRElWCQkoMHgwMSA8PCAxKQo+ICsjZGVmaW5lIFJHX0hETUlU WF9UWF9QT1NESVYJCTMKPiArI2RlZmluZSBSR19IRE1JVFhfVFhfUE9TRElWX01BU0sJKDB4MDMg PDwgMykKPiArI2RlZmluZSBSR19IRE1JVFhfRU5fTUJJQVMJCSgweDAxIDw8IDYpCj4gKyNkZWZp bmUgUkdfSERNSVRYX01CSUFTX0xQRl9FTgkJKDB4MDEgPDwgNykKPiArCj4gKyNkZWZpbmUgSERN SV9DT040CTB4MTAKPiArI2RlZmluZSBSR19IRE1JVFhfUkVTRVJWRV9NQVNLCQkoMHhmZmZmZmZm ZiA8PCAwKQo+ICsKPiArI2RlZmluZSBIRE1JX0NPTjYJMHgxOAo+ICsjZGVmaW5lIFJHX0hUUExM X0JSCQkJMAo+ICsjZGVmaW5lIFJHX0hUUExMX0JSX01BU0sJCSgweDAzIDw8IDApCj4gKyNkZWZp bmUgUkdfSFRQTExfQkMJCQkyCj4gKyNkZWZpbmUgUkdfSFRQTExfQkNfTUFTSwkJKDB4MDMgPDwg MikKPiArI2RlZmluZSBSR19IVFBMTF9CUAkJCTQKPiArI2RlZmluZSBSR19IVFBMTF9CUF9NQVNL CQkoMHgwZiA8PCA0KQo+ICsjZGVmaW5lIFJHX0hUUExMX0lSCQkJOAo+ICsjZGVmaW5lIFJHX0hU UExMX0lSX01BU0sJCSgweDBmIDw8IDgpCj4gKyNkZWZpbmUgUkdfSFRQTExfSUMJCQkxMgo+ICsj ZGVmaW5lIFJHX0hUUExMX0lDX01BU0sJCSgweDBmIDw8IDEyKQo+ICsjZGVmaW5lIFJHX0hUUExM X1BPU0RJVgkJCTE2Cj4gKyNkZWZpbmUgUkdfSFRQTExfUE9TRElWX01BU0sJCSgweDAzIDw8IDE2 KQo+ICsjZGVmaW5lIFJHX0hUUExMX1BSRURJVgkJCTE4Cj4gKyNkZWZpbmUgUkdfSFRQTExfUFJF RElWX01BU0sJCSgweDAzIDw8IDE4KQo+ICsjZGVmaW5lIFJHX0hUUExMX0ZCS1NFTAkJCTIwCj4g KyNkZWZpbmUgUkdfSFRQTExfRkJLU0VMX01BU0sJCSgweDAzIDw8IDIwKQo+ICsjZGVmaW5lIFJH X0hUUExMX1JMSF9FTgkJCSgweDAxIDw8IDIyKQo+ICsjZGVmaW5lIFJHX0hUUExMX0ZCS0RJVgkJ CTI0Cj4gKyNkZWZpbmUgUkdfSFRQTExfRkJLRElWX01BU0sJCSgweDdmIDw8IDI0KQo+ICsjZGVm aW5lIFJHX0hUUExMX0VOCQkJKDB4MDEgPDwgMzEpCj4gKwo+ICsjZGVmaW5lIEhETUlfQ09ONwkw eDFjCj4gKyNkZWZpbmUgUkdfSFRQTExfQVVUT0tfRU4JCSgweDAxIDw8IDIzKQo+ICsjZGVmaW5l IFJHX0hUUExMX0RJVkVOCQkJMjgKPiArI2RlZmluZSBSR19IVFBMTF9ESVZFTl9NQVNLCQkoMHgw NyA8PCAyOCkKPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGxsX3ByZXBhcmUoc3RydWN0IGNs a19odyAqaHcpCj4gK3sKPiArCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRr X2hkbWlfcGh5KGh3KTsKPiArCj4gKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhE TUlfQ09ONywgUkdfSFRQTExfQVVUT0tfRU4pOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMo aGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUkxIX0VOKTsKPiArCW10a19oZG1pX3BoeV9z ZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9QT1NESVZfTUFTSyk7Cj4gKwlt dGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX01C SUFTKTsKPiArCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0 cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9FTik7Cj4gKwltdGtfaGRtaV9waHlfc2V0 X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX1RYX0NLTERPKTsKPiArCW10 a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fU0xE T19NQVNLKTsKPiArCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKPiArCW10a19oZG1pX3BoeV9zZXRf Yml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfTUJJQVNfTFBGX0VOKTsKPiArCW10 a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhf UE9TRElWKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBS R19IRE1JVFhfRU5fU0VSX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5 LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9QUkVEX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X3Nl dF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9EUlZfTUFTSyk7Cj4gKwl1 c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgbXRrX2hkbWlfcGxsX3VucHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKPiArewo+ICsJc3Ry dWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOwo+ICsKPiAr CW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9F Tl9EUlZfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9D T04wLCBSR19IRE1JVFhfRU5fUFJFRF9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9TRVJfTUFTSyk7Cj4gKwltdGtfaGRt aV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfUE9T RElWKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJH X0hETUlUWF9NQklBU19MUEZfRU4pOwo+ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDApOwo+ICsJbXRr X2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1NM RE9fTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04y LCBSR19IRE1JVFhfRU5fVFhfQ0tMRE8pOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRt aV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfRU4pOwo+ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDAp Owo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERN SVRYX0VOX01CSUFTKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1J X0NPTjYsIFJHX0hUUExMX1BPU0RJVl9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1JMSF9FTik7Cj4gKwltdGtfaGRtaV9waHlf Y2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT043LCBSR19IVFBMTF9BVVRPS19FTik7Cj4gKwl1 c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGxs X3NldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCj4gKwkJCQkg dW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPiArewo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAq aGRtaV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOwo+ICsJdTMyIHBvc19kaXY7Cj4gKwo+ICsJ aWYgKHJhdGUgPD0gNjQwMDAwMDApCj4gKwkJcG9zX2RpdiA9IDM7Cj4gKwllbHNlIGlmIChyYXRl IDw9IDEyODAwMDAwKQo+ICsJCXBvc19kaXYgPSAxOwo+ICsJZWxzZQo+ICsJCXBvc19kaXYgPSAx Owo+ICsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19I VFBMTF9QUkVESVZfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhE TUlfQ09ONiwgUkdfSFRQTExfUE9TRElWX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRt aV9waHksIEhETUlfQ09ONiwgKDB4MSA8PCBSR19IVFBMTF9JQyksCj4gKwkJCSAgUkdfSFRQTExf SUNfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMHgx IDw8IFJHX0hUUExMX0lSKSwKPiArCQkJICBSR19IVFBMTF9JUl9NQVNLKTsKPiArCW10a19oZG1p X3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjIsIChwb3NfZGl2IDw8IFJHX0hETUlUWF9UWF9Q T1NESVYpLAo+ICsJCQkgIFJHX0hETUlUWF9UWF9QT1NESVZfTUFTSyk7Cj4gKwltdGtfaGRtaV9w aHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMSA8PCBSR19IVFBMTF9GQktTRUwpLAo+ICsJ CQkgIFJHX0hUUExMX0ZCS1NFTF9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5 LCBIRE1JX0NPTjYsICgxOSA8PCBSR19IVFBMTF9GQktESVYpLAo+ICsJCQkgIFJHX0hUUExMX0ZC S0RJVl9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjcsICgw eDIgPDwgUkdfSFRQTExfRElWRU4pLAo+ICsJCQkgIFJHX0hUUExMX0RJVkVOX01BU0spOwo+ICsJ bXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwgKDB4YyA8PCBSR19IVFBMTF9C UCksCj4gKwkJCSAgUkdfSFRQTExfQlBfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1p X3BoeSwgSERNSV9DT042LCAoMHgyIDw8IFJHX0hUUExMX0JDKSwKPiArCQkJICBSR19IVFBMTF9C Q19NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjYsICgweDEg PDwgUkdfSFRQTExfQlIpLAo+ICsJCQkgIFJHX0hUUExMX0JSX01BU0spOwo+ICsKPiArCW10a19o ZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjEsIFJHX0hETUlUWF9QUkVEX0lN UCk7Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04xLCAoMHgzIDw8IFJH X0hETUlUWF9QUkVEX0lCSUFTKSwKPiArCQkJICBSR19IRE1JVFhfUFJFRF9JQklBU19NQVNLKTsK PiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlU WF9FTl9JTVBfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04x LCAoMHgyOCA8PCBSR19IRE1JVFhfRFJWX0lNUCksCj4gKwkJCSAgUkdfSERNSVRYX0RSVl9JTVBf TUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT040LCAweDI4LCBS R19IRE1JVFhfUkVTRVJWRV9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBI RE1JX0NPTjAsICgweGEgPDwgUkdfSERNSVRYX0RSVl9JQklBUyksCj4gKwkJCSAgUkdfSERNSVRY X0RSVl9JQklBU19NQVNLKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGNsa19vcHMgbXRrX2hkbWlfcGh5X3BsbF9vcHMgPSB7Cj4gKwkucHJlcGFyZSA9IG10 a19oZG1pX3BsbF9wcmVwYXJlLAo+ICsJLnVucHJlcGFyZSA9IG10a19oZG1pX3BsbF91bnByZXBh cmUsCj4gKwkuc2V0X3JhdGUgPSBtdGtfaGRtaV9wbGxfc2V0X3JhdGUsCj4gKwkucm91bmRfcmF0 ZSA9IG10a19oZG1pX3BsbF9yb3VuZF9yYXRlLAo+ICsJLnJlY2FsY19yYXRlID0gbXRrX2hkbWlf cGxsX3JlY2FsY19yYXRlLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2hkbWlfcGh5X2Vu YWJsZV90bWRzKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KQo+ICt7Cj4gKwltdGtfaGRt aV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONywgUkdfSFRQTExfQVVUT0tfRU4pOwo+ ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExf UkxIX0VOKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBS R19IVFBMTF9QT1NESVZfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHks IEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX01CSUFTKTsKPiArCXVzbGVlcF9yYW5nZSg4MCwgMTAw KTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBM TF9FTik7Cj4gKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdf SERNSVRYX0VOX1RYX0NLTERPKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwg SERNSV9DT04wLCBSR19IRE1JVFhfRU5fU0xET19NQVNLKTsKPiArCXVzbGVlcF9yYW5nZSg4MCwg MTAwKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19I RE1JVFhfTUJJQVNfTFBGX0VOKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwg SERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfUE9TRElWKTsKPiArCW10a19oZG1pX3BoeV9zZXRf Yml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fU0VSX01BU0spOwo+ICsJbXRr X2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9QUkVE X01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJH X0hETUlUWF9FTl9EUlZfTUFTSyk7Cj4gKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9kaXNhYmxlX3RtZHMoc3RydWN0IG10a19oZG1p X3BoeSAqaGRtaV9waHkpCj4gK3sKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5 LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9EUlZfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfY2xl YXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fUFJFRF9NQVNLKTsKPiAr CW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9F Tl9TRVJfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9D T04yLCBSR19IRE1JVFhfRU5fVFhfUE9TRElWKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9NQklBU19MUEZfRU4pOwo+ICsJdXNsZWVw X3JhbmdlKDgwLCAxMDApOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhE TUlfQ09OMCwgUkdfSERNSVRYX0VOX1NMRE9fTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJf Yml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfQ0tMRE8pOwo+ICsJbXRr X2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfRU4pOwo+ ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDApOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRt aV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX01CSUFTKTsKPiArCW10a19oZG1pX3BoeV9j bGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1BPU0RJVl9NQVNLKTsKPiAr CW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1JM SF9FTik7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT043LCBS R19IVFBMTF9BVVRPS19FTik7Cj4gKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cj4gK30KPiArCj4g K3N0cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9waHlfMjcwMV9jb25mID0gewo+ICsJ LnR6X2Rpc2FibGVkID0gdHJ1ZSwKPiArCS5oZG1pX3BoeV9jbGtfb3BzID0gJm10a19oZG1pX3Bo eV9wbGxfb3BzLAo+ICsJLmhkbWlfcGh5X2VuYWJsZV90bWRzID0gbXRrX2hkbWlfcGh5X2VuYWJs ZV90bWRzLAo+ICsJLmhkbWlfcGh5X2Rpc2FibGVfdG1kcyA9IG10a19oZG1pX3BoeV9kaXNhYmxl X3RtZHMsCj4gK307Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJDaHVuaHVpIERhaSA8Y2h1bmh1aS5k YWlAbWVkaWF0ZWsuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIEhETUkg UEhZIERyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==