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 1v1dVm-00AsGQ-V2 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Sep 2025 04:23:19 +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 1v1dVl-00HYSC-4c for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Sep 2025 04:23:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v1dVj-00HYS2-Uo for pgsql-hackers@lists.postgresql.org; Thu, 25 Sep 2025 04:23:16 +0000 Received: from mail-yb1-xb2d.google.com ([2607:f8b0:4864:20::b2d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v1dVg-002IPD-0p for pgsql-hackers@lists.postgresql.org; Thu, 25 Sep 2025 04:23:14 +0000 Received: by mail-yb1-xb2d.google.com with SMTP id 3f1490d57ef6-eb382ff2696so260976276.1 for ; Wed, 24 Sep 2025 21:23:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758774192; x=1759378992; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4IPpHapJIBxxY83P0X2wzFK29C/6jN/zu+WZzy0nc0Y=; b=dmBqTITowGS689RC4yweMsonO9NGSC3YXNjoxrkoFgIlMPmcqE6XgD054Ze0o/1O8g Z4GWDSREPuQCukBzVTcoNaPLXW/Ct2ZKzpmYmaPO543LMyWzC+0gob6+7mPp1f4eAtKi v79JwBaKddOaFKSO2Tp9zf4qerOd8HfNy2KPxoONb0VZKrlZvPQzsG3X1HR4TiTCetUM RvmYfwXx4oCV+qQLr4c/abc5wXrCX/G3C4Uk6CccTpquuoTT3EswubqKfYxTVYzsCnKP iaeOA/eH+7IDNz2Lj6TeJMZArsrVLFQV7azyx7KiOxILBq+NAYXdX5Hu6ZG4uYakxn4G OIOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758774192; x=1759378992; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4IPpHapJIBxxY83P0X2wzFK29C/6jN/zu+WZzy0nc0Y=; b=XLwlgUBbNGEqoqEWsJW3CYmyCmtRI1xEPPbN4OAXqjWMAab5eyMqTgMyCsGPunDR7P xgIAplIpRLaU+YP5F1Fw6hVscb/2jIiAjdRKWPllxPFCp88pGixtFzcqUijxJxigtOLm /5+1Q42yMuQnQVw+Yizsb4NYNmbhp+ETOiSkaO85NWslKa6D/e9dCTBxxO70SxQ7AsqI n/lxz4qaQLYhDj3Vgd9QG/zIfkqiFx3bkif5NtU/KVwVSt88qVcTgnpXIUK6ilji4jdr nVWPdl5TJNCjlNpAuo9PsnJBk/Ejx93jdWnGceGbdppZWN7Vjwn6UD20b1aMOi2iUaTb Usmg== X-Forwarded-Encrypted: i=1; AJvYcCVOZAr9D1twKqKaFGHSbgRD85KX36/jzFuQWeop0U1C9zjyOHJKEaeM7cnQm0runLbScaxdJKwo7rCbfH2p@lists.postgresql.org X-Gm-Message-State: AOJu0YxOCo3oKcqC+QHUF29VBghsUKemGxrBhNwWlfwEQQenjtytXIq8 v6uuc+GHmU7NI56DLJk4j1c11yW6Tslv0TijSHhD6vMsGQcZwNggL5pXW4xtRY0EkCFy9+nmt5l E4hL8gd8EgdiRn6uZFFemdnVdgliqK0A= X-Gm-Gg: ASbGnctZk6VHuPE+twHQA4NDiMeYofgJJKogGspwdfeC+kULCxFNmeKclKbQMOYryO8 8nvrV8dTiorkCSLv3NuQYuYv3+Ez+kOzzDeSzA3isfRLg7ex/78tVN27jl3/JLYadU/yGZeZKJe RLms3uArW6VsTKvetyeB+VC7Q51Y+hZPMZf1A4Mt50rrR21CYdcYGjBrXWM7liRggwy6hSmqooC bkO9v+Tow== X-Google-Smtp-Source: AGHT+IHrPAhnhaWEjXfM8NWOaUd4vh1Puxu0YMM+isOel0PeUC9mX78Pust8MK66Oq5ELRLBXlfapL8YfbPbp3JPVkg= X-Received: by 2002:a05:6902:98e:b0:eaa:c368:b130 with SMTP id 3f1490d57ef6-eb37fcb5d84mr2335635276.35.1758774191747; Wed, 24 Sep 2025 21:23:11 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Thu, 25 Sep 2025 13:23:00 +0900 X-Gm-Features: AS18NWCQegJxAgf_yeto2ZS0mPhQJRTGmesCSv7xsoQTqmVCZqGgSE6hP2s1pGk Message-ID: Subject: Re: Eager aggregation, take 3 To: Robert Haas Cc: Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org, Matheus Alcantara Content-Type: multipart/mixed; boundary="000000000000f0b0c6063f9886e2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f0b0c6063f9886e2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I've run TPC-DS again to compare planning times with and without eager aggregation. Out of 99 queries, only one query (query 64) shows a noticeable increase in planning time. This query performs inner joins across 38 tables. This is a very large search space. (I'm talking about the standard join search method, not the GEQO.) If my math doesn't fail me, the maximum number of different join orders when joining n tables is: Catalan(n=E2=80=AF=E2=88=92=E2=80=AF1) x n= !. For n =3D 38, this number is astronomically large. In practice, query 64 joins 19 tables twice (due to a CTE), which still results in about 3.4E28 different join orders. Of course, in practice, with the help of join_collapse_limit and other heuristics, the effective search space is reduced a lot, but even then, it remains very large. Given this, I'm not too surprised that query 64 shows an increase in planning time when eager aggregation is applied -- exploring the best join order in such a space is inherently expensive. That said, I've identified a few performance hotspots that can be optimized to help reduce planning time: 1) the exprs_known_equal() call in get_expression_sortgroupref(), which is used to check if a given expression is known equal to a grouping expression due to ECs. We can optimize this by storing the EC of each grouping expression, and then get_expression_sortgroupref() would only need to search the relevant EC, rather than scanning all of them. 2) the estimate_num_groups() call in create_rel_agg_info(). We can optimize this by avoiding unnecessary calls to estimate_num_groups() where possible. Attached is an updated version of the patch with these optimizations applied. With this patch, the planning times for query 64, with and without eager aggregation, are: -- with eager aggregation Planning Time: 9432.042 ms -- without eager aggregation Planning Time: 7196.999 ms I think the increase in planning time is acceptable given the large search space involved, though I may be biased. - Richard --000000000000f0b0c6063f9886e2 Content-Type: application/octet-stream; name="v23-0001-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v23-0001-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfywpcew0 RnJvbSA2M2QzNmZlMjY2ZTVjOGFiMTkwNzk2OThhM2VhNWU5YWJiMzIxOGJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIz IDEvMl0gSW1wbGVtZW50IEVhZ2VyIEFnZ3JlZ2F0aW9uCgpFYWdlciBhZ2dyZWdhdGlvbiBpcyBh IHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNobmlxdWUgdGhhdCBwYXJ0aWFsbHkKcHVzaGVzIGFnZ3Jl Z2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemVzIGl0IG9uY2UgYWxsIHRoZQpyZWxhdGlv bnMgYXJlIGpvaW5lZC4gIEVhZ2VyIGFnZ3JlZ2F0aW9uIG1heSByZWR1Y2UgdGhlIG51bWJlciBv ZgppbnB1dCByb3dzIHRvIHRoZSBqb2luIGFuZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRl ciBvdmVyYWxsIHBsYW4uCgpJbiB0aGUgY3VycmVudCBwbGFubmVyIGFyY2hpdGVjdHVyZSwgdGhl IHNlcGFyYXRpb24gYmV0d2VlbiB0aGUKc2Nhbi9qb2luIHBsYW5uaW5nIHBoYXNlIGFuZCB0aGUg cG9zdC1zY2FuL2pvaW4gcGhhc2UgbWVhbnMgdGhhdAphZ2dyZWdhdGlvbiBzdGVwcyBhcmUgbm90 IHZpc2libGUgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGpvaW4gdHJlZSwKbGltaXRpbmcgdGhlIHBs YW5uZXIncyBhYmlsaXR5IHRvIGV4cGxvaXQgYWdncmVnYXRpb24tYXdhcmUKb3B0aW1pemF0aW9u cy4gIFRvIGltcGxlbWVudCBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgY29sbGVjdCBpbmZvcm1hdGlv bgphYm91dCBhZ2dyZWdhdGUgZnVuY3Rpb25zIGluIHRoZSB0YXJnZXRsaXN0IGFuZCBIQVZJTkcg Y2xhdXNlLCBhbG9uZwp3aXRoIGdyb3VwaW5nIGV4cHJlc3Npb25zIGZyb20gdGhlIEdST1VQIEJZ IGNsYXVzZSwgYW5kIHN0b3JlIGl0IGluCnRoZSBQbGFubmVySW5mbyBub2RlLiAgRHVyaW5nIHRo ZSBzY2FuL2pvaW4gcGxhbm5pbmcgcGhhc2UsIHRoaXMKaW5mb3JtYXRpb24gaXMgdXNlZCB0byBl dmFsdWF0ZSBlYWNoIGJhc2Ugb3Igam9pbiByZWxhdGlvbiB0bwpkZXRlcm1pbmUgd2hldGhlciBl YWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZC4gIElmIGFwcGxpY2FibGUsIHdlCmNyZWF0 ZSBhIHNlcGFyYXRlIFJlbE9wdEluZm8sIHJlZmVycmVkIHRvIGFzIGEgZ3JvdXBlZCByZWxhdGlv biwgdG8KcmVwcmVzZW50IHRoZSBwYXJ0aWFsbHktYWdncmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBy ZWxhdGlvbiBhbmQKZ2VuZXJhdGUgZ3JvdXBlZCBwYXRocyBmb3IgaXQuCgpHcm91cGVkIHJlbGF0 aW9uIHBhdGhzIGNhbiBiZSBnZW5lcmF0ZWQgaW4gdHdvIHdheXMuICBUaGUgZmlyc3QgbWV0aG9k Cmludm9sdmVzIGFkZGluZyBzb3J0ZWQgYW5kIGhhc2hlZCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBh dGhzIG9uIHRvcCBvZgp0aGUgbm9uLWdyb3VwZWQgcGF0aHMuICBUbyBsaW1pdCBwbGFubmluZyB0 aW1lLCB3ZSBvbmx5IGNvbnNpZGVyIHRoZQpjaGVhcGVzdCBvciBzdWl0YWJseS1zb3J0ZWQgbm9u LWdyb3VwZWQgcGF0aHMgaW4gdGhpcyBzdGVwLgpBbHRlcm5hdGl2ZWx5LCBncm91cGVkIHBhdGhz IGNhbiBiZSBnZW5lcmF0ZWQgYnkgam9pbmluZyBhIGdyb3VwZWQKcmVsYXRpb24gd2l0aCBhIG5v bi1ncm91cGVkIHJlbGF0aW9uLiAgSm9pbmluZyB0d28gZ3JvdXBlZCByZWxhdGlvbnMKaXMgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQuCgpUbyBmdXJ0aGVyIGxpbWl0IHBsYW5uaW5nIHRpbWUsIHdl IGN1cnJlbnRseSBhZG9wdCBhIHN0cmF0ZWd5IHdoZXJlCnBhcnRpYWwgYWdncmVnYXRpb24gaXMg cHVzaGVkIG9ubHkgdG8gdGhlIGxvd2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKam9pbiB0cmVl IHdoZXJlIGl0IHByb3ZpZGVzIGEgc2lnbmlmaWNhbnQgcmVkdWN0aW9uIGluIHJvdyBjb3VudC4K VGhpcyBzdHJhdGVneSBhbHNvIGhlbHBzIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZv ciB0aGUgc2FtZQpncm91cGVkIHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3Ms IHdoaWNoIGlzIGltcG9ydGFudCB0bwpzdXBwb3J0IGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiBv ZiB0aGUgcGxhbm5lci4KCkZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiB0aGF0IGlzIHB1c2hl ZCBkb3duIHRvIGEgbm9uLWFnZ3JlZ2F0ZWQKcmVsYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIg YWxsIGV4cHJlc3Npb25zIGZyb20gdGhpcyByZWxhdGlvbiB0aGF0CmFyZSBpbnZvbHZlZCBpbiB1 cHBlciBqb2luIGNsYXVzZXMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUgZ3JvdXBpbmcKa2V5cywg dXNpbmcgY29tcGF0aWJsZSBvcGVyYXRvcnMuICBUaGlzIGlzIGVzc2VudGlhbCB0byBlbnN1cmUg dGhhdCBhbgphZ2dyZWdhdGVkIHJvdyBmcm9tIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG1hdGNo ZXMgdGhlIG90aGVyIHNpZGUgb2YKdGhlIGpvaW4gaWYgYW5kIG9ubHkgaWYgZWFjaCByb3cgaW4g dGhlIHBhcnRpYWwgZ3JvdXAgZG9lcy4gIFRoaXMKZW5zdXJlcyB0aGF0IGFsbCByb3dzIHdpdGhp biB0aGUgc2FtZSBwYXJ0aWFsIGdyb3VwIHNoYXJlIHRoZSBzYW1lCiJkZXN0aW55Iiwgd2hpY2gg aXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgY29ycmVjdG5lc3MuCgpPbmUgcmVzdHJpY3Rpb24g aXMgdGhhdCB3ZSBjYW5ub3QgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gYQpyZWxh dGlvbiB0aGF0IGlzIGluIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyIGpvaW4sIGJlY2F1 c2UgdGhlCk5VTEwtZXh0ZW5kZWQgcm93cyBwcm9kdWNlZCBieSB0aGUgb3V0ZXIgam9pbiB3b3Vs ZCBub3QgYmUgYXZhaWxhYmxlCndoZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlv biwgd2hpbGUgd2l0aCBhCm5vbi1lYWdlci1hZ2dyZWdhdGlvbiBwbGFuIHRoZXNlIHJvd3MgYXJl IGF2YWlsYWJsZSBmb3IgdGhlIHRvcC1sZXZlbAphZ2dyZWdhdGlvbi4gIFB1c2hpbmcgcGFydGlh bCBhZ2dyZWdhdGlvbiBpbiB0aGlzIGNhc2UgbWF5IHJlc3VsdCBpbgp0aGUgcm93cyBiZWluZyBn cm91cGVkIGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0CnZh bHVlcyBmcm9tIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb25zLgoKSWYgd2UgaGF2ZSBnZW5lcmF0ZWQg YSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGUgdG9wbW9zdCBqb2luIHJlbGF0aW9uLAp3ZSBmaW5h bGl6ZSBpdHMgcGF0aHMgYXQgdGhlIGVuZC4gIFRoZSBmaW5hbCBwYXRocyB3aWxsIGNvbXBldGUg aW4gdGhlCnVzdWFsIHdheSB3aXRoIHBhdGhzIGJ1aWx0IGZyb20gcmVndWxhciBwbGFubmluZy4K ClRoZSBwYXRjaCB3YXMgb3JpZ2luYWxseSBwcm9wb3NlZCBieSBBbnRvbmluIEhvdXNrYSBpbiAy MDE3LiAgVGhpcwpjb21taXQgcmV3b3JrcyB2YXJpb3VzIGltcG9ydGFudCBhc3BlY3RzIGFuZCBy ZXdyaXRlcyBtb3N0IG9mIHRoZQpjdXJyZW50IGNvZGUuICBIb3dldmVyLCB0aGUgb3JpZ2luYWwg cGF0Y2ggYW5kIHJldmlld3Mgd2VyZSB2ZXJ5CnVzZWZ1bC4KCkF1dGhvcjogUmljaGFyZCBHdW8g PGd1b2ZlbmdsaW51eEBnbWFpbC5jb20+CkF1dGhvcjogQW50b25pbiBIb3Vza2EgPGFoQGN5YmVy dGVjLmF0PiAoaW4gYW4gb2xkZXIgdmVyc2lvbikKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxy b2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNh bGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUZW5kZXIgV2FuZyA8dG5kcndhbmdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KUmV2aWV3ZWQt Ynk6IFRvbWFzIFZvbmRyYSA8dG9tYXNAdm9uZHJhLm1lPiAoaW4gYW4gb2xkZXIgdmVyc2lvbikK UmV2aWV3ZWQtYnk6IEFuZHkgRmFuIDx6aGlodWlmYW4xMjEzQDE2My5jb20+IChpbiBhbiBvbGRl ciB2ZXJzaW9uKQpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9z c0BnbWFpbC5jb20+IChpbiBhbiBvbGRlciB2ZXJzaW9uKQpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBTWJXczQ4anpMclB0MUpfMDBaY1BaWFdVUUthd1FPRkU4Uk9jLUFEaVlxc3Fy cEJOd0BtYWlsLmdtYWlsLmNvbQotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dCAgICB8ICAgNDkgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAg ICAgICAgICAgICAgICB8ICAgMzEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSAgICAg ICAgICAgICAgICAgIHwgIDExMCArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19l dmFsLmMgICAgICAgIHwgICAyMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jICAgICAgICAgfCAgNDY5ICsrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lu cmVscy5jICAgICAgICAgfCAgMTkzICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0 c3BsYW4uYyAgICAgICAgfCAgMzc5ICsrKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5tYWluLmMgICAgICAgICB8ICAgIDkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jICAgICAgICAgIHwgIDEyNCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBw ZW5kaW5mby5jICAgICAgIHwgICA1MSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMgICAgICAgICAgfCAgNjUwICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgMTYgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCAgICAgICAgICAgICAgICAgfCAgMTIxICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5v ZGUuaCAgICAgICAgICAgICAgfCAgICA2ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5o ICAgICAgICAgICAgICAgICB8ICAgIDYgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWlu LmggICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmlj dS51dGY4Lm91dCAgICAgfCAgIDMyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2Vy X2FnZ3JlZ2F0ZS5vdXQgfCAxNTg0ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICAgICAgfCAgIDEyICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dCAgfCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgICAgICB8ICAyMjUgKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fYWdncmVnYXRlLnNxbCAgfCAgICAyICsKIHNyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgIDMgKwogMjYgZmlsZXMgY2hhbmdlZCwg NDAyOSBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggNmRjMDRl OTE2ZGMuLmY1YTU3YjljYmQ1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVk L3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTM3MDEsMzAgKzM3MDEsMzMgQEAgc2VsZWN0IGNvdW50KHQx LmMzKSBmcm9tIGZ0MiB0MSBsZWZ0IGpvaW4gZnQyIHQyIG9uICh0MS5jMSA9IHJhbmRvbSgpICog dDIuYzIpOwogLS0gU3VicXVlcnkgaW4gRlJPTSBjbGF1c2UgaGF2aW5nIGFnZ3JlZ2F0ZQogZXhw bGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogc2VsZWN0IGNvdW50KCopLCB4LmIgZnJvbSBmdDEs IChzZWxlY3QgYzIgYSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyKSB4IHdoZXJlIGZ0 MS5jMiA9IHguYSBncm91cCBieSB4LmIgb3JkZXIgYnkgMSwgMjsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgU29ydAotICAgT3V0cHV0OiAoY291bnQoKikpLCB4LmIKLSAgIFNv cnQgS2V5OiAoY291bnQoKikpLCB4LmIKLSAgIC0+ICBIYXNoQWdncmVnYXRlCi0gICAgICAgICBP dXRwdXQ6IGNvdW50KCopLCB4LmIKLSAgICAgICAgIEdyb3VwIEtleTogeC5iCi0gICAgICAgICAt PiAgSGFzaCBKb2luCi0gICAgICAgICAgICAgICBPdXRwdXQ6IHguYgotICAgICAgICAgICAgICAg SW5uZXIgVW5pcXVlOiB0cnVlCi0gICAgICAgICAgICAgICBIYXNoIENvbmQ6IChmdDEuYzIgPSB4 LmEpCi0gICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKLSAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogZnQxLmMyCi0gICAgICAgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgYzIgRlJPTSAiUyAxIi4iVCAxIgotICAgICAgICAgICAgICAgLT4gIEhh c2gKLSAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAg ICAgICAgIC0+ICBTdWJxdWVyeSBTY2FuIG9uIHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIs IChzdW0oZnQxXzEuYzEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRp b25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAx Ii4iVCAxIiBHUk9VUCBCWSAxCi0oMjEgcm93cykKKyAgIE91dHB1dDogKGNvdW50KCopKSwgKHN1 bShmdDFfMS5jMSkpCisgICBTb3J0IEtleTogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkpCisg ICAtPiAgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogY291bnQoKiks IChzdW0oZnQxXzEuYzEpKQorICAgICAgICAgR3JvdXAgS2V5OiAoc3VtKGZ0MV8xLmMxKSkKKyAg ICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICBTb3J0IEtleTogKHN1bShmdDFfMS5j MSkpCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6IChmdDFfMS5jMiA9IGZ0MS5jMikKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog ZnQxXzEuYzIsIChzdW0oZnQxXzEuYzEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVs YXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4i VCAxIiBHUk9VUCBCWSAxCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogZnQxLmMyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1Ymxp Yy5mdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQx LmMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgYzIgRlJPTSAiUyAxIi4iVCAxIgorKDI0IHJvd3MpCiAKIHNlbGVjdCBjb3VudCgqKSwg eC5iIGZyb20gZnQxLCAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91cCBieSBj MikgeCB3aGVyZSBmdDEuYzIgPSB4LmEgZ3JvdXAgYnkgeC5iIG9yZGVyIGJ5IDEsIDI7CiAgY291 bnQgfCAgIGIgICAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBlOWI0MjBmM2RkYi4uMzllNjU4Yjc4MDggMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKQEAgLTU0NzUsNiArNTQ3NSwyMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAg ICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRy eSBpZD0iZ3VjLWVuYWJsZS1lYWdlci1hZ2dyZWdhdGUiIHhyZWZsYWJlbD0iZW5hYmxlX2VhZ2Vy X2FnZ3JlZ2F0ZSI+CisgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZWFnZXJfYWdncmVnYXRl PC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU8L3Zhcm5hbWU+IGNv bmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAg ICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJs ZXMgb3IgZGlzYWJsZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIHBhcnRpYWxseSBw dXNoCisgICAgICAgIGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemUgaXQgb25j ZSBhbGwgdGhlIHJlbGF0aW9ucyBhcmUKKyAgICAgICAgam9pbmVkLiBUaGUgZGVmYXVsdCBpcyA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJs ZS1nYXRoZXJtZXJnZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRl cm0+PHZhcm5hbWU+ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpAQCAtNjA5NSw2ICs2MTEwLDIyIEBAIEFOWSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBs YWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWluLWVhZ2VyLWFnZy1ncm91cC1zaXplIiB4 cmVmbGFiZWw9Im1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSI+CisgICAgICA8dGVybT48dmFybmFt ZT5taW5fZWFnZXJfYWdnX2dyb3VwX3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5mbG9hdGluZyBwb2lu dDwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1p bl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8 L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2V0cyB0aGUgbWluaW11bSBhdmVyYWdlIGdy b3VwIHNpemUgcmVxdWlyZWQgdG8gY29uc2lkZXIgYXBwbHlpbmcKKyAgICAgICAgZWFnZXIgYWdn cmVnYXRpb24uIFRoaXMgaGVscHMgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGVhZ2VyCisgICAgICAg IGFnZ3JlZ2F0aW9uIHdoZW4gaXQgZG9lcyBub3Qgb2ZmZXIgc2lnbmlmaWNhbnQgcm93IGNvdW50 IHJlZHVjdGlvbi4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4u CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWppdC1hYm92ZS1jb3N0IiB4cmVmbGFiZWw9 ImppdF9hYm92ZV9jb3N0Ij4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmppdF9hYm92ZV9jb3N0PC92 YXJuYW1lPiAoPHR5cGU+ZmxvYXRpbmcgcG9pbnQ8L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvUkVBRE1FCmluZGV4IDg0MzM2ODA5NmZkLi42YzM1YmFjZWVkYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvUkVBRE1FCkBAIC0xNTAwLDMgKzE1MDAsMTEzIEBAIGJyZWFraW5nIGRvd24gYWdncmVnYXRp b24gb3IgZ3JvdXBpbmcgb3ZlciBhIHBhcnRpdGlvbmVkIHJlbGF0aW9uIGludG8KIGFnZ3JlZ2F0 aW9uIG9yIGdyb3VwaW5nIG92ZXIgaXRzIHBhcnRpdGlvbnMgaXMgY2FsbGVkIHBhcnRpdGlvbndp c2UKIGFnZ3JlZ2F0aW9uLiAgRXNwZWNpYWxseSB3aGVuIHRoZSBwYXJ0aXRpb24ga2V5cyBtYXRj aCB0aGUgR1JPVVAgQlkgY2xhdXNlLAogdGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIg dGhhbiB0aGUgcmVndWxhciBtZXRob2QuCisKK0VhZ2VyIGFnZ3JlZ2F0aW9uCistLS0tLS0tLS0t LS0tLS0tLQorCitFYWdlciBhZ2dyZWdhdGlvbiBpcyBhIHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNo bmlxdWUgdGhhdCBwYXJ0aWFsbHkKK3B1c2hlcyBhZ2dyZWdhdGlvbiBwYXN0IGEgam9pbiwgYW5k IGZpbmFsaXplcyBpdCBvbmNlIGFsbCB0aGUKK3JlbGF0aW9ucyBhcmUgam9pbmVkLiAgRWFnZXIg YWdncmVnYXRpb24gbWF5IHJlZHVjZSB0aGUgbnVtYmVyIG9mCitpbnB1dCByb3dzIHRvIHRoZSBq b2luIGFuZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRlciBvdmVyYWxsIHBsYW4uCisKK1Rv IHByb3ZlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIGNvcnJlY3QsIGxldCdzIGZpcnN0IGNv bnNpZGVyIHRoZQorY2FzZSB3aGVyZSBvbmx5IGlubmVyIGpvaW5zIGFyZSBpbnZvbHZlZC4gIElu IHRoaXMgY2FzZSwgd2UgcGFydGl0aW9uCit0aGUgdGFibGVzIGluIHRoZSBGUk9NIGNsYXVzZSBp bnRvIHR3byBncm91cHM6IHRob3NlIHRoYXQgY29udGFpbiBhdAorbGVhc3Qgb25lIGFnZ3JlZ2F0 aW9uIGNvbHVtbiwgYW5kIHRob3NlIHRoYXQgZG8gbm90IGNvbnRhaW4gYW55CithZ2dyZWdhdGlv biBjb2x1bW5zLiAgRWFjaCBncm91cCBjYW4gYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSByZWxhdGlv bgorZm9ybWVkIGJ5IHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aGUgdGFibGVzIHdpdGhpbiB0 aGF0IGdyb3VwLgorVGhlcmVmb3JlLCB3aXRob3V0IGxvc3Mgb2YgZ2VuZXJhbGl0eSwgd2UgY2Fu IGFzc3VtZSB0aGF0IHRoZSBGUk9NCitjbGF1c2UgY29udGFpbnMgZXhhY3RseSB0d28gcmVsYXRp b25zLCBSMSBhbmQgUjIsIHdoZXJlIFIxIHJlcHJlc2VudHMKK3RoZSByZWxhdGlvbiBjb250YWlu aW5nIGFsbCBhZ2dyZWdhdGlvbiBjb2x1bW5zLCBhbmQgUjIgcmVwcmVzZW50cyB0aGUKK3JlbGF0 aW9uIHdpdGhvdXQgYW55IGFnZ3JlZ2F0aW9uIGNvbHVtbnMuCisKK0xldCB0aGUgcXVlcnkgYmUg b2YgdGhlIGZvcm06CisKK1NFTEVDVCBHLCBBR0coQSkKK0ZST00gUjEgSk9JTiBSMiBPTiBKCitH Uk9VUCBCWSBHOworCit3aGVyZSBHIGlzIHRoZSBzZXQgb2YgZ3JvdXBpbmcga2V5cyB0aGF0IG1h eSBpbmNsdWRlIGNvbHVtbnMgZnJvbSBSMQorYW5kL29yIFIyOyBBR0coQSkgaXMgYW4gYWdncmVn YXRlIGZ1bmN0aW9uIG92ZXIgY29sdW1ucyBBIGZyb20gUjE7IEoKK2lzIHRoZSBqb2luIGNvbmRp dGlvbiBiZXR3ZWVuIFIxIGFuZCBSMi4KKworVGhlIHRyYW5zZm9ybWF0aW9uIG9mIGVhZ2VyIGFn Z3JlZ2F0aW9uIGlzOgorCisgICAgR1JPVVAgQlkgRywgQUdHKEEpIG9uIChSMSBKT0lOIFIyIE9O IEopCisgICAgPQorICAgIEdST1VQIEJZIEcsIEFHRyhhZ2dfQSkgb24gKChHUk9VUCBCWSBHMSwg QUdHKEEpIEFTIGFnZ19BIG9uIFIxKSBKT0lOIFIyIE9OIEopCisKK1RoaXMgZXF1aXZhbGVuY2Ug aG9sZHMgdW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisxKSBBR0cgaXMgZGVjb21w b3NhYmxlLCBtZWFuaW5nIHRoYXQgaXQgY2FuIGJlIGNvbXB1dGVkIGluIHR3byBzdGFnZXM6Cith IHBhcnRpYWwgYWdncmVnYXRpb24gZm9sbG93ZWQgYnkgYSBmaW5hbCBhZ2dyZWdhdGlvbjsKKzIp IFRoZSBzZXQgRzEgdXNlZCBpbiB0aGUgcHJlLWFnZ3JlZ2F0aW9uIG9mIFIxIGluY2x1ZGVzOgor ICAgICogYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBncm91cGluZyBr ZXlzIEcsIGFuZAorICAgICogYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFwcGVhciBpbiB0aGUg am9pbiBjb25kaXRpb24gSi4KKzMpIFRoZSBncm91cGluZyBvcGVyYXRvciBmb3IgYW55IGNvbHVt biBpbiBHMSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aAordGhlIG9wZXJhdG9yIHVzZWQgZm9yIHRo YXQgY29sdW1uIGluIHRoZSBqb2luIGNvbmRpdGlvbiBKLgorCitTaW5jZSBHMSBpbmNsdWRlcyBh bGwgY29sdW1ucyBmcm9tIFIxIHRoYXQgYXBwZWFyIGluIGVpdGhlciB0aGUKK2dyb3VwaW5nIGtl eXMgRyBvciB0aGUgam9pbiBjb25kaXRpb24gSiwgYWxsIHJvd3Mgd2l0aGluIGVhY2ggcGFydGlh bAorZ3JvdXAgaGF2ZSBpZGVudGljYWwgdmFsdWVzIGZvciBib3RoIHRoZSBncm91cGluZyBrZXlz IGFuZCB0aGUKK2pvaW4tcmVsZXZhbnQgY29sdW1ucyBmcm9tIFIxLCBhc3N1bWluZyBjb21wYXRp YmxlIG9wZXJhdG9ycyBhcmUgdXNlZC4KK0FzIGEgcmVzdWx0LCB0aGUgcm93cyB3aXRoaW4gYSBw YXJ0aWFsIGdyb3VwIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBpbgordGVybXMgb2YgdGhlaXIgY29u dHJpYnV0aW9uIHRvIHRoZSBhZ2dyZWdhdGlvbiBhbmQgdGhlaXIgYmVoYXZpb3IgaW4KK3RoZSBq b2luLiAgVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHJvd3MgaW4gdGhlIHNhbWUgcGFydGlhbCBncm91 cCBzaGFyZQordGhlIHNhbWUgImRlc3RpbnkiOiB0aGV5IGVpdGhlciBhbGwgbWF0Y2ggb3IgYWxs IGZhaWwgdG8gbWF0Y2ggYSBnaXZlbgorcm93IGluIFIyLiAgQmVjYXVzZSB0aGUgYWdncmVnYXRl IGZ1bmN0aW9uIEFHRyBpcyBkZWNvbXBvc2FibGUsCithZ2dyZWdhdGluZyB0aGUgcGFydGlhbCBy ZXN1bHRzIGFmdGVyIHRoZSBqb2luIHlpZWxkcyB0aGUgc2FtZSBmaW5hbAorcmVzdWx0IGFzIGFn Z3JlZ2F0aW5nIGFmdGVyIHRoZSBmdWxsIGpvaW4sIHRoZXJlYnkgcHJlc2VydmluZyBxdWVyeQor c2VtYW50aWNzLiAgUS5FLkQuCisKK0luIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSBhbnkgb3V0 ZXIgam9pbnMsIHRoZSBzaXR1YXRpb24gYmVjb21lcworbW9yZSBjb21wbGV4IGR1ZSB0byBqb2lu IG9yZGVyIGNvbnN0cmFpbnRzIGFuZCB0aGUgc2VtYW50aWNzIG9mCitudWxsLWV4dGVuc2lvbiBp biBvdXRlciBqb2lucy4gIElmIHRoZSByZWxhdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0Citv bmUgYWdncmVnYXRpb24gY29sdW1uIGNhbm5vdCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHJlbGF0 aW9uIGJlY2F1c2UKK29mIHRoZSBqb2luIG9yZGVyIGNvbnN0cmFpbnRzLCBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIHBhdGhzIHdpbGwgbm90IGJlCitnZW5lcmF0ZWQsIGFuZCB0aHVzIHRoZSB0cmFuc2Zv cm1hdGlvbiBpcyBub3QgYXBwbGljYWJsZS4gIE90aGVyd2lzZSwKK2xldCBSMSBiZSB0aGUgcmVs YXRpb24gY29udGFpbmluZyBhbGwgYWdncmVnYXRpb24gY29sdW1ucywgYW5kIFIyLCBSMywKKy4u LiBiZSB0aGUgcmVtYWluaW5nIHJlbGF0aW9ucy4gIEZyb20gdGhlIGlubmVyIGpvaW4gY2FzZSwg dW5kZXIgdGhlCithZm9yZW1lbnRpb25lZCBjb25kaXRpb25zLCB3ZSBoYXZlIHRoZSBlcXVpdmFs ZW5jZToKKworICAgIEdST1VQIEJZIEcsIEFHRyhBKSBvbiAoUjEgSk9JTiBSMiBKT0lOIFIzIC4u LikKKyAgICA9CisgICAgR1JPVVAgQlkgRywgQUdHKGFnZ19BKSBvbiAoKEdST1VQIEJZIEcxLCBB R0coQSkgQVMgYWdnX0Egb24gUjEpIEpPSU4gUjIgSk9JTiBSMyAuLi4pCisKK1RvIHByZXNlcnZl IGNvcnJlY3RuZXNzIHdoZW4gb3V0ZXIgam9pbnMgYXJlIGludm9sdmVkLCB3ZSByZXF1aXJlIGFu CithZGRpdGlvbmFsIGNvbmRpdGlvbjoKKworNCkgUjEgbXVzdCBub3QgYmUgb24gdGhlIG51bGxh YmxlIHNpZGUgb2YgYW55IG91dGVyIGpvaW4uCisKK1RoaXMgY29uZGl0aW9uIGVuc3VyZXMgdGhh dCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG92ZXIgUjEgZG9lcyBub3QKK3N1cHByZXNzIGFueSBudWxs LWV4dGVuZGVkIHJvd3MgdGhhdCB3b3VsZCBiZSBpbnRyb2R1Y2VkIGJ5IG91dGVyCitqb2lucy4g IElmIFIxIGlzIG9uIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyIGpvaW4sIHRoZQorTlVM TC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdvdWxkIG5vdCBiZSBh dmFpbGFibGUKK3doZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiwgd2hpbGUg d2l0aCBhCitub24tZWFnZXItYWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dzIGFyZSBhdmFpbGFi bGUgZm9yIHRoZSB0b3AtbGV2ZWwKK2FnZ3JlZ2F0aW9uLiAgUHVzaGluZyBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCit0aGUgcm93cyBiZWluZyBncm91cGVk IGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0Cit2YWx1ZXMg ZnJvbSB0aGUgYWdncmVnYXRlIGZ1bmN0aW9ucy4KKworRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24g b2YgdGhlIGpvaW4gdHJlZSwgd2UgZXZhbHVhdGUgZWFjaCBiYXNlIG9yCitqb2luIHJlbGF0aW9u IHRvIGRldGVybWluZSBpZiBlYWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZC4gIElmCitm ZWFzaWJsZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgUmVsT3B0SW5mbyBjYWxsZWQgYSAiZ3JvdXBl ZCByZWxhdGlvbiIKK2FuZCBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGJ5IGFkZGluZyBzb3J0ZWQg YW5kIGhhc2hlZCBwYXJ0aWFsCithZ2dyZWdhdGlvbiBwYXRocyBvbiB0b3Agb2YgdGhlIG5vbi1n cm91cGVkIHBhdGhzLiAgVG8gbGltaXQgcGxhbm5pbmcKK3RpbWUsIHdlIGNvbnNpZGVyIG9ubHkg dGhlIGNoZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3JvdXBlZAorcGF0aHMgaW4gdGhp cyBzdGVwLgorCitBbm90aGVyIHdheSB0byBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGlzIHRvIGpv aW4gYSBncm91cGVkIHJlbGF0aW9uCit3aXRoIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24uICBKb2lu aW5nIHR3byBncm91cGVkIHJlbGF0aW9ucyBpcworY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisK K1RvIGZ1cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3VycmVudGx5IGFkb3B0IGEgc3Ry YXRlZ3kgd2hlcmUKK3BhcnRpYWwgYWdncmVnYXRpb24gaXMgcHVzaGVkIG9ubHkgdG8gdGhlIGxv d2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKK2pvaW4gdHJlZSB3aGVyZSBpdCBwcm92aWRlcyBh IHNpZ25pZmljYW50IHJlZHVjdGlvbiBpbiByb3cgY291bnQuCitUaGlzIHN0cmF0ZWd5IGFsc28g aGVscHMgZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBzYW1lCitncm91cGVk IHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3MsIHdoaWNoIGlzIGltcG9ydGFu dCB0bworc3VwcG9ydCBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gb2YgdGhlIHBsYW5uZXIuCisK K0lmIHdlIGhhdmUgZ2VuZXJhdGVkIGEgZ3JvdXBlZCByZWxhdGlvbiBmb3IgdGhlIHRvcG1vc3Qg am9pbiByZWxhdGlvbiwKK3dlIG5lZWQgdG8gZmluYWxpemUgaXRzIHBhdGhzIGF0IHRoZSBlbmQu ICBUaGUgZmluYWwgcGF0aHMgd2lsbAorY29tcGV0ZSBpbiB0aGUgdXN1YWwgd2F5IHdpdGggcGF0 aHMgYnVpbHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9n ZXFvX2V2YWwuYwppbmRleCBmMDdkMWRjOGFjNi4uNGE2NWY5NTVjYTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9nZXFvL2dlcW9fZXZhbC5jCkBAIC0yNzksNiArMjc5LDI3IEBAIG1lcmdlX2NsdW1w KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbHVtcHMsIENsdW1wICpuZXdfY2x1bXAsIGludCBu dW1fZ2VuZSwKIAkJCQkvKiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBwYXRocyBmb3IgdGhp cyBqb2lucmVsICovCiAJCQkJc2V0X2NoZWFwZXN0KGpvaW5yZWwpOwogCisJCQkJLyoKKwkJCQkg KiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRp bmcKKwkJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxh dGlvbiBvbiB0b3AKKwkJCQkgKiBvZiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0 LCB3ZSdyZSBkb25lIGNyZWF0aW5nCisJCQkJICogcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0 aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkJICovCisJCQkJaWYgKCFibXNfZXF1YWwo am9pbnJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQkJeworCQkJCQlSZWxP cHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJCQlncm91cGVkX3JlbCA9IGpvaW5yZWwtPmdyb3Vw ZWRfcmVsOworCQkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJCQkJCXsKKwkJCQkJCUFzc2VydChJU19H Uk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJCQlnZW5lcmF0ZV9ncm91cGVkX3BhdGhz KHJvb3QsIGdyb3VwZWRfcmVsLCBqb2lucmVsLAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbC0+ YWdnX2luZm8pOworCQkJCQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsKKwkJCQkJfQorCQkJ CX0KKwogCQkJCS8qIEFic29yYiBuZXcgY2x1bXAgaW50byBvbGQgKi8KIAkJCQlvbGRfY2x1bXAt PmpvaW5yZWwgPSBqb2lucmVsOwogCQkJCW9sZF9jbHVtcC0+c2l6ZSArPSBuZXdfY2x1bXAtPnNp emU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA2Y2M2OTY2YjA2MC4u ZWUyOTg5NzA0MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBh dGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNDAs NiArNDAsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRl ICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGltaXplci90bGlzdC5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgi CkBAIC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1 ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIAogCiAvKiBCaXRtYXNrIGZsYWdzIGZvciBw dXNoZG93bl9zYWZldHlfaW5mby51bnNhZmVGbGFncyAqLwpAQCAtNzcsNyArNzksOSBAQCB0eXBl ZGVmIGVudW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIHNl dCBieSBHVUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1c3QgaW4gY2FzZSBH VUMgZG9lc24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSB0cnVl OwogaW50CQkJZ2Vxb190aHJlc2hvbGQ7Citkb3VibGUJCW1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6 ZTsKIGludAkJCW1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBpbnQJCQltaW5fcGFyYWxs ZWxfaW5kZXhfc2Nhbl9zaXplOwogCkBAIC05MCw2ICs5NCw3IEBAIGpvaW5fc2VhcmNoX2hvb2tf dHlwZSBqb2luX3NlYXJjaF9ob29rID0gTlVMTDsKIAogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVs X2NvbnNpZGVyX3N0YXJ0dXAoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X2Jh c2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIHNldHVwX2Jhc2Vf Z3JvdXBlZF9yZWxzKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIHNldF9iYXNlX3Jl bF9wYXRobGlzdHMoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X3JlbF9zaXpl KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkgSW5kZXggcnRpLCBS YW5nZVRibEVudHJ5ICpydGUpOwpAQCAtMTE0LDYgKzExOSw3IEBAIHN0YXRpYyB2b2lkIHNldF9h cHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJ CQkJSW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZvaWQgc2V0X2FwcGVu ZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJ CQkJCUluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAqcnRlKTsKK3N0YXRpYyB2b2lkIHNldF9ncm91 cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKIHN0 YXRpYyB2b2lkIGdlbmVyYXRlX29yZGVyZWRhcHBlbmRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgTGlzdCAqbGl2ZV9jaGlsZHJlbHMsCiAJCQkJ CQkJCQkJIExpc3QgKmFsbF9jaGlsZF9wYXRoa2V5cyk7CkBAIC0xODIsNiArMTg4LDExIEBAIG1h a2Vfb25lX3JlbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9pbmxpc3QpCiAJICovCiAJc2V0 X2Jhc2VfcmVsX3NpemVzKHJvb3QpOwogCisJLyoKKwkgKiBCdWlsZCBncm91cGVkIHJlbGF0aW9u cyBmb3IgYmFzZSByZWxzIHdoZXJlIHBvc3NpYmxlLgorCSAqLworCXNldHVwX2Jhc2VfZ3JvdXBl ZF9yZWxzKHJvb3QpOworCiAJLyoKIAkgKiBXZSBzaG91bGQgbm93IGhhdmUgc2l6ZSBlc3RpbWF0 ZXMgZm9yIGV2ZXJ5IGFjdHVhbCB0YWJsZSBpbnZvbHZlZCBpbgogCSAqIHRoZSBxdWVyeSwgYW5k IHdlIGFsc28ga25vdyB3aGljaCBpZiBhbnkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUKQEAg LTMyMyw2ICszMzQsMzkgQEAgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KQog CX0KIH0KIAorLyoKKyAqIHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzCisgKgkgIEZvciBlYWNoIGJh c2UgcmVsYXRpb24sIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIGVhZ2VyCisgKgkg IGFnZ3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9uIGNhbiBwcm9kdWNl IGdyb3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNlX2dyb3VwZWRfcmVs cyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoKKwkgKiBJZiB0aGVy ZSBhcmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBl YWdlcgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAocm9vdC0+ YWdnX2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3QgPT0gTklM KQorCQlyZXR1cm47CisKKwlmb3IgKHJ0aSA9IDE7IHJ0aSA8IHJvb3QtPnNpbXBsZV9yZWxfYXJy YXlfc2l6ZTsgcnRpKyspCisJeworCQlSZWxPcHRJbmZvICpyZWwgPSByb290LT5zaW1wbGVfcmVs X2FycmF5W3J0aV07CisKKwkJLyogdGhlcmUgbWF5IGJlIGVtcHR5IHNsb3RzIGNvcnJlc3BvbmRp bmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAocmVsID09IE5VTEwpCisJCQljb250aW51 ZTsKKworCQlBc3NlcnQocmVsLT5yZWxpZCA9PSBydGkpOwkvKiBzYW5pdHkgY2hlY2sgb24gYXJy YXkgKi8KKwkJQXNzZXJ0KElTX1NJTVBMRV9SRUwocmVsKSk7IC8qIHNhbml0eSBjaGVjayBvbiBy ZWwgKi8KKworCQkodm9pZCkgYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJvb3QsIHJlbCk7CisJ fQorfQorCiAvKgogICogc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cwogICoJICBGaW5kcyBhbGwgcGF0 aHMgYXZhaWxhYmxlIGZvciBzY2FubmluZyBlYWNoIGJhc2UtcmVsYXRpb24gZW50cnkuCkBAIC01 NTksNiArNjAzLDE1IEBAIHNldF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAkvKiBOb3cgZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhlIHBhdGhzIGZvciB0 aGlzIHJlbCAqLwogCXNldF9jaGVhcGVzdChyZWwpOwogCisJLyoKKwkgKiBJZiBhIGdyb3VwZWQg cmVsYXRpb24gZm9yIHRoaXMgcmVsIGV4aXN0cywgYnVpbGQgcGFydGlhbCBhZ2dyZWdhdGlvbgor CSAqIHBhdGhzIGZvciBpdC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhhcHBl biBhZnRlciB3ZSd2ZSBjYWxsZWQgc2V0X2NoZWFwZXN0KCkgZm9yCisJICogdGhpcyBiYXNlIHJl bCwgYmVjYXVzZSB3ZSBuZWVkIGl0cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8KKwlzZXRfZ3JvdXBl ZF9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKKwogI2lmZGVmIE9QVElNSVpFUl9ERUJVRwogCXBw cmludChyZWwpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTgsMzYgQEAgc2V0X2FwcGVuZF9yZWxf cGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlhZGRfcGF0aHNf dG9fYXBwZW5kX3JlbChyb290LCByZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0KIAorLyoKKyAqIHNl dF9ncm91cGVkX3JlbF9wYXRobGlzdAorICoJICBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRo ZSBnaXZlbiAncmVsJyBleGlzdHMsIGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdncmVnYXRpb24gcGF0 aHMgZm9yIGl0LgorICovCitzdGF0aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBl ZF9yZWw7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMg b3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBv c3NpYmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJv b3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qIEFkZCBwYXRocyB0 byB0aGUgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIG9uZSBleGlzdHMuICovCisJZ3JvdXBlZF9y ZWwgPSByZWwtPmdyb3VwZWRfcmVsOworCWlmIChncm91cGVkX3JlbCkKKwl7CisJCUFzc2VydChJ U19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMo cm9vdCwgZ3JvdXBlZF9yZWwsIHJlbCwKKwkJCQkJCQkgICBncm91cGVkX3JlbC0+YWdnX2luZm8p OworCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCX0KK30KKwogCiAvKgogICogYWRkX3Bh dGhzX3RvX2FwcGVuZF9yZWwKQEAgLTMzMzUsNiArMzQxOCwzNDQgQEAgZ2VuZXJhdGVfdXNlZnVs X2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBib29sIG92 ZXJyaWRlX3IKIAl9CiB9CiAKKy8qCisgKiBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzCisgKgkJR2Vu ZXJhdGUgcGF0aHMgZm9yIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBhZGRpbmcgc29ydGVkIGFuZCBo YXNoZWQKKyAqCQlwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBvZiBwYXRocyBvZiB0 aGUgdW5ncm91cGVkIGJhc2Ugb3Igam9pbgorICoJCXJlbGF0aW9uLgorICoKKyAqIFRoZSBpbmZv cm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVkIGJ5IHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZS4K KyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqZ3JvdXBlZF9yZWwsCisJCQkJCSAgIFJlbE9wdEluZm8gKnJlbCwgUmVsQWdnSW5m byAqYWdnX2luZm8pCit7CisJQWdnQ2xhdXNlQ29zdHMgYWdnX2Nvc3RzOworCWJvb2wJCWNhbl9o YXNoOworCWJvb2wJCWNhbl9zb3J0OworCVBhdGgJICAgKmNoZWFwZXN0X3RvdGFsX3BhdGggPSBO VUxMOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7CisJZG91YmxlCQlk TnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1QYXJ0aWFsR3JvdXBzID0gMDsKKwlMaXN0CSAg ICpncm91cF9wYXRoa2V5cyA9IE5JTDsKKworCWlmIChJU19EVU1NWV9SRUwocmVsKSkKKwl7CisJ CW1hcmtfZHVtbXlfcmVsKGdyb3VwZWRfcmVsKTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICog V2UgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG9ubHkgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSBs ZXZlbCBpbiB0aGUKKwkgKiBqb2luIHRyZWUgdGhhdCBpcyBkZWVtZWQgdXNlZnVsLgorCSAqLwor CWlmICghYm1zX2VxdWFsKGFnZ19pbmZvLT5hcHBseV9hdCwgcmVsLT5yZWxpZHMpIHx8CisJCSFh Z2dfaW5mby0+YWdnX3VzZWZ1bCkKKwkJcmV0dXJuOworCisJTWVtU2V0KCZhZ2dfY29zdHMsIDAs IHNpemVvZihBZ2dDbGF1c2VDb3N0cykpOworCWdldF9hZ2dfY2xhdXNlX2Nvc3RzKHJvb3QsIEFH R1NQTElUX0lOSVRJQUxfU0VSSUFMLCAmYWdnX2Nvc3RzKTsKKworCS8qCisJICogRGV0ZXJtaW5l IHdoZXRoZXIgaXQncyBwb3NzaWJsZSB0byBwZXJmb3JtIHNvcnQtYmFzZWQgaW1wbGVtZW50YXRp b25zCisJICogb2YgZ3JvdXBpbmcsIGFuZCBnZW5lcmF0ZSB0aGUgcGF0aGtleXMgdGhhdCByZXBy ZXNlbnQgdGhlIGdyb3VwaW5nCisJICogcmVxdWlyZW1lbnRzIGluIHRoYXQgY2FzZS4KKwkgKi8K KwljYW5fc29ydCA9IGdyb3VwaW5nX2lzX3NvcnRhYmxlKGFnZ19pbmZvLT5ncm91cF9jbGF1c2Vz KTsKKwlpZiAoY2FuX3NvcnQpCisJeworCQlSZWxPcHRJbmZvICp0b3BfZ3JvdXBlZF9yZWw7CisJ CUxpc3QJICAgKnRvcF9ncm91cF90bGlzdDsKKworCQl0b3BfZ3JvdXBlZF9yZWwgPSBJU19PVEhF Ul9SRUwocmVsKSA/CisJCQlyZWwtPnRvcF9wYXJlbnQtPmdyb3VwZWRfcmVsIDogZ3JvdXBlZF9y ZWw7CisJCXRvcF9ncm91cF90bGlzdCA9CisJCQltYWtlX3RsaXN0X2Zyb21fcGF0aHRhcmdldCh0 b3BfZ3JvdXBlZF9yZWwtPmFnZ19pbmZvLT50YXJnZXQpOworCisJCWdyb3VwX3BhdGhrZXlzID0K KwkJCW1ha2VfcGF0aGtleXNfZm9yX3NvcnRjbGF1c2VzKHJvb3QsIGFnZ19pbmZvLT5ncm91cF9j bGF1c2VzLAorCQkJCQkJCQkJCSAgdG9wX2dyb3VwX3RsaXN0KTsKKwl9CisKKwkvKgorCSAqIERl dGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBjb25zaWRlciBoYXNoLWJhc2VkIGltcGxlbWVudGF0 aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCUFzc2VydChyb290LT5udW1PcmRlcmVkQWdn cyA9PSAwKTsKKwljYW5faGFzaCA9IChhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcyAhPSBOSUwgJiYK KwkJCQlncm91cGluZ19pc19oYXNoYWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcykpOworCisJ LyoKKwkgKiBDb25zaWRlciB3aGV0aGVyIHdlIHNob3VsZCBnZW5lcmF0ZSBwYXJ0aWFsbHkgYWdn cmVnYXRlZCBub24tcGFydGlhbAorCSAqIHBhdGhzLiAgV2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB3 ZSBoYXZlIGEgbm9uLXBhcnRpYWwgcGF0aC4KKwkgKi8KKwlpZiAocmVsLT5wYXRobGlzdCAhPSBO SUwpCisJeworCQljaGVhcGVzdF90b3RhbF9wYXRoID0gcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRo OworCQlBc3NlcnQoY2hlYXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKTsKKwl9CisKKwkvKgorCSAq IElmIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIGZvciBncm91cGVkX3JlbCwgdGhlbiB3ZSBzaG91 bGQgY29uc2lkZXIKKwkgKiBnZW5lcmF0aW5nIHBhcnRpYWxseS1ncm91cGVkIHBhcnRpYWwgcGF0 aHMuICBIb3dldmVyLCBpZiB0aGUgdW5ncm91cGVkCisJICogcmVsIGhhcyBubyBwYXJ0aWFsIHBh dGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFy YWxsZWwgJiYgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ICE9IE5JTCkKKwl7CisJCWNoZWFwZXN0X3Bh cnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbC0+cGFydGlhbF9wYXRobGlzdCk7CisJCUFzc2VydChj aGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCk7CisJfQorCisJLyogRXN0aW1hdGUgbnVtYmVy IG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlmIChjaGVhcGVzdF90b3RhbF9wYXRoICE9IE5VTEwp CisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3QsCisJCQkJCQkJCQkJIGFn Z19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkgY2hlYXBlc3RfdG90YWxfcGF0aC0+cm93 cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7CisJaWYgKGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAh PSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3VwcyA9IGVzdGltYXRlX251bV9ncm91cHMocm9vdCwK KwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkJCWNoZWFwZXN0 X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkJCU5VTEwsIE5VTEwpOworCisJaWYgKGNh bl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAg KmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkgYXZhaWxhYmxlIHN1aXRhYmx5LXNvcnRlZCBwYXRo IGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRlcgorCQkgKiBzb3J0aW5nIHRoZSBjaGVhcGVzdC10 b3RhbCBwYXRoIGFuZCBpbmNyZW1lbnRhbCBzb3J0IG9uIGFueSBwYXRocworCQkgKiB3aXRoIHBy ZXNvcnRlZCBrZXlzLgorCQkgKgorCQkgKiBUbyBzYXZlIHBsYW5uaW5nIHRpbWUsIHdlIGlnbm9y ZSBwYXJhbWV0ZXJpemVkIGlucHV0IHBhdGhzIHVubGVzcworCQkgKiB0aGV5IGFyZSB0aGUgY2hl YXBlc3QtdG90YWwgcGF0aC4KKwkJICovCisJCWZvcmVhY2gobGMsIHJlbC0+cGF0aGxpc3QpCisJ CXsKKwkJCVBhdGgJICAgKmlucHV0X3BhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOworCQkJUGF0 aAkgICAqcGF0aDsKKwkJCWJvb2wJCWlzX3NvcnRlZDsKKwkJCWludAkJCXByZXNvcnRlZF9rZXlz OworCisJCQkvKgorCQkJICogSWdub3JlIHBhcmFtZXRlcml6ZWQgcGF0aHMgdGhhdCBhcmUgbm90 IHRoZSBjaGVhcGVzdC10b3RhbAorCQkJICogcGF0aC4KKwkJCSAqLworCQkJaWYgKGlucHV0X3Bh dGgtPnBhcmFtX2luZm8gJiYKKwkJCQlpbnB1dF9wYXRoICE9IGNoZWFwZXN0X3RvdGFsX3BhdGgp CisJCQkJY29udGludWU7CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5l ZF9pbihncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQlpbnB1dF9wYXRoLT5wYXRoa2V5cywK KwkJCQkJCQkJCQkJCQkmcHJlc29ydGVkX2tleXMpOworCisJCQkvKgorCQkJICogSWdub3JlIHBh dGhzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBvciBwYXJ0aWFsbHkgc29ydGVkLCB1bmxlc3MKKwkJ CSAqIHRoZXkgYXJlIHRoZSBjaGVhcGVzdCB0b3RhbCBwYXRoIChubyBuZWVkIHRvIGRlYWwgd2l0 aCBwYXRocworCQkJICogd2hpY2ggaGF2ZSBwcmVzb3J0ZWQga2V5cyB3aGVuIGluY3JlbWVudGFs IHNvcnQgaXMgZGlzYWJsZWQpLgorCQkJICovCisJCQlpZiAoIWlzX3NvcnRlZCAmJiBpbnB1dF9w YXRoICE9IGNoZWFwZXN0X3RvdGFsX3BhdGggJiYKKwkJCQkocHJlc29ydGVkX2tleXMgPT0gMCB8 fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJ ICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24g dGhhdCBpcworCQkJICogbm90IGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVu c3VyZSB0aGF0IGl0IHByb3ZpZGVzCisJCQkgKiB0aGUgY29ycmVjdCBpbnB1dCBmb3IgcGFydGlh bCBhZ2dyZWdhdGlvbi4KKwkJCSAqLworCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0 aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCSAgIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJ ICAgaW5wdXRfcGF0aCwKKwkJCQkJCQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOworCisJ CQlpZiAoIWlzX3NvcnRlZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdlJ3ZlIG5vIG5lZWQgdG8g Y29uc2lkZXIgYm90aCBhIHNvcnQgYW5kIGluY3JlbWVudGFsIHNvcnQuCisJCQkJICogV2UnbGwg anVzdCBkbyBhIHNvcnQgaWYgdGhlcmUgYXJlIG5vIHByZXNvcnRlZCBrZXlzIGFuZCBhbgorCQkJ CSAqIGluY3JlbWVudGFsIHNvcnQgd2hlbiB0aGVyZSBhcmUgcHJlc29ydGVkIGtleXMuCisJCQkJ ICovCisJCQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9z b3J0KQorCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3NvcnRfcGF0aChyb290LAorCQkJCQkJ CQkJCQkJCSBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkg Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJIC0xLjApOworCQkJCWVsc2UKKwkJCQkJcGF0 aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJ CQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJ CQkJCQkJIGdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywK KwkJCQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5J TCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJ CSAqIHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJ CQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3Vw ZWRfcmVsLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAor CQkJCQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklB TCwKKwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwK KwkJCQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFk ZF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBj aGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJ CS8qIFNpbWlsYXIgdG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJ Zm9yZWFjaChsYywgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1 dF9wYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29s CQlpc19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJaXNfc29ydGVkID0g cGF0aGtleXNfY291bnRfY29udGFpbmVkX2luKGdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJ CWlucHV0X3BhdGgtPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CisK KwkJCS8qCisJCQkgKiBJZ25vcmUgcGF0aHMgdGhhdCBhcmUgbm90IHN1aXRhYmx5IG9yIHBhcnRp YWxseSBzb3J0ZWQsIHVubGVzcworCQkJICogdGhleSBhcmUgdGhlIGNoZWFwZXN0IHBhcnRpYWwg cGF0aCAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMKKwkJCSAqIHdoaWNoIGhhdmUgcHJlc29y dGVkIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkKS4KKwkJCSAqLworCQkJ aWYgKCFpc19zb3J0ZWQgJiYgaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF9wYXJ0aWFsX3BhdGggJiYK KwkJCQkocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpKQor CQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBm cm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcworCQkJICogbm90IGF3YXJlIG9mIGVh Z2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzCisJCQkgKiB0 aGUgY29ycmVjdCBpbnB1dCBmb3IgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJCSAqLworCQkJcGF0 aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCSAg IGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJICAgaW5wdXRfcGF0aCwKKwkJCQkJCQkJCQkJCSAg IGFnZ19pbmZvLT5hZ2dfaW5wdXQpOworCisJCQlpZiAoIWlzX3NvcnRlZCkKKwkJCXsKKwkJCQkv KgorCQkJCSAqIFdlJ3ZlIG5vIG5lZWQgdG8gY29uc2lkZXIgYm90aCBhIHNvcnQgYW5kIGluY3Jl bWVudGFsIHNvcnQuCisJCQkJICogV2UnbGwganVzdCBkbyBhIHNvcnQgaWYgdGhlcmUgYXJlIG5v IHByZXNvcnRlZCBrZXlzIGFuZCBhbgorCQkJCSAqIGluY3JlbWVudGFsIHNvcnQgd2hlbiB0aGVy ZSBhcmUgcHJlc29ydGVkIGtleXMuCisJCQkJICovCisJCQkJaWYgKHByZXNvcnRlZF9rZXlzID09 IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KQorCQkJCQlwYXRoID0gKFBhdGggKikgY3Jl YXRlX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKKwkJCQkJCQkJ CQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJ IC0xLjApOworCQkJCWVsc2UKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRh bF9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJ CQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJCQkJIGdyb3VwX3BhdGhrZXlzLAorCQkJCQkJ CQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9 CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNh bm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAqIHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdn cmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19w YXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJ CQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJ CQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3Vw X2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJ CQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJCQlhZGRfcGFydGlhbF9wYXRoKGdyb3VwZWRf cmVsLCBwYXRoKTsKKwkJfQorCX0KKworCS8qCisJICogQWRkIGEgcGFydGlhbGx5LWdyb3VwZWQg SGFzaEFnZyBQYXRoIHdoZXJlIHBvc3NpYmxlCisJICovCisJaWYgKGNhbl9oYXNoICYmIGNoZWFw ZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAgKnBhdGg7CisKKwkJLyoKKwkJ ICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24g dGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5z dXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwg YWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25f cGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAgY2hl YXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisK KwkJLyoKKwkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3Qg YmUgZXZhbHVhdGVkIHVudGlsIHRoZQorCQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRl IGlzIGtub3duLgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290 LAorCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJYWdn X2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQlBR0dfSEFTSEVELAorCQkJCQkJCQkJCUFHR1NQTElU X0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJ CQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJCQkJCWROdW1Hcm91cHMp OworCisJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwl9CisKKwkvKgorCSAqIE5vdyBh ZGQgYSBwYXJ0aWFsbHktZ3JvdXBlZCBIYXNoQWdnIHBhcnRpYWwgUGF0aCB3aGVyZSBwb3NzaWJs ZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkK Kwl7CisJCVBhdGgJICAgKnBhdGg7CisKKwkJLyoKKwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2lu YXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUg b2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhl CisJCSAqIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkg ICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfcGFydGlhbF9wYXRoLAorCQkJ CQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkvKgorCQkgKiBxdWFsIGlzIE5J TCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwgdGhl CisJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25vd24uCisJCSAqLworCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJZ3JvdXBlZF9y ZWwsCisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJ CQkJCUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJ CQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJ CSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJCWFkZF9wYXJ0 aWFsX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOworCX0KK30KKwogLyoKICAqIG1ha2VfcmVsX2Zy b21fam9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNzIHBhdGhzIHVzaW5nIGEgImpvaW5saXN0IiB0 byBndWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4KQEAgLTM0OTQsNiArMzkxNSwxMCBAQCBzdGFu ZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAqcm9vdCwgaW50IGxldmVsc19uZWVkZWQsIExp c3QgKmluaXRpYWxfcmVscykKIAkJICoKIAkJICogQWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVh dGluZyBwYXRocyBmb3IgdGhlIGpvaW5yZWwsIHNvIHJ1bgogCQkgKiBzZXRfY2hlYXBlc3QoKS4K KwkJICoKKwkJICogSW4gYWRkaXRpb24sIHdlIGFsc28gcnVuIGdlbmVyYXRlX2dyb3VwZWRfcGF0 aHMoKSBmb3IgdGhlIGdyb3VwZWQKKwkJICogcmVsYXRpb24gb2YgZWFjaCBqdXN0LXByb2Nlc3Nl ZCBqb2lucmVsLCBhbmQgcnVuIHNldF9jaGVhcGVzdCgpIGZvcgorCQkgKiB0aGUgZ3JvdXBlZCBy ZWxhdGlvbiBhZnRlcndhcmRzLgogCQkgKi8KIAkJZm9yZWFjaChsYywgcm9vdC0+am9pbl9yZWxf bGV2ZWxbbGV2XSkKIAkJewpAQCAtMzUxNCw2ICszOTM5LDI3IEBAIHN0YW5kYXJkX2pvaW5fc2Vh cmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAqaW5pdGlhbF9y ZWxzKQogCQkJLyogRmluZCBhbmQgc2F2ZSB0aGUgY2hlYXBlc3QgcGF0aHMgZm9yIHRoaXMgcmVs ICovCiAJCQlzZXRfY2hlYXBlc3QocmVsKTsKIAorCQkJLyoKKwkJCSAqIEV4Y2VwdCBmb3IgdGhl IHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGluZworCQkJICogcGFydGlh bCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wIG9mCisJ CQkgKiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0 aW5nIHBhdGhzCisJCQkgKiBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24sIHNvIHJ1biBzZXRfY2hl YXBlc3QoKS4KKwkJCSAqLworCQkJaWYgKCFibXNfZXF1YWwocmVsLT5yZWxpZHMsIHJvb3QtPmFs bF9xdWVyeV9yZWxzKSkKKwkJCXsKKwkJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJ CWdyb3VwZWRfcmVsID0gcmVsLT5ncm91cGVkX3JlbDsKKwkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJ CQkJeworCQkJCQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9yZWwpKTsKKworCQkJCQln ZW5lcmF0ZV9ncm91cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCByZWwsCisJCQkJCQkJCQkJ ICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVs KTsKKwkJCQl9CisJCQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJCXBwcmludChyZWwp OwogI2VuZGlmCkBAIC00MzgzLDYgKzQ4MjksMjkgQEAgZ2VuZXJhdGVfcGFydGl0aW9ud2lzZV9q b2luX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCWlmIChJU19E VU1NWV9SRUwoY2hpbGRfcmVsKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIEV4Y2VwdCBm b3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGluZyBwYXJ0aWFs CisJCSAqIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3Ag b2YgdGhlIHBhdGhzIG9mCisJCSAqIHRoaXMgcGFydGl0aW9uZWQgY2hpbGQtam9pbi4gIEFmdGVy IHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMKKwkJICogZm9yIHRoZSBncm91cGVkIHJl bGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCSAqLworCQlpZiAoIWJtc19lcXVhbChJ U19PVEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJlbC0+dG9wX3BhcmVudF9yZWxpZHMgOiByZWwt PnJlbGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQorCQl7CisJCQlSZWxPcHRJ bmZvICpncm91cGVkX3JlbDsKKworCQkJZ3JvdXBlZF9yZWwgPSBjaGlsZF9yZWwtPmdyb3VwZWRf cmVsOworCQkJaWYgKGdyb3VwZWRfcmVsKQorCQkJeworCQkJCUFzc2VydChJU19HUk9VUEVEX1JF TChncm91cGVkX3JlbCkpOworCisJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCBncm91 cGVkX3JlbCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsK KwkJCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCQkJfQorCQl9CisKICNpZmRlZiBPUFRJ TUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3JlbCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IDUzNTI0OGFhNTI1Li4yNDBlZGE1MzY5NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgorI2lu Y2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2pvaW5pbmZvLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2RlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Bh dGhzLmgiCkBAIC0zNiw2ICszNyw5IEBAIHN0YXRpYyBib29sIGhhc19sZWdhbF9qb2luY2xhdXNl KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwogc3RhdGljIGJvb2wgcmVzdHJp Y3Rpb25faXNfY29uc3RhbnRfZmFsc2UoTGlzdCAqcmVzdHJpY3RsaXN0LAogCQkJCQkJCQkJCSAg UmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJCQkgIGJvb2wgb25seV9wdXNoZWRfZG93bik7 CitzdGF0aWMgdm9pZCBtYWtlX2dyb3VwZWRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbDEsCisJCQkJCQkJCSAgUmVsT3B0SW5mbyAqcmVsMiwgUmVsT3B0SW5mbyAq am9pbnJlbCwKKwkJCQkJCQkJICBTcGVjaWFsSm9pbkluZm8gKnNqaW5mbywgTGlzdCAqcmVzdHJp Y3RsaXN0KTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKIAkJCQkJCQkJCQlSZWxPcHRJbmZvICpyZWwy LCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJCQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZv LCBMaXN0ICpyZXN0cmljdGxpc3QpOwpAQCAtNzYyLDYgKzc2NiwxMCBAQCBtYWtlX2pvaW5fcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyKQog CQlyZXR1cm4gam9pbnJlbDsKIAl9CiAKKwkvKiBCdWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlv biBmb3IgJ2pvaW5yZWwnIGlmIHBvc3NpYmxlLiAqLworCW1ha2VfZ3JvdXBlZF9qb2luX3JlbChy b290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCisJCQkJCQkgIHJlc3RyaWN0bGlzdCk7 CisKIAkvKiBBZGQgcGF0aHMgdG8gdGhlIGpvaW4gcmVsYXRpb24uICovCiAJcG9wdWxhdGVfam9p bnJlbF93aXRoX3BhdGhzKHJvb3QsIHJlbDEsIHJlbDIsIGpvaW5yZWwsIHNqaW5mbywKIAkJCQkJ CQkJcmVzdHJpY3RsaXN0KTsKQEAgLTg3Myw2ICs4ODEsMTg2IEBAIGFkZF9vdXRlcl9qb2luc190 b19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBpbnB1dF9yZWxpZHMsCiAJcmV0dXJu IGlucHV0X3JlbGlkczsKIH0KIAorLyoKKyAqIG1ha2VfZ3JvdXBlZF9qb2luX3JlbAorICoJICBC dWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBmb3IgdGhlIGdpdmVuICJqb2lucmVsIiBpZiBl YWdlcgorICoJICBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlIGFuZCB0aGUgcmVzdWx0aW5nIGdy b3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQKKyAqCSAgdXNlZnVsLgorICoKKyAqIFRoZXJlIGFy ZSB0d28gc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGluZyBncm91cGVkIHBhdGhzIGZvciBhIGpvaW4g cmVsYXRpb246CisgKgorICogMS4gSm9pbiBhIGdyb3VwZWQgKHBhcnRpYWxseSBhZ2dyZWdhdGVk KSBpbnB1dCByZWxhdGlvbiB3aXRoIGEgbm9uLWdyb3VwZWQKKyAqIGlucHV0IChlLmcuLCBBR0co QikgSk9JTiBBKS4KKyAqCisgKiAyLiBBcHBseSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIChzb3J0ZWQg b3IgaGFzaGVkKSBvbiB0b3Agb2YgZXhpc3RpbmcKKyAqIG5vbi1ncm91cGVkIGpvaW4gcGF0aHMg KGUuZy4sIEFHRyhBIEpPSU4gQikpLgorICoKKyAqIFRvIGxpbWl0IHBsYW5uaW5nIGVmZm9ydCBh bmQgYXZvaWQgYW4gZXhwbG9zaW9uIG9mIGFsdGVybmF0aXZlcywgd2UgYWRvcHQgYQorICogc3Ry YXRlZ3kgd2hlcmUgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBvbmx5IHB1c2hlZCB0byB0aGUgbG93 ZXN0IHBvc3NpYmxlCisgKiBsZXZlbCBpbiB0aGUgam9pbiB0cmVlIHRoYXQgaXMgZGVlbWVkIHVz ZWZ1bC4gIFRoYXQgaXMsIGlmIGdyb3VwZWQgcGF0aHMgY2FuCisgKiBiZSBidWlsdCB1c2luZyB0 aGUgZmlyc3Qgc3RyYXRlZ3ksIHdlIHNraXAgY29uc2lkZXJhdGlvbiBvZiB0aGUgc2Vjb25kCisg KiBzdHJhdGVneSBmb3IgdGhlIHNhbWUgam9pbiBsZXZlbC4KKyAqCisgKiBBZGRpdGlvbmFsbHks IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsb3dlc3QgdXNlZnVsIGxldmVscyB3aGVyZSBwYXJ0aWFs CisgKiBhZ2dyZWdhdGlvbiBjb3VsZCBiZSBhcHBsaWVkLCBzdWNoIGFzIGluIGEgam9pbiB0cmVl IHdpdGggcmVsYXRpb25zIEEsIEIsCisgKiBhbmQgQyB3aGVyZSBib3RoICJBR0coQSBKT0lOIEIp IEpPSU4gQyIgYW5kICJBIEpPSU4gQUdHKEIgSk9JTiBDKSIgYXJlIHZhbGlkCisgKiBwbGFjZW1l bnRzLCB3ZSBjaG9vc2Ugb25seSB0aGUgZmlyc3Qgb25lIGVuY291bnRlcmVkIGR1cmluZyBqb2lu IHNlYXJjaC4KKyAqIFRoaXMgYXZvaWRzIGdlbmVyYXRpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2Yg dGhlIHNhbWUgZ3JvdXBlZCByZWxhdGlvbiBiYXNlZAorICogb24gZGlmZmVyZW50IGFnZ3JlZ2F0 aW9uIHBsYWNlbWVudHMuCisgKgorICogVGhlc2UgaGV1cmlzdGljcyBhbHNvIGVuc3VyZSB0aGF0 IGFsbCBncm91cGVkIHBhdGhzIGZvciB0aGUgc2FtZSBncm91cGVkCisgKiByZWxhdGlvbiBwcm9k dWNlIHRoZSBzYW1lIHNldCBvZiByb3dzLCB3aGljaCBpcyBhIGJhc2ljIGFzc3VtcHRpb24gaW4g dGhlCisgKiBwbGFubmVyLgorICovCitzdGF0aWMgdm9pZAorbWFrZV9ncm91cGVkX2pvaW5fcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAorCQkJCQkgIFJlbE9wdEluZm8g KnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamlu Zm8sIExpc3QgKnJlc3RyaWN0bGlzdCkKK3sKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwlS ZWxPcHRJbmZvICpncm91cGVkX3JlbDE7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwyOworCWJv b2wJCXJlbDFfZW1wdHk7CisJYm9vbAkJcmVsMl9lbXB0eTsKKwlSZWxpZHMJCWFnZ19hcHBseV9h dDsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIG5vIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBvciBn cm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2li bGUuCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9PSBOSUwgfHwKKwkJcm9vdC0+ Z3JvdXBfZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyogUmV0cmlldmUgdGhlIGdy b3VwZWQgcmVsYXRpb25zIGZvciB0aGUgdHdvIGlucHV0IHJlbHMgKi8KKwlncm91cGVkX3JlbDEg PSByZWwxLT5ncm91cGVkX3JlbDsKKwlncm91cGVkX3JlbDIgPSByZWwyLT5ncm91cGVkX3JlbDsK KworCXJlbDFfZW1wdHkgPSAoZ3JvdXBlZF9yZWwxID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdy b3VwZWRfcmVsMSkpOworCXJlbDJfZW1wdHkgPSAoZ3JvdXBlZF9yZWwyID09IE5VTEwgfHwgSVNf RFVNTVlfUkVMKGdyb3VwZWRfcmVsMikpOworCisJLyogRmluZCBvciBjb25zdHJ1Y3QgYSBncm91 cGVkIGpvaW5yZWwgZm9yIHRoaXMgam9pbnJlbCAqLworCWdyb3VwZWRfcmVsID0gam9pbnJlbC0+ Z3JvdXBlZF9yZWw7CisJaWYgKGdyb3VwZWRfcmVsID09IE5VTEwpCisJeworCQlSZWxBZ2dJbmZv ICphZ2dfaW5mbyA9IE5VTEw7CisKKwkJLyoKKwkJICogUHJlcGFyZSB0aGUgaW5mb3JtYXRpb24g bmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0aGlzCisJCSAqIGpvaW4gcmVsYXRp b24uCisJCSAqLworCQlhZ2dfaW5mbyA9IGNyZWF0ZV9yZWxfYWdnX2luZm8ocm9vdCwgam9pbnJl bCwgcmVsMV9lbXB0eSA9PSByZWwyX2VtcHR5KTsKKwkJaWYgKGFnZ19pbmZvID09IE5VTEwpCisJ CQlyZXR1cm47CisKKwkJLyoKKwkJICogSWYgZ3JvdXBlZCBwYXRocyBmb3IgdGhlIGdpdmVuIGpv aW4gcmVsYXRpb24gYXJlIG5vdCBjb25zaWRlcmVkCisJCSAqIHVzZWZ1bCwgYW5kIG5vIGdyb3Vw ZWQgcGF0aHMgY2FuIGJlIGJ1aWx0IGJ5IGpvaW5pbmcgZ3JvdXBlZCBpbnB1dAorCQkgKiByZWxh dGlvbnMsIHNraXAgYnVpbGRpbmcgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbi4KKwkJICovCisJ CWlmICghYWdnX2luZm8tPmFnZ191c2VmdWwgJiYKKwkJCShyZWwxX2VtcHR5ID09IHJlbDJfZW1w dHkpKQorCQkJcmV0dXJuOworCisJCS8qIGJ1aWxkIHRoZSBncm91cGVkIHJlbGF0aW9uICovCisJ CWdyb3VwZWRfcmVsID0gYnVpbGRfZ3JvdXBlZF9yZWwocm9vdCwgam9pbnJlbCk7CisJCWdyb3Vw ZWRfcmVsLT5yZWx0YXJnZXQgPSBhZ2dfaW5mby0+dGFyZ2V0OworCisJCWlmIChyZWwxX2VtcHR5 ICE9IHJlbDJfZW1wdHkpCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBpcyBleGFjdGx5IG9u ZSBncm91cGVkIGlucHV0IHJlbGF0aW9uLCB0aGVuIHdlIGNhbgorCQkJICogYnVpbGQgZ3JvdXBl ZCBwYXRocyBieSBqb2luaW5nIHRoZSBpbnB1dCByZWxhdGlvbnMuICBTZXQgc2l6ZQorCQkJICog ZXN0aW1hdGVzIGZvciB0aGUgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGJhc2VkIG9uIHRoZSBpbnB1 dAorCQkJICogcmVsYXRpb25zLCBhbmQgdXBkYXRlIHRoZSBsb3dlc3Qgam9pbiBsZXZlbCB3aGVy ZSBwYXJ0aWFsCisJCQkgKiBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkIHRvIHRoYXQgb2YgdGhlIGdy b3VwZWQgaW5wdXQgcmVsYXRpb24uCisJCQkgKi8KKwkJCXNldF9qb2lucmVsX3NpemVfZXN0aW1h dGVzKHJvb3QsIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJICAgcmVsMV9lbXB0eSA/IHJlbDEgOiBn cm91cGVkX3JlbDEsCisJCQkJCQkJCQkgICByZWwyX2VtcHR5ID8gcmVsMiA6IGdyb3VwZWRfcmVs MiwKKwkJCQkJCQkJCSAgIHNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJCWFnZ19pbmZvLT5hcHBs eV9hdCA9IHJlbDFfZW1wdHkgPworCQkJCWdyb3VwZWRfcmVsMi0+YWdnX2luZm8tPmFwcGx5X2F0 IDoKKwkJCQlncm91cGVkX3JlbDEtPmFnZ19pbmZvLT5hcHBseV9hdDsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBPdGhlcndpc2UsIGdyb3VwZWQgcGF0aHMgY2FuIGJlIGJ1aWx0IGJ5 IGFwcGx5aW5nIHBhcnRpYWwKKwkJCSAqIGFnZ3JlZ2F0aW9uIG9uIHRvcCBvZiBleGlzdGluZyBu b24tZ3JvdXBlZCBqb2luIHBhdGhzLiAgU2V0CisJCQkgKiBzaXplIGVzdGltYXRlcyBmb3IgdGhl IGdyb3VwZWQgam9pbiByZWxhdGlvbiBiYXNlZCBvbiB0aGUKKwkJCSAqIGVzdGltYXRlZCBudW1i ZXIgb2YgZ3JvdXBzLCBhbmQgdHJhY2sgdGhlIGxvd2VzdCBqb2luIGxldmVsCisJCQkgKiB3aGVy ZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQuICBOb3RlIHRoYXQgdGhlc2UgdmFsdWVz CisJCQkgKiBtYXkgYmUgdXBkYXRlZCBsYXRlciBpZiBpdCBpcyBkZXRlcm1pbmVkIHRoYXQgZ3Jv dXBlZCBwYXRocyBjYW4KKwkJCSAqIGJlIGNvbnN0cnVjdGVkIGJ5IGpvaW5pbmcgb3RoZXIgaW5w dXQgcmVsYXRpb25zLgorCQkJICovCisJCQlncm91cGVkX3JlbC0+cm93cyA9IGFnZ19pbmZvLT5n cm91cGVkX3Jvd3M7CisJCQlhZ2dfaW5mby0+YXBwbHlfYXQgPSBibXNfY29weShqb2lucmVsLT5y ZWxpZHMpOworCQl9CisKKwkJZ3JvdXBlZF9yZWwtPmFnZ19pbmZvID0gYWdnX2luZm87CisJCWpv aW5yZWwtPmdyb3VwZWRfcmVsID0gZ3JvdXBlZF9yZWw7CisJfQorCisJQXNzZXJ0KElTX0dST1VQ RURfUkVMKGdyb3VwZWRfcmVsKSk7CisKKwkvKiBXZSBtYXkgaGF2ZSBhbHJlYWR5IHByb3ZlbiB0 aGlzIGdyb3VwZWQgam9pbiByZWxhdGlvbiB0byBiZSBkdW1teS4gKi8KKwlpZiAoSVNfRFVNTVlf UkVMKGdyb3VwZWRfcmVsKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBOb3RoaW5nIHRvIGRvIGlm IHRoZXJlJ3Mgbm8gZ3JvdXBlZCBpbnB1dCByZWxhdGlvbi4gIEFsc28sIGpvaW5pbmcgdHdvCisJ ICogZ3JvdXBlZCByZWxhdGlvbnMgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisJICovCisJ aWYgKHJlbDFfZW1wdHkgPT0gcmVsMl9lbXB0eSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBHZXQg dGhlIGxvd2VzdCBqb2luIGxldmVsIHdoZXJlIHBhcnRpYWwgYWdncmVnYXRpb24gaXMgYXBwbGll ZCBhbW9uZworCSAqIHRoZSBnaXZlbiBpbnB1dCByZWxhdGlvbnMuCisJICovCisJYWdnX2FwcGx5 X2F0ID0gcmVsMV9lbXB0eSA/CisJCWdyb3VwZWRfcmVsMi0+YWdnX2luZm8tPmFwcGx5X2F0IDoK KwkJZ3JvdXBlZF9yZWwxLT5hZ2dfaW5mby0+YXBwbHlfYXQ7CisKKwkvKgorCSAqIElmIGl0J3Mg bm90IHRoZSBkZXNpZ25hdGVkIGxldmVsLCBza2lwIGJ1aWxkaW5nIGdyb3VwZWQgcGF0aHMuCisJ ICoKKwkgKiBPbmUgZXhjZXB0aW9uIGlzIHdoZW4gaXQgaXMgYSBzdWJzZXQgb2YgdGhlIHByZXZp b3VzbHkgcmVjb3JkZWQgbGV2ZWwuCisJICogSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHVwZGF0 ZSB0aGUgZGVzaWduYXRlZCBsZXZlbCB0byB0aGlzIG9uZSwgYW5kCisJICogYWRqdXN0IHRoZSBz aXplIGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbiBhY2NvcmRpbmdseS4K KwkgKiBGb3IgZXhhbXBsZSwgc3VwcG9zZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGNhbiBiZSBhcHBs aWVkIG9uIHRvcCBvZiAoQgorCSAqIEpPSU4gQykuICBJZiB3ZSBmaXJzdCBjb25zdHJ1Y3QgdGhl IGpvaW4gYXMgKChBIEpPSU4gQikgSk9JTiBDKSwgd2UnZAorCSAqIHJlY29yZCB0aGUgZGVzaWdu YXRlZCBsZXZlbCBhcyBpbmNsdWRpbmcgYWxsIHRocmVlIHJlbGF0aW9ucyAoQSBCIEMpLgorCSAq IExhdGVyLCB3aGVuIHdlIGNvbnNpZGVyIChBIEpPSU4gKEIgSk9JTiBDKSksIHdlIGVuY291bnRl ciB0aGUgc21hbGxlcgorCSAqIChCIEMpIGpvaW4gbGV2ZWwgZGlyZWN0bHkuICBTaW5jZSB0aGlz IGlzIGEgc3Vic2V0IG9mIHRoZSBwcmV2aW91cworCSAqIGxldmVsIGFuZCBzdGlsbCB2YWxpZCBm b3IgcGFydGlhbCBhZ2dyZWdhdGlvbiwgd2UgdXBkYXRlIHRoZSBkZXNpZ25hdGVkCisJICogbGV2 ZWwgdG8gKEIgQyksIGFuZCBhZGp1c3QgdGhlIHNpemUgZXN0aW1hdGVzIGFjY29yZGluZ2x5Lgor CSAqLworCWlmICghYm1zX2VxdWFsKGFnZ19hcHBseV9hdCwgZ3JvdXBlZF9yZWwtPmFnZ19pbmZv LT5hcHBseV9hdCkpCisJeworCQlpZiAoYm1zX2lzX3N1YnNldChhZ2dfYXBwbHlfYXQsIGdyb3Vw ZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQpKQorCQl7CisJCQkvKiBBZGp1c3QgdGhlIHNpemUg ZXN0aW1hdGVzIGZvciB0aGUgZ3JvdXBlZCBqb2luIHJlbGF0aW9uLiAqLworCQkJc2V0X2pvaW5y ZWxfc2l6ZV9lc3RpbWF0ZXMocm9vdCwgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkgICByZWwxX2Vt cHR5ID8gcmVsMSA6IGdyb3VwZWRfcmVsMSwKKwkJCQkJCQkJCSAgIHJlbDJfZW1wdHkgPyByZWwy IDogZ3JvdXBlZF9yZWwyLAorCQkJCQkJCQkJICAgc2ppbmZvLCByZXN0cmljdGxpc3QpOworCQkJ Z3JvdXBlZF9yZWwtPmFnZ19pbmZvLT5hcHBseV9hdCA9IGFnZ19hcHBseV9hdDsKKwkJfQorCQll bHNlCisJCQlyZXR1cm47CisJfQorCisJLyogTWFrZSBwYXRocyBmb3IgdGhlIGdyb3VwZWQgam9p biByZWxhdGlvbi4gKi8KKwlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMocm9vdCwKKwkJCQkJ CQkJcmVsMV9lbXB0eSA/IHJlbDEgOiBncm91cGVkX3JlbDEsCisJCQkJCQkJCXJlbDJfZW1wdHkg PyByZWwyIDogZ3JvdXBlZF9yZWwyLAorCQkJCQkJCQlncm91cGVkX3JlbCwKKwkJCQkJCQkJc2pp bmZvLAorCQkJCQkJCQlyZXN0cmljdGxpc3QpOworfQorCiAvKgogICogcG9wdWxhdGVfam9pbnJl bF93aXRoX3BhdGhzCiAgKgkgIEFkZCBwYXRocyB0byB0aGUgZ2l2ZW4gam9pbnJlbCBmb3IgZ2l2 ZW4gcGFpciBvZiBqb2luaW5nIHJlbGF0aW9ucy4gVGhlCkBAIC0xNjE1LDYgKzE4MDMsMTEgQEAg dHJ5X3BhcnRpdGlvbndpc2Vfam9pbihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs MSwgUmVsT3B0SW5mbyAqcmVsMiwKIAkJCQkJCSBhZGp1c3RfY2hpbGRfcmVsaWRzKGpvaW5yZWwt PnJlbGlkcywKIAkJCQkJCQkJCQkJIG5hcHBpbmZvcywgYXBwaW5mb3MpKSk7CiAKKwkJLyogQnVp bGQgYSBncm91cGVkIGpvaW4gcmVsYXRpb24gZm9yICdjaGlsZF9qb2lucmVsJyBpZiBwb3NzaWJs ZSAqLworCQltYWtlX2dyb3VwZWRfam9pbl9yZWwocm9vdCwgY2hpbGRfcmVsMSwgY2hpbGRfcmVs MiwKKwkJCQkJCQkgIGNoaWxkX2pvaW5yZWwsIGNoaWxkX3NqaW5mbywKKwkJCQkJCQkgIGNoaWxk X3Jlc3RyaWN0bGlzdCk7CisKIAkJLyogQW5kIG1ha2UgcGF0aHMgZm9yIHRoZSBjaGlsZCBqb2lu ICovCiAJCXBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhyb290LCBjaGlsZF9yZWwxLCBjaGls ZF9yZWwyLAogCQkJCQkJCQkJY2hpbGRfam9pbnJlbCwgY2hpbGRfc2ppbmZvLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwppbmRleCAzZTNmZWM4OTI1Mi4uMWFmNDNiYjYwZDIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCkBAIC0xNCw2ICsxNCw3IEBA CiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzEsNiArMzIsNyBA QAogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKICNpbmNsdWRlICJwYXJzZXIv YW5hbHl6ZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAi dXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgpAQCAtODEsNiArODMs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgSm9pblRyZWVJdGVtCiB9IEpvaW5UcmVlSXRlbTsKIAogCitz dGF0aWMgYm9vbCBpc19wYXJ0aWFsX2FnZ19tZW1vcnlfcmlza3koUGxhbm5lckluZm8gKnJvb3Qp Oworc3RhdGljIHZvaWQgY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3Qp Oworc3RhdGljIHZvaWQgY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJv b3QpOworc3RhdGljIEVxdWl2YWxlbmNlQ2xhc3MgKmdldF9lY2xhc3NfZm9yX3NvcnRncm91cGNs YXVzZShQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCQkJCQkJU29ydEdyb3VwQ2xhdXNlICpz Z2MsCisJCQkJCQkJCQkJCQkJCUV4cHIgKmV4cHIpOwogc3RhdGljIHZvaWQgZXh0cmFjdF9sYXRl cmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmJyZWwsCiAJCQkJ CQkJCQkgICBJbmRleCBydGluZGV4KTsKIHN0YXRpYyBMaXN0ICpkZWNvbnN0cnVjdF9yZWN1cnNl KFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpqdG5vZGUsCkBAIC02MjgsNiArNjM2LDM3NyBAQCBy ZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVtbnMoUGxhbm5lckluZm8gKnJvb3QpCiAJfQogfQog CisvKgorICogc2V0dXBfZWFnZXJfYWdncmVnYXRpb24KKyAqCSAgQ2hlY2sgaWYgZWFnZXIgYWdn cmVnYXRpb24gaXMgYXBwbGljYWJsZSwgYW5kIGlmIHNvIGNvbGxlY3Qgc3VpdGFibGUKKyAqCSAg YWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBncm91cGluZyBleHByZXNzaW9ucyBpbiB0aGUgcXVl cnkuCisgKi8KK3ZvaWQKK3NldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZvICpyb290 KQoreworCS8qCisJICogRG9uJ3QgYXBwbHkgZWFnZXIgYWdncmVnYXRpb24gaWYgZGlzYWJsZWQg YnkgdXNlci4KKwkgKi8KKwlpZiAoIWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUpCisJCXJldHVybjsK KworCS8qCisJICogRG9uJ3QgYXBwbHkgZWFnZXIgYWdncmVnYXRpb24gaWYgdGhlcmUgYXJlIG5v IGF2YWlsYWJsZSBHUk9VUCBCWQorCSAqIGNsYXVzZXMuCisJICovCisJaWYgKCFyb290LT5wcm9j ZXNzZWRfZ3JvdXBDbGF1c2UpCisJCXJldHVybjsKKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24n dCB0cnkgdG8gc3VwcG9ydCBncm91cGluZyBzZXRzLgorCSAqLworCWlmIChyb290LT5wYXJzZS0+ Z3JvdXBpbmdTZXRzKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEZvciBub3cgd2UgZG9uJ3QgdHJ5 IHRvIHN1cHBvcnQgRElTVElOQ1Qgb3IgT1JERVIgQlkgYWdncmVnYXRlcy4KKwkgKi8KKwlpZiAo cm9vdC0+bnVtT3JkZXJlZEFnZ3MgPiAwKQorCQlyZXR1cm47CisKKwkvKgorCSAqIElmIHRoZXJl IGFyZSBhbnkgYWdncmVnYXRlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHBhcnRpYWwgbW9kZSwgb3Ig YW55CisJICogcGFydGlhbCBhZ2dyZWdhdGVzIHRoYXQgYXJlIG5vbi1zZXJpYWxpemFibGUsIGRv IG5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgorCSAqLworCWlmIChyb290LT5oYXNO b25QYXJ0aWFsQWdncyB8fCByb290LT5oYXNOb25TZXJpYWxBZ2dzKQorCQlyZXR1cm47CisKKwkv KgorCSAqIFdlIGRvbid0IHRyeSB0byBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiB0aGVyZSBh cmUgc2V0LXJldHVybmluZworCSAqIGZ1bmN0aW9ucyBpbiB0YXJnZXRsaXN0LgorCSAqLworCWlm IChyb290LT5wYXJzZS0+aGFzVGFyZ2V0U1JGcykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBFYWdl ciBhZ2dyZWdhdGlvbiBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBiYXNl IHJlbHMgaW4KKwkgKiB0aGUgcXVlcnkuCisJICovCisJaWYgKGJtc19tZW1iZXJzaGlwKHJvb3Qt PmFsbF9iYXNlcmVscykgIT0gQk1TX01VTFRJUExFKQorCQlyZXR1cm47CisKKwkvKgorCSAqIERv bid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlmIGFueSBhZ2dyZWdhdGUgcG9zZXMgYSByaXNr IG9mCisJICogZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcgcGFydGlhbCBhZ2dyZWdhdGlv bi4KKwkgKi8KKwlpZiAoaXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jpc2t5KHJvb3QpKQorCQlyZXR1 cm47CisKKwkvKgorCSAqIENvbGxlY3QgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBwbGFpbiBW YXJzIHRoYXQgYXBwZWFyIGluIHRoZQorCSAqIHRhcmdldGxpc3QgYW5kIGhhdmluZ1F1YWwuCisJ ICovCisJY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3Mocm9vdCk7CisKKwkvKgorCSAqIElmIHRoZXJl IGFyZSBubyBzdWl0YWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMsIHdlIGNhbm5vdCBhcHBseSBl YWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3Qg PT0gTklMKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbGxlY3QgZ3JvdXBpbmcgZXhwcmVzc2lv bnMgdGhhdCBhcHBlYXIgaW4gZ3JvdXBpbmcgY2xhdXNlcy4KKwkgKi8KKwljcmVhdGVfZ3JvdXBp bmdfZXhwcl9pbmZvcyhyb290KTsKK30KKworLyoKKyAqIGlzX3BhcnRpYWxfYWdnX21lbW9yeV9y aXNreQorICoJICBDaGVja3MgaWYgYW55IGFnZ3JlZ2F0ZSBwb3NlcyBhIHJpc2sgb2YgZXhjZXNz aXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcKKyAqCSAgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKyAqCisg KiBXZSBjaGVjayBpZiBhbnkgYWdncmVnYXRlIHVzZXMgSU5URVJOQUwgdHJhbnNpdGlvbiB0eXBl LiAgQWx0aG91Z2ggSU5URVJOQUwKKyAqIGlzIG1hcmtlZCBhcyBwYXNzLWJ5LXZhbHVlLCBpdCB1 c3VhbGx5IHBvaW50cyB0byBhIGxhcmdlIGludGVybmFsIGRhdGEKKyAqIHN0cnVjdHVyZSAobGlr ZSB0aG9zZSB1c2VkIGJ5IHN0cmluZ19hZ2cgb3IgYXJyYXlfYWdnKS4gIFRoZXNlIHRyYW5zaXRp b24KKyAqIHN0YXRlcyBjYW4gZ3JvdyBsYXJnZSBhbmQgdGhlaXIgc2l6ZSBpcyBoYXJkIHRvIGVz dGltYXRlLiAgQXBwbHlpbmcgZWFnZXIKKyAqIGFnZ3JlZ2F0aW9uIGluIHN1Y2ggY2FzZXMgcmlz a3MgaGlnaCBtZW1vcnkgdXNhZ2Ugc2luY2UgcGFydGlhbCBhZ2dyZWdhdGlvbgorICogcmVzdWx0 cyBtaWdodCBiZSBzdG9yZWQgaW4gam9pbiBoYXNoIHRhYmxlcyBvciBtYXRlcmlhbGl6ZWQgbm9k ZXMuCisgKgorICogV2UgZXhwbGljaXRseSBleGNsdWRlIGFnZ3JlZ2F0ZXMgd2l0aCBBVkdfQUND VU0gdHJhbnNpdGlvbiBmdW5jdGlvbiBmcm9tCisgKiB0aGlzIGNoZWNrLCBiYXNlZCBvbiB0aGUg YXNzdW1wdGlvbiB0aGF0IGF2ZygpIGFuZCBzdW0oKSBhcmUgc2FmZSBpbiB0aGlzCisgKiBjb250 ZXh0LgorICovCitzdGF0aWMgYm9vbAoraXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jpc2t5KFBsYW5u ZXJJbmZvICpyb290KQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+ YWdndHJhbnNpbmZvcykKKwl7CisJCUFnZ1RyYW5zSW5mbyAqdHJhbnNpbmZvID0gbGZpcnN0X25v ZGUoQWdnVHJhbnNJbmZvLCBsYyk7CisKKwkJaWYgKHRyYW5zaW5mby0+dHJhbnNmbl9vaWQgPT0g Rl9OVU1FUklDX0FWR19BQ0NVTSB8fAorCQkJdHJhbnNpbmZvLT50cmFuc2ZuX29pZCA9PSBGX0lO VDhfQVZHX0FDQ1VNKQorCQkJY29udGludWU7CisKKwkJaWYgKHRyYW5zaW5mby0+YWdndHJhbnN0 eXBlID09IElOVEVSTkFMT0lEKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNl OworfQorCisvKgorICogY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MKKyAqCSAgU2VhcmNoIHRoZSB0 YXJnZXRsaXN0IGFuZCBoYXZpbmdRdWFsIGZvciBBZ2dyZWZzIGFuZCBwbGFpbiBWYXJzLCBhbmQK KyAqCSAgY3JlYXRlIGFuIEFnZ0NsYXVzZUluZm8gZm9yIGVhY2ggQWdncmVmIG5vZGUuCisgKi8K K3N0YXRpYyB2b2lkCitjcmVhdGVfYWdnX2NsYXVzZV9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkK K3sKKwlMaXN0CSAgICp0bGlzdF9leHByczsKKwlMaXN0CSAgICphZ2dfY2xhdXNlX2xpc3QgPSBO SUw7CisJTGlzdAkgICAqdGxpc3RfdmFycyA9IE5JTDsKKwlSZWxpZHMJCWFnZ3JlZ2F0ZV9yZWxp ZHMgPSBOVUxMOworCWJvb2wJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gdHJ1ZTsKKwlMaXN0Q2Vs bCAgICpsYzsKKworCUFzc2VydChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMKTsKKwlBc3Nl cnQocm9vdC0+dGxpc3RfdmFycyA9PSBOSUwpOworCisJdGxpc3RfZXhwcnMgPSBwdWxsX3Zhcl9j bGF1c2UoKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAorCQkJCQkJCQkgIFBWQ19JTkNM VURFX0FHR1JFR0FURVMgfAorCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1dJTkRPV0ZVTkNTIHwKKwkJ CQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCisJLyoKKwkgKiBBZ2dyZWdhdGVz IHdpdGhpbiB0aGUgSEFWSU5HIGNsYXVzZSBuZWVkIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgc2Ft ZQorCSAqIHdheSBhcyB0aG9zZSBpbiB0aGUgdGFyZ2V0bGlzdC4gIE5vdGUgdGhhdCBIQVZJTkcg Y2FuIGNvbnRhaW4gQWdncmVmcworCSAqIGJ1dCBub3QgV2luZG93RnVuY3MuCisJICovCisJaWYg KHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsICE9IE5VTEwpCisJeworCQlMaXN0CSAgICpoYXZpbmdf ZXhwcnM7CisKKwkJaGF2aW5nX2V4cHJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJvb3Qt PnBhcnNlLT5oYXZpbmdRdWFsLAorCQkJCQkJCQkJICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8 CisJCQkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCQlpZiAoaGF2aW5nX2V4 cHJzICE9IE5JTCkKKwkJeworCQkJdGxpc3RfZXhwcnMgPSBsaXN0X2NvbmNhdCh0bGlzdF9leHBy cywgaGF2aW5nX2V4cHJzKTsKKwkJCWxpc3RfZnJlZShoYXZpbmdfZXhwcnMpOworCQl9CisJfQor CisJZm9yZWFjaChsYywgdGxpc3RfZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIg KikgbGZpcnN0KGxjKTsKKwkJQWdncmVmCSAgICphZ2dyZWY7CisJCVJlbGlkcwkJYWdnX2V2YWxf YXQ7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm87CisKKwkJLyogRm9yIG5vdyB3ZSBkb24ndCB0 cnkgdG8gc3VwcG9ydCBHUk9VUElORygpIGV4cHJlc3Npb25zICovCisJCWlmIChJc0EoZXhwciwg R3JvdXBpbmdGdW5jKSkKKwkJeworCQkJZWFnZXJfYWdnX2FwcGxpY2FibGUgPSBmYWxzZTsKKwkJ CWJyZWFrOworCQl9CisKKwkJLyogQ29sbGVjdCBwbGFpbiBWYXJzIGZvciBmdXR1cmUgcmVmZXJl bmNlICovCisJCWlmIChJc0EoZXhwciwgVmFyKSkKKwkJeworCQkJdGxpc3RfdmFycyA9IGxpc3Rf YXBwZW5kX3VuaXF1ZSh0bGlzdF92YXJzLCBleHByKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJ YWdncmVmID0gY2FzdE5vZGUoQWdncmVmLCBleHByKTsKKworCQlBc3NlcnQoYWdncmVmLT5hZ2dv cmRlciA9PSBOSUwpOworCQlBc3NlcnQoYWdncmVmLT5hZ2dkaXN0aW5jdCA9PSBOSUwpOworCisJ CS8qCisJCSAqIElmIHRoZXJlIGFyZSBhbnkgc2VjdXJpdHlRdWFscywgZG8gbm90IHRyeSB0byBh cHBseSBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiBpZiBhbnkgbm9uLWxlYWtwcm9vZiBhZ2dyZWdh dGUgZnVuY3Rpb25zIGFyZSBwcmVzZW50LgorCQkgKiBUaGlzIGlzIG92ZXJseSBzdHJpY3QsIGJ1 dCBmb3Igbm93Li4uCisJCSAqLworCQlpZiAocm9vdC0+cXVhbF9zZWN1cml0eV9sZXZlbCA+IDAg JiYKKwkJCSFnZXRfZnVuY19sZWFrcHJvb2YoYWdncmVmLT5hZ2dmbm9pZCkpCisJCXsKKwkJCWVh Z2VyX2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJCWFnZ19ldmFs X2F0ID0gcHVsbF92YXJub3Mocm9vdCwgKE5vZGUgKikgYWdncmVmKTsKKworCQkvKgorCQkgKiBJ ZiBhbGwgYmFzZSByZWxhdGlvbnMgaW4gdGhlIHF1ZXJ5IGFyZSByZWZlcmVuY2VkIGJ5IGFnZ3Jl Z2F0ZQorCQkgKiBmdW5jdGlvbnMsIHRoZW4gZWFnZXIgYWdncmVnYXRpb24gaXMgbm90IGFwcGxp Y2FibGUuCisJCSAqLworCQlhZ2dyZWdhdGVfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGFnZ3Jl Z2F0ZV9yZWxpZHMsIGFnZ19ldmFsX2F0KTsKKwkJaWYgKGJtc19pc19zdWJzZXQocm9vdC0+YWxs X2Jhc2VyZWxzLCBhZ2dyZWdhdGVfcmVsaWRzKSkKKwkJeworCQkJZWFnZXJfYWdnX2FwcGxpY2Fi bGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogT0ssIGNyZWF0ZSB0aGUgQWdnQ2xh dXNlSW5mbyBub2RlICovCisJCWFjX2luZm8gPSBtYWtlTm9kZShBZ2dDbGF1c2VJbmZvKTsKKwkJ YWNfaW5mby0+YWdncmVmID0gYWdncmVmOworCQlhY19pbmZvLT5hZ2dfZXZhbF9hdCA9IGFnZ19l dmFsX2F0OworCisJCS8qIC4uLiBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0ICovCisJCWFnZ19jbGF1 c2VfbGlzdCA9IGxpc3RfYXBwZW5kX3VuaXF1ZShhZ2dfY2xhdXNlX2xpc3QsIGFjX2luZm8pOwor CX0KKworCWxpc3RfZnJlZSh0bGlzdF9leHBycyk7CisKKwlpZiAoZWFnZXJfYWdnX2FwcGxpY2Fi bGUpCisJeworCQlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPSBhZ2dfY2xhdXNlX2xpc3Q7CisJCXJv b3QtPnRsaXN0X3ZhcnMgPSB0bGlzdF92YXJzOworCX0KKwllbHNlCisJeworCQlsaXN0X2ZyZWVf ZGVlcChhZ2dfY2xhdXNlX2xpc3QpOworCQlsaXN0X2ZyZWUodGxpc3RfdmFycyk7CisJfQorfQor CisvKgorICogY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MKKyAqCSAgQ3JlYXRlIGEgR3JvdXBp bmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uIHVzYWJsZSBhcyBncm91cGluZyBrZXkuCisg KgorICogSWYgYW55IGdyb3VwaW5nIGV4cHJlc3Npb24gaXMgbm90IHN1aXRhYmxlLCB3ZSB3aWxs IGp1c3QgcmV0dXJuIHdpdGgKKyAqIHJvb3QtPmdyb3VwX2V4cHJfbGlzdCBiZWluZyBOSUwuCisg Ki8KK3N0YXRpYyB2b2lkCitjcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcyhQbGFubmVySW5mbyAq cm9vdCkKK3sKKwlMaXN0CSAgICpleHBycyA9IE5JTDsKKwlMaXN0CSAgICpzb3J0Z3JvdXByZWZz ID0gTklMOworCUxpc3QJICAgKmVjcyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYywKKwkJCSAgICps YzEsCisJCQkgICAqbGMyLAorCQkJICAgKmxjMzsKKworCUFzc2VydChyb290LT5ncm91cF9leHBy X2xpc3QgPT0gTklMKTsKKworCWZvcmVhY2gobGMsIHJvb3QtPnByb2Nlc3NlZF9ncm91cENsYXVz ZSkKKwl7CisJCVNvcnRHcm91cENsYXVzZSAqc2djID0gbGZpcnN0X25vZGUoU29ydEdyb3VwQ2xh dXNlLCBsYyk7CisJCVRhcmdldEVudHJ5ICp0bGUgPSBnZXRfc29ydGdyb3VwY2xhdXNlX3RsZShz Z2MsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCk7CisJCVR5cGVDYWNoZUVudHJ5ICp0Y2U7CisJCU9p ZAkJCWVxdWFsaW1hZ2Vwcm9jOworCisJCUFzc2VydCh0bGUtPnJlc3NvcnRncm91cHJlZiA+IDAp OworCisJCS8qCisJCSAqIEZvciBub3cgd2Ugb25seSBzdXBwb3J0IHBsYWluIFZhcnMgYXMgZ3Jv dXBpbmcgZXhwcmVzc2lvbnMuCisJCSAqLworCQlpZiAoIUlzQSh0bGUtPmV4cHIsIFZhcikpCisJ CQlyZXR1cm47CisKKwkJLyoKKwkJICogRWFnZXIgYWdncmVnYXRpb24gaXMgb25seSBwb3NzaWJs ZSBpZiBlcXVhbGl0eSBpbXBsaWVzIGltYWdlCisJCSAqIGVxdWFsaXR5IGZvciBlYWNoIGdyb3Vw aW5nIGtleS4gIE90aGVyd2lzZSwgcGxhY2luZyBrZXlzIHdpdGgKKwkJICogZGlmZmVyZW50IGJ5 dGUgaW1hZ2VzIGludG8gdGhlIHNhbWUgZ3JvdXAgbWF5IHJlc3VsdCBpbiB0aGUgbG9zcyBvZgor CQkgKiBpbmZvcm1hdGlvbiB0aGF0IGNvdWxkIGJlIG5lY2Vzc2FyeSB0byBldmFsdWF0ZSB1cHBl ciBxdWFsIGNsYXVzZXMuCisJCSAqCisJCSAqIEZvciBpbnN0YW5jZSwgdGhlIE5VTUVSSUMgZGF0 YSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQsIGFzIHZhbHVlcworCQkgKiB0aGF0IGFyZSBjb25zaWRl cmVkIGVxdWFsIGJ5IHRoZSBlcXVhbGl0eSBvcGVyYXRvciAoZS5nLiwgMCBhbmQKKwkJICogMC4w KSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2NhbGVzLgorCQkgKi8KKwkJdGNlID0gbG9va3VwX3R5cGVf Y2FjaGUoZXhwclR5cGUoKE5vZGUgKikgdGxlLT5leHByKSwKKwkJCQkJCQkJVFlQRUNBQ0hFX0JU UkVFX09QRkFNSUxZKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3BmKSB8fAorCQkJ IU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGludHlwZSkpCisJCQlyZXR1cm47CisKKwkJZXF1YWxp bWFnZXByb2MgPSBnZXRfb3BmYW1pbHlfcHJvYyh0Y2UtPmJ0cmVlX29wZiwKKwkJCQkJCQkJCQkg ICB0Y2UtPmJ0cmVlX29waW50eXBlLAorCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUs CisJCQkJCQkJCQkJICAgQlRFUVVBTElNQUdFX1BST0MpOworCQlpZiAoIU9pZElzVmFsaWQoZXF1 YWxpbWFnZXByb2MpIHx8CisJCQkhRGF0dW1HZXRCb29sKE9pZEZ1bmN0aW9uQ2FsbDFDb2xsKGVx dWFsaW1hZ2Vwcm9jLAorCQkJCQkJCQkJCQkgICB0Y2UtPnR5cGNvbGxhdGlvbiwKKwkJCQkJCQkJ CQkJICAgT2JqZWN0SWRHZXREYXR1bSh0Y2UtPmJ0cmVlX29waW50eXBlKSkpKQorCQkJcmV0dXJu OworCisJCWV4cHJzID0gbGFwcGVuZChleHBycywgdGxlLT5leHByKTsKKwkJc29ydGdyb3VwcmVm cyA9IGxhcHBlbmRfaW50KHNvcnRncm91cHJlZnMsIHRsZS0+cmVzc29ydGdyb3VwcmVmKTsKKwkJ ZWNzID0gbGFwcGVuZChlY3MsIGdldF9lY2xhc3NfZm9yX3NvcnRncm91cGNsYXVzZShyb290LCBz Z2MsIHRsZS0+ZXhwcikpOworCX0KKworCS8qCisJICogQ29uc3RydWN0IGEgR3JvdXBpbmdFeHBy SW5mbyBmb3IgZWFjaCBleHByZXNzaW9uLgorCSAqLworCWZvcnRocmVlKGxjMSwgZXhwcnMsIGxj Miwgc29ydGdyb3VwcmVmcywgbGMzLCBlY3MpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIg KikgbGZpcnN0KGxjMSk7CisJCWludAkJCXNvcnRncm91cHJlZiA9IGxmaXJzdF9pbnQobGMyKTsK KwkJRXF1aXZhbGVuY2VDbGFzcyAqZWMgPSAoRXF1aXZhbGVuY2VDbGFzcyAqKSBsZmlyc3QobGMz KTsKKwkJR3JvdXBpbmdFeHBySW5mbyAqZ2VfaW5mbzsKKworCQlnZV9pbmZvID0gbWFrZU5vZGUo R3JvdXBpbmdFeHBySW5mbyk7CisJCWdlX2luZm8tPmV4cHIgPSAoRXhwciAqKSBjb3B5T2JqZWN0 KGV4cHIpOworCQlnZV9pbmZvLT5zb3J0Z3JvdXByZWYgPSBzb3J0Z3JvdXByZWY7CisJCWdlX2lu Zm8tPmVjID0gZWM7CisKKwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gbGFwcGVuZChyb290LT5n cm91cF9leHByX2xpc3QsIGdlX2luZm8pOworCX0KK30KKworLyoKKyAqIGdldF9lY2xhc3NfZm9y X3NvcnRncm91cGNsYXVzZQorICoJICBHaXZlbiBhIGdyb3VwIGNsYXVzZSBhbmQgYW4gZXhwcmVz c2lvbiwgZmluZCBhbiBleGlzdGluZyBlcXVpdmFsZW5jZQorICoJICBjbGFzcyB0aGF0IHRoZSBl eHByZXNzaW9uIGlzIGEgbWVtYmVyIG9mOyByZXR1cm4gTlVMTCBpZiBub25lLgorICovCitzdGF0 aWMgRXF1aXZhbGVuY2VDbGFzcyAqCitnZXRfZWNsYXNzX2Zvcl9zb3J0Z3JvdXBjbGF1c2UoUGxh bm5lckluZm8gKnJvb3QsIFNvcnRHcm91cENsYXVzZSAqc2djLAorCQkJCQkJCSAgIEV4cHIgKmV4 cHIpCit7CisJT2lkCQkJb3BmYW1pbHksCisJCQkJb3BjaW50eXBlLAorCQkJCWNvbGxhdGlvbjsK KwlDb21wYXJlVHlwZSBjbXB0eXBlOworCU9pZAkJCWVxdWFsaXR5X29wOworCUxpc3QJICAgKm9w ZmFtaWxpZXM7CisKKwkvKiBQdW50IGlmIHRoZSBncm91cCBjbGF1c2UgaXMgbm90IHNvcnRhYmxl ICovCisJaWYgKCFPaWRJc1ZhbGlkKHNnYy0+c29ydG9wKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkv KiBGaW5kIHRoZSBvcGVyYXRvciBpbiBwZ19hbW9wIC0tLSBmYWlsdXJlIHNob3VsZG4ndCBoYXBw ZW4gKi8KKwlpZiAoIWdldF9vcmRlcmluZ19vcF9wcm9wZXJ0aWVzKHNnYy0+c29ydG9wLAorCQkJ CQkJCQkJJm9wZmFtaWx5LCAmb3BjaW50eXBlLCAmY21wdHlwZSkpCisJCWVsb2coRVJST1IsICJv cGVyYXRvciAldSBpcyBub3QgYSB2YWxpZCBvcmRlcmluZyBvcGVyYXRvciIsCisJCQkgc2djLT5z b3J0b3ApOworCisJLyogQmVjYXVzZSBTb3J0R3JvdXBDbGF1c2UgZG9lc24ndCBjYXJyeSBjb2xs YXRpb24sIGNvbnN1bHQgdGhlIGV4cHIgKi8KKwljb2xsYXRpb24gPSBleHByQ29sbGF0aW9uKChO b2RlICopIGV4cHIpOworCisJLyoKKwkgKiBFcXVpdmFsZW5jZUNsYXNzZXMgbmVlZCB0byBjb250 YWluIG9wZmFtaWx5IGxpc3RzIGJhc2VkIG9uIHRoZSBmYW1pbHkKKwkgKiBtZW1iZXJzaGlwIG9m IG1lcmdlam9pbmFibGUgZXF1YWxpdHkgb3BlcmF0b3JzLCB3aGljaCBjb3VsZCBiZWxvbmcgdG8K KwkgKiBtb3JlIHRoYW4gb25lIG9wZmFtaWx5LiAgU28gd2UgaGF2ZSB0byBsb29rIHVwIHRoZSBv cGZhbWlseSdzIGVxdWFsaXR5CisJICogb3BlcmF0b3IgYW5kIGdldCBpdHMgbWVtYmVyc2hpcC4K KwkgKi8KKwllcXVhbGl0eV9vcCA9IGdldF9vcGZhbWlseV9tZW1iZXJfZm9yX2NtcHR5cGUob3Bm YW1pbHksCisJCQkJCQkJCQkJCQkgIG9wY2ludHlwZSwKKwkJCQkJCQkJCQkJCSAgb3BjaW50eXBl LAorCQkJCQkJCQkJCQkJICBDT01QQVJFX0VRKTsKKwlpZiAoIU9pZElzVmFsaWQoZXF1YWxpdHlf b3ApKQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJh dG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAldSIsCisJCQkgQ09NUEFSRV9FUSwgb3BjaW50eXBl LCBvcGNpbnR5cGUsIG9wZmFtaWx5KTsKKwlvcGZhbWlsaWVzID0gZ2V0X21lcmdlam9pbl9vcGZh bWlsaWVzKGVxdWFsaXR5X29wKTsKKwlpZiAoIW9wZmFtaWxpZXMpCQkJLyogY2VydGFpbmx5IHNo b3VsZCBmaW5kIHNvbWUgKi8KKwkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIG9wZmFtaWxp ZXMgZm9yIGVxdWFsaXR5IG9wZXJhdG9yICV1IiwKKwkJCSBlcXVhbGl0eV9vcCk7CisKKwkvKiBO b3cgZmluZCBhIG1hdGNoaW5nIEVxdWl2YWxlbmNlQ2xhc3MgKi8KKwlyZXR1cm4gZ2V0X2VjbGFz c19mb3Jfc29ydF9leHByKHJvb3QsIGV4cHIsIG9wZmFtaWxpZXMsIG9wY2ludHlwZSwKKwkJCQkJ CQkJCWNvbGxhdGlvbiwgc2djLT50bGVTb3J0R3JvdXBSZWYsCisJCQkJCQkJCQlOVUxMLCBmYWxz ZSk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCSAgTEFURVJBTCBSRUZFUkVO Q0VTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwppbmRleCA1NDY3ZTA5NGNhNy4u ZWVmYzQ4NmE1NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5t YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwpAQCAtNzYs NiArNzYsOSBAQCBxdWVyeV9wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LAogCXJvb3QtPnBsYWNl aG9sZGVyX2xpc3QgPSBOSUw7CiAJcm9vdC0+cGxhY2Vob2xkZXJfYXJyYXkgPSBOVUxMOwogCXJv b3QtPnBsYWNlaG9sZGVyX2FycmF5X3NpemUgPSAwOworCXJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9 IE5JTDsKKwlyb290LT5ncm91cF9leHByX2xpc3QgPSBOSUw7CisJcm9vdC0+dGxpc3RfdmFycyA9 IE5JTDsKIAlyb290LT5ma2V5X2xpc3QgPSBOSUw7CiAJcm9vdC0+aW5pdGlhbF9yZWxzID0gTklM OwogCkBAIC0yNjUsNiArMjY4LDEyIEBAIHF1ZXJ5X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3Qs CiAJICovCiAJZXh0cmFjdF9yZXN0cmljdGlvbl9vcl9jbGF1c2VzKHJvb3QpOwogCisJLyoKKwkg KiBDaGVjayBpZiBlYWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlLCBhbmQgaWYgc28sIHNl dCB1cAorCSAqIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+Z3JvdXBfZXhwcl9saXN0 LgorCSAqLworCXNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKHJvb3QpOworCiAJLyoKIAkgKiBOb3cg ZXhwYW5kIGFwcGVuZHJlbHMgYnkgYWRkaW5nICJvdGhlcnJlbHMiIGZvciB0aGVpciBjaGlsZHJl bi4gIFdlCiAJICogZGVsYXkgdGhpcyB0byB0aGUgZW5kIHNvIHRoYXQgd2UgaGF2ZSBhcyBtdWNo IGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK aW5kZXggNDFiZDgzNTM0MzAuLjQ2MmM1MzM1NTg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jCkBAIC0yMzIsNyArMjMyLDYgQEAgc3RhdGljIHZvaWQgYWRkX3BhdGhzX3RvX2dy b3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJ CQkJCQkJICBSZWxPcHRJbmZvICpwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkgIGNv bnN0IEFnZ0NsYXVzZUNvc3RzICphZ2dfY29zdHMsCiAJCQkJCQkJCQkgIGdyb3VwaW5nX3NldHNf ZGF0YSAqZ2QsCi0JCQkJCQkJCQkgIGRvdWJsZSBkTnVtR3JvdXBzLAogCQkJCQkJCQkJICBHcm91 cFBhdGhFeHRyYURhdGEgKmV4dHJhKTsKIHN0YXRpYyBSZWxPcHRJbmZvICpjcmVhdGVfcGFydGlh bF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCSBSZWxPcHRJ bmZvICpncm91cGVkX3JlbCwKQEAgLTQwMTAsOSArNDAwOSw3IEBAIGNyZWF0ZV9vcmRpbmFyeV9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAog CQkJCQkJCSAgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEsCiAJCQkJCQkJICAgUmVsT3B0SW5m byAqKnBhcnRpYWxseV9ncm91cGVkX3JlbF9wKQogewotCVBhdGgJICAgKmNoZWFwZXN0X3BhdGgg PSBpbnB1dF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CiAJUmVsT3B0SW5mbyAqcGFydGlhbGx5 X2dyb3VwZWRfcmVsID0gTlVMTDsKLQlkb3VibGUJCWROdW1Hcm91cHM7CiAJUGFydGl0aW9ud2lz ZUFnZ3JlZ2F0ZVR5cGUgcGF0eXBlID0gUEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfTk9ORTsKIAog CS8qCkBAIC00MDk0LDIzICs0MDkxLDE2IEBAIGNyZWF0ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRo cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCiAJLyogR2F0aGVy IGFueSBwYXJ0aWFsbHkgZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzLiAqLwogCWlmIChwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQot CXsKIAkJZ2F0aGVyX2dyb3VwaW5nX3BhdGhzKHJvb3QsIHBhcnRpYWxseV9ncm91cGVkX3JlbCk7 Ci0JCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwotCX0KIAotCS8qCi0JICog RXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vwcy4KLQkgKi8KLQlkTnVtR3JvdXBzID0gZ2V0X251bWJl cl9vZl9ncm91cHMocm9vdCwKLQkJCQkJCQkJCSAgY2hlYXBlc3RfcGF0aC0+cm93cywKLQkJCQkJ CQkJCSAgZ2QsCi0JCQkJCQkJCQkgIGV4dHJhLT50YXJnZXRMaXN0KTsKKwkvKiBOb3cgY2hvb3Nl IHRoZSBiZXN0IHBhdGgocykgZm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4gKi8KKwlpZiAocGFy dGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCisJ CXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCiAJLyogQnVpbGQgZmluYWwg Z3JvdXBpbmcgcGF0aHMgKi8KIAlhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKHJvb3QsIGlucHV0 X3JlbCwgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIGFnZ19j b3N0cywgZ2QsCi0JCQkJCQkJICBkTnVtR3JvdXBzLCBleHRyYSk7CisJCQkJCQkJICBleHRyYSk7 CiAKIAkvKiBHaXZlIGEgaGVscGZ1bCBlcnJvciBpZiB3ZSBmYWlsZWQgdG8gZmluZCBhbnkgaW1w bGVtZW50YXRpb24gKi8KIAlpZiAoZ3JvdXBlZF9yZWwtPnBhdGhsaXN0ID09IE5JTCkKQEAgLTcw NTUsMTYgKzcwNDUsNDIgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJICBSZWxPcHRJbmZvICpncm91cGVk X3JlbCwKIAkJCQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJ ICBjb25zdCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAotCQkJCQkJICBncm91cGluZ19zZXRz X2RhdGEgKmdkLCBkb3VibGUgZE51bUdyb3VwcywKKwkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRh ICpnZCwKIAkJCQkJCSAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSkKIHsKIAlRdWVyeQkgICAq cGFyc2UgPSByb290LT5wYXJzZTsKIAlQYXRoCSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVs LT5jaGVhcGVzdF90b3RhbF9wYXRoOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxseV9ncm91 cGVkX3BhdGggPSBOVUxMOwogCUxpc3RDZWxsICAgKmxjOwogCWJvb2wJCWNhbl9oYXNoID0gKGV4 dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29y dCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAJTGlzdAkg ICAqaGF2aW5nUXVhbCA9IChMaXN0ICopIGV4dHJhLT5oYXZpbmdRdWFsOwogCUFnZ0NsYXVzZUNv c3RzICphZ2dfZmluYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKKwlkb3VibGUJ CWROdW1Hcm91cHMgPSAwOworCWRvdWJsZQkJZE51bUZpbmFsR3JvdXBzID0gMDsKKworCS8qCisJ ICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBmb3Igbm9uLXNwbGl0IGFnZ3JlZ2F0aW9uLgor CSAqLworCWROdW1Hcm91cHMgPSBnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJ ICBjaGVhcGVzdF9wYXRoLT5yb3dzLAorCQkJCQkJCQkJICBnZCwKKwkJCQkJCQkJCSAgZXh0cmEt PnRhcmdldExpc3QpOworCisJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwtPnBhdGhsaXN0KQorCXsKKwkJY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRf cGF0aCA9CisJCQlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CisK KwkJLyoKKwkJICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBmb3IgZmluYWwgcGhhc2Ugb2Yg cGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJICovCisJCWROdW1GaW5hbEdyb3VwcyA9CisJCQlnZXRf bnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3Vw ZWRfcGF0aC0+cm93cywKKwkJCQkJCQkJIGdkLAorCQkJCQkJCQkgZXh0cmEtPnRhcmdldExpc3Qp OworCX0KIAogCWlmIChjYW5fc29ydCkKIAl7CkBAIC03MTc3LDcgKzcxOTMsNyBAQCBhZGRfcGF0 aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9y ZWwsCiAJCQkJCXBhdGggPSBtYWtlX29yZGVyZWRfcGF0aChyb290LAogCQkJCQkJCQkJCQkgZ3Jv dXBlZF9yZWwsCiAJCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoLAorCQkJCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlh bGx5X2dyb3VwZWRfcGF0aCwKIAkJCQkJCQkJCQkJIGluZm8tPnBhdGhrZXlzLAogCQkJCQkJCQkJ CQkgLTEuMCk7CiAKQEAgLTcxOTUsNyArNzIxMSw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19y ZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJ CSBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJCQkJIGhhdmluZ1F1YWwsCiAJCQkJCQkJCQkJCQkg YWdnX2ZpbmFsX2Nvc3RzLAotCQkJCQkJCQkJCQkJIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJ CSBkTnVtRmluYWxHcm91cHMpKTsKIAkJCQkJZWxzZQogCQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9y ZWwsIChQYXRoICopCiAJCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LApAQCAtNzIwMyw3 ICs3MjE5LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJICAgcGF0aCwKIAkJCQkJCQkJCQkJ CSAgIGluZm8tPmNsYXVzZXMsCiAJCQkJCQkJCQkJCQkgICBoYXZpbmdRdWFsLAotCQkJCQkJCQkJ CQkJICAgZE51bUdyb3VwcykpOworCQkJCQkJCQkJCQkJICAgZE51bUZpbmFsR3JvdXBzKSk7CiAK IAkJCQl9CiAJCQl9CkBAIC03MjQ1LDE5ICs3MjYxLDE3IEBAIGFkZF9wYXRoc190b19ncm91cGlu Z19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJICovCiAJ CWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRo bGlzdCkKIAkJewotCQkJUGF0aAkgICAqcGF0aCA9IHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y2hl YXBlc3RfdG90YWxfcGF0aDsKLQogCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJ CQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKIAkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJCQkJ CQkJCSBwYXRoLAorCQkJCQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGgsCiAJ CQkJCQkJCQkgZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCwKIAkJCQkJCQkJCSBBR0dfSEFTSEVELAog CQkJCQkJCQkJIEFHR1NQTElUX0ZJTkFMX0RFU0VSSUFMLAogCQkJCQkJCQkJIHJvb3QtPnByb2Nl c3NlZF9ncm91cENsYXVzZSwKIAkJCQkJCQkJCSBoYXZpbmdRdWFsLAogCQkJCQkJCQkJIGFnZ19m aW5hbF9jb3N0cywKLQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7CisJCQkJCQkJCQkgZE51bUZpbmFs R3JvdXBzKSk7CiAJCX0KIAl9CiAKQEAgLTcyOTcsNiArNzMxMSw3IEBAIGNyZWF0ZV9wYXJ0aWFs X2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogewogCVF1ZXJ5CSAgICpwYXJzZSA9 IHJvb3QtPnBhcnNlOwogCVJlbE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbDsKKwlSZWxP cHRJbmZvICplYWdlcl9hZ2dfcmVsID0gTlVMTDsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdnX3BhcnRp YWxfY29zdHMgPSAmZXh0cmEtPmFnZ19wYXJ0aWFsX2Nvc3RzOwogCUFnZ0NsYXVzZUNvc3RzICph Z2dfZmluYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKIAlQYXRoCSAgICpjaGVh cGVzdF9wYXJ0aWFsX3BhdGggPSBOVUxMOwpAQCAtNzMwNyw2ICs3MzIyLDE1IEBAIGNyZWF0ZV9w YXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCWJvb2wJCWNhbl9oYXNo ID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQlj YW5fc29ydCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAK KwkvKgorCSAqIENoZWNrIHdoZXRoZXIgYW55IHBhcnRpYWxseSBhZ2dyZWdhdGVkIHBhdGhzIGhh dmUgYmVlbiBnZW5lcmF0ZWQKKwkgKiB0aHJvdWdoIGVhZ2VyIGFnZ3JlZ2F0aW9uLgorCSAqLwor CWlmIChpbnB1dF9yZWwtPmdyb3VwZWRfcmVsICYmCisJCSFJU19EVU1NWV9SRUwoaW5wdXRfcmVs LT5ncm91cGVkX3JlbCkgJiYKKwkJaW5wdXRfcmVsLT5ncm91cGVkX3JlbC0+cGF0aGxpc3QgIT0g TklMKQorCQllYWdlcl9hZ2dfcmVsID0gaW5wdXRfcmVsLT5ncm91cGVkX3JlbDsKKwogCS8qCiAJ ICogQ29uc2lkZXIgd2hldGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFydGlhbGx5IGFnZ3JlZ2F0 ZWQgbm9uLXBhcnRpYWwKIAkgKiBwYXRocy4gIFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgd2UgaGF2 ZSBhIG5vbi1wYXJ0aWFsIHBhdGgsIGFuZCBvbmx5IGlmCkBAIC03MzI4LDExICs3MzUyLDEzIEBA IGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCiAJLyoK IAkgKiBJZiB3ZSBjYW4ndCBwYXJ0aWFsbHkgYWdncmVnYXRlIHBhcnRpYWwgcGF0aHMsIGFuZCB3 ZSBjYW4ndCBwYXJ0aWFsbHkKLQkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIHRoZW4g ZG9uJ3QgYm90aGVyIGNyZWF0aW5nIHRoZSBuZXcKKwkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwg cGF0aHMsIGFuZCBubyBwYXJ0aWFsbHkgYWdncmVnYXRlZCBwYXRocyB3ZXJlCisJICogZ2VuZXJh dGVkIGJ5IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB0aGVuIGRvbid0IGJvdGhlciBjcmVhdGluZyB0aGUg bmV3CiAJICogUmVsT3B0SW5mbyBhdCBhbGwsIHVubGVzcyB0aGUgY2FsbGVyIHNwZWNpZmllZCBm b3JjZV9yZWxfY3JlYXRpb24uCiAJICovCiAJaWYgKGNoZWFwZXN0X3RvdGFsX3BhdGggPT0gTlVM TCAmJgogCQljaGVhcGVzdF9wYXJ0aWFsX3BhdGggPT0gTlVMTCAmJgorCQllYWdlcl9hZ2dfcmVs ID09IE5VTEwgJiYKIAkJIWZvcmNlX3JlbF9jcmVhdGlvbikKIAkJcmV0dXJuIE5VTEw7CiAKQEAg LTc1NTcsNiArNzU4Myw1MSBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkgZE51bVBhcnRpYWxQYXJ0aWFsR3JvdXBzKSk7CiAJfQog CisJLyoKKwkgKiBBZGQgYW55IHBhcnRpYWxseSBhZ2dyZWdhdGVkIHBhdGhzIGdlbmVyYXRlZCBi eSBlYWdlciBhZ2dyZWdhdGlvbiB0bworCSAqIHRoZSBuZXcgdXBwZXIgcmVsYXRpb24gYWZ0ZXIg YXBwbHlpbmcgcHJvamVjdGlvbiBzdGVwcyBhcyBuZWVkZWQuCisJICovCisJaWYgKGVhZ2VyX2Fn Z19yZWwpCisJeworCQkvKiBBZGQgdGhlIHBhdGhzICovCisJCWZvcmVhY2gobGMsIGVhZ2VyX2Fn Z19yZWwtPnBhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0 KGxjKTsKKworCQkJLyogU2hvdWxkbid0IGhhdmUgYW55IHBhcmFtZXRlcml6ZWQgcGF0aHMgYW55 bW9yZSAqLworCQkJQXNzZXJ0KHBhdGgtPnBhcmFtX2luZm8gPT0gTlVMTCk7CisKKwkJCXBhdGgg PSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJ ICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5yZWx0YXJnZXQpOworCisJCQlhZGRfcGF0aChwYXJ0 aWFsbHlfZ3JvdXBlZF9yZWwsIHBhdGgpOworCQl9CisKKwkJLyoKKwkJICogTGlrZXdpc2UgYWRk IHRoZSBwYXJ0aWFsIHBhdGhzLCBidXQgb25seSBpZiBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZQor CQkgKiBmb3IgcGFydGlhbGx5X2dyb3VwZWRfcmVsLgorCQkgKi8KKwkJaWYgKHBhcnRpYWxseV9n cm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxsZWwpCisJCXsKKwkJCWZvcmVhY2gobGMsIGVhZ2Vy X2FnZ19yZWwtPnBhcnRpYWxfcGF0aGxpc3QpCisJCQl7CisJCQkJUGF0aAkgICAqcGF0aCA9IChQ YXRoICopIGxmaXJzdChsYyk7CisKKwkJCQkvKiBTaG91bGRuJ3QgaGF2ZSBhbnkgcGFyYW1ldGVy aXplZCBwYXRocyBhbnltb3JlICovCisJCQkJQXNzZXJ0KHBhdGgtPnBhcmFtX2luZm8gPT0gTlVM TCk7CisKKwkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAor CQkJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkgICBw YXRoLAorCQkJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0KTsK KworCQkJCWFkZF9wYXJ0aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCBwYXRoKTsKKwkJ CX0KKwkJfQorCX0KKwogCS8qCiAJICogSWYgdGhlcmUgaXMgYW4gRkRXIHRoYXQncyByZXNwb25z aWJsZSBmb3IgYWxsIGJhc2VyZWxzIG9mIHRoZSBxdWVyeSwKIAkgKiBsZXQgaXQgY29uc2lkZXIg YWRkaW5nIHBhcnRpYWxseSBncm91cGVkIEZvcmVpZ25QYXRocy4KQEAgLTgxMjAsMTMgKzgxOTEs NiBAQCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9v dCwKIAogCQlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9y ZWwsCiAJCQkJCQkJCXBhcnRpYWxseV9ncm91cGVkX2xpdmVfY2hpbGRyZW4pOwotCi0JCS8qCi0J CSAqIFdlIG5lZWQgY2FsbCBzZXRfY2hlYXBlc3QsIHNpbmNlIHRoZSBmaW5hbGl6YXRpb24gc3Rl cCB3aWxsIHVzZSB0aGUKLQkJICogY2hlYXBlc3QgcGF0aCBmcm9tIHRoZSByZWwuCi0JCSAqLwot CQlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRobGlzdCkKLQkJCXNldF9jaGVhcGVzdChw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCX0KIAogCS8qIElmIHBvc3NpYmxlLCBjcmVhdGUgYXBw ZW5kIHBhdGhzIGZvciBmdWxseSBncm91cGVkIGNoaWxkcmVuLiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvYXBwZW5kaW5mby5jCmluZGV4IDViM2RjMGQ4NjUzLi42OWI4YjBjMmFlMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAtNTE2LDYgKzUxNiw1NyBA QCBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJcmV0dXJuIChO b2RlICopIG5ld2luZm87CiAJfQogCisJLyoKKwkgKiBXZSBoYXZlIHRvIHByb2Nlc3MgUmVsQWdn SW5mbyBub2RlcyBzcGVjaWFsbHkuCisJICovCisJaWYgKElzQShub2RlLCBSZWxBZ2dJbmZvKSkK Kwl7CisJCVJlbEFnZ0luZm8gKm9sZGluZm8gPSAoUmVsQWdnSW5mbyAqKSBub2RlOworCQlSZWxB Z2dJbmZvICpuZXdpbmZvID0gbWFrZU5vZGUoUmVsQWdnSW5mbyk7CisKKwkJbmV3aW5mby0+dGFy Z2V0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigo Tm9kZSAqKSBvbGRpbmZvLT50YXJnZXQsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3 aW5mby0+YWdnX2lucHV0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0 cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5hZ2dfaW5wdXQsCisJCQkJCQkJCQkJICAgY29u dGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBfY2xhdXNlcyA9IG9sZGluZm8tPmdyb3VwX2NsYXVz ZXM7CisKKwkJbmV3aW5mby0+Z3JvdXBfZXhwcnMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVu ZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9sZGluZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJ CQkJCSAgIGNvbnRleHQpOworCisJCXJldHVybiAoTm9kZSAqKSBuZXdpbmZvOworCX0KKworCS8q CisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFBhdGhUYXJnZXQgbm9kZXMgc3BlY2lhbGx5LgorCSAq LworCWlmIChJc0Eobm9kZSwgUGF0aFRhcmdldCkpCisJeworCQlQYXRoVGFyZ2V0ICpvbGR0YXJn ZXQgPSAoUGF0aFRhcmdldCAqKSBub2RlOworCQlQYXRoVGFyZ2V0ICpuZXd0YXJnZXQgPSBtYWtl Tm9kZShQYXRoVGFyZ2V0KTsKKworCQkvKiBDb3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAq LworCQltZW1jcHkobmV3dGFyZ2V0LCBvbGR0YXJnZXQsIHNpemVvZihQYXRoVGFyZ2V0KSk7CisK KwkJbmV3dGFyZ2V0LT5leHBycyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X211dGF0b3IoKE5vZGUgKikgb2xkdGFyZ2V0LT5leHBycywKKwkJCQkJCQkJCQkgICBjb250ZXh0 KTsKKworCQlpZiAob2xkdGFyZ2V0LT5zb3J0Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCQluYnl0 ZXMgPSBsaXN0X2xlbmd0aChvbGR0YXJnZXQtPmV4cHJzKSAqIHNpemVvZihJbmRleCk7CisKKwkJ CW5ld3RhcmdldC0+c29ydGdyb3VwcmVmcyA9IChJbmRleCAqKSBwYWxsb2MobmJ5dGVzKTsKKwkJ CW1lbWNweShuZXd0YXJnZXQtPnNvcnRncm91cHJlZnMsIG9sZHRhcmdldC0+c29ydGdyb3VwcmVm cywgbmJ5dGVzKTsKKwkJfQorCisJCXJldHVybiAoTm9kZSAqKSBuZXd0YXJnZXQ7CisJfQorCiAJ LyoKIAkgKiBOT1RFOiB3ZSBkbyBub3QgbmVlZCB0byByZWN1cnNlIGludG8gc3VibGlua3MsIGJl Y2F1c2UgdGhleSBzaG91bGQKIAkgKiBhbHJlYWR5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gc3Vi cGxhbnMgYmVmb3JlIHdlIHNlZSB0aGVtLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5j CmluZGV4IDBlNTIzZDJlYjViLi5lNWJhYjU5ZmJiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3JlbG5vZGUuYwpAQCAtMTYsNiArMTYsOCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNp bmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50 LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL2FwcGVuZGluZm8uaCIKQEAgLTI3LDEyICsyOSwxNiBAQAog I2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhv bGRlci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCisjaW5jbHVkZSAib3B0aW1p emVyL3BsYW5uZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3RsaXN0LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jl d3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0 aWxzL3R5cGNhY2hlLmgiCiAKIAogdHlwZWRlZiBzdHJ1Y3QgSm9pbkhhc2hFbnRyeQpAQCAtODMs NiArODksMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxhbm5l ckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpjaGlsZHJlbCwKIAkJCQkJCQkJ CSAgIGludCBuYXBwaW5mb3MsCiAJCQkJCQkJCQkgICBBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3Mp Oworc3RhdGljIGJvb2wgZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9uKFBs YW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMg Ym9vbCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKKwkJCQkJCQkJICBQYXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19pbnB1 dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3JvdXBfY2xhdXNlcywgTGlzdCAqKmdyb3VwX2V4cHJzKTsK K3N0YXRpYyBib29sIGlzX3Zhcl9pbl9hZ2dyZWZfb25seShQbGFubmVySW5mbyAqcm9vdCwgVmFy ICp2YXIpOworc3RhdGljIGJvb2wgaXNfdmFyX25lZWRlZF9ieV9qb2luKFBsYW5uZXJJbmZvICpy b290LCBWYXIgKnZhciwgUmVsT3B0SW5mbyAqcmVsKTsKK3N0YXRpYyBJbmRleCBnZXRfZXhwcmVz c2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpOwogCiAKIC8q CkBAIC0yNzgsNiArMjkyLDggQEAgYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwg aW50IHJlbGlkLCBSZWxPcHRJbmZvICpwYXJlbnQpCiAJcmVsLT5qb2luaW5mbyA9IE5JTDsKIAly ZWwtPmhhc19lY2xhc3Nfam9pbnMgPSBmYWxzZTsKIAlyZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndp c2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdodCBnZXQgY2hhbmdlZCBsYXRlciAqLworCXJlbC0+YWdn X2luZm8gPSBOVUxMOworCXJlbC0+Z3JvdXBlZF9yZWwgPSBOVUxMOwogCXJlbC0+cGFydF9zY2hl bWUgPSBOVUxMOwogCXJlbC0+bnBhcnRzID0gLTE7CiAJcmVsLT5ib3VuZGluZm8gPSBOVUxMOwpA QCAtNDA4LDYgKzQyNCwxMDMgQEAgYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwg aW50IHJlbGlkLCBSZWxPcHRJbmZvICpwYXJlbnQpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAq IGJ1aWxkX3NpbXBsZV9ncm91cGVkX3JlbAorICoJICBDb25zdHJ1Y3QgYSBuZXcgUmVsT3B0SW5m byByZXByZXNlbnRpbmcgYSBncm91cGVkIHZlcnNpb24gb2YgdGhlIGlucHV0CisgKgkgIGJhc2Ug cmVsYXRpb24uCisgKi8KK1JlbE9wdEluZm8gKgorYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBl ZF9yZWw7CisJUmVsQWdnSW5mbyAqYWdnX2luZm87CisKKwkvKgorCSAqIFdlIHNob3VsZCBoYXZl IGF2YWlsYWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nCisJICogZXhwcmVz c2lvbnMsIG90aGVyd2lzZSB3ZSBjYW5ub3QgcmVhY2ggaGVyZS4KKwkgKi8KKwlBc3NlcnQocm9v dC0+YWdnX2NsYXVzZV9saXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlz dCAhPSBOSUwpOworCisJLyogbm90aGluZyB0byBkbyBmb3IgZHVtbXkgcmVsICovCisJaWYgKElT X0RVTU1ZX1JFTChyZWwpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogUHJlcGFyZSB0aGUg aW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0aGlzIGJhc2UK KwkgKiByZWxhdGlvbi4KKwkgKi8KKwlhZ2dfaW5mbyA9IGNyZWF0ZV9yZWxfYWdnX2luZm8ocm9v dCwgcmVsLCB0cnVlKTsKKwlpZiAoYWdnX2luZm8gPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisK KwkvKgorCSAqIElmIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBiYXNlIHJlbGF0aW9uIGFy ZSBub3QgY29uc2lkZXJlZCB1c2VmdWwsCisJICogc2tpcCBidWlsZGluZyB0aGUgZ3JvdXBlZCBy ZWxhdGlvbi4KKwkgKi8KKwlpZiAoIWFnZ19pbmZvLT5hZ2dfdXNlZnVsKQorCQlyZXR1cm4gTlVM TDsKKworCS8qIFRyYWNrcyB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgYXQgd2hpY2ggcGFydGlhbCBh Z2dyZWdhdGlvbiBpcyBhcHBsaWVkICovCisJYWdnX2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHko cmVsLT5yZWxpZHMpOworCisJLyogYnVpbGQgdGhlIGdyb3VwZWQgcmVsYXRpb24gKi8KKwlncm91 cGVkX3JlbCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIHJlbCk7CisJZ3JvdXBlZF9yZWwtPnJl bHRhcmdldCA9IGFnZ19pbmZvLT50YXJnZXQ7CisJZ3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5m by0+Z3JvdXBlZF9yb3dzOworCWdyb3VwZWRfcmVsLT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCisJ cmVsLT5ncm91cGVkX3JlbCA9IGdyb3VwZWRfcmVsOworCisJcmV0dXJuIGdyb3VwZWRfcmVsOwor fQorCisvKgorICogYnVpbGRfZ3JvdXBlZF9yZWwKKyAqCSAgQnVpbGQgYSBncm91cGVkIHJlbGF0 aW9uIGJ5IGZsYXQgY29weWluZyB0aGUgaW5wdXQgcmVsYXRpb24gYW5kIHJlc2V0dGluZworICoJ ICB0aGUgbmVjZXNzYXJ5IGZpZWxkcy4KKyAqLworUmVsT3B0SW5mbyAqCitidWlsZF9ncm91cGVk X3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCVJlbE9wdEluZm8g Kmdyb3VwZWRfcmVsOworCisJZ3JvdXBlZF9yZWwgPSBtYWtlTm9kZShSZWxPcHRJbmZvKTsKKwlt ZW1jcHkoZ3JvdXBlZF9yZWwsIHJlbCwgc2l6ZW9mKFJlbE9wdEluZm8pKTsKKworCS8qCisJICog Y2xlYXIgcGF0aCBpbmZvCisJICovCisJZ3JvdXBlZF9yZWwtPnBhdGhsaXN0ID0gTklMOworCWdy b3VwZWRfcmVsLT5wcGlsaXN0ID0gTklMOworCWdyb3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0 ID0gTklMOworCWdyb3VwZWRfcmVsLT5jaGVhcGVzdF9zdGFydHVwX3BhdGggPSBOVUxMOworCWdy b3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoID0gTlVMTDsKKwlncm91cGVkX3JlbC0+Y2hl YXBlc3RfcGFyYW1ldGVyaXplZF9wYXRocyA9IE5JTDsKKworCS8qCisJICogY2xlYXIgcGFydGl0 aW9uIGluZm8KKwkgKi8KKwlncm91cGVkX3JlbC0+cGFydF9zY2hlbWUgPSBOVUxMOworCWdyb3Vw ZWRfcmVsLT5ucGFydHMgPSAtMTsKKwlncm91cGVkX3JlbC0+Ym91bmRpbmZvID0gTlVMTDsKKwln cm91cGVkX3JlbC0+cGFydGJvdW5kc19tZXJnZWQgPSBmYWxzZTsKKwlncm91cGVkX3JlbC0+cGFy dGl0aW9uX3F1YWwgPSBOSUw7CisJZ3JvdXBlZF9yZWwtPnBhcnRfcmVscyA9IE5VTEw7CisJZ3Jv dXBlZF9yZWwtPmxpdmVfcGFydHMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5hbGxfcGFydHJlbHMg PSBOVUxMOworCWdyb3VwZWRfcmVsLT5wYXJ0ZXhwcnMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5u dWxsYWJsZV9wYXJ0ZXhwcnMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5jb25zaWRlcl9wYXJ0aXRp b253aXNlX2pvaW4gPSBmYWxzZTsKKworCS8qCisJICogY2xlYXIgc2l6ZSBlc3RpbWF0ZXMKKwkg Ki8KKwlncm91cGVkX3JlbC0+cm93cyA9IDA7CisKKwlyZXR1cm4gZ3JvdXBlZF9yZWw7Cit9CisK IC8qCiAgKiBmaW5kX2Jhc2VfcmVsCiAgKgkgIEZpbmQgYSBiYXNlIG9yIG90aGVycmVsIHJlbGF0 aW9uIGVudHJ5LCB3aGljaCBtdXN0IGFscmVhZHkgZXhpc3QuCkBAIC03NTksNiArODcyLDggQEAg YnVpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJam9pbnJlbC0+am9pbmluZm8gPSBO SUw7CiAJam9pbnJlbC0+aGFzX2VjbGFzc19qb2lucyA9IGZhbHNlOwogCWpvaW5yZWwtPmNvbnNp ZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdodCBnZXQgY2hhbmdlZCBsYXRl ciAqLworCWpvaW5yZWwtPmFnZ19pbmZvID0gTlVMTDsKKwlqb2lucmVsLT5ncm91cGVkX3JlbCA9 IE5VTEw7CiAJam9pbnJlbC0+cGFyZW50ID0gTlVMTDsKIAlqb2lucmVsLT50b3BfcGFyZW50ID0g TlVMTDsKIAlqb2lucmVsLT50b3BfcGFyZW50X3JlbGlkcyA9IE5VTEw7CkBAIC05NDUsNiArMTA2 MCw4IEBAIGJ1aWxkX2NoaWxkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpvdXRlcl9yZWwsCiAJam9pbnJlbC0+am9pbmluZm8gPSBOSUw7CiAJam9pbnJlbC0+aGFzX2Vj bGFzc19qb2lucyA9IGZhbHNlOwogCWpvaW5yZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9p biA9IGZhbHNlOwkvKiBtaWdodCBnZXQgY2hhbmdlZCBsYXRlciAqLworCWpvaW5yZWwtPmFnZ19p bmZvID0gTlVMTDsKKwlqb2lucmVsLT5ncm91cGVkX3JlbCA9IE5VTEw7CiAJam9pbnJlbC0+cGFy ZW50ID0gcGFyZW50X2pvaW5yZWw7CiAJam9pbnJlbC0+dG9wX3BhcmVudCA9IHBhcmVudF9qb2lu cmVsLT50b3BfcGFyZW50ID8gcGFyZW50X2pvaW5yZWwtPnRvcF9wYXJlbnQgOiBwYXJlbnRfam9p bnJlbDsKIAlqb2lucmVsLT50b3BfcGFyZW50X3JlbGlkcyA9IGpvaW5yZWwtPnRvcF9wYXJlbnQt PnJlbGlkczsKQEAgLTI1MjMsMyArMjY0MCw1MzYgQEAgYnVpbGRfY2hpbGRfam9pbl9yZWx0YXJn ZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJY2hpbGRyZWwtPnJlbHRhcmdldC0+Y29zdC5wZXJfdHVw bGUgPSBwYXJlbnRyZWwtPnJlbHRhcmdldC0+Y29zdC5wZXJfdHVwbGU7CiAJY2hpbGRyZWwtPnJl bHRhcmdldC0+d2lkdGggPSBwYXJlbnRyZWwtPnJlbHRhcmdldC0+d2lkdGg7CiB9CisKKy8qCisg KiBjcmVhdGVfcmVsX2FnZ19pbmZvCisgKgkgIENyZWF0ZSB0aGUgUmVsQWdnSW5mbyBzdHJ1Y3R1 cmUgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBpZiBpdCBjYW4gcHJvZHVjZQorICoJICBncm91cGVk IHBhdGhzLiAgVGhlIGdpdmVuIHJlbGF0aW9uIGlzIHRoZSBub24tZ3JvdXBlZCBvbmUgd2hpY2gg aGFzIHRoZQorICoJICByZWx0YXJnZXQgYWxyZWFkeSBjb25zdHJ1Y3RlZC4KKyAqCisgKiBjYWxj dWxhdGVfZ3JvdXBlZF9yb3dzOiBpZiB0cnVlLCBjYWxjdWxhdGUgdGhlIGVzdGltYXRlZCBudW1i ZXIgb2YgZ3JvdXBlZAorICogcm93cyBmb3IgdGhlIHJlbGF0aW9uLiAgSWYgZmFsc2UsIHNraXAg dGhlIGVzdGltYXRpb24gdG8gYXZvaWQgdW5uZWNlc3NhcnkKKyAqIHBsYW5uaW5nIG92ZXJoZWFk LgorICovCitSZWxBZ2dJbmZvICoKK2NyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJYm9vbCBjYWxjdWxhdGVfZ3JvdXBlZF9yb3dzKQor eworCUxpc3RDZWxsICAgKmxjOworCVJlbEFnZ0luZm8gKnJlc3VsdDsKKwlQYXRoVGFyZ2V0ICph Z2dfaW5wdXQ7CisJUGF0aFRhcmdldCAqdGFyZ2V0OworCUxpc3QJICAgKmdyb3VwX2NsYXVzZXMg PSBOSUw7CisJTGlzdAkgICAqZ3JvdXBfZXhwcnMgPSBOSUw7CisKKwkvKgorCSAqIFRoZSBsaXN0 cyBvZiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25zIHNob3Vs ZCBoYXZlCisJICogYmVlbiBjb25zdHJ1Y3RlZC4KKwkgKi8KKwlBc3NlcnQocm9vdC0+YWdnX2Ns YXVzZV9saXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCAhPSBOSUwp OworCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgY2hpbGQgcmVsLCB0aGUgZ3JvdXBlZCByZWwgZm9y IGl0cyBwYXJlbnQgcmVsIG11c3QgaGF2ZQorCSAqIGJlZW4gY3JlYXRlZCBpZiBpdCBjYW4uICBT byB3ZSBjYW4ganVzdCB1c2UgcGFyZW50J3MgUmVsQWdnSW5mbyBpZgorCSAqIHRoZXJlIGlzIG9u ZSwgd2l0aCBhcHByb3ByaWF0ZSB2YXJpYWJsZSBzdWJzdGl0dXRpb25zLgorCSAqLworCWlmIChJ U19PVEhFUl9SRUwocmVsKSkKKwl7CisJCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsOworCQlSZWxB Z2dJbmZvICphZ2dfaW5mbzsKKworCQlncm91cGVkX3JlbCA9IHJlbC0+dG9wX3BhcmVudC0+Z3Jv dXBlZF9yZWw7CisJCWlmIChncm91cGVkX3JlbCA9PSBOVUxMKQorCQkJcmV0dXJuIE5VTEw7CisK KwkJQXNzZXJ0KElTX0dST1VQRURfUkVMKGdyb3VwZWRfcmVsKSk7CisKKwkJLyogTXVzdCBkbyBt dWx0aS1sZXZlbCB0cmFuc2Zvcm1hdGlvbiAqLworCQlhZ2dfaW5mbyA9IChSZWxBZ2dJbmZvICop CisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKKwkJCQkJCQkJCQkJ ICAoTm9kZSAqKSBncm91cGVkX3JlbC0+YWdnX2luZm8sCisJCQkJCQkJCQkJCSAgcmVsLAorCQkJ CQkJCQkJCQkgIHJlbC0+dG9wX3BhcmVudCk7CisKKwkJYWdnX2luZm8tPmFwcGx5X2F0ID0gTlVM TDsJLyogY2FsbGVyIHdpbGwgY2hhbmdlIHRoaXMgbGF0ZXIgKi8KKworCQlpZiAoY2FsY3VsYXRl X2dyb3VwZWRfcm93cykKKwkJeworCQkJYWdnX2luZm8tPmdyb3VwZWRfcm93cyA9CisJCQkJZXN0 aW1hdGVfbnVtX2dyb3Vwcyhyb290LCBhZ2dfaW5mby0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCQly ZWwtPnJvd3MsIE5VTEwsIE5VTEwpOworCisJCQkvKgorCQkJICogVGhlIGdyb3VwZWQgcGF0aHMg Zm9yIHRoZSBnaXZlbiByZWxhdGlvbiBhcmUgY29uc2lkZXJlZCB1c2VmdWwKKwkJCSAqIGlmZiB0 aGUgYXZlcmFnZSBncm91cCBzaXplIGlzIG5vIGxlc3MgdGhhbgorCQkJICogbWluX2VhZ2VyX2Fn Z19ncm91cF9zaXplLgorCQkJICovCisJCQlhZ2dfaW5mby0+YWdnX3VzZWZ1bCA9CisJCQkJKHJl bC0+cm93cyAvIGFnZ19pbmZvLT5ncm91cGVkX3Jvd3MpID49IG1pbl9lYWdlcl9hZ2dfZ3JvdXBf c2l6ZTsKKwkJfQorCisJCXJldHVybiBhZ2dfaW5mbzsKKwl9CisKKwkvKiBDaGVjayBpZiBpdCdz IHBvc3NpYmxlIHRvIHByb2R1Y2UgZ3JvdXBlZCBwYXRocyBmb3IgdGhpcyByZWxhdGlvbi4gKi8K KwlpZiAoIWVhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihyb290LCByZWwp KQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogQ3JlYXRlIHRhcmdldHMgZm9yIHRoZSBncm91 cGVkIHBhdGhzIGFuZCBmb3IgdGhlIGlucHV0IHBhdGhzIG9mIHRoZQorCSAqIGdyb3VwZWQgcGF0 aHMuCisJICovCisJdGFyZ2V0ID0gY3JlYXRlX2VtcHR5X3BhdGh0YXJnZXQoKTsKKwlhZ2dfaW5w dXQgPSBjcmVhdGVfZW1wdHlfcGF0aHRhcmdldCgpOworCisJLyogLi4uIGFuZCBpbml0aWFsaXpl IHRoZXNlIHRhcmdldHMgKi8KKwlpZiAoIWluaXRfZ3JvdXBpbmdfdGFyZ2V0cyhyb290LCByZWws IHRhcmdldCwgYWdnX2lucHV0LAorCQkJCQkJCSAgICZncm91cF9jbGF1c2VzLCAmZ3JvdXBfZXhw cnMpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRWFnZXIgYWdncmVnYXRpb24gaXMgbm90 IGFwcGxpY2FibGUgaWYgdGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBncm91cGluZworCSAqIGV4cHJl c3Npb25zLgorCSAqLworCWlmIChsaXN0X2xlbmd0aChncm91cF9jbGF1c2VzKSA9PSAwKQorCQly ZXR1cm4gTlVMTDsKKworCS8qIEFkZCBhZ2dyZWdhdGVzIHRvIHRoZSBncm91cGluZyB0YXJnZXQg Ki8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJeworCQlBZ2dDbGF1c2VJ bmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOworCQlBZ2dyZWYJ ICAgKmFnZ3JlZjsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisK KwkJYWdncmVmID0gKEFnZ3JlZiAqKSBjb3B5T2JqZWN0KGFjX2luZm8tPmFnZ3JlZik7CisJCW1h cmtfcGFydGlhbF9hZ2dyZWYoYWdncmVmLCBBR0dTUExJVF9JTklUSUFMX1NFUklBTCk7CisKKwkJ YWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwgKEV4cHIgKikgYWdncmVmLCAwKTsKKwl9 CisKKwkvKiBTZXQgdGhlIGVzdGltYXRlZCBldmFsIGNvc3QgYW5kIG91dHB1dCB3aWR0aCBmb3Ig Ym90aCB0YXJnZXRzICovCisJc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCB0YXJnZXQp OworCXNldF9wYXRodGFyZ2V0X2Nvc3Rfd2lkdGgocm9vdCwgYWdnX2lucHV0KTsKKworCS8qIGJ1 aWxkIHRoZSBSZWxBZ2dJbmZvIHJlc3VsdCAqLworCXJlc3VsdCA9IG1ha2VOb2RlKFJlbEFnZ0lu Zm8pOworCXJlc3VsdC0+dGFyZ2V0ID0gdGFyZ2V0OworCXJlc3VsdC0+YWdnX2lucHV0ID0gYWdn X2lucHV0OworCXJlc3VsdC0+Z3JvdXBfY2xhdXNlcyA9IGdyb3VwX2NsYXVzZXM7CisJcmVzdWx0 LT5ncm91cF9leHBycyA9IGdyb3VwX2V4cHJzOworCXJlc3VsdC0+YXBwbHlfYXQgPSBOVUxMOwkv KiBjYWxsZXIgd2lsbCBjaGFuZ2UgdGhpcyBsYXRlciAqLworCisJaWYgKGNhbGN1bGF0ZV9ncm91 cGVkX3Jvd3MpCisJeworCQlyZXN1bHQtPmdyb3VwZWRfcm93cyA9IGVzdGltYXRlX251bV9ncm91 cHMocm9vdCwgcmVzdWx0LT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkJCSAgIHJlbC0+cm93cywg TlVMTCwgTlVMTCk7CisKKwkJLyoKKwkJICogVGhlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZl biByZWxhdGlvbiBhcmUgY29uc2lkZXJlZCB1c2VmdWwgaWZmCisJCSAqIHRoZSBhdmVyYWdlIGdy b3VwIHNpemUgaXMgbm8gbGVzcyB0aGFuIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZS4KKwkJICov CisJCXJlc3VsdC0+YWdnX3VzZWZ1bCA9CisJCQkocmVsLT5yb3dzIC8gcmVzdWx0LT5ncm91cGVk X3Jvd3MpID49IG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCisvKgorICogZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9uCisg KiAJICBDaGVjayBpZiBpdCdzIHBvc3NpYmxlIHRvIHByb2R1Y2UgZ3JvdXBlZCBwYXRocyBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgorICovCitzdGF0aWMgYm9vbAorZWFnZXJfYWdncmVnYXRpb25f cG9zc2libGVfZm9yX3JlbGF0aW9uKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwp Cit7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJY3VyX3JlbGlkOworCisJLyoKKwkgKiBDaGVj ayB0byBzZWUgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGlzIGluIHRoZSBudWxsYWJsZSBzaWRlIG9m IGFuIG91dGVyCisJICogam9pbi4gIEluIHRoaXMgY2FzZSwgd2UgY2Fubm90IHB1c2ggYSBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gdGhlCisJICogcmVsYXRpb24sIGJlY2F1c2UgdGhlIE5V TEwtZXh0ZW5kZWQgcm93cyBwcm9kdWNlZCBieSB0aGUgb3V0ZXIgam9pbgorCSAqIHdvdWxkIG5v dCBiZSBhdmFpbGFibGUgd2hlbiB3ZSBwZXJmb3JtIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCB3 aGlsZQorCSAqIHdpdGggYSBub24tZWFnZXItYWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dzIGFy ZSBhdmFpbGFibGUgZm9yIHRoZQorCSAqIHRvcC1sZXZlbCBhZ2dyZWdhdGlvbi4gIERvaW5nIHNv IG1heSByZXN1bHQgaW4gdGhlIHJvd3MgYmVpbmcgZ3JvdXBlZAorCSAqIGRpZmZlcmVudGx5IHRo YW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0IHZhbHVlcyBmcm9tIHRoZQorCSAqIGFn Z3JlZ2F0ZSBmdW5jdGlvbnMuCisJICovCisJY3VyX3JlbGlkID0gLTE7CisJd2hpbGUgKChjdXJf cmVsaWQgPSBibXNfbmV4dF9tZW1iZXIocmVsLT5yZWxpZHMsIGN1cl9yZWxpZCkpID49IDApCisJ eworCQlSZWxPcHRJbmZvICpiYXNlcmVsID0gZmluZF9iYXNlX3JlbF9pZ25vcmVfam9pbihyb290 LCBjdXJfcmVsaWQpOworCisJCWlmIChiYXNlcmVsID09IE5VTEwpCisJCQljb250aW51ZTsJCQkv KiBpZ25vcmUgb3V0ZXIgam9pbnMgaW4gcmVsLT5yZWxpZHMgKi8KKworCQlpZiAoIWJtc19pc19z dWJzZXQoYmFzZXJlbC0+bnVsbGluZ19yZWxpZHMsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBm YWxzZTsKKwl9CisKKwkvKgorCSAqIEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgUGxh Y2VIb2xkZXJWYXJzLgorCSAqLworCWZvcmVhY2gobGMsIHJlbC0+cmVsdGFyZ2V0LT5leHBycykK Kwl7CisJCUV4cHIJICAgKmV4cHIgPSBsZmlyc3QobGMpOworCisJCWlmIChJc0EoZXhwciwgUGxh Y2VIb2xkZXJWYXIpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENhbGxlciBzaG91bGQg b25seSBwYXNzIGJhc2UgcmVsYXRpb25zIG9yIGpvaW5zLiAqLworCUFzc2VydChyZWwtPnJlbG9w dGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwKKwkJICAgcmVsLT5yZWxvcHRraW5kID09IFJFTE9Q VF9KT0lOUkVMKTsKKworCS8qCisJICogQ2hlY2sgaWYgYWxsIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBjYW4gYmUgZXZhbHVhdGVkIG9uIHRoaXMgcmVsYXRpb24KKwkgKiBsZXZlbC4KKwkgKi8KKwlm b3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJeworCQlBZ2dDbGF1c2VJbmZvICph Y19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOworCisJCUFzc2VydChJc0Eo YWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQkvKgorCQkgKiBHaXZlIHVwIGlmIGFueSBh Z2dyZWdhdGUgcmVxdWlyZXMgcmVsYXRpb25zIG90aGVyIHRoYW4gdGhlIGN1cnJlbnQKKwkJICog b25lLiAgSWYgdGhlIGFnZ3JlZ2F0ZSByZXF1aXJlcyB0aGUgY3VycmVudCByZWxhdGlvbiBwbHVz CisJCSAqIGFkZGl0aW9uYWwgcmVsYXRpb25zLCBncm91cGluZyB0aGUgY3VycmVudCByZWxhdGlv biBjb3VsZCBtYWtlIHNvbWUKKwkJICogaW5wdXQgcm93cyB1bmF2YWlsYWJsZSBmb3IgdGhlIGhp Z2hlciBhZ2dyZWdhdGUgYW5kIG1heSByZWR1Y2UgdGhlCisJCSAqIG51bWJlciBvZiBpbnB1dCBy b3dzIGl0IHJlY2VpdmVzLiAgSWYgdGhlIGFnZ3JlZ2F0ZSBkb2VzIG5vdAorCQkgKiByZXF1aXJl IHRoZSBjdXJyZW50IHJlbGF0aW9uIGF0IGFsbCwgaXQgc2hvdWxkIG5vdCBiZSBncm91cGVkLCBh cworCQkgKiB3ZSBkbyBub3Qgc3VwcG9ydCBqb2luaW5nIHR3byBncm91cGVkIHJlbGF0aW9ucy4K KwkJICovCisJCWlmICghYm1zX2lzX3N1YnNldChhY19pbmZvLT5hZ2dfZXZhbF9hdCwgcmVsLT5y ZWxpZHMpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgor ICogaW5pdF9ncm91cGluZ190YXJnZXRzCisgKgkgIEluaXRpYWxpemUgdGhlIHRhcmdldCBmb3Ig Z3JvdXBlZCBwYXRocyAodGFyZ2V0KSBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQKKyAqCSAgZm9yIHBh dGhzIHRoYXQgZ2VuZXJhdGUgaW5wdXQgZm9yIHRoZSBncm91cGVkIHBhdGhzIChhZ2dfaW5wdXQp LgorICoKKyAqIFdlIGFsc28gY29uc3RydWN0IHRoZSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZXMg YW5kIHRoZSBsaXN0IG9mIGdyb3VwaW5nCisgKiBleHByZXNzaW9ucyBmb3IgdGhlIHBhcnRpYWwg YWdncmVnYXRpb24sIGFuZCByZXR1cm4gdGhlbSBpbiAqZ3JvdXBfY2xhdXNlCisgKiBhbmQgKmdy b3VwX2V4cHJzLgorICoKKyAqIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXRzIGNvdWxkIGJlIGlu aXRpYWxpemVkLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitpbml0X2dyb3Vw aW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJICBQ YXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19pbnB1dCwKKwkJCQkJICBMaXN0ICoq Z3JvdXBfY2xhdXNlcywgTGlzdCAqKmdyb3VwX2V4cHJzKQoreworCUxpc3RDZWxsICAgKmxjOwor CUxpc3QJICAgKnBvc3NpYmx5X2RlcGVuZGVudCA9IE5JTDsKKwlJbmRleAkJbWF4U29ydEdyb3Vw UmVmOworCisJLyogSWRlbnRpZnkgdGhlIG1heCBzb3J0Z3JvdXByZWYgKi8KKwltYXhTb3J0R3Jv dXBSZWYgPSAwOworCWZvcmVhY2gobGMsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCkKKwl7CisJCUlu ZGV4CQlyZWYgPSAoKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYykpLT5yZXNzb3J0Z3JvdXByZWY7 CisKKwkJaWYgKHJlZiA+IG1heFNvcnRHcm91cFJlZikKKwkJCW1heFNvcnRHcm91cFJlZiA9IHJl ZjsKKwl9CisKKwkvKgorCSAqIEF0IHRoaXMgcG9pbnQsIGFsbCBWYXJzIGZyb20gdGhpcyByZWxh dGlvbiB0aGF0IGFyZSBuZWVkZWQgYnkgdXBwZXIKKwkgKiBqb2lucyBvciBhcmUgcmVxdWlyZWQg aW4gdGhlIGZpbmFsIHRhcmdldGxpc3Qgc2hvdWxkIGFscmVhZHkgYmUgcHJlc2VudAorCSAqIGlu IGl0cyByZWx0YXJnZXQuICBUaGVyZWZvcmUsIHdlIGNhbiBzYWZlbHkgaXRlcmF0ZSBvdmVyIHRo aXMKKwkgKiByZWxhdGlvbidzIHJlbHRhcmdldC0+ZXhwcnMgdG8gY29uc3RydWN0IHRoZSBQYXRo VGFyZ2V0IGFuZCBncm91cGluZworCSAqIGNsYXVzZXMgZm9yIHRoZSBncm91cGVkIHBhdGhzLgor CSAqLworCWZvcmVhY2gobGMsIHJlbC0+cmVsdGFyZ2V0LT5leHBycykKKwl7CisJCUV4cHIJICAg KmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlJbmRleAkJc29ydGdyb3VwcmVmOworCisJ CS8qCisJCSAqIEdpdmVuIHRoYXQgUGxhY2VIb2xkZXJWYXIgY3VycmVudGx5IHByZXZlbnRzIHVz IGZyb20gZG9pbmcgZWFnZXIKKwkJICogYWdncmVnYXRpb24sIHRoZSBzb3VyY2UgdGFyZ2V0IGNh bm5vdCBjb250YWluIGFueXRoaW5nIG1vcmUgY29tcGxleAorCQkgKiB0aGFuIGEgVmFyLgorCQkg Ki8KKwkJQXNzZXJ0KElzQShleHByLCBWYXIpKTsKKworCQkvKgorCQkgKiBHZXQgdGhlIHNvcnRn cm91cHJlZiBvZiB0aGUgZXhwciBpZiBpdCBpcyBmb3VuZCBhbW9uZywgb3IgY2FuIGJlCisJCSAq IGRlZHVjZWQgZnJvbSwgdGhlIG9yaWdpbmFsIGdyb3VwaW5nIGV4cHJlc3Npb25zLgorCQkgKi8K KwkJc29ydGdyb3VwcmVmID0gZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmKHJvb3QsIGV4cHIp OworCQlpZiAoc29ydGdyb3VwcmVmID4gMCkKKwkJeworCQkJU29ydEdyb3VwQ2xhdXNlICpzZ2M7 CisKKwkJCS8qIEZpbmQgdGhlIG1hdGNoaW5nIFNvcnRHcm91cENsYXVzZSAqLworCQkJc2djID0g Z2V0X3NvcnRncm91cHJlZl9jbGF1c2Uoc29ydGdyb3VwcmVmLCByb290LT5wcm9jZXNzZWRfZ3Jv dXBDbGF1c2UpOworCQkJQXNzZXJ0KHNnYy0+dGxlU29ydEdyb3VwUmVmIDw9IG1heFNvcnRHcm91 cFJlZik7CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gaXMgdG8gYmUg dXNlZCBhcyBhIGdyb3VwaW5nIGtleSwgaXQKKwkJCSAqIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRo ZSBncm91cGVkIHBhdGhzIHRoYXQgaGF2ZSBiZWVuIHB1c2hlZAorCQkJICogZG93biB0byB0aGlz IHJlbGF0aW9uIGxldmVsLgorCQkJICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFy Z2V0LCBleHByLCBzb3J0Z3JvdXByZWYpOworCisJCQkvKgorCQkJICogLi4uIGFuZCBpdCBhbHNv IHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBpbnB1dCBwYXRocy4KKwkJCSAqLworCQkJYWRkX2Nv bHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwciwgc29ydGdyb3VwcmVmKTsKKworCQkJ LyoKKwkJCSAqIFJlY29yZCB0aGlzIFNvcnRHcm91cENsYXVzZSBhbmQgZ3JvdXBpbmcgZXhwcmVz c2lvbi4gIE5vdGUgdGhhdAorCQkJICogdGhpcyBTb3J0R3JvdXBDbGF1c2UgbWlnaHQgaGF2ZSBh bHJlYWR5IGJlZW4gcmVjb3JkZWQuCisJCQkgKi8KKwkJCWlmICghbGlzdF9tZW1iZXIoKmdyb3Vw X2NsYXVzZXMsIHNnYykpCisJCQl7CisJCQkJKmdyb3VwX2NsYXVzZXMgPSBsYXBwZW5kKCpncm91 cF9jbGF1c2VzLCBzZ2MpOworCQkJCSpncm91cF9leHBycyA9IGxhcHBlbmQoKmdyb3VwX2V4cHJz LCBleHByKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmIChpc192YXJfbmVlZGVkX2J5X2pvaW4ocm9v dCwgKFZhciAqKSBleHByLCByZWwpKQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24g aXMgbmVlZGVkIGZvciBhbiB1cHBlciBqb2luIGJ1dCBpcyBuZWl0aGVyIGluCisJCQkgKiB0aGUg R1JPVVAgQlkgY2xhdXNlIG5vciBkZXJpdmFibGUgZnJvbSBpdCB1c2luZyBFQyAob3RoZXJ3aXNl LAorCQkJICogaXQgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIHRhcmdl dHMgYWJvdmUpLiAgV2UKKwkJCSAqIG5lZWQgdG8gY3JlYXRlIGEgc3BlY2lhbCBTb3J0R3JvdXBD bGF1c2UgZm9yIHRoaXMgZXhwcmVzc2lvbi4KKwkJCSAqCisJCQkgKiBJdCBpcyBpbXBvcnRhbnQg dG8gaW5jbHVkZSBzdWNoIGV4cHJlc3Npb25zIGluIHRoZSBncm91cGluZworCQkJICoga2V5cy4g IFRoaXMgaXMgZXNzZW50aWFsIHRvIGVuc3VyZSB0aGF0IGFuIGFnZ3JlZ2F0ZWQgcm93IGZyb20K KwkJCSAqIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG1hdGNoZXMgdGhlIG90aGVyIHNpZGUgb2Yg dGhlIGpvaW4gaWYKKwkJCSAqIGFuZCBvbmx5IGlmIGVhY2ggcm93IGluIHRoZSBwYXJ0aWFsIGdy b3VwIGRvZXMuICBUaGlzIGVuc3VyZXMKKwkJCSAqIHRoYXQgYWxsIHJvd3Mgd2l0aGluIHRoZSBz YW1lIHBhcnRpYWwgZ3JvdXAgc2hhcmUgdGhlIHNhbWUKKwkJCSAqICdkZXN0aW55Jywgd2hpY2gg aXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgY29ycmVjdG5lc3MuCisJCQkgKi8KKwkJCVNvcnRH cm91cENsYXVzZSAqc2djOworCQkJVHlwZUNhY2hlRW50cnkgKnRjZTsKKwkJCU9pZAkJCWVxdWFs aW1hZ2Vwcm9jOworCisJCQkvKgorCQkJICogQnV0IGZpcnN0LCBjaGVjayBpZiBlcXVhbGl0eSBp bXBsaWVzIGltYWdlIGVxdWFsaXR5IGZvciB0aGlzCisJCQkgKiBleHByZXNzaW9uLiAgSWYgbm90 LCB3ZSBjYW5ub3QgdXNlIGl0IGFzIGEgZ3JvdXBpbmcga2V5LiAgU2VlCisJCQkgKiBjb21tZW50 cyBpbiBjcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcygpLgorCQkJICovCisJCQl0Y2UgPSBsb29r dXBfdHlwZV9jYWNoZShleHByVHlwZSgoTm9kZSAqKSBleHByKSwKKwkJCQkJCQkJCVRZUEVDQUNI RV9CVFJFRV9PUEZBTUlMWSk7CisJCQlpZiAoIU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGYpIHx8 CisJCQkJIU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGludHlwZSkpCisJCQkJcmV0dXJuIGZhbHNl OworCisJCQllcXVhbGltYWdlcHJvYyA9IGdldF9vcGZhbWlseV9wcm9jKHRjZS0+YnRyZWVfb3Bm LAorCQkJCQkJCQkJCQkgICB0Y2UtPmJ0cmVlX29waW50eXBlLAorCQkJCQkJCQkJCQkgICB0Y2Ut PmJ0cmVlX29waW50eXBlLAorCQkJCQkJCQkJCQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7CisJCQlp ZiAoIU9pZElzVmFsaWQoZXF1YWxpbWFnZXByb2MpIHx8CisJCQkJIURhdHVtR2V0Qm9vbChPaWRG dW5jdGlvbkNhbGwxQ29sbChlcXVhbGltYWdlcHJvYywKKwkJCQkJCQkJCQkJCSAgIHRjZS0+dHlw Y29sbGF0aW9uLAorCQkJCQkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bSh0Y2UtPmJ0cmVlX29w aW50eXBlKSkpKQorCQkJCXJldHVybiBmYWxzZTsKKworCQkJLyogQ3JlYXRlIHRoZSBTb3J0R3Jv dXBDbGF1c2UuICovCisJCQlzZ2MgPSBtYWtlTm9kZShTb3J0R3JvdXBDbGF1c2UpOworCisJCQkv KiBJbml0aWFsaXplIHRoZSBTb3J0R3JvdXBDbGF1c2UuICovCisJCQlzZ2MtPnRsZVNvcnRHcm91 cFJlZiA9ICsrbWF4U29ydEdyb3VwUmVmOworCQkJZ2V0X3NvcnRfZ3JvdXBfb3BlcmF0b3JzKGV4 cHJUeXBlKChOb2RlICopIGV4cHIpLAorCQkJCQkJCQkJIGZhbHNlLCB0cnVlLCBmYWxzZSwKKwkJ CQkJCQkJCSAmc2djLT5zb3J0b3AsICZzZ2MtPmVxb3AsIE5VTEwsCisJCQkJCQkJCQkgJnNnYy0+ aGFzaGFibGUpOworCisJCQkvKiBUaGlzIGV4cHJlc3Npb24gc2hvdWxkIGJlIGVtaXR0ZWQgYnkg dGhlIGdyb3VwZWQgcGF0aHMgKi8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQs IGV4cHIsIHNnYy0+dGxlU29ydEdyb3VwUmVmKTsKKworCQkJLyogLi4uIGFuZCBpdCBhbHNvIHNo b3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBpbnB1dCBwYXRocy4gKi8KKwkJCWFkZF9jb2x1bW5fdG9f cGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIsIHNnYy0+dGxlU29ydEdyb3VwUmVmKTsKKworCQkJ LyogUmVjb3JkIHRoaXMgU29ydEdyb3VwQ2xhdXNlIGFuZCBncm91cGluZyBleHByZXNzaW9uICov CisJCQkqZ3JvdXBfY2xhdXNlcyA9IGxhcHBlbmQoKmdyb3VwX2NsYXVzZXMsIHNnYyk7CisJCQkq Z3JvdXBfZXhwcnMgPSBsYXBwZW5kKCpncm91cF9leHBycywgZXhwcik7CisJCX0KKwkJZWxzZSBp ZiAoaXNfdmFyX2luX2FnZ3JlZl9vbmx5KHJvb3QsIChWYXIgKikgZXhwcikpCisJCXsKKwkJCS8q CisJCQkgKiBUaGUgZXhwcmVzc2lvbiBpcyByZWZlcmVuY2VkIGJ5IGFuIGFnZ3JlZ2F0ZSBmdW5j dGlvbiBwdXNoZWQKKwkJCSAqIGRvd24gdG8gdGhpcyByZWxhdGlvbiBhbmQgZG9lcyBub3QgYXBw ZWFyIGVsc2V3aGVyZSBpbiB0aGUKKwkJCSAqIHRhcmdldGxpc3Qgb3IgaGF2aW5nUXVhbC4gIEFk ZCBpdCB0byAnYWdnX2lucHV0JyBidXQgbm90IHRvCisJCQkgKiAndGFyZ2V0Jy4KKwkJCSAqLwor CQkJYWRkX25ld19jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIpOworCQl9CisJ CWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHByZXNzaW9uIG1heSBiZSBmdW5jdGlvbmFs bHkgZGVwZW5kZW50IG9uIG90aGVyCisJCQkgKiBleHByZXNzaW9ucyBpbiB0aGUgdGFyZ2V0LCBi dXQgd2UgY2Fubm90IHZlcmlmeSB0aGlzIHVudGlsIGFsbAorCQkJICogdGFyZ2V0IGV4cHJlc3Np b25zIGhhdmUgYmVlbiBjb25zdHJ1Y3RlZC4KKwkJCSAqLworCQkJcG9zc2libHlfZGVwZW5kZW50 ID0gbGFwcGVuZChwb3NzaWJseV9kZXBlbmRlbnQsIGV4cHIpOworCQl9CisJfQorCisJLyoKKwkg KiBOb3cgd2UgY2FuIHZlcmlmeSB3aGV0aGVyIGFuIGV4cHJlc3Npb24gaXMgZnVuY3Rpb25hbGx5 IGRlcGVuZGVudCBvbgorCSAqIG90aGVycy4KKwkgKi8KKwlmb3JlYWNoKGxjLCBwb3NzaWJseV9k ZXBlbmRlbnQpCisJeworCQlWYXIJCSAgICp0dmFyOworCQlMaXN0CSAgICpkZXBzID0gTklMOwor CQlSYW5nZVRibEVudHJ5ICpydGU7CisKKwkJdHZhciA9IGxmaXJzdF9ub2RlKFZhciwgbGMpOwor CQlydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W3R2YXItPnZhcm5vXTsKKworCQlpZiAoY2hl Y2tfZnVuY3Rpb25hbF9ncm91cGluZyhydGUtPnJlbGlkLCB0dmFyLT52YXJubywKKwkJCQkJCQkJ CSAgdHZhci0+dmFybGV2ZWxzdXAsCisJCQkJCQkJCQkgIHRhcmdldC0+ZXhwcnMsICZkZXBzKSkK KwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHByZXNzaW9uIGlzIGZ1bmN0aW9uYWxseSBkZXBlbmRl bnQgb24gb3RoZXIgdGFyZ2V0CisJCQkgKiBleHByZXNzaW9ucywgc28gaXQgY2FuIGJlIGluY2x1 ZGVkIGluIHRoZSB0YXJnZXRzLiAgU2luY2UgaXQKKwkJCSAqIHdpbGwgbm90IGJlIHVzZWQgYXMg YSBncm91cGluZyBrZXksIGEgc29ydGdyb3VwcmVmIGlzIG5vdAorCQkJICogbmVlZGVkIGZvciBp dC4KKwkJCSAqLworCQkJYWRkX25ld19jb2x1bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIChFeHBy ICopIHR2YXIpOworCQkJYWRkX25ld19jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIChF eHByICopIHR2YXIpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFdlIG1heSBhcnJp dmUgaGVyZSB3aXRoIGEgZ3JvdXBpbmcgZXhwcmVzc2lvbiB0aGF0IGlzIHByb3ZlbgorCQkJICog cmVkdW5kYW50IGJ5IEVxdWl2YWxlbmNlQ2xhc3MgcHJvY2Vzc2luZywgc3VjaCBhcyAndDEuYScg aW4gdGhlCisJCQkgKiBxdWVyeSBiZWxvdy4KKwkJCSAqCisJCQkgKiBzZWxlY3QgbWF4KHQxLmMp IGZyb20gdCB0MSwgdCB0MiB3aGVyZSB0MS5hID0gMSBncm91cCBieSB0MS5hLAorCQkJICogdDEu YjsKKwkJCSAqCisJCQkgKiBGb3Igbm93IHdlIGp1c3QgZ2l2ZSB1cCBpbiB0aGlzIGNhc2UuCisJ CQkgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworfQorCisv KgorICogaXNfdmFyX2luX2FnZ3JlZl9vbmx5CisgKgkgIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVu IFZhciBhcHBlYXJzIGluIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgbm90CisgKgkgIGVsc2V3 aGVyZSBpbiB0aGUgdGFyZ2V0bGlzdCBvciBoYXZpbmdRdWFsLgorICovCitzdGF0aWMgYm9vbAor aXNfdmFyX2luX2FnZ3JlZl9vbmx5KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhcikKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKworCS8qCisJICogU2VhcmNoIHRoZSBsaXN0IG9mIGFnZ3JlZ2F0ZSBl eHByZXNzaW9ucyBmb3IgdGhlIFZhci4KKwkgKi8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xh dXNlX2xpc3QpCisJeworCQlBZ2dDbGF1c2VJbmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdn Q2xhdXNlSW5mbywgbGMpOworCQlMaXN0CSAgICp2YXJzOworCisJCUFzc2VydChJc0EoYWNfaW5m by0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQlpZiAoIWJtc19pc19tZW1iZXIodmFyLT52YXJubywg YWNfaW5mby0+YWdnX2V2YWxfYXQpKQorCQkJY29udGludWU7CisKKwkJdmFycyA9IHB1bGxfdmFy X2NsYXVzZSgoTm9kZSAqKSBhY19pbmZvLT5hZ2dyZWYsCisJCQkJCQkJICAgUFZDX1JFQ1VSU0Vf QUdHUkVHQVRFUyB8CisJCQkJCQkJICAgUFZDX1JFQ1VSU0VfV0lORE9XRlVOQ1MgfAorCQkJCQkJ CSAgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyk7CisKKwkJaWYgKGxpc3RfbWVtYmVyKHZhcnMs IHZhcikpCisJCXsKKwkJCWxpc3RfZnJlZSh2YXJzKTsKKwkJCWJyZWFrOworCQl9CisKKwkJbGlz dF9mcmVlKHZhcnMpOworCX0KKworCXJldHVybiAobGMgIT0gTlVMTCAmJiAhbGlzdF9tZW1iZXIo cm9vdC0+dGxpc3RfdmFycywgdmFyKSk7Cit9CisKKy8qCisgKiBpc192YXJfbmVlZGVkX2J5X2pv aW4KKyAqCSAgQ2hlY2sgaWYgdGhlIGdpdmVuIFZhciBpcyBuZWVkZWQgYnkgam9pbnMgYWJvdmUg dGhlIGN1cnJlbnQgcmVsLgorICovCitzdGF0aWMgYm9vbAoraXNfdmFyX25lZWRlZF9ieV9qb2lu KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwgUmVsT3B0SW5mbyAqcmVsKQoreworCVJlbGlk cwkJcmVsaWRzOworCWludAkJCWF0dG5vOworCVJlbE9wdEluZm8gKmJhc2VyZWw7CisKKwkvKgor CSAqIE5vdGUgdGhhdCB3aGVuIGNoZWNraW5nIGlmIHRoZSBWYXIgaXMgbmVlZGVkIGJ5IGpvaW5z IGFib3ZlLCB3ZSB3YW50IHRvCisJICogZXhjbHVkZSBjYXNlcyB3aGVyZSB0aGUgVmFyIGlzIG9u bHkgbmVlZGVkIGluIHRoZSBmaW5hbCB0YXJnZXRsaXN0LiAgU28KKwkgKiBpbmNsdWRlICJyZWxh dGlvbiAwIiBpbiB0aGUgY2hlY2suCisJICovCisJcmVsaWRzID0gYm1zX2NvcHkocmVsLT5yZWxp ZHMpOworCXJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHJlbGlkcywgMCk7CisKKwliYXNlcmVsID0g ZmluZF9iYXNlX3JlbChyb290LCB2YXItPnZhcm5vKTsKKwlhdHRubyA9IHZhci0+dmFyYXR0bm8g LSBiYXNlcmVsLT5taW5fYXR0cjsKKworCXJldHVybiBibXNfbm9uZW1wdHlfZGlmZmVyZW5jZShi YXNlcmVsLT5hdHRyX25lZWRlZFthdHRub10sIHJlbGlkcyk7Cit9CisKKy8qCisgKiBnZXRfZXhw cmVzc2lvbl9zb3J0Z3JvdXByZWYKKyAqCSAgUmV0dXJuIHRoZSBzb3J0Z3JvdXByZWYgb2YgdGhl IGdpdmVuICJleHByIiBpZiBpdCBpcyBmb3VuZCBhbW9uZyB0aGUKKyAqCSAgb3JpZ2luYWwgZ3Jv dXBpbmcgZXhwcmVzc2lvbnMsIG9yIGlzIGtub3duIGVxdWFsIHRvIGFueSBvZiB0aGUgb3JpZ2lu YWwKKyAqCSAgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgZHVlIHRvIGVxdWl2YWxlbmNlIHJlbGF0aW9u c2hpcHMuICBSZXR1cm4gMCBpZiBubworICoJICBtYXRjaCBpcyBmb3VuZC4KKyAqLworc3RhdGlj IEluZGV4CitnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5lckluZm8gKnJvb3QsIEV4 cHIgKmV4cHIpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlBc3NlcnQoSXNBKGV4cHIsIFZhcikp OworCisJZm9yZWFjaChsYywgcm9vdC0+Z3JvdXBfZXhwcl9saXN0KQorCXsKKwkJR3JvdXBpbmdF eHBySW5mbyAqZ2VfaW5mbyA9IGxmaXJzdF9ub2RlKEdyb3VwaW5nRXhwckluZm8sIGxjKTsKKwkJ TGlzdENlbGwgICAqbGMxOworCisJCUFzc2VydChJc0EoZ2VfaW5mby0+ZXhwciwgVmFyKSk7CisJ CUFzc2VydChnZV9pbmZvLT5zb3J0Z3JvdXByZWYgPiAwKTsKKworCQlpZiAoZXF1YWwoZXhwciwg Z2VfaW5mby0+ZXhwcikpCisJCQlyZXR1cm4gZ2VfaW5mby0+c29ydGdyb3VwcmVmOworCisJCWlm IChnZV9pbmZvLT5lYyA9PSBOVUxMIHx8CisJCQkhYm1zX2lzX21lbWJlcigoKFZhciAqKSBleHBy KS0+dmFybm8sIGdlX2luZm8tPmVjLT5lY19yZWxpZHMpKQorCQkJY29udGludWU7CisKKwkJLyoK KwkJICogU2NhbiB0aGUgRXF1aXZhbGVuY2VDbGFzcywgbG9va2luZyBmb3IgYSBtYXRjaCB0byB0 aGUgZ2l2ZW4KKwkJICogZXhwcmVzc2lvbi4gIFdlIGlnbm9yZSBjaGlsZCBtZW1iZXJzIGhlcmUu CisJCSAqLworCQlmb3JlYWNoKGxjMSwgZ2VfaW5mby0+ZWMtPmVjX21lbWJlcnMpCisJCXsKKwkJ CUVxdWl2YWxlbmNlTWVtYmVyICplbSA9IChFcXVpdmFsZW5jZU1lbWJlciAqKSBsZmlyc3QobGMx KTsKKworCQkJLyogQ2hpbGQgbWVtYmVycyBzaG91bGQgbm90IGV4aXN0IGluIGVjX21lbWJlcnMg Ki8KKwkJCUFzc2VydCghZW0tPmVtX2lzX2NoaWxkKTsKKworCQkJaWYgKGVxdWFsKGV4cHIsIGVt LT5lbV9leHByKSkKKwkJCQlyZXR1cm4gZ2VfaW5mby0+c29ydGdyb3VwcmVmOworCQl9CisJfQor CisJLyogbm8gbWF0Y2ggaXMgZm91bmQgKi8KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggNmJjNmJlMTNkMmEuLmIxNzZkNTEzMGU0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTQ1LDYg KzE0NSwxMyBAQAogICBib290X3ZhbCA9PiAnZmFsc2UnLAogfSwKIAoreyBuYW1lID0+ICdlbmFi bGVfZWFnZXJfYWdncmVnYXRlJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VS U0VUJywgZ3JvdXAgPT4gJ1FVRVJZX1RVTklOR19NRVRIT0QnLAorICBzaG9ydF9kZXNjID0+ICdF bmFibGVzIGVhZ2VyIGFnZ3JlZ2F0aW9uLicsCisgIGZsYWdzID0+ICdHVUNfRVhQTEFJTicsCisg IHZhcmlhYmxlID0+ICdlbmFibGVfZWFnZXJfYWdncmVnYXRlJywKKyAgYm9vdF92YWwgPT4gJ3Ry dWUnLAorfSwKKwogeyBuYW1lID0+ICdlbmFibGVfcGFyYWxsZWxfYXBwZW5kJywgdHlwZSA9PiAn Ym9vbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1FVRVJZX1RVTklOR19N RVRIT0QnLAogICBzaG9ydF9kZXNjID0+ICdFbmFibGVzIHRoZSBwbGFubmVyXCdzIHVzZSBvZiBw YXJhbGxlbCBhcHBlbmQgcGxhbnMuJywKICAgZmxhZ3MgPT4gJ0dVQ19FWFBMQUlOJywKQEAgLTI0 MjcsNiArMjQzNCwxNSBAQAogICBtYXggPT4gJ0RCTF9NQVgnLAogfSwKIAoreyBuYW1lID0+ICdt aW5fZWFnZXJfYWdnX2dyb3VwX3NpemUnLCB0eXBlID0+ICdyZWFsJywgY29udGV4dCA9PiAnUEdD X1VTRVJTRVQnLCBncm91cCA9PiAnUVVFUllfVFVOSU5HX0NPU1QnLAorICBzaG9ydF9kZXNjID0+ ICdTZXRzIHRoZSBtaW5pbXVtIGF2ZXJhZ2UgZ3JvdXAgc2l6ZSByZXF1aXJlZCB0byBjb25zaWRl ciBhcHBseWluZyBlYWdlciBhZ2dyZWdhdGlvbi4nLAorICBmbGFncyA9PiAnR1VDX0VYUExBSU4n LAorICB2YXJpYWJsZSA9PiAnbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplJywKKyAgYm9vdF92YWwg PT4gJzguMCcsCisgIG1pbiA9PiAnMC4wJywKKyAgbWF4ID0+ICdEQkxfTUFYJywKK30sCisKIHsg bmFtZSA9PiAnY3Vyc29yX3R1cGxlX2ZyYWN0aW9uJywgdHlwZSA9PiAncmVhbCcsIGNvbnRleHQg PT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1FVRVJZX1RVTklOR19PVEhFUicsCiAgIHNob3J0 X2Rlc2MgPT4gJ1NldHMgdGhlIHBsYW5uZXJcJ3MgZXN0aW1hdGUgb2YgdGhlIGZyYWN0aW9uIG9m IGEgY3Vyc29yXCdzIHJvd3MgdGhhdCB3aWxsIGJlIHJldHJpZXZlZC4nLAogICBmbGFncyA9PiAn R1VDX0VYUExBSU4nLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCmluZGV4IGMzNmZjYjlhYjYxLi5jNWQ2MTJhYjU1MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDI4LDYgKzQyOCw3IEBACiAj ZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmcgPSBvbgogI2VuYWJsZV9kaXN0aW5jdF9yZW9yZGVy aW5nID0gb24KICNlbmFibGVfc2VsZl9qb2luX2VsaW1pbmF0aW9uID0gb24KKyNlbmFibGVfZWFn ZXJfYWdncmVnYXRlID0gb24KIAogIyAtIFBsYW5uZXIgQ29zdCBDb25zdGFudHMgLQogCkBAIC00 NDEsNiArNDQyLDcgQEAKICNtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gOE1CCiAjbWlu X3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDUxMmtCCiAjZWZmZWN0aXZlX2NhY2hlX3NpemUg PSA0R0IKKyNtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemUgPSA4LjAKIAogI2ppdF9hYm92ZV9jb3N0 ID0gMTAwMDAwCQkjIHBlcmZvcm0gSklUIGNvbXBpbGF0aW9uIGlmIGF2YWlsYWJsZQogCQkJCQkj IGFuZCBxdWVyeSBtb3JlIGV4cGVuc2l2ZSB0aGFuIHRoaXM7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmlu ZGV4IGIxMmEyNTA4ZDhjLi4yNzg2ZjhmMGM0ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTM5 MSw2ICszOTEsMTUgQEAgc3RydWN0IFBsYW5uZXJJbmZvCiAJLyogbGlzdCBvZiBQbGFjZUhvbGRl ckluZm9zICovCiAJTGlzdAkgICAqcGxhY2Vob2xkZXJfbGlzdDsKIAorCS8qIGxpc3Qgb2YgQWdn Q2xhdXNlSW5mb3MgKi8KKwlMaXN0CSAgICphZ2dfY2xhdXNlX2xpc3Q7CisKKwkvKiBsaXN0IG9m IEdyb3VwRXhwckluZm9zICovCisJTGlzdAkgICAqZ3JvdXBfZXhwcl9saXN0OworCisJLyogbGlz dCBvZiBwbGFpbiBWYXJzIGNvbnRhaW5lZCBpbiB0YXJnZXRsaXN0IGFuZCBoYXZpbmdRdWFsICov CisJTGlzdAkgICAqdGxpc3RfdmFyczsKKwogCS8qIGFycmF5IG9mIFBsYWNlSG9sZGVySW5mb3Mg aW5kZXhlZCBieSBwaGlkICovCiAJc3RydWN0IFBsYWNlSG9sZGVySW5mbyAqKnBsYWNlaG9sZGVy X2FycmF5IHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSwgYXJyYXlfc2l6ZShwbGFjZWhv bGRlcl9hcnJheV9zaXplKSk7CiAJLyogYWxsb2NhdGVkIHNpemUgb2YgYXJyYXkgKi8KQEAgLTEw NDAsNiArMTA0OSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJLyogY29uc2lkZXIg cGFydGl0aW9ud2lzZSBqb2luIHBhdGhzPyAoaWYgcGFydGl0aW9uZWQgcmVsKSAqLwogCWJvb2wJ CWNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbjsKIAorCS8qCisJICogdXNlZCBieSBlYWdlciBh Z2dyZWdhdGlvbjoKKwkgKi8KKwkvKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGdyb3Vw ZWQgcGF0aHMgKi8KKwlzdHJ1Y3QgUmVsQWdnSW5mbyAqYWdnX2luZm87CisJLyogdGhlIHBhcnRp YWxseS1hZ2dyZWdhdGVkIHZlcnNpb24gb2YgdGhlIHJlbGF0aW9uICovCisJc3RydWN0IFJlbE9w dEluZm8gKmdyb3VwZWRfcmVsOworCiAJLyoKIAkgKiBpbmhlcml0YW5jZSBsaW5rcywgaWYgdGhp cyBpcyBhbiBvdGhlcnJlbCAob3RoZXJ3aXNlIE5VTEwpOgogCSAqLwpAQCAtMTEyNCw2ICsxMTQx LDY3IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAkoKG5vbWluYWxfam9pbnR5cGUpID09 IEpPSU5fSU5ORVIgJiYgKHNqaW5mbyktPmpvaW50eXBlID09IEpPSU5fU0VNSSAmJiBcCiAJIGJt c19lcXVhbCgoc2ppbmZvKS0+c3luX3JpZ2h0aGFuZCwgKHJlbCktPnJlbGlkcykpCiAKKy8qCisg KiBJcyB0aGUgZ2l2ZW4gcmVsYXRpb24gYSBncm91cGVkIHJlbGF0aW9uPworICovCisjZGVmaW5l IElTX0dST1VQRURfUkVMKHJlbCkgXAorCSgocmVsKS0+YWdnX2luZm8gIT0gTlVMTCkKKworLyoK KyAqIFJlbEFnZ0luZm8KKyAqCQlJbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGdyb3VwZWQg cGF0aHMgZm9yIGJhc2UgYW5kIGpvaW4gcmVscy4KKyAqCisgKiAidGFyZ2V0IiBpcyB0aGUgb3V0 cHV0IHRsaXN0IGZvciB0aGUgZ3JvdXBlZCBwYXRocy4KKyAqCisgKiAiYWdnX2lucHV0IiBpcyB0 aGUgb3V0cHV0IHRsaXN0IGZvciB0aGUgcGF0aHMgdGhhdCBwcm92aWRlIGlucHV0IHRvIHRoZQor ICogZ3JvdXBlZCBwYXRocy4gIE9uZSBkaWZmZXJlbmNlIGZyb20gdGhlIHJlbHRhcmdldCBvZiB0 aGUgbm9uLWdyb3VwZWQKKyAqIHJlbGF0aW9uIGlzIHRoYXQgYWdnX2lucHV0IGhhcyBpdHMgc29y dGdyb3VwcmVmc1tdIGluaXRpYWxpemVkLgorICoKKyAqICJncm91cF9jbGF1c2VzIiBhbmQgImdy b3VwX2V4cHJzIiBhcmUgbGlzdHMgb2YgU29ydEdyb3VwQ2xhdXNlcyBhbmQgdGhlCisgKiBjb3Jy ZXNwb25kaW5nIGdyb3VwaW5nIGV4cHJlc3Npb25zLgorICoKKyAqICJhcHBseV9hdCIgdHJhY2tz IHRoZSBsb3dlc3Qgam9pbiBsZXZlbCBhdCB3aGljaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzCisg KiBhcHBsaWVkLgorICoKKyAqICJncm91cGVkX3Jvd3MiIGlzIHRoZSBlc3RpbWF0ZWQgbnVtYmVy IG9mIHJlc3VsdCB0dXBsZXMgb2YgdGhlIGdyb3VwZWQKKyAqIHJlbGF0aW9uLgorICoKKyAqICJh Z2dfdXNlZnVsIiBpcyBhIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZ3JvdXBlZCBwYXRo cyBhcmUgY29uc2lkZXJlZAorICogdXNlZnVsLiAgSXQgaXMgc2V0IHRydWUgaWYgdGhlIGF2ZXJh Z2UgcGFydGlhbCBncm91cCBzaXplIGlzIG5vIGxlc3MgdGhhbgorICogbWluX2VhZ2VyX2FnZ19n cm91cF9zaXplLCBzdWdnZXN0aW5nIGEgc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVjdGlvbi4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgUmVsQWdnSW5mbworeworCXBnX25vZGVfYXR0cihub19jb3B5 X2VxdWFsLCBub19yZWFkLCBub19xdWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBlOworCisJ LyoKKwkgKiBkZWZhdWx0IHJlc3VsdCB0YXJnZXRsaXN0IGZvciBQYXRocyBzY2FubmluZyB0aGlz IGdyb3VwZWQgcmVsYXRpb247CisJICogbGlzdCBvZiBWYXJzL0V4cHJzLCBjb3N0LCB3aWR0aAor CSAqLworCXN0cnVjdCBQYXRoVGFyZ2V0ICp0YXJnZXQ7CisKKwkvKgorCSAqIHRoZSB0YXJnZXRs aXN0IGZvciBQYXRocyB0aGF0IHByb3ZpZGUgaW5wdXQgdG8gdGhlIGdyb3VwZWQgcGF0aHMKKwkg Ki8KKwlzdHJ1Y3QgUGF0aFRhcmdldCAqYWdnX2lucHV0OworCisJLyogYSBsaXN0IG9mIFNvcnRH cm91cENsYXVzZXMgKi8KKwlMaXN0CSAgICpncm91cF9jbGF1c2VzOworCS8qIGEgbGlzdCBvZiBn cm91cGluZyBleHByZXNzaW9ucyAqLworCUxpc3QJICAgKmdyb3VwX2V4cHJzOworCisJLyogbG93 ZXN0IGxldmVsIHBhcnRpYWwgYWdncmVnYXRpb24gaXMgYXBwbGllZCBhdCAqLworCVJlbGlkcwkJ YXBwbHlfYXQ7CisKKwkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KKwlD YXJkaW5hbGl0eSBncm91cGVkX3Jvd3M7CisKKwkvKiB0aGUgZ3JvdXBlZCBwYXRocyBhcmUgY29u c2lkZXJlZCB1c2VmdWw/ICovCisJYm9vbAkJYWdnX3VzZWZ1bDsKK30gUmVsQWdnSW5mbzsKKwog LyoKICAqIEluZGV4T3B0SW5mbwogICoJCVBlci1pbmRleCBpbmZvcm1hdGlvbiBmb3IgcGxhbm5p bmcvb3B0aW1pemF0aW9uCkBAIC0zMjY4LDYgKzMzNDYsNDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTWlu TWF4QWdnSW5mbwogCVBhcmFtCSAgICpwYXJhbTsKIH0gTWluTWF4QWdnSW5mbzsKIAorLyoKKyAq IEZvciBlYWNoIGRpc3RpbmN0IEFnZ3JlZiBub2RlIHRoYXQgYXBwZWFycyBpbiB0aGUgdGFyZ2V0 bGlzdCBhbmQgSEFWSU5HCisgKiBjbGF1c2VzLCB3ZSBzdG9yZSBhbiBBZ2dDbGF1c2VJbmZvIG5v ZGUgaW4gdGhlIFBsYW5uZXJJbmZvIG5vZGUncworICogYWdnX2NsYXVzZV9saXN0LiAgRWFjaCBB Z2dDbGF1c2VJbmZvIHJlY29yZHMgdGhlIHNldCBvZiByZWxhdGlvbnMgcmVmZXJlbmNlZAorICog YnkgdGhlIGFnZ3JlZ2F0ZSBleHByZXNzaW9uLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIHRv IGRldGVybWluZSBob3cgZmFyCisgKiB0aGUgYWdncmVnYXRlIGNhbiBiZSBzYWZlbHkgcHVzaGVk IGRvd24gaW4gdGhlIGpvaW4gdHJlZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQWdnQ2xhdXNlSW5m bworeworCXBnX25vZGVfYXR0cihub19yZWFkLCBub19xdWVyeV9qdW1ibGUpCisKKwlOb2RlVGFn CQl0eXBlOworCisJLyogdGhlIEFnZ3JlZiBleHByICovCisJQWdncmVmCSAgICphZ2dyZWY7CisK KwkvKiBsb3dlc3QgbGV2ZWwgd2UgY2FuIGV2YWx1YXRlIHRoaXMgYWdncmVnYXRlIGF0ICovCisJ UmVsaWRzCQlhZ2dfZXZhbF9hdDsKK30gQWdnQ2xhdXNlSW5mbzsKKworLyoKKyAqIEZvciBlYWNo IGdyb3VwaW5nIGV4cHJlc3Npb24gdGhhdCBhcHBlYXJzIGluIGdyb3VwaW5nIGNsYXVzZXMsIHdl IHN0b3JlIGEKKyAqIEdyb3VwaW5nRXhwckluZm8gbm9kZSBpbiB0aGUgUGxhbm5lckluZm8gbm9k ZSdzIGdyb3VwX2V4cHJfbGlzdC4gIEVhY2gKKyAqIEdyb3VwaW5nRXhwckluZm8gcmVjb3JkcyB0 aGUgZXhwcmVzc2lvbiBiZWluZyBncm91cGVkIG9uLCBpdHMgc29ydGdyb3VwcmVmLAorICogYW5k IHRoZSBFcXVpdmFsZW5jZUNsYXNzIGl0IGJlbG9uZ3MgdG8uICBUaGlzIGluZm9ybWF0aW9uIGlz IG5lY2Vzc2FyeSB0bworICogcmVwcm9kdWNlIGNvcnJlY3QgZ3JvdXBpbmcgc2VtYW50aWNzIGF0 IGRpZmZlcmVudCBsZXZlbHMgb2YgdGhlIGpvaW4gdHJlZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg R3JvdXBpbmdFeHBySW5mbworeworCXBnX25vZGVfYXR0cihub19yZWFkLCBub19xdWVyeV9qdW1i bGUpCisKKwlOb2RlVGFnCQl0eXBlOworCisJLyogdGhlIHJlcHJlc2VudGVkIGV4cHJlc3Npb24g Ki8KKwlFeHByCSAgICpleHByOworCisJLyogdGhlIHRsZVNvcnRHcm91cFJlZiBvZiB0aGUgY29y cmVzcG9uZGluZyBTb3J0R3JvdXBDbGF1c2UgKi8KKwlJbmRleAkJc29ydGdyb3VwcmVmOworCisJ LyogdGhlIGVxdWl2YWxlbmNlIGNsYXNzIHRoZSBleHByZXNzaW9uIGJlbG9uZ3MgdG8gKi8KKwlF cXVpdmFsZW5jZUNsYXNzICplYyBwZ19ub2RlX2F0dHIoY29weV9hc19zY2FsYXIsIGVxdWFsX2Fz X3NjYWxhcik7Cit9IEdyb3VwaW5nRXhwckluZm87CisKIC8qCiAgKiBBdCBydW50aW1lLCBQQVJB TV9FWEVDIHNsb3RzIGFyZSB1c2VkIHRvIHBhc3MgdmFsdWVzIGFyb3VuZCBmcm9tIG9uZSBwbGFu CiAgKiBub2RlIHRvIGFub3RoZXIuICBUaGV5IGNhbiBiZSB1c2VkIHRvIHBhc3MgdmFsdWVzIGRv d24gaW50byBzdWJxdWVyaWVzIChmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggNzYz Y2QyNWJiM2MuLmU1MDliODE0NGNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMzEy LDYgKzMxMiwxMCBAQCBleHRlcm4gdm9pZCBzZXR1cF9zaW1wbGVfcmVsX2FycmF5cyhQbGFubmVy SW5mbyAqcm9vdCk7CiBleHRlcm4gdm9pZCBleHBhbmRfcGxhbm5lcl9hcnJheXMoUGxhbm5lcklu Zm8gKnJvb3QsIGludCBhZGRfc2l6ZSk7CiBleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfc2ltcGxl X3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLAogCQkJCQkJCQkJUmVsT3B0SW5mbyAq cGFyZW50KTsKK2V4dGVybiBSZWxPcHRJbmZvICpidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxh bm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbF9wbGFpbik7CitleHRl cm4gUmVsT3B0SW5mbyAqYnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJ CQkJCQkgUmVsT3B0SW5mbyAqcmVsX3BsYWluKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jh c2VfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8g KmZpbmRfYmFzZV9yZWxfbm9lcnIoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7CiBleHRl cm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9pZ25vcmVfam9pbihQbGFubmVySW5mbyAqcm9v dCwgaW50IHJlbGlkKTsKQEAgLTM1MSw0ICszNTUsNiBAQCBleHRlcm4gUmVsT3B0SW5mbyAqYnVp bGRfY2hpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJU3BlY2lhbEpv aW5JbmZvICpzamluZm8sCiAJCQkJCQkJCQkJaW50IG5hcHBpbmZvcywgQXBwZW5kUmVsSW5mbyAq KmFwcGluZm9zKTsKIAorZXh0ZXJuIFJlbEFnZ0luZm8gKmNyZWF0ZV9yZWxfYWdnX2luZm8oUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQkJCSAgIGJvb2wgY2FsY3Vs YXRlX2dyb3VwZWRfcm93cyk7CiAjZW5kaWYJCQkJCQkJLyogUEFUSE5PREVfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aHMuaAppbmRleCBjYmFkZTc3YjcxNy4uOGQwM2Q2NjJhMDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9w YXRocy5oCkBAIC0yMSw3ICsyMSw5IEBACiAgKiBhbGxwYXRocy5jCiAgKi8KIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9nZXFvOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2VhZ2VyX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZ2Vxb190aHJlc2hvbGQ7 CitleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKIGV4 dGVybiBQR0RMTElNUE9SVCBpbnQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZTsKIGV4dGVybiBQ R0RMTElNUE9SVCBib29sIGVuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nOwpAQCAtNTcsNiArNTks MTAgQEAgZXh0ZXJuIHZvaWQgZ2VuZXJhdGVfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCSAgYm9vbCBvdmVycmlkZV9yb3dzKTsKIGV4dGVy biB2b2lkIGdlbmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgYm9vbCBvdmVycmlkZV9yb3dzKTsKK2V4dGVybiB2 b2lkIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCSAg IFJlbE9wdEluZm8gKnJlbF9ncm91cGVkLAorCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWxfcGxh aW4sCisJCQkJCQkJCSAgIFJlbEFnZ0luZm8gKmFnZ19pbmZvKTsKIGV4dGVybiBpbnQJY29tcHV0 ZV9wYXJhbGxlbF93b3JrZXIoUmVsT3B0SW5mbyAqcmVsLCBkb3VibGUgaGVhcF9wYWdlcywKIAkJ CQkJCQkJCWRvdWJsZSBpbmRleF9wYWdlcywgaW50IG1heF93b3JrZXJzKTsKIGV4dGVybiB2b2lk IGNyZWF0ZV9wYXJ0aWFsX2JpdG1hcF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAppbmRleCA5ZDNkZWJjYWIyOC4uMDliNDhi MjZmOGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCisrKyBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCkBAIC03Niw2ICs3Niw3IEBAIGV4dGVy biB2b2lkIGFkZF92YXJzX3RvX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnZh cnMsCiBleHRlcm4gdm9pZCBhZGRfdmFyc190b19hdHRyX25lZWRlZChQbGFubmVySW5mbyAqcm9v dCwgTGlzdCAqdmFycywKIAkJCQkJCQkJCVJlbGlkcyB3aGVyZV9uZWVkZWQpOwogZXh0ZXJuIHZv aWQgcmVtb3ZlX3VzZWxlc3NfZ3JvdXBieV9jb2x1bW5zKFBsYW5uZXJJbmZvICpyb290KTsKK2V4 dGVybiB2b2lkIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZvICpyb290KTsKIGV4 dGVybiB2b2lkIGZpbmRfbGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290KTsKIGV4 dGVybiB2b2lkIHJlYnVpbGRfbGF0ZXJhbF9hdHRyX25lZWRlZChQbGFubmVySW5mbyAqcm9vdCk7 CiBleHRlcm4gdm9pZCBjcmVhdGVfbGF0ZXJhbF9qb2luX2luZm8oUGxhbm5lckluZm8gKnJvb3Qp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKaW5k ZXggNjk4MDVkNGI5ZWMuLmVmNzlkNmYxZGVkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKQEAgLTI0MzcsMTEgKzI0MzcsMTEgQEAgU0VMRUNU IGMgY29sbGF0ZSAiQyIsIGNvdW50KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGMgY29sbGF0 ZSAiQyIgT1JERVIgQlkgMTsKIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIGZhbHNl OwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFn Z190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JE RVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICBTb3J0CiAgICBTb3J0IEtleTogdDEuYyBDT0xMQVRFICJDIgotICAgLT4gIEhhc2hBZ2dy ZWdhdGUKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCiAgICAgICAgICBHcm91cCBLZXk6 IHQxLmMKICAgICAgICAgIC0+ICBIYXNoIEpvaW4KICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxLmMgPSB0Mi5jKQpAQCAtMjQ0OSwxMCArMjQ0OSwxMiBAQCBTRUxFQ1QgdDEuYywgY291bnQo dDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMg R1JPVQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0 MV8xCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQx XzIKICAgICAgICAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQXBw ZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIz X3AyIHQyXzEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdn X3RhYjNfcDEgdDJfMgotKDEzIHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy LmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDJfMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19w MSB0Ml8yCisoMTUgcm93cykKIAogU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190 YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JERVIg QlkgdDEuYyBDT0xMQVRFICJDIjsKICBjIHwgY291bnQgCkBAIC0yNDY0LDExICsyNDY2LDExIEBA IFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFi MyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VCiBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBU TyB0cnVlOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZS T00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1VQIEJZ IDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBTb3J0CiAgICBTb3J0IEtleTogdDEuYyBDT0xMQVRFICJDIgotICAgLT4gIEhh c2hBZ2dyZWdhdGUKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCiAgICAgICAgICBHcm91 cCBLZXk6IHQxLmMKICAgICAgICAgIC0+ICBIYXNoIEpvaW4KICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxLmMgPSB0Mi5jKQpAQCAtMjQ3NiwxMCArMjQ3OCwxMiBAQCBTRUxFQ1QgdDEuYywg Y291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9 IHQyLmMgR1JPVQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFi M19wMiB0MV8xCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIz X3AxIHQxXzIKICAgICAgICAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAgICAgICAgICAt PiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWIzX3AyIHQyXzEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjNfcDEgdDJfMgotKDEzIHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQyLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDJf MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2df dGFiM19wMSB0Ml8yCisoMTUgcm93cykKIAogU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00g cGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1VQIEJZIDEg T1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKICBjIHwgY291bnQgCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjBkYWI1ODVlOWNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0CkBAIC0wLDAgKzEsMTU4NCBAQAor LS0KKy0tIEVBR0VSIEFHR1JFR0FUSU9OCistLSBUZXN0IHdlIGNhbiBwdXNoIGFnZ3JlZ2F0aW9u IGRvd24gYmVsb3cgam9pbgorLS0KKy0tIEVuYWJsZSBlYWdlciBhZ2dyZWdhdGlvbiwgd2hpY2gg YnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRlIFRPIG9u OworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MSAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVj aXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MiAoYSBpbnQsIGIgaW50LCBjIGRvdWJs ZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MyAoYSBpbnQsIGIgaW50LCBj IGRvdWJsZSBwcmVjaXNpb24pOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QxIFNFTEVDVCBpLCBp LCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2Fn Z190MiBTRUxFQ1QgaSwgaSUxMCwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJ TlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDMgU0VMRUNUIGklMTAsIGklMTAsIGkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwMClpOworQU5BTFlaRSBlYWdlcl9hZ2dfdDE7CitBTkFMWVpFIGVhZ2Vy X2FnZ190MjsKK0FOQUxZWkUgZWFnZXJfYWdnX3QzOworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVn YXRpb24gb3ZlciBiYXNlIHJlbAorLS0KKy0tIFBlcmZvcm0gc2NhbiBvZiBhIHRhYmxlLCBhZ2dy ZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5h bGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3Qy IHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwg YXZnKHQyLmMpCisgICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRw dXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJU SUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQor ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwg YXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0 Mi5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0 MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0 Mi5jCisoMTggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190 MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3Cisg MyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAz CisgOSB8IDUwNAorKDkgcm93cykKKworLS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBh Z2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEg Sk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91 cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEu YQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMp KQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu YywgdDIuYgorKDIxIHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9h Z2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEu YSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5 NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8 IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworLS0KKy0t IFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0KKy0tIFBlcmZvcm0gam9p biBvZiB0YWJsZXMsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0 YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdn X3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdn X3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBB Z2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKCh0Mi5jICsgdDMuYykpCisgICBHcm91cCBL ZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2 ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIu YyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZn KCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFM IGF2ZygodDIuYyArIHQzLmMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQzLmMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQzLmEgPSB0Mi5hKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdDMgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDMuYSwgdDMuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu YywgdDIuYiwgdDIuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDIuYQorKDI1IHJv d3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQx IEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQz IE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAor LS0tKy0tLS0tCisgMSB8IDQ5NworIDIgfCA0OTkKKyAzIHwgNTAxCisgNCB8IDUwMworIDUgfCA1 MDUKKyA2IHwgNTA3CisgNyB8IDUwOQorIDggfCA1MTEKKyA5IHwgNTEzCisoOSByb3dzKQorCist LSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hh c2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEs IGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIg dDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JP VVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAg T3V0cHV0OiB0MS5hLCBhdmcoKHQyLmMgKyB0My5jKSkKKyAgIEdyb3VwIEtleTogdDEuYQorICAg LT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMu YykpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQor ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0My5j KSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2ZygodDIuYyAr IHQzLmMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0My5hID0gdDIuYSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QzIHQzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLmEs IHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQy LmIsIHQyLmEKKygyOCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lO IGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQx LmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTcKKyAyIHwgNDk5CisgMyB8IDUwMQor IDQgfCA1MDMKKyA1IHwgNTA1CisgNiB8IDUwNworIDcgfCA1MDkKKyA4IHwgNTExCisgOSB8IDUx MworKDkgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7CistLQorLS0gVGVzdCB0aGF0IGVh Z2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBvdXRlciBqb2luCistLQorLS0gRW5zdXJlIGFnZ3Jl Z2F0aW9uIGNhbiBiZSBwdXNoZWQgZG93biB0byB0aGUgbm9uLW51bGxhYmxlIHNpZGUKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdl cl9hZ2dfdDEgdDEgUklHSFQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JP VVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtl eTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZn KHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIFJpZ2h0 IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQor ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKygxOCByb3dzKQor CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4g ZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEu YTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIgfCA0OTcKKyAzIHwgNDk4Cisg NCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0 CisgICB8IDUwNQorKDEwIHJvd3MpCisKKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW5ub3QgYmUg cHVzaGVkIGRvd24gdG8gdGhlIG51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZ IHQyLmI7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIuYiwgKGF2Zyh0Mi5jKSkKKyAg IFNvcnQgS2V5OiB0Mi5iCisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiB0 Mi5iLCBhdmcodDIuYykKKyAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgLT4gIEhh c2ggUmlnaHQgSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCB0Mi5jCisgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Mi5iID0gdDEuYikKKyAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLmEsIHQyLmIsIHQyLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLmIKKygxNSByb3dzKQorCitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JP VVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworIGIgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2 CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwg NTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyAgIHwgICAgCisoMTAgcm93cykKKworLS0KKy0tIFRl c3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3IgcGFyYWxsZWwgcGxhbnMKKy0tCitT RVQgcGFyYWxsZWxfc2V0dXBfY29zdD0wOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q9MDsKK1NF VCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlcj00OworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdn cmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5OiB0MS5hCisg ICAtPiAgR2F0aGVyIE1lcmdlCisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgLT4gIFNvcnQKKyAg ICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAg ICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMp KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5j CisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLmEsIHQyLmIsIHQyLmMKKygyMSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMp IEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5i IEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8 IDQ5NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisg NyB8IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCitSRVNFVCBwYXJhbGxlbF9z ZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJhbGxl bF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy OworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gd2l0aCBHRVFPCistLQorU0VUIGdlcW8g PSBvbjsKK1NFVCBnZXFvX3RocmVzaG9sZCA9IDI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFn ZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1 dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAg ICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5 OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIg PSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwg KFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJU SUFMIGF2Zyh0Mi5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5i CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5h LCB0Mi5iLCB0Mi5jCisoMTggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVh Z2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBC WSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAy IHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIK KyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgZ2VxbzsKK1JFU0VUIGdlcW9f dGhyZXNob2xkOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDE7CitEUk9QIFRBQkxFIGVhZ2VyX2Fn Z190MjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QzOworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVn YXRpb24gZm9yIHBhcnRpdGlvbndpc2Ugam9pbgorLS0KKy0tIEVuYWJsZSBwYXJ0aXRpb253aXNl IGFnZ3JlZ2F0ZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFy dGl0aW9ud2lzZV9hZ2dyZWdhdGUgVE8gdHJ1ZTsKKy0tIEVuYWJsZSBwYXJ0aXRpb253aXNlIGpv aW4sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlvbndp c2Vfam9pbiBUTyB0cnVlOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxKHggaW50LCB5IGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3Ax IFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3Rh YjEgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHggaW50LCB5IGludCkgUEFSVElU SU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiMl9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZB TFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBB UlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOwor SU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAxNSwgaSAlIDEwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMiBTRUxF Q1QgaSAlIDEwLCBpICUgMTUgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKK0FOQUxZ WkUgZWFnZXJfYWdnX3RhYjE7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWIyOworLS0gV2hlbiBHUk9V UCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVh Y2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngs IHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3Rh YjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0odDEueSkpLCAoY291bnQoKikpCisgICBT b3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKHQxLnkpLCBjb3VudCgq KQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0 MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBQQVJU SUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHQxLnkKKyAgICAgICAg IC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEu eCwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEu eAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AyIHQy XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFfMS55 KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHQxXzEueQorICAgICAgICAgLT4g IEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBz dW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIu eCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBQQVJUSUFMIHN1bSh0MV8yLnkpLCBQ QVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgdDFfMi55CisoNDkgcm93cykKKworU0VM RUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFn ZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0 MS54OworIHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDAgfCAx MDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8ICA0NDg5CisgIDIgfCAyMDAzMyB8ICA0NDg5Cisg IDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAyOTAxMSB8ICA0NDg5CisgIDUgfCAxMTM5MCB8ICA0 NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5CisgIDcgfCAyMDM2OCB8ICA0NDg5CisgIDggfCAyNDg1 NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0NDg5CisgMTAgfCAxMTA1NSB8ICA0NDg5CisgMTEg fCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYwMiB8ICA0MzU2CisgMTMgfCAyMzk1OCB8ICA0MzU2 CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUgcm93cykKKworLS0gR1JPVVAgQlkgaGF2aW5nIG90 aGVyIG1hdGNoaW5nIGtleQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQy LnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdn X3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55Owor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLnksIChzdW0odDEueSkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogdDIueQorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgc3VtKHQxLnkpLCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi55CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIChQQVJUSUFMIHN1 bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBQ QVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnksIHQxLngKKyAgICAg ICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzEueSwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy XzEueQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLnksIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3Ay IHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFf MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLnksIHQxXzEueAorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi55 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzIueSwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJf MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBQQVJUSUFMIHN1bSh0MV8yLnkp LCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgdDFfMi54CisoNDkgcm93cykKKwor U0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBC WSB0Mi55OworIHkgIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDAg fCAxMDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8ICA0NDg5CisgIDIgfCAyMDAzMyB8ICA0NDg5 CisgIDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAyOTAxMSB8ICA0NDg5CisgIDUgfCAxMTM5MCB8 ICA0NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5CisgIDcgfCAyMDM2OCB8ICA0NDg5CisgIDggfCAy NDg1NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0NDg5CisgMTAgfCAxMTA1NSB8ICA0NDg5Cisg MTEgfCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYwMiB8ICA0MzU2CisgMTMgfCAyMzk1OCB8ICA0 MzU2CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUgcm93cykKKworLS0gV2hlbiBHUk9VUCBCWSBj bGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZv ciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2Fn Z190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54 KSA+IDUgT1JERVIgQlkgdDIueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi54LCAoc3VtKHQxLngpKSwgKGNvdW50 KCopKQorICAgU29ydCBLZXk6IHQyLngKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICBPdXRwdXQ6IHQyLngsIHN1bSh0MS54KSwgY291bnQoKikKKyAgICAgICAgIEdyb3Vw IEtleTogdDIueAorICAgICAgICAgRmlsdGVyOiAoYXZnKHQxLngpID4gJzUnOjpudW1lcmljKQor ICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDEueCkpLCAoUEFSVElB TCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MS54KSkKKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi54LCB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueCkp LCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MS54KSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBzdW0odDEueCksIFBBUlRJQUwg Y291bnQoKiksIFBBUlRJQUwgYXZnKHQxLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQQVJUSUFM IHN1bSh0MV8xLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMS54KSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQxXzEueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIg dDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQyXzEueQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS54KSksIChQQVJUSUFMIGNvdW50KCop KSwgKFBBUlRJQUwgYXZnKHQxXzEueCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFfMS54KSwgUEFSVElBTCBjb3VudCgqKSwgUEFS VElBTCBhdmcodDFfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAoUEFSVElBTCBzdW0o dDFfMi54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzIueCkpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0Ml8yLnkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQ QVJUSUFMIGF2Zyh0MV8yLngpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8yLngsIFBBUlRJQUwgc3VtKHQxXzIueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwg YXZnKHQxXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisoNDQgcm93cykKKworU0VMRUNUIHQyLngsIHN1 bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIg dDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gNSBP UkRFUiBCWSB0Mi54OworIHggfCAgc3VtICB8IGNvdW50IAorLS0tKy0tLS0tLS0rLS0tLS0tLQor IDAgfCAzMzgzNSB8ICA2NjY3CisgMSB8IDM5NTAyIHwgIDY2NjcKKyAyIHwgNDYxNjkgfCAgNjY2 NworIDMgfCA1MjgzNiB8ICA2NjY3CisgNCB8IDU5NTAzIHwgIDY2NjcKKyA1IHwgMzM1MDAgfCAg NjY2NworIDYgfCAzOTgzNyB8ICA2NjY3CisgNyB8IDQ2NTA0IHwgIDY2NjcKKyA4IHwgNTMxNzEg fCAgNjY2NworIDkgfCA1OTgzOCB8ICA2NjY3CisoMTAgcm93cykKKworLS0gQ2hlY2sgd2l0aCBl YWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSBG Uk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQy LnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9S REVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3Vt KCh0Mi55ICsgdDMueSkpKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAg ICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LngsIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCAoUEFSVElBTCBzdW0oKHQy LnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngs IHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIxX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMu eSwgdDMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMS54LCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNf MS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8xLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIFBB UlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWIxX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWIxX3AyIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkg KyB0M18yLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCAo UEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIChQQVJUSUFM IHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzIueCwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQz XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0Ml8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQz XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0M18yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54 CisoNzAgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54 OworIHggIHwgICBzdW0gICAKKy0tLS0rLS0tLS0tLS0tCisgIDAgfCAxNDM3NDgwCisgIDEgfCAy MDgyODk2CisgIDIgfCAyNjg0NDIyCisgIDMgfCAzMjg1OTQ4CisgIDQgfCAzODg3NDc0CisgIDUg fCAxNTI2MjYwCisgIDYgfCAyMTI3Nzg2CisgIDcgfCAyNzI5MzEyCisgIDggfCAzMzMwODM4Cisg IDkgfCAzOTMyMzY0CisgMTAgfCAxNDgxMzcwCisgMTEgfCAyMDEyNDcyCisgMTIgfCAyNTg3NDY0 CisgMTMgfCAzMTYyNDU2CisgMTQgfCAzNzM3NDQ4CisoMTUgcm93cykKKworLS0gcGFydGlhbCBh Z2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK1NFVCBtYXhfcGFyYWxsZWxf d29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4g ZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBP TiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDMueSwgc3VtKCh0Mi55ICsg dDMueSkpCisgICBHcm91cCBLZXk6IHQzLnkKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6 IHQzLnksIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0 My55CisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIChQQVJUSUFMIHN1bSgodDIueSArIHQz LnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnggPSB0MS54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueSwgdDMueCwgUEFSVElBTCBzdW0oKHQy LnkgKyB0My55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueCwg dDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluY3JlbWVudGFsIFNv cnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwg dDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQy LngsIHQzLnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNvcnRlZCBLZXk6 IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBNZXJnZSBKb2luCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngs IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcmdl IENvbmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNvcnQgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQz LnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJUSUFMIHN1bSgodDJf MS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLngg PSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueSwgdDNf MS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS54LCB0M18xLnkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNvcnRlZCBLZXk6IHQyXzEueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdlIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwg dDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXJnZSBDb25k OiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFf cDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0M18xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjFfcDIgdDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIx X3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzXzIueSwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSkKKyAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQxXzIueCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0 M18yLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngsIHQz XzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSW5jcmVtZW50YWwg U29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQy XzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNv cnQgS2V5OiB0Ml8yLngsIHQzXzIueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHJlc29ydGVkIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgTWVyZ2UgSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzIu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0Ml8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6 IHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0M18yCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNf Mi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyg4OCByb3dzKQorCitTRUxFQ1QgdDMueSwg c3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3Rh YjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMu eCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgeSB8ICAgc3VtICAgCistLS0rLS0tLS0t LS0tCisgMCB8IDExMTExMTAKKyAxIHwgMjAwMDEzMgorIDIgfCAyODg5MTU0CisgMyB8IDM3Nzgx NzYKKyA0IHwgNDY2NzE5OAorIDUgfCAzMzM0MDAwCisgNiB8IDQyMjMwMjIKKyA3IHwgNTExMjA0 NAorIDggfCA2MDAxMDY2CisgOSB8IDY4OTAwODgKKygxMCByb3dzKQorCitSRVNFVCBlbmFibGVf aGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CistLSB0cnkg dGhhdCB3aXRoIEdFUU8gdG9vCitTRVQgZ2VxbyA9IG9uOworU0VUIGdlcW9fdGhyZXNob2xkID0g MjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEueSks IGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJF IHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAor ICAgT3V0cHV0OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQx LngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0MS55KSwgY291bnQoKikKKyAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0 MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBzdW0odDEu eSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCB0MS55CisgICAgICAgICAtPiAgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1bSh0MV8x LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54 LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8xCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFS VElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueSksIFBBUlRJQUwg Y291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMS54LCB0MV8xLnkKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQxXzIueSks IGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQ QVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFM IHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngsIHQxXzIueQorKDQ5IHJvd3MpCisKK1NFTEVDVCB0MS54LCBz dW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIy IHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8 ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgMTA4OTAgfCAgNDM1 NgorICAxIHwgMTU1NDQgfCAgNDQ4OQorICAyIHwgMjAwMzMgfCAgNDQ4OQorICAzIHwgMjQ1MjIg fCAgNDQ4OQorICA0IHwgMjkwMTEgfCAgNDQ4OQorICA1IHwgMTEzOTAgfCAgNDQ4OQorICA2IHwg MTU4NzkgfCAgNDQ4OQorICA3IHwgMjAzNjggfCAgNDQ4OQorICA4IHwgMjQ4NTcgfCAgNDQ4OQor ICA5IHwgMjkzNDYgfCAgNDQ4OQorIDEwIHwgMTEwNTUgfCAgNDQ4OQorIDExIHwgMTUyNDYgfCAg NDM1NgorIDEyIHwgMTk2MDIgfCAgNDM1NgorIDEzIHwgMjM5NTggfCAgNDM1NgorIDE0IHwgMjgz MTQgfCAgNDM1NgorKDE1IHJvd3MpCisKK1JFU0VUIGdlcW87CitSRVNFVCBnZXFvX3RocmVzaG9s ZDsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIy OworLS0KKy0tIFRlc3Qgd2l0aCBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgc2NoZW1lCistLQor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWwoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMSBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMjApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21s X3AyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wMl9zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFS VElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQ QVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19z MSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMjUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNfczIgUEFSVElUSU9OIE9G IGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBGUk9NICgyNSkgVE8gKDMwKTsKK0lOU0VS VCBJTlRPIGVhZ2VyX2FnZ190YWJfbWwgU0VMRUNUIGkgJSAzMCwgaSAlIDMwIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIGk7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWJfbWw7CistLSBXaGVu IEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBm b3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg dDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBl YWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQyLnkpKSwgKGNvdW50 KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0Mi55 KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFS VElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIChQQVJUSUFMIHN1bSh0Mi55KSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi54LCBQQVJUSUFMIHN1bSh0Mi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEg dDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwg dDIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg IE91dHB1dDogdDFfMS54LCBzdW0odDJfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQy XzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngs IFBBUlRJQUwgc3VtKHQyXzEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEg dDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnksIHQyXzEueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDJfMi55KSwgY291bnQoKikKKyAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIu eCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8yLngsIFBBUlRJQUwgc3VtKHQyXzIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMy54LCBzdW0odDJfMy55KSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCAoUEFSVElBTCBzdW0odDJfMy55 KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8zLngsIFBBUlRJQUwgc3VtKHQyXzMueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMy54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54LCBzdW0odDJfNC55KSwgY291bnQoKikK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54CisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgKFBBUlRJQUwgc3Vt KHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCAoUEFSVElBTCBzdW0o dDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml80LngsIFBBUlRJQUwgc3VtKHQyXzQueSksIFBBUlRJQUwgY291bnQoKikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfNC54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorKDc5IHJvd3MpCisKK1NFTEVDVCB0MS54LCBz dW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2Fn Z190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54Owor IHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgMCB8 ICAxMDg5CisgIDEgfCAgMTE1NiB8ICAxMTU2CisgIDIgfCAgMjMxMiB8ICAxMTU2CisgIDMgfCAg MzQ2OCB8ICAxMTU2CisgIDQgfCAgNDYyNCB8ICAxMTU2CisgIDUgfCAgNTc4MCB8ICAxMTU2Cisg IDYgfCAgNjkzNiB8ICAxMTU2CisgIDcgfCAgODA5MiB8ICAxMTU2CisgIDggfCAgOTI0OCB8ICAx MTU2CisgIDkgfCAxMDQwNCB8ICAxMTU2CisgMTAgfCAxMTU2MCB8ICAxMTU2CisgMTEgfCAxMTk3 OSB8ICAxMDg5CisgMTIgfCAxMzA2OCB8ICAxMDg5CisgMTMgfCAxNDE1NyB8ICAxMDg5CisgMTQg fCAxNTI0NiB8ICAxMDg5CisgMTUgfCAxNjMzNSB8ICAxMDg5CisgMTYgfCAxNzQyNCB8ICAxMDg5 CisgMTcgfCAxODUxMyB8ICAxMDg5CisgMTggfCAxOTYwMiB8ICAxMDg5CisgMTkgfCAyMDY5MSB8 ICAxMDg5CisgMjAgfCAyMTc4MCB8ICAxMDg5CisgMjEgfCAyMjg2OSB8ICAxMDg5CisgMjIgfCAy Mzk1OCB8ICAxMDg5CisgMjMgfCAyNTA0NyB8ICAxMDg5CisgMjQgfCAyNjEzNiB8ICAxMDg5Cisg MjUgfCAyNzIyNSB8ICAxMDg5CisgMjYgfCAyODMxNCB8ICAxMDg5CisgMjcgfCAyOTQwMyB8ICAx MDg5CisgMjggfCAzMDQ5MiB8ICAxMDg5CisgMjkgfCAzMTU4MSB8ICAxMDg5CisoMzAgcm93cykK KworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVn YXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0MS55LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JP VVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLnks IChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueQorICAgLT4gIEZpbmFs aXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogdDEueSwgc3VtKHQyLnkpLCBjb3Vu dCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0MS55CisgICAgICAgICAtPiAgQXBwZW5kCisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LnksIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwgdDEueAorICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgKFBBUlRJ QUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLngsIFBBUlRJQUwgc3VtKHQyLnkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9 IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEueSwgdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIu eCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueSwgdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8y LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzIueCwgUEFSVElBTCBzdW0odDJfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwgKFBBUlRJQUwgc3VtKHQyXzMueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQx XzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzMueSwgdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0 Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzMueCwgUEFSVElBTCBzdW0odDJfMy55KSwgUEFSVElBTCBjb3VudCgqKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueSwgKFBBUlRJQUwgc3VtKHQyXzQu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzQueSwgdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1 bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzQueCwgUEFSVElBTCBzdW0odDJfNC55KSwgUEFSVElBTCBjb3VudCgq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisoNjcgcm93cykKKworU0VMRUNUIHQxLnks IHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJf YWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7 CisgeSAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAw IHwgIDEwODkKKyAgMSB8ICAxMTU2IHwgIDExNTYKKyAgMiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8 ICAzNDY4IHwgIDExNTYKKyAgNCB8ICA0NjI0IHwgIDExNTYKKyAgNSB8ICA1NzgwIHwgIDExNTYK KyAgNiB8ICA2OTM2IHwgIDExNTYKKyAgNyB8ICA4MDkyIHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwg IDExNTYKKyAgOSB8IDEwNDA0IHwgIDExNTYKKyAxMCB8IDExNTYwIHwgIDExNTYKKyAxMSB8IDEx OTc5IHwgIDEwODkKKyAxMiB8IDEzMDY4IHwgIDEwODkKKyAxMyB8IDE0MTU3IHwgIDEwODkKKyAx NCB8IDE1MjQ2IHwgIDEwODkKKyAxNSB8IDE2MzM1IHwgIDEwODkKKyAxNiB8IDE3NDI0IHwgIDEw ODkKKyAxNyB8IDE4NTEzIHwgIDEwODkKKyAxOCB8IDE5NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkx IHwgIDEwODkKKyAyMCB8IDIxNzgwIHwgIDEwODkKKyAyMSB8IDIyODY5IHwgIDEwODkKKyAyMiB8 IDIzOTU4IHwgIDEwODkKKyAyMyB8IDI1MDQ3IHwgIDEwODkKKyAyNCB8IDI2MTM2IHwgIDEwODkK KyAyNSB8IDI3MjI1IHwgIDEwODkKKyAyNiB8IDI4MzE0IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwg IDEwODkKKyAyOCB8IDMwNDkyIHwgIDEwODkKKyAyOSB8IDMxNTgxIHwgIDEwODkKKygzMCByb3dz KQorCistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1 bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54 LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9J TiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9t bCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 MS54LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngK KyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0oKHQyLnkg KyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSAr IHQzLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi54LCB0My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQz LnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAt PiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngs IHN1bSgodDJfMS55ICsgdDNfMS55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEu eCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJf MS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0 M18xLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSB0M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAtPiAgRmlu YWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgo dDJfMi55ICsgdDNfMi55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQx XzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQy XzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsg dDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkp KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf Mi55LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMl9zMiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAtPiAgRmluYWxpemUg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIHN1bSgodDJfMy55 ICsgdDNfMy55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAor ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMy54LCB0M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55 KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMy54LCB0M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFS VElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0 Ml8zLngsIHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDNfczEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w M19zMSB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIHN1bSgodDJfNC55ICsgdDNf NC55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80 LngsIChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w M19zMiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfNC54LCB0M180LngsIChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfNC54LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElBTCBj b3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80 LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80Lngs IHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0Ml80LnggPSB0M180LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIg dDJfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml80LnksIHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0 M180CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzQueSwgdDNfNC54CisoMTE0IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIu eSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0 Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgIHN1bSAgIHwg Y291bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAg MSB8ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0 IHwgMzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0Cisg IDYgfCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2 NCB8IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAor IDExIHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQz NjIgfCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcK KyAxNiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkz NzMyIHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3 CisgMjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1 MzEwMiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkz NworIDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIw MTI0NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworLS0gcGFy dGlhbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQz LnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBK T0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFi X21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgT3V0cHV0OiB0My55LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQor ICAgU29ydCBLZXk6IHQzLnkKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICBPdXRwdXQ6IHQzLnksIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAgICAgIEdy b3VwIEtleTogdDMueQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCAoUEFSVElBTCBzdW0o KHQyLnkgKyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLnksIHQzLngsIChQQVJUSUFM IHN1bSgodDIueSArIHQzLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My55LCB0My54LCBQQVJUSUFMIHN1bSgodDIu eSArIHQzLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnggPSB0My54KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w MSB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18x LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54LCAo UEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS55LCB0M18xLngs IFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngsIHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54 LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SGFzaCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEg dDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIChQQVJUSUFMIHN1bSgodDJfMi55ICsg dDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLnksIHQzXzIu eCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueSwgdDNf Mi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSksIFBBUlRJQUwgY291bnQoKikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54LCB0M18yLnks IHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQy XzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w Ml9zMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ay X3MyIHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCAoUEFSVElBTCBzdW0oKHQyXzMu eSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMworICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgdDNfMy55LCB0 M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18zLnks IHQzXzMueCwgUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueCwgdDNf My55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55 LCB0Ml8zLngsIHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wM19zMSB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgKFBBUlRJQUwgc3VtKCh0 Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQu eSwgdDNfNC54LCAoUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgdDNf NC55LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80Lngs IHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzQueSwgdDJfNC54LCB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfNC54ID0gdDNfNC54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AzX3MyIHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDNfczIgdDNfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAorKDEwMiByb3dzKQorCitTRUxFQ1Qg dDMueSwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQx IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190 YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworIHkg IHwgICBzdW0gICB8IGNvdW50IAorLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgICAg MCB8IDM1OTM3CisgIDEgfCAgIDc4NjA4IHwgMzkzMDQKKyAgMiB8ICAxNTcyMTYgfCAzOTMwNAor ICAzIHwgIDIzNTgyNCB8IDM5MzA0CisgIDQgfCAgMzE0NDMyIHwgMzkzMDQKKyAgNSB8ICAzOTMw NDAgfCAzOTMwNAorICA2IHwgIDQ3MTY0OCB8IDM5MzA0CisgIDcgfCAgNTUwMjU2IHwgMzkzMDQK KyAgOCB8ICA2Mjg4NjQgfCAzOTMwNAorICA5IHwgIDcwNzQ3MiB8IDM5MzA0CisgMTAgfCAgNzg2 MDgwIHwgMzkzMDQKKyAxMSB8ICA3OTA2MTQgfCAzNTkzNworIDEyIHwgIDg2MjQ4OCB8IDM1OTM3 CisgMTMgfCAgOTM0MzYyIHwgMzU5MzcKKyAxNCB8IDEwMDYyMzYgfCAzNTkzNworIDE1IHwgMTA3 ODExMCB8IDM1OTM3CisgMTYgfCAxMTQ5OTg0IHwgMzU5MzcKKyAxNyB8IDEyMjE4NTggfCAzNTkz NworIDE4IHwgMTI5MzczMiB8IDM1OTM3CisgMTkgfCAxMzY1NjA2IHwgMzU5MzcKKyAyMCB8IDE0 Mzc0ODAgfCAzNTkzNworIDIxIHwgMTUwOTM1NCB8IDM1OTM3CisgMjIgfCAxNTgxMjI4IHwgMzU5 MzcKKyAyMyB8IDE2NTMxMDIgfCAzNTkzNworIDI0IHwgMTcyNDk3NiB8IDM1OTM3CisgMjUgfCAx Nzk2ODUwIHwgMzU5MzcKKyAyNiB8IDE4Njg3MjQgfCAzNTkzNworIDI3IHwgMTk0MDU5OCB8IDM1 OTM3CisgMjggfCAyMDEyNDcyIHwgMzU5MzcKKyAyOSB8IDIwODQzNDYgfCAzNTkzNworKDMwIHJv d3MpCisKKy0tIHRyeSB0aGF0IHdpdGggR0VRTyB0b28KK1NFVCBnZXFvID0gb247CitTRVQgZ2Vx b190aHJlc2hvbGQgPSAyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFn ZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQx Lng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSh0Mi55KSksIChjb3VudCgq KSkKKyAgIFNvcnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0odDIueSks IGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJ QUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueCwgUEFSVElBTCBzdW0odDIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQy LngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEueCwgc3VtKHQyXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8x LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCBQ QVJUSUFMIHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQy XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55 LCB0Ml8xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQyXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8yLngg PSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf Mi54LCBQQVJUSUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ay X3MyIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi55LCB0Ml8yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKHQyXzMueSksIGNvdW50KCopCisgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMy54LCBQQVJUSUFMIHN1bSh0Ml8zLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgc3VtKHQyXzQueSksIGNvdW50KCopCisg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIChQQVJUSUFMIHN1bSh0 Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0MV80LnggPSB0Ml80LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgKFBBUlRJQUwgc3VtKHQy XzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfNC54LCBQQVJUSUFMIHN1bSh0Ml80LnkpLCBQQVJUSUFMIGNvdW50KCopCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AzX3MyIHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyg3OSByb3dzKQorCitTRUxFQ1QgdDEueCwgc3Vt KHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2df dGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4 ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgIDAgfCAg MTA4OQorICAxIHwgIDExNTYgfCAgMTE1NgorICAyIHwgIDIzMTIgfCAgMTE1NgorICAzIHwgIDM0 NjggfCAgMTE1NgorICA0IHwgIDQ2MjQgfCAgMTE1NgorICA1IHwgIDU3ODAgfCAgMTE1NgorICA2 IHwgIDY5MzYgfCAgMTE1NgorICA3IHwgIDgwOTIgfCAgMTE1NgorICA4IHwgIDkyNDggfCAgMTE1 NgorICA5IHwgMTA0MDQgfCAgMTE1NgorIDEwIHwgMTE1NjAgfCAgMTE1NgorIDExIHwgMTE5Nzkg fCAgMTA4OQorIDEyIHwgMTMwNjggfCAgMTA4OQorIDEzIHwgMTQxNTcgfCAgMTA4OQorIDE0IHwg MTUyNDYgfCAgMTA4OQorIDE1IHwgMTYzMzUgfCAgMTA4OQorIDE2IHwgMTc0MjQgfCAgMTA4OQor IDE3IHwgMTg1MTMgfCAgMTA4OQorIDE4IHwgMTk2MDIgfCAgMTA4OQorIDE5IHwgMjA2OTEgfCAg MTA4OQorIDIwIHwgMjE3ODAgfCAgMTA4OQorIDIxIHwgMjI4NjkgfCAgMTA4OQorIDIyIHwgMjM5 NTggfCAgMTA4OQorIDIzIHwgMjUwNDcgfCAgMTA4OQorIDI0IHwgMjYxMzYgfCAgMTA4OQorIDI1 IHwgMjcyMjUgfCAgMTA4OQorIDI2IHwgMjgzMTQgfCAgMTA4OQorIDI3IHwgMjk0MDMgfCAgMTA4 OQorIDI4IHwgMzA0OTIgfCAgMTA4OQorIDI5IHwgMzE1ODEgfCAgMTA4OQorKDMwIHJvd3MpCisK K1JFU0VUIGdlcW87CitSRVNFVCBnZXFvX3RocmVzaG9sZDsKK0RST1AgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IGNkMzdmNTQ5YjVhLi5i ZGJmMjFhODc0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC0yODQwLDIwICsy ODQwLDIyIEBAIHNlbGVjdCB4LnRob3VzYW5kLCB4LnR3b3Rob3VzYW5kLCBjb3VudCgqKQogZnJv bSB0ZW5rMSB4IGlubmVyIGpvaW4gdGVuazEgeSBvbiB4LnRob3VzYW5kID0geS50aG91c2FuZAog Z3JvdXAgYnkgeC50aG91c2FuZCwgeC50d290aG91c2FuZAogb3JkZXIgYnkgeC50aG91c2FuZCBk ZXNjLCB4LnR3b3Rob3VzYW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3Jv dXBBZ2dyZWdhdGUKICAgIEdyb3VwIEtleTogeC50aG91c2FuZCwgeC50d290aG91c2FuZAogICAg LT4gIEluY3JlbWVudGFsIFNvcnQKICAgICAgICAgIFNvcnQgS2V5OiB4LnRob3VzYW5kIERFU0Ms IHgudHdvdGhvdXNhbmQKICAgICAgICAgIFByZXNvcnRlZCBLZXk6IHgudGhvdXNhbmQKICAgICAg ICAgIC0+ICBNZXJnZSBKb2luCiAgICAgICAgICAgICAgICBNZXJnZSBDb25kOiAoeS50aG91c2Fu ZCA9IHgudGhvdXNhbmQpCi0gICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIEJhY2t3 YXJkIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxIHkKKyAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHkudGhvdXNhbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4g QmFja3dhcmQgdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEgeQogICAgICAgICAg ICAgICAgLT4gIFNvcnQKICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB4LnRob3VzYW5k IERFU0MKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSB4Ci0oMTEg cm93cykKKygxMyByb3dzKQogCiByZXNldCBlbmFibGVfaGFzaGFnZzsKIHJlc2V0IGVuYWJsZV9u ZXN0bG9vcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X2FnZ3JlZ2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dy ZWdhdGUub3V0CmluZGV4IGNiMTJiZjUzNzE5Li5mYzg0OTI5YTAwMiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CkBAIC0xMyw2ICsx Myw4IEBAIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBTRVQgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOwogLS0gRGlzYWJsZSBpbmNyZW1lbnRhbCBz b3J0LCB3aGljaCBjYW4gaW5mbHVlbmNlIHNlbGVjdGVkIHBsYW5zIGR1ZSB0byBmdXp6IGZhY3Rv ci4KIFNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydCBUTyBvZmY7CistLSBEaXNhYmxlIGVhZ2Vy IGFnZ3JlZ2F0aW9uLCB3aGljaCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGdlbmVyYXRpb24gb2Yg cGFydGl0aW9ud2lzZSBhZ2dyZWdhdGlvbi4KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRlIFRP IG9mZjsKIC0tCiAtLSBUZXN0cyBmb3IgbGlzdCBwYXJ0aXRpb25lZCB0YWJsZXMuCiAtLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCA4MzIyOGNmY2EyOS4uM2IzN2Zh ZmE2NWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xNTEsNiAr MTUxLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1l IGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9hc3luY19hcHBlbmQgICAgICAgICAgICB8IG9uCiAg ZW5hYmxlX2JpdG1hcHNjYW4gICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZGlzdGluY3RfcmVv cmRlcmluZyAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgICAgICAgICB8IG9uCiAg ZW5hYmxlX2dhdGhlcm1lcmdlICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZ3JvdXBfYnlfcmVv cmRlcmluZyAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdnICAgICAgICAgICAgICAgICB8IG9uCkBA IC0xNzIsNyArMTczLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3 aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAgICAg ICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfdGlk c2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDI0IHJvd3MpCisoMjUgcm93cykKIAogLS0gVGhl cmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91cyB0eXBlcy4g IEluamVjdGlvblBvaW50CiAtLSBtYXkgYmUgcHJlc2VudCBvciBhYnNlbnQsIGRlcGVuZGluZyBv biBoaXN0b3J5IHNpbmNlIGxhc3QgcG9zdG1hc3RlciBzdGFydC4KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCmluZGV4IGZiZmZjNjdhZTYwLi5mOTQ1MGNkYzQ3NyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0 IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24g dHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGlu ZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRl c3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBp bmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBs YWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBu dW1hCit0ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNo X3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNv cnQgZXhwbGFpbiBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBzdGF0cyBwcmVk aWNhdGUgbnVtYSBlYWdlcl9hZ2dyZWdhdGUKIAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24g Y3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0IHRo YXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3Jl Z2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YjEwNDlhZTNmMwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwKQEAgLTAs MCArMSwyMjUgQEAKKy0tCistLSBFQUdFUiBBR0dSRUdBVElPTgorLS0gVGVzdCB3ZSBjYW4gcHVz aCBhZ2dyZWdhdGlvbiBkb3duIGJlbG93IGpvaW4KKy0tCisKKy0tIEVuYWJsZSBlYWdlciBhZ2dy ZWdhdGlvbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfZWFnZXJf YWdncmVnYXRlIFRPIG9uOworCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QxIChhIGludCwgYiBp bnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QyIChhIGlu dCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3Qz IChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CisKK0lOU0VSVCBJTlRPIGVhZ2Vy X2FnZ190MSBTRUxFQ1QgaSwgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJ TlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDIgU0VMRUNUIGksIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QzIFNFTEVDVCBpJTEwLCBp JTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKKworQU5BTFlaRSBlYWdlcl9h Z2dfdDE7CitBTkFMWVpFIGVhZ2VyX2FnZ190MjsKK0FOQUxZWkUgZWFnZXJfYWdnX3QzOworCisK Ky0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgYmFzZSByZWwKKy0tCisKKy0tIFBl cmZvcm0gc2NhbiBvZiBhIHRhYmxlLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0 aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQx LmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2df dDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBP UkRFUiBCWSB0MS5hOworCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5nIGFnZ3JlZ2F0 aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4g ZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEu YTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdl cl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor CitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlv biBvdmVyIGpvaW4gcmVsCistLQorCistLSBQZXJmb3JtIGpvaW4gb2YgdGFibGVzLCBhZ2dyZWdh dGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6 ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg dDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2Fn Z190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMu YSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0 My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRp b24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQx IEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQz IE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5h LCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3Qy IHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7CisKKwor LS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3Igb3V0ZXIgam9pbgor LS0KKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbiBiZSBwdXNoZWQgZG93biB0byB0aGUgbm9u LW51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5h LCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQgSk9JTiBlYWdlcl9hZ2dfdDIg dDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190 MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKKy0tIEVu c3VyZSBhZ2dyZWdhdGlvbiBjYW5ub3QgYmUgcHVzaGVkIGRvd24gdG8gdGhlIG51bGxhYmxlIHNp ZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykg RlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMp IEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9 IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworCisKKy0tCistLSBUZXN0IHRoYXQg ZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIHBhcmFsbGVsIHBsYW5zCistLQorCitTRVQgcGFy YWxsZWxfc2V0dXBfY29zdD0wOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q9MDsKK1NFVCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlcj00OworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwg YXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQx LmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmco dDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9 IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNFVCBwYXJhbGxlbF9zZXR1 cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOwor CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiB3aXRoIEdFUU8KKy0tCisKK1NFVCBnZXFv ID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAyOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4g ZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEu YTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdl cl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor CitSRVNFVCBnZXFvOworUkVTRVQgZ2Vxb190aHJlc2hvbGQ7CisKK0RST1AgVEFCTEUgZWFnZXJf YWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190 MzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBmb3IgcGFydGl0aW9ud2lzZSBq b2luCistLQorCistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGUsIHdoaWNoIGJ5IGRl ZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlIFRP IHRydWU7CistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBqb2luLCB3aGljaCBieSBkZWZhdWx0IGlz IGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKKworQ1JF QVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdF KHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9h Z2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9h Z2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICg1 KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBl YWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWIyKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JF QVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBG T1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9w MiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTAp OworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2df dGFiMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworSU5TRVJUIElOVE8gZWFnZXJfYWdn X3RhYjEgU0VMRUNUIGkgJSAxNSwgaSAlIDEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAp IGk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMiBTRUxFQ1QgaSAlIDEwLCBpICUgMTUgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMTsK K0FOQUxZWkUgZWFnZXJfYWdnX3RhYjI7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNo ZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50 KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLngg PSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDEu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdI RVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gR1JPVVAg QlkgaGF2aW5nIG90aGVyIG1hdGNoaW5nIGtleQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0 MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRF UiBCWSB0Mi55OworU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkg dDIueSBPUkRFUiBCWSB0Mi55OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBt YXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9u LgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLngsIHN1bSh0MS54KSwg Y291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUg dDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gNSBPUkRFUiBCWSB0 Mi54OworU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFi MSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBI QVZJTkcgYXZnKHQxLngpID4gNSBPUkRFUiBCWSB0Mi54OworCistLSBDaGVjayB3aXRoIGVhZ2Vy IGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00g ZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBK T0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIg QlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3Rh YjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2Fn Z190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKwor LS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK1NFVCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190 YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9h Z2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CitT RUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4g ZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBP TiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CitSRVNFVCBlbmFibGVf aGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CisKKy0tIHRy eSB0aGF0IHdpdGggR0VRTyB0b28KK1NFVCBnZXFvID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQg PSAyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0MS55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hF UkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngs IHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3Rh YjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworUkVT RVQgZ2VxbzsKK1JFU0VUIGdlcW9fdGhyZXNob2xkOworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190 YWIxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMjsKKworCistLQorLS0gVGVzdCB3aXRoIG11 bHRpLWxldmVsIHBhcnRpdGlvbmluZyBzY2hlbWUKKy0tCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbCh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJM RSBlYWdlcl9hZ2dfdGFiX21sX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3Ay IFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxf cDJfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDE1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MyIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7CitD UkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3Rh Yl9tbCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9h Z2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgyNSk7CitDUkVBVEUgVEFCTEUg ZWFnZXJfYWdnX3RhYl9tbF9wM19zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBG T1IgVkFMVUVTIEZST00gKDI1KSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYl9t bCBTRUxFQ1QgaSAlIDMwLCBpICUgMzAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsK KworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiX21sOworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBt YXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24u CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBj b3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQy IE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54 LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2Vy X2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54 OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dy ZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdl cl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBH Uk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3Vu dCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9O IHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnkgT1JERVIgQlkgdDEueTsKKworLS0gQ2hlY2sgd2l0 aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0aW9uCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9t bCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQz LnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsg dDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190 YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLngg PSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gcGFydGlhbCBhZ2dyZWdh dGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55 ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2Fn Z190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQy LnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKK1NFTEVDVCB0My55LCBzdW0o dDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdl cl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBv biB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisKKy0tIHRyeSB0aGF0 IHdpdGggR0VRTyB0b28KK1NFVCBnZXFvID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAyOwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291 bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBP TiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwg c3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsK K1JFU0VUIGdlcW87CitSRVNFVCBnZXFvX3RocmVzaG9sZDsKKworRFJPUCBUQUJMRSBlYWdlcl9h Z2dfdGFiX21sOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2Fn Z3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVnYXRlLnNx bAppbmRleCBhYjA3MGZlZTI0NC4uMTI0Y2MyNjA0NjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCkBAIC0xNCw2ICsxNCw4IEBAIFNFVCBlbmFibGVf cGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciBUTyAwOwogLS0gRGlzYWJsZSBpbmNyZW1lbnRhbCBzb3J0LCB3aGljaCBjYW4gaW5m bHVlbmNlIHNlbGVjdGVkIHBsYW5zIGR1ZSB0byBmdXp6IGZhY3Rvci4KIFNFVCBlbmFibGVfaW5j cmVtZW50YWxfc29ydCBUTyBvZmY7CistLSBEaXNhYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGlj aCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGdlbmVyYXRpb24gb2YgcGFydGl0aW9ud2lzZSBhZ2dy ZWdhdGlvbi4KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRlIFRPIG9mZjsKIAogLS0KIC0tIFRl c3RzIGZvciBsaXN0IHBhcnRpdGlvbmVkIHRhYmxlcy4KZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggM2M4MGQ0OWI2N2UuLjA5NzUyZDU3ZGE0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtNDIsNiArNDIsNyBAQCBBZnRlclRyaWdnZXJzVGFibGVEYXRhCiBBZnRlclRyaWdnZXJz VHJhbnNEYXRhCiBBZ2cKIEFnZ0NsYXVzZUNvc3RzCitBZ2dDbGF1c2VJbmZvCiBBZ2dJbmZvCiBB Z2dQYXRoCiBBZ2dTcGxpdApAQCAtMTExMCw2ICsxMTExLDcgQEAgR3JvdXBQYXRoRXh0cmFEYXRh CiBHcm91cFJlc3VsdFBhdGgKIEdyb3VwU3RhdGUKIEdyb3VwVmFySW5mbworR3JvdXBpbmdFeHBy SW5mbwogR3JvdXBpbmdGdW5jCiBHcm91cGluZ1NldAogR3JvdXBpbmdTZXREYXRhCkBAIC0yNDcz LDYgKzI0NzUsNyBAQCBSZWluZGV4T2JqZWN0VHlwZQogUmVpbmRleFBhcmFtcwogUmVpbmRleFN0 bXQKIFJlaW5kZXhUeXBlCitSZWxBZ2dJbmZvCiBSZWxGaWxlTG9jYXRvcgogUmVsRmlsZUxvY2F0 b3JCYWNrZW5kCiBSZWxGaWxlTnVtYmVyCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000f0b0c6063f9886e2 Content-Type: application/octet-stream; name="v23-0002-Allow-negative-aggtransspace-to-indicate-unbound.patch" Content-Disposition: attachment; filename="v23-0002-Allow-negative-aggtransspace-to-indicate-unbound.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfywprcz1 RnJvbSA0OGI4MDdhOTNjMjljNTM0YzAxNTFiOTUwNTYzYjI4MDIxYWNkOGMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAxMiBTZXAgMjAyNSAxMzoxMTo0NyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIz IDIvMl0gQWxsb3cgbmVnYXRpdmUgYWdndHJhbnNzcGFjZSB0byBpbmRpY2F0ZSB1bmJvdW5kZWQK IHN0YXRlIHNpemUKClRoaXMgcGF0Y2ggcmV1c2VzIHRoZSBleGlzdGluZyBhZ2d0cmFuc3NwYWNl IGluIHBnX2FnZ3JlZ2F0ZSB0bwpzaWduYWwgdGhhdCBhbiBhZ2dyZWdhdGUncyB0cmFuc2l0aW9u IHN0YXRlIGNhbiBncm93IHVuYm91bmRlZGx5LiAgSWYKYWdndHJhbnNzcGFjZSBpcyBzZXQgdG8g YSBuZWdhdGl2ZSB2YWx1ZSwgaXQgbm93IGluZGljYXRlcyB0aGF0IHRoZQp0cmFuc2l0aW9uIHN0 YXRlIG1heSBjb25zdW1lIHVucHJlZGljdGFibGUgb3IgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnks CnN1Y2ggYXMgaW4gYWdncmVnYXRlcyBsaWtlIGFycmF5X2FnZyBvciBzdHJpbmdfYWdnIHRoYXQg YWNjdW11bGF0ZQppbnB1dCByb3dzLgoKVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCBieSB0 aGUgcGxhbm5lciB0byBhdm9pZCBhcHBseWluZwptZW1vcnktc2Vuc2l0aXZlIG9wdGltaXphdGlv bnMgKGUuZy4sIGVhZ2VyIGFnZ3JlZ2F0aW9uKSB3aGVuIHRoZXJlIGlzCmEgcmlzayBvZiBleGNl c3NpdmUgbWVtb3J5IHVzYWdlIGR1cmluZyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgoKQnVtcCBjYXRh bG9nIHZlcnNpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAg ICB8ICA1ICsrKystCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9hZ2dyZWdhdGUuc2dtbCAgIHwg MTEgKysrKysrKystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAg fCAyMyArKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dy ZWdhdGUuZGF0ICAgICB8IDEwICsrKysrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b3ByX3Nhbml0eS5vdXQgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5z cWwgICAgICB8ICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDI2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZTkwOTViZWRmMjEuLjNhY2MyMjIyYTg3IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbApAQCAtNTk2LDcgKzU5NiwxMCBAQAogICAgICAgPC9wYXJhPgogICAgICAg PHBhcmE+CiAgICAgICAgQXBwcm94aW1hdGUgYXZlcmFnZSBzaXplIChpbiBieXRlcykgb2YgdGhl IHRyYW5zaXRpb24gc3RhdGUKLSAgICAgICBkYXRhLCBvciB6ZXJvIHRvIHVzZSBhIGRlZmF1bHQg ZXN0aW1hdGUKKyAgICAgICBkYXRhLiBBIHBvc2l0aXZlIHZhbHVlIHByb3ZpZGVzIGFuIGVzdGlt YXRlOyB6ZXJvIG1lYW5zIHRvCisgICAgICAgdXNlIGEgZGVmYXVsdCBlc3RpbWF0ZS4gQSBuZWdh dGl2ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhlIHN0YXRlCisgICAgICAgZGF0YSBjYW4gZ3JvdyB1bmJv dW5kZWRseSBpbiBzaXplLCBzdWNoIGFzIHdoZW4gdGhlIGFnZ3JlZ2F0ZQorICAgICAgIGFjY3Vt dWxhdGVzIGlucHV0IHJvd3MgKGUuZy4sIGFycmF5X2FnZywgc3RyaW5nX2FnZykuCiAgICAgICA8 L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX2FnZ3JlZ2F0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfYWdncmVn YXRlLnNnbWwKaW5kZXggMjIyZTBhYTVjOWQuLjA0NzJhYzJlODc0IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9hZ2dyZWdhdGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9hZ2dyZWdhdGUuc2dtbApAQCAtMzg0LDkgKzM4NCwxMyBAQCBTRUxFQ1QgY29sIEZS T00gdGFiIE9SREVSIEJZIGNvbCBVU0lORyBzb3J0b3AgTElNSVQgMTsKICAgICAgPHBhcmE+CiAg ICAgICBUaGUgYXBwcm94aW1hdGUgYXZlcmFnZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGFnZ3Jl Z2F0ZSdzIHN0YXRlIHZhbHVlLgogICAgICAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgb21pdHRlZCBv ciBpcyB6ZXJvLCBhIGRlZmF1bHQgZXN0aW1hdGUgaXMgdXNlZAotICAgICAgYmFzZWQgb24gdGhl IDxyZXBsYWNlYWJsZT5zdGF0ZV9kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIGJhc2Vk IG9uIHRoZSA8cmVwbGFjZWFibGU+c3RhdGVfZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4uIElmIHNl dCB0byBhCisgICAgICBuZWdhdGl2ZSB2YWx1ZSwgaXQgaW5kaWNhdGVzIHRoZSBzdGF0ZSBkYXRh IGNhbiBncm93IHVuYm91bmRlZGx5IGluCisgICAgICBzaXplLCBzdWNoIGFzIHdoZW4gdGhlIGFn Z3JlZ2F0ZSBhY2N1bXVsYXRlcyBpbnB1dCByb3dzIChlLmcuLAorICAgICAgYXJyYXlfYWdnLCBz dHJpbmdfYWdnKS4KICAgICAgIFRoZSBwbGFubmVyIHVzZXMgdGhpcyB2YWx1ZSB0byBlc3RpbWF0 ZSB0aGUgbWVtb3J5IHJlcXVpcmVkIGZvciBhCi0gICAgICBncm91cGVkIGFnZ3JlZ2F0ZSBxdWVy eS4KKyAgICAgIGdyb3VwZWQgYWdncmVnYXRlIHF1ZXJ5IGFuZCB0byBhdm9pZCBvcHRpbWl6YXRp b25zIHRoYXQgbWF5IGNhdXNlCisgICAgICBleGNlc3NpdmUgbWVtb3J5IHVzYWdlLgogICAgICA8 L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNTY4LDcgKzU3 Miw4IEBAIFNFTEVDVCBjb2wgRlJPTSB0YWIgT1JERVIgQlkgY29sIFVTSU5HIHNvcnRvcCBMSU1J VCAxOwogICAgICA8cGFyYT4KICAgICAgIFRoZSBhcHByb3hpbWF0ZSBhdmVyYWdlIHNpemUgKGlu IGJ5dGVzKSBvZiB0aGUgYWdncmVnYXRlJ3Mgc3RhdGUKICAgICAgIHZhbHVlLCB3aGVuIHVzaW5n IG1vdmluZy1hZ2dyZWdhdGUgbW9kZS4gIFRoaXMgd29ya3MgdGhlIHNhbWUgYXMKLSAgICAgIDxy ZXBsYWNlYWJsZT5zdGF0ZV9kYXRhX3NpemU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIDxyZXBsYWNl YWJsZT5zdGF0ZV9kYXRhX3NpemU8L3JlcGxhY2VhYmxlPiwgZXhjZXB0IHRoYXQgbmVnYXRpdmUK KyAgICAgIHZhbHVlcyBhcmUgbm90IHVzZWQgdG8gaW5kaWNhdGUgdW5ib3VuZGVkIHN0YXRlIHNp emUuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCmluZGV4IDFhZjQzYmI2MGQyLi5iOGQx YzdlODhhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFu LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKQEAgLTcxOSwx OSArNzE5LDE0IEBAIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZvICpyb290KQog CiAvKgogICogaXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jpc2t5Ci0gKgkgIENoZWNrcyBpZiBhbnkg YWdncmVnYXRlIHBvc2VzIGEgcmlzayBvZiBleGNlc3NpdmUgbWVtb3J5IHVzYWdlIGR1cmluZwor ICoJICBDaGVjayBpZiBhbnkgYWdncmVnYXRlIHBvc2VzIGEgcmlzayBvZiBleGNlc3NpdmUgbWVt b3J5IHVzYWdlIGR1cmluZwogICoJICBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgogICoKLSAqIFdlIGNo ZWNrIGlmIGFueSBhZ2dyZWdhdGUgdXNlcyBJTlRFUk5BTCB0cmFuc2l0aW9uIHR5cGUuICBBbHRo b3VnaCBJTlRFUk5BTAotICogaXMgbWFya2VkIGFzIHBhc3MtYnktdmFsdWUsIGl0IHVzdWFsbHkg cG9pbnRzIHRvIGEgbGFyZ2UgaW50ZXJuYWwgZGF0YQotICogc3RydWN0dXJlIChsaWtlIHRob3Nl IHVzZWQgYnkgc3RyaW5nX2FnZyBvciBhcnJheV9hZ2cpLiAgVGhlc2UgdHJhbnNpdGlvbgotICog c3RhdGVzIGNhbiBncm93IGxhcmdlIGFuZCB0aGVpciBzaXplIGlzIGhhcmQgdG8gZXN0aW1hdGUu ICBBcHBseWluZyBlYWdlcgotICogYWdncmVnYXRpb24gaW4gc3VjaCBjYXNlcyByaXNrcyBoaWdo IG1lbW9yeSB1c2FnZSBzaW5jZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCi0gKiByZXN1bHRzIG1pZ2h0 IGJlIHN0b3JlZCBpbiBqb2luIGhhc2ggdGFibGVzIG9yIG1hdGVyaWFsaXplZCBub2Rlcy4KLSAq Ci0gKiBXZSBleHBsaWNpdGx5IGV4Y2x1ZGUgYWdncmVnYXRlcyB3aXRoIEFWR19BQ0NVTSB0cmFu c2l0aW9uIGZ1bmN0aW9uIGZyb20KLSAqIHRoaXMgY2hlY2ssIGJhc2VkIG9uIHRoZSBhc3N1bXB0 aW9uIHRoYXQgYXZnKCkgYW5kIHN1bSgpIGFyZSBzYWZlIGluIHRoaXMKLSAqIGNvbnRleHQuCisg KiBXZSBjaGVjayBpZiBhbnkgYWdncmVnYXRlIGhhcyBhIG5lZ2F0aXZlIGFnZ3RyYW5zc3BhY2Ug dmFsdWUsIHdoaWNoCisgKiBpbmRpY2F0ZXMgdGhhdCBpdHMgdHJhbnNpdGlvbiBzdGF0ZSBkYXRh IGNhbiBncm93IHVuYm91bmRlZGx5IGluIHNpemUuCisgKiBBcHBseWluZyBlYWdlciBhZ2dyZWdh dGlvbiBpbiBzdWNoIGNhc2VzIHJpc2tzIGhpZ2ggbWVtb3J5IHVzYWdlIHNpbmNlCisgKiBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIHJlc3VsdHMgbWlnaHQgYmUgc3RvcmVkIGluIGpvaW4gaGFzaCB0YWJs ZXMgb3IKKyAqIG1hdGVyaWFsaXplZCBub2Rlcy4KICAqLwogc3RhdGljIGJvb2wKIGlzX3BhcnRp YWxfYWdnX21lbW9yeV9yaXNreShQbGFubmVySW5mbyAqcm9vdCkKQEAgLTc0MiwxMSArNzM3LDcg QEAgaXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jpc2t5KFBsYW5uZXJJbmZvICpyb290KQogCXsKIAkJ QWdnVHJhbnNJbmZvICp0cmFuc2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dUcmFuc0luZm8sIGxjKTsK IAotCQlpZiAodHJhbnNpbmZvLT50cmFuc2ZuX29pZCA9PSBGX05VTUVSSUNfQVZHX0FDQ1VNIHx8 Ci0JCQl0cmFuc2luZm8tPnRyYW5zZm5fb2lkID09IEZfSU5UOF9BVkdfQUNDVU0pCi0JCQljb250 aW51ZTsKLQotCQlpZiAodHJhbnNpbmZvLT5hZ2d0cmFuc3R5cGUgPT0gSU5URVJOQUxPSUQpCisJ CWlmICh0cmFuc2luZm8tPmFnZ3RyYW5zc3BhY2UgPCAwKQogCQkJcmV0dXJuIHRydWU7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKaW5kZXggZDZhYTFmNmVjNDcuLjg3MDc2 OWU4ZjE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CkBAIC01NTgsMjYgKzU1 OCwyOCBAQAogICBhZ2dmaW5hbGZuID0+ICdhcnJheV9hZ2dfZmluYWxmbicsIGFnZ2NvbWJpbmVm biA9PiAnYXJyYXlfYWdnX2NvbWJpbmUnLAogICBhZ2dzZXJpYWxmbiA9PiAnYXJyYXlfYWdnX3Nl cmlhbGl6ZScsCiAgIGFnZ2Rlc2VyaWFsZm4gPT4gJ2FycmF5X2FnZ19kZXNlcmlhbGl6ZScsIGFn Z2ZpbmFsZXh0cmEgPT4gJ3QnLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAorICBh Z2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJywgYWdndHJhbnNzcGFjZSA9PiAnLTEnIH0sCiB7IGFn Z2Zub2lkID0+ICdhcnJheV9hZ2coYW55YXJyYXkpJywgYWdndHJhbnNmbiA9PiAnYXJyYXlfYWdn X2FycmF5X3RyYW5zZm4nLAogICBhZ2dmaW5hbGZuID0+ICdhcnJheV9hZ2dfYXJyYXlfZmluYWxm bicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnYXJyYXlfYWdnX2FycmF5X2NvbWJpbmUnLAogICBhZ2dz ZXJpYWxmbiA9PiAnYXJyYXlfYWdnX2FycmF5X3NlcmlhbGl6ZScsCiAgIGFnZ2Rlc2VyaWFsZm4g PT4gJ2FycmF5X2FnZ19hcnJheV9kZXNlcmlhbGl6ZScsIGFnZ2ZpbmFsZXh0cmEgPT4gJ3QnLAot ICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVy bmFsJywgYWdndHJhbnNzcGFjZSA9PiAnLTEnIH0sCiAKICMgdGV4dAogeyBhZ2dmbm9pZCA9PiAn c3RyaW5nX2FnZyh0ZXh0LHRleHQpJywgYWdndHJhbnNmbiA9PiAnc3RyaW5nX2FnZ190cmFuc2Zu JywKICAgYWdnZmluYWxmbiA9PiAnc3RyaW5nX2FnZ19maW5hbGZuJywgYWdnY29tYmluZWZuID0+ ICdzdHJpbmdfYWdnX2NvbWJpbmUnLAogICBhZ2dzZXJpYWxmbiA9PiAnc3RyaW5nX2FnZ19zZXJp YWxpemUnLAotICBhZ2dkZXNlcmlhbGZuID0+ICdzdHJpbmdfYWdnX2Rlc2VyaWFsaXplJywgYWdn dHJhbnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKKyAgYWdnZGVzZXJpYWxmbiA9PiAnc3RyaW5nX2Fn Z19kZXNlcmlhbGl6ZScsCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLCBhZ2d0cmFuc3Nw YWNlID0+ICctMScgfSwKIAogIyBieXRlYQogeyBhZ2dmbm9pZCA9PiAnc3RyaW5nX2FnZyhieXRl YSxieXRlYSknLAogICBhZ2d0cmFuc2ZuID0+ICdieXRlYV9zdHJpbmdfYWdnX3RyYW5zZm4nLAog ICBhZ2dmaW5hbGZuID0+ICdieXRlYV9zdHJpbmdfYWdnX2ZpbmFsZm4nLAogICBhZ2djb21iaW5l Zm4gPT4gJ3N0cmluZ19hZ2dfY29tYmluZScsIGFnZ3NlcmlhbGZuID0+ICdzdHJpbmdfYWdnX3Nl cmlhbGl6ZScsCi0gIGFnZ2Rlc2VyaWFsZm4gPT4gJ3N0cmluZ19hZ2dfZGVzZXJpYWxpemUnLCBh Z2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAorICBhZ2dkZXNlcmlhbGZuID0+ICdzdHJpbmdf YWdnX2Rlc2VyaWFsaXplJywKKyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcsIGFnZ3RyYW5z c3BhY2UgPT4gJy0xJyB9LAogCiAjIHJhbmdlCiB7IGFnZ2Zub2lkID0+ICdyYW5nZV9pbnRlcnNl Y3RfYWdnKGFueXJhbmdlKScsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91 dAppbmRleCAyMGJmOWVhOWNkZi4uYTM1N2UxZDBjMGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMTQ3MCw3ICsxNDcwLDcgQEAgV0hFUkUgYWdnZm5vaWQg PSAwIE9SIGFnZ3RyYW5zZm4gPSAwIE9SCiAgICAgKGFnZ2tpbmQgPSAnbicgQU5EIGFnZ251bWRp cmVjdGFyZ3MgPiAwKSBPUgogICAgIGFnZ2ZpbmFsbW9kaWZ5IE5PVCBJTiAoJ3InLCAncycsICd3 JykgT1IKICAgICBhZ2dtZmluYWxtb2RpZnkgTk9UIElOICgncicsICdzJywgJ3cnKSBPUgotICAg IGFnZ3RyYW5zdHlwZSA9IDAgT1IgYWdndHJhbnNzcGFjZSA8IDAgT1IgYWdnbXRyYW5zc3BhY2Ug PCAwOworICAgIGFnZ3RyYW5zdHlwZSA9IDAgT1IgYWdnbXRyYW5zc3BhY2UgPCAwOwogIGN0aWQg fCBhZ2dmbm9pZCAKIC0tLS0tLSstLS0tLS0tLS0tCiAoMCByb3dzKQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9v cHJfc2FuaXR5LnNxbAppbmRleCAyZmIzYTg1Mjg3OC4uY2Q2NzRkN2RiY2EgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5pdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL29wcl9zYW5pdHkuc3FsCkBAIC04NDcsNyArODQ3LDcgQEAgV0hFUkUgYWdnZm5vaWQg PSAwIE9SIGFnZ3RyYW5zZm4gPSAwIE9SCiAgICAgKGFnZ2tpbmQgPSAnbicgQU5EIGFnZ251bWRp cmVjdGFyZ3MgPiAwKSBPUgogICAgIGFnZ2ZpbmFsbW9kaWZ5IE5PVCBJTiAoJ3InLCAncycsICd3 JykgT1IKICAgICBhZ2dtZmluYWxtb2RpZnkgTk9UIElOICgncicsICdzJywgJ3cnKSBPUgotICAg IGFnZ3RyYW5zdHlwZSA9IDAgT1IgYWdndHJhbnNzcGFjZSA8IDAgT1IgYWdnbXRyYW5zc3BhY2Ug PCAwOworICAgIGFnZ3RyYW5zdHlwZSA9IDAgT1IgYWdnbXRyYW5zc3BhY2UgPCAwOwogCiAtLSBN YWtlIHN1cmUgdGhlIG1hdGNoaW5nIHBnX3Byb2MgZW50cnkgaXMgc2Vuc2libGUsIHRvby4KIAot LSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000f0b0c6063f9886e2--