From mboxrd@z Thu Jan 1 00:00:00 1970 From: Praveen Kumar Subject: [PATCH v2 18/20] rbtree: handle 1-child recoloring in rb_erase() instead of rb_erase_color() Date: Sat, 17 Jun 2017 15:02:51 +0530 Message-ID: <20170617093253.3990-19-kpraveen.lkml@gmail.com> References: <20170617093253.3990-1-kpraveen.lkml@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170617093253.3990-1-kpraveen.lkml@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, kpraveen.lkml@gmail.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org QW4gaW50ZXJlc3Rpbmcgb2JzZXJ2YXRpb24gZm9yIHJiX2VyYXNlKCkgaXMgdGhhdCB3aGVuIGEg bm9kZSBoYXMKZXhhY3RseSBvbmUgY2hpbGQsIHRoZSBub2RlIG11c3QgYmUgYmxhY2sgYW5kIHRo ZSBjaGlsZCBtdXN0IGJlIHJlZC4KQW4gaW50ZXJlc3RpbmcgY29uc2VxdWVuY2UgaXMgdGhhdCBy ZW1vdmluZyBzdWNoIGEgbm9kZSBjYW4gYmUgZG9uZSBieQpzaW1wbHkgcmVwbGFjaW5nIGl0IHdp dGggaXRzIGNoaWxkIGFuZCBtYWtpbmcgdGhlIGNoaWxkIGJsYWNrLAp3aGljaCB3ZSBjYW4gZG8g ZWZmaWNpZW50bHkgaW4gcmJfZXJhc2UoKS4gX19yYl9lcmFzZV9jb2xvcigpIHRoZW4Kb25seSBu ZWVkcyB0byBoYW5kbGUgdGhlIG5vLWNoaWxkcyBjYXNlIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWNj b3JkaW5nbHkuCgpTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgTGVzcGluYXNzZSA8d2Fsa2VuQGdvb2ds ZS5jb20+CkFja2VkLWJ5OiBSaWsgdmFuIFJpZWwgPHJpZWxAcmVkaGF0LmNvbT4KQ2M6IFBldGVy IFppamxzdHJhIDxhLnAuemlqbHN0cmFAY2hlbGxvLm5sPgpDYzogQW5kcmVhIEFyY2FuZ2VsaSA8 YWFyY2FuZ2VAcmVkaGF0LmNvbT4KQ2M6IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFk Lm9yZz4KU2lnbmVkLW9mZi1ieTogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9u Lm9yZz4KU2lnbmVkLW9mZi1ieTogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5k YXRpb24ub3JnPgpbTGludXggY29tbWl0IDQ2YjYxMzVhNzQwMmFjMjNjNWIyNWYyYmQ3OWIwM2Jh YjhmOTgyNzhdCgpQb3J0ZWQgdG8gWGVuLgoKU2lnbmVkLW9mZi1ieTogUHJhdmVlbiBLdW1hciA8 a3ByYXZlZW4ubGttbEBnbWFpbC5jb20+Ci0tLQogeGVuL2NvbW1vbi9yYnRyZWUuYyB8IDExMCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9yYnRyZWUuYyBiL3hlbi9jb21tb24vcmJ0cmVlLmMKaW5kZXggMTQ5Yzg2 MWFjNi4uZGZlNTY2YTVhZiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9yYnRyZWUuYworKysgYi94 ZW4vY29tbW9uL3JidHJlZS5jCkBAIC0yLDYgKzIsNyBAQAogICBSZWQgQmxhY2sgVHJlZXMKICAg KEMpIDE5OTkgIEFuZHJlYSBBcmNhbmdlbGkgPGFuZHJlYUBzdXNlLmRlPgogICAoQykgMjAwMiAg RGF2aWQgV29vZGhvdXNlIDxkd213MkBpbmZyYWRlYWQub3JnPgorICAoQykgMjAxMiAgTWljaGVs IExlc3BpbmFzc2UgPHdhbGtlbkBnb29nbGUuY29tPgogICAKICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKQEAgLTQ5LDYgKzUwLDExIEBACiAjZGVmaW5lIHJiX2lzX3JlZChyKSAgICAoIXJi X2NvbG9yKHIpKQogI2RlZmluZSByYl9pc19ibGFjayhyKSAgcmJfY29sb3IocikKIAorc3RhdGlj IGlubGluZSB2b2lkIHJiX3NldF9ibGFjayhzdHJ1Y3QgcmJfbm9kZSAqcmIpCit7CisgICAgcmIt Pl9fcmJfcGFyZW50X2NvbG9yIHw9IFJCX0JMQUNLOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQg cmJfc2V0X3BhcmVudChzdHJ1Y3QgcmJfbm9kZSAqcmIsIHN0cnVjdCByYl9ub2RlICpwKQogewog ICAgIHJiLT5fX3JiX3BhcmVudF9jb2xvciA9IHJiX2NvbG9yKHJiKSB8ICh1bnNpZ25lZCBsb25n KXA7CkBAIC0yMTMsMjkgKzIxOSwxOSBAQCB2b2lkIHJiX2luc2VydF9jb2xvcihzdHJ1Y3QgcmJf bm9kZSAqbm9kZSwgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCiB9CiBFWFBPUlRfU1lNQk9MKHJiX2lu c2VydF9jb2xvcik7CiAKLXN0YXRpYyB2b2lkIF9fcmJfZXJhc2VfY29sb3Ioc3RydWN0IHJiX25v ZGUgKm5vZGUsIHN0cnVjdCByYl9ub2RlICpwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCByYl9yb290ICpyb290KQorc3RhdGljIHZvaWQgX19yYl9lcmFzZV9jb2xv cihzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKIHsKLSAgICBz dHJ1Y3QgcmJfbm9kZSAqc2libGluZywgKnRtcDEsICp0bXAyOworICAgIHN0cnVjdCByYl9ub2Rl ICpub2RlID0gTlVMTCwgKnNpYmxpbmcsICp0bXAxLCAqdG1wMjsKIAogICAgIHdoaWxlICh0cnVl KQogICAgIHsKICAgICAgICAgLyoKLSAgICAgICAgICogTG9vcCBpbnZhcmlhbnQ6IGFsbCBsZWFm IHBhdGhzIGdvaW5nIHRocm91Z2ggbm9kZSBoYXZlIGEKLSAgICAgICAgICogYmxhY2sgbm9kZSBj b3VudCB0aGF0IGlzIDEgbG93ZXIgdGhhbiBvdGhlciBsZWFmIHBhdGhzLgotICAgICAgICAgKgot ICAgICAgICAgKiBJZiBub2RlIGlzIHJlZCwgd2UgY2FuIGZsaXAgaXQgdG8gYmxhY2sgdG8gYWRq dXN0LgotICAgICAgICAgKiBJZiBub2RlIGlzIHRoZSByb290LCBhbGwgbGVhZiBwYXRocyBnbyB0 aHJvdWdoIGl0LgotICAgICAgICAgKiBPdGhlcndpc2UsIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSB0 cmVlIHRocm91Z2ggY29sb3IgZmxpcHMKLSAgICAgICAgICogYW5kIHRyZWUgcm90YXRpb25zIGFz IHBlciBvbmUgb2YgdGhlIDQgY2FzZXMgYmVsb3cuCisgICAgICAgICAqIExvb3AgaW52YXJpYW50 czoKKyAgICAgICAgICogLSBub2RlIGlzIGJsYWNrIChvciBOVUxMIG9uIGZpcnN0IGl0ZXJhdGlv bikKKyAgICAgICAgICogLSBub2RlIGlzIG5vdCB0aGUgcm9vdCAocGFyZW50IGlzIG5vdCBOVUxM KQorICAgICAgICAgKiAtIEFsbCBsZWFmIHBhdGhzIGdvaW5nIHRocm91Z2ggcGFyZW50IGFuZCBu b2RlIGhhdmUgYQorICAgICAgICAgKiAgIGJsYWNrIG5vZGUgY291bnQgdGhhdCBpcyAxIGxvd2Vy IHRoYW4gb3RoZXIgbGVhZiBwYXRocy4KICAgICAgICAgICovCi0gICAgICAgIGlmIChub2RlICYm IHJiX2lzX3JlZChub2RlKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmJfc2V0X3BhcmVudF9j b2xvcihub2RlLCBwYXJlbnQsIFJCX0JMQUNLKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg ICB9IGVsc2UgaWYgKCFwYXJlbnQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAg ICAgICAgIHNpYmxpbmcgPSBwYXJlbnQtPnJiX3JpZ2h0OwogICAgICAgICBpZiAoIG5vZGUgIT0g c2libGluZykgICAgLyogbm9kZSA9PSBwYXJlbnQtPnJiX2xlZnQgKi8KICAgICAgICAgewpAQCAt MjcyLDE2ICsyNjgsMjIgQEAgc3RhdGljIHZvaWQgX19yYl9lcmFzZV9jb2xvcihzdHJ1Y3QgcmJf bm9kZSAqbm9kZSwgc3RydWN0IHJiX25vZGUgKnBhcmVudCwKICAgICAgICAgICAgICAgICAgICAg ICogICAgICAvIFwgICAgICAgICAgIC8gXAogICAgICAgICAgICAgICAgICAgICAgKiAgICAgU2wg IFNyICAgICAgICBTbCAgU3IKICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAg ICAgICAgICogVGhpcyBsZWF2ZXMgdXMgdmlvbGF0aW5nIDUpLCBzbwotICAgICAgICAgICAgICAg ICAgICAgKiByZWN1cnNlIGF0IHAuIElmIHAgaXMgcmVkLCB0aGUKLSAgICAgICAgICAgICAgICAg ICAgICogcmVjdXJzaW9uIHdpbGwganVzdCBmbGlwIGl0IHRvIGJsYWNrCi0gICAgICAgICAgICAg ICAgICAgICAqIGFuZCBleGl0LiBJZiBjb21pbmcgZnJvbSBDYXNlIDEsCi0gICAgICAgICAgICAg ICAgICAgICAqIHAgaXMga25vd24gdG8gYmUgcmVkLgorICAgICAgICAgICAgICAgICAgICAgKiBU aGlzIGxlYXZlcyB1cyB2aW9sYXRpbmcgNSkgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICog Y2FuIGJlIGZpeGVkIGJ5IGZsaXBwaW5nIHAgdG8gYmxhY2sKKyAgICAgICAgICAgICAgICAgICAg ICogaWYgaXQgd2FzIHJlZCwgb3IgYnkgcmVjdXJzaW5nIGF0IHAuCisgICAgICAgICAgICAgICAg ICAgICAqIHAgaXMgcmVkIHdoZW4gY29taW5nIGZyb20gQ2FzZSAxLgogICAgICAgICAgICAgICAg ICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgcmJfc2V0X3BhcmVudF9jb2xvcihzaWJsaW5n LCBwYXJlbnQsIFJCX1JFRCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7Ci0g ICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKLSAgICAgICAgICAg ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYl9pc19yZWQocGFy ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJiX3NldF9ibGFjayhwYXJlbnQpOworICAg ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJl bnQgPSByYl9wYXJlbnQobm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIENhc2UgMyAtIHJpZ2h0IHJvdGF0 ZSBhdCBzaWJsaW5nCkBAIC0zNDMsOSArMzQ1LDE2IEBAIHN0YXRpYyB2b2lkIF9fcmJfZXJhc2Vf Y29sb3Ioc3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCByYl9ub2RlICpwYXJlbnQsCiAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAvKiBDYXNlIDIgLSBzaWJsaW5nIGNv bG9yIGZsaXAgKi8KICAgICAgICAgICAgICAgICAgICAgcmJfc2V0X3BhcmVudF9jb2xvcihzaWJs aW5nLCBwYXJlbnQsIFJCX1JFRCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7 Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKLSAgICAgICAg ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYl9pc19yZWQo cGFyZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJiX3NldF9ibGFjayhwYXJlbnQpOwor ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBw YXJlbnQgPSByYl9wYXJlbnQobm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFy ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAvKiBDYXNlIDMgLSByaWdodCByb3RhdGUgYXQgc2libGluZyAqLwog ICAgICAgICAgICAgICAgIHNpYmxpbmctPnJiX3JpZ2h0ID0gdG1wMSA9IHRtcDItPnJiX2xlZnQ7 CkBAIC0zNzEsMjMgKzM4MCwzMiBAQCBzdGF0aWMgdm9pZCBfX3JiX2VyYXNlX2NvbG9yKHN0cnVj dCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LAogdm9pZCByYl9lcmFzZShz dHJ1Y3QgcmJfbm9kZSAqbm9kZSwgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCiB7CiAgICAgc3RydWN0 IHJiX25vZGUgKmNoaWxkID0gbm9kZS0+cmJfcmlnaHQsICp0bXAgPSBub2RlLT5yYl9sZWZ0Owot ICAgIHN0cnVjdCByYl9ub2RlICpwYXJlbnQ7Ci0gICAgaW50IGNvbG9yOwotCisgICAgc3RydWN0 IHJiX25vZGUgKnBhcmVudCwgKnJlYmFsYW5jZTsKKyAKIAlpZiAoIXRtcCkgewotICAgIGNhc2Ux OgotICAgICAgICAvKiBDYXNlIDE6IG5vZGUgdG8gZXJhc2UgaGFzIG5vIG1vcmUgdGhhbiAxIGNo aWxkIChlYXN5ISkgKi8KKyAgICAgICAgLyoKKyAgICAgICAgICogQ2FzZSAxOiBub2RlIHRvIGVy YXNlIGhhcyBubyBtb3JlIHRoYW4gMSBjaGlsZCAoZWFzeSEpCisgICAgICAgICAqCisgICAgICAg ICAqIE5vdGUgdGhhdCBpZiB0aGVyZSBpcyBvbmUgY2hpbGQgaXQgbXVzdCBiZSByZWQgZHVlIHRv IDUpCisgICAgICAgICAqIGFuZCBub2RlIG11c3QgYmUgYmxhY2sgZHVlIHRvIDQpLiBXZSBhZGp1 c3QgY29sb3JzIGxvY2FsbHkKKyAgICAgICAgICogc28gYXMgdG8gYnlwYXNzIF9fcmJfZXJhc2Vf Y29sb3IoKSBsYXRlciBvbi4KKyAgICAgICAgICovCiAKICAgICAgICAgcGFyZW50ID0gcmJfcGFy ZW50KG5vZGUpOwotICAgICAgICBjb2xvciA9IHJiX2NvbG9yKG5vZGUpOwotCi0gICAgICAgIGlm IChjaGlsZCkKLSAgICAgICAgICAgIHJiX3NldF9wYXJlbnQoY2hpbGQsIHBhcmVudCk7CiAgICAg ICAgIF9fcmJfY2hhbmdlX2NoaWxkKG5vZGUsIGNoaWxkLCBwYXJlbnQsIHJvb3QpOworICAgICAg ICBpZiAoY2hpbGQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJiX3NldF9wYXJlbnRfY29sb3Io Y2hpbGQsIHBhcmVudCwgUkJfQkxBQ0spOworICAgICAgICAgICAgcmViYWxhbmNlID0gTlVMTDsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlYmFsYW5jZSA9IHJiX2lzX2JsYWNrKG5v ZGUpID8gcGFyZW50IDogTlVMTDsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIWNoaWxkKSB7 CiAgICAgICAgIC8qIFN0aWxsIGNhc2UgMSwgYnV0IHRoaXMgdGltZSB0aGUgY2hpbGQgaXMgbm9k ZS0+cmJfbGVmdCAqLwotICAgICAgICBjaGlsZCA9IHRtcDsKLSAgICAgICAgZ290byBjYXNlMTsK KyAgICAgICAgcGFyZW50ID0gcmJfcGFyZW50KG5vZGUpOworICAgICAgICBfX3JiX2NoYW5nZV9j aGlsZChub2RlLCB0bXAsIHBhcmVudCwgcm9vdCk7CisgICAgICAgIHJiX3NldF9wYXJlbnRfY29s b3IodG1wLCBwYXJlbnQsIFJCX0JMQUNLKTsKKyAgICAgICAgcmViYWxhbmNlID0gTlVMTDsKICAg ICB9IGVsc2UgewogICAgICAgICBzdHJ1Y3QgcmJfbm9kZSAqb2xkID0gbm9kZSwgKmxlZnQ7CiAK QEAgLTM5NywyNyArNDE1LDMxIEBAIHZvaWQgcmJfZXJhc2Uoc3RydWN0IHJiX25vZGUgKm5vZGUs IHN0cnVjdCByYl9yb290ICpyb290KQogICAgICAgICBfX3JiX2NoYW5nZV9jaGlsZChvbGQsIG5v ZGUsIHJiX3BhcmVudChvbGQpLCByb290KTsKICAgICAgICAgY2hpbGQgPSBub2RlLT5yYl9yaWdo dDsKICAgICAgICAgcGFyZW50ID0gcmJfcGFyZW50KG5vZGUpOwotICAgICAgICBjb2xvciA9IHJi X2NvbG9yKG5vZGUpOwogCiAgICAgICAgIGlmIChwYXJlbnQgPT0gb2xkKSB7CiAgICAgICAgICAg ICBwYXJlbnQgPSBub2RlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGNoaWxk KQotICAgICAgICAgICAgICAgIHJiX3NldF9wYXJlbnQoY2hpbGQsIHBhcmVudCk7CiAgICAgICAg ICAgICBwYXJlbnQtPnJiX2xlZnQgPSBjaGlsZDsKIAogICAgICAgICAgICAgbm9kZS0+cmJfcmln aHQgPSBvbGQtPnJiX3JpZ2h0OwogICAgICAgICAgICAgcmJfc2V0X3BhcmVudChvbGQtPnJiX3Jp Z2h0LCBub2RlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChjaGlsZCkgeworICAgICAgICAg ICAgcmJfc2V0X3BhcmVudF9jb2xvcihjaGlsZCwgcGFyZW50LCBSQl9CTEFDSyk7CisgICAgICAg ICAgICByZWJhbGFuY2UgPSBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVi YWxhbmNlID0gcmJfaXNfYmxhY2sobm9kZSkgPyBwYXJlbnQgOiBOVUxMOworICAgICAgICB9CisK ICAgICAgICAgbm9kZS0+X19yYl9wYXJlbnRfY29sb3IgPSBvbGQtPl9fcmJfcGFyZW50X2NvbG9y OwogICAgICAgICBub2RlLT5yYl9sZWZ0ID0gb2xkLT5yYl9sZWZ0OwogCiAgICAgICAgIHJiX3Nl dF9wYXJlbnQob2xkLT5yYl9sZWZ0LCBub2RlKTsKICAgICB9CiAKLSAgICBpZiAoY29sb3IgPT0g UkJfQkxBQ0spCi0gICAgICAgIF9fcmJfZXJhc2VfY29sb3IoY2hpbGQsIHBhcmVudCwgcm9vdCk7 CisgICAgaWYgKHJlYmFsYW5jZSkKKyAgICAgICAgX19yYl9lcmFzZV9jb2xvcihyZWJhbGFuY2Us IHJvb3QpOwogfQogRVhQT1JUX1NZTUJPTChyYl9lcmFzZSk7CiAKLS0gCjIuMTIuMAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=