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 1s8y8p-00GT9A-1f for pgsql-hackers@arkaria.postgresql.org; Mon, 20 May 2024 08:13:09 +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 1s8y8o-00H6Oh-4a for pgsql-hackers@arkaria.postgresql.org; Mon, 20 May 2024 08:13:06 +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 1s8y8n-00H6OY-0l for pgsql-hackers@lists.postgresql.org; Mon, 20 May 2024 08:13:05 +0000 Received: from mail-yb1-xb32.google.com ([2607:f8b0:4864:20::b32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1s8y8k-0015j8-1l for pgsql-hackers@postgresql.org; Mon, 20 May 2024 08:13:03 +0000 Received: by mail-yb1-xb32.google.com with SMTP id 3f1490d57ef6-df475159042so1793282276.1 for ; Mon, 20 May 2024 01:13:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716192781; x=1716797581; 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=aQ0J/tfdwtjZJHsMQH1Y597UZjBYKN4aiREANp7kf54=; b=dDbs10dvhNGIOImw2Q07BDpYcQKUGJBP8nZyPks9S0YaXqTiLoaidlEuhfxghah7yU q60EbVaFjAD3ITjSV45mVBfeho3w5A2L4Cjbi0frHAzp3Ef+lvQ/OrOYHOLSo+YKIYSP MLK+lZzzX8yQrZQM+rdk6ypJRecPXT+DNa0DjqGM3fODSTp1/w3bGhGdrLBTQ/MEN9gJ MzzVN95vKsJI69I5jLWqYTq0ywxQsoGsnsb3GBqgC055S970SSZxStqRQ1Nz7lDLtwh2 zDrxKRML8A7n8WLSf/KBSc32j9PPisy5dzMrXMhFqVtAJPL3NzNeCCqENtedfcKdQ/6Q pa0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716192781; x=1716797581; 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=aQ0J/tfdwtjZJHsMQH1Y597UZjBYKN4aiREANp7kf54=; b=GFgo1MAi3TdmLOHLRmFkCJ/9tfQ0efzriOweAePJdUa13kqv9aNZw9aklLs4Vgrg5z ZhgC3bw1hVtH9yIwpzjUVwu2HThEirrClNTBKjHHFPVpSc3Nxyf8zz1JW2yrAn+YVAuw Vyurq+8EcTbS6qVattP8JAYwsOZH+WIovCj5ruo8EArtZBK7BUshK72c/eR79KMlCnSk 2DPVILgNlKK+qY1s9mVBImlbrcNEWD2vJVbEY2u7fmgEBZbcns8FbwGKLhDfGOyOQnZY OnX6+0y7M3G8/2zEXF/UfFlswYcV+wwpiL/y7t8FLX5tksprKht2kUfVzs6ti9dnEd6Q AwCQ== X-Gm-Message-State: AOJu0YyyOMqJeofwJGkTf4Sm41AvEL8c6T9FarKEmI1IDqm4AOblNPnP fa38rbajn2WO35Jop7rprKIb68wwpxVnAIjAdi0Tq+g3VpqlqEqYgf4U+KBnm/o8HzQNTMEt2Qk pyvG6fPg8yWbUerHleSt0qqBmcbg= X-Google-Smtp-Source: AGHT+IHi14pt+0wy79AvIWzYn3XUo+aqqJbKvoDvbRsUq9f8nf52AfUWd/sfxTaQFqcp1/rnF7Wlu9kfL4h/572MhKc= X-Received: by 2002:a25:d04d:0:b0:de4:5c35:62d with SMTP id 3f1490d57ef6-dee4f314afamr27186294276.52.1716192781199; Mon, 20 May 2024 01:13:01 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Mon, 20 May 2024 16:12:49 +0800 Message-ID: Subject: Re: Eager aggregation, take 3 To: Andy Fan Cc: PostgreSQL-development , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001731af0618de45d9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001731af0618de45d9 Content-Type: multipart/alternative; boundary="0000000000001731ae0618de45d7" --0000000000001731ae0618de45d7 Content-Type: text/plain; charset="UTF-8" Another rebase is needed after d1d286d83c. Also I realized that the partially_grouped_rel generated by eager aggregation might be dummy, such as in query: select count(t2.c) from t t1 join t t2 on t1.b = t2.b where false group by t1.a; If somehow we choose this dummy path with a Finalize Agg Path on top of it as the final cheapest path (a very rare case), we would encounter the "Aggref found in non-Agg plan node" error. The v7 patch fixes this issue. Thanks Richard --0000000000001731ae0618de45d7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Another rebase is needed after d1d286d83c.=C2=A0 Also I re= alized that the
partially_grouped_rel generated by eager aggregation mig= ht be dummy,
such as in query:

select count(t2.c) from t t1 join = t t2 on t1.b =3D t2.b where false group by t1.a;

If somehow we choos= e this dummy path with a Finalize Agg Path on top of
it as the final che= apest path (a very rare case), we would encounter the
"Aggref found= in non-Agg plan node" error.=C2=A0 The v7 patch fixes this
issue.<= br>
Thanks
Richard
--0000000000001731ae0618de45d7-- --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0001-Introduce-RelInfoList-structure.patch" Content-Disposition: attachment; filename="v7-0001-Introduce-RelInfoList-structure.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweoseny0 RnJvbSAxMGFkNjkzZWYzNzk5NzljZDY3OTRjZmMwYTgwNWQ0NDMxYWRhOWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxOSBGZWIgMjAyNCAxNToxNjo1MSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg MS85XSBJbnRyb2R1Y2UgUmVsSW5mb0xpc3Qgc3RydWN0dXJlCgpUaGlzIGNvbW1pdCBpbnRyb2R1 Y2VzIHRoZSBSZWxJbmZvTGlzdCBzdHJ1Y3R1cmUsIHdoaWNoIGVuY2Fwc3VsYXRlcwpib3RoIGEg bGlzdCBhbmQgYSBoYXNoIHRhYmxlLCBzbyB0aGF0IHdlIGNhbiBsZXZlcmFnZSB0aGUgaGFzaCB0 YWJsZSBmb3IKZmFzdGVyIGxvb2t1cHMgbm90IG9ubHkgZm9yIGpvaW4gcmVsYXRpb25zIGJ1dCBh bHNvIGZvciB1cHBlciByZWxhdGlvbnMuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZh bC5jIHwgIDIwICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAgfCAg IDcgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMgIHwgICA1ICstCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICB8IDE2NCArKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICB8ICAz MSArKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCA0MDUzY2Q2NDFjLi5iZmNl ZDYxNDIyIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNjA2OSw3ICs2MDY5 LDggQEAgZm9yZWlnbl9qb2luX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lu cmVsLCBKb2luVHlwZSBqb2ludHlwZSwKIAkgKi8KIAlBc3NlcnQoZnBpbmZvLT5yZWxhdGlvbl9p bmRleCA9PSAwKTsJLyogc2hvdWxkbid0IGJlIHNldCB5ZXQgKi8KIAlmcGluZm8tPnJlbGF0aW9u X2luZGV4ID0KLQkJbGlzdF9sZW5ndGgocm9vdC0+cGFyc2UtPnJ0YWJsZSkgKyBsaXN0X2xlbmd0 aChyb290LT5qb2luX3JlbF9saXN0KTsKKwkJbGlzdF9sZW5ndGgocm9vdC0+cGFyc2UtPnJ0YWJs ZSkgKworCQlsaXN0X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyk7CiAKIAlyZXR1 cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9f ZXZhbC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMKaW5kZXggZDJm N2Y0ZTVmMy4uMTE0MTE1Njg5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dl cW8vZ2Vxb19ldmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFs LmMKQEAgLTg1LDE4ICs4NSwxOCBAQCBnZXFvX2V2YWwoUGxhbm5lckluZm8gKnJvb3QsIEdlbmUg KnRvdXIsIGludCBudW1fZ2VuZSkKIAkgKiB0cnVuY2F0aW5nIHRoZSBsaXN0IHRvIGl0cyBvcmln aW5hbCBsZW5ndGguICBOT1RFIHRoaXMgYXNzdW1lcyB0aGF0IGFueQogCSAqIGFkZGVkIGVudHJp ZXMgYXJlIGFwcGVuZGVkIGF0IHRoZSBlbmQhCiAJICoKLQkgKiBXZSBhbHNvIG11c3QgdGFrZSBj YXJlIG5vdCB0byBtZXNzIHVwIHRoZSBvdXRlciBqb2luX3JlbF9oYXNoLCBpZiB0aGVyZQotCSAq IGlzIG9uZS4gIFdlIGNhbiBkbyB0aGlzIGJ5IGp1c3QgdGVtcG9yYXJpbHkgc2V0dGluZyB0aGUg bGluayB0byBOVUxMLgotCSAqIChJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGVub3VnaCBqb2luIHJl bHMsIHdoaWNoIHdlIHZlcnkgbGlrZWx5IGFyZSwgYQotCSAqIG5ldyBoYXNoIHRhYmxlIHdpbGwg Z2V0IGJ1aWx0IGFuZCB1c2VkIGxvY2FsbHkuKQorCSAqIFdlIGFsc28gbXVzdCB0YWtlIGNhcmUg bm90IHRvIG1lc3MgdXAgdGhlIG91dGVyIGpvaW5fcmVsX2xpc3QtPmhhc2gsIGlmCisJICogdGhl cmUgaXMgb25lLiAgV2UgY2FuIGRvIHRoaXMgYnkganVzdCB0ZW1wb3JhcmlseSBzZXR0aW5nIHRo ZSBsaW5rIHRvCisJICogTlVMTC4gIChJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGVub3VnaCBqb2lu IHJlbHMsIHdoaWNoIHdlIHZlcnkgbGlrZWx5CisJICogYXJlLCBhIG5ldyBoYXNoIHRhYmxlIHdp bGwgZ2V0IGJ1aWx0IGFuZCB1c2VkIGxvY2FsbHkuKQogCSAqCiAJICogam9pbl9yZWxfbGV2ZWxb XSBzaG91bGRuJ3QgYmUgaW4gdXNlLCBzbyBqdXN0IEFzc2VydCBpdCBpc24ndC4KIAkgKi8KLQlz YXZlbGVuZ3RoID0gbGlzdF9sZW5ndGgocm9vdC0+am9pbl9yZWxfbGlzdCk7Ci0Jc2F2ZWhhc2gg PSByb290LT5qb2luX3JlbF9oYXNoOworCXNhdmVsZW5ndGggPSBsaXN0X2xlbmd0aChyb290LT5q b2luX3JlbF9saXN0LT5pdGVtcyk7CisJc2F2ZWhhc2ggPSByb290LT5qb2luX3JlbF9saXN0LT5o YXNoOwogCUFzc2VydChyb290LT5qb2luX3JlbF9sZXZlbCA9PSBOVUxMKTsKIAotCXJvb3QtPmpv aW5fcmVsX2hhc2ggPSBOVUxMOworCXJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2ggPSBOVUxMOwog CiAJLyogY29uc3RydWN0IHRoZSBiZXN0IHBhdGggZm9yIHRoZSBnaXZlbiBjb21iaW5hdGlvbiBv ZiByZWxhdGlvbnMgKi8KIAlqb2lucmVsID0gZ2ltbWVfdHJlZShyb290LCB0b3VyLCBudW1fZ2Vu ZSk7CkBAIC0xMjEsOSArMTIxLDkgQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5l ICp0b3VyLCBpbnQgbnVtX2dlbmUpCiAJICogUmVzdG9yZSBqb2luX3JlbF9saXN0IHRvIGl0cyBm b3JtZXIgc3RhdGUsIGFuZCBwdXQgYmFjayBvcmlnaW5hbAogCSAqIGhhc2h0YWJsZSBpZiBhbnku CiAJICovCi0Jcm9vdC0+am9pbl9yZWxfbGlzdCA9IGxpc3RfdHJ1bmNhdGUocm9vdC0+am9pbl9y ZWxfbGlzdCwKLQkJCQkJCQkJCQlzYXZlbGVuZ3RoKTsKLQlyb290LT5qb2luX3JlbF9oYXNoID0g c2F2ZWhhc2g7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgPSBsaXN0X3RydW5jYXRlKHJv b3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zLAorCQkJCQkJCQkJCQkgICBzYXZlbGVuZ3RoKTsKKwly b290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gc2F2ZWhhc2g7CiAKIAkvKiByZWxlYXNlIGFsbCB0 aGUgbWVtb3J5IGFjcXVpcmVkIHdpdGhpbiBnaW1tZV90cmVlICovCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA0 ODk1Y2VlOTk0Li43MGUyYjU4ZDhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMKQEAgLTM0MDMsOSArMzQwMywxMCBAQCBtYWtlX3JlbF9mcm9tX2pvaW5saXN0KFBsYW5uZXJJ bmZvICpyb290LCBMaXN0ICpqb2lubGlzdCkKICAqIG5lZWRlZCBmb3IgdGhlc2UgcGF0aHMgbmVl ZCBoYXZlIGJlZW4gaW5zdGFudGlhdGVkLgogICoKICAqIE5vdGUgdG8gcGx1Z2luIGF1dGhvcnM6 IHRoZSBmdW5jdGlvbnMgaW52b2tlZCBkdXJpbmcgc3RhbmRhcmRfam9pbl9zZWFyY2goKQotICog bW9kaWZ5IHJvb3QtPmpvaW5fcmVsX2xpc3QgYW5kIHJvb3QtPmpvaW5fcmVsX2hhc2guICBJZiB5 b3Ugd2FudCB0byBkbyBtb3JlCi0gKiB0aGFuIG9uZSBqb2luLW9yZGVyIHNlYXJjaCwgeW91J2xs IHByb2JhYmx5IG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKLSAqIG9yaWdpbmFsIHN0YXRl cyBvZiB0aG9zZSBkYXRhIHN0cnVjdHVyZXMuICBTZWUgZ2Vxb19ldmFsKCkgZm9yIGFuIGV4YW1w bGUuCisgKiBtb2RpZnkgcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgYW5kIHJvb3QtPmpvaW5f cmVsX2xpc3QtPmhhc2guICBJZiB5b3UKKyAqIHdhbnQgdG8gZG8gbW9yZSB0aGFuIG9uZSBqb2lu LW9yZGVyIHNlYXJjaCwgeW91J2xsIHByb2JhYmx5IG5lZWQgdG8gc2F2ZSBhbmQKKyAqIHJlc3Rv cmUgdGhlIG9yaWdpbmFsIHN0YXRlcyBvZiB0aG9zZSBkYXRhIHN0cnVjdHVyZXMuICBTZWUgZ2Vx b19ldmFsKCkgZm9yCisgKiBhbiBleGFtcGxlLgogICovCiBSZWxPcHRJbmZvICoKIHN0YW5kYXJk X2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAq aW5pdGlhbF9yZWxzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm1haW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggZTE3 ZDMxYTVjMy4uZmQ4YjJiMGNhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm1haW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5j CkBAIC02NCw4ICs2NCw5IEBAIHF1ZXJ5X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJICog Tk9URTogYXBwZW5kX3JlbF9saXN0IHdhcyBzZXQgdXAgYnkgc3VicXVlcnlfcGxhbm5lciwgc28g ZG8gbm90IHRvdWNoCiAJICogaGVyZS4KIAkgKi8KLQlyb290LT5qb2luX3JlbF9saXN0ID0gTklM OwotCXJvb3QtPmpvaW5fcmVsX2hhc2ggPSBOVUxMOworCXJvb3QtPmpvaW5fcmVsX2xpc3QgPSBt YWtlTm9kZShSZWxJbmZvTGlzdCk7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgPSBOSUw7 CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9IE5VTEw7CiAJcm9vdC0+am9pbl9yZWxfbGV2 ZWwgPSBOVUxMOwogCXJvb3QtPmpvaW5fY3VyX2xldmVsID0gMDsKIAlyb290LT5jYW5vbl9wYXRo a2V5cyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5v ZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCBlMDViMjFj ODg0Li44Mjc5YWIwZTExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9y ZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBAIC0z NSwxMSArMzUsMTUgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCi10eXBlZGVm IHN0cnVjdCBKb2luSGFzaEVudHJ5CisvKgorICogQW4gZW50cnkgb2YgYSBoYXNoIHRhYmxlIHRo YXQgd2UgdXNlIHRvIG1ha2UgbG9va3VwIGZvciBSZWxPcHRJbmZvCisgKiBzdHJ1Y3R1cmVzIG1v cmUgZWZmaWNpZW50LgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKLQlSZWxp ZHMJCWpvaW5fcmVsaWRzOwkvKiBoYXNoIGtleSAtLS0gTVVTVCBCRSBGSVJTVCAqLwotCVJlbE9w dEluZm8gKmpvaW5fcmVsOwotfSBKb2luSGFzaEVudHJ5OworCVJlbGlkcwkJcmVsaWRzOwkJCS8q IGhhc2gga2V5IC0tLSBNVVNUIEJFIEZJUlNUICovCisJUmVsT3B0SW5mbyAqcmVsOworfSBSZWxJ bmZvRW50cnk7CiAKIHN0YXRpYyB2b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsCiAJCQkJCQkJCVJlbE9wdEluZm8gKmlucHV0X3Jl bCwKQEAgLTQ3OSwxMSArNDgzLDExIEBAIGZpbmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5l ckluZm8gKnJvb3QsIGludCByZWxpZCkKIH0KIAogLyoKLSAqIGJ1aWxkX2pvaW5fcmVsX2hhc2gK LSAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0YWJsZSBmb3Igam9pbiByZWxhdGlv bnMuCisgKiBidWlsZF9yZWxfaGFzaAorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNo IHRhYmxlIGZvciByZWxhdGlvbnMuCiAgKi8KIHN0YXRpYyB2b2lkCi1idWlsZF9qb2luX3JlbF9o YXNoKFBsYW5uZXJJbmZvICpyb290KQorYnVpbGRfcmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3Qp CiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKIAlIQVNIQ1RMCQloYXNoX2N0bDsKQEAgLTQ5MSw0NyAr NDk1LDQ5IEBAIGJ1aWxkX2pvaW5fcmVsX2hhc2goUGxhbm5lckluZm8gKnJvb3QpCiAKIAkvKiBD cmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KIAloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFJlbGlk cyk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEpvaW5IYXNoRW50cnkpOworCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxJbmZvRW50cnkpOwogCWhhc2hfY3RsLmhhc2ggPSBi aXRtYXBfaGFzaDsKIAloYXNoX2N0bC5tYXRjaCA9IGJpdG1hcF9tYXRjaDsKIAloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJKb2lu UmVsSGFzaFRhYmxlIiwKKwloYXNodGFiID0gaGFzaF9jcmVhdGUoIlJlbEhhc2hUYWJsZSIsCiAJ CQkJCQkgIDI1NkwsCiAJCQkJCQkgICZoYXNoX2N0bCwKIAkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CiAKLQkvKiBJbnNlcnQg YWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIGpvaW5yZWxzICovCi0JZm9yZWFjaChsLCByb290LT5q b2luX3JlbF9saXN0KQorCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgcmVsYXRp b25zICovCisJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAl7CiAJCVJlbE9wdEluZm8gKnJlbCA9 IChSZWxPcHRJbmZvICopIGxmaXJzdChsKTsKLQkJSm9pbkhhc2hFbnRyeSAqaGVudHJ5OworCQlS ZWxJbmZvRW50cnkgKmhlbnRyeTsKIAkJYm9vbAkJZm91bmQ7CiAKLQkJaGVudHJ5ID0gKEpvaW5I YXNoRW50cnkgKikgaGFzaF9zZWFyY2goaGFzaHRhYiwKLQkJCQkJCQkJCQkJICAgJihyZWwtPnJl bGlkcyksCi0JCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsCi0JCQkJCQkJCQkJCSAgICZmb3VuZCk7 CisJCWhlbnRyeSA9IChSZWxJbmZvRW50cnkgKikgaGFzaF9zZWFyY2goaGFzaHRhYiwKKwkJCQkJ CQkJCQkJICAmKHJlbC0+cmVsaWRzKSwKKwkJCQkJCQkJCQkJICBIQVNIX0VOVEVSLAorCQkJCQkJ CQkJCQkgICZmb3VuZCk7CiAJCUFzc2VydCghZm91bmQpOwotCQloZW50cnktPmpvaW5fcmVsID0g cmVsOworCQloZW50cnktPnJlbCA9IHJlbDsKIAl9CiAKLQlyb290LT5qb2luX3JlbF9oYXNoID0g aGFzaHRhYjsKKwlsaXN0LT5oYXNoID0gaGFzaHRhYjsKIH0KIAogLyoKLSAqIGZpbmRfam9pbl9y ZWwKLSAqCSAgUmV0dXJucyByZWxhdGlvbiBlbnRyeSBjb3JyZXNwb25kaW5nIHRvICdyZWxpZHMn IChhIHNldCBvZiBSVCBpbmRleGVzKSwKLSAqCSAgb3IgTlVMTCBpZiBub25lIGV4aXN0cy4gIFRo aXMgaXMgZm9yIGpvaW4gcmVsYXRpb25zLgorICogZmluZF9yZWxfaW5mbworICoJICBGaW5kIGFu IFJlbE9wdEluZm8gZW50cnkuCiAgKi8KLVJlbE9wdEluZm8gKgotZmluZF9qb2luX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcykKK3N0YXRpYyBSZWxPcHRJbmZvICoKK2ZpbmRf cmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMpCiB7CisJaWYgKGxpc3Qg PT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKIAkvKgogCSAqIFN3aXRjaCB0byB1c2luZyBoYXNo IGxvb2t1cCB3aGVuIGxpc3QgZ3Jvd3MgInRvbyBsb25nIi4gIFRoZSB0aHJlc2hvbGQKIAkgKiBp cyBhcmJpdHJhcnkgYW5kIGlzIGtub3duIG9ubHkgaGVyZS4KIAkgKi8KLQlpZiAoIXJvb3QtPmpv aW5fcmVsX2hhc2ggJiYgbGlzdF9sZW5ndGgocm9vdC0+am9pbl9yZWxfbGlzdCkgPiAzMikKLQkJ YnVpbGRfam9pbl9yZWxfaGFzaChyb290KTsKKwlpZiAoIWxpc3QtPmhhc2ggJiYgbGlzdF9sZW5n dGgobGlzdC0+aXRlbXMpID4gMzIpCisJCWJ1aWxkX3JlbF9oYXNoKGxpc3QpOwogCiAJLyoKIAkg KiBVc2UgZWl0aGVyIGhhc2h0YWJsZSBsb29rdXAgb3IgbGluZWFyIHNlYXJjaCwgYXMgYXBwcm9w cmlhdGUuCkBAIC01NDEsMjMgKzU0NywyMyBAQCBmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpy b290LCBSZWxpZHMgcmVsaWRzKQogCSAqIHNvIHdvdWxkIGZvcmNlIHJlbGlkcyBvdXQgb2YgYSBy ZWdpc3RlciBhbmQgdGh1cyBwcm9iYWJseSBzbG93IGRvd24gdGhlCiAJICogbGlzdC1zZWFyY2gg Y2FzZS4KIAkgKi8KLQlpZiAocm9vdC0+am9pbl9yZWxfaGFzaCkKKwlpZiAobGlzdC0+aGFzaCkK IAl7CiAJCVJlbGlkcwkJaGFzaGtleSA9IHJlbGlkczsKLQkJSm9pbkhhc2hFbnRyeSAqaGVudHJ5 OworCQlSZWxJbmZvRW50cnkgKmhlbnRyeTsKIAotCQloZW50cnkgPSAoSm9pbkhhc2hFbnRyeSAq KSBoYXNoX3NlYXJjaChyb290LT5qb2luX3JlbF9oYXNoLAotCQkJCQkJCQkJCQkgICAmaGFzaGtl eSwKLQkJCQkJCQkJCQkJICAgSEFTSF9GSU5ELAotCQkJCQkJCQkJCQkgICBOVUxMKTsKKwkJaGVu dHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChsaXN0LT5oYXNoLAorCQkJCQkJCQkJ CQkgICZoYXNoa2V5LAorCQkJCQkJCQkJCQkgIEhBU0hfRklORCwKKwkJCQkJCQkJCQkJICBOVUxM KTsKIAkJaWYgKGhlbnRyeSkKLQkJCXJldHVybiBoZW50cnktPmpvaW5fcmVsOworCQkJcmV0dXJu IGhlbnRyeS0+cmVsOwogCX0KIAllbHNlCiAJewogCQlMaXN0Q2VsbCAgICpsOwogCi0JCWZvcmVh Y2gobCwgcm9vdC0+am9pbl9yZWxfbGlzdCkKKwkJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAkJ ewogCQkJUmVsT3B0SW5mbyAqcmVsID0gKFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOwogCkBAIC01 NjksNiArNTc1LDU0IEBAIGZpbmRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBy ZWxpZHMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBmaW5kX2pvaW5fcmVsCisgKgkgIFJl dHVybnMgcmVsYXRpb24gZW50cnkgY29ycmVzcG9uZGluZyB0byAncmVsaWRzJyAoYSBzZXQgb2Yg UlQgaW5kZXhlcyksCisgKgkgIG9yIE5VTEwgaWYgbm9uZSBleGlzdHMuICBUaGlzIGlzIGZvciBq b2luIHJlbGF0aW9ucy4KKyAqLworUmVsT3B0SW5mbyAqCitmaW5kX2pvaW5fcmVsKFBsYW5uZXJJ bmZvICpyb290LCBSZWxpZHMgcmVsaWRzKQoreworCXJldHVybiBmaW5kX3JlbF9pbmZvKHJvb3Qt PmpvaW5fcmVsX2xpc3QsIHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcmVsX2luZm8KKyAqCQlB ZGQgZ2l2ZW4gcmVsYXRpb24gdG8gdGhlIGdpdmVuIGxpc3QuIEFsc28gYWRkIGl0IHRvIHRoZSBh dXhpbGlhcnkKKyAqCQloYXNodGFibGUgaWYgdGhlcmUgaXMgb25lLgorICovCitzdGF0aWMgdm9p ZAorYWRkX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxPcHRJbmZvICpyZWwpCit7CisJ LyogR0VRTyByZXF1aXJlcyB1cyB0byBhcHBlbmQgdGhlIG5ldyByZWxhdGlvbiB0byB0aGUgZW5k IG9mIHRoZSBsaXN0ISAqLworCWxpc3QtPml0ZW1zID0gbGFwcGVuZChsaXN0LT5pdGVtcywgcmVs KTsKKworCS8qIHN0b3JlIGl0IGludG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUg aXMgb25lLiAqLworCWlmIChsaXN0LT5oYXNoKQorCXsKKwkJUmVsSW5mb0VudHJ5ICpoZW50cnk7 CisJCWJvb2wJCWZvdW5kOworCisJCWhlbnRyeSA9IChSZWxJbmZvRW50cnkgKikgaGFzaF9zZWFy Y2gobGlzdC0+aGFzaCwKKwkJCQkJCQkJCQkJICAmKHJlbC0+cmVsaWRzKSwKKwkJCQkJCQkJCQkJ ICBIQVNIX0VOVEVSLAorCQkJCQkJCQkJCQkgICZmb3VuZCk7CisJCUFzc2VydCghZm91bmQpOwor CQloZW50cnktPnJlbCA9IHJlbDsKKwl9Cit9CisKKy8qCisgKiBhZGRfam9pbl9yZWwKKyAqCQlB ZGQgZ2l2ZW4gam9pbiByZWxhdGlvbiB0byB0aGUgbGlzdCBvZiBqb2luIHJlbGF0aW9ucyBpbiB0 aGUgZ2l2ZW4KKyAqCQlQbGFubmVySW5mby4KKyAqLworc3RhdGljIHZvaWQKK2FkZF9qb2luX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCkKK3sKKwlhZGRfcmVsX2lu Zm8ocm9vdC0+am9pbl9yZWxfbGlzdCwgam9pbnJlbCk7Cit9CisKIC8qCiAgKiBzZXRfZm9yZWln bl9yZWxfcHJvcGVydGllcwogICoJCVNldCB1cCBmb3JlaWduLWpvaW4gZmllbGRzIGlmIG91dGVy IGFuZCBpbm5lciByZWxhdGlvbiBhcmUgZm9yZWlnbgpAQCAtNjE4LDMyICs2NzIsNiBAQCBzZXRf Zm9yZWlnbl9yZWxfcHJvcGVydGllcyhSZWxPcHRJbmZvICpqb2lucmVsLCBSZWxPcHRJbmZvICpv dXRlcl9yZWwsCiAJfQogfQogCi0vKgotICogYWRkX2pvaW5fcmVsCi0gKgkJQWRkIGdpdmVuIGpv aW4gcmVsYXRpb24gdG8gdGhlIGxpc3Qgb2Ygam9pbiByZWxhdGlvbnMgaW4gdGhlIGdpdmVuCi0g KgkJUGxhbm5lckluZm8uIEFsc28gYWRkIGl0IHRvIHRoZSBhdXhpbGlhcnkgaGFzaHRhYmxlIGlm IHRoZXJlIGlzIG9uZS4KLSAqLwotc3RhdGljIHZvaWQKLWFkZF9qb2luX3JlbChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCkKLXsKLQkvKiBHRVFPIHJlcXVpcmVzIHVzIHRv IGFwcGVuZCB0aGUgbmV3IGpvaW5yZWwgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCEgKi8KLQlyb290 LT5qb2luX3JlbF9saXN0ID0gbGFwcGVuZChyb290LT5qb2luX3JlbF9saXN0LCBqb2lucmVsKTsK LQotCS8qIHN0b3JlIGl0IGludG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUgaXMg b25lLiAqLwotCWlmIChyb290LT5qb2luX3JlbF9oYXNoKQotCXsKLQkJSm9pbkhhc2hFbnRyeSAq aGVudHJ5OwotCQlib29sCQlmb3VuZDsKLQotCQloZW50cnkgPSAoSm9pbkhhc2hFbnRyeSAqKSBo YXNoX3NlYXJjaChyb290LT5qb2luX3JlbF9oYXNoLAotCQkJCQkJCQkJCQkgICAmKGpvaW5yZWwt PnJlbGlkcyksCi0JCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsCi0JCQkJCQkJCQkJCSAgICZmb3Vu ZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCQloZW50cnktPmpvaW5fcmVsID0gam9pbnJlbDsKLQl9 Ci19Ci0KIC8qCiAgKiBidWlsZF9qb2luX3JlbAogICoJICBSZXR1cm5zIHJlbGF0aW9uIGVudHJ5 IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVuaW9uIG9mIHR3byBnaXZlbiByZWxzLApAQCAtMTQ2OSwy MiArMTQ5NywxNCBAQCBzdWJidWlsZF9qb2lucmVsX2pvaW5saXN0KFJlbE9wdEluZm8gKmpvaW5y ZWwsCiBSZWxPcHRJbmZvICoKIGZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBw ZXJSZWxhdGlvbktpbmQga2luZCwgUmVsaWRzIHJlbGlkcykKIHsKKwlSZWxJbmZvTGlzdCAqbGlz dCA9ICZyb290LT51cHBlcl9yZWxzW2tpbmRdOwogCVJlbE9wdEluZm8gKnVwcGVycmVsOwotCUxp c3RDZWxsICAgKmxjOwotCi0JLyoKLQkgKiBGb3IgdGhlIG1vbWVudCwgb3VyIGluZGV4aW5nIGRh dGEgc3RydWN0dXJlIGlzIGp1c3QgYSBMaXN0IGZvciBlYWNoCi0JICogcmVsYXRpb24ga2luZC4g IElmIHdlIGV2ZXIgZ2V0IHNvIG1hbnkgb2Ygb25lIGtpbmQgdGhhdCB0aGlzIHN0b3BzCi0JICog d29ya2luZyB3ZWxsLCB3ZSBjYW4gaW1wcm92ZSBpdC4gIE5vIGNvZGUgb3V0c2lkZSB0aGlzIGZ1 bmN0aW9uIHNob3VsZAotCSAqIGFzc3VtZSBhbnl0aGluZyBhYm91dCBob3cgdG8gZmluZCBhIHBh cnRpY3VsYXIgdXBwZXJyZWwuCi0JICovCiAKIAkvKiBJZiB3ZSBhbHJlYWR5IG1hZGUgdGhpcyB1 cHBlcnJlbCBmb3IgdGhlIHF1ZXJ5LCByZXR1cm4gaXQgKi8KLQlmb3JlYWNoKGxjLCByb290LT51 cHBlcl9yZWxzW2tpbmRdKQorCWlmIChsaXN0KQogCXsKLQkJdXBwZXJyZWwgPSAoUmVsT3B0SW5m byAqKSBsZmlyc3QobGMpOwotCi0JCWlmIChibXNfZXF1YWwodXBwZXJyZWwtPnJlbGlkcywgcmVs aWRzKSkKKwkJdXBwZXJyZWwgPSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CisJCWlmICh1 cHBlcnJlbCkKIAkJCXJldHVybiB1cHBlcnJlbDsKIAl9CiAKQEAgLTE1MDMsNyArMTUyMyw3IEBA IGZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBwZXJSZWxhdGlvbktpbmQga2lu ZCwgUmVsaWRzIHJlbGlkcykKIAl1cHBlcnJlbC0+Y2hlYXBlc3RfdW5pcXVlX3BhdGggPSBOVUxM OwogCXVwcGVycmVsLT5jaGVhcGVzdF9wYXJhbWV0ZXJpemVkX3BhdGhzID0gTklMOwogCi0Jcm9v dC0+dXBwZXJfcmVsc1traW5kXSA9IGxhcHBlbmQocm9vdC0+dXBwZXJfcmVsc1traW5kXSwgdXBw ZXJyZWwpOworCWFkZF9yZWxfaW5mbygmcm9vdC0+dXBwZXJfcmVsc1traW5kXSwgdXBwZXJyZWwp OwogCiAJcmV0dXJuIHVwcGVycmVsOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAxNGVmMjk2 YWI3Li40YzdjNmJjN2E4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtODAsNiArODAsMjUgQEAg dHlwZWRlZiBlbnVtIFVwcGVyUmVsYXRpb25LaW5kCiAJLyogTkI6IFVQUEVSUkVMX0ZJTkFMIG11 c3QgYmUgbGFzdCBlbnVtIGVudHJ5OyBpdCdzIHVzZWQgdG8gc2l6ZSBhcnJheXMgKi8KIH0gVXBw ZXJSZWxhdGlvbktpbmQ7CiAKKy8qCisgKiBIYXNoZWQgbGlzdCB0byBzdG9yZSByZWxhdGlvbiBz cGVjaWZpYyBpbmZvIGFuZCB0byByZXRyaWV2ZSBpdCBieSByZWxpZHMuCisgKgorICogRm9yIHNt YWxsIHByb2JsZW1zIHdlIGp1c3Qgc2NhbiB0aGUgbGlzdCB0byBkbyBsb29rdXBzLCBidXQgd2hl biB0aGVyZSBhcmUKKyAqIG1hbnkgcmVsYXRpb25zIHdlIGJ1aWxkIGEgaGFzaCB0YWJsZSBmb3Ig ZmFzdGVyIGxvb2t1cHMuICBUaGUgaGFzaCB0YWJsZSBpcworICogcHJlc2VudCBhbmQgdmFsaWQg d2hlbiAnaGFzaCcgaXMgbm90IE5VTEwuICBOb3RlIHRoYXQgd2Ugc3RpbGwgbWFpbnRhaW4gdGhl CisgKiBsaXN0IGV2ZW4gd2hlbiB1c2luZyB0aGUgaGFzaCB0YWJsZSBmb3IgbG9va3VwczsgdGhp cyBzaW1wbGlmaWVzIGxpZmUgZm9yCisgKiBHRVFPLgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxJ bmZvTGlzdAoreworCXBnX25vZGVfYXR0cihub19jb3B5X2VxdWFsLCBub19yZWFkKQorCisJTm9k ZVRhZwkJdHlwZTsKKworCUxpc3QJICAgKml0ZW1zOworCXN0cnVjdCBIVEFCICpoYXNoIHBnX25v ZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7Cit9IFJlbEluZm9MaXN0OworCiAvKi0tLS0tLS0t LS0KICAqIFBsYW5uZXJHbG9iYWwKICAqCQlHbG9iYWwgaW5mb3JtYXRpb24gZm9yIHBsYW5uaW5n L29wdGltaXphdGlvbgpAQCAtMjcwLDE1ICsyODksOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAog CS8qCiAJICogam9pbl9yZWxfbGlzdCBpcyBhIGxpc3Qgb2YgYWxsIGpvaW4tcmVsYXRpb24gUmVs T3B0SW5mb3Mgd2UgaGF2ZQotCSAqIGNvbnNpZGVyZWQgaW4gdGhpcyBwbGFubmluZyBydW4uICBG b3Igc21hbGwgcHJvYmxlbXMgd2UganVzdCBzY2FuIHRoZQotCSAqIGxpc3QgdG8gZG8gbG9va3Vw cywgYnV0IHdoZW4gdGhlcmUgYXJlIG1hbnkgam9pbiByZWxhdGlvbnMgd2UgYnVpbGQgYQotCSAq IGhhc2ggdGFibGUgZm9yIGZhc3RlciBsb29rdXBzLiAgVGhlIGhhc2ggdGFibGUgaXMgcHJlc2Vu dCBhbmQgdmFsaWQKLQkgKiB3aGVuIGpvaW5fcmVsX2hhc2ggaXMgbm90IE5VTEwuICBOb3RlIHRo YXQgd2Ugc3RpbGwgbWFpbnRhaW4gdGhlIGxpc3QKLQkgKiBldmVuIHdoZW4gdXNpbmcgdGhlIGhh c2ggdGFibGUgZm9yIGxvb2t1cHM7IHRoaXMgc2ltcGxpZmllcyBsaWZlIGZvcgotCSAqIEdFUU8u CisJICogY29uc2lkZXJlZCBpbiB0aGlzIHBsYW5uaW5nIHJ1bi4KIAkgKi8KLQlMaXN0CSAgICpq b2luX3JlbF9saXN0OwotCXN0cnVjdCBIVEFCICpqb2luX3JlbF9oYXNoIHBnX25vZGVfYXR0cihy ZWFkX3dyaXRlX2lnbm9yZSk7CisJUmVsSW5mb0xpc3QgKmpvaW5fcmVsX2xpc3Q7CS8qIGxpc3Qg b2Ygam9pbi1yZWxhdGlvbiBSZWxPcHRJbmZvcyAqLwogCiAJLyoKIAkgKiBXaGVuIGRvaW5nIGEg ZHluYW1pYy1wcm9ncmFtbWluZy1zdHlsZSBqb2luIHNlYXJjaCwgam9pbl9yZWxfbGV2ZWxba10K QEAgLTQxMyw3ICs0MjYsNyBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkgKiBVcHBlci1yZWwgUmVs T3B0SW5mb3MuIFVzZSBmZXRjaF91cHBlcl9yZWwoKSB0byBnZXQgYW55IHBhcnRpY3VsYXIKIAkg KiB1cHBlciByZWwuCiAJICovCi0JTGlzdAkgICAqdXBwZXJfcmVsc1tVUFBFUlJFTF9GSU5BTCAr IDFdIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CisJUmVsSW5mb0xpc3QJCXVwcGVy X3JlbHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUp OwogCiAJLyogUmVzdWx0IHRsaXN0cyBjaG9zZW4gYnkgZ3JvdXBpbmdfcGxhbm5lciBmb3IgdXBw ZXItc3RhZ2UgcHJvY2Vzc2luZyAqLwogCXN0cnVjdCBQYXRoVGFyZ2V0ICp1cHBlcl90YXJnZXRz W1VQUEVSUkVMX0ZJTkFMICsgMV0gcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKLS0g CjIuMzEuMAoK --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Disposition: attachment; filename="v7-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweosq891 RnJvbSBkYzFmNjJhZDgxMzk2YjE1MGMwMGMyNzdjYWQxZTFkMDQxMDMyNzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMToxMjoxOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg Mi85XSBJbnRyb2R1Y2UgUmVsQWdnSW5mbyBzdHJ1Y3R1cmUgdG8gc3RvcmUgaW5mbyBmb3IKIGdy b3VwZWQgcGF0aHMuCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIFJlbEFnZ0luZm8gc3RydWN0dXJl IHRvIHN0b3JlIGluZm9ybWF0aW9uIG5lZWRlZAp0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3Ig YmFzZSBhbmQgam9pbiByZWxzLiAgSXQgYWxzbyByZXZpc2VzIHRoZQpSZWxJbmZvTGlzdCByZWxh dGVkIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQKd2l0 aCBSZWxBZ2dJbmZvcy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMg fCA2NiArKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaCAgICAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggODI3OWFiMGUxMS4uODQyMGI4OTM2ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMzYsMTMgKzM2LDEzIEBACiAKIAogLyoKLSAq IEFuIGVudHJ5IG9mIGEgaGFzaCB0YWJsZSB0aGF0IHdlIHVzZSB0byBtYWtlIGxvb2t1cCBmb3Ig UmVsT3B0SW5mbwotICogc3RydWN0dXJlcyBtb3JlIGVmZmljaWVudC4KKyAqIEFuIGVudHJ5IG9m IGEgaGFzaCB0YWJsZSB0aGF0IHdlIHVzZSB0byBtYWtlIGxvb2t1cCBmb3IgUmVsT3B0SW5mbyBv cgorICogUmVsQWdnSW5mbyBzdHJ1Y3R1cmVzIG1vcmUgZWZmaWNpZW50LgogICovCiB0eXBlZGVm IHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKIAlSZWxpZHMJCXJlbGlkczsJCQkvKiBoYXNoIGtleSAt LS0gTVVTVCBCRSBGSVJTVCAqLwotCVJlbE9wdEluZm8gKnJlbDsKKwl2b2lkCSAgICpkYXRhOwog fSBSZWxJbmZvRW50cnk7CiAKIHN0YXRpYyB2b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsCkBAIC00ODQsNyArNDg0LDcgQEAgZmlu ZF9iYXNlX3JlbF9pZ25vcmVfam9pbihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKQogCiAv KgogICogYnVpbGRfcmVsX2hhc2gKLSAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0 YWJsZSBmb3IgcmVsYXRpb25zLgorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNoIHRh YmxlIGZvciByZWxhdGlvbiBzcGVjaWZpYyBkYXRhLgogICovCiBzdGF0aWMgdm9pZAogYnVpbGRf cmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCkBAIC01MDQsMTkgKzUwNCwyNyBAQCBidWlsZF9y ZWxfaGFzaChSZWxJbmZvTGlzdCAqbGlzdCkKIAkJCQkJCSAgJmhhc2hfY3RsLAogCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsK IAotCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgcmVsYXRpb25zICovCisJLyog SW5zZXJ0IGFsbCB0aGUgYWxyZWFkeS1leGlzdGluZyByZWxhdGlvbiBzcGVjaWZpYyBpbmZvcyAq LwogCWZvcmVhY2gobCwgbGlzdC0+aXRlbXMpCiAJewotCQlSZWxPcHRJbmZvICpyZWwgPSAoUmVs T3B0SW5mbyAqKSBsZmlyc3QobCk7CisJCXZvaWQJICAgKml0ZW0gPSBsZmlyc3QobCk7CiAJCVJl bEluZm9FbnRyeSAqaGVudHJ5OwogCQlib29sCQlmb3VuZDsKKwkJUmVsaWRzCQlyZWxpZHM7CisK KwkJQXNzZXJ0KElzQShpdGVtLCBSZWxPcHRJbmZvKSB8fCBJc0EoaXRlbSwgUmVsQWdnSW5mbykp OworCisJCWlmIChJc0EoaXRlbSwgUmVsT3B0SW5mbykpCisJCQlyZWxpZHMgPSAoKFJlbE9wdElu Zm8gKikgaXRlbSktPnJlbGlkczsKKwkJZWxzZQorCQkJcmVsaWRzID0gKChSZWxBZ2dJbmZvICop IGl0ZW0pLT5yZWxpZHM7CiAKIAkJaGVudHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJj aChoYXNodGFiLAotCQkJCQkJCQkJCQkgICYocmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgICZy ZWxpZHMsCiAJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwKIAkJCQkJCQkJCQkJICAmZm91bmQpOwog CQlBc3NlcnQoIWZvdW5kKTsKLQkJaGVudHJ5LT5yZWwgPSByZWw7CisJCWhlbnRyeS0+ZGF0YSA9 IGl0ZW07CiAJfQogCiAJbGlzdC0+aGFzaCA9IGhhc2h0YWI7CkBAIC01MjQsOSArNTMyLDkgQEAg YnVpbGRfcmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCiAKIC8qCiAgKiBmaW5kX3JlbF9pbmZv Ci0gKgkgIEZpbmQgYW4gUmVsT3B0SW5mbyBlbnRyeS4KKyAqCSAgRmluZCBhbiBSZWxPcHRJbmZv IG9yIGEgUmVsQWdnSW5mbyBlbnRyeS4KICAqLwotc3RhdGljIFJlbE9wdEluZm8gKgorc3RhdGlj IHZvaWQgKgogZmluZF9yZWxfaW5mbyhSZWxJbmZvTGlzdCAqbGlzdCwgUmVsaWRzIHJlbGlkcykK IHsKIAlpZiAobGlzdCA9PSBOVUxMKQpAQCAtNTU3LDcgKzU2NSw3IEBAIGZpbmRfcmVsX2luZm8o UmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMpCiAJCQkJCQkJCQkJCSAgSEFTSF9GSU5E LAogCQkJCQkJCQkJCQkgIE5VTEwpOwogCQlpZiAoaGVudHJ5KQotCQkJcmV0dXJuIGhlbnRyeS0+ cmVsOworCQkJcmV0dXJuIGhlbnRyeS0+ZGF0YTsKIAl9CiAJZWxzZQogCXsKQEAgLTU2NSwxMCAr NTczLDE4IEBAIGZpbmRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMp CiAKIAkJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAkJewotCQkJUmVsT3B0SW5mbyAqcmVsID0g KFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOworCQkJdm9pZAkgICAqaXRlbSA9IGxmaXJzdChsKTsK KwkJCVJlbGlkcwkJaXRlbV9yZWxpZHMgPSBOVUxMOworCisJCQlBc3NlcnQoSXNBKGl0ZW0sIFJl bE9wdEluZm8pIHx8IElzQShpdGVtLCBSZWxBZ2dJbmZvKSk7CiAKLQkJCWlmIChibXNfZXF1YWwo cmVsLT5yZWxpZHMsIHJlbGlkcykpCi0JCQkJcmV0dXJuIHJlbDsKKwkJCWlmIChJc0EoaXRlbSwg UmVsT3B0SW5mbykpCisJCQkJaXRlbV9yZWxpZHMgPSAoKFJlbE9wdEluZm8gKikgaXRlbSktPnJl bGlkczsKKwkJCWVsc2UgaWYgKElzQShpdGVtLCBSZWxBZ2dJbmZvKSkKKwkJCQlpdGVtX3JlbGlk cyA9ICgoUmVsQWdnSW5mbyAqKSBpdGVtKS0+cmVsaWRzOworCisJCQlpZiAoYm1zX2VxdWFsKGl0 ZW1fcmVsaWRzLCByZWxpZHMpKQorCQkJCXJldHVybiBpdGVtOwogCQl9CiAJfQogCkBAIC01ODMs MzIgKzU5OSw0MCBAQCBmaW5kX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxpZHMgcmVs aWRzKQogUmVsT3B0SW5mbyAqCiBmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxp ZHMgcmVsaWRzKQogewotCXJldHVybiBmaW5kX3JlbF9pbmZvKHJvb3QtPmpvaW5fcmVsX2xpc3Qs IHJlbGlkcyk7CisJcmV0dXJuIChSZWxPcHRJbmZvICopIGZpbmRfcmVsX2luZm8ocm9vdC0+am9p bl9yZWxfbGlzdCwgcmVsaWRzKTsKIH0KIAogLyoKICAqIGFkZF9yZWxfaW5mbwotICoJCUFkZCBn aXZlbiByZWxhdGlvbiB0byB0aGUgZ2l2ZW4gbGlzdC4gQWxzbyBhZGQgaXQgdG8gdGhlIGF1eGls aWFyeQorICoJCUFkZCByZWxhdGlvbiBzcGVjaWZpYyBpbmZvIHRvIGEgbGlzdCwgYW5kIGFsc28g YWRkIGl0IHRvIHRoZSBhdXhpbGlhcnkKICAqCQloYXNodGFibGUgaWYgdGhlcmUgaXMgb25lLgog ICovCiBzdGF0aWMgdm9pZAotYWRkX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxPcHRJ bmZvICpyZWwpCithZGRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIHZvaWQgKmRhdGEpCiB7 CisJQXNzZXJ0KElzQShkYXRhLCBSZWxPcHRJbmZvKSB8fCBJc0EoZGF0YSwgUmVsQWdnSW5mbykp OworCiAJLyogR0VRTyByZXF1aXJlcyB1cyB0byBhcHBlbmQgdGhlIG5ldyByZWxhdGlvbiB0byB0 aGUgZW5kIG9mIHRoZSBsaXN0ISAqLwotCWxpc3QtPml0ZW1zID0gbGFwcGVuZChsaXN0LT5pdGVt cywgcmVsKTsKKwlsaXN0LT5pdGVtcyA9IGxhcHBlbmQobGlzdC0+aXRlbXMsIGRhdGEpOwogCiAJ Lyogc3RvcmUgaXQgaW50byB0aGUgYXV4aWxpYXJ5IGhhc2h0YWJsZSBpZiB0aGVyZSBpcyBvbmUu ICovCiAJaWYgKGxpc3QtPmhhc2gpCiAJeworCQlSZWxpZHMJCXJlbGlkczsKIAkJUmVsSW5mb0Vu dHJ5ICpoZW50cnk7CiAJCWJvb2wJCWZvdW5kOwogCisJCWlmIChJc0EoZGF0YSwgUmVsT3B0SW5m bykpCisJCQlyZWxpZHMgPSAoKFJlbE9wdEluZm8gKikgZGF0YSktPnJlbGlkczsKKwkJZWxzZQor CQkJcmVsaWRzID0gKChSZWxBZ2dJbmZvICopIGRhdGEpLT5yZWxpZHM7CisKIAkJaGVudHJ5ID0g KFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChsaXN0LT5oYXNoLAotCQkJCQkJCQkJCQkgICYo cmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgICZyZWxpZHMsCiAJCQkJCQkJCQkJCSAgSEFTSF9F TlRFUiwKIAkJCQkJCQkJCQkJICAmZm91bmQpOwogCQlBc3NlcnQoIWZvdW5kKTsKLQkJaGVudHJ5 LT5yZWwgPSByZWw7CisJCWhlbnRyeS0+ZGF0YSA9IGRhdGE7CiAJfQogfQogCkBAIC0xNTAzLDcg KzE1MjcsNyBAQCBmZXRjaF91cHBlcl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVsYXRp b25LaW5kIGtpbmQsIFJlbGlkcyByZWxpZHMpCiAJLyogSWYgd2UgYWxyZWFkeSBtYWRlIHRoaXMg dXBwZXJyZWwgZm9yIHRoZSBxdWVyeSwgcmV0dXJuIGl0ICovCiAJaWYgKGxpc3QpCiAJewotCQl1 cHBlcnJlbCA9IGZpbmRfcmVsX2luZm8obGlzdCwgcmVsaWRzKTsKKwkJdXBwZXJyZWwgPSAoUmVs T3B0SW5mbyAqKSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CiAJCWlmICh1cHBlcnJlbCkK IAkJCXJldHVybiB1cHBlcnJlbDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDRjN2M2YmM3 YTguLjlhMmJmOThhZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMDc0LDYgKzEwNzQsNzkg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogCSgocmVsKS0+cGFydF9zY2hlbWUgJiYgKHJl bCktPmJvdW5kaW5mbyAmJiAocmVsKS0+bnBhcnRzID4gMCAmJiBcCiAJIChyZWwpLT5wYXJ0X3Jl bHMgJiYgKHJlbCktPnBhcnRleHBycyAmJiAocmVsKS0+bnVsbGFibGVfcGFydGV4cHJzKQogCisv KgorICogUmVsQWdnSW5mbworICoJCUluZm9ybWF0aW9uIG5lZWRlZCB0byBjcmVhdGUgZ3JvdXBl ZCBwYXRocyBmb3IgYmFzZSBhbmQgam9pbiByZWxzLgorICoKKyAqICJyZWxpZHMiIGlzIHRoZSBz ZXQgb2YgcmVsYXRpb24gaWRlbnRpZmllcnMgKFJUIGluZGV4ZXMpLCBqdXN0IGxpa2Ugd2l0aAor ICogUmVsT3B0SW5mby4KKyAqCisgKiAidGFyZ2V0IiB3aWxsIGJlIHVzZWQgYXMgcGF0aHRhcmdl dCBpZiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgdG8KKyAqIGJhc2UgcmVsYXRpb24g b3Igam9pbi4gVGhlIHNhbWUgdGFyZ2V0IHdpbGwgYWxzbyAtLS0gaWYgdGhlIHJlbGF0aW9uIGlz IGEKKyAqIGpvaW4gLS0tIGJlIHVzZWQgdG8gam9pbiBncm91cGVkIHBhdGggdG8gYSBub24tZ3Jv dXBlZCBvbmUuICBUaGlzIHRhcmdldCBjYW4KKyAqIGNvbnRhaW4gcGxhaW4tVmFyIGdyb3VwaW5n IGV4cHJlc3Npb25zIGFuZCBBZ2dyZWYgbm9kZXMuCisgKgorICogTm90ZTogVGhlcmUncyBhIGNv bnZlbnRpb24gdGhhdCBBZ2dyZWYgZXhwcmVzc2lvbnMgYXJlIHN1cHBvc2VkIHRvIGZvbGxvdwor ICogdGhlIG90aGVyIGV4cHJlc3Npb25zIG9mIHRoZSB0YXJnZXQuIEl0ZXJhdGlvbnMgb2YgLT5l eHBycyBtYXkgcmVseSBvbiB0aGlzCisgKiBhcnJhbmdlbWVudC4KKyAqCisgKiAiYWdnX2lucHV0 IiBjb250YWlucyBWYXJzIHVzZWQgZWl0aGVyIGFzIGdyb3VwaW5nIGV4cHJlc3Npb25zIG9yIGFn Z3JlZ2F0ZQorICogYXJndW1lbnRzLiBQYXRocyBwcm92aWRpbmcgdGhlIGFnZ3JlZ2F0aW9uIHBs YW4gd2l0aCBpbnB1dCBkYXRhIHNob3VsZCB1c2UKKyAqIHRoaXMgdGFyZ2V0LiBUaGUgb25seSBk aWZmZXJlbmNlIGZyb20gcmVsdGFyZ2V0IG9mIHRoZSBub24tZ3JvdXBlZCByZWxhdGlvbgorICog aXMgdGhhdCBzb21lIGl0ZW1zIGNhbiBoYXZlIHNvcnRncm91cHJlZiBpbml0aWFsaXplZC4KKyAq CisgKiAiaW5wdXRfcm93cyIgaXMgdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgaW5wdXQgcm93cyBm b3IgQWdnUGF0aC4gSXQncworICogYWN0dWFsbHkganVzdCBhIHdvcmtzcGFjZSBmb3IgdXNlcnMg b2YgdGhlIHN0cnVjdHVyZSwgaS5lLiBub3QgaW5pdGlhbGl6ZWQKKyAqIHdoZW4gaW5zdGFuY2Ug b2YgdGhlIHN0cnVjdHVyZSBpcyBjcmVhdGVkLgorICoKKyAqICJncm91cGVkX3Jvd3MiIGlzIHRo ZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCByb3dzIG9mIHRoZSBBZ2dQYXRoLgorICoKKyAq ICJncm91cF9jbGF1c2VzIiwgImdyb3VwX2V4cHJzIiBhbmQgImdyb3VwX3BhdGhrZXlzIiBhcmUg bGlzdHMgb2YKKyAqIFNvcnRHcm91cENsYXVzZSwgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdXBpbmcg ZXhwcmVzc2lvbnMgYW5kIFBhdGhLZXkKKyAqIHJlc3BlY3RpdmVseS4KKyAqCisgKiAiYWdnX2V4 cHJzIiBpcyBhIGxpc3Qgb2YgQWdncmVmIG5vZGVzIGZvciB0aGUgYWdncmVnYXRpb24gb2YgdGhl IHJlbGF0aW9uJ3MKKyAqIHBhdGhzLgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxBZ2dJbmZvCit7 CisJcGdfbm9kZV9hdHRyKG5vX2NvcHlfZXF1YWwsIG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkK KworCU5vZGVUYWcJCXR5cGU7CisKKwkvKgorCSAqIHRoZSBzYW1lIGFzIGluIFJlbE9wdEluZm87 IHNldCBvZiBiYXNlICsgT0ogcmVsaWRzIChyYW5nZXRhYmxlIGluZGV4ZXMpCisJICovCisJUmVs aWRzCQlyZWxpZHM7CisKKwkvKgorCSAqIHRoZSB0YXJnZXRsaXN0IGZvciBQYXRocyBzY2Fubmlu ZyB0aGlzIGdyb3VwZWQgcmVsOyBsaXN0IG9mIFZhcnMvRXhwcnMsCisJICogY29zdCwgd2lkdGgK KwkgKi8KKwlzdHJ1Y3QgUGF0aFRhcmdldCAqdGFyZ2V0OworCisJLyoKKwkgKiB0aGUgdGFyZ2V0 bGlzdCBmb3IgUGF0aHMgdGhhdCBnZW5lcmF0ZSBpbnB1dCBmb3IgdGhlIGdyb3VwZWQgcGF0aHMK KwkgKi8KKwlzdHJ1Y3QgUGF0aFRhcmdldCAqYWdnX2lucHV0OworCisJLyogZXN0aW1hdGVkIG51 bWJlciBvZiBpbnB1dCB0dXBsZXMgZm9yIHRoZSBncm91cGVkIHBhdGhzICovCisJQ2FyZGluYWxp dHkJCWlucHV0X3Jvd3M7CisKKwkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMg b2YgdGhlIGdyb3VwZWQgcmVsYXRpb24qLworCUNhcmRpbmFsaXR5CQlncm91cGVkX3Jvd3M7CisK KwkvKiBhIGxpc3Qgb2YgU29ydEdyb3VwQ2xhdXNlJ3MgKi8KKwlMaXN0CSAgICpncm91cF9jbGF1 c2VzOworCS8qIGEgbGlzdCBvZiBncm91cGluZyBleHByZXNzaW9ucyAqLworCUxpc3QJICAgKmdy b3VwX2V4cHJzOworCS8qIGEgbGlzdCBvZiBQYXRoS2V5cyAqLworCUxpc3QJICAgKmdyb3VwX3Bh dGhrZXlzOworCisJLyogYSBsaXN0IG9mIEFnZ3JlZiBub2RlcyAqLworCUxpc3QJICAgKmFnZ19l eHByczsKK30gUmVsQWdnSW5mbzsKKwogLyoKICAqIEluZGV4T3B0SW5mbwogICoJCVBlci1pbmRl eCBpbmZvcm1hdGlvbiBmb3IgcGxhbm5pbmcvb3B0aW1pemF0aW9uCi0tIAoyLjMxLjAKCg== --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Disposition: attachment; filename="v7-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweot0122 RnJvbSAxNjQ1Njc0NGZmMzQxMmYxOGNlNDAyNDkxM2MxYzgyZjFkMjg5ODlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxODo0MDo0NiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg My85XSBTZXQgdXAgZm9yIGVhZ2VyIGFnZ3JlZ2F0aW9uIGJ5IGNvbGxlY3RpbmcgbmVlZGVkCiBp bmZvcwoKVGhpcyBjb21taXQgY2hlY2tzIGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpY2Fi bGUsIGFuZCBpZiBzbywgc2V0cwp1cCByb290LT5hZ2dfY2xhdXNlX2xpc3QgYW5kIHJvb3QtPmdy b3VwX2V4cHJfbGlzdCBieSBjb2xsZWN0aW5nCnN1aXRhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgaW4gdGhlIHF1ZXJ5LgotLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgICAgICAgfCAyNTAgKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jICAgICAgICAgfCAgIDggKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEwICsKIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNDEgKysrCiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogOSBmaWxlcyBj aGFuZ2VkLCAzMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9hbGxwYXRocy5jCmluZGV4IDcwZTJiNThkOGYuLmQxYjk3NDM2N2IgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNzcsNiArNzcsNyBAQCB0eXBlZGVmIGVu dW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIHNldCBieSBH VUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1c3QgaW4gY2FzZSBHVUMgZG9l c24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSBmYWxzZTsKIGlu dAkJCWdlcW9fdGhyZXNob2xkOwogaW50CQkJbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsK IGludAkJCW1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2luaXRzcGxhbi5jCmluZGV4IGUyYzY4ZmU2ZjkuLjAyODEzMzY0NjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1 ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtODAsNiArODEsOCBAQCB0eXBlZGVmIHN0cnVjdCBK b2luVHJlZUl0ZW0KIH0gSm9pblRyZWVJdGVtOwogCiAKK3N0YXRpYyB2b2lkIGNyZWF0ZV9hZ2df Y2xhdXNlX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9ncm91 cGluZ19leHByX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIGV4dHJhY3Rf bGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpicmVsLAog CQkJCQkJCQkJICAgSW5kZXggcnRpbmRleCk7CiBzdGF0aWMgTGlzdCAqZGVjb25zdHJ1Y3RfcmVj dXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLApAQCAtMzI3LDYgKzMzMCwyNTMg QEAgYWRkX3ZhcnNfdG9fdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFycywK IAl9CiB9CiAKKy8qCisgKiBzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbgorICoJICBDaGVjayBpZiBl YWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlLCBhbmQgaWYgc28gY29sbGVjdCBzdWl0YWJs ZQorICoJICBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25zIGlu IHRoZSBxdWVyeS4KKyAqLwordm9pZAorc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lcklu Zm8gKnJvb3QpCit7CisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiBk aXNhYmxlZCBieSB1c2VyLgorCSAqLworCWlmICghZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSkKKwkJ cmV0dXJuOworCisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiB0aGVy ZSBhcmUgbm8gR1JPVVAgQlkgY2xhdXNlcy4KKwkgKi8KKwlpZiAoIXJvb3QtPnBhcnNlLT5ncm91 cENsYXVzZSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGb3Igbm93IHdlIGRvbid0IHRyeSB0byBz dXBwb3J0IGdyb3VwaW5nIHNldHMuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5ncm91cGluZ1Nl dHMpCisJCXJldHVybjsKKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9y dCBESVNUSU5DVCBvciBPUkRFUiBCWSBhZ2dyZWdhdGVzLgorCSAqLworCWlmIChyb290LT5udW1P cmRlcmVkQWdncyA+IDApCisJCXJldHVybjsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIGFueSBh Z2dyZWdhdGVzIHRoYXQgZG8gbm90IHN1cHBvcnQgcGFydGlhbCBtb2RlLCBvciBhbnkKKwkgKiBw YXJ0aWFsIGFnZ3JlZ2F0ZXMgdGhhdCBhcmUgbm9uLXNlcmlhbGl6YWJsZSwgZG8gbm90IGFwcGx5 IGVhZ2VyCisJICogYWdncmVnYXRpb24uCisJICovCisJaWYgKHJvb3QtPmhhc05vblBhcnRpYWxB Z2dzIHx8IHJvb3QtPmhhc05vblNlcmlhbEFnZ3MpCisJCXJldHVybjsKKworCS8qCisJICogU1JG IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBhZ2dyZWdhdGUgYXJndW1lbnQgYW5kIHdlIGRvbid0IGV2 ZW4gd2FudCBpdAorCSAqIGluIHRoZSBHUk9VUCBCWSBjbGF1c2UsIHNvIGZvcmJpZCBpdCBpbiBn ZW5lcmFsLiBJdCBuZWVkcyB0byBiZQorCSAqIGFuYWx5emVkIGlmIGV2YWx1YXRpb24gb2YgYSBH Uk9VUCBCWSBjbGF1c2UgY29udGFpbmluZyBTUkYgYmVsb3cgdGhlCisJICogcXVlcnkgdGFyZ2V0 bGlzdCB3b3VsZCBiZSBjb3JyZWN0LiBDdXJyZW50bHkgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBh bgorCSAqIGltcG9ydGFudCB1c2UgY2FzZS4KKwkgKi8KKwlpZiAocm9vdC0+cGFyc2UtPmhhc1Rh cmdldFNSRnMpCisJCXJldHVybjsKKworCS8qCisJICogQ29sbGVjdCBhZ2dyZWdhdGUgZXhwcmVz c2lvbnMgdGhhdCBhcHBlYXIgaW4gdGFyZ2V0bGlzdCBhbmQgaGF2aW5nCisJICogY2xhdXNlcy4K KwkgKi8KKwljcmVhdGVfYWdnX2NsYXVzZV9pbmZvcyhyb290KTsKKworCS8qCisJICogSWYgdGhl cmUgYXJlIG5vIHN1aXRhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucywgd2UgY2Fubm90IGFwcGx5 IGVhZ2VyCisJICogYWdncmVnYXRpb24uCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlz dCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qCisJICogQ29sbGVjdCBncm91cGluZyBleHByZXNz aW9ucyB0aGF0IGFwcGVhciBpbiBncm91cGluZyBjbGF1c2VzLgorCSAqLworCWNyZWF0ZV9ncm91 cGluZ19leHByX2luZm9zKHJvb3QpOworfQorCisvKgorICogQ3JlYXRlIEFnZ0NsYXVzZUluZm8g Zm9yIGVhY2ggYWdncmVnYXRlLgorICoKKyAqIElmIGFueSBhZ2dyZWdhdGUgaXMgbm90IHN1aXRh YmxlLCBzZXQgcm9vdC0+YWdnX2NsYXVzZV9saXN0IHRvIE5JTCBhbmQKKyAqIHJldHVybi4KKyAq Lworc3RhdGljIHZvaWQKK2NyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKFBsYW5uZXJJbmZvICpyb290 KQoreworCUxpc3QJICAgKnRsaXN0X2V4cHJzOworCUxpc3RDZWxsICAgKmxjOworCisJQXNzZXJ0 KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9PSBOSUwpOworCisJdGxpc3RfZXhwcnMgPSBwdWxsX3Zh cl9jbGF1c2UoKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAorCQkJCQkJCQkgIFBWQ19J TkNMVURFX0FHR1JFR0FURVMgfAorCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1dJTkRPV0ZVTkNTIHwK KwkJCQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCisJLyoKKwkgKiBGb3Igbm93 IHdlIGRvbid0IHRyeSB0byBzdXBwb3J0IEdST1VQSU5HKCkgZXhwcmVzc2lvbnMuCisJICovCisJ Zm9yZWFjaChsYywgdGxpc3RfZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikg bGZpcnN0KGxjKTsKKworCQlpZiAoSXNBKGV4cHIsIEdyb3VwaW5nRnVuYykpCisJCQlyZXR1cm47 CisJfQorCisJLyoKKwkgKiBBZ2dyZWdhdGVzIHdpdGhpbiB0aGUgSEFWSU5HIGNsYXVzZSBuZWVk IHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSB3YXkKKwkgKiBhcyB0aG9zZSBpbiB0aGUgdGFy Z2V0bGlzdC4gIE5vdGUgdGhhdCBIQVZJTkcgY2FuIGNvbnRhaW4gQWdncmVmcyBidXQKKwkgKiBu b3QgV2luZG93RnVuY3MuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsICE9IE5V TEwpCisJeworCQlMaXN0CSAgICpoYXZpbmdfZXhwcnM7CisKKwkJaGF2aW5nX2V4cHJzID0gcHVs bF92YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsLAorCQkJCQkJCQkJ ICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFD RUhPTERFUlMpOworCQlpZiAoaGF2aW5nX2V4cHJzICE9IE5JTCkKKwkJeworCQkJdGxpc3RfZXhw cnMgPSBsaXN0X2NvbmNhdCh0bGlzdF9leHBycywgaGF2aW5nX2V4cHJzKTsKKwkJCWxpc3RfZnJl ZShoYXZpbmdfZXhwcnMpOworCQl9CisJfQorCisJZm9yZWFjaChsYywgdGxpc3RfZXhwcnMpCisJ eworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJQWdncmVmCSAgICph Z2dyZWY7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm87CisKKwkJLyoKKwkJICogdGxpc3RfZXhw cnMgbWF5IGFsc28gY29udGFpbiBWYXJzLCBidXQgd2Ugb25seSBuZWVkIEFnZ3JlZnMuCisJCSAq LworCQlpZiAoSXNBKGV4cHIsIFZhcikpCisJCQljb250aW51ZTsKKworCQlhZ2dyZWYgPSBjYXN0 Tm9kZShBZ2dyZWYsIGV4cHIpOworCisJCUFzc2VydChhZ2dyZWYtPmFnZ29yZGVyID09IE5JTCk7 CisJCUFzc2VydChhZ2dyZWYtPmFnZ2Rpc3RpbmN0ID09IE5JTCk7CisKKwkJYWNfaW5mbyA9IG1h a2VOb2RlKEFnZ0NsYXVzZUluZm8pOworCQlhY19pbmZvLT5hZ2dyZWYgPSBhZ2dyZWY7CisJCWFj X2luZm8tPmFnZ19ldmFsX2F0ID0gcHVsbF92YXJub3Mocm9vdCwgKE5vZGUgKikgYWdncmVmKTsK KworCQlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPQorCQkJbGlzdF9hcHBlbmRfdW5pcXVlKHJvb3Qt PmFnZ19jbGF1c2VfbGlzdCwgYWNfaW5mbyk7CisJfQorCisJbGlzdF9mcmVlKHRsaXN0X2V4cHJz KTsKK30KKworLyoKKyAqIENyZWF0ZSBHcm91cEV4cHJJbmZvIGZvciBlYWNoIGV4cHJlc3Npb24g dXNhYmxlIGFzIGdyb3VwaW5nIGtleS4KKyAqCisgKiBJZiBhbnkgZ3JvdXBpbmcgZXhwcmVzc2lv biBpcyBub3Qgc3VpdGFibGUsIHNldCByb290LT5ncm91cF9leHByX2xpc3QgdG8gTklMCisgKiBh bmQgcmV0dXJuLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3Mo UGxhbm5lckluZm8gKnJvb3QpCit7CisJTGlzdAkgICAqZXhwcnMgPSBOSUw7CisJTGlzdAkgICAq c29ydGdyb3VwcmVmcyA9IE5JTDsKKwlMaXN0CSAgICpidHJlZV9vcGZhbWlsaWVzID0gTklMOwor CUxpc3RDZWxsICAgKmxjLAorCQkJICAgKmxjMSwKKwkJCSAgICpsYzIsCisJCQkgICAqbGMzOwor CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpOworCisJZm9yZWFjaChsYywg cm9vdC0+cGFyc2UtPmdyb3VwQ2xhdXNlKQorCXsKKwkJU29ydEdyb3VwQ2xhdXNlICpzZ2MgPSBs Zmlyc3Rfbm9kZShTb3J0R3JvdXBDbGF1c2UsIGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IGdl dF9zb3J0Z3JvdXBjbGF1c2VfdGxlKHNnYywgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0KTsKKwkJVHlw ZUNhY2hlRW50cnkgKnRjZTsKKwkJT2lkCQkJCWVxdWFsaW1hZ2Vwcm9jOworCQlPaWQJCQkJZXFf b3A7CisJCUxpc3QJCSAgICplcV9vcGZhbWlsaWVzOworCQlPaWQJCQkJYnRyZWVfb3BmYW1pbHk7 CisKKwkJQXNzZXJ0KHRsZS0+cmVzc29ydGdyb3VwcmVmID4gMCk7CisKKwkJLyoKKwkJICogRm9y IG5vdyB3ZSBvbmx5IHN1cHBvcnQgcGxhaW4gVmFycyBhcyBncm91cGluZyBleHByZXNzaW9ucy4K KwkJICovCisJCWlmICghSXNBKHRsZS0+ZXhwciwgVmFyKSkKKwkJCXJldHVybjsKKworCQkvKgor CQkgKiBFYWdlciBhZ2dyZWdhdGlvbiBpcyBvbmx5IHBvc3NpYmxlIGlmIGVxdWFsaXR5IG9mIGdy b3VwaW5nIGtleXMKKwkJICogcGVyIHRoZSBlcXVhbGl0eSBvcGVyYXRvciBpbXBsaWVzIGJpdHdp c2UgZXF1YWxpdHkuIE90aGVyd2lzZSwgaWYKKwkJICogd2UgcHV0IGtleXMgb2YgZGlmZmVyZW50 IGJ5dGUgaW1hZ2VzIGludG8gdGhlIHNhbWUgZ3JvdXAsIHdlIGxvc2UKKwkJICogc29tZSBpbmZv cm1hdGlvbiB0aGF0IG1heSBiZSBuZWVkZWQgdG8gZXZhbHVhdGUgam9pbiBjbGF1c2VzIGFib3Zl CisJCSAqIHRoZSBwdXNoZWQtZG93biBhZ2dyZWdhdGUgbm9kZSwgb3IgdGhlIFdIRVJFIGNsYXVz ZS4KKwkJICoKKwkJICogRm9yIGV4YW1wbGUsIHRoZSBOVU1FUklDIGRhdGEgdHlwZSBpcyBub3Qg c3VwcG9ydGVkIGJlY2F1c2UgdmFsdWVzCisJCSAqIHRoYXQgZmFsbCBpbnRvIHRoZSBzYW1lIGdy b3VwIGFjY29yZGluZyB0byB0aGUgZXF1YWxpdHkgb3BlcmF0b3IKKwkJICogKGUuZy4gMCBhbmQg MC4wKSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2NhbGUuCisJCSAqLworCQl0Y2UgPSBsb29rdXBfdHlw ZV9jYWNoZShleHByVHlwZSgoTm9kZSAqKSB0bGUtPmV4cHIpLAorCQkJCQkJCQlUWVBFQ0FDSEVf QlRSRUVfT1BGQU1JTFkpOworCQlpZiAoIU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGYpIHx8CisJ CQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBlKSkKKwkJCXJldHVybjsKKworCQllcXVh bGltYWdlcHJvYyA9IGdldF9vcGZhbWlseV9wcm9jKHRjZS0+YnRyZWVfb3BmLAorCQkJCQkJCQkJ CSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlw ZSwKKwkJCQkJCQkJCQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7CisJCWlmICghT2lkSXNWYWxpZChl cXVhbGltYWdlcHJvYykgfHwKKwkJCSFEYXR1bUdldEJvb2woT2lkRnVuY3Rpb25DYWxsMUNvbGwo ZXF1YWxpbWFnZXByb2MsCisJCQkJCQkJCQkJCSAgIHRjZS0+dHlwY29sbGF0aW9uLAorCQkJCQkJ CQkJCQkgICBPYmplY3RJZEdldERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5cGUpKSkpCisJCQlyZXR1 cm47CisKKwkJLyoKKwkJICogR2V0IHRoZSBvcGVyYXRvciBpbiB0aGUgYnRyZWUncyBvcGZhbWls eS4KKwkJICovCisJCWVxX29wID0gZ2V0X29wZmFtaWx5X21lbWJlcih0Y2UtPmJ0cmVlX29wZiwK KwkJCQkJCQkJCXRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQl0Y2UtPmJ0cmVlX29waW50 eXBlLAorCQkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJaWYgKCFPaWRJc1ZhbGlk KGVxX29wKSkKKwkJCXJldHVybjsKKwkJZXFfb3BmYW1pbGllcyA9IGdldF9tZXJnZWpvaW5fb3Bm YW1pbGllcyhlcV9vcCk7CisJCWlmICghZXFfb3BmYW1pbGllcykKKwkJCXJldHVybjsKKwkJYnRy ZWVfb3BmYW1pbHkgPSBsaW5pdGlhbF9vaWQoZXFfb3BmYW1pbGllcyk7CisKKwkJZXhwcnMgPSBs YXBwZW5kKGV4cHJzLCB0bGUtPmV4cHIpOworCQlzb3J0Z3JvdXByZWZzID0gbGFwcGVuZF9pbnQo c29ydGdyb3VwcmVmcywgdGxlLT5yZXNzb3J0Z3JvdXByZWYpOworCQlidHJlZV9vcGZhbWlsaWVz ID0gbGFwcGVuZF9vaWQoYnRyZWVfb3BmYW1pbGllcywgYnRyZWVfb3BmYW1pbHkpOworCX0KKwor CS8qCisJICogQ29uc3RydWN0IEdyb3VwRXhwckluZm8gZm9yIGVhY2ggZXhwcmVzc2lvbi4KKwkg Ki8KKwlmb3J0aHJlZShsYzEsIGV4cHJzLCBsYzIsIHNvcnRncm91cHJlZnMsIGxjMywgYnRyZWVf b3BmYW1pbGllcykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMxKTsK KwkJaW50CQkJc29ydGdyb3VwcmVmID0gbGZpcnN0X2ludChsYzIpOworCQlPaWQJCQlidHJlZV9v cGZhbWlseSA9IGxmaXJzdF9vaWQobGMzKTsKKwkJR3JvdXBFeHBySW5mbyAqZ2VfaW5mbzsKKwor CQlnZV9pbmZvID0gbWFrZU5vZGUoR3JvdXBFeHBySW5mbyk7CisJCWdlX2luZm8tPmV4cHIgPSAo RXhwciAqKSBjb3B5T2JqZWN0KGV4cHIpOworCQlnZV9pbmZvLT5zb3J0Z3JvdXByZWYgPSBzb3J0 Z3JvdXByZWY7CisJCWdlX2luZm8tPmJ0cmVlX29wZmFtaWx5ID0gYnRyZWVfb3BmYW1pbHk7CisK KwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gbGFwcGVuZChyb290LT5ncm91cF9leHByX2xpc3Qs IGdlX2luZm8pOworCX0KK30KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggZmQ4YjJiMGNhMy4uNWQyYmNhOTE0YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCkBAIC03Nyw2ICs3Nyw4IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJcm9vdC0+cGxhY2Vob2xkZXJfbGlzdCA9IE5J TDsKIAlyb290LT5wbGFjZWhvbGRlcl9hcnJheSA9IE5VTEw7CiAJcm9vdC0+cGxhY2Vob2xkZXJf YXJyYXlfc2l6ZSA9IDA7CisJcm9vdC0+YWdnX2NsYXVzZV9saXN0ID0gTklMOworCXJvb3QtPmdy b3VwX2V4cHJfbGlzdCA9IE5JTDsKIAlyb290LT5ma2V5X2xpc3QgPSBOSUw7CiAJcm9vdC0+aW5p dGlhbF9yZWxzID0gTklMOwogCkBAIC0yNTgsNiArMjYwLDEyIEBAIHF1ZXJ5X3BsYW5uZXIoUGxh bm5lckluZm8gKnJvb3QsCiAJICovCiAJZXh0cmFjdF9yZXN0cmljdGlvbl9vcl9jbGF1c2VzKHJv b3QpOwogCisJLyoKKwkgKiBDaGVjayBpZiBlYWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxl LCBhbmQgaWYgc28sIHNldCB1cAorCSAqIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+ Z3JvdXBfZXhwcl9saXN0LgorCSAqLworCXNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKHJvb3QpOwor CiAJLyoKIAkgKiBOb3cgZXhwYW5kIGFwcGVuZHJlbHMgYnkgYWRkaW5nICJvdGhlcnJlbHMiIGZv ciB0aGVpciBjaGlsZHJlbi4gIFdlCiAJICogZGVsYXkgdGhpcyB0byB0aGUgZW5kIHNvIHRoYXQg d2UgaGF2ZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCmluZGV4IDQ2YzI1OGJlMjguLmFhNzY0MWQxMzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCkBAIC05MjksNiArOTI5LDE2IEBAIHN0cnVjdCBjb25maWdfYm9v bCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKKwl7CisJCXsiZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSIsIFBHQ19VU0VSU0VULCBRVUVSWV9U VU5JTkdfTUVUSE9ELAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGVhZ2VyIGFnZ3JlZ2F0aW9u LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfZWFnZXJfYWdn cmVnYXRlLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQl7ImVuYWJs ZV9wYXJhbGxlbF9hcHBlbmQiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJ CWdldHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBwYXJhbGxlbCBhcHBl bmQgcGxhbnMuIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggODNkNWRmOGU0Ni4uOTRhYjNlNjU4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDEzLDYgKzQxMyw3IEBACiAjZW5h YmxlX3NvcnQgPSBvbgogI2VuYWJsZV90aWRzY2FuID0gb24KICNlbmFibGVfZ3JvdXBfYnlfcmVv cmRlcmluZyA9IG9uCisjZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSA9IG9mZgogCiAjIC0gUGxhbm5l ciBDb3N0IENvbnN0YW50cyAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggOWEyYmY5OGFlMi4u OWU3ODU4MTZlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTM4Niw2ICszODYsMTIgQEAgc3Ry dWN0IFBsYW5uZXJJbmZvCiAJLyogbGlzdCBvZiBQbGFjZUhvbGRlckluZm9zICovCiAJTGlzdAkg ICAqcGxhY2Vob2xkZXJfbGlzdDsKIAorCS8qIGxpc3Qgb2YgQWdnQ2xhdXNlSW5mb3MgKi8KKwlM aXN0CSAgICphZ2dfY2xhdXNlX2xpc3Q7CisKKwkvKiBMaXN0IG9mIEdyb3VwRXhwckluZm9zICov CisJTGlzdAkgICAqZ3JvdXBfZXhwcl9saXN0OworCiAJLyogYXJyYXkgb2YgUGxhY2VIb2xkZXJJ bmZvcyBpbmRleGVkIGJ5IHBoaWQgKi8KIAlzdHJ1Y3QgUGxhY2VIb2xkZXJJbmZvICoqcGxhY2Vo b2xkZXJfYXJyYXkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlLCBhcnJheV9zaXplKHBs YWNlaG9sZGVyX2FycmF5X3NpemUpKTsKIAkvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBhcnJheSAqLwpA QCAtMzIwOCw2ICszMjE0LDQxIEBAIHR5cGVkZWYgc3RydWN0IE1pbk1heEFnZ0luZm8KIAlQYXJh bQkgICAqcGFyYW07CiB9IE1pbk1heEFnZ0luZm87CiAKKy8qCisgKiBUaGUgYWdncmVnYXRlIGV4 cHJlc3Npb25zIHRoYXQgYXBwZWFyIGluIHRhcmdldGxpc3QgYW5kIGhhdmluZyBjbGF1c2VzCisg Ki8KK3R5cGVkZWYgc3RydWN0IEFnZ0NsYXVzZUluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVh ZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSBBZ2dyZWYg ZXhwciAqLworCUFnZ3JlZgkgICAqYWdncmVmOworCisJLyogbG93ZXN0IGxldmVsIHdlIGNhbiBl dmFsdWF0ZSB0aGlzIGFnZ3JlZ2F0ZSBhdCAqLworCVJlbGlkcwkJYWdnX2V2YWxfYXQ7Cit9IEFn Z0NsYXVzZUluZm87CisKKy8qCisgKiBUaGUgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhhdCBhcHBl YXIgaW4gZ3JvdXBpbmcgY2xhdXNlcworICovCit0eXBlZGVmIHN0cnVjdCBHcm91cEV4cHJJbmZv Cit7CisJcGdfbm9kZV9hdHRyKG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVUYWcJ CXR5cGU7CisKKwkvKiB0aGUgcmVwcmVzZW50ZWQgZXhwcmVzc2lvbiAqLworCUV4cHIJICAgKmV4 cHI7CisKKwkvKiB0aGUgdGxlU29ydEdyb3VwUmVmIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNvcnRH cm91cENsYXVzZSAqLworCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkvKiBidHJlZSBvcGZhbWls eSBkZWZpbmluZyB0aGUgb3JkZXJpbmcgKi8KKwlPaWQJCQlidHJlZV9vcGZhbWlseTsKK30gR3Jv dXBFeHBySW5mbzsKKwogLyoKICAqIEF0IHJ1bnRpbWUsIFBBUkFNX0VYRUMgc2xvdHMgYXJlIHVz ZWQgdG8gcGFzcyB2YWx1ZXMgYXJvdW5kIGZyb20gb25lIHBsYW4KICAqIG5vZGUgdG8gYW5vdGhl ci4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gcGFzcyB2YWx1ZXMgZG93biBpbnRvIHN1YnF1ZXJpZXMg KGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCA5MTRkOWJkZWY1Li41MTgxMjIwMjYzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aHMuaApAQCAtMjEsNiArMjEsNyBAQAogICogYWxscGF0aHMuYwogICovCiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ2VxbzsKK2V4dGVybiBQR0RMTElNUE9SVCBi b29sIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGdlcW9f dGhyZXNob2xkOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9z aXplOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAppbmRleCBhYWZjMTczNzkyLi5jZWRjZDg4ZWJm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtNzIsNiArNzIsNyBAQCBleHRlcm4gdm9p ZCBhZGRfb3RoZXJfcmVsc190b19xdWVyeShQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9p ZCBidWlsZF9iYXNlX3JlbF90bGlzdHMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmZpbmFsX3Rs aXN0KTsKIGV4dGVybiB2b2lkIGFkZF92YXJzX3RvX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKnZhcnMsCiAJCQkJCQkJCSAgIFJlbGlkcyB3aGVyZV9uZWVkZWQpOworZXh0ZXJu IHZvaWQgc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJu IHZvaWQgZmluZF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJu IHZvaWQgY3JlYXRlX2xhdGVyYWxfam9pbl9pbmZvKFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVy biBMaXN0ICpkZWNvbnN0cnVjdF9qb2ludHJlZShQbGFubmVySW5mbyAqcm9vdCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IGRiZmQwYzEzZDQuLjVlMmIxOWQ2OTMg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMzYsNiArMTM2LDcg QEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2Ug J2VuYWJsZSUnOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCiAg ZW5hYmxlX2FzeW5jX2FwcGVuZCAgICAgICAgICAgIHwgb24KICBlbmFibGVfYml0bWFwc2NhbiAg ICAgICAgICAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgICAgICAgICB8IG9mZgog IGVuYWJsZV9nYXRoZXJtZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2dyb3VwX2J5X3Jl b3JkZXJpbmcgICAgIHwgb24KICBlbmFibGVfaGFzaGFnZyAgICAgICAgICAgICAgICAgfCBvbgpA QCAtMTU2LDcgKzE1Nyw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mg d2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAg ICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3Rp ZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMiByb3dzKQorKDIzIHJvd3MpCiAKIC0tIFRo ZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMu CiBzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2FpdF9ldmVudHMKLS0g CjIuMzEuMAoK --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Disposition: attachment; filename="v7-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweot7lm3 RnJvbSAxZGEyMGExN2RkZTIxYjEwNjFmOTRlNTlhMTI3MTI1YjEyMzBiZmE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMToyNzo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg NC85XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIFJlbEFnZ0luZm9zIGlmCiBhcHBs aWNhYmxlCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbnMgdGhhdCBjaGVjayBp ZiBlYWdlciBhZ2dyZWdhdGlvbiBpcwphcHBsaWNhYmxlIGZvciBhIGdpdmVuIHJlbGF0aW9uLCBh bmQgaWYgc28sIGNyZWF0ZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZQpmb3IgdGhlIHJlbGF0aW9uLCB1 c2luZyB0aGUgaW5mb3MgYWJvdXQgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZApncm91cGluZyBl eHByZXNzaW9ucyB3ZSBjb2xsZWN0ZWQgZWFybGllci4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9lcXVpdmNsYXNzLmMgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5tYWluLmMgICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2Rl LmMgICAgfCA2MzYgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYyAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAg ICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggICAgICAgICAgIHwg ICAzICstCiA3IGZpbGVzIGNoYW5nZWQsIDY3NCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKaW5kZXggMjFjZTFhZTJl MS4uOTM2OWFjZjAzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1 aXZjbGFzcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwpA QCAtMjQ1NCwxNSArMjQ1NCwxNyBAQCBmaW5kX2pvaW5fZG9tYWluKFBsYW5uZXJJbmZvICpyb290 LCBSZWxpZHMgcmVsaWRzKQogICoJICBEZXRlY3Qgd2hldGhlciB0d28gZXhwcmVzc2lvbnMgYXJl IGtub3duIGVxdWFsIGR1ZSB0byBlcXVpdmFsZW5jZQogICoJICByZWxhdGlvbnNoaXBzLgogICoK LSAqIEFjdHVhbGx5LCB0aGlzIG9ubHkgc2hvd3MgdGhhdCB0aGUgZXhwcmVzc2lvbnMgYXJlIGVx dWFsIGFjY29yZGluZwotICogdG8gc29tZSBvcGZhbWlseSdzIG5vdGlvbiBvZiBlcXVhbGl0eSAt LS0gYnV0IHdlIG9ubHkgdXNlIGl0IGZvcgotICogc2VsZWN0aXZpdHkgZXN0aW1hdGlvbiwgc28g YSBmdXp6eSBpZGVhIG9mIGVxdWFsaXR5IGlzIE9LLgorICogSWYgb3BmYW1pbHkgaXMgZ2l2ZW4s IHRoZSBleHByZXNzaW9ucyBtdXN0IGJlIGtub3duIGVxdWFsIHBlciB0aGUgc2VtYW50aWNzCisg KiBvZiB0aGF0IG9wZmFtaWx5IChub3RlIGl0IGhhcyB0byBiZSBhIGJ0cmVlIG9wZmFtaWx5LCBz aW5jZSB0aG9zZSBhcmUgdGhlCisgKiBvbmx5IG9wZmFtaWxpZXMgZXF1aXZjbGFzcy5jIGRlYWxz IHdpdGgpLiAgSWYgb3BmYW1pbHkgaXMgSW52YWxpZE9pZCwgd2UnbGwKKyAqIHJldHVybiB0cnVl IGlmIHRoZXkncmUgZXF1YWwgYWNjb3JkaW5nIHRvIGFueSBvcGZhbWlseSwgd2hpY2ggaXMgZnV6 enkgYnV0CisgKiBPSyBmb3IgZXN0aW1hdGlvbiBwdXJwb3Nlcy4KICAqCiAgKiBOb3RlOiBkb2Vz IG5vdCBib3RoZXIgdG8gY2hlY2sgZm9yICJlcXVhbChpdGVtMSwgaXRlbTIpIjsgY2FsbGVyIG11 c3QKICAqIGNoZWNrIHRoYXQgY2FzZSBpZiBpdCdzIHBvc3NpYmxlIHRvIHBhc3MgaWRlbnRpY2Fs IGl0ZW1zLgogICovCiBib29sCi1leHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yKQorZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMiwgT2lkIG9wZmFtaWx5KQogewogCUxpc3RD ZWxsICAgKmxjMTsKIApAQCAtMjQ3Nyw2ICsyNDc5LDE3IEBAIGV4cHJzX2tub3duX2VxdWFsKFBs YW5uZXJJbmZvICpyb290LCBOb2RlICppdGVtMSwgTm9kZSAqaXRlbTIpCiAJCWlmIChlYy0+ZWNf aGFzX3ZvbGF0aWxlKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogSXQncyBva2F5IHRvIGNv bnNpZGVyIGVjX2Jyb2tlbiBFQ3MgaGVyZS4gIEJyb2tlbm5lc3MganVzdCBtZWFucyB3ZQorCQkg KiBjb3VsZG4ndCBkZXJpdmUgYWxsIHRoZSBpbXBsaWVkIGNsYXVzZXMgd2UnZCBoYXZlIGxpa2Vk IHRvOyBpdCBkb2VzCisJCSAqIG5vdCBpbnZhbGlkYXRlIG91ciBrbm93bGVkZ2UgdGhhdCB0aGUg bWVtYmVycyBhcmUgZXF1YWwuCisJCSAqLworCisJCS8qIElnbm9yZSBpZiB0aGlzIEVDIGRvZXNu J3QgdXNlIHNwZWNpZmllZCBvcGZhbWlseSAqLworCQlpZiAoT2lkSXNWYWxpZChvcGZhbWlseSkg JiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZWMtPmVjX29wZmFtaWxpZXMsIG9wZmFtaWx5KSkKKwkJ CWNvbnRpbnVlOworCiAJCWZvcmVhY2gobGMyLCBlYy0+ZWNfbWVtYmVycykKIAkJewogCQkJRXF1 aXZhbGVuY2VNZW1iZXIgKmVtID0gKEVxdWl2YWxlbmNlTWVtYmVyICopIGxmaXJzdChsYzIpOwpA QCAtMjUwNSw4ICsyNTE4LDcgQEAgZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lckluZm8gKnJvb3Qs IE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMikKICAqIChJbiBwcmluY2lwbGUgdGhlcmUgbWlnaHQg YmUgbW9yZSB0aGFuIG9uZSBtYXRjaGluZyBlY2xhc3MgaWYgbXVsdGlwbGUKICAqIGNvbGxhdGlv bnMgYXJlIGludm9sdmVkLCBidXQgc2luY2UgY29sbGF0aW9uIGRvZXNuJ3QgbWF0dGVyIGZvciBl cXVhbGl0eSwKICAqIHdlIGlnbm9yZSB0aGF0IGZpbmUgcG9pbnQgaGVyZS4pICBUaGlzIGlzIG11 Y2ggbGlrZSBleHByc19rbm93bl9lcXVhbCwKLSAqIGV4Y2VwdCB0aGF0IHdlIGluc2lzdCBvbiB0 aGUgY29tcGFyaXNvbiBvcGVyYXRvciBtYXRjaGluZyB0aGUgZWNsYXNzLCBzbwotICogdGhhdCB0 aGUgcmVzdWx0IGlzIGRlZmluaXRlIG5vdCBhcHByb3hpbWF0ZS4KKyAqIGV4Y2VwdCBmb3IgdGhl IGZvcm1hdCBvZiB0aGUgaW5wdXQuCiAgKgogICogT24gc3VjY2Vzcywgd2UgYWxzbyBzZXQgZmtp bmZvLT5lY2xhc3NbY29sbm9dIHRvIHRoZSBtYXRjaGluZyBlY2xhc3MsCiAgKiBhbmQgc2V0IGZr aW5mby0+ZmtfZWNsYXNzX21lbWJlcltjb2xub10gdG8gdGhlIGVjbGFzcyBtZW1iZXIgZm9yIHRo ZQpAQCAtMjU0Nyw3ICsyNTU5LDcgQEAgbWF0Y2hfZWNsYXNzZXNfdG9fZm9yZWlnbl9rZXlfY29s KFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBOZXZlciBtYXRjaCB0byBhIHZvbGF0aWxlIEVDICov CiAJCWlmIChlYy0+ZWNfaGFzX3ZvbGF0aWxlKQogCQkJY29udGludWU7Ci0JCS8qIE5vdGU6IGl0 IHNlZW1zIG9rYXkgdG8gbWF0Y2ggdG8gImJyb2tlbiIgZWNsYXNzZXMgaGVyZSAqLworCQkvKiBJ dCdzIG9rYXkgdG8gY29uc2lkZXIgImJyb2tlbiIgRUNzIGhlcmUsIHNlZSBleHByc19rbm93bl9l cXVhbCAqLwogCiAJCWZvcmVhY2gobGMyLCBlYy0+ZWNfbWVtYmVycykKIAkJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggNWQyYmNhOTE0Yi4uZjcyMTdkNzY5MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCkBAIC02Nyw2ICs2Nyw5IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJcm9vdC0+am9pbl9yZWxfbGlzdCA9IG1ha2VO b2RlKFJlbEluZm9MaXN0KTsKIAlyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyA9IE5JTDsKIAly b290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gTlVMTDsKKwlyb290LT5hZ2dfaW5mb19saXN0ID0g bWFrZU5vZGUoUmVsSW5mb0xpc3QpOworCXJvb3QtPmFnZ19pbmZvX2xpc3QtPml0ZW1zID0gTklM OworCXJvb3QtPmFnZ19pbmZvX2xpc3QtPmhhc2ggPSBOVUxMOwogCXJvb3QtPmpvaW5fcmVsX2xl dmVsID0gTlVMTDsKIAlyb290LT5qb2luX2N1cl9sZXZlbCA9IDA7CiAJcm9vdC0+Y2Fub25fcGF0 aGtleXMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggODQyMGI4 OTM2ZS4uYzZlMmQ0MTdhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAt ODcsNiArODcsMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpjaGlsZHJlbCwKIAkJCQkJ CQkJCSAgIGludCBuYXBwaW5mb3MsCiAJCQkJCQkJCQkgICBBcHBlbmRSZWxJbmZvICoqYXBwaW5m b3MpOworc3RhdGljIGJvb2wgZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9u KFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbCk7CitzdGF0 aWMgYm9vbCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCwKKwkJCQkJCQkJICBQYXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19p bnB1dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3JvdXBfZXhwcnNfZXh0cmFfcCk7CitzdGF0aWMgYm9v bCBpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyKTsKK3N0 YXRpYyBib29sIGlzX3Zhcl9uZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2 YXIsIFJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMgSW5kZXggZ2V0X2V4cHJlc3Npb25fc29ydGdy b3VwcmVmKFBsYW5uZXJJbmZvICpyb290LCBFeHByICpleHByKTsKIAogCiAvKgpAQCAtNjQ3LDYg KzY1NSw1OCBAQCBhZGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpv aW5yZWwpCiAJYWRkX3JlbF9pbmZvKHJvb3QtPmpvaW5fcmVsX2xpc3QsIGpvaW5yZWwpOwogfQog CisvKgorICogYWRkX2dyb3VwZWRfcmVsCisgKgkJQWRkIGdyb3VwZWQgYmFzZSBvciBqb2luIHJl bGF0aW9uIHRvIHRoZSBsaXN0IG9mIGdyb3VwZWQgcmVsYXRpb25zIGluCisgKgkJdGhlIGdpdmVu IFBsYW5uZXJJbmZvLiAgQWxzbyBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgUmVsQWdnSW5mbyB0bwor ICoJCXJvb3QtPmFnZ19pbmZvX2xpc3QuCisgKi8KK3ZvaWQKK2FkZF9ncm91cGVkX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSZWxBZ2dJbmZvICphZ2dfaW5mbykKK3sK KwlhZGRfcmVsX2luZm8oJnJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9B R0ddLCByZWwpOworCWFkZF9yZWxfaW5mbyhyb290LT5hZ2dfaW5mb19saXN0LCBhZ2dfaW5mbyk7 Cit9CisKKy8qCisgKiBmaW5kX2dyb3VwZWRfcmVsCisgKgkgIFJldHVybnMgZ3JvdXBlZCByZWxh dGlvbiBlbnRyeSAoYmFzZSBvciBqb2luIHJlbGF0aW9uKSBjb3JyZXNwb25kaW5nIHRvCisgKgkg ICdyZWxpZHMnIG9yIE5VTEwgaWYgbm9uZSBleGlzdHMuCisgKgorICogSWYgYWdnX2luZm9fcCBp cyBub3QgTlVMTCwgdGhlbiBhbHNvIHRoZSBjb3JyZXNwb25kaW5nIFJlbEFnZ0luZm8gKGlmIG9u ZQorICogZXhpc3RzKSB3aWxsIGJlIHJldHVybmVkIGluICphZ2dfaW5mb19wLgorICovCitSZWxP cHRJbmZvICoKK2ZpbmRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyByZWxp ZHMsIFJlbEFnZ0luZm8gKiphZ2dfaW5mb19wKQoreworCVJlbE9wdEluZm8gKnJlbDsKKworCXJl bCA9IChSZWxPcHRJbmZvICopIGZpbmRfcmVsX2luZm8oJnJvb3QtPnVwcGVyX3JlbHNbVVBQRVJS RUxfUEFSVElBTF9HUk9VUF9BR0ddLAorCQkJCQkJCQkJICAgcmVsaWRzKTsKKwlpZiAocmVsID09 IE5VTEwpCisJeworCQlpZiAoYWdnX2luZm9fcCkKKwkJCSphZ2dfaW5mb19wID0gTlVMTDsKKwor CQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBhbHNvIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBS ZWxBZ2dJbmZvLCBpZiBhc2tlZCAqLworCWlmIChhZ2dfaW5mb19wKQorCXsKKwkJUmVsQWdnSW5m byAqYWdnX2luZm87CisKKwkJYWdnX2luZm8gPSAoUmVsQWdnSW5mbyAqKSBmaW5kX3JlbF9pbmZv KHJvb3QtPmFnZ19pbmZvX2xpc3QsIHJlbGlkcyk7CisKKwkJLyogVGhlIHJlbGF0aW9uIGV4aXN0 cywgc28gdGhlIGFnZ19pbmZvIHNob3VsZCBiZSB0aGVyZSB0b28uICovCisJCUFzc2VydChhZ2df aW5mbyAhPSBOVUxMKTsKKworCQkqYWdnX2luZm9fcCA9IGFnZ19pbmZvOworCX0KKworCXJldHVy biByZWw7Cit9CisKIC8qCiAgKiBzZXRfZm9yZWlnbl9yZWxfcHJvcGVydGllcwogICoJCVNldCB1 cCBmb3JlaWduLWpvaW4gZmllbGRzIGlmIG91dGVyIGFuZCBpbm5lciByZWxhdGlvbiBhcmUgZm9y ZWlnbgpAQCAtMjQ4MywzICsyNTQzLDU3OSBAQCBidWlsZF9jaGlsZF9qb2luX3JlbHRhcmdldChQ bGFubmVySW5mbyAqcm9vdCwKIAljaGlsZHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSA9 IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZTsKIAljaGlsZHJlbC0+cmVsdGFy Z2V0LT53aWR0aCA9IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT53aWR0aDsKIH0KKworLyoKKyAqIGNy ZWF0ZV9yZWxfYWdnX2luZm8KKyAqCSAgQ2hlY2sgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGNhbiBw cm9kdWNlIGdyb3VwZWQgcGF0aHMgYW5kIHJldHVybiB0aGUKKyAqCSAgaW5mb3JtYXRpb24gaXQn bGwgbmVlZCBmb3IgaXQuICBUaGUgZ2l2ZW4gcmVsYXRpb24gaXMgdGhlIG5vbi1ncm91cGVkIG9u ZQorICoJICB3aGljaCBoYXMgdGhlIHJlbHRhcmdldCBhbHJlYWR5IGNvbnN0cnVjdGVkLgorICov CitSZWxBZ2dJbmZvICoKK2NyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlSZWxBZ2dJbmZvICpyZXN1bHQ7 CisJUGF0aFRhcmdldCAqYWdnX2lucHV0OworCVBhdGhUYXJnZXQgKnRhcmdldDsKKwlMaXN0CSAg ICpncnBfZXhwcnNfZXh0cmEgPSBOSUw7CisJTGlzdAkgICAqZ3JvdXBfY2xhdXNlc19maW5hbDsK KwlpbnQJCQlpOworCisJLyoKKwkgKiBUaGUgbGlzdHMgb2YgYWdncmVnYXRlIGV4cHJlc3Npb25z IGFuZCBncm91cGluZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZQorCSAqIGJlZW4gY29uc3RydWN0 ZWQuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCAhPSBOSUwpOworCUFzc2Vy dChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBh IGNoaWxkIHJlbCwgdGhlIGdyb3VwZWQgcmVsIGZvciBpdHMgcGFyZW50IHJlbCBtdXN0IGhhdmUK KwkgKiBiZWVuIGNyZWF0ZWQgaWYgaXQgY2FuLiAgU28gd2UgY2FuIGp1c3QgdXNlIHBhcmVudCdz IFJlbEFnZ0luZm8gaWYgdGhlcmUKKwkgKiBpcyBvbmUsIHdpdGggYXBwcm9wcmlhdGUgdmFyaWFi bGUgc3Vic3RpdHV0aW9ucy4KKwkgKi8KKwlpZiAoSVNfT1RIRVJfUkVMKHJlbCkpCisJeworCQlS ZWxPcHRJbmZvCSAgICpyZWxfZ3JvdXBlZDsKKwkJUmVsQWdnSW5mbwkgICAqYWdnX2luZm87CisK KwkJQXNzZXJ0KCFibXNfaXNfZW1wdHkocmVsLT50b3BfcGFyZW50X3JlbGlkcykpOworCQlyZWxf Z3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsLT50b3BfcGFyZW50X3JlbGlkcywg JmFnZ19pbmZvKTsKKworCQlpZiAocmVsX2dyb3VwZWQgPT0gTlVMTCkKKwkJCXJldHVybiBOVUxM OworCisJCUFzc2VydChhZ2dfaW5mbyAhPSBOVUxMKTsKKwkJLyogTXVzdCBkbyBtdWx0aS1sZXZl bCB0cmFuc2Zvcm1hdGlvbiAqLworCQlhZ2dfaW5mbyA9IChSZWxBZ2dJbmZvICopCisJCQlhZGp1 c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKKwkJCQkJCQkJCQkJICAoTm9kZSAq KSBhZ2dfaW5mbywKKwkJCQkJCQkJCQkJICByZWwsCisJCQkJCQkJCQkJCSAgcmVsLT50b3BfcGFy ZW50KTsKKworCQlhZ2dfaW5mby0+aW5wdXRfcm93cyA9IHJlbC0+cm93czsKKwkJYWdnX2luZm8t Pmdyb3VwZWRfcm93cyA9CisJCQllc3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3QsIGFnZ19pbmZvLT5n cm91cF9leHBycywKKwkJCQkJCQkJYWdnX2luZm8tPmlucHV0X3Jvd3MsIE5VTEwsIE5VTEwpOwor CisJCXJldHVybiBhZ2dfaW5mbzsKKwl9CisKKwkvKiBDaGVjayBpZiBpdCdzIHBvc3NpYmxlIHRv IHByb2R1Y2UgZ3JvdXBlZCBwYXRocyBmb3IgdGhpcyByZWxhdGlvbi4gKi8KKwlpZiAoIWVhZ2Vy X2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihyb290LCByZWwpKQorCQlyZXR1cm4g TlVMTDsKKworCS8qCisJICogQ3JlYXRlIHRhcmdldHMgZm9yIHRoZSBncm91cGVkIHBhdGhzIGFu ZCBmb3IgdGhlIGlucHV0IHBhdGhzIG9mIHRoZQorCSAqIGdyb3VwZWQgcGF0aHMuCisJICovCisJ dGFyZ2V0ID0gY3JlYXRlX2VtcHR5X3BhdGh0YXJnZXQoKTsKKwlhZ2dfaW5wdXQgPSBjcmVhdGVf ZW1wdHlfcGF0aHRhcmdldCgpOworCisJLyogaW5pdGlhbGl6ZSAndGFyZ2V0JyBhbmQgJ2FnZ19p bnB1dCcgKi8KKwlpZiAoIWluaXRfZ3JvdXBpbmdfdGFyZ2V0cyhyb290LCByZWwsIHRhcmdldCwg YWdnX2lucHV0LCAmZ3JwX2V4cHJzX2V4dHJhKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBFYWdl ciBhZ2dyZWdhdGlvbiBtYWtlcyBubyBzZW5zZSB3L28gZ3JvdXBpbmcgZXhwcmVzc2lvbnMgKi8K KwlpZiAoKGxpc3RfbGVuZ3RoKHRhcmdldC0+ZXhwcnMpICsgbGlzdF9sZW5ndGgoZ3JwX2V4cHJz X2V4dHJhKSkgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwlncm91cF9jbGF1c2VzX2ZpbmFsID0g cm9vdC0+cGFyc2UtPmdyb3VwQ2xhdXNlOworCisJLyoKKwkgKiBJZiB0aGUgYWdncmVnYXRpb24g dGFyZ2V0IHNob3VsZCBoYXZlIGV4dHJhIGdyb3VwaW5nIGV4cHJlc3Npb25zIChpbgorCSAqIG9y ZGVyIHRvIGVtaXQgaW5wdXQgdmFycyBmb3Igam9pbiBjb25kaXRpb25zKSwgYWRkIHRoZW0gbm93 LiBUaGlzIHN0ZXAKKwkgKiBpbmNsdWRlcyBhc3NpZ25tZW50IG9mIHRsZVNvcnRHcm91cFJlZidz IHdoaWNoIHdlIGNhbiBnZW5lcmF0ZSBub3cuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKGdycF9l eHByc19leHRyYSkgPiAwKQorCXsKKwkJSW5kZXgJCXNvcnRncm91cHJlZjsKKworCQkvKgorCQkg KiBNYWtlIGEgY29weSBvZiB0aGUgZ3JvdXAgY2xhdXNlcyBhcyB3ZSdsbCBuZWVkIHRvIGFkZCBz b21lIG1vcmUKKwkJICogY2xhdXNlcy4KKwkJICovCisJCWdyb3VwX2NsYXVzZXNfZmluYWwgPSBs aXN0X2NvcHkoZ3JvdXBfY2xhdXNlc19maW5hbCk7CisKKwkJLyogZmluZCBvdXQgdGhlIGN1cnJl bnQgbWF4IHNvcnRncm91cHJlZiAqLworCQlzb3J0Z3JvdXByZWYgPSAwOworCQlmb3JlYWNoKGxj LCByb290LT5wcm9jZXNzZWRfdGxpc3QpCisJCXsKKwkJCUluZGV4CQlyZWYgPSAoKFRhcmdldEVu dHJ5ICopIGxmaXJzdChsYykpLT5yZXNzb3J0Z3JvdXByZWY7CisKKwkJCWlmIChyZWYgPiBzb3J0 Z3JvdXByZWYpCisJCQkJc29ydGdyb3VwcmVmID0gcmVmOworCQl9CisKKwkJLyoKKwkJICogR2Vu ZXJhdGUgdGhlIFNvcnRHcm91cENsYXVzZSdzIGFuZCBhZGQgdGhlIGV4cHJlc3Npb25zIHRvIHRo ZQorCQkgKiB0YXJnZXQuCisJCSAqLworCQlmb3JlYWNoKGxjLCBncnBfZXhwcnNfZXh0cmEpCisJ CXsKKwkJCVZhcgkJICAgKnZhciA9IGxmaXJzdF9ub2RlKFZhciwgbGMpOworCQkJU29ydEdyb3Vw Q2xhdXNlICpjbCA9IG1ha2VOb2RlKFNvcnRHcm91cENsYXVzZSk7CisKKwkJCS8qCisJCQkgKiBJ bml0aWFsaXplIHRoZSBTb3J0R3JvdXBDbGF1c2UuCisJCQkgKgorCQkJICogQXMgdGhlIGZpbmFs IGFnZ3JlZ2F0aW9uIHdpbGwgbm90IHVzZSB0aGlzIGdyb3VwaW5nIGV4cHJlc3Npb24sCisJCQkg KiB3ZSBkb24ndCBjYXJlIHdoZXRoZXIgc29ydG9wIGlzIDwgb3IgPi4gVGhlIHZhbHVlIG9mIG51 bGxzX2ZpcnN0CisJCQkgKiBzaG91bGQgbm90IG1hdHRlciBmb3IgdGhlIHNhbWUgcmVhc29uLgor CQkJICovCisJCQljbC0+dGxlU29ydEdyb3VwUmVmID0gKytzb3J0Z3JvdXByZWY7CisJCQlnZXRf c29ydF9ncm91cF9vcGVyYXRvcnModmFyLT52YXJ0eXBlLAorCQkJCQkJCQkJIGZhbHNlLCB0cnVl LCBmYWxzZSwKKwkJCQkJCQkJCSAmY2wtPnNvcnRvcCwgJmNsLT5lcW9wLCBOVUxMLAorCQkJCQkJ CQkJICZjbC0+aGFzaGFibGUpOworCQkJZ3JvdXBfY2xhdXNlc19maW5hbCA9IGxhcHBlbmQoZ3Jv dXBfY2xhdXNlc19maW5hbCwgY2wpOworCQkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdl dCwgKEV4cHIgKikgdmFyLAorCQkJCQkJCQkJIGNsLT50bGVTb3J0R3JvdXBSZWYpOworCisJCQkv KgorCQkJICogVGhlIGFnZ3JlZ2F0aW9uIGlucHV0IHRhcmdldCBtdXN0IGVtaXQgdGhpcyB2YXIg dG9vLgorCQkJICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCAoRXhw ciAqKSB2YXIsCisJCQkJCQkJCQkgY2wtPnRsZVNvcnRHcm91cFJlZik7CisJCX0KKwl9CisKKwkv KgorCSAqIEJ1aWxkIGEgbGlzdCBvZiBncm91cGluZyBleHByZXNzaW9ucyBhbmQgYSBsaXN0IG9m IHRoZSBjb3JyZXNwb25kaW5nCisJICogU29ydEdyb3VwQ2xhdXNlcy4KKwkgKi8KKwlpID0gMDsK KwlyZXN1bHQgPSBtYWtlTm9kZShSZWxBZ2dJbmZvKTsKKwlmb3JlYWNoKGxjLCB0YXJnZXQtPmV4 cHJzKQorCXsKKwkJSW5kZXgJCXNvcnRncm91cHJlZiA9IDA7CisJCVNvcnRHcm91cENsYXVzZSAq Y2w7CisJCUV4cHIJICAgKnRleHByOworCisJCXRleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsK KworCQlBc3NlcnQoSXNBKHRleHByLCBWYXIpKTsKKworCQlzb3J0Z3JvdXByZWYgPSB0YXJnZXQt PnNvcnRncm91cHJlZnNbaSsrXTsKKwkJaWYgKHNvcnRncm91cHJlZiA9PSAwKQorCQkJY29udGlu dWU7CisKKwkJLyogZmluZCB0aGUgU29ydEdyb3VwQ2xhdXNlIGluIGdyb3VwX2NsYXVzZXNfZmlu YWwgKi8KKwkJY2wgPSBnZXRfc29ydGdyb3VwcmVmX2NsYXVzZShzb3J0Z3JvdXByZWYsIGdyb3Vw X2NsYXVzZXNfZmluYWwpOworCisJCS8qIGRvIG5vdCBhZGQgdGhpcyBTb3J0R3JvdXBDbGF1c2Ug aWYgaXQgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCAqLworCQlpZiAobGlzdF9tZW1iZXIocmVzdWx0 LT5ncm91cF9jbGF1c2VzLCBjbCkpCisJCQljb250aW51ZTsKKworCQlyZXN1bHQtPmdyb3VwX2Ns YXVzZXMgPSBsYXBwZW5kKHJlc3VsdC0+Z3JvdXBfY2xhdXNlcywgY2wpOworCQlyZXN1bHQtPmdy b3VwX2V4cHJzID0gbGlzdF9hcHBlbmRfdW5pcXVlKHJlc3VsdC0+Z3JvdXBfZXhwcnMsCisJCQkJ CQkJCQkJCQkgdGV4cHIpOworCX0KKworCS8qCisJICogQ2FsY3VsYXRlIHBhdGhrZXlzIHRoYXQg cmVwcmVzZW50IHRoaXMgZ3JvdXBpbmcgcmVxdWlyZW1lbnRzLgorCSAqLworCXJlc3VsdC0+Z3Jv dXBfcGF0aGtleXMgPQorCQltYWtlX3BhdGhrZXlzX2Zvcl9zb3J0Y2xhdXNlcyhyb290LCByZXN1 bHQtPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkgIG1ha2VfdGxpc3RfZnJvbV9wYXRodGFyZ2V0 KHRhcmdldCkpOworCisJLyoKKwkgKiBBZGQgYWdncmVnYXRlcyB0byB0aGUgZ3JvdXBpbmcgdGFy Z2V0LgorCSAqLworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFn Z0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisJ CUFnZ3JlZiAgICphZ2dyZWY7CisKKwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFnZ3Jl ZikpOworCisJCWFnZ3JlZiA9IChBZ2dyZWYgKikgY29weU9iamVjdChhY19pbmZvLT5hZ2dyZWYp OworCQltYXJrX3BhcnRpYWxfYWdncmVmKGFnZ3JlZiwgQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwp OworCisJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIChFeHByICopIGFnZ3JlZiwg MCk7CisKKwkJcmVzdWx0LT5hZ2dfZXhwcnMgPSBsYXBwZW5kKHJlc3VsdC0+YWdnX2V4cHJzLCBh Z2dyZWYpOworCX0KKworCS8qCisJICogU2luY2UgbmVpdGhlciB0YXJnZXQgbm9yIGFnZ19pbnB1 dCBpcyBzdXBwb3NlZCB0byBiZSBpZGVudGljYWwgdG8gdGhlCisJICogc291cmNlIHJlbHRhcmdl dCwgY29tcHV0ZSB0aGUgd2lkdGggYW5kIGNvc3QgYWdhaW4uCisJICovCisJc2V0X3BhdGh0YXJn ZXRfY29zdF93aWR0aChyb290LCB0YXJnZXQpOworCXNldF9wYXRodGFyZ2V0X2Nvc3Rfd2lkdGgo cm9vdCwgYWdnX2lucHV0KTsKKworCXJlc3VsdC0+cmVsaWRzID0gYm1zX2NvcHkocmVsLT5yZWxp ZHMpOworCXJlc3VsdC0+dGFyZ2V0ID0gdGFyZ2V0OworCXJlc3VsdC0+YWdnX2lucHV0ID0gYWdn X2lucHV0OworCisJLyoKKwkgKiBUaGUgbnVtYmVyIG9mIGFnZ3JlZ2F0aW9uIGlucHV0IHJvd3Mg aXMgc2ltcGx5IHRoZSBudW1iZXIgb2Ygcm93cyBvZiB0aGUKKwkgKiBub24tZ3JvdXBlZCByZWxh dGlvbiwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBlc3RpbWF0ZWQgYnkgbm93LgorCSAqLworCXJl c3VsdC0+aW5wdXRfcm93cyA9IHJlbC0+cm93czsKKworCS8qIEVzdGltYXRlIHRoZSBudW1iZXIg b2YgZ3JvdXBzIHdpdGggZXF1YWwgZ3JvdXBlZCBleHBycy4gKi8KKwlyZXN1bHQtPmdyb3VwZWRf cm93cyA9IGVzdGltYXRlX251bV9ncm91cHMocm9vdCwgcmVzdWx0LT5ncm91cF9leHBycywKKwkJ CQkJCQkJCQkJICAgcmVzdWx0LT5pbnB1dF9yb3dzLCBOVUxMLCBOVUxMKTsKKworCXJldHVybiBy ZXN1bHQ7Cit9CisKKy8qCisgKiBlYWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRp b24KKyAqIAkgIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91cGVkIHBhdGhz IGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24uCisgKi8KK3N0YXRpYyBib29sCitlYWdlcl9hZ2dyZWdh dGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8qCisJICogVGhlIGN1cnJlbnQgaW1wbGVt ZW50YXRpb24gb2YgZWFnZXIgYWdncmVnYXRpb24gY2Fubm90IGhhbmRsZQorCSAqIFBsYWNlSG9s ZGVyVmFyIChQSFYpLgorCSAqCisJICogSWYgd2Uga25ldyB0aGF0IHRoZSBQSFYgc2hvdWxkIGJl IGV2YWx1YXRlZCBpbiB0aGlzIHRhcmdldCAoYW5kIG9mCisJICogY291cnNlLCBpZiBpdHMgZXhw cmVzc2lvbiBtYXRjaGVkIHNvbWUgQWdncmVmIGFyZ3VtZW50KSwgd2UnZCBqdXN0IGxldAorCSAq IGluaXRfZ3JvdXBpbmdfdGFyZ2V0cyBhZGQgdGhhdCBBZ2dyZWYuIE9uIHRoZSBvdGhlciBoYW5k LCBpZiB3ZSBrbmV3CisJICogdGhhdCB0aGUgUEhWIGlzIGV2YWx1YXRlZCBiZWxvdyB0aGUgY3Vy cmVudCByZWwsIHdlIGNvdWxkIGlnbm9yZSBpdAorCSAqIGJlY2F1c2UgdGhlIHJlZmVyZW5jaW5n IEFnZ3JlZiB3b3VsZCB0YWtlIGNhcmUgb2YgcHJvcGFnYXRpb24gb2YgdGhlCisJICogdmFsdWUg dG8gdXBwZXIgam9pbnMuCisJICoKKwkgKiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBzYW1lIFBI ViBjYW4gYmUgZXZhbHVhdGVkIGluIHRoZSB0YXJnZXQgb2YgdGhlCisJICogY3VycmVudCByZWwg b3IgaW4gdGhhdCBvZiBsb3dlciByZWwgLS0tIGRlcGVuZGluZyBvbiB0aGUgaW5wdXQgcGF0aHMu CisJICogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHJlbC0+cmVsaWRzID0ge0EsIEIsIEN9IGFuZCBp ZiBwaF9ldmFsX2F0ID0ge0IsCisJICogQ30uIFBhdGggIkEgSk9JTiAoQiBKT0lOIEMpIiBpbXBs aWVzIHRoYXQgdGhlIFBIViBpcyBldmFsdWF0ZWQgYnkgdGhlCisJICogIihCIEpPSU4gQykiLCB3 aGlsZSBwYXRoICIoQSBKT0lOIEIpIEpPSU4gQyIgZXZhbHVhdGVzIHRoZSBQSFYgaXRzZWxmLgor CSAqLworCWZvcmVhY2gobGMsIHJlbC0+cmVsdGFyZ2V0LT5leHBycykKKwl7CisJCUV4cHIJICAg KmV4cHIgPSBsZmlyc3QobGMpOworCisJCWlmIChJc0EoZXhwciwgUGxhY2VIb2xkZXJWYXIpKQor CQkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChJU19TSU1QTEVfUkVMKHJlbCkpCisJeworCQlS YW5nZVRibEVudHJ5ICpydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W3JlbC0+cmVsaWRdOwor CisJCS8qCisJCSAqIHJ0ZWtpbmQgIT0gUlRFX1JFTEFUSU9OIGNhc2UgaXMgbm90IHN1cHBvcnRl ZCB5ZXQuCisJCSAqLworCQlpZiAocnRlLT5ydGVraW5kICE9IFJURV9SRUxBVElPTikKKwkJCXJl dHVybiBmYWxzZTsKKwl9CisKKwkvKiBDYWxsZXIgc2hvdWxkIG9ubHkgcGFzcyBiYXNlIHJlbGF0 aW9ucyBvciBqb2lucy4gKi8KKwlBc3NlcnQocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9CQVNF UkVMIHx8CisJCSAgIHJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfSk9JTlJFTCk7CisKKwkvKgor CSAqIENoZWNrIGlmIGFsbCBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgY2FuIGJlIGV2YWx1YXRlZCBv biB0aGlzIHJlbGF0aW9uCisJICogbGV2ZWwuCisJICovCisJZm9yZWFjaChsYywgcm9vdC0+YWdn X2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJzdF9ub2Rl KEFnZ0NsYXVzZUluZm8sIGxjKTsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdn cmVmKSk7CisKKwkJLyoKKwkJICogR2l2ZSB1cCBpZiBhbnkgYWdncmVnYXRlIG5lZWRzIHJlbGF0 aW9ucyBvdGhlciB0aGFuIHRoZSBjdXJyZW50IG9uZS4KKwkJICoKKwkJICogSWYgdGhlIGFnZ3Jl Z2F0ZSBuZWVkcyB0aGUgY3VycmVudCByZWwgcGx1cyBhbnl0aGluZyBlbHNlLCB0aGVuIHRoZQor CQkgKiBwcm9ibGVtIGlzIHRoYXQgZ3JvdXBpbmcgb2YgdGhlIGN1cnJlbnQgcmVsYXRpb24gY291 bGQgbWFrZSBzb21lCisJCSAqIGlucHV0IHZhcmlhYmxlcyB1bmF2YWlsYWJsZSBmb3IgdGhlICJo aWdoZXIgYWdncmVnYXRlIiwgYW5kIGl0J2QKKwkJICogYWxzbyBkZWNyZWFzZSB0aGUgbnVtYmVy IG9mIGlucHV0IHJvd3MgdGhlICJoaWdoZXIgYWdncmVnYXRlIgorCQkgKiByZWNlaXZlcy4KKwkJ ICoKKwkJICogSWYgdGhlIGFnZ3JlZ2F0ZSBkb2VzIG5vdCBldmVuIG5lZWQgdGhlIGN1cnJlbnQg cmVsLCB0aGVuIHRoZQorCQkgKiBjdXJyZW50IHJlbCBzaG91bGQgYmUgZ3JvdXBlZCBiZWNhdXNl IHdlIGRvIG5vdCBzdXBwb3J0IGpvaW4gb2YgdHdvCisJCSAqIGdyb3VwZWQgcmVsYXRpb25zLgor CQkgKi8KKwkJaWYgKCFibXNfaXNfc3Vic2V0KGFjX2luZm8tPmFnZ19ldmFsX2F0LCByZWwtPnJl bGlkcykpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBpbml0X2dyb3VwaW5nX3RhcmdldHMKKyAqCSAgSW5pdGlhbGl6ZSB0YXJnZXQgZm9yIGdyb3Vw ZWQgcGF0aHMgKHRhcmdldCkgYXMgd2VsbCBhcyBhIHRhcmdldCBmb3IKKyAqCSAgcGF0aHMgdGhh dCBnZW5lcmF0ZSBpbnB1dCBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgKGFnZ19pbnB1dCkuCisgKgor ICogZ3JvdXBfZXhwcnNfZXh0cmFfcCByZWNlaXZlcyBhIGxpc3Qgb2YgVmFyIG5vZGVzIGZvciB3 aGljaCB3ZSBuZWVkIHRvCisgKiBjb25zdHJ1Y3QgU29ydEdyb3VwQ2xhdXNlLiBUaG9zZSB2YXJz IHdpbGwgdGhlbiBiZSB1c2VkIGFzIGFkZGl0aW9uYWwKKyAqIGdyb3VwaW5nIGV4cHJlc3Npb25z LCBmb3IgdGhlIHNha2Ugb2Ygam9pbiBjbGF1c2VzLgorICoKKyAqIFJldHVybiB0cnVlIGlmZiB0 aGUgdGFyZ2V0cyBjb3VsZCBiZSBpbml0aWFsaXplZC4KKyAqLworc3RhdGljIGJvb2wKK2luaXRf Z3JvdXBpbmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAorCQkJ CQkgIFBhdGhUYXJnZXQgKnRhcmdldCwgUGF0aFRhcmdldCAqYWdnX2lucHV0LAorCQkJCQkgIExp c3QgKipncm91cF9leHByc19leHRyYV9wKQoreworCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAg KnBvc3NpYmx5X2RlcGVuZGVudCA9IE5JTDsKKworCWZvcmVhY2gobGMsIHJlbC0+cmVsdGFyZ2V0 LT5leHBycykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlJ bmRleAkJc29ydGdyb3VwcmVmOworCisJCS8qCisJCSAqIEdpdmVuIHRoYXQgUGxhY2VIb2xkZXJW YXIgY3VycmVudGx5IHByZXZlbnRzIHVzIGZyb20gZG9pbmcgZWFnZXIKKwkJICogYWdncmVnYXRp b24sIHRoZSBzb3VyY2UgdGFyZ2V0IGNhbm5vdCBjb250YWluIGFueXRoaW5nIG1vcmUgY29tcGxl eAorCQkgKiB0aGFuIGEgVmFyLgorCQkgKi8KKwkJQXNzZXJ0KElzQShleHByLCBWYXIpKTsKKwor CQkvKiBHZXQgdGhlIHNvcnRncm91cHJlZiBpZiB0aGUgZXhwciBjYW4gYWN0IGFzIGdyb3VwaW5n IGV4cHJlc3Npb24uICovCisJCXNvcnRncm91cHJlZiA9IGdldF9leHByZXNzaW9uX3NvcnRncm91 cHJlZihyb290LCBleHByKTsKKwkJaWYgKHNvcnRncm91cHJlZiA+IDApCisJCXsKKwkJCS8qCisJ CQkgKiBJZiB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgdGhlIGdyb3VwaW5n IGtleSwgaXQKKwkJCSAqIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBncm91cGVkIHBhdGhzIHRo YXQgaGF2ZSBiZWVuIHB1c2hlZAorCQkJICogZG93biB0byB0aGlzIHJlbGF0aW9uIGxldmVsLgor CQkJICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCBleHByLCBzb3J0Z3Jv dXByZWYpOworCisJCQkvKgorCQkJICogLi4uIGFuZCBpdCBhbHNvIHNob3VsZCBiZSBlbWl0dGVk IGJ5IHRoZSBpbnB1dCBwYXRocworCQkJICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQo YWdnX2lucHV0LCBleHByLCBzb3J0Z3JvdXByZWYpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYg KGlzX3Zhcl9uZWVkZWRfYnlfam9pbihyb290LCAoVmFyICopIGV4cHIsIHJlbCkpCisJCQl7CisJ CQkJLyoKKwkJCQkgKiBUaGUgdmFyaWFibGUgaXMgbmVlZGVkIGZvciBhIGpvaW4sIGhvd2V2ZXIg aXQncyBuZWl0aGVyIGluCisJCQkJICogdGhlIEdST1VQIEJZIGNsYXVzZSBub3IgY2FuIGl0IGJl IGRlcml2ZWQgZnJvbSBpdCB1c2luZyBFQy4KKwkJCQkgKiAoT3RoZXJ3aXNlIGl0IHdvdWxkIGhh dmUgdG8gYmUgYWRkZWQgdG8gdGhlIHRhcmdldHMgYWJvdmUuKQorCQkJCSAqIFdlIG5lZWQgdG8g Y29uc3RydWN0IHNwZWNpYWwgU29ydEdyb3VwQ2xhdXNlIGZvciB0aGlzCisJCQkJICogdmFyaWFi bGUuCisJCQkJICoKKwkJCQkgKiBOb3RlIHRoYXQgaXRzIHRsZVNvcnRHcm91cFJlZiBuZWVkcyB0 byBiZSB1bmlxdWUgd2l0aGluCisJCQkJICogYWdnX2lucHV0LCBzbyB3ZSBuZWVkIHRvIHBvc3Rw b25lIGNyZWF0aW9uIG9mIHRoZQorCQkJCSAqIFNvcnRHcm91cENsYXVzZSdzIHVudGlsIHdlJ3Jl IGRvbmUgd2l0aCB0aGUgaXRlcmF0aW9uIG9mCisJCQkJICogcmVsLT5yZWx0YXJnZXQtPmV4cHJz LiBBbHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGUgY2FsbGVyIHRvCisJCQkJICogZG8gc29tZSBt b3JlIGNoZWNrIGJlZm9yZSBpdCBzdGFydHMgdG8gY3JlYXRlIHRob3NlCisJCQkJICogU29ydEdy b3VwQ2xhdXNlJ3MuCisJCQkJICovCisJCQkJKmdyb3VwX2V4cHJzX2V4dHJhX3AgPSBsYXBwZW5k KCpncm91cF9leHByc19leHRyYV9wLCBleHByKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGlzX3Zhcl9p bl9hZ2dyZWZfb25seShyb290LCAoVmFyICopIGV4cHIpKQorCQkJeworCQkJCS8qCisJCQkJICog QW5vdGhlciByZWFzb24gd2UgbWlnaHQgbmVlZCB0aGlzIHZhcmlhYmxlIGlzIHRoYXQgc29tZQor CQkJCSAqIGFnZ3JlZ2F0ZSBwdXNoZWQgZG93biB0byB0aGlzIHJlbGF0aW9uIHJlZmVyZW5jZXMg aXQuIEluCisJCQkJICogc3VjaCBhIGNhc2UsIGFkZCBpdCB0byAiYWdnX2lucHV0IiwgYnV0IG5v dCB0byAidGFyZ2V0Ii4KKwkJCQkgKiBIb3dldmVyLCBpZiB0aGUgYWdncmVnYXRlIGlzIG5vdCB0 aGUgb25seSByZWFzb24gZm9yIHRoZSB2YXIKKwkJCQkgKiB0byBiZSBpbiB0aGUgdGFyZ2V0LCBz b21lIG1vcmUgY2hlY2tzIG5lZWQgdG8gYmUgcGVyZm9ybWVkCisJCQkJICogYmVsb3cuCisJCQkJ ICovCisJCQkJYWRkX25ld19jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIpOwor CQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogVGhlIFZhciBjYW4gYmUgZnVuY3Rp b25hbGx5IGRlcGVuZGVudCBvbiBhbm90aGVyIGV4cHJlc3Npb24KKwkJCQkgKiBvZiB0aGUgdGFy Z2V0LCBidXQgd2UgY2Fubm90IGNoZWNrIHRoYXQgdW50aWwgd2UndmUgYnVpbHQKKwkJCQkgKiBh bGwgdGhlIGV4cHJlc3Npb25zIGZvciB0aGUgdGFyZ2V0LgorCQkJCSAqLworCQkJCXBvc3NpYmx5 X2RlcGVuZGVudCA9IGxhcHBlbmQocG9zc2libHlfZGVwZW5kZW50LCBleHByKTsKKwkJCX0KKwkJ fQorCX0KKworCS8qCisJICogTm93IHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBleHByZXNzaW9u IGlzIGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24KKwkgKiBhbm90aGVyIG9uZS4KKwkgKi8KKwlm b3JlYWNoKGxjLCBwb3NzaWJseV9kZXBlbmRlbnQpCisJeworCQlWYXIJCSAgICp0dmFyOworCQlM aXN0CSAgICpkZXBzID0gTklMOworCQlSYW5nZVRibEVudHJ5ICpydGU7CisKKwkJdHZhciA9IGxm aXJzdF9ub2RlKFZhciwgbGMpOworCQlydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W3R2YXIt PnZhcm5vXTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB0aGUgVmFyIGNhbiBiZSBpbiB0aGUgZ3Jv dXBpbmcga2V5IGV2ZW4gdGhvdWdoIGl0J3Mgbm90CisJCSAqIG1lbnRpb25lZCBieSB0aGUgR1JP VVAgQlkgY2xhdXNlIChhbmQgY291bGQgbm90IGJlIGRlcml2ZWQgdXNpbmcKKwkJICogRUNzKS4K KwkJICovCisJCWlmIChjaGVja19mdW5jdGlvbmFsX2dyb3VwaW5nKHJ0ZS0+cmVsaWQsIHR2YXIt PnZhcm5vLAorCQkJCQkJCQkJICB0dmFyLT52YXJsZXZlbHN1cCwKKwkJCQkJCQkJCSAgdGFyZ2V0 LT5leHBycywgJmRlcHMpKQorCQl7CisJCQkvKgorCQkJICogVGhlIHZhciBzaG91bGRuJ3QgYmUg YWN0dWFsbHkgdXNlZCBmb3IgZ3JvdXBpbmcga2V5IGV2YWx1YXRpb24KKwkJCSAqIChpbnN0ZWFk LCB0aGUgb25lIHRoaXMgZGVwZW5kcyBvbiB3aWxsIGJlKSwgc28gc29ydGdyb3VwcmVmCisJCQkg KiBzaG91bGQgbm90IGJlIGltcG9ydGFudC4KKwkJCSAqLworCQkJYWRkX25ld19jb2x1bW5fdG9f cGF0aHRhcmdldCh0YXJnZXQsIChFeHByICopIHR2YXIpOworCQkJYWRkX25ld19jb2x1bW5fdG9f cGF0aHRhcmdldChhZ2dfaW5wdXQsIChFeHByICopIHR2YXIpOworCQl9CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIEFzIGxvbmcgYXMgdGhlIHF1ZXJ5IGlzIHNlbWFudGljYWxseSBjb3JyZWN0 LCBhcnJpdmluZyBoZXJlCisJCQkgKiBtZWFucyB0aGF0IHRoZSB2YXIgaXMgcmVmZXJlbmNlZCBi eSBhIGdlbmVyaWMgZ3JvdXBpbmcKKwkJCSAqIGV4cHJlc3Npb24gYnV0IG5vdCByZWZlcmVuY2Vk IGJ5IGFueSBqb2luLgorCQkJICoKKwkJCSAqIElmIHRoZSBlYWdlciBhZ2dyZWdhdGlvbiB3aWxs IHN1cHBvcnQgZ2VuZXJpYyBncm91cGluZworCQkJICogZXhwcmVzc2lvbiBpbiB0aGUgZnV0dXJl LCBjcmVhdGVfcmVsX2FnZ19pbmZvKCkgd2lsbCBoYXZlIHRvIGFkZAorCQkJICogdGhpcyB2YXJp YWJsZSB0byAiYWdnX2lucHV0IiB0YXJnZXQgYW5kIGFsc28gYWRkIHRoZSB3aG9sZQorCQkJICog Z2VuZXJpYyBleHByZXNzaW9uIHRvICJ0YXJnZXQiLgorCQkJICovCisJCQlyZXR1cm4gZmFsc2U7 CisJCX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGlzX3Zhcl9pbl9hZ2dyZWZf b25seQorICoJICBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBWYXIgYXBwZWFycyBpbiBhZ2dyZWdh dGUgZXhwcmVzc2lvbnMgYW5kIG5vdAorICoJICBlbHNld2hlcmUgaW4gdGhlIHRhcmdldGxpc3Qu CisgKi8KK3N0YXRpYyBib29sCitpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJv b3QsIFZhciAqdmFyKQoreworCUxpc3QJICAgKnRsaXN0X2V4cHJzOworCUxpc3RDZWxsICAgKmxj OworCisJLyoKKwkgKiBTZWFyY2ggdGhlIGxpc3Qgb2YgYWdncmVnYXRlIGV4cHJlc3Npb25zIGZv ciB0aGUgVmFyLgorCSAqLworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7 CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBs Yyk7CisJCUxpc3QJCSAgKnZhcnM7CisKKwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFn Z3JlZikpOworCisJCWlmICghYm1zX2lzX21lbWJlcih2YXItPnZhcm5vLCBhY19pbmZvLT5hZ2df ZXZhbF9hdCkpCisJCQljb250aW51ZTsKKworCQl2YXJzID0gcHVsbF92YXJfY2xhdXNlKChOb2Rl ICopIGFjX2luZm8tPmFnZ3JlZiwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9BR0dSRUdBVEVTIHwK KwkJCQkJCQkgICBQVkNfUkVDVVJTRV9XSU5ET1dGVU5DUyB8CisJCQkJCQkJICAgUFZDX1JFQ1VS U0VfUExBQ0VIT0xERVJTKTsKKworCQlpZiAobGlzdF9tZW1iZXIodmFycywgdmFyKSkKKwkJewor CQkJbGlzdF9mcmVlKHZhcnMpOworCQkJYnJlYWs7CisJCX0KKworCQlsaXN0X2ZyZWUodmFycyk7 CisJfQorCisJLyoKKwkgKiBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBW YXIgaXMgbm90IHJlZmVyZW5jZWQgaW4KKwkgKiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMuCisJICov CisJaWYgKGxjID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogU2VhcmNoIHRo ZSB0YXJnZXRsaXN0IHRvIHNlZSBpZiB0aGUgVmFyIGlzIHJlZmVyZW5jZWQgYW55d2hlcmUgb3Ro ZXIKKwkgKiB0aGFuIGluIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucy4KKwkgKi8KKwl0bGlzdF9leHBy cyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCisJCQkJ CQkJCSAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfV0lO RE9XRlVOQ1MgfAorCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyk7CisKKwlmb3Jl YWNoKGxjLCB0bGlzdF9leHBycykKKwl7CisJCVZhcgkgICAqdGxpc3RfdmFyID0gKFZhciAqKSBs Zmlyc3QobGMpOworCisJCWlmIChJc0EodGxpc3RfdmFyLCBBZ2dyZWYpKQorCQkJY29udGludWU7 CisKKwkJaWYgKGVxdWFsKHRsaXN0X3ZhciwgdmFyKSkKKwkJeworCQkJbGlzdF9mcmVlKHRsaXN0 X2V4cHJzKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCWxpc3RfZnJlZSh0bGlzdF9l eHBycyk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGlzX3Zhcl9uZWVkZWRfYnlfam9p bgorICoJICBDaGVjayBpZiB0aGUgZ2l2ZW4gVmFyIGlzIG5lZWRlZCBieSBqb2lucyBhYm92ZSB0 aGUgY3VycmVudCByZWwuCisgKgorICogQ29uc2lkZXIgcHVzaGluZyB0aGUgYWdncmVnYXRlIGF2 ZyhiLnkpIGRvd24gdG8gcmVsYXRpb24gYiBmb3IgdGhlIGZvbGxvd2luZworICogcXVlcnk6Cisg KgorICogICAgU0VMRUNUIGEuaSwgYXZnKGIueSkKKyAqICAgIEZST00gYSBKT0lOIGIgT04gYS5q ID0gYi5qCisgKiAgICBHUk9VUCBCWSBhLmk7CisgKgorICogQ29sdW1uIGIuaiBuZWVkcyB0byBi ZSB1c2VkIGFzIHRoZSBncm91cGluZyBrZXkgYmVjYXVzZSBvdGhlcndpc2UgaXQgY2Fubm90Cisg KiBmaW5kIGl0cyB3YXkgdG8gdGhlIGlucHV0IG9mIHRoZSBqb2luIGV4cHJlc3Npb24uCisgKi8K K3N0YXRpYyBib29sCitpc192YXJfbmVlZGVkX2J5X2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFZh ciAqdmFyLCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsaWRzCQlyZWxpZHM7CisJaW50CQkJYXR0 bm87CisJUmVsT3B0SW5mbyAqYmFzZXJlbDsKKworCS8qCisJICogTm90ZSB0aGF0IHdoZW4gd2Ug YXJlIGNoZWNraW5nIGlmIHRoZSBWYXIgaXMgbmVlZGVkIGJ5IGpvaW5zIGFib3ZlLCB3ZQorCSAq IHdhbnQgdG8gZXhjbHVkZSB0aGUgc2l0dWF0aW9uIHdoZXJlIHRoZSBWYXIgaXMgb25seSBuZWVk ZWQgaW4gZmluYWwKKwkgKiBvdXRwdXQuICBTbyBpbmNsdWRlICJyZWxhdGlvbiAwIiBoZXJlLgor CSAqLworCXJlbGlkcyA9IGJtc19jb3B5KHJlbC0+cmVsaWRzKTsKKwlyZWxpZHMgPSBibXNfYWRk X21lbWJlcihyZWxpZHMsIDApOworCisJYmFzZXJlbCA9IGZpbmRfYmFzZV9yZWwocm9vdCwgdmFy LT52YXJubyk7CisJYXR0bm8gPSB2YXItPnZhcmF0dG5vIC0gYmFzZXJlbC0+bWluX2F0dHI7CisK KwlyZXR1cm4gYm1zX25vbmVtcHR5X2RpZmZlcmVuY2UoYmFzZXJlbC0+YXR0cl9uZWVkZWRbYXR0 bm9dLCByZWxpZHMpOworfQorCisvKgorICogZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmCisg KgkgIFJldHVybiBzb3J0Z3JvdXByZWYgaWYgdGhlIGdpdmVuICdleHByJyBjYW4gYmUgdXNlZCBh cyBhIGdyb3VwaW5nCisgKgkgIGV4cHJlc3Npb24gaW4gZ3JvdXBlZCBwYXRocyBmb3IgYmFzZSBv ciBqb2luIHJlbGF0aW9ucywgb3IgMCBvdGhlcndpc2UuCisgKgorICogTm90ZSB0aGF0IHdlIGFs c28gbmVlZCB0byBjaGVjayBpZiB0aGUgJ2V4cHInIGlzIGtub3duIGVxdWFsIHRvIG90aGVyIGV4 cHJzCisgKiBkdWUgdG8gZXF1aXZhbGVuY2UgcmVsYXRpb25zaGlwcyB0aGF0IGNhbiBhY3QgYXMg Z3JvdXBpbmcgZXhwcmVzc2lvbnMuCisgKi8KK3N0YXRpYyBJbmRleAorZ2V0X2V4cHJlc3Npb25f c29ydGdyb3VwcmVmKFBsYW5uZXJJbmZvICpyb290LCBFeHByICpleHByKQoreworCUxpc3RDZWxs ICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+Z3JvdXBfZXhwcl9saXN0KQorCXsKKwkJR3Jv dXBFeHBySW5mbyAqZ2VfaW5mbyA9IGxmaXJzdF9ub2RlKEdyb3VwRXhwckluZm8sIGxjKTsKKwor CQlBc3NlcnQoSXNBKGdlX2luZm8tPmV4cHIsIFZhcikpOworCisJCWlmIChlcXVhbChnZV9pbmZv LT5leHByLCBleHByKSB8fAorCQkJZXhwcnNfa25vd25fZXF1YWwocm9vdCwgKE5vZGUgKikgZXhw ciwgKE5vZGUgKikgZ2VfaW5mby0+ZXhwciwKKwkJCQkJCQkgIGdlX2luZm8tPmJ0cmVlX29wZmFt aWx5KSkKKwkJeworCQkJQXNzZXJ0KGdlX2luZm8tPnNvcnRncm91cHJlZiA+IDApOworCisJCQly ZXR1cm4gZ2VfaW5mby0+c29ydGdyb3VwcmVmOworCQl9CisJfQorCisJLyogVGhlIGV4cHJlc3Np b24gY2Fubm90IGJlIHVzZWQgYXMgZ3JvdXBpbmcga2V5LiAqLworCXJldHVybiAwOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYwppbmRleCA1ZjVkNzk1OWQ4Li44NzdhNjJhNjJlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtMzMxMywxMCArMzMxMywxMSBAQCBhZGRfdW5pcXVlX2dy b3VwX3ZhcihQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFyaW5mb3MsCiAKIAkJLyoKIAkJICog RHJvcCBrbm93bi1lcXVhbCB2YXJzLCBidXQgb25seSBpZiB0aGV5IGJlbG9uZyB0byBkaWZmZXJl bnQKLQkJICogcmVsYXRpb25zIChzZWUgY29tbWVudHMgZm9yIGVzdGltYXRlX251bV9ncm91cHMp CisJCSAqIHJlbGF0aW9ucyAoc2VlIGNvbW1lbnRzIGZvciBlc3RpbWF0ZV9udW1fZ3JvdXBzKS4g IFdlIGFyZW4ndCB0b28KKwkJICogZnVzc3kgYWJvdXQgdGhlIHNlbWFudGljcyBvZiAiZXF1YWwi IGhlcmUuCiAJCSAqLwogCQlpZiAodmFyZGF0YS0+cmVsICE9IHZhcmluZm8tPnJlbCAmJgotCQkJ ZXhwcnNfa25vd25fZXF1YWwocm9vdCwgdmFyLCB2YXJpbmZvLT52YXIpKQorCQkJZXhwcnNfa25v d25fZXF1YWwocm9vdCwgdmFyLCB2YXJpbmZvLT52YXIsIEludmFsaWRPaWQpKQogCQl7CiAJCQlp ZiAodmFyaW5mby0+bmRpc3RpbmN0IDw9IG5kaXN0aW5jdCkKIAkJCXsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKaW5kZXggOWU3ODU4MTZlNi4uMWExYTFiNmRmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAg LTQzNCw2ICs0MzQsMTIgQEAgc3RydWN0IFBsYW5uZXJJbmZvCiAJICovCiAJUmVsSW5mb0xpc3QJ CXVwcGVyX3JlbHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9p Z25vcmUpOwogCisJLyoKKwkgKiBsaXN0IG9mIGdyb3VwZWQgcmVsYXRpb24gUmVsQWdnSW5mb3Mu IE9uZSBpbnN0YW5jZSBvZiBSZWxBZ2dJbmZvIHBlcgorCSAqIGl0ZW0gb2YgdGhlIHVwcGVyX3Jl bHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0ddIGxpc3QuCisJICovCisJUmVsSW5mb0xpc3Qg KmFnZ19pbmZvX2xpc3Q7CisKIAkvKiBSZXN1bHQgdGxpc3RzIGNob3NlbiBieSBncm91cGluZ19w bGFubmVyIGZvciB1cHBlci1zdGFnZSBwcm9jZXNzaW5nICovCiAJc3RydWN0IFBhdGhUYXJnZXQg KnVwcGVyX3RhcmdldHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIocmVhZF93cml0 ZV9pZ25vcmUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUu aCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDExMmU3YzIzZDQuLjAy ZGE2OGE3NTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0zMTQsNiArMzE0LDEwIEBA IGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQg cmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWxfbm9lcnIoUGxhbm5lcklu Zm8gKnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9p Z25vcmVfam9pbihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJ bmZvICpmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzKTsKK2V4 dGVybiB2b2lkIGFkZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cmVsLAorCQkJCQkJCVJlbEFnZ0luZm8gKmFnZ19pbmZvKTsKK2V4dGVybiBSZWxPcHRJbmZvICpm aW5kX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzLAorCQkJCQkJ CQkJUmVsQWdnSW5mbyAqKmFnZ19pbmZvX3ApOwogZXh0ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX2pv aW5fcmVsKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkgIFJlbGlkcyBqb2lucmVsaWRzLAog CQkJCQkJCQkgIFJlbE9wdEluZm8gKm91dGVyX3JlbCwKQEAgLTM0OCw0ICszNTIsNSBAQCBleHRl cm4gUmVsT3B0SW5mbyAqYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCQkJUmVsT3B0SW5mbyAqcGFyZW50X2pvaW5yZWwsIExpc3QgKnJlc3RyaWN0bGlzdCwK IAkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5mbyk7CiAKK2V4dGVybiBSZWxBZ2dJbmZv ICpjcmVhdGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwp OwogI2VuZGlmCQkJCQkJCS8qIFBBVEhOT0RFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L29wdGltaXplci9wYXRocy5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKaW5kZXgg NTE4MTIyMDI2My4uMTA2OGZmNjk1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhzLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKQEAgLTE1OSw3ICsx NTksOCBAQCBleHRlcm4gTGlzdCAqZ2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXNfZm9y X2VjcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCQkgIFJlbGlkcyBqb2luX3JlbGlk cywKIAkJCQkJCQkJCQkJCQkgIFJlbGlkcyBvdXRlcl9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJICBS ZWxPcHRJbmZvICppbm5lcl9yZWwpOwotZXh0ZXJuIGJvb2wgZXhwcnNfa25vd25fZXF1YWwoUGxh bm5lckluZm8gKnJvb3QsIE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMik7CitleHRlcm4gYm9vbCBl eHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqaXRlbTEsIE5vZGUgKml0 ZW0yLAorCQkJCQkJCSAgT2lkIG9wZmFtaWx5KTsKIGV4dGVybiBFcXVpdmFsZW5jZUNsYXNzICpt YXRjaF9lY2xhc3Nlc190b19mb3JlaWduX2tleV9jb2woUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJ CQkJCQkJCQkJCSAgIEZvcmVpZ25LZXlPcHRJbmZvICpma2luZm8sCiAJCQkJCQkJCQkJCQkJCSAg IGludCBjb2xubyk7Ci0tIAoyLjMxLjAKCg== --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Disposition: attachment; filename="v7-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweothob4 RnJvbSBlZjFiOTU4OTQyNzZiYjMyMjVhMTVjODAxMjAxYTc4MDY3YTVjZjRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxNDoxOTozOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg NS85XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgZ2VuZXJhdGUgcGF0aHMgZm9yIGdyb3VwZWQK IHJlbGF0aW9ucwoKVGhpcyBjb21taXQgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25zIHRoYXQgZ2Vu ZXJhdGUgcGF0aHMgZm9yIGdyb3VwZWQKcmVsYXRpb25zIGJ5IGFkZGluZyBzb3J0ZWQgYW5kIGhh c2hlZCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcApvZiBwYXRocyBvZiB0aGUgcGxh aW4gYmFzZSBvciBqb2luIHJlbGF0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jIHwgMzA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIHwgIDEyICstCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aHMuaCAgICAgICAgIHwgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwgMzE1IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvYWxscGF0aHMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMK aW5kZXggZDFiOTc0MzY3Yi4uMGMyZmFlOTYwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxh bm5lci5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3RsaXN0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXRyZWUuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKIC8qIEJp dG1hc2sgZmxhZ3MgZm9yIHB1c2hkb3duX3NhZmV0eV9pbmZvLnVuc2FmZUZsYWdzICovCkBAIC0z Mjk2LDYgKzMyOTgsMzExIEBAIGdlbmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgYm9vbCBvdmVycmlkZV9yCiAJfQogfQogCisvKgor ICogZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocworICoJCUdlbmVyYXRlIHBhdGhzIGZvciBhIGdyb3Vw ZWQgcmVsYXRpb24gYnkgYWRkaW5nIHNvcnRlZCBhbmQgaGFzaGVkCisgKgkJcGFydGlhbCBhZ2dy ZWdhdGlvbiBwYXRocyBvbiB0b3Agb2YgcGF0aHMgb2YgdGhlIHBsYWluIGJhc2Ugb3Igam9pbgor ICoJCXJlbGF0aW9uLgorICoKKyAqIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVk IGJ5IHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZS4KKyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBl ZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCisJCQkJ CSAgIFJlbE9wdEluZm8gKnJlbF9wbGFpbiwgUmVsQWdnSW5mbyAqYWdnX2luZm8pCit7CisJQWdn Q2xhdXNlQ29zdHMgYWdnX2Nvc3RzOworCWJvb2wJCWNhbl9oYXNoOworCWJvb2wJCWNhbl9zb3J0 OworCVBhdGgJICAgKmNoZWFwZXN0X3RvdGFsX3BhdGggPSBOVUxMOworCVBhdGgJICAgKmNoZWFw ZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7CisJZG91YmxlCQlkTnVtR3JvdXBzID0gMDsKKwlkb3Vi bGUJCWROdW1QYXJ0aWFsR3JvdXBzID0gMDsKKworCWlmIChJU19EVU1NWV9SRUwocmVsX3BsYWlu KSkKKwl7CisJCW1hcmtfZHVtbXlfcmVsKHJlbF9ncm91cGVkKTsKKwkJcmV0dXJuOworCX0KKwor CU1lbVNldCgmYWdnX2Nvc3RzLCAwLCBzaXplb2YoQWdnQ2xhdXNlQ29zdHMpKTsKKwlnZXRfYWdn X2NsYXVzZV9jb3N0cyhyb290LCBBR0dTUExJVF9JTklUSUFMX1NFUklBTCwgJmFnZ19jb3N0cyk7 CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIGl0J3MgcG9zc2libGUgdG8gcGVyZm9ybSBz b3J0LWJhc2VkIGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCWNhbl9z b3J0ID0gZ3JvdXBpbmdfaXNfc29ydGFibGUoYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMpOworCisJ LyoKKwkgKiBEZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgY29uc2lkZXIgaGFzaC1iYXNlZCBp bXBsZW1lbnRhdGlvbnMgb2YKKwkgKiBncm91cGluZy4KKwkgKi8KKwlBc3NlcnQocm9vdC0+bnVt T3JkZXJlZEFnZ3MgPT0gMCk7CisJY2FuX2hhc2ggPSAoYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMg IT0gTklMICYmCisJCQkJZ3JvdXBpbmdfaXNfaGFzaGFibGUoYWdnX2luZm8tPmdyb3VwX2NsYXVz ZXMpKTsKKworCS8qCisJICogQ29uc2lkZXIgd2hldGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFy dGlhbGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwKKwkgKiBwYXRocy4gIFdlIGNhbiBvbmx5IGRv IHRoaXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFsIHBhdGguCisJICovCisJaWYgKHJlbF9wbGFp bi0+cGF0aGxpc3QgIT0gTklMKQorCXsKKwkJY2hlYXBlc3RfdG90YWxfcGF0aCA9IHJlbF9wbGFp bi0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKKwkJQXNzZXJ0KGNoZWFwZXN0X3RvdGFsX3BhdGggIT0g TlVMTCk7CisJfQorCisJLyoKKwkgKiBJZiBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZSBmb3IgcmVs X2dyb3VwZWQsIHRoZW4gd2Ugc2hvdWxkIGNvbnNpZGVyCisJICogZ2VuZXJhdGluZyBwYXJ0aWFs bHktZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzLiAgSG93ZXZlciwgaWYgdGhlIHBsYWluIHJlbAorCSAq IGhhcyBubyBwYXJ0aWFsIHBhdGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChyZWxfZ3Jv dXBlZC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYgcmVsX3BsYWluLT5wYXJ0aWFsX3BhdGhsaXN0ICE9 IE5JTCkKKwl7CisJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbF9wbGFpbi0+ cGFydGlhbF9wYXRobGlzdCk7CisJCUFzc2VydChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVM TCk7CisJfQorCisJLyogRXN0aW1hdGUgbnVtYmVyIG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlm IChjaGVhcGVzdF90b3RhbF9wYXRoICE9IE5VTEwpCisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9u dW1fZ3JvdXBzKHJvb3QsCisJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJ CQkJCQkgY2hlYXBlc3RfdG90YWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7 CisJaWYgKGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3Vw cyA9IGVzdGltYXRlX251bV9ncm91cHMocm9vdCwKKwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91 cF9leHBycywKKwkJCQkJCQkJCQkJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJ CQkJCQkJCU5VTEwsIE5VTEwpOworCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3Bh dGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkg YXZhaWxhYmxlIHN1aXRhYmx5LXNvcnRlZCBwYXRoIGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRl cgorCQkgKiBzb3J0aW5nIHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoLgorCQkgKi8KKwkJZm9yZWFj aChsYywgcmVsX3BsYWluLT5wYXRobGlzdCkKKwkJeworCQkJUGF0aAkgICAqaW5wdXRfcGF0aCA9 IChQYXRoICopIGxmaXJzdChsYyk7CisJCQlQYXRoCSAgICpwYXRoOworCQkJYm9vbAkJaXNfc29y dGVkOworCQkJaW50CQkJcHJlc29ydGVkX2tleXM7CisKKwkJCS8qCisJCQkgKiBTaW5jZSB0aGUg cGF0aCBvcmlnaW5hdGVzIGZyb20gdGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCisJ CQkgKiBub3QgYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQg aXQgcHJvdmlkZXMKKwkJCSAqIHRoZSBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dy ZWdhdGlvbi4KKwkJCSAqLworCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3Bh dGgocm9vdCwKKwkJCQkJCQkJCQkJCSAgIHJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQkJICAgaW5w dXRfcGF0aCwKKwkJCQkJCQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOworCisJCQlpc19z b3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRfaW4oYWdnX2luZm8tPmdyb3VwX3BhdGhr ZXlzLAorCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSZwcmVzb3J0 ZWRfa2V5cyk7CisJCQlpZiAoIWlzX3NvcnRlZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRyeSBh dCBsZWFzdCBzb3J0aW5nIHRoZSBjaGVhcGVzdCBwYXRoIGFuZCBhbHNvIHRyeQorCQkJCSAqIGlu Y3JlbWVudGFsbHkgc29ydGluZyBhbnkgcGF0aCB3aGljaCBpcyBwYXJ0aWFsbHkgc29ydGVkCisJ CQkJICogYWxyZWFkeSAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMgd2hpY2ggaGF2ZSBwcmVz b3J0ZWQKKwkJCQkgKiBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxlZCB1bmxl c3MgaXQncyB0aGUKKwkJCQkgKiBjaGVhcGVzdCBpbnB1dCBwYXRoKS4KKwkJCQkgKi8KKwkJCQlp ZiAoaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9wYXRoICYmCisJCQkJCShwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkpCisJCQkJCWNvbnRpbnVlOwor CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgcmVsX2dyb3VwZWQsCisJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSByZWxf Z3JvdXBlZCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwgdGhlCisJ CQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCXJlbF9ncm91 cGVkLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJ CQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwK KwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJ CQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFkZF9w YXRoKHJlbF9ncm91cGVkLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8q IFNpbWlsYXIgdG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJZm9y ZWFjaChsYywgcmVsX3BsYWluLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICpp bnB1dF9wYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQli b29sCQlpc19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJLyoKKwkJCSAq IFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24g d2hpY2ggaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBl bnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHRoZSBw YXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkJICovCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3By b2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJICAgcmVsX2dyb3VwZWQsCisJCQkJCQkJ CQkJCQkgICBpbnB1dF9wYXRoLAorCQkJCQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7 CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+ Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJ CQkJJnByZXNvcnRlZF9rZXlzKTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBUcnkgYXQgbGVhc3Qgc29ydGluZyB0aGUgY2hlYXBlc3QgcGF0aCBhbmQgYWxzbyB0 cnkKKwkJCQkgKiBpbmNyZW1lbnRhbGx5IHNvcnRpbmcgYW55IHBhdGggd2hpY2ggaXMgcGFydGlh bGx5IHNvcnRlZAorCQkJCSAqIGFscmVhZHkgKG5vIG5lZWQgdG8gZGVhbCB3aXRoIHBhdGhzIHdo aWNoIGhhdmUgcHJlc29ydGVkCisJCQkJICoga2V5cyB3aGVuIGluY3JlbWVudGFsIHNvcnQgaXMg ZGlzYWJsZWQgdW5sZXNzIGl0J3MgdGhlCisJCQkJICogY2hlYXBlc3QgaW5wdXQgcGF0aCkuCisJ CQkJICovCisJCQkJaWYgKGlucHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9wYXRoICYmCisJ CQkJCShwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkpCisJ CQkJCWNvbnRpbnVlOworCisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVy IGJvdGggYSBzb3J0IGFuZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8g YSBzb3J0IGlmIHRoZXJlIGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNy ZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJ CWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJ CQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkg cmVsX2dyb3VwZWQsCisJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZv LT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJ CQkJCQkJCQkJCSByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJ CQkJCQkJCQkgYWdnX2luZm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVz b3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkg KiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0 ZWQgdW50aWwgdGhlCisJCQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3du LgorCQkJICovCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJ CQkJCQkJCXJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5m by0+dGFyZ2V0LAorCQkJCQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9J TklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJ CQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bVBhcnRp YWxHcm91cHMpOworCisJCQlhZGRfcGFydGlhbF9wYXRoKHJlbF9ncm91cGVkLCBwYXRoKTsKKwkJ fQorCX0KKworCS8qCisJICogQWRkIGEgcGFydGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBQYXRoIHdo ZXJlIHBvc3NpYmxlCisJICovCisJaWYgKGNhbl9oYXNoICYmIGNoZWFwZXN0X3RvdGFsX3BhdGgg IT0gTlVMTCkKKwl7CisJCVBhdGggICAqcGF0aDsKKworCQkvKgorCQkgKiBTaW5jZSB0aGUgcGF0 aCBvcmlnaW5hdGVzIGZyb20gdGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCisJCSAq IG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBw cm92aWRlcworCQkgKiB0aGUgY29ycmVjdCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRp b24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290 LAorCQkJCQkJCQkJCQkgICByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfdG90 YWxfcGF0aCwKKwkJCQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJ ICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVh dGVkIHVudGlsCisJCSAqIHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3du LgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJ CQkJCXJlbF9ncm91cGVkLAorCQkJCQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJYWdnX2luZm8tPnRh cmdldCwKKwkJCQkJCQkJCQlBR0dfSEFTSEVELAorCQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxf U0VSSUFMLAorCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5J TCwKKwkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJCQkJCWROdW1Hcm91cHMpOworCisJCWFk ZF9wYXRoKHJlbF9ncm91cGVkLCBwYXRoKTsKKwl9CisKKwkvKgorCSAqIE5vdyBhZGQgYSBwYXJ0 aWFsbHktZ3JvdXBlZCBIYXNoQWdnIHBhcnRpYWwgUGF0aCB3aGVyZSBwb3NzaWJsZQorCSAqLwor CWlmIChjYW5faGFzaCAmJiBjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBh dGggICAqcGF0aDsKKworCQkvKgorCQkgKiBTaW5jZSB0aGUgcGF0aCBvcmlnaW5hdGVzIGZyb20g dGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCisJCSAqIG5vdCBhd2FyZSBvZiBlYWdl ciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkgKiB0aGUg Y29ycmVjdCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRo ID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBy ZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfcGFydGlhbF9wYXRoLAorCQkJCQkJ CQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkvKgorCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJICog dGhlIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25vd24uCisJCSAqLworCQlwYXRo ID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJcmVsX2dyb3VwZWQs CisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJ CUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJCQkJ CQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCSZh Z2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJCWFkZF9wYXJ0aWFs X3BhdGgocmVsX2dyb3VwZWQsIHBhdGgpOworCX0KK30KKwogLyoKICAqIG1ha2VfcmVsX2Zyb21f am9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNzIHBhdGhzIHVzaW5nIGEgImpvaW5saXN0IiB0byBn dWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9k ZS5jCmluZGV4IDM0OTFjM2FmMWMuLjk3N2MwZWE0ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGF0aG5vZGUuYwpAQCAtMjcwOSw4ICsyNzA5LDcgQEAgY3JlYXRlX3Byb2plY3Rpb25fcGF0 aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXRodHlwZSA9IFRfUmVzdWx0 OwogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJlbDsKIAlwYXRobm9kZS0+cGF0aC5wYXRodGFy Z2V0ID0gdGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUgYW55IGpvaW5z LCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9 IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBhcmFtX2luZm87 CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRobm9kZS0+cGF0 aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlzdWJwYXRoLT5w YXJhbGxlbF9zYWZlICYmCkBAIC0yOTYyLDggKzI5NjEsNyBAQCBjcmVhdGVfaW5jcmVtZW50YWxf c29ydF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJl bDsKIAkvKiBTb3J0IGRvZXNuJ3QgcHJvamVjdCwgc28gdXNlIHNvdXJjZSBwYXRoJ3MgcGF0aHRh cmdldCAqLwogCXBhdGhub2RlLT5wYXRoLnBhdGh0YXJnZXQgPSBzdWJwYXRoLT5wYXRodGFyZ2V0 OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUgYW55IGpvaW5zLCBzbyBubyBwYXJh bWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IE5VTEw7CisJcGF0 aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBhcmFtX2luZm87CiAJcGF0aG5vZGUt PnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9z YWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlzdWJwYXRoLT5wYXJhbGxlbF9zYWZl OwpAQCAtMzAwOSw4ICszMDA3LDcgQEAgY3JlYXRlX3NvcnRfcGF0aChQbGFubmVySW5mbyAqcm9v dCwKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSByZWw7CiAJLyogU29ydCBkb2Vzbid0IHByb2pl Y3QsIHNvIHVzZSBzb3VyY2UgcGF0aCdzIHBhdGh0YXJnZXQgKi8KIAlwYXRobm9kZS0+cGF0aC5w YXRodGFyZ2V0ID0gc3VicGF0aC0+cGF0aHRhcmdldDsKLQkvKiBGb3Igbm93LCBhc3N1bWUgd2Ug YXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFyYW1ldGVyaXphdGlvbiAqLwotCXBhdGhub2Rl LT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBz dWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFs c2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFyYWxs ZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2FmZTsKQEAgLTMxNjgsOCArMzE2NSw3IEBAIGNy ZWF0ZV9hZ2dfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXRodHlw ZSA9IFRfQWdnOwogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJlbDsKIAlwYXRobm9kZS0+cGF0 aC5wYXRodGFyZ2V0ID0gdGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUg YW55IGpvaW5zLCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFy YW1faW5mbyA9IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBh cmFtX2luZm87CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRo bm9kZS0+cGF0aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlz dWJwYXRoLT5wYXJhbGxlbF9zYWZlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCAxMDY4ZmY2OTUz Li43NDAxNWI0ZWQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAor KysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtNTgsNiArNTgsMTAgQEAgZXh0 ZXJuIHZvaWQgZ2VuZXJhdGVfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCiAJCQkJCQkJCSAgYm9vbCBvdmVycmlkZV9yb3dzKTsKIGV4dGVybiB2b2lkIGdl bmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJCQkgYm9vbCBvdmVycmlkZV9yb3dzKTsKK2V4dGVybiB2b2lkIGdlbmVy YXRlX2dyb3VwZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCSAgIFJlbE9wdElu Zm8gKnJlbF9ncm91cGVkLAorCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWxfcGxhaW4sCisJCQkJ CQkJCSAgIFJlbEFnZ0luZm8gKmFnZ19pbmZvKTsKIGV4dGVybiBpbnQJY29tcHV0ZV9wYXJhbGxl bF93b3JrZXIoUmVsT3B0SW5mbyAqcmVsLCBkb3VibGUgaGVhcF9wYWdlcywKIAkJCQkJCQkJCWRv dWJsZSBpbmRleF9wYWdlcywgaW50IG1heF93b3JrZXJzKTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9w YXJ0aWFsX2JpdG1hcF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAot LSAKMi4zMS4wCgo= --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Disposition: attachment; filename="v7-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweotq6c5 RnJvbSBlOTgyZjYyZWEwNzVhOTA4ZTc4ZGFkODk0NzM5ZTFhMTkwY2MxYTVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyOCBGZWIgMjAyNCAxMDowMzo0MSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg Ni85XSBCdWlsZCBncm91cGVkIHJlbGF0aW9ucyBvdXQgb2YgYmFzZSByZWxhdGlvbnMKClRoaXMg Y29tbWl0IGJ1aWxkcyBncm91cGVkIHJlbGF0aW9ucyBmb3IgZWFjaCBiYXNlIHJlbGF0aW9uIGlm IHBvc3NpYmxlLAphbmQgZ2VuZXJhdGVzIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBl ZCBiYXNlIHJlbGF0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jIHwgIDkxICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMgIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgIHwgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwg MTk2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRl eCAwYzJmYWU5NjA4Li45MjE5ODE1ZTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBh dGhzLmMKQEAgLTkzLDYgKzkzLDcgQEAgam9pbl9zZWFyY2hfaG9va190eXBlIGpvaW5fc2VhcmNo X2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgdm9pZCBzZXRfYmFzZV9yZWxfY29uc2lkZXJfc3RhcnR1 cChQbGFubmVySW5mbyAqcm9vdCk7CiBzdGF0aWMgdm9pZCBzZXRfYmFzZV9yZWxfc2l6ZXMoUGxh bm5lckluZm8gKnJvb3QpOworc3RhdGljIHZvaWQgc2V0dXBfYmFzZV9ncm91cGVkX3JlbHMoUGxh bm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cyhQbGFu bmVySW5mbyAqcm9vdCk7CiBzdGF0aWMgdm9pZCBzZXRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCSBJbmRleCBydGksIFJhbmdlVGJsRW50cnkgKnJ0 ZSk7CkBAIC0xMTcsNiArMTE4LDcgQEAgc3RhdGljIHZvaWQgc2V0X2FwcGVuZF9yZWxfc2l6ZShQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQlJbmRleCBydGksIFJh bmdlVGJsRW50cnkgKnJ0ZSk7CiBzdGF0aWMgdm9pZCBzZXRfYXBwZW5kX3JlbF9wYXRobGlzdChQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJSW5kZXggcnRpLCBS YW5nZVRibEVudHJ5ICpydGUpOworc3RhdGljIHZvaWQgc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0 KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwogc3RhdGljIHZvaWQgZ2VuZXJh dGVfb3JkZXJlZGFwcGVuZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCQkJCQkJCQkJCSBMaXN0ICpsaXZlX2NoaWxkcmVscywKIAkJCQkJCQkJCQkgTGlzdCAqYWxs X2NoaWxkX3BhdGhrZXlzKTsKQEAgLTE4NSw2ICsxODcsMTEgQEAgbWFrZV9vbmVfcmVsKFBsYW5u ZXJJbmZvICpyb290LCBMaXN0ICpqb2lubGlzdCkKIAkgKi8KIAlzZXRfYmFzZV9yZWxfc2l6ZXMo cm9vdCk7CiAKKwkvKgorCSAqIEJ1aWxkIGdyb3VwZWQgYmFzZSByZWxhdGlvbnMgZm9yIGVhY2gg YmFzZSByZWwgaWYgcG9zc2libGUuCisJICovCisJc2V0dXBfYmFzZV9ncm91cGVkX3JlbHMocm9v dCk7CisKIAkvKgogCSAqIFdlIHNob3VsZCBub3cgaGF2ZSBzaXplIGVzdGltYXRlcyBmb3IgZXZl cnkgYWN0dWFsIHRhYmxlIGludm9sdmVkIGluCiAJICogdGhlIHF1ZXJ5LCBhbmQgd2UgYWxzbyBr bm93IHdoaWNoIGlmIGFueSBoYXZlIGJlZW4gZGVsZXRlZCBmcm9tIHRoZQpAQCAtMzI2LDYgKzMz Myw1OSBAQCBzZXRfYmFzZV9yZWxfc2l6ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJfQogfQogCisv KgorICogc2V0dXBfYmFzZV9ncm91cGVkX3JlbHMKKyAqCSAgRm9yIGVhY2ggInBsYWluIiBiYXNl IHJlbGF0aW9uIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIGVhZ2VyCisgKgkgIGFn Z3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9uIGNhbiBwcm9kdWNlIGdy b3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNlX2dyb3VwZWRfcmVscyhQ bGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoKKwkgKiBJZiB0aGVyZSBh cmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBlYWdl cgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAocm9vdC0+YWdn X2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3QgPT0gTklMKQor CQlyZXR1cm47CisKKwkvKgorCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIG9ubHkgbWFrZXMgc2Vuc2Ug aWYgdGhlcmUgYXJlIG11bHRpcGxlIGJhc2UgcmVscyBpbgorCSAqIHRoZSBxdWVyeS4KKwkgKi8K KwlpZiAoYm1zX21lbWJlcnNoaXAocm9vdC0+YWxsX2Jhc2VyZWxzKSAhPSBCTVNfTVVMVElQTEUp CisJCXJldHVybjsKKworCWZvciAocnRpID0gMTsgcnRpIDwgcm9vdC0+c2ltcGxlX3JlbF9hcnJh eV9zaXplOyBydGkrKykKKwl7CisJCVJlbE9wdEluZm8JICAgKnJlbCA9IHJvb3QtPnNpbXBsZV9y ZWxfYXJyYXlbcnRpXTsKKwkJUmVsT3B0SW5mbwkgICAqcmVsX2dyb3VwZWQ7CisJCVJlbEFnZ0lu Zm8JICAgKmFnZ19pbmZvOworCisJCS8qIHRoZXJlIG1heSBiZSBlbXB0eSBzbG90cyBjb3JyZXNw b25kaW5nIHRvIG5vbi1iYXNlcmVsIFJURXMgKi8KKwkJaWYgKHJlbCA9PSBOVUxMKQorCQkJY29u dGludWU7CisKKwkJQXNzZXJ0KHJlbC0+cmVsaWQgPT0gcnRpKTsgLyogc2FuaXR5IGNoZWNrIG9u IGFycmF5ICovCisKKwkJLyoKKwkJICogSWdub3JlIFJURXMgdGhhdCBhcmUgbm90IHNpbXBsZSBy ZWxzLiAgTm90ZSB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIKKwkJICogIm90aGVyIHJlbHMiIGhl cmUuCisJCSAqLworCQlpZiAoIUlTX1NJTVBMRV9SRUwocmVsKSkKKwkJCWNvbnRpbnVlOworCisJ CXJlbF9ncm91cGVkID0gYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJvb3QsIHJlbC0+cmVsaWQs ICZhZ2dfaW5mbyk7CisJCWlmIChyZWxfZ3JvdXBlZCkKKwkJeworCQkJLyogTWFrZSB0aGUgZ3Jv dXBlZCByZWxhdGlvbiBhdmFpbGFibGUgZm9yIGpvaW5pbmcuICovCisJCQlhZGRfZ3JvdXBlZF9y ZWwocm9vdCwgcmVsX2dyb3VwZWQsIGFnZ19pbmZvKTsKKwkJfQorCX0KK30KKwogLyoKICAqIHNl dF9iYXNlX3JlbF9wYXRobGlzdHMKICAqCSAgRmluZHMgYWxsIHBhdGhzIGF2YWlsYWJsZSBmb3Ig c2Nhbm5pbmcgZWFjaCBiYXNlLXJlbGF0aW9uIGVudHJ5LgpAQCAtNTYyLDYgKzYyMiwxNSBAQCBz ZXRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJLyog Tm93IGZpbmQgdGhlIGNoZWFwZXN0IG9mIHRoZSBwYXRocyBmb3IgdGhpcyByZWwgKi8KIAlzZXRf Y2hlYXBlc3QocmVsKTsKIAorCS8qCisJICogSWYgYSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGlz IHJlbCBleGlzdHMsIGJ1aWxkIHBhcnRpYWwgYWdncmVnYXRpb24KKwkgKiBwYXRocyBmb3IgaXQu CisJICoKKwkgKiBOb3RlIHRoYXQgdGhpcyBjYW4gb25seSBoYXBwZW4gYWZ0ZXIgd2UndmUgY2Fs bGVkIHNldF9jaGVhcGVzdCgpIGZvcgorCSAqIHRoaXMgYmFzZSByZWwsIGJlY2F1c2Ugd2UgbmVl ZCBpdHMgY2hlYXBlc3QgcGF0aHMuCisJICovCisJc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KHJv b3QsIHJlbCk7CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAlwcHJpbnQocmVsKTsKICNlbmRp ZgpAQCAtMTI4OSw2ICsxMzU4LDI4IEBAIHNldF9hcHBlbmRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwocm9v dCwgcmVsLCBsaXZlX2NoaWxkcmVscyk7CiB9CiAKKy8qCisgKiBzZXRfZ3JvdXBlZF9yZWxfcGF0 aGxpc3QKKyAqCSAgSWYgYSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGUgZ2l2ZW4gJ3JlbCcgZXhp c3RzLCBidWlsZCBwYXJ0aWFsCisgKgkgIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciBpdC4KKyAqLwor c3RhdGljIHZvaWQKK3NldF9ncm91cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsKQoreworCVJlbE9wdEluZm8gICAqcmVsX2dyb3VwZWQ7CisJUmVsQWdn SW5mbyAgICphZ2dfaW5mbzsKKworCS8qIEFkZCBwYXRocyB0byB0aGUgZ3JvdXBlZCBiYXNlIHJl bGF0aW9uIGlmIG9uZSBleGlzdHMuICovCisJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVs KHJvb3QsIHJlbC0+cmVsaWRzLAorCQkJCQkJCQkgICAmYWdnX2luZm8pOworCWlmIChyZWxfZ3Jv dXBlZCkKKwl7CisJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIHJl bCwKKwkJCQkJCQkgICBhZ2dfaW5mbyk7CisJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJ fQorfQorCiAKIC8qCiAgKiBhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcmVsbm9kZS5jCmluZGV4IGM2ZTJkNDE3YTguLmIxNGY5OWE5ZWEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgPGxp bWl0cy5oPgogCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL2FwcGVuZGluZm8uaCIKQEAgLTI3LDEyICsyOCwxNSBAQAogI2luY2x1ZGUgIm9wdGlt aXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIK ICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3RsaXN0LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK KyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKIC8qCkBAIC00MTgsNiArNDIyLDEwMyBA QCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsIFJlbE9wdElu Zm8gKnBhcmVudCkKIAlyZXR1cm4gcmVsOwogfQogCisvKgorICogYnVpbGRfc2ltcGxlX2dyb3Vw ZWRfcmVsCisgKgkgIENvbnN0cnVjdCBhIG5ldyBSZWxPcHRJbmZvIGZvciBhIGdyb3VwZWQgYmFz ZSByZWxhdGlvbiBvdXQgb2YgYW4gZXhpc3RpbmcKKyAqCSAgbm9uLWdyb3VwZWQgYmFzZSByZWxh dGlvbi4KKyAqCisgKiBPbiBzdWNjZXNzLCB0aGUgbmV3IFJlbE9wdEluZm8gaXMgcmV0dXJuZWQg YW5kIHRoZSBjb3JyZXNwb25kaW5nIFJlbEFnZ0luZm8KKyAqIGlzIHN0b3JlZCBpbiAqYWdnX2lu Zm9fcC4KKyAqLworUmVsT3B0SW5mbyAqCitidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxhbm5l ckluZm8gKnJvb3QsIGludCByZWxpZCwKKwkJCQkJCSBSZWxBZ2dJbmZvICoqYWdnX2luZm9fcCkK K3sKKwlSZWxPcHRJbmZvCSAgICpyZWxfcGxhaW47CisJUmVsT3B0SW5mbwkgICAqcmVsX2dyb3Vw ZWQ7CisJUmVsQWdnSW5mbwkgICAqYWdnX2luZm87CisKKwkvKgorCSAqIFdlIHNob3VsZCBoYXZl IGF2YWlsYWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25z LAorCSAqIG90aGVyd2lzZSB3ZSBjYW5ub3QgcmVhY2ggaGVyZS4KKwkgKi8KKwlBc3NlcnQocm9v dC0+YWdnX2NsYXVzZV9saXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlz dCAhPSBOSUwpOworCisJcmVsX3BsYWluID0gcm9vdC0+c2ltcGxlX3JlbF9hcnJheVtyZWxpZF07 CisJQXNzZXJ0KHJlbF9wbGFpbiAhPSBOVUxMKTsKKwlBc3NlcnQoSVNfU0lNUExFX1JFTChyZWxf cGxhaW4pKTsKKworCS8qIG5vdGhpbmcgdG8gZG8gZm9yIGR1bW15IHJlbCAqLworCWlmIChJU19E VU1NWV9SRUwocmVsX3BsYWluKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFByZXBhcmUg dGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMg YmFzZQorCSAqIHJlbGF0aW9uLgorCSAqLworCWFnZ19pbmZvID0gY3JlYXRlX3JlbF9hZ2dfaW5m byhyb290LCByZWxfcGxhaW4pOworCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gTlVM TDsKKworCS8qIGJ1aWxkIGEgZ3JvdXBlZCByZWxhdGlvbiBvdXQgb2YgdGhlIHBsYWluIHJlbGF0 aW9uICovCisJcmVsX2dyb3VwZWQgPSBidWlsZF9ncm91cGVkX3JlbChyb290LCByZWxfcGxhaW4p OworCXJlbF9ncm91cGVkLT5yZWx0YXJnZXQgPSBhZ2dfaW5mby0+dGFyZ2V0OworCXJlbF9ncm91 cGVkLT5yb3dzID0gYWdnX2luZm8tPmdyb3VwZWRfcm93czsKKworCS8qIHJldHVybiB0aGUgUmVs QWdnSW5mbyBzdHJ1Y3R1cmUgKi8KKwkqYWdnX2luZm9fcCA9IGFnZ19pbmZvOworCisJcmV0dXJu IHJlbF9ncm91cGVkOworfQorCisvKgorICogYnVpbGRfZ3JvdXBlZF9yZWwKKyAqCSAgQnVpbGQg YSBncm91cGVkIHJlbGF0aW9uIGJ5IGZsYXQgY29weWluZyBhIHBsYWluIHJlbGF0aW9uIGFuZCBy ZXNldHRpbmcKKyAqCSAgdGhlIG5lY2Vzc2FyeSBmaWVsZHMuCisgKi8KK1JlbE9wdEluZm8gKgor YnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbF9wbGFp bikKK3sKKwlSZWxPcHRJbmZvICAgKnJlbF9ncm91cGVkOworCisJcmVsX2dyb3VwZWQgPSBtYWtl Tm9kZShSZWxPcHRJbmZvKTsKKwltZW1jcHkocmVsX2dyb3VwZWQsIHJlbF9wbGFpbiwgc2l6ZW9m KFJlbE9wdEluZm8pKTsKKworCS8qCisJICogY2xlYXIgcGF0aCBpbmZvCisJICovCisJcmVsX2dy b3VwZWQtPnBhdGhsaXN0ID0gTklMOworCXJlbF9ncm91cGVkLT5wcGlsaXN0ID0gTklMOworCXJl bF9ncm91cGVkLT5wYXJ0aWFsX3BhdGhsaXN0ID0gTklMOworCXJlbF9ncm91cGVkLT5jaGVhcGVz dF9zdGFydHVwX3BhdGggPSBOVUxMOworCXJlbF9ncm91cGVkLT5jaGVhcGVzdF90b3RhbF9wYXRo ID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+Y2hlYXBlc3RfdW5pcXVlX3BhdGggPSBOVUxMOworCXJl bF9ncm91cGVkLT5jaGVhcGVzdF9wYXJhbWV0ZXJpemVkX3BhdGhzID0gTklMOworCisJLyoKKwkg KiBjbGVhciBwYXJ0aXRpb24gaW5mbworCSAqLworCXJlbF9ncm91cGVkLT5wYXJ0X3NjaGVtZSA9 IE5VTEw7CisJcmVsX2dyb3VwZWQtPm5wYXJ0cyA9IC0xOworCXJlbF9ncm91cGVkLT5ib3VuZGlu Zm8gPSBOVUxMOworCXJlbF9ncm91cGVkLT5wYXJ0Ym91bmRzX21lcmdlZCA9IGZhbHNlOworCXJl bF9ncm91cGVkLT5wYXJ0aXRpb25fcXVhbCA9IE5JTDsKKwlyZWxfZ3JvdXBlZC0+cGFydF9yZWxz ID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+bGl2ZV9wYXJ0cyA9IE5VTEw7CisJcmVsX2dyb3VwZWQt PmFsbF9wYXJ0cmVscyA9IE5VTEw7CisJcmVsX2dyb3VwZWQtPnBhcnRleHBycyA9IE5VTEw7CisJ cmVsX2dyb3VwZWQtPm51bGxhYmxlX3BhcnRleHBycyA9IE5VTEw7CisJcmVsX2dyb3VwZWQtPmNv bnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOworCisJLyoKKwkgKiBjbGVhciBzaXpl IGVzdGltYXRlcworCSAqLworCXJlbF9ncm91cGVkLT5yb3dzID0gMDsKKworCXJldHVybiByZWxf Z3JvdXBlZDsKK30KKwogLyoKICAqIGZpbmRfYmFzZV9yZWwKICAqCSAgRmluZCBhIGJhc2Ugb3Ig b3RoZXJyZWwgcmVsYXRpb24gZW50cnksIHdoaWNoIG11c3QgYWxyZWFkeSBleGlzdC4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmgKaW5kZXggMDJkYTY4YTc1My4uNTI1NDgxZjI5NiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmgKQEAgLTMxMCw2ICszMTAsMTAgQEAgZXh0ZXJuIHZvaWQgc2V0dXBf c2ltcGxlX3JlbF9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgZXhwYW5k X3BsYW5uZXJfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290LCBpbnQgYWRkX3NpemUpOwogZXh0ZXJu IFJlbE9wdEluZm8gKmJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxp ZCwKIAkJCQkJCQkJCVJlbE9wdEluZm8gKnBhcmVudCk7CitleHRlcm4gUmVsT3B0SW5mbyAqYnVp bGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsCisJCQkJ CQkJCQkJCVJlbEFnZ0luZm8gKiphZ2dfaW5mb19wKTsKK2V4dGVybiBSZWxPcHRJbmZvICpidWls ZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCSBSZWxPcHRJbmZvICpy ZWxfcGxhaW4pOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWwoUGxhbm5lckluZm8g KnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9ub2Vy cihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5k X2Jhc2VfcmVsX2lnbm9yZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwotLSAK Mi4zMS4wCgo= --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Disposition: attachment; filename="v7-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweotxe26 RnJvbSAyYTlkYzkzYzI0M2ZmMjFjNzQ3MTljYzY3YjE3MjNiN2M2ZGM1ODgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzozMzowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg Ny85XSBCdWlsZCBncm91cGVkIHJlbGF0aW9ucyBvdXQgb2Ygam9pbiByZWxhdGlvbnMKClRoaXMg Y29tbWl0IGJ1aWxkcyBncm91cGVkIHJlbGF0aW9ucyBmb3IgZWFjaCBqdXN0LXByb2Nlc3NlZCBq b2luCnJlbGF0aW9uIGlmIHBvc3NpYmxlLCBhbmQgZ2VuZXJhdGVzIGFnZ3JlZ2F0aW9uIHBhdGhz IGZvciB0aGUgZ3JvdXBlZApqb2luIHJlbGF0aW9ucy4KClRoZSBjaGFuZ2VzIG1hZGUgdG8gbWFr ZV9qb2luX3JlbCgpIGFyZSByZWxhdGl2ZWx5IG1pbm9yLCB3aXRoIHRoZQphZGRpdGlvbiBvZiBh IG5ldyBmdW5jdGlvbiBtYWtlX2dyb3VwZWRfam9pbl9yZWwoKSwgd2hpY2ggZmluZHMgb3IKY3Jl YXRlcyBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoZSBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBh bmQgZ2VuZXJhdGVzCmdyb3VwZWQgcGF0aHMgYnkgam9pbmluZyBhIGdyb3VwZWQgaW5wdXQgcmVs YXRpb24gd2l0aCBhIG5vbi1ncm91cGVkCmlucHV0IHJlbGF0aW9uLgoKVGhlIG90aGVyIHdheSB0 byBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGlzIGJ5IGFkZGluZyBzb3J0ZWQgYW5kIGhhc2hlZApw YXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBvZiBwYXRocyBvZiB0aGUgam9pbnJlbC4g IFRoaXMgb2NjdXJzCmluIHN0YW5kYXJkX2pvaW5fc2VhcmNoKCksIGFmdGVyIHdlJ3ZlIHJ1biBz ZXRfY2hlYXBlc3QoKSBmb3IgdGhlCmpvaW5yZWwuICBUaGUgcmVhc29uIGZvciBwZXJmb3JtaW5n IHRoaXMgc3RlcCBhZnRlciBzZXRfY2hlYXBlc3QoKSBpcwp0aGF0IHdlIG5lZWQgdG8ga25vdyB0 aGUgam9pbnJlbCdzIGNoZWFwZXN0IHBhdGhzIChzZWUKZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocygp KS4KClRoaXMgcGF0Y2ggYWxzbyBtYWtlcyB0aGUgZ3JvdXBlZCByZWxhdGlvbiBmb3IgdGhlIHRv cG1vc3Qgam9pbiByZWwgYWN0CmFzIHRoZSB1cHBlciByZWwgcmVwcmVzZW50aW5nIHRoZSByZXN1 bHQgb2YgcGFydGlhbCBhZ2dyZWdhdGlvbiwgc28gdGhhdAp3ZSBjYW4gYWRkIHRoZSBmaW5hbCBh Z2dyZWdhdGlvbiBvbiB0b3Agb2YgdGhhdC4gIEFkZGl0aW9uYWxseSwgdGhpcwpwYXRjaCBleHRl bmRzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uIHRvIHdvcmsgd2l0aApw YXJ0aXRpb253aXNlIGpvaW4gYW5kIGdlcW8uCgpUaGlzIHBhdGNoIGFsc28gbWFrZXMgZWFnZXIg YWdncmVnYXRpb24gd29yayB3aXRoIG91dGVyIGpvaW5zLiAgV2l0aApvdXRlciBqb2lucywgdGhl IGFnZ3JlZ2F0ZSBjYW5ub3QgYmUgcHVzaGVkIGRvd24gaWYgYW55IGNvbHVtbgpyZWZlcmVuY2Vk IGJ5IGdyb3VwaW5nIGV4cHJlc3Npb25zIG9yIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgaXMgbnVsbGFi bGUgYnkKYW4gb3V0ZXIgam9pbiBhYm92ZSB0aGUgcmVsYXRpb24gdG8gd2hpY2ggd2Ugd2FudCB0 byBhcHBseSB0aGUgcGFydGlhbAphZ2dyZWdhdGlvbi4gIFRoYW5rcyB0byBUb20ncyBvdXRlci1q b2luLWF3YXJlLVZhciBpbmZyYXN0cnVjdHVyZSwgd2UKY2FuIGVhc2lseSBpZGVudGlmeSBzdWNo IHNpdHVhdGlvbnMgYW5kIHN1YnNlcXVlbnRseSByZWZyYWluIGZyb20KcHVzaGluZyBkb3duIHRo ZSBhZ2dyZWdhdGVzLgoKU3RhcnRpbmcgZnJvbSB0aGlzIHBhdGNoLCB5b3Ugc2hvdWxkIGJlIGFi bGUgdG8gc2VlIHBsYW5zIHdpdGggZWFnZXIKYWdncmVnYXRpb24uCi0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgIHwgIDg0ICsrKysrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICB8ICA0OCArKysrKysrKysrCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jICAgfCAxMjIgKysrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgfCAgOTIg KysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMgfCAgNjAgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2Rl LmMgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgIHwg ICA2IC0tCiA3IGZpbGVzIGNoYW5nZWQsIDM2MyBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCmluZGV4IDExNDExNTY4OTku LjI3ODg1N2Q3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9f ZXZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCkBAIC02 MCw4ICs2MCwxMiBAQCBnZXFvX2V2YWwoUGxhbm5lckluZm8gKnJvb3QsIEdlbmUgKnRvdXIsIGlu dCBudW1fZ2VuZSkKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlSZWxPcHRJbmZvICpqb2lucmVs OwogCUNvc3QJCWZpdG5lc3M7Ci0JaW50CQkJc2F2ZWxlbmd0aDsKLQlzdHJ1Y3QgSFRBQiAqc2F2 ZWhhc2g7CisJaW50CQkJc2F2ZWxlbmd0aF9qb2luX3JlbDsKKwlzdHJ1Y3QgSFRBQiAqc2F2ZWhh c2hfam9pbl9yZWw7CisJaW50CQkJc2F2ZWxlbmd0aF9ncm91cGVkX3JlbDsKKwlzdHJ1Y3QgSFRB QiAqc2F2ZWhhc2hfZ3JvdXBlZF9yZWw7CisJaW50CQkJc2F2ZWxlbmd0aF9ncm91cGVkX2luZm87 CisJc3RydWN0IEhUQUIgKnNhdmVoYXNoX2dyb3VwZWRfaW5mbzsKIAogCS8qCiAJICogQ3JlYXRl IGEgcHJpdmF0ZSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgaG9sZCBhbGwgdGVtcCBzdG9yYWdl CkBAIC03OCwyNSArODIsMzggQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5lICp0 b3VyLCBpbnQgbnVtX2dlbmUpCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG15Y29u dGV4dCk7CiAKIAkvKgotCSAqIGdpbW1lX3RyZWUgd2lsbCBhZGQgZW50cmllcyB0byByb290LT5q b2luX3JlbF9saXN0LCB3aGljaCBtYXkgb3IgbWF5Ci0JICogbm90IGFscmVhZHkgY29udGFpbiBz b21lIGVudHJpZXMuICBUaGUgbmV3bHkgYWRkZWQgZW50cmllcyB3aWxsIGJlCi0JICogcmVjeWNs ZWQgYnkgdGhlIE1lbW9yeUNvbnRleHREZWxldGUgYmVsb3csIHNvIHdlIG11c3QgZW5zdXJlIHRo YXQgdGhlCi0JICogbGlzdCBpcyByZXN0b3JlZCB0byBpdHMgZm9ybWVyIHN0YXRlIGJlZm9yZSBl eGl0aW5nLiAgV2UgY2FuIGRvIHRoaXMgYnkKLQkgKiB0cnVuY2F0aW5nIHRoZSBsaXN0IHRvIGl0 cyBvcmlnaW5hbCBsZW5ndGguICBOT1RFIHRoaXMgYXNzdW1lcyB0aGF0IGFueQotCSAqIGFkZGVk IGVudHJpZXMgYXJlIGFwcGVuZGVkIGF0IHRoZSBlbmQhCisJICogZ2ltbWVfdHJlZSB3aWxsIGFk ZCBlbnRyaWVzIHRvIHJvb3QtPmpvaW5fcmVsX2xpc3QsIHJvb3QtPmFnZ19pbmZvX2xpc3QKKwkg KiBhbmQgcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10sIHdoaWNo IG1heSBvciBtYXkgbm90CisJICogYWxyZWFkeSBjb250YWluIHNvbWUgZW50cmllcy4gIFRoZSBu ZXdseSBhZGRlZCBlbnRyaWVzIHdpbGwgYmUgcmVjeWNsZWQKKwkgKiBieSB0aGUgTWVtb3J5Q29u dGV4dERlbGV0ZSBiZWxvdywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCBlYWNoIGxpc3Qgb2YKKwkg KiB0aGUgUmVsSW5mb0xpc3Qgc3RydWN0dXJlcyBpcyByZXN0b3JlZCB0byBpdHMgZm9ybWVyIHN0 YXRlIGJlZm9yZQorCSAqIGV4aXRpbmcuICBXZSBjYW4gZG8gdGhpcyBieSB0cnVuY2F0aW5nIGVh Y2ggbGlzdCB0byBpdHMgb3JpZ2luYWwgbGVuZ3RoLgorCSAqIE5PVEUgdGhpcyBhc3N1bWVzIHRo YXQgYW55IGFkZGVkIGVudHJpZXMgYXJlIGFwcGVuZGVkIGF0IHRoZSBlbmQhCiAJICoKLQkgKiBX ZSBhbHNvIG11c3QgdGFrZSBjYXJlIG5vdCB0byBtZXNzIHVwIHRoZSBvdXRlciBqb2luX3JlbF9s aXN0LT5oYXNoLCBpZgotCSAqIHRoZXJlIGlzIG9uZS4gIFdlIGNhbiBkbyB0aGlzIGJ5IGp1c3Qg dGVtcG9yYXJpbHkgc2V0dGluZyB0aGUgbGluayB0bwotCSAqIE5VTEwuICAoSWYgd2UgYXJlIGRl YWxpbmcgd2l0aCBlbm91Z2ggam9pbiByZWxzLCB3aGljaCB3ZSB2ZXJ5IGxpa2VseQotCSAqIGFy ZSwgYSBuZXcgaGFzaCB0YWJsZSB3aWxsIGdldCBidWlsdCBhbmQgdXNlZCBsb2NhbGx5LikKKwkg KiBXZSBhbHNvIG11c3QgdGFrZSBjYXJlIG5vdCB0byBtZXNzIHVwIHRoZSBvdXRlciBoYXNoIHRh YmxlcyBvZiB0aGUKKwkgKiBSZWxJbmZvTGlzdCBzdHJ1Y3R1cmVzLCBpZiBhbnkuICBXZSBjYW4g ZG8gdGhpcyBieSBqdXN0IHRlbXBvcmFyaWx5CisJICogc2V0dGluZyBlYWNoIGxpbmsgdG8gTlVM TC4gIChJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGVub3VnaCBqb2luIHJlbHMsCisJICogd2hpY2gg d2UgdmVyeSBsaWtlbHkgYXJlLCBuZXcgaGFzaCB0YWJsZXMgd2lsbCBnZXQgYnVpbHQgYW5kIHVz ZWQKKwkgKiBsb2NhbGx5LikKIAkgKgogCSAqIGpvaW5fcmVsX2xldmVsW10gc2hvdWxkbid0IGJl IGluIHVzZSwgc28ganVzdCBBc3NlcnQgaXQgaXNuJ3QuCiAJICovCi0Jc2F2ZWxlbmd0aCA9IGxp c3RfbGVuZ3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zKTsKLQlzYXZlaGFzaCA9IHJvb3Qt PmpvaW5fcmVsX2xpc3QtPmhhc2g7CisJc2F2ZWxlbmd0aF9qb2luX3JlbCA9IGxpc3RfbGVuZ3Ro KHJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zKTsKKwlzYXZlaGFzaF9qb2luX3JlbCA9IHJvb3Qt PmpvaW5fcmVsX2xpc3QtPmhhc2g7CisKKwlzYXZlbGVuZ3RoX2dyb3VwZWRfcmVsID0KKwkJbGlz dF9sZW5ndGgocm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10uaXRl bXMpOworCXNhdmVoYXNoX2dyb3VwZWRfcmVsID0KKwkJcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJF TF9QQVJUSUFMX0dST1VQX0FHR10uaGFzaDsKKworCXNhdmVsZW5ndGhfZ3JvdXBlZF9pbmZvID0g bGlzdF9sZW5ndGgocm9vdC0+YWdnX2luZm9fbGlzdC0+aXRlbXMpOworCXNhdmVoYXNoX2dyb3Vw ZWRfaW5mbyA9IHJvb3QtPmFnZ19pbmZvX2xpc3QtPmhhc2g7CisKIAlBc3NlcnQocm9vdC0+am9p bl9yZWxfbGV2ZWwgPT0gTlVMTCk7CiAKIAlyb290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gTlVM TDsKKwlyb290LT51cHBlcl9yZWxzW1VQUEVSUkVMX1BBUlRJQUxfR1JPVVBfQUdHXS5oYXNoID0g TlVMTDsKKwlyb290LT5hZ2dfaW5mb19saXN0LT5oYXNoID0gTlVMTDsKIAogCS8qIGNvbnN0cnVj dCB0aGUgYmVzdCBwYXRoIGZvciB0aGUgZ2l2ZW4gY29tYmluYXRpb24gb2YgcmVsYXRpb25zICov CiAJam9pbnJlbCA9IGdpbW1lX3RyZWUocm9vdCwgdG91ciwgbnVtX2dlbmUpOwpAQCAtMTE4LDEy ICsxMzUsMjIgQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5lICp0b3VyLCBpbnQg bnVtX2dlbmUpCiAJCWZpdG5lc3MgPSBEQkxfTUFYOwogCiAJLyoKLQkgKiBSZXN0b3JlIGpvaW5f cmVsX2xpc3QgdG8gaXRzIGZvcm1lciBzdGF0ZSwgYW5kIHB1dCBiYWNrIG9yaWdpbmFsCi0JICog aGFzaHRhYmxlIGlmIGFueS4KKwkgKiBSZXN0b3JlIGVhY2ggb2YgdGhlIGxpc3QgaW4gam9pbl9y ZWxfbGlzdCwgYWdnX2luZm9fbGlzdCBhbmQKKwkgKiB1cHBlcl9yZWxzW1VQUEVSUkVMX1BBUlRJ QUxfR1JPVVBfQUdHXSB0byBpdHMgZm9ybWVyIHN0YXRlLCBhbmQgcHV0IGJhY2sKKwkgKiBvcmln aW5hbCBoYXNodGFibGUgaWYgYW55LgogCSAqLwogCXJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1z ID0gbGlzdF90cnVuY2F0ZShyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcywKLQkJCQkJCQkJCQkJ ICAgc2F2ZWxlbmd0aCk7Ci0Jcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9IHNhdmVoYXNoOwor CQkJCQkJCQkJCQkgICBzYXZlbGVuZ3RoX2pvaW5fcmVsKTsKKwlyb290LT5qb2luX3JlbF9saXN0 LT5oYXNoID0gc2F2ZWhhc2hfam9pbl9yZWw7CisKKwlyb290LT51cHBlcl9yZWxzW1VQUEVSUkVM X1BBUlRJQUxfR1JPVVBfQUdHXS5pdGVtcyA9CisJCWxpc3RfdHJ1bmNhdGUocm9vdC0+dXBwZXJf cmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10uaXRlbXMsCisJCQkJCSAgc2F2ZWxlbmd0 aF9ncm91cGVkX3JlbCk7CisJcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQ X0FHR10uaGFzaCA9IHNhdmVoYXNoX2dyb3VwZWRfcmVsOworCisJcm9vdC0+YWdnX2luZm9fbGlz dC0+aXRlbXMgPSBsaXN0X3RydW5jYXRlKHJvb3QtPmFnZ19pbmZvX2xpc3QtPml0ZW1zLAorCQkJ CQkJCQkJCQkgICBzYXZlbGVuZ3RoX2dyb3VwZWRfaW5mbyk7CisJcm9vdC0+YWdnX2luZm9fbGlz dC0+aGFzaCA9IHNhdmVoYXNoX2dyb3VwZWRfaW5mbzsKIAogCS8qIHJlbGVhc2UgYWxsIHRoZSBt ZW1vcnkgYWNxdWlyZWQgd2l0aGluIGdpbW1lX3RyZWUgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3h0KTsKQEAgLTI3OSw2ICszMDYsMjcgQEAgbWVyZ2VfY2x1bXAoUGxhbm5lckluZm8g KnJvb3QsIExpc3QgKmNsdW1wcywgQ2x1bXAgKm5ld19jbHVtcCwgaW50IG51bV9nZW5lLAogCQkJ CS8qIEZpbmQgYW5kIHNhdmUgdGhlIGNoZWFwZXN0IHBhdGhzIGZvciB0aGlzIGpvaW5yZWwgKi8K IAkJCQlzZXRfY2hlYXBlc3Qoam9pbnJlbCk7CiAKKwkJCQkvKgorCQkJCSAqIEV4Y2VwdCBmb3Ig dGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGluZworCQkJCSAqIHBh cnRpYWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uIG9uIHRvcCBv ZiB0aGUKKwkJCQkgKiBwYXRocyBvZiB0aGlzIHJlbC4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUg Y3JlYXRpbmcgcGF0aHMgZm9yCisJCQkJICogdGhlIGdyb3VwZWQgcmVsYXRpb24sIHNvIHJ1biBz ZXRfY2hlYXBlc3QoKS4KKwkJCQkgKi8KKwkJCQlpZiAoIWJtc19lcXVhbChqb2lucmVsLT5yZWxp ZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCQl7CisJCQkJCVJlbE9wdEluZm8gICAqcmVs X2dyb3VwZWQ7CisJCQkJCVJlbEFnZ0luZm8gICAqYWdnX2luZm87CisKKwkJCQkJcmVsX2dyb3Vw ZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwtPnJlbGlkcywKKwkJCQkJCQkJCQkJ CSAgICZhZ2dfaW5mbyk7CisJCQkJCWlmIChyZWxfZ3JvdXBlZCkKKwkJCQkJeworCQkJCQkJZ2Vu ZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCByZWxfZ3JvdXBlZCwgam9pbnJlbCwKKwkJCQkJCQkJ CQkJICAgYWdnX2luZm8pOworCQkJCQkJc2V0X2NoZWFwZXN0KHJlbF9ncm91cGVkKTsKKwkJCQkJ fQorCQkJCX0KKwogCQkJCS8qIEFic29yYiBuZXcgY2x1bXAgaW50byBvbGQgKi8KIAkJCQlvbGRf Y2x1bXAtPmpvaW5yZWwgPSBqb2lucmVsOwogCQkJCW9sZF9jbHVtcC0+c2l6ZSArPSBuZXdfY2x1 bXAtPnNpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA5MjE5ODE1 ZTNkLi4zNTllZWUzNDg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAg LTM4NTQsNiArMzg1NCwxMCBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAqcm9v dCwgaW50IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJICoKIAkJICogQWZ0 ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IgdGhlIGpvaW5yZWwsIHNvIHJ1 bgogCQkgKiBzZXRfY2hlYXBlc3QoKS4KKwkJICoKKwkJICogSW4gYWRkaXRpb24sIHdlIGFsc28g cnVuIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMoKSBmb3IgdGhlIGdyb3VwZWQKKwkJICogcmVsYXRp b24gb2YgZWFjaCBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBhbmQgcnVuIHNldF9jaGVhcGVzdCgp IGZvcgorCQkgKiB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhZnRlcndhcmRzLgogCQkgKi8KIAkJZm9y ZWFjaChsYywgcm9vdC0+am9pbl9yZWxfbGV2ZWxbbGV2XSkKIAkJewpAQCAtMzg3NCw2ICszODc4 LDI3IEBAIHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxz X25lZWRlZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJLyogRmluZCBhbmQgc2F2ZSB0aGUgY2hl YXBlc3QgcGF0aHMgZm9yIHRoaXMgcmVsICovCiAJCQlzZXRfY2hlYXBlc3QocmVsKTsKIAorCQkJ LyoKKwkJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIg Z2VuZXJhdGluZworCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3Vw ZWQgcmVsYXRpb24gb24gdG9wIG9mIHRoZQorCQkJICogcGF0aHMgb2YgdGhpcyByZWwuICBBZnRl ciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzIGZvcgorCQkJICogdGhlIGdyb3VwZWQg cmVsYXRpb24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqLworCQkJaWYgKCFibXNfZXF1 YWwocmVsLT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCXsKKwkJCQlSZWxPcHRJ bmZvICAgKnJlbF9ncm91cGVkOworCQkJCVJlbEFnZ0luZm8gICAqYWdnX2luZm87CisKKwkJCQly ZWxfZ3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsLT5yZWxpZHMsCisJCQkJCQkJ CQkJCSAgICZhZ2dfaW5mbyk7CisJCQkJaWYgKHJlbF9ncm91cGVkKQorCQkJCXsKKwkJCQkJZ2Vu ZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCByZWxfZ3JvdXBlZCwgcmVsLAorCQkJCQkJCQkJCSAg IGFnZ19pbmZvKTsKKwkJCQkJc2V0X2NoZWFwZXN0KHJlbF9ncm91cGVkKTsKKwkJCQl9CisJCQl9 CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC00 NzQyLDYgKzQ3NjcsMjkgQEAgZ2VuZXJhdGVfcGFydGl0aW9ud2lzZV9qb2luX3BhdGhzKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCWlmIChJU19EVU1NWV9SRUwoY2hpbGRf cmVsKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qg c2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGluZyBwYXJ0aWFsCisJCSAqIGFnZ3JlZ2F0 aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3Agb2YgdGhlIHBhdGhzIG9m CisJCSAqIHRoaXMgcGFydGl0aW9uZWQgY2hpbGQtam9pbi4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRv bmUgY3JlYXRpbmcgcGF0aHMKKwkJICogZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4g c2V0X2NoZWFwZXN0KCkuCisJCSAqLworCQlpZiAoIWJtc19lcXVhbChJU19PVEhFUl9SRUwocmVs KSA/CisJCQkJCSAgIHJlbC0+dG9wX3BhcmVudF9yZWxpZHMgOiByZWwtPnJlbGlkcywKKwkJCQkJ ICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQorCQl7CisJCQlSZWxPcHRJbmZvICAgKnJlbF9ncm91 cGVkOworCQkJUmVsQWdnSW5mbyAgICphZ2dfaW5mbzsKKworCQkJcmVsX2dyb3VwZWQgPSBmaW5k X2dyb3VwZWRfcmVsKHJvb3QsIGNoaWxkX3JlbC0+cmVsaWRzLAorCQkJCQkJCQkJCSAgICZhZ2df aW5mbyk7CisJCQlpZiAocmVsX2dyb3VwZWQpCisJCQl7CisJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9w YXRocyhyb290LCByZWxfZ3JvdXBlZCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJICAgYWdnX2luZm8p OworCQkJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJCQl9CisJCX0KKwogI2lmZGVmIE9Q VElNSVpFUl9ERUJVRwogCQlwcHJpbnQoY2hpbGRfcmVsKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2pvaW5yZWxzLmMKaW5kZXggZjNhOTQxMmQxOC4uYmExZDE1ZTg1YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCkBAIC0xNiwxMSArMTYsMTMgQEAKIAogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9hcHBlbmRpbmZvLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvam9pbmluZm8u aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv cGF0aHMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIAogCiBzdGF0 aWMgdm9pZCBtYWtlX3JlbHNfYnlfY2xhdXNlX2pvaW5zKFBsYW5uZXJJbmZvICpyb290LApAQCAt MzUsNiArMzcsOSBAQCBzdGF0aWMgYm9vbCBoYXNfbGVnYWxfam9pbmNsYXVzZShQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKIHN0YXRpYyBib29sIHJlc3RyaWN0aW9uX2lzX2Nv bnN0YW50X2ZhbHNlKExpc3QgKnJlc3RyaWN0bGlzdCwKIAkJCQkJCQkJCQkgIFJlbE9wdEluZm8g KmpvaW5yZWwsCiAJCQkJCQkJCQkJICBib29sIG9ubHlfcHVzaGVkX2Rvd24pOworc3RhdGljIHZv aWQgbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwxLAorCQkJCQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJ CQkJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3RyaWN0bGlzdCk7CiBz dGF0aWMgdm9pZCBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbDEsCiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVsMiwgUmVsT3B0SW5m byAqam9pbnJlbCwKIAkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5mbywgTGlzdCAqcmVz dHJpY3RsaXN0KTsKQEAgLTc3MSw2ICs3NzYsMTAgQEAgbWFrZV9qb2luX3JlbChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMikKIAkJcmV0dXJuIGpv aW5yZWw7CiAJfQogCisJLyogQnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRpb24gZm9yICdqb2lu cmVsJyBpZiBwb3NzaWJsZS4gKi8KKwltYWtlX2dyb3VwZWRfam9pbl9yZWwocm9vdCwgcmVsMSwg cmVsMiwgam9pbnJlbCwgc2ppbmZvLAorCQkJCQkJICByZXN0cmljdGxpc3QpOworCiAJLyogQWRk IHBhdGhzIHRvIHRoZSBqb2luIHJlbGF0aW9uLiAqLwogCXBvcHVsYXRlX2pvaW5yZWxfd2l0aF9w YXRocyhyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCiAJCQkJCQkJCXJlc3RyaWN0 bGlzdCk7CkBAIC04ODIsNiArODkxLDExNCBAQCBhZGRfb3V0ZXJfam9pbnNfdG9fcmVsaWRzKFBs YW5uZXJJbmZvICpyb290LCBSZWxpZHMgaW5wdXRfcmVsaWRzLAogCXJldHVybiBpbnB1dF9yZWxp ZHM7CiB9CiAKKy8qCisgKiBtYWtlX2dyb3VwZWRfam9pbl9yZWwKKyAqCSAgQnVpbGQgYSBncm91 cGVkIGpvaW4gcmVsYXRpb24gb3V0IG9mICdqb2lucmVsJyBpZiBlYWdlciBhZ2dyZWdhdGlvbiBp cworICoJICBwb3NzaWJsZSBhbmQgdGhlICdqb2lucmVsJyBjYW4gcHJvZHVjZSBncm91cGVkIHBh dGhzLgorICoKKyAqIFdlIGFsc28gZ2VuZXJhdGUgcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBm b3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gYnkKKyAqIGpvaW5pbmcgdGhlIGdyb3VwZWQgcGF0aHMg b2YgJ3JlbDEnIHRvIHRoZSBwbGFpbiBwYXRocyBvZiAncmVsMicsIG9yIGJ5CisgKiBqb2luaW5n IHRoZSBncm91cGVkIHBhdGhzIG9mICdyZWwyJyB0byB0aGUgcGxhaW4gcGF0aHMgb2YgJ3JlbDEn LgorICovCitzdGF0aWMgdm9pZAorbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpyZWwxLAorCQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdElu Zm8gKmpvaW5yZWwsCisJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3Ry aWN0bGlzdCkKK3sKKwlSZWxPcHRJbmZvCSAgICpyZWxfZ3JvdXBlZDsKKwlSZWxBZ2dJbmZvCSAg ICphZ2dfaW5mbyA9IE5VTEw7CisJUmVsT3B0SW5mbwkgICAqcmVsMV9ncm91cGVkOworCVJlbE9w dEluZm8JICAgKnJlbDJfZ3JvdXBlZDsKKwlib29sCQkJcmVsMV9lbXB0eTsKKwlib29sCQkJcmVs Ml9lbXB0eTsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIG5vIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBvciBncm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbiBpcyBub3Qg cG9zc2libGUuCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9PSBOSUwgfHwKKwkJ cm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBTZWUg aWYgd2UgYWxyZWFkeSBoYXZlIGEgZ3JvdXBlZCBqb2lucmVsIGZvciB0aGlzIGpvaW5yZWwuCisJ ICovCisJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwtPnJlbGlk cywgJmFnZ19pbmZvKTsKKworCS8qCisJICogQ29uc3RydWN0IGEgbmV3IFJlbE9wdEluZm8gZm9y IHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24gaWYgdGhlcmUgaXMgbm8KKwkgKiBleGlzdGluZyBv bmUuCisJICovCisJaWYgKHJlbF9ncm91cGVkID09IE5VTEwpCisJeworCQkvKgorCQkgKiBQcmVw YXJlIHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0 aGlzCisJCSAqIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlhZ2dfaW5mbyA9IGNyZWF0ZV9yZWxf YWdnX2luZm8ocm9vdCwgam9pbnJlbCk7CisJCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQkJcmV0 dXJuOworCisJCS8qIGJ1aWxkIGEgZ3JvdXBlZCByZWxhdGlvbiBvdXQgb2YgdGhlIHBsYWluIHJl bGF0aW9uICovCisJCXJlbF9ncm91cGVkID0gYnVpbGRfZ3JvdXBlZF9yZWwocm9vdCwgam9pbnJl bCk7CisJCXJlbF9ncm91cGVkLT5yZWx0YXJnZXQgPSBhZ2dfaW5mby0+dGFyZ2V0OworCQlyZWxf Z3JvdXBlZC0+cm93cyA9IGFnZ19pbmZvLT5ncm91cGVkX3Jvd3M7CisKKwkJLyoKKwkJICogTWFr ZSB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhdmFpbGFibGUgZm9yIGZ1cnRoZXIgam9pbmluZyBvciBm b3IKKwkJICogYWN0aW5nIGFzIHRoZSB1cHBlciByZWwgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQg b2YgcGFydGlhbAorCQkgKiBhZ2dyZWdhdGlvbi4KKwkJICovCisJCWFkZF9ncm91cGVkX3JlbChy b290LCByZWxfZ3JvdXBlZCwgYWdnX2luZm8pOworCX0KKworCUFzc2VydChhZ2dfaW5mbyAhPSBO VUxMKTsKKworCS8qCisJICogSWYgd2UndmUgYWxyZWFkeSBwcm92ZW4gdGhpcyBncm91cGVkIGpv aW4gcmVsYXRpb24gaXMgZW1wdHksIHdlIG5lZWRuJ3QKKwkgKiBjb25zaWRlciBhbnkgbW9yZSBw YXRocyBmb3IgaXQuCisJICovCisJaWYgKElTX0RVTU1ZX1JFTChyZWxfZ3JvdXBlZCkpCisJCXJl dHVybjsKKworCS8qIHJldHJpZXZlIHRoZSBncm91cGVkIHJlbGF0aW9ucyBmb3IgdGhlIHR3byBp bnB1dCByZWxzICovCisJcmVsMV9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCByZWwx LT5yZWxpZHMsIE5VTEwpOworCXJlbDJfZ3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwg cmVsMi0+cmVsaWRzLCBOVUxMKTsKKworCXJlbDFfZW1wdHkgPSAocmVsMV9ncm91cGVkID09IE5V TEwgfHwgSVNfRFVNTVlfUkVMKHJlbDFfZ3JvdXBlZCkpOworCXJlbDJfZW1wdHkgPSAocmVsMl9n cm91cGVkID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKHJlbDJfZ3JvdXBlZCkpOworCisJLyogTm90 aGluZyB0byBkbyBpZiB0aGVyZSdzIG5vIGdyb3VwZWQgcmVsYXRpb24uICovCisJaWYgKHJlbDFf ZW1wdHkgJiYgcmVsMl9lbXB0eSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBKb2luIG9mIHR3byBn cm91cGVkIHJlbGF0aW9ucyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4gIEluIHN1Y2ggYQor CSAqIGNhc2UsIGdyb3VwaW5nIG9mIG9uZSBzaWRlIHdvdWxkIGNoYW5nZSB0aGUgb2NjdXJyZW5j ZSBvZiB0aGUgb3RoZXIKKwkgKiBzaWRlJ3MgYWdncmVnYXRlIHRyYW5zaWVudCBzdGF0ZXMgb24g dGhlIGlucHV0IG9mIHRoZSBmaW5hbCBhZ2dyZWdhdGlvbi4KKwkgKiBUaGlzIGNhbiBiZSBoYW5k bGVkIGJ5IGFkanVzdGluZyB0aGUgdHJhbnNpZW50IHN0YXRlcywgYnV0IGl0J3Mgbm90CisJICog d29ydGggdGhlIGVmZm9ydCBmb3Igbm93LgorCSAqLworCWlmICghcmVsMV9lbXB0eSAmJiAhcmVs Ml9lbXB0eSkKKwkJcmV0dXJuOworCisJLyogZ2VuZXJhdGUgcGFydGlhbCBhZ2dyZWdhdGlvbiBw YXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gKi8KKwlpZiAoIXJlbDFfZW1wdHkpCisJewor CQlzZXRfam9pbnJlbF9zaXplX2VzdGltYXRlcyhyb290LCByZWxfZ3JvdXBlZCwgcmVsMV9ncm91 cGVkLCByZWwyLAorCQkJCQkJCQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJCXBvcHVsYXRl X2pvaW5yZWxfd2l0aF9wYXRocyhyb290LCByZWwxX2dyb3VwZWQsIHJlbDIsIHJlbF9ncm91cGVk LAorCQkJCQkJCQkJc2ppbmZvLCByZXN0cmljdGxpc3QpOworCX0KKwllbHNlIGlmICghcmVsMl9l bXB0eSkKKwl7CisJCXNldF9qb2lucmVsX3NpemVfZXN0aW1hdGVzKHJvb3QsIHJlbF9ncm91cGVk LCByZWwxLCByZWwyX2dyb3VwZWQsCisJCQkJCQkJCSAgIHNqaW5mbywgcmVzdHJpY3RsaXN0KTsK KwkJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsIHJlbDEsIHJlbDJfZ3JvdXBlZCwg cmVsX2dyb3VwZWQsCisJCQkJCQkJCQlzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJfQorfQorCiAv KgogICogcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzCiAgKgkgIEFkZCBwYXRocyB0byB0aGUg Z2l2ZW4gam9pbnJlbCBmb3IgZ2l2ZW4gcGFpciBvZiBqb2luaW5nIHJlbGF0aW9ucy4gVGhlCkBA IC0xNjcxLDYgKzE3ODgsMTEgQEAgdHJ5X3BhcnRpdGlvbndpc2Vfam9pbihQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMiwKIAkJCQkJCSBhZGp1c3Rf Y2hpbGRfcmVsaWRzKGpvaW5yZWwtPnJlbGlkcywKIAkJCQkJCQkJCQkJIG5hcHBpbmZvcywgYXBw aW5mb3MpKSk7CiAKKwkJLyogQnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRpb24gZm9yICdjaGls ZF9qb2lucmVsJyBpZiBwb3NzaWJsZSAqLworCQltYWtlX2dyb3VwZWRfam9pbl9yZWwocm9vdCwg Y2hpbGRfcmVsMSwgY2hpbGRfcmVsMiwKKwkJCQkJCQkgIGNoaWxkX2pvaW5yZWwsIGNoaWxkX3Nq aW5mbywKKwkJCQkJCQkgIGNoaWxkX3Jlc3RyaWN0bGlzdCk7CisKIAkJLyogQW5kIG1ha2UgcGF0 aHMgZm9yIHRoZSBjaGlsZCBqb2luICovCiAJCXBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhy b290LCBjaGlsZF9yZWwxLCBjaGlsZF9yZWwyLAogCQkJCQkJCQkJY2hpbGRfam9pbnJlbCwgY2hp bGRfc2ppbmZvLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDAzMjgxODQy M2YuLjY0ZThlNWJiOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTIy NSw3ICsyMjUsNiBAQCBzdGF0aWMgdm9pZCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJCQkgIFJlbE9wdElu Zm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCQkJCSAgY29uc3QgQWdnQ2xhdXNlQ29z dHMgKmFnZ19jb3N0cywKIAkJCQkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRhICpnZCwKLQkJCQkJ CQkJCSAgZG91YmxlIGROdW1Hcm91cHMsCiAJCQkJCQkJCQkgIEdyb3VwUGF0aEV4dHJhRGF0YSAq ZXh0cmEpOwogc3RhdGljIFJlbE9wdEluZm8gKmNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhz KFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJIFJlbE9wdEluZm8gKmdyb3VwZWRfcmVs LApAQCAtMzkxMCw5ICszOTA5LDcgQEAgY3JlYXRlX29yZGluYXJ5X2dyb3VwaW5nX3BhdGhzKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJICAgR3JvdXBQ YXRoRXh0cmFEYXRhICpleHRyYSwKIAkJCQkJCQkgICBSZWxPcHRJbmZvICoqcGFydGlhbGx5X2dy b3VwZWRfcmVsX3ApCiB7Ci0JUGF0aAkgICAqY2hlYXBlc3RfcGF0aCA9IGlucHV0X3JlbC0+Y2hl YXBlc3RfdG90YWxfcGF0aDsKIAlSZWxPcHRJbmZvICpwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPSBO VUxMOwotCWRvdWJsZQkJZE51bUdyb3VwczsKIAlQYXJ0aXRpb253aXNlQWdncmVnYXRlVHlwZSBw YXR5cGUgPSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FOwogCiAJLyoKQEAgLTM5OTMsMjMg KzM5OTAsMjEgQEAgY3JlYXRlX29yZGluYXJ5X2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAKIAkvKiBHYXRoZXIgYW55IHBhcnRpYWxseSBn cm91cGVkIHBhcnRpYWwgcGF0aHMuICovCiAJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhcnRpYWxfcGF0aGxpc3QpCi0JewogCQlnYXRoZXJfZ3Jv dXBpbmdfcGF0aHMocm9vdCwgcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKLQkJc2V0X2NoZWFwZXN0 KHBhcnRpYWxseV9ncm91cGVkX3JlbCk7Ci0JfQogCiAJLyoKLQkgKiBFc3RpbWF0ZSBudW1iZXIg b2YgZ3JvdXBzLgorCSAqIE5vdyBjaG9vc2UgdGhlIGJlc3QgcGF0aChzKSBmb3IgcGFydGlhbGx5 X2dyb3VwZWRfcmVsLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBub24tcGFydGlhbCBwYXRocyBj YW4gY29tZSBlaXRoZXIgZnJvbSB0aGUgR2F0aGVyIGFib3ZlIG9yCisJICogZnJvbSBlYWdlciBh Z2dyZWdhdGlvbi4KIAkgKi8KLQlkTnVtR3JvdXBzID0gZ2V0X251bWJlcl9vZl9ncm91cHMocm9v dCwKLQkJCQkJCQkJCSAgY2hlYXBlc3RfcGF0aC0+cm93cywKLQkJCQkJCQkJCSAgZ2QsCi0JCQkJ CQkJCQkgIGV4dHJhLT50YXJnZXRMaXN0KTsKKwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYm IHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCisJCXNldF9jaGVhcGVzdChwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwpOwogCiAJLyogQnVpbGQgZmluYWwgZ3JvdXBpbmcgcGF0aHMgKi8KIAlh ZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKHJvb3QsIGlucHV0X3JlbCwgZ3JvdXBlZF9yZWwsCiAJ CQkJCQkJICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIGFnZ19jb3N0cywgZ2QsCi0JCQkJCQkJICBk TnVtR3JvdXBzLCBleHRyYSk7CisJCQkJCQkJICBleHRyYSk7CiAKIAkvKiBHaXZlIGEgaGVscGZ1 bCBlcnJvciBpZiB3ZSBmYWlsZWQgdG8gZmluZCBhbnkgaW1wbGVtZW50YXRpb24gKi8KIAlpZiAo Z3JvdXBlZF9yZWwtPnBhdGhsaXN0ID09IE5JTCkKQEAgLTY4NzcsMTYgKzY4NzIsNDIgQEAgYWRk X3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5w dXRfcmVsLAogCQkJCQkJICBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAkJCQkJCSAgUmVsT3B0 SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJICBjb25zdCBBZ2dDbGF1c2VDb3N0 cyAqYWdnX2Nvc3RzLAotCQkJCQkJICBncm91cGluZ19zZXRzX2RhdGEgKmdkLCBkb3VibGUgZE51 bUdyb3VwcywKKwkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRhICpnZCwKIAkJCQkJCSAgR3JvdXBQ YXRoRXh0cmFEYXRhICpleHRyYSkKIHsKIAlRdWVyeQkgICAqcGFyc2UgPSByb290LT5wYXJzZTsK IAlQYXRoCSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRo OworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGggPSBOVUxMOwogCUxp c3RDZWxsICAgKmxjOwogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5H X0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+ZmxhZ3MgJiBH Uk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAJTGlzdAkgICAqaGF2aW5nUXVhbCA9IChMaXN0 ICopIGV4dHJhLT5oYXZpbmdRdWFsOwogCUFnZ0NsYXVzZUNvc3RzICphZ2dfZmluYWxfY29zdHMg PSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKKwlkb3VibGUJCWROdW1Hcm91cHMgPSAwOworCWRv dWJsZQkJZE51bUZpbmFsR3JvdXBzID0gMDsKKworCS8qCisJICogRXN0aW1hdGUgbnVtYmVyIG9m IGdyb3VwcyBmb3Igbm9uLXNwbGl0IGFnZ3JlZ2F0aW9uLgorCSAqLworCWROdW1Hcm91cHMgPSBn ZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJICBjaGVhcGVzdF9wYXRoLT5yb3dz LAorCQkJCQkJCQkJICBnZCwKKwkJCQkJCQkJCSAgZXh0cmEtPnRhcmdldExpc3QpOworCisJaWYg KHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhsaXN0 KQorCXsKKwkJY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCA9CisJCQlwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CisKKwkJLyoKKwkJICogRXN0aW1hdGUg bnVtYmVyIG9mIGdyb3VwcyBmb3IgZmluYWwgcGhhc2Ugb2YgcGFydGlhbCBhZ2dyZWdhdGlvbi4K KwkJICovCisJCWROdW1GaW5hbEdyb3VwcyA9CisJCQlnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290 LAorCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aC0+cm93cywKKwkJCQkJ CQkJIGdkLAorCQkJCQkJCQkgZXh0cmEtPnRhcmdldExpc3QpOworCX0KIAogCWlmIChjYW5fc29y dCkKIAl7CkBAIC02OTk4LDcgKzcwMTksNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCXBhdGggPSBtYWtl X29yZGVyZWRfcGF0aChyb290LAogCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkJ CSBwYXRoLAotCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3Rh bF9wYXRoLAorCQkJCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCwKIAkJ CQkJCQkJCQkJIGluZm8tPnBhdGhrZXlzKTsKIAogCQkJCQlpZiAocGF0aCA9PSBOVUxMKQpAQCAt NzAxNSw3ICs3MDM2LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJIGluZm8tPmNsYXVzZXMs CiAJCQkJCQkJCQkJCQkgaGF2aW5nUXVhbCwKIAkJCQkJCQkJCQkJCSBhZ2dfZmluYWxfY29zdHMs Ci0JCQkJCQkJCQkJCQkgZE51bUdyb3VwcykpOworCQkJCQkJCQkJCQkJIGROdW1GaW5hbEdyb3Vw cykpOwogCQkJCQllbHNlCiAJCQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKIAkJ CQkJCQkJIGNyZWF0ZV9ncm91cF9wYXRoKHJvb3QsCkBAIC03MDIzLDcgKzcwNDQsNyBAQCBhZGRf cGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1 dF9yZWwsCiAJCQkJCQkJCQkJCQkgICBwYXRoLAogCQkJCQkJCQkJCQkJICAgaW5mby0+Y2xhdXNl cywKIAkJCQkJCQkJCQkJCSAgIGhhdmluZ1F1YWwsCi0JCQkJCQkJCQkJCQkgICBkTnVtR3JvdXBz KSk7CisJCQkJCQkJCQkJCQkgICBkTnVtRmluYWxHcm91cHMpKTsKIAogCQkJCX0KIAkJCX0KQEAg LTcwNjUsMTkgKzcwODYsMTcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkgKi8KIAkJaWYgKHBhcnRpYWxseV9n cm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhsaXN0KQogCQl7Ci0JCQlQ YXRoCSAgICpwYXRoID0gcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRo OwotCiAJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKIAkJCQkJIGNyZWF0ZV9hZ2df cGF0aChyb290LAogCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAotCQkJCQkJCQkJIHBhdGgsCisJCQkJ CQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCwKIAkJCQkJCQkJCSBncm91cGVk X3JlbC0+cmVsdGFyZ2V0LAogCQkJCQkJCQkJIEFHR19IQVNIRUQsCiAJCQkJCQkJCQkgQUdHU1BM SVRfRklOQUxfREVTRVJJQUwsCiAJCQkJCQkJCQkgcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xhdXNl LAogCQkJCQkJCQkJIGhhdmluZ1F1YWwsCiAJCQkJCQkJCQkgYWdnX2ZpbmFsX2Nvc3RzLAotCQkJ CQkJCQkJIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCSBkTnVtRmluYWxHcm91cHMpKTsKIAkJfQog CX0KIApAQCAtNzEyNyw2ICs3MTQ2LDIxIEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhz KFBsYW5uZXJJbmZvICpyb290LAogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdS T1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+Zmxh Z3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAKKwkvKgorCSAqIFRoZSBwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwgY291bGQgaGF2ZSBiZWVuIGFscmVhZHkgY3JlYXRlZCBkdWUgdG8gZWFn ZXIKKwkgKiBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPSBmaW5k X2dyb3VwZWRfcmVsKHJvb3QsIGlucHV0X3JlbC0+cmVsaWRzLCBOVUxMKTsKKwlBc3NlcnQoZW5h YmxlX2VhZ2VyX2FnZ3JlZ2F0ZSB8fCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPT0gTlVMTCk7CisK KwkvKgorCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHBhcnRpYWxseV9ncm91cGVkX3JlbCBj cmVhdGVkIGJ5IGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgZHVtbXkuICBJbiB0aGlzIGNhc2Ug d2UganVzdCBzZXQgaXQgdG8gTlVMTC4gIEl0IG1pZ2h0IGJlCisJICogY3JlYXRlZCBhZ2FpbiBi eSB0aGUgZm9sbG93aW5nIGxvZ2ljIGlmIHBvc3NpYmxlLgorCSAqLworCWlmIChwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwgJiYgSVNfRFVNTVlfUkVMKHBhcnRpYWxseV9ncm91cGVkX3JlbCkpCisJCXBh cnRpYWxseV9ncm91cGVkX3JlbCA9IE5VTEw7CisKIAkvKgogCSAqIENvbnNpZGVyIHdoZXRoZXIg d2Ugc2hvdWxkIGdlbmVyYXRlIHBhcnRpYWxseSBhZ2dyZWdhdGVkIG5vbi1wYXJ0aWFsCiAJICog cGF0aHMuICBXZSBjYW4gb25seSBkbyB0aGlzIGlmIHdlIGhhdmUgYSBub24tcGFydGlhbCBwYXRo LCBhbmQgb25seSBpZgpAQCAtNzE1MCwxOSArNzE4NCwyNyBAQCBjcmVhdGVfcGFydGlhbF9ncm91 cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBJZiB3ZSBjYW4ndCBwYXJ0aWFsbHkg YWdncmVnYXRlIHBhcnRpYWwgcGF0aHMsIGFuZCB3ZSBjYW4ndCBwYXJ0aWFsbHkKIAkgKiBhZ2dy ZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIHRoZW4gZG9uJ3QgYm90aGVyIGNyZWF0aW5nIHRoZSBu ZXcKIAkgKiBSZWxPcHRJbmZvIGF0IGFsbCwgdW5sZXNzIHRoZSBjYWxsZXIgc3BlY2lmaWVkIGZv cmNlX3JlbF9jcmVhdGlvbi4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgcGFydGlhbGx5X2dyb3Vw ZWRfcmVsIGNvdWxkIGhhdmUgYmVlbiBhbHJlYWR5IGNyZWF0ZWQgYW5kCisJICogcG9wdWxhdGVk IHdpdGggYXBwcm9wcmlhdGUgcGF0aHMgYnkgZWFnZXIgYWdncmVnYXRpb24uCiAJICovCiAJaWYg KGNoZWFwZXN0X3RvdGFsX3BhdGggPT0gTlVMTCAmJgogCQljaGVhcGVzdF9wYXJ0aWFsX3BhdGgg PT0gTlVMTCAmJgorCQkocGFydGlhbGx5X2dyb3VwZWRfcmVsID09IE5VTEwgfHwKKwkJIHBhcnRp YWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QgPT0gTklMKSAmJgogCQkhZm9yY2VfcmVsX2NyZWF0 aW9uKQogCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogQnVpbGQgYSBuZXcgdXBwZXIgcmVsYXRp b24gdG8gcmVwcmVzZW50IHRoZSByZXN1bHQgb2YgcGFydGlhbGx5Ci0JICogYWdncmVnYXRpbmcg dGhlIHJvd3MgZnJvbSB0aGUgaW5wdXQgcmVsYXRpb24uCi0JICovCi0JcGFydGlhbGx5X2dyb3Vw ZWRfcmVsID0gZmV0Y2hfdXBwZXJfcmVsKHJvb3QsCi0JCQkJCQkJCQkJCVVQUEVSUkVMX1BBUlRJ QUxfR1JPVVBfQUdHLAotCQkJCQkJCQkJCQlncm91cGVkX3JlbC0+cmVsaWRzKTsKKwkgKiBhZ2dy ZWdhdGluZyB0aGUgcm93cyBmcm9tIHRoZSBpbnB1dCByZWxhdGlvbi4gIFRoZSByZWxhdGlvbiBt YXkgYWxyZWFkeQorCSAqIGV4aXN0IGR1ZSB0byBlYWdlciBhZ2dyZWdhdGlvbiwgaW4gd2hpY2gg Y2FzZSB3ZSBkb24ndCBuZWVkIHRvIGNyZWF0ZQorCSAqIGl0LgorCSAqLworCWlmIChwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwgPT0gTlVMTCkKKwkJcGFydGlhbGx5X2dyb3VwZWRfcmVsID0gZmV0Y2hf dXBwZXJfcmVsKHJvb3QsCisJCQkJCQkJCQkJCQlVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHRywK KwkJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLT5yZWxpZHMpOwogCXBhcnRpYWxseV9ncm91cGVkX3Jl bC0+Y29uc2lkZXJfcGFyYWxsZWwgPQogCQlncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxsZWw7 CiAJcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5yZWxvcHRraW5kID0gZ3JvdXBlZF9yZWwtPnJlbG9w dGtpbmQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggNmJhNGVi YTIyNC4uMDhkZTc3ZDQzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv YXBwZW5kaW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8u YwpAQCAtNDk1LDYgKzQ5NSw2NiBAQCBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9k ZSAqbm9kZSwKIAkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CiAJfQogCisJLyoKKwkgKiBXZSBo YXZlIHRvIHByb2Nlc3MgUmVsQWdnSW5mbyBub2RlcyBzcGVjaWFsbHkuCisJICovCisJaWYgKElz QShub2RlLCBSZWxBZ2dJbmZvKSkKKwl7CisJCVJlbEFnZ0luZm8gKm9sZGluZm8gPSAoUmVsQWdn SW5mbyAqKSBub2RlOworCQlSZWxBZ2dJbmZvICpuZXdpbmZvID0gbWFrZU5vZGUoUmVsQWdnSW5m byk7CisKKwkJLyogQ29weSBhbGwgZmxhdC1jb3BpYWJsZSBmaWVsZHMgKi8KKwkJbWVtY3B5KG5l d2luZm8sIG9sZGluZm8sIHNpemVvZihSZWxBZ2dJbmZvKSk7CisKKwkJbmV3aW5mby0+cmVsaWRz ID0gYWRqdXN0X2NoaWxkX3JlbGlkcyhvbGRpbmZvLT5yZWxpZHMsCisJCQkJCQkJCQkJCSAgY29u dGV4dC0+bmFwcGluZm9zLAorCQkJCQkJCQkJCQkgIGNvbnRleHQtPmFwcGluZm9zKTsKKworCQlu ZXdpbmZvLT50YXJnZXQgPSAoUGF0aFRhcmdldCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRy c19tdXRhdG9yKChOb2RlICopIG9sZGluZm8tPnRhcmdldCwKKwkJCQkJCQkJCQkgICBjb250ZXh0 KTsKKworCQluZXdpbmZvLT5hZ2dfaW5wdXQgPSAoUGF0aFRhcmdldCAqKQorCQkJYWRqdXN0X2Fw cGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9sZGluZm8tPmFnZ19pbnB1dCwKKwkJCQkJ CQkJCQkgICBjb250ZXh0KTsKKworCQluZXdpbmZvLT5ncm91cF9jbGF1c2VzID0gKExpc3QgKikK KwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5ncm91 cF9jbGF1c2VzLAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCW5ld2luZm8tPmdyb3VwX2V4 cHJzID0gKExpc3QgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAq KSBvbGRpbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQlyZXR1 cm4gKE5vZGUgKikgbmV3aW5mbzsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgdG8gcHJvY2VzcyBQ YXRoVGFyZ2V0IG5vZGVzIHNwZWNpYWxseS4KKwkgKi8KKwlpZiAoSXNBKG5vZGUsIFBhdGhUYXJn ZXQpKQorCXsKKwkJUGF0aFRhcmdldCAqb2xkdGFyZ2V0ID0gKFBhdGhUYXJnZXQgKikgbm9kZTsK KwkJUGF0aFRhcmdldCAqbmV3dGFyZ2V0ID0gbWFrZU5vZGUoUGF0aFRhcmdldCk7CisKKwkJLyog Q29weSBhbGwgZmxhdC1jb3BpYWJsZSBmaWVsZHMgKi8KKwkJbWVtY3B5KG5ld3RhcmdldCwgb2xk dGFyZ2V0LCBzaXplb2YoUGF0aFRhcmdldCkpOworCisJCWlmIChvbGR0YXJnZXQtPnNvcnRncm91 cHJlZnMpCisJCXsKKwkJCVNpemUJbmJ5dGVzID0gbGlzdF9sZW5ndGgob2xkdGFyZ2V0LT5leHBy cykgKiBzaXplb2YoSW5kZXgpOworCisJCQluZXd0YXJnZXQtPmV4cHJzID0gKExpc3QgKikKKwkJ CQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkdGFyZ2V0LT5leHBy cywKKwkJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJCW5ld3RhcmdldC0+c29ydGdyb3VwcmVm cyA9IChJbmRleCAqKSBwYWxsb2MobmJ5dGVzKTsKKwkJCW1lbWNweShuZXd0YXJnZXQtPnNvcnRn cm91cHJlZnMsIG9sZHRhcmdldC0+c29ydGdyb3VwcmVmcywgbmJ5dGVzKTsKKwkJfQorCisJCXJl dHVybiAoTm9kZSAqKSBuZXd0YXJnZXQ7CisJfQorCiAJLyoKIAkgKiBOT1RFOiB3ZSBkbyBub3Qg bmVlZCB0byByZWN1cnNlIGludG8gc3VibGlua3MsIGJlY2F1c2UgdGhleSBzaG91bGQKIAkgKiBh bHJlYWR5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gc3VicGxhbnMgYmVmb3JlIHdlIHNlZSB0aGVt LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IGIxNGY5OWE5ZWEuLjYwODdh MTRhNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTI4MzMsOCArMjgz Myw2IEBAIGNyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCkKIAkJbWFya19wYXJ0aWFsX2FnZ3JlZihhZ2dyZWYsIEFHR1NQTElUX0lOSVRJQUxfU0VS SUFMKTsKIAogCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhwciAqKSBhZ2dy ZWYsIDApOwotCi0JCXJlc3VsdC0+YWdnX2V4cHJzID0gbGFwcGVuZChyZXN1bHQtPmFnZ19leHBy cywgYWdncmVmKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAxYTFhMWI2ZGZi Li4yYjM3ODY2NWJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTExNiw5ICsxMTE2LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogICogImdyb3VwX2NsYXVzZXMiLCAiZ3JvdXBfZXhw cnMiIGFuZCAiZ3JvdXBfcGF0aGtleXMiIGFyZSBsaXN0cyBvZgogICogU29ydEdyb3VwQ2xhdXNl LCB0aGUgY29ycmVzcG9uZGluZyBncm91cGluZyBleHByZXNzaW9ucyBhbmQgUGF0aEtleQogICog cmVzcGVjdGl2ZWx5LgotICoKLSAqICJhZ2dfZXhwcnMiIGlzIGEgbGlzdCBvZiBBZ2dyZWYgbm9k ZXMgZm9yIHRoZSBhZ2dyZWdhdGlvbiBvZiB0aGUgcmVsYXRpb24ncwotICogcGF0aHMuCiAgKi8K IHR5cGVkZWYgc3RydWN0IFJlbEFnZ0luZm8KIHsKQEAgLTExNTQsOSArMTE1MSw2IEBAIHR5cGVk ZWYgc3RydWN0IFJlbEFnZ0luZm8KIAlMaXN0CSAgICpncm91cF9leHByczsKIAkvKiBhIGxpc3Qg b2YgUGF0aEtleXMgKi8KIAlMaXN0CSAgICpncm91cF9wYXRoa2V5czsKLQotCS8qIGEgbGlzdCBv ZiBBZ2dyZWYgbm9kZXMgKi8KLQlMaXN0CSAgICphZ2dfZXhwcnM7CiB9IFJlbEFnZ0luZm87CiAK IC8qCi0tIAoyLjMxLjAKCg== --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0008-Add-test-cases.patch" Content-Disposition: attachment; filename="v7-0008-Add-test-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweou41x7 RnJvbSA5OWZlZWM3NDhhYzliMTJlODk3M2JkMTBhNzBiMzgyNzRlNjgxN2EzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzo0MToyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg OC85XSBBZGQgdGVzdCBjYXNlcwoKLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2Vy X2FnZ3JlZ2F0ZS5vdXQgfCAxMjkzICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsICAgICAgfCAgMTkyICsrKwogMyBmaWxlcyBjaGFuZ2Vk LCAxNDg2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdhMjgyODc1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKQEAgLTAsMCArMSwx MjkzIEBACistLQorLS0gRUFHRVIgQUdHUkVHQVRJT04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdn cmVnYXRpb24gZG93biBiZWxvdyBqb2luCistLQorLS0gRW5hYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9u LCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdh dGUgVE8gb247CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QxIChhIGludCwgYiBpbnQsIGMgZG91 YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QyIChhIGludCwgYiBpbnQs IGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QzIChhIGludCwg YiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VM RUNUIGksIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8g ZWFnZXJfYWdnX3QyIFNFTEVDVCBpLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MyBTRUxFQ1QgaSUxMCwgaSUxMCwgaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitBTkFMWVpFIGVhZ2VyX2FnZ190MTsKK0FOQUxZ WkUgZWFnZXJfYWdnX3QyOworQU5BTFlaRSBlYWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdl ciBhZ2dyZWdhdGlvbiBvdmVyIGJhc2UgcmVsCistLQorLS0gUGVyZm9ybSBzY2FuIG9mIGEgdGFi bGUsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0g YW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdl cl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0 OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAg ICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6 IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEu YSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9 IHQyLmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 MSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAo UEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJ QUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEs IHQyLmIsIHQyLmMKKygxOCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZ IHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIg fCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgor IDggfCA1MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBz b3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2Fn Z190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5h IE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFs aXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAg S2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBh dmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMs IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5jLCB0Mi5iCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9V UCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYK KyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1 MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7 CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLQorLS0gUGVy Zm9ybSBqb2luIG9mIHRhYmxlcywgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhl IG90aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBl YWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5h OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcoKHQyLmMgKyB0My5jKSkKKyAg IEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBB UlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwg YXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQy LmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0 MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFS VElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIs IFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDMuYywgdDIu YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDMuYSA9IHQy LmEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190MyB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0My5hLCB0My5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5h CisoMjUgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9h Z2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9h Z2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEg fCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQorIDMgfCA1MDEKKyA0IHwgNTAz CisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUxMQorIDkgfCA1MTMKKyg5IHJv d3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBl bmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2Vy X2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0g dDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVn YXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyArIHQzLmMpKQorICAgR3JvdXAgS2V5OiB0 MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQy LmMgKyB0My5jKSkpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0 My5jKSkpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2ZygodDIu YyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZn KCh0Mi5jICsgdDMuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy LmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQzLmMsIHQyLmIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLmMsIHQzLmMsIHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQzLmEgPSB0Mi5hKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dDMgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDMuYSwgdDMuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIuYywgdDIuYiwgdDIuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIuYywgdDIuYiwgdDIuYQorKDI4IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQz LmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0 Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NworIDIgfCA0OTkKKyAz IHwgNTAxCisgNCB8IDUwMworIDUgfCA1MDUKKyA2IHwgNTA3CisgNyB8IDUwOQorIDggfCA1MTEK KyA5IHwgNTEzCisoOSByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKy0tCistLSBUZXN0 IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIG91dGVyIGpvaW4KKy0tCistLSBFbnN1 cmUgYWdncmVnYXRpb24gY2FuIGJlIHB1c2hlZCBkb3duIHRvIHRoZSBub24tbnVsbGFibGUgc2lk ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBG Uk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAg R3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFS VElBTCBhdmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhh c2ggUmlnaHQgSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmco dDIuYykpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5j KSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDE4 IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklH SFQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRF UiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMg fCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMwor IDkgfCA1MDQKKyAgIHwgNTA1CisoMTAgcm93cykKKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNh bm5vdCBiZSBwdXNoZWQgZG93biB0byB0aGUgbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIg T1JERVIgQlkgdDIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi5iLCAoYXZnKHQy LmMpKQorICAgU29ydCBLZXk6IHQyLmIKKyAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICBP dXRwdXQ6IHQyLmIsIGF2Zyh0Mi5jKQorICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAg ICAtPiAgSGFzaCBSaWdodCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIHQyLmMK KyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLmIgPSB0MS5iKQorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIuYSwgdDIuYiwgdDIuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYgorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEuYgorKDE1IHJvd3MpCisKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykg RlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisgYiB8IGF2ZyAKKy0tLSstLS0tLQor IDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUw MQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorICAgfCAgICAKKygxMCByb3dzKQorCist LQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJhbGxlbCBwbGFu cworLS0KK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0PTA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29z dD0wOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK1NFVCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyPTQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUg R3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6 IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAg ICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3QxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQx LmMKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDIxIHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIu YykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQy LmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAx IHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEK KyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QyOwor RFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBm b3IgcGFydGl0aW9ud2lzZSBqb2luCistLQorLS0gRW5hYmxlIHBhcnRpdGlvbndpc2UgYWdncmVn YXRlLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2FnZ3JlZ2F0ZSBUTyB0cnVlOworLS0gRW5hYmxlIHBhcnRpdGlvbndpc2Ugam9pbiwgd2hp Y2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2lu IFRPIHRydWU7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjEoeCBpbnQsIHkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDEgUEFSVElU SU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFU RSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9w MyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMih4IGludCwgeSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSh5KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMSBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWIyX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworSU5T RVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAzMCwgaSAlIDIwIEZST00gZ2VuZXJh dGVfc2VyaWVzKDAsIDI5OSwgMikgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWIyIFNFTEVD VCBpICUgMjAsIGkgJSAzMCBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCAyOTksIDMpIGk7CitBTkFM WVpFIGVhZ2VyX2FnZ190YWIxOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMjsKKy0tIFdoZW4gR1JP VVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBl YWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54 LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190 YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAg U29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0MS55KSwgY291bnQo KikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0o dDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFS VElBTCBzdW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCB0MS55CisgICAgICAg ICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8x LngsIHN1bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8x LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0 Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEu eSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCB0MV8xLnkKKyAgICAgICAgIC0+ ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg c3VtKHQxXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAor ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8y LngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHQxXzIueQorKDQ5IHJvd3MpCisKK1NF TEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVh Z2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKyB4ICB8IHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICA1 MDAgfCAgIDEwMAorICA2IHwgMTEwMCB8ICAgMTAwCisgMTIgfCAgNzAwIHwgICAxMDAKKyAxOCB8 IDEzMDAgfCAgIDEwMAorIDI0IHwgIDkwMCB8ICAgMTAwCisoNSByb3dzKQorCistLSBHUk9VUCBC WSBoYXZpbmcgb3RoZXIgbWF0Y2hpbmcga2V5CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQx LCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55IE9SREVS IEJZIHQyLnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIueSwgKHN1bSh0MS55KSksIChj b3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0Mi55CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCBzdW0o dDEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLnkKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwg KFBBUlRJQUwgc3VtKHQxLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Mi55ID0gdDEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDEgdDIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxLngsIFBBUlRJQUwgc3VtKHQxLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEg dDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwg dDEueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg IE91dHB1dDogdDJfMS55LCBzdW0odDFfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMS55CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQx XzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjJfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBQQVJU SUFMIHN1bSh0MV8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgdDFfMS54 CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnksIHN1bSh0MV8yLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8yLnkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMi55LCAoUEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiMl9wMyB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwg c3VtKHQxXzIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi55LCB0MV8yLngKKyg0 OSByb3dzKQorCitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2Fn Z190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0 Mi55IE9SREVSIEJZIHQyLnk7CisgeSAgfCBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLSstLS0t LS0tCisgIDAgfCAgNTAwIHwgICAxMDAKKyAgNiB8IDExMDAgfCAgIDEwMAorIDEyIHwgIDcwMCB8 ICAgMTAwCisgMTggfCAxMzAwIHwgICAxMDAKKyAyNCB8ICA5MDAgfCAgIDEwMAorKDUgcm93cykK KworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVn YXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZ IHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDEwIE9SREVSIEJZIHQyLng7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIu eCwgKHN1bSh0MS54KSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0Mi54CisgICAtPiAgRmlu YWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiB0Mi54LCBzdW0odDEueCksIGNv dW50KCopCisgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgIEZpbHRlcjogKGF2Zyh0 MS54KSA+ICcxMCc6Om51bWVyaWMpCisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBB UlRJQUwgc3VtKHQxXzEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8x LngpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi Ml9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDJf MS55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLngpKSwgKFBBUlRJQUwgY291 bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMS54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMS54LCBQQVJUSUFMIHN1bSh0MV8xLngpLCBQQVJUSUFMIGNvdW50KCop LCBQQVJUSUFMIGF2Zyh0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MV8xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFM IHN1bSh0MV8yLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMi54KSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIg dDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQyXzIueQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0odDFfMi54KSksIChQQVJUSUFMIGNvdW50KCop KSwgKFBBUlRJQUwgYXZnKHQxXzIueCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi54KSwgUEFSVElBTCBjb3VudCgqKSwgUEFS VElBTCBhdmcodDFfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCAoUEFSVElBTCBzdW0o dDFfMy54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzMueCkpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnkgPSB0MV8zLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0Ml8zLnkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzMueCwgKFBBUlRJQUwgc3VtKHQxXzMueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQ QVJUSUFMIGF2Zyh0MV8zLngpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8zLngsIFBBUlRJQUwgc3VtKHQxXzMueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwg YXZnKHQxXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDFfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisoNDQgcm93cykKKworU0VMRUNUIHQyLngsIHN1 bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIg dDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gMTAg T1JERVIgQlkgdDIueDsKKyB4ICB8IHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tKy0tLS0tLS0K KyAgMiB8ICA2MDAgfCAgICA1MAorICA0IHwgMTIwMCB8ICAgIDUwCisgIDggfCAgOTAwIHwgICAg NTAKKyAxMiB8ICA2MDAgfCAgICA1MAorIDE0IHwgMTIwMCB8ICAgIDUwCisgMTggfCAgOTAwIHwg ICAgNTAKKyg2IHJvd3MpCisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdncmVnYXRpb24gb3ZlciBq b2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBK T0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEg dDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSgodDIueSArIHQzLnkpKSkKKyAgIFNv cnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0oKHQyLnkgKyB0My55KSkK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0oKHQy LnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS54ID0gdDIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCBQQVJUSUFMIHN1bSgodDIu eSArIHQzLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQz LnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgIC0+ICBG aW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3Vt KCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKQorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngs IChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNf MS55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0 M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEu eSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0M18xCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEu eSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJfMi55ICsgdDNfMi55KSkKKyAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0 M18yLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueCwg UEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjFfcDMgdDNfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorKDcwIHJvd3MpCisKK1NFTEVDVCB0 MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLngg PSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICBzdW0gIAorLS0tLSst LS0tLS0tCisgIDAgfCAxMDAwMAorICAyIHwgMTQwMDAKKyAgNCB8IDE4MDAwCisgIDYgfCAyMjAw MAorICA4IHwgMjYwMDAKKyAxMCB8IDEwMDAwCisgMTIgfCAxNDAwMAorIDE0IHwgMTgwMDAKKyAx NiB8IDIyMDAwCisgMTggfCAyNjAwMAorIDIwIHwgMTAwMDAKKyAyMiB8IDE0MDAwCisgMjQgfCAx ODAwMAorIDI2IHwgMjIwMDAKKyAyOCB8IDI2MDAwCisoMTUgcm93cykKKworLS0gcGFydGlhbCBh Z2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdn X3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2Vy X2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0My55 LCBzdW0oKHQyLnkgKyB0My55KSkKKyAgIEdyb3VwIEtleTogdDMueQorICAgLT4gIFNvcnQKKyAg ICAgICAgIE91dHB1dDogdDMueSwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAg ICAgU29ydCBLZXk6IHQzLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCAoUEFSVElB TCBzdW0oKHQyXzEueSArIHQzXzEueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDJfMS54ID0gdDFfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3Jv dXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0 Ml8xLngsIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQzXzEueSwgdDJfMS54LCB0M18xLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDNfMS55LCB0Ml8xLngsIHQzXzEueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQzXzEueSwgdDJfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDNfMS55LCB0Ml8xLngsIHQz XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0Ml8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQz XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0M18xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDFfMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIu eSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0g dDFfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0Ml8yLngsIHQzXzIu eCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQzXzIueSwgdDJfMi54LCB0M18yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzIueSwgdDNfMi55LCB0Ml8yLngsIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU29ydCBLZXk6IHQzXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDNfMi55LCB0Ml8yLngsIHQzXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDNf Mi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDIgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMy55LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkp KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDFfMy54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0Ml8zLngsIHQzXzMueCwgUEFSVElBTCBz dW0oKHQyXzMueSArIHQzXzMueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQzXzMueSwgdDJfMy54LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U29ydCBLZXk6IHQzXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueSwgdDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiMV9wMyB0Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMV9wMyB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh YjFfcDMgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8z LngKKyg3MyByb3dzKQorCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2Vy X2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBl YWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CisgeSAgfCAgc3VtICAKKy0tLS0rLS0tLS0tLQorICAwIHwgIDc1MDAKKyAgMiB8IDEzNTAw CisgIDQgfCAxOTUwMAorICA2IHwgMjU1MDAKKyAgOCB8IDMxNTAwCisgMTAgfCAyMjUwMAorIDEy IHwgMjg1MDAKKyAxNCB8IDM0NTAwCisgMTYgfCA0MDUwMAorIDE4IHwgNDY1MDAKKygxMCByb3dz KQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitE Uk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIyOworLS0KKy0tIFRlc3Qgd2l0aCBtdWx0aS1sZXZlbCBw YXJ0aXRpb25pbmcgc2NoZW1lCistLQorQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWwoeCBp bnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMiBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApIFBBUlRJVElP TiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MxIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiBQQVJUSVRJT04gT0YgZWFnZXJf YWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9w MyBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMjUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWJfbWxfcDNfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBG Uk9NICgyNSkgVE8gKDMwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWJfbWwgU0VMRUNUIGkg JSAzMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitBTkFMWVpFIGVh Z2VyX2FnZ190YWJfbWw7CistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFn Z3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54 IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 MS54LCAoc3VtKHQyLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ax IHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LngsIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCBQQVJUSUFMIHN1bSh0Mi55KSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBzdW0odDJfMS55KSwgY291 bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJ QUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElB TCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIFBBUlRJQUwgc3VtKHQyXzEueSksIFBBUlRJQUwgY291 bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgLT4gIEZpbmFsaXpl IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDJfMi55 KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg KFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAo UEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIFBBUlRJQUwgc3VtKHQyXzIueSksIFBBUlRJ QUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54LCBzdW0o dDJfMy55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8z CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf My54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIFBBUlRJQUwgc3VtKHQyXzMueSks IFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54 LCBzdW0odDJfNC55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIFBBUlRJQUwgc3VtKHQy XzQueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorKDc5 IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAg QlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tCisgIDAgfCAgICAgMCB8ICAxMDg5CisgIDEgfCAgMTE1NiB8ICAxMTU2CisgIDIg fCAgMjMxMiB8ICAxMTU2CisgIDMgfCAgMzQ2OCB8ICAxMTU2CisgIDQgfCAgNDYyNCB8ICAxMTU2 CisgIDUgfCAgNTc4MCB8ICAxMTU2CisgIDYgfCAgNjkzNiB8ICAxMTU2CisgIDcgfCAgODA5MiB8 ICAxMTU2CisgIDggfCAgOTI0OCB8ICAxMTU2CisgIDkgfCAxMDQwNCB8ICAxMTU2CisgMTAgfCAx MTU2MCB8ICAxMTU2CisgMTEgfCAxMTk3OSB8ICAxMDg5CisgMTIgfCAxMzA2OCB8ICAxMDg5Cisg MTMgfCAxNDE1NyB8ICAxMDg5CisgMTQgfCAxNTI0NiB8ICAxMDg5CisgMTUgfCAxNjMzNSB8ICAx MDg5CisgMTYgfCAxNzQyNCB8ICAxMDg5CisgMTcgfCAxODUxMyB8ICAxMDg5CisgMTggfCAxOTYw MiB8ICAxMDg5CisgMTkgfCAyMDY5MSB8ICAxMDg5CisgMjAgfCAyMTc4MCB8ICAxMDg5CisgMjEg fCAyMjg2OSB8ICAxMDg5CisgMjIgfCAyMzk1OCB8ICAxMDg5CisgMjMgfCAyNTA0NyB8ICAxMDg5 CisgMjQgfCAyNjEzNiB8ICAxMDg5CisgMjUgfCAyNzIyNSB8ICAxMDg5CisgMjYgfCAyODMxNCB8 ICAxMDg5CisgMjcgfCAyOTQwMyB8ICAxMDg5CisgMjggfCAzMDQ5MiB8ICAxMDg5CisgMjkgfCAz MTU4MSB8ICAxMDg5CisoMzAgcm93cykKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBu b3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRp dGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS55LCBzdW0odDIu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTb3J0CisgICBPdXRwdXQ6IHQxLnksIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0 IEtleTogdDEueQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1 dDogdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0MS55Cisg ICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9 IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueSwgdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQy XzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzIueSwgdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzIueCwgUEFSVElBTCBzdW0odDJfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMl9zMSB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9 IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzMueSwgdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzMueCwgUEFSVElBTCBzdW0odDJfMy55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMl9zMiB0Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueSwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQu eCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzQueSwgdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80 LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzQueCwgUEFSVElBTCBzdW0odDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wM19zMSB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzUueSwgKFBBUlRJQUwgc3VtKHQyXzUueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQx XzUueCA9IHQyXzUueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV81CisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzUueSwgdDFfNS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml81LngsIChQQVJUSUFMIHN1bSh0 Ml81LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzUueCwgUEFSVElBTCBzdW0odDJfNS55KSwgUEFSVElBTCBjb3VudCgqKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml81LngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wM19zMiB0Ml81CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzUueSwgdDJfNS54CisoNjcgcm93cykKKworU0VMRUNUIHQxLnksIHN1 bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdn X3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7Cisg eSAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwg IDEwODkKKyAgMSB8ICAxMTU2IHwgIDExNTYKKyAgMiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAz NDY4IHwgIDExNTYKKyAgNCB8ICA0NjI0IHwgIDExNTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAg NiB8ICA2OTM2IHwgIDExNTYKKyAgNyB8ICA4MDkyIHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDEx NTYKKyAgOSB8IDEwNDA0IHwgIDExNTYKKyAxMCB8IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5 IHwgIDEwODkKKyAxMiB8IDEzMDY4IHwgIDEwODkKKyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8 IDE1MjQ2IHwgIDEwODkKKyAxNSB8IDE2MzM1IHwgIDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkK KyAxNyB8IDE4NTEzIHwgIDEwODkKKyAxOCB8IDE5NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwg IDEwODkKKyAyMCB8IDIxNzgwIHwgIDEwODkKKyAyMSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIz OTU4IHwgIDEwODkKKyAyMyB8IDI1MDQ3IHwgIDEwODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAy NSB8IDI3MjI1IHwgIDEwODkKKyAyNiB8IDI4MzE0IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEw ODkKKyAyOCB8IDMwNDkyIHwgIDEwODkKKyAyOSB8IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQor CistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwg YWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBz dW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBl YWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0 MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54 LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAg IC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0 My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQz LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi54LCB0My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSwgUEFSVElBTCBj b3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnks IHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1 bSgodDJfMS55ICsgdDNfMS55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9 IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55 ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18x LnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMl9zMSB0M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJf Mi55ICsgdDNfMi55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIu eAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNf Mi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMi54LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMl9zMiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIHN1bSgodDJfMy55ICsg dDNfMy55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy54LCB0M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMy54LCB0M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8z LngsIHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNf czEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MSB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIHN1bSgodDJfNC55ICsgdDNfNC55 KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80Lngs IChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfNC54LCB0M180LngsIChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf NC54LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngsIHQz XzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0Ml80LnggPSB0M180LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJf NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml80LnksIHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0M180 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzXzQueSwgdDNfNC54CisoMTE0IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSAr IHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2df dGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54 ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgIHN1bSAgIHwgY291 bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8 ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwg MzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYg fCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8 IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDEx IHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIg fCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAx NiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMy IHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3Cisg MjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEw MiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNwor IDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0 NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworLS0gcGFydGlh bCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnks IHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lO IGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0My55LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAg U29ydCBLZXk6IHQzLnkKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBP dXRwdXQ6IHQzLnksIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAgICAgIEdyb3Vw IEtleTogdDMueQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJUSUFMIHN1bSgo dDJfMS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0Ml8xLngs IHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQyXzEu eCwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSksIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDNfMS55LCB0 Ml8xLngsIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnksIHQzXzEueSwgdDJfMS54LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AxIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIu eSArIHQzXzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDFfMgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDJfMi54LCB0 M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0Ml8yLngs IHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQzXzIueSwgdDJf Mi54LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 LCB0M18yLnksIHQyXzIueCwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDJfczEgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMl9zMSB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgKFBBUlRJQUwgc3VtKCh0 Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQxXzMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQyXzMu eCwgdDNfMy54LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDJf My54LCB0M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0M18zLnks IHQyXzMueCwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzMueSwgdDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AyX3MyIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDJfczIgdDNfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIChQQVJUSUFMIHN1 bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV80CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0 Ml80LngsIHQzXzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180Lnks IHQyXzQueCwgdDNfNC54LCBQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSksIFBBUlRJQUwg Y291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDNf NC55LCB0Ml80LngsIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml80LnksIHQzXzQueSwgdDJfNC54LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQueCA9IHQzXzQueCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wM19zMSB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AzX3MxIHQzXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNS55LCAoUEFSVElB TCBzdW0oKHQyXzUueSArIHQzXzUueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV81LnggPSB0Ml81LngpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV81LngKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzUu eSwgdDJfNS54LCB0M181LngsIChQQVJUSUFMIHN1bSgodDJfNS55ICsgdDNfNS55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf NS55LCB0Ml81LngsIHQzXzUueCwgUEFSVElBTCBzdW0oKHQyXzUueSArIHQzXzUueSkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQzXzUueSwgdDJfNS54LCB0M181LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfNS55LCB0M181LnksIHQyXzUueCwgdDNfNS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml81LnggPSB0M181LngpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml81LnksIHQyXzUueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNS55LCB0M181LngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wM19zMiB0M181CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzUueSwgdDNfNS54CisoMTAyIHJvd3MpCisK K1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190 YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CisgeSAgfCAgIHN1bSAgIHwgY291bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAg fCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8 IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1 IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYg fCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAx MCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4 IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3Cisg MTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1 OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNwor IDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEy MjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcK KyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQw NTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3 CisoMzAgcm93cykKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKaW5kZXggOTY5Y2VkOTk0Zi4uMDYzNjJhZTFlNyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTksNyArMTE5LDcgQEAgdGVzdDogcGxhbmNhY2hlIGxp bWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNp b24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVl ZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0K LXRlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fc3BsaXQgcGFydGl0aW9uX2pvaW4gcGFy dGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dy ZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6 ZSBzdGF0cyBwcmVkaWNhdGUKK3Rlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fc3BsaXQg cGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4 aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4g Y29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgZWFnZXJfYWdncmVnYXRlCiAKICMg ZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJy ZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv ZWFnZXJfYWdncmVnYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li40MDUwZTRkZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFn ZXJfYWdncmVnYXRlLnNxbApAQCAtMCwwICsxLDE5MiBAQAorLS0KKy0tIEVBR0VSIEFHR1JFR0FU SU9OCistLSBUZXN0IHdlIGNhbiBwdXNoIGFnZ3JlZ2F0aW9uIGRvd24gYmVsb3cgam9pbgorLS0K KworLS0gRW5hYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2Fi bGVkLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgVE8gb247CisKK0NSRUFURSBUQUJMRSBl YWdlcl9hZ2dfdDEgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdDIgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0NS RUFURSBUQUJMRSBlYWdlcl9hZ2dfdDMgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9u KTsKKworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QxIFNFTEVDVCBpLCBpLCBpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBTRUxFQ1QgaSwg aSUxMCwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdl cl9hZ2dfdDMgU0VMRUNUIGklMTAsIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MClpOworCitBTkFMWVpFIGVhZ2VyX2FnZ190MTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QyOworQU5B TFlaRSBlYWdlcl9hZ2dfdDM7CisKKworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3Zl ciBiYXNlIHJlbAorLS0KKworLS0gUGVyZm9ybSBzY2FuIG9mIGEgdGFibGUsIGFnZ3JlZ2F0ZSB0 aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRo ZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5h LCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04g dDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2 Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5i ID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKKy0tIFByb2R1Y2UgcmVzdWx0 cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJP TSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JP VVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVh Z2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBC WSB0MS5hIE9SREVSIEJZIHQxLmE7CisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworCisKKy0tCist LSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tCisKKy0tIFBlcmZvcm0g am9pbiBvZiB0YWJsZXMsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhl ciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJf YWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NF TEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFn ZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEg PSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworLS0gUHJvZHVjZSByZXN1bHRz IHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMu YykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQy LmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRF UiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2df dDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2df dDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNF VCBlbmFibGVfaGFzaGFnZzsKKworCistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9u IHdvcmtzIGZvciBvdXRlciBqb2luCistLQorCistLSBFbnN1cmUgYWdncmVnYXRpb24gY2FuIGJl IHB1c2hlZCBkb3duIHRvIHRoZSBub24tbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBS SUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQx IFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbm5vdCBiZSBwdXNoZWQg ZG93biB0byB0aGUgbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFn ZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsK K1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7 CisKKworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3IgcGFyYWxs ZWwgcGxhbnMKKy0tCisKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0PTA7CitTRVQgcGFyYWxsZWxf dHVwbGVfY29zdD0wOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK1NFVCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyPTQ7CisKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9J TiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0 MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7 CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0 OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXI7CisKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDE7CitEUk9Q IFRBQkxFIGVhZ2VyX2FnZ190MjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QzOworCisKKy0tCist LSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIGZvciBwYXJ0aXRpb253aXNlIGpvaW4KKy0tCisKKy0t IEVuYWJsZSBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNh YmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgVE8gdHJ1ZTsKKy0tIEVu YWJsZSBwYXJ0aXRpb253aXNlIGpvaW4sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitT RVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOworCitDUkVBVEUgVEFCTEUgZWFn ZXJfYWdnX3RhYjEoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYjFfcDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQ QVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3Rh YjEgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dGFiMih4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh5KTsKK0NSRUFURSBUQUJMRSBl YWdlcl9hZ2dfdGFiMl9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AyIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VM RUNUIGkgJSAzMCwgaSAlIDIwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDI5OSwgMikgaTsKK0lO U0VSVCBJTlRPIGVhZ2VyX2FnZ190YWIyIFNFTEVDVCBpICUgMjAsIGkgJSAzMCBGUk9NIGdlbmVy YXRlX3NlcmllcygwLCAyOTksIDMpIGk7CisKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYjE7CitBTkFM WVpFIGVhZ2VyX2FnZ190YWIyOworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBm dWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKSBG Uk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIu eSBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBj b3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0 MS54ID0gdDIueSBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKKy0tIEdST1VQIEJZIGhh dmluZyBvdGhlciBtYXRjaGluZyBrZXkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NF TEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVh Z2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkgT1JERVIgQlkg dDIueTsKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3Rh YjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkg T1JERVIgQlkgdDIueTsKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7 IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50 KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLngg PSB0Mi55IEdST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDEwIE9SREVSIEJZIHQyLng7 CitTRUxFQ1QgdDIueCwgc3VtKHQxLngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQx LCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklO RyBhdmcodDEueCkgPiAxMCBPUkRFUiBCWSB0Mi54OworCistLSBDaGVjayB3aXRoIGVhZ2VyIGFn Z3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lO IGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEg dDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190 YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0g cGFydGlhbCBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00g ZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBK T0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIg QlkgdDMueTsKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3Rh YjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2Fn Z190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKK1JF U0VUIGVuYWJsZV9oYXNoYWdnOworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIxOworRFJPUCBU QUJMRSBlYWdlcl9hZ2dfdGFiMjsKKworCistLQorLS0gVGVzdCB3aXRoIG11bHRpLWxldmVsIHBh cnRpdGlvbmluZyBzY2hlbWUKKy0tCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbCh4IGlu dCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dGFiX21sX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyIFBBUlRJVElPTiBP RiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCkgUEFSVElUSU9O IEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczEgUEFSVElU SU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MyIFBBUlRJVElPTiBPRiBlYWdlcl9h Z2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7CitDUkVBVEUgVEFCTEUg ZWFnZXJfYWdnX3RhYl9tbF9wMyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJM RSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3Az IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgyNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3Rh Yl9tbF9wM19zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZS T00gKDI1KSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYl9tbCBTRUxFQ1QgaSAl IDMwLCBpICUgMzAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworQU5BTFlaRSBl YWdlcl9hZ2dfdGFiX21sOworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxs IGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9N IGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0 Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSks IGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwg dDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBXaGVu IEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBw ZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21s IHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55 IE9SREVSIEJZIHQxLnk7CitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54 IEdST1VQIEJZIHQxLnkgT1JERVIgQlkgdDEueTsKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dy ZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikg RlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54 ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkg dDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50 KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04g dDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQ IEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNv dW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIg T04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdS T1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkp LCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMu eCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3Rh Yl9tbDsKLS0gCjIuMzEuMAoK --0000000000001731af0618de45d9 Content-Type: application/octet-stream; name="v7-0009-Add-README.patch" Content-Disposition: attachment; filename="v7-0009-Add-README.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lweoug078 RnJvbSA4OTdhMmIxYzE2MmUzNDBiOGY2YWVhMTZhZGE2OGVkNDBlN2JmNzI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzo0MTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjcg OS85XSBBZGQgUkVBRE1FCgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgfCA4OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4OCBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSBi L3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUKaW5kZXggMmFiNGYzZGJmMy4uZGFlN2I4N2Yz MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvUkVBRE1FCkBAIC0xNDk3LDMgKzE0OTcsOTEgQEAgYnJlYWtpbmcgZG93 biBhZ2dyZWdhdGlvbiBvciBncm91cGluZyBvdmVyIGEgcGFydGl0aW9uZWQgcmVsYXRpb24gaW50 bwogYWdncmVnYXRpb24gb3IgZ3JvdXBpbmcgb3ZlciBpdHMgcGFydGl0aW9ucyBpcyBjYWxsZWQg cGFydGl0aW9ud2lzZQogYWdncmVnYXRpb24uICBFc3BlY2lhbGx5IHdoZW4gdGhlIHBhcnRpdGlv biBrZXlzIG1hdGNoIHRoZSBHUk9VUCBCWSBjbGF1c2UsCiB0aGlzIGNhbiBiZSBzaWduaWZpY2Fu dGx5IGZhc3RlciB0aGFuIHRoZSByZWd1bGFyIG1ldGhvZC4KKworRWFnZXIgYWdncmVnYXRpb24K Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG9idmlvdXMgd2F5IHRvIGV2YWx1YXRlIGFnZ3Jl Z2F0ZXMgaXMgdG8gZXZhbHVhdGUgdGhlIEZST00gY2xhdXNlIG9mIHRoZQorU1FMIHF1ZXJ5ICh0 aGlzIGlzIHdoYXQgcXVlcnlfcGxhbm5lciBkb2VzKSBhbmQgdXNlIHRoZSByZXN1bHRpbmcgcGF0 aHMgYXMgdGhlCitpbnB1dCBvZiBBZ2cgbm9kZS4gSG93ZXZlciwgaWYgdGhlIGdyb3VwcyBhcmUg bGFyZ2UgZW5vdWdoLCBpdCBtYXkgYmUgbW9yZQorZWZmaWNpZW50IHRvIGFwcGx5IHRoZSBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIHRvIHRoZSBvdXRwdXQgb2YgYmFzZSByZWxhdGlvbgorc2NhbiwgYW5k IGZpbmFsaXplIGl0IHdoZW4gd2UgaGF2ZSBhbGwgcmVsYXRpb25zIG9mIHRoZSBxdWVyeSBqb2lu ZWQ6CisKKyBFWFBMQUlOIChDT1NUUyBPRkYpCisgU0VMRUNUIGEuaSwgYXZnKGIueSkKKyBGUk9N IGEgSk9JTiBiIE9OIGEuaSA9IGIuagorIEdST1VQIEJZIGEuaTsKKworIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgIEdyb3VwIEtleTogYS5pCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogYi5q CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYgorICAgICAgICAgLT4gIEluZGV4IE9u bHkgU2NhbiB1c2luZyBhX3BrZXkgb24gYQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGkg PSBiLmopCisKK1RodXMgdGhlIGpvaW4gYWJvdmUgdGhlIHBhcnRpYWwgYWdncmVnYXRlIG5vZGUg cmVjZWl2ZXMgZmV3ZXIgaW5wdXQgcm93cywgYW5kCitzbyB0aGUgbnVtYmVyIG9mIG91dGVyLXRv LWlubmVyIHBhaXJzIG9mIHR1cGxlcyB0byBiZSBjaGVja2VkIGNhbiBiZQorc2lnbmlmaWNhbnRs eSBsb3dlciwgd2hpY2ggY2FuIGluIHR1cm4gbGVhZCB0byBjb25zaWRlcmFibHkgbG93ZXIgam9p biBjb3N0LgorCitOb3RlIHRoYXQgdGhlIEdST1VQIEJZIGV4cHJlc3Npb24gbWlnaHQgbm90IGJl IHVzZWZ1bCBmb3IgdGhlIHBhcnRpYWwKK2FnZ3JlZ2F0ZS4gSW4gdGhlIGV4YW1wbGUgYWJvdmUs IHRoZSBhZ2dyZWdhdGUgYXZnKGIueSkgcmVmZXJlbmNlcyB0YWJsZSAiYiIsCitidXQgdGhlIEdS T1VQIEJZIGV4cHJlc3Npb24gbWVudGlvbnMgImEiLiBIb3dldmVyLCB0aGUgZXF1aXZhbGVuY2Ug Y2xhc3Mge2EuaSwKK2Iuan0gYWxsb3dzIHVzIHRvIHVzZSB0aGUgYi5qIGNvbHVtbiBhcyBhIGdy b3VwaW5nIGtleSBmb3IgdGhlIHBhcnRpYWwKK2FnZ3JlZ2F0aW9uIG9mIHRoZSAiYiIgdGFibGUu IFRoZSBlcXVpdmFsZW5jZSBjbGFzcyBtZWNoYW5pc20gaXMgc3VpdGFibGUKK2JlY2F1c2UgaXQn cyBkZXNpZ25lZCB0byBkZXJpdmUgam9pbiBjbGF1c2VzLCBhbmQgYXQgdGhlIHNhbWUgdGltZSB0 aGUgam9pbgorY2xhdXNlcyBkZXRlcm1pbmUgdGhlIGNob2ljZSBvZiBncm91cGluZyBjb2x1bW5z IG9mIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZTogdGhlCitvbmx5IHdheSBmb3IgdGhlIHBhcnRpYWwg YWdncmVnYXRlIHRvIHByb3ZpZGUgdXBwZXIgam9pbihzKSB3aXRoIGlucHV0IHZhbHVlcworaXMg dG8gaGF2ZSB0aGUgam9pbiBpbnB1dCBleHByZXNzaW9uKHMpIGluIHRoZSBncm91cGluZyBrZXk7 IGJlc2lkZXMgZ3JvdXBpbmcKK2NvbHVtbnMsIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZSBjYW4gb25s eSBwcm9kdWNlIHRoZSB0cmFuc2llbnQgc3RhdGVzIG9mIHRoZQorYWdncmVnYXRlIGZ1bmN0aW9u cywgYnV0IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZmVyZW5jZWQgYnkgdGhlIEpP SU4KK2NsYXVzZXMuCisKK1JlZ2FyZGluZyBjb3JyZWN0bmVzcywgam9pbiBub2RlIGNvbnNpZGVy cyB0aGUgb3V0cHV0IG9mIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZQordG8gYmUgZXF1aXZhbGVudCB0 byB0aGUgb3V0cHV0IG9mIGEgcGxhaW4gKG5vbi1hZ2dyZWdhdGVkKSByZWxhdGlvbiBzY2FuLiBU aGF0CitpcywgYSBncm91cCAoaS5lLiBhIHJvdyBvZiB0aGUgcGFydGlhbCBhZ2dyZWdhdGUgb3V0 cHV0KSBtYXRjaGVzIHRoZSBvdGhlcgorc2lkZSBvZiB0aGUgam9pbiBpZiBhbmQgb25seSBpZiBl YWNoIHJvdyBvZiB0aGUgbm9uLWFnZ3JlZ2F0ZSByZWxhdGlvbgorZG9lcy4gSW4gb3RoZXIgd29y ZHMsIGFsbCByb3dzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBncm91cCBoYXZlIHRoZSBzYW1lIHZh bHVlCitvZiB0aGUgam9pbiBjb2x1bW5zIChBcyBtZW50aW9uZWQgYWJvdmUsIGEgam9pbiBjYW5u b3QgcmVmZXJlbmNlIG90aGVyIG91dHB1dAorZXhwcmVzc2lvbnMgb2YgdGhlIHBhcnRpYWwgYWdn cmVnYXRlIHRoYW4gdGhlIGdyb3VwaW5nIGV4cHJlc3Npb25zLikuCisKK0hvd2V2ZXIsIHRoZXJl J3MgYSByZXN0cmljdGlvbiBmcm9tIHRoZSBhZ2dyZWdhdGUncyBwZXJzcGVjdGl2ZTogdGhlIGFn Z3JlZ2F0ZQorY2Fubm90IGJlIHB1c2hlZCBkb3duIGlmIGFueSBjb2x1bW4gcmVmZXJlbmNlZCBi eSBlaXRoZXIgZ3JvdXBpbmcgZXhwcmVzc2lvbgorb3IgYWdncmVnYXRlIGZ1bmN0aW9uIGNhbiBi ZSBzZXQgdG8gTlVMTCBieSBhbiBvdXRlciBqb2luIGFib3ZlIHRoZSByZWxhdGlvbgordG8gd2hp Y2ggd2Ugd2FudCB0byBhcHBseSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbi4gVGhlIHBvaW50IGlz IHRoYXQgdGhvc2UKK05VTEwgdmFsdWVzIHdvdWxkIG5vdCBhcHBlYXIgb24gdGhlIGlucHV0IG9m IHRoZSBwdXNoZWQtZG93biwgc28gaXQgY291bGQKK2VpdGhlciBwdXQgdGhlIHJvd3MgaW50byBn cm91cHMgaW4gYSBkaWZmZXJlbnQgd2F5IHRoYW4gdGhlIGFnZ3JlZ2F0ZSBhdCB0aGUKK3RvcCBv ZiB0aGUgcGxhbiwgb3IgaXQgY291bGQgY29tcHV0ZSB3cm9uZyB2YWx1ZXMgb2YgdGhlIGFnZ3Jl Z2F0ZSBmdW5jdGlvbnMuCisKK0Jlc2lkZXMgYmFzZSByZWxhdGlvbiwgdGhlIGFnZ3JlZ2F0aW9u IGNhbiBhbHNvIGJlIHB1c2hlZCBkb3duIHRvIGpvaW46CisKKyBFWFBMQUlOIChDT1NUUyBPRkYp CisgU0VMRUNUIGEuaSwgYXZnKGIueSArIGMueikKKyBGUk9NIGEgSk9JTiBiIE9OIGEuaSA9IGIu agorICAgICAgICBKT0lOIGMgT04gYi5qID0gYy5pCisgR1JPVVAgQlkgYS5pOworCisgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBhLmkKKyAgIC0+ICBOZXN0ZWQgTG9vcAor ICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiBiLmoKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKGIuaiA9IGMuaSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBiCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGMKKyAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNj YW4gdXNpbmcgYV9wa2V5IG9uIGEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpID0gYi5q KQorCitXaGV0aGVyIHRoZSBBZ2cgbm9kZSBpcyBjcmVhdGVkIG91dCBvZiBiYXNlIHJlbGF0aW9u IG9yIG91dCBvZiBqb2luLCBpdCdzCithZGRlZCB0byBhIHNlcGFyYXRlIFJlbE9wdEluZm8gdGhh dCB3ZSBjYWxsICJncm91cGVkIHJlbGF0aW9uIi4gR3JvdXBlZAorcmVsYXRpb24gY2FuIGJlIGpv aW5lZCB0byBhIG5vbi1ncm91cGVkIHJlbGF0aW9uLCB3aGljaCByZXN1bHRzIGluIGEgZ3JvdXBl ZAorcmVsYXRpb24gdG9vLiBKb2luIG9mIHR3byBncm91cGVkIHJlbGF0aW9ucyBkb2VzIG5vdCBz ZWVtIHRvIGJlIHZlcnkgdXNlZnVsCithbmQgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisK K0lmIHF1ZXJ5X3BsYW5uZXIgcHJvZHVjZXMgYSBncm91cGVkIHJlbGF0aW9uIHRoYXQgY29udGFp bnMgdmFsaWQgcGF0aHMsIHRoZXNlCithcmUgc2ltcGx5IGFkZGVkIHRvIHRoZSBVUFBFUlJFTF9Q QVJUSUFMX0dST1VQX0FHRyByZWxhdGlvbi4gRnVydGhlcgorcHJvY2Vzc2luZyBvZiB0aGVzZSBw YXRocyB0aGVuIGRvZXMgbm90IGRpZmZlciBmcm9tIHByb2Nlc3Npbmcgb2Ygb3RoZXIKK3BhcnRp YWxseSBncm91cGVkIHBhdGhzLgotLSAKMi4zMS4wCgo= --0000000000001731af0618de45d9--