Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eA5WC-00018O-K4 for pgsql-performance@arkaria.postgresql.org; Thu, 02 Nov 2017 02:46:08 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1eA5WC-0006rf-45 for pgsql-performance@arkaria.postgresql.org; Thu, 02 Nov 2017 02:46:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eA5UO-0002dO-IJ for pgsql-performance@postgresql.org; Thu, 02 Nov 2017 02:44:16 +0000 Received: from mail-by2nam01on0060.outbound.protection.outlook.com ([104.47.34.60] helo=NAM01-BY2-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eA5UJ-0002wk-Bf for pgsql-performance@postgresql.org; Thu, 02 Nov 2017 02:44:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NETORG2528281.onmicrosoft.com; s=selector1-laurenthasson-com01i; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1/VpxfmhsNogN1s1yFPGcgYOpcmNCxZhdnErZHvRYUs=; b=hyjh3g/A+gZFp3R0ygoXyrAQ+0J57By/4mLDhX09+R/CDUwDv2lZ9K5a/ISVon5D8DODedor8ZDK6V9XHwrsrEr+KHJD3sIs2HUTfbidcLCEdz9KBuQMR81XdP5abhPAxyNdq/5XtU1o7/bkUQ40G12WDm7QuDAt7khmkeDnJF0= Received: from BN6PR15MB1426.namprd15.prod.outlook.com (10.172.150.146) by BN6PR15MB1426.namprd15.prod.outlook.com (10.172.150.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.197.13; Thu, 2 Nov 2017 02:44:06 +0000 Received: from BN6PR15MB1426.namprd15.prod.outlook.com ([10.172.150.146]) by BN6PR15MB1426.namprd15.prod.outlook.com ([10.172.150.146]) with mapi id 15.20.0197.013; Thu, 2 Nov 2017 02:44:06 +0000 From: "ldh@laurent-hasson.com" To: Gunther , "pgsql-performance@postgresql.org" Subject: Re: OLAP/reporting queries fall into nested loops over seq scans or other horrible planner choices Thread-Topic: [PERFORM] OLAP/reporting queries fall into nested loops over seq scans or other horrible planner choices Thread-Index: AQHTU3HHUyHp925zcEO9TM9dCqmBD6MAYaFg Date: Thu, 2 Nov 2017 02:44:06 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=ldh@laurent-hasson.com; x-originating-ip: [98.15.75.184] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BN6PR15MB1426;6:TMhTCm/rYj3qr2fwJ+3MStk7yJUfur8/kJqypx6oTZweLDCm6a10cQeeMLp2E+UQIdfGORF0joL2wI+Xgj084eOXlQNWBFn66EJeU8GypLNXfzcRq4nSIQz7BgCPxxGdE/fOqth0aTcYJFuoSl/Nnh/Pdw2+SUtN0MlOah0HfC7UG50aGZw6MmpkKXWUQhwDwm3AlS8OYnNMoateJt+HnlqjG4mBErmSI2apL4kiGmvkUwGAHUYF9aKUpzRjiBZW9r6+RMjyNYEDNXp3AgjndhhfWksCKK73kDR1KiJsuN/ugTd7W5CN+2J+9koYTKsXM2yVEKT1fUmwaB023eEVpHXXrqrWdR2kJkN0MYzyIN4=;5:BwvqheBntu6kwxlXe/2wmTzsmxh5gVT9zKfHoDukVBvWHqj8QnhOzdMhPIMap37AQWW+TWWq/QMZb7bn1KNgMzqRgf/fhSSLnU/Dq+rILAcEXGhcP/XcfmVA5gn8NKHs6Bs6sq1/iskyh9ozKNmqVZl7j0lBBYxRzRxeRBCJ8ag=;24:We5wKMRwaKyJkp0REkJ6T2xpueGAYyvX//QJsX0H0+ONmnu0ltuKuxs0fVTr1zYIDgF8xBXLFsHZqRIupzP0RpZWF5ckh0bdX/FFD5j01x0=;7:YPEFvQLTUgAeA0eyeL8/KoLi0cDpd1m8a7rgYkTo5sHPXDkLd6buHYBkPWTB0De/e1N/nwqoJIwiP9KFHTKQbl/cqJGiiKPPD7fKf0dhCmoCnK3iI64GyWoF01LKfjg2jTE/DQ5pNYzpC2vkO3xeuBfg5YMv1LOZDnDnRq1+Zxj8rhtDCaqy4j6i5U68fFHHdtwzBjBoI9j41DjoHcN0OxTSS0rxsLx8huw6bMmcnuLPMSTpTkNQPNKuIInFc+2O x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: debf1865-7640-42eb-ee1c-08d5219b962c x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4603075)(2017052603199);SRVR:BN6PR15MB1426; x-ms-traffictypediagnostic: BN6PR15MB1426: x-exchange-antispam-report-test: UriScan:(20558992708506)(101568727142576)(211171220733660); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3231020)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6041248)(201703131423075)(201703061421075)(20161123560025)(20161123564025)(20161123558100)(20161123555025)(2016111802025)(20161123562025)(6072148)(6043046)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN6PR15MB1426;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN6PR15MB1426; x-forefront-prvs: 047999FF16 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(189002)(199003)(13464003)(86362001)(2900100001)(86582002)(508600001)(76176999)(50986999)(54356999)(7696004)(966005)(5660300001)(2950100002)(68736007)(53936002)(105586002)(106356001)(102836003)(6116002)(3846002)(6246003)(25786009)(99286004)(189998001)(2906002)(6506006)(77096006)(229853002)(3280700002)(97736004)(3660700001)(6436002)(1720100001)(8936002)(14454004)(2501003)(7736002)(101416001)(110136005)(81166006)(81156014)(8676002)(305945005)(55016002)(74316002)(33656002)(9686003)(6306002)(66066001)(53546010);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR15MB1426;H:BN6PR15MB1426.namprd15.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: laurent-hasson.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: laurent-hasson.com X-MS-Exchange-CrossTenant-Network-Message-Id: debf1865-7640-42eb-ee1c-08d5219b962c X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2017 02:44:06.3936 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7f9c0a0d-79fd-4329-b129-754c4501a177 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR15MB1426 List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IHBnc3Fs LXBlcmZvcm1hbmNlLW93bmVyQHBvc3RncmVzcWwub3JnIFttYWlsdG86cGdz cWwtcGVyZm9ybWFuY2UtDQo+IG93bmVyQHBvc3RncmVzcWwub3JnXSBPbiBC ZWhhbGYgT2YgR3VudGhlcg0KPiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVy IDAxLCAyMDE3IDIwOjI5DQo+IFRvOiBwZ3NxbC1wZXJmb3JtYW5jZUBwb3N0 Z3Jlc3FsLm9yZw0KPiBTdWJqZWN0OiBbUEVSRk9STV0gT0xBUC9yZXBvcnRp bmcgcXVlcmllcyBmYWxsIGludG8gbmVzdGVkIGxvb3BzIG92ZXIgc2VxDQo+ IHNjYW5zIG9yIG90aGVyIGhvcnJpYmxlIHBsYW5uZXIgY2hvaWNlcw0KPiAN Cj4gSGksIHRoaXMgaXMgR3VudGhlciwgaGF2ZSBiZWVuIHdpdGggUGdTUUwg Zm9yIGRlY2FkZXMsIG9uIGFuIG9mZiB0aGlzIGxpc3QuDQo+IEhhdmVuJ3Qg YmVlbiBvbiBmb3IgYSBsb25nIHRpbWUgbWFraW5nIG15IHdheSBqdXN0IGZp bmUuIEJ1dCB0aGVyZSBpcyBvbmUgdGhpbmcNCj4gdGhhdCBrZWVwcyBib3Ro ZXJpbmcgbWUgYm90aCB3aXRoIE9yYWNsZSBhbmQgUGdTUUwuIEFuZCB0aGF0 IGlzIHRoZQ0KPiBwcmVmZXJlbmNlIGZvciBOZXN0ZWQgTG9vcHMuDQo+IA0K PiBPdmVyIHRoZSB5ZWFycyB0aGUgYXJjaGl2ZXMgaGF2ZSBxdWVzdGlvbnMg YWJvdXQgTmVzdGVkIExvb3BzIGJlaW5nIGNob3Nlbg0KPiBvdmVyIEhhc2gg Sm9pbnMuIEJ1dCB0aGUgcmVzcG9uc2VzIHNlZW0gdG9vIHNwZWNpZmljIHRv IHRoZSBwZW9wbGUncyBxdWVyaWVzLA0KPiBhc2sgbWFueSBxdWVzdGlvbnMs IG1ha2UgdGhlbSBwb3N0IHRoZSBxdWVyeSBwbGFucywgYW5kIG9mdGVuIGVu ZCB1cA0KPiBmcnVzdHJhdGluZyB3aXRoIHN1Z2dlc3Rpb25zIHRvIGNoYW5n ZSB0aGUgZGF0YSBtb2RlbCBvciB0byBhZGQgYW4gaW5kZXggYW5kDQo+IHN0 dWZmIGxpa2UgdGhhdC4NCj4gDQo+IE9uZSBzaG91bGQgbm90IGhhdmUgdG8g Z28gaW50byB0aGF0IHBlcnNvbmFsIGRldGFpbC4NCj4gDQo+IFRoZXJlIGFy ZSBzb21lIGNsZWFyIGJvdW5kYXJpZXMgdGhhdCBhIHNtYXJ0IGRhdGFiYXNl IHNob3VsZCBqdXN0IG5ldmVyIGNyb3NzLg0KPiANCj4gRXNwZWNpYWxseSB3 aXRoIE9MQVAgcXVlcmllcy4gVGhpbmsgYSBkYXRhYmFzZSB0aGF0IGlzIGZp bmUgZm9yIE9MVFAsIGhhcw0KPiBpbmRleGVzIGFuZCB0aGUgaW5kZXggYmFz ZWQgYWNjZXNzZXMgZm9yIGEgZmV3IHJlY29yZHMgam9pbmVkIHdpdGggYSBk b3plbg0KPiBvdGhlciB0YWJsZXMgYWxsIHdpdGggaW5kZXhlcyBpcyBubyBw cm9ibGVtLiBJZiB5b3UgZmFsbCBpbnRvIGEgU2VxIFNjYW4gc2NlbmFyaW8N Cj4gb3IgdW53YW50ZWQgSGFzaCBKb2luLCB5b3UgdXN1YWxseSBmb3Jnb3Qg dG8gYWRkIGFuIGluZGV4IG9yIGZvcmdvdCB0byBwdXQgaW5kZXgNCj4gY29s dW1ucyBpbnRvIHlvdXIgam9pbiBvciBvdGhlciBjb25zdHJhaW50cy4gU3Vj aCBhcmUgbm92aWNlIHF1ZXN0aW9ucyBhbmQgd2UNCj4gc2hvdWxkIGJlIGJl eW9uZCB0aGF0Lg0KPiANCj4gQnV0IHRoZSBpc3N1ZSBpcyBidWxrIHNlYXJj aGVzLCByZXBvcnRzLCBhbmQgYW55IGFuYWx5dGljIHF1ZXJpZXMgc2NlbmFy aW9zLiBJbg0KPiB0aG9zZSBxdWVyaWVzIE5lc3RlZCBMb29wcyBhcmUgYWxt b3N0IGFsd2F5cyBhIGJhZCBjaG9pY2UsIGV2ZW4gaWYgdGhlcmUgaXMgYW4N Cj4gaW5kZXguIEluIG92ZXIgMjAgeWVhcnMgb2Ygd29ya2luZyB3aXRoIFJE Qk1zIHRoaXMgaGFzIGJlZW4gbXkgdW5mYWlsaW5nDQo+IGhldXJpc3RpY3Mu IEEgcmVwb3J0IHJ1bnMgc2xvdz8gTG9vayBhdCBwbGFuLCBpcyB0aGVyZSBh IE5lc3RlZCBMb29wPyBZZXM/DQo+IFNxdWFzaCBpdCEgQW5kIHRoZSByZXBv cnQgcnVucyAxMHggZmFzdGVyIGluc3RhbnRhbmVvdXNseS4NCj4gDQo+IFNv LCBhbGwgdGhlIG1vcmUgdHJvdWJsZXNvbWUgaXMgaWYgYW55IGRhdGFiYXNl IHN5c3RlbSAoaGVyZSBQZ1NRTCkgd291bGQNCj4gZXZlciBmYWxsIGludG8g YSBOZXN0ZWQgTG9vcCB0cmFwIHdpdGggQ1BVIHNwaW5uaW5nIGF0IDEwMCUg Zm9yIHNldmVyYWwNCj4gbWludXRlcywgd2l0aCBhIE5lc3RlZCBMb29wIGJv ZHkgb2YgYW55dGhpbmcgZnJvbSBhIFNlcSBTY2FuIG9yIHdvcnNlIHdpdGgg YQ0KPiBjYXJkaW5hbGl0eSBvZiBhbnl0aGluZyBvdmVyIDEwIG9yIDEwMC4g TmVzdGVkIExvb3BzIG9mIE5lc3RlZCBMb29wcyBvciBOZXN0ZWQNCj4gTG9v cHMgb2Ygb3RoZXIgY29tcGxleCBxdWVyeSBwbGFuIGZyYWdtZW50cyBzaG91 bGQgYmUgYSBuby1ubyBhbmQgY2hvc2VuDQo+IG9ubHkgYXMgYW4gYWJzb2x1 dGUgbGFzdCByZXNvcnQgd2hlbiB0aGUgc3lzdGVtIGNhbm5vdCBmaW5kIGVu b3VnaCBtZW1vcnksDQo+IGV2ZW4gdGhlbiBkaXNrIGJhc2VkIG1lcmdlIHNv cnQgc2hvdWxkIGJlIGJldHRlciwgaS5lLiwgTmVzdGVkIExvb3BzIHNob3Vs ZA0KPiBuZXZlciBiZSBjaG9zZW4uIFBlcmlvZC4NCj4gDQo+IElmIHlvdSBj YW4gc2V0IGVuYWJsZV9uZXN0bG9vcCBvZmYgYW5kIHRoZSBIYXNoIEpvaW4g aXMgY2hvc2VuIGFuZCB0aGUNCj4gcGVyZm9ybWFuY2UgZ29lcyBmcm9tIDEg aG91ciBvZiAxMDAlIENQVSB0byAxMCBzZWNvbmRzIGNvbXBsZXRpb24gdGlt ZSwNCj4gdGhlbiBzb21ldGhpbmcgaXMgZGVhZGx5IHdyb25nLiBBbmQgaXQg ZG9lc24ndCBtYXR0ZXIgdG8gbWUgaWYgSSBzaG91bGQgaGF2ZQ0KPiByZS13 cml0dGVuIG15IHF1ZXJ5IGluIHNvbWUgZnVubnkgd2F5cyBvciB0d2Vha2Vk IG15IGRhdGEgbW9kZWwsIHRoZXNlIGFyZQ0KPiBhbGwgdW5hY2NlcHRhYmxl IG9wdGlvbnMgd2hlbiB5b3UgaGF2ZSBhIGNvbXBsZXggc3lzdGVtIHdpdGgg aHlicmlkDQo+IE9MVFAvT0xBUCB1c2VzLiBEb24ndCB0ZWxsIG1lIHRvIGRl LW5vcm1hbGl6ZS4gSSBrbm93IEkgY2FuIG1hdGVyaWFsaXplIGpvaW5zDQo+ IGluIHRhYmxlcyB3aGljaCBJIGNhbiB0aGVuIHVzZSBhZ2FpbiBpbiBqb2lu cyB0byBzYXZlIHRpbWUuIEJ1dCB0aGF0IGlzIG5vdCB0aGUNCj4gcG9pbnQg aGVyZS4NCj4gDQo+IEFuZCBJIGRvbid0IHRoaW5rIHR3ZWFraW5nIG9wdGlt aXplciBzdGF0aXN0aWNzIGlzIHRoZSBzb2x1dGlvbiBlaXRoZXIuDQo+IEJl Y2F1c2Ugb3B0aW1pemVyIHN0YXRpc3RpY3MgcXVpY2tseSBiZWNvbWUgd29y dGhsZXNzIHdoZW4geW91ciBjcml0ZXJpYSBnZXQNCj4gbW9yZSBjb21wbGV4 Lg0KPiANCj4gVGhlIHBvaW50IGlzIHRoYXQgTmVzdGVkIExvb3BzIHNob3Vs ZCBuZXZlciBiZSBjaG9zZW4gZXhjZXB0IGluIGluZGV4IGxvb2t1cA0KPiBz aXR1YXRpb25zIG9yIG1heSBiZSBtZW1vcnkgY29uc3RyYWludHMuDQo+IA0K PiBIb3cgY2FuIEkgcHJldmVudCBpdCBvbiBhIHF1ZXJ5IGJ5IHF1ZXJ5IHNj b3BlPyBJIGNhbm5vdCBzZXQgZW5hYmxlX25lc3Rsb29wID0NCj4gb2ZmIGJl Y2F1c2Ugb25lIHF1ZXJ5IHdpbGwgYmUgZm9yIGEgZnVsbCByZXBvcnQsIHdp bGUgYW5vdGhlciBvbmUgbWlnaHQgaGF2ZQ0KPiBpbmRleGVkIGNvbnN0cmFp bnRzIHJ1bm5pbmcgaW4gdGhlIHNhbWUgc2Vzc2lvbiwgYW5kIEkgZG9uJ3Qg d2FudCB0byBtYW5hZ2UNCj4gc2lkZSBlZmZlY3RzIGFuZCByZW1lbWJlciB0 byBzZXQgZW5hYmxlX25lc3Rsb29wIHBhcmFtZXRlciBvbiBhbmQgb2ZmLg0K PiANCj4gVGhlcmUgbXVzdCBiZSBhIHdheSB0byB0ZWxsIHRoZSBvcHRpbWl6 ZXIgdG8gcGVuYWxpemUgbmVzdGVkIGxvb3BzIHRvIG1ha2UNCj4gdGhlbSB0 aGUgbGFzdCByZXNvcnQuIEluIE9yYWNsZSB0aGVyZSBhcmUgdGhvc2UgaW5m YW1vdXMgaGludHMsIGJ1dCB0aGV5IGRvbid0DQo+IGFsd2F5cyB3b3JrIGVp dGhlciAob3IgaXQgaXMgZWFzeSB0byBtYWtlIG1pc3Rha2VzIHRoYXQgeW91 IGdldCBubyBmZWVkYmFjaw0KPiBhYm91dCkuDQo+IA0KPiBJcyB0aGVyZSBh bnkgY2hhbmNlIFBnU1FMIGNhbiBnZXQgc29tZXRoaW5nIGxpa2UgYSBoaW50 IGZlYXR1cmU/IE9yIGlzIHRoZXJlIGENCj4gd2F5IHRvIHVzZSBwb3N0Z3Jl c3FsLmNvbmYgdG8gcGVuYWxpemUgbmVzdGVkIGxvb3BzIHNvIHRoYXQgdGhl eSB3b3VsZCBvbmx5IGV2ZXINCj4gYmUgY2hvc2VuIGluIHRoZSBtb3N0IHN0 cmFpZ2h0LWZvcndhcmQgc2l0dWF0aW9ucyBhcyB3aXRoIHF1ZXJ5IHBhcmFt ZXRlcnMNCj4gdGhhdCBhcmUgaW5kZXhlZD8gSSBrbm93IEkgbmVlZCB0byBo YXZlIHN1ZmZpY2llbnQgd29ya19tZW0sIGJ1dCBpZiB5b3UgY2FuIHNldA0K PiBlbmFibGVfbmVzdGxvb3AgPSBvZmYgYW5kIHlvdSBnZXQgdGhlIGRlc2ly ZWQgSGFzaCBKb2luLCB0aGVyZSBpcyBvYnZpb3VzbHkNCj4gc3VmZmljaWVu dCB3b3JrX21lbSwgc28gdGhhdCBpc24ndCB0aGUgYW5zd2VyIGVpdGhlci4N Cj4gDQo+IFRoYW5rcyBmb3IgbGlzdGVuaW5nIHRvIG15IHJhbnQuDQo+IA0K PiByZWdhcmRzLA0KPiAtR3VudGhlcg0KPiANCj4gDQo+IA0KPiAtLQ0KPiBT ZW50IHZpYSBwZ3NxbC1wZXJmb3JtYW5jZSBtYWlsaW5nIGxpc3QgKHBnc3Fs LXBlcmZvcm1hbmNlQHBvc3RncmVzcWwub3JnKQ0KPiBUbyBtYWtlIGNoYW5n ZXMgdG8geW91ciBzdWJzY3JpcHRpb246DQo+IGh0dHA6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWFpbHByZWYvcGdzcWwtcGVyZm9ybWFuY2UNCg0KIFtMYXVy ZW50IEhhc3Nvbl0gDQpIZWxsbyBHdW50aGVyLA0KDQpKdXN0IGFkZGluZyB0 byB5b3VyIHZvaWNlLiBJIHJlY2VudGx5IGV4cGVyaWVuY2VkIHRoZSBzYW1l IGlzc3VlIHdpdGggYSBjb21wbGV4IG11bHRpLXRhYmxlIHZpZXcsIGluY2x1 ZGluZyBwaXZvdHMsIGFuZCB3YXMgc3VycHJpc2VkIHRvIHNlZSBhbGwgdGhl IG5lc3RlZCBsb29wcyBldmVyeXdoZXJlIGluIHNwaXRlIG9mIGluZGljZXMg YmVpbmcgYXZhaWxhYmxlLiBJIHNwZW50IGEgbG90IG9mIHRpbWUgb3B0aW1p emluZyB0aGUgcXVlcnkgYW5kIHdlbnQgZnJvbSBhYm91dCAxaCB0byBhYm91 dCAzbW4sIGJ1dCBwZW5hbGl6aW5nIG5lc3RlZCBsb29wcyBpbiBmYXZvciBv ZiBvdGhlciAiam9pbmluZyIgdGVjaG5pcXVlcyBzZWVtIHRvIG1ha2Ugc2Vu c2UgYXMgYSBzdHJhdGVneS4gRWl0aGVyIHRoYXQsIG9yIHRoZXJlIGlzIHNv bWV0aGluZyBJIHJlYWxseSBkb24ndCB1bmRlcnN0YW5kIGhlcmUgZWl0aGVy IGFuZCB3b3VsZCBsb3ZlIHRvIGJlIGVkdWNhdGVkIDopDQoNCkxhdXJlbnQu DQoKLS0gClNlbnQgdmlhIHBnc3FsLXBlcmZvcm1hbmNlIG1haWxpbmcgbGlz dCAocGdzcWwtcGVyZm9ybWFuY2VAcG9zdGdyZXNxbC5vcmcpClRvIG1ha2Ug Y2hhbmdlcyB0byB5b3VyIHN1YnNjcmlwdGlvbjoKaHR0cDovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tYWlscHJlZi9wZ3NxbC1wZXJmb3JtYW5jZQo=