Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rtPJn-00EWof-O4 for pgsql-bugs@arkaria.postgresql.org; Sun, 07 Apr 2024 10:00:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rtPJm-005LPv-C3 for pgsql-bugs@arkaria.postgresql.org; Sun, 07 Apr 2024 10:00:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rtPJm-005LPm-0I for pgsql-bugs@lists.postgresql.org; Sun, 07 Apr 2024 10:00:06 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rtPJj-001MUg-LB for pgsql-bugs@lists.postgresql.org; Sun, 07 Apr 2024 10:00:05 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2d6ff0422a2so42375231fa.2 for ; Sun, 07 Apr 2024 03:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712484003; x=1713088803; darn=lists.postgresql.org; h=in-reply-to:cc:from:references:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=3NhG23y4EacLjIFAPw/G+DrUnQU6WhaYaUFRIDaXMtA=; b=T/KLwYVEik05UR/Bpx1JfqoDb8uJ8TFsbGfyicC/9oZO486L5gtqXH0ic+P1ZkSzYw ehrSU1zmptVByOI3iJHuMdMwz3gOyZcrh7wWJ+Sa6Jxr0fXrgOUSQDiwqI6iFSed0CMF zPewUjnbzd9nXJpBP9aixXkZRBoweFmSgS6e6cUGuRByD7cOeGG7KFM5t0Yr7ozRJePE 83ccLUuRC3LtX6LHU4Htqib01E1ajjP14YWhhD3RgQW/mmKm1cCpHDIDEKw1Fh5XhZsS LvFHYZtZxE/aBrPih976oxcXRxonoTRQPcMY6hKbgcjACSrEUN18w0f4MFQJVPpxmLOa a7Bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712484003; x=1713088803; h=in-reply-to:cc:from:references:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3NhG23y4EacLjIFAPw/G+DrUnQU6WhaYaUFRIDaXMtA=; b=h4kz1/Y95eLK4ql2CiM7/VhXJK/RJggeV8trfPNzBqDZAglghCoTwgxka7D05MnKev BSvPF8EV3DxqWfox1sLo7GiNmDJr0rQhSPB6J7Iw7HOdGLW5olO28uQJFQaMWTi1cFpM L2UdaMmNaFxtn6FyPOazcDdkB4DtmtNJJ0+tUHtPI6qbjKBhsG/oR8WJ0JpDbFpjFeOW 8hkBbQMlN1nh11+Wpq2VputzwCY+lmfIjOQV+1hZc4W7GHiIvTkrpd9n6uXFMFJwQ2HE IejZj5DQ9KM9QNSPdzlB4SO7dMOLAGOF1/D5v9lZnx66YhZ4LT0oRHiikDyQ2fJu4ZY4 16xg== X-Gm-Message-State: AOJu0Yw8Bw0JTVTftj0sMzRxxseiEbxuPlUQ4PLYtJZFjjKBNomATaNn 0+kSIJrGqjPChn45fE5+fQHlxwXuzfjtZ6oDbLKkGf7u7wHHaZPT X-Google-Smtp-Source: AGHT+IHwDBSkFu0RQ5bYC/kyptBL/lVU0lxV+gvUbJRtMUczKnvXLfpBFIu7QPOxdBTw4fLLHLXbXA== X-Received: by 2002:a2e:b0d6:0:b0:2d6:c59e:37bc with SMTP id g22-20020a2eb0d6000000b002d6c59e37bcmr4285444ljl.11.1712484002399; Sun, 07 Apr 2024 03:00:02 -0700 (PDT) Received: from [1.0.0.7] ([178.155.25.248]) by smtp.gmail.com with ESMTPSA id l20-20020a2e99d4000000b002d69b9a6513sm722617ljj.48.2024.04.07.03.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Apr 2024 03:00:01 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------4s55PLDOUDmRlBKw0YsUSQ3X" Message-ID: <5cbe0b03-d6f3-501d-3849-534568b0e776@gmail.com> Date: Sun, 7 Apr 2024 13:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune() Content-Language: en-US To: Robert Haas References: <17257-1e46de26bec11433@postgresql.org> From: Alexander Lakhin Cc: PostgreSQL mailing lists In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------4s55PLDOUDmRlBKw0YsUSQ3X Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Robert, 05.04.2024 23:20, Robert Haas wrote: > On Fri, Oct 29, 2021 at 9:30 AM Alexander Lakhin wrote: >> I can propose the debugging patch to reproduce the issue that replaces >> the hang with the assert and modifies a pair of crash-causing test >> scripts to simplify the reproducing. (Sorry, I have no time now to prune >> down the scripts further as I have to leave for a week.) > Just FYI, I tried to reproduce this today on v16, using this formula, > with some hacking around to try to get it working on my MacBook, and I > couldn't get it to crash. I've refreshed the script and simplified it a bit not to use Linux specifics. This works for me (on REL_14_0, with the patch applied, CPPFLAGS="-O0" ./configure --enable-debug --enable-cassert ...): echo " autovacuum=off fsync=off " >> "$PGDATA/postgresql.conf" pg_ctl -w -l server.log start export PGDATABASE=regression createdb regression echo " vacuum (verbose, skip_locked, index_cleanup off) pg_catalog.pg_class; select pg_sleep(random()/50); " >/tmp/17257/pseudo-autovacuum.sql export PGDATABASE=regression createdb regression pgbench -n -f /tmp/17257/inherit.sql -C -T 1200 >pgbench-1.log 2>&1 & pgbench -n -f /tmp/17257/vacuum.sql -C -T 1200 >pgbench-2.log 2>&1 & pgbench -n -f /tmp/17257/pseudo-autovacuum.sql -C -c 10 -T 1200 >pgbench-3.log 2>&1 & wait grep -E "(TRAP|terminated)" server.log (Please use the attached inherit.sql, vacuum.sql (excerpts from src/test/sql/{inherit,vacuum}.sql).) With PGDATA placed on tmpfs, this script failed for me after 1m31s, 2m35s, 4m12s: TRAP: FailedAssertion("numretries < 100", File: "vacuumlazy.c", Line: 1726, PID: 951498) Another possible outcome: TRAP: FailedAssertion("relid == targetRelId", File: "relcache.c", Line: 1062, PID: 1257766) And also: 2024-04-07 05:03:21.656 UTC [2905313] LOG:  server process (PID 2984687) was terminated by signal 6: Aborted 2024-04-07 05:03:21.656 UTC [2905313] DETAIL:  Failed process was running: create table matest0 (id serial primary key, name text); With the stack trace: ... #4  0x00007fc30b4007f3 in __GI_abort () at ./stdlib/abort.c:79 #5  0x0000559f50220719 in index_delete_sort_cmp (deltid1=0x559f523a9f40, deltid2=0x7ffd2f9623f8) at heapam.c:7582 #6  0x0000559f50220847 in index_delete_sort (delstate=0x7ffd2f9636f0) at heapam.c:7623 ... (as in [1]) But on dad1539ae I got no failures for 3 runs (the same is on REL_16_STABLE with a slightly modified lazy_scan_prune patch). [1] https://www.postgresql.org/message-id/17255-14c0ac58d0f9b583%40postgresql.org Best regards, Alexander --------------4s55PLDOUDmRlBKw0YsUSQ3X Content-Type: application/sql; name="inherit.sql" Content-Disposition: attachment; filename="inherit.sql" Content-Transfer-Encoding: base64 U0VMRUNUIHBnX3NsZWVwKHJhbmRvbSgpLzEwKTsKCi0tCi0tIFRlc3QgbWVyZ2UtYXBwZW5k IHBsYW5zIGZvciBpbmhlcml0YW5jZSB0cmVlcwotLQoKY3JlYXRlIHRhYmxlIG1hdGVzdDAg KGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0KTsKY3JlYXRlIHRhYmxlIG1hdGVz dDEgKGlkIGludGVnZXIgcHJpbWFyeSBrZXkpIGluaGVyaXRzIChtYXRlc3QwKTsKY3JlYXRl IHRhYmxlIG1hdGVzdDIgKGlkIGludGVnZXIgcHJpbWFyeSBrZXkpIGluaGVyaXRzIChtYXRl c3QwKTsKY3JlYXRlIHRhYmxlIG1hdGVzdDMgKGlkIGludGVnZXIgcHJpbWFyeSBrZXkpIGlu aGVyaXRzIChtYXRlc3QwKTsKCmNyZWF0ZSBpbmRleCBtYXRlc3QwaSBvbiBtYXRlc3QwICgo MS1pZCkpOwpjcmVhdGUgaW5kZXggbWF0ZXN0MWkgb24gbWF0ZXN0MSAoKDEtaWQpKTsKLS0g Y3JlYXRlIGluZGV4IG1hdGVzdDJpIG9uIG1hdGVzdDIgKCgxLWlkKSk7ICAtLSBpbnRlbnRp b25hbGx5IG1pc3NpbmcKY3JlYXRlIGluZGV4IG1hdGVzdDNpIG9uIG1hdGVzdDMgKCgxLWlk KSk7CgppbnNlcnQgaW50byBtYXRlc3QxIChuYW1lKSB2YWx1ZXMgKCdUZXN0IDEnKTsKaW5z ZXJ0IGludG8gbWF0ZXN0MSAobmFtZSkgdmFsdWVzICgnVGVzdCAyJyk7Cmluc2VydCBpbnRv IG1hdGVzdDIgKG5hbWUpIHZhbHVlcyAoJ1Rlc3QgMycpOwppbnNlcnQgaW50byBtYXRlc3Qy IChuYW1lKSB2YWx1ZXMgKCdUZXN0IDQnKTsKaW5zZXJ0IGludG8gbWF0ZXN0MyAobmFtZSkg dmFsdWVzICgnVGVzdCA1Jyk7Cmluc2VydCBpbnRvIG1hdGVzdDMgKG5hbWUpIHZhbHVlcyAo J1Rlc3QgNicpOwoKc2V0IGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7ICAtLSBmb3JjZSB1c2Ug b2Ygc2Vxc2Nhbi9zb3J0LCBzbyBubyBtZXJnZQpleHBsYWluICh2ZXJib3NlLCBjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gbWF0ZXN0MCBvcmRlciBieSAxLWlkOwpzZWxlY3QgKiBmcm9t IG1hdGVzdDAgb3JkZXIgYnkgMS1pZDsKZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBz ZWxlY3QgbWluKDEtaWQpIGZyb20gbWF0ZXN0MDsKc2VsZWN0IG1pbigxLWlkKSBmcm9tIG1h dGVzdDA7CnJlc2V0IGVuYWJsZV9pbmRleHNjYW47CgpzZXQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7ICAtLSBwbGFuIHdpdGggZmV3ZXN0IHNlcXNjYW5zIHNob3VsZCBiZSBtZXJnZQpzZXQg ZW5hYmxlX3BhcmFsbGVsX2FwcGVuZCA9IG9mZjsgLS0gRG9uJ3QgbGV0IHBhcmFsbGVsLWFw cGVuZCBpbnRlcmZlcmUKZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIG1hdGVzdDAgb3JkZXIgYnkgMS1pZDsKc2VsZWN0ICogZnJvbSBtYXRlc3QwIG9yZGVy IGJ5IDEtaWQ7CmV4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgc2VsZWN0IG1pbigxLWlk KSBmcm9tIG1hdGVzdDA7CnNlbGVjdCBtaW4oMS1pZCkgZnJvbSBtYXRlc3QwOwpyZXNldCBl bmFibGVfc2Vxc2NhbjsKcmVzZXQgZW5hYmxlX3BhcmFsbGVsX2FwcGVuZDsKCmRyb3AgdGFi bGUgbWF0ZXN0MCBjYXNjYWRlOwoKLS0KLS0gQ2hlY2sgdGhhdCB1c2Ugb2YgYW4gaW5kZXgg d2l0aCBhbiBleHRyYW5lb3VzIGNvbHVtbiBkb2Vzbid0IHByb2R1Y2UKLS0gYSBwbGFuIHdp dGggZXh0cmFuZW91cyBzb3J0aW5nCi0tCgpjcmVhdGUgdGFibGUgbWF0ZXN0MCAoYSBpbnQs IGIgaW50LCBjIGludCwgZCBpbnQpOwpjcmVhdGUgdGFibGUgbWF0ZXN0MSAoKSBpbmhlcml0 cyhtYXRlc3QwKTsKY3JlYXRlIGluZGV4IG1hdGVzdDBpIG9uIG1hdGVzdDAgKGIsIGMpOwpj cmVhdGUgaW5kZXggbWF0ZXN0MWkgb24gbWF0ZXN0MSAoYiwgYyk7CgpzZXQgZW5hYmxlX25l c3Rsb29wID0gb2ZmOyAgLS0gd2Ugd2FudCBhIHBsYW4gd2l0aCB0d28gTWVyZ2VBcHBlbmRz CgpleHBsYWluIChjb3N0cyBvZmYpCnNlbGVjdCB0MS4qIGZyb20gbWF0ZXN0MCB0MSwgbWF0 ZXN0MCB0Mgp3aGVyZSB0MS5iID0gdDIuYiBhbmQgdDIuYyA9IHQyLmQKb3JkZXIgYnkgdDEu YiBsaW1pdCAxMDsKCnJlc2V0IGVuYWJsZV9uZXN0bG9vcDsKCmRyb3AgdGFibGUgbWF0ZXN0 MCBjYXNjYWRlOwoKLS0KLS0gVGVzdCBtZXJnZS1hcHBlbmQgZm9yIFVOSU9OIEFMTCBhcHBl bmQgcmVsYXRpb25zCi0tCgpzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CnNldCBlbmFibGVf aW5kZXhzY2FuID0gb247CnNldCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKCgotLSBleGVy Y2lzZSByZXNjYW4gY29kZSBwYXRoIHZpYSBhIHJlcGVhdGVkbHktZXZhbHVhdGVkIHN1YnF1 ZXJ5CmV4cGxhaW4gKGNvc3RzIG9mZikKU0VMRUNUCiAgICBBUlJBWShTRUxFQ1QgZi5pIEZS T00gKAogICAgICAgIChTRUxFQ1QgZCArIGcuaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0LCAz MCwgMykgZCBPUkRFUiBCWSAxKQogICAgICAgIFVOSU9OIEFMTAogICAgICAgIChTRUxFQ1Qg ZCArIGcuaSBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCAzMCwgNSkgZCBPUkRFUiBCWSAxKQog ICAgKSBmKGkpCiAgICBPUkRFUiBCWSBmLmkgTElNSVQgMTApCkZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDMpIGcoaSk7CgpTRUxFQ1QKICAgIEFSUkFZKFNFTEVDVCBmLmkgRlJPTSAoCiAg ICAgICAgKFNFTEVDVCBkICsgZy5pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQsIDMwLCAzKSBk IE9SREVSIEJZIDEpCiAgICAgICAgVU5JT04gQUxMCiAgICAgICAgKFNFTEVDVCBkICsgZy5p IEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDMwLCA1KSBkIE9SREVSIEJZIDEpCiAgICApIGYo aSkKICAgIE9SREVSIEJZIGYuaSBMSU1JVCAxMCkKRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MykgZyhpKTsKCnJlc2V0IGVuYWJsZV9zZXFzY2FuOwpyZXNldCBlbmFibGVfaW5kZXhzY2Fu OwpyZXNldCBlbmFibGVfYml0bWFwc2NhbjsKCi0tCi0tIENoZWNrIGhhbmRsaW5nIG9mIGEg Y29uc3RhbnQtbnVsbCBDSEVDSyBjb25zdHJhaW50Ci0tCmNyZWF0ZSB0YWJsZSBjbnVsbHBh cmVudCAoZjEgaW50KTsKY3JlYXRlIHRhYmxlIGNudWxsY2hpbGQgKGNoZWNrIChmMSA9IDEg b3IgZjEgPSBudWxsKSkgaW5oZXJpdHMoY251bGxwYXJlbnQpOwppbnNlcnQgaW50byBjbnVs bGNoaWxkIHZhbHVlcygxKTsKaW5zZXJ0IGludG8gY251bGxjaGlsZCB2YWx1ZXMoMik7Cmlu c2VydCBpbnRvIGNudWxsY2hpbGQgdmFsdWVzKG51bGwpOwpzZWxlY3QgKiBmcm9tIGNudWxs cGFyZW50OwpzZWxlY3QgKiBmcm9tIGNudWxscGFyZW50IHdoZXJlIGYxID0gMjsKZHJvcCB0 YWJsZSBjbnVsbHBhcmVudCBjYXNjYWRlOwoKLS0KLS0gQ2hlY2sgdXNlIG9mIHRlbXBvcmFy eSB0YWJsZXMgd2l0aCBpbmhlcml0YW5jZSB0cmVlcwotLQpjcmVhdGUgdGFibGUgaW5oX3Bl cm1fcGFyZW50IChhMSBpbnQpOwpjcmVhdGUgdGVtcCB0YWJsZSBpbmhfdGVtcF9wYXJlbnQg KGExIGludCk7CmNyZWF0ZSB0ZW1wIHRhYmxlIGluaF90ZW1wX2NoaWxkICgpIGluaGVyaXRz IChpbmhfcGVybV9wYXJlbnQpOyAtLSBvawpjcmVhdGUgdGVtcCB0YWJsZSBpbmhfdGVtcF9j aGlsZF8yICgpIGluaGVyaXRzIChpbmhfdGVtcF9wYXJlbnQpOyAtLSBvawppbnNlcnQgaW50 byBpbmhfcGVybV9wYXJlbnQgdmFsdWVzICgxKTsKaW5zZXJ0IGludG8gaW5oX3RlbXBfcGFy ZW50IHZhbHVlcyAoMik7Cmluc2VydCBpbnRvIGluaF90ZW1wX2NoaWxkIHZhbHVlcyAoMyk7 Cmluc2VydCBpbnRvIGluaF90ZW1wX2NoaWxkXzIgdmFsdWVzICg0KTsKc2VsZWN0IHRhYmxl b2lkOjpyZWdjbGFzcywgYTEgZnJvbSBpbmhfcGVybV9wYXJlbnQ7CnNlbGVjdCB0YWJsZW9p ZDo6cmVnY2xhc3MsIGExIGZyb20gaW5oX3RlbXBfcGFyZW50Owpkcm9wIHRhYmxlIGluaF9w ZXJtX3BhcmVudCBjYXNjYWRlOwpkcm9wIHRhYmxlIGluaF90ZW1wX3BhcmVudCBjYXNjYWRl OwoKLS0KLS0gQ2hlY2sgdGhhdCBjb25zdHJhaW50IGV4Y2x1c2lvbiB3b3JrcyBjb3JyZWN0 bHkgd2l0aCBwYXJ0aXRpb25zIHVzaW5nCi0tIGltcGxpY2l0IGNvbnN0cmFpbnRzIGdlbmVy YXRlZCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQgaW5mb3JtYXRpb24uCi0tCmNyZWF0ZSB0 YWJsZSBsaXN0X3BhcnRlZCAoCglhCXZhcmNoYXIKKSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7 CmNyZWF0ZSB0YWJsZSBwYXJ0X2FiX2NkIHBhcnRpdGlvbiBvZiBsaXN0X3BhcnRlZCBmb3Ig dmFsdWVzIGluICgnYWInLCAnY2QnKTsKY3JlYXRlIHRhYmxlIHBhcnRfZWZfZ2ggcGFydGl0 aW9uIG9mIGxpc3RfcGFydGVkIGZvciB2YWx1ZXMgaW4gKCdlZicsICdnaCcpOwpjcmVhdGUg dGFibGUgcGFydF9udWxsX3h5IHBhcnRpdGlvbiBvZiBsaXN0X3BhcnRlZCBmb3IgdmFsdWVz IGluIChudWxsLCAneHknKTsKCmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBs aXN0X3BhcnRlZDsKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxpc3RfcGFy dGVkIHdoZXJlIGEgaXMgbnVsbDsKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IGxpc3RfcGFydGVkIHdoZXJlIGEgaXMgbm90IG51bGw7CmV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBsaXN0X3BhcnRlZCB3aGVyZSBhIGluICgnYWInLCAnY2QnLCAnZWYn KTsKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxpc3RfcGFydGVkIHdoZXJl IGEgPSAnYWInIG9yIGEgaW4gKG51bGwsICdjZCcpOwpleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gbGlzdF9wYXJ0ZWQgd2hlcmUgYSA9ICdhYic7CgpjcmVhdGUgdGFibGUg cmFuZ2VfbGlzdF9wYXJ0ZWQgKAoJYQlpbnQsCgliCWNoYXIoMikKKSBwYXJ0aXRpb24gYnkg cmFuZ2UgKGEpOwpjcmVhdGUgdGFibGUgcGFydF8xXzEwIHBhcnRpdGlvbiBvZiByYW5nZV9s aXN0X3BhcnRlZCBmb3IgdmFsdWVzIGZyb20gKDEpIHRvICgxMCkgcGFydGl0aW9uIGJ5IGxp c3QgKGIpOwpjcmVhdGUgdGFibGUgcGFydF8xXzEwX2FiIHBhcnRpdGlvbiBvZiBwYXJ0XzFf MTAgZm9yIHZhbHVlcyBpbiAoJ2FiJyk7CmNyZWF0ZSB0YWJsZSBwYXJ0XzFfMTBfY2QgcGFy dGl0aW9uIG9mIHBhcnRfMV8xMCBmb3IgdmFsdWVzIGluICgnY2QnKTsKY3JlYXRlIHRhYmxl IHBhcnRfMTBfMjAgcGFydGl0aW9uIG9mIHJhbmdlX2xpc3RfcGFydGVkIGZvciB2YWx1ZXMg ZnJvbSAoMTApIHRvICgyMCkgcGFydGl0aW9uIGJ5IGxpc3QgKGIpOwpjcmVhdGUgdGFibGUg cGFydF8xMF8yMF9hYiBwYXJ0aXRpb24gb2YgcGFydF8xMF8yMCBmb3IgdmFsdWVzIGluICgn YWInKTsKY3JlYXRlIHRhYmxlIHBhcnRfMTBfMjBfY2QgcGFydGl0aW9uIG9mIHBhcnRfMTBf MjAgZm9yIHZhbHVlcyBpbiAoJ2NkJyk7CmNyZWF0ZSB0YWJsZSBwYXJ0XzIxXzMwIHBhcnRp dGlvbiBvZiByYW5nZV9saXN0X3BhcnRlZCBmb3IgdmFsdWVzIGZyb20gKDIxKSB0byAoMzAp IHBhcnRpdGlvbiBieSBsaXN0IChiKTsKY3JlYXRlIHRhYmxlIHBhcnRfMjFfMzBfYWIgcGFy dGl0aW9uIG9mIHBhcnRfMjFfMzAgZm9yIHZhbHVlcyBpbiAoJ2FiJyk7CmNyZWF0ZSB0YWJs ZSBwYXJ0XzIxXzMwX2NkIHBhcnRpdGlvbiBvZiBwYXJ0XzIxXzMwIGZvciB2YWx1ZXMgaW4g KCdjZCcpOwpjcmVhdGUgdGFibGUgcGFydF80MF9pbmYgcGFydGl0aW9uIG9mIHJhbmdlX2xp c3RfcGFydGVkIGZvciB2YWx1ZXMgZnJvbSAoNDApIHRvIChtYXh2YWx1ZSkgcGFydGl0aW9u IGJ5IGxpc3QgKGIpOwpjcmVhdGUgdGFibGUgcGFydF80MF9pbmZfYWIgcGFydGl0aW9uIG9m IHBhcnRfNDBfaW5mIGZvciB2YWx1ZXMgaW4gKCdhYicpOwpjcmVhdGUgdGFibGUgcGFydF80 MF9pbmZfY2QgcGFydGl0aW9uIG9mIHBhcnRfNDBfaW5mIGZvciB2YWx1ZXMgaW4gKCdjZCcp OwpjcmVhdGUgdGFibGUgcGFydF80MF9pbmZfbnVsbCBwYXJ0aXRpb24gb2YgcGFydF80MF9p bmYgZm9yIHZhbHVlcyBpbiAobnVsbCk7CgpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmFuZ2VfbGlzdF9wYXJ0ZWQ7CmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSByYW5nZV9saXN0X3BhcnRlZCB3aGVyZSBhID0gNTsKZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJhbmdlX2xpc3RfcGFydGVkIHdoZXJlIGIgPSAnYWInOwpleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmFuZ2VfbGlzdF9wYXJ0ZWQgd2hlcmUg YSBiZXR3ZWVuIDMgYW5kIDIzIGFuZCBiIGluICgnYWInKTsKCi8qIFNob3VsZCBzZWxlY3Qg bm8gcm93cyBiZWNhdXNlIHJhbmdlIHBhcnRpdGlvbiBrZXkgY2Fubm90IGJlIG51bGwgKi8K ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJhbmdlX2xpc3RfcGFydGVkIHdo ZXJlIGEgaXMgbnVsbDsKCi8qIFNob3VsZCBvbmx5IHNlbGVjdCByb3dzIGZyb20gdGhlIG51 bGwtYWNjZXB0aW5nIHBhcnRpdGlvbiAqLwpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmFuZ2VfbGlzdF9wYXJ0ZWQgd2hlcmUgYiBpcyBudWxsOwpleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmFuZ2VfbGlzdF9wYXJ0ZWQgd2hlcmUgYSBpcyBub3Qg bnVsbCBhbmQgYSA8IDY3OwpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmFu Z2VfbGlzdF9wYXJ0ZWQgd2hlcmUgYSA+PSAzMDsKCmRyb3AgdGFibGUgbGlzdF9wYXJ0ZWQ7 CmRyb3AgdGFibGUgcmFuZ2VfbGlzdF9wYXJ0ZWQ7CgotLSBjaGVjayB0aGF0IGNvbnN0cmFp bnQgZXhjbHVzaW9uIGlzIGFibGUgdG8gY29wZSB3aXRoIHRoZSBwYXJ0aXRpb24KLS0gY29u c3RyYWludCBlbWl0dGVkIGZvciBtdWx0aS1jb2x1bW4gcmFuZ2UgcGFydGl0aW9uZWQgdGFi bGVzCmNyZWF0ZSB0YWJsZSBtY3JwYXJ0ZWQgKGEgaW50LCBiIGludCwgYyBpbnQpIHBhcnRp dGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKY3JlYXRlIHRhYmxlIG1jcnBhcnRlZF9k ZWYgcGFydGl0aW9uIG9mIG1jcnBhcnRlZCBkZWZhdWx0OwpjcmVhdGUgdGFibGUgbWNycGFy dGVkMCBwYXJ0aXRpb24gb2YgbWNycGFydGVkIGZvciB2YWx1ZXMgZnJvbSAobWludmFsdWUs IG1pbnZhbHVlLCBtaW52YWx1ZSkgdG8gKDEsIDEsIDEpOwpjcmVhdGUgdGFibGUgbWNycGFy dGVkMSBwYXJ0aXRpb24gb2YgbWNycGFydGVkIGZvciB2YWx1ZXMgZnJvbSAoMSwgMSwgMSkg dG8gKDEwLCA1LCAxMCk7CmNyZWF0ZSB0YWJsZSBtY3JwYXJ0ZWQyIHBhcnRpdGlvbiBvZiBt Y3JwYXJ0ZWQgZm9yIHZhbHVlcyBmcm9tICgxMCwgNSwgMTApIHRvICgxMCwgMTAsIDEwKTsK Y3JlYXRlIHRhYmxlIG1jcnBhcnRlZDMgcGFydGl0aW9uIG9mIG1jcnBhcnRlZCBmb3IgdmFs dWVzIGZyb20gKDExLCAxLCAxKSB0byAoMjAsIDEwLCAxMCk7CmNyZWF0ZSB0YWJsZSBtY3Jw YXJ0ZWQ0IHBhcnRpdGlvbiBvZiBtY3JwYXJ0ZWQgZm9yIHZhbHVlcyBmcm9tICgyMCwgMTAs IDEwKSB0byAoMjAsIDIwLCAyMCk7CmNyZWF0ZSB0YWJsZSBtY3JwYXJ0ZWQ1IHBhcnRpdGlv biBvZiBtY3JwYXJ0ZWQgZm9yIHZhbHVlcyBmcm9tICgyMCwgMjAsIDIwKSB0byAobWF4dmFs dWUsIG1heHZhbHVlLCBtYXh2YWx1ZSk7CmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBtY3JwYXJ0ZWQgd2hlcmUgYSA9IDA7CS0tIHNjYW5zIG1jcnBhcnRlZDAsIG1jcnBh cnRlZF9kZWYKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jcnBhcnRlZCB3 aGVyZSBhID0gMTAgYW5kIGFicyhiKSA8IDU7CS0tIHNjYW5zIG1jcnBhcnRlZDEsIG1jcnBh cnRlZF9kZWYKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jcnBhcnRlZCB3 aGVyZSBhID0gMTAgYW5kIGFicyhiKSA9IDU7CS0tIHNjYW5zIG1jcnBhcnRlZDEsIG1jcnBh cnRlZDIsIG1jcnBhcnRlZF9kZWYKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IG1jcnBhcnRlZCB3aGVyZSBhYnMoYikgPSA1OwktLSBzY2FucyBhbGwgcGFydGl0aW9ucwpl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbWNycGFydGVkIHdoZXJlIGEgPiAt MTsJLS0gc2NhbnMgYWxsIHBhcnRpdGlvbnMKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIG1jcnBhcnRlZCB3aGVyZSBhID0gMjAgYW5kIGFicyhiKSA9IDEwIGFuZCBjID4g MTA7CS0tIHNjYW5zIG1jcnBhcnRlZDQKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIG1jcnBhcnRlZCB3aGVyZSBhID0gMjAgYW5kIGMgPiAyMDsgLS0gc2NhbnMgbWNycGFy dGVkMywgbWNycGFydGU0LCBtY3JwYXJ0ZTUsIG1jcnBhcnRlZF9kZWYKCi0tIGNoZWNrIHRo YXQgcGFydGl0aW9uZWQgdGFibGUgQXBwZW5kcyBjb3BlIHdpdGggYmVpbmcgcmVmZXJlbmNl ZCBpbgotLSBzdWJwbGFucwpjcmVhdGUgdGFibGUgcGFydGVkX21pbm1heCAoYSBpbnQsIGIg dmFyY2hhcigxNikpIHBhcnRpdGlvbiBieSByYW5nZSAoYSk7CmNyZWF0ZSB0YWJsZSBwYXJ0 ZWRfbWlubWF4MSBwYXJ0aXRpb24gb2YgcGFydGVkX21pbm1heCBmb3IgdmFsdWVzIGZyb20g KDEpIHRvICgxMCk7CmNyZWF0ZSBpbmRleCBwYXJ0ZWRfbWlubWF4MWkgb24gcGFydGVkX21p bm1heDEgKGEsIGIpOwppbnNlcnQgaW50byBwYXJ0ZWRfbWlubWF4IHZhbHVlcyAoMSwnMTIz NDUnKTsKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgbWluKGEpLCBtYXgoYSkgZnJvbSBw YXJ0ZWRfbWlubWF4IHdoZXJlIGIgPSAnMTIzNDUnOwpzZWxlY3QgbWluKGEpLCBtYXgoYSkg ZnJvbSBwYXJ0ZWRfbWlubWF4IHdoZXJlIGIgPSAnMTIzNDUnOwpkcm9wIHRhYmxlIHBhcnRl ZF9taW5tYXg7CgotLSBUZXN0IGNvZGUgdGhhdCB1c2VzIEFwcGVuZCBub2RlcyBpbiBwbGFj ZSBvZiBNZXJnZUFwcGVuZCB3aGVuIHRoZQotLSBwYXJ0aXRpb24gb3JkZXJpbmcgbWF0Y2hl cyB0aGUgZGVzaXJlZCBvcmRlcmluZy4KCmNyZWF0ZSBpbmRleCBtY3JwYXJ0ZWRfYV9hYnNf Y19pZHggb24gbWNycGFydGVkIChhLCBhYnMoYiksIGMpOwoKLS0gTWVyZ2VBcHBlbmQgbXVz dCBiZSB1c2VkIHdoZW4gYSBkZWZhdWx0IHBhcnRpdGlvbiBleGlzdHMKZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jcnBhcnRlZCBvcmRlciBieSBhLCBhYnMoYiksIGM7 Cgpkcm9wIHRhYmxlIG1jcnBhcnRlZF9kZWY7CgotLSBBcHBlbmQgaXMgdXNlZCBmb3IgYSBS QU5HRSBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIG5vIGRlZmF1bHQKLS0gYW5kIG5vIHN1YnBh cnRpdGlvbnMKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jcnBhcnRlZCBv cmRlciBieSBhLCBhYnMoYiksIGM7CgotLSBBcHBlbmQgaXMgdXNlZCB3aXRoIHN1YnBhdGhz IGluIHJldmVyc2Ugb3JkZXIgd2l0aCBiYWNrd2FyZHMgaW5kZXggc2NhbnMKZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jcnBhcnRlZCBvcmRlciBieSBhIGRlc2MsIGFi cyhiKSBkZXNjLCBjIGRlc2M7CgotLSBjaGVjayB0aGF0IEFwcGVuZCBwbGFuIGlzIHVzZWQg Y29udGFpbmluZyBhIE1lcmdlQXBwZW5kIGZvciBzdWItcGFydGl0aW9ucwotLSB0aGF0IGFy ZSB1bm9yZGVyZWQuCmRyb3AgdGFibGUgbWNycGFydGVkNTsKY3JlYXRlIHRhYmxlIG1jcnBh cnRlZDUgcGFydGl0aW9uIG9mIG1jcnBhcnRlZCBmb3IgdmFsdWVzIGZyb20gKDIwLCAyMCwg MjApIHRvIChtYXh2YWx1ZSwgbWF4dmFsdWUsIG1heHZhbHVlKSBwYXJ0aXRpb24gYnkgbGlz dCAoYSk7CmNyZWF0ZSB0YWJsZSBtY3JwYXJ0ZWQ1YSBwYXJ0aXRpb24gb2YgbWNycGFydGVk NSBmb3IgdmFsdWVzIGluKDIwKTsKY3JlYXRlIHRhYmxlIG1jcnBhcnRlZDVfZGVmIHBhcnRp dGlvbiBvZiBtY3JwYXJ0ZWQ1IGRlZmF1bHQ7CgpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gbWNycGFydGVkIG9yZGVyIGJ5IGEsIGFicyhiKSwgYzsKCmRyb3AgdGFibGUg bWNycGFydGVkNV9kZWY7CgotLSBjaGVjayB0aGF0IGFuIEFwcGVuZCBwbGFuIGlzIHVzZWQg YW5kIHRoZSBzdWItcGFydGl0aW9ucyBhcmUgZmxhdHRlbmVkCi0tIGludG8gdGhlIG1haW4g QXBwZW5kIHdoZW4gdGhlIHN1Yi1wYXJ0aXRpb24gaXMgdW5vcmRlcmVkIGJ1dCBjb250YWlu cwotLSBqdXN0IGEgc2luZ2xlIHN1Yi1wYXJ0aXRpb24uCmV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0IGEsIGFicyhiKSBmcm9tIG1jcnBhcnRlZCBvcmRlciBieSBhLCBhYnMoYiksIGM7 CgotLSBjaGVjayB0aGF0IEFwcGVuZCBpcyB1c2VkIHdoZW4gdGhlIHN1Yi1wYXJ0aXRpb25l ZCB0YWJsZXMgYXJlIHBydW5lZAotLSBkdXJpbmcgcGxhbm5pbmcuCmV4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBtY3JwYXJ0ZWQgd2hlcmUgYSA8IDIwIG9yZGVyIGJ5IGEs IGFicyhiKSwgYzsKCmNyZWF0ZSB0YWJsZSBtY2xwYXJ0ZWQgKGEgaW50KSBwYXJ0aXRpb24g YnkgbGlzdChhKTsKY3JlYXRlIHRhYmxlIG1jbHBhcnRlZDEgcGFydGl0aW9uIG9mIG1jbHBh cnRlZCBmb3IgdmFsdWVzIGluKDEpOwpjcmVhdGUgdGFibGUgbWNscGFydGVkMiBwYXJ0aXRp b24gb2YgbWNscGFydGVkIGZvciB2YWx1ZXMgaW4oMik7CmNyZWF0ZSBpbmRleCBvbiBtY2xw YXJ0ZWQgKGEpOwoKLS0gRW5zdXJlIGFuIEFwcGVuZCBpcyB1c2VkIGZvciBhIGxpc3QgcGFy dGl0aW9uIHdpdGggYW4gb3JkZXIgYnkuCmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBtY2xwYXJ0ZWQgb3JkZXIgYnkgYTsKCi0tIEVuc3VyZSBhIE1lcmdlQXBwZW5kIGlz IHVzZWQgd2hlbiBhIHBhcnRpdGlvbiBleGlzdHMgd2l0aCBpbnRlcmxlYXZlZAotLSBkYXR1 bXMgaW4gdGhlIHBhcnRpdGlvbiBib3VuZC4KY3JlYXRlIHRhYmxlIG1jbHBhcnRlZDNfNSBw YXJ0aXRpb24gb2YgbWNscGFydGVkIGZvciB2YWx1ZXMgaW4oMyw1KTsKY3JlYXRlIHRhYmxl IG1jbHBhcnRlZDQgcGFydGl0aW9uIG9mIG1jbHBhcnRlZCBmb3IgdmFsdWVzIGluKDQpOwoK ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jbHBhcnRlZCBvcmRlciBieSBh OwoKZHJvcCB0YWJsZSBtY2xwYXJ0ZWQ7CgotLSBFbnN1cmUgc3VicGxhbnMgd2hpY2ggZG9u J3QgaGF2ZSBhIHBhdGggd2l0aCB0aGUgY29ycmVjdCBwYXRoa2V5cyBnZXQKLS0gc29ydGVk IGNvcnJlY3RseS4KZHJvcCBpbmRleCBtY3JwYXJ0ZWRfYV9hYnNfY19pZHg7CmNyZWF0ZSBp bmRleCBvbiBtY3JwYXJ0ZWQxIChhLCBhYnMoYiksIGMpOwpjcmVhdGUgaW5kZXggb24gbWNy cGFydGVkMiAoYSwgYWJzKGIpLCBjKTsKY3JlYXRlIGluZGV4IG9uIG1jcnBhcnRlZDMgKGEs IGFicyhiKSwgYyk7CmNyZWF0ZSBpbmRleCBvbiBtY3JwYXJ0ZWQ0IChhLCBhYnMoYiksIGMp OwoKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIG1jcnBhcnRlZCB3aGVyZSBh IDwgMjAgb3JkZXIgYnkgYSwgYWJzKGIpLCBjIGxpbWl0IDE7CgpzZXQgZW5hYmxlX2JpdG1h cHNjYW4gPSAwOwotLSBFbnN1cmUgQXBwZW5kIG5vZGUgY2FuIGJlIHVzZWQgd2hlbiB0aGUg cGFydGl0aW9uIGlzIG9yZGVyZWQgYnkgc29tZQotLSBwYXRoa2V5cyB3aGljaCB3ZXJlIGRl ZW1lZCByZWR1bmRhbnQuCmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBtY3Jw YXJ0ZWQgd2hlcmUgYSA9IDEwIG9yZGVyIGJ5IGEsIGFicyhiKSwgYzsKcmVzZXQgZW5hYmxl X2JpdG1hcHNjYW47Cgpkcm9wIHRhYmxlIG1jcnBhcnRlZDsKCi0tIEVuc3VyZSBMSVNUIHBh cnRpdGlvbnMgYWxsb3cgYW4gQXBwZW5kIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBhIE1lcmdl QXBwZW5kCmNyZWF0ZSB0YWJsZSBib29sX2xwIChiIGJvb2wpIHBhcnRpdGlvbiBieSBsaXN0 KGIpOwpjcmVhdGUgdGFibGUgYm9vbF9scF90cnVlIHBhcnRpdGlvbiBvZiBib29sX2xwIGZv ciB2YWx1ZXMgaW4odHJ1ZSk7CmNyZWF0ZSB0YWJsZSBib29sX2xwX2ZhbHNlIHBhcnRpdGlv biBvZiBib29sX2xwIGZvciB2YWx1ZXMgaW4oZmFsc2UpOwpjcmVhdGUgaW5kZXggb24gYm9v bF9scCAoYik7CgpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gYm9vbF9scCBv cmRlciBieSBiOwoKZHJvcCB0YWJsZSBib29sX2xwOwoKLS0gRW5zdXJlIGNvbnN0IGJvb2wg cXVhbHMgY2FuIGJlIHByb3Blcmx5IGRldGVjdGVkIGFzIHJlZHVuZGFudApjcmVhdGUgdGFi bGUgYm9vbF9ycCAoYiBib29sLCBhIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlKGIsYSk7CmNy ZWF0ZSB0YWJsZSBib29sX3JwX2ZhbHNlXzFrIHBhcnRpdGlvbiBvZiBib29sX3JwIGZvciB2 YWx1ZXMgZnJvbSAoZmFsc2UsMCkgdG8gKGZhbHNlLDEwMDApOwpjcmVhdGUgdGFibGUgYm9v bF9ycF90cnVlXzFrIHBhcnRpdGlvbiBvZiBib29sX3JwIGZvciB2YWx1ZXMgZnJvbSAodHJ1 ZSwwKSB0byAodHJ1ZSwxMDAwKTsKY3JlYXRlIHRhYmxlIGJvb2xfcnBfZmFsc2VfMmsgcGFy dGl0aW9uIG9mIGJvb2xfcnAgZm9yIHZhbHVlcyBmcm9tIChmYWxzZSwxMDAwKSB0byAoZmFs c2UsMjAwMCk7CmNyZWF0ZSB0YWJsZSBib29sX3JwX3RydWVfMmsgcGFydGl0aW9uIG9mIGJv b2xfcnAgZm9yIHZhbHVlcyBmcm9tICh0cnVlLDEwMDApIHRvICh0cnVlLDIwMDApOwpjcmVh dGUgaW5kZXggb24gYm9vbF9ycCAoYixhKTsKZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIGJvb2xfcnAgd2hlcmUgYiA9IHRydWUgb3JkZXIgYnkgYixhOwpleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gYm9vbF9ycCB3aGVyZSBiID0gZmFsc2Ugb3JkZXIg YnkgYixhOwpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gYm9vbF9ycCB3aGVy ZSBiID0gdHJ1ZSBvcmRlciBieSBhOwpleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gYm9vbF9ycCB3aGVyZSBiID0gZmFsc2Ugb3JkZXIgYnkgYTsKCmRyb3AgdGFibGUgYm9v bF9ycDsKCi0tIEVuc3VyZSBhbiBBcHBlbmQgc2NhbiBpcyBjaG9zZW4gd2hlbiB0aGUgcGFy dGl0aW9uIG9yZGVyIGlzIGEgc3Vic2V0IG9mCi0tIHRoZSByZXF1aXJlZCBvcmRlci4KY3Jl YXRlIHRhYmxlIHJhbmdlX3BhcnRlZCAoYSBpbnQsIGIgaW50LCBjIGludCkgcGFydGl0aW9u IGJ5IHJhbmdlKGEsIGIpOwpjcmVhdGUgdGFibGUgcmFuZ2VfcGFydGVkMSBwYXJ0aXRpb24g b2YgcmFuZ2VfcGFydGVkIGZvciB2YWx1ZXMgZnJvbSAoMCwwKSB0byAoMTAsMTApOwpjcmVh dGUgdGFibGUgcmFuZ2VfcGFydGVkMiBwYXJ0aXRpb24gb2YgcmFuZ2VfcGFydGVkIGZvciB2 YWx1ZXMgZnJvbSAoMTAsMTApIHRvICgyMCwyMCk7CmNyZWF0ZSBpbmRleCBvbiByYW5nZV9w YXJ0ZWQgKGEsYixjKTsKCmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSByYW5n ZV9wYXJ0ZWQgb3JkZXIgYnkgYSxiLGM7CmV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSByYW5nZV9wYXJ0ZWQgb3JkZXIgYnkgYSBkZXNjLGIgZGVzYyxjIGRlc2M7Cgpkcm9w IHRhYmxlIHJhbmdlX3BhcnRlZDsKCi0tIENoZWNrIHRoYXQgd2UgYWxsb3cgYWNjZXNzIHRv IGEgY2hpbGQgdGFibGUncyBzdGF0aXN0aWNzIHdoZW4gdGhlIHVzZXIKLS0gaGFzIHBlcm1p c3Npb25zIG9ubHkgZm9yIHRoZSBwYXJlbnQgdGFibGUuCmNyZWF0ZSB0YWJsZSBwZXJtdGVz dF9wYXJlbnQgKGEgaW50LCBiIHRleHQsIGMgdGV4dCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEp OwpjcmVhdGUgdGFibGUgcGVybXRlc3RfY2hpbGQgKGIgdGV4dCwgYyB0ZXh0LCBhIGludCkg cGFydGl0aW9uIGJ5IGxpc3QgKGIpOwpjcmVhdGUgdGFibGUgcGVybXRlc3RfZ3JhbmRjaGls ZCAoYyB0ZXh0LCBiIHRleHQsIGEgaW50KTsKYWx0ZXIgdGFibGUgcGVybXRlc3RfY2hpbGQg YXR0YWNoIHBhcnRpdGlvbiBwZXJtdGVzdF9ncmFuZGNoaWxkIGZvciB2YWx1ZXMgaW4gKCdh Jyk7CmFsdGVyIHRhYmxlIHBlcm10ZXN0X3BhcmVudCBhdHRhY2ggcGFydGl0aW9uIHBlcm10 ZXN0X2NoaWxkIGZvciB2YWx1ZXMgaW4gKDEpOwpjcmVhdGUgaW5kZXggb24gcGVybXRlc3Rf cGFyZW50IChsZWZ0KGMsIDMpKTsKaW5zZXJ0IGludG8gcGVybXRlc3RfcGFyZW50CiAgc2Vs ZWN0IDEsICdhJywgbGVmdChtZDUoaTo6dGV4dCksIDUpIGZyb20gZ2VuZXJhdGVfc2VyaWVz KDAsIDEwMCkgaTsKYW5hbHl6ZSBwZXJtdGVzdF9wYXJlbnQ7CmNyZWF0ZSByb2xlIHJlZ3Jl c3Nfbm9fY2hpbGRfYWNjZXNzOwpyZXZva2UgYWxsIG9uIHBlcm10ZXN0X2dyYW5kY2hpbGQg ZnJvbSByZWdyZXNzX25vX2NoaWxkX2FjY2VzczsKZ3JhbnQgc2VsZWN0IG9uIHBlcm10ZXN0 X3BhcmVudCB0byByZWdyZXNzX25vX2NoaWxkX2FjY2VzczsKc2V0IHNlc3Npb24gYXV0aG9y aXphdGlvbiByZWdyZXNzX25vX2NoaWxkX2FjY2VzczsKLS0gd2l0aG91dCBzdGF0cyBhY2Nl c3MsIHRoZXNlIHF1ZXJpZXMgd291bGQgcHJvZHVjZSBoYXNoIGpvaW4gcGxhbnM6CmV4cGxh aW4gKGNvc3RzIG9mZikKICBzZWxlY3QgKiBmcm9tIHBlcm10ZXN0X3BhcmVudCBwMSBpbm5l ciBqb2luIHBlcm10ZXN0X3BhcmVudCBwMgogIG9uIHAxLmEgPSBwMi5hIGFuZCBwMS5jIH4g J2ExJCc7CmV4cGxhaW4gKGNvc3RzIG9mZikKICBzZWxlY3QgKiBmcm9tIHBlcm10ZXN0X3Bh cmVudCBwMSBpbm5lciBqb2luIHBlcm10ZXN0X3BhcmVudCBwMgogIG9uIHAxLmEgPSBwMi5h IGFuZCBsZWZ0KHAxLmMsIDMpIH4gJ2ExJCc7CnJlc2V0IHNlc3Npb24gYXV0aG9yaXphdGlv bjsKcmV2b2tlIGFsbCBvbiBwZXJtdGVzdF9wYXJlbnQgZnJvbSByZWdyZXNzX25vX2NoaWxk X2FjY2VzczsKZ3JhbnQgc2VsZWN0KGEsYykgb24gcGVybXRlc3RfcGFyZW50IHRvIHJlZ3Jl c3Nfbm9fY2hpbGRfYWNjZXNzOwpzZXQgc2Vzc2lvbiBhdXRob3JpemF0aW9uIHJlZ3Jlc3Nf bm9fY2hpbGRfYWNjZXNzOwpleHBsYWluIChjb3N0cyBvZmYpCiAgc2VsZWN0IHAyLmEsIHAx LmMgZnJvbSBwZXJtdGVzdF9wYXJlbnQgcDEgaW5uZXIgam9pbiBwZXJtdGVzdF9wYXJlbnQg cDIKICBvbiBwMS5hID0gcDIuYSBhbmQgcDEuYyB+ICdhMSQnOwotLSB3ZSB3aWxsIG5vdCBo YXZlIGFjY2VzcyB0byB0aGUgZXhwcmVzc2lvbiBpbmRleCdzIHN0YXRzIGhlcmU6CmV4cGxh aW4gKGNvc3RzIG9mZikKICBzZWxlY3QgcDIuYSwgcDEuYyBmcm9tIHBlcm10ZXN0X3BhcmVu dCBwMSBpbm5lciBqb2luIHBlcm10ZXN0X3BhcmVudCBwMgogIG9uIHAxLmEgPSBwMi5hIGFu ZCBsZWZ0KHAxLmMsIDMpIH4gJ2ExJCc7CnJlc2V0IHNlc3Npb24gYXV0aG9yaXphdGlvbjsK cmV2b2tlIGFsbCBvbiBwZXJtdGVzdF9wYXJlbnQgZnJvbSByZWdyZXNzX25vX2NoaWxkX2Fj Y2VzczsKZHJvcCByb2xlIHJlZ3Jlc3Nfbm9fY2hpbGRfYWNjZXNzOwpkcm9wIHRhYmxlIHBl cm10ZXN0X3BhcmVudDsKCi0tIFZlcmlmeSB0aGF0IGNvbnN0cmFpbnQgZXJyb3JzIGFjcm9z cyBwYXJ0aXRpb24gcm9vdCAvIGNoaWxkIGFyZQotLSBoYW5kbGVkIGNvcnJlY3RseSAoQnVn ICMxNjI5MykKQ1JFQVRFIFRBQkxFIGVycnRzdF9wYXJlbnQgKAogICAgcGFydGlkIGludCBu b3QgbnVsbCwKICAgIHNoZGF0YSBpbnQgbm90IG51bGwsCiAgICBkYXRhIGludCBOT1QgTlVM TCBERUZBVUxUIDAsCiAgICBDT05TVFJBSU5UIHNoZGF0YV9zbWFsbCBDSEVDSyhzaGRhdGEg PCAzKQopIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGlkKTsKCi0tIGZhc3QgZGVmYXVsdHMg bGVhZCB0byBhdHRyaWJ1dGUgbWFwcGluZyBiZWluZyB1c2VkIGluIG9uZQotLSBkaXJlY3Rp b24sIGJ1dCBub3QgdGhlIG90aGVyCkNSRUFURSBUQUJMRSBlcnJ0c3RfY2hpbGRfZmFzdGRl ZiAoCiAgICBwYXJ0aWQgaW50IG5vdCBudWxsLAogICAgc2hkYXRhIGludCBub3QgbnVsbCwK ICAgIENPTlNUUkFJTlQgc2hkYXRhX3NtYWxsIENIRUNLKHNoZGF0YSA8IDMpCik7CgotLSBu byByZW1hcHBpbmcgaW4gZWl0aGVyIGRpcmVjdGlvbiBuZWNlc3NhcnkKQ1JFQVRFIFRBQkxF IGVycnRzdF9jaGlsZF9wbGFpbmRlZiAoCiAgICBwYXJ0aWQgaW50IG5vdCBudWxsLAogICAg c2hkYXRhIGludCBub3QgbnVsbCwKICAgIGRhdGEgaW50IE5PVCBOVUxMIERFRkFVTFQgMCwK ICAgIENPTlNUUkFJTlQgc2hkYXRhX3NtYWxsIENIRUNLKHNoZGF0YSA8IDMpLAogICAgQ0hF Q0soZGF0YSA8IDEwKQopOwoKLS0gcmVtYXBwaW5nIGluIGJvdGggZGlyZWN0aW9uCkNSRUFU RSBUQUJMRSBlcnJ0c3RfY2hpbGRfcmVvcmRlciAoCiAgICBkYXRhIGludCBOT1QgTlVMTCBE RUZBVUxUIDAsCiAgICBzaGRhdGEgaW50IG5vdCBudWxsLAogICAgcGFydGlkIGludCBub3Qg bnVsbCwKICAgIENPTlNUUkFJTlQgc2hkYXRhX3NtYWxsIENIRUNLKHNoZGF0YSA8IDMpLAog ICAgQ0hFQ0soZGF0YSA8IDEwKQopOwoKQUxURVIgVEFCTEUgZXJydHN0X2NoaWxkX2Zhc3Rk ZWYgQUREIENPTFVNTiBkYXRhIGludCBOT1QgTlVMTCBERUZBVUxUIDA7CkFMVEVSIFRBQkxF IGVycnRzdF9jaGlsZF9mYXN0ZGVmIEFERCBDT05TVFJBSU5UIGVycnRlc3RfY2hpbGRfZmFz dGRlZl9kYXRhX2NoZWNrIENIRUNLIChkYXRhIDwgMTApOwoKQUxURVIgVEFCTEUgZXJydHN0 X3BhcmVudCBBVFRBQ0ggUEFSVElUSU9OIGVycnRzdF9jaGlsZF9mYXN0ZGVmIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwKTsKQUxURVIgVEFCTEUgZXJydHN0X3BhcmVudCBBVFRBQ0gg UEFSVElUSU9OIGVycnRzdF9jaGlsZF9wbGFpbmRlZiBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApOwpBTFRFUiBUQUJMRSBlcnJ0c3RfcGFyZW50IEFUVEFDSCBQQVJUSVRJT04gZXJy dHN0X2NoaWxkX3Jlb3JkZXIgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKCi0tIGlu c2VydCB3aXRob3V0IGNoaWxkIGNoZWNrIGNvbnN0cmFpbnQgZXJyb3IKSU5TRVJUIElOVE8g ZXJydHN0X3BhcmVudChwYXJ0aWQsIHNoZGF0YSwgZGF0YSkgVkFMVUVTICggJzAnLCAnMScs ICc1Jyk7CklOU0VSVCBJTlRPIGVycnRzdF9wYXJlbnQocGFydGlkLCBzaGRhdGEsIGRhdGEp IFZBTFVFUyAoJzEwJywgJzEnLCAnNScpOwpJTlNFUlQgSU5UTyBlcnJ0c3RfcGFyZW50KHBh cnRpZCwgc2hkYXRhLCBkYXRhKSBWQUxVRVMgKCcyMCcsICcxJywgJzUnKTsKCgotLSB3aXRo aW4gcGFydGl0aW9uIHVwZGF0ZSB3aXRob3V0IGNoaWxkIGNoZWNrIGNvbnN0cmFpbnQgdmlv bGF0aW9uCkJFR0lOOwpVUERBVEUgZXJydHN0X3BhcmVudCBTRVQgZGF0YSA9IGRhdGEgKyAx IFdIRVJFIHBhcnRpZCA9IDA7ClVQREFURSBlcnJ0c3RfcGFyZW50IFNFVCBkYXRhID0gZGF0 YSArIDEgV0hFUkUgcGFydGlkID0gMTA7ClVQREFURSBlcnJ0c3RfcGFyZW50IFNFVCBkYXRh ID0gZGF0YSArIDEgV0hFUkUgcGFydGlkID0gMjA7ClJPTExCQUNLOwoKLS0gZGlyZWN0IGxl YWYgcGFydGl0aW9uIHVwZGF0ZSwgd2l0aG91dCBwYXJ0aXRpb24gaWQgdmlvbGF0aW9uCkJF R0lOOwpVUERBVEUgZXJydHN0X2NoaWxkX2Zhc3RkZWYgU0VUIHBhcnRpZCA9IDEgV0hFUkUg cGFydGlkID0gMDsKVVBEQVRFIGVycnRzdF9jaGlsZF9wbGFpbmRlZiBTRVQgcGFydGlkID0g MTEgV0hFUkUgcGFydGlkID0gMTA7ClVQREFURSBlcnJ0c3RfY2hpbGRfcmVvcmRlciBTRVQg cGFydGlkID0gMjEgV0hFUkUgcGFydGlkID0gMjA7ClJPTExCQUNLOwoKLS0gcGFydGl0aW9u IG1vdmUsIHdpdGhvdXQgY2hpbGQgY2hlY2sgY29uc3RyYWludCB2aW9sYXRpb24KQkVHSU47 ClVQREFURSBlcnJ0c3RfcGFyZW50IFNFVCBwYXJ0aWQgPSAxMCwgZGF0YSA9IGRhdGEgKyAx IFdIRVJFIHBhcnRpZCA9IDA7ClVQREFURSBlcnJ0c3RfcGFyZW50IFNFVCBwYXJ0aWQgPSAy MCwgZGF0YSA9IGRhdGEgKyAxIFdIRVJFIHBhcnRpZCA9IDEwOwpVUERBVEUgZXJydHN0X3Bh cmVudCBTRVQgcGFydGlkID0gMCwgZGF0YSA9IGRhdGEgKyAxIFdIRVJFIHBhcnRpZCA9IDIw OwpST0xMQkFDSzsKCgpEUk9QIFRBQkxFIGVycnRzdF9wYXJlbnQ7Cg== --------------4s55PLDOUDmRlBKw0YsUSQ3X Content-Type: application/sql; name="vacuum.sql" Content-Disposition: attachment; filename="vacuum.sql" Content-Transfer-Encoding: base64 LS0KLS0gVkFDVVVNCi0tCgpDUkVBVEUgVEFCTEUgdmFjdHN0IChpIElOVCk7CgpDUkVBVEUg VEFCTEUgdmFjY2x1c3RlciAoaSBJTlQgUFJJTUFSWSBLRVkpOwpBTFRFUiBUQUJMRSB2YWNj bHVzdGVyIENMVVNURVIgT04gdmFjY2x1c3Rlcl9wa2V5OwpDTFVTVEVSIHZhY2NsdXN0ZXI7 CgotLSBQQVJBTExFTCBvcHRpb24KQ1JFQVRFIFRBQkxFIHB2YWN0c3QgKGkgSU5ULCBhIElO VFtdLCBwIFBPSU5UKSB3aXRoIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOwpJTlNFUlQg SU5UTyBwdmFjdHN0IFNFTEVDVCBpLCBhcnJheVsxLDIsM10sIHBvaW50KGksIGkrMSkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBpOwpDUkVBVEUgSU5ERVggYnRyZWVfcHZhY3Rz dCBPTiBwdmFjdHN0IFVTSU5HIGJ0cmVlIChpKTsKQ1JFQVRFIElOREVYIGhhc2hfcHZhY3Rz dCBPTiBwdmFjdHN0IFVTSU5HIGhhc2ggKGkpOwpDUkVBVEUgSU5ERVggYnJpbl9wdmFjdHN0 IE9OIHB2YWN0c3QgVVNJTkcgYnJpbiAoaSk7CkNSRUFURSBJTkRFWCBnaW5fcHZhY3RzdCBP TiBwdmFjdHN0IFVTSU5HIGdpbiAoYSk7CkNSRUFURSBJTkRFWCBnaXN0X3B2YWN0c3QgT04g cHZhY3RzdCBVU0lORyBnaXN0IChwKTsKQ1JFQVRFIElOREVYIHNwZ2lzdF9wdmFjdHN0IE9O IHB2YWN0c3QgVVNJTkcgc3BnaXN0IChwKTsKCi0tIFZBQ1VVTSBpbnZva2VzIHBhcmFsbGVs IGluZGV4IGNsZWFudXAKU0VUIG1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgdG8gMDsK VkFDVVVNIChQQVJBTExFTCAyKSBwdmFjdHN0OwoKLS0gVkFDVVVNIGludm9rZXMgcGFyYWxs ZWwgYnVsay1kZWxldGlvbgpVUERBVEUgcHZhY3RzdCBTRVQgaSA9IGkgV0hFUkUgaSA8IDEw MDA7ClZBQ1VVTSAoUEFSQUxMRUwgMikgcHZhY3RzdDsKClVQREFURSBwdmFjdHN0IFNFVCBp ID0gaSBXSEVSRSBpIDwgMTAwMDsKVkFDVVVNIChQQVJBTExFTCAwKSBwdmFjdHN0OyAtLSBk aXNhYmxlIHBhcmFsbGVsIHZhY3V1bQoKVkFDVVVNIChQQVJBTExFTCAyLCBJTkRFWF9DTEVB TlVQIEZBTFNFKSBwdmFjdHN0OwoKLS0gVGVzdCBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9m IHBhcmFsbGVsIGFuZCBmdWxsIG9wdGlvbnMgZm9yIHRlbXBvcmFyeSB0YWJsZXMKQ1JFQVRF IFRFTVBPUkFSWSBUQUJMRSB0bXAgKGEgaW50IFBSSU1BUlkgS0VZKTsKQ1JFQVRFIElOREVY IHRtcF9pZHgxIE9OIHRtcCAoYSk7ClZBQ1VVTSAoUEFSQUxMRUwgMSwgRlVMTCBGQUxTRSkg dG1wOyAtLSBwYXJhbGxlbCB2YWN1dW0gZGlzYWJsZWQgZm9yIHRlbXAgdGFibGVzClZBQ1VV TSAoUEFSQUxMRUwgMCwgRlVMTCBUUlVFKSB0bXA7IC0tIGNhbiBzcGVjaWZ5IHBhcmFsbGVs IGRpc2FibGVkIChldmVuIHRob3VnaCB0aGF0J3MgaW1wbGllZCBieSBGVUxMKQpSRVNFVCBt aW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwpEUk9QIFRBQkxFIHB2YWN0c3Q7CgotLSBJ TkRFWF9DTEVBTlVQIG9wdGlvbgpDUkVBVEUgVEFCTEUgbm9faW5kZXhfY2xlYW51cCAoaSBJ TlQgUFJJTUFSWSBLRVksIHQgVEVYVCk7Ci0tIFVzZSB1bmNvbXByZXNzZWQgZGF0YSBzdG9y ZWQgaW4gdG9hc3QuCkNSRUFURSBJTkRFWCBub19pbmRleF9jbGVhbnVwX2lkeCBPTiBub19p bmRleF9jbGVhbnVwKHQpOwpBTFRFUiBUQUJMRSBub19pbmRleF9jbGVhbnVwIEFMVEVSIENP TFVNTiB0IFNFVCBTVE9SQUdFIEVYVEVSTkFMOwpJTlNFUlQgSU5UTyBub19pbmRleF9jbGVh bnVwKGksIHQpIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsMzApLAogICAgcmVwZWF0KCcx MjM0NTY3ODkwJywyNjkpKTsKLS0gaW5kZXggY2xlYW51cCBvcHRpb24gaXMgaWdub3JlZCBp ZiBWQUNVVU0gRlVMTApWQUNVVU0gKElOREVYX0NMRUFOVVAgVFJVRSwgRlVMTCBUUlVFKSBu b19pbmRleF9jbGVhbnVwOwpWQUNVVU0gKEZVTEwgVFJVRSkgbm9faW5kZXhfY2xlYW51cDsK LS0gVG9hc3QgaW5oZXJpdHMgdGhlIHZhbHVlIGZyb20gaXRzIHBhcmVudCB0YWJsZS4KQUxU RVIgVEFCTEUgbm9faW5kZXhfY2xlYW51cCBTRVQgKHZhY3V1bV9pbmRleF9jbGVhbnVwID0g ZmFsc2UpOwpERUxFVEUgRlJPTSBub19pbmRleF9jbGVhbnVwIFdIRVJFIGkgPCAxNTsKLS0g Tm90aGluZyBpcyBjbGVhbmVkIHVwLgpWQUNVVU0gbm9faW5kZXhfY2xlYW51cDsKLS0gQm90 aCBwYXJlbnQgcmVsYXRpb24gYW5kIHRvYXN0IGFyZSBjbGVhbmVkIHVwLgpBTFRFUiBUQUJM RSBub19pbmRleF9jbGVhbnVwIFNFVCAodmFjdXVtX2luZGV4X2NsZWFudXAgPSB0cnVlKTsK VkFDVVVNIG5vX2luZGV4X2NsZWFudXA7CkFMVEVSIFRBQkxFIG5vX2luZGV4X2NsZWFudXAg U0VUICh2YWN1dW1faW5kZXhfY2xlYW51cCA9IGF1dG8pOwpWQUNVVU0gbm9faW5kZXhfY2xl YW51cDsKLS0gUGFyYW1ldGVyIGlzIHNldCBmb3IgYm90aCB0aGUgcGFyZW50IHRhYmxlIGFu ZCBpdHMgdG9hc3QgcmVsYXRpb24uCklOU0VSVCBJTlRPIG5vX2luZGV4X2NsZWFudXAoaSwg dCkgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsNjApLAogICAgcmVwZWF0KCcxMjM0NTY3 ODkwJywyNjkpKTsKREVMRVRFIEZST00gbm9faW5kZXhfY2xlYW51cCBXSEVSRSBpIDwgNDU7 Ci0tIE9ubHkgdG9hc3QgaW5kZXggaXMgY2xlYW5lZCB1cC4KQUxURVIgVEFCTEUgbm9faW5k ZXhfY2xlYW51cCBTRVQgKHZhY3V1bV9pbmRleF9jbGVhbnVwID0gb2ZmLAogICAgdG9hc3Qu dmFjdXVtX2luZGV4X2NsZWFudXAgPSB5ZXMpOwpWQUNVVU0gbm9faW5kZXhfY2xlYW51cDsK LS0gT25seSBwYXJlbnQgaXMgY2xlYW5lZCB1cC4KQUxURVIgVEFCTEUgbm9faW5kZXhfY2xl YW51cCBTRVQgKHZhY3V1bV9pbmRleF9jbGVhbnVwID0gdHJ1ZSwKICAgIHRvYXN0LnZhY3V1 bV9pbmRleF9jbGVhbnVwID0gZmFsc2UpOwpWQUNVVU0gbm9faW5kZXhfY2xlYW51cDsKLS0g VGVzdCBzb21lIGV4dHJhIHJlbGF0aW9ucy4KVkFDVVVNIChJTkRFWF9DTEVBTlVQIEZBTFNF KSB2YWNjbHVzdGVyOwpWQUNVVU0gKElOREVYX0NMRUFOVVAgQVVUTykgdmFjdHN0OyAtLSBp bmRleCBjbGVhbnVwIG9wdGlvbiBpcyBpZ25vcmVkIGlmIG5vIGluZGV4ZXMKU0VMRUNUIHBn X3NsZWVwKHJhbmRvbSgpLzIpOwpWQUNVVU0gKEZVTEwpIHZhY3RzdDsKCkRST1AgVEFCTEUg dmFjY2x1c3RlcjsKRFJPUCBUQUJMRSB2YWN0c3Q7CkRST1AgVEFCTEUgbm9faW5kZXhfY2xl YW51cDsKCi0tIHJlbGF0aW9uIG93bmVyc2hpcCwgV0FSTklORyBsb2dzIGdlbmVyYXRlZCBh cyBhbGwgYXJlIHNraXBwZWQuCkNSRUFURSBUQUJMRSB2YWNvd25lZCAoYSBpbnQpOwpDUkVB VEUgVEFCTEUgdmFjb3duZWRfcGFydGVkIChhIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEp OwpDUkVBVEUgVEFCTEUgdmFjb3duZWRfcGFydDEgUEFSVElUSU9OIE9GIHZhY293bmVkX3Bh cnRlZCBGT1IgVkFMVUVTIElOICgxKTsKQ1JFQVRFIFRBQkxFIHZhY293bmVkX3BhcnQyIFBB UlRJVElPTiBPRiB2YWNvd25lZF9wYXJ0ZWQgRk9SIFZBTFVFUyBJTiAoMik7CkNSRUFURSBS T0xFIHJlZ3Jlc3NfdmFjdXVtOwpTRVQgUk9MRSByZWdyZXNzX3ZhY3V1bTsKLS0gU2ltcGxl IHRhYmxlClZBQ1VVTSB2YWNvd25lZDsKQU5BTFlaRSB2YWNvd25lZDsKVkFDVVVNIChBTkFM WVpFKSB2YWNvd25lZDsKLS0gQ2F0YWxvZwpWQUNVVU0gcGdfY2F0YWxvZy5wZ19jbGFzczsK QU5BTFlaRSBwZ19jYXRhbG9nLnBnX2NsYXNzOwpWQUNVVU0gKEFOQUxZWkUpIHBnX2NhdGFs b2cucGdfY2xhc3M7Ci0tIFNoYXJlZCBjYXRhbG9nClZBQ1VVTSBwZ19jYXRhbG9nLnBnX2F1 dGhpZDsKQU5BTFlaRSBwZ19jYXRhbG9nLnBnX2F1dGhpZDsKVkFDVVVNIChBTkFMWVpFKSBw Z19jYXRhbG9nLnBnX2F1dGhpZDsKLS0gUGFydGl0aW9uZWQgdGFibGUgYW5kIGl0cyBwYXJ0 aXRpb25zLCBub3RoaW5nIG93bmVkIGJ5IG90aGVyIHVzZXIuCi0tIFJlbGF0aW9ucyBhcmUg bm90IGxpc3RlZCBpbiBhIHNpbmdsZSBjb21tYW5kIHRvIHRlc3Qgb3duZXJzaGlwCi0tIGlu ZGVwZW5kZW50bHkuClZBQ1VVTSB2YWNvd25lZF9wYXJ0ZWQ7ClZBQ1VVTSB2YWNvd25lZF9w YXJ0MTsKVkFDVVVNIHZhY293bmVkX3BhcnQyOwpBTkFMWVpFIHZhY293bmVkX3BhcnRlZDsK QU5BTFlaRSB2YWNvd25lZF9wYXJ0MTsKQU5BTFlaRSB2YWNvd25lZF9wYXJ0MjsKVkFDVVVN IChBTkFMWVpFKSB2YWNvd25lZF9wYXJ0ZWQ7ClZBQ1VVTSAoQU5BTFlaRSkgdmFjb3duZWRf cGFydDE7ClZBQ1VVTSAoQU5BTFlaRSkgdmFjb3duZWRfcGFydDI7ClJFU0VUIFJPTEU7Ci0t IFBhcnRpdGlvbmVkIHRhYmxlIGFuZCBvbmUgcGFydGl0aW9uIG93bmVkIGJ5IG90aGVyIHVz ZXIuCkFMVEVSIFRBQkxFIHZhY293bmVkX3BhcnRlZCBPV05FUiBUTyByZWdyZXNzX3ZhY3V1 bTsKQUxURVIgVEFCTEUgdmFjb3duZWRfcGFydDEgT1dORVIgVE8gcmVncmVzc192YWN1dW07 ClNFVCBST0xFIHJlZ3Jlc3NfdmFjdXVtOwpWQUNVVU0gdmFjb3duZWRfcGFydGVkOwpWQUNV VU0gdmFjb3duZWRfcGFydDE7ClZBQ1VVTSB2YWNvd25lZF9wYXJ0MjsKQU5BTFlaRSB2YWNv d25lZF9wYXJ0ZWQ7CkFOQUxZWkUgdmFjb3duZWRfcGFydDE7CkFOQUxZWkUgdmFjb3duZWRf cGFydDI7ClZBQ1VVTSAoQU5BTFlaRSkgdmFjb3duZWRfcGFydGVkOwpWQUNVVU0gKEFOQUxZ WkUpIHZhY293bmVkX3BhcnQxOwpWQUNVVU0gKEFOQUxZWkUpIHZhY293bmVkX3BhcnQyOwpS RVNFVCBST0xFOwotLSBPbmx5IG9uZSBwYXJ0aXRpb24gb3duZWQgYnkgb3RoZXIgdXNlci4K QUxURVIgVEFCTEUgdmFjb3duZWRfcGFydGVkIE9XTkVSIFRPIENVUlJFTlRfVVNFUjsKU0VU IFJPTEUgcmVncmVzc192YWN1dW07ClZBQ1VVTSB2YWNvd25lZF9wYXJ0ZWQ7ClZBQ1VVTSB2 YWNvd25lZF9wYXJ0MTsKVkFDVVVNIHZhY293bmVkX3BhcnQyOwpBTkFMWVpFIHZhY293bmVk X3BhcnRlZDsKQU5BTFlaRSB2YWNvd25lZF9wYXJ0MTsKQU5BTFlaRSB2YWNvd25lZF9wYXJ0 MjsKVkFDVVVNIChBTkFMWVpFKSB2YWNvd25lZF9wYXJ0ZWQ7ClZBQ1VVTSAoQU5BTFlaRSkg dmFjb3duZWRfcGFydDE7ClZBQ1VVTSAoQU5BTFlaRSkgdmFjb3duZWRfcGFydDI7ClJFU0VU IFJPTEU7Ci0tIE9ubHkgcGFydGl0aW9uZWQgdGFibGUgb3duZWQgYnkgb3RoZXIgdXNlci4K QUxURVIgVEFCTEUgdmFjb3duZWRfcGFydGVkIE9XTkVSIFRPIHJlZ3Jlc3NfdmFjdXVtOwpB TFRFUiBUQUJMRSB2YWNvd25lZF9wYXJ0MSBPV05FUiBUTyBDVVJSRU5UX1VTRVI7ClNFVCBS T0xFIHJlZ3Jlc3NfdmFjdXVtOwpWQUNVVU0gdmFjb3duZWRfcGFydGVkOwpWQUNVVU0gdmFj b3duZWRfcGFydDE7ClZBQ1VVTSB2YWNvd25lZF9wYXJ0MjsKQU5BTFlaRSB2YWNvd25lZF9w YXJ0ZWQ7CkFOQUxZWkUgdmFjb3duZWRfcGFydDE7CkFOQUxZWkUgdmFjb3duZWRfcGFydDI7 ClZBQ1VVTSAoQU5BTFlaRSkgdmFjb3duZWRfcGFydGVkOwpWQUNVVU0gKEFOQUxZWkUpIHZh Y293bmVkX3BhcnQxOwpWQUNVVU0gKEFOQUxZWkUpIHZhY293bmVkX3BhcnQyOwpSRVNFVCBS T0xFOwpEUk9QIFRBQkxFIHZhY293bmVkOwpEUk9QIFRBQkxFIHZhY293bmVkX3BhcnRlZDsK RFJPUCBST0xFIHJlZ3Jlc3NfdmFjdXVtOwo= --------------4s55PLDOUDmRlBKw0YsUSQ3X Content-Type: text/x-patch; charset=UTF-8; name="assert-in-lazy_scan_prune-loop.patch" Content-Disposition: attachment; filename="assert-in-lazy_scan_prune-loop.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBkMmM3MzVlZWRhLi43 OWNlYzk0N2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0x NzE3LDEwICsxNzE3LDEzIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJaW50CQkJbmZyb3plbjsKIAlPZmZzZXROdW1iZXIgZGVhZG9mZnNldHNbTWF4SGVhcFR1 cGxlc1BlclBhZ2VdOwogCXhsX2hlYXBfZnJlZXplX3R1cGxlIGZyb3plbltNYXhIZWFwVHVw bGVzUGVyUGFnZV07CitpbnQgbnVtcmV0cmllcyA9IDA7CiAKIAltYXhvZmYgPSBQYWdlR2V0 TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwogCiByZXRyeToKK251bXJldHJpZXMrKzsKK0Fzc2Vy dChudW1yZXRyaWVzIDwgMTAwKTsKIAogCS8qIEluaXRpYWxpemUgKG9yIHJlc2V0KSBwYWdl LWxldmVsIGNvdW50ZXJzICovCiAJdHVwbGVzX2RlbGV0ZWQgPSAwOwo= --------------4s55PLDOUDmRlBKw0YsUSQ3X--