<?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>79928</bug_id>
          
          <creation_ts>2012-02-29 11:18:08 -0800</creation_ts>
          <short_desc>Use the new createSnapshotFileAndReadMetadata API for FileEntry.file()</short_desc>
          <delta_ts>2012-03-01 06:27:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (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="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>fishd</cc>
    
    <cc>jianli</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>michaeln</cc>
    
    <cc>tzik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>567763</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 11:18:08 -0800</bug_when>
    <thetext>Use the new createSnapshotFileAndReadMetadata API for FileEntry.file()

We used to call readMetadata() to get the platform file name when we create a File object from FileEntry, but we should use new platform-specific specialized API for creating a snapshot File, i.e. createSnapshotFileAndReadMetadata, so that the platform can make more appropriate action, e.g. it may simply return the metadata as we used to, or may want to create a temporary snapshot file from the original file (so that it can make sure it gets immutable File object).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567956</commentid>
    <comment_count>1</comment_count>
      <attachid>129521</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 14:35:39 -0800</bug_when>
    <thetext>Created attachment 129521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567972</commentid>
    <comment_count>2</comment_count>
      <attachid>129521</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 14:46:32 -0800</bug_when>
    <thetext>Comment on attachment 129521
Patch

The cr-linux tests will fail until we submit the corresponding DRT changes.

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

&gt; Source/WebKit/chromium/ChangeLog:13
&gt; +        registers the created snapshot file with the given internal Blob URL.

...and in the callback chain we call File::createWithName() to create a new File by supplying the file path and the internal Blob URL as a source Blob, and then call unregisterBlobURL() to clean up the internal Blob URL.

(I&apos;ll add more description in the ChangeLog)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567973</commentid>
    <comment_count>3</comment_count>
      <attachid>129524</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 14:50:13 -0800</bug_when>
    <thetext>Created attachment 129524
Patch

Updated the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568023</commentid>
    <comment_count>4</comment_count>
      <attachid>129524</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-29 15:39:39 -0800</bug_when>
    <thetext>Comment on attachment 129524
Patch

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

&gt; Source/WebCore/platform/AsyncFileSystem.h:144
&gt; +    // In local filesystem cases the backend may simply return the metadata of the file itself (as well as readMetadata does), while in remote filesystem case the backend may download the file into a temporary snapshot file and return the metadata of the temporary file.

some lines may be too long even for webcore... is this one of them :)

&gt; Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp:74
&gt; +        // Now that we&apos;ve registered the snapshot file, we can unregister our internalBlobURL which has played a placeholder for the file during the IPC.

Just want to verify that in the &apos;worker&apos; case, this method is executing on the background worker thread, is that right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568031</commentid>
    <comment_count>5</comment_count>
      <attachid>129524</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 15:47:29 -0800</bug_when>
    <thetext>Comment on attachment 129524
Patch

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

&gt;&gt; Source/WebCore/platform/AsyncFileSystem.h:144
&gt;&gt; +    // In local filesystem cases the backend may simply return the metadata of the file itself (as well as readMetadata does), while in remote filesystem case the backend may download the file into a temporary snapshot file and return the metadata of the temporary file.
&gt; 
&gt; some lines may be too long even for webcore... is this one of them :)

Yep will split them... at least will do so for this one.

&gt;&gt; Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp:74
&gt;&gt; +        // Now that we&apos;ve registered the snapshot file, we can unregister our internalBlobURL which has played a placeholder for the file during the IPC.
&gt; 
&gt; Just want to verify that in the &apos;worker&apos; case, this method is executing on the background worker thread, is that right?

Yes, in the worker case we first bridge the request to the main thread, call createSnapshotFileAndReadMetadata WebKit API on the main thread, and are called back on the main thread, come back to the worker thread and then run this code snippet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568036</commentid>
    <comment_count>6</comment_count>
      <attachid>129524</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-29 15:55:01 -0800</bug_when>
    <thetext>Comment on attachment 129524
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        * platform/AsyncFileSystem.h:

If we could fully encapsulate details of the &apos;internalBlobUrl&apos; within the AsyncFileSystem class, that could be an improvement.

AsyncFileSystem::createSnapshotFile(path, callbacks);
AsyncFileSystemCallbacks::didCreateSnapshotFile(file);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568105</commentid>
    <comment_count>7</comment_count>
      <attachid>129556</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 16:56:44 -0800</bug_when>
    <thetext>Created attachment 129556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568107</commentid>
    <comment_count>8</comment_count>
      <attachid>129524</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 16:58:40 -0800</bug_when>
    <thetext>Comment on attachment 129524
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        * platform/AsyncFileSystem.h:
&gt; 
&gt; If we could fully encapsulate details of the &apos;internalBlobUrl&apos; within the AsyncFileSystem class, that could be an improvement.
&gt; 
&gt; AsyncFileSystem::createSnapshotFile(path, callbacks);
&gt; AsyncFileSystemCallbacks::didCreateSnapshotFile(file);

As we chatted offline while this sounded a good idea we cannot do that because AsyncFileSystemCallbacks is defined in platform/ and we cannot refer File there.  Then we also realized that we can probably just not using the internal Blob URL when we create a new File.

I updated the patch along the line-- now it should look simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568134</commentid>
    <comment_count>9</comment_count>
      <attachid>129556</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-29 17:25:50 -0800</bug_when>
    <thetext>Comment on attachment 129556
Patch

This looks much nicer.

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

&gt; Source/WebCore/fileapi/DOMFileSystemSync.cpp:135
&gt; +    m_asyncFileSystem-&gt;createSnapshotFileAndReadMetadata(fileEntry-&gt;fullPath(), GetPathHelper::create(result));

The File is created at the end of this method body, has &apos;unregister&apos; happened prior to that? Looks like GetPathHelper::didReadMetadata() may need to construct the File in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568143</commentid>
    <comment_count>10</comment_count>
      <attachid>129564</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 17:38:11 -0800</bug_when>
    <thetext>Created attachment 129564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568144</commentid>
    <comment_count>11</comment_count>
      <attachid>129556</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 17:38:44 -0800</bug_when>
    <thetext>Comment on attachment 129556
Patch

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

&gt;&gt; Source/WebCore/fileapi/DOMFileSystemSync.cpp:135
&gt;&gt; +    m_asyncFileSystem-&gt;createSnapshotFileAndReadMetadata(fileEntry-&gt;fullPath(), GetPathHelper::create(result));
&gt; 
&gt; The File is created at the end of this method body, has &apos;unregister&apos; happened prior to that? Looks like GetPathHelper::didReadMetadata() may need to construct the File in this case.

Good catch, sounds true.  I updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568146</commentid>
    <comment_count>12</comment_count>
      <attachid>129564</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-29 17:40:36 -0800</bug_when>
    <thetext>Comment on attachment 129564
Patch

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

&gt; Source/WebCore/fileapi/DOMFileSystemSync.cpp:146
&gt; +    return result-&gt;m_file;

result-&gt;m_file.release()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568147</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-29 17:40:57 -0800</bug_when>
    <thetext>lgtm fwiw</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568148</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 17:41:05 -0800</bug_when>
    <thetext>Attachment 129564 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568149</commentid>
    <comment_count>15</comment_count>
      <attachid>129564</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-02-29 17:42:08 -0800</bug_when>
    <thetext>Comment on attachment 129564
Patch

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

&gt;&gt; Source/WebCore/fileapi/DOMFileSystemSync.cpp:146
&gt;&gt; +    return result-&gt;m_file;
&gt; 
&gt; result-&gt;m_file.release()?

I was about to do so but it wouldn&apos;t make a big change... well anyway will change like that when I create a next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568155</commentid>
    <comment_count>16</comment_count>
      <attachid>129564</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-29 17:48:57 -0800</bug_when>
    <thetext>Comment on attachment 129564
Patch

Thanks Michael for doing the heavy lifting :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568219</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-29 18:49:55 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 129564 [details])
&gt; Thanks Michael for doing the heavy lifting :).

i think kinuko did the heavy lifting :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568463</commentid>
    <comment_count>18</comment_count>
      <attachid>129564</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 01:22:07 -0800</bug_when>
    <thetext>Comment on attachment 129564
Patch

Rejecting attachment 129564 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
eeded at 298 with fuzz 1 (offset 9 lines).
Hunk #2 succeeded at 371 with fuzz 1 (offset 14 lines).
patching file Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.h
Hunk #1 FAILED at 94.
Hunk #2 FAILED at 117.
2 out of 2 hunks FAILED -- saving rejects to file Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.h.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;David Levin&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11757310</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129521</attachid>
            <date>2012-02-29 14:35:39 -0800</date>
            <delta_ts>2012-02-29 14:50:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79928-20120301073537.patch</filename>
            <type>text/plain</type>
            <size>31076</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3MDYyZjFmOTU4ODIz
YTJhNGRkMjhmMDkyZDllOWEwNWVhZWVhYy4uMzYzMGU1MzZjYmJiOTQ2Y2ZjNDYyYWYxMDk1MDBl
NGM3MThjY2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTI5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgdGhlIG5ldyBj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEgQVBJIGZvciBGaWxlRW50cnkuZmlsZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTkyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czogbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0v
IHRlc3RzIHNob3VsZCB1c2UgdGhlIG5ldyBjb2RlICh0aGV5IHNob3VsZCBwYXNzIG9uY2UKKyAg
ICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2hyb21pdW0gY2hhbmdlIGlzIHJvbGxlZCBpbikuCisK
KyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZSk6IFVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgQVBJLgor
ICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3
IEFQSS4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZTo6Y3JlYXRlV2l0aE5hbWUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmg6CisgICAgICAgIChGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmg6CisgICAgICAgIChBc3luY0ZpbGVT
eXN0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRDcmVhdGVTbmFw
c2hvdEZpbGUpOiBBZGRlZC4KKwogMjAxMi0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEw
OTEzNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWE3NGVlNzY0OGQ3MmE4Y2UzZDY3
MTkwY2I2Mjk4ODc4ODFkMjlmZS4uNTliNmQ4Njc4ZTM1NDk4NmM0MjcwNDM4NzE3NzkzMDBkYjEy
MjVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0w
Mi0yOSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNl
IHRoZSBuZXcgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhIEFQSSBmb3IgRmlsZUVu
dHJ5LmZpbGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzk5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbiB0aGUgbmV3IGZsb3cgd2UgZmlyc3QgY3JlYXRlIGFuIGludGVybmFsIEJsb2IgVVJMIGZv
ciB0aGUKKyAgICAgICAgc25hcHNob3QgZmlsZSBhbmQgY2FsbCB0aGUgbmV3IGNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YSgpCisgICAgICAgIFdlYktpdCBBUEkgd2l0aCB0aGUgQmxv
YiBVUkwuCisKKyAgICAgICAgVGhlIGltcGxlbWVudG9yIG9mIGNyZWF0ZVNuYXBzaG90RmlsZUFu
ZFJlYWRNZXRhZGF0YSgpIChpLmUuIGNocm9taXVtKQorICAgICAgICByZWdpc3RlcnMgdGhlIGNy
ZWF0ZWQgc25hcHNob3QgZmlsZSB3aXRoIHRoZSBnaXZlbiBpbnRlcm5hbCBCbG9iIFVSTC4KKwor
ICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RGaWxlKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNo
b3RGaWxlQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uaDoKKyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0
ZVNuYXBzaG90RmlsZSk6IEFkZGVkLgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5oOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6cG9zdENyZWF0ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZCk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVTbmFwc2hvdEZp
bGVPbk1haW5UaHJlYWQpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5oOgorICAgICAgICAoV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSk6CisKIDIwMTItMDItMjggIEdhcnkgS2FjbWFyY2lrICA8Z2FyeWthY0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBTZXQgbmF0aXZlS2V5Q29kZSB0byBpbmNsdWRlIFdpbmRv
d3Mgc2NhbiBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRl
eCA5Nzk5ZTEyMDc5ZThhZWQ0MjM1N2E4MTZmYmM2MTViZDliYmEwYjQ0Li5kZTIxYjU4YmI0N2Zl
OTg5MmNhOWExODk0NjFhNzczNzFmZmEwZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFz
ZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTEyMywyMSArMTI0LDIxIEBA
IHZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVu
dHJ5LCBQYXNzUmVmUHRyPEZpbGVXcml0CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIEdldFBhdGhD
YWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CitjbGFzcyBDcmVhdGVT
bmFwc2hvdEZpbGVDYWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICBzdGF0aWMgUGFzc093blB0cjxDcmVhdGVTbmFw
c2hvdEZpbGVDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5
c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhDYWxsYmFjayhmaWxlc3lzdGVt
LCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcmVhdGVTbmFwc2hvdEZpbGVDYWxsYmFjayhmaWxlc3lzdGVtLCBuYW1l
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZVNuYXBzaG90RmlsZShjb25zdCBLVVJMJiBzb3VyY2VCbG9i
VVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKTsKLSAgICAgICAgbV9maWxlc3lzdGVt
LT5zY2hlZHVsZUNhbGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZTo6Y3Jl
YXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpKTsKKyAgICAgICAgbV9m
aWxlc3lzdGVtLT5zY2hlZHVsZUNhbGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwg
RmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBzb3VyY2VCbG9iVVJM
LCBtX25hbWUpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR2V0UGF0aENhbGxiYWNrKFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIENyZWF0ZVNuYXBzaG90RmlsZUNhbGxiYWNrKFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCAg
UGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlKGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCiAg
ICAgICAgICwgbV9uYW1lKG5hbWUpCkBAIC0xNTQsNyArMTU1LDcgQEAgcHJpdmF0ZToKIAogdm9p
ZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQ
YXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRN
ZXRhZGF0YShmaWxlRW50cnktPmZ1bGxQYXRoKCksIEdldFBhdGhDYWxsYmFjazo6Y3JlYXRlKHRo
aXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsK
KyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlKGZpbGVFbnRyeS0+ZnVs
bFBhdGgoKSwgQ3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50
cnktPm5hbWUoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVt
U3luYy5jcHAKaW5kZXggZTdhOGNhNzBiZjU3N2NlNGQ0N2U4M2JjZGZmMGEyZDk3Nzc2MjZkNS4u
ZDk4M2VlZTBiMjExMWZlZDViMmUzMTJmMWM4ZTQyYzMzNzY4NmYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKQEAgLTcyLDYwICs3MiwzNiBAQCBQ
YXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OnJvb3QoKQog
CiBuYW1lc3BhY2UgewogCi1jbGFzcyBHZXRQYXRoSGVscGVyIDogcHVibGljIEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyB7CitjbGFzcyBDcmVhdGVTbmFwc2hvdEZpbGVIZWxwZXIgOiBwdWJsaWMg
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBHZXRQYXRoUmVz
dWx0IDogcHVibGljIFJlZkNvdW50ZWQ8R2V0UGF0aFJlc3VsdD4geworICAgIGNsYXNzIFNuYXBz
aG90RmlsZVJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNuYXBzaG90RmlsZVJlc3VsdD4gewog
ICAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRQYXRoUmVzdWx0PiBj
cmVhdGUoKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTbmFwc2hvdEZpbGVSZXN1bHQ+IGNy
ZWF0ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0UGF0
aFJlc3VsdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU25hcHNob3RGaWxl
UmVzdWx0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBtX2ZhaWxlZDsKICAgICAgICAg
aW50IG1fY29kZTsKKyAgICAgICAgS1VSTCBtX2Jsb2JVUkw7CiAgICAgICAgIFN0cmluZyBtX3Bh
dGg7CiAKICAgICAgIHByaXZhdGU6Ci0gICAgICAgIEdldFBhdGhSZXN1bHQoKQorICAgICAgICBT
bmFwc2hvdEZpbGVSZXN1bHQoKQogICAgICAgICAgICAgOiBtX2ZhaWxlZChmYWxzZSkKICAgICAg
ICAgICAgICwgbV9jb2RlKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIH5HZXRQ
YXRoUmVzdWx0KCkKKyAgICAgICAgflNuYXBzaG90RmlsZVJlc3VsdCgpCiAgICAgICAgIHsKICAg
ICAgICAgfQotICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPEdldFBhdGhSZXN1
bHQ+OworICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFNuYXBzaG90RmlsZVJl
c3VsdD47CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhIZWxwZXI+IGNy
ZWF0ZShQYXNzUmVmUHRyPEdldFBhdGhSZXN1bHQ+IHJlc3VsdCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDcmVhdGVTbmFwc2hvdEZpbGVIZWxwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFNuYXBzaG90
RmlsZVJlc3VsdD4gcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBH
ZXRQYXRoSGVscGVyKHJlc3VsdCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNj
ZWVkKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbT4pCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0
cmluZyYsIGJvb2wpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBs
b25nKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ3JlYXRlU25hcHNob3RGaWxlSGVscGVyKHJlc3VsdCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlKQpAQCAtMTM0LDIxICsxMTAsMjMg
QEAgcHVibGljOgogICAgICAgICBtX3Jlc3VsdC0+bV9jb2RlID0gY29kZTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5HZXRQYXRoSGVscGVyKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFk
YXRhKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiAg
ICAgeworICAgICAgICBtX3Jlc3VsdC0+bV9ibG9iVVJMID0gYmxvYlVSTDsKKyAgICAgICAgbV9y
ZXN1bHQtPm1fcGF0aCA9IG1ldGFkYXRhLnBsYXRmb3JtUGF0aDsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorICAgIHZpcnR1
YWwgfkNyZWF0ZVNuYXBzaG90RmlsZUhlbHBlcigpCiAgICAgewotICAgICAgICBtX3Jlc3VsdC0+
bV9wYXRoID0gbWV0YWRhdGEucGxhdGZvcm1QYXRoOwogICAgIH0KKwogcHJpdmF0ZToKLSAgICBH
ZXRQYXRoSGVscGVyKFBhc3NSZWZQdHI8R2V0UGF0aFJlc3VsdD4gcmVzdWx0KQorICAgIENyZWF0
ZVNuYXBzaG90RmlsZUhlbHBlcihQYXNzUmVmUHRyPFNuYXBzaG90RmlsZVJlc3VsdD4gcmVzdWx0
KQogICAgICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRy
PEdldFBhdGhSZXN1bHQ+IG1fcmVzdWx0OworICAgIFJlZlB0cjxTbmFwc2hvdEZpbGVSZXN1bHQ+
IG1fcmVzdWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKQEAgLTE1Niw4ICsxMzQsOCBAQCBwcml2
YXRlOgogUGFzc1JlZlB0cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25z
dCBGaWxlRW50cnlTeW5jKiBmaWxlRW50cnksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVj
ID0gMDsKLSAgICBSZWZQdHI8R2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3VsdD4gcmVzdWx0KEdl
dFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ6OmNyZWF0ZSgpKTsKLSAgICBtX2FzeW5jRmlsZVN5
c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwgR2V0UGF0aEhlbHBlcjo6
Y3JlYXRlKHJlc3VsdCkpOworICAgIFJlZlB0cjxDcmVhdGVTbmFwc2hvdEZpbGVIZWxwZXI6OlNu
YXBzaG90RmlsZVJlc3VsdD4gcmVzdWx0KENyZWF0ZVNuYXBzaG90RmlsZUhlbHBlcjo6U25hcHNo
b3RGaWxlUmVzdWx0OjpjcmVhdGUoKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNu
YXBzaG90RmlsZShmaWxlRW50cnktPmZ1bGxQYXRoKCksIENyZWF0ZVNuYXBzaG90RmlsZUhlbHBl
cjo6Y3JlYXRlKHJlc3VsdCkpOwogICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JP
cGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9S
VF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY3LDcgKzE0NSw3IEBAIFBhc3NSZWZQdHI8
RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyog
ZmlsZUVudHJ5LCBFCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBBU1NFUlQoIXJlc3Vs
dC0+bV9wYXRoLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEZpbGU6OmNyZWF0ZVdpdGhOYW1lKHJl
c3VsdC0+bV9wYXRoLCBmaWxlRW50cnktPm5hbWUoKSk7CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0
ZVdpdGhOYW1lKHJlc3VsdC0+bV9wYXRoLCByZXN1bHQtPm1fYmxvYlVSTCwgZmlsZUVudHJ5LT5u
YW1lKCkpOwogfQogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggZDQw
OWI5NzE5MzM1OTUxOWUzMDBhMDMyOTQ5NzA0ZmFlZjVmM2U4Mi4uYzVmZDUyMThhZjAwMTZlOWQw
YzI5MjE0NWJiNmQ3YjIxYTFjNTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC01MCwx
NyArNTAsNiBAQCBzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxl
V2l0aFR5cGUocGF0aCwgdHlwZSk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0
aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCi17Ci0gICAg
U3RyaW5nIHR5cGU7Ci0gICAgaW50IGluZGV4ID0gZmlsZVN5c3RlbU5hbWUucmV2ZXJzZUZpbmQo
Jy4nKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihmaWxlU3lzdGVtTmFtZS5zdWJz
dHJpbmcoaW5kZXggKyAxKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhU
eXBlKHBhdGgsIHR5cGUpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9B
RCkKIFBhc3NSZWZQdHI8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQogewpAQCAtNzAsNiArNTks
MTkgQEAgUGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCitQYXNzUmVmUHRyPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhOYW1lKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgS1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgU3RyaW5nIHR5cGU7CisgICAgaW50IGluZGV4ID0gbmFtZS5yZXZlcnNlRmluZCgnLicpOwor
ICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSkp
OworICAgIFJlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6Y3JlYXRlKHBhdGgsIHNyY1VSTCwgdHlw
ZSk7CisgICAgZmlsZS0+bV9uYW1lID0gbmFtZTsKKyAgICByZXR1cm4gZmlsZS5yZWxlYXNlKCk7
Cit9CisjZW5kaWYKKwogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgOiBCbG9i
KGNyZWF0ZUJsb2JEYXRhRm9yRmlsZShwYXRoKSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKQEAg
LTg3LDE1ICs4OSw2IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAvLyBTZWUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBmb3IganMgYW5kIHY4LgogfQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICA6IEJs
b2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShwYXRoLCBuYW1lKSwgLTEpCi0gICAg
LCBtX3BhdGgocGF0aCkKLSAgICAsIG1fbmFtZShuYW1lKQotewotfQotI2VuZGlmCi0KIGRvdWJs
ZSBGaWxlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKIHsKICAgICB0aW1lX3QgbW9kaWZpY2F0
aW9uVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggMTNhOTFmZTNlNDFmOTVmYjliMjNhY2Q2
YjBlZWJkYzE1NDQzZDRlMy4uYjVmMWI0NWVlYzc5YzZiOGIyYWQxN2Y3NjNiODdiNDc1ZmI0ZDJi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTU0LDEwICs1NCw4IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYSBuYW1lIGV4
cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJv
cGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7Ci0gICAgfQorICAgIC8vIFRoZSBuZXcgRmlsZSBzaG91
bGQgYmUgY3JlYXRlZCB1c2luZyB0aGUgZ2l2ZW4gc3JjVVJMIChhcyB3ZSBkbyBmb3IgZGVzZXJp
YWxpemF0aW9uKS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0
OwpAQCAtODQsMTAgKzgyLDYgQEAgcHJpdmF0ZToKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9u
LgogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSk7CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0jZW5kaWYKLQogICAgIFN0cmlu
ZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9B
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCmlu
ZGV4IDA2ZjNiOTM4MzRmYmFiNDg0ZmMzNzE0YjE5NDFhODExMWM3MzQzY2EuLmZlZWMxMWIxYTNi
YTkwODU3ZjZhNDlkYTA1YzBjNmQ2ZGQ0MTU4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAtNjUsNDIgKzY1LDYgQEAgRmlsZVN5c3Rl
bUNhbGxiYWNrc0Jhc2U6On5GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSgpCiB7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFN1Y2NlZWQoKQotewotICAgIC8vIEVhY2ggc3Vi
Y2xhc3MgbXVzdCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRPcGVuRmls
ZVN5c3RlbShjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pCi17Ci0g
ICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2U6OmRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmKQotewotICAgIC8vIEVhY2gg
c3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRSZWFk
RGlyZWN0b3J5RW50cmllcyhib29sKQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBs
ZW1lbnQgYW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29u
c3QgU3RyaW5nJiwgYm9vbCkKLXsKLSAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50
IGFuIGFwcHJvcHJpYXRlIG9uZS4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9p
ZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRy
PEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZykKLXsKLSAgICAvLyBFYWNoIHN1YmNsYXNzIG11
c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQogdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkK
IHsKICAgICBpZiAobV9lcnJvckNhbGxiYWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IDdmNjg2MjVhYzkyNjhmOGUyNTQ5ZDFkNWE4OTBk
ODRjYzA1ZmNkZDEuLmUwMmRlYjlmMDFhYzM4MTg5ZDc4OWM0NmI4NzUzYmJkNTE1ZjZkNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC01OSwy
NSArNTksMTEgQEAgY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgOiBwdWJsaWMgQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZSgpOwogCi0gICAgLy8gRm9yIEVudHJ5Q2FsbGJhY2tzIGFuZCBWb2lkQ2FsbGJh
Y2tzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCk7Ci0KLSAgICAvLyBGb3IgRmlsZVN5
c3RlbUNhbGxiYWNrcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi0gICAgLy8gRm9y
IE1ldGFkYXRhQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29u
c3QgRmlsZU1ldGFkYXRhJik7Ci0KLSAgICAvLyBGb3IgRW50cmllc0NhbGxiYWNrcy4gZGlkUmVh
ZERpcmVjdG9yeUVudHJ5IGlzIGNhbGxlZCBlYWNoIHRpbWUgdGhlIEFQSSByZWFkcyBhbiBlbnRy
eSwgYW5kIGRpZFJlYWREaXJlY3RvcnlEb25lIGlzIGNhbGxlZCB3aGVuIGEgY2h1bmsgb2YgZW50
cmllcyBoYXZlIGJlZW4gcmVhZCAoaS5lLiBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRoZSBh
cHBsaWNhdGlvbikuICBJZiBoYXNNb3JlIGlzIHRydWUgdGhlcmUgY2FuIGJlIG1vcmUgY2h1bmtz
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIGlzRGlyZWN0b3J5KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoYm9vbCBoYXNNb3JlKTsKLQotICAgIC8vIEZvciBjcmVhdGVGaWxlV3JpdGVyLgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxl
V3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7Ci0KICAgICAvLyBGb3IgRXJyb3JDYWxsYmFjay4K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSk7CiAKKyAgICAvLyBPdGhlciBjYWxs
YmFjayBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBieSBlYWNoIHN1YmNsYXNzLgorCiBwcm90ZWN0
ZWQ6CiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKTsKICAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxi
YWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAppbmRleCBiYmVm
NmE0ZTMxOWNiZmE5NzNiZGNiYTBhMGRmZDU2MDVjYTdiMTI2Li40ZGUzMDY3ODcyMmVmZmViMjMx
MTExMDA3NzMwODVlOTA5NzE2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0Zp
bGVTeXN0ZW0uaApAQCAtMTQwLDYgKzE0MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25z
dCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAw
OwogCisgICAgLy8gQ3JlYXRlcyBhIHNuYXBzaG90IGZpbGUgZm9yIGEgbmV3IEZpbGUgb2JqZWN0
LgorICAgIC8vIEluIGxvY2FsIGZpbGVzeXN0ZW0gY2FzZXMgdGhlIGJhY2tlbmQgbWF5IHNpbXBs
eSByZXR1cm4gdGhlIG1ldGFkYXRhIG9mIHRoZSBmaWxlIGl0c2VsZiAoYXMgd2VsbCBhcyByZWFk
TWV0YWRhdGEgZG9lcyksIHdoaWxlIGluIHJlbW90ZSBmaWxlc3lzdGVtIGNhc2UgdGhlIGJhY2tl
bmQgbWF5IGRvd25sb2FkIHRoZSBmaWxlIGludG8gYSB0ZW1wb3Jhcnkgc25hcHNob3QgZmlsZSBh
bmQgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUuCisgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRDcmVhdGVTbmFwc2hvdEZpbGUoKSBpcyBjYWxsZWQg
d2hlbiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBzbmFwc2hvdCBmaWxlIGlzIHN1Y2Nlc3NmdWxseSBy
ZXR1cm5lZC4KKyAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBj
YWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0g
MDsKKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCmluZGV4IGNlZThkOTBkMDM3MzhmZWExYTY3ZWUwZTYxMzQ3YmY2YWUyNzI1NTcuLjZj
OThmYzUwZmMyYTAyNjJlMWQ4NDZkM2ZhMzYxNDFlMTg0OGIyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC0zMywzNiAr
MzMsMzggQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2luY2x1ZGUgIkFzeW5jRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgorI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwotY2xhc3MgQXN5bmNGaWxlV3JpdGVyOwot
c3RydWN0IEZpbGVNZXRhZGF0YTsKLQogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MpOwogcHVi
bGljOgotICAgIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcygpIHsgfSAgICAKKyAgICBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoKSB7IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIGEgcmVxdWVzdGVk
IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBk
aWRTdWNjZWVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSByZXF1ZXN0ZWQgZmlsZSBz
eXN0ZW0gaXMgb3BlbmVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtPikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8g
Q2FsbGVkIHdoZW4gYSBmaWxlIG1ldGFkYXRhIGlzIHJlYWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBkaXJlY3RvcnkgZW50
cnkgaXMgcmVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlzRGlyZWN0b3J5
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBjaHVu
ayBvZiBkaXJlY3RvcnkgZW50cmllcyBoYXZlIGJlZW4gcmVhZCAoaS5lLiBpbmRpY2F0ZXMgaXQn
cyBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbikuICBJZiBoYXNNb3Jl
IGlzIHRydWUgdGhlcmUgY2FuIGJlIG1vcmUgY2h1bmtzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3JlKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcnRlciBoYXMgYmVlbiBj
cmVhdGVkIHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRl
cihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3lu
Y0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcgbGVuZ3RoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisKKyAgICAvLyBDYWxsZWQgd2hlbiBhIHNuYXBzaG90IEZpbGUgaGFzIGJlZW4gY3JlYXRlZCBz
dWNjZXNzZnVsbHkuIFRoZSBpbXBsZW1lbnRvciBvZiB0aGlzIGNhbGxiYWNrIGlzIGV4cGVjdGVk
IHRvIHVzZSB0aGUgZ2l2ZW4gc291cmNlQmxvYlVSTCBhcyB0aGUgc291cmNlIFVSTCBmb3IgdGhl
IG5ldyBGaWxlIG9iamVjdC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU25hcHNob3RGaWxl
KGNvbnN0IEtVUkwmIHNvdXJjZUJsb2JVUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbiBlcnJv
ci4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmlu
ZGV4IDFmOTNjZjkzZTQ2NzhjNTg4ODAzYTczZGE2OTk3NmEwYjVkNzFmY2IuLjIwMmUyNzBjYTY3
YjJiOTE0ZDNkNmQ2YmEzMDYzOWIwMGViMzExNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTM0LDcgKzM0
LDEwIEBACiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNs
dWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJGaWxlSW5mby5oIgog
I2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRmls
ZVdyaXRlci5oIgpAQCAtNDYsMTEgKzQ5LDUxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
bmFtZXNwYWNlIHsKKwogLy8gQ2hyb21lT1Mtc3BlY2lmaWMgZmlsZXN5c3RlbSB0eXBlLgogY29u
c3QgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGV4dGVybmFsVHlwZSA9IHN0YXRpY19jYXN0PEFzeW5j
RmlsZVN5c3RlbTo6VHlwZT4oV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlRXh0ZXJuYWwpOwog
Y29uc3QgY2hhciBleHRlcm5hbFBhdGhQcmVmaXhbXSA9ICJleHRlcm5hbCI7CiBjb25zdCBzaXpl
X3QgZXh0ZXJuYWxQYXRoUHJlZml4TGVuZ3RoID0gc2l6ZW9mKGV4dGVybmFsUGF0aFByZWZpeCkg
LSAxOwogCisvLyBTcGVjaWFsaXplZCBjYWxsYmFjayBjbGFzcyBmb3IgY3JlYXRlU25hcHNob3RG
aWxlLgorY2xhc3MgU25hcHNob3RGaWxlQ2FsbGJhY2tzIDogcHVibGljIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8U25hcHNob3RGaWxl
Q2FsbGJhY2tzPiBjcmVhdGUoY29uc3QgS1VSTCYgaW50ZXJuYWxCbG9iVVJMLCBQYXNzT3duUHRy
PFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTbmFwc2hvdEZpbGVDYWxsYmFja3MoaW50ZXJuYWxC
bG9iVVJMLCBjYWxsYmFja3MpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1l
dGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgeworICAgICAgICBBU1NF
UlQobV9jYWxsYmFja3MpOworCisgICAgICAgIC8vIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgRmls
ZSBvYmplY3QgZnJvbSB0aGUgaW50ZXJuYWxCbG9iVVJMIGFuZCBtZXRhZGF0YS4KKyAgICAgICAg
bV9jYWxsYmFja3MtPmRpZENyZWF0ZVNuYXBzaG90RmlsZShtX2ludGVybmFsQmxvYlVSTCwgbWV0
YWRhdGEpOworCisgICAgICAgIC8vIE5vdyB0aGF0IHdlJ3ZlIHJlZ2lzdGVyZWQgdGhlIHNuYXBz
aG90IGZpbGUsIHdlIGNhbiB1bnJlZ2lzdGVyIG91ciBpbnRlcm5hbEJsb2JVUkwgd2hpY2ggaGFz
IHBsYXllZCBhIHBsYWNlaG9sZGVyIGZvciB0aGUgZmlsZSBkdXJpbmcgdGhlIElQQy4KKyAgICAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbEJs
b2JVUkwpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBlcnJvcikKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX2NhbGxiYWNrcyk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5k
aWRGYWlsKGVycm9yKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU25hcHNob3RGaWxlQ2FsbGJh
Y2tzKGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgUGFzc093blB0cjxXZWJDb3JlOjpBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2ludGVybmFsQmxv
YlVSTChpbnRlcm5hbEJsb2JVUkwpCisgICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQor
ICAgIHsKKyAgICB9CisKKyAgICBLVVJMIG1faW50ZXJuYWxCbG9iVVJMOworICAgIE93blB0cjxX
ZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAv
LyBuYW1lc3BhY2UKKwogLy8gc3RhdGljCiBib29sIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFi
bGUoKQogewpAQCAtMjU0LDYgKzI5NywxNSBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0CiAgICAg
bV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aEFzVVJMLCBuZXcgRmlsZVdyaXRlckhl
bHBlckNhbGxiYWNrcyhjbGllbnQsIHBhdGhBc1VSTCwgbV93ZWJGaWxlU3lzdGVtLCBjYWxsYmFj
a3MpKTsKIH0KIAordm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3sKKyAgICBLVVJMIHBhdGhBc1VSTCA9IHZpcnR1YWxQYXRoVG9GaWxl
U3lzdGVtVVJMKHBhdGgpOworICAgIEtVUkwgaW50ZXJuYWxCbG9iVVJMID0gQmxvYlVSTDo6Y3Jl
YXRlSW50ZXJuYWxVUkwoKTsKKworICAgIC8vIFRoaXMgd2lsbCBjcmVhdGUgYSBzbmFwc2hvdCBm
aWxlIGFuZCByZWdpc3RlciB0aGUgZmlsZSB0byBhIGJsb2IgdXNpbmcgdGhlIGdpdmVuIGludGVy
bmFsQmxvYlVSTC4KKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJl
YWRNZXRhZGF0YShpbnRlcm5hbEJsb2JVUkwsIHBhdGhBc1VSTCwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soaW50ZXJuYWxC
bG9iVVJMLCBjYWxsYmFja3MpKSk7Cit9CisKIEtVUkwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06
OnZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFtX2ZpbGVzeXN0ZW1Sb290VVJMLmlzRW1wdHkoKSk7CkBAIC0y
NjMsNiArMzE1LDExIEBAIEtVUkwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnZpcnR1YWxQYXRo
VG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhCiAgICAgcmV0dXJuIHVybDsK
IH0KIAorUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IEFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtOjpjcmVhdGVTbmFwc2hvdEZpbGVDYWxsYmFjayhjb25zdCBLVVJMJiBpbnRlcm5h
bEJsb2JVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFNuYXBzaG90RmlsZUNhbGxiYWNrczo6Y3JlYXRlKGludGVy
bmFsQmxvYlVSTCwgY2FsbGJhY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5
c3RlbUNocm9taXVtLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5oCmluZGV4IGE4Y2JjYTI3NjAzNDk2YmEwNWI5MmM1OWQ3ZTZiZDljY2U3MmU2
ZjQuLmY2MDJhMDg0OWNkZGQwYjAzNGJiNTYyNzgwNDI5MTJlZTQ5MGQ1NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApA
QCAtNjYsOSArNjYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlz
dHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwogICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByb3RlY3RlZDoKICAgICBBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwp
OworCisgICAgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNyZWF0ZVNuYXBz
aG90RmlsZUNhbGxiYWNrKGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSBjb25zdDsKKwogICAgIFdlYktpdDo6V2ViRmlsZVN5
c3RlbSogbV93ZWJGaWxlU3lzdGVtOwogCiAgICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNvbHV0
ZSB2aXJ0dWFsIHBhdGggdG8gYSBmdWxsIG9yaWdpbi1xdWFsaWZpZWQgRmlsZVN5c3RlbSBVUkwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggN2ZiYjFmNDY4MjU2ZWE5ZWZhYjBiOGY0Njc0
NzAyYWFmODlkOWM2NS4uYmY5ZjY3Yjc3ZjNlZWJiYzYwNDIyOTgxMzNkNGU2NGVmZDIzNDhlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkgJiYgRU5BQkxFKFdPUktFUlMpCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5jbHVkZSAiRmlsZU1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCkBAIC0yMDgsNiArMjA5LDE0IEBAIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwKICAgICBjcmVh
dGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdvcmtlckZpbGVXcml0ZXJIZWxwZXJD
YWxsYmFja3M6OmNyZWF0ZShjbGllbnQsIHBhdGhBc1VSTCwgbV93ZWJGaWxlU3lzdGVtLCBjYWxs
YmFja3MsIG1fd29ya2VyQ29udGV4dCkpLT5wb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKG1f
d2ViRmlsZVN5c3RlbSwgcGF0aEFzVVJMLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0K
IAordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKK3sKKyAgICBLVVJMIHBhdGhBc1VSTCA9IHZpcnR1YWxQYXRoVG9GaWxlU3lz
dGVtVVJMKHBhdGgpOworICAgIEtVUkwgaW50ZXJuYWxCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKTsKKworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UoY3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soaW50ZXJuYWxCbG9iVVJMLCBjYWxsYmFja3Mp
KS0+cG9zdENyZWF0ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIGlu
dGVybmFsQmxvYlVSTCwgcGF0aEFzVVJMLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKK30K
KwogUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZShQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAg
IEFTU0VSVCghbV9zeW5jaHJvbm91cyB8fCAhbV9icmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bS5oCmluZGV4IGM4YWUzNTY1ZmFkMDllNzg2NzlmODgxMTc5ZGM0YWJj
MzE4M2QxMTIuLjRlY2YxNWQxMWQ0ZWY5ZWFmNmQ1MzA4N2MzOWVkMjRmMWIxYWRkOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0uaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwog
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogcHJpdmF0ZToK
ICAgICBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCwg
Ym9vbCBzeW5jaHJvbm91cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4IGIxZGFk
NzAzNWE0ZTZjZTYzNmMzNTJiMjUzZTE4YjYzNjdmM2E1ODQuLjhmZDVjZmE2ZGRjYjY0NTU3ZDA1
YzQ1OTE4NmI0YzhiMzVmNWVlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC0y
ODksNiArMjg5LDE1IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9z
dFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLCBtb2RlKSk7CiB9CiAKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6cG9zdENyZWF0ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lz
dGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIGNvbnN0IEtVUkwm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBBU1NFUlQoZmlsZVN5c3RlbSk7Cisg
ICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JmNyZWF0ZVNuYXBzaG90RmlsZU9uTWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZmlsZVN5c3RlbSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbEJsb2JVUkwsIHBhdGgsIHRoaXMsIG1vZGUpKTsKK30KKwogdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21t
b25DbGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wg
Y3JlYXRlLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRn
ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmICghY29tbW9uQ2xpZW50KQpAQCAtMzQ4
LDYgKzM1NywxMSBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWRE
aXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RQogICAgIGZpbGVTeXN0ZW0tPnJl
YWREaXJlY3RvcnkocGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxl
YWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpjcmVhdGVTbmFwc2hvdEZpbGVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwm
IGludGVybmFsQmxvYlVSTCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAg
ICBmaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoaW50ZXJuYWxC
bG9iVVJMLCBwYXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2Vk
UHRyKGJyaWRnZSwgbW9kZSkpOworfQorCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OmRpZEZhaWxPbk1haW5UaHJlYWQoV2ViRmlsZUVycm9yIGVycm9yLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgbWF5UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2so
JmRpZEZhaWxPbldvcmtlclRocmVhZCwgdGhpcywgZXJyb3IpLCBtb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UuaAppbmRleCAzNTA4MzljZDU3NzVjZmVjOWVjZThjNjE0M2NlZGI0MzdjYTgyMzY3
Li5lNDk2ZGUyZWZmNjJjZGI4YjFiZjY1ZjgxNTA1YzNiN2EzOGY0ZmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZS5oCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RGaWxl
RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHZvaWQgcG9zdERpcmVjdG9yeUV4aXN0c1Rv
TWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtb2RlKTsKICAgICB2b2lkIHBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFk
KFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG1vZGUpOworICAgIHZvaWQgcG9zdENyZWF0ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgaW50ZXJuYWxCbG9iVVJMLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgLy8gQ2FsbGJh
Y2sgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQg
ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3IsIGNvbnN0IFN0cmluZyYgbW9kZSk7CkBA
IC0xMTcsNiArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25N
YWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVt
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICBzdGF0aWMgdm9pZCBk
aXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRy
PFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwog
ICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBw
YXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBT
dHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZU9uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGludGVybmFsQmxvYlVSTCwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
cGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKIAogICAgIGZyaWVuZCBjbGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNh
bGxiYWNrczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129524</attachid>
            <date>2012-02-29 14:50:13 -0800</date>
            <delta_ts>2012-02-29 16:58:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79928-20120301075012.patch</filename>
            <type>text/plain</type>
            <size>31482</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3MDYyZjFmOTU4ODIz
YTJhNGRkMjhmMDkyZDllOWEwNWVhZWVhYy4uZGJhYmNkYzZkMDViYWYwNTNkZjA4Yzg2ZjQxYTYz
ODgwNmNmZmRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTI5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgdGhlIG5ldyBj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEgQVBJIGZvciBGaWxlRW50cnkuZmlsZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTkyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czogbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0v
IHRlc3RzIHNob3VsZCB1c2UgdGhlIG5ldyBjb2RlICh0aGV5IHNob3VsZCBwYXNzIG9uY2UKKyAg
ICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2hyb21pdW0gY2hhbmdlIGlzIHJvbGxlZCBpbikuCisK
KyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZSk6IFVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgQVBJLgor
ICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3
IEFQSS4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZTo6Y3JlYXRlV2l0aE5hbWUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmg6CisgICAgICAgIChGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmg6CisgICAgICAgIChBc3luY0ZpbGVT
eXN0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oOiBB
ZGRlZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uICh3aGljaCBqdXN0IGNhbGxzIEFTU0VSVF9OT1RS
RUFDSEVEKCkpIHNvIHRoYXQgc3ViY2xhc3NlcyBjYW4gZm9jdXMgb25seSBvbiB0aGUgY2FsbGJh
Y2sgbWV0aG9kcyB0aGF0IHRoZXkncmUgaW50ZXJlc3RlZCBpbi4KKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkQ3JlYXRlU25hcHNob3RGaWxlKTogQWRkZWQu
CisKIDIwMTItMDItMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDkxMzcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDlhNzRlZTc2NDhkNzJhOGNlM2Q2NzE5MGNiNjI5ODg3ODgxZDI5
ZmUuLjYzMTg5YWU2MGQ2Y2UzMmUxMTAyOTNkNzVlZDgzMzJmZjRiNWU1OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDItMjkgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSB0aGUgbmV3IGNyZWF0ZVNu
YXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YSBBUEkgZm9yIEZpbGVFbnRyeS5maWxlKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5OTI4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIG5ldyBmbG93
IHdlIGZpcnN0IGNyZWF0ZSBhbiBpbnRlcm5hbCBCbG9iIFVSTCBmb3IgdGhlCisgICAgICAgIHNu
YXBzaG90IGZpbGUgYW5kIGNhbGwgdGhlIG5ldyBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0
YWRhdGEoKQorICAgICAgICBXZWJLaXQgQVBJIHdpdGggdGhlIEJsb2IgVVJMLgorCisgICAgICAg
IFRoZSBpbXBsZW1lbnRvciBvZiBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoKSAo
aS5lLiBjaHJvbWl1bSkKKyAgICAgICAgcmVnaXN0ZXJzIHRoZSBjcmVhdGVkIHNuYXBzaG90IGZp
bGUgd2l0aCB0aGUgZ2l2ZW4gaW50ZXJuYWwgQmxvYiBVUkwuCisKKyAgICAgICAgSW4gdGhlIGNh
bGxiYWNrIGNoYWluIHdlIGNhbGwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUoKSB0byBjcmVhdGUgYQor
ICAgICAgICBuZXcgRmlsZSBieSBzdXBwbHlpbmcgdGhlIGZpbGUgcGF0aCBhbmQgdGhlIGludGVy
bmFsIEJsb2IgVVJMIGFzIGEKKyAgICAgICAgc291cmNlIEJsb2IsIGFuZCB0aGVuIGNhbGwgdW5y
ZWdpc3RlckJsb2JVUkwoKSB0byBjbGVhbiB1cCB0aGUKKyAgICAgICAgaW50ZXJuYWwgQmxvYiBV
UkwuCisKKyAgICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVNuYXBzaG90RmlsZSk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0
ZVNuYXBzaG90RmlsZUNhbGxiYWNrKTogQWRkZWQuCisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5
c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpjcmVhdGVTbmFwc2hvdEZpbGUpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0uaDoKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OnBvc3RDcmVhdGVTbmFwc2hvdEZpbGVUb01haW5UaHJlYWQpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlU25h
cHNob3RGaWxlT25NYWluVGhyZWFkKTogQWRkZWQuCisgICAgICAgICogc3JjL1dvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UuaDoKKyAgICAgICAgKFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UpOgorCiAyMDEyLTAyLTI4ICBHYXJ5IEthY21hcmNpayAgPGdhcnlrYWNAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU2V0IG5hdGl2ZUtleUNvZGUgdG8gaW5jbHVk
ZSBXaW5kb3dzIHNjYW4gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggOTc5OWUxMjA3OWU4YWVkNDIzNTdhODE2ZmJjNjE1YmQ5YmJhMGI0NC4uZGUyMWI1
OGJiNDdmZTk4OTJjYTlhMTg5NDYxYTc3MzcxZmZhMGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiRmlsZVdy
aXRlckJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0xMjMsMjEgKzEy
NCwyMSBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkq
IGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlV3JpdAogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBH
ZXRQYXRoQ2FsbGJhY2sgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgeworY2xhc3Mg
Q3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2sgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhDYWxsYmFjaz4gY3Jl
YXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jl
YXRlU25hcHNob3RGaWxlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRQYXRoQ2FsbGJhY2soZmls
ZXN5c3RlbSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soZmlsZXN5c3Rl
bSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRh
KQorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTbmFwc2hvdEZpbGUoY29uc3QgS1VSTCYgc291
cmNlQmxvYlVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fZmls
ZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZp
bGU6OmNyZWF0ZVdpdGhOYW1lKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgbV9uYW1lKSk7CisgICAg
ICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGU6OmNyZWF0ZVdpdGhOYW1lKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgc291cmNl
QmxvYlVSTCwgbV9uYW1lKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldFBhdGhDYWxsYmFj
ayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICBDcmVhdGVTbmFwc2hvdEZpbGVDYWxs
YmFjayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYg
bmFtZSwgIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICAgICAgOiBGaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAgICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lz
dGVtKQogICAgICAgICAsIG1fbmFtZShuYW1lKQpAQCAtMTU0LDcgKzE1NSw3IEBAIHByaXZhdGU6
CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVF
bnRyeSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIG1fYXN5bmNGaWxlU3lzdGVt
LT5yZWFkTWV0YWRhdGEoZmlsZUVudHJ5LT5mdWxsUGF0aCgpLCBHZXRQYXRoQ2FsbGJhY2s6OmNy
ZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZShmaWxlRW50
cnktPmZ1bGxQYXRoKCksIENyZWF0ZVNuYXBzaG90RmlsZUNhbGxiYWNrOjpjcmVhdGUodGhpcywg
ZmlsZUVudHJ5LT5uYW1lKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbVN5bmMuY3BwCmluZGV4IGU3YThjYTcwYmY1NzdjZTRkNDdlODNiY2RmZjBhMmQ5Nzc3
NjI2ZDUuLmQ5ODNlZWUwYjIxMTFmZWQ1YjJlMzEyZjFjOGU0MmMzMzc2ODZmMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCkBAIC03Miw2MCArNzIs
MzYgQEAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERPTUZpbGVTeXN0ZW1TeW5jOjpy
b290KCkKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgR2V0UGF0aEhlbHBlciA6IHB1YmxpYyBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MgeworY2xhc3MgQ3JlYXRlU25hcHNob3RGaWxlSGVscGVyIDog
cHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgR2V0
UGF0aFJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPEdldFBhdGhSZXN1bHQ+IHsKKyAgICBjbGFz
cyBTbmFwc2hvdEZpbGVSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxTbmFwc2hvdEZpbGVSZXN1
bHQ+IHsKICAgICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0UGF0aFJl
c3VsdD4gY3JlYXRlKCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U25hcHNob3RGaWxlUmVz
dWx0PiBjcmVhdGUoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdldFBhdGhSZXN1bHQoKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNuYXBz
aG90RmlsZVJlc3VsdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgbV9mYWlsZWQ7CiAg
ICAgICAgIGludCBtX2NvZGU7CisgICAgICAgIEtVUkwgbV9ibG9iVVJMOwogICAgICAgICBTdHJp
bmcgbV9wYXRoOwogCiAgICAgICBwcml2YXRlOgotICAgICAgICBHZXRQYXRoUmVzdWx0KCkKKyAg
ICAgICAgU25hcHNob3RGaWxlUmVzdWx0KCkKICAgICAgICAgICAgIDogbV9mYWlsZWQoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fY29kZSgwKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICB+R2V0UGF0aFJlc3VsdCgpCisgICAgICAgIH5TbmFwc2hvdEZpbGVSZXN1bHQoKQogICAgICAg
ICB7CiAgICAgICAgIH0KLSAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxHZXRQ
YXRoUmVzdWx0PjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxTbmFwc2hv
dEZpbGVSZXN1bHQ+OwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxHZXRQYXRoSGVs
cGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHZXRQYXRoUmVzdWx0PiByZXN1bHQpCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q3JlYXRlU25hcHNob3RGaWxlSGVscGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxT
bmFwc2hvdEZpbGVSZXN1bHQ+IHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgR2V0UGF0aEhlbHBlcihyZXN1bHQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3VjY2VlZCgpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShj
b25zdCBTdHJpbmcmLCBib29sKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wp
Ci0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4s
IGxvbmcgbG9uZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENyZWF0ZVNuYXBzaG90RmlsZUhlbHBlcihyZXN1bHQpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkKQEAgLTEzNCwyMSAr
MTEwLDIzIEBAIHB1YmxpYzoKICAgICAgICAgbV9yZXN1bHQtPm1fY29kZSA9IGNvZGU7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+R2V0UGF0aEhlbHBlcigpCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
YWRNZXRhZGF0YShjb25zdCBLVVJMJiBibG9iVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFk
YXRhKQogICAgIHsKKyAgICAgICAgbV9yZXN1bHQtPm1fYmxvYlVSTCA9IGJsb2JVUkw7CisgICAg
ICAgIG1fcmVzdWx0LT5tX3BhdGggPSBtZXRhZGF0YS5wbGF0Zm9ybVBhdGg7CiAgICAgfQogCi0g
ICAgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAg
ICB2aXJ0dWFsIH5DcmVhdGVTbmFwc2hvdEZpbGVIZWxwZXIoKQogICAgIHsKLSAgICAgICAgbV9y
ZXN1bHQtPm1fcGF0aCA9IG1ldGFkYXRhLnBsYXRmb3JtUGF0aDsKICAgICB9CisKIHByaXZhdGU6
Ci0gICAgR2V0UGF0aEhlbHBlcihQYXNzUmVmUHRyPEdldFBhdGhSZXN1bHQ+IHJlc3VsdCkKKyAg
ICBDcmVhdGVTbmFwc2hvdEZpbGVIZWxwZXIoUGFzc1JlZlB0cjxTbmFwc2hvdEZpbGVSZXN1bHQ+
IHJlc3VsdCkKICAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCiAgICAgewogICAgIH0KIAotICAg
IFJlZlB0cjxHZXRQYXRoUmVzdWx0PiBtX3Jlc3VsdDsKKyAgICBSZWZQdHI8U25hcHNob3RGaWxl
UmVzdWx0PiBtX3Jlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCkBAIC0xNTYsOCArMTM0LDgg
QEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZp
bGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBlYyA9IDA7Ci0gICAgUmVmUHRyPEdldFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ+IHJl
c3VsdChHZXRQYXRoSGVscGVyOjpHZXRQYXRoUmVzdWx0OjpjcmVhdGUoKSk7Ci0gICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlRW50cnktPmZ1bGxQYXRoKCksIEdldFBhdGhI
ZWxwZXI6OmNyZWF0ZShyZXN1bHQpKTsKKyAgICBSZWZQdHI8Q3JlYXRlU25hcHNob3RGaWxlSGVs
cGVyOjpTbmFwc2hvdEZpbGVSZXN1bHQ+IHJlc3VsdChDcmVhdGVTbmFwc2hvdEZpbGVIZWxwZXI6
OlNuYXBzaG90RmlsZVJlc3VsdDo6Y3JlYXRlKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5j
cmVhdGVTbmFwc2hvdEZpbGUoZmlsZUVudHJ5LT5mdWxsUGF0aCgpLCBDcmVhdGVTbmFwc2hvdEZp
bGVIZWxwZXI6OmNyZWF0ZShyZXN1bHQpKTsKICAgICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53
YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7CiAgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6QUJPUlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE2Nyw3ICsxNDUsNyBAQCBQYXNz
UmVmUHRyPEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRy
eVN5bmMqIGZpbGVFbnRyeSwgRQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJU
KCFyZXN1bHQtPm1fcGF0aC5pc0VtcHR5KCkpOwotICAgIHJldHVybiBGaWxlOjpjcmVhdGVXaXRo
TmFtZShyZXN1bHQtPm1fcGF0aCwgZmlsZUVudHJ5LT5uYW1lKCkpOworICAgIHJldHVybiBGaWxl
OjpjcmVhdGVXaXRoTmFtZShyZXN1bHQtPm1fcGF0aCwgcmVzdWx0LT5tX2Jsb2JVUkwsIGZpbGVF
bnRyeS0+bmFtZSgpKTsKIH0KIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmlu
ZGV4IGQ0MDliOTcxOTMzNTk1MTllMzAwYTAzMjk0OTcwNGZhZWY1ZjNlODIuLmM1ZmQ1MjE4YWYw
MDE2ZTlkMGMyOTIxNDViYjZkN2IyMWExYzU1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApA
QCAtNTAsMTcgKzUwLDYgQEAgc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JE
YXRhRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JEYXRh
Rm9yRmlsZVdpdGhUeXBlKHBhdGgsIHR5cGUpOwogfQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3Rl
bUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQot
ewotICAgIFN0cmluZyB0eXBlOwotICAgIGludCBpbmRleCA9IGZpbGVTeXN0ZW1OYW1lLnJldmVy
c2VGaW5kKCcuJyk7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICB0eXBlID0gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oZmlsZVN5c3RlbU5h
bWUuc3Vic3RyaW5nKGluZGV4ICsgMSkpOwotICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZp
bGVXaXRoVHlwZShwYXRoLCB0eXBlKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKERJUkVDVE9S
WV9VUExPQUQpCiBQYXNzUmVmUHRyPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKIHsKQEAgLTcw
LDYgKzU5LDE5IEBAIFBhc3NSZWZQdHI8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorUGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoTmFtZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIFN0cmluZyB0eXBlOworICAgIGludCBpbmRleCA9IG5hbWUucmV2ZXJzZUZpbmQo
Jy4nKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihuYW1lLnN1YnN0cmluZyhpbmRl
eCArIDEpKTsKKyAgICBSZWZQdHI8RmlsZT4gZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoLCBzcmNV
UkwsIHR5cGUpOworICAgIGZpbGUtPm1fbmFtZSA9IG5hbWU7CisgICAgcmV0dXJuIGZpbGUucmVs
ZWFzZSgpOworfQorI2VuZGlmCisKIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCksIC0xKQogICAgICwgbV9wYXRoKHBh
dGgpCkBAIC04NywxNSArODksNiBAQCBGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgLy8gU2VlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgZm9yIGpzIGFuZCB2OC4KIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0g
ICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbUZpbGUocGF0aCwgbmFtZSksIC0x
KQotICAgICwgbV9wYXRoKHBhdGgpCi0gICAgLCBtX25hbWUobmFtZSkKLXsKLX0KLSNlbmRpZgot
CiBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0CiB7CiAgICAgdGltZV90IG1v
ZGlmaWNhdGlvblRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUzZTQxZjk1ZmI5
YjIzYWNkNmIwZWViZGMxNTQ0M2Q0ZTMuLmI1ZjFiNDVlZWM3OWM2YjhiMmFkMTdmNzYzYjg3YjQ3
NWZiNGQyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC01NCwxMCArNTQsOCBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGEg
bmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQg
RE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhl
IHBhdGguCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aE5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSkpOwotICAgIH0KKyAgICAvLyBUaGUgbmV3IEZp
bGUgc2hvdWxkIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIGdpdmVuIHNyY1VSTCAoYXMgd2UgZG8gZm9y
IGRlc2VyaWFsaXphdGlvbikuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0
aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUo
KSBjb25zdDsKQEAgLTg0LDEwICs4Miw2IEBAIHByaXZhdGU6CiAgICAgLy8gRm9yIGRlc2VyaWFs
aXphdGlvbi4KICAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgS1VSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotI2VuZGlmCi0KICAg
ICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmluZyBtX25hbWU7CiAjaWYgRU5BQkxFKERJUkVDVE9S
WV9VUExPQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tz
LmNwcAppbmRleCAwNmYzYjkzODM0ZmJhYjQ4NGZjMzcxNGIxOTQxYTgxMTFjNzM0M2NhLi5mZWVj
MTFiMWEzYmE5MDg1N2Y2YTQ5ZGEwNWMwYzZkNmRkNDE1ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKQEAgLTY1LDQyICs2NSw2IEBAIEZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlOjp+RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoKQogewogfQog
Ci12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRTdWNjZWVkKCkKLXsKLSAgICAvLyBF
YWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
KQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUg
b25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlOjpkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJikKLXsKLSAgICAv
LyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6
ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCkKLXsKLSAgICAvLyBFYWNoIHN1YmNsYXNzIG11
c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkUmVhZERpcmVjdG9yeUVu
dHJ5KGNvbnN0IFN0cmluZyYsIGJvb2wpCi17Ci0gICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0IGlt
cGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFz
c093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcpCi17Ci0gICAgLy8gRWFjaCBzdWJj
bGFzcyBtdXN0IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZEZhaWwoaW50
IGNvZGUpCiB7CiAgICAgaWYgKG1fZXJyb3JDYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCA3ZjY4NjI1YWM5MjY4ZjhlMjU0OWQx
ZDVhODkwZDg0Y2MwNWZjZGQxLi5lMDJkZWI5ZjAxYWMzODE4OWQ3ODljNDZiODc1M2JiZDUxNWY2
ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApA
QCAtNTksMjUgKzU5LDExIEBAIGNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIDogcHVibGlj
IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsZVN5
c3RlbUNhbGxiYWNrc0Jhc2UoKTsKIAotICAgIC8vIEZvciBFbnRyeUNhbGxiYWNrcyBhbmQgVm9p
ZENhbGxiYWNrcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwotCi0gICAgLy8gRm9y
IEZpbGVTeXN0ZW1DYWxsYmFja3MuCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKLQotICAg
IC8vIEZvciBNZXRhZGF0YUNhbGxiYWNrcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFk
YXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpOwotCi0gICAgLy8gRm9yIEVudHJpZXNDYWxsYmFja3Mu
IGRpZFJlYWREaXJlY3RvcnlFbnRyeSBpcyBjYWxsZWQgZWFjaCB0aW1lIHRoZSBBUEkgcmVhZHMg
YW4gZW50cnksIGFuZCBkaWRSZWFkRGlyZWN0b3J5RG9uZSBpcyBjYWxsZWQgd2hlbiBhIGNodW5r
IG9mIGVudHJpZXMgaGF2ZSBiZWVuIHJlYWQgKGkuZS4gZ29vZCB0aW1lIHRvIGNhbGwgYmFjayB0
byB0aGUgYXBwbGljYXRpb24pLiAgSWYgaGFzTW9yZSBpcyB0cnVlIHRoZXJlIGNhbiBiZSBtb3Jl
IGNodW5rcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSk7Ci0KLSAgICAvLyBGb3IgY3JlYXRlRmlsZVdy
aXRlci4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFz
eW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOwotCiAgICAgLy8gRm9yIEVycm9yQ2Fs
bGJhY2suCiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpOwogCisgICAgLy8gT3Ro
ZXIgY2FsbGJhY2sgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBzdWJjbGFzcy4KKwog
cHJvdGVjdGVkOgogICAgIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IG1fZXJy
b3JDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKaW5k
ZXggYmJlZjZhNGUzMTljYmZhOTczYmRjYmEwYTBkZmQ1NjA1Y2E3YjEyNi4uNGRlMzA2Nzg3MjJl
ZmZlYjIzMTExMTAwNzczMDg1ZTkwOTcxNjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtLmgKQEAgLTE0MCw2ICsxNDAsMTIgQEAgcHVibGljOgogICAgIC8vIEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pID0gMDsKIAorICAgIC8vIENyZWF0ZXMgYSBzbmFwc2hvdCBmaWxlIGZvciBhIG5ldyBGaWxl
IG9iamVjdC4KKyAgICAvLyBJbiBsb2NhbCBmaWxlc3lzdGVtIGNhc2VzIHRoZSBiYWNrZW5kIG1h
eSBzaW1wbHkgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgZmlsZSBpdHNlbGYgKGFzIHdlbGwg
YXMgcmVhZE1ldGFkYXRhIGRvZXMpLCB3aGlsZSBpbiByZW1vdGUgZmlsZXN5c3RlbSBjYXNlIHRo
ZSBiYWNrZW5kIG1heSBkb3dubG9hZCB0aGUgZmlsZSBpbnRvIGEgdGVtcG9yYXJ5IHNuYXBzaG90
IGZpbGUgYW5kIHJldHVybiB0aGUgbWV0YWRhdGEgb2YgdGhlIHRlbXBvcmFyeSBmaWxlLgorICAg
IC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkQ3JlYXRlU25hcHNob3RGaWxlKCkgaXMg
Y2FsbGVkIHdoZW4gdGhlIG1ldGFkYXRhIGZvciB0aGUgc25hcHNob3QgZmlsZSBpcyBzdWNjZXNz
ZnVsbHkgcmV0dXJuZWQuCisgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWls
KCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaAppbmRleCBjZWU4ZDkwZDAzNzM4ZmVhMWE2N2VlMGU2MTM0N2JmNmFlMjcy
NTU3Li42Yzk4ZmM1MGZjMmEwMjYyZTFkODQ2ZDNmYTM2MTQxZTE4NDhiMjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAt
MzMsMzYgKzMzLDM4IEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJB
c3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKKyNpbmNsdWRl
ICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKLWNsYXNzIEFzeW5jRmlsZVdy
aXRlcjsKLXN0cnVjdCBGaWxlTWV0YWRhdGE7Ci0KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KTsKIHB1YmxpYzoKLSAgICBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoKSB7IH0gICAgCisgICAg
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKCkgeyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhIHJl
cXVlc3RlZCBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIGEgcmVxdWVzdGVk
IGZpbGUgc3lzdGVtIGlzIG9wZW5lZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0
ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIC8vIENhbGxlZCB3aGVuIGEgZmlsZSBtZXRhZGF0YSBpcyByZWFkIHN1Y2Nlc3NmdWxseS4K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIGEgZGlyZWN0
b3J5IGVudHJ5IGlzIHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0Rp
cmVjdG9yeSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIGFmdGVy
IGEgY2h1bmsgb2YgZGlyZWN0b3J5IGVudHJpZXMgaGF2ZSBiZWVuIHJlYWQgKGkuZS4gaW5kaWNh
dGVzIGl0J3MgZ29vZCB0aW1lIHRvIGNhbGwgYmFjayB0byB0aGUgYXBwbGljYXRpb24pLiAgSWYg
aGFzTW9yZSBpcyB0cnVlIHRoZXJlIGNhbiBiZSBtb3JlIGNodW5rcy4KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3JlKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3J0ZXIgaGFz
IGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZp
bGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9uZyBsb25nIGxl
bmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25Q
dHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4gYSBzbmFwc2hvdCBGaWxlIGhhcyBiZWVuIGNy
ZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBUaGUgaW1wbGVtZW50b3Igb2YgdGhpcyBjYWxsYmFjayBpcyBl
eHBlY3RlZCB0byB1c2UgdGhlIGdpdmVuIHNvdXJjZUJsb2JVUkwgYXMgdGhlIHNvdXJjZSBVUkwg
Zm9yIHRoZSBuZXcgRmlsZSBvYmplY3QuCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNuYXBz
aG90RmlsZShjb25zdCBLVVJMJiBzb3VyY2VCbG9iVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbiB0aGVyZSB3YXMg
YW4gZXJyb3IuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmNwcAppbmRleCAxZjkzY2Y5M2U0Njc4YzU4ODgwM2E3M2RhNjk5NzZhMGI1ZDcxZmNiLi4yMDJl
MjcwY2E2N2IyYjkxNGQzZDZkNmJhMzA2MzliMDBlYjMxMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0z
NCw3ICszNCwxMCBAQAogCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJCbG9iVVJMLmgi
CisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
KyNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2ViRmlsZUlu
Zm8uaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUg
IldlYkZpbGVXcml0ZXIuaCIKQEAgLTQ2LDExICs0OSw1MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK25hbWVzcGFjZSB7CisKIC8vIENocm9tZU9TLXNwZWNpZmljIGZpbGVzeXN0ZW0gdHlw
ZS4KIGNvbnN0IEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBleHRlcm5hbFR5cGUgPSBzdGF0aWNfY2Fz
dDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6VHlwZUV4dGVy
bmFsKTsKIGNvbnN0IGNoYXIgZXh0ZXJuYWxQYXRoUHJlZml4W10gPSAiZXh0ZXJuYWwiOwogY29u
c3Qgc2l6ZV90IGV4dGVybmFsUGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihleHRlcm5hbFBhdGhQ
cmVmaXgpIC0gMTsKIAorLy8gU3BlY2lhbGl6ZWQgY2FsbGJhY2sgY2xhc3MgZm9yIGNyZWF0ZVNu
YXBzaG90RmlsZS4KK2NsYXNzIFNuYXBzaG90RmlsZUNhbGxiYWNrcyA6IHB1YmxpYyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNuYXBz
aG90RmlsZUNhbGxiYWNrcz4gY3JlYXRlKGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgUGFz
c093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU25hcHNob3RGaWxlQ2FsbGJhY2tzKGlu
dGVybmFsQmxvYlVSTCwgY2FsbGJhY2tzKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fY2FsbGJhY2tzKTsKKworICAgICAgICAvLyBUaGlzIHdpbGwgY3JlYXRlIGEg
bmV3IEZpbGUgb2JqZWN0IGZyb20gdGhlIGludGVybmFsQmxvYlVSTCBhbmQgbWV0YWRhdGEuCisg
ICAgICAgIG1fY2FsbGJhY2tzLT5kaWRDcmVhdGVTbmFwc2hvdEZpbGUobV9pbnRlcm5hbEJsb2JV
UkwsIG1ldGFkYXRhKTsKKworICAgICAgICAvLyBOb3cgdGhhdCB3ZSd2ZSByZWdpc3RlcmVkIHRo
ZSBzbmFwc2hvdCBmaWxlLCB3ZSBjYW4gdW5yZWdpc3RlciBvdXIgaW50ZXJuYWxCbG9iVVJMIHdo
aWNoIGhhcyBwbGF5ZWQgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGZpbGUgZHVyaW5nIHRoZSBJUEMu
CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1faW50
ZXJuYWxCbG9iVVJMKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgZXJy
b3IpCisgICAgeworICAgICAgICBBU1NFUlQobV9jYWxsYmFja3MpOworICAgICAgICBtX2NhbGxi
YWNrcy0+ZGlkRmFpbChlcnJvcik7CisgICAgfQorCitwcml2YXRlOgorICAgIFNuYXBzaG90Rmls
ZUNhbGxiYWNrcyhjb25zdCBLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgICAgIDogbV9pbnRl
cm5hbEJsb2JVUkwoaW50ZXJuYWxCbG9iVVJMKQorICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxi
YWNrcykKKyAgICB7CisgICAgfQorCisgICAgS1VSTCBtX2ludGVybmFsQmxvYlVSTDsKKyAgICBP
d25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307
CisKK30gLy8gbmFtZXNwYWNlCisKIC8vIHN0YXRpYwogYm9vbCBBc3luY0ZpbGVTeXN0ZW06Omlz
QXZhaWxhYmxlKCkKIHsKQEAgLTI1NCw2ICsyOTcsMTUgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25z
dAogICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBhdGhBc1VSTCwgbmV3IEZpbGVX
cml0ZXJIZWxwZXJDYWxsYmFja3MoY2xpZW50LCBwYXRoQXNVUkwsIG1fd2ViRmlsZVN5c3RlbSwg
Y2FsbGJhY2tzKSk7CiB9CiAKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVNu
YXBzaG90RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgS1VSTCBwYXRoQXNVUkwgPSB2aXJ0dWFsUGF0
aFRvRmlsZVN5c3RlbVVSTChwYXRoKTsKKyAgICBLVVJMIGludGVybmFsQmxvYlVSTCA9IEJsb2JV
Ukw6OmNyZWF0ZUludGVybmFsVVJMKCk7CisKKyAgICAvLyBUaGlzIHdpbGwgY3JlYXRlIGEgc25h
cHNob3QgZmlsZSBhbmQgcmVnaXN0ZXIgdGhlIGZpbGUgdG8gYSBibG9iIHVzaW5nIHRoZSBnaXZl
biBpbnRlcm5hbEJsb2JVUkwuCisgICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZp
bGVBbmRSZWFkTWV0YWRhdGEoaW50ZXJuYWxCbG9iVVJMLCBwYXRoQXNVUkwsIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNyZWF0ZVNuYXBzaG90RmlsZUNhbGxiYWNrKGlu
dGVybmFsQmxvYlVSTCwgY2FsbGJhY2tzKSkpOworfQorCiBLVVJMIEFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtOjp2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHZpcnR1YWxQ
YXRoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9maWxlc3lzdGVtUm9vdFVSTC5pc0VtcHR5KCkp
OwpAQCAtMjYzLDYgKzMxNSwxMSBAQCBLVVJMIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjp2aXJ0
dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHZpcnR1YWxQYQogICAgIHJldHVy
biB1cmw7CiB9CiAKK1Bhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soY29uc3QgS1VSTCYg
aW50ZXJuYWxCbG9iVVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKSBjb25zdAoreworICAgIHJldHVybiBTbmFwc2hvdEZpbGVDYWxsYmFja3M6OmNyZWF0
ZShpbnRlcm5hbEJsb2JVUkwsIGNhbGxiYWNrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0uaAppbmRleCBhOGNiY2EyNzYwMzQ5NmJhMDViOTJjNTlkN2U2YmQ5
Y2NlNzJlNmY0Li5mNjAyYTA4NDljZGRkMGIwMzRiYjU2Mjc4MDQyOTEyZWU0OTBkNTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmgKQEAgLTY2LDkgKzY2LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0
b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcm90ZWN0ZWQ6CiAgICAgQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW0oQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25zdCBLVVJMJiBy
b290VVJMKTsKKworICAgIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjcmVh
dGVTbmFwc2hvdEZpbGVDYWxsYmFjayhjb25zdCBLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgY29uc3Q7CisKICAgICBXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKIAogICAgIC8vIENvbnZlcnRzIGEgZ2l2ZW4g
YWJzb2x1dGUgdmlydHVhbCBwYXRoIHRvIGEgZnVsbCBvcmlnaW4tcXVhbGlmaWVkIEZpbGVTeXN0
ZW0gVVJMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDdmYmIxZjQ2ODI1NmVhOWVmYWIw
YjhmNDY3NDcwMmFhZjg5ZDljNjUuLmJmOWY2N2I3N2YzZWViYmM2MDQyMjk4MTMzZDRlNjRlZmQy
MzQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pICYmIEVOQUJMRShXT1JLRVJTKQogCiAjaW5jbHVkZSAiQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZp
bGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgpAQCAtMjA4LDYgKzIwOSwxNCBAQCB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsCiAg
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXb3JrZXJGaWxlV3JpdGVy
SGVscGVyQ2FsbGJhY2tzOjpjcmVhdGUoY2xpZW50LCBwYXRoQXNVUkwsIG1fd2ViRmlsZVN5c3Rl
bSwgY2FsbGJhY2tzLCBtX3dvcmtlckNvbnRleHQpKS0+cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRo
cmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGhBc1VSTCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlv
bik7CiB9CiAKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVNuYXBz
aG90RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgS1VSTCBwYXRoQXNVUkwgPSB2aXJ0dWFsUGF0aFRv
RmlsZVN5c3RlbVVSTChwYXRoKTsKKyAgICBLVVJMIGludGVybmFsQmxvYlVSTCA9IEJsb2JVUkw6
OmNyZWF0ZUludGVybmFsVVJMKCk7CisKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKGNyZWF0ZVNuYXBzaG90RmlsZUNhbGxiYWNrKGludGVybmFsQmxvYlVSTCwgY2Fs
bGJhY2tzKSktPnBvc3RDcmVhdGVTbmFwc2hvdEZpbGVUb01haW5UaHJlYWQobV93ZWJGaWxlU3lz
dGVtLCBpbnRlcm5hbEJsb2JVUkwsIHBhdGhBc1VSTCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlv
bik7Cit9CisKIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
IHsKICAgICBBU1NFUlQoIW1fc3luY2hyb25vdXMgfHwgIW1fYnJpZGdlRm9yQ3VycmVudE9wZXJh
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAppbmRleCBjOGFlMzU2NWZhZDA5ZTc4Njc5Zjg4MTE3
OWRjNGFiYzMxODNkMTEyLi40ZWNmMTVkMTFkNGVmOWVhZjZkNTMwODdjMzllZDI0ZjFiMWFkZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHBy
aXZhdGU6CiAgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIHJv
b3RVUkwsIGJvb2wgc3luY2hyb25vdXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRl
eCBiMWRhZDcwMzVhNGU2Y2U2MzZjMzUyYjI1M2UxOGI2MzY3ZjNhNTg0Li44ZmQ1Y2ZhNmRkY2I2
NDU1N2QwNWM0NTkxODZiNGM4YjM1ZjVlZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNw
cApAQCAtMjg5LDYgKzI4OSwxNSBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcywgbW9kZSkpOwogfQogCit2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVTbmFwc2hvdEZpbGVUb01haW5UaHJlYWQoV2Vi
RmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgaW50ZXJuYWxCbG9iVVJMLCBjb25z
dCBLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit7CisgICAgQVNTRVJUKGZpbGVTeXN0
ZW0pOworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAgY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZjcmVhdGVTbmFwc2hvdEZpbGVPbk1haW5UaHJlYWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGZpbGVTeXN0ZW0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWxCbG9iVVJMLCBwYXRoLCB0aGlzLCBtb2RlKSk7Cit9
CisKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6b3BlbkZpbGVTeXN0ZW1P
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvbW1vbldvcmtlckNsaWVu
dCogY29tbW9uQ2xpZW50LCBXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBib29sIGNyZWF0ZSwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
PiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAoIWNvbW1vbkNsaWVudCkK
QEAgLTM0OCw2ICszNTcsMTEgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEUKICAgICBmaWxlU3lz
dGVtLT5yZWFkRGlyZWN0b3J5KHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpj
cmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKK3ZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlU25hcHNob3RGaWxlT25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUp
Cit7CisgICAgZmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGlu
dGVybmFsQmxvYlVSTCwgcGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0
ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKK30KKwogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpkaWRGYWlsT25NYWluVGhyZWFkKFdlYkZpbGVFcnJvciBlcnJvciwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewogICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGVycm9yKSwgbW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlLmgKaW5kZXggMzUwODM5Y2Q1Nzc1Y2ZlYzllY2U4YzYxNDNjZWRiNDM3
Y2E4MjM2Ny4uZTQ5NmRlMmVmZjYyY2RiOGIxYmY2NWY4MTUwNWMzYjdhMzhmNGZhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
b3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICB2b2lkIHBvc3REaXJlY3RvcnlF
eGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBwb3N0UmVhZERpcmVjdG9yeVRvTWFp
blRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RDcmVhdGVTbmFwc2hvdEZpbGVUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGludGVybmFsQmxvYlVSTCwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAgIC8v
IENhbGxiYWNrIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAg
ICB2b2lkIGRpZEZhaWxPbk1haW5UaHJlYWQoV2ViRmlsZUVycm9yLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOwpAQCAtMTE3LDYgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZmlsZUV4
aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgUGFz
c1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKICAgICBzdGF0aWMgdm9pZCByZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIHBhdGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4s
IGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICBmcmllbmQgY2xhc3MgTWFpblRocmVhZEZpbGVT
eXN0ZW1DYWxsYmFja3M7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129556</attachid>
            <date>2012-02-29 16:56:44 -0800</date>
            <delta_ts>2012-02-29 17:38:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79928-20120301095642.patch</filename>
            <type>text/plain</type>
            <size>23608</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3MDYyZjFmOTU4ODIz
YTJhNGRkMjhmMDkyZDllOWEwNWVhZWVhYy4uZTZjNDZhYzg0MWViY2ZkOTNmNjc3OWZlNzJiNDE2
YThkODFmNDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTI5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgdGhlIG5ldyBj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEgQVBJIGZvciBGaWxlRW50cnkuZmlsZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTkyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czogbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0v
IHRlc3RzIHNob3VsZCB1c2UgdGhlIG5ldyBjb2RlICh0aGV5IHNob3VsZCBwYXNzIG9uY2UKKyAg
ICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2hyb21pdW0gY2hhbmdlIGlzIHJvbGxlZCBpbikuCisK
KyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZSk6IFVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgQVBJLgor
ICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3
IEFQSS4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgorICAgICAgICAoRmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAg
ICAgICAoQXN5bmNGaWxlU3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaDogQWRkZWQgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAod2hpY2gganVzdCBj
YWxscyBBU1NFUlRfTk9UUkVBQ0hFRCgpKSBzbyB0aGF0IHN1YmNsYXNzZXMgY2FuIGZvY3VzIG9u
bHkgb24gdGhlIGNhbGxiYWNrIG1ldGhvZHMgdGhhdCB0aGV5J3JlIGludGVyZXN0ZWQgaW4uCisK
IDIwMTItMDItMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDkxMzcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDlhNzRlZTc2NDhkNzJhOGNlM2Q2NzE5MGNiNjI5ODg3ODgxZDI5ZmUu
LjQwNjI5OTcyMzgwNjM2Mzg4Zjg5M2I3ZThhZmJlZmZkMTYyZTQxNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDItMjkgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSB0aGUgbmV3IGNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YSBBUEkgZm9yIEZpbGVFbnRyeS5maWxlKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5OTI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIG5ldyBmbG93IHdl
IGZpcnN0IGNyZWF0ZSBhbiBpbnRlcm5hbCBCbG9iIFVSTCBmb3IgdGhlCisgICAgICAgIHNuYXBz
aG90IGZpbGUgYW5kIGNhbGwgdGhlIG5ldyBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRh
dGEoKQorICAgICAgICBXZWJLaXQgQVBJIHdpdGggdGhlIEJsb2IgVVJMLgorCisgICAgICAgIFRo
ZSBpbXBsZW1lbnRvciBvZiBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoKSAoaS5l
LiBjaHJvbWl1bSkKKyAgICAgICAgcmVnaXN0ZXJzIHRoZSBjcmVhdGVkIHNuYXBzaG90IGZpbGUg
d2l0aCB0aGUgZ2l2ZW4gaW50ZXJuYWwgQmxvYiBVUkwuCisKKyAgICAgICAgSW4gdGhlIGNhbGxi
YWNrIGNoYWluIHdlIGNhbGwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUoKSB0byBjcmVhdGUgYQorICAg
ICAgICBuZXcgRmlsZSB1c2luZyB0aGUgcmV0dXJuZWQgcGxhdGZvcm0gcGF0aCwgYW5kIHRoZW4g
Y2FsbAorICAgICAgICB1bnJlZ2lzdGVyQmxvYlVSTCgpIHRvIGNsZWFuIHVwIHRoZSBpbnRlcm5h
bCBCbG9iIFVSTC4KKworICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2spOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaDoKKyAgICAgICAgKiBzcmMvV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0
YSk6IEFkZGVkLgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5o
OgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0
ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVTbmFwc2hvdEZpbGVPbk1haW5UaHJl
YWQpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZS5oOgorICAgICAgICAoV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSk6CisKIDIwMTIt
MDItMjggIEdhcnkgS2FjbWFyY2lrICA8Z2FyeWthY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBTZXQgbmF0aXZlS2V5Q29kZSB0byBpbmNsdWRlIFdpbmRvd3Mgc2NhbiBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA5Nzk5ZTEyMDc5
ZThhZWQ0MjM1N2E4MTZmYmM2MTViZDliYmEwYjQ0Li5iMTc4ZjBjNjRhMGY3OGEwOWRkNzQwMTZl
NzBhNmRkMTM3YmI4NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogCiB2b2lkIERPTUZpbGVTeXN0ZW06OmNy
ZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQdHI8RmlsZUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKIHsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+
ZnVsbFBhdGgoKSwgR2V0UGF0aENhbGxiYWNrOjpjcmVhdGUodGhpcywgZmlsZUVudHJ5LT5uYW1l
KCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZUVudHJ5LT5mdWxsUGF0
aCgpLCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKaW5kZXgg
ZTdhOGNhNzBiZjU3N2NlNGQ0N2U4M2JjZGZmMGEyZDk3Nzc2MjZkNS4uZWVhMzdmODcwNWYyNzhh
ZTMzNWVkYjVkYjVkNWMyZjNkMGMxZmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5jcHAKQEAgLTEwMywzMSArMTAzLDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhIZWxwZXIocmVzdWx0KSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikKLSAgICB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
RGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiwgYm9vbCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0
b3J5RW50cmllcyhib29sKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxB
c3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkKICAg
ICB7CiAgICAgICAgIG1fcmVzdWx0LT5tX2ZhaWxlZCA9IHRydWU7CkBAIC0xNTcsNyArMTMyLDcg
QEAgUGFzc1JlZlB0cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBG
aWxlRW50cnlTeW5jKiBmaWxlRW50cnksIEUKIHsKICAgICBlYyA9IDA7CiAgICAgUmVmUHRyPEdl
dFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ+IHJlc3VsdChHZXRQYXRoSGVscGVyOjpHZXRQYXRo
UmVzdWx0OjpjcmVhdGUoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShm
aWxlRW50cnktPmZ1bGxQYXRoKCksIEdldFBhdGhIZWxwZXI6OmNyZWF0ZShyZXN1bHQpKTsKKyAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZp
bGVFbnRyeS0+ZnVsbFBhdGgoKSwgR2V0UGF0aEhlbHBlcjo6Y3JlYXRlKHJlc3VsdCkpOwogICAg
IGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsK
ICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7CiAgICAgICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKaW5k
ZXggMDZmM2I5MzgzNGZiYWI0ODRmYzM3MTRiMTk0MWE4MTExYzczNDNjYS4uZmVlYzExYjFhM2Jh
OTA4NTdmNmE0OWRhMDVjMGM2ZDZkZDQxNTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCkBAIC02NSw0MiArNjUsNiBAQCBGaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZTo6fkZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKCkKIHsKIH0KIAotdm9pZCBG
aWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkU3VjY2VlZCgpCi17Ci0gICAgLy8gRWFjaCBzdWJj
bGFzcyBtdXN0IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZE9wZW5GaWxl
U3lzdGVtKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikKLXsKLSAg
ICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZTo6ZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpCi17Ci0gICAgLy8gRWFjaCBz
dWJjbGFzcyBtdXN0IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKGJvb2wpCi17Ci0gICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0IGltcGxl
bWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25z
dCBTdHJpbmcmLCBib29sKQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQg
YW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8
QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nKQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVz
dCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCiB2b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRGYWlsKGludCBjb2RlKQog
ewogICAgIGlmIChtX2Vycm9yQ2FsbGJhY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggN2Y2ODYyNWFjOTI2OGY4ZTI1NDlkMWQ1YTg5MGQ4
NGNjMDVmY2RkMS4uZTAyZGViOWYwMWFjMzgxODlkNzg5YzQ2Yjg3NTNiYmQ1MTVmNmQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTU5LDI1
ICs1OSwxMSBAQCBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSA6IHB1YmxpYyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MgewogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlKCk7CiAKLSAgICAvLyBGb3IgRW50cnlDYWxsYmFja3MgYW5kIFZvaWRDYWxsYmFj
a3MuCi0gICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKTsKLQotICAgIC8vIEZvciBGaWxlU3lz
dGVtQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Ci0KLSAgICAvLyBGb3Ig
TWV0YWRhdGFDYWxsYmFja3MuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25z
dCBGaWxlTWV0YWRhdGEmKTsKLQotICAgIC8vIEZvciBFbnRyaWVzQ2FsbGJhY2tzLiBkaWRSZWFk
RGlyZWN0b3J5RW50cnkgaXMgY2FsbGVkIGVhY2ggdGltZSB0aGUgQVBJIHJlYWRzIGFuIGVudHJ5
LCBhbmQgZGlkUmVhZERpcmVjdG9yeURvbmUgaXMgY2FsbGVkIHdoZW4gYSBjaHVuayBvZiBlbnRy
aWVzIGhhdmUgYmVlbiByZWFkIChpLmUuIGdvb2QgdGltZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFw
cGxpY2F0aW9uKS4gIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVyZSBjYW4gYmUgbW9yZSBjaHVua3Mu
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgaXNEaXJlY3RvcnkpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5
RW50cmllcyhib29sIGhhc01vcmUpOwotCi0gICAgLy8gRm9yIGNyZWF0ZUZpbGVXcml0ZXIuCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVX
cml0ZXI+LCBsb25nIGxvbmcgbGVuZ3RoKTsKLQogICAgIC8vIEZvciBFcnJvckNhbGxiYWNrLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlKTsKIAorICAgIC8vIE90aGVyIGNhbGxi
YWNrIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IGVhY2ggc3ViY2xhc3MuCisKIHByb3RlY3Rl
ZDoKICAgICBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spOwogICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJh
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IGJiZWY2
YTRlMzE5Y2JmYTk3M2JkY2JhMGEwZGZkNTYwNWNhN2IxMjYuLjc3OTIxMDFjNTMwYTIxYzI2NWNm
YzRiNDZhMzQ2ZmI5MjBjNDEyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0FzeW5jRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbS5oCkBAIC0xNDAsNiArMTQwLDEzIEBAIHB1YmxpYzoKICAgICAvLyBBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7
CiAKKyAgICAvLyBDcmVhdGVzIGEgc25hcHNob3QgZmlsZSBhbmQgcmVhZCBpdHMgbWV0YWRhdGEg
Zm9yIGEgbmV3IEZpbGUgb2JqZWN0LgorICAgIC8vIEluIGxvY2FsIGZpbGVzeXN0ZW0gY2FzZXMg
dGhlIGJhY2tlbmQgbWF5IHNpbXBseSByZXR1cm4gdGhlIG1ldGFkYXRhIG9mIHRoZSBmaWxlIGl0
c2VsZiAoYXMgd2VsbCBhcyByZWFkTWV0YWRhdGEgZG9lcyksCisgICAgLy8gd2hpbGUgaW4gcmVt
b3RlIGZpbGVzeXN0ZW0gY2FzZSB0aGUgYmFja2VuZCBtYXkgZG93bmxvYWQgdGhlIGZpbGUgaW50
byBhIHRlbXBvcmFyeSBzbmFwc2hvdCBmaWxlIGFuZCByZXR1cm4gdGhlIG1ldGFkYXRhIG9mIHRo
ZSB0ZW1wb3JhcnkgZmlsZS4KKyAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJl
YWRNZXRhZGF0YSgpIGlzIGNhbGxlZCB3aGVuIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHNuYXBzaG90
IGZpbGUgaXMgc3VjY2Vzc2Z1bGx5IHJldHVybmVkLgorICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworCiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggY2VlOGQ5
MGQwMzczOGZlYTFhNjdlZTBlNjEzNDdiZjZhZTI3MjU1Ny4uZDhhODVlNzQ3MDNmNmJlZWU2ZWY1
YThiM2E1NWRiODQzYTk3YzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTMzLDM2ICszMywzNSBAQAogCiAjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQogCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVk
ZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBc3lu
Y0ZpbGVTeXN0ZW07Ci1jbGFzcyBBc3luY0ZpbGVXcml0ZXI7Ci1zdHJ1Y3QgRmlsZU1ldGFkYXRh
OwotCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyk7CiBwdWJsaWM6Ci0gICAgQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKCkgeyB9ICAgIAorICAgIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcygp
IHsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGlzIGNvbXBs
ZXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAK
ICAgICAvLyBDYWxsZWQgd2hlbiBhIHJlcXVlc3RlZCBmaWxlIHN5c3RlbSBpcyBvcGVuZWQuCi0g
ICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5G
aWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhIGZpbGUg
bWV0YWRhdGEgaXMgcmVhZCBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWRN
ZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
YWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhIGRpcmVjdG9yeSBlbnRyeSBpcyByZWFkLgotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IGlzRGlyZWN0b3J5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIAotICAgIC8vIENhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9yeSBlbnRy
aWVzIGhhdmUgYmVlbiByZWFkIChpLmUuIGluZGljYXRlcyBpdCdzIGdvb2QgdGltZSB0byBjYWxs
IGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uKS4gIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVyZSBjYW4g
YmUgbW9yZSBjaHVua3MuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVz
KGJvb2wgaGFzTW9yZSkgPSAwOworICAgIC8vIENhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRpcmVj
dG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUuIGluZGljYXRlcyBpdCdzIGdvb2QgdGlt
ZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uKS4gSWYgaGFzTW9yZSBpcyB0cnVlIHRo
ZXJlIGNhbiBiZSBtb3JlIGNodW5rcy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoYm9vbCBoYXNNb3JlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAv
LyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcnRlciBoYXMgYmVlbiBjcmVhdGVkIHN1Y2Nlc3Nm
dWxseS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFz
eW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBs
b25nIGxvbmcgbGVuZ3RoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDYWxs
ZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50
IGNvZGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5j
RmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5j
RmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCAxZjkzY2Y5M2U0Njc4YzU4ODgwM2E3M2RhNjk5
NzZhMGI1ZDcxZmNiLi44ZDhhM2ZlZGNkZDJjMWZlM2FhN2Q3MzlkM2QzYjhkYjM2NjVlMGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uY3BwCkBAIC0zNCw3ICszNCwxMCBAQAogCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCIKKyNp
bmNsdWRlICJCbG9iVVJMLmgiCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
SW1wbC5oIgogI2luY2x1ZGUgIldlYkZpbGVXcml0ZXIuaCIKQEAgLTQ2LDExICs0OSw1MSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSB7CisKIC8vIENocm9tZU9TLXNwZWNp
ZmljIGZpbGVzeXN0ZW0gdHlwZS4KIGNvbnN0IEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBleHRlcm5h
bFR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KFdlYktpdDo6V2ViRmls
ZVN5c3RlbTo6VHlwZUV4dGVybmFsKTsKIGNvbnN0IGNoYXIgZXh0ZXJuYWxQYXRoUHJlZml4W10g
PSAiZXh0ZXJuYWwiOwogY29uc3Qgc2l6ZV90IGV4dGVybmFsUGF0aFByZWZpeExlbmd0aCA9IHNp
emVvZihleHRlcm5hbFBhdGhQcmVmaXgpIC0gMTsKIAorLy8gU3BlY2lhbGl6ZWQgY2FsbGJhY2sg
Y2xhc3MgZm9yIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YS4KK2NsYXNzIFNuYXBz
aG90RmlsZUNhbGxiYWNrcyA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNuYXBzaG90RmlsZUNhbGxiYWNrcz4gY3JlYXRl
KGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU25hcHNob3RGaWxlQ2FsbGJhY2tzKGludGVybmFsQmxvYlVSTCwgY2FsbGJhY2tz
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxl
TWV0YWRhdGEmIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2tzKTsK
KworICAgICAgICAvLyBUaGlzIHdpbGwgY3JlYXRlIGEgbmV3IEZpbGUgb2JqZWN0IHVzaW5nIHRo
ZSBtZXRhZGF0YS4KKyAgICAgICAgbV9jYWxsYmFja3MtPmRpZFJlYWRNZXRhZGF0YShtZXRhZGF0
YSk7CisKKyAgICAgICAgLy8gTm93IHRoYXQgd2UndmUgcmVnaXN0ZXJlZCB0aGUgc25hcHNob3Qg
ZmlsZSwgd2UgY2FuIHVucmVnaXN0ZXIgb3VyIGludGVybmFsQmxvYlVSTCB3aGljaCBoYXMgcGxh
eWVkIGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBmaWxlIGR1cmluZyB0aGUgSVBDLgorICAgICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsQmxvYlVS
TCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGVycm9yKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2tzKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPmRpZEZh
aWwoZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTbmFwc2hvdEZpbGVDYWxsYmFja3Mo
Y29uc3QgS1VSTCYgaW50ZXJuYWxCbG9iVVJMLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1faW50ZXJuYWxCbG9iVVJM
KGludGVybmFsQmxvYlVSTCkKKyAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAg
eworICAgIH0KKworICAgIEtVUkwgbV9pbnRlcm5hbEJsb2JVUkw7CisgICAgT3duUHRyPFdlYkNv
cmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9OworCit9IC8vIG5h
bWVzcGFjZQorCiAvLyBzdGF0aWMKIGJvb2wgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgp
CiB7CkBAIC0yNTQsNiArMjk3LDE1IEBAIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNy
ZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QKICAgICBtX3dl
YkZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwYXRoQXNVUkwsIG5ldyBGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzKGNsaWVudCwgcGF0aEFzVVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcykp
OwogfQogCit2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIEtVUkwgcGF0aEFzVVJMID0gdmlydHVh
bFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCk7CisgICAgS1VSTCBpbnRlcm5hbEJsb2JVUkwgPSBC
bG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOworCisgICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBh
IHNuYXBzaG90IGZpbGUgYW5kIHJlZ2lzdGVyIHRoZSBmaWxlIHRvIGEgYmxvYiB1c2luZyB0aGUg
Z2l2ZW4gaW50ZXJuYWxCbG9iVVJMLgorICAgIG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGludGVybmFsQmxvYlVSTCwgcGF0aEFzVVJMLCBuZXcgV2Vi
S2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjcmVhdGVTbmFwc2hvdEZpbGVDYWxsYmFj
ayhpbnRlcm5hbEJsb2JVUkwsIGNhbGxiYWNrcykpKTsKK30KKwogS1VSTCBBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiB2aXJ0
dWFsUGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fZmlsZXN5c3RlbVJvb3RVUkwuaXNFbXB0
eSgpKTsKQEAgLTI2Myw2ICszMTUsMTEgQEAgS1VSTCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6
dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGEKICAgICBy
ZXR1cm4gdXJsOwogfQogCitQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVNuYXBzaG90RmlsZUNhbGxiYWNrKGNvbnN0IEtV
UkwmIGludGVybmFsQmxvYlVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykgY29uc3QKK3sKKyAgICByZXR1cm4gU25hcHNob3RGaWxlQ2FsbGJhY2tzOjpj
cmVhdGUoaW50ZXJuYWxCbG9iVVJMLCBjYWxsYmFja3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmgKaW5kZXggYThjYmNhMjc2MDM0OTZiYTA1YjkyYzU5ZDdl
NmJkOWNjZTcyZTZmNC4uODI1NWQ4ZTcyODU4OTBiNDU1N2M1Y2E5YzU0MzY5NTBkMWFiMWRhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5oCkBAIC02Niw5ICs2NiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
cmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAog
cHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtKEFzeW5jRmlsZVN5c3RlbTo6
VHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCk7CisKKyAgICBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soY29uc3QgS1VSTCYgaW50
ZXJuYWxCbG9iVVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pIGNvbnN0
OworCiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CiAKICAgICAv
LyBDb252ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0byBhIGZ1bGwgb3JpZ2lu
LXF1YWxpZmllZCBGaWxlU3lzdGVtIFVSTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCA3
ZmJiMWY0NjgyNTZlYTllZmFiMGI4ZjQ2NzQ3MDJhYWY4OWQ5YzY1Li44MGEyNmZmMDNmZDIwNGI1
OTZkNjQwNTI3NjllNzg1OWUzYmY2NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFCTEUoV09SS0VSUykK
IAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkJsb2JV
UkwuaCIKICNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTIwOCw2ICsyMDksMTQgQEAgdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRl
ckNsaWVudCogY2xpZW50LAogICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UoV29ya2VyRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrczo6Y3JlYXRlKGNsaWVudCwgcGF0aEFz
VVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcywgbV93b3JrZXJDb250ZXh0KSktPnBvc3RS
ZWFkTWV0YWRhdGFUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoQXNVUkwsIG1fbW9k
ZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtOjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorewor
ICAgIEtVUkwgcGF0aEFzVVJMID0gdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCk7Cisg
ICAgS1VSTCBpbnRlcm5hbEJsb2JVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwor
CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjcmVhdGVTbmFwc2hv
dEZpbGVDYWxsYmFjayhpbnRlcm5hbEJsb2JVUkwsIGNhbGxiYWNrcykpLT5wb3N0Q3JlYXRlU25h
cHNob3RGaWxlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgaW50ZXJuYWxCbG9iVVJMLCBw
YXRoQXNVUkwsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworfQorCiBQYXNzUmVmUHRyPFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKCFtX3N5bmNo
cm9ub3VzIHx8ICFtX2JyaWRnZUZvckN1cnJlbnRPcGVyYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmgKaW5kZXggYzhhZTM1NjVmYWQwOWU3ODY3OWY4ODExNzlkYzRhYmMzMTgzZDExMi4uMDg5MTg1
MThhNWUzNjgyZjMwZDA0ZWMwNWIxNmVlYzhhZjM1OGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5o
CkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhp
c3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcml2YXRlOgog
ICAgIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFdlYktpdDo6V2ViVVJMJiByb290VVJMLCBi
b29sIHN5bmNocm9ub3VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggYjFkYWQ3
MDM1YTRlNmNlNjM2YzM1MmIyNTNlMThiNjM2N2YzYTU4NC4uOGZkNWNmYTZkZGNiNjQ1NTdkMDVj
NDU5MTg2YjRjOGIzNWY1ZWU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKQEAgLTI4
OSw2ICsyODksMTUgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMsIG1vZGUpKTsKIH0KIAordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpwb3N0Q3JlYXRlU25hcHNob3RGaWxlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgY29uc3QgS1VSTCYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQoreworICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKKyAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
Y3JlYXRlU25hcHNob3RGaWxlT25NYWluVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhmaWxlU3lzdGVtKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludGVybmFsQmxvYlVSTCwgcGF0aCwgdGhpcywgbW9kZSkpOworfQorCiB2b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1v
bkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBj
cmVhdGUsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdl
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKCFjb21tb25DbGllbnQpCkBAIC0zNDgs
NiArMzU3LDExIEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZERp
cmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFCiAgICAgZmlsZVN5c3RlbS0+cmVh
ZERpcmVjdG9yeShwYXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVh
a2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OmNyZWF0ZVNuYXBzaG90RmlsZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYg
aW50ZXJuYWxCbG9iVVJMLCBjb25zdCBLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQoreworICAg
IGZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShpbnRlcm5hbEJs
b2JVUkwsIHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQ
dHIoYnJpZGdlLCBtb2RlKSk7Cit9CisKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3IgZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKIHsKICAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygm
ZGlkRmFpbE9uV29ya2VyVGhyZWFkLCB0aGlzLCBlcnJvciksIG1vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZS5oCmluZGV4IDM1MDgzOWNkNTc3NWNmZWM5ZWNlOGM2MTQzY2VkYjQzN2NhODIzNjcu
LmU0OTZkZTJlZmY2MmNkYjhiMWJmNjVmODE1MDVjM2I3YTM4ZjRmYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdEZpbGVF
eGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBwb3N0RGlyZWN0b3J5RXhpc3RzVG9N
YWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG1vZGUpOwogICAgIHZvaWQgcG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQo
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bW9kZSk7CisgICAgdm9pZCBwb3N0Q3JlYXRlU25hcHNob3RGaWxlVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICAvLyBDYWxsYmFj
ayBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBk
aWRGYWlsT25NYWluVGhyZWFkKFdlYkZpbGVFcnJvciwgY29uc3QgU3RyaW5nJiBtb2RlKTsKQEAg
LTExNyw2ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGZpbGVFeGlzdHNPbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHN0YXRpYyB2b2lkIGRp
cmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFBhc3NSZWZQdHI8
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAg
ICAgc3RhdGljIHZvaWQgcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBh
dGgsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0
cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgaW50ZXJuYWxCbG9iVVJMLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBw
YXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBT
dHJpbmcmIG1vZGUpOwogCiAgICAgZnJpZW5kIGNsYXNzIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2Fs
bGJhY2tzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129564</attachid>
            <date>2012-02-29 17:38:11 -0800</date>
            <delta_ts>2012-03-01 06:26:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79928-20120301103810.patch</filename>
            <type>text/plain</type>
            <size>25982</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3MDYyZjFmOTU4ODIz
YTJhNGRkMjhmMDkyZDllOWEwNWVhZWVhYy4uZTZjNDZhYzg0MWViY2ZkOTNmNjc3OWZlNzJiNDE2
YThkODFmNDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTI5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgdGhlIG5ldyBj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEgQVBJIGZvciBGaWxlRW50cnkuZmlsZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTkyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czogbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0v
IHRlc3RzIHNob3VsZCB1c2UgdGhlIG5ldyBjb2RlICh0aGV5IHNob3VsZCBwYXNzIG9uY2UKKyAg
ICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2hyb21pdW0gY2hhbmdlIGlzIHJvbGxlZCBpbikuCisK
KyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZSk6IFVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgQVBJLgor
ICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3
IEFQSS4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgorICAgICAgICAoRmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAg
ICAgICAoQXN5bmNGaWxlU3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaDogQWRkZWQgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAod2hpY2gganVzdCBj
YWxscyBBU1NFUlRfTk9UUkVBQ0hFRCgpKSBzbyB0aGF0IHN1YmNsYXNzZXMgY2FuIGZvY3VzIG9u
bHkgb24gdGhlIGNhbGxiYWNrIG1ldGhvZHMgdGhhdCB0aGV5J3JlIGludGVyZXN0ZWQgaW4uCisK
IDIwMTItMDItMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDkxMzcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDlhNzRlZTc2NDhkNzJhOGNlM2Q2NzE5MGNiNjI5ODg3ODgxZDI5ZmUu
LjQwNjI5OTcyMzgwNjM2Mzg4Zjg5M2I3ZThhZmJlZmZkMTYyZTQxNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDItMjkgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSB0aGUgbmV3IGNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YSBBUEkgZm9yIEZpbGVFbnRyeS5maWxlKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5OTI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIG5ldyBmbG93IHdl
IGZpcnN0IGNyZWF0ZSBhbiBpbnRlcm5hbCBCbG9iIFVSTCBmb3IgdGhlCisgICAgICAgIHNuYXBz
aG90IGZpbGUgYW5kIGNhbGwgdGhlIG5ldyBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRh
dGEoKQorICAgICAgICBXZWJLaXQgQVBJIHdpdGggdGhlIEJsb2IgVVJMLgorCisgICAgICAgIFRo
ZSBpbXBsZW1lbnRvciBvZiBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoKSAoaS5l
LiBjaHJvbWl1bSkKKyAgICAgICAgcmVnaXN0ZXJzIHRoZSBjcmVhdGVkIHNuYXBzaG90IGZpbGUg
d2l0aCB0aGUgZ2l2ZW4gaW50ZXJuYWwgQmxvYiBVUkwuCisKKyAgICAgICAgSW4gdGhlIGNhbGxi
YWNrIGNoYWluIHdlIGNhbGwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUoKSB0byBjcmVhdGUgYQorICAg
ICAgICBuZXcgRmlsZSB1c2luZyB0aGUgcmV0dXJuZWQgcGxhdGZvcm0gcGF0aCwgYW5kIHRoZW4g
Y2FsbAorICAgICAgICB1bnJlZ2lzdGVyQmxvYlVSTCgpIHRvIGNsZWFuIHVwIHRoZSBpbnRlcm5h
bCBCbG9iIFVSTC4KKworICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2spOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaDoKKyAgICAgICAgKiBzcmMvV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0
YSk6IEFkZGVkLgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5o
OgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0
ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVTbmFwc2hvdEZpbGVPbk1haW5UaHJl
YWQpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZS5oOgorICAgICAgICAoV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSk6CisKIDIwMTIt
MDItMjggIEdhcnkgS2FjbWFyY2lrICA8Z2FyeWthY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBTZXQgbmF0aXZlS2V5Q29kZSB0byBpbmNsdWRlIFdpbmRvd3Mgc2NhbiBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA5Nzk5ZTEyMDc5
ZThhZWQ0MjM1N2E4MTZmYmM2MTViZDliYmEwYjQ0Li5iMTc4ZjBjNjRhMGY3OGEwOWRkNzQwMTZl
NzBhNmRkMTM3YmI4NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogCiB2b2lkIERPTUZpbGVTeXN0ZW06OmNy
ZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQdHI8RmlsZUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKIHsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+
ZnVsbFBhdGgoKSwgR2V0UGF0aENhbGxiYWNrOjpjcmVhdGUodGhpcywgZmlsZUVudHJ5LT5uYW1l
KCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZUVudHJ5LT5mdWxsUGF0
aCgpLCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKaW5kZXgg
ZTdhOGNhNzBiZjU3N2NlNGQ0N2U4M2JjZGZmMGEyZDk3Nzc2MjZkNS4uOGI3NzJiYjMzZmMxNDhm
NjhkOWFjMjQ1ODI2ZWRhMmY4ODgxZWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5jcHAKQEAgLTcyLDYwICs3MiwzNSBAQCBQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5U3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OnJvb3QoKQogCiBuYW1lc3BhY2Ugewog
Ci1jbGFzcyBHZXRQYXRoSGVscGVyIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7
CitjbGFzcyBDcmVhdGVGaWxlSGVscGVyIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgR2V0UGF0aFJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVk
PEdldFBhdGhSZXN1bHQ+IHsKKyAgICBjbGFzcyBDcmVhdGVGaWxlUmVzdWx0IDogcHVibGljIFJl
ZkNvdW50ZWQ8Q3JlYXRlRmlsZVJlc3VsdD4gewogICAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxHZXRQYXRoUmVzdWx0PiBjcmVhdGUoKQorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiBjcmVhdGUoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEdldFBhdGhSZXN1bHQoKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENyZWF0ZUZpbGVSZXN1bHQoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIG1fZmFpbGVkOwogICAgICAgICBpbnQgbV9jb2RlOwotICAgICAgICBTdHJpbmcgbV9w
YXRoOworICAgICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwogCiAgICAgICBwcml2YXRlOgotICAg
ICAgICBHZXRQYXRoUmVzdWx0KCkKKyAgICAgICAgQ3JlYXRlRmlsZVJlc3VsdCgpCiAgICAgICAg
ICAgICA6IG1fZmFpbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2NvZGUoMCkKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgfkdldFBhdGhSZXN1bHQoKQorICAgICAgICB+Q3JlYXRl
RmlsZVJlc3VsdCgpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICBmcmllbmQgY2xhc3Mg
V1RGOjpSZWZDb3VudGVkPEdldFBhdGhSZXN1bHQ+OworICAgICAgICBmcmllbmQgY2xhc3MgV1RG
OjpSZWZDb3VudGVkPENyZWF0ZUZpbGVSZXN1bHQ+OwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFz
c093blB0cjxHZXRQYXRoSGVscGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHZXRQYXRoUmVzdWx0PiBy
ZXN1bHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBh
c3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhIZWxwZXIocmVzdWx0KSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5G
aWxlU3lzdGVtKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiwgYm9vbCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIo
UGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcpCi0gICAgewotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVG
aWxlSGVscGVyKHJlc3VsdCwgbmFtZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKQpAQCAtMTM0LDIxICsxMDksMjMgQEAgcHVibGljOgogICAgICAgICBtX3Jl
c3VsdC0+bV9jb2RlID0gY29kZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5HZXRQYXRoSGVscGVy
KCkKKyAgICB2aXJ0dWFsIH5DcmVhdGVGaWxlSGVscGVyKCkKICAgICB7CiAgICAgfQogCiAgICAg
dm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICB7
Ci0gICAgICAgIG1fcmVzdWx0LT5tX3BhdGggPSBtZXRhZGF0YS5wbGF0Zm9ybVBhdGg7CisgICAg
ICAgIG1fcmVzdWx0LT5tX2ZpbGUgPSBGaWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0
Zm9ybVBhdGgsIG1fbmFtZSk7CiAgICAgfQogcHJpdmF0ZToKLSAgICBHZXRQYXRoSGVscGVyKFBh
c3NSZWZQdHI8R2V0UGF0aFJlc3VsdD4gcmVzdWx0KQorICAgIENyZWF0ZUZpbGVIZWxwZXIoUGFz
c1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewog
ICAgIH0KIAotICAgIFJlZlB0cjxHZXRQYXRoUmVzdWx0PiBtX3Jlc3VsdDsKKyAgICBSZWZQdHI8
Q3JlYXRlRmlsZVJlc3VsdD4gbV9yZXN1bHQ7CisgICAgU3RyaW5nIG1fbmFtZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlCkBAIC0xNTYsOCArMTMzLDggQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8Rmls
ZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmls
ZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgUmVmUHRyPEdl
dFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ+IHJlc3VsdChHZXRQYXRoSGVscGVyOjpHZXRQYXRo
UmVzdWx0OjpjcmVhdGUoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShm
aWxlRW50cnktPmZ1bGxQYXRoKCksIEdldFBhdGhIZWxwZXI6OmNyZWF0ZShyZXN1bHQpKTsKKyAg
ICBSZWZQdHI8Q3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0KENyZWF0
ZUZpbGVIZWxwZXI6OkNyZWF0ZUZpbGVSZXN1bHQ6OmNyZWF0ZSgpKTsKKyAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+ZnVs
bFBhdGgoKSwgQ3JlYXRlRmlsZUhlbHBlcjo6Y3JlYXRlKHJlc3VsdCwgZmlsZUVudHJ5LT5uYW1l
KCkpKTsKICAgICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21w
bGV0ZSgpKSB7CiAgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTE2Niw4ICsxNDMsNyBAQCBQYXNzUmVmUHRyPEZpbGU+IERPTUZpbGVT
eXN0ZW1TeW5jOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwgRQog
ICAgICAgICBlYyA9IHJlc3VsdC0+bV9jb2RlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0g
ICAgQVNTRVJUKCFyZXN1bHQtPm1fcGF0aC5pc0VtcHR5KCkpOwotICAgIHJldHVybiBGaWxlOjpj
cmVhdGVXaXRoTmFtZShyZXN1bHQtPm1fcGF0aCwgZmlsZUVudHJ5LT5uYW1lKCkpOworICAgIHJl
dHVybiByZXN1bHQtPm1fZmlsZTsKIH0KIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCmluZGV4IDA2ZjNiOTM4MzRmYmFiNDg0
ZmMzNzE0YjE5NDFhODExMWM3MzQzY2EuLmZlZWMxMWIxYTNiYTkwODU3ZjZhNDlkYTA1YzBjNmQ2
ZGQ0MTU4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNh
bGxiYWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcApAQCAtNjUsNDIgKzY1LDYgQEAgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6On5GaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZSgpCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2U6OmRpZFN1Y2NlZWQoKQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQg
YW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcm
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pCi17Ci0gICAgLy8gRWFjaCBzdWJjbGFzcyBt
dXN0IGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZSBvbmUuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWRNZXRhZGF0YShj
b25zdCBGaWxlTWV0YWRhdGEmKQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBsZW1l
bnQgYW4gYXBwcm9wcmlhdGUgb25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12
b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29s
KQotewotICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUg
b25lLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlOjpkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiwgYm9vbCkKLXsK
LSAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZTo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxv
bmcgbG9uZykKLXsKLSAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFwcHJv
cHJpYXRlIG9uZS4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9pZCBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIHsKICAgICBpZiAobV9lcnJvckNh
bGxiYWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CmluZGV4IDdmNjg2MjVhYzkyNjhmOGUyNTQ5ZDFkNWE4OTBkODRjYzA1ZmNkZDEuLmUwMmRlYjlm
MDFhYzM4MTg5ZDc4OWM0NmI4NzUzYmJkNTE1ZjZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC01OSwyNSArNTksMTEgQEAgY2xhc3MgRmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2UgOiBwdWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSgpOwogCi0gICAg
Ly8gRm9yIEVudHJ5Q2FsbGJhY2tzIGFuZCBWb2lkQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdWNjZWVkKCk7Ci0KLSAgICAvLyBGb3IgRmlsZVN5c3RlbUNhbGxiYWNrcy4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi0gICAgLy8gRm9yIE1ldGFkYXRhQ2FsbGJhY2tzLgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJik7Ci0K
LSAgICAvLyBGb3IgRW50cmllc0NhbGxiYWNrcy4gZGlkUmVhZERpcmVjdG9yeUVudHJ5IGlzIGNh
bGxlZCBlYWNoIHRpbWUgdGhlIEFQSSByZWFkcyBhbiBlbnRyeSwgYW5kIGRpZFJlYWREaXJlY3Rv
cnlEb25lIGlzIGNhbGxlZCB3aGVuIGEgY2h1bmsgb2YgZW50cmllcyBoYXZlIGJlZW4gcmVhZCAo
aS5lLiBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbikuICBJZiBoYXNN
b3JlIGlzIHRydWUgdGhlcmUgY2FuIGJlIG1vcmUgY2h1bmtzLgotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlzRGlyZWN0b3J5
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3Jl
KTsKLQotICAgIC8vIEZvciBjcmVhdGVGaWxlV3JpdGVyLgotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxl
bmd0aCk7Ci0KICAgICAvLyBGb3IgRXJyb3JDYWxsYmFjay4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChpbnQgY29kZSk7CiAKKyAgICAvLyBPdGhlciBjYWxsYmFjayBtZXRob2RzIGFyZSBpbXBs
ZW1lbnRlZCBieSBlYWNoIHN1YmNsYXNzLgorCiBwcm90ZWN0ZWQ6CiAgICAgRmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2UoUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKICAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAppbmRleCBiYmVmNmE0ZTMxOWNiZmE5NzNiZGNiYTBh
MGRmZDU2MDVjYTdiMTI2Li43NzkyMTAxYzUzMGEyMWMyNjVjZmM0YjQ2YTM0NmZiOTIwYzQxMjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaApAQCAtMTQwLDYg
KzE0MCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRG
YWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVy
KEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCisgICAgLy8gQ3JlYXRlcyBh
IHNuYXBzaG90IGZpbGUgYW5kIHJlYWQgaXRzIG1ldGFkYXRhIGZvciBhIG5ldyBGaWxlIG9iamVj
dC4KKyAgICAvLyBJbiBsb2NhbCBmaWxlc3lzdGVtIGNhc2VzIHRoZSBiYWNrZW5kIG1heSBzaW1w
bHkgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgZmlsZSBpdHNlbGYgKGFzIHdlbGwgYXMgcmVh
ZE1ldGFkYXRhIGRvZXMpLAorICAgIC8vIHdoaWxlIGluIHJlbW90ZSBmaWxlc3lzdGVtIGNhc2Ug
dGhlIGJhY2tlbmQgbWF5IGRvd25sb2FkIHRoZSBmaWxlIGludG8gYSB0ZW1wb3Jhcnkgc25hcHNo
b3QgZmlsZSBhbmQgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUuCisg
ICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxs
ZWQgd2hlbiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBzbmFwc2hvdCBmaWxlIGlzIHN1Y2Nlc3NmdWxs
eSByZXR1cm5lZC4KKyAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBp
cyBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pID0gMDsKKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IGNlZThkOTBkMDM3MzhmZWExYTY3ZWUwZTYx
MzQ3YmY2YWUyNzI1NTcuLmQ4YTg1ZTc0NzAzZjZiZWVlNmVmNWE4YjNhNTVkYjg0M2E5N2MyODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCkBAIC0zMywzNiArMzMsMzUgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAor
I2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5o
IgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwotY2xhc3Mg
QXN5bmNGaWxlV3JpdGVyOwotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogY2xhc3MgQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MpOwogcHVibGljOgotICAgIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcygpIHsg
fSAgICAKKyAgICBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoKSB7IH0KIAogICAgIC8vIENhbGxl
ZCB3aGVuIGEgcmVxdWVzdGVkIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRT
dWNjZWVkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4g
YSByZXF1ZXN0ZWQgZmlsZSBzeXN0ZW0gaXMgb3BlbmVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRP
cGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBmaWxlIG1ldGFkYXRhIGlzIHJlYWQgc3Vj
Y2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1l
dGFkYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmls
ZU1ldGFkYXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdo
ZW4gYSBkaXJlY3RvcnkgZW50cnkgaXMgcmVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERp
cmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIGlzRGlyZWN0b3J5KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICAvLyBD
YWxsZWQgYWZ0ZXIgYSBjaHVuayBvZiBkaXJlY3RvcnkgZW50cmllcyBoYXZlIGJlZW4gcmVhZCAo
aS5lLiBpbmRpY2F0ZXMgaXQncyBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRoZSBhcHBsaWNh
dGlvbikuICBJZiBoYXNNb3JlIGlzIHRydWUgdGhlcmUgY2FuIGJlIG1vcmUgY2h1bmtzLgotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpID0gMDsK
KyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBjaHVuayBvZiBkaXJlY3RvcnkgZW50cmllcyBoYXZlIGJl
ZW4gcmVhZCAoaS5lLiBpbmRpY2F0ZXMgaXQncyBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRo
ZSBhcHBsaWNhdGlvbikuIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVyZSBjYW4gYmUgbW9yZSBjaHVu
a3MuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9y
ZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYW4gQXN5
bmNGaWxlV3J0ZXIgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRl
ciwgbG9uZyBsb25nIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxl
V3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlcmUgd2FzIGFu
IGVycm9yLgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5j
cHAKaW5kZXggMWY5M2NmOTNlNDY3OGM1ODg4MDNhNzNkYTY5OTc2YTBiNWQ3MWZjYi4uOGQ4YTNm
ZWRjZGQyYzFmZTNhYTdkNzM5ZDNkM2I4ZGIzNjY1ZTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtMzQs
NyArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2lu
Y2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiQmxvYlVSTC5oIgor
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkZpbGVJbmZv
LmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJX
ZWJGaWxlV3JpdGVyLmgiCkBAIC00NiwxMSArNDksNTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCituYW1lc3BhY2UgeworCiAvLyBDaHJvbWVPUy1zcGVjaWZpYyBmaWxlc3lzdGVtIHR5cGUu
CiBjb25zdCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZXh0ZXJuYWxUeXBlID0gc3RhdGljX2Nhc3Q8
QXN5bmNGaWxlU3lzdGVtOjpUeXBlPihXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGVFeHRlcm5h
bCk7CiBjb25zdCBjaGFyIGV4dGVybmFsUGF0aFByZWZpeFtdID0gImV4dGVybmFsIjsKIGNvbnN0
IHNpemVfdCBleHRlcm5hbFBhdGhQcmVmaXhMZW5ndGggPSBzaXplb2YoZXh0ZXJuYWxQYXRoUHJl
Zml4KSAtIDE7CiAKKy8vIFNwZWNpYWxpemVkIGNhbGxiYWNrIGNsYXNzIGZvciBjcmVhdGVTbmFw
c2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEuCitjbGFzcyBTbmFwc2hvdEZpbGVDYWxsYmFja3MgOiBw
dWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxTbmFwc2hvdEZpbGVDYWxsYmFja3M+IGNyZWF0ZShjb25zdCBLVVJMJiBpbnRlcm5h
bEJsb2JVUkwsIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNuYXBzaG90Rmls
ZUNhbGxiYWNrcyhpbnRlcm5hbEJsb2JVUkwsIGNhbGxiYWNrcykpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2NhbGxiYWNrcyk7CisKKyAgICAgICAgLy8gVGhpcyB3
aWxsIGNyZWF0ZSBhIG5ldyBGaWxlIG9iamVjdCB1c2luZyB0aGUgbWV0YWRhdGEuCisgICAgICAg
IG1fY2FsbGJhY2tzLT5kaWRSZWFkTWV0YWRhdGEobWV0YWRhdGEpOworCisgICAgICAgIC8vIE5v
dyB0aGF0IHdlJ3ZlIHJlZ2lzdGVyZWQgdGhlIHNuYXBzaG90IGZpbGUsIHdlIGNhbiB1bnJlZ2lz
dGVyIG91ciBpbnRlcm5hbEJsb2JVUkwgd2hpY2ggaGFzIHBsYXllZCBhIHBsYWNlaG9sZGVyIGZv
ciB0aGUgZmlsZSBkdXJpbmcgdGhlIElQQy4KKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6dW5yZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbEJsb2JVUkwpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGludCBlcnJvcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2Nh
bGxiYWNrcyk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5kaWRGYWlsKGVycm9yKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgU25hcHNob3RGaWxlQ2FsbGJhY2tzKGNvbnN0IEtVUkwmIGludGVybmFs
QmxvYlVSTCwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICAgICAgOiBtX2ludGVybmFsQmxvYlVSTChpbnRlcm5hbEJsb2JVUkwpCisg
ICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgIHsKKyAgICB9CisKKyAgICBLVVJM
IG1faW50ZXJuYWxCbG9iVVJMOworICAgIE93blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UKKwogLy8gc3RhdGlj
CiBib29sIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKQogewpAQCAtMjU0LDYgKzI5Nywx
NSBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0CiAgICAgbV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0
YWRhdGEocGF0aEFzVVJMLCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjbGllbnQsIHBh
dGhBc1VSTCwgbV93ZWJGaWxlU3lzdGVtLCBjYWxsYmFja3MpKTsKIH0KIAordm9pZCBBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKK3sKKyAgICBLVVJMIHBhdGhBc1VSTCA9IHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJM
KHBhdGgpOworICAgIEtVUkwgaW50ZXJuYWxCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJu
YWxVUkwoKTsKKworICAgIC8vIFRoaXMgd2lsbCBjcmVhdGUgYSBzbmFwc2hvdCBmaWxlIGFuZCBy
ZWdpc3RlciB0aGUgZmlsZSB0byBhIGJsb2IgdXNpbmcgdGhlIGdpdmVuIGludGVybmFsQmxvYlVS
TC4KKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0
YShpbnRlcm5hbEJsb2JVUkwsIHBhdGhBc1VSTCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNh
bGxiYWNrc0ltcGwoY3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soaW50ZXJuYWxCbG9iVVJMLCBj
YWxsYmFja3MpKSk7Cit9CisKIEtVUkwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnZpcnR1YWxQ
YXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFtX2ZpbGVzeXN0ZW1Sb290VVJMLmlzRW1wdHkoKSk7CkBAIC0yNjMsNiArMzE1
LDExIEBAIEtVUkwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnZpcnR1YWxQYXRoVG9GaWxlU3lz
dGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhCiAgICAgcmV0dXJuIHVybDsKIH0KIAorUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IEFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpjcmVhdGVTbmFwc2hvdEZpbGVDYWxsYmFjayhjb25zdCBLVVJMJiBpbnRlcm5hbEJsb2JVUkws
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFNuYXBzaG90RmlsZUNhbGxiYWNrczo6Y3JlYXRlKGludGVybmFsQmxvYlVS
TCwgY2FsbGJhY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5oCmluZGV4IGE4Y2JjYTI3NjAzNDk2YmEwNWI5MmM1OWQ3ZTZiZDljY2U3MmU2ZjQuLjgyNTVk
OGU3Mjg1ODkwYjQ1NTdjNWNhOWM1NDM2OTUwZDFhYjFkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApAQCAtNjYsOSAr
NjYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3Qg
U3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAg
IHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3Jp
dGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByb3RlY3RlZDoKICAgICBBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IEtVUkwmIHJv
b3RVUkwpOworCisgICAgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNyZWF0
ZVNuYXBzaG90RmlsZUNhbGxiYWNrKGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSBjb25zdDsKKwogICAgIFdlYktpdDo6V2Vi
RmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOwogCiAgICAgLy8gQ29udmVydHMgYSBnaXZlbiBh
YnNvbHV0ZSB2aXJ0dWFsIHBhdGggdG8gYSBmdWxsIG9yaWdpbi1xdWFsaWZpZWQgRmlsZVN5c3Rl
bSBVUkwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggN2ZiYjFmNDY4MjU2ZWE5ZWZhYjBi
OGY0Njc0NzAyYWFmODlkOWM2NS4uODBhMjZmZjAzZmQyMDRiNTk2ZDY0MDUyNzY5ZTc4NTllM2Jm
NjU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkgJiYgRU5BQkxFKFdPUktFUlMpCiAKICNpbmNsdWRlICJBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCkBAIC0yMDgsNiArMjA5LDE0IEBAIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwKICAg
ICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdvcmtlckZpbGVXcml0ZXJI
ZWxwZXJDYWxsYmFja3M6OmNyZWF0ZShjbGllbnQsIHBhdGhBc1VSTCwgbV93ZWJGaWxlU3lzdGVt
LCBjYWxsYmFja3MsIG1fd29ya2VyQ29udGV4dCkpLT5wb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhy
ZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aEFzVVJMLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9u
KTsKIH0KIAordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBLVVJMIHBhdGhBc1VSTCA9
IHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpOworICAgIEtVUkwgaW50ZXJuYWxCbG9i
VVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKKworICAgIGNyZWF0ZVdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY3JlYXRlU25hcHNob3RGaWxlQ2FsbGJhY2soaW50ZXJu
YWxCbG9iVVJMLCBjYWxsYmFja3MpKS0+cG9zdENyZWF0ZVNuYXBzaG90RmlsZVRvTWFpblRocmVh
ZChtX3dlYkZpbGVTeXN0ZW0sIGludGVybmFsQmxvYlVSTCwgcGF0aEFzVVJMLCBtX21vZGVGb3JD
dXJyZW50T3BlcmF0aW9uKTsKK30KKwogUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlPiBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIEFTU0VSVCghbV9zeW5jaHJvbm91cyB8fCAhbV9icmlkZ2VG
b3JDdXJyZW50T3BlcmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCmluZGV4IGM4YWUzNTY1ZmFk
MDllNzg2NzlmODgxMTc5ZGM0YWJjMzE4M2QxMTIuLjA4OTE4NTE4YTVlMzY4MmYzMGQwNGVjMDVi
MTZlZWM4YWYzNThkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApAQCAtNzQsNiArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2
b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNG
aWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXN5bmNGaWxlU3lzdGVtOjpU
eXBlLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCwgYm9vbCBzeW5jaHJvbm91cyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4IGIxZGFkNzAzNWE0ZTZjZTYzNmMzNTJiMjUz
ZTE4YjYzNjdmM2E1ODQuLjhmZDVjZmE2ZGRjYjY0NTU3ZDA1YzQ1OTE4NmI0YzhiMzVmNWVlNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC0yODksNiArMjg5LDE1IEBAIHZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWREaXJlY3RvcnlUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBtb2Rl
KSk7CiB9CiAKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0
ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBLVVJMJiBpbnRlcm5hbEJsb2JVUkwsIGNvbnN0IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bW9kZSkKK3sKKyAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZVNuYXBzaG90RmlsZU9u
TWFpblRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoZmlsZVN5c3RlbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEJs
b2JVUkwsIHBhdGgsIHRoaXMsIG1vZGUpKTsKK30KKwogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQYXNzUmVmUHRyPFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewogICAgIGlmICghY29tbW9uQ2xpZW50KQpAQCAtMzQ4LDYgKzM1NywxMSBAQCB2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RQogICAgIGZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGF0aCwgTWFp
blRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUp
KTsKIH0KIAordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVTbmFw
c2hvdEZpbGVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIGludGVybmFsQmxvYlVSTCwgY29u
c3QgS1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
PiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBmaWxlU3lzdGVtLT5jcmVhdGVT
bmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoaW50ZXJuYWxCbG9iVVJMLCBwYXRoLCBNYWluVGhy
ZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwor
fQorCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxPbk1haW5U
aHJlYWQoV2ViRmlsZUVycm9yIGVycm9yLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgbWF5
UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZhaWxPbldvcmtlclRocmVh
ZCwgdGhpcywgZXJyb3IpLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAppbmRleCAzNTA4
MzljZDU3NzVjZmVjOWVjZThjNjE0M2NlZGI0MzdjYTgyMzY3Li5lNDk2ZGUyZWZmNjJjZGI4YjFi
ZjY1ZjgxNTA1YzNiN2EzOGY0ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCkBAIC05NCw2
ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdl
YkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOwogICAgIHZvaWQgcG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lz
dGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAg
ICB2b2lkIHBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9z
dENyZWF0ZVNuYXBzaG90RmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgaW50ZXJuYWxCbG9iVVJMLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgLy8gQ2FsbGJhY2sgbWV0aG9kcyB0aGF0IGFyZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgZGlkRmFpbE9uTWFpblRocmVhZChX
ZWJGaWxlRXJyb3IsIGNvbnN0IFN0cmluZyYgbW9kZSk7CkBAIC0xMTcsNiArMTE4LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgcGF0aCwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29u
c3QgU3RyaW5nJiBtb2RlKTsKICAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5U
aHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHN0YXRpYyB2b2lkIHJlYWRE
aXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGlu
dGVybmFsQmxvYlVSTCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgUGFzc1JlZlB0cjxXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAg
IGZyaWVuZCBjbGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>