From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45664) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBhDx-0007B3-Td for qemu-devel@nongnu.org; Fri, 19 May 2017 08:41:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dBhDu-0002Z7-Nv for qemu-devel@nongnu.org; Fri, 19 May 2017 08:41:41 -0400 Resent-Message-Id: Received: from sender-of-o52.zoho.com ([135.84.80.217]:21314) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dBhDu-0002Yu-Dg for qemu-devel@nongnu.org; Fri, 19 May 2017 08:41:38 -0400 In-Reply-To: <1495192872-27667-1-git-send-email-pbonzini@redhat.com> Message-ID: <149519768822.696.3542847712358809127@c05f1edc8ed1> Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 From: no-reply@patchew.org Date: Fri, 19 May 2017 05:41:28 -0700 (PDT) Subject: Re: [Qemu-devel] [PULL 00/20] Misc patches for 2017-05-19 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: pbonzini@redhat.com Cc: famz@redhat.com, qemu-devel@nongnu.org SGksCgpUaGlzIHNlcmllcyBzZWVtcyB0byBoYXZlIHNvbWUgY29kaW5nIHN0eWxlIHByb2JsZW1z LiBTZWUgb3V0cHV0IGJlbG93IGZvcgptb3JlIGluZm9ybWF0aW9uOgoKTWVzc2FnZS1pZDogMTQ5 NTE5Mjg3Mi0yNzY2Ny0xLWdpdC1zZW5kLWVtYWlsLXBib256aW5pQHJlZGhhdC5jb20KVHlwZTog c2VyaWVzClN1YmplY3Q6IFtRZW11LWRldmVsXSBbUFVMTCAwMC8yMF0gTWlzYyBwYXRjaGVzIGZv ciAyMDE3LTA1LTE5Cgo9PT0gVEVTVCBTQ1JJUFQgQkVHSU4gPT09CiMhL2Jpbi9iYXNoCgpCQVNF PWJhc2UKbj0xCnRvdGFsPSQoZ2l0IGxvZyAtLW9uZWxpbmUgJEJBU0UuLiB8IHdjIC1sKQpmYWls ZWQ9MAoKZ2l0IGNvbmZpZyAtLWxvY2FsIGRpZmYucmVuYW1lbGltaXQgMApnaXQgY29uZmlnIC0t bG9jYWwgZGlmZi5yZW5hbWVzIFRydWUKCmNvbW1pdHM9IiQoZ2l0IGxvZyAtLWZvcm1hdD0lSCAt LXJldmVyc2UgJEJBU0UuLikiCmZvciBjIGluICRjb21taXRzOyBkbwogICAgZWNobyAiQ2hlY2tp bmcgUEFUQ0ggJG4vJHRvdGFsOiAkKGdpdCBsb2cgLW4gMSAtLWZvcm1hdD0lcyAkYykuLi4iCiAg ICBpZiAhIGdpdCBzaG93ICRjIC0tZm9ybWF0PWVtYWlsIHwgLi9zY3JpcHRzL2NoZWNrcGF0Y2gu cGwgLS1tYWlsYmFjayAtOyB0aGVuCiAgICAgICAgZmFpbGVkPTEKICAgICAgICBlY2hvCiAgICBm aQogICAgbj0kKChuKzEpKQpkb25lCgpleGl0ICRmYWlsZWQKPT09IFRFU1QgU0NSSVBUIEVORCA9 PT0KClVwZGF0aW5nIDNjOGNmNWE5YzIxZmY4NzgyMTY0ZDFkZWY3ZjQ0YmQ4ODg3MTMzODQKU3dp dGNoZWQgdG8gYSBuZXcgYnJhbmNoICd0ZXN0Jwo2ZmNlNGNkIHRhcmdldC9pMzg2OiB1c2UgbXVs dGlwbGUgQ1BVIEFkZHJlc3NTcGFjZXMKYTA0YmE5ZCB0YXJnZXQvaTM4NjogZW5hYmxlIEEyMCBh dXRvbWF0aWNhbGx5IGluIHN5c3RlbSBtYW5hZ2VtZW50IG1vZGUKODdjMzhkNSB2aG9zdC11c2Vy LXNjc2k6IEludHJvZHVjZSBhIHZob3N0LXVzZXItc2NzaSBzYW1wbGUgYXBwbGljYXRpb24KYTYz NzI4ZSB2aG9zdC11c2VyLXNjc2k6IEludHJvZHVjZSB2aG9zdC11c2VyLXNjc2kgaG9zdCBkZXZp Y2UKYmRhNDE5NCB2aXJ0aW8tc2NzaTogVW5zZXQgaG90cGx1ZyBoYW5kbGVyIHdoZW4gdW5yZWFs aXplCmNhMTQ0NDMgZXhlYzogc2ltcGxpZnkgcGh5c19wYWdlX2ZpbmQoKSBwYXJhbXMKN2VlZTRm ZCBuYmQvY2xpZW50LmM6IHVzZSBlcnJwIGluc3RlYWQgb2YgTE9HCjM4OGJlZGEgbmJkOiBhZGQg ZXJycCB0byByZWFkX3N5bmMsIHdyaXRlX3N5bmMgYW5kIGRyb3Bfc3luYwowMDMyMjczIG5iZDog YWRkIGVycnAgcGFyYW1ldGVyIHRvIG5iZF93cl9zeW5jdigpCmJkZjI1YzkgbmJkOiByZWFkX3N5 bmMgYW5kIGZyaWVuZHM6IHJldHVybiAwIG9uIHN1Y2Nlc3MKYjYxZDdkMSBuYmQ6IHN0cmljdCBu YmRfd3Jfc3luY3YKY2MxMDBkMyBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGZjbnRsIGluIHFl bXVfc2V0X2Nsb2V4ZWMKOTQyOTdjNiBrdm06IGlycWNoaXA6IHNraXAgdXBkYXRlIG1zaSB3aGVu IGRpc2FibGVkCmY4ZjA0ZjEgbXNpeDogdHJhY2UgY29udHJvbCBiaXQgd3JpdGUgb3AKMTFiZmUz MCBrdm06IGlycWNoaXA6IHRyYWNlIGNoYW5nZXMgb24gbXNpIGFkZC9yZW1vdmUKMTkyYzQzMiBt YzE0NjgxOHJ0YzogZW1icmFjZSBhbGwgeDg2IHNwZWNpZmljIGNvZGUKNmUxYjAwMyBtYzE0Njgx OHJ0YzogZHJvcCB1bm5lY2Vzc2FyeSAnI2lmZGVmIFRBUkdFVF9JMzg2JwpjYjlhNDViIG1jMTQ2 ODE4cnRjOiBlbnN1cmUgTE9TVF9USUNLX1BPTElDWV9TTEVXIGlzIG9ubHkgZW5hYmxlZCBvbiBU QVJHRVRfSTM4Ngo5OGE1MDhiIG1jMTQ2ODE4cnRjOiBwcmVjaXNlbHkgY291bnQgdGhlIGNsb2Nr IGZvciBwZXJpb2RpYyB0aW1lcgpiOTc0NGYzIG1jMTQ2ODE4cnRjOiB1cGRhdGUgcGVyaW9kaWMg dGltZXIgb25seSBpZiBpdCBpcyBuZWVkZWQKCj09PSBPVVRQVVQgQkVHSU4gPT09CkNoZWNraW5n IFBBVENIIDEvMjA6IG1jMTQ2ODE4cnRjOiB1cGRhdGUgcGVyaW9kaWMgdGltZXIgb25seSBpZiBp dCBpcyBuZWVkZWQuLi4KQ2hlY2tpbmcgUEFUQ0ggMi8yMDogbWMxNDY4MThydGM6IHByZWNpc2Vs eSBjb3VudCB0aGUgY2xvY2sgZm9yIHBlcmlvZGljIHRpbWVyLi4uCkVSUk9SOiBicmFjZXMge30g YXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzEyOTogRklMRTog aHcvdGltZXIvbWMxNDY4MThydGMuYzoyMTY6CisgICAgICAgIGlmIChzLT5sb3N0X3RpY2tfcG9s aWN5ID09IExPU1RfVElDS19QT0xJQ1lfU0xFVykgewpbLi4uXQorICAgICAgICB9IGVsc2UKWy4u Ll0KCnRvdGFsOiAxIGVycm9ycywgMCB3YXJuaW5ncywgMTgxIGxpbmVzIGNoZWNrZWQKCllvdXIg cGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55IG9mIHRoZXNl IGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBtYWludGFpbmVy LCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCkNoZWNraW5nIFBBVENIIDMvMjA6IG1j MTQ2ODE4cnRjOiBlbnN1cmUgTE9TVF9USUNLX1BPTElDWV9TTEVXIGlzIG9ubHkgZW5hYmxlZCBv biBUQVJHRVRfSTM4Ni4uLgpDaGVja2luZyBQQVRDSCA0LzIwOiBtYzE0NjgxOHJ0YzogZHJvcCB1 bm5lY2Vzc2FyeSAnI2lmZGVmIFRBUkdFVF9JMzg2Jy4uLgpDaGVja2luZyBQQVRDSCA1LzIwOiBt YzE0NjgxOHJ0YzogZW1icmFjZSBhbGwgeDg2IHNwZWNpZmljIGNvZGUuLi4KQ2hlY2tpbmcgUEFU Q0ggNi8yMDoga3ZtOiBpcnFjaGlwOiB0cmFjZSBjaGFuZ2VzIG9uIG1zaSBhZGQvcmVtb3ZlLi4u CkNoZWNraW5nIFBBVENIIDcvMjA6IG1zaXg6IHRyYWNlIGNvbnRyb2wgYml0IHdyaXRlIG9wLi4u CkNoZWNraW5nIFBBVENIIDgvMjA6IGt2bTogaXJxY2hpcDogc2tpcCB1cGRhdGUgbXNpIHdoZW4g ZGlzYWJsZWQuLi4KQ2hlY2tpbmcgUEFUQ0ggOS8yMDogQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBv ZiBmY250bCBpbiBxZW11X3NldF9jbG9leGVjLi4uCkNoZWNraW5nIFBBVENIIDEwLzIwOiBuYmQ6 IHN0cmljdCBuYmRfd3Jfc3luY3YuLi4KQ2hlY2tpbmcgUEFUQ0ggMTEvMjA6IG5iZDogcmVhZF9z eW5jIGFuZCBmcmllbmRzOiByZXR1cm4gMCBvbiBzdWNjZXNzLi4uCkNoZWNraW5nIFBBVENIIDEy LzIwOiBuYmQ6IGFkZCBlcnJwIHBhcmFtZXRlciB0byBuYmRfd3Jfc3luY3YoKS4uLgpDaGVja2lu ZyBQQVRDSCAxMy8yMDogbmJkOiBhZGQgZXJycCB0byByZWFkX3N5bmMsIHdyaXRlX3N5bmMgYW5k IGRyb3Bfc3luYy4uLgpDaGVja2luZyBQQVRDSCAxNC8yMDogbmJkL2NsaWVudC5jOiB1c2UgZXJy cCBpbnN0ZWFkIG9mIExPRy4uLgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiMxMjY6IEZJTEU6IG5iZC9jbGllbnQuYzo3Mjk6CiteSSAgICAgRXJyb3IgKiplcnJwKSQK CnRvdGFsOiAxIGVycm9ycywgMCB3YXJuaW5ncywgMTQ2IGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0 Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55IG9mIHRoZXNlIGVy cm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBz ZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCkNoZWNraW5nIFBBVENIIDE1LzIwOiBleGVj OiBzaW1wbGlmeSBwaHlzX3BhZ2VfZmluZCgpIHBhcmFtcy4uLgpDaGVja2luZyBQQVRDSCAxNi8y MDogdmlydGlvLXNjc2k6IFVuc2V0IGhvdHBsdWcgaGFuZGxlciB3aGVuIHVucmVhbGl6ZS4uLgpD aGVja2luZyBQQVRDSCAxNy8yMDogdmhvc3QtdXNlci1zY3NpOiBJbnRyb2R1Y2Ugdmhvc3QtdXNl ci1zY3NpIGhvc3QgZGV2aWNlLi4uCkVSUk9SOiBkbyBub3QgdXNlIEM5OSAvLyBjb21tZW50cwoj MjE2OiBGSUxFOiBody9zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjE0NToKKyAgICAvLyBUdXJuIG9u IHByZWRlZmluZWQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlCgpFUlJPUjogZG8g bm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzI2MTogRklMRTogaHcvc2NzaS92aG9zdC11c2VyLXNj c2kuYzoxOTA6CisgICAgLy8gQWRkIHRoZSBib290aW5kZXggcHJvcGVydHkgZm9yIHRoaXMgb2Jq ZWN0CgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzI2NTogRklMRTogaHcvc2Nz aS92aG9zdC11c2VyLXNjc2kuYzoxOTQ6CisgICAgLy8gU2V0IGJvb3QgaW5kZXggYWNjb3JkaW5n IHRoZSB0aGUgZGV2aWNlIGNvbmZpZwoKdG90YWw6IDMgZXJyb3JzLCAwIHdhcm5pbmdzLCAzODIg bGluZXMgY2hlY2tlZAoKWW91ciBwYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZp ZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRo ZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKQ2hl Y2tpbmcgUEFUQ0ggMTgvMjA6IHZob3N0LXVzZXItc2NzaTogSW50cm9kdWNlIGEgdmhvc3QtdXNl ci1zY3NpIHNhbXBsZSBhcHBsaWNhdGlvbi4uLgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29t bWVudHMKIzEwOTogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3Np LmM6Mjg6CisvLyNkZWZpbmUgVlVTX0RFQlVHIDEKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJv dW5kIHRoYXQgJy8nIChjdHg6VnhWKQojMTIzOiBGSUxFOiBjb250cmliL3Zob3N0LXVzZXItc2Nz aS92aG9zdC11c2VyLXNjc2kuYzo0MjoKKyAgICAgICAgICAgIHRpbWVidWYsIHRzLnR2X25zZWMv MTAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgoKRVJST1I6IF9fZnVuY19fIHNob3VsZCBiZSB1c2VkIGluc3RlYWQg b2YgZ2NjIHNwZWNpZmljIF9fRlVOQ1RJT05fXwojMTI0OiBGSUxFOiBjb250cmliL3Zob3N0LXVz ZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo0MzoKKyAgICAgICAgICAgIF9fRklMRV9fLCBfX0ZV TkNUSU9OX18sIF9fTElORV9fLCAjIyBfX1ZBX0FSR1NfXyk7ICAgICAgICBcCgpFUlJPUjogc3Bh Y2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojMTI1OiBGSUxFOiBj b250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo0NDoKK30gd2hpbGUoMCkK CkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQojMTMwOiBG SUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo0OToKKyAgICAg ICAgICAgIHRpbWVidWYsIHRzLnR2X25zZWMvMTAwMCwgIyMgX19WQV9BUkdTX18pOyAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNl IHJlcXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzEzMTogRklMRTogY29u dHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NTA6Cit9IHdoaWxlKDApOwoK RVJST1I6IGRvIG5vdCB1c2UgQzk5IC8vIGNvbW1lbnRzCiMxNDU6IEZJTEU6IGNvbnRyaWIvdmhv c3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjY0OgorI2RlZmluZSBWVVNfTUFYX0xVTlMg MSAvLyBPbmx5IDEgbHVuIHN1cHBvcnRlZCB0b2RheQoKRVJST1I6IGRvIG5vdCB1c2UgQzk5IC8v IGNvbW1lbnRzCiMxNDY6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXIt c2NzaS5jOjY1OgorI2RlZmluZSBWVVNfTUFYX0RFVlMgMSAvLyBPbmx5IDEgZGV2aWNlcyBzdXBw b3J0ZWQgdG9kYXkKCkVSUk9SOiBkbyBub3QgdXNlIEM5OSAvLyBjb21tZW50cwojMTU5OiBGSUxF OiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo3ODoKKyAgICBHVHJl ZSAqZmRtYXA7ICAgLy8gbWFwcyBmZCB0byBnc291cmNlIGNvbnRleHQgaWQKCkVSUk9SOiB0cmFp bGluZyBzdGF0ZW1lbnRzIHNob3VsZCBiZSBvbiBuZXh0IGxpbmUKIzE3NjogRklMRTogY29udHJp Yi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6OTU6CisgICAgaWYgKGIgPiBhKSBy ZXR1cm4gMTsKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2Yg dGhpcyBzdGF0ZW1lbnQKIzE3NjogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3Qt dXNlci1zY3NpLmM6OTU6CisgICAgaWYgKGIgPiBhKSByZXR1cm4gMTsKWy4uLl0KCkVSUk9SOiB0 cmFpbGluZyBzdGF0ZW1lbnRzIHNob3VsZCBiZSBvbiBuZXh0IGxpbmUKIzE3NzogRklMRTogY29u dHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6OTY6CisgICAgaWYgKGIgPCBh KSByZXR1cm4gLTE7CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1z IG9mIHRoaXMgc3RhdGVtZW50CiMxNzc6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zo b3N0LXVzZXItc2NzaS5jOjk2OgorICAgIGlmIChiIDwgYSkgcmV0dXJuIC0xOwpbLi4uXQoKRVJS T1I6IHRyYWlsaW5nIHN0YXRlbWVudHMgc2hvdWxkIGJlIG9uIG5leHQgbGluZQojMjEzOiBGSUxF OiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzoxMzI6CisgICAgICAg IGlmICh2dXNfc3JjLT5nZmQuZXZlbnRzICYgR19JT19JTikgIHZ1X2V2dCB8PSBWVV9XQVRDSF9J TjsKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBz dGF0ZW1lbnQKIzIxMzogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1z Y3NpLmM6MTMyOgorICAgICAgICBpZiAodnVzX3NyYy0+Z2ZkLmV2ZW50cyAmIEdfSU9fSU4pICB2 dV9ldnQgfD0gVlVfV0FUQ0hfSU47ClsuLi5dCgpFUlJPUjogdHJhaWxpbmcgc3RhdGVtZW50cyBz aG91bGQgYmUgb24gbmV4dCBsaW5lCiMyMTQ6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3Np L3Zob3N0LXVzZXItc2NzaS5jOjEzMzoKKyAgICAgICAgaWYgKHZ1c19zcmMtPmdmZC5ldmVudHMg JiBHX0lPX09VVCkgdnVfZXZ0IHw9IFZVX1dBVENIX09VVDsKCkVSUk9SOiBicmFjZXMge30gYXJl IG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzIxNDogRklMRTogY29u dHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6MTMzOgorICAgICAgICBpZiAo dnVzX3NyYy0+Z2ZkLmV2ZW50cyAmIEdfSU9fT1VUKSB2dV9ldnQgfD0gVlVfV0FUQ0hfT1VUOwpb Li4uXQoKRVJST1I6IHRyYWlsaW5nIHN0YXRlbWVudHMgc2hvdWxkIGJlIG9uIG5leHQgbGluZQoj MjE1OiBGSUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzoxMzQ6 CisgICAgICAgIGlmICh2dXNfc3JjLT5nZmQuZXZlbnRzICYgR19JT19QUkkpIHZ1X2V2dCB8PSBW VV9XQVRDSF9QUkk7CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1z IG9mIHRoaXMgc3RhdGVtZW50CiMyMTU6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zo b3N0LXVzZXItc2NzaS5jOjEzNDoKKyAgICAgICAgaWYgKHZ1c19zcmMtPmdmZC5ldmVudHMgJiBH X0lPX1BSSSkgdnVfZXZ0IHw9IFZVX1dBVENIX1BSSTsKWy4uLl0KCkVSUk9SOiB0cmFpbGluZyBz dGF0ZW1lbnRzIHNob3VsZCBiZSBvbiBuZXh0IGxpbmUKIzIxNjogRklMRTogY29udHJpYi92aG9z dC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6MTM1OgorICAgICAgICBpZiAodnVzX3NyYy0+ Z2ZkLmV2ZW50cyAmIEdfSU9fRVJSKSB2dV9ldnQgfD0gVlVfV0FUQ0hfRVJSOwoKRVJST1I6IGJy YWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojMjE2 OiBGSUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzoxMzU6Cisg ICAgICAgIGlmICh2dXNfc3JjLT5nZmQuZXZlbnRzICYgR19JT19FUlIpIHZ1X2V2dCB8PSBWVV9X QVRDSF9FUlI7ClsuLi5dCgpFUlJPUjogdHJhaWxpbmcgc3RhdGVtZW50cyBzaG91bGQgYmUgb24g bmV4dCBsaW5lCiMyMTc6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXIt c2NzaS5jOjEzNjoKKyAgICAgICAgaWYgKHZ1c19zcmMtPmdmZC5ldmVudHMgJiBHX0lPX0hVUCkg dnVfZXZ0IHw9IFZVX1dBVENIX0hVUDsKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBm b3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzIxNzogRklMRTogY29udHJpYi92aG9zdC11 c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6MTM2OgorICAgICAgICBpZiAodnVzX3NyYy0+Z2Zk LmV2ZW50cyAmIEdfSU9fSFVQKSB2dV9ldnQgfD0gVlVfV0FUQ0hfSFVQOwpbLi4uXQoKRVJST1I6 IHVzZSBRRU1VIGluc3RlYWQgb2YgUWVtdSBvciBRRW11CiMyNzc6IEZJTEU6IGNvbnRyaWIvdmhv c3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjE5NjoKKyAqICAgICBRZW11J3Mgc2NzaS5o IGFsc28gZGVmaW5lcyAiU0NTSV9YRkVSX05PTkUiLgoKRVJST1I6IG9wZW4gYnJhY2UgJ3snIGZv bGxvd2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZ28gb24gdGhlIG5leHQgbGluZQojMzU4OiBG SUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzoyNzc6CitzdGF0 aWMgaW50IGlzY3NpX2FkZF9sdW4oaXNjc2lfbHVuX3QgKmx1biwgY2hhciAqaXNjc2lfdXJpKSB7 CgpFUlJPUjogb3BlbiBicmFjZSAneycgZm9sbG93aW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBn byBvbiB0aGUgbmV4dCBsaW5lCiM0MjM6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zo b3N0LXVzZXItc2NzaS5jOjM0MjoKK3N0YXRpYyBpbnQgZ2V0X2NkYl9sZW4odWludDhfdCAqY2Ri KSB7CgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICc+PicgKGN0eDpWeFYpCiM0 MzM6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjM1MjoK KyAgICBQRVJSKCJVbmFibGUgdG8gZGV0ZXJtaW5lIGNkYiBsZW4gKDB4JTAyaGhYKSIsIGNkYlsw XT4+NSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzQ1MzogRklMRTog Y29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6MzcyOgorICAgICAgICAv LyBJZ25vcmUgYW55dGhpbmcgZGlmZmVyZW50IHRoYW4gdGFyZ2V0PTAsIGx1bj0wCgpFUlJPUjog c3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICc9JyAoY3R4OlZ4VikKIzQ3NzogRklMRTogY29u dHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6Mzk2OgorICAgICAgICBmb3Ig KGk9MDsgaTxvdXRfbGVuOyBpKyspIHsKICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyBy ZXF1aXJlZCBhcm91bmQgdGhhdCAnPCcgKGN0eDpWeFYpCiM0Nzc6IEZJTEU6IGNvbnRyaWIvdmhv c3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjM5NjoKKyAgICAgICAgZm9yIChpPTA7IGk8 b3V0X2xlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1 aXJlZCBhcm91bmQgdGhhdCAnPScgKGN0eDpWeFYpCiM0ODI6IEZJTEU6IGNvbnRyaWIvdmhvc3Qt dXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjQwMToKKyAgICAgICAgZm9yIChpPTA7IGk8aW5f bGVuOyBpKyspIHsKICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91 bmQgdGhhdCAnPCcgKGN0eDpWeFYpCiM0ODI6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3Np L3Zob3N0LXVzZXItc2NzaS5jOjQwMToKKyAgICAgICAgZm9yIChpPTA7IGk8aW5fbGVuOyBpKysp IHsKICAgICAgICAgICAgICAgICAgICBeCgpFUlJPUjogb3BlbiBicmFjZSAneycgZm9sbG93aW5n IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBnbyBvbiB0aGUgbmV4dCBsaW5lCiM1MzI6IEZJTEU6IGNv bnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjQ1MToKK3N0YXRpYyB2b2lk IHZ1c19wYW5pY19jYihWdURldiAqdnVfZGV2LCBjb25zdCBjaGFyICpidWYpIHsKCkVSUk9SOiB0 cmFpbGluZyBzdGF0ZW1lbnRzIHNob3VsZCBiZSBvbiBuZXh0IGxpbmUKIzU3NDogRklMRTogY29u dHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NDkzOgorICAgIGlmICh2dV9l dnQgJiBWVV9XQVRDSF9JTikgIGNvbmRzIHw9IEdfSU9fSU47CgpFUlJPUjogYnJhY2VzIHt9IGFy ZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM1NzQ6IEZJTEU6IGNv bnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjQ5MzoKKyAgICBpZiAodnVf ZXZ0ICYgVlVfV0FUQ0hfSU4pICBjb25kcyB8PSBHX0lPX0lOOwpbLi4uXQoKRVJST1I6IHRyYWls aW5nIHN0YXRlbWVudHMgc2hvdWxkIGJlIG9uIG5leHQgbGluZQojNTc1OiBGSUxFOiBjb250cmli L3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo0OTQ6CisgICAgaWYgKHZ1X2V2dCAm IFZVX1dBVENIX09VVCkgY29uZHMgfD0gR19JT19PVVQ7CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBu ZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM1NzU6IEZJTEU6IGNvbnRy aWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjQ5NDoKKyAgICBpZiAodnVfZXZ0 ICYgVlVfV0FUQ0hfT1VUKSBjb25kcyB8PSBHX0lPX09VVDsKWy4uLl0KCkVSUk9SOiB0cmFpbGlu ZyBzdGF0ZW1lbnRzIHNob3VsZCBiZSBvbiBuZXh0IGxpbmUKIzU3NjogRklMRTogY29udHJpYi92 aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NDk1OgorICAgIGlmICh2dV9ldnQgJiBW VV9XQVRDSF9QUkkpIGNvbmRzIHw9IEdfSU9fUFJJOwoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVj ZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojNTc2OiBGSUxFOiBjb250cmli L3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo0OTU6CisgICAgaWYgKHZ1X2V2dCAm IFZVX1dBVENIX1BSSSkgY29uZHMgfD0gR19JT19QUkk7ClsuLi5dCgpFUlJPUjogdHJhaWxpbmcg c3RhdGVtZW50cyBzaG91bGQgYmUgb24gbmV4dCBsaW5lCiM1Nzc6IEZJTEU6IGNvbnRyaWIvdmhv c3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjQ5NjoKKyAgICBpZiAodnVfZXZ0ICYgVlVf V0FUQ0hfRVJSKSBjb25kcyB8PSBHX0lPX0VSUjsKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vz c2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzU3NzogRklMRTogY29udHJpYi92 aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NDk2OgorICAgIGlmICh2dV9ldnQgJiBW VV9XQVRDSF9FUlIpIGNvbmRzIHw9IEdfSU9fRVJSOwpbLi4uXQoKRVJST1I6IHRyYWlsaW5nIHN0 YXRlbWVudHMgc2hvdWxkIGJlIG9uIG5leHQgbGluZQojNTc4OiBGSUxFOiBjb250cmliL3Zob3N0 LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo0OTc6CisgICAgaWYgKHZ1X2V2dCAmIFZVX1dB VENIX0hVUCkgY29uZHMgfD0gR19JT19IVVA7CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3Nh cnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM1Nzg6IEZJTEU6IGNvbnRyaWIvdmhv c3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjQ5NzoKKyAgICBpZiAodnVfZXZ0ICYgVlVf V0FUQ0hfSFVQKSBjb25kcyB8PSBHX0lPX0hVUDsKWy4uLl0KCkVSUk9SOiBvcGVuIGJyYWNlICd7 JyBmb2xsb3dpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGdvIG9uIHRoZSBuZXh0IGxpbmUKIzU4 NTogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NTA0Ogor c3RhdGljIHZvaWQgdnVzX2RlbF93YXRjaF9jYihWdURldiAqdnVfZGV2LCBpbnQgZmQpIHsKCkVS Uk9SOiBvcGVuIGJyYWNlICd7JyBmb2xsb3dpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGdvIG9u IHRoZSBuZXh0IGxpbmUKIzYwODogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3Qt dXNlci1zY3NpLmM6NTI3Ogorc3RhdGljIHZvaWQgdnVzX3Byb2NfY3RsKFZ1RGV2ICp2dV9kZXYs IGludCBpZHgpIHsKCkVSUk9SOiBvcGVuIGJyYWNlICd7JyBmb2xsb3dpbmcgZnVuY3Rpb24gZGVj bGFyYXRpb25zIGdvIG9uIHRoZSBuZXh0IGxpbmUKIzYxMjogRklMRTogY29udHJpYi92aG9zdC11 c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NTMxOgorc3RhdGljIHZvaWQgdnVzX3Byb2NfZXZ0 KFZ1RGV2ICp2dV9kZXYsIGludCBpZHgpIHsKCkVSUk9SOiBvcGVuIGJyYWNlICd7JyBmb2xsb3dp bmcgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGdvIG9uIHRoZSBuZXh0IGxpbmUKIzYxNjogRklMRTog Y29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NTM1Ogorc3RhdGljIHZv aWQgdnVzX3Byb2NfcmVxKFZ1RGV2ICp2dV9kZXYsIGludCBpZHgpIHsKCkVSUk9SOiBzcGFjZSBy ZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVzaXMgJygnCiM2NDM6IEZJTEU6IGNvbnRy aWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjU2MjoKKyAgICB3aGlsZSgxKSB7 CgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICctJyAoY3R4OlZ4VikKIzY3Mzog RklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NTkyOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcSwgJmVsZW0tPm91dF9zZ1sxXSwgZWxlbS0+b3V0 X251bS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJy0n IChjdHg6VnhWKQojNjc0OiBGSUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2Vy LXNjc2kuYzo1OTM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNwLCAmZWxlbS0+aW5f c2dbMV0sIGVsZW0tPmluX251bS0xKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBvcGVuIGJyYWNl ICd7JyBmb2xsb3dpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGdvIG9uIHRoZSBuZXh0IGxpbmUK IzY4NjogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NjA1 Ogorc3RhdGljIHZvaWQgdnVzX3F1ZXVlX3NldF9zdGFydGVkKFZ1RGV2ICp2dV9kZXYsIGludCBp ZHgsIGJvb2wgc3RhcnRlZCkgewoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3Bl biBwYXJlbnRoZXNpcyAnKCcKIzY5OTogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhv c3QtdXNlci1zY3NpLmM6NjE4OgorICAgIHN3aXRjaChpZHgpIHsKCkVSUk9SOiBzcGFjZXMgcmVx dWlyZWQgYXJvdW5kIHRoYXQgJz8nIChjdHg6VnhWKQojNzAxOiBGSUxFOiBjb250cmliL3Zob3N0 LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo2MjA6CisgICAgICAgIHZ1X3NldF9xdWV1ZV9o YW5kbGVyKHZ1X2RldiwgdnEsIHN0YXJ0ZWQ/dnVzX3Byb2NfY3RsOk5VTEwpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyBy ZXF1aXJlZCBhcm91bmQgdGhhdCAnOicgKGN0eDpWeFYpCiM3MDE6IEZJTEU6IGNvbnRyaWIvdmhv c3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjYyMDoKKyAgICAgICAgdnVfc2V0X3F1ZXVl X2hhbmRsZXIodnVfZGV2LCB2cSwgc3RhcnRlZD92dXNfcHJvY19jdGw6TlVMTCk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoK RVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnPycgKGN0eDpWeFYpCiM3MDQ6IEZJ TEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjYyMzoKKyAgICAg ICAgdnVfc2V0X3F1ZXVlX2hhbmRsZXIodnVfZGV2LCB2cSwgc3RhcnRlZD92dXNfcHJvY19ldnQ6 TlVMTCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICc6JyAoY3R4OlZ4VikKIzcwNDog RklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NjIzOgorICAg ICAgICB2dV9zZXRfcXVldWVfaGFuZGxlcih2dV9kZXYsIHZxLCBzdGFydGVkP3Z1c19wcm9jX2V2 dDpOVUxMKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICc/JyAo Y3R4OlZ4VikKIzcwNzogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1z Y3NpLmM6NjI2OgorICAgICAgICB2dV9zZXRfcXVldWVfaGFuZGxlcih2dV9kZXYsIHZxLCBzdGFy dGVkP3Z1c19wcm9jX3JlcTpOVUxMKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJzon IChjdHg6VnhWKQojNzA3OiBGSUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2Vy LXNjc2kuYzo2MjY6CisgICAgICAgIHZ1X3NldF9xdWV1ZV9oYW5kbGVyKHZ1X2RldiwgdnEsIHN0 YXJ0ZWQ/dnVzX3Byb2NfcmVxOk5VTEwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBvcGVuIGJyYWNlICd7JyBm b2xsb3dpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGdvIG9uIHRoZSBuZXh0IGxpbmUKIzcxNTog RklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNlci1zY3NpLmM6NjM0Ogorc3Rh dGljIGdib29sZWFuIHZ1c192aG9zdF9jYihncG9pbnRlciBkYXRhKSB7CgpFUlJPUjogb3BlbiBi cmFjZSAneycgZm9sbG93aW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBnbyBvbiB0aGUgbmV4dCBs aW5lCiM3MzE6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5j OjY1MDoKK3N0YXRpYyBpbnQgdW5peF9zb2NrX25ldyhjaGFyICp1bml4X2ZuKSB7CgpFUlJPUjog b3BlbiBicmFjZSAneycgZm9sbG93aW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBnbyBvbiB0aGUg bmV4dCBsaW5lCiM3Njk6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXIt c2NzaS5jOjY4ODoKK3N0YXRpYyB2aG9zdF9zY3NpX2Rldl90ICp2ZGV2X3Njc2lfZmluZF9ieV92 dShWdURldiAqdnVfZGV2KSB7CgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICc9 JyAoY3R4OlZ4VikKIzc3NDogRklMRTogY29udHJpYi92aG9zdC11c2VyLXNjc2kvdmhvc3QtdXNl ci1zY3NpLmM6NjkzOgorICAgIGZvciAoaT0wOyBpPFZVU19NQVhfREVWUzsgaSsrKSB7CiAgICAg ICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnPCcgKGN0eDpWeFYp CiM3NzQ6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2NzaS5jOjY5 MzoKKyAgICBmb3IgKGk9MDsgaTxWVVNfTUFYX0RFVlM7IGkrKykgewogICAgICAgICAgICAgICAg XgoKRVJST1I6IG9wZW4gYnJhY2UgJ3snIGZvbGxvd2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMg Z28gb24gdGhlIG5leHQgbGluZQojNzg0OiBGSUxFOiBjb250cmliL3Zob3N0LXVzZXItc2NzaS92 aG9zdC11c2VyLXNjc2kuYzo3MDM6CitzdGF0aWMgdm9pZCB2ZGV2X3Njc2lfZGVpbml0KHZob3N0 X3Njc2lfZGV2X3QgKnZkZXZfc2NzaSkgewoKRVJST1I6IG9wZW4gYnJhY2UgJ3snIGZvbGxvd2lu ZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZ28gb24gdGhlIG5leHQgbGluZQojODA5OiBGSUxFOiBj b250cmliL3Zob3N0LXVzZXItc2NzaS92aG9zdC11c2VyLXNjc2kuYzo3Mjg6CitzdGF0aWMgdmhv c3Rfc2NzaV9kZXZfdCAqdmRldl9zY3NpX25ldyhjaGFyICp1bml4X2ZuKSB7CgpFUlJPUjogb3Bl biBicmFjZSAneycgZm9sbG93aW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBnbyBvbiB0aGUgbmV4 dCBsaW5lCiM4NjQ6IEZJTEU6IGNvbnRyaWIvdmhvc3QtdXNlci1zY3NpL3Zob3N0LXVzZXItc2Nz aS5jOjc4MzoKK3N0YXRpYyBpbnQgdmRldl9zY3NpX3J1bih2aG9zdF9zY3NpX2Rldl90ICp2ZGV2 X3Njc2kpIHsKCnRvdGFsOiA2NiBlcnJvcnMsIDAgd2FybmluZ3MsIDkxMiBsaW5lcyBjaGVja2Vk CgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmlldy4gIElmIGFueSBv ZiB0aGVzZSBlcnJvcnMKYXJlIGZhbHNlIHBvc2l0aXZlcyByZXBvcnQgdGhlbSB0byB0aGUgbWFp bnRhaW5lciwgc2VlCkNIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCgpDaGVja2luZyBQQVRDSCAx OS8yMDogdGFyZ2V0L2kzODY6IGVuYWJsZSBBMjAgYXV0b21hdGljYWxseSBpbiBzeXN0ZW0gbWFu YWdlbWVudCBtb2RlLi4uCkNoZWNraW5nIFBBVENIIDIwLzIwOiB0YXJnZXQvaTM4NjogdXNlIG11 bHRpcGxlIENQVSBBZGRyZXNzU3BhY2VzLi4uCj09PSBPVVRQVVQgRU5EID09PQoKVGVzdCBjb21t YW5kIGV4aXRlZCB3aXRoIGNvZGU6IDEKCgotLS0KRW1haWwgZ2VuZXJhdGVkIGF1dG9tYXRpY2Fs bHkgYnkgUGF0Y2hldyBbaHR0cDovL3BhdGNoZXcub3JnL10uClBsZWFzZSBzZW5kIHlvdXIgZmVl ZGJhY2sgdG8gcGF0Y2hldy1kZXZlbEBmcmVlbGlzdHMub3Jn