From: Stephan Mueller Subject: Re: x509 parsing bug + fuzzing crypto in the userspace Date: Wed, 22 Nov 2017 17:54:40 +0100 Message-ID: <8790288.6NrG2qtxDg@tauon.chronox.de> References: <20171121204628.GA56006@google.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart1726595.gKAQ0pTlXz" Content-Transfer-Encoding: 7Bit Cc: Dmitry Vyukov , Alexander Potapenko , linux-crypto@vger.kernel.org, Kostya Serebryany , keyrings@vger.kernel.org, Andrey Konovalov To: Eric Biggers Return-path: Received: from mail.eperm.de ([89.247.134.16]:42396 "EHLO mail.eperm.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751259AbdKVQyo (ORCPT ); Wed, 22 Nov 2017 11:54:44 -0500 In-Reply-To: <20171121204628.GA56006@google.com> Sender: linux-crypto-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --nextPart1726595.gKAQ0pTlXz Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Am Dienstag, 21. November 2017, 21:46:28 CET schrieb Eric Biggers: Hi Eric, > > (There is probably more to improve for AF_ALG besides the algorithm names; > this is just what I happened to notice for now.) Just grepping may not cover all possibilities. Attached is a script that I use to invoke an array different tests for different cipher implementations. For now, it only covers C, ASM and CPU-based cipher implementations. Ciao Stephan --nextPart1726595.gKAQ0pTlXz Content-Disposition: attachment; filename="cavs_exec_kcapi.sh" Content-Transfer-Encoding: base64 Content-Type: application/x-shellscript; name="cavs_exec_kcapi.sh" IyEvYmluL2Jhc2gKIwojIENBVlMgdGVzdCBleGVjdXRvcgojIFdyaXR0ZW4gYW5kIENvcHlyaWdo dCAoYykgYnk6IFN0ZXBoYW4gTcO8bGxlciA8c211ZWxsZXJAY2hyb25veC5kZT4KIwojIExpY2Vu c2U6IHNlZSBMSUNFTlNFIGZpbGUKIwojICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PIFdB UlJBTlRZCiMKIyAgICBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hB UkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQojICAgIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVY VEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgojICAgIE9USEVS V0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVS IFBBUlRJRVMKIyAgICBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAojICAgIE9SIElNUExJRUQsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiMgICAgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBF TlRJUkUgUklTSyBBUwojICAgIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUg UFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKIyAgICBQUk9HUkFNIFBST1ZFIERFRkVD VElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKIyAg ICBSRVBBSVIgT1IgQ09SUkVDVElPTi4KIwojICAgIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJF RCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwojICAgIFdJTEwgQU5Z IENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQv T1IKIyAgICBSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBM SUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLAojICAgIElOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BF Q0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwojICAgIE9V VCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQKIyAgICBUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJF RCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKIyAgICBZT1UgT1IgVEhJUkQgUEFS VElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhF UgojICAgIFBST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMg QkVFTiBBRFZJU0VEIE9GIFRIRQojICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KCiMg RGlyZWN0b3J5IHN0cnVjdHVyZQojIHRlc3R2ZWN0b3JzLwojCWFlc2FzbS8KIwkJQUVTLwojCQlB RVNfR0NNLwojCQkuLi4KIwlhZXNuaQojCQlBRVMvCiMJCS4uLgojCXNoYXNzc2UzCiMJCVNIQS8K IwkJSE1BQy8KIwkJRFJCRzgwMC05MEEvCiMJcmVtYWluCiMJCVRERVMvCiMJCS4uLgpURVNURElS PSJ0ZXN0dmVjdG9ycyIKCiMgY2hlY2sgd2hldGhlciBhIGdpdmVuIGtlcm5lbCB2ZXJzaW9uIGlz IHByZXNlbnQKIyByZXR1cm5zIHRydWUgZm9yIHllcywgZmFsc2UgZm9yIG5vCmNoZWNrX21pbl9r ZXJuZWx2ZXIoKSB7CgltYWpvcj0kMQoJbWlub3I9JDIKCglsb2NhbCBvdXJfbWFqb3I9JCh1bmFt ZSAtciB8IGN1dCAtZCIuIiAtZjEpCgoJaWYgWyAkb3VyX21ham9yIC1ndCAkbWFqb3IgXTsgdGhl bgoJCXJldHVybiAwCgllbGlmIFsgJG91cl9tYWpvciAtZ2UgJG1ham9yIF07IHRoZW4KCQlpZiBb ICQodW5hbWUgLXIgfCBjdXQgLWQiLiIgLWYyKSAtZ2UgJG1pbm9yIF07IHRoZW4KCQkJcmV0dXJu IDAKCQlmaQoJZmkKCXJldHVybiAxCn0KCmlmIFsgJCh1bmFtZSAtbSkgPSAiaTY4NiIgXTsgdGhl bgoJRVhFQz0iYWVzYXNtIGFlc2FzbV9paXYgYWVzYXNtX2VpdiBhZXNnZW4gYWVzZ2VuX2lpdiBh ZXNnZW5fZWl2IHNoYWdlbiByZW1haW4iCgplbGlmIFsgJCh1bmFtZSAtbSkgPSAiczM5MHgiIF07 IHRoZW4KCUVYRUM9InMzOTB4X2NwYWNmYyBzMzkweF9jcGFjZmNfaWl2IHMzOTB4X2NwYWNmY19l aXYgczM5MHhfY3BhY2Zhc20gczM5MHhfY3BhY2Zhc21faWl2IHMzOTB4X2NwYWNmYXNtX2VpdiBh ZXNnZW4gYWVzZ2VuX2lpdiBhZXNnZW5fZWl2IHNoYWdlbiByZW1haW4iCmVsc2UKCUVYRUM9ImFl c2FzbSBhZXNhc21faWl2IGFlc2FzbV9laXYgYWVzbmkgYWVzbmlfaWl2IGFlc25pX2VpdiBhZXNu aV9ibGthc20gYWVzbmlfYmxrYXNtX2lpdiBhZXNnZW4gYWVzZ2VuX2lpdiBhZXNnZW5fZWl2IHNo YWdlbiBzaGFzc3NlMyB4ODZ0ZGVzYmxrYXNtIHg4NnRkZXNhc20gcmVtYWluIgoKCSMgSW50ZWwg U0hBIGltcGxlbWVudGF0aW9ucyBhcmUgbm93IGRpcmVjdGx5IGNhbGxhYmxlCglpZiAkKGNoZWNr X21pbl9rZXJuZWx2ZXIgNCA0KTsgdGhlbgoJCWlmICQoZ3JlcCAtcSBhdnggL3Byb2MvY3B1aW5m bykgOyB0aGVuCgkJCUVYRUM9IiRFWEVDIHNoYWF2eCIKCQlmaQoJCWlmICQoZ3JlcCAtcSBhdngy IC9wcm9jL2NwdWluZm8pIDsgdGhlbgoJCQlFWEVDPSIkRVhFQyBzaGFhdngyIgoJCWZpCglmaQoK CWlmICQoY2hlY2tfbWluX2tlcm5lbHZlciA0IDgpOyB0aGVuCgkJaWYgJChncmVwIC1xIGF2eDIg L3Byb2MvY3B1aW5mbykgOyB0aGVuCgkJCUVYRUM9IiRFWEVDIHNoYW1iIgoJCWZpCgllbGlmICQo Y2hlY2tfbWluX2tlcm5lbHZlciAzIDE4KTsgdGhlbgoJCWlmICQoZ3JlcCAtcSBhdngyIC9wcm9j L2NwdWluZm8pIDsgdGhlbgoJCQlFWEVDPSIkRVhFQyBzaGFtYiIKCQlmaQoJZmkKCglpZiAkKGNo ZWNrX21pbl9rZXJuZWx2ZXIgNCAxMSk7IHRoZW4KCQlFWEVDPSIkRVhFQyBhZXN0aSBhZXN0aV9p aXYgYWVzdGlfZWl2IgoJZmkKZmkKCmlpdl9uYW1lKCkgewoJbmFtZT0kMQoKCSMgTmV3IG5hbWUg d2l0aCA0LjIKCWlmICQoY2hlY2tfbWluX2tlcm5lbHZlciA0IDIpOyB0aGVuCgkJbmFtZT0ic2Vx aXYoJG5hbWUpIgoJZmkKCgllY2hvICRuYW1lCn0KCnh0c19uYW1lKCkgewoJbmFtZT0kMQoKCSMg TmV3IHdpdGggNC45CglpZiAkKGNoZWNrX21pbl9rZXJuZWx2ZXIgNCA5KTsgdGhlbgoJCW5hbWU9 Inh0cyhlY2IoJG5hbWUpKSIKCWVsc2UKCQluYW1lPSJ4dHMoJG5hbWUpIgoJZmkKCgllY2hvICRu YW1lCn0KCmNiY21hY19uYW1lKCkgewoJbmFtZT0kMQoKCSMgTmV3IHdpdGggNC4xMQoJaWYgJChj aGVja19taW5fa2VybmVsdmVyIDQgMTEpOyB0aGVuCgkJbmFtZT0iY2JjbWFjKCRuYW1lKSIKCWVs c2UKCQluYW1lPSIkbmFtZSIKCWZpCgoJZWNobyAkbmFtZQp9CgojIyMjIyMjIyMjIyMjIyMjIyMj IEFFUyBURVNUUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpBRVNfVEVTVFM9IkFFUyBBRVNfR0NN IENDTSBDTUFDIFhUUyBEUkJHODAwLTkwQSBLZXlXcmFwMzhGIgojQUVTX1RFU1RTPSJBRVMgQUVT X0dDTSBDQ00gQ01BQyBYVFMgRFJCRzgwMC05MEEgS2V5V3JhcDM4RiBLREY4MDAtMTA4IgoKIyB4 ODYgQXNzZW1ibGVyIGNpcGhlciBhbmQgQyBibG9jayBjaGFpbmluZyBtb2RlcwpDSVBIRVJfQ0FM TF9hZXNhc209IktDQVBJX0dDTV9BRVM9XCJnY21fYmFzZShjdHIoYWVzLWFzbSksZ2hhc2gtZ2Vu ZXJpYylcIiBcCgkJS0NBUElfQ0NNX0FFUz1cImNjbV9iYXNlKGN0cihhZXMtYXNtKSwkKGNiY21h Y19uYW1lICJhZXMtYXNtIikpXCIgXAoJCUtDQVBJX0NCQ19BRVM9XCJjYmMoYWVzLWFzbSlcIiBc CgkJS0NBUElfRUNCX0FFUz1cImVjYihhZXMtYXNtKVwiIFwKCQlLQ0FQSV9YVFNfQUVTPVwiJCh4 dHNfbmFtZSAiYWVzLWFzbSIpXCIgXAoJCUtDQVBJX0tXX0FFUz1cImt3KGFlcy1hc20pXCIgXAoJ CUtDQVBJX0NNQUNfQUVTPVwiY21hYyhhZXMtYXNtKVwiIFwKCQljYXZzX2RyaXZlciIKQ0lQSEVS X1RFU1RTX2Flc2FzbT0kQUVTX1RFU1RTCkNJUEhFUl9DQUxMX2Flc2FzbV9paXY9IktDQVBJX0NC Q19BRVM9XCJjYmMoYWVzLWFzbSlcIiBcCgkJS0NBUElfRUNCX0FFUz1cImVjYihhZXMtYXNtKVwi IFwKCQlLQ0FQSV9HQ01fQUVTPVwiJChpaXZfbmFtZSAicmZjNDEwNihnY21fYmFzZShjdHIoYWVz LWFzbSksZ2hhc2gtZ2VuZXJpYykpIilcIiBcCgkJY2F2c19kcml2ZXIiOwpDSVBIRVJfVEVTVFNf YWVzYXNtX2lpdj0iQUVTIEFFU19HQ00iCkNJUEhFUl9DQUxMX2Flc2FzbV9laXY9IktDQVBJX0NC Q19BRVM9XCJjYmMoYWVzLWFzbSlcIiBcCgkJS0NBUElfRUNCX0FFUz1cImVjYihhZXMtYXNtKVwi IFwKCQlLQ0FQSV9HQ01fQUVTPVwicmZjNDEwNihnY21fYmFzZShjdHIoYWVzLWFzbSksZ2hhc2gt Z2VuZXJpYykpXCIgXAoJCWNhdnNfZHJpdmVyIjsKQ0lQSEVSX1RFU1RTX2Flc2FzbV9laXY9IkFF UyBBRVNfR0NNIgoKIyBzMzkwIENQQUNGIGFzc2VtYmxlciBjaXBoZXIgYW5kIEMgYmxvY2sgY2hh aW5pbmcgbW9kZXMKQ0lQSEVSX0NBTExfczM5MHhfY3BhY2ZjPSJLQ0FQSV9HQ01fQUVTPVwiZ2Nt X2Jhc2UoY3RyKGFlcy1zMzkwKSxnaGFzaC1nZW5lcmljKVwiIFwKCQlLQ0FQSV9DQ01fQUVTPVwi Y2NtX2Jhc2UoY3RyKGFlcy1zMzkwKSwkKGNiY21hY19uYW1lICJhZXMtczM5MCIpKVwiIFwKCQlL Q0FQSV9DQkNfQUVTPVwiY2JjKGFlcy1zMzkwKVwiIFwKCQlLQ0FQSV9FQ0JfQUVTPVwiZWNiKGFl cy1zMzkwKVwiIFwKCQlLQ0FQSV9YVFNfQUVTPVwiJCh4dHNfbmFtZSAiYWVzLXMzOTAiKVwiIFwK CQlLQ0FQSV9LV19BRVM9XCJrdyhhZXMtczM5MClcIiBcCgkJS0NBUElfQ01BQ19BRVM9XCJjbWFj KGFlcy1zMzkwKVwiIFwKCQlLQ0FQSV9DQkNfVERFUz1cImNiYyhkZXMzX2VkZS1zMzkwKVwiIFwK CQlLQ0FQSV9DVFJfVERFUz1cImN0cihkZXMzX2VkZS1zMzkwKVwiIFwKCQlLQ0FQSV9FQ0JfVERF Uz1cImVjYihkZXMzX2VkZS1zMzkwKVwiIFwKCQlLQ0FQSV9DTUFDX1RERVM9XCJjbWFjKGRlczNf ZWRlLXMzOTApXCIgXAoJCUtDQVBJX1NIQTE9XCJzaGExLXMzOTBcIiBcCgkJS0NBUElfU0hBMjI0 PVwic2hhMjI0LXMzOTBcIiBcCgkJS0NBUElfU0hBMjU2PVwic2hhMjU2LXMzOTBcIiBcCgkJS0NB UElfU0hBMzg0PVwic2hhMzg0LXMzOTBcIiBcCgkJS0NBUElfU0hBNTEyPVwic2hhNTEyLXMzOTBc IiBcCgkJY2F2c19kcml2ZXIiCkNJUEhFUl9URVNUU19zMzkweF9jcGFjZmM9IiRBRVNfVEVTVFMg VERFUyBDTUFDIFNIQSBITUFDIERSQkc4MDAtOTBBIFJTQTIiCkNJUEhFUl9DQUxMX3MzOTB4X2Nw YWNmY19paXY9IktDQVBJX0NCQ19BRVM9XCJjYmMoYWVzLXMzOTApXCIgXAoJCUtDQVBJX0VDQl9B RVM9XCJlY2IoYWVzLXMzOTApXCIgXAoJCUtDQVBJX0dDTV9BRVM9XCIkKGlpdl9uYW1lICJyZmM0 MTA2KGdjbV9iYXNlKGN0ci1hZXMtczM5MCxnaGFzaC1nZW5lcmljKSkiKVwiIFwKCQljYXZzX2Ry aXZlciI7CkNJUEhFUl9URVNUU19zMzkweF9jcGFjZmNfaWl2PSJBRVMgQUVTX0dDTSIKQ0lQSEVS X0NBTExfczM5MHhfY3BhY2ZjX2Vpdj0iS0NBUElfQ0JDX0FFUz1cImNiYyhhZXMtczM5MClcIiBc CgkJS0NBUElfRUNCX0FFUz1cImVjYihhZXMtczM5MClcIiBcCgkJS0NBUElfR0NNX0FFUz1cInJm YzQxMDYoZ2NtX2Jhc2UoY3RyLWFlcy1zMzkwLGdoYXNoLWdlbmVyaWMpKVwiIFwKCQljYXZzX2Ry aXZlciI7CkNJUEhFUl9URVNUU19zMzkweF9jcGFjZmNfZWl2PSJBRVMgQUVTX0dDTSIKCiMgczM5 MCBDUEFDRiBhc3NlbWJsZXIgY2lwaGVyIGFuZCBhc3NlbWJsZXIgYmxvY2sgY2hhaW5pbmcgbW9k ZXMKQ0lQSEVSX0NBTExfczM5MHhfY3BhY2Zhc209IktDQVBJX0dDTV9BRVM9XCJnY21fYmFzZShj dHItYWVzLXMzOTAsZ2hhc2gtczM5MClcIiBcCgkJS0NBUElfQ0NNX0FFUz1cImNjbV9iYXNlKGN0 ci1hZXMtczM5MCwkKGNiY21hY19uYW1lICJhZXMtczM5MCIpKVwiIFwKCQlLQ0FQSV9DQkNfQUVT PVwiY2JjLWFlcy1zMzkwXCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2ItYWVzLXMzOTBcIiBcCgkJ S0NBUElfWFRTX0FFUz1cInh0cy1hZXMtczM5MFwiIFwKCQlLQ0FQSV9DQkNfVERFUz1cImNiYy1k ZXMzX2VkZS1zMzkwXCIgXAoJCUtDQVBJX0VDQl9UREVTPVwiZWNiLWRlczNfZWRlLXMzOTBcIiBc CgkJS0NBUElfQ1RSX1RERVM9XCJjdHItZGVzM19lZGUtczM5MFwiIFwKCQljYXZzX2RyaXZlciIK Q0lQSEVSX1RFU1RTX3MzOTB4X2NwYWNmYXNtPSJBRVMgQUVTX0dDTSBDQ00gWFRTIERSQkc4MDAt OTBBIFRERVMiCkNJUEhFUl9DQUxMX3MzOTB4X2NwYWNmYXNtX2lpdj0iS0NBUElfQ0JDX0FFUz1c ImNiYy1hZXMtczM5MFwiIFwKCQlLQ0FQSV9FQ0JfQUVTPVwiZWNiLWFlcy1zMzkwXCIgXAoJCUtD QVBJX0dDTV9BRVM9XCIkKGlpdl9uYW1lICJyZmM0MTA2KGdjbV9iYXNlKGN0ci1hZXMtczM5MCxn aGFzaC1zMzkwKSkiKVwiIFwKCQljYXZzX2RyaXZlciI7CkNJUEhFUl9URVNUU19zMzkweF9jcGFj ZmFzbV9paXY9IkFFUyBBRVNfR0NNIgpDSVBIRVJfQ0FMTF9zMzkweF9jcGFjZmFzbV9laXY9IktD QVBJX0NCQ19BRVM9XCJjYmMtYWVzLXMzOTBcIiBcCgkJS0NBUElfRUNCX0FFUz1cImVjYi1hZXMt czM5MFwiIFwKCQlLQ0FQSV9HQ01fQUVTPVwicmZjNDEwNihnY21fYmFzZShjdHItYWVzLXMzOTAs Z2hhc2gtczM5MCkpXCIgXAoJCWNhdnNfZHJpdmVyIjsKQ0lQSEVSX1RFU1RTX3MzOTB4X2NwYWNm YXNtX2Vpdj0iQUVTIEFFU19HQ00iCgojIEFFU05JIGNpcGhlciBhbmQgQyBibG9jayBjaGFpbmlu ZyBtb2RlcwpDSVBIRVJfQ0FMTF9hZXNuaT0iS0NBUElfR0NNX0FFUz1cImdjbV9iYXNlKGN0ci1h ZXMtYWVzbmksZ2hhc2gtY2xtdWxuaSlcIiBcCgkJS0NBUElfQ0NNX0FFUz1cImNjbV9iYXNlKGN0 ci1hZXMtYWVzbmksJChjYmNtYWNfbmFtZSAiYWVzLWFlc25pIikpXCIgXAoJCUtDQVBJX0NCQ19B RVM9XCJjYmMoYWVzLWFlc25pKVwiIFwKCQlLQ0FQSV9FQ0JfQUVTPVwiZWNiKGFlcy1hZXNuaSlc IiBcCgkJS0NBUElfWFRTX0FFUz1cIiQoeHRzX25hbWUgImFlcy1hZXNuaSIpXCIgXAoJCUtDQVBJ X0tXX0FFUz1cImt3KGFlcy1hZXNuaSlcIiBcCgkJS0NBUElfQ01BQ19BRVM9XCJjbWFjKGFlcy1h ZXNuaSlcIiBcCgkJY2F2c19kcml2ZXIiCmlmIFsgJCh1bmFtZSAtbSkgPSAiaTY4NiIgXTsgdGhl bgoJQ0lQSEVSX1RFU1RTX2Flc25pPSJBRVMgQ01BQyBYVFMgRFJCRzgwMC05MEEiCmVsc2UKCUNJ UEhFUl9URVNUU19hZXNuaT0kQUVTX1RFU1RTCmZpCkNJUEhFUl9DQUxMX2Flc25pX2lpdj0iS0NB UElfQ0JDX0FFUz1cImNiYyhhZXMtYWVzbmkpXCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2IoYWVz LWFlc25pKVwiIFwKCQlLQ0FQSV9HQ01fQUVTPVwiJChpaXZfbmFtZSAicmZjNDEwNihnY21fYmFz ZShjdHIoYWVzLWFlc25pKSxnaGFzaC1jbG11bG5pKSkiKVwiIFwKCQljYXZzX2RyaXZlciI7CkNJ UEhFUl9URVNUU19hZXNuaV9paXY9IkFFUyBBRVNfR0NNIgpDSVBIRVJfQ0FMTF9hZXNuaV9laXY9 IktDQVBJX0NCQ19BRVM9XCJjYmMoYWVzLWFlc25pKVwiIFwKCQlLQ0FQSV9FQ0JfQUVTPVwiZWNi KGFlcy1hZXNuaSlcIiBcCgkJS0NBUElfR0NNX0FFUz1cInJmYzQxMDYoZ2NtX2Jhc2UoY3RyKGFl cy1hZXNuaSksZ2hhc2gtY2xtdWxuaSkpXCIgXAoJCWNhdnNfZHJpdmVyIjsKQ0lQSEVSX1RFU1RT X2Flc25pX2Vpdj0iQUVTIEFFU19HQ00iCgojIEFFU05JIGNpcGhlciBhbmQgYXNzZW1ibGVyIGJs b2NrIGNoYWluaW5nIG1vZGVzCkNJUEhFUl9DQUxMX2Flc25pX2Jsa2FzbT0iS0NBUElfR0NNX0FF Uz1cInJmYzQxMDYtZ2NtLWFlc25pXCIgXAoJCUtDQVBJX0NCQ19BRVM9XCJjYmMtYWVzLWFlc25p XCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2ItYWVzLWFlc25pXCIgXAoJCUtDQVBJX1hUU19BRVM9 XCJ4dHMtYWVzLWFlc25pXCIgXAoJCWNhdnNfZHJpdmVyIjsKaWYgWyAkKHVuYW1lIC1tKSA9ICJp Njg2IiBdOyB0aGVuCglDSVBIRVJfVEVTVFNfYWVzbmlfYmxrYXNtPSJBRVMiCmVsc2UKCUNJUEhF Ul9URVNUU19hZXNuaV9ibGthc209IkFFUyBBRVNfR0NNIFhUUyIKZmkKCiMgQUVTTkkgR0NNIHRl c3RzIHdpdGggaW50ZXJuYWwgSVYgZ2VuZXJhdGlvbgpDSVBIRVJfQ0FMTF9hZXNuaV9ibGthc21f aWl2PSJLQ0FQSV9DQkNfQUVTPVwiY2JjLWFlcy1hZXNuaVwiIFwKCQlLQ0FQSV9FQ0JfQUVTPVwi ZWNiLWFlcy1hZXNuaVwiIFwKCQlLQ0FQSV9HQ01fQUVTPVwiJChpaXZfbmFtZSAicmZjNDEwNi1n Y20tYWVzbmkiKVwiIFwKCQljYXZzX2RyaXZlciI7CkNJUEhFUl9URVNUU19hZXNuaV9ibGthc21f aWl2PSJBRVMgQUVTX0dDTSIKCiMgQyBjaXBoZXJzIHdpdGggQyBibG9jayBjaGFpbmluZyBtb2Rl cwpDSVBIRVJfQ0FMTF9hZXNnZW49IktDQVBJX0dDTV9BRVM9XCJnY21fYmFzZShjdHIoYWVzLWdl bmVyaWMpLGdoYXNoLWdlbmVyaWMpXCIgXAoJCUtDQVBJX0NDTV9BRVM9XCJjY21fYmFzZShjdHIo YWVzLWdlbmVyaWMpLCQoY2JjbWFjX25hbWUgImFlcy1nZW5lcmljIikpXCIgXAoJCUtDQVBJX0NC Q19BRVM9XCJjYmMoYWVzLWdlbmVyaWMpXCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2IoYWVzLWdl bmVyaWMpXCIgXAoJCUtDQVBJX1hUU19BRVM9XCIkKHh0c19uYW1lICJhZXMtZ2VuZXJpYyIpXCIg XAoJCUtDQVBJX0tXX0FFUz1cImt3KGFlcy1nZW5lcmljKVwiIFwKCQlLQ0FQSV9DTUFDX0FFUz1c ImNtYWMoYWVzLWdlbmVyaWMpXCIgXAoJCWNhdnNfZHJpdmVyIgpDSVBIRVJfVEVTVFNfYWVzZ2Vu PSRBRVNfVEVTVFMKCkNJUEhFUl9DQUxMX2Flc2dlbl9paXY9IktDQVBJX0NCQ19BRVM9XCJjYmMo YWVzLWdlbmVyaWMpXCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2IoYWVzLWdlbmVyaWMpXCIgXAoJ CUtDQVBJX0dDTV9BRVM9XCIkKGlpdl9uYW1lICJyZmM0MTA2KGdjbV9iYXNlKGN0cihhZXMtZ2Vu ZXJpYyksZ2hhc2gtZ2VuZXJpYykpIilcIiBcCgkJY2F2c19kcml2ZXIiOwpDSVBIRVJfVEVTVFNf YWVzZ2VuX2lpdj0iQUVTIEFFU19HQ00iCkNJUEhFUl9DQUxMX2Flc2dlbl9laXY9IktDQVBJX0NC Q19BRVM9XCJjYmMoYWVzLWdlbmVyaWMpXCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2IoYWVzLWdl bmVyaWMpXCIgXAoJCUtDQVBJX0dDTV9BRVM9XCJyZmM0MTA2KGdjbV9iYXNlKGN0cihhZXMtZ2Vu ZXJpYyksZ2hhc2gtZ2VuZXJpYykpXCIgXAoJCWNhdnNfZHJpdmVyIjsKQ0lQSEVSX1RFU1RTX2Fl c2dlbl9laXY9IkFFUyBBRVNfR0NNIgoKIyBDIGNpcGhlciB1c2luZyBjb25zdGFudCB0aW1lIEFF UyB3aXRoIEMgYmxvY2sgY2hhaW5pbmcgbW9kZXMKQ0lQSEVSX0NBTExfYWVzdGk9IktDQVBJX0dD TV9BRVM9XCJnY21fYmFzZShjdHIoYWVzLWZpeGVkLXRpbWUpLGdoYXNoLWdlbmVyaWMpXCIgXAoJ CUtDQVBJX0NDTV9BRVM9XCJjY21fYmFzZShjdHIoYWVzLWZpeGVkLXRpbWUpLCQoY2JjbWFjX25h bWUgImFlcy1maXhlZC10aW1lIikpXCIgXAoJCUtDQVBJX0NCQ19BRVM9XCJjYmMoYWVzLWZpeGVk LXRpbWUpXCIgXAoJCUtDQVBJX0VDQl9BRVM9XCJlY2IoYWVzLWZpeGVkLXRpbWUpXCIgXAoJCUtD QVBJX1hUU19BRVM9XCIkKHh0c19uYW1lICJhZXMtZml4ZWQtdGltZSIpXCIgXAoJCUtDQVBJX0tX X0FFUz1cImt3KGFlcy1maXhlZC10aW1lKVwiIFwKCQlLQ0FQSV9DTUFDX0FFUz1cImNtYWMoYWVz LWZpeGVkLXRpbWUpXCIgXAoJCWNhdnNfZHJpdmVyIgpDSVBIRVJfVEVTVFNfYWVzdGk9JEFFU19U RVNUUwoKQ0lQSEVSX0NBTExfYWVzdGlfaWl2PSJLQ0FQSV9DQkNfQUVTPVwiY2JjKGFlcy1maXhl ZC10aW1lKVwiIFwKCQlLQ0FQSV9FQ0JfQUVTPVwiZWNiKGFlcy1maXhlZC10aW1lKVwiIFwKCQlL Q0FQSV9HQ01fQUVTPVwiJChpaXZfbmFtZSAicmZjNDEwNihnY21fYmFzZShjdHIoYWVzLWZpeGVk LXRpbWUpLGdoYXNoLWdlbmVyaWMpKSIpXCIgXAoJCWNhdnNfZHJpdmVyIjsKQ0lQSEVSX1RFU1RT X2Flc3RpX2lpdj0iQUVTIEFFU19HQ00iCkNJUEhFUl9DQUxMX2Flc3RpX2Vpdj0iS0NBUElfQ0JD X0FFUz1cImNiYyhhZXMtZml4ZWQtdGltZSlcIiBcCgkJS0NBUElfRUNCX0FFUz1cImVjYihhZXMt Zml4ZWQtdGltZSlcIiBcCgkJS0NBUElfR0NNX0FFUz1cInJmYzQxMDYoZ2NtX2Jhc2UoY3RyKGFl cy1maXhlZC10aW1lKSxnaGFzaC1nZW5lcmljKSlcIiBcCgkJY2F2c19kcml2ZXIiOwpDSVBIRVJf VEVTVFNfYWVzdGlfZWl2PSJBRVMgQUVTX0dDTSIKCiMjIyMjIyMjIyMjIyMjIyMjIyMgU0hBIFRF U1RTICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjClNIQV9URVNUUz0iU0hBIEhNQUMgRFJCRzgwMC05 MEEgUlNBMiIKI1NIQV9URVNUUz0iU0hBIEhNQUMgRFJCRzgwMC05MEEgUlNBMiBLREY4MDAtMTA4 IgpDSVBIRVJfQ0FMTF9zaGFnZW49IktDQVBJX1NIQTE9XCJzaGExLWdlbmVyaWNcIiBcCgkJS0NB UElfU0hBMjI0PVwic2hhMjI0LWdlbmVyaWNcIiBcCgkJS0NBUElfU0hBMjU2PVwic2hhMjU2LWdl bmVyaWNcIiBcCgkJS0NBUElfU0hBMzg0PVwic2hhMzg0LWdlbmVyaWNcIiBcCgkJS0NBUElfU0hB NTEyPVwic2hhNTEyLWdlbmVyaWNcIiBcCgkJY2F2c19kcml2ZXIiCkNJUEhFUl9URVNUU19zaGFn ZW49JFNIQV9URVNUUwoKQ0lQSEVSX0NBTExfc2hhc3NzZTM9IktDQVBJX1NIQTE9XCJzaGExLXNz c2UzXCIgXAoJCUtDQVBJX1NIQTIyND1cInNoYTIyNC1zc3NlM1wiIFwKCQlLQ0FQSV9TSEEyNTY9 XCJzaGEyNTYtc3NzZTNcIiBcCgkJS0NBUElfU0hBMzg0PVwic2hhMzg0LXNzc2UzXCIgXAoJCUtD QVBJX1NIQTUxMj1cInNoYTUxMi1zc3NlM1wiIFwKCQljYXZzX2RyaXZlciIKQ0lQSEVSX1RFU1RT X3NoYXNzc2UzPSRTSEFfVEVTVFMKCkNJUEhFUl9DQUxMX3NoYWF2eD0iS0NBUElfU0hBMT1cInNo YTEtYXZ4XCIgXAoJCUtDQVBJX1NIQTIyND1cInNoYTIyNC1hdnhcIiBcCgkJS0NBUElfU0hBMjU2 PVwic2hhMjU2LWF2eFwiIFwKCQlLQ0FQSV9TSEEzODQ9XCJzaGEzODQtYXZ4XCIgXAoJCUtDQVBJ X1NIQTUxMj1cInNoYTUxMi1hdnhcIiBcCgkJY2F2c19kcml2ZXIiCkNJUEhFUl9URVNUU19zaGFh dng9JFNIQV9URVNUUwoKQ0lQSEVSX0NBTExfc2hhYXZ4Mj0iS0NBUElfU0hBMT1cInNoYTEtYXZ4 MlwiIFwKCQlLQ0FQSV9TSEEyMjQ9XCJzaGEyMjQtYXZ4MlwiIFwKCQlLQ0FQSV9TSEEyNTY9XCJz aGEyNTYtYXZ4MlwiIFwKCQlLQ0FQSV9TSEEzODQ9XCJzaGEzODQtYXZ4MlwiIFwKCQlLQ0FQSV9T SEE1MTI9XCJzaGE1MTItYXZ4MlwiIFwKCQljYXZzX2RyaXZlciIKQ0lQSEVSX1RFU1RTX3NoYWF2 eDI9JFNIQV9URVNUUwoKQ0lQSEVSX0NBTExfc2hhbWI9IktDQVBJX1NIQTE9XCJzaGExX21iXCIg XAoJCUtDQVBJX1NIQTI1Nj1cInNoYTI1Nl9tYlwiIFwKCQlLQ0FQSV9TSEE1MTI9XCJzaGE1MTJf bWJcIiBcCgkJY2F2c19kcml2ZXIiCkNJUEhFUl9URVNUU19zaGEybWI9IlNIQSBEUkJHODAwLTkw QSBSU0EyIgoKIyMjIyMjIyMjIyMjIyMjIyMjIyBUREVTIFRFU1RTICMjIyMjIyMjIyMjIyMjIyMj IyMjIwoKQ0lQSEVSX0NBTExfeDg2dGRlc2Jsa2FzbT0iS0NBUElfRUNCX1RERVM9XCJlY2ItZGVz M19lZGUtYXNtXCIgXAoJCUtDQVBJX0NCQ19UREVTPVwiY2JjLWRlczNfZWRlLWFzbVwiIFwKCQlj YXZzX2RyaXZlciIKQ0lQSEVSX1RFU1RTX3g4NnRkZXNibGthc209IlRERVMiCgpDSVBIRVJfQ0FM TF94ODZ0ZGVzYXNtPSJLQ0FQSV9FQ0JfVERFUz1cImVjYihkZXMzX2VkZS1hc20pXCIgXAoJCUtD QVBJX0NCQ19UREVTPVwiY2JjKGRlczNfZWRlLWFzbSlcIiBcCgkJS0NBUElfQ01BQ19UREVTPVwi Y21hYyhkZXMzX2VkZS1hc20pXCIgXAoJCWNhdnNfZHJpdmVyIgpDSVBIRVJfVEVTVFNfeDg2dGRl c2FzbT0iVERFUyIKCiMjIyMjIyMjIyMjIyMjIyMjIyMgQ0FUQ0hBTEwgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKIyBBbGwgY2lwaGVycywgZXhjZXB0IFNIQSwgQUVTCkNJUEhFUl9DQUxMX3JlbWFp bj0iY2F2c19kcml2ZXIiCiMgQ01BQyBpcyBDTUFDKFRERVMpCkNJUEhFUl9URVNUU19yZW1haW49 IlRERVMgQ01BQyBLQVMiCiNDSVBIRVJfVEVTVFNfcmVtYWluPSJUREVTIENNQUMgS0FTIEtERjgw MC0xMDgiCgojIyMjIyMjIyMjIyMjIyMjIyMjIEhlYXZ5IExpZnRpbmcgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKc2FuaXR5KCkgewoJWyAhIC1kICIkVEVTVERJUiIgXSAmJiB7CgkJZWNobyAiJFRF U1RESVIgZG9lcyBub3QgZXhpc3QiCgkJZXhpdCAxCgl9Cn0KCmZhaWx1cmVzPTAKZG9fdGVzdCgp IHsKCVBBVEg9LjokUEFUSAoKCWZvciBleGVjIGluICRFWEVDOyBkbwoJCWV2YWwgQ0lQSEVSX0NB TEw9XCRDSVBIRVJfQ0FMTF8kZXhlYwoJCWV2YWwgQ0lQSEVSX1RFU1RTPVwkQ0lQSEVSX1RFU1RT XyRleGVjCgoJCSMgSW4gY2FzZSBvZiBTSEEsIGNoYW5nZSB0aGUgZGlyZWN0b3J5IG9mIHRoZSB2 ZWN0b3JzCgkJIyBkZXBlbmRpbmcgb24gdGhlIENQVSBzdXBwb3J0CgkJaWYgISAkKGNoZWNrX21p bl9rZXJuZWx2ZXIgNCA0KTsgdGhlbgoJCQlpZiBbIHgiJGV4ZWMiID0gInhzaGFzc3NlMyIgXTsg dGhlbgoJCQkJaWYgJChncmVwIC1xIGF2eCAvcHJvYy9jcHVpbmZvKSA7IHRoZW4KCQkJCQlleGVj PSJzaGFhdngiCgkJCQlmaQoJCQkJaWYgJChncmVwIC1xIGF2eDIgL3Byb2MvY3B1aW5mbykgOyB0 aGVuCgkJCQkJZXhlYz0ic2hhYXZ4MiIKCQkJCWZpCgkJCWZpCgkJZmkKCgkJWyAhIC1kICIkVEVT VERJUi8kZXhlYyIgXSAmJiB7CgkJCWVjaG8gImRpcmVjdG9yeSAkZXhlYyBkb2VzIG5vdCBleGlz dCIKCQkJY29udGludWUKCQl9CgoJCWZvciB0eXBlIGluICRDSVBIRVJfVEVTVFM7IGRvCgkJCWRp cj0iJFRFU1RESVIvJGV4ZWMvJHR5cGUiCgkJCVsgISAtZCAiJGRpciIgLWEgISAtTCAiJGRpciIg XSAmJiB7CgkJCQllY2hvICJkaXJlY3RvcnkgJGRpciBkb2VzIG5vdCBleGlzdCIKCQkJCWNvbnRp bnVlCgkJCX0KCgkJCWZvciB0ZXN0IGluICQoZmluZCAkZGlyLyAtbmFtZSAiKi5yZXEiKTsgZG8K CQkJCXJlc3BkaXI9IiQoZGlybmFtZSAkKGRpcm5hbWUgJHRlc3QpKS9yZXNwIgoJCQkJcmVzcGZp bGU9JChiYXNlbmFtZSAkdGVzdCkKCQkJCXJlc3BmaWxlPSIke3Jlc3BmaWxlJSUucmVxfS5yc3Ai CgkJCQlyZXNwZmlsZT0iJHJlc3BkaXIvJHJlc3BmaWxlIgoKCQkJCVsgISAtZCAiJHJlc3BkaXIi IF0gJiYgbWtkaXIgLXAgJHJlc3BkaXIKCQkJCWVjaG8gIkV4ZWN1dGluZyAkdGVzdCIKCQkJCWV2 YWwgUEFUSD0kKGRpcm5hbWUgJDApOiRQQVRIICRDSVBIRVJfQ0FMTCAkdGVzdCAkcmVzcGZpbGUK CQkJCXJldD0kPwoJCQkJaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KCQkJCQllY2hvICJFeGVjdXRp b24gb2YgJHRlc3QgZmFpbGVkOiAkcmV0IgoJCQkJCWVjaG8gIlRlc3QgaW52b2NhdGlvbjoiCgkJ CQkJZWNobyAiUEFUSD0kKGRpcm5hbWUgJDApOiRQQVRIICRDSVBIRVJfQ0FMTCAkdGVzdCAkcmVz cGZpbGUiCgkJCQkJZXhpdCAkcmV0CgkJCQlmaQoKCQkJCSMgRmlyc3QgdGVzdCBzcGVjaWFsIGV4 cGVjdGVkIHJlc3VsdHMKCQkJCWZheGZpbGU9IiQoYmFzZW5hbWUgJHRlc3QpIgoJCQkJZmF4Zmls ZT0iJHtmYXhmaWxlJSUucmVxfS5yc3AiCgkJCQlmYXhmaWxlPSIkKGRpcm5hbWUgJChkaXJuYW1l ICR0ZXN0KSkvZXhwZWN0ZWQvJGZheGZpbGUiCgkJCQkjIElmIHRoaXMgaXMgbm90IGF2YWlsYWJs ZSwgdGhlbiB0ZXN0IEZBWCBmaWxlcwoJCQkJaWYgWyAhIC1mICIkZmF4ZmlsZSIgXTsgdGhlbgoJ CQkJCWZheGZpbGU9IiQoYmFzZW5hbWUgJHRlc3QpIgoJCQkJCWZheGZpbGU9IiR7ZmF4ZmlsZSUl LnJlcX0uZmF4IgoJCQkJCWZheGZpbGU9IiQoZGlybmFtZSAkKGRpcm5hbWUgJHRlc3QpKS9mYXgv JGZheGZpbGUiCgkJCQlmaQoJCQkJaWYgWyAtZiAiJGZheGZpbGUiIF07IHRoZW4KCQkJCQlpZiBb ICQoYmFzZW5hbWUgJGZheGZpbGUpID0gImdjbUVuY3J5cHRJbnRJVjEyOC5mYXgiIC1vIFwKCQkJ CQkkKGJhc2VuYW1lICRmYXhmaWxlKSA9ICJnY21FbmNyeXB0SW50SVYxOTIuZmF4IiAtbyBcCgkJ CQkJJChiYXNlbmFtZSAkZmF4ZmlsZSkgPSAiZ2NtRW5jcnlwdEludElWMjU2LmZheCIgLW8gXAoJ CQkJCSQoYmFzZW5hbWUgJGZheGZpbGUpID0gIlNpZ0dlbjE1XzE4Ni0zLmZheCIgXTsgdGhlbgoJ CQkJCQllY2hvICJDaGVjayAkcmVzcGZpbGUgd2l0aCBDQVZTIHRvb2wiCgkJCQkJCWNvbnRpbnVl OwoJCQkJCWZpCgkJCQkJaWYgISAkKGRpZmYgLXdCIDwoZ3JlcCAtdkUgJ15ccyojJyAkcmVzcGZp bGUpIDwoZ3JlcCAtdkUgJ15ccyojJyAkZmF4ZmlsZSkgPiAvZGV2L251bGwpOyB0aGVuCgkJCQkJ CWVjaG8gIlRlc3QgcmVzdWx0IGZvciAkdGVzdCBpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCBy ZXN1bHQiCgkJCQkJCWxldCBmYWlsdXJlcz0oJGZhaWx1cmVzKzEpCgkJCQkJZmkKCQkJCWZpCgkJ CWRvbmUKCiAgICAgICAgICAgICAgICBkb25lCglkb25lCn0KCmZvciBpIGluIHNoYTEtc3NzZTMg c2hhMjU2LXNzc2UzIHNoYTUxMi1zc3NlMyBzaGExX21iIHNoYTUxMl9tYiBzaGEyNTZfbWIgZGVz M19lZGUteDg2XzY0IGFlc190aTsgZG8KCW1vZHByb2JlICRpID4gL2Rldi9udWxsIDI+JjEKZG9u ZQoKc2FuaXR5CmRvX3Rlc3QKCmlmIFsgJGZhaWx1cmVzIC1ndCAwIF07IHRoZW4KCWVjaG8gIlRv dGFsIG51bWJlciBvZiBmYWlsdXJlczogJGZhaWx1cmVzIgoJZXhpdCAkZmFpbHVyZXMKZWxzZQoJ ZWNobyAiQ2xlYW4gdGVzdCBydW4iCglleGl0IDAKZmkKCg== --nextPart1726595.gKAQ0pTlXz--