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 1sbqTV-001pLf-Aj for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Aug 2024 23:53:50 +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 1sbqTT-00AkOP-29 for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Aug 2024 23:53:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sbqTS-00AkOH-DF for pgsql-hackers@lists.postgresql.org; Wed, 07 Aug 2024 23:53:46 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sbqTK-003i5P-G1 for pgsql-hackers@lists.postgresql.org; Wed, 07 Aug 2024 23:53:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1723074817; bh=YgLr38hkWHoNNlnlTuxWEjTAAWW/6B2DDKPGCMH6ADQ=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=AmrwiopWOce5Qp6AmISmcRvQljVX0w8oLePc7s4QSjR+X+zlHGgT/uODGNi/o0GgP UIuC9QpgYiTjjbmWx2l6DVgmCafCkFkHZ9xO0wNuZLeG8RcvC5DTwVi1TM+ri2Whds WB+L55nYJ3r6Rssfh8EQeY4gBUY1KCf/XiHEi4Gm5BsO/sGmAARlAjE54ioNfGTUAW uba1K5SE2gJ7l2rJextxC3m5c7PqS6QQd236fHpWTLj/sJ3XzNkXDe0+UcK+FVIbt4 LLnU4n1zUeHAgtn5O6kqIlNeLO3vP+j4iNQWCNXjnSNFuHPuXQqeryPHgMqf8ZZuvp Yz1iJHDOQluJQ== Received: from [172.20.10.4] (unknown [83.220.238.78]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 04ED35FF8C; Thu, 8 Aug 2024 02:53:35 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------m6WZzCaNLRzsGi00cEWPZinw" Message-ID: Date: Thu, 8 Aug 2024 02:53:35 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes To: Alexander Korotkov Cc: Nikolay Shaplov , pgsql-hackers@lists.postgresql.org, Andrei Lepikhov , jian he , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <8969055.VV5PYv0bhD@thinkpad-pgpro> <38289f6c-b8c0-4713-8fb5-703fe771872a@postgrespro.ru> <759292d5-cb51-4b12-89fa-576c1d9b374d@postgrespro.ru> <531fc0ab-371e-4235-97e3-dd2d077b6995@postgrespro.ru> Content-Language: en-US From: Alena Rybakina In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2024/08/07 21:14:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/08/07 22:38:00 #26285496 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------m6WZzCaNLRzsGi00cEWPZinw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 07.08.2024 04:11, Alexander Korotkov wrote: > On Mon, Aug 5, 2024 at 11:24 PM Alena Rybakina > wrote: >> Ok, thank you for your work) >> >> I think we can leave only the two added libraries in the first patch, >> others are superfluous. > Thank you. > I also have fixed some grammar issues. Thank you) I added some tests to test the functionality of queries using strange operator classes, type mismatches, and a small number of joins. At the same time, I faced an assertion when a request with an unusual operator was processed: EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111' OR                             guid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e'; Coredump: #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=138035230913472)     at ./nptl/pthread_kill.c:44 #1  __pthread_kill_internal (signo=6, threadid=138035230913472) at ./nptl/pthread_kill.c:78 #2  __GI___pthread_kill (threadid=138035230913472, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #3  0x00007d8ad3e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #4  0x00007d8ad3e287f3 in __GI_abort () at ./stdlib/abort.c:79 #5  0x000060ceb55be02f in ExceptionalCondition (conditionName=0x60ceb58058af "op_strategy != 0",     fileName=0x60ceb58053e6 "selfuncs.c", lineNumber=6900) at assert.c:66 #6  0x000060ceb553ed48 in btcostestimate (root=0x60ceb6f9d2a8, path=0x60ceb6fbd2a8, loop_count=1, --Type for more, q to quit, c to continue without paging--     indexStartupCost=0x7fff7ea15380, indexTotalCost=0x7fff7ea15388,     indexSelectivity=0x7fff7ea15390, indexCorrelation=0x7fff7ea15398, indexPages=0x7fff7ea153b0)     at selfuncs.c:6900 #7  0x000060ceb521afca in cost_index (path=0x60ceb6fbd2a8, root=0x60ceb6f9d2a8, loop_count=1,     partial_path=false) at costsize.c:618 #8  0x000060ceb5290c99 in create_index_path (root=0x60ceb6f9d2a8, index=0x60ceb6fbd5e8,     indexclauses=0x60ceb6fbe4c8, indexorderbys=0x0, indexorderbycols=0x0, pathkeys=0x0,     indexscandir=ForwardScanDirection, indexonly=true, required_outer=0x0, loop_count=1,     partial_path=false) at pathnode.c:1024 --Type for more, q to quit, c to continue without paging-- #9  0x000060ceb522df4d in build_index_paths (root=0x60ceb6f9d2a8, rel=0x60ceb70716c8, index=0x60ceb6fbd5e8,     clauses=0x7fff7ea15790, useful_predicate=false, scantype=ST_ANYSCAN, skip_nonnative_saop=0x7fff7ea15607)     at indxpath.c:970 #10 0x000060ceb522d905 in get_index_paths (root=0x60ceb6f9d2a8, rel=0x60ceb70716c8, index=0x60ceb6fbd5e8,     clauses=0x7fff7ea15790, bitindexpaths=0x7fff7ea15678) at indxpath.c:729 #11 0x000060ceb522c846 in create_index_paths (root=0x60ceb6f9d2a8, rel=0x60ceb70716c8) at indxpath.c:286 #12 0x000060ceb5212d29 in set_plain_rel_pathlist (root=0x60ceb6f9d2a8, rel=0x60ceb70716c8, rte=0x60ceb6f63768)     at allpaths.c:794 #13 0x000060ceb5212852 in set_rel_pathlist (root=0x60ceb6f9d2a8, rel=0x60ceb70716c8, rti=1, rte=0x60ceb6f63768)     at allpaths.c:499 #14 0x000060ceb521248c in set_base_rel_pathlists (root=0x60ceb6f9d2a8) at allpaths.c:351 #15 0x000060ceb52121af in make_one_rel (root=0x60ceb6f9d2a8, joinlist=0x60ceb6fbdea8) at allpaths.c:221 #16 0x000060ceb5257a8d in query_planner (root=0x60ceb6f9d2a8, qp_callback=0x60ceb525e2e6 ,     qp_extra=0x7fff7ea15d90) at planmain.c:280 #17 0x000060ceb525a4f0 in grouping_planner (root=0x60ceb6f9d2a8, tuple_fraction=0, setops=0x0) at planner.c:1520 #18 0x000060ceb5259b8f in subquery_planner (glob=0x60ceb70715b8, parse=0x60ceb6f63558, parent_root=0x0,     hasRecursion=false, tuple_fraction=0, setops=0x0) at planner.c:1089 #19 0x000060ceb52581f2 in standard_planner (parse=0x60ceb6f63558,     query_string=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' for more, q to quit, c to continue without paging-- times>, "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", cursorOptions=2048,     boundParams=0x0) at planner.c:415 #20 0x000060ceb5257f1c in planner (parse=0x60ceb6f63558,     query_string=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", cursorOptions=2048,     boundParams=0x0) at planner.c:282 #21 0x000060ceb53b89d9 in pg_plan_query (querytree=0x60ceb6f63558,     query_string=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", cursorOptions=2048,     boundParams=0x0) at postgres.c:912 #22 0x000060ceb501feeb in standard_ExplainOneQuery (query=0x60ceb6f63558, cursorOptions=2048, into=0x0,     es=0x60ceb703acc8,     queryString=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", params=0x0, queryEnv=0x0)     at explain.c:491 #23 0x000060ceb501fd09 in ExplainOneQuery (query=0x60ceb6f63558, cursorOptions=2048, into=0x0, es=0x60ceb703acc8,     queryString=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", params=0x0, queryEnv=0x0)     at explain.c:447 --Type for more, q to quit, c to continue without paging-- #24 0x000060ceb501f939 in ExplainQuery (pstate=0x60ceb703abb8, stmt=0x60ceb6f63398, params=0x0, dest=0x60ceb703ab28)     at explain.c:343 #25 0x000060ceb53c32e0 in standard_ProcessUtility (pstmt=0x60ceb6f63448,     queryString=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", readOnlyTree=false,     context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x60ceb703ab28, qc=0x7fff7ea16530) at utility.c:863 #26 0x000060ceb53c2852 in ProcessUtility (pstmt=0x60ceb6f63448,     queryString=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';", readOnlyTree=false,     context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x60ceb703ab28, qc=0x7fff7ea16530) at utility.c:523 #27 0x000060ceb53c10cd in PortalRunUtility (portal=0x60ceb6fe6c50, pstmt=0x60ceb6f63448, isTopLevel=true,     setHoldSnapshot=true, dest=0x60ceb703ab28, qc=0x7fff7ea16530) at pquery.c:1158 #28 0x000060ceb53c0e0a in FillPortalStore (portal=0x60ceb6fe6c50, isTopLevel=true) at pquery.c:1031 #29 0x000060ceb53c06bb in PortalRun (portal=0x60ceb6fe6c50, count=9223372036854775807, isTopLevel=true, run_once=true,     dest=0x60ceb6f63be8, altdest=0x60ceb6f63be8, qc=0x7fff7ea16780) at pquery.c:763 #30 0x000060ceb53b911f in exec_simple_query (     query_string=0x60ceb6f62020 "EXPLAIN (COSTS OFF)\nSELECT COUNT(*) FROM guid1 WHERE guid_field <> '", '1' , "' OR\n\t\t\t\t\t\t\tguid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';") at postgres.c:1284 #31 0x000060ceb53be4ef in PostgresMain (dbname=0x60ceb6fa0c00 "regression", username=0x60ceb6fa0be8 "alena") --Type for more, q to quit, c to continue without paging--     at postgres.c:4766 #32 0x000060ceb53b4c2a in BackendMain (startup_data=0x7fff7ea16a04 "", startup_data_len=4) at backend_startup.c:107 #33 0x000060ceb52c9b80 in postmaster_child_launch (child_type=B_BACKEND, startup_data=0x7fff7ea16a04 "",     startup_data_len=4, client_sock=0x7fff7ea16a50) at launch_backend.c:274 #34 0x000060ceb52cfe87 in BackendStartup (client_sock=0x7fff7ea16a50) at postmaster.c:3495 #35 0x000060ceb52cd0df in ServerLoop () at postmaster.c:1662 #36 0x000060ceb52cc9a6 in PostmasterMain (argc=3, argv=0x60ceb6ec6d10) at postmaster.c:1360 #37 0x000060ceb517671c in main (argc=3, argv=0x60ceb6ec6d10) at main.c:197 I have fixed it by adding the condition that the opno of the clause must be a member of the opfamily of the index. tp = SearchSysCache3(AMOPOPID,             ObjectIdGetDatum(opno),             CharGetDatum(AMOP_SEARCH),             ObjectIdGetDatum(index->opfamily[indexcol])); if (!HeapTupleIsValid(tp)) return NULL; ReleaseSysCache(tp); I attached the diff file and new versions of patches. -- Regards, Alena Rybakina Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------m6WZzCaNLRzsGi00cEWPZinw Content-Type: text/x-patch; charset=UTF-8; name="v33-0001-Transform-OR-clauses-to-SAOP-s-during-index-matching.patch" Content-Disposition: attachment; filename*0="v33-0001-Transform-OR-clauses-to-SAOP-s-during-index-matchin"; filename*1="g.patch" Content-Transfer-Encoding: base64 RnJvbSA4NzYzZDYxZjY4OWRjNGViY2ExMjU4NjhkNTc2NDY1NzA2NGZkOWM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCA1IEF1ZyAyMDI0IDIxOjI3OjAyICswMzAwClN1 YmplY3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUi1jbGF1c2VzIHRvIFNBT1AncyBkdXJp bmcgaW5kZXggbWF0Y2hpbmcKClJlcGxhY2UgIihpbmRleGtleSBvcCBDMSkgT1IgKGluZGV4 a2V5IG9wIEMyKSAuLi4gKGluZGV4a2V5IG9wIENOKSIgd2l0aAoiaW5kZXhrZXkgb3AgQU5Z KEFSUkFZW0MxLCBDMiwgLi4uXSkiIChTY2FsYXJBcnJheU9wRXhwciBub2RlKSBkdXJpbmcg bWF0Y2hpbmcKYSBjbGF1c2UgdG8gaW5kZXguCgpIZXJlIENpIGlzIGFuIGktdGggY29uc3Rh bnQgb3IgcGFyYW1ldGVycyBleHByZXNzaW9uLCAnZXhwcicgaXMgbm9uLWNvbnN0YW50CmV4 cHJlc3Npb24sICdvcCcgaXMgYW4gb3BlcmF0b3Igd2hpY2ggcmV0dXJucyBib29sZWFuIHJl c3VsdCBhbmQgaGFzIGEgY29tbXV0ZXIKKGZvciB0aGUgY2FzZSBvZiByZXZlcnNlIG9yZGVy IG9mIGNvbnN0YW50IGFuZCBub24tY29uc3RhbnQgcGFydHMgb2YgdGhlCmV4cHJlc3Npb24s IGxpa2UgJ0NuIG9wIGV4cHInKS4KClRoaXMgdHJhbnNmb3JtYXRpb24gYWxsb3dzIGhhbmRs aW5nIGxvbmcgT1ItY2xhdXNlcyB3aXRoIHNpbmdsZSBJbmRleFNjYW4KYXZvaWRpbmcgc2xv d2VyIGJpdG1hcCBzY2Fucy4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNTY3 RUQ2Q0EuMjA0MDUwNCU0MHNpZ2Fldi5ydQpBdXRob3I6IEFsZW5hIFJ5YmFraW5hIDxsZW5h LnJpYmFja2luYUB5YW5kZXgucnU+CkF1dGhvcjogQW5kcmV5IExlcGlraG92IDxhLmxlcGlr aG92QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogUGV0ZXIgR2VvZ2hlZ2FuIDxwZ0Bi b3d0LmllPgpSZXZpZXdlZC1ieTogUmFuaWVyIFZpbGVsYSA8cmFuaWVyLnZmQGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgpSZXZpZXdlZC1ieTogTmlr b2xheSBTaGFwbG92IDxkaHlhbkBuYXRhcmFqLnN1PgotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2luZHhwYXRoLmMgICAgICB8IDI1MyArKysrKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDE4MyArKysr KysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAg ICB8ICA1NyArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAg ICAgIHwgIDQyICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAg ICAgICB8ICAgOSArCiA1IGZpbGVzIGNoYW5nZWQsIDUyMiBpbnNlcnRpb25zKCspLCAyMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwppbmRl eCBjMGZjYzdkNzhkZi4uMzRkZGExYjZkZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvaW5keHBhdGguYwpAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIm9wdGltaXplci9w YXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL3Jlc3RyaWN0aW5mby5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKQEAgLTE3Nyw2ICsxNzksMTAgQEAgc3Rh dGljIEluZGV4Q2xhdXNlICptYXRjaF9yb3djb21wYXJlX3RvX2luZGV4Y29sKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJCQkJCQkJIFJlc3RyaWN0SW5mbyAqcmluZm8sCiAJCQkJCQkJ CQkJCQkgaW50IGluZGV4Y29sLAogCQkJCQkJCQkJCQkJIEluZGV4T3B0SW5mbyAqaW5kZXgp Oworc3RhdGljIEluZGV4Q2xhdXNlICptYXRjaF9vcmNsYXVzZV90b19pbmRleGNvbChQbGFu bmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCQkJICAgUmVzdHJpY3RJbmZvICpyaW5mbywKKwkJ CQkJCQkJCQkJICAgaW50IGluZGV4Y29sLAorCQkJCQkJCQkJCQkgICBJbmRleE9wdEluZm8g KmluZGV4KTsKIHN0YXRpYyBJbmRleENsYXVzZSAqZXhwYW5kX2luZGV4cXVhbF9yb3djb21w YXJlKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJUmVzdHJpY3RJbmZvICpyaW5m bywKIAkJCQkJCQkJCQkJCWludCBpbmRleGNvbCwKQEAgLTIyNDgsNiArMjI1NCwxMCBAQCBt YXRjaF9jbGF1c2VfdG9faW5kZXhjb2woUGxhbm5lckluZm8gKnJvb3QsCiAJewogCQlyZXR1 cm4gbWF0Y2hfcm93Y29tcGFyZV90b19pbmRleGNvbChyb290LCByaW5mbywgaW5kZXhjb2ws IGluZGV4KTsKIAl9CisJZWxzZSBpZiAocmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKHJpbmZv KSkKKwl7CisJCXJldHVybiBtYXRjaF9vcmNsYXVzZV90b19pbmRleGNvbChyb290LCByaW5m bywgaW5kZXhjb2wsIGluZGV4KTsKKwl9CiAJZWxzZSBpZiAoaW5kZXgtPmFtc2VhcmNobnVs bHMgJiYgSXNBKGNsYXVzZSwgTnVsbFRlc3QpKQogCXsKIAkJTnVsbFRlc3QgICAqbnQgPSAo TnVsbFRlc3QgKikgY2xhdXNlOwpAQCAtMjc3MSw2ICsyNzgxLDI0OSBAQCBtYXRjaF9yb3dj b21wYXJlX3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAogCXJldHVybiBOVUxMOwog fQogCisvKgorICogbWF0Y2hfb3JjbGF1c2VfdG9faW5kZXhjb2woKQorICoJICBIYW5kbGVz IHRoZSBPUi1leHByIGNhc2UgZm9yIG1hdGNoX2NsYXVzZV90b19pbmRleGNvbCgpIGluIHRo ZSBjYXNlCisgKgkgIHdoZW4gaXQgY291bGQgYmUgdHJhbnNmb3JtZWQgdG8gU2NhbGFyQXJy YXlPcEV4cHIuCisgKi8KK3N0YXRpYyBJbmRleENsYXVzZSAqCittYXRjaF9vcmNsYXVzZV90 b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCSAgIFJlc3RyaWN0SW5mbyAq cmluZm8sCisJCQkJCQkgICBpbnQgaW5kZXhjb2wsCisJCQkJCQkgICBJbmRleE9wdEluZm8g KmluZGV4KQoreworCUxpc3RDZWxsICAgKmxjOworCUJvb2xFeHByICAgKm9yY2xhdXNlID0g KEJvb2xFeHByICopIHJpbmZvLT5vcmNsYXVzZTsKKwlOb2RlCSAgICppbmRleEV4cHIgPSBO VUxMOworCUxpc3QJICAgKmNvbnN0cyA9IE5JTDsKKwlOb2RlCSAgICphcnJheU5vZGUgPSBO VUxMOworCVNjYWxhckFycmF5T3BFeHByICpzYW9wZXhwciA9IE5VTEw7CisJSGVhcFR1cGxl CW9wZXJ0dXA7CisJRm9ybV9wZ19vcGVyYXRvciBvcGVyZm9ybTsKKwlPaWQJCQltYXRjaE9w bm8gPSBJbnZhbGlkT2lkOworCUluZGV4Q2xhdXNlICppY2xhdXNlOworCU9pZAkJCWNvbnN0 dHlwZSA9IEludmFsaWRPaWQ7CisJT2lkCQkJYXJyYXl0eXBlID0gSW52YWxpZE9pZDsKKwlP aWQJCQlpbnB1dGNvbGxpZCA9IEludmFsaWRPaWQ7CisJYm9vbAkJZmlyc3RUaW1lID0gdHJ1 ZTsKKwlib29sCQloYXZlX3BhcmFtID0gZmFsc2U7CisKKwlBc3NlcnQoSXNBKG9yY2xhdXNl LCBCb29sRXhwcikpOworCUFzc2VydChvcmNsYXVzZS0+Ym9vbG9wID09IE9SX0VYUFIpOwor CisJLyoKKwkgKiBJdGVyYXRlIG92ZXIgT1IgZW50cmllcy4gIENoZWNrIHRoYXQgZWFjaCBP UiBlbnRyeSBpcyBvZiB0aGUgZm9ybToKKwkgKiAoaW5kZXhrZXkgb3BlcmF0b3IgY29uc3Rh bnQpIG9yIChjb25zdGFudCBvcGVyYXRvciBpbmRleGtleSkuIE9wZXJhdG9ycworCSAqIG9m IGFsbCB0aGUgZW50cmllcyBtdXN0IG1hdGNoLiAgQ29uc3RhbnQgbWlnaHQgYmUgZWl0aGVy IENvbnN0IG9yCisJICogUGFyYW0uICBFeGl0IHdpdGggTlVMTCBvbiBmaXJzdCBub24tbWF0 Y2hpbmcgZW50cnkuCisJICovCisJZm9yZWFjaChsYywgb3JjbGF1c2UtPmFyZ3MpCisJewor CQlSZXN0cmljdEluZm8gKnN1YlJpbmZvOworCQlPcEV4cHIJICAgKnN1YkNsYXVzZTsKKwkJ T2lkCQkJb3BubzsKKwkJTm9kZQkgICAqbGVmdG9wLAorCQkJCSAgICpyaWdodG9wOworCQlO b2RlCSAgICpjb25zdEV4cHI7CisKKwkJaWYgKCFJc0EobGZpcnN0KGxjKSwgUmVzdHJpY3RJ bmZvKSkKKwkJCXJldHVybiBOVUxMOworCisJCXN1YlJpbmZvID0gKFJlc3RyaWN0SW5mbyAq KSBsZmlyc3QobGMpOworCisJCS8qIE9ubHkgb3BlcmF0b3IgY2xhdXNlcyBzY2FuIG1hdGNo ICAqLworCQlpZiAoIUlzQShzdWJSaW5mby0+Y2xhdXNlLCBPcEV4cHIpKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJc3ViQ2xhdXNlID0gKE9wRXhwciAqKSBzdWJSaW5mby0+Y2xhdXNlOwor CQlvcG5vID0gc3ViQ2xhdXNlLT5vcG5vOworCisJCS8qIE9ubHkgYmluYXJ5IG9wZXJhdG9y cyBjYW4gbWF0Y2ggICovCisJCWlmIChsaXN0X2xlbmd0aChzdWJDbGF1c2UtPmFyZ3MpICE9 IDIpCisJCQlyZXR1cm4gTlVMTDsKKworCQkvKiBSZXN0cmljdEluZm8gcGFyYW1ldGVycyBt dXN0IG1hdGNoIHBhcmVudCAqLworCQlpZiAoc3ViUmluZm8tPmlzX3B1c2hlZF9kb3duICE9 IHJpbmZvLT5pc19wdXNoZWRfZG93biB8fAorCQkJc3ViUmluZm8tPmlzX2Nsb25lICE9IHJp bmZvLT5pc19jbG9uZSB8fAorCQkJc3ViUmluZm8tPnNlY3VyaXR5X2xldmVsICE9IHJpbmZv LT5zZWN1cml0eV9sZXZlbCB8fAorCQkJIWJtc19lcXVhbChzdWJSaW5mby0+cmVxdWlyZWRf cmVsaWRzLCByaW5mby0+cmVxdWlyZWRfcmVsaWRzKSB8fAorCQkJIWJtc19lcXVhbChzdWJS aW5mby0+aW5jb21wYXRpYmxlX3JlbGlkcywgcmluZm8tPmluY29tcGF0aWJsZV9yZWxpZHMp IHx8CisJCQkhYm1zX2VxdWFsKHN1YlJpbmZvLT5vdXRlcl9yZWxpZHMsIHJpbmZvLT5vdXRl cl9yZWxpZHMpKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJLyogT25seSBvcGVyYXRvciByZXR1 cm5pbmcgYm9vbGVhbiBzdWl0cyB0aGUgdHJhbnNmb3JtYXRpb24gKi8KKwkJaWYgKGdldF9v cF9yZXR0eXBlKG9wbm8pICE9IEJPT0xPSUQpCisJCQlyZXR1cm4gTlVMTDsKKworCQkvKgor CQkgKiBDaGVjayBmb3IgY2xhdXNlcyBvZiB0aGUgZm9ybTogKGluZGV4a2V5IG9wZXJhdG9y IGNvbnN0YW50KSBvcgorCQkgKiAoY29uc3RhbnQgb3BlcmF0b3IgaW5kZXhrZXkpLiAgRGV0 ZXJtaW5lIGluZGV4a2V5IHNpZGUgZmlyc3QsIGNoZWNrCisJCSAqIHRoZSBjb25zdGFudCBs YXRlci4KKwkJICovCisJCWxlZnRvcCA9IChOb2RlICopIGxpbml0aWFsKHN1YkNsYXVzZS0+ YXJncyk7CisJCXJpZ2h0b3AgPSAoTm9kZSAqKSBsc2Vjb25kKHN1YkNsYXVzZS0+YXJncyk7 CisJCWlmIChtYXRjaF9pbmRleF90b19vcGVyYW5kKGxlZnRvcCwgaW5kZXhjb2wsIGluZGV4 KSkKKwkJeworCQkJaW5kZXhFeHByID0gbGVmdG9wOworCQkJY29uc3RFeHByID0gcmlnaHRv cDsKKwkJfQorCQllbHNlIGlmIChtYXRjaF9pbmRleF90b19vcGVyYW5kKHJpZ2h0b3AsIGlu ZGV4Y29sLCBpbmRleCkpCisJCXsKKwkJCW9wbm8gPSBnZXRfY29tbXV0YXRvcihvcG5vKTsK KwkJCWlmICghT2lkSXNWYWxpZChvcG5vKSkKKwkJCXsKKwkJCQkvKiBjb21tdXRhdG9yIGRv ZXNuJ3QgZXhpc3QsIHdlIGNhbid0IHJldmVyc2UgdGhlIG9yZGVyICovCisJCQkJcmV0dXJu IE5VTEw7CisJCQl9CisJCQlpbmRleEV4cHIgPSByaWdodG9wOworCQkJY29uc3RFeHByID0g bGVmdG9wOworCQl9CisJCWVsc2UKKwkJeworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQkv KgorCQkgKiBJZ25vcmUgYW55IFJlbGFiZWxUeXBlIG5vZGUgYWJvdmUgdGhlIG9wZXJhbmRz LiAgVGhpcyBpcyBuZWVkZWQgdG8KKwkJICogYmUgYWJsZSB0byBhcHBseSBpbmRleHNjYW5u aW5nIGluIGJpbmFyeS1jb21wYXRpYmxlLW9wZXJhdG9yIGNhc2VzLgorCQkgKiBOb3RlOiB3 ZSBjYW4gYXNzdW1lIHRoZXJlIGlzIGF0IG1vc3Qgb25lIFJlbGFiZWxUeXBlIG5vZGU7CisJ CSAqIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoKSB3aWxsIGhhdmUgc2ltcGxpZmllZCBpZiBt b3JlIHRoYW4gb25lLgorCQkgKi8KKwkJaWYgKElzQShjb25zdEV4cHIsIFJlbGFiZWxUeXBl KSkKKwkJCWNvbnN0RXhwciA9IChOb2RlICopICgoUmVsYWJlbFR5cGUgKikgY29uc3RFeHBy KS0+YXJnOworCQlpZiAoSXNBKGluZGV4RXhwciwgUmVsYWJlbFR5cGUpKQorCQkJaW5kZXhF eHByID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBpbmRleEV4cHIpLT5hcmc7CisKKwkJ LyogV2UgYWxsb3cgY29uc3RhbnQgdG8gYmUgQ29uc3Qgb3IgUGFyYW0gKi8KKwkJaWYgKCFJ c0EoY29uc3RFeHByLCBDb25zdCkgJiYgIUlzQShjb25zdEV4cHIsIFBhcmFtKSkKKwkJCXJl dHVybiBOVUxMOworCisJCS8qIEZvcmJpZCB0cmFuc2Zvcm1hdGlvbiBmb3IgY29tcG9zaXRl IHR5cGVzLCByZWNvcmRzLiAqLworCQlpZiAodHlwZV9pc19yb3d0eXBlKGV4cHJUeXBlKGNv bnN0RXhwcikpIHx8CisJCQl0eXBlX2lzX3Jvd3R5cGUoZXhwclR5cGUoaW5kZXhFeHByKSkp CisJCQlyZXR1cm4gTlVMTDsKKworCQkvKgorCQkgKiBGb3IgdGhlIGZpcnN0IG1hdGNoaW5n IHF1YWwsIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgb3BlcmF0b3IsIHR5cGUKKwkJICogYW5k IGNvbGxhdGlvbi4gIEZvciB0aGUgb3RoZXIgcXVhbHMganVzdCBjaGVjayB0aGUgbWF0Y2gg d2l0aCB0aGUKKwkJICogZmlyc3QuCisJCSAqLworCQlpZiAoZmlyc3RUaW1lKQorCQl7CisJ CQltYXRjaE9wbm8gPSBvcG5vOworCQkJY29uc3R0eXBlID0gZXhwclR5cGUoY29uc3RFeHBy KTsKKwkJCWFycmF5dHlwZSA9IGdldF9hcnJheV90eXBlKGNvbnN0dHlwZSk7CisJCQlpbnB1 dGNvbGxpZCA9IHN1YkNsYXVzZS0+aW5wdXRjb2xsaWQ7CisKKwkJCS8qCisJCQkgKiBUaGVy ZSBtdXN0IGJlIGFuIGFycmF5IHR5cGUgaW4gb3JkZXIgdG8gY29uc3RydWN0IGFuIGFycmF5 CisJCQkgKiBsYXRlcgorCQkJICovCisJCQlpZiAoIU9pZElzVmFsaWQoYXJyYXl0eXBlKSkK KwkJCQlyZXR1cm4gTlVMTDsKKwkJCWZpcnN0VGltZSA9IGZhbHNlOworCQl9CisJCWVsc2UK KwkJeworCQkJaWYgKG9wbm8gIT0gbWF0Y2hPcG5vIHx8CisJCQkJaW5wdXRjb2xsaWQgIT0g c3ViQ2xhdXNlLT5pbnB1dGNvbGxpZCB8fAorCQkJCWNvbnN0dHlwZSAhPSBleHByVHlwZShj b25zdEV4cHIpKQorCQkJCXJldHVybiBOVUxMOworCQl9CisKKwkJaWYgKElzQShjb25zdEV4 cHIsIFBhcmFtKSkKKwkJCWhhdmVfcGFyYW0gPSB0cnVlOworCQljb25zdHMgPSBsYXBwZW5k KGNvbnN0cywgY29uc3RFeHByKTsKKwl9CisKKwlpZiAoaGF2ZV9wYXJhbSkKKwl7CisJCS8q CisJCSAqIFdlIG5lZWQgdG8gY29uc3RydWN0IGFuIEFycmF5RXhwciBnaXZlbiB3ZSBoYXZl IFBhcmFtJ3Mgbm90IGp1c3QKKwkJICogQ29uc3Qncy4KKwkJICovCisJCUFycmF5RXhwciAg KmFycmF5RXhwciA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisKKwkJLyogYXJyYXlfY29sbGlk IHdpbGwgYmUgc2V0IGJ5IHBhcnNlX2NvbGxhdGUuYyAqLworCQlhcnJheUV4cHItPmVsZW1l bnRfdHlwZWlkID0gY29uc3R0eXBlOworCQlhcnJheUV4cHItPmFycmF5X3R5cGVpZCA9IGFy cmF5dHlwZTsKKwkJYXJyYXlFeHByLT5tdWx0aWRpbXMgPSBmYWxzZTsKKwkJYXJyYXlFeHBy LT5lbGVtZW50cyA9IGNvbnN0czsKKwkJYXJyYXlFeHByLT5sb2NhdGlvbiA9IC0xOworCisJ CWFycmF5Tm9kZSA9IChOb2RlICopIGFycmF5RXhwcjsKKwl9CisJZWxzZQorCXsKKwkJLyoK KwkJICogV2UgaGF2ZSBvbmx5IENvbnN0J3MuICBJbiB0aGlzIGNhc2Ugd2UgY2FuIGNvbnN0 cnVjdCBhbiBhcnJheQorCQkgKiBkaXJlY3RseS4KKwkJICovCisJCWludDE2CQl0eXBsZW47 CisJCWJvb2wJCXR5cGJ5dmFsOworCQljaGFyCQl0eXBhbGlnbjsKKwkJRGF0dW0JICAgKmVs ZW1zOworCQlpbnQJCQlpID0gMDsKKwkJQXJyYXlUeXBlICAqYXJyYXlDb25zdDsKKworCQln ZXRfdHlwbGVuYnl2YWxhbGlnbihjb25zdHR5cGUsICZ0eXBsZW4sICZ0eXBieXZhbCwgJnR5 cGFsaWduKTsKKworCQllbGVtcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAq IGxpc3RfbGVuZ3RoKGNvbnN0cykpOworCQlmb3JlYWNoKGxjLCBjb25zdHMpCisJCQllbGVt c1tpKytdID0gKChDb25zdCAqKSBsZmlyc3QobGMpKS0+Y29uc3R2YWx1ZTsKKworCQlhcnJh eUNvbnN0ID0gY29uc3RydWN0X2FycmF5KGVsZW1zLCBpLCBjb25zdHR5cGUsCisJCQkJCQkJ CQkgdHlwbGVuLCB0eXBieXZhbCwgdHlwYWxpZ24pOworCQlhcnJheU5vZGUgPSAoTm9kZSAq KSBtYWtlQ29uc3QoYXJyYXl0eXBlLCAtMSwgaW5wdXRjb2xsaWQsCisJCQkJCQkJCQkgICAt MSwgUG9pbnRlckdldERhdHVtKGFycmF5Q29uc3QpLAorCQkJCQkJCQkJICAgZmFsc2UsIGZh bHNlKTsKKworCQlwZnJlZShlbGVtcyk7CisJCWxpc3RfZnJlZShjb25zdHMpOworCX0KKwor CS8qIExvb2t1cCBmb3Igb3BlcmF0b3IgdG8gZmV0Y2ggbmVjZXNzYXJ5IGluZm9ybWF0aW9u IGZvciB0aGUgU0FPUCBub2RlICovCisJb3BlcnR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEVS T0lELAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShtYXRjaE9wbm8pKTsKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQob3BlcnR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBvcGVyYXRvciAldSIsIG1hdGNoT3Bubyk7CisKKwlvcGVyZm9ybSA9IChG b3JtX3BnX29wZXJhdG9yKSBHRVRTVFJVQ1Qob3BlcnR1cCk7CisKKwkvKiBCdWlsZCB0aGUg U0FPUCBleHByZXNzaW9uIG5vZGUgKi8KKwlzYW9wZXhwciA9IG1ha2VOb2RlKFNjYWxhckFy cmF5T3BFeHByKTsKKwlzYW9wZXhwci0+b3BubyA9IG1hdGNoT3BubzsKKwlzYW9wZXhwci0+ b3BmdW5jaWQgPSBvcGVyZm9ybS0+b3ByY29kZTsKKwlzYW9wZXhwci0+aGFzaGZ1bmNpZCA9 IEludmFsaWRPaWQ7CisJc2FvcGV4cHItPm5lZ2Z1bmNpZCA9IEludmFsaWRPaWQ7CisJc2Fv cGV4cHItPnVzZU9yID0gdHJ1ZTsKKwlzYW9wZXhwci0+aW5wdXRjb2xsaWQgPSBpbnB1dGNv bGxpZDsKKwlzYW9wZXhwci0+YXJncyA9IGxpc3RfbWFrZTIoaW5kZXhFeHByLCBhcnJheU5v ZGUpOworCXNhb3BleHByLT5sb2NhdGlvbiA9IC0xOworCisJUmVsZWFzZVN5c0NhY2hlKG9w ZXJ0dXApOworCisJLyoKKwkgKiBGaW5hbGx5IGJ1aWxkIGFuIEluZGV4Q2xhdXNlIGJhc2Vk IG9uIHRoZSBTQU9QIG5vZGUuCisJICovCisJaWNsYXVzZSA9IG1ha2VOb2RlKEluZGV4Q2xh dXNlKTsKKwlpY2xhdXNlLT5yaW5mbyA9IG1ha2VfcmVzdHJpY3RpbmZvKHJvb3QsCisJCQkJ CQkJCQkgICAmc2FvcGV4cHItPnhwciwKKwkJCQkJCQkJCSAgIHJpbmZvLT5pc19wdXNoZWRf ZG93biwKKwkJCQkJCQkJCSAgIHJpbmZvLT5oYXNfY2xvbmUsCisJCQkJCQkJCQkgICByaW5m by0+aXNfY2xvbmUsCisJCQkJCQkJCQkgICByaW5mby0+cHNldWRvY29uc3RhbnQsCisJCQkJ CQkJCQkgICByaW5mby0+c2VjdXJpdHlfbGV2ZWwsCisJCQkJCQkJCQkgICByaW5mby0+cmVx dWlyZWRfcmVsaWRzLAorCQkJCQkJCQkJICAgcmluZm8tPmluY29tcGF0aWJsZV9yZWxpZHMs CisJCQkJCQkJCQkgICByaW5mby0+b3V0ZXJfcmVsaWRzKTsKKwlpY2xhdXNlLT5pbmRleHF1 YWxzID0gbGlzdF9tYWtlMShpY2xhdXNlLT5yaW5mbyk7CisJaWNsYXVzZS0+bG9zc3kgPSBm YWxzZTsKKwlpY2xhdXNlLT5pbmRleGNvbCA9IGluZGV4Y29sOworCWljbGF1c2UtPmluZGV4 Y29scyA9IE5JTDsKKwlyZXR1cm4gaWNsYXVzZTsKK30KKwogLyoKICAqIGV4cGFuZF9pbmRl eHF1YWxfcm93Y29tcGFyZSAtLS0gZXhwYW5kIGEgc2luZ2xlIGluZGV4cXVhbCBjb25kaXRp b24KICAqCQl0aGF0IGlzIGEgUm93Q29tcGFyZUV4cHIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCBjZjZlYWM1NzM0OS4uYzJiMjU5MzZj OGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4 Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQK QEAgLTE4NDQsMTggKzE4NDQsMTEgQEAgRFJPUCBUQUJMRSBvbmVrX3dpdGhfbnVsbDsKIEVY UExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNh bmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMg PSA0Mik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCi0gICBSZWNoZWNr IENvbmQ6ICgoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAxKSkgT1IgKCh0aG91 c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMykpIE9SICgodGhvdXNhbmQgPSA0MikgQU5E ICh0ZW50aG91cyA9IDQyKSkpCi0gICAtPiAgQml0bWFwT3IKLSAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpCi0gICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91 cyA9IDMpKQotICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3Vz X3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIp IEFORCAodGVudGhvdXMgPSA0MikpCi0oOSByb3dzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRlbmsx X3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0g NDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkpKQorKDIg cm93cykKIAogU0VMRUNUICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFO RCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKQEAg LTE4NjQsMTQgKzE4NTcsMTY2IEBAIFNFTEVDVCAqIEZST00gdGVuazEKICAgICAgIDQyIHwg ICAgNTUzMCB8ICAgMCB8ICAgIDIgfCAgIDIgfCAgICAgIDIgfCAgICAgIDQyIHwgICAgICAg NDIgfCAgICAgICAgICA0MiB8ICAgICAgICA0MiB8ICAgICAgIDQyIHwgIDg0IHwgICA4NSB8 IFFCQUFBQSAgIHwgU0VJQUFBICAgfCBPT09PeHgKICgxIHJvdykKIAorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFO RCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gKFNFTEVDVCAxICsgMikgT1IgdGVudGhv dXMgPSA0Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90 aG91c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQy KSBBTkQgKHRlbnRob3VzID0gQU5ZIChBUlJBWVsxLCAoSW5pdFBsYW4gMSkuY29sMSwgNDJd KSkpCisgICBJbml0UGxhbiAxCisgICAgIC0+ICBSZXN1bHQKKyg0IHJvd3MpCisKK1NFTEVD VCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0g MSBPUiB0ZW50aG91cyA9IChTRUxFQ1QgMSArIDIpIE9SIHRlbnRob3VzID0gNDIpOworIHVu aXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8IGh1bmRyZWQg fCB0aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhvdXMgfCBvZGQg fCBldmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICAgIDQyIHwgICAgNTUzMCB8ICAg MCB8ICAgIDIgfCAgIDIgfCAgICAgIDIgfCAgICAgIDQyIHwgICAgICAgNDIgfCAgICAgICAg ICA0MiB8ICAgICAgICA0MiB8ICAgICAgIDQyIHwgIDg0IHwgICA4NSB8IFFCQUFBQSAgIHwg U0VJQUFBICAgfCBPT09PeHgKKygxIHJvdykKKwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhv dXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0 ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sg Q29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2Fu ZCA9IDk5KSkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQg KHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4g IEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVk ID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91 c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNh bmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAor KDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAz IE9SIHRlbnRob3VzID0gNDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRo b3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVu dGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkpKQorKDIgcm93cykKKworU0VM RUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyB1bmlxdWUxIHwgdW5p cXVlMiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQg fCB0d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0 cmluZ3UxIHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LSstLS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCisgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwg ICAyIHwgICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAg ICAgNDIgfCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwg T09PT3h4CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIg T1IgdGhvdXNhbmQgPSA5OSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVk ID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkpCisg ICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCByb3dz KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAorLS0tLS0t LQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwg NDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQy KSBBTkQgKHRob3VzYW5kIDwgQU5ZICgnezQyLDk5LDQzLDQyfSc6OmludGVnZXJbXSkpKQor ICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRlZ2VyW10pKQor KDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPCA0MiBPUiB0aG91c2FuZCA8IDk5IE9SIDQzID4gdGhv dXNhbmQgT1IgNDIgPiB0aG91c2FuZCk7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygx IHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91 cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5kID0gNDIp IEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpKSBPUiAodGhvdXNh bmQgPSA0MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0g QU5ZICgnezEsM30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDEpCisoOCByb3dzKQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9 IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1bmRy ZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gOTkpIE9SICh0 ZW50aG91cyA8IDIpKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJpdG1h cE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHRob3VzYW5kID0gOTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0ZW50aG91cyA8IDIpCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVu dGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQx KQorKDE2IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1 bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50 aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMjAK KygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0Mikg QU5EICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICgodGhvdXNhbmQg PSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKSkpCiAgICAgICAgICAtPiAgQml0bWFwQW5kCiAg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAog ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKQEAgLTE4 NzksMTEgKzIwMjQsMTMgQEAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50 aG91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5k ID0gNDIpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh0aG91c2FuZCA9IDk5KQotKDExIHJvd3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDk5KSBB TkQgKHRlbnRob3VzID0gMikpCisoMTMgcm93cykKIAogU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKLSAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDk5KTsKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CiAg Y291bnQgCiAtLS0tLS0tCiAgICAgMTAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0 CmluZGV4IDUzZjcwZDcyZWQ2Li5hYmU5OGZmM2M1MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW4ub3V0CkBAIC00Mjc4LDE1ICs0Mjc4LDY0IEBAIHNlbGVjdCAqIGZyb20gdGVu azEgYSBqb2luIHRlbmsxIGIgb24KICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChodW5kcmVkID0gNCkKICAgIC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gdGVuazEgYQotICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAo KHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUyID0gNykpCisgICAg ICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0g QU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKCh1 bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQogICAgICAg ICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gMykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2Vy W10pKQorKDE4IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20g dGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVl MSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5o dW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAg IEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBP UiAoKChhLnVuaXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVk ID0gNCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYgorICAgICAgICAg UmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9IDQpKQorICAgICAg ICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVk ID0gNCkKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEg PSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAgICAg ICAgICAgICBGaWx0ZXI6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykgT1IgKHVu aXF1ZTIgPSA3KSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUy Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDcp Ci0oMTkgcm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE4IHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24K KyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBh bmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9 IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICgoYS51 bmlxdWUxIDwgMjApIE9SIChhLnVuaXF1ZTEgPSAzKSBPUiAoKGEudW5pcXVlMSA9IDEpIEFO RCAoYi51bmlxdWUxID0gMikpIE9SICgoKGEudW5pcXVlMiA9IDMpIE9SIChhLnVuaXF1ZTIg PSA3KSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCisgICAtPiAgU2VxIFNjYW4gb24gdGVuazEg YgorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biB0ZW5rMSBhCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDIw KSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkg KCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKHVuaXF1 ZTEgPCAyMCkgT1IgKHVuaXF1ZTEgPSAzKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUy ID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Vu aXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUx IDwgMjApCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHVuaXF1ZTEgPSAzKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUxID0gMSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKygx NiByb3dzKQogCiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBh IHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbAppbmRleCBlMjk2ODkxY2FiOC4uZjc0YWQ0MTVmYmYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNzI2LDYgKzcyNiwyNCBAQCBEUk9QIFRB QkxFIG9uZWtfd2l0aF9udWxsOwogLS0gQ2hlY2sgYml0bWFwIGluZGV4IHBhdGggcGxhbm5p bmcKIC0tCiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAg V0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMg T1IgdGVudGhvdXMgPSA0Mik7CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3Vz YW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3Vz ID0gNDIpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAo U0VMRUNUIDEgKyAyKSBPUiB0ZW50aG91cyA9IDQyKTsKK1NFTEVDVCAqIEZST00gdGVuazEK KyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9 IChTRUxFQ1QgMSArIDIpIE9SIHRlbnRob3VzID0gNDIpOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5KTsKKwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUICogRlJP TSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRl bnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKQEAgLTczOCw2ICs3NTYsMzAgQEAgU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5 OSk7CiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsx CisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQg PCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPCA0 MiBPUiB0aG91c2FuZCA8IDk5IE9SIDQzID4gdGhvdXNhbmQgT1IgNDIgPiB0aG91c2FuZCk7 CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAz KSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9S IHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIg T1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CitT RUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91 c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRo b3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3Vz YW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91 cyA9IDIpOworCiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXgg Y29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv am9pbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAppbmRleCBkODFmZjYz YmU1My4uNDQ3M2I4ZjA0ZDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pv aW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCkBAIC0xNDMzLDYg KzE0MzMsMTUgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAo YS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKICAgKChhLnVuaXF1ZTIgPSAz IG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKIAorZXhwbGFpbiAoY29z dHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51 bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9y IGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVl MSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUx ID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1 bmRyZWQgPSA0KTsKKwogLS0KIC0tIHRlc3QgcGxhY2VtZW50IG9mIG1vdmFibGUgcXVhbHMg aW4gYSBwYXJhbWV0ZXJpemVkIGpvaW4gdHJlZQogLS0KLS0gCjIuMzQuMQoK --------------m6WZzCaNLRzsGi00cEWPZinw Content-Type: text/x-patch; charset=UTF-8; name="v33-0002-Teach-bitmap-path-generation-about-transforming-OR-c.patch" Content-Disposition: attachment; filename*0="v33-0002-Teach-bitmap-path-generation-about-transforming-OR-"; filename*1="c.patch" Content-Transfer-Encoding: base64 RnJvbSA2YjFlNmY1MzhiZGZiZWFmZGE0NTdmZTg1MWZmZjgyOWQ0ZWJmZDI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCAyOCBKdWwgMjAyNCAxNjozNjozNCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMi8yXSBUZWFjaCBiaXRtYXAgcGF0aCBnZW5lcmF0aW9uIGFib3V0 IHRyYW5zZm9ybWluZwogT1ItY2xhdXNlcyB0byBTQU9QJ3MKCldoZW4gb3B0aW1pemVyIGdl bmVyYXRlcyBiaXRtYXAgcGF0aHMsIGl0IGNvbnNpZGVycyBicmVha2luZyBPUi1jbGF1c2UK YXJndW1lbnRzIG9uZS1ieS1vbmUuICBCdXQgbm93LCBhIGdyb3VwIG9mIHNpbWlsYXIgT1It Y2xhdXNlcyBjYW4gYmUKdHJhbnNmb3JtZWQgaW50byBTQU9QIGR1cmluZyBpbmRleCBtYXRj aGluZy4gIFNvLCBiaXRtYXAgcGF0aHMgc2hvdWxkCmtlZXAgdXAuCgpUaGlzIGNvbW1pdCB0 ZWFjaGVzIGJpdG1hcCBwYXRocyBnZW5lcmF0aW9uIG1hY2hpbmVyeSB0byBncm91cCBzaW1p bGFyCk9SLWNsYXVzZXMgaW50byBkZWRpY2F0ZWQgUmVzdHJpY3RJbmZvcy4gIFRob3NlIFJl c3RyaWN0SW5mb3MgYXJlIGNvbnNpZGVyZWQKYm90aCB0byBtYXRjaCBpbmRleCBhcyBhIHdo b2xlIChhcyBTQU9QKSwgb3IgdG8gbWF0Y2ggYXMgYSBzZXQgb2YgaW5kaXZpZHVhbApPUi1j bGF1c2UgYXJndW1lbnQgb25lLWJ5LW9uZSAodGhlIG9sZCB3YXkpLgoKVGhlcmVmb3JlLCBi aXRtYXAgcGF0aCBnZW5lcmF0aW9uIHdpbGwgdGFrZXMgYWR2YW50YWdlIG9mIE9SLWNsYXVz ZXMgdG8gU0FPUCdzCnRyYW5zZm9ybWF0aW9uLiAgVGhlIG9sZCB3YXkgb2YgaGFuZGxpbmcg dGhlbSBpcyBhbHNvIGNvbnNpZGVyZWQuICBTbywgdGhlcmUKc2hvdWxkbid0IGJlIHBsYW5u aW5nIHJlZ3Jlc3Npb24uCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzU2N0VE NkNBLjIwNDA1MDQlNDBzaWdhZXYucnUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtv diA8YWVrb3JvdGtvdkBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvaW5keHBhdGguYyAgICAgIHwgMzY4ICsrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgMTIxICsrKysrKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAgICB8ICA1NiArKy0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCAgfCAgIDcgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0ICAgIHwgIDEyICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQgICAgICAgICB8ICAzMSArKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDI3ICsrCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0eS5zcWwgICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3V1aWQuc3FsICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgfCAgIDEgKwogMTEgZmlsZXMgY2hhbmdl ZCwgNTkyIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDM0ZGRhMWI2ZGY2Li5iODM2YWY2ZmI1NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0yMCw2ICsyMCw3 IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5 c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hbW9wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKQEAgLTExNzIsNiArMTE3MywzMjUgQEAgYnVpbGRfcGF0aHNfZm9yX09SKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoK KyAqIERhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBpbmZvcm1hdGlvbiBhYm91dCBPUi1j bGF1c2UgYXJndW1lbnQgYW5kIGl0cworICogbWF0Y2hpbmcgaW5kZXgga2V5LiAgVXNlZCBm b3IgZ3JvdXBpbmcgb2Ygc2ltaWxhciBPUi1jbGF1c2UgYXJndW1lbnRzIGluCisgKiBncm91 cF9zaW1pbGFyX29yX2FyZ3MoKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlpbnQJCQlp bmRleG51bTsJCS8qIGluZGV4IG9mIHRoZSBtYXRjaGluZyBpbmRleCAqLworCWludAkJCWNv bG51bTsJCQkvKiBpbmRleCBvZiB0aGUgbWF0Y2hpbmcgY29sdW1uICovCisJT2lkCQkJb3Bu bzsJCQkvKiBPSUQgb2YgdGhlIE9wQ2xhdXNlIG9wZXJhdG9yICovCisJT2lkCQkJaW5wdXRj b2xsaWQ7CS8qIE9JRCBvZiB0aGUgT3BDbGF1c2UgaW5wdXQgY29sbGF0aW9uICovCisJaW50 CQkJYXJnaW5kZXg7CQkvKiBpbmRleCBvZiB0aGUgY2xhdXNlIGluIHRoZSBsaXN0IG9mCisJ CQkJCQkJCSAqIGFyZ3VtZW50cyAqLworfSBPckFyZ0luZGV4TWF0Y2g7CisKKy8qCisgKiBD b21wYXJpc29uIGZ1bmN0aW9uIGZvciBPckFyZ0luZGV4TWF0Y2ggd2hpY2ggcHJvdmlkZXMg c29ydCBvcmRlciBwbGFjaW5nCisgKiBzaW1pbGFyIE9SLWNsYXVzZSBhcmd1bWVudHMgdG9n ZXRoZXIuCisgKi8KK3N0YXRpYyBpbnQKK29yX2FyZ19pbmRleF9tYXRjaF9jbXAoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBPckFyZ0luZGV4TWF0Y2ggKm1h dGNoX2EgPSAoY29uc3QgT3JBcmdJbmRleE1hdGNoICopIGE7CisJY29uc3QgT3JBcmdJbmRl eE1hdGNoICptYXRjaF9iID0gKGNvbnN0IE9yQXJnSW5kZXhNYXRjaCAqKSBiOworCisJaWYg KG1hdGNoX2EtPmluZGV4bnVtIDwgbWF0Y2hfYi0+aW5kZXhudW0pCisJCXJldHVybiAtMTsK KwllbHNlIGlmIChtYXRjaF9hLT5pbmRleG51bSA+IG1hdGNoX2ItPmluZGV4bnVtKQorCQly ZXR1cm4gMTsKKworCWlmIChtYXRjaF9hLT5jb2xudW0gPCBtYXRjaF9iLT5jb2xudW0pCisJ CXJldHVybiAtMTsKKwllbHNlIGlmIChtYXRjaF9hLT5jb2xudW0gPiBtYXRjaF9iLT5jb2xu dW0pCisJCXJldHVybiAxOworCisJaWYgKG1hdGNoX2EtPm9wbm8gPCBtYXRjaF9iLT5vcG5v KQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAobWF0Y2hfYS0+b3BubyA+IG1hdGNoX2ItPm9w bm8pCisJCXJldHVybiAxOworCisJaWYgKG1hdGNoX2EtPmlucHV0Y29sbGlkIDwgbWF0Y2hf Yi0+aW5wdXRjb2xsaWQpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChtYXRjaF9hLT5pbnB1 dGNvbGxpZCA+IG1hdGNoX2ItPmlucHV0Y29sbGlkKQorCQlyZXR1cm4gMTsKKworCWlmICht YXRjaF9hLT5hcmdpbmRleCA8IG1hdGNoX2ItPmFyZ2luZGV4KQorCQlyZXR1cm4gLTE7CisJ ZWxzZSBpZiAobWF0Y2hfYS0+YXJnaW5kZXggPiBtYXRjaF9iLT5hcmdpbmRleCkKKwkJcmV0 dXJuIDE7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGdyb3VwX3NpbWlsYXJfb3JfYXJn cworICoJCUdyb3VwIHNpbWlsYXIgT1ItYXJndW1lbnRzIGludHJvIGRlZGljYXRlZCBSZXN0 cmljdEluZm9zLiAgUHJvY2VzcworICoJCWFyZ3VtZW50cyBvZiAncmluZm8nIGNsYXVzZSwg cmV0dXJucyB0aGUgcHJvY2Vzc2VkIGxpc3Qgb2YgYXJndW1lbnRzLgorICoKKyAqIFNpbWls YXIgYXJndW1lbnRzIGNsYXVzZXMgb2YgZm9ybSAiaW5kZXhrZXkgb3AgY29uc3RhbnQiIGhh dmluZyBzYW1lCisgKiBpbmRleGtleSwgb3BlcmF0b3IsIGFuZCBjb2xsYXRpb24uICBDb25z dGFudCBtYXkgY29tcHJpc2UgZWl0aGVyIENvbnN0CisgKiBvciBQYXJhbS4KKyAqLworc3Rh dGljIExpc3QgKgorZ3JvdXBfc2ltaWxhcl9vcl9hcmdzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5mbyAqcmluZm8pCit7CisJaW50CQkJbjsKKwlp bnQJCQlpOworCWludAkJCWdyb3VwX3N0YXJ0OworCU9yQXJnSW5kZXhNYXRjaCAqbWF0Y2hl czsKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0Q2VsbCAgICpsYzI7CisJTGlzdAkgICAqb3Jh cmdzOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKworCUFzc2VydChJc0EocmluZm8tPm9y Y2xhdXNlLCBCb29sRXhwcikpOworCW9yYXJncyA9ICgoQm9vbEV4cHIgKikgcmluZm8tPm9y Y2xhdXNlKS0+YXJnczsKKwluID0gbGlzdF9sZW5ndGgob3JhcmdzKTsKKworCS8qCisJICog QWxsb2NhdGUgYW5kIGZpbGwgT3JBcmdJbmRleE1hdGNoIHN0cnVjdCBmb3IgZWFjaCBjbGF1 c2UgaW4gdGhlCisJICogYXJndW1lbnQgbGlzdC4KKwkgKi8KKwlpID0gLTE7CisJbWF0Y2hl cyA9IChPckFyZ0luZGV4TWF0Y2ggKikgcGFsbG9jKHNpemVvZihPckFyZ0luZGV4TWF0Y2gp ICogbik7CisJZm9yZWFjaChsYywgb3JhcmdzKQorCXsKKwkJTm9kZQkgICAqYXJnID0gbGZp cnN0KGxjKTsKKwkJUmVzdHJpY3RJbmZvICphcmdyaW5mbzsKKwkJT3BFeHByCSAgICpjbGF1 c2U7CisJCU9pZAkJCW9wbm87CisJCU5vZGUJICAgKmxlZnRvcCwKKwkJCQkgICAqcmlnaHRv cDsKKwkJTm9kZQkgICAqbm9uQ29uc3RFeHByOworCQlpbnQJCQlpbmRleG51bTsKKwkJaW50 CQkJY29sbnVtOworCisJCWkrKzsKKwkJbWF0Y2hlc1tpXS5hcmdpbmRleCA9IGk7CisJCW1h dGNoZXNbaV0uaW5kZXhudW0gPSAtMTsKKwkJbWF0Y2hlc1tpXS5jb2xudW0gPSAtMTsKKwkJ bWF0Y2hlc1tpXS5vcG5vID0gSW52YWxpZE9pZDsKKwkJbWF0Y2hlc1tpXS5pbnB1dGNvbGxp ZCA9IEludmFsaWRPaWQ7CisKKwkJaWYgKCFJc0EoYXJnLCBSZXN0cmljdEluZm8pKQorCQkJ Y29udGludWU7CisKKwkJYXJncmluZm8gPSBjYXN0Tm9kZShSZXN0cmljdEluZm8sIGFyZyk7 CisKKwkJLyogT25seSBvcGVyYXRvciBjbGF1c2VzIHNjYW4gbWF0Y2ggICovCisJCWlmICgh SXNBKGFyZ3JpbmZvLT5jbGF1c2UsIE9wRXhwcikpCisJCQljb250aW51ZTsKKworCQljbGF1 c2UgPSAoT3BFeHByICopIGFyZ3JpbmZvLT5jbGF1c2U7CisJCW9wbm8gPSBjbGF1c2UtPm9w bm87CisKKwkJLyogT25seSBiaW5hcnkgb3BlcmF0b3JzIGNhbiBtYXRjaCAgKi8KKwkJaWYg KGxpc3RfbGVuZ3RoKGNsYXVzZS0+YXJncykgIT0gMikKKwkJCXJldHVybiBOVUxMOworCisJ CS8qCisJCSAqIElnbm9yZSBhbnkgUmVsYWJlbFR5cGUgbm9kZSBhYm92ZSB0aGUgb3BlcmFu ZHMuICBUaGlzIGlzIG5lZWRlZCB0bworCQkgKiBiZSBhYmxlIHRvIGFwcGx5IGluZGV4c2Nh bm5pbmcgaW4gYmluYXJ5LWNvbXBhdGlibGUtb3BlcmF0b3IgY2FzZXMuCisJCSAqIE5vdGU6 IHdlIGNhbiBhc3N1bWUgdGhlcmUgaXMgYXQgbW9zdCBvbmUgUmVsYWJlbFR5cGUgbm9kZTsK KwkJICogZXZhbF9jb25zdF9leHByZXNzaW9ucygpIHdpbGwgaGF2ZSBzaW1wbGlmaWVkIGlm IG1vcmUgdGhhbiBvbmUuCisJCSAqLworCQlsZWZ0b3AgPSBnZXRfbGVmdG9wKGNsYXVzZSk7 CisJCWlmIChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCisJCQlsZWZ0b3AgPSAoTm9kZSAq KSAoKFJlbGFiZWxUeXBlICopIGxlZnRvcCktPmFyZzsKKworCQlyaWdodG9wID0gZ2V0X3Jp Z2h0b3AoY2xhdXNlKTsKKwkJaWYgKElzQShyaWdodG9wLCBSZWxhYmVsVHlwZSkpCisJCQly aWdodG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSByaWdodG9wKS0+YXJnOworCisJ CS8qCisJCSAqIENoZWNrIGZvciBjbGF1c2VzIG9mIHRoZSBmb3JtOiAoaW5kZXhrZXkgb3Bl cmF0b3IgY29uc3RhbnQpIG9yCisJCSAqIChjb25zdGFudCBvcGVyYXRvciBpbmRleGtleSku ICBCdXQgd2UgZG9uJ3Qga25vdyBhIHBhcnRpY3VsYXIgaW5kZXgKKwkJICogeWV0LiAgRmly c3QgY2hlY2sgZm9yIGEgY29uc3RhbnQsIHdoaWNoIG11c3QgYmUgQ29uc3Qgb3IgUGFyYW0u CisJCSAqIFRoYXQncyBjaGVhcGVyIHRoYW4gc2VhcmNoIGZvciBhbiBpbmRleCBrZXkgYW1v bmcgYWxsIGluZGV4ZXMuCisJCSAqLworCQlpZiAoSXNBKGxlZnRvcCwgQ29uc3QpIHx8IElz QShsZWZ0b3AsIFBhcmFtKSkKKwkJeworCQkJb3BubyA9IGdldF9jb21tdXRhdG9yKG9wbm8p OworCisJCQlpZiAoIU9pZElzVmFsaWQob3BubykpCisJCQl7CisJCQkJLyogY29tbXV0YXRv ciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNlIHRoZSBvcmRlciAqLworCQkJCWNv bnRpbnVlOworCQkJfQorCQkJbm9uQ29uc3RFeHByID0gcmlnaHRvcDsKKwkJfQorCQllbHNl IGlmIChJc0EocmlnaHRvcCwgQ29uc3QpIHx8IElzQShyaWdodG9wLCBQYXJhbSkpCisJCXsK KwkJCW5vbkNvbnN0RXhwciA9IGxlZnRvcDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNvbnRp bnVlOworCQl9CisKKwkJLyoKKwkJICogTWF0Y2ggbm9uLWNvbnN0YW50IHBhcnQgdG8gdGhl IGluZGV4IGtleS4gIEl0J3MgcG9zc2libGUgdGhhdCBhCisJCSAqIHNpbmdsZSBub24tY29u c3RhbnQgcGFydCBtYXRjaGVzIG11bHRpcGxlIGluZGV4IGtleXMuICBJdCdzIE9LLCB3ZQor CQkgKiBqdXN0IHN0b3Agd2l0aCBmaXJzdCBtYXRjaGluZyBpbmRleCBrZXkuICBHaXZlbiB0 aGF0IHRoaXMgY2hvaWNlIGlzCisJCSAqIGRldGVybWluZWQgdGhlIHNhbWUgZm9yIGV2ZXJ5 IGNsYXVzZSwgd2Ugd2lsbCBncm91cCBzaW1pbGFyIGNsYXVzZXMKKwkJICogdG9nZXRoZXIg YW55d2F5LgorCQkgKi8KKwkJaW5kZXhudW0gPSAwOworCQlmb3JlYWNoKGxjMiwgcmVsLT5p bmRleGxpc3QpCisJCXsKKwkJCUluZGV4T3B0SW5mbyAqaW5kZXggPSAoSW5kZXhPcHRJbmZv ICopIGxmaXJzdChsYzIpOworCisJCQkvKiBJZ25vcmUgaW5kZXggaWYgaXQgZG9lc24ndCBz dXBwb3J0IGJpdG1hcCBzY2FucyAqLworCQkJaWYgKCFpbmRleC0+YW1oYXNnZXRiaXRtYXAp CisJCQkJY29udGludWU7CisKKwkJCWZvciAoY29sbnVtID0gMDsgY29sbnVtIDwgaW5kZXgt Pm5rZXljb2x1bW5zOyBjb2xudW0rKykKKwkJCXsKKwkJCQlpZiAobWF0Y2hfaW5kZXhfdG9f b3BlcmFuZChub25Db25zdEV4cHIsIGNvbG51bSwgaW5kZXgpKQorCQkJCXsKKwkJCQkJbWF0 Y2hlc1tpXS5pbmRleG51bSA9IGluZGV4bnVtOworCQkJCQltYXRjaGVzW2ldLmNvbG51bSA9 IGNvbG51bTsKKwkJCQkJbWF0Y2hlc1tpXS5vcG5vID0gb3BubzsKKwkJCQkJbWF0Y2hlc1tp XS5pbnB1dGNvbGxpZCA9IGNsYXVzZS0+aW5wdXRjb2xsaWQ7CisJCQkJfQorCQkJfQorCQkJ aW5kZXhudW0rKzsKKwkJfQorCX0KKworCS8qIFNvcnQgY2xhdXNlcyB0byBtYWtlIHNpbWls YXIgY2xhdXNlcyBnbyB0b2dldGhlciAqLworCXBnX3Fzb3J0KG1hdGNoZXMsIG4sIHNpemVv ZihPckFyZ0luZGV4TWF0Y2gpLCBvcl9hcmdfaW5kZXhfbWF0Y2hfY21wKTsKKworCS8qIEdy b3VwIHNpbWlsYXIgY2xhdXNlcyBpbnRvICovCisJZ3JvdXBfc3RhcnQgPSAwOworCWZvciAo aSA9IDE7IGkgPD0gbjsgaSsrKQorCXsKKwkJLyogQ2hlY2sgaWYgaXQncyBhIGdyb3VwIGJv dW5kYXJ5ICovCisJCWlmIChncm91cF9zdGFydCA+PSAwICYmCisJCQkoaSA9PSBuIHx8CisJ CQkgbWF0Y2hlc1tpXS5pbmRleG51bSAhPSBtYXRjaGVzW2dyb3VwX3N0YXJ0XS5pbmRleG51 bSB8fAorCQkJIG1hdGNoZXNbaV0uY29sbnVtICE9IG1hdGNoZXNbZ3JvdXBfc3RhcnRdLmNv bG51bSB8fAorCQkJIG1hdGNoZXNbaV0ub3BubyAhPSBtYXRjaGVzW2dyb3VwX3N0YXJ0XS5v cG5vIHx8CisJCQkgbWF0Y2hlc1tpXS5pbnB1dGNvbGxpZCAhPSBtYXRjaGVzW2dyb3VwX3N0 YXJ0XS5pbnB1dGNvbGxpZCB8fAorCQkJIG1hdGNoZXNbaV0uaW5kZXhudW0gPT0gLTEpKQor CQl7CisJCQkvKgorCQkJICogT25lIGNsYXVzZSBpbiBncm91cDogYWRkIGl0ICJhcyBpcyIg dG8gdGhlIHVwcGVyLWxldmVsIE9SLgorCQkJICovCisJCQlpZiAoaSAtIGdyb3VwX3N0YXJ0 ID09IDEpCisJCQl7CisJCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsCisJCQkJCQkJCSBs aXN0X250aChvcmFyZ3MsCisJCQkJCQkJCQkJICBtYXRjaGVzW2dyb3VwX3N0YXJ0XS5hcmdp bmRleCkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogVHdvIG9yIG1v cmUgY2xhdXNlcyBpbiBhIGdyb3VwOiBjcmVhdGUgYSBuZXN0ZWQgT1IuCisJCQkJICovCisJ CQkJTGlzdAkgICAqYXJncyA9IE5JTDsKKwkJCQlSZXN0cmljdEluZm8gKnN1YnJpbmZvID0g bWFrZU5vZGUoUmVzdHJpY3RJbmZvKTsKKwkJCQlpbnQJCQlqOworCisJCQkJQXNzZXJ0KGkg LSBncm91cF9zdGFydCA+PSAyKTsKKworCQkJCS8qIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBu ZXN0ZWQgT1IgYXJndW1lbnRzICovCisJCQkJZm9yIChqID0gZ3JvdXBfc3RhcnQ7IGogPCBp OyBqKyspCisJCQkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIGxpc3RfbnRoKG9yYXJncywgbWF0 Y2hlc1tqXS5hcmdpbmRleCkpOworCisJCQkJLyogQ29uc3RydWN0IHRoZSBuZXN0ZWQgT1Ig YW5kIHdyYXAgaXQgd2l0aCBSZXN0cmljdEluZm8gKi8KKwkJCQkqc3VicmluZm8gPSAqcmlu Zm87CisJCQkJc3VicmluZm8tPmNsYXVzZSA9IG1ha2Vfb3JjbGF1c2UoYXJncyk7CisJCQkJ c3VicmluZm8tPm9yY2xhdXNlID0gc3VicmluZm8tPmNsYXVzZTsKKwkJCQlyZXN1bHQgPSBs YXBwZW5kKHJlc3VsdCwgc3VicmluZm8pOworCQkJfQorCisJCQlncm91cF9zdGFydCA9IGk7 CisJCX0KKwl9CisJcGZyZWUobWF0Y2hlcyk7CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoK KyAqIG1ha2VfYml0bWFwX3BhdGhzX2Zvcl9vcl9ncm91cAorICoJCUdlbmVyYXRlIGJpdG1h cCBwYXRocyBmb3IgYSBncm91cCBvZiBzaW1pbGFyIE9SLWNsYXVzZSBhcmd1bWVudHMKKyAq CQlwcm9kdWNlZCBieSBncm91cF9zaW1pbGFyX29yX2FyZ3MoKS4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGNvbnNpZGVycyB0d28gY2FzZXM6ICgxKSBtYXRjaGluZyBhIGdyb3VwIG9mIGNs YXVzZXMgdG8KKyAqIHRoZSBpbmRleCBhcyBhIHdob2xlLCBhbmQgKDIpIG1hdGNoaW5nIHRo ZSBpbmRpdmlkdWFsIGNsYXVzZXMgb25lLWJ5LW9uZS4KKyAqICgxKSB0eXBpY2FsbHkgY29t cHJpc2VzIGFuIG9wdGltYWwgc29sdXRpb24uICBJZiBub3QsICgyKSB0eXBpY2FsbHkKKyAq IGNvbXByaXNlcyBmYWlyIGFsdGVybmF0aXZlLgorICoKKyAqIElkZWFsbHksIHdlIGNvdWxk IGNvbnNpZGVyIGFsbCBhcmJpdHJhcnkgc3BsaXRzIG9mIGFyZ3VtZW50cyBpbnRvCisgKiBz dWJncm91cHMsIGJ1dCB0aGF0IGNvdWxkIGxlYWQgdG8gdW5hY2NlcHRhYmxlIGNvbXB1dGF0 aW9uYWwgY29tcGxleGl0eS4KKyAqIFRoaXMgaXMgd2h5IHdlIG9ubHkgY29uc2lkZXIgdHdv IGNhc2VzIG9mIGFib3ZlLgorICovCitzdGF0aWMgTGlzdCAqCittYWtlX2JpdG1hcF9wYXRo c19mb3Jfb3JfZ3JvdXAoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJ CQkJCQkgICBSZXN0cmljdEluZm8gKnJpLCBMaXN0ICpvdGhlcl9jbGF1c2VzKQoreworCUxp c3QJICAgKmpvaW50bGlzdCA9IE5JTDsKKwlMaXN0CSAgICpzcGxpdGxpc3QgPSBOSUw7CisJ TGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqb3JhcmdzOworCUxpc3QJICAgKmFyZ3MgPSAo KEJvb2xFeHByICopIHJpLT5jbGF1c2UpLT5hcmdzOworCUNvc3QJCWpvaW50Y29zdCA9IDAu MCwKKwkJCQlzcGxpdGNvc3QgPSAwLjA7CisJUGF0aAkgICAqYml0bWFwcXVhbDsKKwlMaXN0 CSAgICppbmRsaXN0OworCisJLyoKKwkgKiBGaXJzdCwgdHJ5IHRvIG1hdGNoIHRoZSB3aG9s ZSBncm91cCB0byB0aGUgb25lIGluZGV4LgorCSAqLworCW9yYXJncyA9IGxpc3RfbWFrZTEo cmkpOworCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVsLAorCQkJCQkJ CQkgb3JhcmdzLAorCQkJCQkJCQkgb3RoZXJfY2xhdXNlcyk7CisJaWYgKGluZGxpc3QgIT0g TklMKQorCXsKKwkJYml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3QsIHJlbCwg aW5kbGlzdCk7CisJCWpvaW50Y29zdCA9IGJpdG1hcHF1YWwtPnRvdGFsX2Nvc3Q7CisJCWpv aW50bGlzdCA9IGxpc3RfbWFrZTEoYml0bWFwcXVhbCk7CisJfQorCisJLyoKKwkgKiBBbHNv IHRyeSB0byBtYXRjaCBhbGwgY29udGFpbmluZyBjbGF1c2VzIG9uZS1ieS1vbmUuCisJICov CisJZm9yZWFjaChsYywgYXJncykKKwl7CisJCW9yYXJncyA9IGxpc3RfbWFrZTEobGZpcnN0 KGxjKSk7CisKKwkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9PUihyb290LCByZWwsCisJ CQkJCQkJCQkgb3JhcmdzLAorCQkJCQkJCQkJIG90aGVyX2NsYXVzZXMpOworCisJCWlmIChp bmRsaXN0ID09IE5JTCkKKwkJeworCQkJc3BsaXRsaXN0ID0gTklMOworCQkJYnJlYWs7CisJ CX0KKworCQliaXRtYXBxdWFsID0gY2hvb3NlX2JpdG1hcF9hbmQocm9vdCwgcmVsLCBpbmRs aXN0KTsKKwkJc3BsaXRjb3N0ICs9IGJpdG1hcHF1YWwtPnRvdGFsX2Nvc3Q7CisJCXNwbGl0 bGlzdCA9IGxhcHBlbmQoc3BsaXRsaXN0LCBiaXRtYXBxdWFsKTsKKwl9CisKKwkvKgorCSAq IFBpY2sgdGhlIGJlc3Qgb3B0aW9uLgorCSAqLworCWlmIChzcGxpdGxpc3QgPT0gTklMKQor CQlyZXR1cm4gam9pbnRsaXN0OworCWVsc2UgaWYgKGpvaW50bGlzdCA9PSBOSUwpCisJCXJl dHVybiBzcGxpdGxpc3Q7CisJZWxzZQorCQlyZXR1cm4gKGpvaW50Y29zdCA8IHNwbGl0Y29z dCkgPyBqb2ludGxpc3QgOiBzcGxpdGxpc3Q7Cit9CisKKwogLyoKICAqIGdlbmVyYXRlX2Jp dG1hcF9vcl9wYXRocwogICoJCUxvb2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBjbGF1c2VzIHRv IGZpbmQgT1IgY2xhdXNlcywgYW5kIGdlbmVyYXRlCkBAIC0xMjAyLDYgKzE1MjIsNyBAQCBn ZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJTGlzdAkgICAqcGF0aGxpc3Q7CiAJCVBhdGgJICAgKmJpdG1hcHF1YWw7CiAJ CUxpc3RDZWxsICAgKmo7CisJCUxpc3QJICAgKmdyb3VwZWRBcmdzOwogCiAJCS8qIElnbm9y ZSBSZXN0cmljdEluZm9zIHRoYXQgYXJlbid0IE9ScyAqLwogCQlpZiAoIXJlc3RyaWN0aW9u X2lzX29yX2NsYXVzZShyaW5mbykpCkBAIC0xMjEyLDcgKzE1MzMsMTMgQEAgZ2VuZXJhdGVf Yml0bWFwX29yX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJ CSAqIHRoZSBPUiwgZWxzZSB3ZSBjYW4ndCB1c2UgaXQuCiAJCSAqLwogCQlwYXRobGlzdCA9 IE5JTDsKLQkJZm9yZWFjaChqLCAoKEJvb2xFeHByICopIHJpbmZvLT5vcmNsYXVzZSktPmFy Z3MpCisKKwkJLyoKKwkJICogR3JvdXAgdGhlIHNpbWlsYXIgT1ItY2xhdXNlIGFyZ3VtZW50 IGludG8gZGVkaWNhdGVkIFJlc3RyaWN0SW5mb3MsCisJCSAqIGJlY2F1c2UgdGhvc2UgUmVz dHJpY3RJbmZvcyBtaWdodCBtYXRjaCB0byB0aGUgaW5kZXggYXMgd2hvbGUuCisJCSAqLwor CQlncm91cGVkQXJncyA9IGdyb3VwX3NpbWlsYXJfb3JfYXJncyhyb290LCByZWwsIHJpbmZv KTsKKwkJZm9yZWFjaChqLCBncm91cGVkQXJncykKIAkJewogCQkJTm9kZQkgICAqb3Jhcmcg PSAoTm9kZSAqKSBsZmlyc3Qoaik7CiAJCQlMaXN0CSAgICppbmRsaXN0OwpAQCAtMTIzMiwx MiArMTU1OSwzNyBAQCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkJCQkJCSAgIGFuZGFyZ3MsCiAJCQkJ CQkJCQkJCQkJCQkgICBhbGxfY2xhdXNlcykpOwogCQkJfQorCQkJZWxzZSBpZiAocmVzdHJp Y3Rpb25faXNfb3JfY2xhdXNlKGNhc3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpKSkKKwkJ CXsKKwkJCQlSZXN0cmljdEluZm8gKnJpID0gY2FzdE5vZGUoUmVzdHJpY3RJbmZvLCBvcmFy Zyk7CisKKwkJCQkvKgorCQkJCSAqIEdlbmVyYXRlIGJpdG1hcCBwYXRocyBmb3IgdGhlIGdy b3VwIG9mIHNpbWlsYXIgT1ItY2xhdXNlCisJCQkJICogYXJndW1lbnRzLiAgSW4gdGhpcyBj YXNlIHdlIG5lZWQgdG8gaW1tZWRpYXRlbHkgcmVtb3ZlIHRoZQorCQkJCSAqIHJpbmZvIGZy b20gb3RoZXIgY2xhdXNlcy4gIFRoaXMgaXMgYmVjYXVzZSByaW5mbyBjYW4gYmUKKwkJCQkg KiB0cmFuc2Zvcm1lZCBkdXJpbmcgaW5kZXggbWF0Y2hpbmcuICBTbywgd2UgbWlnaHQgYmUg dW5hYmxlCisJCQkJICogdG8gcmVtb3ZlIHRoYXQgbGF0ZXIuCisJCQkJICovCisJCQkJaW5k bGlzdCA9IG1ha2VfYml0bWFwX3BhdGhzX2Zvcl9vcl9ncm91cChyb290LAorCQkJCQkJCQkJ CQkJCQkgcmVsLCByaSwKKwkJCQkJCQkJCQkJCQkJIGxpc3RfZGVsZXRlKGFsbF9jbGF1c2Vz LCByaW5mbykpOworCisJCQkJaWYgKGluZGxpc3QgPT0gTklMKQorCQkJCXsKKwkJCQkJcGF0 aGxpc3QgPSBOSUw7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJ CQlwYXRobGlzdCA9IGxpc3RfY29uY2F0KHBhdGhsaXN0LCBpbmRsaXN0KTsKKwkJCQkJY29u dGludWU7CisJCQkJfQorCQkJfQogCQkJZWxzZQogCQkJewogCQkJCVJlc3RyaWN0SW5mbyAq cmkgPSBjYXN0Tm9kZShSZXN0cmljdEluZm8sIG9yYXJnKTsKIAkJCQlMaXN0CSAgICpvcmFy Z3M7CiAKLQkJCQlBc3NlcnQoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaSkpOwogCQkJ CW9yYXJncyA9IGxpc3RfbWFrZTEocmkpOwogCiAJCQkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhz X2Zvcl9PUihyb290LCByZWwsCkBAIC0yODA3LDYgKzMxNTksNyBAQCBtYXRjaF9vcmNsYXVz ZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAlPaWQJCQlpbnB1dGNvbGxpZCA9 IEludmFsaWRPaWQ7CiAJYm9vbAkJZmlyc3RUaW1lID0gdHJ1ZTsKIAlib29sCQloYXZlX3Bh cmFtID0gZmFsc2U7CisJSGVhcFR1cGxlCXRwOwogCiAJQXNzZXJ0KElzQShvcmNsYXVzZSwg Qm9vbEV4cHIpKTsKIAlBc3NlcnQob3JjbGF1c2UtPmJvb2xvcCA9PSBPUl9FWFBSKTsKQEAg LTI4NDIsNyArMzE5NSw3IEBAIG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJ bmZvICpyb290LAogCQlpZiAobGlzdF9sZW5ndGgoc3ViQ2xhdXNlLT5hcmdzKSAhPSAyKQog CQkJcmV0dXJuIE5VTEw7CiAKLQkJLyogUmVzdHJpY3RJbmZvIHBhcmFtZXRlcnMgbXVzdCBt YXRjaCBwYXJlbnQgKi8KKwkJLyogUmVzdHJpY3RJbmZvIHBhcmFtZXRlcnMgZG11c3QgbWF0 Y2ggcGFyZW50ICovCiAJCWlmIChzdWJSaW5mby0+aXNfcHVzaGVkX2Rvd24gIT0gcmluZm8t PmlzX3B1c2hlZF9kb3duIHx8CiAJCQlzdWJSaW5mby0+aXNfY2xvbmUgIT0gcmluZm8tPmlz X2Nsb25lIHx8CiAJCQlzdWJSaW5mby0+c2VjdXJpdHlfbGV2ZWwgIT0gcmluZm8tPnNlY3Vy aXR5X2xldmVsIHx8CkBAIC0yODgzLDYgKzMyMzYsMTUgQEAgbWF0Y2hfb3JjbGF1c2VfdG9f aW5kZXhjb2woUGxhbm5lckluZm8gKnJvb3QsCiAJCQlyZXR1cm4gTlVMTDsKIAkJfQogCisJ CXRwID0gU2VhcmNoU3lzQ2FjaGUzKEFNT1BPUElELAorCQkJCQkJCU9iamVjdElkR2V0RGF0 dW0ob3BubyksCisJCQkJCQkJQ2hhckdldERhdHVtKEFNT1BfU0VBUkNIKSwKKwkJCQkJCQlP YmplY3RJZEdldERhdHVtKGluZGV4LT5vcGZhbWlseVtpbmRleGNvbF0pKTsKKwkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCXJldHVybiBOVUxMOworCisJCVJlbGVhc2VTeXND YWNoZSh0cCk7CisKIAkJLyoKIAkJICogSWdub3JlIGFueSBSZWxhYmVsVHlwZSBub2RlIGFi b3ZlIHRoZSBvcGVyYW5kcy4gIFRoaXMgaXMgbmVlZGVkIHRvCiAJCSAqIGJlIGFibGUgdG8g YXBwbHkgaW5kZXhzY2FubmluZyBpbiBiaW5hcnktY29tcGF0aWJsZS1vcGVyYXRvciBjYXNl cy4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRl eCBjMmIyNTkzNmM4Yy4uY2FjMDc2YWJiODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE5MTMsNiArMTkxMywyNyBAQCBTRUxFQ1Qg KiBGUk9NIHRlbmsxCiAgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAyIHwg ICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAgNDIg fCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09PT3h4 CiAoMSByb3cpCiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEK KyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMTo6bnVtZXJpYyBPUiB0 ZW50aG91cyA9IDM6OmludDQgT1IgdGVudGhvdXMgPSA0Mjo6bnVtZXJpYyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgUmVjaGVjayBDb25kOiAodGhvdXNhbmQg PSA0MikKKyAgIEZpbHRlcjogKCgodGVudGhvdXMpOjpudW1lcmljID0gJzEnOjpudW1lcmlj KSBPUiAodGVudGhvdXMgPSAzKSBPUiAoKHRlbnRob3VzKTo6bnVtZXJpYyA9ICc0Mic6Om51 bWVyaWMpKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRo b3VzCisgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKKyg1IHJvd3MpCisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGVu dGhvdXMgPSAxOjpudW1lcmljIE9SIHRlbnRob3VzID0gMzo6aW50NCBPUiB0ZW50aG91cyA9 IDQyOjpudW1lcmljOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHRlbmsxCisgICBGaWx0ZXI6ICgo KHRlbnRob3VzKTo6bnVtZXJpYyA9ICcxJzo6bnVtZXJpYykgT1IgKHRlbnRob3VzID0gMykg T1IgKCh0ZW50aG91cyk6Om51bWVyaWMgPSAnNDInOjpudW1lcmljKSkKKygyIHJvd3MpCisK IEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7 CkBAIC0xOTgyLDI1ICsyMDAzLDI0IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBF WFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1Ig dGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0 ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sg Q29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBPUiAodGhvdXNh bmQgPSA5OSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAg ICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSBB TlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAodGhv dXNhbmQgPSA0MSkpCisgICAgICAgICBGaWx0ZXI6ICgoKGh1bmRyZWQgPSA0MikgQU5EICgo dGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gOTkpIE9SICh0ZW50aG91cyA8IDIpKSkg T1IgKHRob3VzYW5kID0gNDEpKQogICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAgICAg ICAgICAtPiAgQml0bWFwQW5kCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKICAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91 cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3Vz YW5kID0gOTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190 ZW50aG91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHRlbnRob3VzIDwgMikKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV90aG91c190ZW50aG91cwogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRob3VzYW5kID0gNDEpCi0oMTYgcm93cykKKygxNSByb3dzKQogCiBTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9 IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQx OwpAQCAtMjAxMiwyMiArMjAzMiwyMSBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQog RVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFn Z3JlZ2F0ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0 aG91c2FuZCA9IDQxKSBPUiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkp KQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICgoKHRob3Vz YW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkgT1IgKHRob3VzYW5kID0gQU5ZICgnezQy LDQxfSc6OmludGVnZXJbXSkpKSkKKyAgICAgICAgIEZpbHRlcjogKCh0aG91c2FuZCA9IDQy KSBPUiAodGhvdXNhbmQgPSA0MSkgT1IgKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3Vz ID0gMikpKQogICAgICAgICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFw T3IKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRob3VzYW5kID0gNDIpCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQogICAgICAgICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFO RCAodGVudGhvdXMgPSAyKSkKLSgxMyByb3dzKQorICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9 Jzo6aW50ZWdlcltdKSkKKygxMiByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5k ID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKQEAgLTIwMzYsNiAr MjA1NSw3OCBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICAgIDEwCiAoMSByb3cp CiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxLCB0 ZW5rMgorICBXSEVSRSB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9 IDQyIE9SIHRlbmsxLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQK KyAgdGVuazIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAgICAg Sm9pbiBGaWx0ZXI6ICgodGVuazIudGhvdXNhbmQgPSA0MikgT1IgKHRlbmsxLnRob3VzYW5k ID0gNDEpIE9SICh0ZW5rMi50ZW50aG91cyA9IDIpKQorICAgICAgICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGh1bmRy ZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9 IDQyKQorICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMgorICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBD b25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsyX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisoMTIgcm93cykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRl bmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIgT1IgdGVuazIudGhv dXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVk ID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAg ICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsyCisgICAgICAgICAgICAgICBSZWNo ZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgodGhv dXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICh0ZW50aG91cyA9IDIpKQorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsyX2h1bmRyZWQKKyAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAg ICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX2h1bmRyZWQgb24gdGVuazEKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisoOSByb3dzKQorCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMSBKT0lOIHRl bmsyIE9OCisgIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIg T1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0 ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVk IExvb3AKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsyCisgICAgICAg ICAgICAgICBSZWNoZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICBG aWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICh0ZW50aG91 cyA9IDIpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsy X2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0g NDIpCisgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX2h1bmRyZWQg b24gdGVuazEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiso OSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMSBMRUZUIEpPSU4gdGVuazIgT04KKyAgdGVuazEuaHVuZHJlZCA9IDQyIEFORCAodGVu azIudGhvdXNhbmQgPSA0MiBPUiB0ZW5rMi50aG91c2FuZCA9IDQxIE9SIHRlbmsyLnRlbnRo b3VzID0gMikgQU5ECisgIHRlbmsyLmh1bmRyZWQgPSB0ZW5rMS5odW5kcmVkOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAg IEpvaW4gRmlsdGVyOiAodGVuazEuaHVuZHJlZCA9IDQyKQorICAgICAgICAgLT4gIEluZGV4 IE9ubHkgU2NhbiB1c2luZyB0ZW5rMV9odW5kcmVkIG9uIHRlbmsxCisgICAgICAgICAtPiAg TWVtb2l6ZQorICAgICAgICAgICAgICAgQ2FjaGUgS2V5OiB0ZW5rMS5odW5kcmVkCisgICAg ICAgICAgICAgICBDYWNoZSBNb2RlOiBsb2dpY2FsCisgICAgICAgICAgICAgICAtPiAgSW5k ZXggU2NhbiB1c2luZyB0ZW5rMl9odW5kcmVkIG9uIHRlbmsyCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQpCisgICAgICAgICAg ICAgICAgICAgICBGaWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEp IE9SICh0ZW50aG91cyA9IDIpKQorKDEwIHJvd3MpCisKIC0tCiAtLSBDaGVjayBiZWhhdmlv ciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qb2luLm91dAppbmRleCBhYmU5OGZmM2M1My4uZDI2YTkzODMxZDUgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIyNiwyMCArNDIyNiwyMCBA QCBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgTmVzdGVkIExvb3AK ICAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIp KSBPUiAoKGEudW5pcXVlMiA9IDMpIEFORCAoYi5odW5kcmVkID0gNCkpKQogICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYgotICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVu aXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9IDQpKQorICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0KSBPUiAodW5pcXVlMSA9IDIpKQogICAgICAgICAgLT4gIEJpdG1hcE9y Ci0gICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVl MQotICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQogICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKKyAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDIpCiAgICAtPiAgTWF0ZXJp YWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAgICAg ICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAz KSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUyID0gMykgT1IgKHVu aXF1ZTEgPSAxKSkKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUy CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDMp CisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTEgPSAxKQogKDE3IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKQEAgLTQyNTMsMTIg KzQyNTMsMTIgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAg ICAgICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAyKSBPUiAodGVuID0gNCkpCiAgICAtPiAgTWF0 ZXJpYWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAg ICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIg PSAzKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUyID0gMykgT1Ig KHVuaXF1ZTEgPSAxKSkKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlx dWUyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9 IDMpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAxKQogKDEyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKQEAgLTQyNzAs MjEgKzQyNzAsMjEgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgog IE5lc3RlZCBMb29wCiAgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChi LnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEudW5pcXVlMiA9IDcp KSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsxIGIKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1IgKGh1bmRy ZWQgPSA0KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNCkgT1IgKHVu aXF1ZTEgPSAyKSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPSAyKQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENv bmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2Vy W10pKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IDEpKQogICAgICAgICAgICAgICAg RmlsdGVyOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUyID0g NykpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3 fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogKDE4IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9m ZikKQEAgLTQyOTYsMjEgKzQyOTYsMjEgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4g dGVuazEgYiBvbgogIE5lc3RlZCBMb29wCiAgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUx ID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEu dW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxIGIKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0g MikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVk ID0gNCkgT1IgKHVuaXF1ZTEgPSAyKSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQogICAgLT4gIE1hdGVyaWFsaXplCiAg ICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAg ICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMs N30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlx dWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IDEpKQogICAg ICAgICAgICAgICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9S ICh1bmlxdWUyID0gNykpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIg PSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogKDE4IHJvd3MpCiAKIGV4cGxh aW4gKGNvc3RzIG9mZikKQEAgLTQzMjQsMTggKzQzMjQsMTYgQEAgc2VsZWN0ICogZnJvbSB0 ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIKICAg IC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVu azEgYQotICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAyMCkgT1Ig KHVuaXF1ZTEgPSAzKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMs N30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlx dWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IEFOWSAoJ3sz LDF9Jzo6aW50ZWdlcltdKSkgT1IgKHVuaXF1ZTEgPCAyMCkpCiAgICAgICAgICAgICAgICBG aWx0ZXI6ICgodW5pcXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlxdWUxID0g MSkgT1IgKHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQogICAgICAgICAgICAgICAg LT4gIEJpdG1hcE9yCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdW5pcXVlMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPCAyMCkKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMpCi0gICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjpp bnRlZ2VyW10pKQotKDE2IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSBBTlkgKCd7MywxfSc6OmludGVnZXJbXSkpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PCAyMCkKKygxNCByb3dzKQogCiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBx dWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0CmluZGV4IDMxOTE5MDg1NWJkLi5lZjg5MGI5NmNj NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKQEAg LTQ0OTIsNiArNDQ5MiwxMyBAQCBTRUxFQ1QgKiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwg MTAwMDsKIC0tLQogKDAgcm93cykKIAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMCBvciBhIDw8PCA5MDA7CisgICAgICAgIFFV RVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQK KyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKIERST1AgT1BFUkFUT1Ig PDw8IChpbnQsIGludCk7CiBEUk9QIEZVTkNUSU9OIG9wX2xlYWsoaW50LCBpbnQpOwogUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dGF0c19leHQub3V0CmluZGV4IDhjNGRhOTU1MDg0Li5hNGM3YmU0ODdlZiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMzI1NCw2ICszMjU0LDgg QEAgQ1JFQVRFIE9QRVJBVE9SIDw8PCAocHJvY2VkdXJlID0gb3BfbGVhaywgbGVmdGFyZyA9 IGludCwgcmlnaHRhcmcgPSBpbnQsCiAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdCA9 IHNjYWxhcmx0c2VsKTsKIFNFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBX SEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBQZXJtaXNzaW9uIGRlbmllZAogRVJST1I6 ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgcHJpdl90ZXN0X3RibAorU0VMRUNUICog RlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAgT1IgYiA8PDwgMDsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHByaXZfdGVzdF90YmwKIERF TEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBBTkQgYiA8 PDwgMDsgLS0gUGVybWlzc2lvbiBkZW5pZWQKIEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQg Zm9yIHRhYmxlIHByaXZfdGVzdF90YmwKIC0tIEdyYW50IGFjY2VzcyB2aWEgYSBzZWN1cml0 eSBiYXJyaWVyIHZpZXcsIGJ1dCBoaWRlIGFsbCBkYXRhCkBAIC0zMjY4LDYgKzMyNzAsMTEg QEAgU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdmlldyBXSEVSRSBhIDw8PCAw IEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGwKIC0tLSstLS0KICgwIHJvd3MpCiAKK1NF TEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgV0hFUkUgYSA8PDwgMCBPUiBi IDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKKyBhIHwgYiAKKy0tLSstLS0KKygwIHJvd3Mp CisKIERFTEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF92aWV3IFdIRVJFIGEgPDw8IDAg QU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogLS0gR3JhbnQgdGFibGUgYWNjZXNz LCBidXQgaGlkZSBhbGwgZGF0YSB3aXRoIFJMUwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOwpAQCAtMzI4MCw2ICszMjg3LDExIEBAIFNFTEVDVCAqIEZST00gdHN0c3RhdHMucHJp dl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxl CiAtLS0rLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgKiBGUk9NIHRzdHN0YXRzLnByaXZfdGVz dF90YmwgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOworIGEgfCBiIAorLS0tKy0tLQorKDAg cm93cykKKwogREVMRVRFIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8 PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKIC0tIHByaXZpbGVnZSBjaGVj a3MgZm9yIHBnX3N0YXRzX2V4dCBhbmQgcGdfc3RhdHNfZXh0X2V4cHJzCiBSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dAppbmRl eCA2MDI2ZTE1ZWQzMS4uOGY0ZWYwZDdhNmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 dWlkLm91dApAQCAtMTI5LDYgKzEyOSwzNyBAQCBDUkVBVEUgSU5ERVggZ3VpZDFfYnRyZWUg T04gZ3VpZDEgVVNJTkcgQlRSRUUgKGd1aWRfZmllbGQpOwogQ1JFQVRFIElOREVYIGd1aWQx X2hhc2ggIE9OIGd1aWQxIFVTSU5HIEhBU0ggIChndWlkX2ZpZWxkKTsKIC0tIHVuaXF1ZSBp bmRleCB0ZXN0CiBDUkVBVEUgVU5JUVVFIElOREVYIGd1aWQxX3VuaXF1ZV9CVFJFRSBPTiBn dWlkMSBVU0lORyBCVFJFRSAoZ3VpZF9maWVsZCk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxkIDw+ICcxMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMScgT1IKKwkJCQkJCQlndWlkX2ZpZWxkIDw+ICcz ZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQorICAgICAgICAg RmlsdGVyOiAoKGd1aWRfZmllbGQgPD4gJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTEx MTExMTExMSc6OnV1aWQpIE9SIChndWlkX2ZpZWxkIDw+ICczZjNlM2MzYi0zYTMwLTM5Mzgt MzczNi0zNTM0MzNhMjMxM2UnOjp1dWlkKSkKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGd1aWQxIFdIRVJFIGd1aWRfZmllbGQgPD0g JzIyMjIyMjIyLTIyMjItMjIyMi0yMjIyLTIyMjIyMjIyMjIyMicgT1IKKwkJCQkJCQkJCWd1 aWRfZmllbGQgPD0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBPUgorCQkJ CQkJCQkJZ3VpZF9maWVsZCA8PSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3MzYtMzUzNDMzYTIz MTNlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dy ZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQorICAgICAgICAgRmlsdGVyOiAoKGd1 aWRfZmllbGQgPD0gJzIyMjIyMjIyLTIyMjItMjIyMi0yMjIyLTIyMjIyMjIyMjIyMic6OnV1 aWQpIE9SIChndWlkX2ZpZWxkIDw9ICcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTEx MTExMTEnOjp1dWlkKSBPUiAoZ3VpZF9maWVsZCA8PSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3 MzYtMzUzNDMzYTIzMTNlJzo6dXVpZCkpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxkID0gJzNm M2UzYzNiLTNhMzAtMzkzOC0zNzM2LTM1MzQzM2EyMzEzZScgT1IKKwkJCQkJCQlndWlkX2Zp ZWxkID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJzsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQorICAgICAgICAg RmlsdGVyOiAoKGd1aWRfZmllbGQgPSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3MzYtMzUzNDMz YTIzMTNlJzo6dXVpZCkgT1IgKGd1aWRfZmllbGQgPSAnMTExMTExMTEtMTExMS0xMTExLTEx MTEtMTExMTExMTExMTExJzo6dXVpZCkpCisoMyByb3dzKQorCiAtLSBzaG91bGQgZmFpbAog SU5TRVJUIElOVE8gZ3VpZDEoZ3VpZF9maWVsZCkgVkFMVUVTKCcxMTExMTExMS0xMTExLTEx MTEtMTExMS0xMTExMTExMTExMTEnKTsKIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2 aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiZ3VpZDFfdW5pcXVlX2J0cmVlIgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZjc0YWQ0MTVmYmYuLjdlMTA4 ZjliMjgzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXgu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTc1 MCw2ICs3NTAsMTQgQEAgU0VMRUNUICogRlJPTSB0ZW5rMQogU0VMRUNUICogRlJPTSB0ZW5r MQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3Vz ID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKIAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU ICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAx OjpudW1lcmljIE9SIHRlbnRob3VzID0gMzo6aW50NCBPUiB0ZW50aG91cyA9IDQyOjpudW1l cmljKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBX SEVSRSB0ZW50aG91cyA9IDE6Om51bWVyaWMgT1IgdGVudGhvdXMgPSAzOjppbnQ0IE9SIHRl bnRob3VzID0gNDI6Om51bWVyaWM7CisKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5k ID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CkBAIC03ODAsNiArNzg4LDI1IEBAIFNFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1Ig dGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKIAorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRlbmsxLmh1 bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIgT1IgdGVuazEudGhvdXNhbmQg PSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVu azEuaHVuZHJlZDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsy LnRob3VzYW5kID0gNDIgT1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91 cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEgSk9JTiB0ZW5rMiBP TgorICB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQyIE9SIHRl bmsyLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQKKyAgdGVuazIu aHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxIExFRlQgSk9JTiB0ZW5rMiBPTgorICB0ZW5rMS5odW5k cmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQyIE9SIHRlbmsyLnRob3VzYW5kID0g NDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQKKyAgdGVuazIuaHVuZHJlZCA9IHRlbmsx Lmh1bmRyZWQ7CiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXgg Y29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3Fs CmluZGV4IDMwMTFkNzFiMTJiLi42ZDI0MTRiNjA0NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jvd3NlY3VyaXR5LnNxbApAQCAtMjE3Nyw2ICsyMTc3LDcgQEAgQ1JFQVRFIEZVTkNUSU9O IG9wX2xlYWsoaW50LCBpbnQpIFJFVFVSTlMgYm9vbAogQ1JFQVRFIE9QRVJBVE9SIDw8PCAo cHJvY2VkdXJlID0gb3BfbGVhaywgbGVmdGFyZyA9IGludCwgcmlnaHRhcmcgPSBpbnQsCiAg ICAgICAgICAgICAgICAgICAgICByZXN0cmljdCA9IHNjYWxhcmx0c2VsKTsKIFNFTEVDVCAq IEZST00gcmxzX3RibCBXSEVSRSBhIDw8PCAxMDAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMCBvciBhIDw8PCA5MDA7CiBE Uk9QIE9QRVJBVE9SIDw8PCAoaW50LCBpbnQpOwogRFJPUCBGVU5DVElPTiBvcF9sZWFrKGlu dCwgaW50KTsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0c19leHQuc3FsCmluZGV4IDBjMDhhNmNjNDJlLi41Yzc4NmIxNmM2ZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCkBAIC0xNjM0LDYgKzE2MzQsNyBAQCBDUkVB VEUgRlVOQ1RJT04gb3BfbGVhayhpbnQsIGludCkgUkVUVVJOUyBib29sCiBDUkVBVEUgT1BF UkFUT1IgPDw8IChwcm9jZWR1cmUgPSBvcF9sZWFrLCBsZWZ0YXJnID0gaW50LCByaWdodGFy ZyA9IGludCwKICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0ID0gc2NhbGFybHRzZWwp OwogU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAg QU5EIGIgPDw8IDA7IC0tIFBlcm1pc3Npb24gZGVuaWVkCitTRUxFQ1QgKiBGUk9NIHRzdHN0 YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOwogREVMRVRFIEZS T00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAt LSBQZXJtaXNzaW9uIGRlbmllZAogCiAtLSBHcmFudCBhY2Nlc3MgdmlhIGEgc2VjdXJpdHkg YmFycmllciB2aWV3LCBidXQgaGlkZSBhbGwgZGF0YQpAQCAtMTY0NSw2ICsxNjQ2LDcgQEAg R1JBTlQgU0VMRUNULCBERUxFVEUgT04gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgVE8gcmVn cmVzc19zdGF0c191c2VyMTsKIC0tIFNob3VsZCBub3cgaGF2ZSBhY2Nlc3MgdmlhIHRoZSB2 aWV3LCBidXQgc2VlIG5vdGhpbmcgYW5kIGxlYWsgbm90aGluZwogU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3N0YXRzX3VzZXIxOwogU0VMRUNUICogRlJPTSB0c3RzdGF0 cy5wcml2X3Rlc3RfdmlldyBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQg bm90IGxlYWsKK1NFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgV0hFUkUg YSA8PDwgMCBPUiBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKIERFTEVURSBGUk9NIHRz dHN0YXRzLnByaXZfdGVzdF92aWV3IFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFNo b3VsZCBub3QgbGVhawogCiAtLSBHcmFudCB0YWJsZSBhY2Nlc3MsIGJ1dCBoaWRlIGFsbCBk YXRhIHdpdGggUkxTCkBAIC0xNjU1LDYgKzE2NTcsNyBAQCBHUkFOVCBTRUxFQ1QsIERFTEVU RSBPTiB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFRPIHJlZ3Jlc3Nfc3RhdHNfdXNlcjE7CiAt LSBTaG91bGQgbm93IGhhdmUgZGlyZWN0IHRhYmxlIGFjY2VzcywgYnV0IHNlZSBub3RoaW5n IGFuZCBsZWFrIG5vdGhpbmcKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19z dGF0c191c2VyMTsKIFNFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVS RSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKK1NFTEVDVCAqIEZS T00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIE9SIGIgPDw8IDA7CiBE RUxFVEUgRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIg PDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogCiAtLSBwcml2aWxlZ2UgY2hlY2tzIGZvciBw Z19zdGF0c19leHQgYW5kIHBnX3N0YXRzX2V4dF9leHBycwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNx bAppbmRleCBjODhmNmQwODdhNy4uNzVlZTk2NmRlZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQu c3FsCkBAIC02Myw2ICs2MywxOCBAQCBDUkVBVEUgSU5ERVggZ3VpZDFfaGFzaCAgT04gZ3Vp ZDEgVVNJTkcgSEFTSCAgKGd1aWRfZmllbGQpOwogCiAtLSB1bmlxdWUgaW5kZXggdGVzdAog Q1JFQVRFIFVOSVFVRSBJTkRFWCBndWlkMV91bmlxdWVfQlRSRUUgT04gZ3VpZDEgVVNJTkcg QlRSRUUgKGd1aWRfZmllbGQpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxkIDw+ICcxMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMScgT1IKKwkJCQkJCQlndWlkX2ZpZWxkIDw+ICczZjNlM2MzYi0z YTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hFUkUgZ3VpZF9maWVsZCA8PSAnMjIyMjIyMjIt MjIyMi0yMjIyLTIyMjItMjIyMjIyMjIyMjIyJyBPUgorCQkJCQkJCQkJZ3VpZF9maWVsZCA8 PSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIE9SCisJCQkJCQkJCQlndWlk X2ZpZWxkIDw9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hFUkUgZ3Vp ZF9maWVsZCA9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnIE9SCisJ CQkJCQkJZ3VpZF9maWVsZCA9ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7 CisKIC0tIHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyBndWlkMShndWlkX2ZpZWxkKSBWQUxV RVMoJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMScpOwogCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDU0N2QxNGIzZTdjLi5mNWM0YjUxNDY0NiAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE3NjMsNiArMTc2Myw3IEBAIE9wckNh Y2hlS2V5CiBPcHJJbmZvCiBPcHJQcm9vZkNhY2hlRW50cnkKIE9wclByb29mQ2FjaGVLZXkK K09yQXJnSW5kZXhNYXRjaAogT3V0ZXJKb2luQ2xhdXNlSW5mbwogT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzCiBPdXRwdXRQbHVnaW5PcHRpb25zCi0tIAoyLjM0LjEKCg== --------------m6WZzCaNLRzsGi00cEWPZinw Content-Type: text/plain; charset=UTF-8; name="diff.no-cfbot" Content-Disposition: attachment; filename="diff.no-cfbot" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDhlNTI0MDE2YzZm Li5iODM2YWY2ZmI1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv aW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5j CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19hbW9wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVy YXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKQEAgLTMxNTgsNiArMzE1OSw3IEBAIG1hdGNoX29yY2xhdXNl X3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAogCU9pZAkJCWlucHV0Y29sbGlkID0g SW52YWxpZE9pZDsKIAlib29sCQlmaXJzdFRpbWUgPSB0cnVlOwogCWJvb2wJCWhhdmVfcGFy YW0gPSBmYWxzZTsKKwlIZWFwVHVwbGUJdHA7CiAKIAlBc3NlcnQoSXNBKG9yY2xhdXNlLCBC b29sRXhwcikpOwogCUFzc2VydChvcmNsYXVzZS0+Ym9vbG9wID09IE9SX0VYUFIpOwpAQCAt MzE5Myw3ICszMTk1LDcgQEAgbWF0Y2hfb3JjbGF1c2VfdG9faW5kZXhjb2woUGxhbm5lcklu Zm8gKnJvb3QsCiAJCWlmIChsaXN0X2xlbmd0aChzdWJDbGF1c2UtPmFyZ3MpICE9IDIpCiAJ CQlyZXR1cm4gTlVMTDsKIAotCQkvKiBSZXN0cmljdEluZm8gcGFyYW1ldGVycyBtdXN0IG1h dGNoIHBhcmVudCAqLworCQkvKiBSZXN0cmljdEluZm8gcGFyYW1ldGVycyBkbXVzdCBtYXRj aCBwYXJlbnQgKi8KIAkJaWYgKHN1YlJpbmZvLT5pc19wdXNoZWRfZG93biAhPSByaW5mby0+ aXNfcHVzaGVkX2Rvd24gfHwKIAkJCXN1YlJpbmZvLT5pc19jbG9uZSAhPSByaW5mby0+aXNf Y2xvbmUgfHwKIAkJCXN1YlJpbmZvLT5zZWN1cml0eV9sZXZlbCAhPSByaW5mby0+c2VjdXJp dHlfbGV2ZWwgfHwKQEAgLTMyMzQsNiArMzIzNiwxNSBAQCBtYXRjaF9vcmNsYXVzZV90b19p bmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAkJCXJldHVybiBOVUxMOwogCQl9CiAKKwkJ dHAgPSBTZWFyY2hTeXNDYWNoZTMoQU1PUE9QSUQsCisJCQkJCQkJT2JqZWN0SWRHZXREYXR1 bShvcG5vKSwKKwkJCQkJCQlDaGFyR2V0RGF0dW0oQU1PUF9TRUFSQ0gpLAorCQkJCQkJCU9i amVjdElkR2V0RGF0dW0oaW5kZXgtPm9wZmFtaWx5W2luZGV4Y29sXSkpOworCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHApKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJUmVsZWFzZVN5c0Nh Y2hlKHRwKTsKKwogCQkvKgogCQkgKiBJZ25vcmUgYW55IFJlbGFiZWxUeXBlIG5vZGUgYWJv dmUgdGhlIG9wZXJhbmRzLiAgVGhpcyBpcyBuZWVkZWQgdG8KIAkJICogYmUgYWJsZSB0byBh cHBseSBpbmRleHNjYW5uaW5nIGluIGJpbmFyeS1jb21wYXRpYmxlLW9wZXJhdG9yIGNhc2Vz LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4 IGM2ZmVlZjAzODEwLi5jYWMwNzZhYmI4OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAtMTkxMyw2ICsxOTEzLDI3IEBAIFNFTEVDVCAq IEZST00gdGVuazEKICAgICAgIDQyIHwgICAgNTUzMCB8ICAgMCB8ICAgIDIgfCAgIDIgfCAg ICAgIDIgfCAgICAgIDQyIHwgICAgICAgNDIgfCAgICAgICAgICA0MiB8ICAgICAgICA0MiB8 ICAgICAgIDQyIHwgIDg0IHwgICA4NSB8IFFCQUFBQSAgIHwgU0VJQUFBICAgfCBPT09PeHgK ICgxIHJvdykKIAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQor ICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxOjpudW1lcmljIE9SIHRl bnRob3VzID0gMzo6aW50NCBPUiB0ZW50aG91cyA9IDQyOjpudW1lcmljKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBC aXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICBSZWNoZWNrIENvbmQ6ICh0aG91c2FuZCA9 IDQyKQorICAgRmlsdGVyOiAoKCh0ZW50aG91cyk6Om51bWVyaWMgPSAnMSc6Om51bWVyaWMp IE9SICh0ZW50aG91cyA9IDMpIE9SICgodGVudGhvdXMpOjpudW1lcmljID0gJzQyJzo6bnVt ZXJpYykpCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKKyAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQyKQorKDUgcm93cykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0ZW50 aG91cyA9IDE6Om51bWVyaWMgT1IgdGVudGhvdXMgPSAzOjppbnQ0IE9SIHRlbnRob3VzID0g NDI6Om51bWVyaWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gdGVuazEKKyAgIEZpbHRlcjogKCgo dGVudGhvdXMpOjpudW1lcmljID0gJzEnOjpudW1lcmljKSBPUiAodGVudGhvdXMgPSAzKSBP UiAoKHRlbnRob3VzKTo6bnVtZXJpYyA9ICc0Mic6Om51bWVyaWMpKQorKDIgcm93cykKKwog RVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsK QEAgLTIwMzQsNiArMjA1NSw3OCBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICAg IDEwCiAoMSByb3cpCiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxLCB0ZW5rMgorICBXSEVSRSB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5r Mi50aG91c2FuZCA9IDQyIE9SIHRlbmsxLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhv dXMgPSAyKSBBTkQKKyAgdGVuazIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9v cAorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgodGVuazIudGhvdXNhbmQgPSA0MikgT1IgKHRl bmsxLnRob3VzYW5kID0gNDEpIE9SICh0ZW5rMi50ZW50aG91cyA9IDIpKQorICAgICAgICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgICAgICAgIFJlY2hlY2sg Q29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAg ICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMgorICAgICAgICAgICAgICAgICAg ICAgUmVjaGVjayBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsyX2h1bmRyZWQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisoMTIgcm93cykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRlbmsy CisgIFdIRVJFIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIg T1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0 ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVk IExvb3AKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsyCisgICAgICAg ICAgICAgICBSZWNoZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICBG aWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICh0ZW50aG91 cyA9IDIpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsy X2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0g NDIpCisgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX2h1bmRyZWQg b24gdGVuazEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiso OSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMSBKT0lOIHRlbmsyIE9OCisgIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRo b3VzYW5kID0gNDIgT1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9 IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsyCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAg ICAgICAgICAgICBGaWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEp IE9SICh0ZW50aG91cyA9IDIpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsyX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChodW5kcmVkID0gNDIpCisgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRl bmsxX2h1bmRyZWQgb24gdGVuazEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5k cmVkID0gNDIpCisoOSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMSBMRUZUIEpPSU4gdGVuazIgT04KKyAgdGVuazEuaHVuZHJlZCA9 IDQyIEFORCAodGVuazIudGhvdXNhbmQgPSA0MiBPUiB0ZW5rMi50aG91c2FuZCA9IDQxIE9S IHRlbmsyLnRlbnRob3VzID0gMikgQU5ECisgIHRlbmsyLmh1bmRyZWQgPSB0ZW5rMS5odW5k cmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpv aW4KKyAgICAgICAgIEpvaW4gRmlsdGVyOiAodGVuazEuaHVuZHJlZCA9IDQyKQorICAgICAg ICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyB0ZW5rMV9odW5kcmVkIG9uIHRlbmsxCisg ICAgICAgICAtPiAgTWVtb2l6ZQorICAgICAgICAgICAgICAgQ2FjaGUgS2V5OiB0ZW5rMS5o dW5kcmVkCisgICAgICAgICAgICAgICBDYWNoZSBNb2RlOiBsb2dpY2FsCisgICAgICAgICAg ICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMl9odW5kcmVkIG9uIHRlbmsyCisgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQp CisgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRo b3VzYW5kID0gNDEpIE9SICh0ZW50aG91cyA9IDIpKQorKDEwIHJvd3MpCisKIC0tCiAtLSBD aGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1bW4gY29udGVudHMKIC0t CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0CmluZGV4IDMx OTE5MDg1NWJkLi5lZjg5MGI5NmNjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9yb3dzZWN1cml0eS5vdXQKQEAgLTQ0OTIsNiArNDQ5MiwxMyBAQCBTRUxFQ1QgKiBGUk9N IHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMDsKIC0tLQogKDAgcm93cykKIAorRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMCBvciBh IDw8PCA5MDA7CisgICAgICAgIFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJv d3MpCisKIERST1AgT1BFUkFUT1IgPDw8IChpbnQsIGludCk7CiBEUk9QIEZVTkNUSU9OIG9w X2xlYWsoaW50LCBpbnQpOwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CmluZGV4IDhjNGRhOTU1MDg0Li5h NGM3YmU0ODdlZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0 c19leHQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91 dApAQCAtMzI1NCw2ICszMjU0LDggQEAgQ1JFQVRFIE9QRVJBVE9SIDw8PCAocHJvY2VkdXJl ID0gb3BfbGVhaywgbGVmdGFyZyA9IGludCwgcmlnaHRhcmcgPSBpbnQsCiAgICAgICAgICAg ICAgICAgICAgICByZXN0cmljdCA9IHNjYWxhcmx0c2VsKTsKIFNFTEVDVCAqIEZST00gdHN0 c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBQZXJt aXNzaW9uIGRlbmllZAogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgcHJp dl90ZXN0X3RibAorU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJF IGEgPDw8IDAgT1IgYiA8PDwgMDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRh YmxlIHByaXZfdGVzdF90YmwKIERFTEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF90Ymwg V0hFUkUgYSA8PDwgMCBBTkQgYiA8PDwgMDsgLS0gUGVybWlzc2lvbiBkZW5pZWQKIEVSUk9S OiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHByaXZfdGVzdF90YmwKIC0tIEdyYW50 IGFjY2VzcyB2aWEgYSBzZWN1cml0eSBiYXJyaWVyIHZpZXcsIGJ1dCBoaWRlIGFsbCBkYXRh CkBAIC0zMjY4LDYgKzMyNzAsMTEgQEAgU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rl c3RfdmlldyBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGwKIC0t LSstLS0KICgwIHJvd3MpCiAKK1NFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3Zp ZXcgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKKyBhIHwg YiAKKy0tLSstLS0KKygwIHJvd3MpCisKIERFTEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVz dF92aWV3IFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawog LS0gR3JhbnQgdGFibGUgYWNjZXNzLCBidXQgaGlkZSBhbGwgZGF0YSB3aXRoIFJMUwogUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwpAQCAtMzI4MCw2ICszMjg3LDExIEBAIFNFTEVD VCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8 PCAwOyAtLSBTaG91bGQgbm90IGxlCiAtLS0rLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgKiBG Uk9NIHRzdHN0YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOwor IGEgfCBiIAorLS0tKy0tLQorKDAgcm93cykKKwogREVMRVRFIEZST00gdHN0c3RhdHMucHJp dl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxl YWsKIC0tIHByaXZpbGVnZSBjaGVja3MgZm9yIHBnX3N0YXRzX2V4dCBhbmQgcGdfc3RhdHNf ZXh0X2V4cHJzCiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC91dWlkLm91dAppbmRleCA2MDI2ZTE1ZWQzMS4uOGY0ZWYwZDdhNmEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dApAQCAtMTI5LDYgKzEyOSwzNyBAQCBDUkVB VEUgSU5ERVggZ3VpZDFfYnRyZWUgT04gZ3VpZDEgVVNJTkcgQlRSRUUgKGd1aWRfZmllbGQp OwogQ1JFQVRFIElOREVYIGd1aWQxX2hhc2ggIE9OIGd1aWQxIFVTSU5HIEhBU0ggIChndWlk X2ZpZWxkKTsKIC0tIHVuaXF1ZSBpbmRleCB0ZXN0CiBDUkVBVEUgVU5JUVVFIElOREVYIGd1 aWQxX3VuaXF1ZV9CVFJFRSBPTiBndWlkMSBVU0lORyBCVFJFRSAoZ3VpZF9maWVsZCk7CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBXSEVSRSBn dWlkX2ZpZWxkIDw+ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgT1IKKwkJ CQkJCQlndWlkX2ZpZWxkIDw+ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMx M2UnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2Nh biBvbiBndWlkMQorICAgICAgICAgRmlsdGVyOiAoKGd1aWRfZmllbGQgPD4gJzExMTExMTEx LTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSc6OnV1aWQpIE9SIChndWlkX2ZpZWxkIDw+ ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOjp1dWlkKSkKKygzIHJv d3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGd1aWQx IFdIRVJFIGd1aWRfZmllbGQgPD0gJzIyMjIyMjIyLTIyMjItMjIyMi0yMjIyLTIyMjIyMjIy MjIyMicgT1IKKwkJCQkJCQkJCWd1aWRfZmllbGQgPD0gJzExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExJyBPUgorCQkJCQkJCQkJZ3VpZF9maWVsZCA8PSAnM2YzZTNjM2ItM2Ez MC0zOTM4LTM3MzYtMzUzNDMzYTIzMTNlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQor ICAgICAgICAgRmlsdGVyOiAoKGd1aWRfZmllbGQgPD0gJzIyMjIyMjIyLTIyMjItMjIyMi0y MjIyLTIyMjIyMjIyMjIyMic6OnV1aWQpIE9SIChndWlkX2ZpZWxkIDw9ICcxMTExMTExMS0x MTExLTExMTEtMTExMS0xMTExMTExMTExMTEnOjp1dWlkKSBPUiAoZ3VpZF9maWVsZCA8PSAn M2YzZTNjM2ItM2EzMC0zOTM4LTM3MzYtMzUzNDMzYTIzMTNlJzo6dXVpZCkpCisoMyByb3dz KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBX SEVSRSBndWlkX2ZpZWxkID0gJzNmM2UzYzNiLTNhMzAtMzkzOC0zNzM2LTM1MzQzM2EyMzEz ZScgT1IKKwkJCQkJCQlndWlkX2ZpZWxkID0gJzExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2Nh biBvbiBndWlkMQorICAgICAgICAgRmlsdGVyOiAoKGd1aWRfZmllbGQgPSAnM2YzZTNjM2It M2EzMC0zOTM4LTM3MzYtMzUzNDMzYTIzMTNlJzo6dXVpZCkgT1IgKGd1aWRfZmllbGQgPSAn MTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExJzo6dXVpZCkpCisoMyByb3dz KQorCiAtLSBzaG91bGQgZmFpbAogSU5TRVJUIElOVE8gZ3VpZDEoZ3VpZF9maWVsZCkgVkFM VUVTKCcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnKTsKIEVSUk9SOiAg ZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiZ3VpZDFf dW5pcXVlX2J0cmVlIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRl X2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5k ZXggZjc0YWQ0MTVmYmYuLjdlMTA4ZjliMjgzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ny ZWF0ZV9pbmRleC5zcWwKQEAgLTc1MCw2ICs3NTAsMTQgQEAgU0VMRUNUICogRlJPTSB0ZW5r MQogU0VMRUNUICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVu dGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKIAorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9 IDQyIEFORCAodGVudGhvdXMgPSAxOjpudW1lcmljIE9SIHRlbnRob3VzID0gMzo6aW50NCBP UiB0ZW50aG91cyA9IDQyOjpudW1lcmljKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0ZW50aG91cyA9IDE6Om51bWVyaWMgT1IgdGVu dGhvdXMgPSAzOjppbnQ0IE9SIHRlbnRob3VzID0gNDI6Om51bWVyaWM7CisKIEVYUExBSU4g KENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRy ZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CkBAIC03ODAs NiArNzg4LDI1IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291bnQo KikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQy IE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsK IAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRl bmsyCisgIFdIRVJFIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0g NDIgT1IgdGVuazEudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAor ICB0ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRlbmsxLmh1 bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIgT1IgdGVuazIudGhvdXNhbmQg PSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVu azEuaHVuZHJlZDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEgSk9JTiB0ZW5rMiBPTgorICB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5r Mi50aG91c2FuZCA9IDQyIE9SIHRlbmsyLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhv dXMgPSAyKSBBTkQKKyAgdGVuazIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxIExFRlQgSk9JTiB0 ZW5rMiBPTgorICB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQy IE9SIHRlbmsyLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQKKyAg dGVuazIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Ig d2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcm93c2VjdXJpdHkuc3FsCmluZGV4IDMwMTFkNzFiMTJiLi42ZDI0MTRiNjA0NCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbApAQCAtMjE3Nyw2ICsyMTc3 LDcgQEAgQ1JFQVRFIEZVTkNUSU9OIG9wX2xlYWsoaW50LCBpbnQpIFJFVFVSTlMgYm9vbAog Q1JFQVRFIE9QRVJBVE9SIDw8PCAocHJvY2VkdXJlID0gb3BfbGVhaywgbGVmdGFyZyA9IGlu dCwgcmlnaHRhcmcgPSBpbnQsCiAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdCA9IHNj YWxhcmx0c2VsKTsKIFNFTEVDVCAqIEZST00gcmxzX3RibCBXSEVSRSBhIDw8PCAxMDAwOwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwg MTAwMCBvciBhIDw8PCA5MDA7CiBEUk9QIE9QRVJBVE9SIDw8PCAoaW50LCBpbnQpOwogRFJP UCBGVU5DVElPTiBvcF9sZWFrKGludCwgaW50KTsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCmluZGV4IDBjMDhhNmNjNDJl Li41Yzc4NmIxNmM2ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNf ZXh0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCkBAIC0x NjM0LDYgKzE2MzQsNyBAQCBDUkVBVEUgRlVOQ1RJT04gb3BfbGVhayhpbnQsIGludCkgUkVU VVJOUyBib29sCiBDUkVBVEUgT1BFUkFUT1IgPDw8IChwcm9jZWR1cmUgPSBvcF9sZWFrLCBs ZWZ0YXJnID0gaW50LCByaWdodGFyZyA9IGludCwKICAgICAgICAgICAgICAgICAgICAgIHJl c3RyaWN0ID0gc2NhbGFybHRzZWwpOwogU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rl c3RfdGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFBlcm1pc3Npb24gZGVuaWVk CitTRUxFQ1QgKiBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBP UiBiIDw8PCAwOwogREVMRVRFIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBh IDw8PCAwIEFORCBiIDw8PCAwOyAtLSBQZXJtaXNzaW9uIGRlbmllZAogCiAtLSBHcmFudCBh Y2Nlc3MgdmlhIGEgc2VjdXJpdHkgYmFycmllciB2aWV3LCBidXQgaGlkZSBhbGwgZGF0YQpA QCAtMTY0NSw2ICsxNjQ2LDcgQEAgR1JBTlQgU0VMRUNULCBERUxFVEUgT04gdHN0c3RhdHMu cHJpdl90ZXN0X3ZpZXcgVE8gcmVncmVzc19zdGF0c191c2VyMTsKIC0tIFNob3VsZCBub3cg aGF2ZSBhY2Nlc3MgdmlhIHRoZSB2aWV3LCBidXQgc2VlIG5vdGhpbmcgYW5kIGxlYWsgbm90 aGluZwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3N0YXRzX3VzZXIxOwog U0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdmlldyBXSEVSRSBhIDw8PCAwIEFO RCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKK1NFTEVDVCAqIEZST00gdHN0c3RhdHMu cHJpdl90ZXN0X3ZpZXcgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOyAtLSBTaG91bGQgbm90 IGxlYWsKIERFTEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF92aWV3IFdIRVJFIGEgPDw8 IDAgQU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogCiAtLSBHcmFudCB0YWJsZSBh Y2Nlc3MsIGJ1dCBoaWRlIGFsbCBkYXRhIHdpdGggUkxTCkBAIC0xNjU1LDYgKzE2NTcsNyBA QCBHUkFOVCBTRUxFQ1QsIERFTEVURSBPTiB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFRPIHJl Z3Jlc3Nfc3RhdHNfdXNlcjE7CiAtLSBTaG91bGQgbm93IGhhdmUgZGlyZWN0IHRhYmxlIGFj Y2VzcywgYnV0IHNlZSBub3RoaW5nIGFuZCBsZWFrIG5vdGhpbmcKIFNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19zdGF0c191c2VyMTsKIFNFTEVDVCAqIEZST00gdHN0c3Rh dHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQg bm90IGxlYWsKK1NFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBh IDw8PCAwIE9SIGIgPDw8IDA7CiBERUxFVEUgRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJs IFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogCiAtLSBw cml2aWxlZ2UgY2hlY2tzIGZvciBwZ19zdGF0c19leHQgYW5kIHBnX3N0YXRzX2V4dF9leHBy cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC91dWlkLnNxbAppbmRleCBjODhmNmQwODdhNy4uNzVlZTk2NmRlZDAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCkBAIC02Myw2ICs2MywxOCBAQCBDUkVBVEUgSU5E RVggZ3VpZDFfaGFzaCAgT04gZ3VpZDEgVVNJTkcgSEFTSCAgKGd1aWRfZmllbGQpOwogCiAt LSB1bmlxdWUgaW5kZXggdGVzdAogQ1JFQVRFIFVOSVFVRSBJTkRFWCBndWlkMV91bmlxdWVf QlRSRUUgT04gZ3VpZDEgVVNJTkcgQlRSRUUgKGd1aWRfZmllbGQpOworCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxk IDw+ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgT1IKKwkJCQkJCQlndWlk X2ZpZWxkIDw+ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hFUkUgZ3Vp ZF9maWVsZCA8PSAnMjIyMjIyMjItMjIyMi0yMjIyLTIyMjItMjIyMjIyMjIyMjIyJyBPUgor CQkJCQkJCQkJZ3VpZF9maWVsZCA8PSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTEnIE9SCisJCQkJCQkJCQlndWlkX2ZpZWxkIDw9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzcz Ni0zNTM0MzNhMjMxM2UnOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IEZST00gZ3VpZDEgV0hFUkUgZ3VpZF9maWVsZCA9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzcz Ni0zNTM0MzNhMjMxM2UnIE9SCisJCQkJCQkJZ3VpZF9maWVsZCA9ICcxMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMSc7CisKIC0tIHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyBn dWlkMShndWlkX2ZpZWxkKSBWQUxVRVMoJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTEx MTExMTExMScpOwogCg== --------------m6WZzCaNLRzsGi00cEWPZinw--