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.94.2) (envelope-from ) id 1v3oyN-0046el-F5 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Oct 2025 05:01:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v3oyL-00FVwz-BB for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Oct 2025 05:01:50 +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.94.2) (envelope-from ) id 1v3oyK-00FVuh-Lp for pgsql-hackers@lists.postgresql.org; Wed, 01 Oct 2025 05:01:49 +0000 Received: from mail-ua1-x92d.google.com ([2607:f8b0:4864:20::92d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v3oyI-000oKg-2X for pgsql-hackers@lists.postgresql.org; Wed, 01 Oct 2025 05:01:48 +0000 Received: by mail-ua1-x92d.google.com with SMTP id a1e0cc1a2514c-8e261568020so1344568241.1 for ; Tue, 30 Sep 2025 22:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759294906; x=1759899706; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kjzFvlyS8AkYwMMFEcV10LwLT+wUjJMyineqxcj3/ZE=; b=lvK1PVrrgSuTOclOPFpT6El+cs12wV48rHzxVZK8gE/E66cEAz1XQyWYFsHLTljJx3 cfB8LuX5mTTgfgtYoGgctrSDA4LqIo2xV4e6eAh378VxXJatQ7UHktVMknqfSSlIwTdA FLE+S5ii4yUHYnvW057FcRtvYd5BjAFEP1il3lDn4y0rQH3Re/8XBSuF5UV049z/9YHV V9R3RDs99fpJ0cjINYzNLupGQ7mk9k473J7uyXBULvzCGThdadlkpOASqO9xr7EOjNXw AvXdQTgbTtg0DKG3KvL70LuANm5Jukx1m5dIh5KNM3S9DZe1i1KFjodzCp9yl/t3Yv+u pwOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759294906; x=1759899706; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kjzFvlyS8AkYwMMFEcV10LwLT+wUjJMyineqxcj3/ZE=; b=EOeU850xRbuEh5DxwGGgcTotI75+uJZCqguq5uWXDI/2b0MFGrt5k27qHulhlGGsyI bcL8D4NDc/OrUvsp3xYTaqYwURsKU9X7zFkvPXYN07vOVvIJt/qTIgik59xrlVidJM7n mDs28qvacVRffJNrDYMor/EW+p1i/n20PvyKTzQ55zBuFGw8Ttzr1pJprY+GFUBrTVpd 3ameulu7ZkRVsiI/dQ2oa8voNc1BfSHa7Lzishyz5yzE2YvO+LTBVX9BraeJQFzisJsk En2DKsB7f5Exy65DteiP5KXMAt6DBZcd1OjjP+rWiagOuBGzN4nebKjW1DGOhOoz5qX1 aUJw== X-Gm-Message-State: AOJu0Yx4GYSo29QbV7XkjFTzrF6wlYPpo3/u62/83mBqVx6uAp6/25Hv TvWJmXjFQ/2AMdBIZ44o05dsPwJiFKMh+TIxpALIcr8cY1wXdykr9Ys9rcieBew7EcU2JVzRw52 C5Pp7QwHlJxA/C3eYrlJJ0pV48o6iQNAn9C3AZqxY9Q== X-Gm-Gg: ASbGnctRQdVQvz6+dN1D8lzfayVO5bUum3HqjN0mSLW/JdZE20bmkgh8n44TlAAjVRD 0IRwHRpuXP1DeM3Bi8ld84kcs1BFbHehSMqk4z4F87DZ7QEk/goIYJMVDpJ88RKrrO7GXsmqsL9 eT6BOb2eUpxLhwG8wEKaKrmc1EKsZIVO3gyeLv09f1Y3WceqmZXNRnTCC7mPfVVhv1QpgNDaXrn QDW9yDp/PZKoBkKsODYN6GH23dbizZYa/mI/RJGyLrS097ri9VU0QdkrRbajJ1P3xgSshP+wciz LJ08cTTWE3jLySGxVlBXaYXNETbEKQfCvQl0xS1nOfu03PFSZu12zKUM1ok8Pla6I2rsKRBkY6m O/B+gtQ7lWSiRSj9PhxpWlg8dKJ5ci7TV4tb0vNj51AlDlJRC X-Google-Smtp-Source: AGHT+IFVIPhmr0eXOkFPflwToglIxNuBHUfH3LGTpomRoKZ2FeVoK5eDO3AQjBOc8D/WpWv14ZMv5WH3kmRMHk4vToA= X-Received: by 2002:a67:f74a:0:b0:5d3:fecb:e4e8 with SMTP id ada2fe7eead31-5d3fecbe643mr560114137.5.1759294905649; Tue, 30 Sep 2025 22:01:45 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> <54414932-9E82-47AA-902B-2DED18F07F64@gmail.com> <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> In-Reply-To: From: jian he Date: Wed, 1 Oct 2025 13:01:09 +0800 X-Gm-Features: AS18NWCnG498rV7g-tMTnrz9ZaI9dm6tPJEyjT6IDjszkQI5t1ReiXXT5yW1l3Y Message-ID: Subject: Re: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e86e34064011c3d4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e86e34064011c3d4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable hi. + /* + * For simplify check for ranges of new partitions need to sort all + * partitions in ascending order of them bounds (we compare upper + * bound only). + */ + lower_bounds =3D (PartitionRangeBound **) + palloc0(nparts * sizeof(PartitionRangeBound *)); + + /* Create array of lower bounds. */ + for (i =3D 0; i < nparts; i++) + { + lower_bounds[i] =3D make_one_partition_rbound(key, i, + new_parts[i]->bound->lowerdatums, true); + } + I am confused by the above comments "we compare upper bound only". some of the function partition_rbound_cmp can be replaced by marco compare_range_bounds, for example in check_two_partitions_bounds_range we can use compare_range_bounds instead of partition_rbound_cmp not sure if it's worth it or not. doc: should come after I=E2=80=99ve refactored the SPLIT PARTITION docs quite a bit=E2=80=94let me= know if they make sense. Also tweaked the regression tests a little again. --000000000000e86e34064011c3d4 Content-Type: application/octet-stream; name="v61-0001-refactoring-based-on-v61.no-cfbot" Content-Disposition: attachment; filename="v61-0001-refactoring-based-on-v61.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg7iqb0r0 RnJvbSA3ODllMGZhNzkwOTE4ZWNiODQ1YmFjNjM0YmMyNTcwOGEzMDA4NjE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBPY3QgMjAyNSAxMjo1OTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYx IDEvMV0gcmVmYWN0b3JpbmcgYmFzZWQgb24gdjYxCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8IDE2MCArKysrKysrKysrLS0tLS0tLS0KIHNyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAyMCArKy0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8ICA4MiArKysrLS0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8ICA1NCArKyst LS0KIDQgZmlsZXMgY2hhbmdlZCwgMTYzIGluc2VydGlvbnMoKyksIDE1MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggZDhlODM4M2IwNzEuLjA1ZmJjMjczMDlh IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0xMTY1LDc5ICsxMTY1LDYgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJh bDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKLSAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+ Ci0gICAgPHRlcm0+PGxpdGVyYWw+U1BMSVQgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElOVE8gKFBBUlRJVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f Ym91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9LCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9S IFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3Nw ZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKTwvbGl0ZXJhbD48L3Rlcm0+Ci0K LSAgICA8bGlzdGl0ZW0+Ci0gICAgIDxwYXJhPgotICAgICAgVGhpcyBmb3JtIHNwbGl0cyBhIHNp bmdsZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRvIG5ldwotICAgICAgcGFydGl0 aW9ucy4gSGFzaC1wYXJ0aXRpb25lZCB0YXJnZXQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4gQm91 bmRzIG9mIG5ldwotICAgICAgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcg YW5kIGV4aXN0aW5nIHBhcnRpdGlvbnMKLSAgICAgIChleGNlcHQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgotICAgICAgSWYgdGhl IHNwbGl0IHBhcnRpdGlvbiBpcyBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlv biwgb25lIG9mCi0gICAgICB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJhbD5ERUZB VUxUPC9saXRlcmFsPi4KLSAgICAgIEluIGNhc2Ugb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBp cyA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiwKLSAgICAgIG5ldyBwYXJ0aXRpb25zIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwK LSAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3Jl cGxhY2VhYmxlPiwgLi4uIGNhbgotICAgICAgaGF2ZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25z IGJvdW5kcy4gIElmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdAotICAgICAgaGF2ZSBh IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwgdGhlIDxsaXRlcmFsPkRFRkFV TFQ8L2xpdGVyYWw+Ci0gICAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIHRo ZSBuZXcgcGFydGl0aW9ucy4KLSAgICAgPC9wYXJhPgotICAgICA8cGFyYT4KLSAgICAgIEluIGNh c2UgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGNvbnRhaW4gYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRl cmFsPgotICAgICAgcGFydGl0aW9uLCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJv dW5kcyBvZiBuZXcgcGFydGl0aW9ucwotICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAotICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hvdWxk Ci0gICAgICBiZSBlcXVhbCB0byB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4K LSAgICAgIE9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAotICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2Fu IGhhdmUKLSAgICAgIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgotICAg ICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSA8bGl0ZXJhbD5ERUZB VUxUPC9saXRlcmFsPgotICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFmdGVyIHNw bGl0dGluZywgd2UgaGF2ZSBhIHBhcnRpdGlvbiB3aXRoIHRoZQotICAgICAgc2FtZSBuYW1lKS4g IE9ubHkgYSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJlIHNwbGl0Lgot ICAgICA8L3BhcmE+Ci0gICAgIDxwYXJhPgotICAgICAgTmV3IHBhcnRpdGlvbnMgd2lsbCBoYXZl IHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgotICAgICAgSXQgaXMgdGhl IHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5BQ0w8L2Fjcm9ueW0+IG9u IG5ldwotICAgICAgcGFydGl0aW9ucy4KLSAgICAgPC9wYXJhPgotICAgICA8cGFyYT4KLSAgICAg IFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3JlYXRlZCBsYXRlciwgYWZ0ZXIgbW92aW5n IHRoZSBkYXRhCi0gICAgICBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucy4KLSAgICAgIEV4dGVuZGVk IHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25z aXN0ZW5jeSB3aXRoCi0gICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9j b21tYW5kPi4KLSAgICAgIE5ldyBwYXJ0aXRpb25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJs ZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQotICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2Ug YXMgdGhlIHBhcmVudCB0YWJsZS4KLSAgICAgPC9wYXJhPgotICAgICA8cGFyYT4KLSAgICAgIFdo ZW4gYSBwYXJ0aXRpb24gaXMgc3BsaXQsIGFueSBpbmRpdmlkdWFsIG9iamVjdHMgYmVsb25naW5n IHRvIHRoaXMKLSAgICAgIHBhcnRpdGlvbiwgc3VjaCBhcyBjb25zdHJhaW50cyBvciB0aGUgc3Rh dGlzdGljcyB3aWxsIGJlIGRyb3BwZWQuIFRoaXMgb2NjdXJzCi0gICAgICBiZWNhdXNlIDxjb21t YW5kPkFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD4gdXNlcyB0aGUgcGFydGl0 aW9uZWQgdGFibGUgaXRzZWxmCi0gICAgICBhcyB0aGUgdGVtcGxhdGUgdG8gZGVmaW5lIHRoZXNl IG9iamVjdHMuCi0gICAgIDwvcGFyYT4KLSAgICAgPHBhcmE+Ci0gICAgICBJZiBhIHNwbGl0IHBh cnRpdGlvbiBoYXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwgdGhlIGNvbW1hbmQgY2Fu Ci0gICAgICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90IHVz ZWQsIGFuZCBhbiBlcnJvciB3aWxsCi0gICAgICBiZSByZXR1cm5lZCkuCi0gICAgIDwvcGFyYT4K LSAgICAgPG5vdGU+Ci0gICAgICA8cGFyYT4KLSAgICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWly ZXMgYW4gPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgotICAgICAg IHRoZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1MgRVhD TFVTSVZFPC9saXRlcmFsPgotICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNwbGl0Lgot ICAgICAgPC9wYXJhPgotICAgICA8L25vdGU+Ci0gICAgIDxub3RlPgotICAgICAgPHBhcmE+Ci0g ICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiBjcmVh dGVzIG5ldyBwYXJ0aXRpb25zIGFuZAotICAgICAgIG1vdmVzIGRhdGEgZnJvbSB0aGUgc3BsaXQg cGFydGl0aW9uIGludG8gdGhlbSwgd2hpY2ggY2FuIHRha2UgYSBsb25nCi0gICAgICAgdGltZS4g IFNvIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGNvbW1hbmQgZm9yIHNwbGl0dGlu ZyBhCi0gICAgICAgc21hbGwgZnJhY3Rpb24gb2Ygcm93cyBvdXQgb2YgYSB2ZXJ5IGJpZyBwYXJ0 aXRpb24uCi0gICAgICA8L3BhcmE+Ci0gICAgIDwvbm90ZT4KLSAgICA8L2xpc3RpdGVtPgotICAg PC92YXJsaXN0ZW50cnk+Ci0KICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1l cmdlLXBhcnRpdGlvbnMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMgKDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFj ZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgogCkBAIC0xMzM0LDYgKzEy NjEsOTEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51 bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLXNwbGl0 LXBhcnRpdGlvbiI+CisgICAgPHRlcm0+CisgICAgPGxpdGVyYWw+U1BMSVQgUEFSVElUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ IElOVE8gKAorICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZB VUxUIH0sCisgICAgICBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFV TFQgfQorICAgICAgWywgLi4uXSk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorCisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0 aW9uIG9mIHRoZSB0YXJnZXQgdGFibGUgaW50byBuZXcKKyAgICAgIHBhcnRpdGlvbnMuIEhhc2gt cGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICBPbmx5IGEg c2ltcGxlLCBub24tcGFydGl0aW9uZWQgcGFydGl0aW9uIGNhbiBiZSBzcGxpdC4KKyAgICAgIElm IHRoZSBzcGxpdCBwYXJ0aXRpb24gaXMgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBh cnRpdGlvbiwgb25lIG9mCisgICAgICB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJh bD5ERUZBVUxUPC9saXRlcmFsPi4KKyAgICAgIElmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2Vz IG5vdCBoYXZlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwKKyAgICAgIDxs aXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCBhcyBvbmUg b2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAg ICBCb3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFu ZCBleGlzdGluZyBwYXJ0aXRpb25zCisgICAgICAoZXhjZXB0IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIFRoZSBjb21i aW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgPGxpdGVyYWw+CisgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNl YWJsZT5bLCAuLi5dCisgICAgICA8L2xpdGVyYWw+IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgYm91 bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUgb2YgdGhlIG5l dyBwYXJ0aXRpb25zIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNwbGl0IHBhcnRpdGlv biA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2Vh YmxlPgorICAgICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgdGhlIDxs aXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb246IGFmdGVyIHRoZSBzcGxp dCwgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiByZW1haW5zIHdpdGgg dGhlIHNhbWUKKyAgICAgIG5hbWUsIGJ1dCBpdHMgcGFydGl0aW9uIGJvdW5kIGNoYW5nZXMpLgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBOZXcgcGFydGl0aW9ucyB3aWxsIGhh dmUgdGhlIHNhbWUgb3duZXIgYXMgdGhlIHBhcmVudCBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0 aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4g b24gbmV3CisgICAgICBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+Cisg ICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2Vz IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYKKyAgICAgICBhcyB0aGUgdGVtcGxhdGUgdG8g Y29uc3RydWN0IG5ldyBwYXJ0aXRpb25zLgorICAgICAgIE5ldyBwYXJ0aXRpb25zIHdpbGwgaW5o ZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQorICAgICAgIHR5 cGUsIGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgPC9wYXJh PgorCisgICAgIDxwYXJhPgorICAgICAgIENvbnN0cmFpbnRzLCBjb2x1bW4gZGVmYXVsdHMsIGNv bHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb25zLCBpZGVudGl0eSBjb2x1bW5zLAorICAgICAgIGlu ZGV4ZXMsIHRyaWdnZXJzIGFyZSBjb3BpZWQgZnJvbSB0aGUgcGFydGl0aW9uZWQgdGFibGUgdG8g dGhlIG5ldworICAgICAgIHBhcnRpdGlvbnMuICBCdXQgZXh0ZW5kZWQgc3RhdGlzdGljcywgc2Vj dXJpdHkgcG9saWNpZXMgZXRjIHdvbid0IGNvcGllZCBmcm9tCisgICAgICAgdGhlIHBhcnRpdGlv bmVkIHRhYmxlLgorICAgICAgIEluZGV4ZXMgYW5kIGlkZW50aXR5IGNvbHVtbnMgY29waWVkIGZy b20gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIHdpbGwgYmUKKyAgICAgICBjcmVhdGVkIGFmdGVyd2Fy ZCwgb25jZSB0aGUgZGF0YSBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucy4K KyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgV2hlbiBhIHBhcnRpdGlvbiBpcyBz cGxpdCwgYW55IG9iamVjdHMgZGVwZW5kIG9uIHRoaXMgcGFydGl0aW9uLCBzdWNoIGFzCisgICAg ICBjb25zdHJhaW50cywgdHJpZ2dlcnMsIGV4dGVuZGVkIHN0YXRpc3RpY3MgZXRjIHdpbGwgYmUg ZHJvcHBlZC4gVGhpcyBvY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZAorICAgICAgdGFi bGUgaXRzZWxmIGFzIHRoZSB0ZW1wbGF0ZSB0byByZWNvbnN0cnVjdCB0aGVzZSBvYmplY3RzIGxh dGVyLgorICAgICAgRXZlbnR1YWxseSB3ZSB3aWxsIGRyb3AgdGhlIHNwbGl0IHBhcnRpdGlvbiAo dXNpbmcgPGxpdGVyYWw+UkVTVFJJQ1Q8L2xpdGVyYWw+IG1vZGUpIHRvbywKKyAgICAgIHRoZXJl Zm9yZSBpZiBhbnkgb2JqZWN0cyBzdGlsbCBkZXBlbmRlbnQgb24gaXQsCisgICAgICA8Y29tbWFu ZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IHdvdWxkIGZhaWwuCisgICAg ICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgorICAgICA8L3BhcmE+CisKKyAg ICAgPG5vdGU+CisgICAgICA8cGFyYT4KKyAgICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWlyZXMg YW4gPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAgIHRo ZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVT SVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNwbGl0LgorICAg ICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3RlPgorCisgICAgICA8cGFyYT4KKyAg ICAgICA8Y29tbWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IGNyZWF0 ZXMgbmV3IHBhcnRpdGlvbnMgYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9tIHRoZSBzcGxpdCBw YXJ0aXRpb24gaW50byB0aGVtLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcKKyAgICAgICB0aW1lLiAg U28gaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgY29tbWFuZCBmb3Igc3BsaXR0aW5n IGEKKyAgICAgICBzbWFsbCBmcmFjdGlvbiBvZiByb3dzIG91dCBvZiBhIHZlcnkgYmlnIHBhcnRp dGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCkBAIC0xMzQx LDcgKzEzNTMsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgQWxsIHRoZSBmb3JtcyBv ZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFi bGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFND SEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwg PGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCi0gICA8bGl0ZXJhbD5TUExJVCBQ QVJUSVRJT048L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJh bD4KKyAgIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+ U1BMSVQgUEFSVElUSU9OPC9saXRlcmFsPgogICAgY2FuIGJlIGNvbWJpbmVkIGludG8KICAgIGEg bGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvZ2V0aGVyLiAgRm9y IGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2ZXJhbCBjb2x1bW5zIGFuZC9v ciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjg0 MTQxMDkyNDIuLjAzYWZhNjVlZDgxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05ODIsMTEg Kzk4MiwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTaW5nbGVQYXJ0aXRpb25TcGVjCiB0eXBlZGVmIHN0 cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7 CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8KLQkJCQkJCQkJICogYXR0YWNoL2RldGFjaC9tZXJn ZS9zcGxpdCAqLwotCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlm IGF0dGFjaGluZyAqLwotCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25z IHRvIGJlIHNwbGl0L21lcmdlZCwgdXNlZAotCQkJCQkJCQkgKiBpbiBBTFRFUiBUQUJMRSBTUExJ VC9NRVJHRSBQQVJUSVRJT04oUykgKi8KKworCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFj aC9kZXRhY2gvbWVyZ2Uvc3BsaXQgKi8KKwlSYW5nZVZhciAgICpuYW1lOworCisJLyogRk9SIFZB TFVFUywgaWYgYXR0YWNoaW5nICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKworCS8q CisJICogbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIHNwbGl0L21lcmdlZCwgdXNlZCBpbgorCSAq IEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVE9JTlMgYW5kIEFMVEVSIFRBQkxFIFNQTElUIFBBUlRJ VE9JTlMuCisJICogRm9yIG1lcmdlIHBhcnRpdGlvbnMsIHBhcnRsaXN0IGlzIGEgbGlzdCBvZiBS YW5nZVZhcjsgRm9yIHNwbGl0CisJICogcGFydGl0aW9uLCBpdCBpcyBhIGxpc3Qgb2YgU2luZ2xl UGFydGl0aW9uU3BlYy4KKwkgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsKKwogCWJvb2wJCWNvbmN1 cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fc3BsaXQub3V0CmluZGV4IDI1MDEyM2JkOTI4Li5lNjhiYWY3MWRhZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtNDQwLDEw OCArNDQwLDk2IEBAIFNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUg PiAnMjAyMi0wMS0wMSc7CiAoMSByb3cpCiAKIFJFU0VUIGVuYWJsZV9zZXFzY2FuOwotU0VMRUNU ICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWUg Q09MTEFURSAiQyI7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMKK1dIRVJFIHRhYmxlbmFtZSBp biAoJ3NhbGVzX2ZlYjIwMjInLCAnc2FsZXNfbWFyMjAyMicsICdzYWxlc19hcHIyMDIyJywgJ3Nh bGVzX290aGVycycpCitBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJwor T1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOwogICAgICAgIHNjaGVtYW5hbWUgICAgICAg fCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3Bh Y2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k ZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19h cHIyMDIyIHwgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVB VEUgSU5ERVggc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLnNhbGVzX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCiAgcGFydGl0aW9u X3NwbGl0X3NjaGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVf aWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVf aWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSkKLSgxIHJvdykKLQotU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7Ci0gICAgICAgc2NoZW1h bmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAg IHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAg ICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkK LSgxIHJvdykKLQotU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBP UkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7Ci0gICAgICAgc2NoZW1hbmFtZSAgICAgICB8 ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFj ZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl eGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2Fw cjIwMjIgfCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFU RSBJTkRFWCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfYXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKLSgxIHJvdykKLQot U0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMn IGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4 bmFtZSBDT0xMQVRFICJDIjsKLSAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAg IHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBzYWxlc19vdGhl cnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhl cnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJz IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQotKDEgcm93KQorIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEgfCBzYWxlc19vdGhlcnMgIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSB8ICAgICAg ICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSBPTiBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkK Kyg0IHJvd3MpCiAKIERST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKIC0tCiAtLSBUZXN0 OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBi b3VuZHMpCiAtLQotQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzX2Ftb3VudCBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfYW1vdW50KTsKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc19kYXRlIGRh dGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CiBDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwogLS0gc2FsZXNfZXJyb3Ig aW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQogLS0gRVJST1I6ICBj YW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFy dGl0aW9uICJzYWxlc19kZWMyMDIxIgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCi0gIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCi0gICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAz MDEpLAorICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0x Mi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjEtMTItMzAnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CiBFUlJPUjogIGNh biBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0 aXRpb24gInNhbGVzX2RlYzIwMjEiCi1MSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBG T1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMi4uLgorTElORSAzOiAgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0zMCcpIFRPICguLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlM OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCiBISU5UOiAgQUxU RVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5k cyB0byBiZSBhZGphY2VudC4KIC0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19m ZWIyMDIyICh1cHBlciBib3VuZCkKIC0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIK IEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5U TwotICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkg VE8gKDIwMjIwMTAxKSwKLSAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00g KDIwMjIwMTAxKSBUTyAoMjAyMjAyMDIpLAotICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAyJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOwogRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgot TElORSA0OiAgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAuLi4KK0xJTkUgNDogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCiBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBB UlRJVElPTiByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KIC0t IHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChpbnNpZGUgYm91bmQp CiAtLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9n ZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCiBBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KLSAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCi0gICBQ QVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjEx MjIwKSwKLSAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVT IEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0xMCcpIFRPICgnMjAyMS0xMi0yMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAogICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dl dGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKLUxJTkUgMzogICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4uCitMSU5F IDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTEw JykgVE8gKC4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MSIKIEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmVzIHRoZSBw YXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgogLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0 cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGV4YWN0bHkgdGhlIHNhbWUgYm91bmRzKQogLS0gRVJST1I6 ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCi0gIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAotICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCi0gICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAy MS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CiBFUlJPUjog IGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCi1MSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJv ciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMi4uLgorTElORSAzOiAgICBQQVJU SVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICguLi4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogREVU QUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFs IHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCiBISU5UOiAg QUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJv dW5kcyB0byBiZSBhZGphY2VudC4KIC0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCBERUZBVUxUIHBh cnRpdGlvbiAic2FsZXNfb3RoZXJzIgogLS0gSElOVDogIFRvIHNwbGl0IERFRkFVTFQgcGFydGl0 aW9uIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbiBtc3V0IGJlIERFRkFVTFQKIEFMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwotICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAx KSwKLSAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEp IFRPICgyMDIyMDIwMSksCi0gICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSk7CiBFUlJPUjogIGNhbiBub3Qgc3Bs aXQgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKLUxJTkUgMjogICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwLi4uCitMSU5F IDI6ICAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTIt MDEnKSBUTy4uLgogICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIFRvIHNwbGl0IERFRkFV TFQgcGFydGl0aW9uIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbiBtc3V0IGJlIERFRkFVTFQKIC0t IG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBzYWxlc19kZWMy MDIxIGFuZCBzYWxlc19mZWIyMDIyCiBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIElOVE8KLSAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCi0gICBQQVJUSVRJT04gc2FsZXNf bm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAotICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIw MzAxKSwKKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEt MTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMTAnKSBUTyAoJzIwMjItMDEtMjAnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CiBEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOwotQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CiBDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOwogLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBl cXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVz X2ZlYjIwMjIKIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTwotICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKLSAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCi0gICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgn MjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAog ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKIERST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0 LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKaW5kZXggZmZk OTVhNDMwNjUuLjBlNzljMDM2ZWE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9z cGxpdC5zcWwKQEAgLTI4NSw3NSArMjg1LDc1IEBAIFNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJz IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CiAKIFJFU0VUIGVuYWJsZV9zZXFzY2Fu OwogCi1TRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2Zl YjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZ IGluZGV4bmFtZSBDT0xMQVRFICJDIjsKLVNFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0 YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOwotU0VMRUNUICogRlJP TSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWUgQ09MTEFU RSAiQyI7Ci1TRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIg QlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzCitXSEVS RSB0YWJsZW5hbWUgaW4gKCdzYWxlc19mZWIyMDIyJywgJ3NhbGVzX21hcjIwMjInLCAnc2FsZXNf YXByMjAyMicsICdzYWxlc19vdGhlcnMnKQorQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYScKK09SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsKIAogRFJPUCBUQUJM RSBzYWxlc19yYW5nZSBDQVNDQURFOwogCiAtLQogLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3Bs aXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQogLS0KLUNSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc19hbW91bnQgSU5UKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Ftb3VudCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKIAogLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNh bGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQogLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMy MDIxIgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCi0gIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjAxKSBUTyAoMjAyMjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCi0gICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0w MS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEt MTItMzAnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKICAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CiAKIC0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMg d2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKIC0tIEVSUk9SOiAgY2FuIG5vdCBzcGxp dCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJz YWxlc19lcnJvciIKIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTwotICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKLSAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDIpLAotICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAo JzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAyJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOwogCiAtLSBzYWxlc19lcnJvciBpbnRl cnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoaW5zaWRlIGJvdW5kKQogLS0gRVJST1I6ICBjYW4g bm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0 aW9uICJzYWxlc19kZWMyMDIxIgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCi0gIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCi0gICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0w MScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjEtMTItMTAnKSBUTyAoJzIwMjEtMTItMjAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CiAKIC0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChleGFjdGx5IHRoZSBzYW1lIGJvdW5k cykKIC0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0 b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKIEFMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwotICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKLSAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAy MjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOwogCiAtLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVz X290aGVycyIKIC0tIEhJTlQ6ICBUbyBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiBvbmUgb2YgdGhl IG5ldyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxUCiBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KLSAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCi0gICBQQVJUSVRJ T04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEp LAotICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkg VE8gKDIwMjIwMzAxKSk7CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZS T00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf amFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJykpOwogCiAtLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25v ZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfZmViMjAyMgogQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCi0gIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAy MjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDExMCkgVE8gKDIwMjIwMTIwKSwKLSAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgIChQQVJUSVRJT04gc2FsZXNfZGVj MjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTEwJykg VE8gKCcyMDIyLTAxLTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQpOwogCiBEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwogCi1DUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzX2Rh dGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKIENSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CiAKIC0tIG5vIGVy cm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVy IGJvdW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCiBBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KLSAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks Ci0gICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBU TyAoMjAyMjAyMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CiAKIERST1AgVEFCTEUgc2FsZXNfcmFuZ2U7Ci0tIAoyLjM0LjEKCg== --000000000000e86e34064011c3d4--