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.96) (envelope-from ) id 1whKUL-0009kK-2N for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jul 2026 05:06:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whKUK-004pVO-0y for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jul 2026 05:06:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whKUJ-004pVF-2t for pgsql-hackers@lists.postgresql.org; Wed, 08 Jul 2026 05:06:24 +0000 Received: from mail-vs1-xe34.google.com ([2607:f8b0:4864:20::e34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1whKUH-00000000Avj-20YU for pgsql-hackers@postgresql.org; Wed, 08 Jul 2026 05:06:24 +0000 Received: by mail-vs1-xe34.google.com with SMTP id ada2fe7eead31-73915ff1d64so59279137.1 for ; Tue, 07 Jul 2026 22:06:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783487180; cv=none; d=google.com; s=arc-20260327; b=XOAde4rJ2io1K1xWO0xP3qGMS55vZIr5hpYHQSqtQNf8gXv4jDRXU5Ie20ZAULUzaD DbYhRVIa6xHXmykJEFoKPUxTEZJemOeM+x6t3tTyxO2Yj0Ykje1QWp5K7M9p6c6wzZXG j1b2TusPIEf6RVLHoCq8kYTe/m2aAuSwj5TylzAm6WGQmFUGrspJNqXGTGQod0Q+iggK OiKq3Uvzycny48mCS7r86JB0dVLsxfpmlwF8G0z3gd6z6Kt5cYtYavyllb9CzaDm0qbW HAmgTkM6i1o+rn4agx3shnA91AOIW3YQ79YyDBgw29ChIyWs8tSCfZ+pib5qau7+B1OW AySQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=D4LpunznrQ3i7PZVGcEAfIw8IbScFy8ZeHw0FnX88yo=; fh=i2056YDFNOF/qPB8m0/ebKFq6QCjnqlcvj/22SirOEI=; b=FqBlxZ9VNTqZreoPk8fA/FB24aqz/03gVZ4fyB7vu3uEG0MhSUNEF6nsH2IHbO0jYz 9r5ujSmJ9Ci0F+iCavtQ9K4eGuKTpYVe20TFlw1yOTvaB1wyhRb2J+YrFIuVtvjL+Hf0 Npnqv0l4EU6CCEPqywttuVYF3L1vF8aulERpSmmUsDJKiXVdJ+1aJthanjZA26xIy7Nz LqgcKgp8XY0mJWKl/bxa+IuZORk18GDWALLrsqi4dEiOjZFEfjmVG1duCITSMma3ab6P AR94e0jX/GPVRD+qSiLA1ax2o1Z/q0+Zd8SK03b5PJMy0YBitQYoIDcNazMDvSfBV05G qh6g==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783487180; x=1784091980; darn=postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=D4LpunznrQ3i7PZVGcEAfIw8IbScFy8ZeHw0FnX88yo=; b=f8bgEnvyEwQX7aP1JnLYjrvkMIccX+wPKIsbBPvDFDVgfCvnW0VxHqiSIVRbjY9zdM ehGZ49C7QENOrBsCUtaRXh/cjdi6OraoqgMzwL50v/uCJbhTGZXTGLHk6xBAEhZS8AI0 w7X7wZjuhfiuGy3796KtXbtwy9FNGgWPUvn7/bO+Kkkr1b6CYoVWU79ZFpjjo2EaeQDR s8evoGDoCqruCSwNk/gv7+JmiwiL+TPA8AjF0/9VJrTdVnIy8jm666GunICkYnif8qZu 4opQV1MFzc0usyJ8YzD0ahVoLTfS9PpIf7xiu/iuBEKU9NkYDQiD+HKLUas61g2XsLja SLuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783487180; x=1784091980; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=D4LpunznrQ3i7PZVGcEAfIw8IbScFy8ZeHw0FnX88yo=; b=NdLBmDNk81wotbTY8uDgBrBkGHcPo1irdyQDYb4HNLO9+rPrJZaSdWMkmmphVqvJKi JT492yuGJT+zEHQIrmF/TZOE+XlmmUcwIFw7yew7K/45IbPL1kIwmJI+HprJErfqzCzX EjLzfdgJU6mEW2rDKAPgZaxLsl4WWv6qx6duEGQP6N5M1Amn+ODsX7JFO/JGf8YauPqx V3MF9yrkZ82F9xm6w4oodrQ3XP3GlWc9KUPU0F6Wu7Fa0/z3xAAU6CO7PPp+pgo95I5x 9rWa3ZyLvH0GGCM4zZ+pGe0i7kRfsaC4nL46qI8WzPUce/l1Msx6uGH+TKBmb4rjCnqK IGtw== X-Forwarded-Encrypted: i=1; AHgh+RqA8MGdEo6526fySu3TvTxjFSneK5KGaJwDkS8CZrUy80Q4gLU7e3ResO4krpL41LiSk8bsCyaYSG2/f9Jr@postgresql.org X-Gm-Message-State: AOJu0YyBoQjFyeJt4u9/AFah3kx0Dwt21yiYSDlD4b7ti+b7bNulOH7D fK3SwvHvcYZdPSm5eGj42Os35C9WFyW+cQV28FjOi3AMU+Yxf/nojMcdN3hTmKJ54kzjwRrlem+ 0CcDL7I228sFmeGCblSGcrdQmi4589Sc= X-Gm-Gg: AfdE7ckraMEuflNUnVdEXGmlS+wijKo60HzJA4a+M4WGakrpKjBgGmYSvyhUcq6MS04 +FAZJ9hr8tB3TZ1HVCxmYdwsCn4uyXcZDRsOJwVNfd96y/cGVesNOHSeWgAIu990oXdC2WIzmQj ilUvwcFqlTMhSNIOaB9ayBGPLJEWItFZrLRJxGci47kGaVnOES/z3xPQ/aMR0sOLl58HTnE90GB r2NmqmCHsH4L81HQBAjR+aIUhHf7zz11pk/cGnb0AFB8KiqAUFMgwISiDTDw7flvMQpDbeMzXg5 LpE4RPAgrKIKuGPoC4MioOteoDAdFdsfVncpnSclb/+2h/Lf/FKsin5A+ZH6pTy3GRJOBzRomJg 2p7M0XU7Y1Vn+JTsQMb2cvbxo5qsIjjmbesL5IAKBCmw78UbuowRRiW8ViIi1j5VAWDqlZR4gXl Elut8DrUlDf+9alg== X-Received: by 2002:a05:6102:c54:b0:740:22ba:8a4e with SMTP id ada2fe7eead31-744dfed12b0mr407178137.6.1783487179901; Tue, 07 Jul 2026 22:06:19 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Wed, 8 Jul 2026 13:05:42 +0800 X-Gm-Features: AVVi8CdKSQHsP2R9qHgO5WVYCeSXbVxz2Ja0AIV4TbF2e4T76clF5FLTxJN0DtE Message-ID: Subject: Re: CREATE TABLE LIKE INCLUDING TRIGGERS To: assam258@gmail.com Cc: zsolt.parragi@percona.com, x4mmm@yandex-team.ru, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000d1ea330656127749" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d1ea330656127749 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jul 3, 2026 at 2:28=E2=80=AFPM Henson Choi wro= te: > > I've grouped them by how you might want to act on each. > > 1. Docs / typos (all cosmetic) > Typo fixed. > - 0002: create_table.sgml's INCLUDING TRIGGERS entry doesn't mention t= hat a > trigger's enabled/disabled (tgenabled) state is preserved. Suggeste= d, > after the source-view sentence ("... are not copied."): > "The enabled state of each trigger (as set by ALTER TABLE ... > ENABLE/DISABLE TRIGGER) is preserved on the new table." > I changed it to: + The enabled state of each trigger (references pg_trigger.<= structfield>tgenabled) + is preserved on the new table. > 2. Code -- two fixes to consider > > (a) Concurrent trigger add can fail CREATE TABLE via a duplicate (repr= oduced) > > expandTableLikeClause() walks the source trigger array (trigdesc) by i= ndex, > calling generateClonedTriggerStmt(), whose catalog access can process = an > invalidation and rebuild the source trigdesc. The array is sorted by = tgname, > so if another session adds a lower-sorting trigger mid-walk, the index= es shift > and an already-processed trigger gets cloned again. > > I reproduced it by putting a sleep in the loop: with t100/t101/t102 on= the > source, adding t000 from another session right after t100 was processe= d > (CREATE TRIGGER is compatible with AccessShareLock, so it isn't blocke= d) made > the next iteration see the rebuilt array [t000, t100, t101, t102], wit= h nt=3D1 > pointing at t100 again -- so it tried to create t100 twice on the new = table > and the whole CREATE TABLE failed with "trigger ... already exists". > > The removal side (DROP/ALTER/RENAME TRIGGER) is blocked by AccessExclu= siveLock > against the source's AccessShareLock, so the array can't shrink and no= thing is > missed; the only thing that can run concurrently is CREATE TRIGGER (a > compatible lock), leaving just this duplicate. It's probably a rare p= ath, but > it seems worth addressing. > In v11, I changed it to first collect the trigger OIDs to be copied to the target relation, and then call generateClonedTriggerStmt for each trigger O= ID. > (b) tgenabled channel unification (CreateTriggerFiringOn) > > 0002 adds a tgenabled field to CreateTrigStmt and sets it in several p= laces, > but the deferred-unique trigger in index.c and the FK triggers in > tablecmds.c still call CreateTrigger(). CreateTrigger() hardcodes tge= nabled > to TRIGGER_FIRES_ON_ORIGIN internally, so the trigger->tgenabled just > assigned is a dead store. It's harmless today since the value is alwa= ys > ORIGIN, but it's a field set and then ignored. Unifying those sites o= n > CreateTriggerFiringOn(..., trigger->tgenabled) (or dropping the assign= ment) > would consolidate the two channels. > CreateTrigger change to return ``` CreateTriggerFiringOn(stmt, queryString, relOid, refRelOid, constraintOid, indexOid, funcoid, parentTriggerOid, whenClause, isInternal, in_partition, stmt->tgenabled); ``` should be fine. I also combined two patches (v10-0001, v10-0002) into one (v11-0001). -- jian https://www.enterprisedb.com/ --000000000000d1ea330656127749 Content-Type: application/x-patch; name="v11-0001-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS.patch" Content-Disposition: attachment; filename="v11-0001-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrbm1hnc0 RnJvbSBlMDc1N2NmZTQ2OGJhZWZkZGM0NWQ4ZDUwMzJmNTJjZjVjN2I3ZGUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgOCBKdWwgMjAyNiAxMjo1OTozNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEx IDEvMV0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVESU5HIFRSSUdHRVJTCgpUaGlzIHdpbGwgY29w eSBhbGwgc291cmNlIHRhYmxlJ3MgdHJpZ2dlcnMgdG8gdGhlIG5ldyB0YWJsZS4gVGhpcyBmdW5j dGlvbmFsaXR5CmFsc28gZXh0ZW5kcyB0byBDUkVBVEUgRk9SRUlHTiBUQUJMRSBMSUtFIHN0YXRl bWVudHMuCklmIElOQ0xVRElORyBDT01NRU5UUyBpcyBzcGVjaWZpZWQsIHRyaWdnZXIgY29tbWVu dHMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIG5ldwp0YWJsZS4KVGhpcyBjb21tYW5kIHdpbGwgZmFp bCBpZiB0aGUgc291cmNlIHJlbGF0aW9uJ3MgdHJpZ2dlcnMgY29udGFpbiB3aG9sZS1yb3cKcmVm ZXJlbmNlLgoKSW5jb21wYXRpYmxlIHRyaWdnZXJzIHdpbGwgYmUgc2tpcHBlZC4gIEludGVybmFs IHRyaWdnZXJzIChzdWNoIGFzIGZvcmVpZ24ga2V5CmFzc29jaWF0ZWQgdHJpZ2dlcnMpIHdvbid0 IGJlaW5nIGNvcGllZCB0byBuZXcgdGFibGUuIFRyaWdnZXJzIGZyb20gYSBzb3VyY2UKdmlldyB3 aWxsIG5vdCBiZSBjb3BpZWQgdG8gYSBuZXcgdGFibGUuIEFkZGl0aW9uYWxseSwgY29uc3RyYWlu dCB0cmlnZ2VycyBhbmQKdHJpZ2dlcnMgd2l0aCB0cmFuc2l0aW9uIHRhYmxlcyB3aWxsIG5vdCBi ZSBjb3BpZWQgdG8gYSBuZXcgZm9yZWlnbiB0YWJsZS4KCkF1dGhvcjogamlhbiBoZSA8amlhbi51 bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1t QHlhbmRleC10ZWFtLnJ1PgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFn aUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpUZXN0 ZWQtYnk6IGxha3NobWkgPGxha3NobWlnY2RhY0BnbWFpbC5jb20+CgpkaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhISkFyMkZqYmVCNmdoZ18tTjVkeFg1SlZuaktTTE9VeE95 dDRUZWFBV1FrZ0BtYWlsLmdtYWlsLmNvbQpjb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3Qu cG9zdGdyZXNxbC5vcmcvcGF0Y2gvNjA4NwotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2Zv cmVpZ25fdGFibGUuc2dtbCAgICB8ICAxOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbCAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMg ICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAg ICAgICAgICAgICAgICB8IDIzMSArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDkyICsrKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jICAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY29t bWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX3RhYmxlX2xpa2Uub3V0ICAgIHwgIDI3ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3RyaWdnZXJzLm91dCAgICAgICAgfCAxMjkgKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsICAgIHwgIDI5ICsrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgIDcwICsrKysrKwogMTUgZmlsZXMgY2hh bmdlZCwgNjQ5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX2ZvcmVpZ25fdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX2ZvcmVpZ25fdGFibGUuc2dtbAppbmRleCAwODNmMTY3NzJiNy4uMjkyMzBmMDI1 MzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2ZvcmVpZ25fdGFibGUuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwKQEAgLTYw LDcgKzYwLDcgQEAgQ1JFQVRFIEZPUkVJR04gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWUKIAogPHBocmFzZT5hbmQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxpa2Vfb3B0aW9uPC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CiAKLXsgSU5DTFVESU5HIHwgRVhDTFVESU5HIH0geyBDT01NRU5UUyB8IENPTlNUUkFJ TlRTIHwgREVGQVVMVFMgfCBHRU5FUkFURUQgfCBTVEFUSVNUSUNTIHwgQUxMIH0KK3sgSU5DTFVE SU5HIHwgRVhDTFVESU5HIH0geyBDT01NRU5UUyB8IENPTlNUUkFJTlRTIHwgREVGQVVMVFMgfCBH RU5FUkFURUQgfCBTVEFUSVNUSUNTIHwgVFJJR0dFUlMgfCBBTEwgfQogCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxh Y2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtMjMyLDcgKzIzMiw3IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPklOQ0xVRElORyBDT01NRU5UUzwvbGl0 ZXJhbD48L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgotICAgICAg ICAgIENvbW1lbnRzIGZvciB0aGUgY29waWVkIGNvbHVtbnMsIGNvbnN0cmFpbnRzLCBhbmQgZXh0 ZW5kZWQgc3RhdGlzdGljcworICAgICAgICAgIENvbW1lbnRzIGZvciB0aGUgY29waWVkIGNvbHVt bnMsIGNvbnN0cmFpbnRzLCBleHRlbmRlZCBzdGF0aXN0aWNzLCBhbmQgdHJpZ2dlcnMKICAgICAg ICAgICB3aWxsIGJlIGNvcGllZC4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGV4Y2x1ZGUg Y29tbWVudHMsCiAgICAgICAgICAgcmVzdWx0aW5nIGluIHRoZSBjb3JyZXNwb25kaW5nIG9iamVj dHMgaW4gdGhlIG5ldyB0YWJsZSBoYXZpbmcgbm8KICAgICAgICAgICBjb21tZW50cy4KQEAgLTI4 NCw2ICsyODQsMjEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGVmb3JlaWdudGFibGUtcGFybXMtbGlrZS1vcHQtdHJpZ2dlcnMiPgorICAgICAgICA8 dGVybT48bGl0ZXJhbD5JTkNMVURJTkcgVFJJR0dFUlM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBbGwgbm9uLWludGVybmFs IHRyaWdnZXJzIGFyZSBjb3BpZWQgdG8gdGhlIG5ldyB0YWJsZS4KKyAgICAgICAgICBCZWNhdXNl IHRyaWdnZXJzIG9uIHZpZXdzIGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhvc2Ugb24gdGFi bGVzLCB0cmlnZ2VycyBmcm9tCisgICAgICAgICAgc291cmNlIHZpZXcgYXJlIG5vdCBiZSBjb3Bp ZWQuCisgICAgICAgICAgRnVydGhlcm1vcmUgY29uc3RyYWludCB0cmlnZ2VycyBhbmQgdHJpZ2dl cnMgdGhhdCB1c2UgdHJhbnNpdGlvbiB0YWJsZXMKKyAgICAgICAgICB3aWxsIG5vdCBiZSBjb3Bp ZWQgYmVjYXVzZSBmb3JlaWduIHRhYmxlcyBkbyBub3Qgc3VwcG9ydCB0aGVzZS4KKyAgICAgICAg ICBUaGUgZW5hYmxlZCBzdGF0ZSBvZiBlYWNoIHRyaWdnZXIgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy10cmlnZ2VyIj48c3RydWN0bmFtZT5wZ190cmlnZ2VyPC9zdHJ1Y3Ru YW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPnRnZW5hYmxlZDwvc3RydWN0ZmllbGQ+KQorICAgICAg ICAgIGlzIHByZXNlcnZlZCBvbiB0aGUgbmV3IHRhYmxlLgorICAgICAgICAgPC9wYXJhPgorICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWNyZWF0ZWZvcmVpZ250YWJsZS1wYXJtcy1saWtlLW9wdC1hbGwiPgog ICAgICAgICA8dGVybT48bGl0ZXJhbD5JTkNMVURJTkcgQUxMPC9saXRlcmFsPjwvdGVybT4KICAg ICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggZTM0MjU4 NWM3ZjAuLmNkMWY2YTZhMTIxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTEw MCw3ICsxMDAsNyBAQCBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxh Y2VhYmxlPiBdIFsgT04gVVBEQVRFIDxyZXBsYWNlYWJsZSBjbAogCiA8cGhyYXNlPmFuZCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bGlrZV9vcHRpb248L3JlcGxhY2VhYmxlPiBpczo8 L3BocmFzZT4KIAoteyBJTkNMVURJTkcgfCBFWENMVURJTkcgfSB7IENPTU1FTlRTIHwgQ09NUFJF U1NJT04gfCBDT05TVFJBSU5UUyB8IERFRkFVTFRTIHwgR0VORVJBVEVEIHwgSURFTlRJVFkgfCBJ TkRFWEVTIHwgU1RBVElTVElDUyB8IFNUT1JBR0UgfCBBTEwgfQoreyBJTkNMVURJTkcgfCBFWENM VURJTkcgfSB7IENPTU1FTlRTIHwgQ09NUFJFU1NJT04gfCBDT05TVFJBSU5UUyB8IERFRkFVTFRT IHwgR0VORVJBVEVEIHwgSURFTlRJVFkgfCBJTkRFWEVTIHwgU1RBVElTVElDUyB8IFNUT1JBR0Ug fCBUUklHR0VSUyB8IEFMTCB9CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgog CkBAIC02OTMsNyArNjkzLDcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgPGxp c3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgQ29tbWVudHMgZm9yIHRoZSBjb3Bp ZWQgY29sdW1ucywgY2hlY2sgY29uc3RyYWludHMsCi0gICAgICAgICAgbm90LW51bGwgY29uc3Ry YWludHMsIGluZGV4ZXMsIGFuZCBleHRlbmRlZCBzdGF0aXN0aWNzIHdpbGwgYmUKKyAgICAgICAg ICBub3QtbnVsbCBjb25zdHJhaW50cywgaW5kZXhlcywgZXh0ZW5kZWQgc3RhdGlzdGljcywgYW5k IHRyaWdnZXJzIHdpbGwgYmUKICAgICAgICAgICBjb3BpZWQuICBUaGUgZGVmYXVsdCBiZWhhdmlv ciBpcyB0byBleGNsdWRlIGNvbW1lbnRzLCByZXN1bHRpbmcgaW4KICAgICAgICAgICB0aGUgY29y cmVzcG9uZGluZyBvYmplY3RzIGluIHRoZSBuZXcgdGFibGUgaGF2aW5nIG5vCiAgICAgICAgICAg Y29tbWVudHMuCkBAIC03OTcsNiArNzk3LDE5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgICA8dmFy bGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtbGlrZS1vcHQtdHJpZ2dlcnMiPgor ICAgICAgICA8dGVybT48bGl0ZXJhbD5JTkNMVURJTkcgVFJJR0dFUlM8L2xpdGVyYWw+PC90ZXJt PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBbGwgbm9u LWludGVybmFsIHRyaWdnZXJzIGFyZSBjb3BpZWQgdG8gdGhlIG5ldyB0YWJsZS4KKyAgICAgICAg ICBCZWNhdXNlIHRyaWdnZXJzIG9uIHZpZXdzIGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhv c2Ugb24gdGFibGVzLCB0cmlnZ2VycyBmcm9tCisgICAgICAgICAgc291cmNlIHZpZXcgYXJlIG5v dCBjb3BpZWQuCisgICAgICAgICAgVGhlIGVuYWJsZWQgc3RhdGUgb2YgZWFjaCB0cmlnZ2VyIChy ZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHJpZ2dlciI+PHN0cnVjdG5hbWU+ cGdfdHJpZ2dlcjwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD50Z2VuYWJsZWQ8L3N0 cnVjdGZpZWxkPikKKyAgICAgICAgICBpcyBwcmVzZXJ2ZWQgb24gdGhlIG5ldyB0YWJsZS4KKyAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRy eT4KKwogICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1saWtl LW9wdC1hbGwiPgogICAgICAgICA8dGVybT48bGl0ZXJhbD5JTkNMVURJTkcgQUxMPC9saXRlcmFs PjwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDgxYmJhNGJl YWM3Li5mMTQ2OGI5Mjk1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMjA0MSw2ICsyMDQxLDcgQEAg aW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlDcmVhdGVU cmlnU3RtdCAqdHJpZ2dlciA9IG1ha2VOb2RlKENyZWF0ZVRyaWdTdG10KTsKIAogCQl0cmlnZ2Vy LT5yZXBsYWNlID0gZmFsc2U7CisJCXRyaWdnZXItPnRnZW5hYmxlZCA9IFRSSUdHRVJfRklSRVNf T05fT1JJR0lOOwogCQl0cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSB0cnVlOwogCQl0cmlnZ2VyLT50 cmlnbmFtZSA9IChjb25zdHJhaW50VHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkpID8KIAkJCSJQ S19Db25zdHJhaW50VHJpZ2dlciIgOgpAQCAtMjA1Nyw2ICsyMDU4LDggQEAgaW5kZXhfY29uc3Ry YWludF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQl0cmlnZ2VyLT5kZWZlcnJhYmxl ID0gdHJ1ZTsKIAkJdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gaW5pdGRlZmVycmVkOwogCQl0cmln Z2VyLT5jb25zdHJyZWwgPSBOVUxMOworCQl0cmlnZ2VyLT50cmlnY29tbWVudCA9IE5VTEw7CisJ CXRyaWdnZXItPnRyYW5zZm9ybWVkID0gdHJ1ZTsKIAogCQkodm9pZCkgQ3JlYXRlVHJpZ2dlcih0 cmlnZ2VyLCBOVUxMLCBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWxhdGlvbiksCiAJCQkJCQkJIElu dmFsaWRPaWQsIGNvbk9pZCwgaW5kZXhSZWxhdGlvbklkLCBJbnZhbGlkT2lkLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCA5NWFiYWY0ODkwYy4uZTE1MTQwMTE0YzcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCkBAIC0xNDMzOCw2ICsxNDMzOCw3IEBAIENyZWF0ZUZLQ2hlY2tUcmln Z2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LAogCSAqLwogCWZrX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CiAJZmtfdHJp Z2dlci0+cmVwbGFjZSA9IGZhbHNlOworCWZrX3RyaWdnZXItPnRnZW5hYmxlZCA9IFRSSUdHRVJf RklSRVNfT05fT1JJR0lOOwogCWZrX3RyaWdnZXItPmlzY29uc3RyYWludCA9IHRydWU7CiAJZmtf dHJpZ2dlci0+dHJpZ25hbWUgPSAiUklfQ29uc3RyYWludFRyaWdnZXJfYyI7CiAJZmtfdHJpZ2dl ci0+cmVsYXRpb24gPSBOVUxMOwpAQCAtMTQzNjMsNiArMTQzNjQsOCBAQCBDcmVhdGVGS0NoZWNr VHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3Ry YWludCwKIAlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxl OwogCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVk OwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7CisJZmtfdHJpZ2dlci0+dHJpZ2NvbW1l bnQgPSBOVUxMOworCWZrX3RyaWdnZXItPnRyYW5zZm9ybWVkID0gdHJ1ZTsKIAogCXRyaWdBZGRy ZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCBteVJlbE9pZCwgcmVmUmVsT2lk LAogCQkJCQkJCQljb25zdHJhaW50T2lkLCBpbmRleE9pZCwgSW52YWxpZE9pZCwKQEAgLTE0Mzk3 LDYgKzE0NDAwLDcgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJzKE9pZCBteVJlbE9p ZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAkgKi8KIAlma190cmlnZ2Vy ID0gbWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwogCWZrX3RyaWdnZXItPnJlcGxhY2UgPSBmYWxz ZTsKKwlma190cmlnZ2VyLT50Z2VuYWJsZWQgPSBUUklHR0VSX0ZJUkVTX09OX09SSUdJTjsKIAlm a190cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSB0cnVlOwogCWZrX3RyaWdnZXItPnRyaWduYW1lID0g IlJJX0NvbnN0cmFpbnRUcmlnZ2VyX2EiOwogCWZrX3RyaWdnZXItPnJlbGF0aW9uID0gTlVMTDsK QEAgLTE0NDA4LDYgKzE0NDEyLDggQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJzKE9p ZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAlma190cmln Z2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlma190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5J TDsKIAlma190cmlnZ2VyLT5jb25zdHJyZWwgPSBOVUxMOworCWZrX3RyaWdnZXItPnRyaWdjb21t ZW50ID0gTlVMTDsKKwlma190cmlnZ2VyLT50cmFuc2Zvcm1lZCA9IHRydWU7CiAKIAlzd2l0Y2gg KGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKIAl7CkBAIC0xNDQ1Nyw2ICsxNDQ2Myw3IEBA IGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxP aWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJICovCiAJZmtfdHJpZ2dlciA9IG1ha2VOb2RlKENy ZWF0ZVRyaWdTdG10KTsKIAlma190cmlnZ2VyLT5yZXBsYWNlID0gZmFsc2U7CisJZmtfdHJpZ2dl ci0+dGdlbmFibGVkID0gVFJJR0dFUl9GSVJFU19PTl9PUklHSU47CiAJZmtfdHJpZ2dlci0+aXNj b25zdHJhaW50ID0gdHJ1ZTsKIAlma190cmlnZ2VyLT50cmlnbmFtZSA9ICJSSV9Db25zdHJhaW50 VHJpZ2dlcl9hIjsKIAlma190cmlnZ2VyLT5yZWxhdGlvbiA9IE5VTEw7CkBAIC0xNDQ2OCw2ICsx NDQ3NSw4IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhPaWQgbXlSZWxPaWQsIE9p ZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVz ZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dl ci0+Y29uc3RycmVsID0gTlVMTDsKKwlma190cmlnZ2VyLT50cmlnY29tbWVudCA9IE5VTEw7CisJ ZmtfdHJpZ2dlci0+dHJhbnNmb3JtZWQgPSB0cnVlOwogCiAJc3dpdGNoIChma2NvbnN0cmFpbnQt PmZrX3VwZF9hY3Rpb24pCiAJewpAQCAtMjE0NzEsNiArMjE0ODAsNyBAQCBDbG9uZVJvd1RyaWdn ZXJzVG9QYXJ0aXRpb24oUmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBwYXJ0aXRpb24pCiAKIAkJ dHJpZ1N0bXQgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CiAJCXRyaWdTdG10LT5yZXBsYWNl ID0gZmFsc2U7CisJCXRyaWdTdG10LT50Z2VuYWJsZWQgPSB0cmlnRm9ybS0+dGdlbmFibGVkOwog CQl0cmlnU3RtdC0+aXNjb25zdHJhaW50ID0gT2lkSXNWYWxpZCh0cmlnRm9ybS0+dGdjb25zdHJh aW50KTsKIAkJdHJpZ1N0bXQtPnRyaWduYW1lID0gTmFtZVN0cih0cmlnRm9ybS0+dGduYW1lKTsK IAkJdHJpZ1N0bXQtPnJlbGF0aW9uID0gTlVMTDsKQEAgLTIxNDg1LDYgKzIxNDk1LDggQEAgQ2xv bmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gcGFydGl0 aW9uKQogCQl0cmlnU3RtdC0+ZGVmZXJyYWJsZSA9IHRyaWdGb3JtLT50Z2RlZmVycmFibGU7CiAJ CXRyaWdTdG10LT5pbml0ZGVmZXJyZWQgPSB0cmlnRm9ybS0+dGdpbml0ZGVmZXJyZWQ7CiAJCXRy aWdTdG10LT5jb25zdHJyZWwgPSBOVUxMOyAvKiBwYXNzZWQgc2VwYXJhdGVseSAqLworCQl0cmln U3RtdC0+dHJpZ2NvbW1lbnQgPSBOVUxMOworCQl0cmlnU3RtdC0+dHJhbnNmb3JtZWQgPSB0cnVl OwogCiAJCUNyZWF0ZVRyaWdnZXJGaXJpbmdPbih0cmlnU3RtdCwgTlVMTCwgUmVsYXRpb25HZXRS ZWxpZChwYXJ0aXRpb24pLAogCQkJCQkJCSAgdHJpZ0Zvcm0tPnRnY29uc3RycmVsaWQsIEludmFs aWRPaWQsIEludmFsaWRPaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggNDAxYmFkZGJmYzYu LmNhMWFiZTFjMTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC0zMSw2ICszMSw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2Vy LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvY29t bWVudC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKQEAgLTE2OCw3 ICsxNjksNyBAQCBDcmVhdGVUcmlnZ2VyKGNvbnN0IENyZWF0ZVRyaWdTdG10ICpzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJQ3JlYXRlVHJpZ2dlckZpcmluZ09uKHN0bXQsIHF1ZXJ5 U3RyaW5nLCByZWxPaWQsIHJlZlJlbE9pZCwKIAkJCQkJCQkgIGNvbnN0cmFpbnRPaWQsIGluZGV4 T2lkLCBmdW5jb2lkLAogCQkJCQkJCSAgcGFyZW50VHJpZ2dlck9pZCwgd2hlbkNsYXVzZSwgaXNJ bnRlcm5hbCwKLQkJCQkJCQkgIGluX3BhcnRpdGlvbiwgVFJJR0dFUl9GSVJFU19PTl9PUklHSU4p OworCQkJCQkJCSAgaW5fcGFydGl0aW9uLCBzdG10LT50Z2VuYWJsZWQpOwogfQogCiAvKgpAQCAt NjAzLDEzICs2MDQsMTkgQEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKGNvbnN0IENyZWF0ZVRyaWdT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkJCQkJICAgZmFsc2Us IGZhbHNlKTsKIAkJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5zaXRlbSwgZmFsc2UsIHRydWUs IHRydWUpOwogCi0JCS8qIFRyYW5zZm9ybSBleHByZXNzaW9uLiAgQ29weSB0byBiZSBzdXJlIHdl IGRvbid0IG1vZGlmeSBvcmlnaW5hbCAqLwotCQl3aGVuQ2xhdXNlID0gdHJhbnNmb3JtV2hlcmVD bGF1c2UocHN0YXRlLAotCQkJCQkJCQkJCSAgY29weU9iamVjdChzdG10LT53aGVuQ2xhdXNlKSwK LQkJCQkJCQkJCQkgIEVYUFJfS0lORF9UUklHR0VSX1dIRU4sCi0JCQkJCQkJCQkJICAiV0hFTiIp OwotCQkvKiB3ZSBoYXZlIHRvIGZpeCBpdHMgY29sbGF0aW9ucyB0b28gKi8KLQkJYXNzaWduX2V4 cHJfY29sbGF0aW9ucyhwc3RhdGUsIHdoZW5DbGF1c2UpOworCQlpZiAoc3RtdC0+dHJhbnNmb3Jt ZWQpCisJCQl3aGVuQ2xhdXNlID0gc3RtdC0+d2hlbkNsYXVzZTsKKwkJZWxzZQorCQl7CisJCQkv KiBUcmFuc2Zvcm0gZXhwcmVzc2lvbi4gIENvcHkgdG8gYmUgc3VyZSB3ZSBkb24ndCBtb2RpZnkg b3JpZ2luYWwgKi8KKwkJCXdoZW5DbGF1c2UgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUs CisJCQkJCQkJCQkJCSAgY29weU9iamVjdChzdG10LT53aGVuQ2xhdXNlKSwKKwkJCQkJCQkJCQkJ ICBFWFBSX0tJTkRfVFJJR0dFUl9XSEVOLAorCQkJCQkJCQkJCQkgICJXSEVOIik7CisKKwkJCS8q IHdlIGhhdmUgdG8gZml4IGl0cyBjb2xsYXRpb25zIHRvbyAqLworCQkJYXNzaWduX2V4cHJfY29s bGF0aW9ucyhwc3RhdGUsIHdoZW5DbGF1c2UpOworCQl9CiAKIAkJLyoKIAkJICogQ2hlY2sgZm9y IGRpc2FsbG93ZWQgcmVmZXJlbmNlcyB0byBPTEQvTkVXLgpAQCAtMTIxOCw2ICsxMjI1LDExIEBA IENyZWF0ZVRyaWdnZXJGaXJpbmdPbihjb25zdCBDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJLyogS2VlcCBsb2NrIG9uIHRhcmdldCByZWwgdW50aWwgZW5k IG9mIHhhY3QgKi8KIAl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKKwkvKiBBZGQgYW55IHJl cXVlc3RlZCBjb21tZW50ICovCisJaWYgKHN0bXQtPnRyaWdjb21tZW50ICE9IE5VTEwpCisJCUNy ZWF0ZUNvbW1lbnRzKHRyaWdvaWQsIFRyaWdnZXJSZWxhdGlvbklkLCAwLAorCQkJCQkgICBzdG10 LT50cmlnY29tbWVudCk7CisKIAlyZXR1cm4gbXlzZWxmOwogfQogCkBAIC02OTI5LDMgKzY5NDEs MjA2IEBAIEFmdGVyVHJpZ2dlcklzQWN0aXZlKHZvaWQpCiB7CiAJcmV0dXJuIGFmdGVyVHJpZ2dl cnMuZmlyaW5nX2RlcHRoID4gMDsKIH0KKworLyoKKyAqIER1cGxpY2F0ZSB0aGUgdHJpZ2dlciBk ZWZpbml0aW9uIGZvciB0aGUgbmV3IHJlbGF0aW9uOiBVc2UgdGhlIHNvdXJjZSB0cmlnZ2VyCisg KiAoc291cmNlX3RyaWdpZCBmcm9tIHNvdXJjZV9yZWwpIHRvIGluaXRpYWxpemUgYSBDcmVhdGVU cmlnU3RtdCBmb3IgdGhlIHRhcmdldAorICogcmVsYXRpb24gKGhlYXBSZWwpLgorICoKKyAqIEF0 dHJpYnV0ZSBudW1iZXJzIGluIGV4cHJlc3Npb24gVmFycyBhcmUgYWRqdXN0ZWQgYWNjb3JkaW5n IHRvIGF0dG1hcC4KKyAqLworQ3JlYXRlVHJpZ1N0bXQgKgorZ2VuZXJhdGVDbG9uZWRUcmlnZ2Vy U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgT2lkIHNvdXJjZV90cmlnaWQsCisJCQkJCQkgIFJlbGF0 aW9uIHNvdXJjZV9yZWwsIGNvbnN0IEF0dHJNYXAgKmF0dG1hcCkKK3sKKwlIZWFwVHVwbGUJdHJp Z2dlclR1cGxlOworCUhlYXBUdXBsZQlwcm9jdHVwOworCUZvcm1fcGdfdHJpZ2dlciB0cmlnRm9y bTsKKwlGb3JtX3BnX3Byb2MgcHJvY2Zvcm07CisJUmVsYXRpb24JcGdfdHJpZ2dlcjsKKwlSYW5n ZVZhciAgICpjb25zdHJyZWwgPSBOVUxMOworCVN5c1NjYW5EZXNjIHRnc2NhbjsKKwlTY2FuS2V5 RGF0YSBza2V5WzFdOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251bGw7CisJTm9kZQkgICAq cXVhbCA9IE5VTEw7CisJTGlzdAkgICAqdHJpZ2FyZ3MgPSBOSUw7CisJTGlzdAkgICAqY29scyA9 IE5JTDsKKwlMaXN0CSAgICpmdW5jbmFtZSA9IE5JTDsKKwlMaXN0CSAgICp0cmFuc2l0aW9uUmVs cyA9IE5JTDsKKwljaGFyCSAgICpmdW5jc2NoZW1hOworCUNyZWF0ZVRyaWdTdG10ICp0cmlnU3Rt dDsKKworCXBnX3RyaWdnZXIgPSB0YWJsZV9vcGVuKFRyaWdnZXJSZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCisJLyogRmluZCB0aGUgdHJpZ2dlciB0byBjb3B5ICovCisJU2NhbktleUlu aXQoJnNrZXlbMF0sCisJCQkJQW51bV9wZ190cmlnZ2VyX29pZCwKKwkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShzb3VyY2VfdHJpZ2lkKSk7 CisKKwl0Z3NjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfdHJpZ2dlciwgVHJpZ2dlck9pZElu ZGV4SWQsIHRydWUsCisJCQkJCQkJCU5VTEwsIDEsIHNrZXkpOworCisJdHJpZ2dlclR1cGxlID0g c3lzdGFibGVfZ2V0bmV4dCh0Z3NjYW4pOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cmlnZ2Vy VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgdHVwbGUgZm9yIHRyaWdnZXIg JXUiLCBzb3VyY2VfdHJpZ2lkKTsKKworCXRyaWdGb3JtID0gKEZvcm1fcGdfdHJpZ2dlcikgR0VU U1RSVUNUKHRyaWdnZXJUdXBsZSk7CisKKwkvKiBSZWNvbnN0cnVjdCB0cmlnZ2VyIGZ1bmN0aW9u IFN0cmluZyBsaXN0ICovCisJcHJvY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmpl Y3RJZEdldERhdHVtKHRyaWdGb3JtLT50Z2ZvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo cHJvY3R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmdW5jdGlv biAldSIsIHRyaWdGb3JtLT50Z2ZvaWQpOworCXByb2Nmb3JtID0gKEZvcm1fcGdfcHJvYykgR0VU U1RSVUNUKHByb2N0dXApOworCisJZnVuY3NjaGVtYSA9IGdldF9uYW1lc3BhY2VfbmFtZShwcm9j Zm9ybS0+cHJvbmFtZXNwYWNlKTsKKwlmdW5jbmFtZSA9IGxpc3RfbWFrZTIobWFrZVN0cmluZyhm dW5jc2NoZW1hKSwKKwkJCQkJCSAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIocHJvY2Zvcm0t PnByb25hbWUpKSkpOworCVJlbGVhc2VTeXNDYWNoZShwcm9jdHVwKTsKKworCS8qCisJICogSWYg dGhlcmUgaXMgYSBjb2x1bW4gbGlzdCwgdHJhbnNmb3JtIGl0IHRvIGEgbGlzdCBvZiBjb2x1bW4g bmFtZXMuIE5vdGUKKwkgKiB3ZSBkb24ndCBuZWVkIHRvIG1hcCB0aGlzIGxpc3QgaW4gYW55IHdh eSAuLi4KKwkgKi8KKwlpZiAodHJpZ0Zvcm0tPnRnYXR0ci5kaW0xID4gMCkKKwl7CisJCWZvciAo aW50IGkgPSAwOyBpIDwgdHJpZ0Zvcm0tPnRnYXR0ci5kaW0xOyBpKyspCisJCXsKKwkJCUZvcm1f cGdfYXR0cmlidXRlIGNvbDsKKworCQkJY29sID0gVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERl c2NyKHNvdXJjZV9yZWwpLAorCQkJCQkJCQl0cmlnRm9ybS0+dGdhdHRyLnZhbHVlc1tpXSAtIDEp OworCQkJY29scyA9IGxhcHBlbmQoY29scywKKwkJCQkJCSAgIG1ha2VTdHJpbmcocHN0cmR1cChO YW1lU3RyKGNvbC0+YXR0bmFtZSkpKSk7CisJCX0KKwl9CisKKwkvKiBSZWNvbnN0cnVjdCB0cmln Z2VyIGFyZ3VtZW50cyBsaXN0ICovCisJaWYgKHRyaWdGb3JtLT50Z25hcmdzID4gMCkKKwl7CisJ CWJ5dGVhCSAgICp2YWw7CisJCWNoYXIJICAgKnA7CisKKwkJdmFsID0gRGF0dW1HZXRCeXRlYVBQ KGZhc3RnZXRhdHRyKHRyaWdnZXJUdXBsZSwKKwkJCQkJCQkJCQkgIEFudW1fcGdfdHJpZ2dlcl90 Z2FyZ3MsCisJCQkJCQkJCQkJICBSZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIpLAorCQkJCQkJ CQkJCSAgJmlzbnVsbCkpOworCQlpZiAoaXNudWxsKQorCQkJZWxvZyhFUlJPUiwgInRnYXJncyBp cyBudWxsIGluIHRyaWdnZXIgXCIlc1wiIGZvciByZWxhdGlvbiBcIiVzXCIiLAorCQkJCSBOYW1l U3RyKHRyaWdGb3JtLT50Z25hbWUpLAorCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzb3Vy Y2VfcmVsKSk7CisKKwkJcCA9IChjaGFyICopIFZBUkRBVEFfQU5ZKHZhbCk7CisKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCB0cmlnRm9ybS0+dGduYXJnczsgaSsrKQorCQl7CisJCQl0cmlnYXJncyA9 IGxhcHBlbmQodHJpZ2FyZ3MsIG1ha2VTdHJpbmcocHN0cmR1cChwKSkpOworCQkJcCArPSBzdHJs ZW4ocCkgKyAxOworCQl9CisJfQorCisJLyogSWYgdGhlIHRyaWdnZXIgaGFzIGEgV0hFTiBxdWFs aWZpY2F0aW9uLCBhZGQgdGhhdCAqLworCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ2dlclR1cGxl LCBBbnVtX3BnX3RyaWdnZXJfdGdxdWFsLAorCQkJCQkJUmVsYXRpb25HZXREZXNjcihwZ190cmln Z2VyKSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQlib29sCQlmb3VuZF93aG9sZV9y b3c7CisKKwkJcXVhbCA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbHVlKSk7 CisKKwkJLyogQWRqdXN0IFZhcnMgdG8gbWF0Y2ggbmV3IHRhYmxlJ3MgY29sdW1uIG51bWJlcmlu ZyAqLworCQlxdWFsID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyhxdWFsLCBQUlMyX05FV19WQVJOTywg MCwKKwkJCQkJCQkJICAgYXR0bWFwLAorCQkJCQkJCQkgICBJbnZhbGlkT2lkLAorCQkJCQkJCQkg ICAmZm91bmRfd2hvbGVfcm93KTsKKworCQkvKiBBcyBpbiBleHBhbmRUYWJsZUxpa2VDbGF1c2Us IHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzICovCisJCWlmIChmb3VuZF93aG9sZV9yb3cpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJl bmNlIiksCisJCQkJCWVycmRldGFpbCgiVHJpZ2dlciBcIiVzXCIgY29udGFpbnMgYSB3aG9sZS1y b3cgdGFibGUgcmVmZXJlbmNlLiIsCisJCQkJCQkJICBOYW1lU3RyKHRyaWdGb3JtLT50Z25hbWUp KSk7CisKKwkJcXVhbCA9IG1hcF92YXJpYWJsZV9hdHRub3MocXVhbCwgUFJTMl9PTERfVkFSTk8s IDAsCisJCQkJCQkJCSAgIGF0dG1hcCwKKwkJCQkJCQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCQkJ ICAgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJLyogQXMgaW4gZXhwYW5kVGFibGVMaWtlQ2xhdXNl LCByZWplY3Qgd2hvbGUtcm93IHZhcmlhYmxlcyAqLworCQlpZiAoZm91bmRfd2hvbGVfcm93KQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCWVycm1zZygiY2Fubm90IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJlZmVy ZW5jZSIpLAorCQkJCQllcnJkZXRhaWwoIlRyaWdnZXIgXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUt cm93IHRhYmxlIHJlZmVyZW5jZS4iLAorCQkJCQkJCSAgTmFtZVN0cih0cmlnRm9ybS0+dGduYW1l KSkpOworCX0KKworCS8qIFJlY29uc3RydWN0IHRyaWdnZXIgb2xkIHRyYW5zaXRpb24gdGFibGUg Ki8KKwl2YWx1ZSA9IGZhc3RnZXRhdHRyKHRyaWdnZXJUdXBsZSwgQW51bV9wZ190cmlnZ2VyX3Rn b2xkdGFibGUsCisJCQkJCQlSZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIpLCAmaXNudWxsKTsK KwlpZiAoIWlzbnVsbCkKKwl7CisJCVRyaWdnZXJUcmFuc2l0aW9uICpvbGQgPSBtYWtlTm9kZShU cmlnZ2VyVHJhbnNpdGlvbik7CisKKwkJb2xkLT5pc05ldyA9IGZhbHNlOworCQlvbGQtPm5hbWUg PSBwc3RyZHVwKE5hbWVTdHIoKkRhdHVtR2V0TmFtZSh2YWx1ZSkpKTsKKwkJb2xkLT5pc1RhYmxl ID0gdHJ1ZTsKKwkJdHJhbnNpdGlvblJlbHMgPSBsYXBwZW5kKHRyYW5zaXRpb25SZWxzLCBvbGQp OworCX0KKworCS8qIFJlY29uc3RydWN0IHRyaWdnZXIgbmV3IHRyYW5zaXRpb24gdGFibGUgKi8K Kwl2YWx1ZSA9IGZhc3RnZXRhdHRyKHRyaWdnZXJUdXBsZSwgQW51bV9wZ190cmlnZ2VyX3RnbmV3 dGFibGUsCisJCQkJCQlSZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIpLAorCQkJCQkJJmlzbnVs bCk7CisJaWYgKCFpc251bGwpCisJeworCQlUcmlnZ2VyVHJhbnNpdGlvbiAqbmV3ID0gbWFrZU5v ZGUoVHJpZ2dlclRyYW5zaXRpb24pOworCisJCW5ldy0+aXNOZXcgPSB0cnVlOworCQluZXctPm5h bWUgPSBwc3RyZHVwKE5hbWVTdHIoKkRhdHVtR2V0TmFtZSh2YWx1ZSkpKTsKKwkJbmV3LT5pc1Rh YmxlID0gdHJ1ZTsKKwkJdHJhbnNpdGlvblJlbHMgPSBsYXBwZW5kKHRyYW5zaXRpb25SZWxzLCBu ZXcpOworCX0KKworCS8qIFJlY29uc3RydWN0IHRyaWdnZXIgY29uc3RyYWludCdzIEZST00gdGFi bGUgKi8KKwlpZiAoT2lkSXNWYWxpZCh0cmlnRm9ybS0+dGdjb25zdHJyZWxpZCkpCisJeworCQkv KgorCQkgKiBBY3F1aXJlIHRoZSBBY2Nlc3NTaGFyZUxvY2sgbG9jayBvbiB0Z2NvbnN0cnJlbGlk IG5vdywgYXMgaXQgd2lsbAorCQkgKiBiZSByZXF1aXJlZCBsYXRlciBpbiBDcmVhdGVUcmlnZ2Vy RmlyaW5nT24uCisJCSAqLworCQlMb2NrUmVsYXRpb25PaWQodHJpZ0Zvcm0tPnRnY29uc3RycmVs aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJY29uc3RycmVsID0KKwkJCW1ha2VSYW5nZVZhcihn ZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UodHJpZ0Zvcm0tPnRnY29uc3RycmVs aWQpKSwKKwkJCQkJCSBnZXRfcmVsX25hbWUodHJpZ0Zvcm0tPnRnY29uc3RycmVsaWQpLAorCQkJ CQkJIC0xKTsKKwl9CisKKwl0cmlnU3RtdCA9IG1ha2VOb2RlKENyZWF0ZVRyaWdTdG10KTsKKwl0 cmlnU3RtdC0+cmVwbGFjZSA9IGZhbHNlOworCXRyaWdTdG10LT50Z2VuYWJsZWQgPSB0cmlnRm9y bS0+dGdlbmFibGVkOworCXRyaWdTdG10LT5pc2NvbnN0cmFpbnQgPSBPaWRJc1ZhbGlkKHRyaWdG b3JtLT50Z2NvbnN0cmFpbnQpOworCXRyaWdTdG10LT50cmlnbmFtZSA9IHBzdHJkdXAoTmFtZVN0 cih0cmlnRm9ybS0+dGduYW1lKSk7CisJdHJpZ1N0bXQtPnJlbGF0aW9uID0gaGVhcFJlbDsKKwl0 cmlnU3RtdC0+ZnVuY25hbWUgPSBmdW5jbmFtZTsKKwl0cmlnU3RtdC0+YXJncyA9IHRyaWdhcmdz OworCXRyaWdTdG10LT5yb3cgPSBUUklHR0VSX0ZPUl9ST1codHJpZ0Zvcm0tPnRndHlwZSk7CisJ dHJpZ1N0bXQtPnRpbWluZyA9IHRyaWdGb3JtLT50Z3R5cGUgJiBUUklHR0VSX1RZUEVfVElNSU5H X01BU0s7CisJdHJpZ1N0bXQtPmV2ZW50cyA9IHRyaWdGb3JtLT50Z3R5cGUgJiBUUklHR0VSX1RZ UEVfRVZFTlRfTUFTSzsKKwl0cmlnU3RtdC0+Y29sdW1ucyA9IGNvbHM7CisJdHJpZ1N0bXQtPndo ZW5DbGF1c2UgPSBxdWFsOworCXRyaWdTdG10LT50cmFuc2l0aW9uUmVscyA9IHRyYW5zaXRpb25S ZWxzOworCXRyaWdTdG10LT5kZWZlcnJhYmxlID0gdHJpZ0Zvcm0tPnRnZGVmZXJyYWJsZTsKKwl0 cmlnU3RtdC0+aW5pdGRlZmVycmVkID0gdHJpZ0Zvcm0tPnRnaW5pdGRlZmVycmVkOworCXRyaWdT dG10LT5jb25zdHJyZWwgPSBjb25zdHJyZWw7CisJdHJpZ1N0bXQtPnRyaWdjb21tZW50ID0gTlVM TDsKKwl0cmlnU3RtdC0+dHJhbnNmb3JtZWQgPSB0cnVlOworCisJc3lzdGFibGVfZW5kc2Nhbih0 Z3NjYW4pOworCXRhYmxlX2Nsb3NlKHBnX3RyaWdnZXIsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwly ZXR1cm4gdHJpZ1N0bXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uZTBkZmNlNjky NTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtODIyLDcgKzgyMiw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAKIAlUQUJMRSBUQUJMRVMgVEFCTEVTQU1QTEUgVEFCTEVTUEFDRSBUQVJHRVQgVEVNUCBU RU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KIAlUSUVTIFRJTUUgVElNRVNUQU1QIFRPIFRS QUlMSU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9STQotCVRSRUFUIFRSSUdHRVIgVFJJTSBUUlVFX1AK KwlUUkVBVCBUUklHR0VSIFRSSUdHRVJTIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBU WVBFX1AgVFlQRVNfUAogCiAJVUVTQ0FQRSBVTkJPVU5ERUQgVU5DT05ESVRJT05BTCBVTkNPTU1J VFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBVTklRVUUgVU5LTk9XTgpAQCAtNDM1Myw2ICs0MzUzLDcg QEAgVGFibGVMaWtlT3B0aW9uOgogCQkJCXwgSU5ERVhFUwkJCXsgJCQgPSBDUkVBVEVfVEFCTEVf TElLRV9JTkRFWEVTOyB9CiAJCQkJfCBTVEFUSVNUSUNTCQl7ICQkID0gQ1JFQVRFX1RBQkxFX0xJ S0VfU1RBVElTVElDUzsgfQogCQkJCXwgU1RPUkFHRQkJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElL RV9TVE9SQUdFOyB9CisJCQkJfCBUUklHR0VSUwkJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9U UklHR0VSUzsgfQogCQkJCXwgQUxMCQkJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEw7IH0K IAkJOwogCkBAIC02MTk1LDYgKzYxOTYsNyBAQCBDcmVhdGVUcmlnU3RtdDoKIAkJCQkJQ3JlYXRl VHJpZ1N0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CiAKIAkJCQkJbi0+cmVwbGFj ZSA9ICQyOworCQkJCQluLT50Z2VuYWJsZWQgPSBUUklHR0VSX0ZJUkVTX09OX09SSUdJTjsKIAkJ CQkJbi0+aXNjb25zdHJhaW50ID0gZmFsc2U7CiAJCQkJCW4tPnRyaWduYW1lID0gJDQ7CiAJCQkJ CW4tPnJlbGF0aW9uID0gJDg7CkBAIC02MjA5LDYgKzYyMTEsOCBAQCBDcmVhdGVUcmlnU3RtdDoK IAkJCQkJbi0+ZGVmZXJyYWJsZSA9IGZhbHNlOwogCQkJCQluLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKIAkJCQkJbi0+Y29uc3RycmVsID0gTlVMTDsKKwkJCQkJbi0+dHJpZ2NvbW1lbnQgPSBOVUxM OworCQkJCQluLT50cmFuc2Zvcm1lZCA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQogCQkgIHwgQ1JFQVRFIG9wdF9vcl9yZXBsYWNlIENPTlNUUkFJTlQgVFJJR0dFUiBuYW1l IEFGVEVSIFRyaWdnZXJFdmVudHMgT04KQEAgLTYyNDQsNiArNjI0OCw3IEBAIENyZWF0ZVRyaWdT dG10OgogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJ CQkJCQkJCSBlcnJtc2coIkNSRUFURSBPUiBSRVBMQUNFIENPTlNUUkFJTlQgVFJJR0dFUiBpcyBu b3Qgc3VwcG9ydGVkIiksCiAJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDEpKSk7CisJCQkJ CW4tPnRnZW5hYmxlZCA9IFRSSUdHRVJfRklSRVNfT05fT1JJR0lOOwogCQkJCQluLT5pc2NvbnN0 cmFpbnQgPSB0cnVlOwogCQkJCQluLT50cmlnbmFtZSA9ICQ1OwogCQkJCQluLT5yZWxhdGlvbiA9 ICQ5OwpAQCAtNjI1OSw2ICs2MjY0LDggQEAgQ3JlYXRlVHJpZ1N0bXQ6CiAJCQkJCQkJCSAgICZu LT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCAmZHVtbXksCiAJCQkJCQkJCSAgIE5VTEws IE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCW4tPmNvbnN0cnJlbCA9ICQxMDsKKwkJCQkJbi0+dHJp Z2NvbW1lbnQgPSBOVUxMOworCQkJCQluLT50cmFuc2Zvcm1lZCA9IGZhbHNlOwogCQkJCQkkJCA9 IChOb2RlICopIG47CiAJCQkJfQogCQk7CkBAIC0xOTEzMCw2ICsxOTEzNyw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgVFJBTlNBQ1RJT04KIAkJCXwgVFJBTlNGT1JNCiAJCQl8IFRSSUdH RVIKKwkJCXwgVFJJR0dFUlMKIAkJCXwgVFJVTkNBVEUKIAkJCXwgVFJVU1RFRAogCQkJfCBUWVBF X1AKQEAgLTE5Nzk1LDYgKzE5ODAzLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBUUkFO U0ZPUk0KIAkJCXwgVFJFQVQKIAkJCXwgVFJJR0dFUgorCQkJfCBUUklHR0VSUwogCQkJfCBUUklN CiAJCQl8IFRSVUVfUAogCQkJfCBUUlVOQ0FURQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK aW5kZXggNThjY2M3YjY4ZjIuLjRjZDU1NGI4ZjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMKQEAgLTQwLDEyICs0MCwxNCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N0YXRpc3RpY19leHQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2Uu aCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90 YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVz L25vZGVGdW5jcy5oIgpAQCAtMTMxNiw3ICsxMzE4LDggQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xh dXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9j bGEKIAkJIENSRUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRCB8CiAJCSBDUkVBVEVfVEFCTEVfTElL RV9DT05TVFJBSU5UUyB8CiAJCSBDUkVBVEVfVEFCTEVfTElLRV9JTkRFWEVTIHwKLQkJIENSRUFU RV9UQUJMRV9MSUtFX1NUQVRJU1RJQ1MpKQorCQkgQ1JFQVRFX1RBQkxFX0xJS0VfU1RBVElTVElD UyB8CisJCSBDUkVBVEVfVEFCTEVfTElLRV9UUklHR0VSUykpCiAJewogCQl0YWJsZV9saWtlX2Ns YXVzZS0+cmVsYXRpb25PaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAkJY3h0LT5s aWtlY2xhdXNlcyA9IGxhcHBlbmQoY3h0LT5saWtlY2xhdXNlcywgdGFibGVfbGlrZV9jbGF1c2Up OwpAQCAtMTYyMCw2ICsxNjIzLDkzIEBAIGV4cGFuZFRhYmxlTGlrZUNsYXVzZShSYW5nZVZhciAq aGVhcFJlbCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYXVzZSkKIAkJbGlzdF9mcmVl KHBhcmVudF9leHRzdGF0cyk7CiAJfQogCisJLyogUHJvY2VzcyB0cmlnZ2VycyBpZiByZXF1aXJl ZCAqLworCWlmICgodGFibGVfbGlrZV9jbGF1c2UtPm9wdGlvbnMgJiBDUkVBVEVfVEFCTEVfTElL RV9UUklHR0VSUykgJiYKKwkJKHJlbGF0aW9uLT50cmlnZGVzYyAhPSBOVUxMKSAmJgorCQkocmVs YXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCSByZWxhdGlv bi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwKKwkJIHJl bGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFKSkKKwl7CisJ CWJvb2wJCWluY2x1ZGVfY29tbWVudHM7CisJCUxpc3QJICAgKmNsb25lZF90cmlncyA9IE5JTDsK KworCQlpbmNsdWRlX2NvbW1lbnRzID0gKHRhYmxlX2xpa2VfY2xhdXNlLT5vcHRpb25zICYgQ1JF QVRFX1RBQkxFX0xJS0VfQ09NTUVOVFMpOworCisJCS8qCisJCSAqIGdlbmVyYXRlQ2xvbmVkVHJp Z2dlclN0bXQoKSBiZWxvdyBkb2VzIGNhdGFsb2cgYWNjZXNzZXMgKGUuZy4gYQorCQkgKiBzeXNj YWNoZSBsb29rdXAgb24gdGhlIHRyaWdnZXIncyBmdW5jdGlvbiksIGFuZCBhbnkgc3VjaCBhY2Nl c3MgY2FuCisJCSAqIGNhdXNlIEFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCkgdG8gcnVuLCB3 aGljaCBjYW4gcmVidWlsZAorCQkgKiByZWxhdGlvbi0+dHJpZ2Rlc2MgZnJvbSBzY3JhdGNoIGlm IGEgY29uY3VycmVudCBzZXNzaW9uIGhhcyBjaGFuZ2VkCisJCSAqIHRoZSB0cmlnZ2VyIHNldCBp biB0aGUgbWVhbnRpbWUuICBDUkVBVEUgVFJJR0dFUiBvbmx5IHRha2VzCisJCSAqIFNoYXJlUm93 RXhjbHVzaXZlTG9jayBvbiB0aGUgcmVsYXRpb24sIHdoaWNoIGlzIG5vdCBjb25mbGljdCB3aXRo CisJCSAqIHRoZSBBY2Nlc3NTaGFyZUxvY2sgd2UncmUgaG9sZGluZyBoZXJlLCBzbyB0aGlzIGNh biByZWFsbHkgaGFwcGVuLgorCQkgKiByZWxhdGlvbi0+dHJpZ2Rlc2MtPnRyaWdnZXJzIGlzIGFs c28ga2VwdCBzb3J0ZWQgYnkgdHJpZ2dlciBuYW1lLAorCQkgKiBzbyBhIGNvbmN1cnJlbnRseS1h ZGRlZCB0cmlnZ2VyIGNhbiBzaHVmZmxlIHRoZSBhcnJheSBwb3NpdGlvbnMgb2YKKwkJICogcmVs YXRpb24tPnRyaWdkZXNjLT50cmlnZ2VycyB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQuCisJCSAqCisJ CSAqIEJlY2F1c2Ugb2YgdGhhdCB3ZSBuZWVkIGZpcnN0IGNvbGxlY3QgdGhlIHRyaWdnZXJzIE9J RHMgdG8gYmUKKwkJICogY2xvbmVkLCBhbmQgb25seSB0aGVuIGNsb25lIGVhY2ggb25lLgorCQkg KgorCQkgKiBBIHRyaWdnZXIgY3JlYXRlZCBieSBhbm90aGVyIHNlc3Npb24gYWZ0ZXIgd2UndmUg dGFrZW4gdGhpcworCQkgKiBzbmFwc2hvdCB3aWxsIHNpbXBseSBub3QgYmUgY29waWVkIHRvIHRo ZSBuZXcgdGFibGUsIHdoaWNoIGlzIGZpbmUuCisJCSAqLworCQlpZiAoY2hpbGRyZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUpCisJCXsKKwkJCWZvciAoaW50IG50 ID0gMDsgbnQgPCByZWxhdGlvbi0+dHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBudCsrKQorCQkJewor CQkJCVRyaWdnZXIgICAgKnRyaWcgPSByZWxhdGlvbi0+dHJpZ2Rlc2MtPnRyaWdnZXJzICsgbnQ7 CisKKwkJCQkvKiBXZSBkbyBub3QgY29weSBpbnRlcm5hbCB0cmlnZ2VycyB0byB0aGUgbmV3IHRh YmxlICovCisJCQkJaWYgKHRyaWctPnRnaXNpbnRlcm5hbCkKKwkJCQkJY29udGludWU7CisKKwkJ CQkvKgorCQkJCSAqIEZvcmVpZ24gdGFibGUgY2Fubm90IGhhdmUgY29uc3RyYWludCB0cmlnZ2Vy cyBvciB0cmlnZ2VycworCQkJCSAqIHdpdGggdHJhbnNpdGlvbiB0YWJsZQorCQkJCSAqLworCQkJ CWlmIChPaWRJc1ZhbGlkKHRyaWctPnRnY29uc3RyYWludCkpCisJCQkJCWNvbnRpbnVlOworCisJ CQkJaWYgKHRyaWctPnRnb2xkdGFibGUgIT0gTlVMTCB8fCB0cmlnLT50Z25ld3RhYmxlICE9IE5V TEwpCisJCQkJCWNvbnRpbnVlOworCisJCQkJY2xvbmVkX3RyaWdzID0gbGFwcGVuZF9vaWQoY2xv bmVkX3RyaWdzLCB0cmlnLT50Z29pZCk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlmb3Ig KGludCBudCA9IDA7IG50IDwgcmVsYXRpb24tPnRyaWdkZXNjLT5udW10cmlnZ2VyczsgbnQrKykK KwkJCXsKKwkJCQlUcmlnZ2VyICAgICp0cmlnID0gcmVsYXRpb24tPnRyaWdkZXNjLT50cmlnZ2Vy cyArIG50OworCisJCQkJLyogV2UgZG8gbm90IGNvcHkgaW50ZXJuYWwgdHJpZ2dlcnMgdG8gdGhl IG5ldyB0YWJsZSAqLworCQkJCWlmICh0cmlnLT50Z2lzaW50ZXJuYWwpCisJCQkJCWNvbnRpbnVl OworCisJCQkJY2xvbmVkX3RyaWdzID0gbGFwcGVuZF9vaWQoY2xvbmVkX3RyaWdzLCB0cmlnLT50 Z29pZCk7CisJCQl9CisJCX0KKworCQlmb3JlYWNoX29pZCh0cmlnb2lkLCBjbG9uZWRfdHJpZ3Mp CisJCXsKKwkJCUNyZWF0ZVRyaWdTdG10ICp0cmlnX3N0bXQ7CisKKwkJCXRyaWdfc3RtdCA9IGdl bmVyYXRlQ2xvbmVkVHJpZ2dlclN0bXQoaGVhcFJlbCwgdHJpZ29pZCwKKwkJCQkJCQkJCQkJCSAg cmVsYXRpb24sIGF0dG1hcCk7CisKKwkJCS8qIENvcHkgY29tbWVudCBvbiB0cmlnZ2VyLCBpZiBy ZXF1ZXN0ZWQgKi8KKwkJCWlmIChpbmNsdWRlX2NvbW1lbnRzKQorCQkJeworCQkJCWNvbW1lbnQg PSBHZXRDb21tZW50KHRyaWdvaWQsIFRyaWdnZXJSZWxhdGlvbklkLCAwKTsKKworCQkJCS8qIFdl IG1ha2UgdXNlIG9mIENyZWF0ZVRyaWdTdG10J3MgdHJpZ2NvbW1lbnQgb3B0aW9uICovCisJCQkJ dHJpZ19zdG10LT50cmlnY29tbWVudCA9IGNvbW1lbnQ7CisJCQl9CisKKwkJCXJlc3VsdCA9IGxh cHBlbmQocmVzdWx0LCB0cmlnX3N0bXQpOworCQl9CisJfQorCiAJLyogRG9uZSB3aXRoIGNoaWxk IHJlbCAqLwogCXRhYmxlX2Nsb3NlKGNoaWxkcmVsLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmlu ZGV4IDczYTU2ZjFkZjFkLi5mNzA4ZGY1N2VlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE3MDUsMTAg KzE3MDUsMTQgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQli cmVhazsKIAogCQkJY2FzZSBUX0NyZWF0ZVRyaWdTdG10OgotCQkJCWFkZHJlc3MgPSBDcmVhdGVU cmlnZ2VyKChDcmVhdGVUcmlnU3RtdCAqKSBwYXJzZXRyZWUsCi0JCQkJCQkJCQkJcXVlcnlTdHJp bmcsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCi0JCQkJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxp ZE9pZCwgSW52YWxpZE9pZCwKLQkJCQkJCQkJCQlJbnZhbGlkT2lkLCBOVUxMLCBmYWxzZSwgZmFs c2UpOworCQkJCXsKKwkJCQkJQ3JlYXRlVHJpZ1N0bXQgKnN0bXQgPSAoQ3JlYXRlVHJpZ1N0bXQg KikgcGFyc2V0cmVlOworCisJCQkJCWFkZHJlc3MgPSBDcmVhdGVUcmlnZ2VyRmlyaW5nT24oc3Rt dCwgcXVlcnlTdHJpbmcsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJCQkJSW52 YWxpZE9pZCwgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCQlJbnZhbGlkT2lk LCBOVUxMLCBmYWxzZSwKKwkJCQkJCQkJCQkJCQlmYWxzZSwgc3RtdC0+dGdlbmFibGVkKTsKKwkJ CQl9CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgVF9DcmVhdGVQTGFuZ1N0bXQ6CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90 cmlnZ2VyLmgKaW5kZXggMGMzZDQ4NWFiZjQuLjY1NWJkNTQ1MjJjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oCkBAIC0xOCw2ICsxOCwxMSBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgog I2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKIAorLyoKKyAqIGZvcndhcmQgcmVmZXJlbmNl cyBpbiB0aGlzIGZpbGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXR0ck1hcCBBdHRyTWFwOworCiAv KgogICogVHJpZ2dlckRhdGEgaXMgdGhlIG5vZGUgdHlwZSB0aGF0IGlzIHBhc3NlZCBhcyBmbWdy ICJjb250ZXh0IiBpbmZvCiAgKiB3aGVuIGEgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0cmln Z2VyIG1hbmFnZXIuCkBAIC0yNjgsNiArMjczLDEwIEBAIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dl ckJlZ2luU3ViWGFjdCh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFN1YlhhY3Qo Ym9vbCBpc0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJTZXRTdGF0ZShDb25zdHJh aW50c1NldFN0bXQgKnN0bXQpOwogZXh0ZXJuIGJvb2wgQWZ0ZXJUcmlnZ2VyUGVuZGluZ09uUmVs KE9pZCByZWxpZCk7CitleHRlcm4gQ3JlYXRlVHJpZ1N0bXQgKmdlbmVyYXRlQ2xvbmVkVHJpZ2dl clN0bXQoUmFuZ2VWYXIgKmhlYXBSZWwsCisJCQkJCQkJCQkJCQkgT2lkIHNvdXJjZV90cmlnaWQs CisJCQkJCQkJCQkJCQkgUmVsYXRpb24gc291cmNlX3JlbCwKKwkJCQkJCQkJCQkJCSBjb25zdCBB dHRyTWFwICphdHRtYXApOwogCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTAzNTU2 Mzk5YWIuLmQzZmQ4OWFhNTU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC04MTMsNiArODEz LDcgQEAgdHlwZWRlZiBlbnVtIFRhYmxlTGlrZU9wdGlvbgogCUNSRUFURV9UQUJMRV9MSUtFX0lO REVYRVMgPSAxIDw8IDYsCiAJQ1JFQVRFX1RBQkxFX0xJS0VfU1RBVElTVElDUyA9IDEgPDwgNywK IAlDUkVBVEVfVEFCTEVfTElLRV9TVE9SQUdFID0gMSA8PCA4LAorCUNSRUFURV9UQUJMRV9MSUtF X1RSSUdHRVJTID0gMSA8PCA5LAogCUNSRUFURV9UQUJMRV9MSUtFX0FMTCA9IFBHX0lOVDMyX01B WAogfSBUYWJsZUxpa2VPcHRpb247CiAKQEAgLTMyMTQsNiArMzIxNSw3IEBAIHR5cGVkZWYgc3Ry dWN0IENyZWF0ZVRyaWdTdG10CiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlib29sCQlyZXBsYWNlOwkJ LyogcmVwbGFjZSB0cmlnZ2VyIGlmIGFscmVhZHkgZXhpc3RzICovCisJY2hhcgkJdGdlbmFibGVk OwkJLyogdHJpZ2dlcidzIGZpcmluZyBjb25maWd1cmF0aW9uICovCiAJYm9vbAkJaXNjb25zdHJh aW50OwkvKiBUaGlzIGlzIGEgY29uc3RyYWludCB0cmlnZ2VyICovCiAJY2hhcgkgICAqdHJpZ25h bWU7CQkvKiBUUklHR0VSJ3MgbmFtZSAqLwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVs YXRpb24gdHJpZ2dlciBpcyBvbiAqLwpAQCAtMzIzMiw2ICszMjM0LDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ3JlYXRlVHJpZ1N0bXQKIAlib29sCQlkZWZlcnJhYmxlOwkJLyogW05PVF0gREVGRVJSQUJM RSAqLwogCWJvb2wJCWluaXRkZWZlcnJlZDsJLyogSU5JVElBTExZIHtERUZFUlJFRHxJTU1FRElB VEV9ICovCiAJUmFuZ2VWYXIgICAqY29uc3RycmVsOwkJLyogb3Bwb3NpdGUgcmVsYXRpb24sIGlm IFJJIHRyaWdnZXIgKi8KKwljaGFyCSAgICp0cmlnY29tbWVudDsJLyogY29tbWVudCB0byBhcHBs eSB0byB0cmlnZ2VyLCBvciBOVUxMICovCisJYm9vbAkJdHJhbnNmb3JtZWQ7CS8qIHRydWUgbWVh bnMgbm8gbmVlZCB0byBkbyBwYXJzZSBhbmFseXNpcyBmb3IKKwkJCQkJCQkJICogd2hlbkNsYXVz ZSAqLwogfSBDcmVhdGVUcmlnU3RtdDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCmluZGV4IDUxZWFkNTRmMDE1Li45NzMzZDRhNzk2YyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aApAQCAtNDc0LDYgKzQ3NCw3IEBAIFBHX0tFWVdPUkQoInRyYW5zYWN0aW9uIiwgVFJBTlNBQ1RJ T04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRyYW5zZm9y bSIsIFRSQU5TRk9STSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgidHJlYXQiLCBUUkVBVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInRyaWdnZXIiLCBUUklHR0VSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJ0cmlnZ2VycyIsIFRSSUdHRVJTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJ0cmltIiwgVFJJTSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInRydWUiLCBUUlVFX1AsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJ0cnVuY2F0ZSIsIFRSVU5DQVRFLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ny ZWF0ZV90YWJsZV9saWtlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Rh YmxlX2xpa2Uub3V0CmluZGV4IGEyMzczNWI1ZmI0Li41YmIxODhhYWNlYSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKQEAgLTYzNSw2ICs2 MzUsMjggQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAgICAgImN0bF90YWJsZV9hX25vdF9udWxs IiBOT1QgTlVMTCAiYSIKICAgICAiY3RsX3RhYmxlX2Rfbm90X251bGwiIE5PVCBOVUxMICJkIgog CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jMSgpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFH RSBwbHBnc3FsIEFTICcKK0JFR0lOCisJUkFJU0UgTk9USUNFICcndHJpZ2dlcl9mdW5jMSglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnJywgVEdfQVJHVlswXSwgVEdf T1AsIFRHX1dIRU4sIFRHX0xFVkVMOworCVJFVFVSTiBOVUxMOworRU5EOyc7CitDUkVBVEUgVFJJ R0dFUiB0cmlndGVzdF9iZWZvcmVfc3RtdCBCRUZPUkUgREVMRVRFIE9SIFVQREFURSBPTiBjdGxf dGFibGUKK0ZPUiBFQUNIIFJPVyBXSEVOIChPTEQuYSA+IDApCitFWEVDVVRFIFBST0NFRFVSRSB0 cmlnZ2VyX2Z1bmMxKCd0cmlndGVzdF9iZWZvcmVfc3RtdCcpOworQ1JFQVRFIFRSSUdHRVIgdHJp Z3Rlc3RfYWZ0ZXJfc3RtdCBBRlRFUiBVUERBVEUgT0YgYSwgYiBPTiBjdGxfdGFibGUKK0ZPUiBF QUNIIFNUQVRFTUVOVAorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jMSgndHJpZ3Rlc3Rf YWZ0ZXJfc3RtdCcpOworQUxURVIgVEFCTEUgY3RsX3RhYmxlIEVOQUJMRSBSRVBMSUNBIFRSSUdH RVIgdHJpZ3Rlc3RfYmVmb3JlX3N0bXQ7CitBTFRFUiBUQUJMRSBjdGxfdGFibGUgRU5BQkxFIEFM V0FZUyBUUklHR0VSIHRyaWd0ZXN0X2FmdGVyX3N0bXQ7CistLSBDUkVBVEUgRk9SRUlHTiBUQUJM RSBMSUtFIHNob3VsZCBub3QgY29weSB0cmlnZ2VycyB0aGF0IGhhdmUgdHJhbnNpdGlvbiB0YWJs ZXMKK0NSRUFURSBUUklHR0VSIHRyaWd0ZXN0X2FmdGVyX3N0bXQxIEFGVEVSIElOU0VSVCBPTiBj dGxfdGFibGUKK1JFRkVSRU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFNU QVRFTUVOVAorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jMSgndHJpZ3Rlc3RfYWZ0ZXJf c3RtdDEnKTsKKy0tIENSRUFURSBGT1JFSUdOIFRBQkxFIExJS0Ugc2hvdWxkIG5vdCBjb3B5IHNv dXJjZSB0YWJsZSBjb25zdHJhaW50IHRyaWdnZXIKK0NSRUFURSBDT05TVFJBSU5UIFRSSUdHRVIg Y29uc3RyX3RyaWcKK0FGVEVSIElOU0VSVCBPTiBjdGxfdGFibGUgREVGRVJSQUJMRSBJTklUSUFM TFkgREVGRVJSRUQgZW5mb3JjZWQgRk9SIEVBQ0ggUk9XCitFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmMxKCk7CiAtLSBUZXN0IEVYQ0xVRElORyBBTEwKIENSRUFURSBGT1JFSUdOIFRBQkxF IGN0bF9mb3JlaWduX3RhYmxlMShMSUtFIGN0bF90YWJsZSBFWENMVURJTkcgQUxMKSBTRVJWRVIg Y3RsX3MwOwogXGQrIGN0bF9mb3JlaWduX3RhYmxlMQpAQCAtNjgzLDYgKzcwNSwxMCBAQCBTdGF0 aXN0aWNzIG9iamVjdHM6CiBOb3QtbnVsbCBjb25zdHJhaW50czoKICAgICAiY3RsX3RhYmxlX2Ff bm90X251bGwiIE5PVCBOVUxMICJhIgogICAgICJjdGxfdGFibGVfZF9ub3RfbnVsbCIgTk9UIE5V TEwgImQiCitUcmlnZ2VycyBmaXJpbmcgYWx3YXlzOgorICAgIHRyaWd0ZXN0X2FmdGVyX3N0bXQg QUZURVIgVVBEQVRFIE9GIGEsIGIgT04gY3RsX2ZvcmVpZ25fdGFibGUyIEZPUiBFQUNIIFNUQVRF TUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYzEoJ3RyaWd0ZXN0X2FmdGVyX3N0bXQn KQorVHJpZ2dlcnMgZmlyaW5nIG9uIHJlcGxpY2Egb25seToKKyAgICB0cmlndGVzdF9iZWZvcmVf c3RtdCBCRUZPUkUgREVMRVRFIE9SIFVQREFURSBPTiBjdGxfZm9yZWlnbl90YWJsZTIgRk9SIEVB Q0ggUk9XIFdIRU4gKG9sZC5hID4gMCkgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMxKCd0 cmlndGVzdF9iZWZvcmVfc3RtdCcpCiBTZXJ2ZXI6IGN0bF9zMAogCiAtLSBcZCsgZG9lcyBub3Qg cmVwb3J0IHRoZSB2YWx1ZSBvZiBhdHRjb21wcmVzc2lvbiBmb3IgYSBmb3JlaWduIHRhYmxlLCBz bwpAQCAtNzM0LDMgKzc2MCw0IEBAIERST1AgRk9SRUlHTiBUQUJMRSBjdGxfZm9yZWlnbl90YWJs ZTE7CiBEUk9QIEZPUkVJR04gVEFCTEUgY3RsX2ZvcmVpZ25fdGFibGUyOwogRFJPUCBGT1JFSUdO IERBVEEgV1JBUFBFUiBjdGxfZHVtbXkgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gc2VydmVyIGN0bF9zMAorRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMxOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dAppbmRleCA4ZmNiMzNhYzgxYS4uOTUzYzU0N2NmNjAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CkBAIC0xNzQsNiArMTc0LDIw IEBAIENSRUFURSBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIEJFRk9SRSBJTlNFUlQgT04g bWFpbl90YWJsZQogRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJf ZnVuYygnYmVmb3JlX2luc19zdG10Jyk7CiBDUkVBVEUgVFJJR0dFUiBhZnRlcl9pbnNfc3RtdF90 cmlnIEFGVEVSIElOU0VSVCBPTiBtYWluX3RhYmxlCiBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VU RSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdhZnRlcl9pbnNfc3RtdCcpOworQ1JFQVRFIFRSSUdH RVIgd2hvbGV0cmlnIEJFRk9SRSBVUERBVEUgT04gbWFpbl90YWJsZSBGT1IgRUFDSCBST1cKK1dI RU4gKE9MRCBJUyBOT1QgTlVMTCkKK0VYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygnbW9k aWZpZWRfYScpOworQ1JFQVRFIFRBQkxFIG1haW5fdGFibGUxKExJS0UgbWFpbl90YWJsZSBJTkNM VURJTkcgVFJJR0dFUlMpOyAtLSBlcnJvciwgd2hvbGVyb3cgcmVmZXJlbmNlIG5vdCBhbGxvd2Vk CitFUlJPUjogIGNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UKK0RFVEFJ TDogIFRyaWdnZXIgIndob2xldHJpZyIgY29udGFpbnMgYSB3aG9sZS1yb3cgdGFibGUgcmVmZXJl bmNlLgorRFJPUCBUUklHR0VSIHdob2xldHJpZyBPTiBtYWluX3RhYmxlOworQ1JFQVRFIFRSSUdH RVIgd2hvbGV0cmlnIEJFRk9SRSBVUERBVEUgT04gbWFpbl90YWJsZSBGT1IgRUFDSCBST1cKK1dI RU4gKE5FVyBJUyBOT1QgTlVMTCkKK0VYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygnbW9k aWZpZWRfYScpOworQ1JFQVRFIFRBQkxFIG1haW5fdGFibGUxKExJS0UgbWFpbl90YWJsZSBJTkNM VURJTkcgVFJJR0dFUlMpOyAtLSBlcnJvciwgd2hvbGVyb3cgcmVmZXJlbmNlIG5vdCBhbGxvd2Vk CitFUlJPUjogIGNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UKK0RFVEFJ TDogIFRyaWdnZXIgIndob2xldHJpZyIgY29udGFpbnMgYSB3aG9sZS1yb3cgdGFibGUgcmVmZXJl bmNlLgorRFJPUCBUUklHR0VSIHdob2xldHJpZyBPTiBtYWluX3RhYmxlOwogLS0KIC0tIGlmIG5l aXRoZXIgJ0ZPUiBFQUNIIFJPVycgbm9yICdGT1IgRUFDSCBTVEFURU1FTlQnIHdhcyBzcGVjaWZp ZWQsCiAtLSBDUkVBVEUgVFJJR0dFUiBzaG91bGQgZGVmYXVsdCB0byAnRk9SIEVBQ0ggU1RBVEVN RU5UJwpAQCAtMzk0LDYgKzQwOCw0NiBAQCBOT1RJQ0U6ICB0cmlnZ2VyX2Z1bmMoYWZ0ZXJfdXBk X2FfYl9yb3cpIGNhbGxlZDogYWN0aW9uID0gVVBEQVRFLCB3aGVuID0gQUZURVIsCiBOT1RJQ0U6 ICB0cmlnZ2VyX2Z1bmMoYWZ0ZXJfdXBkX2Jfcm93KSBjYWxsZWQ6IGFjdGlvbiA9IFVQREFURSwg d2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVwogTk9USUNFOiAgdHJpZ2dlcl9mdW5jKGFmdGVyX3Vw ZF9iX3N0bXQpIGNhbGxlZDogYWN0aW9uID0gVVBEQVRFLCB3aGVuID0gQUZURVIsIGxldmVsID0g U1RBVEVNRU5UCiBOT1RJQ0U6ICB0cmlnZ2VyX2Z1bmMoYWZ0ZXJfdXBkX3N0bXQpIGNhbGxlZDog YWN0aW9uID0gVVBEQVRFLCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSBDUkVB VEUgVEFCTEUgTElLRSBJTkNMVURJTkcgVFJJR0dFUlMgdGVzdHMKK0NPTU1FTlQgT04gVFJJR0dF UiBiZWZvcmVfaW5zX3N0bXRfdHJpZyBPTiBtYWluX3RhYmxlIElTICd0cmlnZ2VyIGJlZm9yZV9p bnNfc3RtdF90cmlnJzsKK0NSRUFURSBUQUJMRSBtYWluX3RhYmxlMShjIGludCwgTElLRSBtYWlu X3RhYmxlIElOQ0xVRElORyBUUklHR0VSUyBJTkNMVURJTkcgQ09NTUVOVFMpOworQ1JFQVRFIFRB QkxFIG1haW5fdGFibGUyKGMgaW50LCBMSUtFIG1haW5fdGFibGUgRVhDTFVESU5HIFRSSUdHRVJT IElOQ0xVRElORyBDT01NRU5UUyk7CitTRUxFQ1QgIHBnX2dldF90cmlnZ2VyZGVmKG9pZCkKK0ZS T00gICAgcGdfdHJpZ2dlcgorV0hFUkUgTk9UIHRnaXNpbnRlcm5hbCBBTkQgdGdyZWxpZCBJTiAo J21haW5fdGFibGUnOjpyZWdjbGFzcywgJ21haW5fdGFibGUxJzo6cmVnY2xhc3MsICdtYWluX3Rh YmxlMic6OnJlZ2NsYXNzKQorT1JERVIgQlkgdGduYW1lLCB0Z3JlbGlkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF90cmlnZ2VyZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJf aW5zX3N0bXRfdHJpZyBBRlRFUiBJTlNFUlQgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0gg U1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl9pbnNfc3RtdCcp CisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfaW5zX3N0bXRfdHJpZyBBRlRFUiBJTlNFUlQgT04gcHVi bGljLm1haW5fdGFibGUxIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdn ZXJfZnVuYygnYWZ0ZXJfaW5zX3N0bXQnKQorIENSRUFURSBUUklHR0VSIGFmdGVyX3VwZF9hX2Jf cm93X3RyaWcgQUZURVIgVVBEQVRFIE9GIGEsIGIgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVB Q0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfYV9iX3Jvdycp CisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX2FfYl9yb3dfdHJpZyBBRlRFUiBVUERBVEUgT0Yg YSwgYiBPTiBwdWJsaWMubWFpbl90YWJsZTEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04g dHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfYV9iX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJf dXBkX2Jfcm93X3RyaWcgQUZURVIgVVBEQVRFIE9GIGIgT04gcHVibGljLm1haW5fdGFibGUgRk9S IEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfYl9yb3cn KQorIENSRUFURSBUUklHR0VSIGFmdGVyX3VwZF9iX3Jvd190cmlnIEFGVEVSIFVQREFURSBPRiBi IE9OIHB1YmxpYy5tYWluX3RhYmxlMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmln Z2VyX2Z1bmMoJ2FmdGVyX3VwZF9iX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX2Jf c3RtdF90cmlnIEFGVEVSIFVQREFURSBPRiBiIE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBFQUNI IFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfdXBkX2Jfc3Rt dCcpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX2Jfc3RtdF90cmlnIEFGVEVSIFVQREFURSBP RiBiIE9OIHB1YmxpYy5tYWluX3RhYmxlMSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5D VElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX3VwZF9iX3N0bXQnKQorIENSRUFURSBUUklHR0VSIGFm dGVyX3VwZF9zdG10X3RyaWcgQUZURVIgVVBEQVRFIE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBF QUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfdXBkX3N0 bXQnKQorIENSRUFURSBUUklHR0VSIGFmdGVyX3VwZF9zdG10X3RyaWcgQUZURVIgVVBEQVRFIE9O IHB1YmxpYy5tYWluX3RhYmxlMSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElPTiB0 cmlnZ2VyX2Z1bmMoJ2FmdGVyX3VwZF9zdG10JykKKyBDUkVBVEUgVFJJR0dFUiBiZWZvcmVfaW5z X3N0bXRfdHJpZyBCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBFQUNIIFNU QVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYmVmb3JlX2luc19zdG10JykK KyBDUkVBVEUgVFJJR0dFUiBiZWZvcmVfaW5zX3N0bXRfdHJpZyBCRUZPUkUgSU5TRVJUIE9OIHB1 YmxpYy5tYWluX3RhYmxlMSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElPTiB0cmln Z2VyX2Z1bmMoJ2JlZm9yZV9pbnNfc3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZF9h X3Jvd190cmlnIEJFRk9SRSBVUERBVEUgT0YgYSBPTiBwdWJsaWMubWFpbl90YWJsZSBGT1IgRUFD SCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2JlZm9yZV91cGRfYV9yb3cnKQor IENSRUFURSBUUklHR0VSIGJlZm9yZV91cGRfYV9yb3dfdHJpZyBCRUZPUkUgVVBEQVRFIE9GIGEg T04gcHVibGljLm1haW5fdGFibGUxIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdn ZXJfZnVuYygnYmVmb3JlX3VwZF9hX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZF9h X3N0bXRfdHJpZyBCRUZPUkUgVVBEQVRFIE9GIGEgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVB Q0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdiZWZvcmVfdXBkX2Ff c3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZF9hX3N0bXRfdHJpZyBCRUZPUkUgVVBE QVRFIE9GIGEgT04gcHVibGljLm1haW5fdGFibGUxIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRF IEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYmVmb3JlX3VwZF9hX3N0bXQnKQorKDE2IHJvd3MpCisK K1NFTEVDVCAgcGMucmVsbmFtZSwgcGQudGduYW1lLCBvYmpfZGVzY3JpcHRpb24ocGQub2lkLCAn cGdfdHJpZ2dlcicpCitGUk9NICAgIHBnX3RyaWdnZXIgcGQgSk9JTiBwZ19jbGFzcyBwYworT04g ICAgICBwYy5vaWQgPSBwZC50Z3JlbGlkIEFORCBwZC50Z25hbWUgPSAnYmVmb3JlX2luc19zdG10 X3RyaWcnCitPUkRFUiBCWSAxOworICAgcmVsbmFtZSAgIHwgICAgICAgIHRnbmFtZSAgICAgICAg fCAgICAgICBvYmpfZGVzY3JpcHRpb24gICAgICAgIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1haW5fdGFibGUg IHwgYmVmb3JlX2luc19zdG10X3RyaWcgfCB0cmlnZ2VyIGJlZm9yZV9pbnNfc3RtdF90cmlnCisg bWFpbl90YWJsZTEgfCBiZWZvcmVfaW5zX3N0bXRfdHJpZyB8IHRyaWdnZXIgYmVmb3JlX2luc19z dG10X3RyaWcKKygyIHJvd3MpCisKK0NPTU1FTlQgT04gVFJJR0dFUiBiZWZvcmVfaW5zX3N0bXRf dHJpZyBPTiBtYWluX3RhYmxlIElTIE5VTEw7CitEUk9QIFRBQkxFIG1haW5fdGFibGUxLCBtYWlu X3RhYmxlMjsKIC0tCiAtLSBUZXN0IGNhc2UgZm9yIGJ1ZyB3aXRoIEJFRk9SRSB0cmlnZ2VyIGZv bGxvd2VkIGJ5IEFGVEVSIHRyaWdnZXIgd2l0aCBXSEVOCiAtLQpAQCAtNDIyLDcgKzQ3NiwyNyBA QCBOT1RJQ0U6ICBkdW1teV91cGRhdGVfZnVuYyhhZnRlcmIpIGNhbGxlZDogYWN0aW9uID0gVVBE QVRFLCBvbGQgPSAodCksIG5ldyA9IChmKQogVVBEQVRFIHNvbWVfdCBTRVQgc29tZV9jb2wgPSBU UlVFOwogTk9USUNFOiAgZHVtbXlfdXBkYXRlX2Z1bmMoYmVmb3JlKSBjYWxsZWQ6IGFjdGlvbiA9 IFVQREFURSwgb2xkID0gKGYpLCBuZXcgPSAodCkKIE5PVElDRTogIGR1bW15X3VwZGF0ZV9mdW5j KGFmdGVyYSkgY2FsbGVkOiBhY3Rpb24gPSBVUERBVEUsIG9sZCA9IChmKSwgbmV3ID0gKHQpCitB TFRFUiBUQUJMRSBzb21lX3QgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiBzb21lX3RyaWdfYWZ0ZXJh OworQUxURVIgVEFCTEUgc29tZV90IERJU0FCTEUgVFJJR0dFUiBzb21lX3RyaWdfYWZ0ZXJiOwor QUxURVIgVEFCTEUgc29tZV90IEVOQUJMRSBBTFdBWVMgVFJJR0dFUiBzb21lX3RyaWdfYmVmb3Jl OworQ1JFQVRFIFRBQkxFIHNvbWVfdDEgKGMgSU5ULCBMSUtFIHNvbWVfdCBJTkNMVURJTkcgVFJJ R0dFUlMgSU5DTFVESU5HIENPTU1FTlRTKTsKK1xkKyBzb21lX3QxCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMuc29tZV90MSIKKyAgQ29sdW1uICB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMg dGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIGMgICAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBzb21lX2NvbCB8IGJvb2xlYW4gfCAgICAgICAg ICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitOb3Qt bnVsbCBjb25zdHJhaW50czoKKyAgICAic29tZV90X3NvbWVfY29sX25vdF9udWxsIiBOT1QgTlVM TCAic29tZV9jb2wiCitEaXNhYmxlZCB1c2VyIHRyaWdnZXJzOgorICAgIHNvbWVfdHJpZ19hZnRl cmIgQUZURVIgVVBEQVRFIE9OIHNvbWVfdDEgRk9SIEVBQ0ggUk9XIFdIRU4gKE5PVCBuZXcuc29t ZV9jb2wpIEVYRUNVVEUgRlVOQ1RJT04gZHVtbXlfdXBkYXRlX2Z1bmMoJ2FmdGVyYicpCitUcmln Z2VycyBmaXJpbmcgYWx3YXlzOgorICAgIHNvbWVfdHJpZ19iZWZvcmUgQkVGT1JFIFVQREFURSBP TiBzb21lX3QxIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIGR1bW15X3VwZGF0ZV9mdW5j KCdiZWZvcmUnKQorVHJpZ2dlcnMgZmlyaW5nIG9uIHJlcGxpY2Egb25seToKKyAgICBzb21lX3Ry aWdfYWZ0ZXJhIEFGVEVSIFVQREFURSBPTiBzb21lX3QxIEZPUiBFQUNIIFJPVyBXSEVOIChOT1Qg b2xkLnNvbWVfY29sIEFORCBuZXcuc29tZV9jb2wpIEVYRUNVVEUgRlVOQ1RJT04gZHVtbXlfdXBk YXRlX2Z1bmMoJ2FmdGVyYScpCisKIERST1AgVEFCTEUgc29tZV90OworRFJPUCBUQUJMRSBzb21l X3QxOwogLS0gYm9ndXMgY2FzZXMKIENSRUFURSBUUklHR0VSIGVycm9yX3VwZF9hbmRfY29sIEJF Rk9SRSBVUERBVEUgT1IgVVBEQVRFIE9GIGEgT04gbWFpbl90YWJsZQogRk9SIEVBQ0ggUk9XIEVY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygnZXJyb3JfdXBkX2FuZF9jb2wnKTsKQEAgLTg2 MSw2ICs5MzUsMTUgQEAgQ1JFQVRFIFRSSUdHRVIgaW5zdGVhZF9vZl91cGRhdGVfdHJpZyBJTlNU RUFEIE9GIFVQREFURSBPTiBtYWluX3ZpZXcKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSB2aWV3X3RyaWdnZXIoJ2luc3RlYWRfb2ZfdXBkJyk7CiBDUkVBVEUgVFJJR0dFUiBpbnN0ZWFk X29mX2RlbGV0ZV90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIG1haW5fdmlldwogRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHZpZXdfdHJpZ2dlcignaW5zdGVhZF9vZl9kZWwnKTsKK0NS RUFURSBUQUJMRSBtYWluX3ZpZXdfdGFibGUoTElLRSBtYWluX3ZpZXcgSU5DTFVESU5HIFRSSUdH RVJTKTsgLS0gVmlldyB0cmlnZ2VycyBhcmUgbm90IGNvcGllZAorXGQgbWFpbl92aWV3X3RhYmxl CisgICAgICAgICAgVGFibGUgInB1YmxpYy5tYWluX3ZpZXdfdGFibGUiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorCitEUk9QIFRBQkxFIG1haW5fdmlld190YWJsZTsKIC0tIFZhbGlkIEJFRk9S RSBzdGF0ZW1lbnQgVklFVyB0cmlnZ2VycwogQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX2luc19zdG10 X3RyaWcgQkVGT1JFIElOU0VSVCBPTiBtYWluX3ZpZXcKIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVD VVRFIFBST0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2JlZm9yZV92aWV3X2luc19zdG10Jyk7CkBAIC0y MzI2LDYgKzI0MDksMjAgQEAgY3JlYXRlIGNvbnN0cmFpbnQgdHJpZ2dlciBwYXJ0ZWRfdHJpZ190 d28gYWZ0ZXIgaW5zZXJ0IG9uIHBhcnRlZF9jb25zdHIKICAgZGVmZXJyYWJsZSBpbml0aWFsbHkg ZGVmZXJyZWQgZW5mb3JjZWQKICAgZm9yIGVhY2ggcm93IHdoZW4gKGJhcmsobmV3LmIpIEFORCBu ZXcuYSAlIDIgPSAxKQogICBleGVjdXRlIHByb2NlZHVyZSB0cmlnZ2VyX25vdGljZV9hYigpOwor Y3JlYXRlIHRhYmxlIHBhcnRlZF9jb25zdHJfY29weSAoYyBpbnQsIGxpa2UgcGFydGVkX2NvbnN0 ciBpbmNsdWRpbmcgYWxsLCBkIGludCk7CitzZWxlY3QgIHBnX2dldF90cmlnZ2VyZGVmKG9pZCkK K2Zyb20gICAgcGdfdHJpZ2dlcgord2hlcmUgICBub3QgdGdpc2ludGVybmFsIGFuZCB0Z3JlbGlk IGluICgncGFydGVkX2NvbnN0cl9jb3B5Jzo6cmVnY2xhc3MsICdwYXJ0ZWRfY29uc3RyJzo6cmVn Y2xhc3MpCitvcmRlciBieSB0Z25hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF90cmlnZ2VyZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIENP TlNUUkFJTlQgVFJJR0dFUiBwYXJ0ZWRfdHJpZyBBRlRFUiBJTlNFUlQgT04gcHVibGljLnBhcnRl ZF9jb25zdHIgREVGRVJSQUJMRSBJTklUSUFMTFkgSU1NRURJQVRFIEZPUiBFQUNIIFJPVyBFWEVD VVRFIEZVTkNUSU9OIHRyaWdnZXJfbm90aWNlX2FiKCkKKyBDUkVBVEUgQ09OU1RSQUlOVCBUUklH R0VSIHBhcnRlZF90cmlnIEFGVEVSIElOU0VSVCBPTiBwdWJsaWMucGFydGVkX2NvbnN0cl9jb3B5 IERFRkVSUkFCTEUgSU5JVElBTExZIElNTUVESUFURSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5D VElPTiB0cmlnZ2VyX25vdGljZV9hYigpCisgQ1JFQVRFIENPTlNUUkFJTlQgVFJJR0dFUiBwYXJ0 ZWRfdHJpZ190d28gQUZURVIgSU5TRVJUIE9OIHB1YmxpYy5wYXJ0ZWRfY29uc3RyIERFRkVSUkFC TEUgSU5JVElBTExZIERFRkVSUkVEIEZPUiBFQUNIIFJPVyBXSEVOICgoYmFyayhuZXcuYikgQU5E ICgobmV3LmEgJSAyKSA9IDEpKSkgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX25vdGljZV9hYigp CisgQ1JFQVRFIENPTlNUUkFJTlQgVFJJR0dFUiBwYXJ0ZWRfdHJpZ190d28gQUZURVIgSU5TRVJU IE9OIHB1YmxpYy5wYXJ0ZWRfY29uc3RyX2NvcHkgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJS RUQgRk9SIEVBQ0ggUk9XIFdIRU4gKChiYXJrKG5ldy5iKSBBTkQgKChuZXcuYSAlIDIpID0gMSkp KSBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfbm90aWNlX2FiKCkKKyg0IHJvd3MpCisKK2Ryb3Ag dGFibGUgcGFydGVkX2NvbnN0cl9jb3B5OwogLS0gVGhlIGltbWVkaWF0ZSBjb25zdHJhaW50IGlz IGZpcmVkIGltbWVkaWF0ZWx5OyB0aGUgV0hFTiBjbGF1c2Ugb2YgdGhlCiAtLSBkZWZlcnJlZCBj b25zdHJhaW50IGlzIGFsc28gY2FsbGVkIGltbWVkaWF0ZWx5LiAgVGhlIGRlZmVycmVkIGNvbnN0 cmFpbnQKIC0tIGlzIGZpcmVkIGF0IGNvbW1pdCB0aW1lLgpAQCAtMzEwNiw2ICszMjAzLDE4IEBA IGNyZWF0ZSB0cmlnZ2VyIGlvY2R1X3R0X3BhcnRlZF9pbnNlcnRfdHJpZwogY3JlYXRlIHRyaWdn ZXIgaW9jZHVfdHRfcGFydGVkX3VwZGF0ZV90cmlnCiAgIGFmdGVyIHVwZGF0ZSBvbiBpb2NkdV90 dF9wYXJ0ZWQgcmVmZXJlbmNpbmcgb2xkIHRhYmxlIGFzIG9sZF90YWJsZSBuZXcgdGFibGUgYXMg bmV3X3RhYmxlCiAgIGZvciBlYWNoIHN0YXRlbWVudCBleGVjdXRlIHByb2NlZHVyZSBkdW1wX3Vw ZGF0ZSgpOworQ1JFQVRFIFRBQkxFIGlvY2R1X3R0X3BhcnRlZF9jb3B5KExJS0UgaW9jZHVfdHRf cGFydGVkIElOQ0xVRElORyBUUklHR0VSUyk7CitcZCBpb2NkdV90dF9wYXJ0ZWRfY29weQorICAg ICAgICBUYWJsZSAicHVibGljLmlvY2R1X3R0X3BhcnRlZF9jb3B5IgorIENvbHVtbiB8ICBUeXBl ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKKyBiICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKK1RyaWdnZXJzOgorICAgIGlvY2R1X3R0X3BhcnRlZF9pbnNlcnRfdHJpZyBBRlRF UiBJTlNFUlQgT04gaW9jZHVfdHRfcGFydGVkX2NvcHkgUkVGRVJFTkNJTkcgTkVXIFRBQkxFIEFT IG5ld190YWJsZSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElPTiBkdW1wX2luc2Vy dCgpCisgICAgaW9jZHVfdHRfcGFydGVkX3VwZGF0ZV90cmlnIEFGVEVSIFVQREFURSBPTiBpb2Nk dV90dF9wYXJ0ZWRfY29weSBSRUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxlIE5FVyBU QUJMRSBBUyBuZXdfdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gZHVt cF91cGRhdGUoKQorCitEUk9QIFRBQkxFIGlvY2R1X3R0X3BhcnRlZF9jb3B5OwogLS0gaW5zZXJ0 cyBvbmx5CiBpbnNlcnQgaW50byBpb2NkdV90dF9wYXJ0ZWQgdmFsdWVzICgxLCAnQUFBJyksICgy LCAnQkJCJykKICAgb24gY29uZmxpY3QgKGEpIGRvCkBAIC0zNTg5LDYgKzM2OTgsMjYgQEAgYmVn aW4KIGVuZDsKICQkOwogYWx0ZXIgZnVuY3Rpb24gd2hvYW1pKCkgb3duZXIgdG8gcmVncmVzc19m bl9vd25lcjsKKy0tIENSRUFURSBUQUJMRSBMSUtFIElOQ0xVRElORyBUUklHR0VSUyBmb3IgY29u c3RyYWludCB0cmlnZ2VyCitjcmVhdGUgc2NoZW1hIHRlc3RfdHJpZzsKK2NyZWF0ZSB0YWJsZSB0 ZXN0X3RyaWcudHJpZ190MSAoaWQgaW50ZWdlcik7CitjcmVhdGUgdGFibGUgdGVzdF90cmlnLnRy aWdfdDIgKGlkIGludGVnZXIpOworYWx0ZXIgZnVuY3Rpb24gd2hvYW1pKCkgc2V0IHNjaGVtYSB0 ZXN0X3RyaWc7CitjcmVhdGUgY29uc3RyYWludCB0cmlnZ2VyIGNvbl90cmlnX3Rlc3QgYWZ0ZXIg aW5zZXJ0IG9uIHRlc3RfdHJpZy50cmlnX3QxCitmcm9tIHRlc3RfdHJpZy50cmlnX3QyCitkZWZl cnJhYmxlIGluaXRpYWxseSBkZWZlcnJlZAorZm9yIGVhY2ggcm93CitleGVjdXRlIGZ1bmN0aW9u IHRlc3RfdHJpZy53aG9hbWkoKTsKK2NyZWF0ZSB0YWJsZSB0cmlnX3QxX2NvcHkobGlrZSB0ZXN0 X3RyaWcudHJpZ190MSBpbmNsdWRpbmcgdHJpZ2dlcnMpOworc2VsZWN0IHBnX2dldF90cmlnZ2Vy ZGVmKG9pZCkgZnJvbSBwZ190cmlnZ2VyIHdoZXJlIHRncmVsaWQgPSAndHJpZ190MV9jb3B5Jzo6 cmVnY2xhc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdHJpZ2dlcmRlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgQ09OU1RSQUlOVCBUUklHR0VS IGNvbl90cmlnX3Rlc3QgQUZURVIgSU5TRVJUIE9OIHB1YmxpYy50cmlnX3QxX2NvcHkgRlJPTSB0 ZXN0X3RyaWcudHJpZ190MiBERUZFUlJBQkxFIElOSVRJQUxMWSBERUZFUlJFRCBGT1IgRUFDSCBS T1cgRVhFQ1VURSBGVU5DVElPTiB0ZXN0X3RyaWcud2hvYW1pKCkKKygxIHJvdykKKworYWx0ZXIg ZnVuY3Rpb24gdGVzdF90cmlnLndob2FtaSgpIHNldCBzY2hlbWEgcHVibGljOworZHJvcCB0YWJs ZSB0ZXN0X3RyaWcudHJpZ190MSwgdGVzdF90cmlnLnRyaWdfdDIsIHRyaWdfdDFfY29weTsKK2Ry b3Agc2NoZW1hIHRlc3RfdHJpZzsKIGNyZWF0ZSB0YWJsZSBkZWZlcl90cmlnIChpZCBpbnRlZ2Vy KTsKIGdyYW50IGluc2VydCBvbiBkZWZlcl90cmlnIHRvIHB1YmxpYzsKIGNyZWF0ZSBjb25zdHJh aW50IHRyaWdnZXIgd2hvYW1pIGFmdGVyIGluc2VydCBvbiBkZWZlcl90cmlnCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlrZS5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlrZS5zcWwKaW5kZXggZDUyYTkzZWYxMzEuLjFmMDRj M2I2N2NiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlr ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsCkBA IC0yNTksNiArMjU5LDM0IEBAIEFMVEVSIFRBQkxFIGN0bF90YWJsZSBBTFRFUiBDT0xVTU4gYiBT RVQgU1RPUkFHRSBNQUlOOwogCiBcZCsgY3RsX3RhYmxlCiAKK0NSRUFURSBGVU5DVElPTiB0cmln Z2VyX2Z1bmMxKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwgQVMgJworQkVHSU4K KwlSQUlTRSBOT1RJQ0UgJyd0cmlnZ2VyX2Z1bmMxKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hl biA9ICUsIGxldmVsID0gJScnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7 CisJUkVUVVJOIE5VTEw7CitFTkQ7JzsKKworQ1JFQVRFIFRSSUdHRVIgdHJpZ3Rlc3RfYmVmb3Jl X3N0bXQgQkVGT1JFIERFTEVURSBPUiBVUERBVEUgT04gY3RsX3RhYmxlCitGT1IgRUFDSCBST1cg V0hFTiAoT0xELmEgPiAwKQorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jMSgndHJpZ3Rl c3RfYmVmb3JlX3N0bXQnKTsKKworQ1JFQVRFIFRSSUdHRVIgdHJpZ3Rlc3RfYWZ0ZXJfc3RtdCBB RlRFUiBVUERBVEUgT0YgYSwgYiBPTiBjdGxfdGFibGUKK0ZPUiBFQUNIIFNUQVRFTUVOVAorRVhF Q1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jMSgndHJpZ3Rlc3RfYWZ0ZXJfc3RtdCcpOworCitB TFRFUiBUQUJMRSBjdGxfdGFibGUgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlndGVzdF9iZWZv cmVfc3RtdDsKK0FMVEVSIFRBQkxFIGN0bF90YWJsZSBFTkFCTEUgQUxXQVlTIFRSSUdHRVIgdHJp Z3Rlc3RfYWZ0ZXJfc3RtdDsKKworLS0gQ1JFQVRFIEZPUkVJR04gVEFCTEUgTElLRSBzaG91bGQg bm90IGNvcHkgdHJpZ2dlcnMgdGhhdCBoYXZlIHRyYW5zaXRpb24gdGFibGVzCitDUkVBVEUgVFJJ R0dFUiB0cmlndGVzdF9hZnRlcl9zdG10MSBBRlRFUiBJTlNFUlQgT04gY3RsX3RhYmxlCitSRUZF UkVOQ0lORyBORVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBTVEFURU1FTlQKK0VYRUNV VEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYzEoJ3RyaWd0ZXN0X2FmdGVyX3N0bXQxJyk7CisKKy0t IENSRUFURSBGT1JFSUdOIFRBQkxFIExJS0Ugc2hvdWxkIG5vdCBjb3B5IHNvdXJjZSB0YWJsZSBj b25zdHJhaW50IHRyaWdnZXIKK0NSRUFURSBDT05TVFJBSU5UIFRSSUdHRVIgY29uc3RyX3RyaWcK K0FGVEVSIElOU0VSVCBPTiBjdGxfdGFibGUgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQg ZW5mb3JjZWQgRk9SIEVBQ0ggUk9XCitFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMxKCk7 CisKIC0tIFRlc3QgRVhDTFVESU5HIEFMTAogQ1JFQVRFIEZPUkVJR04gVEFCTEUgY3RsX2ZvcmVp Z25fdGFibGUxKExJS0UgY3RsX3RhYmxlIEVYQ0xVRElORyBBTEwpIFNFUlZFUiBjdGxfczA7CiBc ZCsgY3RsX2ZvcmVpZ25fdGFibGUxCkBAIC0zMDYsMyArMzM0LDQgQEAgRFJPUCBUQUJMRSBjdGxf dGFibGU7CiBEUk9QIEZPUkVJR04gVEFCTEUgY3RsX2ZvcmVpZ25fdGFibGUxOwogRFJPUCBGT1JF SUdOIFRBQkxFIGN0bF9mb3JlaWduX3RhYmxlMjsKIERST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIg Y3RsX2R1bW15IENBU0NBREU7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuYzE7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC90cmlnZ2Vycy5zcWwKaW5kZXggMjI4NWU5MDExMGUuLjM2ODkxNzJiOGRjIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdHJpZ2dlcnMuc3FsCkBAIC0xMjAsNiArMTIwLDE4IEBAIEZPUiBFQUNIIFNUQVRF TUVOVCBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoJ2JlZm9yZV9pbnNfc3RtdCcpOwog Q1JFQVRFIFRSSUdHRVIgYWZ0ZXJfaW5zX3N0bXRfdHJpZyBBRlRFUiBJTlNFUlQgT04gbWFpbl90 YWJsZQogRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygn YWZ0ZXJfaW5zX3N0bXQnKTsKIAorQ1JFQVRFIFRSSUdHRVIgd2hvbGV0cmlnIEJFRk9SRSBVUERB VEUgT04gbWFpbl90YWJsZSBGT1IgRUFDSCBST1cKK1dIRU4gKE9MRCBJUyBOT1QgTlVMTCkKK0VY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygnbW9kaWZpZWRfYScpOworQ1JFQVRFIFRBQkxF IG1haW5fdGFibGUxKExJS0UgbWFpbl90YWJsZSBJTkNMVURJTkcgVFJJR0dFUlMpOyAtLSBlcnJv ciwgd2hvbGVyb3cgcmVmZXJlbmNlIG5vdCBhbGxvd2VkCitEUk9QIFRSSUdHRVIgd2hvbGV0cmln IE9OIG1haW5fdGFibGU7CisKK0NSRUFURSBUUklHR0VSIHdob2xldHJpZyBCRUZPUkUgVVBEQVRF IE9OIG1haW5fdGFibGUgRk9SIEVBQ0ggUk9XCitXSEVOIChORVcgSVMgTk9UIE5VTEwpCitFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoJ21vZGlmaWVkX2EnKTsKK0NSRUFURSBUQUJMRSBt YWluX3RhYmxlMShMSUtFIG1haW5fdGFibGUgSU5DTFVESU5HIFRSSUdHRVJTKTsgLS0gZXJyb3Is IHdob2xlcm93IHJlZmVyZW5jZSBub3QgYWxsb3dlZAorRFJPUCBUUklHR0VSIHdob2xldHJpZyBP TiBtYWluX3RhYmxlOworCiAtLQogLS0gaWYgbmVpdGhlciAnRk9SIEVBQ0ggUk9XJyBub3IgJ0ZP UiBFQUNIIFNUQVRFTUVOVCcgd2FzIHNwZWNpZmllZCwKIC0tIENSRUFURSBUUklHR0VSIHNob3Vs ZCBkZWZhdWx0IHRvICdGT1IgRUFDSCBTVEFURU1FTlQnCkBAIC0yMzQsNiArMjQ2LDI0IEBAIFNF TEVDVCBwZ19nZXRfdHJpZ2dlcmRlZihvaWQpIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlk ID0gJ21haW5fdGFibGUnOjpyZWdjCiBVUERBVEUgbWFpbl90YWJsZSBTRVQgYSA9IDUwOwogVVBE QVRFIG1haW5fdGFibGUgU0VUIGIgPSAxMDsKIAorLS0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVE SU5HIFRSSUdHRVJTIHRlc3RzCitDT01NRU5UIE9OIFRSSUdHRVIgYmVmb3JlX2luc19zdG10X3Ry aWcgT04gbWFpbl90YWJsZSBJUyAndHJpZ2dlciBiZWZvcmVfaW5zX3N0bXRfdHJpZyc7CitDUkVB VEUgVEFCTEUgbWFpbl90YWJsZTEoYyBpbnQsIExJS0UgbWFpbl90YWJsZSBJTkNMVURJTkcgVFJJ R0dFUlMgSU5DTFVESU5HIENPTU1FTlRTKTsKK0NSRUFURSBUQUJMRSBtYWluX3RhYmxlMihjIGlu dCwgTElLRSBtYWluX3RhYmxlIEVYQ0xVRElORyBUUklHR0VSUyBJTkNMVURJTkcgQ09NTUVOVFMp OworCitTRUxFQ1QgIHBnX2dldF90cmlnZ2VyZGVmKG9pZCkKK0ZST00gICAgcGdfdHJpZ2dlcgor V0hFUkUgTk9UIHRnaXNpbnRlcm5hbCBBTkQgdGdyZWxpZCBJTiAoJ21haW5fdGFibGUnOjpyZWdj bGFzcywgJ21haW5fdGFibGUxJzo6cmVnY2xhc3MsICdtYWluX3RhYmxlMic6OnJlZ2NsYXNzKQor T1JERVIgQlkgdGduYW1lLCB0Z3JlbGlkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKwor U0VMRUNUICBwYy5yZWxuYW1lLCBwZC50Z25hbWUsIG9ial9kZXNjcmlwdGlvbihwZC5vaWQsICdw Z190cmlnZ2VyJykKK0ZST00gICAgcGdfdHJpZ2dlciBwZCBKT0lOIHBnX2NsYXNzIHBjCitPTiAg ICAgIHBjLm9pZCA9IHBkLnRncmVsaWQgQU5EIHBkLnRnbmFtZSA9ICdiZWZvcmVfaW5zX3N0bXRf dHJpZycKK09SREVSIEJZIDE7CitDT01NRU5UIE9OIFRSSUdHRVIgYmVmb3JlX2luc19zdG10X3Ry aWcgT04gbWFpbl90YWJsZSBJUyBOVUxMOworCitEUk9QIFRBQkxFIG1haW5fdGFibGUxLCBtYWlu X3RhYmxlMjsKKwogLS0KIC0tIFRlc3QgY2FzZSBmb3IgYnVnIHdpdGggQkVGT1JFIHRyaWdnZXIg Zm9sbG93ZWQgYnkgQUZURVIgdHJpZ2dlciB3aXRoIFdIRU4KIC0tCkBAIC0yNTgsNyArMjg4LDEz IEBAIElOU0VSVCBJTlRPIHNvbWVfdCBWQUxVRVMgKFRSVUUpOwogVVBEQVRFIHNvbWVfdCBTRVQg c29tZV9jb2wgPSBUUlVFOwogVVBEQVRFIHNvbWVfdCBTRVQgc29tZV9jb2wgPSBGQUxTRTsKIFVQ REFURSBzb21lX3QgU0VUIHNvbWVfY29sID0gVFJVRTsKK0FMVEVSIFRBQkxFIHNvbWVfdCBFTkFC TEUgUkVQTElDQSBUUklHR0VSIHNvbWVfdHJpZ19hZnRlcmE7CitBTFRFUiBUQUJMRSBzb21lX3Qg RElTQUJMRSBUUklHR0VSIHNvbWVfdHJpZ19hZnRlcmI7CitBTFRFUiBUQUJMRSBzb21lX3QgRU5B QkxFIEFMV0FZUyBUUklHR0VSIHNvbWVfdHJpZ19iZWZvcmU7CitDUkVBVEUgVEFCTEUgc29tZV90 MSAoYyBJTlQsIExJS0Ugc29tZV90IElOQ0xVRElORyBUUklHR0VSUyBJTkNMVURJTkcgQ09NTUVO VFMpOworXGQrIHNvbWVfdDEKIERST1AgVEFCTEUgc29tZV90OworRFJPUCBUQUJMRSBzb21lX3Qx OwogCiAtLSBib2d1cyBjYXNlcwogQ1JFQVRFIFRSSUdHRVIgZXJyb3JfdXBkX2FuZF9jb2wgQkVG T1JFIFVQREFURSBPUiBVUERBVEUgT0YgYSBPTiBtYWluX3RhYmxlCkBAIC02MjEsNiArNjU3LDEw IEBAIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2luc3RlYWRf b2ZfdXBkJyk7CiBDUkVBVEUgVFJJR0dFUiBpbnN0ZWFkX29mX2RlbGV0ZV90cmlnIElOU1RFQUQg T0YgREVMRVRFIE9OIG1haW5fdmlldwogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHZp ZXdfdHJpZ2dlcignaW5zdGVhZF9vZl9kZWwnKTsKIAorQ1JFQVRFIFRBQkxFIG1haW5fdmlld190 YWJsZShMSUtFIG1haW5fdmlldyBJTkNMVURJTkcgVFJJR0dFUlMpOyAtLSBWaWV3IHRyaWdnZXJz IGFyZSBub3QgY29waWVkCitcZCBtYWluX3ZpZXdfdGFibGUKK0RST1AgVEFCTEUgbWFpbl92aWV3 X3RhYmxlOworCiAtLSBWYWxpZCBCRUZPUkUgc3RhdGVtZW50IFZJRVcgdHJpZ2dlcnMKIENSRUFU RSBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIEJFRk9SRSBJTlNFUlQgT04gbWFpbl92aWV3 CiBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgdmlld190cmlnZ2VyKCdiZWZv cmVfdmlld19pbnNfc3RtdCcpOwpAQCAtMTYwOSw2ICsxNjQ5LDEzIEBAIGNyZWF0ZSBjb25zdHJh aW50IHRyaWdnZXIgcGFydGVkX3RyaWdfdHdvIGFmdGVyIGluc2VydCBvbiBwYXJ0ZWRfY29uc3Ry CiAgIGZvciBlYWNoIHJvdyB3aGVuIChiYXJrKG5ldy5iKSBBTkQgbmV3LmEgJSAyID0gMSkKICAg ZXhlY3V0ZSBwcm9jZWR1cmUgdHJpZ2dlcl9ub3RpY2VfYWIoKTsKIAorY3JlYXRlIHRhYmxlIHBh cnRlZF9jb25zdHJfY29weSAoYyBpbnQsIGxpa2UgcGFydGVkX2NvbnN0ciBpbmNsdWRpbmcgYWxs LCBkIGludCk7CitzZWxlY3QgIHBnX2dldF90cmlnZ2VyZGVmKG9pZCkKK2Zyb20gICAgcGdfdHJp Z2dlcgord2hlcmUgICBub3QgdGdpc2ludGVybmFsIGFuZCB0Z3JlbGlkIGluICgncGFydGVkX2Nv bnN0cl9jb3B5Jzo6cmVnY2xhc3MsICdwYXJ0ZWRfY29uc3RyJzo6cmVnY2xhc3MpCitvcmRlciBi eSB0Z25hbWU7Citkcm9wIHRhYmxlIHBhcnRlZF9jb25zdHJfY29weTsKKwogLS0gVGhlIGltbWVk aWF0ZSBjb25zdHJhaW50IGlzIGZpcmVkIGltbWVkaWF0ZWx5OyB0aGUgV0hFTiBjbGF1c2Ugb2Yg dGhlCiAtLSBkZWZlcnJlZCBjb25zdHJhaW50IGlzIGFsc28gY2FsbGVkIGltbWVkaWF0ZWx5LiAg VGhlIGRlZmVycmVkIGNvbnN0cmFpbnQKIC0tIGlzIGZpcmVkIGF0IGNvbW1pdCB0aW1lLgpAQCAt MjI4Myw2ICsyMzMwLDEwIEBAIGNyZWF0ZSB0cmlnZ2VyIGlvY2R1X3R0X3BhcnRlZF91cGRhdGVf dHJpZwogICBhZnRlciB1cGRhdGUgb24gaW9jZHVfdHRfcGFydGVkIHJlZmVyZW5jaW5nIG9sZCB0 YWJsZSBhcyBvbGRfdGFibGUgbmV3IHRhYmxlIGFzIG5ld190YWJsZQogICBmb3IgZWFjaCBzdGF0 ZW1lbnQgZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF91cGRhdGUoKTsKIAorQ1JFQVRFIFRBQkxFIGlv Y2R1X3R0X3BhcnRlZF9jb3B5KExJS0UgaW9jZHVfdHRfcGFydGVkIElOQ0xVRElORyBUUklHR0VS Uyk7CitcZCBpb2NkdV90dF9wYXJ0ZWRfY29weQorRFJPUCBUQUJMRSBpb2NkdV90dF9wYXJ0ZWRf Y29weTsKKwogLS0gaW5zZXJ0cyBvbmx5CiBpbnNlcnQgaW50byBpb2NkdV90dF9wYXJ0ZWQgdmFs dWVzICgxLCAnQUFBJyksICgyLCAnQkJCJykKICAgb24gY29uZmxpY3QgKGEpIGRvCkBAIC0yNzQw LDYgKzI3OTEsMjUgQEAgZW5kOwogJCQ7CiBhbHRlciBmdW5jdGlvbiB3aG9hbWkoKSBvd25lciB0 byByZWdyZXNzX2ZuX293bmVyOwogCistLSBDUkVBVEUgVEFCTEUgTElLRSBJTkNMVURJTkcgVFJJ R0dFUlMgZm9yIGNvbnN0cmFpbnQgdHJpZ2dlcgorY3JlYXRlIHNjaGVtYSB0ZXN0X3RyaWc7Citj cmVhdGUgdGFibGUgdGVzdF90cmlnLnRyaWdfdDEgKGlkIGludGVnZXIpOworY3JlYXRlIHRhYmxl IHRlc3RfdHJpZy50cmlnX3QyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIGZ1bmN0aW9uIHdob2FtaSgp IHNldCBzY2hlbWEgdGVzdF90cmlnOworCitjcmVhdGUgY29uc3RyYWludCB0cmlnZ2VyIGNvbl90 cmlnX3Rlc3QgYWZ0ZXIgaW5zZXJ0IG9uIHRlc3RfdHJpZy50cmlnX3QxCitmcm9tIHRlc3RfdHJp Zy50cmlnX3QyCitkZWZlcnJhYmxlIGluaXRpYWxseSBkZWZlcnJlZAorZm9yIGVhY2ggcm93Citl eGVjdXRlIGZ1bmN0aW9uIHRlc3RfdHJpZy53aG9hbWkoKTsKKworY3JlYXRlIHRhYmxlIHRyaWdf dDFfY29weShsaWtlIHRlc3RfdHJpZy50cmlnX3QxIGluY2x1ZGluZyB0cmlnZ2Vycyk7CitzZWxl Y3QgcGdfZ2V0X3RyaWdnZXJkZWYob2lkKSBmcm9tIHBnX3RyaWdnZXIgd2hlcmUgdGdyZWxpZCA9 ICd0cmlnX3QxX2NvcHknOjpyZWdjbGFzczsKKworYWx0ZXIgZnVuY3Rpb24gdGVzdF90cmlnLndo b2FtaSgpIHNldCBzY2hlbWEgcHVibGljOworZHJvcCB0YWJsZSB0ZXN0X3RyaWcudHJpZ190MSwg dGVzdF90cmlnLnRyaWdfdDIsIHRyaWdfdDFfY29weTsKK2Ryb3Agc2NoZW1hIHRlc3RfdHJpZzsK KwogY3JlYXRlIHRhYmxlIGRlZmVyX3RyaWcgKGlkIGludGVnZXIpOwogZ3JhbnQgaW5zZXJ0IG9u IGRlZmVyX3RyaWcgdG8gcHVibGljOwogY3JlYXRlIGNvbnN0cmFpbnQgdHJpZ2dlciB3aG9hbWkg YWZ0ZXIgaW5zZXJ0IG9uIGRlZmVyX3RyaWcKLS0gCjIuMzQuMQoK --000000000000d1ea330656127749--