<?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>71149</bug_id>
          
          <creation_ts>2011-10-28 15:24:51 -0700</creation_ts>
          <short_desc>Merge CachedResourceRequest and SubresourceLoader, delete SubresourceClient</short_desc>
          <delta_ts>2012-04-13 11:11:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72491</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>pkasting</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>492718</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-28 15:24:51 -0700</bug_when>
    <thetext>As of http://trac.webkit.org/changeset/98380, CachedResourceRequest is the only SubresourceLoaderClient.  SubresourceLoader does little more than call its client.  Ergo, merge them.

Call the merged class SubresourceLoader, because CachedResourceRequest is the worst naming decision I&apos;ve made on this project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492728</commentid>
    <comment_count>1</comment_count>
      <attachid>112923</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-28 15:34:06 -0700</bug_when>
    <thetext>Created attachment 112923
Attempt #1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492758</commentid>
    <comment_count>2</comment_count>
      <attachid>112923</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-28 16:10:31 -0700</bug_when>
    <thetext>Comment on attachment 112923
Attempt #1

Attachment 112923 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10244058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493427</commentid>
    <comment_count>3</comment_count>
      <attachid>113070</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-31 11:40:39 -0700</bug_when>
    <thetext>Created attachment 113070
Address compile failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493501</commentid>
    <comment_count>4</comment_count>
      <attachid>113070</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-31 14:32:34 -0700</bug_when>
    <thetext>Comment on attachment 113070
Address compile failure

Attachment 113070 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10241878

New failing tests:
http/tests/inspector/resource-tree/resource-tree-reload.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499332</commentid>
    <comment_count>5</comment_count>
      <attachid>114360</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-11-09 13:58:23 -0800</bug_when>
    <thetext>Created attachment 114360
Fix chromium test failure + merge to trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503008</commentid>
    <comment_count>6</comment_count>
      <attachid>114360</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-15 10:10:26 -0800</bug_when>
    <thetext>Comment on attachment 114360
Fix chromium test failure + merge to trunk

This looks great.  A couple ideas for a follow-up patch:

1) Add some ASSERTS to the destructor that show we properly advance the state machine to the end (and that documenting becomes null).
2) Use a member variable to track whether we&apos;ve incremented/decremented the request count to ensure we balance them properly (e.g., by ASSERTing in its destructor that we&apos;ve balanced).  That will also remove a bunch of multipart related banches because we can tell this object to decrement the request count if it hasn&apos;t already done so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503023</commentid>
    <comment_count>7</comment_count>
      <attachid>114360</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 10:23:01 -0800</bug_when>
    <thetext>Comment on attachment 114360
Fix chromium test failure + merge to trunk

Rejecting attachment 114360 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:
ubresourceLoaderClient.h
rm &apos;Source/WebCore/loader/SubresourceLoaderClient.h&apos;
patching file Source/WebCore/loader/cf/SubresourceLoaderCF.cpp
patching file Source/WebCore/loader/ResourceLoader.cpp
patching file Source/WebCore/loader/ResourceLoadScheduler.h
patching file Source/WebCore/loader/SubresourceLoader.cpp
patching file Source/WebCore/loader/SubresourceLoader.h

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

Full output: http://queues.webkit.org/results/10372598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503037</commentid>
    <comment_count>8</comment_count>
      <attachid>115194</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-11-15 10:35:46 -0800</bug_when>
    <thetext>Created attachment 115194
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503164</commentid>
    <comment_count>9</comment_count>
      <attachid>115194</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 12:40:31 -0800</bug_when>
    <thetext>Comment on attachment 115194
Patch for landing

Clearing flags on attachment: 115194

Committed r100311: &lt;http://trac.webkit.org/changeset/100311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503165</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 12:40:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504980</commentid>
    <comment_count>11</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-11-17 10:38:57 -0800</bug_when>
    <thetext>This patch seems to have caused http://code.google.com/p/chromium/issues/detail?id=104582 downstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506882</commentid>
    <comment_count>12</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-11-21 04:46:42 -0800</bug_when>
    <thetext>This patch caused http://code.google.com/p/chromium/issues/detail?id=104920 upstream. 
didFailLoading is now called on InspectorInstrumentation when XHR is loaded correctly, because resource loading is cancelled after successful load.

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

&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:82
&gt; +        m_loader-&gt;cancel();

This triggers cancellation.

&gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:-159
&gt; -    if (m_finishing)

This check is missing now. We can override ResourceLoader::cancel() in SubresourceLoader::cancel() and add this check there, does that seem correct to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602241</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-13 11:11:30 -0700</bug_when>
    <thetext>Another regression from this change: bug 83918.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112923</attachid>
            <date>2011-10-28 15:34:06 -0700</date>
            <delta_ts>2011-10-31 11:40:39 -0700</delta_ts>
            <desc>Attempt #1</desc>
            <filename>crr_sl.txt</filename>
            <type>text/plain</type>
            <size>77426</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTg3MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQw
LDggKzIxNDAsNiBAQAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBcCiAJU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBcCkBAIC0yMjMw
LDcgKzIyMjgsNiBAQAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDk4NzMyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTkwMiw3ICs5MDIsNiBAQAogICAgIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgXAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgXAotICAgIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBcCiAgICAg
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIFwKQEAgLTE5MjUsNyArMTkyNCw2
IEBACiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggXAogICAg
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCBcCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggXAogICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggXAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMTAtMjggIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QgaXMgbm93IHRoZSBvbmx5IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50CisgICAgICAgIE1l
cmdlIENhY2hlZFJlc291cmNlUmVxdWVzdCBpbnRvIFN1YnJlc291cmNlTG9hZGVyIGFuZCBkZWxl
dGUKKyAgICAgICAgdGhlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IGludGVyZmFjZS4gQSBmZXcg
aXRlbXMgd2VyZSBtb3ZlZAorICAgICAgICB0byBDYWNoZWRSZXNvdXJjZSBpbnN0ZWFkIG9mIFN1
YnJlc291cmNlTG9hZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OlN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOiBE
byB3b3JrIHRoYXQgaGFkIHByZXZpb3VzbHkgYmVlbgorICAgICAgICAgICAgZG9uZSBpbiBTdWJy
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKCkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJy
ZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6IERvIHRoZSBjbGVhbnVwIHdvcmsgdGhh
dCB3YXMKKyAgICAgICAgICAgIGR1cGxpY2F0ZWQgdGhyb3VnaG91dCB0aGUgdmFyaW91cyB0ZXJt
aW5hbCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FsbGJhY2tzLgorICAgICAgICAqIGxvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oOiBGaXggaW5kZW50YXRpb24gc3R5bGUgaXNzdWVzLgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkKTogRG8gdGhlIHdvcmsg
dGhhdCBoYWQgYmVlbiBkb25lIGluCisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6
OmxvYWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNldFJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjpzdG9wTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
Y2FuRGVsZXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBsb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA6Cisg
ICAgICAgICogbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBsb2FkZXIvY2hyb21pdW0vU3VicmVzb3VyY2VMb2FkZXJD
aHJvbWl1bS5jcHA6CisKIDIwMTEtMTAtMjggIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViQ29yZSBwYXJ0IG9mOgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDk4NzMyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTI1ODc4LDEwICsyNTg3OCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcU3Vi
c3RpdHV0ZURhdGEuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0yNjE3MywxNCArMjYxNjksNiBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
bG9hZGVyXGNhY2hlXENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAiCi0JCQkJCT4KLQkJCQk8L0Zp
bGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkU2NyaXB0LmNwcCIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk4NzMyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzgsNyArNTc4LDYg
QEAKICAgICAgICAgICAgICdsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgnLAogICAgICAg
ICAgICAgJ2xvYWRlci9TdWJmcmFtZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
Q2xpZW50LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oJywKICAgICAg
ICAgICAgICdsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgnLAogICAgICAgICAgICAgJ2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgnLApAQCAtNTk3LDcgKzU5Niw2IEBACiAgICAgICAgICAg
ICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oJywKICAgICAgICAgICAgICdsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2Fj
aGVkU3R5bGVTaGVldENsaWVudC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaCcsCkBA
IC0yODUwLDcgKzI4NDgsNiBAQAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwJywKLSAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCcsCiAgICAgICAgICAg
ICAnbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAnLApAQCAtMjg2MCw3ICsyODU3LDYg
QEAKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwJywKICAgICAgICAg
ICAgICdsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAnLAogICAgICAgICAgICAgJ2xv
YWRlci9jaHJvbWl1bS9DYWNoZWRSYXdSZXNvdXJjZUNocm9taXVtLmNwcCcsCi0gICAgICAgICAg
ICAnbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL2Nocm9taXVtL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2Nocm9taXVtL1Jlc291cmNlTG9hZGVyQ2hy
b21pdW0uY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2hyb21pdW0vU3VicmVzb3VyY2VMb2Fk
ZXJDaHJvbWl1bS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk4NzMy
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk3
MCw3ICs5NzAsNiBAQAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKICAgICBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAotICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKICAgICBsb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICBsb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA5ODczMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDcgKzM0Niw2
IEBACiAJCTFBMkU2RTU5MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJFNkU1NzBDQzU1MjEzMDA0
QTIwNjIgLyogU1FMVmFsdWUuY3BwICovOyB9OwogCQkxQTJFNkU1QTBDQzU1MjEzMDA0QTIwNjIg
LyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMkU2RTU4MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBMkU2RTdBMENDNTU2RDUwMDRB
MjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRo
b3JpemVyLmNwcCAqLzsgfTsKLQkJMUEzMTc4OTMwQjIwQTgxNjAwMzE2OTg3IC8qIFN1YnJlc291
cmNlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTMxNzg5MjBCMjBBODE2MDAzMTY5ODcgLyogU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QTM0MTdDOTBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzQxN0M3MENFQ0ZGMjUw
MDQ5Q0JERSAvKiBKU0N1c3RvbVZvaWRDYWxsYmFjay5oICovOyB9OwogCQkxQTM0MTdDQTBDRUNG
RjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNDE3QzgwQ0VDRkYyNTAwNDlDQkRFIC8q
IEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCAqLzsgfTsKIAkJMUE0OTRCRkEwQTEyMkY0NDAwRkRB
RkMxIC8qIEpTSFRNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE0OTRCRjgwQTEyMkY0NDAwRkRBRkMxIC8qIEpTSFRNTEVsZW1lbnQu
Y3BwICovOyB9OwpAQCAtNTczMCw4ICs1NzI5LDYgQEAKIAkJRDBCQzU0NDkxNDQzQUM0QTAwRTEw
NURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRT
dHlsZVNoZWV0Q2xpZW50LmggKi87IH07CiAJCUQwQ0U1OEY4MTI1RTRDQzIwMEYzRjE5OSAvKiBS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAgKi87IH07CiAJCUQwQ0U1OEY5MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQwQ0U1OEY3MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlEMEQx
NDFCMjEyQjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwRDE0MUIwMTJCMkJGNTIw
MEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwICovOyB9OwotCQlEMEQxNDFCMzEy
QjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEQxNDFCMTEyQjJCRjUyMDBFMzk2MjAg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDBFREE3NzQxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJh
d1Jlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQwRURBNzcyMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi87
IH07CiAJCUQwRURBNzc1MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3NzMxNDNF
MzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi87IH07CiAJCUQwRkYyQTVEMTFG
OEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9h
ZGVyLmNwcCAqLzsgfTsKQEAgLTczNzIsNyArNzM2OSw2IEBACiAJCTFBMkU2RTU3MENDNTUyMTMw
MDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTUUxWYWx1ZS5jcHA7IHBhdGggPSBzcWwvU1FMVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTJFNkU1ODBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVmFsdWUuaDsgcGF0aCA9IHNxbC9T
UUxWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJFNkU3ODBDQzU1NkQ1
MDA0QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTUUxpdGVBdXRob3JpemVyLmNwcDsgcGF0aCA9IHNxbC9TUUxpdGVBdXRo
b3JpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEzMTc4OTIwQjIwQTgx
NjAwMzE2OTg3IC8qIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBMzQxN0M3MENFQ0ZGMjUwMDQ5Q0JERSAvKiBKU0N1c3RvbVZvaWRD
YWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbVZvaWRD
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM0MTdDODBDRUNGRjI1
MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTQ5NEJCQjBBMTIyRENEMDBGREFGQzEgLyogSFRNTEVsZW1lbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDEwLDggKzEzMDA2LDYgQEAKIAkJRDBCQzU0NDgxNDQzQUM0
QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMENFNThGNjEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0U1OEY3
MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUQwRDE0MUIwMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBE
MTQxQjExMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hl
ZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3
NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgzOTMsOCArMTgzODcsNiBAQAogCQkJCUU0N0I0
QkU2MEU3MTI0MTYwMDAzODg1NCAvKiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5oICovLAogCQkJCUJD
QjE2QzEwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJ
CQkJQkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggKi8s
Ci0JCQkJRDBEMTQxQjAxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5j
cHAgKi8sCi0JCQkJRDBEMTQxQjExMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVx
dWVzdC5oICovLAogCQkJCUJDQjE2QzBBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQu
Y3BwICovLAogCQkJCUJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAq
LywKIAkJCQlEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVu
dC5oICovLApAQCAtMTk4MjgsNyArMTk4MjAsNiBAQAogCQkJCUQwMDBFRDI2MTFDMUI5Q0QwMEM0
NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oICovLAogCQkJCTkzRTIyN0RGMEFGNTg5QUQwMEQ0ODMy
NCAvKiBTdWJyZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MzAwQURCQTVERTAwQTQ1
NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi8sCi0JCQkJMUEzMTc4OTIwQjIwQTgxNjAwMzE2
OTg3IC8qIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJNjU5QTdEMTIwQjZEQjRE
OTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi8sCiAJCQkJMUE4RjZCMDEwREI1MzAwNjAw
MURCNzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oICovLAogCQkJCUY1MjNEMjc4MDJERTQzRDcw
MTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCAqLywKQEAgLTIxNjY0LDcgKzIxNjU1
LDYgQEAKIAkJCQlCQ0IxNkMyMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0I0QkU4MEU3MTI0MTYwMDAzODg1NCAv
KiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMkEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlEMEQxNDFCMzEyQjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQkM1NDQ5MTQ0M0FD
NEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI0MDA1LDcgKzIzOTk1LDYgQEAKIAkJCQlEMDAwRUQyODExQzFCOUNEMDBDNDc3MjYgLyogU3Vi
ZnJhbWVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREQ0MTI1MUYxMkQwMDNFRjI2
OSAvKiBTdWJtaXRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzQ4MEFEQkE1
REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUEz
MTc4OTMwQjIwQTgxNjAwMzE2OTg3IC8qIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2QjAyMERCNTMwMDYwMDFEQjc5NCAvKiBTdWJzdGl0
dXRlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZC
MiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk5NSw3ICsyNDk4
NCw2IEBACiAJCQkJQkNCMTZDMUYwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0N0I0QkU5MEU3MTI0MTYwMDAzODg1NCAvKiBDYWNoZWRS
ZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMyOTA5NzlDM0JEMDA0
Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRDBE
MTQxQjIxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0IxNkMyMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2QzI3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxODI3NDkzMTM0Q0E0QzEwMEI5
OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2Nocm9taXVtL1N1YnJlc291cmNlTG9hZGVyQ2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jaHJvbWl1bS9TdWJyZXNvdXJjZUxv
YWRlckNocm9taXVtLmNwcAkocmV2aXNpb24gOTg3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2hyb21pdW0vU3VicmVzb3VyY2VMb2FkZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsOSArNDMsNyBAQAogICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKICAgICAKICAgICBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRG93bmxvYWREYXRhKGxlbmd0aCk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT5kaWREb3dubG9hZERhdGEodGhpcywgbGVuZ3RoKTsKKyAgICBtX3Jl
c291cmNlLT5kaWREb3dubG9hZERhdGEobGVuZ3RoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2hyb21pdW0vQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA5ODczMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jaHJvbWl1bS9DYWNoZWRSZXNvdXJjZVJlcXVlc3RDaHJvbWl1bS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMSwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCi0KLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5o
IgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZERvd25sb2FkRGF0YShTdWJyZXNvdXJj
ZUxvYWRlciogbG9hZGVyLCBpbnQgbGVuZ3RoKQotewotICAgIEFTU0VSVF9VTlVTRUQobG9hZGVy
LCBsb2FkZXIgPT0gbV9sb2FkZXIpOwotICAgIG1fcmVzb3VyY2UtPmRpZERvd25sb2FkRGF0YShs
ZW5ndGgpOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDk4NzMyKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCi0jaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkWFNMU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNp
b24gOTg3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisj
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtMjU2LDExICsyNTYsMTAgQEAKIAogdm9pZCBDYWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQ
YWludEJyb2tlbkltYWdlKCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3JlcXVlc3QgPyBtX3Jl
cXVlc3QtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmZyYW1lKCkgOiAwOwotICAgIGlmICghZnJh
bWUpCisgICAgaWYgKCFtX2xvYWRlciB8fCBtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaG91bGRQYWludEJyb2tlbkltYWdlID0gZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShtX3Jlc291cmNl
UmVxdWVzdC51cmwoKSk7CisgICAgbV9zaG91bGRQYWludEJyb2tlbkltYWdlID0gbV9sb2FkZXIt
PmZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRQYWludEJyb2tlbkltYWdlKG1fcmVzb3Vy
Y2VSZXF1ZXN0LnVybCgpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQpAQCAtMjkz
LDEwICsyOTIsOSBAQAogCiBzaXplX3QgQ2FjaGVkSW1hZ2U6Om1heGltdW1EZWNvZGVkSW1hZ2VT
aXplKCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3JlcXVlc3QgPyBtX3JlcXVlc3QtPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPmZyYW1lKCkgOiAwOwotICAgIGlmICghZnJhbWUpCisgICAgaWYg
KCFtX2xvYWRlciB8fCBtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCk7Cisg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9sb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkt
PnNldHRpbmdzKCk7CiAgICAgcmV0dXJuIHNldHRpbmdzID8gc2V0dGluZ3MtPm1heGltdW1EZWNv
ZGVkSW1hZ2VTaXplKCkgOiAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDk4NzMyKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTM4LDcgKzM3LDkgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtODAsNiArODEsNDEgQEAKICAgICBy
ZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKK3N0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBl
VG9UYXJnZXRUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKKyNpZiBFTkFC
TEUoWFNMVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlm
CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3R5bGVTaGVldDsKKyAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6IAorICAgICAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc1NjcmlwdDsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVz
b3VyY2U6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzRm9udFJlc291
cmNlOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CisgICAgICAgIHJl
dHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7CisgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6UmF3UmVzb3VyY2U6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdl
dElzU3VicmVzb3VyY2U7ICAgIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0SXNQcmVmZXRjaDsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJl
cmVuZGVyOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZXJlbmRl
cjsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6CisgICAgICAgIHJl
dHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CisjZW5kaWYKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q3VlUmVzb3VyY2U6
CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzQ3VlOworI2VuZGlmCisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzU3VicmVzb3VyY2U7Cit9CisjZW5kaWYKKwogREVGSU5FX0RFQlVHX09OTFlf
R0xPQkFMKFJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUmVzb3VyY2VMZWFrQ291bnRlciwg
KCJDYWNoZWRSZXNvdXJjZSIpKTsKIAogQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlKQpAQCAtMTM4LDExICsxNzQs
NDkgQEAKIHsKICAgICBtX29wdGlvbnMgPSBvcHRpb25zOwogICAgIG1fbG9hZGluZyA9IHRydWU7
Ci0gICAgbV9yZXF1ZXN0ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKGNhY2hlZFJlc291
cmNlTG9hZGVyLCB0aGlzLCBvcHRpb25zKTsKLSAgICBpZiAobV9yZXF1ZXN0KSB7Ci0gICAgICAg
IG1fc3RhdHVzID0gUGVuZGluZzsKLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmluY3Jl
bWVudFJlcXVlc3RDb3VudCh0aGlzKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIG1f
cmVzb3VyY2VSZXF1ZXN0LnNldFRhcmdldFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRU
eXBlKHR5cGUoKSkpOworI2VuZGlmCisKKyAgICBpZiAoIWFjY2VwdCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEFjY2VwdChhY2NlcHQoKSk7CisKKyAgICBp
ZiAoaXNDYWNoZVZhbGlkYXRvcigpKSB7CisgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZVRvUmV2YWxpZGF0ZSA9IG1fcmVzb3VyY2VUb1JldmFsaWRhdGU7CisgICAgICAgIEFTU0VSVChy
ZXNvdXJjZVRvUmV2YWxpZGF0ZS0+Y2FuVXNlQ2FjaGVWYWxpZGF0b3IoKSk7CisgICAgICAgIEFT
U0VSVChyZXNvdXJjZVRvUmV2YWxpZGF0ZS0+aXNMb2FkZWQoKSk7CisgICAgICAgIGNvbnN0IFN0
cmluZyYgbGFzdE1vZGlmaWVkID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0
cEhlYWRlckZpZWxkKCJMYXN0LU1vZGlmaWVkIik7CisgICAgICAgIGNvbnN0IFN0cmluZyYgZVRh
ZyA9IHJlc291cmNlVG9SZXZhbGlkYXRlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiRVRh
ZyIpOworICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkgfHwgIWVUYWcuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9s
aWN5KCkgIT0gQ2FjaGVQb2xpY3lSZWxvYWQpOworICAgICAgICAgICAgaWYgKGNhY2hlZFJlc291
cmNlTG9hZGVyLT5jYWNoZVBvbGljeSgpID09IENhY2hlUG9saWN5UmV2YWxpZGF0ZSkKKyAgICAg
ICAgICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNv
bnRyb2wiLCAibWF4LWFnZT0wIik7CisgICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICBpZiAo
IWVUYWcuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZCgiSWYtTm9uZS1NYXRjaCIsIGVUYWcpOworICAgICAgICB9CiAgICAgfQor
CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYgKHR5cGUoKSA9PSBDYWNoZWRSZXNv
dXJjZTo6TGlua1ByZWZldGNoIHx8IHR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZXJl
bmRlciB8fCB0eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZSkKKyAgICAg
ICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQdXJwb3NlIiwgInByZWZl
dGNoIik7CisjZW5kaWYKKyAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShsb2FkUHJp
b3JpdHkoKSk7CisgICAgCisgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCkt
PmZyYW1lKCksIHRoaXMsIG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Jlc291cmNlUmVxdWVzdC5wcmlv
cml0eSgpLCBvcHRpb25zKTsKKyAgICBpZiAoIW1fbG9hZGVyIHx8IG1fbG9hZGVyLT5yZWFjaGVk
VGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBp
biBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KKyAgICAg
ICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFydCBsb2FkaW5nICclcyciLCB1cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgICAgICBpZiAobV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSkgCisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQo
dGhpcyk7IAorICAgICAgICBlcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc3RhdHVzID0gUGVuZGluZzsKKyAgICBjYWNoZWRS
ZXNvdXJjZUxvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KHRoaXMpOwogfQogCiB2b2lkIENh
Y2hlZFJlc291cmNlOjpjaGVja05vdGlmeSgpCkBAIC0xNzYsNyArMjUwLDggQEAKIAogdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoKCkKIHsKLSAgICBtX3N0YXR1cyA9IENhY2hlZDsKKyAgICBp
ZiAoIWVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgbV9zdGF0dXMgPSBDYWNoZWQ7CiB9CiAKIGJv
b2wgQ2FjaGVkUmVzb3VyY2U6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4pCkBAIC0yMzEsNiArMzA2LDkgQEAKIHsKICAgICBtX3Jlc3BvbnNl
ID0gcmVzcG9uc2U7CiAgICAgbV9yZXNwb25zZVRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7Cisg
ICAgU3RyaW5nIGVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworICAgIGlm
ICghZW5jb2RpbmcuaXNOdWxsKCkpCisgICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKIH0K
IAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0U2VyaWFsaXplZENhY2hlZE1ldGFkYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtMjYzLDggKzM0MSw4IEBACiAKIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBBU1NFUlQobV9yZXF1ZXN0KTsgICAg
ICAgICAgICAKLSAgICBtX3JlcXVlc3QuY2xlYXIoKTsKKyAgICBBU1NFUlQobV9sb2FkZXIpOyAg
ICAgICAgICAgIAorICAgIG1fbG9hZGVyID0gMDsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiBwcm90ZWN0KHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gOTg3MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTEgKzQ0LDExIEBACiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xh
c3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JS
ZXNvdXJjZTsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwor
Y2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIC8vIEEgcmVzb3VyY2UgdGhhdCBpcyBoZWxkIGlu
IHRoZSBjYWNoZS4gQ2xhc3NlcyB3aG8gd2FudCB0byB1c2UgdGhpcyBvYmplY3Qgc2hvdWxkIGRl
cml2ZQogLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudCwgdG8gZ2V0IHRoZSBmdW5jdGlvbiBj
YWxscyBpbiBjYXNlIHRoZSByZXF1ZXN0ZWQgZGF0YSBoYXMgYXJyaXZlZC4KQEAgLTE4Nyw3ICsx
ODcsNyBAQAogICAgIC8vIFJldHVybnMgY2FjaGVkIG1ldGFkYXRhIG9mIHRoZSBnaXZlbiB0eXBl
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlLgogICAgIENhY2hlZE1ldGFkYXRhKiBjYWNo
ZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlEKSBjb25zdDsKIAotICAgIGJvb2wgY2FuRGVs
ZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9yZXF1ZXN0ICYmICFtX3By
ZWxvYWRDb3VudCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSAm
JiAhbV9wcm94eVJlc291cmNlOyB9CisgICAgYm9vbCBjYW5EZWxldGUoKSBjb25zdCB7IHJldHVy
biAhaGFzQ2xpZW50cygpICYmICFtX2xvYWRlciAmJiAhbV9wcmVsb2FkQ291bnQgJiYgIW1faGFu
ZGxlQ291bnQgJiYgIW1fcmVzb3VyY2VUb1JldmFsaWRhdGUgJiYgIW1fcHJveHlSZXNvdXJjZTsg
fQogICAgIGJvb2wgaGFzT25lSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVDb3VudCA9
PSAxOyB9CiAKICAgICBib29sIGlzRXhwaXJlZCgpIGNvbnN0OwpAQCAtMjUzLDcgKzI1Myw3IEBA
CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7CiAgICAgU3RyaW5nIG1f
YWNjZXB0OwotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IG1fcmVxdWVzdDsKKyAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwogICAgIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBtX29wdGlvbnM7CiAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3Jp
dHk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5ODczMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMyOSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChr
bm9sbEBtcGktaGQubXBnLmRlKQotICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDIgV2FsZG8gQmFzdGlhbiAo
YmFzdGlhbkBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChz
YW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCIKLQotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2UuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgot
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCi0j
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVy
LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLXN0
YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJn
ZXRUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSNpZiBFTkFCTEUoWFNM
VCkKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgotI2VuZGlmCi0gICAg
ICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3R5bGVTaGVldDsKLSAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpTY3JpcHQ6IAotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc1NjcmlwdDsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6
Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzRm9udFJlc291cmNlOwot
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3Vi
cmVzb3VyY2U7ICAgIAotI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6
VGFyZ2V0SXNQcmVmZXRjaDsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlcmVuZGVy
OgotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZXJlbmRlcjsKLSAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q3VlUmVzb3VyY2U6Ci0gICAg
ICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzQ3VlOwotI2VuZGlmCi0gICAgfQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRh
cmdldElzU3VicmVzb3VyY2U7Ci19Ci0jZW5kaWYKLQotQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCi0gICAgOiBtX2NhY2hlZFJlc291cmNl
TG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKQotICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkK
LSAgICAsIG1fbXVsdGlwYXJ0KGZhbHNlKQotICAgICwgbV9maW5pc2hpbmcoZmFsc2UpCi17Ci19
Ci0KLUNhY2hlZFJlc291cmNlUmVxdWVzdDo6fkNhY2hlZFJlc291cmNlUmVxdWVzdCgpCi17Ci0g
ICAgaWYgKG1fbG9hZGVyKQotICAgICAgICBtX2xvYWRlci0+Y2xlYXJDbGllbnQoKTsKLX0KLQot
UGFzc093blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJlc291cmNlUmVxdWVzdDo6
bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQot
ewotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdFB0cihu
ZXcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLCByZXNvdXJjZSkp
OwotCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHJlc291cmNlLT5yZXNv
dXJjZVJlcXVlc3QoKTsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICByZXNvdXJjZVJlcXVl
c3Quc2V0VGFyZ2V0VHlwZShjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUocmVzb3VyY2Ut
PnR5cGUoKSkpOwotI2VuZGlmCi0KLSAgICBpZiAoIXJlc291cmNlLT5hY2NlcHQoKS5pc0VtcHR5
KCkpCi0gICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQQWNjZXB0KHJlc291cmNlLT5hY2Nl
cHQoKSk7Ci0KLSAgICBpZiAocmVzb3VyY2UtPmlzQ2FjaGVWYWxpZGF0b3IoKSkgewotICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VUb1JldmFsaWRhdGUgPSByZXNvdXJjZS0+cmVzb3Vy
Y2VUb1JldmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlkYXRlLT5j
YW5Vc2VDYWNoZVZhbGlkYXRvcigpKTsKLSAgICAgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlk
YXRlLT5pc0xvYWRlZCgpKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBsYXN0TW9kaWZpZWQgPSBy
ZXNvdXJjZVRvUmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkxhc3QtTW9k
aWZpZWQiKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBlVGFnID0gcmVzb3VyY2VUb1JldmFsaWRh
dGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJFVGFnIik7Ci0gICAgICAgIGlmICghbGFz
dE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChjYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQb2xpY3koKSAhPSBDYWNoZVBvbGljeVJl
bG9hZCk7Ci0gICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5
KCkgPT0gQ2FjaGVQb2xpY3lSZXZhbGlkYXRlKQotICAgICAgICAgICAgICAgIHJlc291cmNlUmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7Ci0g
ICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
cmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiSWYtTW9kaWZpZWQtU2luY2UiLCBs
YXN0TW9kaWZpZWQpOwotICAgICAgICAgICAgaWYgKCFlVGFnLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Ob25lLU1hdGNo
IiwgZVRhZyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCi0gICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVm
ZXRjaCB8fCByZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlcmVuZGVy
IHx8IHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZSkK
LSAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHVycG9zZSIsICJw
cmVmZXRjaCIpOwotI2VuZGlmCi0KLSAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9
IHJlc291cmNlLT5sb2FkUHJpb3JpdHkoKTsKLSAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3Jp
dHkocHJpb3JpdHkpOwotCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZyYW1lKCksIHJlcXVlc3QuZ2V0KCksIHJlc291cmNl
UmVxdWVzdCwgcHJpb3JpdHksIG9wdGlvbnMpOwotICAgIGlmICghbG9hZGVyIHx8IGxvYWRlci0+
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICAvLyBGSVhNRTogV2hhdCBpZiByZXNv
dXJjZXMgaW4gb3RoZXIgZnJhbWVzIHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/
Ci0gICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5ub3Qgc3RhcnQgbG9hZGluZyAnJXMn
IiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIGlm
IChyZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkgCi0gICAgICAgICAgICBtZW1vcnlD
YWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQocmVzb3VyY2UpOyAKLSAgICAgICAgcmVzb3VyY2Ut
PmVycm9yKENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3IpOwotICAgICAgICByZXR1cm4gUGFzc093
blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+KG51bGxwdHIpOwotICAgIH0KLSAgICByZXF1ZXN0
LT5tX2xvYWRlciA9IGxvYWRlcjsKLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Ci19Ci0K
LXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQotewotICAgIGlmICghbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FuUmVx
dWVzdChtX3Jlc291cmNlLT50eXBlKCksIHJlcS51cmwoKSkpIHsKLSAgICAgICAgbG9hZGVyLT5j
YW5jZWwoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3Jlc291cmNlLT53aWxsU2Vu
ZFJlcXVlc3QocmVxLCByZXNwb25zZSk7Ci19Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpjYW5jZWwoKQotewotICAgIGlmIChtX2ZpbmlzaGluZykKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fbG9hZGVyLT5jYW5jZWwoKTsKLX0KLQotdW5zaWduZWQgbG9uZyBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OmlkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xvYWRlci0+aWRlbnRp
ZmllcigpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0RGVmZXJzTG9hZGlu
Zyhib29sIGRlZmVycykKLXsKLSAgICBpZiAobV9sb2FkZXIpCi0gICAgICAgIG1fbG9hZGVyLT5z
ZXREZWZlcnNMb2FkaW5nKGRlZmVycyk7Ci19Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5p
c2hUaW1lKQotewotICAgIGlmIChtX2ZpbmlzaGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlci5nZXQoKSk7Ci0gICAgQVNTRVJUKCFtX3Jlc291cmNl
LT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVj
ZWl2ZWQgJyVzJy4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwotCi0gICAgLy8gUHJldmVudCB0aGUgZG9jdW1lbnQgZnJvbSBiZWluZyBkZXN0cm95ZWQgYmVm
b3JlIHdlIGFyZSBkb25lIHdpdGgKLSAgICAvLyB0aGUgY2FjaGVkUmVzb3VyY2VMb2FkZXIgdGhh
dCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCi0gICAgUmVm
UHRyPERvY3VtZW50PiBwcm90ZWN0b3IobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQo
KSk7Ci0gICAgaWYgKCFtX211bHRpcGFydCkKLSAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRl
ci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOwotICAgIG1fZmluaXNoaW5nID0g
dHJ1ZTsKLQotICAgIC8vIElmIHdlIGdvdCBhIDR4eCByZXNwb25zZSwgd2UncmUgcHJldGVuZGlu
ZyB0byBoYXZlIHJlY2VpdmVkIGEgbmV0d29yawotICAgIC8vIGVycm9yLCBzbyB3ZSBjYW4ndCBz
ZW5kIHRoZSBzdWNjZXNzZnVsIGRhdGEoKSBhbmQgZmluaXNoKCkgY2FsbGJhY2tzLgotICAgIGlm
ICghbV9yZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKSB7Ci0gICAgICAgIG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmxvYWRGaW5pc2hpbmcoKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+c2V0TG9hZEZp
bmlzaFRpbWUoZmluaXNoVGltZSk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmRhdGEobG9hZGVyLT5y
ZXNvdXJjZURhdGEoKSwgdHJ1ZSk7Ci0gICAgICAgIGlmICghbV9yZXNvdXJjZS0+ZXJyb3JPY2N1
cnJlZCgpKQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoKCk7Ci0gICAgfQotICAgIGVu
ZCgpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZGlkRmFpbChTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIGlmIChtX2Zpbmlz
aGluZyB8fCAhbV9sb2FkZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgY2FuY2VsbGVk
ID0gZXJyb3IuaXNDYW5jZWxsYXRpb24oKTsKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiRmFp
bGVkIHRvIGxvYWQgJyVzJyAoY2FuY2VsbGVkPSVkKS5cbiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSwgY2FuY2VsbGVkKTsKLQotICAgIC8vIFByZXZlbnQgdGhl
IGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkIGJlZm9yZSB3ZSBhcmUgZG9uZSB3aXRoCi0g
ICAgLy8gdGhlIGNhY2hlZFJlc291cmNlTG9hZGVyIHRoYXQgaXQgd2lsbCBkZWxldGUgd2hlbiB0
aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgotICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdG9y
KG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCkpOwotICAgIGlmICghbV9tdWx0aXBh
cnQpCi0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3Vu
dChtX3Jlc291cmNlKTsKLSAgICBtX2ZpbmlzaGluZyA9IHRydWU7Ci0gICAgbV9sb2FkZXItPmNs
ZWFyQ2xpZW50KCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUo
KSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3VyY2Up
OwotCi0gICAgaWYgKCFjYW5jZWxsZWQpIHsKLSAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRl
ci0+bG9hZEZpbmlzaGluZygpOwotICAgICAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNoZWRSZXNv
dXJjZTo6TG9hZEVycm9yKTsKLSAgICB9Ci0KLSAgICBpZiAoY2FuY2VsbGVkIHx8ICFtX3Jlc291
cmNlLT5pc1ByZWxvYWRlZCgpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9yZXNv
dXJjZSk7Ci0gICAgCi0gICAgZW5kKCk7Ci19Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUKGxvYWRlciA9PSBtX2xvYWRl
ci5nZXQoKSk7Ci0gICAgaWYgKG1fcmVzb3VyY2UtPmlzQ2FjaGVWYWxpZGF0b3IoKSkgewotICAg
ICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpIHsKLSAgICAgICAgICAg
IC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBVc2UgbG9jYWwgY29weQotICAgICAgICAgICAgbG9hZGVy
LT5jbGVhckNsaWVudCgpOwotICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3Io
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQobV9yZXNvdXJjZSk7Ci0gICAg
ICAgICAgICBtX2ZpbmlzaGluZyA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJl
c291cmNlIGlzIG9rLCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgot
ICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKG1fcmVzb3Vy
Y2UsIHJlc3BvbnNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+ZnJhbWUoKS0+bG9hZGVyKCktPmNoZWNrQ29tcGxldGVkKCk7Ci0KLSAgICAgICAgICAg
IGVuZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IAotICAgICAgICAvLyBEaWQg
bm90IGdldCAzMDQgcmVzcG9uc2UsIGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBsb2Fk
LgotICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7
Ci0gICAgfQotCi0gICAgLy8gc2V0UmVzcG9uc2UoKSBtaWdodCBjYW5jZWwgdGhlIHJlcXVlc3Qs
IHNvIHdlIG5lZWQgdG8ga2VlcCBvdXJzZWx2ZXMgYWxpdmUuIFVuZm9ydHVuYXRlbHksCi0gICAg
Ly8gd2UgY2FuJ3QgcHJvdGVjdCBhIENhY2hlZFJlc291cmNlUmVxdWVzdCwgYnV0IHdlIGNhbiBw
cm90ZWN0IG1fcmVzb3VyY2UsIHdoaWNoIGhhcyB0aGUKLSAgICAvLyBwb3dlciB0byBraWxsIHRo
ZSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgKGFuZCB3aWxsIHN3aXRjaCBpc0xvYWRpbmcoKSB0byBm
YWxzZSBpZiBpdCBkb2VzIHNvKS4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gcHJvdGVjdChtX3Jlc291cmNlKTsKLSAgICBtX3Jlc291cmNlLT5zZXRSZXNwb25zZShy
ZXNwb25zZSk7Ci0gICAgaWYgKCFwcm90ZWN0LT5pc0xvYWRpbmcoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU3RyaW5nIGVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwot
ICAgIGlmICghZW5jb2RpbmcuaXNOdWxsKCkpCi0gICAgICAgIG1fcmVzb3VyY2UtPnNldEVuY29k
aW5nKGVuY29kaW5nKTsKLSAgICAKLSAgICBpZiAobV9tdWx0aXBhcnQpIHsKLSAgICAgICAgQVNT
RVJUKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PENhY2hlZElt
YWdlKj4obV9yZXNvdXJjZSktPmNsZWFyKCk7Ci0gICAgICAgIGlmIChtX2NhY2hlZFJlc291cmNl
TG9hZGVyLT5mcmFtZSgpKQotICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJh
bWUoKS0+bG9hZGVyKCktPmNoZWNrQ29tcGxldGVkKCk7Ci0gICAgfSBlbHNlIGlmIChyZXNwb25z
ZS5pc011bHRpcGFydCgpKSB7Ci0gICAgICAgIG1fbXVsdGlwYXJ0ID0gdHJ1ZTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcidzIHJlcXVlc3QgY291bnQKLSAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+
ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOwotCi0gICAgICAgIC8vIElmIHdlIGdl
dCBhIG11bHRpcGFydCByZXNwb25zZSwgd2UgbXVzdCBoYXZlIGEgaGFuZGxlCi0gICAgICAgIEFT
U0VSVChsb2FkZXItPmhhbmRsZSgpKTsKLSAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdl
KCkpCi0gICAgICAgICAgICBsb2FkZXItPmhhbmRsZSgpLT5jYW5jZWwoKTsKLSAgICB9Ci19Ci0K
LXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKLXsKLSAgICBBU1NFUlQo
bG9hZGVyID09IG1fbG9hZGVyLmdldCgpKTsKLSAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmlzQ2Fj
aGVWYWxpZGF0b3IoKSk7Ci0gICAgCi0gICAgaWYgKG1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0
cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNob3VsZElnbm9yZUhUVFBTdGF0
dXNDb2RlRXJyb3JzKCkpIHsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OkxvYWRFcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGVyZSBh
cmUgdHdvIGNhc2VzIHdoZXJlIHdlIG1pZ2h0IG5lZWQgdG8gY3JlYXRlIG91ciBvd24gU2hhcmVk
QnVmZmVyIGluc3RlYWQgb2YgY29weWluZyB0aGUgb25lIGluIFJlc291cmNlTG9hZGVyLgotICAg
IC8vICgxKSBNdWx0aXBhcnQgY29udGVudDogVGhlIGxvYWRlciBkZWxpdmVycyB0aGUgZGF0YSBp
biBhIG11bHRpcGFydCBzZWN0aW9uIGFsbCBhdCBvbmNlLCB0aGVuIHNlbmRzIGVvZi4KLSAgICAv
LyAgICAgVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBpcyBs
b2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCi0gICAgLy8gKDIpIE91ciBjbGllbnQg
cmVxdWVzdGVkIHRoYXQgdGhlIGRhdGEgbm90IGJlIGJ1ZmZlcmVkIGF0IHRoZSBSZXNvdXJjZUxv
YWRlciBsZXZlbCB2aWEgUmVzb3VyY2VMb2FkZXJPcHRpb25zLiBJbiB0aGlzIGNhc2UsCi0gICAg
Ly8gICAgIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSB3aWxsIGJlIG51bGwuIEhvd2V2
ZXIsIHVubGlrZSB0aGUgbXVsdGlwYXJ0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUg
Q2FjaGVkUmVzb3VyY2UKLSAgICAvLyAgICAgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiByZWNlaXZl
ZCB5ZXQuCi0gICAgaWYgKG1fbXVsdGlwYXJ0IHx8ICFsb2FkZXItPnJlc291cmNlRGF0YSgpKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcGllZERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZGF0YShjb3BpZWREYXRh
LnJlbGVhc2UoKSwgbV9tdWx0aXBhcnQpOwotICAgIH0gZWxzZQotICAgICAgICBtX3Jlc291cmNl
LT5kYXRhKGxvYWRlci0+cmVzb3VyY2VEYXRhKCksIGZhbHNlKTsKLX0KLQotdm9pZCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRl
ciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQotewotICAgIEFTU0VSVCghbV9yZXNvdXJj
ZS0+aXNDYWNoZVZhbGlkYXRvcigpKTsKLSAgICBtX3Jlc291cmNlLT5zZXRTZXJpYWxpemVkQ2Fj
aGVkTWV0YWRhdGEoZGF0YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCi17Ci0gICAgbV9y
ZXNvdXJjZS0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwotfQot
Ci12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZW5kKCkKLXsKLSAgICBtX2NhY2hlZFJlc291
cmNlTG9hZGVyLT5sb2FkRG9uZSgpOwotICAgIG1fcmVzb3VyY2UtPnN0b3BMb2FkaW5nKCk7Ci19
Ci0KLX0gLy9uYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiA5ODczMikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc4LDggKzc4LDggQEAKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWxsQ2xpZW50c1JlbW92
ZWQoKQogewotICAgIGlmIChtX3JlcXVlc3QpCi0gICAgICAgIG1fcmVxdWVzdC0+Y2FuY2VsKCk7
CisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA5LDEzICsxMDks
MTMgQEAKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRl
ZmVycykKIHsKLSAgICBpZiAobV9yZXF1ZXN0KQotICAgICAgICBtX3JlcXVlc3QtPnNldERlZmVy
c0xvYWRpbmcoZGVmZXJzKTsKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5z
ZXREZWZlcnNMb2FkaW5nKGRlZmVycyk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgQ2FjaGVkUmF3UmVz
b3VyY2U6OmlkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3JlcXVlc3QgPyBtX3Jl
cXVlc3QtPmlkZW50aWZpZXIoKSA6IDA7CisgICAgcmV0dXJuIG1fbG9hZGVyID8gbV9sb2FkZXIt
PmlkZW50aWZpZXIoKSA6IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmgJKHJldmlzaW9uIDk4NzMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgyICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RfaAotI2RlZmlu
ZSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RfaAotCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5o
IgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCi0jaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIENhY2hl
ZFJlc291cmNlOwotICAgIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwotICAgIGNsYXNzIFJl
c291cmNlRXJyb3I7Ci0gICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotICAgIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci0gICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7Ci0KLSAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgOiBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENhY2hlZFJlc291cmNlUmVx
dWVzdD4gbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlKiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0gICAgICAgIH5DYWNoZWRSZXNvdXJjZVJlcXVlc3Qo
KTsKLQotICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOyB9Ci0gICAgICAgIHZvaWQg
Y2FuY2VsKCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IExpa2UgQ2FjaGVkUmVzb3VyY2U6OmlkZW50
aWZpZXIoKSwgdGhpcyBpcyBhIGxhbWUgaGFjayBmb3IgcHJlZmxpZ2h0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbiBpbiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuCi0gICAgICAgIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgICAgIC8vIEZJWE1FOiBTZWUgQ2FjaGVk
UmF3UmVzb3VyY2U6OnNldERlZmVyc0xvYWRpbmcoKSBmb3IgdGhlIHJlbGV2YW50IHJhbnQuCi0g
ICAgICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJl
c291cmNlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3Vy
Y2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZv
aWQgZW5kKCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFN1YnJlc291cmNl
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKTsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZERvd25sb2FkRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGlu
dCk7Ci0jZW5kaWYKLQotICAgICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVy
OwotICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsK
LSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7Ci0gICAgICAgIGJvb2wgbV9tdWx0
aXBhcnQ7Ci0gICAgICAgIGJvb2wgbV9maW5pc2hpbmc7Ci0gICAgfTsKLQotfQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCShyZXZpc2lvbiA5ODczMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4NSw5IEBACiAjZW5kaWYK
IH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHkgcHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHkgcHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpj
cmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7CisgICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBy
ZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2No
ZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcHJpb3JpdHkpOwogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NzMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50X2gKLSNkZWZpbmUg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnRfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFJl
c291cmNlUmVxdWVzdDsKLWNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTdWJyZXNvdXJj
ZUxvYWRlcjsKLSAgICAKLWNsYXNzIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlckNsaWVudCgpIHsgfSAKLQotICAgIC8vIHJl
cXVlc3QgbWF5IGJlIG1vZGlmaWVkCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChT
dWJyZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywg
dW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQotCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU3Vi
cmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqLCBkb3VibGUgLypmaW5pc2hUaW1l
Ki8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgdmly
dHVhbCB2b2lkIGRpZERvd25sb2FkRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGludCAvKmRhdGFM
ZW5ndGgqLykgeyB9Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAJKHJldmlzaW9uIDk4NzMyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xp
ZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEhBVkUoTkVUV09SS19DRkRBVEFf
QVJSQVlfQ0FMTEJBQ0spCkBAIC00Niw3ICs0NCw3IEBACiAgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEg
PSByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChkYXRh
QXJyYXksIGkpKTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSksIHN0
YXRpY19jYXN0PGludD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpKSk7CisgICAgICAgICAgICBkaWRS
ZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oQ0ZEYXRhR2V0Qnl0ZVB0
cihkYXRhKSksIHN0YXRpY19jYXN0PGludD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpKSwgLTEsIGZh
bHNlKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTg3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAK
IAogICAgIHdpbGxTZW5kUmVxdWVzdChjbGllbnRSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkp
OwogICAgIGlmIChjbGllbnRSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGRpZEZhaWwoY2Fu
Y2VsbGVkRXJyb3IoKSk7CisgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNj
aGVkdWxlci5oCShyZXZpc2lvbiA5ODczMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBLVVJMOwogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CkBAIC00NCwx
NCArNDUsMTMgQEAKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dDsKIAogY2xhc3MgUmVzb3VyY2VMb2FkU2NoZWR1bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShSZXNvdXJjZUxvYWRTY2hlZHVsZXIpOwogcHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJy
ZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9h
ZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBQYXNzUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIENhY2hl
ZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHks
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogICAgIFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBhZGRNYWluUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBy
ZW1vdmUoUmVzb3VyY2VMb2FkZXIqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTg3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjks
MTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5o
IgogCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtNDMsMTAgKzQ1LDEyIEBA
CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwg
c3VicmVzb3VyY2VMb2FkZXJDb3VudGVyLCAoIlN1YnJlc291cmNlTG9hZGVyIikpOwogCi1TdWJy
ZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJj
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMpCitTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucykKICAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBvcHRpb25zKQotICAgICwgbV9jbGll
bnQoY2xpZW50KQorICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkKKyAgICAsIG1fZG9jdW1lbnQo
ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNl
KQorICAgICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQogewogI2lmbmRlZiBOREVCVUcKICAgICBz
dWJyZXNvdXJjZUxvYWRlckNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC02MCw3ICs2NCw3IEBACiAj
ZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQorUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05Myw1
OCArOTcsODkgQEAKIAogICAgIGZyYW1lTG9hZGVyLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3Vy
Y2VSZXF1ZXN0KG5ld1JlcXVlc3QpOwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBz
dWJsb2FkZXIoYWRvcHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCBjbGllbnQsIG9w
dGlvbnMpKSk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzdWJsb2FkZXIoYWRvcHRS
ZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCByZXNvdXJjZSwgb3B0aW9ucykpKTsKICAg
ICBpZiAoIXN1YmxvYWRlci0+aW5pdChuZXdSZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgc3VibG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hZGRTdWJyZXNvdXJjZUxvYWRlcihzdWJs
b2FkZXIuZ2V0KCkpOwotCiAgICAgcmV0dXJuIHN1YmxvYWRlci5yZWxlYXNlKCk7CiB9CiAKK2Jv
b2wgU3VicmVzb3VyY2VMb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIGlmICghUmVzb3VyY2VMb2FkZXI6OmluaXQocmVxdWVzdCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fc3RhdGUgPSBJbml0aWFsaXplZDsKKyAgICBtX2RvY3VtZW50
TG9hZGVyLT5hZGRTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
IHsKICAgICAvLyBTdG9yZSB0aGUgcHJldmlvdXMgVVJMIGJlY2F1c2UgdGhlIGNhbGwgdG8gUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB3aWxsIG1vZGlmeSBpdC4KICAgICBLVVJMIHBy
ZXZpb3VzVVJMID0gcmVxdWVzdCgpLnVybCgpOwogICAgIAogICAgIFJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgaWYgKCFw
cmV2aW91c1VSTC5pc051bGwoKSAmJiAhbmV3UmVxdWVzdC5pc051bGwoKSAmJiBwcmV2aW91c1VS
TCAhPSBuZXdSZXF1ZXN0LnVybCgpICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+d2ls
bFNlbmRSZXF1ZXN0KHRoaXMsIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIGlm
ICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlv
dXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSkgeworICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdS
ZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgY2FuY2VsKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgbV9yZXNvdXJjZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1Jl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIH0KIH0KIAogdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5kaWRTZW5kRGF0YSh0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7Cisg
ICAgbV9yZXNvdXJjZS0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcikKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQo
IXIuaXNOdWxsKCkpOworICAgIEFTU0VSVCghcmVzcG9uc2UuaXNOdWxsKCkpOwogCi0gICAgaWYg
KHIuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCA9IHRy
dWU7Ci0KICAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0
aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGlu
ZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxl
IG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UodGhpcywgcik7Ci0gICAgCi0gICAgLy8gVGhlIGxvYWRlciBjYW4gY2FuY2Vs
IGEgbG9hZCBpZiBpdCByZWNlaXZlcyBhIG11bHRpcGFydCByZXNwb25zZSBmb3IgYSBub24taW1h
Z2UKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkgeworICAgICAg
ICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpIHsKKyAgICAgICAgICAgIC8v
IDMwNCBOb3QgbW9kaWZpZWQgLyBVc2UgbG9jYWwgY29weQorICAgICAgICAgICAgLy8gRXhpc3Rp
bmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5nIHRoZSBleHBpcmF0aW9uIHRp
bWUuCisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXZhbGlkYXRpb25TdWNjZWVkZWQobV9y
ZXNvdXJjZSwgcmVzcG9uc2UpOworICAgICAgICAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgICAgICBjYW5jZWwoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfSAKKyAgICAgICAgLy8gRGlkIG5vdCBnZXQgMzA0IHJlc3BvbnNl
LCBjb250aW51ZSBhcyBhIHJlZ3VsYXIgcmVzb3VyY2UgbG9hZC4KKyAgICAgICAgbWVtb3J5Q2Fj
aGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3VyY2UpOworICAgIH0KKworICAgIG1fcmVz
b3VyY2UtPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2Uocik7Ci0gICAgCisgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSk7CisKKyAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgeworICAgICAg
ICBBU1NFUlQobV9yZXNvdXJjZS0+aXNJbWFnZSgpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q2Fj
aGVkSW1hZ2UqPihtX3Jlc291cmNlKS0+Y2xlYXIoKTsKKyAgICB9IGVsc2UgaWYgKHJlc3BvbnNl
LmlzTXVsdGlwYXJ0KCkpIHsKKyAgICAgICAgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCA9IHRy
dWU7CisKKyAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVsdGlQYXJ0cyBpbiBhIENhY2hlZFJl
c291cmNlTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAorICAgICAgICBtX2RvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQobV9yZXNvdXJjZSk7CisgICAg
ICAgIGlmICghbV9yZXNvdXJjZS0+aXNJbWFnZSgpKSB7CisgICAgICAgICAgICBjYW5jZWwoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHJlc291cmNlRGF0YSgpOwogICAgIGlmIChtX2xvYWRpbmdNdWx0
aXBhcnRDb250ZW50ICYmIGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewogICAgICAgICAvLyBT
aW5jZSBhIHN1YnJlc291cmNlIGxvYWRlciBkb2VzIG5vdCBsb2FkIG11bHRpcGFydCBzZWN0aW9u
cyBwcm9ncmVzc2l2ZWx5LAogICAgICAgICAvLyBkZWxpdmVyIHRoZSBwcmV2aW91c2x5IHJlY2Vp
dmVkIGRhdGEgdG8gdGhlIGxvYWRlciBhbGwgYXQgb25jZSBub3cuCiAgICAgICAgIC8vIFRoZW4g
Y2xlYXIgdGhlIGRhdGEgdG8gbWFrZSB3YXkgZm9yIHRoZSBuZXh0IG11bHRpcGFydCBzZWN0aW9u
LgotICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgZGlk
UmVjZWl2ZURhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCAtMSwgdHJ1ZSk7CiAg
ICAgICAgIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBZnRlciB0
aGUgZmlyc3QgbXVsdGlwYXJ0IHNlY3Rpb24gaXMgY29tcGxldGUsIHNpZ25hbCB0byBkZWxlZ2F0
ZXMgdGhhdCB0aGlzIGxvYWQgaXMgImZpbmlzaGVkIiAKQEAgLTE1NSw3NyArMTkwLDEwMSBAQAog
CiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNl
KQogeworICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7Cisg
ICAgQVNTRVJUKCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpOwogICAgIC8vIFJlZmVyZW5j
ZSB0aGUgb2JqZWN0IGluIHRoaXMgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3Np
bmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJl
ZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2Lgog
ICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLSAgICAKICAgICBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxl
bmd0aCwgYWxsQXRPbmNlKTsKIAotICAgIC8vIEEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90
IGxvYWQgbXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHkuCi0gICAgLy8gU28gZG9uJ3Qg
ZGVsaXZlciBhbnkgZGF0YSB0byB0aGUgbG9hZGVyIHlldC4KLSAgICBpZiAoIW1fbG9hZGluZ011
bHRpcGFydENvbnRlbnQgJiYgbV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpKSB7CisgICAgICAgIG1fcmVzb3VyY2UtPmVycm9yKENhY2hlZFJl
c291cmNlOjpMb2FkRXJyb3IpOworICAgICAgICBtX3N0YXRlID0gRmluaXNoaW5nOworICAgICAg
ICBjYW5jZWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZXJlIGFyZSB0
d28gY2FzZXMgd2hlcmUgd2UgbWlnaHQgbmVlZCB0byBjcmVhdGUgb3VyIG93biBTaGFyZWRCdWZm
ZXIgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBvbmUgaW4gUmVzb3VyY2VMb2FkZXIuCisgICAgLy8g
KDEpIE11bHRpcGFydCBjb250ZW50OiBUaGUgbG9hZGVyIGRlbGl2ZXJzIHRoZSBkYXRhIGluIGEg
bXVsdGlwYXJ0IHNlY3Rpb24gYWxsIGF0IG9uY2UsIHRoZW4gc2VuZHMgZW9mLgorICAgIC8vICAg
ICBUaGUgcmVzb3VyY2UgZGF0YSB3aWxsIGNoYW5nZSBhcyB0aGUgbmV4dCBwYXJ0IGlzIGxvYWRl
ZCwgc28gd2UgbmVlZCB0byBtYWtlIGEgY29weS4KKyAgICAvLyAoMikgT3VyIGNsaWVudCByZXF1
ZXN0ZWQgdGhhdCB0aGUgZGF0YSBub3QgYmUgYnVmZmVyZWQgYXQgdGhlIFJlc291cmNlTG9hZGVy
IGxldmVsIHZpYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuIEluIHRoaXMgY2FzZSwKKyAgICAvLyAg
ICAgUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIHdpbGwgYmUgbnVsbC4gSG93ZXZlciwg
dW5saWtlIHRoZSBtdWx0aXBhcnQgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRoZSBDYWNo
ZWRSZXNvdXJjZQorICAgIC8vICAgICB0aGF0IGFsbCBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkIHll
dC4KKyAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCB8fCAhcmVzb3VyY2VEYXRhKCkp
IHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29waWVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2UtPmRhdGEoY29waWVk
RGF0YS5yZWxlYXNlKCksIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3Jlc291cmNlLT5kYXRhKHJlc291cmNlRGF0YSgpLCBmYWxzZSk7CiB9CiAKIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIC8vIFJlZmVyZW5jZSB0aGUgb2JqZWN0IGluIHRo
aXMgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCi0gICAgLy8g
YW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9i
amVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgotICAgIFJlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLSAgICAKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEodGhpcywgZGF0YSwgbGVuZ3Ro
KTsKKyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOworICAg
IG1fcmVzb3VyY2UtPnNldFNlcmlhbGl6ZWRDYWNoZWRNZXRhZGF0YShkYXRhLCBsZW5ndGgpOwog
fQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKQogewotICAgIGlmIChjYW5jZWxsZWQoKSkKKyAgICBpZiAobV9zdGF0ZSAhPSBJbml0
aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSk7CisgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsK
KyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSk7CisgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlY2VpdmVkICclcycuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIC8vIENhbGxpbmcgcmVtb3ZlU3VicmVzb3VyY2VMb2Fk
ZXIgd2lsbCBsaWtlbHkgcmVzdWx0IGluIGEgY2FsbCB0byBkZXJlZiwgc28gd2UgbXVzdCBwcm90
ZWN0IG91cnNlbHZlcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhp
cyk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2Fk
aW5nKHRoaXMsIGZpbmlzaFRpbWUpOwotICAgIAotICAgIG1faGFuZGxlID0gMDsKLQotICAgIGlm
IChjYW5jZWxsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnRMb2FkZXItPnJl
bW92ZVN1YnJlc291cmNlTG9hZGVyKHRoaXMpOworICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7Cisg
ICAgbV9yZXNvdXJjZS0+c2V0TG9hZEZpbmlzaFRpbWUoZmluaXNoVGltZSk7CisgICAgbV9yZXNv
dXJjZS0+ZGF0YShyZXNvdXJjZURhdGEoKSwgdHJ1ZSk7CisgICAgbV9yZXNvdXJjZS0+ZmluaXNo
KCk7CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7CiB9
CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgaWYgKGNhbmNlbGxlZCgpKQorICAgIGlmIChtX3N0YXRlICE9IEluaXRp
YWxpemVkKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0
ZSgpKTsKKyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOwor
ICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJGYWlsZWQgdG8gbG9hZCAnJXMnLlxuIiwgbV9yZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIC8vIENhbGxpbmcg
cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIgd2lsbCBsaWtlbHkgcmVzdWx0IGluIGEgY2FsbCB0byBk
ZXJlZiwgc28gd2UgbXVzdCBwcm90ZWN0IG91cnNlbHZlcy4KICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT5kaWRGYWlsKHRoaXMsIGVycm9yKTsKLSAgICAKLSAgICBtX2hhbmRsZSA9IDA7Ci0g
ICAgCi0gICAgaWYgKGNhbmNlbGxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVu
dExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CisgICAgbV9zdGF0ZSA9IEZp
bmlzaGluZzsKKyAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9y
KTsKKyAgICBpZiAoIW1fcmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCisgICAgICAgIG1lbW9yeUNh
Y2hlKCktPnJlbW92ZShtX3Jlc291cmNlKTsKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChl
cnJvcik7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKGNv
bnN0IFJlc291cmNlRXJyb3ImKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmRpZEZhaWwodGhpcywgZXJyb3IpOworICAgIGlmIChtX3N0YXRlICE9IEluaXRpYWxpemVk
KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsK
KyAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FuY2VsbGVkIGxvYWQgb2YgJyVzJy5cbiIsIG1f
cmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisKKyAgICBSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CisgICAgbV9zdGF0ZSA9IEZpbmlzaGlu
ZzsKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkKKyAgICAgICAg
bWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3VyY2UpOworICAgIG1lbW9y
eUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6cmVsZWFzZVJlc291cmNlcygpCiB7Ci0gICAgbV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3Vi
cmVzb3VyY2VMb2FkZXIodGhpcyk7CisgICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgp
KTsKKyAgICBpZiAobV9zdGF0ZSAhPSBVbmluaXRpYWxpemVkKSB7CisgICAgICAgIGlmICghbV9s
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBtX3N0YXRlICE9IFJlbGVhc2luZykKKyAgICAgICAg
ICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RD
b3VudChtX3Jlc291cmNlKTsKKyAgICAgICAgbV9zdGF0ZSA9IFJlbGVhc2luZzsKKyAgICAgICAg
bV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+bG9hZERvbmUoKTsKKyAgICAgICAg
aWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fcmVzb3VyY2UtPnN0b3BMb2FkaW5nKCk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnJl
bW92ZVN1YnJlc291cmNlTG9hZGVyKHRoaXMpOworICAgIH0KKyAgICBtX2RvY3VtZW50ID0gMDsK
KyAgICBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTg3MzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNDEgKzM2LDUxIEBACiAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci0gICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQ7
Ci0gICAgCi0gICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VMb2Fk
ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CitjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi0g
ICAgICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorY2xhc3MgU3VicmVz
b3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNv
dXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYpOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBT
dWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwot
ICAgICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwotICAgICAgICAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgYm9vbCBhbGxBdE9uY2UpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hl
ZE1ldGFkYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5j
ZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKK3ByaXZhdGU6CisgICAgU3VicmVzb3VyY2VMb2FkZXIo
RnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwor
ICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyKCk7CisgICAgdmlydHVhbCBib29sIGluaXQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKwogI2lmIEhBVkUoTkVUV09SS19DRkRBVEFfQVJS
QVlfQ0FMTEJBQ0spCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZBcnJheVJlZik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YUFycmF5KCkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlS
ZWYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWREb3dubG9hZERhdGEoaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRh
KGludCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogCi0g
ICAgICAgIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKLSAgICAgICAgYm9vbCBt
X2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OworICAgIGVudW0gU3VicmVzb3VyY2VMb2FkZXJTdGF0
ZSB7CisgICAgICAgIFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIEluaXRpYWxpemVkLAorICAgICAg
ICBGaW5pc2hpbmcsCisgICAgICAgIFJlbGVhc2luZwogICAgIH07CiAKKyAgICBDYWNoZWRSZXNv
dXJjZSogbV9yZXNvdXJjZTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAg
Ym9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OworICAgIFN1YnJlc291cmNlTG9hZGVyU3Rh
dGUgbV9zdGF0ZTsKK307CisKIH0KIAogI2VuZGlmIC8vIFN1YnJlc291cmNlTG9hZGVyX2gKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJhcmNoaXZlL2xvYWRpbmcvY2FjaGUtZXhw
aXJlZC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVkLXN1YnJlc291cmNl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg3MzIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvd2ViYXJjaGl2ZS9sb2FkaW5nL2NhY2hlLWV4cGlyZWQtc3VicmVzb3VyY2UtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiBmcmFtZSAiPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIHJl
c291cmNlcy9jYWNoZS1leHBpcmVkLXN1YnJlc291cmNlLndlYmFyY2hpdmUgLSBkaWRGaW5pc2hM
b2FkaW5nCiBodHRwOi8vbG9jYWxob3N0L3BpbmstYnVsbGV0LnBuZyAtIGRpZFJlY2VpdmVSZXNw
b25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxob3N0L3Rlc3QucGhwLCBodHRwIHN0YXR1
cyBjb2RlIDIwMD4KK2h0dHA6Ly9sb2NhbGhvc3QvcGluay1idWxsZXQucG5nIC0gZGlkRmluaXNo
TG9hZGluZwogZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJv
a2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg3MzIpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVs
ZWdhdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogPHVua25v
d24+IC0gZGlkRmluaXNoTG9hZGluZwogcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFs
aWQtZm9ybWF0LnBuZyAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSByZXNvdXJj
ZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nLCBodHRwIHN0YXR1cyBjb2Rl
IDA+CiByZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0gc2hv
dWxkUGFpbnRCcm9rZW5JbWFnZTogTk8KK3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZh
bGlkLWZvcm1hdC5wbmcgLSBkaWRGaW5pc2hMb2FkaW5nCiBSYWRhciA4NjEwOTA4IC0gQWRkIGEg
cmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50
IHRoZSBicm9rZW4gaW1hZ2UuCiAKIFBBU1MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDk4NzMyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3NlY3VyaXR5L2Jsb2NrLXRl
c3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogaHR0cDovLzI1
NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3Qg
VVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwg
YmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
CiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEv
dGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktp
dEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4y
NTU6MS90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSB3aWxs
U2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rl
c3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdF
VD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0
LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJy
b3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTox
L3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIGRpZEZhaWxM
b2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUg
MTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIj4KIGh0
dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxS
ZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcsIG1haW4gZG9jdW1l
bnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNl
IChudWxsKQogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRp
bmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMs
IGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGciPgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg3MzIpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBodHRwOi8vMjU1LjI1NS4y
NTUuMjU1OjEvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0
cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10
ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIDx1bmtu
b3duPiAtIGRpZEZpbmlzaExvYWRpbmcKK2h0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0Lmpw
ZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JE
b21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rl
c3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcs
IG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRp
cmVjdFJlc3BvbnNlIChudWxsKQotaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0g
ZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFp
biwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5q
cGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdX
aXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZh
aWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGciPgogaHR0cDovLzI1
NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3Qg
VVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwg
YmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGlu
ZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyI+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1jZy1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tY2ctbWFj
L3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5ODczMikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWNnLW1hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGh0dHA6Ly8yNTUuMjU1
LjI1NS4yNTU6MS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2Nr
LXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogPHVu
a25vd24+IC0gZGlkRmluaXNoTG9hZGluZworaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3Qu
anBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJv
ckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEv
dGVzdC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gd2lsbFNlbmRS
ZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0Lmpw
ZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJl
ZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1odHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcg
LSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9t
YWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0
LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGlu
Z1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywg
ZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyI+CiBodHRwOi8v
MjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVz
dCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVS
TCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVs
bCkKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0
aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWls
aW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIj4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vc2Vj
dXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4NzMyKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogaHR0cDovLzI1NS4yNTUuMjU1LjI1
NToxL3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8y
NTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5o
dG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiA8dW5rbm93bj4g
LSBkaWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSBk
aWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWlu
LCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0Lmpw
ZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3Qg
PE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnLCBtYWlu
IGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RS
ZXNwb25zZSAobnVsbCkKLWh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIGRpZEZh
aWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNv
ZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIj4K
IGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVy
cm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5n
IFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1
LjI1NS4yNTU6OS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2Nr
LXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0
cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6
IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJM
ICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGciPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDk4NzMyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmls
ZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNCAr
NCw1IEBACiByZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5T
VVJMUmVzcG9uc2UgcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzLCBodHRwIHN0YXR1cyBjb2RlIDA+
CiByZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MgLSBkaWRGaW5pc2hMb2FkaW5nCiByZXNvdXJjZXMv
c3R5bGVzaGVldC5jc3MgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgcmVzb3Vy
Y2VzL3N0eWxlc2hlZXQuY3NzLCBodHRwIHN0YXR1cyBjb2RlIDA+CityZXNvdXJjZXMvc3R5bGVz
aGVldC5jc3MgLSBkaWRGaW5pc2hMb2FkaW5nCiBUaGlzIHRlc3RzIHRoYXQgZmlsZTogVVJMIGFy
ZSBsb2FkZWQgc2VwYXJhdGVseSBldmVuIGlmIHRoZXkgZGlmZmVyIGJ5IHRoZSBmcmFnbWVudCBv
bmx5LgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NjkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMC0yOCAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRlc3QgdWRwYXRlcyBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTQ5LgorICAgICAgICBUaGUgY2hh
bmdlcyB0byBTdWJyZXNvdXJjZUxvYWRlciBzbGlnaHRseSBjaGFuZ2UgdGhlIHRpbWluZ3Mgb2YK
KyAgICAgICAgY2VydGFpbiByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9maWxlLXByb3Rv
Y29sLWZyYWdtZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1j
Zy1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1h
Z2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zZWN1cml0
eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvd2ViYXJj
aGl2ZS9sb2FkaW5nL2NhY2hlLWV4cGlyZWQtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0OgorCiAy
MDExLTEwLTI4ICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgZ2FyZGVuaW5nLgo=
</data>
<flag name="commit-queue"
          id="111148"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113070</attachid>
            <date>2011-10-31 11:40:39 -0700</date>
            <delta_ts>2011-11-09 13:58:23 -0800</delta_ts>
            <desc>Address compile failure</desc>
            <filename>crr_sl_2.txt</filename>
            <type>text/plain</type>
            <size>77521</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJhcmNoaXZlL2xvYWRpbmcvY2FjaGUt
ZXhwaXJlZC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVkLXN1YnJlc291
cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg4NjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvd2ViYXJjaGl2ZS9sb2FkaW5nL2NhY2hlLWV4cGlyZWQtc3VicmVzb3VyY2UtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiBmcmFtZSAiPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUK
IHJlc291cmNlcy9jYWNoZS1leHBpcmVkLXN1YnJlc291cmNlLndlYmFyY2hpdmUgLSBkaWRGaW5p
c2hMb2FkaW5nCiBodHRwOi8vbG9jYWxob3N0L3BpbmstYnVsbGV0LnBuZyAtIGRpZFJlY2VpdmVS
ZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxob3N0L3Rlc3QucGhwLCBodHRwIHN0
YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly9sb2NhbGhvc3QvcGluay1idWxsZXQucG5nIC0gZGlkRmlu
aXNoTG9hZGluZwogZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWUKIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIg
LSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQt
YnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg4NjcpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2Ut
ZGVsZWdhdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogPHVu
a25vd24+IC0gZGlkRmluaXNoTG9hZGluZwogcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWlu
dmFsaWQtZm9ybWF0LnBuZyAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSByZXNv
dXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nLCBodHRwIHN0YXR1cyBj
b2RlIDA+CiByZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0g
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZTogTk8KK3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1p
bnZhbGlkLWZvcm1hdC5wbmcgLSBkaWRGaW5pc2hMb2FkaW5nCiBSYWRhciA4NjEwOTA4IC0gQWRk
IGEgcmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBh
aW50IHRoZSBicm9rZW4gaW1hZ2UuCiAKIFBBU1MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDk4ODY3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3NlY3VyaXR5L2Jsb2Nr
LXRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogaHR0cDov
LzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVl
c3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBV
UkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51
bGwpCiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjEvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdl
YktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1
NS4yNTU6MS90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSB3
aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3
L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9k
IEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90
ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0
RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1
NToxL3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIGRpZEZh
aWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNv
ZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIj4K
IGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNV
UkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcsIG1haW4gZG9j
dW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3Bv
bnNlIChudWxsKQogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gZGlkRmFpbExv
YWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAx
MDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGciPgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3Qt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg4NjcpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBodHRwOi8vMjU1LjI1
NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwg
aHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9j
ay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIDx1
bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKK2h0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0
LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJy
b3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTox
L3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIHdpbGxTZW5k
UmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5q
cGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBy
ZWRpcmVjdFJlc3BvbnNlIChudWxsKQotaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBn
IC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRv
bWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVz
dC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRp
bmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMs
IGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGciPgogaHR0cDov
LzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVl
c3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBV
UkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51
bGwpCiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dp
dGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFp
bGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyI+CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1jZy1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tY2ct
bWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5ODg2NykKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWNnLW1hYy9zZWN1cml0eS9ibG9jay10ZXN0
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGh0dHA6Ly8yNTUu
MjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVS
TCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJs
b2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQog
PHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZworaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rl
c3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRF
cnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjEvdGVzdC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0
LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1odHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5q
cGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9y
RG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90
ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSBkaWRGYWlsTG9h
ZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEw
MywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyI+CiBodHRw
Oi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVx
dWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50
IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAo
bnVsbCkKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5n
V2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBm
YWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIj4KSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
c2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4ODY3KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogaHR0cDovLzI1NS4yNTUuMjU1
LjI1NToxL3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6
Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVz
dC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiA8dW5rbm93
bj4gLSBkaWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcg
LSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9t
YWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0
LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVl
c3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnLCBt
YWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJl
Y3RSZXNwb25zZSAobnVsbCkKLWh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIGRp
ZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4s
IGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBn
Ij4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0
aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWls
aW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUu
MjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVS
TCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJs
b2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQog
aHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJy
b3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcg
VVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGciPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDk4ODY3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
NCArNCw1IEBACiByZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzLCBodHRwIHN0YXR1cyBjb2Rl
IDA+CiByZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MgLSBkaWRGaW5pc2hMb2FkaW5nCiByZXNvdXJj
ZXMvc3R5bGVzaGVldC5jc3MgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgcmVz
b3VyY2VzL3N0eWxlc2hlZXQuY3NzLCBodHRwIHN0YXR1cyBjb2RlIDA+CityZXNvdXJjZXMvc3R5
bGVzaGVldC5jc3MgLSBkaWRGaW5pc2hMb2FkaW5nCiBUaGlzIHRlc3RzIHRoYXQgZmlsZTogVVJM
IGFyZSBsb2FkZWQgc2VwYXJhdGVseSBldmVuIGlmIHRoZXkgZGlmZmVyIGJ5IHRoZSBmcmFnbWVu
dCBvbmx5LgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTg4NjcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMC0yOCAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRlc3QgdWRwYXRlcyBmb3IgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTQ5LgorICAgICAgICBUaGUg
Y2hhbmdlcyB0byBTdWJyZXNvdXJjZUxvYWRlciBzbGlnaHRseSBjaGFuZ2UgdGhlIHRpbWluZ3Mg
b2YKKyAgICAgICAgY2VydGFpbiByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTQ5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9maWxlLXBy
b3RvY29sLWZyYWdtZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS1jZy1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0tbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4t
aW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zZWN1
cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvd2Vi
YXJjaGl2ZS9sb2FkaW5nL2NhY2hlLWV4cGlyZWQtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0Ogor
CiAyMDExLTEwLTMxICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgog
CiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQuIFVwZGF0ZSBTa2lwcGVkIGxpc3QuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDk4ODY3KQorKysgU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjE0MSw4ICsyMTQx
LDYgQEAKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgg
XAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggXAogCVNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggXApAQCAtMjIzMSw3ICsyMjI5
LDYgQEAKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CShyZXZpc2lvbiA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC05MDEsNyArOTAxLDYgQEAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIFwKICAgICBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwIFwKLSAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgXAogICAgIGxvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBcCkBAIC0xOTI0LDcgKzE5MjMsNiBAQAogICAg
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIFwKICAgICBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
SGFuZGxlLmggXAotICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBcCiAg
ICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oIFwKICAgICBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDExLTEwLTI4ICBOYXRlIENoYXBpbiAg
PGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGlz
IG5vdyB0aGUgb25seSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudAorICAgICAgICBNZXJnZSBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgaW50byBTdWJyZXNvdXJjZUxvYWRlciBhbmQgZGVsZXRlCisgICAg
ICAgIHRoZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuIEEgZmV3IGl0ZW1zIHdl
cmUgbW92ZWQKKyAgICAgICAgdG8gQ2FjaGVkUmVzb3VyY2UgaW5zdGVhZCBvZiBTdWJyZXNvdXJj
ZUxvYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5j
cHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNv
dXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjppbml0KTogRG8gd29yayB0
aGF0IGhhZCBwcmV2aW91c2x5IGJlZW4KKyAgICAgICAgICAgIGRvbmUgaW4gU3VicmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZSgpIGFmdGVyIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOiBEbyB0aGUgY2xlYW51cCB3b3JrIHRoYXQgd2FzCisg
ICAgICAgICAgICBkdXBsaWNhdGVkIHRocm91Z2hvdXQgdGhlIHZhcmlvdXMgdGVybWluYWwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IGNhbGxiYWNrcy4KKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDogRml4IGluZGVudGF0aW9uIHN0eWxlIGlzc3Vlcy4KKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6IERvIHRoZSB3b3JrIHRoYXQgaGFk
IGJlZW4gZG9uZSBpbgorICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKCku
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6c3RvcExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmNhbkRlbGV0
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg6IFJlbW92ZWQu
CisgICAgICAgICogbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwOgorICAgICAgICAq
IGxvYWRlci9jaHJvbWl1bS9DYWNoZWRSZXNvdXJjZVJlcXVlc3RDaHJvbWl1bS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogbG9hZGVyL2Nocm9taXVtL1N1YnJlc291cmNlTG9hZGVyQ2hyb21pdW0u
Y3BwOgorCiAyMDExLTEwLTMxICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDU1NSdWxlOiBEZXZpcnR1YWxpemUgaW5zZXJ0ZWRJbnRvUGFyZW50KCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTg4NiwxMCArMjU4ODYsNiBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbG9hZGVyXFN1YnN0aXR1dGVEYXRhLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMjYx
ODEsMTQgKzI2MTc3LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIgot
CQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9h
ZGVyXGNhY2hlXENhY2hlZFJlc291cmNlUmVxdWVzdC5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgot
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFNjcmlw
dC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNTc3LDcgKzU3Nyw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0
aW9ucy5oJywKICAgICAgICAgICAgICdsb2FkZXIvU3ViZnJhbWVMb2FkZXIuaCcsCiAgICAgICAg
ICAgICAnbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgnLAotICAgICAgICAgICAgJ2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICdsb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oJywKQEAgLTU5Niw3ICs1OTUs
NiBAQAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oJywK
ICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCcsCiAgICAg
ICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgnLAotICAgICAgICAg
ICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAn
bG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAnbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9pY29uL0ljb25D
b250cm9sbGVyLmgnLApAQCAtMjg1MCw3ICsyODQ4LDYgQEAKICAgICAgICAgICAgICdsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCcsCi0gICAgICAgICAgICAnbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwJywKQEAg
LTI4NjAsNyArMjg1Nyw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwJywK
ICAgICAgICAgICAgICdsb2FkZXIvY2hyb21pdW0vQ2FjaGVkUmF3UmVzb3VyY2VDaHJvbWl1bS5j
cHAnLAotICAgICAgICAgICAgJ2xvYWRlci9jaHJvbWl1bS9DYWNoZWRSZXNvdXJjZVJlcXVlc3RD
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jaHJvbWl1bS9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jaHJvbWl1bS9S
ZXNvdXJjZUxvYWRlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2Nocm9taXVt
L1N1YnJlc291cmNlTG9hZGVyQ2hyb21pdW0uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC05NjksNyArOTY5LDYgQEAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcAogICAg
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKLSAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCiAgICAgbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTg4NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTM0Niw3ICszNDYsNiBAQAogCQkxQTJFNkU1OTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEy
RTZFNTcwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmNwcCAqLzsgfTsKIAkJMUEyRTZFNUEw
Q0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJFNkU1ODBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTJF
NkU3QTBDQzU1NkQ1MDA0QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJFNkU3ODBDQzU1NkQ1MDA0QTIw
NjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAgKi87IH07Ci0JCTFBMzE3ODkzMEIyMEE4MTYwMDMx
Njk4NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMTc4OTIwQjIwQTgxNjAwMzE2OTg3IC8qIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUEzNDE3QzkwQ0VDRkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTM0MTdDNzBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCAqLzsgfTsK
IAkJMUEzNDE3Q0EwQ0VDRkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzQxN0M4MENF
Q0ZGMjUwMDQ5Q0JERSAvKiBKU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAgKi87IH07CiAJCTFBNDk0
QkZBMEExMjJGNDQwMEZEQUZDMSAvKiBKU0hUTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDk0QkY4MEExMjJGNDQwMEZEQUZDMSAv
KiBKU0hUTUxFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTU3MzEsOCArNTczMCw2IEBACiAJCUQwQkM1
NDQ5MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEJDNTQ0ODE0NDNBQzRBMDBF
MTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovOyB9OwogCQlEMENFNThGODEyNUU0
Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQ0U1OEY2MTI1RTRDQzIwMEYzRjE5OSAv
KiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwICovOyB9OwogCQlEMENFNThGOTEyNUU0Q0MyMDBG
M0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMENFNThGNzEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJRDBEMTQxQjIxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
MEQxNDFCMDEyQjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLzsg
fTsKLQkJRDBEMTQxQjMxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBEMTQxQjEx
MkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwRURBNzc0MTQzRTMwM0MwMDI4
RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwICovOyB9OwogCQlEMEVEQTc3NTE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVk
UmF3UmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICovOyB9
OwogCQlEMEZGMkE1RDExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEZGMkE1QjExRjhDNDVBMDA3
RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi87IH07CkBAIC03MzczLDcgKzczNzAsNiBAQAogCQkx
QTJFNkU1NzBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gU1FMVmFsdWUuY3BwOyBwYXRoID0gc3FsL1NRTFZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYy
IC8qIFNRTFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFZhbHVl
Lmg7IHBhdGggPSBzcWwvU1FMVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1FMaXRlQXV0aG9yaXplci5jcHA7IHBhdGgg
PSBzcWwvU1FMaXRlQXV0aG9yaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBMzE3ODkyMEIyMEE4MTYwMDMxNjk4NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM0MTdDNzBDRUNGRjI1MDA0OUNCREUg
LyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEzNDE3QzgwQ0VDRkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0OTRCQkIwQTEyMkRDRDAwRkRBRkMx
IC8qIEhUTUxFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRWxlbWVudC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAxMiw4ICsxMzAwOCw2IEBACiAJ
CUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8q
IFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMENFNThGNzEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFNjaGVkdWxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQxNDFCMDEyQjJCRjUyMDBFMzk2
MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQwRDE0MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzcyMTQzRTMwM0Mw
MDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyog
UGluZ0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5n
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4Mzk3LDggKzE4Mzkx
LDYgQEAKIAkJCQlFNDdCNEJFNjBFNzEyNDE2MDAwMzg4NTQgLyogQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCAqLywKIAkJCQlCQ0IxNkMxMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwICovLAogCQkJCUJDQjE2QzExMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNv
dXJjZUxvYWRlci5oICovLAotCQkJCUQwRDE0MUIwMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuY3BwICovLAotCQkJCUQwRDE0MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLywKIAkJCQlCQ0IxNkMwQTA5NzlDM0JEMDA0Njc3NDEg
LyogQ2FjaGVkU2NyaXB0LmNwcCAqLywKIAkJCQlCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkU2NyaXB0LmggKi8sCiAJCQkJRDBCQzU0NDgxNDQzQUM0QTAwRTEwNURBIC8qIENhY2hl
ZFN0eWxlU2hlZXRDbGllbnQuaCAqLywKQEAgLTE5ODMyLDcgKzE5ODI0LDYgQEAKIAkJCQlEMDAw
RUQyNjExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuaCAqLywKIAkJCQk5M0UyMjdE
RjBBRjU4OUFEMDBENDgzMjQgLyogU3VicmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQz
NzMwMEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oICovLAotCQkJCTFBMzE3
ODkyMEIyMEE4MTYwMDMxNjk4NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oICovLAogCQkJ
CTY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovLAogCQkJCTFB
OEY2QjAxMERCNTMwMDYwMDFEQjc5NCAvKiBTdWJzdGl0dXRlUmVzb3VyY2UuaCAqLywKIAkJCQlG
NTIzRDI3ODAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgKi8sCkBA
IC0yMTY2Nyw3ICsyMTY1OCw2IEBACiAJCQkJQkNCMTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdCNEJFODBF
NzEyNDE2MDAwMzg4NTQgLyogQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRDBEMTQxQjMxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMjQwOTc5QzNCRDAwNDY3NzQx
IC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTMzNjQwRUQ2ODQ4OTAw
ODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEMEJDNTQ0OTE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNDAwNyw3ICsyMzk5Nyw2IEBACiAJCQkJRDAwMEVEMjgxMUMxQjlD
RDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RE
NDEyNTFGMTJEMDAzRUYyNjkgLyogU3VibWl0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NTZEMzc0ODBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTFBMzE3ODkzMEIyMEE4MTYwMDMxNjk4NyAvKiBTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8q
IFN1YnN0aXR1dGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkIwMjBEQjUzMDA2MDAx
REI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyRDgx
NjBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovLApA
QCAtMjUwMDAsNyArMjQ5ODksNiBAQAogCQkJCUJDQjE2QzFGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDdCNEJFOTBFNzEyNDE2MDAw
Mzg4NTQgLyogQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNC
MTZDMjkwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUQwRDE0MUIyMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMjMwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMyNzA5NzlDM0JEMDA0
Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMTgy
NzQ5MzEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jaHJvbWl1bS9TdWJyZXNvdXJjZUxvYWRl
ckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2hyb21p
dW0vU3VicmVzb3VyY2VMb2FkZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDk4ODY3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2Nocm9taXVtL1N1YnJlc291cmNlTG9hZGVyQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDkg
KzQzLDcgQEAKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAg
ICAgCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZERvd25sb2FkRGF0YShsZW5ndGgpOwotCi0gICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkRG93bmxvYWREYXRhKHRoaXMsIGxl
bmd0aCk7CisgICAgbV9yZXNvdXJjZS0+ZGlkRG93bmxvYWREYXRhKGxlbmd0aCk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jaHJvbWl1bS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nocm9t
aXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcAkocmV2aXNpb24gOTg4NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2hyb21pdW0vQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Q2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgotCi0jaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWREb3dubG9h
ZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgaW50IGxlbmd0aCkKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVyKTsKLSAgICBtX3Jlc291cmNlLT5k
aWREb3dubG9hZERhdGEobGVuZ3RoKTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5
ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDYWNoZWRG
b250LmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNv
dXJjZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNh
Y2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKICNpbmNsdWRl
ICJDb25zb2xlLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDk4ODY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCkBAIC0z
Nyw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zMDIsMTEgKzMwMiwxMCBA
QAogCiB2b2lkIENhY2hlZEltYWdlOjpjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKQogewot
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+ZnJhbWUoKSA6IDA7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIW1fbG9hZGVy
IHx8IG1fbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgPSBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5zaG91bGRQYWludEJyb2tlbkltYWdlKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKKyAgICBt
X3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgPSBtX2xvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCktPnNob3VsZFBhaW50QnJva2VuSW1hZ2UobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpOwogfQog
CiB2b2lkIENhY2hlZEltYWdlOjpjbGVhcigpCkBAIC0zMzksMTAgKzMzOCw5IEBACiAKIHNpemVf
dCBDYWNoZWRJbWFnZTo6bWF4aW11bURlY29kZWRJbWFnZVNpemUoKQogewotICAgIEZyYW1lKiBm
cmFtZSA9IG1fcmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+ZnJh
bWUoKSA6IDA7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIW1fbG9hZGVyIHx8IG1fbG9hZGVy
LT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBtX2xvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKTsKICAgICByZXR1
cm4gc2V0dGluZ3MgPyBzZXR0aW5ncy0+bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSA6IDA7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAkocmV2aXNpb24gOTg4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTcgQEAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlB1cmdlYWJsZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTgwLDYgKzgyLDQxIEBACiAg
ICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5TG93OwogfQogCisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCitzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlZFJlc291cmNl
VHlwZVRvVGFyZ2V0VHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYg
RU5BQkxFKFhTTFQpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKKyNl
bmRpZgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N0eWxlU2hlZXQ7
CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OiAKKyAgICAgICAgcmV0dXJuIFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0SXNTY3JpcHQ7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9u
dFJlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRS
ZXNvdXJjZTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgorICAgICAg
ICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOworICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlJhd1Jlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRJc1N1YnJlc291cmNlOyAgICAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBSZXNvdXJj
ZVJlcXVlc3Q6OlRhcmdldElzUHJlZmV0Y2g7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZXJlbmRlcjoKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVy
ZW5kZXI7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgorICAgICAg
ICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOworI2VuZGlmCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291
cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0N1ZTsKKyNlbmRp
ZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOworfQorI2VuZGlmCisKIERFRklORV9ERUJVR19P
TkxZX0dMT0JBTChSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFJlc291cmNlTGVha0NvdW50
ZXIsICgiQ2FjaGVkUmVzb3VyY2UiKSk7CiAKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJj
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFR5cGUgdHlwZSkKQEAgLTEzOCwxMSAr
MTc1LDQ5IEBACiB7CiAgICAgbV9vcHRpb25zID0gb3B0aW9uczsKICAgICBtX2xvYWRpbmcgPSB0
cnVlOwotICAgIG1fcmVxdWVzdCA9IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9hZChjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgdGhpcywgb3B0aW9ucyk7Ci0gICAgaWYgKG1fcmVxdWVzdCkgewotICAg
ICAgICBtX3N0YXR1cyA9IFBlbmRpbmc7Ci0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5p
bmNyZW1lbnRSZXF1ZXN0Q291bnQodGhpcyk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAg
ICBtX3Jlc291cmNlUmVxdWVzdC5zZXRUYXJnZXRUeXBlKGNhY2hlZFJlc291cmNlVHlwZVRvVGFy
Z2V0VHlwZSh0eXBlKCkpKTsKKyNlbmRpZgorCisgICAgaWYgKCFhY2NlcHQoKS5pc0VtcHR5KCkp
CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBBY2NlcHQoYWNjZXB0KCkpOworCisg
ICAgaWYgKGlzQ2FjaGVWYWxpZGF0b3IoKSkgeworICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2VUb1JldmFsaWRhdGUgPSBtX3Jlc291cmNlVG9SZXZhbGlkYXRlOworICAgICAgICBBU1NF
UlQocmVzb3VyY2VUb1JldmFsaWRhdGUtPmNhblVzZUNhY2hlVmFsaWRhdG9yKCkpOworICAgICAg
ICBBU1NFUlQocmVzb3VyY2VUb1JldmFsaWRhdGUtPmlzTG9hZGVkKCkpOworICAgICAgICBjb25z
dCBTdHJpbmcmIGxhc3RNb2RpZmllZCA9IHJlc291cmNlVG9SZXZhbGlkYXRlLT5yZXNwb25zZSgp
Lmh0dHBIZWFkZXJGaWVsZCgiTGFzdC1Nb2RpZmllZCIpOworICAgICAgICBjb25zdCBTdHJpbmcm
IGVUYWcgPSByZXNvdXJjZVRvUmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQo
IkVUYWciKTsKKyAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0eSgpIHx8ICFlVGFnLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNo
ZVBvbGljeSgpICE9IENhY2hlUG9saWN5UmVsb2FkKTsKKyAgICAgICAgICAgIGlmIChjYWNoZWRS
ZXNvdXJjZUxvYWRlci0+Y2FjaGVQb2xpY3koKSA9PSBDYWNoZVBvbGljeVJldmFsaWRhdGUpCisg
ICAgICAgICAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNo
ZS1Db250cm9sIiwgIm1heC1hZ2U9MCIpOworICAgICAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZCgiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9kaWZpZWQpOworICAgICAgICAgICAg
aWYgKCFlVGFnLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoIklmLU5vbmUtTWF0Y2giLCBlVGFnKTsKKyAgICAgICAgfQogICAg
IH0KKworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGlmICh0eXBlKCkgPT0gQ2FjaGVk
UmVzb3VyY2U6OkxpbmtQcmVmZXRjaCB8fCB0eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQ
cmVyZW5kZXIgfHwgdHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2UpCisg
ICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHVycG9zZSIsICJw
cmVmZXRjaCIpOworI2VuZGlmCisgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkobG9h
ZFByaW9yaXR5KCkpOworICAgIAorICAgIG1fbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVu
dCgpLT5mcmFtZSgpLCB0aGlzLCBtX3Jlc291cmNlUmVxdWVzdCwgbV9yZXNvdXJjZVJlcXVlc3Qu
cHJpb3JpdHkoKSwgb3B0aW9ucyk7CisgICAgaWYgKCFtX2xvYWRlciB8fCBtX2xvYWRlci0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgeworICAgICAgICAvLyBGSVhNRTogV2hhdCBpZiByZXNvdXJj
ZXMgaW4gb3RoZXIgZnJhbWVzIHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/Cisg
ICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5ub3Qgc3RhcnQgbG9hZGluZyAnJXMnIiwg
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VU
b1JldmFsaWRhdGUpIAorICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFp
bGVkKHRoaXMpOyAKKyAgICAgICAgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXR1cyA9IFBlbmRpbmc7CisgICAgY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudCh0aGlzKTsKIH0KIAogdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQpAQCAtMTc2LDcgKzI1MSw4IEBACiAKIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaCgpCiB7Ci0gICAgbV9zdGF0dXMgPSBDYWNoZWQ7Cisg
ICAgaWYgKCFlcnJvck9jY3VycmVkKCkpCisgICAgICAgIG1fc3RhdHVzID0gQ2FjaGVkOwogfQog
CiBib29sIENhY2hlZFJlc291cmNlOjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luKQpAQCAtMjMxLDYgKzMwNyw5IEBACiB7CiAgICAgbV9yZXNw
b25zZSA9IHJlc3BvbnNlOwogICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgp
OworICAgIFN0cmluZyBlbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKKyAg
ICBpZiAoIWVuY29kaW5nLmlzTnVsbCgpKQorICAgICAgICBzZXRFbmNvZGluZyhlbmNvZGluZyk7
CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldFNlcmlhbGl6ZWRDYWNoZWRNZXRhZGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTI2Myw4ICszNDIsOCBAQAogCiB2b2lk
IENhY2hlZFJlc291cmNlOjpzdG9wTG9hZGluZygpCiB7Ci0gICAgQVNTRVJUKG1fcmVxdWVzdCk7
ICAgICAgICAgICAgCi0gICAgbV9yZXF1ZXN0LmNsZWFyKCk7CisgICAgQVNTRVJUKG1fbG9hZGVy
KTsgICAgICAgICAgICAKKyAgICBtX2xvYWRlciA9IDA7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDk4ODY3KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDExICs0NCwxMSBAQAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
LWNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVj
dG9yUmVzb3VyY2U7CiBjbGFzcyBQdXJnZWFibGVCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKK2NsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogCiAvLyBBIHJlc291cmNlIHRoYXQgaXMgaGVs
ZCBpbiB0aGUgY2FjaGUuIENsYXNzZXMgd2hvIHdhbnQgdG8gdXNlIHRoaXMgb2JqZWN0IHNob3Vs
ZCBkZXJpdmUKIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHRvIGdldCB0aGUgZnVuY3Rp
b24gY2FsbHMgaW4gY2FzZSB0aGUgcmVxdWVzdGVkIGRhdGEgaGFzIGFycml2ZWQuCkBAIC0xODcs
NyArMTg3LDcgQEAKICAgICAvLyBSZXR1cm5zIGNhY2hlZCBtZXRhZGF0YSBvZiB0aGUgZ2l2ZW4g
dHlwZSBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXNvdXJjZS4KICAgICBDYWNoZWRNZXRhZGF0YSog
Y2FjaGVkTWV0YWRhdGEodW5zaWduZWQgZGF0YVR5cGVJRCkgY29uc3Q7CiAKLSAgICBib29sIGNh
bkRlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNDbGllbnRzKCkgJiYgIW1fcmVxdWVzdCAmJiAh
bV9wcmVsb2FkQ291bnQgJiYgIW1faGFuZGxlQ291bnQgJiYgIW1fcmVzb3VyY2VUb1JldmFsaWRh
dGUgJiYgIW1fcHJveHlSZXNvdXJjZTsgfQorICAgIGJvb2wgY2FuRGVsZXRlKCkgY29uc3QgeyBy
ZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9sb2FkZXIgJiYgIW1fcHJlbG9hZENvdW50ICYmICFt
X2hhbmRsZUNvdW50ICYmICFtX3Jlc291cmNlVG9SZXZhbGlkYXRlICYmICFtX3Byb3h5UmVzb3Vy
Y2U7IH0KICAgICBib29sIGhhc09uZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlQ291
bnQgPT0gMTsgfQogCiAgICAgYm9vbCBpc0V4cGlyZWQoKSBjb25zdDsKQEAgLTI1Myw3ICsyNTMs
NyBAQAogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIFN0cmlu
ZyBtX2FjY2VwdDsKLSAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBtX3JlcXVlc3Q7
CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIFJlc291cmNlTG9hZFByaW9yaXR5IG1fbG9hZFBy
aW9yaXR5OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTg4NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwzMjkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDE5OTggTGFycyBLbm9s
bCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDAyIFdhbGRvIEJhc3Rp
YW4gKGJhc3RpYW5Aa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCi0KLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRl
ICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxv
YWRlci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0p
Ci1zdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlZFJlc291cmNlVHlwZVRv
VGFyZ2V0VHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlw
ZSkgewotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0jaWYgRU5BQkxF
KFhTTFQpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKLSNlbmRpZgot
ICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N0eWxlU2hlZXQ7Ci0gICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OiAKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0SXNTY3JpcHQ7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291
cmNlOgotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRSZXNvdXJj
ZTsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1
cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOwotICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlJhd1Jlc291cmNlOgotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJ
c1N1YnJlc291cmNlOyAgICAKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzUHJlZmV0Y2g7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZXJl
bmRlcjoKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVyZW5kZXI7
Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgotICAgICAgICByZXR1
cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOwotI2VuZGlmCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgot
ICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0N1ZTsKLSNlbmRpZgotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc1N1YnJlc291cmNlOwotfQotI2VuZGlmCi0KLUNhY2hlZFJlc291cmNlUmVxdWVz
dDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNv
dXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotICAgIDogbV9jYWNoZWRSZXNv
dXJjZUxvYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikKLSAgICAsIG1fcmVzb3VyY2UocmVzb3Vy
Y2UpCi0gICAgLCBtX211bHRpcGFydChmYWxzZSkKLSAgICAsIG1fZmluaXNoaW5nKGZhbHNlKQot
ewotfQotCi1DYWNoZWRSZXNvdXJjZVJlcXVlc3Q6On5DYWNoZWRSZXNvdXJjZVJlcXVlc3QoKQot
ewotICAgIGlmIChtX2xvYWRlcikKLSAgICAgICAgbV9sb2FkZXItPmNsZWFyQ2xpZW50KCk7Ci19
Ci0KLVBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKLXsKLSAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQ
dHIobmV3IENhY2hlZFJlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlciwgcmVzb3Vy
Y2UpKTsKLQotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSByZXNvdXJjZS0+
cmVzb3VyY2VSZXF1ZXN0KCk7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgcmVzb3VyY2VS
ZXF1ZXN0LnNldFRhcmdldFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKHJlc291
cmNlLT50eXBlKCkpKTsKLSNlbmRpZgotCi0gICAgaWYgKCFyZXNvdXJjZS0+YWNjZXB0KCkuaXNF
bXB0eSgpKQotICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEFjY2VwdChyZXNvdXJjZS0+
YWNjZXB0KCkpOwotCi0gICAgaWYgKHJlc291cmNlLT5pc0NhY2hlVmFsaWRhdG9yKCkpIHsKLSAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlVG9SZXZhbGlkYXRlID0gcmVzb3VyY2UtPnJl
c291cmNlVG9SZXZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZVRvUmV2YWxpZGF0
ZS0+Y2FuVXNlQ2FjaGVWYWxpZGF0b3IoKSk7Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZVRvUmV2
YWxpZGF0ZS0+aXNMb2FkZWQoKSk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdE1vZGlmaWVk
ID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJMYXN0
LU1vZGlmaWVkIik7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZVRhZyA9IHJlc291cmNlVG9SZXZh
bGlkYXRlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiRVRhZyIpOwotICAgICAgICBpZiAo
IWxhc3RNb2RpZmllZC5pc0VtcHR5KCkgfHwgIWVUYWcuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5KCkgIT0gQ2FjaGVQb2xp
Y3lSZWxvYWQpOwotICAgICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNoZVBv
bGljeSgpID09IENhY2hlUG9saWN5UmV2YWxpZGF0ZSkKLSAgICAgICAgICAgICAgICByZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9MCIp
OwotICAgICAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIklmLU1vZGlmaWVkLVNpbmNl
IiwgbGFzdE1vZGlmaWVkKTsKLSAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiSWYtTm9uZS1N
YXRjaCIsIGVUYWcpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQotICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5r
UHJlZmV0Y2ggfHwgcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZXJl
bmRlciB8fCByZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3Vy
Y2UpCi0gICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlB1cnBvc2Ui
LCAicHJlZmV0Y2giKTsKLSNlbmRpZgotCi0gICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3Jp
dHkgPSByZXNvdXJjZS0+bG9hZFByaW9yaXR5KCk7Ci0gICAgcmVzb3VyY2VSZXF1ZXN0LnNldFBy
aW9yaXR5KHByaW9yaXR5KTsKLQotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVy
ID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hl
ZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLCByZXF1ZXN0LmdldCgpLCByZXNv
dXJjZVJlcXVlc3QsIHByaW9yaXR5LCBvcHRpb25zKTsKLSAgICBpZiAoIWxvYWRlciB8fCBsb2Fk
ZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYg
cmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcgZm9yIHRoaXMgcmV2YWxpZGF0
aW9uPwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcg
JyVzJyIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAg
ICBpZiAocmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpIAotICAgICAgICAgICAgbWVt
b3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKHJlc291cmNlKTsgCi0gICAgICAgIHJlc291
cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKLSAgICAgICAgcmV0dXJuIFBh
c3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PihudWxscHRyKTsKLSAgICB9Ci0gICAgcmVx
dWVzdC0+bV9sb2FkZXIgPSBsb2FkZXI7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwot
fQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6d2lsbFNlbmRSZXF1ZXN0KFN1YnJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAoIW1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNh
blJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCByZXEudXJsKCkpKSB7Ci0gICAgICAgIGxvYWRl
ci0+Y2FuY2VsKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9yZXNvdXJjZS0+d2ls
bFNlbmRSZXF1ZXN0KHJlcSwgcmVzcG9uc2UpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVx
dWVzdDo6Y2FuY2VsKCkKLXsKLSAgICBpZiAobV9maW5pc2hpbmcpCi0gICAgICAgIHJldHVybjsK
LSAgICBtX2xvYWRlci0+Y2FuY2VsKCk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0OjppZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sb2FkZXItPmlk
ZW50aWZpZXIoKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERlZmVyc0xv
YWRpbmcoYm9vbCBkZWZlcnMpCi17Ci0gICAgaWYgKG1fbG9hZGVyKQotICAgICAgICBtX2xvYWRl
ci0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVx
dWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUg
ZmluaXNoVGltZSkKLXsKLSAgICBpZiAobV9maW5pc2hpbmcpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2FkZXIuZ2V0KCkpOwotICAgIEFTU0VSVCghbV9yZXNv
dXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7Ci0gICAgTE9HKFJlc291cmNlTG9hZGluZywg
IlJlY2VpdmVkICclcycuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKLQotICAgIC8vIFByZXZlbnQgdGhlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVk
IGJlZm9yZSB3ZSBhcmUgZG9uZSB3aXRoCi0gICAgLy8gdGhlIGNhY2hlZFJlc291cmNlTG9hZGVy
IHRoYXQgaXQgd2lsbCBkZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgotICAg
IFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdG9yKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3Vt
ZW50KCkpOwotICAgIGlmICghbV9tdWx0aXBhcnQpCi0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChtX3Jlc291cmNlKTsKLSAgICBtX2ZpbmlzaGlu
ZyA9IHRydWU7Ci0KLSAgICAvLyBJZiB3ZSBnb3QgYSA0eHggcmVzcG9uc2UsIHdlJ3JlIHByZXRl
bmRpbmcgdG8gaGF2ZSByZWNlaXZlZCBhIG5ldHdvcmsKLSAgICAvLyBlcnJvciwgc28gd2UgY2Fu
J3Qgc2VuZCB0aGUgc3VjY2Vzc2Z1bCBkYXRhKCkgYW5kIGZpbmlzaCgpIGNhbGxiYWNrcy4KLSAg
ICBpZiAoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewotICAgICAgICBtX2NhY2hlZFJl
c291cmNlTG9hZGVyLT5sb2FkRmluaXNoaW5nKCk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPnNldExv
YWRGaW5pc2hUaW1lKGZpbmlzaFRpbWUpOwotICAgICAgICBtX3Jlc291cmNlLT5kYXRhKGxvYWRl
ci0+cmVzb3VyY2VEYXRhKCksIHRydWUpOwotICAgICAgICBpZiAoIW1fcmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPmZpbmlzaCgpOwotICAgIH0KLSAg
ICBlbmQoKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZEZhaWwoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBpZiAobV9m
aW5pc2hpbmcgfHwgIW1fbG9hZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNhbmNl
bGxlZCA9IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCk7Ci0gICAgTE9HKFJlc291cmNlTG9hZGluZywg
IkZhaWxlZCB0byBsb2FkICclcycgKGNhbmNlbGxlZD0lZCkuXG4iLCBtX3Jlc291cmNlLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNhbmNlbGxlZCk7Ci0KLSAgICAvLyBQcmV2ZW50
IHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZCBiZWZvcmUgd2UgYXJlIGRvbmUgd2l0
aAotICAgIC8vIHRoZSBjYWNoZWRSZXNvdXJjZUxvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdo
ZW4gdGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KLSAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3Rl
Y3RvcihtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpKTsKLSAgICBpZiAoIW1fbXVs
dGlwYXJ0KQotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQobV9yZXNvdXJjZSk7Ci0gICAgbV9maW5pc2hpbmcgPSB0cnVlOwotICAgIG1fbG9hZGVy
LT5jbGVhckNsaWVudCgpOwotCi0gICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlk
YXRlKCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291
cmNlKTsKLQotICAgIGlmICghY2FuY2VsbGVkKSB7Ci0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VM
b2FkZXItPmxvYWRGaW5pc2hpbmcoKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2FjaGVk
UmVzb3VyY2U6OkxvYWRFcnJvcik7Ci0gICAgfQotCi0gICAgaWYgKGNhbmNlbGxlZCB8fCAhbV9y
ZXNvdXJjZS0+aXNQcmVsb2FkZWQoKSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKG1f
cmVzb3VyY2UpOwotICAgIAotICAgIGVuZCgpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVx
dWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIEFTU0VSVChsb2FkZXIgPT0gbV9s
b2FkZXIuZ2V0KCkpOwotICAgIGlmIChtX3Jlc291cmNlLT5pc0NhY2hlVmFsaWRhdG9yKCkpIHsK
LSAgICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSB7Ci0gICAgICAg
ICAgICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkKLSAgICAgICAgICAgIGxv
YWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVj
dG9yKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOwot
ICAgICAgICAgICAgbV9maW5pc2hpbmcgPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBFeGlzdGlu
ZyByZXNvdXJjZSBpcyBvaywganVzdCB1c2UgaXQgdXBkYXRpbmcgdGhlIGV4cGlyYXRpb24gdGlt
ZS4KLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJldmFsaWRhdGlvblN1Y2NlZWRlZChtX3Jl
c291cmNlLCByZXNwb25zZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLT5jaGVja0NvbXBsZXRlZCgpOwotCi0gICAgICAg
ICAgICBlbmQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSAKLSAgICAgICAgLy8g
RGlkIG5vdCBnZXQgMzA0IHJlc3BvbnNlLCBjb250aW51ZSBhcyBhIHJlZ3VsYXIgcmVzb3VyY2Ug
bG9hZC4KLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3Vy
Y2UpOwotICAgIH0KLQotICAgIC8vIHNldFJlc3BvbnNlKCkgbWlnaHQgY2FuY2VsIHRoZSByZXF1
ZXN0LCBzbyB3ZSBuZWVkIHRvIGtlZXAgb3Vyc2VsdmVzIGFsaXZlLiBVbmZvcnR1bmF0ZWx5LAot
ICAgIC8vIHdlIGNhbid0IHByb3RlY3QgYSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QsIGJ1dCB3ZSBj
YW4gcHJvdGVjdCBtX3Jlc291cmNlLCB3aGljaCBoYXMgdGhlCi0gICAgLy8gcG93ZXIgdG8ga2ls
bCB0aGUgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IChhbmQgd2lsbCBzd2l0Y2ggaXNMb2FkaW5nKCkg
dG8gZmFsc2UgaWYgaXQgZG9lcyBzbykuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IHByb3RlY3QobV9yZXNvdXJjZSk7Ci0gICAgbV9yZXNvdXJjZS0+c2V0UmVzcG9u
c2UocmVzcG9uc2UpOwotICAgIGlmICghcHJvdGVjdC0+aXNMb2FkaW5nKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFN0cmluZyBlbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KTsKLSAgICBpZiAoIWVuY29kaW5nLmlzTnVsbCgpKQotICAgICAgICBtX3Jlc291cmNlLT5zZXRF
bmNvZGluZyhlbmNvZGluZyk7Ci0gICAgCi0gICAgaWYgKG1fbXVsdGlwYXJ0KSB7Ci0gICAgICAg
IEFTU0VSVChtX3Jlc291cmNlLT5pc0ltYWdlKCkpOwotICAgICAgICBzdGF0aWNfY2FzdDxDYWNo
ZWRJbWFnZSo+KG1fcmVzb3VyY2UpLT5jbGVhcigpOwotICAgICAgICBpZiAobV9jYWNoZWRSZXNv
dXJjZUxvYWRlci0+ZnJhbWUoKSkKLSAgICAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCktPmxvYWRlcigpLT5jaGVja0NvbXBsZXRlZCgpOwotICAgIH0gZWxzZSBpZiAocmVz
cG9uc2UuaXNNdWx0aXBhcnQoKSkgewotICAgICAgICBtX211bHRpcGFydCA9IHRydWU7Ci0gICAg
ICAgIAotICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChtX3Jlc291cmNlKTsKLQotICAgICAgICAvLyBJZiB3
ZSBnZXQgYSBtdWx0aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQotICAgICAg
ICBBU1NFUlQobG9hZGVyLT5oYW5kbGUoKSk7Ci0gICAgICAgIGlmICghbV9yZXNvdXJjZS0+aXNJ
bWFnZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5oYW5kbGUoKS0+Y2FuY2VsKCk7Ci0gICAgfQot
fQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoU3VicmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpCi17Ci0gICAgQVNT
RVJUKGxvYWRlciA9PSBtX2xvYWRlci5nZXQoKSk7Ci0gICAgQVNTRVJUKCFtX3Jlc291cmNlLT5p
c0NhY2hlVmFsaWRhdG9yKCkpOwotICAgIAotICAgIGlmIChtX3Jlc291cmNlLT5lcnJvck9jY3Vy
cmVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpKSB7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmVycm9yKENhY2hlZFJl
c291cmNlOjpMb2FkRXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhl
cmUgYXJlIHR3byBjYXNlcyB3aGVyZSB3ZSBtaWdodCBuZWVkIHRvIGNyZWF0ZSBvdXIgb3duIFNo
YXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIG9uZSBpbiBSZXNvdXJjZUxvYWRlci4K
LSAgICAvLyAoMSkgTXVsdGlwYXJ0IGNvbnRlbnQ6IFRoZSBsb2FkZXIgZGVsaXZlcnMgdGhlIGRh
dGEgaW4gYSBtdWx0aXBhcnQgc2VjdGlvbiBhbGwgYXQgb25jZSwgdGhlbiBzZW5kcyBlb2YuCi0g
ICAgLy8gICAgIFRoZSByZXNvdXJjZSBkYXRhIHdpbGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQg
aXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBjb3B5LgotICAgIC8vICgyKSBPdXIgY2xp
ZW50IHJlcXVlc3RlZCB0aGF0IHRoZSBkYXRhIG5vdCBiZSBidWZmZXJlZCBhdCB0aGUgUmVzb3Vy
Y2VMb2FkZXIgbGV2ZWwgdmlhIFJlc291cmNlTG9hZGVyT3B0aW9ucy4gSW4gdGhpcyBjYXNlLAot
ICAgIC8vICAgICBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgd2lsbCBiZSBudWxsLiBI
b3dldmVyLCB1bmxpa2UgdGhlIG11bHRpcGFydCBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIHRlbGwg
dGhlIENhY2hlZFJlc291cmNlCi0gICAgLy8gICAgIHRoYXQgYWxsIGRhdGEgaGFzIGJlZW4gcmVj
ZWl2ZWQgeWV0LgotICAgIGlmIChtX211bHRpcGFydCB8fCAhbG9hZGVyLT5yZXNvdXJjZURhdGEo
KSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3BpZWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmRhdGEoY29waWVk
RGF0YS5yZWxlYXNlKCksIG1fbXVsdGlwYXJ0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9yZXNv
dXJjZS0+ZGF0YShsb2FkZXItPnJlc291cmNlRGF0YSgpLCBmYWxzZSk7Ci19Ci0KLXZvaWQgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKLXsKLSAgICBBU1NFUlQoIW1fcmVz
b3VyY2UtPmlzQ2FjaGVWYWxpZGF0b3IoKSk7Ci0gICAgbV9yZXNvdXJjZS0+c2V0U2VyaWFsaXpl
ZENhY2hlZE1ldGFkYXRhKGRhdGEsIHNpemUpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVx
dWVzdDo6ZGlkU2VuZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQotewotICAg
IG1fcmVzb3VyY2UtPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
LX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmVuZCgpCi17Ci0gICAgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlci0+bG9hZERvbmUoKTsKLSAgICBtX3Jlc291cmNlLT5zdG9wTG9hZGluZygp
OwotfQotCi19IC8vbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gOTg4NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC03OCw4ICs3OCw4IEBACiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFsbENsaWVudHNS
ZW1vdmVkKCkKIHsKLSAgICBpZiAobV9yZXF1ZXN0KQotICAgICAgICBtX3JlcXVlc3QtPmNhbmNl
bCgpOworICAgIGlmIChtX2xvYWRlcikKKyAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQog
CiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOSwxMyAr
MTA5LDEzIEBACiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCBkZWZlcnMpCiB7Ci0gICAgaWYgKG1fcmVxdWVzdCkKLSAgICAgICAgbV9yZXF1ZXN0LT5zZXRE
ZWZlcnNMb2FkaW5nKGRlZmVycyk7CisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRl
ci0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCiB1bnNpZ25lZCBsb25nIENhY2hlZFJh
d1Jlc291cmNlOjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXF1ZXN0ID8g
bV9yZXF1ZXN0LT5pZGVudGlmaWVyKCkgOiAwOworICAgIHJldHVybiBtX2xvYWRlciA/IG1fbG9h
ZGVyLT5pZGVudGlmaWVyKCkgOiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5oCShyZXZpc2lvbiA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MiArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRl
KQotICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4K
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0X2gKLSNk
ZWZpbmUgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0X2gKLQotI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlw
ZXMuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyT3B0aW9ucy5oIgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKLSAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKLSAgICBjbGFz
cyBSZXNvdXJjZUVycm9yOwotICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotCi0gICAgY2xh
c3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IDogcHJpdmF0ZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dCB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDYWNoZWRSZXNvdXJj
ZVJlcXVlc3Q+IGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSosIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwotICAgICAgICB+Q2FjaGVkUmVzb3VyY2VSZXF1
ZXN0KCk7Ci0KLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsgfQotICAgICAgICB2
b2lkIGNhbmNlbCgpOwotCi0gICAgICAgIC8vIEZJWE1FOiBMaWtlIENhY2hlZFJlc291cmNlOjpp
ZGVudGlmaWVyKCksIHRoaXMgaXMgYSBsYW1lIGhhY2sgZm9yIHByZWZsaWdodCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24gaW4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLgotICAgICAgICB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKLQotICAgICAgICAvLyBGSVhNRTogU2VlIENh
Y2hlZFJhd1Jlc291cmNlOjpzZXREZWZlcnNMb2FkaW5nKCkgZm9yIHRoZSByZWxldmFudCByYW50
LgotICAgICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFN1YnJl
c291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgICAg
ICB2b2lkIGVuZCgpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShTdWJyZXNv
dXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBs
b25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLyk7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0p
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWREb3dubG9hZERhdGEoU3VicmVzb3VyY2VMb2FkZXIq
LCBpbnQpOwotI2VuZGlmCi0KLSAgICAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xv
YWRlcjsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwotICAgICAgICBib29sIG1f
bXVsdGlwYXJ0OwotICAgICAgICBib29sIG1fZmluaXNoaW5nOwotICAgIH07Ci0KLX0KLQotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAkocmV2aXNpb24gOTg4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsOSBAQAogI2Vu
ZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxv
YWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCitQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlTG9hZFBy
aW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7
Ci0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOworICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFt
ZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAg
IHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKICAgICByZXR1cm4gbG9hZGVy
LnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODg2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudF9oCi0jZGVm
aW5lIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU3VicmVz
b3VyY2VMb2FkZXI7Ci0gICAgCi1jbGFzcyBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+U3VicmVzb3VyY2VMb2FkZXJDbGllbnQoKSB7IH0gCi0KLSAgICAv
LyByZXF1ZXN0IG1heSBiZSBtb2RpZmllZAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoU3VicmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50
Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxv
YWRlciosIGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlIC8qZmluaXNo
VGltZSovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KLQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAg
IHZpcnR1YWwgdm9pZCBkaWREb3dubG9hZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBpbnQgLypk
YXRhTGVuZ3RoKi8pIHsgfQotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBTdWJyZXNvdXJjZUxvYWRlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCShyZXZpc2lvbiA5ODg2
NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBIQVZFKE5FVFdPUktfQ0ZE
QVRBX0FSUkFZX0NBTExCQUNLKQpAQCAtNDYsNyArNDQsNyBAQAogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIENGRGF0YVJlZiBk
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
ZGF0YUFycmF5LCBpKSk7Ci0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhp
cywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkp
LCBzdGF0aWNfY2FzdDxpbnQ+KENGRGF0YUdldExlbmd0aChkYXRhKSkpOworICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KENGRGF0YUdldEJ5
dGVQdHIoZGF0YSkpLCBzdGF0aWNfY2FzdDxpbnQ+KENGRGF0YUdldExlbmd0aChkYXRhKSksIC0x
LCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDk4ODY3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3
IEBACiAKICAgICB3aWxsU2VuZFJlcXVlc3QoY2xpZW50UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25z
ZSgpKTsKICAgICBpZiAoY2xpZW50UmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBkaWRGYWls
KGNhbmNlbGxlZEVycm9yKCkpOworICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNj
aGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAkocmV2aXNpb24gOTg4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIEZy
YW1lOwogY2xhc3MgS1VSTDsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwpAQCAt
NDQsMTQgKzQ1LDEzIEBACiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQ7CiAKIGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVzb3VyY2VMb2FkU2NoZWR1bGVyKTsKIHB1YmxpYzoKICAgICBmcmllbmQgUmVz
b3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFBhc3NS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgUGFzc1Jl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9y
aXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBQYXNzUmVmUHRyPE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZv
aWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDk4ODY3KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMg
KzI5LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJT
dWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQzLDEwICs0NSwx
MiBAQAogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50
ZXIsIHN1YnJlc291cmNlTG9hZGVyQ291bnRlciwgKCJTdWJyZXNvdXJjZUxvYWRlciIpKTsKIAot
U3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQorU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFt
ZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgb3B0aW9ucykKLSAgICAsIG1f
Y2xpZW50KGNsaWVudCkKKyAgICAsIG1fcmVzb3VyY2UocmVzb3VyY2UpCisgICAgLCBtX2RvY3Vt
ZW50KGZyYW1lLT5kb2N1bWVudCgpKQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChm
YWxzZSkKKyAgICAsIG1fc3RhdGUoVW5pbml0aWFsaXplZCkKIHsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgc3VicmVzb3VyY2VMb2FkZXJDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNjAsNyArNjQsNyBA
QAogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNl
TG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xp
ZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucykKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291
cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
OTMsNTggKzk3LDg5IEBACiAKICAgICBmcmFtZUxvYWRlci0+YWRkRXh0cmFGaWVsZHNUb1N1YnJl
c291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KTsKIAotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgY2xpZW50
LCBvcHRpb25zKSkpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFk
b3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7
CiAgICAgaWYgKCFzdWJsb2FkZXItPmluaXQobmV3UmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAw
OwotICAgIHN1YmxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRkU3VicmVzb3VyY2VMb2FkZXIo
c3VibG9hZGVyLmdldCgpKTsKLQogICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOwogfQog
Citib29sIFN1YnJlc291cmNlTG9hZGVyOjppbml0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyAgICBpZiAoIVJlc291cmNlTG9hZGVyOjppbml0KHJlcXVlc3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3N0YXRlID0gSW5pdGlhbGl6ZWQ7CisgICAgbV9kb2N1
bWVudExvYWRlci0+YWRkU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCiB7CiAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIFVSTCBiZWNhdXNlIHRoZSBjYWxsIHRv
IFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qgd2lsbCBtb2RpZnkgaXQuCiAgICAgS1VS
TCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIGlm
ICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlv
dXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PndpbGxTZW5kUmVxdWVzdCh0aGlzLCBuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAg
ICBpZiAoIXByZXZpb3VzVVJMLmlzTnVsbCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHBy
ZXZpb3VzVVJMICE9IG5ld1JlcXVlc3QudXJsKCkpIHsKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwg
bmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIGNhbmNlbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChu
ZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB9CiB9CiAKIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7CiAgICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+ZGlkU2VuZERhdGEodGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OworICAgIG1fcmVzb3VyY2UtPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50KTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNT
RVJUKCFyLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIXJlc3BvbnNlLmlzTnVsbCgpKTsKIAotICAg
IGlmIChyLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQg
PSB0cnVlOwotCiAgICAgLy8gUmVmZXJlbmNlIHRoZSBvYmplY3QgaW4gdGhpcyBtZXRob2Qgc2lu
Y2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNs
dWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBw
cm90ZWN0KHRoaXMpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHIpOwotICAgIAotICAgIC8vIFRoZSBsb2FkZXIgY2FuIGNh
bmNlbCBhIGxvYWQgaWYgaXQgcmVjZWl2ZXMgYSBtdWx0aXBhcnQgcmVzcG9uc2UgZm9yIGEgbm9u
LWltYWdlCisgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpIHsKKyAg
ICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSB7CisgICAgICAgICAg
ICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkKKyAgICAgICAgICAgIC8vIEV4
aXN0aW5nIHJlc291cmNlIGlzIG9rLCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlv
biB0aW1lLgorICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVk
KG1fcmVzb3VyY2UsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICAgICAgY2FuY2VsKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0gCisgICAgICAgIC8vIERpZCBub3QgZ2V0IDMwNCByZXNw
b25zZSwgY29udGludWUgYXMgYSByZWd1bGFyIHJlc291cmNlIGxvYWQuCisgICAgICAgIG1lbW9y
eUNhY2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKKyAgICB9CisKKyAgICBt
X3Jlc291cmNlLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CiAgICAgaWYgKHJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHIpOwotICAgIAorICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UocmVzcG9uc2UpOworCisgICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSk7CisgICAgICAgIHN0YXRpY19jYXN0
PENhY2hlZEltYWdlKj4obV9yZXNvdXJjZSktPmNsZWFyKCk7CisgICAgfSBlbHNlIGlmIChyZXNw
b25zZS5pc011bHRpcGFydCgpKSB7CisgICAgICAgIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQg
PSB0cnVlOworCisgICAgICAgIC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBDYWNo
ZWRSZXNvdXJjZUxvYWRlcidzIHJlcXVlc3QgY291bnQKKyAgICAgICAgbV9kb2N1bWVudC0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOwor
ICAgICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkgeworICAgICAgICAgICAgY2FuY2Vs
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSByZXNvdXJjZURhdGEoKTsKICAgICBpZiAobV9sb2FkaW5n
TXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAg
Ly8gU2luY2UgYSBzdWJyZXNvdXJjZSBsb2FkZXIgZG9lcyBub3QgbG9hZCBtdWx0aXBhcnQgc2Vj
dGlvbnMgcHJvZ3Jlc3NpdmVseSwKICAgICAgICAgLy8gZGVsaXZlciB0aGUgcHJldmlvdXNseSBy
ZWNlaXZlZCBkYXRhIHRvIHRoZSBsb2FkZXIgYWxsIGF0IG9uY2Ugbm93LgogICAgICAgICAvLyBU
aGVuIGNsZWFyIHRoZSBkYXRhIHRvIG1ha2Ugd2F5IGZvciB0aGUgbmV4dCBtdWx0aXBhcnQgc2Vj
dGlvbi4KLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKHRoaXMsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgLTEsIHRydWUp
OwogICAgICAgICBjbGVhclJlc291cmNlRGF0YSgpOwogICAgICAgICAKICAgICAgICAgLy8gQWZ0
ZXIgdGhlIGZpcnN0IG11bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVs
ZWdhdGVzIHRoYXQgdGhpcyBsb2FkIGlzICJmaW5pc2hlZCIgCkBAIC0xNTUsNzcgKzE5MCwxMDEg
QEAKIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0
T25jZSkKIHsKKyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkp
OworICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKTsKICAgICAvLyBSZWZl
cmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9j
ZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFz
dCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIx
Ni4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0gICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgsIGFsbEF0T25jZSk7CiAKLSAgICAvLyBBIHN1YnJlc291cmNlIGxvYWRlciBkb2Vz
IG5vdCBsb2FkIG11bHRpcGFydCBzZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LgotICAgIC8vIFNvIGRv
bid0IGRlbGl2ZXIgYW55IGRhdGEgdG8gdGhlIGxvYWRlciB5ZXQuCi0gICAgaWYgKCFtX2xvYWRp
bmdNdWx0aXBhcnRDb250ZW50ICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9u
c2UoKS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3Jl
SFRUUFN0YXR1c0NvZGVFcnJvcnMoKSkgeworICAgICAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNo
ZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKKyAgICAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKKyAg
ICAgICAgY2FuY2VsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBh
cmUgdHdvIGNhc2VzIHdoZXJlIHdlIG1pZ2h0IG5lZWQgdG8gY3JlYXRlIG91ciBvd24gU2hhcmVk
QnVmZmVyIGluc3RlYWQgb2YgY29weWluZyB0aGUgb25lIGluIFJlc291cmNlTG9hZGVyLgorICAg
IC8vICgxKSBNdWx0aXBhcnQgY29udGVudDogVGhlIGxvYWRlciBkZWxpdmVycyB0aGUgZGF0YSBp
biBhIG11bHRpcGFydCBzZWN0aW9uIGFsbCBhdCBvbmNlLCB0aGVuIHNlbmRzIGVvZi4KKyAgICAv
LyAgICAgVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBpcyBs
b2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCisgICAgLy8gKDIpIE91ciBjbGllbnQg
cmVxdWVzdGVkIHRoYXQgdGhlIGRhdGEgbm90IGJlIGJ1ZmZlcmVkIGF0IHRoZSBSZXNvdXJjZUxv
YWRlciBsZXZlbCB2aWEgUmVzb3VyY2VMb2FkZXJPcHRpb25zLiBJbiB0aGlzIGNhc2UsCisgICAg
Ly8gICAgIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSB3aWxsIGJlIG51bGwuIEhvd2V2
ZXIsIHVubGlrZSB0aGUgbXVsdGlwYXJ0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUg
Q2FjaGVkUmVzb3VyY2UKKyAgICAvLyAgICAgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiByZWNlaXZl
ZCB5ZXQuCisgICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQgfHwgIXJlc291cmNlRGF0
YSgpKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcGllZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291cmNlLT5kYXRhKGNv
cGllZERhdGEucmVsZWFzZSgpLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9yZXNvdXJjZS0+ZGF0YShyZXNvdXJjZURhdGEoKSwgZmFsc2UpOwogfQog
CiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBp
biB0aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAg
IC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhp
cyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0gICAgCi0gICAgaWYgKG1fY2xpZW50KQot
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKHRoaXMsIGRhdGEsIGxl
bmd0aCk7CisgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsK
KyAgICBtX3Jlc291cmNlLT5zZXRTZXJpYWxpemVkQ2FjaGVkTWV0YWRhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUg
ZmluaXNoVGltZSkKIHsKLSAgICBpZiAoY2FuY2VsbGVkKCkpCisgICAgaWYgKG1fc3RhdGUgIT0g
SW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpOworICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUo
KSk7CisgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpOworICAgIExPRyhS
ZXNvdXJjZUxvYWRpbmcsICJSZWNlaXZlZCAnJXMnLiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAKLSAgICAvLyBDYWxsaW5nIHJlbW92ZVN1YnJlc291cmNl
TG9hZGVyIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwgdG8gZGVyZWYsIHNvIHdlIG11c3Qg
cHJvdGVjdCBvdXJzZWx2ZXMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNo
TG9hZGluZyh0aGlzLCBmaW5pc2hUaW1lKTsKLSAgICAKLSAgICBtX2hhbmRsZSA9IDA7Ci0KLSAg
ICBpZiAoY2FuY2VsbGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50TG9hZGVy
LT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKKyAgICBtX3N0YXRlID0gRmluaXNoaW5n
OworICAgIG1fcmVzb3VyY2UtPnNldExvYWRGaW5pc2hUaW1lKGZpbmlzaFRpbWUpOworICAgIG1f
cmVzb3VyY2UtPmRhdGEocmVzb3VyY2VEYXRhKCksIHRydWUpOworICAgIG1fcmVzb3VyY2UtPmZp
bmlzaCgpOwogICAgIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGZpbmlzaFRpbWUp
OwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIGlmIChjYW5jZWxsZWQoKSkKKyAgICBpZiAobV9zdGF0ZSAhPSBJ
bml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFs
U3RhdGUoKSk7CisgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgp
KTsKKyAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiRmFpbGVkIHRvIGxvYWQgJyVzJy5cbiIsIG1f
cmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAKLSAgICAvLyBDYWxs
aW5nIHJlbW92ZVN1YnJlc291cmNlTG9hZGVyIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwg
dG8gZGVyZWYsIHNvIHdlIG11c3QgcHJvdGVjdCBvdXJzZWx2ZXMuCiAgICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCBlcnJvcik7Ci0gICAgCi0gICAgbV9oYW5kbGUgPSAw
OwotICAgIAotICAgIGlmIChjYW5jZWxsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9j
dW1lbnRMb2FkZXItPnJlbW92ZVN1YnJlc291cmNlTG9hZGVyKHRoaXMpOworICAgIG1fc3RhdGUg
PSBGaW5pc2hpbmc7CisgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OkxvYWRF
cnJvcik7CisgICAgaWYgKCFtX3Jlc291cmNlLT5pc1ByZWxvYWRlZCgpKQorICAgICAgICBtZW1v
cnlDYWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZSk7CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZEZh
aWwoZXJyb3IpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT5kaWRGYWlsKHRoaXMsIGVycm9yKTsKKyAgICBpZiAobV9zdGF0ZSAhPSBJbml0aWFs
aXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSk7CisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbmNlbGxlZCBsb2FkIG9mICclcycuXG4i
LCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworCisgICAgUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOworICAgIG1fc3RhdGUgPSBGaW5p
c2hpbmc7CisgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpCisgICAg
ICAgIG1lbW9yeUNhY2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKKyAgICBt
ZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogewotICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlbW92
ZVN1YnJlc291cmNlTG9hZGVyKHRoaXMpOworICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSk7CisgICAgaWYgKG1fc3RhdGUgIT0gVW5pbml0aWFsaXplZCkgeworICAgICAgICBpZiAo
IW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQgJiYgbV9zdGF0ZSAhPSBSZWxlYXNpbmcpCisgICAg
ICAgICAgICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQobV9yZXNvdXJjZSk7CisgICAgICAgIG1fc3RhdGUgPSBSZWxlYXNpbmc7CisgICAg
ICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmxvYWREb25lKCk7CisgICAg
ICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3Jlc291cmNlLT5zdG9wTG9hZGluZygpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVy
LT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKKyAgICB9CisgICAgbV9kb2N1bWVudCA9
IDA7CisgICAgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKTsKIH0KIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDk4
ODY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDQxICszNiw1MSBAQAogIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyQ2xp
ZW50OwotICAgIAotICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIDogcHVibGljIFJlc291cmNl
TG9hZGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsK
IAotICAgICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KK2NsYXNzIFN1
YnJlc291cmNlTG9hZGVyIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFN1YnJlc291cmNlTG9hZGVyKEZyYW1l
KiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
KTsKLSAgICAgICAgdmlydHVhbCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKLSAgICAgICAgCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50LCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7Citwcml2YXRlOgorICAgIFN1YnJlc291cmNlTG9h
ZGVyKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
KTsKKyAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOworICAgIHZpcnR1YWwgYm9vbCBp
bml0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciosIGludCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdmlydHVhbCB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CisKICNpZiBIQVZFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQotICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXko
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFy
cmF5KENGQXJyYXlSZWYpOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFy
cmF5UmVmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRG93bmxvYWREYXRhKGludCk7CisgICAgdmlydHVhbCB2b2lkIGRpZERvd25sb2Fk
RGF0YShpbnQpOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsK
IAotICAgICAgICBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogbV9jbGllbnQ7Ci0gICAgICAgIGJv
b2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKKyAgICBlbnVtIFN1YnJlc291cmNlTG9hZGVy
U3RhdGUgeworICAgICAgICBVbmluaXRpYWxpemVkLAorICAgICAgICBJbml0aWFsaXplZCwKKyAg
ICAgICAgRmluaXNoaW5nLAorICAgICAgICBSZWxlYXNpbmcKICAgICB9OwogCisgICAgQ2FjaGVk
UmVzb3VyY2UqIG1fcmVzb3VyY2U7CisgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50Owor
ICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKKyAgICBTdWJyZXNvdXJjZUxvYWRl
clN0YXRlIG1fc3RhdGU7Cit9OworCiB9CiAKICNlbmRpZiAvLyBTdWJyZXNvdXJjZUxvYWRlcl9o
Cg==
</data>
<flag name="commit-queue"
          id="111333"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114360</attachid>
            <date>2011-11-09 13:58:23 -0800</date>
            <delta_ts>2011-11-15 10:35:41 -0800</delta_ts>
            <desc>Fix chromium test failure + merge to trunk</desc>
            <filename>crr_sl_3.txt</filename>
            <type>text/plain</type>
            <size>79874</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3dlYmFyY2hpdmUvbG9hZGluZy90ZXN0LWxvYWRpbmctYXJjaGl2
ZS1zdWJyZXNvdXJjZS1udWxsLW1pbWV0eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy93ZWJhcmNoaXZlL2xvYWRpbmcvdGVzdC1sb2FkaW5nLWFyY2hpdmUtc3VicmVz
b3VyY2UtbnVsbC1taW1ldHlwZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5NzQ5KQorKysgTGF5
b3V0VGVzdHMvd2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3QtbG9hZGluZy1hcmNoaXZlLXN1YnJlc291
cmNlLW51bGwtbWltZXR5cGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsx
MCw3IEBACiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIHJlc291cmNlcy9zdWJyZXNvdXJjZS1udWxsLW1pbWV0
eXBlLndlYmFyY2hpdmUgLSBkaWRGaW5pc2hMb2FkaW5nCiBmaWxlOi8vL3Rlc3QucG5nIC0gZGlk
UmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGZpbGU6Ly8vVXNlcnMvcGVjb3Jhcm8vRGVz
a3RvcC90ZXN0LnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgorZmlsZTovLy90ZXN0LnBuZyAtIGRp
ZEZpbmlzaExvYWRpbmcKIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIg
LSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvd2ViYXJjaGl2ZS9sb2FkaW5nL2NhY2hlLWV4cGlyZWQtc3VicmVzb3VyY2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJhcmNoaXZlL2xv
YWRpbmcvY2FjaGUtZXhwaXJlZC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5
NzQ5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNo
ZS1leHBpcmVkLXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAs
NiArMTAsNyBAQAogZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiByZXNvdXJjZXMvY2FjaGUtZXhwaXJlZC1zdWJy
ZXNvdXJjZS53ZWJhcmNoaXZlIC0gZGlkRmluaXNoTG9hZGluZwogaHR0cDovL2xvY2FsaG9zdC9w
aW5rLWJ1bGxldC5wbmcgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDov
L2xvY2FsaG9zdC90ZXN0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CitodHRwOi8vbG9jYWxo
b3N0L3BpbmstYnVsbGV0LnBuZyAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICI8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQog
bWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1h
Z2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDk5NzQ5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
aW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKIDx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKIHJl
c291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSBkaWRSZWNlaXZl
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFs
aWQtZm9ybWF0LnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgogcmVzb3VyY2VzL2Jyb2tlbi1pbWFn
ZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2U6IE5PCity
ZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0gZGlkRmluaXNo
TG9hZGluZwogUmFkYXIgODYxMDkwOCAtIEFkZCBhIHJlc291cmNlIGRlbGVnYXRlIG1ldGhvZCB0
byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgYnJva2VuIGltYWdlLgogCiBQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3NlY3VyaXR5
L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTc0OSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw3ICsxLDcgQEAKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAt
IHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjEvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogPHVua25vd24+IC0gZGlkRmluaXNoTG9h
ZGluZworaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdX
aXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZh
aWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGciPgogaHR0cDovLzI1
NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3Qg
VVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwg
YmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
Ci1odHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGlu
ZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1
NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3Ig
ZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8y
NTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVz
dC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUu
MjU1LjI1NTo5L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8yNTUuMjU1LjI1
NS4yNTU6OS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21h
aW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4y
NTUuMjU1LjI1NTo5L3Rlc3QuanBnIj4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLW1hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDk5NzQ5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0
LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCito
dHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJv
cjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBV
UkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4y
NTUuMjU1OjcvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0
cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10
ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWh0dHA6
Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8
TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAi
aHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4y
NTU6Ny90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4g
V2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUu
MjU1LjI1NTo3L3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAt
IHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjkvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5
L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJL
aXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUu
MjU1OjkvdGVzdC5qcGciPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tY2ct
bWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWNnLW1hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gOTk3NDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1jZy1tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMSw3IEBACiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSB3aWxs
U2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rl
c3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdF
VD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIDx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcK
K2h0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVy
cm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5n
IFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIj4KIGh0dHA6Ly8yNTUuMjU1
LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2Nr
LXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotaHR0
cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6
IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJM
ICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1
LjI1NTo3L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFp
biBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1
NS4yNTUuMjU1OjcvdGVzdC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBn
IC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4y
NTU6OS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1l
dGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjkvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdl
YktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1
NS4yNTU6OS90ZXN0LmpwZyI+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5OTc0OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdp
bi9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcs
IG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRp
cmVjdFJlc3BvbnNlIChudWxsKQogPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZworaHR0cDov
LzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxO
U0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJo
dHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1
NTo3L3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8y
NTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5o
dG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1odHRwOi8vMjU1
LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJy
b3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6
Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1Ojcv
dGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktp
dEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4y
NTU6Ny90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSB3aWxs
U2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rl
c3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdF
VD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0
LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJy
b3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5
L3Rlc3QuanBnIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtcHJvdG9jb2wt
ZnJhZ21lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2ZpbGUtcHJvdG9jb2wtZnJhZ21lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTc0OSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtcHJvdG9jb2wtZnJhZ21lbnQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDQgKzQsNSBAQAogcmVzb3VyY2VzL3N0eWxlc2hl
ZXQuY3NzIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIHJlc291cmNlcy9zdHls
ZXNoZWV0LmNzcywgaHR0cCBzdGF0dXMgY29kZSAwPgogcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3Nz
IC0gZGlkRmluaXNoTG9hZGluZwogcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIC0gZGlkUmVjZWl2
ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIHJlc291cmNlcy9zdHlsZXNoZWV0LmNzcywgaHR0cCBz
dGF0dXMgY29kZSAwPgorcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIC0gZGlkRmluaXNoTG9hZGlu
ZwogVGhpcyB0ZXN0cyB0aGF0IGZpbGU6IFVSTCBhcmUgbG9hZGVkIHNlcGFyYXRlbHkgZXZlbiBp
ZiB0aGV5IGRpZmZlciBieSB0aGUgZnJhZ21lbnQgb25seS4KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5
NzQ5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTEtMTAtMjggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBUZXN0IHVkcGF0ZXMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTE0OS4KKyAgICAgICAgVGhlIGNoYW5nZXMgdG8gU3VicmVzb3VyY2VMb2FkZXIg
c2xpZ2h0bHkgY2hhbmdlIHRoZSB0aW1pbmdzIG9mCisgICAgICAgIGNlcnRhaW4gcmVzb3VyY2Ug
bG9hZCBjYWxsYmFja3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tY2ctbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3Qt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9zZWN1cml0eS9i
bG9jay10ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4v
c2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVk
LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0xMS0wOSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRWxpbWluYXRlIENTU011dGFibGVWYWx1ZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiA5OTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw3ICs5MTgsNiBAQAogICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgXAotICAgIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBc
CiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIFwKQEAgLTE5NTksNyAr
MTk1OCw2IEBACiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgg
XAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIFwKICAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBcCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggXAogICAgIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggXAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTk3
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTU3LDggKzIxNTcsNiBAQAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBc
CiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBc
CkBAIC0yMjQ3LDcgKzIyNDUsNiBAQAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1l
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggXApJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTk3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAorMjAxMS0xMS0wOSAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVz
dCBpcyBub3cgdGhlIG9ubHkgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQKKyAgICAgICAgTWVyZ2Ug
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGludG8gU3VicmVzb3VyY2VMb2FkZXIgYW5kIGRlbGV0ZQor
ICAgICAgICB0aGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgaW50ZXJmYWNlLiBBIGZldyBpdGVt
cyB3ZXJlIG1vdmVkCisgICAgICAgIHRvIENhY2hlZFJlc291cmNlIGluc3RlYWQgb2YgU3VicmVz
b3VyY2VMb2FkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6U3Vi
cmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdCk6IERvIHdv
cmsgdGhhdCBoYWQgcHJldmlvdXNseSBiZWVuCisgICAgICAgICAgICBkb25lIGluIFN1YnJlc291
cmNlTG9hZGVyOjpjcmVhdGUoKSBhZnRlciB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291
cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKTogRG8gdGhlIGNsZWFudXAgd29yayB0aGF0IHdh
cworICAgICAgICAgICAgZHVwbGljYXRlZCB0aHJvdWdob3V0IHRoZSB2YXJpb3VzIHRlcm1pbmFs
IENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWxsYmFja3MuCisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmg6IEZpeCBpbmRlbnRhdGlvbiBzdHlsZSBpc3N1ZXMuCisgICAgICAgICog
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOiBEbyB0aGUgd29yayB0aGF0
IGhhZCBiZWVuIGRvbmUgaW4KKyAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9h
ZCgpLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpjYW5E
ZWxldGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oOiBSZW1v
dmVkLgorICAgICAgICAqIGxvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2hyb21pdW0vQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Q2hyb21pdW0uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9jaHJvbWl1bS9TdWJyZXNvdXJjZUxvYWRlckNocm9t
aXVtLmNwcDoKKwogMjAxMS0xMS0wOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgRWxpbWluYXRlIENTU011dGFibGVWYWx1ZQpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDk5NzQ5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI1ODk0LDEwICsyNTg5NCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJc
U3Vic3RpdHV0ZURhdGEuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0yNjE4OSwxNCArMjYxODUs
NiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0i
Li5cbG9hZGVyXGNhY2hlXENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAiCi0JCQkJCT4KLQkJCQk8
L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkU2NyaXB0LmNwcCIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk5NzQ5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsNyArNTc3
LDYgQEAKICAgICAgICAgICAgICdsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgnLAogICAg
ICAgICAgICAgJ2xvYWRlci9TdWJmcmFtZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgnLAogICAgICAgICAgICAgJ2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgnLApAQCAtNTk2LDcgKzU5NSw2IEBACiAgICAgICAg
ICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgnLAogICAgICAgICAgICAg
J2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUv
Q2FjaGVkU3R5bGVTaGVldENsaWVudC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaCcs
CkBAIC0yODU4LDcgKzI4NTYsNiBAQAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwJywKLSAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCcsCiAgICAgICAg
ICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAnLApAQCAtMjg2OCw3ICsyODY1
LDYgQEAKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwJywKICAgICAg
ICAgICAgICdsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAnLAogICAgICAgICAgICAg
J2xvYWRlci9jaHJvbWl1bS9DYWNoZWRSYXdSZXNvdXJjZUNocm9taXVtLmNwcCcsCi0gICAgICAg
ICAgICAnbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAnbG9hZGVyL2Nocm9taXVtL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2Nocm9taXVtL1Jlc291cmNlTG9hZGVy
Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2hyb21pdW0vU3VicmVzb3VyY2VM
b2FkZXJDaHJvbWl1bS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk5
NzQ5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk1Nyw3ICs5NTcsNiBAQAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKICAg
ICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCiAgICAgbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAotICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKICAgICBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICBsb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5OTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU1LDcgKzM1
NSw2IEBACiAJCTFBMkU2RTU5MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJFNkU1NzBDQzU1MjEz
MDA0QTIwNjIgLyogU1FMVmFsdWUuY3BwICovOyB9OwogCQkxQTJFNkU1QTBDQzU1MjEzMDA0QTIw
NjIgLyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMkU2RTU4MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBMkU2RTdBMENDNTU2RDUw
MDRBMjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVB
dXRob3JpemVyLmNwcCAqLzsgfTsKLQkJMUEzMTc4OTMwQjIwQTgxNjAwMzE2OTg3IC8qIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTMxNzg5MjBCMjBBODE2MDAzMTY5ODcgLyogU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQTM0MTdDOTBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzQxN0M3MENFQ0ZG
MjUwMDQ5Q0JERSAvKiBKU0N1c3RvbVZvaWRDYWxsYmFjay5oICovOyB9OwogCQkxQTM0MTdDQTBD
RUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNDE3QzgwQ0VDRkYyNTAwNDlDQkRF
IC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCAqLzsgfTsKIAkJMUE0OTRCRkEwQTEyMkY0NDAw
RkRBRkMxIC8qIEpTSFRNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE0OTRCRjgwQTEyMkY0NDAwRkRBRkMxIC8qIEpTSFRNTEVsZW1l
bnQuY3BwICovOyB9OwpAQCAtMTM1Nyw3ICsxMzU2LDYgQEAKIAkJNTAxQkFBQTkxMzk1MEUyQzAw
RjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MDFCQUFBODEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1bGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0Yx
MDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRl
ckZsb3dUaHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRl
ckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICov
OyB9OwotCQk1MEI0MjE1ODE0Njk3Njk2MDA4N0U2MDQgLyogV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwQjQyMTU3
MTQ2OTc2OTYwMDg3RTYwNCAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oICovOyB9OwogCQk1MEU1
NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIg
LyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAv
KiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNw
cCAqLzsgfTsKQEAgLTU3NTIsOCArNTc1MCw2IEBACiAJCUQwQkM1NDQ5MTQ0M0FDNEEwMEUxMDVE
QSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5
bGVTaGVldENsaWVudC5oICovOyB9OwogCQlEMENFNThGODEyNUU0Q0MyMDBGM0YxOTkgLyogUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQwQ0U1OEY2MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwICovOyB9OwogCQlEMENFNThGOTEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEMENFNThGNzEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRDBEMTQx
QjIxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEQxNDFCMDEyQjJCRjUyMDBF
Mzk2MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLzsgfTsKLQkJRDBEMTQxQjMxMkIy
QkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBEMTQxQjExMkIyQkY1MjAwRTM5NjIwIC8q
IENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUQwRURBNzc0MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovOyB9
OwogCQlEMEVEQTc3NTE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwRURBNzczMTQzRTMw
M0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICovOyB9OwogCQlEMEZGMkE1RDExRjhD
NDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRl
ci5jcHAgKi87IH07CkBAIC03NDA3LDcgKzc0MDMsNiBAQAogCQkxQTJFNkU1NzBDQzU1MjEzMDA0
QTIwNjIgLyogU1FMVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU1FMVmFsdWUuY3BwOyBwYXRoID0gc3FsL1NRTFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFZhbHVlLmg7IHBhdGggPSBzcWwvU1FM
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNzgwQ0M1NTZENTAw
NEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU1FMaXRlQXV0aG9yaXplci5jcHA7IHBhdGggPSBzcWwvU1FMaXRlQXV0aG9y
aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzE3ODkyMEIyMEE4MTYw
MDMxNjk4NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTM0MTdDNzBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzNDE3QzgwQ0VDRkYyNTAw
NDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUE0OTRCQkIwQTEyMkRDRDAwRkRBRkMxIC8qIEhUTUxFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzA2Nyw4ICsxMzA2Miw2IEBACiAJCUQwQkM1NDQ4MTQ0M0FDNEEw
MEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENFNThGNzEy
NUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMEQxNDFCMDEyQjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hl
ZFJlc291cmNlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRDE0
MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzcyMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRS
YXdSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNo
ZWRSYXdSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzcz
MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDYxLDggKzE4NDU0LDYgQEAKIAkJCQlFNDdCNEJF
NjBFNzEyNDE2MDAwMzg4NTQgLyogQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCAqLywKIAkJCQlCQ0Ix
NkMxMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJ
CUJDQjE2QzExMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oICovLAot
CQkJCUQwRDE0MUIwMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
ICovLAotCQkJCUQwRDE0MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCAqLywKIAkJCQlCQ0IxNkMwQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmNw
cCAqLywKIAkJCQlCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi8s
CiAJCQkJRDBCQzU0NDgxNDQzQUM0QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQu
aCAqLywKQEAgLTE5OTA4LDcgKzE5ODk5LDYgQEAKIAkJCQlEMDAwRUQyNjExQzFCOUNEMDBDNDc3
MjYgLyogU3ViZnJhbWVMb2FkZXIuaCAqLywKIAkJCQk5M0UyMjdERjBBRjU4OUFEMDBENDgzMjQg
LyogU3VicmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzMwMEFEQkE1REUwMEE0NTU0
RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oICovLAotCQkJCTFBMzE3ODkyMEIyMEE4MTYwMDMxNjk4
NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oICovLAogCQkJCTY1OUE3RDEyMEI2REI0RDkw
MDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovLAogCQkJCTFBOEY2QjAxMERCNTMwMDYwMDFE
Qjc5NCAvKiBTdWJzdGl0dXRlUmVzb3VyY2UuaCAqLywKIAkJCQlGNTIzRDI3ODAyREU0M0Q3MDE4
NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgKi8sCkBAIC0yMTc1OCw3ICsyMTc0OCw2
IEBACiAJCQkJQkNCMTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdCNEJFODBFNzEyNDE2MDAwMzg4NTQgLyog
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzJBMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RDBEMTQxQjMxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNCMTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTMzNjQwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEJDNTQ0OTE0NDNBQzRB
MDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NDA5OCw3ICsyNDA4Nyw2IEBACiAJCQkJRDAwMEVEMjgxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZy
YW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENDEyNTFGMTJEMDAzRUYyNjkg
LyogU3VibWl0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzc0ODBBREJBNURF
MDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBMzE3
ODkzMEIyMEE4MTYwMDMxNjk4NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkIwMjBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0
ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyRDgxNjBGOTkyMEQyMDA2QUU2QjIg
LyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjUxMDAsNyArMjUwODgs
NiBAQAogCQkJCUJDQjE2QzFGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDdCNEJFOTBFNzEyNDE2MDAwMzg4NTQgLyogQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMjkwOTc5QzNCRDAwNDY3
NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUQwRDE0
MUIyMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNCMTZDMjMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMyNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMTgyNzQ5MzEzNENBNEMxMDBCOThD
MkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jaHJvbWl1bS9TdWJyZXNvdXJjZUxvYWRlckNocm9taXVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2hyb21pdW0vU3VicmVzb3VyY2VMb2Fk
ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDk5NzQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2Nocm9taXVtL1N1YnJlc291cmNlTG9hZGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3VicmVzb3Vy
Y2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDkgKzQzLDcgQEAKICAgICBSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgCiAgICAgUmVzb3VyY2VM
b2FkZXI6OmRpZERvd25sb2FkRGF0YShsZW5ndGgpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+ZGlkRG93bmxvYWREYXRhKHRoaXMsIGxlbmd0aCk7CisgICAgbV9yZXNv
dXJjZS0+ZGlkRG93bmxvYWREYXRhKGxlbmd0aCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jaHJvbWl1bS9DYWNoZWRSZXNvdXJjZVJlcXVlc3RDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNl
UmVxdWVzdENocm9taXVtLmNwcAkocmV2aXNpb24gOTk3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2hyb21pdW0vQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Q2hyb21pdW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgotCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIK
LSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWREb3dubG9hZERhdGEoU3VicmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgaW50IGxlbmd0aCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwg
bG9hZGVyID09IG1fbG9hZGVyKTsKLSAgICBtX3Jlc291cmNlLT5kaWREb3dubG9hZERhdGEobGVu
Z3RoKTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTc0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgotI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9u
IDk5NzQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCkBAIC0zNyw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yODcsMTEgKzI4NywxMCBAQAogCiB2b2lkIENhY2hlZElt
YWdlOjpjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKQogewotICAgIEZyYW1lKiBmcmFtZSA9
IG1fcmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+ZnJhbWUoKSA6
IDA7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIW1fbG9hZGVyIHx8IG1fbG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Nob3VsZFBhaW50
QnJva2VuSW1hZ2UgPSBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRQYWludEJyb2tl
bkltYWdlKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKKyAgICBtX3Nob3VsZFBhaW50QnJva2Vu
SW1hZ2UgPSBtX2xvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnNob3VsZFBhaW50QnJv
a2VuSW1hZ2UobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpjbGVhcigpCkBAIC0zMjgsMTAgKzMyNyw5IEBACiAKIHNpemVfdCBDYWNoZWRJbWFnZTo6bWF4
aW11bURlY29kZWRJbWFnZVNpemUoKQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcmVxdWVzdCA/
IG1fcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+ZnJhbWUoKSA6IDA7Ci0gICAgaWYg
KCFmcmFtZSkKKyAgICBpZiAoIW1fbG9hZGVyIHx8IG1fbG9hZGVyLT5yZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFt
ZS0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2xvYWRlci0+ZnJhbWVM
b2FkZXIoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKTsKICAgICByZXR1cm4gc2V0dGluZ3MgPyBzZXR0
aW5ncy0+bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSA6IDA7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gOTk3
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlB1cmdlYWJsZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KQEAgLTgwLDYgKzgyLDQxIEBACiAgICAgcmV0dXJuIFJlc291cmNl
TG9hZFByaW9yaXR5TG93OwogfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCitzdGF0aWMgUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYgRU5BQkxFKFhTTFQpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKKyNlbmRpZgorICAgICAgICByZXR1
cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N0eWxlU2hlZXQ7CisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6U2NyaXB0OiAKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
SXNTY3JpcHQ7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorICAgICAg
ICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRSZXNvdXJjZTsKKyAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291
cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNl
OyAgICAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElz
UHJlZmV0Y2g7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZXJlbmRlcjoKKyAgICAg
ICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVyZW5kZXI7CisgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOworI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlRleHRUcmFja1Jlc291cmNlOgorICAgICAg
ICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1RleHRUcmFjazsKKyNlbmRpZgorICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc1N1YnJlc291cmNlOworfQorI2VuZGlmCisKIERFRklORV9ERUJVR19PTkxZX0dM
T0JBTChSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFJlc291cmNlTGVha0NvdW50ZXIsICgi
Q2FjaGVkUmVzb3VyY2UiKSk7CiAKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFR5cGUgdHlwZSkKQEAgLTEzOSwxMSArMTc2LDUw
IEBACiB7CiAgICAgbV9vcHRpb25zID0gb3B0aW9uczsKICAgICBtX2xvYWRpbmcgPSB0cnVlOwot
ICAgIG1fcmVxdWVzdCA9IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9hZChjYWNoZWRSZXNvdXJj
ZUxvYWRlciwgdGhpcywgb3B0aW9ucyk7Ci0gICAgaWYgKG1fcmVxdWVzdCkgewotICAgICAgICBt
X3N0YXR1cyA9IFBlbmRpbmc7Ci0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1l
bnRSZXF1ZXN0Q291bnQodGhpcyk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBpZiAo
bV9yZXNvdXJjZVJlcXVlc3QudGFyZ2V0VHlwZSgpID09IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
SXNVbnNwZWNpZmllZCkKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0VGFyZ2V0VHlwZShj
YWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUodHlwZSgpKSk7CisjZW5kaWYKKworICAgIGlm
ICghYWNjZXB0KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQ
QWNjZXB0KGFjY2VwdCgpKTsKKworICAgIGlmIChpc0NhY2hlVmFsaWRhdG9yKCkpIHsKKyAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlVG9SZXZhbGlkYXRlID0gbV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZTsKKyAgICAgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlkYXRlLT5jYW5Vc2VDYWNo
ZVZhbGlkYXRvcigpKTsKKyAgICAgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlkYXRlLT5pc0xv
YWRlZCgpKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBsYXN0TW9kaWZpZWQgPSByZXNvdXJjZVRv
UmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkxhc3QtTW9kaWZpZWQiKTsK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBlVGFnID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKCJFVGFnIik7CisgICAgICAgIGlmICghbGFzdE1vZGlmaWVk
LmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQb2xpY3koKSAhPSBDYWNoZVBvbGljeVJlbG9hZCk7Cisg
ICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5KCkgPT0gQ2Fj
aGVQb2xpY3lSZXZhbGlkYXRlKQorICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPTAiKTsKKyAgICAgICAg
ICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc291
cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIklmLU1vZGlmaWVkLVNpbmNlIiwgbGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Ob25lLU1hdGNoIiwg
ZVRhZyk7CisgICAgICAgIH0KICAgICB9CisKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAg
ICBpZiAodHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2ggfHwgdHlwZSgpID09
IENhY2hlZFJlc291cmNlOjpMaW5rUHJlcmVuZGVyIHx8IHR5cGUoKSA9PSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1N1YnJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoIlB1cnBvc2UiLCAicHJlZmV0Y2giKTsKKyNlbmRpZgorICAgIG1fcmVzb3VyY2VS
ZXF1ZXN0LnNldFByaW9yaXR5KGxvYWRQcmlvcml0eSgpKTsKKyAgICAKKyAgICBtX2xvYWRlciA9
IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNoZWRS
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgdGhpcywgbV9yZXNvdXJjZVJlcXVl
c3QsIG1fcmVzb3VyY2VSZXF1ZXN0LnByaW9yaXR5KCksIG9wdGlvbnMpOworICAgIGlmICghbV9s
b2FkZXIgfHwgbV9sb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcgZm9y
IHRoaXMgcmV2YWxpZGF0aW9uPworICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90
IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Cisg
ICAgICAgIGlmIChtX3Jlc291cmNlVG9SZXZhbGlkYXRlKSAKKyAgICAgICAgICAgIG1lbW9yeUNh
Y2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZCh0aGlzKTsgCisgICAgICAgIGVycm9yKENhY2hlZFJl
c291cmNlOjpMb2FkRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zdGF0
dXMgPSBQZW5kaW5nOworICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0
Q291bnQodGhpcyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KCkKQEAg
LTE3Nyw3ICsyNTMsOCBAQAogCiB2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2goKQogewotICAg
IG1fc3RhdHVzID0gQ2FjaGVkOworICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICBt
X3N0YXR1cyA9IENhY2hlZDsKIH0KIAogYm9vbCBDYWNoZWRSZXNvdXJjZTo6cGFzc2VzQWNjZXNz
Q29udHJvbENoZWNrKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKQEAgLTIzMiw2ICsz
MDksOSBAQAogewogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKICAgICBtX3Jlc3BvbnNlVGlt
ZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBTdHJpbmcgZW5jb2RpbmcgPSByZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCk7CisgICAgaWYgKCFlbmNvZGluZy5pc051bGwoKSkKKyAgICAgICAg
c2V0RW5jb2RpbmcoZW5jb2RpbmcpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRTZXJp
YWxpemVkQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCkBAIC0y
NjQsOCArMzQ0LDggQEAKIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c3RvcExvYWRpbmcoKQogewot
ICAgIEFTU0VSVChtX3JlcXVlc3QpOyAgICAgICAgICAgIAotICAgIG1fcmVxdWVzdC5jbGVhcigp
OworICAgIEFTU0VSVChtX2xvYWRlcik7ICAgICAgICAgICAgCisgICAgbV9sb2FkZXIgPSAwOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CShyZXZpc2lvbiA5OTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTEgQEAKIGNsYXNzIENhY2hl
ZFJlc291cmNlQ2xpZW50OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOwogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOwogY2xhc3MgUHVyZ2VhYmxlQnVmZmVy
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogLy8g
QSByZXNvdXJjZSB0aGF0IGlzIGhlbGQgaW4gdGhlIGNhY2hlLiBDbGFzc2VzIHdobyB3YW50IHRv
IHVzZSB0aGlzIG9iamVjdCBzaG91bGQgZGVyaXZlCiAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xp
ZW50LCB0byBnZXQgdGhlIGZ1bmN0aW9uIGNhbGxzIGluIGNhc2UgdGhlIHJlcXVlc3RlZCBkYXRh
IGhhcyBhcnJpdmVkLgpAQCAtMTg3LDcgKzE4Nyw3IEBACiAgICAgLy8gUmV0dXJucyBjYWNoZWQg
bWV0YWRhdGEgb2YgdGhlIGdpdmVuIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVzb3VyY2Uu
CiAgICAgQ2FjaGVkTWV0YWRhdGEqIGNhY2hlZE1ldGFkYXRhKHVuc2lnbmVkIGRhdGFUeXBlSUQp
IGNvbnN0OwogCi0gICAgYm9vbCBjYW5EZWxldGUoKSBjb25zdCB7IHJldHVybiAhaGFzQ2xpZW50
cygpICYmICFtX3JlcXVlc3QgJiYgIW1fcHJlbG9hZENvdW50ICYmICFtX2hhbmRsZUNvdW50ICYm
ICFtX3Jlc291cmNlVG9SZXZhbGlkYXRlICYmICFtX3Byb3h5UmVzb3VyY2U7IH0KKyAgICBib29s
IGNhbkRlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNDbGllbnRzKCkgJiYgIW1fbG9hZGVyICYm
ICFtX3ByZWxvYWRDb3VudCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNvdXJjZVRvUmV2YWxp
ZGF0ZSAmJiAhbV9wcm94eVJlc291cmNlOyB9CiAgICAgYm9vbCBoYXNPbmVIYW5kbGUoKSBjb25z
dCB7IHJldHVybiBtX2hhbmRsZUNvdW50ID09IDE7IH0KIAogICAgIGJvb2wgaXNFeHBpcmVkKCkg
Y29uc3Q7CkBAIC0yNTMsNyArMjUzLDcgQEAKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291
cmNlUmVxdWVzdDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7Ci0gICAgT3duUHRyPENhY2hlZFJlc291
cmNlUmVxdWVzdD4gbV9yZXF1ZXN0OworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsKICAgICBSZXNvdXJj
ZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0eTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9u
IDk5NzQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzM1ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCi0gICAgQ29weXJp
Z2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICAgIENvcHlyaWdo
dCAoQykgMjAwMiBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgotCi0jaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgot
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0j
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQotc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlw
ZSBjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NT
dHlsZVNoZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhT
TFN0eWxlU2hlZXQ6Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFy
Z2V0SXNTdHlsZVNoZWV0OwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDogCi0gICAg
ICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU2NyaXB0OwotICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVz
dDo6VGFyZ2V0SXNGb250UmVzb3VyY2U7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJbWFnZTsK
LSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFJl
c291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsgICAgCi0jaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAg
ICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZldGNoOwotICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXI6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzUHJlcmVuZGVyOwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJy
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNv
dXJjZTsKLSNlbmRpZgotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVz
dDo6VGFyZ2V0SXNUZXh0VHJhY2s7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsK
LX0KLSNlbmRpZgotCi1DYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVz
dChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKLSAgICA6IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIoY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpCi0gICAgLCBtX3Jlc291cmNlKHJlc291cmNlKQotICAgICwgbV9tdWx0aXBhcnQo
ZmFsc2UpCi0gICAgLCBtX2ZpbmlzaGluZyhmYWxzZSkKLXsKLX0KLQotQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0Ojp+Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9sb2FkZXIpCi0g
ICAgICAgIG1fbG9hZGVyLT5jbGVhckNsaWVudCgpOwotfQotCi1QYXNzT3duUHRyPENhY2hlZFJl
c291cmNlUmVxdWVzdD4gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgT3duUHRyPENhY2hl
ZFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHJlc291cmNlKSk7Ci0KLSAgICBSZXNvdXJjZVJl
cXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0gcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpOwotI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQotICAgIGlmIChyZXNvdXJjZVJlcXVlc3QudGFyZ2V0VHlwZSgp
ID09IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNVbnNwZWNpZmllZCkKLSAgICAgICAgcmVzb3Vy
Y2VSZXF1ZXN0LnNldFRhcmdldFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKHJl
c291cmNlLT50eXBlKCkpKTsKLSNlbmRpZgotCi0gICAgaWYgKCFyZXNvdXJjZS0+YWNjZXB0KCku
aXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEFjY2VwdChyZXNvdXJj
ZS0+YWNjZXB0KCkpOwotCi0gICAgaWYgKHJlc291cmNlLT5pc0NhY2hlVmFsaWRhdG9yKCkpIHsK
LSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlVG9SZXZhbGlkYXRlID0gcmVzb3VyY2Ut
PnJlc291cmNlVG9SZXZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZVRvUmV2YWxp
ZGF0ZS0+Y2FuVXNlQ2FjaGVWYWxpZGF0b3IoKSk7Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZVRv
UmV2YWxpZGF0ZS0+aXNMb2FkZWQoKSk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdE1vZGlm
aWVkID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJM
YXN0LU1vZGlmaWVkIik7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZVRhZyA9IHJlc291cmNlVG9S
ZXZhbGlkYXRlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiRVRhZyIpOwotICAgICAgICBp
ZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkgfHwgIWVUYWcuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5KCkgIT0gQ2FjaGVQ
b2xpY3lSZWxvYWQpOwotICAgICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNo
ZVBvbGljeSgpID09IENhY2hlUG9saWN5UmV2YWxpZGF0ZSkKLSAgICAgICAgICAgICAgICByZXNv
dXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9
MCIpOwotICAgICAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIklmLU1vZGlmaWVkLVNp
bmNlIiwgbGFzdE1vZGlmaWVkKTsKLSAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiSWYtTm9u
ZS1NYXRjaCIsIGVUYWcpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQotICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpM
aW5rUHJlZmV0Y2ggfHwgcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1By
ZXJlbmRlciB8fCByZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVz
b3VyY2UpCi0gICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlB1cnBv
c2UiLCAicHJlZmV0Y2giKTsKLSNlbmRpZgotCi0gICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJp
b3JpdHkgPSByZXNvdXJjZS0+bG9hZFByaW9yaXR5KCk7Ci0gICAgcmVzb3VyY2VSZXF1ZXN0LnNl
dFByaW9yaXR5KHByaW9yaXR5KTsKLQotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9h
ZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNh
Y2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLCByZXF1ZXN0LmdldCgpLCBy
ZXNvdXJjZVJlcXVlc3QsIHByaW9yaXR5LCBvcHRpb25zKTsKLSAgICBpZiAoIWxvYWRlciB8fCBs
b2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQg
aWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcgZm9yIHRoaXMgcmV2YWxp
ZGF0aW9uPwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRp
bmcgJyVzJyIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAg
ICAgICBpZiAocmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpIAotICAgICAgICAgICAg
bWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKHJlc291cmNlKTsgCi0gICAgICAgIHJl
c291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKLSAgICAgICAgcmV0dXJu
IFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PihudWxscHRyKTsKLSAgICB9Ci0gICAg
cmVxdWVzdC0+bV9sb2FkZXIgPSBsb2FkZXI7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OwotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6d2lsbFNlbmRSZXF1ZXN0KFN1YnJl
c291cmNlTG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAoIW1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCByZXEudXJsKCkpKSB7Ci0gICAgICAgIGxv
YWRlci0+Y2FuY2VsKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9yZXNvdXJjZS0+
d2lsbFNlbmRSZXF1ZXN0KHJlcSwgcmVzcG9uc2UpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6Y2FuY2VsKCkKLXsKLSAgICBpZiAobV9maW5pc2hpbmcpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX2xvYWRlci0+Y2FuY2VsKCk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjppZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sb2FkZXIt
PmlkZW50aWZpZXIoKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERlZmVy
c0xvYWRpbmcoYm9vbCBkZWZlcnMpCi17Ci0gICAgaWYgKG1fbG9hZGVyKQotICAgICAgICBtX2xv
YWRlci0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3Vi
bGUgZmluaXNoVGltZSkKLXsKLSAgICBpZiAobV9maW5pc2hpbmcpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2FkZXIuZ2V0KCkpOwotICAgIEFTU0VSVCghbV9y
ZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7Ci0gICAgTE9HKFJlc291cmNlTG9hZGlu
ZywgIlJlY2VpdmVkICclcycuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLQotICAgIC8vIFByZXZlbnQgdGhlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJv
eWVkIGJlZm9yZSB3ZSBhcmUgZG9uZSB3aXRoCi0gICAgLy8gdGhlIGNhY2hlZFJlc291cmNlTG9h
ZGVyIHRoYXQgaXQgd2lsbCBkZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgot
ICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdG9yKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50KCkpOwotICAgIGlmICghbV9tdWx0aXBhcnQpCi0gICAgICAgIG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChtX3Jlc291cmNlKTsKLSAgICBtX2Zpbmlz
aGluZyA9IHRydWU7Ci0KLSAgICAvLyBJZiB3ZSBnb3QgYSA0eHggcmVzcG9uc2UsIHdlJ3JlIHBy
ZXRlbmRpbmcgdG8gaGF2ZSByZWNlaXZlZCBhIG5ldHdvcmsKLSAgICAvLyBlcnJvciwgc28gd2Ug
Y2FuJ3Qgc2VuZCB0aGUgc3VjY2Vzc2Z1bCBkYXRhKCkgYW5kIGZpbmlzaCgpIGNhbGxiYWNrcy4K
LSAgICBpZiAoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewotICAgICAgICBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5sb2FkRmluaXNoaW5nKCk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPnNl
dExvYWRGaW5pc2hUaW1lKGZpbmlzaFRpbWUpOwotICAgICAgICBtX3Jlc291cmNlLT5kYXRhKGxv
YWRlci0+cmVzb3VyY2VEYXRhKCksIHRydWUpOwotICAgICAgICBpZiAoIW1fcmVzb3VyY2UtPmVy
cm9yT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPmZpbmlzaCgpOwotICAgIH0K
LSAgICBlbmQoKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZEZhaWwoU3Vi
cmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBpZiAo
bV9maW5pc2hpbmcgfHwgIW1fbG9hZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNh
bmNlbGxlZCA9IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCk7Ci0gICAgTE9HKFJlc291cmNlTG9hZGlu
ZywgIkZhaWxlZCB0byBsb2FkICclcycgKGNhbmNlbGxlZD0lZCkuXG4iLCBtX3Jlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNhbmNlbGxlZCk7Ci0KLSAgICAvLyBQcmV2
ZW50IHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZCBiZWZvcmUgd2UgYXJlIGRvbmUg
d2l0aAotICAgIC8vIHRoZSBjYWNoZWRSZXNvdXJjZUxvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRl
IHdoZW4gdGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KLSAgICBSZWZQdHI8RG9jdW1lbnQ+IHBy
b3RlY3RvcihtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpKTsKLSAgICBpZiAoIW1f
bXVsdGlwYXJ0KQotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQobV9yZXNvdXJjZSk7Ci0gICAgbV9maW5pc2hpbmcgPSB0cnVlOwotICAgIG1fbG9h
ZGVyLT5jbGVhckNsaWVudCgpOwotCi0gICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZh
bGlkYXRlKCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZChtX3Jl
c291cmNlKTsKLQotICAgIGlmICghY2FuY2VsbGVkKSB7Ci0gICAgICAgIG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmxvYWRGaW5pc2hpbmcoKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2Fj
aGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7Ci0gICAgfQotCi0gICAgaWYgKGNhbmNlbGxlZCB8fCAh
bV9yZXNvdXJjZS0+aXNQcmVsb2FkZWQoKSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3Zl
KG1fcmVzb3VyY2UpOwotICAgIAotICAgIGVuZCgpOwotfQotCi12b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIEFTU0VSVChsb2FkZXIgPT0g
bV9sb2FkZXIuZ2V0KCkpOwotICAgIGlmIChtX3Jlc291cmNlLT5pc0NhY2hlVmFsaWRhdG9yKCkp
IHsKLSAgICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSB7Ci0gICAg
ICAgICAgICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkKLSAgICAgICAgICAg
IGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gcHJv
dGVjdG9yKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCkpOwotICAgICAgICAgICAg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2Up
OwotICAgICAgICAgICAgbV9maW5pc2hpbmcgPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBFeGlz
dGluZyByZXNvdXJjZSBpcyBvaywganVzdCB1c2UgaXQgdXBkYXRpbmcgdGhlIGV4cGlyYXRpb24g
dGltZS4KLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJldmFsaWRhdGlvblN1Y2NlZWRlZCht
X3Jlc291cmNlLCByZXNwb25zZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLT5jaGVja0NvbXBsZXRlZCgpOwotCi0gICAg
ICAgICAgICBlbmQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSAKLSAgICAgICAg
Ly8gRGlkIG5vdCBnZXQgMzA0IHJlc3BvbnNlLCBjb250aW51ZSBhcyBhIHJlZ3VsYXIgcmVzb3Vy
Y2UgbG9hZC4KLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVz
b3VyY2UpOwotICAgIH0KLQotICAgIC8vIHNldFJlc3BvbnNlKCkgbWlnaHQgY2FuY2VsIHRoZSBy
ZXF1ZXN0LCBzbyB3ZSBuZWVkIHRvIGtlZXAgb3Vyc2VsdmVzIGFsaXZlLiBVbmZvcnR1bmF0ZWx5
LAotICAgIC8vIHdlIGNhbid0IHByb3RlY3QgYSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QsIGJ1dCB3
ZSBjYW4gcHJvdGVjdCBtX3Jlc291cmNlLCB3aGljaCBoYXMgdGhlCi0gICAgLy8gcG93ZXIgdG8g
a2lsbCB0aGUgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IChhbmQgd2lsbCBzd2l0Y2ggaXNMb2FkaW5n
KCkgdG8gZmFsc2UgaWYgaXQgZG9lcyBzbykuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IHByb3RlY3QobV9yZXNvdXJjZSk7Ci0gICAgbV9yZXNvdXJjZS0+c2V0UmVz
cG9uc2UocmVzcG9uc2UpOwotICAgIGlmICghcHJvdGVjdC0+aXNMb2FkaW5nKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFN0cmluZyBlbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWUoKTsKLSAgICBpZiAoIWVuY29kaW5nLmlzTnVsbCgpKQotICAgICAgICBtX3Jlc291cmNlLT5z
ZXRFbmNvZGluZyhlbmNvZGluZyk7Ci0gICAgCi0gICAgaWYgKG1fbXVsdGlwYXJ0KSB7Ci0gICAg
ICAgIEFTU0VSVChtX3Jlc291cmNlLT5pc0ltYWdlKCkpOwotICAgICAgICBzdGF0aWNfY2FzdDxD
YWNoZWRJbWFnZSo+KG1fcmVzb3VyY2UpLT5jbGVhcigpOwotICAgICAgICBpZiAobV9jYWNoZWRS
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSkKLSAgICAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmZyYW1lKCktPmxvYWRlcigpLT5jaGVja0NvbXBsZXRlZCgpOwotICAgIH0gZWxzZSBpZiAo
cmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkgewotICAgICAgICBtX211bHRpcGFydCA9IHRydWU7Ci0g
ICAgICAgIAotICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChtX3Jlc291cmNlKTsKLQotICAgICAgICAvLyBJ
ZiB3ZSBnZXQgYSBtdWx0aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQotICAg
ICAgICBBU1NFUlQobG9hZGVyLT5oYW5kbGUoKSk7Ci0gICAgICAgIGlmICghbV9yZXNvdXJjZS0+
aXNJbWFnZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5oYW5kbGUoKS0+Y2FuY2VsKCk7Ci0gICAg
fQotfQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoU3VicmVz
b3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpCi17Ci0gICAg
QVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlci5nZXQoKSk7Ci0gICAgQVNTRVJUKCFtX3Jlc291cmNl
LT5pc0NhY2hlVmFsaWRhdG9yKCkpOwotICAgIAotICAgIGlmIChtX3Jlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25z
ZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVI
VFRQU3RhdHVzQ29kZUVycm9ycygpKSB7Ci0gICAgICAgIGlmICghbV9tdWx0aXBhcnQpCi0gICAg
ICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQobV9y
ZXNvdXJjZSk7Ci0gICAgICAgIG1fZmluaXNoaW5nID0gdHJ1ZTsKLSAgICAgICAgbV9sb2FkZXIt
PmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNl
OjpMb2FkRXJyb3IpOwotICAgICAgICBlbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIFRoZXJlIGFyZSB0d28gY2FzZXMgd2hlcmUgd2UgbWlnaHQgbmVlZCB0byBjcmVhdGUg
b3VyIG93biBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBvbmUgaW4gUmVzb3Vy
Y2VMb2FkZXIuCi0gICAgLy8gKDEpIE11bHRpcGFydCBjb250ZW50OiBUaGUgbG9hZGVyIGRlbGl2
ZXJzIHRoZSBkYXRhIGluIGEgbXVsdGlwYXJ0IHNlY3Rpb24gYWxsIGF0IG9uY2UsIHRoZW4gc2Vu
ZHMgZW9mLgotICAgIC8vICAgICBUaGUgcmVzb3VyY2UgZGF0YSB3aWxsIGNoYW5nZSBhcyB0aGUg
bmV4dCBwYXJ0IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBtYWtlIGEgY29weS4KLSAgICAvLyAo
MikgT3VyIGNsaWVudCByZXF1ZXN0ZWQgdGhhdCB0aGUgZGF0YSBub3QgYmUgYnVmZmVyZWQgYXQg
dGhlIFJlc291cmNlTG9hZGVyIGxldmVsIHZpYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuIEluIHRo
aXMgY2FzZSwKLSAgICAvLyAgICAgUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIHdpbGwg
YmUgbnVsbC4gSG93ZXZlciwgdW5saWtlIHRoZSBtdWx0aXBhcnQgY2FzZSwgd2UgZG9uJ3Qgd2Fu
dCB0byB0ZWxsIHRoZSBDYWNoZWRSZXNvdXJjZQotICAgIC8vICAgICB0aGF0IGFsbCBkYXRhIGhh
cyBiZWVuIHJlY2VpdmVkIHlldC4KLSAgICBpZiAobV9tdWx0aXBhcnQgfHwgIWxvYWRlci0+cmVz
b3VyY2VEYXRhKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29waWVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBtX3Jlc291cmNlLT5k
YXRhKGNvcGllZERhdGEucmVsZWFzZSgpLCBtX211bHRpcGFydCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIG1fcmVzb3VyY2UtPmRhdGEobG9hZGVyLT5yZXNvdXJjZURhdGEoKSwgZmFsc2UpOwotfQot
Ci12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1
YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpCi17Ci0gICAgQVNT
RVJUKCFtX3Jlc291cmNlLT5pc0NhY2hlVmFsaWRhdG9yKCkpOwotICAgIG1fcmVzb3VyY2UtPnNl
dFNlcmlhbGl6ZWRDYWNoZWRNZXRhZGF0YShkYXRhLCBzaXplKTsKLX0KLQotdm9pZCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3Q6OmRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkKLXsKLSAgICBtX3Jlc291cmNlLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNU
b0JlU2VudCk7Ci19Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjplbmQoKQotewotICAg
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmxvYWREb25lKCk7Ci0gICAgbV9yZXNvdXJjZS0+c3Rv
cExvYWRpbmcoKTsKLX0KLQotfSAvL25hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDk5NzQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzgsOCArNzgsOCBAQAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjph
bGxDbGllbnRzUmVtb3ZlZCgpCiB7Ci0gICAgaWYgKG1fcmVxdWVzdCkKLSAgICAgICAgbV9yZXF1
ZXN0LT5jYW5jZWwoKTsKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5jYW5j
ZWwoKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBA
IC0xMDksMTMgKzEwOSwxMyBAQAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpzZXREZWZlcnNM
b2FkaW5nKGJvb2wgZGVmZXJzKQogewotICAgIGlmIChtX3JlcXVlc3QpCi0gICAgICAgIG1fcmVx
dWVzdC0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOworICAgIGlmIChtX2xvYWRlcikKKyAgICAg
ICAgbV9sb2FkZXItPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKIH0KIAogdW5zaWduZWQgbG9u
ZyBDYWNoZWRSYXdSZXNvdXJjZTo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cmVxdWVzdCA/IG1fcmVxdWVzdC0+aWRlbnRpZmllcigpIDogMDsKKyAgICByZXR1cm4gbV9sb2Fk
ZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigpIDogMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gOTk3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODIg
KzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBp
LWhkLm1wZy5kZSkKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIDxtdWVsbGVy
QGtkZS5vcmc+Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIENhY2hlZFJlc291cmNlUmVx
dWVzdF9oCi0jZGVmaW5lIENhY2hlZFJlc291cmNlUmVxdWVzdF9oCi0KLSNpbmNsdWRlICJGcmFt
ZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0g
ICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
Ci0gICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKLSAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci0g
ICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLSAgICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsK
LQotICAgIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCA6IHByaXZhdGUgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0PiBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKLSAgICAgICAgfkNhY2hlZFJl
c291cmNlUmVxdWVzdCgpOwotCi0gICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7IH0K
LSAgICAgICAgdm9pZCBjYW5jZWwoKTsKLQotICAgICAgICAvLyBGSVhNRTogTGlrZSBDYWNoZWRS
ZXNvdXJjZTo6aWRlbnRpZmllcigpLCB0aGlzIGlzIGEgbGFtZSBoYWNrIGZvciBwcmVmbGlnaHQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGluIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci4KLSAg
ICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gRklY
TUU6IFNlZSBDYWNoZWRSYXdSZXNvdXJjZTo6c2V0RGVmZXJzTG9hZGluZygpIGZvciB0aGUgcmVs
ZXZhbnQgcmFudC4KLSAgICAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KENhY2hlZFJlc291cmNlTG9h
ZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChTdWJyZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqLCBkb3VibGUpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKLSAgICAgICAgdm9pZCBlbmQoKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywg
dW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pOwotI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFN1YnJlc291
cmNlTG9hZGVyKiwgaW50KTsKLSNlbmRpZgotCi0gICAgICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gbV9sb2FkZXI7Ci0gICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtX2NhY2hlZFJl
c291cmNlTG9hZGVyOwotICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNvdXJjZTsKLSAgICAg
ICAgYm9vbCBtX211bHRpcGFydDsKLSAgICAgICAgYm9vbCBtX2ZpbmlzaGluZzsKLSAgICB9Owot
Ci19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDk5NzQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1
LDkgQEAKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgU3Vi
cmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQorUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQogewotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0LCBvcHRpb25zKTsKKyAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpj
cmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVy
KQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCBwcmlvcml0eSk7CiAgICAgcmV0
dXJuIGxvYWRlci5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTk3NDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnRfaAotI2RlZmluZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudF9oCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci1jbGFzcyBSZXNvdXJjZUVy
cm9yOwotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFN1YnJlc291cmNlTG9hZGVyOwotICAgIAotY2xhc3MgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyQ2xpZW50KCkgeyB9
IAotCi0gICAgLy8gcmVxdWVzdCBtYXkgYmUgbW9kaWZpZWQKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFN1YnJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyAv
KmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykg
eyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVu
Z3RoKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3Vi
cmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJs
ZSAvKmZpbmlzaFRpbWUqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9Ci0KLSNpZiBQTEFURk9STShDSFJP
TUlVTSkKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFN1YnJlc291cmNlTG9hZGVy
KiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gU3VicmVzb3VyY2VMb2FkZXJDbGllbnRfaApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcAkocmV2
aXNpb24gOTk3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2Fk
ZXJDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgSEFWRShO
RVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKQEAgLTQ2LDcgKzQ0LDcgQEAKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBD
RkRhdGFSZWYgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGRhdGFBcnJheSwgaSkpOwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihDRkRhdGFHZXRCeXRl
UHRyKGRhdGEpKSwgc3RhdGljX2Nhc3Q8aW50PihDRkRhdGFHZXRMZW5ndGgoZGF0YSkpKTsKKyAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihD
RkRhdGFHZXRCeXRlUHRyKGRhdGEpKSwgc3RhdGljX2Nhc3Q8aW50PihDRkRhdGFHZXRMZW5ndGgo
ZGF0YSkpLCAtMSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTc0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw3ICsxMzEsNyBAQAogCiAgICAgd2lsbFNlbmRSZXF1ZXN0KGNsaWVudFJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UoKSk7CiAgICAgaWYgKGNsaWVudFJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAg
ICAgZGlkRmFpbChjYW5jZWxsZWRFcnJvcigpKTsKKyAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDk5NzQ5KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtVUkw7CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjsKQEAgLTQ0LDE0ICs0NSwxMyBAQAogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFN1YnJlc291
cmNlTG9hZGVyQ2xpZW50OwogCiBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlc291cmNlTG9hZFNjaGVkdWxlcik7CiBwdWJsaWM6CiAgICAg
ZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAK
LSAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9h
ZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwor
ICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2Fk
KEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2Fk
KEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2b2lkIGFkZE1haW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkZXIq
KTsKICAgICB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTc0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDE0ICsyOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQ0LDEwICs0NiwxMiBAQAogCiBERUZJTkVfREVC
VUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHN1YnJlc291cmNlTG9h
ZGVyQ291bnRlciwgKCJTdWJyZXNvdXJjZUxvYWRlciIpKTsKIAotU3VicmVzb3VyY2VMb2FkZXI6
OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorU3VicmVzb3Vy
Y2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBS
ZXNvdXJjZUxvYWRlcihmcmFtZSwgb3B0aW9ucykKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAg
ICAsIG1fcmVzb3VyY2UocmVzb3VyY2UpCisgICAgLCBtX2RvY3VtZW50KGZyYW1lLT5kb2N1bWVu
dCgpKQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKKyAgICAsIG1fc3Rh
dGUoVW5pbml0aWFsaXplZCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgc3VicmVzb3VyY2VMb2Fk
ZXJDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNjEsNyArNjUsNyBAQAogI2VuZGlmCiB9CiAKLVBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJh
bWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykK
K1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUo
RnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTQsNTggKzk4LDg4IEBACiAK
ICAgICBmcmFtZUxvYWRlci0+YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdS
ZXF1ZXN0KTsKIAotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0
UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgY2xpZW50LCBvcHRpb25zKSkpOworICAg
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNv
dXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7CiAgICAgaWYgKCFzdWJsb2Fk
ZXItPmluaXQobmV3UmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHN1YmxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKS0+YWRkU3VicmVzb3VyY2VMb2FkZXIoc3VibG9hZGVyLmdldCgpKTsK
LQogICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOwogfQogCitib29sIFN1YnJlc291cmNl
TG9hZGVyOjppbml0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAo
IVJlc291cmNlTG9hZGVyOjppbml0KHJlcXVlc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3N0YXRlID0gSW5pdGlhbGl6ZWQ7CisgICAgbV9kb2N1bWVudExvYWRlci0+YWRkU3Vi
cmVzb3VyY2VMb2FkZXIodGhpcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gU3Rv
cmUgdGhlIHByZXZpb3VzIFVSTCBiZWNhdXNlIHRoZSBjYWxsIHRvIFJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3Qgd2lsbCBtb2RpZnkgaXQuCiAgICAgS1VSTCBwcmV2aW91c1VSTCA9IHJl
cXVlc3QoKS51cmwoKTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIGlmICghcHJldmlvdXNVUkwuaXNO
dWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3UmVxdWVz
dC51cmwoKSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdCh0
aGlzLCBuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBpZiAoIXByZXZpb3VzVVJM
LmlzTnVsbCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHByZXZpb3VzVVJMICE9IG5ld1Jl
cXVlc3QudXJsKCkpIHsKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkp
IHsKKyAgICAgICAgICAgIGNhbmNlbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKKyAgICB9CiB9CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzVG9CZVNlbnQpCiB7CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZERh
dGEodGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIG1fcmVzb3VyY2Ut
PmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHIpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKCFyLmlzTnVsbCgpKTsK
KyAgICBBU1NFUlQoIXJlc3BvbnNlLmlzTnVsbCgpKTsKIAotICAgIGlmIChyLmlzTXVsdGlwYXJ0
KCkpCi0gICAgICAgIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQgPSB0cnVlOwotCiAgICAgLy8g
UmVmZXJlbmNlIHRoZSBvYmplY3QgaW4gdGhpcyBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwg
cHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhl
IGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMy
NjYyMTYuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCi0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRo
aXMsIHIpOwotICAgIAotICAgIC8vIFRoZSBsb2FkZXIgY2FuIGNhbmNlbCBhIGxvYWQgaWYgaXQg
cmVjZWl2ZXMgYSBtdWx0aXBhcnQgcmVzcG9uc2UgZm9yIGEgbm9uLWltYWdlCisgICAgaWYgKG1f
cmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpIHsKKyAgICAgICAgaWYgKHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSB7CisgICAgICAgICAgICAvLyAzMDQgTm90IG1vZGlm
aWVkIC8gVXNlIGxvY2FsIGNvcHkKKyAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNlIGlz
IG9rLCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgorICAgICAgICAg
ICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKG1fcmVzb3VyY2UsIHJlc3Bv
bnNlKTsKKyAgICAgICAgICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IAorICAgICAgICAvLyBEaWQg
bm90IGdldCAzMDQgcmVzcG9uc2UsIGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBsb2Fk
LgorICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7
CisgICAgfQorCisgICAgbV9yZXNvdXJjZS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOwogICAgIGlm
IChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShyKTsKLSAgICAKKyAgICBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKworICAgIGlmIChtX2xvYWRpbmdNdWx0aXBh
cnRDb250ZW50KSB7CisgICAgICAgIEFTU0VSVChtX3Jlc291cmNlLT5pc0ltYWdlKCkpOworICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KG1fcmVzb3VyY2UpLT5jbGVhcigpOworICAg
IH0gZWxzZSBpZiAocmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkgeworICAgICAgICBtX2xvYWRpbmdN
dWx0aXBhcnRDb250ZW50ID0gdHJ1ZTsKKworICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0
aVBhcnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50CisgICAgICAg
IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3Vu
dChtX3Jlc291cmNlKTsKKyAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdlKCkpIHsKKyAg
ICAgICAgICAgIGNhbmNlbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQgJiYgYnVmZmVyICYmIGJ1ZmZlci0+c2l6
ZSgpKSB7CiAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxv
YWQgbXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksCiAgICAgICAgIC8vIGRlbGl2ZXIg
dGhlIHByZXZpb3VzbHkgcmVjZWl2ZWQgZGF0YSB0byB0aGUgbG9hZGVyIGFsbCBhdCBvbmNlIG5v
dy4KICAgICAgICAgLy8gVGhlbiBjbGVhciB0aGUgZGF0YSB0byBtYWtlIHdheSBmb3IgdGhlIG5l
eHQgbXVsdGlwYXJ0IHNlY3Rpb24uCi0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCksIC0xLCB0cnVlKTsKICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBpcyBjb21wbGV0
ZSwgc2lnbmFsIHRvIGRlbGVnYXRlcyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNoZWQiIApAQCAt
MTU2LDc3ICsxOTAsMTAxIEBACiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgYm9vbCBhbGxBdE9uY2UpCiB7CisgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJj
ZVRvUmV2YWxpZGF0ZSgpKTsKKyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSk7CiAgICAgLy8gUmVmZXJlbmNlIHRoZSBvYmplY3QgaW4gdGhpcyBtZXRob2Qgc2luY2UgdGhl
IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcg
cmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBv
ZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwotICAgIAogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShkYXRhLCBs
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBhbGxBdE9uY2UpOwogCi0gICAgLy8gQSBzdWJyZXNv
dXJjZSBsb2FkZXIgZG9lcyBub3QgbG9hZCBtdWx0aXBhcnQgc2VjdGlvbnMgcHJvZ3Jlc3NpdmVs
eS4KLSAgICAvLyBTbyBkb24ndCBkZWxpdmVyIGFueSBkYXRhIHRvIHRoZSBsb2FkZXIgeWV0Lgot
ICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgaWYgKG1f
cmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3Vy
Y2UtPnNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpIHsKKyAgICAgICAgbV9yZXNv
dXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7CisgICAgICAgIG1fc3RhdGUg
PSBGaW5pc2hpbmc7CisgICAgICAgIGNhbmNlbCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gVGhlcmUgYXJlIHR3byBjYXNlcyB3aGVyZSB3ZSBtaWdodCBuZWVkIHRvIGNyZWF0
ZSBvdXIgb3duIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIG9uZSBpbiBSZXNv
dXJjZUxvYWRlci4KKyAgICAvLyAoMSkgTXVsdGlwYXJ0IGNvbnRlbnQ6IFRoZSBsb2FkZXIgZGVs
aXZlcnMgdGhlIGRhdGEgaW4gYSBtdWx0aXBhcnQgc2VjdGlvbiBhbGwgYXQgb25jZSwgdGhlbiBz
ZW5kcyBlb2YuCisgICAgLy8gICAgIFRoZSByZXNvdXJjZSBkYXRhIHdpbGwgY2hhbmdlIGFzIHRo
ZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBjb3B5LgorICAgIC8v
ICgyKSBPdXIgY2xpZW50IHJlcXVlc3RlZCB0aGF0IHRoZSBkYXRhIG5vdCBiZSBidWZmZXJlZCBh
dCB0aGUgUmVzb3VyY2VMb2FkZXIgbGV2ZWwgdmlhIFJlc291cmNlTG9hZGVyT3B0aW9ucy4gSW4g
dGhpcyBjYXNlLAorICAgIC8vICAgICBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgd2ls
bCBiZSBudWxsLiBIb3dldmVyLCB1bmxpa2UgdGhlIG11bHRpcGFydCBjYXNlLCB3ZSBkb24ndCB3
YW50IHRvIHRlbGwgdGhlIENhY2hlZFJlc291cmNlCisgICAgLy8gICAgIHRoYXQgYWxsIGRhdGEg
aGFzIGJlZW4gcmVjZWl2ZWQgeWV0LgorICAgIGlmIChtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50
IHx8ICFyZXNvdXJjZURhdGEoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3Bp
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9y
ZXNvdXJjZS0+ZGF0YShjb3BpZWREYXRhLnJlbGVhc2UoKSwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcmVzb3VyY2UtPmRhdGEocmVzb3VyY2VEYXRh
KCksIGZhbHNlKTsKIH0KIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUNhY2hl
ZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgLy8gUmVmZXJl
bmNlIHRoZSBvYmplY3QgaW4gdGhpcyBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vz
c2luZyBjYW4gZG8KLSAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYu
Ci0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgIAotICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0
YSh0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+cmVzb3VyY2VU
b1JldmFsaWRhdGUoKSk7CisgICAgbV9yZXNvdXJjZS0+c2V0U2VyaWFsaXplZENhY2hlZE1ldGFk
YXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiB7Ci0gICAgaWYgKGNhbmNlbGxlZCgpKQorICAg
IGlmIChtX3N0YXRlICE9IEluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKKyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291
cmNlVG9SZXZhbGlkYXRlKCkpOworICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+ZXJyb3JPY2N1cnJl
ZCgpKTsKKyAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVjZWl2ZWQgJyVzJy4iLCBtX3Jlc291
cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogCi0gICAgLy8gQ2FsbGluZyBy
ZW1vdmVTdWJyZXNvdXJjZUxvYWRlciB3aWxsIGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRvIGRl
cmVmLCBzbyB3ZSBtdXN0IHByb3RlY3Qgb3Vyc2VsdmVzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9j
bGllbnQtPmRpZEZpbmlzaExvYWRpbmcodGhpcywgZmluaXNoVGltZSk7Ci0gICAgCi0gICAgbV9o
YW5kbGUgPSAwOwotCi0gICAgaWYgKGNhbmNlbGxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
bV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CisgICAgbV9z
dGF0ZSA9IEZpbmlzaGluZzsKKyAgICBtX3Jlc291cmNlLT5zZXRMb2FkRmluaXNoVGltZShmaW5p
c2hUaW1lKTsKKyAgICBtX3Jlc291cmNlLT5kYXRhKHJlc291cmNlRGF0YSgpLCB0cnVlKTsKKyAg
ICBtX3Jlc291cmNlLT5maW5pc2goKTsKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhmaW5pc2hUaW1lKTsKIH0KIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoY2FuY2VsbGVkKCkpCisgICAg
aWYgKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
IXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOworICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+cmVzb3Vy
Y2VUb1JldmFsaWRhdGUoKSk7CisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkZhaWxlZCB0byBs
b2FkICclcycuXG4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwogCi0gICAgLy8gQ2FsbGluZyByZW1vdmVTdWJyZXNvdXJjZUxvYWRlciB3aWxsIGxpa2VseSBy
ZXN1bHQgaW4gYSBjYWxsIHRvIGRlcmVmLCBzbyB3ZSBtdXN0IHByb3RlY3Qgb3Vyc2VsdmVzLgog
ICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwodGhpcywgZXJyb3IpOwotICAgIAot
ICAgIG1faGFuZGxlID0gMDsKLSAgICAKLSAgICBpZiAoY2FuY2VsbGVkKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlz
KTsKKyAgICBtX3N0YXRlID0gRmluaXNoaW5nOworICAgIG1fcmVzb3VyY2UtPmVycm9yKENhY2hl
ZFJlc291cmNlOjpMb2FkRXJyb3IpOworICAgIGlmICghbV9yZXNvdXJjZS0+aXNQcmVsb2FkZWQo
KSkKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKG1fcmVzb3VyY2UpOwogICAgIFJlc291
cmNlTG9hZGVyOjpkaWRGYWlsKGVycm9yKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OndpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCBlcnJvcik7CisgICAgaWYgKG1f
c3RhdGUgIT0gSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIXJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpOworICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5jZWxsZWQg
bG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKKworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAg
ICBtX3N0YXRlID0gRmluaXNoaW5nOworICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2
YWxpZGF0ZSgpKQorICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQobV9y
ZXNvdXJjZSk7CisgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKG1fcmVzb3VyY2UpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIHsKLSAgICBtX2RvY3Vt
ZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKKyAgICBBU1NFUlQoIXJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpOworICAgIGlmIChtX3N0YXRlICE9IFVuaW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50ICYmIG1fc3RhdGUgIT0g
UmVsZWFzaW5nKQorICAgICAgICAgICAgbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOworICAgICAgICBtX3N0YXRlID0g
UmVsZWFzaW5nOworICAgICAgICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5s
b2FkRG9uZSgpOworICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9yZXNvdXJjZS0+c3RvcExvYWRpbmcoKTsKKyAgICAgICAg
bV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CisgICAgfQor
ICAgIG1fZG9jdW1lbnQgPSAwOworICAgIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiA5OTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw0MSArMzYsNTEgQEAKICAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBTdWJy
ZXNvdXJjZUxvYWRlckNsaWVudDsKLSAgICAKLSAgICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlciA6
IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKTsKK2NsYXNzIENhY2hlZFJlc291cmNlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiAKLSAgICAgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQg
PSAwOyB9CitjbGFzcyBTdWJyZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0
ZShGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBTdWJyZXNv
dXJjZUxvYWRlcihGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJik7Ci0gICAgICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyKCk7
Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworcHJpdmF0ZToKKyAg
ICBTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJik7CisgICAgdmlydHVhbCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAorICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRh
KHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiwgaW50LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIq
LCBpbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hU
aW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorCiAjaWYgSEFW
RShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRGF0YUFycmF5KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNEYXRhQXJyYXkoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhQXJyYXkoQ0ZBcnJheVJlZik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDSFJPTUlVTSkK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZERvd25sb2FkRGF0YShpbnQpOworICAgIHZpcnR1YWwg
dm9pZCBkaWREb3dubG9hZERhdGEoaW50KTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlUmVzb3VyY2VzKCk7CiAKLSAgICAgICAgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIG1fY2xp
ZW50OwotICAgICAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CisgICAgZW51bSBT
dWJyZXNvdXJjZUxvYWRlclN0YXRlIHsKKyAgICAgICAgVW5pbml0aWFsaXplZCwKKyAgICAgICAg
SW5pdGlhbGl6ZWQsCisgICAgICAgIEZpbmlzaGluZywKKyAgICAgICAgUmVsZWFzaW5nCiAgICAg
fTsKIAorICAgIENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOworICAgIFJlZlB0cjxEb2N1bWVu
dD4gbV9kb2N1bWVudDsKKyAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CisgICAg
U3VicmVzb3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOworfTsKKwogfQogCiAjZW5kaWYgLy8gU3Vi
cmVzb3VyY2VMb2FkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115194</attachid>
            <date>2011-11-15 10:35:46 -0800</date>
            <delta_ts>2011-11-15 12:40:31 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-71149-20111115103548.patch</filename>
            <type>text/plain</type>
            <size>80170</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDExLTExLTA5ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IGlzIG5vdyB0aGUgb25seSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudAorICAgICAgICBNZXJn
ZSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgaW50byBTdWJyZXNvdXJjZUxvYWRlciBhbmQgZGVsZXRl
CisgICAgICAgIHRoZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuIEEgZmV3IGl0
ZW1zIHdlcmUgbW92ZWQKKyAgICAgICAgdG8gQ2FjaGVkUmVzb3VyY2UgaW5zdGVhZCBvZiBTdWJy
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxMTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OlN1YnJl
c291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOiBEbyB3b3Jr
IHRoYXQgaGFkIHByZXZpb3VzbHkgYmVlbgorICAgICAgICAgICAgZG9uZSBpbiBTdWJyZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKCkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJy
ZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6IERvIHRoZSBjbGVhbnVwIHdvcmsgdGhhdCB3YXMK
KyAgICAgICAgICAgIGR1cGxpY2F0ZWQgdGhyb3VnaG91dCB0aGUgdmFyaW91cyB0ZXJtaW5hbCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FsbGJhY2tzLgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oOiBGaXggaW5kZW50YXRpb24gc3R5bGUgaXNzdWVzLgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkKTogRG8gdGhlIHdvcmsgdGhhdCBo
YWQgYmVlbiBkb25lIGluCisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQo
KS4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNldFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpzdG9wTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuRGVs
ZXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBsb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA6CisgICAgICAg
ICogbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBsb2FkZXIvY2hyb21pdW0vU3VicmVzb3VyY2VMb2FkZXJDaHJvbWl1
bS5jcHA6CisKIDIwMTEtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBIb3N0V2luZG93IGludmFsaWRhdGlvbiBmdW5jdGlvbnMgc2hvdWxkIHVz
ZSByb290IHZpZXcgY29vcmRpbmF0ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxMDAyOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtOTYwLDcgKzk2MCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFu
ZGxlLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKLSAgICBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAogICAgIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
CiAgICAgbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDAyOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTY1LDggKzIxNjUsNiBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBcCiAJU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBcCkBAIC0yMjU1
LDcgKzIyNTMsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TaW5rRG9jdW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmggXAotCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVEYXRhLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDAyOTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC05MDgsNyArOTA4LDYgQEAgU09V
UkNFUyArPSBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBcCiAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlSGFuZGxlLmNwcCBcCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgXAogICAgIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAgXApAQCAtMTk1MCw3ICsxOTQ5LDYgQEAgSEVBREVSUyArPSBcCiAgICAgbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggXAogICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCBcCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oIFwKICAgICBs
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmggXAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTc3LDcgKzU3Nyw2IEBACiAgICAgICAgICAgICAnbG9h
ZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oJywKICAgICAgICAgICAgICdsb2FkZXIvU3ViZnJh
bWVMb2FkZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgnLAot
ICAgICAgICAgICAgJ2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oJywKICAgICAgICAg
ICAgICdsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1N1YnN0
aXR1dGVSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oJywKQEAgLTU5Niw3ICs1OTUsNiBAQAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUNsaWVudC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgnLAotICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQu
aCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgnLAogICAgICAgICAg
ICAgJ2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmgnLApAQCAtMjg2MSw3ICsyODU5LDYgQEAK
ICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCcs
CiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCcsCi0gICAg
ICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAnLAogICAgICAg
ICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwJywKQEAgLTI4NzEsNyArMjg2OCw2IEBACiAgICAgICAgICAgICAnbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NmL1Jlc291
cmNlTG9hZGVyQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2hyb21pdW0vQ2FjaGVk
UmF3UmVzb3VyY2VDaHJvbWl1bS5jcHAnLAotICAgICAgICAgICAgJ2xvYWRlci9jaHJvbWl1bS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3RDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9j
aHJvbWl1bS9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgJ2xvYWRlci9jaHJvbWl1bS9SZXNvdXJjZUxvYWRlckNocm9taXVtLmNwcCcsCiAgICAgICAg
ICAgICAnbG9hZGVyL2Nocm9taXVtL1N1YnJlc291cmNlTG9hZGVyQ2hyb21pdW0uY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxMDAyOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU4OTQsMTAgKzI1ODk0LDYgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFN1YnJlc291cmNl
TG9hZGVyQ2xpZW50LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxTdWJzdGl0dXRlRGF0YS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAg
LTI2MTg5LDE0ICsyNjE4NSw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNw
cCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGxvYWRlclxjYWNoZVxDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKLQkJCQkJPgotCQkJCTwvRmls
ZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRT
Y3JpcHQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTAwMjkyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjAsNyArMzYwLDYgQEAKIAkJMUEyRTZFNTkwQ0M1NTIxMzAwNEEyMDYy
IC8qIFNRTFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMkU2RTU3MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgKi87IH07CiAJ
CTFBMkU2RTVBMENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8q
IFNRTFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUEyRTZFN0EwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyRTZFNzgwQ0M1
NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovOyB9OwotCQkxQTMxNzg5MzBC
MjBBODE2MDAzMTY5ODcgLyogU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzE3ODkyMEIyMEE4MTYwMDMxNjk4
NyAvKiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBMzQxN0M5MENFQ0ZGMjUwMDQ5Q0JERSAvKiBKU0N1
c3RvbVZvaWRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEzNDE3QzcwQ0VDRkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNr
LmggKi87IH07CiAJCTFBMzQxN0NBMENFQ0ZGMjUwMDQ5Q0JERSAvKiBKU0N1c3RvbVZvaWRDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTM0MTdDODBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwICovOyB9
OwogCQkxQTQ5NEJGQTBBMTIyRjQ0MDBGREFGQzEgLyogSlNIVE1MRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ5NEJGODBBMTIyRjQ0
MDBGREFGQzEgLyogSlNIVE1MRWxlbWVudC5jcHAgKi87IH07CkBAIC01NzYzLDggKzU3NjIsNiBA
QAogCQlEMEJDNTQ0OTE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCQzU0NDgx
NDQzQUM0QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCAqLzsgfTsKIAkJRDBD
RTU4RjgxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMENFNThGNjEyNUU0Q0My
MDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJRDBDRTU4Rjkx
MjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5
IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUQwRDE0MUIyMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRDBEMTQxQjAxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHAgKi87IH07Ci0JCUQwRDE0MUIzMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQwRDE0MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEMEVEQTc3NDE0
M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8q
IENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLzsgfTsKIAkJRDBFREE3NzUxNDNFMzAzQzAwMjhFMzgz
IC8qIENhY2hlZFJhd1Jlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEMEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3Vy
Y2UuaCAqLzsgfTsKIAkJRDBGRjJBNUQxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBGRjJBNUIx
MUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovOyB9OwpAQCAtNzQyNCw3ICs3NDIx
LDYgQEAKIAkJMUEyRTZFNTcwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFZhbHVlLmNwcDsgcGF0aCA9IHNxbC9T
UUxWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTU4MENDNTUy
MTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTUUxWYWx1ZS5oOyBwYXRoID0gc3FsL1NRTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0ZUF1dGhvcml6ZXIu
Y3BwOyBwYXRoID0gc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQTMxNzg5MjBCMjBBODE2MDAzMTY5ODcgLyogU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzNDE3QzcwQ0VDRkYy
NTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ3VzdG9tVm9pZENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMzQxN0M4MENFQ0ZGMjUwMDQ5Q0JERSAvKiBKU0N1c3RvbVZvaWRDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVZvaWRD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDk0QkJCMEExMjJE
Q0QwMEZEQUZDMSAvKiBIVE1MRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwOTUsOCArMTMw
OTEsNiBAQAogCQlEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0U1OEY2MTI1RTRDQzIw
MEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9h
ZFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEMTQxQjAxMkIy
QkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEQxNDFCMTEyQjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVEQTc3
MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3
UmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmF3UmVz
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUIxMUY4QzQ1QTAw
N0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGluZ0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ5
Nyw4ICsxODQ5MSw2IEBACiAJCQkJRTQ3QjRCRTYwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJl
c291cmNlSGFuZGxlLmggKi8sCiAJCQkJQkNCMTZDMTAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQlCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCAqLywKLQkJCQlEMEQxNDFCMDEyQjJCRjUyMDBFMzk2MjAg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLywKLQkJCQlEMEQxNDFCMTEyQjJCRjUyMDBF
Mzk2MjAgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggKi8sCiAJCQkJQkNCMTZDMEEwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5jcHAgKi8sCiAJCQkJQkNCMTZDMEIwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oICovLAogCQkJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVE
QSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8sCkBAIC0xOTk0OSw3ICsxOTk0MSw2IEBA
CiAJCQkJRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggKi8sCiAJ
CQkJOTNFMjI3REYwQUY1ODlBRDAwRDQ4MzI0IC8qIFN1YnJlc291cmNlTG9hZGVyLmNwcCAqLywK
IAkJCQk2NTZEMzczMDBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCAqLywK
LQkJCQkxQTMxNzg5MjBCMjBBODE2MDAzMTY5ODcgLyogU3VicmVzb3VyY2VMb2FkZXJDbGllbnQu
aCAqLywKIAkJCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAq
LywKIAkJCQkxQThGNkIwMTBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmgg
Ki8sCiAJCQkJRjUyM0QyNzgwMkRFNDNENzAxODYzNUNBIC8qIFRleHRSZXNvdXJjZURlY29kZXIu
Y3BwICovLApAQCAtMjE4MDMsNyArMjE3OTQsNiBAQAogCQkJCUJDQjE2QzIyMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ3QjRCRTgwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFuZGxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0IxNkMyQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUQwRDE0MUIzMTJCMkJGNTIwMEUzOTYyMCAvKiBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzI0MDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDUzMzY0
MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDBCQzU0NDkxNDQzQUM0QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQxNDMsNyArMjQxMzMsNiBAQAogCQkJCUQwMDBF
RDI4MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjU1QjNERDQxMjUxRjEyRDAwM0VGMjY5IC8qIFN1Ym1pdElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjU2RDM3NDgwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTMxNzg5MzBCMjBBODE2MDAzMTY5ODcgLyogU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1OUE3RDEzMEI2REI0RDkw
MDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RjZCMDIw
REI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1MTU0LDcgKzI1MTQzLDYgQEAKIAkJCQlCQ0IxNkMxRjA5NzlDM0JEMDA0
Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ3QjRCRTkw
RTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDQjE2QzI5MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlEMEQxNDFCMjEyQjJCRjUyMDBFMzk2MjAgLyogQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2QzIzMDk3OUMzQkQw
MDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMjcw
OTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTAwMjkyKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1
LDkgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpSZXNvdXJjZUxvYWRTY2hlZAogI2VuZGlmCiB9
CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNs
aWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlTG9h
ZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CitQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNj
aGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOworICAgIFJlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVz
b3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVk
dWxlTG9hZChsb2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKICAgICByZXR1cm4gbG9hZGVyLnJlbGVh
c2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBLVVJMOwogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CkBAIC00NCwxNCAr
NDUsMTMgQEAgY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFN1YnJlc291cmNl
TG9hZGVyOwotY2xhc3MgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQ7CiAKIGNsYXNzIFJlc291cmNl
TG9hZFNjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VMb2FkU2No
ZWR1bGVyKTsKIHB1YmxpYzoKICAgICBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBz
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291
cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVy
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlz
aW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjpp
bml0KGNvbnN0IFJlc291cmNlCiAKICAgICB3aWxsU2VuZFJlcXVlc3QoY2xpZW50UmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICBpZiAoY2xpZW50UmVxdWVzdC5pc051bGwoKSkgewot
ICAgICAgICBkaWRGYWlsKGNhbmNlbGxlZEVycm9yKCkpOworICAgICAgICBjYW5jZWwoKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMDAyOTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
NCArMjksMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxv
YWRlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0j
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCkBAIC00NCwxMCArNDYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHN1
YnJlc291cmNlTG9hZGVyQ291bnRlciwgKCJTdWJyZXNvdXJjZUxvYWRlciIpKTsKIAotU3VicmVz
b3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQorU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgb3B0aW9ucykKLSAgICAsIG1fY2xpZW50
KGNsaWVudCkKKyAgICAsIG1fcmVzb3VyY2UocmVzb3VyY2UpCisgICAgLCBtX2RvY3VtZW50KGZy
YW1lLT5kb2N1bWVudCgpKQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkK
KyAgICAsIG1fc3RhdGUoVW5pbml0aWFsaXplZCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgc3Vi
cmVzb3VyY2VMb2FkZXJDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNjEsNyArNjUsNyBAQCBTdWJy
ZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkKICNlbmRpZgogfQogCi1QYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBm
cmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitQYXNz
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1l
KiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTk0LDU4ICs5OCw4OCBAQCBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjCiAKICAgICBmcmFtZUxvYWRlci0+YWRk
RXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KTsKIAotICAgIFJlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxv
YWRlcihmcmFtZSwgY2xpZW50LCBvcHRpb25zKSkpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVz
b3VyY2UsIG9wdGlvbnMpKSk7CiAgICAgaWYgKCFzdWJsb2FkZXItPmluaXQobmV3UmVxdWVzdCkp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHN1YmxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRk
U3VicmVzb3VyY2VMb2FkZXIoc3VibG9hZGVyLmdldCgpKTsKLQogICAgIHJldHVybiBzdWJsb2Fk
ZXIucmVsZWFzZSgpOwogfQogCitib29sIFN1YnJlc291cmNlTG9hZGVyOjppbml0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIVJlc291cmNlTG9hZGVyOjppbml0
KHJlcXVlc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3N0YXRlID0gSW5pdGlh
bGl6ZWQ7CisgICAgbV9kb2N1bWVudExvYWRlci0+YWRkU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIFVSTCBi
ZWNhdXNlIHRoZSBjYWxsIHRvIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qgd2lsbCBt
b2RpZnkgaXQuCiAgICAgS1VSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKICAgICAK
ICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOwotICAgIGlmICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3Qu
aXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSAmJiBtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBuZXdSZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKKyAgICBpZiAoIXByZXZpb3VzVVJMLmlzTnVsbCgpICYmICFuZXdSZXF1
ZXN0LmlzTnVsbCgpICYmIHByZXZpb3VzVVJMICE9IG5ld1JlcXVlc3QudXJsKCkpIHsKKyAgICAg
ICAgaWYgKCFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1f
cmVzb3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIGNhbmNl
bCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fcmVzb3VyY2Ut
PndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB9CiB9
CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7CiAg
ICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEodGhpcywgYnl0ZXNTZW50LCB0
b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIG1fcmVzb3VyY2UtPmRpZFNlbmREYXRhKGJ5dGVzU2Vu
dCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCit2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7Ci0gICAgQVNTRVJUKCFyLmlzTnVsbCgpKTsKLQotICAgIGlmIChyLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQgPSB0cnVlOworICAgIEFT
U0VSVCghcmVzcG9uc2UuaXNOdWxsKCkpOwogCiAgICAgLy8gUmVmZXJlbmNlIHRoZSBvYmplY3Qg
aW4gdGhpcyBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAg
ICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRo
aXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPFN1
YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHIpOwotICAgIAotICAgIC8v
IFRoZSBsb2FkZXIgY2FuIGNhbmNlbCBhIGxvYWQgaWYgaXQgcmVjZWl2ZXMgYSBtdWx0aXBhcnQg
cmVzcG9uc2UgZm9yIGEgbm9uLWltYWdlCisgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9S
ZXZhbGlkYXRlKCkpIHsKKyAgICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0KSB7CisgICAgICAgICAgICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkK
KyAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNlIGlzIG9rLCBqdXN0IHVzZSBpdCB1cGRh
dGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgorICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2
YWxpZGF0aW9uU3VjY2VlZGVkKG1fcmVzb3VyY2UsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9IAorICAgICAgICAvLyBEaWQgbm90IGdldCAzMDQgcmVzcG9uc2Us
IGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBsb2FkLgorICAgICAgICBtZW1vcnlDYWNo
ZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7CisgICAgfQorCisgICAgbV9yZXNv
dXJjZS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOwogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0
ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShyKTsKLSAgICAKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKKworICAgIGlmIChtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CisgICAgICAg
IEFTU0VSVChtX3Jlc291cmNlLT5pc0ltYWdlKCkpOworICAgICAgICBzdGF0aWNfY2FzdDxDYWNo
ZWRJbWFnZSo+KG1fcmVzb3VyY2UpLT5jbGVhcigpOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkgeworICAgICAgICBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50ID0gdHJ1
ZTsKKworICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50CisgICAgICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudChtX3Jlc291cmNlKTsKKyAgICAg
ICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdlKCkpIHsKKyAgICAgICAgICAgIGNhbmNlbCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gcmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKG1fbG9hZGluZ011bHRp
cGFydENvbnRlbnQgJiYgYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIC8vIFNp
bmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQgbXVsdGlwYXJ0IHNlY3Rpb25z
IHByb2dyZXNzaXZlbHksCiAgICAgICAgIC8vIGRlbGl2ZXIgdGhlIHByZXZpb3VzbHkgcmVjZWl2
ZWQgZGF0YSB0byB0aGUgbG9hZGVyIGFsbCBhdCBvbmNlIG5vdy4KICAgICAgICAgLy8gVGhlbiBj
bGVhciB0aGUgZGF0YSB0byBtYWtlIHdheSBmb3IgdGhlIG5leHQgbXVsdGlwYXJ0IHNlY3Rpb24u
Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBkaWRS
ZWNlaXZlRGF0YShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIC0xLCB0cnVlKTsKICAg
ICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEFmdGVyIHRo
ZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBpcyBjb21wbGV0ZSwgc2lnbmFsIHRvIGRlbGVnYXRl
cyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNoZWQiIApAQCAtMTU2LDc3ICsxOTAsMTAxIEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb24KIAogdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSkKIHsKKyAgICBBU1NFUlQo
IW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOworICAgIEFTU0VSVCghbV9yZXNv
dXJjZS0+ZXJyb3JPY2N1cnJlZCgpKTsKICAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0
aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8v
IGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBv
YmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0gICAgCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIGFsbEF0T25jZSk7
CiAKLSAgICAvLyBBIHN1YnJlc291cmNlIGxvYWRlciBkb2VzIG5vdCBsb2FkIG11bHRpcGFydCBz
ZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LgotICAgIC8vIFNvIGRvbid0IGRlbGl2ZXIgYW55IGRhdGEg
dG8gdGhlIGxvYWRlciB5ZXQuCi0gICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50ICYm
IG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwg
bGVuZ3RoKTsKKyAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID49IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMo
KSkgeworICAgICAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9y
KTsKKyAgICAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKKyAgICAgICAgY2FuY2VsKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBhcmUgdHdvIGNhc2VzIHdoZXJlIHdl
IG1pZ2h0IG5lZWQgdG8gY3JlYXRlIG91ciBvd24gU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29w
eWluZyB0aGUgb25lIGluIFJlc291cmNlTG9hZGVyLgorICAgIC8vICgxKSBNdWx0aXBhcnQgY29u
dGVudDogVGhlIGxvYWRlciBkZWxpdmVycyB0aGUgZGF0YSBpbiBhIG11bHRpcGFydCBzZWN0aW9u
IGFsbCBhdCBvbmNlLCB0aGVuIHNlbmRzIGVvZi4KKyAgICAvLyAgICAgVGhlIHJlc291cmNlIGRh
dGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBpcyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8g
bWFrZSBhIGNvcHkuCisgICAgLy8gKDIpIE91ciBjbGllbnQgcmVxdWVzdGVkIHRoYXQgdGhlIGRh
dGEgbm90IGJlIGJ1ZmZlcmVkIGF0IHRoZSBSZXNvdXJjZUxvYWRlciBsZXZlbCB2aWEgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLiBJbiB0aGlzIGNhc2UsCisgICAgLy8gICAgIFJlc291cmNlTG9hZGVy
OjpyZXNvdXJjZURhdGEoKSB3aWxsIGJlIG51bGwuIEhvd2V2ZXIsIHVubGlrZSB0aGUgbXVsdGlw
YXJ0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgQ2FjaGVkUmVzb3VyY2UKKyAgICAv
LyAgICAgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiByZWNlaXZlZCB5ZXQuCisgICAgaWYgKG1fbG9h
ZGluZ011bHRpcGFydENvbnRlbnQgfHwgIXJlc291cmNlRGF0YSgpKSB7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNvcGllZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBs
ZW5ndGgpOworICAgICAgICBtX3Jlc291cmNlLT5kYXRhKGNvcGllZERhdGEucmVsZWFzZSgpLCBt
X2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZXNvdXJj
ZS0+ZGF0YShyZXNvdXJjZURhdGEoKSwgZmFsc2UpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0
aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFueXRoaW5nIGluY2x1ZGlu
ZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxl
IG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7Ci0gICAgCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZUNhY2hlZE1ldGFkYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgQVNTRVJUKCFt
X3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKKyAgICBtX3Jlc291cmNlLT5zZXRT
ZXJpYWxpemVkQ2FjaGVkTWV0YWRhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBp
ZiAoY2FuY2VsbGVkKCkpCisgICAgaWYgKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpCiAgICAgICAg
IHJldHVybjsKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOworICAgIEFTU0VS
VCghbV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CisgICAgQVNTRVJUKCFtX3Jl
c291cmNlLT5lcnJvck9jY3VycmVkKCkpOworICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZWNl
aXZlZCAnJXMnLiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
CiAKLSAgICAvLyBDYWxsaW5nIHJlbW92ZVN1YnJlc291cmNlTG9hZGVyIHdpbGwgbGlrZWx5IHJl
c3VsdCBpbiBhIGNhbGwgdG8gZGVyZWYsIHNvIHdlIG11c3QgcHJvdGVjdCBvdXJzZWx2ZXMuCiAg
ICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyh0aGlzLCBmaW5pc2hU
aW1lKTsKLSAgICAKLSAgICBtX2hhbmRsZSA9IDA7Ci0KLSAgICBpZiAoY2FuY2VsbGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxv
YWRlcih0aGlzKTsKKyAgICBtX3N0YXRlID0gRmluaXNoaW5nOworICAgIG1fcmVzb3VyY2UtPnNl
dExvYWRGaW5pc2hUaW1lKGZpbmlzaFRpbWUpOworICAgIG1fcmVzb3VyY2UtPmRhdGEocmVzb3Vy
Y2VEYXRhKCksIHRydWUpOworICAgIG1fcmVzb3VyY2UtPmZpbmlzaCgpOwogICAgIFJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlm
IChjYW5jZWxsZWQoKSkKKyAgICBpZiAobV9zdGF0ZSAhPSBJbml0aWFsaXplZCkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CisgICAgQVNTRVJU
KCFtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKKyAgICBMT0coUmVzb3VyY2VM
b2FkaW5nLCAiRmFpbGVkIHRvIGxvYWQgJyVzJy5cbiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAKLSAgICAvLyBDYWxsaW5nIHJlbW92ZVN1YnJlc291cmNl
TG9hZGVyIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwgdG8gZGVyZWYsIHNvIHdlIG11c3Qg
cHJvdGVjdCBvdXJzZWx2ZXMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbCh0
aGlzLCBlcnJvcik7Ci0gICAgCi0gICAgbV9oYW5kbGUgPSAwOwotICAgIAotICAgIGlmIChjYW5j
ZWxsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlbW92ZVN1
YnJlc291cmNlTG9hZGVyKHRoaXMpOworICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CisgICAgbV9y
ZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7CisgICAgaWYgKCFtX3Jl
c291cmNlLT5pc1ByZWxvYWRlZCgpKQorICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9y
ZXNvdXJjZSk7CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoZXJyb3IpOwogfQogCi12b2lk
IFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9y
JikKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKHRoaXMs
IGVycm9yKTsKKyAgICBpZiAobV9zdGF0ZSAhPSBJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJu
OworICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CisgICAgTE9HKFJlc291cmNl
TG9hZGluZywgIkNhbmNlbGxlZCBsb2FkIG9mICclcycuXG4iLCBtX3Jlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworCisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KHRoaXMpOworICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CisgICAgaWYgKG1fcmVz
b3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpCisgICAgICAgIG1lbW9yeUNhY2hlKCktPnJl
dmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKKyAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUo
bV9yZXNvdXJjZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJj
ZXMoKQogewotICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlbW92ZVN1YnJlc291cmNlTG9hZGVyKHRo
aXMpOworICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CisgICAgaWYgKG1fc3Rh
dGUgIT0gVW5pbml0aWFsaXplZCkgeworICAgICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENv
bnRlbnQgJiYgbV9zdGF0ZSAhPSBSZWxlYXNpbmcpCisgICAgICAgICAgICBtX2RvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQobV9yZXNvdXJjZSk7
CisgICAgICAgIG1fc3RhdGUgPSBSZWxlYXNpbmc7CisgICAgICAgIG1fZG9jdW1lbnQtPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPmxvYWREb25lKCk7CisgICAgICAgIGlmIChyZWFjaGVkVGVybWlu
YWxTdGF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Jlc291cmNlLT5zdG9w
TG9hZGluZygpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxv
YWRlcih0aGlzKTsKKyAgICB9CisgICAgbV9kb2N1bWVudCA9IDA7CisgICAgUmVzb3VyY2VMb2Fk
ZXI6OnJlbGVhc2VSZXNvdXJjZXMoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw0MSAr
MzYsNTEgQEAKICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKLSAgICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlckNsaWVudDsKLSAgICAKLSAgICBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7Ci0gICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZy
YW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKLQotICAgICAgICB2b2lkIGNsZWFyQ2xpZW50
KCkgeyBtX2NsaWVudCA9IDA7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFN1YnJlc291cmNl
TG9hZGVyKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmKTsKLSAgICAgICAgdmlydHVhbCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKLSAg
ICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50LCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50KTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CitjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworCitjbGFzcyBT
dWJyZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIENhY2hl
ZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJik7CisKK3ByaXZhdGU6CisgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBDYWNo
ZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIHZpcnR1YWwg
flN1YnJlc291cmNlTG9hZGVyKCk7CisgICAgdmlydHVhbCBib29sIGluaXQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSB7IH0KIAogI2lmIEhBVkUoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0sp
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZik7
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YUFycmF5KCkgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWREb3dubG9h
ZERhdGEoaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKGludCk7CiAjZW5k
aWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogCi0gICAgICAgIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKLSAgICAgICAgYm9vbCBtX2xvYWRpbmdNdWx0
aXBhcnRDb250ZW50OworICAgIGVudW0gU3VicmVzb3VyY2VMb2FkZXJTdGF0ZSB7CisgICAgICAg
IFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIEluaXRpYWxpemVkLAorICAgICAgICBGaW5pc2hpbmcs
CisgICAgICAgIFJlbGVhc2luZwogICAgIH07CiAKKyAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNv
dXJjZTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgYm9vbCBtX2xvYWRp
bmdNdWx0aXBhcnRDb250ZW50OworICAgIFN1YnJlc291cmNlTG9hZGVyU3RhdGUgbV9zdGF0ZTsK
K307CisKIH0KIAogI2VuZGlmIC8vIFN1YnJlc291cmNlTG9hZGVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAx
MDAyOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnRfaAotI2RlZmluZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dF9oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7Ci1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotICAgIAotY2xhc3Mg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflN1YnJlc291
cmNlTG9hZGVyQ2xpZW50KCkgeyB9IAotCi0gICAgLy8gcmVxdWVzdCBtYXkgYmUgbW9kaWZpZWQK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFN1YnJlc291cmNlTG9hZGVyKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNl
Ki8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlcios
IHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0
b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IC8q
ZGF0YUxlbmd0aCovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJy
ZXNvdXJjZUxvYWRlciosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
Ci0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWRE
YXRhKFN1YnJlc291cmNlTG9hZGVyKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KLSNlbmRpZgot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCShyZXZpc2lvbiAxMDAyOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVu
dFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKQEAgLTM3
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI4NywxMSArMjg3LDEwIEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6Om5vdGlmeU9ic2VydmVycyhjb25zdCAKIAogdm9pZCBDYWNoZWRJ
bWFnZTo6Y2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCkKIHsKLSAgICBGcmFtZSogZnJhbWUg
PSBtX3JlcXVlc3QgPyBtX3JlcXVlc3QtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmZyYW1lKCkg
OiAwOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKCFtX2xvYWRlciB8fCBtX2xvYWRlci0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlID0gZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZShtX3Jlc291cmNlUmVxdWVzdC51cmwoKSk7CisgICAgbV9zaG91bGRQYWludEJyb2tl
bkltYWdlID0gbV9sb2FkZXItPmZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRQYWludEJy
b2tlbkltYWdlKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXIoKQpAQCAtMzI4LDEwICszMjcsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6
Y3JlYXRlSW1hZ2UoKQogCiBzaXplX3QgQ2FjaGVkSW1hZ2U6Om1heGltdW1EZWNvZGVkSW1hZ2VT
aXplKCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3JlcXVlc3QgPyBtX3JlcXVlc3QtPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPmZyYW1lKCkgOiAwOwotICAgIGlmICghZnJhbWUpCisgICAgaWYg
KCFtX2xvYWRlciB8fCBtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCk7Cisg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9sb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkt
PnNldHRpbmdzKCk7CiAgICAgcmV0dXJuIHNldHRpbmdzID8gc2V0dGluZ3MtPm1heGltdW1EZWNv
ZGVkSW1hZ2VTaXplKCkgOiAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDEwMDI5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc4LDggKzc4LDggQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhYwog
CiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7Ci0gICAgaWYg
KG1fcmVxdWVzdCkKLSAgICAgICAgbV9yZXF1ZXN0LT5jYW5jZWwoKTsKKyAgICBpZiAobV9sb2Fk
ZXIpCisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDksMTMgKzEwOSwxMyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRTZW5kRGF0YSh1bnNpCiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7Ci0gICAgaWYgKG1fcmVxdWVzdCkKLSAg
ICAgICAgbV9yZXF1ZXN0LT5zZXREZWZlcnNMb2FkaW5nKGRlZmVycyk7CisgICAgaWYgKG1fbG9h
ZGVyKQorICAgICAgICBtX2xvYWRlci0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCiB1
bnNpZ25lZCBsb25nIENhY2hlZFJhd1Jlc291cmNlOjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9yZXF1ZXN0ID8gbV9yZXF1ZXN0LT5pZGVudGlmaWVyKCkgOiAwOworICAgIHJl
dHVybiBtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlmaWVyKCkgOiAwOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICsz
MCwxNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtODAs
NiArODIsNDEgQEAgc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcgogICAg
IHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKIH0KIAorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBjYWNoZWRSZXNvdXJjZVR5
cGVUb1RhcmdldFR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgorI2lmIEVO
QUJMRShYU0xUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CisjZW5k
aWYKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdHlsZVNoZWV0Owor
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDogCisgICAgICAgIHJldHVybiBSZXNvdXJj
ZVJlcXVlc3Q6OlRhcmdldElzU2NyaXB0OworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRS
ZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNGb250UmVz
b3VyY2U7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKKyAgICAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJbWFnZTsKKyAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpSYXdSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFy
Z2V0SXNTdWJyZXNvdXJjZTsgICAgCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc1ByZWZldGNoOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQ
cmVyZW5kZXI6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzUHJlcmVu
ZGVyOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKKyAgICAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKKyNlbmRpZgorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tS
ZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNUZXh0VHJh
Y2s7CisjZW5kaWYKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKK30KKyNlbmRpZgorCiBERUZJ
TkVfREVCVUdfT05MWV9HTE9CQUwoUmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRSZXNvdXJj
ZUxlYWtDb3VudGVyLCAoIkNhY2hlZFJlc291cmNlIikpOwogCiBDYWNoZWRSZXNvdXJjZTo6Q2Fj
aGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUpCkBA
IC0xMzksMTEgKzE3Niw1MCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291
cmNlCiB7CiAgICAgbV9vcHRpb25zID0gb3B0aW9uczsKICAgICBtX2xvYWRpbmcgPSB0cnVlOwot
ICAgIG1fcmVxdWVzdCA9IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9hZChjYWNoZWRSZXNvdXJj
ZUxvYWRlciwgdGhpcywgb3B0aW9ucyk7Ci0gICAgaWYgKG1fcmVxdWVzdCkgewotICAgICAgICBt
X3N0YXR1cyA9IFBlbmRpbmc7Ci0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1l
bnRSZXF1ZXN0Q291bnQodGhpcyk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBpZiAo
bV9yZXNvdXJjZVJlcXVlc3QudGFyZ2V0VHlwZSgpID09IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
SXNVbnNwZWNpZmllZCkKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0VGFyZ2V0VHlwZShj
YWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUodHlwZSgpKSk7CisjZW5kaWYKKworICAgIGlm
ICghYWNjZXB0KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQ
QWNjZXB0KGFjY2VwdCgpKTsKKworICAgIGlmIChpc0NhY2hlVmFsaWRhdG9yKCkpIHsKKyAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlVG9SZXZhbGlkYXRlID0gbV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZTsKKyAgICAgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlkYXRlLT5jYW5Vc2VDYWNo
ZVZhbGlkYXRvcigpKTsKKyAgICAgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlkYXRlLT5pc0xv
YWRlZCgpKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBsYXN0TW9kaWZpZWQgPSByZXNvdXJjZVRv
UmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkxhc3QtTW9kaWZpZWQiKTsK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBlVGFnID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKCJFVGFnIik7CisgICAgICAgIGlmICghbGFzdE1vZGlmaWVk
LmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQb2xpY3koKSAhPSBDYWNoZVBvbGljeVJlbG9hZCk7Cisg
ICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5KCkgPT0gQ2Fj
aGVQb2xpY3lSZXZhbGlkYXRlKQorICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPTAiKTsKKyAgICAgICAg
ICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc291
cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIklmLU1vZGlmaWVkLVNpbmNlIiwgbGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Ob25lLU1hdGNoIiwg
ZVRhZyk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAg
ICBpZiAodHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2ggfHwgdHlwZSgpID09
IENhY2hlZFJlc291cmNlOjpMaW5rUHJlcmVuZGVyIHx8IHR5cGUoKSA9PSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1N1YnJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoIlB1cnBvc2UiLCAicHJlZmV0Y2giKTsKKyNlbmRpZgorICAgIG1fcmVzb3VyY2VS
ZXF1ZXN0LnNldFByaW9yaXR5KGxvYWRQcmlvcml0eSgpKTsKKyAgICAKKyAgICBtX2xvYWRlciA9
IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNoZWRS
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgdGhpcywgbV9yZXNvdXJjZVJlcXVl
c3QsIG1fcmVzb3VyY2VSZXF1ZXN0LnByaW9yaXR5KCksIG9wdGlvbnMpOworICAgIGlmICghbV9s
b2FkZXIgfHwgbV9sb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcgZm9y
IHRoaXMgcmV2YWxpZGF0aW9uPworICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90
IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Cisg
ICAgICAgIGlmIChtX3Jlc291cmNlVG9SZXZhbGlkYXRlKSAKKyAgICAgICAgICAgIG1lbW9yeUNh
Y2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZCh0aGlzKTsgCisgICAgICAgIGVycm9yKENhY2hlZFJl
c291cmNlOjpMb2FkRXJyb3IpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9zdGF0
dXMgPSBQZW5kaW5nOworICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0
Q291bnQodGhpcyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KCkKQEAg
LTE3Nyw3ICsyNTMsOCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjplcnJvcihDYWNoZWRSZXNvdXJj
CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaCgpCiB7Ci0gICAgbV9zdGF0dXMgPSBDYWNo
ZWQ7CisgICAgaWYgKCFlcnJvck9jY3VycmVkKCkpCisgICAgICAgIG1fc3RhdHVzID0gQ2FjaGVk
OwogfQogCiBib29sIENhY2hlZFJlc291cmNlOjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQpAQCAtMjMyLDYgKzMwOSw5IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnNldFJlc3BvbnNlKGNvbnN0IFIKIHsKICAgICBtX3Jlc3BvbnNlID0gcmVz
cG9uc2U7CiAgICAgbV9yZXNwb25zZVRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgU3Ry
aW5nIGVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworICAgIGlmICghZW5j
b2RpbmcuaXNOdWxsKCkpCisgICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKIH0KIAogdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6c2V0U2VyaWFsaXplZENhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQpAQCAtMjY0LDggKzM0NCw4IEBAIENhY2hlZE1ldGFkYXRhKiBD
YWNoZWRSZXNvdXJjZTo6Y2FjaGVkTWUKIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c3RvcExvYWRp
bmcoKQogewotICAgIEFTU0VSVChtX3JlcXVlc3QpOyAgICAgICAgICAgIAotICAgIG1fcmVxdWVz
dC5jbGVhcigpOworICAgIEFTU0VSVChtX2xvYWRlcik7ICAgICAgICAgICAgCisgICAgbV9sb2Fk
ZXIgPSAwOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3Rl
Y3QodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCShyZXZpc2lvbiAxMDAyOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDExIEBAIGNs
YXNzIENhY2hlZE1ldGFkYXRhOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKLWNs
YXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9y
UmVzb3VyY2U7CiBjbGFzcyBQdXJnZWFibGVCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
K2NsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogCiAvLyBBIHJlc291cmNlIHRoYXQgaXMgaGVsZCBp
biB0aGUgY2FjaGUuIENsYXNzZXMgd2hvIHdhbnQgdG8gdXNlIHRoaXMgb2JqZWN0IHNob3VsZCBk
ZXJpdmUKIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHRvIGdldCB0aGUgZnVuY3Rpb24g
Y2FsbHMgaW4gY2FzZSB0aGUgcmVxdWVzdGVkIGRhdGEgaGFzIGFycml2ZWQuCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgY2FjaGVkIG1ldGFkYXRhIG9mIHRoZSBn
aXZlbiB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlLgogICAgIENhY2hlZE1ldGFk
YXRhKiBjYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlEKSBjb25zdDsKIAotICAgIGJv
b2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9yZXF1ZXN0
ICYmICFtX3ByZWxvYWRDb3VudCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSAmJiAhbV9wcm94eVJlc291cmNlOyB9CisgICAgYm9vbCBjYW5EZWxldGUoKSBjb25z
dCB7IHJldHVybiAhaGFzQ2xpZW50cygpICYmICFtX2xvYWRlciAmJiAhbV9wcmVsb2FkQ291bnQg
JiYgIW1faGFuZGxlQ291bnQgJiYgIW1fcmVzb3VyY2VUb1JldmFsaWRhdGUgJiYgIW1fcHJveHlS
ZXNvdXJjZTsgfQogICAgIGJvb2wgaGFzT25lSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5k
bGVDb3VudCA9PSAxOyB9CiAKICAgICBib29sIGlzRXhwaXJlZCgpIGNvbnN0OwpAQCAtMjUzLDcg
KzI1Myw3IEBAIHByb3RlY3RlZDoKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVx
dWVzdDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7Ci0gICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVx
dWVzdD4gbV9yZXF1ZXN0OworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7
CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsKICAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBtX2xvYWRQcmlvcml0eTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMDAyOTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5o
IgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2Uu
aCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ29u
c29sZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMzOCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xs
IChrbm9sbEBtcGktaGQubXBnLmRlKQotICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDIgV2FsZG8gQmFzdGlh
biAoYmFzdGlhbkBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaCIKLQotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2UuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUg
IkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5o
IgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9h
ZGVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkK
LXN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9U
YXJnZXRUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSNpZiBFTkFCTEUo
WFNMVCkKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgotI2VuZGlmCi0g
ICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3R5bGVTaGVldDsKLSAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6IAotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRJc1NjcmlwdDsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzRm9udFJlc291cmNl
OwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElz
U3VicmVzb3VyY2U7ICAgIAotI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVz
dDo6VGFyZ2V0SXNQcmVmZXRjaDsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlcmVu
ZGVyOgotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZXJlbmRlcjsK
LSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzVGV4dFRyYWNrOwot
I2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSZXNv
dXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7Ci19Ci0jZW5kaWYKLQotQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCi0gICAgOiBt
X2NhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKQotICAgICwgbV9yZXNv
dXJjZShyZXNvdXJjZSkKLSAgICAsIG1fbXVsdGlwYXJ0KGZhbHNlKQotICAgICwgbV9maW5pc2hp
bmcoZmFsc2UpCi17Ci19Ci0KLUNhY2hlZFJlc291cmNlUmVxdWVzdDo6fkNhY2hlZFJlc291cmNl
UmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fbG9hZGVyKQotICAgICAgICBtX2xvYWRlci0+Y2xlYXJD
bGllbnQoKTsKLX0KLQotUGFzc093blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJl
c291cmNlUmVxdWVzdDo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VM
b2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQotewotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IHJlcXVl
c3QgPSBhZG9wdFB0cihuZXcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9h
ZGVyLCByZXNvdXJjZSkpOwotCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9
IHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKTsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAg
ICBpZiAocmVzb3VyY2VSZXF1ZXN0LnRhcmdldFR5cGUoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlRh
cmdldElzVW5zcGVjaWZpZWQpCi0gICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRUYXJnZXRUeXBl
KGNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShyZXNvdXJjZS0+dHlwZSgpKSk7Ci0jZW5k
aWYKLQotICAgIGlmICghcmVzb3VyY2UtPmFjY2VwdCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVz
b3VyY2VSZXF1ZXN0LnNldEhUVFBBY2NlcHQocmVzb3VyY2UtPmFjY2VwdCgpKTsKLQotICAgIGlm
IChyZXNvdXJjZS0+aXNDYWNoZVZhbGlkYXRvcigpKSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZVRvUmV2YWxpZGF0ZSA9IHJlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgp
OwotICAgICAgICBBU1NFUlQocmVzb3VyY2VUb1JldmFsaWRhdGUtPmNhblVzZUNhY2hlVmFsaWRh
dG9yKCkpOwotICAgICAgICBBU1NFUlQocmVzb3VyY2VUb1JldmFsaWRhdGUtPmlzTG9hZGVkKCkp
OwotICAgICAgICBjb25zdCBTdHJpbmcmIGxhc3RNb2RpZmllZCA9IHJlc291cmNlVG9SZXZhbGlk
YXRlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiTGFzdC1Nb2RpZmllZCIpOwotICAgICAg
ICBjb25zdCBTdHJpbmcmIGVUYWcgPSByZXNvdXJjZVRvUmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5o
dHRwSGVhZGVyRmllbGQoIkVUYWciKTsKLSAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0
eSgpIHx8ICFlVGFnLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFJlc291
cmNlTG9hZGVyLT5jYWNoZVBvbGljeSgpICE9IENhY2hlUG9saWN5UmVsb2FkKTsKLSAgICAgICAg
ICAgIGlmIChjYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQb2xpY3koKSA9PSBDYWNoZVBvbGlj
eVJldmFsaWRhdGUpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPTAiKTsKLSAgICAgICAgICAgIGlmICgh
bGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZVJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGxhc3RNb2RpZmllZCk7Ci0g
ICAgICAgICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJlc291cmNl
UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIklmLU5vbmUtTWF0Y2giLCBlVGFnKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBpZiAocmVz
b3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoIHx8IHJlc291cmNl
LT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXIgfHwgcmVzb3VyY2UtPnR5
cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlKQotICAgICAgICByZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQdXJwb3NlIiwgInByZWZldGNoIik7Ci0jZW5k
aWYKLQotICAgIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gcmVzb3VyY2UtPmxvYWRQ
cmlvcml0eSgpOwotICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShwcmlvcml0eSk7Ci0K
LSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVk
dWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSwgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBwcmlvcml0
eSwgb3B0aW9ucyk7Ci0gICAgaWYgKCFsb2FkZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxT
dGF0ZSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBm
cmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KLSAgICAgICAgTE9HKFJl
c291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFydCBsb2FkaW5nICclcyciLCByZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKHJlc291cmNlLT5yZXNv
dXJjZVRvUmV2YWxpZGF0ZSgpKSAKLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJldmFsaWRh
dGlvbkZhaWxlZChyZXNvdXJjZSk7IAotICAgICAgICByZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OkxvYWRFcnJvcik7Ci0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPENhY2hlZFJlc291
cmNlUmVxdWVzdD4obnVsbHB0cik7Ci0gICAgfQotICAgIHJlcXVlc3QtPm1fbG9hZGVyID0gbG9h
ZGVyOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3Q6OndpbGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2Ut
PnR5cGUoKSwgcmVxLnVybCgpKSkgewotICAgICAgICBsb2FkZXItPmNhbmNlbCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChyZXEsIHJl
c3BvbnNlKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmNhbmNlbCgpCi17Ci0g
ICAgaWYgKG1fZmluaXNoaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgbV9sb2FkZXItPmNhbmNl
bCgpOwotfQotCi11bnNpZ25lZCBsb25nIENhY2hlZFJlc291cmNlUmVxdWVzdDo6aWRlbnRpZmll
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci19Ci0KLXZv
aWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQot
ewotICAgIGlmIChtX2xvYWRlcikKLSAgICAgICAgbV9sb2FkZXItPnNldERlZmVyc0xvYWRpbmco
ZGVmZXJzKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCi17Ci0gICAg
aWYgKG1fZmluaXNoaW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobG9hZGVyID09
IG1fbG9hZGVyLmdldCgpKTsKLSAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZh
bGlkYXRlKCkpOwotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZWNlaXZlZCAnJXMnLiIsIG1f
cmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0KLSAgICAvLyBQcmV2
ZW50IHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZCBiZWZvcmUgd2UgYXJlIGRvbmUg
d2l0aAotICAgIC8vIHRoZSBjYWNoZWRSZXNvdXJjZUxvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRl
IHdoZW4gdGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KLSAgICBSZWZQdHI8RG9jdW1lbnQ+IHBy
b3RlY3RvcihtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpKTsKLSAgICBpZiAoIW1f
bXVsdGlwYXJ0KQotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQobV9yZXNvdXJjZSk7Ci0gICAgbV9maW5pc2hpbmcgPSB0cnVlOwotCi0gICAgLy8g
SWYgd2UgZ290IGEgNHh4IHJlc3BvbnNlLCB3ZSdyZSBwcmV0ZW5kaW5nIHRvIGhhdmUgcmVjZWl2
ZWQgYSBuZXR3b3JrCi0gICAgLy8gZXJyb3IsIHNvIHdlIGNhbid0IHNlbmQgdGhlIHN1Y2Nlc3Nm
dWwgZGF0YSgpIGFuZCBmaW5pc2goKSBjYWxsYmFja3MuCi0gICAgaWYgKCFtX3Jlc291cmNlLT5l
cnJvck9jY3VycmVkKCkpIHsKLSAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+bG9hZEZp
bmlzaGluZygpOwotICAgICAgICBtX3Jlc291cmNlLT5zZXRMb2FkRmluaXNoVGltZShmaW5pc2hU
aW1lKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZGF0YShsb2FkZXItPnJlc291cmNlRGF0YSgpLCB0
cnVlKTsKLSAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAg
ICAgICBtX3Jlc291cmNlLT5maW5pc2goKTsKLSAgICB9Ci0gICAgZW5kKCk7Ci19Ci0KLXZvaWQg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgaWYgKG1fZmluaXNoaW5nIHx8ICFtX2xvYWRl
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCBjYW5jZWxsZWQgPSBlcnJvci5pc0NhbmNl
bGxhdGlvbigpOwotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJGYWlsZWQgdG8gbG9hZCAnJXMn
IChjYW5jZWxsZWQ9JWQpLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpLCBjYW5jZWxsZWQpOwotCi0gICAgLy8gUHJldmVudCB0aGUgZG9jdW1lbnQgZnJvbSBi
ZWluZyBkZXN0cm95ZWQgYmVmb3JlIHdlIGFyZSBkb25lIHdpdGgKLSAgICAvLyB0aGUgY2FjaGVk
UmVzb3VyY2VMb2FkZXIgdGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRz
IGRlbGV0ZWQuCi0gICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3IobV9jYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZG9jdW1lbnQoKSk7Ci0gICAgaWYgKCFtX211bHRpcGFydCkKLSAgICAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOwot
ICAgIG1fZmluaXNoaW5nID0gdHJ1ZTsKLSAgICBtX2xvYWRlci0+Y2xlYXJDbGllbnQoKTsKLQot
ICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKQotICAgICAgICBtZW1v
cnlDYWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7Ci0KLSAgICBpZiAoIWNh
bmNlbGxlZCkgewotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRmluaXNoaW5n
KCk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3Ip
OwotICAgIH0KLQotICAgIGlmIChjYW5jZWxsZWQgfHwgIW1fcmVzb3VyY2UtPmlzUHJlbG9hZGVk
KCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlKTsKLSAgICAKLSAg
ICBlbmQoKTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNw
b25zZShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKLXsKLSAgICBBU1NFUlQobG9hZGVyID09IG1fbG9hZGVyLmdldCgpKTsKLSAgICBp
ZiAobV9yZXNvdXJjZS0+aXNDYWNoZVZhbGlkYXRvcigpKSB7Ci0gICAgICAgIGlmIChyZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2Rp
ZmllZCAvIFVzZSBsb2NhbCBjb3B5Ci0gICAgICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7
Ci0gICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3RvcihtX2NhY2hlZFJlc291cmNl
TG9hZGVyLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChtX3Jlc291cmNlKTsKLSAgICAgICAgICAgIG1fZmluaXNo
aW5nID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1
c3QgdXNlIGl0IHVwZGF0aW5nIHRoZSBleHBpcmF0aW9uIHRpbWUuCi0gICAgICAgICAgICBtZW1v
cnlDYWNoZSgpLT5yZXZhbGlkYXRpb25TdWNjZWVkZWQobV9yZXNvdXJjZSwgcmVzcG9uc2UpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJh
bWUoKSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpLT5s
b2FkZXIoKS0+Y2hlY2tDb21wbGV0ZWQoKTsKLQotICAgICAgICAgICAgZW5kKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0gCi0gICAgICAgIC8vIERpZCBub3QgZ2V0IDMwNCByZXNw
b25zZSwgY29udGludWUgYXMgYSByZWd1bGFyIHJlc291cmNlIGxvYWQuCi0gICAgICAgIG1lbW9y
eUNhY2hlKCktPnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKLSAgICB9Ci0KLSAgICAv
LyBzZXRSZXNwb25zZSgpIG1pZ2h0IGNhbmNlbCB0aGUgcmVxdWVzdCwgc28gd2UgbmVlZCB0byBr
ZWVwIG91cnNlbHZlcyBhbGl2ZS4gVW5mb3J0dW5hdGVseSwKLSAgICAvLyB3ZSBjYW4ndCBwcm90
ZWN0IGEgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LCBidXQgd2UgY2FuIHByb3RlY3QgbV9yZXNvdXJj
ZSwgd2hpY2ggaGFzIHRoZQotICAgIC8vIHBvd2VyIHRvIGtpbGwgdGhlIENhY2hlZFJlc291cmNl
UmVxdWVzdCAoYW5kIHdpbGwgc3dpdGNoIGlzTG9hZGluZygpIHRvIGZhbHNlIGlmIGl0IGRvZXMg
c28pLgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90ZWN0KG1f
cmVzb3VyY2UpOwotICAgIG1fcmVzb3VyY2UtPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBp
ZiAoIXByb3RlY3QtPmlzTG9hZGluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcg
ZW5jb2RpbmcgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0gICAgaWYgKCFlbmNvZGlu
Zy5pc051bGwoKSkKLSAgICAgICAgbV9yZXNvdXJjZS0+c2V0RW5jb2RpbmcoZW5jb2RpbmcpOwot
ICAgIAotICAgIGlmIChtX211bHRpcGFydCkgewotICAgICAgICBBU1NFUlQobV9yZXNvdXJjZS0+
aXNJbWFnZSgpKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihtX3Jlc291cmNl
KS0+Y2xlYXIoKTsKLSAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkp
Ci0gICAgICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+
Y2hlY2tDb21wbGV0ZWQoKTsKLSAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
IHsKLSAgICAgICAgbV9tdWx0aXBhcnQgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgLy8gV2Ug
ZG9uJ3QgY291bnQgbXVsdGlQYXJ0cyBpbiBhIENhY2hlZFJlc291cmNlTG9hZGVyJ3MgcmVxdWVz
dCBjb3VudAotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQobV9yZXNvdXJjZSk7Ci0KLSAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbXVsdGlwYXJ0IHJl
c3BvbnNlLCB3ZSBtdXN0IGhhdmUgYSBoYW5kbGUKLSAgICAgICAgQVNTRVJUKGxvYWRlci0+aGFu
ZGxlKCkpOwotICAgICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkKLSAgICAgICAgICAg
IGxvYWRlci0+aGFuZGxlKCktPmNhbmNlbCgpOwotICAgIH0KLX0KLQotdm9pZCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQotewotICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2Fk
ZXIuZ2V0KCkpOwotICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+aXNDYWNoZVZhbGlkYXRvcigpKTsK
LSAgICAKLSAgICBpZiAobV9yZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49
IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSkg
ewotICAgICAgICAvLyBQcmV2ZW50IHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZCBi
ZWZvcmUgd2UgYXJlIGRvbmUgd2l0aAotICAgICAgICAvLyB0aGUgY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgdGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCi0g
ICAgICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdG9yKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRvY3VtZW50KCkpOwotICAgICAgICBpZiAoIW1fbXVsdGlwYXJ0KQotICAgICAgICAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOwot
ICAgICAgICBtX2ZpbmlzaGluZyA9IHRydWU7Ci0gICAgICAgIG1fbG9hZGVyLT5jbGVhckNsaWVu
dCgpOwotICAgICAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9y
KTsKLSAgICAgICAgZW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGVy
ZSBhcmUgdHdvIGNhc2VzIHdoZXJlIHdlIG1pZ2h0IG5lZWQgdG8gY3JlYXRlIG91ciBvd24gU2hh
cmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyB0aGUgb25lIGluIFJlc291cmNlTG9hZGVyLgot
ICAgIC8vICgxKSBNdWx0aXBhcnQgY29udGVudDogVGhlIGxvYWRlciBkZWxpdmVycyB0aGUgZGF0
YSBpbiBhIG11bHRpcGFydCBzZWN0aW9uIGFsbCBhdCBvbmNlLCB0aGVuIHNlbmRzIGVvZi4KLSAg
ICAvLyAgICAgVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBp
cyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCi0gICAgLy8gKDIpIE91ciBjbGll
bnQgcmVxdWVzdGVkIHRoYXQgdGhlIGRhdGEgbm90IGJlIGJ1ZmZlcmVkIGF0IHRoZSBSZXNvdXJj
ZUxvYWRlciBsZXZlbCB2aWEgUmVzb3VyY2VMb2FkZXJPcHRpb25zLiBJbiB0aGlzIGNhc2UsCi0g
ICAgLy8gICAgIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSB3aWxsIGJlIG51bGwuIEhv
d2V2ZXIsIHVubGlrZSB0aGUgbXVsdGlwYXJ0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0
aGUgQ2FjaGVkUmVzb3VyY2UKLSAgICAvLyAgICAgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiByZWNl
aXZlZCB5ZXQuCi0gICAgaWYgKG1fbXVsdGlwYXJ0IHx8ICFsb2FkZXItPnJlc291cmNlRGF0YSgp
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcGllZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZGF0YShjb3BpZWRE
YXRhLnJlbGVhc2UoKSwgbV9tdWx0aXBhcnQpOwotICAgIH0gZWxzZQotICAgICAgICBtX3Jlc291
cmNlLT5kYXRhKGxvYWRlci0+cmVzb3VyY2VEYXRhKCksIGZhbHNlKTsKLX0KLQotdm9pZCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxv
YWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQotewotICAgIEFTU0VSVCghbV9yZXNv
dXJjZS0+aXNDYWNoZVZhbGlkYXRvcigpKTsKLSAgICBtX3Jlc291cmNlLT5zZXRTZXJpYWxpemVk
Q2FjaGVkTWV0YWRhdGEoZGF0YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0OjpkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCi17Ci0gICAg
bV9yZXNvdXJjZS0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwot
fQotCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZW5kKCkKLXsKLSAgICBtX2NhY2hlZFJl
c291cmNlTG9hZGVyLT5sb2FkRG9uZSgpOwotICAgIG1fcmVzb3VyY2UtPnN0b3BMb2FkaW5nKCk7
Ci19Ci0KLX0gLy9uYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTAwMjky
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAx
OTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCi0gICAgQ29weXJpZ2h0IChDKSAy
MDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2lmbmRlZiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RfaAotI2RlZmluZSBDYWNoZWRSZXNvdXJjZVJl
cXVlc3RfaAotCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCi0jaW5jbHVk
ZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIENhY2hlZFJlc291cmNlOwotICAgIGNs
YXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwotICAgIGNsYXNzIFJlc291cmNlRXJyb3I7Ci0gICAg
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci0gICAg
Y2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7Ci0KLSAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QgOiBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gbG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJik7Ci0gICAgICAgIH5DYWNoZWRSZXNvdXJjZVJlcXVlc3QoKTsKLQotICAgICAgICBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFJlc291cmNlTG9hZGVyOyB9Ci0gICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0KLSAgICAg
ICAgLy8gRklYTUU6IExpa2UgQ2FjaGVkUmVzb3VyY2U6OmlkZW50aWZpZXIoKSwgdGhpcyBpcyBh
IGxhbWUgaGFjayBmb3IgcHJlZmxpZ2h0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBpbiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigp
IGNvbnN0OwotCi0gICAgICAgIC8vIEZJWE1FOiBTZWUgQ2FjaGVkUmF3UmVzb3VyY2U6OnNldERl
ZmVyc0xvYWRpbmcoKSBmb3IgdGhlIHJlbGV2YW50IHJhbnQuCi0gICAgICAgIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhib29sKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlKik7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVy
KiwgZG91YmxlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZvaWQgZW5kKCk7Ci0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNU
b0JlU2VudCovKTsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZERvd25sb2FkRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGludCk7Ci0jZW5kaWYKLQotICAg
ICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKLSAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIG1fcmVzb3VyY2U7Ci0gICAgICAgIGJvb2wgbV9tdWx0aXBhcnQ7Ci0gICAgICAgIGJv
b2wgbV9maW5pc2hpbmc7Ci0gICAgfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAJKHJldmlzaW9uIDEw
MDI5MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxv
YWRlckNsaWVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBIQVZFKE5FVFdPUktf
Q0ZEQVRBX0FSUkFZX0NBTExCQUNLKQpAQCAtNDYsNyArNDQsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFyCiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSByZWludGVy
cHJldF9jYXN0PENGRGF0YVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChkYXRhQXJyYXksIGkp
KTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSksIHN0YXRpY19jYXN0
PGludD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpKSk7CisgICAgICAgICAgICBkaWRSZWNlaXZlRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSks
IHN0YXRpY19jYXN0PGludD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpKSwgLTEsIGZhbHNlKTsKICAg
ICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jaHJvbWl1bS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2Nocm9taXVtL0NhY2hlZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcAko
cmV2aXNpb24gMTAwMjkyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nocm9taXVtL0NhY2hl
ZFJlc291cmNlUmVxdWVzdENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
IAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCIKLQotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiU3VicmVzb3Vy
Y2VMb2FkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6ZGlkRG93bmxvYWREYXRhKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGludCBs
ZW5ndGgpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRlciA9PSBtX2xvYWRlcik7
Ci0gICAgbV9yZXNvdXJjZS0+ZGlkRG93bmxvYWREYXRhKGxlbmd0aCk7Ci19Ci0KLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jaHJvbWl1bS9TdWJyZXNvdXJjZUxvYWRlckNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2hyb21pdW0vU3VicmVz
b3VyY2VMb2FkZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwMDI5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jaHJvbWl1bS9TdWJyZXNvdXJjZUxvYWRlckNocm9taXVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlN1YnJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw5ICs0Myw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZERvd25sb2FkRGF0YSgKICAgICBSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXI6
OmRpZERvd25sb2FkRGF0YShsZW5ndGgpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+ZGlkRG93bmxvYWREYXRhKHRoaXMsIGxlbmd0aCk7CisgICAgbV9yZXNvdXJjZS0+
ZGlkRG93bmxvYWREYXRhKGxlbmd0aCk7CiB9CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDI5
MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDExLTEwLTI4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgVGVzdCB1ZHBhdGVzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzExNDkuCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIFN1YnJlc291cmNlTG9hZGVyIHNs
aWdodGx5IGNoYW5nZSB0aGUgdGltaW5ncyBvZgorICAgICAgICBjZXJ0YWluIHJlc291cmNlIGxv
YWQgY2FsbGJhY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzExNDkKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAg
ICogZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0tY2ctbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9zZWN1cml0eS9ibG9jay10
ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vc2VjdXJp
dHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
aW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVkLXN1YnJl
c291cmNlLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0xMS0xNSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIGVuYWJsZSBuZXcgZmxleGJveCB0ZXN0cyBldmVyeXdoZXJl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9maWxlLXByb3RvY29sLWZyYWdtZW50LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9maWxlLXBy
b3RvY29sLWZyYWdtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTAwMjkyKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsNCArNCw1IEBAIHJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyAtIHdp
bGxTZW5kUmVxdWUKIHJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyAtIGRpZFJlY2VpdmVSZXNwb25z
ZSA8TlNVUkxSZXNwb25zZSByZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MsIGh0dHAgc3RhdHVzIGNv
ZGUgMD4KIHJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyAtIGRpZEZpbmlzaExvYWRpbmcKIHJlc291
cmNlcy9zdHlsZXNoZWV0LmNzcyAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBy
ZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MsIGh0dHAgc3RhdHVzIGNvZGUgMD4KK3Jlc291cmNlcy9z
dHlsZXNoZWV0LmNzcyAtIGRpZEZpbmlzaExvYWRpbmcKIFRoaXMgdGVzdHMgdGhhdCBmaWxlOiBV
UkwgYXJlIGxvYWRlZCBzZXBhcmF0ZWx5IGV2ZW4gaWYgdGhleSBkaWZmZXIgYnkgdGhlIGZyYWdt
ZW50IG9ubHkuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1jZy1tYWMvc2Vj
dXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tY2ctbWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMDAyOTIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1jZy1t
YWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGcgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBn
LCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIDx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKLWh0dHA6
Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQg
VVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChu
dWxsKQogaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdX
aXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZh
aWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5qcGciPgoraHR0cDovLzI1
NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3Qg
VVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwg
YmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGlu
ZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1
NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwg
aHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9j
ay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0
dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9y
OiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVS
TCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIj4KSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvc2VjdXJpdHkv
YmxvY2stdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwMDI5MikKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90
ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1
NS4yNTUuMjU1OjEvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwg
aHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogPHVua25vd24+IC0gZGlk
RmluaXNoTG9hZGluZwotaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0
LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjEvdGVzdC5q
cGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9y
RG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90
ZXN0LmpwZyI+CitodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGcgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBn
LCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAt
IGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21h
aW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3Qu
anBnIj4KIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVz
dCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcsIG1h
aW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVj
dFJlc3BvbnNlIChudWxsKQogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBnIC0gZGlk
RmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRFcnJvckRvbWFpbiwg
Y29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGci
PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3NlY3VyaXR5L2Jsb2Nr
LXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9zZWN1cml0eS9ibG9jay10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTAw
MjkyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3NlY3VyaXR5L2Jsb2Nr
LXRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogaHR0cDov
LzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVl
c3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6MS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBV
UkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51
bGwpCiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCi1odHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjcvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1
NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0
bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8yNTUu
MjU1LjI1NS4yNTU6MS90ZXN0LmpwZyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJv
ciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDov
LzI1NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnIj4KK2h0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90
ZXN0LmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1
NS4yNTUuMjU1OjcvdGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwg
aHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzI1NS4yNTUu
MjU1LjI1NTo3L3Rlc3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRv
bWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1
LjI1NS4yNTUuMjU1OjcvdGVzdC5qcGciPgogaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3Qu
anBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1
NS4yNTU6OS90ZXN0LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRw
IG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMjU1LjI1NS4yNTUu
MjU1OjkvdGVzdC5qcGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWlu
IFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1
LjI1NS4yNTU6OS90ZXN0LmpwZyI+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJy
b2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwMDI5MikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1k
ZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIHJlc291
cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm0KIDx1bmtub3duPiAtIGRpZEZpbmlz
aExvYWRpbmcKIHJlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcg
LSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgcmVzb3VyY2VzL2Jyb2tlbi1pbWFn
ZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgogcmVzb3VyY2Vz
L2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAtIHNob3VsZFBhaW50QnJva2Vu
SW1hZ2U6IE5PCityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5n
IC0gZGlkRmluaXNoTG9hZGluZwogUmFkYXIgODYxMDkwOCAtIEFkZCBhIHJlc291cmNlIGRlbGVn
YXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgYnJva2VuIGlt
YWdlLgogCiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxv
Y2stdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3NlY3VyaXR5L2Jsb2NrLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDAyOTIpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc2VjdXJpdHkvYmxvY2stdGVzdC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjEvdGVzdC5qcGcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1
NS4yNTUuMjU1LjI1NToxL3Rlc3QuanBnLCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0
bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIDx1bmtub3duPiAt
IGRpZEZpbmlzaExvYWRpbmcKLWh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0LmpwZyAtIHdp
bGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMjU1LjI1NS4yNTUuMjU1Ojcv
dGVzdC5qcGcsIG1haW4gZG9jdW1lbnQgVVJMIGJsb2NrLXRlc3QuaHRtbCwgaHR0cCBtZXRob2Qg
R0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzI1NS4yNTUuMjU1LjI1NToxL3Rl
c3QuanBnIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBXZWJLaXRF
cnJvckRvbWFpbiwgY29kZSAxMDMsIGZhaWxpbmcgVVJMICJodHRwOi8vMjU1LjI1NS4yNTUuMjU1
OjEvdGVzdC5qcGciPgoraHR0cDovLzI1NS4yNTUuMjU1LjI1NTo3L3Rlc3QuanBnIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90ZXN0
LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgYmxvY2stdGVzdC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjcvdGVzdC5q
cGcgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9y
RG9tYWluLCBjb2RlIDEwMywgZmFpbGluZyBVUkwgImh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6Ny90
ZXN0LmpwZyI+CiBodHRwOi8vMjU1LjI1NS4yNTUuMjU1OjkvdGVzdC5qcGcgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3QuanBn
LCBtYWluIGRvY3VtZW50IFVSTCBibG9jay10ZXN0Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8yNTUuMjU1LjI1NS4yNTU6OS90ZXN0LmpwZyAt
IGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21h
aW4sIGNvZGUgMTAzLCBmYWlsaW5nIFVSTCAiaHR0cDovLzI1NS4yNTUuMjU1LjI1NTo5L3Rlc3Qu
anBnIj4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJhcmNoaXZlL2xvYWRpbmcv
Y2FjaGUtZXhwaXJlZC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVkLXN1
YnJlc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTAwMjkyKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3dlYmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVkLXN1YnJlc291cmNl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsNyBAQCBodHRwOi8vbG9j
YWxob3N0L3BpbmstYnVsbGV0LnBuZyAtIHdpbGxTCiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIHJlc291cmNl
cy9jYWNoZS1leHBpcmVkLXN1YnJlc291cmNlLndlYmFyY2hpdmUgLSBkaWRGaW5pc2hMb2FkaW5n
CiBodHRwOi8vbG9jYWxob3N0L3BpbmstYnVsbGV0LnBuZyAtIGRpZFJlY2VpdmVSZXNwb25zZSA8
TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxob3N0L3Rlc3QucGhwLCBodHRwIHN0YXR1cyBjb2Rl
IDIwMD4KK2h0dHA6Ly9sb2NhbGhvc3QvcGluay1idWxsZXQucG5nIC0gZGlkRmluaXNoTG9hZGlu
ZwogZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUKIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUKSW5kZXg6IExheW91dFRlc3RzL3dlYmFyY2hpdmUvbG9hZGluZy90ZXN0
LWxvYWRpbmctYXJjaGl2ZS1zdWJyZXNvdXJjZS1udWxsLW1pbWV0eXBlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhcmNoaXZlL2xvYWRpbmcvdGVzdC1sb2FkaW5n
LWFyY2hpdmUtc3VicmVzb3VyY2UtbnVsbC1taW1ldHlwZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDEwMDI5MikKKysrIExheW91dFRlc3RzL3dlYmFyY2hpdmUvbG9hZGluZy90ZXN0LWxvYWRpbmct
YXJjaGl2ZS1zdWJyZXNvdXJjZS1udWxsLW1pbWV0eXBlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTAsNiArMTAsNyBAQCBmaWxlOi8vL3Rlc3QucG5nIC0gd2lsbFNlbmRSZXF1ZXN0
IDxOU1VSCiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIHJlc291cmNlcy9zdWJyZXNvdXJjZS1udWxsLW1pbWV0
eXBlLndlYmFyY2hpdmUgLSBkaWRGaW5pc2hMb2FkaW5nCiBmaWxlOi8vL3Rlc3QucG5nIC0gZGlk
UmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGZpbGU6Ly8vVXNlcnMvcGVjb3Jhcm8vRGVz
a3RvcC90ZXN0LnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgorZmlsZTovLy90ZXN0LnBuZyAtIGRp
ZEZpbmlzaExvYWRpbmcKIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIg
LSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>