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.96) (envelope-from ) id 1wI1e7-007ihP-3A for pgsql-bugs@arkaria.postgresql.org; Wed, 29 Apr 2026 09:55:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wI1e6-002tgP-1B for pgsql-bugs@arkaria.postgresql.org; Wed, 29 Apr 2026 09:55:54 +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.96) (envelope-from ) id 1wHyof-002E2B-2s for pgsql-bugs@lists.postgresql.org; Wed, 29 Apr 2026 06:54:37 +0000 Received: from mail-qk1-x72d.google.com ([2607:f8b0:4864:20::72d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHyod-00000003kpq-1RoB for pgsql-bugs@lists.postgresql.org; Wed, 29 Apr 2026 06:54:37 +0000 Received: by mail-qk1-x72d.google.com with SMTP id af79cd13be357-8ee9ec26edaso910906885a.2 for ; Tue, 28 Apr 2026 23:54:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777445673; cv=none; d=google.com; s=arc-20240605; b=jr1LWOa/Ex1ZCHlo5YlPw4qBT6QLnIpaWo4/0LyV5YUafEbWLBq2RgZ/Yn5/iTfYxn NhbXcXtt8QSsVvrz+v8sFpc4BZqDQEN9n8js5IPv/m5AEheYQ9jaP36YX/fsVF0aWbTT /vdot1qG0QMvj6Vvvun/gm0g+Xy0FngoEe11DXHQxoeeuQ2I4v9DpHpaRkffHiL7vx9O jRYTrgwmIhhN7irzg9kcnbdehkVf92PyNXyL7Al1f9+Va48cnI6MzVyTJniAeoXrASbF H0MqVs2Eca2oLzvfAS7JGj/xpEYdyiSMqWJrOo0KPU5nG31BS4akoORwfXKdmnrXRTzn yM6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=njSpHXbKpsJVMIaC1PfP1sm5dCeJxWYqqLQwosvO5Vo=; fh=Vms1i4zQK3Nf8wqIp7vfr0IT4zKlhMShS9MQ3Gsi1Ek=; b=f7H6+QvAuOiO13pG2UDcwOGldvLVizxVWZTBx2oJo6HJJwCaDFbcZ9zSEfK+qYf3Z0 YgYmalI0GZWqEzRgI+LUwndyQHeBBzW5j2mKbNnNU2RghBy3HQMg6mMWzo+bJEWVLRZn EjtM2WSmP+KJCAuT9KcYB+edGe6GMglLexkFVC0c1yO+uKxZ+TRRf30FOiNswCJjqoBj VikfsR6oxnu30fROwvR6EbbRvw3e5iLltl1szFpqJxmJJl1hKQ/N88kS+V5rlm6C1AN6 mOlfitGPaRdEN/Z/N1VPZ0Y/REsXyRd6M7Aw1MN5ZGRJ/Q4YUwKNwooSO9kszcSHiOiO L1Ww==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777445673; x=1778050473; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=njSpHXbKpsJVMIaC1PfP1sm5dCeJxWYqqLQwosvO5Vo=; b=YoHzTAhwuaNGLGDDrfaKVYPFUbY9IPxqg8A+wXawdvLGPizbwgmu84EAEY38dHtDBt EL1+eWOH904GXcO0Q3cSX+BMDsrkHc+ik92Ym+lDCoV89CaFAOTVEvDlawvCLsByM0bF hHqeprbyChyjXlB3lpk6npK76UnMDTfiqULoo0ob7wSJfvfuCX1wJpk2CPxtObUTSn3z hgahDxGZf7SaoyiDTmRtoyC48WUqaiRQko9HSlKoLLFoY1V6RujbCCAw6c9IkEoRKd7w 6o1IpDOO1Ym7LhxWUKEVxrogFRCNo6Ef5F2+j3nffIErCK4vlbeVeylpZMQhK3WcVzS9 wSaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777445673; x=1778050473; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=njSpHXbKpsJVMIaC1PfP1sm5dCeJxWYqqLQwosvO5Vo=; b=sfXVw6J07e7wEkPhV+mzPdGzq5BZMBglyrpi/4J02meRuSYdJCYpZDFJCbN+xtaYv3 In+DBksKF2N+ziF09bEuR+M5YhNSmCOzp2ufh9t7/yE+LY+RbXvSafKA+n1IqOUpCTPk AZi3mIrBeTDP2htakjDmcTA0Tp4uG0urja2/Uf7aTz5DuK1RYTQmFG2AKbyo0s8f4TPI i4ip2cn0jlKMQIw9glfBIXOFteDgVn3Qi3wZ+sWb5HQ3gB1sF39x1PEyFundctkj1VJP 5iVdiiOxsh8bZ4N2kT8wQJSFipkjfpgDM/nBRS0bwBR5I5lv9lfDnLBo2480OJebY58O pBTQ== X-Gm-Message-State: AOJu0YwWlZBgq6d0CTtUCZWGvMKaWjNui6z9vYBgtOx6LQa+RlB6HUlR qFBQogpOaLK2L/2CcE4tm9jawahtE+ko4L/nXKLS2Pgy0+75yGMBX5I/rUaVzBpWcd/gkfUj/7o 9PEzb3wdjAPIWPSluOgg8IlFmBeC/FRo96acjPV//xc3zh74isztboheO X-Gm-Gg: AeBDieu9TseV8uUyPfehiCvAGvMawQf/Ike+97VhyLrDUF4tE7b/aoOhfdBh3DULvwU nUmtq6+IDLn1h7DplylhLQYnbKEnAPrO7g9wvVz72DGJvRNmRnNfOTS47rb0kZewt6WMOa+EIeO VW9JwiN1vWSky+5YhM6gs+DbXyoEWgCucAz3cd24qFaBSUT2PfdrXHd6fudCexMpP2j3yQwn3Eo 9742cTYGAQnsXLGtHs674DAq9DEmXirzUoFBeVT8HxrzxVe2yDmhcHuExm5EadV2PQ2vQ+3mwcE t8b2e6yyvIg2vleuth9IioDLFYizLbwRSJPnvgJwxVBCkbH7+5CBaZM16rwUl1CxMUFjig== X-Received: by 2002:a05:620a:1728:b0:8ed:bafb:26b0 with SMTP id af79cd13be357-8f7d8f0e7fbmr882504785a.37.1777445672905; Tue, 28 Apr 2026 23:54:32 -0700 (PDT) MIME-Version: 1.0 From: Siddharth Kothari Date: Wed, 29 Apr 2026 12:24:21 +0530 X-Gm-Features: AVHnY4L2A5X_f7xFqLxOSStvWtiWoW70YGtj3K6BzjSkpFXI1imSz6JFaC2i2Gk Message-ID: Subject: Fix size estimation for parallel B-Tree scans with skip arrays To: pgsql-bugs@lists.postgresql.org Cc: Vaibhav Jain , Madhukar , Xun Cheng , pg@bowt.ie Content-Type: multipart/mixed; boundary="000000000000f27f2d065093d117" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f27f2d065093d117 Content-Type: multipart/alternative; boundary="000000000000f27f2c065093d115" --000000000000f27f2c065093d115 Content-Type: text/plain; charset="UTF-8" Hi folks. This commit introduced parallel scan skip support, however it underestimates the required memory, causing it to write past the allocated shared memory boundary. This can corrupt any entity using the adjacent shared memory segment, leading to unpredictable behavior. I reproduced the issue manually on stock postgres and raised a patch that fixes it along with regress tests. In my repro, the issue manifested as postgres server crashing unexpectedly. Root cause: In src/backend/access/nbtree/nbtree.c, the loop in btestimateparallelscan assumes that every index column might require a skip array and adds sizeof(int) to the estimated size: However, every skip array actually needs space for its slot in the btps_arrElems array AND space to store its scan key's sk_flags. Therefore, it requires sizeof(int) * 2. The attached patch fixes this by allocating sizeof(int) * 2 per attribute in btestimateparallelscan. Please let me know your thoughts. Thanks, Siddharth Kothari --000000000000f27f2c065093d115 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi folks.=C2=A0

=
This=C2=A0commit=C2=A0introduced par= allel scan skip support, however it underestimates the required memory,=C2= =A0causing it to=C2=A0write past the allocated shared memory boundary.=C2= =A0This can corrupt any entity using the adjacent shared memory segment, = leading to unpredictable behavior.=C2=A0

= I rep= roduced the issue manually on stock postgres=C2=A0and raised a patch that f= ixes it along with regress tests. In my repro, the issue manifested as post= gres server crashing unexpectedly.=C2=A0

=

Root cause:=C2=A0

In=C2=A0src/backend/access/nbtree/nbtree.c, the loop in=C2=A0btestim= ateparallelscan=C2=A0assumes that ever= y index column might require a skip array and adds sizeof(int) to the estim= ated size:

However, every skip array actually needs space for its sl= ot in the=C2=A0btps_arrElems=C2=A0array AND space to store its scan key'= ;s=C2=A0sk_flags. Therefore, it requires=C2=A0sizeof(int) * 2= .


The attached patch fixes this by allocating=C2=A0sizeof(int) * 2=C2=A0per attribute in btestimateparallelscan.


Please let me know your thoughts.=C2=A0


Thanks,

<= font face=3D"Helvetica Neue">Siddharth Kothari

--000000000000f27f2c065093d115-- --000000000000f27f2d065093d117 Content-Type: application/x-patch; name="0001-Fix-size-estimation-for-parallel-B-Tree-scans-with-s.patch" Content-Disposition: attachment; filename="0001-Fix-size-estimation-for-parallel-B-Tree-scans-with-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mojooky90 RnJvbSBjOWU2NjczZGZkZmRmODg5YjIzOWM4MmEzYTQ2OGExYjAxNzJiYmExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaWRkaGFydGggS290aGFyaSA8c2lka290QGdvb2dsZS5jb20+ CkRhdGU6IEZyaSwgMjQgQXByIDIwMjYgMDk6NDc6NTcgKzAwMDAKU3ViamVjdDogW1BBVENIXSBG aXggc2l6ZSBlc3RpbWF0aW9uIGZvciBwYXJhbGxlbCBCLVRyZWUgc2NhbnMgd2l0aCBza2lwCiBh cnJheXMKClBhcmFsbGVsIEItVHJlZSBzY2FucyB3aXRoIHNraXAgYXJyYXlzIHVuZGVyLWVzdGlt YXRlZCB0aGUgc2hhcmVkIG1lbW9yeSByZXF1aXJlZCB3aGVuIGEgd2lkZSBpbmRleCB3YXMgdXNl ZC4gVGhpcyBjYXVzZWQgbWVtb3J5IGNvcnJ1cHRpb24gaW4gYWRqYWNlbnQgc2hhcmVkIG1lbW9y eSBzZWdtZW50cywgd2hpY2ggY2F1c2VzIGNyYXNoZXMgaW4gZGlmZmVyZW50IHdheXMgZGVwZW5k aW5nIG9uIHdoaWNoZXZlciBlbnRpdHkgaXMgY29uc3VtaW5nIHRoZSBhZGphY2VudCBtZW1vcnkg c2VnbWVudC4KClRoaXMgcGF0Y2ggZml4ZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBjYWxjdWxhdGlv biBpbiBidGVzdGltYXRlcGFyYWxsZWxzY2FuIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciB0aGUg YXJyYXkgc2xvdHMgbmVlZGVkIGZvciBhbGwgaW5kZXggY29sdW1ucy4KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFsbGVsLm91dCB8IDEyOCArKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9wYXJhbGxlbC5zcWwgICAgICB8IDEyMSAr KysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyNTIgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zZWxlY3RfcGFyYWxsZWwub3V0CiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAw NzU1IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9wYXJhbGxlbC5zcWwKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRyZWUuYwppbmRleCA2ZDg3MGU0ZWJlNy4uYmJiZDhlYWY1OGUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRyZWUuYwpAQCAtNjAzLDkgKzYwMywxMCBAQCBidGVzdGltYXRlcGFy YWxsZWxzY2FuKFJlbGF0aW9uIHJlbCwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQogCQkgKiBX ZSBtYWtlIHRoZSBjb25zZXJ2YXRpdmUgYXNzdW1wdGlvbiB0aGF0IGV2ZXJ5IGluZGV4IGNvbHVt biB3aWxsCiAJCSAqIGFsc28gcmVxdWlyZSBhIHNraXAgYXJyYXkuCiAJCSAqCi0JCSAqIEV2ZXJ5 IHNraXAgYXJyYXkgbXVzdCBoYXZlIHNwYWNlIHRvIHN0b3JlIGl0cyBzY2FuIGtleSdzIHNrX2Zs YWdzLgorCQkgKiBFdmVyeSBza2lwIGFycmF5IG11c3QgaGF2ZSBzcGFjZSBmb3IgaXRzIHNsb3Qg aW4gdGhlCisJCSAqIGJ0cHNfYXJyRWxlbXMgYXJyYXksIGFuZCBzcGFjZSB0byBzdG9yZSBpdHMg c2NhbiBrZXkncyBza19mbGFncy4KIAkJICovCi0JCWVzdG5idHJlZXNoYXJlZCA9IGFkZF9zaXpl KGVzdG5idHJlZXNoYXJlZCwgc2l6ZW9mKGludCkpOworCQllc3RuYnRyZWVzaGFyZWQgPSBhZGRf c2l6ZShlc3RuYnRyZWVzaGFyZWQsIHNpemVvZihpbnQpICogMik7CiAKIAkJLyogQ29uc2lkZXIg c3BhY2UgcmVxdWlyZWQgdG8gc3RvcmUgYSBkYXR1bSBvZiBvcGNsYXNzIGlucHV0IHR5cGUgKi8K IAkJYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHJlbC0+cmRfYXR0LCBhdHRudW0gLSAxKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFsbGVsLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFsbGVsLm91dApvbGQgbW9k ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDkzMzkyMWQxODYwLi4wN2ZmY2FlZjM3MAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdF9wYXJhbGxlbC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3RfcGFyYWxsZWwub3V0CkBAIC0xNDM1LDMg KzE0MzUsMTMxIEBAIHNlbGVjdCBwYXJhbGxlbF93b3JrZXJzX3RvX2xhdW5jaCA+IDoncGFyYWxs ZWxfd29ya2Vyc190b19sYXVuY2hfYmVmb3JlJyAgQVMgd3JrCiAgdCAgICAgICAgICAgICB8IHQK ICgxIHJvdykKIAorLS0KKy0tIFBhcmFsbGVsIEluZGV4IFNraXAgU2NhbiBNZW1vcnkgQ29ycnVw dGlvbiBUZXN0CistLQorLS0gVGhlIGZvbGxvd2luZyB0ZXN0IGFpbXMgdG8gZXhwb3NlIGEgbWVt b3J5IGNvcnJ1cHRpb24gaXNzdWUgaW4gcGFyYWxsZWwgaW5kZXgKKy0tIHNraXAgc2NhbnMgYnkg dXNpbmcgYSB3aWRlIGluZGV4ICgzMiBjb2x1bW5zKSBhbmQgc3BlY2lmaWMgcXVlcnkgcGF0dGVy bnMKKy0tIHRoYXQgdHJpZ2dlciBza2lwIHNjYW4gbG9naWMgaW4gYSBwYXJhbGxlbCBleGVjdXRp b24gZW52aXJvbm1lbnQuCitDUkVBVEUgVEFCTEUgZ2xvYmFsX2ludmVudG9yeV8xICgKKyAgICBy ZWdpb25faWQgcmVhbCwKKyAgICBzdG9yZV90eXBlMSBiaWdpbnQsCisgICAgc3RvcmVfdHlwZTIg YmlnaW50LAorICAgIHN0b3JlX3R5cGUzIGJpZ2ludCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcg aW50LCBjOCBpbnQsIGM5IGludCwKKyAgICBjMTAgaW50LCBjMTEgaW50LCBjMTIgaW50LCBjMTMg aW50LCBjMTQgaW50LCBjMTUgaW50LCBjMTYgaW50LCBjMTcgaW50LCBjMTggaW50LCBjMTkgaW50 LAorICAgIGMyMCBpbnQsIGMyMSBpbnQsIGMyMiBpbnQsIGMyMyBpbnQsIGMyNCBpbnQsIGMyNSBp bnQsIGMyNiBpbnQsIGMyNyBpbnQsIGMyOCBpbnQsIGMyOSBpbnQsCisgICAgYzMwIGludCwgYzMx IGludCwKKyAgICBpdGVtX2lkIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSwKKyAgICBwYXlsb2Fk IHRleHQKKyk7CitDUkVBVEUgVEFCTEUgZ2xvYmFsX2ludmVudG9yeV8yICgKKyAgICByZWdpb25f aWQgcmVhbCwKKyAgICBzdG9yZV90eXBlMSBiaWdpbnQsCisgICAgc3RvcmVfdHlwZTIgYmlnaW50 LAorICAgIHN0b3JlX3R5cGUzIGJpZ2ludCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcgaW50LCBj OCBpbnQsIGM5IGludCwKKyAgICBjMTAgaW50LCBjMTEgaW50LCBjMTIgaW50LCBjMTMgaW50LCBj MTQgaW50LCBjMTUgaW50LCBjMTYgaW50LCBjMTcgaW50LCBjMTggaW50LCBjMTkgaW50LAorICAg IGMyMCBpbnQsIGMyMSBpbnQsIGMyMiBpbnQsIGMyMyBpbnQsIGMyNCBpbnQsIGMyNSBpbnQsIGMy NiBpbnQsIGMyNyBpbnQsIGMyOCBpbnQsIGMyOSBpbnQsCisgICAgYzMwIGludCwgYzMxIGludCwK KyAgICBpdGVtX2lkIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSwKKyAgICBwYXlsb2FkIHRleHQK Kyk7CitJTlNFUlQgSU5UTyBnbG9iYWxfaW52ZW50b3J5XzEgKHJlZ2lvbl9pZCwgc3RvcmVfdHlw ZTEsIHN0b3JlX3R5cGUyLCBzdG9yZV90eXBlMywgYzUsIGM2LCBjNywgCitjOCwgYzksIGMxMCwg YzExLCBjMTIsIGMxMywgYzE0LCBjMTUsIGMxNiwgYzE3LCBjMTgsIGMxOSwgYzIwLCBjMjEsIGMy MiwgYzIzLCBjMjQsIGMyNSwgYzI2LCAKK2MyNywgYzI4LCBjMjksIGMzMCwgYzMxLCBpdGVtX2lk LCBwYXlsb2FkKQorU0VMRUNUCisgICAgKHMgKiAxLjEpOjpyZWFsLAorICAgIChkMSAqIDEwMCk6 OmJpZ2ludCwKKyAgICAoZDIgKiAxMDAwKTo6YmlnaW50LAorICAgIChkMyAqIC04MTk4NTUyOTIx NjQ4Njg5Nik6OmJpZ2ludCwKKyAgICBzLCBzLCBzLCBzLCBzLAorICAgIHMsIHMsIHMsIHMsIHMs IHMsIHMsIHMsIHMsIHMsCisgICAgcywgcywgcywgcywgcywgcywgcywgcywgcywgcywKKyAgICBz LCBzLAorICAgIHQsCisgICAgcmFuZG9tKCk6OnRleHQKK0ZST00KKyAgICBnZW5lcmF0ZV9zZXJp ZXMoMSwgNSkgcywKKyAgICBnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgZDEsCisgICAgZ2VuZXJhdGVf c2VyaWVzKDEsIDQpIGQyLAorICAgIGdlbmVyYXRlX3NlcmllcygxLCAxKSBkMywKKyAgICBnZW5l cmF0ZV9zZXJpZXMoJzIwMjYtMDEtMDEnOjp0aW1lc3RhbXB0eiwgJzIwMjYtMDEtMDUnOjp0aW1l c3RhbXB0eiwgJzUgbWludXRlJzo6aW50ZXJ2YWwpIHQ7CitJTlNFUlQgSU5UTyBnbG9iYWxfaW52 ZW50b3J5XzIgU0VMRUNUICogRlJPTSBnbG9iYWxfaW52ZW50b3J5XzE7CistLSBDcmVhdGUgYSAz Mi1jb2x1bW4gQi10cmVlIGluZGV4IG9uIHRhYmxlIDEgdG8gZW5jb3VyYWdlIHNraXAgc2Nhbgor Q1JFQVRFIElOREVYIGlkeF9tdWx0aV9za2lwXzEgT04gZ2xvYmFsX2ludmVudG9yeV8xIChyZWdp b25faWQsIHN0b3JlX3R5cGUxLCBzdG9yZV90eXBlMiwgc3RvcmVfdHlwZTMsIAorYzUsIGM2LCBj NywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNywgYzE4LCBj MTksIGMyMCwgYzIxLCBjMjIsIGMyMywgYzI0LCBjMjUsIAorYzI2LCBjMjcsIGMyOCwgYzI5LCBj MzAsIGMzMSwgaXRlbV9pZCk7CitDUkVBVEUgSU5ERVggaWR4X2JyaW5fMiBPTiBnbG9iYWxfaW52 ZW50b3J5XzIgVVNJTkcgYnJpbiAoaXRlbV9pZCk7CitWQUNVVU0gQU5BTFlaRSBnbG9iYWxfaW52 ZW50b3J5XzE7CitWQUNVVU0gQU5BTFlaRSBnbG9iYWxfaW52ZW50b3J5XzI7CistLSBTZXQgcGFy YW1ldGVycyB0byBlbmNvdXJhZ2UgcGFyYWxsZWwgcGxhbnMKK1NFVCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gNDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0g MDsKK1NFVCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gMDsKK1NFVCBwYXJhbGxlbF9z ZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK1NFVCBlbmFibGVf cGFyYWxsZWxfYXBwZW5kID0gb247CistLSBEaXNhYmxlIHNlcXVlbnRpYWwgc2NhbiB0byBmb3Jj ZSBpbmRleCB1c2FnZQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIHJhbmRvbV9wYWdl X2Nvc3QgPSAxLjA7CistLSBFbmFibGUgYml0bWFwIHNjYW4gZm9yIEJSSU4gaW5kZXgKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9uOworLS0gQ3JlYXRlIGEgd3JhcHBlciBmdW5jdGlvbiB0byBm aWx0ZXIgRVhQTEFJTiBBTkFMWVpFIG91dHB1dCBmb3Igc3RhYmlsaXR5LgorQ1JFQVRFIEZVTkNU SU9OIHBhcmFsbGVsX3NraXBfc2Nhbl9leHBsYWluX2ZpbHRlcih0ZXh0KSBSRVRVUk5TIFNFVE9G IHRleHQKK0xBTkdVQUdFIHBscGdzcWwgQVMKKyQkCitERUNMQVJFCisgICAgbG4gdGV4dDsKK0JF R0lOCisgICAgRk9SIGxuIElOIEVYRUNVVEUgJDEKKyAgICBMT09QCisgICAgICAgIGxuIDo9IHJl Z2V4cF9yZXBsYWNlKGxuLCAnXG1cZCsoXC5cZCspP1xNJywgJ04nLCAnZycpOworICAgICAgICBD T05USU5VRSBXSEVOIChsbiB+ICcgK0J1ZmZlcnM6IC4qJyk7CisgICAgICAgIENPTlRJTlVFIFdI RU4gKGxuIH4gJyArUGxhbm5pbmc6IC4qJyk7CisgICAgICAgIENPTlRJTlVFIFdIRU4gKGxuIH4g JyArUGxhbm5pbmcgVGltZTogLionKTsKKyAgICAgICAgQ09OVElOVUUgV0hFTiAobG4gfiAnICtF eGVjdXRpb24gVGltZTogLionKTsKKyAgICAgICAgQ09OVElOVUUgV0hFTiAobG4gfiAnICtIZWFw IEJsb2NrczogLionKTsKKyAgICAgICAgUkVUVVJOIE5FWFQgbG47CisgICAgRU5EIExPT1A7CitF TkQ7CiskJDsKKy0tIFJ1biBFWFBMQUlOIG9uIHRoZSB0ZXN0IHF1ZXJ5LgorU0VMRUNUIHBhcmFs bGVsX3NraXBfc2Nhbl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUICogRlJPTSBnbG9iYWxfaW52ZW50 b3J5XzEgdDEKK1dIRVJFIGl0ZW1faWQgSU4gKFRJTUVTVEFNUCBXSVRIIFRJTUUgWk9ORSAnJzIw MjYtMDEtMDEgMDY6MDM6NTcnJywgVElNRVNUQU1QIFdJVEggVElNRSBaT05FICcnMjAyNi0wMS0w MiAwNjoyMzoyOCcnKQorVU5JT04gQUxMCitTRUxFQ1QgKiBGUk9NIGdsb2JhbF9pbnZlbnRvcnlf MiB0MgorV0hFUkUgaXRlbV9pZCBJTiAoVElNRVNUQU1QIFdJVEggVElNRSBaT05FICcnMjAyNi0w MS0wMSAwNjowMzo1NycnLCBUSU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUgJycyMDI2LTAxLTAyIDA2 OjIzOjI4JycpCisnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXJhbGxlbF9za2lwX3NjYW5fZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdh dGhlciAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQorICAgV29ya2VycyBQbGFubmVkOiBOCisgICBX b3JrZXJzIExhdW5jaGVkOiBOCisgICAtPiAgUGFyYWxsZWwgQXBwZW5kIChhY3R1YWwgcm93cz1O IGxvb3BzPU4pCisgICAgICAgICAtPiAgUGFyYWxsZWwgQml0bWFwIEhlYXAgU2NhbiBvbiBnbG9i YWxfaW52ZW50b3J5XzIgdDIgKGFjdHVhbCByb3dzPU4gbG9vcHM9TikKKyAgICAgICAgICAgICAg IFJlY2hlY2sgQ29uZDogKGl0ZW1faWQgPSBBTlkgKCd7IlRodSBKYW4gTiBOOk46TiBOIFBTVCIs IkZyaSBKYW4gTiBOOk46TiBOIFBTVCJ9Jzo6dGltZXN0YW1wIHdpdGggdGltZSB6b25lW10pKQor ICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEluZGV4IFJlY2hlY2s6IE4KKyAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfYnJpbl8yIChhY3R1YWwgcm93cz1O IGxvb3BzPU4pCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaXRlbV9pZCA9IEFO WSAoJ3siVGh1IEphbiBOIE46TjpOIE4gUFNUIiwiRnJpIEphbiBOIE46TjpOIE4gUFNUIn0nOjp0 aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmVbXSkpCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBT ZWFyY2hlczogTgorICAgICAgICAgLT4gIFBhcmFsbGVsIEluZGV4IFNjYW4gdXNpbmcgaWR4X211 bHRpX3NraXBfMSBvbiBnbG9iYWxfaW52ZW50b3J5XzEgdDEgKGFjdHVhbCByb3dzPU4gbG9vcHM9 TikKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpdGVtX2lkID0gQU5ZICgneyJUaHUgSmFu IE4gTjpOOk4gTiBQU1QiLCJGcmkgSmFuIE4gTjpOOk4gTiBQU1QifSc6OnRpbWVzdGFtcCB3aXRo IHRpbWUgem9uZVtdKSkKKyAgICAgICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiBOCisgUGxhbm5p bmc6CisoMTQgcm93cykKKworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsK K1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtaW5fcGFyYWxsZWxf aW5kZXhfc2Nhbl9zaXplOworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBlbmFibGVfcGFyYWxsZWxfYXBwZW5kOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitSRVNFVCByYW5kb21fcGFnZV9jb3N0OworUkVTRVQgZW5hYmxlX2JpdG1h cHNjYW47CitEUk9QIFRBQkxFIGdsb2JhbF9pbnZlbnRvcnlfMTsKK0RST1AgVEFCTEUgZ2xvYmFs X2ludmVudG9yeV8yOworRFJPUCBGVU5DVElPTiBwYXJhbGxlbF9za2lwX3NjYW5fZXhwbGFpbl9m aWx0ZXIodGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3RfcGFy YWxsZWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0X3BhcmFsbGVsLnNxbApvbGQg bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDcxYTc1YmM4NmVhLi5iZDU3ZTNkZjc2 ZgotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3RfcGFyYWxsZWwuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9wYXJhbGxlbC5zcWwKQEAgLTU4OCwzICs1ODgsMTI0 IEBAIHNlbGVjdCBwYXJhbGxlbF93b3JrZXJzX3RvX2xhdW5jaCA+IDoncGFyYWxsZWxfd29ya2Vy c190b19sYXVuY2hfYmVmb3JlJyAgQVMgd3JrCiAgICAgICAgcGFyYWxsZWxfd29ya2Vyc19sYXVu Y2hlZCA+IDoncGFyYWxsZWxfd29ya2Vyc19sYXVuY2hlZF9iZWZvcmUnIEFTIHdya19sYXVuY2hl ZAogICBmcm9tIHBnX3N0YXRfZGF0YWJhc2UKICAgd2hlcmUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0 YWJhc2UoKTsKKworLS0KKy0tIFBhcmFsbGVsIEluZGV4IFNraXAgU2NhbiBNZW1vcnkgQ29ycnVw dGlvbiBUZXN0CistLQorLS0gVGhlIGZvbGxvd2luZyB0ZXN0IGFpbXMgdG8gZXhwb3NlIGEgbWVt b3J5IGNvcnJ1cHRpb24gaXNzdWUgaW4gcGFyYWxsZWwgaW5kZXgKKy0tIHNraXAgc2NhbnMgYnkg dXNpbmcgYSB3aWRlIGluZGV4ICgzMiBjb2x1bW5zKSBhbmQgc3BlY2lmaWMgcXVlcnkgcGF0dGVy bnMKKy0tIHRoYXQgdHJpZ2dlciBza2lwIHNjYW4gbG9naWMgaW4gYSBwYXJhbGxlbCBleGVjdXRp b24gZW52aXJvbm1lbnQuCitDUkVBVEUgVEFCTEUgZ2xvYmFsX2ludmVudG9yeV8xICgKKyAgICBy ZWdpb25faWQgcmVhbCwKKyAgICBzdG9yZV90eXBlMSBiaWdpbnQsCisgICAgc3RvcmVfdHlwZTIg YmlnaW50LAorICAgIHN0b3JlX3R5cGUzIGJpZ2ludCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcg aW50LCBjOCBpbnQsIGM5IGludCwKKyAgICBjMTAgaW50LCBjMTEgaW50LCBjMTIgaW50LCBjMTMg aW50LCBjMTQgaW50LCBjMTUgaW50LCBjMTYgaW50LCBjMTcgaW50LCBjMTggaW50LCBjMTkgaW50 LAorICAgIGMyMCBpbnQsIGMyMSBpbnQsIGMyMiBpbnQsIGMyMyBpbnQsIGMyNCBpbnQsIGMyNSBp bnQsIGMyNiBpbnQsIGMyNyBpbnQsIGMyOCBpbnQsIGMyOSBpbnQsCisgICAgYzMwIGludCwgYzMx IGludCwKKyAgICBpdGVtX2lkIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSwKKyAgICBwYXlsb2Fk IHRleHQKKyk7CisKK0NSRUFURSBUQUJMRSBnbG9iYWxfaW52ZW50b3J5XzIgKAorICAgIHJlZ2lv bl9pZCByZWFsLAorICAgIHN0b3JlX3R5cGUxIGJpZ2ludCwKKyAgICBzdG9yZV90eXBlMiBiaWdp bnQsCisgICAgc3RvcmVfdHlwZTMgYmlnaW50LAorICAgIGM1IGludCwgYzYgaW50LCBjNyBpbnQs IGM4IGludCwgYzkgaW50LAorICAgIGMxMCBpbnQsIGMxMSBpbnQsIGMxMiBpbnQsIGMxMyBpbnQs IGMxNCBpbnQsIGMxNSBpbnQsIGMxNiBpbnQsIGMxNyBpbnQsIGMxOCBpbnQsIGMxOSBpbnQsCisg ICAgYzIwIGludCwgYzIxIGludCwgYzIyIGludCwgYzIzIGludCwgYzI0IGludCwgYzI1IGludCwg YzI2IGludCwgYzI3IGludCwgYzI4IGludCwgYzI5IGludCwKKyAgICBjMzAgaW50LCBjMzEgaW50 LAorICAgIGl0ZW1faWQgdGltZXN0YW1wIHdpdGggdGltZSB6b25lLAorICAgIHBheWxvYWQgdGV4 dAorKTsKKworSU5TRVJUIElOVE8gZ2xvYmFsX2ludmVudG9yeV8xIChyZWdpb25faWQsIHN0b3Jl X3R5cGUxLCBzdG9yZV90eXBlMiwgc3RvcmVfdHlwZTMsIGM1LCBjNiwgYzcsIAorYzgsIGM5LCBj MTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNywgYzE4LCBjMTksIGMyMCwgYzIx LCBjMjIsIGMyMywgYzI0LCBjMjUsIGMyNiwgCitjMjcsIGMyOCwgYzI5LCBjMzAsIGMzMSwgaXRl bV9pZCwgcGF5bG9hZCkKKworU0VMRUNUCisgICAgKHMgKiAxLjEpOjpyZWFsLAorICAgIChkMSAq IDEwMCk6OmJpZ2ludCwKKyAgICAoZDIgKiAxMDAwKTo6YmlnaW50LAorICAgIChkMyAqIC04MTk4 NTUyOTIxNjQ4Njg5Nik6OmJpZ2ludCwKKyAgICBzLCBzLCBzLCBzLCBzLAorICAgIHMsIHMsIHMs IHMsIHMsIHMsIHMsIHMsIHMsIHMsCisgICAgcywgcywgcywgcywgcywgcywgcywgcywgcywgcywK KyAgICBzLCBzLAorICAgIHQsCisgICAgcmFuZG9tKCk6OnRleHQKK0ZST00KKyAgICBnZW5lcmF0 ZV9zZXJpZXMoMSwgNSkgcywKKyAgICBnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgZDEsCisgICAgZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQpIGQyLAorICAgIGdlbmVyYXRlX3NlcmllcygxLCAxKSBkMywKKyAg ICBnZW5lcmF0ZV9zZXJpZXMoJzIwMjYtMDEtMDEnOjp0aW1lc3RhbXB0eiwgJzIwMjYtMDEtMDUn Ojp0aW1lc3RhbXB0eiwgJzUgbWludXRlJzo6aW50ZXJ2YWwpIHQ7CisKK0lOU0VSVCBJTlRPIGds b2JhbF9pbnZlbnRvcnlfMiBTRUxFQ1QgKiBGUk9NIGdsb2JhbF9pbnZlbnRvcnlfMTsKKworLS0g Q3JlYXRlIGEgMzItY29sdW1uIEItdHJlZSBpbmRleCBvbiB0YWJsZSAxIHRvIGVuY291cmFnZSBz a2lwIHNjYW4KK0NSRUFURSBJTkRFWCBpZHhfbXVsdGlfc2tpcF8xIE9OIGdsb2JhbF9pbnZlbnRv cnlfMSAocmVnaW9uX2lkLCBzdG9yZV90eXBlMSwgc3RvcmVfdHlwZTIsIHN0b3JlX3R5cGUzLCAK K2M1LCBjNiwgYzcsIGM4LCBjOSwgYzEwLCBjMTEsIGMxMiwgYzEzLCBjMTQsIGMxNSwgYzE2LCBj MTcsIGMxOCwgYzE5LCBjMjAsIGMyMSwgYzIyLCBjMjMsIGMyNCwgYzI1LCAKK2MyNiwgYzI3LCBj MjgsIGMyOSwgYzMwLCBjMzEsIGl0ZW1faWQpOworCitDUkVBVEUgSU5ERVggaWR4X2JyaW5fMiBP TiBnbG9iYWxfaW52ZW50b3J5XzIgVVNJTkcgYnJpbiAoaXRlbV9pZCk7CitWQUNVVU0gQU5BTFla RSBnbG9iYWxfaW52ZW50b3J5XzE7CitWQUNVVU0gQU5BTFlaRSBnbG9iYWxfaW52ZW50b3J5XzI7 CisKKy0tIFNldCBwYXJhbWV0ZXJzIHRvIGVuY291cmFnZSBwYXJhbGxlbCBwbGFucworU0VUIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSA0OworU0VUIG1pbl9wYXJhbGxlbF90YWJs ZV9zY2FuX3NpemUgPSAwOworU0VUIG1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSAwOwor U0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw OworU0VUIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQgPSBvbjsKKy0tIERpc2FibGUgc2VxdWVudGlh bCBzY2FuIHRvIGZvcmNlIGluZGV4IHVzYWdlCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitT RVQgcmFuZG9tX3BhZ2VfY29zdCA9IDEuMDsKKy0tIEVuYWJsZSBiaXRtYXAgc2NhbiBmb3IgQlJJ TiBpbmRleAorU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb247CisKKy0tIENyZWF0ZSBhIHdyYXBw ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIEVYUExBSU4gQU5BTFlaRSBvdXRwdXQgZm9yIHN0YWJpbGl0 eS4KK0NSRUFURSBGVU5DVElPTiBwYXJhbGxlbF9za2lwX3NjYW5fZXhwbGFpbl9maWx0ZXIodGV4 dCkgUkVUVVJOUyBTRVRPRiB0ZXh0CitMQU5HVUFHRSBwbHBnc3FsIEFTCiskJAorREVDTEFSRQor ICAgIGxuIHRleHQ7CitCRUdJTgorICAgIEZPUiBsbiBJTiBFWEVDVVRFICQxCisgICAgTE9PUAor ICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJ1xtXGQrKFwuXGQrKT9cTScsICdOJywg J2cnKTsKKyAgICAgICAgQ09OVElOVUUgV0hFTiAobG4gfiAnICtCdWZmZXJzOiAuKicpOworICAg ICAgICBDT05USU5VRSBXSEVOIChsbiB+ICcgK1BsYW5uaW5nOiAuKicpOworICAgICAgICBDT05U SU5VRSBXSEVOIChsbiB+ICcgK1BsYW5uaW5nIFRpbWU6IC4qJyk7CisgICAgICAgIENPTlRJTlVF IFdIRU4gKGxuIH4gJyArRXhlY3V0aW9uIFRpbWU6IC4qJyk7CisgICAgICAgIENPTlRJTlVFIFdI RU4gKGxuIH4gJyArSGVhcCBCbG9ja3M6IC4qJyk7CisgICAgICAgIFJFVFVSTiBORVhUIGxuOwor ICAgIEVORCBMT09QOworRU5EOworJCQ7CisKKy0tIFJ1biBFWFBMQUlOIG9uIHRoZSB0ZXN0IHF1 ZXJ5LgorU0VMRUNUIHBhcmFsbGVsX3NraXBfc2Nhbl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUICog RlJPTSBnbG9iYWxfaW52ZW50b3J5XzEgdDEKK1dIRVJFIGl0ZW1faWQgSU4gKFRJTUVTVEFNUCBX SVRIIFRJTUUgWk9ORSAnJzIwMjYtMDEtMDEgMDY6MDM6NTcnJywgVElNRVNUQU1QIFdJVEggVElN RSBaT05FICcnMjAyNi0wMS0wMiAwNjoyMzoyOCcnKQorVU5JT04gQUxMCitTRUxFQ1QgKiBGUk9N IGdsb2JhbF9pbnZlbnRvcnlfMiB0MgorV0hFUkUgaXRlbV9pZCBJTiAoVElNRVNUQU1QIFdJVEgg VElNRSBaT05FICcnMjAyNi0wMS0wMSAwNjowMzo1NycnLCBUSU1FU1RBTVAgV0lUSCBUSU1FIFpP TkUgJycyMDI2LTAxLTAyIDA2OjIzOjI4JycpCisnKTsKKworUkVTRVQgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitS RVNFVCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOworUkVTRVQgcGFyYWxsZWxfc2V0dXBf Y29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBlbmFibGVfcGFyYWxsZWxf YXBwZW5kOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCByYW5kb21fcGFnZV9jb3N0Owor UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIGdsb2JhbF9pbnZlbnRvcnlfMTsK K0RST1AgVEFCTEUgZ2xvYmFsX2ludmVudG9yeV8yOworRFJPUCBGVU5DVElPTiBwYXJhbGxlbF9z a2lwX3NjYW5fZXhwbGFpbl9maWx0ZXIodGV4dCk7Ci0tIAoyLjU0LjAuNTQ1Lmc2NTM5NTI0Y2Ey LWdvb2cKCg== --000000000000f27f2d065093d117--