From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29949 invoked by alias); 9 Jun 2009 00:51:09 -0000 Received: (qmail 29940 invoked by uid 22791); 9 Jun 2009 00:51:07 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 09 Jun 2009 00:51:01 +0000 Received: from wpaz37.hot.corp.google.com (wpaz37.hot.corp.google.com [172.24.198.101]) by smtp-out.google.com with ESMTP id n590ovO2001065 for ; Tue, 9 Jun 2009 01:50:58 +0100 Received: from qyk29 (qyk29.prod.google.com [10.241.83.157]) by wpaz37.hot.corp.google.com with ESMTP id n590odXb025854 for ; Mon, 8 Jun 2009 17:50:56 -0700 Received: by qyk29 with SMTP id 29so4475089qyk.4 for ; Mon, 08 Jun 2009 17:50:56 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.79.19 with SMTP id n19mr1677833qck.74.1244508656331; Mon, 08 Jun 2009 17:50:56 -0700 (PDT) Date: Tue, 09 Jun 2009 00:51:00 -0000 Message-ID: <8ac60eac0906081750i1faddef3pe35f4983bf5ee400@mail.gmail.com> Subject: [patch] Eliminate quadratic slow-down on number of solibs (take 2). From: Paul Pluzhnikov To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00163646c2e4616f2a046bdfc080 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-06/txt/msg00199.txt.bz2 --00163646c2e4616f2a046bdfc080 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1607 On Wed, Jun 3, 2009 at 2:34 PM, Tom Tromey wrote: > Paul> The problem is that the call chain is deep: > Yeah, but it can be simplified. > Paul> =A0 =A0 flags=3D) at ../../src/gdb/symfile.c:1= 033 > Paul> #5 =A00x00000000004e3ee5 in symbol_file_add_from_bfd (abfd=3D0xd57f= e0, > Paul> =A0 =A0 from_tty=3D0, addrs=3D0x0, mainline=3D0, flags=3D) > Paul> =A0 =A0 at ../../src/gdb/symfile.c:1103 > > These are all just forwarding calls, basically overloads. > You could add a new overload just for this purpose. But they may call themselves recursively. I've added a bit to OBJF_* flags instead. How about attached patch then? On a 1500+ solib test case I see 20% reduction in CPU, measured as: time gdb -ex 'break main' -ex run -ex quit custom_test Before (best time): real 1m1.724s user 0m56.776s sys 0m4.852s After: real 0m51.596s user 0m46.739s sys 0m4.820s Tested on Linux/x86_64, no new failures. Thanks, --=20 Paul Pluzhnikov 2009-06-08 Paul Pluzhnikov * solib.c (symbol_add_stub): Add DEFER_BP_RESET parameter. (solib_read_symbols): Add DEFER_BP_RESET parameter. (solib_add): Defer breakpoint reset. * solib.h (solib_read_symbols): Adjust prototype. * symfile.c (new_symfile_objfile): Add FLAGS parameter. (symbol_file_add_with_addrs_or_offsets): Adjust call. * symfile.h (new_symfile_objfile): Adjust prototype. * objfile.h (OBJF_DEFER_BP_RESET): New define. * bsd-uthread.c (bsd_uthread_solib_loaded): Adjust call. * rs6000-nat.c (objfile_symbol_add): Adjust call. --00163646c2e4616f2a046bdfc080 Content-Type: text/plain; charset=US-ASCII; name="gdb-breakpoint-20090608.txt" Content-Disposition: attachment; filename="gdb-breakpoint-20090608.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvpwapkm0 Content-length: 9773 SW5kZXg6IHNvbGliLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9zcmMvc3JjL2dkYi9zb2xpYi5oLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjI0CmRpZmYgLXUgLXAgLXUgLXIxLjI0IHNvbGliLmgKLS0tIHNv bGliLmgJMTUgTWF5IDIwMDkgMTY6NTM6NDQgLTAwMDAJMS4yNAorKysgc29s aWIuaAk5IEp1biAyMDA5IDAwOjQ5OjMwIC0wMDAwCkBAIC0zNCw3ICszNCw3 IEBAIGV4dGVybiB2b2lkIGNsZWFyX3NvbGliICh2b2lkKTsKIC8qIENhbGxl ZCB0byBhZGQgc3ltYm9scyBmcm9tIGEgc2hhcmVkIGxpYnJhcnkgdG8gZ2Ri J3Mgc3ltYm9sIHRhYmxlLiAqLwogCiBleHRlcm4gdm9pZCBzb2xpYl9hZGQg KGNoYXIgKiwgaW50LCBzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBpbnQpOwotZXh0 ZXJuIGludCBzb2xpYl9yZWFkX3N5bWJvbHMgKHN0cnVjdCBzb19saXN0ICos IGludCk7CitleHRlcm4gaW50IHNvbGliX3JlYWRfc3ltYm9scyAoc3RydWN0 IHNvX2xpc3QgKiwgaW50LCBpbnQpOwogCiAvKiBGdW5jdGlvbiB0byBiZSBj YWxsZWQgd2hlbiB0aGUgaW5mZXJpb3Igc3RhcnRzIHVwLCB0byBkaXNjb3Zl ciB0aGUKICAgIG5hbWVzIG9mIHNoYXJlZCBsaWJyYXJpZXMgdGhhdCBhcmUg ZHluYW1pY2FsbHkgbGlua2VkLCB0aGUgYmFzZQpJbmRleDogc29saWIuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv Z2RiL3NvbGliLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTE5CmRpZmYg LXUgLXAgLXUgLXIxLjExOSBzb2xpYi5jCi0tLSBzb2xpYi5jCTMgSnVuIDIw MDkgMTg6NTA6MzYgLTAwMDAJMS4xMTkKKysrIHNvbGliLmMJOSBKdW4gMjAw OSAwMDo0OTozMSAtMDAwMApAQCAtNDQ4LDMwICs0NDgsMjkgQEAgbWFzdGVy X3NvX2xpc3QgKHZvaWQpCiAgIHJldHVybiBzb19saXN0X2hlYWQ7CiB9CiAK LQotLyogQSBzbWFsbCBzdHViIHRvIGdldCB1cyBwYXN0IHRoZSBhcmctcGFz c2luZyBwaW5ob2xlIG9mIGNhdGNoX2Vycm9ycy4gICovCi0KLXN0YXRpYyBp bnQKLXN5bWJvbF9hZGRfc3R1YiAodm9pZCAqYXJnKQorc3RhdGljIHZvaWQK K3N5bWJvbF9hZGRfc3R1YiAoc3RydWN0IHNvX2xpc3QgKnNvLCBpbnQgZGVm ZXJfYnBfcmVzZXQpCiB7Ci0gIHN0cnVjdCBzb19saXN0ICpzbyA9IChzdHJ1 Y3Qgc29fbGlzdCAqKSBhcmc7ICAvKiBjYXRjaF9lcnJzIGJvZ29uICovCiAg IHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqc2FwOworICBpbnQgZmxhZ3Mg PSBPQkpGX1NIQVJFRCB8IE9CSkZfS0VFUEJGRDsKIAogICAvKiBIYXZlIHdl IGFscmVhZHkgbG9hZGVkIHRoaXMgc2hhcmVkIG9iamVjdD8gICovCiAgIEFM TF9PQkpGSUxFUyAoc28tPm9iamZpbGUpCiAgICAgewogICAgICAgaWYgKHN0 cmNtcCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwKQot CXJldHVybiAxOworCXJldHVybjsKICAgICB9CiAKICAgc2FwID0gYnVpbGRf c2VjdGlvbl9hZGRyX2luZm9fZnJvbV9zZWN0aW9uX3RhYmxlIChzby0+c2Vj dGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc28tPnNlY3Rpb25zX2VuZCk7CiAKKyAgaWYgKGRl ZmVyX2JwX3Jlc2V0KQorICAgIGZsYWdzIHw9IE9CSkZfREVGRVJfQlBfUkVT RVQ7CiAgIHNvLT5vYmpmaWxlID0gc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZk IChzby0+YWJmZCwgc28tPmZyb21fdHR5LAotCQkJCQkgIHNhcCwgMCwgT0JK Rl9TSEFSRUQgfCBPQkpGX0tFRVBCRkQpOworCQkJCQkgIHNhcCwgMCwgZmxh Z3MpOwogICBmcmVlX3NlY3Rpb25fYWRkcl9pbmZvIChzYXApOwogCi0gIHJl dHVybiAoMSk7CisgIHJldHVybjsKIH0KIAogLyogUmVhZCBpbiBzeW1ib2xz IGZvciBzaGFyZWQgb2JqZWN0IFNPLiAgSWYgRlJPTV9UVFkgaXMgbm9uLXpl cm8sIGJlCkBAIC00NzksNyArNDc4LDcgQEAgc3ltYm9sX2FkZF9zdHViICh2 b2lkICphcmcpCiAgICBsb2FkZWQuICAqLwogCiBpbnQKLXNvbGliX3JlYWRf c3ltYm9scyAoc3RydWN0IHNvX2xpc3QgKnNvLCBpbnQgZnJvbV90dHkpCitz b2xpYl9yZWFkX3N5bWJvbHMgKHN0cnVjdCBzb19saXN0ICpzbywgaW50IGZy b21fdHR5LCBpbnQgZGVmZXJfYnBfcmVzZXQpCiB7CiAgIGlmIChzby0+c3lt Ym9sc19sb2FkZWQpCiAgICAgewpAQCAtNDkzLDE1ICs0OTIsMjEgQEAgc29s aWJfcmVhZF9zeW1ib2xzIChzdHJ1Y3Qgc29fbGlzdCAqc28sIAogICAgIH0K ICAgZWxzZQogICAgIHsKLSAgICAgIGlmIChjYXRjaF9lcnJvcnMgKHN5bWJv bF9hZGRfc3R1Yiwgc28sCi0JCQkiRXJyb3Igd2hpbGUgcmVhZGluZyBzaGFy ZWQgbGlicmFyeSBzeW1ib2xzOlxuIiwKLQkJCVJFVFVSTl9NQVNLX0FMTCkp Ci0JewotCSAgaWYgKGZyb21fdHR5ICYmIHByaW50X3N5bWJvbF9sb2FkaW5n KQotCSAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiTG9hZGVkIHN5bWJvbHMg Zm9yICVzXG4iKSwgc28tPnNvX25hbWUpOwotCSAgc28tPnN5bWJvbHNfbG9h ZGVkID0gMTsKLQkgIHJldHVybiAxOwotCX0KKyAgICAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdGlvbjsKKyAgICAgIFRSWV9DQVRD SCAoZXhjZXB0aW9uLCBSRVRVUk5fTUFTS19BTEwpCisgICAgICAgIHsKKyAg ICAgICAgICBzeW1ib2xfYWRkX3N0dWIgKHNvLCBkZWZlcl9icF9yZXNldCk7 CisgICAgICAgIH0KKyAgICAgIGlmIChleGNlcHRpb24ucmVhc29uICE9IDAp CisgICAgICAgIHsKKyAgICAgICAgICBleGNlcHRpb25fZnByaW50ZiAoZ2Ri X3N0ZGVyciwgZXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiRXJyb3Igd2hpbGUgcmVhZGluZyBzaGFyZWQgbGlicmFyeSBzeW1i b2xzOlxuIik7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAg ICAgIGlmIChmcm9tX3R0eSAmJiBwcmludF9zeW1ib2xfbG9hZGluZykKKyAg ICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIkxvYWRlZCBzeW1ib2xzIGZv ciAlc1xuIiksIHNvLT5zb19uYW1lKTsKKyAgICAgIHNvLT5zeW1ib2xzX2xv YWRlZCA9IDE7CisgICAgICByZXR1cm4gMTsKICAgICB9CiAKICAgcmV0dXJu IDA7CkBAIC03NDksMTAgKzc1NCwxMyBAQCBzb2xpYl9hZGQgKGNoYXIgKnBh dHRlcm4sIGludCBmcm9tX3R0eSwgCiAgICAgICAgICAgICAocmVhZHN5bXMg fHwgbGlicHRocmVhZF9zb2xpYl9wIChnZGIpKTsKIAogCSAgYW55X21hdGNo ZXMgPSAxOwotCSAgaWYgKGFkZF90aGlzX3NvbGliICYmIHNvbGliX3JlYWRf c3ltYm9scyAoZ2RiLCBmcm9tX3R0eSkpCisJICBpZiAoYWRkX3RoaXNfc29s aWIgJiYgc29saWJfcmVhZF9zeW1ib2xzIChnZGIsIGZyb21fdHR5LCAxKSkK IAkgICAgbG9hZGVkX2FueV9zeW1ib2xzID0gMTsKIAl9CiAKKyAgICBpZiAo bG9hZGVkX2FueV9zeW1ib2xzKQorICAgICAgYnJlYWtwb2ludF9yZV9zZXQg KCk7CisKICAgICBpZiAoZnJvbV90dHkgJiYgcGF0dGVybiAmJiAhIGFueV9t YXRjaGVzKQogICAgICAgcHJpbnRmX3VuZmlsdGVyZWQKIAkoIk5vIGxvYWRl ZCBzaGFyZWQgbGlicmFyaWVzIG1hdGNoIHRoZSBwYXR0ZXJuIGAlcycuXG4i LCBwYXR0ZXJuKTsKSW5kZXg6IHN5bWZpbGUuaAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3N5bWZpbGUuaCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS41MApkaWZmIC11IC1wIC11IC1yMS41 MCBzeW1maWxlLmgKLS0tIHN5bWZpbGUuaAkyMiBNYXkgMjAwOSAyMzo0OTox NCAtMDAwMAkxLjUwCisrKyBzeW1maWxlLmgJOSBKdW4gMjAwOSAwMDo0OToz MSAtMDAwMApAQCAtMjE0LDcgKzIxNCw3IEBAIGV4dGVybiB2b2lkIHN5bXNf ZnJvbV9vYmpmaWxlIChzdHJ1Y3Qgb2IKIAkJCSAgICAgICBzdHJ1Y3Qgc2Vj dGlvbl9hZGRyX2luZm8gKiwKIAkJCSAgICAgICBzdHJ1Y3Qgc2VjdGlvbl9v ZmZzZXRzICosIGludCwgaW50LCBpbnQpOwogCi1leHRlcm4gdm9pZCBuZXdf c3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqLCBpbnQsIGludCk7 CitleHRlcm4gdm9pZCBuZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqLCBpbnQsIGludCwgaW50KTsKIAogZXh0ZXJuIHN0cnVjdCBvYmpm aWxlICpzeW1ib2xfZmlsZV9hZGQgKGNoYXIgKiwgaW50LAogCQkJCQlzdHJ1 Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKiwgaW50LCBpbnQpOwpJbmRleDogc3lt ZmlsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv c3JjL3NyYy9nZGIvc3ltZmlsZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjIzMApkaWZmIC11IC1wIC11IC1yMS4yMzAgc3ltZmlsZS5jCi0tLSBzeW1m aWxlLmMJNCBKdW4gMjAwOSAwMDo1MDoxNiAtMDAwMAkxLjIzMAorKysgc3lt ZmlsZS5jCTkgSnVuIDIwMDkgMDA6NDk6MzEgLTAwMDAKQEAgLTkwNiw3ICs5 MDYsOCBAQCBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpCiAgICBvYmpmaWxlLiAqLwogCiB2b2lkCi1uZXdfc3ltZmlsZV9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IG1haW5saW5lLCBp bnQgdmVyYm8pCituZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgaW50IG1haW5saW5lLCBpbnQgdmVyYm8sCisgICAgICAg ICAgICAgICAgICAgICBpbnQgZmxhZ3MpCiB7CiAKICAgLyogSWYgdGhpcyBp cyB0aGUgbWFpbiBzeW1ib2wgZmlsZSB3ZSBoYXZlIHRvIGNsZWFuIHVwIGFs bCB1c2VycyBvZiB0aGUKQEAgLTkxOSw3ICs5MjAsNyBAQCBuZXdfc3ltZmls ZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAKICAgICAgIGNsZWFy X3N5bXRhYl91c2VycyAoKTsKICAgICB9Ci0gIGVsc2UKKyAgZWxzZSBpZiAo KGZsYWdzICYgT0JKRl9ERUZFUl9CUF9SRVNFVCkgPT0gMCkKICAgICB7CiAg ICAgICBicmVha3BvaW50X3JlX3NldF9vYmpmaWxlIChvYmpmaWxlKTsKICAg ICB9CkBAIC0xMDgxLDcgKzEwODIsNyBAQCBzeW1ib2xfZmlsZV9hZGRfd2l0 aF9hZGRyc19vcl9vZmZzZXRzIChiCiAgIGlmIChvYmpmaWxlLT5zZiA9PSBO VUxMKQogICAgIHJldHVybiBvYmpmaWxlOwkvKiBObyBzeW1ib2xzLiAqLwog Ci0gIG5ld19zeW1maWxlX29iamZpbGUgKG9iamZpbGUsIG1haW5saW5lLCBm cm9tX3R0eSk7CisgIG5ld19zeW1maWxlX29iamZpbGUgKG9iamZpbGUsIG1h aW5saW5lLCBmcm9tX3R0eSwgZmxhZ3MpOwogCiAgIG9ic2VydmVyX25vdGlm eV9uZXdfb2JqZmlsZSAob2JqZmlsZSk7CiAKSW5kZXg6IG9iamZpbGVzLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9vYmpmaWxlcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU5CmRp ZmYgLXUgLXAgLXUgLXIxLjU5IG9iamZpbGVzLmgKLS0tIG9iamZpbGVzLmgJ MTUgSmFuIDIwMDkgMTY6MzU6MjIgLTAwMDAJMS41OQorKysgb2JqZmlsZXMu aAk5IEp1biAyMDA5IDAwOjQ5OjMxIC0wMDAwCkBAIC00MTksNiArNDE5LDkg QEAgc3RydWN0IG9iamZpbGUKIAogI2RlZmluZSBPQkpGX0tFRVBCRkQJKDEg PDwgNCkJLyogRG8gbm90IGRlbGV0ZSBiZmQgKi8KIAorLyogVXNlciByZXF1 ZXN0ZWQgdGhhdCB0aGlzIG9iamZpbGUgbm90IHRyaWdnZXIgYnJlYWtwb2lu dCByZXNldC4gKi8KKworI2RlZmluZSBPQkpGX0RFRkVSX0JQX1JFU0VUICgx IDw8IDUpICAgIC8qIERlZmVyIGJyZWFrcG9pbnQgcmVzZXQuICAqLwogCiAv KiBUaGUgb2JqZWN0IGZpbGUgdGhhdCB0aGUgbWFpbiBzeW1ib2wgdGFibGUg d2FzIGxvYWRlZCBmcm9tIChlLmcuIHRoZQogICAgYXJndW1lbnQgdG8gdGhl ICJzeW1ib2wtZmlsZSIgb3IgImZpbGUiIGNvbW1hbmQpLiAgKi8KSW5kZXg6 IGJzZC11dGhyZWFkLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9zcmMvc3JjL2dkYi9ic2QtdXRocmVhZC5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjI0CmRpZmYgLXUgLXAgLXUgLXIxLjI0IGJzZC11dGhy ZWFkLmMKLS0tIGJzZC11dGhyZWFkLmMJMjEgTWF5IDIwMDkgMTU6NDg6NDEg LTAwMDAJMS4yNAorKysgYnNkLXV0aHJlYWQuYwk5IEp1biAyMDA5IDAwOjQ5 OjMxIC0wMDAwCkBAIC0yNDgsNyArMjQ4LDcgQEAgYnNkX3V0aHJlYWRfc29s aWJfbG9hZGVkIChzdHJ1Y3Qgc29fbGlzdAogICAgIHsKICAgICAgIGlmIChz dHJuY21wIChzby0+c29fb3JpZ2luYWxfbmFtZSwgKm5hbWVzLCBzdHJsZW4g KCpuYW1lcykpID09IDApCiAJewotCSAgc29saWJfcmVhZF9zeW1ib2xzIChz bywgc28tPmZyb21fdHR5KTsKKwkgIHNvbGliX3JlYWRfc3ltYm9scyAoc28s IHNvLT5mcm9tX3R0eSwgMCk7CiAKIAkgIGlmIChic2RfdXRocmVhZF9hY3Rp dmF0ZSAoc28tPm9iamZpbGUpKQogCSAgICB7CkluZGV4OiByczYwMDAtbmF0 LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi9yczYwMDAtbmF0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu OTMKZGlmZiAtdSAtcCAtdSAtcjEuOTMgcnM2MDAwLW5hdC5jCi0tLSByczYw MDAtbmF0LmMJMyBKdW4gMjAwOSAxODo1MDozNiAtMDAwMAkxLjkzCisrKyBy czYwMDAtbmF0LmMJOSBKdW4gMjAwOSAwMDo0OTozMSAtMDAwMApAQCAtNjky LDcgKzY5Miw3IEBAIG9iamZpbGVfc3ltYm9sX2FkZCAodm9pZCAqYXJnKQog ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqID0gKHN0cnVjdCBvYmpmaWxlICopIGFy ZzsKIAogICBzeW1zX2Zyb21fb2JqZmlsZSAob2JqLCBOVUxMLCAwLCAwLCAw LCAwKTsKLSAgbmV3X3N5bWZpbGVfb2JqZmlsZSAob2JqLCAwLCAwKTsKKyAg bmV3X3N5bWZpbGVfb2JqZmlsZSAob2JqLCAwLCAwLCAwKTsKICAgcmV0dXJu IDE7CiB9CiAK --00163646c2e4616f2a046bdfc080--