From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id 237933853D4A for ; Thu, 17 Nov 2022 23:04:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 237933853D4A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x435.google.com with SMTP id v1so6292421wrt.11 for ; Thu, 17 Nov 2022 15:04:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:cc:references:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=RL9euYDcd+FrJuVheep+07/ve4ZCA/YEybr52rBxIr8=; b=R5pzZA2dhD1/bHZ/1IslqDECRqBUM4obCb8xxf/AvehrqW9SVWpF91fVh8olPv7Zjc kzg2X9cq39CcVd+l1pljpyUpTWBffrC1+z2s8NnTBSg+4bW96QeI8aaQaIPSe8X6K3Yk KtSST33q+ZjyjlqmEenha4eZ7d30eLHlyk2yOr4/qiQO5ty+eeE/VY2+XYHHlowiGTOR bSnHFjHIVOPjAxTiakI6ekzavUtZ6Exohdh2Sw3QpLnfd9iNRG7uw1/u6jY+oT/hYZa2 f+HzjMCV1mYcjHldL/nXYWyXvf4pnMWnYpzMIZ1T3L1aZrzvuqFSY71UwG7f6KeCNXhh PjVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:cc: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=RL9euYDcd+FrJuVheep+07/ve4ZCA/YEybr52rBxIr8=; b=ttoPtU1LFOJ/vwELGQi2zFU96F3qIfBZQnUeDGEDXWKZuWMqAmyWO3gIF0gQAaoK7C aq6+57Qk6cNfYS5UJv2M0vBxTQAaJwQyiJxRYe4bRI2qJBrlEa+N3inlUBcunC5XdXvc gbQKZBGRaBn5bHIhcUPRGZC6kr4OPKMK7d189jXnh6ezim3OJU6zWfTF+9N8fwpCMuQm +BBh63Mfq8MTIKCc7h5HaL6yr748YimDZJhY6pvHfVOYWUV4TG6BIVllPr8hHkzEHRsD x7hPEDI+KmDR7bCVseCjpiqviSzL25yIWraiKqK6DWL5dqLK2T8K4dn1tW08rmgUkgof fgiA== X-Gm-Message-State: ANoB5pnAYnt/a/wvwy6cMyMviAYGZ4LDoPiZ+v+2nUCI6pSoSJN9vIyd kflSR1NeEsjF1uzqo/yG9us= X-Google-Smtp-Source: AA0mqf7707RT+RKAcVtaEAHl8+zZvKMQIkSsp2d0oHLM/WmzKOjjKXzQRJO3aI7BCGLTZsXDB85DEA== X-Received: by 2002:adf:f047:0:b0:236:8201:11a7 with SMTP id t7-20020adff047000000b00236820111a7mr2699482wro.704.1668726263534; Thu, 17 Nov 2022 15:04:23 -0800 (PST) Received: from [192.168.0.160] ([170.253.36.171]) by smtp.gmail.com with ESMTPSA id l29-20020a05600c1d1d00b003c6d21a19a0sm2936080wms.29.2022.11.17.15.04.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 17 Nov 2022 15:04:22 -0800 (PST) Message-ID: <683baaee-f3dc-bc13-c303-8fb0df0d0a36@gmail.com> Date: Fri, 18 Nov 2022 00:04:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: size_t vs long. Content-Language: en-US To: Paul Eggert , A , libc-alpha@sourceware.org References: <380b196e-b78e-3b0e-7399-ee106b0e716c@gmail.com> <27229b18-673b-d038-9a4c-c32c50ca547c@cs.ucla.edu> Cc: gcc@gcc.gnu.org From: Alejandro Colomar In-Reply-To: <27229b18-673b-d038-9a4c-c32c50ca547c@cs.ucla.edu> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------K4dwpKu0hF16doxaTvi6sg3S" X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------K4dwpKu0hF16doxaTvi6sg3S Content-Type: multipart/mixed; boundary="------------PN2d3EGafF187fZ00eKgkfUL"; protected-headers="v1" From: Alejandro Colomar To: Paul Eggert , A , libc-alpha@sourceware.org Cc: gcc@gcc.gnu.org Message-ID: <683baaee-f3dc-bc13-c303-8fb0df0d0a36@gmail.com> Subject: Re: size_t vs long. References: <380b196e-b78e-3b0e-7399-ee106b0e716c@gmail.com> <27229b18-673b-d038-9a4c-c32c50ca547c@cs.ucla.edu> In-Reply-To: <27229b18-673b-d038-9a4c-c32c50ca547c@cs.ucla.edu> --------------PN2d3EGafF187fZ00eKgkfUL Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgUGF1bCwNCg0KT24gMTEvMTcvMjIgMjI6MzksIFBhdWwgRWdnZXJ0IHdyb3RlOg0KPj4+ IFNlY29uZCBhbmQgbW9yZSBpbXBvcnRhbnQsIHRoYXQgY29kZSBpcyBib2d1cy4gTm9ib2R5 IHNob3VsZCBldmVyIHdyaXRlIGNvZGUgDQo+Pj4gbGlrZSB0aGF0LiBJZiBJIHdyb3RlIGNv ZGUgbGlrZSB0aGF0LCBJJ2QgKndhbnQqIGEgdHJhcC4NCj4+DQo+PiBmb3IgKHNpemVfdCBp ID0gNDE7IGkgPCBzaXplb2YgQSAvIHNpemVvZiBBWzBdOyAtLWkpIHsNCj4+IMKgwqAgQVtp XSA9IHNvbWV0aGluZ19uaWNlOw0KPj4gfQ0KPj4NCj4+IFRoZSBjb2RlIGFib3ZlIHNlZW1z IGEgYnVnIGJ5IG5vdCBiZWluZyB1c2VkIHRvIGl0LsKgIE9uY2UgeW91IGdldCB1c2VkIHRv IGl0LCANCj4+IGl0IGNhbiBiZWNvbWUgbmF0dXJhbCwgYnV0IGxldCdzIGdvIGZvciB0aGUg bW9yZSBuYXR1cmFsOg0KPj4NCj4+DQo+PiBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVv ZiBBIC8gc2l6ZW9mIEFbMF07ICsraSkgew0KPj4gwqDCoCBBW2ldID0gc29tZXRoaW5nX25p Y2U7DQo+PiB9IA0KPiANCj4gVGhvc2UgbG9vcHMgZG8gbm90IG1lYW4gdGhlIHNhbWUgdGhp bmcuDQoNClNvcnJ5LCBJIGRpZG4ndCBtZWFuIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICBG b3IgY29kZSB0aGF0IG1lYW5zIGV4YWN0bHkgdGhlIA0Kc2FtZSBhcw0KDQpmb3IgKHNpemVf dCBpID0gNDE7IGkgPCBuaXRlbXMoQSk7IC0taSkgew0KICAgICBBW2ldID0gc29tZXRoaW5n X25pY2U7DQp9DQoNCg0Kd2UgbmVlZDoNCg0KDQpmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5p dGVtcyhBKSAmJiBpIDw9IDQxOyArK2kpIHsNCiAgICAgQVtpXSA9IHNvbWV0aGluZ19uaWNl Ow0KfQ0KDQpvcg0KDQpmb3IgKGlkeF90IGkgPSAwOyBpIDwgbml0ZW1zKEEpICYmIGkgPD0g NDE7ICsraSkgew0KICAgICBBW2ldID0gc29tZXRoaW5nX25pY2U7DQp9DQoNCm9yDQoNCmZv ciAoaWR4X3QgaSA9IDQxOyBpIDwgbml0ZW1zKEEpICYmIGkgPiAwOyAtLWkpIHsNCiAgICAg QVtpXSA9IHNvbWV0aGluZ19uaWNlOw0KfQ0KDQooYWx3YXlzIGFzc3VtaW5nIFNJWkVfTUFY ID4gSU5UX01BWC4pDQoNCg0KV2l0aG91dCBtb3JlIGNvbnRleHQsIEkgY2FuJ3Qga25vdyBp ZiBhbnkgb2YgdGhlbSBhcmUgYm9ndXMuICBPZiBjb3Vyc2UsIHRoYXQgNDEgDQpzaG91bGQg bm9ybWFsbHkgY29tZSBmcm9tIGEgdmFyaWFibGUgaW5zdGVhZCBvZiBhIG1hZ2ljIG51bWJl ci4NCg0KV2UgY2FuIHNlZSB0aGF0IEplbnMncyBjb2RlIGlzIGF0IGxlYXN0IHNpbXBsZXIs IHdoaWNoIGlzIGEgYm9udXMgcG9pbnQuDQoNCkJ1dCBub3JtYWxseSwgd2UgZG9uJ3QgZW50 ZXIgYSBsb29wIGZyb20gYSByYW5kb20gZW50cnkgdmFsdWUsIGJ1dCByYXRoZXIgb25lIG9m IA0KaXRzIGV4dHJlbWVzLCB3aGljaCBpcyB3aGF0IEkgc2hvd2VkIGluIG15IGFsdGVybmF0 aXZlIGV4YW1wbGUuICBMZXQncyBhbHNvIHNob3cgDQp0aGUgYWx0ZXJuYXRpdmUgZm9ybXMg d2UgY2FuIHdyaXRlIGl0Og0KDQoNCmZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbml0ZW1zKEEp OyArK2kpIHsNCiAgICAgQVtpXSA9IHNvbWV0aGluZ19uaWNlOw0KfQ0KDQoNCmlzIGVxdWl2 YWxlbnQgdG86DQoNCg0KZm9yIChzaXplX3QgaSA9IG5pdGVtcyhBKSAtIDE7IGkgPCBuaXRl bXMoQSk7IC0taSkgew0KICAgICBBW2ldID0gc29tZXRoaW5nX25pY2U7DQp9DQoNCm9yDQoN CmZvciAoaWR4X3QgaSA9IG5pdGVtcyhBKSAtIDE7IGkgPiAwOyAtLWkpIHsNCiAgICAgQVtp XSA9IHNvbWV0aGluZ19uaWNlOw0KfQ0KDQpvcg0KDQpmb3IgKGlkeF90IGkgPSAwOyBpIDwg bml0ZW1zKEEpOyArK2kpIHsNCiAgICAgQVtpXSA9IHNvbWV0aGluZ19uaWNlOw0KfQ0KDQoN ClRoZXJlJ3Mgbm90IG11Y2ggZGlmZmVyZW5jZSBpbiB0aGlzIGNhc2UgcmVnYXJkaW5nIHJl YWRhYmlsaXR5Lg0KDQpJZiAnaScgaXMgbW9kaWZpZWQgd2l0aGluIHRoZSBsb29wIChhcGFy dCBmcm9tIHRoZSBvYnZpb3VzIC0taV8sIHRoZW4gd2UgbmVlZCB0byANCmNoZWNrIGJvdGgg Ym91bmRzIG9mIHRoZSBhcnJheSwgd2hpY2ggd2l0aCBzaXplX3QgY29tZXMgZm9yIGZyZWU7 IHdpdGggaWR4X3QgeW91IA0KbmVlZCB0byBhZGQgY29kZToNCg0KDQoNCmZvciAoaWR4X3Qg aSA9IG5pdGVtcyhBKSAtIDE7IGkgPCBuaXRlbXMoQSkgJiYgaSA+IDA7IC0taSkgew0KICAg ICBBW2ldID0gc29tZXRoaW5nX25pY2U7DQogICAgIGkgKz0gZm9vOw0KfQ0KDQpvcg0KDQpm b3IgKGlkeF90IGkgPSAwOyBpIDwgbml0ZW1zKEEpICYmIGkgPiAwOyArK2kpIHsNCiAgICAg QVtpXSA9IHNvbWV0aGluZ19uaWNlOw0KICAgICBpICs9IGZvbzsNCn0NCg0KdnMNCg0KZm9y IChzaXplX3QgaSA9IDA7IGkgPCBuaXRlbXMoQSk7ICsraSkgew0KICAgICBBW2ldID0gc29t ZXRoaW5nX25pY2U7DQogICAgIGkgKz0gZm9vOw0KfQ0KDQpvcg0KDQpmb3IgKHNpemVfdCBp ID0gbml0ZW1zKEEpIC0gMTsgaSA8IG5pdGVtcyhBKTsgLS1pKSB7DQogICAgIEFbaV0gPSBz b21ldGhpbmdfbmljZTsNCiAgICAgaSArPSBmb287DQp9DQoNCg0KQWdhaW4sIHNpemVfdCBz ZWVtcyB0byB3aW4gaW4gc2ltcGxpY2l0eS4NCg0KDQo+IFRoZSBmaXJzdCBpcyBib2d1czsg dGhlIHNlY29uZCBvbmUgaXMgT0sgDQo+IChub3RpY2UsIHRoZSBib2d1cyBsb29wIGhhcyBh ICI0MSIsIHRoZSBPSyBsb29wIGRvZXNuJ3QpLg0KPiANCj4gSSdtIG5vdCBzdXJwcmlzZWQg eW91IGRpZG4ndCBub3RpY2UgaG93IGJvZ3VzIHRoZSBmaXJzdCBsb29wIHdhcyAtIG1vc3Qg cGVvcGxlIA0KPiB3b3VsZG4ndCBub3RpY2UgaXQgZWl0aGVyLiBBbmQgaXQncyBHdXN0ZWR0 J3MgbWFpbiBwb2ludCEgSSBkb24ndCBrbm93IHdoeSBoZSANCj4gd2VudCBvZmYgdGhlIHJh aWxzIHdpdGggdGhhdCBvdmVybHktY2xldmVyIGNvZGUsIGJ1dCBoZSBkaWQuDQoNCkkgc3Rp bGwgZG9uJ3Qga25vdyB3aGF0IHdhcyB0aGUgaW50ZW5kZWQgYnVnLiAgT3Igd2h5IGl0IHdv dWxkIGRpZmZlciBmcm9tIHRoZSANCmlkeF90IHZlcnNpb25zLiAgUGxlYXNlIGRldGFpbC4N Cg0KPiANCj4gDQo+PiBUaGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBjb2RlIGNvbXBhcmVk IHRvIHRoZSBlcXVpdmFsZW50IHNzaXplX3Qgb3IgDQo+PiBwdHJkaWZmX3Qgb3IgaWR4X3Qg Y29kZSBpcyB0aGF0IGlmIHlvdSBzb21laG93IHdyaXRlIGFuIG9mZi1ieS1vbmUgZXJyb3Is IGFuZCANCj4+IG1hbmFnZSB0byBhY2Nlc3MgdGhlIGFycmF5IGF0IFstMV0sIGlmIGkgaXMg dW5zaWduZWQgeW91J2xsIGFjY2VzcyBbU0laRV9NQVhdLCANCj4+IHdoaWNoIHdpbGwgZGVm aW5pdGVseSBjcmFzaCB5b3VyIHByb2dyYW0uDQo+IA0KPiBUaGF0J3Mgbm90IHRydWUgb24g dGhlIHZhc3QgbWFqb3JpdHkgb2YgdG9kYXkncyBwbGF0Zm9ybXMsIHdoaWNoIGRvbid0IGhh dmUgDQo+IHN1YnNjcmlwdCBjaGVja2luZywgYW5kIGZvciB3aGljaCBhWy0xXSBpcyB0cmVh dGVkIHRoZSBzYW1lIHdheSBhW1NJWkVfTUFYXSBpcy4gDQo+IE9uIG15IHBsYXRmb3JtIChG ZWRvcmEgMzYgeDg2LTY0KSB0aGUgc2FtZSBtYWNoaW5lIGNvZGUgaXMgZ2VuZXJhdGVkIGZv ciAnYScgYW5kIA0KPiAnYicgZm9yIHRoZSBmb2xsb3dpbmcgQyBjb2RlLg0KPiANCj4gIMKg ICNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gIMKgIGludCBhKGludCAqcCkgeyByZXR1cm4gcFst MV07IH0NCj4gIMKgIGludCBiKGludCAqcCkgeyByZXR1cm4gcFtTSVpFX01BWF07IH0NCg0K SG1tLCB0aGlzIHNlZW1zIHRvIGJlIHRydWUgaW4gbXkgcGxhdGZvcm0gKGFtZDY0KSBwZXIg dGhlIGV4cGVyaW1lbnQgSSBqdXN0IGRpZDoNCg0KJCBjYXQgcy5jDQojaW5jbHVkZSA8c3lz L3R5cGVzLmg+DQoNCmNoYXINCmYoY2hhciAqcCwgc3NpemVfdCBpKQ0Kew0KCXJldHVybiBw W2ldOw0KfQ0KJCBjYXQgdS5jDQojaW5jbHVkZSA8c3RkZGVmLmg+DQoNCmNoYXINCmYoY2hh ciAqcCwgc2l6ZV90IGkpDQp7DQoJcmV0dXJuIHBbaV07DQp9DQokIGNjIC1XYWxsIC1XZXh0 cmEgLVdlcnJvciAtUyAtTzMgcy5jIHUuYw0KJCBkaWZmIC11IHUucyBzLnMNCi0tLSB1LnMJ MjAyMi0xMS0xNyAyMzo0MTo0Ny43NzM4MDUwNDEgKzAxMDANCisrKyBzLnMJMjAyMi0xMS0x NyAyMzo0MTo0Ny43NjE4MDUyNjUgKzAxMDANCkBAIC0xLDE1ICsxLDE1IEBADQotCS5maWxl CSJ1LmMiDQorCS5maWxlCSJzLmMiDQogIAkudGV4dA0KICAJLnAyYWxpZ24gNA0KICAJLmds b2JsCWYNCiAgCS50eXBlCWYsIEBmdW5jdGlvbg0KICBmOg0KLS5MRkIwOg0KKy5MRkI2Og0K ICAJLmNmaV9zdGFydHByb2MNCiAgCW1vdnpibAkoJXJkaSwlcnNpKSwgJWVheA0KICAJcmV0 DQogIAkuY2ZpX2VuZHByb2MNCi0uTEZFMDoNCisuTEZFNjoNCiAgCS5zaXplCWYsIC4tZg0K ICAJLmlkZW50CSJHQ0M6IChEZWJpYW4gMTIuMi4wLTkpIDEyLjIuMCINCiAgCS5zZWN0aW9u CS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMNCg0KDQpJdCBzZWVtcyBhIHZpb2xhdGlv biBvZiB0aGUgc3RhbmRhcmQsIGlzbid0IGl0Pw0KDQpUaGUgb3BlcmF0b3IgW10gZG9lc24n dCBoYXZlIGEgdHlwZSwgYW5kIGFuIGFyZ3VtZW50IHRvIGl0IHNob3VsZCBiZSB0cmVhdGVk IA0Kd2l0aCB3aGF0ZXZlciB0eXBlIGl0IGhhcyBhZnRlciBkZWZhdWx0IHByb21vdGlvbnMu ICBJZiBJIHBhc3MgYSBzaXplX3QgdG8gaXQsIA0KdGhlIHR5cGUgc2hvdWxkIGJlIHVuc2ln bmVkLCBhbmQgdGhhdCBzaG91bGQgYmUgcHJlc2VydmVkLCBieSBhY2Nlc3NpbmcgdGhlIA0K YXJyYXkgYXQgYSBoaWdoIHZhbHVlLCB3aGljaCB0aGUgY29tcGlsZXIgaGFzIG5vIHdheSB0 byBrbm93IGlmIGl0IHdpbGwgZXhpc3Qgb3IgDQpub3QsIGJ5IHRoYXQgZnVuY3Rpb24gZGVm aW5pdGlvbi4gIFRoZSBleHRyZW1lIG9mIC0xIGFuZCBTSVpFX01BWCBtaWdodCBiZSBub3Qg DQp0aGUgYmVzdCBvbmUsIHNpbmNlIHdlIHdvdWxkIG5lZWQgYSBwb2ludGVyIHRvIGJlIDAg dG8gYmUgYWNjZXNzaWJsZSBhdCANCltTSVpFX01BWF0sIGJ1dCBpZiB5b3UgcmVwbGFjZSB0 aG9zZSBieSAtUkFORE9NLCBhbmQgKHNpemVfdCktUkFORE9NLCB0aGVuIHRoZSANCmNvbXBp bGVyIGRlZmluaXRlbHkgbmVlZHMgdG8gZ2VuZXJhdGUgZGlmZmVyZW50IGNvZGUsIHlldCBp dCBkb2Vzbid0Lg0KDQpJJ20gZ3Vlc3NpbmcgdGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gYnkg R0NDIGtub3dpbmcgdGhhdCB3ZSB3aWxsIG5ldmVyIGJlIGNsb3NlIA0KdG8gdXNpbmcgdGhl IHdob2xlIDY0LWJpdCBhZGRyZXNzIHNwYWNlLiAgSWYgd2UgdXNlIGludCBhbmQgdW5zaWdu ZWQsIHRoaW5ncyBjaGFuZ2U6DQoNCiQgY2F0IHMuYw0KY2hhcg0KZihjaGFyICpwLCBpbnQg aSkNCnsNCglyZXR1cm4gcFtpXTsNCn0NCmFseEBhc3VzNTc3NTp+L3RtcCQgY2F0IHUuYw0K Y2hhcg0KZihjaGFyICpwLCB1bnNpZ25lZCBpKQ0Kew0KCXJldHVybiBwW2ldOw0KfQ0KJCBj YyAtV2FsbCAtV2V4dHJhIC1XZXJyb3IgLVMgLU8zIHMuYyB1LmMNCiQgZGlmZiAtdSB1LnMg cy5zDQotLS0gdS5zCTIwMjItMTEtMTcgMjM6NDQ6NTQuNDQ2MzE4MTg2ICswMTAwDQorKysg cy5zCTIwMjItMTEtMTcgMjM6NDQ6NTQuNDM0MzE4NDA5ICswMTAwDQpAQCAtMSw0ICsxLDQg QEANCi0JLmZpbGUJInUuYyINCisJLmZpbGUJInMuYyINCiAgCS50ZXh0DQogIAkucDJhbGln biA0DQogIAkuZ2xvYmwJZg0KQEAgLTYsNyArNiw3IEBADQogIGY6DQogIC5MRkIwOg0KICAJ LmNmaV9zdGFydHByb2MNCi0JbW92bAklZXNpLCAlZXNpDQorCW1vdnNscQklZXNpLCAlcnNp DQogIAltb3Z6YmwJKCVyZGksJXJzaSksICVlYXgNCiAgCXJldA0KICAJLmNmaV9lbmRwcm9j DQoNCg0KSSdtIGd1ZXNzaW5nIHRoYXQgR0NDIGRvZXNuJ3QgZG8gdGhlIGFzc3VtcHRpb24g aGVyZSwgYW5kIEkgZ3Vlc3MgdGhlIHVuc2lnbmVkIA0KdmVyc2lvbiB3b3VsZCBjcmFzaCwg d2hpbGUgdGhlIHNpZ25lZCB2ZXJzaW9uIHdvdWxkIGNhdXNlIG5hc2FsIGRlbW9ucy4gIEFu eXdheSwgDQpub3cgdGhhdCBJJ20gaGVyZSwgSSdsbCB0ZXN0IGl0Og0KDQoNCiQgY2F0IHMu Yw0KW1tnbnU6Om5vaXBhXV0NCmNoYXINCmYoY2hhciAqcCwgaW50IGkpDQp7DQoJcmV0dXJu IHBbaV07DQp9DQoNCmludCBtYWluKHZvaWQpDQp7DQoJaW50IGkgPSAtMTsNCgljaGFyIGNb NF07DQoNCglyZXR1cm4gZihjLCBpKTsNCn0NCiQgY2MgLVdhbGwgLVdleHRyYSAtV2Vycm9y IC1PMyBzLmMNCiQgLi9hLm91dA0KJCBlY2hvICQ/DQowDQoNCg0KJCBjYXQgdS5jDQpbW2du dTo6bm9pcGFdXQ0KY2hhcg0KZihjaGFyICpwLCB1bnNpZ25lZCBpKQ0Kew0KCXJldHVybiBw W2ldOw0KfQ0KDQppbnQgbWFpbih2b2lkKQ0Kew0KCXVuc2lnbmVkIGkgPSAtMTsNCgljaGFy IGNbNF07DQoNCglyZXR1cm4gZihjLCBpKTsNCn0NCiQgY2MgLVdhbGwgLVdleHRyYSAtV2Vy cm9yIC1PMyB1LmMNCiQgLi9hLm91dA0KU2VnbWVudGF0aW9uIGZhdWx0DQoNCg0KSSBnZXQg dGhpcyBTRUdWIGRpZmZlcmVuY2UgY29uc2lzdGVudGx5LiAgSSBDQ2VkIGdjY0AgaW4gY2Fz ZSB0aGV5IGNvbnNpZGVyIHRoaXMgDQp0byBiZSBzb21ldGhpbmcgdGhleSB3YW50IHRvIGFk ZHJlc3MuICBNYXliZSB0aGUgb3B0aW1pemF0aW9uIGlzIGltcG9ydGFudCBmb3IgDQpzaXpl X3Qtc2l6ZWQgaW5kaWNlcywgYnV0IGlmIGl0IGlzIG5vdCwgSSdkIHByZWZlciBnZXR0aW5n IHRoZSBTRUdWIGZvciBTSVpFX01BWC4NCg0KPiANCj4gWWVzLCBkZWJ1Z2dpbmcgaW1wbGVt ZW50YXRpb25zIG1pZ2h0IGNhdGNoIHBbU0laRV9NQVhdLCBidXQgdGhlIG9uZXMgdGhhdCBk byANCj4gd2lsbCBsaWtlbHkgY2F0Y2ggcFstMV0gYXMgd2VsbC4NCj4gDQo+IEluIHNob3J0 LCB0aGVyZSdzIGxpdHRsZSBhZHZhbnRhZ2UgdG8gdXNpbmcgc2l6ZV90IGZvciBpbmRleGVz LCBhbmQgdGhlcmUgYXJlIA0KPiByZWFsIGRpc2FkdmFudGFnZXMgZHVlIHRvIGNvbXBhcmlz b24gY29uZnVzaW9uIGFuZCBsYWNrIG9mIHNpZ25lZCBpbnRlZ2VyIA0KPiBvdmVyZmxvdyBj aGVja2luZy4NCj4gDQo+IA0KPj4+IEZpcnN0LCBHdXN0ZWR0IHRlY2huaWNhbGx5IGluY29y cmVjdCwgYmVjYXVzZSB0aGUgY29kZSAqY2FuKiB0cmFwIG9uIA0KPj4+IHBsYXRmb3JtcyB3 aGVyZSBTSVpFX01BWCA8PSBJTlRfTUFYLA0KPiANCj4+IEkgaG9uZXN0bHkgZG9uJ3Qga25v dyBvZiBhbnkgZXhpc3RpbmcgcGxhdGZvcm1zIHdoZXJlIHRoYXQgaXMgdHJ1ZQ0KPiANCj4g VGhleSdyZSBhIGR5aW5nIGJyZWVkLiBUaGUgbWFpbiBwcm9ibGVtIGZyb20gbXkgcG9pbnQg b2YgdmlldyBpcyB0aGF0IEMgYW5kIA0KPiBQT1NJWCBhbGxvdyB0aGVzZSBvZGRiYWxscywg c28gaWYgeW91IHdhbnQgdG8gd3JpdGUgcmVhbGx5IHBvcnRhYmxlIGNvZGUgeW91IA0KPiBo YXZlIHRvIHdvcnJ5IGFib3V0IHRoZW0gLSBhbmQgdGhpcyB1bmRlcnN0YWRhYmx5IGRpc2Nv dXJhZ2VzIHBlb3BsZSBmcm9tIA0KPiB3cml0aW5nIHJlYWxseSBwb3J0YWJsZSBjb2RlLiAo V2hhdCdzIHRoZSBwb2ludCBvZiBjb2RpbmcgdG8gdGhlIHN0YW5kYXJkcyBpZiANCj4gaXQn cyBqdXN0IGEgYnVuY2ggb2YgbWFrZS13b3JrPykNCg0KSSB1bmRlcnN0YW5kIHlvdXIgcG9p bnQsIHNpbmNlIHlvdSB3b3JrIG9uIGhpZ2hseS1wb3J0YWJsZSBjb2RlLg0KDQpCdXQgdGhl cmUncyBhbHdheXMgYSB0cmFkZW9mZiwgYW5kIEknZCB2ZXJ5IG11Y2ggbGlrZSB0aGF0IHRo ZSBzdGFuZGFyZHMgZGlkbid0IA0KYWxsb3cgc3VjaCBvZGRiYWxscy4gIFRoZXkncmUgY2xl YW5pbmcgdXAgd2l0aCBDMjMsIHNvIGl0IHNlZW1zIHRvIGJlIGdvaW5nIGluIA0KdGhlIGdv b2QgZGlyZWN0aW9uLiAgSSByZW1lbWJlciB0aGlzIGRpc2N1c3Npb24gd2UgaGFkIHdpdGgg SUxQNjQuICBJIGhvcGUgaW4gDQp0aGUgZnV0dXJlIHRob3NlIG9kZGJhbGxzIGdldCByZWR1 Y2VkIGNvbnNpZGVyYWJseS4gIEx1Y2tpbHksIFNJWkVfTUFYPklOVF9NQVggDQpzZWVtcyB0 byBiZSBxdWl0ZSBtb3JlIHVuY29tbW9uIHRoYW4gSUxQNjQuDQoNCj4gDQo+IEFueXdheSwg b25lIGV4YW1wbGUgaXMgVW5pc3lzIENsZWFycGF0aCBDLCBpbiB3aGljaCBJTlRfTUFYIGFu ZCBTSVpFX01BWCBib3RoIA0KPiBlcXVhbCAyKiozOSAtIDEuDQoNCkxvbC4gIEl0IHdvdWxk IGhhdmUgYmVlbiBmdW4gdG8gc2VlIGl0IGJlIDIqKjQyIC0gMS4NCg0KPiBUaGlzIGlzIGFs bG93ZWQgYnkgdGhlIGN1cnJlbnQgUE9TSVggYW5kIEMgc3RhbmRhcmRzLCBhbmQgdGhpcyAN Cj4gY29tcGlsZXIgaXMgc3RpbGwgZm9yIHNhbGUgYW5kIHN1cHBvcnRlZC4gKEkgZG91YnQg d2hldGhlciB0aGV5J2xsIHBvcnQgaXQgdG8gDQo+IEMyMywgc28gdGhlcmUncyB0aGF0Li4u LikNCg0KSGVoLCBJIG5vdyBkb24ndCByZW1lbWJlciB0aGUgbmFtZSBvZiB0aGlzIGNvbXBp bGVyIHRoYXQgYXR0ZW1wdGVkIHRvIGltcGxlbWVudCANClVCIGluIHRoZSBtb3N0IHVuZXhw ZWN0ZWQgd2F5cyBvbiBwdXJwb3NlIGp1c3QgZm9yIGZ1biwgd2hpY2ggd2FzIGl0c2VsZiBh biANCmludGVyZXN0aW5nIGV4cGVyaW1lbnQgdG8gY2hlY2sgcG9ydGFiaWxpdHkgb2YgYSBn aXZlbiBjb2RlLiAgSXQgcmVtaW5kcyBtZSBvZiB0aGF0Lg0KDQo+IA0KPiANCj4+IEMyMyB3 aWxsIHJlcXVpcmUgdGhhdCBzaWduZWQgaW50ZWdlcnMgYXJlIDIncyBjb21wbGVtZW50LCB3 aGljaCBJIGd1ZXNzIA0KPj4gcmVtb3ZlcyB0aGUgcG9zc2liaWxpdHkgb2YgYSB0cmFwDQo+ IA0KPiBJdCBkb2Vzbid0IHJlbW92ZSB0aGUgcG9zc2liaWxpdHksIHNpbmNlIHNpZ25lZCBp bnRlZ2VycyBjYW4gaGF2ZSB0cmFwIA0KPiByZXByZXNlbnRhdGlvbnMuIEJ1dCB3ZSBhcmUg c3RyYXlpbmcgZnJvbSB0aGUgbW9yZSBpbXBvcnRhbnQgcG9pbnQuDQo+IA0KDQpDaGVlcnMs DQoNCkFsZXgNCg0KLS0gDQo8aHR0cDovL3d3dy5hbGVqYW5kcm8tY29sb21hci5lcy8+DQo= --------------PN2d3EGafF187fZ00eKgkfUL-- --------------K4dwpKu0hF16doxaTvi6sg3S Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE6jqH8KTroDDkXfJAnowa+77/2zIFAmN2vewACgkQnowa+77/ 2zLiQhAAkwOHt4irOPp0+8vNzKAMgIIQUGt5zr6ICmFyOsYBjjabosIqxRLNcAp2 boSmI9hV0TdBFqEucDCNZV7NUeQ66geM2fjjQjN2bLKa64mh9rMd/FqqK1cPzJ4m xI/DLV8D3HTJkwgq1A9EjAxrPJ2rgquz7l5hSGw9yrO6Yf7usW4yrL4ojLuzbuac vTC2J45qNpYCBUgX8dgDEg9KD7wyD6nC5JKu9o6RKWHqldIX5lfFh/k3Hz7doJo9 KW2G3ulPY08AFh6BrzglyxFX40Tkbr9NqavV2eRKZaMshmjWmMMNA1FeYRFRAf8Y QmzupxrSQt2YvWPpnYCPeHnHJfWZJuiC+YaR3Po+YZrhCXkHEW6PnVofgOYQKdfe dzdQFxdTwRhtiMm6EoVHjU7vlGoRin6nAmKw/9Pig/jchGI6I/K5cnSY5BOde3JR lVKWV4TJVEqkPxRuYgI66cjwhrXfmqxXpvjYYCbE2JPnIDp8lZDN9gdPyvethJlD EhfbE6nQK6AAqOw7S1g5z1LbypPsBcgBoSRR3Zwx6hfdM2ZsjQCksFFsjViCCPZw d+XD8Pkf2FjJzfnNXv42kcULnU5khCtr68SL3+kUtuucA8EydnMDQ3/fgF0F/emy QU/ueUUXlXzORm3OxvupC+Eqb+pZ9hjXZD/RJGVo3NPn73lkRsI= =ta1F -----END PGP SIGNATURE----- --------------K4dwpKu0hF16doxaTvi6sg3S--