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 1vzGoI-000r40-20 for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Mar 2026 16:16:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzGoF-00B1S8-0z for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Mar 2026 16:16:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzGoE-00B1S0-21 for pgsql-hackers@lists.postgresql.org; Sun, 08 Mar 2026 16:16:51 +0000 Received: from mail-ua1-x934.google.com ([2607:f8b0:4864:20::934]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzGoA-000000019d5-0dqP for pgsql-hackers@postgresql.org; Sun, 08 Mar 2026 16:16:49 +0000 Received: by mail-ua1-x934.google.com with SMTP id a1e0cc1a2514c-94acb3d6cceso6199007241.2 for ; Sun, 08 Mar 2026 09:16:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1772986605; cv=none; d=google.com; s=arc-20240605; b=Pc0MFbt1sv23AQpseQPWKG6iaSmyTETbaIni9cLYguoMFqGyPm9LE6dVQvy6tiPKev o8G+t1+5jA+b8ovt72ZlcntHHLwsLtrRJMM96X7b+VwGvuO4/XN1i8VSh61dvtuzGVy7 I8+YLFqgsT1fTfDhLSJiaTO8MFGdywHoB+/Apjxv/qApfYJPf6GtMcY0X9JOF2LcpK6C 5aNqsXC6oW4FAjlIcdK0zTXMp1l5aGFifdewyrBYtlF6X7VAXk0frZm4qj421KFiepbR M41vV7qKp2qHpPZ9A3jN7mKYihcOgNsk9kde0GJ+aBM6nu3ObvrdsZ0Ndw5Q0wYC8ThV qOWA== 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=UNdBMX1UtlUxJ2/rqRPI5qvRHG0pcjrHt0aO4E/ArT0=; fh=UCpFvA/tpR8EWb5ooLj+zhtkgQbrpJmRAmnizIIM6Co=; b=M2TCKS/luWOmsHRaOeLY1weJQ8cQDgY/ci75al1I9YspyipfCEYAanWGudQVUulld9 XymMFrKZJzHpZaW6sPonb8OMkiOXR8T1I5O1kaZt/UBZHJ9cIBwwrDIxL+RSZMQhoQEs lxyMqahGPhLHwMomOzJpK8ad1dn5eAWuJPXcu6P+CI6ixT7Xi6PqfzLhK4m7L5N3oOFy 1kuhLggBJ4E47dU8kNv6cI+eLwG8x+SAlg6vCLExUwjI2kAP7c3nGgU2m3z9YUmF3WzU batbcB7iYQmL9CcOUGxmeBjB4pqgtrn+j/S68bVbali/ahvPO83HIBHT0r7zqaFRl8Lj Wzzw==; darn=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=20230601; t=1772986605; x=1773591405; darn=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=UNdBMX1UtlUxJ2/rqRPI5qvRHG0pcjrHt0aO4E/ArT0=; b=Kc7w+mhsnqboQALDtDKYmLU5cOPCglo7gzNgVCLRadbu2zz673s6HUE8cjPrrr6Cvh qk6fRb93ZfsX2os3x9OWDYd4Dav9nk4aBul4EKADGIBgDEsYpByaeFB7/VtJNcT6glxd OHwmoMtbXghv9T1GpZ35+p5FaqXHQAecVDtvndJNZBsmEk6njsc1wKgUlnFoxCJAWzu/ rd/zsRNytNjOup35ppO5ZpkA34suuETdrCQSZgSSHocBimoAq2yq8usQEuh71ff67H/E Ku9YyAsceqSPer/eUS21O44jhihi5VSJOsxxPz1WP9ZpRTfVvSZKHxfpH3T+oZlnqfj5 LDVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772986605; x=1773591405; 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=UNdBMX1UtlUxJ2/rqRPI5qvRHG0pcjrHt0aO4E/ArT0=; b=PRA53PM+CXsZ/Sk4NOUttROUvjGJhAIgIY8x15hBFdu17E1ls6yopOzeWYPFGBcjOp 5BxyavohJwK4YZQVvQsmaGiuF44uRX2cabFNXHEFZXHiYsmJiLMkLWalYWD4ByjlbI19 GEj7gPU5DkrS4auw/1VlxkBkD3EnGiiKdUZX+m456TYlhB+wdbSJ5IT3eNntRbIZRGWX KIyKTSDj6tB4JXXUkfUvCdrvr+OueiER396UYp8Q4NVqTCGyVXEWkkq6M0AjUJ1ISPn9 hhdtE75YtJY0/daMKHYO35yeLTkmDRPBsKJsYUnPwd/RcpzAdtfeJG1gnr4JdmHTcDTw s6eQ== X-Forwarded-Encrypted: i=1; AJvYcCWpGdy8TC3i+QnjHhWTIQ20Fx+eWwD+X4h031LmqFGxG/ke0WhrzLvT2MbjsQWBlUlfMm2jxKkIHdSDgok4@postgresql.org X-Gm-Message-State: AOJu0YxaKlFJT89bsOVhYD6XZbT6+NwIQFMm+0yNfhzLj9yph0y+xpvt 3TOelJGMXbCd21eV/E9UyWFdeCX4sVbap/OFcFZ0TjA9q0EGr1WrnNQkYSi7x6HISO5CUN0JZmV MDFMFGGTnMZ2BlrzEoiw7rUT2mFMt7Zk= X-Gm-Gg: ATEYQzz/RUsc8q53Z/MgR9vCkXfwaZ81fmMSVDlL5hhWchnmzlMNA+2qQ7Zjj2zRO6l hBua1cvMFtCxXJT6HV2fRwmKVjoi/IrB7ySTS7hj4xr3Iqfj/M86P8wWe7mMQbMm6jVb7KpfatV E9a2kOtcq3QUO/Aayn3DhTEDBPEw5dX2h8F1s/STC8m7TFvOC+5IsFEGezjhWxT2yeDR5j3lXla f6PMSqcdxcbkJVT6bASqcA+2oap+/Fg6EsnwzhV9KdBNUNpYztFfh3foD7dIG4AtC2gW0yos67c Y7qy9tHWjHwWPErMR1drGLxM6eG6jSdI+AN3Ig2N1WsRyfqgZrpN/+PEzRQcUZC42AoMjIPdYMM 71SDKvhFpyo+Fx9at4f9uXSNNFOwF1IyeeczS8V7fZhg8jcv9b9cPha35mXbsFYq2o/2MiW6PHk uYB593pA5kJBHaS8Gi6bNX1w== X-Received: by 2002:a05:6102:2914:b0:5ff:e58d:4dff with SMTP id ada2fe7eead31-5ffe5fb087dmr3512534137.17.1772986605127; Sun, 08 Mar 2026 09:16:45 -0700 (PDT) MIME-Version: 1.0 References: <74d3b4e2-d201-489d-9b9a-1a6d0eb492a6@dunslane.net> <6cbbf7f3-da4a-4201-98a6-4347a3c35db0@joeconway.com> <8154f8e2-7d9c-442f-a7cb-a5caf38f6a12@dunslane.net> <57db4b6e-51ba-4984-9343-bc62a3ee0b7c@dunslane.net> In-Reply-To: <57db4b6e-51ba-4984-9343-bc62a3ee0b7c@dunslane.net> From: jian he Date: Mon, 9 Mar 2026 00:16:08 +0800 X-Gm-Features: AaiRm53YgLvncSIHA5RAM5VFJVFR5ZjrZPj1urdlL7GNi6VnNHJyv5r_9Zlgwt0 Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Andrew Dunstan Cc: Joe Conway , Junwang Zhao , Florents Tselai , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000ca6a48064c859c4c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ca6a48064c859c4c Content-Type: text/plain; charset="UTF-8" hi. V27-0002 is still not bullet-proof. drop table if exists t1; create table t1(a int); insert into t1 values (1); copy (select * from t1) to stdout json; {"a":1} WARNING: resource was not closed: TupleDesc 0x7171d0ca3440 (18239,-1) Also see ExecAssignScanProjectionInfo->ExecConditionalAssignProjectionInfo So in v28-0002, I changed to + /* + * composite_to_json() requires a stable TupleDesc. Since the slot's + * descriptor (slot->tts_tupleDescriptor) can change during the execution + * of a SELECT query, we use cstate->queryDesc->tupDesc instead. This + * precaution is only necessary when the output slot's TupleDesc is of + * type RECORDOID. + */ + if (!cstate->rel && slot->tts_tupleDescriptor->tdtypeid == RECORDOID) + slot->tts_tupleDescriptor = cstate->queryDesc->tupDesc; + cstate->json_projvalues = (Datum *) palloc(natts * sizeof(Datum)); + cstate->json_projnulls = (bool *) palloc(natts * sizeof(bool)); I changed it to + cstate->json_projvalues = palloc_array(Datum, natts); + cstate->json_projnulls = palloc_array(bool, natts); + rowdata = HeapTupleHeaderGetDatum(tup->t_data); I changed it to + rowdata = HeapTupleGetDatum(tup); Patch v28-0004 adds the json_projvalues and json_projnulls pointers to struct CopyToStateData. I wondered if adding these would slow the COPY TO with TEXT and CSV format, so I ran a quick test using a 36-column table. Surprisingly, v28 actually make COPY TO with TEXT and CSV performs a little bit faster. But I didn't find out why. You may also try the attached test script: copyto_json_perfomance_test.nocfbot. -- jian https://www.enterprisedb.com/ --000000000000ca6a48064c859c4c Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v28-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmhyc4mc1 RnJvbSA0MzlmYzEwN2M1MDQwOGY1MWUzMTkyZjIyMTM3M2UxMzMzNjcyMDYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgOCBNYXIgMjAyNiAyMzo0NDoxMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI4 IDIvNF0ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KClRoaXMgaW50cm9kdWNlcyB0aGUgSlNPTiBm b3JtYXQgb3B0aW9uIGZvciB0aGUgQ09QWSBUTyBjb21tYW5kLCBhbGxvd2luZyB1c2Vycwp0byBl eHBvcnQgcXVlcnkgcmVzdWx0cyBvciB0YWJsZSBkYXRhIGRpcmVjdGx5IGFzIGEgc2luZ2xlIEpT T04gb2JqZWN0IG9yIGEKc3RyZWFtIG9mIEpTT04gb2JqZWN0cy4KClRoZSBKU09OIGZvcm1hdCBp cyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgZm9yIENPUFkgVE8gb3BlcmF0aW9uczsgaXQKaXMg bm90IGF2YWlsYWJsZSBmb3IgQ09QWSBGUk9NLgoKSlNPTiBmb3JtYXQgaXMgaW5jb21wYXRpYmxl IHdpdGggc29tZSBzdGFuZGFyZCB0ZXh0L0NTViBwYXJzaW5nIG9yIGZvcm1hdHRpbmcgb3B0aW9u cywKaW5jbHVkaW5nOgotIEhFQURFUgotIERFRkFVTFQKLSBOVUxMCi0gREVMSU1JVEVSCi0gRk9S Q0UgUVVPVEUgLyBGT1JDRSBOT1QgTlVMTAoKUmVncmVzc2lvbiB0ZXN0cyBjb3ZlcmluZyB2YWxp ZCBKU09OIGV4cG9ydHMgYW5kIGVycm9yIGhhbmRsaW5nIGZvcgppbmNvbXBhdGlibGUgb3B0aW9u cyBoYXZlIGJlZW4gYWRkZWQgdG8gc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwuCgpBdXRo b3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNvbT4KQXV0aG9yOiBqaWFuIGhlIDxqaWFu LnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiAiQW5kcmV5IE0uIEJvcm9kaW4i IDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4sClJldmlld2VkLWJ5OiBEZWFuIFJhc2hlZWQgPGRlYW4u YS5yYXNoZWVkQGdtYWlsLmNvbT4sClJldmlld2VkLWJ5OiBEYW5pZWwgVmVyaXRlIDxkYW5pZWxA bWFuaXRvdS1tYWlsLm9yZz4sClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4sClJldmlld2VkLWJ5OiBEYXZpbiBTaGVhcmVyIDxkYXZpbkBhcGFjaGUub3Jn PiwKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwK UmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KUmV2 aWV3ZWQtYnk6IEp1bndhbmcgWmhhbyA8emhqd3BrdUBnbWFpbC5jb20+CgpkaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJf Y3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNv bQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAxMyArKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDQ5ICsrKysrKysrKysrLS0tLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgfCA4NiArKysrKysrKysrKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgIHwgIDggKysrCiBz cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAgICAgIHwgIDUgKy0KIHNyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5o ICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb24uaCAgICAgICAgICAgfCAgMiAr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgOTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgNTIg KysrKysrKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI3OCBpbnNlcnRpb25zKCspLCAz MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDBhZDg5MGVmOTVmLi43NWY1NWJiZjZm OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwKQEAgLTIyOCwxMCArMjI4LDE1IEBAIENPUFkgeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFj ZWFibGUKICAgICAgIFNlbGVjdHMgdGhlIGRhdGEgZm9ybWF0IHRvIGJlIHJlYWQgb3Igd3JpdHRl bjoKICAgICAgIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+LAogICAgICAgPGxpdGVyYWw+Y3N2PC9s aXRlcmFsPiAoQ29tbWEgU2VwYXJhdGVkIFZhbHVlcyksCisgICAgICA8bGl0ZXJhbD5qc29uPC9s aXRlcmFsPiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pLAogICAgICAgb3IgPGxpdGVyYWw+ YmluYXJ5PC9saXRlcmFsPi4KICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnRleHQ8L2xp dGVyYWw+LgogICAgICAgU2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1jb3B5LWZpbGUtZm9ybWF0cyIv PiBiZWxvdyBmb3IgZGV0YWlscy4KICAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFRo ZSA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBvcHRpb24gaXMgYWxsb3dlZCBvbmx5IGluCisgICAg ICA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPi4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMjY2LDcgKzI3MSw3IEBAIENPUFkgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8 cmVwbGFjZWFibGUKICAgICAgIChsaW5lKSBvZiB0aGUgZmlsZS4gIFRoZSBkZWZhdWx0IGlzIGEg dGFiIGNoYXJhY3RlciBpbiB0ZXh0IGZvcm1hdCwKICAgICAgIGEgY29tbWEgaW4gPGxpdGVyYWw+ Q1NWPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgICBUaGlzIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5 dGUgY2hhcmFjdGVyLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2lu ZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMgb3B0aW9uIGlz IG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0yODAsNyArMjg1LDcgQEAgQ09QWSB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBs YWNlYWJsZQogICAgICAgc3RyaW5nIGluIDxsaXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LiBZ b3UgbWlnaHQgcHJlZmVyIGFuCiAgICAgICBlbXB0eSBzdHJpbmcgZXZlbiBpbiB0ZXh0IGZvcm1h dCBmb3IgY2FzZXMgd2hlcmUgeW91IGRvbid0IHdhbnQgdG8KICAgICAgIGRpc3Rpbmd1aXNoIG51 bGxzIGZyb20gZW1wdHkgc3RyaW5ncy4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2Vk IHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBUaGlz IG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAKICAg ICAgPG5vdGU+CkBAIC0zMDMsNyArMzA4LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAg ICAgaXMgZm91bmQgaW4gdGhlIGlucHV0IGZpbGUsIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBj b3JyZXNwb25kaW5nIGNvbHVtbgogICAgICAgd2lsbCBiZSB1c2VkLgogICAgICAgVGhpcyBvcHRp b24gaXMgYWxsb3dlZCBvbmx5IGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4sIGFuZCBv bmx5IHdoZW4KLSAgICAgIG5vdCB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1h dC4KKyAgICAgIG5vdCB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFs Pmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTMzMCw3ICszMzUsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlCiAgICAgICA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGNvbW1hbmRzLgogICAgICA8 L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hl biB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMgb3B0 aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggMmY0NmJlNTE2 ZjIuLjI5YzEyMWM3ZjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01OTcsNiArNTk3LDggQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQlvcHRzX291dC0+Zm9ybWF0 ID0gQ09QWV9GT1JNQVRfQ1NWOwogCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwgImJpbmFyeSIpID09 IDApCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0JJTkFSWTsKKwkJCWVsc2Ug aWYgKHN0cmNtcChmbXQsICJqc29uIikgPT0gMCkKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09Q WV9GT1JNQVRfSlNPTjsKIAkJCWVsc2UKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC03NTYsMjEgKzc1OCwzMiBA QCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIENoZWNrIGZvciBp bmNvbXBhdGlibGUgb3B0aW9ucyAobXVzdCBkbyB0aGVzZSB0aHJlZSBiZWZvcmUgaW5zZXJ0aW5n CiAJICogZGVmYXVsdHMpCiAJICovCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JN QVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmRlbGltICYmCisJ CShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSB8fAorCQkgb3B0c19vdXQt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUg bmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCi0JCQkJIGVycm1zZygiY2Fu bm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpKTsKKwkJCQllcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlf Rk9STUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkg bW9kZSIsICJERUxJTUlURVIiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBK U09OIG1vZGUiLCAiREVMSU1JVEVSIikpOwogCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQorCWlmIChvcHRzX291dC0+ bnVsbF9wcmludCAmJgorCQkob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkg fHwKKwkJIG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikpCiAJCWVyZXBvcnQo RVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJtc2co ImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIk5VTEwiKSkpOworCQkJCWVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfQklOQVJZCisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBt b2RlIiwgIk5VTEwiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1v ZGUiLCAiTlVMTCIpKTsKIAotCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJ TkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwlpZiAob3B0c19vdXQtPmRlZmF1bHRf cHJpbnQgJiYKKwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZIHx8CisJ CSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pKQogCQllcmVwb3J0KEVSUk9S LAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5u b3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUZBVUxUIikpKTsKKwkJCQllcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9S TUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9k ZSIsICJERUZBVUxUIikKKwkJCQk6IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gSlNPTiBt b2RlIiwgIkRFRkFVTFQiKSk7CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9u cyAqLwogCWlmICghb3B0c19vdXQtPmRlbGltKQpAQCAtODM2LDExICs4NDksMTUgQEAgUHJvY2Vz c0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGlt aXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRlbGltKSkpOwogCiAJLyogQ2hlY2sg aGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYm IG9wdHNfb3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkKKwlpZiAob3B0c19v dXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFICYmCisJCShvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSB8fAorCQkgb3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9KU09OKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0 aW9uLCBlLmcuIE9OX0VSUk9SICovCi0JCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4g QklOQVJZIG1vZGUiLCAiSEVBREVSIikpKTsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlf Rk9STUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkg bW9kZSIsICJIRUFERVIiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09O IG1vZGUiLCAiSEVBREVSIikpOwogCiAJLyogQ2hlY2sgcXVvdGUgKi8KIAlpZiAob3B0c19vdXQt PmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPnF1b3RlICE9IE5VTEwpCkBA IC05NDQsNiArOTYxLDEyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJIGVycm1zZygiQ09QWSAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgIkZSRUVaRSIs CiAJCQkJCQkiQ09QWSBUTyIpKSk7CiAKKwkvKiBDaGVjayBqc29uIGZvcm1hdCAqLworCWlmIChv cHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgaXNfZnJvbSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCWVycm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiSlNPTiIs ICJDT1BZIEZST00iKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCiAJewogCQlp ZiAoIWlzX2Zyb20pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGIwZWU5MWZjOWMxLi42OTcxZjRi ODVhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJl eGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVk ZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUg Im1iL3BnX3djaGFyLmgiCkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNs dWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTg1LDYgKzg3 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVtbGlz dDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpmaWxl bmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlpc19wcm9n cmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCisJU3RyaW5nSW5m bwlqc29uX2J1ZjsJCS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRwdXQsIGl0IGlzCisJ CQkJCQkJCSAqIGluaXRsaWF6ZWQgaW4gQmVnaW5Db3B5VG8gICovCiAJY29weV9kYXRhX2Rlc3Rf Y2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCiAKIAlDb3B5 Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtMTMxLDYgKzEzNSw3IEBAIHN0YXRpYyB2b2lkIENvcHlU b0NTVk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0 YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5 VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOworc3RhdGljIHZvaWQgQ29weVRvSnNv bk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0YXRp YyB2b2lkIENvcHlUb0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1 cERlc2MpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3Rh dGUsIE9pZCBhdHR0eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0Jp bmFyeU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAg LTE0OSw5ICsxNTQsNiBAQCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRlIGNz dGF0ZSwgaW50MTYgdmFsKTsKIAogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWlu IGZvcm1hdHMuCi0gKgotICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4 dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKLSAqIG9uZS1yb3cgY2FsbGJhY2suCiAgKi8K IAogLyogdGV4dCBmb3JtYXQgKi8KQEAgLTE3MCw2ICsxNzIsMTQgQEAgc3RhdGljIGNvbnN0IENv cHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTViA9IHsKIAkuQ29weVRvRW5kID0gQ29weVRvVGV4 dExpa2VFbmQsCiB9OwogCisvKiBqc29uIGZvcm1hdCAqLworc3RhdGljIGNvbnN0IENvcHlUb1Jv dXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExp a2VTdGFydCwKKwkuQ29weVRvT3V0RnVuYyA9IENvcHlUb1RleHRMaWtlT3V0RnVuYywKKwkuQ29w eVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJvdywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExp a2VFbmQsCit9OworCiAvKiBiaW5hcnkgZm9ybWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91 dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFy eVN0YXJ0LApAQCAtMTg2LDEyICsxOTYsMTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5 Rm9ybWF0T3B0aW9ucyAqb3B0cykKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2Ug aWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRv Um91dGluZUJpbmFyeTsKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNP TikKKwkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAq LwogCXJldHVybiAmQ29weVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9m IHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxl bWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBm b3JtYXRzICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBj c3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogewpAQCAtMjEwLDYgKzIyMiw4IEBAIENvcHlUb1Rl eHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJTGlz dENlbGwgICAqY3VyOwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxzZTsKIAorCQlBc3NlcnQoY3N0 YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKTsKKwogCQlmb3JlYWNoKGN1ciwg Y3N0YXRlLT5hdHRudW1saXN0KQogCQl7CiAJCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1 cik7CkBAIC0yMzIsNyArMjQ2LDcgQEAgQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBj c3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogfQogCiAvKgotICogSW1wbGVtZW50YXRpb24gb2Yg dGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24KKyAq IEltcGxlbWVudGF0aW9uIG9mIHRoZSBvdXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFu ZCBqc29uIGZvcm1hdHMuIEFzc2lnbgogICogdGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRo ZSBnaXZlbiAqZmluZm8uCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0zMDUsMTMgKzMxOSwzOSBAQCBD b3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlr ZUVuZE9mUm93KGNzdGF0ZSk7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2Fs bGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0 aGUgZW5kIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRp YyB2b2lkCiBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90 aGluZyB0byBkbyBoZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2Fs bGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJvdyhD b3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCURhdHVtCQlyb3dk YXRhOworCisJLyoKKwkgKiBjb21wb3NpdGVfdG9fanNvbigpIHJlcXVpcmVzIGEgc3RhYmxlIFR1 cGxlRGVzYy4gU2luY2UgdGhlIHNsb3QncworCSAqIGRlc2NyaXB0b3IgKHNsb3QtPnR0c190dXBs ZURlc2NyaXB0b3IpIGNhbiBjaGFuZ2UgZHVyaW5nIHRoZSBleGVjdXRpb24KKwkgKiBvZiBhIFNF TEVDVCBxdWVyeSwgd2UgdXNlIGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjIGluc3RlYWQuIFRo aXMKKwkgKiBwcmVjYXV0aW9uIGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gdGhlIG91dHB1dCBzbG90 J3MgVHVwbGVEZXNjIGlzIG9mCisJICogdHlwZSBSRUNPUkRPSUQuCisJICovCisJaWYgKCFjc3Rh dGUtPnJlbCAmJiBzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT50ZHR5cGVpZCA9PSBSRUNPUkRP SUQpCisJCXNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVw RGVzYzsKKworCXJlc2V0U3RyaW5nSW5mbyhjc3RhdGUtPmpzb25fYnVmKTsKKworCXJvd2RhdGEg PSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7CisJY29tcG9zaXRlX3RvX2pzb24o cm93ZGF0YSwgY3N0YXRlLT5qc29uX2J1ZiwgZmFsc2UpOworCisJQ29weVNlbmREYXRhKGNzdGF0 ZSwgY3N0YXRlLT5qc29uX2J1Zi0+ZGF0YSwgY3N0YXRlLT5qc29uX2J1Zi0+bGVuKTsKKworCUNv cHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOworfQorCiAvKgogICogSW1wbGVtZW50YXRp b24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNrIGZvciBiaW5hcnkgZm9ybWF0LiBTZW5kIGEgaGVhZGVy CiAgKiBmb3IgYSBiaW5hcnkgY29weS4KQEAgLTQwMyw5ICs0NDMsMjMgQEAgU2VuZENvcHlCZWdp bihDb3B5VG9TdGF0ZSBjc3RhdGUpCiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29w eU91dFJlc3BvbnNlKTsKIAlwcV9zZW5kYnl0ZSgmYnVmLCBmb3JtYXQpOwkvKiBvdmVyYWxsIGZv cm1hdCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCBuYXR0cyk7Ci0JZm9yIChpID0gMDsgaSA8IG5h dHRzOyBpKyspCi0JCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZv cm1hdHMgKi8KKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKQor CXsKKwkJcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKKwkJZm9yIChpID0gMDsgaSA8IG5hdHRz OyBpKyspCisJCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3Jt YXRzICovCisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEZvciBKU09OIGZvcm1hdCwgcmVwb3J0 IG9uZSB0ZXh0LWZvcm1hdCBjb2x1bW4uICBFYWNoIENvcHlEYXRhCisJCSAqIG1lc3NhZ2UgY29u dGFpbnMgb25lIGNvbXBsZXRlIEpTT04gb2JqZWN0LCBub3QgaW5kaXZpZHVhbCBjb2x1bW4KKwkJ ICogdmFsdWVzLCBzbyB0aGUgcGVyLWNvbHVtbiBjb3VudCBpcyBhbHdheXMgMS4KKwkJICovCisJ CXBxX3NlbmRpbnQxNigmYnVmLCAxKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIDApOworCX0KKwog CXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CiAJY3N0YXRlLT5jb3B5X2Rlc3QgPSBDT1BZX0ZST05URU5E OwogfQpAQCAtNTA3LDcgKzU2MSw3IEBAIENvcHlTZW5kRW5kT2ZSb3coQ29weVRvU3RhdGUgY3N0 YXRlKQogfQogCiAvKgotICogV3JhcHBlciBmdW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9mUm93IGZv ciB0ZXh0IGFuZCBDU1YgZm9ybWF0cy4gU2VuZHMgdGhlCisgKiBXcmFwcGVyIGZ1bmN0aW9uIG9m IENvcHlTZW5kRW5kT2ZSb3cgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4gU2VuZHMg dGhlCiAgKiBsaW5lIHRlcm1pbmF0aW9uIGFuZCBkbyBjb21tb24gYXBwcm9wcmlhdGUgdGhpbmdz IGZvciB0aGUgZW5kIG9mIHJvdy4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCkBAIC04ODYsMTEg Kzk0MCwyMyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCUV4ZWN1dG9yU3Rh cnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOwogCiAJCXR1cERlc2MgPSBjc3RhdGUtPnF1ZXJ5RGVz Yy0+dHVwRGVzYzsKKwkJdHVwRGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cERlc2MpOwogCX0KIAog CS8qIEdlbmVyYXRlIG9yIGNvbnZlcnQgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHByb2Nlc3MgKi8K IAljc3RhdGUtPmF0dG51bWxpc3QgPSBDb3B5R2V0QXR0bnVtcyh0dXBEZXNjLCBjc3RhdGUtPnJl bCwgYXR0bmFtZWxpc3QpOwogCisJLyogSlNPTiBvdXRwdXRzIHdob2xlIHJvd3M7IGEgY29sdW1u IGxpc3QgZG9lc24ndCBtYWtlIHNlbnNlICovCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0g Q09QWV9GT1JNQVRfSlNPTikKKwl7CisJCWNzdGF0ZS0+anNvbl9idWYgPSBtYWtlU3RyaW5nSW5m bygpOworCisJCWlmIChhdHRuYW1lbGlzdCAhPSBOSUwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJj b2x1bW4gc2VsZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBtb2RlIikpOworCX0KKwog CW51bV9waHlzX2F0dHJzID0gdHVwRGVzYy0+bmF0dHM7CiAKIAkvKiBDb252ZXJ0IEZPUkNFX1FV T1RFIG5hbWUgbGlzdCB0byBwZXItY29sdW1uIGZsYWdzLCBjaGVjayB2YWxpZGl0eSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggOWNiZThlYWZjNDUuLjEzNmZkMTliODU0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTM2 MTIsNiArMzYxMiwxMCBAQCBjb3B5X29wdF9pdGVtOgogCQkJCXsKIAkJCQkJJCQgPSBtYWtlRGVm RWxlbSgiZm9ybWF0IiwgKE5vZGUgKikgbWFrZVN0cmluZygiY3N2IiksIEAxKTsKIAkJCQl9CisJ CQl8IEpTT04KKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsIChOb2RlICop IG1ha2VTdHJpbmcoImpzb24iKSwgQDEpOworCQkJCX0KIAkJCXwgSEVBREVSX1AKIAkJCQl7CiAJ CQkJCSQkID0gbWFrZURlZkVsZW0oImhlYWRlciIsIChOb2RlICopIG1ha2VCb29sZWFuKHRydWUp LCBAMSk7CkBAIC0zNjk0LDYgKzM2OTgsMTAgQEAgY29weV9nZW5lcmljX29wdF9lbGVtOgogCQkJ CXsKIAkJCQkJJCQgPSBtYWtlRGVmRWxlbSgkMSwgJDIsIEAxKTsKIAkJCQl9CisJCQl8IEZPUk1B VF9MQSBjb3B5X2dlbmVyaWNfb3B0X2FyZworCQkJCXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgi Zm9ybWF0IiwgJDIsIEAxKTsKKwkJCQl9CiAJCTsKIAogY29weV9nZW5lcmljX29wdF9hcmc6CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb24uYwppbmRleCAwYjE2MTM5ODQ2NS4uZjYwOWQ3Yjk0MTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb24uYwpAQCAtODYsOCArODYsNiBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQWdnU3RhdGUKIAlK c29uVW5pcXVlQnVpbGRlclN0YXRlIHVuaXF1ZV9jaGVjazsKIH0gSnNvbkFnZ1N0YXRlOwogCi1z dGF0aWMgdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8g cmVzdWx0LAotCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9mZWVkcyk7CiBzdGF0aWMgdm9pZCBhcnJh eV9kaW1fdG9fanNvbihTdHJpbmdJbmZvIHJlc3VsdCwgaW50IGRpbSwgaW50IG5kaW1zLCBpbnQg KmRpbXMsCiAJCQkJCQkJICBjb25zdCBEYXR1bSAqdmFscywgY29uc3QgYm9vbCAqbnVsbHMsIGlu dCAqdmFsY291bnQsCiAJCQkJCQkJICBKc29uVHlwZUNhdGVnb3J5IHRjYXRlZ29yeSwgT2lkIG91 dGZ1bmNvaWQsCkBAIC01MTcsOCArNTE1LDkgQEAgYXJyYXlfdG9fanNvbl9pbnRlcm5hbChEYXR1 bSBhcnJheSwgU3RyaW5nSW5mbyByZXN1bHQsIGJvb2wgdXNlX2xpbmVfZmVlZHMpCiAKIC8qCiAg KiBUdXJuIGEgY29tcG9zaXRlIC8gcmVjb3JkIGludG8gSlNPTi4KKyAqIEV4cG9ydGVkIHNvIENP UFkgVE8gY2FuIHVzZSBpdC4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGNvbXBvc2l0ZV90b19q c29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsIGJvb2wgdXNlX2xpbmVfZmVl ZHMpCiB7CiAJSGVhcFR1cGxlSGVhZGVyIHRkOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDY0 ODRjNmEzZGQ0Li5iYjgyYmRiY2M0OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzQyNSw3 ICszNDI1LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAKIAkJCS8q IENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIIChGT1JNQVQgKi8KIAkJ CWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGT1JNQVQiKSkKLQkJCQlDT01QTEVURV9XSVRIKCJiaW5h cnkiLCAiY3N2IiwgInRleHQiKTsKKwkJCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAiY3N2Iiwg InRleHQiLCAianNvbiIpOwogCiAJCQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018VE8gZmls ZW5hbWUgV0lUSCAoRlJFRVpFICovCiAJCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiRlJFRVpFIikp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5LmgKaW5kZXggMjQzMGZiMGIyZTUuLjJiNWJlZjY3MzhlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv Y29weS5oCkBAIC01Nyw2ICs1Nyw3IEBAIHR5cGVkZWYgZW51bSBDb3B5Rm9ybWF0CiAJQ09QWV9G T1JNQVRfVEVYVCA9IDAsCiAJQ09QWV9GT1JNQVRfQklOQVJZLAogCUNPUFlfRk9STUFUX0NTViwK KwlDT1BZX0ZPUk1BVF9KU09OLAogfSBDb3B5Rm9ybWF0OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbi5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCmluZGV4IGY4 Y2M1MmIxZTc4Li4yZjRiZTQwNTE4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNv bi5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaApAQCAtMTcsNiArMTcsOCBAQAogI2lu Y2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAKIC8qIGZ1bmN0aW9ucyBpbiBqc29uLmMgKi8KK2V4 dGVybiB2b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyBy ZXN1bHQsCisJCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIGV4dGVybiB2b2lkIGVzY2Fw ZV9qc29uKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpzdHIpOwogZXh0ZXJuIHZvaWQgZXNj YXBlX2pzb25fd2l0aF9sZW4oU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0ciwgaW50IGxl bik7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbl90ZXh0KFN0cmluZ0luZm8gYnVmLCBjb25zdCB0 ZXh0ICp0eHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKaW5kZXggZDBkNTYzZTBmYTgu LjcyMDExZjM0OTJjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHku b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKQEAgLTczLDYgKzcz LDk3IEBAIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBjc3YgaGVhZGVyOwogYzEsImNvbCB3aXRo ICwgY29tbWEiLCJjb2wgd2l0aCAiIiBxdW90ZSIKIDEsYSwxCiAyLGIsMgorLS0tIHRlc3QgY29w eWluZyBpbiBKU09OIG1vZGUgd2l0aCB2YXJpb3VzIHN0eWxlcworY29weSAoc2VsZWN0IDEgdW5p b24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOworeyI/Y29sdW1u PyI6MX0KK3siP2NvbHVtbj8iOjJ9Citjb3B5ICh2YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3 aXRoIChmb3JtYXQganNvbik7Cit7ImNvbHVtbjEiOjF9Cit7ImNvbHVtbjEiOjJ9Citjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCBqc29uOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVm IiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIi OjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9Citjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHlsZSI6IkRPUyIsInRlc3Qi OiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5k ZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVy IjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxs ZXIiOjR9Citjb3B5IChzZWxlY3QgKiBmcm9tIGNvcHl0ZXN0KSB0byBzdGRvdXQgKGZvcm1hdCBq c29uKTsKK3sic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3si c3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1h YyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRl c3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorLS0gYWxsIG9mIHRoZSBmb2xsb3dp bmcgc2hvdWxkIHlpZWxkIGVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIGRlbGltaXRlciAnfCcpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBERUxJTUlURVIgaW4g SlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG51bGwgJ1xO Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IE5VTEwgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlZmF1bHQgJ3wnKTsKK0VSUk9SOiAgY2Fubm90 IHNwZWNpZnkgREVGQVVMVCBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgaGVhZGVyKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgSEVBREVSIGluIEpT T04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBoZWFkZXIgMSk7 CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRl c3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgcXVvdGUgJyInKTsKK0VSUk9SOiAgQ09QWSBRVU9U RSByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBlc2NhcGUgJyInKTsKK0VSUk9SOiAgQ09QWSBFU0NBUEUgcmVxdWlyZXMgQ1NWIG1vZGUKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfcXVvdGUgKik7CitFUlJP UjogIENPUFkgRk9SQ0VfUVVPVEUgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vfbm90X251bGwgKik7CitFUlJPUjogIENPUFkgRk9S Q0VfTk9UX05VTEwgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgZm9yY2VfbnVsbCAqKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9OVUxMIHJlcXVp cmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vy cm9yIGlnbm9yZSk7CitFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBD T1BZIFRPCitMSU5FIDE6IGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25f ZXJyb3IgaWdub3JlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIHJlamVjdF9saW1p dCAxKTsKK0VSUk9SOiAgQ09QWSBSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUg c2V0IHRvIElHTk9SRQorY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKK0VS Uk9SOiAgQ09QWSBKU09OIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KK2NvcHkg Y29weXRlc3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK0VSUk9SOiAgY29sdW1u IHNlbGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT04gbW9kZQorLS0gYWxsIG9mIHRoZSBh Ym92ZSBzaG91bGQgeWllbGQgZXJyb3IKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwor Y3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWwsCisgICAg ZjEgdGV4dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QK KyAgc2VsZWN0IGcuaSwKKyAgICAgICAgIENBU0UgV0hFTiBnLmkgJSAyID0gMCBUSEVOCisgICAg ICAgICAgICdsaW5lIHdpdGggJycgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTFNF CisgICAgICAgICAgICdsaW5lIHdpdGggIiBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAg IEVORCwKKyAgICAgICAgICdNb24gRmViIDEwIDE3OjMyOjAxIDE5OTcgUFNUJworICBmcm9tIGdl bmVyYXRlX3NlcmllcygxLDUpIGFzIGcoaSk7CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QgKGYx KSB2YWx1ZXMKKyhFJ2FhYVwiYmJiJzo6dGV4dCksCisoRSdhYWFcXGJiYic6OnRleHQpLAorKEUn YWFhXC9iYmInOjp0ZXh0KSwKKyhFJ2FhYVxiYmJiJzo6dGV4dCksCisoRSdhYWFcZmJiYic6OnRl eHQpLAorKEUnYWFhXG5iYmInOjp0ZXh0KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCksCisoRSdhYWFc dGJiYic6OnRleHQpOworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0IGpzb247Cit7ImlkIjox LCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogMSIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0w ODowMCJ9Cit7ImlkIjoyLCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiAyIiwiZjIiOiIxOTk3LTAy LTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjMsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiAz IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjQsImYxIjoibGluZSB3 aXRoICcgaW4gaXQ6IDQiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6 NSwiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDUiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEt MDg6MDAifQoreyJpZCI6MSwiZjEiOiJhYWFcImJiYiIsImYyIjpudWxsfQoreyJpZCI6MiwiZjEi OiJhYWFcXGJiYiIsImYyIjpudWxsfQoreyJpZCI6MywiZjEiOiJhYWEvYmJiIiwiZjIiOm51bGx9 Cit7ImlkIjo0LCJmMSI6ImFhYVxiYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo1LCJmMSI6ImFhYVxm YmJiIiwiZjIiOm51bGx9Cit7ImlkIjo2LCJmMSI6ImFhYVxuYmJiIiwiZjIiOm51bGx9Cit7Imlk Ijo3LCJmMSI6ImFhYVxyYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo4LCJmMSI6ImFhYVx0YmJiIiwi ZjIiOm51bGx9CiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVzdDQgKAogCWMxIGludCwKIAkiY29s bmFtZSB3aXRoIHRhYjogCSIgdGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCmluZGV4IDY1Y2JkYWY3 ZjNlLi5hNmM5MjNlZjVhYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKQEAgLTgyLDYgKzgyLDU4IEBA IHRoaXMgaXMganVzdCBhIGxpbmUgZnVsbCBvZiBqdW5rIHRoYXQgd291bGQgZXJyb3Igb3V0IGlm IHBhcnNlZAogCiBjb3B5IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsKIAorLS0tIHRl c3QgY29weWluZyBpbiBKU09OIG1vZGUgd2l0aCB2YXJpb3VzIHN0eWxlcworY29weSAoc2VsZWN0 IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOworY29w eSAodmFsdWVzICgxKSwgKDIpKSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOworY29weSBj b3B5dGVzdCB0byBzdGRvdXQganNvbjsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbik7Citjb3B5IChzZWxlY3QgKiBmcm9tIGNvcHl0ZXN0KSB0byBzdGRvdXQgKGZvcm1hdCBq c29uKTsKKworLS0gYWxsIG9mIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHlpZWxkIGVycm9yCitjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlbGltaXRlciAnfCcpOworY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicpOworY29weSBjb3B5dGVz dCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7Citjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24sIGhlYWRlciAxKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgcXVvdGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg ZXNjYXBlICciJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X3F1b3RlICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9u b3RfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vf bnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3Ig aWdub3JlKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgcmVqZWN0X2xp bWl0IDEpOworY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKK2NvcHkgY29w eXRlc3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKKy0tIGFsbCBvZiB0aGUgYWJv dmUgc2hvdWxkIHlpZWxkIGVycm9yCisKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwor Y3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWwsCisgICAg ZjEgdGV4dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CisKK2luc2VydCBpbnRvIGNvcHlqc29udGVz dAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAwIFRIRU4KKyAg ICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVM U0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAg ICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1QnCisgIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKKworaW5zZXJ0IGludG8gY29weWpzb250ZXN0 IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwK KyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmIn Ojp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUn YWFhXHRiYmInOjp0ZXh0KTsKKworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0IGpzb247CisK IGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAogCSJjb2xuYW1lIHdpdGgg dGFiOiAJIiB0ZXh0KTsKLS0gCjIuMzQuMQoK --000000000000ca6a48064c859c4c Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v28-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmhyc4m50 RnJvbSAyMjZjODM0ZTkzMzUxZmZkYTAzOTc3NGZiZDRiNTdhOWFiMTZiNGY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy OCAxLzRdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD dXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0d28gYm9vbGVh bnMgKGJpbmFyeSwgY3N2X21vZGUpCmZpZWxkcyBpbiBDb3B5Rm9ybWF0T3B0aW9ucyBUaGlzIGFw cHJvYWNoLCB3aGlsZSBmdW5jdGlvbmFsLCBpc24ndCBpZGVhbCBmb3IKZnV0dXJlIG90aGVyIGlt cGxlbWVudCBvdGhlciBmb3JtYXQuCgpUbyBzaW1wbGlmeSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdl J3ZlIGludHJvZHVjZWQgYW4gZW51bSBDb3B5Rm9ybWF0LiBUaGlzIG1ha2VzCnRoZSBjb2RlIGNs ZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5hYmxlLCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0 aW9uIG9mCmFkZGl0aW9uYWwgZm9ybWF0cyBkb3duIHRoZSBsaW5lLgoKVGhlIENvcHlGb3JtYXQg ZW51bSB3YXMgb3JpZ2luYWxseSBjb250cmlidXRlZCBieSBKb2VsIEphY29ic29uIDxqb2VsQGNv bXBpbGVyLm9yZz4sCmxhdGVyIHJlZmFjdG9yZWQgYnkgSmlhbiBIZSB0byBhZGRyZXNzIHZhcmlv dXMgaXNzdWVzLgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1 dVdQRlZ3cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29t CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUt NWE4ZGMzMDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAg IHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAx ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IDYzYjg2ODAyYmEyLi4yZjQ2YmU1MTZmMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTc2LDYgKzU3Niw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9jMF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwog CiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLwor CW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRp b25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0 aW9ucykKQEAgLTU5MCwxMSArNTkyLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJ CQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09 IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENP UFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZ X0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNzU0LDMxICs3NTYsMzEg QEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3Ig aW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGlu ZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0 LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYg b3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAl cyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5h cnkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5u b3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291 dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJ IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7 CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19v dXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiLCIg OiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0c19vdXQtPm51bGxfcHJpbnQpCi0J CW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQtPmNzdl9tb2RlID8gIiIgOiAiXFxOIjsK KwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRzX291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4o b3B0c19vdXQtPm51bGxfcHJpbnQpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0 LT5xdW90ZSkKIAkJCW9wdHNfb3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MjYsNyArODI4LDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2Zp bmcuICBMaWtld2lzZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJ ICogZGlnaXRzIGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+ Y3N2X21vZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYK IAkJc3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAtODM0 LDQzICs4MzYsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRl bGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYg b3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUg IT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVj ayBxdW90ZSAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAh PSBOVUxMKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRz X291dC0+cXVvdGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUg bmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09Q WSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNz dl9tb2RlICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBvbmUtYnl0 ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3Rl WzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVsaW1pdGVyIGFuZCBxdW90ZSBtdXN0 IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBlc2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0 LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBlICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIs ICJFU0NBUEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19v dXQtPmVzY2FwZSkgIT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9D U1YgJiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2co IkNPUFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9w dHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9x dW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCkBA IC04ODQsOCArODg2LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hlY2sgZm9yY2Vfbm90bnVsbCAqLwotCWlm ICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwg fHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQt PmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9 IE5JTCB8fAorCQkJCQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcu IE9OX0VSUk9SICovCkBAIC05MDAsOCArOTAyLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251 bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwg IT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVsbCAh PSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAog CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwpAQCAtOTI1LDcgKzkyNyw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBEb24ndCBhbGxvdyB0aGUgQ1NW IHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0cmluZy4gKi8KLQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NW ICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9wcmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAh PSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLApAQCAtOTYxLDcgKzk2Myw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFs bG93IHRoZSBDU1YgcXVvdGUgY2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAq LwotCQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBv cHRzX291dC0+cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NzgsNyArOTgwLDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRoZSBz YW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFy eSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQorCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+b25fZXJyb3Ig IT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMg YWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCAy ZjQyZjU1ZTIyOS4uNGQ5Mjc0MTAxNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU2 LDkgKzE1Niw5IEBAIHN0YXRpYyBjb25zdCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJv dXRpbmUoY29uc3QgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9t b2RlKQorCWlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNv cHlGcm9tUm91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0 cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRp bmVCaW5hcnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2Miw3ICsyNjIsNyBAQCBD b3B5RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNhbid0IHVz ZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0dG5hbWUpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggODRjODgwOWE4ODkuLjVmMGM1NTFl N2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0xNzMsNyArMTczLDcg QEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZv RGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3Qp OwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQx NgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8g MSA6IDApOwogCWludAkJCWk7CiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUlu UmVzcG9uc2UpOwpAQCAtNzUxLDcgKzc1MSw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxk cyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsK IAlyZXR1cm4gTmV4dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5m aWVsZHMsCi0JCQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNz dGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3OCw3 ICs3NzgsOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxzZTsK IAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFzc2VydCgh Y3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFU X0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFkZXIgbGluZSBpcyBjb3Jy ZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5lbm8gPT0gMCAmJiBjc3RhdGUt Pm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CmluZGV4IGQ2ZWY3Mjc1YTY0Li5iMGVlOTFmYzljMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAg LTE4Miw5ICsxODIsOSBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGlu ZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUp CisJaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRv Um91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5 OwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjEsNyArMjIxLDcgQEAgQ29weVRvVGV4 dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5hdHRu YW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRlT3V0Q1NWKGNz dGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRyaWJ1dGVPdXRUZXh0 KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgU2VuZENvcHlCZWdpbihDb3B5 VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0g bGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0 ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMu Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFf YmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK aW5kZXggODc3MjAyYWY2N2IuLjI0MzBmYjBiMmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2 ICs0OSwxNiBAQCB0eXBlZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9H X1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29w eUxvZ1ZlcmJvc2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0 aGUgQ09QWSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09Q WV9GT1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25z LCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1h dHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBo ZXJlLCBidXQKQEAgLTU5LDkgKzY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlv bnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVf ZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJ CQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmlu YXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENP UFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRp bmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0 PyAqLwogCWludAkJCWhlYWRlcl9saW5lOwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBD T1BZX0hFQURFUl9YWFgKIAkJCQkJCQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hh cgkgICAqbnVsbF9wcmludDsJCS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5n ISkgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMzI1MDU2NGQ0ZmYuLjUyMGNkZDM2 ODAwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI4LDYgKzUyOCw3IEBAIENvbnZl cnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQogQ29w eUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --000000000000ca6a48064c859c4c Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v28-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmhyc4ml3 RnJvbSAyNDdlY2VlZWFlYzYyNjc3ZDg5OWYyMjViZDgzOTA1ZGEyMWYwMDg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgOCBNYXIgMjAyNiAxNTo1NDoyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI4 IDMvNF0gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZPUk1BVAoKVGhpcyBh ZGRzIHRoZSBmb3JjZV9hcnJheSBvcHRpb24sIHdoaWNoIGlzIGF2YWlsYWJsZSBleGNsdXNpdmVs eQp3aGVuIHVzaW5nIENPUFkgVE8gd2l0aCB0aGUgSlNPTiBmb3JtYXQuCgpXaGVuIGVuYWJsZWQs IHRoaXMgb3B0aW9uIHdyYXBzIHRoZSBvdXRwdXQgaW4gYSB0b3AtbGV2ZWwgSlNPTiBhcnJheQoo ZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzIHdpdGggY29tbWEtc2VwYXJhdGVkIGVsZW1lbnRz KSwgbWFraW5nIHRoZQplbnRpcmUgcmVzdWx0IGEgdmFsaWQgc2luZ2xlIEpTT04gdmFsdWUuIFdp dGhvdXQgdGhpcyBvcHRpb24sIHRoZSBkZWZhdWx0CmJlaGF2aW9yIGlzIHRvIG91dHB1dCBhIHN0 cmVhbSBvZiBpbmRlcGVuZGVudCBKU09OIG9iamVjdHMuCgpBdHRlbXB0aW5nIHRvIHVzZSB0aGlz IG9wdGlvbiB3aXRoIENPUFkgRlJPTSBvciB3aXRoIGZvcm1hdHMgb3RoZXIgdGhhbgpKU09OIHdp bGwgcmFpc2UgYW4gZXJyb3IuCgpBdXRob3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNv bT4KQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBKdW53YW5nIFpoYW8gPHpoandwa3VAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWFzYWhp a28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+LApSZXZpZXdlZC1ieTogRmxvcmVudHMg VHNlbGFpIDxmbG9yZW50cy50c2VsYWlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1 bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2Nn JTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4 ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMv c2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICB8ICAyICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Lm91dCB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8IDEwICsrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQs IDEyNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggNzVm NTViYmY2ZjguLmE3OTU4N2Y3NjEzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDAsNiArNDAsNyBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgSEVBREVSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJsZT4gfCBNQVRDSCBdCiAgICAgUVVPVEUgJzxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdW90ZV9jaGFyYWN0ZXI8L3JlcGxhY2VhYmxlPicK ICAgICBFU0NBUEUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lc2NhcGVfY2hhcmFj dGVyPC9yZXBsYWNlYWJsZT4nCisgICAgRk9SQ0VfQVJSQVkgWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBGT1JDRV9RVU9URSB7ICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApIHwgKiB9CiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQog ICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQpAQCAtMzY2LDYgKzM2NywxOSBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY29weS1wYXJhbXMtZm9yY2UtYXJyYXkiPgor ICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFja2V0 cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5kIG9m IG91dHB1dCwgYW5kIGNvbW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9ubHkg aW4KKyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVzaW5n CisgICAgICA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlzCisg ICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jb3B5 LXBhcmFtcy1mb3JjZS1xdW90ZSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9SQ0VfUVVPVEU8L2xp dGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTExMDMsNiArMTExNywyMiBAQCBDT1BZ IGNvdW50cnkgVE8gU1RET1VUIChERUxJTUlURVIgJ3wnKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAg IDwvcGFyYT4KIAorPHBhcmE+CisgICBXaGVuIHRoZSA8bGl0ZXJhbD5GT1JDRV9BUlJBWTwvbGl0 ZXJhbD4gb3B0aW9uIGlzIGVuYWJsZWQsCisgICB0aGUgZW50aXJlIG91dHB1dCBpcyB3cmFwcGVk IGluIGEgc2luZ2xlIEpTT04gYXJyYXkgd2l0aCByb3dzIHNlcGFyYXRlZCBieSBjb21tYXM6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitDT1BZIChTRUxFQ1QgKiBGUk9NIChWQUxVRVMoMSksKDIpKSB2YWwo aWQpKSBUTyBTVERPVVQgIChGT1JNQVQgSlNPTiwgRk9SQ0VfQVJSQVkpOworPC9wcm9ncmFtbGlz dGluZz4KK1RoZSBvdXRwdXQgaXMgYXMgZm9sbG93czoKKzxzY3JlZW4+CitbCisgeyJpZCI6MX0K Kyx7ImlkIjoyfQorXQorPC9zY3JlZW4+Cis8L3BhcmE+CisKKwogICA8cGFyYT4KICAgIFRvIGNv cHkgZGF0YSBmcm9tIGEgZmlsZSBpbnRvIHRoZSA8bGl0ZXJhbD5jb3VudHJ5PC9saXRlcmFsPiB0 YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyOWMxMjFjN2YwOC4u ODQyNTRkNDZhNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU2OSw2ICs1NjksNyBAQCBQcm9jZXNz Q29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmll ZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9v bAkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9IGZhbHNlOworCWJvb2wJCWZvcmNlX2FycmF5X3Nw ZWNpZmllZCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAogCS8qIFN1cHBvcnQgZXh0 ZXJuYWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNoZWNraW5nICovCkBAIC03MjUsNiArNzI2LDEz IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCWRlZmVs LT5kZWZuYW1lKSwKIAkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9j YXRpb24pKSk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZm9yY2Vf YXJyYXkiKSA9PSAwKQorCQl7CisJCQlpZiAoZm9yY2VfYXJyYXlfc3BlY2lmaWVkKQorCQkJCWVy cm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOworCQkJZm9yY2VfYXJyYXlfc3Bl Y2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNfb3V0LT5mb3JjZV9hcnJheSA9IGRlZkdldEJvb2xlYW4o ZGVmZWwpOworCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgIm9uX2Vycm9y IikgPT0gMCkKIAkJewogCQkJaWYgKG9uX2Vycm9yX3NwZWNpZmllZCkKQEAgLTk2Nyw2ICs5NzUs MTEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCWVycm1zZygiQ09QWSAlcyBt b2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiSlNPTiIsICJDT1BZIEZST00iKSk7CiAKKwlp ZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5mb3Jj ZV9hcnJheSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBjYW4gb25seSBiZSB1c2VkIHdp dGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0 X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCA2OTcx ZjRiODVhZi4uMzhmYmY3ZDQ0MjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC04Nyw2ICs4Nyw3 IEBAIHR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCUxpc3QJICAgKmF0dG51bWxpc3Q7 CQkvKiBpbnRlZ2VyIGxpc3Qgb2YgYXR0bnVtcyB0byBjb3B5ICovCiAJY2hhcgkgICAqZmlsZW5h bWU7CQkvKiBmaWxlbmFtZSwgb3IgTlVMTCBmb3IgU1RET1VUICovCiAJYm9vbAkJaXNfcHJvZ3Jh bTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9ncmFtIHRvIHBvcGVuPyAqLworCWJvb2wJCWpzb25f cm93X2RlbGltX25lZWRlZDsJLyogbmVlZCBkZWxpbWl0ZXIgYmVmb3JlIG5leHQgcm93ICovCiAJ U3RyaW5nSW5mbwlqc29uX2J1ZjsJCS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRwdXQs IGl0IGlzCiAJCQkJCQkJCSAqIGluaXRsaWF6ZWQgaW4gQmVnaW5Db3B5VG8gICovCiAJY29weV9k YXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICov CkBAIC0xMzYsNiArMTM3LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VPbmVSb3coQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJIGJvb2wgaXNf Y3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVU YWJsZVNsb3QgKnNsb3QpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0ZSBj c3RhdGUpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRl LCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRGdW5jKENv cHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5mbyAqZmluZm8pOwogc3RhdGlj IHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNs b3QgKnNsb3QpOwpAQCAtMTc3LDcgKzE3OSw3IEBAIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5l IENvcHlUb1JvdXRpbmVKc29uID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb1RleHRMaWtlU3Rh cnQsCiAJLkNvcHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMsCiAJLkNvcHlUb09u ZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCi0JLkNvcHlUb0VuZCA9IENvcHlUb1RleHRMaWtlRW5k LAorCS5Db3B5VG9FbmQgPSBDb3B5VG9Kc29uRW5kLAogfTsKIAogLyogYmluYXJ5IGZvcm1hdCAq LwpAQCAtMjQzLDYgKzI0NSwxOCBAQCBDb3B5VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNz dGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpCiAKIAkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7CiAJfQorCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNP TikKKwl7CisJCS8qCisJCSAqIElmIEZPUkNFX0FSUkFZIGhhcyBiZWVuIHNwZWNpZmllZCwgc2Vu ZCB0aGUgb3BlbmluZyBicmFja2V0LgorCQkgKi8KKwkJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9h cnJheSkKKwkJeworCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJCUNvcHlTZW5kVGV4 dExpa2VFbmRPZlJvdyhjc3RhdGUpOworCQl9CisJfQogfQogCiAvKgpAQCAtMzE5LDEzICszMzMs MjQgQEAgQ29weVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLAogCUNvcHlTZW5k VGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogfQogCi0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg ZW5kIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KKy8qIEltcGxl bWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzICov CiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0YXRlKQogewog CS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg ZW5kIGNhbGxiYWNrIGZvciBqc29uIGZvcm1hdCAqLworc3RhdGljIHZvaWQKK0NvcHlUb0pzb25F bmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWlmIChjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkp CisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXScpOworCQlDb3B5U2VuZFRleHRMaWtlRW5k T2ZSb3coY3N0YXRlKTsKKwl9Cit9CisKIC8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2Fs bGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCiBzdGF0aWMgdm9pZAogQ29weVRvSnNvbk9uZVJvdyhD b3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQpAQCAtMzQ3LDYgKzM3Miwx OCBAQCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QpCiAJcm93ZGF0YSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShzbG90KTsKIAlj b21wb3NpdGVfdG9fanNvbihyb3dkYXRhLCBjc3RhdGUtPmpzb25fYnVmLCBmYWxzZSk7CiAKKwlp ZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCXsKKwkJaWYgKGNzdGF0ZS0+anNvbl9yb3df ZGVsaW1fbmVlZGVkKQorCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJywnKTsKKwkJZWxzZQorCQl7 CisJCQkvKiBmaXJzdCByb3cgbmVlZHMgbm8gZGVsaW1pdGVyICovCisJCQlDb3B5U2VuZENoYXIo Y3N0YXRlLCAnICcpOworCQkJY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOwor CQl9CisJfQorCiAJQ29weVNlbmREYXRhKGNzdGF0ZSwgY3N0YXRlLT5qc29uX2J1Zi0+ZGF0YSwg Y3N0YXRlLT5qc29uX2J1Zi0+bGVuKTsKIAogCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3Rh dGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGJiODJiZGJjYzQ4Li4wMDQ1OGNmYjRiYyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgQ29weV9jb21tb25f b3B0aW9ucywgIkRFRkFVTFQiLCAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVMTCIsICJGUkVF WkUiLCBcCiAKIC8qIENPUFkgVE8gb3B0aW9ucyAqLwogI2RlZmluZSBDb3B5X3RvX29wdGlvbnMg XAotQ29weV9jb21tb25fb3B0aW9ucywgIkZPUkNFX1FVT1RFIgorQ29weV9jb21tb25fb3B0aW9u cywgIkZPUkNFX1FVT1RFIiwgIkZPUkNFX0FSUkFZIgogCiAvKgogICogVGhlc2Ugb2JqZWN0IHR5 cGVzIHdlcmUgaW50cm9kdWNlZCBsYXRlciB0aGFuIG91ciBzdXBwb3J0IGN1dG9mZiBvZgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oCmluZGV4IDJiNWJlZjY3MzhlLi5hYmVjZmU1MTA5OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aApAQCAtODgsNiArODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0aW9ucwogCUxp c3QJICAgKmZvcmNlX25vdG51bGw7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJ Zm9yY2Vfbm90bnVsbF9hbGw7CS8qIEZPUkNFX05PVF9OVUxMICo/ICovCiAJYm9vbAkgICAqZm9y Y2Vfbm90bnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk5OIGZsYWdzICovCisJYm9vbAkJ Zm9yY2VfYXJyYXk7CS8qIGFkZCBKU09OIGFycmF5IGRlY29yYXRpb25zICovCiAJTGlzdAkgICAq Zm9yY2VfbnVsbDsJCS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJZm9yY2VfbnVs bF9hbGw7IC8qIEZPUkNFX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9udWxsX2ZsYWdzOwkv KiBwZXItY29sdW1uIENTViBGTiBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQK aW5kZXggNzIwMTFmMzQ5MmMuLmUxZDUxMzM1ZTMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eS5vdXQKQEAgLTgwLDYgKzgwLDE2IEBAIGNvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3Qg MikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIGNvcHkgKHZhbHVlcyAoMSksICgyKSkg VE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIHsiY29sdW1uMSI6MX0KIHsiY29sdW1uMSI6 Mn0KK2NvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZv cm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7Ij9jb2x1bW4/IjoxfQorLHsiP2Nv bHVtbj8iOjJ9CitdCitjb3B5ICh2YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3aXRoIChmb3Jt YXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CitbCisgeyJjb2x1bW4xIjoxfQorLHsiY29sdW1u MSI6Mn0KK10KIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247CiB7InN0eWxlIjoiRE9TIiwi dGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CiB7InN0eWxlIjoiVW5peCIsInRlc3QiOiJh YmNcbmRlZiIsImZpbGxlciI6Mn0KQEAgLTEyNyw2ICsxMzcsMjkgQEAgRVJST1I6ICBDT1BZIEpT T04gbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgRlJPTQogY29weSBjb3B5dGVzdCAoc3R5 bGUpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOwogRVJST1I6ICBjb2x1bW4gc2VsZWN0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBtb2RlCiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5 aWVsZCBlcnJvcgorLS0gc2hvdWxkIGZhaWw6IGZvcmNlX2FycmF5IHJlcXVpcmVzIGpzb24gZm9y bWF0Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1 ZSk7CitFUlJPUjogIENPUFkgRk9SQ0VfQVJSQVkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIEpTT04g bW9kZQorLS0gZm9yY2VfYXJyYXkgdmFyaWFudHMKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworWworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJj XHJcbmRlZiIsImZpbGxlciI6MX0KKyx7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIs ImZpbGxlciI6Mn0KKyx7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjoz fQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVy Ijo0fQorXQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJh eSB0cnVlKTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIi OjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJz dHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNj XFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29w eXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHls ZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgi LCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFi Y1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxy XFxcblxcbmIiLCJmaWxsZXIiOjR9CiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKIGNy ZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2VyaWFsLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5LnNxbAppbmRleCBhNmM5MjNlZjVhYi4uNzY0ZDE5ZjQ5NDcgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHkuc3FsCkBAIC04NSw2ICs4NSw4IEBAIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBjc3YgaGVh ZGVyOwogLS0tIHRlc3QgY29weWluZyBpbiBKU09OIG1vZGUgd2l0aCB2YXJpb3VzIHN0eWxlcwog Y29weSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0 IGpzb24pOwogY29weSAodmFsdWVzICgxKSwgKDIpKSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpz b24pOworY29weSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAo Zm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOworY29weSAodmFsdWVzICgxKSwgKDIpKSBU TyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOwogY29weSBjb3B5 dGVzdCB0byBzdGRvdXQganNvbjsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv bik7CiBjb3B5IChzZWxlY3QgKiBmcm9tIGNvcHl0ZXN0KSB0byBzdGRvdXQgKGZvcm1hdCBqc29u KTsKQEAgLTEwNiw2ICsxMDgsMTQgQEAgY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBq c29uKTsKIGNvcHkgY29weXRlc3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKIC0t IGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCiAKKy0tIHNob3VsZCBmYWlsOiBm b3JjZV9hcnJheSByZXF1aXJlcyBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworCistLSBmb3JjZV9hcnJheSB2YXJpYW50 cworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSk7Citj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOwor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxzZSk7 CisKIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwogY3JlYXRlIHRlbXAgdGFibGUgY29w eWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCi0tIAoyLjM0LjEKCg== --000000000000ca6a48064c859c4c Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0004-COPY-TO-JSON-support-column-lists.patch" Content-Disposition: attachment; filename="v28-0004-COPY-TO-JSON-support-column-lists.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmhyc4mh2 RnJvbSAzNjVmMzQwYTBiNzMzYTNkOWI1ZmRmNTQwYTI2MjNjM2VhOWQ0ZDhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgOCBNYXIgMjAyNiAyMzo1ODoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI4 IDQvNF0gQ09QWSBUTyBKU09OOiBzdXBwb3J0IGNvbHVtbiBsaXN0cwoKV2hlbiBhIGNvbHVtbiBs aXN0IGlzIHNwZWNpZmllZCAoZS5nLiBDT1BZIHQgKGEsIGIpIFRPIC4uLiBGT1JNQVQganNvbiks CmJ1aWxkIGEgcHJvamVjdGVkIFR1cGxlRGVzYyBjb250YWluaW5nIG9ubHkgdGhlIHNlbGVjdGVk IGNvbHVtbnMgYW5kCmZvcm0gYSBuZXcgdHVwbGUgcGVyIHJvdyB2aWEgaGVhcF9mb3JtX3R1cGxl KCksIHNvIHRoYXQgY29tcG9zaXRlX3RvX2pzb24oKQplbWl0cyB0aGUgY29ycmVjdCBjb2x1bW4g bmFtZXMgYW5kIHZhbHVlcy4KClVzZSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bSgpIGRpcmVjdGx5 IG9uIHRoZSBmb3JtZWQgdHVwbGUgcmF0aGVyIHRoYW4KaGVhcF9jb3B5X3R1cGxlX2FzX2RhdHVt KCksIHNpbmNlIGhlYXBfZm9ybV90dXBsZSgpIGFscmVhZHkgc3RhbXBzIHRoZQpkYXR1bS1sZW5n dGgsIHR5cGUtaWQsIGFuZCB0eXBlLW1vZCBmaWVsZHMgb24gdF9kYXRhLCBhdm9pZGluZyBhbgp1 bm5lY2Vzc2FyeSBwYWxsb2MrbWVtY3B5IHBlciByb3cuCgpBZGQgcmVncmVzc2lvbiB0ZXN0cyBj b3ZlcmluZyBjb2x1bW4gbGlzdHMgd2l0aCBkaXZlcnNlIGRhdGEgdHlwZXMKaW5jbHVkaW5nIGpz b24sIGpzb25iLCBpbnRbXSwgbnVtZXJpYywgYm9vbGVhbiwgdGltZXN0YW1wLCBhbmQgdGV4dCwK ZXhlcmNpc2luZyB2YXJpb3VzIGNvbHVtbiBzdWJzZXRzIGFuZCBOVUxMIGhhbmRsaW5nLgoKQXV0 aG9yOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IGpp YW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KCmRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJy TFUlM0RrY2clNDBtYWlsLmdtYWlsLmNvbQpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzZhMDQ2MjhkLTBkNTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bqb2Vjb253YXkuY29tCi0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDEwNSArKysrKysrKysrKysrKysr KysrKysrKystLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCB8ICA3MyAr KysrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8 ICA0MCArKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMjEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAzOGZiZjdkNDQyNC4uZmFhOGUz MjNmNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC04OCw4ICs4OCwxMyBAQCB0eXBlZGVmIHN0 cnVjdCBDb3B5VG9TdGF0ZURhdGEKIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBv ciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1l JyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCiAJYm9vbAkJanNvbl9yb3dfZGVsaW1fbmVlZGVkOwkv KiBuZWVkIGRlbGltaXRlciBiZWZvcmUgbmV4dCByb3cgKi8KLQlTdHJpbmdJbmZvCWpzb25fYnVm OwkJLyogcmV1c2FibGUgYnVmZmVyIGZvciBKU09OIG91dHB1dCwgaXQgaXMKLQkJCQkJCQkJICog aW5pdGxpYXplZCBpbiBCZWdpbkNvcHlUbyAgKi8KKwlTdHJpbmdJbmZvCWpzb25fYnVmOwkJLyog cmV1c2FibGUgYnVmZmVyIGZvciBKU09OIG91dHB1dCwKKwkJCQkJCQkJICogaW5pdGlhbGl6ZWQg aW4gQmVnaW5Db3B5VG8gKi8KKwlUdXBsZURlc2MJdHVwRGVzYzsJCS8qIERlc2NyaXB0b3IgZm9y IEpTT04gb3V0cHV0OyBmb3IgYSBjb2x1bW4KKwkJCQkJCQkJICogbGlzdCB0aGlzIGlzIGEgcHJv amVjdGVkIGRlc2NyaXB0b3IgKi8KKwlEYXR1bQkgICAqanNvbl9wcm9qdmFsdWVzOwkvKiBwcmUt YWxsb2NhdGVkIHByb2plY3Rpb24gdmFsdWVzLCBvcgorCQkJCQkJCQkJICogTlVMTCAqLworCWJv b2wJICAgKmpzb25fcHJvam51bGxzOyAvKiBwcmUtYWxsb2NhdGVkIHByb2plY3Rpb24gbnVsbHMs IG9yIE5VTEwgKi8KIAljb3B5X2RhdGFfZGVzdF9jYiBkYXRhX2Rlc3RfY2I7IC8qIGZ1bmN0aW9u IGZvciB3cml0aW5nIGRhdGEgKi8KIAogCUNvcHlGb3JtYXRPcHRpb25zIG9wdHM7CkBAIC0zNTcs MTkgKzM2Miw1MyBAQCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVU YWJsZVNsb3QgKnNsb3QpCiB7CiAJRGF0dW0JCXJvd2RhdGE7CiAKLQkvKgotCSAqIGNvbXBvc2l0 ZV90b19qc29uKCkgcmVxdWlyZXMgYSBzdGFibGUgVHVwbGVEZXNjLiBTaW5jZSB0aGUgc2xvdCdz Ci0JICogZGVzY3JpcHRvciAoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcikgY2FuIGNoYW5nZSBk dXJpbmcgdGhlIGV4ZWN1dGlvbgotCSAqIG9mIGEgU0VMRUNUIHF1ZXJ5LCB3ZSB1c2UgY3N0YXRl LT5xdWVyeURlc2MtPnR1cERlc2MgaW5zdGVhZC4gVGhpcwotCSAqIHByZWNhdXRpb24gaXMgb25s eSBuZWNlc3Nhcnkgd2hlbiB0aGUgb3V0cHV0IHNsb3QncyBUdXBsZURlc2MgaXMgb2YKLQkgKiB0 eXBlIFJFQ09SRE9JRC4KLQkgKi8KLQlpZiAoIWNzdGF0ZS0+cmVsICYmIHNsb3QtPnR0c190dXBs ZURlc2NyaXB0b3ItPnRkdHlwZWlkID09IFJFQ09SRE9JRCkKLQkJc2xvdC0+dHRzX3R1cGxlRGVz Y3JpcHRvciA9IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjOwotCiAJcmVzZXRTdHJpbmdJbmZv KGNzdGF0ZS0+anNvbl9idWYpOwogCi0Jcm93ZGF0YSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVE YXR1bShzbG90KTsKKwlpZiAoY3N0YXRlLT5qc29uX3Byb2p2YWx1ZXMgIT0gTlVMTCkKKwl7CisJ CS8qCisJCSAqIENvbHVtbiBsaXN0IGNhc2U6IHByb2plY3Qgc2VsZWN0ZWQgY29sdW1uIHZhbHVl cyBpbnRvIHNlcXVlbnRpYWwKKwkJICogcG9zaXRpb25zIG1hdGNoaW5nIHRoZSBjdXN0b20gVHVw bGVEZXNjLCB0aGVuIGZvcm0gYSBuZXcgdHVwbGUuCisJCSAqLworCQlIZWFwVHVwbGUJdHVwOwor CQlpbnQJCQlpID0gMDsKKworCQlmb3JlYWNoX2ludChhdHRudW0sIGNzdGF0ZS0+YXR0bnVtbGlz dCkKKwkJeworCQkJY3N0YXRlLT5qc29uX3Byb2p2YWx1ZXNbaV0gPSBzbG90LT50dHNfdmFsdWVz W2F0dG51bSAtIDFdOworCQkJY3N0YXRlLT5qc29uX3Byb2pudWxsc1tpXSA9IHNsb3QtPnR0c19p c251bGxbYXR0bnVtIC0gMV07CisJCQlpKys7CisJCX0KKworCQl0dXAgPSBoZWFwX2Zvcm1fdHVw bGUoY3N0YXRlLT50dXBEZXNjLAorCQkJCQkJCSAgY3N0YXRlLT5qc29uX3Byb2p2YWx1ZXMsCisJ CQkJCQkJICBjc3RhdGUtPmpzb25fcHJvam51bGxzKTsKKworCQkvKgorCQkgKiBoZWFwX2Zvcm1f dHVwbGUgYWxyZWFkeSBzdGFtcHMgdGhlIGRhdHVtLWxlbmd0aCwgdHlwZS1pZCwgYW5kCisJCSAq IHR5cGUtbW9kIGZpZWxkcyBvbiB0X2RhdGEsIHNvIHdlIGNhbiB1c2UgaXQgZGlyZWN0bHkgYXMg YSBjb21wb3NpdGUKKwkJICogRGF0dW0gd2l0aG91dCB0aGUgZXh0cmEgcGFsbG9jbWVtY3B5IHRo YXQgaGVhcF9jb3B5X3R1cGxlX2FzX2RhdHVtCisJCSAqIHdvdWxkIGRvLiAgQW55IFRPQVNUIHBv aW50ZXJzIGluIHRoZSBwcm9qZWN0ZWQgdmFsdWVzIHdpbGwgYmUKKwkJICogZGV0b2FzdGVkIGJ5 IHRoZSBwZXItY29sdW1uIG91dHB1dCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KKwkJICogY29tcG9z aXRlX3RvX2pzb24uCisJCSAqLworCQlyb3dkYXRhID0gSGVhcFR1cGxlR2V0RGF0dW0odHVwKTsK Kwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogRnVsbCB0YWJsZSBvciBxdWVyeSB3aXRob3V0IGNv bHVtbiBsaXN0LiAgRW5zdXJlIHRoZSBzbG90IHVzZXMKKwkJICogY3N0YXRlLT50dXBEZXNjIHNv IHRoYXQgdGhlIGRhdHVtIGlzIHN0YW1wZWQgd2l0aCB0aGUgcmlnaHQgdHlwZTsKKwkJICogZm9y IHF1ZXJpZXMgb3V0cHV0IHR5cGUgaXMgUkVDT1JET0lEIHRoaXMgbXVzdCBiZSB0aGUgYmxlc3Nl ZAorCQkgKiBkZXNjcmlwdG9yIHNvIHRoYXQgY29tcG9zaXRlX3RvX2pzb24gY2FuIGxvb2sgaXQg dXAgdmlhCisJCSAqIGxvb2t1cF9yb3d0eXBlX3R1cGRlc2MuCisJCSAqLworCQlpZiAoIWNzdGF0 ZS0+cmVsICYmIHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3ItPnRkdHlwZWlkID09IFJFQ09SRE9J RCkKKwkJCXNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVw RGVzYzsKKworCQlyb3dkYXRhID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtKHNsb3QpOwor CX0KKwogCWNvbXBvc2l0ZV90b19qc29uKHJvd2RhdGEsIGNzdGF0ZS0+anNvbl9idWYsIGZhbHNl KTsKIAogCWlmIChjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCkBAIC04NDEsNiArODgwLDcgQEAg QmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCXR1cERlc2MgPSBSZWxhdGlvbkdl dERlc2NyKGNzdGF0ZS0+cmVsKTsKIAkJY3N0YXRlLT5wYXJ0aXRpb25zID0gY2hpbGRyZW47CisJ CWNzdGF0ZS0+dHVwRGVzYyA9IHR1cERlc2M7CiAJfQogCWVsc2UKIAl7CkBAIC05NzgsMjAgKzEw MTgsNDkgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCXR1cERlc2MgPSBj c3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAkJdHVwRGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1 cERlc2MpOworCQljc3RhdGUtPnR1cERlc2MgPSB0dXBEZXNjOwogCX0KIAogCS8qIEdlbmVyYXRl IG9yIGNvbnZlcnQgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHByb2Nlc3MgKi8KIAljc3RhdGUtPmF0 dG51bWxpc3QgPSBDb3B5R2V0QXR0bnVtcyh0dXBEZXNjLCBjc3RhdGUtPnJlbCwgYXR0bmFtZWxp c3QpOwogCi0JLyogSlNPTiBvdXRwdXRzIHdob2xlIHJvd3M7IGEgY29sdW1uIGxpc3QgZG9lc24n dCBtYWtlIHNlbnNlICovCisJLyogU2V0IHVwIEpTT04tc3BlY2lmaWMgc3RhdGUgKi8KIAlpZiAo Y3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKQogCXsKIAkJY3N0YXRlLT5q c29uX2J1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CiAKLQkJaWYgKGF0dG5hbWVsaXN0ICE9IE5JTCkK LQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAotCQkJCQllcnJtc2coImNvbHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBp biBKU09OIG1vZGUiKSk7CisJCWlmIChhdHRuYW1lbGlzdCAhPSBOSUwgJiYgcmVsKQorCQl7CisJ CQlpbnQJCQluYXR0cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7CisJCQlUdXBs ZURlc2MJcmVzdWx0RGVzYzsKKworCQkJLyoKKwkJCSAqIEJ1aWxkIGEgVHVwbGVEZXNjIGRlc2Ny aWJpbmcgb25seSB0aGUgc2VsZWN0ZWQgY29sdW1ucyBzbyB0aGF0CisJCQkgKiBjb21wb3NpdGVf dG9fanNvbigpIGVtaXRzIHRoZSByaWdodCBjb2x1bW4gbmFtZXMgYW5kIHR5cGVzLgorCQkJICov CisJCQlyZXN1bHREZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MobmF0dHMpOworCisJCQlm b3JlYWNoX2ludChhdHRudW0sIGNzdGF0ZS0+YXR0bnVtbGlzdCkKKwkJCXsKKwkJCQlGb3JtX3Bn X2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRudW0gLSAxKTsKKwor CQkJCVR1cGxlRGVzY0luaXRFbnRyeShyZXN1bHREZXNjLAorCQkJCQkJCQkgICBmb3JlYWNoX2N1 cnJlbnRfaW5kZXgoYXR0bnVtKSArIDEsCisJCQkJCQkJCSAgIE5hbWVTdHIoYXR0ci0+YXR0bmFt ZSksCisJCQkJCQkJCSAgIGF0dHItPmF0dHR5cGlkLAorCQkJCQkJCQkgICBhdHRyLT5hdHR0eXBt b2QsCisJCQkJCQkJCSAgIGF0dHItPmF0dG5kaW1zKTsKKwkJCX0KKworCQkJY3N0YXRlLT50dXBE ZXNjID0gQmxlc3NUdXBsZURlc2MocmVzdWx0RGVzYyk7CisKKwkJCS8qCisJCQkgKiBQcmUtYWxs b2NhdGUgYXJyYXlzIGZvciBwcm9qZWN0aW5nIHNlbGVjdGVkIGNvbHVtbiB2YWx1ZXMgaW50bwor CQkJICogc2VxdWVudGlhbCBwb3NpdGlvbnMgbWF0Y2hpbmcgdGhlIGN1c3RvbSBUdXBsZURlc2Mu CisJCQkgKi8KKwkJCWNzdGF0ZS0+anNvbl9wcm9qdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVt LCBuYXR0cyk7CisJCQljc3RhdGUtPmpzb25fcHJvam51bGxzID0gcGFsbG9jX2FycmF5KGJvb2ws IG5hdHRzKTsKKwkJfQogCX0KIAogCW51bV9waHlzX2F0dHJzID0gdHVwRGVzYy0+bmF0dHM7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCBlMWQ1MTMzNWUzMy4uZTQ0YjRhMWQ3OWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApAQCAtNzcsNiArNzcsOSBAQCBjMSwiY29s IHdpdGggLCBjb21tYSIsImNvbCB3aXRoICIiIHF1b3RlIgogY29weSAoc2VsZWN0IDEgdW5pb24g YWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOwogeyI/Y29sdW1uPyI6 MX0KIHsiP2NvbHVtbj8iOjJ9Citjb3B5IChzZWxlY3QgMSBhcyBmb28gdW5pb24gYWxsIHNlbGVj dCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOworeyJmb28iOjF9Cit7ImZvbyI6Mn0K IGNvcHkgKHZhbHVlcyAoMSksICgyKSkgVE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIHsi Y29sdW1uMSI6MX0KIHsiY29sdW1uMSI6Mn0KQEAgLTEzNCw4ICsxMzcsNiBAQCBjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIHJlamVjdF9saW1pdCAxKTsKIEVSUk9SOiAgQ09Q WSBSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIElHTk9SRQogY29w eSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKIEVSUk9SOiAgQ09QWSBKU09OIG1v ZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KLWNvcHkgY29weXRlc3QgKHN0eWxlKSB0 byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKLUVSUk9SOiAgY29sdW1uIHNlbGVjdGlvbiBpcyBub3Qg c3VwcG9ydGVkIGluIEpTT04gbW9kZQogLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQg ZXJyb3IKIC0tIHNob3VsZCBmYWlsOiBmb3JjZV9hcnJheSByZXF1aXJlcyBqc29uIGZvcm1hdAog Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOwpA QCAtMTYwLDYgKzE2MSw3NCBAQCBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IGZvcmNlX2FycmF5IGZhbHNlKTsKIHsic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwi ZmlsbGVyIjoyfQogeyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30K IHsic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0 fQorLS0gY29sdW1uIGxpc3Qgd2l0aCBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCAoc3R5bGUs IGZpbGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwiZmlsbGVy IjoxfQoreyJzdHlsZSI6IlVuaXgiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwiZmlsbGVy IjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwiZmlsbGVyIjo0fQorY29weSBjb3B5dGVzdCAoc3R5 bGUsIGZpbGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgIGZvcmNlX2FycmF5IHRydWUpOwor WworIHsic3R5bGUiOiJET1MiLCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJmaWxsZXIi OjJ9CisseyJzdHlsZSI6Ik1hYyIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUiLCJm aWxsZXIiOjR9CitdCitjb3B5IGNvcHl0ZXN0IChzdHlsZSwgdGVzdCwgZmlsbGVyKSB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCAgZm9yY2VfYXJyYXkgdHJ1ZSk7CitbCisgeyJzdHlsZSI6IkRPUyIs InRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQorLHsic3R5bGUiOiJVbml4IiwidGVzdCI6 ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYi LCJmaWxsZXIiOjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxc bmIiLCJmaWxsZXIiOjR9CitdCistLSBjb2x1bW4gbGlzdCB3aXRoIGRpdmVyc2UgZGF0YSB0eXBl cworY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0X3R5cGVzICgKKyAgICBpZCBpbnQsCisg ICAganMganNvbiwKKyAgICBqc2IganNvbmIsCisgICAgYXJyIGludFtdLAorICAgIG4gbnVtZXJp YygxMCwyKSwKKyAgICBiIGJvb2xlYW4sCisgICAgdHMgdGltZXN0YW1wLAorICAgIHQgdGV4dCk7 CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3RfdHlwZXMgdmFsdWVzCisoMSwgJ3siYSI6MX0nLCAn eyJiIjoyfScsICd7MSwyLDN9JywgMy4xNCwgdHJ1ZSwKKyAnMjAyNC0wMS0xNSAxMDozMDowMCcs ICdoZWxsbycpLAorKDIsICdbMSxudWxsLCJ4Il0nLCAneyJuZXN0ZWQiOnsiayI6InYifX0nLCAn ezQsNX0nLCAtOTkuOTksIGZhbHNlLAorICcyMDI0LTA2LTMwIDIzOjU5OjU5JywgJ3dvcmxkJyks CisoMywgJ251bGwnLCAnbnVsbCcsICd7fScsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOworLS0g ZnVsbCB0YWJsZQorY29weSBjb3B5anNvbnRlc3RfdHlwZXMgdG8gc3Rkb3V0IChmb3JtYXQganNv bik7Cit7ImlkIjoxLCJqcyI6eyJhIjoxfSwianNiIjp7ImIiOiAyfSwiYXJyIjpbMSwyLDNdLCJu IjozLjE0LCJiIjp0cnVlLCJ0cyI6IjIwMjQtMDEtMTVUMTA6MzA6MDAiLCJ0IjoiaGVsbG8ifQor eyJpZCI6MiwianMiOlsxLG51bGwsIngiXSwianNiIjp7Im5lc3RlZCI6IHsiayI6ICJ2In19LCJh cnIiOls0LDVdLCJuIjotOTkuOTksImIiOmZhbHNlLCJ0cyI6IjIwMjQtMDYtMzBUMjM6NTk6NTki LCJ0Ijoid29ybGQifQoreyJpZCI6MywianMiOm51bGwsImpzYiI6bnVsbCwiYXJyIjpbXSwibiI6 bnVsbCwiYiI6bnVsbCwidHMiOm51bGwsInQiOm51bGx9CistLSBjb2x1bW4gc3Vic2V0cyBleGVy Y2lzaW5nIGVhY2ggdHlwZQorY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGlkLCBqcywganNiKSB0 byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK3siaWQiOjEsImpzIjp7ImEiOjF9LCJqc2IiOnsiYiI6 IDJ9fQoreyJpZCI6MiwianMiOlsxLG51bGwsIngiXSwianNiIjp7Im5lc3RlZCI6IHsiayI6ICJ2 In19fQoreyJpZCI6MywianMiOm51bGwsImpzYiI6bnVsbH0KK2NvcHkgY29weWpzb250ZXN0X3R5 cGVzIChpZCwgYXJyLCBuLCBiKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK3siaWQiOjEsImFy ciI6WzEsMiwzXSwibiI6My4xNCwiYiI6dHJ1ZX0KK3siaWQiOjIsImFyciI6WzQsNV0sIm4iOi05 OS45OSwiYiI6ZmFsc2V9Cit7ImlkIjozLCJhcnIiOltdLCJuIjpudWxsLCJiIjpudWxsfQorY29w eSBjb3B5anNvbnRlc3RfdHlwZXMgKGpzYiwgdCkgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7 ImpzYiI6eyJiIjogMn0sInQiOiJoZWxsbyJ9Cit7ImpzYiI6eyJuZXN0ZWQiOiB7ImsiOiAidiJ9 fSwidCI6IndvcmxkIn0KK3sianNiIjpudWxsLCJ0IjpudWxsfQorY29weSBjb3B5anNvbnRlc3Rf dHlwZXMgKGlkLCB0cykgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7ImlkIjoxLCJ0cyI6IjIw MjQtMDEtMTVUMTA6MzA6MDAifQoreyJpZCI6MiwidHMiOiIyMDI0LTA2LTMwVDIzOjU5OjU5In0K K3siaWQiOjMsInRzIjpudWxsfQorLS0gc2luZ2xlIGNvbHVtbjoganNvbiBhbmQganNvbmIKK2Nv cHkgY29weWpzb250ZXN0X3R5cGVzIChqcykgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7Impz Ijp7ImEiOjF9fQoreyJqcyI6WzEsbnVsbCwieCJdfQoreyJqcyI6bnVsbH0KK2NvcHkgY29weWpz b250ZXN0X3R5cGVzIChqc2IpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJqc2IiOnsiYiI6 IDJ9fQoreyJqc2IiOnsibmVzdGVkIjogeyJrIjogInYifX19Cit7ImpzYiI6bnVsbH0KK2Ryb3Ag dGFibGUgY29weWpzb250ZXN0X3R5cGVzOwogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJz CiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29weS5zcWwKaW5kZXggNzY0ZDE5ZjQ5NDcuLmU0ZTcwYTgyZWNjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5LnNxbApAQCAtODQsNiArODQsNyBAQCBjb3B5IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2 IGhlYWRlcjsKIAogLS0tIHRlc3QgY29weWluZyBpbiBKU09OIG1vZGUgd2l0aCB2YXJpb3VzIHN0 eWxlcwogY29weSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAo Zm9ybWF0IGpzb24pOworY29weSAoc2VsZWN0IDEgYXMgZm9vIHVuaW9uIGFsbCBzZWxlY3QgMikg dG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIGNvcHkgKHZhbHVlcyAoMSksICgyKSkgVE8g c3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIGNvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxl Y3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKIGNv cHkgKHZhbHVlcyAoMSksICgyKSkgVE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uLCBmb3JjZV9h cnJheSB0cnVlKTsKQEAgLTEwNSw3ICsxMDYsNiBAQCBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24sIGZvcmNlX251bGwgKik7CiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIHJlamVjdF9saW1pdCAxKTsKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3Jt YXQganNvbik7Ci1jb3B5IGNvcHl0ZXN0IChzdHlsZSkgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7 CiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgogCiAtLSBzaG91bGQgZmFp bDogZm9yY2VfYXJyYXkgcmVxdWlyZXMganNvbiBmb3JtYXQKQEAgLTExNiw2ICsxMTYsNDQgQEAg Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSk7CiBjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOwogY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxzZSk7CiAK Ky0tIGNvbHVtbiBsaXN0IHdpdGgganNvbiBmb3JtYXQKK2NvcHkgY29weXRlc3QgKHN0eWxlLCBm aWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworY29weSBjb3B5dGVzdCAoc3R5bGUsIGZp bGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgIGZvcmNlX2FycmF5IHRydWUpOworY29weSBj b3B5dGVzdCAoc3R5bGUsIHRlc3QsIGZpbGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgIGZv cmNlX2FycmF5IHRydWUpOworCistLSBjb2x1bW4gbGlzdCB3aXRoIGRpdmVyc2UgZGF0YSB0eXBl cworY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0X3R5cGVzICgKKyAgICBpZCBpbnQsCisg ICAganMganNvbiwKKyAgICBqc2IganNvbmIsCisgICAgYXJyIGludFtdLAorICAgIG4gbnVtZXJp YygxMCwyKSwKKyAgICBiIGJvb2xlYW4sCisgICAgdHMgdGltZXN0YW1wLAorICAgIHQgdGV4dCk7 CisKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdF90eXBlcyB2YWx1ZXMKKygxLCAneyJhIjoxfScs ICd7ImIiOjJ9JywgJ3sxLDIsM30nLCAzLjE0LCB0cnVlLAorICcyMDI0LTAxLTE1IDEwOjMwOjAw JywgJ2hlbGxvJyksCisoMiwgJ1sxLG51bGwsIngiXScsICd7Im5lc3RlZCI6eyJrIjoidiJ9fScs ICd7NCw1fScsIC05OS45OSwgZmFsc2UsCisgJzIwMjQtMDYtMzAgMjM6NTk6NTknLCAnd29ybGQn KSwKKygzLCAnbnVsbCcsICdudWxsJywgJ3t9JywgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7CisK Ky0tIGZ1bGwgdGFibGUKK2NvcHkgY29weWpzb250ZXN0X3R5cGVzIHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24pOworCistLSBjb2x1bW4gc3Vic2V0cyBleGVyY2lzaW5nIGVhY2ggdHlwZQorY29weSBj b3B5anNvbnRlc3RfdHlwZXMgKGlkLCBqcywganNiKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsK K2NvcHkgY29weWpzb250ZXN0X3R5cGVzIChpZCwgYXJyLCBuLCBiKSB0byBzdGRvdXQgKGZvcm1h dCBqc29uKTsKK2NvcHkgY29weWpzb250ZXN0X3R5cGVzIChqc2IsIHQpIHRvIHN0ZG91dCAoZm9y bWF0IGpzb24pOworY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGlkLCB0cykgdG8gc3Rkb3V0IChm b3JtYXQganNvbik7CisKKy0tIHNpbmdsZSBjb2x1bW46IGpzb24gYW5kIGpzb25iCitjb3B5IGNv cHlqc29udGVzdF90eXBlcyAoanMpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworY29weSBjb3B5 anNvbnRlc3RfdHlwZXMgKGpzYikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CisKK2Ryb3AgdGFi bGUgY29weWpzb250ZXN0X3R5cGVzOworCiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMK IGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2VyaWFsLAotLSAK Mi4zNC4xCgo= --000000000000ca6a48064c859c4c Content-Type: application/octet-stream; name="copyto_json_perfomance_test.nocfbot" Content-Disposition: attachment; filename="copyto_json_perfomance_test.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmhyczp34 LyoKc2VsZWN0IHN0cmluZ19hZ2cgKCdjb2wnIHx8IGcgfHwgJyBpbnQgZGVmYXVsdCAnIHx8IGcs ICcsICcpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDM2KSBnOwpzcmM4PSMgc2VsZWN0IHZlcnNp b24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogUG9zdGdyZVNRTCAxOWRldmVsX3JlbGVhc2VfYnVpbGQgb24g eDg2XzY0LWxpbnV4LCBjb21waWxlZCBieSBnY2MtMTQuMS4wLCA2NC1iaXQKKDEgcm93KQoqLwoK ZHJvcCB0YWJsZSBpZiBleGlzdHMgdDM2IDsKY3JlYXRlIHVubG9nZ2VkIHRhYmxlIHQzNigKY29s MSBpbnQgZGVmYXVsdCAxLCBjb2wyIGludCBkZWZhdWx0IDIsIGNvbDMgaW50IGRlZmF1bHQgMywg Y29sNCBpbnQgZGVmYXVsdCA0LCBjb2w1IGludCBkZWZhdWx0IDUsIGNvbDYgaW50IGRlZmF1bHQg NiwKY29sNyBpbnQgZGVmYXVsdCA3LCBjb2w4IGludCBkZWZhdWx0IDgsIGNvbDkgaW50IGRlZmF1 bHQgOSwgY29sMTAgaW50IGRlZmF1bHQgMTAsIGNvbDExIGludCBkZWZhdWx0IDExLCBjb2wxMiBp bnQgZGVmYXVsdCAxMiwKY29sMTMgaW50IGRlZmF1bHQgMTMsIGNvbDE0IGludCBkZWZhdWx0IDE0 LCBjb2wxNSBpbnQgZGVmYXVsdCAxNSwgY29sMTYgaW50IGRlZmF1bHQgMTYsIGNvbDE3IGludCBk ZWZhdWx0IDE3LCBjb2wxOCBpbnQgZGVmYXVsdCAxOCwKY29sMTkgaW50IGRlZmF1bHQgMTksIGNv bDIwIGludCBkZWZhdWx0IDIwLCBjb2wyMSBpbnQgZGVmYXVsdCAyMSwgY29sMjIgaW50IGRlZmF1 bHQgMjIsIGNvbDIzIGludCBkZWZhdWx0IDIzLCBjb2wyNCBpbnQgZGVmYXVsdCAyNCwKY29sMjUg aW50IGRlZmF1bHQgMjUsIGNvbDI2IGludCBkZWZhdWx0IDI2LCBjb2wyNyBpbnQgZGVmYXVsdCAy NywgY29sMjggaW50IGRlZmF1bHQgMjgsIGNvbDI5IGludCBkZWZhdWx0IDI5LCBjb2wzMCBpbnQg ZGVmYXVsdCAzMCwKY29sMzEgaW50IGRlZmF1bHQgMzEsIGNvbDMyIGludCBkZWZhdWx0IDMyLCBj b2wzMyBpbnQgZGVmYXVsdCAzMywgY29sMzQgaW50IGRlZmF1bHQgMzQsIGNvbDM1IGludCBkZWZh dWx0IDM1LCBjb2wzNiBpbnQgZGVmYXVsdCAzNik7Cmluc2VydCBpbnRvIHQzNiBzZWxlY3QgZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTBfMDAwXzAwMCkgZzsKCi0tV2l0aCBKU09OIHBhdGNoICh2 MjgtMDAwMSB0byB2MjgtMDAwNCkKLS0gVGltZTogNTkyNC45ODIgbXMgKDAwOjA1LjkyNSkKY29w eSB0MzYgdG8gJy9kZXYvbnVsbCcgd2l0aCAoZm9ybWF0IGNzdikgXHdhdGNoIGludGVydmFsPTAu MSBjb3VudD0yMAotLSBUaW1lOiA0MzkxLjgwNCBtcyAoMDA6MDQuMzkyKQpjb3B5IHQzNiB0byAn L2Rldi9udWxsJyB3aXRoIChmb3JtYXQgdGV4dCkgXHdhdGNoIGludGVydmFsPTAuMSBjb3VudD0y MAoKLS1XaXRob3V0IEpTT04gcGF0Y2gKLS0gVGltZTogNjQwOS42OTQgbXMgKDAwOjA2LjQxMCkK Y29weSB0MzYgdG8gJy9kZXYvbnVsbCcgd2l0aCAoZm9ybWF0IGNzdikgXHdhdGNoIGludGVydmFs PTAuMSBjb3VudD0yMAotLSBUaW1lOiA0NTUwLjE2MCBtcyAoMDA6MDQuNTUwKQpjb3B5IHQzNiB0 byAnL2Rldi9udWxsJyB3aXRoIChmb3JtYXQgdGV4dCkgXHdhdGNoIGludGVydmFsPTAuMSBjb3Vu dD0yMCAKCg== --000000000000ca6a48064c859c4c--