<?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>86027</bug_id>
          
          <creation_ts>2012-05-09 15:53:52 -0700</creation_ts>
          <short_desc>Crash in 3rd party WebKit apps that disable cache at a wrong time</short_desc>
          <delta_ts>2012-05-10 19:30:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>619945</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-09 15:53:52 -0700</bug_when>
    <thetext>A lot of memory cache code depends on subtle ways of keeping a cached resource alive. In particular, CachedResourceLoader::loadResource() both temporarily adds the resource to cache, and disables pruning, because the former was found to be ineffective.

That&apos;s not enough however, because a client still do things that would make the resource deleted, such as disable the cache.

&lt;rdar://problem/10615880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619956</commentid>
    <comment_count>1</comment_count>
      <attachid>141040</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-09 16:03:40 -0700</bug_when>
    <thetext>Created attachment 141040
proposed fix

The patch prepared as:
1. Revert WebCore part of r111272, leaving its test around.
2. Remove code that forced temporarily adding new resource to cache for &quot;protection&quot; even if caching was generally disabled.
3. Changed loadResource() to use CachedResourceHandle.
4. Fixed build breakage by deploying CachedResourceHandle elsewhere.
5. Added a FIXME in for a pre-existing issue in requestUserCSSStyleSheet().
6. Added an API test (and confirmed that it does check for this problem).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619987</commentid>
    <comment_count>2</comment_count>
      <attachid>141040</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-05-09 16:21:28 -0700</bug_when>
    <thetext>Comment on attachment 141040
proposed fix

This does look fine to me.  I still would like Antti to give it a pass, also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620036</commentid>
    <comment_count>3</comment_count>
      <attachid>141040</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 16:54:18 -0700</bug_when>
    <thetext>Comment on attachment 141040
proposed fix

Attachment 141040 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12651734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620398</commentid>
    <comment_count>4</comment_count>
      <attachid>141040</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-10 02:26:05 -0700</bug_when>
    <thetext>Comment on attachment 141040
proposed fix

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

r=me

&gt; Source/WebCore/ChangeLog:12
&gt; +        The fix is to use CacheResourceHandle throughout MemoryCache, which will certainly
&gt; +        keep the resource alive. Also removed earlier fixes.

Seems like a good idea. The only worry is that using CachedResourceHandles as stack objects will create some HashMap churn in CachedResource::registerHandle/unregisterHandle for the revalidation case. I think that should be ok in practice though.

Typo CacheResourceHandle -&gt;CachedResourceHandle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620757</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-10 11:24:47 -0700</bug_when>
    <thetext>-        if (CachedImage* cachedImage = loader-&gt;requestImage(request)) {
+        if (CachedImage* cachedImage = loader-&gt;requestImage(request).get()) {
             m_imageSet = StyleCachedImageSet::create(cachedImage, image.scaleFactor, this);
             m_accessedBestFitImage = true;
         }

Having slept on it, I realize that this is wrong. When CachedResourceHandle is the only thing keeping resource alive, the object will be destroyed within the if block.

-                m_cachedSheet = document()-&gt;cachedResourceLoader()-&gt;requestXSLStyleSheet(request);
+                m_cachedSheet = document()-&gt;cachedResourceLoader()-&gt;requestXSLStyleSheet(request).get();

This would be better served by teaching CachedResourceHandle how to downcast from CachedXXX to plain CachedResource. Then I wouldn&apos;t have to use suspicious looking get().

New patch coming after testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620802</commentid>
    <comment_count>6</comment_count>
      <attachid>141211</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-10 11:44:22 -0700</bug_when>
    <thetext>Created attachment 141211
updated patch for landing

This has some changes from previous version, but probably not enough to need new review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620835</commentid>
    <comment_count>7</comment_count>
      <attachid>141211</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 12:12:03 -0700</bug_when>
    <thetext>Comment on attachment 141211
updated patch for landing

Rejecting attachment 141211 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:
nk #5 succeeded at 679 (offset 14 lines).
Hunk #6 FAILED at 871.
1 out of 6 hunks FAILED -- saving rejects to file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj.rej
patching file Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.html
patching file Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm

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

Full output: http://queues.webkit.org/results/12647971</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620909</commentid>
    <comment_count>8</comment_count>
      <attachid>141241</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-10 13:40:43 -0700</bug_when>
    <thetext>Created attachment 141241
updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621061</commentid>
    <comment_count>9</comment_count>
      <attachid>141241</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 15:33:37 -0700</bug_when>
    <thetext>Comment on attachment 141241
updated to ToT

Rejecting attachment 141241 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:
 error: conversion from &apos;WebCore::CachedResourceHandle&lt;WebCore::CachedShader&gt;&apos; to non-scalar type &apos;WebCore::CachedResourceLoader&apos; requested
Source/WebCore/css/WebKitCSSShaderValue.cpp:62: error: could not convert &apos;cachedShader&apos; to &apos;bool&apos;
Source/WebCore/css/WebKitCSSShaderValue.cpp:63: error: &apos;class WebCore::CachedResourceLoader&apos; has no member named &apos;get&apos;
make: *** [out/Debug/obj.target/webcore_remaining/Source/WebCore/css/WebKitCSSShaderValue.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/12655995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621062</commentid>
    <comment_count>10</comment_count>
      <attachid>141280</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-10 15:35:36 -0700</bug_when>
    <thetext>Created attachment 141280
with chromium typo fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621210</commentid>
    <comment_count>11</comment_count>
      <attachid>141280</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 19:30:43 -0700</bug_when>
    <thetext>Comment on attachment 141280
with chromium typo fix

Clearing flags on attachment: 141280

Committed r116719: &lt;http://trac.webkit.org/changeset/116719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621211</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 19:30:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141040</attachid>
            <date>2012-05-09 16:03:40 -0700</date>
            <delta_ts>2012-05-10 11:44:22 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>ResourceHandle2.txt</filename>
            <type>text/plain</type>
            <size>38032</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjU2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA1LTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIDNyZCBwYXJ0
eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUgY2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgVGhlIGZpeCBp
cyB0byB1c2UgQ2FjaGVSZXNvdXJjZUhhbmRsZSB0aHJvdWdob3V0IE1lbW9yeUNhY2hlLCB3aGlj
aCB3aWxsIGNlcnRhaW5seQorICAgICAgICBrZWVwIHRoZSByZXNvdXJjZSBhbGl2ZS4gQWxzbyBy
ZW1vdmVkIGVhcmxpZXIgZml4ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjYWNoZWRJbWFnZVNldCk6
CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
SW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDYWNoZTo6cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzTm93KToKKyAgICAg
ICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0TGlua1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RQcmVsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpzZXRQcnVuZUVuYWJsZWQpOgorCiAyMDEyLTA1LTA5ICBKb2NoZW4gRWlz
aW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdoZW4gY3JlYXRpbmcgYSBu
ZXcgcGFnZSBkdXJpbmcgYSBuYXZpZ2F0aW9uLCBwcmltZSB0aGUgaW5pdGlhbCBkb2N1bWVudCB3
aXRoIHRoZSBjb3JyZWN0IHJlZmVycmVyIHBvbGljeQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVNldFZhbHVlLmNwcAkocmV2aXNpb24gMTE2NTQwKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcg
QEAgU3R5bGVDYWNoZWRJbWFnZVNldCogQ1NTSW1hZ2VTZXRWYWx1ZTo6YwogICAgICAgICAvLyBh
bmQgYW55IENTUyB0cmFuc2Zvcm1zLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODE2OTgKICAgICAgICAgSW1hZ2VXaXRoU2NhbGUgaW1hZ2UgPSBiZXN0SW1hZ2VGb3JT
Y2FsZUZhY3RvcigpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChsb2FkZXItPmRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKGltYWdlLmltYWdlVVJMKSk7Ci0gICAgICAgIGlmIChDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0KSkgewor
ICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gbG9hZGVyLT5yZXF1ZXN0SW1h
Z2UocmVxdWVzdCkuZ2V0KCkpIHsKICAgICAgICAgICAgIG1faW1hZ2VTZXQgPSBTdHlsZUNhY2hl
ZEltYWdlU2V0OjpjcmVhdGUoY2FjaGVkSW1hZ2UsIGltYWdlLnNjYWxlRmFjdG9yLCB0aGlzKTsK
ICAgICAgICAgICAgIG1fYWNjZXNzZWRCZXN0Rml0SW1hZ2UgPSB0cnVlOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMTY1NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDcgKzgyLDcgQEAgU3R5bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSQog
ICAgICAgICBtX2FjY2Vzc2VkSW1hZ2UgPSB0cnVlOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSk7Ci0gICAgICAg
IGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1
ZXN0KSkKKyAgICAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGxvYWRlci0+cmVx
dWVzdEltYWdlKHJlcXVlc3QpLmdldCgpKQogICAgICAgICAgICAgbV9pbWFnZSA9IFN0eWxlQ2Fj
aGVkSW1hZ2U6OmNyZWF0ZShjYWNoZWRJbWFnZSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkocmV2aXNpb24gMTE2NTQwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoCiAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgp
LT5jb21wbGV0ZVVSTChocmVmKSk7CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgICAgICAgICBpZiAo
bV9pc1hTTCkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdFhTTFN0eWxlU2hlZXQocmVxdWVzdCk7CisgICAg
ICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHJlcXVlc3QpLmdldCgpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaAogICAgICAgICAgICAgICAgIGlmIChjaGFy
c2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGRvY3VtZW50KCkt
PmNoYXJzZXQoKTsKIAotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgp
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVTaGVldChyZXF1ZXN0LCBj
aGFyc2V0KTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdENTU1N0eWxlU2hlZXQocmVxdWVzdCwgY2hhcnNl
dCkuZ2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkK
ICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQodGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAxMTY1NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3
ICs1MzUsNiBAQCB2b2lkIFBhZ2VDYWNoZTo6cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzCiAgICAg
bV9hdXRvcmVsZWFzZVRpbWVyLnN0b3AoKTsKIAogICAgIC8vIFBvc3Rwb25lIGRlYWQgcHJ1bmlu
ZyB1bnRpbCBhbGwgb3VyIHJlc291cmNlcyBoYXZlIGdvbmUgZGVhZC4KLSAgICBib29sIHBydW5l
V2FzRW5hYmxlZCA9IG1lbW9yeUNhY2hlKCktPnBydW5lRW5hYmxlZCgpOwogICAgIG1lbW9yeUNh
Y2hlKCktPnNldFBydW5lRW5hYmxlZChmYWxzZSk7CiAKICAgICBDYWNoZWRQYWdlU2V0IHRtcDsK
QEAgLTU0NiwxMCArNTQ1LDggQEAgdm9pZCBQYWdlQ2FjaGU6OnJlbGVhc2VBdXRvcmVsZWFzZWRQ
YWdlcwogICAgICAgICAoKml0KS0+ZGVzdHJveSgpOwogCiAgICAgLy8gTm93IGRvIHRoZSBwcnVu
ZS4KLSAgICBpZiAocHJ1bmVXYXNFbmFibGVkKSB7Ci0gICAgICAgIG1lbW9yeUNhY2hlKCktPnNl
dFBydW5lRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cHJ1bmUoKTsKLSAg
ICB9CisgICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1bmVFbmFibGVkKHRydWUpOworICAgIG1lbW9y
eUNhY2hlKCktPnBydW5lKCk7CiB9CiAKIHZvaWQgUGFnZUNhY2hlOjphdXRvcmVsZWFzZShQYXNz
UmVmUHRyPENhY2hlZFBhZ2U+IHBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAJKHJldmlzaW9uIDExNjU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEltYWdl
TG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAKICAgICAvLyBEbyBub3QgbG9hZCBhbnkgaW1h
Z2UgaWYgdGhlICdzcmMnIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIG9yIGlmIGl0IGlzCiAgICAgLy8g
YW4gZW1wdHkgc3RyaW5nLgotICAgIENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDA7CisgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG5ld0ltYWdlID0gMDsKICAgICBpZiAoIWF0
dHIuaXNOdWxsKCkgJiYgIXN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyKS5p
c0VtcHR5KCkpIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHNvdXJjZVVSSShhdHRyKSkpOwogCkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAg
ICAgICAgbmV3SW1hZ2UgPSBuZXcgQ2FjaGVkSW1hZ2UocmVxdWVzdCk7CiAgICAgICAgICAgICBu
ZXdJbWFnZS0+c2V0TG9hZGluZyh0cnVlKTsKICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRPd25p
bmdDYWNoZWRSZXNvdXJjZUxvYWRlcihkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7
Ci0gICAgICAgICAgICBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+bV9kb2N1bWVu
dFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgpLCBuZXdJbWFnZSk7CisgICAgICAgICAgICBk
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+bV9kb2N1bWVudFJlc291cmNlcy5zZXQo
bmV3SW1hZ2UtPnVybCgpLCBuZXdJbWFnZS5nZXQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMoYXV0b0xvYWRPdGhlcklt
YWdlcyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmV3SW1hZ2UgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdEltYWdlKHJlcXVlc3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHJldmlzaW9uIDExNjU0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3Qg
S1VSTCYgdQogICAgIH0KIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
ZUxvYWRlciA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIG1fY2FjaGVk
Q3VlRGF0YSA9IHN0YXRpY19jYXN0PENhY2hlZFRleHRUcmFjayo+KGNhY2hlZFJlc291cmNlTG9h
ZGVyLT5yZXF1ZXN0VGV4dFRyYWNrKGN1ZVJlcXVlc3QpKTsKKyAgICBtX2NhY2hlZEN1ZURhdGEg
PSBzdGF0aWNfY2FzdDxDYWNoZWRUZXh0VHJhY2sqPihjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVx
dWVzdFRleHRUcmFjayhjdWVSZXF1ZXN0KS5nZXQoKSk7CiAgICAgaWYgKG1fY2FjaGVkQ3VlRGF0
YSkKICAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5hZGRDbGllbnQodGhpcyk7CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDExNjU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEs
NyBAQCBGcmFtZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmZyYW1lKCkgY29uCiAgICAgcmV0dXJu
IG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5mcmFtZSgpIDogMDsKIH0KIAotQ2FjaGVkSW1hZ2Uq
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChG
cmFtZSogZiA9IGZyYW1lKCkpIHsKICAgICAgICAgaWYgKGYtPmxvYWRlcigpLT5wYWdlRGlzbWlz
c2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSAhPSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpIHsK
QEAgLTE2MSwzNyArMTYxLDM3IEBAIENhY2hlZEltYWdlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQotICAgIENhY2hl
ZEltYWdlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKS5nZXQoKSkpOwogICAgIGlmIChhdXRvTG9h
ZEltYWdlcygpICYmIHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAg
ICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkp
OwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAotQ2FjaGVkRm9udCogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0NhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZEZvbnQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hl
ZEZvbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgcmVx
dWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDYWNoZWRGb250Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpGb250UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCkpLmdldCgpKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLUNhY2hl
ZFRleHRUcmFjayogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJhY2soUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNr
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFRleHRUcmFjayhSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFRleHRUcmFjayo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2UsIHJlcXVlc3Qs
IFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q2FjaGVkVGV4dFRyYWNrKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpUZXh0VHJhY2tSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCi1DYWNoZWRTaGFkZXIqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2hhZGVy
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNo
YWRlcj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTaGFkZXIqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNoYWRlclJlc291cmNlLCByZXF1ZXN0LCBTdHJp
bmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENhY2hlZFNoYWRlcio+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2hh
ZGVyUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCkpLmdldCgpKTsKIH0KICNlbmRpZgogCi1DYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgcmVxdWVzdCwgY2hhcnNldCwgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBwcmlvcml0eSkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpDU1NTdHlsZVNoZWV0LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCksIHByaW9yaXR5KS5nZXQoKSk7CiB9CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQq
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCitDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVz
ZXJDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0KQogewogICAgIEtVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJsKCkpOwogCkBAIC0yMDMsNDEgKzIwMywzNyBAQCBD
YWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlCiAgICAgaWYgKHVybC5zdHJp
bmcoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwogCi0g
ICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogdXNlclNoZWV0ID0gbmV3IENhY2hlZENTU1N0eWxlU2hl
ZXQocmVxdWVzdCwgY2hhcnNldCk7Ci0gICAgCi0gICAgYm9vbCBpbkNhY2hlID0gbWVtb3J5Q2Fj
aGUoKS0+YWRkKHVzZXJTaGVldCk7Ci0gICAgaWYgKCFpbkNhY2hlKQotICAgICAgICB1c2VyU2hl
ZXQtPnNldEluQ2FjaGUodHJ1ZSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NT
U3R5bGVTaGVldD4gdXNlclNoZWV0ID0gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdCwg
Y2hhcnNldCk7CiAKLSAgICB1c2VyU2hlZXQtPmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lw
U2VjdXJpdHlDaGVjaykpOworICAgIG1lbW9yeUNhY2hlKCktPmFkZCh1c2VyU2hlZXQuZ2V0KCkp
OworICAgIC8vIEZJWE1FOiBsb2FkUmVzb3VyY2UgY2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKSBpZiB0aGUgcmVzb3VyY2UgY291bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERv
ZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGNhbGwgaXQsIHRvbz8KIAotICAgIGlmICghaW5DYWNo
ZSkKLSAgICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKGZhbHNlKTsKKyAgICB1c2VyU2hlZXQt
PmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRG
b3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpOwogICAgIAogICAg
IHJldHVybiB1c2VyU2hlZXQ7CiB9CiAKLUNhY2hlZFNjcmlwdCogQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RTY3JpcHQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQq
PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgcmVxdWVzdCwgY2hhcnNl
dCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENhY2hlZFNjcmlwdCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0
LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgp
KTsKIH0KIAogI2lmIEVOQUJMRShYU0xUKQotQ2FjaGVkWFNMU3R5bGVTaGVldCogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFhTTFN0eWxlU2hlZXQ+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmluZygp
LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKSkuZ2V0KCkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1ZHKQotQ2FjaGVkU1ZH
RG9jdW1lbnQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1l
bnQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1bWVu
dCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwg
cmVxdWVzdCwgcmVxdWVzdC51cmwoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNWR0RvY3VtZW50Kj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0
LnVybCgpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0
eSkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewog
ICAgIEFTU0VSVChmcmFtZSgpKTsKICAgICBBU1NFUlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6
TGlua1ByZWZldGNoIHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXIgfHwg
dHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlKTsKQEAgLTI0NSw5ICsyNDEs
OSBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlCiB9CiAjZW5kaWYK
IAotQ2FjaGVkUmF3UmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVz
b3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSYXdSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OlJhd1Jlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgb3B0aW9ucywgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBmYWxzZSkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDYWNoZWRSYXdSZXNvdXJjZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3
UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0
eVVucmVzb2x2ZWQsIGZhbHNlKS5nZXQoKSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IEtVUkwmIHVybCkgY29uc3QKQEAgLTQxMCw3ICs0MDYsNyBAQCBib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNhY2hlZFJlc291
cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFBy
aW9yaXR5IHByaW9yaXR5LCBib29sIGZvclByZWxvYWQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBmb3JQcmVsb2FkKQogewogICAgIEtVUkwg
dXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAKQEAgLTQzNCwyNSArNDMwLDI1IEBAIENhY2hlZFJl
c291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmUKICAgICB9CiAKICAgICAvLyBTZWUgaWYg
d2UgY2FuIHVzZSBhbiBleGlzdGluZyByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KLSAgICBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTCh1cmwp
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IG1l
bW9yeUNhY2hlKCktPnJlc291cmNlRm9yVVJMKHVybCk7CiAKICAgICBpZiAocmVxdWVzdC51cmwo
KSAhPSB1cmwpCiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAKLSAgICBzd2l0Y2ggKGRl
dGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0LCBmb3JQcmVsb2FkLCByZXNv
dXJjZSkpIHsKKyAgICBzd2l0Y2ggKGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCBy
ZXF1ZXN0LCBmb3JQcmVsb2FkLCByZXNvdXJjZS5nZXQoKSkpIHsKICAgICBjYXNlIExvYWQ6CiAg
ICAgICAgIHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHBy
aW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWxvYWQ6Ci0gICAg
ICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hl
KCktPnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7CiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291
cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBSZXZhbGlkYXRlOgotICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRh
dGVSZXNvdXJjZShyZXNvdXJjZSwgcHJpb3JpdHksIG9wdGlvbnMpOworICAgICAgICByZXNvdXJj
ZSA9IHJldmFsaWRhdGVSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSwgcHJpb3JpdHksIG9wdGlvbnMp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVzZToKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+
cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7Ci0gICAgICAgIG5vdGlmeUxvYWRlZEZyb21NZW1v
cnlDYWNoZShyZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlc291cmNlQWNjZXNz
ZWQocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICBub3RpZnlMb2FkZWRGcm9tTWVtb3J5Q2FjaGUo
cmVzb3VyY2UuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ2Myw4ICs0NTks
OCBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlCiAgICAgbV9kb2N1
bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CiAgICAgcmV0dXJu
IHJlc291cmNlOwogfQotICAgIAotQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQorCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICBBU1NFUlQocmVzb3VyY2UtPmlu
Q2FjaGUoKSk7CkBAIC00NzUsMTMgKzQ3MSwxMyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlCiAgICAgLy8gQ29weSB0aGUgVVJMIG91dCBvZiB0aGUgcmVzb3VyY2Ug
dG8gYmUgcmV2YWxpZGF0ZWQgaW4gY2FzZSBpdCBnZXRzIGRlbGV0ZWQgYnkgdGhlIHJlbW92ZSgp
IGNhbGwgYmVsb3cuCiAgICAgU3RyaW5nIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICBib29s
IHVybFByb3RvY29sSXNEYXRhID0gcmVzb3VyY2UtPnVybCgpLnByb3RvY29sSXNEYXRhKCk7Ci0g
ICAgQ2FjaGVkUmVzb3VyY2UqIG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2Ut
PnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2Rpbmco
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNl
ID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2UtPnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNlUmVx
dWVzdCgpLCByZXNvdXJjZS0+ZW5jb2RpbmcoKSk7CiAgICAgCi0gICAgTE9HKFJlc291cmNlTG9h
ZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNl
LCByZXNvdXJjZSk7CisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0
ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNlLmdldCgpLCByZXNvdXJjZSk7CiAgICAg
bmV3UmVzb3VyY2UtPnNldFJlc291cmNlVG9SZXZhbGlkYXRlKHJlc291cmNlKTsKICAgICAKICAg
ICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UpOwotICAgIG1lbW9yeUNhY2hlKCktPmFk
ZChuZXdSZXNvdXJjZSk7CisgICAgbWVtb3J5Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlLmdldCgp
KTsKICAgICAKICAgICBuZXdSZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKICAg
ICBuZXdSZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKQEAgLTQ5MSwzOSArNDg3LDI2IEBA
IENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmUKICAgICByZXR1cm4gbmV3
UmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9h
ZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0
eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKCFtZW1vcnlDYWNo
ZSgpLT5yZXNvdXJjZUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CiAgICAgCiAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIkxvYWRpbmcgQ2FjaGVkUmVzb3VyY2UgZm9yICclcycuIiwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIAotICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQpOwotICAg
IAotICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9yeUNhY2hlKCktPmFkZChyZXNvdXJjZSk7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0gY3JlYXRlUmVz
b3VyY2UodHlwZSwgcmVxdWVzdCwgY2hhcnNldCk7CiAgICAgCi0gICAgLy8gUHJldGVuZCB0aGUg
cmVzb3VyY2UgaXMgaW4gdGhlIGNhY2hlLCB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGVsZXRl
ZCBkdXJpbmcgdGhlIGxvYWQoKSBjYWxsLgotICAgIC8vIEZJWE1FOiBDYWNoZWRSZXNvdXJjZSBz
aG91bGQganVzdCB1c2Ugbm9ybWFsIHJlZmNvdW50aW5nIGluc3RlYWQuCi0gICAgaWYgKCFpbkNh
Y2hlKQotICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZSh0cnVlKTsKKyAgICBib29sIGluQ2Fj
aGUgPSBtZW1vcnlDYWNoZSgpLT5hZGQocmVzb3VyY2UuZ2V0KCkpOwogICAgIAogICAgIHJlc291
cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwotICAgIAotICAgIGJvb2wgd2FzUHJ1bmVF
bmFibGVkID0gbWVtb3J5Q2FjaGUoKS0+cHJ1bmVFbmFibGVkKCk7Ci0gICAgbWVtb3J5Q2FjaGUo
KS0+c2V0UHJ1bmVFbmFibGVkKGZhbHNlKTsKICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRp
b25zKTsKLSAgICBtZW1vcnlDYWNoZSgpLT5zZXRQcnVuZUVuYWJsZWQod2FzUHJ1bmVFbmFibGVk
KTsKICAgICAKLSAgICBpZiAoIWluQ2FjaGUpIHsKKyAgICBpZiAoIWluQ2FjaGUpCiAgICAgICAg
IHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsKLSAgICAgICAg
cmVzb3VyY2UtPnNldEluQ2FjaGUoZmFsc2UpOwotICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHN1
cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVy
ZS4KICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoaW5D
YWNoZSkKLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZTsKKyAgICAgICAgICAgIG1lbW9y
eUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIApAQCAtNzgxLDE0ICs3NjQsMTQgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFByZWxvYQogICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlw
ZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCkKICAgICAgICAgZW5jb2RpbmcgPSBj
aGFyc2V0LmlzRW1wdHkoKSA/IG1fZG9jdW1lbnQtPmNoYXJzZXQoKSA6IGNoYXJzZXQ7CiAKLSAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVz
dCwgZW5jb2RpbmcsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2Fk
UHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsKLSAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxv
YWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5zKHJlc291cmNlKSkpCisgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUs
IHJlcXVlc3QsIGVuY29kaW5nLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIFJlc291
cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgdHJ1ZSk7CisgICAgaWYgKCFyZXNvdXJjZSB8fCAo
bV9wcmVsb2FkcyAmJiBtX3ByZWxvYWRzLT5jb250YWlucyhyZXNvdXJjZS5nZXQoKSkpKQogICAg
ICAgICByZXR1cm47CiAgICAgcmVzb3VyY2UtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAg
ICBpZiAoIW1fcHJlbG9hZHMpCiAgICAgICAgIG1fcHJlbG9hZHMgPSBhZG9wdFB0cihuZXcgTGlz
dEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPik7Ci0gICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNl
KTsKKyAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2UuZ2V0KCkpOwogCiAjaWYgUFJFTE9BRF9E
RUJVRwogICAgIHByaW50ZigiUFJFTE9BRElORyAlc1xuIiwgIHJlc291cmNlLT51cmwoKS5sYXRp
bjEoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDExNjU0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MywyNyArNjMsMjcgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKERvY3Vt
ZW50Kik7CiAgICAgfkNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKLSAgICBDYWNoZWRJbWFnZSog
cmVxdWVzdEltYWdlKFJlc291cmNlUmVxdWVzdCYpOwotICAgIENhY2hlZENTU1N0eWxlU2hlZXQq
IHJlcXVlc3RDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2
ZWQpOwotICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwotICAgIENhY2hlZFNjcmlw
dCogcmVxdWVzdFNjcmlwdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQp
OwotICAgIENhY2hlZEZvbnQqIHJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYpOwotICAgIENh
Y2hlZFJhd1Jlc291cmNlKiByZXF1ZXN0UmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkSW1hZ2U+IHJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiByZXF1ZXN0Q1NTU3R5bGVTaGVldChSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiByZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHQoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBy
ZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcmVxdWVzdFJhd1Jlc291cmNlKFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBDYWNo
ZWRTVkdEb2N1bWVudCogcmVxdWVzdFNWR0RvY3VtZW50KFJlc291cmNlUmVxdWVzdCYpOworICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50PiByZXF1ZXN0U1ZHRG9jdW1l
bnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoWFNMVCkKLSAgICBDYWNo
ZWRYU0xTdHlsZVNoZWV0KiByZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRYU0xTdHlsZVNoZWV0PiByZXF1ZXN0WFNM
U3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQotICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJl
c291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJp
b3JpdHlVbnJlc29sdmVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBD
YWNoZWRUZXh0VHJhY2sqIHJlcXVlc3RUZXh0VHJhY2soUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPiByZXF1ZXN0VGV4dFRyYWNrKFJl
c291cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIENh
Y2hlZFNoYWRlciogcmVxdWVzdFNoYWRlcihSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFkZXI+IHJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0
Jik7CiAjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRo
ZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KQEAgLTExOSw5ICsxMTksOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJM
JiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAogcHJpdmF0ZToKLSAgICBDYWNoZWRS
ZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVk
LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKLSAgICBDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0
ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYpOwotICAgIENhY2hlZFJlc291cmNlKiBsb2FkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYp
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFs
c2UpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRl
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgdm9pZCByZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKIAog
ICAgIGVudW0gUmV2YWxpZGF0aW9uUG9saWN5IHsgVXNlLCBSZXZhbGlkYXRlLCBSZWxvYWQsIExv
YWQgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCShy
ZXZpc2lvbiAxMTY1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGV2aWN0UmVzb3VyY2VzKCk7CiAgICAgCiAgICAgdm9pZCBzZXRQcnVuZUVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fcHJ1bmVFbmFibGVkID0gZW5hYmxlZDsgfQotICAgIGJvb2wgcHJ1bmVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcnVuZUVuYWJsZWQ7IH0KICAgICB2b2lkIHBydW5lKCk7
CiAgICAgdm9pZCBwcnVuZVRvUGVyY2VudGFnZShmbG9hdCB0YXJnZXRQZXJjZW50TGl2ZSk7CiAK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExNjU2NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEyLTA1LTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIENyYXNoIGluIDNyZCBwYXJ0eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUg
Y2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NjAyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0
ZXN0IHRoYXQncyB2ZXJ5IHNpbWlsYXIgdG8gTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLAorICAgICAgICBidXQgZm9yIGRpc2FibGluZyB0aGUgY2FjaGUgaW5zdGVh
ZCBvZiB0cmlnZ2VyaW5nIGEgcHJ1bmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAgICAg
ICgtW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3Omlk
ZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpmcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1b
TWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3Vy
Y2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6Cisg
ICAgICAgICgtW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJW
aWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVz
b3VyY2U6ZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEy
LTA1LTA5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZSBkdXJpbmcgYSBuYXZpZ2F0aW9uLCBwcmltZSB0aGUg
aW5pdGlhbCBkb2N1bWVudCB3aXRoIHRoZSBjb3JyZWN0IHJlZmVycmVyIHBvbGljeQpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExNjU0MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNiArMTQxLDggQEAKIAkJQzUwN0U4QTcxNEM2NTQ1QjAwNUQ2QjNCIC8qIElu
c3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07CiAJ
CUM1NDBGNzc2MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzc1MTUyRTREQTAwMEE0
MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSAqLzsgfTsKIAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQw
QzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9z
ZU1hcmt1cC5odG1sICovOyB9OworCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMg
LyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07
CisJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFNDkw
Mjk2ODE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTAyOTY3MTRFMkUzQTQwMDJCRURE
MSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICovOyB9OwogCQlGM0ZDM0VFMzEzNjc4QjczMDAxMjZB
NjUgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovOyB9Owog
CQlGNkYzRjI5MTEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYzRjI5MDEzMzQyRkVCMDBB
NkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgKi87IH07CkBAIC0xNzgsNiArMTgwLDcgQEAKIAkJ
CQlCNTVGMTFCNzE1MTdEMDMzMDA5MTU5MTYgLyogYXR0cmlidXRlZFN0cmluZ0N1c3RvbUZvbnQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQg
LyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
MTQyQjI3MzE1MTdDOEM4MDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCisJCQkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9y
eUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJNTE3RTdFMDQxNTExMTlDMTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1
bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTMzREM4OTEyMTQxOTU1RkUwMDc0N0VGNyAvKiBzaW1w
bGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zNTQsNiArMzU3LDggQEAK
IAkJQzUwN0U4QTYxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJhci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3BlY3RvckJhci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5
TWFya3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxp
ZnlNYXJrdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDBGNzgzMTUyRTVB
NzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUx
MjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQw
MDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVHlwaW5nU3R5bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRo
ID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjZG
M0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29va2llTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NDAsNiArNjQ1LDcgQEAKIAkJCQkzNzc2QkM2MjE1MDk0NkJDMDA0
M0E2NkQgLyogRGV2aWNlU2NhbGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMubW0gKi8sCiAJCQkJ
OTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICov
LAogCQkJCUM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi8sCisJ
CQkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAv
KiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJ
MzcyMkM4NjgxNDYxRTAzRTAwQzQ1RDAwIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9NUmFuZ2UubW0g
Ki8sCiAJCQkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFya3VwLm1tICov
LApAQCAtNjU5LDggKzY2NSw5IEBACiAJCQkJMzc5MDI4QjgxNEZBQkU0OTAwN0U2QjQzIC8qIGFj
Y2VwdHNGaXJzdE1vdXNlLmh0bWwgKi8sCiAJCQkJNTE0MkIyNzIxNTE3Qzg5MTAwQzMyQjE5IC8q
IENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sICovLAogCQkJCTM3REM2NzhGMTQwRDdEM0EwMEFC
Q0NEQiAvKiBET01SYW5nZU9mU3RyaW5nLmh0bWwgKi8sCi0JCQkJQzA3RTZDQjExM0ZENzM4QTAw
MzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKKwkJCQlFMTIyMERDOTE1NUIyODdE
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aHRtbCAqLywKIAkJCQk1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVu
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8sCisJCQkJQzA3RTZDQjExM0ZENzM4
QTAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKIAkJCQlDNTQwRjc4MzE1MkU1
QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJKTsKIAkJCW5hbWUgPSBS
ZXNvdXJjZXM7CkBAIC04NjQsNiArODcxLDcgQEAKIAkJCQk1MUZDRjc5QTE1MzRBQzZEMDAxMDQ0
OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2Vu
ZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxMjIwREEwMTU1QjI1NDgwMDEz
RTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPHNjcmlwdD4KKworZnVuY3Rp
b24gbG9hZGVkKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgIHJlcXVlc3Qub3BlbignR0VUJywgJ2h0dHA6Ly93d3cuaWFuYS5vcmcvZG9tYWlucy9leGFt
cGxlLycsIHRydWUpOworICAgIHJlcXVlc3Quc2VuZChudWxsKTsKK30KKworPC9zY3JpcHQ+CisK
Kzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1dlIHdpbGwgZG8gc29tZSBYSFInaW5nIG5vdyEK
KzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZp
c2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViQ2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VM
b2FkRGVsZWdhdGUgOiBOU09iamVjdCB7Cit9CitAZW5kCisKK3N0YXRpYyBib29sIGRpZEZpbmlz
aExvYWQ7CisKK0BpbXBsZW1lbnRhdGlvbiBNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VM
b2FkRGVsZWdhdGUKKworLSAoaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBpZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZnJvbURhdGFTb3VyY2U6
KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVk
OllFU107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOk5PXTsKKworICAgIHJldHVybiBzZWxm
OworfQorCistIChOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJlc291
cmNlOihpZClpZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZSBmcm9t
RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKK3sKKyAgICBbV2ViQ2FjaGUg
c2V0RGlzYWJsZWQ6WUVTXTsKKyAgICBbV2ViQ2FjaGUgc2V0RGlzYWJsZWQ6Tk9dOworCisgICAg
cmV0dXJuIHJlcXVlc3Q7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBy
ZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2U6KFdl
YkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOllF
U107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOk5PXTsKKworICAgIGRpZEZpbmlzaExvYWQg
PSBZRVM7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciByZXNvdXJjZToo
aWQpaWRlbnRpZmllciBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIGZy
b21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQoreworICAgIFtXZWJDYWNo
ZSBzZXREaXNhYmxlZDpZRVNdOworICAgIFtXZWJDYWNoZSBzZXREaXNhYmxlZDpOT107Cit9CisK
K0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdDEsIE1lbW9y
eUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlKQoreworICAgIE5TQXV0b3Jl
bGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisKKyAg
ICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91
cE5hbWU6bmlsXSk7CisKKyAgICBSZXRhaW5QdHI8TWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZShBZG9wdE5TLCBbW01lbW9yeUNh
Y2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHdl
YlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5n
ZXQoKTsKKworICAgIFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAIk1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICAKKyAgICBbcG9vbCBk
cmFpbl07CisgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFzaGluZywgdGhlIHRlc3Qg
cGFzc2VkLgorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCg==
</data>
<flag name="review"
          id="147107"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="147120"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141211</attachid>
            <date>2012-05-10 11:44:22 -0700</date>
            <delta_ts>2012-05-10 13:40:43 -0700</delta_ts>
            <desc>updated patch for landing</desc>
            <filename>ResourceHandle3.txt</filename>
            <type>text/plain</type>
            <size>39454</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjY2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA1LTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIDNyZCBwYXJ0
eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUgY2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgQWRkZWQgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgVGhlIGZpeCBp
cyB0byB1c2UgQ2FjaGVkUmVzb3VyY2VIYW5kbGUgdGhyb3VnaG91dCBNZW1vcnlDYWNoZSwgd2hp
Y2ggd2lsbCBjZXJ0YWlubHkKKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgYWxpdmUuIEFsc28g
cmVtb3ZlZCBlYXJsaWVyIGZpeGVzLgorCisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUu
Y3BwOiAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1hZ2VTZXQpOgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDogKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hl
ZEltYWdlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOiAoV2ViQ29y
ZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNoYWRlcik6CisgICAgICAgICogaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwOiAoV2ViQ29yZTo6UGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2Vk
UGFnZXNOb3cpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6IChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwOiAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RMaW5rUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSYXdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNldFBy
dW5lRW5hYmxlZCk6CisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlOjpDYWNoZWRSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZTo6b3Bl
cmF0b3I9KToKKyAgICAgICAgVGVhY2ggQ2FjaGVkUmVzb3VyY2VIYW5kbGUgaG93IHRvIG1ha2Ug
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGZyb20KKyAgICAgICAgYSBoYW5k
bGUgdG8gc3ViY2xhc3MuCisKIDIwMTItMDUtMTAgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lZCBydW4tYmluZGluZ3Mt
dGVzdHMgcmVzdWx0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHAJKHJldmlzaW9uIDExNjU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDggKzEwNiw4IEBAIFN0eWxlQ2FjaGVkSW1h
Z2VTZXQqIENTU0ltYWdlU2V0VmFsdWU6OmMKICAgICAgICAgLy8gYW5kIGFueSBDU1MgdHJhbnNm
b3Jtcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjk4CiAgICAg
ICAgIEltYWdlV2l0aFNjYWxlIGltYWdlID0gYmVzdEltYWdlRm9yU2NhbGVGYWN0b3IoKTsKICAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChpbWFnZS5pbWFnZVVSTCkpOwotICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gbG9hZGVyLT5yZXF1ZXN0SW1hZ2UocmVxdWVzdCkpIHsKLSAgICAgICAgICAgIG1faW1h
Z2VTZXQgPSBTdHlsZUNhY2hlZEltYWdlU2V0OjpjcmVhdGUoY2FjaGVkSW1hZ2UsIGltYWdlLnNj
YWxlRmFjdG9yLCB0aGlzKTsKKyAgICAgICAgaWYgKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBjYWNoZWRJbWFnZSA9IGxvYWRlci0+cmVxdWVzdEltYWdlKHJlcXVlc3QpKSB7Cisg
ICAgICAgICAgICBtX2ltYWdlU2V0ID0gU3R5bGVDYWNoZWRJbWFnZVNldDo6Y3JlYXRlKGNhY2hl
ZEltYWdlLmdldCgpLCBpbWFnZS5zY2FsZUZhY3RvciwgdGhpcyk7CiAgICAgICAgICAgICBtX2Fj
Y2Vzc2VkQmVzdEZpdEltYWdlID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDExNjU0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIs
OCBAQCBTdHlsZUNhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpjYWNoZWRJCiAgICAgICAgIG1f
YWNjZXNzZWRJbWFnZSA9IHRydWU7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
bG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpKTsKLSAgICAgICAgaWYgKENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSA9IGxvYWRlci0+cmVxdWVzdEltYWdlKHJlcXVlc3QpKQotICAg
ICAgICAgICAgbV9pbWFnZSA9IFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0ZShjYWNoZWRJbWFnZSk7
CisgICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gY2FjaGVkSW1h
Z2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0KSkKKyAgICAgICAgICAgIG1faW1hZ2Ug
PSBTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoY2FjaGVkSW1hZ2UuZ2V0KCkpOwogICAgIH0KIAog
ICAgIHJldHVybiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pc0NhY2hlZEltYWdlKCkpID8gc3RhdGlj
X2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KG1faW1hZ2UuZ2V0KCkpIDogMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAkocmV2aXNpb24gMTE2NTQw
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQCBTdHlsZUNhY2hlZFNoYWRlciogV2ViS2l0Q1NTU2hh
ZGVyVmFsdWU6CiAgICAgICAgIG1fYWNjZXNzZWRTaGFkZXIgPSB0cnVlOwogCiAgICAgICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91
cmwpKTsKLSAgICAgICAgaWYgKENhY2hlZFNoYWRlciogY2FjaGVkU2hhZGVyID0gbG9hZGVyLT5y
ZXF1ZXN0U2hhZGVyKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9zaGFkZXIgPSBTdHlsZUNhY2hl
ZFNoYWRlcjo6Y3JlYXRlKGNhY2hlZFNoYWRlcik7CisgICAgICAgIGlmIChDYWNoZWRSZXNvdXJj
ZUxvYWRlcjxDYWNoZWRTaGFkZXI+IGNhY2hlZFNoYWRlciA9IGxvYWRlci0+cmVxdWVzdFNoYWRl
cihyZXF1ZXN0KSkKKyAgICAgICAgICAgIG1fc2hhZGVyID0gU3R5bGVDYWNoZWRTaGFkZXI6OmNy
ZWF0ZShjYWNoZWRTaGFkZXIuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiAobV9zaGFkZXIg
JiYgbV9zaGFkZXItPmlzQ2FjaGVkU2hhZGVyKCkpID8gc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRT
aGFkZXIqPihtX3NoYWRlci5nZXQoKSkgOiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcAkocmV2aXNpb24gMTE2NTQwKQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9Q
YWdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDYgQEAgdm9pZCBQYWdl
Q2FjaGU6OnJlbGVhc2VBdXRvcmVsZWFzZWRQYWdlcwogICAgIG1fYXV0b3JlbGVhc2VUaW1lci5z
dG9wKCk7CiAKICAgICAvLyBQb3N0cG9uZSBkZWFkIHBydW5pbmcgdW50aWwgYWxsIG91ciByZXNv
dXJjZXMgaGF2ZSBnb25lIGRlYWQuCi0gICAgYm9vbCBwcnVuZVdhc0VuYWJsZWQgPSBtZW1vcnlD
YWNoZSgpLT5wcnVuZUVuYWJsZWQoKTsKICAgICBtZW1vcnlDYWNoZSgpLT5zZXRQcnVuZUVuYWJs
ZWQoZmFsc2UpOwogCiAgICAgQ2FjaGVkUGFnZVNldCB0bXA7CkBAIC01NDYsMTAgKzU0NSw4IEBA
IHZvaWQgUGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2VkUGFnZXMKICAgICAgICAgKCppdCkt
PmRlc3Ryb3koKTsKIAogICAgIC8vIE5vdyBkbyB0aGUgcHJ1bmUuCi0gICAgaWYgKHBydW5lV2Fz
RW5hYmxlZCkgewotICAgICAgICBtZW1vcnlDYWNoZSgpLT5zZXRQcnVuZUVuYWJsZWQodHJ1ZSk7
Ci0gICAgICAgIG1lbW9yeUNhY2hlKCktPnBydW5lKCk7Ci0gICAgfQorICAgIG1lbW9yeUNhY2hl
KCktPnNldFBydW5lRW5hYmxlZCh0cnVlKTsKKyAgICBtZW1vcnlDYWNoZSgpLT5wcnVuZSgpOwog
fQogCiB2b2lkIFBhZ2VDYWNoZTo6YXV0b3JlbGVhc2UoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBw
YWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAx
MTY1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQogCiAgICAgLy8gRG8gbm90IGxvYWQgYW55IGltYWdlIGlmIHRoZSAnc3JjJyBhdHRy
aWJ1dGUgaXMgbWlzc2luZyBvciBpZiBpdCBpcwogICAgIC8vIGFuIGVtcHR5IHN0cmluZy4KLSAg
ICBDYWNoZWRJbWFnZSogbmV3SW1hZ2UgPSAwOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEltYWdlPiBuZXdJbWFnZSA9IDA7CiAgICAgaWYgKCFhdHRyLmlzTnVsbCgpICYmICFzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cikuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21w
bGV0ZVVSTChzb3VyY2VVUkkoYXR0cikpKTsKIApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSW1h
Z2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIG5ld0ltYWdlID0gbmV3
IENhY2hlZEltYWdlKHJlcXVlc3QpOwogICAgICAgICAgICAgbmV3SW1hZ2UtPnNldExvYWRpbmco
dHJ1ZSk7CiAgICAgICAgICAgICBuZXdJbWFnZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpOwotICAgICAgICAgICAgZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPm1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KG5ld0lt
YWdlLT51cmwoKSwgbmV3SW1hZ2UpOworICAgICAgICAgICAgZG9jdW1lbnQtPmNhY2hlZFJlc291
cmNlTG9hZGVyKCktPm1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3
SW1hZ2UuZ2V0KCkpOwogICAgICAgICAgICAgZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPnNldEF1dG9Mb2FkSW1hZ2VzKGF1dG9Mb2FkT3RoZXJJbWFnZXMpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPnJlcXVlc3RJbWFnZShyZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiAxMTY1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHUKICAgICB9CiAKICAg
ICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBtX2NhY2hlZEN1ZURhdGEgPSBzdGF0aWNfY2Fz
dDxDYWNoZWRUZXh0VHJhY2sqPihjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFRleHRUcmFj
ayhjdWVSZXF1ZXN0KSk7CisgICAgbV9jYWNoZWRDdWVEYXRhID0gY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPnJlcXVlc3RUZXh0VHJhY2soY3VlUmVxdWVzdCk7CiAgICAgaWYgKG1fY2FjaGVkQ3VlRGF0
YSkKICAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5hZGRDbGllbnQodGhpcyk7CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaAkocmV2aXNpb24gMTE2NTQwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlKCkgeyB9CiAg
ICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlKFIqIHJlcykgOiBDYWNoZWRSZXNvdXJjZUhhbmRs
ZUJhc2UocmVzKSB7IH0KICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGUoY29uc3QgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Uj4mIG8pIDogQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKG8pIHsgfQor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBDYWNoZWRSZXNvdXJjZUhhbmRsZShjb25zdCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxVPiYgbykgOiBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2Uoby5n
ZXQoKSkgeyB9CiAKICAgICAgICAgUiogZ2V0KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxSKj4oQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjpnZXQoKSk7IH0KICAgICAgICAgUiog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAgICAgICAgICAgICAKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGUmIG9wZXJhdG9yPShSKiByZXMpIHsgc2V0UmVzb3Vy
Y2UocmVzKTsgcmV0dXJuICp0aGlzOyB9IAogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSYg
b3BlcmF0b3I9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlJiBvKSB7IHNldFJlc291cmNlKG8u
Z2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxV
PiYgbykgeyBzZXRSZXNvdXJjZShvLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CisKICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3Qg
eyByZXR1cm4gZ2V0KCkgPT0gby5nZXQoKTsgfQogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlJiBvKSBjb25zdCB7IHJldHVybiBnZXQoKSAhPSBv
LmdldCgpOyB9CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTE2NTQwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIEZyYW1lKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZnJhbWUoKSBjb24KICAgICByZXR1cm4gbV9kb2N1bWVudCA/IG1fZG9jdW1lbnQtPmZyYW1lKCkg
OiAwOwogfQogCi1DYWNoZWRJbWFnZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFn
ZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJ
bWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewogICAgICAgICBpZiAo
Zi0+bG9hZGVyKCktPnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCgpICE9IEZyYW1l
TG9hZGVyOjpOb0Rpc21pc3NhbCkgewpAQCAtMTYxLDM3ICsxNjEsMzcgQEAgQ2FjaGVkSW1hZ2Uq
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgQ2FjaGVkSW1hZ2UqIHJlc291cmNlID0gc3RhdGljX2Nhc3Q8Q2Fj
aGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVzb3VyY2Uoc3RhdGljX2Nhc3Q8
Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdl
dCgpKSk7CiAgICAgaWYgKGF1dG9Mb2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2Ut
PnN0aWxsTmVlZHNMb2FkKCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCi1DYWNo
ZWRGb250KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6Rm9udFJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5n
KCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotQ2FjaGVkVGV4dFRyYWNrKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFRleHRUcmFjayhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRUZXh0VHJhY2s+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VGV4
dFRyYWNrKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q2FjaGVkVGV4dFRyYWNrKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUZXh0
VHJhY2tSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRUZXh0VHJhY2sqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlRleHRUcmFja1Jlc291cmNlLCByZXF1ZXN0LCBT
dHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKS5nZXQoKSk7CiB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKLUNhY2hlZFNoYWRlciogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2hhZGVyPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFNoYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PENhY2hlZFNoYWRlcio+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2hhZGVy
UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkU2hhZGVyKj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpTaGFkZXJSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogI2VuZGlmCiAKLUNhY2hl
ZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVl
dChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NT
dHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9h
ZFByaW9yaXR5IHByaW9yaXR5KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRDU1NT
dHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9y
aXR5KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIHJlcXVlc3QsIGNoYXJz
ZXQsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgcHJpb3JpdHkpLmdldCgpKTsKIH0K
IAotQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2Vy
Q1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiB7CiAgICAgS1VSTCB1cmwgPSBNZW1vcnlD
YWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC51cmwoKSk7CiAK
QEAgLTIwMyw0MSArMjAzLDM3IEBAIENhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNl
TG9hZGUKICAgICBpZiAodXJsLnN0cmluZygpICE9IHJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJl
cXVlc3Quc2V0VVJMKHVybCk7CiAKLSAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiB1c2VyU2hlZXQg
PSBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChyZXF1ZXN0LCBjaGFyc2V0KTsKLSAgICAKLSAgICBi
b29sIGluQ2FjaGUgPSBtZW1vcnlDYWNoZSgpLT5hZGQodXNlclNoZWV0KTsKLSAgICBpZiAoIWlu
Q2FjaGUpCi0gICAgICAgIHVzZXJTaGVldC0+c2V0SW5DYWNoZSh0cnVlKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiB1c2VyU2hlZXQgPSBuZXcgQ2FjaGVk
Q1NTU3R5bGVTaGVldChyZXF1ZXN0LCBjaGFyc2V0KTsKIAotICAgIHVzZXJTaGVldC0+bG9hZCh0
aGlzLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRl
bnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3Nz
T3JpZ2luQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrKSk7CisgICAgbWVtb3J5Q2FjaGUo
KS0+YWRkKHVzZXJTaGVldC5nZXQoKSk7CisgICAgLy8gRklYTUU6IGxvYWRSZXNvdXJjZSBjYWxs
cyBzZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigpIGlmIHRoZSByZXNvdXJjZSBjb3VsZG4n
dCBiZSBhZGRlZCB0byBjYWNoZS4gRG9lcyB0aGlzIGZ1bmN0aW9uIG5lZWQgdG8gY2FsbCBpdCwg
dG9vPwogCi0gICAgaWYgKCFpbkNhY2hlKQotICAgICAgICB1c2VyU2hlZXQtPnNldEluQ2FjaGUo
ZmFsc2UpOworICAgIHVzZXJTaGVldC0+bG9hZCh0aGlzLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMo
RG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVk
Q3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIFNraXBTZWN1
cml0eUNoZWNrKSk7CiAgICAgCiAgICAgcmV0dXJuIHVzZXJTaGVldDsKIH0KIAotQ2FjaGVkU2Ny
aXB0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdChSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFNjcmlwdD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PENhY2hlZFNjcmlwdCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
U2NyaXB0LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0Kj4ocmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpTY3JpcHQsIHJlcXVlc3QsIGNoYXJzZXQsIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogCiAjaWYgRU5BQkxFKFhTTFQpCi1DYWNoZWRY
U0xTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFhTTFN0eWxlU2hlZXQo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkWFNM
U3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVk
WFNMU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVT
aGVldCwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRYU0xTdHlsZVNoZWV0Kj4ocmVxdWVzdFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0LCByZXF1ZXN0LCBTdHJpbmcoKSwg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKS5nZXQoKSk7CiB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTVkcpCi1DYWNoZWRTVkdEb2N1bWVudCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RTVkdEb2N1bWVudChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RT
VkdEb2N1bWVudChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENhY2hlZFNWR0RvY3VtZW50Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpTVkdEb2N1bWVudFJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpLCBkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkU1ZH
RG9jdW1lbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVz
b3VyY2UsIHJlcXVlc3QsIHJlcXVlc3QudXJsKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlv
bnMoKSkuZ2V0KCkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLUNh
Y2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgcHJpb3JpdHkpCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwogICAgIEFTU0VSVCh0
eXBlID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2ggfHwgdHlwZSA9PSBDYWNoZWRSZXNv
dXJjZTo6TGlua1ByZXJlbmRlciB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVz
b3VyY2UpOwpAQCAtMjQ1LDkgKzI0MSw5IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmUKIH0KICNlbmRpZgogCi1DYWNoZWRSYXdSZXNvdXJjZSogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSYXdSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK0NhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jlc291
cmNlKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIHJlcXVlc3QsIFN0
cmluZygpLCBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGZhbHNlKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlKj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIG9wdGlv
bnMsIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgZmFsc2UpLmdldCgpKTsKIH0KIAog
Ym9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdApAQCAtNDEwLDcgKzQwNiw3
IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2EKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucywgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgZm9yUHJlbG9hZCkK
K0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZv
clByZWxvYWQpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIApAQCAtNDM0
LDI1ICs0MzAsMjUgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZQog
ICAgIH0KIAogICAgIC8vIFNlZSBpZiB3ZSBjYW4gdXNlIGFuIGV4aXN0aW5nIHJlc291cmNlIGZy
b20gdGhlIGNhY2hlLgotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hl
KCktPnJlc291cmNlRm9yVVJMKHVybCk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwodXJsKTsK
IAogICAgIGlmIChyZXF1ZXN0LnVybCgpICE9IHVybCkKICAgICAgICAgcmVxdWVzdC5zZXRVUkwo
dXJsKTsKIAotICAgIHN3aXRjaCAoZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KHR5cGUsIHJl
cXVlc3QsIGZvclByZWxvYWQsIHJlc291cmNlKSkgeworICAgIHN3aXRjaCAoZGV0ZXJtaW5lUmV2
YWxpZGF0aW9uUG9saWN5KHR5cGUsIHJlcXVlc3QsIGZvclByZWxvYWQsIHJlc291cmNlLmdldCgp
KSkgewogICAgIGNhc2UgTG9hZDoKICAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlw
ZSwgcmVxdWVzdCwgY2hhcnNldCwgcHJpb3JpdHksIG9wdGlvbnMpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFJlbG9hZDoKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNl
KTsKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKICAgICAg
ICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgY2hhcnNldCwgcHJpb3Jp
dHksIG9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJldmFsaWRhdGU6Ci0gICAg
ICAgIHJlc291cmNlID0gcmV2YWxpZGF0ZVJlc291cmNlKHJlc291cmNlLCBwcmlvcml0eSwgb3B0
aW9ucyk7CisgICAgICAgIHJlc291cmNlID0gcmV2YWxpZGF0ZVJlc291cmNlKHJlc291cmNlLmdl
dCgpLCBwcmlvcml0eSwgb3B0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXNlOgot
ICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUFjY2Vzc2VkKHJlc291cmNlKTsKLSAgICAg
ICAgbm90aWZ5TG9hZGVkRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKKyAgICAgICAgbWVtb3J5
Q2FjaGUoKS0+cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG5vdGlm
eUxvYWRlZEZyb21NZW1vcnlDYWNoZShyZXNvdXJjZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtNDYzLDggKzQ1OSw4IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmUKICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNvdXJjZS0+dXJsKCks
IHJlc291cmNlKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9Ci0gICAgCi1DYWNoZWRSZXNvdXJj
ZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCisKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQocmVzb3VyY2UpOwog
ICAgIEFTU0VSVChyZXNvdXJjZS0+aW5DYWNoZSgpKTsKQEAgLTQ3NSwxMyArNDcxLDEzIEBAIENh
Y2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmUKICAgICAvLyBDb3B5IHRoZSBV
Ukwgb3V0IG9mIHRoZSByZXNvdXJjZSB0byBiZSByZXZhbGlkYXRlZCBpbiBjYXNlIGl0IGdldHMg
ZGVsZXRlZCBieSB0aGUgcmVtb3ZlKCkgY2FsbCBiZWxvdy4KICAgICBTdHJpbmcgdXJsID0gcmVz
b3VyY2UtPnVybCgpOwogICAgIGJvb2wgdXJsUHJvdG9jb2xJc0RhdGEgPSByZXNvdXJjZS0+dXJs
KCkucHJvdG9jb2xJc0RhdGEoKTsKLSAgICBDYWNoZWRSZXNvdXJjZSogbmV3UmVzb3VyY2UgPSBj
cmVhdGVSZXNvdXJjZShyZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0
KCksIHJlc291cmNlLT5lbmNvZGluZygpKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gbmV3UmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS0+dHlwZSgp
LCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291cmNlLT5lbmNvZGluZygpKTsKICAg
ICAKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAgY3JlYXRlZCB0byByZXZh
bGlkYXRlICVwIiwgbmV3UmVzb3VyY2UsIHJlc291cmNlKTsKKyAgICBMT0coUmVzb3VyY2VMb2Fk
aW5nLCAiUmVzb3VyY2UgJXAgY3JlYXRlZCB0byByZXZhbGlkYXRlICVwIiwgbmV3UmVzb3VyY2Uu
Z2V0KCksIHJlc291cmNlKTsKICAgICBuZXdSZXNvdXJjZS0+c2V0UmVzb3VyY2VUb1JldmFsaWRh
dGUocmVzb3VyY2UpOwogICAgIAogICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZSk7
Ci0gICAgbWVtb3J5Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlKTsKKyAgICBtZW1vcnlDYWNoZSgp
LT5hZGQobmV3UmVzb3VyY2UuZ2V0KCkpOwogICAgIAogICAgIG5ld1Jlc291cmNlLT5zZXRMb2Fk
UHJpb3JpdHkocHJpb3JpdHkpOwogICAgIG5ld1Jlc291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMp
OwpAQCAtNDkxLDM5ICs0ODcsMjYgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZQogICAgIHJldHVybiBuZXdSZXNvdXJjZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgcHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBBU1NFUlQoIW1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yVVJMKHJlcXVlc3QudXJsKCkp
KTsKICAgICAKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiTG9hZGluZyBDYWNoZWRSZXNvdXJj
ZSBmb3IgJyVzJy4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAg
ICAgCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwg
cmVxdWVzdCwgY2hhcnNldCk7Ci0gICAgCi0gICAgYm9vbCBpbkNhY2hlID0gbWVtb3J5Q2FjaGUo
KS0+YWRkKHJlc291cmNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBjaGFyc2V0KTsKICAg
ICAKLSAgICAvLyBQcmV0ZW5kIHRoZSByZXNvdXJjZSBpcyBpbiB0aGUgY2FjaGUsIHRvIHByZXZl
bnQgaXQgZnJvbSBiZWluZyBkZWxldGVkIGR1cmluZyB0aGUgbG9hZCgpIGNhbGwuCi0gICAgLy8g
RklYTUU6IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBub3JtYWwgcmVmY291bnRpbmcg
aW5zdGVhZC4KLSAgICBpZiAoIWluQ2FjaGUpCi0gICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hl
KHRydWUpOworICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9yeUNhY2hlKCktPmFkZChyZXNvdXJjZS5n
ZXQoKSk7CiAgICAgCiAgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7Ci0g
ICAgCi0gICAgYm9vbCB3YXNQcnVuZUVuYWJsZWQgPSBtZW1vcnlDYWNoZSgpLT5wcnVuZUVuYWJs
ZWQoKTsKLSAgICBtZW1vcnlDYWNoZSgpLT5zZXRQcnVuZUVuYWJsZWQoZmFsc2UpOwogICAgIHJl
c291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMpOwotICAgIG1lbW9yeUNhY2hlKCktPnNldFBydW5l
RW5hYmxlZCh3YXNQcnVuZUVuYWJsZWQpOwogICAgIAotICAgIGlmICghaW5DYWNoZSkgeworICAg
IGlmICghaW5DYWNoZSkKICAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNl
TG9hZGVyKHRoaXMpOwotICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZShmYWxzZSk7Ci0gICAg
fQogCiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBkbyBz
dXBwb3J0IGltbWVkaWF0ZSBmYWlsdXJlLgogICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJl
ZCgpKSB7CiAgICAgICAgIGlmIChpbkNhY2hlKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+
cmVtb3ZlKHJlc291cmNlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVsZXRlIHJlc291
cmNlOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC03ODEsMTQgKzc2NCwxNCBAQCB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UHJlbG9hCiAgICAgaWYgKHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
KQogICAgICAgICBlbmNvZGluZyA9IGNoYXJzZXQuaXNFbXB0eSgpID8gbV9kb2N1bWVudC0+Y2hh
cnNldCgpIDogY2hhcnNldDsKIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVl
c3RSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBlbmNvZGluZywgZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRydWUpOwotICAgIGlm
ICghcmVzb3VyY2UgfHwgKG1fcHJlbG9hZHMgJiYgbV9wcmVsb2Fkcy0+Y29udGFpbnMocmVzb3Vy
Y2UpKSkKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2Ug
PSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsK
KyAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5z
KHJlc291cmNlLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKICAgICByZXNvdXJjZS0+aW5jcmVh
c2VQcmVsb2FkQ291bnQoKTsKIAogICAgIGlmICghbV9wcmVsb2FkcykKICAgICAgICAgbV9wcmVs
b2FkcyA9IGFkb3B0UHRyKG5ldyBMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+KTsKLSAgICBt
X3ByZWxvYWRzLT5hZGQocmVzb3VyY2UpOworICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZS5n
ZXQoKSk7CiAKICNpZiBQUkVMT0FEX0RFQlVHCiAgICAgcHJpbnRmKCJQUkVMT0FESU5HICVzXG4i
LCAgcmVzb3VyY2UtPnVybCgpLmxhdGluMSgpLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MTE2NTQwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDI3ICs2MywyNyBAQCBwdWJsaWM6CiAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQqKTsKICAgICB+Q2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKIAotICAgIENhY2hlZEltYWdlKiByZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0Jik7Ci0g
ICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdENTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291
cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCk7Ci0gICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogcmVx
dWVzdFVzZXJDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCk7Ci0gICAgQ2FjaGVkU2NyaXB0KiByZXF1ZXN0U2NyaXB0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCk7Ci0gICAgQ2FjaGVkRm9udCogcmVxdWVzdEZvbnQoUmVz
b3VyY2VSZXF1ZXN0Jik7Ci0gICAgQ2FjaGVkUmF3UmVzb3VyY2UqIHJlcXVlc3RSYXdSZXNvdXJj
ZShSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVxdWVzdEltYWdlKFJlc291cmNlUmVx
dWVzdCYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHJl
cXVlc3RDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQp
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHJlcXVlc3RV
c2VyQ1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQp
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOworICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZEZvbnQ+IHJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYpOworICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXF1ZXN0UmF3UmVzb3Vy
Y2UoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKICNp
ZiBFTkFCTEUoU1ZHKQotICAgIENhY2hlZFNWR0RvY3VtZW50KiByZXF1ZXN0U1ZHRG9jdW1lbnQo
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9j
dW1lbnQ+IHJlcXVlc3RTVkdEb2N1bWVudChSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogI2lm
IEVOQUJMRShYU0xUKQotICAgIENhY2hlZFhTTFN0eWxlU2hlZXQqIHJlcXVlc3RYU0xTdHlsZVNo
ZWV0KFJlc291cmNlUmVxdWVzdCYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFhT
TFN0eWxlU2hlZXQ+IHJlcXVlc3RYU0xTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVl
c3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdExpbmtSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIENhY2hlZFRleHRUcmFjayogcmVxdWVzdFRleHRUcmFjayhS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0VHJh
Y2s+IHJlcXVlc3RUZXh0VHJhY2soUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKICNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCi0gICAgQ2FjaGVkU2hhZGVyKiByZXF1ZXN0U2hhZGVyKFJlc291cmNl
UmVxdWVzdCYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gcmVxdWVz
dFNoYWRlcihSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiAgICAgLy8gTG9ncyBhbiBhY2Nl
c3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZpZWQgVVJMLgpA
QCAtMTE5LDkgKzExOSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7CiAgICAg
CiBwcml2YXRlOgotICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJj
ZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwotICAgIENh
Y2hlZFJlc291cmNlKiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJj
ZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0gICAgQ2FjaGVk
UmVzb3VyY2UqIGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZl
ZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNl
TG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNl
TG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICB2b2lkIHJl
cXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQpOwogCiAgICAgZW51bSBSZXZhbGlkYXRpb25Qb2xpY3kgeyBVc2Us
IFJldmFsaWRhdGUsIFJlbG9hZCwgTG9hZCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmgJKHJldmlzaW9uIDExNjU0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5
LDYgQEAgcHVibGljOgogICAgIHZvaWQgZXZpY3RSZXNvdXJjZXMoKTsKICAgICAKICAgICB2b2lk
IHNldFBydW5lRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9wcnVuZUVuYWJsZWQgPSBlbmFibGVk
OyB9Ci0gICAgYm9vbCBwcnVuZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BydW5lRW5hYmxl
ZDsgfQogICAgIHZvaWQgcHJ1bmUoKTsKICAgICB2b2lkIHBydW5lVG9QZXJjZW50YWdlKGZsb2F0
IHRhcmdldFBlcmNlbnRMaXZlKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NTY3KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDUtMDkgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggaW4gM3JkIHBhcnR5IFdl
YktpdCBhcHBzIHRoYXQgZGlzYWJsZSBjYWNoZSBhdCBhIHdyb25nIHRpbWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MDI3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMDYxNTg4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdGhhdCdzIHZlcnkgc2ltaWxhciB0byBNZW1vcnlD
YWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUsCisgICAgICAgIGJ1dCBmb3IgZGlz
YWJsaW5nIHRoZSBjYWNoZSBpbnN0ZWFkIG9mIHRyaWdnZXJpbmcgYSBwcnVuZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNl
TG9hZERlbGVnYXRlIHdlYlZpZXc6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OmZyb21EYXRh
U291cmNlOl0pOgorICAgICAgICAoLVtNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2Fk
RGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25z
ZTpmcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJl
c291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6ZGlkRmluaXNoTG9hZGluZ0Zyb21E
YXRhU291cmNlOl0pOgorICAgICAgICAoLVtNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VM
b2FkRGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTpkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjpmcm9t
RGF0YVNvdXJjZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEyLTA1
LTA5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdo
ZW4gY3JlYXRpbmcgYSBuZXcgcGFnZSBkdXJpbmcgYSBuYXZpZ2F0aW9uLCBwcmltZSB0aGUgaW5p
dGlhbCBkb2N1bWVudCB3aXRoIHRoZSBjb3JyZWN0IHJlZmVycmVyIHBvbGljeQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExNjU0MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNiArMTQxLDggQEAKIAkJQzUwN0U4QTcxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3Bl
Y3RvckJhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07CiAJCUM1
NDBGNzc2MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzc1MTUyRTREQTAwMEE0MEM4
QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSAqLzsgfTsKIAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhD
IC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1h
cmt1cC5odG1sICovOyB9OworCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyog
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CisJ
CUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNo
ZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFNDkwMjk2
ODE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAv
KiBUeXBpbmdTdHlsZUNyYXNoLm1tICovOyB9OwogCQlGM0ZDM0VFMzEzNjc4QjczMDAxMjZBNjUg
LyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovOyB9OwogCQlG
NkYzRjI5MTEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYzRjI5MDEzMzQyRkVCMDBBNkJG
MTkgLyogQ29va2llTWFuYWdlci5jcHAgKi87IH07CkBAIC0xNzgsNiArMTgwLDcgQEAKIAkJCQlC
NTVGMTFCNzE1MTdEMDMzMDA5MTU5MTYgLyogYXR0cmlidXRlZFN0cmluZ0N1c3RvbUZvbnQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQgLyog
YXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTQy
QjI3MzE1MTdDOEM4MDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTE3RTdFMDQxNTExMTlDMTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTMzREM4OTEyMTQxOTU1RkUwMDc0N0VGNyAvKiBzaW1wbGUt
aWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zNTQsNiArMzU3LDggQEAKIAkJ
QzUwN0U4QTYxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJhci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3BlY3RvckJhci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFy
a3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxpZnlN
YXJrdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDBGNzgzMTUyRTVBNzgw
MEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMjIw
RDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1l
bW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQwMDJC
RUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVHlwaW5nU3R5bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0g
bGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjZGM0Yy
OTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29va2llTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NDAsNiArNjQ1LDcgQEAKIAkJCQkzNzc2QkM2MjE1MDk0NkJDMDA0M0E2
NkQgLyogRGV2aWNlU2NhbGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMubW0gKi8sCiAJCQkJOTM5
QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICovLAog
CQkJCUM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi8sCisJCQkJ
RTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBN
ZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJMzcy
MkM4NjgxNDYxRTAzRTAwQzQ1RDAwIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9NUmFuZ2UubW0gKi8s
CiAJCQkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFya3VwLm1tICovLApA
QCAtNjU5LDggKzY2NSw5IEBACiAJCQkJMzc5MDI4QjgxNEZBQkU0OTAwN0U2QjQzIC8qIGFjY2Vw
dHNGaXJzdE1vdXNlLmh0bWwgKi8sCiAJCQkJNTE0MkIyNzIxNTE3Qzg5MTAwQzMyQjE5IC8qIENv
bnRleHRNZW51Q2FuQ29weVVSTC5odG1sICovLAogCQkJCTM3REM2NzhGMTQwRDdEM0EwMEFCQ0NE
QiAvKiBET01SYW5nZU9mU3RyaW5nLmh0bWwgKi8sCi0JCQkJQzA3RTZDQjExM0ZENzM4QTAwMzhC
MjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKKwkJCQlFMTIyMERDOTE1NUIyODdEMDAx
M0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRt
bCAqLywKIAkJCQk1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8sCisJCQkJQzA3RTZDQjExM0ZENzM4QTAw
MzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKIAkJCQlDNTQwRjc4MzE1MkU1QTc4
MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNv
dXJjZXM7CkBAIC04NjQsNiArODcxLDcgQEAKIAkJCQk1MUZDRjc5QTE1MzRBQzZEMDAxMDQ0OTEg
LyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1
Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxMjIwREEwMTU1QjI1NDgwMDEzRTJG
QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPHNjcmlwdD4KKworZnVuY3Rpb24g
bG9hZGVkKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAg
IHJlcXVlc3Qub3BlbignR0VUJywgJ2h0dHA6Ly93d3cuaWFuYS5vcmcvZG9tYWlucy9leGFtcGxl
LycsIHRydWUpOworICAgIHJlcXVlc3Quc2VuZChudWxsKTsKK30KKworPC9zY3JpcHQ+CisKKzxi
b2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1dlIHdpbGwgZG8gc29tZSBYSFInaW5nIG5vdyEKKzwv
Ym9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lv
biAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViQ2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworQGludGVyZmFjZSBNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2Fk
RGVsZWdhdGUgOiBOU09iamVjdCB7Cit9CitAZW5kCisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExv
YWQ7CisKK0BpbXBsZW1lbnRhdGlvbiBNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2Fk
RGVsZWdhdGUKKworLSAoaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBpZGVudGlmaWVyRm9y
SW5pdGlhbFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZnJvbURhdGFTb3VyY2U6KFdl
YkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOllF
U107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOk5PXTsKKworICAgIHJldHVybiBzZWxmOwor
fQorCistIChOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJlc291cmNl
OihpZClpZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBy
ZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0
YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKK3sKKyAgICBbV2ViQ2FjaGUgc2V0
RGlzYWJsZWQ6WUVTXTsKKyAgICBbV2ViQ2FjaGUgc2V0RGlzYWJsZWQ6Tk9dOworCisgICAgcmV0
dXJuIHJlcXVlc3Q7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciByZXNv
dXJjZTooaWQpaWRlbnRpZmllciBkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2U6KFdlYkRh
dGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOllFU107
CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOk5PXTsKKworICAgIGRpZEZpbmlzaExvYWQgPSBZ
RVM7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQp
aWRlbnRpZmllciBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIGZyb21E
YXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQoreworICAgIFtXZWJDYWNoZSBz
ZXREaXNhYmxlZDpZRVNdOworICAgIFtXZWJDYWNoZSBzZXREaXNhYmxlZDpOT107Cit9CisKK0Bl
bmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdDEsIE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlKQoreworICAgIE5TQXV0b3JlbGVh
c2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisKKyAgICBS
ZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5h
bWU6bmlsXSk7CisKKyAgICBSZXRhaW5QdHI8TWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNl
TG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZShBZG9wdE5TLCBbW01lbW9yeUNhY2hl
RGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHdlYlZp
ZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQo
KTsKKworICAgIFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAIk1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1d
OworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICAKKyAgICBbcG9vbCBkcmFp
bl07CisgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFzaGluZywgdGhlIHRlc3QgcGFz
c2VkLgorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCg==
</data>
<flag name="commit-queue"
          id="147305"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141241</attachid>
            <date>2012-05-10 13:40:43 -0700</date>
            <delta_ts>2012-05-10 15:35:36 -0700</delta_ts>
            <desc>updated to ToT</desc>
            <filename>ResourceHandle3.txt</filename>
            <type>text/plain</type>
            <size>39481</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA1LTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIDNyZCBwYXJ0
eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUgY2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgQWRkZWQgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgVGhlIGZpeCBp
cyB0byB1c2UgQ2FjaGVkUmVzb3VyY2VIYW5kbGUgdGhyb3VnaG91dCBNZW1vcnlDYWNoZSwgd2hp
Y2ggd2lsbCBjZXJ0YWlubHkKKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgYWxpdmUuIEFsc28g
cmVtb3ZlZCBlYXJsaWVyIGZpeGVzLgorCisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUu
Y3BwOiAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1hZ2VTZXQpOgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDogKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hl
ZEltYWdlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOiAoV2ViQ29y
ZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNoYWRlcik6CisgICAgICAgICogaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwOiAoV2ViQ29yZTo6UGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2Vk
UGFnZXNOb3cpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6IChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwOiAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RMaW5rUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSYXdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNldFBy
dW5lRW5hYmxlZCk6CisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlOjpDYWNoZWRSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZTo6b3Bl
cmF0b3I9KToKKyAgICAgICAgVGVhY2ggQ2FjaGVkUmVzb3VyY2VIYW5kbGUgaG93IHRvIG1ha2Ug
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGZyb20KKyAgICAgICAgYSBoYW5k
bGUgdG8gc3ViY2xhc3MuCisKIDIwMTItMDUtMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaGVhcCBzbmFwc2hvdCBjb21w
YXJpc29uIHZpZXcgaXMgYnJva2VuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwCShyZXZpc2lvbiAxMTY2ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw4ICsxMDYsOCBAQCBTdHlsZUNh
Y2hlZEltYWdlU2V0KiBDU1NJbWFnZVNldFZhbHVlOjpjCiAgICAgICAgIC8vIGFuZCBhbnkgQ1NT
IHRyYW5zZm9ybXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY5
OAogICAgICAgICBJbWFnZVdpdGhTY2FsZSBpbWFnZSA9IGJlc3RJbWFnZUZvclNjYWxlRmFjdG9y
KCk7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoaW1hZ2UuaW1hZ2VVUkwpKTsKLSAgICAgICAgaWYgKENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IGxvYWRlci0+cmVxdWVzdEltYWdlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAg
ICBtX2ltYWdlU2V0ID0gU3R5bGVDYWNoZWRJbWFnZVNldDo6Y3JlYXRlKGNhY2hlZEltYWdlLCBp
bWFnZS5zY2FsZUZhY3RvciwgdGhpcyk7CisgICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0
KSkgeworICAgICAgICAgICAgbV9pbWFnZVNldCA9IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmNyZWF0
ZShjYWNoZWRJbWFnZS5nZXQoKSwgaW1hZ2Uuc2NhbGVGYWN0b3IsIHRoaXMpOwogICAgICAgICAg
ICAgbV9hY2Nlc3NlZEJlc3RGaXRJbWFnZSA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMTY2ODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDggKzgyLDggQEAgU3R5bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSQogICAg
ICAgICBtX2FjY2Vzc2VkSW1hZ2UgPSB0cnVlOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSk7Ci0gICAgICAgIGlm
IChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0
KSkKLSAgICAgICAgICAgIG1faW1hZ2UgPSBTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoY2FjaGVk
SW1hZ2UpOworICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IGNh
Y2hlZEltYWdlID0gbG9hZGVyLT5yZXF1ZXN0SW1hZ2UocmVxdWVzdCkpCisgICAgICAgICAgICBt
X2ltYWdlID0gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGNhY2hlZEltYWdlLmdldCgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gKG1faW1hZ2UgJiYgbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpKSA/
IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihtX2ltYWdlLmdldCgpKSA6IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAJKHJldmlzaW9u
IDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAgU3R5bGVDYWNoZWRTaGFkZXIqIFdlYktp
dENTU1NoYWRlclZhbHVlOgogICAgICAgICBtX2FjY2Vzc2VkU2hhZGVyID0gdHJ1ZTsKIAogICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKG1fdXJsKSk7Ci0gICAgICAgIGlmIChDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGxv
YWRlci0+cmVxdWVzdFNoYWRlcihyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fc2hhZGVyID0gU3R5
bGVDYWNoZWRTaGFkZXI6OmNyZWF0ZShjYWNoZWRTaGFkZXIpOworICAgICAgICBpZiAoQ2FjaGVk
UmVzb3VyY2VMb2FkZXI8Q2FjaGVkU2hhZGVyPiBjYWNoZWRTaGFkZXIgPSBsb2FkZXItPnJlcXVl
c3RTaGFkZXIocmVxdWVzdCkpCisgICAgICAgICAgICBtX3NoYWRlciA9IFN0eWxlQ2FjaGVkU2hh
ZGVyOjpjcmVhdGUoY2FjaGVkU2hhZGVyLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gKG1f
c2hhZGVyICYmIG1fc2hhZGVyLT5pc0NhY2hlZFNoYWRlcigpKSA/IHN0YXRpY19jYXN0PFN0eWxl
Q2FjaGVkU2hhZGVyKj4obV9zaGFkZXIuZ2V0KCkpIDogMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw2IEBAIHZv
aWQgUGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2VkUGFnZXMKICAgICBtX2F1dG9yZWxlYXNl
VGltZXIuc3RvcCgpOwogCiAgICAgLy8gUG9zdHBvbmUgZGVhZCBwcnVuaW5nIHVudGlsIGFsbCBv
dXIgcmVzb3VyY2VzIGhhdmUgZ29uZSBkZWFkLgotICAgIGJvb2wgcHJ1bmVXYXNFbmFibGVkID0g
bWVtb3J5Q2FjaGUoKS0+cHJ1bmVFbmFibGVkKCk7CiAgICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1
bmVFbmFibGVkKGZhbHNlKTsKIAogICAgIENhY2hlZFBhZ2VTZXQgdG1wOwpAQCAtNTQ2LDEwICs1
NDUsOCBAQCB2b2lkIFBhZ2VDYWNoZTo6cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzCiAgICAgICAg
ICgqaXQpLT5kZXN0cm95KCk7CiAKICAgICAvLyBOb3cgZG8gdGhlIHBydW5lLgotICAgIGlmIChw
cnVuZVdhc0VuYWJsZWQpIHsKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1bmVFbmFibGVk
KHRydWUpOwotICAgICAgICBtZW1vcnlDYWNoZSgpLT5wcnVuZSgpOwotICAgIH0KKyAgICBtZW1v
cnlDYWNoZSgpLT5zZXRQcnVuZUVuYWJsZWQodHJ1ZSk7CisgICAgbWVtb3J5Q2FjaGUoKS0+cHJ1
bmUoKTsKIH0KIAogdm9pZCBQYWdlQ2FjaGU6OmF1dG9yZWxlYXNlKFBhc3NSZWZQdHI8Q2FjaGVk
UGFnZT4gcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2
aXNpb24gMTE2NjgxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0
ZUZyb21FbGVtZW50KCkKIAogICAgIC8vIERvIG5vdCBsb2FkIGFueSBpbWFnZSBpZiB0aGUgJ3Ny
YycgYXR0cmlidXRlIGlzIG1pc3Npbmcgb3IgaWYgaXQgaXMKICAgICAvLyBhbiBlbXB0eSBzdHJp
bmcuCi0gICAgQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMDsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRJbWFnZT4gbmV3SW1hZ2UgPSAwOwogICAgIGlmICghYXR0ci5pc051bGwoKSAm
JiAhc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkgewog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChkb2N1bWVu
dC0+Y29tcGxldGVVUkwoc291cmNlVVJJKGF0dHIpKSk7CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBuZXdJbWFn
ZSA9IG5ldyBDYWNoZWRJbWFnZShyZXF1ZXN0KTsKICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRM
b2FkaW5nKHRydWUpOwogICAgICAgICAgICAgbmV3SW1hZ2UtPnNldE93bmluZ0NhY2hlZFJlc291
cmNlTG9hZGVyKGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKLSAgICAgICAgICAg
IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5tX2RvY3VtZW50UmVzb3VyY2VzLnNl
dChuZXdJbWFnZS0+dXJsKCksIG5ld0ltYWdlKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLT5tX2RvY3VtZW50UmVzb3VyY2VzLnNldChuZXdJbWFnZS0+dXJs
KCksIG5ld0ltYWdlLmdldCgpKTsKICAgICAgICAgICAgIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBuZXdJbWFnZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5yZXF1ZXN0SW1hZ2UocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkocmV2aXNpb24gMTE2NjgxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1CiAgICAg
fQogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgbV9jYWNoZWRDdWVEYXRhID0gc3Rh
dGljX2Nhc3Q8Q2FjaGVkVGV4dFRyYWNrKj4oY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RU
ZXh0VHJhY2soY3VlUmVxdWVzdCkpOworICAgIG1fY2FjaGVkQ3VlRGF0YSA9IGNhY2hlZFJlc291
cmNlTG9hZGVyLT5yZXF1ZXN0VGV4dFRyYWNrKGN1ZVJlcXVlc3QpOwogICAgIGlmIChtX2NhY2hl
ZEN1ZURhdGEpCiAgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+YWRkQ2xpZW50KHRoaXMpOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlSGFuZGxlLmgJKHJldmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMiArNjEs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSgp
IHsgfQogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZShSKiByZXMpIDogQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGVCYXNlKHJlcykgeyB9CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlKGNvbnN0
IENhY2hlZFJlc291cmNlSGFuZGxlPFI+JiBvKSA6IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZShv
KSB7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQ2FjaGVkUmVzb3VyY2VIYW5kbGUo
Y29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8VT4mIG8pIDogQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlKG8uZ2V0KCkpIHsgfQogCiAgICAgICAgIFIqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Uio+KENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6Z2V0KCkpOyB9CiAgICAg
ICAgIFIqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQogICAgICAgICAgICAg
ICAgCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlJiBvcGVyYXRvcj0oUiogcmVzKSB7IHNl
dFJlc291cmNlKHJlcyk7IHJldHVybiAqdGhpczsgfSAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgeyBzZXRSZXNv
dXJjZShvLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IENhY2hlZFJlc291cmNlSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8VT4mIG8pIHsgc2V0UmVzb3VyY2Uoby5nZXQoKSk7IHJldHVybiAqdGhpczsgfQorCiAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmIG8p
IGNvbnN0IHsgcmV0dXJuIGdldCgpID09IG8uZ2V0KCk7IH0KICAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4gZ2V0
KCkgIT0gby5nZXQoKTsgfQogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDExNjY4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBGcmFtZSogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmZyYW1lKCkgY29uCiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5m
cmFtZSgpIDogMDsKIH0KIAotQ2FjaGVkSW1hZ2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKICAgICAg
ICAgaWYgKGYtPmxvYWRlcigpLT5wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSAh
PSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpIHsKQEAgLTE2MSwzNyArMTYxLDM3IEBAIENhY2hl
ZEltYWdlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWUKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICB9CiAgICAgfQotICAgIENhY2hlZEltYWdlKiByZXNvdXJjZSA9IHN0YXRpY19j
YXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJl
c291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRp
Y19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpKS5nZXQoKSkpOwogICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJl
c291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0K
IAotQ2FjaGVkRm9udCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRGb250
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIHJlcXVlc3Qs
IFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLUNhY2hlZFRleHRUcmFjayogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RUZXh0VHJhY2soUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFRleHRUcmFjayhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PENhY2hlZFRleHRUcmFjayo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZTo6VGV4dFRyYWNrUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkVGV4dFRyYWNr
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZSwgcmVx
dWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwog
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi1DYWNoZWRTaGFkZXIqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2hhZGVyKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRTaGFkZXIqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlNoYWRlclJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNoYWRlcio+KHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2hhZGVyUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmlu
ZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KICNlbmRpZgog
Ci1DYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0
eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNo
ZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2Fj
aGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
LCBwcmlvcml0eSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCByZXF1ZXN0
LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9yaXR5KS5nZXQo
KSk7CiB9CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogewogICAgIEtVUkwgdXJsID0g
TWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJs
KCkpOwogCkBAIC0yMDMsNDEgKzIwMywzNyBAQCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRS
ZXNvdXJjZUxvYWRlCiAgICAgaWYgKHVybC5zdHJpbmcoKSAhPSByZXF1ZXN0LnVybCgpKQogICAg
ICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwogCi0gICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogdXNl
clNoZWV0ID0gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdCwgY2hhcnNldCk7Ci0gICAg
Ci0gICAgYm9vbCBpbkNhY2hlID0gbWVtb3J5Q2FjaGUoKS0+YWRkKHVzZXJTaGVldCk7Ci0gICAg
aWYgKCFpbkNhY2hlKQotICAgICAgICB1c2VyU2hlZXQtPnNldEluQ2FjaGUodHJ1ZSk7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gdXNlclNoZWV0ID0gbmV3
IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdCwgY2hhcnNldCk7CiAKLSAgICB1c2VyU2hlZXQt
PmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRG
b3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpOworICAgIG1lbW9y
eUNhY2hlKCktPmFkZCh1c2VyU2hlZXQuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBsb2FkUmVzb3Vy
Y2UgY2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBpZiB0aGUgcmVzb3VyY2Ug
Y291bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGNh
bGwgaXQsIHRvbz8KIAotICAgIGlmICghaW5DYWNoZSkKLSAgICAgICAgdXNlclNoZWV0LT5zZXRJ
bkNhY2hlKGZhbHNlKTsKKyAgICB1c2VyU2hlZXQtPmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBT
a2lwU2VjdXJpdHlDaGVjaykpOwogICAgIAogICAgIHJldHVybiB1c2VyU2hlZXQ7CiB9CiAKLUNh
Y2hlZFNjcmlwdCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCitDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0
aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNjcmlwdCo+KHJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KIAogI2lmIEVOQUJMRShYU0xUKQot
Q2FjaGVkWFNMU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHls
ZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFhTTFN0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVT
aGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PENhY2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhT
TFN0eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3Ry
aW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1ZHKQotQ2FjaGVkU1ZHRG9jdW1lbnQqIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1bWVudCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgcmVxdWVzdCwgcmVxdWVzdC51cmwoKSwgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENh
Y2hlZFNWR0RvY3VtZW50Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdEb2N1
bWVudFJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpLCBkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCkpLmdldCgpKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKICAgICBB
U1NFUlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoIHx8IHR5cGUgPT0gQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXIgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1N1YnJlc291cmNlKTsKQEAgLTI0NSw5ICsyNDEsOSBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlCiB9CiAjZW5kaWYKIAotQ2FjaGVkUmF3UmVzb3VyY2UqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RS
YXdSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlLCByZXF1
ZXN0LCBTdHJpbmcoKSwgb3B0aW9ucywgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBm
YWxzZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+KHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygp
LCBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGZhbHNlKS5nZXQoKSk7
CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKQEAgLTQxMCw3
ICs0MDYsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZvclBy
ZWxvYWQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwg
Ym9vbCBmb3JQcmVsb2FkKQogewogICAgIEtVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAK
QEAgLTQzNCwyNSArNDMwLDI1IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmUKICAgICB9CiAKICAgICAvLyBTZWUgaWYgd2UgY2FuIHVzZSBhbiBleGlzdGluZyByZXNv
dXJjZSBmcm9tIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1v
cnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yVVJM
KHVybCk7CiAKICAgICBpZiAocmVxdWVzdC51cmwoKSAhPSB1cmwpCiAgICAgICAgIHJlcXVlc3Qu
c2V0VVJMKHVybCk7CiAKLSAgICBzd2l0Y2ggKGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0
eXBlLCByZXF1ZXN0LCBmb3JQcmVsb2FkLCByZXNvdXJjZSkpIHsKKyAgICBzd2l0Y2ggKGRldGVy
bWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0LCBmb3JQcmVsb2FkLCByZXNvdXJj
ZS5nZXQoKSkpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291
cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBSZWxvYWQ6Ci0gICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShy
ZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7
CiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQs
IHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXZhbGlkYXRl
OgotICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNvdXJjZShyZXNvdXJjZSwgcHJpb3Jp
dHksIG9wdGlvbnMpOworICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNvdXJjZShyZXNv
dXJjZS5nZXQoKSwgcHJpb3JpdHksIG9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFVzZToKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7
Ci0gICAgICAgIG5vdGlmeUxvYWRlZEZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CisgICAgICAg
IG1lbW9yeUNhY2hlKCktPnJlc291cmNlQWNjZXNzZWQocmVzb3VyY2UuZ2V0KCkpOworICAgICAg
ICBub3RpZnlMb2FkZWRGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2UuZ2V0KCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKQEAgLTQ2Myw4ICs0NTksOCBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlCiAgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2Ut
PnVybCgpLCByZXNvdXJjZSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQotICAgIAotQ2FjaGVk
UmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKHJlc291
cmNlKTsKICAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7CkBAIC00NzUsMTMgKzQ3MSwx
MyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlCiAgICAgLy8gQ29w
eSB0aGUgVVJMIG91dCBvZiB0aGUgcmVzb3VyY2UgdG8gYmUgcmV2YWxpZGF0ZWQgaW4gY2FzZSBp
dCBnZXRzIGRlbGV0ZWQgYnkgdGhlIHJlbW92ZSgpIGNhbGwgYmVsb3cuCiAgICAgU3RyaW5nIHVy
bCA9IHJlc291cmNlLT51cmwoKTsKICAgICBib29sIHVybFByb3RvY29sSXNEYXRhID0gcmVzb3Vy
Y2UtPnVybCgpLnByb3RvY29sSXNEYXRhKCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIG5ld1Jlc291
cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2UtPnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNl
UmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2RpbmcoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2Ut
PnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2Rpbmco
KSk7CiAgICAgCi0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQg
dG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNlLCByZXNvdXJjZSk7CisgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jl
c291cmNlLmdldCgpLCByZXNvdXJjZSk7CiAgICAgbmV3UmVzb3VyY2UtPnNldFJlc291cmNlVG9S
ZXZhbGlkYXRlKHJlc291cmNlKTsKICAgICAKICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVz
b3VyY2UpOwotICAgIG1lbW9yeUNhY2hlKCktPmFkZChuZXdSZXNvdXJjZSk7CisgICAgbWVtb3J5
Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlLmdldCgpKTsKICAgICAKICAgICBuZXdSZXNvdXJjZS0+
c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKICAgICBuZXdSZXNvdXJjZS0+bG9hZCh0aGlzLCBv
cHRpb25zKTsKQEAgLTQ5MSwzOSArNDg3LDI2IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmUKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291
cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNl
TG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgQVNTRVJUKCFtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTChyZXF1ZXN0
LnVybCgpKSk7CiAgICAgCiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkxvYWRpbmcgQ2FjaGVk
UmVzb3VyY2UgZm9yICclcycuIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCkpOwogICAgIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNl
KHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQpOwotICAgIAotICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9y
eUNhY2hlKCktPmFkZChyZXNvdXJjZSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgY2hhcnNl
dCk7CiAgICAgCi0gICAgLy8gUHJldGVuZCB0aGUgcmVzb3VyY2UgaXMgaW4gdGhlIGNhY2hlLCB0
byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGVsZXRlZCBkdXJpbmcgdGhlIGxvYWQoKSBjYWxsLgot
ICAgIC8vIEZJWE1FOiBDYWNoZWRSZXNvdXJjZSBzaG91bGQganVzdCB1c2Ugbm9ybWFsIHJlZmNv
dW50aW5nIGluc3RlYWQuCi0gICAgaWYgKCFpbkNhY2hlKQotICAgICAgICByZXNvdXJjZS0+c2V0
SW5DYWNoZSh0cnVlKTsKKyAgICBib29sIGluQ2FjaGUgPSBtZW1vcnlDYWNoZSgpLT5hZGQocmVz
b3VyY2UuZ2V0KCkpOwogICAgIAogICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3Jp
dHkpOwotICAgIAotICAgIGJvb2wgd2FzUHJ1bmVFbmFibGVkID0gbWVtb3J5Q2FjaGUoKS0+cHJ1
bmVFbmFibGVkKCk7Ci0gICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1bmVFbmFibGVkKGZhbHNlKTsK
ICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKLSAgICBtZW1vcnlDYWNoZSgpLT5z
ZXRQcnVuZUVuYWJsZWQod2FzUHJ1bmVFbmFibGVkKTsKICAgICAKLSAgICBpZiAoIWluQ2FjaGUp
IHsKKyAgICBpZiAoIWluQ2FjaGUpCiAgICAgICAgIHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRS
ZXNvdXJjZUxvYWRlcih0aGlzKTsKLSAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUoZmFsc2Up
OwotICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQg
d2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVyZS4KICAgICBpZiAocmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoaW5DYWNoZSkKLSAgICAgICAgICAgIG1lbW9yeUNh
Y2hlKCktPnJlbW92ZShyZXNvdXJjZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlbGV0
ZSByZXNvdXJjZTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5n
ZXQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNzgxLDE0ICs3NjQsMTQgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYQogICAgIGlmICh0eXBlID09
IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCkKICAgICAgICAgZW5jb2RpbmcgPSBjaGFyc2V0LmlzRW1wdHkoKSA/IG1fZG9jdW1l
bnQtPmNoYXJzZXQoKSA6IGNoYXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Ug
PSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsK
LSAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5z
KHJlc291cmNlKSkpCisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGVuY29kaW5nLCBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwg
dHJ1ZSk7CisgICAgaWYgKCFyZXNvdXJjZSB8fCAobV9wcmVsb2FkcyAmJiBtX3ByZWxvYWRzLT5j
b250YWlucyhyZXNvdXJjZS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAgICAgcmVzb3VyY2Ut
PmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAgICBpZiAoIW1fcHJlbG9hZHMpCiAgICAgICAg
IG1fcHJlbG9hZHMgPSBhZG9wdFB0cihuZXcgTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPik7
Ci0gICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlKTsKKyAgICBtX3ByZWxvYWRzLT5hZGQocmVz
b3VyY2UuZ2V0KCkpOwogCiAjaWYgUFJFTE9BRF9ERUJVRwogICAgIHByaW50ZigiUFJFTE9BRElO
RyAlc1xuIiwgIHJlc291cmNlLT51cmwoKS5sYXRpbjEoKS5kYXRhKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywyNyArNjMsMjcgQEAgcHVibGljOgog
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50Kik7CiAgICAgfkNhY2hlZFJlc291cmNl
TG9hZGVyKCk7CiAKLSAgICBDYWNoZWRJbWFnZSogcmVxdWVzdEltYWdlKFJlc291cmNlUmVxdWVz
dCYpOwotICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RDU1NTdHlsZVNoZWV0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkg
PSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwotICAgIENhY2hlZENTU1N0eWxlU2hl
ZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpOwotICAgIENhY2hlZFNjcmlwdCogcmVxdWVzdFNjcmlwdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwotICAgIENhY2hlZEZvbnQqIHJlcXVlc3RG
b250KFJlc291cmNlUmVxdWVzdCYpOwotICAgIENhY2hlZFJhd1Jlc291cmNlKiByZXF1ZXN0UmF3
UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlcXVlc3RJbWFnZShSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNo
ZWV0PiByZXF1ZXN0Q1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJl
c29sdmVkKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBy
ZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0KTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RT
Y3JpcHQoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiByZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVxdWVzdFJh
d1Jlc291cmNlKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYp
OwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBDYWNoZWRTVkdEb2N1bWVudCogcmVxdWVzdFNWR0Rv
Y3VtZW50KFJlc291cmNlUmVxdWVzdCYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNWR0RvY3VtZW50PiByZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5k
aWYKICNpZiBFTkFCTEUoWFNMVCkKLSAgICBDYWNoZWRYU0xTdHlsZVNoZWV0KiByZXF1ZXN0WFNM
U3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRYU0xTdHlsZVNoZWV0PiByZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIENhY2hlZFJlc291cmNl
KiByZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZl
ZCk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RMaW5r
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
TG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKICNlbmRpZgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBDYWNoZWRUZXh0VHJhY2sqIHJlcXVlc3RUZXh0
VHJhY2soUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
VGV4dFRyYWNrPiByZXF1ZXN0VGV4dFRyYWNrKFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIENhY2hlZFNoYWRlciogcmVxdWVzdFNoYWRlcihS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFkZXI+
IHJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIAogICAgIC8vIExvZ3Mg
YW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVk
IFVSTC4KQEAgLTExOSw5ICsxMTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENh
Y2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2Up
OwogICAgIAogcHJpdmF0ZToKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0g
UmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsK
LSAgICBDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiwg
UmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwotICAg
IENhY2hlZFJlc291cmNlKiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHks
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVu
cmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOworICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBS
ZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBS
ZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAg
dm9pZCByZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIGVudW0gUmV2YWxpZGF0aW9uUG9saWN5
IHsgVXNlLCBSZXZhbGlkYXRlLCBSZWxvYWQsIExvYWQgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCShyZXZpc2lvbiAxMTY2ODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5
LDcgKzEyOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2aWN0UmVzb3VyY2VzKCk7CiAgICAgCiAg
ICAgdm9pZCBzZXRQcnVuZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcHJ1bmVFbmFibGVkID0g
ZW5hYmxlZDsgfQotICAgIGJvb2wgcHJ1bmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcnVu
ZUVuYWJsZWQ7IH0KICAgICB2b2lkIHBydW5lKCk7CiAgICAgdm9pZCBwcnVuZVRvUGVyY2VudGFn
ZShmbG9hdCB0YXJnZXRQZXJjZW50TGl2ZSk7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjY4MSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA1LTA5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIDNyZCBw
YXJ0eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUgY2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkg
S29pdmlzdG8uCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQncyB2ZXJ5IHNpbWlsYXIgdG8g
TWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLAorICAgICAgICBidXQg
Zm9yIGRpc2FibGluZyB0aGUgY2FjaGUgaW5zdGVhZCBvZiB0cmlnZ2VyaW5nIGEgcHJ1bmUuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAgICAgICgtW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpm
cm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0
UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICgtW01lbW9yeUNhY2hlRGlzYWJs
ZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRp
bmdGcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJl
c291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6ZGlkRmFpbExvYWRpbmdXaXRoRXJy
b3I6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxMi0wNS0xMCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAg
ICAgIFtHVEtdIEVOQUJMRV9JRlJBTUVfU0VBTUxFU1Mgc3VwcG9ydApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDExNjY4MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNiArMTQxLDggQEAKIAkJQzUwN0U4QTcxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJh
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MDdF
OEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07CiAJCUM1NDBGNzc2
MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzc1MTUyRTREQTAwMEE0MEM4QyAvKiBT
aW1wbGlmeU1hcmt1cC5tbSAqLzsgfTsKIAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZl
cmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5o
dG1sICovOyB9OworCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CisJCUUxMjIw
RENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFNDkwMjk2ODE0RTJF
M0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBp
bmdTdHlsZUNyYXNoLm1tICovOyB9OwogCQlGM0ZDM0VFMzEzNjc4QjczMDAxMjZBNjUgLyogbGli
Z3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovOyB9OwogCQlGNkE2QkZC
QjE1NThBQzQ4MDA5MjYxMDcgLyogc2ltcGxlLXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2QTZCRkI5MTU1OEFCRjgwMDky
NjEwNyAvKiBzaW1wbGUtdW5sb2FkLmh0bWwgKi87IH07CkBAIC0xODIsNiArMTg0LDcgQEAKIAkJ
CQlCNTVGMTFCNzE1MTdEMDMzMDA5MTU5MTYgLyogYXR0cmlidXRlZFN0cmluZ0N1c3RvbUZvbnQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQg
LyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
MTQyQjI3MzE1MTdDOEM4MDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCisJCQkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9y
eUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJNTE3RTdFMDQxNTExMTlDMTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1
bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTMzREM4OTEyMTQxOTU1RkUwMDc0N0VGNyAvKiBzaW1w
bGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zNjAsNiArMzYzLDggQEAK
IAkJQzUwN0U4QTYxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJhci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3BlY3RvckJhci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5
TWFya3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxp
ZnlNYXJrdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDBGNzgzMTUyRTVB
NzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUx
MjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQw
MDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVHlwaW5nU3R5bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRo
ID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjZB
NkJGQjgxNTU4QUJGODAwOTI2MTA3IC8qIHNpbXBsZS1pZnJhbWUtdW5sb2FkLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTQsNiArNjU5LDcgQEAKIAkJCQkzNzc2QkM2MjE1
MDk0NkJDMDA0M0E2NkQgLyogRGV2aWNlU2NhbGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMubW0g
Ki8sCiAJCQkJOTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25C
YWNrLm1tICovLAogCQkJCUM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIu
bW0gKi8sCisJCQkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJs
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTUxN0U3REZCMTUxMTBFQTYw
MEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0g
Ki8sCiAJCQkJMzcyMkM4NjgxNDYxRTAzRTAwQzQ1RDAwIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9N
UmFuZ2UubW0gKi8sCiAJCQkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFy
a3VwLm1tICovLApAQCAtNjczLDggKzY3OSw5IEBACiAJCQkJMzc5MDI4QjgxNEZBQkU0OTAwN0U2
QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgKi8sCiAJCQkJNTE0MkIyNzIxNTE3Qzg5MTAw
QzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sICovLAogCQkJCTM3REM2NzhGMTQw
RDdEM0EwMEFCQ0NEQiAvKiBET01SYW5nZU9mU3RyaW5nLmh0bWwgKi8sCi0JCQkJQzA3RTZDQjEx
M0ZENzM4QTAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKKwkJCQlFMTIyMERD
OTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaHRtbCAqLywKIAkJCQk1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8sCisJCQkJQzA3RTZD
QjExM0ZENzM4QTAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKIAkJCQlDNTQw
Rjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBSZXNvdXJjZXM7CkBAIC04NzgsNiArODg1LDcgQEAKIAkJCQk1MUZDRjc5QTE1MzRB
QzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxMjIwREEwMTU1
QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RjQ5QzY5MTU1NDVDOEUwMDA3RjM5RCAvKiBE
T01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9N
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sCShyZXZpc2lv
biAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZGVkKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbignR0VUJywgJ2h0dHA6Ly93
d3cuaWFuYS5vcmcvZG9tYWlucy9leGFtcGxlLycsIHRydWUpOworICAgIHJlcXVlc3Quc2VuZChu
dWxsKTsKK30KKworPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1dlIHdp
bGwgZG8gc29tZSBYSFInaW5nIG5vdyEKKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICAr
IHRleHQvaHRtbAoKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV2Vi
Q2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBNZW1vcnlD
YWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgOiBOU09iamVjdCB7Cit9CitAZW5k
CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CisKK0BpbXBsZW1lbnRhdGlvbiBNZW1vcnlD
YWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUKKworLSAoaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7Cisg
ICAgW1dlYkNhY2hlIHNldERpc2FibGVkOllFU107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVk
Ok5PXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1VSTFJlcXVlc3QgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJlc291cmNlOihpZClpZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFT
b3VyY2UKK3sKKyAgICBbV2ViQ2FjaGUgc2V0RGlzYWJsZWQ6WUVTXTsKKyAgICBbV2ViQ2FjaGUg
c2V0RGlzYWJsZWQ6Tk9dOworCisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRGaW5pc2hM
b2FkaW5nRnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAg
W1dlYkNhY2hlIHNldERpc2FibGVkOllFU107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOk5P
XTsKKworICAgIGRpZEZpbmlzaExvYWQgPSBZRVM7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0
YVNvdXJjZQoreworICAgIFtXZWJDYWNoZSBzZXREaXNhYmxlZDpZRVNdOworICAgIFtXZWJDYWNo
ZSBzZXREaXNhYmxlZDpOT107Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitURVNUKFdlYktpdDEsIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlKQoreworICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNl
UG9vbCBhbGxvY10gaW5pdF07CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9w
dE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAs
IDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisKKyAgICBSZXRhaW5QdHI8TWVt
b3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxl
Z2F0ZShBZG9wdE5TLCBbW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUg
PSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIFtbd2ViVmlldy5nZXQoKSBtYWlu
RnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hM
b2FkKTsKKyAgICAKKyAgICBbcG9vbCBkcmFpbl07CisgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0
aG91dCBjcmFzaGluZywgdGhlIHRlc3QgcGFzc2VkLgorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>
<flag name="commit-queue"
          id="147343"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141280</attachid>
            <date>2012-05-10 15:35:36 -0700</date>
            <delta_ts>2012-05-10 19:30:43 -0700</delta_ts>
            <desc>with chromium typo fix</desc>
            <filename>ResourceHandle3.txt</filename>
            <type>text/plain</type>
            <size>39481</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA1LTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIDNyZCBwYXJ0
eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUgY2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgQWRkZWQgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgVGhlIGZpeCBp
cyB0byB1c2UgQ2FjaGVkUmVzb3VyY2VIYW5kbGUgdGhyb3VnaG91dCBNZW1vcnlDYWNoZSwgd2hp
Y2ggd2lsbCBjZXJ0YWlubHkKKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgYWxpdmUuIEFsc28g
cmVtb3ZlZCBlYXJsaWVyIGZpeGVzLgorCisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUu
Y3BwOiAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1hZ2VTZXQpOgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDogKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hl
ZEltYWdlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOiAoV2ViQ29y
ZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNoYWRlcik6CisgICAgICAgICogaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwOiAoV2ViQ29yZTo6UGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2Vk
UGFnZXNOb3cpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6IChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwOiAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RMaW5rUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSYXdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNldFBy
dW5lRW5hYmxlZCk6CisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlOjpDYWNoZWRSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZTo6b3Bl
cmF0b3I9KToKKyAgICAgICAgVGVhY2ggQ2FjaGVkUmVzb3VyY2VIYW5kbGUgaG93IHRvIG1ha2Ug
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGZyb20KKyAgICAgICAgYSBoYW5k
bGUgdG8gc3ViY2xhc3MuCisKIDIwMTItMDUtMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaGVhcCBzbmFwc2hvdCBjb21w
YXJpc29uIHZpZXcgaXMgYnJva2VuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwCShyZXZpc2lvbiAxMTY2ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw4ICsxMDYsOCBAQCBTdHlsZUNh
Y2hlZEltYWdlU2V0KiBDU1NJbWFnZVNldFZhbHVlOjpjCiAgICAgICAgIC8vIGFuZCBhbnkgQ1NT
IHRyYW5zZm9ybXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY5
OAogICAgICAgICBJbWFnZVdpdGhTY2FsZSBpbWFnZSA9IGJlc3RJbWFnZUZvclNjYWxlRmFjdG9y
KCk7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoaW1hZ2UuaW1hZ2VVUkwpKTsKLSAgICAgICAgaWYgKENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IGxvYWRlci0+cmVxdWVzdEltYWdlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAg
ICBtX2ltYWdlU2V0ID0gU3R5bGVDYWNoZWRJbWFnZVNldDo6Y3JlYXRlKGNhY2hlZEltYWdlLCBp
bWFnZS5zY2FsZUZhY3RvciwgdGhpcyk7CisgICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0
KSkgeworICAgICAgICAgICAgbV9pbWFnZVNldCA9IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmNyZWF0
ZShjYWNoZWRJbWFnZS5nZXQoKSwgaW1hZ2Uuc2NhbGVGYWN0b3IsIHRoaXMpOwogICAgICAgICAg
ICAgbV9hY2Nlc3NlZEJlc3RGaXRJbWFnZSA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMTY2ODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDggKzgyLDggQEAgU3R5bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSQogICAg
ICAgICBtX2FjY2Vzc2VkSW1hZ2UgPSB0cnVlOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSk7Ci0gICAgICAgIGlm
IChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0
KSkKLSAgICAgICAgICAgIG1faW1hZ2UgPSBTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoY2FjaGVk
SW1hZ2UpOworICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IGNh
Y2hlZEltYWdlID0gbG9hZGVyLT5yZXF1ZXN0SW1hZ2UocmVxdWVzdCkpCisgICAgICAgICAgICBt
X2ltYWdlID0gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGNhY2hlZEltYWdlLmdldCgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gKG1faW1hZ2UgJiYgbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpKSA/
IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihtX2ltYWdlLmdldCgpKSA6IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAJKHJldmlzaW9u
IDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAgU3R5bGVDYWNoZWRTaGFkZXIqIFdlYktp
dENTU1NoYWRlclZhbHVlOgogICAgICAgICBtX2FjY2Vzc2VkU2hhZGVyID0gdHJ1ZTsKIAogICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKG1fdXJsKSk7Ci0gICAgICAgIGlmIChDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGxv
YWRlci0+cmVxdWVzdFNoYWRlcihyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fc2hhZGVyID0gU3R5
bGVDYWNoZWRTaGFkZXI6OmNyZWF0ZShjYWNoZWRTaGFkZXIpOworICAgICAgICBpZiAoQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2hhZGVyPiBjYWNoZWRTaGFkZXIgPSBsb2FkZXItPnJlcXVl
c3RTaGFkZXIocmVxdWVzdCkpCisgICAgICAgICAgICBtX3NoYWRlciA9IFN0eWxlQ2FjaGVkU2hh
ZGVyOjpjcmVhdGUoY2FjaGVkU2hhZGVyLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gKG1f
c2hhZGVyICYmIG1fc2hhZGVyLT5pc0NhY2hlZFNoYWRlcigpKSA/IHN0YXRpY19jYXN0PFN0eWxl
Q2FjaGVkU2hhZGVyKj4obV9zaGFkZXIuZ2V0KCkpIDogMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw2IEBAIHZv
aWQgUGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2VkUGFnZXMKICAgICBtX2F1dG9yZWxlYXNl
VGltZXIuc3RvcCgpOwogCiAgICAgLy8gUG9zdHBvbmUgZGVhZCBwcnVuaW5nIHVudGlsIGFsbCBv
dXIgcmVzb3VyY2VzIGhhdmUgZ29uZSBkZWFkLgotICAgIGJvb2wgcHJ1bmVXYXNFbmFibGVkID0g
bWVtb3J5Q2FjaGUoKS0+cHJ1bmVFbmFibGVkKCk7CiAgICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1
bmVFbmFibGVkKGZhbHNlKTsKIAogICAgIENhY2hlZFBhZ2VTZXQgdG1wOwpAQCAtNTQ2LDEwICs1
NDUsOCBAQCB2b2lkIFBhZ2VDYWNoZTo6cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzCiAgICAgICAg
ICgqaXQpLT5kZXN0cm95KCk7CiAKICAgICAvLyBOb3cgZG8gdGhlIHBydW5lLgotICAgIGlmIChw
cnVuZVdhc0VuYWJsZWQpIHsKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1bmVFbmFibGVk
KHRydWUpOwotICAgICAgICBtZW1vcnlDYWNoZSgpLT5wcnVuZSgpOwotICAgIH0KKyAgICBtZW1v
cnlDYWNoZSgpLT5zZXRQcnVuZUVuYWJsZWQodHJ1ZSk7CisgICAgbWVtb3J5Q2FjaGUoKS0+cHJ1
bmUoKTsKIH0KIAogdm9pZCBQYWdlQ2FjaGU6OmF1dG9yZWxlYXNlKFBhc3NSZWZQdHI8Q2FjaGVk
UGFnZT4gcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2
aXNpb24gMTE2NjgxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0
ZUZyb21FbGVtZW50KCkKIAogICAgIC8vIERvIG5vdCBsb2FkIGFueSBpbWFnZSBpZiB0aGUgJ3Ny
YycgYXR0cmlidXRlIGlzIG1pc3Npbmcgb3IgaWYgaXQgaXMKICAgICAvLyBhbiBlbXB0eSBzdHJp
bmcuCi0gICAgQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMDsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRJbWFnZT4gbmV3SW1hZ2UgPSAwOwogICAgIGlmICghYXR0ci5pc051bGwoKSAm
JiAhc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkgewog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChkb2N1bWVu
dC0+Y29tcGxldGVVUkwoc291cmNlVVJJKGF0dHIpKSk7CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBuZXdJbWFn
ZSA9IG5ldyBDYWNoZWRJbWFnZShyZXF1ZXN0KTsKICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRM
b2FkaW5nKHRydWUpOwogICAgICAgICAgICAgbmV3SW1hZ2UtPnNldE93bmluZ0NhY2hlZFJlc291
cmNlTG9hZGVyKGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKLSAgICAgICAgICAg
IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5tX2RvY3VtZW50UmVzb3VyY2VzLnNl
dChuZXdJbWFnZS0+dXJsKCksIG5ld0ltYWdlKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLT5tX2RvY3VtZW50UmVzb3VyY2VzLnNldChuZXdJbWFnZS0+dXJs
KCksIG5ld0ltYWdlLmdldCgpKTsKICAgICAgICAgICAgIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBuZXdJbWFnZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5yZXF1ZXN0SW1hZ2UocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkocmV2aXNpb24gMTE2NjgxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1CiAgICAg
fQogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgbV9jYWNoZWRDdWVEYXRhID0gc3Rh
dGljX2Nhc3Q8Q2FjaGVkVGV4dFRyYWNrKj4oY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RU
ZXh0VHJhY2soY3VlUmVxdWVzdCkpOworICAgIG1fY2FjaGVkQ3VlRGF0YSA9IGNhY2hlZFJlc291
cmNlTG9hZGVyLT5yZXF1ZXN0VGV4dFRyYWNrKGN1ZVJlcXVlc3QpOwogICAgIGlmIChtX2NhY2hl
ZEN1ZURhdGEpCiAgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+YWRkQ2xpZW50KHRoaXMpOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlSGFuZGxlLmgJKHJldmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMiArNjEs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSgp
IHsgfQogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZShSKiByZXMpIDogQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGVCYXNlKHJlcykgeyB9CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlKGNvbnN0
IENhY2hlZFJlc291cmNlSGFuZGxlPFI+JiBvKSA6IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZShv
KSB7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQ2FjaGVkUmVzb3VyY2VIYW5kbGUo
Y29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8VT4mIG8pIDogQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlKG8uZ2V0KCkpIHsgfQogCiAgICAgICAgIFIqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Uio+KENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6Z2V0KCkpOyB9CiAgICAg
ICAgIFIqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQogICAgICAgICAgICAg
ICAgCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlJiBvcGVyYXRvcj0oUiogcmVzKSB7IHNl
dFJlc291cmNlKHJlcyk7IHJldHVybiAqdGhpczsgfSAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgeyBzZXRSZXNv
dXJjZShvLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IENhY2hlZFJlc291cmNlSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8VT4mIG8pIHsgc2V0UmVzb3VyY2Uoby5nZXQoKSk7IHJldHVybiAqdGhpczsgfQorCiAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmIG8p
IGNvbnN0IHsgcmV0dXJuIGdldCgpID09IG8uZ2V0KCk7IH0KICAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4gZ2V0
KCkgIT0gby5nZXQoKTsgfQogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDExNjY4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBGcmFtZSogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmZyYW1lKCkgY29uCiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5m
cmFtZSgpIDogMDsKIH0KIAotQ2FjaGVkSW1hZ2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKICAgICAg
ICAgaWYgKGYtPmxvYWRlcigpLT5wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSAh
PSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpIHsKQEAgLTE2MSwzNyArMTYxLDM3IEBAIENhY2hl
ZEltYWdlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWUKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICB9CiAgICAgfQotICAgIENhY2hlZEltYWdlKiByZXNvdXJjZSA9IHN0YXRpY19j
YXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJl
c291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRp
Y19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpKS5nZXQoKSkpOwogICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJl
c291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0K
IAotQ2FjaGVkRm9udCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRGb250
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIHJlcXVlc3Qs
IFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLUNhY2hlZFRleHRUcmFjayogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RUZXh0VHJhY2soUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFRleHRUcmFjayhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PENhY2hlZFRleHRUcmFjayo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZTo6VGV4dFRyYWNrUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkVGV4dFRyYWNr
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZSwgcmVx
dWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwog
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi1DYWNoZWRTaGFkZXIqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2hhZGVyKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRTaGFkZXIqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlNoYWRlclJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNoYWRlcio+KHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2hhZGVyUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmlu
ZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KICNlbmRpZgog
Ci1DYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0
eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNo
ZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2Fj
aGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
LCBwcmlvcml0eSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCByZXF1ZXN0
LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9yaXR5KS5nZXQo
KSk7CiB9CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogewogICAgIEtVUkwgdXJsID0g
TWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJs
KCkpOwogCkBAIC0yMDMsNDEgKzIwMywzNyBAQCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRS
ZXNvdXJjZUxvYWRlCiAgICAgaWYgKHVybC5zdHJpbmcoKSAhPSByZXF1ZXN0LnVybCgpKQogICAg
ICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwogCi0gICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogdXNl
clNoZWV0ID0gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdCwgY2hhcnNldCk7Ci0gICAg
Ci0gICAgYm9vbCBpbkNhY2hlID0gbWVtb3J5Q2FjaGUoKS0+YWRkKHVzZXJTaGVldCk7Ci0gICAg
aWYgKCFpbkNhY2hlKQotICAgICAgICB1c2VyU2hlZXQtPnNldEluQ2FjaGUodHJ1ZSk7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gdXNlclNoZWV0ID0gbmV3
IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdCwgY2hhcnNldCk7CiAKLSAgICB1c2VyU2hlZXQt
PmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRG
b3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpOworICAgIG1lbW9y
eUNhY2hlKCktPmFkZCh1c2VyU2hlZXQuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBsb2FkUmVzb3Vy
Y2UgY2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBpZiB0aGUgcmVzb3VyY2Ug
Y291bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGNh
bGwgaXQsIHRvbz8KIAotICAgIGlmICghaW5DYWNoZSkKLSAgICAgICAgdXNlclNoZWV0LT5zZXRJ
bkNhY2hlKGZhbHNlKTsKKyAgICB1c2VyU2hlZXQtPmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBT
a2lwU2VjdXJpdHlDaGVjaykpOwogICAgIAogICAgIHJldHVybiB1c2VyU2hlZXQ7CiB9CiAKLUNh
Y2hlZFNjcmlwdCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCitDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0
aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNjcmlwdCo+KHJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKTsKIH0KIAogI2lmIEVOQUJMRShYU0xUKQot
Q2FjaGVkWFNMU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHls
ZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFhTTFN0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVT
aGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PENhY2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhT
TFN0eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3Ry
aW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1ZHKQotQ2FjaGVkU1ZHRG9jdW1lbnQqIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1bWVudCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgcmVxdWVzdCwgcmVxdWVzdC51cmwoKSwgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENh
Y2hlZFNWR0RvY3VtZW50Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdEb2N1
bWVudFJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpLCBkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCkpLmdldCgpKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKICAgICBB
U1NFUlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoIHx8IHR5cGUgPT0gQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXIgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1N1YnJlc291cmNlKTsKQEAgLTI0NSw5ICsyNDEsOSBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlCiB9CiAjZW5kaWYKIAotQ2FjaGVkUmF3UmVzb3VyY2UqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RS
YXdSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlLCByZXF1
ZXN0LCBTdHJpbmcoKSwgb3B0aW9ucywgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBm
YWxzZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+KHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygp
LCBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGZhbHNlKS5nZXQoKSk7
CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKQEAgLTQxMCw3
ICs0MDYsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZvclBy
ZWxvYWQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwg
Ym9vbCBmb3JQcmVsb2FkKQogewogICAgIEtVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAK
QEAgLTQzNCwyNSArNDMwLDI1IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmUKICAgICB9CiAKICAgICAvLyBTZWUgaWYgd2UgY2FuIHVzZSBhbiBleGlzdGluZyByZXNv
dXJjZSBmcm9tIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1v
cnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yVVJM
KHVybCk7CiAKICAgICBpZiAocmVxdWVzdC51cmwoKSAhPSB1cmwpCiAgICAgICAgIHJlcXVlc3Qu
c2V0VVJMKHVybCk7CiAKLSAgICBzd2l0Y2ggKGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0
eXBlLCByZXF1ZXN0LCBmb3JQcmVsb2FkLCByZXNvdXJjZSkpIHsKKyAgICBzd2l0Y2ggKGRldGVy
bWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0LCBmb3JQcmVsb2FkLCByZXNvdXJj
ZS5nZXQoKSkpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291
cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBSZWxvYWQ6Ci0gICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShy
ZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7
CiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQs
IHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXZhbGlkYXRl
OgotICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNvdXJjZShyZXNvdXJjZSwgcHJpb3Jp
dHksIG9wdGlvbnMpOworICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNvdXJjZShyZXNv
dXJjZS5nZXQoKSwgcHJpb3JpdHksIG9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFVzZToKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7
Ci0gICAgICAgIG5vdGlmeUxvYWRlZEZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CisgICAgICAg
IG1lbW9yeUNhY2hlKCktPnJlc291cmNlQWNjZXNzZWQocmVzb3VyY2UuZ2V0KCkpOworICAgICAg
ICBub3RpZnlMb2FkZWRGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2UuZ2V0KCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKQEAgLTQ2Myw4ICs0NTksOCBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlCiAgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2Ut
PnVybCgpLCByZXNvdXJjZSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQotICAgIAotQ2FjaGVk
UmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKHJlc291
cmNlKTsKICAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7CkBAIC00NzUsMTMgKzQ3MSwx
MyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlCiAgICAgLy8gQ29w
eSB0aGUgVVJMIG91dCBvZiB0aGUgcmVzb3VyY2UgdG8gYmUgcmV2YWxpZGF0ZWQgaW4gY2FzZSBp
dCBnZXRzIGRlbGV0ZWQgYnkgdGhlIHJlbW92ZSgpIGNhbGwgYmVsb3cuCiAgICAgU3RyaW5nIHVy
bCA9IHJlc291cmNlLT51cmwoKTsKICAgICBib29sIHVybFByb3RvY29sSXNEYXRhID0gcmVzb3Vy
Y2UtPnVybCgpLnByb3RvY29sSXNEYXRhKCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIG5ld1Jlc291
cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2UtPnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNl
UmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2RpbmcoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2Ut
PnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2Rpbmco
KSk7CiAgICAgCi0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQg
dG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNlLCByZXNvdXJjZSk7CisgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jl
c291cmNlLmdldCgpLCByZXNvdXJjZSk7CiAgICAgbmV3UmVzb3VyY2UtPnNldFJlc291cmNlVG9S
ZXZhbGlkYXRlKHJlc291cmNlKTsKICAgICAKICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVz
b3VyY2UpOwotICAgIG1lbW9yeUNhY2hlKCktPmFkZChuZXdSZXNvdXJjZSk7CisgICAgbWVtb3J5
Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlLmdldCgpKTsKICAgICAKICAgICBuZXdSZXNvdXJjZS0+
c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKICAgICBuZXdSZXNvdXJjZS0+bG9hZCh0aGlzLCBv
cHRpb25zKTsKQEAgLTQ5MSwzOSArNDg3LDI2IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmUKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291
cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNl
TG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgQVNTRVJUKCFtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTChyZXF1ZXN0
LnVybCgpKSk7CiAgICAgCiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkxvYWRpbmcgQ2FjaGVk
UmVzb3VyY2UgZm9yICclcycuIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCkpOwogICAgIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNl
KHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQpOwotICAgIAotICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9y
eUNhY2hlKCktPmFkZChyZXNvdXJjZSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgY2hhcnNl
dCk7CiAgICAgCi0gICAgLy8gUHJldGVuZCB0aGUgcmVzb3VyY2UgaXMgaW4gdGhlIGNhY2hlLCB0
byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGVsZXRlZCBkdXJpbmcgdGhlIGxvYWQoKSBjYWxsLgot
ICAgIC8vIEZJWE1FOiBDYWNoZWRSZXNvdXJjZSBzaG91bGQganVzdCB1c2Ugbm9ybWFsIHJlZmNv
dW50aW5nIGluc3RlYWQuCi0gICAgaWYgKCFpbkNhY2hlKQotICAgICAgICByZXNvdXJjZS0+c2V0
SW5DYWNoZSh0cnVlKTsKKyAgICBib29sIGluQ2FjaGUgPSBtZW1vcnlDYWNoZSgpLT5hZGQocmVz
b3VyY2UuZ2V0KCkpOwogICAgIAogICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3Jp
dHkpOwotICAgIAotICAgIGJvb2wgd2FzUHJ1bmVFbmFibGVkID0gbWVtb3J5Q2FjaGUoKS0+cHJ1
bmVFbmFibGVkKCk7Ci0gICAgbWVtb3J5Q2FjaGUoKS0+c2V0UHJ1bmVFbmFibGVkKGZhbHNlKTsK
ICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKLSAgICBtZW1vcnlDYWNoZSgpLT5z
ZXRQcnVuZUVuYWJsZWQod2FzUHJ1bmVFbmFibGVkKTsKICAgICAKLSAgICBpZiAoIWluQ2FjaGUp
IHsKKyAgICBpZiAoIWluQ2FjaGUpCiAgICAgICAgIHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRS
ZXNvdXJjZUxvYWRlcih0aGlzKTsKLSAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUoZmFsc2Up
OwotICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQg
d2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVyZS4KICAgICBpZiAocmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoaW5DYWNoZSkKLSAgICAgICAgICAgIG1lbW9yeUNh
Y2hlKCktPnJlbW92ZShyZXNvdXJjZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlbGV0
ZSByZXNvdXJjZTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5n
ZXQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNzgxLDE0ICs3NjQsMTQgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYQogICAgIGlmICh0eXBlID09
IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCkKICAgICAgICAgZW5jb2RpbmcgPSBjaGFyc2V0LmlzRW1wdHkoKSA/IG1fZG9jdW1l
bnQtPmNoYXJzZXQoKSA6IGNoYXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Ug
PSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsK
LSAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5z
KHJlc291cmNlKSkpCisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGVuY29kaW5nLCBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwg
dHJ1ZSk7CisgICAgaWYgKCFyZXNvdXJjZSB8fCAobV9wcmVsb2FkcyAmJiBtX3ByZWxvYWRzLT5j
b250YWlucyhyZXNvdXJjZS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAgICAgcmVzb3VyY2Ut
PmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAgICBpZiAoIW1fcHJlbG9hZHMpCiAgICAgICAg
IG1fcHJlbG9hZHMgPSBhZG9wdFB0cihuZXcgTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPik7
Ci0gICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlKTsKKyAgICBtX3ByZWxvYWRzLT5hZGQocmVz
b3VyY2UuZ2V0KCkpOwogCiAjaWYgUFJFTE9BRF9ERUJVRwogICAgIHByaW50ZigiUFJFTE9BRElO
RyAlc1xuIiwgIHJlc291cmNlLT51cmwoKS5sYXRpbjEoKS5kYXRhKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDExNjY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywyNyArNjMsMjcgQEAgcHVibGljOgog
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50Kik7CiAgICAgfkNhY2hlZFJlc291cmNl
TG9hZGVyKCk7CiAKLSAgICBDYWNoZWRJbWFnZSogcmVxdWVzdEltYWdlKFJlc291cmNlUmVxdWVz
dCYpOwotICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RDU1NTdHlsZVNoZWV0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkg
PSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwotICAgIENhY2hlZENTU1N0eWxlU2hl
ZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpOwotICAgIENhY2hlZFNjcmlwdCogcmVxdWVzdFNjcmlwdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwotICAgIENhY2hlZEZvbnQqIHJlcXVlc3RG
b250KFJlc291cmNlUmVxdWVzdCYpOwotICAgIENhY2hlZFJhd1Jlc291cmNlKiByZXF1ZXN0UmF3
UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlcXVlc3RJbWFnZShSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNo
ZWV0PiByZXF1ZXN0Q1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJl
c29sdmVkKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBy
ZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0KTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RT
Y3JpcHQoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiByZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVxdWVzdFJh
d1Jlc291cmNlKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYp
OwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBDYWNoZWRTVkdEb2N1bWVudCogcmVxdWVzdFNWR0Rv
Y3VtZW50KFJlc291cmNlUmVxdWVzdCYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNWR0RvY3VtZW50PiByZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5k
aWYKICNpZiBFTkFCTEUoWFNMVCkKLSAgICBDYWNoZWRYU0xTdHlsZVNoZWV0KiByZXF1ZXN0WFNM
U3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRYU0xTdHlsZVNoZWV0PiByZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIENhY2hlZFJlc291cmNl
KiByZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZl
ZCk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RMaW5r
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
TG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKICNlbmRpZgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBDYWNoZWRUZXh0VHJhY2sqIHJlcXVlc3RUZXh0
VHJhY2soUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
VGV4dFRyYWNrPiByZXF1ZXN0VGV4dFRyYWNrKFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIENhY2hlZFNoYWRlciogcmVxdWVzdFNoYWRlcihS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFkZXI+
IHJlcXVlc3RTaGFkZXIoUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIAogICAgIC8vIExvZ3Mg
YW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVk
IFVSTC4KQEAgLTExOSw5ICsxMTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENh
Y2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2Up
OwogICAgIAogcHJpdmF0ZToKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0g
UmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsK
LSAgICBDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiwg
UmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwotICAg
IENhY2hlZFJlc291cmNlKiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHks
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVu
cmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOworICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBS
ZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBS
ZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAg
dm9pZCByZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIGVudW0gUmV2YWxpZGF0aW9uUG9saWN5
IHsgVXNlLCBSZXZhbGlkYXRlLCBSZWxvYWQsIExvYWQgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCShyZXZpc2lvbiAxMTY2ODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5
LDcgKzEyOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2aWN0UmVzb3VyY2VzKCk7CiAgICAgCiAg
ICAgdm9pZCBzZXRQcnVuZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcHJ1bmVFbmFibGVkID0g
ZW5hYmxlZDsgfQotICAgIGJvb2wgcHJ1bmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcnVu
ZUVuYWJsZWQ7IH0KICAgICB2b2lkIHBydW5lKCk7CiAgICAgdm9pZCBwcnVuZVRvUGVyY2VudGFn
ZShmbG9hdCB0YXJnZXRQZXJjZW50TGl2ZSk7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjY4MSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA1LTA5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIDNyZCBw
YXJ0eSBXZWJLaXQgYXBwcyB0aGF0IGRpc2FibGUgY2FjaGUgYXQgYSB3cm9uZyB0aW1lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA2MTU4ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkg
S29pdmlzdG8uCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQncyB2ZXJ5IHNpbWlsYXIgdG8g
TWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLAorICAgICAgICBidXQg
Zm9yIGRpc2FibGluZyB0aGUgY2FjaGUgaW5zdGVhZCBvZiB0cmlnZ2VyaW5nIGEgcHJ1bmUuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAgICAgICgtW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpm
cm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0
UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICgtW01lbW9yeUNhY2hlRGlzYWJs
ZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRp
bmdGcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1bTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJl
c291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6ZGlkRmFpbExvYWRpbmdXaXRoRXJy
b3I6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxMi0wNS0xMCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAg
ICAgIFtHVEtdIEVOQUJMRV9JRlJBTUVfU0VBTUxFU1Mgc3VwcG9ydApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDExNjY4MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNiArMTQxLDggQEAKIAkJQzUwN0U4QTcxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJh
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MDdF
OEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07CiAJCUM1NDBGNzc2
MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzc1MTUyRTREQTAwMEE0MEM4QyAvKiBT
aW1wbGlmeU1hcmt1cC5tbSAqLzsgfTsKIAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZl
cmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5o
dG1sICovOyB9OworCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CisJCUUxMjIw
RENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFNDkwMjk2ODE0RTJF
M0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBp
bmdTdHlsZUNyYXNoLm1tICovOyB9OwogCQlGM0ZDM0VFMzEzNjc4QjczMDAxMjZBNjUgLyogbGli
Z3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovOyB9OwogCQlGNkE2QkZC
QjE1NThBQzQ4MDA5MjYxMDcgLyogc2ltcGxlLXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2QTZCRkI5MTU1OEFCRjgwMDky
NjEwNyAvKiBzaW1wbGUtdW5sb2FkLmh0bWwgKi87IH07CkBAIC0xODIsNiArMTg0LDcgQEAKIAkJ
CQlCNTVGMTFCNzE1MTdEMDMzMDA5MTU5MTYgLyogYXR0cmlidXRlZFN0cmluZ0N1c3RvbUZvbnQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQg
LyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
MTQyQjI3MzE1MTdDOEM4MDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCisJCQkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9y
eUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJNTE3RTdFMDQxNTExMTlDMTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1
bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTMzREM4OTEyMTQxOTU1RkUwMDc0N0VGNyAvKiBzaW1w
bGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zNjAsNiArMzYzLDggQEAK
IAkJQzUwN0U4QTYxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJhci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3BlY3RvckJhci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5
TWFya3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxp
ZnlNYXJrdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDBGNzgzMTUyRTVB
NzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUx
MjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQw
MDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVHlwaW5nU3R5bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRo
ID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjZB
NkJGQjgxNTU4QUJGODAwOTI2MTA3IC8qIHNpbXBsZS1pZnJhbWUtdW5sb2FkLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTQsNiArNjU5LDcgQEAKIAkJCQkzNzc2QkM2MjE1
MDk0NkJDMDA0M0E2NkQgLyogRGV2aWNlU2NhbGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMubW0g
Ki8sCiAJCQkJOTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25C
YWNrLm1tICovLAogCQkJCUM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIu
bW0gKi8sCisJCQkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJs
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTUxN0U3REZCMTUxMTBFQTYw
MEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0g
Ki8sCiAJCQkJMzcyMkM4NjgxNDYxRTAzRTAwQzQ1RDAwIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9N
UmFuZ2UubW0gKi8sCiAJCQkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFy
a3VwLm1tICovLApAQCAtNjczLDggKzY3OSw5IEBACiAJCQkJMzc5MDI4QjgxNEZBQkU0OTAwN0U2
QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgKi8sCiAJCQkJNTE0MkIyNzIxNTE3Qzg5MTAw
QzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1sICovLAogCQkJCTM3REM2NzhGMTQw
RDdEM0EwMEFCQ0NEQiAvKiBET01SYW5nZU9mU3RyaW5nLmh0bWwgKi8sCi0JCQkJQzA3RTZDQjEx
M0ZENzM4QTAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKKwkJCQlFMTIyMERD
OTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaHRtbCAqLywKIAkJCQk1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8sCisJCQkJQzA3RTZD
QjExM0ZENzM4QTAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCAqLywKIAkJCQlDNTQw
Rjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBSZXNvdXJjZXM7CkBAIC04NzgsNiArODg1LDcgQEAKIAkJCQk1MUZDRjc5QTE1MzRB
QzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxMjIwREEwMTU1
QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RjQ5QzY5MTU1NDVDOEUwMDA3RjM5RCAvKiBE
T01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9N
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sCShyZXZpc2lv
biAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZGVkKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbignR0VUJywgJ2h0dHA6Ly93
d3cuaWFuYS5vcmcvZG9tYWlucy9leGFtcGxlLycsIHRydWUpOworICAgIHJlcXVlc3Quc2VuZChu
dWxsKTsKK30KKworPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1dlIHdp
bGwgZG8gc29tZSBYSFInaW5nIG5vdyEKKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICAr
IHRleHQvaHRtbAoKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV2Vi
Q2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBNZW1vcnlD
YWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgOiBOU09iamVjdCB7Cit9CitAZW5k
CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CisKK0BpbXBsZW1lbnRhdGlvbiBNZW1vcnlD
YWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUKKworLSAoaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7Cisg
ICAgW1dlYkNhY2hlIHNldERpc2FibGVkOllFU107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVk
Ok5PXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1VSTFJlcXVlc3QgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJlc291cmNlOihpZClpZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFT
b3VyY2UKK3sKKyAgICBbV2ViQ2FjaGUgc2V0RGlzYWJsZWQ6WUVTXTsKKyAgICBbV2ViQ2FjaGUg
c2V0RGlzYWJsZWQ6Tk9dOworCisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRGaW5pc2hM
b2FkaW5nRnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAg
W1dlYkNhY2hlIHNldERpc2FibGVkOllFU107CisgICAgW1dlYkNhY2hlIHNldERpc2FibGVkOk5P
XTsKKworICAgIGRpZEZpbmlzaExvYWQgPSBZRVM7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0
YVNvdXJjZQoreworICAgIFtXZWJDYWNoZSBzZXREaXNhYmxlZDpZRVNdOworICAgIFtXZWJDYWNo
ZSBzZXREaXNhYmxlZDpOT107Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitURVNUKFdlYktpdDEsIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlKQoreworICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNl
UG9vbCBhbGxvY10gaW5pdF07CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9w
dE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAs
IDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisKKyAgICBSZXRhaW5QdHI8TWVt
b3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxl
Z2F0ZShBZG9wdE5TLCBbW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUg
PSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIFtbd2ViVmlldy5nZXQoKSBtYWlu
RnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hM
b2FkKTsKKyAgICAKKyAgICBbcG9vbCBkcmFpbl07CisgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0
aG91dCBjcmFzaGluZywgdGhlIHRlc3QgcGFzc2VkLgorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>