From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20930 invoked from network); 23 Oct 2021 20:20:56 -0000 Received: from 4ess.inri.net (216.126.196.42) by inbox.vuxu.org with ESMTPUTF8; 23 Oct 2021 20:20:56 -0000 Received: from mail-yb1-f179.google.com ([209.85.219.179]) by 4ess; Sat Oct 23 16:13:36 -0400 2021 Received: by mail-yb1-f179.google.com with SMTP id m63so15057291ybf.7 for <9front@9front.org>; Sat, 23 Oct 2021 13:13:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=UWFhksWO0ASIk5fRSUb+KrtRycL96upj7rBcbFwvJB0=; b=Mqoe4Hw6+xFVCAMVwpknrytyvzqLAzfPBFxC8coVsbNj8meYI+2YNsuOQQ5pWm+uAS dRwggphnPelE2eCpaJdJlD3YG7j0pTq6dtJbWsPlrcnNPM2Wx5jTOza+IWemZp3culbS CY28nrUCDuCtzrGXMad08U6AooTtLjA2Y0w6vmmt+lE2/u3PxXnGdei+xEjFcTGAAh6O 51NSb4fXXZdoIh09fNnXy22J8ZOQEfssFVgk6cQZBngDB/ZO1bh49RLptM38jEr56dnC XJ90lMBYtQ0/jrd0fbCxFVfXsEMLRYPkVSe8WXTyycf17emTrF/s/yQHkwWQcCvYPTCF nayA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=UWFhksWO0ASIk5fRSUb+KrtRycL96upj7rBcbFwvJB0=; b=lWjkOQuBZNY4f976e96PuXdkNkN1ujQd2+IkgDIJunKgX1Ge1W9+tLThdIxJ4QwAPF vxeOvPBT5a1IwsBFEeJszvo+m6hUKBpReyVWeq/UQi9Bi7LLxniHd9saKT4zPxVrz6c1 SZy1YIit3H6HV9++F4pSgVARdqlv5KPXhkGtaCN0b+jvcIPKPEZ9vIUEOV5V3bNGIil6 DZftYVVM0MvPJyKNaNzUa30pnUYZKc1LKFAPMgE3yheO0k3VUCasfKWRCBtYt+/IleGK reETpRzSR3fg06Yb9mGU1oK6p8XCVkM9FZeg1Z1uaSqPCak7Dt95f24KPSuSC2MLXbOV qGOg== X-Gm-Message-State: AOAM5318drRzg+ItA+3LS7n3HLEHCfoeoryYgo20hRo3M72ctjUbO0Y6 8nUnAOMx+sE9BPTqe0HwQoPl93ECFvVxQp9ZaYRLIWBq22o= X-Google-Smtp-Source: ABdhPJyA+mnAHPIWehJffYSeG6sgH9sTR9Hk1iSxAMPKNqjnVW0EFSqorcIidZneP4nTXxg/QxpCBH4lSK0NEtX7/ig= X-Received: by 2002:a25:32cd:: with SMTP id y196mr7218013yby.337.1635020009134; Sat, 23 Oct 2021 13:13:29 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:7000:270a:0:0:0:0 with HTTP; Sat, 23 Oct 2021 13:13:28 -0700 (PDT) In-Reply-To: <3C4C4D2C08BED22ADA0AB655C658BECA@eigenstate.org> References: <3C4C4D2C08BED22ADA0AB655C658BECA@eigenstate.org> From: kemal Date: Sat, 23 Oct 2021 23:13:28 +0300 Message-ID: To: 9front@9front.org Content-Type: multipart/mixed; boundary="000000000000d8d2fd05cf0ac22f" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: lossless standard-aware standard-scale general-purpose-based callback manager Subject: Re: [9front] intent to delete: devssl, cpu, oexportfs, import Reply-To: 9front@9front.org Precedence: bulk --000000000000d8d2fd05cf0ac22f Content-Type: text/plain; charset="UTF-8" > but I think this can go in before we get rid of > devtls; cpu bypasses the handshake, so as long as > we keep devtls it should keep working regardless of > libsec. getting rid of devtls o_O? i think you meant devssl. also, while reviewing my diff more, i found 2 more flaws in it: 1. i shouldn't have scrapped the ssl2 handshake support. i learned that some old versions of java that has tls 1.0 still sends the clienthello in the ssl2 format. 2. if initial clienthello has 0x0300 as its record layer version, devtls will reject it with this diff. this is not good, clients may put the minimum version they support in the record layer version, for compatibility with old servers. fix this up. 3 more changes, that is not related with the diff: 1. don't reject protocol versions that is higher than 0x03ff. this behavior is useless. 2. devtls shouldn't accept versions higher than 0x0303 in the fd and version commands. 3. in tlshand, use the minimum protocol version we support for the record layer version for compatibility until we manage to negotiate the version. --000000000000d8d2fd05cf0ac22f Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 ZGlmZiA1YjVmNjk1MTNhZGNiOTkzOWU0ZWJkOTNiZjhhZGZiZmRjMDhmY2YxIHVuY29tbWl0dGVk Ci0tLSBhLy9zeXMvbWFuLzIvcHVzaHRscworKysgYi8vc3lzL21hbi8yL3B1c2h0bHMKQEAgLTEs NiArMSw2IEBACiAuVEggUFVTSFRMUyAyCiAuU0ggTkFNRQotcHVzaHRscywgdGxzQ2xpZW50LCB0 bHNTZXJ2ZXIsIGluaXRUaHVtYnByaW50cywgZnJlZVRodW1icHJpbnRzLCBva1RodW1icHJpbnQs IG9rQ2VydGlmaWNhdGUsIHJlYWRjZXJ0LCByZWFkY2VydGNoYWluIFwtIGF0dGFjaCBUTFMxIG9y IFNTTDMgZW5jcnlwdGlvbiB0byBhIGNvbW11bmljYXRpb24gY2hhbm5lbAorcHVzaHRscywgdGxz Q2xpZW50LCB0bHNTZXJ2ZXIsIGluaXRUaHVtYnByaW50cywgZnJlZVRodW1icHJpbnRzLCBva1Ro dW1icHJpbnQsIG9rQ2VydGlmaWNhdGUsIHJlYWRjZXJ0LCByZWFkY2VydGNoYWluIFwtIGF0dGFj aCBUTFMgZW5jcnlwdGlvbiB0byBhIGNvbW11bmljYXRpb24gY2hhbm5lbAogLlNIIFNZTk9QU0lT CiAuQiAjaW5jbHVkZSA8dS5oPgogLmJyCkBAIC00NSw4ICs0NSw2IEBACiBhbmQgYSBoYW5kc2hh a2UgcHJvdG9jb2wsCiBkb2luZyBpbml0aWFsIGF1dGhlbnRpY2F0aW9uIGFuZCBzZWNyZXQgY3Jl YXRpb24gYXQKIHVzZXIgbGV2ZWwgYW5kIHRoZW4gc3RhcnRpbmcgYSBkYXRhIGNoYW5uZWwgaW4g dGhlIHJlY29yZCBwcm90b2NvbC4KLVRMUyBpcyBuZWFybHkgdGhlIHNhbWUgYXMgU1NMIDMuMCwg YW5kIHRoZSBzb2Z0d2FyZSBzaG91bGQgaW50ZXJvcGVyYXRlCi13aXRoIGltcGxlbWVudGF0aW9u cyBvZiBlaXRoZXIgc3RhbmRhcmQuCiAuUFAKIFRvIHVzZSBqdXN0IHRoZSByZWNvcmQgbGF5ZXIs IGFzIGRlc2NyaWJlZCBpbgogLklSIHRscyAoMyksCi0tLSBhLy9zeXMvbWFuLzMvdGxzCisrKyBi Ly9zeXMvbWFuLzMvdGxzCkBAIC0xLDYgKzEsNiBAQAogLlRIIFRMUyAzIAogLlNIIE5BTUUKLXRs cyBcLSBUTFMgYW5kIFNTTDMgcmVjb3JkIGxheWVyCit0bHMgXC0gVExTIHJlY29yZCBsYXllcgog LlNIIFNZTk9QU0lTCiAubmYKIC5CIGJpbmQgLWEgI2EgL25ldApAQCAtMTYsMTAgKzE2LDkgQEAK IC5CSSAvbmV0L3Rscy8gbiAvc3RhdHVzCiAuZmkKIC5TSCBERVNDUklQVElPTgotVGhlIFRMUyBk ZXZpY2UgaW1wbGVtZW50cyB0aGUgcmVjb3JkIGxheWVyIHByb3RvY29scwotb2YgVHJhbnNwb3J0 IExheWVyIFNlY3VyaXR5IHZlcnNpb24gMS4wLTEuMiBhbmQgU2VjdXJlIFNvY2tldHMgTGF5ZXIg dmVyc2lvbiAzLjAuCi1JdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGhhbmRzaGFrZSBwcm90b2Nv bHMsIHdoaWNoIGFyZSByZXNwb25zaWJsZSBmb3IKLW11dHVhbCBhdXRoZW50aWNhdGlvbiBhbmQg a2V5IGV4Y2hhbmdlLgorVGhlIFRMUyBkZXZpY2UgaW1wbGVtZW50cyB0aGUgcmVjb3JkIGxheWVy IHByb3RvY29scyBvZiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkKK3ZlcnNpb24gMS4wLTEuMi4g SXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBoYW5kc2hha2UgcHJvdG9jb2xzLCB3aGljaCBhcmUg cmVzcG9uc2libGUKK2ZvciBtdXR1YWwgYXV0aGVudGljYXRpb24gYW5kIGtleSBleGNoYW5nZS4K IFRoZQogLkkgdGxzCiBkZXZpY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgZmlsdGVycyBwcm92aWRp bmcgb3B0aW9uYWwgZW5jcnlwdGlvbiBhbmQgYW50aS10YW1wZXJpbmcuCkBAIC01MywxMyArNTIs MTEgQEAKIC5JIHZlcnMKIGZvcm1hdCByZWNvcmRzLCBidXQgaW5jb21pbmcgbWVzc2FnZXMgb2Yg ZWl0aGVyIHZlcnNpb24gYXJlIGFjY2VwdGVkLgogVmFsaWQgdmVyc2lvbnMgYXJlCi0uQiAweDMw MAotZm9yIFNTTHYzLjAgYW5kCiAuQlIgMHgzMDEgLAogLkIgMHgzMDIKIGFuZAogLkIgMHgzMDMK LWZvciBUTFN2MS4wICh3aGljaCBjb3VsZCBiZSBrbm93biBhcyBTU0x2My4wMSksIFRMU3YxLjEg YW5kIFRMU3YxLjIuCitmb3IgVExTdjEuMCwgVExTdjEuMSBhbmQgVExTdjEuMi4KIFRoaXMgY29t bWFuZCBtdXN0IGJlIGlzc3VlZCBiZWZvcmUgYW55IG90aGVyIGNvbW1hbmQKIGFuZCBiZWZvcmUg cmVhZGluZyBvciB3cml0aW5nIGFueSBtZXNzYWdlczsKIGl0IG1heSBvbmx5IGJlIGV4ZWN1dGVk IG9uY2UuCkBAIC0xMjAsMTAgKzExNyw5IEBACiAuVFAKIC5CSSBhbGVydCBcIGFsZXJ0bm8KIFNl bmQgYW4gYWxlcnQgbWVzc2FnZS4KLS5JIEFsZXJ0bm8KLW1heSBiZSBhIHZhbGlkIGFsZXJ0IGNv ZGUgZm9yIGVpdGhlciBTU0x2My4wIG9yIFRMUywKLWFuZCBpcyBtYXBwZWQgdG8gYW4gYXBwcm9w cmlhdGUgY29kZSBmb3IgdGhlIHByb3RvY29sIGluIHVzZS4KLUlmIGl0IGlzIGEgZmF0YWwgYWxl cnQsIHRoZSBmaWx0ZXIgaXMgc2V0IGludG8gYW4gZXJyb3Igc3RhdGUuCitJZgorLkkgYWxlcnRu bworaXMgYSBmYXRhbCBhbGVydCwgdGhlIGZpbHRlciBpcyBzZXQgaW50byBhbiBlcnJvciBzdGF0 ZS4KIC5QUAogQXBwbGljYXRpb24gbWVzc2FnZXMgYW5kIGhhbmRzaGFrZSBtZXNzYWdlcyBhcmUg Y29tbXVuaWNhdGVkIHVzaW5nCiAuSSBkYXRhCi0tLSBhLy9zeXMvc3JjLzkvcG9ydC9kZXZ0bHMu YworKysgYi8vc3lzL3NyYy85L3BvcnQvZGV2dGxzLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICog IGRldnRscyAtIHJlY29yZCBsYXllciBmb3IgdHJhbnNwb3J0IGxheWVyIHNlY3VyaXR5IDEuMiBh bmQgc2VjdXJlIHNvY2tldHMgbGF5ZXIgMy4wCisgKiAgZGV2dGxzIC0gcmVjb3JkIGxheWVyIGZv ciB0cmFuc3BvcnQgbGF5ZXIgc2VjdXJpdHkgMS4wLTEuMgogICovCiAjaW5jbHVkZQkidS5oIgog I2luY2x1ZGUJIi4uL3BvcnQvbGliLmgiCkBAIC0yNCwxMiArMjQsMTEgQEAKIAlNYXhNYWNMZW4J PSBTSEEyXzI1NmRsZW4sCiAKIAkvKiBwcm90b2NvbCB2ZXJzaW9ucyB3ZSBjYW4gYWNjZXB0ICov Ci0JU1NMM1ZlcnNpb24JPSAweDAzMDAsCiAJVExTMTBWZXJzaW9uCT0gMHgwMzAxLAogCVRMUzEx VmVyc2lvbgk9IDB4MDMwMiwKIAlUTFMxMlZlcnNpb24JPSAweDAzMDMsCi0JTWluUHJvdG9WZXJz aW9uCT0gMHgwMzAwLAkvKiBsaW1pdHMgb24gdmVyc2lvbiB3ZSBhY2NlcHQgKi8KLQlNYXhQcm90 b1ZlcnNpb24JPSAweDAzZmYsCisJTWluUHJvdG9WZXJzaW9uCT0gVExTMTBWZXJzaW9uLAkvKiBs aW1pdHMgb24gdmVyc2lvbiB3ZSBhY2NlcHQgKi8KKwlNYXhQcm90b1ZlcnNpb24JPSBUTFMxMlZl cnNpb24sCiAKIAkvKiBjb25uZWN0aW9uIHN0YXRlcyAqLwogCVNIYW5kc2hha2UJPSAxIDw8IDAs CS8qIGRvaW5nIGhhbmRzaGFrZSAqLwpAQCAtNTcsNyArNTYsNiBAQAogCUVSZWNvcmRPdmVyZmxv dyAJCT0gMjIsCiAJRURlY29tcHJlc3Npb25GYWlsdXJlIAk9IDMwLAogCUVIYW5kc2hha2VGYWls dXJlIAkJPSA0MCwKLQlFTm9DZXJ0aWZpY2F0ZSAJCQk9IDQxLAogCUVCYWRDZXJ0aWZpY2F0ZSAJ CT0gNDIsCiAJRVVuc3VwcG9ydGVkQ2VydGlmaWNhdGUgCT0gNDMsCiAJRUNlcnRpZmljYXRlUmV2 b2tlZCAJCT0gNDQsCkBAIC04OSw3ICs4Nyw2IEBACiAKIAlpbnQJCSgqZW5jKShTZWNyZXQqLCB1 Y2hhciosIGludCk7CiAJaW50CQkoKmRlYykoU2VjcmV0KiwgdWNoYXIqLCBpbnQpOwotCWludAkJ KCp1bnBhZCkodWNoYXIqLCBpbnQsIGludCk7CiAJRGlnZXN0U3RhdGUqCSgqbWFjKSh1Y2hhcios IHVsb25nLCB1Y2hhciosIHVsb25nLCB1Y2hhciosIERpZ2VzdFN0YXRlKik7CiAKIAlpbnQJCWJs b2NrOwkJLyogZW5jcnlwdGlvbiBibG9jayBsZW4sIDAgaWYgbm9uZSAqLwpAQCAtMTI1LDEyICsx MjIsNiBAQAogCWludAkJc3RhdGU7CiAJaW50CQlkZWJ1ZzsKIAotCS8qCi0JICogZnVuY3Rpb24g dG8gZ2VucmF0ZSBhdXRoZW50aWNhdGVkIGRhdGEgYmxvYiBmb3IgZGlmZmVyZW50Ci0JICogcHJv dG9jb2wgdmVyc2lvbnMKLQkgKi8KLQlpbnQJCSgqcGFja0FBRCkodTY0aW50LCB1Y2hhciosIHVj aGFyKik7Ci0KIAkvKiBpbnB1dCBzaWRlIC0tIHByb3RlY3RlZCBieSBpbi5pbyAqLwogCU9uZVdh eQkJaW47CiAJQmxvY2sJCSpwcm9jZXNzZWQ7CS8qIG5leHQgYnVuY2ggb2YgYXBwbGljYXRpb24g ZGF0YSAqLwpAQCAtMTUzLDM3ICsxNDQsMzQgQEAKIAogc3RydWN0IFRsc0VycnN7CiAJaW50CWVy cjsKLQlpbnQJc3NsZXJyOwotCWludAl0bHNlcnI7CiAJaW50CWZhdGFsOwogCWNoYXIJKm1zZzsK IH07CiAKIHN0YXRpYyBUbHNFcnJzIHRsc2VycnNbXSA9IHsKLQl7RUNsb3NlTm90aWZ5LAkJCUVD bG9zZU5vdGlmeSwJCQlFQ2xvc2VOb3RpZnksCQkJMCwgCSJjbG9zZSBub3RpZnkifSwKLQl7RVVu ZXhwZWN0ZWRNZXNzYWdlLAlFVW5leHBlY3RlZE1lc3NhZ2UsCUVVbmV4cGVjdGVkTWVzc2FnZSwg CTEsICJ1bmV4cGVjdGVkIG1lc3NhZ2UifSwKLQl7RUJhZFJlY29yZE1hYywJCUVCYWRSZWNvcmRN YWMsCQlFQmFkUmVjb3JkTWFjLCAJCTEsICJiYWQgcmVjb3JkIG1hYyJ9LAotCXtFRGVjcnlwdGlv bkZhaWxlZCwJCUVJbGxlZ2FsUGFyYW1ldGVyLAkJRURlY3J5cHRpb25GYWlsZWQsCQkxLCAiZGVj cnlwdGlvbiBmYWlsZWQifSwKLQl7RVJlY29yZE92ZXJmbG93LAkJRUlsbGVnYWxQYXJhbWV0ZXIs CQlFUmVjb3JkT3ZlcmZsb3csCQkxLCAicmVjb3JkIHRvbyBsb25nIn0sCi0Je0VEZWNvbXByZXNz aW9uRmFpbHVyZSwJRURlY29tcHJlc3Npb25GYWlsdXJlLAlFRGVjb21wcmVzc2lvbkZhaWx1cmUs CTEsICJkZWNvbXByZXNzaW9uIGZhaWxlZCJ9LAotCXtFSGFuZHNoYWtlRmFpbHVyZSwJCUVIYW5k c2hha2VGYWlsdXJlLAkJRUhhbmRzaGFrZUZhaWx1cmUsCQkxLCAiY291bGQgbm90IG5lZ290aWF0 ZSBhY2NlcHRhYmxlIHNlY3VyaXR5IHBhcmFtZXRlcnMifSwKLQl7RU5vQ2VydGlmaWNhdGUsCQlF Tm9DZXJ0aWZpY2F0ZSwJCQlFQ2VydGlmaWNhdGVVbmtub3duLAkxLCAibm8gYXBwcm9wcmlhdGUg Y2VydGlmaWNhdGUgYXZhaWxhYmxlIn0sCi0Je0VCYWRDZXJ0aWZpY2F0ZSwJCUVCYWRDZXJ0aWZp Y2F0ZSwJCUVCYWRDZXJ0aWZpY2F0ZSwJCTEsICJjb3JydXB0ZWQgb3IgaW52YWxpZCBjZXJ0aWZp Y2F0ZSJ9LAotCXtFVW5zdXBwb3J0ZWRDZXJ0aWZpY2F0ZSwJRVVuc3VwcG9ydGVkQ2VydGlmaWNh dGUsCUVVbnN1cHBvcnRlZENlcnRpZmljYXRlLAkxLCAidW5zdXBwb3J0ZWQgY2VydGlmaWNhdGUg dHlwZSJ9LAotCXtFQ2VydGlmaWNhdGVSZXZva2VkLAlFQ2VydGlmaWNhdGVSZXZva2VkLAkJRUNl cnRpZmljYXRlUmV2b2tlZCwJCTEsICJyZXZva2VkIGNlcnRpZmljYXRlIn0sCi0Je0VDZXJ0aWZp Y2F0ZUV4cGlyZWQsCQlFQ2VydGlmaWNhdGVFeHBpcmVkLAkJRUNlcnRpZmljYXRlRXhwaXJlZCwJ CTEsICJleHBpcmVkIGNlcnRpZmljYXRlIn0sCi0Je0VDZXJ0aWZpY2F0ZVVua25vd24sCUVDZXJ0 aWZpY2F0ZVVua25vd24sCUVDZXJ0aWZpY2F0ZVVua25vd24sCTEsICJ1bmFjY2VwdGFibGUgY2Vy dGlmaWNhdGUifSwKLQl7RUlsbGVnYWxQYXJhbWV0ZXIsCQlFSWxsZWdhbFBhcmFtZXRlciwJCUVJ bGxlZ2FsUGFyYW1ldGVyLAkJMSwgImlsbGVnYWwgcGFyYW1ldGVyIn0sCi0Je0VVbmtub3duQ2Es CQkJRUhhbmRzaGFrZUZhaWx1cmUsCQlFVW5rbm93bkNhLAkJCTEsICJ1bmtub3duIGNlcnRpZmlj YXRlIGF1dGhvcml0eSJ9LAotCXtFQWNjZXNzRGVuaWVkLAkJRUhhbmRzaGFrZUZhaWx1cmUsCQlF QWNjZXNzRGVuaWVkLAkJMSwgImFjY2VzcyBkZW5pZWQifSwKLQl7RURlY29kZUVycm9yLAkJCUVJ bGxlZ2FsUGFyYW1ldGVyLAkJRURlY29kZUVycm9yLAkJCTEsICJlcnJvciBkZWNvZGluZyBtZXNz YWdlIn0sCi0Je0VEZWNyeXB0RXJyb3IsCQkJRUlsbGVnYWxQYXJhbWV0ZXIsCQlFRGVjcnlwdEVy cm9yLAkJCTEsICJlcnJvciBkZWNyeXB0aW5nIG1lc3NhZ2UifSwKLQl7RUV4cG9ydFJlc3RyaWN0 aW9uLAkJRUhhbmRzaGFrZUZhaWx1cmUsCQlFRXhwb3J0UmVzdHJpY3Rpb24sCQkxLCAiZXhwb3J0 IHJlc3RyaWN0aW9uIHZpb2xhdGVkIn0sCi0Je0VQcm90b2NvbFZlcnNpb24sCQlFSWxsZWdhbFBh cmFtZXRlciwJCUVQcm90b2NvbFZlcnNpb24sCQkxLCAicHJvdG9jb2wgdmVyc2lvbiBub3Qgc3Vw cG9ydGVkIn0sCi0Je0VJbnN1ZmZpY2llbnRTZWN1cml0eSwJRUhhbmRzaGFrZUZhaWx1cmUsCQlF SW5zdWZmaWNpZW50U2VjdXJpdHksCTEsICJzdHJvbmdlciBzZWN1cml0eSByb3V0aW5lcyByZXF1 aXJlZCJ9LAotCXtFSW50ZXJuYWxFcnJvciwJCQlFSGFuZHNoYWtlRmFpbHVyZSwJCUVJbnRlcm5h bEVycm9yLAkJCTEsICJpbnRlcm5hbCBlcnJvciJ9LAotCXtFVXNlckNhbmNlbGVkLAkJRUNsb3Nl Tm90aWZ5LAkJCUVVc2VyQ2FuY2VsZWQsCQkJMCwgImhhbmRzaGFrZSBjYW5jZWxlZCBieSB1c2Vy In0sCi0Je0VOb1JlbmVnb3RpYXRpb24sCQlFVW5leHBlY3RlZE1lc3NhZ2UsCUVOb1JlbmVnb3Rp YXRpb24sCQkwLCAibm8gcmVuZWdvdGlhdGlvbiJ9LAorCXtFQ2xvc2VOb3RpZnksCQkJMCwgImNs b3NlIG5vdGlmeSJ9LAorCXtFVW5leHBlY3RlZE1lc3NhZ2UsCQkxLCAidW5leHBlY3RlZCBtZXNz YWdlIn0sCisJe0VCYWRSZWNvcmRNYWMsCQkJMSwgImJhZCByZWNvcmQgbWFjIn0sCisJe0VEZWNy eXB0aW9uRmFpbGVkLAkJMSwgImRlY3J5cHRpb24gZmFpbGVkIn0sCisJe0VSZWNvcmRPdmVyZmxv dywJCTEsICJyZWNvcmQgdG9vIGxvbmcifSwKKwl7RURlY29tcHJlc3Npb25GYWlsdXJlLAkJMSwg ImRlY29tcHJlc3Npb24gZmFpbGVkIn0sCisJe0VIYW5kc2hha2VGYWlsdXJlLAkJMSwgImNvdWxk IG5vdCBuZWdvdGlhdGUgYWNjZXB0YWJsZSBzZWN1cml0eSBwYXJhbWV0ZXJzIn0sCisJe0VCYWRD ZXJ0aWZpY2F0ZSwJCTEsICJjb3JydXB0ZWQgb3IgaW52YWxpZCBjZXJ0aWZpY2F0ZSJ9LAorCXtF VW5zdXBwb3J0ZWRDZXJ0aWZpY2F0ZSwJMSwgInVuc3VwcG9ydGVkIGNlcnRpZmljYXRlIHR5cGUi fSwKKwl7RUNlcnRpZmljYXRlUmV2b2tlZCwJCTEsICJyZXZva2VkIGNlcnRpZmljYXRlIn0sCisJ e0VDZXJ0aWZpY2F0ZUV4cGlyZWQsCQkxLCAiZXhwaXJlZCBjZXJ0aWZpY2F0ZSJ9LAorCXtFQ2Vy dGlmaWNhdGVVbmtub3duLAkJMSwgInVuYWNjZXB0YWJsZSBjZXJ0aWZpY2F0ZSJ9LAorCXtFSWxs ZWdhbFBhcmFtZXRlciwJCTEsICJpbGxlZ2FsIHBhcmFtZXRlciJ9LAorCXtFVW5rbm93bkNhLAkJ CTEsICJ1bmtub3duIGNlcnRpZmljYXRlIGF1dGhvcml0eSJ9LAorCXtFQWNjZXNzRGVuaWVkLAkJ CTEsICJhY2Nlc3MgZGVuaWVkIn0sCisJe0VEZWNvZGVFcnJvciwJCQkxLCAiZXJyb3IgZGVjb2Rp bmcgbWVzc2FnZSJ9LAorCXtFRGVjcnlwdEVycm9yLAkJCTEsICJlcnJvciBkZWNyeXB0aW5nIG1l c3NhZ2UifSwKKwl7RUV4cG9ydFJlc3RyaWN0aW9uLAkJMSwgImV4cG9ydCByZXN0cmljdGlvbiB2 aW9sYXRlZCJ9LAorCXtFUHJvdG9jb2xWZXJzaW9uLAkJMSwgInByb3RvY29sIHZlcnNpb24gbm90 IHN1cHBvcnRlZCJ9LAorCXtFSW5zdWZmaWNpZW50U2VjdXJpdHksCQkxLCAic3Ryb25nZXIgc2Vj dXJpdHkgcm91dGluZXMgcmVxdWlyZWQifSwKKwl7RUludGVybmFsRXJyb3IsCQkxLCAiaW50ZXJu YWwgZXJyb3IifSwKKwl7RVVzZXJDYW5jZWxlZCwJCQkwLCAiaGFuZHNoYWtlIGNhbmNlbGVkIGJ5 IHVzZXIifSwKKwl7RU5vUmVuZWdvdGlhdGlvbiwJCTAsICJubyByZW5lZ290aWF0aW9uIn0sCiB9 OwogCiBlbnVtCkBAIC0yMjcsMTEgKzIxNSw4IEBACiBzdGF0aWMgdm9pZAlhbGVydEhhbmQoVGxz UmVjKiwgY2hhciAqKTsKIHN0YXRpYyBUbHNSZWMJKm5ld3RscyhDaGFuICpjKTsKIHN0YXRpYyBU bHNSZWMJKm1rdGxzcmVjKHZvaWQpOwotc3RhdGljIERpZ2VzdFN0YXRlKnNzbG1hY19tZDUodWNo YXIgKnAsIHVsb25nIGxlbiwgdWNoYXIgKmtleSwgdWxvbmcga2xlbiwgdWNoYXIgKmRpZ2VzdCwg RGlnZXN0U3RhdGUgKnMpOwotc3RhdGljIERpZ2VzdFN0YXRlKnNzbG1hY19zaGExKHVjaGFyICpw LCB1bG9uZyBsZW4sIHVjaGFyICprZXksIHVsb25nIGtsZW4sIHVjaGFyICpkaWdlc3QsIERpZ2Vz dFN0YXRlICpzKTsKIHN0YXRpYyBEaWdlc3RTdGF0ZSpub21hYyh1Y2hhciAqcCwgdWxvbmcgbGVu LCB1Y2hhciAqa2V5LCB1bG9uZyBrbGVuLCB1Y2hhciAqZGlnZXN0LCBEaWdlc3RTdGF0ZSAqcyk7 Ci1zdGF0aWMgaW50CXNzbFBhY2tBQUQodTY0aW50LCB1Y2hhciosIHVjaGFyKik7Ci1zdGF0aWMg aW50CXRsc1BhY2tBQUQodTY0aW50LCB1Y2hhciosIHVjaGFyKik7CitzdGF0aWMgaW50CXBhY2tB QUQodTY0aW50LCB1Y2hhciosIHVjaGFyKik7CiBzdGF0aWMgdm9pZAlwYWNrTWFjKFNlY3JldCos IHVjaGFyKiwgaW50LCB1Y2hhciosIGludCwgdWNoYXIqKTsKIHN0YXRpYyB2b2lkCXB1dDY0KHVj aGFyICpwLCB1NjRpbnQpOwogc3RhdGljIHZvaWQJcHV0MzIodWNoYXIgKnAsIHUzMmludCk7CkBA IC0yNTIsOCArMjM3LDcgQEAKIHN0YXRpYyBpbnQJYWVzZ2NtX2FlYWRfZW5jKFNlY3JldCAqc2Vj LCB1Y2hhciAqYWFkLCBpbnQgYWFkbGVuLCB1Y2hhciAqcmVjaXYsIHVjaGFyICpkYXRhLCBpbnQg bGVuKTsKIHN0YXRpYyBpbnQJYWVzZ2NtX2FlYWRfZGVjKFNlY3JldCAqc2VjLCB1Y2hhciAqYWFk LCBpbnQgYWFkbGVuLCB1Y2hhciAqcmVjaXYsIHVjaGFyICpkYXRhLCBpbnQgbGVuKTsKIHN0YXRp YyBpbnQJbm9lbmMoU2VjcmV0ICpzZWMsIHVjaGFyICpidWYsIGludCBuKTsKLXN0YXRpYyBpbnQJ c3NsdW5wYWQodWNoYXIgKmJ1ZiwgaW50IG4sIGludCBibG9jayk7Ci1zdGF0aWMgaW50CXRsc3Vu cGFkKHVjaGFyICpidWYsIGludCBuLCBpbnQgYmxvY2spOworc3RhdGljIGludAl1bnBhZCh1Y2hh ciAqYnVmLCBpbnQgbiwgaW50IGJsb2NrKTsKIHN0YXRpYyB2b2lkCWZyZWVTZWMoU2VjcmV0ICpz ZWMpOwogc3RhdGljIGNoYXIJKnRsc3N0YXRlKGludCBzKTsKIHN0YXRpYyB2b2lkCXBkdW1wKGlu dCwgdm9pZCosIGNoYXIqKTsKQEAgLTc1MCw3ICs3MzQsNyBAQAogCW5jb25zdW1lZCA9IFJlY0hk ckxlbjsKIAogCWlmKCh0ci0+aGFuZGluID09IDApICYmIChoZWFkZXJbMF0gJiAweDgwKSl7Ci0J CS8qIENvcGUgd2l0aCBhbiBTU0wzIENsaWVudEhlbGxvIGV4cHJlc3NlZCBpbiBTU0wyIHJlY29y ZCBmb3JtYXQuCisJCS8qIENvcGUgd2l0aCBhIFRMUyBDbGllbnRIZWxsbyBleHByZXNzZWQgaW4g U1NMMiByZWNvcmQgZm9ybWF0LgogCQkJVGhpcyBpcyBzZW50IGJ5IHNvbWUgY2xpZW50cyB0aGF0 IHdlIG11c3QgaW50ZXJvcGVyYXRlCiAJCQl3aXRoLCBzdWNoIGFzIEphdmEncyBKU1NFIGFuZCBN aWNyb3NvZnQncyBJbnRlcm5ldCBFeHBsb3Jlci4gKi8KIAkJbGVuID0gKGdldDE2KGhlYWRlcikg JiB+MHg4MDAwKSAtIDM7CkBAIC03NTgsMTIgKzc0MiwxMiBAQAogCQl2ZXIgPSBnZXQxNihoZWFk ZXIgKyAzKTsKIAkJaWYodHlwZSAhPSBTU0wyQ2xpZW50SGVsbG8gfHwgbGVuIDwgMjIpCiAJCQly Y3ZFcnJvcih0ciwgRVByb3RvY29sVmVyc2lvbiwgImludmFsaWQgaW5pdGlhbCBTU0wyLWxpa2Ug bWVzc2FnZSIpOwotCX1lbHNleyAgLyogbm9ybWFsIFNTTDMgcmVjb3JkIGZvcm1hdCAqLworCX1l bHNleyAgLyogbm9ybWFsIFRMUyByZWNvcmQgZm9ybWF0ICovCiAJCXR5cGUgPSBoZWFkZXJbMF07 CiAJCXZlciA9IGdldDE2KGhlYWRlcisxKTsKIAkJbGVuID0gZ2V0MTYoaGVhZGVyKzMpOwogCX0K LQlpZih2ZXIgIT0gdHItPnZlcnNpb24gJiYgKHRyLT52ZXJzZXQgfHwgdmVyIDwgTWluUHJvdG9W ZXJzaW9uIHx8IHZlciA+IE1heFByb3RvVmVyc2lvbikpCisJaWYodmVyICE9IHRyLT52ZXJzaW9u ICYmICh0ci0+dmVyc2V0IHx8IHZlciA8IDB4MDMwMCkpCiAJCXJjdkVycm9yKHRyLCBFUHJvdG9j b2xWZXJzaW9uLCAiZGV2dGxzIGV4cGVjdGVkIHZlcj0leCVzLCBzYXcgKGxlbj0lZCkgdHlwZT0l eCB2ZXI9JXggJyUuMTJzJyIsCiAJCQl0ci0+dmVyc2lvbiwgdHItPnZlcnNldD8iL3NldCI6IiIs IGxlbiwgdHlwZSwgdmVyLCAoY2hhciopaGVhZGVyKTsKIAlpZihsZW4gPiBNYXhDaXBoZXJSZWNM ZW4gfHwgbGVuIDwgMCkKQEAgLTgyMyw3ICs4MDcsNyBAQAogCiAJCS8qIHVwZGF0ZSBsZW5ndGgg Ki8KIAkJcHV0MTYoaGVhZGVyKzMsIGxlbik7Ci0JCWFhZGxlbiA9ICgqdHItPnBhY2tBQUQpKGlu LT5zZXErKywgaGVhZGVyLCBhYWQpOworCQlhYWRsZW4gPSBwYWNrQUFEKGluLT5zZXErKywgaGVh ZGVyLCBhYWQpOwogCQlpZihzZWMtPmFlYWRfZGVjICE9IG5pbCkgewogCQkJbGVuID0gKCpzZWMt PmFlYWRfZGVjKShzZWMsIGFhZCwgYWFkbGVuLCBwIC0gaXZsZW4sIHAsIHVucGFkX2xlbik7CiAJ CQlpZihsZW4gPCAwKQpAQCAtOTE2LDcgKzkwMCw3IEBACiAJCQlkZWNoYW5kcSh0cik7CiAJCX1l bHNlewogCQkJdW5sb2NrKCZ0ci0+aHFsb2NrKTsKLQkJCWlmKHRyLT52ZXJzZXQgJiYgdHItPnZl cnNpb24gIT0gU1NMM1ZlcnNpb24gJiYgIXdhc2Vycm9yKCkpeworCQkJaWYodHItPnZlcnNldCAm JiAhd2FzZXJyb3IoKSl7CiAJCQkJc2VuZEFsZXJ0KHRyLCBFTm9SZW5lZ290aWF0aW9uKTsKIAkJ CQlwb3BlcnJvcigpOwogCQkJfQpAQCAtOTMzLDcgKzkxNyw3IEBACiAJCQl9CiAJCQkvKiBQYXNz IHRoZSBTU0wyIGZvcm1hdCBkYXRhLCBzbyB0aGF0IHRoZSBoYW5kc2hha2UgY29kZSBjYW4gY29t cHV0ZQogCQkJCXRoZSBjb3JyZWN0IGNoZWNrc3Vtcy4gIEhTU0wyQ2xpZW50SGVsbG8gPSBIYW5k c2hha2VUeXBlIDkgaXMKLQkJCQl1bnVzZWQgaW4gUkZDMjI0Ni4gKi8KKwkJCQl1bnVzZWQgaW4g UkZDNTI0Ni4gKi8KIAkJCWIgPSBwYWRibG9jayhiLCA4KTsKIAkJCWItPnJwWzBdID0gUkhhbmRz aGFrZTsKIAkJCWItPnJwWzFdID0gSFNTTDJDbGllbnRIZWxsbzsKQEAgLTk0Niw3ICs5MzAsNyBA QAogCQkJZGVjaGFuZHEodHIpOwogCQl9ZWxzZXsKIAkJCXVubG9jaygmdHItPmhxbG9jayk7Ci0J CQlpZih0ci0+dmVyc2V0ICYmIHRyLT52ZXJzaW9uICE9IFNTTDNWZXJzaW9uICYmICF3YXNlcnJv cigpKXsKKwkJCWlmKHRyLT52ZXJzZXQgJiYgIXdhc2Vycm9yKCkpewogCQkJCXNlbmRBbGVydCh0 ciwgRU5vUmVuZWdvdGlhdGlvbik7CiAJCQkJcG9wZXJyb3IoKTsKIAkJCX0KQEAgLTEzMTQsNyAr MTI5OCw3IEBACiAJCXB1dDE2KHArMywgbik7CiAKIAkJaWYoc2VjICE9IG5pbCl7Ci0JCQlhYWRs ZW4gPSAoKnRyLT5wYWNrQUFEKShvdXQtPnNlcSsrLCBwLCBhYWQpOworCQkJYWFkbGVuID0gcGFj a0FBRChvdXQtPnNlcSsrLCBwLCBhYWQpOwogCQkJaWYoc2VjLT5hZWFkX2VuYyAhPSBuaWwpCiAJ CQkJbiA9ICgqc2VjLT5hZWFkX2VuYykoc2VjLCBhYWQsIGFhZGxlbiwgcCArIFJlY0hkckxlbiwg cCArIFJlY0hkckxlbiArIGl2bGVuLCBuKSArIGl2bGVuOwogCQkJZWxzZSB7CkBAIC0xMzkwLDQy ICsxMzc0LDM0IEBACiB7CiAJY2hhcgkqbmFtZTsKIAlpbnQJbWFjbGVuOwotCXZvaWQJKCppbml0 a2V5KShIYXNoYWxnICosIGludCwgU2VjcmV0ICosIHVjaGFyKik7CisJdm9pZAkoKmluaXRrZXkp KEhhc2hhbGcgKiwgU2VjcmV0ICosIHVjaGFyKik7CiB9OwogCiBzdGF0aWMgdm9pZAotaW5pdG1k NWtleShIYXNoYWxnICpoYSwgaW50IHZlcnNpb24sIFNlY3JldCAqcywgdWNoYXIgKnApCitpbml0 bWQ1a2V5KEhhc2hhbGcgKmhhLCBTZWNyZXQgKnMsIHVjaGFyICpwKQogewogCXMtPm1hY2xlbiA9 IGhhLT5tYWNsZW47Ci0JaWYodmVyc2lvbiA9PSBTU0wzVmVyc2lvbikKLQkJcy0+bWFjID0gc3Ns bWFjX21kNTsKLQllbHNlCi0JCXMtPm1hYyA9IGhtYWNfbWQ1OworCXMtPm1hYyA9IGhtYWNfbWQ1 OwogCW1lbW1vdmUocy0+bWFja2V5LCBwLCBoYS0+bWFjbGVuKTsKIH0KIAogc3RhdGljIHZvaWQK LWluaXRjbGVhcm1hYyhIYXNoYWxnICosIGludCwgU2VjcmV0ICpzLCB1Y2hhciAqKQoraW5pdGNs ZWFybWFjKEhhc2hhbGcgKiwgU2VjcmV0ICpzLCB1Y2hhciAqKQogewogCXMtPm1hYyA9IG5vbWFj OwogfQogCiBzdGF0aWMgdm9pZAotaW5pdHNoYTFrZXkoSGFzaGFsZyAqaGEsIGludCB2ZXJzaW9u LCBTZWNyZXQgKnMsIHVjaGFyICpwKQoraW5pdHNoYTFrZXkoSGFzaGFsZyAqaGEsIFNlY3JldCAq cywgdWNoYXIgKnApCiB7CiAJcy0+bWFjbGVuID0gaGEtPm1hY2xlbjsKLQlpZih2ZXJzaW9uID09 IFNTTDNWZXJzaW9uKQotCQlzLT5tYWMgPSBzc2xtYWNfc2hhMTsKLQllbHNlCi0JCXMtPm1hYyA9 IGhtYWNfc2hhMTsKKwlzLT5tYWMgPSBobWFjX3NoYTE7CiAJbWVtbW92ZShzLT5tYWNrZXksIHAs IGhhLT5tYWNsZW4pOwogfQogCiBzdGF0aWMgdm9pZAotaW5pdHNoYTJfMjU2a2V5KEhhc2hhbGcg KmhhLCBpbnQgdmVyc2lvbiwgU2VjcmV0ICpzLCB1Y2hhciAqcCkKK2luaXRzaGEyXzI1NmtleShI YXNoYWxnICpoYSwgU2VjcmV0ICpzLCB1Y2hhciAqcCkKIHsKLQlpZih2ZXJzaW9uID09IFNTTDNW ZXJzaW9uKQotCQllcnJvcigic2hhMjU2IGNhbm5vdCBiZSB1c2VkIHdpdGggU1NMIik7CiAJcy0+ bWFjbGVuID0gaGEtPm1hY2xlbjsKIAlzLT5tYWMgPSBobWFjX3NoYTJfMjU2OwogCW1lbW1vdmUo cy0+bWFja2V5LCBwLCBoYS0+bWFjbGVuKTsKQEAgLTE2NDEsMTAgKzE2MTcsNiBAQAogCQltID0g c3RydG9sKGNiLT5mWzFdLCBuaWwsIDApOwogCQlpZihtIDwgTWluUHJvdG9WZXJzaW9uIHx8IG0g PiBNYXhQcm90b1ZlcnNpb24pCiAJCQllcnJvcigidW5zdXBwb3J0ZWQgdmVyc2lvbiIpOwotCQlp ZihtID09IFNTTDNWZXJzaW9uKQotCQkJdHItPnBhY2tBQUQgPSBzc2xQYWNrQUFEOwotCQllbHNl Ci0JCQl0ci0+cGFja0FBRCA9IHRsc1BhY2tBQUQ7CiAJCXRyLT52ZXJzZXQgPSAxOwogCQl0ci0+ dmVyc2lvbiA9IG07CiAJfWVsc2UgaWYoc3RyY21wKGNiLT5mWzBdLCAic2VjcmV0IikgPT0gMCl7 CkBAIC0xNjg1LDggKzE2NTcsOCBAQAogCQlpZighaGEtPmluaXRrZXkgfHwgIWVhLT5pbml0a2V5 KQogCQkJZXJyb3IoIm1pc2ltcGxlbWVudGVkIHNlY3JldCBhbGdvcml0aG0iKTsKIAotCQkoKmhh LT5pbml0a2V5KShoYSwgdHItPnZlcnNpb24sIHRvcywgJnhbMF0pOwotCQkoKmhhLT5pbml0a2V5 KShoYSwgdHItPnZlcnNpb24sIHRvYywgJnhbaGEtPm1hY2xlbl0pOworCQkoKmhhLT5pbml0a2V5 KShoYSwgdG9zLCAmeFswXSk7CisJCSgqaGEtPmluaXRrZXkpKGhhLCB0b2MsICZ4W2hhLT5tYWNs ZW5dKTsKIAkJKCplYS0+aW5pdGtleSkoZWEsIHRvcywgJnhbMiAqIGhhLT5tYWNsZW5dLCAmeFsy ICogaGEtPm1hY2xlbiArIDIgKiBlYS0+a2V5bGVuXSk7CiAJCSgqZWEtPmluaXRrZXkpKGVhLCB0 b2MsICZ4WzIgKiBoYS0+bWFjbGVuICsgZWEtPmtleWxlbl0sICZ4WzIgKiBoYS0+bWFjbGVuICsg MiAqIGVhLT5rZXlsZW4gKyBlYS0+aXZsZW5dKTsKIApAQCAtMTcwMSwxMyArMTY3Myw2IEBACiAJ CQl0ci0+aW4ubmV3ID0gdG9jOwogCQkJdHItPm91dC5uZXcgPSB0b3M7CiAJCX0KLQkJaWYodHIt PnZlcnNpb24gPT0gU1NMM1ZlcnNpb24pewotCQkJdG9jLT51bnBhZCA9IHNzbHVucGFkOwotCQkJ dG9zLT51bnBhZCA9IHNzbHVucGFkOwotCQl9ZWxzZXsKLQkJCXRvYy0+dW5wYWQgPSB0bHN1bnBh ZDsKLQkJCXRvcy0+dW5wYWQgPSB0bHN1bnBhZDsKLQkJfQogCQl0b2MtPmVuY2FsZyA9IGVhLT5u YW1lOwogCQl0b2MtPmhhc2hhbGcgPSBoYS0+bmFtZTsKIAkJdG9zLT5lbmNhbGcgPSBlYS0+bmFt ZTsKQEAgLTE4NzksMTcgKzE4NDQsMTIgQEAKIGlmKHRyLT5kZWJ1ZylwcHJpbnQoInNlbmRBbGVy dCAlZFxuIiwgZXJyKTsKIAlmYXRhbCA9IDE7CiAJbXNnID0gInRscyB1bmtub3duIGFsZXJ0IjsK LQlmb3IoaT0wOyBpIDwgbmVsZW0odGxzZXJycyk7IGkrKykgewotCQlpZih0bHNlcnJzW2ldLmVy ciA9PSBlcnIpIHsKKwlmb3IoaT0wOyBpIDwgbmVsZW0odGxzZXJycyk7IGkrKykKKwkJaWYodGxz ZXJyc1tpXS5lcnIgPT0gZXJyKXsKIAkJCW1zZyA9IHRsc2VycnNbaV0ubXNnOwotCQkJaWYodHIt PnZlcnNpb24gPT0gU1NMM1ZlcnNpb24pCi0JCQkJZXJyID0gdGxzZXJyc1tpXS5zc2xlcnI7Ci0J CQllbHNlCi0JCQkJZXJyID0gdGxzZXJyc1tpXS50bHNlcnI7CiAJCQlmYXRhbCA9IHRsc2VycnNb aV0uZmF0YWw7CiAJCQlicmVhazsKIAkJfQotCX0KIAogCWlmKCF3YXNlcnJvcigpKXsKIAkJYiA9 IGFsbG9jYigyKTsKQEAgLTIwNjEsNyArMjAyMSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXRsc3Vu cGFkKHVjaGFyICpidWYsIGludCBuLCBpbnQgYmxvY2spCit1bnBhZCh1Y2hhciAqYnVmLCBpbnQg biwgaW50IGJsb2NrKQogewogCWludCBwYWQsIG5uOwogCkBAIC0yMDc2LDE4ICsyMDM2LDYgQEAK IH0KIAogc3RhdGljIGludAotc3NsdW5wYWQodWNoYXIgKmJ1ZiwgaW50IG4sIGludCBibG9jaykK LXsKLQlpbnQgcGFkLCBubjsKLQotCXBhZCA9IGJ1ZltuIC0gMV07Ci0Jbm4gPSBuIC0gMSAtIHBh ZDsKLQlpZihubiA8PSAwIHx8IG4gJSBibG9jaykKLQkJcmV0dXJuIC0xOwotCXJldHVybiBubjsK LX0KLQotc3RhdGljIGludAogYmxvY2twYWQodWNoYXIgKmJ1ZiwgaW50IG4sIGludCBibG9jaykK IHsKIAlpbnQgcGFkLCBubjsKQEAgLTIxMTIsNyArMjA2MCw3IEBACiBkZXMzZGVjKFNlY3JldCAq c2VjLCB1Y2hhciAqYnVmLCBpbnQgbikKIHsKIAlkZXMzQ0JDZGVjcnlwdChidWYsIG4sIHNlYy0+ ZW5ja2V5KTsKLQlyZXR1cm4gKCpzZWMtPnVucGFkKShidWYsIG4sIDgpOworCXJldHVybiB1bnBh ZChidWYsIG4sIDgpOwogfQogCiBzdGF0aWMgaW50CkBAIC0yMTI3LDcgKzIwNzUsNyBAQAogYWVz ZGVjKFNlY3JldCAqc2VjLCB1Y2hhciAqYnVmLCBpbnQgbikKIHsKIAlhZXNDQkNkZWNyeXB0KGJ1 Ziwgbiwgc2VjLT5lbmNrZXkpOwotCXJldHVybiAoKnNlYy0+dW5wYWQpKGJ1ZiwgbiwgMTYpOwor CXJldHVybiB1bnBhZChidWYsIG4sIDE2KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIyMTMsNzEg KzIxNjEsOCBAQAogCXJldHVybiBuaWw7CiB9CiAKLS8qCi0gKiBzc2xtYWM6IG1hYyBjYWxjdWxh dGlvbnMgZm9yIHNzbCAzLjAgb25seTsgdGxzIDEuMCB1c2VzIHRoZSBzdGFuZGFyZCBobWFjLgot ICovCi1zdGF0aWMgRGlnZXN0U3RhdGUqCi1zc2xtYWNfeCh1Y2hhciAqcCwgdWxvbmcgbGVuLCB1 Y2hhciAqa2V5LCB1bG9uZyBrbGVuLCB1Y2hhciAqZGlnZXN0LCBEaWdlc3RTdGF0ZSAqcywKLQlE aWdlc3RTdGF0ZSooKngpKHVjaGFyKiwgdWxvbmcsIHVjaGFyKiwgRGlnZXN0U3RhdGUqKSwgaW50 IHhsZW4sIGludCBwYWRsZW4pCi17Ci0JaW50IGk7Ci0JdWNoYXIgcGFkWzQ4XSwgaW5uZXJkaWdl c3RbMjBdOwotCi0JaWYoeGxlbiA+IHNpemVvZihpbm5lcmRpZ2VzdCkKLQl8fCBwYWRsZW4gPiBz aXplb2YocGFkKSkKLQkJcmV0dXJuIG5pbDsKLQotCWlmKGtsZW4+NjQpCi0JCXJldHVybiBuaWw7 Ci0KLQkvKiBmaXJzdCB0aW1lIHRocm91Z2ggKi8KLQlpZihzID09IG5pbCl7Ci0JCWZvcihpPTA7 IGk8cGFkbGVuOyBpKyspCi0JCQlwYWRbaV0gPSAweDM2OwotCQlzID0gKCp4KShrZXksIGtsZW4s IG5pbCwgbmlsKTsKLQkJcyA9ICgqeCkocGFkLCBwYWRsZW4sIG5pbCwgcyk7Ci0JCWlmKHMgPT0g bmlsKQotCQkJcmV0dXJuIG5pbDsKLQl9Ci0KLQlzID0gKCp4KShwLCBsZW4sIG5pbCwgcyk7Ci0J aWYoZGlnZXN0ID09IG5pbCkKLQkJcmV0dXJuIHM7Ci0KLQkvKiBsYXN0IHRpbWUgdGhyb3VnaCAq LwotCWZvcihpPTA7IGk8cGFkbGVuOyBpKyspCi0JCXBhZFtpXSA9IDB4NWM7Ci0JKCp4KShuaWws IDAsIGlubmVyZGlnZXN0LCBzKTsKLQlzID0gKCp4KShrZXksIGtsZW4sIG5pbCwgbmlsKTsKLQlz ID0gKCp4KShwYWQsIHBhZGxlbiwgbmlsLCBzKTsKLQkoKngpKGlubmVyZGlnZXN0LCB4bGVuLCBk aWdlc3QsIHMpOwotCXJldHVybiBuaWw7Ci19Ci0KLXN0YXRpYyBEaWdlc3RTdGF0ZSoKLXNzbG1h Y19zaGExKHVjaGFyICpwLCB1bG9uZyBsZW4sIHVjaGFyICprZXksIHVsb25nIGtsZW4sIHVjaGFy ICpkaWdlc3QsIERpZ2VzdFN0YXRlICpzKQotewotCXJldHVybiBzc2xtYWNfeChwLCBsZW4sIGtl eSwga2xlbiwgZGlnZXN0LCBzLCBzaGExLCBTSEExZGxlbiwgNDApOwotfQotCi1zdGF0aWMgRGln ZXN0U3RhdGUqCi1zc2xtYWNfbWQ1KHVjaGFyICpwLCB1bG9uZyBsZW4sIHVjaGFyICprZXksIHVs b25nIGtsZW4sIHVjaGFyICpkaWdlc3QsIERpZ2VzdFN0YXRlICpzKQotewotCXJldHVybiBzc2xt YWNfeChwLCBsZW4sIGtleSwga2xlbiwgZGlnZXN0LCBzLCBtZDUsIE1ENWRsZW4sIDQ4KTsKLX0K LQogc3RhdGljIGludAotc3NsUGFja0FBRCh1NjRpbnQgc2VxLCB1Y2hhciAqaGRyLCB1Y2hhciAq YWFkKQotewotCXB1dDY0KGFhZCwgc2VxKTsKLQlhYWRbOF0gPSBoZHJbMF07Ci0JYWFkWzldID0g aGRyWzNdOwotCWFhZFsxMF0gPSBoZHJbNF07Ci0JcmV0dXJuIDExOwotfQotCi1zdGF0aWMgaW50 Ci10bHNQYWNrQUFEKHU2NGludCBzZXEsIHVjaGFyICpoZHIsIHVjaGFyICphYWQpCitwYWNrQUFE KHU2NGludCBzZXEsIHVjaGFyICpoZHIsIHVjaGFyICphYWQpCiB7CiAJcHV0NjQoYWFkLCBzZXEp OwogCWFhZFs4XSA9IGhkclswXTsKLS0tIGEvL3N5cy9zcmMvbGlic2VjL3BvcnQvdGxzaGFuZC5j CisrKyBiLy9zeXMvc3JjL2xpYnNlYy9wb3J0L3Rsc2hhbmQuYwpAQCAtOCwxNCArOCwxMyBAQAog Ly8JCWNsaWVudC9zZXJ2ZXIgLSBtYWluIGhhbmRzaGFrZSBwcm90b2NvbCBkZWZpbml0aW9uCiAv LwkJbWVzc2FnZSBmdW5jdGlvbnMgLSBmb3JtYXRpbmcgaGFuZHNoYWtlIG1lc3NhZ2VzCiAvLwkJ Y2lwaGVyIGNob2ljZXMgLSBjYXRhbG9nIG9mIGRpZ2VzdCBhbmQgZW5jcnlwdCBhbGdvcml0aG1z Ci0vLwkJc2VjdXJpdHkgZnVuY3Rpb25zIC0gUEtDUyMxLCBzc2xITUFDLCBzZXNzaW9uIGtleWdl bgorLy8JCXNlY3VyaXR5IGZ1bmN0aW9ucyAtIFBLQ1MjMSwgc2Vzc2lvbiBrZXlnZW4KIC8vCQln ZW5lcmFsIHV0aWxpdHkgZnVuY3Rpb25zIC0gbWFsbG9jLCBzZXJpYWxpemF0aW9uCi0vLyBUaGUg aGFuZHNoYWtlIHByb3RvY29sIGJ1aWxkcyBvbiB0aGUgVExTL1NTTDMgcmVjb3JkIGxheWVyIHBy b3RvY29sLAotLy8gd2hpY2ggaXMgaW1wbGVtZW50ZWQgaW4ga2VybmVsIGRldmljZSAjYS4gIFNl ZSBhbHNvIC9saWIvcmZjL3JmYzIyNDYuCisvLyBUaGUgaGFuZHNoYWtlIHByb3RvY29sIGJ1aWxk cyBvbiB0aGUgVExTIHJlY29yZCBsYXllciBwcm90b2NvbCwKKy8vIHdoaWNoIGlzIGltcGxlbWVu dGVkIGluIGtlcm5lbCBkZXZpY2UgI2EuICBTZWUgYWxzbyAvbGliL3JmYy9yZmM1MjQ2LgogCiBl bnVtIHsKLQlUTFNGaW5pc2hlZExlbiA9IDEyLAotCVNTTDNGaW5pc2hlZExlbiA9IE1ENWRsZW4r U0hBMWRsZW4sCisJRmluaXNoZWRMZW4gPSAxMiwKIAlNYXhLZXlEYXRhID0gMTYwLAkvLyBhbW91 bnQgb2Ygc2VjcmV0IHdlIG1heSBuZWVkCiAJTUFYZGxlbiA9IFNIQTJfNTEyZGxlbiwKIAlSYW5k b21TaXplID0gMzIsCkBAIC00NywxMSArNDYsNiBAQAogCXZvaWQgKCppbml0KShtcGludCAqcCwg bXBpbnQgKmEsIG1waW50ICpiLCBtcGludCAqeCwgbXBpbnQgKnksIG1waW50ICpuLCBtcGludCAq aCk7CiB9IE5hbWVkY3VydmU7CiAKLXR5cGVkZWYgc3RydWN0IEZpbmlzaGVkewotCXVjaGFyIHZl cmlmeVtTU0wzRmluaXNoZWRMZW5dOwotCWludCBuOwotfSBGaW5pc2hlZDsKLQogdHlwZWRlZiBz dHJ1Y3QgSGFuZHNoYWtlSGFzaCB7CiAJTUQ1c3RhdGUJbWQ1OwogCVNIQXN0YXRlCXNoYTE7CkBA IC04MSw3ICs3NSw2IEBACiAJLy8gYnl0ZSBnZW5lcmF0aW9uIGFuZCBoYW5kc2hha2UgY2hlY2tz dW0KIAl2b2lkICgqcHJmKSh1Y2hhciosIGludCwgdWNoYXIqLCBpbnQsIGNoYXIqLCB1Y2hhcios IGludCk7CiAJdm9pZCAoKnNldEZpbmlzaGVkKShUbHNTZWMqLCBIYW5kc2hha2VIYXNoLCB1Y2hh ciosIGludCk7Ci0JaW50IG5maW47CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBUbHNDb25uZWN0aW9u ewpAQCAtOTksNyArOTIsNyBAQAogCiAJLy8gZm9yIGZpbmlzaGVkIG1lc3NhZ2VzCiAJSGFuZHNo YWtlSGFzaAloYW5kaGFzaDsKLQlGaW5pc2hlZAlmaW5pc2hlZDsKKwl1Y2hhcgkJZmluaXNoZWRb RmluaXNoZWRMZW5dOwogCiAJdWNoYXIgKnNlbmRwOwogCXVjaGFyIGJ1ZlsxPDwxNl07CkBAIC0x NTIsMTkgKzE0NSwxNyBAQAogCQkJaW50IHNpZ2FsZzsKIAkJCUJ5dGVzICpzaWduYXR1cmU7CiAJ CX0gY2VydGlmaWNhdGVWZXJpZnk7CQkKLQkJRmluaXNoZWQgZmluaXNoZWQ7CisJCXVjaGFyIGZp bmlzaGVkW0ZpbmlzaGVkTGVuXTsKIAl9IHU7CiB9IE1zZzsKIAogCiBlbnVtIHsKLQlTU0wzVmVy c2lvbgk9IDB4MDMwMCwKIAlUTFMxMFZlcnNpb24JPSAweDAzMDEsCiAJVExTMTFWZXJzaW9uCT0g MHgwMzAyLAogCVRMUzEyVmVyc2lvbgk9IDB4MDMwMywKIAlQcm90b2NvbFZlcnNpb24JPSBUTFMx MlZlcnNpb24sCS8vIG1heGltdW0gdmVyc2lvbiB3ZSBzcGVhawotCU1pblByb3RvVmVyc2lvbgk9 IDB4MDMwMCwJLy8gbGltaXRzIG9uIHZlcnNpb24gd2UgYWNjZXB0Ci0JTWF4UHJvdG9WZXJzaW9u CT0gMHgwM2ZmLAorCU1pblByb3RvVmVyc2lvbgk9IFRMUzEwVmVyc2lvbiwJLy8gbGltaXRzIG9u IHZlcnNpb24gd2UgYWNjZXB0CiB9OwogCiAvLyBoYW5kc2hha2UgdHlwZQpAQCAtMTkyLDcgKzE4 Myw2IEBACiAJRVJlY29yZE92ZXJmbG93ID0gMjIsCiAJRURlY29tcHJlc3Npb25GYWlsdXJlID0g MzAsCiAJRUhhbmRzaGFrZUZhaWx1cmUgPSA0MCwKLQlFTm9DZXJ0aWZpY2F0ZSA9IDQxLAogCUVC YWRDZXJ0aWZpY2F0ZSA9IDQyLAogCUVVbnN1cHBvcnRlZENlcnRpZmljYXRlID0gNDMsCiAJRUNl cnRpZmljYXRlUmV2b2tlZCA9IDQ0LApAQCAtMzY3LDcgKzM1Nyw2IEBACiAjcHJhZ21hCXZhcmFy Z2NrIGFyZ3Bvcwl0bHNFcnJvciAzCiBzdGF0aWMgaW50IHNldFZlcnNpb24oVGxzQ29ubmVjdGlv biAqYywgaW50IHZlcnNpb24pOwogc3RhdGljIGludCBzZXRTZWNyZXRzKFRsc0Nvbm5lY3Rpb24g KmMsIGludCBpc2NsaWVudCk7Ci1zdGF0aWMgaW50IGZpbmlzaGVkTWF0Y2goVGxzQ29ubmVjdGlv biAqYywgRmluaXNoZWQgKmYpOwogc3RhdGljIHZvaWQgdGxzQ29ubmVjdGlvbkZyZWUoVGxzQ29u bmVjdGlvbiAqYyk7CiAKIHN0YXRpYyBpbnQgaXNESEUoaW50IHRsc2lkKTsKQEAgLTM5NCw3ICsz ODMsNiBAQAogc3RhdGljIEJ5dGVzKgl0bHNTZWNESEVjKFRsc1NlYyAqc2VjLCBCeXRlcyAqcCwg Qnl0ZXMgKmcsIEJ5dGVzICpZcyk7CiBzdGF0aWMgQnl0ZXMqCXRsc1NlY0VDREhFYyhUbHNTZWMg KnNlYywgaW50IGN1cnZlLCBCeXRlcyAqWXMpOwogc3RhdGljIHZvaWQJdGxzU2VjVmVycyhUbHNT ZWMgKnNlYywgaW50IHYpOwotc3RhdGljIGludAl0bHNTZWNGaW5pc2hlZChUbHNTZWMgKnNlYywg SGFuZHNoYWtlSGFzaCBoc2gsIHVjaGFyICpmaW4sIGludCBuZmluLCBpbnQgaXNjbGllbnQpOwog c3RhdGljIHZvaWQJc2V0TWFzdGVyU2VjcmV0KFRsc1NlYyAqc2VjLCBCeXRlcyAqcG0pOwogc3Rh dGljIGludAlkaWdlc3RESHBhcmFtcyhUbHNTZWMgKnNlYywgQnl0ZXMgKnBhciwgdWNoYXIgZGln ZXN0W01BWGRsZW5dLCBpbnQgc2lnYWxnKTsKIHN0YXRpYyBjaGFyKgl2ZXJpZnlESHBhcmFtcyhU bHNTZWMgKnNlYywgQnl0ZXMgKnBhciwgQnl0ZXMgKmNlcnQsIEJ5dGVzICpzaWcsIGludCBzaWdh bGcpOwpAQCAtNDUxLDcgKzQzOSw3IEBACiAJCXJldHVybiAtMTsKIAl9CiAJZGF0YSA9IC0xOwot CWZwcmludChjdGwsICJmZCAlZCAweCV4IiwgZmQsIFByb3RvY29sVmVyc2lvbik7CisJZnByaW50 KGN0bCwgImZkICVkIDB4JXgiLCBmZCwgTWluUHJvdG9WZXJzaW9uKTsKIAl0bHMgPSB0bHNTZXJ2 ZXIyKGN0bCwgaGFuZCwKIAkJY29ubi0+Y2VydCwgY29ubi0+Y2VydGxlbiwKIAkJY29ubi0+cHNr SUQsIGNvbm4tPnBzaywgY29ubi0+cHNrbGVuLApAQCAtNTExLDI4ICs0OTksMjYgQEAKIAl9CiAK IAkvLyBFbGxpcHRpYyBDdXJ2ZXMgKGFsc28gY2FsbGVkIFN1cHBvcnRlZCBHcm91cHMpCi0JaWYo UHJvdG9jb2xWZXJzaW9uID49IFRMUzEwVmVyc2lvbil7Ci0JCW0gPSBwIC0gYjsKLQkJYiA9IGVy ZWFsbG9jKGIsIG0gKyAyKzIrMituZWxlbShuYW1lZGN1cnZlcykqMiArIDIrMisxK25lbGVtKHBv aW50Zm9ybWF0cykpOwotCQlwID0gYiArIG07CisJbSA9IHAgLSBiOworCWIgPSBlcmVhbGxvYyhi LCBtICsgMisyKzIrbmVsZW0obmFtZWRjdXJ2ZXMpKjIgKyAyKzIrMStuZWxlbShwb2ludGZvcm1h dHMpKTsKKwlwID0gYiArIG07CiAKLQkJbiA9IG5lbGVtKG5hbWVkY3VydmVzKTsKLQkJcHV0MTYo cCwgRXh0ZWMpLCBwICs9IDI7CS8qIFR5cGU6IGVsbGlwdGljX2N1cnZlcyAvIHN1cHBvcnRlZF9n cm91cHMgKi8KLQkJcHV0MTYocCwgKG4rMSkqMiksIHAgKz0gMjsJLyogTGVuZ3RoICovCi0JCXB1 dDE2KHAsIG4qMiksIHAgKz0gMjsJCS8qIEVsbGlwdGljIEN1cnZlcyBMZW5ndGggKi8KLQkJZm9y KGk9MDsgaSA8IG47IGkrKyl7CQkvKiBFbGxpcHRpYyBDdXJ2ZXMgKi8KLQkJCXB1dDE2KHAsIG5h bWVkY3VydmVzW2ldLnRsc2lkKTsKLQkJCXAgKz0gMjsKLQkJfQotCi0JCW4gPSBuZWxlbShwb2lu dGZvcm1hdHMpOwotCQlwdXQxNihwLCBFeHRlY3ApLCBwICs9IDI7CS8qIFR5cGU6IGVjX3BvaW50 X2Zvcm1hdHMgKi8KLQkJcHV0MTYocCwgbisxKSwgcCArPSAyOwkJLyogTGVuZ3RoICovCi0JCSpw KysgPSBuOwkJCS8qIEVDIHBvaW50IGZvcm1hdHMgTGVuZ3RoICovCi0JCWZvcihpPTA7IGkgPCBu OyBpKyspCQkvKiBFQyBwb2ludCBmb3JtYXRzICovCi0JCQkqcCsrID0gcG9pbnRmb3JtYXRzW2ld OworCW4gPSBuZWxlbShuYW1lZGN1cnZlcyk7CisJcHV0MTYocCwgRXh0ZWMpLCBwICs9IDI7CS8q IFR5cGU6IGVsbGlwdGljX2N1cnZlcyAvIHN1cHBvcnRlZF9ncm91cHMgKi8KKwlwdXQxNihwLCAo bisxKSoyKSwgcCArPSAyOwkvKiBMZW5ndGggKi8KKwlwdXQxNihwLCBuKjIpLCBwICs9IDI7CQkv KiBFbGxpcHRpYyBDdXJ2ZXMgTGVuZ3RoICovCisJZm9yKGk9MDsgaSA8IG47IGkrKyl7CQkvKiBF bGxpcHRpYyBDdXJ2ZXMgKi8KKwkJcHV0MTYocCwgbmFtZWRjdXJ2ZXNbaV0udGxzaWQpOworCQlw ICs9IDI7CiAJfQogCisJbiA9IG5lbGVtKHBvaW50Zm9ybWF0cyk7CisJcHV0MTYocCwgRXh0ZWNw KSwgcCArPSAyOwkvKiBUeXBlOiBlY19wb2ludF9mb3JtYXRzICovCisJcHV0MTYocCwgbisxKSwg cCArPSAyOwkJLyogTGVuZ3RoICovCisJKnArKyA9IG47CQkJLyogRUMgcG9pbnQgZm9ybWF0cyBM ZW5ndGggKi8KKwlmb3IoaT0wOyBpIDwgbjsgaSsrKQkJLyogRUMgcG9pbnQgZm9ybWF0cyAqLwor CQkqcCsrID0gcG9pbnRmb3JtYXRzW2ldOworCiAJLy8gc2lnbmF0dXJlIGFsZ29yaXRobXMKIAlp ZihQcm90b2NvbFZlcnNpb24gPj0gVExTMTJWZXJzaW9uKXsKIAkJbiA9IG5lbGVtKHNpZ2FsZ3Mp OwpAQCAtNTkxLDcgKzU3Nyw3IEBACiAJCWNsb3NlKGN0bCk7CiAJCXJldHVybiAtMTsKIAl9Ci0J ZnByaW50KGN0bCwgImZkICVkIDB4JXgiLCBmZCwgUHJvdG9jb2xWZXJzaW9uKTsKKwlmcHJpbnQo Y3RsLCAiZmQgJWQgMHgleCIsIGZkLCBNaW5Qcm90b1ZlcnNpb24pOwogCWV4dCA9IHRsc0NsaWVu dEV4dGVuc2lvbnMoY29ubiwgJm4pOwogCXRscyA9IHRsc0NsaWVudDIoY3RsLCBoYW5kLAogCQlj b25uLT5jZXJ0LCBjb25uLT5jZXJ0bGVuLCAKQEAgLTg0OSwxMCArODM1LDcgQEAKIAl9CiAKIAkv KiBubyBDZXJ0aWZpY2F0ZVZlcmlmeTsgc2tpcCB0byBGaW5pc2hlZCAqLwotCWlmKHRsc1NlY0Zp bmlzaGVkKGMtPnNlYywgYy0+aGFuZGhhc2gsIGMtPmZpbmlzaGVkLnZlcmlmeSwgYy0+ZmluaXNo ZWQubiwgMSkgPCAwKXsKLQkJdGxzRXJyb3IoYywgRUludGVybmFsRXJyb3IsICJjYW4ndCBzZXQg ZmluaXNoZWQ6ICVyIik7Ci0JCWdvdG8gRXJyOwotCX0KKwkoKmMtPnNlYy0+c2V0RmluaXNoZWQp KGMtPnNlYywgYy0+aGFuZGhhc2gsIGMtPmZpbmlzaGVkLCAxKTsKIAlpZighbXNnUmVjdihjLCAm bSkpCiAJCWdvdG8gRXJyOwogCWlmKG0udGFnICE9IEhGaW5pc2hlZCkgewpAQCAtODU5LDcgKzg0 Miw3IEBACiAJCXRsc0Vycm9yKGMsIEVVbmV4cGVjdGVkTWVzc2FnZSwgImV4cGVjdGVkIGEgZmlu aXNoZWQiKTsKIAkJZ290byBFcnI7CiAJfQotCWlmKCFmaW5pc2hlZE1hdGNoKGMsICZtLnUuZmlu aXNoZWQpKSB7CisJaWYodHNtZW1jbXAoYy0+ZmluaXNoZWQsIG0udS5maW5pc2hlZCwgRmluaXNo ZWRMZW4pICE9IDApIHsKIAkJdGxzRXJyb3IoYywgRUhhbmRzaGFrZUZhaWx1cmUsICJmaW5pc2hl ZCB2ZXJpZmljYXRpb24gZmFpbGVkIik7CiAJCWdvdG8gRXJyOwogCX0KQEAgLTg3MSwxMiArODU0 LDkgQEAKIAkJZ290byBFcnI7CiAJfQogCi0JaWYodGxzU2VjRmluaXNoZWQoYy0+c2VjLCBjLT5o YW5kaGFzaCwgYy0+ZmluaXNoZWQudmVyaWZ5LCBjLT5maW5pc2hlZC5uLCAwKSA8IDApewotCQl0 bHNFcnJvcihjLCBFSW50ZXJuYWxFcnJvciwgImNhbid0IHNldCBmaW5pc2hlZDogJXIiKTsKLQkJ Z290byBFcnI7Ci0JfQorCSgqYy0+c2VjLT5zZXRGaW5pc2hlZCkoYy0+c2VjLCBjLT5oYW5kaGFz aCwgYy0+ZmluaXNoZWQsIDApOwogCW0udGFnID0gSEZpbmlzaGVkOwotCW0udS5maW5pc2hlZCA9 IGMtPmZpbmlzaGVkOworCW1lbW1vdmUobS51LmZpbmlzaGVkLCBjLT5maW5pc2hlZCwgRmluaXNo ZWRMZW4pOwogCWlmKCFtc2dTZW5kKGMsICZtLCBBRmx1c2gpKQogCQlnb3RvIEVycjsKIAlpZih0 cmFjZSkKQEAgLTEyMjAsMjEgKzEyMDAsMTUgQEAKIAogCS8vIENpcGhlcmNoYW5nZSBtdXN0IG9j Y3VyIGltbWVkaWF0ZWx5IGJlZm9yZSBGaW5pc2hlZCB0byBhdm9pZAogCS8vIHBvdGVudGlhbCBo b2xlOyAgc2VlIHNlY3Rpb24gNC4zIG9mIFdhZ25lciBTY2huZWllciAxOTk2LgotCWlmKHRsc1Nl Y0ZpbmlzaGVkKGMtPnNlYywgYy0+aGFuZGhhc2gsIGMtPmZpbmlzaGVkLnZlcmlmeSwgYy0+Zmlu aXNoZWQubiwgMSkgPCAwKXsKLQkJdGxzRXJyb3IoYywgRUludGVybmFsRXJyb3IsICJjYW4ndCBz ZXQgZmluaXNoZWQgMTogJXIiKTsKLQkJZ290byBFcnI7Ci0JfQorCSgqYy0+c2VjLT5zZXRGaW5p c2hlZCkoYy0+c2VjLCBjLT5oYW5kaGFzaCwgYy0+ZmluaXNoZWQsIDEpOwogCW0udGFnID0gSEZp bmlzaGVkOwotCW0udS5maW5pc2hlZCA9IGMtPmZpbmlzaGVkOworCW1lbW1vdmUobS51LmZpbmlz aGVkLCBjLT5maW5pc2hlZCwgRmluaXNoZWRMZW4pOwogCWlmKCFtc2dTZW5kKGMsICZtLCBBRmx1 c2gpKSB7CiAJCXRsc0Vycm9yKGMsIEVJbnRlcm5hbEVycm9yLCAiY2FuJ3QgZmx1c2ggYWZ0ZXIg Y2xpZW50IEZpbmlzaGVkOiAlciIpOwogCQlnb3RvIEVycjsKIAl9CiAKLQlpZih0bHNTZWNGaW5p c2hlZChjLT5zZWMsIGMtPmhhbmRoYXNoLCBjLT5maW5pc2hlZC52ZXJpZnksIGMtPmZpbmlzaGVk Lm4sIDApIDwgMCl7Ci0JCXRsc0Vycm9yKGMsIEVJbnRlcm5hbEVycm9yLCAiY2FuJ3Qgc2V0IGZp bmlzaGVkIDA6ICVyIik7Ci0JCWdvdG8gRXJyOwotCX0KKwkoKmMtPnNlYy0+c2V0RmluaXNoZWQp KGMtPnNlYywgYy0+aGFuZGhhc2gsIGMtPmZpbmlzaGVkLCAwKTsKIAlpZighbXNnUmVjdihjLCAm bSkpIHsKIAkJdGxzRXJyb3IoYywgRUludGVybmFsRXJyb3IsICJjYW4ndCByZWFkIHNlcnZlciBG aW5pc2hlZDogJXIiKTsKIAkJZ290byBFcnI7CkBAIC0xMjQ0LDcgKzEyMTgsNyBAQAogCQlnb3Rv IEVycjsKIAl9CiAKLQlpZighZmluaXNoZWRNYXRjaChjLCAmbS51LmZpbmlzaGVkKSkgeworCWlm KHRzbWVtY21wKGMtPmZpbmlzaGVkLCBtLnUuZmluaXNoZWQsIEZpbmlzaGVkTGVuKSAhPSAwKSB7 CiAJCXRsc0Vycm9yKGMsIEVIYW5kc2hha2VGYWlsdXJlLCAiZmluaXNoZWQgdmVyaWZpY2F0aW9u IGZhaWxlZCIpOwogCQlnb3RvIEVycjsKIAl9CkBAIC0xNDE4LDE2ICsxMzkyLDE2IEBACiAJCQln b3RvIE92ZXJmbG93OwogCQlpZihpc0VDREhFKGMtPmNpcGhlcikpCiAJCQkqcCsrID0gbjsKLQkJ ZWxzZSBpZihpc0RIRShjLT5jaXBoZXIpIHx8IGMtPnZlcnNpb24gIT0gU1NMM1ZlcnNpb24pCisJ CWVsc2UKIAkJCXB1dDE2KHAsIG4pLCBwICs9IDI7CiAJCW1lbW1vdmUocCwgbS0+dS5jbGllbnRL ZXlFeGNoYW5nZS5rZXktPmRhdGEsIG4pOwogCQlwICs9IG47CiAJCWJyZWFrOwogCWNhc2UgSEZp bmlzaGVkOgotCQlpZihwK20tPnUuZmluaXNoZWQubiA+IGUpCisJCWlmKHArRmluaXNoZWRMZW4g PiBlKQogCQkJZ290byBPdmVyZmxvdzsKLQkJbWVtbW92ZShwLCBtLT51LmZpbmlzaGVkLnZlcmlm eSwgbS0+dS5maW5pc2hlZC5uKTsKLQkJcCArPSBtLT51LmZpbmlzaGVkLm47CisJCW1lbW1vdmUo cCwgbS0+dS5maW5pc2hlZCwgRmluaXNoZWRMZW4pOworCQlwICs9IEZpbmlzaGVkTGVuOwogCQli cmVhazsKIAl9CiAKQEAgLTE0OTYsNyArMTQ3MCw3IEBACiAJfQogCiAJaWYodHlwZSA9PSBIU1NM MkNsaWVudEhlbGxvKXsKLQkJLyogQ29wZSB3aXRoIGFuIFNTTDMgQ2xpZW50SGVsbG8gZXhwcmVz c2VkIGluIFNTTDIgcmVjb3JkIGZvcm1hdC4KKwkJLyogQ29wZSB3aXRoIGFuIFRMUyBDbGllbnRI ZWxsbyBleHByZXNzZWQgaW4gU1NMMiByZWNvcmQgZm9ybWF0LgogCQkJVGhpcyBpcyBzZW50IGJ5 IHNvbWUgY2xpZW50cyB0aGF0IHdlIG11c3QgaW50ZXJvcGVyYXRlCiAJCQl3aXRoLCBzdWNoIGFz IEphdmEncyBKU1NFIGFuZCBNaWNyb3NvZnQncyBJbnRlcm5ldCBFeHBsb3Jlci4gKi8KIAkJaW50 IG5zaWQsIG5yYW5kb20sIG5jaXBoOwpAQCAtMTUxOSw3ICsxNDkzLDcgQEAKIAkJaWYobnNpZCAh PSAwIAkvKiBubyBzaWQncywgc2luY2Ugc2hvdWxkbid0IHJlc3RhcnQgdXNpbmcgc3NsMiBoZWFk ZXIgKi8KIAkJfHwgbnJhbmRvbSA8IDE2IHx8IG5uICUgMyB8fCBuIC0gbnJhbmRvbSA8IG5uKQog CQkJZ290byBFcnI7Ci0JCS8qIGlnbm9yZSBzc2wyIGNpcGhlcnMgYW5kIGxvb2sgZm9yIHsweDAw LCBzc2wzIGNpcGhlcn0gKi8KKwkJLyogaWdub3JlIHNzbDIgY2lwaGVycyBhbmQgbG9vayBmb3Ig ezB4MDAsIHRscyBjaXBoZXJ9ICovCiAJCW5jaXBoID0gMDsKIAkJZm9yKGkgPSAwOyBpIDwgbm47 IGkgKz0gMykKIAkJCWlmKHBbaV0gPT0gMCkKQEAgLTE3OTAsMTAgKzE3NjQsOCBAQAogCQkJZ290 byBTaG9ydDsKIAkJaWYoaXNFQ0RIRShjLT5jaXBoZXIpKQogCQkJbm4gPSAqcCsrLCBuLS07Ci0J CWVsc2UgaWYoaXNESEUoYy0+Y2lwaGVyKSB8fCBjLT52ZXJzaW9uICE9IFNTTDNWZXJzaW9uKQot CQkJbm4gPSBnZXQxNihwKSwgcCArPSAyLCBuIC09IDI7CiAJCWVsc2UKLQkJCW5uID0gbjsKKwkJ CW5uID0gZ2V0MTYocCksIHAgKz0gMiwgbiAtPSAyOwogCQlpZihuIDwgbm4pCiAJCQlnb3RvIFNo b3J0OwogCQltLT51LmNsaWVudEtleUV4Y2hhbmdlLmtleSA9IG1ha2VieXRlcyhwLCBubik7CkBA IC0xODAwLDExICsxNzcyLDEwIEBACiAJCW4gLT0gbm47CiAJCWJyZWFrOwogCWNhc2UgSEZpbmlz aGVkOgotCQltLT51LmZpbmlzaGVkLm4gPSBjLT5maW5pc2hlZC5uOwotCQlpZihuIDwgbS0+dS5m aW5pc2hlZC5uKQorCQlpZihuIDwgRmluaXNoZWRMZW4pCiAJCQlnb3RvIFNob3J0OwotCQltZW1t b3ZlKG0tPnUuZmluaXNoZWQudmVyaWZ5LCBwLCBtLT51LmZpbmlzaGVkLm4pOwotCQluIC09IG0t PnUuZmluaXNoZWQubjsKKwkJbWVtbW92ZShtLT51LmZpbmlzaGVkLCBwLCBGaW5pc2hlZExlbik7 CisJCW4gLT0gRmluaXNoZWRMZW47CiAJCWJyZWFrOwogCX0KIApAQCAtMjAwMCw4ICsxOTcxLDgg QEAKIAkJYnJlYWs7CiAJY2FzZSBIRmluaXNoZWQ6CiAJCWJzID0gc2VwcmludChicywgYmUsICJI RmluaXNoZWRcbiIpOwotCQlmb3IoaT0wOyBpPG0tPnUuZmluaXNoZWQubjsgaSsrKQotCQkJYnMg PSBzZXByaW50KGJzLCBiZSwgIiUuMngiLCBtLT51LmZpbmlzaGVkLnZlcmlmeVtpXSk7CisJCWZv cihpPTA7IGk8RmluaXNoZWRMZW47IGkrKykKKwkJCWJzID0gc2VwcmludChicywgYmUsICIlLjJ4 IiwgbS0+dS5maW5pc2hlZFtpXSk7CiAJCWJzID0gc2VwcmludChicywgYmUsICJcbiIpOwogCQli cmVhazsKIAl9CkBAIC0yMDMyLDI3ICsyMDAzLDE1IEBACiBzdGF0aWMgaW50CiBzZXRWZXJzaW9u KFRsc0Nvbm5lY3Rpb24gKmMsIGludCB2ZXJzaW9uKQogewotCWlmKHZlcnNpb24gPiBNYXhQcm90 b1ZlcnNpb24gfHwgdmVyc2lvbiA8IE1pblByb3RvVmVyc2lvbikKKwlpZih2ZXJzaW9uIDwgTWlu UHJvdG9WZXJzaW9uKQogCQlyZXR1cm4gLTE7CiAJaWYodmVyc2lvbiA+IGMtPnZlcnNpb24pCiAJ CXZlcnNpb24gPSBjLT52ZXJzaW9uOwotCWlmKHZlcnNpb24gPT0gU1NMM1ZlcnNpb24pIHsKKwll bHNlCiAJCWMtPnZlcnNpb24gPSB2ZXJzaW9uOwotCQljLT5maW5pc2hlZC5uID0gU1NMM0Zpbmlz aGVkTGVuOwotCX1lbHNlIHsKLQkJYy0+dmVyc2lvbiA9IHZlcnNpb247Ci0JCWMtPmZpbmlzaGVk Lm4gPSBUTFNGaW5pc2hlZExlbjsKLQl9CiAJcmV0dXJuIGZwcmludChjLT5jdGwsICJ2ZXJzaW9u IDB4JXgiLCB2ZXJzaW9uKTsKIH0KIAotLy8gY29uZmlybSB0aGF0IHJlY2VpdmVkIEZpbmlzaGVk IG1lc3NhZ2UgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgdmFsdWUKLXN0YXRpYyBpbnQKLWZpbmlzaGVk TWF0Y2goVGxzQ29ubmVjdGlvbiAqYywgRmluaXNoZWQgKmYpCi17Ci0JcmV0dXJuIHRzbWVtY21w KGYtPnZlcmlmeSwgYy0+ZmluaXNoZWQudmVyaWZ5LCBmLT5uKSA9PSAwOwotfQotCiAvLyBmcmVl IG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggVGxzQ29ubmVjdGlvbiBzdHJ1Y3QKIC8vCQkoYnV0IGRv bid0IGNsb3NlIHRoZSBUTFMgY2hhbm5lbCBpdHNlbGYpCiBzdGF0aWMgdm9pZApAQCAtMjM5MCw2 OCArMjM0OSw2IEBACiAJCWhtYWNfc2hhMl8yNTYsIFNIQTJfMjU2ZGxlbik7CiB9CiAKLXN0YXRp YyB2b2lkCi1zc2xQUkYodWNoYXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFyICprZXksIGludCBua2V5 LCBjaGFyICpsYWJlbCwgdWNoYXIgKnNlZWQsIGludCBuc2VlZCkKLXsKLQl1Y2hhciBzaGExZGln W1NIQTFkbGVuXSwgbWQ1ZGlnW01ENWRsZW5dLCB0bXBbMjZdOwotCURpZ2VzdFN0YXRlICpzOwot CWludCBpLCBuLCBsZW47Ci0KLQlVU0VEKGxhYmVsKTsKLQlsZW4gPSAxOwotCXdoaWxlKG5idWYg PiAwKXsKLQkJaWYobGVuID4gMjYpCi0JCQlyZXR1cm47Ci0JCWZvcihpID0gMDsgaSA8IGxlbjsg aSsrKQotCQkJdG1wW2ldID0gJ0EnIC0gMSArIGxlbjsKLQkJcyA9IHNoYTEodG1wLCBsZW4sIG5p bCwgbmlsKTsKLQkJcyA9IHNoYTEoa2V5LCBua2V5LCBuaWwsIHMpOwotCQlzaGExKHNlZWQsIG5z ZWVkLCBzaGExZGlnLCBzKTsKLQkJcyA9IG1kNShrZXksIG5rZXksIG5pbCwgbmlsKTsKLQkJbWQ1 KHNoYTFkaWcsIFNIQTFkbGVuLCBtZDVkaWcsIHMpOwotCQluID0gTUQ1ZGxlbjsKLQkJaWYobiA+ IG5idWYpCi0JCQluID0gbmJ1ZjsKLQkJbWVtbW92ZShidWYsIG1kNWRpZywgbik7Ci0JCWJ1ZiAr PSBuOwotCQluYnVmIC09IG47Ci0JCWxlbisrOwotCX0KLX0KLQotc3RhdGljIHZvaWQKLXNzbFNl dEZpbmlzaGVkKFRsc1NlYyAqc2VjLCBIYW5kc2hha2VIYXNoIGhzaCwgdWNoYXIgKmZpbmlzaGVk LCBpbnQgaXNjbGllbnQpCi17Ci0JRGlnZXN0U3RhdGUgKnM7Ci0JdWNoYXIgaDBbTUQ1ZGxlbl0s IGgxW1NIQTFkbGVuXSwgcGFkWzQ4XTsKLQljaGFyICpsYWJlbDsKLQotCWlmKGlzY2xpZW50KQot CQlsYWJlbCA9ICJDTE5UIjsKLQllbHNlCi0JCWxhYmVsID0gIlNSVlIiOwotCi0JbWQ1KCh1Y2hh ciopbGFiZWwsIDQsIG5pbCwgJmhzaC5tZDUpOwotCW1kNShzZWMtPnNlYywgTWFzdGVyU2VjcmV0 U2l6ZSwgbmlsLCAmaHNoLm1kNSk7Ci0JbWVtc2V0KHBhZCwgMHgzNiwgNDgpOwotCW1kNShwYWQs IDQ4LCBuaWwsICZoc2gubWQ1KTsKLQltZDUobmlsLCAwLCBoMCwgJmhzaC5tZDUpOwotCW1lbXNl dChwYWQsIDB4NUMsIDQ4KTsKLQlzID0gbWQ1KHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBu aWwsIG5pbCk7Ci0JcyA9IG1kNShwYWQsIDQ4LCBuaWwsIHMpOwotCW1kNShoMCwgTUQ1ZGxlbiwg ZmluaXNoZWQsIHMpOwotCi0Jc2hhMSgodWNoYXIqKWxhYmVsLCA0LCBuaWwsICZoc2guc2hhMSk7 Ci0Jc2hhMShzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbmlsLCAmaHNoLnNoYTEpOwotCW1l bXNldChwYWQsIDB4MzYsIDQwKTsKLQlzaGExKHBhZCwgNDAsIG5pbCwgJmhzaC5zaGExKTsKLQlz aGExKG5pbCwgMCwgaDEsICZoc2guc2hhMSk7Ci0JbWVtc2V0KHBhZCwgMHg1QywgNDApOwotCXMg PSBzaGExKHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBuaWwsIG5pbCk7Ci0JcyA9IHNoYTEo cGFkLCA0MCwgbmlsLCBzKTsKLQlzaGExKGgxLCBTSEExZGxlbiwgZmluaXNoZWQgKyBNRDVkbGVu LCBzKTsKLX0KLQogLy8gZmlsbCAiZmluaXNoZWQiIGFyZyB3aXRoIG1kNShhcmdzKV5zaGExKGFy Z3MpCiBzdGF0aWMgdm9pZAogdGxzMTBTZXRGaW5pc2hlZChUbHNTZWMgKnNlYywgSGFuZHNoYWtl SGFzaCBoc2gsIHVjaGFyICpmaW5pc2hlZCwgaW50IGlzY2xpZW50KQpAQCAtMjQ2MCw2ICsyMzU3 LDggQEAKIAljaGFyICpsYWJlbDsKIAogCS8vIGdldCBjdXJyZW50IGhhc2ggdmFsdWUsIGJ1dCBh bGxvdyBmdXJ0aGVyIG1lc3NhZ2VzIHRvIGJlIGhhc2hlZCBpbgorCWhzaC5tZDUubWFsbG9jZWQg PSAwOworCWhzaC5zaGExLm1hbGxvY2VkID0gMDsKIAltZDUobmlsLCAwLCBoLCAmaHNoLm1kNSk7 CiAJc2hhMShuaWwsIDAsIGgrTUQ1ZGxlbiwgJmhzaC5zaGExKTsKIApAQCAtMjQ2Nyw3ICsyMzY2 LDcgQEAKIAkJbGFiZWwgPSAiY2xpZW50IGZpbmlzaGVkIjsKIAllbHNlCiAJCWxhYmVsID0gInNl cnZlciBmaW5pc2hlZCI7Ci0JdGxzMTBQUkYoZmluaXNoZWQsIFRMU0ZpbmlzaGVkTGVuLCBzZWMt PnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbGFiZWwsIGgsIHNpemVvZihoKSk7CisJdGxzMTBQUkYo ZmluaXNoZWQsIEZpbmlzaGVkTGVuLCBzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbGFiZWws IGgsIHNpemVvZihoKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNDc3LDYgKzIzNzYsNyBAQAog CWNoYXIgKmxhYmVsOwogCiAJLy8gZ2V0IGN1cnJlbnQgaGFzaCB2YWx1ZSwgYnV0IGFsbG93IGZ1 cnRoZXIgbWVzc2FnZXMgdG8gYmUgaGFzaGVkIGluCisJaHNoLnNoYTJfMjU2Lm1hbGxvY2VkID0g MDsKIAlzaGEyXzI1NihuaWwsIDAsIHNlZWQsICZoc2guc2hhMl8yNTYpOwogCiAJaWYoaXNjbGll bnQpCkBAIC0yNDgzLDcgKzIzODMsNyBAQAogCQlsYWJlbCA9ICJjbGllbnQgZmluaXNoZWQiOwog CWVsc2UKIAkJbGFiZWwgPSAic2VydmVyIGZpbmlzaGVkIjsKLQl0bHMxMlBSRihmaW5pc2hlZCwg VExTRmluaXNoZWRMZW4sIHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBsYWJlbCwgc2VlZCwg U0hBMl8yNTZkbGVuKTsKKwl0bHMxMlBSRihmaW5pc2hlZCwgRmluaXNoZWRMZW4sIHNlYy0+c2Vj LCBNYXN0ZXJTZWNyZXRTaXplLCBsYWJlbCwgc2VlZCwgU0hBMl8yNTZkbGVuKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTI2MzAsMzQgKzI1MzAsMTQgQEAKIAlyZXR1cm4gZXBtOwogfQogCi1zdGF0 aWMgaW50Ci10bHNTZWNGaW5pc2hlZChUbHNTZWMgKnNlYywgSGFuZHNoYWtlSGFzaCBoc2gsIHVj aGFyICpmaW4sIGludCBuZmluLCBpbnQgaXNjbGllbnQpCi17Ci0JaWYoc2VjLT5uZmluICE9IG5m aW4pewotCQl3ZXJyc3RyKCJpbnZhbGlkIGZpbmlzaGVkIGV4Y2hhbmdlIik7Ci0JCXJldHVybiAt MTsKLQl9Ci0JaHNoLm1kNS5tYWxsb2NlZCA9IDA7Ci0JaHNoLnNoYTEubWFsbG9jZWQgPSAwOwot CWhzaC5zaGEyXzI1Ni5tYWxsb2NlZCA9IDA7Ci0JKCpzZWMtPnNldEZpbmlzaGVkKShzZWMsIGhz aCwgZmluLCBpc2NsaWVudCk7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiB0bHNTZWNW ZXJzKFRsc1NlYyAqc2VjLCBpbnQgdikKIHsKLQlpZih2ID09IFNTTDNWZXJzaW9uKXsKLQkJc2Vj LT5zZXRGaW5pc2hlZCA9IHNzbFNldEZpbmlzaGVkOwotCQlzZWMtPm5maW4gPSBTU0wzRmluaXNo ZWRMZW47Ci0JCXNlYy0+cHJmID0gc3NsUFJGOwotCX1lbHNlIGlmKHYgPCBUTFMxMlZlcnNpb24p IHsKKwlpZih2IDwgVExTMTJWZXJzaW9uKXsKIAkJc2VjLT5zZXRGaW5pc2hlZCA9IHRsczEwU2V0 RmluaXNoZWQ7Ci0JCXNlYy0+bmZpbiA9IFRMU0ZpbmlzaGVkTGVuOwogCQlzZWMtPnByZiA9IHRs czEwUFJGOwotCX1lbHNlIHsKKwl9ZWxzZXsKIAkJc2VjLT5zZXRGaW5pc2hlZCA9IHRsczEyU2V0 RmluaXNoZWQ7Ci0JCXNlYy0+bmZpbiA9IFRMU0ZpbmlzaGVkTGVuOwogCQlzZWMtPnByZiA9IHRs czEyUFJGOwogCX0KIH0K --000000000000d8d2fd05cf0ac22f--