<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>172729</bug_id>
          
          <creation_ts>2017-05-30 13:43:57 -0700</creation_ts>
          <short_desc>Fix build of Windows-specific code with ICU 59.1</short_desc>
          <delta_ts>2017-06-11 04:33:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Konstantin Tokarev">annulen</reporter>
          <assigned_to name="Konstantin Tokarev">annulen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>pvollan</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1313850</commentid>
    <comment_count>0</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-05-30 13:43:57 -0700</bug_when>
    <thetext>ICU 59.1 has broken source compatibility. Now it defines UChar as char16_t, which does not allow automatic type conversion from wchar_t as it used to be.

Added WCharStringExtras.h header to WTF to hold new helper functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313855</commentid>
    <comment_count>1</comment_count>
      <attachid>311541</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-05-30 13:53:01 -0700</bug_when>
    <thetext>Created attachment 311541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314164</commentid>
    <comment_count>2</comment_count>
      <attachid>311591</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-05-31 08:24:50 -0700</bug_when>
    <thetext>Created attachment 311591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314639</commentid>
    <comment_count>3</comment_count>
      <attachid>311591</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-01 09:12:19 -0700</bug_when>
    <thetext>Comment on attachment 311591
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=311591&amp;action=review

It‘s fine to create these new function helpers as free functions; helps keep the String class cleaner and contain fewer platform specifics. But note that this is not the pattern we have used in WTF::String up until this point. We have been using member functions for this sort of thing, with examples like the String::createCFString function and the String::operator NSString * function. But I think the explicit function approach is likely superior.

If we take this path, we should also remove the following functions, which I believe were created for use on the Windows platform, and could be replaced by the new functions:

    String::String(const UChar*), which takes a null-terminated 16-bit wide string
    String::charactersWithNullTermination(), which creates a null-terminated 16-bit wide string

There’s nothing about these functions that makes them hard to implement in non-member functions.

&gt; Source/WTF/wtf/text/WCharStringExtras.h:36
&gt; +inline wchar_t* stringToNullTerminatedWChar(const String&amp; string)
&gt; +{
&gt; +    return reinterpret_cast&lt;wchar_t*&gt;(string.charactersWithNullTermination().data());
&gt; +}

This is wrong. This creates a vector, takes a pointer to its content, then deletes that vector and returns the dangling pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315190</commentid>
    <comment_count>4</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-02 13:37:55 -0700</bug_when>
    <thetext>Should I move Source/WTF/wtf/text/WCharStringExtras.h to Source/WTF/wtf/text/win?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315207</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-02 14:09:00 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #4)
&gt; Should I move Source/WTF/wtf/text/WCharStringExtras.h to
&gt; Source/WTF/wtf/text/win?

Sure, that would be OK. Not sure it’s important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315264</commentid>
    <comment_count>6</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-02 16:06:00 -0700</bug_when>
    <thetext>I&apos;ve found that String::String(const UChar*) is used in a few places outside of Windows-specific code. In particular, it&apos;s used in SQLiteStatement.cpp as

    return String(reinterpret_cast&lt;const UChar*&gt;(sqlite3_column_name16(m_statement, col)));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315413</commentid>
    <comment_count>7</comment_count>
      <attachid>311921</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 06:50:03 -0700</bug_when>
    <thetext>Created attachment 311921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315420</commentid>
    <comment_count>8</comment_count>
      <attachid>311925</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 07:07:50 -0700</bug_when>
    <thetext>Created attachment 311925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315421</commentid>
    <comment_count>9</comment_count>
      <attachid>311926</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 07:14:09 -0700</bug_when>
    <thetext>Created attachment 311926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315427</commentid>
    <comment_count>10</comment_count>
      <attachid>311928</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 08:39:24 -0700</bug_when>
    <thetext>Created attachment 311928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315437</commentid>
    <comment_count>11</comment_count>
      <attachid>311931</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 09:44:51 -0700</bug_when>
    <thetext>Created attachment 311931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315450</commentid>
    <comment_count>12</comment_count>
      <attachid>311934</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 11:14:33 -0700</bug_when>
    <thetext>Created attachment 311934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315457</commentid>
    <comment_count>13</comment_count>
      <attachid>311937</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 12:18:02 -0700</bug_when>
    <thetext>Created attachment 311937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315480</commentid>
    <comment_count>14</comment_count>
      <attachid>311937</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-03 14:37:34 -0700</bug_when>
    <thetext>Comment on attachment 311937
Patch

I haven&apos;t managed to remove String::String(UChar*) and String::charactersWithNullTermination() in this patch, because they are used in many places that aren&apos;t touched in this patch otherwise, however it would be possible to remove them later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315559</commentid>
    <comment_count>15</comment_count>
      <attachid>311937</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-04 09:38:43 -0700</bug_when>
    <thetext>Comment on attachment 311937
Patch

Clearing flags on attachment: 311937

Committed r217771: &lt;http://trac.webkit.org/changeset/217771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315560</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-04 09:38:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317466</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-09 10:06:52 -0700</bug_when>
    <thetext>It seems that this patch causes JSC test failures due to the failure of opening files (I think this is because of jsc.cpp&apos;s path name change)
https://build.webkit.org/builders/Apple%20Win%207%20Release%20%28Tests%29/builds/937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317483</commentid>
    <comment_count>18</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-09 10:40:33 -0700</bug_when>
    <thetext>Thanks for spotting, indeed modules tests fail with &apos;Could not open file&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317987</commentid>
    <comment_count>19</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-06-11 04:33:21 -0700</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/218067</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311541</attachid>
            <date>2017-05-30 13:53:01 -0700</date>
            <delta_ts>2017-05-31 08:24:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170530235259.patch</filename>
            <type>text/plain</type>
            <size>20097</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5
MDAyOWRkMDM2NDA1MjZlY2UuLmFjMjExZjUxM2JhZjljOGIwZTEzMjJiOThlY2YyYWI1ZGUxZTg3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDUtMzAgIEtvbnN0YW50aW4gVG9rYXJldiAg
PGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNp
ZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XQ2hhclN0cmluZ0V4dHJhcy5oOiBBZGRlZCBuZXcg
aGVhZGVyIGZpbGUgd2l0aCBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb25zIGZvciBjb252ZXJzaW9u
IGJldHdlZW4gV1RGOjpTdHJpbmcgYW5kIHdjaGFydF90Ki4KKwogMjAxNy0wNS0yOSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBk
aXNhYmxlIGZhc3RlciBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQgZm9yIEFSTV9USFVNQjIgd2l0
aCBub24tRGFyd2luIE9TZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOTdhMzgwOTVjMjdmMzFhNGUwYmExYjFj
ZWFlYmE5MDRmZGM2YjczLi5jMTJiYzY0YTE5NjM1N2EzYTkxMDNmY2I0NWI0YWNhMmYxOGJiNDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMzAgIEtvbnN0YW50aW4gVG9r
YXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dz
LXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbnZlcnNpb25zIGZyb20gV1RGOjpTdHJpbmcgdG8g
d2NoYXJfdCogYW5kIHZpY2UgdmVyc2EuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdGFydENyZWF0
ZU1lZGlhU291cmNlKToKKwogMjAxNy0wNS0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMTc1MTUpOiBDb3JyZWN0IGl0ZXJhdG9y
IGludmFsaWRhdGlvbiBidWcgKEFHQUlOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDM1MTIwOWM2NjZl
MDM3ODQyNjg3ZTAxNTAwZjQzY2NkMGNjZjQ5ODguLjkzYmJiYzQ1MzRmOGJkN2FhOTk4MjNjYTIw
M2Y2NzBmMWVmMTU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0w
NS0zMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAg
Rml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRoIElDVSA1OS4xCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY29udmVyc2lvbnMg
ZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2ZXJzYS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGx1
Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6
OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjphZGRNb3pp
bGxhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlh
UGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEFkb2JlQWNyb2Jh
dFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRKYXZhUGx1Z2luRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmFyaVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVyc2lv
bkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0UmVhZEZpbGUpOgorCiAyMDE3LTA1LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1z
bG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dDaGFyU3RyaW5nRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dD
aGFyU3RyaW5nRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk4NzlhMTA5Zjc3Yjg5MDI1NjQwNzY1Yjcz
ZDJmZjQ5MWFhNjQwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV0No
YXJTdHJpbmdFeHRyYXMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworaW5saW5lIHdjaGFyX3QqIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihj
b25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx3Y2hh
cl90Kj4oc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKK30K
KworaW5saW5lIFN0cmluZyB3Y2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUNoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZyBu
dWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKK3sK
KyAgICByZXR1cm4gd2NoYXJUb1N0cmluZyhjaGFyYWN0ZXJzLCB3Y3NsZW4oY2hhcmFjdGVycykg
LSAxKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAKaW5kZXggZWQzMmQxOWY3NDE0MTdkNTk2YTk2MjhiY2M1NzJjNGZiNWNmODhhMC4uNGE2ZmM2
MzE3NWU4NDNhNDRmMDBiZTIzM2E3ODIyZDcyMmY5MGEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogU09GVF9MSU5LX0xJ
QlJBUlkoTWYpOwogU09GVF9MSU5LX09QVElPTkFMKE1mLCBNRkNyZWF0ZVNvdXJjZVJlc29sdmVy
LCBIUkVTVUxULCBTVERBUElDQUxMVFlQRSwgKElNRlNvdXJjZVJlc29sdmVyKiopKTsKQEAgLTE0
Miw3ICsxNDMsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIG1pbWVUeXBlQ2FjaGUoKQogICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CiAg
ICAgICAgIENBTFBXU1RSIG1pbWVUeXBlQXJyYXkgPSBwcm9wVmFyTWltZVR5cGVBcnJheS5jYWxw
d3N0cjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVUeXBlQXJyYXkuY0Vs
ZW1zOyBpKyspCi0gICAgICAgICAgICBjYWNoZWRUeXBlcy5nZXQoKS5hZGQobWltZVR5cGVBcnJh
eS5wRWxlbXNbaV0pOworICAgICAgICAgICAgY2FjaGVkVHlwZXMuZ2V0KCkuYWRkKG51bGxUZXJt
aW5hdGVkV0NoYXJUb1N0cmluZyhtaW1lVHlwZUFycmF5LnBFbGVtc1tpXSkpOwogICAgIH0KIAog
ICAgIFByb3BWYXJpYW50Q2xlYXIoJnByb3BWYXJNaW1lVHlwZUFycmF5KTsKQEAgLTQ2MCwxMSAr
NDYxLDkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3Jl
YXRlTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgQ09NUHRyPElVbmtub3duPiBjYW5jZWxDb29raWU7Ci0gICAgVmVjdG9yPFVDaGFyPiB1
cmxTb3VyY2UgPSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKLQogICAgIEFz
eW5jQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IEFzeW5jQ2FsbGJhY2sodGhpcywgZmFsc2UpOwog
Ci0gICAgaWYgKEZBSUxFRChtX3NvdXJjZVJlc29sdmVyLT5CZWdpbkNyZWF0ZU9iamVjdEZyb21V
UkwodXJsU291cmNlLmRhdGEoKSwgTUZfUkVTT0xVVElPTl9NRURJQVNPVVJDRSwgbnVsbHB0ciwg
JmNhbmNlbENvb2tpZSwgY2FsbGJhY2ssIG51bGxwdHIpKSkKKyAgICBpZiAoRkFJTEVEKG1fc291
cmNlUmVzb2x2ZXItPkJlZ2luQ3JlYXRlT2JqZWN0RnJvbVVSTChzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIodXJsKSwgTUZfUkVTT0xVVElPTl9NRURJQVNPVVJDRSwgbnVsbHB0ciwgJmNhbmNl
bENvb2tpZSwgY2FsbGJhY2ssIG51bGxwdHIpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCmluZGV4IDYyNTE2YmI5M2UxM2NkOGI1MDYzMjFhNjJkN2U2NTBlNDc5ZDRl
ZGYuLjkwOThmOTA2YzIzZjEzZDI5YTNhNTVkNGU1MzA1YTc2ZmM4MDQ3NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJp
bmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Miw3ICs2Myw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBhZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXks
IEhhc2hTZXQ8U3RyaW5nPiYgcGF0CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VT
UyB8fCB0eXBlICE9IFJFR19TWikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBh
dGhzLmFkZChTdHJpbmcocGF0aFN0ciwgcGF0aFN0clNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkp
OworICAgICAgICBwYXRocy5hZGQod2NoYXJUb1N0cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAv
IHNpemVvZihXQ0hBUikgLSAxKSk7CiAgICAgfQogCiAgICAgUmVnQ2xvc2VLZXkoa2V5KTsKQEAg
LTgzLDcgKzg0LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVj
dG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgZm9yIChWZWN0b3I8U3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdpbkRpcmVjdG9yaWVzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICppdCArICJcXCoiOwog
Ci0gICAgICAgIGhGaW5kID0gRmluZEZpcnN0RmlsZVcocGF0dGVybi5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgJmZpbmRGaWxlRGF0YSk7CisgICAgICAgIGhGaW5kID0g
RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdHRlcm4pLCAmZmlu
ZEZpbGVEYXRhKTsKIAogICAgICAgICBpZiAoaEZpbmQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTkyLDcgKzkzLDcgQEAgdm9pZCBQbHVnaW5EYXRh
YmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMp
IGNvbnN0CiAgICAgICAgICAgICBpZiAoZmluZEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBG
SUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IFN0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1l
LCB3Y3NsZW4oZmluZEZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgU3RyaW5nIGZp
bGVuYW1lID0gd2NoYXJUb1N0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmlu
ZEZpbGVEYXRhLmNGaWxlTmFtZSkpOwogICAgICAgICAgICAgaWYgKCghZmlsZW5hbWUuc3RhcnRz
V2l0aCgibnAiLCBmYWxzZSkgfHwgIWZpbGVuYW1lLmVuZHNXaXRoKCJkbGwiLCBmYWxzZSkpICYm
CiAgICAgICAgICAgICAgICAgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFt
ZSwgInBsdWdpbi5kbGwiKSB8fCAhaXQtPmVuZHNXaXRoKCJTaG9ja3dhdmUgMTAiLCBmYWxzZSkp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc5LDExICsxODAsMTEgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYg
ZGlyZWN0b3JpZXMpCiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb25zUGF0
aCA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMiOworICAgICAgICAgICAg
U3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSArICJc
XEV4dGVuc2lvbnMiOwogICAgICAgICAgICAgSEtFWSBleHRlbnNpb25zS2V5OwogCiAgICAgICAg
ICAgICAvLyBUcnkgb3BlbmluZyB0aGUga2V5Ci0gICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVu
S2V5RXgoa2V5LCBleHRlbnNpb25zUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSwgMCwgS0VZX1JFQUQsICZleHRlbnNpb25zS2V5KTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IFJlZ09wZW5LZXlFeChrZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHRlbnNp
b25zUGF0aCksIDAsIEtFWV9SRUFELCAmZXh0ZW5zaW9uc0tleSk7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewogICAgICAgICAgICAgICAgIC8vIE5vdyBnZXQg
dGhlIHBsdWdpbnMgZGlyZWN0b3J5CkBAIC0xOTQsNyArMTk1LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3Jp
ZXMpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUmVnUXVlcnlWYWx1ZUV4KGV4dGVuc2lvbnNL
ZXksIFRFWFQoIlBsdWdpbnMiKSwgMCwgJnR5cGUsIChMUEJZVEUpJnBsdWdpbnNEaXJlY3RvcnlT
dHIsICZwbHVnaW5zRGlyZWN0b3J5U2l6ZSk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IEVSUk9SX1NVQ0NFU1MgJiYgdHlwZSA9PSBSRUdfU1opCi0gICAgICAgICAgICAgICAgICAg
IGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0Rp
cmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBk
aXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVn
aW5zRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CiAKICAgICAgICAgICAgICAg
ICBSZWdDbG9zZUtleShleHRlbnNpb25zS2V5KTsKICAgICAgICAgICAgIH0KQEAgLTIxMSw3ICsy
MTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGly
ZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogICAgIERXT1JEIHBsdWdpbkRpcmVjdG9y
eVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxc
UEZpbGVzXFxQbHVnaW5zIiksIHBsdWdpbkRpcmVjdG9yeVN0ciwgV1RGX0FSUkFZX0xFTkdUSChw
bHVnaW5EaXJlY3RvcnlTdHIpKTsKIAogICAgIGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAm
JiBwbHVnaW5EaXJlY3RvcnlTaXplIDw9IFdURl9BUlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5
U3RyKSkKLSAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhwbHVnaW5EaXJlY3RvcnlT
dHIsIHBsdWdpbkRpcmVjdG9yeVNpemUgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVu
ZCh3Y2hhclRvU3RyaW5nKHBsdWdpbkRpcmVjdG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAt
IDEpKTsKIAogICAgIERXT1JEIHR5cGU7CiAgICAgV0NIQVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5
U3RyW19NQVhfUEFUSF07CkBAIC0yMjAsNyArMjIxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0
b3IKICAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNI
SU5FLCBMIlNvZnR3YXJlXFxNaWNyb3NvZnRcXE1lZGlhUGxheWVyIiwgTCJJbnN0YWxsYXRpb24g
RGlyZWN0b3J5IiwgJnR5cGUsICZpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsICZpbnN0YWxsYXRp
b25EaXJlY3RvcnlTaXplKTsKIAogICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0
eXBlID09IFJFR19TWikKLSAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhpbnN0YWxs
YXRpb25EaXJlY3RvcnlTdHIsIGluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NI
QVIpIC0gMSkpOworICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0
YWxsYXRpb25EaXJlY3RvcnlTdHIsIGluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1
Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKQEAgLTI0NCwxMCArMjQ1
LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3Rvcnko
VmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9S
X1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBWZWN0b3I8aW50PiBhY3Jv
YmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOwor
ICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3
Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9u
cyhhY3JvYmF0VmVyc2lvbiwgbGF0ZXN0QWNyb2JhdFZlcnNpb24pKSB7CiAgICAgICAgICAgICBs
YXRlc3RBY3JvYmF0VmVyc2lvbiA9IGFjcm9iYXRWZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0
QWNyb2JhdFZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAg
ICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxl
bik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1NywxMCArMjU4LDEwIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRp
cmVjdG9yaWVzKQogICAgICAgICBEV09SRCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplID0gc2l6ZW9m
KGFjcm9iYXRJbnN0YWxsUGF0aFN0cik7CiAKICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5L
ZXlQYXRoID0gIlNvZnR3YXJlXFxBZG9iZVxcQWNyb2JhdCBSZWFkZXJcXCIgKyBsYXRlc3RBY3Jv
YmF0VmVyc2lvblN0cmluZyArICJcXEluc3RhbGxQYXRoIjsKLSAgICAgICAgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIGFjcm9iYXRQbHVnaW5LZXlQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCAmdHlwZSwgYWNyb2JhdElu
c3RhbGxQYXRoU3RyLCAmYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9
IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoYWNyb2JhdFBsdWdpbktleVBhdGgpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3RhbGxQ
YXRoU3RyLCAmYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdCA9
PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbkRpcmVj
dG9yeSA9IFN0cmluZyhhY3JvYmF0SW5zdGFsbFBhdGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0aFNp
emUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxicm93c2VyIjsKKyAgICAgICAgICAgIFN0cmlu
ZyBhY3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gd2NoYXJUb1N0cmluZyhhY3JvYmF0SW5zdGFsbFBh
dGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxi
cm93c2VyIjsKICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChhY3JvYmF0UGx1Z2luRGly
ZWN0b3J5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI4OSwxMCArMjkwLDEwIEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rv
cmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4gamF2YVZlcnNpb24gPSBwYXJzZVZlcnNpb25T
dHJpbmcoU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAgICAgVmVjdG9yPGludD4gamF2YVZl
cnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSk7
CiAgICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnMoamF2YVZlcnNpb24sIGxhdGVzdEphdmFWZXJz
aW9uKSkgewogICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb24gPSBqYXZhVmVyc2lvbjsKLSAg
ICAgICAgICAgIGxhdGVzdEphdmFWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4p
OworICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG5h
bWUsIG5hbWVMZW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDQsMTIgKzMwNSwxMiBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYg
ZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIHVzZU5ld1BsdWdpblNpemU7CiAKICAgICAgICAg
U3RyaW5nIGphdmFQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxKYXZhU29mdFxcSmF2YSBQbHVn
LWluXFwiICsgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmc7Ci0gICAgICAgIHJlc3VsdCA9IGdldFJl
Z2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgTCJVc2VOZXdKYXZhUGx1Z2luIiwgJnR5
cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNpemUpOworICAgICAgICByZXN1
bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKSwgTCJVc2VOZXdKYXZhUGx1Z2luIiwgJnR5
cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNpemUpOwogCiAgICAgICAgIGlm
IChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB1c2VOZXdQbHVnaW5WYWx1ZSA9PSAxKSB7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwg
amF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCks
IEwiSmF2YUhvbWUiLCAmdHlwZSwgamF2YUluc3RhbGxQYXRoU3RyLCAmamF2YUluc3RhbGxQYXRo
U2l6ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxf
TUFDSElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKSwg
TCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhT
aXplKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAg
ICAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGphdmFJbnN0YWxs
UGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJp
blxcbmV3X3BsdWdpbiI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3Rv
cnkgPSB3Y2hhclRvU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6
ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CiAgICAgICAgICAg
ICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGphdmFQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0zMzUsNyArMzM2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
c2FmYXJpUGx1Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGlmICghUGF0aFJlbW92ZUZpbGVTcGVj
KG1vZHVsZUZpbGVOYW1lU3RyKSkKICAgICAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgICAgICBw
bHVnaW5zRGlyZWN0b3J5ID0gU3RyaW5nKG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMi
OworICAgICAgICBwbHVnaW5zRGlyZWN0b3J5ID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5n
KG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOwogICAgIH0KIGV4aXQ6CiAgICAgcmV0
dXJuIHBsdWdpbnNEaXJlY3Rvcnk7CkBAIC0zNTEsMTAgKzM1MiwxMCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJl
Y3RvcmllcykKICAgICBXQ0hBUiBtYWNyb21lZGlhRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKIAog
ICAgIFBhdGhDb21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0
ciwgVEVYVCgibWFjcm9tZWRcXEZsYXNoIikpOwotICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNy
b21lZGlhRGlyZWN0b3J5U3RyKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIAogICAgIFBhdGhDb21i
aW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgibWFj
cm9tZWRcXFNob2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRp
YURpcmVjdG9yeVN0cik7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0No
YXJUb1N0cmluZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+
IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggNzExOWQ4ODU0MTUx
MTE2ZmM1ZGQ5ODRkM2FkMjJlMzVkYzU2MTFhYi4uYTFjY2Y3MWE5YmMzNGJjYTM0OWEyYjZlMjNm
YzM2MWYxMWJjNjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5QYWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBh
Y2thZ2VXaW4uY3BwCkBAIC0zNCwxMCArMzQsMTEgQEAKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNpbmNs
dWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDxzaGx3
YXBpLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Nyw3ICs0OCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VmVyc2lv
bkluZm8oY29uc3QgTFBWT0lEIHZlcnNpb25JbmZvRGF0YSwgY29uc3QgU3RyaW5nJiBpbmZvKQog
ICAgIFVJTlQgYnVmZmVyTGVuZ3RoOwogICAgIFN0cmluZyBzdWJJbmZvID0gIlxcU3RyaW5nZmls
ZUluZm9cXDA0MDkwNEU0XFwiICsgaW5mbzsKICAgICBib29sIHJldHZhbCA9IFZlclF1ZXJ5VmFs
dWVXKHZlcnNpb25JbmZvRGF0YSwKLSAgICAgICAgY29uc3RfY2FzdDxVQ2hhcio+KHN1YkluZm8u
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAorICAgICAgICBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoc3ViSW5mbyksCiAgICAgICAgICZidWZmZXIsICZidWZmZXJM
ZW5ndGgpOwogICAgIGlmICghcmV0dmFsIHx8IGJ1ZmZlckxlbmd0aCA9PSAwKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CkBAIC0xNjcsMTQgKzE2OCwxMyBAQCB2b2lkIFBsdWdpblBhY2thZ2U6
OmRldGVybWluZVF1aXJrcyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogYm9vbCBQbHVnaW5QYWNr
YWdlOjpmZXRjaEluZm8oKQogewogICAgIERXT1JEIHZlcnNpb25JbmZvU2l6ZSwgemVyb0hhbmRs
ZTsKLSAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjb25zdF9j
YXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSwgJnplcm9IYW5kbGUpOworICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5m
b1NpemVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLCAmemVyb0hhbmRsZSk7
CiAgICAgaWYgKHZlcnNpb25JbmZvU2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBhdXRvIHZlcnNpb25JbmZvRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPih2ZXJz
aW9uSW5mb1NpemUpOwogCi0gICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKGNvbnN0X2Nhc3Q8
VUNoYXIqPihtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAot
ICAgICAgICAgICAgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZ2V0KCkpKQor
ICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
bV9wYXRoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX25hbWUgPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9u
SW5mb0RhdGEuZ2V0KCksICJQcm9kdWN0TmFtZSIpOwpAQCAtMjQ0LDExICsyNDQsMTEgQEAgYm9v
bCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIAogICAgICAgICBTdHJpbmcgcGF0aCA9IG1fcGF0aC5z
dWJzdHJpbmcoMCwgbV9wYXRoLnJldmVyc2VGaW5kKCdcXCcpKTsKIAotICAgICAgICBpZiAoITo6
U2V0Q3VycmVudERpcmVjdG9yeVcocGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSkpCisgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIC8vIExvYWQgdGhlIGxpYnJhcnkKLSAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJy
YXJ5RXhXKG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwg
TE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOworICAgICAgICBtX21vZHVsZSA9IDo6TG9h
ZExpYnJhcnlFeFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCksIDAsIExPQURf
V0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKIAogICAgICAgICBpZiAoITo6U2V0Q3VycmVudERp
cmVjdG9yeVcoY3VycmVudFBhdGgpKSB7CiAgICAgICAgICAgICBpZiAobV9tb2R1bGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291
cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwYmJlZjVkM2E1
MDQxNmI0MTZhZDQ4MjIyOWI2MjQ2MWE4YmVmNGE3Li43MGNkYzFhNjFjNDExYTU3MjFjODJjNDJj
NWNkNDYyYzQzNzM5YjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmll
d1dpbi5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCkBA
IC03NjEsMTMgKzc2MiwxMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmls
ZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyX3QgbGVuLCBjb25zdAogCiAgICAgLy8gR2V0
IGZpbGUgaW5mbwogICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0cnM7Ci0gICAgaWYg
KEdldEZpbGVBdHRyaWJ1dGVzRXhXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkuZGF0YSgpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykgPT0gMCkKKyAgICBp
ZiAoIUdldEZpbGVBdHRyaWJ1dGVzRXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxl
bmFtZSksIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5Q
RVJSX0ZJTEVfTk9UX0ZPVU5EOwogCiAgICAgaWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBG
SUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9G
T1VORDsKIAotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoZmlsZW5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxF
X1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFu
ZGxlID0gQ3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKSwg
RklMRV9SRUFEX0RBVEEsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7
CiAgICAgCiAgICAgaWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAg
ICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311591</attachid>
            <date>2017-05-31 08:24:50 -0700</date>
            <delta_ts>2017-06-03 06:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170531182449.patch</filename>
            <type>text/plain</type>
            <size>20249</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5
MDAyOWRkMDM2NDA1MjZlY2UuLmFjMjExZjUxM2JhZjljOGIwZTEzMjJiOThlY2YyYWI1ZGUxZTg3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDUtMzAgIEtvbnN0YW50aW4gVG9rYXJldiAg
PGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNp
ZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XQ2hhclN0cmluZ0V4dHJhcy5oOiBBZGRlZCBuZXcg
aGVhZGVyIGZpbGUgd2l0aCBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb25zIGZvciBjb252ZXJzaW9u
IGJldHdlZW4gV1RGOjpTdHJpbmcgYW5kIHdjaGFydF90Ki4KKwogMjAxNy0wNS0yOSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBk
aXNhYmxlIGZhc3RlciBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQgZm9yIEFSTV9USFVNQjIgd2l0
aCBub24tRGFyd2luIE9TZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOTdhMzgwOTVjMjdmMzFhNGUwYmExYjFj
ZWFlYmE5MDRmZGM2YjczLi5jMTJiYzY0YTE5NjM1N2EzYTkxMDNmY2I0NWI0YWNhMmYxOGJiNDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMzAgIEtvbnN0YW50aW4gVG9r
YXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dz
LXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbnZlcnNpb25zIGZyb20gV1RGOjpTdHJpbmcgdG8g
d2NoYXJfdCogYW5kIHZpY2UgdmVyc2EuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdGFydENyZWF0
ZU1lZGlhU291cmNlKToKKwogMjAxNy0wNS0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMTc1MTUpOiBDb3JyZWN0IGl0ZXJhdG9y
IGludmFsaWRhdGlvbiBidWcgKEFHQUlOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDM1MTIwOWM2NjZl
MDM3ODQyNjg3ZTAxNTAwZjQzY2NkMGNjZjQ5ODguLjkzYmJiYzQ1MzRmOGJkN2FhOTk4MjNjYTIw
M2Y2NzBmMWVmMTU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0w
NS0zMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAg
Rml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRoIElDVSA1OS4xCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY29udmVyc2lvbnMg
ZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2ZXJzYS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGx1
Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6
OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjphZGRNb3pp
bGxhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlh
UGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEFkb2JlQWNyb2Jh
dFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRKYXZhUGx1Z2luRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmFyaVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVyc2lv
bkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0UmVhZEZpbGUpOgorCiAyMDE3LTA1LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1z
bG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dDaGFyU3RyaW5nRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dD
aGFyU3RyaW5nRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3YzFkODk3OWRjYjQ4Y2RkNDUwN2Q3NzAw
M2NhOGZlNzY0NGRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV0No
YXJTdHJpbmdFeHRyYXMuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB3Y2hhcl90KiBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8d2NoYXJfdCo+KHN0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLmRhdGEoKSk7Cit9CisKK2lubGluZSBTdHJpbmcgd2NoYXJUb1N0cmluZyhjb25zdCB3
Y2hhcl90KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7Cit9
CisKK2lubGluZSBTdHJpbmcgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMpCit7CisgICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFjdGVycywg
d2NzbGVuKGNoYXJhY3RlcnMpIC0gMSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcjsKK3VzaW5nIFdURjo6d2NoYXJUb1N0
cmluZzsKK3VzaW5nIFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBlZDMyZDE5Zjc0
MTQxN2Q1OTZhOTYyOGJjYzU3MmM0ZmI1Y2Y4OGEwLi40YTZmYzYzMTc1ZTg0M2E0NGYwMGJlMjMz
YTc4MjJkNzIyZjkwYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcApAQCAtNDIsNiArNDIsNyBAQAogCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBTT0ZUX0xJTktfTElCUkFSWShNZik7CiBTT0ZUX0xJ
TktfT1BUSU9OQUwoTWYsIE1GQ3JlYXRlU291cmNlUmVzb2x2ZXIsIEhSRVNVTFQsIFNUREFQSUNB
TExUWVBFLCAoSU1GU291cmNlUmVzb2x2ZXIqKikpOwpAQCAtMTQyLDcgKzE0Myw3IEBAIHN0YXRp
YyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5
cGVDYWNoZSgpCiAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKICAgICAgICAgQ0FMUFdTVFIgbWlt
ZVR5cGVBcnJheSA9IHByb3BWYXJNaW1lVHlwZUFycmF5LmNhbHB3c3RyOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZVR5cGVBcnJheS5jRWxlbXM7IGkrKykKLSAgICAgICAg
ICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChtaW1lVHlwZUFycmF5LnBFbGVtc1tpXSk7CisgICAg
ICAgICAgICBjYWNoZWRUeXBlcy5nZXQoKS5hZGQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5n
KG1pbWVUeXBlQXJyYXkucEVsZW1zW2ldKSk7CiAgICAgfQogCiAgICAgUHJvcFZhcmlhbnRDbGVh
cigmcHJvcFZhck1pbWVUeXBlQXJyYXkpOwpAQCAtNDYwLDExICs0NjEsOSBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3RhcnRDcmVhdGVNZWRpYVNvdXJjZShjb25z
dCBTdHJpbmcmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDT01QdHI8SVVua25v
d24+IGNhbmNlbENvb2tpZTsKLSAgICBWZWN0b3I8VUNoYXI+IHVybFNvdXJjZSA9IHVybC5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwotCiAgICAgQXN5bmNDYWxsYmFjayogY2FsbGJh
Y2sgPSBuZXcgQXN5bmNDYWxsYmFjayh0aGlzLCBmYWxzZSk7CiAKLSAgICBpZiAoRkFJTEVEKG1f
c291cmNlUmVzb2x2ZXItPkJlZ2luQ3JlYXRlT2JqZWN0RnJvbVVSTCh1cmxTb3VyY2UuZGF0YSgp
LCBNRl9SRVNPTFVUSU9OX01FRElBU09VUkNFLCBudWxscHRyLCAmY2FuY2VsQ29va2llLCBjYWxs
YmFjaywgbnVsbHB0cikpKQorICAgIGlmIChGQUlMRUQobV9zb3VyY2VSZXNvbHZlci0+QmVnaW5D
cmVhdGVPYmplY3RGcm9tVVJMKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih1cmwpLCBNRl9S
RVNPTFVUSU9OX01FRElBU09VUkNFLCBudWxscHRyLCAmY2FuY2VsQ29va2llLCBjYWxsYmFjaywg
bnVsbHB0cikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXgg
NjI1MTZiYjkzZTEzY2Q4YjUwNjMyMWE2MmQ3ZTY1MGU0NzlkNGVkZi4uOTA5OGY5MDZjMjNmMTNk
MjlhM2E1NWQ0ZTUzMDVhNzZmYzgwNDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtleSwgSGFzaFNldDxTdHJpbmc+JiBw
YXQKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTIHx8IHR5cGUgIT0gUkVHX1Na
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcGF0aHMuYWRkKFN0cmluZyhwYXRo
U3RyLCBwYXRoU3RyU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAgIHBhdGhzLmFk
ZCh3Y2hhclRvU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEp
KTsKICAgICB9CiAKICAgICBSZWdDbG9zZUtleShrZXkpOwpAQCAtODMsNyArODQsNyBAQCB2b2lk
IFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJp
bmc+JiBwYXRocykgY29uc3QKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIFN0cmluZyBwYXR0ZXJuID0gKml0ICsgIlxcKiI7CiAKLSAgICAgICAgaEZpbmQgPSBG
aW5kRmlyc3RGaWxlVyhwYXR0ZXJuLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpLCAmZmluZEZpbGVEYXRhKTsKKyAgICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0dGVybiksICZmaW5kRmlsZURhdGEpOwogCiAgICAg
ICAgIGlmIChoRmluZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtOTIsNyArOTMsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRo
c0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAg
IGlmIChmaW5kRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVD
VE9SWSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZp
bGVuYW1lID0gU3RyaW5nKGZpbmRGaWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURh
dGEuY0ZpbGVOYW1lKSk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3Ry
aW5nKGZpbmRGaWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1l
KSk7CiAgICAgICAgICAgICBpZiAoKCFmaWxlbmFtZS5zdGFydHNXaXRoKCJucCIsIGZhbHNlKSB8
fCAhZmlsZW5hbWUuZW5kc1dpdGgoImRsbCIsIGZhbHNlKSkgJiYKICAgICAgICAgICAgICAgICAo
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAicGx1Z2luLmRsbCIpIHx8
ICFpdC0+ZW5kc1dpdGgoIlNob2Nrd2F2ZSAxMCIsIGZhbHNlKSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xNzksMTEgKzE4MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96
aWxsYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAg
ICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5h
bWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1Bh
dGggPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CiAgICAg
ICAgICAgICBIS0VZIGV4dGVuc2lvbnNLZXk7CiAKICAgICAgICAgICAgIC8vIFRyeSBvcGVuaW5n
IHRoZSBrZXkKLSAgICAgICAgICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXksIGV4dGVuc2lv
bnNQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBLRVlfUkVB
RCwgJmV4dGVuc2lvbnNLZXkpOworICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtl
eSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKSwgMCwgS0VZX1JF
QUQsICZleHRlbnNpb25zS2V5KTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9T
VUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgLy8gTm93IGdldCB0aGUgcGx1Z2lucyBkaXJlY3Rv
cnkKQEAgLTE5NCw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdp
bkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBSZWdRdWVyeVZhbHVlRXgoZXh0ZW5zaW9uc0tleSwgVEVYVCgiUGx1Z2lucyIp
LCAwLCAmdHlwZSwgKExQQllURSkmcGx1Z2luc0RpcmVjdG9yeVN0ciwgJnBsdWdpbnNEaXJlY3Rv
cnlTaXplKTsKIAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAm
JiB0eXBlID09IFJFR19TWikKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5k
KFN0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGlyZWN0b3J5U2l6ZSAvIHNpemVv
ZihXQ0hBUikgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3
Y2hhclRvU3RyaW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3RvcnlTaXplIC8g
c2l6ZW9mKFdDSEFSKSAtIDEpKTsKIAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGV4dGVu
c2lvbnNLZXkpOwogICAgICAgICAgICAgfQpAQCAtMjExLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmlu
Zz4mIGRpcmVjdG9yCiAgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52
aXJvbm1lbnRTdHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiKSwg
cGx1Z2luRGlyZWN0b3J5U3RyLCBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikp
OwogCiAgICAgaWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVjdG9yeVNp
emUgPD0gV1RGX0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKQotICAgICAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbkRpcmVjdG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5
U2l6ZSAtIDEpKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcocGx1
Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwogCiAgICAgRFdPUkQg
dHlwZTsKICAgICBXQ0hBUiBpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHJbX01BWF9QQVRIXTsKQEAg
LTIyMCw3ICsyMjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVy
UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogICAgIEhSRVNVTFQgcmVz
dWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIEwiU29mdHdhcmVcXE1p
Y3Jvc29mdFxcTWVkaWFQbGF5ZXIiLCBMIkluc3RhbGxhdGlvbiBEaXJlY3RvcnkiLCAmdHlwZSwg
Jmluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUpOwog
CiAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAg
ICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwg
aW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAg
IGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0
ciwgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9y
PFN0cmluZz4mIGRpcmVjdG9yaWVzKQpAQCAtMjQ0LDEwICsyNDUsMTAgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGly
ZWN0b3JpZXMpCiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VW
ZXJzaW9uU3RyaW5nKFN0cmluZyhuYW1lLCBuYW1lTGVuKSk7CisgICAgICAgIFZlY3RvcjxpbnQ+
IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKHdjaGFyVG9TdHJpbmcobmFtZSwg
bmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGFjcm9iYXRWZXJzaW9uLCBs
YXRlc3RBY3JvYmF0VmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9u
ID0gYWNyb2JhdFZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmlu
ZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJz
aW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMjU3LDEwICsyNTgsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNy
b2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAg
IERXT1JEIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUgPSBzaXplb2YoYWNyb2JhdEluc3RhbGxQYXRo
U3RyKTsKIAogICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbktleVBhdGggPSAiU29mdHdhcmVc
XEFkb2JlXFxBY3JvYmF0IFJlYWRlclxcIiArIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nICsg
IlxcSW5zdGFsbFBhdGgiOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlf
TE9DQUxfTUFDSElORSwgYWNyb2JhdFBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZhY3Jv
YmF0SW5zdGFsbFBhdGhTaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShI
S0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihhY3JvYmF0UGx1
Z2luS2V5UGF0aCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZhY3JvYmF0SW5z
dGFsbFBhdGhTaXplKTsKIAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsK
LSAgICAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGFjcm9i
YXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikg
LSAxKSArICJcXGJyb3dzZXIiOworICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJl
Y3RvcnkgPSB3Y2hhclRvU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdEluc3Rh
bGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOwogICAgICAgICAg
ICAgZGlyZWN0b3JpZXMuYXBwZW5kKGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjg5LDEwICsyOTAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEphdmFQ
bHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBpZiAo
cmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBW
ZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwg
bmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lv
blN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKICAgICAgICAgaWYgKGNvbXBh
cmVWZXJzaW9ucyhqYXZhVmVyc2lvbiwgbGF0ZXN0SmF2YVZlcnNpb24pKSB7CiAgICAgICAgICAg
ICBsYXRlc3RKYXZhVmVyc2lvbiA9IGphdmFWZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0SmF2
YVZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRl
c3RKYXZhVmVyc2lvblN0cmluZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTMwNCwxMiArMzA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAg
ICAgRFdPUkQgdXNlTmV3UGx1Z2luU2l6ZTsKIAogICAgICAgICBTdHJpbmcgamF2YVBsdWdpbktl
eVBhdGggPSAiU29mdHdhcmVcXEphdmFTb2Z0XFxKYXZhIFBsdWctaW5cXCIgKyBsYXRlc3RKYXZh
VmVyc2lvblN0cmluZzsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xP
Q0FMX01BQ0hJTkUsIGphdmFQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZh
bHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFs
dWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBs
dWdpbktleVBhdGgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZh
bHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9T
VUNDRVNTICYmIHVzZU5ld1BsdWdpblZhbHVlID09IDEpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgTCJKYXZhSG9tZSIsICZ0eXBl
LCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLCBMIkphdmFIb21lIiwgJnR5cGUs
IGphdmFJbnN0YWxsUGF0aFN0ciwgJmphdmFJbnN0YWxsUGF0aFNpemUpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGph
dmFQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoamF2YUluc3RhbGxQYXRoU3RyLCBqYXZhSW5zdGFs
bFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYmluXFxuZXdfcGx1Z2luIjsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgamF2YVBsdWdpbkRpcmVjdG9yeSA9IHdjaGFyVG9TdHJpbmco
amF2YUluc3RhbGxQYXRoU3RyLCBqYXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpICsgIlxcYmluXFxuZXdfcGx1Z2luIjsKICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQoamF2YVBsdWdpbkRpcmVjdG9yeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTMzNSw3ICszMzYsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzYWZhcmlQbHVnaW5zRGlyZWN0
b3J5KCkKICAgICAgICAgaWYgKCFQYXRoUmVtb3ZlRmlsZVNwZWMobW9kdWxlRmlsZU5hbWVTdHIp
KQogICAgICAgICAgICAgZ290byBleGl0OwogCi0gICAgICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBT
dHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lucyI7CisgICAgICAgIHBsdWdpbnNE
aXJlY3RvcnkgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobW9kdWxlRmlsZU5hbWVTdHIp
ICsgIlxcUGx1Z2lucyI7CiAgICAgfQogZXhpdDoKICAgICByZXR1cm4gcGx1Z2luc0RpcmVjdG9y
eTsKQEAgLTM1MSwxMCArMzUyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21lZGlh
UGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgIFdDSEFS
IG1hY3JvbWVkaWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwogCiAgICAgUGF0aENvbWJpbmUobWFj
cm9tZWRpYURpcmVjdG9yeVN0ciwgc3lzdGVtRGlyZWN0b3J5U3RyLCBURVhUKCJtYWNyb21lZFxc
Rmxhc2giKSk7Ci0gICAgZGlyZWN0b3JpZXMuYXBwZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIp
OworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFj
cm9tZWRpYURpcmVjdG9yeVN0cikpOwogCiAgICAgUGF0aENvbWJpbmUobWFjcm9tZWRpYURpcmVj
dG9yeVN0ciwgc3lzdGVtRGlyZWN0b3J5U3RyLCBURVhUKCJtYWNyb21lZFxcU2hvY2t3YXZlIDEw
IikpOwotICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNyb21lZGlhRGlyZWN0b3J5U3RyKTsKKyAg
ICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVk
aWFEaXJlY3RvcnlTdHIpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRl
ZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9Q
bHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9Q
bHVnaW5QYWNrYWdlV2luLmNwcAppbmRleCA3MTE5ZDg4NTQxNTExMTZmYzVkZDk4NGQzYWQyMmUz
NWRjNTYxMWFiLi5hMWNjZjcxYTliYzM0YmNhMzQ5YTJiNmUyM2ZjMzYxZjExYmM2MmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKQEAgLTM0
LDEwICszNCwxMSBAQAogI2luY2x1ZGUgIlBsdWdpbkRlYnVnLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgorI2luY2x1ZGUgPHNobHdhcGkuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ3LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyBnZXRWZXJzaW9uSW5mbyhjb25zdCBMUFZPSUQg
dmVyc2lvbkluZm9EYXRhLCBjb25zdCBTdHJpbmcmIGluZm8pCiAgICAgVUlOVCBidWZmZXJMZW5n
dGg7CiAgICAgU3RyaW5nIHN1YkluZm8gPSAiXFxTdHJpbmdmaWxlSW5mb1xcMDQwOTA0RTRcXCIg
KyBpbmZvOwogICAgIGJvb2wgcmV0dmFsID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lvbkluZm9EYXRh
LAotICAgICAgICBjb25zdF9jYXN0PFVDaGFyKj4oc3ViSW5mby5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSksCisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihzdWJJbmZvKSwKICAgICAgICAgJmJ1ZmZlciwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKCFy
ZXR2YWwgfHwgYnVmZmVyTGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAg
LTE2NywxNCArMTY4LDEzIEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVpcmtzKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiB7
CiAgICAgRFdPUkQgdmVyc2lvbkluZm9TaXplLCB6ZXJvSGFuZGxlOwotICAgIHZlcnNpb25JbmZv
U2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKGNvbnN0X2Nhc3Q8VUNoYXIqPihtX3BhdGgu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAmemVyb0hhbmRsZSk7Cisg
ICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKG1fcGF0aCksICZ6ZXJvSGFuZGxlKTsKICAgICBpZiAodmVyc2lvbklu
Zm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdmVyc2lvbklu
Zm9EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAg
ICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coY29uc3RfY2FzdDxVQ2hhcio+KG1fcGF0aC5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksCi0gICAgICAgICAgICAwLCB2ZXJz
aW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVy
c2lvbkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLCAwLCB2ZXJzaW9u
SW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIlBy
b2R1Y3ROYW1lIik7CkBAIC0yNDQsMTEgKzI0NCwxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6Omxv
YWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbV9wYXRoLnN1YnN0cmluZygwLCBtX3BhdGgu
cmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5
VyhwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICAgICAg
aWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihw
YXRoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gTG9hZCB0aGUg
bGlicmFyeQotICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcobV9wYXRoLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9T
RUFSQ0hfUEFUSCk7CisgICAgICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNI
X1BBVEgpOwogCiAgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhjdXJyZW50UGF0
aCkpIHsKICAgICAgICAgICAgIGlmIChtX21vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDBiYmVmNWQzYTUwNDE2YjQxNmFkNDgyMjI5YjYy
NDYxYThiZWY0YTcuLjcwY2RjMWE2MWM0MTFhNTcyMWM4MmM0MmM1Y2Q0NjJjNDM3MzliNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtNzEsNiAr
NzEsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKQEAgLTc2MSwxMyArNzYyLDEzIEBA
IE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVm
ZmVyLCB1aW50MzJfdCBsZW4sIGNvbnN0CiAKICAgICAvLyBHZXQgZmlsZSBpbmZvCiAgICAgV0lO
MzJfRklMRV9BVFRSSUJVVEVfREFUQSBhdHRyczsKLSAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNF
eFcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdldEZp
bGVFeEluZm9TdGFuZGFyZCwgJmF0dHJzKSA9PSAwKQorICAgIGlmICghR2V0RmlsZUF0dHJpYnV0
ZXNFeFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKSwgR2V0RmlsZUV4SW5m
b1N0YW5kYXJkLCAmYXR0cnMpKQogICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7
CiAKICAgICBpZiAoYXR0cnMuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVD
VE9SWSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCi0gICAgSEFORExF
IGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BF
Tl9FWElTVElORywgMCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLCBGSUxFX1JFQURfREFUQSwgRklM
RV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsKICAgICAKICAgICBpZiAoZmls
ZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJ
TEVfTk9UX0ZPVU5EOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311921</attachid>
            <date>2017-06-03 06:50:03 -0700</date>
            <delta_ts>2017-06-03 07:07:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603165002.patch</filename>
            <type>text/plain</type>
            <size>27325</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi4xMTQxYTRhZGU3ZDA5N2Fi
YjgzMzQ4MDk2NWMzZjFiYjk1ZmU5ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSB3Y2hhcl90KiB0byBXVEY6OlN0cmluZy4KKworICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjA5OTVmMWEyNzJh
ZjU3NTU1ZmNmNjE3ZGZlMjg3ZTMyYjRjODYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XQ2hh
clN0cmluZ0V4dHJhcy5oOiBBZGRlZCBuZXcgaGVhZGVyIGZpbGUgd2l0aCBoZWxwZXIKKyAgICAg
ICAgZnVuY3Rpb25zIGZvciBjb252ZXJzaW9uIGJldHdlZW4gV1RGOjpTdHJpbmcgYW5kIHdjaGFy
dF90Ki4KKwogMjAxNy0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGZhc3RlciBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQgZm9yIEFSTV9USFVNQjIgd2l0aCBub24tRGFyd2luIE9TZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzOTdhMzgwOTVjMjdmMzFhNGUwYmExYjFjZWFlYmE5MDRmZGM2YjczLi5mZjUxNjMxM2NhNTlk
OTBiYTZlODFiZTNiOGUyODExY2IxMTMxYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTctMDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisg
ICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbnZl
cnNpb25zIGZyb20gV1RGOjpTdHJpbmcgdG8gd2NoYXJfdCogYW5kIHZpY2UgdmVyc2EuCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1pbWVUeXBlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpzdGFydENyZWF0ZU1lZGlhU291cmNlKToKKwogMjAxNy0wNS0zMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMTc1MTUpOiBDb3JyZWN0IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBidWcgKEFHQUlOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDM1MTIwOWM2NjZlMDM3ODQyNjg3ZTAxNTAwZjQzY2NkMGNjZjQ5ODgu
LjhmZTQzYTNmZGI5NGJkYWE3NzcwMThkNmNlY2MzNjlkYmFjMjhkYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5u
dWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMg
Y29kZSB3aXRoIElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBh
bmQgdmljZSB2ZXJzYS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6
CisgICAgICAgIChXZWJDb3JlOjphZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjphZGRKYXZhUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmFy
aVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdp
bkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VmVyc2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6
OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUpOgorCiAyMDE3LTA1LTMwICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwgaXMg
Zmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggMDVlMjczMzhiMjg5ZDQ5Y2JiNTUyMjcxNmQ5MzI4OGMyNzUxODMwYy4uMGQ5
YjUzZDUxZGM1NTMyMTEyYjQ0YzRhNTE0NTMzMmU2NzNjNDg5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBPUyhXSU5ET1dTKQpAQCAtMTA4LDcgKzEwOSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGlt
ZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29s
IGFzCiAgICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlv
bjsKICAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRp
b24pOwogICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1Qo
KSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlv
bi5TdGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3aW5UaW1lWm9uZU5hbWUpKTsKKyAgICAgICAgICAgIFN0
cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpv
bmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKICAgICAgICAg
ICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV0NoYXJTdHJpbmdF
eHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NzRmMjM0YzljMWYxYjViM2MwMDlkZWI3ZTJjMzkwODAxZmMy
Mjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XQ2hhclN0cmluZ0V4
dHJhcy5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgS29uc3Rh
bnRpbiBUb2thcmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIFZlY3Rvcjx3Y2hhcl90PiBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgVmVjdG9yPHdjaGFy
X3Q+IHJlc3VsdDsKKworICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCgpICsgMSk7CisKKyAgICAgICAgaWYgKHN0
cmluZy5pczhCaXQoKSkgeworICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0g
c3RyaW5nLmltcGwoKS5jaGFyYWN0ZXJzOCgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdHJpbmcubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4W2ldKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBzdHJpbmcuaW1wbCgpLmNoYXJhY3RlcnMx
NigpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIHN0cmluZy5pbXBs
KCkubGVuZ3RoKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgU3RyaW5nIHdjaGFyVG9TdHJp
bmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGNoYXJhY3RlcnMpLCBs
ZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhj
b25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQoreworICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKGNo
YXJhY3RlcnMsIHdjc2xlbihjaGFyYWN0ZXJzKSAtIDEpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXI7Cit1c2luZyBXVEY6
OndjaGFyVG9TdHJpbmc7Cit1c2luZyBXVEY6Om51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA0ZjQ5ZWJjYTExNjE4YWIyYmNhN2EzNzll
NTcxNjBlMGNiYmMyYWUwLi5hMWRlMDI0YjMwNGVkYjEwMTJiNTk5ZjU0NzBhNDBlZTc4ZGY5ZTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00NywxNSArNDcsNiBAQCBTdHJpbmc6
OlN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAot
Ly8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRlcm1p
bmF0ZWQgc291cmNlLgotU3RyaW5nOjpTdHJpbmcoY29uc3QgVUNoYXIqIHN0cikKLXsKLSAgICBp
ZiAoIXN0cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlKHN0ciwgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhzdHIpKTsKLX0KLQogLy8gQ29u
c3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCiBTdHJpbmc6OlN0cmluZyhjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtNDQzLDI4ICs0MzQsNiBA
QCBib29sIFN0cmluZzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotVmVjdG9yPFVDaGFyPiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLQotICAgIGlmICht
X2ltcGwpIHsKLSAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKCkg
KyAxKTsKLQotICAgICAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzOCA9IG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4W2ldKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBtX2ltcGwtPmNoYXJhY3RlcnMxNigp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIG1faW1wbC0+bGVuZ3Ro
KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCiBTdHJpbmcgU3RyaW5nOjpmb3JtYXQoY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCBhcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
aW5kZXggNmEyNDA2Yzg3MDRiYjY5YWMzMTJhYWJjZTQyMjAwOTAwZTY2ZmRlMS4uNjhlNDQ4MWQ3
MzQwZTY0YzRjMjQzZjg2M2NhMjAzNGQ3MTAwNmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CkBAIC05NCw5ICs5NCw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KICAgICBleHBsaWNpdCBTdHJpbmcoY29u
c3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYpOwogCi0g
ICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRl
cm1pbmF0ZWQgc291cmNlLgotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3Qg
VUNoYXIqKTsKLQogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMjU2LDggKzI1Myw2IEBA
IHB1YmxpYzoKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2ln
bmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIGNh
c2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdub3Jp
bmdDYXNlKHN0ciwgc3RhcnQpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVmVjdG9y
PFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwotICAgIAogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWdu
ZWQpIGNvbnN0OyAvLyBEaXR0by4KICAgICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNv
bnN0IHsgcmV0dXJuIGZpbmQoYykgIT0gbm90Rm91bmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDFjOTY1OTE3MDU5YzEzMzE1Zjlm
MDFhYzA4NDZlYTU4ZDcxMTQzNmIuLjljOTExMTQyYTFlZWU0NzRmMDZkNjdmZTk1ZDczNTU5ODI0
ZDY5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtMTM0MSw3ICsxMzQxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAgICAg
ICBub2RlVmFsdWUgPSBub2RlLT5ub2RlVmFsdWUoKTsKICAgICAgICAgaWYgKG5vZGVWYWx1ZS5s
ZW5ndGgoKSA+IG1heFRleHRTaXplKSB7CiAgICAgICAgICAgICBub2RlVmFsdWUgPSBub2RlVmFs
dWUubGVmdChtYXhUZXh0U2l6ZSk7Ci0gICAgICAgICAgICBub2RlVmFsdWUuYXBwZW5kKGVsbGlw
c2lzVUNoYXIpOworICAgICAgICAgICAgbm9kZVZhbHVlLmFwcGVuZChlbGxpcHNpc1VDaGFyLCBz
aXplb2YoZWxsaXBzaXNVQ2hhcikpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTm9kZTo6QVRUUklCVVRFX05PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGVkMzJkMTlmNzQxNDE3ZDU5NmE5NjI4YmNjNTcyYzRm
YjVjZjg4YTAuLjZiZGJkYjZiY2ZlYmQ3YmRlMTVhMWJkMDQzOWM5ZDA4OWU2NTZiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIFNPRlRfTElOS19MSUJSQVJZKE1mKTsKIFNPRlRfTElOS19PUFRJT05BTChNZiwgTUZDcmVh
dGVTb3VyY2VSZXNvbHZlciwgSFJFU1VMVCwgU1REQVBJQ0FMTFRZUEUsIChJTUZTb3VyY2VSZXNv
bHZlcioqKSk7CkBAIC0xNDIsNyArMTQzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkKICAgICBpZiAoU1VD
Q0VFREVEKGhyKSkgewogICAgICAgICBDQUxQV1NUUiBtaW1lVHlwZUFycmF5ID0gcHJvcFZhck1p
bWVUeXBlQXJyYXkuY2FscHdzdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
aW1lVHlwZUFycmF5LmNFbGVtczsgaSsrKQotICAgICAgICAgICAgY2FjaGVkVHlwZXMuZ2V0KCku
YWRkKG1pbWVUeXBlQXJyYXkucEVsZW1zW2ldKTsKKyAgICAgICAgICAgIGNhY2hlZFR5cGVzLmdl
dCgpLmFkZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNb
aV0pKTsKICAgICB9CiAKICAgICBQcm9wVmFyaWFudENsZWFyKCZwcm9wVmFyTWltZVR5cGVBcnJh
eSk7CkBAIC00NjAsNyArNDYxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgQ09NUHRyPElVbmtub3duPiBjYW5jZWxDb29raWU7Ci0gICAg
VmVjdG9yPFVDaGFyPiB1cmxTb3VyY2UgPSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gdXJsU291cmNlID0gc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKHVybCk7CiAKICAgICBBc3luY0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBBc3lu
Y0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBjOGYzMGJhNWQ4NTcwM2ZmN2VhOGQ0ODFhM2Zi
NGE5Y2YyYjQ2MjQ3Li4wZGFhMjAwYzBlMWI5ODFlZWQ3YzY0MjI2ZGFkNDNkODg3MTU3NGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApA
QCAtMjk0LDcgKzI5NCw4IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbk5hbWUo
aW50IGNvbCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoY29sdW1uQ291
bnQoKSA8PSBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYobV9z
dGF0ZW1lbnQsIGNvbCkpKTsKKyAgICBjb25zdCBVQ2hhciogY29sdW1uTmFtZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYobV9zdGF0ZW1lbnQs
IGNvbCkpOworICAgIHJldHVybiBTdHJpbmcoY29sdW1uTmFtZSwgV1RGOjpsZW5ndGhPZk51bGxU
ZXJtaW5hdGVkU3RyaW5nKGNvbHVtbk5hbWUpKTsKIH0KIAogU1FMVmFsdWUgU1FMaXRlU3RhdGVt
ZW50OjpnZXRDb2x1bW5WYWx1ZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCA2MjUxNmJiOTNlMTNjZDhiNTA2MzIxYTYy
ZDdlNjUwZTQ3OWQ0ZWRmLi4wZTdiMWVjMzJmYmU5MjVlZmQyYTc5OGFjYTVmNjdkZmI0NjFjNjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBh
Y2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIs
NyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnko
SEtFWSByb290S2V5LCBIYXNoU2V0PFN0cmluZz4mIHBhdAogICAgICAgICBpZiAocmVzdWx0ICE9
IEVSUk9SX1NVQ0NFU1MgfHwgdHlwZSAhPSBSRUdfU1opCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBwYXRocy5hZGQoU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9m
KFdDSEFSKSAtIDEpKTsKKyAgICAgICAgcGF0aHMuYWRkKHdjaGFyVG9TdHJpbmcocGF0aFN0ciwg
cGF0aFN0clNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogICAgIH0KIAogICAgIFJlZ0Nsb3Nl
S2V5KGtleSk7CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdp
blBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAgIGZv
ciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5EaXJlY3Rvcmll
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAq
aXQgKyAiXFwqIjsKIAotICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHBhdHRlcm4uY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksICZmaW5kRmlsZURhdGEpOworICAg
ICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihw
YXR0ZXJuKS5kYXRhKCksICZmaW5kRmlsZURhdGEpOwogCiAgICAgICAgIGlmIChoRmluZCA9PSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTIsNyArOTMs
NyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFz
aFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgIGlmIChmaW5kRmlsZURhdGEu
ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gU3RyaW5nKGZp
bmRGaWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7Cisg
ICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRGaWxlRGF0YS5j
RmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAgICAgICBp
ZiAoKCFmaWxlbmFtZS5zdGFydHNXaXRoKCJucCIsIGZhbHNlKSB8fCAhZmlsZW5hbWUuZW5kc1dp
dGgoImRsbCIsIGZhbHNlKSkgJiYKICAgICAgICAgICAgICAgICAoIWVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAicGx1Z2luLmRsbCIpIHx8ICFpdC0+ZW5kc1dpdGgoIlNo
b2Nrd2F2ZSAxMCIsIGZhbHNlKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzks
MTEgKzE4MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9y
aWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgIGlmIChyZXN1bHQg
IT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
U3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5z
aW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSB3Y2hhclRvU3RyaW5n
KG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CiAgICAgICAgICAgICBIS0VZIGV4dGVu
c2lvbnNLZXk7CiAKICAgICAgICAgICAgIC8vIFRyeSBvcGVuaW5nIHRoZSBrZXkKLSAgICAgICAg
ICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXksIGV4dGVuc2lvbnNQYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkp
OworICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKS5kYXRhKCksIDAsIEtFWV9SRUFELCAmZXh0ZW5z
aW9uc0tleSk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewog
ICAgICAgICAgICAgICAgIC8vIE5vdyBnZXQgdGhlIHBsdWdpbnMgZGlyZWN0b3J5CkBAIC0xOTQs
NyArMTk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3Rvcmll
cyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
UmVnUXVlcnlWYWx1ZUV4KGV4dGVuc2lvbnNLZXksIFRFWFQoIlBsdWdpbnMiKSwgMCwgJnR5cGUs
IChMUEJZVEUpJnBsdWdpbnNEaXJlY3RvcnlTdHIsICZwbHVnaW5zRGlyZWN0b3J5U2l6ZSk7CiAK
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYgdHlwZSA9PSBS
RUdfU1opCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1
Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0g
MSkpOworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmlu
ZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hB
UikgLSAxKSk7CiAKICAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShleHRlbnNpb25zS2V5KTsK
ICAgICAgICAgICAgIH0KQEAgLTIxMSw3ICsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
V2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rv
cgogICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50U3Ry
aW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiksIHBsdWdpbkRpcmVj
dG9yeVN0ciwgV1RGX0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKTsKIAogICAgIGlm
IChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlTaXplIDw9IFdURl9B
UlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5U3RyKSkKLSAgICAgICAgZGlyZWN0b3JpZXMuYXBw
ZW5kKFN0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNpemUgLSAxKSk7
CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKHBsdWdpbkRpcmVjdG9y
eVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKIAogICAgIERXT1JEIHR5cGU7CiAgICAg
V0NIQVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyW19NQVhfUEFUSF07CkBAIC0yMjAsNyArMjIx
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVj
dG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJl
Z2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBMIlNvZnR3YXJlXFxNaWNyb3NvZnRcXE1l
ZGlhUGxheWVyIiwgTCJJbnN0YWxsYXRpb24gRGlyZWN0b3J5IiwgJnR5cGUsICZpbnN0YWxsYXRp
b25EaXJlY3RvcnlTdHIsICZpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplKTsKIAogICAgIGlmIChy
ZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09IFJFR19TWikKLSAgICAgICAgZGlyZWN0
b3JpZXMuYXBwZW5kKFN0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGluc3RhbGxhdGlv
bkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBkaXJlY3Rvcmll
cy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGluc3RhbGxh
dGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBk
aXJlY3RvcmllcykKQEAgLTI0NCwxMCArMjQ1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRB
ZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQog
ICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmlu
ZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0VmVy
c2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsK
ICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhhY3JvYmF0VmVyc2lvbiwgbGF0ZXN0QWNyb2Jh
dFZlcnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvbiA9IGFjcm9iYXRW
ZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcgPSBTdHJpbmco
bmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyA9
IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1
NywxMCArMjU4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5E
aXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBEV09SRCBhY3Jv
YmF0SW5zdGFsbFBhdGhTaXplID0gc2l6ZW9mKGFjcm9iYXRJbnN0YWxsUGF0aFN0cik7CiAKICAg
ICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxBZG9iZVxcQWNy
b2JhdCBSZWFkZXJcXCIgKyBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyArICJcXEluc3RhbGxQ
YXRoIjsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJ
TkUsIGFjcm9iYXRQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3RhbGxQYXRoU3RyLCAmYWNyb2JhdEluc3RhbGxQ
YXRoU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9N
QUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoYWNyb2JhdFBsdWdpbktleVBhdGgp
LmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxs
UGF0aFNpemUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAg
ICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoYWNyb2JhdElu
c3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEp
ICsgIlxcYnJvd3NlciI7CisgICAgICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbkRpcmVjdG9y
eSA9IHdjaGFyVG9TdHJpbmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBh
dGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CiAgICAgICAgICAgICBk
aXJlY3Rvcmllcy5hcHBlbmQoYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yODksMTAgKzI5MCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdp
bkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIGlmIChyZXN1
bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3Rv
cjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0cmluZyhuYW1lLCBuYW1l
TGVuKSk7CisgICAgICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3Ry
aW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFyZVZl
cnNpb25zKGphdmFWZXJzaW9uLCBsYXRlc3RKYXZhVmVyc2lvbikpIHsKICAgICAgICAgICAgIGxh
dGVzdEphdmFWZXJzaW9uID0gamF2YVZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RKYXZhVmVy
c2lvblN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAgIGxhdGVzdEph
dmFWZXJzaW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzA0LDEyICszMDUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEph
dmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBE
V09SRCB1c2VOZXdQbHVnaW5TaXplOwogCiAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luS2V5UGF0
aCA9ICJTb2Z0d2FyZVxcSmF2YVNvZnRcXEphdmEgUGx1Zy1pblxcIiArIGxhdGVzdEphdmFWZXJz
aW9uU3RyaW5nOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxf
TUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCksIEwiVXNlTmV3SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUs
ICZ1c2VOZXdQbHVnaW5TaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShI
S0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihqYXZhUGx1Z2lu
S2V5UGF0aCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdp
blZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJP
Ul9TVUNDRVNTICYmIHVzZU5ld1BsdWdpblZhbHVlID09IDEpIHsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0
aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgTCJKYXZhSG9tZSIsICZ0
eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRhdGEoKSwgTCJKYXZhSG9t
ZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICAgICAgICAg
IFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwg
amF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3Bs
dWdpbiI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3RvcnkgPSB3Y2hh
clRvU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVv
ZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CiAgICAgICAgICAgICAgICAgZGly
ZWN0b3JpZXMuYXBwZW5kKGphdmFQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0zMzUsNyArMzM2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgc2FmYXJpUGx1
Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGlmICghUGF0aFJlbW92ZUZpbGVTcGVjKG1vZHVsZUZp
bGVOYW1lU3RyKSkKICAgICAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgICAgICBwbHVnaW5zRGly
ZWN0b3J5ID0gU3RyaW5nKG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOworICAgICAg
ICBwbHVnaW5zRGlyZWN0b3J5ID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1vZHVsZUZp
bGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOwogICAgIH0KIGV4aXQ6CiAgICAgcmV0dXJuIHBsdWdp
bnNEaXJlY3Rvcnk7CkBAIC0zNTEsMTAgKzM1MiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
TWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykK
ICAgICBXQ0hBUiBtYWNyb21lZGlhRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKIAogICAgIFBhdGhD
b21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgi
bWFjcm9tZWRcXEZsYXNoIikpOwotICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNyb21lZGlhRGly
ZWN0b3J5U3RyKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRv
U3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIAogICAgIFBhdGhDb21iaW5lKG1hY3Jv
bWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgibWFjcm9tZWRcXFNo
b2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRpYURpcmVjdG9y
eVN0cik7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
ZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRh
dGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggNzExOWQ4ODU0MTUxMTE2ZmM1ZGQ5
ODRkM2FkMjJlMzVkYzU2MTFhYi4uODNmZmU3YzA5OWQwZDI3Njk5YjQyNjc0YTEyOTg5YjQ4MjIw
ODY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4u
Y3BwCkBAIC0zNCwxMCArMzQsMTEgQEAKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNpbmNsdWRlIDxzaGx3
YXBpLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDxzaGx3YXBpLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00Nyw3ICs0OCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VmVyc2lvbkluZm8oY29u
c3QgTFBWT0lEIHZlcnNpb25JbmZvRGF0YSwgY29uc3QgU3RyaW5nJiBpbmZvKQogICAgIFVJTlQg
YnVmZmVyTGVuZ3RoOwogICAgIFN0cmluZyBzdWJJbmZvID0gIlxcU3RyaW5nZmlsZUluZm9cXDA0
MDkwNEU0XFwiICsgaW5mbzsKICAgICBib29sIHJldHZhbCA9IFZlclF1ZXJ5VmFsdWVXKHZlcnNp
b25JbmZvRGF0YSwKLSAgICAgICAgY29uc3RfY2FzdDxVQ2hhcio+KHN1YkluZm8uY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAorICAgICAgICBzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoc3ViSW5mbykuZGF0YSgpLAogICAgICAgICAmYnVmZmVyLCAmYnVmZmVyTGVu
Z3RoKTsKICAgICBpZiAoIXJldHZhbCB8fCBidWZmZXJMZW5ndGggPT0gMCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtMTY3LDE0ICsxNjgsMTMgQEAgdm9pZCBQbHVnaW5QYWNrYWdlOjpk
ZXRlcm1pbmVRdWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIGJvb2wgUGx1Z2luUGFja2Fn
ZTo6ZmV0Y2hJbmZvKCkKIHsKICAgICBEV09SRCB2ZXJzaW9uSW5mb1NpemUsIHplcm9IYW5kbGU7
Ci0gICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcoY29uc3RfY2Fz
dDxVQ2hhcio+KG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSks
ICZ6ZXJvSGFuZGxlKTsKKyAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9T
aXplVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksICZ6ZXJvSGFu
ZGxlKTsKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGF1dG8gdmVyc2lvbkluZm9EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coY29uc3Rf
Y2FzdDxVQ2hhcio+KG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksCi0gICAgICAgICAgICAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQo
KSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX25hbWUgPSBnZXRWZXJzaW9u
SW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJQcm9kdWN0TmFtZSIpOwpAQCAtMjQ0LDExICsy
NDQsMTEgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIAogICAgICAgICBTdHJpbmcgcGF0
aCA9IG1fcGF0aC5zdWJzdHJpbmcoMCwgbV9wYXRoLnJldmVyc2VGaW5kKCdcXCcpKTsKIAotICAg
ICAgICBpZiAoITo6U2V0Q3VycmVudERpcmVjdG9yeVcocGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBMb2FkIHRoZSBsaWJyYXJ5Ci0gICAgICAgIG1f
bW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKKyAgICAg
ICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihtX3BhdGgpLmRhdGEoKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOwogCiAg
ICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhjdXJyZW50UGF0aCkpIHsKICAgICAg
ICAgICAgIGlmIChtX21vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdp
bnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXdXaW4uY3BwCmluZGV4IDBiYmVmNWQzYTUwNDE2YjQxNmFkNDgyMjI5YjYyNDYxYThiZWY0YTcu
LmJkNzFhNWVhNmNlNmVhNzgzZjdhNzgyZTI1OWMxZWE3MjlkNmQyOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKQEAgLTc2MSwxMyArNzYyLDEzIEBAIE5QRXJyb3IgUGx1
Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzJf
dCBsZW4sIGNvbnN0CiAKICAgICAvLyBHZXQgZmlsZSBpbmZvCiAgICAgV0lOMzJfRklMRV9BVFRS
SUJVVEVfREFUQSBhdHRyczsKLSAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNFeFcoZmlsZW5hbWUu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdldEZpbGVFeEluZm9TdGFu
ZGFyZCwgJmF0dHJzKSA9PSAwKQorICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEdldEZpbGVFeEluZm9TdGFu
ZGFyZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCiAg
ICAgaWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkp
CiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgIEhBTkRMRSBmaWxl
SGFuZGxlID0gQ3JlYXRlRmlsZVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJ
U1RJTkcsIDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBG
SUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIDAsIDApOwogICAgIAogICAgIGlmIChm
aWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gTlBFUlJf
RklMRV9OT1RfRk9VTkQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nT3BlcmF0b3JzLmNwcAppbmRleCA3YTFkOTI5N2Y2Y2Q5ODg1YWJlYTdjMmUyZjA1NTFmM2M1
MTU0YmFkLi42NjIyMTU3ZDBjNGQ3YzEyOGE4YzNhYTZlMWQyMmIwNWEzZDlmYWQ2IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKQEAg
LTE5Miw3ICsxOTIsNyBAQCBURVNUKFdURiwgQ29uY2F0ZW5hdGVDaGFyYWN0ZXJBcnJheUFuZEVt
cHR5U3RyaW5nKQogICAgIFVDaGFyIHVjaGFyQXJyYXlbXSA9IHsgJ3QnLCAnZScsICdzJywgJ3Qn
LCAnXDAnIH07CiAgICAgU3RyaW5nIGNvbmNhdGVuYXRpb24xNiA9IHVjaGFyQXJyYXkgKyBlbXB0
eVN0cmluZzsKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQpLCBjb25jYXRl
bmF0aW9uMTYubGVuZ3RoKCkpOwotICAgIEFTU0VSVF9UUlVFKGNvbmNhdGVuYXRpb24xNiA9PSBT
dHJpbmcodWNoYXJBcnJheSkpOworICAgIEFTU0VSVF9UUlVFKGNvbmNhdGVuYXRpb24xNiA9PSBT
dHJpbmcodWNoYXJBcnJheSwgNCkpOwogCiAgICAgTENoYXIgbGNoYXJBcnJheVtdID0geyAndCcs
ICdlJywgJ3MnLCAndCcsICdcMCcgfTsKICAgICBTdHJpbmcgY29uY2F0ZW5hdGlvbjggPSBsY2hh
ckFycmF5ICsgZW1wdHlTdHJpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311925</attachid>
            <date>2017-06-03 07:07:50 -0700</date>
            <delta_ts>2017-06-03 07:14:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603170749.patch</filename>
            <type>text/plain</type>
            <size>27328</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi4xMTQxYTRhZGU3ZDA5N2Fi
YjgzMzQ4MDk2NWMzZjFiYjk1ZmU5ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSB3Y2hhcl90KiB0byBXVEY6OlN0cmluZy4KKworICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjA5OTVmMWEyNzJh
ZjU3NTU1ZmNmNjE3ZGZlMjg3ZTMyYjRjODYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XQ2hh
clN0cmluZ0V4dHJhcy5oOiBBZGRlZCBuZXcgaGVhZGVyIGZpbGUgd2l0aCBoZWxwZXIKKyAgICAg
ICAgZnVuY3Rpb25zIGZvciBjb252ZXJzaW9uIGJldHdlZW4gV1RGOjpTdHJpbmcgYW5kIHdjaGFy
dF90Ki4KKwogMjAxNy0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGZhc3RlciBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQgZm9yIEFSTV9USFVNQjIgd2l0aCBub24tRGFyd2luIE9TZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzOTdhMzgwOTVjMjdmMzFhNGUwYmExYjFjZWFlYmE5MDRmZGM2YjczLi5mZjUxNjMxM2NhNTlk
OTBiYTZlODFiZTNiOGUyODExY2IxMTMxYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTctMDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisg
ICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbnZl
cnNpb25zIGZyb20gV1RGOjpTdHJpbmcgdG8gd2NoYXJfdCogYW5kIHZpY2UgdmVyc2EuCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1pbWVUeXBlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpzdGFydENyZWF0ZU1lZGlhU291cmNlKToKKwogMjAxNy0wNS0zMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMTc1MTUpOiBDb3JyZWN0IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBidWcgKEFHQUlOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDM1MTIwOWM2NjZlMDM3ODQyNjg3ZTAxNTAwZjQzY2NkMGNjZjQ5ODgu
LjhmZTQzYTNmZGI5NGJkYWE3NzcwMThkNmNlY2MzNjlkYmFjMjhkYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5u
dWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMg
Y29kZSB3aXRoIElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBh
bmQgdmljZSB2ZXJzYS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6
CisgICAgICAgIChXZWJDb3JlOjphZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjphZGRKYXZhUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmFy
aVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdp
bkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VmVyc2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6
OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUpOgorCiAyMDE3LTA1LTMwICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwgaXMg
Zmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggMDVlMjczMzhiMjg5ZDQ5Y2JiNTUyMjcxNmQ5MzI4OGMyNzUxODMwYy4uMGQ5
YjUzZDUxZGM1NTMyMTEyYjQ0YzRhNTE0NTMzMmU2NzNjNDg5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBPUyhXSU5ET1dTKQpAQCAtMTA4LDcgKzEwOSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGlt
ZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29s
IGFzCiAgICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlv
bjsKICAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRp
b24pOwogICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1Qo
KSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlv
bi5TdGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3aW5UaW1lWm9uZU5hbWUpKTsKKyAgICAgICAgICAgIFN0
cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpv
bmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKICAgICAgICAg
ICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV0NoYXJTdHJpbmdF
eHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMGQzYTY3ZTQzMzY1ODkwMTlkNWU2M2RhYWNjZmI2YTk4MGIx
YzIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XQ2hhclN0cmluZ0V4
dHJhcy5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgS29uc3Rh
bnRpbiBUb2thcmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIFZlY3Rvcjx3Y2hhcl90PiBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgVmVjdG9yPHdjaGFy
X3Q+IHJlc3VsdDsKKworICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCgpICsgMSk7CisKKyAgICAgICAgaWYgKHN0
cmluZy5pczhCaXQoKSkgeworICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0g
c3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVu
Y2hlY2tlZEFwcGVuZChjaGFyYWN0ZXJzOFtpXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2ID0gc3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVy
czE2KCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3RlcnMxNiwgc3RyaW5nLmlt
cGwoKS0+bGVuZ3RoKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgU3RyaW5nIHdjaGFyVG9T
dHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGNoYXJhY3RlcnMp
LCBsZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
Zyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQoreworICAgIHJldHVybiB3Y2hhclRvU3RyaW5n
KGNoYXJhY3RlcnMsIHdjc2xlbihjaGFyYWN0ZXJzKSAtIDEpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwordXNpbmcgV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXI7Cit1c2luZyBX
VEY6OndjaGFyVG9TdHJpbmc7Cit1c2luZyBXVEY6Om51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA0ZjQ5ZWJjYTExNjE4YWIyYmNhN2Ez
NzllNTcxNjBlMGNiYmMyYWUwLi5hMWRlMDI0YjMwNGVkYjEwMTJiNTk5ZjU0NzBhNDBlZTc4ZGY5
ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00NywxNSArNDcsNiBAQCBTdHJp
bmc6OlN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAg
ICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0K
IAotLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRl
cm1pbmF0ZWQgc291cmNlLgotU3RyaW5nOjpTdHJpbmcoY29uc3QgVUNoYXIqIHN0cikKLXsKLSAg
ICBpZiAoIXN0cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6
Y3JlYXRlKHN0ciwgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhzdHIpKTsKLX0KLQogLy8g
Q29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCiBTdHJpbmc6OlN0cmluZyhjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtNDQzLDI4ICs0MzQs
NiBAQCBib29sIFN0cmluZzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotVmVjdG9yPFVDaGFyPiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLQotICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KCkgKyAxKTsKLQotICAgICAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzOCA9IG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4W2ldKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBtX2ltcGwtPmNoYXJhY3RlcnMx
NigpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIG1faW1wbC0+bGVu
Z3RoKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBTdHJpbmcgU3RyaW5nOjpmb3JtYXQoY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCBhcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKaW5kZXggNmEyNDA2Yzg3MDRiYjY5YWMzMTJhYWJjZTQyMjAwOTAwZTY2ZmRlMS4uNjhlNDQ4
MWQ3MzQwZTY0YzRjMjQzZjg2M2NhMjAzNGQ3MTAwNmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC05NCw5ICs5NCw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KICAgICBleHBsaWNpdCBTdHJpbmco
Y29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYpOwog
Ci0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxs
LXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29u
c3QgVUNoYXIqKTsKLQogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRh
LgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMjU2LDggKzI1Myw2
IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVu
c2lnbmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJu
IGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdu
b3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVmVj
dG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwotICAgIAog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5z
aWduZWQpIGNvbnN0OyAvLyBEaXR0by4KICAgICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMp
IGNvbnN0IHsgcmV0dXJuIGZpbmQoYykgIT0gbm90Rm91bmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDFjOTY1OTE3MDU5YzEzMzE1
ZjlmMDFhYzA4NDZlYTU4ZDcxMTQzNmIuLjljOTExMTQyYTFlZWU0NzRmMDZkNjdmZTk1ZDczNTU5
ODI0ZDY5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMTM0MSw3ICsxMzQxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAg
ICAgICBub2RlVmFsdWUgPSBub2RlLT5ub2RlVmFsdWUoKTsKICAgICAgICAgaWYgKG5vZGVWYWx1
ZS5sZW5ndGgoKSA+IG1heFRleHRTaXplKSB7CiAgICAgICAgICAgICBub2RlVmFsdWUgPSBub2Rl
VmFsdWUubGVmdChtYXhUZXh0U2l6ZSk7Ci0gICAgICAgICAgICBub2RlVmFsdWUuYXBwZW5kKGVs
bGlwc2lzVUNoYXIpOworICAgICAgICAgICAgbm9kZVZhbHVlLmFwcGVuZChlbGxpcHNpc1VDaGFy
LCBzaXplb2YoZWxsaXBzaXNVQ2hhcikpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGVkMzJkMTlmNzQxNDE3ZDU5NmE5NjI4YmNjNTcy
YzRmYjVjZjg4YTAuLjZiZGJkYjZiY2ZlYmQ3YmRlMTVhMWJkMDQzOWM5ZDA4OWU2NTZiMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKIFNPRlRfTElOS19MSUJSQVJZKE1mKTsKIFNPRlRfTElOS19PUFRJT05BTChNZiwgTUZD
cmVhdGVTb3VyY2VSZXNvbHZlciwgSFJFU1VMVCwgU1REQVBJQ0FMTFRZUEUsIChJTUZTb3VyY2VS
ZXNvbHZlcioqKSk7CkBAIC0xNDIsNyArMTQzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkKICAgICBpZiAo
U1VDQ0VFREVEKGhyKSkgewogICAgICAgICBDQUxQV1NUUiBtaW1lVHlwZUFycmF5ID0gcHJvcFZh
ck1pbWVUeXBlQXJyYXkuY2FscHdzdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtaW1lVHlwZUFycmF5LmNFbGVtczsgaSsrKQotICAgICAgICAgICAgY2FjaGVkVHlwZXMuZ2V0
KCkuYWRkKG1pbWVUeXBlQXJyYXkucEVsZW1zW2ldKTsKKyAgICAgICAgICAgIGNhY2hlZFR5cGVz
LmdldCgpLmFkZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWltZVR5cGVBcnJheS5wRWxl
bXNbaV0pKTsKICAgICB9CiAKICAgICBQcm9wVmFyaWFudENsZWFyKCZwcm9wVmFyTWltZVR5cGVB
cnJheSk7CkBAIC00NjAsNyArNDYxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ09NUHRyPElVbmtub3duPiBjYW5jZWxDb29raWU7Ci0g
ICAgVmVjdG9yPFVDaGFyPiB1cmxTb3VyY2UgPSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gdXJsU291cmNlID0gc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHVybCk7CiAKICAgICBBc3luY0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBB
c3luY0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBjOGYzMGJhNWQ4NTcwM2ZmN2VhOGQ0ODFh
M2ZiNGE5Y2YyYjQ2MjQ3Li4wZGFhMjAwYzBlMWI5ODFlZWQ3YzY0MjI2ZGFkNDNkODg3MTU3NGNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cApAQCAtMjk0LDcgKzI5NCw4IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbk5h
bWUoaW50IGNvbCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoY29sdW1u
Q291bnQoKSA8PSBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYo
bV9zdGF0ZW1lbnQsIGNvbCkpKTsKKyAgICBjb25zdCBVQ2hhciogY29sdW1uTmFtZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYobV9zdGF0ZW1l
bnQsIGNvbCkpOworICAgIHJldHVybiBTdHJpbmcoY29sdW1uTmFtZSwgV1RGOjpsZW5ndGhPZk51
bGxUZXJtaW5hdGVkU3RyaW5nKGNvbHVtbk5hbWUpKTsKIH0KIAogU1FMVmFsdWUgU1FMaXRlU3Rh
dGVtZW50OjpnZXRDb2x1bW5WYWx1ZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCA2MjUxNmJiOTNlMTNjZDhiNTA2MzIx
YTYyZDdlNjUwZTQ3OWQ0ZWRmLi4wZTdiMWVjMzJmYmU5MjVlZmQyYTc5OGFjYTVmNjdkZmI0NjFj
NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2lu
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdp
blBhY2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjIsNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0
cnkoSEtFWSByb290S2V5LCBIYXNoU2V0PFN0cmluZz4mIHBhdAogICAgICAgICBpZiAocmVzdWx0
ICE9IEVSUk9SX1NVQ0NFU1MgfHwgdHlwZSAhPSBSRUdfU1opCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBwYXRocy5hZGQoU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6
ZW9mKFdDSEFSKSAtIDEpKTsKKyAgICAgICAgcGF0aHMuYWRkKHdjaGFyVG9TdHJpbmcocGF0aFN0
ciwgcGF0aFN0clNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogICAgIH0KIAogICAgIFJlZ0Ns
b3NlS2V5KGtleSk7CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBs
dWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAg
IGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5EaXJlY3Rv
cmllcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4g
PSAqaXQgKyAiXFwqIjsKIAotICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHBhdHRlcm4u
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksICZmaW5kRmlsZURhdGEpOwor
ICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihwYXR0ZXJuKS5kYXRhKCksICZmaW5kRmlsZURhdGEpOwogCiAgICAgICAgIGlmIChoRmluZCA9
PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTIsNyAr
OTMsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMo
SGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgIGlmIChmaW5kRmlsZURh
dGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gU3RyaW5n
KGZpbmRGaWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7
CisgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRGaWxlRGF0
YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAgICAg
ICBpZiAoKCFmaWxlbmFtZS5zdGFydHNXaXRoKCJucCIsIGZhbHNlKSB8fCAhZmlsZW5hbWUuZW5k
c1dpdGgoImRsbCIsIGZhbHNlKSkgJiYKICAgICAgICAgICAgICAgICAoIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAicGx1Z2luLmRsbCIpIHx8ICFpdC0+ZW5kc1dpdGgo
IlNob2Nrd2F2ZSAxMCIsIGZhbHNlKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0x
NzksMTEgKzE4MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVj
dG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgIGlmIChyZXN1
bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAg
ICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0
ZW5zaW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSB3Y2hhclRvU3Ry
aW5nKG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CiAgICAgICAgICAgICBIS0VZIGV4
dGVuc2lvbnNLZXk7CiAKICAgICAgICAgICAgIC8vIFRyeSBvcGVuaW5nIHRoZSBrZXkKLSAgICAg
ICAgICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXksIGV4dGVuc2lvbnNQYXRoLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNL
ZXkpOworICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKS5kYXRhKCksIDAsIEtFWV9SRUFELCAmZXh0
ZW5zaW9uc0tleSk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykg
ewogICAgICAgICAgICAgICAgIC8vIE5vdyBnZXQgdGhlIHBsdWdpbnMgZGlyZWN0b3J5CkBAIC0x
OTQsNyArMTk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3Rv
cmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gUmVnUXVlcnlWYWx1ZUV4KGV4dGVuc2lvbnNLZXksIFRFWFQoIlBsdWdpbnMiKSwgMCwgJnR5
cGUsIChMUEJZVEUpJnBsdWdpbnNEaXJlY3RvcnlTdHIsICZwbHVnaW5zRGlyZWN0b3J5U2l6ZSk7
CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYgdHlwZSA9
PSBSRUdfU1opCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmco
cGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIp
IC0gMSkpOworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0
cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihX
Q0hBUikgLSAxKSk7CiAKICAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShleHRlbnNpb25zS2V5
KTsKICAgICAgICAgICAgIH0KQEAgLTIxMSw3ICsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJl
Y3RvcgogICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50
U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiksIHBsdWdpbkRp
cmVjdG9yeVN0ciwgV1RGX0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKTsKIAogICAg
IGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlTaXplIDw9IFdU
Rl9BUlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5U3RyKSkKLSAgICAgICAgZGlyZWN0b3JpZXMu
YXBwZW5kKFN0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNpemUgLSAx
KSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKHBsdWdpbkRpcmVj
dG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKIAogICAgIERXT1JEIHR5cGU7CiAg
ICAgV0NIQVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyW19NQVhfUEFUSF07CkBAIC0yMjAsNyAr
MjIxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRp
cmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBIUkVTVUxUIHJlc3VsdCA9IGdl
dFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBMIlNvZnR3YXJlXFxNaWNyb3NvZnRc
XE1lZGlhUGxheWVyIiwgTCJJbnN0YWxsYXRpb24gRGlyZWN0b3J5IiwgJnR5cGUsICZpbnN0YWxs
YXRpb25EaXJlY3RvcnlTdHIsICZpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplKTsKIAogICAgIGlm
IChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09IFJFR19TWikKLSAgICAgICAgZGly
ZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGluc3RhbGxh
dGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBkaXJlY3Rv
cmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGluc3Rh
bGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+
JiBkaXJlY3RvcmllcykKQEAgLTI0NCwxMCArMjQ1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVz
KQogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0
cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0
VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4p
KTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhhY3JvYmF0VmVyc2lvbiwgbGF0ZXN0QWNy
b2JhdFZlcnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvbiA9IGFjcm9i
YXRWZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcgPSBTdHJp
bmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmlu
ZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTI1NywxMCArMjU4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVn
aW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBEV09SRCBh
Y3JvYmF0SW5zdGFsbFBhdGhTaXplID0gc2l6ZW9mKGFjcm9iYXRJbnN0YWxsUGF0aFN0cik7CiAK
ICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxBZG9iZVxc
QWNyb2JhdCBSZWFkZXJcXCIgKyBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyArICJcXEluc3Rh
bGxQYXRoIjsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01B
Q0hJTkUsIGFjcm9iYXRQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3RhbGxQYXRoU3RyLCAmYWNyb2JhdEluc3Rh
bGxQYXRoU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NB
TF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoYWNyb2JhdFBsdWdpbktleVBh
dGgpLmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0
YWxsUGF0aFNpemUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewot
ICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoYWNyb2Jh
dEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpICsgIlxcYnJvd3NlciI7CisgICAgICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbkRpcmVj
dG9yeSA9IHdjaGFyVG9TdHJpbmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFs
bFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CiAgICAgICAgICAg
ICBkaXJlY3Rvcmllcy5hcHBlbmQoYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yODksMTAgKzI5MCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBs
dWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIGlmIChy
ZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZl
Y3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0cmluZyhuYW1lLCBu
YW1lTGVuKSk7CisgICAgICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9u
U3RyaW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFy
ZVZlcnNpb25zKGphdmFWZXJzaW9uLCBsYXRlc3RKYXZhVmVyc2lvbikpIHsKICAgICAgICAgICAg
IGxhdGVzdEphdmFWZXJzaW9uID0gamF2YVZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RKYXZh
VmVyc2lvblN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAgIGxhdGVz
dEphdmFWZXJzaW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMzA0LDEyICszMDUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAg
ICBEV09SRCB1c2VOZXdQbHVnaW5TaXplOwogCiAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luS2V5
UGF0aCA9ICJTb2Z0d2FyZVxcSmF2YVNvZnRcXEphdmEgUGx1Zy1pblxcIiArIGxhdGVzdEphdmFW
ZXJzaW9uU3RyaW5nOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9D
QUxfTUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCksIEwiVXNlTmV3SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFs
dWUsICZ1c2VOZXdQbHVnaW5TaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1
ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihqYXZhUGx1
Z2luS2V5UGF0aCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1Bs
dWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBF
UlJPUl9TVUNDRVNTICYmIHVzZU5ld1BsdWdpblZhbHVlID09IDEpIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5
UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgTCJKYXZhSG9tZSIs
ICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRhdGEoKSwgTCJKYXZh
SG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsK
ICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICAgICAg
ICAgIFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0
ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3
X3BsdWdpbiI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3RvcnkgPSB3
Y2hhclRvU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNp
emVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CiAgICAgICAgICAgICAgICAg
ZGlyZWN0b3JpZXMuYXBwZW5kKGphdmFQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0zMzUsNyArMzM2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgc2FmYXJp
UGx1Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGlmICghUGF0aFJlbW92ZUZpbGVTcGVjKG1vZHVs
ZUZpbGVOYW1lU3RyKSkKICAgICAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgICAgICBwbHVnaW5z
RGlyZWN0b3J5ID0gU3RyaW5nKG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOworICAg
ICAgICBwbHVnaW5zRGlyZWN0b3J5ID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1vZHVs
ZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOwogICAgIH0KIGV4aXQ6CiAgICAgcmV0dXJuIHBs
dWdpbnNEaXJlY3Rvcnk7CkBAIC0zNTEsMTAgKzM1MiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKICAgICBXQ0hBUiBtYWNyb21lZGlhRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKIAogICAgIFBh
dGhDb21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVY
VCgibWFjcm9tZWRcXEZsYXNoIikpOwotICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNyb21lZGlh
RGlyZWN0b3J5U3RyKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIAogICAgIFBhdGhDb21iaW5lKG1h
Y3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgibWFjcm9tZWRc
XFNob2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRpYURpcmVj
dG9yeVN0cik7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0
cmluZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBsdWdp
bkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggNzExOWQ4ODU0MTUxMTE2ZmM1
ZGQ5ODRkM2FkMjJlMzVkYzU2MTFhYi4uODNmZmU3YzA5OWQwZDI3Njk5YjQyNjc0YTEyOTg5YjQ4
MjIwODY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNr
YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VX
aW4uY3BwCkBAIC0zNCwxMCArMzQsMTEgQEAKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNpbmNsdWRlIDxz
aGx3YXBpLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDxzaGx3YXBpLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00Nyw3ICs0OCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VmVyc2lvbkluZm8o
Y29uc3QgTFBWT0lEIHZlcnNpb25JbmZvRGF0YSwgY29uc3QgU3RyaW5nJiBpbmZvKQogICAgIFVJ
TlQgYnVmZmVyTGVuZ3RoOwogICAgIFN0cmluZyBzdWJJbmZvID0gIlxcU3RyaW5nZmlsZUluZm9c
XDA0MDkwNEU0XFwiICsgaW5mbzsKICAgICBib29sIHJldHZhbCA9IFZlclF1ZXJ5VmFsdWVXKHZl
cnNpb25JbmZvRGF0YSwKLSAgICAgICAgY29uc3RfY2FzdDxVQ2hhcio+KHN1YkluZm8uY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAorICAgICAgICBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoc3ViSW5mbykuZGF0YSgpLAogICAgICAgICAmYnVmZmVyLCAmYnVmZmVy
TGVuZ3RoKTsKICAgICBpZiAoIXJldHZhbCB8fCBidWZmZXJMZW5ndGggPT0gMCkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwpAQCAtMTY3LDE0ICsxNjgsMTMgQEAgdm9pZCBQbHVnaW5QYWNrYWdl
OjpkZXRlcm1pbmVRdWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIGJvb2wgUGx1Z2luUGFj
a2FnZTo6ZmV0Y2hJbmZvKCkKIHsKICAgICBEV09SRCB2ZXJzaW9uSW5mb1NpemUsIHplcm9IYW5k
bGU7Ci0gICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcoY29uc3Rf
Y2FzdDxVQ2hhcio+KG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksICZ6ZXJvSGFuZGxlKTsKKyAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRGaWxlVmVyc2lvbklu
Zm9TaXplVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksICZ6ZXJv
SGFuZGxlKTsKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGF1dG8gdmVyc2lvbkluZm9EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coY29u
c3RfY2FzdDxVQ2hhcio+KG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSksCi0gICAgICAgICAgICAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5n
ZXQoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0Rh
dGEuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX25hbWUgPSBnZXRWZXJz
aW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJQcm9kdWN0TmFtZSIpOwpAQCAtMjQ0LDEx
ICsyNDQsMTEgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIAogICAgICAgICBTdHJpbmcg
cGF0aCA9IG1fcGF0aC5zdWJzdHJpbmcoMCwgbV9wYXRoLnJldmVyc2VGaW5kKCdcXCcpKTsKIAot
ICAgICAgICBpZiAoITo6U2V0Q3VycmVudERpcmVjdG9yeVcocGF0aC5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0
b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBMb2FkIHRoZSBsaWJyYXJ5Ci0gICAgICAg
IG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKKyAg
ICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOwog
CiAgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhjdXJyZW50UGF0aCkpIHsKICAg
ICAgICAgICAgIGlmIChtX21vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXdXaW4uY3BwCmluZGV4IDBiYmVmNWQzYTUwNDE2YjQxNmFkNDgyMjI5YjYyNDYxYThiZWY0
YTcuLmJkNzFhNWVhNmNlNmVhNzgzZjdhNzgyZTI1OWMxZWE3MjlkNmQyOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtNzEsNiArNzEsNyBAQAog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XQ2hh
clN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKQEAgLTc2MSwxMyArNzYyLDEzIEBAIE5QRXJyb3Ig
UGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50
MzJfdCBsZW4sIGNvbnN0CiAKICAgICAvLyBHZXQgZmlsZSBpbmZvCiAgICAgV0lOMzJfRklMRV9B
VFRSSUJVVEVfREFUQSBhdHRyczsKLSAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNFeFcoZmlsZW5h
bWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdldEZpbGVFeEluZm9T
dGFuZGFyZCwgJmF0dHJzKSA9PSAwKQorICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcoc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEdldEZpbGVFeEluZm9T
dGFuZGFyZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwog
CiAgICAgaWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RP
UlkpCiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgIEhBTkRMRSBm
aWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5f
RVhJU1RJTkcsIDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRB
LCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIDAsIDApOwogICAgIAogICAgIGlm
IChmaWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gTlBF
UlJfRklMRV9OT1RfRk9VTkQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nT3BlcmF0b3JzLmNwcAppbmRleCA3YTFkOTI5N2Y2Y2Q5ODg1YWJlYTdjMmUyZjA1NTFm
M2M1MTU0YmFkLi42NjIyMTU3ZDBjNGQ3YzEyOGE4YzNhYTZlMWQyMmIwNWEzZDlmYWQ2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAK
QEAgLTE5Miw3ICsxOTIsNyBAQCBURVNUKFdURiwgQ29uY2F0ZW5hdGVDaGFyYWN0ZXJBcnJheUFu
ZEVtcHR5U3RyaW5nKQogICAgIFVDaGFyIHVjaGFyQXJyYXlbXSA9IHsgJ3QnLCAnZScsICdzJywg
J3QnLCAnXDAnIH07CiAgICAgU3RyaW5nIGNvbmNhdGVuYXRpb24xNiA9IHVjaGFyQXJyYXkgKyBl
bXB0eVN0cmluZzsKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQpLCBjb25j
YXRlbmF0aW9uMTYubGVuZ3RoKCkpOwotICAgIEFTU0VSVF9UUlVFKGNvbmNhdGVuYXRpb24xNiA9
PSBTdHJpbmcodWNoYXJBcnJheSkpOworICAgIEFTU0VSVF9UUlVFKGNvbmNhdGVuYXRpb24xNiA9
PSBTdHJpbmcodWNoYXJBcnJheSwgNCkpOwogCiAgICAgTENoYXIgbGNoYXJBcnJheVtdID0geyAn
dCcsICdlJywgJ3MnLCAndCcsICdcMCcgfTsKICAgICBTdHJpbmcgY29uY2F0ZW5hdGlvbjggPSBs
Y2hhckFycmF5ICsgZW1wdHlTdHJpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311926</attachid>
            <date>2017-06-03 07:14:09 -0700</date>
            <delta_ts>2017-06-03 08:39:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603171408.patch</filename>
            <type>text/plain</type>
            <size>27351</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi4xMTQxYTRhZGU3ZDA5N2Fi
YjgzMzQ4MDk2NWMzZjFiYjk1ZmU5ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSB3Y2hhcl90KiB0byBXVEY6OlN0cmluZy4KKworICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjA5OTVmMWEyNzJh
ZjU3NTU1ZmNmNjE3ZGZlMjg3ZTMyYjRjODYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XQ2hh
clN0cmluZ0V4dHJhcy5oOiBBZGRlZCBuZXcgaGVhZGVyIGZpbGUgd2l0aCBoZWxwZXIKKyAgICAg
ICAgZnVuY3Rpb25zIGZvciBjb252ZXJzaW9uIGJldHdlZW4gV1RGOjpTdHJpbmcgYW5kIHdjaGFy
dF90Ki4KKwogMjAxNy0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGZhc3RlciBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQgZm9yIEFSTV9USFVNQjIgd2l0aCBub24tRGFyd2luIE9TZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzOTdhMzgwOTVjMjdmMzFhNGUwYmExYjFjZWFlYmE5MDRmZGM2YjczLi5mZjUxNjMxM2NhNTlk
OTBiYTZlODFiZTNiOGUyODExY2IxMTMxYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTctMDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisg
ICAgICAgIEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbnZl
cnNpb25zIGZyb20gV1RGOjpTdHJpbmcgdG8gd2NoYXJfdCogYW5kIHZpY2UgdmVyc2EuCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1pbWVUeXBlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpzdGFydENyZWF0ZU1lZGlhU291cmNlKToKKwogMjAxNy0wNS0zMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMTc1MTUpOiBDb3JyZWN0IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBidWcgKEFHQUlOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDM1MTIwOWM2NjZlMDM3ODQyNjg3ZTAxNTAwZjQzY2NkMGNjZjQ5ODgu
LjhmZTQzYTNmZGI5NGJkYWE3NzcwMThkNmNlY2MzNjlkYmFjMjhkYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5u
dWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMg
Y29kZSB3aXRoIElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBh
bmQgdmljZSB2ZXJzYS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6
CisgICAgICAgIChXZWJDb3JlOjphZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjphZGRKYXZhUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmFy
aVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdp
bkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VmVyc2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6
OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUpOgorCiAyMDE3LTA1LTMwICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0
L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1zbG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwgaXMg
Zmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggMDVlMjczMzhiMjg5ZDQ5Y2JiNTUyMjcxNmQ5MzI4OGMyNzUxODMwYy4uMGQ5
YjUzZDUxZGM1NTMyMTEyYjQ0YzRhNTE0NTMzMmU2NzNjNDg5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBPUyhXSU5ET1dTKQpAQCAtMTA4LDcgKzEwOSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGlt
ZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29s
IGFzCiAgICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlv
bjsKICAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRp
b24pOwogICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1Qo
KSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlv
bi5TdGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3aW5UaW1lWm9uZU5hbWUpKTsKKyAgICAgICAgICAgIFN0
cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpv
bmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKICAgICAgICAg
ICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV0NoYXJTdHJpbmdF
eHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDNhMjE2YWJmYzA0YzcwMWM5MWMyZjg2YmUwYWViNWE3YjE0
MDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XQ2hhclN0cmluZ0V4
dHJhcy5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgS29uc3Rh
bnRpbiBUb2thcmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIFZlY3Rvcjx3Y2hhcl90PiBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgVmVjdG9yPHdjaGFy
X3Q+IHJlc3VsdDsKKworICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0cmluZy5pbXBsKCktPmxlbmd0aCgpICsgMSk7CisK
KyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgeworICAgICAgICAgICAgY29uc3QgTENoYXIq
IGNoYXJhY3RlcnM4ID0gc3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4W2ldKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBz
dHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y2hhcmFjdGVyczE2LCBzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKSk7CisgICAgICAgIH0KKworICAg
ICAgICByZXN1bHQuYXBwZW5kKDApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2lubGluZSBTdHJpbmcgd2NoYXJUb1N0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7Cit9CisKK2lubGluZSBTdHJpbmcgbnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCit7Cisg
ICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFjdGVycywgd2NzbGVuKGNoYXJhY3RlcnMpIC0g
MSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OnN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcjsKK3VzaW5nIFdURjo6d2NoYXJUb1N0cmluZzsKK3VzaW5nIFdURjo6bnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4
IDRmNDllYmNhMTE2MThhYjJiY2E3YTM3OWU1NzE2MGUwY2JiYzJhZTAuLmExZGUwMjRiMzA0ZWRi
MTAxMmI1OTlmNTQ3MGE0MGVlNzhkZjllMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
QEAgLTQ3LDE1ICs0Nyw2IEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShj
aGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYt
MTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1TdHJpbmc6OlN0cmluZyhj
b25zdCBVQ2hhciogc3RyKQotewotICAgIGlmICghc3RyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoc3RyLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVk
U3RyaW5nKHN0cikpOwotfQotCiAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0
YS4KIFN0cmluZzo6U3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpCiB7CkBAIC00NDMsMjggKzQzNCw2IEBAIGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYg
cmVzdWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZWN0b3I8VUNoYXI+IFN0cmlu
Zzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdAotewotICAgIFZlY3RvcjxV
Q2hhcj4gcmVzdWx0OwotCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICByZXN1bHQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgoKSArIDEpOwotCi0gICAgICAgIGlmIChpczhCaXQoKSkg
ewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gbV9pbXBsLT5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytp
KQotICAgICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhbaV0p
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMx
NiA9IG1faW1wbC0+Y2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNo
YXJhY3RlcnMxNiwgbV9pbXBsLT5sZW5ndGgoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1
bHQuYXBwZW5kKDApOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIFN0cmluZyBT
dHJpbmc6OmZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IGFy
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA2YTI0MDZjODcwNGJiNjlhYzMxMmFhYmNl
NDIyMDA5MDBlNjZmZGUxLi42OGU0NDgxZDczNDBlNjRjNGMyNDNmODYzY2EyMDM0ZDcxMDA2YWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTk0LDkgKzk0LDYgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PgogICAgIGV4cGxpY2l0IFN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+Jik7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBV
VEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIFN0cmluZyhjb25zdCBVQ2hhciopOwotCiAgICAgLy8gQ29uc3RydWN0IGEg
c3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmlu
Zyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CkBAIC0yNTYsOCArMjUzLDYgQEAgcHVibGljOgogICAgIHNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2ZSkg
Y29uc3QKICAgICAgICAgeyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0ciwg
c3RhcnQpIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KIAotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkgY29uc3Q7Ci0gICAgCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVDaGFyMzIg
Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgogICAgIAogICAg
IGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4gZmluZChjKSAhPSBub3RGb3Vu
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMWM5NjU5MTcwNTljMTMzMTVmOWYwMWFjMDg0NmVhNThkNzExNDM2Yi4uOWM5MTExNDJh
MWVlZTQ3NGYwNmQ2N2ZlOTVkNzM1NTk4MjRkNjkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzQxLDcgKzEzNDEsNyBAQCBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JOb2RlKE5vZGUqCiAgICAgICAgIG5vZGVWYWx1ZSA9IG5vZGUtPm5vZGVWYWx1ZSgp
OwogICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4VGV4dFNpemUpIHsKICAgICAg
ICAgICAgIG5vZGVWYWx1ZSA9IG5vZGVWYWx1ZS5sZWZ0KG1heFRleHRTaXplKTsKLSAgICAgICAg
ICAgIG5vZGVWYWx1ZS5hcHBlbmQoZWxsaXBzaXNVQ2hhcik7CisgICAgICAgICAgICBub2RlVmFs
dWUuYXBwZW5kKGVsbGlwc2lzVUNoYXIsIHNpemVvZihlbGxpcHNpc1VDaGFyKSk7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggZWQzMmQx
OWY3NDE0MTdkNTk2YTk2MjhiY2M1NzJjNGZiNWNmODhhMC4uNmJkYmRiNmJjZmViZDdiZGUxNWEx
YmQwNDM5YzlkMDg5ZTY1NmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogU09GVF9MSU5LX0xJQlJBUlkoTWYpOwogU09G
VF9MSU5LX09QVElPTkFMKE1mLCBNRkNyZWF0ZVNvdXJjZVJlc29sdmVyLCBIUkVTVUxULCBTVERB
UElDQUxMVFlQRSwgKElNRlNvdXJjZVJlc29sdmVyKiopKTsKQEAgLTE0Miw3ICsxNDMsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1p
bWVUeXBlQ2FjaGUoKQogICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CiAgICAgICAgIENBTFBXU1RS
IG1pbWVUeXBlQXJyYXkgPSBwcm9wVmFyTWltZVR5cGVBcnJheS5jYWxwd3N0cjsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVUeXBlQXJyYXkuY0VsZW1zOyBpKyspCi0gICAg
ICAgICAgICBjYWNoZWRUeXBlcy5nZXQoKS5hZGQobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pOwor
ICAgICAgICAgICAgY2FjaGVkVHlwZXMuZ2V0KCkuYWRkKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0
cmluZyhtaW1lVHlwZUFycmF5LnBFbGVtc1tpXSkpOwogICAgIH0KIAogICAgIFByb3BWYXJpYW50
Q2xlYXIoJnByb3BWYXJNaW1lVHlwZUFycmF5KTsKQEAgLTQ2MCw3ICs0NjEsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3RhcnRDcmVhdGVNZWRpYVNvdXJjZShj
b25zdCBTdHJpbmcmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDT01QdHI8SVVu
a25vd24+IGNhbmNlbENvb2tpZTsKLSAgICBWZWN0b3I8VUNoYXI+IHVybFNvdXJjZSA9IHVybC5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIFZlY3Rvcjx3Y2hhcl90PiB1cmxT
b3VyY2UgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodXJsKTsKIAogICAgIEFzeW5jQ2Fs
bGJhY2sqIGNhbGxiYWNrID0gbmV3IEFzeW5jQ2FsbGJhY2sodGhpcywgZmFsc2UpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IGM4
ZjMwYmE1ZDg1NzAzZmY3ZWE4ZDQ4MWEzZmI0YTljZjJiNDYyNDcuLjBkYWEyMDBjMGUxYjk4MWVl
ZDdjNjQyMjZkYWQ0M2Q4ODcxNTc0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0yOTQsNyArMjk0LDggQEAgU3RyaW5nIFNRTGl0
ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgIGlmIChjb2x1bW5Db3VudCgpIDw9IGNvbCkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+
KHNxbGl0ZTNfY29sdW1uX25hbWUxNihtX3N0YXRlbWVudCwgY29sKSkpOworICAgIGNvbnN0IFVD
aGFyKiBjb2x1bW5OYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNf
Y29sdW1uX25hbWUxNihtX3N0YXRlbWVudCwgY29sKSk7CisgICAgcmV0dXJuIFN0cmluZyhjb2x1
bW5OYW1lLCBXVEY6Omxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29sdW1uTmFtZSkpOwog
fQogCiBTUUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtblZhbHVlKGludCBjb2wpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4
IDYyNTE2YmI5M2UxM2NkOGI1MDYzMjFhNjJkN2U2NTBlNDc5ZDRlZGYuLjBlN2IxZWMzMmZiZTky
NWVmZDJhNzk4YWNhNWY2N2RmYjQ2MWM2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dz
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXksIEhhc2hTZXQ8U3RyaW5nPiYg
cGF0CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUyB8fCB0eXBlICE9IFJFR19T
WikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBhdGhzLmFkZChTdHJpbmcocGF0
aFN0ciwgcGF0aFN0clNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBwYXRocy5h
ZGQod2NoYXJUb1N0cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAx
KSk7CiAgICAgfQogCiAgICAgUmVnQ2xvc2VLZXkoa2V5KTsKQEAgLTgzLDcgKzg0LDcgQEAgdm9p
ZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3Ry
aW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3BsdWdpbkRpcmVjdG9yaWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICppdCArICJcXCoiOwogCi0gICAgICAgIGhGaW5kID0g
RmluZEZpcnN0RmlsZVcocGF0dGVybi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSwgJmZpbmRGaWxlRGF0YSk7CisgICAgICAgIGhGaW5kID0gRmluZEZpcnN0RmlsZVcoc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdHRlcm4pLmRhdGEoKSwgJmZpbmRGaWxlRGF0YSk7
CiAKICAgICAgICAgaWYgKGhGaW5kID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC05Miw3ICs5Myw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBs
dWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAg
ICAgICAgICAgaWYgKGZpbmRGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJV
VEVfRElSRUNUT1JZKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBT
dHJpbmcgZmlsZW5hbWUgPSBTdHJpbmcoZmluZEZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKGZp
bmRGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHdj
aGFyVG9TdHJpbmcoZmluZEZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKGZpbmRGaWxlRGF0YS5j
RmlsZU5hbWUpKTsKICAgICAgICAgICAgIGlmICgoIWZpbGVuYW1lLnN0YXJ0c1dpdGgoIm5wIiwg
ZmFsc2UpIHx8ICFmaWxlbmFtZS5lbmRzV2l0aCgiZGxsIiwgZmFsc2UpKSAmJgogICAgICAgICAg
ICAgICAgICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmlsZW5hbWUsICJwbHVnaW4u
ZGxsIikgfHwgIWl0LT5lbmRzV2l0aCgiU2hvY2t3YXZlIDEwIiwgZmFsc2UpKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTE3OSwxMSArMTgwLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVz
KQogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSBTdHJpbmco
bmFtZSwgbmFtZUxlbikgKyAiXFxFeHRlbnNpb25zIjsKKyAgICAgICAgICAgIFN0cmluZyBleHRl
bnNpb25zUGF0aCA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikgKyAiXFxFeHRlbnNpb25z
IjsKICAgICAgICAgICAgIEhLRVkgZXh0ZW5zaW9uc0tleTsKIAogICAgICAgICAgICAgLy8gVHJ5
IG9wZW5pbmcgdGhlIGtleQotICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwg
ZXh0ZW5zaW9uc1BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIDAs
IEtFWV9SRUFELCAmZXh0ZW5zaW9uc0tleSk7CisgICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVu
S2V5RXgoa2V5LCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZXh0ZW5zaW9uc1BhdGgpLmRh
dGEoKSwgMCwgS0VZX1JFQUQsICZleHRlbnNpb25zS2V5KTsKIAogICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgLy8gTm93IGdldCB0aGUg
cGx1Z2lucyBkaXJlY3RvcnkKQEAgLTE5NCw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBSZWdRdWVyeVZhbHVlRXgoZXh0ZW5zaW9uc0tleSwg
VEVYVCgiUGx1Z2lucyIpLCAwLCAmdHlwZSwgKExQQllURSkmcGx1Z2luc0RpcmVjdG9yeVN0ciwg
JnBsdWdpbnNEaXJlY3RvcnlTaXplKTsKIAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
RVJST1JfU1VDQ0VTUyAmJiB0eXBlID09IFJFR19TWikKLSAgICAgICAgICAgICAgICAgICAgZGly
ZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGlyZWN0
b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgIGRpcmVj
dG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNE
aXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKIAogICAgICAgICAgICAgICAgIFJl
Z0Nsb3NlS2V5KGV4dGVuc2lvbnNLZXkpOwogICAgICAgICAgICAgfQpAQCAtMjExLDcgKzIxMiw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3Rv
cnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yCiAgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6
ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmls
ZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGlyZWN0b3J5U3RyLCBXVEZfQVJSQVlfTEVOR1RIKHBsdWdp
bkRpcmVjdG9yeVN0cikpOwogCiAgICAgaWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBs
dWdpbkRpcmVjdG9yeVNpemUgPD0gV1RGX0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIp
KQotICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbkRpcmVjdG9yeVN0ciwg
cGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdj
aGFyVG9TdHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkp
OwogCiAgICAgRFdPUkQgdHlwZTsKICAgICBXQ0hBUiBpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHJb
X01BWF9QQVRIXTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2lu
ZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcgog
ICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUs
IEwiU29mdHdhcmVcXE1pY3Jvc29mdFxcTWVkaWFQbGF5ZXIiLCBMIkluc3RhbGxhdGlvbiBEaXJl
Y3RvcnkiLCAmdHlwZSwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgJmluc3RhbGxhdGlvbkRp
cmVjdG9yeVNpemUpOwogCiAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUg
PT0gUkVHX1NaKQotICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKGluc3RhbGxhdGlv
bkRpcmVjdG9yeVN0ciwgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikg
LSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKGluc3RhbGxh
dGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hB
UikgLSAxKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5E
aXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQpAQCAtMjQ0LDEwICsyNDUsMTAg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0
b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VD
Q0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRW
ZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0cmluZyhuYW1lLCBuYW1lTGVuKSk7CisgICAg
ICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKHdjaGFy
VG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGFj
cm9iYXRWZXJzaW9uLCBsYXRlc3RBY3JvYmF0VmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVz
dEFjcm9iYXRWZXJzaW9uID0gYWNyb2JhdFZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RBY3Jv
YmF0VmVyc2lvblN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAgIGxh
dGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMjU3LDEwICsyNTgsMTAgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0
b3JpZXMpCiAgICAgICAgIERXT1JEIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUgPSBzaXplb2YoYWNy
b2JhdEluc3RhbGxQYXRoU3RyKTsKIAogICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbktleVBh
dGggPSAiU29mdHdhcmVcXEFkb2JlXFxBY3JvYmF0IFJlYWRlclxcIiArIGxhdGVzdEFjcm9iYXRW
ZXJzaW9uU3RyaW5nICsgIlxcSW5zdGFsbFBhdGgiOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdp
c3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgYWNyb2JhdFBsdWdpbktleVBhdGguY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFs
bFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBhdGhTaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihhY3JvYmF0UGx1Z2luS2V5UGF0aCkuZGF0YSgpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3Rh
bGxQYXRoU3RyLCAmYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbkRp
cmVjdG9yeSA9IFN0cmluZyhhY3JvYmF0SW5zdGFsbFBhdGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0
aFNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxicm93c2VyIjsKKyAgICAgICAgICAgIFN0
cmluZyBhY3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gd2NoYXJUb1N0cmluZyhhY3JvYmF0SW5zdGFs
bFBhdGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAi
XFxicm93c2VyIjsKICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChhY3JvYmF0UGx1Z2lu
RGlyZWN0b3J5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI4OSwxMCArMjkwLDEwIEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJl
Y3RvcmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4gamF2YVZlcnNpb24gPSBwYXJzZVZlcnNp
b25TdHJpbmcoU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAgICAgVmVjdG9yPGludD4gamF2
YVZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVu
KSk7CiAgICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnMoamF2YVZlcnNpb24sIGxhdGVzdEphdmFW
ZXJzaW9uKSkgewogICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb24gPSBqYXZhVmVyc2lvbjsK
LSAgICAgICAgICAgIGxhdGVzdEphdmFWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVM
ZW4pOworICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5n
KG5hbWUsIG5hbWVMZW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDQsMTIgKzMwNSwxMiBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5n
PiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIHVzZU5ld1BsdWdpblNpemU7CiAKICAgICAg
ICAgU3RyaW5nIGphdmFQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxKYXZhU29mdFxcSmF2YSBQ
bHVnLWluXFwiICsgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmc7Ci0gICAgICAgIHJlc3VsdCA9IGdl
dFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgTCJVc2VOZXdKYXZhUGx1Z2luIiwg
JnR5cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNpemUpOworICAgICAgICBy
ZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKS5kYXRhKCksIEwiVXNlTmV3SmF2YVBs
dWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUsICZ1c2VOZXdQbHVnaW5TaXplKTsKIAog
ICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYgdXNlTmV3UGx1Z2luVmFsdWUg
PT0gMSkgewotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FM
X01BQ0hJTkUsIGphdmFQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxsUGF0aFN0ciwgJmphdmFJ
bnN0YWxsUGF0aFNpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShI
S0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihqYXZhUGx1Z2lu
S2V5UGF0aCkuZGF0YSgpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxsUGF0aFN0ciwg
JmphdmFJbnN0YWxsUGF0aFNpemUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9T
VUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3RvcnkgPSBT
dHJpbmcoamF2YUluc3RhbGxQYXRoU3RyLCBqYXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdD
SEFSKSAtIDEpICsgIlxcYmluXFxuZXdfcGx1Z2luIjsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
amF2YVBsdWdpbkRpcmVjdG9yeSA9IHdjaGFyVG9TdHJpbmcoamF2YUluc3RhbGxQYXRoU3RyLCBq
YXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYmluXFxuZXdfcGx1
Z2luIjsKICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoamF2YVBsdWdpbkRpcmVj
dG9yeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzNSw3ICszMzYsNyBAQCBzdGF0
aWMgaW5saW5lIFN0cmluZyBzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KCkKICAgICAgICAgaWYgKCFQ
YXRoUmVtb3ZlRmlsZVNwZWMobW9kdWxlRmlsZU5hbWVTdHIpKQogICAgICAgICAgICAgZ290byBl
eGl0OwogCi0gICAgICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBTdHJpbmcobW9kdWxlRmlsZU5hbWVT
dHIpICsgIlxcUGx1Z2lucyI7CisgICAgICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lucyI7CiAgICAg
fQogZXhpdDoKICAgICByZXR1cm4gcGx1Z2luc0RpcmVjdG9yeTsKQEAgLTM1MSwxMCArMzUyLDEw
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMoVmVj
dG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgIFdDSEFSIG1hY3JvbWVkaWFEaXJlY3RvcnlT
dHJbTUFYX1BBVEhdOwogCiAgICAgUGF0aENvbWJpbmUobWFjcm9tZWRpYURpcmVjdG9yeVN0ciwg
c3lzdGVtRGlyZWN0b3J5U3RyLCBURVhUKCJtYWNyb21lZFxcRmxhc2giKSk7Ci0gICAgZGlyZWN0
b3JpZXMuYXBwZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpOworICAgIGRpcmVjdG9yaWVzLmFw
cGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFjcm9tZWRpYURpcmVjdG9yeVN0cikp
OwogCiAgICAgUGF0aENvbWJpbmUobWFjcm9tZWRpYURpcmVjdG9yeVN0ciwgc3lzdGVtRGlyZWN0
b3J5U3RyLCBURVhUKCJtYWNyb21lZFxcU2hvY2t3YXZlIDEwIikpOwotICAgIGRpcmVjdG9yaWVz
LmFwcGVuZChtYWNyb21lZGlhRGlyZWN0b3J5U3RyKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQo
bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIH0K
IAogVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3Rvcmll
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VX
aW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApp
bmRleCA3MTE5ZDg4NTQxNTExMTZmYzVkZDk4NGQzYWQyMmUzNWRjNTYxMWFiLi44M2ZmZTdjMDk5
ZDBkMjc2OTliNDI2NzRhMTI5ODliNDgyMjA4NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogI2luY2x1
ZGUgIlBsdWdpbkRlYnVnLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJucHJ1bnRp
bWVfaW1wbC5oIgorI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgc3RhdGlj
IFN0cmluZyBnZXRWZXJzaW9uSW5mbyhjb25zdCBMUFZPSUQgdmVyc2lvbkluZm9EYXRhLCBjb25z
dCBTdHJpbmcmIGluZm8pCiAgICAgVUlOVCBidWZmZXJMZW5ndGg7CiAgICAgU3RyaW5nIHN1Yklu
Zm8gPSAiXFxTdHJpbmdmaWxlSW5mb1xcMDQwOTA0RTRcXCIgKyBpbmZvOwogICAgIGJvb2wgcmV0
dmFsID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lvbkluZm9EYXRhLAotICAgICAgICBjb25zdF9jYXN0
PFVDaGFyKj4oc3ViSW5mby5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSks
CisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdWJJbmZvKS5kYXRhKCksCiAg
ICAgICAgICZidWZmZXIsICZidWZmZXJMZW5ndGgpOwogICAgIGlmICghcmV0dmFsIHx8IGJ1ZmZl
ckxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNjcsMTQgKzE2OCwx
MyBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJrcyhjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogewogICAgIERXT1JEIHZl
cnNpb25JbmZvU2l6ZSwgemVyb0hhbmRsZTsKLSAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRGaWxl
VmVyc2lvbkluZm9TaXplVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgJnplcm9IYW5kbGUpOworICAgIHZlcnNpb25JbmZv
U2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihtX3BhdGgpLmRhdGEoKSwgJnplcm9IYW5kbGUpOwogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUg
PT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lvbkluZm9TaXplKTsKIAotICAgIGlmICgh
R2V0RmlsZVZlcnNpb25JbmZvVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKLSAgICAgICAgICAgIDAsIHZlcnNpb25JbmZv
U2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgpKSkKKyAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5m
b1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9u
SW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIlBy
b2R1Y3ROYW1lIik7CkBAIC0yNDQsMTEgKzI0NCwxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6Omxv
YWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbV9wYXRoLnN1YnN0cmluZygwLCBtX3BhdGgu
cmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5
VyhwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICAgICAg
aWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihw
YXRoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIExv
YWQgdGhlIGxpYnJhcnkKLSAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKG1fcGF0
aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgTE9BRF9XSVRIX0FM
VEVSRURfU0VBUkNIX1BBVEgpOworICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFco
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhf
QUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3Rv
cnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9kdWxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMGJiZWY1ZDNhNTA0MTZi
NDE2YWQ0ODIyMjliNjI0NjFhOGJlZjRhNy4uYmQ3MWE1ZWE2Y2U2ZWE3ODNmN2E3ODJlMjU5YzFl
YTcyOWQ2ZDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4u
Y3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIApAQCAtNzYx
LDEzICs3NjIsMTMgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVj
dG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29uc3QKIAogICAgIC8vIEdldCBmaWxl
IGluZm8KICAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGF0dHJzOwotICAgIGlmIChHZXRG
aWxlQXR0cmlidXRlc0V4VyhmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpID09IDApCisgICAgaWYgKCFH
ZXRGaWxlQXR0cmlidXRlc0V4VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUp
LmRhdGEoKSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQogICAgICAgICByZXR1cm4g
TlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKICAgICBpZiAoYXR0cnMuZHdGaWxlQXR0cmlidXRlcyAm
IEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9U
X0ZPVU5EOwogCi0gICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhmaWxlbmFtZS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJ
TEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CisgICAgSEFORExFIGZpbGVI
YW5kbGUgPSBDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUp
LmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElO
RywgMCwgMCk7CiAgICAgCiAgICAgaWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFM
VUUpCiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCmluZGV4IDdhMWQ5Mjk3
ZjZjZDk4ODVhYmVhN2MyZTJmMDU1MWYzYzUxNTRiYWQuLjY2MjIxNTdkMGM0ZDdjMTI4YThjM2Fh
NmUxZDIyYjA1YTNkOWZhZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1QoV1RGLCBDb25j
YXRlbmF0ZUNoYXJhY3RlckFycmF5QW5kRW1wdHlTdHJpbmcpCiAgICAgVUNoYXIgdWNoYXJBcnJh
eVtdID0geyAndCcsICdlJywgJ3MnLCAndCcsICdcMCcgfTsKICAgICBTdHJpbmcgY29uY2F0ZW5h
dGlvbjE2ID0gdWNoYXJBcnJheSArIGVtcHR5U3RyaW5nOwogICAgIEFTU0VSVF9FUShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oNCksIGNvbmNhdGVuYXRpb24xNi5sZW5ndGgoKSk7Ci0gICAgQVNTRVJU
X1RSVUUoY29uY2F0ZW5hdGlvbjE2ID09IFN0cmluZyh1Y2hhckFycmF5KSk7CisgICAgQVNTRVJU
X1RSVUUoY29uY2F0ZW5hdGlvbjE2ID09IFN0cmluZyh1Y2hhckFycmF5LCA0KSk7CiAKICAgICBM
Q2hhciBsY2hhckFycmF5W10gPSB7ICd0JywgJ2UnLCAncycsICd0JywgJ1wwJyB9OwogICAgIFN0
cmluZyBjb25jYXRlbmF0aW9uOCA9IGxjaGFyQXJyYXkgKyBlbXB0eVN0cmluZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311928</attachid>
            <date>2017-06-03 08:39:24 -0700</date>
            <delta_ts>2017-06-03 09:44:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603183922.patch</filename>
            <type>text/plain</type>
            <size>30351</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi5kYWY0MWE3OTgzYjIwNmVj
NWFjMjg3ZTUyMzViMzZhODIyZjk2NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2
ZXJzYS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChjdXJyZW50V29ya2luZ0RpcmVj
dG9yeSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjIxYzg2ZDM5NDZj
ZDFjNGRjYjRmYmYwOGNlYjhjOGE5NGQzZjdkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZT
dHJpbmcuY3BwOiBSZW1vdmVkIFN0cmluZyhVQ2hhciopIGNvbnN0cnVjdG9yIGFuZAorICAgICAg
ICBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuCisgICAgICAgICogd3Rm
L3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg6IEFkZGVkIG5ldyBoZWFkZXIgZmlsZSB3dXRoIGhlbHBlcgorICAgICAgICBmdW5jdGlv
bnMgZm9yIGNvbnZlcnNpb24gYmV0d2VlbiBXVEY6OlN0cmluZyBhbmQgd2NoYXJ0X3QqLgorICAg
ICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIpOgorICAgICAgICAoV1RGOjp3
Y2hhclRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5n
KToKKwogMjAxNy0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGZhc3RlciBJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQgZm9yIEFSTV9USFVNQjIgd2l0aCBub24tRGFyd2luIE9TZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTdhMzgwOTVjMjdmMzFhNGUwYmExYjFjZWFlYmE5MDRmZGM2YjczLi4zOWYxMzU4MzM0YTI1MDc2
NDJlZjU0Yzg5MzZlNjA4MmM1NWQyYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTctMDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAg
ICAgIEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbnZlcnNp
b25zIGZyb20gV1RGOjpTdHJpbmcgdG8gd2NoYXJfdCogYW5kIHZpY2UgdmVyc2EuCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6c3RhcnRDcmVhdGVNZWRpYVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmdldENv
bHVtbk5hbWUpOgorCiAyMDE3LTA1LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIxNzUxNSk6IENvcnJlY3QgaXRlcmF0b3IgaW52
YWxpZGF0aW9uIGJ1ZyAoQUdBSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzUxMjA5YzY2NmUwMzc4
NDI2ODdlMDE1MDBmNDNjY2QwY2NmNDk4OC4uOGZlNDNhM2ZkYjk0YmRhYTc3NzAxOGQ2Y2VjYzM2
OWRiYWMyOGRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA2LTAz
ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBGaXgg
YnVpbGQgb2YgV2luZG93cy1zcGVjaWZpYyBjb2RlIHdpdGggSUNVIDU5LjEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb252ZXJzaW9ucyBmcm9t
IFdURjo6U3RyaW5nIHRvIHdjaGFyX3QqIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRQbHVnaW5Q
YXRoc0Zyb21SZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0
UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1vemlsbGFQ
bHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjphZGRXaW5kb3dzTWVkaWFQbGF5
ZXJQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQWRvYmVBY3JvYmF0UGx1
Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEphdmFQbHVnaW5EaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6c2FmYXJpUGx1Z2luc0RpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjphZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRWZXJzaW9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZVBvc3RS
ZWFkRmlsZSk6CisKIDIwMTctMDUtMzAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXaW5dIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3Qt
ZnVsbHNjcmVlbkVsZW1lbnQuaHRtbCBpcyBmbGFreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
OGY4ZjJkNjYxYzRhNTcxY2I2Njg0YTZjMTZlYmQwNTRlOGE3NGJhYy4uMjEwNzRhNDE5ZTNjNGRi
MzExNGFmNzA0YWY5YzQ5MTljODZmZjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE1Njcs
OCArMTU2Nyw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KCkKICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11
cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjM4MTQwNy5hc3B4CiAgICAgYXV0byBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPHdjaGFyX3RbXT4oYnVmZmVyTGVuZ3RoKTsKICAgICBEV09SRCBs
ZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0gOjpHZXRDdXJyZW50RGlyZWN0b3J5VyhidWZmZXJMZW5n
dGgsIGJ1ZmZlci5nZXQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0g
c2l6ZW9mKFVDaGFyKSwgIkluIFdpbmRvd3MsIGJvdGggYXJlIFVURi0xNkxFIik7Ci0gICAgU3Ry
aW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVm
ZmVyLmdldCgpKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyhidWZmZXIuZ2V0KCkpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0
d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3Rv
cnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTc0NSw5ICsxNzQ0LDcgQEAgc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxG
aWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYKICAgICAvLyBo
dHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9h
YTM2NTI0Ny5hc3B4I21heHBhdGgKICAgICAvLyBVc2UgbG9uZyBVTkMgdG8gcGFzcyB0aGUgbG9u
ZyBwYXRoIG5hbWUgdG8gdGhlIFdpbmRvd3MgQVBJcy4KICAgICBTdHJpbmcgbG9uZ1VOQ1BhdGhO
YW1lID0gV1RGOjptYWtlU3RyaW5nKCJcXFxcP1xcIiwgZmlsZU5hbWUpOwotICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJJbiBXaW5kb3dzLCBib3Ro
IGFyZSBVVEYtMTZMRSIpOwotICAgIGF1dG8gdXRmMTZWZWN0b3IgPSBsb25nVU5DUGF0aE5hbWUu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKLSAgICBGSUxFKiBmID0gX3dmb3Blbihy
ZWludGVycHJldF9jYXN0PHdjaGFyX3QqPih1dGYxNlZlY3Rvci5kYXRhKCkpLCBMInJiIik7Cisg
ICAgRklMRSogZiA9IF93Zm9wZW4oc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGxvbmdVTkNQ
YXRoTmFtZSkuZGF0YSgpLCBMInJiIik7CiAjZWxzZQogICAgIEZJTEUqIGYgPSBmb3BlbihmaWxl
TmFtZS51dGY4KCkuZGF0YSgpLCAiciIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMDVlMjczMzhiMjg5ZDQ5Y2Ji
NTUyMjcxNmQ5MzI4OGMyNzUxODMwYy4uOGE4N2NjNjJhZDVhYzJlNTE4NDQ0YjA4MzU4YWNmMTdl
NjY3YjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252
ZXJzaW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTEwOCw3ICsxMDksNyBAQCBTdHJp
bmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9y
bWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRp
bWVab25lSW5mb3JtYXRpb247CiAgICAgICAgICAgICBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCZ0
aW1lWm9uZUluZm9ybWF0aW9uKTsKICAgICAgICAgICAgIGNvbnN0IFdDSEFSKiB3aW5UaW1lWm9u
ZU5hbWUgPSB0LmlzRFNUKCkgPyB0aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0TmFtZSA6IHRp
bWVab25lSW5mb3JtYXRpb24uU3RhbmRhcmROYW1lOwotICAgICAgICAgICAgU3RyaW5nIHRpbWVa
b25lTmFtZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4od2luVGltZVpvbmVOYW1lKSk7
CisgICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRv
U3RyaW5nKHdpblRpbWVab25lTmFtZSk7CiAjZWxzZQogICAgICAgICAgICAgc3RydWN0IHRtIGd0
bSA9IHQ7CiAgICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAKaW5kZXggNGY0OWViY2ExMTYxOGFiMmJjYTdhMzc5ZTU3MTYwZTBjYmJjMmFl
MC4uYTFkZTAyNGIzMDRlZGIxMDEyYjU5OWY1NDcwYTQwZWU3OGRmOWUyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcApAQCAtNDcsMTUgKzQ3LDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgbV9pbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKLS8vIENvbnN0cnVjdCBh
IHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4K
LVN0cmluZzo6U3RyaW5nKGNvbnN0IFVDaGFyKiBzdHIpCi17Ci0gICAgaWYgKCFzdHIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIsIGxlbmd0
aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoc3RyKSk7Ci19Ci0KIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIGxhdGluMSBkYXRhLgogU3RyaW5nOjpTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKQEAgLTQ0MywyOCArNDM0LDYgQEAgYm9vbCBTdHJpbmc6
OnBlcmNlbnRhZ2UoaW50JiByZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVZl
Y3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0
Ci17Ci0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0KLSAgICBpZiAobV9pbXBsKSB7Ci0gICAg
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCgpICsgMSk7Ci0KLSAgICAg
ICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgg
PSBtX2ltcGwtPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVu
ZChjaGFyYWN0ZXJzOFtpXSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBV
Q2hhciogY2hhcmFjdGVyczE2ID0gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyczE2LCBtX2ltcGwtPmxlbmd0aCgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQogU3RyaW5nIFN0cmluZzo6Zm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQog
ewogICAgIHZhX2xpc3QgYXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDZhMjQwNmM4
NzA0YmI2OWFjMzEyYWFiY2U0MjIwMDkwMGU2NmZkZTEuLjY4ZTQ0ODFkNzM0MGU2NGM0YzI0M2Y4
NjNjYTIwMzRkNzEwMDZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtOTQsOSArOTQs
NiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgZXhwbGljaXQgU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hh
ciwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mKTsKIAotICAgIC8vIENvbnN0cnVj
dCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJj
ZS4KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IFVDaGFyKik7Ci0KICAg
ICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTI1Niw4ICsyNTMsNiBAQCBwdWJsaWM6CiAgICAg
c2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9v
bCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8g
cmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0
YXJ0KTsgfQogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFZlY3RvcjxVQ2hhcj4gY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdDsKLSAgICAKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8g
RGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBm
aW5kKGMpICE9IG5vdEZvdW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJp
bmdFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDAwNGU1MTU5NWNiNWVmM2E5MTY2OGEyNjIwZTFlMGYz
NGY3OTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFZlY3Rv
cjx3Y2hhcl90PiByZXN1bHQ7CisKKyAgICBpZiAoIXN0cmluZy5pc051bGwoKSkgeworICAgICAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKSAr
IDEpOworCisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzOCA9IHN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnM4KCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyAr
K2kpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChjaGFyYWN0ZXJzOFtp
XSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVy
czE2ID0gc3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKGNoYXJhY3RlcnMxNiwgc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkpOworICAgICAgICB9
CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitpbmxpbmUgU3RyaW5nIHdjaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjaGFy
X3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2ZSB0
aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0
IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7Cit9CisKK2lubGluZSBTdHJpbmcgbnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCit7CisgICAg
cmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFjdGVycywgd2NzbGVuKGNoYXJhY3RlcnMpIC0gMSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OnN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcjsKK3VzaW5nIFdURjo6d2NoYXJUb1N0cmluZzsKK3VzaW5nIFdURjo6bnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMWM5NjU5MTcwNTljMTMzMTVmOWYwMWFjMDg0NmVhNThk
NzExNDM2Yi4uOWM5MTExNDJhMWVlZTQ3NGYwNmQ2N2ZlOTVkNzM1NTk4MjRkNjkyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzQx
LDcgKzEzNDEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqCiAgICAgICAgIG5vZGVWYWx1ZSA9
IG5vZGUtPm5vZGVWYWx1ZSgpOwogICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4
VGV4dFNpemUpIHsKICAgICAgICAgICAgIG5vZGVWYWx1ZSA9IG5vZGVWYWx1ZS5sZWZ0KG1heFRl
eHRTaXplKTsKLSAgICAgICAgICAgIG5vZGVWYWx1ZS5hcHBlbmQoZWxsaXBzaXNVQ2hhcik7Cisg
ICAgICAgICAgICBub2RlVmFsdWUuYXBwZW5kKGVsbGlwc2lzVUNoYXIsIHNpemVvZihlbGxpcHNp
c1VDaGFyKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpBVFRS
SUJVVEVfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bi5jcHAKaW5kZXggZWQzMmQxOWY3NDE0MTdkNTk2YTk2MjhiY2M1NzJjNGZiNWNmODhhMC4uYzE4
ODI5YmEyZTczMDViYmQ5NDQxMDI3NGIzOGVlYTYzMWMxNWQwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIAog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIFNPRlRf
TElOS19MSUJSQVJZKE1mKTsKIFNPRlRfTElOS19PUFRJT05BTChNZiwgTUZDcmVhdGVTb3VyY2VS
ZXNvbHZlciwgSFJFU1VMVCwgU1REQVBJQ0FMTFRZUEUsIChJTUZTb3VyY2VSZXNvbHZlcioqKSk7
CkBAIC0xNDIsNyArMTQzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkKICAgICBpZiAoU1VDQ0VFREVEKGhy
KSkgewogICAgICAgICBDQUxQV1NUUiBtaW1lVHlwZUFycmF5ID0gcHJvcFZhck1pbWVUeXBlQXJy
YXkuY2FscHdzdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lVHlwZUFy
cmF5LmNFbGVtczsgaSsrKQotICAgICAgICAgICAgY2FjaGVkVHlwZXMuZ2V0KCkuYWRkKG1pbWVU
eXBlQXJyYXkucEVsZW1zW2ldKTsKKyAgICAgICAgICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChu
dWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKICAg
ICB9CiAKICAgICBQcm9wVmFyaWFudENsZWFyKCZwcm9wVmFyTWltZVR5cGVBcnJheSk7CkBAIC00
NjAsNyArNDYxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0
YXJ0Q3JlYXRlTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgQ09NUHRyPElVbmtub3duPiBjYW5jZWxDb29raWU7Ci0gICAgVmVjdG9yPFVD
aGFyPiB1cmxTb3VyY2UgPSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKKyAg
ICBWZWN0b3I8d2NoYXJfdD4gdXJsU291cmNlID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHVybCk7CiAKICAgICBBc3luY0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBBc3luY0NhbGxiYWNr
KHRoaXMsIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAppbmRleCBjOGYzMGJhNWQ4NTcwM2ZmN2VhOGQ0ODFhM2ZiNGE5Y2YyYjQ2
MjQ3Li4wZGFhMjAwYzBlMWI5ODFlZWQ3YzY0MjI2ZGFkNDNkODg3MTU3NGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjk0LDcg
KzI5NCw4IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkK
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoY29sdW1uQ291bnQoKSA8PSBj
b2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYobV9zdGF0ZW1lbnQs
IGNvbCkpKTsKKyAgICBjb25zdCBVQ2hhciogY29sdW1uTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9uYW1lMTYobV9zdGF0ZW1lbnQsIGNvbCkpOwor
ICAgIHJldHVybiBTdHJpbmcoY29sdW1uTmFtZSwgV1RGOjpsZW5ndGhPZk51bGxUZXJtaW5hdGVk
U3RyaW5nKGNvbHVtbk5hbWUpKTsKIH0KIAogU1FMVmFsdWUgU1FMaXRlU3RhdGVtZW50OjpnZXRD
b2x1bW5WYWx1ZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlV2luLmNwcAppbmRleCA2MjUxNmJiOTNlMTNjZDhiNTA2MzIxYTYyZDdlNjUwZTQ3
OWQ0ZWRmLi5lODZkMzA0NzA3ZmFjNjY2OTIzZjc1ODFhZTg2NmZkZjNmNmUzOTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYz
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkg
cm9vdEtleSwgSGFzaFNldDxTdHJpbmc+JiBwYXQKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJP
Ul9TVUNDRVNTIHx8IHR5cGUgIT0gUkVHX1NaKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgcGF0aHMuYWRkKFN0cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAvIHNpemVvZihXQ0hB
UikgLSAxKSk7CisgICAgICAgIHBhdGhzLmFkZCh3Y2hhclRvU3RyaW5nKHBhdGhTdHIsIHBhdGhT
dHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKICAgICB9CiAKICAgICBSZWdDbG9zZUtleShr
ZXkpOwpAQCAtODMsNyArODQsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRo
c0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICBmb3IgKFZl
Y3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gKml0ICsg
IlxcKiI7CiAKLSAgICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhwYXR0ZXJuLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAmZmluZEZpbGVEYXRhKTsKKyAgICAgICAg
aEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0dGVy
bikuZGF0YSgpLCAmZmluZEZpbGVEYXRhKTsKIAogICAgICAgICBpZiAoaEZpbmQgPT0gSU5WQUxJ
RF9IQU5ETEVfVkFMVUUpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTkyLDcgKzkzLDcgQEAg
dm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8
U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgICAgICBpZiAoZmluZEZpbGVEYXRhLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IFN0cmluZyhmaW5kRmls
ZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAg
ICAgICAgU3RyaW5nIGZpbGVuYW1lID0gd2NoYXJUb1N0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVO
YW1lLCB3Y3NsZW4oZmluZEZpbGVEYXRhLmNGaWxlTmFtZSkpOwogICAgICAgICAgICAgaWYgKCgh
ZmlsZW5hbWUuc3RhcnRzV2l0aCgibnAiLCBmYWxzZSkgfHwgIWZpbGVuYW1lLmVuZHNXaXRoKCJk
bGwiLCBmYWxzZSkpICYmCiAgICAgICAgICAgICAgICAgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShmaWxlbmFtZSwgInBsdWdpbi5kbGwiKSB8fCAhaXQtPmVuZHNXaXRoKCJTaG9ja3dh
dmUgMTAiLCBmYWxzZSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc5LDExICsx
ODAsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhW
ZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEVS
Uk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIFN0cmlu
ZyBleHRlbnNpb25zUGF0aCA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMi
OworICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gd2NoYXJUb1N0cmluZyhuYW1l
LCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMiOwogICAgICAgICAgICAgSEtFWSBleHRlbnNpb25z
S2V5OwogCiAgICAgICAgICAgICAvLyBUcnkgb3BlbmluZyB0aGUga2V5Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBSZWdPcGVuS2V5RXgoa2V5LCBleHRlbnNpb25zUGF0aC5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgS0VZX1JFQUQsICZleHRlbnNpb25zS2V5KTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihleHRlbnNpb25zUGF0aCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNL
ZXkpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAg
ICAgICAgICAgICAvLyBOb3cgZ2V0IHRoZSBwbHVnaW5zIGRpcmVjdG9yeQpAQCAtMTk0LDcgKzE5
NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVj
dG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJlZ1F1
ZXJ5VmFsdWVFeChleHRlbnNpb25zS2V5LCBURVhUKCJQbHVnaW5zIiksIDAsICZ0eXBlLCAoTFBC
WVRFKSZwbHVnaW5zRGlyZWN0b3J5U3RyLCAmcGx1Z2luc0RpcmVjdG9yeVNpemUpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1Na
KQotICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbnNE
aXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcocGx1
Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0g
MSkpOwogCiAgICAgICAgICAgICAgICAgUmVnQ2xvc2VLZXkoZXh0ZW5zaW9uc0tleSk7CiAgICAg
ICAgICAgICB9CkBAIC0yMTEsNyArMjEyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRv
d3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAg
ICBEV09SRCBwbHVnaW5EaXJlY3RvcnlTaXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NX
KFRFWFQoIiVTWVNURU1EUklWRSVcXFBGaWxlc1xcUGx1Z2lucyIpLCBwbHVnaW5EaXJlY3RvcnlT
dHIsIFdURl9BUlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5U3RyKSk7CiAKICAgICBpZiAocGx1
Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBXVEZfQVJSQVlf
TEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikpCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChT
dHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOworICAg
ICAgICBkaXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIs
IHBsdWdpbkRpcmVjdG9yeVNpemUgLSAxKSk7CiAKICAgICBEV09SRCB0eXBlOwogICAgIFdDSEFS
IGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0cltfTUFYX1BBVEhdOwpAQCAtMjIwLDcgKzIyMSw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3Rvcnko
VmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yCiAgICAgSFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3Ry
eVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgTCJTb2Z0d2FyZVxcTWljcm9zb2Z0XFxNZWRpYVBs
YXllciIsIEwiSW5zdGFsbGF0aW9uIERpcmVjdG9yeSIsICZ0eXBlLCAmaW5zdGFsbGF0aW9uRGly
ZWN0b3J5U3RyLCAmaW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSk7CiAKICAgICBpZiAocmVzdWx0
ID09IEVSUk9SX1NVQ0NFU1MgJiYgdHlwZSA9PSBSRUdfU1opCi0gICAgICAgIGRpcmVjdG9yaWVz
LmFwcGVuZChTdHJpbmcoaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJl
Y3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBw
ZW5kKHdjaGFyVG9TdHJpbmcoaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25E
aXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKIH0KIAogc3RhdGljIGlubGluZSB2
b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0
b3JpZXMpCkBAIC0yNDQsMTAgKzI0NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVB
Y3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAg
ICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgVmVjdG9yPGludD4gYWNyb2JhdFZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcoU3Ry
aW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAgICAgVmVjdG9yPGludD4gYWNyb2JhdFZlcnNpb24g
PSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSk7CiAgICAg
ICAgIGlmIChjb21wYXJlVmVyc2lvbnMoYWNyb2JhdFZlcnNpb24sIGxhdGVzdEFjcm9iYXRWZXJz
aW9uKSkgewogICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb24gPSBhY3JvYmF0VmVyc2lv
bjsKLSAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUs
IG5hbWVMZW4pOworICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcgPSB3Y2hh
clRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTcsMTAg
KzI1OCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0
b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgRFdPUkQgYWNyb2JhdElu
c3RhbGxQYXRoU2l6ZSA9IHNpemVvZihhY3JvYmF0SW5zdGFsbFBhdGhTdHIpOwogCiAgICAgICAg
IFN0cmluZyBhY3JvYmF0UGx1Z2luS2V5UGF0aCA9ICJTb2Z0d2FyZVxcQWRvYmVcXEFjcm9iYXQg
UmVhZGVyXFwiICsgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcgKyAiXFxJbnN0YWxsUGF0aCI7
Ci0gICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBh
Y3JvYmF0UGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNp
emUpOworICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElO
RSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGFjcm9iYXRQbHVnaW5LZXlQYXRoKS5kYXRh
KCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBhdGhT
aXplKTsKIAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAg
ICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGFjcm9iYXRJbnN0YWxs
UGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJc
XGJyb3dzZXIiOworICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSB3
Y2hhclRvU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6
ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOwogICAgICAgICAgICAgZGlyZWN0
b3JpZXMuYXBwZW5kKGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjg5LDEwICsyOTAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEphdmFQbHVnaW5EaXJl
Y3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBpZiAocmVzdWx0ICE9
IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBWZWN0b3I8aW50
PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikp
OworICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3
Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9u
cyhqYXZhVmVyc2lvbiwgbGF0ZXN0SmF2YVZlcnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RK
YXZhVmVyc2lvbiA9IGphdmFWZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25T
dHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RKYXZhVmVy
c2lvblN0cmluZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTMwNCwxMiArMzA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRKYXZhUGx1
Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgRFdPUkQg
dXNlTmV3UGx1Z2luU2l6ZTsKIAogICAgICAgICBTdHJpbmcgamF2YVBsdWdpbktleVBhdGggPSAi
U29mdHdhcmVcXEphdmFTb2Z0XFxKYXZhIFBsdWctaW5cXCIgKyBsYXRlc3RKYXZhVmVyc2lvblN0
cmluZzsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJ
TkUsIGphdmFQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZhbHVlLCAmdXNl
TmV3UGx1Z2luU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9M
T0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBh
dGgpLmRhdGEoKSwgTCJVc2VOZXdKYXZhUGx1Z2luIiwgJnR5cGUsICZ1c2VOZXdQbHVnaW5WYWx1
ZSwgJnVzZU5ld1BsdWdpblNpemUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VD
Q0VTUyAmJiB1c2VOZXdQbHVnaW5WYWx1ZSA9PSAxKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBn
ZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEwiSmF2YUhvbWUiLCAmdHlwZSwg
amF2YUluc3RhbGxQYXRoU3RyLCAmamF2YUluc3RhbGxQYXRoU2l6ZSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKS5kYXRhKCksIEwiSmF2YUhvbWUiLCAm
dHlwZSwgamF2YUluc3RhbGxQYXRoU3RyLCAmamF2YUluc3RhbGxQYXRoU2l6ZSk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICBTdHJp
bmcgamF2YVBsdWdpbkRpcmVjdG9yeSA9IFN0cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJ
bnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4i
OworICAgICAgICAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gd2NoYXJUb1N0
cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NI
QVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4iOwogICAgICAgICAgICAgICAgIGRpcmVjdG9y
aWVzLmFwcGVuZChqYXZhUGx1Z2luRGlyZWN0b3J5KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMzM1LDcgKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNhZmFyaVBsdWdpbnNE
aXJlY3RvcnkoKQogICAgICAgICBpZiAoIVBhdGhSZW1vdmVGaWxlU3BlYyhtb2R1bGVGaWxlTmFt
ZVN0cikpCiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICAgICAgcGx1Z2luc0RpcmVjdG9y
eSA9IFN0cmluZyhtb2R1bGVGaWxlTmFtZVN0cikgKyAiXFxQbHVnaW5zIjsKKyAgICAgICAgcGx1
Z2luc0RpcmVjdG9yeSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtb2R1bGVGaWxlTmFt
ZVN0cikgKyAiXFxQbHVnaW5zIjsKICAgICB9CiBleGl0OgogICAgIHJldHVybiBwbHVnaW5zRGly
ZWN0b3J5OwpAQCAtMzUxLDEwICszNTIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1hY3Jv
bWVkaWFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAg
V0NIQVIgbWFjcm9tZWRpYURpcmVjdG9yeVN0cltNQVhfUEFUSF07CiAKICAgICBQYXRoQ29tYmlu
ZShtYWNyb21lZGlhRGlyZWN0b3J5U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3Jv
bWVkXFxGbGFzaCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRpYURpcmVjdG9y
eVN0cik7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
ZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlh
RGlyZWN0b3J5U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxTaG9ja3dh
dmUgMTAiKSk7Ci0gICAgZGlyZWN0b3JpZXMuYXBwZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIp
OworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFj
cm9tZWRpYURpcmVjdG9yeVN0cikpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFz
ZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmluZGV4IDcxMTlkODg1NDE1MTExNmZjNWRkOTg0ZDNh
ZDIyZTM1ZGM1NjExYWIuLmUwMDk0Yjk2YmIxODlhNjk2MzU1ZGUwZGIwODAzMGJjMGE4MmQ3MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApA
QCAtMzQsMTAgKzM0LDExIEBACiAjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCisjaW5jbHVkZSA8c2hsd2FwaS5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyBnZXRWZXJzaW9uSW5mbyhjb25z
dCBMUFZPSUQgdmVyc2lvbkluZm9EYXRhLCBjb25zdCBTdHJpbmcmIGluZm8pCiAgICAgVUlOVCBi
dWZmZXJMZW5ndGg7CiAgICAgU3RyaW5nIHN1YkluZm8gPSAiXFxTdHJpbmdmaWxlSW5mb1xcMDQw
OTA0RTRcXCIgKyBpbmZvOwogICAgIGJvb2wgcmV0dmFsID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lv
bkluZm9EYXRhLAotICAgICAgICBjb25zdF9jYXN0PFVDaGFyKj4oc3ViSW5mby5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksCisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihzdWJJbmZvKS5kYXRhKCksCiAgICAgICAgICZidWZmZXIsICZidWZmZXJMZW5n
dGgpOwogICAgIGlmICghcmV0dmFsIHx8IGJ1ZmZlckxlbmd0aCA9PSAwKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CkBAIC0xNjcsMTQgKzE2OCwxMyBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OmRl
dGVybWluZVF1aXJrcyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogYm9vbCBQbHVnaW5QYWNrYWdl
OjpmZXRjaEluZm8oKQogewogICAgIERXT1JEIHZlcnNpb25JbmZvU2l6ZSwgemVyb0hhbmRsZTsK
LSAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjb25zdF9jYXN0
PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwg
Jnplcm9IYW5kbGUpOworICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1Np
emVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgJnplcm9IYW5k
bGUpOwogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
dmVyc2lvbkluZm9TaXplKTsKIAotICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjb25zdF9j
YXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSwKLSAgICAgICAgICAgIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgp
KSkKKyAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5n
ZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbmFtZSA9IGdldFZlcnNpb25J
bmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIlByb2R1Y3ROYW1lIik7CkBAIC0yNDQsMTEgKzI0
NCwxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRo
ID0gbV9wYXRoLnN1YnN0cmluZygwLCBtX3BhdGgucmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAg
ICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlX
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIExvYWQgdGhlIGxpYnJhcnkKLSAgICAgICAgbV9t
b2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLmRhdGEoKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOworICAgICAg
ICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KG1fcGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAg
ICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAg
ICAgICAgaWYgKG1fbW9kdWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmll
d1dpbi5jcHAKaW5kZXggMGJiZWY1ZDNhNTA0MTZiNDE2YWQ0ODIyMjliNjI0NjFhOGJlZjRhNy4u
YzllZTg2N2RiYTM4NTQ5Y2JiNTU0NjIzOWIwY2UwODEzYWM0ZmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBV
U0UoQ0FJUk8pCkBAIC03NjEsMTMgKzc2MiwxMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRs
ZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyX3QgbGVuLCBjb25zdAog
CiAgICAgLy8gR2V0IGZpbGUgaW5mbwogICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0
cnM7Ci0gICAgaWYgKEdldEZpbGVBdHRyaWJ1dGVzRXhXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykg
PT0gMCkKKyAgICBpZiAoIUdldEZpbGVBdHRyaWJ1dGVzRXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykp
CiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAogICAgIGlmIChhdHRycy5k
d0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICByZXR1
cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKLSAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0
ZUZpbGVXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBG
SUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsK
KyAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpLCBGSUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFE
LCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsKICAgICAKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5E
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNh
MmUxMTgyZmNlNjFkZTUxZjIxZmYzOGY5NjRlOTg2YTk2MTk1MzguLjYwNzZmMmU2NjQ0NGVjYTZi
YTE4ZmJhOGYzM2ViMzMxMjIzZmI4ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRp
biBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdp
bmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRoIElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmlu
Z09wZXJhdG9ycy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogRml4IGNvZGUg
YWZ0ZXIgU3RyaW5nKFVDaGFyKikgY29uc3RydWN0b3Igd2FzCisgICAgICAgIHJlbW92ZWQuCisK
IDIwMTctMDUtMzAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXaW5dIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVs
ZW1lbnQuaHRtbCBpcyBmbGFreS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdPcGVyYXRvcnMuY3BwCmluZGV4IDdhMWQ5Mjk3ZjZjZDk4ODVhYmVhN2MyZTJmMDU1
MWYzYzUxNTRiYWQuLjY2MjIxNTdkMGM0ZDdjMTI4YThjM2FhNmUxZDIyYjA1YTNkOWZhZDYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNw
cApAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1QoV1RGLCBDb25jYXRlbmF0ZUNoYXJhY3RlckFycmF5
QW5kRW1wdHlTdHJpbmcpCiAgICAgVUNoYXIgdWNoYXJBcnJheVtdID0geyAndCcsICdlJywgJ3Mn
LCAndCcsICdcMCcgfTsKICAgICBTdHJpbmcgY29uY2F0ZW5hdGlvbjE2ID0gdWNoYXJBcnJheSAr
IGVtcHR5U3RyaW5nOwogICAgIEFTU0VSVF9FUShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCksIGNv
bmNhdGVuYXRpb24xNi5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoY29uY2F0ZW5hdGlvbjE2
ID09IFN0cmluZyh1Y2hhckFycmF5KSk7CisgICAgQVNTRVJUX1RSVUUoY29uY2F0ZW5hdGlvbjE2
ID09IFN0cmluZyh1Y2hhckFycmF5LCA0KSk7CiAKICAgICBMQ2hhciBsY2hhckFycmF5W10gPSB7
ICd0JywgJ2UnLCAncycsICd0JywgJ1wwJyB9OwogICAgIFN0cmluZyBjb25jYXRlbmF0aW9uOCA9
IGxjaGFyQXJyYXkgKyBlbXB0eVN0cmluZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311931</attachid>
            <date>2017-06-03 09:44:51 -0700</date>
            <delta_ts>2017-06-03 11:14:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603194450.patch</filename>
            <type>text/plain</type>
            <size>31121</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi5kYWY0MWE3OTgzYjIwNmVj
NWFjMjg3ZTUyMzViMzZhODIyZjk2NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2
ZXJzYS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChjdXJyZW50V29ya2luZ0RpcmVj
dG9yeSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjI3ODQ5MDFmN2U3
NzVmNWNiZGZkMDkzZjkyMzBlMDk4Y2UxYTU1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZT
dHJpbmcuY3BwOiBSZW1vdmVkIFN0cmluZyhVQ2hhciopIGNvbnN0cnVjdG9yLgorICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oOiBBZGRlZCBuZXcgaGVhZGVyIGZpbGUgd3V0aCBoZWxwZXIKKyAgICAgICAgZnVu
Y3Rpb25zIGZvciBjb252ZXJzaW9uIGJldHdlZW4gV1RGOjpTdHJpbmcgYW5kIHdjaGFydF90Ki4K
KyAgICAgICAgKFdURjo6c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKToKKyAgICAgICAgKFdU
Rjo6d2NoYXJUb1N0cmluZyk6CisgICAgICAgIChXVEY6Om51bGxUZXJtaW5hdGVkV0NoYXJUb1N0
cmluZyk6CisKIDIwMTctMDUtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZGlzYWJsZSBmYXN0ZXIgSW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEIGZvciBBUk1fVEhVTUIyIHdpdGggbm9uLURhcndpbiBPU2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMzk3YTM4MDk1YzI3ZjMxYTRlMGJhMWIxY2VhZWJhOTA0ZmRjNmI3My4uMzlmMTM1ODMzNGEy
NTA3NjQyZWY1NGM4OTM2ZTYwODJjNTVkMmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDE3LTA2LTAzICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKwor
ICAgICAgICBGaXggYnVpbGQgb2YgV2luZG93cy1zcGVjaWZpYyBjb2RlIHdpdGggSUNVIDU5LjEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjcyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb252
ZXJzaW9ucyBmcm9tIFdURjo6U3RyaW5nIHRvIHdjaGFyX3QqIGFuZCB2aWNlIHZlcnNhLgorICAg
ICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5
cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5OYW1lKToKKwogMjAxNy0wNS0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMTc1MTUpOiBDb3JyZWN0IGl0ZXJhdG9y
IGludmFsaWRhdGlvbiBidWcgKEFHQUlOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDM1MTIwOWM2NjZl
MDM3ODQyNjg3ZTAxNTAwZjQzY2NkMGNjZjQ5ODguLjhmZTQzYTNmZGI5NGJkYWE3NzcwMThkNmNl
Y2MzNjlkYmFjMjhkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0w
Ni0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAg
Rml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRoIElDVSA1OS4xCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY29udmVyc2lvbnMg
ZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2ZXJzYS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGx1
Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6
OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjphZGRNb3pp
bGxhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlh
UGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEFkb2JlQWNyb2Jh
dFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRKYXZhUGx1Z2luRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmFyaVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVyc2lv
bkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0UmVhZEZpbGUpOgorCiAyMDE3LTA1LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luXSBmYXN0L3NoYWRvdy1kb20vZnVsbHNjcmVlbi1pbi1z
bG90LWZ1bGxzY3JlZW5FbGVtZW50Lmh0bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTliMGI3
MGQyMTg5NjVhNzdiYWQ2YjM0YzU5NzcxYmZjZmU4MTFlZi4uZjMzM2M3NTQ1NmIzOTNjYWM3NmE3
ZTQ1OWU1MmY3ZjA2MjcyZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA2
LTAzICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBG
aXggYnVpbGQgb2YgV2luZG93cy1zcGVjaWZpYyBjb2RlIHdpdGggSUNVIDU5LjEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjcyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL3dwZS9XZWJF
dmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmdG
b3JLZXlFdmVudCk6IEZpeCBjb21waWxhdGlvbiBhZnRlcgorICAgICAgICByZW1vdmFsIG9mIFN0
cmluZyhVQ2hhciopIGNvbnN0cnVjdG9yLgorCiAyMDE3LTA1LTMwICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTE0MDI/KTogU2FmYXJp
LCBNYWlsIGNyYXNoIGF0IGNvbS5hcHBsZS5XZWJLaXQ6IFdlYktpdDo6V2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5OjppbnZhbGlkYXRlICsgNApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA4Zjhm
MmQ2NjFjNGE1NzFjYjY2ODRhNmMxNmViZDA1NGU4YTc0YmFjLi4yMTA3NGE0MTllM2M0ZGIzMTE0
YWY3MDRhZjljNDkxOWM4NmZmMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTU2Nyw4ICsx
NTY3LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtp
bmdEaXJlY3RvcnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgKICAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8d2NoYXJfdFtdPihidWZmZXJMZW5ndGgpOwogICAgIERXT1JEIGxlbmd0
aE5vdEluY2x1ZGluZ051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwg
YnVmZmVyLmdldCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXpl
b2YoVUNoYXIpLCAiSW4gV2luZG93cywgYm90aCBhcmUgVVRGLTE2TEUiKTsKLSAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIu
Z2V0KCkpKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKGJ1ZmZlci5nZXQoKSk7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBuZXR3b3Jr
IHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYgKGRpcmVjdG9yeVN0
cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xNzQ1LDkgKzE3NDQsNyBAQCBzdGF0aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JgogICAgIC8vIGh0dHBz
Oi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1
MjQ3LmFzcHgjbWF4cGF0aAogICAgIC8vIFVzZSBsb25nIFVOQyB0byBwYXNzIHRoZSBsb25nIHBh
dGggbmFtZSB0byB0aGUgV2luZG93cyBBUElzLgogICAgIFN0cmluZyBsb25nVU5DUGF0aE5hbWUg
PSBXVEY6Om1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwgIkluIFdpbmRvd3MsIGJvdGggYXJl
IFVURi0xNkxFIik7Ci0gICAgYXV0byB1dGYxNlZlY3RvciA9IGxvbmdVTkNQYXRoTmFtZS5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwotICAgIEZJTEUqIGYgPSBfd2ZvcGVuKHJlaW50
ZXJwcmV0X2Nhc3Q8d2NoYXJfdCo+KHV0ZjE2VmVjdG9yLmRhdGEoKSksIEwicmIiKTsKKyAgICBG
SUxFKiBmID0gX3dmb3BlbihzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobG9uZ1VOQ1BhdGhO
YW1lKS5kYXRhKCksIEwicmIiKTsKICNlbHNlCiAgICAgRklMRSogZiA9IGZvcGVuKGZpbGVOYW1l
LnV0ZjgoKS5kYXRhKCksICJyIik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCAwNWUyNzMzOGIyODlkNDljYmI1NTIy
NzE2ZDkzMjg4YzI3NTE4MzBjLi44YTg3Y2M2MmFkNWFjMmU1MTg0NDRiMDgzNThhY2YxN2U2Njdi
ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVy
c2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNp
b24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KICNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTA4LDcgKzEwOSw3IEBAIFN0cmluZyBm
b3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQg
Zm9ybWF0LCBib29sIGFzCiAgICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpv
bmVJbmZvcm1hdGlvbjsKICAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVa
b25lSW5mb3JtYXRpb24pOwogICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFt
ZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpv
bmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVO
YW1lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih3aW5UaW1lWm9uZU5hbWUpKTsKKyAg
ICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0g
dDsKICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAppbmRleCA0ZjQ5ZWJjYTExNjE4YWIyYmNhN2EzNzllNTcxNjBlMGNiYmMyYWUwLi5k
ZDIxNGRmZjlkNGI0NTk5ODIzOTdjZTUwNTk4NTJhZmIwYjUzZTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCkBAIC00NywxNSArNDcsNiBAQCBTdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICBtX2ltcGwgPSBTdHJpbmdJ
bXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotLy8gQ29uc3RydWN0IGEgc3Ry
aW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotU3Ry
aW5nOjpTdHJpbmcoY29uc3QgVUNoYXIqIHN0cikKLXsKLSAgICBpZiAoIXN0cikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHN0ciwgbGVuZ3RoT2ZO
dWxsVGVybWluYXRlZFN0cmluZyhzdHIpKTsKLX0KLQogLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggbGF0aW4xIGRhdGEuCiBTdHJpbmc6OlN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNmEyNDA2Yzg3
MDRiYjY5YWMzMTJhYWJjZTQyMjAwOTAwZTY2ZmRlMS4uYzEyMjM5MTMxYzMxZTg5MGJjYThlYjNl
YzYzNjZhMjMxOTljZDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC05NCw5ICs5NCw2
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlcj4KICAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFy
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYpOwogCi0gICAgLy8gQ29uc3RydWN0
IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNl
LgotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgVUNoYXIqKTsKLQogICAg
IC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMjU3LDcgKzI1NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgeyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0ciwgc3RhcnQpIDogcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KIAogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29u
c3Q7Ci0gICAgCisKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJT
dGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250
YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5kOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDAw
NGU1MTU5NWNiNWVmM2E5MTY2OGEyNjIwZTFlMGYzNGY3OTUyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxl
bkB5YW5kZXgucnU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d2NoYXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K2lubGluZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIFZlY3Rvcjx3Y2hhcl90PiByZXN1bHQ7CisKKyAgICBp
ZiAoIXN0cmluZy5pc051bGwoKSkgeworICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKSArIDEpOworCisgICAgICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCA9IHN0cmlu
Zy5pbXBsKCktPmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICAgICAgcmVzdWx0
LnVuY2hlY2tlZEFwcGVuZChjaGFyYWN0ZXJzOFtpXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2ID0gc3RyaW5nLmltcGwoKS0+Y2hhcmFj
dGVyczE2KCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3RlcnMxNiwgc3RyaW5n
LmltcGwoKS0+bGVuZ3RoKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgw
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgU3RyaW5nIHdjaGFy
VG9TdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBh
c3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJu
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0
aCk7Cit9CisKK2lubGluZSBTdHJpbmcgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0
IHdjaGFyX3QqIGNoYXJhY3RlcnMpCit7CisgICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFj
dGVycywgd2NzbGVuKGNoYXJhY3RlcnMpIC0gMSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcjsKK3VzaW5nIFdURjo6d2No
YXJUb1N0cmluZzsKK3VzaW5nIFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMWM5
NjU5MTcwNTljMTMzMTVmOWYwMWFjMDg0NmVhNThkNzExNDM2Yi4uOWM5MTExNDJhMWVlZTQ3NGYw
NmQ2N2ZlOTVkNzM1NTk4MjRkNjkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzQxLDcgKzEzNDEsNyBAQCBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JO
b2RlKE5vZGUqCiAgICAgICAgIG5vZGVWYWx1ZSA9IG5vZGUtPm5vZGVWYWx1ZSgpOwogICAgICAg
ICBpZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4VGV4dFNpemUpIHsKICAgICAgICAgICAgIG5v
ZGVWYWx1ZSA9IG5vZGVWYWx1ZS5sZWZ0KG1heFRleHRTaXplKTsKLSAgICAgICAgICAgIG5vZGVW
YWx1ZS5hcHBlbmQoZWxsaXBzaXNVQ2hhcik7CisgICAgICAgICAgICBub2RlVmFsdWUuYXBwZW5k
KGVsbGlwc2lzVUNoYXIsIHNpemVvZihlbGxpcHNpc1VDaGFyKSk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggZWQzMmQxOWY3NDE0MTdk
NTk2YTk2MjhiY2M1NzJjNGZiNWNmODhhMC4uYzE4ODI5YmEyZTczMDViYmQ5NDQxMDI3NGIzOGVl
YTYzMWMxNWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2lu
L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIFNPRlRfTElOS19MSUJSQVJZKE1mKTsKIFNPRlRfTElO
S19PUFRJT05BTChNZiwgTUZDcmVhdGVTb3VyY2VSZXNvbHZlciwgSFJFU1VMVCwgU1REQVBJQ0FM
TFRZUEUsIChJTUZTb3VyY2VSZXNvbHZlcioqKSk7CkBAIC0xNDIsNyArMTQzLDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlw
ZUNhY2hlKCkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgewogICAgICAgICBDQUxQV1NUUiBtaW1l
VHlwZUFycmF5ID0gcHJvcFZhck1pbWVUeXBlQXJyYXkuY2FscHdzdHI7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lVHlwZUFycmF5LmNFbGVtczsgaSsrKQotICAgICAgICAg
ICAgY2FjaGVkVHlwZXMuZ2V0KCkuYWRkKG1pbWVUeXBlQXJyYXkucEVsZW1zW2ldKTsKKyAgICAg
ICAgICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmco
bWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKICAgICB9CiAKICAgICBQcm9wVmFyaWFudENsZWFy
KCZwcm9wVmFyTWltZVR5cGVBcnJheSk7CkBAIC00NjAsNyArNDYxLDcgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UoY29uc3Qg
U3RyaW5nJiB1cmwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ09NUHRyPElVbmtub3du
PiBjYW5jZWxDb29raWU7Ci0gICAgVmVjdG9yPFVDaGFyPiB1cmxTb3VyY2UgPSB1cmwuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gdXJsU291cmNl
ID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHVybCk7CiAKICAgICBBc3luY0NhbGxiYWNr
KiBjYWxsYmFjayA9IG5ldyBBc3luY0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBjOGYzMGJh
NWQ4NTcwM2ZmN2VhOGQ0ODFhM2ZiNGE5Y2YyYjQ2MjQ3Li4wZGFhMjAwYzBlMWI5ODFlZWQ3YzY0
MjI2ZGFkNDNkODg3MTU3NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjk0LDcgKzI5NCw4IEBAIFN0cmluZyBTUUxpdGVTdGF0
ZW1lbnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICBpZiAoY29sdW1uQ291bnQoKSA8PSBjb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxp
dGUzX2NvbHVtbl9uYW1lMTYobV9zdGF0ZW1lbnQsIGNvbCkpKTsKKyAgICBjb25zdCBVQ2hhciog
Y29sdW1uTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVt
bl9uYW1lMTYobV9zdGF0ZW1lbnQsIGNvbCkpOworICAgIHJldHVybiBTdHJpbmcoY29sdW1uTmFt
ZSwgV1RGOjpsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbHVtbk5hbWUpKTsKIH0KIAog
U1FMVmFsdWUgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5WYWx1ZShpbnQgY29sKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCA2MjUx
NmJiOTNlMTNjZDhiNTA2MzIxYTYyZDdlNjUwZTQ3OWQ0ZWRmLi5lODZkMzA0NzA3ZmFjNjY2OTIz
Zjc1ODFhZTg2NmZkZjNmNmUzOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtleSwgSGFzaFNldDxTdHJpbmc+JiBw
YXQKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTIHx8IHR5cGUgIT0gUkVHX1Na
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcGF0aHMuYWRkKFN0cmluZyhwYXRo
U3RyLCBwYXRoU3RyU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAgIHBhdGhzLmFk
ZCh3Y2hhclRvU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEp
KTsKICAgICB9CiAKICAgICBSZWdDbG9zZUtleShrZXkpOwpAQCAtODMsNyArODQsNyBAQCB2b2lk
IFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJp
bmc+JiBwYXRocykgY29uc3QKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIFN0cmluZyBwYXR0ZXJuID0gKml0ICsgIlxcKiI7CiAKLSAgICAgICAgaEZpbmQgPSBG
aW5kRmlyc3RGaWxlVyhwYXR0ZXJuLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpLCAmZmluZEZpbGVEYXRhKTsKKyAgICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0dGVybikuZGF0YSgpLCAmZmluZEZpbGVEYXRhKTsK
IAogICAgICAgICBpZiAoaEZpbmQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTkyLDcgKzkzLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1
Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAg
ICAgICAgICBpZiAoZmluZEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9ESVJFQ1RPUlkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFN0
cmluZyBmaWxlbmFtZSA9IFN0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmlu
ZEZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gd2No
YXJUb1N0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZpbGVEYXRhLmNG
aWxlTmFtZSkpOwogICAgICAgICAgICAgaWYgKCghZmlsZW5hbWUuc3RhcnRzV2l0aCgibnAiLCBm
YWxzZSkgfHwgIWZpbGVuYW1lLmVuZHNXaXRoKCJkbGwiLCBmYWxzZSkpICYmCiAgICAgICAgICAg
ICAgICAgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFtZSwgInBsdWdpbi5k
bGwiKSB8fCAhaXQtPmVuZHNXaXRoKCJTaG9ja3dhdmUgMTAiLCBmYWxzZSkpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTc5LDExICsxODAsMTEgQEAgc3RhdGljIGlubGluZSB2b2lk
IGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMp
CiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb25zUGF0aCA9IFN0cmluZyhu
YW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMiOworICAgICAgICAgICAgU3RyaW5nIGV4dGVu
c2lvbnNQYXRoID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMi
OwogICAgICAgICAgICAgSEtFWSBleHRlbnNpb25zS2V5OwogCiAgICAgICAgICAgICAvLyBUcnkg
b3BlbmluZyB0aGUga2V5Ci0gICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVuS2V5RXgoa2V5LCBl
eHRlbnNpb25zUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwg
S0VZX1JFQUQsICZleHRlbnNpb25zS2V5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFJlZ09wZW5L
ZXlFeChrZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHRlbnNpb25zUGF0aCkuZGF0
YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOwogCiAgICAgICAgICAgICBpZiAocmVz
dWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAvLyBOb3cgZ2V0IHRoZSBw
bHVnaW5zIGRpcmVjdG9yeQpAQCAtMTk0LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJlZ1F1ZXJ5VmFsdWVFeChleHRlbnNpb25zS2V5LCBU
RVhUKCJQbHVnaW5zIiksIDAsICZ0eXBlLCAoTFBCWVRFKSZwbHVnaW5zRGlyZWN0b3J5U3RyLCAm
cGx1Z2luc0RpcmVjdG9yeVNpemUpOwogCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBF
UlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICAgICAgICAgICAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3Rv
cnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0
b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0Rp
cmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogCiAgICAgICAgICAgICAgICAgUmVn
Q2xvc2VLZXkoZXh0ZW5zaW9uc0tleSk7CiAgICAgICAgICAgICB9CkBAIC0yMTEsNyArMjEyLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9y
eShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBEV09SRCBwbHVnaW5EaXJlY3RvcnlTaXpl
ID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKFRFWFQoIiVTWVNURU1EUklWRSVcXFBGaWxl
c1xcUGx1Z2lucyIpLCBwbHVnaW5EaXJlY3RvcnlTdHIsIFdURl9BUlJBWV9MRU5HVEgocGx1Z2lu
RGlyZWN0b3J5U3RyKSk7CiAKICAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1
Z2luRGlyZWN0b3J5U2l6ZSA8PSBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikp
Ci0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBw
bHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOworICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQod2No
YXJUb1N0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNpemUgLSAxKSk7
CiAKICAgICBEV09SRCB0eXBlOwogICAgIFdDSEFSIGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0cltf
TUFYX1BBVEhdOwpAQCAtMjIwLDcgKzIyMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRXaW5k
b3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yCiAg
ICAgSFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwg
TCJTb2Z0d2FyZVxcTWljcm9zb2Z0XFxNZWRpYVBsYXllciIsIEwiSW5zdGFsbGF0aW9uIERpcmVj
dG9yeSIsICZ0eXBlLCAmaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCAmaW5zdGFsbGF0aW9uRGly
ZWN0b3J5U2l6ZSk7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYgdHlwZSA9
PSBSRUdfU1opCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcoaW5zdGFsbGF0aW9u
RGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcoaW5zdGFsbGF0
aW9uRGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFS
KSAtIDEpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRp
cmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCkBAIC0yNDQsMTAgKzI0NSwxMCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUND
RVNTKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4gYWNyb2JhdFZl
cnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcoU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAg
ICAgVmVjdG9yPGludD4gYWNyb2JhdFZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJU
b1N0cmluZyhuYW1lLCBuYW1lTGVuKSk7CiAgICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnMoYWNy
b2JhdFZlcnNpb24sIGxhdGVzdEFjcm9iYXRWZXJzaW9uKSkgewogICAgICAgICAgICAgbGF0ZXN0
QWNyb2JhdFZlcnNpb24gPSBhY3JvYmF0VmVyc2lvbjsKLSAgICAgICAgICAgIGxhdGVzdEFjcm9i
YXRWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pOworICAgICAgICAgICAgbGF0
ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0yNTcsMTAgKzI1OCwxMCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rv
cmllcykKICAgICAgICAgRFdPUkQgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSA9IHNpemVvZihhY3Jv
YmF0SW5zdGFsbFBhdGhTdHIpOwogCiAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luS2V5UGF0
aCA9ICJTb2Z0d2FyZVxcQWRvYmVcXEFjcm9iYXQgUmVhZGVyXFwiICsgbGF0ZXN0QWNyb2JhdFZl
cnNpb25TdHJpbmcgKyAiXFxJbnN0YWxsUGF0aCI7Ci0gICAgICAgIHJlc3VsdCA9IGdldFJlZ2lz
dHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBhY3JvYmF0UGx1Z2luS2V5UGF0aC5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxs
UGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOworICAgICAgICByZXN1bHQgPSBnZXRS
ZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKGFjcm9iYXRQbHVnaW5LZXlQYXRoKS5kYXRhKCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFs
bFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBhdGhTaXplKTsKIAogICAgICAgICBpZiAocmVzdWx0
ID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luRGly
ZWN0b3J5ID0gU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRo
U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOworICAgICAgICAgICAgU3Ry
aW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSB3Y2hhclRvU3RyaW5nKGFjcm9iYXRJbnN0YWxs
UGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJc
XGJyb3dzZXIiOwogICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGFjcm9iYXRQbHVnaW5E
aXJlY3RvcnkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjg5LDEwICsyOTAsMTAgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yaWVzKQogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lv
blN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBqYXZh
VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4p
KTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhqYXZhVmVyc2lvbiwgbGF0ZXN0SmF2YVZl
cnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvbiA9IGphdmFWZXJzaW9uOwot
ICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxl
bik7CisgICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvblN0cmluZyA9IHdjaGFyVG9TdHJpbmco
bmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwNCwxMiArMzA1LDEyIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+
JiBkaXJlY3RvcmllcykKICAgICAgICAgRFdPUkQgdXNlTmV3UGx1Z2luU2l6ZTsKIAogICAgICAg
ICBTdHJpbmcgamF2YVBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEphdmFTb2Z0XFxKYXZhIFBs
dWctaW5cXCIgKyBsYXRlc3RKYXZhVmVyc2lvblN0cmluZzsKLSAgICAgICAgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIGphdmFQbHVnaW5LZXlQYXRoLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAm
dHlwZSwgJnVzZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CisgICAgICAgIHJl
c3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRhdGEoKSwgTCJVc2VOZXdKYXZhUGx1
Z2luIiwgJnR5cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNpemUpOwogCiAg
ICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB1c2VOZXdQbHVnaW5WYWx1ZSA9
PSAxKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxf
TUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCksIEwiSmF2YUhvbWUiLCAmdHlwZSwgamF2YUluc3RhbGxQYXRoU3RyLCAmamF2YUlu
c3RhbGxQYXRoU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhL
RVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGphdmFQbHVnaW5L
ZXlQYXRoKS5kYXRhKCksIEwiSmF2YUhvbWUiLCAmdHlwZSwgamF2YUluc3RhbGxQYXRoU3RyLCAm
amF2YUluc3RhbGxQYXRoU2l6ZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NV
Q0NFU1MpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgamF2YVBsdWdpbkRpcmVjdG9yeSA9IFN0
cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NI
QVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4iOworICAgICAgICAgICAgICAgIFN0cmluZyBq
YXZhUGx1Z2luRGlyZWN0b3J5ID0gd2NoYXJUb1N0cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGph
dmFJbnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVn
aW4iOwogICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChqYXZhUGx1Z2luRGlyZWN0
b3J5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzM1LDcgKzMzNiw3IEBAIHN0YXRp
YyBpbmxpbmUgU3RyaW5nIHNhZmFyaVBsdWdpbnNEaXJlY3RvcnkoKQogICAgICAgICBpZiAoIVBh
dGhSZW1vdmVGaWxlU3BlYyhtb2R1bGVGaWxlTmFtZVN0cikpCiAgICAgICAgICAgICBnb3RvIGV4
aXQ7CiAKLSAgICAgICAgcGx1Z2luc0RpcmVjdG9yeSA9IFN0cmluZyhtb2R1bGVGaWxlTmFtZVN0
cikgKyAiXFxQbHVnaW5zIjsKKyAgICAgICAgcGx1Z2luc0RpcmVjdG9yeSA9IG51bGxUZXJtaW5h
dGVkV0NoYXJUb1N0cmluZyhtb2R1bGVGaWxlTmFtZVN0cikgKyAiXFxQbHVnaW5zIjsKICAgICB9
CiBleGl0OgogICAgIHJldHVybiBwbHVnaW5zRGlyZWN0b3J5OwpAQCAtMzUxLDEwICszNTIsMTAg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3RvcmllcyhWZWN0
b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgV0NIQVIgbWFjcm9tZWRpYURpcmVjdG9yeVN0
cltNQVhfUEFUSF07CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0b3J5U3RyLCBz
eXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxGbGFzaCIpKTsKLSAgICBkaXJlY3Rv
cmllcy5hcHBlbmQobWFjcm9tZWRpYURpcmVjdG9yeVN0cik7CisgICAgZGlyZWN0b3JpZXMuYXBw
ZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7
CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0b3J5U3RyLCBzeXN0ZW1EaXJlY3Rv
cnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxTaG9ja3dhdmUgMTAiKSk7Ci0gICAgZGlyZWN0b3JpZXMu
YXBwZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpOworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChu
dWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFjcm9tZWRpYURpcmVjdG9yeVN0cikpOwogfQog
CiBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmlu
ZGV4IDcxMTlkODg1NDE1MTExNmZjNWRkOTg0ZDNhZDIyZTM1ZGM1NjExYWIuLmUwMDk0Yjk2YmIx
ODlhNjk2MzU1ZGUwZGIwODAzMGJjMGE4MmQ3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAtMzQsMTAgKzM0LDExIEBACiAjaW5jbHVk
ZSAiUGx1Z2luRGVidWcuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIm5wcnVudGlt
ZV9pbXBsLmgiCisjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgc3Rh
dGljIFN0cmluZyBnZXRWZXJzaW9uSW5mbyhjb25zdCBMUFZPSUQgdmVyc2lvbkluZm9EYXRhLCBj
b25zdCBTdHJpbmcmIGluZm8pCiAgICAgVUlOVCBidWZmZXJMZW5ndGg7CiAgICAgU3RyaW5nIHN1
YkluZm8gPSAiXFxTdHJpbmdmaWxlSW5mb1xcMDQwOTA0RTRcXCIgKyBpbmZvOwogICAgIGJvb2wg
cmV0dmFsID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lvbkluZm9EYXRhLAotICAgICAgICBjb25zdF9j
YXN0PFVDaGFyKj4oc3ViSW5mby5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksCisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdWJJbmZvKS5kYXRhKCks
CiAgICAgICAgICZidWZmZXIsICZidWZmZXJMZW5ndGgpOwogICAgIGlmICghcmV0dmFsIHx8IGJ1
ZmZlckxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNjcsMTQgKzE2
OCwxMyBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJrcyhjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogewogICAgIERXT1JE
IHZlcnNpb25JbmZvU2l6ZSwgemVyb0hhbmRsZTsKLSAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRG
aWxlVmVyc2lvbkluZm9TaXplVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgJnplcm9IYW5kbGUpOworICAgIHZlcnNpb25J
bmZvU2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihtX3BhdGgpLmRhdGEoKSwgJnplcm9IYW5kbGUpOwogICAgIGlmICh2ZXJzaW9uSW5mb1Np
emUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byB2ZXJzaW9uSW5mb0Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lvbkluZm9TaXplKTsKIAotICAgIGlm
ICghR2V0RmlsZVZlcnNpb25JbmZvVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKLSAgICAgICAgICAgIDAsIHZlcnNpb25J
bmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgpKSkKKyAgICBpZiAoIUdldEZpbGVWZXJzaW9u
SW5mb1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJz
aW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwg
IlByb2R1Y3ROYW1lIik7CkBAIC0yNDQsMTEgKzI0NCwxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6
OmxvYWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbV9wYXRoLnN1YnN0cmluZygwLCBtX3Bh
dGgucmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0
b3J5VyhwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICAg
ICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihwYXRoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8v
IExvYWQgdGhlIGxpYnJhcnkKLSAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKG1f
cGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgTE9BRF9XSVRI
X0FMVEVSRURfU0VBUkNIX1BBVEgpOworICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlF
eFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJ
VEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJl
Y3RvcnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9kdWxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMGJiZWY1ZDNhNTA0
MTZiNDE2YWQ0ODIyMjliNjI0NjFhOGJlZjRhNy4uYzllZTg2N2RiYTM4NTQ5Y2JiNTU0NjIzOWIw
Y2UwODEzYWM0ZmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdX
aW4uY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBVU0UoQ0FJUk8pCkBAIC03NjEsMTMgKzc2Miwx
MyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4m
IGJ1ZmZlciwgdWludDMyX3QgbGVuLCBjb25zdAogCiAgICAgLy8gR2V0IGZpbGUgaW5mbwogICAg
IFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0cnM7Ci0gICAgaWYgKEdldEZpbGVBdHRyaWJ1
dGVzRXhXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBH
ZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykgPT0gMCkKKyAgICBpZiAoIUdldEZpbGVBdHRy
aWJ1dGVzRXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpLCBH
ZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykpCiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxF
X05PVF9GT1VORDsKIAogICAgIGlmIChhdHRycy5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRS
SUJVVEVfRElSRUNUT1JZKQogICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAK
LSAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKGZpbGVuYW1lLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBGSUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9S
RUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsKKyAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENy
ZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpLCBG
SUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsK
ICAgICAKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAg
ICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3dwZS9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L3dwZS9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IDU1NzFlMWFhYzk3NmQ1NzlkOWFhOTNmMGY3
NWI3YzE0Y2EwZjE0NjIuLjdkZjg3ZjlhZGNlOTBhMDE1Y2JiMGEyYjQ3ODA3NGZmODA5ZGM1Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC93cGUvV2ViRXZlbnRGYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAg
LTU2LDEwICs1NiwxMSBAQCBzdGF0aWMgU3RyaW5nIHNpbmdsZUNoYXJhY3RlclN0cmluZ0Zvcktl
eUV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfa2V5Ym9hcmRfZXZlbnQqCiAgICAgaWYgKHNpbmdsZUNo
YXJhY3RlcikKICAgICAgICAgcmV0dXJuIFN0cmluZyhzaW5nbGVDaGFyYWN0ZXIpOwogCisgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoZ3VuaWNoYXIyKSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNz
dW1lIGd1bmljaGFyMiBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7CiAgICAgZ2xvbmcg
bGVuZ3RoOwogICAgIEdVbmlxdWVQdHI8Z3VuaWNoYXIyPiB1Y2hhcjE2KGdfdWNzNF90b191dGYx
NigmZXZlbnQtPnVuaWNvZGUsIDEsIDAsICZsZW5ndGgsIG51bGxwdHIpKTsKICAgICBpZiAodWNo
YXIxNikKLSAgICAgICAgcmV0dXJuIFN0cmluZyh1Y2hhcjE2LmdldCgpKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyKj4odWNoYXIxNi5nZXQoKSksIGxlbmd0
aCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2EyZTExODJmY2U2MWRlNTFmMjFmZjM4Zjk2NGU5
ODZhOTYxOTUzOC4uNjA3NmYyZTY2NDQ0ZWNhNmJhMThmYmE4ZjMzZWIzMzEyMjNmYjhlOSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE3LTA2LTAzICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KKworICAgICAgICBGaXggYnVpbGQgb2YgV2luZG93cy1zcGVjaWZpYyBjb2RlIHdpdGggSUNV
IDU5LjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MjcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOiBGaXggY29kZSBhZnRlciBTdHJpbmcoVUNoYXIqKSBjb25zdHJ1
Y3RvciB3YXMKKyAgICAgICAgcmVtb3ZlZC4KKwogMjAxNy0wNS0zMCAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gZmFzdC9zaGFkb3ctZG9tL2Z1
bGxzY3JlZW4taW4tc2xvdC1mdWxsc2NyZWVuRWxlbWVudC5odG1sIGlzIGZsYWt5LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKaW5kZXgg
N2ExZDkyOTdmNmNkOTg4NWFiZWE3YzJlMmYwNTUxZjNjNTE1NGJhZC4uNjYyMjE1N2QwYzRkN2Mx
MjhhOGMzYWE2ZTFkMjJiMDVhM2Q5ZmFkNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgVEVTVChX
VEYsIENvbmNhdGVuYXRlQ2hhcmFjdGVyQXJyYXlBbmRFbXB0eVN0cmluZykKICAgICBVQ2hhciB1
Y2hhckFycmF5W10gPSB7ICd0JywgJ2UnLCAncycsICd0JywgJ1wwJyB9OwogICAgIFN0cmluZyBj
b25jYXRlbmF0aW9uMTYgPSB1Y2hhckFycmF5ICsgZW1wdHlTdHJpbmc7CiAgICAgQVNTRVJUX0VR
KHN0YXRpY19jYXN0PHVuc2lnbmVkPig0KSwgY29uY2F0ZW5hdGlvbjE2Lmxlbmd0aCgpKTsKLSAg
ICBBU1NFUlRfVFJVRShjb25jYXRlbmF0aW9uMTYgPT0gU3RyaW5nKHVjaGFyQXJyYXkpKTsKKyAg
ICBBU1NFUlRfVFJVRShjb25jYXRlbmF0aW9uMTYgPT0gU3RyaW5nKHVjaGFyQXJyYXksIDQpKTsK
IAogICAgIExDaGFyIGxjaGFyQXJyYXlbXSA9IHsgJ3QnLCAnZScsICdzJywgJ3QnLCAnXDAnIH07
CiAgICAgU3RyaW5nIGNvbmNhdGVuYXRpb244ID0gbGNoYXJBcnJheSArIGVtcHR5U3RyaW5nOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311934</attachid>
            <date>2017-06-03 11:14:33 -0700</date>
            <delta_ts>2017-06-03 12:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603211432.patch</filename>
            <type>text/plain</type>
            <size>24298</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi5kYWY0MWE3OTgzYjIwNmVj
NWFjMjg3ZTUyMzViMzZhODIyZjk2NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2
ZXJzYS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChjdXJyZW50V29ya2luZ0RpcmVj
dG9yeSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjczYTViZjc3ZWYy
YzRjOWFmYjI0Mzg3N2NiYmQ0NTVkY2QyYjJjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaDogQWRkZWQgbmV3IGhlYWRlciBmaWxlIHd1dGggaGVscGVyCisg
ICAgICAgIGZ1bmN0aW9ucyBmb3IgY29udmVyc2lvbiBiZXR3ZWVuIFdURjo6U3RyaW5nIGFuZCB3
Y2hhcnRfdCouCisgICAgICAgIChXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcik6Cisg
ICAgICAgIChXVEY6OndjaGFyVG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcpOgorCiAyMDE3LTA1LTI5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRpc2FibGUgZmFzdGVyIEludGVy
cHJldGVyOjpnZXRPcGNvZGVJRCBmb3IgQVJNX1RIVU1CMiB3aXRoIG5vbi1EYXJ3aW4gT1Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDM5N2EzODA5NWMyN2YzMWE0ZTBiYTFiMWNlYWViYTkwNGZkYzZiNzMuLmZm
NTE2MzEzY2E1OWQ5MGJhNmU4MWJlM2I4ZTI4MTFjYjExMzFiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2
ZXJzYS4KKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorCiAy
MDE3LTA1LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjIxNzUxNSk6IENvcnJlY3QgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGJ1ZyAo
QUdBSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzUxMjA5YzY2NmUwMzc4NDI2ODdlMDE1MDBmNDNj
Y2QwY2NmNDk4OC4uOGZlNDNhM2ZkYjk0YmRhYTc3NzAxOGQ2Y2VjYzM2OWRiYWMyOGRjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA2LTAzICBLb25zdGFudGluIFRv
a2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBGaXggYnVpbGQgb2YgV2luZG93
cy1zcGVjaWZpYyBjb2RlIHdpdGggSUNVIDU5LjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb252ZXJzaW9ucyBmcm9tIFdURjo6U3RyaW5nIHRv
IHdjaGFyX3QqIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3Ry
eSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRp
cmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1vemlsbGFQbHVnaW5EaXJlY3Rvcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZEphdmFQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6c2FmYXJpUGx1Z2luc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNYWNy
b21lZGlhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2Fn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRWZXJzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luUGFja2FnZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZSk6CisKIDIw
MTctMDUtMzAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXaW5dIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVsZW1l
bnQuaHRtbCBpcyBmbGFreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOGY4ZjJkNjYxYzRhNTcx
Y2I2Njg0YTZjMTZlYmQwNTRlOGE3NGJhYy4uMjEwNzRhNDE5ZTNjNGRiMzExNGFmNzA0YWY5YzQ5
MTljODZmZjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE1NjcsOCArMTU2Nyw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5
KCkKICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRv
d3MvZGVza3RvcC9mZjM4MTQwNy5hc3B4CiAgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPHdjaGFyX3RbXT4oYnVmZmVyTGVuZ3RoKTsKICAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRp
bmdOdWxsID0gOjpHZXRDdXJyZW50RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5nZXQo
KSk7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwg
IkluIFdpbmRvd3MsIGJvdGggYXJlIFVURi0xNkxFIik7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeVN0
cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmdldCgpKSk7Cisg
ICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhi
dWZmZXIuZ2V0KCkpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2Ug
XFxob3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRz
V2l0aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTc0NSw5ICsx
NzQ0LDcgQEAgc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYKICAgICAvLyBodHRwczovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM2NTI0Ny5hc3B4I21h
eHBhdGgKICAgICAvLyBVc2UgbG9uZyBVTkMgdG8gcGFzcyB0aGUgbG9uZyBwYXRoIG5hbWUgdG8g
dGhlIFdpbmRvd3MgQVBJcy4KICAgICBTdHJpbmcgbG9uZ1VOQ1BhdGhOYW1lID0gV1RGOjptYWtl
U3RyaW5nKCJcXFxcP1xcIiwgZmlsZU5hbWUpOwotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdj
aGFyX3QpID09IHNpemVvZihVQ2hhciksICJJbiBXaW5kb3dzLCBib3RoIGFyZSBVVEYtMTZMRSIp
OwotICAgIGF1dG8gdXRmMTZWZWN0b3IgPSBsb25nVU5DUGF0aE5hbWUuY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKTsKLSAgICBGSUxFKiBmID0gX3dmb3BlbihyZWludGVycHJldF9jYXN0
PHdjaGFyX3QqPih1dGYxNlZlY3Rvci5kYXRhKCkpLCBMInJiIik7CisgICAgRklMRSogZiA9IF93
Zm9wZW4oc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGxvbmdVTkNQYXRoTmFtZSkuZGF0YSgp
LCBMInJiIik7CiAjZWxzZQogICAgIEZJTEUqIGYgPSBmb3BlbihmaWxlTmFtZS51dGY4KCkuZGF0
YSgpLCAiciIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMDVlMjczMzhiMjg5ZDQ5Y2JiNTUyMjcxNmQ5MzI4OGMy
NzUxODMwYy4uOGE4N2NjNjJhZDVhYzJlNTE4NDQ0YjA4MzU4YWNmMTdlNjY3YjgwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogdXNp
bmcgbmFtZXNwYWNlIFdURjsKQEAgLTEwOCw3ICsxMDksNyBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRp
bWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9v
bCBhcwogICAgICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRpbWVab25lSW5mb3JtYXRp
b247CiAgICAgICAgICAgICBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCZ0aW1lWm9uZUluZm9ybWF0
aW9uKTsKICAgICAgICAgICAgIGNvbnN0IFdDSEFSKiB3aW5UaW1lWm9uZU5hbWUgPSB0LmlzRFNU
KCkgPyB0aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0TmFtZSA6IHRpbWVab25lSW5mb3JtYXRp
b24uU3RhbmRhcmROYW1lOwotICAgICAgICAgICAgU3RyaW5nIHRpbWVab25lTmFtZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4od2luVGltZVpvbmVOYW1lKSk7CisgICAgICAgICAgICBT
dHJpbmcgdGltZVpvbmVOYW1lID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHdpblRpbWVa
b25lTmFtZSk7CiAjZWxzZQogICAgICAgICAgICAgc3RydWN0IHRtIGd0bSA9IHQ7CiAgICAgICAg
ICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDAwNGU1MTU5NWNiNWVmM2E5MTY2OGEyNjIw
ZTFlMGYzNGY3OTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSBWZWN0b3I8d2NoYXJfdD4g
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAg
IFZlY3Rvcjx3Y2hhcl90PiByZXN1bHQ7CisKKyAgICBpZiAoIXN0cmluZy5pc051bGwoKSkgewor
ICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcuaW1wbCgpLT5sZW5n
dGgoKSArIDEpOworCisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCA9IHN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnM4KCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmluZy5pbXBsKCktPmxlbmd0
aCgpOyArK2kpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChjaGFyYWN0
ZXJzOFtpXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2ID0gc3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGNoYXJhY3RlcnMxNiwgc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitpbmxpbmUgU3RyaW5nIHdjaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIg
aGF2ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7Cit9CisKK2lubGluZSBTdHJpbmcg
bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCit7
CisgICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFjdGVycywgd2NzbGVuKGNoYXJhY3RlcnMp
IC0gMSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OnN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcjsKK3VzaW5nIFdURjo6d2NoYXJUb1N0cmluZzsKK3VzaW5nIFdURjo6
bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBlZDMyZDE5Zjc0MTQxN2Q1OTZhOTYyOGJjYzU3
MmM0ZmI1Y2Y4OGEwLi5jMTg4MjliYTJlNzMwNWJiZDk0NDEwMjc0YjM4ZWVhNjMxYzE1ZDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAt
NDIsNiArNDIsNyBAQAogCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogU09GVF9MSU5LX0xJQlJBUlkoTWYpOwogU09GVF9MSU5LX09QVElPTkFMKE1m
LCBNRkNyZWF0ZVNvdXJjZVJlc29sdmVyLCBIUkVTVUxULCBTVERBUElDQUxMVFlQRSwgKElNRlNv
dXJjZVJlc29sdmVyKiopKTsKQEAgLTE0Miw3ICsxNDMsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVUeXBlQ2FjaGUoKQogICAg
IGlmIChTVUNDRUVERUQoaHIpKSB7CiAgICAgICAgIENBTFBXU1RSIG1pbWVUeXBlQXJyYXkgPSBw
cm9wVmFyTWltZVR5cGVBcnJheS5jYWxwd3N0cjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVUeXBlQXJyYXkuY0VsZW1zOyBpKyspCi0gICAgICAgICAgICBjYWNoZWRUeXBl
cy5nZXQoKS5hZGQobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pOworICAgICAgICAgICAgY2FjaGVk
VHlwZXMuZ2V0KCkuYWRkKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtaW1lVHlwZUFycmF5
LnBFbGVtc1tpXSkpOwogICAgIH0KIAogICAgIFByb3BWYXJpYW50Q2xlYXIoJnByb3BWYXJNaW1l
VHlwZUFycmF5KTsKQEAgLTQ2MCw3ICs0NjEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6c3RhcnRDcmVhdGVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIHVybAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDT01QdHI8SVVua25vd24+IGNhbmNlbENvb2tp
ZTsKLSAgICBWZWN0b3I8VUNoYXI+IHVybFNvdXJjZSA9IHVybC5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpOworICAgIFZlY3Rvcjx3Y2hhcl90PiB1cmxTb3VyY2UgPSBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIodXJsKTsKIAogICAgIEFzeW5jQ2FsbGJhY2sqIGNhbGxiYWNrID0g
bmV3IEFzeW5jQ2FsbGJhY2sodGhpcywgZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IDYyNTE2YmI5M2UxM2NkOGI1MDYz
MjFhNjJkN2U2NTBlNDc5ZDRlZGYuLmU4NmQzMDQ3MDdmYWM2NjY5MjNmNzU4MWFlODY2ZmRmM2Y2
ZTM5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VX
aW4uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGx1Z2luUGF0aHNGcm9t
UmVnaXN0cnkoSEtFWSByb290S2V5LCBIYXNoU2V0PFN0cmluZz4mIHBhdAogICAgICAgICBpZiAo
cmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MgfHwgdHlwZSAhPSBSRUdfU1opCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBwYXRocy5hZGQoU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXpl
IC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKKyAgICAgICAgcGF0aHMuYWRkKHdjaGFyVG9TdHJpbmco
cGF0aFN0ciwgcGF0aFN0clNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogICAgIH0KIAogICAg
IFJlZ0Nsb3NlS2V5KGtleSk7CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6
OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25z
dAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5E
aXJlY3Rvcmllcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHBh
dHRlcm4gPSAqaXQgKyAiXFwqIjsKIAotICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHBh
dHRlcm4uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksICZmaW5kRmlsZURh
dGEpOworICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihwYXR0ZXJuKS5kYXRhKCksICZmaW5kRmlsZURhdGEpOwogCiAgICAgICAgIGlmICho
RmluZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
OTIsNyArOTMsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0
b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgIGlmIChmaW5k
RmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0g
U3RyaW5nKGZpbmRGaWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVO
YW1lKSk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRG
aWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAg
ICAgICAgICBpZiAoKCFmaWxlbmFtZS5zdGFydHNXaXRoKCJucCIsIGZhbHNlKSB8fCAhZmlsZW5h
bWUuZW5kc1dpdGgoImRsbCIsIGZhbHNlKSkgJiYKICAgICAgICAgICAgICAgICAoIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAicGx1Z2luLmRsbCIpIHx8ICFpdC0+ZW5k
c1dpdGgoIlNob2Nrd2F2ZSAxMCIsIGZhbHNlKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC0xNzksMTEgKzE4MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdp
bkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgIGlm
IChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pICsg
IlxcRXh0ZW5zaW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSB3Y2hh
clRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CiAgICAgICAgICAgICBI
S0VZIGV4dGVuc2lvbnNLZXk7CiAKICAgICAgICAgICAgIC8vIFRyeSBvcGVuaW5nIHRoZSBrZXkK
LSAgICAgICAgICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXksIGV4dGVuc2lvbnNQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVu
c2lvbnNLZXkpOworICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKS5kYXRhKCksIDAsIEtFWV9SRUFE
LCAmZXh0ZW5zaW9uc0tleSk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VD
Q0VTUykgewogICAgICAgICAgICAgICAgIC8vIE5vdyBnZXQgdGhlIHBsdWdpbnMgZGlyZWN0b3J5
CkBAIC0xOTQsNyArMTk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5E
aXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gUmVnUXVlcnlWYWx1ZUV4KGV4dGVuc2lvbnNLZXksIFRFWFQoIlBsdWdpbnMiKSwg
MCwgJnR5cGUsIChMUEJZVEUpJnBsdWdpbnNEaXJlY3RvcnlTdHIsICZwbHVnaW5zRGlyZWN0b3J5
U2l6ZSk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYg
dHlwZSA9PSBSRUdfU1opCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChT
dHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQod2No
YXJUb1N0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGlyZWN0b3J5U2l6ZSAvIHNp
emVvZihXQ0hBUikgLSAxKSk7CiAKICAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShleHRlbnNp
b25zS2V5KTsKICAgICAgICAgICAgIH0KQEAgLTIxMSw3ICsyMTIsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+
JiBkaXJlY3RvcgogICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVudmly
b25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiksIHBs
dWdpbkRpcmVjdG9yeVN0ciwgV1RGX0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKTsK
IAogICAgIGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlTaXpl
IDw9IFdURl9BUlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5U3RyKSkKLSAgICAgICAgZGlyZWN0
b3JpZXMuYXBwZW5kKFN0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNp
emUgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKHBsdWdp
bkRpcmVjdG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKIAogICAgIERXT1JEIHR5
cGU7CiAgICAgV0NIQVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyW19NQVhfUEFUSF07CkBAIC0y
MjAsNyArMjIxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBs
dWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBMIlNvZnR3YXJlXFxNaWNy
b3NvZnRcXE1lZGlhUGxheWVyIiwgTCJJbnN0YWxsYXRpb24gRGlyZWN0b3J5IiwgJnR5cGUsICZp
bnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsICZpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplKTsKIAog
ICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09IFJFR19TWikKLSAgICAg
ICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGlu
c3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBk
aXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIs
IGluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogfQogCiBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxT
dHJpbmc+JiBkaXJlY3RvcmllcykKQEAgLTI0NCwxMCArMjQ1LDEwIEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yaWVzKQogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVy
c2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBh
Y3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUsIG5h
bWVMZW4pKTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhhY3JvYmF0VmVyc2lvbiwgbGF0
ZXN0QWNyb2JhdFZlcnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvbiA9
IGFjcm9iYXRWZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcg
PSBTdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lv
blN0cmluZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTI1NywxMCArMjU4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9i
YXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBE
V09SRCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplID0gc2l6ZW9mKGFjcm9iYXRJbnN0YWxsUGF0aFN0
cik7CiAKICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxB
ZG9iZVxcQWNyb2JhdCBSZWFkZXJcXCIgKyBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyArICJc
XEluc3RhbGxQYXRoIjsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xP
Q0FMX01BQ0hJTkUsIGFjcm9iYXRQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3RhbGxQYXRoU3RyLCAmYWNyb2Jh
dEluc3RhbGxQYXRoU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtF
WV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoYWNyb2JhdFBsdWdp
bktleVBhdGgpLmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9i
YXRJbnN0YWxsUGF0aFNpemUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VT
UykgewotICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmco
YWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdD
SEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CisgICAgICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdp
bkRpcmVjdG9yeSA9IHdjaGFyVG9TdHJpbmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0
SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CiAgICAg
ICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0yODksMTAgKzI5MCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
SmF2YVBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAg
IGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0cmluZyhu
YW1lLCBuYW1lTGVuKSk7CisgICAgICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VW
ZXJzaW9uU3RyaW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOwogICAgICAgICBpZiAo
Y29tcGFyZVZlcnNpb25zKGphdmFWZXJzaW9uLCBsYXRlc3RKYXZhVmVyc2lvbikpIHsKICAgICAg
ICAgICAgIGxhdGVzdEphdmFWZXJzaW9uID0gamF2YVZlcnNpb247Ci0gICAgICAgICAgICBsYXRl
c3RKYXZhVmVyc2lvblN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAg
IGxhdGVzdEphdmFWZXJzaW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMzA0LDEyICszMDUsMTIgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQog
ICAgICAgICBEV09SRCB1c2VOZXdQbHVnaW5TaXplOwogCiAgICAgICAgIFN0cmluZyBqYXZhUGx1
Z2luS2V5UGF0aCA9ICJTb2Z0d2FyZVxcSmF2YVNvZnRcXEphdmEgUGx1Zy1pblxcIiArIGxhdGVz
dEphdmFWZXJzaW9uU3RyaW5nOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhL
RVlfTE9DQUxfTUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCksIEwiVXNlTmV3SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1
Z2luVmFsdWUsICZ1c2VOZXdQbHVnaW5TaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0
cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihq
YXZhUGx1Z2luS2V5UGF0aCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVz
ZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBFUlJPUl9TVUNDRVNTICYmIHVzZU5ld1BsdWdpblZhbHVlID09IDEpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1
Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgTCJKYXZh
SG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5F
LCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRhdGEoKSwg
TCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBhdGhT
aXplKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAg
ICAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGphdmFJbnN0YWxs
UGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJp
blxcbmV3X3BsdWdpbiI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3Rv
cnkgPSB3Y2hhclRvU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6
ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CiAgICAgICAgICAg
ICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGphdmFQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0zMzUsNyArMzM2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
c2FmYXJpUGx1Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGlmICghUGF0aFJlbW92ZUZpbGVTcGVj
KG1vZHVsZUZpbGVOYW1lU3RyKSkKICAgICAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgICAgICBw
bHVnaW5zRGlyZWN0b3J5ID0gU3RyaW5nKG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMi
OworICAgICAgICBwbHVnaW5zRGlyZWN0b3J5ID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5n
KG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOwogICAgIH0KIGV4aXQ6CiAgICAgcmV0
dXJuIHBsdWdpbnNEaXJlY3Rvcnk7CkBAIC0zNTEsMTAgKzM1MiwxMCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJl
Y3RvcmllcykKICAgICBXQ0hBUiBtYWNyb21lZGlhRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKIAog
ICAgIFBhdGhDb21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0
ciwgVEVYVCgibWFjcm9tZWRcXEZsYXNoIikpOwotICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNy
b21lZGlhRGlyZWN0b3J5U3RyKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIAogICAgIFBhdGhDb21i
aW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgibWFj
cm9tZWRcXFNob2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRp
YURpcmVjdG9yeVN0cik7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0No
YXJUb1N0cmluZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+
IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggNzExOWQ4ODU0MTUx
MTE2ZmM1ZGQ5ODRkM2FkMjJlMzVkYzU2MTFhYi4uZTAwOTRiOTZiYjE4OWE2OTYzNTVkZTBkYjA4
MDMwYmMwYTgyZDcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5QYWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBh
Y2thZ2VXaW4uY3BwCkBAIC0zNCwxMCArMzQsMTEgQEAKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNpbmNs
dWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDxzaGx3
YXBpLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5nIGdldFZl
cnNpb25JbmZvKGNvbnN0IExQVk9JRCB2ZXJzaW9uSW5mb0RhdGEsIGNvbnN0IFN0cmluZyYgaW5m
bykKICAgICBVSU5UIGJ1ZmZlckxlbmd0aDsKICAgICBTdHJpbmcgc3ViSW5mbyA9ICJcXFN0cmlu
Z2ZpbGVJbmZvXFwwNDA5MDRFNFxcIiArIGluZm87CiAgICAgYm9vbCByZXR2YWwgPSBWZXJRdWVy
eVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEsCi0gICAgICAgIGNvbnN0X2Nhc3Q8VUNoYXIqPihzdWJJ
bmZvLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKKyAgICAgICAgc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN1YkluZm8pLmRhdGEoKSwKICAgICAgICAgJmJ1ZmZl
ciwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKCFyZXR2YWwgfHwgYnVmZmVyTGVuZ3RoID09IDAp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE2NywxNCArMTY4LDEzIEBAIHZvaWQgUGx1
Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiBib29s
IFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiB7CiAgICAgRFdPUkQgdmVyc2lvbkluZm9TaXpl
LCB6ZXJvSGFuZGxlOwotICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1Np
emVXKGNvbnN0X2Nhc3Q8VUNoYXIqPihtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpLCAmemVyb0hhbmRsZSk7CisgICAgdmVyc2lvbkluZm9TaXplID0gR2V0Rmls
ZVZlcnNpb25JbmZvU2l6ZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0
YSgpLCAmemVyb0hhbmRsZSk7CiAgICAgaWYgKHZlcnNpb25JbmZvU2l6ZSA9PSAwKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIHZlcnNpb25JbmZvRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPih2ZXJzaW9uSW5mb1NpemUpOwogCi0gICAgaWYgKCFHZXRGaWxlVmVyc2lv
bkluZm9XKGNvbnN0X2Nhc3Q8VUNoYXIqPihtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpLAotICAgICAgICAgICAgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9u
SW5mb0RhdGEuZ2V0KCkpKQorICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVy
c2lvbkluZm9EYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9uYW1l
ID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiUHJvZHVjdE5hbWUiKTsK
QEAgLTI0NCwxMSArMjQ0LDExIEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAKICAgICAg
ICAgU3RyaW5nIHBhdGggPSBtX3BhdGguc3Vic3RyaW5nKDAsIG1fcGF0aC5yZXZlcnNlRmluZCgn
XFwnKSk7CiAKLSAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHBhdGguY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQorICAgICAgICBpZiAoITo6U2V0Q3Vy
cmVudERpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gTG9hZCB0aGUgbGlicmFy
eQotICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcobV9wYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hf
UEFUSCk7CisgICAgICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJD
SF9QQVRIKTsKIAogICAgICAgICBpZiAoITo6U2V0Q3VycmVudERpcmVjdG9yeVcoY3VycmVudFBh
dGgpKSB7CiAgICAgICAgICAgICBpZiAobV9tb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwYmJlZjVkM2E1MDQxNmI0MTZhZDQ4MjIyOWI2
MjQ2MWE4YmVmNGE3Li5jOWVlODY3ZGJhMzg1NDljYmI1NTQ2MjM5YjBjZTA4MTNhYzRmZDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKQEAgLTcyLDYg
KzcyLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmpl
Y3QuaD4KIAogI2lmIFVTRShDQUlSTykKQEAgLTc2MSwxMyArNzYyLDEzIEBAIE5QRXJyb3IgUGx1
Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzJf
dCBsZW4sIGNvbnN0CiAKICAgICAvLyBHZXQgZmlsZSBpbmZvCiAgICAgV0lOMzJfRklMRV9BVFRS
SUJVVEVfREFUQSBhdHRyczsKLSAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNFeFcoZmlsZW5hbWUu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdldEZpbGVFeEluZm9TdGFu
ZGFyZCwgJmF0dHJzKSA9PSAwKQorICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEdldEZpbGVFeEluZm9TdGFu
ZGFyZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCiAg
ICAgaWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkp
CiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgIEhBTkRMRSBmaWxl
SGFuZGxlID0gQ3JlYXRlRmlsZVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJ
U1RJTkcsIDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBG
SUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIDAsIDApOwogICAgIAogICAgIGlmIChm
aWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gTlBFUlJf
RklMRV9OT1RfRk9VTkQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311937</attachid>
            <date>2017-06-03 12:18:02 -0700</date>
            <delta_ts>2017-06-04 09:38:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172729-20170603221801.patch</filename>
            <type>text/plain</type>
            <size>24437</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjliY2YxZDlkYTc2OWM4NzQ3ZDQ3YjM1MmRhZmRmYjQ1MWI5OTMxLi5kYWY0MWE3OTgzYjIwNmVj
NWFjMjg3ZTUyMzViMzZhODIyZjk2NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2
ZXJzYS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChjdXJyZW50V29ya2luZ0RpcmVj
dG9yeSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisKIDIwMTctMDUtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbWGNvZGVdIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyBpcyBzZXQgdG8gWUVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDZkZTc1NWUwMjM3ZmM5ZTc0MWEwYTI5MDAyOWRkMDM2NDA1MjZlY2UuLjczYTViZjc3ZWYy
YzRjOWFmYjI0Mzg3N2NiYmQ0NTVkY2QyYjJjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MDYtMDMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAg
IEZpeCBidWlsZCBvZiBXaW5kb3dzLXNwZWNpZmljIGNvZGUgd2l0aCBJQ1UgNTkuMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaDogQWRkZWQgbmV3IGhlYWRlciBmaWxlIHd1dGggaGVscGVyCisg
ICAgICAgIGZ1bmN0aW9ucyBmb3IgY29udmVyc2lvbiBiZXR3ZWVuIFdURjo6U3RyaW5nIGFuZCB3
Y2hhcnRfdCouCisgICAgICAgIChXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcik6Cisg
ICAgICAgIChXVEY6OndjaGFyVG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcpOgorCiAyMDE3LTA1LTI5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRpc2FibGUgZmFzdGVyIEludGVy
cHJldGVyOjpnZXRPcGNvZGVJRCBmb3IgQVJNX1RIVU1CMiB3aXRoIG5vbi1EYXJ3aW4gT1Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDM5N2EzODA5NWMyN2YzMWE0ZTBiYTFiMWNlYWViYTkwNGZkYzZiNzMuLmZm
NTE2MzEzY2E1OWQ5MGJhNmU4MWJlM2I4ZTI4MTFjYjExMzFiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wNi0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgRml4IGJ1aWxkIG9mIFdpbmRvd3Mtc3BlY2lmaWMgY29kZSB3aXRo
IElDVSA1OS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggY29udmVyc2lvbnMgZnJvbSBXVEY6OlN0cmluZyB0byB3Y2hhcl90KiBhbmQgdmljZSB2
ZXJzYS4KKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorCiAy
MDE3LTA1LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjIxNzUxNSk6IENvcnJlY3QgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGJ1ZyAo
QUdBSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzUxMjA5YzY2NmUwMzc4NDI2ODdlMDE1MDBmNDNj
Y2QwY2NmNDk4OC4uOGZlNDNhM2ZkYjk0YmRhYTc3NzAxOGQ2Y2VjYzM2OWRiYWMyOGRjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA2LTAzICBLb25zdGFudGluIFRv
a2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBGaXggYnVpbGQgb2YgV2luZG93
cy1zcGVjaWZpYyBjb2RlIHdpdGggSUNVIDU5LjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb252ZXJzaW9ucyBmcm9tIFdURjo6U3RyaW5nIHRv
IHdjaGFyX3QqIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3Ry
eSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRp
cmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1vemlsbGFQbHVnaW5EaXJlY3Rvcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZEphdmFQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6c2FmYXJpUGx1Z2luc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNYWNy
b21lZGlhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2Fn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRWZXJzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luUGFja2FnZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZSk6CisKIDIw
MTctMDUtMzAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXaW5dIGZhc3Qvc2hhZG93LWRvbS9mdWxsc2NyZWVuLWluLXNsb3QtZnVsbHNjcmVlbkVsZW1l
bnQuaHRtbCBpcyBmbGFreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOGY4ZjJkNjYxYzRhNTcx
Y2I2Njg0YTZjMTZlYmQwNTRlOGE3NGJhYy4uMTZhNzk0MmI4MjM1ZTJmZGY1YjVjYmZmZjk0OWI4
YTc5Nzk1MTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTk2LDYgKzk2LDcgQEAKIAogI2lm
IE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8ZGlyZWN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2lu
L1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZWxzZQogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlm
CkBAIC0xNTY3LDggKzE1NjgsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1l
PiBjdXJyZW50V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAogICAgIGF1
dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7CiAg
ICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVco
YnVmZmVyTGVuZ3RoLCBidWZmZXIuZ2V0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdj
aGFyX3QpID09IHNpemVvZihVQ2hhciksICJJbiBXaW5kb3dzLCBib3RoIGFyZSBVVEYtMTZMRSIp
OwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGJ1ZmZlci5nZXQoKSkpOworICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcoYnVmZmVyLmdldCgpKTsKICAgICAvLyBXZSBkb24ndCBz
dXBwb3J0IG5ldHdvcmsgcGF0aCBsaWtlIFxcaG9zdFxzaGFyZVw8cGF0aCBuYW1lPi4KICAgICBp
ZiAoZGlyZWN0b3J5U3RyaW5nLnN0YXJ0c1dpdGgoIlxcXFwiKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTE3NDUsOSArMTc0NSw3IEBAIHN0YXRpYyBib29sIGZldGNoTW9kdWxl
RnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4m
CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dz
L2Rlc2t0b3AvYWEzNjUyNDcuYXNweCNtYXhwYXRoCiAgICAgLy8gVXNlIGxvbmcgVU5DIHRvIHBh
c3MgdGhlIGxvbmcgcGF0aCBuYW1lIHRvIHRoZSBXaW5kb3dzIEFQSXMuCiAgICAgU3RyaW5nIGxv
bmdVTkNQYXRoTmFtZSA9IFdURjo6bWFrZVN0cmluZygiXFxcXD9cXCIsIGZpbGVOYW1lKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIpLCAiSW4gV2lu
ZG93cywgYm90aCBhcmUgVVRGLTE2TEUiKTsKLSAgICBhdXRvIHV0ZjE2VmVjdG9yID0gbG9uZ1VO
Q1BhdGhOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7Ci0gICAgRklMRSogZiA9
IF93Zm9wZW4ocmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4odXRmMTZWZWN0b3IuZGF0YSgpKSwg
TCJyYiIpOworICAgIEZJTEUqIGYgPSBfd2ZvcGVuKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihsb25nVU5DUGF0aE5hbWUpLmRhdGEoKSwgTCJyYiIpOwogI2Vsc2UKICAgICBGSUxFKiBmID0g
Zm9wZW4oZmlsZU5hbWUudXRmOCgpLmRhdGEoKSwgInIiKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDA1ZTI3MzM4
YjI4OWQ0OWNiYjU1MjI3MTZkOTMyODhjMjc1MTgzMGMuLjhhODdjYzYyYWQ1YWMyZTUxODQ0NGIw
ODM1OGFjZjE3ZTY2N2I4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2lmIE9TKFdJTkRPV1Mp
CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xMDgsNyArMTA5
LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBE
YXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZP
Uk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwogICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZv
cm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7CiAgICAgICAgICAgICBjb25zdCBXQ0hBUiog
d2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdo
dE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0
cmluZyB0aW1lWm9uZU5hbWUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdpblRpbWVa
b25lTmFtZSkpOworICAgICAgICAgICAgU3RyaW5nIHRpbWVab25lTmFtZSA9IG51bGxUZXJtaW5h
dGVkV0NoYXJUb1N0cmluZyh3aW5UaW1lWm9uZU5hbWUpOwogI2Vsc2UKICAgICAgICAgICAgIHN0
cnVjdCB0bSBndG0gPSB0OwogICAgICAgICAgICAgY2hhciB0aW1lWm9uZU5hbWVbNzBdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQw
MDRlNTE1OTVjYjVlZjNhOTE2NjhhMjYyMGUxZTBmMzRmNzk1MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBLb25zdGFudGluIFRva2FyZXYgPGFubnVs
ZW5AeWFuZGV4LnJ1PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHdjaGFy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitpbmxpbmUgVmVjdG9yPHdjaGFyX3Q+IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBWZWN0b3I8d2NoYXJfdD4gcmVzdWx0OworCisgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkgKyAxKTsKKworICAgICAgICBpZiAoc3RyaW5n
LmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczggPSBzdHJp
bmcuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC51bmNoZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhbaV0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNiA9IHN0cmluZy5pbXBsKCktPmNoYXJh
Y3RlcnMxNigpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIHN0cmlu
Zy5pbXBsKCktPmxlbmd0aCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
MCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIFN0cmluZyB3Y2hh
clRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2Ug
YXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOworICAgIHJldHVy
biBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5n
dGgpOworfQorCitpbmxpbmUgU3RyaW5nIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhjb25z
dCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQoreworICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKGNoYXJh
Y3RlcnMsIHdjc2xlbihjaGFyYWN0ZXJzKSAtIDEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwordXNpbmcgV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXI7Cit1c2luZyBXVEY6Ondj
aGFyVG9TdHJpbmc7Cit1c2luZyBXVEY6Om51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggZWQz
MmQxOWY3NDE0MTdkNTk2YTk2MjhiY2M1NzJjNGZiNWNmODhhMC4uYzE4ODI5YmEyZTczMDViYmQ5
NDQxMDI3NGIzOGVlYTYzMWMxNWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIFNPRlRfTElOS19MSUJSQVJZKE1m
KTsKIFNPRlRfTElOS19PUFRJT05BTChNZiwgTUZDcmVhdGVTb3VyY2VSZXNvbHZlciwgSFJFU1VM
VCwgU1REQVBJQ0FMTFRZUEUsIChJTUZTb3VyY2VSZXNvbHZlcioqKSk7CkBAIC0xNDIsNyArMTQz
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiBtaW1lVHlwZUNhY2hlKCkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgewogICAgICAgICBD
QUxQV1NUUiBtaW1lVHlwZUFycmF5ID0gcHJvcFZhck1pbWVUeXBlQXJyYXkuY2FscHdzdHI7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lVHlwZUFycmF5LmNFbGVtczsgaSsr
KQotICAgICAgICAgICAgY2FjaGVkVHlwZXMuZ2V0KCkuYWRkKG1pbWVUeXBlQXJyYXkucEVsZW1z
W2ldKTsKKyAgICAgICAgICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChudWxsVGVybWluYXRlZFdD
aGFyVG9TdHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKICAgICB9CiAKICAgICBQcm9w
VmFyaWFudENsZWFyKCZwcm9wVmFyTWltZVR5cGVBcnJheSk7CkBAIC00NjAsNyArNDYxLDcgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFT
b3VyY2UoY29uc3QgU3RyaW5nJiB1cmwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ09N
UHRyPElVbmtub3duPiBjYW5jZWxDb29raWU7Ci0gICAgVmVjdG9yPFVDaGFyPiB1cmxTb3VyY2Ug
PSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKKyAgICBWZWN0b3I8d2NoYXJf
dD4gdXJsU291cmNlID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHVybCk7CiAKICAgICBB
c3luY0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBBc3luY0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApp
bmRleCA2MjUxNmJiOTNlMTNjZDhiNTA2MzIxYTYyZDdlNjUwZTQ3OWQ0ZWRmLi5lODZkMzA0NzA3
ZmFjNjY2OTIzZjc1ODFhZTg2NmZkZjNmNmUzOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvV2lu
ZG93c0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtleSwgSGFzaFNldDxT
dHJpbmc+JiBwYXQKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTIHx8IHR5cGUg
IT0gUkVHX1NaKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcGF0aHMuYWRkKFN0
cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAg
IHBhdGhzLmFkZCh3Y2hhclRvU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdD
SEFSKSAtIDEpKTsKICAgICB9CiAKICAgICBSZWdDbG9zZUtleShrZXkpOwpAQCAtODMsNyArODQs
NyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFz
aFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gKml0ICsgIlxcKiI7CiAKLSAgICAgICAg
aEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhwYXR0ZXJuLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkuZGF0YSgpLCAmZmluZEZpbGVEYXRhKTsKKyAgICAgICAgaEZpbmQgPSBGaW5kRmlyc3RG
aWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0dGVybikuZGF0YSgpLCAmZmluZEZp
bGVEYXRhKTsKIAogICAgICAgICBpZiAoaEZpbmQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTkyLDcgKzkzLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFz
ZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNv
bnN0CiAgICAgICAgICAgICBpZiAoZmluZEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxF
X0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IFN0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3
Y3NsZW4oZmluZEZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgU3RyaW5nIGZpbGVu
YW1lID0gd2NoYXJUb1N0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZp
bGVEYXRhLmNGaWxlTmFtZSkpOwogICAgICAgICAgICAgaWYgKCghZmlsZW5hbWUuc3RhcnRzV2l0
aCgibnAiLCBmYWxzZSkgfHwgIWZpbGVuYW1lLmVuZHNXaXRoKCJkbGwiLCBmYWxzZSkpICYmCiAg
ICAgICAgICAgICAgICAgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFtZSwg
InBsdWdpbi5kbGwiKSB8fCAhaXQtPmVuZHNXaXRoKCJTaG9ja3dhdmUgMTAiLCBmYWxzZSkpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc5LDExICsxODAsMTEgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGly
ZWN0b3JpZXMpCiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb25zUGF0aCA9
IFN0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMiOworICAgICAgICAgICAgU3Ry
aW5nIGV4dGVuc2lvbnNQYXRoID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4
dGVuc2lvbnMiOwogICAgICAgICAgICAgSEtFWSBleHRlbnNpb25zS2V5OwogCiAgICAgICAgICAg
ICAvLyBUcnkgb3BlbmluZyB0aGUga2V5Ci0gICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVuS2V5
RXgoa2V5LCBleHRlbnNpb25zUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSwgMCwgS0VZX1JFQUQsICZleHRlbnNpb25zS2V5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IFJlZ09wZW5LZXlFeChrZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHRlbnNpb25z
UGF0aCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOwogCiAgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAvLyBOb3cg
Z2V0IHRoZSBwbHVnaW5zIGRpcmVjdG9yeQpAQCAtMTk0LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yaWVzKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJlZ1F1ZXJ5VmFsdWVFeChleHRlbnNp
b25zS2V5LCBURVhUKCJQbHVnaW5zIiksIDAsICZ0eXBlLCAoTFBCWVRFKSZwbHVnaW5zRGlyZWN0
b3J5U3RyLCAmcGx1Z2luc0RpcmVjdG9yeVNpemUpOwogCiAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICAgICAgICAg
ICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdp
bnNEaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwg
cGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogCiAgICAgICAgICAg
ICAgICAgUmVnQ2xvc2VLZXkoZXh0ZW5zaW9uc0tleSk7CiAgICAgICAgICAgICB9CkBAIC0yMTEs
NyArMjEyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdp
bkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBEV09SRCBwbHVnaW5EaXJl
Y3RvcnlTaXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKFRFWFQoIiVTWVNURU1EUklW
RSVcXFBGaWxlc1xcUGx1Z2lucyIpLCBwbHVnaW5EaXJlY3RvcnlTdHIsIFdURl9BUlJBWV9MRU5H
VEgocGx1Z2luRGlyZWN0b3J5U3RyKSk7CiAKICAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6ZSA+
IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVj
dG9yeVN0cikpCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0
b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOworICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNp
emUgLSAxKSk7CiAKICAgICBEV09SRCB0eXBlOwogICAgIFdDSEFSIGluc3RhbGxhdGlvbkRpcmVj
dG9yeVN0cltfTUFYX1BBVEhdOwpAQCAtMjIwLDcgKzIyMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRp
cmVjdG9yCiAgICAgSFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxf
TUFDSElORSwgTCJTb2Z0d2FyZVxcTWljcm9zb2Z0XFxNZWRpYVBsYXllciIsIEwiSW5zdGFsbGF0
aW9uIERpcmVjdG9yeSIsICZ0eXBlLCAmaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCAmaW5zdGFs
bGF0aW9uRGlyZWN0b3J5U2l6ZSk7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1Mg
JiYgdHlwZSA9PSBSRUdfU1opCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcoaW5z
dGFsbGF0aW9uRGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9m
KFdDSEFSKSAtIDEpKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmco
aW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6
ZW9mKFdDSEFSKSAtIDEpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2Jh
dFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCkBAIC0yNDQsMTAg
KzI0NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0
b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBF
UlJPUl9TVUNDRVNTKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4g
YWNyb2JhdFZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcoU3RyaW5nKG5hbWUsIG5hbWVMZW4p
KTsKKyAgICAgICAgVmVjdG9yPGludD4gYWNyb2JhdFZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJp
bmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSk7CiAgICAgICAgIGlmIChjb21wYXJlVmVy
c2lvbnMoYWNyb2JhdFZlcnNpb24sIGxhdGVzdEFjcm9iYXRWZXJzaW9uKSkgewogICAgICAgICAg
ICAgbGF0ZXN0QWNyb2JhdFZlcnNpb24gPSBhY3JvYmF0VmVyc2lvbjsKLSAgICAgICAgICAgIGxh
dGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pOworICAgICAg
ICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5h
bWVMZW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTcsMTAgKzI1OCwxMCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+
JiBkaXJlY3RvcmllcykKICAgICAgICAgRFdPUkQgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSA9IHNp
emVvZihhY3JvYmF0SW5zdGFsbFBhdGhTdHIpOwogCiAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1
Z2luS2V5UGF0aCA9ICJTb2Z0d2FyZVxcQWRvYmVcXEFjcm9iYXQgUmVhZGVyXFwiICsgbGF0ZXN0
QWNyb2JhdFZlcnNpb25TdHJpbmcgKyAiXFxJbnN0YWxsUGF0aCI7Ci0gICAgICAgIHJlc3VsdCA9
IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBhY3JvYmF0UGx1Z2luS2V5UGF0
aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9i
YXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOworICAgICAgICByZXN1
bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGFjcm9iYXRQbHVnaW5LZXlQYXRoKS5kYXRhKCksIDAsICZ0eXBlLCBhY3Jv
YmF0SW5zdGFsbFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBhdGhTaXplKTsKIAogICAgICAgICBp
ZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIFN0cmluZyBhY3JvYmF0
UGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdElu
c3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOworICAgICAg
ICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSB3Y2hhclRvU3RyaW5nKGFjcm9i
YXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikg
LSAxKSArICJcXGJyb3dzZXIiOwogICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGFjcm9i
YXRQbHVnaW5EaXJlY3RvcnkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjg5LDEwICsyOTAsMTAg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmlu
Zz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBh
cnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8
aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUs
IG5hbWVMZW4pKTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhqYXZhVmVyc2lvbiwgbGF0
ZXN0SmF2YVZlcnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvbiA9IGphdmFW
ZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFt
ZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvblN0cmluZyA9IHdjaGFy
VG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwNCwxMiAr
MzA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgRFdPUkQgdXNlTmV3UGx1Z2luU2l6ZTsK
IAogICAgICAgICBTdHJpbmcgamF2YVBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEphdmFTb2Z0
XFxKYXZhIFBsdWctaW5cXCIgKyBsYXRlc3RKYXZhVmVyc2lvblN0cmluZzsKLSAgICAgICAgcmVz
dWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIGphdmFQbHVnaW5LZXlQ
YXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQ
bHVnaW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7Cisg
ICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRhdGEoKSwgTCJVc2VO
ZXdKYXZhUGx1Z2luIiwgJnR5cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNp
emUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB1c2VOZXdQbHVn
aW5WYWx1ZSA9PSAxKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhL
RVlfTE9DQUxfTUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCksIEwiSmF2YUhvbWUiLCAmdHlwZSwgamF2YUluc3RhbGxQYXRoU3Ry
LCAmamF2YUluc3RhbGxQYXRoU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3Ry
eVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGph
dmFQbHVnaW5LZXlQYXRoKS5kYXRhKCksIEwiSmF2YUhvbWUiLCAmdHlwZSwgamF2YUluc3RhbGxQ
YXRoU3RyLCAmamF2YUluc3RhbGxQYXRoU2l6ZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgamF2YVBsdWdpbkRpcmVj
dG9yeSA9IFN0cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUgLyBz
aXplb2YoV0NIQVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4iOworICAgICAgICAgICAgICAg
IFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gd2NoYXJUb1N0cmluZyhqYXZhSW5zdGFsbFBh
dGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxiaW5c
XG5ld19wbHVnaW4iOwogICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChqYXZhUGx1
Z2luRGlyZWN0b3J5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzM1LDcgKzMzNiw3
IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNhZmFyaVBsdWdpbnNEaXJlY3RvcnkoKQogICAgICAg
ICBpZiAoIVBhdGhSZW1vdmVGaWxlU3BlYyhtb2R1bGVGaWxlTmFtZVN0cikpCiAgICAgICAgICAg
ICBnb3RvIGV4aXQ7CiAKLSAgICAgICAgcGx1Z2luc0RpcmVjdG9yeSA9IFN0cmluZyhtb2R1bGVG
aWxlTmFtZVN0cikgKyAiXFxQbHVnaW5zIjsKKyAgICAgICAgcGx1Z2luc0RpcmVjdG9yeSA9IG51
bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtb2R1bGVGaWxlTmFtZVN0cikgKyAiXFxQbHVnaW5z
IjsKICAgICB9CiBleGl0OgogICAgIHJldHVybiBwbHVnaW5zRGlyZWN0b3J5OwpAQCAtMzUxLDEw
ICszNTIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rv
cmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgV0NIQVIgbWFjcm9tZWRpYURp
cmVjdG9yeVN0cltNQVhfUEFUSF07CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0
b3J5U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxGbGFzaCIpKTsKLSAg
ICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRpYURpcmVjdG9yeVN0cik7CisgICAgZGlyZWN0
b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNyb21lZGlhRGlyZWN0
b3J5U3RyKSk7CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0b3J5U3RyLCBzeXN0
ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxTaG9ja3dhdmUgMTAiKSk7Ci0gICAgZGly
ZWN0b3JpZXMuYXBwZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpOworICAgIGRpcmVjdG9yaWVz
LmFwcGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFjcm9tZWRpYURpcmVjdG9yeVN0
cikpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRp
cmVjdG9yaWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2lu
UGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VX
aW4uY3BwCmluZGV4IDcxMTlkODg1NDE1MTExNmZjNWRkOTg0ZDNhZDIyZTM1ZGM1NjExYWIuLmUw
MDk0Yjk2YmIxODlhNjk2MzU1ZGUwZGIwODAzMGJjMGE4MmQ3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAtMzQsMTAgKzM0LDExIEBA
CiAjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
Im5wcnVudGltZV9pbXBsLmgiCisjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4
LDcgQEAgc3RhdGljIFN0cmluZyBnZXRWZXJzaW9uSW5mbyhjb25zdCBMUFZPSUQgdmVyc2lvbklu
Zm9EYXRhLCBjb25zdCBTdHJpbmcmIGluZm8pCiAgICAgVUlOVCBidWZmZXJMZW5ndGg7CiAgICAg
U3RyaW5nIHN1YkluZm8gPSAiXFxTdHJpbmdmaWxlSW5mb1xcMDQwOTA0RTRcXCIgKyBpbmZvOwog
ICAgIGJvb2wgcmV0dmFsID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lvbkluZm9EYXRhLAotICAgICAg
ICBjb25zdF9jYXN0PFVDaGFyKj4oc3ViSW5mby5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSksCisgICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdWJJbmZv
KS5kYXRhKCksCiAgICAgICAgICZidWZmZXIsICZidWZmZXJMZW5ndGgpOwogICAgIGlmICghcmV0
dmFsIHx8IGJ1ZmZlckxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0x
NjcsMTQgKzE2OCwxMyBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJrcyhjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogewog
ICAgIERXT1JEIHZlcnNpb25JbmZvU2l6ZSwgemVyb0hhbmRsZTsKLSAgICB2ZXJzaW9uSW5mb1Np
emUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgJnplcm9IYW5kbGUpOworICAg
IHZlcnNpb25JbmZvU2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgJnplcm9IYW5kbGUpOwogICAgIGlmICh2ZXJz
aW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byB2ZXJz
aW9uSW5mb0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lvbkluZm9TaXplKTsK
IAotICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRo
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKLSAgICAgICAgICAgIDAs
IHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgpKSkKKyAgICBpZiAoIUdldEZp
bGVWZXJzaW9uSW5mb1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgp
LCAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0
YS5nZXQoKSwgIlByb2R1Y3ROYW1lIik7CkBAIC0yNDQsMTEgKzI0NCwxMSBAQCBib29sIFBsdWdp
blBhY2thZ2U6OmxvYWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbV9wYXRoLnN1YnN0cmlu
ZygwLCBtX3BhdGgucmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAgICAgIGlmICghOjpTZXRDdXJy
ZW50RGlyZWN0b3J5VyhwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSkKKyAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIC8vIExvYWQgdGhlIGxpYnJhcnkKLSAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJy
YXJ5RXhXKG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwg
TE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOworICAgICAgICBtX21vZHVsZSA9IDo6TG9h
ZExpYnJhcnlFeFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAw
LCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNldEN1
cnJlbnREaXJlY3RvcnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9kdWxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMGJi
ZWY1ZDNhNTA0MTZiNDE2YWQ0ODIyMjliNjI0NjFhOGJlZjRhNy4uYzllZTg2N2RiYTM4NTQ5Y2Ji
NTU0NjIzOWIwY2UwODEzYWM0ZmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBVU0UoQ0FJUk8pCkBAIC03NjEs
MTMgKzc2MiwxMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0
b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyX3QgbGVuLCBjb25zdAogCiAgICAgLy8gR2V0IGZpbGUg
aW5mbwogICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0cnM7Ci0gICAgaWYgKEdldEZp
bGVBdHRyaWJ1dGVzRXhXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykgPT0gMCkKKyAgICBpZiAoIUdl
dEZpbGVBdHRyaWJ1dGVzRXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSku
ZGF0YSgpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykpCiAgICAgICAgIHJldHVybiBO
UEVSUl9GSUxFX05PVF9GT1VORDsKIAogICAgIGlmIChhdHRycy5kd0ZpbGVBdHRyaWJ1dGVzICYg
RklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1Rf
Rk9VTkQ7CiAKLSAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKGZpbGVuYW1lLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBGSUxFX1JFQURfREFUQSwgRklM
RV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsKKyAgICBIQU5ETEUgZmlsZUhh
bmRsZSA9IENyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSku
ZGF0YSgpLCBGSUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5H
LCAwLCAwKTsKICAgICAKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxV
RSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>