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 1ruUU1-005jsd-Sn for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Apr 2024 09:43:11 +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 1ruUU1-000Fwu-3F for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Apr 2024 09:43:09 +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 1ruUTz-000Fwl-Vp for pgsql-hackers@lists.postgresql.org; Wed, 10 Apr 2024 09:43:08 +0000 Received: from mail-yw1-x1132.google.com ([2607:f8b0:4864:20::1132]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1ruUTw-002A1y-To for pgsql-hackers@postgresql.org; Wed, 10 Apr 2024 09:43:06 +0000 Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-61816fc256dso28673347b3.0 for ; Wed, 10 Apr 2024 02:43:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712742184; x=1713346984; 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=8OJOtgodrE2BFWwtWeOQOD7e5clgq88XB7Hios+dWPQ=; b=PYJz0animzCVq2eigcwtzwcGsrIEVRkXL1w9iiMuSDt8RuI0JqVI9zuFpLq1wjZmyx QyyA0AJO6crKo5WLUPav4MaAWadkQJSpcY1cmMvg4wSYSmR9T9de1oWmmvQSo0ic+LZz znLDZ0hxCxH28Mf1tho+v0S2edT8m90nwaEMND/q2lN8BBbqCK8b/XhDEohJm4iUJLKO 9Lw9MoUimOIzJZxVZREk/xUozE59Zplg4dT8Hwe9vN8wo6GlgsuIJIrj0jhGaWYFHkDb C+tFXlpoLxohRsWEcP/5ufIR3MJW1j/yJtfqzfD/oODwtW4gdD7MPLZ8DemiIjUajNzj QmsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712742184; x=1713346984; 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=8OJOtgodrE2BFWwtWeOQOD7e5clgq88XB7Hios+dWPQ=; b=WrR/zXlNvwIpcsJ+EGI2elFTOhhw17ndkaLcl+ifZNvB8fPwbbX88IWA5goOlvN28n 1eOIYnzD5waUo0mk62KDPWiAPIMwlsNNEWTrrqmD81qFoHopW6B1uTHPmFWOjIho+npR 0t9WKddztRwlhLtGO3JeqOEqIAgoJY1EB4gGCInh2paolMLoZ0ZbbSO/QNKTlzTj9rJm Z3asIMEnI0bn/9YS1ZVk8nJCxSyxt3+MWU8eEWvGg1TlushtoRzCFg1T1mnLt+c4fFKk d95fLB+ZXdHWvuaGISSogQmzzStGiFAMb6m9npkCZH45EnLz/QqJqGOm8hP+u5Ae9EtY zmUw== X-Gm-Message-State: AOJu0YzCc67GdxzQHxavLdVx044Z7v8S+JO/x+ZuX2HXRAedwjX9Z9Wh 1iHW28QtIHu2NX62gc/kL9za7aoHUBr4dr/Kf/3SKT8dI5/EbejjS72jQupmjbkcbaBnBbPTTm1 qf9/sxiH4iWlBzafR1VCjWHa9bKw= X-Google-Smtp-Source: AGHT+IHDuANbp7+vmYlafGBW5ZH4vNwQT4DsgGtOTA84FQySBfkyxvMU3qb2EsyV4V1gadJzbpOzOnqL0pTQbsDbIiQ= X-Received: by 2002:a05:6902:151:b0:dc6:ff32:aae2 with SMTP id p17-20020a056902015100b00dc6ff32aae2mr1879818ybh.63.1712742183907; Wed, 10 Apr 2024 02:43:03 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Wed, 10 Apr 2024 17:42:52 +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="00000000000076d1e60615badd73" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000076d1e60615badd73 Content-Type: multipart/alternative; boundary="00000000000076d1e40615badd71" --00000000000076d1e40615badd71 Content-Type: text/plain; charset="UTF-8" There is a conflict in the parallel_schedule file. So here is another rebase. Nothing else has changed. Thanks Richard --00000000000076d1e40615badd71 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
There is a conflict in the parallel_schedule file.=C2=A0 S= o here is another
rebase.=C2=A0 Nothing else has changed.

Thanks<= br>Richard
--00000000000076d1e40615badd71-- --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0001-Introduce-RelInfoList-structure.patch" Content-Disposition: attachment; filename="v5-0001-Introduce-RelInfoList-structure.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmepw00 RnJvbSBlM2E2ZDNhODRiNGE1MjEzZGQ5MzIyNGUxM2NmNTViNmZiZWMxMWRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxOSBGZWIgMjAyNCAxNToxNjo1MSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg MS85XSBJbnRyb2R1Y2UgUmVsSW5mb0xpc3Qgc3RydWN0dXJlCgpUaGlzIGNvbW1pdCBpbnRyb2R1 Y2VzIHRoZSBSZWxJbmZvTGlzdCBzdHJ1Y3R1cmUsIHdoaWNoIGVuY2Fwc3VsYXRlcwpib3RoIGEg bGlzdCBhbmQgYSBoYXNoIHRhYmxlLCBzbyB0aGF0IHdlIGNhbiBsZXZlcmFnZSB0aGUgaGFzaCB0 YWJsZSBmb3IKZmFzdGVyIGxvb2t1cHMgbm90IG9ubHkgZm9yIGpvaW4gcmVsYXRpb25zIGJ1dCBh bHNvIGZvciB1cHBlciByZWxhdGlvbnMuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZh bC5jIHwgIDIwICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAgfCAg IDcgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMgIHwgICA1ICstCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICB8IDE2NCArKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICB8ICAz MSArKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCAxNDJkY2ZjOTk1Li5mNDZm YzYwNGI0IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwor 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 bGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCBj YzUxYWUxNzU3Li5mZmM2ZWRkNmM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMKQEAgLTM0MTUsOSArMzQxNSwxMCBAQCBtYWtlX3JlbF9mcm9tX2pvaW5saXN0KFBsYW5uZXJJ bmZvICpyb290LCBMaXN0ICpqb2lubGlzdCkKICAqIG5lZWRlZCBmb3IgdGhlc2UgcGF0aHMgbmVl ZCBoYXZlIGJlZW4gaW5zdGFudGlhdGVkLgogICoKICAqIE5vdGUgdG8gcGx1Z2luIGF1dGhvcnM6 IHRoZSBmdW5jdGlvbnMgaW52b2tlZCBkdXJpbmcgc3RhbmRhcmRfam9pbl9zZWFyY2goKQotICog bW9kaWZ5IHJvb3QtPmpvaW5fcmVsX2xpc3QgYW5kIHJvb3QtPmpvaW5fcmVsX2hhc2guICBJZiB5 b3Ugd2FudCB0byBkbyBtb3JlCi0gKiB0aGFuIG9uZSBqb2luLW9yZGVyIHNlYXJjaCwgeW91J2xs IHByb2JhYmx5IG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKLSAqIG9yaWdpbmFsIHN0YXRl cyBvZiB0aG9zZSBkYXRhIHN0cnVjdHVyZXMuICBTZWUgZ2Vxb19ldmFsKCkgZm9yIGFuIGV4YW1w bGUuCisgKiBtb2RpZnkgcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgYW5kIHJvb3QtPmpvaW5f cmVsX2xpc3QtPmhhc2guICBJZiB5b3UKKyAqIHdhbnQgdG8gZG8gbW9yZSB0aGFuIG9uZSBqb2lu LW9yZGVyIHNlYXJjaCwgeW91J2xsIHByb2JhYmx5IG5lZWQgdG8gc2F2ZSBhbmQKKyAqIHJlc3Rv cmUgdGhlIG9yaWdpbmFsIHN0YXRlcyBvZiB0aG9zZSBkYXRhIHN0cnVjdHVyZXMuICBTZWUgZ2Vx b19ldmFsKCkgZm9yCisgKiBhbiBleGFtcGxlLgogICovCiBSZWxPcHRJbmZvICoKIHN0YW5kYXJk X2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAq aW5pdGlhbF9yZWxzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm1haW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggMDc1 ZDM2YzdlYy4uZWI3OGUzNzMxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm1haW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5j CkBAIC02NCw4ICs2NCw5IEBAIHF1ZXJ5X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJICog Tk9URTogYXBwZW5kX3JlbF9saXN0IHdhcyBzZXQgdXAgYnkgc3VicXVlcnlfcGxhbm5lciwgc28g ZG8gbm90IHRvdWNoCiAJICogaGVyZS4KIAkgKi8KLQlyb290LT5qb2luX3JlbF9saXN0ID0gTklM OwotCXJvb3QtPmpvaW5fcmVsX2hhc2ggPSBOVUxMOworCXJvb3QtPmpvaW5fcmVsX2xpc3QgPSBt YWtlTm9kZShSZWxJbmZvTGlzdCk7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgPSBOSUw7 CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9IE5VTEw7CiAJcm9vdC0+am9pbl9yZWxfbGV2 ZWwgPSBOVUxMOwogCXJvb3QtPmpvaW5fY3VyX2xldmVsID0gMDsKIAlyb290LT5jYW5vbl9wYXRo a2V5cyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5v ZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCBkNzkxYzQx MDhkLi5hMGE5NGRmZTNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9y ZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBAIC0z NSwxMSArMzUsMTUgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCi10eXBlZGVm IHN0cnVjdCBKb2luSGFzaEVudHJ5CisvKgorICogQW4gZW50cnkgb2YgYSBoYXNoIHRhYmxlIHRo YXQgd2UgdXNlIHRvIG1ha2UgbG9va3VwIGZvciBSZWxPcHRJbmZvCisgKiBzdHJ1Y3R1cmVzIG1v cmUgZWZmaWNpZW50LgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKLQlSZWxp ZHMJCWpvaW5fcmVsaWRzOwkvKiBoYXNoIGtleSAtLS0gTVVTVCBCRSBGSVJTVCAqLwotCVJlbE9w dEluZm8gKmpvaW5fcmVsOwotfSBKb2luSGFzaEVudHJ5OworCVJlbGlkcwkJcmVsaWRzOwkJCS8q IGhhc2gga2V5IC0tLSBNVVNUIEJFIEZJUlNUICovCisJUmVsT3B0SW5mbyAqcmVsOworfSBSZWxJ bmZvRW50cnk7CiAKIHN0YXRpYyB2b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsCiAJCQkJCQkJCVJlbE9wdEluZm8gKmlucHV0X3Jl bCwKQEAgLTQ3MiwxMSArNDc2LDExIEBAIGZpbmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5l ckluZm8gKnJvb3QsIGludCByZWxpZCkKIH0KIAogLyoKLSAqIGJ1aWxkX2pvaW5fcmVsX2hhc2gK LSAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0YWJsZSBmb3Igam9pbiByZWxhdGlv bnMuCisgKiBidWlsZF9yZWxfaGFzaAorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNo IHRhYmxlIGZvciByZWxhdGlvbnMuCiAgKi8KIHN0YXRpYyB2b2lkCi1idWlsZF9qb2luX3JlbF9o YXNoKFBsYW5uZXJJbmZvICpyb290KQorYnVpbGRfcmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3Qp CiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKIAlIQVNIQ1RMCQloYXNoX2N0bDsKQEAgLTQ4NCw0NyAr NDg4LDQ5IEBAIGJ1aWxkX2pvaW5fcmVsX2hhc2goUGxhbm5lckluZm8gKnJvb3QpCiAKIAkvKiBD 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 cmlhdGUuCkBAIC01MzQsMjMgKzU0MCwyMyBAQCBmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpy b290LCBSZWxpZHMgcmVsaWRzKQogCSAqIHNvIHdvdWxkIGZvcmNlIHJlbGlkcyBvdXQgb2YgYSBy ZWdpc3RlciBhbmQgdGh1cyBwcm9iYWJseSBzbG93IGRvd24gdGhlCiAJICogbGlzdC1zZWFyY2gg Y2FzZS4KIAkgKi8KLQlpZiAocm9vdC0+am9pbl9yZWxfaGFzaCkKKwlpZiAobGlzdC0+aGFzaCkK IAl7CiAJCVJlbGlkcwkJaGFzaGtleSA9IHJlbGlkczsKLQkJSm9pbkhhc2hFbnRyeSAqaGVudHJ5 OworCQlSZWxJbmZvRW50cnkgKmhlbnRyeTsKIAotCQloZW50cnkgPSAoSm9pbkhhc2hFbnRyeSAq KSBoYXNoX3NlYXJjaChyb290LT5qb2luX3JlbF9oYXNoLAotCQkJCQkJCQkJCQkgICAmaGFzaGtl eSwKLQkJCQkJCQkJCQkJICAgSEFTSF9GSU5ELAotCQkJCQkJCQkJCQkgICBOVUxMKTsKKwkJaGVu dHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChsaXN0LT5oYXNoLAorCQkJCQkJCQkJ CQkgICZoYXNoa2V5LAorCQkJCQkJCQkJCQkgIEhBU0hfRklORCwKKwkJCQkJCQkJCQkJICBOVUxM KTsKIAkJaWYgKGhlbnRyeSkKLQkJCXJldHVybiBoZW50cnktPmpvaW5fcmVsOworCQkJcmV0dXJu IGhlbnRyeS0+cmVsOwogCX0KIAllbHNlCiAJewogCQlMaXN0Q2VsbCAgICpsOwogCi0JCWZvcmVh Y2gobCwgcm9vdC0+am9pbl9yZWxfbGlzdCkKKwkJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAkJ ewogCQkJUmVsT3B0SW5mbyAqcmVsID0gKFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOwogCkBAIC01 NjIsNiArNTY4LDU0IEBAIGZpbmRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBy 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 IGFuZCBpbm5lciByZWxhdGlvbiBhcmUgZm9yZWlnbgpAQCAtNjExLDMyICs2NjUsNiBAQCBzZXRf Zm9yZWlnbl9yZWxfcHJvcGVydGllcyhSZWxPcHRJbmZvICpqb2lucmVsLCBSZWxPcHRJbmZvICpv dXRlcl9yZWwsCiAJfQogfQogCi0vKgotICogYWRkX2pvaW5fcmVsCi0gKgkJQWRkIGdpdmVuIGpv aW4gcmVsYXRpb24gdG8gdGhlIGxpc3Qgb2Ygam9pbiByZWxhdGlvbnMgaW4gdGhlIGdpdmVuCi0g KgkJUGxhbm5lckluZm8uIEFsc28gYWRkIGl0IHRvIHRoZSBhdXhpbGlhcnkgaGFzaHRhYmxlIGlm IHRoZXJlIGlzIG9uZS4KLSAqLwotc3RhdGljIHZvaWQKLWFkZF9qb2luX3JlbChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCkKLXsKLQkvKiBHRVFPIHJlcXVpcmVzIHVzIHRv IGFwcGVuZCB0aGUgbmV3IGpvaW5yZWwgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCEgKi8KLQlyb290 LT5qb2luX3JlbF9saXN0ID0gbGFwcGVuZChyb290LT5qb2luX3JlbF9saXN0LCBqb2lucmVsKTsK LQotCS8qIHN0b3JlIGl0IGludG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUgaXMg b25lLiAqLwotCWlmIChyb290LT5qb2luX3JlbF9oYXNoKQotCXsKLQkJSm9pbkhhc2hFbnRyeSAq aGVudHJ5OwotCQlib29sCQlmb3VuZDsKLQotCQloZW50cnkgPSAoSm9pbkhhc2hFbnRyeSAqKSBo YXNoX3NlYXJjaChyb290LT5qb2luX3JlbF9oYXNoLAotCQkJCQkJCQkJCQkgICAmKGpvaW5yZWwt PnJlbGlkcyksCi0JCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsCi0JCQkJCQkJCQkJCSAgICZmb3Vu ZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCQloZW50cnktPmpvaW5fcmVsID0gam9pbnJlbDsKLQl9 Ci19Ci0KIC8qCiAgKiBidWlsZF9qb2luX3JlbAogICoJICBSZXR1cm5zIHJlbGF0aW9uIGVudHJ5 IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVuaW9uIG9mIHR3byBnaXZlbiByZWxzLApAQCAtMTQ2Miwy MiArMTQ5MCwxNCBAQCBzdWJidWlsZF9qb2lucmVsX2pvaW5saXN0KFJlbE9wdEluZm8gKmpvaW5y ZWwsCiBSZWxPcHRJbmZvICoKIGZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBw ZXJSZWxhdGlvbktpbmQga2luZCwgUmVsaWRzIHJlbGlkcykKIHsKKwlSZWxJbmZvTGlzdCAqbGlz dCA9ICZyb290LT51cHBlcl9yZWxzW2tpbmRdOwogCVJlbE9wdEluZm8gKnVwcGVycmVsOwotCUxp c3RDZWxsICAgKmxjOwotCi0JLyoKLQkgKiBGb3IgdGhlIG1vbWVudCwgb3VyIGluZGV4aW5nIGRh dGEgc3RydWN0dXJlIGlzIGp1c3QgYSBMaXN0IGZvciBlYWNoCi0JICogcmVsYXRpb24ga2luZC4g IElmIHdlIGV2ZXIgZ2V0IHNvIG1hbnkgb2Ygb25lIGtpbmQgdGhhdCB0aGlzIHN0b3BzCi0JICog d29ya2luZyB3ZWxsLCB3ZSBjYW4gaW1wcm92ZSBpdC4gIE5vIGNvZGUgb3V0c2lkZSB0aGlzIGZ1 bmN0aW9uIHNob3VsZAotCSAqIGFzc3VtZSBhbnl0aGluZyBhYm91dCBob3cgdG8gZmluZCBhIHBh cnRpY3VsYXIgdXBwZXJyZWwuCi0JICovCiAKIAkvKiBJZiB3ZSBhbHJlYWR5IG1hZGUgdGhpcyB1 cHBlcnJlbCBmb3IgdGhlIHF1ZXJ5LCByZXR1cm4gaXQgKi8KLQlmb3JlYWNoKGxjLCByb290LT51 cHBlcl9yZWxzW2tpbmRdKQorCWlmIChsaXN0KQogCXsKLQkJdXBwZXJyZWwgPSAoUmVsT3B0SW5m byAqKSBsZmlyc3QobGMpOwotCi0JCWlmIChibXNfZXF1YWwodXBwZXJyZWwtPnJlbGlkcywgcmVs aWRzKSkKKwkJdXBwZXJyZWwgPSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CisJCWlmICh1 cHBlcnJlbCkKIAkJCXJldHVybiB1cHBlcnJlbDsKIAl9CiAKQEAgLTE0OTYsNyArMTUxNiw3IEBA IGZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBwZXJSZWxhdGlvbktpbmQga2lu ZCwgUmVsaWRzIHJlbGlkcykKIAl1cHBlcnJlbC0+Y2hlYXBlc3RfdW5pcXVlX3BhdGggPSBOVUxM OwogCXVwcGVycmVsLT5jaGVhcGVzdF9wYXJhbWV0ZXJpemVkX3BhdGhzID0gTklMOwogCi0Jcm9v dC0+dXBwZXJfcmVsc1traW5kXSA9IGxhcHBlbmQocm9vdC0+dXBwZXJfcmVsc1traW5kXSwgdXBw ZXJyZWwpOworCWFkZF9yZWxfaW5mbygmcm9vdC0+dXBwZXJfcmVsc1traW5kXSwgdXBwZXJyZWwp OwogCiAJcmV0dXJuIHVwcGVycmVsOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAwYWIyNWQ5 Y2U3Li4yNWE5MTE5ODAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu 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 --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Disposition: attachment; filename="v5-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmeyrk1 RnJvbSBhMTk5ZWYwMzRiMGJiYjUzNzVjOTdkNGJmMGVlMGZkNzljYTQwNjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMToxMjoxOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg Mi85XSBJbnRyb2R1Y2UgUmVsQWdnSW5mbyBzdHJ1Y3R1cmUgdG8gc3RvcmUgaW5mbyBmb3IKIGdy b3VwZWQgcGF0aHMuCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIFJlbEFnZ0luZm8gc3RydWN0dXJl IHRvIHN0b3JlIGluZm9ybWF0aW9uIG5lZWRlZAp0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3Ig YmFzZSBhbmQgam9pbiByZWxzLiAgSXQgYWxzbyByZXZpc2VzIHRoZQpSZWxJbmZvTGlzdCByZWxh dGVkIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQKd2l0 aCBSZWxBZ2dJbmZvcy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMg fCA2NiArKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaCAgICAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggYTBhOTRkZmUzYi4uYjBiYjRhZTUzMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMzYsMTMgKzM2LDEzIEBACiAKIAogLyoKLSAq IEFuIGVudHJ5IG9mIGEgaGFzaCB0YWJsZSB0aGF0IHdlIHVzZSB0byBtYWtlIGxvb2t1cCBmb3Ig UmVsT3B0SW5mbwotICogc3RydWN0dXJlcyBtb3JlIGVmZmljaWVudC4KKyAqIEFuIGVudHJ5IG9m IGEgaGFzaCB0YWJsZSB0aGF0IHdlIHVzZSB0byBtYWtlIGxvb2t1cCBmb3IgUmVsT3B0SW5mbyBv cgorICogUmVsQWdnSW5mbyBzdHJ1Y3R1cmVzIG1vcmUgZWZmaWNpZW50LgogICovCiB0eXBlZGVm IHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKIAlSZWxpZHMJCXJlbGlkczsJCQkvKiBoYXNoIGtleSAt LS0gTVVTVCBCRSBGSVJTVCAqLwotCVJlbE9wdEluZm8gKnJlbDsKKwl2b2lkCSAgICpkYXRhOwog fSBSZWxJbmZvRW50cnk7CiAKIHN0YXRpYyB2b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsCkBAIC00NzcsNyArNDc3LDcgQEAgZmlu ZF9iYXNlX3JlbF9pZ25vcmVfam9pbihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKQogCiAv KgogICogYnVpbGRfcmVsX2hhc2gKLSAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0 YWJsZSBmb3IgcmVsYXRpb25zLgorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNoIHRh YmxlIGZvciByZWxhdGlvbiBzcGVjaWZpYyBkYXRhLgogICovCiBzdGF0aWMgdm9pZAogYnVpbGRf cmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCkBAIC00OTcsMTkgKzQ5NywyNyBAQCBidWlsZF9y ZWxfaGFzaChSZWxJbmZvTGlzdCAqbGlzdCkKIAkJCQkJCSAgJmhhc2hfY3RsLAogCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsK IAotCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgcmVsYXRpb25zICovCisJLyog SW5zZXJ0IGFsbCB0aGUgYWxyZWFkeS1leGlzdGluZyByZWxhdGlvbiBzcGVjaWZpYyBpbmZvcyAq LwogCWZvcmVhY2gobCwgbGlzdC0+aXRlbXMpCiAJewotCQlSZWxPcHRJbmZvICpyZWwgPSAoUmVs T3B0SW5mbyAqKSBsZmlyc3QobCk7CisJCXZvaWQJICAgKml0ZW0gPSBsZmlyc3QobCk7CiAJCVJl bEluZm9FbnRyeSAqaGVudHJ5OwogCQlib29sCQlmb3VuZDsKKwkJUmVsaWRzCQlyZWxpZHM7CisK KwkJQXNzZXJ0KElzQShpdGVtLCBSZWxPcHRJbmZvKSB8fCBJc0EoaXRlbSwgUmVsQWdnSW5mbykp OworCisJCWlmIChJc0EoaXRlbSwgUmVsT3B0SW5mbykpCisJCQlyZWxpZHMgPSAoKFJlbE9wdElu Zm8gKikgaXRlbSktPnJlbGlkczsKKwkJZWxzZQorCQkJcmVsaWRzID0gKChSZWxBZ2dJbmZvICop IGl0ZW0pLT5yZWxpZHM7CiAKIAkJaGVudHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJj aChoYXNodGFiLAotCQkJCQkJCQkJCQkgICYocmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgICZy ZWxpZHMsCiAJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwKIAkJCQkJCQkJCQkJICAmZm91bmQpOwog CQlBc3NlcnQoIWZvdW5kKTsKLQkJaGVudHJ5LT5yZWwgPSByZWw7CisJCWhlbnRyeS0+ZGF0YSA9 IGl0ZW07CiAJfQogCiAJbGlzdC0+aGFzaCA9IGhhc2h0YWI7CkBAIC01MTcsOSArNTI1LDkgQEAg YnVpbGRfcmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCiAKIC8qCiAgKiBmaW5kX3JlbF9pbmZv Ci0gKgkgIEZpbmQgYW4gUmVsT3B0SW5mbyBlbnRyeS4KKyAqCSAgRmluZCBhbiBSZWxPcHRJbmZv IG9yIGEgUmVsQWdnSW5mbyBlbnRyeS4KICAqLwotc3RhdGljIFJlbE9wdEluZm8gKgorc3RhdGlj IHZvaWQgKgogZmluZF9yZWxfaW5mbyhSZWxJbmZvTGlzdCAqbGlzdCwgUmVsaWRzIHJlbGlkcykK IHsKIAlpZiAobGlzdCA9PSBOVUxMKQpAQCAtNTUwLDcgKzU1OCw3IEBAIGZpbmRfcmVsX2luZm8o UmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMpCiAJCQkJCQkJCQkJCSAgSEFTSF9GSU5E LAogCQkJCQkJCQkJCQkgIE5VTEwpOwogCQlpZiAoaGVudHJ5KQotCQkJcmV0dXJuIGhlbnRyeS0+ cmVsOworCQkJcmV0dXJuIGhlbnRyeS0+ZGF0YTsKIAl9CiAJZWxzZQogCXsKQEAgLTU1OCwxMCAr NTY2LDE4IEBAIGZpbmRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMp CiAKIAkJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAkJewotCQkJUmVsT3B0SW5mbyAqcmVsID0g KFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOworCQkJdm9pZAkgICAqaXRlbSA9IGxmaXJzdChsKTsK KwkJCVJlbGlkcwkJaXRlbV9yZWxpZHMgPSBOVUxMOworCisJCQlBc3NlcnQoSXNBKGl0ZW0sIFJl bE9wdEluZm8pIHx8IElzQShpdGVtLCBSZWxBZ2dJbmZvKSk7CiAKLQkJCWlmIChibXNfZXF1YWwo cmVsLT5yZWxpZHMsIHJlbGlkcykpCi0JCQkJcmV0dXJuIHJlbDsKKwkJCWlmIChJc0EoaXRlbSwg UmVsT3B0SW5mbykpCisJCQkJaXRlbV9yZWxpZHMgPSAoKFJlbE9wdEluZm8gKikgaXRlbSktPnJl bGlkczsKKwkJCWVsc2UgaWYgKElzQShpdGVtLCBSZWxBZ2dJbmZvKSkKKwkJCQlpdGVtX3JlbGlk cyA9ICgoUmVsQWdnSW5mbyAqKSBpdGVtKS0+cmVsaWRzOworCisJCQlpZiAoYm1zX2VxdWFsKGl0 ZW1fcmVsaWRzLCByZWxpZHMpKQorCQkJCXJldHVybiBpdGVtOwogCQl9CiAJfQogCkBAIC01NzYs MzIgKzU5Miw0MCBAQCBmaW5kX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxpZHMgcmVs aWRzKQogUmVsT3B0SW5mbyAqCiBmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxp ZHMgcmVsaWRzKQogewotCXJldHVybiBmaW5kX3JlbF9pbmZvKHJvb3QtPmpvaW5fcmVsX2xpc3Qs IHJlbGlkcyk7CisJcmV0dXJuIChSZWxPcHRJbmZvICopIGZpbmRfcmVsX2luZm8ocm9vdC0+am9p bl9yZWxfbGlzdCwgcmVsaWRzKTsKIH0KIAogLyoKICAqIGFkZF9yZWxfaW5mbwotICoJCUFkZCBn aXZlbiByZWxhdGlvbiB0byB0aGUgZ2l2ZW4gbGlzdC4gQWxzbyBhZGQgaXQgdG8gdGhlIGF1eGls aWFyeQorICoJCUFkZCByZWxhdGlvbiBzcGVjaWZpYyBpbmZvIHRvIGEgbGlzdCwgYW5kIGFsc28g YWRkIGl0IHRvIHRoZSBhdXhpbGlhcnkKICAqCQloYXNodGFibGUgaWYgdGhlcmUgaXMgb25lLgog ICovCiBzdGF0aWMgdm9pZAotYWRkX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxPcHRJ bmZvICpyZWwpCithZGRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIHZvaWQgKmRhdGEpCiB7 CisJQXNzZXJ0KElzQShkYXRhLCBSZWxPcHRJbmZvKSB8fCBJc0EoZGF0YSwgUmVsQWdnSW5mbykp OworCiAJLyogR0VRTyByZXF1aXJlcyB1cyB0byBhcHBlbmQgdGhlIG5ldyByZWxhdGlvbiB0byB0 aGUgZW5kIG9mIHRoZSBsaXN0ISAqLwotCWxpc3QtPml0ZW1zID0gbGFwcGVuZChsaXN0LT5pdGVt cywgcmVsKTsKKwlsaXN0LT5pdGVtcyA9IGxhcHBlbmQobGlzdC0+aXRlbXMsIGRhdGEpOwogCiAJ Lyogc3RvcmUgaXQgaW50byB0aGUgYXV4aWxpYXJ5IGhhc2h0YWJsZSBpZiB0aGVyZSBpcyBvbmUu ICovCiAJaWYgKGxpc3QtPmhhc2gpCiAJeworCQlSZWxpZHMJCXJlbGlkczsKIAkJUmVsSW5mb0Vu dHJ5ICpoZW50cnk7CiAJCWJvb2wJCWZvdW5kOwogCisJCWlmIChJc0EoZGF0YSwgUmVsT3B0SW5m bykpCisJCQlyZWxpZHMgPSAoKFJlbE9wdEluZm8gKikgZGF0YSktPnJlbGlkczsKKwkJZWxzZQor CQkJcmVsaWRzID0gKChSZWxBZ2dJbmZvICopIGRhdGEpLT5yZWxpZHM7CisKIAkJaGVudHJ5ID0g KFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChsaXN0LT5oYXNoLAotCQkJCQkJCQkJCQkgICYo cmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgICZyZWxpZHMsCiAJCQkJCQkJCQkJCSAgSEFTSF9F TlRFUiwKIAkJCQkJCQkJCQkJICAmZm91bmQpOwogCQlBc3NlcnQoIWZvdW5kKTsKLQkJaGVudHJ5 LT5yZWwgPSByZWw7CisJCWhlbnRyeS0+ZGF0YSA9IGRhdGE7CiAJfQogfQogCkBAIC0xNDk2LDcg KzE1MjAsNyBAQCBmZXRjaF91cHBlcl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVsYXRp b25LaW5kIGtpbmQsIFJlbGlkcyByZWxpZHMpCiAJLyogSWYgd2UgYWxyZWFkeSBtYWRlIHRoaXMg dXBwZXJyZWwgZm9yIHRoZSBxdWVyeSwgcmV0dXJuIGl0ICovCiAJaWYgKGxpc3QpCiAJewotCQl1 cHBlcnJlbCA9IGZpbmRfcmVsX2luZm8obGlzdCwgcmVsaWRzKTsKKwkJdXBwZXJyZWwgPSAoUmVs T3B0SW5mbyAqKSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CiAJCWlmICh1cHBlcnJlbCkK IAkJCXJldHVybiB1cHBlcnJlbDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDI1YTkxMTk4 MDIuLjQwMmI5YjU4NzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMDcwLDYgKzEwNzAsNzkg 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== --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Disposition: attachment; filename="v5-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmf6w32 RnJvbSAxNzE3OTA1YmU4ZGYxODJiMmYxYzQyMDU4MjhlNWRiZjIzNjRjOWFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxODo0MDo0NiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg My85XSBTZXQgdXAgZm9yIGVhZ2VyIGFnZ3JlZ2F0aW9uIGJ5IGNvbGxlY3RpbmcgbmVlZGVkCiBp bmZvcwoKVGhpcyBjb21taXQgY2hlY2tzIGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpY2Fi bGUsIGFuZCBpZiBzbywgc2V0cwp1cCByb290LT5hZ2dfY2xhdXNlX2xpc3QgYW5kIHJvb3QtPmdy b3VwX2V4cHJfbGlzdCBieSBjb2xsZWN0aW5nCnN1aXRhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgaW4gdGhlIHF1ZXJ5LgotLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgICAgICAgfCAyNTAgKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jICAgICAgICAgfCAgIDggKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEwICsKIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNDEgKysrCiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogOSBmaWxlcyBj aGFuZ2VkLCAzMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9hbGxwYXRocy5jCmluZGV4IGZmYzZlZGQ2YzcuLjU4NmMwZTA3YzAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNzcsNiArNzcsNyBAQCB0eXBlZGVmIGVu dW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIHNldCBieSBH VUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1c3QgaW4gY2FzZSBHVUMgZG9l c24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSBmYWxzZTsKIGlu dAkJCWdlcW9fdGhyZXNob2xkOwogaW50CQkJbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsK IGludAkJCW1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2luaXRzcGxhbi5jCmluZGV4IGQzODY4YjYyOGQuLmRiOTAzNzk2ZWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1 ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtNzksNiArODAsOCBAQCB0eXBlZGVmIHN0cnVjdCBK b2luVHJlZUl0ZW0KIH0gSm9pblRyZWVJdGVtOwogCiAKK3N0YXRpYyB2b2lkIGNyZWF0ZV9hZ2df Y2xhdXNlX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9ncm91 cGluZ19leHByX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIGV4dHJhY3Rf bGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpicmVsLAog CQkJCQkJCQkJICAgSW5kZXggcnRpbmRleCk7CiBzdGF0aWMgTGlzdCAqZGVjb25zdHJ1Y3RfcmVj dXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLApAQCAtMzI2LDYgKzMyOSwyNTMg 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 dGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggZWI3OGUzNzMxNy4uMTk3YTNmOTA1ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCkBAIC03Nyw2ICs3Nyw4IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJcm9vdC0+cGxhY2Vob2xkZXJfbGlzdCA9IE5J TDsKIAlyb290LT5wbGFjZWhvbGRlcl9hcnJheSA9IE5VTEw7CiAJcm9vdC0+cGxhY2Vob2xkZXJf YXJyYXlfc2l6ZSA9IDA7CisJcm9vdC0+YWdnX2NsYXVzZV9saXN0ID0gTklMOworCXJvb3QtPmdy b3VwX2V4cHJfbGlzdCA9IE5JTDsKIAlyb290LT5ma2V5X2xpc3QgPSBOSUw7CiAJcm9vdC0+aW5p dGlhbF9yZWxzID0gTklMOwogCkBAIC0yNjMsNiArMjY1LDEyIEBAIHF1ZXJ5X3BsYW5uZXIoUGxh bm5lckluZm8gKnJvb3QsCiAJICovCiAJZXh0cmFjdF9yZXN0cmljdGlvbl9vcl9jbGF1c2VzKHJv b3QpOwogCisJLyoKKwkgKiBDaGVjayBpZiBlYWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxl LCBhbmQgaWYgc28sIHNldCB1cAorCSAqIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+ Z3JvdXBfZXhwcl9saXN0LgorCSAqLworCXNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKHJvb3QpOwor CiAJLyoKIAkgKiBOb3cgZXhwYW5kIGFwcGVuZHJlbHMgYnkgYWRkaW5nICJvdGhlcnJlbHMiIGZv ciB0aGVpciBjaGlsZHJlbi4gIFdlCiAJICogZGVsYXkgdGhpcyB0byB0aGUgZW5kIHNvIHRoYXQg d2UgaGF2ZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCmluZGV4IGM2OGZkYzAwOGIuLjU2MTdhOTBkYjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCkBAIC05NDAsNiArOTQwLDE2IEBAIHN0cnVjdCBjb25maWdfYm9v bCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKKwl7CisJCXsiZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSIsIFBHQ19VU0VSU0VULCBRVUVSWV9U VU5JTkdfTUVUSE9ELAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGVhZ2VyIGFnZ3JlZ2F0aW9u LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfZWFnZXJfYWdn cmVnYXRlLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQl7ImVuYWJs ZV9wYXJhbGxlbF9hcHBlbmQiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJ CWdldHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBwYXJhbGxlbCBhcHBl bmQgcGxhbnMuIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggMjE2NmVhNGE4Ny4uMjdiNjUxNWNkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDEzLDYgKzQxMyw3IEBACiAjZW5h YmxlX3NvcnQgPSBvbgogI2VuYWJsZV90aWRzY2FuID0gb24KICNlbmFibGVfZ3JvdXBfYnlfcmVv cmRlcmluZyA9IG9uCisjZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSA9IG9mZgogCiAjIC0gUGxhbm5l ciBDb3N0IENvbnN0YW50cyAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNDAyYjliNTg3NC4u NDZiNjhmYWI5ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTM4Niw2ICszODYsMTIgQEAgc3Ry dWN0IFBsYW5uZXJJbmZvCiAJLyogbGlzdCBvZiBQbGFjZUhvbGRlckluZm9zICovCiAJTGlzdAkg ICAqcGxhY2Vob2xkZXJfbGlzdDsKIAorCS8qIGxpc3Qgb2YgQWdnQ2xhdXNlSW5mb3MgKi8KKwlM aXN0CSAgICphZ2dfY2xhdXNlX2xpc3Q7CisKKwkvKiBMaXN0IG9mIEdyb3VwRXhwckluZm9zICov CisJTGlzdAkgICAqZ3JvdXBfZXhwcl9saXN0OworCiAJLyogYXJyYXkgb2YgUGxhY2VIb2xkZXJJ bmZvcyBpbmRleGVkIGJ5IHBoaWQgKi8KIAlzdHJ1Y3QgUGxhY2VIb2xkZXJJbmZvICoqcGxhY2Vo b2xkZXJfYXJyYXkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlLCBhcnJheV9zaXplKHBs YWNlaG9sZGVyX2FycmF5X3NpemUpKTsKIAkvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBhcnJheSAqLwpA QCAtMzIwMyw2ICszMjA5LDQxIEBAIHR5cGVkZWYgc3RydWN0IE1pbk1heEFnZ0luZm8KIAlQYXJh bQkgICAqcGFyYW07CiB9IE1pbk1heEFnZ0luZm87CiAKKy8qCisgKiBUaGUgYWdncmVnYXRlIGV4 cHJlc3Npb25zIHRoYXQgYXBwZWFyIGluIHRhcmdldGxpc3QgYW5kIGhhdmluZyBjbGF1c2VzCisg Ki8KK3R5cGVkZWYgc3RydWN0IEFnZ0NsYXVzZUluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVh ZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSBBZ2dyZWYg ZXhwciAqLworCUFnZ3JlZgkgICAqYWdncmVmOworCisJLyogbG93ZXN0IGxldmVsIHdlIGNhbiBl dmFsdWF0ZSB0aGlzIGFnZ3JlZ2F0ZSBhdCAqLworCVJlbGlkcwkJYWdnX2V2YWxfYXQ7Cit9IEFn Z0NsYXVzZUluZm87CisKKy8qCisgKiBUaGUgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhhdCBhcHBl YXIgaW4gZ3JvdXBpbmcgY2xhdXNlcworICovCit0eXBlZGVmIHN0cnVjdCBHcm91cEV4cHJJbmZv Cit7CisJcGdfbm9kZV9hdHRyKG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVUYWcJ CXR5cGU7CisKKwkvKiB0aGUgcmVwcmVzZW50ZWQgZXhwcmVzc2lvbiAqLworCUV4cHIJICAgKmV4 cHI7CisKKwkvKiB0aGUgdGxlU29ydEdyb3VwUmVmIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNvcnRH cm91cENsYXVzZSAqLworCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkvKiBidHJlZSBvcGZhbWls eSBkZWZpbmluZyB0aGUgb3JkZXJpbmcgKi8KKwlPaWQJCQlidHJlZV9vcGZhbWlseTsKK30gR3Jv dXBFeHBySW5mbzsKKwogLyoKICAqIEF0IHJ1bnRpbWUsIFBBUkFNX0VYRUMgc2xvdHMgYXJlIHVz ZWQgdG8gcGFzcyB2YWx1ZXMgYXJvdW5kIGZyb20gb25lIHBsYW4KICAqIG5vZGUgdG8gYW5vdGhl ci4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gcGFzcyB2YWx1ZXMgZG93biBpbnRvIHN1YnF1ZXJpZXMg KGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCAzOWJhNDYxNTQ4Li44ZjJiZDYwZDQ3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aHMuaApAQCAtMjEsNiArMjEsNyBAQAogICogYWxscGF0aHMuYwogICovCiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ2VxbzsKK2V4dGVybiBQR0RMTElNUE9SVCBi b29sIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGdlcW9f dGhyZXNob2xkOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9z aXplOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAppbmRleCBmMmUzZmE0YzJlLi40MmUwZjM3ODU5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtNzMsNiArNzMsNyBAQCBleHRlcm4gdm9p ZCBhZGRfb3RoZXJfcmVsc190b19xdWVyeShQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9p ZCBidWlsZF9iYXNlX3JlbF90bGlzdHMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmZpbmFsX3Rs aXN0KTsKIGV4dGVybiB2b2lkIGFkZF92YXJzX3RvX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKnZhcnMsCiAJCQkJCQkJCSAgIFJlbGlkcyB3aGVyZV9uZWVkZWQpOworZXh0ZXJu IHZvaWQgc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJu IHZvaWQgZmluZF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJu IHZvaWQgY3JlYXRlX2xhdGVyYWxfam9pbl9pbmZvKFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVy biBMaXN0ICpkZWNvbnN0cnVjdF9qb2ludHJlZShQbGFubmVySW5mbyAqcm9vdCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDliZTdhY2EyYjguLmE4M2E0MWIwZjgg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMTMsNiArMTEzLDcg QEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2Ug J2VuYWJsZSUnOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCiAg ZW5hYmxlX2FzeW5jX2FwcGVuZCAgICAgICAgICAgIHwgb24KICBlbmFibGVfYml0bWFwc2NhbiAg ICAgICAgICAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgICAgICAgICB8IG9mZgog IGVuYWJsZV9nYXRoZXJtZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2dyb3VwX2J5X3Jl b3JkZXJpbmcgICAgIHwgb24KICBlbmFibGVfaGFzaGFnZyAgICAgICAgICAgICAgICAgfCBvbgpA QCAtMTM0LDcgKzEzNSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mg d2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAg ICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3Rp ZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMyByb3dzKQorKDI0IHJvd3MpCiAKIC0tIFRo ZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMu CiBzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2FpdF9ldmVudHMKLS0g CjIuMzEuMAoK --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Disposition: attachment; filename="v5-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmfeyv3 RnJvbSBhZmMwMGRlZGI3MDY3Y2E2YTc0ZmVjMDMxN2Q3NzllZGIyODdmYzY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMToyNzo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg NC85XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIFJlbEFnZ0luZm9zIGlmCiBhcHBs aWNhYmxlCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbnMgdGhhdCBjaGVjayBp ZiBlYWdlciBhZ2dyZWdhdGlvbiBpcwphcHBsaWNhYmxlIGZvciBhIGdpdmVuIHJlbGF0aW9uLCBh bmQgaWYgc28sIGNyZWF0ZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZQpmb3IgdGhlIHJlbGF0aW9uLCB1 c2luZyB0aGUgaW5mb3MgYWJvdXQgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZApncm91cGluZyBl eHByZXNzaW9ucyB3ZSBjb2xsZWN0ZWQgZWFybGllci4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9lcXVpdmNsYXNzLmMgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5tYWluLmMgICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2Rl LmMgICAgfCA2MjMgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYyAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAg ICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggICAgICAgICAgIHwg ICAzICstCiA3IGZpbGVzIGNoYW5nZWQsIDY2MSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKaW5kZXggYTYxOWZmOTE3 Ny4uOThjZmI2OGNlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1 aXZjbGFzcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwpA QCAtMjQzOSwxNSArMjQzOSwxNyBAQCBmaW5kX2pvaW5fZG9tYWluKFBsYW5uZXJJbmZvICpyb290 LCBSZWxpZHMgcmVsaWRzKQogICoJICBEZXRlY3Qgd2hldGhlciB0d28gZXhwcmVzc2lvbnMgYXJl IGtub3duIGVxdWFsIGR1ZSB0byBlcXVpdmFsZW5jZQogICoJICByZWxhdGlvbnNoaXBzLgogICoK LSAqIEFjdHVhbGx5LCB0aGlzIG9ubHkgc2hvd3MgdGhhdCB0aGUgZXhwcmVzc2lvbnMgYXJlIGVx dWFsIGFjY29yZGluZwotICogdG8gc29tZSBvcGZhbWlseSdzIG5vdGlvbiBvZiBlcXVhbGl0eSAt LS0gYnV0IHdlIG9ubHkgdXNlIGl0IGZvcgotICogc2VsZWN0aXZpdHkgZXN0aW1hdGlvbiwgc28g YSBmdXp6eSBpZGVhIG9mIGVxdWFsaXR5IGlzIE9LLgorICogSWYgb3BmYW1pbHkgaXMgZ2l2ZW4s IHRoZSBleHByZXNzaW9ucyBtdXN0IGJlIGtub3duIGVxdWFsIHBlciB0aGUgc2VtYW50aWNzCisg KiBvZiB0aGF0IG9wZmFtaWx5IChub3RlIGl0IGhhcyB0byBiZSBhIGJ0cmVlIG9wZmFtaWx5LCBz aW5jZSB0aG9zZSBhcmUgdGhlCisgKiBvbmx5IG9wZmFtaWxpZXMgZXF1aXZjbGFzcy5jIGRlYWxz IHdpdGgpLiAgSWYgb3BmYW1pbHkgaXMgSW52YWxpZE9pZCwgd2UnbGwKKyAqIHJldHVybiB0cnVl IGlmIHRoZXkncmUgZXF1YWwgYWNjb3JkaW5nIHRvIGFueSBvcGZhbWlseSwgd2hpY2ggaXMgZnV6 enkgYnV0CisgKiBPSyBmb3IgZXN0aW1hdGlvbiBwdXJwb3Nlcy4KICAqCiAgKiBOb3RlOiBkb2Vz IG5vdCBib3RoZXIgdG8gY2hlY2sgZm9yICJlcXVhbChpdGVtMSwgaXRlbTIpIjsgY2FsbGVyIG11 c3QKICAqIGNoZWNrIHRoYXQgY2FzZSBpZiBpdCdzIHBvc3NpYmxlIHRvIHBhc3MgaWRlbnRpY2Fs IGl0ZW1zLgogICovCiBib29sCi1leHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yKQorZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMiwgT2lkIG9wZmFtaWx5KQogewogCUxpc3RD ZWxsICAgKmxjMTsKIApAQCAtMjQ2Miw2ICsyNDY0LDE3IEBAIGV4cHJzX2tub3duX2VxdWFsKFBs YW5uZXJJbmZvICpyb290LCBOb2RlICppdGVtMSwgTm9kZSAqaXRlbTIpCiAJCWlmIChlYy0+ZWNf aGFzX3ZvbGF0aWxlKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogSXQncyBva2F5IHRvIGNv bnNpZGVyIGVjX2Jyb2tlbiBFQ3MgaGVyZS4gIEJyb2tlbm5lc3MganVzdCBtZWFucyB3ZQorCQkg KiBjb3VsZG4ndCBkZXJpdmUgYWxsIHRoZSBpbXBsaWVkIGNsYXVzZXMgd2UnZCBoYXZlIGxpa2Vk IHRvOyBpdCBkb2VzCisJCSAqIG5vdCBpbnZhbGlkYXRlIG91ciBrbm93bGVkZ2UgdGhhdCB0aGUg bWVtYmVycyBhcmUgZXF1YWwuCisJCSAqLworCisJCS8qIElnbm9yZSBpZiB0aGlzIEVDIGRvZXNu J3QgdXNlIHNwZWNpZmllZCBvcGZhbWlseSAqLworCQlpZiAoT2lkSXNWYWxpZChvcGZhbWlseSkg JiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZWMtPmVjX29wZmFtaWxpZXMsIG9wZmFtaWx5KSkKKwkJ CWNvbnRpbnVlOworCiAJCWZvcmVhY2gobGMyLCBlYy0+ZWNfbWVtYmVycykKIAkJewogCQkJRXF1 aXZhbGVuY2VNZW1iZXIgKmVtID0gKEVxdWl2YWxlbmNlTWVtYmVyICopIGxmaXJzdChsYzIpOwpA QCAtMjQ5MCw4ICsyNTAzLDcgQEAgZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lckluZm8gKnJvb3Qs IE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMikKICAqIChJbiBwcmluY2lwbGUgdGhlcmUgbWlnaHQg YmUgbW9yZSB0aGFuIG9uZSBtYXRjaGluZyBlY2xhc3MgaWYgbXVsdGlwbGUKICAqIGNvbGxhdGlv bnMgYXJlIGludm9sdmVkLCBidXQgc2luY2UgY29sbGF0aW9uIGRvZXNuJ3QgbWF0dGVyIGZvciBl cXVhbGl0eSwKICAqIHdlIGlnbm9yZSB0aGF0IGZpbmUgcG9pbnQgaGVyZS4pICBUaGlzIGlzIG11 Y2ggbGlrZSBleHByc19rbm93bl9lcXVhbCwKLSAqIGV4Y2VwdCB0aGF0IHdlIGluc2lzdCBvbiB0 aGUgY29tcGFyaXNvbiBvcGVyYXRvciBtYXRjaGluZyB0aGUgZWNsYXNzLCBzbwotICogdGhhdCB0 aGUgcmVzdWx0IGlzIGRlZmluaXRlIG5vdCBhcHByb3hpbWF0ZS4KKyAqIGV4Y2VwdCBmb3IgdGhl IGZvcm1hdCBvZiB0aGUgaW5wdXQuCiAgKgogICogT24gc3VjY2Vzcywgd2UgYWxzbyBzZXQgZmtp bmZvLT5lY2xhc3NbY29sbm9dIHRvIHRoZSBtYXRjaGluZyBlY2xhc3MsCiAgKiBhbmQgc2V0IGZr aW5mby0+ZmtfZWNsYXNzX21lbWJlcltjb2xub10gdG8gdGhlIGVjbGFzcyBtZW1iZXIgZm9yIHRo ZQpAQCAtMjUzMiw3ICsyNTQ0LDcgQEAgbWF0Y2hfZWNsYXNzZXNfdG9fZm9yZWlnbl9rZXlfY29s KFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBOZXZlciBtYXRjaCB0byBhIHZvbGF0aWxlIEVDICov CiAJCWlmIChlYy0+ZWNfaGFzX3ZvbGF0aWxlKQogCQkJY29udGludWU7Ci0JCS8qIE5vdGU6IGl0 IHNlZW1zIG9rYXkgdG8gbWF0Y2ggdG8gImJyb2tlbiIgZWNsYXNzZXMgaGVyZSAqLworCQkvKiBJ dCdzIG9rYXkgdG8gY29uc2lkZXIgImJyb2tlbiIgRUNzIGhlcmUsIHNlZSBleHByc19rbm93bl9l cXVhbCAqLwogCiAJCWZvcmVhY2gobGMyLCBlYy0+ZWNfbWVtYmVycykKIAkJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggMTk3YTNmOTA1ZS4uMGZmMGNhOTljYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCkBAIC02Nyw2ICs2Nyw5IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJcm9vdC0+am9pbl9yZWxfbGlzdCA9IG1ha2VO b2RlKFJlbEluZm9MaXN0KTsKIAlyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyA9IE5JTDsKIAly b290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gTlVMTDsKKwlyb290LT5hZ2dfaW5mb19saXN0ID0g bWFrZU5vZGUoUmVsSW5mb0xpc3QpOworCXJvb3QtPmFnZ19pbmZvX2xpc3QtPml0ZW1zID0gTklM OworCXJvb3QtPmFnZ19pbmZvX2xpc3QtPmhhc2ggPSBOVUxMOwogCXJvb3QtPmpvaW5fcmVsX2xl dmVsID0gTlVMTDsKIAlyb290LT5qb2luX2N1cl9sZXZlbCA9IDA7CiAJcm9vdC0+Y2Fub25fcGF0 aGtleXMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggYjBiYjRh ZTUzMi4uNzkyODhmYjJkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAt ODcsNiArODcsMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpjaGlsZHJlbCwKIAkJCQkJ CQkJCSAgIGludCBuYXBwaW5mb3MsCiAJCQkJCQkJCQkgICBBcHBlbmRSZWxJbmZvICoqYXBwaW5m b3MpOworc3RhdGljIGJvb2wgZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9u KFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbCk7CitzdGF0 aWMgYm9vbCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCwKKwkJCQkJCQkJICBQYXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19p bnB1dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3JvdXBfZXhwcnNfZXh0cmFfcCk7CitzdGF0aWMgYm9v bCBpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyKTsKK3N0 YXRpYyBib29sIGlzX3Zhcl9uZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2 YXIsIFJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMgSW5kZXggZ2V0X2V4cHJlc3Npb25fc29ydGdy b3VwcmVmKFBsYW5uZXJJbmZvICpyb290LCBFeHByICpleHByKTsKIAogCiAvKgpAQCAtNjQwLDYg KzY0OCw1OCBAQCBhZGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpv 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 ZWlnbgpAQCAtMjQ2NCwzICsyNTI0LDU2NiBAQCBidWlsZF9jaGlsZF9qb2luX3JlbHRhcmdldChQ bGFubmVySW5mbyAqcm9vdCwKIAljaGlsZHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSA9 IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZTsKIAljaGlsZHJlbC0+cmVsdGFy Z2V0LT53aWR0aCA9IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT53aWR0aDsKIH0KKworLyoKKyAqIGNy ZWF0ZV9yZWxfYWdnX2luZm8KKyAqCSAgQ2hlY2sgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGNhbiBw cm9kdWNlIGdyb3VwZWQgcGF0aHMgYW5kIHJldHVybiB0aGUKKyAqCSAgaW5mb3JtYXRpb24gaXQn bGwgbmVlZCBmb3IgaXQuICBUaGUgZ2l2ZW4gcmVsYXRpb24gaXMgdGhlIG5vbi1ncm91cGVkIG9u ZQorICoJICB3aGljaCBoYXMgdGhlIHJlbHRhcmdldCBhbHJlYWR5IGNvbnN0cnVjdGVkLgorICov CitSZWxBZ2dJbmZvICoKK2NyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlSZWxBZ2dJbmZvICpyZXN1bHQ7 CisJUGF0aFRhcmdldCAqYWdnX2lucHV0OworCVBhdGhUYXJnZXQgKnRhcmdldDsKKwlMaXN0CSAg ICpncnBfZXhwcnNfZXh0cmEgPSBOSUw7CisJTGlzdAkgICAqZ3JvdXBfY2xhdXNlc19maW5hbDsK KwlpbnQJCQlpOworCisJLyoKKwkgKiBUaGUgbGlzdHMgb2YgYWdncmVnYXRlIGV4cHJlc3Npb25z IGFuZCBncm91cGluZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZQorCSAqIGJlZW4gY29uc3RydWN0 ZWQuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCAhPSBOSUwpOworCUFzc2Vy dChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBh IGNoaWxkIHJlbCwgdGhlIGdyb3VwZWQgcmVsIGZvciBpdHMgcGFyZW50IHJlbCBtdXN0IGhhdmUK KwkgKiBiZWVuIGNyZWF0ZWQgaWYgaXQgY2FuLiAgU28gd2UgY2FuIGp1c3QgdXNlIHBhcmVudCdz IFJlbEFnZ0luZm8gaWYgdGhlcmUKKwkgKiBpcyBvbmUsIHdpdGggYXBwcm9wcmlhdGUgdmFyaWFi bGUgc3Vic3RpdHV0aW9ucy4KKwkgKi8KKwlpZiAoSVNfT1RIRVJfUkVMKHJlbCkpCisJeworCQlS ZWxPcHRJbmZvCSAgICpyZWxfZ3JvdXBlZDsKKwkJUmVsQWdnSW5mbwkgICAqYWdnX2luZm87CisJ CVJlbGlkcwkJCXBhcmVudF9yZWxpZHMgPSBOVUxMOworCQlBcHBlbmRSZWxJbmZvICoqYXBwaW5m b3M7CisJCWludAkJCQluYXBwaW5mb3M7CisJCWludAkJCQljbnQ7CisKKwkJYXBwaW5mb3MgPSBm aW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCByZWwtPnJlbGlkcywgJm5hcHBpbmZvcyk7CisK KwkJZm9yIChjbnQgPSAwOyBjbnQgPCBuYXBwaW5mb3M7IGNudCsrKQorCQkJcGFyZW50X3JlbGlk cyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJCQkJICAgYXBwaW5mb3Nb Y250XS0+cGFyZW50X3JlbGlkKTsKKworCQlBc3NlcnQoIWJtc19pc19lbXB0eShwYXJlbnRfcmVs aWRzKSk7CisJCXJlbF9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCBwYXJlbnRfcmVs aWRzLCAmYWdnX2luZm8pOworCisJCWlmIChyZWxfZ3JvdXBlZCA9PSBOVUxMKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJQXNzZXJ0KGFnZ19pbmZvICE9IE5VTEwpOworCisJCWFnZ19pbmZvID0gKFJl bEFnZ0luZm8gKikgYWRqdXN0X2FwcGVuZHJlbF9hdHRycyhyb290LAorCQkJCQkJCQkJCQkJCQkg KE5vZGUgKikgYWdnX2luZm8sCisJCQkJCQkJCQkJCQkJCSBuYXBwaW5mb3MsCisJCQkJCQkJCQkJ CQkJCSBhcHBpbmZvcyk7CisKKwkJcGZyZWUoYXBwaW5mb3MpOworCisJCWFnZ19pbmZvLT5pbnB1 dF9yb3dzID0gcmVsLT5yb3dzOworCQlhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzID0KKwkJCWVzdGlt YXRlX251bV9ncm91cHMocm9vdCwgYWdnX2luZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQlhZ2df aW5mby0+aW5wdXRfcm93cywgTlVMTCwgTlVMTCk7CisKKwkJcmV0dXJuIGFnZ19pbmZvOworCX0K KworCS8qIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91cGVkIHBhdGhzIGZv ciB0aGlzIHJlbGF0aW9uLiAqLworCWlmICghZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9y X3JlbGF0aW9uKHJvb3QsIHJlbCkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBDcmVhdGUg dGFyZ2V0cyBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgYW5kIGZvciB0aGUgaW5wdXQgcGF0aHMgb2Yg dGhlCisJICogZ3JvdXBlZCBwYXRocy4KKwkgKi8KKwl0YXJnZXQgPSBjcmVhdGVfZW1wdHlfcGF0 aHRhcmdldCgpOworCWFnZ19pbnB1dCA9IGNyZWF0ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisKKwkv KiBpbml0aWFsaXplICd0YXJnZXQnIGFuZCAnYWdnX2lucHV0JyAqLworCWlmICghaW5pdF9ncm91 cGluZ190YXJnZXRzKHJvb3QsIHJlbCwgdGFyZ2V0LCBhZ2dfaW5wdXQsICZncnBfZXhwcnNfZXh0 cmEpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEVhZ2VyIGFnZ3JlZ2F0aW9uIG1ha2VzIG5vIHNl bnNlIHcvbyBncm91cGluZyBleHByZXNzaW9ucyAqLworCWlmICgobGlzdF9sZW5ndGgodGFyZ2V0 LT5leHBycykgKyBsaXN0X2xlbmd0aChncnBfZXhwcnNfZXh0cmEpKSA9PSAwKQorCQlyZXR1cm4g TlVMTDsKKworCWdyb3VwX2NsYXVzZXNfZmluYWwgPSByb290LT5wYXJzZS0+Z3JvdXBDbGF1c2U7 CisKKwkvKgorCSAqIElmIHRoZSBhZ2dyZWdhdGlvbiB0YXJnZXQgc2hvdWxkIGhhdmUgZXh0cmEg Z3JvdXBpbmcgZXhwcmVzc2lvbnMgKGluCisJICogb3JkZXIgdG8gZW1pdCBpbnB1dCB2YXJzIGZv ciBqb2luIGNvbmRpdGlvbnMpLCBhZGQgdGhlbSBub3cuIFRoaXMgc3RlcAorCSAqIGluY2x1ZGVz IGFzc2lnbm1lbnQgb2YgdGxlU29ydEdyb3VwUmVmJ3Mgd2hpY2ggd2UgY2FuIGdlbmVyYXRlIG5v dy4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoZ3JwX2V4cHJzX2V4dHJhKSA+IDApCisJeworCQlJ bmRleAkJc29ydGdyb3VwcmVmOworCisJCS8qCisJCSAqIE1ha2UgYSBjb3B5IG9mIHRoZSBncm91 cCBjbGF1c2VzIGFzIHdlJ2xsIG5lZWQgdG8gYWRkIHNvbWUgbW9yZQorCQkgKiBjbGF1c2VzLgor CQkgKi8KKwkJZ3JvdXBfY2xhdXNlc19maW5hbCA9IGxpc3RfY29weShncm91cF9jbGF1c2VzX2Zp bmFsKTsKKworCQkvKiBmaW5kIG91dCB0aGUgY3VycmVudCBtYXggc29ydGdyb3VwcmVmICovCisJ CXNvcnRncm91cHJlZiA9IDA7CisJCWZvcmVhY2gobGMsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCkK KwkJeworCQkJSW5kZXgJCXJlZiA9ICgoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKSktPnJlc3Nv cnRncm91cHJlZjsKKworCQkJaWYgKHJlZiA+IHNvcnRncm91cHJlZikKKwkJCQlzb3J0Z3JvdXBy ZWYgPSByZWY7CisJCX0KKworCQkvKgorCQkgKiBHZW5lcmF0ZSB0aGUgU29ydEdyb3VwQ2xhdXNl J3MgYW5kIGFkZCB0aGUgZXhwcmVzc2lvbnMgdG8gdGhlCisJCSAqIHRhcmdldC4KKwkJICovCisJ CWZvcmVhY2gobGMsIGdycF9leHByc19leHRyYSkKKwkJeworCQkJVmFyCQkgICAqdmFyID0gbGZp cnN0X25vZGUoVmFyLCBsYyk7CisJCQlTb3J0R3JvdXBDbGF1c2UgKmNsID0gbWFrZU5vZGUoU29y dEdyb3VwQ2xhdXNlKTsKKworCQkJLyoKKwkJCSAqIEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENs YXVzZS4KKwkJCSAqCisJCQkgKiBBcyB0aGUgZmluYWwgYWdncmVnYXRpb24gd2lsbCBub3QgdXNl IHRoaXMgZ3JvdXBpbmcgZXhwcmVzc2lvbiwKKwkJCSAqIHdlIGRvbid0IGNhcmUgd2hldGhlciBz b3J0b3AgaXMgPCBvciA+LiBUaGUgdmFsdWUgb2YgbnVsbHNfZmlyc3QKKwkJCSAqIHNob3VsZCBu b3QgbWF0dGVyIGZvciB0aGUgc2FtZSByZWFzb24uCisJCQkgKi8KKwkJCWNsLT50bGVTb3J0R3Jv dXBSZWYgPSArK3NvcnRncm91cHJlZjsKKwkJCWdldF9zb3J0X2dyb3VwX29wZXJhdG9ycyh2YXIt PnZhcnR5cGUsCisJCQkJCQkJCQkgZmFsc2UsIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJICZjbC0+ c29ydG9wLCAmY2wtPmVxb3AsIE5VTEwsCisJCQkJCQkJCQkgJmNsLT5oYXNoYWJsZSk7CisJCQln cm91cF9jbGF1c2VzX2ZpbmFsID0gbGFwcGVuZChncm91cF9jbGF1c2VzX2ZpbmFsLCBjbCk7CisJ CQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhwciAqKSB2YXIsCisJCQkJCQkJ CQkgY2wtPnRsZVNvcnRHcm91cFJlZik7CisKKwkJCS8qCisJCQkgKiBUaGUgYWdncmVnYXRpb24g aW5wdXQgdGFyZ2V0IG11c3QgZW1pdCB0aGlzIHZhciB0b28uCisJCQkgKi8KKwkJCWFkZF9jb2x1 bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIChFeHByICopIHZhciwKKwkJCQkJCQkJCSBjbC0+ dGxlU29ydEdyb3VwUmVmKTsKKwkJfQorCX0KKworCS8qCisJICogQnVpbGQgYSBsaXN0IG9mIGdy b3VwaW5nIGV4cHJlc3Npb25zIGFuZCBhIGxpc3Qgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKwkgKiBT b3J0R3JvdXBDbGF1c2VzLgorCSAqLworCWkgPSAwOworCXJlc3VsdCA9IG1ha2VOb2RlKFJlbEFn Z0luZm8pOworCWZvcmVhY2gobGMsIHRhcmdldC0+ZXhwcnMpCisJeworCQlJbmRleAkJc29ydGdy b3VwcmVmID0gMDsKKwkJU29ydEdyb3VwQ2xhdXNlICpjbDsKKwkJRXhwcgkgICAqdGV4cHI7CisK KwkJdGV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCUFzc2VydChJc0EodGV4cHIsIFZh cikpOworCisJCXNvcnRncm91cHJlZiA9IHRhcmdldC0+c29ydGdyb3VwcmVmc1tpKytdOworCQlp ZiAoc29ydGdyb3VwcmVmID09IDApCisJCQljb250aW51ZTsKKworCQkvKiBmaW5kIHRoZSBTb3J0 R3JvdXBDbGF1c2UgaW4gZ3JvdXBfY2xhdXNlc19maW5hbCAqLworCQljbCA9IGdldF9zb3J0Z3Jv dXByZWZfY2xhdXNlKHNvcnRncm91cHJlZiwgZ3JvdXBfY2xhdXNlc19maW5hbCk7CisKKwkJLyog ZG8gbm90IGFkZCB0aGlzIFNvcnRHcm91cENsYXVzZSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGFk ZGVkICovCisJCWlmIChsaXN0X21lbWJlcihyZXN1bHQtPmdyb3VwX2NsYXVzZXMsIGNsKSkKKwkJ CWNvbnRpbnVlOworCisJCXJlc3VsdC0+Z3JvdXBfY2xhdXNlcyA9IGxhcHBlbmQocmVzdWx0LT5n cm91cF9jbGF1c2VzLCBjbCk7CisJCXJlc3VsdC0+Z3JvdXBfZXhwcnMgPSBsaXN0X2FwcGVuZF91 bmlxdWUocmVzdWx0LT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkJCSB0ZXhwcik7CisJfQorCisJ LyoKKwkgKiBDYWxjdWxhdGUgcGF0aGtleXMgdGhhdCByZXByZXNlbnQgdGhpcyBncm91cGluZyBy ZXF1aXJlbWVudHMuCisJICovCisJcmVzdWx0LT5ncm91cF9wYXRoa2V5cyA9CisJCW1ha2VfcGF0 aGtleXNfZm9yX3NvcnRjbGF1c2VzKHJvb3QsIHJlc3VsdC0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJ CQkJCSAgbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJnZXQodGFyZ2V0KSk7CisKKwkvKgorCSAqIEFk ZCBhZ2dyZWdhdGVzIHRvIHRoZSBncm91cGluZyB0YXJnZXQuCisJICovCisJZm9yZWFjaChsYywg cm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxm aXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJQWdncmVmICAgKmFnZ3JlZjsKKworCQlB c3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJYWdncmVmID0gKEFnZ3Jl ZiAqKSBjb3B5T2JqZWN0KGFjX2luZm8tPmFnZ3JlZik7CisJCW1hcmtfcGFydGlhbF9hZ2dyZWYo YWdncmVmLCBBR0dTUExJVF9JTklUSUFMX1NFUklBTCk7CisKKwkJYWRkX2NvbHVtbl90b19wYXRo dGFyZ2V0KHRhcmdldCwgKEV4cHIgKikgYWdncmVmLCAwKTsKKworCQlyZXN1bHQtPmFnZ19leHBy cyA9IGxhcHBlbmQocmVzdWx0LT5hZ2dfZXhwcnMsIGFnZ3JlZik7CisJfQorCisJLyoKKwkgKiBT aW5jZSBuZWl0aGVyIHRhcmdldCBub3IgYWdnX2lucHV0IGlzIHN1cHBvc2VkIHRvIGJlIGlkZW50 aWNhbCB0byB0aGUKKwkgKiBzb3VyY2UgcmVsdGFyZ2V0LCBjb21wdXRlIHRoZSB3aWR0aCBhbmQg Y29zdCBhZ2Fpbi4KKwkgKi8KKwlzZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIHRhcmdl dCk7CisJc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCBhZ2dfaW5wdXQpOworCisJcmVz dWx0LT5yZWxpZHMgPSBibXNfY29weShyZWwtPnJlbGlkcyk7CisJcmVzdWx0LT50YXJnZXQgPSB0 YXJnZXQ7CisJcmVzdWx0LT5hZ2dfaW5wdXQgPSBhZ2dfaW5wdXQ7CisKKwkvKgorCSAqIFRoZSBu dW1iZXIgb2YgYWdncmVnYXRpb24gaW5wdXQgcm93cyBpcyBzaW1wbHkgdGhlIG51bWJlciBvZiBy b3dzIG9mIHRoZQorCSAqIG5vbi1ncm91cGVkIHJlbGF0aW9uLCB3aGljaCBzaG91bGQgaGF2ZSBi ZWVuIGVzdGltYXRlZCBieSBub3cuCisJICovCisJcmVzdWx0LT5pbnB1dF9yb3dzID0gcmVsLT5y b3dzOworCisJLyogRXN0aW1hdGUgdGhlIG51bWJlciBvZiBncm91cHMgd2l0aCBlcXVhbCBncm91 cGVkIGV4cHJzLiAqLworCXJlc3VsdC0+Z3JvdXBlZF9yb3dzID0gZXN0aW1hdGVfbnVtX2dyb3Vw cyhyb290LCByZXN1bHQtPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCQkgICByZXN1bHQtPmlucHV0 X3Jvd3MsIE5VTEwsIE5VTEwpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGVhZ2Vy X2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbgorICogCSAgQ2hlY2sgaWYgaXQncyBw b3NzaWJsZSB0byBwcm9kdWNlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4K KyAqLworc3RhdGljIGJvb2wKK2VhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlv bihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCUxpc3RDZWxsICAgKmxj OworCisJLyoKKwkgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBlYWdlciBhZ2dyZWdh dGlvbiBjYW5ub3QgaGFuZGxlCisJICogUGxhY2VIb2xkZXJWYXIgKFBIVikuCisJICoKKwkgKiBJ ZiB3ZSBrbmV3IHRoYXQgdGhlIFBIViBzaG91bGQgYmUgZXZhbHVhdGVkIGluIHRoaXMgdGFyZ2V0 IChhbmQgb2YKKwkgKiBjb3Vyc2UsIGlmIGl0cyBleHByZXNzaW9uIG1hdGNoZWQgc29tZSBBZ2dy ZWYgYXJndW1lbnQpLCB3ZSdkIGp1c3QgbGV0CisJICogaW5pdF9ncm91cGluZ190YXJnZXRzIGFk ZCB0aGF0IEFnZ3JlZi4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIGtuZXcKKwkgKiB0aGF0IHRo ZSBQSFYgaXMgZXZhbHVhdGVkIGJlbG93IHRoZSBjdXJyZW50IHJlbCwgd2UgY291bGQgaWdub3Jl IGl0CisJICogYmVjYXVzZSB0aGUgcmVmZXJlbmNpbmcgQWdncmVmIHdvdWxkIHRha2UgY2FyZSBv ZiBwcm9wYWdhdGlvbiBvZiB0aGUKKwkgKiB2YWx1ZSB0byB1cHBlciBqb2lucy4KKwkgKgorCSAq IFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIHNhbWUgUEhWIGNhbiBiZSBldmFsdWF0ZWQgaW4gdGhl IHRhcmdldCBvZiB0aGUKKwkgKiBjdXJyZW50IHJlbCBvciBpbiB0aGF0IG9mIGxvd2VyIHJlbCAt LS0gZGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBwYXRocy4KKwkgKiBGb3IgZXhhbXBsZSwgY29uc2lk ZXIgcmVsLT5yZWxpZHMgPSB7QSwgQiwgQ30gYW5kIGlmIHBoX2V2YWxfYXQgPSB7QiwKKwkgKiBD fS4gUGF0aCAiQSBKT0lOIChCIEpPSU4gQykiIGltcGxpZXMgdGhhdCB0aGUgUEhWIGlzIGV2YWx1 YXRlZCBieSB0aGUKKwkgKiAiKEIgSk9JTiBDKSIsIHdoaWxlIHBhdGggIihBIEpPSU4gQikgSk9J TiBDIiBldmFsdWF0ZXMgdGhlIFBIViBpdHNlbGYuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5y ZWx0YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJ aWYgKElzQShleHByLCBQbGFjZUhvbGRlclZhcikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJ aWYgKElTX1NJTVBMRV9SRUwocmVsKSkKKwl7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJvb3Qt PnNpbXBsZV9ydGVfYXJyYXlbcmVsLT5yZWxpZF07CisKKwkJLyoKKwkJICogcnRla2luZCAhPSBS VEVfUkVMQVRJT04gY2FzZSBpcyBub3Qgc3VwcG9ydGVkIHlldC4KKwkJICovCisJCWlmIChydGUt PnJ0ZWtpbmQgIT0gUlRFX1JFTEFUSU9OKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENh bGxlciBzaG91bGQgb25seSBwYXNzIGJhc2UgcmVsYXRpb25zIG9yIGpvaW5zLiAqLworCUFzc2Vy dChyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwKKwkJICAgcmVsLT5yZWxvcHRr aW5kID09IFJFTE9QVF9KT0lOUkVMKTsKKworCS8qCisJICogQ2hlY2sgaWYgYWxsIGFnZ3JlZ2F0 ZSBleHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkIG9uIHRoaXMgcmVsYXRpb24KKwkgKiBsZXZl bC4KKwkgKi8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJeworCQlBZ2dD bGF1c2VJbmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOworCisJ CUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQkvKgorCQkgKiBHaXZl IHVwIGlmIGFueSBhZ2dyZWdhdGUgbmVlZHMgcmVsYXRpb25zIG90aGVyIHRoYW4gdGhlIGN1cnJl bnQgb25lLgorCQkgKgorCQkgKiBJZiB0aGUgYWdncmVnYXRlIG5lZWRzIHRoZSBjdXJyZW50IHJl bCBwbHVzIGFueXRoaW5nIGVsc2UsIHRoZW4gdGhlCisJCSAqIHByb2JsZW0gaXMgdGhhdCBncm91 cGluZyBvZiB0aGUgY3VycmVudCByZWxhdGlvbiBjb3VsZCBtYWtlIHNvbWUKKwkJICogaW5wdXQg dmFyaWFibGVzIHVuYXZhaWxhYmxlIGZvciB0aGUgImhpZ2hlciBhZ2dyZWdhdGUiLCBhbmQgaXQn ZAorCQkgKiBhbHNvIGRlY3JlYXNlIHRoZSBudW1iZXIgb2YgaW5wdXQgcm93cyB0aGUgImhpZ2hl ciBhZ2dyZWdhdGUiCisJCSAqIHJlY2VpdmVzLgorCQkgKgorCQkgKiBJZiB0aGUgYWdncmVnYXRl IGRvZXMgbm90IGV2ZW4gbmVlZCB0aGUgY3VycmVudCByZWwsIHRoZW4gdGhlCisJCSAqIGN1cnJl bnQgcmVsIHNob3VsZCBiZSBncm91cGVkIGJlY2F1c2Ugd2UgZG8gbm90IHN1cHBvcnQgam9pbiBv ZiB0d28KKwkJICogZ3JvdXBlZCByZWxhdGlvbnMuCisJCSAqLworCQlpZiAoIWJtc19pc19zdWJz ZXQoYWNfaW5mby0+YWdnX2V2YWxfYXQsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBmYWxzZTsK Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGluaXRfZ3JvdXBpbmdfdGFyZ2V0cwor ICoJICBJbml0aWFsaXplIHRhcmdldCBmb3IgZ3JvdXBlZCBwYXRocyAodGFyZ2V0KSBhcyB3ZWxs IGFzIGEgdGFyZ2V0IGZvcgorICoJICBwYXRocyB0aGF0IGdlbmVyYXRlIGlucHV0IGZvciB0aGUg Z3JvdXBlZCBwYXRocyAoYWdnX2lucHV0KS4KKyAqCisgKiBncm91cF9leHByc19leHRyYV9wIHJl Y2VpdmVzIGEgbGlzdCBvZiBWYXIgbm9kZXMgZm9yIHdoaWNoIHdlIG5lZWQgdG8KKyAqIGNvbnN0 cnVjdCBTb3J0R3JvdXBDbGF1c2UuIFRob3NlIHZhcnMgd2lsbCB0aGVuIGJlIHVzZWQgYXMgYWRk aXRpb25hbAorICogZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGZvciB0aGUgc2FrZSBvZiBqb2luIGNs YXVzZXMuCisgKgorICogUmV0dXJuIHRydWUgaWZmIHRoZSB0YXJnZXRzIGNvdWxkIGJlIGluaXRp YWxpemVkLgorICovCitzdGF0aWMgYm9vbAoraW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgUGF0aFRhcmdldCAqdGFyZ2V0LCBQ YXRoVGFyZ2V0ICphZ2dfaW5wdXQsCisJCQkJCSAgTGlzdCAqKmdyb3VwX2V4cHJzX2V4dHJhX3Ap Cit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqcG9zc2libHlfZGVwZW5kZW50ID0gTklM OworCisJZm9yZWFjaChsYywgcmVsLT5yZWx0YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAq ZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkJ LyoKKwkJICogR2l2ZW4gdGhhdCBQbGFjZUhvbGRlclZhciBjdXJyZW50bHkgcHJldmVudHMgdXMg ZnJvbSBkb2luZyBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiwgdGhlIHNvdXJjZSB0YXJnZXQgY2Fu bm90IGNvbnRhaW4gYW55dGhpbmcgbW9yZSBjb21wbGV4CisJCSAqIHRoYW4gYSBWYXIuCisJCSAq LworCQlBc3NlcnQoSXNBKGV4cHIsIFZhcikpOworCisJCS8qIEdldCB0aGUgc29ydGdyb3VwcmVm IGlmIHRoZSBleHByIGNhbiBhY3QgYXMgZ3JvdXBpbmcgZXhwcmVzc2lvbi4gKi8KKwkJc29ydGdy b3VwcmVmID0gZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmKHJvb3QsIGV4cHIpOworCQlpZiAo c29ydGdyb3VwcmVmID4gMCkKKwkJeworCQkJLyoKKwkJCSAqIElmIHRoZSB0YXJnZXQgZXhwcmVz c2lvbiBjYW4gYmUgdXNlZCBhcyB0aGUgZ3JvdXBpbmcga2V5LCBpdAorCQkJICogc2hvdWxkIGJl IGVtaXR0ZWQgYnkgdGhlIGdyb3VwZWQgcGF0aHMgdGhhdCBoYXZlIGJlZW4gcHVzaGVkCisJCQkg KiBkb3duIHRvIHRoaXMgcmVsYXRpb24gbGV2ZWwuCisJCQkgKi8KKwkJCWFkZF9jb2x1bW5fdG9f cGF0aHRhcmdldCh0YXJnZXQsIGV4cHIsIHNvcnRncm91cHJlZik7CisKKwkJCS8qCisJCQkgKiAu Li4gYW5kIGl0IGFsc28gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzCisJCQkg Ki8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIsIHNvcnRncm91 cHJlZik7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoaXNfdmFyX25lZWRlZF9ieV9qb2luKHJv b3QsIChWYXIgKikgZXhwciwgcmVsKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRoZSB2YXJpYWJs ZSBpcyBuZWVkZWQgZm9yIGEgam9pbiwgaG93ZXZlciBpdCdzIG5laXRoZXIgaW4KKwkJCQkgKiB0 aGUgR1JPVVAgQlkgY2xhdXNlIG5vciBjYW4gaXQgYmUgZGVyaXZlZCBmcm9tIGl0IHVzaW5nIEVD LgorCQkJCSAqIChPdGhlcndpc2UgaXQgd291bGQgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGUgdGFy Z2V0cyBhYm92ZS4pCisJCQkJICogV2UgbmVlZCB0byBjb25zdHJ1Y3Qgc3BlY2lhbCBTb3J0R3Jv dXBDbGF1c2UgZm9yIHRoaXMKKwkJCQkgKiB2YXJpYWJsZS4KKwkJCQkgKgorCQkJCSAqIE5vdGUg dGhhdCBpdHMgdGxlU29ydEdyb3VwUmVmIG5lZWRzIHRvIGJlIHVuaXF1ZSB3aXRoaW4KKwkJCQkg KiBhZ2dfaW5wdXQsIHNvIHdlIG5lZWQgdG8gcG9zdHBvbmUgY3JlYXRpb24gb2YgdGhlCisJCQkJ ICogU29ydEdyb3VwQ2xhdXNlJ3MgdW50aWwgd2UncmUgZG9uZSB3aXRoIHRoZSBpdGVyYXRpb24g b2YKKwkJCQkgKiByZWwtPnJlbHRhcmdldC0+ZXhwcnMuIEFsc28gaXQgbWFrZXMgc2Vuc2UgZm9y IHRoZSBjYWxsZXIgdG8KKwkJCQkgKiBkbyBzb21lIG1vcmUgY2hlY2sgYmVmb3JlIGl0IHN0YXJ0 cyB0byBjcmVhdGUgdGhvc2UKKwkJCQkgKiBTb3J0R3JvdXBDbGF1c2Uncy4KKwkJCQkgKi8KKwkJ CQkqZ3JvdXBfZXhwcnNfZXh0cmFfcCA9IGxhcHBlbmQoKmdyb3VwX2V4cHJzX2V4dHJhX3AsIGV4 cHIpOworCQkJfQorCQkJZWxzZSBpZiAoaXNfdmFyX2luX2FnZ3JlZl9vbmx5KHJvb3QsIChWYXIg KikgZXhwcikpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBBbm90aGVyIHJlYXNvbiB3ZSBtaWdodCBu ZWVkIHRoaXMgdmFyaWFibGUgaXMgdGhhdCBzb21lCisJCQkJICogYWdncmVnYXRlIHB1c2hlZCBk b3duIHRvIHRoaXMgcmVsYXRpb24gcmVmZXJlbmNlcyBpdC4gSW4KKwkJCQkgKiBzdWNoIGEgY2Fz ZSwgYWRkIGl0IHRvICJhZ2dfaW5wdXQiLCBidXQgbm90IHRvICJ0YXJnZXQiLgorCQkJCSAqIEhv d2V2ZXIsIGlmIHRoZSBhZ2dyZWdhdGUgaXMgbm90IHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlIHZh cgorCQkJCSAqIHRvIGJlIGluIHRoZSB0YXJnZXQsIHNvbWUgbW9yZSBjaGVja3MgbmVlZCB0byBi ZSBwZXJmb3JtZWQKKwkJCQkgKiBiZWxvdy4KKwkJCQkgKi8KKwkJCQlhZGRfbmV3X2NvbHVtbl90 b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwcik7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJ LyoKKwkJCQkgKiBUaGUgVmFyIGNhbiBiZSBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIGFub3Ro ZXIgZXhwcmVzc2lvbgorCQkJCSAqIG9mIHRoZSB0YXJnZXQsIGJ1dCB3ZSBjYW5ub3QgY2hlY2sg dGhhdCB1bnRpbCB3ZSd2ZSBidWlsdAorCQkJCSAqIGFsbCB0aGUgZXhwcmVzc2lvbnMgZm9yIHRo ZSB0YXJnZXQuCisJCQkJICovCisJCQkJcG9zc2libHlfZGVwZW5kZW50ID0gbGFwcGVuZChwb3Nz aWJseV9kZXBlbmRlbnQsIGV4cHIpOworCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBOb3cgd2Ug Y2FuIGNoZWNrIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gaXMgZnVuY3Rpb25hbGx5IGRlcGVuZGVu dCBvbgorCSAqIGFub3RoZXIgb25lLgorCSAqLworCWZvcmVhY2gobGMsIHBvc3NpYmx5X2RlcGVu ZGVudCkKKwl7CisJCVZhcgkJICAgKnR2YXI7CisJCUxpc3QJICAgKmRlcHMgPSBOSUw7CisJCVJh bmdlVGJsRW50cnkgKnJ0ZTsKKworCQl0dmFyID0gbGZpcnN0X25vZGUoVmFyLCBsYyk7CisJCXJ0 ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbdHZhci0+dmFybm9dOworCisJCS8qCisJCSAqIENo ZWNrIGlmIHRoZSBWYXIgY2FuIGJlIGluIHRoZSBncm91cGluZyBrZXkgZXZlbiB0aG91Z2ggaXQn cyBub3QKKwkJICogbWVudGlvbmVkIGJ5IHRoZSBHUk9VUCBCWSBjbGF1c2UgKGFuZCBjb3VsZCBu b3QgYmUgZGVyaXZlZCB1c2luZworCQkgKiBFQ3MpLgorCQkgKi8KKwkJaWYgKGNoZWNrX2Z1bmN0 aW9uYWxfZ3JvdXBpbmcocnRlLT5yZWxpZCwgdHZhci0+dmFybm8sCisJCQkJCQkJCQkgIHR2YXIt PnZhcmxldmVsc3VwLAorCQkJCQkJCQkJICB0YXJnZXQtPmV4cHJzLCAmZGVwcykpCisJCXsKKwkJ CS8qCisJCQkgKiBUaGUgdmFyIHNob3VsZG4ndCBiZSBhY3R1YWxseSB1c2VkIGZvciBncm91cGlu ZyBrZXkgZXZhbHVhdGlvbgorCQkJICogKGluc3RlYWQsIHRoZSBvbmUgdGhpcyBkZXBlbmRzIG9u IHdpbGwgYmUpLCBzbyBzb3J0Z3JvdXByZWYKKwkJCSAqIHNob3VsZCBub3QgYmUgaW1wb3J0YW50 LgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwgKEV4cHIg KikgdHZhcik7CisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgKEV4 cHIgKikgdHZhcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQXMgbG9uZyBhcyB0 aGUgcXVlcnkgaXMgc2VtYW50aWNhbGx5IGNvcnJlY3QsIGFycml2aW5nIGhlcmUKKwkJCSAqIG1l YW5zIHRoYXQgdGhlIHZhciBpcyByZWZlcmVuY2VkIGJ5IGEgZ2VuZXJpYyBncm91cGluZworCQkJ ICogZXhwcmVzc2lvbiBidXQgbm90IHJlZmVyZW5jZWQgYnkgYW55IGpvaW4uCisJCQkgKgorCQkJ ICogSWYgdGhlIGVhZ2VyIGFnZ3JlZ2F0aW9uIHdpbGwgc3VwcG9ydCBnZW5lcmljIGdyb3VwaW5n CisJCQkgKiBleHByZXNzaW9uIGluIHRoZSBmdXR1cmUsIGNyZWF0ZV9yZWxfYWdnX2luZm8oKSB3 aWxsIGhhdmUgdG8gYWRkCisJCQkgKiB0aGlzIHZhcmlhYmxlIHRvICJhZ2dfaW5wdXQiIHRhcmdl dCBhbmQgYWxzbyBhZGQgdGhlIHdob2xlCisJCQkgKiBnZW5lcmljIGV4cHJlc3Npb24gdG8gInRh cmdldCIuCisJCQkgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVl OworfQorCisvKgorICogaXNfdmFyX2luX2FnZ3JlZl9vbmx5CisgKgkgIENoZWNrIHdoZXRoZXIg Z2l2ZW4gVmFyIGFwcGVhcnMgaW4gQWdncmVmKHMpIHdoaWNoIHdlIGNvbnNpZGVyIHVzYWJsZSBh dAorICoJICByZWxhdGlvbiAvIGpvaW4gbGV2ZWwsIGFuZCBvbmx5IGluIHRoZSBBZ2dyZWYocyku CisgKi8KK3N0YXRpYyBib29sCitpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJv b3QsIFZhciAqdmFyKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+ YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJzdF9u b2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwg QWdncmVmKSk7CisKKwkJaWYgKGJtc19pc19tZW1iZXIodmFyLT52YXJubywgYWNfaW5mby0+YWdn X2V2YWxfYXQpKQorCQkJYnJlYWs7CisJfQorCisJLyogTm8gYWdncmVnYXRlIHJlZmVyZW5jZXMg dGhlIFZhcj8gKi8KKwlpZiAobGMgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogRG9l cyB0aGUgVmFyIGFwcGVhciBpbiB0aGUgdGFyZ2V0IG91dHNpZGUgYWdncmVnYXRlcz8gKi8KKwlm b3JlYWNoKGxjLCByb290LT5wcm9jZXNzZWRfdGxpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxl ID0gbGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGxjKTsKKwkJTGlzdAkgICAqdmFyczsKKworCQlp ZiAoSXNBKHRsZS0+ZXhwciwgQWdncmVmKSkKKwkJCWNvbnRpbnVlOworCisJCXZhcnMgPSBwdWxs X3Zhcl9jbGF1c2UoKE5vZGUgKikgdGxlLT5leHByLAorCQkJCQkJCSAgIFBWQ19SRUNVUlNFX1dJ TkRPV0ZVTkNTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCQlpZiAo bGlzdF9tZW1iZXIodmFycywgdmFyKSkKKwkJeworCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJcmV0 dXJuIGZhbHNlOworCQl9CisKKwkJbGlzdF9mcmVlKHZhcnMpOworCX0KKworCS8qIFRoZSBWYXIg aXMgaW4gYWdncmVnYXRlKHMpIGFuZCBvbmx5IHRoZXJlLiAqLworCXJldHVybiB0cnVlOworfQor CisvKgorICogaXNfdmFyX25lZWRlZF9ieV9qb2luCisgKgkgIENoZWNrIGlmIHRoZSBnaXZlbiBW YXIgaXMgbmVlZGVkIGJ5IGpvaW5zIGFib3ZlIHRoZSBjdXJyZW50IHJlbC4KKyAqCisgKiBDb25z aWRlciBwdXNoaW5nIHRoZSBhZ2dyZWdhdGUgYXZnKGIueSkgZG93biB0byByZWxhdGlvbiBiIGZv ciB0aGUgZm9sbG93aW5nCisgKiBxdWVyeToKKyAqCisgKiAgICBTRUxFQ1QgYS5pLCBhdmcoYi55 KQorICogICAgRlJPTSBhIEpPSU4gYiBPTiBhLmogPSBiLmoKKyAqICAgIEdST1VQIEJZIGEuaTsK KyAqCisgKiBDb2x1bW4gYi5qIG5lZWRzIHRvIGJlIHVzZWQgYXMgdGhlIGdyb3VwaW5nIGtleSBi ZWNhdXNlIG90aGVyd2lzZSBpdCBjYW5ub3QKKyAqIGZpbmQgaXRzIHdheSB0byB0aGUgaW5wdXQg b2YgdGhlIGpvaW4gZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Zhcl9uZWVkZWRf Ynlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsIFJlbE9wdEluZm8gKnJlbCkKK3sK KwlSZWxpZHMJCXJlbGlkczsKKwlpbnQJCQlhdHRubzsKKwlSZWxPcHRJbmZvICpiYXNlcmVsOwor CisJLyoKKwkgKiBOb3RlIHRoYXQgd2hlbiB3ZSBhcmUgY2hlY2tpbmcgaWYgdGhlIFZhciBpcyBu ZWVkZWQgYnkgam9pbnMgYWJvdmUsIHdlCisJICogd2FudCB0byBleGNsdWRlIHRoZSBzaXR1YXRp b24gd2hlcmUgdGhlIFZhciBpcyBvbmx5IG5lZWRlZCBpbiBmaW5hbAorCSAqIG91dHB1dC4gIFNv IGluY2x1ZGUgInJlbGF0aW9uIDAiIGhlcmUuCisJICovCisJcmVsaWRzID0gYm1zX2NvcHkocmVs LT5yZWxpZHMpOworCXJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHJlbGlkcywgMCk7CisKKwliYXNl cmVsID0gZmluZF9iYXNlX3JlbChyb290LCB2YXItPnZhcm5vKTsKKwlhdHRubyA9IHZhci0+dmFy YXR0bm8gLSBiYXNlcmVsLT5taW5fYXR0cjsKKworCXJldHVybiBibXNfbm9uZW1wdHlfZGlmZmVy ZW5jZShiYXNlcmVsLT5hdHRyX25lZWRlZFthdHRub10sIHJlbGlkcyk7Cit9CisKKy8qCisgKiBn ZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYKKyAqCSAgUmV0dXJuIHNvcnRncm91cHJlZiBpZiB0 aGUgZ2l2ZW4gJ2V4cHInIGNhbiBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcKKyAqCSAgZXhwcmVzc2lv biBpbiBncm91cGVkIHBhdGhzIGZvciBiYXNlIG9yIGpvaW4gcmVsYXRpb25zLCBvciAwIG90aGVy d2lzZS4KKyAqCisgKiBOb3RlIHRoYXQgd2UgYWxzbyBuZWVkIHRvIGNoZWNrIGlmIHRoZSAnZXhw cicgaXMga25vd24gZXF1YWwgdG8gb3RoZXIgZXhwcnMKKyAqIGR1ZSB0byBlcXVpdmFsZW5jZSBy ZWxhdGlvbnNoaXBzIHRoYXQgY2FuIGFjdCBhcyBncm91cGluZyBleHByZXNzaW9ucy4KKyAqLwor c3RhdGljIEluZGV4CitnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5lckluZm8gKnJv b3QsIEV4cHIgKmV4cHIpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCByb290 LT5ncm91cF9leHByX2xpc3QpCisJeworCQlHcm91cEV4cHJJbmZvICpnZV9pbmZvID0gbGZpcnN0 X25vZGUoR3JvdXBFeHBySW5mbywgbGMpOworCisJCUFzc2VydChJc0EoZ2VfaW5mby0+ZXhwciwg VmFyKSk7CisKKwkJaWYgKGVxdWFsKGdlX2luZm8tPmV4cHIsIGV4cHIpIHx8CisJCQlleHByc19r bm93bl9lcXVhbChyb290LCAoTm9kZSAqKSBleHByLCAoTm9kZSAqKSBnZV9pbmZvLT5leHByLAor CQkJCQkJCSAgZ2VfaW5mby0+YnRyZWVfb3BmYW1pbHkpKQorCQl7CisJCQlBc3NlcnQoZ2VfaW5m by0+c29ydGdyb3VwcmVmID4gMCk7CisKKwkJCXJldHVybiBnZV9pbmZvLT5zb3J0Z3JvdXByZWY7 CisJCX0KKwl9CisKKwkvKiBUaGUgZXhwcmVzc2lvbiBjYW5ub3QgYmUgdXNlZCBhcyBncm91cGlu ZyBrZXkuICovCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDM1 ZjhmMzA2ZWUuLjYxMWMxNzJlZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z ZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC0zMzEz LDEwICszMzEzLDExIEBAIGFkZF91bmlxdWVfZ3JvdXBfdmFyKFBsYW5uZXJJbmZvICpyb290LCBM aXN0ICp2YXJpbmZvcywKIAogCQkvKgogCQkgKiBEcm9wIGtub3duLWVxdWFsIHZhcnMsIGJ1dCBv bmx5IGlmIHRoZXkgYmVsb25nIHRvIGRpZmZlcmVudAotCQkgKiByZWxhdGlvbnMgKHNlZSBjb21t ZW50cyBmb3IgZXN0aW1hdGVfbnVtX2dyb3VwcykKKwkJICogcmVsYXRpb25zIChzZWUgY29tbWVu dHMgZm9yIGVzdGltYXRlX251bV9ncm91cHMpLiAgV2UgYXJlbid0IHRvbworCQkgKiBmdXNzeSBh Ym91dCB0aGUgc2VtYW50aWNzIG9mICJlcXVhbCIgaGVyZS4KIAkJICovCiAJCWlmICh2YXJkYXRh LT5yZWwgIT0gdmFyaW5mby0+cmVsICYmCi0JCQlleHByc19rbm93bl9lcXVhbChyb290LCB2YXIs IHZhcmluZm8tPnZhcikpCisJCQlleHByc19rbm93bl9lcXVhbChyb290LCB2YXIsIHZhcmluZm8t PnZhciwgSW52YWxpZE9pZCkpCiAJCXsKIAkJCWlmICh2YXJpbmZvLT5uZGlzdGluY3QgPD0gbmRp c3RpbmN0KQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA0NmI2OGZhYjlkLi45Mzc4ZTdk OTEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtNDM0LDYgKzQzNCwxMiBAQCBzdHJ1Y3QgUGxh bm5lckluZm8KIAkgKi8KIAlSZWxJbmZvTGlzdAkJdXBwZXJfcmVsc1tVUFBFUlJFTF9GSU5BTCAr IDFdIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CiAKKwkvKgorCSAqIGxpc3Qgb2Yg Z3JvdXBlZCByZWxhdGlvbiBSZWxBZ2dJbmZvcy4gT25lIGluc3RhbmNlIG9mIFJlbEFnZ0luZm8g cGVyCisJICogaXRlbSBvZiB0aGUgdXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FH R10gbGlzdC4KKwkgKi8KKwlSZWxJbmZvTGlzdCAqYWdnX2luZm9fbGlzdDsKKwogCS8qIFJlc3Vs dCB0bGlzdHMgY2hvc2VuIGJ5IGdyb3VwaW5nX3BsYW5uZXIgZm9yIHVwcGVyLXN0YWdlIHByb2Nl c3NpbmcgKi8KIAlzdHJ1Y3QgUGF0aFRhcmdldCAqdXBwZXJfdGFyZ2V0c1tVUFBFUlJFTF9GSU5B TCArIDFdIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhub2RlLmgKaW5kZXggYzVjNDc1NmIwZi4uZDk3M2JmZjhmZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhub2RlLmgKQEAgLTMxMyw2ICszMTMsMTAgQEAgZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFz ZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAq ZmluZF9iYXNlX3JlbF9ub2VycihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVy biBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVsX2lnbm9yZV9qb2luKFBsYW5uZXJJbmZvICpyb290 LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfam9pbl9yZWwoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbGlkcyByZWxpZHMpOworZXh0ZXJuIHZvaWQgYWRkX2dyb3VwZWRfcmVsKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCQkJUmVsQWdnSW5mbyAqYWdn X2luZm8pOworZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbGlkcyByZWxpZHMsCisJCQkJCQkJCQlSZWxBZ2dJbmZvICoqYWdnX2luZm9fcCk7 CiBleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCSAgUmVsaWRzIGpvaW5yZWxpZHMsCiAJCQkJCQkJCSAgUmVsT3B0SW5mbyAqb3V0ZXJf cmVsLApAQCAtMzQ3LDQgKzM1MSw1IEBAIGV4dGVybiBSZWxPcHRJbmZvICpidWlsZF9jaGlsZF9q b2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQlSZWxPcHRJbmZvICpwYXJlbnRf am9pbnJlbCwgTGlzdCAqcmVzdHJpY3RsaXN0LAogCQkJCQkJCQkJCVNwZWNpYWxKb2luSW5mbyAq c2ppbmZvKTsKIAorZXh0ZXJuIFJlbEFnZ0luZm8gKmNyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiAjZW5kaWYJCQkJCQkJLyogUEFUSE5PREVf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCA4ZjJiZDYwZDQ3Li4zMWVlZDZiNmE4IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aHMuaApAQCAtMTYyLDcgKzE2Miw4IEBAIGV4dGVybiBMaXN0ICpnZW5lcmF0 ZV9qb2luX2ltcGxpZWRfZXF1YWxpdGllc19mb3JfZWNzKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCQkJCSAgUmVsaWRzIGpvaW5fcmVsaWRzLAogCQkJCQkJCQkJCQkJCSAgUmVsaWRzIG91 dGVyX3JlbGlkcywKIAkJCQkJCQkJCQkJCQkgIFJlbE9wdEluZm8gKmlubmVyX3JlbCk7Ci1leHRl cm4gYm9vbCBleHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqaXRlbTEs IE5vZGUgKml0ZW0yKTsKK2V4dGVybiBib29sIGV4cHJzX2tub3duX2VxdWFsKFBsYW5uZXJJbmZv ICpyb290LCBOb2RlICppdGVtMSwgTm9kZSAqaXRlbTIsCisJCQkJCQkJICBPaWQgb3BmYW1pbHkp OwogZXh0ZXJuIEVxdWl2YWxlbmNlQ2xhc3MgKm1hdGNoX2VjbGFzc2VzX3RvX2ZvcmVpZ25fa2V5 X2NvbChQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCQkJICAgRm9yZWlnbktleU9wdElu Zm8gKmZraW5mbywKIAkJCQkJCQkJCQkJCQkJICAgaW50IGNvbG5vKTsKLS0gCjIuMzEuMAoK --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Disposition: attachment; filename="v5-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmfln24 RnJvbSA2MTFmM2ZhOGEwMTFlZjFlYjVlZjBjMjcyMjI2ZGU3MDM2YjM3ZDRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxNDoxOTozOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg NS85XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgZ2VuZXJhdGUgcGF0aHMgZm9yIGdyb3VwZWQK IHJlbGF0aW9ucwoKVGhpcyBjb21taXQgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25zIHRoYXQgZ2Vu ZXJhdGUgcGF0aHMgZm9yIGdyb3VwZWQKcmVsYXRpb25zIGJ5IGFkZGluZyBzb3J0ZWQgYW5kIGhh c2hlZCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcApvZiBwYXRocyBvZiB0aGUgcGxh aW4gYmFzZSBvciBqb2luIHJlbGF0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jIHwgMzA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIHwgIDEyICstCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aHMuaCAgICAgICAgIHwgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwgMzE1IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvYWxscGF0aHMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMK aW5kZXggNTg2YzBlMDdjMC4uM2YzZGJjNDg2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxh bm5lci5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3RsaXN0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXRyZWUuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKIC8qIEJp dG1hc2sgZmxhZ3MgZm9yIHB1c2hkb3duX3NhZmV0eV9pbmZvLnVuc2FmZUZsYWdzICovCkBAIC0z MzA4LDYgKzMzMTAsMzExIEBAIGdlbmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lcklu 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 ZS5jCmluZGV4IDNjZjFkYWMwODcuLjcwZmEyNWE2N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k 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 L3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCAzMWVlZDZiNmE4 Li45NDdmODE0ZjRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAor KysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtNTgsNiArNTgsMTAgQEAgZXh0 ZXJuIHZvaWQgZ2VuZXJhdGVfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCiAJCQkJCQkJCSAgYm9vbCBvdmVycmlkZV9yb3dzKTsKIGV4dGVybiB2b2lkIGdl bmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJCQkgYm9vbCBvdmVycmlkZV9yb3dzKTsKK2V4dGVybiB2b2lkIGdlbmVy YXRlX2dyb3VwZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCSAgIFJlbE9wdElu Zm8gKnJlbF9ncm91cGVkLAorCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWxfcGxhaW4sCisJCQkJ CQkJCSAgIFJlbEFnZ0luZm8gKmFnZ19pbmZvKTsKIGV4dGVybiBpbnQJY29tcHV0ZV9wYXJhbGxl bF93b3JrZXIoUmVsT3B0SW5mbyAqcmVsLCBkb3VibGUgaGVhcF9wYWdlcywKIAkJCQkJCQkJCWRv dWJsZSBpbmRleF9wYWdlcywgaW50IG1heF93b3JrZXJzKTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9w YXJ0aWFsX2JpdG1hcF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAot LSAKMi4zMS4wCgo= --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Disposition: attachment; filename="v5-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmftfa5 RnJvbSA3M2EyOTBjOGY1NGFiZGIxMmFkYTU3NjMxNGFjNjAzN2VmNGRlMWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyOCBGZWIgMjAyNCAxMDowMzo0MSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg Ni85XSBCdWlsZCBncm91cGVkIHJlbGF0aW9ucyBvdXQgb2YgYmFzZSByZWxhdGlvbnMKClRoaXMg Y29tbWl0IGJ1aWxkcyBncm91cGVkIHJlbGF0aW9ucyBmb3IgZWFjaCBiYXNlIHJlbGF0aW9uIGlm IHBvc3NpYmxlLAphbmQgZ2VuZXJhdGVzIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBl ZCBiYXNlIHJlbGF0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jIHwgIDkxICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMgIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgIHwgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwg MTk2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRl eCAzZjNkYmM0ODZlLi5lZjY5OWFiNjMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 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 L3V0aWwvcmVsbm9kZS5jCmluZGV4IDc5Mjg4ZmIyZDMuLjBiMTFiYTE1ZWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgPGxp bWl0cy5oPgogCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL2FwcGVuZGluZm8uaCIKQEAgLTI3LDEyICsyOCwxNSBAQAogI2luY2x1ZGUgIm9wdGlt aXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIK ICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3RsaXN0LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK KyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKIC8qCkBAIC00MTEsNiArNDE1LDEwMyBA 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 aW1pemVyL3BhdGhub2RlLmgKaW5kZXggZDk3M2JmZjhmZi4uZDRiNDQ5OWRiMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmgKQEAgLTMwOSw2ICszMDksMTAgQEAgZXh0ZXJuIHZvaWQgc2V0dXBf c2ltcGxlX3JlbF9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgZXhwYW5k X3BsYW5uZXJfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290LCBpbnQgYWRkX3NpemUpOwogZXh0ZXJu IFJlbE9wdEluZm8gKmJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxp ZCwKIAkJCQkJCQkJCVJlbE9wdEluZm8gKnBhcmVudCk7CitleHRlcm4gUmVsT3B0SW5mbyAqYnVp bGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsCisJCQkJ CQkJCQkJCVJlbEFnZ0luZm8gKiphZ2dfaW5mb19wKTsKK2V4dGVybiBSZWxPcHRJbmZvICpidWls ZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCSBSZWxPcHRJbmZvICpy ZWxfcGxhaW4pOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWwoUGxhbm5lckluZm8g KnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9ub2Vy cihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5k X2Jhc2VfcmVsX2lnbm9yZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwotLSAK Mi4zMS4wCgo= --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Disposition: attachment; filename="v5-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmg2116 RnJvbSA2MDVmNDBjZTIzN2IxZDgwZWY3NjRhYWJmMjg2NWI3ZDc5NWYxZWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzozMzowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg 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 YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICB8ICA0OCArKysrKysrKysKIHNyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgICB8IDEyMyArKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICB8ICA4NCAr KysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMg fCAgNjQgKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDM2MCBpbnNlcnRpb25zKCspLCA0 MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9n ZXFvX2V2YWwuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCmluZGV4 IDExNDExNTY4OTkuLjI3ODg1N2Q3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9nZXFvL2dlcW9fZXZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9f ZXZhbC5jCkBAIC02MCw4ICs2MCwxMiBAQCBnZXFvX2V2YWwoUGxhbm5lckluZm8gKnJvb3QsIEdl bmUgKnRvdXIsIGludCBudW1fZ2VuZSkKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlSZWxPcHRJ bmZvICpqb2lucmVsOwogCUNvc3QJCWZpdG5lc3M7Ci0JaW50CQkJc2F2ZWxlbmd0aDsKLQlzdHJ1 Y3QgSFRBQiAqc2F2ZWhhc2g7CisJaW50CQkJc2F2ZWxlbmd0aF9qb2luX3JlbDsKKwlzdHJ1Y3Qg SFRBQiAqc2F2ZWhhc2hfam9pbl9yZWw7CisJaW50CQkJc2F2ZWxlbmd0aF9ncm91cGVkX3JlbDsK KwlzdHJ1Y3QgSFRBQiAqc2F2ZWhhc2hfZ3JvdXBlZF9yZWw7CisJaW50CQkJc2F2ZWxlbmd0aF9n cm91cGVkX2luZm87CisJc3RydWN0IEhUQUIgKnNhdmVoYXNoX2dyb3VwZWRfaW5mbzsKIAogCS8q CiAJICogQ3JlYXRlIGEgcHJpdmF0ZSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgaG9sZCBhbGwg dGVtcCBzdG9yYWdlCkBAIC03OCwyNSArODIsMzggQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpy b290LCBHZW5lICp0b3VyLCBpbnQgbnVtX2dlbmUpCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG15Y29udGV4dCk7CiAKIAkvKgotCSAqIGdpbW1lX3RyZWUgd2lsbCBhZGQgZW50cmll cyB0byByb290LT5qb2luX3JlbF9saXN0LCB3aGljaCBtYXkgb3IgbWF5Ci0JICogbm90IGFscmVh ZHkgY29udGFpbiBzb21lIGVudHJpZXMuICBUaGUgbmV3bHkgYWRkZWQgZW50cmllcyB3aWxsIGJl Ci0JICogcmVjeWNsZWQgYnkgdGhlIE1lbW9yeUNvbnRleHREZWxldGUgYmVsb3csIHNvIHdlIG11 c3QgZW5zdXJlIHRoYXQgdGhlCi0JICogbGlzdCBpcyByZXN0b3JlZCB0byBpdHMgZm9ybWVyIHN0 YXRlIGJlZm9yZSBleGl0aW5nLiAgV2UgY2FuIGRvIHRoaXMgYnkKLQkgKiB0cnVuY2F0aW5nIHRo ZSBsaXN0IHRvIGl0cyBvcmlnaW5hbCBsZW5ndGguICBOT1RFIHRoaXMgYXNzdW1lcyB0aGF0IGFu eQotCSAqIGFkZGVkIGVudHJpZXMgYXJlIGFwcGVuZGVkIGF0IHRoZSBlbmQhCisJICogZ2ltbWVf dHJlZSB3aWxsIGFkZCBlbnRyaWVzIHRvIHJvb3QtPmpvaW5fcmVsX2xpc3QsIHJvb3QtPmFnZ19p bmZvX2xpc3QKKwkgKiBhbmQgcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQ X0FHR10sIHdoaWNoIG1heSBvciBtYXkgbm90CisJICogYWxyZWFkeSBjb250YWluIHNvbWUgZW50 cmllcy4gIFRoZSBuZXdseSBhZGRlZCBlbnRyaWVzIHdpbGwgYmUgcmVjeWNsZWQKKwkgKiBieSB0 aGUgTWVtb3J5Q29udGV4dERlbGV0ZSBiZWxvdywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCBlYWNo IGxpc3Qgb2YKKwkgKiB0aGUgUmVsSW5mb0xpc3Qgc3RydWN0dXJlcyBpcyByZXN0b3JlZCB0byBp dHMgZm9ybWVyIHN0YXRlIGJlZm9yZQorCSAqIGV4aXRpbmcuICBXZSBjYW4gZG8gdGhpcyBieSB0 cnVuY2F0aW5nIGVhY2ggbGlzdCB0byBpdHMgb3JpZ2luYWwgbGVuZ3RoLgorCSAqIE5PVEUgdGhp cyBhc3N1bWVzIHRoYXQgYW55IGFkZGVkIGVudHJpZXMgYXJlIGFwcGVuZGVkIGF0IHRoZSBlbmQh CiAJICoKLQkgKiBXZSBhbHNvIG11c3QgdGFrZSBjYXJlIG5vdCB0byBtZXNzIHVwIHRoZSBvdXRl ciBqb2luX3JlbF9saXN0LT5oYXNoLCBpZgotCSAqIHRoZXJlIGlzIG9uZS4gIFdlIGNhbiBkbyB0 aGlzIGJ5IGp1c3QgdGVtcG9yYXJpbHkgc2V0dGluZyB0aGUgbGluayB0bwotCSAqIE5VTEwuICAo SWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBlbm91Z2ggam9pbiByZWxzLCB3aGljaCB3ZSB2ZXJ5IGxp a2VseQotCSAqIGFyZSwgYSBuZXcgaGFzaCB0YWJsZSB3aWxsIGdldCBidWlsdCBhbmQgdXNlZCBs b2NhbGx5LikKKwkgKiBXZSBhbHNvIG11c3QgdGFrZSBjYXJlIG5vdCB0byBtZXNzIHVwIHRoZSBv dXRlciBoYXNoIHRhYmxlcyBvZiB0aGUKKwkgKiBSZWxJbmZvTGlzdCBzdHJ1Y3R1cmVzLCBpZiBh bnkuICBXZSBjYW4gZG8gdGhpcyBieSBqdXN0IHRlbXBvcmFyaWx5CisJICogc2V0dGluZyBlYWNo IGxpbmsgdG8gTlVMTC4gIChJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGVub3VnaCBqb2luIHJlbHMs CisJICogd2hpY2ggd2UgdmVyeSBsaWtlbHkgYXJlLCBuZXcgaGFzaCB0YWJsZXMgd2lsbCBnZXQg YnVpbHQgYW5kIHVzZWQKKwkgKiBsb2NhbGx5LikKIAkgKgogCSAqIGpvaW5fcmVsX2xldmVsW10g c2hvdWxkbid0IGJlIGluIHVzZSwgc28ganVzdCBBc3NlcnQgaXQgaXNuJ3QuCiAJICovCi0Jc2F2 ZWxlbmd0aCA9IGxpc3RfbGVuZ3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zKTsKLQlzYXZl aGFzaCA9IHJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2g7CisJc2F2ZWxlbmd0aF9qb2luX3JlbCA9 IGxpc3RfbGVuZ3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zKTsKKwlzYXZlaGFzaF9qb2lu X3JlbCA9IHJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2g7CisKKwlzYXZlbGVuZ3RoX2dyb3VwZWRf cmVsID0KKwkJbGlzdF9sZW5ndGgocm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dS T1VQX0FHR10uaXRlbXMpOworCXNhdmVoYXNoX2dyb3VwZWRfcmVsID0KKwkJcm9vdC0+dXBwZXJf cmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10uaGFzaDsKKworCXNhdmVsZW5ndGhfZ3Jv dXBlZF9pbmZvID0gbGlzdF9sZW5ndGgocm9vdC0+YWdnX2luZm9fbGlzdC0+aXRlbXMpOworCXNh dmVoYXNoX2dyb3VwZWRfaW5mbyA9IHJvb3QtPmFnZ19pbmZvX2xpc3QtPmhhc2g7CisKIAlBc3Nl cnQocm9vdC0+am9pbl9yZWxfbGV2ZWwgPT0gTlVMTCk7CiAKIAlyb290LT5qb2luX3JlbF9saXN0 LT5oYXNoID0gTlVMTDsKKwlyb290LT51cHBlcl9yZWxzW1VQUEVSUkVMX1BBUlRJQUxfR1JPVVBf QUdHXS5oYXNoID0gTlVMTDsKKwlyb290LT5hZ2dfaW5mb19saXN0LT5oYXNoID0gTlVMTDsKIAog CS8qIGNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoIGZvciB0aGUgZ2l2ZW4gY29tYmluYXRpb24gb2Yg cmVsYXRpb25zICovCiAJam9pbnJlbCA9IGdpbW1lX3RyZWUocm9vdCwgdG91ciwgbnVtX2dlbmUp OwpAQCAtMTE4LDEyICsxMzUsMjIgQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5l ICp0b3VyLCBpbnQgbnVtX2dlbmUpCiAJCWZpdG5lc3MgPSBEQkxfTUFYOwogCiAJLyoKLQkgKiBS ZXN0b3JlIGpvaW5fcmVsX2xpc3QgdG8gaXRzIGZvcm1lciBzdGF0ZSwgYW5kIHB1dCBiYWNrIG9y aWdpbmFsCi0JICogaGFzaHRhYmxlIGlmIGFueS4KKwkgKiBSZXN0b3JlIGVhY2ggb2YgdGhlIGxp c3QgaW4gam9pbl9yZWxfbGlzdCwgYWdnX2luZm9fbGlzdCBhbmQKKwkgKiB1cHBlcl9yZWxzW1VQ UEVSUkVMX1BBUlRJQUxfR1JPVVBfQUdHXSB0byBpdHMgZm9ybWVyIHN0YXRlLCBhbmQgcHV0IGJh Y2sKKwkgKiBvcmlnaW5hbCBoYXNodGFibGUgaWYgYW55LgogCSAqLwogCXJvb3QtPmpvaW5fcmVs X2xpc3QtPml0ZW1zID0gbGlzdF90cnVuY2F0ZShyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcywK LQkJCQkJCQkJCQkJICAgc2F2ZWxlbmd0aCk7Ci0Jcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9 IHNhdmVoYXNoOworCQkJCQkJCQkJCQkgICBzYXZlbGVuZ3RoX2pvaW5fcmVsKTsKKwlyb290LT5q b2luX3JlbF9saXN0LT5oYXNoID0gc2F2ZWhhc2hfam9pbl9yZWw7CisKKwlyb290LT51cHBlcl9y ZWxzW1VQUEVSUkVMX1BBUlRJQUxfR1JPVVBfQUdHXS5pdGVtcyA9CisJCWxpc3RfdHJ1bmNhdGUo cm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10uaXRlbXMsCisJCQkJ CSAgc2F2ZWxlbmd0aF9ncm91cGVkX3JlbCk7CisJcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9Q QVJUSUFMX0dST1VQX0FHR10uaGFzaCA9IHNhdmVoYXNoX2dyb3VwZWRfcmVsOworCisJcm9vdC0+ YWdnX2luZm9fbGlzdC0+aXRlbXMgPSBsaXN0X3RydW5jYXRlKHJvb3QtPmFnZ19pbmZvX2xpc3Qt Pml0ZW1zLAorCQkJCQkJCQkJCQkgICBzYXZlbGVuZ3RoX2dyb3VwZWRfaW5mbyk7CisJcm9vdC0+ YWdnX2luZm9fbGlzdC0+aGFzaCA9IHNhdmVoYXNoX2dyb3VwZWRfaW5mbzsKIAogCS8qIHJlbGVh c2UgYWxsIHRoZSBtZW1vcnkgYWNxdWlyZWQgd2l0aGluIGdpbW1lX3RyZWUgKi8KIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKQEAgLTI3OSw2ICszMDYsMjcgQEAgbWVyZ2VfY2x1bXAo UGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsdW1wcywgQ2x1bXAgKm5ld19jbHVtcCwgaW50IG51 bV9nZW5lLAogCQkJCS8qIEZpbmQgYW5kIHNhdmUgdGhlIGNoZWFwZXN0IHBhdGhzIGZvciB0aGlz IGpvaW5yZWwgKi8KIAkJCQlzZXRfY2hlYXBlc3Qoam9pbnJlbCk7CiAKKwkJCQkvKgorCQkJCSAq IEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGlu ZworCQkJCSAqIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0 aW9uIG9uIHRvcCBvZiB0aGUKKwkJCQkgKiBwYXRocyBvZiB0aGlzIHJlbC4gIEFmdGVyIHRoYXQs IHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMgZm9yCisJCQkJICogdGhlIGdyb3VwZWQgcmVsYXRp b24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCQkgKi8KKwkJCQlpZiAoIWJtc19lcXVhbChq b2lucmVsLT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCQl7CisJCQkJCVJlbE9w dEluZm8gICAqcmVsX2dyb3VwZWQ7CisJCQkJCVJlbEFnZ0luZm8gICAqYWdnX2luZm87CisKKwkJ CQkJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwtPnJlbGlkcywK KwkJCQkJCQkJCQkJCSAgICZhZ2dfaW5mbyk7CisJCQkJCWlmIChyZWxfZ3JvdXBlZCkKKwkJCQkJ eworCQkJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCByZWxfZ3JvdXBlZCwgam9pbnJl bCwKKwkJCQkJCQkJCQkJICAgYWdnX2luZm8pOworCQkJCQkJc2V0X2NoZWFwZXN0KHJlbF9ncm91 cGVkKTsKKwkJCQkJfQorCQkJCX0KKwogCQkJCS8qIEFic29yYiBuZXcgY2x1bXAgaW50byBvbGQg Ki8KIAkJCQlvbGRfY2x1bXAtPmpvaW5yZWwgPSBqb2lucmVsOwogCQkJCW9sZF9jbHVtcC0+c2l6 ZSArPSBuZXdfY2x1bXAtPnNpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpp bmRleCBlZjY5OWFiNjMwLi4wZTJjOTg0NDQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Fs bHBhdGhzLmMKQEAgLTM4NjYsNiArMzg2NiwxMCBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFu bmVySW5mbyAqcm9vdCwgaW50IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJ ICoKIAkJICogQWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IgdGhlIGpv aW5yZWwsIHNvIHJ1bgogCQkgKiBzZXRfY2hlYXBlc3QoKS4KKwkJICoKKwkJICogSW4gYWRkaXRp b24sIHdlIGFsc28gcnVuIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMoKSBmb3IgdGhlIGdyb3VwZWQK KwkJICogcmVsYXRpb24gb2YgZWFjaCBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBhbmQgcnVuIHNl dF9jaGVhcGVzdCgpIGZvcgorCQkgKiB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhZnRlcndhcmRzLgog CQkgKi8KIAkJZm9yZWFjaChsYywgcm9vdC0+am9pbl9yZWxfbGV2ZWxbbGV2XSkKIAkJewpAQCAt Mzg4Niw2ICszODkwLDI3IEBAIHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290 LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJLyogRmluZCBhbmQg c2F2ZSB0aGUgY2hlYXBlc3QgcGF0aHMgZm9yIHRoaXMgcmVsICovCiAJCQlzZXRfY2hlYXBlc3Qo cmVsKTsKIAorCQkJLyoKKwkJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJl bCwgY29uc2lkZXIgZ2VuZXJhdGluZworCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBm b3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wIG9mIHRoZQorCQkJICogcGF0aHMgb2YgdGhp cyByZWwuICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzIGZvcgorCQkJICog dGhlIGdyb3VwZWQgcmVsYXRpb24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqLworCQkJ aWYgKCFibXNfZXF1YWwocmVsLT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCXsK KwkJCQlSZWxPcHRJbmZvICAgKnJlbF9ncm91cGVkOworCQkJCVJlbEFnZ0luZm8gICAqYWdnX2lu Zm87CisKKwkJCQlyZWxfZ3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsLT5yZWxp ZHMsCisJCQkJCQkJCQkJCSAgICZhZ2dfaW5mbyk7CisJCQkJaWYgKHJlbF9ncm91cGVkKQorCQkJ CXsKKwkJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCByZWxfZ3JvdXBlZCwgcmVsLAor CQkJCQkJCQkJCSAgIGFnZ19pbmZvKTsKKwkJCQkJc2V0X2NoZWFwZXN0KHJlbF9ncm91cGVkKTsK KwkJCQl9CisJCQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJCXBwcmludChyZWwpOwog I2VuZGlmCkBAIC00NzU0LDYgKzQ3NzksMjkgQEAgZ2VuZXJhdGVfcGFydGl0aW9ud2lzZV9qb2lu X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCWlmIChJU19EVU1N WV9SRUwoY2hpbGRfcmVsKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIEV4Y2VwdCBmb3Ig dGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGluZyBwYXJ0aWFsCisJ CSAqIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3Agb2Yg dGhlIHBhdGhzIG9mCisJCSAqIHRoaXMgcGFydGl0aW9uZWQgY2hpbGQtam9pbi4gIEFmdGVyIHRo YXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMKKwkJICogZm9yIHRoZSBncm91cGVkIHJlbGF0 aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCSAqLworCQlpZiAoIWJtc19lcXVhbChJU19P VEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJlbC0+dG9wX3BhcmVudF9yZWxpZHMgOiByZWwtPnJl bGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQorCQl7CisJCQlSZWxPcHRJbmZv ICAgKnJlbF9ncm91cGVkOworCQkJUmVsQWdnSW5mbyAgICphZ2dfaW5mbzsKKworCQkJcmVsX2dy b3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIGNoaWxkX3JlbC0+cmVsaWRzLAorCQkJCQkJ CQkJCSAgICZhZ2dfaW5mbyk7CisJCQlpZiAocmVsX2dyb3VwZWQpCisJCQl7CisJCQkJZ2VuZXJh dGVfZ3JvdXBlZF9wYXRocyhyb290LCByZWxfZ3JvdXBlZCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJ ICAgYWdnX2luZm8pOworCQkJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJCQl9CisJCX0K KwogI2lmZGVmIE9QVElNSVpFUl9ERUJVRwogCQlwcHJpbnQoY2hpbGRfcmVsKTsKICNlbmRpZgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKaW5kZXggZjNhOTQxMmQxOC4uM2NkYTM2 YzcyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCkBAIC0xNiwxMSArMTYs MTMgQEAKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9hcHBl bmRpbmZvLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvam9pbmluZm8uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvcGF0aHMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3Mu aCIKIAogCiBzdGF0aWMgdm9pZCBtYWtlX3JlbHNfYnlfY2xhdXNlX2pvaW5zKFBsYW5uZXJJbmZv ICpyb290LApAQCAtMzUsNiArMzcsOSBAQCBzdGF0aWMgYm9vbCBoYXNfbGVnYWxfam9pbmNsYXVz ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKIHN0YXRpYyBib29sIHJlc3Ry aWN0aW9uX2lzX2NvbnN0YW50X2ZhbHNlKExpc3QgKnJlc3RyaWN0bGlzdCwKIAkJCQkJCQkJCQkg IFJlbE9wdEluZm8gKmpvaW5yZWwsCiAJCQkJCQkJCQkJICBib29sIG9ubHlfcHVzaGVkX2Rvd24p Oworc3RhdGljIHZvaWQgbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwxLAorCQkJCQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8g KmpvaW5yZWwsCisJCQkJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3Ry aWN0bGlzdCk7CiBzdGF0aWMgdm9pZCBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVs MiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5m bywgTGlzdCAqcmVzdHJpY3RsaXN0KTsKQEAgLTc3MSw2ICs3NzYsMTAgQEAgbWFrZV9qb2luX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMikK IAkJcmV0dXJuIGpvaW5yZWw7CiAJfQogCisJLyogQnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRp b24gZm9yICdqb2lucmVsJyBpZiBwb3NzaWJsZS4gKi8KKwltYWtlX2dyb3VwZWRfam9pbl9yZWwo cm9vdCwgcmVsMSwgcmVsMiwgam9pbnJlbCwgc2ppbmZvLAorCQkJCQkJICByZXN0cmljdGxpc3Qp OworCiAJLyogQWRkIHBhdGhzIHRvIHRoZSBqb2luIHJlbGF0aW9uLiAqLwogCXBvcHVsYXRlX2pv aW5yZWxfd2l0aF9wYXRocyhyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCiAJCQkJ CQkJCXJlc3RyaWN0bGlzdCk7CkBAIC04ODIsNiArODkxLDExNSBAQCBhZGRfb3V0ZXJfam9pbnNf dG9fcmVsaWRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgaW5wdXRfcmVsaWRzLAogCXJldHVy biBpbnB1dF9yZWxpZHM7CiB9CiAKKy8qCisgKiBtYWtlX2dyb3VwZWRfam9pbl9yZWwKKyAqCSAg QnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRpb24gb3V0IG9mICdqb2lucmVsJyBpZiBlYWdlciBh Z2dyZWdhdGlvbiBpcworICoJICBwb3NzaWJsZSBhbmQgdGhlICdqb2lucmVsJyBjYW4gcHJvZHVj ZSBncm91cGVkIHBhdGhzLgorICoKKyAqIFdlIGFsc28gZ2VuZXJhdGUgcGFydGlhbCBhZ2dyZWdh dGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gYnkKKyAqIGpvaW5pbmcgdGhlIGdy b3VwZWQgcGF0aHMgb2YgJ3JlbDEnIHRvIHRoZSBwbGFpbiBwYXRocyBvZiAncmVsMicsIG9yIGJ5 CisgKiBqb2luaW5nIHRoZSBncm91cGVkIHBhdGhzIG9mICdyZWwyJyB0byB0aGUgcGxhaW4gcGF0 aHMgb2YgJ3JlbDEnLgorICovCitzdGF0aWMgdm9pZAorbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAorCQkJCQkgIFJlbE9wdEluZm8gKnJl bDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8s IExpc3QgKnJlc3RyaWN0bGlzdCkKK3sKKwlSZWxpZHMJCQlqb2lucmVsaWRzOworCVJlbE9wdElu Zm8JICAgKnJlbF9ncm91cGVkOworCVJlbEFnZ0luZm8JICAgKmFnZ19pbmZvID0gTlVMTDsKKwlS ZWxPcHRJbmZvCSAgICpyZWwxX2dyb3VwZWQ7CisJUmVsT3B0SW5mbwkgICAqcmVsMl9ncm91cGVk OworCWJvb2wJCQlyZWwxX2VtcHR5OworCWJvb2wJCQlyZWwyX2VtcHR5OworCisJLyoKKwkgKiBJ ZiB0aGVyZSBhcmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Np b25zLCBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAo cm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3Qg PT0gTklMKQorCQlyZXR1cm47CisKKwlqb2lucmVsaWRzID0gYm1zX3VuaW9uKHJlbDEtPnJlbGlk cywgcmVsMi0+cmVsaWRzKTsKKwlyZWxfZ3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwg am9pbnJlbGlkcywgJmFnZ19pbmZvKTsKKworCWJtc19mcmVlKGpvaW5yZWxpZHMpOworCisJLyoK KwkgKiBDb25zdHJ1Y3QgYSBuZXcgUmVsT3B0SW5mbyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxh dGlvbiBpZiB0aGVyZSBpcyBubworCSAqIGV4aXN0aW5nIG9uZS4KKwkgKi8KKwlpZiAocmVsX2dy b3VwZWQgPT0gTlVMTCkKKwl7CisJCS8qCisJCSAqIFByZXBhcmUgdGhlIGluZm9ybWF0aW9uIHdl IG5lZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMKKwkJICogam9pbiByZWxhdGlv bi4KKwkJICovCisJCWFnZ19pbmZvID0gY3JlYXRlX3JlbF9hZ2dfaW5mbyhyb290LCBqb2lucmVs KTsKKwkJaWYgKGFnZ19pbmZvID09IE5VTEwpCisJCQlyZXR1cm47CisKKwkJLyogYnVpbGQgYSBn cm91cGVkIHJlbGF0aW9uIG91dCBvZiB0aGUgcGxhaW4gcmVsYXRpb24gKi8KKwkJcmVsX2dyb3Vw ZWQgPSBidWlsZF9ncm91cGVkX3JlbChyb290LCBqb2lucmVsKTsKKwkJcmVsX2dyb3VwZWQtPnJl bHRhcmdldCA9IGFnZ19pbmZvLT50YXJnZXQ7CisJCXJlbF9ncm91cGVkLT5yb3dzID0gYWdnX2lu Zm8tPmdyb3VwZWRfcm93czsKKworCQkvKgorCQkgKiBNYWtlIHRoZSBncm91cGVkIHJlbGF0aW9u IGF2YWlsYWJsZSBmb3IgZnVydGhlciBqb2luaW5nIG9yIGZvcgorCQkgKiBhY3RpbmcgYXMgdGhl IHVwcGVyIHJlbCByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBwYXJ0aWFsCisJCSAqIGFnZ3Jl Z2F0aW9uLgorCQkgKi8KKwkJYWRkX2dyb3VwZWRfcmVsKHJvb3QsIHJlbF9ncm91cGVkLCBhZ2df aW5mbyk7CisJfQorCisJQXNzZXJ0KGFnZ19pbmZvICE9IE5VTEwpOworCisJLyoKKwkgKiBJZiB3 ZSd2ZSBhbHJlYWR5IHByb3ZlbiB0aGlzIGdyb3VwZWQgam9pbiByZWxhdGlvbiBpcyBlbXB0eSwg d2UgbmVlZG4ndAorCSAqIGNvbnNpZGVyIGFueSBtb3JlIHBhdGhzIGZvciBpdC4KKwkgKi8KKwlp ZiAoSVNfRFVNTVlfUkVMKHJlbF9ncm91cGVkKSkKKwkJcmV0dXJuOworCisJLyogcmV0cmlldmUg dGhlIGdyb3VwZWQgcmVsYXRpb25zIGZvciB0aGUgdHdvIGlucHV0IHJlbHMgKi8KKwlyZWwxX2dy b3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIHJlbDEtPnJlbGlkcywgTlVMTCk7CisJcmVs Ml9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCByZWwyLT5yZWxpZHMsIE5VTEwpOwor CisJcmVsMV9lbXB0eSA9IChyZWwxX2dyb3VwZWQgPT0gTlVMTCB8fCBJU19EVU1NWV9SRUwocmVs MV9ncm91cGVkKSk7CisJcmVsMl9lbXB0eSA9IChyZWwyX2dyb3VwZWQgPT0gTlVMTCB8fCBJU19E VU1NWV9SRUwocmVsMl9ncm91cGVkKSk7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mg bm8gZ3JvdXBlZCByZWxhdGlvbi4gKi8KKwlpZiAocmVsMV9lbXB0eSAmJiByZWwyX2VtcHR5KQor CQlyZXR1cm47CisKKwkvKgorCSAqIEpvaW4gb2YgdHdvIGdyb3VwZWQgcmVsYXRpb25zIGlzIGN1 cnJlbnRseSBub3Qgc3VwcG9ydGVkLiAgSW4gc3VjaCBhCisJICogY2FzZSwgZ3JvdXBpbmcgb2Yg b25lIHNpZGUgd291bGQgY2hhbmdlIHRoZSBvY2N1cnJlbmNlIG9mIHRoZSBvdGhlcgorCSAqIHNp ZGUncyBhZ2dyZWdhdGUgdHJhbnNpZW50IHN0YXRlcyBvbiB0aGUgaW5wdXQgb2YgdGhlIGZpbmFs IGFnZ3JlZ2F0aW9uLgorCSAqIFRoaXMgY2FuIGJlIGhhbmRsZWQgYnkgYWRqdXN0aW5nIHRoZSB0 cmFuc2llbnQgc3RhdGVzLCBidXQgaXQncyBub3QKKwkgKiB3b3J0aCB0aGUgZWZmb3J0IGZvciBu b3cuCisJICovCisJaWYgKCFyZWwxX2VtcHR5ICYmICFyZWwyX2VtcHR5KQorCQlyZXR1cm47CisK KwkvKiBnZW5lcmF0ZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCBy ZWxhdGlvbiAqLworCWlmICghcmVsMV9lbXB0eSkKKwl7CisJCXNldF9qb2lucmVsX3NpemVfZXN0 aW1hdGVzKHJvb3QsIHJlbF9ncm91cGVkLCByZWwxX2dyb3VwZWQsIHJlbDIsCisJCQkJCQkJCSAg IHNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJv b3QsIHJlbDFfZ3JvdXBlZCwgcmVsMiwgcmVsX2dyb3VwZWQsCisJCQkJCQkJCQlzamluZm8sIHJl c3RyaWN0bGlzdCk7CisJfQorCWVsc2UgaWYgKCFyZWwyX2VtcHR5KQorCXsKKwkJc2V0X2pvaW5y ZWxfc2l6ZV9lc3RpbWF0ZXMocm9vdCwgcmVsX2dyb3VwZWQsIHJlbDEsIHJlbDJfZ3JvdXBlZCwK KwkJCQkJCQkJICAgc2ppbmZvLCByZXN0cmljdGxpc3QpOworCQlwb3B1bGF0ZV9qb2lucmVsX3dp dGhfcGF0aHMocm9vdCwgcmVsMSwgcmVsMl9ncm91cGVkLCByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJ CXNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwl9Cit9CisKIC8qCiAgKiBwb3B1bGF0ZV9qb2lucmVs X3dpdGhfcGF0aHMKICAqCSAgQWRkIHBhdGhzIHRvIHRoZSBnaXZlbiBqb2lucmVsIGZvciBnaXZl biBwYWlyIG9mIGpvaW5pbmcgcmVsYXRpb25zLiBUaGUKQEAgLTE2NzEsNiArMTc4OSwxMSBAQCB0 cnlfcGFydGl0aW9ud2lzZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwx LCBSZWxPcHRJbmZvICpyZWwyLAogCQkJCQkJIGFkanVzdF9jaGlsZF9yZWxpZHMoam9pbnJlbC0+ cmVsaWRzLAogCQkJCQkJCQkJCQkgbmFwcGluZm9zLCBhcHBpbmZvcykpKTsKIAorCQkvKiBCdWls ZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBmb3IgJ2NoaWxkX2pvaW5yZWwnIGlmIHBvc3NpYmxl ICovCisJCW1ha2VfZ3JvdXBlZF9qb2luX3JlbChyb290LCBjaGlsZF9yZWwxLCBjaGlsZF9yZWwy LAorCQkJCQkJCSAgY2hpbGRfam9pbnJlbCwgY2hpbGRfc2ppbmZvLAorCQkJCQkJCSAgY2hpbGRf cmVzdHJpY3RsaXN0KTsKKwogCQkvKiBBbmQgbWFrZSBwYXRocyBmb3IgdGhlIGNoaWxkIGpvaW4g Ki8KIAkJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsIGNoaWxkX3JlbDEsIGNoaWxk X3JlbDIsCiAJCQkJCQkJCQljaGlsZF9qb2lucmVsLCBjaGlsZF9zamluZm8sCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNTMyMGRhNTFhMC4uNGE2Mzg2YTA5ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMjI1LDcgKzIyNSw2IEBAIHN0YXRpYyB2 b2lkIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRf cmVsLAogCQkJCQkJCQkJICBjb25zdCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAogCQkJCQkJ CQkJICBncm91cGluZ19zZXRzX2RhdGEgKmdkLAotCQkJCQkJCQkJICBkb3VibGUgZE51bUdyb3Vw cywKIAkJCQkJCQkJCSAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSk7CiBzdGF0aWMgUmVsT3B0 SW5mbyAqY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCQkJCQkgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCkBAIC0zOTEzLDkgKzM5MTIsNyBA QCBjcmVhdGVfb3JkaW5hcnlfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkgICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhLAog CQkJCQkJCSAgIFJlbE9wdEluZm8gKipwYXJ0aWFsbHlfZ3JvdXBlZF9yZWxfcCkKIHsKLQlQYXRo CSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOwogCVJl bE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbCA9IE5VTEw7Ci0JZG91YmxlCQlkTnVtR3Jv dXBzOwogCVBhcnRpdGlvbndpc2VBZ2dyZWdhdGVUeXBlIHBhdHlwZSA9IFBBUlRJVElPTldJU0Vf QUdHUkVHQVRFX05PTkU7CiAKIAkvKgpAQCAtMzk5NiwyMyArMzk5MywyMSBAQCBjcmVhdGVfb3Jk aW5hcnlfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0 X3JlbCwKIAogCS8qIEdhdGhlciBhbnkgcGFydGlhbGx5IGdyb3VwZWQgcGFydGlhbCBwYXRocy4g Ki8KIAlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+ cGFydGlhbF9wYXRobGlzdCkKLQl7CiAJCWdhdGhlcl9ncm91cGluZ19wYXRocyhyb290LCBwYXJ0 aWFsbHlfZ3JvdXBlZF9yZWwpOwotCQlzZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVs KTsKLQl9CiAKIAkvKgotCSAqIEVzdGltYXRlIG51bWJlciBvZiBncm91cHMuCisJICogTm93IGNo b29zZSB0aGUgYmVzdCBwYXRoKHMpIGZvciBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwuCisJICoKKwkg KiBOb3RlIHRoYXQgdGhlIG5vbi1wYXJ0aWFsIHBhdGhzIGNhbiBjb21lIGVpdGhlciBmcm9tIHRo ZSBHYXRoZXIgYWJvdmUgb3IKKwkgKiBmcm9tIGVhZ2VyIGFnZ3JlZ2F0aW9uLgogCSAqLwotCWRO dW1Hcm91cHMgPSBnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAotCQkJCQkJCQkJICBjaGVhcGVz dF9wYXRoLT5yb3dzLAotCQkJCQkJCQkJICBnZCwKLQkJCQkJCQkJCSAgZXh0cmEtPnRhcmdldExp c3QpOworCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVs LT5wYXRobGlzdCkKKwkJc2V0X2NoZWFwZXN0KHBhcnRpYWxseV9ncm91cGVkX3JlbCk7CiAKIAkv KiBCdWlsZCBmaW5hbCBncm91cGluZyBwYXRocyAqLwogCWFkZF9wYXRoc190b19ncm91cGluZ19y ZWwocm9vdCwgaW5wdXRfcmVsLCBncm91cGVkX3JlbCwKIAkJCQkJCQkgIHBhcnRpYWxseV9ncm91 cGVkX3JlbCwgYWdnX2Nvc3RzLCBnZCwKLQkJCQkJCQkgIGROdW1Hcm91cHMsIGV4dHJhKTsKKwkJ CQkJCQkgIGV4dHJhKTsKIAogCS8qIEdpdmUgYSBoZWxwZnVsIGVycm9yIGlmIHdlIGZhaWxlZCB0 byBmaW5kIGFueSBpbXBsZW1lbnRhdGlvbiAqLwogCWlmIChncm91cGVkX3JlbC0+cGF0aGxpc3Qg PT0gTklMKQpAQCAtNjg0MywxNiArNjgzOCw0MiBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkgIFJlbE9w dEluZm8gKmdyb3VwZWRfcmVsLAogCQkJCQkJICBSZWxPcHRJbmZvICpwYXJ0aWFsbHlfZ3JvdXBl ZF9yZWwsCiAJCQkJCQkgIGNvbnN0IEFnZ0NsYXVzZUNvc3RzICphZ2dfY29zdHMsCi0JCQkJCQkg IGdyb3VwaW5nX3NldHNfZGF0YSAqZ2QsIGRvdWJsZSBkTnVtR3JvdXBzLAorCQkJCQkJICBncm91 cGluZ19zZXRzX2RhdGEgKmdkLAogCQkJCQkJICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhKQog ewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCVBhdGgJICAgKmNoZWFwZXN0X3Bh dGggPSBpbnB1dF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CisJUGF0aAkgICAqY2hlYXBlc3Rf cGFydGlhbGx5X2dyb3VwZWRfcGF0aCA9IE5VTEw7CiAJTGlzdENlbGwgICAqbGM7CiAJYm9vbAkJ Y2FuX2hhc2ggPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VTRV9IQVNIKSAhPSAwOwog CWJvb2wJCWNhbl9zb3J0ID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfU09SVCkg IT0gMDsKIAlMaXN0CSAgICpoYXZpbmdRdWFsID0gKExpc3QgKikgZXh0cmEtPmhhdmluZ1F1YWw7 CiAJQWdnQ2xhdXNlQ29zdHMgKmFnZ19maW5hbF9jb3N0cyA9ICZleHRyYS0+YWdnX2ZpbmFsX2Nv c3RzOworCWRvdWJsZQkJZE51bUdyb3VwcyA9IDA7CisJZG91YmxlCQlkTnVtRmluYWxHcm91cHMg PSAwOworCisJLyoKKwkgKiBFc3RpbWF0ZSBudW1iZXIgb2YgZ3JvdXBzIGZvciBub24tc3BsaXQg YWdncmVnYXRpb24uCisJICovCisJZE51bUdyb3VwcyA9IGdldF9udW1iZXJfb2ZfZ3JvdXBzKHJv b3QsCisJCQkJCQkJCQkgIGNoZWFwZXN0X3BhdGgtPnJvd3MsCisJCQkJCQkJCQkgIGdkLAorCQkJ CQkJCQkJICBleHRyYS0+dGFyZ2V0TGlzdCk7CisKKwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVs ICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCisJeworCQljaGVhcGVzdF9wYXJ0 aWFsbHlfZ3JvdXBlZF9wYXRoID0KKwkJCXBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y2hlYXBlc3Rf dG90YWxfcGF0aDsKKworCQkvKgorCQkgKiBFc3RpbWF0ZSBudW1iZXIgb2YgZ3JvdXBzIGZvciBm aW5hbCBwaGFzZSBvZiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkgKi8KKwkJZE51bUZpbmFsR3Jv dXBzID0KKwkJCWdldF9udW1iZXJfb2ZfZ3JvdXBzKHJvb3QsCisJCQkJCQkJCSBjaGVhcGVzdF9w YXJ0aWFsbHlfZ3JvdXBlZF9wYXRoLT5yb3dzLAorCQkJCQkJCQkgZ2QsCisJCQkJCQkJCSBleHRy YS0+dGFyZ2V0TGlzdCk7CisJfQogCiAJaWYgKGNhbl9zb3J0KQogCXsKQEAgLTY5NjQsNyArNjk4 NSw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKmlucHV0X3JlbCwKIAkJCQkJcGF0aCA9IG1ha2Vfb3JkZXJlZF9wYXRoKHJvb3QsCiAJ CQkJCQkJCQkJCSBncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJIHBhdGgsCi0JCQkJCQkJCQkJCSBw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGgsCisJCQkJCQkJCQkJCSBj aGVhcGVzdF9wYXJ0aWFsbHlfZ3JvdXBlZF9wYXRoLAogCQkJCQkJCQkJCQkgaW5mby0+cGF0aGtl eXMpOwogCiAJCQkJCWlmIChwYXRoID09IE5VTEwpCkBAIC02OTgxLDcgKzcwMDIsNyBAQCBhZGRf cGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1 dF9yZWwsCiAJCQkJCQkJCQkJCQkgaW5mby0+Y2xhdXNlcywKIAkJCQkJCQkJCQkJCSBoYXZpbmdR dWFsLAogCQkJCQkJCQkJCQkJIGFnZ19maW5hbF9jb3N0cywKLQkJCQkJCQkJCQkJCSBkTnVtR3Jv dXBzKSk7CisJCQkJCQkJCQkJCQkgZE51bUZpbmFsR3JvdXBzKSk7CiAJCQkJCWVsc2UKIAkJCQkJ CWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJCQkJCQkgY3JlYXRlX2dyb3VwX3Bh dGgocm9vdCwKQEAgLTY5ODksNyArNzAxMCw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJCSAg IHBhdGgsCiAJCQkJCQkJCQkJCQkgICBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJCQkJICAgaGF2 aW5nUXVhbCwKLQkJCQkJCQkJCQkJCSAgIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJCSAgIGRO dW1GaW5hbEdyb3VwcykpOwogCiAJCQkJfQogCQkJfQpAQCAtNzAzMSwxOSArNzA1MiwxNyBAQCBh ZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpp bnB1dF9yZWwsCiAJCSAqLwogCQlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxs eV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCiAJCXsKLQkJCVBhdGgJICAgKnBhdGggPSBwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7Ci0KIAkJCWFkZF9wYXRoKGdyb3Vw ZWRfcmVsLCAoUGF0aCAqKQogCQkJCQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCiAJCQkJCQkJCQkg Z3JvdXBlZF9yZWwsCi0JCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCSBjaGVhcGVzdF9wYXJ0aWFs bHlfZ3JvdXBlZF9wYXRoLAogCQkJCQkJCQkJIGdyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCiAJCQkJ CQkJCQkgQUdHX0hBU0hFRCwKIAkJCQkJCQkJCSBBR0dTUExJVF9GSU5BTF9ERVNFUklBTCwKIAkJ CQkJCQkJCSByb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UsCiAJCQkJCQkJCQkgaGF2aW5nUXVh bCwKIAkJCQkJCQkJCSBhZ2dfZmluYWxfY29zdHMsCi0JCQkJCQkJCQkgZE51bUdyb3VwcykpOwor CQkJCQkJCQkJIGROdW1GaW5hbEdyb3VwcykpOwogCQl9CiAJfQogCkBAIC03MDkzLDYgKzcxMTIs MTMgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJ Ym9vbAkJY2FuX2hhc2ggPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VTRV9IQVNIKSAh PSAwOwogCWJvb2wJCWNhbl9zb3J0ID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0Vf U09SVCkgIT0gMDsKIAorCS8qCisJICogVGhlIHBhcnRpYWxseV9ncm91cGVkX3JlbCBjb3VsZCBo YXZlIGJlZW4gYWxyZWFkeSBjcmVhdGVkIGR1ZSB0byBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgor CSAqLworCXBhcnRpYWxseV9ncm91cGVkX3JlbCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwgaW5w dXRfcmVsLT5yZWxpZHMsIE5VTEwpOworCUFzc2VydChlbmFibGVfZWFnZXJfYWdncmVnYXRlIHx8 IHBhcnRpYWxseV9ncm91cGVkX3JlbCA9PSBOVUxMKTsKKwogCS8qCiAJICogQ29uc2lkZXIgd2hl dGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFydGlhbGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwK IAkgKiBwYXRocy4gIFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFs IHBhdGgsIGFuZCBvbmx5IGlmCkBAIC03MTE2LDE5ICs3MTQyLDI3IEBAIGNyZWF0ZV9wYXJ0aWFs X2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCSAqIElmIHdlIGNhbid0IHBhcnRp YWxseSBhZ2dyZWdhdGUgcGFydGlhbCBwYXRocywgYW5kIHdlIGNhbid0IHBhcnRpYWxseQogCSAq IGFnZ3JlZ2F0ZSBub24tcGFydGlhbCBwYXRocywgdGhlbiBkb24ndCBib3RoZXIgY3JlYXRpbmcg dGhlIG5ldwogCSAqIFJlbE9wdEluZm8gYXQgYWxsLCB1bmxlc3MgdGhlIGNhbGxlciBzcGVjaWZp ZWQgZm9yY2VfcmVsX2NyZWF0aW9uLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwgY291bGQgaGF2ZSBiZWVuIGFscmVhZHkgY3JlYXRlZCBhbmQKKwkgKiBwb3B1 bGF0ZWQgd2l0aCBhcHByb3ByaWF0ZSBwYXRocyBieSBlYWdlciBhZ2dyZWdhdGlvbi4KIAkgKi8K IAlpZiAoY2hlYXBlc3RfdG90YWxfcGF0aCA9PSBOVUxMICYmCiAJCWNoZWFwZXN0X3BhcnRpYWxf cGF0aCA9PSBOVUxMICYmCisJCShwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPT0gTlVMTCB8fAorCQkg cGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRobGlzdCA9PSBOSUwpICYmCiAJCSFmb3JjZV9yZWxf Y3JlYXRpb24pCiAJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBCdWlsZCBhIG5ldyB1cHBlciBy ZWxhdGlvbiB0byByZXByZXNlbnQgdGhlIHJlc3VsdCBvZiBwYXJ0aWFsbHkKLQkgKiBhZ2dyZWdh dGluZyB0aGUgcm93cyBmcm9tIHRoZSBpbnB1dCByZWxhdGlvbi4KLQkgKi8KLQlwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwgPSBmZXRjaF91cHBlcl9yZWwocm9vdCwKLQkJCQkJCQkJCQkJVVBQRVJSRUxf UEFSVElBTF9HUk9VUF9BR0csCi0JCQkJCQkJCQkJCWdyb3VwZWRfcmVsLT5yZWxpZHMpOworCSAq IGFnZ3JlZ2F0aW5nIHRoZSByb3dzIGZyb20gdGhlIGlucHV0IHJlbGF0aW9uLiAgVGhlIHJlbGF0 aW9uIG1heSBhbHJlYWR5CisJICogZXhpc3QgZHVlIHRvIGVhZ2VyIGFnZ3JlZ2F0aW9uLCBpbiB3 aGljaCBjYXNlIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlCisJICogaXQuCisJICovCisJaWYgKHBh cnRpYWxseV9ncm91cGVkX3JlbCA9PSBOVUxMKQorCQlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPSBm ZXRjaF91cHBlcl9yZWwocm9vdCwKKwkJCQkJCQkJCQkJCVVQUEVSUkVMX1BBUlRJQUxfR1JPVVBf QUdHLAorCQkJCQkJCQkJCQkJZ3JvdXBlZF9yZWwtPnJlbGlkcyk7CiAJcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLT5jb25zaWRlcl9wYXJhbGxlbCA9CiAJCWdyb3VwZWRfcmVsLT5jb25zaWRlcl9wYXJh bGxlbDsKIAlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnJlbG9wdGtpbmQgPSBncm91cGVkX3JlbC0+ cmVsb3B0a2luZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVu ZGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwppbmRleCA2 YmE0ZWJhMjI0Li5iM2EyODQyMTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9hcHBlbmRpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCkBAIC00OTUsNiArNDk1LDcwIEBAIGFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRv cihOb2RlICpub2RlLAogCQlyZXR1cm4gKE5vZGUgKikgbmV3aW5mbzsKIAl9CiAKKwkvKgorCSAq IFdlIGhhdmUgdG8gcHJvY2VzcyBSZWxBZ2dJbmZvIG5vZGVzIHNwZWNpYWxseS4KKwkgKi8KKwlp ZiAoSXNBKG5vZGUsIFJlbEFnZ0luZm8pKQorCXsKKwkJUmVsQWdnSW5mbyAqb2xkaW5mbyA9IChS ZWxBZ2dJbmZvICopIG5vZGU7CisJCVJlbEFnZ0luZm8gKm5ld2luZm8gPSBtYWtlTm9kZShSZWxB Z2dJbmZvKTsKKworCQkvKiBDb3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAqLworCQltZW1j cHkobmV3aW5mbywgb2xkaW5mbywgc2l6ZW9mKFJlbEFnZ0luZm8pKTsKKworCQluZXdpbmZvLT5y ZWxpZHMgPSBhZGp1c3RfY2hpbGRfcmVsaWRzKG9sZGluZm8tPnJlbGlkcywKKwkJCQkJCQkJCQkJ ICBjb250ZXh0LT5uYXBwaW5mb3MsCisJCQkJCQkJCQkJCSAgY29udGV4dC0+YXBwaW5mb3MpOwor CisJCW5ld2luZm8tPnRhcmdldCA9IChQYXRoVGFyZ2V0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVs X2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCSAgIGNv bnRleHQpOworCisJCW5ld2luZm8tPmFnZ19pbnB1dCA9IChQYXRoVGFyZ2V0ICopCisJCQlhZGp1 c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+YWdnX2lucHV0LAor CQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCW5ld2luZm8tPmdyb3VwX2NsYXVzZXMgPSAoTGlz dCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9sZGluZm8t Pmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3Jv dXBfZXhwcnMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChO b2RlICopIG9sZGluZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJ CW5ld2luZm8tPmFnZ19leHBycyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+YWdnX2V4cHJzLAorCQkJCQkJCQkJCSAgIGNvbnRl eHQpOworCisJCXJldHVybiAoTm9kZSAqKSBuZXdpbmZvOworCX0KKworCS8qCisJICogV2UgaGF2 ZSB0byBwcm9jZXNzIFBhdGhUYXJnZXQgbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJc0Eo bm9kZSwgUGF0aFRhcmdldCkpCisJeworCQlQYXRoVGFyZ2V0ICpvbGR0YXJnZXQgPSAoUGF0aFRh cmdldCAqKSBub2RlOworCQlQYXRoVGFyZ2V0ICpuZXd0YXJnZXQgPSBtYWtlTm9kZShQYXRoVGFy Z2V0KTsKKworCQkvKiBDb3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAqLworCQltZW1jcHko bmV3dGFyZ2V0LCBvbGR0YXJnZXQsIHNpemVvZihQYXRoVGFyZ2V0KSk7CisKKwkJaWYgKG9sZHRh cmdldC0+c29ydGdyb3VwcmVmcykKKwkJeworCQkJU2l6ZQluYnl0ZXMgPSBsaXN0X2xlbmd0aChv bGR0YXJnZXQtPmV4cHJzKSAqIHNpemVvZihJbmRleCk7CisKKwkJCW5ld3RhcmdldC0+ZXhwcnMg PSAoTGlzdCAqKQorCQkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBv bGR0YXJnZXQtPmV4cHJzLAorCQkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQkJbmV3dGFyZ2V0 LT5zb3J0Z3JvdXByZWZzID0gKEluZGV4ICopIHBhbGxvYyhuYnl0ZXMpOworCQkJbWVtY3B5KG5l d3RhcmdldC0+c29ydGdyb3VwcmVmcywgb2xkdGFyZ2V0LT5zb3J0Z3JvdXByZWZzLCBuYnl0ZXMp OworCQl9CisKKwkJcmV0dXJuIChOb2RlICopIG5ld3RhcmdldDsKKwl9CisKIAkvKgogCSAqIE5P VEU6IHdlIGRvIG5vdCBuZWVkIHRvIHJlY3Vyc2UgaW50byBzdWJsaW5rcywgYmVjYXVzZSB0aGV5 IHNob3VsZAogCSAqIGFscmVhZHkgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBzdWJwbGFucyBiZWZv cmUgd2Ugc2VlIHRoZW0uCi0tIAoyLjMxLjAKCg== --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0008-Add-test-cases.patch" Content-Disposition: attachment; filename="v5-0008-Add-test-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmgb4t7 RnJvbSAzZTYyZjcxY2FjMmMxMGY4Zjk0MGRkNmYxYjFhMzRmZDllNjYzN2FlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzo0MToyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg 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 YWxsZWxfc2NoZWR1bGUKaW5kZXggNjc1YzU2NzYxNy4uMGY2YjNlNzhhOCAxMDA2NDQKLS0tIGEv 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 --00000000000076d1e60615badd73 Content-Type: application/octet-stream; name="v5-0009-Add-README.patch" Content-Disposition: attachment; filename="v5-0009-Add-README.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lutmgkr28 RnJvbSBmYWRmZTRmNjZhYTJjOGUxZGM4ZDlmNWE4NmU4ZmI1YTI1ZmRkZWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzo0MTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUg 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= --00000000000076d1e60615badd73--