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 1rcMYi-002Q7k-RF for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 09:37:05 +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 1rcMXi-002reo-1b for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 09:36:02 +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 1rcMXh-002reg-2w for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 09:36:01 +0000 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rcMXe-007gHB-25 for pgsql-hackers@postgresql.org; Tue, 20 Feb 2024 09:35:59 +0000 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-4126ea3b812so3071725e9.2 for ; Tue, 20 Feb 2024 01:35:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708421756; x=1709026556; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=WZK4mJGSLdKNl3ERFhTSDbya7UKuP9UCwLcPjzixFSM=; b=PX5UECJZ09TlwrbPOyTEX5K0p5QGHsTFe0Jd/ngR8W7UlghX8kpDxEtIHhrKTCX1T9 mCTcBubZvOo2vtzyd69UDqQ12ly5X7jVTUOki4wW8JcCd365rRlc+Pkj7ndczVMqroms 27eIJAnTVCTQL48Tws0v4jhGF7yxo9Gn2dXSGE+cxx7ncEPuY/RohdpzsbDL14GqaAod s93y5R2e5+T8q8cGuMSAJ+w3hCfGSXgPhPUnivXx5AjD8IXc1w7XBTsw2kjXZXLuU2a6 yeDCIsS6RfOhDMQZUe8xyIZvtRmMvH0M4rD0z+v8S8/oBCv9ANlw7bfWszU3uCLDa2R+ 1Pjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708421756; x=1709026556; 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=WZK4mJGSLdKNl3ERFhTSDbya7UKuP9UCwLcPjzixFSM=; b=N4BI+598V1zQTcnHANnBVrhHUj8NomBXbsCiEQwreZ2HSYAU5jX84wVIL9+trB5TSN 4ZbchasX0P8C9FoMHypue2KUBAAZM0NQACx849EqU0iUI736XoHOzAAF25I+DIRLIflo gTG2zk9U8743kg+Qw4DqXUWUFOnsJu5MNRvoDrjwvjWrpFYRPYeRMLtHdIVp+thtet1n eEqn7TVfxfA0Q+LdwUrlZ6bCtrj6RKELUL4PvSJx8dn4XB3g15+h82c9CIZaV+ISinE0 JDsVdc/jNX5uW3OuQZ1ROQIRZ0VBXTQoIS5pFnAVQflacUSesnNp6lDDRDT1bV3m+zsK As7w== X-Forwarded-Encrypted: i=1; AJvYcCVi/yA6ACJSFpsYCuvdG0cb33VN7t73Te6dt2jMYjXGmRLccfLNENzqqwlfOCevz2wStviV4cGlofvKopugZ/CT8GpdTb4FmlGRZvck X-Gm-Message-State: AOJu0YwDa9Wa2ST7aOWDxJWUMOQYkNHlOsRewVCYtvZXjGALFSGG23mH eSxZJijOV+NalBGWnL02uf/KahIGIJd36Q/cFtN6FjO6AgUP4CRHrHzLkSzDZV4CLNnUUpM/sKl Fd8B7+inKmUKaRSrxYvUAcFzjsno= X-Google-Smtp-Source: AGHT+IFx7vzL6avssEF1W2EP1WtpI54iQZXAB2cQJPP4V6XbIn2fnK+A0q/sDlm/OexZHqgyjeOI2wOR45t0qTrzx14= X-Received: by 2002:a5d:43c4:0:b0:33d:3566:b5bf with SMTP id v4-20020a5d43c4000000b0033d3566b5bfmr5979113wrr.14.1708421756281; Tue, 20 Feb 2024 01:35:56 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Tue, 20 Feb 2024 15:05:44 +0530 Message-ID: Subject: Re: Synchronizing slots from primary to standby To: Masahiko Sawada Cc: Amit Kapila , "Zhijie Hou (Fujitsu)" , Peter Smith , Ajin Cherian , Dilip Kumar , Nisha Moond , "Hayato Kuroda (Fujitsu)" , Bharath Rupireddy , Peter Eisentraut , Bruce Momjian , Ashutosh Sharma , Andres Freund , pgsql-hackers , Alvaro Herrera , Bertrand Drouvot , shveta malik Content-Type: multipart/mixed; boundary="000000000000e8ffa10611cceff3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e8ffa10611cceff3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 20, 2024 at 8:25=E2=80=AFAM Masahiko Sawada wrote: > > I've reviewed the v91 patch. Here are random comments: > Thanks for the comments, addressed in v92. slotsync.c file is still under 'logical'. I am waiting for the discussion to be concluded. v92 also addresses some off-list comments given by Amit and Hou-San. The changes are in patch001, rest of the patches are rebased. thanks Shveta --000000000000e8ffa10611cceff3 Content-Type: application/octet-stream; name="v92-0002-Allow-logical-walsenders-to-wait-for-the-physica.patch" Content-Disposition: attachment; filename="v92-0002-Allow-logical-walsenders-to-wait-for-the-physica.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lsu64wo01 RnJvbSBhMjU0MWQzYmM4YTkwNjlkMDM3YTkzYmQ5NGI3NWQ0MmFiODFhNmZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjAgRmViIDIwMjQgMTQ6MzI6MTMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 MiAyLzNdIEFsbG93IGxvZ2ljYWwgd2Fsc2VuZGVycyB0byB3YWl0IGZvciB0aGUgcGh5c2ljYWwK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byBlbnN1cmUgdGhhdCBwaHlzaWNh bCBzdGFuZGJ5IHNlcnZlcnMsCndoaWNoIGFyZSBwb3RlbnRpYWwgZmFpbG92ZXIgY2FuZGlkYXRl cywgaGF2ZSByZWNlaXZlZCBhbmQgZmx1c2hlZCBjaGFuZ2VzCmJlZm9yZSBtYWtpbmcgdGhlbSB2 aXNpYmxlIHRvIHN1YnNjcmliZXJzLiBCeSBkb2luZyBzbywgaXQgZ3VhcmFudGVlcyB0aGF0CnRo ZSBwcm9tb3RlZCBzdGFuZGJ5IHNlcnZlciBpcyBub3QgbGFnZ2luZyBiZWhpbmQgdGhlIHN1YnNj cmliZXJzIHdoZW4gYQpmYWlsb3ZlciBpcyBuZWNlc3NhcnkuCgpBIG5ldyBwYXJhbWV0ZXIgbmFt ZWQgc3RhbmRieV9zbG90X25hbWVzIGlzIGludHJvZHVjZWQuIFRoZSBsb2dpY2FsCndhbHNlbmRl ciBub3cgZ3VhcmFudGVlcyB0aGF0IGFsbCBsb2NhbCBjaGFuZ2VzIGFyZSBzZW50IGFuZCBmbHVz aGVkIHRvCnRoZSBzdGFuZGJ5IHNlcnZlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgcmVwbGljYXRp b24gc2xvdHMgc3BlY2lmaWVkIGluCnN0YW5kYnlfc2xvdF9uYW1lcyBiZWZvcmUgc2VuZGluZyB0 aG9zZSBjaGFuZ2VzIHRvIHRoZSBzdWJzY3JpYmVyLgoKQWRkaXRpb25hbGx5LCBUaGUgU1FMIGZ1 bmN0aW9ucyBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMgYW5kCnBnX3JlcGxpY2F0aW9uX3Ns b3RfYWR2YW5jZSBhcmUgbW9kaWZpZWQgdG8gd2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3Rz Cm1lbnRpb25lZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMgdG8gY2F0Y2ggdXAgYmVmb3JlIHJldHVy bmluZyB0aGUgY2hhbmdlcwp0byB0aGUgdXNlci4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbCAgICAgICAgICAgICB8ICAgOCArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsZnVuY3MuYyAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YyAgICAgICAgICAgICAgICB8IDM0MiArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAxMTAgKysrKystCiAuLi4vdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9zbG90LmggICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHNlbmRlcl9wcml2YXRlLmggICB8ICAgNyArCiBzcmMvaW5jbHVkZS91dGlscy9ndWNfaG9v a3MuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDZfbG9n aWNhbF9kZWNvZGluZy5wbCAgIHwgICAzICstCiAuLi4vdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9z bG90c19zeW5jLnBsICAgICAgfCAyNjEgKysrKysrKysrKystLQogMTYgZmlsZXMgY2hhbmdlZCwg NzYxIGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBmZjE4NDAw M2ZlLi4xYzg0ZDM1Yzk2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NDIwLDYgKzQ0MjAsMzAgQEAgcmVzdG9y ZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJcXCVmIiAiJXAiJyAgIyBX aW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8 dmFybGlzdGVudHJ5IGlkPSJndWMtc3RhbmRieS1zbG90LW5hbWVzIiB4cmVmbGFiZWw9InN0YW5k Ynlfc2xvdF9uYW1lcyI+CisgICAgICA8dGVybT48dmFybmFtZT5zdGFuZGJ5X3Nsb3RfbmFtZXM8 L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAg ICA8cHJpbWFyeT48dmFybmFtZT5zdGFuZGJ5X3Nsb3RfbmFtZXM8L3Zhcm5hbWU+IGNvbmZpZ3Vy YXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rl cm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIExpc3Qgb2YgcGh5 c2ljYWwgc2xvdHMgZ3VhcmFudGVlcyB0aGF0IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgd2l0 aAorICAgICAgICBmYWlsb3ZlciBlbmFibGVkIGRvIG5vdCBjb25zdW1lIGNoYW5nZXMgdW50aWwg dGhvc2UgY2hhbmdlcyBhcmUgcmVjZWl2ZWQKKyAgICAgICAgYW5kIGZsdXNoZWQgdG8gY29ycmVz cG9uZGluZyBwaHlzaWNhbCBzdGFuZGJ5cy4gSWYgYSBsb2dpY2FsIHJlcGxpY2F0aW9uCisgICAg ICAgIGNvbm5lY3Rpb24gaXMgbWVhbnQgdG8gc3dpdGNoIHRvIGEgcGh5c2ljYWwgc3RhbmRieSBh ZnRlciB0aGUgc3RhbmRieSBpcworICAgICAgICBwcm9tb3RlZCwgdGhlIHBoeXNpY2FsIHJlcGxp Y2F0aW9uIHNsb3QgZm9yIHRoZSBzdGFuZGJ5IHNob3VsZCBiZSBsaXN0ZWQKKyAgICAgICAgaGVy ZS4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBzdGFuZGJ5cyBj b3JyZXNwb25kaW5nIHRvIHRoZSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyBpbgorICAgICAg ICA8dmFybmFtZT5zdGFuZGJ5X3Nsb3RfbmFtZXM8L3Zhcm5hbWU+IG11c3QgY29uZmlndXJlCisg ICAgICAgIDxsaXRlcmFsPnN5bmNfcmVwbGljYXRpb25fc2xvdHMgPSB0cnVlPC9saXRlcmFsPiBz byB0aGV5IGNhbiByZWNlaXZlCisgICAgICAgIGZhaWxvdmVyIGxvZ2ljYWwgc2xvdHMgY2hhbmdl cyBmcm9tIHRoZSBwcmltYXJ5LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9z cmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAppbmRleCA5MzBjMGZhOGE2Li43M2IyYWJlZGE1 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCkBAIC0zODQsNiArMzg0LDE0IEBAIHBvc3Rn cmVzPSMgc2VsZWN0ICogZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Np b25fc2xvdCcsIE5VTEwsIE5VCiAgICAgIG11c3QgYmUgZW5hYmxlZCBvbiB0aGUgc3RhbmRieS4g SXQgaXMgYWxzbyBuZWNlc3NhcnkgdG8gc3BlY2lmeSBhIHZhbGlkCiAgICAgIDxsaXRlcmFsPmRi bmFtZTwvbGl0ZXJhbD4gaW4gdGhlCiAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1wcmltYXJ5LWNv bm5pbmZvIj48dmFybmFtZT5wcmltYXJ5X2Nvbm5pbmZvPC92YXJuYW1lPjwvbGluaz4uCisgICAg IEl0J3MgYWxzbyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB0aGUgc2FpZCBwaHlzaWNhbCByZXBs aWNhdGlvbiBzbG90CisgICAgIGlzIG5hbWVkIGluCisgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1z dGFuZGJ5LXNsb3QtbmFtZXMiPjx2YXJuYW1lPnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT48 L2xpbms+CisgICAgIGxpc3Qgb24gdGhlIHByaW1hcnksIHRvIHByZXZlbnQgdGhlIHN1YnNjcmli ZXIgZnJvbSBjb25zdW1pbmcgY2hhbmdlcworICAgICBmYXN0ZXIgdGhhbiB0aGUgaG90IHN0YW5k YnkuIEJ1dCBvbmNlIHdlIGNvbmZpZ3VyZSBpdCwgdGhlbiBjZXJ0YWluIGxhdGVuY3kKKyAgICAg aXMgZXhwZWN0ZWQgaW4gc2VuZGluZyBjaGFuZ2VzIHRvIGxvZ2ljYWwgc3Vic2NyaWJlcnMgZHVl IHRvIHdhaXQgb24KKyAgICAgcGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgaW4KKyAgICAgPGxp bmsgbGlua2VuZD0iZ3VjLXN0YW5kYnktc2xvdC1uYW1lcyI+PHZhcm5hbWU+c3RhbmRieV9zbG90 X25hbWVzPC92YXJuYW1lPjwvbGluaz4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IGIwMDgx ZDNjZTUuLjVmZjc2MWRkNjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sb2dpY2FsZnVuY3MuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9tZXNzYWdlLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTEwOSw2ICsxMTAsNyBAQCBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25maXJt LCBib29sIGJpbgogCU1lbW9yeUNvbnRleHQgcGVyX3F1ZXJ5X2N0eDsKIAlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQ7CiAJWExvZ1JlY1B0cgllbmRfb2Zfd2FsOworCVhMb2dSZWNQdHIJd2FpdF9m b3Jfd2FsX2xzbjsKIAlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHg7CiAJUmVzb3VyY2VPd25l ciBvbGRfcmVzb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKIAlBcnJheVR5cGUgICphcnI7 CkBAIC0yMjgsNiArMjMwLDE3IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJCQkJCQkJTmFt ZVN0cihNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5wbHVnaW4pLAogCQkJCQkJCWZvcm1hdF9wcm9j ZWR1cmUoZmNpbmZvLT5mbGluZm8tPmZuX29pZCkpKSk7CiAKKwkJaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQodXB0b19sc24pKQorCQkJd2FpdF9mb3Jfd2FsX2xzbiA9IGVuZF9vZl93YWw7CisJCWVs c2UKKwkJCXdhaXRfZm9yX3dhbF9sc24gPSBNaW4odXB0b19sc24sIGVuZF9vZl93YWwpOworCisJ CS8qCisJCSAqIFdhaXQgZm9yIHNwZWNpZmllZCBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRi eSBzZXJ2ZXJzIChpZiBhbnkpCisJCSAqIHRvIGNvbmZpcm0gcmVjZWlwdCBvZiBXQUwgdXAgdG8g d2FpdF9mb3Jfd2FsX2xzbi4KKwkJICovCisJCVdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKHdh aXRfZm9yX3dhbF9sc24pOworCiAJCWN0eC0+b3V0cHV0X3dyaXRlcl9wcml2YXRlID0gcDsKIAog CQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IGQx MzlkNTMxNzMuLjIxZjE5NDI3NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Nsb3RzeW5jLmMKQEAgLTQ4OCw2ICs0ODgsMTAgQEAgc3luY2hyb25pemVfb25lX3Nsb3QoUmVt b3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAlsYXRlc3RGbHVzaFB0ciA9 IEdldFN0YW5kYnlGbHVzaFJlY1B0cihOVUxMKTsKIAlpZiAocmVtb3RlX3Nsb3QtPmNvbmZpcm1l ZF9sc24gPiBsYXRlc3RGbHVzaFB0cikKIAl7CisJCS8qCisJCSAqIENhbiBnZXQgaGVyZSBvbmx5 IGlmIEdVQyAnc3RhbmRieV9zbG90X25hbWVzJyBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIKKwkJICog d2FzIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseS4KKwkJICovCiAJCWVyZXBvcnQoYW1fc2xvdHN5 bmNfd29ya2VyID8gTE9HIDogRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQllcnJtc2coInNraXBwaW5nIHNsb3Qgc3luY2hy b25pemF0aW9uIGFzIHRoZSByZWNlaXZlZCBzbG90IHN5bmMiCkBAIC04NTcsNiArODYxLDE1IEBA IHZhbGlkYXRlX3JlbW90ZV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQogCXJlbW90ZV9p bl9yZWNvdmVyeSA9IERhdHVtR2V0Qm9vbChzbG90X2dldGF0dHIodHVwc2xvdCwgMSwgJmlzbnVs bCkpOwogCUFzc2VydCghaXNudWxsKTsKIAorCS8qCisJICogU2xvdCBzeW5jIGlzIGN1cnJlbnRs eSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieS4gVGhpcyBpcworCSAqIGJl Y2F1c2UgaWYgd2UgYWxsb3cgaXQsIHRoZSBwcmltYXJ5IHNlcnZlciBuZWVkcyB0byB3YWl0IGZv ciBhbGwgdGhlCisJICogY2FzY2FkaW5nIHN0YW5kYnlzLCBvdGhlcndpc2UsIGxvZ2ljYWwgc3Vi c2NyaWJlcnMgY2FuIHN0aWxsIGJlIGFoZWFkCisJICogb2Ygb25lIG9mIHRoZSBjYXNjYWRpbmcg c3RhbmRieXMgd2hpY2ggd2UgcGxhbiB0byBwcm9tb3RlLiBUaHVzLCB0bworCSAqIGF2b2lkIHRo aXMgYWRkaXRpb25hbCBjb21wbGV4aXR5LCB3ZSByZXN0cmljdCBpdCBmb3IgdGhlIHRpbWUgYmVp bmcuCisJICoKKwkgKiBYWFg6IElmIG5lZWRlZCwgdGhpcyBjYW4gYmUgYXR0ZW1wdGVkIGluIGZ1 dHVyZS4KKwkgKi8KIAlpZiAocmVtb3RlX2luX3JlY292ZXJ5KQogCQllcmVwb3J0KEVSUk9SLAog CQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IGEyMjY5YzQ2ZjcuLjEwM2M4NDMxYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKQEAgLTQ2LDEzICs0NiwxOCBAQAogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRl cl9wcml2YXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j YXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2d1 Y19ob29rcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv dmFybGVuYS5oIgogCiAvKgogICogUmVwbGljYXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3RydWN0 dXJlLgpAQCAtOTksMTAgKzEwNCwxOSBAQCBSZXBsaWNhdGlvblNsb3RDdGxEYXRhICpSZXBsaWNh dGlvblNsb3RDdGwgPSBOVUxMOwogLyogTXkgYmFja2VuZCdzIHJlcGxpY2F0aW9uIHNsb3QgaW4g dGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNhdGlv blNsb3QgPSBOVUxMOwogCi0vKiBHVUMgdmFyaWFibGUgKi8KKy8qIEdVQyB2YXJpYWJsZXMgKi8K IGludAkJCW1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDEwOyAvKiB0aGUgbWF4aW11bSBudW1iZXIg b2YgcmVwbGljYXRpb24KIAkJCQkJCQkJCQkgKiBzbG90cyAqLwogCisvKgorICogVGhpcyBHVUMg bGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMgdGhh dAorICogbG9naWNhbCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yLgorICovCitj aGFyCSAgICpzdGFuZGJ5X3Nsb3RfbmFtZXM7CisKKy8qIFRoaXMgaXMgcGFyc2VkIGFuZCBjYWNo ZWQgbGlzdCBmb3IgcmF3IHN0YW5kYnlfc2xvdF9uYW1lcy4gKi8KK3N0YXRpYyBMaXN0ICpzdGFu ZGJ5X3Nsb3RfbmFtZXNfbGlzdCA9IE5JTDsKKwogc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90 U2htZW1FeGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgUmVwbGljYXRpb25T bG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogCkBAIC0yMzI0LDMgKzIzMzgsMzI5 IEBAIEdldFNsb3RJbnZhbGlkYXRpb25DYXVzZShjaGFyICpjb25mbGljdF9yZWFzb24pCiAJLyog S2VlcCBjb21waWxlciBxdWlldCAqLwogCXJldHVybiBSU19JTlZBTF9OT05FOwogfQorCisvKgor ICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgc2xvdHMgc3BlY2lmaWVkIGluIEdVQyBz dGFuZGJ5X3Nsb3RfbmFtZXMuCisgKi8KK3N0YXRpYyBib29sCit2YWxpZGF0ZV9zdGFuZGJ5X3Ns b3RzKGNoYXIgKipuZXd2YWwpCit7CisJY2hhcgkgICAqcmF3bmFtZTsKKwlMaXN0CSAgICplbGVt bGlzdDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlib29sCQlvazsKKworCS8qIE5lZWQgYSBtb2RpZmlh YmxlIGNvcHkgb2Ygc3RyaW5nICovCisJcmF3bmFtZSA9IHBzdHJkdXAoKm5ld3ZhbCk7CisKKwkv KiBWZXJpZnkgc3ludGF4IGFuZCBwYXJzZSBzdHJpbmcgaW50byBhIGxpc3Qgb2YgaWRlbnRpZmll cnMgKi8KKwlvayA9IFNwbGl0SWRlbnRpZmllclN0cmluZyhyYXduYW1lLCAnLCcsICZlbGVtbGlz dCk7CisKKwlpZiAoIW9rKQorCQlHVUNfY2hlY2tfZXJyZGV0YWlsKCJMaXN0IHN5bnRheCBpcyBp bnZhbGlkLiIpOworCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIHN5bnRheCBlcnJvciBpbiB0aGUg bmFtZSBvciBpZiB0aGUgcmVwbGljYXRpb24gc2xvdHMnCisJICogZGF0YSBpcyBub3QgaW5pdGlh bGl6ZWQgeWV0IChpLmUuLCB3ZSBhcmUgaW4gdGhlIHN0YXJ0dXAgcHJvY2VzcyksIHNraXAKKwkg KiB0aGUgc2xvdCB2ZXJpZmljYXRpb24uCisJICovCisJaWYgKCFvayB8fCAhUmVwbGljYXRpb25T bG90Q3RsKQorCXsKKwkJcGZyZWUocmF3bmFtZSk7CisJCWxpc3RfZnJlZShlbGVtbGlzdCk7CisJ CXJldHVybiBvazsKKwl9CisKKwlmb3JlYWNoKGxjLCBlbGVtbGlzdCkKKwl7CisJCWNoYXIJICAg Km5hbWUgPSBsZmlyc3QobGMpOworCQlSZXBsaWNhdGlvblNsb3QgKnNsb3Q7CisKKwkJc2xvdCA9 IFNlYXJjaE5hbWVkUmVwbGljYXRpb25TbG90KG5hbWUsIHRydWUpOworCisJCWlmICghc2xvdCkK KwkJeworCQkJR1VDX2NoZWNrX2VycmRldGFpbCgicmVwbGljYXRpb24gc2xvdCBcIiVzXCIgZG9l cyBub3QgZXhpc3QiLAorCQkJCQkJCQluYW1lKTsKKwkJCW9rID0gZmFsc2U7CisJCQlicmVhazsK KwkJfQorCisJCWlmICghU2xvdElzUGh5c2ljYWwoc2xvdCkpCisJCXsKKwkJCUdVQ19jaGVja19l cnJkZXRhaWwoIlwiJXNcIiBpcyBub3QgYSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IiwKKwkJ CQkJCQkJbmFtZSk7CisJCQlvayA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlwZnJl ZShyYXduYW1lKTsKKwlsaXN0X2ZyZWUoZWxlbWxpc3QpOworCXJldHVybiBvazsKK30KKworLyoK KyAqIEdVQyBjaGVja19ob29rIGZvciBzdGFuZGJ5X3Nsb3RfbmFtZXMKKyAqLworYm9vbAorY2hl Y2tfc3RhbmRieV9zbG90X25hbWVzKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291 cmNlIHNvdXJjZSkKK3sKKwlpZiAoc3RyY21wKCpuZXd2YWwsICIiKSA9PSAwKQorCQlyZXR1cm4g dHJ1ZTsKKworCS8qCisJICogIioiIGlzIG5vdCBhY2NlcHRlZCBhcyBpbiB0aGF0IGNhc2UgcHJp bWFyeSB3aWxsIG5vdCBiZSBhYmxlIHRvIGtub3cKKwkgKiBmb3Igd2hpY2ggYWxsIHN0YW5kYnlz IHRvIHdhaXQgZm9yLiBFdmVuIGlmIHdlIGhhdmUgcGh5c2ljYWwtc2xvdHMKKwkgKiBpbmZvLCB0 aGVyZSBpcyBubyB3YXkgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGlzIGFueSBzdGFuZGJ5CisJ ICogY29uZmlndXJlZCBmb3IgdGhlIGtub3duIHBoeXNpY2FsIHNsb3RzLgorCSAqLworCWlmIChz dHJjbXAoKm5ld3ZhbCwgIioiKSA9PSAwKQorCXsKKwkJR1VDX2NoZWNrX2VycmRldGFpbCgiXCIl c1wiIGlzIG5vdCBhY2NlcHRlZCBmb3Igc3RhbmRieV9zbG90X25hbWVzIiwKKwkJCQkJCQkqbmV3 dmFsKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIE5vdyB2ZXJpZnkgaWYgdGhlIHNwZWNp ZmllZCBzbG90cyByZWFsbHkgZXhpc3QgYW5kIGhhdmUgY29ycmVjdCB0eXBlICovCisJaWYgKCF2 YWxpZGF0ZV9zdGFuZGJ5X3Nsb3RzKG5ld3ZhbCkpCisJCXJldHVybiBmYWxzZTsKKworCSpleHRy YSA9IGd1Y19zdHJkdXAoRVJST1IsICpuZXd2YWwpOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8q CisgKiBHVUMgYXNzaWduX2hvb2sgZm9yIHN0YW5kYnlfc2xvdF9uYW1lcworICovCit2b2lkCith c3NpZ25fc3RhbmRieV9zbG90X25hbWVzKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEp Cit7CisJTGlzdAkgICAqc3RhbmRieV9zbG90czsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlj aGFyCSAgICpzdGFuZGJ5X3Nsb3RfbmFtZXNfY3B5ID0gZXh0cmE7CisKKwlsaXN0X2ZyZWUoc3Rh bmRieV9zbG90X25hbWVzX2xpc3QpOworCXN0YW5kYnlfc2xvdF9uYW1lc19saXN0ID0gTklMOwor CisJLyogTm8gdmFsdWUgaXMgc3BlY2lmaWVkIGZvciBzdGFuZGJ5X3Nsb3RfbmFtZXMuICovCisJ aWYgKHN0YW5kYnlfc2xvdF9uYW1lc19jcHkgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKCFT cGxpdElkZW50aWZpZXJTdHJpbmcoc3RhbmRieV9zbG90X25hbWVzX2NweSwgJywnLCAmc3RhbmRi eV9zbG90cykpCisJeworCQkvKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuIGlmIEdVQyBjaGVja2Vk IGNoZWNrX3N0YW5kYnlfc2xvdF9uYW1lcy4gKi8KKwkJZWxvZyhFUlJPUiwgImludmFsaWQgbGlz dCBzeW50YXgiKTsKKwl9CisKKwkvKgorCSAqIFN3aXRjaCB0byB0aGUgc2FtZSBtZW1vcnkgY29u dGV4dCB1bmRlciB3aGljaCBHVUMgdmFyaWFibGVzIGFyZQorCSAqIGFsbG9jYXRlZCAoR1VDTWVt b3J5Q29udGV4dCkuCisJICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldE1l bW9yeUNodW5rQ29udGV4dChzdGFuZGJ5X3Nsb3RfbmFtZXNfY3B5KSk7CisJc3RhbmRieV9zbG90 X25hbWVzX2xpc3QgPSBsaXN0X2NvcHkoc3RhbmRieV9zbG90cyk7CisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBjb3B5IG9mIHN0YW5kYnlfc2xv dF9uYW1lc19saXN0IGlmIHRoZSBjb3B5IGZsYWcgaXMgc2V0IHRvIHRydWUsCisgKiBvdGhlcndp c2UgcmV0dXJuIHRoZSBvcmlnaW5hbCBsaXN0LgorICovCitMaXN0ICoKK0dldFN0YW5kYnlTbG90 TGlzdChib29sIGNvcHkpCit7CisJLyoKKwkgKiBTaW5jZSB3ZSBkbyBub3Qgc3VwcG9ydCBzeW5j aW5nIHNsb3RzIHRvIGNhc2NhZGluZyBzdGFuZGJ5cywgd2UgcmV0dXJuCisJICogTklMIGhlcmUg aWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBzdGFuZGJ5IHRvIGluZGljYXRlIHRoYXQgbm8gc3RhbmRi eQorCSAqIHNsb3RzIG5lZWQgdG8gYmUgd2FpdGVkIGZvci4KKwkgKi8KKwlpZiAoUmVjb3ZlcnlJ blByb2dyZXNzKCkpCisJCXJldHVybiBOSUw7CisKKwlpZiAoY29weSkKKwkJcmV0dXJuIGxpc3Rf Y29weShzdGFuZGJ5X3Nsb3RfbmFtZXNfbGlzdCk7CisJZWxzZQorCQlyZXR1cm4gc3RhbmRieV9z bG90X25hbWVzX2xpc3Q7Cit9CisKKy8qCisgKiBSZWxvYWQgdGhlIGNvbmZpZyBmaWxlIGFuZCBy ZWluaXRpYWxpemUgdGhlIHN0YW5kYnkgc2xvdCBsaXN0IGlmIHRoZSBHVUMKKyAqIHN0YW5kYnlf c2xvdF9uYW1lcyBoYXMgY2hhbmdlZC4KKyAqLwordm9pZAorUmVyZWFkQ29uZmlnQW5kUmVJbml0 U2xvdExpc3QoTGlzdCAqKnN0YW5kYnlfc2xvdHMpCit7CisJY2hhcgkgICAqcHJlX3N0YW5kYnlf c2xvdF9uYW1lczsKKworCS8qCisJICogSWYgd2UgYXJlIHJ1bm5pbmcgb24gYSBzdGFuZGJ5LCB0 aGVyZSBpcyBubyBuZWVkIHRvIHJlbG9hZAorCSAqIHN0YW5kYnlfc2xvdF9uYW1lcyBzaW5jZSB3 ZSBkbyBub3Qgc3VwcG9ydCBzeW5jaW5nIHNsb3RzIHRvIGNhc2NhZGluZworCSAqIHN0YW5kYnlz LgorCSAqLworCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwl7CisJCVByb2Nlc3NDb25maWdG aWxlKFBHQ19TSUdIVVApOworCQlyZXR1cm47CisJfQorCisJcHJlX3N0YW5kYnlfc2xvdF9uYW1l cyA9IHBzdHJkdXAoc3RhbmRieV9zbG90X25hbWVzKTsKKworCVByb2Nlc3NDb25maWdGaWxlKFBH Q19TSUdIVVApOworCisJaWYgKHN0cmNtcChwcmVfc3RhbmRieV9zbG90X25hbWVzLCBzdGFuZGJ5 X3Nsb3RfbmFtZXMpICE9IDApCisJeworCQlsaXN0X2ZyZWUoKnN0YW5kYnlfc2xvdHMpOworCQkq c3RhbmRieV9zbG90cyA9IEdldFN0YW5kYnlTbG90TGlzdCh0cnVlKTsKKwl9CisKKwlwZnJlZShw cmVfc3RhbmRieV9zbG90X25hbWVzKTsKK30KKworLyoKKyAqIEZpbHRlciB0aGUgc3RhbmRieSBz bG90cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGxvZyBzZXF1ZW5jZSBudW1iZXIKKyAqICh3YWl0 X2Zvcl9sc24pLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgcGFzc2VkIHN0YW5k Ynlfc2xvdHMgbGlzdCwgcmVtb3ZpbmcgYW55IHNsb3RzIHRoYXQKKyAqIGhhdmUgYWxyZWFkeSBj YXVnaHQgdXAgdG8gb3Igc3VycGFzc2VkIHRoZSBnaXZlbiB3YWl0X2Zvcl9sc24uIEFkZGl0aW9u YWxseSwKKyAqIGl0IHJlbW92ZXMgc2xvdHMgdGhhdCBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIGRy b3BwZWQsIG9yIGNvbnZlcnRlZCB0bworICogbG9naWNhbCBzbG90cy4KKyAqLwordm9pZAorRmls dGVyU3RhbmRieVNsb3RzKFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuLCBMaXN0ICoqc3RhbmRieV9z bG90cykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpzdGFuZGJ5X3Nsb3RzX2NweSA9 ICpzdGFuZGJ5X3Nsb3RzOworCisJZm9yZWFjaChsYywgc3RhbmRieV9zbG90c19jcHkpCisJewor CQljaGFyCSAgICpuYW1lID0gbGZpcnN0KGxjKTsKKwkJY2hhcgkgICAqd2FybmluZ2ZtdCA9IE5V TEw7CisJCVJlcGxpY2F0aW9uU2xvdCAqc2xvdDsKKworCQlzbG90ID0gU2VhcmNoTmFtZWRSZXBs aWNhdGlvblNsb3QobmFtZSwgdHJ1ZSk7CisKKwkJaWYgKCFzbG90KQorCQl7CisJCQkvKgorCQkJ ICogSXQgbWF5IGhhcHBlbiB0aGF0IHRoZSBzbG90IHNwZWNpZmllZCBpbiBzdGFuZGJ5X3Nsb3Rf bmFtZXMgR1VDCisJCQkgKiB2YWx1ZSBpcyBkcm9wcGVkLCBzbyBsZXQncyBza2lwIG92ZXIgaXQu CisJCQkgKi8KKwkJCXdhcm5pbmdmbXQgPSBfKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVj aWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwgaWdub3JpbmciKTsKKwkJ fQorCQllbHNlIGlmIChTbG90SXNMb2dpY2FsKHNsb3QpKQorCQl7CisJCQkvKgorCQkJICogSWYg YSBsb2dpY2FsIHNsb3QgbmFtZSBpcyBwcm92aWRlZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMsIGlz c3VlCisJCQkgKiBhIFdBUk5JTkcgYW5kIHNraXAgaXQuIEFsdGhvdWdoIGxvZ2ljYWwgc2xvdHMg YXJlIGRpc2FsbG93ZWQgaW4KKwkJCSAqIHRoZSBHVUMgY2hlY2tfaG9vayh2YWxpZGF0ZV9zdGFu ZGJ5X3Nsb3RzKSwgaXQgaXMgc3RpbGwKKwkJCSAqIHBvc3NpYmxlIGZvciBhIHVzZXIgdG8gZHJv cCBhbiBleGlzdGluZyBwaHlzaWNhbCBzbG90IGFuZAorCQkJICogcmVjcmVhdGUgYSBsb2dpY2Fs IHNsb3Qgd2l0aCB0aGUgc2FtZSBuYW1lLiBTaW5jZSBpdCBpcworCQkJICogaGFybWxlc3MsIGEg V0FSTklORyBzaG91bGQgYmUgZW5vdWdoLCBubyBuZWVkIHRvIGVycm9yLW91dC4KKwkJCSAqLwor CQkJd2FybmluZ2ZtdCA9IF8oImNhbm5vdCBoYXZlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIgaW4gcGFyYW1ldGVyIFwiJXNcIiwgaWdub3JpbmciKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOworCisJCQlpZiAoc2xvdC0+ZGF0YS5p bnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCQkJeworCQkJCS8qCisJCQkJICogU3BlY2lm aWVkIHBoeXNpY2FsIHNsb3QgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCBzbyBubyBwb2ludAorCQkJ CSAqIGluIHdhaXRpbmcgZm9yIGl0LgorCQkJCSAqLworCQkJCXdhcm5pbmdmbXQgPSBfKCJwaHlz aWNhbCBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBoYXMgYmVlbiBp bnZhbGlkYXRlZCwgaWdub3JpbmciKTsKKwkJCX0KKwkJCWVsc2UgaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQoc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikgfHwKKwkJCQkJIHNsb3QtPmRhdGEucmVzdGFy dF9sc24gPCB3YWl0X2Zvcl9sc24pCisJCQl7CisJCQkJYm9vbAkJaW5hY3RpdmUgPSAoc2xvdC0+ YWN0aXZlX3BpZCA9PSAwKTsKKworCQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwor CisJCQkJLyogTG9nIHdhcm5pbmcgaWYgbm8gYWN0aXZlX3BpZCBmb3IgdGhpcyBwaHlzaWNhbCBz bG90ICovCisJCQkJaWYgKGluYWN0aXZlKQorCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJ ZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwi JXNcIiBkb2VzIG5vdCBoYXZlIGFjdGl2ZV9waWQiLAorCQkJCQkJCQkgICBuYW1lLCAic3RhbmRi eV9zbG90X25hbWVzIiksCisJCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlz IHdhaXRpbmcgb24gdGhlICIKKwkJCQkJCQkJCSAgInN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIFwi JXNcIi4iLCBuYW1lKSwKKwkJCQkJCQllcnJoaW50KCJDb25zaWRlciBzdGFydGluZyBzdGFuZGJ5 IGFzc29jaWF0ZWQgd2l0aCAiCisJCQkJCQkJCQkiXCIlc1wiIG9yIGFtZW5kIHN0YW5kYnlfc2xv dF9uYW1lcy4iLCBuYW1lKSk7CisKKwkJCQkvKiBDb250aW51ZSBpZiB0aGUgY3VycmVudCBzbG90 IGhhc24ndCBjYXVnaHQgdXAuICovCisJCQkJY29udGludWU7CisJCQl9CisJCQllbHNlCisJCQl7 CisJCQkJQXNzZXJ0KHNsb3QtPmRhdGEucmVzdGFydF9sc24gPj0gd2FpdF9mb3JfbHNuKTsKKwkJ CX0KKworCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CisJCX0KKworCQkvKgorCQkg KiBSZWFjaGluZyBoZXJlIGluZGljYXRlcyB0aGF0IGVpdGhlciB0aGUgc2xvdCBoYXMgcGFzc2Vk IHRoZQorCQkgKiB3YWl0X2Zvcl9sc24gb3IgdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCB0aGUgc2xv dCB0aGF0IHJlcXVpcmVzIGEKKwkJICogd2FybmluZyB0byBiZSByZXBvcnRlZC4KKwkJICovCisJ CWlmICh3YXJuaW5nZm10KQorCQkJZXJlcG9ydChXQVJOSU5HLCBlcnJtc2cod2FybmluZ2ZtdCwg bmFtZSwgInN0YW5kYnlfc2xvdF9uYW1lcyIpKTsKKworCQlzdGFuZGJ5X3Nsb3RzX2NweSA9IGZv cmVhY2hfZGVsZXRlX2N1cnJlbnQoc3RhbmRieV9zbG90c19jcHksIGxjKTsKKwl9CisKKwkqc3Rh bmRieV9zbG90cyA9IHN0YW5kYnlfc2xvdHNfY3B5OworfQorCisvKgorICogV2FpdCBmb3IgcGh5 c2ljYWwgc3RhbmRieSB0byBjb25maXJtIHJlY2VpdmluZyB0aGUgZ2l2ZW4gbHNuLgorICoKKyAq IFVzZWQgYnkgbG9naWNhbCBkZWNvZGluZyBTUUwgZnVuY3Rpb25zIHRoYXQgYWNxdWlyZWQgc2xv dCB3aXRoIGZhaWxvdmVyCisgKiBlbmFibGVkLiBJdCB3YWl0cyBmb3IgcGh5c2ljYWwgc3RhbmRi eXMgY29ycmVzcG9uZGluZyB0byB0aGUgcGh5c2ljYWwgc2xvdHMKKyAqIHNwZWNpZmllZCBpbiB0 aGUgc3RhbmRieV9zbG90X25hbWVzIEdVQy4KKyAqLwordm9pZAorV2FpdEZvclN0YW5kYnlDb25m aXJtYXRpb24oWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24pCit7CisJTGlzdAkgICAqc3RhbmRieV9z bG90czsKKworCWlmICghTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEuZmFpbG92ZXIpCisJCXJldHVy bjsKKworCXN0YW5kYnlfc2xvdHMgPSBHZXRTdGFuZGJ5U2xvdExpc3QodHJ1ZSk7CisKKwlpZiAo c3RhbmRieV9zbG90cyA9PSBOSUwpCisJCXJldHVybjsKKworCUNvbmRpdGlvblZhcmlhYmxlUHJl cGFyZVRvU2xlZXAoJldhbFNuZEN0bC0+d2FsX2NvbmZpcm1fcmN2X2N2KTsKKworCWZvciAoOzsp CisJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWlmIChDb25maWdSZWxvYWRQZW5k aW5nKQorCQl7CisJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCQlSZXJlYWRDb25m aWdBbmRSZUluaXRTbG90TGlzdCgmc3RhbmRieV9zbG90cyk7CisJCX0KKworCQlGaWx0ZXJTdGFu ZGJ5U2xvdHMod2FpdF9mb3JfbHNuLCAmc3RhbmRieV9zbG90cyk7CisKKwkJLyogRXhpdCBpZiBk b25lIHdhaXRpbmcgZm9yIGV2ZXJ5IHNsb3QuICovCisJCWlmIChzdGFuZGJ5X3Nsb3RzID09IE5J TCkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIFdlIHdhaXQgZm9yIHRoZSBzbG90cyBpbiB0aGUg c3RhbmRieV9zbG90X25hbWVzIHRvIGNhdGNoIHVwLCBidXQgd2UKKwkJICogdXNlIGEgdGltZW91 dCBzbyB3ZSBjYW4gYWxzbyBjaGVjayB0aGUgaWYgdGhlIHN0YW5kYnlfc2xvdF9uYW1lcworCQkg KiBoYXMgYmVlbiBjaGFuZ2VkLgorCQkgKi8KKwkJQ29uZGl0aW9uVmFyaWFibGVUaW1lZFNsZWVw KCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jjdl9jdiwgMTAwMCwKKwkJCQkJCQkJCVdBSVRfRVZF TlRfV0FJVF9GT1JfU1RBTkRCWV9DT05GSVJNQVRJT04pOworCX0KKworCUNvbmRpdGlvblZhcmlh YmxlQ2FuY2VsU2xlZXAoKTsKKwlsaXN0X2ZyZWUoc3RhbmRieV9zbG90cyk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmluZGV4IDcxYmNlNzIwNGIuLjZmZDI0ZjZhNGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi cmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHNlbmRlci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKQEAgLTQ3Niw2ICs0NzcsOCBAQCBwZ19w aHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoWExvZ1JlY1B0ciBtb3ZldG8pCiAJCSAq IGNyYXNoLCBidXQgdGhpcyBtYWtlcyB0aGUgZGF0YSBjb25zaXN0ZW50IGFmdGVyIGEgY2xlYW4g c2h1dGRvd24uCiAJCSAqLwogCQlSZXBsaWNhdGlvblNsb3RNYXJrRGlydHkoKTsKKworCQlQaHlz aWNhbFdha2V1cExvZ2ljYWxXYWxTbmQoKTsKIAl9CiAKIAlyZXR1cm4gcmV0bHNuOwpAQCAtNTE2 LDYgKzUxOSwxMiBAQCBwZ19sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZShYTG9nUmVj UHRyIG1vdmV0bykKIAkJCQkJCQkJCQkJICAgLnNlZ21lbnRfY2xvc2UgPSB3YWxfc2VnbWVudF9j bG9zZSksCiAJCQkJCQkJCQlOVUxMLCBOVUxMLCBOVUxMKTsKIAorCQkvKgorCQkgKiBXYWl0IGZv ciBzcGVjaWZpZWQgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVycyAoaWYgYW55 KQorCQkgKiB0byBjb25maXJtIHJlY2VpcHQgb2YgV0FMIHVwIHRvIG1vdmV0byBsc24uCisJCSAq LworCQlXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihtb3ZldG8pOworCiAJCS8qCiAJCSAqIFN0 YXJ0IHJlYWRpbmcgYXQgdGhlIHNsb3QncyByZXN0YXJ0X2xzbiwgd2hpY2ggd2Uga25vdyB0byBw b2ludCB0bwogCQkgKiBhIHZhbGlkIHJlY29yZC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKaW5kZXggMTNiYzNlMGFlZS4uZmFiODQxNWNiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTE3MjgsMjcgKzE3MjgsNzggQEAgV2FsU25kVXBkYXRlUHJvZ3Jlc3MoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZAog CQlQcm9jZXNzUGVuZGluZ1dyaXRlcygpOwogfQogCisvKgorICogV2FrZSB1cCB0aGUgbG9naWNh bCB3YWxzZW5kZXIgcHJvY2Vzc2VzIHdpdGggZmFpbG92ZXItZW5hYmxlZCBzbG90cyBpZiB0aGUK KyAqIGN1cnJlbnRseSBhY3F1aXJlZCBwaHlzaWNhbCBzbG90IGlzIHNwZWNpZmllZCBpbiBzdGFu ZGJ5X3Nsb3RfbmFtZXMKKyAqIEdVQy4KKyAqLwordm9pZAorUGh5c2ljYWxXYWtldXBMb2dpY2Fs V2FsU25kKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqc3RhbmRieV9zbG90 czsKKworCUFzc2VydChNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNQaHlzaWNhbChNeVJlcGxp Y2F0aW9uU2xvdCkpOworCisJc3RhbmRieV9zbG90cyA9IEdldFN0YW5kYnlTbG90TGlzdChmYWxz ZSk7CisKKwlmb3JlYWNoKGxjLCBzdGFuZGJ5X3Nsb3RzKQorCXsKKwkJY2hhcgkgICAqbmFtZSA9 IGxmaXJzdChsYyk7CisKKwkJaWYgKHN0cmNtcChuYW1lLCBOYW1lU3RyKE15UmVwbGljYXRpb25T bG90LT5kYXRhLm5hbWUpKSA9PSAwKQorCQl7CisJCQlDb25kaXRpb25WYXJpYWJsZUJyb2FkY2Fz dCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOworCQkJcmV0dXJuOworCQl9CisJfQor fQorCiAvKgogICogV2FpdCB0aWxsIFdBTCA8IGxvYyBpcyBmbHVzaGVkIHRvIGRpc2sgc28gaXQg Y2FuIGJlIHNhZmVseSBzZW50IHRvIGNsaWVudC4KICAqCi0gKiBSZXR1cm5zIGVuZCBMU04gb2Yg Zmx1c2hlZCBXQUwuICBOb3JtYWxseSB0aGlzIHdpbGwgYmUgPj0gbG9jLCBidXQKLSAqIGlmIHdl IGRldGVjdCBhIHNodXRkb3duIHJlcXVlc3QgKGVpdGhlciBmcm9tIHBvc3RtYXN0ZXIgb3IgY2xp ZW50KQotICogd2Ugd2lsbCByZXR1cm4gZWFybHksIHNvIGNhbGxlciBtdXN0IGFsd2F5cyBjaGVj ay4KKyAqIElmIHRoZSB3YWxzZW5kZXIgaG9sZHMgYSBsb2dpY2FsIHNsb3QgdGhhdCBoYXMgZW5h YmxlZCBmYWlsb3Zlciwgd2UgYWxzbworICogd2FpdCBmb3IgYWxsIHRoZSBzcGVjaWZpZWQgc3Ry ZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVycyB0bworICogY29uZmlybSByZWNlaXB0 IG9mIFdBTCB1cCB0byBSZWNlbnRGbHVzaFB0ci4KKyAqCisgKiBSZXR1cm5zIGVuZCBMU04gb2Yg Zmx1c2hlZCBXQUwuICBOb3JtYWxseSB0aGlzIHdpbGwgYmUgPj0gbG9jLCBidXQgaWYgd2UKKyAq IGRldGVjdCBhIHNodXRkb3duIHJlcXVlc3QgKGVpdGhlciBmcm9tIHBvc3RtYXN0ZXIgb3IgY2xp ZW50KSB3ZSB3aWxsIHJldHVybgorICogZWFybHksIHNvIGNhbGxlciBtdXN0IGFsd2F5cyBjaGVj ay4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIKIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsKKwlib29sCQl3YWl0X2Zvcl9zdGFuZGJ5ID0gZmFs c2U7CisJdWludDMyCQl3YWl0X2V2ZW50OworCUxpc3QJICAgKnN0YW5kYnlfc2xvdHMgPSBOSUw7 CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVjZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAorCWlmIChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5mYWlsb3ZlciAmJiByZXBsaWNhdGlvbl9h Y3RpdmUpCisJCXN0YW5kYnlfc2xvdHMgPSBHZXRTdGFuZGJ5U2xvdExpc3QodHJ1ZSk7CisKIAkv KgotCSAqIEZhc3QgcGF0aCB0byBhdm9pZCBhY3F1aXJpbmcgdGhlIHNwaW5sb2NrIGluIGNhc2Ug d2UgYWxyZWFkeSBrbm93IHdlCi0JICogaGF2ZSBlbm91Z2ggV0FMIGF2YWlsYWJsZS4gVGhpcyBp cyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgaWYgd2UncmUKLQkgKiBmYXIgYmVoaW5kLgorCSAq IENoZWNrIGlmIGFsbCB0aGUgc3RhbmRieSBzZXJ2ZXJzIGhhdmUgY29uZmlybWVkIHJlY2VpcHQg b2YgV0FMIHVwIHRvCisJICogUmVjZW50Rmx1c2hQdHIgZXZlbiB3aGVuIHdlIGFscmVhZHkga25v dyB3ZSBoYXZlIGVub3VnaCBXQUwgYXZhaWxhYmxlLgorCSAqCisJICogTm90ZSB0aGF0IHdlIGNh bm5vdCBkaXJlY3RseSByZXR1cm4gd2l0aG91dCBjaGVja2luZyB0aGUgc3RhdHVzIG9mCisJICog c3RhbmRieSBzZXJ2ZXJzIGJlY2F1c2UgdGhlIHN0YW5kYnlfc2xvdF9uYW1lcyBtYXkgaGF2ZSBj aGFuZ2VkLCB3aGljaAorCSAqIG1lYW5zIHRoZXJlIGNvdWxkIGJlIG5ldyBzdGFuZGJ5IHNsb3Rz IGluIHRoZSBsaXN0IHRoYXQgaGF2ZSBub3QgeWV0CisJICogY2F1Z2h0IHVwIHRvIHRoZSBSZWNl bnRGbHVzaFB0ci4KIAkgKi8KLQlpZiAoUmVjZW50Rmx1c2hQdHIgIT0gSW52YWxpZFhMb2dSZWNQ dHIgJiYKLQkJbG9jIDw9IFJlY2VudEZsdXNoUHRyKQotCQlyZXR1cm4gUmVjZW50Rmx1c2hQdHI7 CisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKFJlY2VudEZsdXNoUHRyKSAmJiBsb2MgPD0gUmVj ZW50Rmx1c2hQdHIpCisJeworCQlGaWx0ZXJTdGFuZGJ5U2xvdHMoUmVjZW50Rmx1c2hQdHIsICZz dGFuZGJ5X3Nsb3RzKTsKKworCQkvKgorCQkgKiBGYXN0IHBhdGggdG8gYXZvaWQgYWNxdWlyaW5n IHRoZSBzcGlubG9jayBpbiBjYXNlIHdlIGFscmVhZHkga25vdworCQkgKiB3ZSBoYXZlIGVub3Vn aCBXQUwgYXZhaWxhYmxlIGFuZCBhbGwgdGhlIHN0YW5kYnkgc2VydmVycyBoYXZlCisJCSAqIGNv bmZpcm1lZCByZWNlaXB0IG9mIFdBTCB1cCB0byBSZWNlbnRGbHVzaFB0ci4gVGhpcyBpcyBwYXJ0 aWN1bGFybHkKKwkJICogaW50ZXJlc3RpbmcgaWYgd2UncmUgZmFyIGJlaGluZC4KKwkJICovCisJ CWlmIChzdGFuZGJ5X3Nsb3RzID09IE5JTCkKKwkJCXJldHVybiBSZWNlbnRGbHVzaFB0cjsKKwl9 CiAKIAkvKiBHZXQgYSBtb3JlIHJlY2VudCBmbHVzaCBwb2ludGVyLiAqLwogCWlmICghUmVjb3Zl cnlJblByb2dyZXNzKCkpCkBAIC0xNzY5LDcgKzE4MjAsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhM b2dSZWNQdHIgbG9jKQogCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJewogCQkJQ29uZmln UmVsb2FkUGVuZGluZyA9IGZhbHNlOwotCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 CisJCQlSZXJlYWRDb25maWdBbmRSZUluaXRTbG90TGlzdCgmc3RhbmRieV9zbG90cyk7CiAJCQlT eW5jUmVwSW5pdENvbmZpZygpOwogCQl9CiAKQEAgLTE3ODQsOCArMTgzNSwxOCBAQCBXYWxTbmRX YWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQlpZiAoZ290X1NUT1BQSU5HKQogCQkJWExvZ0Jh Y2tncm91bmRGbHVzaCgpOwogCisJCS8qCisJCSAqIFVwZGF0ZSB0aGUgc3RhbmRieSBzbG90cyB0 aGF0IGhhdmUgbm90IHlldCBjYXVnaHQgdXAgdG8gdGhlIGZsdXNoZWQKKwkJICogcG9zaXRpb24u IEl0IGlzIGdvb2QgdG8gd2FpdCB1cCB0byBSZWNlbnRGbHVzaFB0ciBhbmQgdGhlbiBsZXQgaXQK KwkJICogc2VuZCB0aGUgY2hhbmdlcyB0byBsb2dpY2FsIHN1YnNjcmliZXJzIG9uZSBieSBvbmUg d2hpY2ggYXJlCisJCSAqIGFscmVhZHkgY292ZXJlZCBpbiBSZWNlbnRGbHVzaFB0ciB3aXRob3V0 IG5lZWRpbmcgdG8gd2FpdCBvbiBldmVyeQorCQkgKiBjaGFuZ2UgZm9yIHN0YW5kYnkgY29uZmly bWF0aW9uLgorCQkgKi8KKwkJaWYgKHdhaXRfZm9yX3N0YW5kYnkpCisJCQlGaWx0ZXJTdGFuZGJ5 U2xvdHMoUmVjZW50Rmx1c2hQdHIsICZzdGFuZGJ5X3Nsb3RzKTsKKwogCQkvKiBVcGRhdGUgb3Vy IGlkZWEgb2YgdGhlIGN1cnJlbnRseSBmbHVzaGVkIHBvc2l0aW9uLiAqLwotCQlpZiAoIVJlY292 ZXJ5SW5Qcm9ncmVzcygpKQorCQllbHNlIGlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJCQlS ZWNlbnRGbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwogCQllbHNlCiAJCQlSZWNlbnRG bHVzaFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CkBAIC0xODEzLDkgKzE4NzQsMTgg QEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJCSF3YWl0aW5nX2Zvcl9waW5n X3Jlc3BvbnNlKQogCQkJV2FsU25kS2VlcGFsaXZlKGZhbHNlLCBJbnZhbGlkWExvZ1JlY1B0cik7 CiAKLQkJLyogY2hlY2sgd2hldGhlciB3ZSdyZSBkb25lICovCi0JCWlmIChsb2MgPD0gUmVjZW50 Rmx1c2hQdHIpCisJCWlmIChsb2MgPiBSZWNlbnRGbHVzaFB0cikKKwkJCXdhaXRfZXZlbnQgPSBX QUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJVF9GT1JfV0FMOworCQllbHNlIGlmIChzdGFuZGJ5X3Ns b3RzKQorCQl7CisJCQl3YWl0X2V2ZW50ID0gV0FJVF9FVkVOVF9XQUlUX0ZPUl9TVEFOREJZX0NP TkZJUk1BVElPTjsKKwkJCXdhaXRfZm9yX3N0YW5kYnkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJ eworCQkJLyogQWxyZWFkeSBjYXVnaHQgdXAgYW5kIGRvZXNuJ3QgbmVlZCB0byB3YWl0IGZvciBz dGFuZGJ5X3Nsb3RzLiAqLwogCQkJYnJlYWs7CisJCX0KIAogCQkvKiBXYWl0aW5nIGZvciBuZXcg V0FMLiBTaW5jZSB3ZSBuZWVkIHRvIHdhaXQsIHdlJ3JlIG5vdyBjYXVnaHQgdXAuICovCiAJCVdh bFNuZENhdWdodFVwID0gdHJ1ZTsKQEAgLTE4NTUsOSArMTkyNSwxMSBAQCBXYWxTbmRXYWl0Rm9y V2FsKFhMb2dSZWNQdHIgbG9jKQogCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5nKCkpCiAJCQl3YWtl RXZlbnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJV2FsU25kV2FpdCh3YWtlRXZlbnRz LCBzbGVlcHRpbWUsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX0ZPUl9XQUwpOworCQlXYWxT bmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgd2FpdF9ldmVudCk7CiAJfQogCisJbGlzdF9m cmVlKHN0YW5kYnlfc2xvdHMpOworCiAJLyogcmVhY3RpdmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29w IGtub3dzIHRvIGNvbnRpbnVlICovCiAJU2V0TGF0Y2goTXlMYXRjaCk7CiAJcmV0dXJuIFJlY2Vu dEZsdXNoUHRyOwpAQCAtMjI2NSw2ICsyMzM3LDcgQEAgUGh5c2ljYWxDb25maXJtUmVjZWl2ZWRM b2NhdGlvbihYTG9nUmVjUHRyIGxzbikKIAl7CiAJCVJlcGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSgp OwogCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CisJCVBoeXNpY2FsV2Fr ZXVwTG9naWNhbFdhbFNuZCgpOwogCX0KIAogCS8qCkBAIC0zNTM4LDYgKzM2MTEsNyBAQCBXYWxT bmRTaG1lbUluaXQodm9pZCkKIAogCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+ d2FsX2ZsdXNoX2N2KTsKIAkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9y ZXBsYXlfY3YpOworCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX2NvbmZp cm1fcmN2X2N2KTsKIAl9CiB9CiAKQEAgLTM2MDcsOCArMzY4MSwxNCBAQCBXYWxTbmRXYWl0KHVp bnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50KQogCSAq CiAJICogQW5kLCB3ZSB1c2Ugc2VwYXJhdGUgc2hhcmVkIG1lbW9yeSBDVnMgZm9yIHBoeXNpY2Fs IGFuZCBsb2dpY2FsCiAJICogd2Fsc2VuZGVycyBmb3Igc2VsZWN0aXZlIHdha2UgdXBzLCBzZWUg V2FsU25kV2FrZXVwKCkgZm9yIG1vcmUgZGV0YWlscy4KKwkgKgorCSAqIElmIHRoZSB3YWl0IGV2 ZW50IGlzIFdBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFUSU9OLCB3YWl0IG9uIGFub3RoZXIgQ1YK KwkgKiB1bnRpbCBhd2FrZW5lZCBieSBwaHlzaWNhbCB3YWxzZW5kZXJzIGFmdGVyIHRoZSB3YWxy ZWNlaXZlciBjb25maXJtcworCSAqIHRoZSByZWNlaXB0IG9mIHRoZSBMU04uCiAJICovCi0JaWYg KE15V2FsU25kLT5raW5kID09IFJFUExJQ0FUSU9OX0tJTkRfUEhZU0lDQUwpCisJaWYgKHdhaXRf ZXZlbnQgPT0gV0FJVF9FVkVOVF9XQUlUX0ZPUl9TVEFOREJZX0NPTkZJUk1BVElPTikKKwkJQ29u ZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3Zf Y3YpOworCWVsc2UgaWYgKE15V2FsU25kLT5raW5kID09IFJFUExJQ0FUSU9OX0tJTkRfUEhZU0lD QUwpCiAJCUNvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJldhbFNuZEN0bC0+d2FsX2Zs dXNoX2N2KTsKIAllbHNlIGlmIChNeVdhbFNuZC0+a2luZCA9PSBSRVBMSUNBVElPTl9LSU5EX0xP R0lDQUwpCiAJCUNvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJldhbFNuZEN0bC0+d2Fs X3JlcGxheV9jdik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50X25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRf bmFtZXMudHh0CmluZGV4IGI1MmFmZDRlYWMuLjJmOTk2NDk1ODEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC03OCw2ICs3OCw3IEBA IEdTU19PUEVOX1NFUlZFUgkiV2FpdGluZyB0byByZWFkIGRhdGEgZnJvbSB0aGUgY2xpZW50IHdo aWxlIGVzdGFibGlzaGluZyBhIEdTU0FQCiBMSUJQUVdBTFJFQ0VJVkVSX0NPTk5FQ1QJIldhaXRp bmcgaW4gV0FMIHJlY2VpdmVyIHRvIGVzdGFibGlzaCBjb25uZWN0aW9uIHRvIHJlbW90ZSBzZXJ2 ZXIuIgogTElCUFFXQUxSRUNFSVZFUl9SRUNFSVZFCSJXYWl0aW5nIGluIFdBTCByZWNlaXZlciB0 byByZWNlaXZlIGRhdGEgZnJvbSByZW1vdGUgc2VydmVyLiIKIFNTTF9PUEVOX1NFUlZFUgkiV2Fp dGluZyBmb3IgU1NMIHdoaWxlIGF0dGVtcHRpbmcgY29ubmVjdGlvbi4iCitXQUlUX0ZPUl9TVEFO REJZX0NPTkZJUk1BVElPTgkiV2FpdGluZyBmb3IgdGhlIFdBTCB0byBiZSByZWNlaXZlZCBieSBw aHlzaWNhbCBzdGFuZGJ5LiIKIFdBTF9TRU5ERVJfV0FJVF9GT1JfV0FMCSJXYWl0aW5nIGZvciBX QUwgdG8gYmUgZmx1c2hlZCBpbiBXQUwgc2VuZGVyIHByb2Nlc3MuIgogV0FMX1NFTkRFUl9XUklU RV9EQVRBCSJXYWl0aW5nIGZvciBhbnkgYWN0aXZpdHkgd2hlbiBwcm9jZXNzaW5nIHJlcGxpZXMg ZnJvbSBXQUwgcmVjZWl2ZXIgaW4gV0FMIHNlbmRlciBwcm9jZXNzLiIKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwppbmRleCAzN2JlMDY2OWJiLi5kM2JiZGJlOTRlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNDYzOSw2ICs0NjM5LDIwIEBAIHN0cnVjdCBjb25m aWdfc3RyaW5nIENvbmZpZ3VyZU5hbWVzU3RyaW5nW10gPQogCQljaGVja19kZWJ1Z19pb19kaXJl Y3QsIGFzc2lnbl9kZWJ1Z19pb19kaXJlY3QsIE5VTEwKIAl9LAogCisJeworCQl7InN0YW5kYnlf c2xvdF9uYW1lcyIsIFBHQ19TSUdIVVAsIFJFUExJQ0FUSU9OX1BSSU1BUlksCisJCQlnZXR0ZXh0 X25vb3AoIkxpc3RzIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90ICIK KwkJCQkJCSAibmFtZXMgdGhhdCBsb2dpY2FsIFdBTCBzZW5kZXIgcHJvY2Vzc2VzIHdpbGwgd2Fp dCBmb3IuIiksCisJCQlnZXR0ZXh0X25vb3AoIkRlY29kZWQgY2hhbmdlcyBhcmUgc2VudCBvdXQg dG8gcGx1Z2lucyBieSBsb2dpY2FsICIKKwkJCQkJCSAiV0FMIHNlbmRlciBwcm9jZXNzZXMgb25s eSBhZnRlciBzcGVjaWZpZWQgIgorCQkJCQkJICJyZXBsaWNhdGlvbiBzbG90cyBjb25maXJtIHJl Y2VpdmluZyBXQUwuIiksCisJCQlHVUNfTElTVF9JTlBVVCB8IEdVQ19MSVNUX1FVT1RFCisJCX0s CisJCSZzdGFuZGJ5X3Nsb3RfbmFtZXMsCisJCSIiLAorCQljaGVja19zdGFuZGJ5X3Nsb3RfbmFt ZXMsIGFzc2lnbl9zdGFuZGJ5X3Nsb3RfbmFtZXMsIE5VTEwKKwl9LAorCiAJLyogRW5kLW9mLWxp c3QgbWFya2VyICovCiAJewogCQl7TlVMTCwgMCwgMCwgTlVMTCwgTlVMTH0sIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQppbmRleCBjOTdmOWEyNWYwLi5jYWRmZTEwOTU4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zMzQsNiArMzM0LDggQEAK IAkJCQkjIG1ldGhvZCB0byBjaG9vc2Ugc3luYyBzdGFuZGJ5cywgbnVtYmVyIG9mIHN5bmMgc3Rh bmRieXMsCiAJCQkJIyBhbmQgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYXBwbGljYXRpb25fbmFt ZQogCQkJCSMgZnJvbSBzdGFuZGJ5KHMpOyAnKicgPSBhbGwKKyNzdGFuZGJ5X3Nsb3RfbmFtZXMg PSAnJyAjIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90IG5hbWVzIHRo YXQKKwkJCQkjIGxvZ2ljYWwgd2Fsc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yCiAKICMg LSBTdGFuZGJ5IFNlcnZlcnMgLQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggZTcwNmNhODM0 Yy4uN2I3NTRhMWY0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMjI5LDYgKzIyOSw3IEBA IGV4dGVybiBQR0RMTElNUE9SVCBSZXBsaWNhdGlvblNsb3QgKk15UmVwbGljYXRpb25TbG90Owog CiAvKiBHVUNzICovCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9yZXBsaWNhdGlvbl9zbG90 czsKK2V4dGVybiBQR0RMTElNUE9SVCBjaGFyICpzdGFuZGJ5X3Nsb3RfbmFtZXM7CiAKIC8qIHNo bWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIFNpemUgUmVwbGljYXRpb25T bG90c1NobWVtU2l6ZSh2b2lkKTsKQEAgLTI3Nyw0ICsyNzgsMTAgQEAgZXh0ZXJuIHZvaWQgQ2hl Y2tTbG90UGVybWlzc2lvbnModm9pZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90SW52YWxpZGF0 aW9uQ2F1c2UKIAkJCUdldFNsb3RJbnZhbGlkYXRpb25DYXVzZShjaGFyICpjb25mbGljdF9yZWFz b24pOwogCitleHRlcm4gTGlzdCAqR2V0U3RhbmRieVNsb3RMaXN0KGJvb2wgY29weSk7CitleHRl cm4gdm9pZCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRfZm9yX2xz bik7CitleHRlcm4gdm9pZCBGaWx0ZXJTdGFuZGJ5U2xvdHMoWExvZ1JlY1B0ciB3YWl0X2Zvcl9s c24sCisJCQkJCQkJICAgTGlzdCAqKnN0YW5kYnlfc2xvdHMpOworZXh0ZXJuIHZvaWQgUmVyZWFk Q29uZmlnQW5kUmVJbml0U2xvdExpc3QoTGlzdCAqKnN0YW5kYnlfc2xvdHMpOworCiAjZW5kaWYJ CQkJCQkJLyogU0xPVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4IDBj Mzk5NmU5MjYuLmYyZDgyOTdmMDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCkBA IC0zOSw2ICszOSw3IEBAIGV4dGVybiB2b2lkIEluaXRXYWxTZW5kZXIodm9pZCk7CiBleHRlcm4g Ym9vbCBleGVjX3JlcGxpY2F0aW9uX2NvbW1hbmQoY29uc3QgY2hhciAqY21kX3N0cmluZyk7CiBl eHRlcm4gdm9pZCBXYWxTbmRFcnJvckNsZWFudXAodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRS ZXNvdXJjZUNsZWFudXAoYm9vbCBpc0NvbW1pdCk7CitleHRlcm4gdm9pZCBQaHlzaWNhbFdha2V1 cExvZ2ljYWxXYWxTbmQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciBHZXRTdGFuZGJ5Rmx1c2hS ZWNQdHIoVGltZUxpbmVJRCAqdGxpKTsKIGV4dGVybiB2b2lkIFdhbFNuZFNpZ25hbHModm9pZCk7 CiBleHRlcm4gU2l6ZSBXYWxTbmRTaG1lbVNpemUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAppbmRleCAzMTEzZTllYTQ3Li4wZjk2MmIwYzcyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgKQEAgLTExMyw2 ICsxMTMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlDb25kaXRpb25WYXJpYWJsZSB3YWxfZmx1c2hf Y3Y7CiAJQ29uZGl0aW9uVmFyaWFibGUgd2FsX3JlcGxheV9jdjsKIAorCS8qCisJICogVXNlZCBi eSBwaHlzaWNhbCB3YWxzZW5kZXJzIGhvbGRpbmcgc2xvdHMgc3BlY2lmaWVkIGluCisJICogc3Rh bmRieV9zbG90X25hbWVzIHRvIHdha2UgdXAgbG9naWNhbCB3YWxzZW5kZXJzIGhvbGRpbmcKKwkg KiBmYWlsb3Zlci1lbmFibGVkIHNsb3RzIHdoZW4gYSB3YWxyZWNlaXZlciBjb25maXJtcyB0aGUg cmVjZWlwdCBvZiBMU04uCisJICovCisJQ29uZGl0aW9uVmFyaWFibGUgd2FsX2NvbmZpcm1fcmN2 X2N2OworCiAJV2FsU25kCQl3YWxzbmRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFdhbFNu ZEN0bERhdGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKaW5kZXggMzM5YzQ5MDMwMC4uZGNmOWEwNDBk MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKQEAgLTE2Myw1ICsxNjMsOCBAQCBleHRlcm4gYm9vbCBj aGVja193YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJh LAogZXh0ZXJuIHZvaWQgYXNzaWduX3dhbF9jb25zaXN0ZW5jeV9jaGVja2luZyhjb25zdCBjaGFy ICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNrX3dhbF9zZWdtZW50X3Np emUoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4g dm9pZCBhc3NpZ25fd2FsX3N5bmNfbWV0aG9kKGludCBuZXdfd2FsX3N5bmNfbWV0aG9kLCB2b2lk ICpleHRyYSk7CitleHRlcm4gYm9vbCBjaGVja19zdGFuZGJ5X3Nsb3RfbmFtZXMoY2hhciAqKm5l d3ZhbCwgdm9pZCAqKmV4dHJhLAorCQkJCQkJCQkJIEd1Y1NvdXJjZSBzb3VyY2UpOworZXh0ZXJu IHZvaWQgYXNzaWduX3N0YW5kYnlfc2xvdF9uYW1lcyhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQg KmV4dHJhKTsKIAogI2VuZGlmCQkJCQkJCS8qIEdVQ19IT09LU19IICovCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWNvdmVyeS90LzAwNl9sb2dpY2FsX2RlY29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMDZfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCA1YzdiNGNhNWUzLi44NWYwMTk3 NzRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwNl9sb2dpY2FsX2RlY29kaW5n LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA2X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAg LTE3Miw5ICsxNzIsMTAgQEAgaXMoJG5vZGVfcHJpbWFyeS0+c2xvdCgnb3RoZXJkYl9zbG90Jykt Pnsnc2xvdF9uYW1lJ30sCiAJdW5kZWYsICdsb2dpY2FsIHNsb3Qgd2FzIGFjdHVhbGx5IGRyb3Bw ZWQgd2l0aCBEQicpOwogCiAjIFRlc3QgbG9naWNhbCBzbG90IGFkdmFuY2luZyBhbmQgaXRzIGR1 cmFiaWxpdHkuCisjIFBhc3MgZmFpbG92ZXI9dHJ1ZSAobGFzdC1hcmcpLCBpdCBzaG91bGQgbm90 IGhhdmUgYW55IGltcGFjdCBvbiBhZHZhbmNpbmcuCiBteSAkbG9naWNhbF9zbG90ID0gJ2xvZ2lj YWxfc2xvdCc7CiAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRsb2dpY2FsX3Nsb3QnLCAndGVz dF9kZWNvZGluZycsIGZhbHNlKTsiCisJIlNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNh dGlvbl9zbG90KCckbG9naWNhbF9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwgZmFsc2Us IHRydWUpOyIKICk7CiAkbm9kZV9wcmltYXJ5LT5wc3FsKAogCSdwb3N0Z3JlcycsICIKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3lu Yy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3lu Yy5wbAppbmRleCAwNzE0OGZjZjg4Li40MjMyMTRiMTg3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCkBAIC0xMTMs MTkgKzExMywzMCBAQCBvayggJHN0ZGVyciA9fgogCSJjYW5ub3Qgc3luYyBzbG90cyBvbiBhIG5v bi1zdGFuZGJ5IHNlcnZlciIpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMgb24gdGhlIHN0 YW5kYnkKLSMgQ29uZmlndXJlIHN0YW5kYnkxIHRvIHJlcGxpY2F0ZSBhbmQgc3luY2hyb25pemUg bG9naWNhbCBzbG90cyBjb25maWd1cmVkCi0jIGZvciBmYWlsb3ZlciBvbiB0aGUgcHJpbWFyeQor IyBUZXN0IHByaW1hcnkgZGlzYWxsb3dpbmcgc3BlY2lmaWVkIGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdHMgZ2V0dGluZyBhaGVhZCBvZgorIyBzcGVjaWZpZWQgcGh5c2ljYWwgcmVwbGljYXRpb24g c2xvdHMuIEl0IHVzZXMgdGhlIGZvbGxvd2luZyBzZXQgdXA6CiAjCi0jICAgICAgICAgICAgICBm YWlsb3ZlciBzbG90IGxzdWIxX3Nsb3QgLT58IC0tLS0+IHN1YnNjcmliZXIxIChjb25uZWN0ZWQg dmlhIGxvZ2ljYWwgcmVwbGljYXRpb24pCi0jICAgICAgICAgICAgICBmYWlsb3ZlciBzbG90IGxz dWIyX3Nsb3QgICB8ICAgICAgIGluYWN0aXZlCi0jIHByaW1hcnkgLS0tPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Ci0jICAgICAgICAgICAgICBwaHlzaWNhbCBzbG90IHNiMV9zbG90IC0t LT58IC0tLS0+IHN0YW5kYnkxIChjb25uZWN0ZWQgdmlhIHN0cmVhbWluZyByZXBsaWNhdGlvbikK LSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgIGxzdWIxX3Nsb3QsIGxzdWIyX3Nsb3QgKHN5bmNlZF9zbG90KQorIwkJCQl8IC0tLS0+IHN0 YW5kYnkxIChwcmltYXJ5X3Nsb3RfbmFtZSA9IHNiMV9zbG90KQorIwkJCQl8IC0tLS0+IHN0YW5k YnkyIChwcmltYXJ5X3Nsb3RfbmFtZSA9IHNiMl9zbG90KQorIyBwcmltYXJ5IC0tLS0tCXwKKyMJ CQkJfCAtLS0tPiBzdWJzY3JpYmVyMSAoZmFpbG92ZXIgPSB0cnVlKQorIwkJCQl8IC0tLS0+IHN1 YnNjcmliZXIyIChmYWlsb3ZlciA9IGZhbHNlKQorIworIyBzdGFuZGJ5X3Nsb3RfbmFtZXMgPSAn c2IxX3Nsb3QnCisjCisjIFNldCB1cCBpcyBjb25maWd1cmVkIGluIHN1Y2ggYSB3YXkgdGhhdCB0 aGUgbG9naWNhbCBzbG90IG9mIHN1YnNjcmliZXIxIGlzCisjIGVuYWJsZWQgZmFpbG92ZXIsIHRo dXMgaXQgd2lsbCB3YWl0IGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvZgorIyBzdGFuZGJ5MShzYjFf c2xvdCkgdG8gY2F0Y2ggdXAgYmVmb3JlIHNlbmRpbmcgZGVjb2RlZCBjaGFuZ2VzIHRvIHN1YnNj cmliZXIxLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKIAogbXkgJHByaW1hcnkgPSAkcHVibGlzaGVyOwogbXkgJGJhY2t1cF9uYW1lID0gJ2JhY2t1 cCc7CisKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfY3JlYXRlX3Bo eXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9zbG90Jyk7fSk7CiskcHJpbWFyeS0+cHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90 KCdzYjJfc2xvdCcpO30pOworCiAkcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CiAKICMg Q3JlYXRlIGEgc3RhbmRieQpAQCAtMTM1LDEzICsxNDYsMjA2IEBAICRzdGFuZGJ5MS0+aW5pdF9m cm9tX2JhY2t1cCgKIAloYXNfc3RyZWFtaW5nID0+IDEsCiAJaGFzX3Jlc3RvcmluZyA9PiAxKTsK IAorJHN0YW5kYnkxLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitwcmlt YXJ5X3Nsb3RfbmFtZSA9ICdzYjFfc2xvdCcKKykpOworJHN0YW5kYnkxLT5zdGFydDsKKyRwcmlt YXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworCisjIFNwZWVkIHVwIHRo ZSBzbG90IGNyZWF0aW9uCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKSIpOworCisjIENyZWF0ZSBhIHNsb3QgdG8gc2F2ZSB0 aGUgb2xkIHhtaW4gaW5mbywgd2hpY2ggc3BlZWRzIHVwIHRoZSBwZXJzaXN0ZW5jZSBvZgorIyB0 aGUgbmV3bHkgY3JlYXRlZCBzbG90IGJ5IG9idGFpbmluZyBhbiBleGlzdGluZyBvbGQgeG1pbiB2 YWx1ZS4KKyRzdGFuZGJ5MS0+cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdCgnc2F2ZV94bWluJywgJ3Rlc3RfZGVjb2RpbmcnKTsiKTsK KworIyBDcmVhdGUgYW5vdGhlciBzdGFuZGJ5CitteSAkc3RhbmRieTIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnkyJyk7Ciskc3RhbmRieTItPmluaXRfZnJvbV9iYWNr dXAoCisJJHByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFz X3Jlc3RvcmluZyA9PiAxKTsKKyRzdGFuZGJ5Mi0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwu Y29uZicsIHFxKAorcHJpbWFyeV9zbG90X25hbWUgPSAnc2IyX3Nsb3QnCispKTsKKyRzdGFuZGJ5 Mi0+c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsK KworIyBDb25maWd1cmUgcHJpbWFyeSB0byBkaXNhbGxvdyBhbnkgbG9naWNhbCBzbG90cyB0aGF0 IGVuYWJsZWQgZmFpbG92ZXIgZnJvbQorIyBnZXR0aW5nIGFoZWFkIG9mIHNwZWNpZmllZCBwaHlz aWNhbCByZXBsaWNhdGlvbiBzbG90IChzYjFfc2xvdCkuCiskcHJpbWFyeS0+YXBwZW5kX2NvbmYo CisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAorc3RhbmRieV9zbG90X25hbWVzID0gJ3NiMV9zbG90 JworKSk7CiskcHJpbWFyeS0+cmVsb2FkOworCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJDUkVBVEUgVEFCTEUgdGFiX2ludCAoYSBpbnQgUFJJTUFSWSBLRVkpOyIpOworCisjIENy ZWF0ZSBhIHRhYmxlIGFuZCByZWZyZXNoIHRoZSBwdWJsaWNhdGlvbgorJHN1YnNjcmliZXIxLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQ1JFQVRFIFRBQkxFIHRhYl9pbnQgKGEgaW50 IFBSSU1BUlkgS0VZKTsKKwlBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1YjEgUkVGUkVT SCBQVUJMSUNBVElPTiBXSVRIIChjb3B5X2RhdGEgPSBmYWxzZSk7CitdKTsKKworIyBDcmVhdGUg YW5vdGhlciBzdWJzY3JpYmVyIG5vZGUgd2l0aG91dCBlbmFibGluZyBmYWlsb3Zlciwgd2FpdCBm b3Igc3luYyB0bworIyBjb21wbGV0ZQorbXkgJHN1YnNjcmliZXIyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyMicpOworJHN1YnNjcmliZXIyLT5pbml0OworJHN1 YnNjcmliZXIyLT5zdGFydDsKKyRzdWJzY3JpYmVyMi0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxWworCUNSRUFURSBUQUJMRSB0YWJfaW50IChhIGludCBQUklNQVJZIEtFWSk7CisJQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHInIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfbXlwdWIgV0lUSCAoc2xvdF9uYW1lID0gbHN1YjJfc2xv dCwgY29weV9kYXRhID0gZmFsc2UpOworXSk7CisKKyMgU3RvcCB0aGUgc3RhbmRieSBhc3NvY2lh dGVkIHdpdGggdGhlIHNwZWNpZmllZCBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IHNvCisjIHRo YXQgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCB3b24ndCByZWNlaXZlIGNoYW5nZXMgdW50 aWwgdGhlIHN0YW5kYnkKKyMgY29tZXMgdXAuCiskc3RhbmRieTEtPnN0b3A7CisKKyMgQ3JlYXRl IHNvbWUgZGF0YSBvbiB0aGUgcHJpbWFyeQorbXkgJHByaW1hcnlfcm93X2NvdW50ID0gMTA7Cisk cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9pbnQgU0VM RUNUIGdlbmVyYXRlX3NlcmllcygxLCAkcHJpbWFyeV9yb3dfY291bnQpOyIpOworCisjIFdhaXQg Zm9yIHRoZSBzdGFuZGJ5IHRoYXQncyB1cCBhbmQgcnVubmluZyBnZXRzIHRoZSBkYXRhIGZyb20g cHJpbWFyeQorJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7Cisk cmVzdWx0ID0gJHN0YW5kYnkyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50 KCopID0gJHByaW1hcnlfcm93X2NvdW50IEZST00gdGFiX2ludDsiKTsKK2lzKCRyZXN1bHQsICd0 JywgInN0YW5kYnkyIGdldHMgZGF0YSBmcm9tIHByaW1hcnkiKTsKKworIyBXYWl0IGZvciB0aGUg c3Vic2NyaXB0aW9uIHRoYXQncyB1cCBhbmQgcnVubmluZyBhbmQgaXMgbm90IGVuYWJsZWQgZm9y IGZhaWxvdmVyLgorIyBJdCBnZXRzIHRoZSBkYXRhIGZyb20gcHJpbWFyeSB3aXRob3V0IHdhaXRp bmcgZm9yIGFueSBzdGFuZGJ5cy4KKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jl c3NfbXlzdWIyJyk7CiskcmVzdWx0ID0gJHN1YnNjcmliZXIyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGNvdW50KCopID0gJHByaW1hcnlfcm93X2NvdW50IEZST00gdGFiX2ludDsi KTsKK2lzKCRyZXN1bHQsICd0JywgInN1YnNjcmliZXIyIGdldHMgZGF0YSBmcm9tIHByaW1hcnki KTsKKworIyBUaGUgc3Vic2NyaXB0aW9uIHRoYXQncyB1cCBhbmQgcnVubmluZyBhbmQgaXMgZW5h YmxlZCBmb3IgZmFpbG92ZXIKKyMgZG9lc24ndCBnZXQgdGhlIGRhdGEgZnJvbSBwcmltYXJ5IGFu ZCBrZWVwcyB3YWl0aW5nIGZvciB0aGUKKyMgc3RhbmRieSBzcGVjaWZpZWQgaW4gc3RhbmRieV9z bG90X25hbWVzLgorJHJlc3VsdCA9CisgICRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gdGFiX2ludDsiKTsKK2lzKCRyZXN1bHQsICd0 JywKKwkic3Vic2NyaWJlcjEgZG9lc24ndCBnZXQgZGF0YSBmcm9tIHByaW1hcnkgdW50aWwgc3Rh bmRieTEgYWNrbm93bGVkZ2VzIGNoYW5nZXMiCispOworCisjIFN0YXJ0IHRoZSBzdGFuZGJ5IHNw ZWNpZmllZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMgYW5kIHdhaXQgZm9yIGl0IHRvIGNhdGNoCisj IHVwIHdpdGggdGhlIHByaW1hcnkuCiskc3RhbmRieTEtPnN0YXJ0OworJHByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiskcmVzdWx0ID0gJHN0YW5kYnkxLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gJHByaW1hcnlfcm93X2NvdW50 IEZST00gdGFiX2ludDsiKTsKK2lzKCRyZXN1bHQsICd0JywgInN0YW5kYnkxIGdldHMgZGF0YSBm cm9tIHByaW1hcnkiKTsKKworIyBOb3cgdGhhdCB0aGUgc3RhbmRieSBzcGVjaWZpZWQgaW4gc3Rh bmRieV9zbG90X25hbWVzIGlzIHVwIGFuZCBydW5uaW5nLAorIyBwcmltYXJ5IG11c3Qgc2VuZCB0 aGUgZGVjb2RlZCBjaGFuZ2VzIHRvIHN1YnNjcmlwdGlvbiBlbmFibGVkIGZvciBmYWlsb3Zlcgor IyBXaGlsZSB0aGUgc3RhbmRieSB3YXMgZG93biwgdGhpcyBzdWJzY3JpYmVyIGRpZG4ndCByZWNl aXZlIGFueSBkYXRhIGZyb20KKyMgcHJpbWFyeSBpLmUuIHRoZSBwcmltYXJ5IGRpZG4ndCBhbGxv dyBpdCB0byBnbyBhaGVhZCBvZiBzdGFuZGJ5LgorJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgncmVncmVzc19teXN1YjEnKTsKKyRyZXN1bHQgPSAkc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAkcHJpbWFyeV9yb3dfY291bnQgRlJPTSB0 YWJfaW50OyIpOworaXMoJHJlc3VsdCwgJ3QnLAorCSJzdWJzY3JpYmVyMSBnZXRzIGRhdGEgZnJv bSBwcmltYXJ5IGFmdGVyIHN0YW5kYnkxIGFja25vd2xlZGdlcyBjaGFuZ2VzIik7CisKKyMgU3Rv cCB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBwaHlzaWNhbCByZXBs aWNhdGlvbiBzbG90IHNvCisjIHRoYXQgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCB3b24n dCByZWNlaXZlIGNoYW5nZXMgdW50aWwgdGhlIHN0YW5kYnkKKyMgc2xvdCdzIHJlc3RhcnRfbHNu IGlzIGFkdmFuY2VkIG9yIHRoZSBzbG90IGlzIHJlbW92ZWQgZnJvbSB0aGUKKyMgc3RhbmRieV9z bG90X25hbWVzIGxpc3QuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5D QVRFIHRhYl9pbnQ7Iik7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX215 c3ViMScpOworJHN0YW5kYnkxLT5zdG9wOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBWZXJpZnkgdGhhdCB3aGVuIHVzaW5nIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcyB0byBjb25zdW1lIGNoYW5nZXMgZnJvbSBhCisjIGxvZ2ljYWwg c2xvdCB3aXRoIGZhaWxvdmVyIGVuYWJsZWQsIGl0IHdpbGwgYWxzbyB3YWl0IGZvciB0aGUgc2xv dHMgc3BlY2lmaWVkCisjIGluIHN0YW5kYnlfc2xvdF9uYW1lcyB0byBjYXRjaCB1cC4KKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQ3JlYXRl IGEgbG9naWNhbCAndGVzdF9kZWNvZGluZycgcmVwbGljYXRpb24gc2xvdCB3aXRoIGZhaWxvdmVy IGVuYWJsZWQKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdf Y3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90JywgJ3Rlc3RfZGVjb2Rp bmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpOyIKKyk7CisKK215ICRiYWNrX3EgPSAkcHJpbWFyeS0+ YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CitteSAkcGlk ID0gJGJhY2tfcS0+cXVlcnkoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisKKyMgVHJ5IGFu ZCBnZXQgY2hhbmdlcyBmcm9tIHRoZSBsb2dpY2FsIHNsb3Qgd2l0aCBmYWlsb3ZlciBlbmFibGVk LgorbXkgJG9mZnNldCA9IC1zICRwcmltYXJ5LT5sb2dmaWxlOworJGJhY2tfcS0+cXVlcnlfdW50 aWwocXIvLywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygndGVzdF9zbG90 JywgTlVMTCwgTlVMTCk7XG4iKTsKKworIyBXYWl0IHVudGlsIHRoZSBwcmltYXJ5IHNlcnZlciBs b2dzIGEgd2FybmluZyBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgd2FpdGluZworIyBmb3IgdGhlIHNi MV9zbG90IHRvIGNhdGNoIHVwLgorJHByaW1hcnktPndhaXRfZm9yX2xvZygKKwlxci9XQVJOSU5H OiAoIFtBLVowLTldKzopPyByZXBsaWNhdGlvbiBzbG90IFwic2IxX3Nsb3RcIiBzcGVjaWZpZWQg aW4gcGFyYW1ldGVyIFwic3RhbmRieV9zbG90X25hbWVzXCIgZG9lcyBub3QgaGF2ZSBhY3RpdmVf cGlkLywKKwkkb2Zmc2V0KTsKKworb2soJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX2NhbmNlbF9iYWNrZW5kKCRwaWQpIiksCisJImNhbmNlbGxpbmcgcGdfbG9naWNh bF9zbG90X2dldF9jaGFuZ2VzIGNvbW1hbmQiKTsKKworJGJhY2tfcS0+cXVpdDsKKworJHB1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9u X3Nsb3QoJ3Rlc3Rfc2xvdCcpOyIKKyk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9uIHdp bGwgd2FpdCBmb3IgdGhlIHVzZXItY3JlYXRlZCBpbmFjdGl2ZQorIyBwaHlzaWNhbCBzbG90IHRv IGNhdGNoIHVwIHVudGlsIHdlIHJlbW92ZSB0aGUgc2xvdCBmcm9tIHN0YW5kYnlfc2xvdF9uYW1l cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgQ3JlYXRlIHNvbWUgZGF0YSBvbiB0aGUgcHJpbWFyeQorJHByaW1hcnlfcm93X2NvdW50ID0g MTA7CiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9p bnQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAkcHJpbWFyeV9yb3dfY291bnQpOyIpOworCisk cmVzdWx0ID0KKyAgJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSA9IDAgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3VsdCwgJ3QnLAorCSJzdWJzY3Jp YmVyMSBkb2Vzbid0IGdldCBkYXRhIGFzIHRoZSBzYjFfc2xvdCBkb2Vzbid0IGNhdGNoIHVwIik7 CisKKyMgUmVtb3ZlIHRoZSBzdGFuZGJ5IGZyb20gdGhlIHN0YW5kYnlfc2xvdF9uYW1lcyBsaXN0 IGFuZCByZWxvYWQgdGhlCisjIGNvbmZpZ3VyYXRpb24uCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICdzdGFuZGJ5X3Nsb3RfbmFtZXMnLCAiJyciKTsKKyRwcmltYXJ5 LT5yZWxvYWQ7CisKKyMgU2luY2UgdGhlcmUgYXJlIG5vIHNsb3RzIGluIHN0YW5kYnlfc2xvdF9u YW1lcywgdGhlIHByaW1hcnkgc2VydmVyIHNob3VsZCBub3cKKyMgc2VuZCB0aGUgZGVjb2RlZCBj aGFuZ2VzIHRvIHRoZSBzdWJzY3JpcHRpb24uCiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdyZWdyZXNzX215c3ViMScpOworJHJlc3VsdCA9ICRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9ICRwcmltYXJ5X3Jvd19jb3VudCBGUk9NIHRh Yl9pbnQ7Iik7CitpcygkcmVzdWx0LCAndCcsCisJInN1YnNjcmliZXIxIGdldHMgZGF0YSBmcm9t IHByaW1hcnkgYWZ0ZXIgc3RhbmRieTEgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFuZGJ5X3Nsb3Rf bmFtZXMgbGlzdCIKKyk7CisKKyMgUHV0IHRoZSBzdGFuZGJ5IGJhY2sgb24gdGhlIHByaW1hcnlf c2xvdF9uYW1lIGZvciB0aGUgcmVzdCBvZiB0aGUgdGVzdHMKKyRwcmltYXJ5LT5hZGp1c3RfY29u ZigncG9zdGdyZXNxbC5jb25mJywgJ3N0YW5kYnlfc2xvdF9uYW1lcycsICdzYjFfc2xvdCcpOwor JHByaW1hcnktPnJlbG9hZDsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzIG9uIHRoZSBzdGFu ZGJ5CisjIENvbmZpZ3VyZSBzdGFuZGJ5MSB0byByZXBsaWNhdGUgYW5kIHN5bmNocm9uaXplIGxv Z2ljYWwgc2xvdHMgY29uZmlndXJlZAorIyBmb3IgZmFpbG92ZXIgb24gdGhlIHByaW1hcnkKKyMK KyMgICAgICAgICAgICAgIGZhaWxvdmVyIHNsb3QgbHN1YjFfc2xvdCAtPnwgLS0tLT4gc3Vic2Ny aWJlcjEgKGNvbm5lY3RlZCB2aWEgbG9naWNhbCByZXBsaWNhdGlvbikKKyMgICAgICAgICAgICAg IGZhaWxvdmVyIHNsb3QgbHN1YjNfc2xvdCAgIHwgICAgICAgaW5hY3RpdmUKKyMgcHJpbWFyeSAt LS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyMgICAgICAgICAgICAgIHBoeXNpY2Fs IHNsb3Qgc2IxX3Nsb3QgLS0tPnwgLS0tLT4gc3RhbmRieTEgKGNvbm5lY3RlZCB2aWEgc3RyZWFt aW5nIHJlcGxpY2F0aW9uKQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgbHN1YjFfc2xvdCwgbHN1YjNfc2xvdCAoc3luY2VkX3Nsb3Qp CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisj IENvbmZpZ3VyZSB0aGUgc3RhbmRieQogIyBJbmNyZWFzZSB0aGUgbG9nX21pbl9tZXNzYWdlcyBz ZXR0aW5nIHRvIERFQlVHMiBvbiBib3RoIHRoZSBzdGFuZGJ5IGFuZAogIyBwcmltYXJ5IHRvIGRl YnVnIHRlc3QgZmFpbHVyZXMsIGlmIGFueS4KIG15ICRjb25uc3RyXzEgPSAkcHJpbWFyeS0+Y29u bnN0cjsKICRzdGFuZGJ5MS0+YXBwZW5kX2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAog aG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgotcHJpbWFyeV9zbG90X25hbWUgPSAnc2IxX3Nsb3Qn CiBwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyXzEgZGJuYW1lPXBvc3RncmVzJwogbG9nX21p bl9tZXNzYWdlcyA9ICdkZWJ1ZzInCiApKTsKQEAgLTE1MCwyOSArMzU0LDEyIEBAICRwcmltYXJ5 LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSAnZGVi dWcyJyIpOwogJHByaW1hcnktPnJlbG9hZDsKIAogJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywK LQlxe1NFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdsc3ViMl9zbG90 JywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpO30KKwlxe1NFTEVDVCBwZ19j cmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdsc3ViM19zbG90JywgJ3Rlc3RfZGVjb2Rp bmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpO30KICk7CiAKLSRwcmltYXJ5LT5wc3FsKCdwb3N0Z3Jl cycsCi0JcXtTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9z bG90Jyk7fSk7Ci0KICMgU3RhcnQgdGhlIHN0YW5kYnkgc28gdGhhdCBzbG90IHN5bmNpbmcgY2Fu IGJlZ2luCiAkc3RhbmRieTEtPnN0YXJ0OwogCi0kcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgn cmVncmVzc19teXN1YjEnKTsKLQotIyBEbyBub3QgYWxsb3cgYW55IGZ1cnRoZXIgYWR2YW5jZW1l bnQgb2YgdGhlIHJlc3RhcnRfbHNuIGZvciB0aGUgbHN1YjFfc2xvdC4KLSRzdWJzY3JpYmVyMS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3Vi MSBESVNBQkxFIik7Ci0KLSMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21l IGluYWN0aXZlIG9uIHRoZSBwdWJsaXNoZXIKLSRwcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAot CSdwb3N0Z3JlcycsCi0JIlNFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGlj YXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3QnIEFORCBhY3RpdmUgPSAn ZiciLAotCTEpOwotCi0jIFdhaXQgZm9yIHRoZSBzdGFuZGJ5IHRvIGNhdGNoIHVwIHNvIHRoYXQg dGhlIHN0YW5kYnkgaXMgbm90IGxhZ2dpbmcgYmVoaW5kCi0jIHRoZSBzdWJzY3JpYmVyLgogJHBy aW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiAKICMgU3luY2hyb25p emUgdGhlIHByaW1hcnkgc2VydmVyIHNsb3RzIHRvIHRoZSBzdGFuZGJ5LgpAQCAtMTgyLDcgKzM2 OSw3IEBAICRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfc3luY19y ZXBsaWNhdGlvbl9zbG90cygpOyIpOwogIyBmbGFnZ2VkIGFzICdzeW5jZWQnCiBpcyggJHN0YW5k YnkxLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsCi0JCXF7U0VMRUNUIGNvdW50KCopID0gMiBG Uk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSBJTiAoJ2xzdWIxX3Nsb3Qn LCAnbHN1YjJfc2xvdCcpIEFORCBzeW5jZWQgQU5EIE5PVCB0ZW1wb3Jhcnk7fQorCQlxe1NFTEVD VCBjb3VudCgqKSA9IDIgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg SU4gKCdsc3ViMV9zbG90JywgJ2xzdWIzX3Nsb3QnKSBBTkQgc3luY2VkIEFORCBOT1QgdGVtcG9y YXJ5O30KIAkpLAogCSJ0IiwKIAknbG9naWNhbCBzbG90cyBoYXZlIHN5bmNlZCBhcyB0cnVlIG9u IHN0YW5kYnknKTsKQEAgLTE5MiwxMyArMzc5LDEzIEBAIGlzKCAkc3RhbmRieTEtPnNhZmVfcHNx bCgKICMgc2xvdCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIgaGFzIGJlZW4gZHJvcHBlZC4KICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSRwcmltYXJ5 LT5wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdsc3Vi Ml9zbG90Jyk7Iik7CiskcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgnbHN1YjNfc2xvdCcpOyIpOwogCiAkc3RhbmRieTEtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKTsiKTsKIAog aXMoICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLAotCQlxe1NFTEVDVCBjb3Vu dCgqKSA9IDAgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1 YjJfc2xvdCc7fQorCQlxe1NFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19yZXBsaWNhdGlvbl9z bG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjNfc2xvdCc7fQogCSksCiAJInQiLAogCSdzeW5j aHJvbml6ZWQgc2xvdCBoYXMgYmVlbiBkcm9wcGVkJyk7CkBAIC00MDgsMTkgKzU5NSwxMyBAQCAk c3RhbmRieTEtPndhaXRfZm9yX2xvZyhxci9MT0c6ICBzbG90IHN5bmMgd29ya2VyIHN0YXJ0ZWQv LAogIyBJbnNlcnQgZGF0YSBvbiB0aGUgcHJpbWFyeQogJHByaW1hcnktPnNhZmVfcHNxbCgKIAkn cG9zdGdyZXMnLCBxcVsKLQlDUkVBVEUgVEFCTEUgdGFiX2ludCAoYSBpbnQgUFJJTUFSWSBLRVkp OworCVRSVU5DQVRFIFRBQkxFIHRhYl9pbnQ7CiAJSU5TRVJUIElOVE8gdGFiX2ludCBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKTsKIF0pOwogCi0jIFN1YnNjcmliZSB0byB0aGUgbmV3IHRh YmxlIGRhdGEgYW5kIHdhaXQgZm9yIGl0IHRvIGFycml2ZQotJHN1YnNjcmliZXIxLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgcXFbCi0JQ1JFQVRFIFRBQkxFIHRhYl9pbnQgKGEgaW50IFBSSU1B UlkgS0VZKTsKLQlBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1YjEgRU5BQkxFOwotCUFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBSRUZSRVNIIFBVQkxJQ0FUSU9OOwotXSk7 Ci0KLSRzdWJzY3JpYmVyMS0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmM7CisjIEVuYWJsZSB0 aGUgc3Vic2NyaXB0aW9uIHRvIGxldCBpdCBjYXRjaCB1cCB0byB0aGUgbGF0ZXN0IHdhbCBwb3Np dGlvbgorJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX215c3ViMSBFTkFCTEUiKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVw KCdyZWdyZXNzX215c3ViMScpOwogCiAjIERvIG5vdCBhbGxvdyBhbnkgZnVydGhlciBhZHZhbmNl bWVudCBvZiB0aGUgcmVzdGFydF9sc24gYW5kCiAjIGNvbmZpcm1lZF9mbHVzaF9sc24gZm9yIHRo ZSBsc3ViMV9zbG90LgotLSAKMi4zNC4xCgo= --000000000000e8ffa10611cceff3 Content-Type: application/octet-stream; name="v92-0003-Document-the-steps-to-check-if-the-standby-is-re.patch" Content-Disposition: attachment; filename="v92-0003-Document-the-steps-to-check-if-the-standby-is-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lsu64wo12 RnJvbSBiYjM4ZWU0MTRmODQ3MDNjNGMwZGFjZjRhMmFkNDliOTE3NmUzOTEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTkgSmFuIDIwMjQgMTE6MDQ6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 MiAzLzNdIERvY3VtZW50IHRoZSBzdGVwcyB0byBjaGVjayBpZiB0aGUgc3RhbmRieSBpcyByZWFk eQogZm9yIGZhaWxvdmVyCgotLS0KIGRvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21s ICAgfCAgIDkgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgfCAxMzYg KysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaGlnaC1hdmFpbGFiaWxpdHkuc2dtbCBi L2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sCmluZGV4IDIzNmMwYWY2NWYuLjM2 MjE1YWE2OGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sCkBAIC0xNDg3LDYgKzE0 ODcsMTUgQEAgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcyA9ICdBTlkgMiAoczEsIHMyLCBzMykn CiAgICAgV3JpdHRlbiBhZG1pbmlzdHJhdGlvbiBwcm9jZWR1cmVzIGFyZSBhZHZpc2VkLgogICAg PC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBJZiB5b3UgaGF2ZSBvcHRlZCBmb3Igc3luY2hyb25p emF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgKHNlZQorICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWxk ZWNvZGluZy1yZXBsaWNhdGlvbi1zbG90cy1zeW5jaHJvbml6YXRpb24iLz4pLAorICAgIHRoZW4g YmVmb3JlIHN3aXRjaGluZyB0byB0aGUgc3RhbmRieSBzZXJ2ZXIsIGl0IGlzIHJlY29tbWVuZGVk IHRvIGNoZWNrCisgICAgaWYgdGhlIGxvZ2ljYWwgc2xvdHMgc3luY2hyb25pemVkIG9uIHRoZSBz dGFuZGJ5IHNlcnZlciBhcmUgcmVhZHkKKyAgICBmb3IgZmFpbG92ZXIuIFRoaXMgY2FuIGJlIGRv bmUgYnkgZm9sbG93aW5nIHRoZSBzdGVwcyBkZXNjcmliZWQgaW4KKyAgICA8eHJlZiBsaW5rZW5k PSJsb2dpY2FsLXJlcGxpY2F0aW9uLWZhaWxvdmVyIi8+LgorICAgPC9wYXJhPgorCiAgICA8cGFy YT4KICAgICBUbyB0cmlnZ2VyIGZhaWxvdmVyIG9mIGEgbG9nLXNoaXBwaW5nIHN0YW5kYnkgc2Vy dmVyLCBydW4KICAgICA8Y29tbWFuZD5wZ19jdGwgcHJvbW90ZTwvY29tbWFuZD4gb3IgY2FsbCA8 ZnVuY3Rpb24+cGdfcHJvbW90ZSgpPC9mdW5jdGlvbj4uCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAppbmRleCBlYzIxMzA2NjllLi5iZTU5ZDMwNmExIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTY4Nyw2ICs2ODcsMTQyIEBAIEFMVEVSIFNVQlNDUklQ VElPTgogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1mYWls b3ZlciI+CisgIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0aW9uIEZhaWxvdmVyPC90aXRsZT4KKwor ICA8cGFyYT4KKyAgIFdoZW4gdGhlIHB1Ymxpc2hlciBzZXJ2ZXIgaXMgdGhlIHByaW1hcnkgc2Vy dmVyIG9mIGEgc3RyZWFtaW5nIHJlcGxpY2F0aW9uLAorICAgdGhlIGxvZ2ljYWwgc2xvdHMgb24g dGhhdCBwcmltYXJ5IHNlcnZlciBjYW4gYmUgc3luY2hyb25pemVkIHRvIHRoZSBzdGFuZGJ5Cisg ICBzZXJ2ZXIgYnkgc3BlY2lmeWluZyA8bGl0ZXJhbD5mYWlsb3ZlciA9IHRydWU8L2xpdGVyYWw+ IHdoZW4gY3JlYXRpbmcKKyAgIHN1YnNjcmlwdGlvbnMgZm9yIHRob3NlIHB1YmxpY2F0aW9ucy4g RW5hYmxpbmcgZmFpbG92ZXIgZW5zdXJlcyBhIHNlYW1sZXNzCisgICB0cmFuc2l0aW9uIG9mIHRo b3NlIHN1YnNjcmlwdGlvbnMgYWZ0ZXIgdGhlIHN0YW5kYnkgaXMgcHJvbW90ZWQuIFRoZXkgY2Fu CisgICBjb250aW51ZSBzdWJzY3JpYmluZyB0byBwdWJsaWNhdGlvbnMgbm93IG9uIHRoZSBuZXcg cHJpbWFyeSBzZXJ2ZXIgd2l0aG91dAorICAgYW55IGRhdGEgbG9zcy4KKyAgPC9wYXJhPgorCisg IDxwYXJhPgorICAgQmVjYXVzZSB0aGUgc2xvdCBzeW5jaHJvbml6YXRpb24gbG9naWMgY29waWVz IGFzeW5jaHJvbm91c2x5LCBpdCBpcworICAgbmVjZXNzYXJ5IHRvIGNvbmZpcm0gdGhhdCByZXBs aWNhdGlvbiBzbG90cyBoYXZlIGJlZW4gc3luY2VkIHRvIHRoZSBzdGFuZGJ5CisgICBzZXJ2ZXIg YmVmb3JlIHRoZSBmYWlsb3ZlciBoYXBwZW5zLiBGdXJ0aGVybW9yZSwgdG8gZW5zdXJlIGEgc3Vj Y2Vzc2Z1bAorICAgZmFpbG92ZXIsIHRoZSBzdGFuZGJ5IHNlcnZlciBtdXN0IG5vdCBiZSBsYWdn aW5nIGJlaGluZCB0aGUgc3Vic2NyaWJlci4gSXQKKyAgIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0 byB1c2UKKyAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zdGFuZGJ5LXNsb3QtbmFtZXMiPjx2YXJuYW1l PnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT48L2xpbms+CisgICB0byBwcmV2ZW50IHRoZSBz dWJzY3JpYmVyIGZyb20gY29uc3VtaW5nIGNoYW5nZXMgZmFzdGVyIHRoYW4gdGhlIGhvdCBzdGFu ZGJ5LgorICAgVG8gY29uZmlybSB0aGF0IHRoZSBzdGFuZGJ5IHNlcnZlciBpcyBpbmRlZWQgcmVh ZHkgZm9yIGZhaWxvdmVyLCBmb2xsb3cKKyAgIHRoZXNlIDIgc3RlcHM6CisgIDwvcGFyYT4KKwor ICA8cHJvY2VkdXJlPgorICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVpcmVkIj4KKyAgICA8cGFy YT4KKyAgICAgQ29uZmlybSB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdHMgaGF2ZSBiZWVuIHN5bmNlZCB0bworICAgICB0aGUgc3RhbmRieSBzZXJ2ZXIuCisg ICAgPC9wYXJhPgorICAgIDxzdWJzdGVwcz4KKyAgICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVp cmVkIj4KKyAgICAgIDxwYXJhPgorICAgICAgIEZpcnN0bHksIG9uIHRoZSBzdWJzY3JpYmVyIG5v ZGUsIHVzZSB0aGUgZm9sbG93aW5nIFNRTCB0byBpZGVudGlmeQorICAgICAgIHdoaWNoIHNsb3Rz IHNob3VsZCBiZSBzeW5jZWQgdG8gdGhlIHN0YW5kYnkgdGhhdCB3ZSBwbGFuIHRvIHByb21vdGUu Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0ZXN0X3N1Yj0jIFNFTEVDVAorICAgICAgICAgICAgICAgYXJy YXlfYWdnKHNsb3RuYW1lKSBBUyBzbG90cworICAgICAgICAgICBGUk9NCisgICAgICAgICAgICgo CisgICAgICAgICAgICAgICBTRUxFQ1Qgci5zcnN1YmlkIEFTIHN1YmlkLCBDT05DQVQoJ3BnXycs IHNyc3ViaWQsICdfc3luY18nLCBzcnJlbGlkLCAnXycsIGN0bC5zeXN0ZW1faWRlbnRpZmllcikg QVMgc2xvdG5hbWUKKyAgICAgICAgICAgICAgIEZST00gcGdfY29udHJvbF9zeXN0ZW0oKSBjdGws IHBnX3N1YnNjcmlwdGlvbl9yZWwgciwgcGdfc3Vic2NyaXB0aW9uIHMKKyAgICAgICAgICAgICAg IFdIRVJFIHIuc3JzdWJzdGF0ZSA9ICdmJyBBTkQgcy5vaWQgPSByLnNyc3ViaWQgQU5EIHMuc3Vi ZmFpbG92ZXIKKyAgICAgICAgICAgKSBVTklPTiAoCisgICAgICAgICAgICAgICBTRUxFQ1Qgcy5v aWQgQVMgc3ViaWQsIHMuc3Vic2xvdG5hbWUgYXMgc2xvdG5hbWUKKyAgICAgICAgICAgICAgIEZS T00gcGdfc3Vic2NyaXB0aW9uIHMKKyAgICAgICAgICAgICAgIFdIRVJFIHMuc3ViZmFpbG92ZXIK KyAgICAgICAgICAgKSk7Cisgc2xvdHMKKy0tLS0tLS0KKyB7c3ViMSxzdWIyLHN1YjN9CisoMSBy b3cpCis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyAgICAgPC9zdGVwPgorICAgICA8c3RlcCBw ZXJmb3JtYW5jZT0icmVxdWlyZWQiPgorICAgICAgPHBhcmE+CisgICAgICAgTmV4dCwgY2hlY2sg dGhhdCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90cyBpZGVudGlmaWVkIGFib3ZlIGV4aXN0 IG9uCisgICAgICAgdGhlIHN0YW5kYnkgc2VydmVyIGFuZCBhcmUgcmVhZHkgZm9yIGZhaWxvdmVy LgorPHByb2dyYW1saXN0aW5nPgordGVzdF9zdGFuZGJ5PSMgU0VMRUNUIHNsb3RfbmFtZSwgKHN5 bmNlZCBBTkQgTk9UIHRlbXBvcmFyeSBBTkQgY29uZmxpY3RfcmVhc29uIElTIE5VTEwpIEFTIGZh aWxvdmVyX3JlYWR5CisgICAgICAgICAgICAgICBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisg ICAgICAgICAgICAgICBXSEVSRSBzbG90X25hbWUgSU4gKCdzdWIxJywnc3ViMicsJ3N1YjMnKTsK KyAgc2xvdF9uYW1lICB8IGZhaWxvdmVyX3JlYWR5CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0KKyAgc3ViMSAgICAgICB8IHQKKyAgc3ViMiAgICAgICB8IHQKKyAgc3ViMyAgICAgICB8 IHQKKygzIHJvd3MpCis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyAgICAgPC9zdGVwPgorICAg IDwvc3Vic3RlcHM+CisgICA8L3N0ZXA+CisKKyAgIDxzdGVwIHBlcmZvcm1hbmNlPSJyZXF1aXJl ZCI+CisgICAgPHBhcmE+CisgICAgIENvbmZpcm0gdGhhdCB0aGUgc3RhbmRieSBzZXJ2ZXIgaXMg bm90IGxhZ2dpbmcgYmVoaW5kIHRoZSBzdWJzY3JpYmVycy4KKyAgICAgVGhpcyBzdGVwIGNhbiBi ZSBza2lwcGVkIGlmCisgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zdGFuZGJ5LXNsb3QtbmFtZXMi Pjx2YXJuYW1lPnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT48L2xpbms+CisgICAgIGhhcyBi ZWVuIGNvcnJlY3RseSBjb25maWd1cmVkLiBJZiBzdGFuZGJ5X3Nsb3RfbmFtZXMgaXMgbm90IGNv bmZpZ3VyZWQKKyAgICAgY29ycmVjdGx5LCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gcnVu IHRoaXMgc3RlcCBhZnRlciB0aGUgcHJpbWFyeQorICAgICBzZXJ2ZXIgaXMgZG93biwgb3RoZXJ3 aXNlIHRoZSByZXN1bHRzIG9mIHRoZSBxdWVyeSBtYXkgdmFyeSBhdCBkaWZmZXJlbnQKKyAgICAg cG9pbnRzIG9mIHRpbWUgZHVlIHRvIHRoZSBvbmdvaW5nIHJlcGxpY2F0aW9uIG9uIHRoZSBsb2dp Y2FsIHN1YnNjcmliZXJzCisgICAgIGZyb20gdGhlIHByaW1hcnkgc2VydmVyLgorICAgIDwvcGFy YT4KKyAgICAgPHN1YnN0ZXBzPgorICAgICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVpcmVkIj4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgRmlyc3RseSwgb24gdGhlIHN1YnNjcmliZXIgbm9kZSBj aGVjayB0aGUgbGFzdCByZXBsYXllZCBXQUwuCisgICAgICAgIFRoaXMgc3RlcCBuZWVkcyB0byBi ZSBydW4gb24gdGhlIGRhdGFiYXNlKHMpIHRoYXQgaW5jbHVkZXMgdGhlIGZhaWxvdmVyCisgICAg ICAgIGVuYWJsZWQgc3Vic2NyaXB0aW9uKHMpLCB0byBmaW5kIHRoZSBsYXN0IHJlcGxheWVkIFdB TCBvbiBlYWNoIGRhdGFiYXNlLgorPHByb2dyYW1saXN0aW5nPgordGVzdF9zdWI9IyBTRUxFQ1QK KyAgICAgICAgICAgICAgIE1BWChyZW1vdGVfbHNuKSBBUyByZW1vdGVfbHNuX29uX3N1YnNjcmli ZXIKKyAgICAgICAgICAgRlJPTQorICAgICAgICAgICAoKAorICAgICAgICAgICAgICAgU0VMRUNU IChDQVNFIFdIRU4gci5zcnN1YnN0YXRlID0gJ2YnIFRIRU4gcGdfcmVwbGljYXRpb25fb3JpZ2lu X3Byb2dyZXNzKENPTkNBVCgncGdfJywgci5zcnN1YmlkLCAnXycsIHIuc3JyZWxpZCksIGZhbHNl KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiByLnNyc3Vic3RhdGUgSU4gKCdzJywg J3InKSBUSEVOIHIuc3JzdWJsc24gRU5EKSBBUyByZW1vdGVfbHNuCisgICAgICAgICAgICAgICBG Uk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgciwgcGdfc3Vic2NyaXB0aW9uIHMKKyAgICAgICAgICAg ICAgIFdIRVJFIHIuc3JzdWJzdGF0ZSBJTiAoJ2YnLCAncycsICdyJykgQU5EIHMub2lkID0gci5z cnN1YmlkIEFORCBzLnN1YmZhaWxvdmVyCisgICAgICAgICAgICkgVU5JT04gKAorICAgICAgICAg ICAgICAgU0VMRUNUIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9wcm9ncmVzcyhDT05DQVQoJ3BnXycs IHMub2lkKSwgZmFsc2UpIEFTIHJlbW90ZV9sc24KKyAgICAgICAgICAgICAgIEZST00gcGdfc3Vi c2NyaXB0aW9uIHMKKyAgICAgICAgICAgICAgIFdIRVJFIHMuc3ViZmFpbG92ZXIKKyAgICAgICAg ICAgKSk7CisgcmVtb3RlX2xzbl9vbl9zdWJzY3JpYmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIDAvMzAwMDM4OAorPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgICAgPC9zdGVwPgor ICAgIDxzdGVwIHBlcmZvcm1hbmNlPSJyZXF1aXJlZCI+CisgICAgIDxwYXJhPgorICAgICAgTmV4 dCwgb24gdGhlIHN0YW5kYnkgc2VydmVyIGNoZWNrIHRoYXQgdGhlIGxhc3QtcmVjZWl2ZWQgV0FM IGxvY2F0aW9uCisgICAgICBpcyBhaGVhZCBvZiB0aGUgcmVwbGF5ZWQgV0FMIGxvY2F0aW9uKHMp IG9uIHRoZSBzdWJzY3JpYmVyIGlkZW50aWZpZWQKKyAgICAgIGFib3ZlLiBJZiB0aGUgYWJvdmUg U1FMIHJlc3VsdCB3YXMgTlVMTCwgaXQgbWVhbnMgdGhlIHN1YnNjcmliZXIgaGFzIG5vdAorICAg ICAgeWV0IHJlcGxheWVkIGFueSBXQUwsIHNvIHRoZSBzdGFuZGJ5IHNlcnZlciBtdXN0IGJlIGFo ZWFkIG9mIHRoZQorICAgICAgc3Vic2NyaWJlciwgYW5kIHRoaXMgc3RlcCBjYW4gYmUgc2tpcHBl ZC4KKzxwcm9ncmFtbGlzdGluZz4KK3Rlc3Rfc3RhbmRieT0jIFNFTEVDVCBwZ19sYXN0X3dhbF9y ZWNlaXZlX2xzbigpID49ICcwLzMwMDAzODgnOjpwZ19sc24gQVMgZmFpbG92ZXJfcmVhZHk7Cisg ZmFpbG92ZXJfcmVhZHkKKy0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCis8L3Byb2dyYW1s aXN0aW5nPjwvcGFyYT4KKyAgICAgPC9zdGVwPgorICAgIDwvc3Vic3RlcHM+CisgICA8L3N0ZXA+ CisgIDwvcHJvY2VkdXJlPgorCisgIDxwYXJhPgorICAgSWYgdGhlIHJlc3VsdCAoPGxpdGVyYWw+ ZmFpbG92ZXJfcmVhZHk8L2xpdGVyYWw+KSBvZiBib3RoIGFib3ZlIHN0ZXBzIGlzCisgICB0cnVl LCBleGlzdGluZyBzdWJzY3JpcHRpb25zIHdpbGwgYmUgYWJsZSB0byBjb250aW51ZSB3aXRob3V0 IGRhdGEgbG9zcy4KKyAgPC9wYXJhPgorCisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0ibG9naWNh bC1yZXBsaWNhdGlvbi1yb3ctZmlsdGVyIj4KICAgPHRpdGxlPlJvdyBGaWx0ZXJzPC90aXRsZT4K IAotLSAKMi4zNC4xCgo= --000000000000e8ffa10611cceff3 Content-Type: application/octet-stream; name="v92-0001-Add-a-new-slotsync-worker.patch" Content-Disposition: attachment; filename="v92-0001-Add-a-new-slotsync-worker.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lsu64wnu0 RnJvbSA2YzY3YjJhNTU2YzhmMTQ4NzhjMTYxMmE2ZTFlYmRmMGFiNTlhZWZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTYgRmViIDIwMjQgMTI6NDQ6NTggKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 MiAxLzNdIEFkZCBhIG5ldyBzbG90c3luYyB3b3JrZXIKCkJ5IGVuYWJsaW5nIHNsb3Qgc3luY2hy b25pemF0aW9uLCBhbGwgdGhlIGZhaWxvdmVyIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgb24K dGhlIHByaW1hcnkgKGFzc3VtaW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBhcHByb3ByaWF0ZSkgYXJl IGF1dG9tYXRpY2FsbHkgY3JlYXRlZApvbiB0aGUgcGh5c2ljYWwgc3RhbmRieXMgYW5kIGFyZSBz eW5jZWQgcGVyaW9kaWNhbGx5LiBTbG90LXN5bmMgd29ya2VyIG9uIHRoZQpzdGFuZGJ5IHNlcnZl ciBwaW5nIHRoZSBwcmltYXJ5IHNlcnZlciBhdCByZWd1bGFyIGludGVydmFscyB0byBnZXQgdGhl Cm5lY2Vzc2FyeSBmYWlsb3ZlciBsb2dpY2FsIHNsb3RzIGluZm9ybWF0aW9uIGFuZCBjcmVhdGUv dXBkYXRlIHRoZSBzbG90cwpsb2NhbGx5LiBUaGUgc2xvdHMgdGhhdCBubyBsb25nZXIgcmVxdWly ZSBzeW5jaHJvbml6YXRpb24gYXJlIGF1dG9tYXRpY2FsbHkKZHJvcHBlZCBieSB0aGUgd29ya2Vy LgoKVGhlIG5hcCB0aW1lIG9mIHRoZSB3b3JrZXIgaXMgdHVuZWQgYWNjb3JkaW5nIHRvIHRoZSBh Y3Rpdml0eSBvbiB0aGUgcHJpbWFyeS4KVGhlIHdvcmtlciB3YWl0cyBmb3IgYSBwZXJpb2Qgb2Yg dGltZSBiZWZvcmUgdGhlIG5leHQgc3luY2hyb25pemF0aW9uLCB3aXRoIHRoZQpkdXJhdGlvbiB2 YXJ5aW5nIGJhc2VkIG9uIHdoZXRoZXIgYW55IHNsb3RzIHdlcmUgdXBkYXRlZCBkdXJpbmcgdGhl IGxhc3QKY3ljbGUuCgpBIG5ldyBwYXJhbWV0ZXIgc3luY19yZXBsaWNhdGlvbl9zbG90cyBlbmFi bGVzIG9yIGRpc2FibGVzIHRoaXMgbmV3IHByb2Nlc3MuCgpPbiBwcm9tb3Rpb24sIHRoZSBzbG90 IHN5bmMgd29ya2VyIGlzIHNodXQgZG93biBieSB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvCmRyb3Ag YW55IHRlbXBvcmFyeSBzbG90cyBhY3F1aXJlZCBieSB0aGUgc2xvdCBzeW5jIHdvcmtlciBhbmQg dG8gcHJldmVudAp0aGUgd29ya2VyIGZyb20ga2VlcCB0cnlpbmcgdG8gZmV0Y2ggdGhlIGZhaWxv dmVyIHNsb3RzLgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICB8ICAxOCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwgICAgICAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAg ICB8ICAxNSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAg fCAgOTMgKystCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAg fCAgIDMgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jICAgIHwg Njk5ICsrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAg ICAgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5j ICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAg ICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5j ICAgICAgICB8ICAgMSArCiAuLi4vdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAg ICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAg ICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAg ICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUg fCAgIDEgKwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICAgICB8ICAy MSArLQogLi4uL3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbCAgICAgIHwgMTIz ICsrLQogMTkgZmlsZXMgY2hhbmdlZCwgOTU3IGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAppbmRleCBmZmQ3MTFiN2YyLi5mZjE4NDAwM2ZlIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00 OTQzLDYgKzQ5NDMsMjQgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1f c3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1z eW5jLXJlcGxpY2F0aW9uLXNsb3RzIiB4cmVmbGFiZWw9InN5bmNfcmVwbGljYXRpb25fc2xvdHMi PgorICAgICAgPHRlcm0+PHZhcm5hbWU+c3luY19yZXBsaWNhdGlvbl9zbG90czwvdmFybmFtZT4g KDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFy eT48dmFybmFtZT5zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzPC92YXJuYW1lPiBjb25maWd1cmF0aW9u IHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgor ICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBJdCBlbmFibGVzIGEgcGh5 c2ljYWwgc3RhbmRieSB0byBzeW5jaHJvbml6ZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzCisgICAg ICAgIGZyb20gdGhlIHByaW1hcnkgc2VydmVyIHNvIHRoYXQgbG9naWNhbCBzdWJzY3JpYmVycyBj YW4gcmVzdW1lCisgICAgICAgIHJlcGxpY2F0aW9uIGZyb20gdGhlIG5ldyBwcmltYXJ5IHNlcnZl ciBhZnRlciBmYWlsb3Zlci4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNl dCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZp bGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgIDwvdmFyaWFibGVsaXN0Pgog ICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcu c2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAppbmRleCBlY2VhYWFhMjcz Li45MzBjMGZhOGE2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCkBAIC0zNzMsNyArMzcz LDEwIEBAIHBvc3RncmVzPSMgc2VsZWN0ICogZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5n ZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VCiAgICAgIDxjb21tYW5kPkNSRUFURSBTVUJT Q1JJUFRJT048L2NvbW1hbmQ+IGR1cmluZyBzbG90IGNyZWF0aW9uLCBhbmQgdGhlbiBjYWxsaW5n CiAgICAgIDxsaW5rIGxpbmtlbmQ9InBnLXN5bmMtcmVwbGljYXRpb24tc2xvdHMiPgogICAgICA8 ZnVuY3Rpb24+cGdfc3luY19yZXBsaWNhdGlvbl9zbG90czwvZnVuY3Rpb24+PC9saW5rPgotICAg ICBvbiB0aGUgc3RhbmRieS4gRm9yIHRoZSBzeW5jaHJvbml6YXRpb24gdG8gd29yaywgaXQgaXMg bWFuZGF0b3J5IHRvCisgICAgIG9uIHRoZSBzdGFuZGJ5LiBCeSBzZXR0aW5nIDxsaW5rIGxpbmtl bmQ9Imd1Yy1zeW5jLXJlcGxpY2F0aW9uLXNsb3RzIj4KKyAgICAgPHZhcm5hbWU+c3luY19yZXBs aWNhdGlvbl9zbG90czwvdmFybmFtZT48L2xpbms+CisgICAgIG9uIHRoZSBzdGFuZGJ5LCB0aGUg ZmFpbG92ZXIgc2xvdHMgY2FuIGJlIHN5bmNocm9uaXplZCBwZXJpb2RpY2FsbHkgaW4KKyAgICAg dGhlIHNsb3RzeW5jIHdvcmtlci4gRm9yIHRoZSBzeW5jaHJvbml6YXRpb24gdG8gd29yaywgaXQg aXMgbWFuZGF0b3J5IHRvCiAgICAgIGhhdmUgYSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IGJl dHdlZW4gdGhlIHByaW1hcnkgYW5kIHRoZSBzdGFuZGJ5IGFrYQogICAgICA8bGluayBsaW5rZW5k PSJndWMtcHJpbWFyeS1zbG90LW5hbWUiPjx2YXJuYW1lPnByaW1hcnlfc2xvdF9uYW1lPC92YXJu YW1lPjwvbGluaz4KICAgICAgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgb24gdGhlIHN0YW5kYnksIGFu ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCAwYmI0NzJk YTI3Li5kNzNhNDliM2U4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zl cnkuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9z bG90LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2lwYy5oIgpAQCAtMTQ2Nyw2ICsxNDY4LDIwIEBAIEZpbmlzaFdhbFJlY292ZXJ5 KHZvaWQpCiAJICovCiAJWExvZ1NodXRkb3duV2FsUmN2KCk7CiAKKwkvKgorCSAqIFNodXRkb3du IHRoZSBzbG90IHN5bmMgd29ya2VyIHRvIGRyb3AgYW55IHRlbXBvcmFyeSBzbG90cyBhY3F1aXJl ZCBieQorCSAqIGl0IGFuZCB0byBwcmV2ZW50IGl0IGZyb20ga2VlcCB0cnlpbmcgdG8gZmV0Y2gg dGhlIGZhaWxvdmVyIHNsb3RzLgorCSAqCisJICogV2UgZG8gbm90IHVwZGF0ZSB0aGUgJ3N5bmNl ZCcgY29sdW1uIGZyb20gdHJ1ZSB0byBmYWxzZSBoZXJlLCBhcyBhbnkKKwkgKiBmYWlsZWQgdXBk YXRlIGNvdWxkIGxlYXZlICdzeW5jZWQnIGNvbHVtbiBmYWxzZSBmb3Igc29tZSBzbG90cy4gVGhp cworCSAqIGNvdWxkIGNhdXNlIGlzc3VlcyBkdXJpbmcgc2xvdCBzeW5jIGFmdGVyIHJlc3RhcnRp bmcgdGhlIHNlcnZlciBhcyBhCisJICogc3RhbmRieS4gV2hpbGUgdXBkYXRpbmcgdGhlICdzeW5j ZWQnIGNvbHVtbiBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlIG5ldworCSAqIHRpbWVsaW5lIGlzIGFu IG9wdGlvbiwgaXQgZG9lcyBub3Qgc2ltcGxpZnkgdGhlIGhhbmRsaW5nIGZvciB0aGUKKwkgKiAn c3luY2VkJyBjb2x1bW4uIFRoZXJlZm9yZSwgd2UgcmV0YWluIHRoZSAnc3luY2VkJyBjb2x1bW4g YXMgdHJ1ZSBhZnRlcgorCSAqIHByb21vdGlvbiBhcyBpdCBtYXkgcHJvdmlkZSB1c2VmdWwgaW5m b3JtYXRpb24gYWJvdXQgdGhlIHNsb3Qgb3JpZ2luLgorCSAqLworCVNodXREb3duU2xvdFN5bmMo KTsKKwogCS8qCiAJICogV2UgYXJlIG5vdyBkb25lIHJlYWRpbmcgdGhlIHhsb2cgZnJvbSBzdHJl YW0uIFR1cm4gb2ZmIHN0cmVhbWluZwogCSAqIHJlY292ZXJ5IHRvIGZvcmNlIGZldGNoaW5nIHRo ZSBmaWxlcyAod2hpY2ggd291bGQgYmUgcmVxdWlyZWQgYXQgZW5kIG9mCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGRmOTQ1YTVhYzQuLmQwMTYxNDQ5MTIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0xMTUsNiArMTE1LDcgQEAKICNpbmNsdWRlICJwb3N0 bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC0x NjcsMTEgKzE2OCwxMSBAQAogICogdGhleSB3aWxsIG5ldmVyIGJlY29tZSBsaXZlIGJhY2tlbmRz LiAgZGVhZF9lbmQgY2hpbGRyZW4gYXJlIG5vdCBhc3NpZ25lZCBhCiAgKiBQTUNoaWxkU2xvdC4g IGRlYWRfZW5kIGNoaWxkcmVuIGhhdmUgYmtlbmRfdHlwZSBOT1JNQUwuCiAgKgotICogIlNwZWNp YWwiIGNoaWxkcmVuIHN1Y2ggYXMgdGhlIHN0YXJ0dXAsIGJnd3JpdGVyIGFuZCBhdXRvdmFjdXVt IGxhdW5jaGVyCi0gKiB0YXNrcyBhcmUgbm90IGluIHRoaXMgbGlzdC4gIFRoZXkgYXJlIHRyYWNr ZWQgdmlhIFN0YXJ0dXBQSUQgYW5kIG90aGVyCi0gKiBwaWRfdCB2YXJpYWJsZXMgYmVsb3cuICAo VGh1cywgdGhlcmUgY2FuJ3QgYmUgbW9yZSB0aGFuIG9uZSBvZiBhbnkgZ2l2ZW4KLSAqICJzcGVj aWFsIiBjaGlsZCBwcm9jZXNzIHR5cGUuICBXZSB1c2UgQmFja2VuZExpc3QgZW50cmllcyBmb3Ig YW55IGNoaWxkCi0gKiBwcm9jZXNzIHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIG9mLikKKyAq ICJTcGVjaWFsIiBjaGlsZHJlbiBzdWNoIGFzIHRoZSBzdGFydHVwLCBiZ3dyaXRlciwgYXV0b3Zh Y3V1bSBsYXVuY2hlciwgYW5kCisgKiBzbG90IHN5bmMgd29ya2VyIHRhc2tzIGFyZSBub3QgaW4g dGhpcyBsaXN0LiAgVGhleSBhcmUgdHJhY2tlZCB2aWEgU3RhcnR1cFBJRAorICogYW5kIG90aGVy IHBpZF90IHZhcmlhYmxlcyBiZWxvdy4gIChUaHVzLCB0aGVyZSBjYW4ndCBiZSBtb3JlIHRoYW4g b25lIG9mIGFueQorICogZ2l2ZW4gInNwZWNpYWwiIGNoaWxkIHByb2Nlc3MgdHlwZS4gIFdlIHVz ZSBCYWNrZW5kTGlzdCBlbnRyaWVzIGZvciBhbnkKKyAqIGNoaWxkIHByb2Nlc3MgdGhlcmUgY2Fu IGJlIG1vcmUgdGhhbiBvbmUgb2YuKQogICovCiB0eXBlZGVmIHN0cnVjdCBia2VuZAogewpAQCAt MjU0LDcgKzI1NSw4IEBAIHN0YXRpYyBwaWRfdCBTdGFydHVwUElEID0gMCwKIAkJCVdhbFN1bW1h cml6ZXJQSUQgPSAwLAogCQkJQXV0b1ZhY1BJRCA9IDAsCiAJCQlQZ0FyY2hQSUQgPSAwLAotCQkJ U3lzTG9nZ2VyUElEID0gMDsKKwkJCVN5c0xvZ2dlclBJRCA9IDAsCisJCQlTbG90U3luY1dvcmtl clBJRCA9IDA7CiAKIC8qIFN0YXJ0dXAgcHJvY2VzcydzIHN0YXR1cyAqLwogdHlwZWRlZiBlbnVt CkBAIC00NDUsNiArNDQ3LDcgQEAgc3RhdGljIHZvaWQgU3RhcnRBdXRvdmFjdXVtV29ya2VyKHZv aWQpOwogc3RhdGljIHZvaWQgTWF5YmVTdGFydFdhbFJlY2VpdmVyKHZvaWQpOwogc3RhdGljIHZv aWQgTWF5YmVTdGFydFdhbFN1bW1hcml6ZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBJbml0UG9zdG1h c3RlckRlYXRoV2F0Y2hIYW5kbGUodm9pZCk7CitzdGF0aWMgdm9pZCBNYXliZVN0YXJ0U2xvdFN5 bmNXb3JrZXIodm9pZCk7CiAKIC8qCiAgKiBBcmNoaXZlciBpcyBhbGxvd2VkIHRvIHN0YXJ0IHVw IGF0IHRoZSBjdXJyZW50IHBvc3RtYXN0ZXIgc3RhdGU/CkBAIC0xODIyLDYgKzE4MjUsOSBAQCBT ZXJ2ZXJMb29wKHZvaWQpCiAJCWlmIChQZ0FyY2hQSUQgPT0gMCAmJiBQZ0FyY2hTdGFydHVwQWxs b3dlZCgpKQogCQkJUGdBcmNoUElEID0gU3RhcnRDaGlsZFByb2Nlc3MoQXJjaGl2ZXJQcm9jZXNz KTsKIAorCQkvKiBJZiB3ZSBuZWVkIHRvIHN0YXJ0IGEgc2xvdCBzeW5jIHdvcmtlciwgdHJ5IHRv IGRvIHRoYXQgbm93ICovCisJCU1heWJlU3RhcnRTbG90U3luY1dvcmtlcigpOworCiAJCS8qIElm IHdlIG5lZWQgdG8gc2lnbmFsIHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyLCBkbyBzbyBub3cgKi8K IAkJaWYgKGF2bGF1bmNoZXJfbmVlZHNfc2lnbmFsKQogCQl7CkBAIC0yNjYxLDYgKzI2NjcsOCBA QCBwcm9jZXNzX3BtX3JlbG9hZF9yZXF1ZXN0KHZvaWQpCiAJCQlzaWduYWxfY2hpbGQoUGdBcmNo UElELCBTSUdIVVApOwogCQlpZiAoU3lzTG9nZ2VyUElEICE9IDApCiAJCQlzaWduYWxfY2hpbGQo U3lzTG9nZ2VyUElELCBTSUdIVVApOworCQlpZiAoU2xvdFN5bmNXb3JrZXJQSUQgIT0gMCkKKwkJ CXNpZ25hbF9jaGlsZChTbG90U3luY1dvcmtlclBJRCwgU0lHSFVQKTsKIAogCQkvKiBSZWxvYWQg YXV0aGVudGljYXRpb24gY29uZmlnIGZpbGVzIHRvbyAqLwogCQlpZiAoIWxvYWRfaGJhKCkpCkBA IC0zMDEwLDYgKzMwMTgsNyBAQCBwcm9jZXNzX3BtX2NoaWxkX2V4aXQodm9pZCkKIAkJCQlBdXRv VmFjUElEID0gU3RhcnRBdXRvVmFjTGF1bmNoZXIoKTsKIAkJCWlmIChQZ0FyY2hTdGFydHVwQWxs b3dlZCgpICYmIFBnQXJjaFBJRCA9PSAwKQogCQkJCVBnQXJjaFBJRCA9IFN0YXJ0Q2hpbGRQcm9j ZXNzKEFyY2hpdmVyUHJvY2Vzcyk7CisJCQlNYXliZVN0YXJ0U2xvdFN5bmNXb3JrZXIoKTsKIAog CQkJLyogd29ya2VycyBtYXkgYmUgc2NoZWR1bGVkIHRvIHN0YXJ0IG5vdyAqLwogCQkJbWF5YmVf c3RhcnRfYmd3b3JrZXJzKCk7CkBAIC0zMTgwLDYgKzMxODksMjIgQEAgcHJvY2Vzc19wbV9jaGls ZF9leGl0KHZvaWQpCiAJCQljb250aW51ZTsKIAkJfQogCisJCS8qCisJCSAqIFdhcyBpdCB0aGUg c2xvdCBzeW5jIHdvcmtlcj8gTm9ybWFsIGV4aXQgb3IgRkFUQUwgZXhpdCBjYW4gYmUKKwkJICog aWdub3JlZCAoRkFUQUwgY2FuIGJlIGNhdXNlZCBieSBsaWJwcXdhbHJlY2VpdmVyIG9uIHJlY2Vp dmluZworCQkgKiBzaHV0ZG93biByZXF1ZXN0IGJ5IHRoZSBzdGFydHVwIHByb2Nlc3MgZHVyaW5n IHByb21vdGlvbik7IHdlJ2xsCisJCSAqIHN0YXJ0IGEgbmV3IG9uZSBhdCB0aGUgbmV4dCBpdGVy YXRpb24gb2YgdGhlIHBvc3RtYXN0ZXIncyBtYWluCisJCSAqIGxvb3AsIGlmIG5lY2Vzc2FyeS4g QW55IG90aGVyIGV4aXQgY29uZGl0aW9uIGlzIHRyZWF0ZWQgYXMgYSBjcmFzaC4KKwkJICovCisJ CWlmIChwaWQgPT0gU2xvdFN5bmNXb3JrZXJQSUQpCisJCXsKKwkJCVNsb3RTeW5jV29ya2VyUElE ID0gMDsKKwkJCWlmICghRVhJVF9TVEFUVVNfMChleGl0c3RhdHVzKSAmJiAhRVhJVF9TVEFUVVNf MShleGl0c3RhdHVzKSkKKwkJCQlIYW5kbGVDaGlsZENyYXNoKHBpZCwgZXhpdHN0YXR1cywKKwkJ CQkJCQkJIF8oInNsb3Qgc3luYyB3b3JrZXIgcHJvY2VzcyIpKTsKKwkJCWNvbnRpbnVlOworCQl9 CisKIAkJLyogV2FzIGl0IG9uZSBvZiBvdXIgYmFja2dyb3VuZCB3b3JrZXJzPyAqLwogCQlpZiAo Q2xlYW51cEJhY2tncm91bmRXb3JrZXIocGlkLCBleGl0c3RhdHVzKSkKIAkJewpAQCAtMzM4NCw3 ICszNDA5LDcgQEAgQ2xlYW51cEJhY2tlbmQoaW50IHBpZCwKIAogLyoKICAqIEhhbmRsZUNoaWxk Q3Jhc2ggLS0gY2xlYW51cCBhZnRlciBmYWlsZWQgYmFja2VuZCwgYmd3cml0ZXIsIGNoZWNrcG9p bnRlciwKLSAqIHdhbHdyaXRlciwgYXV0b3ZhY3V1bSwgYXJjaGl2ZXIgb3IgYmFja2dyb3VuZCB3 b3JrZXIuCisgKiB3YWx3cml0ZXIsIGF1dG92YWN1dW0sIGFyY2hpdmVyLCBzbG90IHN5bmMgd29y a2VyLCBvciBiYWNrZ3JvdW5kIHdvcmtlci4KICAqCiAgKiBUaGUgb2JqZWN0aXZlcyBoZXJlIGFy ZSB0byBjbGVhbiB1cCBvdXIgbG9jYWwgc3RhdGUgYWJvdXQgdGhlIGNoaWxkCiAgKiBwcm9jZXNz LCBhbmQgdG8gc2lnbmFsIGFsbCBvdGhlciByZW1haW5pbmcgY2hpbGRyZW4gdG8gcXVpY2tkaWUu CkBAIC0zNTQ2LDYgKzM1NzEsMTIgQEAgSGFuZGxlQ2hpbGRDcmFzaChpbnQgcGlkLCBpbnQgZXhp dHN0YXR1cywgY29uc3QgY2hhciAqcHJvY25hbWUpCiAJZWxzZSBpZiAoUGdBcmNoUElEICE9IDAg JiYgdGFrZV9hY3Rpb24pCiAJCXNpZ3F1aXRfY2hpbGQoUGdBcmNoUElEKTsKIAorCS8qIFRha2Ug Y2FyZSBvZiB0aGUgc2xvdCBzeW5jIHdvcmtlciB0b28gKi8KKwlpZiAocGlkID09IFNsb3RTeW5j V29ya2VyUElEKQorCQlTbG90U3luY1dvcmtlclBJRCA9IDA7CisJZWxzZSBpZiAoU2xvdFN5bmNX b3JrZXJQSUQgIT0gMCAmJiB0YWtlX2FjdGlvbikKKwkJc2lncXVpdF9jaGlsZChTbG90U3luY1dv cmtlclBJRCk7CisKIAkvKiBXZSBkbyBOT1QgcmVzdGFydCB0aGUgc3lzbG9nZ2VyICovCiAKIAlp ZiAoU2h1dGRvd24gIT0gSW1tZWRpYXRlU2h1dGRvd24pCkBAIC0zNjg2LDYgKzM3MTcsOCBAQCBQ b3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQlzaWduYWxfY2hpbGQoV2FsUmVjZWl2ZXJQ SUQsIFNJR1RFUk0pOwogCQlpZiAoV2FsU3VtbWFyaXplclBJRCAhPSAwKQogCQkJc2lnbmFsX2No aWxkKFdhbFN1bW1hcml6ZXJQSUQsIFNJR1RFUk0pOworCQlpZiAoU2xvdFN5bmNXb3JrZXJQSUQg IT0gMCkKKwkJCXNpZ25hbF9jaGlsZChTbG90U3luY1dvcmtlclBJRCwgU0lHVEVSTSk7CiAJCS8q IGNoZWNrcG9pbnRlciwgYXJjaGl2ZXIsIHN0YXRzLCBhbmQgc3lzbG9nZ2VyIG1heSBjb250aW51 ZSBmb3Igbm93ICovCiAKIAkJLyogTm93IHRyYW5zaXRpb24gdG8gUE1fV0FJVF9CQUNLRU5EUyBz dGF0ZSB0byB3YWl0IGZvciB0aGVtIHRvIGRpZSAqLwpAQCAtMzcwMSwxMyArMzczNCwxMyBAQCBQ b3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCS8qCiAJCSAqIFBNX1dBSVRfQkFDS0VORFMg c3RhdGUgZW5kcyB3aGVuIHdlIGhhdmUgbm8gcmVndWxhciBiYWNrZW5kcwogCQkgKiAoaW5jbHVk aW5nIGF1dG92YWMgd29ya2VycyksIG5vIGJnd29ya2VycyAoaW5jbHVkaW5nIHVuY29ubmVjdGVk Ci0JCSAqIG9uZXMpLCBhbmQgbm8gd2Fsd3JpdGVyLCBhdXRvdmFjIGxhdW5jaGVyIG9yIGJnd3Jp dGVyLiAgSWYgd2UgYXJlCi0JCSAqIGRvaW5nIGNyYXNoIHJlY292ZXJ5IG9yIGFuIGltbWVkaWF0 ZSBzaHV0ZG93biB0aGVuIHdlIGV4cGVjdCB0aGUKLQkJICogY2hlY2twb2ludGVyIHRvIGV4aXQg YXMgd2VsbCwgb3RoZXJ3aXNlIG5vdC4gVGhlIHN0YXRzIGFuZAotCQkgKiBzeXNsb2dnZXIgcHJv Y2Vzc2VzIGFyZSBkaXNyZWdhcmRlZCBzaW5jZSB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvCi0J CSAqIHNoYXJlZCBtZW1vcnk7IHdlIGFsc28gZGlzcmVnYXJkIGRlYWRfZW5kIGNoaWxkcmVuIGhl cmUuIFdhbHNlbmRlcnMKLQkJICogYW5kIGFyY2hpdmVyIGFyZSBhbHNvIGRpc3JlZ2FyZGVkLCB0 aGV5IHdpbGwgYmUgdGVybWluYXRlZCBsYXRlcgotCQkgKiBhZnRlciB3cml0aW5nIHRoZSBjaGVj a3BvaW50IHJlY29yZC4KKwkJICogb25lcyksIGFuZCBubyB3YWx3cml0ZXIsIGF1dG92YWMgbGF1 bmNoZXIsIGJnd3JpdGVyIG9yIHNsb3Qgc3luYworCQkgKiB3b3JrZXIuICBJZiB3ZSBhcmUgZG9p bmcgY3Jhc2ggcmVjb3Zlcnkgb3IgYW4gaW1tZWRpYXRlIHNodXRkb3duCisJCSAqIHRoZW4gd2Ug ZXhwZWN0IHRoZSBjaGVja3BvaW50ZXIgdG8gZXhpdCBhcyB3ZWxsLCBvdGhlcndpc2Ugbm90LiBU aGUKKwkJICogc3RhdHMgYW5kIHN5c2xvZ2dlciBwcm9jZXNzZXMgYXJlIGRpc3JlZ2FyZGVkIHNp bmNlIHRoZXkgYXJlIG5vdAorCQkgKiBjb25uZWN0ZWQgdG8gc2hhcmVkIG1lbW9yeTsgd2UgYWxz byBkaXNyZWdhcmQgZGVhZF9lbmQgY2hpbGRyZW4KKwkJICogaGVyZS4gV2Fsc2VuZGVycyBhbmQg YXJjaGl2ZXIgYXJlIGFsc28gZGlzcmVnYXJkZWQsIHRoZXkgd2lsbCBiZQorCQkgKiB0ZXJtaW5h dGVkIGxhdGVyIGFmdGVyIHdyaXRpbmcgdGhlIGNoZWNrcG9pbnQgcmVjb3JkLgogCQkgKi8KIAkJ aWYgKENvdW50Q2hpbGRyZW4oQkFDS0VORF9UWVBFX0FMTCAtIEJBQ0tFTkRfVFlQRV9XQUxTTkQp ID09IDAgJiYKIAkJCVN0YXJ0dXBQSUQgPT0gMCAmJgpAQCAtMzcxNyw3ICszNzUwLDggQEAgUG9z dG1hc3RlclN0YXRlTWFjaGluZSh2b2lkKQogCQkJKENoZWNrcG9pbnRlclBJRCA9PSAwIHx8CiAJ CQkgKCFGYXRhbEVycm9yICYmIFNodXRkb3duIDwgSW1tZWRpYXRlU2h1dGRvd24pKSAmJgogCQkJ V2FsV3JpdGVyUElEID09IDAgJiYKLQkJCUF1dG9WYWNQSUQgPT0gMCkKKwkJCUF1dG9WYWNQSUQg PT0gMCAmJgorCQkJU2xvdFN5bmNXb3JrZXJQSUQgPT0gMCkKIAkJewogCQkJaWYgKFNodXRkb3du ID49IEltbWVkaWF0ZVNodXRkb3duIHx8IEZhdGFsRXJyb3IpCiAJCQl7CkBAIC0zODE1LDYgKzM4 NDksNyBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQlBc3NlcnQoQ2hlY2twb2lu dGVyUElEID09IDApOwogCQkJQXNzZXJ0KFdhbFdyaXRlclBJRCA9PSAwKTsKIAkJCUFzc2VydChB dXRvVmFjUElEID09IDApOworCQkJQXNzZXJ0KFNsb3RTeW5jV29ya2VyUElEID09IDApOwogCQkJ Lyogc3lzbG9nZ2VyIGlzIG5vdCBjb25zaWRlcmVkIGhlcmUgKi8KIAkJCXBtU3RhdGUgPSBQTV9O T19DSElMRFJFTjsKIAkJfQpAQCAtNDAzOCw2ICs0MDczLDggQEAgVGVybWluYXRlQ2hpbGRyZW4o aW50IHNpZ25hbCkKIAkJc2lnbmFsX2NoaWxkKEF1dG9WYWNQSUQsIHNpZ25hbCk7CiAJaWYgKFBn QXJjaFBJRCAhPSAwKQogCQlzaWduYWxfY2hpbGQoUGdBcmNoUElELCBzaWduYWwpOworCWlmIChT bG90U3luY1dvcmtlclBJRCAhPSAwKQorCQlzaWduYWxfY2hpbGQoU2xvdFN5bmNXb3JrZXJQSUQs IHNpZ25hbCk7CiB9CiAKIC8qCkBAIC00ODUwLDYgKzQ4ODcsNyBAQCBTdWJQb3N0bWFzdGVyTWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCWlmIChzdHJjbXAoYXJndlsxXSwgIi0t Zm9ya2JhY2tlbmQiKSA9PSAwIHx8CiAJCXN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYXZsYXVuY2hl ciIpID09IDAgfHwKKwkJc3RyY21wKGFyZ3ZbMV0sICItLWZvcmtzc3dvcmtlciIpID09IDAgfHwK IAkJc3RyY21wKGFyZ3ZbMV0sICItLWZvcmthdndvcmtlciIpID09IDAgfHwKIAkJc3RyY21wKGFy Z3ZbMV0sICItLWZvcmthdXgiKSA9PSAwIHx8CiAJCXN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYmd3 b3JrZXIiKSA9PSAwKQpAQCAtNDk1Myw2ICs0OTkxLDEzIEBAIFN1YlBvc3RtYXN0ZXJNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkJQXV0b1ZhY1dvcmtlck1haW4oYXJnYyAtIDIsIGFy Z3YgKyAyKTsJLyogZG9lcyBub3QgcmV0dXJuICovCiAJfQorCWlmIChzdHJjbXAoYXJndlsxXSwg Ii0tZm9ya3Nzd29ya2VyIikgPT0gMCkKKwl7CisJCS8qIFJlc3RvcmUgYmFzaWMgc2hhcmVkIG1l bW9yeSBwb2ludGVycyAqLworCQlJbml0U2htZW1BY2Nlc3MoVXNlZFNobWVtU2VnQWRkcik7CisK KwkJUmVwbFNsb3RTeW5jV29ya2VyTWFpbihhcmdjIC0gMiwgYXJndiArIDIpOyAvKiBkb2VzIG5v dCByZXR1cm4gKi8KKwl9CiAJaWYgKHN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYmd3b3JrZXIiKSA9 PSAwKQogCXsKIAkJLyogZG8gdGhpcyBhcyBlYXJseSBhcyBwb3NzaWJsZTsgaW4gcGFydGljdWxh ciwgYmVmb3JlIEluaXRQcm9jZXNzKCkgKi8KQEAgLTU0OTgsNiArNTU0MywyNCBAQCBNYXliZVN0 YXJ0V2FsU3VtbWFyaXplcih2b2lkKQogfQogCiAKKy8qCisgKiBNYXliZVN0YXJ0U2xvdFN5bmNX b3JrZXIKKyAqIAkJU3RhcnQgdGhlIHNsb3Qgc3luYyB3b3JrZXIsIGlmIG5vdCBydW5uaW5nIGFu ZCBvdXIgc3RhdGUgYWxsb3dzLgorICoKKyAqIFdlIGFsbG93IHRvIHN0YXJ0IHRoZSBzbG90IHN5 bmMgd29ya2VyIHdoZW4gd2UgYXJlIG9uIGEgaG90IHN0YW5kYnksCisgKiBzbG90IHN5bmMgcGFy YW1ldGVycyBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHksIGFuZCBpdCBpcyB0aGUgZmlyc3QgdGlt ZQorICogb2Ygd29ya2VyJ3MgbGF1bmNoLCBvciBlbm91Z2ggdGltZSBoYXMgcGFzc2VkIHNpbmNl IHRoZSB3b3JrZXIgd2FzCisgKiBsYXVuY2hlZCBsYXN0LgorICovCitzdGF0aWMgdm9pZAorTWF5 YmVTdGFydFNsb3RTeW5jV29ya2VyKHZvaWQpCit7CisJaWYgKFNsb3RTeW5jV29ya2VyUElEID09 IDAgJiYgKHBtU3RhdGUgPT0gUE1fSE9UX1NUQU5EQlkpICYmCisJCXN5bmNfcmVwbGljYXRpb25f c2xvdHMgJiYgVmFsaWRhdGVTbG90U3luY1BhcmFtcyhMT0cpICYmCisJCVNsb3RTeW5jV29ya2Vy Q2FuUmVzdGFydCgpKQorCQlTbG90U3luY1dvcmtlclBJRCA9IFN0YXJ0U2xvdFN5bmNXb3JrZXIo KTsKK30KKwogLyoKICAqIENyZWF0ZSB0aGUgb3B0cyBmaWxlCiAgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2Vp dmVyLmMKaW5kZXggOTI3MGQ3Yjg1NS4uMDQyNzFlZTcwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMKQEAgLTYsNiArNiw5IEBACiAgKiBsb2FkZWQgYXMgYSBkeW5hbWljIG1vZHVsZSB0byBhdm9p ZCBsaW5raW5nIHRoZSBtYWluIHNlcnZlciBiaW5hcnkgd2l0aAogICogbGlicHEuCiAgKgorICog QXBhcnQgZnJvbSB3YWxyZWNlaXZlciwgdGhlIGxpYnBxLXNwZWNpZmljIHJvdXRpbmVzIGFyZSBu b3cgYmVpbmcgdXNlZCBieQorICogbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFuZCBzbG90 IHN5bmNocm9uaXphdGlvbi4KKyAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAy NCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDRjYWI3YjcxMDEuLmQxMzlk NTMxNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5 bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAg LTEwLDE4ICsxMCwyNSBAQAogICoKICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSBmb3Ig c2xvdCBzeW5jaHJvbml6YXRpb24gb24gYSBwaHlzaWNhbCBzdGFuZGJ5CiAgKiB0byBmZXRjaCBs b2dpY2FsIGZhaWxvdmVyIHNsb3RzIGluZm9ybWF0aW9uIGZyb20gdGhlIHByaW1hcnkgc2VydmVy LCBjcmVhdGUKLSAqIHRoZSBzbG90cyBvbiB0aGUgc3RhbmRieSBhbmQgc3luY2hyb25pemUgdGhl bS4gVGhpcyBpcyBkb25lIGJ5IGEgY2FsbCB0byBTUUwKLSAqIGZ1bmN0aW9uIHBnX3N5bmNfcmVw bGljYXRpb25fc2xvdHMuCisgKiB0aGUgc2xvdHMgb24gdGhlIHN0YW5kYnkgYW5kIHN5bmNocm9u aXplIHRoZW0gcGVyaW9kaWNhbGx5LgogICoKLSAqIElmIG9uIHBoeXNpY2FsIHN0YW5kYnksIHRo ZSBXQUwgY29ycmVzcG9uZGluZyB0byB0aGUgcmVtb3RlJ3MgcmVzdGFydF9sc24KLSAqIGlzIG5v dCBhdmFpbGFibGUgb3IgdGhlIHJlbW90ZSdzIGNhdGFsb2dfeG1pbiBwcmVjZWRlcyB0aGUgb2xk ZXN0IHhpZCBmb3Igd2hpY2gKLSAqIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCByb3dzIHdvdWxkbid0 IGhhdmUgYmVlbiByZW1vdmVkIHRoZW4gd2UgY2Fubm90IGNyZWF0ZQotICogdGhlIGxvY2FsIHN0 YW5kYnkgc2xvdCBiZWNhdXNlIHRoYXQgd291bGQgbWVhbiBtb3ZpbmcgdGhlIGxvY2FsIHNsb3QK KyAqIFNsb3Qgc3luY2hyb25pemF0aW9uIGNhbiBiZSBwZXJmb3JtZWQgZWl0aGVyIGF1dG9tYXRp Y2FsbHkgYnkgZW5hYmxpbmcgc2xvdAorICogc3luYyB3b3JrZXIgb3IgbWFudWFsbHkgYnkgY2Fs bGluZyBTUUwgZnVuY3Rpb24gcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLgorICoKKyAqIElm IHRoZSBXQUwgY29ycmVzcG9uZGluZyB0byB0aGUgcmVtb3RlJ3MgcmVzdGFydF9sc24gaXMgbm90 IGF2YWlsYWJsZSBvbiB0aGUKKyAqIHBoeXNpY2FsIHN0YW5kYnkgb3IgdGhlIHJlbW90ZSdzIGNh dGFsb2dfeG1pbiBwcmVjZWRlcyB0aGUgb2xkZXN0IHhpZCBmb3IKKyAqIHdoaWNoIGl0IGlzIGd1 YXJhbnRlZWQgdGhhdCByb3dzIHdvdWxkbid0IGhhdmUgYmVlbiByZW1vdmVkIHRoZW4gd2UgY2Fu bm90CisgKiBjcmVhdGUgdGhlIGxvY2FsIHN0YW5kYnkgc2xvdCBiZWNhdXNlIHRoYXQgd291bGQg bWVhbiBtb3ZpbmcgdGhlIGxvY2FsIHNsb3QKICAqIGJhY2t3YXJkIGFuZCBkZWNvZGluZyB3b24n dCBiZSBwb3NzaWJsZSB2aWEgc3VjaCBhIHNsb3QuIEluIHRoaXMgY2FzZSwgdGhlCiAgKiBzbG90 IHdpbGwgYmUgbWFya2VkIGFzIFJTX1RFTVBPUkFSWS4gT25jZSB0aGUgcHJpbWFyeSBzZXJ2ZXIg Y2F0Y2hlcyB1cCwKICAqIHRoZSBzbG90IHdpbGwgYmUgbWFya2VkIGFzIFJTX1BFUlNJU1RFTlQg KHdoaWNoIG1lYW5zIHN5bmMtcmVhZHkpIGFmdGVyCi0gKiB3aGljaCB3ZSBjYW4gY2FsbCBwZ19z eW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCkgcGVyaW9kaWNhbGx5IHRvIHBlcmZvcm0KLSAqIHN5bmNz LgorICogd2hpY2ggc2xvdCBzeW5jIHdvcmtlciBjYW4gcGVyZm9ybSB0aGUgc3luYyBwZXJpb2Rp Y2FsbHkgb3IgdXNlciBjYW4gY2FsbAorICogcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpIHBl cmlvZGljYWxseSB0byBwZXJmb3JtIHRoZSBzeW5jcy4KKyAqCisgKiBUaGUgc2xvdCBzeW5jIHdv cmtlciB3YWl0cyBmb3Igc29tZSB0aW1lIGJlZm9yZSB0aGUgbmV4dCBzeW5jaHJvbml6YXRpb24s CisgKiB3aXRoIHRoZSBkdXJhdGlvbiB2YXJ5aW5nIGJhc2VkIG9uIHdoZXRoZXIgYW55IHNsb3Rz IHdlcmUgdXBkYXRlZCBkdXJpbmcKKyAqIHRoZSBsYXN0IGN5Y2xlLiBSZWZlciB0byB0aGUgY29t bWVudHMgYWJvdmUgd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eSgpIGZvcgorICogbW9yZSBkZXRhaWxz LgogICoKICAqIEFueSBzdGFuZGJ5IHN5bmNocm9uaXplZCBzbG90cyB3aWxsIGJlIGRyb3BwZWQg aWYgdGhleSBubyBsb25nZXIgbmVlZAogICogdG8gYmUgc3luY2hyb25pemVkLiBTZWUgY29tbWVu dCBhdG9wIGRyb3BfbG9jYWxfb2Jzb2xldGVfc2xvdHMoKSBmb3IgbW9yZQpAQCAtMzEsMjggKzM4 LDgwIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSA8dGltZS5oPgorCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3Jl Y292ZXJ5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RiY29tbWFuZHMuaCIKKyNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgorI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvZm9ya19wcm9jZXNzLmgiCisjaW5j bHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAi dXRpbHMvcHNfc3RhdHVzLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogCi0vKiBTdHJ1 Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gdG8gY29udHJvbCBzbG90IHN5bmNocm9uaXphdGlv bi4gKi8KKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gdG8gY29udHJvbCBz bG90IHN5bmNocm9uaXphdGlvbi4KKyAqCisgKiBTbG90IHN5bmMgd29ya2VyJ3MgcGlkIGlzIG5l ZWRlZCBieSB0aGUgc3RhcnR1cCBwcm9jZXNzIGluIG9yZGVyIHRvIHNodXQgaXQKKyAqIGRvd24g ZHVyaW5nIHByb21vdGlvbi4gU3RhcnR1cCBwcm9jZXNzIHNodXRzIGRvd24gdGhlIHNsb3Qgc3lu YyB3b3JrZXIgYW5kCisgKiBhbHNvIHNldHMgc3RvcFNpZ25hbGVkPXRydWUgdG8gaGFuZGxlIHRo ZSByYWNlIGNvbmRpdGlvbiB3aGVuIHBvc3RtYXN0ZXIgaGFzCisgKiBub3Qgbm90aWNlZCB0aGUg cHJvbW90aW9uIHlldCBhbmQgdGh1cyBtYXkgZW5kIHVwIHJlc3RhcnRpbmcgc2xvdCBzeW5jCisg KiB3b3JrZXIuIElmIHN0b3BTaWduYWxlZCBpcyBzZXQsIHRoZSB3b3JrZXIgd2lsbCBleGl0IGlu IHN1Y2ggYSBjYXNlLgorICoKKyAqIFRoZSAnc3luY2luZycgZmxhZyBpcyBuZWVkZWQgdG8gcHJl dmVudCBjb25jdXJyZW50IHNsb3Qgc3luY3MgdG8gYXZvaWQgc2xvdAorICogb3ZlcndyaXRlcy4K KyAqCisgKiBUaGUgJ2xhc3Rfc3RhcnRfdGltZScgaXMgbmVlZGVkIGJ5IHBvc3RtYXN0ZXIgdG8g c3RhcnQgdGhlIHNsb3Qgc3luYyB3b3JrZXIKKyAqIG9uY2UgcGVyIFNMT1RTWU5DX1JFU1RBUlRf SU5URVJWQUxfU0VDLiBJbiBjYXNlcyB3aGVyZSBhIGltbWVkaWF0ZSByZXN0YXJ0CisgKiBpcyBl eHBlY3RlZCAoZS5nLiwgc2xvdCBzeW5jIEdVQ3MgY2hhbmdlKSwgc2xvdCBzeW5jIHdvcmtlciB3 aWxsIHJlc2V0CisgKiBsYXN0X3N0YXJ0X3RpbWUgYmVmb3JlIGV4aXRpbmcsIHNvIHRoYXQgcG9z dG1hc3RlciBjYW4gc3RhcnQgdGhlIHdvcmtlcgorICogd2l0aG91dCB3YWl0aW5nIGZvciBTTE9U U1lOQ19SRVNUQVJUX0lOVEVSVkFMX1NFQy4KKyAqCisgKiBBbGwgdGhlIGZpZWxkcyBleGNlcHQg J3N5bmNpbmcnIGFyZSB1c2VkIG9ubHkgYnkgc2xvdHN5bmMgd29ya2VyLgorICogJ3N5bmNpbmcn IGlzIHVzZWQgYm90aCBieSB3b3JrZXIgYW5kIFNRTCBmdW5jdGlvbiBwZ19zeW5jX3JlcGxpY2F0 aW9uX3Nsb3RzLgorICovCiB0eXBlZGVmIHN0cnVjdCBTbG90U3luY0N0eFN0cnVjdAogewotCS8q IHByZXZlbnRzIGNvbmN1cnJlbnQgc2xvdCBzeW5jcyB0byBhdm9pZCBzbG90IG92ZXJ3cml0ZXMg Ki8KKwlwaWRfdAkJcGlkOworCWJvb2wJCXN0b3BTaWduYWxlZDsKIAlib29sCQlzeW5jaW5nOwor CXRpbWVfdAkJbGFzdF9zdGFydF90aW1lOwogCXNsb2NrX3QJCW11dGV4OwogfSBTbG90U3luY0N0 eFN0cnVjdDsKIAogU2xvdFN5bmNDdHhTdHJ1Y3QgKlNsb3RTeW5jQ3R4ID0gTlVMTDsKIAorLyog R1VDIHZhcmlhYmxlICovCitib29sCQlzeW5jX3JlcGxpY2F0aW9uX3Nsb3RzID0gZmFsc2U7CisK Ky8qCisgKiBUaGUgc2xlZXAgdGltZSAobXMpIGJldHdlZW4gc2xvdC1zeW5jIGN5Y2xlcyB2YXJp ZXMgZHluYW1pY2FsbHkKKyAqICh3aXRoaW4gYSBNSU4vTUFYIHJhbmdlKSBhY2NvcmRpbmcgdG8g c2xvdCBhY3Rpdml0eS4gU2VlCisgKiB3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KCkgZm9yIGRldGFp bHMuCisgKi8KKyNkZWZpbmUgTUlOX1dPUktFUl9OQVBUSU1FX01TICAyMDAKKyNkZWZpbmUgTUFY X1dPUktFUl9OQVBUSU1FX01TICAzMDAwMAkvKiAzMHMgKi8KKworc3RhdGljIGxvbmcgc2xlZXBf bXMgPSBNSU5fV09SS0VSX05BUFRJTUVfTVM7CisKKy8qIFRoZSByZXN0YXJ0IGludGVydmFsIGZv ciBzbG90IHN5bmMgd29yayB1c2VkIGJ5IHBvc3RtYXN0ZXIgKi8KKyNkZWZpbmUgU0xPVFNZTkNf UkVTVEFSVF9JTlRFUlZBTF9TRUMgMTAKKworLyogRmxhZyB0byB0ZWxsIGlmIHdlIGFyZSBpbiBh IHNsb3Qgc3luYyB3b3JrZXIgcHJvY2VzcyAqLworc3RhdGljIGJvb2wgYW1fc2xvdHN5bmNfd29y a2VyID0gZmFsc2U7CisKIC8qCiAgKiBGbGFnIHRvIHRlbGwgaWYgd2UgYXJlIHN5bmNpbmcgcmVw bGljYXRpb24gc2xvdHMuIFVubGlrZSB0aGUgJ3N5bmNpbmcnIGZsYWcKICAqIGluIFNsb3RTeW5j Q3R4U3RydWN0LCB0aGlzIGZsYWcgaXMgdHJ1ZSBvbmx5IGlmIHRoZSBjdXJyZW50IHByb2Nlc3Mg aXMKQEAgLTc5LDYgKzEzOCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBSZW1vdGVTbG90CiAJUmVwbGlj YXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgaW52YWxpZGF0ZWQ7CiB9IFJlbW90ZVNsb3Q7CiAK KyNpZmRlZiBFWEVDX0JBQ0tFTkQKK3N0YXRpYyBwaWRfdCBzbG90c3luY3dvcmtlcl9mb3JrZXhl Yyh2b2lkKTsKKyNlbmRpZgorTk9OX0VYRUNfU1RBVElDIHZvaWQgUmVwbFNsb3RTeW5jV29ya2Vy TWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKKwor c3RhdGljIHZvaWQgc2xvdHN5bmNfZmFpbHVyZV9jYWxsYmFjayhpbnQgY29kZSwgRGF0dW0gYXJn KTsKKwogLyoKICAqIElmIG5lY2Vzc2FyeSwgdXBkYXRlIHRoZSBsb2NhbCBzeW5jZWQgc2xvdCdz IG1ldGFkYXRhIGJhc2VkIG9uIHRoZSBkYXRhCiAgKiBmcm9tIHRoZSByZW1vdGUgc2xvdC4KQEAg LTM0Myw4ICs0MDksMTEgQEAgcmVzZXJ2ZV93YWxfZm9yX2xvY2FsX3Nsb3QoWExvZ1JlY1B0ciBy ZXN0YXJ0X2xzbikKICAqIElmIHRoZSByZW1vdGUgcmVzdGFydF9sc24gYW5kIGNhdGFsb2dfeG1p biBoYXZlIGNhdWdodCB1cCB3aXRoIHRoZQogICogbG9jYWwgb25lcywgdGhlbiB1cGRhdGUgdGhl IExTTnMgYW5kIHBlcnNpc3QgdGhlIGxvY2FsIHN5bmNlZCBzbG90IGZvcgogICogZnV0dXJlIHN5 bmNocm9uaXphdGlvbjsgb3RoZXJ3aXNlLCBkbyBub3RoaW5nLgorICoKKyAqIFJldHVybiB0cnVl IGlmIHRoZSBzbG90IGlzIG1hcmtlZCBhcyBSU19QRVJTSVNURU5UIChzeW5jLXJlYWR5KSwgb3Ro ZXJ3aXNlCisgKiBmYWxzZS4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiB1cGRhdGVf YW5kX3BlcnNpc3RfbG9jYWxfc3luY2VkX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9p ZCByZW1vdGVfZGJpZCkKIHsKIAlSZXBsaWNhdGlvblNsb3QgKnNsb3QgPSBNeVJlcGxpY2F0aW9u U2xvdDsKQEAgLTM3Niw3ICs0NDUsNyBAQCB1cGRhdGVfYW5kX3BlcnNpc3RfbG9jYWxfc3luY2Vk X3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJCQkJICAg TFNOX0ZPUk1BVF9BUkdTKHNsb3QtPmRhdGEucmVzdGFydF9sc24pLAogCQkJCQkgICBzbG90LT5k YXRhLmNhdGFsb2dfeG1pbikpOwogCi0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAog CS8qIEZpcnN0IHRpbWUgc2xvdCB1cGRhdGUsIHRoZSBmdW5jdGlvbiBtdXN0IHJldHVybiB0cnVl ICovCkBAIC0zODgsNiArNDU3LDggQEAgdXBkYXRlX2FuZF9wZXJzaXN0X2xvY2FsX3N5bmNlZF9z bG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJZXJlcG9ydChM T0csCiAJCQllcnJtc2coIm5ld2x5IGNyZWF0ZWQgc2xvdCBcIiVzXCIgaXMgc3luYy1yZWFkeSBu b3ciLAogCQkJCSAgIHJlbW90ZV9zbG90LT5uYW1lKSk7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAog LyoKQEAgLTQwMCwxMiArNDcxLDE1IEBAIHVwZGF0ZV9hbmRfcGVyc2lzdF9sb2NhbF9zeW5jZWRf c2xvdChSZW1vdGVTbG90ICpyZW1vdGVfc2xvdCwgT2lkIHJlbW90ZV9kYmlkKQogICogdGhlIHJl bW90ZV9zbG90IGNhdGNoZXMgdXAgd2l0aCBsb2NhbGx5IHJlc2VydmVkIHBvc2l0aW9uIGFuZCBs b2NhbCBzbG90IGlzCiAgKiB1cGRhdGVkLiBUaGUgc2xvdCBpcyB0aGVuIHBlcnNpc3RlZCBhbmQg aXMgY29uc2lkZXJlZCBhcyBzeW5jLXJlYWR5IGZvcgogICogcGVyaW9kaWMgc3luY3MuCisgKgor ICogUmV0dXJucyBUUlVFIGlmIHRoZSBsb2NhbCBzbG90IGlzIHVwZGF0ZWQuCiAgKi8KLXN0YXRp YyB2b2lkCitzdGF0aWMgYm9vbAogc3luY2hyb25pemVfb25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVt b3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIHsKIAlSZXBsaWNhdGlvblNsb3QgKnNsb3Q7CiAJ WExvZ1JlY1B0cglsYXRlc3RGbHVzaFB0cjsKKwlib29sCQlzbG90X3VwZGF0ZWQgPSBmYWxzZTsK IAogCS8qCiAJICogTWFrZSBzdXJlIHRoYXQgY29uY2VybmVkIFdBTCBpcyByZWNlaXZlZCBhbmQg Zmx1c2hlZCBiZWZvcmUgc3luY2luZwpAQCAtNDEzLDEyICs0ODcsMTcgQEAgc3luY2hyb25pemVf b25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkgKi8K IAlsYXRlc3RGbHVzaFB0ciA9IEdldFN0YW5kYnlGbHVzaFJlY1B0cihOVUxMKTsKIAlpZiAocmVt b3RlX3Nsb3QtPmNvbmZpcm1lZF9sc24gPiBsYXRlc3RGbHVzaFB0cikKLQkJZWxvZyhFUlJPUiwK LQkJCSAic2tpcHBpbmcgc2xvdCBzeW5jaHJvbml6YXRpb24gYXMgdGhlIHJlY2VpdmVkIHNsb3Qg c3luYyIKLQkJCSAiIExTTiAlWC8lWCBmb3Igc2xvdCBcIiVzXCIgaXMgYWhlYWQgb2YgdGhlIHN0 YW5kYnkgcG9zaXRpb24gJVgvJVgiLAotCQkJIExTTl9GT1JNQVRfQVJHUyhyZW1vdGVfc2xvdC0+ Y29uZmlybWVkX2xzbiksCi0JCQkgcmVtb3RlX3Nsb3QtPm5hbWUsCi0JCQkgTFNOX0ZPUk1BVF9B UkdTKGxhdGVzdEZsdXNoUHRyKSk7CisJeworCQllcmVwb3J0KGFtX3Nsb3RzeW5jX3dvcmtlciA/ IExPRyA6IEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJZXJybXNnKCJza2lwcGluZyBzbG90IHN5bmNocm9uaXphdGlvbiBh cyB0aGUgcmVjZWl2ZWQgc2xvdCBzeW5jIgorCQkJCQkgICAiIExTTiAlWC8lWCBmb3Igc2xvdCBc IiVzXCIgaXMgYWhlYWQgb2YgdGhlIHN0YW5kYnkgcG9zaXRpb24gJVgvJVgiLAorCQkJCQkgICBM U05fRk9STUFUX0FSR1MocmVtb3RlX3Nsb3QtPmNvbmZpcm1lZF9sc24pLAorCQkJCQkgICByZW1v dGVfc2xvdC0+bmFtZSwKKwkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxhdGVzdEZsdXNoUHRyKSkp OworCisJCXJldHVybiBmYWxzZTsKKwl9CiAKIAkvKiBTZWFyY2ggZm9yIHRoZSBuYW1lZCBzbG90 ICovCiAJaWYgKChzbG90ID0gU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QocmVtb3RlX3Nsb3Qt Pm5hbWUsIHRydWUpKSkKQEAgLTQ2NiwxOSArNTQ1LDIyIEBAIHN5bmNocm9uaXplX29uZV9zbG90 KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJCQkvKiBNYWtlIHN1 cmUgdGhlIGludmFsaWRhdGVkIHN0YXRlIHBlcnNpc3RzIGFjcm9zcyBzZXJ2ZXIgcmVzdGFydCAq LwogCQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CiAJCQlSZXBsaWNhdGlvblNsb3RTYXZl KCk7CisKKwkJCXNsb3RfdXBkYXRlZCA9IHRydWU7CiAJCX0KIAogCQkvKiBTa2lwIHRoZSBzeW5j IG9mIGFuIGludmFsaWRhdGVkIHNsb3QgKi8KIAkJaWYgKHNsb3QtPmRhdGEuaW52YWxpZGF0ZWQg IT0gUlNfSU5WQUxfTk9ORSkKIAkJewogCQkJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOwotCQkJ cmV0dXJuOworCQkJcmV0dXJuIHNsb3RfdXBkYXRlZDsKIAkJfQogCiAJCS8qIFNsb3Qgbm90IHJl YWR5IHlldCwgbGV0J3MgYXR0ZW1wdCB0byBtYWtlIGl0IHN5bmMtcmVhZHkgbm93LiAqLwogCQlp ZiAoc2xvdC0+ZGF0YS5wZXJzaXN0ZW5jeSA9PSBSU19URU1QT1JBUlkpCiAJCXsKLQkJCXVwZGF0 ZV9hbmRfcGVyc2lzdF9sb2NhbF9zeW5jZWRfc2xvdChyZW1vdGVfc2xvdCwgcmVtb3RlX2RiaWQp OworCQkJc2xvdF91cGRhdGVkID0gdXBkYXRlX2FuZF9wZXJzaXN0X2xvY2FsX3N5bmNlZF9zbG90 KHJlbW90ZV9zbG90LAorCQkJCQkJCQkJCQkJCQkJCXJlbW90ZV9kYmlkKTsKIAkJfQogCiAJCS8q IFNsb3QgcmVhZHkgZm9yIHN5bmMsIHNvIHN5bmMgaXQuICovCkBAIC01MDEsNiArNTgzLDggQEAg c3luY2hyb25pemVfb25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVf ZGJpZCkKIAkJCXsKIAkJCQlSZXBsaWNhdGlvblNsb3RNYXJrRGlydHkoKTsKIAkJCQlSZXBsaWNh dGlvblNsb3RTYXZlKCk7CisKKwkJCQlzbG90X3VwZGF0ZWQgPSB0cnVlOwogCQkJfQogCQl9CiAJ fQpAQCAtNTEyLDcgKzU5Niw3IEBAIHN5bmNocm9uaXplX29uZV9zbG90KFJlbW90ZVNsb3QgKnJl bW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAKIAkJLyogU2tpcCBjcmVhdGluZyB0aGUgbG9j YWwgc2xvdCBpZiByZW1vdGVfc2xvdCBpcyBpbnZhbGlkYXRlZCBhbHJlYWR5ICovCiAJCWlmIChy ZW1vdGVfc2xvdC0+aW52YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORSkKLQkJCXJldHVybjsKKwkJ CXJldHVybiBmYWxzZTsKIAogCQkvKgogCQkgKiBXZSBjcmVhdGUgdGVtcG9yYXJ5IHNsb3RzIGlu c3RlYWQgb2YgZXBoZW1lcmFsIHNsb3RzIGhlcmUgYmVjYXVzZQpAQCAtNTQ5LDkgKzYzMywxMyBA QCBzeW5jaHJvbml6ZV9vbmVfc2xvdChSZW1vdGVTbG90ICpyZW1vdGVfc2xvdCwgT2lkIHJlbW90 ZV9kYmlkKQogCQlMV0xvY2tSZWxlYXNlKFByb2NBcnJheUxvY2spOwogCiAJCXVwZGF0ZV9hbmRf cGVyc2lzdF9sb2NhbF9zeW5jZWRfc2xvdChyZW1vdGVfc2xvdCwgcmVtb3RlX2RiaWQpOworCisJ CXNsb3RfdXBkYXRlZCA9IHRydWU7CiAJfQogCiAJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOwor CisJcmV0dXJuIHNsb3RfdXBkYXRlZDsKIH0KIAogLyoKQEAgLTU1OSw4ICs2NDcsMTAgQEAgc3lu Y2hyb25pemVfb25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJp ZCkKICAqCiAgKiBHZXRzIHRoZSBmYWlsb3ZlciBsb2dpY2FsIHNsb3RzIGluZm8gZnJvbSB0aGUg cHJpbWFyeSBzZXJ2ZXIgYW5kIHVwZGF0ZXMKICAqIHRoZSBzbG90cyBsb2NhbGx5LiBDcmVhdGVz IHRoZSBzbG90cyBpZiBub3QgcHJlc2VudCBvbiB0aGUgc3RhbmRieS4KKyAqCisgKiBSZXR1cm5z IFRSVUUgaWYgYW55IG9mIHRoZSBzbG90cyBnZXRzIHVwZGF0ZWQgaW4gdGhpcyBzeW5jLWN5Y2xl LgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHN5bmNocm9uaXplX3Nsb3RzKFdhbFJl Y2VpdmVyQ29ubiAqd3Jjb25uKQogewogI2RlZmluZSBTTE9UU1lOQ19DT0xVTU5fQ09VTlQgOQpA QCAtNTY5LDggKzY1OSwxNCBAQCBzeW5jaHJvbml6ZV9zbG90cyhXYWxSZWNlaXZlckNvbm4gKndy Y29ubikKIAogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlUdXBsZVRhYmxlU2xvdCAqdHVwc2xv dDsKLQlTdHJpbmdJbmZvRGF0YSBzOwogCUxpc3QJICAgKnJlbW90ZV9zbG90X2xpc3QgPSBOSUw7 CisJYm9vbAkJc29tZV9zbG90X3VwZGF0ZWQgPSBmYWxzZTsKKwlib29sCQlzdGFydGVkX3R4ID0g ZmFsc2U7CisJY29uc3QgY2hhciAqcXVlcnkgPSAiU0VMRUNUIHNsb3RfbmFtZSwgcGx1Z2luLCBj b25maXJtZWRfZmx1c2hfbHNuLCIKKwkJIiByZXN0YXJ0X2xzbiwgY2F0YWxvZ194bWluLCB0d29f cGhhc2UsIGZhaWxvdmVyLCIKKwkJIiBkYXRhYmFzZSwgY29uZmxpY3RfcmVhc29uIgorCQkiIEZS T00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyIKKwkJIiBXSEVSRSBmYWlsb3ZlciBh bmQgTk9UIHRlbXBvcmFyeSI7CiAKIAlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRl eCk7CiAJaWYgKFNsb3RTeW5jQ3R4LT5zeW5jaW5nKQpAQCAtNTg2LDIwICs2ODIsMTUgQEAgc3lu Y2hyb25pemVfc2xvdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiAKIAlzeW5jaW5nX3Nsb3Rz ID0gdHJ1ZTsKIAotCWluaXRTdHJpbmdJbmZvKCZzKTsKLQotCS8qIENvbnN0cnVjdCBxdWVyeSB0 byBmZXRjaCBzbG90cyB3aXRoIGZhaWxvdmVyIGVuYWJsZWQuICovCi0JYXBwZW5kU3RyaW5nSW5m bygmcywKLQkJCQkJICJTRUxFQ1Qgc2xvdF9uYW1lLCBwbHVnaW4sIGNvbmZpcm1lZF9mbHVzaF9s c24sIgotCQkJCQkgIiByZXN0YXJ0X2xzbiwgY2F0YWxvZ194bWluLCB0d29fcGhhc2UsIGZhaWxv dmVyLCIKLQkJCQkJICIgZGF0YWJhc2UsIGNvbmZsaWN0X3JlYXNvbiIKLQkJCQkJICIgRlJPTSBw Z19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIgotCQkJCQkgIiBXSEVSRSBmYWlsb3ZlciBh bmQgTk9UIHRlbXBvcmFyeSIpOworCS8qIFRoZSBzeXNjYWNoZSBhY2Nlc3MgaW4gd2FscmN2X2V4 ZWMoKSBuZWVkcyBhIHRyYW5zYWN0aW9uIGVudi4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0 ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRy dWU7CisJfQogCiAJLyogRXhlY3V0ZSB0aGUgcXVlcnkgKi8KLQlyZXMgPSB3YWxyY3ZfZXhlYyh3 cmNvbm4sIHMuZGF0YSwgU0xPVFNZTkNfQ09MVU1OX0NPVU5ULCBzbG90Um93KTsKLQlwZnJlZShz LmRhdGEpOwotCisJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25uLCBxdWVyeSwgU0xPVFNZTkNfQ09M VU1OX0NPVU5ULCBzbG90Um93KTsKIAlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExF UykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJtc2coImNvdWxkIG5vdCBmZXRjaCBmYWlsb3Zl ciBsb2dpY2FsIHNsb3RzIGluZm8gZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXI6ICVzIiwKQEAgLTY5 NCw3ICs3ODUsNyBAQCBzeW5jaHJvbml6ZV9zbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikK IAkJICovCiAJCUxvY2tTaGFyZWRPYmplY3QoRGF0YWJhc2VSZWxhdGlvbklkLCByZW1vdGVfZGJp ZCwgMCwgQWNjZXNzU2hhcmVMb2NrKTsKIAotCQlzeW5jaHJvbml6ZV9vbmVfc2xvdChyZW1vdGVf c2xvdCwgcmVtb3RlX2RiaWQpOworCQlzb21lX3Nsb3RfdXBkYXRlZCB8PSBzeW5jaHJvbml6ZV9v bmVfc2xvdChyZW1vdGVfc2xvdCwgcmVtb3RlX2RiaWQpOwogCiAJCVVubG9ja1NoYXJlZE9iamVj dChEYXRhYmFzZVJlbGF0aW9uSWQsIHJlbW90ZV9kYmlkLCAwLCBBY2Nlc3NTaGFyZUxvY2spOwog CX0KQEAgLTcwNCwxMSArNzk1LDE2IEBAIHN5bmNocm9uaXplX3Nsb3RzKFdhbFJlY2VpdmVyQ29u biAqd3Jjb25uKQogCiAJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOwogCisJaWYgKHN0YXJ0ZWRf dHgpCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCiAJU3BpbkxvY2tBY3F1aXJlKCZT bG90U3luY0N0eC0+bXV0ZXgpOwogCVNsb3RTeW5jQ3R4LT5zeW5jaW5nID0gZmFsc2U7CiAJU3Bp bkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCiAJc3luY2luZ19zbG90cyA9IGZh bHNlOworCisJcmV0dXJuIHNvbWVfc2xvdF91cGRhdGVkOwogfQogCiAvKgpAQCAtNzI4LDYgKzgy NCw3IEBAIHZhbGlkYXRlX3JlbW90ZV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQogCVR1 cGxlVGFibGVTbG90ICp0dXBzbG90OwogCWJvb2wJCXJlbW90ZV9pbl9yZWNvdmVyeTsKIAlib29s CQlwcmltYXJ5X3Nsb3RfdmFsaWQ7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCiAJaW5p dFN0cmluZ0luZm8oJmNtZCk7CiAJYXBwZW5kU3RyaW5nSW5mbygmY21kLApAQCAtNzM2LDYgKzgz MywxMyBAQCB2YWxpZGF0ZV9yZW1vdGVfaW5mbyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIAkJ CQkJICIgV0hFUkUgc2xvdF90eXBlPSdwaHlzaWNhbCcgQU5EIHNsb3RfbmFtZT0lcyIsCiAJCQkJ CSBxdW90ZV9saXRlcmFsX2NzdHIoUHJpbWFyeVNsb3ROYW1lKSk7CiAKKwkvKiBUaGUgc3lzY2Fj aGUgYWNjZXNzIGluIHdhbHJjdl9leGVjKCkgbmVlZHMgYSB0cmFuc2FjdGlvbiBlbnYuICovCisJ aWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOworCX0KKwogCXJlcyA9IHdhbHJjdl9leGVjKHdyY29u biwgY21kLmRhdGEsIFBSSU1BUllfSU5GT19PVVRQVVRfQ09MX0NPVU5ULCBzbG90Um93KTsKIAlw ZnJlZShjbWQuZGF0YSk7CiAKQEAgLTc3MSwxNyArODc1LDQ4IEBAIHZhbGlkYXRlX3JlbW90ZV9p bmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQogCiAJRXhlY0NsZWFyVHVwbGUodHVwc2xvdCk7 CiAJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogfQogCiAvKgotICogQ2hlY2sgYWxsIG5lY2Vzc2FyeSBH VUNzIGZvciBzbG90IHN5bmNocm9uaXphdGlvbiBhcmUgc2V0Ci0gKiBhcHByb3ByaWF0ZWx5LCBv dGhlcndpc2UsIHJhaXNlIEVSUk9SLgorICogQ2hlY2tzIGlmIGRibmFtZSBpcyBzcGVjaWZpZWQg aW4gJ3ByaW1hcnlfY29ubmluZm8nLgorICoKKyAqIEVycm9yIG91dCBpZiBub3Qgc3BlY2lmaWVk IG90aGVyd2lzZSByZXR1cm4gaXQuCiAgKi8KLXZvaWQKLVZhbGlkYXRlU2xvdFN5bmNQYXJhbXMo dm9pZCkKK2NoYXIgKgorQ2hlY2tEYm5hbWVJbkNvbm5pbmZvKHZvaWQpCiB7CiAJY2hhcgkgICAq ZGJuYW1lOwogCisJLyoKKwkgKiBUaGUgc2xvdCBzeW5jaHJvbml6YXRpb24gbmVlZHMgYSBkYXRh YmFzZSBjb25uZWN0aW9uIGZvciB3YWxyY3ZfZXhlYyB0bworCSAqIHdvcmsuCisJICovCisJZGJu YW1lID0gd2FscmN2X2dldF9kYm5hbWVfZnJvbV9jb25uaW5mbyhQcmltYXJ5Q29ubkluZm8pOwor CWlmIChkYm5hbWUgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKworCQkvKgorCQkgKiB0cmFu c2xhdG9yOiAnZGJuYW1lJyBpcyBhIHNwZWNpZmljIG9wdGlvbjsgJXMgaXMgYSBHVUMgdmFyaWFi bGUKKwkJICogbmFtZQorCQkgKi8KKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCWVycm1zZygiYmFkIGNvbmZpZ3VyYXRpb24gZm9yIHNsb3Qgc3luY2hy b25pemF0aW9uIiksCisJCQkJZXJyaGludCgiJ2RibmFtZScgbXVzdCBiZSBzcGVjaWZpZWQgaW4g XCIlc1wiLiIsICJwcmltYXJ5X2Nvbm5pbmZvIikpOworCisJcmV0dXJuIGRibmFtZTsKK30KKwor LyoKKyAqIFJldHVybiB0cnVlIGlmIGFsbCBuZWNlc3NhcnkgR1VDcyBmb3Igc2xvdCBzeW5jaHJv bml6YXRpb24gYXJlIHNldAorICogYXBwcm9wcmlhdGVseSwgb3RoZXJ3aXNlLCByZXR1cm4gZmFs c2UuCisgKi8KK2Jvb2wKK1ZhbGlkYXRlU2xvdFN5bmNQYXJhbXMoaW50IGVsZXZlbCkKK3sKKwog CS8qCiAJICogQSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90KHByaW1hcnlfc2xvdF9uYW1lKSBp cyByZXF1aXJlZCBvbiB0aGUKIAkgKiBwcmltYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSByb3dzIG5l ZWRlZCBieSB0aGUgc3RhbmRieSBhcmUgbm90IHJlbW92ZWQKQEAgLTc4OSwxMSArOTI0LDE0IEBA IFZhbGlkYXRlU2xvdFN5bmNQYXJhbXModm9pZCkKIAkgKiBiZSBpbnZhbGlkYXRlZC4KIAkgKi8K IAlpZiAoUHJpbWFyeVNsb3ROYW1lID09IE5VTEwgfHwgKlByaW1hcnlTbG90TmFtZSA9PSAnXDAn KQotCQllcmVwb3J0KEVSUk9SLAorCXsKKwkJZXJlcG9ydChlbGV2ZWwsCiAJCS8qIHRyYW5zbGF0 b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5hbWUgKi8KIAkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCWVycm1zZygiYmFkIGNvbmZpZ3VyYXRpb24gZm9y IHNsb3Qgc3luY2hyb25pemF0aW9uIiksCiAJCQkJZXJyaGludCgiXCIlc1wiIG11c3QgYmUgZGVm aW5lZC4iLCAicHJpbWFyeV9zbG90X25hbWUiKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CiAKIAkv KgogCSAqIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG11c3QgYmUgZW5hYmxlZCB0byBjb29wZXJhdGUg d2l0aCB0aGUgcGh5c2ljYWwKQEAgLTgwMSw0OSArOTM5LDQ4MyBAQCBWYWxpZGF0ZVNsb3RTeW5j UGFyYW1zKHZvaWQpCiAJICogY2F0YWxvZ194bWluIHZhbHVlcyBvbiB0aGUgc3RhbmRieS4KIAkg Ki8KIAlpZiAoIWhvdF9zdGFuZGJ5X2ZlZWRiYWNrKQotCQllcmVwb3J0KEVSUk9SLAorCXsKKwkJ ZXJlcG9ydChlbGV2ZWwsCiAJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5h bWUgKi8KIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJ CWVycm1zZygiYmFkIGNvbmZpZ3VyYXRpb24gZm9yIHNsb3Qgc3luY2hyb25pemF0aW9uIiksCiAJ CQkJZXJyaGludCgiXCIlc1wiIG11c3QgYmUgZW5hYmxlZC4iLCAiaG90X3N0YW5kYnlfZmVlZGJh Y2siKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CiAKIAkvKiBMb2dpY2FsIHNsb3Qgc3luYy9jcmVh dGlvbiByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9naWNhbC4gKi8KIAlpZiAod2FsX2xldmVsIDwg V0FMX0xFVkVMX0xPR0lDQUwpCi0JCWVyZXBvcnQoRVJST1IsCisJeworCQllcmVwb3J0KGVsZXZl bCwKIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCWVy cm1zZygiYmFkIGNvbmZpZ3VyYXRpb24gZm9yIHNsb3Qgc3luY2hyb25pemF0aW9uIiksCiAJCQkJ ZXJyaGludCgiXCJ3YWxfbGV2ZWxcIiBtdXN0IGJlID49IGxvZ2ljYWwuIikpOworCQlyZXR1cm4g ZmFsc2U7CisJfQogCiAJLyoKIAkgKiBUaGUgcHJpbWFyeV9jb25uaW5mbyBpcyByZXF1aXJlZCB0 byBtYWtlIGNvbm5lY3Rpb24gdG8gcHJpbWFyeSBmb3IKIAkgKiBnZXR0aW5nIHNsb3RzIGluZm9y bWF0aW9uLgogCSAqLwogCWlmIChQcmltYXJ5Q29ubkluZm8gPT0gTlVMTCB8fCAqUHJpbWFyeUNv bm5JbmZvID09ICdcMCcpCi0JCWVyZXBvcnQoRVJST1IsCisJeworCQllcmVwb3J0KGVsZXZlbCwK IAkJLyogdHJhbnNsYXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLwogCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJZXJybXNnKCJiYWQgY29u ZmlndXJhdGlvbiBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24iKSwKIAkJCQllcnJoaW50KCJcIiVz XCIgbXVzdCBiZSBkZWZpbmVkLiIsICJwcmltYXJ5X2Nvbm5pbmZvIikpOworCQlyZXR1cm4gZmFs c2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBSZS1yZWFkIHRoZSBjb25maWcg ZmlsZS4KKyAqCisgKiBFeGl0IGlmIGFueSBvZiB0aGUgc2xvdCBzeW5jIEdVQ3MgaGF2ZSBjaGFu Z2VkLiBUaGUgcG9zdG1hc3RlciB3aWxsCisgKiByZXN0YXJ0IGl0LgorICovCitzdGF0aWMgdm9p ZAorc2xvdHN5bmNfcmVyZWFkX2NvbmZpZyh2b2lkKQoreworCWNoYXIJICAgKm9sZF9wcmltYXJ5 X2Nvbm5pbmZvID0gcHN0cmR1cChQcmltYXJ5Q29ubkluZm8pOworCWNoYXIJICAgKm9sZF9wcmlt YXJ5X3Nsb3RuYW1lID0gcHN0cmR1cChQcmltYXJ5U2xvdE5hbWUpOworCWJvb2wJCW9sZF9zeW5j X3JlcGxpY2F0aW9uX3Nsb3RzID0gc3luY19yZXBsaWNhdGlvbl9zbG90czsKKwlib29sCQlvbGRf aG90X3N0YW5kYnlfZmVlZGJhY2sgPSBob3Rfc3RhbmRieV9mZWVkYmFjazsKKwlib29sCQljb25u aW5mb19jaGFuZ2VkOworCWJvb2wJCXByaW1hcnlfc2xvdG5hbWVfY2hhbmdlZDsKKworCUFzc2Vy dChzeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKTsKKworCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKKwlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKworCWNvbm5pbmZvX2NoYW5nZWQg PSBzdHJjbXAob2xkX3ByaW1hcnlfY29ubmluZm8sIFByaW1hcnlDb25uSW5mbykgIT0gMDsKKwlw cmltYXJ5X3Nsb3RuYW1lX2NoYW5nZWQgPSBzdHJjbXAob2xkX3ByaW1hcnlfc2xvdG5hbWUsIFBy aW1hcnlTbG90TmFtZSkgIT0gMDsKKwlwZnJlZShvbGRfcHJpbWFyeV9jb25uaW5mbyk7CisJcGZy ZWUob2xkX3ByaW1hcnlfc2xvdG5hbWUpOworCisJaWYgKG9sZF9zeW5jX3JlcGxpY2F0aW9uX3Ns b3RzICE9IHN5bmNfcmVwbGljYXRpb25fc2xvdHMpCisJeworCQllcmVwb3J0KExPRywKKwkJLyog dHJhbnNsYXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLworCQkJCWVycm1zZygic2xv dCBzeW5jIHdvcmtlciB3aWxsIHNodXRkb3duIGJlY2F1c2UgJXMgaXMgZGlzYWJsZWQiLCAic3lu Y19yZXBsaWNhdGlvbl9zbG90cyIpKTsKKwkJcHJvY19leGl0KDApOworCX0KKworCWlmIChjb25u aW5mb19jaGFuZ2VkIHx8CisJCXByaW1hcnlfc2xvdG5hbWVfY2hhbmdlZCB8fAorCQkob2xkX2hv dF9zdGFuZGJ5X2ZlZWRiYWNrICE9IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrKSkKKwl7CisJCWVyZXBv cnQoTE9HLAorCQkJCWVycm1zZygic2xvdCBzeW5jIHdvcmtlciB3aWxsIHJlc3RhcnQgYmVjYXVz ZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiKSk7CisKKwkJLyoKKwkJICogUmVzZXQgdGhlIGxhc3Qt c3RhcnQgdGltZSBmb3IgdGhpcyB3b3JrZXIgc28gdGhhdCB0aGUgcG9zdG1hc3RlcgorCQkgKiBj YW4gcmVzdGFydCBpdCB3aXRob3V0IHdhaXRpbmcgZm9yIFNMT1RTWU5DX1JFU1RBUlRfSU5URVJW QUxfU0VDLgorCQkgKi8KKwkJU2xvdFN5bmNDdHgtPmxhc3Rfc3RhcnRfdGltZSA9IDA7CisKKwkJ cHJvY19leGl0KDApOworCX0KKworfQorCisvKgorICogSW50ZXJydXB0IGhhbmRsZXIgZm9yIG1h aW4gbG9vcCBvZiBzbG90IHN5bmMgd29ya2VyLgorICovCitzdGF0aWMgdm9pZAorUHJvY2Vzc1Ns b3RTeW5jSW50ZXJydXB0cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKK3sKKwlDSEVDS19GT1Jf SU5URVJSVVBUUygpOworCisJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJeworCQllcmVw b3J0KExPRywKKwkJCQllcnJtc2coInNsb3Qgc3luYyB3b3JrZXIgaXMgc2h1dHRpbmcgZG93biBv biByZWNlaXZpbmcgU0lHSU5UIikpOworCisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKKwkJc2xvdHN5bmNfcmVyZWFkX2NvbmZpZygpOworfQorCisvKgor ICogQ2xlYW51cCBmdW5jdGlvbiBmb3Igc2xvdHN5bmMgd29ya2VyLgorICoKKyAqIENhbGxlZCBv biBzbG90c3luYyB3b3JrZXIgZXhpdC4KKyAqLworc3RhdGljIHZvaWQKK3Nsb3RzeW5jX3dvcmtl cl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTcGluTG9ja0FjcXVpcmUoJlNsb3RT eW5jQ3R4LT5tdXRleCk7CisJU2xvdFN5bmNDdHgtPnBpZCA9IEludmFsaWRQaWQ7CisJU3Bpbkxv Y2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOworfQorCisvKgorICogU2xlZXAgZm9yIGxv bmcgZW5vdWdoIHRoYXQgd2UgYmVsaWV2ZSBpdCdzIGxpa2VseSB0aGF0IHRoZSBzbG90cyBvbiBw cmltYXJ5CisgKiBnZXQgdXBkYXRlZC4KKyAqCisgKiBJZiB0aGVyZSBpcyBubyBzbG90IGFjdGl2 aXR5IHRoZSB3YWl0IHRpbWUgYmV0d2VlbiBzeW5jLWN5Y2xlcyB3aWxsIGRvdWJsZQorICogKHRv IGEgbWF4aW11bSBvZiAzMHMpLiBJZiB0aGVyZSBpcyBzb21lIHNsb3QgYWN0aXZpdHkgdGhlIHdh aXQgdGltZSBiZXR3ZWVuCisgKiBzeW5jLWN5Y2xlcyBpcyByZXNldCB0byB0aGUgbWluaW11bSAo MjAwbXMpLgorICovCitzdGF0aWMgdm9pZAord2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNv bWVfc2xvdF91cGRhdGVkKQoreworCWludAkJCXJjOworCisJaWYgKCFzb21lX3Nsb3RfdXBkYXRl ZCkKKwl7CisJCS8qCisJCSAqIE5vIHNsb3RzIHdlcmUgdXBkYXRlZCwgc28gZG91YmxlIHRoZSBz bGVlcCB0aW1lLCBidXQgbm90IGJleW9uZCB0aGUKKwkJICogbWF4aW11bSBhbGxvd2FibGUgdmFs dWUuCisJCSAqLworCQlzbGVlcF9tcyA9IE1pbihzbGVlcF9tcyAqIDIsIE1BWF9XT1JLRVJfTkFQ VElNRV9NUyk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFNvbWUgc2xvdHMgd2VyZSB1cGRh dGVkIHNpbmNlIHRoZSBsYXN0IHNsZWVwLCBzbyByZXNldCB0aGUgc2xlZXAKKwkJICogdGltZS4K KwkJICovCisJCXNsZWVwX21zID0gTUlOX1dPUktFUl9OQVBUSU1FX01TOworCX0KKworCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCisJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJICAgc2xlZXBfbXMsCisJCQkJICAgV0FJVF9FVkVOVF9S RVBMX1NMT1RTWU5DX01BSU4pOworCisJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlSZXNldExh dGNoKE15TGF0Y2gpOworfQorCisvKgorICogVGhlIG1haW4gbG9vcCBvZiBvdXIgd29ya2VyIHBy b2Nlc3MuCisgKgorICogSXQgY29ubmVjdHMgdG8gdGhlIHByaW1hcnkgc2VydmVyLCBmZXRjaGVz IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMKKyAqIGluZm9ybWF0aW9uIHBlcmlvZGljYWxseSBpbiBv cmRlciB0byBjcmVhdGUgYW5kIHN5bmMgdGhlIHNsb3RzLgorICovCitOT05fRVhFQ19TVEFUSUMg dm9pZAorUmVwbFNsb3RTeW5jV29ya2VyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorewor CVdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uID0gTlVMTDsKKwljaGFyCSAgICpkYm5hbWU7CisJY2hh cgkgICAqZXJyOworCXNpZ2ptcF9idWYJbG9jYWxfc2lnam1wX2J1ZjsKKwlTdHJpbmdJbmZvRGF0 YSBhcHBfbmFtZTsKKworCWFtX3Nsb3RzeW5jX3dvcmtlciA9IHRydWU7CisKKwlNeUJhY2tlbmRU eXBlID0gQl9TTE9UU1lOQ19XT1JLRVI7CisKKwlpbml0X3BzX2Rpc3BsYXkoTlVMTCk7CisKKwlT ZXRQcm9jZXNzaW5nTW9kZShJbml0UHJvY2Vzc2luZyk7CiAKIAkvKgotCSAqIFRoZSBzbG90IHN5 bmNocm9uaXphdGlvbiBuZWVkcyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHdhbHJjdl9leGVj IHRvCi0JICogd29yay4KKwkgKiBDcmVhdGUgYSBwZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGlu IHNoYXJlZCBtZW1vcnkuICBXZSBtdXN0IGRvIHRoaXMKKwkgKiBiZWZvcmUgd2UgYWNjZXNzIGFu eSBzaGFyZWQgbWVtb3J5LgogCSAqLwotCWRibmFtZSA9IHdhbHJjdl9nZXRfZGJuYW1lX2Zyb21f Y29ubmluZm8oUHJpbWFyeUNvbm5JbmZvKTsKLQlpZiAoZGJuYW1lID09IE5VTEwpCi0JCWVyZXBv cnQoRVJST1IsCisJSW5pdFByb2Nlc3MoKTsKKworCS8qCisJICogRWFybHkgaW5pdGlhbGl6YXRp b24uCisJICovCisJQmFzZUluaXQoKTsKKworCUFzc2VydChTbG90U3luY0N0eCAhPSBOVUxMKTsK KworCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKKwlBc3NlcnQoU2xvdFN5 bmNDdHgtPnBpZCA9PSBJbnZhbGlkUGlkKTsKKworCS8qCisJICogU3RhcnR1cCBwcm9jZXNzIHNp Z25hbGVkIHRoZSBzbG90IHN5bmMgd29ya2VyIHRvIHN0b3AsIHNvIGlmIG1lYW53aGlsZQorCSAq IHBvc3RtYXN0ZXIgZW5kZWQgdXAgc3RhcnRpbmcgdGhlIHdvcmtlciBhZ2FpbiwgZXhpdC4KKwkg Ki8KKwlpZiAoU2xvdFN5bmNDdHgtPnN0b3BTaWduYWxlZCkKKwl7CisJCVNwaW5Mb2NrUmVsZWFz ZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKKwkJcHJvY19leGl0KDApOworCX0KKworCS8qIEFkdmVy dGlzZSBvdXIgUElEIHNvIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBjYW4ga2lsbCB1cyBvbiBw cm9tb3Rpb24gKi8KKwlTbG90U3luY0N0eC0+cGlkID0gTXlQcm9jUGlkOworCVNwaW5Mb2NrUmVs ZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKKworCWVyZXBvcnQoTE9HLCBlcnJtc2coInNsb3Qg c3luYyB3b3JrZXIgc3RhcnRlZCIpKTsKKworCS8qIFJlZ2lzdGVyIGl0IGFzIHNvb24gYXMgU2xv dFN5bmNDdHgtPnBpZCBpcyBpbml0aWFsaXplZC4gKi8KKwliZWZvcmVfc2htZW1fZXhpdChzbG90 c3luY193b3JrZXJfb25leGl0LCAoRGF0dW0pIDApOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRs aW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsK KwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOworCXBx c2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhh bmRsZXIpOworCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsK KwlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsKKwlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdO KTsKKwlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKKworCS8qCisJICogRXN0YWJsaXNoZXMg U0lHQUxSTSBoYW5kbGVyIGFuZCBpbml0aWFsaXplIHRpbWVvdXQgbW9kdWxlLiBJdCBpcyBuZWVk ZWQKKwkgKiBieSBJbml0UG9zdGdyZXMgdG8gcmVnaXN0ZXIgZGlmZmVyZW50IHRpbWVvdXRzLgor CSAqLworCUluaXRpYWxpemVUaW1lb3V0cygpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lm aWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwor CisJLyoKKwkgKiBJZiBhbiBleGNlcHRpb24gaXMgZW5jb3VudGVyZWQsIHByb2Nlc3NpbmcgcmVz dW1lcyBoZXJlLgorCSAqCisJICogV2UganVzdCBuZWVkIHRvIGNsZWFuIHVwLCByZXBvcnQgdGhl IGVycm9yLCBhbmQgZ28gYXdheS4KKwkgKgorCSAqIElmIHdlIGRvIG5vdCBoYXZlIHRoaXMgaGFu ZGxpbmcgaGVyZSwgdGhlbiBzaW5jZSB0aGlzIHdvcmtlciBwcm9jZXNzCisJICogb3BlcmF0ZXMg YXQgdGhlIGJvdHRvbSBvZiB0aGUgZXhjZXB0aW9uIHN0YWNrLCBFUlJPUnMgdHVybiBpbnRvIEZB VEFMcy4KKwkgKiBUaGVyZWZvcmUsIHdlIGNyZWF0ZSBvdXIgb3duIGV4Y2VwdGlvbiBoYW5kbGVy IHRvIGNhdGNoIEVSUk9Scy4KKwkgKi8KKwlpZiAoc2lnc2V0am1wKGxvY2FsX3NpZ2ptcF9idWYs IDEpICE9IDApCisJeworCQkvKiBzaW5jZSBub3QgdXNpbmcgUEdfVFJZLCBtdXN0IHJlc2V0IGVy cm9yIHN0YWNrIGJ5IGhhbmQgKi8KKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CisKKwkJ LyogUHJldmVudHMgaW50ZXJydXB0cyB3aGlsZSBjbGVhbmluZyB1cCAqLworCQlIT0xEX0lOVEVS UlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIGVycm9yIHRvIHRoZSBzZXJ2ZXIgbG9nICovCisJ CUVtaXRFcnJvclJlcG9ydCgpOwogCiAJCS8qCi0JCSAqIHRyYW5zbGF0b3I6ICdkYm5hbWUnIGlz IGEgc3BlY2lmaWMgb3B0aW9uOyAlcyBpcyBhIEdVQyB2YXJpYWJsZQotCQkgKiBuYW1lCisJCSAq IFdlIGNhbiBub3cgZ28gYXdheS4gIE5vdGUgdGhhdCBiZWNhdXNlIHdlIGNhbGxlZCBJbml0UHJv Y2VzcywgYQorCQkgKiBjYWxsYmFjayB3YXMgcmVnaXN0ZXJlZCB0byBkbyBQcm9jS2lsbCwgd2hp Y2ggd2lsbCBjbGVhbiB1cAorCQkgKiBuZWNlc3Nhcnkgc3RhdGUuCiAJCSAqLwotCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJZXJybXNnKCJiYWQgY29u ZmlndXJhdGlvbiBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24iKSwKLQkJCQllcnJoaW50KCInZGJu YW1lJyBtdXN0IGJlIHNwZWNpZmllZCBpbiBcIiVzXCIuIiwgInByaW1hcnlfY29ubmluZm8iKSk7 CisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwkvKiBXZSBjYW4gbm93IGhhbmRsZSBlcmVwb3J0KEVS Uk9SKSAqLworCVBHX2V4Y2VwdGlvbl9zdGFjayA9ICZsb2NhbF9zaWdqbXBfYnVmOworCisJLyoK KwkgKiBVbmJsb2NrIHNpZ25hbHMgKHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhlIHBvc3RtYXN0 ZXIgZm9ya2VkIHVzKQorCSAqLworCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmVW5CbG9ja1Np ZywgTlVMTCk7CisKKwlkYm5hbWUgPSBDaGVja0RibmFtZUluQ29ubmluZm8oKTsKKworCS8qCisJ ICogQ29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIGluIHByaW1h cnlfY29ubmluZm8uIFdlCisJICogbmVlZCBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHdhbHJj dl9leGVjIHRvIHdvcmsgd2hpY2ggd2UgdXNlIHRvCisJICogZmV0Y2ggc2xvdCBpbmZvcm1hdGlv biBmcm9tIHRoZSByZW1vdGUgbm9kZS4gU2VlIGNvbW1lbnRzIGF0b3AKKwkgKiBsaWJwcXJjdl9l eGVjLgorCSAqLworCUluaXRQb3N0Z3JlcyhkYm5hbWUsIEludmFsaWRPaWQsIE5VTEwsIEludmFs aWRPaWQsIDAsIE5VTEwpOworCisJU2V0UHJvY2Vzc2luZ01vZGUoTm9ybWFsUHJvY2Vzc2luZyk7 CisKKwlpbml0U3RyaW5nSW5mbygmYXBwX25hbWUpOworCWlmIChjbHVzdGVyX25hbWVbMF0pCisJ CWFwcGVuZFN0cmluZ0luZm8oJmFwcF9uYW1lLCAiJXNfJXMiLCBjbHVzdGVyX25hbWUsICJzbG90 c3luY3dvcmtlciIpOworCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICIlcyIs ICJzbG90c3luY3dvcmtlciIpOworCisJLyoKKwkgKiBFc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24g dG8gdGhlIHByaW1hcnkgc2VydmVyIGZvciBzbG90CisJICogc3luY2hyb25pemF0aW9uLgorCSAq LworCXdyY29ubiA9IHdhbHJjdl9jb25uZWN0KFByaW1hcnlDb25uSW5mbywgZmFsc2UsIGZhbHNl LCBmYWxzZSwKKwkJCQkJCQlhcHBfbmFtZS5kYXRhLCAmZXJyKTsKKwlwZnJlZShhcHBfbmFtZS5k YXRhKTsKKworCWlmICghd3Jjb25uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJS Q09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAorCQkJCWVycm1zZygiY291bGQgbm90IGNvbm5lY3Qg dG8gdGhlIHByaW1hcnkgc2VydmVyOiAlcyIsIGVycikpOworCisJLyoKKwkgKiBSZWdpc3RlciB0 aGUgZmFpbHVyZSBjYWxsYmFjayBvbmNlIHdlIGhhdmUgdGhlIGNvbm5lY3Rpb24uCisJICoKKwkg KiBYWFg6IFRoaXMgY2FuIGJlIGNvbWJpbmVkIHdpdGggcHJldmlvdXMgc3VjaCBjbGVhbnVwIHJl Z2lzdHJhdGlvbiBvZgorCSAqIHNsb3RzeW5jX3dvcmtlcl9vbmV4aXQoKSBidXQgdGhhdCB3aWxs IG5lZWQgdGhlIGNvbm5lY3Rpb24gdG8gYmUgbWFkZQorCSAqIGdsb2JhbCBhbmQgd2Ugd2FudCB0 byBhdm9pZCBpbnRyb2R1Y2luZyBnbG9iYWwgZm9yIHRoaXMgcHVycG9zZS4KKwkgKi8KKwliZWZv cmVfc2htZW1fZXhpdChzbG90c3luY19mYWlsdXJlX2NhbGxiYWNrLCBQb2ludGVyR2V0RGF0dW0o d3Jjb25uKSk7CisKKwkvKgorCSAqIFVzaW5nIHRoZSBzcGVjaWZpZWQgcHJpbWFyeSBzZXJ2ZXIg Y29ubmVjdGlvbiwgY2hlY2sgdGhhdCB3ZSBhcmUgbm90IGEKKwkgKiBjYXNjYWRpbmcgc3RhbmRi eSBhbmQgc2xvdCBjb25maWd1cmVkIGluICdwcmltYXJ5X3Nsb3RfbmFtZScgZXhpc3RzIG9uCisJ ICogdGhlIHByaW1hcnkgc2VydmVyLgorCSAqLworCXZhbGlkYXRlX3JlbW90ZV9pbmZvKHdyY29u bik7CisKKwkvKiBNYWluIGxvb3AgdG8gc3luY2hyb25pemUgc2xvdHMgKi8KKwlmb3IgKDs7KQor CXsKKwkJYm9vbAkJc29tZV9zbG90X3VwZGF0ZWQgPSBmYWxzZTsKKworCQlQcm9jZXNzU2xvdFN5 bmNJbnRlcnJ1cHRzKHdyY29ubik7CisKKwkJc29tZV9zbG90X3VwZGF0ZWQgPSBzeW5jaHJvbml6 ZV9zbG90cyh3cmNvbm4pOworCisJCXdhaXRfZm9yX3Nsb3RfYWN0aXZpdHkoc29tZV9zbG90X3Vw ZGF0ZWQpOworCX0KKworCS8qCisJICogVGhlIHNsb3Qgc3luYyB3b3JrZXIgY2FuJ3QgZ2V0IGhl cmUgYmVjYXVzZSBpdCB3aWxsIG9ubHkgc3RvcCB3aGVuIGl0CisJICogcmVjZWl2ZXMgYSBTSUdJ TlQgZnJvbSB0aGUgc3RhcnR1cCBwcm9jZXNzLCBvciB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLgor CSAqLworCUFzc2VydChmYWxzZSk7Cit9CisKKy8qCisgKiBNYWluIGVudHJ5IHBvaW50IGZvciBz bG90IHN5bmMgd29ya2VyIHByb2Nlc3MsIHRvIGJlIGNhbGxlZCBmcm9tIHRoZQorICogcG9zdG1h c3Rlci4KKyAqLworaW50CitTdGFydFNsb3RTeW5jV29ya2VyKHZvaWQpCit7CisJcGlkX3QJCXBp ZDsKKworI2lmZGVmIEVYRUNfQkFDS0VORAorCXN3aXRjaCAoKHBpZCA9IHNsb3RzeW5jd29ya2Vy X2ZvcmtleGVjKCkpKQorCXsKKyNlbHNlCisJc3dpdGNoICgocGlkID0gZm9ya19wcm9jZXNzKCkp KQorCXsKKwkJY2FzZSAwOgorCQkJLyogaW4gcG9zdG1hc3RlciBjaGlsZCAuLi4gKi8KKwkJCUlu aXRQb3N0bWFzdGVyQ2hpbGQoKTsKKworCQkJLyogQ2xvc2UgdGhlIHBvc3RtYXN0ZXIncyBzb2Nr ZXRzICovCisJCQlDbG9zZVBvc3RtYXN0ZXJQb3J0cyhmYWxzZSk7CisKKwkJCVJlcGxTbG90U3lu Y1dvcmtlck1haW4oMCwgTlVMTCk7CisJCQlicmVhazsKKyNlbmRpZgorCQljYXNlIC0xOgorCQkJ ZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmb3JrIHNsb3Qgc3luYyB3b3Jr ZXIgcHJvY2VzczogJW0iKSkpOworCQkJcmV0dXJuIDA7CisKKwkJZGVmYXVsdDoKKwkJCXJldHVy biAoaW50KSBwaWQ7CisJfQorCisJLyogc2hvdWxkbid0IGdldCBoZXJlICovCisJcmV0dXJuIDA7 Cit9CisKKyNpZmRlZiBFWEVDX0JBQ0tFTkQKKy8qCisgKiBUaGUgZm9ya2V4ZWMgcm91dGluZSBm b3IgdGhlIHNsb3Qgc3luYyB3b3JrZXIgcHJvY2Vzcy4KKyAqCisgKiBGb3JtYXQgdXAgdGhlIGFy Z2xpc3QsIHRoZW4gZm9yayBhbmQgZXhlYy4KKyAqLworc3RhdGljIHBpZF90CitzbG90c3luY3dv cmtlcl9mb3JrZXhlYyh2b2lkKQoreworCWNoYXIJICAgKmF2WzEwXTsKKwlpbnQJCQlhYyA9IDA7 CisKKwlhdlthYysrXSA9ICJwb3N0Z3JlcyI7CisJYXZbYWMrK10gPSAiLS1mb3Jrc3N3b3JrZXIi OworCWF2W2FjKytdID0gTlVMTDsJCQkvKiBmaWxsZWQgaW4gYnkgcG9zdG1hc3Rlcl9mb3JrZXhl YyAqLworCWF2W2FjXSA9IE5VTEw7CisKKwlBc3NlcnQoYWMgPCBsZW5ndGhvZihhdikpOworCisJ cmV0dXJuIHBvc3RtYXN0ZXJfZm9ya2V4ZWMoYWMsIGF2KTsKK30KKyNlbmRpZgorCisvKgorICog U2h1dCBkb3duIHRoZSBzbG90IHN5bmMgd29ya2VyLgorICovCit2b2lkCitTaHV0RG93blNsb3RT eW5jKHZvaWQpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY0N0eC0+bXV0ZXgpOworCisJ U2xvdFN5bmNDdHgtPnN0b3BTaWduYWxlZCA9IHRydWU7CisKKwlpZiAoU2xvdFN5bmNDdHgtPnBp ZCA9PSBJbnZhbGlkUGlkKQorCXsKKwkJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0 ZXgpOworCQlyZXR1cm47CisJfQorCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4 KTsKKworCWtpbGwoU2xvdFN5bmNDdHgtPnBpZCwgU0lHSU5UKTsKKworCS8qIFdhaXQgZm9yIGl0 IHRvIGRpZSAqLworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKworCQkvKiBXYWl0IGEgYml0 LCB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcgKi8KKwkJcmMgPSBXYWl0TGF0 Y2goTXlMYXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9SRVBMX1NMT1RTWU5DX1NIVVRE T1dOKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJU3BpbkxvY2tBY3F1 aXJlKCZTbG90U3luY0N0eC0+bXV0ZXgpOworCisJCS8qIElzIGl0IGdvbmU/ICovCisJCWlmIChT bG90U3luY0N0eC0+cGlkID09IEludmFsaWRQaWQpCisJCQlicmVhazsKKworCQlTcGluTG9ja1Jl bGVhc2UoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CisJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZTbG90 U3luY0N0eC0+bXV0ZXgpOwogfQogCiAvKgotICogSXMgY3VycmVudCBwcm9jZXNzIHN5bmNpbmcg cmVwbGljYXRpb24gc2xvdHMgPworICogU2xvdFN5bmNXb3JrZXJDYW5SZXN0YXJ0CisgKgorICog UmV0dXJucyB0cnVlIGlmIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgKFNMT1RTWU5DX1JFU1RBUlRf SU5URVJWQUxfU0VDKQorICogc2luY2UgaXQgd2FzIGxhdW5jaGVkIGxhc3QuIE90aGVyd2lzZSBy ZXR1cm5zIGZhbHNlLgorICoKKyAqIFRoaXMgaXMgYSBzYWZldHkgdmFsdmUgdG8gcHJvdGVjdCBh Z2FpbnN0IGNvbnRpbnVvdXMgcmVzcGF3biBhdHRlbXB0cyBpZiB0aGUKKyAqIHdvcmtlciBpcyBk eWluZyBpbW1lZGlhdGVseSBhdCBsYXVuY2guIE5vdGUgdGhhdCBzaW5jZSB3ZSB3aWxsIHJldHJ5 IHRvCisgKiBsYXVuY2ggdGhlIHdvcmtlciBmcm9tIHRoZSBwb3N0bWFzdGVyIG1haW4gbG9vcCwg d2Ugd2lsbCBnZXQgYW5vdGhlcgorICogY2hhbmNlIGxhdGVyLgorICovCitib29sCitTbG90U3lu Y1dvcmtlckNhblJlc3RhcnQodm9pZCkKK3sKKwl0aW1lX3QJCWN1cnRpbWUgPSB0aW1lKE5VTEwp OworCisJLyogUmV0dXJuIGZhbHNlIGlmIHRvbyBzb29uIHNpbmNlIGxhc3Qgc3RhcnQuICovCisJ aWYgKCh1bnNpZ25lZCBpbnQpIChjdXJ0aW1lIC0gU2xvdFN5bmNDdHgtPmxhc3Rfc3RhcnRfdGlt ZSkgPAorCQkodW5zaWduZWQgaW50KSBTTE9UU1lOQ19SRVNUQVJUX0lOVEVSVkFMX1NFQykKKwkJ cmV0dXJuIGZhbHNlOworCisJU2xvdFN5bmNDdHgtPmxhc3Rfc3RhcnRfdGltZSA9IGN1cnRpbWU7 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyBzeW5jaW5n IHJlcGxpY2F0aW9uIHNsb3RzPworICoKKyAqIENvdWxkIGJlIGVpdGhlciBiYWNrZW5kIGV4ZWN1 dGluZyBTUUwgZnVuY3Rpb24gb3Igc2xvdCBzeW5jIHdvcmtlci4KICAqLwogYm9vbAogSXNTeW5j aW5nUmVwbGljYXRpb25TbG90cyh2b2lkKQpAQCAtODUxLDYgKzE0MjMsMTUgQEAgSXNTeW5jaW5n UmVwbGljYXRpb25TbG90cyh2b2lkKQogCXJldHVybiBzeW5jaW5nX3Nsb3RzOwogfQogCisvKgor ICogSXMgY3VycmVudCBwcm9jZXNzIGEgc2xvdCBzeW5jIHdvcmtlcj8KKyAqLworYm9vbAorSXNM b2dpY2FsU2xvdFN5bmNXb3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gYW1fc2xvdHN5bmNfd29ya2Vy OworfQorCiAvKgogICogQW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgZm9yIHNsb3Qg c3luY2hyb25pemF0aW9uLgogICovCkBAIC04NjYsMTQgKzE0NDcsMTYgQEAgU2xvdFN5bmNTaG1l bVNpemUodm9pZCkKIHZvaWQKIFNsb3RTeW5jU2htZW1Jbml0KHZvaWQpCiB7CisJU2l6ZQkJc2l6 ZSA9IFNsb3RTeW5jU2htZW1TaXplKCk7CiAJYm9vbAkJZm91bmQ7CiAKIAlTbG90U3luY0N0eCA9 IChTbG90U3luY0N0eFN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNsb3QgU3luYyBEYXRh IiwgU2xvdFN5bmNTaG1lbVNpemUoKSwgJmZvdW5kKTsKKwkJU2htZW1Jbml0U3RydWN0KCJTbG90 IFN5bmMgRGF0YSIsIHNpemUsICZmb3VuZCk7CiAKIAlpZiAoIWZvdW5kKQogCXsKLQkJU2xvdFN5 bmNDdHgtPnN5bmNpbmcgPSBmYWxzZTsKKwkJbWVtc2V0KFNsb3RTeW5jQ3R4LCAwLCBzaXplKTsK KwkJU2xvdFN5bmNDdHgtPnBpZCA9IEludmFsaWRQaWQ7CiAJCVNwaW5Mb2NrSW5pdCgmU2xvdFN5 bmNDdHgtPm11dGV4KTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggYTE0Mjg1NWJk My4uYTIyNjljNDZmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMTIzNiw2ICsxMjM2LDIw IEBAIHJlc3RhcnQ6CiAJCSAqIGNvbmN1cnJlbnRseSBiZWluZyBkcm9wcGVkIGJ5IGEgYmFja2Vu ZCBjb25uZWN0ZWQgdG8gYW5vdGhlciBEQi4KIAkJICoKIAkJICogVGhhdCdzIGZhaXJseSB1bmxp a2VseSBpbiBwcmFjdGljZSwgc28gd2UnbGwganVzdCBiYWlsIG91dC4KKwkJICoKKwkJICogVGhl IHNsb3Qgc3luYyB3b3JrZXIgaG9sZHMgYSBzaGFyZWQgbG9jayBvbiB0aGUgZGF0YWJhc2UgYmVm b3JlCisJCSAqIG9wZXJhdGluZyBvbiBzeW5jZWQgbG9naWNhbCBzbG90cyB0byBhdm9pZCBjb25m bGljdCB3aXRoIHRoZSBkcm9wCisJCSAqIGhhcHBlbmluZyBoZXJlLiBUaGUgcGVyc2lzdGVudCBz eW5jZWQgc2xvdHMgYXJlIHRodXMgc2FmZSBidXQgdGhlcmUKKwkJICogaXMgYSBwb3NzaWJpbGl0 eSB0aGF0IHRoZSBzbG90IHN5bmMgd29ya2VyIGhhcyBjcmVhdGVkIGEgdGVtcG9yYXJ5CisJCSAq IHNsb3QgKHdoaWNoIHN0YXlzIGFjdGl2ZSBldmVuIG9uIHJlbGVhc2UpIGFuZCB3ZSBhcmUgdHJ5 aW5nIHRvIGRyb3AKKwkJICogdGhlIHNhbWUgaGVyZS4gSW4gcHJhY3RpY2UsIHRoZSBjaGFuY2Vz IG9mIGhpdHRpbmcgdGhpcyBzY2VuYXJpbyBpcworCQkgKiB2ZXJ5IGxlc3MgYXMgZHVyaW5nIHNs b3Qgc3luY2hyb25pemF0aW9uLCB0aGUgdGVtcG9yYXJ5IHNsb3QgaXMKKwkJICogaW1tZWRpYXRl bHkgY29udmVydGVkIHRvIHBlcnNpc3RlbnQgYW5kIHRodXMgaXMgc2FmZSBkdWUgdG8gdGhlCisJ CSAqIHNoYXJlZCBsb2NrIHRha2VuIG9uIHRoZSBkYXRhYmFzZS4gU28gZm9yIHRoZSB0aW1lIGJl aW5nLCB3ZSdsbAorCQkgKiBqdXN0IGJhaWwgb3V0IGluIHN1Y2ggYSBzY2VuYXJpby4KKwkJICoK KwkJICogWFhYOiBJZiBuZWVkZWQsIHdlIGNhbiBjb25zaWRlciBzaHV0dGluZyBkb3duIHNsb3Qg c3luYyB3b3JrZXIKKwkJICogYmVmb3JlIHRyeWluZyB0byBkcm9wIHN5bmNlZCB0ZW1wb3Jhcnkg c2xvdHMgaGVyZS4KIAkJICovCiAJCWlmIChhY3RpdmVfcGlkKQogCQkJZXJlcG9ydChFUlJPUiwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKaW5kZXggZDJmYTVlNjY5YS4uNzFiY2U3MjA0 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKQEAgLTk3MiwxMCArOTcyLDEyIEBA IHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQllcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCWVycm1zZygi cmVwbGljYXRpb24gc2xvdHMgY2FuIG9ubHkgYmUgc3luY2hyb25pemVkIHRvIGEgc3RhbmRieSBz ZXJ2ZXIiKSk7CiAKKwlWYWxpZGF0ZVNsb3RTeW5jUGFyYW1zKEVSUk9SKTsKKwogCS8qIExvYWQg dGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwogCWxvYWRfZmlsZSgibGlicHF3YWxyZWNl aXZlciIsIGZhbHNlKTsKIAotCVZhbGlkYXRlU2xvdFN5bmNQYXJhbXMoKTsKKwkodm9pZCkgQ2hl Y2tEYm5hbWVJbkNvbm5pbmZvKCk7CiAKIAlpbml0U3RyaW5nSW5mbygmYXBwX25hbWUpOwogCWlm IChjbHVzdGVyX25hbWVbMF0pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDYz MWQxZTBjOWYuLjEzYmMzZTBhZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBA IC0zMzg5LDcgKzMzODksNyBAQCBXYWxTbmREb25lKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sgc2Vu ZF9kYXRhKQogICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBpbiByZWNvdmVyeS4K ICAqCiAgKiBUaGlzIGlzIGNhbGxlZCBlaXRoZXIgYnkgY2FzY2FkaW5nIHdhbHNlbmRlciB0byBm aW5kIFdBTCBwb3N0aW9uIHRvIGJlIHNlbnQKLSAqIHRvIGEgY2FzY2FkZWQgc3RhbmRieSBvciBi eSBzbG90IHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbiB0byB2YWxpZGF0ZSByZW1vdGUKKyAqIHRv IGEgY2FzY2FkZWQgc3RhbmRieSBvciBieSBzbG90IHN5bmNocm9uaXphdGlvbiBvcGVyYXRpb24g dG8gdmFsaWRhdGUgcmVtb3RlCiAgKiBzbG90J3MgbHNuIGJlZm9yZSBzeW5jaW5nIGl0IGxvY2Fs bHkuCiAgKgogICogQXMgYSBzaWRlLWVmZmVjdCwgKnRsaSBpcyB1cGRhdGVkIHRvIHRoZSBUTEkg b2YgdGhlIGxhc3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDFhZmNiZmMwNTIuLmFjODMz MzFiYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1 ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgpA QCAtMzY1LDggKzM2NiwxMiBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCSAqIGNoaWxkOyB0aGlzIGlz IHNvIHRoYXQgdGhlIHBvc3RtYXN0ZXIgY2FuIGRldGVjdCBpdCBpZiB3ZSBleGl0IHdpdGhvdXQK IAkgKiBjbGVhbmluZyB1cC4gIChYWFggYXV0b3ZhYyBsYXVuY2hlciBjdXJyZW50bHkgZG9lc24n dCBwYXJ0aWNpcGF0ZSBpbgogCSAqIHRoaXM7IGl0IHByb2JhYmx5IHNob3VsZC4pCisJICoKKwkg KiBTbG90IHN5bmMgd29ya2VyIGFsc28gZG9lcyBub3QgcGFydGljaXBhdGUgaW4gaXQsIHNlZSBj b21tZW50cyBhdG9wCisJICogJ3N0cnVjdCBia2VuZCcgaW4gcG9zdG1hc3Rlci5jLgogCSAqLwot CWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhSXNBdXRvVmFjdXVtTGF1bmNoZXJQcm9jZXNzKCkp CisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3Mo KSAmJgorCQkhSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIoKSkKIAkJTWFya1Bvc3RtYXN0ZXJDaGls ZEFjdGl2ZSgpOwogCiAJLyoKQEAgLTkzNSw4ICs5NDAsMTIgQEAgUHJvY0tpbGwoaW50IGNvZGUs IERhdHVtIGFyZykKIAkgKiBUaGlzIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIHByZXNlbnQgaW4gc2hh cmVkIG1lbW9yeSBpbiBhbnkgbWVhbmluZ2Z1bAogCSAqIHdheSwgc28gdGVsbCB0aGUgcG9zdG1h c3RlciB3ZSd2ZSBjbGVhbmVkIHVwIGFjY2VwdGFibHkgd2VsbC4gKFhYWAogCSAqIGF1dG92YWMg bGF1bmNoZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGhlcmUgc29tZWRheSkKKwkgKgorCSAqIFNsb3Qg c3luYyB3b3JrZXIgaXMgYWxzbyBub3QgYSBwb3N0bWFzdGVyIGNoaWxkLCBzbyBza2lwIHRoaXMg c2hhcmVkCisJICogbWVtb3J5IHJlbGF0ZWQgcHJvY2Vzc2luZyBoZXJlLgogCSAqLwotCWlmIChJ c1VuZGVyUG9zdG1hc3RlciAmJiAhSXNBdXRvVmFjdXVtTGF1bmNoZXJQcm9jZXNzKCkpCisJaWYg KElzVW5kZXJQb3N0bWFzdGVyICYmICFJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSAmJgor CQkhSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIoKSkKIAkJTWFya1Bvc3RtYXN0ZXJDaGlsZEluYWN0 aXZlKCk7CiAKIAkvKiB3YWtlIGF1dG92YWMgbGF1bmNoZXIgaWYgbmVlZGVkIC0tIHNlZSBjb21t ZW50cyBpbiBGcmVlV29ya2VySW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRf aW8uYwppbmRleCA0M2MzOTNkNmZlLi45ZDZlMDY3MzgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfaW8uYwpAQCAtMzM4LDYgKzMzOCw3IEBAIHBnc3RhdF90cmFja3NfaW9fYmt0 eXBlKEJhY2tlbmRUeXBlIGJrdHlwZSkKIAkJY2FzZSBCX0JHX1dPUktFUjoKIAkJY2FzZSBCX0JH X1dSSVRFUjoKIAkJY2FzZSBCX0NIRUNLUE9JTlRFUjoKKwkJY2FzZSBCX1NMT1RTWU5DX1dPUktF UjoKIAkJY2FzZSBCX1NUQU5EQUxPTkVfQkFDS0VORDoKIAkJY2FzZSBCX1NUQVJUVVA6CiAJCWNh c2UgQl9XQUxfU0VOREVSOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50X25hbWVzLnR4dAppbmRleCA2NDY0Mzg2Yjc3Li5iNTJhZmQ0ZWFjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dAorKysgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dApAQCAtNTMsNiArNTMs OCBAQCBMT0dJQ0FMX0FQUExZX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIGxvZ2ljYWwg cmVwbGljYXRpb24gYXBwbHkgcHJvY2Vzcy4iCiBMT0dJQ0FMX0xBVU5DSEVSX01BSU4JIldhaXRp bmcgaW4gbWFpbiBsb29wIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXIgcHJvY2Vzcy4i CiBMT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIGxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgcHJvY2Vzcy4iCiBSRUNPVkVSWV9XQUxf U1RSRUFNCSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBzdGFydHVwIHByb2Nlc3MgZm9yIFdBTCB0 byBhcnJpdmUsIGR1cmluZyBzdHJlYW1pbmcgcmVjb3ZlcnkuIgorUkVQTF9TTE9UU1lOQ19NQUlO CSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBzbG90IHN5bmMgd29ya2VyLiIKK1JFUExfU0xPVFNZ TkNfU0hVVERPV04JIldhaXRpbmcgZm9yIHNsb3Qgc3luYyB3b3JrZXIgdG8gc2h1dCBkb3duLiIK IFNZU0xPR0dFUl9NQUlOCSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBzeXNsb2dnZXIgcHJvY2Vz cy4iCiBXQUxfUkVDRUlWRVJfTUFJTgkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2YgV0FMIHJlY2Vp dmVyIHByb2Nlc3MuIgogV0FMX1NFTkRFUl9NQUlOCSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBX QUwgc2VuZGVyIHByb2Nlc3MuIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9t aXNjaW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCmluZGV4IDIzZjc3 YTU5ZTUuLjI2YWFmMjkyYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlz Y2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTQwLDYg KzQwLDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvcGdhcmNoLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCisj aW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCkBA IC0yOTMsNiArMjk0LDkgQEAgR2V0QmFja2VuZFR5cGVEZXNjKEJhY2tlbmRUeXBlIGJhY2tlbmRU eXBlKQogCQljYXNlIEJfTE9HR0VSOgogCQkJYmFja2VuZERlc2MgPSAibG9nZ2VyIjsKIAkJCWJy ZWFrOworCQljYXNlIEJfU0xPVFNZTkNfV09SS0VSOgorCQkJYmFja2VuZERlc2MgPSAic2xvdHN5 bmN3b3JrZXIiOworCQkJYnJlYWs7CiAJCWNhc2UgQl9TVEFOREFMT05FX0JBQ0tFTkQ6CiAJCQli YWNrZW5kRGVzYyA9ICJzdGFuZGFsb25lIGJhY2tlbmQiOwogCQkJYnJlYWs7CkBAIC04MzUsOSAr ODM5LDEwIEBAIEluaXRpYWxpemVTZXNzaW9uVXNlcklkU3RhbmRhbG9uZSh2b2lkKQogewogCS8q CiAJICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gc2luZ2xlLXVzZXIg bW9kZSwgaW4gYXV0b3ZhY3V1bQotCSAqIHdvcmtlcnMsIGFuZCBpbiBiYWNrZ3JvdW5kIHdvcmtl cnMuCisJICogd29ya2VycywgaW4gc2xvdCBzeW5jIHdvcmtlciBhbmQgaW4gYmFja2dyb3VuZCB3 b3JrZXJzLgogCSAqLwotCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIgfHwgSXNBdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpIHx8IElzQmFja2dyb3VuZFdvcmtlcik7CisJQXNzZXJ0KCFJc1VuZGVy UG9zdG1hc3RlciB8fCBJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgfHwKKwkJICAgSXNMb2dp Y2FsU2xvdFN5bmNXb3JrZXIoKSB8fCBJc0JhY2tncm91bmRXb3JrZXIpOwogCiAJLyogY2FsbCBv bmx5IG9uY2UgKi8KIAlBc3NlcnQoIU9pZElzVmFsaWQoQXV0aGVudGljYXRlZFVzZXJJZCkpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDc3OTc4NzZkMDAuLjVmZmU5YmRkOTggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJw b3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v c2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKQEAgLTg3NiwxMCAr ODc3LDExIEBAIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwK IAkgKiBQZXJmb3JtIGNsaWVudCBhdXRoZW50aWNhdGlvbiBpZiBuZWNlc3NhcnksIHRoZW4gZmln dXJlIG91dCBvdXIKIAkgKiBwb3N0Z3JlcyB1c2VyIElELCBhbmQgc2VlIGlmIHdlIGFyZSBhIHN1 cGVydXNlci4KIAkgKgotCSAqIEluIHN0YW5kYWxvbmUgbW9kZSBhbmQgaW4gYXV0b3ZhY3V1bSB3 b3JrZXIgcHJvY2Vzc2VzLCB3ZSB1c2UgYSBmaXhlZAotCSAqIElELCBvdGhlcndpc2Ugd2UgZmln dXJlIGl0IG91dCBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIgbmFtZS4KKwkgKiBJbiBzdGFu ZGFsb25lIG1vZGUsIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3NlcyBhbmQgc2xvdCBzeW5jIHdv cmtlcgorCSAqIHByb2Nlc3MsIHdlIHVzZSBhIGZpeGVkIElELCBvdGhlcndpc2Ugd2UgZmlndXJl IGl0IG91dCBmcm9tIHRoZQorCSAqIGF1dGhlbnRpY2F0ZWQgdXNlciBuYW1lLgogCSAqLwotCWlm IChib290c3RyYXAgfHwgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmIChib290c3Ry YXAgfHwgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpIHx8IElzTG9naWNhbFNsb3RTeW5jV29y a2VyKCkpCiAJewogCQlJbml0aWFsaXplU2Vzc2lvblVzZXJJZFN0YW5kYWxvbmUoKTsKIAkJYW1f c3VwZXJ1c2VyID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNzA2 NTJmMGEzZi4uMzdiZTA2NjliYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAg LTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3Nsb3QuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbGFyZ2Vfb2JqZWN0LmgiCkBAIC0yMDU0LDYgKzIwNTUsMTUgQEAgc3RydWN0 IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAog CX0sCiAKKwl7CisJCXsic3luY19yZXBsaWNhdGlvbl9zbG90cyIsIFBHQ19TSUdIVVAsIFJFUExJ Q0FUSU9OX1NUQU5EQlksCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgYSBwaHlzaWNhbCBzdGFu ZGJ5IHRvIHN5bmNocm9uaXplIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMgZnJvbSB0aGUgcHJpbWFy eSBzZXJ2ZXIuIiksCisJCX0sCisJCSZzeW5jX3JlcGxpY2F0aW9uX3Nsb3RzLAorCQlmYWxzZSwK KwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8KIAl7 CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIE5V TEwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRl eCBlMTA3NTU5NzJhLi5jOTdmOWEyNWYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNjEsNiArMzYxLDcgQEAKICN3YWxfcmV0cmlldmVf cmV0cnlfaW50ZXJ2YWwgPSA1cwkjIHRpbWUgdG8gd2FpdCBiZWZvcmUgcmV0cnlpbmcgdG8KIAkJ CQkJIyByZXRyaWV2ZSBXQUwgYWZ0ZXIgYSBmYWlsZWQgYXR0ZW1wdAogI3JlY292ZXJ5X21pbl9h cHBseV9kZWxheSA9IDAJCSMgbWluaW11bSBkZWxheSBmb3IgYXBwbHlpbmcgY2hhbmdlcyBkdXJp bmcgcmVjb3ZlcnkKKyNzeW5jX3JlcGxpY2F0aW9uX3Nsb3RzID0gb2ZmCQkJIyBlbmFibGVzIHNs b3Qgc3luY2hyb25pemF0aW9uIG9uIHRoZSBwaHlzaWNhbCBzdGFuZGJ5IGZyb20gdGhlIHByaW1h cnkKIAogIyAtIFN1YnNjcmliZXJzIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAwNDQ1ZmJmNjFkLi42MTJmYjVm NDJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVk ZS9taXNjYWRtaW4uaApAQCAtMzMzLDYgKzMzMyw3IEBAIHR5cGVkZWYgZW51bSBCYWNrZW5kVHlw ZQogCUJfQkdfV1JJVEVSLAogCUJfQ0hFQ0tQT0lOVEVSLAogCUJfTE9HR0VSLAorCUJfU0xPVFNZ TkNfV09SS0VSLAogCUJfU1RBTkRBTE9ORV9CQUNLRU5ELAogCUJfU1RBUlRVUCwKIAlCX1dBTF9S RUNFSVZFUiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oCmluZGV4IGU4NmQ4YTQ3YjguLmYw ZTg1MzkyNWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaApAQCAtMTQsOCArMTQsMjcg QEAKIAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAKLWV4dGVybiB2b2lk IFZhbGlkYXRlU2xvdFN5bmNQYXJhbXModm9pZCk7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBz eW5jX3JlcGxpY2F0aW9uX3Nsb3RzOworCisvKgorICogR1VDcyBuZWVkZWQgYnkgc2xvdCBzeW5j IHdvcmtlciB0byBjb25uZWN0IHRvIHRoZSBwcmltYXJ5CisgKiBzZXJ2ZXIgYW5kIGNhcnJ5IG9u IHdpdGggc2xvdHMgc3luY2hyb25pemF0aW9uLgorICovCitleHRlcm4gUEdETExJTVBPUlQgY2hh ciAqUHJpbWFyeUNvbm5JbmZvOworZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKlByaW1hcnlTbG90 TmFtZTsKKworZXh0ZXJuIGNoYXIgKkNoZWNrRGJuYW1lSW5Db25uaW5mbyh2b2lkKTsKK2V4dGVy biBib29sIFZhbGlkYXRlU2xvdFN5bmNQYXJhbXMoaW50IGVsZXZlbCk7CisKKyNpZmRlZiBFWEVD X0JBQ0tFTkQKK2V4dGVybiB2b2lkIFJlcGxTbG90U3luY1dvcmtlck1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CisjZW5kaWYKK2V4dGVybiBpbnQJ U3RhcnRTbG90U3luY1dvcmtlcih2b2lkKTsKKworZXh0ZXJuIHZvaWQgU2h1dERvd25TbG90U3lu Yyh2b2lkKTsKK2V4dGVybiBib29sIFNsb3RTeW5jV29ya2VyQ2FuUmVzdGFydCh2b2lkKTsKIGV4 dGVybiBib29sIElzU3luY2luZ1JlcGxpY2F0aW9uU2xvdHModm9pZCk7CitleHRlcm4gYm9vbCBJ c0xvZ2ljYWxTbG90U3luY1dvcmtlcih2b2lkKTsKIGV4dGVybiBTaXplIFNsb3RTeW5jU2htZW1T aXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2xvdFN5bmNTaG1lbUluaXQodm9pZCk7CiBleHRlcm4g dm9pZCBTeW5jUmVwbGljYXRpb25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubik7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5 bmMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5 bmMucGwKaW5kZXggMjc1NWMzZmM4NC4uMDcxNDhmY2Y4OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCisrKyBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbApAQCAtMjIs NyArMjIsOCBAQCAkcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ2F1 dG92YWN1dW0gPSBvZmYnKTsKICRwdWJsaXNoZXItPnN0YXJ0OwogCiAkcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfbXlwdWIgRk9S IEFMTCBUQUJMRVM7Iik7CisJIkNSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX215cHViIEZPUiBB TEwgVEFCTEVTOyIKKyk7CiAKIG15ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRwdWJsaXNoZXItPmNv bm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAKQEAgLTMyMiw2ICszMjMsMTAgQEAgb2soICRz dGRlcnIgPX4KIAkgIC9ISU5UOiAgJ2RibmFtZScgbXVzdCBiZSBzcGVjaWZpZWQgaW4gInByaW1h cnlfY29ubmluZm8iLywKIAkiY2Fubm90IHN5bmMgc2xvdHMgaWYgZGJuYW1lIGlzIG5vdCBzcGVj aWZpZWQgaW4gcHJpbWFyeV9jb25uaW5mbyIpOwogCisjIEFkZCB0aGUgZGJuYW1lIGJhY2sgdG8g dGhlIHByaW1hcnlfY29ubmluZm8gZm9yIGZ1cnRoZXIgdGVzdHMKKyRzdGFuZGJ5MS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyXzEg ZGJuYW1lPXBvc3RncmVzJyIpOworJHN0YW5kYnkxLT5yZWxvYWQ7CisKICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdGhhdCB3ZSBjYW5u b3Qgc3luY2hyb25pemUgc2xvdHMgdG8gYSBjYXNjYWRpbmcgc3RhbmRieSBzZXJ2ZXIuCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzU1LDQg KzM2MCwxMjAgQEAgb2soICRzdGRlcnIgPX4KIAkgIC9FUlJPUjogIGNhbm5vdCBzeW5jaHJvbml6 ZSByZXBsaWNhdGlvbiBzbG90cyBmcm9tIGEgc3RhbmRieSBzZXJ2ZXIvLAogCSJjYW5ub3Qgc3lu YyBzbG90cyB0byBhIGNhc2NhZGluZyBzdGFuZGJ5IHNlcnZlciIpOwogCiskY2FzY2FkaW5nX3N0 YW5kYnktPnN0b3A7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdG8gY29uZmlybSB0aGF0IHRoZSBzbG90IHN5bmMgd29ya2VyIGV4 aXRzIG9uIGludmFsaWQgR1VDKHMpIGFuZAorIyBnZXQgc3RhcnRlZCBhZ2FpbiBvbiB2YWxpZCBH VUMocykuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCiskbG9nX29mZnNldCA9IC1zICRzdGFuZGJ5MS0+bG9nZmlsZTsKKworIyBFbmFibGUgc2xv dCBzeW5jIHdvcmtlci4KKyRzdGFuZGJ5MS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics IHFxKHN5bmNfcmVwbGljYXRpb25fc2xvdHMgPSBvbikpOworJHN0YW5kYnkxLT5yZWxvYWQ7CisK KyMgQ29uZmlybSB0aGF0IHRoZSBzbG90IHN5bmMgd29ya2VyIGlzIGFibGUgdG8gc3RhcnQuCisk c3RhbmRieTEtPndhaXRfZm9yX2xvZyhxci9MT0c6ICBzbG90IHN5bmMgd29ya2VyIHN0YXJ0ZWQv LAorCSRsb2dfb2Zmc2V0KTsKKworJGxvZ19vZmZzZXQgPSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7 CisKKyMgRGlzYWJsZSBhbm90aGVyIEdVQyByZXF1aXJlZCBmb3Igc2xvdCBzeW5jLgorJHN0YW5k YnkxLT5hcHBlbmRfY29uZigJJ3Bvc3RncmVzcWwuY29uZicsIHFxKGhvdF9zdGFuZGJ5X2ZlZWRi YWNrID0gb2ZmKSk7Ciskc3RhbmRieTEtPnJlbG9hZDsKKworIyBDb25maXJtIHRoYXQgc2xvdCBz eW5jIHdvcmtlciBhY2tub3dsZWRnZSB0aGUgR1VDIGNoYW5nZSBhbmQgbG9ncyBiYWQKKyMgY29u ZmlndXJhdGlvbiBtc2cuCiskc3RhbmRieTEtPndhaXRfZm9yX2xvZyhxci9MT0c6ICBzbG90IHN5 bmMgd29ya2VyIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZS8sCisJ JGxvZ19vZmZzZXQpOworJHN0YW5kYnkxLT53YWl0X2Zvcl9sb2cocXIvTE9HOiAgYmFkIGNvbmZp Z3VyYXRpb24gZm9yIHNsb3Qgc3luY2hyb25pemF0aW9uLywKKwkkbG9nX29mZnNldCk7CisKKyRs b2dfb2Zmc2V0ID0gLXMgJHN0YW5kYnkxLT5sb2dmaWxlOworCisjIFJlLWVuYWJsZSB0aGUgcmVx dWlyZWQgR1VDCiskc3RhbmRieTEtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAiaG90 X3N0YW5kYnlfZmVlZGJhY2sgPSBvbiIpOworJHN0YW5kYnkxLT5yZWxvYWQ7CisKKyMgQ29uZmly bSB0aGF0IHRoZSBzbG90IHN5bmMgd29ya2VyIGlzIGFibGUgdG8gc3RhcnQgbm93LgorJHN0YW5k YnkxLT53YWl0X2Zvcl9sb2cocXIvTE9HOiAgc2xvdCBzeW5jIHdvcmtlciBzdGFydGVkLywKKwkk bG9nX29mZnNldCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdG8gY29uZmlybSB0aGF0IHJlc3RhcnRfbHNuIGFuZCBjb25maXJt ZWRfZmx1c2hfbHNuIG9mIHRoZSBsb2dpY2FsIHNsb3QKKyMgb24gdGhlIHByaW1hcnkgaXMgc3lu Y2VkIHRvIHRoZSBzdGFuZGJ5IHZpYSB0aGUgc2xvdCBzeW5jIHdvcmtlci4KKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5zZXJ0IGRhdGEg b24gdGhlIHByaW1hcnkKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJ Q1JFQVRFIFRBQkxFIHRhYl9pbnQgKGEgaW50IFBSSU1BUlkgS0VZKTsKKwlJTlNFUlQgSU5UTyB0 YWJfaW50IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApOworXSk7CisKKyMgU3Vic2NyaWJl IHRvIHRoZSBuZXcgdGFibGUgZGF0YSBhbmQgd2FpdCBmb3IgaXQgdG8gYXJyaXZlCiskc3Vic2Ny aWJlcjEtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlDUkVBVEUgVEFCTEUgdGFiX2lu dCAoYSBpbnQgUFJJTUFSWSBLRVkpOworCUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3Vi MSBFTkFCTEU7CisJQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfbXlzdWIxIFJFRlJFU0ggUFVC TElDQVRJT047CitdKTsKKworJHN1YnNjcmliZXIxLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3lu YzsKKworIyBEbyBub3QgYWxsb3cgYW55IGZ1cnRoZXIgYWR2YW5jZW1lbnQgb2YgdGhlIHJlc3Rh cnRfbHNuIGFuZAorIyBjb25maXJtZWRfZmx1c2hfbHNuIGZvciB0aGUgbHN1YjFfc2xvdC4KKyRz dWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc19teXN1YjEgRElTQUJMRSIpOworCisjIFdhaXQgZm9yIHRoZSByZXBsaWNhdGlvbiBzbG90 IHRvIGJlY29tZSBpbmFjdGl2ZSBvbiB0aGUgcHVibGlzaGVyCiskcHJpbWFyeS0+cG9sbF9xdWVy eV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJTRUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19jYXRhbG9n LnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zbG90JyBBTkQg YWN0aXZlPSdmJyIsCisJMSk7CisKKyMgR2V0IHRoZSByZXN0YXJ0X2xzbiBmb3IgdGhlIGxvZ2lj YWwgc2xvdCBsc3ViMV9zbG90IG9uIHRoZSBwcmltYXJ5CitteSAkcHJpbWFyeV9yZXN0YXJ0X2xz biA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHJlc3RhcnRfbHNu IGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3Qn OyIpOworCisjIEdldCB0aGUgY29uZmlybWVkX2ZsdXNoX2xzbiBmb3IgdGhlIGxvZ2ljYWwgc2xv dCBsc3ViMV9zbG90IG9uIHRoZSBwcmltYXJ5CitteSAkcHJpbWFyeV9mbHVzaF9sc24gPSAkcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb25maXJtZWRfZmx1c2hfbHNu IGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3Qn OyIpOworCisjIENvbmZpcm0gdGhhdCByZXN0YXJ0X2xzbiBhbmQgb2YgY29uZmlybWVkX2ZsdXNo X2xzbiBsc3ViMV9zbG90IHNsb3QgYXJlIHN5bmNlZAorIyB0byB0aGUgc3RhbmRieQorb2soICRz dGFuZGJ5MS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCAnJHBy aW1hcnlfcmVzdGFydF9sc24nID0gcmVzdGFydF9sc24gQU5EICckcHJpbWFyeV9mbHVzaF9sc24n ID0gY29uZmlybWVkX2ZsdXNoX2xzbiBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNs b3RfbmFtZSA9ICdsc3ViMV9zbG90JzsiKSwKKwkncmVzdGFydF9sc24gYW5kIGNvbmZpcm1lZF9m bHVzaF9sc24gb2Ygc2xvdCBsc3ViMV9zbG90IHN5bmNlZCB0byBzdGFuZGJ5Jyk7CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFByb21vdGUg dGhlIHN0YW5kYnkxIHRvIHByaW1hcnkuIENvbmZpcm0gdGhhdDoKKyMgYSkgdGhlIHNsb3QgJ2xz dWIxX3Nsb3QnIGlzIHJldGFpbmVkIG9uIHRoZSBuZXcgcHJpbWFyeQorIyBiKSBsb2dpY2FsIHJl cGxpY2F0aW9uIGZvciByZWdyZXNzX215c3ViMSBpcyByZXN1bWVkIHN1Y2Nlc3NmdWxseSBhZnRl ciBmYWlsb3ZlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyRzdGFuZGJ5MS0+cHJvbW90ZTsKKworIyBVcGRhdGUgc3Vic2NyaXB0aW9uIHdpdGgg dGhlIG5ldyBwcmltYXJ5J3MgY29ubmVjdGlvbiBpbmZvCitteSAkc3RhbmRieTFfY29ubmluZm8g PSAkc3RhbmRieTEtPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskc3Vic2NyaWJlcjEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1 YjEgQ09OTkVDVElPTiAnJHN0YW5kYnkxX2Nvbm5pbmZvJzsKKwkgQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfbXlzdWIxIEVOQUJMRTsgIik7CisKKyMgQ29uZmlybSB0aGUgc3luY2VkIHNsb3Qg J2xzdWIxX3Nsb3QnIGlzIHJldGFpbmVkIG9uIHRoZSBuZXcgcHJpbWFyeQoraXMoJHN0YW5kYnkx LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBs aWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCc7fSksCisJJ2xzdWIx X3Nsb3QnLAorCSdzeW5jZWQgc2xvdCByZXRhaW5lZCBvbiB0aGUgbmV3IHByaW1hcnknKTsKKwor IyBJbnNlcnQgZGF0YSBvbiB0aGUgbmV3IHByaW1hcnkKKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9pbnQgU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygx MSwgMjApOyIpOworJHN0YW5kYnkxLT53YWl0X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX215c3ViMScp OworCisjIENvbmZpcm0gdGhhdCBkYXRhIGluIHRhYl9pbnQgcmVwbGljYXRlZCBvbiB0aGUgc3Vi c2NyaWJlcgoraXMoICRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNU IGNvdW50KCopIEZST00gdGFiX2ludDt9KSwKKwkiMjAiLAorCSdkYXRhIHJlcGxpY2F0ZWQgZnJv bSB0aGUgbmV3IHByaW1hcnknKTsKKwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000e8ffa10611cceff3--