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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 0B8D5C433EF for ; Thu, 3 Feb 2022 09:09:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 00FEF10E89B; Thu, 3 Feb 2022 09:09:01 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id AD33F10E89B for ; Thu, 3 Feb 2022 09:08:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643879339; x=1675415339; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=cFP6iNo6e1zBouXcP/spJXjC0rEmnfjRbppBXT6st/U=; b=MTiyRcXhtkpvbLYG16N9f3cJ+Q9xmdVXfHbArJyuNpmQuShuNcAt5uu5 rnFIy3O9xgMV7hNkk9N3eEO2B1jVN3Em27Z6WF1hW0yAlAlIR5lo+tBuG d3DT9ENSoZ9R0OB34zMTeLU8Em+zqfr66ZdC2EoQhX0ED6a57HoXW+DvB GUS7zYanwpdsOp+8IhniIjFcUl90rmCixepJ4IVe5KyGljsn5tXoVI2uw H8MWDwuepKYIu0adpLuRPlxKPPQxZcs2YGbA9vAJ7XwmbzPXklqmQxg42 Rp7KfiopLcit6Byi7nGdNenDp39Nl057G4VKiM5yGzV8rLSDp+ahBQD63 Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10246"; a="245698908" X-IronPort-AV: E=Sophos;i="5.88,339,1635231600"; d="scan'208";a="245698908" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Feb 2022 01:08:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,339,1635231600"; d="scan'208";a="620438117" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 03 Feb 2022 01:08:59 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 3 Feb 2022 01:08:58 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 3 Feb 2022 01:08:58 -0800 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2308.020; Thu, 3 Feb 2022 01:08:58 -0800 From: "Kasireddy, Vivek" To: Tvrtko Ursulin , "dri-devel@lists.freedesktop.org" Subject: RE: [PATCH 1/2] drm/mm: Add an iterator to optimally walk over holes for an allocation Thread-Topic: [PATCH 1/2] drm/mm: Add an iterator to optimally walk over holes for an allocation Thread-Index: AQHYF9Rzrf7U2biew0Klec9b/vt7d6yAwTYAgADAjpA= Date: Thu, 3 Feb 2022 09:08:58 +0000 Message-ID: <689d5b2bbbee4f5392b65646f08e9b23@intel.com> References: <20220202011358.1409946-1-vivek.kasireddy@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.200.16 dlp-reaction: no-action x-originating-ip: [10.22.254.132] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGkgVHZydGtvLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+DQo+IFNlbnQ6IFdlZG5l c2RheSwgRmVicnVhcnkgMDIsIDIwMjIgNTowNCBBTQ0KPiBUbzogS2FzaXJlZGR5LCBWaXZlayA8 dml2ZWsua2FzaXJlZGR5QGludGVsLmNvbT47IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzJdIGRybS9tbTogQWRkIGFuIGl0ZXJhdG9yIHRv IG9wdGltYWxseSB3YWxrIG92ZXIgaG9sZXMgZm9yIGFuDQo+IGFsbG9jYXRpb24NCj4gDQo+IA0K PiBPbiAwMi8wMi8yMDIyIDAxOjEzLCBWaXZlayBLYXNpcmVkZHkgd3JvdGU6DQo+ID4gVGhpcyBp dGVyYXRvciByZWxpZXMgb24gZHJtX21tX2ZpcnN0X2hvbGUoKSBhbmQgZHJtX21tX25leHRfaG9s ZSgpDQo+ID4gZnVuY3Rpb25zIHRvIGlkZW50aWZ5IHN1aXRhYmxlIGhvbGVzIGZvciBhbiBhbGxv Y2F0aW9uIG9mIGEgZ2l2ZW4NCj4gPiBzaXplIGJ5IGVmZmljZW50bHkgdHJhdmVyc2luZyB0aGUg cmJ0cmVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4NCj4gPiBhbGxvY2F0b3IuDQo+ID4NCj4g PiBJdCByZXBsYWNlcyB0aGUgZm9yIGxvb3AgaW4gZHJtX21tX2luc2VydF9ub2RlX2luX3Jhbmdl KCkgYW5kIGNhbg0KPiA+IGFsc28gYmUgdXNlZCBieSBkcm0gZHJpdmVycyB0byBxdWlja2x5IGlk ZW50aWZ5IGhvbGVzIG9mIGEgY2VydGFpbg0KPiA+IHNpemUgd2l0aGluIGEgZ2l2ZW4gcmFuZ2Uu DQo+ID4NCj4gPiBTdWdnZXN0ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBs aW51eC5pbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogVml2ZWsgS2FzaXJlZGR5IDx2aXZl ay5rYXNpcmVkZHlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2Ry bV9tbS5jIHwgMjggKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAgaW5jbHVkZS9k cm0vZHJtX21tLmggICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g PiAgIDIgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pDQo+ ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9tbS5jDQo+ID4gaW5kZXggODI1N2Y5ZDRmNjE5Li40MTZjODQ5YzEwZTUgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jDQo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9tbS5jDQo+ID4gQEAgLTM1MiwxMCArMzUyLDEwIEBAIHN0YXRpYyBzdHJ1 Y3QgZHJtX21tX25vZGUgKmZpbmRfaG9sZV9hZGRyKHN0cnVjdCBkcm1fbW0NCj4gKm1tLCB1NjQg YWRkciwgdTY0IHNpemUpDQo+ID4gICAJcmV0dXJuIG5vZGU7DQo+ID4gICB9DQo+ID4NCj4gPiAt c3RhdGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqDQo+ID4gLWZpcnN0X2hvbGUoc3RydWN0IGRybV9t bSAqbW0sDQo+ID4gLQkgICB1NjQgc3RhcnQsIHU2NCBlbmQsIHU2NCBzaXplLA0KPiA+IC0JICAg ZW51bSBkcm1fbW1faW5zZXJ0X21vZGUgbW9kZSkNCj4gPiArc3RydWN0IGRybV9tbV9ub2RlICoN Cj4gPiArZHJtX21tX2ZpcnN0X2hvbGUoc3RydWN0IGRybV9tbSAqbW0sDQo+ID4gKwkJICB1NjQg c3RhcnQsIHU2NCBlbmQsIHU2NCBzaXplLA0KPiA+ICsJCSAgZW51bSBkcm1fbW1faW5zZXJ0X21v ZGUgbW9kZSkNCj4gPiAgIHsNCj4gPiAgIAlzd2l0Y2ggKG1vZGUpIHsNCj4gPiAgIAlkZWZhdWx0 Og0KPiA+IEBAIC0zNzQsNiArMzc0LDcgQEAgZmlyc3RfaG9sZShzdHJ1Y3QgZHJtX21tICptbSwN Cj4gPiAgIAkJCQkJCWhvbGVfc3RhY2spOw0KPiA+ICAgCX0NCj4gPiAgIH0NCj4gPiArRVhQT1JU X1NZTUJPTChkcm1fbW1fZmlyc3RfaG9sZSk7DQo+ID4NCj4gPiAgIC8qKg0KPiA+ICAgICogREVD TEFSRV9ORVhUX0hPTEVfQUREUiAtIG1hY3JvIHRvIGRlY2xhcmUgbmV4dCBob2xlIGZ1bmN0aW9u cw0KPiA+IEBAIC00MTAsMTEgKzQxMSwxMSBAQCBzdGF0aWMgc3RydWN0IGRybV9tbV9ub2RlICpu YW1lKHN0cnVjdCBkcm1fbW1fbm9kZQ0KPiAqZW50cnksIHU2NCBzaXplKQlcDQo+ID4gICBERUNM QVJFX05FWFRfSE9MRV9BRERSKG5leHRfaG9sZV9oaWdoX2FkZHIsIHJiX2xlZnQsIHJiX3JpZ2h0 KQ0KPiA+ICAgREVDTEFSRV9ORVhUX0hPTEVfQUREUihuZXh0X2hvbGVfbG93X2FkZHIsIHJiX3Jp Z2h0LCByYl9sZWZ0KQ0KPiA+DQo+ID4gLXN0YXRpYyBzdHJ1Y3QgZHJtX21tX25vZGUgKg0KPiA+ IC1uZXh0X2hvbGUoc3RydWN0IGRybV9tbSAqbW0sDQo+ID4gLQkgIHN0cnVjdCBkcm1fbW1fbm9k ZSAqbm9kZSwNCj4gPiAtCSAgdTY0IHNpemUsDQo+ID4gLQkgIGVudW0gZHJtX21tX2luc2VydF9t b2RlIG1vZGUpDQo+ID4gK3N0cnVjdCBkcm1fbW1fbm9kZSAqDQo+ID4gK2RybV9tbV9uZXh0X2hv bGUoc3RydWN0IGRybV9tbSAqbW0sDQo+ID4gKwkJIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwN Cj4gPiArCQkgdTY0IHNpemUsDQo+ID4gKwkJIGVudW0gZHJtX21tX2luc2VydF9tb2RlIG1vZGUp DQo+ID4gICB7DQo+ID4gICAJc3dpdGNoIChtb2RlKSB7DQo+ID4gICAJZGVmYXVsdDoNCj4gPiBA QCAtNDMyLDYgKzQzMyw3IEBAIG5leHRfaG9sZShzdHJ1Y3QgZHJtX21tICptbSwNCj4gPiAgIAkJ cmV0dXJuICZub2RlLT5ob2xlX3N0YWNrID09ICZtbS0+aG9sZV9zdGFjayA/IE5VTEwgOiBub2Rl Ow0KPiA+ICAgCX0NCj4gPiAgIH0NCj4gPiArRVhQT1JUX1NZTUJPTChkcm1fbW1fbmV4dF9ob2xl KTsNCj4gDQo+IE1heSBuZWVkIHRvIGFkZCBrZXJuZWxkb2Mgc2luY2UgZmlyc3QvbmV4dF9ob2xl IGFyZSBub3cgZXhwb3J0ZWQsIG9yDQo+IHBlcmhhcHMgZG91YmxlIHVuZGVyc2NvcmUgdGhlbSBp ZiBEUk0gY29yZSBhbGxvd3MgdGhhdCBhcHByb2FjaCB0byBraW5kDQo+IG9mIHNpZ25pZnkgIml0 IGlzIGV4cG9ydGVkIGJ5IHNob3VsZG4ndCByZWFsbHkgYmUgdXNlZCI/IFF1ZXN0aW9uIGZvcg0K PiBkcmktZGV2ZWwgSSBndWVzcy4NCltLYXNpcmVkZHksIFZpdmVrXSBPaywgd2lsbCB3YWl0IHVu dGlsIERhbmllbCBvciBvdGhlcnMgb24gZHJpLWRldmVsIHdlaWdoIGluLg0KSG93ZXZlciwgaXQg bG9va3MgbGlrZSBkb3VibGUgdW5kZXJzY29yZSBpcyB0aGUgd2F5IHRvIGdvIGdpdmVuIGhvdyB0 aGUNCmV4cG9ydGVkIHN5bWJvbCBfX2RybV9tbV9pbnRlcnZhbF9maXJzdCgpIGlzIHVzZWQuDQoN Cj4gDQo+ID4NCj4gPiAgIC8qKg0KPiA+ICAgICogZHJtX21tX3Jlc2VydmVfbm9kZSAtIGluc2Vy dCBhbiBwcmUtaW5pdGlhbGl6ZWQgbm9kZQ0KPiA+IEBAIC01MjAsNyArNTIyLDYgQEAgaW50IGRy bV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZShzdHJ1Y3QgZHJtX21tICogY29uc3QgbW0sDQo+ID4g ICB7DQo+ID4gICAJc3RydWN0IGRybV9tbV9ub2RlICpob2xlOw0KPiA+ICAgCXU2NCByZW1haW5k ZXJfbWFzazsNCj4gPiAtCWJvb2wgb25jZTsNCj4gPg0KPiA+ICAgCURSTV9NTV9CVUdfT04ocmFu Z2Vfc3RhcnQgPiByYW5nZV9lbmQpOw0KPiA+DQo+ID4gQEAgLTUzMywxMyArNTM0LDggQEAgaW50 IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZShzdHJ1Y3QgZHJtX21tICogY29uc3QNCj4gbW0s DQo+ID4gICAJaWYgKGFsaWdubWVudCA8PSAxKQ0KPiA+ICAgCQlhbGlnbm1lbnQgPSAwOw0KPiA+ DQo+ID4gLQlvbmNlID0gbW9kZSAmIERSTV9NTV9JTlNFUlRfT05DRTsNCj4gPiAtCW1vZGUgJj0g fkRSTV9NTV9JTlNFUlRfT05DRTsNCj4gPiAtDQo+ID4gICAJcmVtYWluZGVyX21hc2sgPSBpc19w b3dlcl9vZl8yKGFsaWdubWVudCkgPyBhbGlnbm1lbnQgLSAxIDogMDsNCj4gPiAtCWZvciAoaG9s ZSA9IGZpcnN0X2hvbGUobW0sIHJhbmdlX3N0YXJ0LCByYW5nZV9lbmQsIHNpemUsIG1vZGUpOw0K PiA+IC0JICAgICBob2xlOw0KPiA+IC0JICAgICBob2xlID0gb25jZSA/IE5VTEwgOiBuZXh0X2hv bGUobW0sIGhvbGUsIHNpemUsIG1vZGUpKSB7DQo+ID4gKwlkcm1fbW1fZm9yX2VhY2hfYmVzdF9o b2xlKGhvbGUsIG1tLCByYW5nZV9zdGFydCwgcmFuZ2VfZW5kLCBzaXplLCBtb2RlKSB7DQo+ID4g ICAJCXU2NCBob2xlX3N0YXJ0ID0gX19kcm1fbW1faG9sZV9ub2RlX3N0YXJ0KGhvbGUpOw0KPiA+ ICAgCQl1NjQgaG9sZV9lbmQgPSBob2xlX3N0YXJ0ICsgaG9sZS0+aG9sZV9zaXplOw0KPiA+ICAg CQl1NjQgYWRqX3N0YXJ0LCBhZGpfZW5kOw0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fbW0uaCBiL2luY2x1ZGUvZHJtL2RybV9tbS5oDQo+ID4gaW5kZXggYWMzM2JhMWIxOGJjLi41 MDU1NDQ3Njk3ZmEgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21tLmgNCj4gPiAr KysgYi9pbmNsdWRlL2RybS9kcm1fbW0uaA0KPiA+IEBAIC0zMjIsNiArMzIyLDE3IEBAIHN0YXRp YyBpbmxpbmUgdTY0IF9fZHJtX21tX2hvbGVfbm9kZV9lbmQoY29uc3Qgc3RydWN0DQo+IGRybV9t bV9ub2RlICpob2xlX25vZGUpDQo+ID4gICAJcmV0dXJuIGxpc3RfbmV4dF9lbnRyeShob2xlX25v ZGUsIG5vZGVfbGlzdCktPnN0YXJ0Ow0KPiA+ICAgfQ0KPiA+DQo+ID4gK3N0cnVjdCBkcm1fbW1f bm9kZSAqDQo+ID4gK2RybV9tbV9maXJzdF9ob2xlKHN0cnVjdCBkcm1fbW0gKm1tLA0KPiA+ICsJ CSAgdTY0IHN0YXJ0LCB1NjQgZW5kLCB1NjQgc2l6ZSwNCj4gPiArCQkgIGVudW0gZHJtX21tX2lu c2VydF9tb2RlIG1vZGUpOw0KPiA+ICsNCj4gPiArc3RydWN0IGRybV9tbV9ub2RlICoNCj4gPiAr ZHJtX21tX25leHRfaG9sZShzdHJ1Y3QgZHJtX21tICptbSwNCj4gPiArCQkgc3RydWN0IGRybV9t bV9ub2RlICpub2RlLA0KPiA+ICsJCSB1NjQgc2l6ZSwNCj4gPiArCQkgZW51bSBkcm1fbW1faW5z ZXJ0X21vZGUgbW9kZSk7DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgKiBkcm1fbW1faG9sZV9u b2RlX2VuZCAtIGNvbXB1dGVzIHRoZSBlbmQgb2YgdGhlIGhvbGUgZm9sbG93aW5nIEBub2RlDQo+ ID4gICAgKiBAaG9sZV9ub2RlOiBkcm1fbW1fbm9kZSB3aGljaCBpbXBsaWNpdGx5IHRyYWNrcyB0 aGUgZm9sbG93aW5nIGhvbGUNCj4gPiBAQCAtNDAwLDYgKzQxMSwyNyBAQCBzdGF0aWMgaW5saW5l IHU2NCBkcm1fbW1faG9sZV9ub2RlX2VuZChjb25zdCBzdHJ1Y3QNCj4gZHJtX21tX25vZGUgKmhv bGVfbm9kZSkNCj4gPiAgIAkgICAgIDEgOiAwOyBcDQo+ID4gICAJICAgICBwb3MgPSBsaXN0X25l eHRfZW50cnkocG9zLCBob2xlX3N0YWNrKSkNCj4gPg0KPiA+ICsvKioNCj4gPiArICogZHJtX21t X2Zvcl9lYWNoX2Jlc3RfaG9sZSAtIGl0ZXJhdG9yIHRvIG9wdGltYWxseSB3YWxrIG92ZXIgYWxs IGhvbGVzID49IEBzaXplDQo+ID4gKyAqIEBwb3M6ICZkcm1fbW1fbm9kZSB1c2VkIGludGVybmFs bHkgdG8gdHJhY2sgcHJvZ3Jlc3MNCj4gPiArICogQG1tOiAmZHJtX21tIGFsbG9jYXRvciB0byB3 YWxrDQo+ID4gKyAqIEByYW5nZV9zdGFydDogc3RhcnQgb2YgdGhlIGFsbG93ZWQgcmFuZ2UgZm9y IHRoZSBhbGxvY2F0aW9uDQo+ID4gKyAqIEByYW5nZV9lbmQ6IGVuZCBvZiB0aGUgYWxsb3dlZCBy YW5nZSBmb3IgdGhlIGFsbG9jYXRpb24NCj4gPiArICogQHNpemU6IHNpemUgb2YgdGhlIGFsbG9j YXRpb24NCj4gPiArICogQG1vZGU6IGZpbmUtdHVuZSB0aGUgYWxsb2NhdGlvbiBzZWFyY2gNCj4g PiArICoNCj4gPiArICogVGhpcyBpdGVyYXRvciB3YWxrcyBvdmVyIGFsbCBob2xlcyBzdWl0YWJs ZSBmb3IgdGhlIGFsbG9jYXRpb24gb2YgZ2l2ZW4NCj4gPiArICogQHNpemUgaW4gYSB2ZXJ5IGVm ZmljaWVudCBtYW5uZXIuIEl0IGlzIGltcGxlbWVudGVkIGJ5IGNhbGxpbmcNCj4gPiArICogZHJt X21tX2ZpcnN0X2hvbGUoKSBhbmQgZHJtX21tX25leHRfaG9sZSgpIHdoaWNoIGlkZW50aWZ5IHRo ZQ0KPiA+ICsgKiBhcHByb3ByaWF0ZSBob2xlcyB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlIGJ5IGVm ZmljZW50bHkgdHJhdmVyc2luZyB0aGUNCj4gPiArICogcmJ0cmVlIGFzc29jaWF0ZWQgd2l0aCBA bW0uDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIGRybV9tbV9mb3JfZWFjaF9iZXN0X2hvbGUocG9z LCBtbSwgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZCwgc2l6ZSwgbW9kZSkgXA0KPiANCj4gUHJvYmFi bHkgc2hvdWxkIG5vdCBoYXZlICJiZXN0IiBpbiB0aGUgbmFtZSBzaW5jZSB0aGUgbW9kZSBpcyBw YXNzZWQgaW4NCj4gYnkgdGhlIGNhbGxlci4NCltLYXNpcmVkZHksIFZpdmVrXSBIb3cgYWJvdXQg ZHJtX21tX2Zvcl9lYWNoX3N1aXRhYmxlX2hvbGUoLi4uKT8NCg0KPiANCj4gPiArCWZvciAocG9z ID0gZHJtX21tX2ZpcnN0X2hvbGUobW0sIHJhbmdlX3N0YXJ0LCByYW5nZV9lbmQsIHNpemUsIG1v ZGUpOyBcDQo+ID4gKwkgICAgIHBvczsgXA0KPiA+ICsJICAgICBwb3MgPSBtb2RlICYgRFJNX01N X0lOU0VSVF9PTkNFID8gXA0KPiA+ICsJICAgICBOVUxMIDogZHJtX21tX25leHRfaG9sZShtbSwg aG9sZSwgc2l6ZSwgbW9kZSkpDQo+IA0KPiBJIHRoaW5rIHlvdSB3b3VsZCBuZWVkIHRvIG1vZGlm eSB0aGUgZmlyc3QvbmV4dF9ob2xlIHRvIG1hc2sgb3V0DQo+IERSTV9NTV9JTlNFUlRfT05DRSwg b3RoZXJ3aXNlIGl0IHByb2JhYmx5IGRvZXMgbm90IHdvcmsgYXMgaXQgc3RhbmRzLg0KW0thc2ly ZWRkeSwgVml2ZWtdIEVpdGhlciB0aGF0IG9yIEkgZG8gdGhlIG1hc2sgb3V0IGluIHRoZSBtYWNy byBpdHNlbGY6DQojZGVmaW5lIGRybV9tbV9mb3JfZWFjaF9iZXN0X2hvbGUocG9zLCBtbSwgcmFu Z2Vfc3RhcnQsIHJhbmdlX2VuZCwgc2l6ZSwgbW9kZSkgXA0KICAgICAgICBmb3IgKHBvcyA9IGRy bV9tbV9maXJzdF9ob2xlKG1tLCByYW5nZV9zdGFydCwgcmFuZ2VfZW5kLCBzaXplLCBcDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSAmIH5EUk1fTU1fSU5TRVJUX09O Q0UpOyBcDQogICAgICAgICAgICAgcG9zOyBcDQogICAgICAgICAgICAgcG9zID0gbW9kZSAmIERS TV9NTV9JTlNFUlRfT05DRSA/IFwNCiAgICAgICAgICAgICBOVUxMIDogZHJtX21tX25leHRfaG9s ZShtbSwgaG9sZSwgc2l6ZSwgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZGUgJiB+RFJNX01NX0lOU0VSVF9PTkNFKSkNCmFuZCBhbHNvIHRha2UgY2FyZSBvZiB0aGUg bG9jYXRpb25zIHdoZXJlIG1vZGUgaXMgY2hlY2tlZCBpbiB0aGUgbG9vcC4NCk9yLCBJIGNvdWxk IGp1c3QgcmV0YWluIHRoZSBvbmNlIGJvb2wgYW5kIHBhc3MgaXQgdG8gdGhlIG1hY3JvLiBOb3Qg c3VyZSBpZiB0aGlzIGlzIG9rDQpidXQgdGhlcmUgZG9uJ3Qgc2VlbSB0byBiZSBjbGVhbmVyL2Vs ZWdhbnQgb3B0aW9ucy4NCg0KVGhhbmtzLA0KVml2ZWsNCg0KDQo+IA0KPiBSZWdhcmRzLA0KPiAN Cj4gVHZydGtvDQo+IA0KPiA+ICsNCj4gPiAgIC8qDQo+ID4gICAgKiBCYXNpYyByYW5nZSBtYW5h Z2VyIHN1cHBvcnQgKGRybV9tbS5jKQ0KPiA+ICAgICovDQo=