Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1icsJY-0002rH-9t for psycopg@arkaria.postgresql.org; Thu, 05 Dec 2019 14:41:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1icsJX-0008VZ-4Y for psycopg@arkaria.postgresql.org; Thu, 05 Dec 2019 14:41:07 +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_SHA1:256) (Exim 4.89) (envelope-from ) id 1icsJW-0008Rh-IF for psycopg@lists.postgresql.org; Thu, 05 Dec 2019 14:41:06 +0000 Received: from mail-eopbgr60059.outbound.protection.outlook.com ([40.107.6.59] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1icsJT-0007EB-EL for psycopg@lists.postgresql.org; Thu, 05 Dec 2019 14:41:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hg0rBBBu26Sotg0Q+526LhOH8a7XWAWt8rjG02Kf5Uac9RqkAo8p7IG6/VDTF0Aazyrhuxy4ec7Lsmiy9Z8BJEBzFYKuGMhJoh96pCCpa0A+U8i00S3v/c5r3hDMLUfhiw9y08a+hghWLDm7DSgUQX/KZ+JsujUhIT0zqax1eX2Awio1dn9r8Y5p+S2yVHDOMcndbOWLrI1fdiuBGkZ1UbLXeeMYFKDhy+q55PcDl1YIxeT7rw30UkSFKUkqZes1g66fXB6Jw4bH+enCc+FAuuohsVWJriAoehIQslookLZvsZhu8QSVW+gOFTSOeOw2EKJg8qRGqJxhsgb+MNZSuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=24kl7zRX9V/2HAiyJE7BtO1KyL3pCZwo3FMP+HGie1Q=; b=VDHMsvFDm4tZfTqZdoCpJHhGuEsVyb/jUayQfZCU4Fu7HLB6QLs+z9GLaurDjoQRfkQ8B97T/DAXm1Nc4fjPcZkVFj1H2RUskClEutvFuQT5XN4v45EUfRFCSapg9xnGhMh3EIQf5Uepw2OYJ/BqVAwmp7mFSZd3kpB1OAYJWk7rFQyYC34GWYqVuZWFvtmzTJa4SrOrnQ3pLRk1GkbZNyDUmpFNGA9ifWRvQk8fZdZfORKucnIBELxUEqKLDuBIwfVs+tMTNLH72MzTPlF7EAAPpF9SLmjliK9w23WKebT2FZxVyiwOf0baTSb40plBLhsYNAlTbTkQspnN+H12gw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=tomtom.com; dmarc=pass action=none header.from=tomtom.com; dkim=pass header.d=tomtom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tomtom.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=24kl7zRX9V/2HAiyJE7BtO1KyL3pCZwo3FMP+HGie1Q=; b=BhS3xyI24sUv0tMKksPjG9nwhFg+Vy3f3u0ghEVkGZDAoCniOYInkF2BmxPvEIkc7qxQ1Lprg2U2pA6Fm+uKHyB3vFyzc7FOF/rNPYCwTz9K91B20++XjhX20HStJPw+jN5H3NuNAQ5emtH/2EOfODuLPVSrspSrkpfFsGdEviM= Received: from VI1PR07MB6029.eurprd07.prod.outlook.com (20.178.123.224) by VI1PR07MB5536.eurprd07.prod.outlook.com (20.178.13.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2538.4; Thu, 5 Dec 2019 14:41:01 +0000 Received: from VI1PR07MB6029.eurprd07.prod.outlook.com ([fe80::964:1f46:e840:ce05]) by VI1PR07MB6029.eurprd07.prod.outlook.com ([fe80::964:1f46:e840:ce05%3]) with mapi id 15.20.2516.013; Thu, 5 Dec 2019 14:41:00 +0000 From: David Raymond To: "psycopg@lists.postgresql.org" Subject: RE: Array of tuples as a parameter, with type casts Thread-Topic: Array of tuples as a parameter, with type casts Thread-Index: AQHVpzbs6d4aB5H08kuBj8hnrzqi06eroNXA Date: Thu, 5 Dec 2019 14:41:00 +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=David.Raymond@tomtom.com; x-originating-ip: [216.107.194.166] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f29b4b10-4018-43e9-6252-08d7799125ea x-ms-traffictypediagnostic: VI1PR07MB5536: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 02426D11FE x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(136003)(346002)(39860400002)(376002)(366004)(396003)(189003)(199004)(6916009)(25786009)(7696005)(86362001)(229853002)(76176011)(478600001)(14444005)(14454004)(790700001)(966005)(74316002)(5640700003)(54896002)(9686003)(2906002)(55016002)(33656002)(8936002)(52536014)(26005)(186003)(102836004)(11346002)(5660300002)(81166006)(81156014)(1730700003)(8676002)(66946007)(66446008)(64756008)(71200400001)(71190400001)(66556008)(66476007)(76116006)(6506007)(316002)(99286004)(53546011);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR07MB5536;H:VI1PR07MB6029.eurprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: tomtom.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ez7d2Q/G/Gu/D00QoQWHTndoURswxDfDoD/+80yCdCi3dnU31SMvQi0xW33DBf5hzH8uqZpMO39c3yUzkWoVwC8bTeT8+171LZ4gUm1Tr6JwUGiHcmgsXfuuFZHhXP5RXevf1t8qvzr6ISQNovBnDYDukXa1muc8eHF0V+pdzKgYvEYVSqSa8cOAtYQ3Wl0WKPCKeACw+CU4sbuHkTYt0Y8yxUC/jh7VCs9GfRQOCbO47uz46fUBzNOFQmeqR4SxL74pdEDgqzHv6UkjBQfYWGSF8+707O37QyINPmY3cyDEANoa/Apja/SFTJ71CS2tx4wiTk32DsZG/KXcRD7Q7UNsD80afBNdbUsJmBl6FQspqurt0tZryK3ItjAgW+yoOVt+BQH5OrMkBhFYR8UBQne2TLe546O8ybFCKcl/Ai+A1z+FOkv0CfS+swc3OXM+2LHaHkmQGorS7F5kB0mxQq2tqcS3bR/U8J5mvlAUVKg= x-ms-exchange-transport-forked: True Content-Type: multipart/alternative; boundary="_000_VI1PR07MB60293B02275E16B616D95EC6875C0VI1PR07MB6029eurp_" MIME-Version: 1.0 X-OriginatorOrg: tomtom.com X-MS-Exchange-CrossTenant-Network-Message-Id: f29b4b10-4018-43e9-6252-08d7799125ea X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Dec 2019 14:41:00.8661 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 374f8026-7b54-4a3a-b87d-328fa26ec10d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: K5eSA2NO7zr/NOriDx+cts3SCSowy3qTUt9Bz9ZFWSPWHkVX0khNtvRfMgW2eHNhauWDSzE89xNjGzzfCCgGYK6jy7DswDjvtBH37cK1NzY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB5536 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --_000_VI1PR07MB60293B02275E16B616D95EC6875C0VI1PR07MB6029eurp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 4oCcQW5vdGhlciB3b3JrYXJvdW5kIHdvdWxkIGJlIGNyZWF0aW9uIGEgcm93IHR5cGUgZm9yIHRo ZSBkZXNpcmVkIHNldCBvZiBjb2x1bW5zIGFuZCBjYXN0aW5nICVzIHRvIHRoaXMgdHlwZVtdLCBi dXQgSSB3b3VsZCBub3QgbGlrZSB0byBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzIGluIHRoZSBk YXRhYmFzZSBiZWNhdXNlIGl0IGlzIHByZXR0eSBtdWNoIG91dCBvZiBteSBjb250cm9sLuKAnQ0K DQpJc27igJl0IGV2ZXJ5IHRhYmxlIGl0cyBvd24gdHlwZT8gU28gY291bGQgeW91IGRvIHRoaXM/ DQppbmVydCBpbnRvIHQNCnNlbGVjdCAqIGZyb20gdW5uZXN0KCVzOjp0W10pLi4uDQoNCg0KaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L3Jvd3R5cGVzLmh0bWwNCg0KV2hl bmV2ZXIgeW91IGNyZWF0ZSBhIHRhYmxlLCBhIGNvbXBvc2l0ZSB0eXBlIGlzIGFsc28gYXV0b21h dGljYWxseSBjcmVhdGVkLCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHRhYmxlLCB0byByZXBy ZXNlbnQgdGhlIHRhYmxlJ3Mgcm93IHR5cGUuIEZvciBleGFtcGxlLCBoYWQgd2Ugc2FpZDoNCg0K Q1JFQVRFIFRBQkxFIGludmVudG9yeV9pdGVtICgNCiAgICBuYW1lICAgICAgICAgICAgdGV4dCwN CiAgICBzdXBwbGllcl9pZCAgICAgaW50ZWdlciBSRUZFUkVOQ0VTIHN1cHBsaWVycywNCiAgICBw cmljZSAgICAgICAgICAgbnVtZXJpYyBDSEVDSyAocHJpY2UgPiAwKQ0KKTsNCg0KdGhlbiB0aGUg c2FtZSBpbnZlbnRvcnlfaXRlbSBjb21wb3NpdGUgdHlwZSBzaG93biBhYm92ZSB3b3VsZCBjb21l IGludG8gYmVpbmcgYXMgYSBieXByb2R1Y3QsIGFuZCBjb3VsZCBiZSB1c2VkIGp1c3QgYXMgYWJv dmUuDQouLi4NCg0KRnJvbTogVmxhZGltaXIgUnlhYnRzZXYgPGdyZWF0dm92YW5AZ21haWwuY29t Pg0KU2VudDogRnJpZGF5LCBOb3ZlbWJlciAyOSwgMjAxOSAxMTozMCBQTQ0KVG86IHBzeWNvcGdA bGlzdHMucG9zdGdyZXNxbC5vcmcNClN1YmplY3Q6IEFycmF5IG9mIHR1cGxlcyBhcyBhIHBhcmFt ZXRlciwgd2l0aCB0eXBlIGNhc3RzDQoNCkkgaGF2ZSBhIHF1ZXJ5IGxpa2UgdGhpczoNCg0KcXVl cnkgPSAnJycNCmluc2VydCBpbnRvIHQNCnNlbGVjdCAqIGZyb20gdW5uZXN0ICglcykNCmFzIHQx KGMxIHRpbWVzdGFtcCwgYzIgaW50KQ0KJycnDQoNClRoZSByZWFzb24gb2YgdGhlIGFwcHJvYWNo IGlzIG9idmlvdXNseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHNlcnZlciByb3VuZHRyaXBzIHdo ZW4gaW5zZXJ0aW5nIG1hbnkgcm93cy4NClVzYWdlOg0KDQpmcm9tIGRhdGV0aW1lIGltcG9ydCBk YXRldGltZQ0KaW1wb3J0IHBzeWNvcGcyDQpkYiA9IHBzeWNvcGcyLmNvbm5lY3QoJ3Bvc3RncmVz Oi8vcG9zdGdyZXM6KioqKioqQGhvc3QvcG9zdGdyZXM/c3NsbW9kZT1wcmVmZXInKQ0KY3VyID0g ZGIuY3Vyc29yKCkNCmN1ci5leGVjdXRlKHF1ZXJ5LCAoWyhkYXRldGltZS5ub3coKSwgMSksIChk YXRldGltZS5ub3coKSwgMildLCkpDQpkYi5jb21taXQoKQ0KZGIuY2xvc2UoKQ0KDQpSZWNlbnRs eSB0aGV5IG5lZWRlZCB0byBleHRlbmQgdGhlIGNvbHVtbiBzZXQgYnkgYSB0ZXh0IGFuZCBhIGJp Z2ludCBjb2x1bW5zLiBOZWl0aGVyIG9mIHRoZW0gd29ya3M6DQoNCmZyb20gZGF0ZXRpbWUgaW1w b3J0IGRhdGV0aW1lDQppbXBvcnQgcHN5Y29wZzINCnF1ZXJ5ID0gJycnaW5zZXJ0IGludG8gdA0K c2VsZWN0ICogZnJvbSB1bm5lc3QgKCVzKQ0KYXMgdDEoYzEgdGltZXN0YW1wLCBjMiBpbnQsIGMz IHRleHQsIGM0IGJpZ2ludCkNCicnJw0KZGIgPSBwc3ljb3BnMi5jb25uZWN0KCdwb3N0Z3Jlczov L3Bvc3RncmVzQGxvY2FsaG9zdC9wb3N0Z3JlcycpDQpjdXIgPSBkYi5jdXJzb3IoKQ0KY3VyLmV4 ZWN1dGUocXVlcnksIChbKGRhdGV0aW1lLm5vdygpLCAxLCAnYWJjJywgMTAwKSwgKGRhdGV0aW1l Lm5vdygpLCAyLCAneHl6JywgMjAwKV0sKSkNCmRiLmNvbW1pdCgpDQpkYi5jbG9zZSgpDQoNCkl0 IHRocm93czoNCnBzeWNvcGcyLmVycm9ycy5EYXRhdHlwZU1pc21hdGNoOiBmdW5jdGlvbiByZXR1 cm4gcm93IGFuZCBxdWVyeS1zcGVjaWZpZWQgcmV0dXJuIHJvdyBkbyBub3QgbWF0Y2gNCkRFVEFJ TDogIFJldHVybmVkIHR5cGUgdW5rbm93biBhdCBvcmRpbmFsIHBvc2l0aW9uIDMsIGJ1dCBxdWVy eSBleHBlY3RzIHRleHQuDQoNClRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGxpYnJhcnkgc2VuZHMg dGhlIGZvbGxvd2luZyByZXF1ZXN0IHRvIHRoZSBEQk1TOg0KDQppbnNlcnQgaW50byB0DQpzZWxl Y3QgKiBmcm9tIHVubmVzdCAoQVJSQVlbKCcyMDE5LTExLTI5VDE5OjQ4OjE5LjY4MzMxMCc6OnRp bWVzdGFtcCwgMSwgJ2FiYycsIDEwMCksKCcyMDE5LTExLTI5VDE5OjQ4OjE5LjY4MzMyMCc6OnRp bWVzdGFtcCwgMiwgJ3h5eicsIDIwMCldKQ0KYXMgdDEoYzEgdGltZXN0YW1wLCBjMiBpbnQsIGMz IHRleHQsIGM0IGJpZ2ludCkNCg0KRm9yIHdoYXRldmVyIHJlYXNvbiBpdCBmYWlscyB3aXRoIHRo ZSBhYm92ZSBlcnJvciwgYnV0IE9LLCBpdCBpcyByZWxhdGVkIHRvIFBvc3RncmVzLCBub3QgdG8g cHN5Y29wZzIuDQpJIGNhbiBtYWtlIGl0IHdvcmsgYnkgc3BlY2lmeWluZyB0eXBlIGNhc3RzIGZv ciB0ZXh0IGFuZCBiaWdpbnQgY29sdW1uczoNCg0KaW5zZXJ0IGludG8gdA0Kc2VsZWN0ICogZnJv bSB1bm5lc3QgKEFSUkFZWygnMjAxOS0xMS0yOVQxOTo0ODoxOS42ODMzMTAnOjp0aW1lc3RhbXAs IDEsICdhYmMnOjp0ZXh0LCAxMDA6OmJpZ2ludCksKCcyMDE5LTExLTI5VDE5OjQ4OjE5LjY4MzMy MCc6OnRpbWVzdGFtcCwgMiwgJ3h5eic6OnRleHQsIDIwMDo6YmlnaW50KV0pDQphcyB0MShjMSB0 aW1lc3RhbXAsIGMyIGludCwgYzMgdGV4dCwgYzQgYmlnaW50KTsNCg0KQnV0IEkgbmVlZCBhIHdh eSB0byBtYWtlIHRoZSBwc3ljb3BnMiBtb2R1bGUgdG8gZG8gdGhhdC4gQW5vdGhlciB3b3JrYXJv dW5kIHdvdWxkIGJlIGNyZWF0aW9uIGEgcm93IHR5cGUgZm9yIHRoZSBkZXNpcmVkIHNldCBvZiBj b2x1bW5zIGFuZCBjYXN0aW5nICVzIHRvIHRoaXMgdHlwZVtdLCBidXQgSSB3b3VsZCBub3QgbGlr ZSB0byBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzIGluIHRoZSBkYXRhYmFzZSBiZWNhdXNlIGl0 IGlzIHByZXR0eSBtdWNoIG91dCBvZiBteSBjb250cm9sLg0KDQpZb3VyIGhlbHAgaXMgdmVyeSBh cHByZWNpYXRlZC4NCg0KUC5TLiBJIGFtIGF3YXJlIG9mIG90aGVyIHNvbHV0aW9ucyBzdWNoIGFz IGV4ZWN1dGVfYmF0Y2goKSwgZXhlY3V0ZV92YWx1ZXMoKSwgZXRjLiBUYWtlIHRoaXMgcXVlc3Rp b24gYXMgYSB0aGVvcmV0aWNhbCBvbmUsIEkganVzdCB3YW50IHRvIHVuZGVyc3RhbmQgaWYgdXNl ciBpcyBhYmxlIHRvIGNvbnRyb2wgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgbW9kdWxl Lg0KDQpwc3ljb3BnMi1iaW5hcnk9PTIuOC40DQpQb3N0Z3JlcyB+IGFueQ0K --_000_VI1PR07MB60293B02275E16B616D95EC6875C0VI1PR07MB6029eurp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAy IDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpWZXJkYW5hOw0KCXBhbm9zZS0xOjIgMTEg NiA0IDMgNSA0IDQgMiA0O30NCi8qIFN0eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwg bGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRv bTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNh bnMtc2VyaWY7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3Jp dHk6OTk7DQoJY29sb3I6IzA1NjNDMTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmE6 dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KCXttc28tc3R5bGUtcHJpb3JpdHk6 OTk7DQoJY29sb3I6Izk1NEY3MjsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmNvZGUN Cgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQ0K cHJlDQoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsNCgltc28tc3R5bGUtbGluazoiSFRNTCBQcmVm b3JtYXR0ZWQgQ2hhciI7DQoJbWFyZ2luOjBpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJ Zm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCnAubXNvbm9y bWFsMCwgbGkubXNvbm9ybWFsMCwgZGl2Lm1zb25vcm1hbDANCgl7bXNvLXN0eWxlLW5hbWU6bXNv bm9ybWFsOw0KCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdpbi1yaWdodDowaW47DQoJ bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6MGluOw0KCWZvbnQtc2l6 ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0Kc3Bhbi5FbWFp bFN0eWxlMTgNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6 IlZlcmRhbmEiLHNhbnMtc2VyaWY7DQoJY29sb3I6d2luZG93dGV4dDt9DQpzcGFuLkhUTUxQcmVm b3JtYXR0ZWRDaGFyDQoJe21zby1zdHlsZS1uYW1lOiJIVE1MIFByZWZvcm1hdHRlZCBDaGFyIjsN Cgltc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJbXNvLXN0eWxlLWxpbms6IkhUTUwgUHJlZm9ybWF0 dGVkIjsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCi5Nc29DaHBEZWZhdWx0DQoJe21z by1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNl cmlmO30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDExLjBpbjsNCgltYXJnaW46 MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRT ZWN0aW9uMTt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVk ZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4NCjwveG1sPjwhW2VuZGlmXS0t PjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVsYXlvdXQgdjpleHQ9ImVkaXQiPg0K PG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8L286c2hhcGVsYXlvdXQ+PC94bWw+ PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJFTi1VUyIgbGluaz0iIzA1NjNDMSIg dmxpbms9IiM5NTRGNzIiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZiI+4oCcPC9zcGFuPkFub3RoZXIgd29ya2Fyb3VuZCB3 b3VsZCBiZSBjcmVhdGlvbiBhIHJvdyB0eXBlIGZvciB0aGUgZGVzaXJlZCBzZXQgb2YgY29sdW1u cyBhbmQgY2FzdGluZyAlcyB0byB0aGlzIHR5cGVbXSwgYnV0IEkgd291bGQgbm90IGxpa2UgdG8g Y3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cyBpbiB0aGUNCiBkYXRhYmFzZSBiZWNhdXNlIGl0IGlz IHByZXR0eSBtdWNoIG91dCBvZiBteSBjb250cm9sLjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZiI+4oCdPG86cD48 L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmIj48 bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNh bnMtc2VyaWYiPklzbuKAmXQgZXZlcnkgdGFibGUgaXRzIG93biB0eXBlPyBTbyBjb3VsZCB5b3Ug ZG8gdGhpcz88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7 LHNhbnMtc2VyaWYiPmluZXJ0IGludG8gdDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZiI+c2VsZWN0ICogZnJvbSB1bm5lc3QoJXM6OnRb XSkuLi48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNh bnMtc2VyaWYiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRh bmEmcXVvdDssc2Fucy1zZXJpZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmIj5odHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9kb2NzL2N1cnJlbnQvcm93dHlwZXMuaHRtbDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+V2hlbmV2ZXIgeW91IGNyZWF0ZSBhIHRhYmxlLCBh IGNvbXBvc2l0ZSB0eXBlIGlzIGFsc28gYXV0b21hdGljYWxseSBjcmVhdGVkLCB3aXRoIHRoZSBz YW1lIG5hbWUgYXMgdGhlIHRhYmxlLCB0byByZXByZXNlbnQgdGhlIHRhYmxlJ3Mgcm93IHR5cGUu IEZvciBleGFtcGxlLCBoYWQgd2Ugc2FpZDo8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm b250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+PC9vOnA+PC9z cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Q1JFQVRFIFRBQkxF IGludmVudG9yeV9pdGVtICg8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3Vy aWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IG5hbWUmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdGV4dCw8bzpw PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7IHN1cHBsaWVyX2lkJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludGVnZXIg UkVGRVJFTkNFUyBzdXBwbGllcnMsPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyBwcmljZSZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBudW1lcmljIENI RUNLIChwcmljZSAmZ3Q7IDApPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291 cmllciBOZXcmcXVvdDsiPik7PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVy ZGFuYSZxdW90OyxzYW5zLXNlcmlmIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj50aGVuIHRoZSBzYW1lIDxjb2RlPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTAuMHB0Ij5pbnZlbnRvcnlfaXRlbTwvc3Bhbj48L2NvZGU+IGNvbXBvc2l0ZSB0eXBlIHNo b3duIGFib3ZlIHdvdWxkIGNvbWUgaW50byBiZWluZyBhcyBhIGJ5cHJvZHVjdCwgYW5kIGNvdWxk IGJlIHVzZWQganVzdCBhcyBhYm92ZS48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250 LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+PC9vOnA+PC9zcGFu PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZiI+Li4uPG86cD48L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmIj48bzpw PiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj5Gcm9tOjwv Yj4gVmxhZGltaXIgUnlhYnRzZXYgJmx0O2dyZWF0dm92YW5AZ21haWwuY29tJmd0OyA8YnI+DQo8 Yj5TZW50OjwvYj4gRnJpZGF5LCBOb3ZlbWJlciAyOSwgMjAxOSAxMTozMCBQTTxicj4NCjxiPlRv OjwvYj4gcHN5Y29wZ0BsaXN0cy5wb3N0Z3Jlc3FsLm9yZzxicj4NCjxiPlN1YmplY3Q6PC9iPiBB cnJheSBvZiB0dXBsZXMgYXMgYSBwYXJhbWV0ZXIsIHdpdGggdHlwZSBjYXN0czxvOnA+PC9vOnA+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+SSBoYXZlIGEgcXVlcnkgbGlrZSB0aGlzOjxicj4NCjxicj4N CnF1ZXJ5ID0gJycnPGJyPg0KaW5zZXJ0IGludG8gdDxicj4NCnNlbGVjdCAqIGZyb20gdW5uZXN0 ICglcyk8YnI+DQphcyB0MShjMSB0aW1lc3RhbXAsIGMyIGludCk8YnI+DQonJyc8YnI+DQo8YnI+ DQpUaGUgcmVhc29uIG9mIHRoZSBhcHByb2FjaCBpcyBvYnZpb3VzbHkgcmVkdWNpbmcgdGhlIG51 bWJlciBvZiBzZXJ2ZXIgcm91bmR0cmlwcyB3aGVuIGluc2VydGluZyZuYnNwO21hbnkgcm93cy48 YnI+DQpVc2FnZTo8YnI+DQo8YnI+DQpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZTxicj4N CmltcG9ydCBwc3ljb3BnMjxicj4NCmRiID0gcHN5Y29wZzIuY29ubmVjdCgncG9zdGdyZXM6Ly9w b3N0Z3JlczoqKioqKipAaG9zdC9wb3N0Z3Jlcz9zc2xtb2RlPXByZWZlcicpPGJyPg0KY3VyID0g ZGIuY3Vyc29yKCk8YnI+DQpjdXIuZXhlY3V0ZShxdWVyeSwgKFsoZGF0ZXRpbWUubm93KCksIDEp LCAoZGF0ZXRpbWUubm93KCksIDIpXSwpKTxicj4NCmRiLmNvbW1pdCgpPGJyPg0KZGIuY2xvc2Uo KTxicj4NCjxicj4NClJlY2VudGx5IHRoZXkgbmVlZGVkIHRvIGV4dGVuZCB0aGUgY29sdW1uIHNl dCBieSBhIHRleHQgYW5kIGEgYmlnaW50IGNvbHVtbnMuIE5laXRoZXIgb2YgdGhlbSB3b3Jrczo8 YnI+DQo8YnI+DQpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZTxicj4NCmltcG9ydCBwc3lj b3BnMjxicj4NCnF1ZXJ5ID0gJycnaW5zZXJ0IGludG8gdDxicj4NCnNlbGVjdCAqIGZyb20gdW5u ZXN0ICglcyk8YnI+DQphcyB0MShjMSB0aW1lc3RhbXAsIGMyIGludCwgYzMgdGV4dCwgYzQgYmln aW50KTxicj4NCicnJzxicj4NCmRiID0gcHN5Y29wZzIuY29ubmVjdCgncG9zdGdyZXM6Ly9wb3N0 Z3Jlc0Bsb2NhbGhvc3QvcG9zdGdyZXMnKTxicj4NCmN1ciA9IGRiLmN1cnNvcigpPGJyPg0KY3Vy LmV4ZWN1dGUocXVlcnksIChbKGRhdGV0aW1lLm5vdygpLCAxLCAnYWJjJywgMTAwKSwgKGRhdGV0 aW1lLm5vdygpLCAyLCAneHl6JywgMjAwKV0sKSk8YnI+DQpkYi5jb21taXQoKTxicj4NCmRiLmNs b3NlKCk8YnI+DQo8YnI+DQpJdCB0aHJvd3M6PGJyPg0KcHN5Y29wZzIuZXJyb3JzLkRhdGF0eXBl TWlzbWF0Y2g6IGZ1bmN0aW9uIHJldHVybiByb3cgYW5kIHF1ZXJ5LXNwZWNpZmllZCByZXR1cm4g cm93IGRvIG5vdCBtYXRjaDxicj4NCkRFVEFJTDogJm5ic3A7UmV0dXJuZWQgdHlwZSB1bmtub3du IGF0IG9yZGluYWwgcG9zaXRpb24gMywgYnV0IHF1ZXJ5IGV4cGVjdHMgdGV4dC48YnI+DQo8YnI+ DQpUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBsaWJyYXJ5IHNlbmRzIHRoZSBmb2xsb3dpbmcgcmVx dWVzdCB0byB0aGUgREJNUzo8YnI+DQo8YnI+DQppbnNlcnQgaW50byB0PGJyPg0Kc2VsZWN0ICog ZnJvbSB1bm5lc3QgKEFSUkFZWygnMjAxOS0xMS0yOVQxOTo0ODoxOS42ODMzMTAnOjp0aW1lc3Rh bXAsIDEsICdhYmMnLCAxMDApLCgnMjAxOS0xMS0yOVQxOTo0ODoxOS42ODMzMjAnOjp0aW1lc3Rh bXAsIDIsICd4eXonLCAyMDApXSk8YnI+DQphcyB0MShjMSB0aW1lc3RhbXAsIGMyIGludCwgYzMg dGV4dCwgYzQgYmlnaW50KTxicj4NCjxicj4NCkZvciB3aGF0ZXZlciByZWFzb24gaXQgZmFpbHMg d2l0aCB0aGUgYWJvdmUgZXJyb3IsIGJ1dCBPSywgaXQgaXMgcmVsYXRlZCB0byBQb3N0Z3Jlcywg bm90IHRvIHBzeWNvcGcyLjxicj4NCkkgY2FuIG1ha2UgaXQgd29yayBieSBzcGVjaWZ5aW5nIHR5 cGUgY2FzdHMgZm9yIHRleHQgYW5kIGJpZ2ludCBjb2x1bW5zOjxicj4NCjxicj4NCmluc2VydCBp bnRvIHQ8YnI+DQpzZWxlY3QgKiBmcm9tIHVubmVzdCAoQVJSQVlbKCcyMDE5LTExLTI5VDE5OjQ4 OjE5LjY4MzMxMCc6OnRpbWVzdGFtcCwgMSwgJ2FiYyc6OnRleHQsIDEwMDo6YmlnaW50KSwoJzIw MTktMTEtMjlUMTk6NDg6MTkuNjgzMzIwJzo6dGltZXN0YW1wLCAyLCAneHl6Jzo6dGV4dCwgMjAw OjpiaWdpbnQpXSk8YnI+DQphcyB0MShjMSB0aW1lc3RhbXAsIGMyIGludCwgYzMgdGV4dCwgYzQg YmlnaW50KTs8YnI+DQo8YnI+DQpCdXQgSSBuZWVkIGEgd2F5IHRvIG1ha2UgdGhlIHBzeWNvcGcy IG1vZHVsZSB0byBkbyB0aGF0LiBBbm90aGVyIHdvcmthcm91bmQgd291bGQgYmUgY3JlYXRpb24g YSByb3cgdHlwZSBmb3IgdGhlIGRlc2lyZWQgc2V0IG9mIGNvbHVtbnMgYW5kIGNhc3RpbmcgJXMg dG8gdGhpcyB0eXBlW10sIGJ1dCBJIHdvdWxkIG5vdCBsaWtlIHRvIGNyZWF0ZSBhZGRpdGlvbmFs IG9iamVjdHMgaW4gdGhlIGRhdGFiYXNlIGJlY2F1c2UgaXQgaXMgcHJldHR5IG11Y2gNCiBvdXQg b2YgbXkgY29udHJvbC48YnI+DQo8YnI+DQpZb3VyIGhlbHAgaXMgdmVyeSBhcHByZWNpYXRlZC48 YnI+DQo8YnI+DQpQLlMuIEkgYW0gYXdhcmUgb2Ygb3RoZXIgc29sdXRpb25zIHN1Y2ggYXMgZXhl Y3V0ZV9iYXRjaCgpLCBleGVjdXRlX3ZhbHVlcygpLCBldGMuIFRha2UgdGhpcyBxdWVzdGlvbiBh cyBhIHRoZW9yZXRpY2FsIG9uZSwgSSBqdXN0IHdhbnQgdG8gdW5kZXJzdGFuZCBpZiB1c2VyIGlz IGFibGUgdG8gY29udHJvbCB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBtb2R1bGUuPGJy Pg0KPGJyPg0KcHN5Y29wZzItYmluYXJ5PT0yLjguNDxicj4NClBvc3RncmVzIH4gYW55PG86cD48 L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_VI1PR07MB60293B02275E16B616D95EC6875C0VI1PR07MB6029eurp_--