delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org E83B8386F452 |
DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; |
s=default; t=1598896220; | |
bh=lwhJLRfNFiqTvzit5l8v5mp6sePfwJza/8miGfRV+DQ=; | |
h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: | |
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: | |
From; | |
b=gQHrJM/PCghbvdJiVUsQ69bhV28xWsK6fN7nan43bOGxNBE/ED7+bAkGdhHtWMp+J | |
ZuS83wszugAr5oZkqZqD3HRMB4ah7KS9BiAacqCLudc0pV5PDejvFSrY8DPgkB2WGJ | |
abih4Fcp5T53WDXwcXAyXDZU9pADJkM4kxeDlnIc= | |
X-Original-To: | cygwin AT cygwin DOT com |
Delivered-To: | cygwin AT cygwin DOT com |
DMARC-Filter: | OpenDMARC Filter v1.3.2 sourceware.org 29B78386F452 |
X-Google-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
d=1e100.net; s=20161025; | |
h=x-gm-message-state:mime-version:references:in-reply-to:from:date | |
:message-id:subject:to; | |
bh=JtBZaqQhjEOjsqkQZlu2QU7gyYvJ7qVdLzqLoukRFN0=; | |
b=Up2d1RdrU9g6Qc0x8RVjOEbD9B0KVPvSpx6lM1j2oFCID44pbkGP1YB2aNhHZtC85G | |
nwK9UkJlIKfALuvrXQhtbk/tgKE9NCMHmQB3mW5ByfIofUUYtIa0CM5tV7CEwMfFViZB | |
sfPaAUHJn3h/xJiCW+XL0cLzJXrMLi4Z/dI1rt6gUxK283sgN6yyEcaptd8uayM/+ndN | |
88ZMClZ34877FxRJOV0hY4LG2dlIK8PgoSjYFDiBxUGa+OXnrkaJR5JrcU7rZKecwZTu | |
OrgQhL6veX7MyJTvf03/M28U5nEztiV8YFPiwXOkU0m1bq9mlbLfplyboR4CI/JfnW7T | |
LxOw== | |
X-Gm-Message-State: | AOAM532zr/e8I0a9kUBUVA97CTNtUQoRF+Je8IlMQIwYZN0wmSShMgFl |
0XiqKpaJ+dx4vFDrbABOTATcQgrVmVp+5KmcpLM2tllx | |
X-Google-Smtp-Source: | ABdhPJyG+k82FRMecmcRdQWxj7bpg8Qbh34oznwpUgPIGWRj3KZnEJmmkNJ4Dyf+pM8akRkG1+pnHCt/xLq3PWjpbD4= |
X-Received: | by 2002:aca:f40a:: with SMTP id s10mr316527oih.126.1598896215381; |
Mon, 31 Aug 2020 10:50:15 -0700 (PDT) | |
MIME-Version: | 1.0 |
References: | <CAHybJinLYpcviSFiJ=V-EZqoatEzjFfr9DOUzxzmofUmtwMS+w AT mail DOT gmail DOT com> |
<c9792fdc-aedc-6934-e11f-732f841b533b AT SystematicSw DOT ab DOT ca> | |
In-Reply-To: | <c9792fdc-aedc-6934-e11f-732f841b533b@SystematicSw.ab.ca> |
Date: | Mon, 31 Aug 2020 10:50:03 -0700 |
Message-ID: | <CAHybJi=+uKitmwhWfuc564xz6qxZF+H=rA87LaB1NBJPkBAsUA@mail.gmail.com> |
Subject: | Re: cygwin qsort erratic |
To: | cygwin AT cygwin DOT com |
X-Spam-Status: | No, score=2.5 required=5.0 tests=BAYES_50, DKIM_SIGNED, |
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, | |
FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, | |
TXREP autolearn=ham autolearn_force=no version=3.4.2 | |
X-Spam-Level: | ** |
X-Spam-Checker-Version: | SpamAssassin 3.4.2 (2018-09-13) on |
server2.sourceware.org | |
X-Content-Filtered-By: | Mailman/MimeDel 2.1.29 |
X-BeenThere: | cygwin AT cygwin DOT com |
X-Mailman-Version: | 2.1.29 |
List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
From: | Kurt-Karen Carlson-Lougheed via Cygwin <cygwin AT cygwin DOT com> |
Reply-To: | Kurt-Karen Carlson-Lougheed <denalisun907 AT gmail DOT com> |
Sender: | "Cygwin" <cygwin-bounces AT cygwin DOT com> |
--000000000000f3f0e405ae30085b Content-Type: text/plain; charset="UTF-8" Brian, It's difficult to produce a simple test case with erratic behavior. I have wrapped my qsort invocations within a qqsort routine. I've attached qqsort.h which includes both the wrapper and the netbad qsort.c renamed as Qsort (and with _DIAGASSERT's commented out). Also attached is cygsort.txt which is script output demonstrating the problem. My apologies that is 200+ lines, the Verbose mode states whether Qsort (netbsd) or qsort (cygwin) is being invoked, I added the '$' command to toggle back and forth. Descending sorts on the D/C (dpc) column have been most problematic. The descending '+S dpc' after the ascending '+s dpc' is the most graphic example. I did publish uac19 v3.3 on SourceForge this morning, or I can send somebody a tgz. Corinna, I'm a cygwin user and neither a cygwin nor netbsd developer. I do not know what newlib or 'git format-patch' are. If I had access to source for cygwin's qsort I could probably devise a patch, but it's probably better for somebody familiar with the tools cygwin uses to do that. The attached qqsort.h is an easy geek read. That qsort works with Linux/RHEL7 and with netbsd's version under cygwin should make fixing it straight forward for somebody in the know. Regards, Kurt On Sun, Aug 30, 2020 at 7:55 PM Brian Inglis < Brian DOT Inglis AT systematicsw DOT ab DOT ca> wrote: > On 2020-08-30 15:27, Kurt-Karen Carlson-Lougheed via Cygwin wrote: > > In a small percentage of qsort requests, the results are erratic. Running > > the same code under Linux (RHEL7) does NOT have this problem. I updated > my > > cygwin to current and the problem persists. I copied the latest > netbsd.org > > qsort.c and compiled into my code, the problem is resolved with that > > version of qsort. > > > > In researching this issue, there was a post to this list 2015-01-11 > > reporting a > > 'damaged' qsort. This may still be the same issue. The netbsd version I > am > > now using is dated 2017-05-19. > > > > My code experiencing this is SourceForge uac19, I'll be posting the > > corrected version (v3.2) with the netbsd qsort tomorrow after completing > > validation tests. I would ultimately like to see cygwin's qsort fixed. > > As qsort depends on the array object data types and comparison functions, > please > post a Simple Test Case, showing at least those types and function(s), and > the > faulty output results. > > -- > Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada > > This email may be disturbing to some readers as it contains > too much technical detail. Reader discretion is advised. > [Data in IEC units and prefixes, physical quantities in SI.] > -- > Problem reports: https://cygwin.com/problems.html > FAQ: https://cygwin.com/faq/ > Documentation: https://cygwin.com/docs.html > Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple > --000000000000f3f0e405ae30085b Content-Type: text/plain; charset="US-ASCII"; name="cygsort.txt" Content-Disposition: attachment; filename="cygsort.txt" Content-Transfer-Encoding: base64 Content-ID: <f_keirlbqa1> X-Attachment-Id: f_keirlbqa1 U2NyaXB0IHN0YXJ0ZWQgb24gMjAyMC0wOC0zMSAwODo1NDo1OC0wNzowMCBbVEVSTT0ieHRlcm0i IFRUWT0iL2Rldi9wdHkxIiBDT0xVTU5TPSIxMzIiIExJTkVTPSI1NCJdCmtjOiB1YWMxOSAtLXZl cnNpb24KIyB1YWMxOSB2My4zLCBQYWNrYWdlOiB1YWMxOS12My4zCmtjOiB1YWMxOSAtdXNlIG93 aWQgLXYgIyBjdXJsIHRvZGF5J3MgZmlsZQojIFJlcG9ydCAgICAgbmFtZXM6IAlVUyBXTwpDdXJs OiBjaGRpciAvaG9tZS9rYWMvRG93bmxvYWRzCiMgc3lzdGVtIChjdXJsIC0taW5zZWN1cmUgLU8g LSMgaHR0cHM6Ly9jb3ZpZC5vdXJ3b3JsZGluZGF0YS5vcmcvZGF0YS9vd2lkLWNvdmlkLWRhdGEu Y3N2IDI+L2Rldi9udWxsKQpPcGVuOiAvdXNyL2xvY2FsL2V0Yy9Db3VudHJpZXM6Ck9wZW46IC91 c3IvbG9jYWwvZXRjL0NvLVJlbWFwOgojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVt bnM9MWNpcGRFZXZsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1pIDEgIC12CiMgIC1uIFVTLFdP CkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgICAgSW5jLiUgIERlYXRocyAgRGllZCsgRGF5cyBu YSxjb3UgTG9jYXRpb24KLS0tLSAgIC0tLS0tLS0tLSAtLS0tLS0tLSAgICAtLS0tLSAgLS0tLS0t ICAtLS0tLSAtLS0tIC0tLS0tLSAtLS0tLS0tLQowOC0zMSAgIDI1MjUxMzM0ICAgMjIxNDg0ICAg ICAwLjklICA4NDY4NDEgIDM2ODcrICAxLjAgV08sV09SIFdvcmxkCjA4LTMxICAgIDU5OTcxNjMg ICAgMzU1ODEgICAgIDAuNiUgIDE4MzA2OSAgIDI5MCsgIDEuMCBVUyxVU0EgVW5pdGVkIFN0YXRl cwprYzogdWFjMTkgLWYgfi9Eb3dubG9hZHMvb3dpZC1jb3ZpZC1kYXRhLmNzdiAteCAjIGludGVy YWN0aXZlIG1vZGUgCkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgICAgSW5jLiUgIERlYXRocyAg RGllZCsgRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0tLS0tIC0tLS0tLS0tICAgIC0tLS0tICAt LS0tLS0gIC0tLS0tIC0tLS0gLS0tLS0tLS0KMDgtMzEgICAyNTI1MTMzNCAgIDIyMTQ4NCAgICAg MC45JSAgODQ2ODQxICAzNjg3KyAgMS4wIFdvcmxkCjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEg ICAgIDAuNiUgIDE4MzA2OSAgIDI5MCsgIDEuMCBVbml0ZWQgU3RhdGVzCk9wdGlvbnM/IC1uIC4g K2MgZHBjLC1pbmMuLGRpZSAtcG9wIDEgLXBjdCAxICMgYWRqdXN0IGNvbHVtbnMsIG1pbmltdW0g MSUgY29uZmlybWVkCkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgIERlYXRocyAgRC9DJSBNaWxs aW9uIFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0gICAtLS0tLS0tLS0gLS0tLS0tLS0gIC0tLS0t LSAgLS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0tLS0tLS0tCjA4LTMxICAgICA2MjUwNTYgICAg IDI1MDUgICAxNDAyOCAgMi4yJSAgICA1OS4yICAxLjA1NiAgMS4wIFNvdXRoIEFmcmljYQowOC0z MSAgICAgIDQzNzUwICAgICAgMTI0ICAgICA4NzcgIDIuMCUgICAgIDMuMCAgMS40NzcgIDEuMCBB cm1lbmlhCjA4LTMxICAgICAxMTQwMjAgICAgICAzOTcgICAgIDkxOSAgMC44JSAgICAgOC42ICAx LjMyMCAgMS4wIElzcmFlbAowOC0zMSAgICAgIDUxNTc0ICAgICAgMTgzICAgICAxODkgIDAuNCUg ICAgIDEuNyAgMy4wNDUgIDEuMCBCYWhyYWluCjA4LTMxICAgICAgODU1NDQgICAgICA1MzkgICAg IDY3NyAgMC44JSAgICAgNS4xICAxLjY4MiAgMS4wIE9tYW4KMDgtMzEgICAgIDExODU3NSAgICAg IDE2OCAgICAgMTk3ICAwLjIlICAgICAyLjkgIDQuMTI4ICAxLjAgUWF0YXIKMDgtMzEgICAgICA4 NDYzNiAgICAgIDQxMiAgICAgNTMwICAwLjYlICAgICA0LjMgIDEuOTg3ICAxLjAgS3V3YWl0CjA4 LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAxLjgxMiAgMS4w IFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgICAzMjg0OCAgICAgIDI5OCAgICAgNDM0ICAxLjMlICAg ICAyLjkgIDEuMTQ1ICAxLjAgUHVlcnRvIFJpY28KMDgtMzEgICAgICA5MjA2NSAgICAgIDcyOCAg ICAxOTk1ICAyLjIlICAgICA0LjMgIDIuMTM5ICAxLjAgUGFuYW1hCjA4LTMxICAgIDM4NjIzMTEg ICAgMTYxNTggIDEyMDgyOCAgMy4xJSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0zMSAg ICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODggIDQuNCUgICAgMzIuOSAgMS45NjYgIDEuMCBQZXJ1 CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAgICA1MC44ICAxLjE5NiAg MS4wIENvbG9tYmlhCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAx OS4xICAyLjE0NyAgMS4wIENoaWxlCk9wdGlvbnM/IC1WICtjIC12ICtTIGNvbmYgIyB2ZXJ5IHZl cmJvc2UsIHNvcnQgY29uZmlybWUgZGVzY2VuZGluZwojIENoa1NvcnQgMDQgMCwwLDEgYyBDb25m aXJtZWQgMQojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVsCiMg dWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1pIDEgICtTIENvbmZpcm1l ZCAgLVYgIC14CkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgIERlYXRocyAgRC9DJSBNaWxsaW9u IFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0gICAtLS0tLS0tLS0gLS0tLS0tLS0gIC0tLS0tLSAg LS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0tLS0tLS0tCiMgUXNvcnQ6Q29uZmlybWVkCiMgbF9z b3J0OjA6CjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAx LjgxMiAgMS4wIFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgMzg2MjMxMSAgICAxNjE1OCAgMTIwODI4 ICAzLjElICAgMjEyLjMgIDEuODE5ICAxLjAgQnJhemlsCjA4LTMxICAgICA2NDcxNjYgICAgIDc3 MzEgICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUKMDgtMzEgICAgIDYyNTA1 NiAgICAgMjUwNSAgIDE0MDI4ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAxLjAgU291dGggQWZyaWNh CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAgICA1MC44ICAxLjE5NiAg MS4wIENvbG9tYmlhCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAx OS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAgICAxMTg1NzUgICAgICAxNjggICAgIDE5NyAg MC4yJSAgICAgMi45ICA0LjEyOCAgMS4wIFFhdGFyCjA4LTMxICAgICAxMTQwMjAgICAgICAzOTcg ICAgIDkxOSAgMC44JSAgICAgOC42ICAxLjMyMCAgMS4wIElzcmFlbAowOC0zMSAgICAgIDkyMDY1 ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEg ICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAgICA1LjEgIDEuNjgyICAxLjAgT21h bgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUgICAgIDQuMyAgMS45ODcg IDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAx LjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDQzNzUwICAgICAgMTI0ICAgICA4Nzcg IDIuMCUgICAgIDMuMCAgMS40NzcgIDEuMCBBcm1lbmlhCjA4LTMxICAgICAgMzI4NDggICAgICAy OTggICAgIDQzNCAgMS4zJSAgICAgMi45ICAxLjE0NSAgMS4wIFB1ZXJ0byBSaWNvCiMgRGlzcGxh eWVkIDE0Ck9wdGlvbnM/ICtTIGRwYyAjIHNvcnQgZC9jIGRlc2NlbmRpbmcKIyBDaGtTb3J0IDEy IDAsMCwxIFcgRC9DJSAxCiMgQ2hrU29ydCAxMyAwLDAsMSBXIERwQyAxCiMgRGF5czogMjQ1IEZp cnN0PTAgTGFzdD0yNDUgQ29sdW1ucz0xY2lkV21ZZWwKIyB1YWMxOSAgLW0gNTAwICAtZCA1MCAg LVAgIDEuMCAgLVkgIDEuMCAgLWkgMSAgK1MgRC9DJSAgLVYgIC14CkRhdGUgICBDb25maXJtZWQg SW5jcmVhc2UgIERlYXRocyAgRC9DJSBNaWxsaW9uIFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0g ICAtLS0tLS0tLS0gLS0tLS0tLS0gIC0tLS0tLSAgLS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0t LS0tLS0tCiMgUXNvcnQ6RC9DJQojIGxEc29ydDowCjA4LTMxICAgICA2NDcxNjYgICAgIDc3MzEg ICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUKMDgtMzEgICAgIDYwNzkzOCAg ICAgODAyNCAgIDE5MzY0ICAzLjIlICAgIDUwLjggIDEuMTk2ICAxLjAgQ29sb21iaWEKMDgtMzEg ICAgMzg2MjMxMSAgICAxNjE1OCAgMTIwODI4ICAzLjElICAgMjEyLjMgIDEuODE5ICAxLjAgQnJh emlsCjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAxLjgx MiAgMS4wIFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgIDQwOTk3NCAgICAgMTk2NSAgIDExMjQ0ICAy LjclICAgIDE5LjEgIDIuMTQ3ICAxLjAgQ2hpbGUKMDgtMzEgICAgIDYyNTA1NiAgICAgMjUwNSAg IDE0MDI4ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAxLjAgU291dGggQWZyaWNhCjA4LTMxICAgICAg OTIwNjUgICAgICA3MjggICAgMTk5NSAgMi4yJSAgICAgNC4zICAyLjEzOSAgMS4wIFBhbmFtYQow OC0zMSAgICAgIDQzNzUwICAgICAgMTI0ICAgICA4NzcgIDIuMCUgICAgIDMuMCAgMS40NzcgIDEu MCBBcm1lbmlhCjA4LTMxICAgICAgMzI4NDggICAgICAyOTggICAgIDQzNCAgMS4zJSAgICAgMi45 ICAxLjE0NSAgMS4wIFB1ZXJ0byBSaWNvCjA4LTMxICAgICAxMTQwMjAgICAgICAzOTcgICAgIDkx OSAgMC44JSAgICAgOC42ICAxLjMyMCAgMS4wIElzcmFlbAowOC0zMSAgICAgIDg1NTQ0ICAgICAg NTM5ICAgICA2NzcgIDAuOCUgICAgIDUuMSAgMS42ODIgIDEuMCBPbWFuCjA4LTMxICAgICAgODQ2 MzYgICAgICA0MTIgICAgIDUzMCAgMC42JSAgICAgNC4zICAxLjk4NyAgMS4wIEt1d2FpdAowOC0z MSAgICAgIDUxNTc0ICAgICAgMTgzICAgICAxODkgIDAuNCUgICAgIDEuNyAgMy4wNDUgIDEuMCBC YWhyYWluCjA4LTMxICAgICAxMTg1NzUgICAgICAxNjggICAgIDE5NyAgMC4yJSAgICAgMi45ICA0 LjEyOCAgMS4wIFFhdGFyCiMgRGlzcGxheWVkIDE0Ck9wdGlvbnM/ICQgIyB0b2dnbGUgbmV0YnNk IFFzb3J0IHRvIGN5Z3dpbiBxc29ydAojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVt bnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1p IDEgICtTIEQvQyUgIC1WICAteApEYXRlICAgQ29uZmlybWVkIEluY3JlYXNlICBEZWF0aHMgIEQv QyUgTWlsbGlvbiBQY3QuQ28gRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0tLS0tIC0tLS0tLS0t ICAtLS0tLS0gIC0tLS0gLS0tLS0tLSAtLS0tLS0gLS0tLSAtLS0tLS0tLQojIHFzb3J0OkQvQyUK IyBsRHNvcnQ6MAowOC0zMSAgICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODggIDQuNCUgICAgMzIu OSAgMS45NjYgIDEuMCBQZXJ1CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4y JSAgICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgIDM4NjIzMTEgICAgMTYxNTgg IDEyMDgyOCAgMy4xJSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0zMSAgICA1OTk3MTYz ICAgIDM1NTgxICAxODMwNjkgIDMuMSUgICAzMzEuMCAgMS44MTIgIDEuMCBVbml0ZWQgU3RhdGVz CjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAxOS4xICAyLjE0NyAg MS4wIENoaWxlCjA4LTMxICAgICA2MjUwNTYgICAgIDI1MDUgICAxNDAyOCAgMi4yJSAgICA1OS4y ICAxLjA1NiAgMS4wIFNvdXRoIEFmcmljYQowOC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5 OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAgICA0Mzc1MCAgICAg IDEyNCAgICAgODc3ICAyLjAlICAgICAzLjAgIDEuNDc3ICAxLjAgQXJtZW5pYQowOC0zMSAgICAg IDMyODQ4ICAgICAgMjk4ICAgICA0MzQgIDEuMyUgICAgIDIuOSAgMS4xNDUgIDEuMCBQdWVydG8g UmljbwowOC0zMSAgICAgMTE0MDIwICAgICAgMzk3ICAgICA5MTkgIDAuOCUgICAgIDguNiAgMS4z MjAgIDEuMCBJc3JhZWwKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAg ICA1LjEgIDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAg IDAuNiUgICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4 MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgMTE4 NTc1ICAgICAgMTY4ICAgICAxOTcgIDAuMiUgICAgIDIuOSAgNC4xMjggIDEuMCBRYXRhcgojIERp c3BsYXllZCAxNApPcHRpb25zPyArUyBjb25mICMgcmVzb3J0IGNvbmZpcm1lZAojIENoa1NvcnQg MDQgMCwwLDEgYyBDb25maXJtZWQgMQojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVt bnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1p IDEgICtTIENvbmZpcm1lZCAgLVYgIC14CkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgIERlYXRo cyAgRC9DJSBNaWxsaW9uIFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0gICAtLS0tLS0tLS0gLS0t LS0tLS0gIC0tLS0tLSAgLS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0tLS0tLS0tCiMgcXNvcnQ6 Q29uZmlybWVkCiMgbF9zb3J0OjA6CjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAg My4xJSAgIDMzMS4wICAxLjgxMiAgMS4wIFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgMzg2MjMxMSAg ICAxNjE1OCAgMTIwODI4ICAzLjElICAgMjEyLjMgIDEuODE5ICAxLjAgQnJhemlsCjA4LTMxICAg ICA2NDcxNjYgICAgIDc3MzEgICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUK MDgtMzEgICAgIDYyNTA1NiAgICAgMjUwNSAgIDE0MDI4ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAx LjAgU291dGggQWZyaWNhCjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAg ICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAx MTI0NCAgMi43JSAgICAxOS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAgICAxMTg1NzUgICAg ICAxNjggICAgIDE5NyAgMC4yJSAgICAgMi45ICA0LjEyOCAgMS4wIFFhdGFyCjA4LTMxICAgICAx MTQwMjAgICAgICAzOTcgICAgIDkxOSAgMC44JSAgICAgOC42ICAxLjMyMCAgMS4wIElzcmFlbAow OC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEu MCBQYW5hbWEKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAgICA1LjEg IDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUg ICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAg MTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDQzNzUwICAg ICAgMTI0ICAgICA4NzcgIDIuMCUgICAgIDMuMCAgMS40NzcgIDEuMCBBcm1lbmlhCjA4LTMxICAg ICAgMzI4NDggICAgICAyOTggICAgIDQzNCAgMS4zJSAgICAgMi45ICAxLjE0NSAgMS4wIFB1ZXJ0 byBSaWNvCiMgRGlzcGxheWVkIDE0Ck9wdGlvbnM/ICtTIGRwYyAjIHNvcnQgZC9jIGFnYWluIChj eWd3aW4gcXNvcnQpCiMgQ2hrU29ydCAxMiAwLDAsMSBXIEQvQyUgMQojIENoa1NvcnQgMTMgMCww LDEgVyBEcEMgMQojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVs CiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1pIDEgICtTIEQvQyUg IC1WICAteApEYXRlICAgQ29uZmlybWVkIEluY3JlYXNlICBEZWF0aHMgIEQvQyUgTWlsbGlvbiBQ Y3QuQ28gRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0tLS0tIC0tLS0tLS0tICAtLS0tLS0gIC0t LS0gLS0tLS0tLSAtLS0tLS0gLS0tLSAtLS0tLS0tLQojIHFzb3J0OkQvQyUKIyBsRHNvcnQ6MAow OC0zMSAgICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODggIDQuNCUgICAgMzIuOSAgMS45NjYgIDEu MCBQZXJ1CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAgICA1MC44ICAx LjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgIDM4NjIzMTEgICAgMTYxNTggIDEyMDgyOCAgMy4x JSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0zMSAgICAgNDA5OTc0ICAgICAxOTY1ICAg MTEyNDQgIDIuNyUgICAgMTkuMSAgMi4xNDcgIDEuMCBDaGlsZQowOC0zMSAgICAgNjI1MDU2ICAg ICAyNTA1ICAgMTQwMjggIDIuMiUgICAgNTkuMiAgMS4wNTYgIDEuMCBTb3V0aCBBZnJpY2EKMDgt MzEgICAgNTk5NzE2MyAgICAzNTU4MSAgMTgzMDY5ICAzLjElICAgMzMxLjAgIDEuODEyICAxLjAg VW5pdGVkIFN0YXRlcwowOC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAg IDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAgICA0Mzc1MCAgICAgIDEyNCAgICAgODc3 ICAyLjAlICAgICAzLjAgIDEuNDc3ICAxLjAgQXJtZW5pYQowOC0zMSAgICAgIDMyODQ4ICAgICAg Mjk4ICAgICA0MzQgIDEuMyUgICAgIDIuOSAgMS4xNDUgIDEuMCBQdWVydG8gUmljbwowOC0zMSAg ICAgMTE0MDIwICAgICAgMzk3ICAgICA5MTkgIDAuOCUgICAgIDguNiAgMS4zMjAgIDEuMCBJc3Jh ZWwKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAgICA1LjEgIDEuNjgy ICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUgICAgIDQu MyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAw LjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgMTE4NTc1ICAgICAgMTY4 ICAgICAxOTcgIDAuMiUgICAgIDIuOSAgNC4xMjggIDEuMCBRYXRhcgojIERpc3BsYXllZCAxNApP cHRpb25zPyAjIG5vdGUgYWJvdmUgbm90IGluIG9yZGVyCiMgRGF5czogMjQ1IEZpcnN0PTAgTGFz dD0yNDUgQ29sdW1ucz0xY2lkV21ZZWwKIyB1YWMxOSAgLW0gNTAwICAtZCA1MCAgLVAgIDEuMCAg LVkgIDEuMCAgLWkgMSAgK1MgRC9DJSAgLVYgIC14Ck9wdGlvbnM/ICtzIGRwYyAjIHNvcnQgZC9j IGFzY2VuZGluZwojIENoa1NvcnQgMTIgMCwxLDAgVyBEL0MlIDEKIyBDaGtTb3J0IDEzIDAsMSww IFcgRHBDIDEKIyBEYXlzOiAyNDUgRmlyc3Q9MCBMYXN0PTI0NSBDb2x1bW5zPTFjaWRXbVllbAoj IHVhYzE5ICAtbSA1MDAgIC1kIDUwICAtUCAgMS4wICAtWSAgMS4wICAtaSAxICArcyBEL0MlICAt ViAgLXgKRGF0ZSAgIENvbmZpcm1lZCBJbmNyZWFzZSAgRGVhdGhzICBEL0MlIE1pbGxpb24gUGN0 LkNvIERheXMgTG9jYXRpb24KLS0tLSAgIC0tLS0tLS0tLSAtLS0tLS0tLSAgLS0tLS0tICAtLS0t IC0tLS0tLS0gLS0tLS0tIC0tLS0gLS0tLS0tLS0KIyBxc29ydDpEL0MlCiMgbERzb3J0OjEKMDgt MzEgICAgIDExODU3NSAgICAgIDE2OCAgICAgMTk3ICAwLjIlICAgICAyLjkgIDQuMTI4ICAxLjAg UWF0YXIKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMu MDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUg ICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAg Njc3ICAwLjglICAgICA1LjEgIDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgMTE0MDIwICAgICAg Mzk3ICAgICA5MTkgIDAuOCUgICAgIDguNiAgMS4zMjAgIDEuMCBJc3JhZWwKMDgtMzEgICAgICAz Mjg0OCAgICAgIDI5OCAgICAgNDM0ICAxLjMlICAgICAyLjkgIDEuMTQ1ICAxLjAgUHVlcnRvIFJp Y28KMDgtMzEgICAgICA0Mzc1MCAgICAgIDEyNCAgICAgODc3ICAyLjAlICAgICAzLjAgIDEuNDc3 ICAxLjAgQXJtZW5pYQowOC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAg IDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAgIDYyNTA1NiAgICAgMjUwNSAgIDE0MDI4 ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAxLjAgU291dGggQWZyaWNhCjA4LTMxICAgICA0MDk5NzQg ICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAxOS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAg IDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAxLjgxMiAgMS4wIFVuaXRl ZCBTdGF0ZXMKMDgtMzEgICAgMzg2MjMxMSAgICAxNjE1OCAgMTIwODI4ICAzLjElICAgMjEyLjMg IDEuODE5ICAxLjAgQnJhemlsCjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4y JSAgICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgICA2NDcxNjYgICAgIDc3MzEg ICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUKIyBEaXNwbGF5ZWQgMTQKT3B0 aW9ucz8gK1MgZC9jICMgc29ydCBkL2MgZGVzY2VuZGluZwojIENoa1NvcnQgMTIgMCwwLDEgVyBE L0MlIDEKIyBEYXlzOiAyNDUgRmlyc3Q9MCBMYXN0PTI0NSBDb2x1bW5zPTFjaWRXbVllbAojIHVh YzE5ICAtbSA1MDAgIC1kIDUwICAtUCAgMS4wICAtWSAgMS4wICAtaSAxICArUyBEL0MlICAtViAg LXgKRGF0ZSAgIENvbmZpcm1lZCBJbmNyZWFzZSAgRGVhdGhzICBEL0MlIE1pbGxpb24gUGN0LkNv IERheXMgTG9jYXRpb24KLS0tLSAgIC0tLS0tLS0tLSAtLS0tLS0tLSAgLS0tLS0tICAtLS0tIC0t LS0tLS0gLS0tLS0tIC0tLS0gLS0tLS0tLS0KIyBxc29ydDpEL0MlCiMgbERzb3J0OjAKMDgtMzEg ICAgIDExODU3NSAgICAgIDE2OCAgICAgMTk3ICAwLjIlICAgICAyLjkgIDQuMTI4ICAxLjAgUWF0 YXIKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1 ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUgICAg IDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgIDExNDAyMCAgICAgIDM5NyAgICAgOTE5 ICAwLjglICAgICA4LjYgIDEuMzIwICAxLjAgSXNyYWVsCjA4LTMxICAgICAgODU1NDQgICAgICA1 MzkgICAgIDY3NyAgMC44JSAgICAgNS4xICAxLjY4MiAgMS4wIE9tYW4KMDgtMzEgICAgICAzMjg0 OCAgICAgIDI5OCAgICAgNDM0ICAxLjMlICAgICAyLjkgIDEuMTQ1ICAxLjAgUHVlcnRvIFJpY28K MDgtMzEgICAgIDY0NzE2NiAgICAgNzczMSAgIDI4Nzg4ICA0LjQlICAgIDMyLjkgIDEuOTY2ICAx LjAgUGVydQowOC0zMSAgICAgNjA3OTM4ICAgICA4MDI0ICAgMTkzNjQgIDMuMiUgICAgNTAuOCAg MS4xOTYgIDEuMCBDb2xvbWJpYQowOC0zMSAgICAzODYyMzExICAgIDE2MTU4ICAxMjA4MjggIDMu MSUgICAyMTIuMyAgMS44MTkgIDEuMCBCcmF6aWwKMDgtMzEgICAgNTk5NzE2MyAgICAzNTU4MSAg MTgzMDY5ICAzLjElICAgMzMxLjAgIDEuODEyICAxLjAgVW5pdGVkIFN0YXRlcwowOC0zMSAgICAg NDA5OTc0ICAgICAxOTY1ICAgMTEyNDQgIDIuNyUgICAgMTkuMSAgMi4xNDcgIDEuMCBDaGlsZQow OC0zMSAgICAgNjI1MDU2ICAgICAyNTA1ICAgMTQwMjggIDIuMiUgICAgNTkuMiAgMS4wNTYgIDEu MCBTb3V0aCBBZnJpY2EKMDgtMzEgICAgICA5MjA2NSAgICAgIDcyOCAgICAxOTk1ICAyLjIlICAg ICA0LjMgIDIuMTM5ICAxLjAgUGFuYW1hCjA4LTMxICAgICAgNDM3NTAgICAgICAxMjQgICAgIDg3 NyAgMi4wJSAgICAgMy4wICAxLjQ3NyAgMS4wIEFybWVuaWEKIyBEaXNwbGF5ZWQgMTQKT3B0aW9u cz8gIyB0aGF0IHN1cmUgZGlkbid0IHdvcmsgd2VsbCwgZGlkIGl0PwojIERheXM6IDI0NSBGaXJz dD0wIExhc3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1Q ICAxLjAgIC1ZICAxLjAgIC1pIDEgICtTIEQvQyUgIC1WICAteApPcHRpb25zPyAkICMgdG9nZ2xl IGN5cXdpbiBxc29ydCBiYWNrIHRvIG5ldGJzZCBRc29ydAojIERheXM6IDI0NSBGaXJzdD0wIExh c3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAg IC1ZICAxLjAgIC1pIDEgICtTIEQvQyUgIC1WICAteApEYXRlICAgQ29uZmlybWVkIEluY3JlYXNl ICBEZWF0aHMgIEQvQyUgTWlsbGlvbiBQY3QuQ28gRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0t LS0tIC0tLS0tLS0tICAtLS0tLS0gIC0tLS0gLS0tLS0tLSAtLS0tLS0gLS0tLSAtLS0tLS0tLQoj IFFzb3J0OkQvQyUKIyBsRHNvcnQ6MAowOC0zMSAgICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODgg IDQuNCUgICAgMzIuOSAgMS45NjYgIDEuMCBQZXJ1CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQg ICAxOTM2NCAgMy4yJSAgICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgIDM4NjIz MTEgICAgMTYxNTggIDEyMDgyOCAgMy4xJSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0z MSAgICA1OTk3MTYzICAgIDM1NTgxICAxODMwNjkgIDMuMSUgICAzMzEuMCAgMS44MTIgIDEuMCBV bml0ZWQgU3RhdGVzCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAx OS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAgICA2MjUwNTYgICAgIDI1MDUgICAxNDAyOCAg Mi4yJSAgICA1OS4yICAxLjA1NiAgMS4wIFNvdXRoIEFmcmljYQowOC0zMSAgICAgIDkyMDY1ICAg ICAgNzI4ICAgIDE5OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAg ICA0Mzc1MCAgICAgIDEyNCAgICAgODc3ICAyLjAlICAgICAzLjAgIDEuNDc3ICAxLjAgQXJtZW5p YQowOC0zMSAgICAgIDMyODQ4ICAgICAgMjk4ICAgICA0MzQgIDEuMyUgICAgIDIuOSAgMS4xNDUg IDEuMCBQdWVydG8gUmljbwowOC0zMSAgICAgMTE0MDIwICAgICAgMzk3ICAgICA5MTkgIDAuOCUg ICAgIDguNiAgMS4zMjAgIDEuMCBJc3JhZWwKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAg Njc3ICAwLjglICAgICA1LjEgIDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAg NDEyICAgICA1MzAgIDAuNiUgICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1 MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgow OC0zMSAgICAgMTE4NTc1ICAgICAgMTY4ICAgICAxOTcgIDAuMiUgICAgIDIuOSAgNC4xMjggIDEu MCBRYXRhcgojIERpc3BsYXllZCAxNApPcHRpb25zPyAjIGFsbCBpcyB3ZWxsIHdpdGggbmV0YnNk IHZlcnNpb24KIyBEYXlzOiAyNDUgRmlyc3Q9MCBMYXN0PTI0NSBDb2x1bW5zPTFjaWRXbVllbAoj IHVhYzE5ICAtbSA1MDAgIC1kIDUwICAtUCAgMS4wICAtWSAgMS4wICAtaSAxICArUyBEL0MlICAt ViAgLXgKT3B0aW9ucz8gcXVpdAprYzogZXhpdApleGl0CgpTY3JpcHQgZG9uZSBvbiAyMDIwLTA4 LTMxIDA5OjAzOjQ2LTA3OjAwIFtDT01NQU5EX0VYSVRfQ09ERT0iMCJdCg== --000000000000f3f0e405ae30085b Content-Type: application/octet-stream; name="qqsort.h" Content-Disposition: attachment; filename="qqsort.h" Content-Transfer-Encoding: base64 Content-ID: <f_keirepkx0> X-Attachment-Id: f_keirepkx0 LyogKGMpIENvcHlyaWdodCAyMDIwIGJ5IERlbmFsaSBTdW4gQ29uc3VsdGluZyAtIEt1cnQgQ2Fy bHNvbiAoRlNGL0dQTCkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZAlxcXNvcnQgKHZvaWQgKmJh c2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAq LCBjb25zdCB2b2lkICopLCBjaGFyICp0eXBlKQp7CiNpZm5kZWYJT1NfV0lOCglpZiAocXEtPnYg JiYgdHlwZSkJZnByaW50ZiAoc3RkZXJyLCAiIyBxc29ydDolc1xuIiwgdHlwZSk7Cglxc29ydCAo YmFzZSwgbm1lbWIsIHNpemUsIGNvbXBhcik7Cn0KI2Vsc2UKaWYgKCFxcS0+Y3lnc29ydCkKewlp ZiAocXEtPnYgJiYgdHlwZSkJZnByaW50ZiAoc3RkZXJyLCAiIyBRc29ydDolc1xuIiwgdHlwZSk7 CglRc29ydCAoYmFzZSwgbm1lbWIsIHNpemUsIGNvbXBhcik7Cn0gZWxzZQp7CWlmIChxcS0+diAm JiB0eXBlKQlmcHJpbnRmIChzdGRlcnIsICIjIHFzb3J0OiVzXG4iLCB0eXBlKTsKCXFzb3J0IChi YXNlLCBubWVtYiwgc2l6ZSwgY29tcGFyKTsKfQp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qCSROZXRC U0Q6IHFzb3J0LmMsdiAxLjIzIDIwMTcvMDUvMTkgMTk6NDg6MTkgY2hyaXN0b3MgRXhwICQJKi8K LyotCiAqIENvcHlyaWdodCAoYykgMTk5MiwgMTk5MwogKglUaGUgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogMy4gTmVpdGhl ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli dXRvcnMKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp dHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBS RUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM CiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAog KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqLwoK I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgojaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVk KGxpbnQpCiNpZiAwCnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylxc29ydC5jCTguMSAoQmVy a2VsZXkpIDYvNC85MyI7CiNlbHNlCl9fUkNTSUQoIiROZXRCU0Q6IHFzb3J0LmMsdiAxLjIzIDIw MTcvMDUvMTkgMTk6NDg6MTkgY2hyaXN0b3MgRXhwICQiKTsKI2VuZGlmCiNlbmRpZiAvKiBMSUJD X1NDQ1MgYW5kIG5vdCBsaW50ICovCgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CgojaW5jbHVkZSA8 YXNzZXJ0Lmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgpzdGF0aWMg aW5saW5lIGNoYXIJKm1lZDMoY2hhciAqLCBjaGFyICosIGNoYXIgKiwKICAgIGludCAoKikoY29u c3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKc3RhdGljIGlubGluZSB2b2lkCSBzd2FwZnVuYyhj aGFyICosIGNoYXIgKiwgc2l6ZV90LCBpbnQpOwoKI2RlZmluZSBtaW4oYSwgYikJKGEpIDwgKGIp ID8gYSA6IGIKCi8qCiAqIFFzb3J0IHJvdXRpbmUgZnJvbSBCZW50bGV5ICYgTWNJbHJveSdzICJF bmdpbmVlcmluZyBhIFNvcnQgRnVuY3Rpb24iLgogKi8KI2RlZmluZSBzd2FwY29kZShUWVBFLCBw YXJtaSwgcGFybWosIG4pIHsgCQlcCglzaXplX3QgaSA9IChuKSAvIHNpemVvZiAoVFlQRSk7IAkJ XAoJVFlQRSAqcGkgPSAoVFlQRSAqKSh2b2lkICopKHBhcm1pKTsgCQlcCglUWVBFICpwaiA9IChU WVBFICopKHZvaWQgKikocGFybWopOyAJCVwKCWRvIHsgCQkJCQkJXAoJCVRZUEUJdCA9ICpwaTsJ CQlcCgkJKnBpKysgPSAqcGo7CQkJCVwKCQkqcGorKyA9IHQ7CQkJCVwKICAgICAgICB9IHdoaWxl ICgtLWkgPiAwKTsJCQkJXAp9CgojZGVmaW5lIFNXQVBJTklUKGEsIGVzKSBzd2FwdHlwZSA9ICgo Y2hhciAqKWEgLSAoY2hhciAqKTApICUgc2l6ZW9mKGxvbmcpIHx8IFwKCWVzICUgc2l6ZW9mKGxv bmcpID8gMiA6IGVzID09IHNpemVvZihsb25nKT8gMCA6IDE7CgpzdGF0aWMgaW5saW5lIHZvaWQK c3dhcGZ1bmMoY2hhciAqYSwgY2hhciAqYiwgc2l6ZV90IG4sIGludCBzd2FwdHlwZSkKewoKCWlm IChzd2FwdHlwZSA8PSAxKSAKCQlzd2FwY29kZShsb25nLCBhLCBiLCBuKQoJZWxzZQoJCXN3YXBj b2RlKGNoYXIsIGEsIGIsIG4pCn0KCiNkZWZpbmUgc3dhcChhLCBiKQkJCQkJCVwKCWlmIChzd2Fw dHlwZSA9PSAwKSB7CQkJCQlcCgkJbG9uZyB0ID0gKihsb25nICopKHZvaWQgKikoYSk7CQkJXAoJ CSoobG9uZyAqKSh2b2lkICopKGEpID0gKihsb25nICopKHZvaWQgKikoYik7CVwKCQkqKGxvbmcg Kikodm9pZCAqKShiKSA9IHQ7CQkJXAoJfSBlbHNlCQkJCQkJCVwKCQlzd2FwZnVuYyhhLCBiLCBl cywgc3dhcHR5cGUpCgojZGVmaW5lIHZlY3N3YXAoYSwgYiwgbikgaWYgKChuKSA+IDApIHN3YXBm dW5jKChhKSwgKGIpLCAoc2l6ZV90KShuKSwgc3dhcHR5cGUpCgpzdGF0aWMgaW5saW5lIGNoYXIg KgptZWQzKGNoYXIgKmEsIGNoYXIgKmIsIGNoYXIgKmMsCiAgICBpbnQgKCpjbXApKGNvbnN0IHZv aWQgKiwgY29uc3Qgdm9pZCAqKSkKewoKCXJldHVybiBjbXAoYSwgYikgPCAwID8KCSAgICAgICAo Y21wKGIsIGMpIDwgMCA/IGIgOiAoY21wKGEsIGMpIDwgMCA/IGMgOiBhICkpCiAgICAgICAgICAg ICAgOihjbXAoYiwgYykgPiAwID8gYiA6IChjbXAoYSwgYykgPCAwID8gYSA6IGMgKSk7Cn0KCnZv aWQKUXNvcnQodm9pZCAqYSwgc2l6ZV90IG4sIHNpemVfdCBlcywKICAgIGludCAoKmNtcCkoY29u c3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQp7CgljaGFyICpwYSwgKnBiLCAqcGMsICpwZCwgKnBs LCAqcG0sICpwbjsKCXNpemVfdCBkLCByLCBzOwoJaW50IHN3YXB0eXBlLCBjbXBfcmVzdWx0Owov KgoyMDIwLTA4LTI5IGthYwlDb21tbWVudCBvdXQgZm9sbG93aW5nCglfRElBR0FTU0VSVChhICE9 IE5VTEwgfHwgbiA9PSAwIHx8IGVzID09IDApOwoJX0RJQUdBU1NFUlQoY21wICE9IE5VTEwpOwoq Lwpsb29wOglTV0FQSU5JVChhLCBlcyk7CglpZiAobiA8IDcpIHsKCQlmb3IgKHBtID0gKGNoYXIg KikgYSArIGVzOyBwbSA8IChjaGFyICopIGEgKyBuICogZXM7IHBtICs9IGVzKQoJCQlmb3IgKHBs ID0gcG07IHBsID4gKGNoYXIgKikgYSAmJiBjbXAocGwgLSBlcywgcGwpID4gMDsKCQkJICAgICBw bCAtPSBlcykKCQkJCXN3YXAocGwsIHBsIC0gZXMpOwoJCXJldHVybjsKCX0KCXBtID0gKGNoYXIg KikgYSArIChuIC8gMikgKiBlczsKCWlmIChuID4gNykgewoJCXBsID0gKGNoYXIgKikgYTsKCQlw biA9IChjaGFyICopIGEgKyAobiAtIDEpICogZXM7CgkJaWYgKG4gPiA0MCkgewoJCQlkID0gKG4g LyA4KSAqIGVzOwoJCQlwbCA9IG1lZDMocGwsIHBsICsgZCwgcGwgKyAyICogZCwgY21wKTsKCQkJ cG0gPSBtZWQzKHBtIC0gZCwgcG0sIHBtICsgZCwgY21wKTsKCQkJcG4gPSBtZWQzKHBuIC0gMiAq IGQsIHBuIC0gZCwgcG4sIGNtcCk7CgkJfQoJCXBtID0gbWVkMyhwbCwgcG0sIHBuLCBjbXApOwoJ fQoJc3dhcChhLCBwbSk7CglwYSA9IHBiID0gKGNoYXIgKikgYSArIGVzOwoKCXBjID0gcGQgPSAo Y2hhciAqKSBhICsgKG4gLSAxKSAqIGVzOwoJZm9yICg7OykgewoJCXdoaWxlIChwYiA8PSBwYyAm JiAoY21wX3Jlc3VsdCA9IGNtcChwYiwgYSkpIDw9IDApIHsKCQkJaWYgKGNtcF9yZXN1bHQgPT0g MCkgewoJCQkJc3dhcChwYSwgcGIpOwoJCQkJcGEgKz0gZXM7CgkJCX0KCQkJcGIgKz0gZXM7CgkJ fQoJCXdoaWxlIChwYiA8PSBwYyAmJiAoY21wX3Jlc3VsdCA9IGNtcChwYywgYSkpID49IDApIHsK CQkJaWYgKGNtcF9yZXN1bHQgPT0gMCkgewoJCQkJc3dhcChwYywgcGQpOwoJCQkJcGQgLT0gZXM7 CgkJCX0KCQkJcGMgLT0gZXM7CgkJfQoJCWlmIChwYiA+IHBjKQoJCQlicmVhazsKCQlzd2FwKHBi LCBwYyk7CgkJcGIgKz0gZXM7CgkJcGMgLT0gZXM7Cgl9CgoJcG4gPSAoY2hhciAqKSBhICsgbiAq IGVzOwoJciA9IG1pbihwYSAtIChjaGFyICopIGEsIHBiIC0gcGEpOwoJdmVjc3dhcChhLCBwYiAt IHIsIHIpOwoJciA9IG1pbigoc2l6ZV90KShwZCAtIHBjKSwgcG4gLSBwZCAtIGVzKTsKCXZlY3N3 YXAocGIsIHBuIC0gciwgcik7CgkvKgoJICogVG8gc2F2ZSBzdGFjayBzcGFjZSB3ZSBzb3J0IHRo ZSBzbWFsbGVyIHNpZGUgb2YgdGhlIHBhcnRpdGlvbiBmaXJzdAoJICogdXNpbmcgcmVjdXJzaW9u IGFuZCBlbGltaW5hdGUgdGFpbCByZWN1cnNpb24gZm9yIHRoZSBsYXJnZXIgc2lkZS4KCSAqLwoJ ciA9IHBiIC0gcGE7CglzID0gcGQgLSBwYzsKCWlmIChyIDwgcykgewoJCS8qIFJlY3Vyc2UgZm9y IDFzdCBzaWRlLCBpdGVyYXRlIGZvciAybmQgc2lkZS4gKi8KCQlpZiAocyA+IGVzKSB7CgkJCWlm IChyID4gZXMpCgkJCQlRc29ydChhLCByIC8gZXMsIGVzLCBjbXApOwoJCQlhID0gcG4gLSBzOwoJ CQluID0gcyAvIGVzOwoJCQlnb3RvIGxvb3A7CgkJfQoJfSBlbHNlIHsKCQkvKiBSZWN1cnNlIGZv ciAybmQgc2lkZSwgaXRlcmF0ZSBmb3IgMXN0IHNpZGUuICovCgkJaWYgKHIgPiBlcykgewoJCQlp ZiAocyA+IGVzKQoJCQkJUXNvcnQocG4gLSBzLCBzIC8gZXMsIGVzLCBjbXApOwoJCQluID0gciAv IGVzOwoJCQlnb3RvIGxvb3A7CgkJfQoJfQp9CiNlbmRpZgo= --000000000000f3f0e405ae30085b Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple --000000000000f3f0e405ae30085b--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |