Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8V0V-000auA-2B for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 03:15:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8V0U-009Yya-1k for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 03:15:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8V0U-009YyS-09 for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 03:15:38 +0000 Received: from mail-vk1-xa34.google.com ([2607:f8b0:4864:20::a34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8V0R-00000000JB2-0b4T for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 03:15:38 +0000 Received: by mail-vk1-xa34.google.com with SMTP id 71dfb90a1353d-5637886c92aso698084e0c.0 for ; Thu, 02 Apr 2026 20:15:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775186134; cv=none; d=google.com; s=arc-20240605; b=eUAAA/m9q2UfijcU/0bjOiEGp4Tc2KKvNhr4ZVYurNpmbGllxtbrl0TTrL9bZMFACu k4+Hkh9O46iCi1xTuxmZAfqxWHsA+yZDlnLIikwuHEUhbonhjrjkU8yI3Mam17Z5fy5U Yvmu0gVPmS4a3d4WqPV6PEkiAmb8BGcWQp3i7pDvG/GnJbf/vvRx02ojhpLNTPtccgge PsnROqfeX3pAXTlhSpNHRCx1WWwm/wCeLHOQt5ulX4QsCj/up+KLfygZ/hLanXM/eNT5 3dXVBMQFFyA+ZC8HthiI5O2cJGg0Tcdcm6mDxXLgpU0KFM2MVD8pZLpxma2qC25AGbvq 16/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=4exGcyPX7UCv3u8ay/Yk3qz8ZHwIkzurM/kUiWbI8oo=; fh=GZRkkMhay+kd/VbaieWHn28Dmub/QD72GQ9JPbxAV8E=; b=j5vffQM2WLs8aAwi4fDTc80k3euLVrg424t6fwgqtS/h0F8+yCNo0EEAF9jpraLdnY YlRvD5eu3GJjskPp51sQcS4ae4s+MVaZ+WwFcvJMW6WQXtpSKBAPI0OPVE7e3WkcSVii Wo6vrt8LKdI6KulioG0opTh0Mrdadt8l+ZRJJE583iQkFpqIBtg2wY6r4eupeDZsji6b hm5pCcjib383Ux25TBbeKVDmYzFqsKqNXEKwu+5AOzxSSc1MqATLl1lK0aLK9rpceBoj gQ65JD/NcjO+YVT5DBQeX39XYnCtWSXNr+kfvUR2E6wwwYBWOqnu2qF8WCvlc9UxXnAk ZjeA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775186134; x=1775790934; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4exGcyPX7UCv3u8ay/Yk3qz8ZHwIkzurM/kUiWbI8oo=; b=a6zXKBeb1UrwEV/5sS7+TktgPfeBxDgjLfVg6JBJJ8KEFk6E4JKlxol0miM7i+u/3t wMyzAvWD9LuvXSqWZ7ZE3dNjkVUiNS/4lwCXRiHVOWgrPvQ72fpYg1SQiA89uCptJU8H pYEXuj8lQ1g9JxEiODhq/WiqjCsBL4n3ufUIc8BMYO2tYmVXt6PGuUKAE6gAXEGSq7Vx bC8YzFg3lwFtDxX8pJ9DR8UrLVEr10aTDaE5dGQ5jXbjyHU++PPjfjR6i+/9A8fVsjMe D8oneapig4FHxN3DypQP5zlMJlSZZH/Wqw2AYJ2dFuRG6tkVxn9v9RB2mPfqVMIjFOyT DnJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775186134; x=1775790934; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=4exGcyPX7UCv3u8ay/Yk3qz8ZHwIkzurM/kUiWbI8oo=; b=Qe6/rQER8uIQncaY3iEUJBBWnyagTpOwaL/d9ZXHtNzLHa+BWeNARf0x2/h73o3hYw WiRvS14BvNoMrTxz7gSBRtZpzvi4XnFr4F1qVZY5RL1Nrxymcym2su5q1Dg+EaxP8ySd OqBPN0eo85LX7G1poDwLoRqSNswJiSEybB3f7/d1blC6/m7cVVY1xkFBdugXbTSAuPGF Ia2zPhuo8zr1roEI8+HYZlo618S0A6CrA8ujdgvMpJ7uXYlnMdGCddg5bXm4jtei0xEe /I6xN9/BXAZIV+fhvILHQx+Mwkaw6PSTjQ5NeaTE6YZ1+4Ugw7FKFGRvdI6frk+y95hM qLRg== X-Forwarded-Encrypted: i=1; AJvYcCUCKKZCXOXB/M+n14iNrhzzErYqnqtg08GL+oNkwwb+JaBwXzEHCtSLAAU7D6EAWPpT39Mn/Z29NjxEMKq+@lists.postgresql.org X-Gm-Message-State: AOJu0Yxhc9sA0ybTOvnt+R9cP0KqXPPM8M3ohJyTDZwFJWZOc9epYqfr dcaAZtczLaaRWcjvDmw2QCMuwmrNb+tgdYjVMnc2wKJOqzRzKijwLfpz20kvjLyoGE6yU+nfE+v 5v3NdZJ4jXoVgwa/sWGvKy1hn5quL2yA= X-Gm-Gg: AeBDiesdL7Fz9bBQ/0TNtDXdwOeALe4h7IPL3K8VyWqHUKIHeVC4HPpd34qkUuU6JoS FBV93bFMy/Sd+gAi8k22Wuw3q0bcDZMeCnIM7tYAmPoG3jKR0tVmOK8pCnB6cCPKHN7xvZuzvhp dAeDiwWsOr3DN3A+3etosBUOhtk2KS54m72GZlMCO/94HMbJz/o5j5U7UzN9FN/40F2M7wJEpPV FY4rRHZIyX+pfm/qaFYLj2DwrHlzACfVh3XE7p4HlvzuYta2XFEvVZteLUkVFztW+2TmhPjdabh /+43C/e14SLjc0OstQlAnV78l0dZbkJIgXLUM1ANSp72VbNvNPofekdZGhfn4bPgsccW8v35AAq sPVnqN/gn3pcSiTahTsqdfolui0kftpodC2DAN63IscTmBVBQIQKZlPnzSmGPtq06H06HNSE+V4 PKfyD3OwChUa2d/T1KK2DVqA== X-Received: by 2002:a05:6102:5490:b0:602:8b67:37b0 with SMTP id ada2fe7eead31-605a500b11emr506041137.23.1775186133825; Thu, 02 Apr 2026 20:15:33 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> <5221f892-e1d5-4943-a3dc-5c9c7bdf4924@eisentraut.org> <4e00626a-66ca-45af-9866-30d022523b37@postgresfriends.org> In-Reply-To: <4e00626a-66ca-45af-9866-30d022523b37@postgresfriends.org> From: jian he Date: Fri, 3 Apr 2026 11:14:57 +0800 X-Gm-Features: AQROBzCWz0KnItl_7qnNt4B2gzz9mQbZkmhfnspPu-e7oZUfzx0KIi6Ag-Npgss Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Vik Fearing Cc: Corey Huinker , Amul Sul , Peter Eisentraut , Kirill Reshke , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000eaf48c064e85ba39" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eaf48c064e85ba39 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 3, 2026 at 12:03=E2=80=AFAM Vik Fearing wrote: > > Did you see on Discord that I am submitting a bug fix for this paper? I o= riginally took the syntax from json but it special-cases NULL and can't han= dle , so I want to remove `NULL ON CONVERSION ERROR` a= nd switch the DEFAULT clause to . > > I am attaching it here in case you missed it. > -- > > Vik Fearing The attached v29 removed `NULL ON CONVERSION ERROR`. Other than that, everything is the same as v28. -- jian https://www.enterprisedb.com/ --000000000000eaf48c064e85ba39 Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v29-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnibyns41 RnJvbSA3YTYyZjNjOTZlZjlmYTdmZDNhMWY4YzMzMzRmOWVmNzUwODk0N2EwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMjI6Mjg6NTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy OSAxLzJdIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn X2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlLCBj YXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1lIGZy b20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAKb24gcHAub2lkID0gcGMuY2FzdGZ1bmMgYW5k IHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICd0ZXh0Jzo6cmVndHlw ZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFyZ2V0 IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9zcmMgICAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KIHRleHQgICAgICAgfCBy ZWdjbGFzcyAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X3Jl Z2NsYXNzIHwgcmVnY2xhc3MKIHRleHQgICAgICAgfCAiY2hhciIgICAgIHwgICAgICA5NDQgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X2NoYXIgICAgIHwgY2hhcgogdGV4dCAgICAg ICB8IG5hbWUgICAgICAgfCAgICAgIDQwNyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfbmFtZSAgICAgfCBuYW1lCiB0ZXh0ICAgICAgIHwgeG1sICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAooNCByb3dzKQoK QWxyZWFkeSBlcnJvciBzYWZlOiB0ZXh0X25hbWUsIHRleHRfY2hhciwgdGV4dHRveG1sLgoKQXV0 aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEFtdWwgU3Vs IDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1 aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1m djFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNv bQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0 MQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgfCA0NiArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAx MyArKysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgMTAgKysrKyst LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCB8ICA2ICsrKysrCiBzcmMvaW5jbHVk ZS91dGlscy92YXJsZW5hLmggICAgIHwgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCA1NmI4 N2Q4NzhlOC4uMGY2M2M4MjZlODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtNDQyLDYg KzQ0MiwxNiBAQCBPaWQKIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIHVpbnQzMiBmbGFncywKIAkJCQkJ CSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNhbGxiYWNrX2FyZykK K3sKKwlyZXR1cm4gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShyZWxhdGlvbiwgbG9ja21v ZGUsIGZsYWdzLAorCQkJCQkJCQkJCWNhbGxiYWNrLCBjYWxsYmFja19hcmcsCisJCQkJCQkJCQkJ TlVMTCk7Cit9CisKK09pZAorUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLCB1aW50MzIgZmxhZ3MsCisJCQkJCQkJ IFJhbmdlVmFyR2V0UmVsaWRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfYXJnLAor CQkJCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJdWludDY0CQlpbnZhbF9jb3VudDsKIAlPaWQJ CQlyZWxJZDsKQEAgLTQ1OCw3ICs0NjgsNyBAQCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAlpZiAocmVsYXRpb24t PmNhdGFsb2duYW1lKQogCXsKIAkJaWYgKHN0cmNtcChyZWxhdGlvbi0+Y2F0YWxvZ25hbWUsIGdl dF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9IDApCi0JCQllcmVwb3J0KEVSUk9SLAor CQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVm ZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiBcIiVzLiVzLiVzXCIiLAogCQkJCQkJCXJlbGF0 aW9uLT5jYXRhbG9nbmFtZSwgcmVsYXRpb24tPnNjaGVtYW5hbWUsCkBAIC01MTUsNyArNTI1LDcg QEAgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUsCiAJCQkJCSAqIHJldHVybiBJbnZhbGlkT2lkLgogCQkJCQkgKi8KIAkJ CQkJaWYgKG5hbWVzcGFjZUlkICE9IG15VGVtcE5hbWVzcGFjZSkKLQkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcmV0dXJuKGVzY29udGV4dCwgSW52YWxpZE9pZCwKIAkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04pLAogCQkJCQkJCQkgZXJybXNnKCJ0 ZW1wb3JhcnkgdGFibGVzIGNhbm5vdCBzcGVjaWZ5IGEgc2NoZW1hIG5hbWUiKSkpOwogCQkJCX0K QEAgLTU5NSwxNCArNjA1LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQl7CiAJCQlpbnQJCQllbGV2ZWwg PSAoZmxhZ3MgJiBSVlJfU0tJUF9MT0NLRUQpID8gREVCVUcxIDogRVJST1I7CiAKLQkJCWlmIChy ZWxhdGlvbi0+c2NoZW1hbmFtZSkKKwkJCWlmIChlc2NvbnRleHQgPT0gTlVMTCkKIAkJCQllcmVw b3J0KGVsZXZlbCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKLQkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSkpOworCQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKKwkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRh aW4gbG9jayBvbiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkp KTsKIAkJCWVsc2UKLQkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQllcmV0dXJuKGVzY29udGV4dCwg SW52YWxpZE9pZCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKKwkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5h bWUpKSk7CiAKQEAgLTYyOCwxNCArNjQ0LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCXsKIAkJaW50CQkJ ZWxldmVsID0gbWlzc2luZ19vayA/IERFQlVHMSA6IEVSUk9SOwogCi0JCWlmIChyZWxhdGlvbi0+ c2NoZW1hbmFtZSkKKwkJaWYgKGVzY29udGV4dCA9PSBOVUxMKQogCQkJZXJlcG9ydChlbGV2ZWws CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9u LT5zY2hlbWFuYW1lID8KIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMgbm90 IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUp KSk7CisJCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CisJ CQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcmVs YXRpb24tPnJlbG5hbWUpKSk7CiAJCWVsc2UKLQkJCWVyZXBvcnQoZWxldmVsLAorCQkJZXJldHVy bihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9uLT5zY2hlbWFuYW1lID8KKwkJCQkJIGVycm1zZygicmVs YXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsKIAl9CkBAIC0z NjI0LDYgKzM2NDYsMTIgQEAgZ2V0X25hbWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwg Ym9vbCBtaXNzaW5nX29rKQogICovCiBSYW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxp c3QoY29uc3QgTGlzdCAqbmFtZXMpCit7CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlz dFNhZmUobmFtZXMsIE5VTEwpOworfQorCitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFt ZUxpc3RTYWZlKGNvbnN0IExpc3QgKm5hbWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VW YXIgICAqcmVsID0gbWFrZVJhbmdlVmFyKE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0Miw3ICsz NjcwLDcgQEAgbWFrZVJhbmdlVmFyRnJvbU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJ cmVsLT5yZWxuYW1lID0gc3RyVmFsKGx0aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6Ci0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIg cmVsYXRpb24gbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVM aXN0VG9TdHJpbmcobmFtZXMpKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JlZ3Byb2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggNjRmMjkz ZjRlOTguLmFkN2E0ZDUyZDI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVn cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIg KzE5MDEsMTkgQEAgdGV4dF9yZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJl bG5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIg ICAqcnY7CisJTGlzdAkgICAqbmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1l TGlzdCh0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgp OworCisJcnYgPSBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8t PmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Np b25zIG9uIHRoaXMgcmVsYXRpb247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VW YXJHZXRSZWxpZChydiwgTm9Mb2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJl bGlkRXh0ZW5kZWRTYWZlKHJ2LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBm Y2luZm8tPmNvbnRleHQpOwogCVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKaW5kZXggZWNhZDZkNjIxODQuLmNjMjEzMTJlYjViIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKQEAgLTI3MTcsNiArMjcxNywxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05f QVJHUykKICAqLwogTGlzdCAqCiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFs KQoreworCXJldHVybiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7 Cit9CisKK0xpc3QgKgordGV4dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWws IE5vZGUgKmVzY29udGV4dCkKIHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3Vs dCA9IE5JTDsKQEAgLTI3MjgsMTIgKzI3MzQsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3Qo dGV4dCAqdGV4dHZhbCkKIAlyYXduYW1lID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJ aWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQll cmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9OQU1FKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4Iikp KTsKIAogCWlmIChuYW1lbGlzdCA9PSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4o ZXNjb250ZXh0LCBOSUwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJ CSBlcnJtc2coImludmFsaWQgbmFtZSBzeW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aAppbmRleCA5NDUzYTNlNDkzMi4uN2YzMTQxYmEyN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aApAQCAtMTAzLDYgKzEwMywxMSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRl ZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUs IHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJh Y2ssCiAJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFuZ2VWYXJH ZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJCQkJCQkJ TE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZhckdldFJl bGlkQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJnLAorCQkJ CQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3JlYXRpb25O YW1lc3BhY2UoY29uc3QgUmFuZ2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJ CQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRlcm4gT2lk CUxvb2t1cENyZWF0aW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0ZXJuIHZv aWQgQ2hlY2tTZXROYW1lc3BhY2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBleHRlcm4g T2lkCVF1YWxpZmllZE5hbWVHZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpuYW1lcywg Y2hhciAqKm9iam5hbWVfcCk7CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1l TGlzdChjb25zdCBMaXN0ICpuYW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZy b21OYW1lTGlzdFNhZmUoY29uc3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7CiBleHRl cm4gY2hhciAqTmFtZUxpc3RUb1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRlcm4gY2hh ciAqTmFtZUxpc3RUb1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Zhcmxl bmEuaAppbmRleCA0YjMyNTc0YTA3NS4uNWJjNzhhYTAyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3ZhcmxlbmEuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAg LTI3LDYgKzI3LDcgQEAgZXh0ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChj b25zdCBjaGFyICpzb3VyY2UsIGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQg ZGVsX2MsIGludCBzdWJfYywKIAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsK IGV4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4 dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9k ZSAqZXNjb250ZXh0KTsKIGV4dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhjaGFyICpy YXdzdHJpbmcsIGNoYXIgc2VwYXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlzdCk7CiBl eHRlcm4gYm9vbCBTcGxpdERpcmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywgY2hhciBz ZXBhcmF0b3IsCi0tIAoyLjM0LjEKCg== --000000000000eaf48c064e85ba39 Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v29-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnibynrt0 RnJvbSBhMzM4YjVmZDVlNDE2ZTBiYTQxZmQ3MDIzMTYzNTEzMmVlYWEyMTk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAxMToxMzoyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI5 IDIvMl0gQ0FTVChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04KIEVS Uk9SKQoKSW50cm9kdWNlIFNRTC1zdGFuZGFyZCBzYWZlIHR5cGUgY2FzdCBzeW50YXg6CiAgICBD QVNUKGV4cHIgQVMgbmV3dHlwZSBERUZBVUxUIGV4cHIgT04gQ09OVkVSU0lPTiBFUlJPUikKVGhp cyBhbGxvdyB1c2VycyB0byBzcGVjaWZ5IGEgZGVmYXVsdCBmYWxsYmFjayBleHByZXNzaW9uIGlm IGEgdHlwZSBjb252ZXJzaW9uCmZhaWxzLCByYXRoZXIgdGhhbiByYWlzaW5nIGFuIGVycm9yLgoK V2l0aCB0aGlzIHBhdGNoc2V0LCBhbG1vc3QgYWxsIG9mIHRoZSBjYXN0IGZ1bmN0aW9ucyBpbiBw Z19jYXN0LmNhc3RmdW5jIGFyZSBub3cKZXJyb3Itc2FmZS4gIENvZXJjZVZpYUlPIGFuZCBDb2Vy Y2VUb0RvbWFpbiB3ZXJlIGFscmVhZHkgZXJyb3Itc2FmZSBpbiB0aGUgSEVBRCwKc2VlIFswXSwg dGhpcyBwYXRjaCBleHRlbmRzIGVycm9yLXNhZmUgYmVoYXZpb3IgdG8gQXJyYXlDb2VyY2VFeHBy LgoKRXhhbXBsZToKICAgIC0tIFJldHVybnMgJzIwMTEtMDEtMDEnIGluc3RlYWQgb2YgdGhyb3dp bmcgYW4gaW52YWxpZCBpbnB1dCBzeW50YXggZXJyb3IuCiAgICBTRUxFQ1QgQ0FTVCgnMScgQVMg ZGF0ZSBERUZBVUxUICcyMDExLTAxLTAxJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKCiMgQnVtcHMg Y2F0dmVyc2lvbiByZXF1aXJlZAoKWzBdOiBodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9jZ2l0 L3Bvc3RncmVzcWwuZ2l0L2NvbW1pdC8/aWQ9YWFhZjk0NDllYzZiZTYyY2IwZDMwZWQzNTg4ZGMz ODRmNTYyNzRiCgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFu ZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogQ29yZXkgSHVp bmtlciA8Y29yZXkuaHVpbmtlckBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtl IDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEg PG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNUel9wNjU2aV80aFFAbWFp bC5nbWFpbC5jb20KQ29tbWl0ZmVzdDogaHR0cHM6Ly9jb21taXRmZXN0LnBvc3RncmVzcWwub3Jn L3BhdGNoLzU5NDEKLS0tCiBjb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0ICAgICAg ICAgICAgfCAgICA1ICsKIGNvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dCAgICAg ICAgICB8ICAgIDUgKwogY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwgICAgICAgICAgICAg ICAgIHwgICAgMiArCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQg ICAgfCAgIDI0ICstCiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbCAg ICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9zeW50YXguc2dtbCAgICAgICAgICAgICAgICAgICAg ICB8ICAgMzkgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAg IHwgICA1OCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICAg IHwgICAyOSArCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICAgICAg fCAgIDU2ICsKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8 ICAgNTMgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jICAgICAgICAgIHwg ICAxMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICAgICAgfCAg IDk4ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAg IDIxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAgICAgICAgICAgICAgICB8ICAg IDkgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jICAgICAgICAgICAgIHwgIDE0 MiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgIDM1 NSArKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAgIHwg ICAgMyArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAgfCAg ICAzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jICAgICAgICAgICAgICAgfCAg IDE4ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAg IDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgICAgICAgICAgICB8ICAg IDkgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgICAy NSArCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAgIDEz ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgICAgICAgICB8ICAgIDcg Kwogc3JjL2luY2x1ZGUvZm1nci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDIxICsK IHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgIDEgKwog c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAzMiArCiBz cmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggICAgICAgICAgICAgfCAgICAyICstCiBz cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmggICAgICAgICAgICAgfCAgIDE2ICstCiBz cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgICAyICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmggICAgICAgICAgICAgICB8ICAgIDIgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dCAgICAgICAgICAgIHwgMTE3MiArKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQgICAg IHwgICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0ICAgICAg fCAgIDE5ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dCAgICAgICAgICAgICB8 ICAgIDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQgICAgICAgICAgIHwg ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAg ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbCAgICAgICAgICAgICAgICAgfCAg NDQyICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbCAgICAgICAg ICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwgICAgICAgICAg IHwgICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC94bWwuc3FsICAgICAgICAgICAgICAgICAg fCAgICAyICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8 ICAgIDIgKwogNDMgZmlsZXMgY2hhbmdlZCwgMjYzNiBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qu b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwKCmRp ZmYgLS1naXQgYS9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0IGIvY29udHJpYi9j aXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dAppbmRleCA4YzBiZjU0ZjBmMy4uNjk2NDljMmM1ZTIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKKysrIGIvY29u dHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dApAQCAtMTAsNiArMTAsMTEgQEAgV0hFUkUg b3BjLm9pZCA+PSAxNjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAtLS0tLS0tLSst LS0tLS0tLS0KICgwIHJvd3MpCiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fu bm90IGNhc3QgdHlwZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdpdGggREVGQVVMVCBleHByZXNzaW9u IGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2Fi Yyc6OmJwY2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJLi4uCisgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNhZmUgdHlwZSBjYXN0cyBmb3IgdXNlci1kZWZpbmVk IHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KIC0tIFRlc3QgdGhlIG9wZXJhdG9ycyBhbmQg aW5kZXhpbmcgZnVuY3Rpb25zCiAtLSBUZXN0ID0gYW5kIDw+LgogU0VMRUNUICdhJzo6Y2l0ZXh0 ID0gJ2EnOjpjaXRleHQgQVMgdDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVk L2NpdGV4dF8xLm91dCBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dAppbmRl eCBjNWU1ZjE4MGYyYi4uODk2OTM5ZDM1Y2UgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY2l0ZXh0L2V4 cGVjdGVkL2NpdGV4dF8xLm91dAorKysgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRf MS5vdXQKQEAgLTEwLDYgKzEwLDExIEBAIFdIRVJFIG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBh bXZhbGlkYXRlKG9wYy5vaWQpOwogLS0tLS0tLS0rLS0tLS0tLS0tCiAoMCByb3dzKQogCitTRUxF Q1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgY2hhcmFjdGVyIHRv IGNpdGV4dCB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9O IEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSS4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBT YWZlIHR5cGUgY2FzdHMgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0 ZWQuCiAtLSBUZXN0IHRoZSBvcGVyYXRvcnMgYW5kIGluZGV4aW5nIGZ1bmN0aW9ucwogLS0gVGVz dCA9IGFuZCA8Pi4KIFNFTEVDVCAnYSc6OmNpdGV4dCA9ICdhJzo6Y2l0ZXh0IEFTIHQ7CmRpZmYg LS1naXQgYS9jb250cmliL2NpdGV4dC9zcWwvY2l0ZXh0LnNxbCBiL2NvbnRyaWIvY2l0ZXh0L3Nx bC9jaXRleHQuc3FsCmluZGV4IGFhMWNmOWFiZDVjLi5jODIwYjBiZDRkOSAxMDA2NDQKLS0tIGEv Y29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwKKysrIGIvY29udHJpYi9jaXRleHQvc3FsL2Np dGV4dC5zcWwKQEAgLTksNiArOSw4IEBAIFNFTEVDVCBhbW5hbWUsIG9wY25hbWUKIEZST00gcGdf b3BjbGFzcyBvcGMgTEVGVCBKT0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IG9wY21ldGhvZAogV0hF UkUgb3BjLm9pZCA+PSAxNjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAKK1NFTEVD VCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsgLS0gZXJyb3IKKwogLS0gVGVzdCB0aGUgb3BlcmF0b3JzIGFuZCBpbmRleGluZyBm dW5jdGlvbnMKIAogLS0gVGVzdCA9IGFuZCA8Pi4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3Rh dF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0CmluZGV4IGEwNjkxMTljNzkwLi44NGYxMDgxMGY3MiAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91 dAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0CkBA IC03Myw2ICs3MywyNSBAQCBTRUxFQ1QgMSBBUyAiaW50IiBPRkZTRVQgMiBGRVRDSCBGSVJTVCAz IFJPVyBPTkxZOwogLS0tLS0KICgwIHJvd3MpCiAKKy0tIGVycm9yIHNhZmUgdHlwZSBjYXN0CitT RUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBp bnQ0IAorLS0tLS0tCisgICAgMgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVy aWMgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworIG51bWVyaWMgCistLS0tLS0tLS0K KyAgICAgIDEyCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVtZXJpYygxMCkgREVG QVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAg IDEyCisoMSByb3cpCisKIC0tIERJU1RJTkNUIGFuZCBPUkRFUiBCWSBwYXR0ZXJucwogLS0gVHJ5 IHNvbWUgcXVlcnkgcGVybXV0YXRpb25zIHdoaWNoIG9uY2UgcHJvZHVjZWQgaWRlbnRpY2FsIHF1 ZXJ5IElEcwogU0VMRUNUIERJU1RJTkNUIDEgQVMgImludCI7CkBAIC0yMjIsNiArMjQxLDkgQEAg U0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBC WSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMiB8ICAgIDIgfCBTRUxFQ1QgJDEgQVMgImludCIg T1JERVIgQlkgMQogICAgICAxIHwgICAgMiB8IFNFTEVDVCAkMSBBUyBpIFVOSU9OIFNFTEVDVCAk MiBPUkRFUiBCWSBpCiAgICAgIDEgfCAgICAxIHwgU0VMRUNUICQxIHx8ICQyCisgICAgIDEgfCAg ICAxIHwgU0VMRUNUIENBU1QoJDEgQVMgaW50IERFRkFVTFQgJDIgT04gQ09OVkVSU0lPTiBFUlJP UikKKyAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBudW1lcmljIERFRkFVTFQgJDIg T04gQ09OVkVSU0lPTiBFUlJPUikKKyAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBu dW1lcmljKDEwKSBERUZBVUxUICQyIE9OIENPTlZFUlNJT04gRVJST1IpCiAgICAgIDIgfCAgICAy IHwgU0VMRUNUIERJU1RJTkNUICQxIEFTICJpbnQiCiAgICAgIDAgfCAgICAwIHwgU0VMRUNUIGNh bGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBD T0xMQVRFICJDIgogICAgICAxIHwgICAgMSB8IFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVz ZXQoKSBJUyBOT1QgTlVMTCBBUyB0CkBAIC0yMzAsNyArMjUyLDcgQEAgU0VMRUNUIGNhbGxzLCBy b3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRF ICJDIjsKICAgICAgICB8ICAgICAgfCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgIHwgICAg ICB8ICAgU0VMRUNUIGYgRlJPTSB0IE9SREVSIEJZIGYKICAgICAgMSB8ICAgIDEgfCBzZWxlY3Qg JDE6Ompzb25iID8gJDIKLSgxNyByb3dzKQorKDIwIHJvd3MpCiAKIFNFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OwogIHQgCmRpZmYgLS1naXQgYS9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCmluZGV4IGExMGQ2MThjMDM0Li40YmU5Nzk3N2JhNiAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKKysr IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKQEAgLTI1LDYgKzI1 LDExIEBAIFNFTEVDVCAxIEFTICJpbnQiIExJTUlUIDMgT0ZGU0VUIDM7CiBTRUxFQ1QgMSBBUyAi aW50IiBPRkZTRVQgMSBGRVRDSCBGSVJTVCAyIFJPVyBPTkxZOwogU0VMRUNUIDEgQVMgImludCIg T0ZGU0VUIDIgRkVUQ0ggRklSU1QgMyBST1cgT05MWTsKIAorLS0gZXJyb3Igc2FmZSB0eXBlIGNh c3QKK1NFTEVDVCBDQVNUKCdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJzEyJyBBUyBudW1lcmljIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVtZXJpYygxMCkgREVGQVVMVCAyIE9OIENPTlZF UlNJT04gRVJST1IpOworCiAtLSBESVNUSU5DVCBhbmQgT1JERVIgQlkgcGF0dGVybnMKIC0tIFRy eSBzb21lIHF1ZXJ5IHBlcm11dGF0aW9ucyB3aGljaCBvbmNlIHByb2R1Y2VkIGlkZW50aWNhbCBx dWVyeSBJRHMKIFNFTEVDVCBESVNUSU5DVCAxIEFTICJpbnQiOwpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4IDY3NDgy OTk2ODYxLi44NmNhOTM4NDk2MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbApAQCAtMjEyNSw2ICsyMTI1LDQ1IEBAIENB U1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJs ZT50eXBlPC9yZXBsYWNlYWJsZT4KICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZWNhc3Qi Lz4uCiAgICAgPC9wYXJhPgogICAgPC9ub3RlPgorCisgICA8c2VjdDMgaWQ9InNxbC1zeW50YXgt dHlwZS1jYXN0cy1zYWZlIj4KKyAgICA8dGl0bGU+U2FmZSBUeXBlIENhc3RzPC90aXRsZT4KKwor ICAgIDxwYXJhPgorICAgICBBIHR5cGUgY2FzdCBtYXkgb2NjYXNpb25hbGx5IGZhaWwgYXQgcnVu IHRpbWUuICBUbyBndWFyZCBhZ2FpbnN0IHN1Y2gKKyAgICAgZmFpbHVyZXMsIHlvdSBjYW4gcHJv dmlkZSBhbiA8bGl0ZXJhbD5PTiBDT05WRVJTSU9OIEVSUk9SPC9saXRlcmFsPgorICAgICBjbGF1 c2UgdG8gY29udHJvbCB3aGF0IGhhcHBlbnMgd2hlbiBhIGNhc3QgZmFpbHMuICBUaGUgYXZhaWxh YmxlIGZvcm1zCisgICAgIGFyZToKKzxzeW5vcHNpcz4KK0NBU1QgKCA8cmVwbGFjZWFibGU+ZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4g REVGQVVMVCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IE9OIENPTlZFUlNJ T04gRVJST1IgKQorQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g QVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFUlJPUiBPTiBDT05WRVJTSU9OIEVS Uk9SICkKKzwvc3lub3BzaXM+CisgICAgIFdpdGggPGxpdGVyYWw+REVGQVVMVCA8cmVwbGFjZWFi bGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IE9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVyYWw+ LAorICAgICB0aGUgZGVmYXVsdCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IGlzIGV2YWx1YXRlZCBhbmQKKyAgICAgcmV0dXJuZWQgaW5zdGVhZC4gIFRoZSA8bGl0ZXJhbD5F UlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SPC9saXRlcmFsPgorICAgICBmb3JtIHJhaXNlcyBhbiBl cnJvciBvbiBmYWlsdXJlLCB3aGljaCBpcyBhbHNvIHRoZSBkZWZhdWx0IGJlaGF2aW9yCisgICAg IHdoZW4gbm8gPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIGlz IHNwZWNpZmllZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgQXQgcHJlc2VudCwg dGhpcyBvbmx5IHN1cHBvcnRzIGJ1aWx0LWluIHR5cGUgY2FzdHMgbGlzdGVkIGluCisgICAgIDx4 cmVmIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2FzdCIvPi4gIFVzZXItZGVmaW5lZCB0eXBlIGNhc3Rz IGNyZWF0ZWQKKyAgICAgd2l0aCA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlY2FzdCI+Q1JFQVRF IENBU1Q8L2xpbms+IGFyZSBub3QKKyAgICAgc3VwcG9ydGVkLgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBTb21lIGV4YW1wbGVzOgorPHNjcmVlbj4KK1NFTEVDVCBDQVNUKCdub3Qt YS1kYXRlJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKzxsaW5l YW5ub3RhdGlvbj5SZXN1bHQ6IDwvbGluZWFubm90YXRpb24+PGNvbXB1dGVyb3V0cHV0Pk5VTEw8 L2NvbXB1dGVyb3V0cHV0PgorU0VMRUNUIENBU1QoJ25vdC1hLWRhdGUnIEFTIGRhdGUgREVGQVVM VCAnMTk3MC0wMS0wMScgT04gQ09OVkVSU0lPTiBFUlJPUik7Cis8bGluZWFubm90YXRpb24+UmVz dWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxjb21wdXRlcm91dHB1dD4xOTcwLTAxLTAxPC9jb21wdXRl cm91dHB1dD4KK1NFTEVDVCBDQVNUKFRFWFQgJ2Vycm9yJyBBUyBpbnRlZ2VyIERFRkFVTFQgMyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKzxsaW5lYW5ub3RhdGlvbj5SZXN1bHQ6IDwvbGluZWFubm90 YXRpb24+PGNvbXB1dGVyb3V0cHV0PjM8L2NvbXB1dGVyb3V0cHV0PgorPC9zY3JlZW4+CisgICAg PC9wYXJhPgorICAgPC9zZWN0Mz4KICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9InNxbC1zeW50 YXgtY29sbGF0ZS1leHBycyI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCA3NzIyOTE0MWIz OC4uNTk0ODJmYWI1NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtOTksNiArOTksOSBA QCBzdGF0aWMgdm9pZCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdn U3RhdGUgKmFnZ3N0YXRlLAogc3RhdGljIHZvaWQgRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAq anNleHByLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVz bnVsbCwKIAkJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKTsKK3N0YXRpYyB2b2lkIEV4ZWNJ bml0U2FmZVR5cGVDYXN0RXhwcihTYWZlVHlwZUNhc3RFeHByICpzdGNleHByLCBFeHByU3RhdGUg KnN0YXRlLAorCQkJCQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCQkJCQkJ IEV4cHJFdmFsU3RlcCAqc2NyYXRjaCk7CiBzdGF0aWMgdm9pZCBFeGVjSW5pdEpzb25Db2VyY2lv bihFeHByU3RhdGUgKnN0YXRlLCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCiAJCQkJCQkJCSBF cnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQsIGJvb2wgb21pdF9xdW90ZXMsCiAJCQkJCQkJCSBi b29sIGV4aXN0c19jb2VyY2UsCkBAIC0xNzM0LDYgKzE3MzcsNyBAQCBFeGVjSW5pdEV4cHJSZWMo RXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAogCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0 X2Nhc2V2YWwgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsKIAkJCQllbGVtc3RhdGUtPmlubmVybW9z dF9jYXNlbnVsbCA9IHBhbGxvY19vYmplY3QoYm9vbCk7CisJCQkJZWxlbXN0YXRlLT5lc2NvbnRl eHQgPSBzdGF0ZS0+ZXNjb250ZXh0OwogCiAJCQkJRXhlY0luaXRFeHByUmVjKGFjb2VyY2UtPmVs ZW1leHByLCBlbGVtc3RhdGUsCiAJCQkJCQkJCSZlbGVtc3RhdGUtPnJlc3ZhbHVlLCAmZWxlbXN0 YXRlLT5yZXNudWxsKTsKQEAgLTIyMDksNiArMjIxMywxNSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhw ciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0g Y2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQlFeGVjSW5pdFNhZmVUeXBl Q2FzdEV4cHIoc3RjZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwsICZzY3JhdGNoKTsKKworCQkJ CWJyZWFrOworCQkJfQorCiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJQ29hbGVz Y2VFeHByICpjb2FsZXNjZSA9IChDb2FsZXNjZUV4cHIgKikgbm9kZTsKQEAgLTI3NjksNyArMjc4 Miw4IEBAIEV4ZWNJbml0RnVuYyhFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsIEV4cHIgKm5vZGUsIExp c3QgKmFyZ3MsIE9pZCBmdW5jaWQsCiAKIAkvKiBJbml0aWFsaXplIGZ1bmN0aW9uIGNhbGwgcGFy YW1ldGVyIHN0cnVjdHVyZSB0b28gKi8KIAlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5m bywgZmxpbmZvLAotCQkJCQkJCSBuYXJncywgaW5wdXRjb2xsaWQsIE5VTEwsIE5VTEwpOworCQkJ CQkJCSBuYXJncywgaW5wdXRjb2xsaWQsCisJCQkJCQkJIChOb2RlICopIHN0YXRlLT5lc2NvbnRl eHQsIE5VTEwpOwogCiAJLyogS2VlcCBleHRyYSBjb3BpZXMgb2YgdGhpcyBpbmZvIHRvIHNhdmUg YW4gaW5kaXJlY3Rpb24gYXQgcnVudGltZSAqLwogCXNjcmF0Y2gtPmQuZnVuYy5mbl9hZGRyID0g ZmxpbmZvLT5mbl9hZGRyOwpAQCAtNDc3MCw2ICs0Nzg0LDQ4IEBAIEV4ZWNCdWlsZFBhcmFtU2V0 RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAJcmV0dXJuIHN0YXRlOwogfQogCisvKgorICogUHVzaCBz dGVwcyB0byBldmFsdWF0ZSBhIFNhZmVUeXBlQ2FzdEV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNp ZGlhcnkKKyAqIGV4cHJlc3Npb25zLgorICovCitzdGF0aWMgdm9pZAorRXhlY0luaXRTYWZlVHlw ZUNhc3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJ CQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251bGwsCisJCQkJCQkgRXhwckV2YWxTdGVwICpz Y3JhdGNoKQoreworCS8qCisJICogSWYgdGhlcmUncyBubyBjYXN0IGV4cHJlc3Npb24gKGNhc3Rl eHByID09IE5VTEwpLCBvbmx5IHRoZSBERUZBVUxUCisJICogZXhwcmVzc2lvbiBuZWVkcyB0byBi ZSBldmFsdWF0ZWQ7IHNldCBpdCB1cCBhbmQgcmV0dXJuIGVhcmx5LgorCSAqLworCWlmIChzdGNl eHByLT5jYXN0ZXhwciA9PSBOVUxMKQorCXsKKwkJRXhlY0luaXRFeHByUmVjKHN0Y2V4cHItPmRl ZmV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQlyZXR1cm47CisJfQorCWVsc2UKKwl7 CisJCVNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KFNhZmVUeXBl Q2FzdFN0YXRlKTsKKwkJRXJyb3JTYXZlQ29udGV4dCAqc2F2ZWRfZXNjb250ZXh0ID0gc3RhdGUt PmVzY29udGV4dDsKKworCQlzdGNzdGF0ZS0+c3RjZXhwciA9IHN0Y2V4cHI7CisJCXN0Y3N0YXRl LT5lc2NvbnRleHQudHlwZSA9IFRfRXJyb3JTYXZlQ29udGV4dDsKKwkJc3RhdGUtPmVzY29udGV4 dCA9ICZzdGNzdGF0ZS0+ZXNjb250ZXh0OworCisJCS8qIGV2YWx1YXRlIGFyZ3VtZW50IGV4cHJl c3Npb24gaW50byBzdGVwJ3MgcmVzdWx0IGFyZWEgKi8KKwkJRXhlY0luaXRFeHByUmVjKHN0Y2V4 cHItPmNhc3RleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisJCXNjcmF0Y2gtPm9wY29kZSA9 IEVFT1BfU0FGRVRZUEVfQ0FTVDsKKwkJc2NyYXRjaC0+ZC5zdGNleHByLnN0Y3N0YXRlID0gc3Rj c3RhdGU7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJCS8qIGV2YWx1 YXRlIERFRkFVTFQgZXhwcmVzc2lvbiB1c2luZyB0aGUgcHJpb3Igc3RhdGUtPmVzY29udGV4dCAq LworCQlzdGF0ZS0+ZXNjb250ZXh0ID0gc2F2ZWRfZXNjb250ZXh0OworCQlFeGVjSW5pdEV4cHJS ZWMoc3Rjc3RhdGUtPnN0Y2V4cHItPmRlZmV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKwor CQlzdGNzdGF0ZS0+anVtcF9lbmQgPSBzdGF0ZS0+c3RlcHNfbGVuOworCX0KK30KKwogLyoKICAq IFB1c2ggc3RlcHMgdG8gZXZhbHVhdGUgYSBKc29uRXhwciBhbmQgaXRzIHZhcmlvdXMgc3Vic2lk aWFyeSBleHByZXNzaW9ucy4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK aW5kZXggM2M0ODQzY2RlODYuLjY1M2U4Njg3YzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHBySW50ZXJwLmMKQEAgLTU3MCw2ICs1NzAsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VF T1BfWE1MRVhQUiwKIAkJJiZDQVNFX0VFT1BfSlNPTl9DT05TVFJVQ1RPUiwKIAkJJiZDQVNFX0VF T1BfSVNfSlNPTiwKKwkJJiZDQVNFX0VFT1BfU0FGRVRZUEVfQ0FTVCwKIAkJJiZDQVNFX0VFT1Bf SlNPTkVYUFJfUEFUSCwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT04sCiAJCSYmQ0FT RV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSCwKQEAgLTE5MjgsNiArMTkyOSwyOCBAQCBF eGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJv b2wgKmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX1NBRkVU WVBFX0NBU1QpCisJCXsKKwkJCVNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZSA9IG9wLT5kLnN0 Y2V4cHIuc3Rjc3RhdGU7CisKKwkJCWlmICghU09GVF9FUlJPUl9PQ0NVUlJFRCgmc3Rjc3RhdGUt PmVzY29udGV4dCkpCisJCQkJRUVPX0pVTVAoc3Rjc3RhdGUtPmp1bXBfZW5kKTsKKwkJCWVsc2UK KwkJCXsKKwkJCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkJCSpvcC0+cmVzbnVsbCA9 IHRydWU7CisKKwkJCQkvKgorCQkJCSAqIFJlc2V0IGZvciBuZXh0IHVzZSBzdWNoIGFzIGZvciBj YXRjaGluZyBlcnJvcnMgd2hlbgorCQkJCSAqIGNvZXJjaW5nIGEgZXhwcmVzc2lvbi4KKwkJCQkg Ki8KKwkJCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJCQkJ c3Rjc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCA9IGZhbHNlOworCisJCQkJRUVPX05F WFQoKTsKKwkJCX0KKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfSlNPTkVYUFJfUEFUSCkKIAkJewog CQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLwpAQCAtMzY0 Niw2ICszNjY5LDEyIEBAIEV4ZWNFdmFsQXJyYXlDb2VyY2UoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQogCQkJCQkJCSAgZWNvbnRleHQs CiAJCQkJCQkJICBvcC0+ZC5hcnJheWNvZXJjZS5yZXN1bHRlbGVtdHlwZSwKIAkJCQkJCQkgIG9w LT5kLmFycmF5Y29lcmNlLmFtc3RhdGUpOworCisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQob3At PmQuYXJyYXljb2VyY2UuZWxlbWV4cHJzdGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCSpvcC0+cmVz dmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJfQogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCAwZTE2MGI4NTAyYy4uYWY5M2RkMDg0 YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBi L3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0yMjU4LDYgKzIyNTgsNjIg QEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihi LCBvcGJsb2Nrc1tvcG5vICsgMV0pOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEVFT1BfU0FGRVRZ UEVfQ0FTVDoKKwkJCQl7CisJCQkJCVNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZSA9IG9wLT5k LnN0Y2V4cHIuc3Rjc3RhdGU7CisJCQkJCUxMVk1CYXNpY0Jsb2NrUmVmIGJfbm9lcnJvcjsKKwkJ CQkJTExWTUJhc2ljQmxvY2tSZWYgYl9lcnJvcjsKKwkJCQkJTExWTVZhbHVlUmVmIHZfZXJyb3Jf b2NjdXJyZWRfcDsKKwkJCQkJTExWTVZhbHVlUmVmIHZfZGV0YWlsc193YW50ZWRfcDsKKwkJCQkJ TExWTVZhbHVlUmVmIHZfZXJyb3Jfb2NjdXJyZWQ7CisKKwkJCQkJYl9ub2Vycm9yID0gbF9iYl9i ZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJCSAgIm9wLiVkLm5vZXJyb3Ii LCBvcG5vKTsKKwkJCQkJYl9lcnJvciA9IGxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFd LAorCQkJCQkJCQkJCQkib3AuJWQuZXJyb3IiLCBvcG5vKTsKKworCQkJCQkvKiBHZXQgcG9pbnRl ciB0byBlcnJvcl9vY2N1cnJlZCBmaWVsZCAqLworCQkJCQl2X2Vycm9yX29jY3VycmVkX3AgPSBs X3B0cl9jb25zdCgmc3Rjc3RhdGUtPmVzY29udGV4dC5lcnJvcl9vY2N1cnJlZCwKKwkJCQkJCQkJ CQkJCQkgbF9wdHIoVHlwZVN0b3JhZ2VCb29sKSk7CisKKwkJCQkJLyogTG9hZCBlcnJvcl9vY2N1 cnJlZCBhdCBydW50aW1lICovCisJCQkJCXZfZXJyb3Jfb2NjdXJyZWQgPSBsX2xvYWQoYiwgVHlw ZVN0b3JhZ2VCb29sLCB2X2Vycm9yX29jY3VycmVkX3AsICIiKTsKKworCQkJCQkvKiBCcmFuY2gg YmFzZWQgb24gZXJyb3Jfb2NjdXJyZWQ6IG5vIGVycm9yIC0+IGp1bXBfZW5kICovCisJCQkJCUxM Vk1CdWlsZENvbmRCcihiLAorCQkJCQkJCQkJTExWTUJ1aWxkSUNtcChiLCBMTFZNSW50RVEsIHZf ZXJyb3Jfb2NjdXJyZWQsCisJCQkJCQkJCQkJCQkgIGxfc2Jvb2xfY29uc3QoMCksICIiKSwKKwkJ CQkJCQkJCWJfbm9lcnJvciwKKwkJCQkJCQkJCWJfZXJyb3IpOworCisJCQkJCS8qIE5vIGVycm9y OiBqdW1wIHRvIGVuZCAqLworCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9ub2Vy cm9yKTsKKwkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbc3Rjc3RhdGUtPmp1bXBfZW5kXSk7 CisKKwkJCQkJLyogRXJyb3Igb2NjdXJyZWQ6IHNldCBudWxsLCByZXNldCBmbGFncywgZXZhbHVh dGUgZGVmYXVsdCAqLworCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9lcnJvcik7 CisKKwkJCQkJLyogc2V0IHJlc251bGwgdG8gdHJ1ZSAqLworCQkJCQlMTFZNQnVpbGRTdG9yZShi LCBsX3Nib29sX2NvbnN0KDEpLCB2X3Jlc251bGxwKTsKKworCQkJCQkvKiByZXNldCByZXN2YWx1 ZSAqLworCQkJCQlMTFZNQnVpbGRTdG9yZShiLCBsX2RhdHVtX2NvbnN0KDApLCB2X3Jlc3ZhbHVl cCk7CisKKwkJCQkJLyoKKwkJCQkJICogUmVzZXQgZm9yIG5leHQgdXNlIHN1Y2ggYXMgZm9yIGNh dGNoaW5nIGVycm9ycyB3aGVuCisJCQkJCSAqIGNvZXJjaW5nIGEgZXhwcmVzc2lvbi4KKwkJCQkJ ICovCisJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfc2Jvb2xfY29uc3QoMCksIHZfZXJyb3Jfb2Nj dXJyZWRfcCk7CisKKwkJCQkJdl9kZXRhaWxzX3dhbnRlZF9wID0gbF9wdHJfY29uc3QoJnN0Y3N0 YXRlLT5lc2NvbnRleHQuZGV0YWlsc193YW50ZWQsCisJCQkJCQkJCQkJCQkJIGxfcHRyKFR5cGVT dG9yYWdlQm9vbCkpOworCQkJCQlMTFZNQnVpbGRTdG9yZShiLCBsX3Nib29sX2NvbnN0KDApLCB2 X2RldGFpbHNfd2FudGVkX3ApOworCisJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8g KyAxXSk7CisKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQljYXNlIEVFT1BfSlNPTkVYUFJfUEFU SDoKIAkJCQl7CiAJCQkJCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gb3AtPmQuanNvbmV4cHIu anNlc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGMwYjg4MGVjMjMzLi4wM2YwOWEzMmVl OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTIwNiw2ICsyMDYsOSBAQCBleHByVHlwZShjb25z dCBOb2RlICpleHByKQogCQljYXNlIFRfUm93Q29tcGFyZUV4cHI6CiAJCQl0eXBlID0gQk9PTE9J RDsKIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXR5cGUgPSAoKGNv bnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdHR5cGU7CisJCQlicmVhazsKIAkJ Y2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXR5cGUgPSAoKGNvbnN0IENvYWxlc2NlRXhwciAqKSBl eHByKS0+Y29hbGVzY2V0eXBlOwogCQkJYnJlYWs7CkBAIC00NTMsNiArNDU2LDggQEAgZXhwclR5 cG1vZChjb25zdCBOb2RlICpleHByKQogCQkJCXJldHVybiB0eXBtb2Q7CiAJCQl9CiAJCQlicmVh azsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQlyZXR1cm4gKChjb25zdCBTYWZlVHlw ZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHR0eXBtb2Q7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6 CiAJCQl7CiAJCQkJLyoKQEAgLTk3MCw2ICs5NzUsOSBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5v ZGUgKmV4cHIpCiAJCQkvKiBSb3dDb21wYXJlRXhwcidzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAq LwogCQkJY29sbCA9IEludmFsaWRPaWQ7CS8qIC4uLiBzbyBpdCBoYXMgbm8gY29sbGF0aW9uICov CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQljb2xsID0gKChjb25z dCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQ7CisJCQlicmVhazsKIAkJ Y2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCWNvbGwgPSAoKGNvbnN0IENvYWxlc2NlRXhwciAqKSBl eHByKS0+Y29hbGVzY2Vjb2xsaWQ7CiAJCQlicmVhazsKQEAgLTEyNDAsNiArMTI0OCw5IEBAIGV4 cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwgT2lkIGNvbGxhdGlvbikKIAkJCS8qIFJvd0NvbXBh cmVFeHByJ3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQlBc3NlcnQoIU9pZElzVmFsaWQo Y29sbGF0aW9uKSk7IC8qIC4uLiBzbyBuZXZlciBzZXQgYSBjb2xsYXRpb24gKi8KIAkJCWJyZWFr OworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCSgoU2FmZVR5cGVDYXN0RXhwciAqKSBl eHByKS0+cmVzdWx0Y29sbGlkID0gY29sbGF0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2Fs ZXNjZUV4cHI6CiAJCQkoKENvYWxlc2NlRXhwciAqKSBleHByKS0+Y29hbGVzY2Vjb2xsaWQgPSBj b2xsYXRpb247CiAJCQlicmVhazsKQEAgLTE1NTgsNiArMTU2OSw5IEBAIGV4cHJMb2NhdGlvbihj b25zdCBOb2RlICpleHByKQogCQkJLyoganVzdCB1c2UgbGVmdG1vc3QgYXJndW1lbnQncyBsb2Nh dGlvbiAqLwogCQkJbG9jID0gZXhwckxvY2F0aW9uKChOb2RlICopICgoY29uc3QgUm93Q29tcGFy ZUV4cHIgKikgZXhwciktPmxhcmdzKTsKIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0 RXhwcjoKKwkJCWxvYyA9ICgoY29uc3QgU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+bG9jYXRp b247CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCS8qIENPQUxFU0NFIGtl eXdvcmQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgZmlyc3QgdGhpbmcgKi8KIAkJCWxvYyA9ICgoY29u c3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5sb2NhdGlvbjsKQEAgLTIzMzMsNiArMjM0NywxOCBA QCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRy dWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJ CQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIs IG5vZGUpOworCisJCQkJaWYgKFdBTEsoc3RjZXhwci0+c291cmNlKSkKKwkJCQkJcmV0dXJuIHRy dWU7CisJCQkJaWYgKFdBTEsoc3RjZXhwci0+Y2FzdGV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCQlpZiAoV0FMSyhzdGNleHByLT5kZWZleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9 CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXJldHVybiBXQUxLKCgoQ29h bGVzY2VFeHByICopIG5vZGUpLT5hcmdzKTsKIAkJY2FzZSBUX01pbk1heEV4cHI6CkBAIC0zMzg0 LDYgKzM0MTAsMTkgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAog CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9T YWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBj YXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgc3RjZXhwciwgU2FmZVR5cGVDYXN0RXhw cik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnNvdXJjZSwgc3RjZXhwci0+c291cmNlLCBFeHByICop OworCQkJCU1VVEFURShuZXdub2RlLT5jYXN0ZXhwciwgc3RjZXhwci0+Y2FzdGV4cHIsIEV4cHIg Kik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmRlZmV4cHIsIHN0Y2V4cHItPmRlZmV4cHIsIEV4cHIg Kik7CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlj YXNlIFRfQ29hbGVzY2VFeHByOgogCQkJewogCQkJCUNvYWxlc2NlRXhwciAqY29hbGVzY2VleHBy ID0gKENvYWxlc2NlRXhwciAqKSBub2RlOwpAQCAtNDUzNyw2ICs0NTc2LDIwIEBAIHJhd19leHBy ZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJ CQkJaWYgKFdBTEsodGMtPnR5cGVOYW1lKSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdB TEsodGMtPmRlZmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQlj YXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNl eHByID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQlpZiAoV0FMSyhz dGNleHByLT5zb3VyY2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHBy LT5jYXN0ZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmRl ZmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFRfQ29s bGF0ZUNsYXVzZToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBh Z2cuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBhZ2cuYwppbmRleCAzNzM3Y2Mx NWJhMS4uMGYyNDk0MTQ3YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVw L3ByZXBhZ2cuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwYWdnLmMKQEAg LTM1OCw2ICszNTgsMTcgQEAgcHJlcHJvY2Vzc19hZ2dyZWZzX3dhbGtlcihOb2RlICpub2RlLCBQ bGFubmVySW5mbyAqcm9vdCkKIAkJICovCiAJCXJldHVybiBmYWxzZTsKIAl9CisJaWYgKElzQShu b2RlLCBTYWZlVHlwZUNhc3RFeHByKSkKKwl7CisJCVNhZmVUeXBlQ2FzdEV4cHIgKmNhc3RleHBy ID0gKFNhZmVUeXBlQ2FzdEV4cHIgKikgbm9kZTsKKworCQkvKgorCQkgKiAic291cmNlIiBtYXkg YWxzbyBjb250YWluIGFuIEFnZ3JlZiBub2RlLCBidXQgc2luY2UgaXQgaXMga2VwdCBvbmx5CisJ CSAqIGZvciBkZXBhcnNpbmcgcHVycG9zZXMsIHdlIG11c3Qgbm90IHJlY3Vyc2UgaW50byBpdCB3 aGVuIHByb2Nlc3NpbmcKKwkJICogYWdncmVnYXRlIG5vZGVzIGhlcmUuCisJCSAqLworCQlyZXR1 cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcigoTm9kZSAqKSBjYXN0ZXhwci0+Y2FzdGV4cHIsIHBy ZXByb2Nlc3NfYWdncmVmc193YWxrZXIsIHJvb3QpOworCX0KIAlBc3NlcnQoIUlzQShub2RlLCBT dWJMaW5rKSk7CiAJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgcHJlcHJvY2Vz c19hZ2dyZWZzX3dhbGtlciwgcm9vdCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2Vz LmMKaW5kZXggOWZiMjY2ZDA4OWQuLmQ2MGU5Yzg0Yjk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvY2xhdXNlcy5jCkBAIC02OSw2ICs2OSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJTGlzdAkgICAq YWN0aXZlX2ZuczsKIAlOb2RlCSAgICpjYXNlX3ZhbDsKIAlib29sCQllc3RpbWF0ZTsKKwlFcnJv clNhdmVDb250ZXh0ICplc2NvbnRleHQ7CiB9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfY29udGV4 dDsKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI0OTIsNiArMjQ5MywxMCBAQCByb3d0eXBlX2ZpZWxk X21hdGNoZXMoT2lkIHJvd3R5cGVpZCwgaW50IGZpZWxkbnVtLAogICogTk9URTogYW5vdGhlciBj cml0aWNhbCBlZmZlY3QgaXMgdGhhdCBhbnkgZnVuY3Rpb24gY2FsbHMgdGhhdCByZXF1aXJlCiAg KiBkZWZhdWx0IGFyZ3VtZW50cyB3aWxsIGJlIGV4cGFuZGVkLCBhbmQgbmFtZWQtYXJndW1lbnQg Y2FsbHMgd2lsbCBiZQogICogY29udmVydGVkIHRvIHBvc2l0aW9uYWwgbm90YXRpb24uICBUaGUg ZXhlY3V0b3Igd29uJ3QgaGFuZGxlIGVpdGhlci4KKyAqCisgKiBOT1RFOiBJZiBldmFsX2NvbnN0 X2V4cHJlc3Npb25zX2NvbnRleHQtPmVzY29udGV4dCBpcyBub3QgTlVMTCwgdGhlCisgKiBleHBy ZXNzaW9uIGlzIGV2YWx1YXRlZCBpbiBhbiBlcnJvci1zYWZlIG1hbm5lci4gSW4gdGhpcyBjYXNl LCB0aGUKKyAqIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2luZyBh biBlcnJvci4KICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogTm9kZSAqCkBAIC0yNTA3LDYg KzI1MTIsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zKFBsYW5uZXJJbmZvICpyb290LCBOb2Rl ICpub2RlKQogCWNvbnRleHQuYWN0aXZlX2ZucyA9IE5JTDsJLyogbm90aGluZyBiZWluZyByZWN1 cnNpdmVseSBzaW1wbGlmaWVkICovCiAJY29udGV4dC5jYXNlX3ZhbCA9IE5VTEw7CS8qIG5vIENB U0UgYmVpbmcgZXhhbWluZWQgKi8KIAljb250ZXh0LmVzdGltYXRlID0gZmFsc2U7CS8qIHNhZmUg dHJhbnNmb3JtYXRpb25zIG9ubHkgKi8KKwljb250ZXh0LmVzY29udGV4dCA9IE5VTEw7CS8qIGZv ciBlcnJvci1zYWZlIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwogCXJldHVybiBldmFsX2NvbnN0 X2V4cHJlc3Npb25zX211dGF0b3Iobm9kZSwgJmNvbnRleHQpOwogfQogCkBAIC0yNjQ2LDYgKzI2 NTIsNyBAQCBlc3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlKFBsYW5uZXJJbmZvICpyb290LCBOb2Rl ICpub2RlKQogCWNvbnRleHQuYWN0aXZlX2ZucyA9IE5JTDsJLyogbm90aGluZyBiZWluZyByZWN1 cnNpdmVseSBzaW1wbGlmaWVkICovCiAJY29udGV4dC5jYXNlX3ZhbCA9IE5VTEw7CS8qIG5vIENB U0UgYmVpbmcgZXhhbWluZWQgKi8KIAljb250ZXh0LmVzdGltYXRlID0gdHJ1ZTsJLyogdW5zYWZl IHRyYW5zZm9ybWF0aW9ucyBPSyAqLworCWNvbnRleHQuZXNjb250ZXh0ID0gTlVMTDsJLyogZm9y IGVycm9yLXNhZmUgZXhwcmVzc2lvbiBldmFsdWF0aW9uICovCiAJcmV0dXJuIGV2YWxfY29uc3Rf ZXhwcmVzc2lvbnNfbXV0YXRvcihub2RlLCAmY29udGV4dCk7CiB9CiAKQEAgLTI2NzEsMTEgKzI2 NzgsMTIgQEAgZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShQbGFubmVySW5mbyAqcm9vdCwgTm9k ZSAqbm9kZSkKIAkoIWV4cHJlc3Npb25fdHJlZV93YWxrZXIoKE5vZGUgKikgKG5vZGUpLCBjb250 YWluX25vbl9jb25zdF93YWxrZXIsIE5VTEwpKQogCiAvKiBHZW5lcmljIG1hY3JvIGZvciBhcHBs eWluZyBldmFsdWF0ZV9leHByICovCi0jZGVmaW5lIGVjZV9ldmFsdWF0ZV9leHByKG5vZGUpIFwK KyNkZWZpbmUgZWNlX2V2YWx1YXRlX2V4cHIobm9kZSwgZXNjb250ZXh0KSBcCiAJKChOb2RlICop IGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgKG5vZGUpLCBcCiAJCQkJCQkJZXhwclR5cGUoKE5vZGUg KikgKG5vZGUpKSwgXAogCQkJCQkJCWV4cHJUeXBtb2QoKE5vZGUgKikgKG5vZGUpKSwgXAotCQkJ CQkJCWV4cHJDb2xsYXRpb24oKE5vZGUgKikgKG5vZGUpKSkpCisJCQkJCQkJZXhwckNvbGxhdGlv bigoTm9kZSAqKSAobm9kZSkpLCBcCisJCQkJCQkJKE5vZGUgKikgZXNjb250ZXh0KSkKIAogLyoK ICAqIFJlY3Vyc2l2ZSBndXRzIG9mIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMvZXN0aW1hdGVfZXhw cmVzc2lvbl92YWx1ZQpAQCAtMzEzNiw3ICszMTQ0LDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9u c19tdXRhdG9yKE5vZGUgKm5vZGUsCiAKIAkJCQlpZiAoIWhhc19ub25jb25zdF9pbnB1dCAmJgog CQkJCQllY2VfZnVuY3Rpb25faXNfc2FmZShleHByLT5vcGZ1bmNpZCwgY29udGV4dCkpCi0JCQkJ CXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihleHByKTsKKwkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0 ZV9leHByKGV4cHIsIGNvbnRleHQtPmVzY29udGV4dCk7CiAKIAkJCQlyZXR1cm4gKE5vZGUgKikg ZXhwcjsKIAkJCX0KQEAgLTMxNTYsNyArMzE2NCw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNf bXV0YXRvcihOb2RlICpub2RlLAogCQkJCSAqLwogCQkJCWlmIChlY2VfYWxsX2FyZ3VtZW50c19j b25zdChzYW9wKSAmJgogCQkJCQllY2VfZnVuY3Rpb25faXNfc2FmZShzYW9wLT5vcGZ1bmNpZCwg Y29udGV4dCkpCi0JCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihzYW9wKTsKKwkJCQkJcmV0 dXJuIGVjZV9ldmFsdWF0ZV9leHByKHNhb3AsIGNvbnRleHQtPmVzY29udGV4dCk7CiAJCQkJcmV0 dXJuIChOb2RlICopIHNhb3A7CiAJCQl9CiAJCWNhc2UgVF9Cb29sRXhwcjoKQEAgLTMyNjcsNiAr MzI3NSw0MyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJCSAgY29weU9iamVjdChqdmUtPmZvcm1hdCkpOwogCQkJfQogCisJCWNhc2UgVF9T YWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0YyA9IGNhc3RO b2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKm5ld2V4 cHIgPSBtYWtlTm9kZShTYWZlVHlwZUNhc3RFeHByKTsKKworCQkJCU5vZGUJICAgKmNhc3RleHBy ID0gKE5vZGUgKikgc3RjLT5jYXN0ZXhwcjsKKwkJCQlOb2RlCSAgICpkZWZleHByID0gKE5vZGUg Kikgc3RjLT5kZWZleHByOworCisJCQkJY29udGV4dC0+ZXNjb250ZXh0ID0gbWFrZU5vZGUoRXJy b3JTYXZlQ29udGV4dCk7CisJCQkJY29udGV4dC0+ZXNjb250ZXh0LT50eXBlID0gVF9FcnJvclNh dmVDb250ZXh0OworCQkJCWNvbnRleHQtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxz ZTsKKworCQkJCWNhc3RleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKGNhc3Rl eHByLAorCQkJCQkJCQkJCQkJCQkgIGNvbnRleHQpOworCisJCQkJcGZyZWUoY29udGV4dC0+ZXNj b250ZXh0KTsKKwkJCQljb250ZXh0LT5lc2NvbnRleHQgPSBOVUxMOworCisJCQkJZGVmZXhwciA9 IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihkZWZleHByLAorCQkJCQkJCQkJCQkJCQkg Y29udGV4dCk7CisKKwkJCQkvKgorCQkJCSAqIE5vIG5lZWQgdG8gZm9sZCAic291cmNlIiB0byBh IGNvbnN0YW50LiBUaGUgZXhlY3V0b3IgZG9lcworCQkJCSAqIG5vdCB1c2UgaXQsIHNlZSBFeGVj SW5pdFNhZmVUeXBlQ2FzdEV4cHIuIEFkZGl0aW9uYWxseSwKKwkJCQkgKiBjYXN0ZXhwciBleHBy ZXNzaW9uIHRyZWUgbWF5IGFscmVhZHkgY29udGFpbiB0aGUgInNvdXJjZSIKKwkJCQkgKiBub2Rl LgorCQkJCSAqLworCQkJCW5ld2V4cHItPnNvdXJjZSA9IHN0Yy0+c291cmNlOworCQkJCW5ld2V4 cHItPmNhc3RleHByID0gKEV4cHIgKikgY2FzdGV4cHI7CisJCQkJbmV3ZXhwci0+ZGVmZXhwciA9 IChFeHByICopIGRlZmV4cHI7CisJCQkJbmV3ZXhwci0+cmVzdWx0dHlwZSA9IHN0Yy0+cmVzdWx0 dHlwZTsKKwkJCQluZXdleHByLT5yZXN1bHR0eXBtb2QgPSBzdGMtPnJlc3VsdHR5cG1vZDsKKwkJ CQluZXdleHByLT5yZXN1bHRjb2xsaWQgPSBzdGMtPnJlc3VsdGNvbGxpZDsKKworCQkJCXJldHVy biAoTm9kZSAqKSBuZXdleHByOworCQkJfQorCiAJCWNhc2UgVF9TdWJQbGFuOgogCQljYXNlIFRf QWx0ZXJuYXRpdmVTdWJQbGFuOgogCkBAIC0zMzg0LDYgKzM0MjksNyBAQCBldmFsX2NvbnN0X2V4 cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCXsKIAkJCQlBcnJheUNvZXJjZUV4cHIg KmFjID0gbWFrZU5vZGUoQXJyYXlDb2VyY2VFeHByKTsKIAkJCQlOb2RlCSAgICpzYXZlX2Nhc2Vf dmFsOworCQkJCUV4cHIJICAgKnNpbXBsZSA9IE5VTEw7CiAKIAkJCQkvKgogCQkJCSAqIENvcHkg dGhlIG5vZGUgYW5kIGNvbnN0LXNpbXBsaWZ5IGl0cyBhcmd1bWVudHMuICBXZSBjYW4ndApAQCAt MzM5MSw5ICszNDM3LDEwIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpu b2RlLAogCQkJCSAqIHdpdGggY2FzZV92YWwgb25seSB3aGlsZSBwcm9jZXNzaW5nIHRoZSBlbGVt ZXhwci4KIAkJCQkgKi8KIAkJCQltZW1jcHkoYWMsIG5vZGUsIHNpemVvZihBcnJheUNvZXJjZUV4 cHIpKTsKLQkJCQlhYy0+YXJnID0gKEV4cHIgKikKLQkJCQkJZXZhbF9jb25zdF9leHByZXNzaW9u c19tdXRhdG9yKChOb2RlICopIGFjLT5hcmcsCi0JCQkJCQkJCQkJCQkgICBjb250ZXh0KTsKKwkJ CQlzaW1wbGUgPSAoRXhwciAqKSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoKE5vZGUg KikgYWMtPmFyZywKKwkJCQkJCQkJCQkJCQkJCQkgY29udGV4dCk7CisJCQkJaWYgKHNpbXBsZSkK KwkJCQkJYWMtPmFyZyA9IHNpbXBsZTsKIAogCQkJCS8qCiAJCQkJICogU2V0IHVwIGZvciB0aGUg Q2FzZVRlc3RFeHByIG5vZGUgY29udGFpbmVkIGluIHRoZSBlbGVtZXhwci4KQEAgLTM0MDIsOSAr MzQ0OSwxMCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQlzYXZlX2Nhc2VfdmFsID0gY29udGV4dC0+Y2FzZV92YWw7CiAJCQkJY29udGV4dC0+Y2FzZV92 YWwgPSBOVUxMOwogCi0JCQkJYWMtPmVsZW1leHByID0gKEV4cHIgKikKLQkJCQkJZXZhbF9jb25z dF9leHByZXNzaW9uc19tdXRhdG9yKChOb2RlICopIGFjLT5lbGVtZXhwciwKLQkJCQkJCQkJCQkJ CSAgIGNvbnRleHQpOworCQkJCXNpbXBsZSA9IChFeHByICopIGV2YWxfY29uc3RfZXhwcmVzc2lv bnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+ZWxlbWV4cHIsCisJCQkJCQkJCQkJCQkJCQkJIGNvbnRl eHQpOworCQkJCWlmIChzaW1wbGUpCisJCQkJCWFjLT5lbGVtZXhwciA9IHNpbXBsZTsKIAogCQkJ CWNvbnRleHQtPmNhc2VfdmFsID0gc2F2ZV9jYXNlX3ZhbDsKIApAQCAtMzQxOSw3ICszNDY3LDcg QEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJaWYgKGFj LT5hcmcgJiYgSXNBKGFjLT5hcmcsIENvbnN0KSAmJgogCQkJCQlhYy0+ZWxlbWV4cHIgJiYgIUlz QShhYy0+ZWxlbWV4cHIsIENvZXJjZVRvRG9tYWluKSAmJgogCQkJCQkhY29udGFpbl9tdXRhYmxl X2Z1bmN0aW9ucygoTm9kZSAqKSBhYy0+ZWxlbWV4cHIpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1 YXRlX2V4cHIoYWMpOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoYWMsIGNvbnRleHQt PmVzY29udGV4dCk7CiAKIAkJCQlyZXR1cm4gKE5vZGUgKikgYWM7CiAJCQl9CkBAIC0zNjE1LDcg KzM2NjMsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQlub2RlID0gZWNlX2dlbmVyaWNfcHJvY2Vzc2luZyhub2RlKTsKIAkJCQkvKiBJZiBhbGwgYXJn dW1lbnRzIGFyZSBDb25zdHMsIHdlIGNhbiBmb2xkIHRvIGEgY29uc3RhbnQgKi8KIAkJCQlpZiAo ZWNlX2FsbF9hcmd1bWVudHNfY29uc3Qobm9kZSkpCi0JCQkJCXJldHVybiBlY2VfZXZhbHVhdGVf ZXhwcihub2RlKTsKKwkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKG5vZGUsIGNvbnRleHQt PmVzY29udGV4dCk7CiAJCQkJcmV0dXJuIG5vZGU7CiAJCQl9CiAJCWNhc2UgVF9Db2FsZXNjZUV4 cHI6CkBAIC0zNjk4LDcgKzM3NDYsOCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3Io Tm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIChOb2RlICopIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikg c3ZmLAogCQkJCQkJCQkJCQkJICBzdmYtPnR5cGUsCiAJCQkJCQkJCQkJCQkgIHN2Zi0+dHlwbW9k LAotCQkJCQkJCQkJCQkJICBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwK KwkJCQkJCQkJCQkJCSAgTlVMTCk7CiAJCQkJZWxzZQogCQkJCQlyZXR1cm4gY29weU9iamVjdCgo Tm9kZSAqKSBzdmYpOwogCQkJfQpAQCAtMzc5NSw3ICszODQ0LDcgQEAgZXZhbF9jb25zdF9leHBy ZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJCQkJCQkJCSAgbmV3ZnNlbGVjdC0+cmVz dWx0dHlwZSwKIAkJCQkJCQkJCQkJICBuZXdmc2VsZWN0LT5yZXN1bHR0eXBtb2QsCiAJCQkJCQkJ CQkJCSAgbmV3ZnNlbGVjdC0+cmVzdWx0Y29sbGlkKSkKLQkJCQkJCXJldHVybiBlY2VfZXZhbHVh dGVfZXhwcihuZXdmc2VsZWN0KTsKKwkJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihuZXdm c2VsZWN0LCBjb250ZXh0LT5lc2NvbnRleHQpOwogCQkJCX0KIAkJCQlyZXR1cm4gKE5vZGUgKikg bmV3ZnNlbGVjdDsKIAkJCX0KQEAgLTQxMjUsNyArNDE3NCw3IEBAIGV2YWxfY29uc3RfZXhwcmVz c2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCW5ld2NyZS0+YXJnID0gKEV4cHIgKikgYXJn OwogCiAJCQkJaWYgKGFyZyAhPSBOVUxMICYmIElzQShhcmcsIENvbnN0KSkKLQkJCQkJcmV0dXJu IGVjZV9ldmFsdWF0ZV9leHByKChOb2RlICopIG5ld2NyZSk7CisJCQkJCXJldHVybiBlY2VfZXZh bHVhdGVfZXhwcigoTm9kZSAqKSBuZXdjcmUsIGNvbnRleHQtPmVzY29udGV4dCk7CiAJCQkJcmV0 dXJuIChOb2RlICopIG5ld2NyZTsKIAkJCX0KIAkJZGVmYXVsdDoKQEAgLTQ1MjUsNiArNDU3NCw5 IEBAIHNpbXBsaWZ5X2Z1bmN0aW9uKE9pZCBmdW5jaWQsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIg cmVzdWx0X3R5cG1vZCwKIAkJCQkJCQkJYXJncywgZnVuY3ZhcmlhZGljLAogCQkJCQkJCQlmdW5j X3R1cGxlLCBjb250ZXh0KTsKIAorCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGNvbnRleHQtPmVz Y29udGV4dCkgJiYgbmV3ZXhwciAhPSBOVUxMKQorCQllbG9nKEVSUk9SLCAiZXZhbHVhdGVfZnVu Y3Rpb24gZmFpbGVkLCBidXQgbmV3ZXhwciBpcyBub3QgTlVMTCIpOworCiAJaWYgKCFuZXdleHBy ICYmIGFsbG93X25vbl9jb25zdCAmJiBPaWRJc1ZhbGlkKGZ1bmNfZm9ybS0+cHJvc3VwcG9ydCkp CiAJewogCQkvKgpAQCAtNTIyOSw3ICs1MjgxLDcgQEAgZXZhbHVhdGVfZnVuY3Rpb24oT2lkIGZ1 bmNpZCwgT2lkIHJlc3VsdF90eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCW5ld2V4cHItPmxv Y2F0aW9uID0gLTE7CiAKIAlyZXR1cm4gZXZhbHVhdGVfZXhwcigoRXhwciAqKSBuZXdleHByLCBy ZXN1bHRfdHlwZSwgcmVzdWx0X3R5cG1vZCwKLQkJCQkJCSByZXN1bHRfY29sbGlkKTsKKwkJCQkJ CSByZXN1bHRfY29sbGlkLCAoTm9kZSAqKSBjb250ZXh0LT5lc2NvbnRleHQpOwogfQogCiAvKgpA QCAtNTY4MywxMCArNTczNSwxMyBAQCBzcWxfaW5saW5lX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy ZykKICAqCiAgKiBXZSB1c2UgdGhlIGV4ZWN1dG9yJ3Mgcm91dGluZSBFeGVjRXZhbEV4cHIoKSB0 byBhdm9pZCBkdXBsaWNhdGlvbiBvZgogICogY29kZSBhbmQgZW5zdXJlIHdlIGdldCB0aGUgc2Ft ZSByZXN1bHQgYXMgdGhlIGV4ZWN1dG9yIHdvdWxkIGdldC4KKyAqCisgKiBXaGVuIGVzY29udGV4 dCBpcyBub24tTlVMTCwgc2FmZWx5IGV2YWx1YXRlcyB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbi4K KyAqIFJldHVybnMgTlVMTCBvbiBmYWlsdXJlIHJhdGhlciB0aGFuIHRocm93aW5nIGFuIGVycm9y LgogICovCiBFeHByICoKIGV2YWx1YXRlX2V4cHIoRXhwciAqZXhwciwgT2lkIHJlc3VsdF90eXBl LCBpbnQzMiByZXN1bHRfdHlwbW9kLAotCQkJICBPaWQgcmVzdWx0X2NvbGxhdGlvbikKKwkJCSAg T2lkIHJlc3VsdF9jb2xsYXRpb24sIE5vZGUgKmVzY29udGV4dCkKIHsKIAlFU3RhdGUJICAgKmVz dGF0ZTsKIAlFeHByU3RhdGUgICpleHByc3RhdGU7CkBAIC01NzExLDcgKzU3NjYsNyBAQCBldmFs dWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1v ZCwKIAkgKiBQcmVwYXJlIGV4cHIgZm9yIGV4ZWN1dGlvbi4gIChOb3RlOiB3ZSBjYW4ndCB1c2Ug RXhlY1ByZXBhcmVFeHByCiAJICogYmVjYXVzZSBpdCdkIHJlc3VsdCBpbiByZWN1cnNpdmVseSBp bnZva2luZyBldmFsX2NvbnN0X2V4cHJlc3Npb25zLikKIAkgKi8KLQlleHByc3RhdGUgPSBFeGVj SW5pdEV4cHIoZXhwciwgTlVMTCk7CisJZXhwcnN0YXRlID0gRXhlY0luaXRFeHByV2l0aENvbnRl eHQoZXhwciwgTlVMTCwgZXNjb250ZXh0KTsKIAogCS8qCiAJICogQW5kIGV2YWx1YXRlIGl0LgpA QCAtNTczMSw2ICs1Nzg2LDEzIEBAIGV2YWx1YXRlX2V4cHIoRXhwciAqZXhwciwgT2lkIHJlc3Vs dF90eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCS8qIEdldCBiYWNrIHRvIG91dGVyIG1lbW9y eSBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCisJaWYg KFNPRlRfRVJST1JfT0NDVVJSRUQoZXhwcnN0YXRlLT5lc2NvbnRleHQpKQorCXsKKwkJRnJlZUV4 ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKworCQlyZXR1cm4gTlVMTDsKKwl9CisKIAkvKgogCSAqIE11 c3QgY29weSByZXN1bHQgb3V0IG9mIHN1Yi1jb250ZXh0IHVzZWQgYnkgZXhwcmVzc2lvbiBldmFs LgogCSAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQppbmRleCBmNGEwOGJhYTk1YS4uMmE1Y2Q4MDg4ZWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQpAQCAtMTU4LDYgKzE1OCw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJhd1N0bXRFbmQoUmF3 U3RtdCAqcnMsIGludCBlbmRfbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VDb2x1bW5SZWYo Y2hhciAqY29sbmFtZSwgTGlzdCAqaW5kaXJlY3Rpb24sCiAJCQkJCQkgICBpbnQgbG9jYXRpb24s IGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBOb2RlICptYWtlVHlwZUNhc3QoTm9k ZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsIGludCBsb2NhdGlvbik7CitzdGF0aWMgTm9kZSAq bWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoTm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsCisJ CQkJCQkJCQkgTm9kZSAqcmF3X2RlZmF1bHQsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAq bWFrZVN0cmluZ0NvbnN0Q2FzdChjaGFyICpzdHIsIGludCBsb2NhdGlvbiwgVHlwZU5hbWUgKnR5 cGVuYW1lKTsKIHN0YXRpYyBOb2RlICptYWtlSW50Q29uc3QoaW50IHZhbCwgaW50IGxvY2F0aW9u KTsKIHN0YXRpYyBOb2RlICptYWtlRmxvYXRDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlvbik7 CkBAIC0xNjc4NCw2ICsxNjc4NiwxMCBAQCBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJ fQogCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgJyknCiAJCQkJeyAkJCA9IG1ha2VU eXBlQ2FzdCgkMywgJDUsIEAxKTsgfQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUg RVJST1JfUCBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAnKScKKwkJCQl7ICQkID0gbWFrZVR5cGVD YXN0KCQzLCAkNSwgQDEpOyB9CisJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFtZSBERUZB VUxUIGFfZXhwciBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAnKScKKwkJCQl7ICQkID0gbWFrZVR5 cGVDYXN0V2l0aERlZmF1bHQoJDMsICQ1LCAkNywgQDEpOyB9CiAJCQl8IEVYVFJBQ1QgJygnIGV4 dHJhY3RfbGlzdCAnKScKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKFN5 c3RlbUZ1bmNOYW1lKCJleHRyYWN0IiksCkBAIC0xOTk0NywxMCArMTk5NTMsMjUgQEAgbWFrZVR5 cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLCBpbnQgbG9jYXRpb24pCiAKIAlu LT5hcmcgPSBhcmc7CiAJbi0+dHlwZU5hbWUgPSB0eXBlbmFtZTsKKwluLT5kZWZleHByID0gTlVM TDsKIAluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOwogCXJldHVybiAoTm9kZSAqKSBuOwogfQogCitz dGF0aWMgTm9kZSAqCittYWtlVHlwZUNhc3RXaXRoRGVmYXVsdChOb2RlICphcmcsIFR5cGVOYW1l ICp0eXBlbmFtZSwgTm9kZSAqZGVmZXhwciwKKwkJCQkJCWludCBsb2NhdGlvbikKK3sKKwlUeXBl Q2FzdCAgICpuID0gbWFrZU5vZGUoVHlwZUNhc3QpOworCisJbi0+YXJnID0gYXJnOworCW4tPnR5 cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ZGVmZXhwciA9IGRlZmV4cHI7CisJbi0+bG9jYXRpb24g PSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOworfQorCiBzdGF0aWMgTm9kZSAqCiBt YWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uLCBUeXBlTmFtZSAqdHlw ZW5hbWUpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggYWNiOTMzMzkyZGUuLjdjMGQ0OTBi ZmYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC00OTEsNiArNDkxLDEyIEBAIGNoZWNrX2Fn Z2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQog CQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNoZWNr IGNvbnN0cmFpbnRzIik7CiAKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFV TFQ6CisJCQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJ ZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZB VUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RF RkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAKQEAgLTk5OSw2ICsx MDA1LDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5k b3dGdW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0g Xygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMi KTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBf KCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVz c2lvbnMiKTsKKwkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJ Y2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5j dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9jb2VyY2UuYwppbmRleCA5MTNjYTUzNjY2Zi4uOGJkNzlmZDViZmMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfY29lcmNlLmMKQEAgLTM3LDE0ICszNywxNiBAQCBzdGF0aWMgTm9kZSAqY29l cmNlX3R5cGVfdHlwbW9kKE5vZGUgKm5vZGUsCiAJCQkJCQkJCU9pZCB0YXJnZXRUeXBlSWQsIGlu dDMyIHRhcmdldFR5cE1vZCwKIAkJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2Vy Y2lvbkZvcm0gY2Zvcm1hdCwKIAkJCQkJCQkJaW50IGxvY2F0aW9uLAotCQkJCQkJCQlib29sIGhp ZGVJbnB1dENvZXJjaW9uKTsKKwkJCQkJCQkJYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkJ CQkJTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGhpZGVfY29lcmNpb25fbm9kZShOb2Rl ICpub2RlKTsKIHN0YXRpYyBOb2RlICpidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUgKm5v ZGUsCiAJCQkJCQkJCQkgICBDb2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlLAogCQkJCQkJCQkJICAg T2lkIGZ1bmNJZCwKIAkJCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5 cE1vZCwKIAkJCQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3Jt IGNmb3JtYXQsCi0JCQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOworCQkJCQkJCQkJICAgaW50IGxv Y2F0aW9uLAorCQkJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBOb2RlICpjb2Vy Y2VfcmVjb3JkX3RvX2NvbXBsZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJ CQkJCQkJICBPaWQgdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2Nv bnRleHQsCkBAIC04MSw2ICs4MywyOCBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJCQkJCSAgQ29lcmNpb25Db250 ZXh0IGNjb250ZXh0LAogCQkJCQkgIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkgIGludCBs b2NhdGlvbikKK3sKKwlyZXR1cm4gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0 ZSwgZXhwciwgZXhwcnR5cGUsCisJCQkJCQkJCQkJICB0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2Qs CisJCQkJCQkJCQkJICBjY29udGV4dCwKKwkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJ ICBsb2NhdGlvbiwKKwkJCQkJCQkJCQkgIE5VTEwpOworfQorCisvKgorICogZXNjb250ZXh0OiBJ ZiBub24tTlVMTCwgc2FmZWx5IGNvZXJjZXMgJ2V4cHInIHRvIHRoZSB0YXJnZXQgdHlwZQorICog d2l0aG91dCByYWlzaW5nIGFuIGVycm9yLiBSZXR1cm5zIE5VTEwgaWYgdGhlIGNvZXJjaW9uIGZh aWxzLgorICoKKyAqIFNlZSAnY29lcmNlX3RvX3RhcmdldF90eXBlJyBhYm92ZSBmb3IgZGV0YWls cyBvbiBvdGhlciBwYXJhbWV0ZXJzLgorICovCitOb2RlICoKK2NvZXJjZV90b190YXJnZXRfdHlw ZV9leHRlbmRlZChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwK KwkJCQkJCQkgICBPaWQgdGFyZ2V0dHlwZSwgaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCSAg IENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKKwkJCQkJCQkgICBDb2VyY2lvbkZvcm0gY2Zvcm1h dCwKKwkJCQkJCQkgICBpbnQgbG9jYXRpb24sCisJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KQog ewogCU5vZGUJICAgKnJlc3VsdDsKIAlOb2RlCSAgICpvcmlnZXhwcjsKQEAgLTEwMiw5ICsxMjYs MTUgQEAgY29lcmNlX3RvX3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhw ciwgT2lkIGV4cHJ0eXBlLAogCXdoaWxlIChleHByICYmIElzQShleHByLCBDb2xsYXRlRXhwcikp CiAJCWV4cHIgPSAoTm9kZSAqKSAoKENvbGxhdGVFeHByICopIGV4cHIpLT5hcmc7CiAKLQlyZXN1 bHQgPSBjb2VyY2VfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAotCQkJCQkJIHRhcmdldHR5 cGUsIHRhcmdldHR5cG1vZCwKLQkJCQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOwor CXJlc3VsdCA9IGNvZXJjZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCisJ CQkJCQkJCSAgdGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkgIGNjb250ZXh0LAor CQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCSAgZXNjb250 ZXh0KTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJldHVybiBO VUxMOwogCiAJLyoKIAkgKiBJZiB0aGUgdGFyZ2V0IGlzIGEgZml4ZWQtbGVuZ3RoIHR5cGUsIGl0 IG1heSBuZWVkIGEgbGVuZ3RoIGNvZXJjaW9uIGFzCkBAIC0xMTQsNyArMTQ0LDExIEBAIGNvZXJj ZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBy dHlwZSwKIAlyZXN1bHQgPSBjb2VyY2VfdHlwZV90eXBtb2QocmVzdWx0LAogCQkJCQkJCQl0YXJn ZXR0eXBlLCB0YXJnZXR0eXBtb2QsCiAJCQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlv biwKLQkJCQkJCQkJKHJlc3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpKTsKKwkJ CQkJCQkJKHJlc3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpLAorCQkJCQkJCQll c2NvbnRleHQpOworCisJaWYgKHJlc3VsdCA9PSBOVUxMKQkJCS8qIHNob3VsZG4ndCBoYXBwZW4g Ki8KKwkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBjb2VyY2UgdHlwZSBtb2RpZmllciBhcyBleHBl Y3RlZCIpOwogCiAJaWYgKGV4cHIgIT0gb3JpZ2V4cHIgJiYgdHlwZV9pc19jb2xsYXRhYmxlKHRh cmdldHR5cGUpKQogCXsKQEAgLTE1OCw2ICsxOTIsMTggQEAgTm9kZSAqCiBjb2VyY2VfdHlwZShQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQlPaWQgaW5wdXRUeXBlSWQsIE9pZCB0 YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCiAJCQlDb2VyY2lvbkNvbnRleHQgY2Nv bnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24pCit7CisJcmV0dXJuIGNv ZXJjZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgbm9kZSwKKwkJCQkJCQkJaW5wdXRUeXBlSWQsIHRh cmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJY2NvbnRleHQsIGNmb3JtYXQsIGxv Y2F0aW9uLAorCQkJCQkJCQlOVUxMKTsKK30KKworTm9kZSAqCitjb2VyY2VfdHlwZV9leHRlbmRl ZChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCSBPaWQgaW5wdXRUeXBlSWQs IE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCisJCQkJCSBDb2VyY2lvbkNv bnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJ CSBOb2RlICplc2NvbnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCUNvZXJjaW9uUGF0aFR5 cGUgcGF0aHR5cGU7CkBAIC0yNTYsNiArMzAyLDcgQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpub2RlLAogCQlpbnQzMgkJaW5wdXRUeXBlTW9kOwogCQlUeXBlCQliYXNl VHlwZTsKIAkJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOworCQljaGFyCSAgICpzdHJpbmcg PSBOVUxMOwogCiAJCS8qCiAJCSAqIElmIHRoZSB0YXJnZXQgdHlwZSBpcyBhIGRvbWFpbiwgd2Ug d2FudCB0byBjYWxsIGl0cyBiYXNlIHR5cGUncwpAQCAtMzA5LDEzICszNTYsMjEgQEAgY29lcmNl X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkgKiBhcyBDU1RSSU5HLgog CQkgKi8KIAkJaWYgKCFjb24tPmNvbnN0aXNudWxsKQotCQkJbmV3Y29uLT5jb25zdHZhbHVlID0g c3RyaW5nVHlwZURhdHVtKGJhc2VUeXBlLAotCQkJCQkJCQkJCQkJIERhdHVtR2V0Q1N0cmluZyhj b24tPmNvbnN0dmFsdWUpLAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7Ci0JCWVsc2UKLQkJ CW5ld2Nvbi0+Y29uc3R2YWx1ZSA9IHN0cmluZ1R5cGVEYXR1bShiYXNlVHlwZSwKLQkJCQkJCQkJ CQkJCSBOVUxMLAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7CisJCQlzdHJpbmcgPSBEYXR1 bUdldENTdHJpbmcoY29uLT5jb25zdHZhbHVlKTsKKworCQlpZiAoIXN0cmluZ1R5cGVEYXR1bVNh ZmUoYmFzZVR5cGUsCisJCQkJCQkJCSBzdHJpbmcsCisJCQkJCQkJCSBpbnB1dFR5cGVNb2QsCisJ CQkJCQkJCSBlc2NvbnRleHQsCisJCQkJCQkJCSAmbmV3Y29uLT5jb25zdHZhbHVlKSkKKwkJewor CQkJLyogVU5LTk9XTiBDb25zdCBjYW5ub3QgY29lcmNlIHRvIHRhcmdldFR5cGUsIGV4aXQgbm93 ICovCisJCQljYW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7CisK KwkJCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CisKKwkJCXJldHVybiBOVUxMOworCQl9CiAK IAkJLyoKIAkJICogSWYgaXQncyBhIHZhcmxlbmEgdmFsdWUsIGZvcmNlIGl0IHRvIGJlIGluIG5v bi1leHBhbmRlZApAQCAtMzY0LDcgKzQxOSw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCiAJ CQkJCQkJCQkgIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCSAgY2NvbnRleHQsIGNmb3JtYXQsIGxv Y2F0aW9uLAotCQkJCQkJCQkJICBmYWxzZSk7CisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJ ICBlc2NvbnRleHQpOwogCiAJCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CiAKQEAgLTM5Nyw5 ICs0NTMsMTEgQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAog CQkgKi8KIAkJQ29sbGF0ZUV4cHIgKmNvbGwgPSAoQ29sbGF0ZUV4cHIgKikgbm9kZTsKIAotCQly ZXN1bHQgPSBjb2VyY2VfdHlwZShwc3RhdGUsIChOb2RlICopIGNvbGwtPmFyZywKLQkJCQkJCQkg aW5wdXRUeXBlSWQsIHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKLQkJCQkJCQkgY2NvbnRl eHQsIGNmb3JtYXQsIGxvY2F0aW9uKTsKKwkJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kZWQo cHN0YXRlLCAoTm9kZSAqKSBjb2xsLT5hcmcsCisJCQkJCQkJCQkgIGlucHV0VHlwZUlkLCB0YXJn ZXRUeXBlSWQsIHRhcmdldFR5cGVNb2QsCisJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBs b2NhdGlvbiwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKKwogCQlpZiAodHlwZV9pc19jb2xsYXRh YmxlKHRhcmdldFR5cGVJZCkpCiAJCXsKIAkJCUNvbGxhdGVFeHByICpuZXdjb2xsID0gbWFrZU5v ZGUoQ29sbGF0ZUV4cHIpOwpAQCAtNDMyLDcgKzQ5MCw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJCSAqLwogCQkJcmVzdWx0ID0gYnVpbGRfY29lcmNp b25fZXhwcmVzc2lvbihub2RlLCBwYXRodHlwZSwgZnVuY0lkLAogCQkJCQkJCQkJCQkgICBiYXNl VHlwZUlkLCBiYXNlVHlwZU1vZCwKLQkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxv Y2F0aW9uKTsKKwkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJ CQkJCQkJCQkgICBlc2NvbnRleHQpOwogCiAJCQkvKgogCQkJICogSWYgZG9tYWluLCBjb2VyY2Ug dG8gdGhlIGRvbWFpbiB0eXBlIGFuZCByZWxhYmVsIHdpdGggZG9tYWluCkBAIC00NDIsNyArNTAx LDggQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCXJl c3VsdCA9IGNvZXJjZV90b19kb21haW4ocmVzdWx0LCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwK IAkJCQkJCQkJCQkgIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0 LCBsb2NhdGlvbiwKLQkJCQkJCQkJCQkgIHRydWUpOworCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJ CQkJCQkgIGVzY29udGV4dCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC00NTgsNyArNTE4LDkgQEAg Y29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJcmVzdWx0ID0g Y29lcmNlX3RvX2RvbWFpbihub2RlLCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJ CSAgdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24s Ci0JCQkJCQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGVzY29u dGV4dCk7CisKIAkJCWlmIChyZXN1bHQgPT0gbm9kZSkKIAkJCXsKIAkJCQkvKgpAQCAtNjc1LDcg KzczNyw4IEBAIGNhbl9jb2VyY2VfdHlwZShpbnQgbmFyZ3MsIGNvbnN0IE9pZCAqaW5wdXRfdHlw ZWlkcywgY29uc3QgT2lkICp0YXJnZXRfdHlwZWlkcywKIE5vZGUgKgogY29lcmNlX3RvX2RvbWFp bihOb2RlICphcmcsIE9pZCBiYXNlVHlwZUlkLCBpbnQzMiBiYXNlVHlwZU1vZCwgT2lkIHR5cGVJ ZCwKIAkJCQkgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwg aW50IGxvY2F0aW9uLAotCQkJCSBib29sIGhpZGVJbnB1dENvZXJjaW9uKQorCQkJCSBib29sIGhp ZGVJbnB1dENvZXJjaW9uLAorCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJQ29lcmNlVG9Eb21h aW4gKnJlc3VsdDsKIApAQCAtNzA1LDcgKzc2OCwxMCBAQCBjb2VyY2VfdG9fZG9tYWluKE5vZGUg KmFyZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9kLCBPaWQgdHlwZUlkLAogCSAq LwogCWFyZyA9IGNvZXJjZV90eXBlX3R5cG1vZChhcmcsIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9k LAogCQkJCQkJCSBjY29udGV4dCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsIGxvY2F0aW9uLAotCQkJ CQkJCSBmYWxzZSk7CisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBlc2NvbnRleHQpOworCWlmIChh cmcgPT0gTlVMTCkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJmYWls ZWQgdG8gY29lcmNlIHR5cGUgbW9kaWZpZXIgYXMgZXhwZWN0ZWQiKTsKIAogCS8qCiAJICogTm93 IGJ1aWxkIHRoZSBkb21haW4gY29lcmNpb24gbm9kZS4gIFRoaXMgcmVwcmVzZW50cyBydW4tdGlt ZSBjaGVja2luZwpAQCAtNzUyLDcgKzgxOCw4IEBAIHN0YXRpYyBOb2RlICoKIGNvZXJjZV90eXBl X3R5cG1vZChOb2RlICpub2RlLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2Qs CiAJCQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwK IAkJCQkgICBpbnQgbG9jYXRpb24sCi0JCQkJICAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbikKKwkJ CQkgICBib29sIGhpZGVJbnB1dENvZXJjaW9uLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKIHsK IAlDb2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlOwogCU9pZAkJCWZ1bmNJZDsKQEAgLTc3OSw3ICs4 NDYsOCBAQCBjb2VyY2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwgT2lkIHRhcmdldFR5cGVJZCwg aW50MzIgdGFyZ2V0VHlwTW9kLAogCXsKIAkJbm9kZSA9IGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Np b24obm9kZSwgcGF0aHR5cGUsIGZ1bmNJZCwKIAkJCQkJCQkJCQkgdGFyZ2V0VHlwZUlkLCB0YXJn ZXRUeXBNb2QsCi0JCQkJCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJCQkJ CQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKKwkJCQkJCQkJCQkgZXNjb250ZXh0 KTsKIAl9CiAJZWxzZQogCXsKQEAgLTg0MCw3ICs5MDgsOCBAQCBidWlsZF9jb2VyY2lvbl9leHBy ZXNzaW9uKE5vZGUgKm5vZGUsCiAJCQkJCQkgIE9pZCBmdW5jSWQsCiAJCQkJCQkgIE9pZCB0YXJn ZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cE1vZCwKIAkJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNj b250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKLQkJCQkJCSAgaW50IGxvY2F0aW9uKQorCQkJ CQkJICBpbnQgbG9jYXRpb24sCisJCQkJCQkgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlpbnQJCQlu YXJncyA9IDA7CiAKQEAgLTk1MCwxNCArMTAxOSwxNSBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNz aW9uKE5vZGUgKm5vZGUsCiAJCXRhcmdldEVsZW1lbnRUeXBlID0gZ2V0X2VsZW1lbnRfdHlwZSh0 YXJnZXRUeXBlSWQpOwogCQlBc3NlcnQoT2lkSXNWYWxpZCh0YXJnZXRFbGVtZW50VHlwZSkpOwog Ci0JCWVsZW1leHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKE5VTEwsCi0JCQkJCQkJCQkJIChO b2RlICopIGN0ZXN0LAotCQkJCQkJCQkJCSBjdGVzdC0+dHlwZUlkLAotCQkJCQkJCQkJCSB0YXJn ZXRFbGVtZW50VHlwZSwKLQkJCQkJCQkJCQkgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCQkJCSBjY29u dGV4dCwKLQkJCQkJCQkJCQkgY2Zvcm1hdCwKLQkJCQkJCQkJCQkgbG9jYXRpb24pOworCQllbGVt ZXhwciA9IGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChOVUxMLAorCQkJCQkJCQkJCQkJ ICAoTm9kZSAqKSBjdGVzdCwKKwkJCQkJCQkJCQkJCSAgY3Rlc3QtPnR5cGVJZCwKKwkJCQkJCQkJ CQkJCSAgdGFyZ2V0RWxlbWVudFR5cGUsCisJCQkJCQkJCQkJCQkgIHRhcmdldFR5cE1vZCwKKwkJ CQkJCQkJCQkJCSAgY2NvbnRleHQsCisJCQkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJ CQkgIGxvY2F0aW9uLAorCQkJCQkJCQkJCQkJICBlc2NvbnRleHQpOwogCQlpZiAoZWxlbWV4cHIg PT0gTlVMTCkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwogCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0 byBjb2VyY2UgYXJyYXkgZWxlbWVudCB0eXBlIGFzIGV4cGVjdGVkIik7CiAKQEAgLTExNDAsNyAr MTIxMCw4IEBAIGNvZXJjZV9yZWNvcmRfdG9fY29tcGxleChQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKm5vZGUsCiAJCQkJCQkJCWJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCQl0YXJn ZXRUeXBlSWQsCiAJCQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJCQkJ ZmFsc2UpOworCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJTlVMTCk7CiAJfQogCiAJcmV0dXJuIChO b2RlICopIHJvd2V4cHI7CkBAIC0xMjk1LDcgKzEzNjYsOCBAQCBjb2VyY2VfbnVsbF90b19kb21h aW4oT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsYXRpb24sCiAJCQkJCQkJCSAgQ09F UkNJT05fSU1QTElDSVQsCiAJCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCiAJCQkJCQkJ CSAgLTEsCi0JCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkgIE5V TEwpOwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGY1 MzVmM2I5MzUxLi41YjgzYWIwYjY0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNyw2 ICsxNyw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Nhc3QuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlICJ1dGls cy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMveG1sLmgiCkBAIC02Miw3ICs2NCw4IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1NdWx0aUFz c2lnblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIE11bHRpQXNzaWduUmVmICptYXJlZik7CiBzdGF0 aWMgTm9kZSAqdHJhbnNmb3JtQ2FzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDYXNlRXhwciAq Yyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1 YkxpbmsgKnN1YmxpbmspOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0 YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAotCQkJCQkJCQlPaWQgYXJyYXlfdHlwZSwgT2lk IGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kKTsKKwkJCQkJCQkJT2lkIGFycmF5X3R5cGUsIE9p ZCBlbGVtZW50X3R5cGUsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsK IHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Sb3dFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUm93RXhw ciAqciwgYm9vbCBhbGxvd0RlZmF1bHQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvYWxlc2Nl RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIENvYWxlc2NlRXhwciAqYyk7CiBzdGF0aWMgTm9kZSAq dHJhbnNmb3JtTWluTWF4RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE1pbk1heEV4cHIgKm0pOwpA QCAtNzgsNiArODEsMTEgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24p Owogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9JbmRpcmVjdGlvbiAqaW5kKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1UeXBlQ2FzdChQYXJz ZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0Yyk7CitzdGF0aWMgdm9pZCBDb2VyY2lvbkVycm9y U2FmZUNoZWNrKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqY2FzdGV4cHIsCisJCQkJCQkJCSAg IE5vZGUgKnNvdXJjZSwgT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUpOworc3RhdGljIHZv aWQgQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5 cGUsCisJCQkJCQkJCQkgICBib29sICplcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCQkgICBi b29sICp1c2VyZGVmaW5lZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sbGF0ZUNsYXVzZShQ YXJzZVN0YXRlICpwc3RhdGUsIENvbGxhdGVDbGF1c2UgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybUpzb25PYmplY3RDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJ CUpzb25PYmplY3RDb25zdHJ1Y3RvciAqY3Rvcik7CkBAIC0xNjYsNyArMTc0LDcgQEAgdHJhbnNm b3JtRXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCiAJCWNhc2Ug VF9BX0FycmF5RXhwcjoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUFycmF5RXhwcihwc3RhdGUsIChB X0FycmF5RXhwciAqKSBleHByLAotCQkJCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsIC0x KTsKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCAtMSwgTlVMTCk7CiAJCQlicmVh azsKIAogCQljYXNlIFRfVHlwZUNhc3Q6CkBAIC01NjYsNiArNTc0LDcgQEAgdHJhbnNmb3JtQ29s dW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJf S0lORF9WQUxVRVNfU0lOR0xFOgogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5UOgog CQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVG QVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJ TkRfSU5ERVhfRVhQUkVTU0lPTjoKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfUFJFRElDQVRFOgpA QCAtMTg0OSw2ICsxODU4LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUs IFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoKIAkJCWVy ciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gY2hlY2sgY29uc3RyYWludCIpOwogCQkJYnJl YWs7CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVGQVVMVDoKKwkJCWVyciA9IF8oImNhbm5vdCB1 c2Ugc3VicXVlcnkgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCQlj YXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05f REVGQVVMVDoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGQVVMVCBleHBy ZXNzaW9uIik7CkBAIC0yMDQyLDEwICsyMDU0LDE1IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VT dGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogICogSWYgdGhlIGNhbGxlciBzcGVjaWZp ZXMgdGhlIHRhcmdldCB0eXBlLCB0aGUgcmVzdWx0aW5nIGFycmF5IHdpbGwKICAqIGJlIG9mIGV4 YWN0bHkgdGhhdCB0eXBlLiAgT3RoZXJ3aXNlIHdlIHRyeSB0byBpbmZlciBhIGNvbW1vbiB0eXBl CiAgKiBmb3IgdGhlIGVsZW1lbnRzIHVzaW5nIHNlbGVjdF9jb21tb25fdHlwZSgpLgorICoKKyAq IGVzY29udGV4dCAoRXJyb3JTYXZlQ29udGV4dCAqKSBpcyB0eXBpY2FsbHkgTlVMTCwgZXhjZXB0 IGR1cmluZyBwYXJzZSBhbmFseXNpcyBmb3IKKyAqIENBU1QoLi4uIERFRkFVTFQgLi4uIE9OIENP TlZFUlNJT04gRVJST1IpLiBXaGVuIHByb3ZpZGVkLAorICogRXJyb3JTYXZlQ29udGV4dC0+ZXJy b3Jfb2NjdXJyZWQgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIGZhbHNlLiBJdCBpcyBzZXQKKyAq IHRvIHRydWUgaWYgY29lcmNpbmcgYXJyYXkgZWxlbWVudHMgZmFpbHMuCiAgKi8KIHN0YXRpYyBO b2RlICoKIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHBy ICphLAotCQkJCSAgIE9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBt b2QpCisJCQkJICAgT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUsIGludDMyIHR5cG1v ZCwgTm9kZSAqZXNjb250ZXh0KQogewogCUFycmF5RXhwciAgKm5ld2EgPSBtYWtlTm9kZShBcnJh eUV4cHIpOwogCUxpc3QJICAgKm5ld2VsZW1zID0gTklMOwpAQCAtMjA3Niw5ICsyMDkzLDEwIEBA IHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAog CQkJCQkJCQkJICAoQV9BcnJheUV4cHIgKikgZSwKIAkJCQkJCQkJCSAgYXJyYXlfdHlwZSwKIAkJ CQkJCQkJCSAgZWxlbWVudF90eXBlLAotCQkJCQkJCQkJICB0eXBtb2QpOworCQkJCQkJCQkJICB0 eXBtb2QsCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CiAJCQkvKiB3ZSBjZXJ0YWlubHkgaGF2ZSBh biBhcnJheSBoZXJlICovCi0JCQlBc3NlcnQoYXJyYXlfdHlwZSA9PSBJbnZhbGlkT2lkIHx8IGFy cmF5X3R5cGUgPT0gZXhwclR5cGUobmV3ZSkpOworCQkJQXNzZXJ0KGVzY29udGV4dCB8fCBhcnJh eV90eXBlID09IEludmFsaWRPaWQgfHwgYXJyYXlfdHlwZSA9PSBleHByVHlwZShuZXdlKSk7CiAJ CQluZXdhLT5tdWx0aWRpbXMgPSB0cnVlOwogCQl9CiAJCWVsc2UKQEAgLTIxMTksNiArMjEzNyw4 IEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICph LAogCX0KIAllbHNlCiAJeworCQlBc3NlcnQoZXNjb250ZXh0ID09IE5VTEwpOworCiAJCS8qIENh bid0IGhhbmRsZSBhbiBlbXB0eSBhcnJheSB3aXRob3V0IGEgdGFyZ2V0IHR5cGUgKi8KIAkJaWYg KG5ld2VsZW1zID09IE5JTCkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMTY5LDI0ICsyMTg5LDU1 IEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICph LAogCWZvcmVhY2goZWxlbWVudCwgbmV3ZWxlbXMpCiAJewogCQlOb2RlCSAgICplID0gKE5vZGUg KikgbGZpcnN0KGVsZW1lbnQpOwotCQlOb2RlCSAgICpuZXdlOworCQlOb2RlCSAgICpuZXdlID0g TlVMTDsKIAogCQlpZiAoY29lcmNlX2hhcmQpCiAJCXsKLQkJCW5ld2UgPSBjb2VyY2VfdG9fdGFy Z2V0X3R5cGUocHN0YXRlLCBlLAotCQkJCQkJCQkJCSBleHByVHlwZShlKSwKLQkJCQkJCQkJCQkg Y29lcmNlX3R5cGUsCi0JCQkJCQkJCQkJIHR5cG1vZCwKLQkJCQkJCQkJCQkgQ09FUkNJT05fRVhQ TElDSVQsCi0JCQkJCQkJCQkJIENPRVJDRV9FWFBMSUNJVF9DQVNULAotCQkJCQkJCQkJCSAtMSk7 Ci0JCQlpZiAobmV3ZSA9PSBOVUxMKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29k ZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAotCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlw ZSAlcyB0byAlcyIsCi0JCQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKGUpKSwKLQkJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoY29lcmNlX3R5cGUpKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkvKgorCQkJICogQ2Fubm90IGNvZXJj ZSwganVzdCBhcHBlbmQgdGhlIHRyYW5zZm9ybWVkIGVsZW1lbnQgZXhwcmVzc2lvbgorCQkJICog dG8gdGhlIGxpc3QuCisJCQkgKi8KKwkJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4 dCkpCisJCQkJbmV3ZSA9IGU7CisJCQllbHNlCisJCQl7CisJCQkJTm9kZQkgICAqZWNvcHkgPSBO VUxMOworCisJCQkJaWYgKGVzY29udGV4dCkKKwkJCQkJZWNvcHkgPSBjb3B5T2JqZWN0KGUpOwor CisJCQkJbmV3ZSA9IGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsIGUsCisJ CQkJCQkJCQkJCQkJICBleHByVHlwZShlKSwKKwkJCQkJCQkJCQkJCQkgIGNvZXJjZV90eXBlLAor CQkJCQkJCQkJCQkJCSAgdHlwbW9kLAorCQkJCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQs CisJCQkJCQkJCQkJCQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJCQkgIC0x LAorCQkJCQkJCQkJCQkJCSAgZXNjb250ZXh0KTsKKwkJCQlpZiAobmV3ZSA9PSBOVUxMKQorCQkJ CXsKKwkJCQkJLyoKKwkJCQkJICogQ2Fubm90IGNvZXJjZS4gUmFpc2UgYW4gZXJyb3Igb3IgYXBw ZW5kIHRoZSB0cmFuc2Zvcm1lZAorCQkJCQkgKiBlbGVtZW50IHRvIHRoZSBsaXN0LiBBbHNvLCBz ZXQKKwkJCQkJICogZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCB0byB0cnVlIHNvIHRoZSBjYWxs ZXIgY2FuCisJCQkJCSAqIG5vdGljZSB0aGF0IGFycmF5IGNvZXJjaW9uIGZhaWxlZC4KKwkJCQkJ ICovCisJCQkJCWlmICghZXNjb250ZXh0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90 IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUo ZSkpLAorCQkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvZXJjZV90eXBlKSksCisJCQkJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkJCWVsc2UK KwkJCQkJeworCQkJCQkJRXJyb3JTYXZlQ29udGV4dCAqY29udGV4dCA9IGNhc3ROb2RlKEVycm9y U2F2ZUNvbnRleHQsIGVzY29udGV4dCk7CisKKwkJCQkJCW5ld2UgPSBlY29weTsKKwkJCQkJCWNv bnRleHQtPmVycm9yX29jY3VycmVkID0gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAkJfQog CQllbHNlCiAJCQluZXdlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgZSwKQEAgLTI3 MzUsMTcgKzI3ODYsNjcgQEAgdHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRl LCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVR5 cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQogewotCU5vZGUJICAgKnJl c3VsdDsKKwlTYWZlVHlwZUNhc3RFeHByICpzdGM7CisJTm9kZQkgICAqY2FzdGV4cHIgPSBOVUxM OworCU5vZGUJICAgKmRlZmV4cHIgPSBOVUxMOwogCU5vZGUJICAgKmFyZyA9IHRjLT5hcmc7CisJ Tm9kZQkgICAqc291cmNlOwogCU5vZGUJICAgKmV4cHI7CiAJT2lkCQkJaW5wdXRUeXBlOwogCU9p ZAkJCXRhcmdldFR5cGU7CisJT2lkCQkJdGFyZ2V0VHlwZWNvbGw7CiAJaW50MzIJCXRhcmdldFR5 cG1vZDsKIAlpbnQJCQlsb2NhdGlvbjsKKwlFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQgPSBO VUxMOwogCiAJLyogTG9vayB1cCB0aGUgdHlwZSBuYW1lIGZpcnN0ICovCiAJdHlwZW5hbWVUeXBl SWRBbmRNb2QocHN0YXRlLCB0Yy0+dHlwZU5hbWUsICZ0YXJnZXRUeXBlLCAmdGFyZ2V0VHlwbW9k KTsKIAorCXRhcmdldFR5cGVjb2xsID0gZ2V0X3R5cGNvbGxhdGlvbih0YXJnZXRUeXBlKTsKKwor CS8qIGxvb2tpbmcgYXQgREVGQVVMVCBleHByZXNzaW9uICovCisJaWYgKHRjLT5kZWZleHByKQor CXsKKwkJT2lkCQkJZGVmQ29sbDsKKworCQllc2NvbnRleHQgPSBtYWtlTm9kZShFcnJvclNhdmVD b250ZXh0KTsKKwkJZXNjb250ZXh0LT50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OworCQllc2Nv bnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJCWVzY29udGV4dC0+ZGV0YWlsc193YW50 ZWQgPSBmYWxzZTsKKworCQlkZWZleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHRjLT5kZWZl eHByLCBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUKTsKKworCQlkZWZleHByID0gY29lcmNlX3RvX3Rh cmdldF90eXBlKHBzdGF0ZSwgZGVmZXhwciwgZXhwclR5cGUoZGVmZXhwciksCisJCQkJCQkJCQkJ dGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAorCQkJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULCBD T0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQlleHByTG9jYXRpb24oZGVmZXhwcikpOwor CisJCWlmIChkZWZleHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCWVycm1zZygiY2Fubm90IGNvZXJjZSAlcyBl eHByZXNzaW9uIHRvIHR5cGUgJXMiLAorCQkJCQkJICAgIkNBU1QgREVGQVVMVCIsCisJCQkJCQkg ICBmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlKSksCisJCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJw b3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbih0Yy0+ZGVmZXhwciksIGRlZmV4cHIpKTsKKwor CQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgZGVmZXhwcik7CisKKwkJLyoKKwkJICog VGhlIGNvbGxhdGlvbiBvZiBERUZBVUxUIGV4cHJlc3Npb24gbXVzdCBtYXRjaCB0aGUgY29sbGF0 aW9uIG9mIHRoZQorCQkgKiB0YXJnZXQgdHlwZS4KKwkJICovCisJCWRlZkNvbGwgPSBleHByQ29s bGF0aW9uKGRlZmV4cHIpOworCisJCWlmICh0YXJnZXRUeXBlY29sbCAhPSBkZWZDb2xsKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJZXJybXNnKCJjb2xsYXRpb24gb2YgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxp Y3RzIHdpdGggdGFyZ2V0IHR5cGUgY29sbGF0aW9uIiksCisJCQkJCWVycmRldGFpbCgiXCIlc1wi IHZlcnN1cyBcIiVzXCIiLAorCQkJCQkJCSAgZ2V0X2NvbGxhdGlvbl9uYW1lKGRlZkNvbGwpLAor CQkJCQkJCSAgZ2V0X2NvbGxhdGlvbl9uYW1lKHRhcmdldFR5cGVjb2xsKSksCisJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihkZWZleHByKSkpOworCX0KKwogCS8q CiAJICogSWYgdGhlIHN1YmplY3Qgb2YgdGhlIHR5cGVjYXN0IGlzIGFuIEFSUkFZW10gY29uc3Ry dWN0IGFuZCB0aGUgdGFyZ2V0CiAJICogdHlwZSBpcyBhbiBhcnJheSB0eXBlLCB3ZSBpbnZva2Ug dHJhbnNmb3JtQXJyYXlFeHByKCkgZGlyZWN0bHkgc28gdGhhdApAQCAtMjc3NCw3ICsyODc1LDgg QEAgdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJ CQkJCQkJCQkgIChBX0FycmF5RXhwciAqKSBhcmcsCiAJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBl LAogCQkJCQkJCQkJICBlbGVtZW50VHlwZSwKLQkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cG1vZCk7 CisJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBtb2QsCisJCQkJCQkJCQkgIGRlZmV4cHIgPyAoTm9k ZSAqKSBlc2NvbnRleHQgOiBOVUxMKTsKIAkJfQogCQllbHNlCiAJCQlleHByID0gdHJhbnNmb3Jt RXhwclJlY3Vyc2UocHN0YXRlLCBhcmcpOwpAQCAtMjc5NSwyMCArMjg5NywyMDMgQEAgdHJhbnNm b3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJaWYgKGxvY2F0 aW9uIDwgMCkKIAkJbG9jYXRpb24gPSB0Yy0+dHlwZU5hbWUtPmxvY2F0aW9uOwogCi0JcmVzdWx0 ID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZXhwciwgaW5wdXRUeXBlLAotCQkJCQkJ CQkgICB0YXJnZXRUeXBlLCB0YXJnZXRUeXBtb2QsCi0JCQkJCQkJCSAgIENPRVJDSU9OX0VYUExJ Q0lULAotCQkJCQkJCQkgICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKLQkJCQkJCQkJICAgbG9jYXRp b24pOwotCWlmIChyZXN1bHQgPT0gTlVMTCkKKwkvKgorCSAqIGNvZXJjZV90b190YXJnZXRfdHlw ZV9leHRlbmRlZCBpcyB1bmxpa2VseSB0byBtb2RpZnkgdGhlIHNvdXJjZQorCSAqIGV4cHJlc3Np b24sIGJ1dCB3ZSBzdGlsbCBjcmVhdGUgYSBjb3B5IGJlZm9yZWhhbmQuIFRoaXMgYWxsb3dzCisJ ICogU2FmZVR5cGVDYXN0RXhwciB0byByZWNlaXZlIHRoZSB0cmFuc2Zvcm1lZCBzb3VyY2UgZXhw cmVzc2lvbgorCSAqIHVuY2hhbmdlZC4KKwkgKi8KKwlzb3VyY2UgPSBkZWZleHByID8gY29weU9i amVjdChleHByKSA6IGV4cHI7CisKKwlpZiAoIVNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0 KSkKKwl7CisJCWNhc3RleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0 ZSwgZXhwciwgaW5wdXRUeXBlLAorCQkJCQkJCQkJCQkJICB0YXJnZXRUeXBlLCB0YXJnZXRUeXBt b2QsCisJCQkJCQkJCQkJCQkgIENPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCQkJICBDT0VS Q0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJCQkg IGRlZmV4cHIgPyAoTm9kZSAqKSBlc2NvbnRleHQgOiBOVUxMKTsKKworCQkvKgorCQkgKiBObyBE RUZBVUxUIGV4cHJlc3Npb24sIGV4aXQgbm93IG9yIGVycm9yIG91dCBpbiBjYXNlIG9mIGNvZXJj aW9uCisJCSAqIGZhaWx1cmUKKwkJICovCisJCWlmICghZGVmZXhwcikKKwkJeworCQkJaWYgKGNh c3RleHByKQorCQkJCXJldHVybiBjYXN0ZXhwcjsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ ZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQllcnJtc2coImNhbm5vdCBjYXN0 IHR5cGUgJXMgdG8gJXMiLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKKwkJ CQkJCSAgIGZvcm1hdF90eXBlX2JlKHRhcmdldFR5cGUpKSwKKwkJCQkJcGFyc2VyX2NvZXJjaW9u X2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24sIGV4cHIpKTsKKwkJfQorCX0KKworCS8qIEZ1 cnRoZXIgY2hlY2sgZm9yIENBU1QoLi4uIERFRkFVTFQgLi4uIE9OIENPTlZFUlNJT04gRVJST1Ip ICovCisJQ29lcmNpb25FcnJvclNhZmVDaGVjayhwc3RhdGUsIGNhc3RleHByLCBzb3VyY2UsIGlu cHV0VHlwZSwKKwkJCQkJCSAgIHRhcmdldFR5cGUpOworCisJc3RjID0gbWFrZU5vZGUoU2FmZVR5 cGVDYXN0RXhwcik7CisJc3RjLT5zb3VyY2UgPSAoRXhwciAqKSBzb3VyY2U7CisJc3RjLT5jYXN0 ZXhwciA9IChFeHByICopIGNhc3RleHByOworCXN0Yy0+ZGVmZXhwciA9IChFeHByICopIGRlZmV4 cHI7CisJc3RjLT5yZXN1bHR0eXBlID0gdGFyZ2V0VHlwZTsKKwlzdGMtPnJlc3VsdHR5cG1vZCA9 IHRhcmdldFR5cG1vZDsKKwlzdGMtPnJlc3VsdGNvbGxpZCA9IHRhcmdldFR5cGVjb2xsOworCXN0 Yy0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBzdGM7Cit9CisKKy8q CisgKiBDaGVjayB0eXBlIGNvZXJjaW9uIGlzIGVycm9yIHNhZmUgb3Igbm90LiAgSWYgbm90IHRo ZW4gcmVwb3J0IGVycm9yCisgKi8KK3N0YXRpYyB2b2lkCitDb2VyY2lvbkVycm9yU2FmZUNoZWNr KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqY2FzdGV4cHIsIE5vZGUgKnNvdXJjZSwKKwkJCQkJ ICAgT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUpCit7CisJYm9vbAkJZXJyb3JzYWZlX2Nv ZXJjaW9uID0gdHJ1ZTsKKwlib29sCQl1c2VyZGVmaW5lZCA9IGZhbHNlOworCisJLyoKKwkgKiBC aW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcnJvci1zYWZlLCBDb2VyY2VWaWFJTyBjYW4gYWxzbyBi ZSBldmFsdWF0ZWQKKwkgKiBpbiBhbiBlcnJvci1zYWZlIG1hbm5lci4gU2tpcCB0aGVzZSBjYXNl cy4KKwkgKi8KKwlpZiAoY2FzdGV4cHIgPT0gTlVMTCB8fAorCQlJc0JpbmFyeUNvZXJjaWJsZShp bnB1dFR5cGUsIHRhcmdldFR5cGUpIHx8CisJCUlzQShjYXN0ZXhwciwgQ29lcmNlVmlhSU8pKQor CQlyZXR1cm47CisKKwlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChpbnB1dFR5cGUsIHRhcmdl dFR5cGUsCisJCQkJCQkJICAgJmVycm9yc2FmZV9jb2VyY2lvbiwKKwkJCQkJCQkgICAmdXNlcmRl ZmluZWQpOworCisJaWYgKCFlcnJvcnNhZmVfY29lcmNpb24pCiAJCWVyZXBvcnQoRVJST1IsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qg Y2FzdCB0eXBlICVzIHRvICVzIiwKLQkJCQkJCWZvcm1hdF90eXBlX2JlKGlucHV0VHlwZSksCi0J CQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlKSksCi0JCQkJIHBhcnNlcl9jb2VyY2lvbl9l cnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uLCBleHByKSkpOworCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAl cyB0byAlcyB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9O IEVSUk9SIiwKKwkJCQkJICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKKwkJCQkJICAgZm9y bWF0X3R5cGVfYmUodGFyZ2V0VHlwZSkpLAorCQkJCXVzZXJkZWZpbmVkCisJCQkJPyBlcnJkZXRh aWwoIlNhZmUgdHlwZSBjYXN0cyBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1 cHBvcnRlZC4iKQorCQkJCTogZXJyZGV0YWlsKCJFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0 IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuIiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKHNvdXJjZSkpKTsKK30KIAotCXJldHVybiByZXN1bHQ7Citz dGF0aWMgdm9pZAorQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoT2lkIGlucHV0VHlwZSwgT2lk IHRhcmdldFR5cGUsCisJCQkJCQkgICBib29sICplcnJvcnNhZmVfY29lcmNpb24sIGJvb2wgKnVz ZXJkZWZpbmVkKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKworCWNoYXIJCWlucHV0X3R5cHR5cGUg PSBnZXRfdHlwdHlwZShpbnB1dFR5cGUpOworCWNoYXIJCXRhcmdldF90eXB0eXBlID0gZ2V0X3R5 cHR5cGUodGFyZ2V0VHlwZSk7CisKKwkvKiBzaW5jZSB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2VzLCBp dCBjb3VsZCBiZSBkcml2ZW4gdG8gc3RhY2sgb3ZlcmZsb3cgKi8KKwljaGVja19zdGFja19kZXB0 aCgpOworCisJQXNzZXJ0KGVycm9yc2FmZV9jb2VyY2lvbiAhPSBOVUxMKTsKKwlBc3NlcnQodXNl cmRlZmluZWQgIT0gTlVMTCk7CisKKwlpZiAoISgqZXJyb3JzYWZlX2NvZXJjaW9uKSkKKwkJcmV0 dXJuOworCisJaWYgKGlucHV0X3R5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4gJiYKKwkJdGFyZ2V0 X3R5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJeworCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRl cm5hbChnZXRCYXNlVHlwZShpbnB1dFR5cGUpLAorCQkJCQkJCQkgICBnZXRCYXNlVHlwZSh0YXJn ZXRUeXBlKSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCQkgICB1c2Vy ZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoaW5wdXRfdHlwdHlwZSA9PSBUWVBU WVBFX0RPTUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGdldEJhc2VUeXBl KGlucHV0VHlwZSksCisJCQkJCQkJCSAgIHRhcmdldFR5cGUsCisJCQkJCQkJCSAgIGVycm9yc2Fm ZV9jb2VyY2lvbiwKKwkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQlyZXR1cm47CisJfQorCWVs c2UgaWYgKHRhcmdldF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCXsKKwkJQ29lcmNpb25F cnJvclNhZmVfSW50ZXJuYWwoaW5wdXRUeXBlLAorCQkJCQkJCQkgICBnZXRCYXNlVHlwZSh0YXJn ZXRUeXBlKSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCQkgICB1c2Vy ZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoKGlucHV0X3R5cHR5cGUgIT0gVFlQ VFlQRV9CQVNFICYmIGlucHV0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkKKwkJCSB8fCAo dGFyZ2V0X3R5cHR5cGUgIT0gVFlQVFlQRV9CQVNFICYmIHRhcmdldFR5cGUgPiBGaXJzdFVucGlu bmVkT2JqZWN0SWQpKQorCXsKKwkJLyoKKwkJICogQ29tcG9zaXRlLXRvLWNvbXBvc2l0ZSBjYXN0 aW5nIGlzIG5vdCBpbXBsZW1lbnRlZCwgc28gZXJyb3Itc2FmZQorCQkgKiBjYXN0IGJldHdlZW4g dGhlbSBzaG91bGQgbm90IGJlIHBvc3NpYmxlOyB3ZSBmb3JiaWQgaXQgaGVyZS4KKwkJICoKKwkJ ICogT3VyIHR5cGUgc3lzdGVtIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY2FzdCBhIHVzZXItZGVm aW5lZCByYW5nZQorCQkgKiB0eXBlIHRvIGFuIGJ1aWx0LWluIHJhbmdlIHR5cGUsIGV2ZW4gaWYg dGhlaXIgYmFzZSBlbGVtZW50IHR5cGVzCisJCSAqIGFyZSB0aGUgc2FtZS4gVGhlcmUgbWF5IGJl IGNvbXBsZXggZWRnZSBjYXNlcyB0byBjb25zaWRlciwgc2FmZXIgdG8KKwkJICogc2ltcGx5IGRp c2FsbG93IGVycm9yLXNhZmUgY2FzdGluZyBmb3IgdGhlbSBub3cuCisJCSAqLworCQkqZXJyb3Jz YWZlX2NvZXJjaW9uID0gZmFsc2U7CisKKwkJcmV0dXJuOworCX0KKwllbHNlCisJeworCQlPaWQJ CQlpbnB1dF90eXBlbGVtID0gZ2V0X2VsZW1lbnRfdHlwZShpbnB1dFR5cGUpOworCQlPaWQJCQl0 YXJnZXRfdHlwZWxlbSA9IGdldF9lbGVtZW50X3R5cGUodGFyZ2V0VHlwZSk7CisKKwkJaWYgKE9p ZElzVmFsaWQoaW5wdXRfdHlwZWxlbSkgJiYgT2lkSXNWYWxpZCh0YXJnZXRfdHlwZWxlbSkpCisJ CXsKKwkJCS8qIHJlY3Vyc2UgaW50byBhcnJheSBlbGVtZW50IHR5cGUgKi8KKwkJCUNvZXJjaW9u RXJyb3JTYWZlX0ludGVybmFsKGlucHV0X3R5cGVsZW0sCisJCQkJCQkJCQkgICB0YXJnZXRfdHlw ZWxlbSwKKwkJCQkJCQkJCSAgIGVycm9yc2FmZV9jb2VyY2lvbiwKKwkJCQkJCQkJCSAgIHVzZXJk ZWZpbmVkKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCS8qCisJICogQ2FzdHMgZnJvbSBNT05F WSBzb3VyY2UgdHlwZSBhcmUgbm90IGVycm9yIHNhZmUuCisJICovCisJaWYgKGlucHV0VHlwZSA9 PSBNT05FWU9JRCkKKwl7CisJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsKKwkJcmV0dXJu OworCX0KKworCWlmIChpbnB1dFR5cGUgIT0gdGFyZ2V0VHlwZSkKKwl7CisJCXR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUyKENBU1RTT1VSQ0VUQVJHRVQsCisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0o aW5wdXRUeXBlKSwKKwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bSh0YXJnZXRUeXBlKSk7CisKKwkJ LyoKKwkJICogQSBwZ19jYXN0IGVudHJ5IG1pZ2h0IG5vdCBleGlzdCBmb3IgdGhpcyBzcGVjaWZp YyBjYXN0OyBmb3IKKwkJICogZXhhbXBsZSwgd2hlbiB1c2luZyBDb2VyY2VWaWFJTy4KKwkJICov CisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJeworCQkJRm9ybV9wZ19jYXN0IGNh c3RGb3JtID0gKEZvcm1fcGdfY2FzdCkgR0VUU1RSVUNUKHR1cGxlKTsKKworCQkJaWYgKGNhc3RG b3JtLT5jYXN0ZnVuYyA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkKKwkJCXsKKwkJCQkqZXJyb3Jz YWZlX2NvZXJjaW9uID0gZmFsc2U7CisJCQkJKnVzZXJkZWZpbmVkID0gdHJ1ZTsKKwkJCX0KKwkJ CVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJCX0KKwkJZWxzZSBpZiAoaW5wdXRUeXBlID4gRmly c3RVbnBpbm5lZE9iamVjdElkIHx8IHRhcmdldFR5cGUgPiBGaXJzdFVucGlubmVkT2JqZWN0SWQp CisJCXsKKwkJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsKKwkJCSp1c2VyZGVmaW5lZCA9 IHRydWU7CisJCX0KKwl9CiB9CiAKIC8qCkBAIC0zMjI0LDYgKzM1MDksOCBAQCBQYXJzZUV4cHJL aW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQljYXNlIEVYUFJfS0lORF9DSEVDS19D T05TVFJBSU5UOgogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJCQlyZXR1cm4gIkNI RUNLIjsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJcmV0dXJuICJDQVNUIERF RkFVTFQiOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJ TkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCXJldHVybiAiREVGQVVMVCI7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYwppbmRleCAzNWZmNjQyNzE0Ny4uZjBmYzYwNDE5Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYwpAQCAtMjc0Myw2ICsyNzQzLDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBF WFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAJCQlicmVhazsKKwkJ Y2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOwor CQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJf S0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV90YXJnZXQuYwppbmRleCA1NDFmZWY1ZjE4My4uN2NkMTk3MGJjOTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTg0NSw3ICs4NDUsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50 SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCUNPRVJDSU9OX0lNUExJ Q0lULAogCQkJCQkJCQkJCUNPRVJDRV9JTVBMSUNJVF9DQVNULAogCQkJCQkJCQkJCWxvY2F0aW9u LAotCQkJCQkJCQkJCWZhbHNlKTsKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlOVUxMKTsK IAogCQkJcmV0dXJuIChOb2RlICopIGZzdG9yZTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3R5cGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMK aW5kZXggYmI3ZWNjZGU5ZmQuLjI4M2RmYzJlZTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdHlwZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMK QEAgLTY2MCw2ICs2NjAsMjQgQEAgc3RyaW5nVHlwZURhdHVtKFR5cGUgdHAsIGNoYXIgKnN0cmlu ZywgaW50MzIgYXR0dHlwbW9kKQogCXJldHVybiBPaWRJbnB1dEZ1bmN0aW9uQ2FsbCh0eXBpbnB1 dCwgc3RyaW5nLCB0eXBpb3BhcmFtLCBhdHR0eXBtb2QpOwogfQogCisvKgorICogRXJyb3Itc2Fm ZSB2ZXJzaW9uIG9mIHN0cmluZ1R5cGVEYXR1bS4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgInN0 cmluZyIgaXMgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiB0eXBlICJ0cCIuCisgKiBPbiBzdWNj ZXNzLCB0aGUgaW50ZXJuYWwgRGF0dW0gcmVwcmVzZW50YXRpb24gaXMgd3JpdHRlbiB0byAicmVz dWx0Ii4KKyAqLworYm9vbAorc3RyaW5nVHlwZURhdHVtU2FmZShUeXBlIHRwLCBjaGFyICpzdHJp bmcsIGludDMyIGF0dHR5cG1vZCwKKwkJCQkJTm9kZSAqZXNjb250ZXh0LCBEYXR1bSAqcmVzdWx0 KQoreworCUZvcm1fcGdfdHlwZSB0eXBmb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHRw KTsKKwlPaWQJCQl0eXBpbnB1dCA9IHR5cGZvcm0tPnR5cGlucHV0OworCU9pZAkJCXR5cGlvcGFy YW0gPSBnZXRUeXBlSU9QYXJhbSh0cCk7CisKKwlyZXR1cm4gT2lkSW5wdXRGdW5jdGlvbkNhbGxT YWZlKHR5cGlucHV0LCBzdHJpbmcsIHR5cGlvcGFyYW0sIGF0dHR5cG1vZCwKKwkJCQkJCQkJCWVz Y29udGV4dCwgcmVzdWx0KTsKK30KKwogLyoKICAqIEdpdmVuIGEgdHlwZWlkLCByZXR1cm4gdGhl IHR5cGUncyB0eXByZWxpZCAoYXNzb2NpYXRlZCByZWxhdGlvbiksIGlmIGFueS4KICAqIFJldHVy bnMgSW52YWxpZE9pZCBpZiB0eXBlIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlLgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKaW5kZXggOWE5MThlMTRhYTcuLjEwMzE4ZmM0OTkwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTQ5NTEsNyArNDk1MSw3IEBAIHRyYW5zZm9ybVBh cnRpdGlvbkJvdW5kVmFsdWUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICp2YWwsCiAJCWFzc2ln bl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCB2YWx1ZSk7CiAJCXZhbHVlID0gKE5vZGUgKikgZXhw cmVzc2lvbl9wbGFubmVyKChFeHByICopIHZhbHVlKTsKIAkJdmFsdWUgPSAoTm9kZSAqKSBldmFs dWF0ZV9leHByKChFeHByICopIHZhbHVlLCBjb2xUeXBlLCBjb2xUeXBtb2QsCi0JCQkJCQkJCQkg ICBwYXJ0Q29sbGF0aW9uKTsKKwkJCQkJCQkJCSAgIHBhcnRDb2xsYXRpb24sIE5VTEwpOwogCQlp ZiAoIUlzQSh2YWx1ZSwgQ29uc3QpKQogCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBldmFsdWF0 ZSBwYXJ0aXRpb24gYm91bmQgZXhwcmVzc2lvbiIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlm dW5jcy5jCmluZGV4IDI5MzNhOTVjNGE1Li4wMTcxMDI3OTBhYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv YXJyYXlmdW5jcy5jCkBAIC0zMjk0LDYgKzMyOTQsMTUgQEAgYXJyYXlfbWFwKERhdHVtIGFycmF5 ZCwKIAkJLyogQXBwbHkgdGhlIGdpdmVuIGV4cHJlc3Npb24gdG8gc291cmNlIGVsZW1lbnQgKi8K IAkJdmFsdWVzW2ldID0gRXhlY0V2YWxFeHByKGV4cHJzdGF0ZSwgZWNvbnRleHQsICZudWxsc1tp XSk7CiAKKwkJLyogRXhpdCBlYXJseSBpZiBldmFsdWF0aW9uIGZhaWxlZCAqLworCQlpZiAoU09G VF9FUlJPUl9PQ0NVUlJFRChleHByc3RhdGUtPmVzY29udGV4dCkpCisJCXsKKwkJCXBmcmVlKHZh bHVlcyk7CisJCQlwZnJlZShudWxscyk7CisKKwkJCXJldHVybiAoRGF0dW0pIDA7CisJCX0KKwog CQlpZiAobnVsbHNbaV0pCiAJCQloYXNudWxscyA9IHRydWU7CiAJCWVsc2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwppbmRleCBhZWM1NTU2YjAwOC4uNDhiZmM5Y2VlMzYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKQEAgLTExMTE0LDYgKzExMTE0LDMxIEBAIGdldF9ydWxlX2V4cHIo Tm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJfQogCQkJYnJlYWs7CiAK KwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAq c3RjZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJLyoKKwkJ CQkgKiBXZSBjYW5ub3QgZGVwYXJzZSBjYXN0ZXhwciBkaXJlY3RseSwgc2luY2UKKwkJCQkgKiB0 cmFuc2Zvcm1UeXBlQ2FzdCBtYXkgaGF2ZSBhbHJlYWR5IGNvbnN0YW50LWZvbGRlZCBpdCBpbnRv CisJCQkJICogYSBDb25zdGFudC4gSW5zdGVhZCwgd2UgY2FuIHVzZSAic291cmNlIiBhbmQgImRl ZmV4cHIiIHRvCisJCQkJICogcmVjb25zdHJ1Y3QgdGhlIENBU1QgREVGQVVMVCBjbGF1c2UuCisJ CQkJICovCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJDQVNUKCIpOworCQkJCWdl dF9ydWxlX2V4cHIoKE5vZGUgKikgc3RjZXhwci0+c291cmNlLCBjb250ZXh0LCBzaG93aW1wbGlj aXQpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMgIiwKKwkJCQkJCQkJIGZv cm1hdF90eXBlX3dpdGhfdHlwZW1vZChzdGNleHByLT5yZXN1bHR0eXBlLAorCQkJCQkJCQkJCQkJ CQkgIHN0Y2V4cHItPnJlc3VsdHR5cG1vZCkpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICJERUZBVUxUICIpOworCisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBzdGNleHBy LT5kZWZleHByLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsICIgT04gQ09OVkVSU0lPTiBFUlJPUikiKTsKKwkJCX0KKwkJCWJyZWFrOwor CiAJCWNhc2UgVF9Kc29uRXhwcjoKIAkJCXsKIAkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29u RXhwciAqKSBub2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwppbmRleCBiZmVjZWI3YTkyZi4uOTA2ODZh ZTIwZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCkBAIC0xNzYwLDYgKzE3NjAsMTkgQEAgT2lkSW5w dXRGdW5jdGlvbkNhbGwoT2lkIGZ1bmN0aW9uSWQsIGNoYXIgKnN0ciwgT2lkIHR5cGlvcGFyYW0s IGludDMyIHR5cG1vZCkKIAlyZXR1cm4gSW5wdXRGdW5jdGlvbkNhbGwoJmZsaW5mbywgc3RyLCB0 eXBpb3BhcmFtLCB0eXBtb2QpOwogfQogCisvKiBlcnJvci1zYWZlIHZlcnNpb24gb2YgT2lkSW5w dXRGdW5jdGlvbkNhbGwgKi8KK2Jvb2wKK09pZElucHV0RnVuY3Rpb25DYWxsU2FmZShPaWQgZnVu Y3Rpb25JZCwgY2hhciAqc3RyLCBPaWQgdHlwaW9wYXJhbSwKKwkJCQkJCSBpbnQzMiB0eXBtb2Qs IE5vZGUgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdWx0KQoreworCUZtZ3JJbmZvCWZs aW5mbzsKKworCWZtZ3JfaW5mbyhmdW5jdGlvbklkLCAmZmxpbmZvKTsKKwlyZXR1cm4gSW5wdXRG dW5jdGlvbkNhbGxTYWZlKCZmbGluZm8sIHN0ciwgdHlwaW9wYXJhbSwgdHlwbW9kLAorCQkJCQkJ CQkgZXNjb250ZXh0LCByZXN1bHQpOworfQorCiBjaGFyICoKIE9pZE91dHB1dEZ1bmN0aW9uQ2Fs bChPaWQgZnVuY3Rpb25JZCwgRGF0dW0gdmFsKQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5k ZXggYWE5YjM2MWZhMzEuLmZhOWRiOGZkNjg3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAg LTI2NSw2ICsyNjUsNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfWE1MRVhQUiwK IAlFRU9QX0pTT05fQ09OU1RSVUNUT1IsCiAJRUVPUF9JU19KU09OLAorCUVFT1BfU0FGRVRZUEVf Q0FTVCwKIAlFRU9QX0pTT05FWFBSX1BBVEgsCiAJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiwKIAlF RU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSCwKQEAgLTc1MCw2ICs3NTEsMTIgQEAgdHlwZWRl ZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJCQlKc29uSXNQcmVkaWNhdGUgKnByZWQ7CS8qIG9yaWdp bmFsIGV4cHJlc3Npb24gbm9kZSAqLwogCQl9CQkJaXNfanNvbjsKIAorCQkvKiBmb3IgRUVPUF9T QUZFVFlQRV9DQVNUICovCisJCXN0cnVjdAorCQl7CisJCQlzdHJ1Y3QgU2FmZVR5cGVDYXN0U3Rh dGUgKnN0Y3N0YXRlOworCQl9CQkJc3RjZXhwcjsKKwogCQkvKiBmb3IgRUVPUF9KU09ORVhQUl9Q QVRIICovCiAJCXN0cnVjdAogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mbWdyLmggYi9z cmMvaW5jbHVkZS9mbWdyLmgKaW5kZXggMTBkMDJiZGI3OWYuLjhlM2U1MWRjMjI4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9mbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvZm1nci5oCkBAIC03NTIs NiArNzUyLDkgQEAgZXh0ZXJuIGJvb2wgRGlyZWN0SW5wdXRGdW5jdGlvbkNhbGxTYWZlKFBHRnVu Y3Rpb24gZnVuYywgY2hhciAqc3RyLAogCQkJCQkJCQkJCURhdHVtICpyZXN1bHQpOwogZXh0ZXJu IERhdHVtIE9pZElucHV0RnVuY3Rpb25DYWxsKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsCiAJ CQkJCQkJCSAgT2lkIHR5cGlvcGFyYW0sIGludDMyIHR5cG1vZCk7CitleHRlcm4gYm9vbCBPaWRJ bnB1dEZ1bmN0aW9uQ2FsbFNhZmUoT2lkIGZ1bmN0aW9uSWQsIGNoYXIgKnN0ciwgT2lkIHR5cGlv cGFyYW0sCisJCQkJCQkJCQkgaW50MzIgdHlwbW9kLCBOb2RlICplc2NvbnRleHQsCisJCQkJCQkJ CQkgRGF0dW0gKnJlc3VsdCk7CiBleHRlcm4gY2hhciAqT3V0cHV0RnVuY3Rpb25DYWxsKEZtZ3JJ bmZvICpmbGluZm8sIERhdHVtIHZhbCk7CiBleHRlcm4gY2hhciAqT2lkT3V0cHV0RnVuY3Rpb25D YWxsKE9pZCBmdW5jdGlvbklkLCBEYXR1bSB2YWwpOwogZXh0ZXJuIERhdHVtIFJlY2VpdmVGdW5j dGlvbkNhbGwoRm1nckluZm8gKmZsaW5mbywgU3RyaW5nSW5mbyBidWYsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCmluZGV4IDA5MGNmY2NmNjVmLi43NjI2ZGMwNzJiYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK QEAgLTEwOTMsNiArMTA5MywyNyBAQCB0eXBlZGVmIHN0cnVjdCBEb21haW5Db25zdHJhaW50U3Rh dGUKIAlFeHByU3RhdGUgICpjaGVja19leHByc3RhdGU7CS8qIGNoZWNrX2V4cHIncyBldmFsIHN0 YXRlLCBvciBOVUxMICovCiB9IERvbWFpbkNvbnN0cmFpbnRTdGF0ZTsKIAordHlwZWRlZiBzdHJ1 Y3QgU2FmZVR5cGVDYXN0U3RhdGUKK3sKKwlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByOworCisJ LyoKKwkgKiBBZGRyZXNzIHRvIGp1bXAgdG8gd2hlbiBza2lwcGluZyBhbGwgdGhlIHN0ZXBzIHRv IGV2YWx1YXRlIHRoZSBkZWZhdWx0CisJICogZXhwcmVzc2lvbi4KKwkgKi8KKwlpbnQJCQlqdW1w X2VuZDsKKworCS8qCisJICogRm9yIGVycm9yLXNhZmUgZXZhbHVhdGlvbiBvZiBjb2VyY2lvbnMu IEEgcG9pbnRlciB0byB0aGlzIGlzIHBhc3NlZCB0bworCSAqIEV4ZWNJbml0RXhwclJlYygpIHdo ZW4gaW5pdGlhbGl6aW5nIHRoZSBjb2VyY2lvbiBleHByZXNzaW9ucywgc2VlCisJICogRXhlY0lu aXRTYWZlVHlwZUNhc3RFeHByLgorCSAqCisJICogUmVzZXQgZm9yIGVhY2ggZXZhbHVhdGlvbiBv ZiBFRU9QX1NBRkVUWVBFX0NBU1QuCisJICovCisJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQ7 CisKK30gU2FmZVR5cGVDYXN0U3RhdGU7CisKIC8qCiAgKiBTdGF0ZSBmb3IgSnNvbkV4cHIgZXZh bHVhdGlvbiwgdG9vIGJpZyB0byBpbmxpbmUuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4 IDkxMzc3YTZjZGUzLi4zMDE4MjM0Y2MwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDAw LDYgKzQwMCw3IEBAIHR5cGVkZWYgc3RydWN0IFR5cGVDYXN0CiAJTm9kZVRhZwkJdHlwZTsKIAlO b2RlCSAgICphcmc7CQkJLyogdGhlIGV4cHJlc3Npb24gYmVpbmcgY2FzdGVkICovCiAJVHlwZU5h bWUgICAqdHlwZU5hbWU7CQkvKiB0aGUgdGFyZ2V0IHR5cGUgKi8KKwlOb2RlCSAgICpkZWZleHBy OwkJLyogREVGQVVMVCBleHByZXNzaW9uICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tl biBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBUeXBlQ2FzdDsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAppbmRleCA2ZGZjOTQ2YzIwYi4uN2U2ZjdiMDY5OTIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCkBAIC03NzAsNiArNzcwLDM4IEBAIHR5cGVkZWYgZW51bSBDb2VyY2lvbkZvcm0KIAlDT0VS Q0VfU1FMX1NZTlRBWCwJCQkvKiBkaXNwbGF5IHdpdGggU1FMLW1hbmRhdGVkIHNwZWNpYWwgc3lu dGF4ICovCiB9IENvZXJjaW9uRm9ybTsKIAorLyoKKyAqIFNhZmVUeXBlQ2FzdEV4cHIgLQorICoJ CVRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mCisgKiAJCUNBU1QoZXhwciBBUyB0eXBlbmFt ZSBERUZBVUxUIGV4cHIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAqLwordHlwZWRlZiBzdHJ1Y3Qg U2FmZVR5cGVDYXN0RXhwcgoreworCUV4cHIJCXhwcjsKKworCS8qCisJICogVGhlIHBhcnNlZCBh bmQgdHJhbnNmb3JtZWQgc291cmNlIGV4cHJlc3Npb24uCisJICoKKwkgKiBUaGlzIGlzIHVzZWQg Zm9yIGRlcGFyc2luZyBvbmx5LiBJbiBjYXNlcyBsaWtlOiBgYENBU1QoMSBBUyBkYXRlCisJICog REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpYGAgd2hlcmUgdGhlIGNhc3RleHByIGV2 YWx1YXRlcyB0bworCSAqIE5VTEwsIHdlIG5lZWQgdGhpcyBmaWVsZCB0byByZWNvbnN0cnVjdCB0 aGUgb3JpZ2luYWwgcXVlcnkuCisJICovCisJRXhwcgkgICAqc291cmNlOworCisJLyogdHJhbnNm b3JtZWQgY2FzdCBleHByZXNzaW9uLCBOVUxMIG1lYW5zIGNhbm5vdCBjb2VyY2UgdG8gdGFyZ2V0 IHR5cGUgKi8KKwlFeHByCSAgICpjYXN0ZXhwciBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CisJLyogRmFsbC1iYWNrIHRvIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gaWYgY2FzdCBl dmFsdWF0aW9uIGZhaWxzICovCisJRXhwcgkgICAqZGVmZXhwcjsKKwkvKiB0YXJnZXQgdHlwZSBP aWQgKi8KKwlPaWQJCQlyZXN1bHR0eXBlOworCS8qIHRhcmdldCB0eXBlIG1vZGlmaWVyICovCisJ aW50MzIJCXJlc3VsdHR5cG1vZDsKKwkvKiBPSUQgb2YgY29sbGF0aW9uLCBvciBJbnZhbGlkT2lk IGlmIG5vbmUgKi8KKwlPaWQJCQlyZXN1bHRjb2xsaWQ7CisJLyogdG9rZW4gbG9jYXRpb24sIG9y IC0xIGlmIHVua25vd24gKi8KKwlQYXJzZUxvYwlsb2NhdGlvbjsKK30gU2FmZVR5cGVDYXN0RXhw cjsKKwogLyoKICAqIEZ1bmNFeHByIC0gZXhwcmVzc2lvbiBub2RlIGZvciBhIGZ1bmN0aW9uIGNh bGwKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKaW5kZXggZThiNDA5YWZiN2YuLmI2ODZi ZTA0OWI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCkBAIC0xNTEsNyArMTUxLDcgQEAg ZXh0ZXJuIHZvaWQgY29udmVydF9zYW9wX3RvX2hhc2hlZF9zYW9wKE5vZGUgKm5vZGUpOwogZXh0 ZXJuIE5vZGUgKmVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUpOwogCiBleHRlcm4gRXhwciAqZXZhbHVhdGVfZXhwcihFeHByICpleHByLCBPaWQg cmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCi0JCQkJCQkgICBPaWQgcmVzdWx0X2Nv bGxhdGlvbik7CisJCQkJCQkgICBPaWQgcmVzdWx0X2NvbGxhdGlvbiwgTm9kZSAqZXNjb250ZXh0 KTsKIAogZXh0ZXJuIGJvb2wgdmFyX2lzX25vbm51bGxhYmxlKFBsYW5uZXJJbmZvICpyb290LCBW YXIgKnZhciwKIAkJCQkJCQkgICBOb3ROdWxsU291cmNlIHNvdXJjZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfY29lcmNlLmgKaW5kZXggYWFiYWNkNDliNjUuLjEyNjQ0ZjE0NmJmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX2NvZXJjZS5oCkBAIC00MywxNSArNDMsMjkgQEAgZXh0ZXJuIE5vZGUgKmNvZXJjZV90 b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCSAgIENvZXJjaW9uQ29u dGV4dCBjY29udGV4dCwKIAkJCQkJCQkJICAgQ29lcmNpb25Gb3JtIGNmb3JtYXQsCiAJCQkJCQkJ CSAgIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29lcmNlX3RvX3RhcmdldF90eXBlX2V4 dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkJTm9kZSAqZXhwciwKKwkJCQkJ CQkJCQkJT2lkIGV4cHJ0eXBlLAorCQkJCQkJCQkJCQlPaWQgdGFyZ2V0dHlwZSwKKwkJCQkJCQkJ CQkJaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsCisJCQkJCQkJCQkJCUNvZXJjaW9uRm9ybSBjZm9ybWF0LAorCQkJCQkJCQkJCQlpbnQgbG9j YXRpb24sCisJCQkJCQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gYm9vbCBjYW5fY29l cmNlX3R5cGUoaW50IG5hcmdzLCBjb25zdCBPaWQgKmlucHV0X3R5cGVpZHMsIGNvbnN0IE9pZCAq dGFyZ2V0X3R5cGVpZHMsCiAJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0KTsKIGV4dGVy biBOb2RlICpjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJ CQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9k LAogCQkJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQs IGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29lcmNlX3R5cGVfZXh0ZW5kZWQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAorCQkJCQkJCQkgIE9pZCBpbnB1dFR5cGVJZCwgT2lk IHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJICBDb2VyY2lvbkNv bnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJ CQkJCSAgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBOb2RlICpjb2VyY2VfdG9fZG9tYWluKE5v ZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9kLAogCQkJCQkJCSAgT2lk IHR5cGVJZCwKIAkJCQkJCQkgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3Jt IGNmb3JtYXQsIGludCBsb2NhdGlvbiwKLQkJCQkJCQkgIGJvb2wgaGlkZUlucHV0Q29lcmNpb24p OworCQkJCQkJCSAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkJCQkgIE5vZGUgKmVzY29u dGV4dCk7CiAKIGV4dGVybiBOb2RlICpjb2VyY2VfdG9fYm9vbGVhbihQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqY29uc3RydWN0TmFtZSk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmN2Y0YmE2YzJhOC4uNDcyNTY3Njk2ZDAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjgsNiArNjgsOCBAQCB0eXBlZGVmIGVudW0gUGFyc2VF eHByS2luZAogCUVYUFJfS0lORF9WQUxVRVNfU0lOR0xFLAkvKiBzaW5nbGUtcm93IFZBTFVFUyAo aW4gSU5TRVJUIG9ubHkpICovCiAJRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQsIC8qIENIRUNL IGNvbnN0cmFpbnQgZm9yIGEgdGFibGUgKi8KIAlFWFBSX0tJTkRfRE9NQUlOX0NIRUNLLAkJLyog Q0hFQ0sgY29uc3RyYWludCBmb3IgYSBkb21haW4gKi8KKwlFWFBSX0tJTkRfQ0FTVF9ERUZBVUxU LAkJLyogZGVmYXVsdCBleHByZXNzaW9uIGluIENBU1QgREVGQVVMVCBPTgorCQkJCQkJCQkgKiBD T05WRVJTSU9OIEVSUk9SICovCiAJRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxULAkvKiBkZWZhdWx0 IHZhbHVlIGZvciBhIHRhYmxlIGNvbHVtbiAqLwogCUVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxU LCAvKiBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmb3IgZnVuY3Rpb24gKi8KIAlFWFBSX0tJTkRf SU5ERVhfRVhQUkVTU0lPTiwgLyogaW5kZXggZXhwcmVzc2lvbiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90 eXBlLmgKaW5kZXggYTMzNTgwN2IwYjAuLmUzMDNhMTA3M2MxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90 eXBlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZXh0ZXJuIGNoYXIgKnR5cGVUeXBlTmFtZShUeXBlIHQp OwogZXh0ZXJuIE9pZAl0eXBlVHlwZVJlbGlkKFR5cGUgdHlwKTsKIGV4dGVybiBPaWQJdHlwZVR5 cGVDb2xsYXRpb24oVHlwZSB0eXApOwogZXh0ZXJuIERhdHVtIHN0cmluZ1R5cGVEYXR1bShUeXBl IHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCk7CitleHRlcm4gYm9vbCBzdHJpbmdU eXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kLAorCQkJ CQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1bHQpOwogCiBleHRlcm4gT2lkCXR5cGVp ZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBleHRlcm4gT2lkCXR5cGVPckRvbWFpblR5cGVSZWxp ZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nh c3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2JiN2MwMmY0MDkKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0CkBAIC0wLDAgKzEsMTE3MiBAQAor U0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQgbGNfbW9uZXRhcnkgVE8gIkMiOworLS0g Q0FTVCBERUZBVUxUIE9OIENPTlZFUlNJT04gRVJST1IKK1NFTEVDVCBDQVNUKEInMDEnIEFTIGRh dGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIENBU1QoQklUJzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKFRSVUUgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0 ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxLjEgQVMgZGF0ZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTExMSBBUyAiY2hh ciIgREVGQVVMVCAnQScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY2hhciAKKy0tLS0tLQorIEEK KygxIHJvdykKKworU0VMRUNUIENBU1QoJ2RlZic6OnRleHQgQVMgaW50ZWdlciBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykK KworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyB0ZXh0IAorLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gnIEFTIHRleHQgREVGQVVMVCAnZmFsbGJhY2snIE9O IENPTlZFUlNJT04gRVJST1IpOworIHRleHQgCistLS0tLS0KKyAxaAorKDEgcm93KQorCitTRUxF Q1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAnaCcpIEFTIGludCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29uY2F0IAorLS0tLS0tLS0KKyAgICAgICAKKygxIHJv dykKKworU0VMRUNUIENBU1QoNjU1MzYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgaW50MiAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1Qo aW50OCg2NTUzNikgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50OCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworLS0gc291cmNlIGV4cHJlc3Npb24gaXMg YSB1bmtub3duIGNvbnN0CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9O IENPTlZFUlNJT04gRVJST1IpKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50 YXggZm9yIHR5cGUgaW50ZWdlcjogImVycm9yIgorTElORSAxOiBWQUxVRVMgKENBU1QoJ2Vycm9y JyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyAgICAgICAgICAgICAg ICAgICAgIF4KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0tLS0tCisgICAgICAgIAorKDEg cm93KQorCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIERFRkFVTFQgNDIgT04gQ09O VkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyAgICAgIDQyCisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAxOCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBpbnQ0IAorLS0tLS0tCisgICAxOAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnYScgYXMg aW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6 ICBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhw cmVzc2lvbnMKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIENP TlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICB3aW5kb3cgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMKK0xJTkUgMTogU0VMRUNUIENB U1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09OVkVSU0lPTiBFLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYScg YXMgaW50IERFRkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJy b3IKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lv bgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgKFNFTEVDVCBOVUxMKSBP TiBDT05WRVJTSU9OIEUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09OVkVSU0lPTiBFUlJP Uik7IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVn ZXI6ICJiIgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgJ2InIE9OIENP TlZFUlNJT04gRVJST1IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIENBU1QoJ2EnOjppbnQgYXMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUg aW50ZWdlcjogImEiCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUi4uLgorICAgICAgICAgICAgICAgICAgICBeCistLSB0 aGUgZGVmYXVsdCBleHByZXNzaW9u4oCZcyBjb2xsYXRpb24gc2hvdWxkIG1hdGNoIHRhcmdldCB0 eXBlIGNvbGxhdGlvbgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgdGV4dCBERUZBVUxUICcxJyBD T0xMQVRFICJDIiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitFUlJPUjogIGNvbGxhdGlvbiBvZiBD QVNUIERFRkFVTFQgZXhwcmVzc2lvbiBjb25mbGljdHMgd2l0aCB0YXJnZXQgdHlwZSBjb2xsYXRp b24KK0xJTkUgMTogVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgdGV4dCBERUZBVUxUICcxJyBDT0xM QVRFICJDIiBPTiBDT05WLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICAiQyIgdmVyc3VzICJkZWZhdWx0IgorVkFMVUVTIChDQVNUKCdl cnJvcicgQVMgaW50MnZlY3RvciBERUZBVUxUICcxIDMnICBPTiBDT05WRVJTSU9OIEVSUk9SKSk7 CisgY29sdW1uMSAKKy0tLS0tLS0tLQorIDEgMworKDEgcm93KQorCitWQUxVRVMgKENBU1QoJ2Vy cm9yJyBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEgM30nICBPTiBDT05WRVJTSU9OIEVSUk9S KSk7CisgY29sdW1uMSAKKy0tLS0tLS0tLQorIHsiMSAzIn0KKygxIHJvdykKKworLS0gc291cmNl IGV4cHJlc3Npb24gY29udGFpbiBzdWJxdWVyeQorU0VMRUNUIENBU1QoKFNFTEVDVCBiIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEpLCAoVkFMVUVTKCdIJykpIHMoYikpCisgICAgICAgICAgICBB UyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEgM30nICBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAg ICBiICAgIAorLS0tLS0tLS0tCisgeyIxIDMifQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgoU0VM RUNUIEFSUkFZKChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyKSBnLCAoVkFMVUVT KCdIJykpIHMoYikpKSkKKyAgICAgICAgICAgIEFTIElOVFtdCisgICAgICAgICAgICBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cp CisKK0NSRUFURSBGVU5DVElPTiByZXRfaW50OCgpIFJFVFVSTlMgQklHSU5UIEFTCiskJAorQkVH SU4gUkVUVVJOIDIxNDc0ODM2NDg7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJM RTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJ T04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBpbnRlZ2VyIG91dCBvZiByYW5nZQorU0VMRUNU IENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1Ip OyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY29lcmNlIENBU1QgREVGQVVMVCBleHByZXNzaW9u IHRvIHR5cGUgZGF0ZQorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgZGF0ZSBERUZBVUxUIHJl dF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBERUZBVUxUIGV4cHJlc3Npb24gY2Fubm90IGJlIHNldC1yZXR1 cm5pbmcKK0NSRUFURSBGVU5DVElPTiByZXRfc2V0aW50KCkgUkVUVVJOUyBTRVRPRiBpbnRlZ2Vy IEFTCiskJAorQkVHSU4gUkVUVVJOIFFVRVJZIEVYRUNVVEUgJ3NlbGVjdCAxIHVuaW9uIGFsbCBz ZWxlY3QgMSc7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRTsKK0NSRUFURSBU QUJMRSB0Y2FzdDAoYSBJTlQsIGIgaW50KTsKK0lOU0VSVCBJTlRPIHRjYXN0MCBWQUxVRVMoMSwy KSwgKDY1NTM2LDMpOworU0VUIGppdF9hYm92ZV9jb3N0ID0gMDsKK1NFTEVDVCBDQVNUKGEgQVMg aW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDA7CisgYSAK Ky0tLQorIDEKKyAgCisoMiByb3dzKQorCitTRVQgaml0X2Fib3ZlX2Nvc3QgVE8gREVGQVVMVDsK K1NFTEVDVCBDQVNUKGEgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg RlJPTSB0Y2FzdDA7CisgYSAKKy0tLQorIDEKKyAgCisoMiByb3dzKQorCitTRUxFQ1QgQ0FTVChS T1coMSwyKSBBUyB0Y2FzdDAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00g dGNhc3QwIGFzIHQ7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgcmVjb3JkIHRvIHRjYXN0MCB3 aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitM SU5FIDE6IFNFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUi4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBj YXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCitEUk9QIFRB QkxFIHRjYXN0MDsKK1NFTEVDVCBDQVNUKDEyLjExMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlOworIHRvX251bWVy aWNfc2NhbGUgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMi4xCisoMSByb3cp CisKK0NSRUFURSBUQUJMRSB0Y2FzdChhIHRleHRbXSwgYiBpbnQgR0VORVJBVEVEIEJZIERFRkFV TFQgQVMgSURFTlRJVFkpOworSU5TRVJUIElOVE8gdGNhc3QgVkFMVUVTICgnezEyfScpLCAoJ3sx LGEsIGJ9JyksICgne3sxLDJ9LCB7YyxkfX0nKSwgKCd7MTN9Jyk7CitTRUxFQ1QgQ0FTVCgnYScg YXMgaW50IERFRkFVTFQgcmV0X3NldGludCgpIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNh c3Q7IC0tIGVycm9yCitFUlJPUjogIHNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxs b3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2En IGFzIGludCBERUZBVUxUIHJldF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCh0IEFTIHRleHRb XSBERUZBVUxUICd7MjEsMjIsICcgfHwgYiB8fCAnfScgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJP TSB0Y2FzdCBhcyB0OworICAgICB0ICAgICAKKy0tLS0tLS0tLS0tCisgezIxLDIyLDF9CisgezIx LDIyLDJ9CisgezIxLDIyLDN9CisgezIxLDIyLDR9CisoNCByb3dzKQorCitTRUxFQ1QgQ0FTVCh0 LmEgQVMgaW50W10gREVGQVVMVCAnezIxLDIyfSc6OmludFtdIHx8IGIgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSB0Y2FzdCBhcyB0OworICAgICBhICAgICAKKy0tLS0tLS0tLS0tCisgezEyfQor IHsyMSwyMiwyfQorIHsyMSwyMiwzfQorIHsxM30KKyg0IHJvd3MpCisKKy0tIFRlc3QgbmVzdGVk IHR5cGUgY2FzdHM7IGFsbCBleHByZXNzaW9ucyB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhbiBlcnJv ci1zYWZlIG1hbm5lcgorQ1JFQVRFIERPTUFJTiBkX25vdGEgQVMgdGV4dCBDSEVDSyAoVkFMVUUg PD4gJ2EnKTsKK0NSRUFURSBUQUJMRSB0Y2FzdDEoYSB0ZXh0LCBiIHRleHRbXSwgYyBpbnQsIGQg aW50OCwgZSBpbnQ4W10pOworSU5TRVJUIElOVE8gdGNhc3QxKGEsIGIsIGQsIGUpIHZhbHVlcygn YScsICd7YX0nLCAyMTQ3NDgzNjQ4LCAnezIxNDc0ODM2NDh9Jyk7CitTRUxFQ1QgQ0FTVCAoQ0FT VChhIEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJP TSB0Y2FzdDE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScg QVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRj YXN0MTsgIC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGlu dGVnZXI6ICJhIgorTElORSAxOiBTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgaW50KSBBUyB0ZXh0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgor U0VMRUNUIENBU1QgKENBU1QoJ2EnOjp0ZXh0IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7IC0tIG9rCisgdGV4dCAKKy0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGRfbm90YSkgQVMgdGV4dCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgYSAKKy0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgZF9ub3RhKSBBUyB0ZXh0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyB0ZXh0IAorLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKGQgQVMgaW50KSBBUyB0ZXh0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBkIAorLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKCcyMTQ3NDgzNjQ4Jzo6aW50OCBBUyBpbnQpIEFT IHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIHRl eHQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoJ3thfSc6OnRleHRb XSBBUyBpbnRbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBG Uk9NIHRjYXN0MTsKKyB0ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChD QVNUKGIgQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgRlJPTSB0Y2FzdDE7CisgYiAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FT VChiIEFTIGRfbm90YVtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIEZST00gdGNhc3QxOworIGIgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENB U1QoZSBBUyBpbnRbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKKyBlIAorLS0tCisgCisoMSByb3cpCisKKy0tIHRlc3QgbmVzdGVkIEFy cmF5Q29lcmNlRXhwciBjb25zdGFudCBmb2xkaW5nCitTRUxFQ1QgQ0FTVCgne2F9Jzo6dGV4dFtd IEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsK KyBpbnQ0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKENBU1QoJ3thfSc6OnRl eHRbXSBBUyBkYXRlW10pIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKKyBpbnQ0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCgneycgfHwgc3VtKDEgKyAyKSB8fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CisgaW50NCAK Ky0tLS0tLQorIHs2fQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsgMikg T1ZFUiAoKSB8fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgRlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CisgaW50NCAKKy0tLS0tLQorIHs2 fQorIHs2fQorKDIgcm93cykKKworLS0gdGVzdCB3aXRoIHVzZXItZGVmaW5lZCB0eXBlLCBkb21h aW4sIGFycmF5IG92ZXIgZG9tYWluLCBkb21haW4gb3ZlciBhcnJheQorQ1JFQVRFIERPTUFJTiBk X2ludDQyIGFzIGludCBjaGVjayAodmFsdWUgPSA0MikgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlO IGRfaW50NDJhcnIgYXMgZF9pbnQ0MltdOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyMSBhcyBk X2ludDQyYXJyOworQ1JFQVRFIERPTUFJTiBkX2ludDggYXMgaW50OCBjaGVjayAodmFsdWUgPiAw KTsKK0NSRUFURSBET01BSU4gZF9pbnQ4YXJyIGFzIGRfaW50OFtdOworQ1JFQVRFIERPTUFJTiBk X2NoYXIzX25vdF9udWxsIGFzIGNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfdmFy Y2hhciBhcyB2YXJjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludF9hcnIgYXMg aW50W10gY2hlY2sgKHZhbHVlID0gJ3s0MSwgNDN9JykgTk9UIE5VTEw7CitDUkVBVEUgVFlQRSBj b21wX2RvbWFpbl93aXRoX3R5cG1vZCBBUyAoYSBkX2NoYXIzX25vdF9udWxsLCBiIGludCk7CitD UkVBVEUgVFlQRSBjb21wMiBBUyAoYSBkX3ZhcmNoYXIpOworQ1JFQVRFIERPTUFJTiBkX251bWVy aWMgYXMgbnVtZXJpYyg0LDQpOworU0VMRUNUIENBU1QoMS4wOjpmbG9hdDQgQVMgZF9udW1lcmlj IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkX251bWVyaWMgCistLS0tLS0t LS0tLQorICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnezEuMH0nIEFTIG51bWVy aWMoNCwxKVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1lcmljIAor LS0tLS0tLS0tCisgezEuMH0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3swLjEsIDEuMH0nIEFT IGRfbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkX251bWVy aWMgCistLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQy IERFRkFVTFQgNDEgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVl IGZvciBkb21haW4gZF9pbnQ0MiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJkX2ludDQyX2No ZWNrIgorU0VMRUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgZG9tYWluIGRfaW50NDIgZG9lcyBub3QgYWxs b3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBkX2ludDQyIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93 KQorCitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyBkX2ludDQyIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93KQorCitTRUxF Q1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OCBERUZBVUxUICcxJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OFtdIERFRkFVTFQgJ3sx fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgezQyfQorKDEgcm93 KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFyciBERUZB VUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIHs0Mn0K KygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhh cnJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludDQyW10gREVG QVVMVCAnezQyLCA0Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBhcnJheSAgCistLS0tLS0t LS0KKyB7NDIsNDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2lu dF9hcnIgREVGQVVMVCAnezQxLCA0M30nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBhcnJheSAg CistLS0tLS0tLS0KKyB7NDEsNDN9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLCA0 MV06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFyciBERUZBVUxUICd7MSwyLDN9JyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezEsMiwzfQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVChBUlJBWVs0MiwgNDFdIEFTIGRfaW50NDJhcnIxIERFRkFVTFQgJ3s0MiwgNDJ9 JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezQyLDQyfQor KDEgcm93KQorCitTRUxFQ1QKKyAgICBDQVNUKENBU1QoQVJSQVlbQ0FTVChBUlJBWVs0MiwgNDJd IEFTIGRfaW50NDJhcnIpXSBBUyBkX2ludDQyYXJyMVtdKSBBUyBkX2ludDhhcnJbXSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgYXJyYXkgICAgCistLS0tLS0tLS0tLS0t CisgeyJ7NDIsNDJ9In0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIg REVGQVVMVCAnKDEyMzIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAg dmFsdWUgdG9vIGxvbmcgZm9yIHR5cGUgY2hhcmFjdGVyIHZhcnlpbmcoMykKK0xJTkUgMTogU0VM RUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMzIpJyBPTiBDT05WRVJTSU9O Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VM RUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMyknIE9OIENPTlZFUlNJT04g RVJST1IpOworIGNvbXAyIAorLS0tLS0tLQorICgxMjMpCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCcoLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21w X2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMSwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgY29tcF9kb21haW5fd2l0aF90eXBtb2QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KCIxICAiLDIpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9t YWluX3dpdGhfdHlwbW9kIERFRkFVTFQgJygxMjM0LDIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsg LS0gZXJyb3IKK0VSUk9SOiAgdmFsdWUgdG9vIGxvbmcgZm9yIHR5cGUgY2hhcmFjdGVyKDMpCitM SU5FIDE6IC4uLlNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFV TFQgJygxMjM0LDIpJy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKFJPVyhOVUxMLDQyKSBBUyBjb21w X2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0t IGVycm9yCitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgcmVjb3JkIHRvIGNvbXBfZG9tYWluX3dp dGhfdHlwbW9kIHdpdGggREVGQVVMVCBleHByZXNzaW9uIGluIENBU1QgLi4uIE9OIENPTlZFUlNJ T04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoUk9XKE5VTEwsNDIpIEFTIGNvbXBfZG9tYWlu X3dpdGhfdHlwbW9kIERFRkFVTFQgLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDog IEV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBub3QgZXJyb3Igc2Fm ZS4KKy0tIHRlc3QgYXJyYXkgY29lcmNlCitTRUxFQ1QgQ0FTVChhcnJheVsnYSc6OnRleHRdIEFT IGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlbJ2EnXSBBUyBpbnRbXSBERUZBVUxU IEFSUkFZWzFdIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIHsxfQor KDEgcm93KQorCitTRUxFQ1QgQ0FTVChhcnJheVsxMS4xMl0gQVMgZGF0ZVtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIENBU1QoYXJyYXlbMTExMTExMTExMTExMTExMTFdIEFTIGludFtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIENBU1QoYXJyYXlbWydhYmMnXSxbNDU2XV0gQVMgaW50W10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCgnezEyMyxhYmMsNDU2fScgQVMgaW50W10gREVGQVVMVCAney03ODl9JyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyAgaW50NCAgCistLS0tLS0tLQorIHstNzg5fQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRbXSBBUyBpbnRlZ2VyW10gREVGQVVMVCAn ey0xMDExfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQgICAKKy0tLS0tLS0tLQorIHst MTAxMX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2En XV0gQVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5 IAorLS0tLS0tLQorIHsxLDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcy J10sIFsndGhyZWUnLCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezIxLDIyfQorKDEgcm93KQorCist LSBlcnJvcjogYHRocmVlJzo6aW50YCB3aWxsIGZhaWwgZWFybGllcgorU0VMRUNUIENBU1QoQVJS QVlbWycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezIx LDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4 IGZvciB0eXBlIGludGVnZXI6ICJ0aHJlZSIKK0xJTkUgMTogU0VMRUNUIENBU1QoQVJSQVlbWycx JywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVChBUlJBWVsxLCAndGhyZWUn OjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOwor RVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhyZWUiCitM SU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZWzEsICd0aHJlZSc6OmludF0gQVMgaW50W10gREVGQVVM VCAnezIxLDIyfS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWZlIGNh c3Qgd2l0aCBnZW9tZXRyeSBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKCcoMSwyKSc6OnBvaW50IEFT IGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAgICAgCist LS0tLS0tLS0tLS0tCisgKDEsMiksKDEsMikKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1soTmFO LDEpLChOYU4saW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4s SW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKDFlKzMwMCxJbmZpbml0eSksKDFl KzMwMCxJbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgICAgICAgcG9pbnQgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgKDFl KzMwMCxJbmZpbml0eSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1soMSwyKSwoMyw0KV0nOjpw YXRoIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHBvbHln b24gCistLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOYU4sMS4wLE5hTixp bmZpbml0eSknOjpib3ggQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4sSW5maW5pdHkpCiso MSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBsc2VnIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgbHNlZyAgICAgIAorLS0tLS0t LS0tLS0tLS0tCisgWygyLDIpLCgwLDApXQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKDIuMCwy LjAsMC4wLDAuMCknOjpib3ggQVMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgICAgICAgICAgcG9seWdvbiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICgoMCwwKSwoMCwyKSwoMiwyKSwoMiwwKSkKKygxIHJvdykKKworU0VMRUNUIENB U1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBhdGggREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworIHBhdGggCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1Qo JygyLjAsaW5maW5pdHksTmFOLGluZmluaXR5KSc6OmJveCBBUyBjaXJjbGUgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICBjaXJjbGUgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIDwoTmFOLEluZmluaXR5KSxOYU4+CisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCcoTmFOLDAuMCksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBwb2lu dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIHBvaW50ICAgICAgCist LS0tLS0tLS0tLS0tLS0tCisgKE5hTixJbmZpbml0eSkKKygxIHJvdykKKworU0VMRUNUIENBU1Qo JygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBwYXRoIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgcGF0aCAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKCgyLDApLCgyLDQpLCgwLDApKQorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnKDIuMCwwLjApLCgyLjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIGJveCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAgICAgCistLS0tLS0tLS0t LS0tCisgKDIsNCksKDAsMCkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOYU4saW5maW5pdHkp LCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24gQVMgY2lyY2xlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgY2lyY2xlICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyA8KE5hTixJbmZpbml0eSksTmFOPgorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnPCg1LDEpLDM+Jzo6Y2lyY2xlIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBwb2ludCAKKy0tLS0tLS0KKyAoNSwxKQorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgICAgIGJveCAgICAgCistLS0tLS0tLS0tLS0tCisgKDMsNSksKDMsNSkKKygx IHJvdykKKworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBwb2x5Z29uIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwb2x5Z29uIAorLS0tLS0tLS0tCisgCiso MSByb3cpCisKKy0tIHNhZmUgY2FzdCB3aXRoIG1vbmV5IGRhdGEgdHlwZQorLS0gY2FzdCBmcm9t IG1vbmV5IHRvIG90aGVyIHR5cGUgaXMgbm90IGVycm9yIHNhZmUKK1NFTEVDVCBDQVNUKCcxMjM0 NTY3ODkwMTIzNDU2NzgnOjpudW1lcmljIEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBtb25leSAKKy0tLS0tLS0KKyAgICAgIAorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6aW50OCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgbW9uZXkgCistLS0tLS0tCisgICAgICAKKygxIHJvdykKKwor U0VMRUNUIENBU1QoJzIxNDc0ODM2NDcnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICBtb25leSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyAkMiwxNDcsNDgzLDY0Ny4wMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnLTIxNDc0ODM2 NDgnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAg ICAgICBtb25leSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0kMiwxNDcsNDgzLDY0 OC4wMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnLTAnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBtb25leSAKKy0tLS0tLS0KKyAkMC4wMAorKDEg cm93KQorCitTRUxFQ1QgQ0FTVChOVUxMOjptb25leSBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBtb25leSB0byBu dW1lcmljIHdpdGggREVGQVVMVCBleHByZXNzaW9uIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04g RVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoTlVMTDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEV4 cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBub3QgZXJyb3Igc2FmZS4K K1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5W10gQVMgbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBtb25leVtdIHRvIG51 bWVyaWNbXSB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9O IEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6Om1vbmV5W10gQVMgbnVtZXJpY1tdIERF RkFVTFQgTlVMTCBPTiBDT05WRS4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBF eHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUu CistLSBzYWZlIGNhc3QgZnJvbSBib29sZWFuIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VM RUNUIENBU1QodHJ1ZSBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgQ0FT VChmYWxzZSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQg CistLS0tLS0KKyAgICAwCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGZhbHNlIEFTIHRleHQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHRleHQgIAorLS0tLS0tLQorIGZhbHNl CisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBmcm9tIGJ5dGVhIHR5cGUgdG8gb3RoZXIgZGF0YSB0 eXBlcworU0VMRUNUIENBU1QgKCdceDExMjIzMzQ0NTU2Njc3ODg5OSc6OmJ5dGVhIEFTIGludDgg REVGQVVMVCAxOSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ4IAorLS0tLS0tCisgICAxOQor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODlBJzo6Ynl0ZWEgQVMgaW50NCBERUZB VUxUIDIwIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDIwCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Nic6OmJ5dGVhIEFTIGludDIgREVGQVVMVCAyMSBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQyIAorLS0tLS0tCisgICAyMQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODkwYWJjZGVmJzo6Ynl0ZWEgQVMgdXVpZCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgdXVpZCAKKy0tLS0tLQorIAorKDEgcm93KQorCist LSBzYWZlIGNhc3QgZnJvbSB1dWlkIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENB U1QoJzViMzUzODBhLTcxNDMtNDkxMi05YjU1LWYzMjI2OTljNjc3MCc6OnV1aWQgQVMgYnl0ZWEg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgICAgICAgYnl0ZWEg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBc eDViMzUzODBhNzE0MzQ5MTI5YjU1ZjMyMjY5OWM2NzcwCisoMSByb3cpCisKKy0tIHNhZmUgY2Fz dCByZWxhdGVkIHRvIG5ldHdvcmsgYWRkcmVzcyBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKCcxOTIu MTY4LjEueCcgYXMgaW5ldCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW5l dCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMTkyLjE2OC4xLjIvMzAnIGFz IGNpZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGNpZHIgCistLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzIyOjAwOjVjOjA4OjU1OjA4OjAxOjAyJzo6bWFj YWRkcjggYXMgbWFjYWRkciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbWFj YWRkciAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBzYWZlIGNhc3QgZnJvbSBiaXQgdHlw ZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnMTExMTExMTExMTAwMDAxJzo6Yml0 KDEwMCkgQVMgSU5UIERFRkFVTFQgMjIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0t LS0tLQorICAgMjIKKygxIHJvdykKKworU0VMRUNUIENBU1QgKCcxMTExMTExMTExMDAwMDEnOjpi aXQoMTAwKSBBUyBJTlQ4IERFRkFVTFQgMjMgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50OCAK Ky0tLS0tLQorICAgMjMKKygxIHJvdykKKworLS0gc2FmZSBjYXN0IHJlbGF0ZWQgdG8gb2lkIGRh dGEgdHlwZQorU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6OmJpZ2ludCBBUyBvaWQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG9pZCAKKy0tLS0tCisgICAgCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQgQVMgcmVncHJvYyBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVncHJvYyAKKy0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50IEFTIHJlZ3Byb2NlZHVyZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVncHJvY2VkdXJlIAorLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6OmJpZ2ludCBBUyByZWdj bGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVnY2xhc3MgCistLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyBv aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgIG9pZCAgICAgCistLS0t LS0tLS0tLS0KKyAxMjM0NTY3ODkwCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTA6 OmJpZ2ludCBBUyByZWdyb2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAg cmVncm9sZSAgIAorLS0tLS0tLS0tLS0tCisgMTIzNDU2Nzg5MAorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVnbmFtZXNwYWNlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyByZWduYW1lc3BhY2UgCistLS0tLS0tLS0tLS0tLQorIDEyMzQ1 Njc4OTAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50IEFTIHJlZ2Rh dGFiYXNlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyByZWdkYXRhYmFzZSAK Ky0tLS0tLS0tLS0tLS0KKyAxMjM0NTY3ODkwCisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBmcm9t IHRleHQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnYS5iLmMuZCc6OnRl eHQgYXMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHJlZ2Ns YXNzIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2Fz dDAoY29sMCB0ZXh0LCBjb2wxIGpzb25iKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QwIFZB TFVFUyAoJzx2YWx1ZT5vbmU8L3ZhbHVlJywgJyJ0ZXN0IicpOworU0VMRUNUIGNvbDAgYXMgdGV4 dCwKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3JlZ2NsYXNzLAorICAgICAgIENBU1QoY29sMCBBUyByZWdjbGFzcyBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTlVMTCBhcyBleHBlY3RfdHJ1ZSwK KyAgICAgICBDQVNUKGNvbDAgQVMgImNoYXIiICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fY2hhciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbmFtZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbmFtZQorRlJPTSB0ZXN0X3NhZmVjYXN0MDsKKyAg ICAgICB0ZXh0ICAgICAgICB8IHRvX3JlZ2NsYXNzIHwgZXhwZWN0X3RydWUgfCB0b19jaGFyIHwg ICAgICB0b19uYW1lICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIDx2YWx1ZT5vbmU8L3Zh bHVlIHwgICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IDwgICAgICAgfCA8dmFsdWU+b25lPC92 YWx1ZQorKDEgcm93KQorCistLSBzYWZlIHR5cGUgY2FzdCBmb3IganNvbmIgZGF0YSB0eXBlCitT RUxFQ1QgY29sMSBhcyBqc29uYiwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50ZWdlciBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZWdlciwKKyAgICAgICBDQVNUKGNv bDEgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVt ZXJpYywKKyAgICAgICBDQVNUKGNvbDEgQVMgYmlnaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMSBBUyBmbG9hdDQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNv bDEgQVMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9h dDgsCisgICAgICAgQ0FTVChjb2wxIEFTIGJvb2xlYW4gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Jvb2wsCisgICAgICAgQ0FTVChjb2wxIEFTIHNtYWxsaW50IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19zbWFsbGludAorRlJPTSB0ZXN0X3Nh ZmVjYXN0MDsKKyBqc29uYiAgfCB0b19pbnRlZ2VyIHwgdG9fbnVtZXJpYyB8IHRvX2ludDggfCB0 b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19ib29sIHwgdG9fc21hbGxpbnQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorICJ0ZXN0IiB8ICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAg ICAgIAorKDEgcm93KQorCistLSB0ZXN0IENBU1QgREVGQVVMVCBleHByZXNzaW9uIG11dGFiaWxp dHkKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChj b2wxIGFzIGludCBERUZBVUxUIHJhbmRvbShtaW49PjEsIG1heD0+MSkgT04gQ09OVkVSU0lPTiBF UlJPUikpKTsgLS0gZXJyb3IKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24g bXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitMSU5FIDE6IENSRUFURSBJTkRFWCBjYXN0X2Vycm9y X2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wxIGFzIC4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIElOREVYIGNh c3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QwKChDQVNUKGNvbDEgYXMgeGlkIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLSBlcnJvcgorRVJST1I6ICBkYXRhIHR5cGUg eGlkIGhhcyBubyBkZWZhdWx0IG9wZXJhdG9yIGNsYXNzIGZvciBhY2Nlc3MgbWV0aG9kICJidHJl ZSIKK0hJTlQ6ICBZb3UgbXVzdCBzcGVjaWZ5IGFuIG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgaW5k ZXggb3IgZGVmaW5lIGEgZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGRhdGEgdHlwZS4K K0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wx IGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gb2sKK1NFTEVD VCBwZ19nZXRfaW5kZXhkZWYoJ2Nhc3RfZXJyb3JfaWR4Jzo6cmVnY2xhc3MpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf aW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIElOREVYIGNhc3RfZXJy b3JfaWR4IE9OIHB1YmxpYy50ZXN0X3NhZmVjYXN0MCBVU0lORyBidHJlZSAoKENBU1QoY29sMSBB UyBpbnRlZ2VyIERFRkFVTFQgTlVMTDo6aW50ZWdlciBPTiBDT05WRVJTSU9OIEVSUk9SKSkpCiso MSByb3cpCisKKy0tIHNhZmUgY2FzdCBiZXR3ZWVlbiByYW5nZSBkYXRhIHR5cGVzCitTRUxFQ1Qg Q0FTVCgnWzEsMl0nOjppbnQ0cmFuZ2UgQVMgaW50NG11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworIGludDRtdWx0aXJhbmdlIAorLS0tLS0tLS0tLS0tLS0tLQor IHtbMSwzKX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50OHJhbmdlIEFTIGlu dDhtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ4bXVs dGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMyl9CisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCdbMSwyXSc6Om51bXJhbmdlICBBUyBudW1tdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBudW1tdWx0aXJhbmdlIAorLS0tLS0tLS0tLS0tLS0tCisge1sx LDJdfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjpkYXRl cmFuZ2UgQVMgZGF0ZW11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworICAgICBkYXRlbXVsdGlyYW5nZSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7 Wy1pbmZpbml0eSxpbmZpbml0eV19CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5 LGluZmluaXR5XSc6OnRzcmFuZ2UgQVMgdHNtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyAgICAgIHRzbXVsdGlyYW5nZSAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisge1staW5maW5pdHksaW5maW5pdHldfQorKDEgcm93KQorCitTRUxFQ1QgQ0FT VCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3R6cmFuZ2UgQVMgdHN0em11bHRpcmFuZ2UgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICB0c3R6bXVsdGlyYW5nZSAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Wy1pbmZpbml0eSxpbmZpbml0eV19CisoMSBy b3cpCisKKy0tIHNhZmUgY2FzdCBiZXR3ZWVlbiBudW1lcmljIGRhdGEgdHlwZXMKK0NSRUFURSBU QUJMRSB0ZXN0X3NhZmVjYXN0MSgKKyAgY29sMSBmbG9hdDQsIGNvbDIgZmxvYXQ4LCBjb2wzIG51 bWVyaWMsIGNvbDQgbnVtZXJpY1tdLAorICBjb2w1IGludDIgZGVmYXVsdCAzMjc2NywKKyAgY29s NiBpbnQ0IGRlZmF1bHQgMzI3NjgsCisgIGNvbDcgaW50OCBkZWZhdWx0IDQyOTQ5NjcyOTYpOwor SU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCcxMS4xMjM0JywgJzExLjEyMzQnLCAn OTIyMzM3MjAzNjg1NDc3NTgwOCcsICd7MTEuMTIzNH0nOjpudW1lcmljW10pOworSU5TRVJUIElO VE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCdpbmYnLCAnaW5mJywgJ2luZicsICd7MTEuMTIzNCwg MTIsIGluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBW QUxVRVMoJy1pbmYnLCAnLWluZicsICctaW5mJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6 Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ05hTicsICdO YU4nLCAnTmFOJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitTRUxF Q1QgY29sNSBhcyBpbnQyLAorICAgICAgIENBU1QoY29sNSBBUyBpbnQyIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNSBBUyBpbnQ0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENB U1QoY29sNSBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29p ZCwKKyAgICAgICBDQVNUKGNvbDUgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxvYXQ0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w1IGFz IGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAor ICAgICAgIENBU1QoY29sNSBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNSBhcyBudW1lcmljKDEwLDEpIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9N IHRlc3Rfc2FmZWNhc3QxOworIGludDIgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0 b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNf c2NhbGUgCistLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAz Mjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8 ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAgICAzMjc2Ny4wCisgMzI3NjcgfCAgIDMy NzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3Njcg fCAgICAgIDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3 NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2 NyB8ICAgICAgICAgIDMyNzY3LjAKKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3 IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAg ICAzMjc2Ny4wCisoNCByb3dzKQorCitTRUxFQ1QgY29sNiBhcyBpbnQ0LAorICAgICAgIENBU1Qo Y29sNiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQy LAorICAgICAgIENBU1QoY29sNiBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNiBBUyBvaWQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDYgYXMgaW50OCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNU KGNvbDYgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19m bG9hdDQsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENB U1QoY29sNiBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworIGludDQgIHwgdG9f aW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4 IHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAzMjc2OCB8ICAgICAgICAgfCAgIDMyNzY4IHwgIDMy NzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAgMzI3NjggfCAgICAg ICAgICAzMjc2OC4wCisgMzI3NjggfCAgICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3 NjggfCAgICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3Njgu MAorIDMyNzY4IHwgICAgICAgICB8ICAgMzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMy NzY4IHwgICAgIDMyNzY4IHwgICAgICAzMjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8 ICAgICAgICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAz Mjc2OCB8ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2OC4wCisoNCByb3dzKQorCitTRUxFQ1Qg Y29sNyBhcyBpbnQ4LAorICAgICAgIENBU1QoY29sNyBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNyBBUyBpbnQ0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1Qo Y29sNyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwK KyAgICAgICBDQVNUKGNvbDcgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w3IGFzIGZs b2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAg ICAgIENBU1QoY29sNyBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNyBhcyBudW1lcmljKDEwLDEpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRl c3Rfc2FmZWNhc3QxOworICAgIGludDggICAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8 ICB0b19pbnQ4ICAgfCAgdG9fZmxvYXQ0ICB8IHRvX2Zsb2F0OCAgfCB0b19udW1lcmljIHwgdG9f bnVtZXJpY19zY2FsZSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgNDI5NDk2NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAg IHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAg ICAgICAgICAgICAgICAgCisgNDI5NDk2NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAg IHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAg ICAgICAgICAgICAgICAgCisgNDI5NDk2NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAg IHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAg ICAgICAgICAgICAgICAgCisgNDI5NDk2NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAg IHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAg ICAgICAgICAgICAgICAgCisoNCByb3dzKQorCitTRUxFQ1QgY29sMyBhcyBudW1lcmljLAorICAg ICAgIENBU1QoY29sMyBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMyBBUyBvaWQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDMg YXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAg ICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMyBhcyBu dW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAor ICAgICAgIENBU1QoY29sMyBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICAg ICAgIG51bWVyaWMgICAgICAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRvX2ludDgg fCAgdG9fZmxvYXQ0ICB8ICAgICAgdG9fZmxvYXQ4ICAgICAgIHwgICAgIHRvX251bWVyaWMgICAg ICB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyA5MjIzMzcy MDM2ODU0Nzc1ODA4IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgOS4y MjMzN2UrMTggfCA5LjIyMzM3MjAzNjg1NDc4ZSsxOCB8IDkyMjMzNzIwMzY4NTQ3NzU4MDggfCAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBJbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAg IHwgICAgICAgIHwgICAgICAgICB8ICAgIEluZmluaXR5IHwgICAgICAgICAgICAgSW5maW5pdHkg fCAgICAgICAgICAgIEluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAtSW5m aW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgIC1JbmZpbml0 eSB8ICAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAgICAgIC1JbmZpbml0eSB8ICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgTmFOIHwgICAgICAgICB8ICAgICAgICAgfCAgICAg ICAgfCAgICAgICAgIHwgICAgICAgICBOYU4gfCAgICAgICAgICAgICAgICAgIE5hTiB8ICAgICAg ICAgICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFOCisoNCByb3dzKQorCitTRUxFQ1QgY29s NCBhcyBudW1fYXJyLAorICAgICAgIENBU1QoY29sNCBBUyBpbnQyW10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIGludDJhcnIsCisgICAgICAgQ0FTVChjb2w0IEFTIGludDRb XSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgaW50NGFyciwKKyAgICAgICBD QVNUKGNvbDQgYXMgaW50OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBp bnQ4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBmbG9hdDRbXSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgZjRhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGZsb2F0OFtdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBmOGFyciwKKyAgICAgICBDQVNUKGNv bDQgYXMgbnVtZXJpYygxMCwxKVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBudW1hcnIKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgICAgICAgICAgbnVtX2FyciAgICAgICAg ICAgfCBpbnQyYXJyIHwgaW50NGFyciB8IGludDhhcnIgfCAgICAgICAgICAgZjRhcnIgICAgICAg ICAgICB8ICAgICAgICAgICBmOGFyciAgICAgICAgICAgIHwgbnVtYXJyIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0K KyB7MTEuMTIzNH0gICAgICAgICAgICAgICAgICB8IHsxMX0gICAgfCB7MTF9ICAgIHwgezExfSAg ICB8IHsxMS4xMjM0fSAgICAgICAgICAgICAgICAgIHwgezExLjEyMzR9ICAgICAgICAgICAgICAg ICAgfCB7MTEuMX0KKyB7MTEuMTIzNCwxMixJbmZpbml0eSxOYU59ICB8ICAgICAgICAgfCAgICAg ICAgIHwgICAgICAgICB8IHsxMS4xMjM0LDEyLEluZmluaXR5LE5hTn0gIHwgezExLjEyMzQsMTIs SW5maW5pdHksTmFOfSAgfCAKKyB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICAgICB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgezExLjEy MzQsMTIsLUluZmluaXR5LE5hTn0gfCAKKyB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwg ezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAKKyg0IHJvd3MpCisKK1NFTEVDVCBjb2wxIGFz IGZsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50NCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDEg QVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAg ICAgQ0FTVChjb2wxIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9hdDgg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBD QVNUKGNvbDEgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3Nh ZmVjYXN0MTsKKyAgZmxvYXQ0ICAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRvX2lu dDggfCB0b19mbG9hdDQgfCAgICB0b19mbG9hdDggICAgIHwgdG9fbnVtZXJpYyB8IHRvX251bWVy aWNfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgMTEuMTIzNCB8ICAgICAgMTEgfCAgICAgIDExIHwgICAgICAgIHwgICAg ICAxMSB8ICAgMTEuMTIzNCB8IDExLjEyMzM5OTczNDQ5NzEgfCAgICAxMS4xMjM0IHwgICAgICAg ICAgICAgMTEuMQorICBJbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAg ICAgICB8ICBJbmZpbml0eSB8ICAgICAgICAgSW5maW5pdHkgfCAgIEluZmluaXR5IHwgICAgICAg ICAgICAgICAgIAorIC1JbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAg ICAgICB8IC1JbmZpbml0eSB8ICAgICAgICAtSW5maW5pdHkgfCAgLUluZmluaXR5IHwgICAgICAg ICAgICAgICAgIAorICAgICAgIE5hTiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAg ICAgICB8ICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4gfCAgICAgICAgTmFOIHwgICAgICAg ICAgICAgIE5hTgorKDQgcm93cykKKworU0VMRUNUIGNvbDIgYXMgZmxvYXQ4LAorICAgICAgIENB U1QoY29sMiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQyLAorICAgICAgIENBU1QoY29sMiBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMiBBUyBvaWQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDIgYXMgaW50 OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBD QVNUKGNvbDIgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmlj IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAg IENBU1QoY29sMiBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICBmbG9hdDgg ICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRv X2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgMTEuMTIzNCB8ICAgICAgMTEg fCAgICAgIDExIHwgICAgICAgIHwgICAgICAxMSB8ICAgMTEuMTIzNCB8ICAgMTEuMTIzNCB8ICAg IDExLjEyMzQgfCAgICAgICAgICAgICAxMS4xCisgIEluZmluaXR5IHwgICAgICAgICB8ICAgICAg ICAgfCAgICAgICAgfCAgICAgICAgIHwgIEluZmluaXR5IHwgIEluZmluaXR5IHwgICBJbmZpbml0 eSB8ICAgICAgICAgICAgICAgICAKKyAtSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAg ICAgICB8ICAgICAgICAgfCAtSW5maW5pdHkgfCAtSW5maW5pdHkgfCAgLUluZmluaXR5IHwgICAg ICAgICAgICAgICAgIAorICAgICAgIE5hTiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwg ICAgICAgICB8ICAgICAgIE5hTiB8ICAgICAgIE5hTiB8ICAgICAgICBOYU4gfCAgICAgICAgICAg ICAgTmFOCisoNCByb3dzKQorCistLSBzYWZlIHR5cGUgY2FzdCBmb3IgdHlwZSBkYXRlL3RpbWVz dGFtcC90aW1lc3RhbXB0ei9pbnRlcnZhbAorQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QyKAor ICBjb2wwIGRhdGUsIGNvbDEgdGltZXN0YW1wLCBjb2wyIHRpbWVzdGFtcHR6LAorICBjb2wzIGlu dGVydmFsLCBjb2w0IHRpbWUsIGNvbDUgdGltZXR6KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNh c3QyIFZBTFVFUworKCctaW5maW5pdHknLCAnLWluZmluaXR5JywgJy1pbmZpbml0eScsICctaW5m aW5pdHknLAorICAnMjAwMy0wMy0wNyAxNTozNjozOSBBbWVyaWNhL05ld19Zb3JrJywgJzIwMDMt MDctMDcgMTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycpLAorKCctaW5maW5pdHknLCAnaW5maW5p dHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnMTE6NTk6NTkuOTkgUE0nLCAnMTE6NTk6NTku OTkgUE0gUERUJyk7CitTRUxFQ1QgY29sMCBhcyBkYXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0 aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0 YW1wdHosCisgICAgICAgQ0FTVChjb2wwIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWUgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sMCBB UyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwK KyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7Cisg ICBkYXRlICAgIHwgdG9fdGltZXN0YW1wdHogfCAgdG9fZGF0ZSAgfCB0b190aW1lcyB8IHRvX3Rp bWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLQor IC1pbmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwgICAgICAgICAgfCAgICAg ICAgICAgfCAtaW5maW5pdHkKKyAtaW5maW5pdHkgfCAtaW5maW5pdHkgICAgICB8IC1pbmZpbml0 eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5CisoMiByb3dzKQorCitTRUxFQ1Qg Y29sMSBhcyB0aW1lc3RhbXAsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcHR6IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBD QVNUKGNvbDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f ZGF0ZSwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWV0eiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29s MSBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKyB0aW1lc3RhbXAgfCB0b190 aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0 YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLWluZmluaXR5IHwgLWlu ZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAgICAgICB8IC1pbmZpbml0 eQorIGluZmluaXR5ICB8IGluZmluaXR5ICAgICAgIHwgaW5maW5pdHkgIHwgICAgICAgICAgfCAg ICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNvbDIgYXMgdGltZXN0YW1w dHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgZGF0 ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBD QVNUKGNvbDIgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXMsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMiBBUyB0aW1lc3RhbXAo MikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2Fs ZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKyB0aW1lc3RhbXB0eiB8IHRvX3RpbWVzdGFtcHR6IHwg IHRvX2RhdGUgIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2NhbGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSAgIHwgLWluZmluaXR5ICAg ICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmlu aXR5ICAgIHwgaW5maW5pdHkgICAgICAgfCBpbmZpbml0eSAgfCAgICAgICAgICB8ICAgICAgICAg ICB8IGluZmluaXR5CisoMiByb3dzKQorCitTRUxFQ1QgY29sMyBhcyBpbnRlcnZhbCwKKyAgICAg ICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMyBBUyBkYXRlIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMyBB UyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAg ICAgICBDQVNUKGNvbDMgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlLAorICAgICAg IENBU1QoY29sMyBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisgaW50ZXJ2YWwg IHwgdG9fdGltZXN0YW1wdHogfCB0b19kYXRlIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190 aW1lc3RhbXBfc2NhbGUgfCB0b19pbnRlcnZhbF9zY2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSB8ICAgICAgICAgICAgICAgIHwg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgLWlu ZmluaXR5CisgaW5maW5pdHkgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykKKwor U0VMRUNUIGNvbDQgYXMgdGltZSwKKyAgICAgICBDQVNUKGNvbDQgQVMgdGltZSgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2w0 IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTk9UIE5VTEwg YXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w0 IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKyAgICB0aW1lICAgICB8ICB0b190 aW1lcyAgIHwgdG9fdGltZXR6IHwgICAgICAgICAgdG9faW50ZXJ2YWwgICAgICAgICAgfCAgICAg ICB0b19pbnRlcnZhbF9zY2FsZSAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAxNTozNjozOSAgICB8IDE1OjM2OjM5ICAgIHwgdCAgICAgICAg IHwgQCAxNSBob3VycyAzNiBtaW5zIDM5IHNlY3MgICAgfCBAIDE1IGhvdXJzIDM2IG1pbnMgMzkg c2VjcworIDIzOjU5OjU5Ljk5IHwgMjM6NTk6NTkuOTkgfCB0ICAgICAgICAgfCBAIDIzIGhvdXJz IDU5IG1pbnMgNTkuOTkgc2VjcyB8IEAgMjMgaG91cnMgNTkgbWlucyA1OS45OSBzZWNzCisoMiBy b3dzKQorCitTRUxFQ1QgY29sNSBhcyB0aW1ldHosCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWUsCisgICAgICAgQ0FT VChjb2w1IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWVfc2NhbGUsCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1l dHooNikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0el9zY2Fs ZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50ZXJ2YWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZhbCgy KSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDI7CisgICAgIHRpbWV0eiAgICAgfCAgIHRvX3RpbWUgICB8IHRv X3RpbWVfc2NhbGUgfCAgIHRvX3RpbWV0eiAgICB8IHRvX3RpbWV0el9zY2FsZSB8IHRvX2ludGVy dmFsIHwgdG9faW50ZXJ2YWxfc2NhbGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgMTU6MzY6MzktMDQgICAgfCAxNTozNjozOSAg ICB8IDE1OjM2OjM5ICAgICAgfCAxNTozNjozOS0wNCAgICB8IDE1OjM2OjM5LTA0ICAgICB8ICAg ICAgICAgICAgIHwgCisgMjM6NTk6NTkuOTktMDcgfCAyMzo1OTo1OS45OSB8IDIzOjU5OjU5Ljk5 ICAgfCAyMzo1OTo1OS45OS0wNyB8IDIzOjU5OjU5Ljk5LTA3ICB8ICAgICAgICAgICAgIHwgCiso MiByb3dzKQorCistLSB0ZXN0IGRlcGFyc2UKK1NFVCBkYXRlc3R5bGUgVE8gSVNPLCBZTUQ7CitD UkVBVEUgVklFVyBzYWZlY2FzdHZpZXcgQVMKK1NFTEVDVCBDQVNUKCcxMjM0JyBhcyBjaGFyKDMp IERFRkFVTFQgLTExMTEgT04gQ09OVkVSU0lPTiBFUlJPUiksCisgICAgICAgQ0FTVCgxIGFzIGRh dGUgREVGQVVMVCAoKCcyMDI1LURlYy0wNic6OmRhdGUgKyByYW5kb20obWluPT4xLCBtYXg9PjE6 OmludCkpKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MCwKKyAgICAgICBDQVNUKEFSUkFZ W1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAgICBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsn dGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIGNhc3QyLAorICAgICAgIENBU1QoQVJSQVlbJ3RocmVlJ10gQVMgSU5UW10gREVGQVVMVCAn ezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QzOworXHN2IHNhZmVjYXN0dmlldwor Q1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuc2FmZWNhc3R2aWV3IEFTCisgU0VMRUNUIENB U1QoJzEyMzQnIEFTIGNoYXJhY3RlcigzKSBERUZBVUxUICctMTExMSc6OmludGVnZXI6OmNoYXJh Y3RlcigzKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBicGNoYXIsCisgICAgQ0FTVCgxIEFTIGRh dGUgREVGQVVMVCAnMjAyNS0xMi0wNic6OmRhdGUgKyByYW5kb20obWluID0+IDEsIG1heCA9PiAx KSBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MCwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWzFd LCBBUlJBWVsndGhyZWUnXSwgQVJSQVlbJ2EnXV0gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3sxLDJ9 Jzo6aW50ZWdlcltdIE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNhc3QxLAorICAgIENBU1QoQVJS QVlbQVJSQVlbJzEnLCAnMiddLCBBUlJBWVsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVM VCBOVUxMOjpkYXRlW10gT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDIsCisgICAgQ0FTVChB UlJBWVsndGhyZWUnXSBBUyBpbnRlZ2VyW10gREVGQVVMVCAnezEsMn0nOjppbnRlZ2VyW10gT04g Q09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDMKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3Owor IGJwY2hhciB8ICAgY2FzdDAgICAgfCBjYXN0MSB8IGNhc3QyIHwgY2FzdDMgCistLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAxMjMgICAgfCAyMDI1LTEyLTA3 IHwgezEsMn0gfCAgICAgICB8IHsxLDJ9CisoMSByb3cpCisKK0NSRUFURSBWSUVXIHNhZmVjYXN0 dmlldzEgQVMKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGRf aW50X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgY2FzdDEsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnLCAnMicsIDEuMV0sIFsndGhyZWUn LCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQxLDQz fScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDI7Citcc3Ygc2FmZWNhc3R2aWV3MQorQ1JF QVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuc2FmZWNhc3R2aWV3MSBBUworIFNFTEVDVCBDQVNU KEFSUkFZW0FSUkFZWzFdLCBBUlJBWVsndGhyZWUnXSwgQVJSQVlbJ2EnXV0gQVMgZF9pbnRfYXJy IERFRkFVTFQgJ3s0MSw0M30nOjppbnRlZ2VyW106OmRfaW50X2FyciBPTiBDT05WRVJTSU9OIEVS Uk9SKSBBUyBjYXN0MSwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWzEsIDIsIDEuMTo6aW50ZWdlcl0s IEFSUkFZWyd0aHJlZScsIHRydWUsICcwMSc6OiJiaXQiXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQg J3s0MSw0M30nOjppbnRlZ2VyW106OmRfaW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBj YXN0MgorU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXcxOworICBjYXN0MSAgfCAgY2FzdDIgIAor LS0tLS0tLS0tKy0tLS0tLS0tLQorIHs0MSw0M30gfCB7NDEsNDN9CisoMSByb3cpCisKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIENBU1QoJzEnIHx8ICdhJyBBUyBpbnQgREVG QVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IENBU1QoKCcx Jzo6dGV4dCB8fCAnYSc6OnRleHQpIEFTIGludGVnZXIgREVGQVVMVCAyIE9OIENPTlZFUlNJT04g RVJST1IpCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBD QVNUKCdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IENBU1QoJ2EnIEFTIGludGVnZXIgREVGQVVMVCAyIE9O IENPTlZFUlNJT04gRVJST1IpCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJywgMS4xXSwgWyd0aHJlZScsIHRydWUsIEIn MDEnXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogQ0FTVChB UlJBWVtBUlJBWVsxLCAyLCAoMS4xKTo6aW50ZWdlcl0sIEFSUkFZWyd0aHJlZScsIHRydWUsICcw MSc6OiJiaXQiXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgKE5VTEw6OmludGVnZXJbXSk6OmRfaW50 X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKQorKDIgcm93cykKKworUkVTRVQgZGF0ZXN0eWxlOwor RFJPUCBWSUVXIHNhZmVjYXN0dmlldzsKK0RST1AgVklFVyBzYWZlY2FzdHZpZXcxOworRFJPUCBU QUJMRSB0ZXN0X3NhZmVjYXN0MDsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDE7CitEUk9QIFRB QkxFIHRlc3Rfc2FmZWNhc3QyOworRFJPUCBUQUJMRSB0Y2FzdDsKK0RST1AgVEFCTEUgdGNhc3Qx OworRFJPUCBGVU5DVElPTiByZXRfaW50ODsKK0RST1AgRlVOQ1RJT04gcmV0X3NldGludDsKK0RS T1AgVFlQRSBjb21wX2RvbWFpbl93aXRoX3R5cG1vZDsKK0RST1AgVFlQRSBjb21wMjsKK0RST1Ag RE9NQUlOIGRfbm90YTsKK0RST1AgRE9NQUlOIGRfdmFyY2hhcjsKK0RST1AgRE9NQUlOIGRfaW50 OGFycjsKK0RST1AgRE9NQUlOIGRfaW50ODsKK0RST1AgRE9NQUlOIGRfaW50NDJhcnIxOworRFJP UCBET01BSU4gZF9pbnQ0MmFycjsKK0RST1AgRE9NQUlOIGRfaW50NDI7CitEUk9QIERPTUFJTiBk X2NoYXIzX25vdF9udWxsOworRFJPUCBET01BSU4gZF9udW1lcmljOworUkVTRVQgZXh0cmFfZmxv YXRfZGlnaXRzOworUkVTRVQgbGNfbW9uZXRhcnk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2Nhc3Qub3V0CmluZGV4IDBlNjk2NDRiY2EyLi42NGFjNjBiMTU3ZiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQKQEAgLTg4LDYgKzg4LDExIEBAIFNF TEVDVCAxMjM0OjppbnQ0OjpjYXN0dGVzdHR5cGU7IC0tIFNob3VsZCB3b3JrIG5vdwogIGJhcjEy MzQKICgxIHJvdykKIAorU0VMRUNUIENBU1QoMTIzNDo6aW50NCBBUyBjYXN0dGVzdHR5cGUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3Qg Y2FzdCB0eXBlIGludGVnZXIgdG8gY2FzdHRlc3R0eXBlIHdpdGggREVGQVVMVCBleHByZXNzaW9u IGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoMTIz NDo6aW50NCBBUyBjYXN0dGVzdHR5cGUgREVGQVVMVCBOVUxMIE9OIENPTlZFLi4uCisgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNhZmUgdHlwZSBjYXN0cyBmb3IgdXNlci1kZWZpbmVk IHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBnZW5l cmF0ZWQgZm9yIHRoYXQKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2JqaWQs IG9ianN1YmlkKSBhcyBvYmosCiAgICAgICAgcGdfZGVzY3JpYmVfb2JqZWN0KHJlZmNsYXNzaWQs IHJlZm9iamlkLCByZWZvYmpzdWJpZCkgYXMgb2JqcmVmLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZXF1aXZjbGFzcy5vdXQKaW5kZXggYWQ4YWIyOTRmZjYuLjNhZjczN2MyMjBhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQKQEAgLTk1LDYgKzk1LDI1IEBAIGNy ZWF0ZSBmdW5jdGlvbiBpbnQ4YWxpYXMxY21wKGludDgsIGludDhhbGlhczEpIHJldHVybnMgaW50 CiAgIHN0cmljdCBpbW11dGFibGUgbGFuZ3VhZ2UgaW50ZXJuYWwgYXMgJ2J0aW50OGNtcCc7CiBh bHRlciBvcGVyYXRvciBmYW1pbHkgaW50ZWdlcl9vcHMgdXNpbmcgYnRyZWUgYWRkCiAgIGZ1bmN0 aW9uIDEgaW50OGFsaWFzMWNtcCAoaW50OCwgaW50OGFsaWFzMSk7CistLSBpbnQ4YWxpYXMyIGJp bmFyeS1jb2VyY2libGUgdG8gaW50OCwgdGhpcyBzaG91bGQgbm90IGZhaWwKK3NlbGVjdCBjYXN0 KCcxJzo6aW50OCBhcyBpbnQ4YWxpYXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJzaW9uIGVycm9y KTsKKyBpbnQ4YWxpYXMyIAorLS0tLS0tLS0tLS0tCisgMQorKDEgcm93KQorCitzZWxlY3QgY2Fz dCgnMSc6OmludDhhbGlhczIgYXMgaW50OCBkZWZhdWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJv cik7CisgaW50OCAKKy0tLS0tLQorICAgIDEKKygxIHJvdykKKworc2VsZWN0IGNhc3QoJ2EnIGFz IGludDhhbGlhczIgZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIGludDhhbGlh czIgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogY3JlYXRlIHRhYmxlIGVjMCAoZmYgaW50 OCBwcmltYXJ5IGtleSwgZjEgaW50OCwgZjIgaW50OCk7CiBjcmVhdGUgdGFibGUgZWMxIChmZiBp bnQ4IHByaW1hcnkga2V5LCBmMSBpbnQ4YWxpYXMxLCBmMiBpbnQ4YWxpYXMyKTsKIGNyZWF0ZSB0 YWJsZSBlYzIgKHhmIGludDggcHJpbWFyeSBrZXksIHgxIGludDhhbGlhczEsIHgyIGludDhhbGlh czIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CmluZGV4IDEwM2EyMmEzYjFkLi44MTVhNWU4 ODk5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dApAQCAtMTgsNiArMTgsMTIgQEAgU0VM RUNUICogRlJPTSB4bWx0ZXN0OwogICAyIHwgPHZhbHVlPnR3bzwvdmFsdWU+CiAoMiByb3dzKQog CitTRUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4bWwgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3htbDsKKyB0b194bWwgCistLS0tLS0tLQorIAorKDEgcm93KQor CiAtLSB0ZXN0IG5vbi10aHJvd2luZyBBUEksIHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlk KCc8dmFsdWU+b25lPC92YWx1ZT4nLCAneG1sJyk7CiAgcGdfaW5wdXRfaXNfdmFsaWQgCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0CmluZGV4IDczYzQxMTExOGEzLi42OWFlYTgzMzE2OSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQKQEAgLTIyLDYgKzIyLDkgQEAgU0VMRUNU ICogRlJPTSB4bWx0ZXN0OwogLS0tLSstLS0tLS0KICgwIHJvd3MpCiAKK1NFTEVDVCBDQVNUKCc8 d3JvbmcnOjp0ZXh0IEFTIHhtbCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9feG1sOworRVJST1I6ICB1bnN1cHBvcnRlZCBYTUwgZmVhdHVyZQorREVUQUlMOiAgVGhpcyBm dW5jdGlvbmFsaXR5IHJlcXVpcmVzIHRoZSBzZXJ2ZXIgdG8gYmUgYnVpbHQgd2l0aCBsaWJ4bWwg c3VwcG9ydC4KIC0tIHRlc3Qgbm9uLXRocm93aW5nIEFQSSwgdG9vCiBTRUxFQ1QgcGdfaW5wdXRf aXNfdmFsaWQoJzx2YWx1ZT5vbmU8L3ZhbHVlPicsICd4bWwnKTsKIEVSUk9SOiAgdW5zdXBwb3J0 ZWQgWE1MIGZlYXR1cmUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDNhMDQ0ZmZk OGJmLi4zNmFhMjMyMDFlOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTUs NyArMTE1LDcgQEAgdGVzdDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRoIGpzb25w YXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpzb24KICMgTkI6IHRlbXAuc3FsIGRvZXMg cmVjb25uZWN0cyB3aGljaCB0cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtl ZXAgdGhpcyBwYXJhbGxlbCBncm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0K LXRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVu Y3MgcHJlcGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHlt b3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBs YW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFy ZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSBy b3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgY2FzdAogCiAjIC0tLS0tLS0t LS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzEzODU0MzA5NTUKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApAQCAtMCwwICsxLDQ0 MiBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQgbGNfbW9uZXRhcnkgVE8gIkMi OworCistLSBDQVNUIERFRkFVTFQgT04gQ09OVkVSU0lPTiBFUlJPUgorU0VMRUNUIENBU1QoQicw MScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VChCSVQnMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoVFJVRSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKDEuMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgxMTExIEFTICJjaGFyIiBERUZBVUxUICdBJyBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdkZWYnOjp0ZXh0IEFTIGludGVnZXIgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0IERF RkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxJyBD T0xMQVRFICJDIiB8fCAnaCcgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAnaCcpIEFTIGlu dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCg2NTUzNiBB UyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGlu dDgoNjU1MzYpIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCist LSBzb3VyY2UgZXhwcmVzc2lvbiBpcyBhIHVua25vd24gY29uc3QKK1ZBTFVFUyAoQ0FTVCgnZXJy b3InIEFTIGludGVnZXIgRVJST1IgT04gQ09OVkVSU0lPTiBFUlJPUikpOyAtLSBlcnJvcgorVkFM VUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikpOworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIDQyIE9OIENP TlZFUlNJT04gRVJST1IpKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAxOCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERF RkFVTFQgc3VtKDEpIG92ZXIoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVD VCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAoU0VMRUNUIE5VTEwpIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdiJyBPTiBDT05W RVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCisKKy0tIHRoZSBkZWZhdWx0 IGV4cHJlc3Npb27igJlzIGNvbGxhdGlvbiBzaG91bGQgbWF0Y2ggdGFyZ2V0IHR5cGUgY29sbGF0 aW9uCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyB0ZXh0IERFRkFVTFQgJzEnIENPTExBVEUgIkMi IE9OIENPTlZFUlNJT04gRVJST1IpKTsKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZl Y3RvciBERUZBVUxUICcxIDMnICBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitWQUxVRVMgKENBU1Qo J2Vycm9yJyBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEgM30nICBPTiBDT05WRVJTSU9OIEVS Uk9SKSk7CisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGNvbnRhaW4gc3VicXVlcnkKK1NFTEVDVCBD QVNUKChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxKSwgKFZBTFVFUygnSCcpKSBz KGIpKQorICAgICAgICAgICAgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIEFSUkFZKChTRUxFQ1QgYiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyKSBnLCAoVkFMVUVTKCdIJykpIHMoYikpKSkKKyAgICAgICAg ICAgIEFTIElOVFtdCisgICAgICAgICAgICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisKK0NSRUFURSBGVU5DVElPTiByZXRfaW50OCgpIFJFVFVSTlMgQklHSU5UIEFTCiskJAor QkVHSU4gUkVUVVJOIDIxNDc0ODM2NDg7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVU QUJMRTsKKworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgZGF0ZSBERUZBVUxU IHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCisKKy0tIERFRkFVTFQg ZXhwcmVzc2lvbiBjYW5ub3QgYmUgc2V0LXJldHVybmluZworQ1JFQVRFIEZVTkNUSU9OIHJldF9z ZXRpbnQoKSBSRVRVUk5TIFNFVE9GIGludGVnZXIgQVMKKyQkCitCRUdJTiBSRVRVUk4gUVVFUlkg RVhFQ1VURSAnc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAxJzsgRU5EOworJCQKK0xBTkdVQUdF IHBscGdzcWwgSU1NVVRBQkxFOworCitDUkVBVEUgVEFCTEUgdGNhc3QwKGEgSU5ULCBiIGludCk7 CitJTlNFUlQgSU5UTyB0Y2FzdDAgVkFMVUVTKDEsMiksICg2NTUzNiwzKTsKK1NFVCBqaXRfYWJv dmVfY29zdCA9IDA7CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIEZST00gdGNhc3QwOworU0VUIGppdF9hYm92ZV9jb3N0IFRPIERFRkFVTFQ7 CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QwOworU0VMRUNUIENBU1QoUk9XKDEsMikgQVMgdGNhc3QwIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MCBhcyB0OworRFJPUCBUQUJMRSB0Y2Fz dDA7CisKK1NFTEVDVCBDQVNUKDEyLjExMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlOworCitDUkVBVEUgVEFCTEUg dGNhc3QoYSB0ZXh0W10sIGIgaW50IEdFTkVSQVRFRCBCWSBERUZBVUxUIEFTIElERU5USVRZKTsK K0lOU0VSVCBJTlRPIHRjYXN0IFZBTFVFUyAoJ3sxMn0nKSwgKCd7MSxhLCBifScpLCAoJ3t7MSwy fSwge2MsZH19JyksICgnezEzfScpOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJl dF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0OyAtLSBlcnJvcgorU0VM RUNUIENBU1QodCBBUyB0ZXh0W10gREVGQVVMVCAnezIxLDIyLCAnIHx8IGIgfHwgJ30nIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKK1NFTEVDVCBDQVNUKHQuYSBBUyBpbnRb XSBERUZBVUxUICd7MjEsMjJ9Jzo6aW50W10gfHwgYiBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9N IHRjYXN0IGFzIHQ7CisKKy0tIFRlc3QgbmVzdGVkIHR5cGUgY2FzdHM7IGFsbCBleHByZXNzaW9u cyB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhbiBlcnJvci1zYWZlIG1hbm5lcgorQ1JFQVRFIERPTUFJ TiBkX25vdGEgQVMgdGV4dCBDSEVDSyAoVkFMVUUgPD4gJ2EnKTsKK0NSRUFURSBUQUJMRSB0Y2Fz dDEoYSB0ZXh0LCBiIHRleHRbXSwgYyBpbnQsIGQgaW50OCwgZSBpbnQ4W10pOworSU5TRVJUIElO VE8gdGNhc3QxKGEsIGIsIGQsIGUpIHZhbHVlcygnYScsICd7YX0nLCAyMTQ3NDgzNjQ4LCAnezIx NDc0ODM2NDh9Jyk7CitTRUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGludCkgQVMgdGV4dCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FT VCgnYScgQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBG Uk9NIHRjYXN0MTsgIC0tIGVycm9yCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYSc6OnRleHQgQVMgaW50 KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsg LS0gb2sKK1NFTEVDVCBDQVNUIChDQVNUKGEgQVMgZF9ub3RhKSBBUyB0ZXh0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUIChDQVNUKCdh JyBBUyBkX25vdGEpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QxOworCitTRUxFQ1QgQ0FTVCAoQ0FTVChkIEFTIGludCkgQVMgdGV4dCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FT VCgnMjE0NzQ4MzY0OCc6OmludDggQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKworU0VMRUNUIENBU1QgKENBU1QoJ3thfSc6OnRl eHRbXSBBUyBpbnRbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUIChDQVNUKGIgQVMgaW50W10pIEFTIHRleHRbXSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FT VCAoQ0FTVChiIEFTIGRfbm90YVtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoZSBBUyBpbnRbXSkgQVMg dGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKwor LS0gdGVzdCBuZXN0ZWQgQXJyYXlDb2VyY2VFeHByIGNvbnN0YW50IGZvbGRpbmcKK1NFTEVDVCBD QVNUKCd7YX0nOjp0ZXh0W10gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QoQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGRhdGVb XSkgQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3Qx OworU0VMRUNUIENBU1QoKCd7JyB8fCBzdW0oMSArIDIpIHx8ICd9Jyk6OmludFtdIEFTIGludFtd IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIChWQUxVRVMgKDEpLCAoMikp IHN1YjsKK1NFTEVDVCBDQVNUKCgneycgfHwgc3VtKDEgKyAyKSBPVkVSICgpIHx8ICd9Jyk6Omlu dFtdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIChWQUxV RVMgKDEpLCAoMikpIHN1YjsKKworLS0gdGVzdCB3aXRoIHVzZXItZGVmaW5lZCB0eXBlLCBkb21h aW4sIGFycmF5IG92ZXIgZG9tYWluLCBkb21haW4gb3ZlciBhcnJheQorQ1JFQVRFIERPTUFJTiBk X2ludDQyIGFzIGludCBjaGVjayAodmFsdWUgPSA0MikgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlO IGRfaW50NDJhcnIgYXMgZF9pbnQ0MltdOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyMSBhcyBk X2ludDQyYXJyOworQ1JFQVRFIERPTUFJTiBkX2ludDggYXMgaW50OCBjaGVjayAodmFsdWUgPiAw KTsKK0NSRUFURSBET01BSU4gZF9pbnQ4YXJyIGFzIGRfaW50OFtdOworQ1JFQVRFIERPTUFJTiBk X2NoYXIzX25vdF9udWxsIGFzIGNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfdmFy Y2hhciBhcyB2YXJjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludF9hcnIgYXMg aW50W10gY2hlY2sgKHZhbHVlID0gJ3s0MSwgNDN9JykgTk9UIE5VTEw7CitDUkVBVEUgVFlQRSBj b21wX2RvbWFpbl93aXRoX3R5cG1vZCBBUyAoYSBkX2NoYXIzX25vdF9udWxsLCBiIGludCk7CitD UkVBVEUgVFlQRSBjb21wMiBBUyAoYSBkX3ZhcmNoYXIpOworQ1JFQVRFIERPTUFJTiBkX251bWVy aWMgYXMgbnVtZXJpYyg0LDQpOworCitTRUxFQ1QgQ0FTVCgxLjA6OmZsb2F0NCBBUyBkX251bWVy aWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3sxLjB9 JyBBUyBudW1lcmljKDQsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVCgnezAuMSwgMS4wfScgQVMgZF9udW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDEg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50 NDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENB U1QoMTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisK K1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4IERFRkFVTFQgJzEn IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJy MSBBUyBkX2ludDhbXSBERUZBVUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVMVCAnezF9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEg QVMgZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitTRUxF Q1QgQ0FTVChBUlJBWVs0Miw0MV0gQVMgZF9pbnQ0MltdIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludF9hcnIg REVGQVVMVCAnezQxLCA0M30nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJS QVlbNDIsIDQxXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sxLDIsM30nIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDIsIDQxXSBBUyBkX2ludDQy YXJyMSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QKKyAg ICBDQVNUKENBU1QoQVJSQVlbQ0FTVChBUlJBWVs0MiwgNDJdIEFTIGRfaW50NDJhcnIpXSBBUyBk X2ludDQyYXJyMVtdKSBBUyBkX2ludDhhcnJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisKK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMyKScg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBj b21wMiBERUZBVUxUICcoMTIzKScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn KCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhf dHlwbW9kIERFRkFVTFQgJygxLDIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgJygxMjM0LDIp JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKFJPVyhOVUxMLDQy KSBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7IC0tIGVycm9yCisKKy0tIHRlc3QgYXJyYXkgY29lcmNlCitTRUxFQ1QgQ0FTVChhcnJh eVsnYSc6OnRleHRdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKGFycmF5WydhJ10gQVMgaW50W10gREVGQVVMVCBBUlJBWVsxXSBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGFycmF5WzExLjEyXSBBUyBkYXRlW10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlbMTExMTExMTEx MTExMTExMTFdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKGFycmF5W1snYWJjJ10sWzQ1Nl1dIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MTIzLGFiYyw0NTZ9JyBBUyBpbnRbXSBE RUZBVUxUICd7LTc4OX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3syMzQs ZGVmLDU2N30nOjp0ZXh0W10gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZF UlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0g QVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZScsICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sy MSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworLS0gZXJyb3I6IGB0aHJlZSc6OmludGAgd2ls bCBmYWlsIGVhcmxpZXIKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjpp bnQsICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6aW50XSBBUyBpbnRbXSBERUZBVUxUICd7 MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IHdpdGggZ2VvbWV0 cnkgZGF0YSB0eXBlCitTRUxFQ1QgQ0FTVCgnKDEsMiknOjpwb2ludCBBUyBib3ggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1soTmFOLDEpLChOYU4saW5m aW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJ1soMWUrMzAwLEluZmluaXR5KSwoMWUrMzAwLEluZmluaXR5KV0nOjps c2VnIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKCdbKDEsMiksKDMsNCldJzo6cGF0aCBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTmFOLDEuMCxOYU4saW5maW5pdHkpJzo6Ym94 IEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBsc2VnIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBwb2x5 Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4w LDIuMCwwLjAsMC4wKSc6OmJveCBBUyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLGluZmluaXR5LE5hTixpbmZpbml0eSknOjpib3ggQVMg Y2lyY2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCco TmFOLDAuMCksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBwb2ludCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwwLjApLCgy LjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIHBhdGggREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjAp Jzo6cG9seWdvbiBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoJyhOYU4saW5maW5pdHkpLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHln b24gQVMgY2lyY2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKCc8KDUsMSksMz4nOjpjaXJjbGUgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBib3ggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNp cmNsZSBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0g c2FmZSBjYXN0IHdpdGggbW9uZXkgZGF0YSB0eXBlCistLSBjYXN0IGZyb20gbW9uZXkgdG8gb3Ro ZXIgdHlwZSBpcyBub3QgZXJyb3Igc2FmZQorU0VMRUNUIENBU1QoJzEyMzQ1Njc4OTAxMjM0NTY3 OCc6Om51bWVyaWMgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJzEyMzQ1Njc4OTAxMjM0NTY3OCc6OmludDggQVMgTU9ORVkgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzIxNDc0ODM2NDcnOjppbnQ0 IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCctMjE0NzQ4MzY0OCc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoJy0wJzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChOVUxMOjptb25leSBBUyBudW1lcmljIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5 W10gQVMgbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0g c2FmZSBjYXN0IGZyb20gYm9vbGVhbiB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBD QVNUKHRydWUgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVChmYWxzZSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoZmFsc2UgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisKKy0tIHNhZmUgY2FzdCBmcm9tIGJ5dGVhIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBl cworU0VMRUNUIENBU1QgKCdceDExMjIzMzQ0NTU2Njc3ODg5OSc6OmJ5dGVhIEFTIGludDggREVG QVVMVCAxOSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OUEn OjpieXRlYSBBUyBpbnQ0IERFRkFVTFQgMjAgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVCgnXHgxMjM0NTYnOjpieXRlYSBBUyBpbnQyIERFRkFVTFQgMjEgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODkwYWJjZGVmJzo6Ynl0ZWEgQVMgdXVpZCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBmcm9tIHV1 aWQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnNWIzNTM4MGEtNzE0My00 OTEyLTliNTUtZjMyMjY5OWM2NzcwJzo6dXVpZCBBUyBieXRlYSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCByZWxhdGVkIHRvIG5ldHdvcmsgYWRkcmVz cyBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEueCcgYXMgaW5ldCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTkyLjE2OC4xLjIvMzAnIGFz IGNpZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzIy OjAwOjVjOjA4OjU1OjA4OjAxOjAyJzo6bWFjYWRkcjggYXMgbWFjYWRkciBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBmcm9tIGJpdCB0eXBlIHRvIG90 aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCcxMTExMTExMTExMDAwMDEnOjpiaXQoMTAwKSBB UyBJTlQgREVGQVVMVCAyMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUICgnMTEx MTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZBVUxUIDIzIE9OIENPTlZFUlNJT04g RVJST1IpOworCistLSBzYWZlIGNhc3QgcmVsYXRlZCB0byBvaWQgZGF0YSB0eXBlCitTRUxFQ1Qg Q0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50IEFTIHJlZ3Byb2MgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6 OmJpZ2ludCBBUyByZWdwcm9jZWR1cmUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6OmJpZ2ludCBBUyByZWdjbGFzcyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQg QVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEy MzQ1Njc4OTA6OmJpZ2ludCBBUyByZWdyb2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyByZWduYW1lc3BhY2UgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6 YmlnaW50IEFTIHJlZ2RhdGFiYXNlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KworLS0gc2FmZSBjYXN0IGZyb20gdGV4dCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVD VCBDQVNUKCdhLmIuYy5kJzo6dGV4dCBhcyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDAoY29sMCB0ZXh0LCBjb2wx IGpzb25iKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QwIFZBTFVFUyAoJzx2YWx1ZT5vbmU8 L3ZhbHVlJywgJyJ0ZXN0IicpOworCitTRUxFQ1QgY29sMCBhcyB0ZXh0LAorICAgICAgIENBU1Qo Y29sMCBBUyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f cmVnY2xhc3MsCisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBJUyBOVUxMIGFzIGV4cGVjdF90cnVlLAorICAgICAgIENBU1QoY29s MCBBUyAiY2hhciIgIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19jaGFy LAorICAgICAgIENBU1QoY29sMCBBUyBuYW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19uYW1lCitGUk9NIHRlc3Rfc2FmZWNhc3QwOworCistLSBzYWZlIHR5cGUgY2Fz dCBmb3IganNvbmIgZGF0YSB0eXBlCitTRUxFQ1QgY29sMSBhcyBqc29uYiwKKyAgICAgICBDQVNU KGNvbDEgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50ZWdlciwKKyAgICAgICBDQVNUKGNvbDEgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDEgQVMgYmlnaW50 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENB U1QoY29sMSBBUyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wxIEFTIGJvb2xlYW4g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Jvb2wsCisgICAgICAgQ0FT VChjb2wxIEFTIHNtYWxsaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19zbWFsbGludAorRlJPTSB0ZXN0X3NhZmVjYXN0MDsKKworLS0gdGVzdCBDQVNUIERFRkFVTFQg ZXhwcmVzc2lvbiBtdXRhYmlsaXR5CitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVz dF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyBpbnQgREVGQVVMVCByYW5kb20obWluPT4xLCBtYXg9 PjEpIE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitDUkVBVEUgSU5ERVggY2FzdF9l cnJvcl9pZHggT04gdGVzdF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyB4aWQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitDUkVBVEUgSU5ERVggY2FzdF9lcnJv cl9pZHggT04gdGVzdF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyBpbnQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpKSk7IC0tIG9rCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKCdjYXN0 X2Vycm9yX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gc2FmZSBjYXN0IGJldHdlZWVuIHJhbmdlIGRh dGEgdHlwZXMKK1NFTEVDVCBDQVNUKCdbMSwyXSc6OmludDRyYW5nZSBBUyBpbnQ0bXVsdGlyYW5n ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWzEsMl0n OjppbnQ4cmFuZ2UgQVMgaW50OG11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoJ1sxLDJdJzo6bnVtcmFuZ2UgIEFTIG51bW11bHRpcmFuZ2Ug REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1staW5maW5p dHksaW5maW5pdHldJzo6ZGF0ZXJhbmdlIEFTIGRhdGVtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6 OnRzcmFuZ2UgQVMgdHNtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OnRzdHpyYW5nZSBBUyB0c3R6 bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUg Y2FzdCBiZXR3ZWVlbiBudW1lcmljIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVj YXN0MSgKKyAgY29sMSBmbG9hdDQsIGNvbDIgZmxvYXQ4LCBjb2wzIG51bWVyaWMsIGNvbDQgbnVt ZXJpY1tdLAorICBjb2w1IGludDIgZGVmYXVsdCAzMjc2NywKKyAgY29sNiBpbnQ0IGRlZmF1bHQg MzI3NjgsCisgIGNvbDcgaW50OCBkZWZhdWx0IDQyOTQ5NjcyOTYpOworSU5TRVJUIElOVE8gdGVz dF9zYWZlY2FzdDEgVkFMVUVTKCcxMS4xMjM0JywgJzExLjEyMzQnLCAnOTIyMzM3MjAzNjg1NDc3 NTgwOCcsICd7MTEuMTIzNH0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2Fz dDEgVkFMVUVTKCdpbmYnLCAnaW5mJywgJ2luZicsICd7MTEuMTIzNCwgMTIsIGluZiwgTmFOfSc6 Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJy1pbmYnLCAn LWluZicsICctaW5mJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJ TlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ05hTicsICdOYU4nLCAnTmFOJywgJ3sx MS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CisKK1NFTEVDVCBjb2w1IGFzIGlu dDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w1IEFTIG9p ZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENB U1QoY29sNSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQ4LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxvYXQ4IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChj b2w1IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251 bWVyaWMsCisgICAgICAgQ0FTVChjb2w1IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2Fz dDE7CisKK1NFTEVDVCBjb2w2IGFzIGludDQsCisgICAgICAgQ0FTVChjb2w2IEFTIGludDIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChj b2w2IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQs CisgICAgICAgQ0FTVChjb2w2IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9hdDQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBD QVNUKGNvbDYgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVy aWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNf c2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2w3IGFzIGludDgsCisgICAg ICAgQ0FTVChjb2w3IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w3IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w3IEFTIG9pZCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNyBh cyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAg ICAgIENBU1QoY29sNyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w3IGFzIG51 bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisg ICAgICAgQ0FTVChjb2w3IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NF TEVDVCBjb2wzIGFzIG51bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIEFTIGludDIgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wzIEFT IGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAg ICAgQ0FTVChjb2wzIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fb2lkLAorICAgICAgIENBU1QoY29sMyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNv bDMgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9h dDgsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMoMTAs MSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2w0IGFzIG51bV9hcnIsCisgICAgICAg Q0FTVChjb2w0IEFTIGludDJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg aW50MmFyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50NFtdIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyBpbnQ0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBpbnQ4W10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDhhcnIsCisgICAgICAgQ0FTVChj b2w0IGFzIGZsb2F0NFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBmNGFy ciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ4W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIGY4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBudW1lcmljKDEwLDEpW10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIG51bWFycgorRlJPTSB0ZXN0X3Nh ZmVjYXN0MTsKKworU0VMRUNUIGNvbDEgYXMgZmxvYXQ0LAorICAgICAgIENBU1QoY29sMSBBUyBp bnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAg IENBU1QoY29sMSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQ0LAorICAgICAgIENBU1QoY29sMSBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDEgYXMgaW50OCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDEgYXMg ZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisg ICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBhcyBudW1lcmljIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMSBh cyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19u dW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sMiBhcyBmbG9h dDgsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wyIEFTIG9p ZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENB U1QoY29sMiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQ4LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ4IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChj b2wyIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251 bWVyaWMsCisgICAgICAgQ0FTVChjb2wyIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2Fz dDE7CisKKy0tIHNhZmUgdHlwZSBjYXN0IGZvciB0eXBlIGRhdGUvdGltZXN0YW1wL3RpbWVzdGFt cHR6L2ludGVydmFsCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDIoCisgIGNvbDAgZGF0ZSwg Y29sMSB0aW1lc3RhbXAsIGNvbDIgdGltZXN0YW1wdHosCisgIGNvbDMgaW50ZXJ2YWwsIGNvbDQg dGltZSwgY29sNSB0aW1ldHopOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDIgVkFMVUVTCiso Jy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywgJy1pbmZpbml0eScsCisgICcy MDAzLTAzLTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsnLCAnMjAwMy0wNy0wNyAxNTozNjoz OSBBbWVyaWNhL05ld19Zb3JrJyksCisoJy1pbmZpbml0eScsICdpbmZpbml0eScsICdpbmZpbml0 eScsICdpbmZpbml0eScsICcxMTo1OTo1OS45OSBQTScsICcxMTo1OTo1OS45OSBQTSBQRFQnKTsK KworU0VMRUNUIGNvbDAgYXMgZGF0ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wdHog REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAg ICAgIENBU1QoY29sMCBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXR6IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FT VChjb2wwIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29s MSBhcyB0aW1lc3RhbXAsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNU KGNvbDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0 ZSwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWV0eiBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMSBB UyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzdGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDIgYXMgdGlt ZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDIg QVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAg ICAgICBDQVNUKGNvbDIgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMiBBUyB0aW1l c3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFt cF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDMgYXMgaW50ZXJ2YWws CisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDMgQVMgZGF0ZSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNU KGNvbDMgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXMsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lc3RhbXAoMikg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZSwK KyAgICAgICBDQVNUKGNvbDMgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitT RUxFQ1QgY29sNCBhcyB0aW1lLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1lKDIpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDQg QVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBJUyBOT1QgTlVMTCBh cyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2w0IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDQg QVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29sNSBhcyB0aW1l dHosCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWUsCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUoMikgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVfc2NhbGUsCisgICAgICAgQ0FTVChj b2w1IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1ldHooNikgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3RpbWV0el9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50 ZXJ2YWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsLAor ICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKKy0t IHRlc3QgZGVwYXJzZQorU0VUIGRhdGVzdHlsZSBUTyBJU08sIFlNRDsKK0NSRUFURSBWSUVXIHNh ZmVjYXN0dmlldyBBUworU0VMRUNUIENBU1QoJzEyMzQnIGFzIGNoYXIoMykgREVGQVVMVCAtMTEx MSBPTiBDT05WRVJTSU9OIEVSUk9SKSwKKyAgICAgICBDQVNUKDEgYXMgZGF0ZSBERUZBVUxUICgo JzIwMjUtRGVjLTA2Jzo6ZGF0ZSArIHJhbmRvbShtaW49PjEsIG1heD0+MTo6aW50KSkpIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIGNhc3QwLAorICAgICAgIENBU1QoQVJSQVlbWycxJ10sIFsndGhy ZWUnXSxbJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIGNhc3QxLAorICAgICAgIENBU1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZScsICdhJ11d IEFTIGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDIsCisg ICAgICAgQ0FTVChBUlJBWVsndGhyZWUnXSBBUyBJTlRbXSBERUZBVUxUICd7MSwyfScgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgY2FzdDM7Citcc3Ygc2FmZWNhc3R2aWV3CitTRUxFQ1QgKiBGUk9N IHNhZmVjYXN0dmlldzsKKworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3MSBBUworU0VMRUNUIENB U1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMgZF9pbnRfYXJyCisgICAgICAgICAg ICBERUZBVUxUICd7NDEsNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAg ICBDQVNUKEFSUkFZW1snMScsICcyJywgMS4xXSwgWyd0aHJlZScsIHRydWUsIEInMDEnXV0gQVMg ZF9pbnRfYXJyCisgICAgICAgICAgICBERUZBVUxUICd7NDEsNDN9JyBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyBjYXN0MjsKK1xzdiBzYWZlY2FzdHZpZXcxCitTRUxFQ1QgKiBGUk9NIHNhZmVjYXN0 dmlldzE7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIENBU1QoJzEnIHx8 ICdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIENBU1Qo QVJSQVlbWycxJywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2ludF9h cnIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitSRVNFVCBkYXRlc3R5bGU7 CisKK0RST1AgVklFVyBzYWZlY2FzdHZpZXc7CitEUk9QIFZJRVcgc2FmZWNhc3R2aWV3MTsKK0RS T1AgVEFCTEUgdGVzdF9zYWZlY2FzdDA7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QxOworRFJP UCBUQUJMRSB0ZXN0X3NhZmVjYXN0MjsKK0RST1AgVEFCTEUgdGNhc3Q7CitEUk9QIFRBQkxFIHRj YXN0MTsKK0RST1AgRlVOQ1RJT04gcmV0X2ludDg7CitEUk9QIEZVTkNUSU9OIHJldF9zZXRpbnQ7 CitEUk9QIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2Q7CitEUk9QIFRZUEUgY29tcDI7CitE Uk9QIERPTUFJTiBkX25vdGE7CitEUk9QIERPTUFJTiBkX3ZhcmNoYXI7CitEUk9QIERPTUFJTiBk X2ludDhhcnI7CitEUk9QIERPTUFJTiBkX2ludDg7CitEUk9QIERPTUFJTiBkX2ludDQyYXJyMTsK K0RST1AgRE9NQUlOIGRfaW50NDJhcnI7CitEUk9QIERPTUFJTiBkX2ludDQyOworRFJPUCBET01B SU4gZF9jaGFyM19ub3RfbnVsbDsKK0RST1AgRE9NQUlOIGRfbnVtZXJpYzsKK1JFU0VUIGV4dHJh X2Zsb2F0X2RpZ2l0czsKK1JFU0VUIGxjX21vbmV0YXJ5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRl X2Nhc3Quc3FsCmluZGV4IDMyMTg3ODUzY2M3Li4wYTE1YTc5NWQ4NyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9jYXN0LnNxbApAQCAtNjIsNiArNjIsNyBAQCAkJCBTRUxFQ1QgKCdiYXInOjp0 ZXh0IHx8ICQxOjp0ZXh0KTsgJCQ7CiAKIENSRUFURSBDQVNUIChpbnQ0IEFTIGNhc3R0ZXN0dHlw ZSkgV0lUSCBGVU5DVElPTiBiYXJfaW50NF90ZXh0KGludDQpIEFTIElNUExJQ0lUOwogU0VMRUNU IDEyMzQ6OmludDQ6OmNhc3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdvcmsgbm93CitTRUxFQ1QgQ0FT VCgxMjM0OjppbnQ0IEFTIGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7IC0tIGVycm9yCiAKIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBnZW5lcmF0ZWQgZm9yIHRo YXQKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2JqaWQsIG9ianN1YmlkKSBh cyBvYmosCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lcXVpdmNsYXNzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCmluZGV4IDdmYzIxNTkzNDliLi45 NmU2ZjczYzdiNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKQEAgLTk4LDYgKzk4 LDExIEBAIGNyZWF0ZSBmdW5jdGlvbiBpbnQ4YWxpYXMxY21wKGludDgsIGludDhhbGlhczEpIHJl dHVybnMgaW50CiBhbHRlciBvcGVyYXRvciBmYW1pbHkgaW50ZWdlcl9vcHMgdXNpbmcgYnRyZWUg YWRkCiAgIGZ1bmN0aW9uIDEgaW50OGFsaWFzMWNtcCAoaW50OCwgaW50OGFsaWFzMSk7CiAKKy0t IGludDhhbGlhczIgYmluYXJ5LWNvZXJjaWJsZSB0byBpbnQ4LCB0aGlzIHNob3VsZCBub3QgZmFp bAorc2VsZWN0IGNhc3QoJzEnOjppbnQ4IGFzIGludDhhbGlhczIgZGVmYXVsdCBudWxsIG9uIGNv bnZlcnNpb24gZXJyb3IpOworc2VsZWN0IGNhc3QoJzEnOjppbnQ4YWxpYXMyIGFzIGludDggZGVm YXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworc2VsZWN0IGNhc3QoJ2EnIGFzIGludDhh bGlhczIgZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworCiBjcmVhdGUgdGFibGUg ZWMwIChmZiBpbnQ4IHByaW1hcnkga2V5LCBmMSBpbnQ4LCBmMiBpbnQ4KTsKIGNyZWF0ZSB0YWJs ZSBlYzEgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDhhbGlhczEsIGYyIGludDhhbGlhczIp OwogY3JlYXRlIHRhYmxlIGVjMiAoeGYgaW50OCBwcmltYXJ5IGtleSwgeDEgaW50OGFsaWFzMSwg eDIgaW50OGFsaWFzMik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC94bWwuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbAppbmRleCAwZWE0ZjUwODgzNy4uZGYzYTA2 ZjRkODIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbApAQCAtOSw2ICs5LDggQEAgSU5TRVJUIElOVE8geG1s dGVzdCBWQUxVRVMgKDMsICc8d3JvbmcnKTsKIAogU0VMRUNUICogRlJPTSB4bWx0ZXN0OwogCitT RUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4bWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3htbDsKKwogLS0gdGVzdCBub24tdGhyb3dpbmcgQVBJLCB0b28KIFNF TEVDVCBwZ19pbnB1dF9pc192YWxpZCgnPHZhbHVlPm9uZTwvdmFsdWU+JywgJ3htbCcpOwogU0VM RUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC8nLCAneG1sJyk7CmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDViYzUxNzYwMmIxLi43YzgxYmU1ZjdjMiAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTI3NDUsNiArMjc0NSw4IEBAIFNUUkxFTgogU1YKIFNZTkNIUk9O SVpBVElPTl9CQVJSSUVSCiBTWVNURU1fSU5GTworU2FmZVR5cGVDYXN0RXhwcgorU2FmZVR5cGVD YXN0U3RhdGUKIFNhbXBsZVNjYW4KIFNhbXBsZVNjYW5HZXRTYW1wbGVTaXplX2Z1bmN0aW9uCiBT YW1wbGVTY2FuU3RhdGUKLS0gCjIuMzQuMQoK --000000000000eaf48c064e85ba39--