<?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>34188</bug_id>
          
          <creation_ts>2010-01-26 16:04:31 -0800</creation_ts>
          <short_desc>SVG consumes way too much memory to store animated properties in the DOM</short_desc>
          <delta_ts>2010-01-26 17:53:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>staikos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184807</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-26 16:04:31 -0800</bug_when>
    <thetext>The summary says it all. We&apos;re using a ridiciolous amount of memory for simple classes like SVGRectElement. Each SVGAnimatedProperty stores a pointer back to the SVG*Element which owns it - this is just needed for the bindings, and can be reworked in a different way, that does not consume memory :-)

Believe it or not, the upcoming patch will cut WebCore library size to 70% and reduces the SVG memory consumption to &lt;25% of the current amount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184837</commentid>
    <comment_count>1</comment_count>
      <attachid>47466</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-26 17:05:42 -0800</bug_when>
    <thetext>Created attachment 47466
Patch v1 - Part 1/2 (actual patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184839</commentid>
    <comment_count>2</comment_count>
      <attachid>47467</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-26 17:06:34 -0800</bug_when>
    <thetext>Created attachment 47467
Patch v1 - Part 2/2 (boring changes to all SVG*Element files)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184841</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-26 17:08:28 -0800</bug_when>
    <thetext>Attachment 47466 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/svg/SVGElement.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/svg/SVGElement.h:112:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/svg/SVGPolyElement.cpp:96:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/svg/SVGPolyElement.cpp:97:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Skipping input &apos;WebCore/svg/SynchronizablePropertyController.h&apos;: Can&apos;t open for reading
WebCore/svg/SVGAnimatedPropertySynchronizer.h:28:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/svg/SVGAnimatedPropertyTraits.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Skipping input &apos;WebCore/svg/SynchronizablePropertyController.cpp&apos;: Can&apos;t open for reading
Skipping input &apos;WebCore/svg/SynchronizableTypeWrapper.h&apos;: Can&apos;t open for reading
Total errors found: 6


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184845</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-26 17:10:01 -0800</bug_when>
    <thetext>Attachment 47467 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/svg/SVGFEDiffuseLightingElement.h:50:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184858</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-26 17:28:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 47466 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebCore/svg/SVGElement.h:27:  Alphabetical sorting problem. 
&gt; [build/include_order] [4]
&gt; WebCore/svg/SVGElement.h:112:  Alphabetical sorting problem. 
&gt; [build/include_order] [4]
&gt; WebCore/svg/SVGPolyElement.cpp:96:  Boolean expressions that span multiple
&gt; lines should have their operators on the left side of the line instead of the
&gt; right side.  [whitespace/operators] [4]
&gt; WebCore/svg/SVGPolyElement.cpp:97:  Boolean expressions that span multiple
&gt; lines should have their operators on the left side of the line instead of the
&gt; right side.  [whitespace/operators] [4]
&gt; Skipping input &apos;WebCore/svg/SynchronizablePropertyController.h&apos;: Can&apos;t open for
&gt; reading
&gt; WebCore/svg/SVGAnimatedPropertySynchronizer.h:28:  Code inside a namespace
&gt; should not be indented.  [whitespace/indent] [4]
&gt; WebCore/svg/SVGAnimatedPropertyTraits.h:36:  Code inside a namespace should not
&gt; be indented.  [whitespace/indent] [4]
&gt; Skipping input &apos;WebCore/svg/SynchronizablePropertyController.cpp&apos;: Can&apos;t open
&gt; for reading
&gt; Skipping input &apos;WebCore/svg/SynchronizableTypeWrapper.h&apos;: Can&apos;t open for
&gt; reading
&gt; Total errors found: 6

Fixed all errors except the one in SVGElement.h:112, the include is required to be below the SVGElement declarations.

Also fixed the tab in SVGFEDiffuseLightingElement.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184859</commentid>
    <comment_count>6</comment_count>
      <attachid>47466</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-26 17:33:46 -0800</bug_when>
    <thetext>Comment on attachment 47466
Patch v1 - Part 1/2 (actual patch)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184863</commentid>
    <comment_count>7</comment_count>
      <attachid>47467</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-26 17:38:58 -0800</bug_when>
    <thetext>Comment on attachment 47467
Patch v1 - Part 2/2 (boring changes to all SVG*Element files)

In all of the updated constructors you have removed member initialisers for float types which is not cool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184864</commentid>
    <comment_count>8</comment_count>
      <attachid>47467</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-26 17:43:07 -0800</bug_when>
    <thetext>Comment on attachment 47467
Patch v1 - Part 2/2 (boring changes to all SVG*Element files)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184874</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-26 17:53:48 -0800</bug_when>
    <thetext>Thanks for the quick review. Landed in r53879.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47466</attachid>
            <date>2010-01-26 17:05:42 -0800</date>
            <delta_ts>2010-01-26 17:33:45 -0800</delta_ts>
            <desc>Patch v1 - Part 1/2 (actual patch)</desc>
            <filename>SVGMemPatch.diff</filename>
            <type>text/plain</type>
            <size>134919</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzg3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQzIEBACisyMDEwLTAxLTI2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVy
bWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNWRyBjb25zdW1lcyB3YXkgdG9vIG11Y2ggbWVtb3J5IHRvIHN0b3JlIGFuaW1hdGVk
IHByb3BlcnRpZXMgaW4gdGhlIERPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzQxODgKKworICAgICAgICBTaHJpbmsgV2ViQ29yZSBsaWJyYXJ5IHNp
emUgdG8gNzUlIChtZWFzdXJlZCBpbiBkZWJ1ZyBidWlsZHMpIGFuZCByZWR1Y2UgU1ZHIG1lbW9y
eSB1c2FnZSB0byA8MjUlLgorICAgICAgICBBZGRpbmcgT2xpdmVyIHRlc3RjYXNlIGFzIG1hbnVh
bC10ZXN0cy9zdmctbm9kZS1jb3VudC12cy1zY3JvbGwueGh0bWwsIHdoaWNoIGNyZWF0ZXMgYW4g
YXJiaXRhcnkgbnVtYmVyIG9mCisgICAgICAgIHJlY3RzICg1MC4wMDAgPHJlY3Q+IGVsZW1lbnRz
IGFkZGVkIHRvIHRoZSBET00gYnkgZGVmYXVsdCkgLSBtZW1vcnkgdXNhZ2UgZG93biB0byAxMTFN
IGZyb20gNTAzTSAoUlBSVlQpLgorICAgICAgICBUaGUgU1ZHIERPTSBzaWRlIGlzIGFsbW9zdCBm
aW5lLCBzdGlsbCBzb21lIG9wdGltaXphdGlvbnMgcG9zc2libGUsIHRoYXQgd2lsbCBiZSBpbXBs
ZW1lbnRlZCBzb29uIC0gbmV4dAorICAgICAgICB0YXJnZXQgaXMgdGhlIFNWRyByZW5kZXIgdHJl
ZSwgdGhlcmUgYXJlIHBsZW50eSBvZiBwb3NzaWJpbGl0aWVzIHRvIHJlZHVjZSBtZW1vcnkgdXNh
Z2UgdGhlcmUuCisKKyAgICAgICAgUmVkZXNpZ24gdGhlIHdheSB3ZSBzdG9yZSBhbmltYXRlZCBw
cm9wZXJ0aWVzIGluIHRoZSBpbmRpdmlkdWFsIFNWRypFbGVtZW50IGZpbGVzLiBTaG9ydCBzdG9y
eTogSW4gb3JkZXIKKyAgICAgICAgdG8gc3VwcG9ydCBTVkcgRE9NIHRocm91Z2ggdGhlIGJpbmRp
bmdzIChlLmcuIEpTKSB3ZSBuZWVkIHRvIGFzc29jaWF0ZSBTVkdBbmltYXRlZFByb3BlcnR5IG9i
amVjdHMgd2l0aAorICAgICAgICB0aGUgU1ZHRWxlbWVudCBvYmplY3QgdGhhdCBjcmVhdGVkIGl0
IC0gd2UgdXNlZCB0byBzdG9yZSB0aGlzIHBvaW50ZXIgZGlyZWN0bHkgaW4gdGhlIFNWR0FuaW1h
dGVkUHJvcGVydHkuCisgICAgICAgIFRoaXMgbWVhbnMsIGV2ZXJ5IFNWR0FuaW1hdGVkUHJvcGVy
dHkgc3RvcmVkIGluIGEgU1ZHUmVjdEVsZW1lbnQsIHN0b3JlZCBhIHBvaW50ZXIgdG8gdGhlIFNW
R1JlY3RFbGVtZW50LCByZXN1bHRpbmcKKyAgICAgICAgaW4gZXhjZXNzaXZlIG1lbW9yeSB1c2Fn
ZS4gVGhpcyBpcyBub3cgcHJvcGVybHkgaW1wbGVtZW50ZWQsIHdpdGhvdXQgd2FzdGluZyB0b25z
IG9mIG1lbW9yeS4gVW5mb3J0dW5hdGVseSB0aGlzCisgICAgICAgIHJlcXVpcmVzIHRvdWNoaW5n
IGFsbCBTVkcqRWxlbWVudCBmaWxlcy4KKworICAgICAgICBEZXRhaWxlZCBsaXN0IG9mIGNoYW5n
ZXM6CisgICAgICAgIC0gUmVtb3ZlIHRlbXBsYXRlIGJsb2F0IGJ5IG5vdCBzcGVjaWFsaXppbmcg
Y2xhc3MgdGVtcGxhdGVzIGZvciBlYWNoIGF0dHJpYnV0ZU5hbWUvdGFnTmFtZSBjb21iaW5hdGlv
bi4gSW5zdGVhZAorICAgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkgaXMgYSBub24tc3BlY2lh
bGl6ZWQgdGVtcGxhdGUgY2xhc3Mgbm93LCBvbmx5IGRlcGVuZGluZyBvbiB0aGUgQW5pbWF0ZWRU
eXBlIChpZS4gU1ZHTGVuZ3RoIGZvciBTVkdBbmltYXRlZExlbmd0aCkKKyAgICAgICAgICAtPiBU
aGlzIGhlYXZpbHkgcmVkdWNlcyB0aGUgZ2VuZXJhdGVkIGNvZGUsIHRodXMgc2hyaW5raW5nIFdl
YkNvcmUgc2l6ZS4gSSBob3BlIHdlIGNhbiBidWlsZCB3aW5kb3dzIGFnYWluIHdpdGhvdXQgU1ZH
QWxsSW5PbmUuY3BwCisKKyAgICAgICAgLSBSZW1vdmUgImV4cG9ydFN0cmluZ3MiIC8gImV4cG9y
dFN0cmluZyIgaGFuZGxpbmcgZnJvbSBtYWtlX25hbWVzLnBsIC0gU1ZHIGRlZmluZWQgc3RyaW5n
IGxpdGVyYWxzIGZvciBlYWNoIFF1YWxpZmllZE5hbWUsCisgICAgICAgICAgaW4gb3JkZXIgdG8g
dXNlIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGJhc2VkIG9uICJjb25zdCBjaGFyKiIgcGFyYW1l
dGVycy4gQWxsIHRoYXQgYmxvYXQgaXMgZ29uZSwgc28gdGhlcmUncyBubyBuZWVkIGZvciBpdCBh
bnltb3JlLgorCisgICAgICAgIC0gUmVkZXNpZ24gU1ZHQW5pbWF0ZWRQcm9wZXJ0eSBzbyBpdCBk
b2VzIG5vdCBuZWVkIGFueSBiYWNrLXBvaW50ZXJzIHRvIHRoZSBTVkdFbGVtZW50IHRoYXQgY3Jl
YXRlZCBpdAorCisgICAgICAgIC0gRG9uJ3QgYWN0dWFsbHkgc3RvcmUgdGhlIFhNTCBET00gYXR0
cmlidXRlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGEgU1ZHIERPTSBwcm9wZXJ0eSBpbiBTVkdBbmlt
YXRlZFByb3BlcnR5LCBtb3ZlIHRoZSBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpCisgICAgICAg
ICAgZnVuY3Rpb24gaW5zaWRlIHRoZSBtYWNybyBkZWNsYXJhdGlvbiBhbmQganVzdCByZXR1cm4g
dGhlIHBhc3NlZCBtYWNybyBwYXJhbWV0ZXIgRE9NQXR0cmlidXRlIHRoZXJlLCBzdG9yaW5nIGlz
IGluZWZmaWNpZW50IGFuZCB1c2VsZXNzLgorCisgICAgICAgIC0gUmVtb3ZlIFN5bmNocm9uaXph
YmxlUHJvcGVydHlDb250cm9sbGVyLCB3aGljaCB3YXMgbGl2aW5nIGluIFNWR0VsZW1lbnQgYXMg
bWVtYmVyIHZhcmlhYmxlLCBrZWVwaW5nIGEgSGFzaE1hcDxBdHRyaWJ1dGVOYW1lLCBTVkdBbmlt
YXRlZFByb3BlcnR5Pi4KKyAgICAgICAgICBJdCB3YXMgbmVlZGVkIGJlZm9yZSB0byBsb29rdXAg
YSBTVkdBbmltYXRlZFByb3BlcnR5IGZvciBhIFhNTCBET00gYXR0cmlidXRlLCBpbiBvcmRlciB0
byBzeW5jaHJvbml6ZSBTVkcgPC0+IFhNTCBkb20gcHJvcGVydGllcy9hdHRyaWJ1dGVzLgorICAg
ICAgICAgIEluc3RlYWQganVzdCBhZGQgYSAic3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJikiIG1ldGhvZCB0byBhbGwgU1ZHKkVsZW1lbnQgY2xhc3Nlcy4gQXMgZWFjaCBT
VkcqRWxlbWVudCBjbGFzcyBrbm93cyBhYm91dCBpdHMKKyAgICAgICAgICBhbmltYXRlZCBwcm9w
ZXJ0aWVzIGl0IGNhbiBqdXN0IGFzayB0aGVtIHRvIHN5bmNocm9uaXplIHRoZW1zZWx2ZXMgLSBu
byBuZWVkIGZvciBhbnkgZHluYW1pYyBsb29rdXBzIGFueW1vcmUuCisKKyAgICAgICAgLSBSZW1v
dmUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlciB3aGljaCBhZGRlZCBtb3JlIGNvbXBsZXhpdHkg
Zm9yIHRoZSBzYWtlIG9mIFNWRyA8LT4gWE1MIERPTSBzeW5jaHJvbml6YXRpb24sIGFsbCByZXBs
YWNlZCBieSBzeW5jaHJvbml6ZVByb3BlcnR5LgorCisgICAgICAgIC0gUGFzcyBhcm91bmQgYW55
IFBPRCBvYmplY3RzIGFzIGNvbnN0IHJlZmVyZW5jZXMsIGluc3RlYWQgb2YgY29weWluZyB0aGVt
IGZvciBubyByZWFzb24uCisKKyAgICAgICAgLSBDbGVhbiB1cCBTVkdBbmltYXRlZFByb3BlcnR5
LCBzcGxpdHRpbmcgdXAgaW50byBTVkdBbmltYXRlZFByb3BlcnR5L1Byb3BlcnR5U3luY2hyb25p
emVyL1Byb3BlcnR5VHJhaXRzLgorCisgICAgICAgIC0gUmVtb3ZlIGJhc2VWYWx1ZS9zZXRCYXNl
VmFsdWUgY29kZSBmcm9tIFNWR0RvY3VtZW50RXh0ZW5zaW9ucywgbm90IG5lZWRlZCBhbnltb3Jl
LgorCisgICAgICAgIC4uLiBhbmQgdG9ucyBvZiBjaGFuZ2VzIHRvIGFsbCBTVkcqRWxlbWVudCBj
bGFzc2VzLCBhZGFwdGluZyB0byB0aGUgbmV3IHdheSBvZiBoYW5kbGluZyBhbmltYXRlZCBwcm9w
ZXJ0aWVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSBTeW5jaHJvbml6YWJs
ZSogZnJvbSBidWlsZCwgYWRkIG5ldyBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyL1Ry
YWl0cyBmaWxlcworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvSlNT
VkdQT0RUeXBlV3JhcHBlci5oOiBDaGFuZ2Ugc3luY2hyb25pemF0aW9uIGNhbGxiYWNrIHNpZ25h
dHVyZXMsIGFzIHdlIHBhc3MgYXJvdW5kIGNvbnN0LXJlZmVyZW5jZXMgbm93LgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDogTGV0IHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlIHRha2UgYSBR
dWFsaWZpZWROYW1lIGluc3RlYWQgb2YgcHVyZSBTdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0F0
dHJpYnV0ZXMpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDogUmVtb3Zl
IFNWRyBzcGVjaWZpYyAiZXhwb3J0U3RyaW5nIiAvICJleHBvcnRTdHJpbmdzIiBmdW5jdGlvbmFs
aXR5LCBzZWUgYWJvdmUuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IFJl
bW92ZSAiZXhwb3J0U3RyaW5nIiB0YWcgZnJvbSAiY2xhc3NOYW1lIiBhdHRyaWJ1dGUuCisgICAg
ICAgICogbWFudWFsLXRlc3RzL3N2Zy1ub2RlLWNvdW50LXZzLXNjcm9sbC54aHRtbDogQWRkZWQu
IENhbiBiZSB1c2VkIHRvIHZlcmlmeSBtZW1vcnkgY29uc3VtcHRpb24gd2l0aCBhIGxvdCBvZiBE
T00gb2JqZWN0cy4KKyAgICAgICAgKiBtYXRobWwvbWF0aGF0dHJzLmluOiBNYXRoTUwgZG9lc24n
dCBuZWVkICJleHBvcnRTdHJpbmdzIiAtIHJlbW92ZSBpdC4KKyAgICAgICAgKiBtYXRobWwvbWF0
aHRhZ3MuaW46IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBRWxlbWVudDo6U1ZHQUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IFJlbW92ZSBTeW5jaHJvbml6
YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5
cGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6IFJld3JpdHRlbiwgc2VlIGFib3Zl
IGZvciBkZXRhaWxzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zjo6c2V0QmFzZVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZjo6c2V0QW5pbVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZjo6YmFzZVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZjo6YW5pbVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZjo6YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjp+U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6
flNWR0FuaW1hdGVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFByb3BlcnR5Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5
OjpiYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c2V0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c2V0QmFzZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OnNob3VsZFN5bmNo
cm9uaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OnNldFNob3Vs
ZFN5bmNocm9uaXplKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9u
aXplci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmg6IE1vdmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0cyBpbnRvIGl0cyBvd24gZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VGVtcGxhdGU6OmZvcmdldFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6bG9va3VwT3JDcmVh
dGVXcmFwcGVyKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVu
dDo6U1ZHQ2lyY2xlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAg
KiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAg
ICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVs
ZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RlZnNFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHRGVm
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOiBBZGFwdCB0byBzeW5jaHJvbml6YXRpb24gY2hhbmdl
czogdXNlIHN5bmNocm9uaXplUHJvcGVydHkoKSBjYWxsLCBpbnN0ZWFkIG9mIFN5bmNocm9uaXph
YmxlUHJvcGVydHlDb250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBk
YXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6IERv
bid0IHN0b3JlIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyIGFueW1vcmUsIGl0J3Mg
Z29uZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2V0U3luY2hyb25pemVkU1ZHQXR0cmli
dXRlcyk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAg
ICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAg
ICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6
CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6
CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVM
aWdodEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNl
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAg
ICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToK
KyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL1NWR0Zp
dFRvVmlld0JveC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxl
bWVudDo6U1ZHRm9udEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6
U1ZHR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVt
ZW50OjpTVkdHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2
Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaXN0Lmg6IEFkYXB0
IHRvIGNvbnN0LXJlZmVyZW5jZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUE9ETGlz
dEl0ZW06OnNldFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAg
ICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6
OlNWR01hc2tFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVs
ZW1lbnQ6OlNWR1BhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OlNWR1BvbHlFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgor
ICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6
CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3Jp
cHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVt
ZW50OjpTVkdTdG9wRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZH
U3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdTd2l0Y2hFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6
OlNWR1N3aXRjaEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTeW1ib2xFbGVtZW50OjpTVkdTeW1ib2xFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1N5bWJvbEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdT
eW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpTVkdUUmVmRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgICog
c3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRD
b250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dEVsZW1lbnQ6OlNWR1RleHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6
CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSk6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHVVJJUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmg6Cisg
ICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNl
RWxlbWVudDo6U1ZHVXNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
aWV3RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHN2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHN2Zy9TeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogc3ZnL3N2Z2F0dHJzLmluOiBSZW1vdmUgImV4cG9ydFN0cmluZ3MiIHRhZy4KKyAgICAg
ICAgKiBzdmcvc3ZndGFncy5pbjogRGl0dG8uCisgICAgICAgICogc3ZnL3hsaW5rYXR0cnMuaW46
CisKIDIwMTAtMDEtMjYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE5vIHJldmlldywgcm9sbGluZyBvdXQgcjUzODYxLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1Mzg2
OSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNzUsOSAr
MzI3NSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBh
bi5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkda
b29tRXZlbnQuaCBcCi0JV2ViQ29yZS9zdmcvU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xs
ZXIuY3BwIFwKLQlXZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5o
IFwKLQlXZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmggXAogCVdlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TTUlMVGltZS5jcHAgXAogCVdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZS5oIFwKIAlXZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIFwK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzE3LDYgKzMzMTcsOCBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRl
ZFBvaW50cy5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBvaW50cy5oJywKICAg
ICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oJywKKyAgICAgICAgICAgICdzdmcv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oJywKKyAgICAgICAgICAgICdzdmcvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAnLAog
ICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgnLApAQCAtMzU2Niw5ICszNTY4
LDYgQEAKICAgICAgICAgICAgICdzdmcvU1ZHWm9vbUFuZFBhbi5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHWm9vbUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21FdmVudC5oJywK
LSAgICAgICAgICAgICdzdmcvU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwJywK
LSAgICAgICAgICAgICdzdmcvU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCcsCi0g
ICAgICAgICAgICAnc3ZnL1N5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCcs
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDUzODY5
KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDA4NzcsNiArNDA4NzcsMTggQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVkUHJvcGVydHkuaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdB
bmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
cy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3ZnXFNWR0FuaW1hdGVkVGVtcGxhdGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00
MTcwOCwxMCArNDE3MjAsNiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR1pvb21FdmVu
dC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3ZnXFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgiDQotCQkJCT4NCi0JCQk8
L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJhbmltYXRpb24iDQogCQkJCT4NCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTM4
NjkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQAogCQkwODRDRTVDQzBGMjdEQURDMDBFNjI0MEUgLyog
V01MT3B0R3JvdXBFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODRDRTVDODBGMjdEQURDMDBFNjI0MEUgLyogV01MT3B0R3JvdXBFbGVtZW50
LmggKi87IH07CiAJCTA4NENFNUNEMEYyN0RBREMwMEU2MjQwRSAvKiBXTUxPcHRpb25FbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NENF
NUM5MEYyN0RBREMwMEU2MjQwRSAvKiBXTUxPcHRpb25FbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg0
Q0U1Q0UwRjI3REFEQzAwRTYyNDBFIC8qIFdNTE9wdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NENFNUNBMEYyN0RBREMwMEU2MjQw
RSAvKiBXTUxPcHRpb25FbGVtZW50LmggKi87IH07CisJCTA4NEQyODMzMTEwQTdGQ0IwMDM4MjM5
QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODREMjgzMTExMEE3RkNCMDAzODIzOUEgLyog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA4NEQyODM0MTEwQTdGQ0IwMDM4MjM5QSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODREMjgzMjExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA4NERCQUExMEVEMzlEMzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg0REJBOUQwRUQz
OUQzNTAwMzhDMjI2IC8qIFdNTFZhcmlhYmxlcy5jcHAgKi87IH07CiAJCTA4NERCQUEyMEVEMzlE
MzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NERCQTlFMEVEMzlEMzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJs
ZXMuaCAqLzsgfTsKIAkJMDg1OTFBQTUwRjA4NUM0RTAwOUJBQ0IxIC8qIElucHV0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1OTFBQTQw
RjA4NUM0RTAwOUJBQ0IxIC8qIElucHV0RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NSw5ICs5Nyw2IEBACiAJCTA4NzQ0QkFBMEVE
QjdEODYwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc0NEJBOTBFREI3RDg2MDA0QzlFNjMgLyog
V01MT25FdmVudEVsZW1lbnQuY3BwICovOyB9OwogCQkwODc0NEJBRTBFREI3RDkyMDA0QzlFNjMg
LyogV01MT25FdmVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NzQ0QkFEMEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVu
dC5oICovOyB9OwogCQkwODc4QjFGRDEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3
OEIxRjkxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwODc4QjFGRTEwODc0RTNG
MDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRkExMDg3NEUzRjAw
QTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJ
MDg3OEIxRkYxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4
QjFGQjEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwODc4
QjIwMDEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRkMxMDg3NEUz
RjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODdEOTdCRjEwRkI4RDc3MDBDMDA4
NzQgLyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODdEOTdCRTEwRkI4RDc3MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0
Q3VzdG9tLmggKi87IH07CiAJCTA4N0ZGQTBGMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRl
ZExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg3RkZBMEQwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxl
bWVudC5jcHAgKi87IH07CiAJCTA4N0ZGQTEwMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRl
ZExlZ2VuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4N0ZGQTBFMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1l
bnQuaCAqLzsgfTsKQEAgLTM0ODgsMTMgKzM0ODcsMTMgQEAKIAkJQjIyMjdBMzIwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0xlbmd0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzg5QzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGVuZ3RoLmNwcCAq
LzsgfTsKIAkJQjIyMjdBMzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OUQwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR0xlbmd0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUIyMjI3QTM1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
ODlGMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCAqLzsgfTsKLQkJQjIyMjdB
MzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEEwMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdMZW5ndGhMaXN0LmggKi87IH07CisJCUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdM
ZW5ndGhMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzhBMDBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTM4MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTIwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTM5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEEzMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCAqLzsgfTsKIAkJQjIyMjdBM0IwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0xpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3OEE1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVu
dC5jcHAgKi87IH07CiAJCUIyMjI3QTNDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4
QTYwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTNF
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGlzdC5o
ICovOyB9OwotCQlCMjIyN0EzRjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGlzdFRyYWl0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTkwRDAw
QkYyMDAwNzFCNzgyIC8qIFNWR0xpc3RUcmFpdHMuaCAqLzsgfTsKKwkJQjIyMjdBM0UwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3OEE4MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQjIyMjdBM0YwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0xpc3RUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEE5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaXN0
VHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQjIyMjdBNDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBQTBEMDBCRjIwMDA3
MUI3ODIgLyogU1ZHTG9jYXRhYmxlLmNwcCAqLzsgfTsKIAkJQjIyMjdBNDEwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4QUIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oICov
OyB9OwogCQlCMjIyN0E0MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBRDBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgKi87IH07CkBAIC0zNTA2LDcg
KzM1MDUsNyBAQAogCQlCMjIyN0E0RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
OEI3MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIy
N0E0RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCODBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHTVBhdGhFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3OEJBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCAq
LzsgfTsKLQkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEJCMEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggKi87IH07CisJCUIyMjI3QTUxMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCQjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIy
MjI3QTUzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCRDBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHUGFpbnQuY3BwICovOyB9OwogCQlCMjIyN0E1NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFp
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
OEJFMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYWludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTU2MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQYXJzZXJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4QzAwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGll
cy5jcHAgKi87IH07CkBAIC0zNTkwLDEzICszNTg5LDEzIEBACiAJCUIyMjI3QUQzMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUaXRsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5M0QwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RpdGxl
RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUaXRs
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3OTNFMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUaXRsZUVsZW1lbnQuaCAqLzsgfTsKIAkJ
QjIyMjdBRDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0MDBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHVHJhbnNmb3JtLmNwcCAqLzsgfTsKLQkJQjIyMjdBRDcwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1RyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc5NDEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybS5oICovOyB9
OworCQlCMjIyN0FENzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0MTBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHVHJhbnNmb3JtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjdBRDkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9y
bWFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc5NDMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuY3BwICovOyB9Owog
CQlCMjIyN0FEQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDQwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCAqLzsgfTsKIAkJQjIyMjdBREMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTQ2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdU
cmFuc2Zvcm1EaXN0YW5jZS5jcHAgKi87IH07CiAJCUIyMjI3QUREMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc5NDcwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURp
c3RhbmNlLmggKi87IH07CiAJCUIyMjI3QURFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm1MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3OTQ4MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmNwcCAqLzsgfTsK
LQkJQjIyMjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTQ5MEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggKi87IH07CisJCUIyMjI3QURGMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0OTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNm
b3JtTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUIyMjI3QUUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0QjBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FFMjBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTRDMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUUmVmRWxl
bWVudC5oICovOyB9OwogCQlCMjIyN0FFNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OTRFMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUU3BhbkVsZW1lbnQuY3BwICovOyB9OwpAQCAt
NTM0OCw2ICs1MzQ3LDggQEAKIAkJMDg0Q0U1QzgwRjI3REFEQzAwRTYyNDBFIC8qIFdNTE9wdEdy
b3VwRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxPcHRHcm91
cEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg0Q0U1QzkwRjI3REFE
QzAwRTYyNDBFIC8qIFdNTE9wdGlvbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV01MT3B0aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4NENFNUNBMEYyN0RBREMwMEU2MjQwRSAvKiBXTUxPcHRpb25FbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTE9wdGlvbkVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg0RDI4MzExMTBBN0ZDQjAwMzgyMzlBIC8qIFNW
R0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwODREMjgzMjExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmlt
YXRlZFByb3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NERC
QTlEMEVEMzlEMzUwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV01MVmFyaWFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDg0REJBOUUwRUQzOUQzNjAwMzhDMjI2IC8qIFdNTFZhcmlhYmxlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxWYXJpYWJsZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1OTFBQTQwRjA4NUM0RTAwOUJBQ0IxIC8qIElucHV0RWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dEVsZW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNjcsOSArNTM2OCw2IEBACiAJCTA4NzQ0
QkE5MEVEQjdEODYwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxPbkV2ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NzQ0QkFEMEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2
ZW50RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxPbkV2ZW50
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODc4QjFGOTEwODc0RTNG
MDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA4NzhCMUZBMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5j
aHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA4NzhCMUZCMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW5jaHJvbml6
YWJsZVByb3BlcnR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
ODc4QjFGQzEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4N0Q5N0JFMTBGQjhENzcwMEMwMDg3
NCAvKiBKU1NWR1BPRExpc3RDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdQT0RMaXN0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
N0ZGQTBEMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MSW5zZXJ0ZWRMZWdlbmRFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3RkZBMEUwRUZGM0VEMzAw
OURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzODE1LDYgKzEzODEzLDggQEAKIAkJCQlCMjIyNzdGMzBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQb2ludHMuaWRsICovLAogCQkJCUIyMjI3N0Y0MEQwMEJG
MUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaWRsICovLAogCQkJ
CTA4NzhCMUY5MTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggKi8sCisJ
CQkJMDg0RDI4MzExMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJv
bml6ZXIuaCAqLywKKwkJCQkwODREMjgzMjExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0cy5oICovLAogCQkJCUIyMjI3N0Y1MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZFJlY3QuaWRsICovLAogCQkJCUIyMjI3N0Y2MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZFN0cmluZy5pZGwgKi8sCiAJCQkJQjIyMjc3RjcwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkVGVtcGxhdGUuaCAqLywKQEAgLTE0MjAzLDkgKzE0MjAzLDYgQEAKIAkJCQlCMkU0
RUM5NDBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmNwcCAqLywKIAkJCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8sCiAJCQkJQjJFNEVDOTYwRDAw
QzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8sCi0JCQkJMDg3OEIxRkExMDg3NEUz
RjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcCAqLywKLQkJ
CQkwODc4QjFGQjEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRy
b2xsZXIuaCAqLywKLQkJCQkwODc4QjFGQzEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFi
bGVUeXBlV3JhcHBlci5oICovLAogCQkJCUIyOEM2QTI2MEQwMEM0NDgwMDMzNEFBNCAvKiB4bGlu
a2F0dHJzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBzdmc7CkBAIC0xODIyOSw4ICsxODIyNiw2
IEBACiAJCQkJQjIyMjdBRjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ZpZXdTcGVjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0FGNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJFNEVDOTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21F
dmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg3OEIxRkYxMDg3NEUzRjAwQTU1MDk3IC8qIFN5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwODc4
QjIwMDEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNFNjJEOUIwOTg1RjQxNjAwRTFCNUUzIC8qIFN5c3RlbVRpbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFM0JFQzMwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4NDgxLDYgKzE4NDc2LDggQEAKIAkJCQk1OUI1
OTc3NTExMDg2NTc5MDA3MTU5RTggLyogQnJpZGdlSlNDLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDgyRkNBQzQxMTA5MjdDRTAwQ0M0ODIxIC8qIEpTU1ZHQ29udGV4dENh
Y2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODREMjgzMzExMEE3RkNCMDAzODIzOUEgLyogU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg0RDI4
MzQxMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU5RTg0MjY2MTEwOUU1QTIwMDAzMDVBRCAvKiBKTklCcmlkZ2VKU0MuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwpAQCAtMjA0NTEsNyArMjA0NDgsNiBAQAogCQkJCUIyMjI3QUYyMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FGNTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkU0
RUM5NzBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTA4NzhCMUZFMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTgyQTE2MzA5OTk5RDZEMDBCRUVCNkQg
LyogU3lzdGVtVGltZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0UzQkVDMjBEMjIyQjFE
MDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2QTUw
OTlERjAyNzAwOTBENzgxIC8qIFRleHQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAkocmV2aXNpb24gNTM4NjkpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNyArNzcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQT0RU
CiBjbGFzcyBKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlciA6IHB1YmxpYyBKU1NWR1BPRFR5cGVX
cmFwcGVyPFBPRFR5cGU+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFBPRFR5cGUgKFBPRFR5cGVD
cmVhdG9yOjoqR2V0dGVyTWV0aG9kKSgpIGNvbnN0OyAKLSAgICB0eXBlZGVmIHZvaWQgKFBPRFR5
cGVDcmVhdG9yOjoqU2V0dGVyTWV0aG9kKShQT0RUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQgKFBP
RFR5cGVDcmVhdG9yOjoqU2V0dGVyTWV0aG9kKShjb25zdCBQT0RUeXBlJik7CiAKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlcj4gY3JlYXRlKFBhc3NSZWZQ
dHI8UE9EVHlwZUNyZWF0b3I+IGNyZWF0b3IsIEdldHRlck1ldGhvZCBnZXR0ZXIsIFNldHRlck1l
dGhvZCBzZXR0ZXIpCiAgICAgewpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+IFBPRExpc3RJdGVtUHRyVHlwZTsKIAogICAgIHR5
cGVkZWYgUE9EVHlwZSAoU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT46OipHZXR0ZXJNZXRob2QpKCkg
Y29uc3Q7IAotICAgIHR5cGVkZWYgdm9pZCAoU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT46OipTZXR0
ZXJNZXRob2QpKFBPRFR5cGUpOworICAgIHR5cGVkZWYgdm9pZCAoU1ZHUE9ETGlzdEl0ZW08UE9E
VHlwZT46OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdD4gY3JlYXRlKFBhc3NSZWZQ
dHI8UE9ETGlzdEl0ZW1QdHJUeXBlPiBjcmVhdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQogICAgIHsKQEAgLTI3MCw3ICsyNzAsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8
dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+CiBzdHJ1Y3QgUE9EVHlw
ZVdyYXBwZXJDYWNoZUluZm8gewogICAgIHR5cGVkZWYgUE9EVHlwZSAoUE9EVHlwZUNyZWF0b3I6
OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAotICAgIHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNyZWF0
b3I6OipTZXR0ZXJNZXRob2QpKFBPRFR5cGUpOworICAgIHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNy
ZWF0b3I6OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKIAogICAgIC8vIEVtcHR5IHZh
bHVlCiAgICAgUE9EVHlwZVdyYXBwZXJDYWNoZUluZm8oKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFBPRFR5cGUsIHR5cGVuYW1lIFBPRFQKIGNsYXNzIEpTU1ZHRHluYW1p
Y1BPRFR5cGVXcmFwcGVyQ2FjaGUgewogcHVibGljOgogICAgIHR5cGVkZWYgUE9EVHlwZSAoUE9E
VHlwZUNyZWF0b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAotICAgIHR5cGVkZWYgdm9pZCAo
UE9EVHlwZUNyZWF0b3I6OipTZXR0ZXJNZXRob2QpKFBPRFR5cGUpOworICAgIHR5cGVkZWYgdm9p
ZCAoUE9EVHlwZUNyZWF0b3I6OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKIAogICAg
IHR5cGVkZWYgUE9EVHlwZVdyYXBwZXJDYWNoZUluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+
IENhY2hlSW5mbzsKICAgICB0eXBlZGVmIFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZvSGFzaDxQT0RU
eXBlLCBQT0RUeXBlQ3JlYXRvcj4gQ2FjaGVJbmZvSGFzaDsKSW5kZXg6IFdlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lv
biA1Mzg2OSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsNyArMTgyLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dAog
CiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQotICAg
ICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUobmFtZSk7CiAjZW5kaWYKIAogICAgIGlmIChu
YW1lZEF0dHJNYXApCkBAIC00ODgsOCArNDg4LDEwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxl
bWVudDo6Z2V0QXR0cmlidXQKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKIAogI2lm
IEVOQUJMRShTVkcpCi0gICAgaWYgKCFtX2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCkKLSAgICAgICAg
dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUobmFtZSk7CisgICAgaWYgKCFtX2FyZVNWR0F0dHJp
YnV0ZXNWYWxpZCkgeworICAgICAgICAvLyBXZSdyZSBub3QgcGFzc2luZyBhIG5hbWVzcGFjZSBh
cmd1bWVudCBvbiBwdXJwb3NlLiBTVkdOYW1lczo6KkF0dHIgYXJlIGRlZmluZWQgdy9vIG5hbWVz
cGFjZXMgYXMgd2VsbC4KKyAgICAgICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoUXVhbGlm
aWVkTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0b20pKTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IGlmIChuYW1lZEF0dHJNYXApCkBAIC02NzIsNyArNjc0LDcgQEAgYm9vbCBFbGVtZW50OjpoYXNB
dHRyaWJ1dGVzKCkgY29uc3QKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKCFtX2FyZVNWR0F0
dHJpYnV0ZXNWYWxpZCkKLSAgICAgICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoU3RyaW5n
KCkpOworICAgICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShhbnlRTmFtZSgpKTsKICNl
bmRpZgogCiAgICAgcmV0dXJuIG5hbWVkQXR0ck1hcCAmJiBuYW1lZEF0dHJNYXAtPmxlbmd0aCgp
ID4gMDsKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25zdCB7IH0KIAogI2lmIEVOQUJMRShTVkcp
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgeyB9CiAjZW5kaWYKIAogICAgIHZvaWQgdXBk
YXRlRm9jdXNBcHBlYXJhbmNlU29vbkFmdGVyQXR0YWNoKCk7CkBAIC0zNTgsNyArMzU4LDcgQEAg
aW5saW5lIE5hbWVkTm9kZU1hcCogRWxlbWVudDo6YXR0cmlidXRlcwogCiAjaWYgRU5BQkxFKFNW
RykKICAgICBpZiAoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQotICAgICAgICB1cGRhdGVBbmlt
YXRlZFNWR0F0dHJpYnV0ZShTdHJpbmcoKSk7CisgICAgICAgIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0
cmlidXRlKGFueVFOYW1lKCkpOwogI2VuZGlmCiAKICAgICBpZiAoIXJlYWRvbmx5ICYmICFuYW1l
ZEF0dHJNYXApCkluZGV4OiBXZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNiBAQCBzdWIgZGVm
YXVsdFRhZ1Byb3BlcnR5SGFzaAogICAgICAgICAnY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBh
cnNlcicgPT4gMCwKICAgICAgICAgJ2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCcgPT4gMCwK
ICAgICAgICAgJ2NyZWF0ZVdpdGhOZXcnID0+IDAsCi0gICAgICAgICdleHBvcnRTdHJpbmcnID0+
IDAsCiAgICAgICAgICdpbnRlcmZhY2VOYW1lJyA9PiBkZWZhdWx0SW50ZXJmYWNlTmFtZSgkX1sw
XSksCiAgICAgICAgICMgQnkgZGVmYXVsdCwgdGhlIEpTSW50ZXJmYWNlTmFtZSBpcyB0aGUgc2Ft
ZSBhcyB0aGUgaW50ZXJmYWNlTmFtZS4KICAgICAgICAgJ0pTSW50ZXJmYWNlTmFtZScgPT4gZGVm
YXVsdEludGVyZmFjZU5hbWUoJF9bMF0pLApAQCAtMTA0LDExICsxMDMsNiBAQCBzdWIgZGVmYXVs
dFRhZ1Byb3BlcnR5SGFzaAogICAgICk7CiB9CiAKLXN1YiBkZWZhdWx0QXR0clByb3BlcnR5SGFz
aAotewotICAgIHJldHVybiAoJ2V4cG9ydFN0cmluZycgPT4gMCk7Ci19Ci0KIHN1YiBkZWZhdWx0
UGFyYW1ldGVyc0hhc2gKIHsKICAgICByZXR1cm4gKApAQCAtMTE3LDggKzExMSw3IEBAIHN1YiBk
ZWZhdWx0UGFyYW1ldGVyc0hhc2gKICAgICAgICAgJ25hbWVzcGFjZVVSSScgPT4gJycsCiAgICAg
ICAgICdndWFyZEZhY3RvcnlXaXRoJyA9PiAnJywKICAgICAgICAgJ3RhZ3NOdWxsTmFtZXNwYWNl
JyA9PiAwLAotICAgICAgICAnYXR0cnNOdWxsTmFtZXNwYWNlJyA9PiAwLAotICAgICAgICAnZXhw
b3J0U3RyaW5ncycgPT4gMAorICAgICAgICAnYXR0cnNOdWxsTmFtZXNwYWNlJyA9PiAwCiAgICAg
KTsKIH0KIApAQCAtMTU3LDcgKzE1MCw3IEBAIHN1YiBhdHRyc0hhbmRsZXIKICAgICAkYXR0ciA9
fiBzLy0vXy9nOwogCiAgICAgIyBJbml0aWFsaXplIGRlZmF1bHQgcHJvcGVydGllcycgdmFsdWVz
LgotICAgICRhdHRyc3skYXR0cn0gPSB7IGRlZmF1bHRBdHRyUHJvcGVydHlIYXNoKCRhdHRyKSB9
IGlmICFkZWZpbmVkKCRhdHRyc3skYXR0cn0pOworICAgICRhdHRyc3skYXR0cn0gPSB7fSBpZiAh
ZGVmaW5lZCgkYXR0cnN7JGF0dHJ9KTsKIAogICAgIGlmICgkcHJvcGVydHkpIHsKICAgICAgICAg
ZGllICJVbmtub3duIHByb3BlcnR5ICRwcm9wZXJ0eSBmb3IgYXR0cmlidXRlICRhdHRyXG4iIGlm
ICFkZWZpbmVkKCRhdHRyc3skYXR0cn17JHByb3BlcnR5fSk7CkBAIC0yMjAsMTAgKzIxMyw2IEBA
IHN1YiBwcmludE1hY3JvcwogCiAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJSRuYW1lc1Jl
ZikgewogICAgICAgICBwcmludCBGICIkbWFjcm8gJG5hbWUiLCIkc3VmZml4O1xuIjsKLQotICAg
ICAgICBpZiAoJHBhcmFtZXRlcnN7ZXhwb3J0U3RyaW5nc30gb3IgJG5hbWVzeyRuYW1lfXtleHBv
cnRTdHJpbmd9KSB7IAotICAgICAgICAgICAgcHJpbnQgRiAiZXh0ZXJuIGNoYXIgJG5hbWUiLCAi
JHtzdWZmaXh9U3RyaW5nW107XG4iOwotICAgICAgICB9CiAgICAgfQogfQogCkBAIC01MzQsMTQg
KzUyMyw2IEBAIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCAke2xvd2VyTmFtZXMKICAgICAg
ICAgcHJpbnQgRiAifVxuIjsKICAgICB9CiAKLSAgICBpZiAoa2V5cyAldGFncykgewotICAgICAg
ICBwcmludERlZmluaXRpb25TdHJpbmdzKCRGLCBcJXRhZ3MsICJ0YWdzIik7Ci0gICAgfQotCi0g
ICAgaWYgKGtleXMgJWF0dHJzKSB7Ci0gICAgICAgIHByaW50RGVmaW5pdGlvblN0cmluZ3MoJEYs
IFwlYXR0cnMsICJhdHRyaWJ1dGVzIik7Ci0gICAgfQotCiBwcmludCBGICJcbnZvaWQgaW5pdCgp
CiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTU5OSwyNSArNTgw
LDYgQEAgc3ViIHByaW50RWxlbWVudEluY2x1ZGVzCiAgICAgfQogfQogCi1zdWIgcHJpbnREZWZp
bml0aW9uU3RyaW5ncwotewotICAgIG15ICgkRiwgJG5hbWVzUmVmLCAkdHlwZSkgPSBAXzsKLSAg
ICBteSAkc2luZ3VsYXJUeXBlID0gc3Vic3RyKCR0eXBlLCAwLCAtMSk7Ci0gICAgbXkgJHNob3J0
VHlwZSA9IHN1YnN0cigkc2luZ3VsYXJUeXBlLCAwLCA0KTsKLSAgICBteSAkc2hvcnRDYW1lbFR5
cGUgPSB1Y2ZpcnN0KCRzaG9ydFR5cGUpOwotICAgIHByaW50IEYgIlxuLy8gIiAuIHVjZmlyc3Qo
JHR5cGUpIC4gIiBhcyBzdHJpbmdzXG4iOwotCi0gICAgbXkgJW5hbWVzID0gJSRuYW1lc1JlZjsK
LSAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5cyAlJG5hbWVzUmVmKSB7Ci0gICAgICAgIG5leHQg
aWYgKCEkcGFyYW1ldGVyc3tleHBvcnRTdHJpbmdzfSBhbmQgISRuYW1lc3skbmFtZX17ZXhwb3J0
U3RyaW5nfSk7Ci0KLSAgICAgICAgbXkgJHJlYWxOYW1lID0gJG5hbWU7Ci0gICAgICAgICRyZWFs
TmFtZSA9fiBzL18vLS9nOwotCi0gICAgICAgIHByaW50IEYgImNoYXIgJG5hbWUiLCIke3Nob3J0
Q2FtZWxUeXBlfVN0cmluZ1tdID0gXCIkcmVhbE5hbWVcIjtcbiI7Ci0gICAgfQotfSAKLQogc3Vi
IHByaW50RGVmaW5pdGlvbnMKIHsKICAgICBteSAoJEYsICRuYW1lc1JlZiwgJHR5cGUsICRuYW1l
c3BhY2VVUkkpID0gQF87CkBAIC02MjgsMTkgKzU5MCwxMCBAQCBzdWIgcHJpbnREZWZpbml0aW9u
cwogICAgIAogICAgIHByaW50IEYgIiAgICAvLyAiIC4gdWNmaXJzdCgkdHlwZSkgLiAiXG4iOwog
Ci0gICAgbXkgJW5hbWVzID0gJSRuYW1lc1JlZjsKICAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5
cyAlJG5hbWVzUmVmKSB7Ci0gICAgICAgIG5leHQgaWYgKCRwYXJhbWV0ZXJze2V4cG9ydFN0cmlu
Z3N9IG9yICRuYW1lc3skbmFtZX17ZXhwb3J0U3RyaW5nfSk7Ci0KICAgICAgICAgbXkgJHJlYWxO
YW1lID0gJG5hbWU7CiAgICAgICAgICRyZWFsTmFtZSA9fiBzL18vLS9nOwotICAgICAgICBwcmlu
dCBGICIgICAgY29uc3QgY2hhciAqJG5hbWUiLCIke3Nob3J0Q2FtZWxUeXBlfVN0cmluZyA9IFwi
JHJlYWxOYW1lXCI7XG4iOwotICAgIH0KLQotICAgIHByaW50ICJcbiI7Ci0KLSAgICBmb3IgbXkg
JG5hbWUgKHNvcnQga2V5cyAlJG5hbWVzUmVmKSB7Ci0gICAgICAgIHByaW50IEYgIiAgICBuZXcg
KCh2b2lkKikmJG5hbWUiLCIke3Nob3J0Q2FtZWxUeXBlfSkgUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgJG5hbWUiLCIke3Nob3J0Q2FtZWxUeXBlfVN0cmluZywgJG5hbWVzcGFjZVVSSSk7XG4iOwor
ICAgICAgICBwcmludCBGICIgICAgbmV3ICgodm9pZCopJiRuYW1lIiwiJHtzaG9ydENhbWVsVHlw
ZX0pIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIFwiJHJlYWxOYW1lXCIsICRuYW1lc3BhY2VVUkkp
O1xuIjsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2
aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIGNoYXJzZXQKIGNoZWNrZWQKIGNlbGxib3JkZXIK
IGNpdGUKLWNsYXNzIGV4cG9ydFN0cmluZworY2xhc3MKIGNsYXNzaWQKIGNsZWFyCiBjb2RlCklu
ZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9zdmctbm9kZS1jb3VudC12cy1zY3JvbGwueGh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvc3ZnLW5vZGUtY291bnQtdnMtc2Ny
b2xsLnhodG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvc3ZnLW5vZGUt
Y291bnQtdnMtc2Nyb2xsLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAiaHR0cDovL3d3dy53My5vcmcv
VFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sOmxhbmc9ImVuIj4KKyA8aGVhZD4KKyAgPHRpdGxlPlNWRyBTY3JvbGxpbmcgUGVyZm9y
bWFuY2UgZGVwZW5kcyBvbiAjbm9kZSBpcyBTYWZhcmk/PC90aXRsZT4KKworICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgIDwhW0NEQVRBWworCisgIHZhciBTVkdfTlMgPSAnaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmcnOworCisgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgdmFy
IG5vZGVDb3VudCA9IHBhcnNlSW50KHByb21wdCgnIyA8cmVjdD4gdG8gZ2VuZXJhdGU/ICcsIDUw
MDAwKSk7CisKKyAgICB2YXIgc3ZnUm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdf
TlMsICdzdmcnKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUNvdW50OyBpKyspIHsK
KyAgICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgJ3JlY3Qn
KTsKKyAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd4JywgaSk7CisgICAgICBub2RlLnNldEF0dHJp
YnV0ZSgneScsIGkpOworICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgMSk7CisgICAg
ICBub2RlLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaSk7CisgICAgICBub2RlLnNldEF0dHJpYnV0
ZSgnZmlsbCcsICdyZWQnKTsKKworICAgICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChub2RlKTsKKyAg
ICB9CisKKyAgICBzdmdSb290LnN0eWxlLndpZHRoID0gbm9kZUNvdW50ICsgJ3B4JzsKKyAgICBz
dmdSb290LnN0eWxlLmhlaWdodCA9IG5vZGVDb3VudCArICdweCc7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChzdmdSb290KTsKKyAgfQorCisgIF1dPgorICA8L3NjcmlwdD4KKyA8L2hl
YWQ+CisKKyA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+CisgICA8aDE+U1ZHIFNjcm9sbGluZyBQZXJm
b3JtYW5jZSBkZXBlbmRzIG9uICNub2RlIGlzIFNhZmFyaT88L2gxPgorIDwvYm9keT4KKzwvaHRt
bD4KKwpJbmRleDogV2ViQ29yZS9tYXRobWwvbWF0aGF0dHJzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbWF0aG1sL21hdGhhdHRycy5pbgkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL21h
dGhtbC9tYXRoYXR0cnMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw2IEBAIG5hbWVzcGFj
ZT0iTWF0aE1MIgogbmFtZXNwYWNlVVJJPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0
aE1MIgogZ3VhcmRGYWN0b3J5V2l0aD0iRU5BQkxFKE1BVEhNTCkiCiBhdHRyc051bGxOYW1lc3Bh
Y2UKLWV4cG9ydFN0cmluZ3MKIAogY2xvc2UKIGRlbm9tYWxpZ24KSW5kZXg6IFdlYkNvcmUvbWF0
aG1sL21hdGh0YWdzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmlu
CShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNiBAQAogbmFtZXNwYWNlPSJNYXRoTUwiCiBuYW1lc3BhY2VVUkk9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiCiBndWFyZEZhY3RvcnlXaXRoPSJF
TkFCTEUoTUFUSE1MKSIKLWV4cG9ydFN0cmluZ3MKIAogbWF0aAogbWZyYWMgaW50ZXJmYWNlTmFt
ZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbGxJ
bk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZp
c2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU2LDQgKzE1NiwzIEBACiAjaW5jbHVkZSAiU1ZHVmlld1NwZWMuY3BwIgogI2luY2x1
ZGUgIlNWR1pvb21BbmRQYW4uY3BwIgogI2luY2x1ZGUgIlNWR1pvb21FdmVudC5jcHAiCi0jaW5j
bHVkZSAiU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwIgpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUHJvcGVydHkuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAg
IENvcHlyaWdodCAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KLSAgICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIyLDQ5MyArMjIsMTk2IEBACiAjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlfaAog
CiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkVGVtcGxhdGUuaCIKLSNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMu
aCIKLSNpbmNsdWRlICJTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUg
QW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0
eU5hbWU+Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK3RlbXBsYXRlPHR5cGVuYW1l
IEFuaW1hdGVkVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5p
bWF0ZWRUeXBlLCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBj
b25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxEZWNvcmF0ZWRUeXBlPiB7Ci0gICAg
cHVibGljOgotICAgICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPE93bmVy
VHlwZSwgT3duZXJFbGVtZW50LCBBbmltYXRlZFR5cGUsIERlY29yYXRlZFR5cGUsIFRhZ05hbWUs
IFByb3BlcnR5TmFtZT4gU2VsZjsKLSAgICAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5
PE93bmVyVHlwZSwgQW5pbWF0ZWRUeXBlLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+IENyZWF0b3I7
Ci0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VsZj4gY3JlYXRlKGNvbnN0IENyZWF0b3Im
IGNyZWF0b3IsIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VsZihjcmVhdG9yLCBvd25lciwgYXR0cmlidXRlTmFtZSkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmlydHVhbCBEZWNvcmF0ZWRUeXBlIGJhc2VWYWwoKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldEJhc2VWYWwoRGVjb3JhdGVkVHlwZSk7Ci0KLSAgICAgICAgdmlydHVhbCBE
ZWNvcmF0ZWRUeXBlIGFuaW1WYWwoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEFu
aW1WYWwoRGVjb3JhdGVkVHlwZSk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZihjb25zdCBDcmVhdG9yJiwgY29uc3QgT3duZXJFbGVtZW50KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7Ci0KLSAgICAgICAgQ3JlYXRvciYgbV9j
cmVhdG9yOwotICAgICAgICBSZWZQdHI8T3duZXJFbGVtZW50PiBtX293bmVyRWxlbWVudDsKLSAg
ICB9OwotCi0gICAgLy8gSGVscGVyIHRlbXBsYXRlcyBtYXBwaW5nIG93bmVyIHR5cGVzIHRvIG93
bmVyIGVsZW1lbnRzIChmb3IgU1ZHKkVsZW1lbnQgT3duZXJUeXBlIGlzIGVxdWFsIHRvIE93bmVy
RWxlbWVudCwgZm9yIG5vbi1TVkcqRWxlbWVudCBkZXJpdmVkIHR5cGVzLCB0aGV5J3JlIGRpZmZl
cmVudCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIGJvb2wgaXNEZXJpdmVkRnJv
bVNWR0VsZW1lbnQ+Ci0gICAgc3RydWN0IEdldE93bmVyRWxlbWVudEZvclR5cGU7Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci0gICAgc3RydWN0IElzRGVyaXZlZEZyb21TVkdF
bGVtZW50OwotCi0gICAgLy8gSGVscGVyIHRlbXBsYXRlIHVzZWQgZm9yIHN5bmNocm9uaXppbmcg
U1ZHIDwtPiBYTUwgcHJvcGVydGllcwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwg
dHlwZW5hbWUgRGVjb3JhdGVkVHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4KLSAg
ICBzdHJ1Y3QgUHJvcGVydHlTeW5jaHJvbml6ZXI7Ci0KLSAgICAvLyBBYnN0cmFjdCBiYXNlIGNs
YXNzCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UgOiBwdWJsaWMgTm9uY29weWFi
bGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eUJh
c2UoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCkgY29uc3QgPSAwOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oKSBjb25zdCA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgPSAwOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3Qg
Y2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgotICAgIGNsYXNzIFNWR0Fu
aW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UgewotICAgIHB1
YmxpYzoKLSAgICAgICAgdHlwZWRlZiBPd25lclR5cGVBcmcgT3duZXJUeXBlOwotICAgICAgICB0
eXBlZGVmIEFuaW1hdGVkVHlwZUFyZyBBbmltYXRlZFR5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBTVkdBbmltYXRlZFR5cGVWYWx1ZTxBbmltYXRlZFR5cGU+OjpTdG9yYWJsZVR5cGUg
U3RvcmFibGVUeXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkVHlwZVZh
bHVlPEFuaW1hdGVkVHlwZT46OkRlY29yYXRlZFR5cGUgRGVjb3JhdGVkVHlwZTsKLQotICAgICAg
ICB0eXBlZGVmIEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9t
U1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT4gT3duZXJFbGVtZW50Rm9yVHlwZTsKLSAgICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBPd25lckVsZW1lbnRGb3JUeXBlOjpPd25lckVsZW1lbnQgT3du
ZXJFbGVtZW50OwotICAgICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPE93
bmVyVHlwZSwgT3duZXJFbGVtZW50LCBBbmltYXRlZFR5cGUsIERlY29yYXRlZFR5cGUsIFRhZ05h
bWUsIFByb3BlcnR5TmFtZT4gVGVhck9mZjsKLQotICAgICAgICAvLyBhdHRyaWJ1dGVOYW1lICYg
YXR0cmlidXRlSWRlbnRpZmllciBtYXkgZGlmZmVyLiBGb3IgU1ZHTWFya2VyRWxlbWVudCwgdGhl
cmUgYXJlIHR3byBleHBvc2VkIFNWRyBhbmltYXRhYmxlCi0gICAgICAgIC8vIHByb3BlcnRpZXM6
IG9yaWVudFR5cGUgJiBvcmllbnRBbmdsZSwgdGhvdWdoIG9ubHkgb25lIERPTSBhdHRyaWJ1dGUg
Im9yaWVudCIsIGhhbmRsZSB0aGVzZSBjYXNlcyEKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eShjb25zdCBPd25lclR5cGUqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsK
LSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlk
ZW50aWZpZXIpOwotCi0gICAgICAgIC8vICJGb3J3YXJkaW5nIGNvbnN0cnVjdG9ycyIgZm9yIHBy
aW1pdGl2ZSB0eXBlIGFzc2lnbm1lbnQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50Ci0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNv
bnN0IE93bmVyVHlwZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUMT4KLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUq
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZUlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDEmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAg
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MSYsIGNvbnN0IFQyJik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgotICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmli
dXRlSWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYsIGNv
bnN0IFQyJik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMz4KLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUq
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFQxJiwgY29uc3QgVDImLCBjb25zdCBUMyYpOwotICAgIAotICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgICAg
ICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmll
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYsIGNvbnN0IFQyJiwgY29u
c3QgVDMmKTsKLQotICAgICAgICBEZWNvcmF0ZWRUeXBlIHZhbHVlKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0VmFsdWUoRGVjb3JhdGVkVHlwZSk7Ci0KLSAgICAgICAgRGVjb3JhdGVkVHlwZSBi
YXNlVmFsdWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRCYXNlVmFsdWUoRGVjb3JhdGVkVHlw
ZSk7Ci0KLSAgICAgICAgLy8gVGVhciBvZmZzIG9ubHkgdXNlZCBieSBiaW5kaW5ncywgbmV2ZXIg
aW4gaW50ZXJuYWwgY29kZQotICAgICAgICBQYXNzUmVmUHRyPFRlYXJPZmY+IGFuaW1hdGVkVGVh
ck9mZigpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKSBjb25zdDsKLQotICAgICAgICB2b2lkIHN0YXJ0
QW5pbWF0aW9uKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc3RvcEFuaW1hdGlvbigpOwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQoKSBjb25z
dDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIFdlJ3JlIGEgbWVtYmVyIHZhcmlhYmxlIG9u
IHN0YWNrLCBsaXZpbmcgaW4gT3duZXJUeXBlLCBOTyBuZWVkIHRvIHJlZiBoZXJlLgotICAgICAg
ICBjb25zdCBPd25lclR5cGUqIG1fb3duZXJUeXBlOwordGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0
ZWRUeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVu
YW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFz
c1R5cGU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFu
aW1hdGVkVHlwZT46OlJldHVyblR5cGUgUmV0dXJuVHlwZTsKIAotICAgICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBtX2F0dHJpYnV0ZU5hbWU7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bV9hdHRyaWJ1dGVJZGVudGlmaWVyOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmY8QW5pbWF0ZWRUeXBlPiBTZWxmOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTxBbmltYXRlZFR5cGU+IENyZWF0b3I7CiAKLSAgICAgICAgbXV0YWJsZSBTeW5jaHJvbml6YWJs
ZVR5cGVXcmFwcGVyPFN0b3JhYmxlVHlwZT4gbV92YWx1ZTsKLQotI2lmbmRlZiBOREVCVUcKLSAg
ICAgICAgYm9vbCBtX3JlZ2lzdGVyZWQ7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmYgaW1wbGVtZW50YXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPd25lclR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
LCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFy
KiBQcm9wZXJ0eU5hbWU+Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8T3duZXJUeXBl
LCBPd25lckVsZW1lbnQsIEFuaW1hdGVkVHlwZSwgRGVjb3JhdGVkVHlwZSwgVGFnTmFtZSwgUHJv
cGVydHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYoY29uc3QgQ3JlYXRvciYgY3Jl
YXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIG93bmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
Ci0gICAgICAgIDogU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxEZWNvcmF0ZWRUeXBlPihhdHRyaWJ1dGVO
YW1lKQotICAgICAgICAsIG1fY3JlYXRvcihjb25zdF9jYXN0PENyZWF0b3ImPihjcmVhdG9yKSkK
LSAgICAgICAgLCBtX293bmVyRWxlbWVudChjb25zdF9jYXN0PE93bmVyRWxlbWVudCo+KG93bmVy
KSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX293bmVyRWxlbWVudCk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBPd25lckVsZW1lbnQsIHR5cGVu
YW1lIEFuaW1hdGVkVHlwZSwgdHlwZW5hbWUgRGVjb3JhdGVkVHlwZSwgY29uc3QgY2hhciogVGFn
TmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgotICAgIERlY29yYXRlZFR5cGUgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmY8T3duZXJUeXBlLCBPd25lckVsZW1lbnQsIEFuaW1hdGVkVHlw
ZSwgRGVjb3JhdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6YmFzZVZhbCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9jcmVhdG9yLmJhc2VWYWx1ZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgT3duZXJFbGVtZW50LCB0
eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIERlY29yYXRlZFR5cGUsIGNvbnN0IGNoYXIq
IFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KLSAgICB2b2lkIFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmPE93bmVyVHlwZSwgT3duZXJFbGVtZW50LCBBbmltYXRlZFR5cGUsIERl
Y29yYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnNldEJhc2VWYWwoRGVjb3JhdGVk
VHlwZSBuZXdCYXNlVmFsKQotICAgIHsKLSAgICAgICAgbV9jcmVhdG9yLnNldEJhc2VWYWx1ZShu
ZXdCYXNlVmFsKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5
cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlLCB0eXBlbmFtZSBEZWNv
cmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+
Ci0gICAgRGVjb3JhdGVkVHlwZSBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxPd25lclR5cGUs
IE93bmVyRWxlbWVudCwgQW5pbWF0ZWRUeXBlLCBEZWNvcmF0ZWRUeXBlLCBUYWdOYW1lLCBQcm9w
ZXJ0eU5hbWU+OjphbmltVmFsKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NyZWF0
b3IudmFsdWUoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5
cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlLCB0eXBlbmFtZSBEZWNv
cmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+
Ci0gICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxPd25lclR5cGUsIE93bmVyRWxl
bWVudCwgQW5pbWF0ZWRUeXBlLCBEZWNvcmF0ZWRUeXBlLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+
OjpzZXRBbmltVmFsKERlY29yYXRlZFR5cGUgbmV3QW5pbVZhbCkKLSAgICB7Ci0gICAgICAgIG1f
Y3JlYXRvci5zZXRWYWx1ZShuZXdBbmltVmFsKTsKLSAgICB9Ci0KLSAgICAvLyBTVkdBbmltYXRl
ZFByb3BlcnR5IGltcGxlbWVudGF0aW9uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBl
QXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0
IGNoYXIqIFByb3BlcnR5TmFtZT4KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFy
ZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFBy
b3BlcnR5KGNvbnN0IE93bmVyVHlwZSogb3duZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAg
ICAgICA6IG1fb3duZXJUeXBlKG93bmVyKQotICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRy
aWJ1dGVOYW1lKQotICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVOYW1l
LmxvY2FsTmFtZSgpKQotICAgICAgICAsIG1fdmFsdWUoKQotI2lmbmRlZiBOREVCVUcKLSAgICAg
ICAgLCBtX3JlZ2lzdGVyZWQoZmFsc2UpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X293bmVyVHlwZSk7Ci0gICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywg
Y29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgotICAgIFNWR0Fu
aW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFBy
b3BlcnR5TmFtZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25lciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIpCi0gICAgICAg
IDogbV9vd25lclR5cGUob3duZXIpCi0gICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0
ZU5hbWUpCi0gICAgICAgICwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZUlkZW50aWZp
ZXIpCi0gICAgICAgICwgbV92YWx1ZSgpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICAsIG1fcmVn
aXN0ZXJlZChmYWxzZSkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBl
KTsKLSAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFy
KiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVDE+Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlw
ZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBP
d25lclR5cGUqIG93bmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBhcmcxKQotICAgICAgICA6IG1fb3du
ZXJUeXBlKG93bmVyKQotICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQot
ICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgp
KQotICAgICAgICAsIG1fdmFsdWUoYXJnMSkKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV9y
ZWdpc3RlcmVkKGZhbHNlKQotI2VuZGlmCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VsZj4gY3Jl
YXRlKENyZWF0b3ImIGNyZWF0b3IsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKLSAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlbGYoY3JlYXRvciwgY29udGV4dEVsZW1l
bnQpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVu
YW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJv
cGVydHlOYW1lPgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgIFNWR0FuaW1hdGVkUHJv
cGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFt
ZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25lciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgYXJnMSkKLSAgICAgICAgOiBtX293
bmVyVHlwZShvd25lcikKLSAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkK
LSAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRpZmllcikKLSAg
ICAgICAgLCBtX3ZhbHVlKGFyZzEpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICAsIG1fcmVnaXN0
ZXJlZChmYWxzZSkKLSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlVmFsKFBhc3NUeXBl
IHR5cGUpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOwotICAgICAgICByZWdp
c3RlclByb3BlcnR5KCk7CisgICAgICAgIG1fY3JlYXRvci5zZXRCYXNlVmFsdWUodHlwZSk7Cisg
ICAgICAgIG1fY29udGV4dEVsZW1lbnQtPnNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoZmFs
c2UpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5h
bWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9w
ZXJ0eU5hbWU+Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIFNW
R0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUs
IFByb3BlcnR5TmFtZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25l
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUMSYgYXJnMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQyJiBhcmcyKQotICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVy
KQotICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQotICAgICAgICAsIG1f
YXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKQotICAgICAgICAs
IG1fdmFsdWUoYXJnMSwgYXJnMikKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV9yZWdpc3Rl
cmVkKGZhbHNlKQotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoUGFzc1R5cGUg
dHlwZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7Ci0gICAgICAgIHJlZ2lz
dGVyUHJvcGVydHkoKTsKKyAgICAgICAgbV9jcmVhdG9yLnNldFZhbHVlKHR5cGUpOworICAgICAg
ICBtX2NvbnRleHRFbGVtZW50LT5zZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1dGVzKGZhbHNlKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFu
aW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlO
YW1lPgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBTVkdBbmlt
YXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9w
ZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSogb3duZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlmaWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGFyZzEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYXJnMikKLSAgICAg
ICAgOiBtX293bmVyVHlwZShvd25lcikKLSAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmli
dXRlTmFtZSkKLSAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRp
ZmllcikKLSAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIpCi0jaWZuZGVmIE5ERUJVRwotICAg
ICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fb3duZXJUeXBlKTsKLSAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwotICAgIH0KKyAgICB2
aXJ0dWFsIFJldHVyblR5cGUgYmFzZVZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRvci5iYXNl
VmFsdWUoKTsgfQorICAgIHZpcnR1YWwgUmV0dXJuVHlwZSBhbmltVmFsKCkgY29uc3QgeyByZXR1
cm4gbV9jcmVhdG9yLnZhbHVlKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdG9yLmFzc29j
aWF0ZWRBdHRyaWJ1dGVOYW1lKCk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlw
ZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25z
dCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMz4KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywg
QW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFByb3Bl
cnR5KGNvbnN0IE93bmVyVHlwZSogb3duZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGFyZzEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYXJnMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiBhcmczKQot
ICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVyKQotICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShh
dHRyaWJ1dGVOYW1lKQotICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVO
YW1lLmxvY2FsTmFtZSgpKQotICAgICAgICAsIG1fdmFsdWUoYXJnMSwgYXJnMiwgYXJnMykKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV9yZWdpc3RlcmVkKGZhbHNlKQotI2VuZGlmCitwcml2
YXRlOgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKENyZWF0b3ImIGNyZWF0b3IsIFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgICAgICA6IG1fY3JlYXRvcihjcmVhdG9yKQor
ICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9vd25lclR5cGUpOwotICAgICAgICByZWdpc3RlclByb3BlcnR5KCk7CisgICAg
ICAgIG1fY3JlYXRvci5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywg
Y29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVy
dHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUqIG93bmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBhcmcxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFyZzIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgYXJnMykKLSAgICAg
ICAgOiBtX293bmVyVHlwZShvd25lcikKLSAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmli
dXRlTmFtZSkKLSAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRp
ZmllcikKLSAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIsIGFyZzMpCi0jaWZuZGVmIE5ERUJV
RwotICAgICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKLSNlbmRpZgorICAgIHZpcnR1YWwgflNW
R0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX293bmVy
VHlwZSk7Ci0gICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoKTsKKyAgICAgICAgbV9jcmVhdG9yLnNl
dFNob3VsZFN5bmNocm9uaXplKGZhbHNlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFn
TmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgotICAgIHR5cGVuYW1lIFNWR0FuaW1hdGVk
UHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5
TmFtZT46OkRlY29yYXRlZFR5cGUKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFy
ZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+Ojp2YWx1ZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKLSAgICAgICAgcmV0dXJuIG1f
dmFsdWU7Ci0gICAgfQorICAgIENyZWF0b3ImIG1fY3JlYXRvcjsKKyAgICBSZWZQdHI8U1ZHRWxl
bWVudD4gbV9jb250ZXh0RWxlbWVudDsKK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwg
Y29uc3QgY2hhciogUHJvcGVydHlOYW1lPgotICAgIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxP
d25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6c2V0
VmFsdWUodHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6RGVjb3JhdGVkVHlwZSBuZXdWYWx1
ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3JlZ2lzdGVyZWQpOwotICAgICAgICBtX3ZhbHVl
ID0gbmV3VmFsdWU7Ci0gICAgICAgIG93bmVyRWxlbWVudCgpLT5zZXRTeW5jaHJvbml6ZWRTVkdB
dHRyaWJ1dGVzKGZhbHNlKTsKLSAgICB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+
CitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdB
bmltYXRlZFByb3BlcnR5KCkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVB
cmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3Qg
Y2hhciogUHJvcGVydHlOYW1lPgotICAgIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHk8T3du
ZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OkRlY29y
YXRlZFR5cGUKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRU
eXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpiYXNlVmFsdWUoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fcmVnaXN0ZXJlZCk7Ci0gICAgICAgIGNvbnN0IE93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50ID0gdGhpcy0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IG93bmVyRWxlbWVudC0+YWNjZXNzRG9jdW1lbnRT
VkdFeHRlbnNpb25zKCk7Ci0gICAgICAgIGlmIChleHRlbnNpb25zICYmIGV4dGVuc2lvbnMtPmhh
c0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRp
ZmllcikpCi0gICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9ucy0+YmFzZVZhbHVlPERlY29yYXRl
ZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKTsKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5
cGUgUGFzc1R5cGU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6U3RvcmVkVHlw
ZSBTdG9yZWRUeXBlOwogCi0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBj
b25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdm9pZCBT
VkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1l
LCBQcm9wZXJ0eU5hbWU+OjpzZXRCYXNlVmFsdWUodHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6RGVjb3JhdGVkVHlwZSBuZXdWYWx1ZSkKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5KCkKKyAg
ICAgICAgOiBtX3ZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6
bnVsbCgpKQorICAgICAgICAsIG1fc2hvdWxkU3luY2hyb25pemUoZmFsc2UpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKLSAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKTsKLSAgICAgICAgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zKiBleHRlbnNpb25zID0gb3duZXJFbGVtZW50LT5hY2Nlc3NEb2N1bWVudFNWR0V4
dGVuc2lvbnMoKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnMgJiYgZXh0ZW5zaW9ucy0+aGFzQmFz
ZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVy
KSkgewotICAgICAgICAgICAgZXh0ZW5zaW9ucy0+c2V0QmFzZVZhbHVlPERlY29yYXRlZFR5cGU+
KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyLCBuZXdWYWx1ZSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPbmx5IHVwZGF0ZSBzdG9yZWQg
cHJvcGVydHksIGlmIG5vdCBhbmltYXRpbmcKLSAgICAgICAgbV92YWx1ZSA9IG5ld1ZhbHVlOwot
ICAgICAgICBvd25lckVsZW1lbnQtPnNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoZmFsc2Up
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUg
QW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0
eU5hbWU+Ci0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVy
VHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpUZWFyT2Zm
PgotICAgIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcs
IFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OmFuaW1hdGVkVGVhck9mZigpIGNvbnN0CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+CisgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxKQorICAgICAgICA6
IG1fdmFsdWUodmFsdWUxKQorICAgICAgICAsIG1fc2hvdWxkU3luY2hyb25pemUoZmFsc2UpCiAg
ICAgewotICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKLSAgICAgICAgcmV0dXJuIGxvb2t1
cE9yQ3JlYXRlV3JhcHBlcjxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwg
UHJvcGVydHlOYW1lLCBUZWFyT2ZmLCBPd25lckVsZW1lbnQ+KCp0aGlzLCBvd25lckVsZW1lbnQo
KSwgbV9hdHRyaWJ1dGVOYW1lLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJn
LCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdm9p
ZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdO
YW1lLCBQcm9wZXJ0eU5hbWU+OjpyZWdpc3RlclByb3BlcnR5KCkKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSwgdHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0
ZXJUd28+CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRl
ck9uZSYgdmFsdWUxLCBjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKQorICAg
ICAgICA6IG1fdmFsdWUodmFsdWUxLCB2YWx1ZTIpCisgICAgICAgICwgbV9zaG91bGRTeW5jaHJv
bml6ZShmYWxzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9yZWdpc3RlcmVkKTsKLSAgICAg
ICAgb3duZXJFbGVtZW50KCktPnByb3BlcnR5Q29udHJvbGxlcigpLnJlZ2lzdGVyUHJvcGVydHko
bV9hdHRyaWJ1dGVOYW1lLCB0aGlzKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9yZWdp
c3RlcmVkID0gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1l
LCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5
PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+Ojpz
eW5jaHJvbml6ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsK
LSAgICAgICAgaWYgKCFtX3ZhbHVlLm5lZWRzU3luY2hyb25pemF0aW9uKCkpIAotICAgICAgICAg
ICAgcmV0dXJuOyAKKyAgICBSZXR1cm5UeXBlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+Ojp0b1JldHVyblR5cGUobV92YWx1ZSk7
IH0KKyAgICBSZXR1cm5UeXBlIGJhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUpOyB9CiAK
LSAgICAgICAgUHJvcGVydHlTeW5jaHJvbml6ZXI8T3duZXJFbGVtZW50LCBEZWNvcmF0ZWRUeXBl
LCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXpl
KG93bmVyRWxlbWVudCgpLCBtX2F0dHJpYnV0ZU5hbWUsIGJhc2VWYWx1ZSgpKTsKLSAgICAgICAg
bV92YWx1ZS5zZXRTeW5jaHJvbml6ZWQoKTsgCi0gICAgfQorICAgIHZvaWQgc2V0VmFsdWUoUGFz
c1R5cGUgdHlwZSkgeyBtX3ZhbHVlID0gdHlwZTsgfQorICAgIHZvaWQgc2V0QmFzZVZhbHVlKFBh
c3NUeXBlIHR5cGUpIHsgbV92YWx1ZSA9IHR5cGU7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdO
YW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdm9pZCBTVkdBbmltYXRlZFByb3Bl
cnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+
OjpzdGFydEFuaW1hdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZWdpc3Rl
cmVkKTsKLSAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSB0aGlzLT5v
d25lckVsZW1lbnQoKTsKLSAgICAgICAgaWYgKFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5z
aW9ucyA9IG93bmVyRWxlbWVudC0+YWNjZXNzRG9jdW1lbnRTVkdFeHRlbnNpb25zKCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVCghZXh0ZW5zaW9ucy0+aGFzQmFzZVZhbHVlPERlY29yYXRlZFR5cGU+
KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKSk7Ci0gICAgICAgICAgICBleHRl
bnNpb25zLT5zZXRCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJp
YnV0ZUlkZW50aWZpZXIsIG1fdmFsdWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBj
b25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Ci0gICAgdm9pZCBT
VkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1l
LCBQcm9wZXJ0eU5hbWU+OjpzdG9wQW5pbWF0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3JlZ2lzdGVyZWQpOwotICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9
IHRoaXMtPm93bmVyRWxlbWVudCgpOwotICAgICAgICBpZiAoU1ZHRG9jdW1lbnRFeHRlbnNpb25z
KiBleHRlbnNpb25zID0gb3duZXJFbGVtZW50LT5hY2Nlc3NEb2N1bWVudFNWR0V4dGVuc2lvbnMo
KSkgewotICAgICAgICAgICAgQVNTRVJUKGV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0
ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpOwotICAgICAgICAg
ICAgc2V0VmFsdWUoZXh0ZW5zaW9ucy0+YmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxl
bWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKSk7Ci0gICAgICAgICAgICBleHRlbnNpb25zLT5y
ZW1vdmVCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJpYnV0ZUlk
ZW50aWZpZXIpOwotICAgICAgICB9Ci0gICAgfQorICAgIGJvb2wgc2hvdWxkU3luY2hyb25pemUo
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN5bmNocm9uaXplOyB9CisgICAgdm9pZCBzZXRTaG91
bGRTeW5jaHJvbml6ZShib29sIHZhbHVlKSB7IG1fc2hvdWxkU3luY2hyb25pemUgPSB2YWx1ZTsg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRl
ZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4K
LSAgICBjb25zdCB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5p
bWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpPd25lckVsZW1lbnQqCi0gICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFt
ZSwgUHJvcGVydHlOYW1lPjo6b3duZXJFbGVtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBPd25lckVsZW1lbnRGb3JUeXBlOjpvd25lckVsZW1lbnQobV9vd25lclR5cGUpOwotICAg
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lKCkgY29uc3QgPSAwOwogCi0gICAgLy8gR2V0T3duZXJFbGVtZW50Rm9yVHlwZSBpbXBsZW1l
bnRhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KLSAgICBzdHJ1Y3QgR2V0
T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIHRydWU+IDogTm9uY29weWFibGUgewotICAg
ICAgICB0eXBlZGVmIE93bmVyVHlwZSBPd25lckVsZW1lbnQ7Ci0KLSAgICAgICAgc3RhdGljIGNv
bnN0IE93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KGNvbnN0IE93bmVyVHlwZSogdHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHR5cGU7Ci0gICAgICAgIH0KLSAgICB9OwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgotICAgIHN0cnVjdCBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgZmFsc2U+IDogTm9uY29weWFibGUgeyAgICAKLSAgICAgICAg
dHlwZWRlZiBTVkdFbGVtZW50IE93bmVyRWxlbWVudDsKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQoY29uc3QgT3duZXJUeXBlKiB0eXBlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIGNvbnRleHQgPSB0eXBlLT5jb250
ZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQ7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgLy8gSXNEZXJpdmVkRnJv
bVNWR0VsZW1lbnQgaW1wbGVtZW50YXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5
cGU+Ci0gICAgc3RydWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IDogTm9uY29weWFibGUgewot
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci0gICAgfTsKLQotICAgIGNs
YXNzIFNWR1ZpZXdTcGVjOwotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgSXNEZXJpdmVkRnJv
bVNWR0VsZW1lbnQ8U1ZHVmlld1NwZWM+IDogTm9uY29weWFibGUgewotICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgIH07Ci0KLSAgICAvLyBQcm9wZXJ0eVN5bmNo
cm9uaXplciBpbXBsZW1lbnRhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyRWxlbWVu
dCwgdHlwZW5hbWUgRGVjb3JhdGVkVHlwZT4KLSAgICBzdHJ1Y3QgUHJvcGVydHlTeW5jaHJvbml6
ZXI8T3duZXJFbGVtZW50LCBEZWNvcmF0ZWRUeXBlLCB0cnVlPiA6IE5vbmNvcHlhYmxlIHsKLSAg
ICAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUoY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIERlY29yYXRlZFR5cGUg
YmFzZVZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZH
QW5pbWF0ZWRUeXBlVmFsdWU8RGVjb3JhdGVkVHlwZT46OnRvU3RyaW5nKGJhc2VWYWx1ZSkpOwot
Ci0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIG5hbWVkQXR0ck1hcCA9IG93bmVyRWxlbWVudC0+
YXR0cmlidXRlcyhmYWxzZSk7IAotICAgICAgICAgICAgQXR0cmlidXRlKiBvbGQgPSBuYW1lZEF0
dHJNYXAtPmdldEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7Ci0gICAgICAgICAgICBpZiAo
b2xkICYmIHZhbHVlLmlzTnVsbCgpKSAKLSAgICAgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnJl
bW92ZUF0dHJpYnV0ZShvbGQtPm5hbWUoKSk7IAotICAgICAgICAgICAgZWxzZSBpZiAoIW9sZCAm
JiAhdmFsdWUuaXNOdWxsKCkpIAotICAgICAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+YWRkQXR0
cmlidXRlKGNvbnN0X2Nhc3Q8T3duZXJFbGVtZW50Kj4ob3duZXJFbGVtZW50KS0+Y3JlYXRlQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUsIHZhbHVlKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChvbGQg
JiYgIXZhbHVlLmlzTnVsbCgpKSAKLSAgICAgICAgICAgICAgICBvbGQtPnNldFZhbHVlKHZhbHVl
KTsgCi0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJFbGVt
ZW50LCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlPgotICAgIHN0cnVjdCBQcm9wZXJ0eVN5bmNocm9u
aXplcjxPd25lckVsZW1lbnQsIERlY29yYXRlZFR5cGUsIGZhbHNlPiA6IE5vbmNvcHlhYmxlIHsK
LSAgICAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUoY29uc3QgT3duZXJFbGVtZW50KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERlY29yYXRlZFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIG5vLW9wLCBmb3IgdHlwZXMgbm90IGluaGVyaXRpbmcgZnJvbSBFbGVtZW50LCB0aHVzIG5v
dGhpbmcgdG8gc3luY2hyb25pemUKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvLyBIZWxwZXIg
bWFjcm8gdXNlZCB0byByZWdpc3RlciBhbmltYXRlZCBwcm9wZXJ0aWVzIHdpdGhpbiBTVkcqIGNs
YXNzZXMKLSAgICAjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhPd25lclR5
cGUsIEVsZW1lbnRUYWcsIEF0dHJpYnV0ZVRhZywgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KSBcCi0gICAgcHJpdmF0ZTogXAotICAgICAgICB0eXBlZGVmIFNWR0Fu
aW1hdGVkUHJvcGVydHk8T3duZXJUeXBlLCBBbmltYXRlZFR5cGUsIEVsZW1lbnRUYWcsIEF0dHJp
YnV0ZVRhZz4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eTsgXAotICAgICAgICB0
eXBlZGVmIFNWR0FuaW1hdGVkVHlwZVZhbHVlPEFuaW1hdGVkVHlwZT46OkRlY29yYXRlZFR5cGUg
RGVjb3JhdGVkVHlwZUZvciMjVXBwZXJQcm9wZXJ0eTsgXAotICAgICAgICBTVkdBbmltYXRlZFBy
b3BlcnR5IyNVcHBlclByb3BlcnR5IG1fIyNMb3dlclByb3BlcnR5OyBcCi0gICAgcHVibGljOiBc
Ci0gICAgICAgIERlY29yYXRlZFR5cGVGb3IjI1VwcGVyUHJvcGVydHkgTG93ZXJQcm9wZXJ0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKCk7IH0gXAotICAgICAgICB2
b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShEZWNvcmF0ZWRUeXBlRm9yIyNVcHBlclByb3BlcnR5IHR5
cGUpIHsgbV8jI0xvd2VyUHJvcGVydHkuc2V0VmFsdWUodHlwZSk7IH0gXAotICAgICAgICBEZWNv
cmF0ZWRUeXBlRm9yIyNVcHBlclByb3BlcnR5IExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LmJhc2VWYWx1ZSgpOyB9IFwKLSAgICAgICAg
dm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShEZWNvcmF0ZWRUeXBlRm9yIyNVcHBl
clByb3BlcnR5IHR5cGUpIHsgbV8jI0xvd2VyUHJvcGVydHkuc2V0QmFzZVZhbHVlKHR5cGUpOyB9
IFwKLSAgICAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5
OjpUZWFyT2ZmPiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNM
b3dlclByb3BlcnR5LmFuaW1hdGVkVGVhck9mZigpOyB9Citwcm90ZWN0ZWQ6CisgICAgU3RvcmVk
VHlwZSBtX3ZhbHVlOworICAgIGJvb2wgbV9zaG91bGRTeW5jaHJvbml6ZTsKK307CiAKIH07CiAK
Ky8vIEhlbHBlciBtYWNybyB1c2VkIHdpdGhpbiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZIGJl
bG93CisjZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KSBcCitjbGFzcyBTVkdBbmltYXRlZFBy
b3BlcnR5IyNVcHBlclByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0
ZWRUeXBlPiB7IFwKK3B1YmxpYzogXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJv
cGVydHkoKSBcCisgICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+KCkg
XAorICAgIHsgXAorICAgIH0gXAorICAgIFwKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1
Y3RvclBhcmFtZXRlck9uZT4gXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVy
dHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkgXAorICAgICAgICA6IFNW
R0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEpIFwKKyAgICB7IFwKKyAgICB9
IFwKKyAgICBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUs
IHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvPiBcCisgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSMjVXBwZXJQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUx
LCBjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKSBcCisgICAgICAgIDogU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+KHZhbHVlMSwgdmFsdWUyKSBcCisgICAgeyBc
CisgICAgfSBcCisgICAgXAorICAgIHZvaWQgc3luY2hyb25pemUoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKG1fc2hvdWxkU3luY2hyb25pemUp
OyBcCisgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PEFuaW1hdGVkVHlwZT46OnRvU3RyaW5nKGJhc2VWYWx1ZSgpKSk7IFwKKyAgICAgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5
cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZh
bHVlKTsgXAorICAgIH0gXAorICAgIFwKKyAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1
cm4gRE9NQXR0cmlidXRlOyBcCisgICAgfSBcCit9CisKKy8vIEhlbHBlciBtYWNybyBzaGFyZWQg
YnkgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWSAvIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlf
TVVMVElQTEVfV1JBUFBFUlMKKyNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9TSEFS
RUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIEFu
aW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAorcHJpdmF0ZTogXAor
ICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8QW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eTsgXAorICAgIERFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBl
clByb3BlcnR5KTsgXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkgbV8j
I0xvd2VyUHJvcGVydHk7IFwKKyAgICBcCitwdWJsaWM6IFwKKyAgICBTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0
IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKCk7IFwK
KyAgICB9IFwKKyAgICBcCisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5
cGU+OjpSZXR1cm5UeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKKyAgICB7
IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LmJhc2VWYWx1ZSgpOyBcCisgICAg
fSBcCisgICAgXAorICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5KFNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgdHlwZSkgXAorICAgIHsgXAorICAgICAg
ICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRWYWx1ZSh0eXBlKTsgXAorICAgICAgICBTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlz
KTsgXAorICAgICAgICBjb250ZXh0RWxlbWVudC0+c2V0U3luY2hyb25pemVkU1ZHQXR0cmlidXRl
cyhmYWxzZSk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkj
I0Jhc2VWYWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NU
eXBlIHR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0QmFzZVZh
bHVlKHR5cGUpOyBcCisgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3du
ZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVy
VHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCisgICAgICAgIGNvbnRleHRFbGVt
ZW50LT5zZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1dGVzKGZhbHNlKTsgXAorICAgIH0gXAorICAg
IFwKKyAgICB2b2lkIHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCkgXAorICAgIHsgXAorICAg
ICAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKCkpIFwKKyAgICAg
ICAgICAgIHJldHVybjsgXAorICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdl
dE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxP
d25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAorICAgICAgICBtXyMjTG93
ZXJQcm9wZXJ0eS5zeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCk7IFwKKyAgICB9IFwKKyAgICBc
CisgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0
eT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCisgICAgeyBcCisgICAgICAgIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElz
RGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRo
aXMpOyBcCisgICAgICAgIHJldHVybiBsb29rdXBPckNyZWF0ZVdyYXBwZXI8QW5pbWF0ZWRUeXBl
LCBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eT4oY29udGV4dEVsZW1l
bnQsIG1fIyNMb3dlclByb3BlcnR5LCBET01BdHRyaWJ1dGUpOyBcCisgICAgfQorCisvLyBVc2Vk
IGZvciBTVkcgRE9NIHByb3BlcnRpZXMgdGhhdCBtYXAgZXhhY3RseSB0byBvbmUgWE1MIERPTSBh
dHRyaWJ1dGUKKyNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBc
CitERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX1NIQVJFRChPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpCisKKy8vIFVzZWQgZm9yIHRoZSByYXJlIGNhc2UgbXVsdGlwbGUgU1ZH
IERPTSBwcm9wZXJ0aWVzIHRoYXQgbWFwIHRvIHRoZSBzYW1lIFhNTCBkb20gYXR0cmlidXRlCisj
ZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIEFuaW1hdGVkVHlw
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAorREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50
aWZpZXIsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKKwogI2Vu
ZGlmCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJv
bml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5U3lu
Y2hyb25pemVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNpZm5kZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcl9o
CisjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXJfaAorCisjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgorCisjaWYgRU5BQkxFKFNWRykKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR0VsZW1lbnQ7CisKKyAgICAvLyBHZXRPd25lckVs
ZW1lbnRGb3JUeXBlIGltcGxlbWVudGF0aW9uCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJU
eXBlLCBib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50PgorICAgIHN0cnVjdCBHZXRPd25lckVs
ZW1lbnRGb3JUeXBlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorICAgIHN0
cnVjdCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgdHJ1ZT4gOiBwdWJsaWMgTm9u
Y29weWFibGUgeworICAgICAgICBzdGF0aWMgU1ZHRWxlbWVudCogb3duZXJFbGVtZW50KE93bmVy
VHlwZSogdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorICAgIHN0cnVj
dCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgZmFsc2U+IDogcHVibGljIE5vbmNv
cHlhYmxlIHsgICAgCisgICAgICAgIHN0YXRpYyBTVkdFbGVtZW50KiBvd25lckVsZW1lbnQoT3du
ZXJUeXBlKiB0eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0
ID0gdHlwZS0+Y29udGV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0KTsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAgICB9CisgICAgfTsKKworICAgIC8v
IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IGltcGxlbWVudGF0aW9uCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3duZXJUeXBlPgorICAgIHN0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudCA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsKKyAgICB9OworCisgICAgY2xhc3MgU1ZHVmlld1NwZWM7CisgICAgdGVtcGxhdGU8PgorICAg
IHN0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxTVkdWaWV3U3BlYz4gOiBwdWJsaWMgTm9u
Y29weWFibGUgeworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOworICAg
IH07CisKKyAgICAvLyBIZWxwZXIgdGVtcGxhdGUgdXNlZCBmb3Igc3luY2hyb25pemluZyBTVkcg
PC0+IFhNTCBwcm9wZXJ0aWVzCisgICAgdGVtcGxhdGU8Ym9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxl
bWVudD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplciB7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4KKyAg
ICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPiB7CisgICAgICAg
IHN0YXRpYyB2b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIE5hbWVkTm9kZU1hcCogbmFtZWRBdHRyTWFwID0gb3duZXJFbGVt
ZW50LT5hdHRyaWJ1dGVzKGZhbHNlKTsgCisgICAgICAgICAgICBBdHRyaWJ1dGUqIG9sZCA9IG5h
bWVkQXR0ck1hcC0+Z2V0QXR0cmlidXRlSXRlbShhdHRyTmFtZSk7CisgICAgICAgICAgICBpZiAo
b2xkICYmIHZhbHVlLmlzTnVsbCgpKSAKKyAgICAgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnJl
bW92ZUF0dHJpYnV0ZShvbGQtPm5hbWUoKSk7IAorICAgICAgICAgICAgZWxzZSBpZiAoIW9sZCAm
JiAhdmFsdWUuaXNOdWxsKCkpIAorICAgICAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+YWRkQXR0
cmlidXRlKG93bmVyRWxlbWVudC0+Y3JlYXRlQXR0cmlidXRlKGF0dHJOYW1lLCB2YWx1ZSkpOwor
ICAgICAgICAgICAgZWxzZSBpZiAob2xkICYmICF2YWx1ZS5pc051bGwoKSkgCisgICAgICAgICAg
ICAgICAgb2xkLT5zZXRWYWx1ZSh2YWx1ZSk7IAorICAgICAgICB9CisgICAgfTsKKworICAgIHRl
bXBsYXRlPD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxmYWxz
ZT4geworICAgICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZShTVkdFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIG5vLW9wLCBmb3IgdHlwZXMgbm90IGluaGVyaXRpbmcgZnJvbSBFbGVtZW50LCB0aHVz
IG5vdGhpbmcgdG8gc3luY2hyb25pemUKKyAgICAgICAgfQorICAgIH07CisKK307CisKKyNlbmRp
ZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0c19oCisjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHNfaAorCisjaWYgRU5BQkxF
KFNWRykKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCisjaW5jbHVk
ZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKKyNpbmNsdWRl
ICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgor
ICAgIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzIDogcHVibGljIE5vbmNvcHlhYmxl
IHsgfTsKKworICAgIC8vIFNWR0FuaW1hdGVkQW5nbGUKKyAgICB0ZW1wbGF0ZTw+CisgICAgc3Ry
dWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHQW5nbGU+IDogcHVibGljIE5vbmNvcHlh
YmxlIHsKKyAgICAgICAgdHlwZWRlZiBjb25zdCBTVkdBbmdsZSYgUGFzc1R5cGU7CisgICAgICAg
IHR5cGVkZWYgU1ZHQW5nbGUgUmV0dXJuVHlwZTsKKyAgICAgICAgdHlwZWRlZiBTVkdBbmdsZSBT
dG9yZWRUeXBlOworCisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBT
VkdBbmdsZSgpOyB9CisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25z
dCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9CisgICAgICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7
IH0KKyAgICB9OworCisgICAgLy8gU1ZHQW5pbWF0ZWRCb29sZWFuCisgICAgdGVtcGxhdGU8Pgor
ICAgIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGJvb2w+IDogcHVibGljIE5vbmNv
cHlhYmxlIHsKKyAgICAgICAgdHlwZWRlZiBjb25zdCBib29sJiBQYXNzVHlwZTsKKyAgICAgICAg
dHlwZWRlZiBib29sIFJldHVyblR5cGU7CisgICAgICAgIHR5cGVkZWYgYm9vbCBTdG9yZWRUeXBl
OworCisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYg
dHlwZSkgeyByZXR1cm4gdHlwZTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBh
c3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9CisgICAgfTsK
KworICAgIC8vIFNWR0FuaW1hdGVkRW51bWVyYXRpb24KKyAgICB0ZW1wbGF0ZTw+CisgICAgc3Ry
dWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8aW50PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CisgICAgICAgIHR5cGVkZWYgY29uc3QgaW50JiBQYXNzVHlwZTsKKyAgICAgICAgdHlwZWRlZiBp
bnQgUmV0dXJuVHlwZTsKKyAgICAgICAgdHlwZWRlZiBpbnQgU3RvcmVkVHlwZTsKKworICAgICAg
ICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMDsgfQorICAgICAgICBzdGF0aWMg
UmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4g
dHlwZTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsg
cmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9CisgICAgfTsKKworICAgIC8vIFNWR0FuaW1h
dGVkSW50ZWdlcgorICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0czxsb25nPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgY29u
c3QgbG9uZyYgUGFzc1R5cGU7CisgICAgICAgIHR5cGVkZWYgbG9uZyBSZXR1cm5UeXBlOworICAg
ICAgICB0eXBlZGVmIGxvbmcgU3RvcmVkVHlwZTsKKworICAgICAgICBzdGF0aWMgUmV0dXJuVHlw
ZSBudWxsKCkgeyByZXR1cm4gMGw7IH0KKyAgICAgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1
cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICAgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51
bWJlcih0eXBlKTsgfQorICAgIH07CisKKyAgICAvLyBTVkdBbmltYXRlZExlbmd0aAorICAgIHRl
bXBsYXRlPD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICAgICAgdHlwZWRlZiBjb25zdCBTVkdMZW5ndGgm
IFBhc3NUeXBlOworICAgICAgICB0eXBlZGVmIFNWR0xlbmd0aCBSZXR1cm5UeXBlOworICAgICAg
ICB0eXBlZGVmIFNWR0xlbmd0aCBTdG9yZWRUeXBlOworCisgICAgICAgIHN0YXRpYyBSZXR1cm5U
eXBlIG51bGwoKSB7IHJldHVybiBTVkdMZW5ndGgoKTsgfQorICAgICAgICBzdGF0aWMgUmV0dXJu
VHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZTsg
fQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJu
IHR5cGUudmFsdWVBc1N0cmluZygpOyB9CisgICAgfTsKKworICAgIC8vIFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdAorICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0czxTVkdMZW5ndGhMaXN0Kj4gOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICB0eXBl
ZGVmIFNWR0xlbmd0aExpc3QqIFBhc3NUeXBlOworICAgICAgICB0eXBlZGVmIFNWR0xlbmd0aExp
c3QqIFJldHVyblR5cGU7CisgICAgICAgIHR5cGVkZWYgUmVmUHRyPFNWR0xlbmd0aExpc3Q+IFN0
b3JlZFR5cGU7CisKKyAgICAgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJuIDA7
IH0KKyAgICAgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5
cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUuZ2V0KCk7IH0KKyAgICAgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8gdHlwZS0+dmFsdWVBc1N0cmlu
ZygpIDogU3RyaW5nKCk7IH0KKyAgICB9OworCisgICAgLy8gU1ZHQW5pbWF0ZWROdW1iZXIKKyAg
ICB0ZW1wbGF0ZTw+CisgICAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8ZmxvYXQ+
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICAgICAgdHlwZWRlZiBjb25zdCBmbG9hdCYgUGFz
c1R5cGU7CisgICAgICAgIHR5cGVkZWYgZmxvYXQgUmV0dXJuVHlwZTsKKyAgICAgICAgdHlwZWRl
ZiBmbG9hdCBTdG9yZWRUeXBlOworCisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7
IHJldHVybiAwLjBmOyB9CisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShj
b25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9CisgICAgICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlw
ZSk7IH0KKyAgICB9OworCisgICAgLy8gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0CisgICAgdGVtcGxh
dGU8PgorICAgIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR051bWJlckxpc3Qq
PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgU1ZHTnVtYmVyTGlzdCog
UGFzc1R5cGU7CisgICAgICAgIHR5cGVkZWYgU1ZHTnVtYmVyTGlzdCogUmV0dXJuVHlwZTsKKyAg
ICAgICAgdHlwZWRlZiBSZWZQdHI8U1ZHTnVtYmVyTGlzdD4gU3RvcmVkVHlwZTsKKworICAgICAg
ICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMDsgfQorICAgICAgICBzdGF0aWMg
UmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4g
dHlwZS5nZXQoKTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5
cGUpIHsgcmV0dXJuIHR5cGUgPyB0eXBlLT52YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQor
ICAgIH07CisKKyAgICAvLyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8KKyAgICB0ZW1w
bGF0ZTw+CisgICAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4gOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICB0eXBlZGVmIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIFBhc3NUeXBlOworICAgICAgICB0eXBlZGVmIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8gUmV0dXJuVHlwZTsKKyAgICAgICAgdHlwZWRlZiBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvIFN0b3JlZFR5cGU7CisKKyAgICAgICAgc3RhdGljIFJldHVyblR5cGUgbnVs
bCgpIHsgcmV0dXJuIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKTsgfQorICAgICAgICBzdGF0aWMg
UmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4g
dHlwZTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsg
cmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9CisgICAgfTsKKworICAgIC8vIFNWR0FuaW1h
dGVkUmVjdAorICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0czxGbG9hdFJlY3Q+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICAgICAgdHlwZWRlZiBj
b25zdCBGbG9hdFJlY3QmIFBhc3NUeXBlOworICAgICAgICB0eXBlZGVmIEZsb2F0UmVjdCBSZXR1
cm5UeXBlOworICAgICAgICB0eXBlZGVmIEZsb2F0UmVjdCBTdG9yZWRUeXBlOworCisgICAgICAg
IHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorICAgICAg
ICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkg
eyByZXR1cm4gdHlwZTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBl
IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAlZiIsIHR5cGUueCgpLCB0
eXBlLnkoKSwgdHlwZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKTsgfQorICAgIH07CisKKyAgICAv
LyBTVkdBbmltYXRlZFN0cmluZworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxTdHJpbmc+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICAgICAg
dHlwZWRlZiBjb25zdCBTdHJpbmcmIFBhc3NUeXBlOworICAgICAgICB0eXBlZGVmIFN0cmluZyBS
ZXR1cm5UeXBlOworICAgICAgICB0eXBlZGVmIFN0cmluZyBTdG9yZWRUeXBlOworCisgICAgICAg
IHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgICAgICBz
dGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyBy
ZXR1cm4gdHlwZTsgfQorICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5
cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICB9OworCisgICAgLy8gU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0CisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPFNWR1RyYW5zZm9ybUxpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5
cGVkZWYgU1ZHVHJhbnNmb3JtTGlzdCogUGFzc1R5cGU7CisgICAgICAgIHR5cGVkZWYgU1ZHVHJh
bnNmb3JtTGlzdCogUmV0dXJuVHlwZTsKKyAgICAgICAgdHlwZWRlZiBSZWZQdHI8U1ZHVHJhbnNm
b3JtTGlzdD4gU3RvcmVkVHlwZTsKKworICAgICAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkg
eyByZXR1cm4gMDsgfQorICAgICAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29u
c3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5nZXQoKTsgfQorICAgICAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyB0eXBlLT52
YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQorICAgIH07CisKK30KKworI2VuZGlmCisjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJKHJldmlzaW9uIDUzODY5KQorKysg
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwx
MSArMjIsNyBAQAogI2RlZmluZSBTVkdBbmltYXRlZFRlbXBsYXRlX2gKIAogI2lmIEVOQUJMRShT
VkcpCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0j
aW5jbHVkZSAiU1ZHQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0cy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEwMywxOCArOTksMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAg
fTsKICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXJlVHlwZT4KLSAgICBjbGFzcyBTVkdBbmlt
YXRlZFRlbXBsYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxCYXJl
VHlwZT4gPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgorICAgIGNsYXNz
IFNWR0FuaW1hdGVkVGVtcGxhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmltYXRlZFRlbXBs
YXRlPEFuaW1hdGVkVHlwZT4gPiB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFz
c1R5cGU7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7CisKICAgICAgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRUZW1wbGF0ZSgpIHsgZm9yZ2V0V3JhcHBlcih0aGlzKTsgfQogCi0gICAg
ICAgIHZpcnR1YWwgQmFyZVR5cGUgYmFzZVZhbCgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHNldEJhc2VWYWwoQmFyZVR5cGUpID0gMDsKKyAgICAgICAgdmlydHVhbCBSZXR1cm5U
eXBlIGJhc2VWYWwoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlVmFs
KFBhc3NUeXBlKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBSZXR1cm5UeXBlIGFuaW1WYWwoKSBj
b25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltVmFsKFBhc3NUeXBlKSA9IDA7
CiAKLSAgICAgICAgdmlydHVhbCBCYXJlVHlwZSBhbmltVmFsKCkgY29uc3QgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QW5pbVZhbChCYXJlVHlwZSkgPSAwOworICAgICAgICB2aXJ0dWFs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgPSAw
OwogCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5LCBT
VkdBbmltYXRlZFRlbXBsYXRlPEJhcmVUeXBlPiosIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlI
YXNoLCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA+IEVsZW1lbnRUb1dyYXBw
ZXJNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5
LCBTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4qLCBTVkdBbmltYXRlZFR5cGVXcmFw
cGVyS2V5SGFzaCwgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2hUcmFpdHMgPiBFbGVtZW50
VG9XcmFwcGVyTWFwOwogICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEVsZW1lbnRUb1dyYXBwZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvcjsKIAogICAgICAg
ICBzdGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogd3JhcHBlckNhY2hlKCkKQEAgLTEyMyw3ICsx
MjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gc193cmFwcGVy
Q2FjaGU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBmb3JnZXRXcmFwcGVyKFNW
R0FuaW1hdGVkVGVtcGxhdGU8QmFyZVR5cGU+KiB3cmFwcGVyKQorICAgICAgICBzdGF0aWMgdm9p
ZCBmb3JnZXRXcmFwcGVyKFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiogd3JhcHBl
cikKICAgICAgICAgewogICAgICAgICAgICAgRWxlbWVudFRvV3JhcHBlck1hcCogY2FjaGUgPSB3
cmFwcGVyQ2FjaGUoKTsKICAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvciBp
dHIgPSBjYWNoZS0+YmVnaW4oKTsKQEAgLTEzNSwxMjkgKzEzNiwyNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2Fzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKLSAgICAgICAgICAgIDogbV9hc3NvY2lhdGVkQXR0cmlidXRlTmFtZShhdHRyaWJ1
dGVOYW1lKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWU7CiAgICAgfTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
QXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgogICAgIGNsYXNzIFNWR0FuaW1hdGVkUHJv
cGVydHk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIEFuaW1h
dGVkVHlwZSwgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lLCB0
eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBPd25lckVsZW1lbnQ+IAotICAgIFBhc3NSZWZQdHI8VHlw
ZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJU
eXBlLCBBbmltYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT4mIGNyZWF0b3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT3duZXJFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBhdHRySWRlbnRpZmllcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGUs
IHR5cGVuYW1lIEFuaW1hdGVkVGVhck9mZj4KKyAgICBQYXNzUmVmUHRyPEFuaW1hdGVkVGVhck9m
Zj4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIFNWR0FuaW1hdGVk
UHJvcGVydHk8QW5pbWF0ZWRUeXBlPiYgY3JlYXRvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgewotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5IGtleShlbGVt
ZW50LCBhdHRySWRlbnRpZmllcik7Ci0gICAgICAgIFJlZlB0cjxUeXBlPiB3cmFwcGVyID0gc3Rh
dGljX2Nhc3Q8VHlwZSo+KFR5cGU6OndyYXBwZXJDYWNoZSgpLT5nZXQoa2V5KSk7CisgICAgICAg
IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkga2V5KGVsZW1lbnQsIGF0dHJOYW1lLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgUmVmUHRyPEFuaW1hdGVkVGVhck9mZj4gd3JhcHBlciA9IHN0YXRpY19j
YXN0PEFuaW1hdGVkVGVhck9mZio+KEFuaW1hdGVkVGVhck9mZjo6d3JhcHBlckNhY2hlKCktPmdl
dChrZXkpKTsKIAogICAgICAgICBpZiAoIXdyYXBwZXIpIHsKLSAgICAgICAgICAgIHdyYXBwZXIg
PSBUeXBlOjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCwgYXR0ck5hbWUpOwotICAgICAgICAgICAg
ZWxlbWVudC0+cHJvcGVydHlDb250cm9sbGVyKCkuc2V0UHJvcGVydHlOZWVkc1N5bmNocm9uaXph
dGlvbihhdHRyTmFtZSk7Ci0gICAgICAgICAgICBUeXBlOjp3cmFwcGVyQ2FjaGUoKS0+c2V0KGtl
eSwgd3JhcHBlci5nZXQoKSk7CisgICAgICAgICAgICB3cmFwcGVyID0gQW5pbWF0ZWRUZWFyT2Zm
OjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCk7CisgICAgICAgICAgICBBbmltYXRlZFRlYXJPZmY6
OndyYXBwZXJDYWNoZSgpLT5zZXQoa2V5LCB3cmFwcGVyLmdldCgpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICAvLyBEZWZhdWx0
IGltcGxlbWVudGF0aW9uIGZvciBwb2ludGVyIHR5cGVzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KLSAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlVmFsdWUgOiBOb25jb3B5YWJsZSB7Ci0g
ICAgICAgIHR5cGVkZWYgUmVmUHRyPFR5cGU+IFN0b3JhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBUeXBlKiBEZWNvcmF0ZWRUeXBlOwotCi0gICAgICAgIHN0YXRpYyBUeXBlIG51bGwoKSB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoVHlwZSB0eXBlKSB7IHJl
dHVybiB0eXBlID8gdHlwZS0+dmFsdWVBc1N0cmluZygpIDogU3RyaW5nKCk7IH0KLSAgICB9Owot
Ci0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVWYWx1ZTxib29sPiA6
IE5vbmNvcHlhYmxlIHsKLSAgICAgICAgdHlwZWRlZiBib29sIFN0b3JhYmxlVHlwZTsKLSAgICAg
ICAgdHlwZWRlZiBib29sIERlY29yYXRlZFR5cGU7Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgbnVs
bCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoYm9v
bCB0eXBlKSB7IHJldHVybiB0eXBlID8gInRydWUiIDogImZhbHNlIjsgfQotICAgIH07Ci0KLSAg
ICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPGludD4gOiBOb25j
b3B5YWJsZSB7Ci0gICAgICAgIHR5cGVkZWYgaW50IFN0b3JhYmxlVHlwZTsKLSAgICAgICAgdHlw
ZWRlZiBpbnQgRGVjb3JhdGVkVHlwZTsKLQotICAgICAgICBzdGF0aWMgaW50IG51bGwoKSB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4KLSAg
ICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8bG9uZz4gOiBOb25jb3B5YWJsZSB7Ci0gICAg
ICAgIHR5cGVkZWYgbG9uZyBTdG9yYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgbG9uZyBEZWNv
cmF0ZWRUeXBlOwotCi0gICAgICAgIHN0YXRpYyBsb25nIG51bGwoKSB7IHJldHVybiAwbDsgfQot
ICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGxvbmcgdHlwZSkgeyByZXR1cm4gU3RyaW5n
OjpudW1iZXIodHlwZSk7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBT
VkdBbmltYXRlZFR5cGVWYWx1ZTxTVkdBbmdsZT4gOiBOb25jb3B5YWJsZSB7Ci0gICAgICAgIHR5
cGVkZWYgU1ZHQW5nbGUgU3RvcmFibGVUeXBlOwotICAgICAgICB0eXBlZGVmIFNWR0FuZ2xlIERl
Y29yYXRlZFR5cGU7Ci0KLSAgICAgICAgc3RhdGljIFNWR0FuZ2xlIG51bGwoKSB7IHJldHVybiBT
VkdBbmdsZSgpOyB9Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHQW5n
bGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Ci0gICAgfTsKLQotICAg
IHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8U1ZHTGVuZ3RoPiA6
IE5vbmNvcHlhYmxlIHsKLSAgICAgICAgdHlwZWRlZiBTVkdMZW5ndGggU3RvcmFibGVUeXBlOwot
ICAgICAgICB0eXBlZGVmIFNWR0xlbmd0aCBEZWNvcmF0ZWRUeXBlOwotCi0gICAgICAgIHN0YXRp
YyBTVkdMZW5ndGggbnVsbCgpIHsgcmV0dXJuIFNWR0xlbmd0aCgpOyB9Ci0gICAgICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoJiB0eXBlKSB7IHJldHVybiB0eXBlLnZh
bHVlQXNTdHJpbmcoKTsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IFNW
R0FuaW1hdGVkVHlwZVZhbHVlPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IDogTm9uY29weWFibGUg
ewotICAgICAgICB0eXBlZGVmIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gU3RvcmFibGVUeXBlOwot
ICAgICAgICB0eXBlZGVmIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gRGVjb3JhdGVkVHlwZTsKLQot
ICAgICAgICBzdGF0aWMgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBudWxsKCkgeyByZXR1cm4gU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbygpOyB9Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFz
U3RyaW5nKCk7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBTVkdBbmlt
YXRlZFR5cGVWYWx1ZTxmbG9hdD4gOiBOb25jb3B5YWJsZSB7Ci0gICAgICAgIHR5cGVkZWYgZmxv
YXQgU3RvcmFibGVUeXBlOwotICAgICAgICB0eXBlZGVmIGZsb2F0IERlY29yYXRlZFR5cGU7Ci0K
LSAgICAgICAgc3RhdGljIGZsb2F0IG51bGwoKSB7IHJldHVybiAwLjBmOyB9Ci0gICAgICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoZmxvYXQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIo
dHlwZSk7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBTVkdBbmltYXRl
ZFR5cGVWYWx1ZTxGbG9hdFJlY3Q+IDogTm9uY29weWFibGUgewotICAgICAgICB0eXBlZGVmIEZs
b2F0UmVjdCBTdG9yYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgRmxvYXRSZWN0IERlY29yYXRl
ZFR5cGU7Ci0KLSAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBudWxsKCkgeyByZXR1cm4gRmxvYXRS
ZWN0KCk7IH0KLSAgICAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBGbG9hdFJlY3Qm
IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAlZiIsIHR5cGUueCgpLCB0
eXBlLnkoKSwgdHlwZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKTsgfQotICAgIH07Ci0KLSAgICB0
ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPFN0cmluZz4gOiBOb25j
b3B5YWJsZSB7Ci0gICAgICAgIHR5cGVkZWYgU3RyaW5nIFN0b3JhYmxlVHlwZTsKLSAgICAgICAg
dHlwZWRlZiBTdHJpbmcgRGVjb3JhdGVkVHlwZTsKLQotICAgICAgICBzdGF0aWMgU3RyaW5nIG51
bGwoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQotICAgIH07Ci0KICAgICAvLyBD
b21tb24gdHlwZSBkZWZpbml0aW9ucywgdG8gZWFzZSBJREwgZ2VuZXJhdGlvbi4KICAgICB0eXBl
ZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHQW5nbGU+IFNWR0FuaW1hdGVkQW5nbGU7CiAgICAg
dHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGJvb2w+IFNWR0FuaW1hdGVkQm9vbGVhbjsKQEAg
LTI3NCw1ICsxNzEsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0KIAotI2VuZGlmIC8vIEVO
QUJMRShTVkcpCi0jZW5kaWYgLy8gU1ZHQW5pbWF0ZWRUZW1wbGF0ZV9oCisjZW5kaWYKKyNlbmRp
ZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHJldmlzaW9uIDUzODY5KQor
KysgV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDE1ICszMSwxMSBAQAogCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlN0
cmluZ0ltcGwuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFRlbXBsYXRlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBFdmVudExpc3RlbmVyOwotY2xh
c3MgTm9kZTsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKIGNsYXNz
IFNWR1N0eWxlZEVsZW1lbnQ7CiBjbGFzcyBTVkdTTUlMRWxlbWVudDsKIGNsYXNzIFNWR1NWR0Vs
ZW1lbnQ7CkBAIC02OCwxMyArNjQsNiBAQCBwcml2YXRlOgogICAgIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucyhjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMmKTsKICAgICBTVkdEb2N1bWVudEV4dGVu
c2lvbnMmIG9wZXJhdG9yPShjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMmKTsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBIYXNoTWFwPGNvbnN0IFNWR0VsZW1lbnQq
LCBIYXNoTWFwPFN0cmluZ0ltcGwqLCBWYWx1ZVR5cGU+Kj4qIGJhc2VWYWx1ZU1hcCgpIGNvbnN0
Ci0gICAgewotICAgICAgICBzdGF0aWMgSGFzaE1hcDxjb25zdCBTVkdFbGVtZW50KiwgSGFzaE1h
cDxTdHJpbmdJbXBsKiwgVmFsdWVUeXBlPio+KiBzX2Jhc2VWYWx1ZU1hcCA9IG5ldyBIYXNoTWFw
PGNvbnN0IFNWR0VsZW1lbnQqLCBIYXNoTWFwPFN0cmluZ0ltcGwqLCBWYWx1ZVR5cGU+Kj4oKTsK
LSAgICAgICAgcmV0dXJuIHNfYmFzZVZhbHVlTWFwOwotICAgIH0KLQogcHVibGljOgogICAgIC8v
IFRoaXMgSGFzaE1hcCBjb250YWlucyBhIGxpc3Qgb2YgcGVuZGluZyByZXNvdXJjZXMuIFBlbmRp
bmcgcmVzb3VyY2VzLCBhcmUgc3VjaAogICAgIC8vIHdoaWNoIGFyZSByZWZlcmVuY2VkIGJ5IGFu
eSBvYmplY3QgaW4gdGhlIFNWRyBkb2N1bWVudCwgYnV0IGRvIE5PVCBleGlzdCB5ZXQuCkBAIC04
Miw1MiArNzEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQZW5kaW5nUmVzb3VyY2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgU1ZHU3R5bGVkRWxlbWVudCopOwogICAgIGJvb2wgaXNQZW5kaW5n
UmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgc3RkOjphdXRvX3B0
cjxIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPiA+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkKTsKLQotICAgIC8vIFVzZWQgYnkgdGhlIEFOSU1BVEVEX1BST1BF
UlRZXyogbWFjcm9zCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIFZhbHVl
VHlwZSBiYXNlVmFsdWUoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Ci0gICAgewotICAgICAgICBIYXNoTWFwPFN0cmluZ0lt
cGwqLCBWYWx1ZVR5cGU+KiBwcm9wZXJ0eU1hcCA9IGJhc2VWYWx1ZU1hcDxWYWx1ZVR5cGU+KCkt
PmdldChlbGVtZW50KTsKLSAgICAgICAgaWYgKHByb3BlcnR5TWFwKQotICAgICAgICAgICAgcmV0
dXJuIHByb3BlcnR5TWFwLT5nZXQocHJvcGVydHlOYW1lLmltcGwoKSk7Ci0KLSAgICAgICAgcmV0
dXJuIFNWR0FuaW1hdGVkVHlwZVZhbHVlPFZhbHVlVHlwZT46Om51bGwoKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgdm9pZCBzZXRCYXNlVmFsdWUoY29u
c3QgU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IFZhbHVlVHlwZSBuZXdWYWx1ZSkKLSAgICB7Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nSW1wbCos
IFZhbHVlVHlwZT4qIHByb3BlcnR5TWFwID0gYmFzZVZhbHVlTWFwPFZhbHVlVHlwZT4oKS0+Z2V0
KGVsZW1lbnQpOwotICAgICAgICBpZiAoIXByb3BlcnR5TWFwKSB7Ci0gICAgICAgICAgICBwcm9w
ZXJ0eU1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZ0ltcGwqLCBWYWx1ZVR5cGU+KCk7Ci0gICAgICAg
ICAgICBiYXNlVmFsdWVNYXA8VmFsdWVUeXBlPigpLT5zZXQoZWxlbWVudCwgcHJvcGVydHlNYXAp
OwotICAgICAgICB9Ci0KLSAgICAgICAgcHJvcGVydHlNYXAtPnNldChwcm9wZXJ0eU5hbWUuaW1w
bCgpLCBuZXdWYWx1ZSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBl
PgotICAgIHZvaWQgcmVtb3ZlQmFzZVZhbHVlKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQotICAgIHsKLSAgICAgICAgSGFzaE1hcDxT
dHJpbmdJbXBsKiwgVmFsdWVUeXBlPiogcHJvcGVydHlNYXAgPSBiYXNlVmFsdWVNYXA8VmFsdWVU
eXBlPigpLT5nZXQoZWxlbWVudCk7Ci0gICAgICAgIGlmICghcHJvcGVydHlNYXApCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgcHJvcGVydHlNYXAtPnJlbW92ZShwcm9wZXJ0eU5hbWUu
aW1wbCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAg
Ym9vbCBoYXNCYXNlVmFsdWUoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Ci0gICAgewotICAgICAgICBIYXNoTWFwPFN0cmlu
Z0ltcGwqLCBWYWx1ZVR5cGU+KiBwcm9wZXJ0eU1hcCA9IGJhc2VWYWx1ZU1hcDxWYWx1ZVR5cGU+
KCktPmdldChlbGVtZW50KTsKLSAgICAgICAgaWYgKHByb3BlcnR5TWFwKQotICAgICAgICAgICAg
cmV0dXJuIHByb3BlcnR5TWFwLT5jb250YWlucyhwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKLQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogfTsKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNW
RykKKyNlbmRpZgogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NiBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgotI2luY2x1ZGUgIlNW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5jZS5oIgog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIKQEAgLTI1OSw3
ICsyNTgsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmliCiAgICAg
c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyLT5uYW1lKCkpOwogfQogCi12b2lkIFNWR0VsZW1lbnQ6
OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3Zv
aWQgU1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlk
KTsKIApAQCAtMjY4LDIwICsyNjcsMTMgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRl
ZFNWR0F0dHJpYgogCiAgICAgbV9zeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyA9IHRydWU7CiAK
LSAgICBpZiAobmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9wcm9wZXJ0eUNvbnRyb2xsZXIu
c3luY2hyb25pemVBbGxQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIHNldFN5bmNocm9uaXplZFNWR0F0
dHJpYnV0ZXModHJ1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcHJvcGVydHlDb250cm9sbGVy
LnN5bmNocm9uaXplUHJvcGVydHkobmFtZSk7CisgICAgY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4o
dGhpcyktPnN5bmNocm9uaXplUHJvcGVydHkobmFtZSk7CisgICAgaWYgKG5hbWUgPT0gYW55UU5h
bWUoKSkKKyAgICAgICAgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQgPSB0cnVlOwogCiAgICAgbV9z
eW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyA9IGZhbHNlOwogfQogCi12b2lkIFNWR0VsZW1lbnQ6
OnNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoYm9vbCB2YWx1ZSkgY29uc3QKLXsKLSAgICBt
X2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCA9IHZhbHVlOwotfQotCiBDb250YWluZXJOb2RlKiBTVkdF
bGVtZW50OjpldmVudFBhcmVudE5vZGUoKQogewogICAgIGlmIChOb2RlKiBzaGFkb3dQYXJlbnQg
PSBzaGFkb3dQYXJlbnROb2RlKCkpIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQor
KysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNSArMjQs
MTMgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKLSNpbmNsdWRlICJTeW5jaHJvbml6YWJsZVBy
b3BlcnR5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwog
ICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7Ci0gICAgY2xh
c3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsK
ICAgICBjbGFzcyBTVkdTVkdFbGVtZW50OwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwpAQCAtNjcsMjcgKzY1LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIHsgfQogCiAgICAgICAgIHZvaWQgc2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUo
Ym9vbCBzZW5kUGFyZW50TG9hZEV2ZW50cyA9IGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXgqIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0
dXJuIDA7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25pemVkU1ZHQXR0cmli
dXRlcyhib29sKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1
dGVzKGJvb2wgdmFsdWUpIHsgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQgPSB2YWx1ZTsgfQogCiAg
ICAgICAgIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4gaW5zdGFuY2VzRm9yRWxlbWVudCgp
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0Q3Vyc29yRWxlbWVudChTVkdDdXJzb3JFbGVtZW50
KiBjdXJzb3JFbGVtZW50KSB7IG1fY3Vyc29yRWxlbWVudCA9IGN1cnNvckVsZW1lbnQ7IH0KICAg
ICAgICAgdm9pZCBzZXRDdXJzb3JJbWFnZVZhbHVlKENTU0N1cnNvckltYWdlVmFsdWUqIGN1cnNv
ckltYWdlVmFsdWUpIHsgbV9jdXJzb3JJbWFnZVZhbHVlID0gY3Vyc29ySW1hZ2VWYWx1ZTsgfQog
Ci0gICAgICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyJiBwcm9wZXJ0eUNvbnRy
b2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5Q29udHJvbGxlcjsgfQotCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9
IGZhbHNlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKQEAgLTEwMyw4ICsx
MDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhdmVM
b2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCi0gICAgICAgIG11dGFibGUgU3luY2hyb25pemFi
bGVQcm9wZXJ0eUNvbnRyb2xsZXIgbV9wcm9wZXJ0eUNvbnRyb2xsZXI7Ci0KICAgICAgICAgU1ZH
Q3Vyc29yRWxlbWVudCogbV9jdXJzb3JFbGVtZW50OwogICAgICAgICBDU1NDdXJzb3JJbWFnZVZh
bHVlKiBtX2N1cnNvckltYWdlVmFsdWU7CiAKQEAgLTExMyw1ICsxMDgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCiAKKy8vIFNWR0VsZW1lbnQgbmVl
ZHMgdG8gYmUgZGVjbGFyZWQgYmVmb3JlIGluY2x1ZGluZyBTVkdBbmltYXRlZFByb3BlcnR5Cisj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
KwogI2VuZGlmIC8vIFNWR0VsZW1lbnRfaApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDgg
KzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jaGFyIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRJZGVudGlmaWVyW10gPSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCI7
Ci0KIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgZXh0ZXJuIGNoYXIgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZElkZW50aWZpZXJbXTsKICAgICBjbGFzcyBNYXBwZWRBdHRyaWJ1dGU7CiAKICAgICAvLyBO
b3RlcyBvbiBhIFNWRyAxLjEgc3BlYyBkaXNjcmVwYW5jeToKQEAgLTQ0LDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZShTVkdBbmltYXRlZFR5cGVWYWx1ZTxi
b29sPjo6RGVjb3JhdGVkVHlwZSB0eXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHM8Ym9vbD46OlBhc3NUeXBlKSA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jaGFyIFNWR0ZpdFRvVmlld0JveElkZW50aWZp
ZXJbXSA9ICJTVkdGaXRUb1ZpZXdCb3giOwotCiBTVkdGaXRUb1ZpZXdCb3g6OlNWR0ZpdFRvVmll
d0JveCgpCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCAr
MjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBleHRlcm4gY2hhciBTVkdGaXRU
b1ZpZXdCb3hJZGVudGlmaWVyW107Ci0KICAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
IAogICAgIGNsYXNzIFNWR0ZpdFRvVmlld0JveCB7CkBAIC00Miw4ICs0MCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShEb2N1bWVudCos
IE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3Qm94QmFzZVZh
bHVlKFNWR0FuaW1hdGVkVHlwZVZhbHVlPEZsb2F0UmVjdD46OkRlY29yYXRlZFR5cGUpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUoU1ZH
QW5pbWF0ZWRUeXBlVmFsdWU8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz46OkRlY29yYXRlZFR5cGUp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdCb3hCYXNlVmFsdWUoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxGbG9hdFJlY3Q+OjpQYXNzVHlwZSkgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+OjpQYXNzVHlwZSkgPSAwOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaXN0LmgJKHJldmlzaW9uIDUzODY5KQorKysg
V2ViQ29yZS9zdmcvU1ZHTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIFVwZGF0aW5nIGZhY2lsaXRpZXMsIHVz
ZWQgYnkgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0CiAgICAgICAgIEl0ZW0gdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2l0ZW07IH0KLSAgICAgICAgdm9pZCBzZXRWYWx1ZShJdGVt
IG5ld0l0ZW0pIHsgbV9pdGVtID0gbmV3SXRlbTsgfQorICAgICAgICB2b2lkIHNldFZhbHVlKGNv
bnN0IEl0ZW0mIG5ld0l0ZW0pIHsgbV9pdGVtID0gbmV3SXRlbTsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgU1ZHUE9ETGlzdEl0ZW0oKSA6IG1faXRlbSgpIHsgfQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGF0
aC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1BvaW50
TGlzdC5oIgpAQCAtNDAsNyArMzksNiBAQCBTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQo
Y29uc3QgUXVhCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdBbmltYXRlZFBvaW50cygpCi0gICAgLCBtX2V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRBdHRyLCBmYWxzZSkKIHsKIH0KIApAQCAtODgsNDEgKzg2LDM1IEBAIHZvaWQgU1ZHUG9seUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAKLSAgICBpZiAoIXJlbmRl
cmVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cG9pbnRzQXR0cikgeworICAgIC8vIFRoZSBwb2ludHMgcHJvcGVydHkgaXMgbm90IGEgcmVndWxh
ciBTVkdBbmltYXRlZFByb3BlcnR5LCBzdGlsbCB3ZSB1c2UgdGhlIHNhbWUgU1ZHPC0+WE1MIERP
TSBzeW5jaHJvbml6YXRpb24gZnJhbWV3b3JrLgorICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6cG9pbnRzQXR0cikKICAgICAgICAgc2V0U3luY2hyb25pemVkU1ZHQXR0cmlidXRlcyhmYWxz
ZSk7Ci0gICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOworCisgICAgaWYg
KCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKFNWR1Rlc3Rz
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cG9pbnRzQXR0ciB8fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkgfHwKICAgICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSB8fAogICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSB8fAogICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCiAgICAgICAgIHJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0KHRydWUpOwogfQogCi0vLyBDdXN0b20gU1ZHPC0+WE1MIHN5bmNocm9uaXphdGlv
biBsb2dpYywgYXMgU1ZHUG9seSpFbGVtZW50IGRvZXNuJ3QgdXNlIGFuaW1hdGVkCi0vLyBwcm9w
ZXJ0aWVzIGZvciB0aGlzLCBidXQgYSBzcGVjaWFsIHNvbHV0aW9uOiBTVkdBbmltYXRlZFBvaW50
cyBpbmhlcml0YW5jZS4KLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0
cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3ZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAg
QVNTRVJUKCFtX2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCk7Ci0KLSAgICBpZiAobV9zeW5jaHJvbml6
aW5nU1ZHQXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCkpIHsKLSAgICAgICAgbV9zeW5jaHJvbml6aW5n
U1ZHQXR0cmlidXRlcyA9IHRydWU7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwogCi0gICAgICAgIFByb3BlcnR5U3luY2hy
b25pemVyPFNWR1BvbHlFbGVtZW50LCBTVkdQb2ludExpc3QqLCB0cnVlPjo6c3luY2hyb25pemUo
dGhpcywgU1ZHTmFtZXM6OnBvaW50c0F0dHIsIG1fcG9pbnRzLmdldCgpKTsKLSAgICAgICAgc2V0
U3luY2hyb25pemVkU1ZHQXR0cmlidXRlcyh0cnVlKTsKLSAgICAgICAgbV9zeW5jaHJvbml6aW5n
U1ZHQXR0cmlidXRlcyA9IGZhbHNlOworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
CisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAg
ICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlz
LCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgcG9pbnRzKCktPnZhbHVlQXNTdHJpbmcoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUobmFtZSk7CisgICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cikKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5
bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhpcywgYXR0ck5hbWUsIHBvaW50cygpLT52
YWx1ZUFzU3RyaW5nKCkpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTcgKzQ2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7IAogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUp
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmli
dXRlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUG9seUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJZGVu
dGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR1BvaW50TGlzdD4gbV9wb2ludHM7CiAg
ICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4
ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVz
OwogCi1jaGFyIFNWR1N0eWxlZEVsZW1lbnRJZGVudGlmaWVyW10gPSAiU1ZHU3R5bGVkRWxlbWVu
dCI7Ci0KIHZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKICAgICBpbnQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQoYXR0ck5hbWUu
bG9jYWxOYW1lKCkpOwpAQCAtNTcsNyArNTUsNiBAQCB2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJv
cGVydHkoSGFzaE1hcDxBCiAKIFNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0VsZW1l
bnQodGFnTmFtZSwgZG9jKQotICAgICwgbV9jbGFzc05hbWUodGhpcywgSFRNTE5hbWVzOjpjbGFz
c0F0dHIpCiAgICAgLCBtX2luc3RhbmNlVXBkYXRlc0Jsb2NrZWQoZmFsc2UpCiB7CiB9CkBAIC0x
NzgsNyArMTc1LDcgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgog
ICAgIC8vIHN0eWxlIHVwZGF0ZXMgKGluc3RlYWQgb2YgU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpLiBXZSBkb24ndAogICAgIC8vIHRlbGwgU3R5bGVkRWxlbWVudCBhYm91dCB0
aGUgY2hhbmdlIHRvIGF2b2lkIHBhcnNpbmcgdGhlIGNsYXNzIGxpc3QgdHdpY2UKICAgICBpZiAo
YXR0ck5hbWUubWF0Y2hlcyhIVE1MTmFtZXM6OmNsYXNzQXR0cikpCi0gICAgICAgIHNldENsYXNz
TmFtZShhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc2V0Q2xhc3NOYW1lQmFzZVZhbHVlKGF0dHIt
PnZhbHVlKCkpOwogICAgIGVsc2UKICAgICAgICAgLy8gaWQgaXMgaGFuZGxlZCBieSBTdHlsZWRF
bGVtZW50IHdoaWNoIFNWR0VsZW1lbnQgaW5oZXJpdHMgZnJvbQogICAgICAgICBTVkdFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKQEAgLTIxMSw2ICsyMDgsMTQgQEAgdm9pZCBT
VkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlzKTsKIH0KIAordm9pZCBTVkdT
dHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQoreworICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkgfHwgYXR0ck5hbWUubWF0Y2hlcyhI
VE1MTmFtZXM6OmNsYXNzQXR0cikpCisgICAgICAgIHN5bmNocm9uaXplQ2xhc3NOYW1lKCk7Cit9
CisKIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6aW52YWxpZGF0ZVJlc291cmNlcygpCiB7CiAgICAg
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0gICAgZXh0ZXJuIGNoYXIgU1ZHU3R5bGVkRWxlbWVudElkZW50aWZpZXJbXTsKICAgICBjbGFz
cyBTVkdSZXNvdXJjZTsKIAogICAgIHZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CkBAIC01NCw2ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAs
IGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIApAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBpbnQgY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0
ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1N0eWxlZEVsZW1lbnQsIFNWR1N0eWxlZEVs
ZW1lbnRJZGVudGlmaWVyLCBIVE1MTmFtZXM6OmNsYXNzQXR0clN0cmluZywgU3RyaW5nLCBDbGFz
c05hbWUsIGNsYXNzTmFtZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdT
dHlsZWRFbGVtZW50LCBIVE1MTmFtZXM6OmNsYXNzQXR0ciwgU3RyaW5nLCBDbGFzc05hbWUsIGNs
YXNzTmFtZSkKICAgICAgICAgYm9vbCBtX2luc3RhbmNlVXBkYXRlc0Jsb2NrZWQ7CiAgICAgfTsK
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNw
cAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNoYXIgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJZGVudGlm
aWVyW10gPSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQiOwotCiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZHVHJhbnNmb3JtYWJsZSgpCi0gICAg
LCBtX3RyYW5zZm9ybSh0aGlzLCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgU1ZHVHJhbnNmb3Jt
TGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSkKKyAgICAsIG1fdHJhbnNmb3Jt
KFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikpCiB7CiB9
CiAKQEAgLTgwLDYgKzc4LDE0IEBAIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnBhcnMKICAgICAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAg
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSB8fCBTVkdUcmFuc2Zvcm1hYmxlOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0o
KTsKK30KKwogYm9vbCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNLbm93bkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICByZXR1cm4gU1ZHVHJh
bnNmb3JtYWJsZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw4ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGV4dGVy
biBjaGFyIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SWRlbnRpZmllcltdOwotCiAgICAg
Y2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKICAgICBjbGFzcyBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LApAQCAtNTEs
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0
IGdldEJCb3goKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgYm9vbCBpc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICAvLyAiYmFzZSBjbGFzcyIg
bWV0aG9kcyBmb3IgYWxsIHRoZSBlbGVtZW50cyB3aGljaCByZW5kZXIgYXMgcGF0aHMKQEAgLTU5
LDggKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAg
cHJvdGVjdGVkOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SWRl
bnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVz
Ojp0cmFuc2Zvcm1BdHRyU3RyaW5nLCBTVkdUcmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0sIHRyYW5z
Zm9ybSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFNWR1RyYW5zZm9ybUxpc3Qq
LCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFVzZWQg
YnkgPGFuaW1hdGVNb3Rpb24+CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsOCArMjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNoYXIgU1ZHVVJJ
UmVmZXJlbmNlSWRlbnRpZmllcltdID0gIlNWR1VSSVJlZmVyZW5jZSI7Ci0KIFNWR1VSSVJlZmVy
ZW5jZTo6U1ZHVVJJUmVmZXJlbmNlKCkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VSSVJl
ZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCShy
ZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGV4
dGVybiBjaGFyIFNWR1VSSVJlZmVyZW5jZUlkZW50aWZpZXJbXTsKICAgICBjbGFzcyBNYXBwZWRB
dHRyaWJ1dGU7CiAKICAgICBjbGFzcyBTVkdVUklSZWZlcmVuY2UgewpAQCAtNDEsNyArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0KGNv
bnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldEhyZWZCYXNlVmFsdWUoU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8U3RyaW5nPjo6RGVjb3JhdGVk
VHlwZSB0eXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRIcmVmQmFzZVZhbHVlKFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U3RyaW5nPjo6UGFzc1R5cGUpID0gMDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJs
ZVByb3BlcnR5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU3luY2hy
b25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNv
cmUvc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTeW5jaHJvbml6YWJsZVByb3Bl
cnR5Q29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5jbHVkZSAi
Tm9kZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi12b2lkIFN5bmNocm9uaXphYmxlUHJvcGVydGllczo6YWRkUHJvcGVydHkoU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUJhc2UqIGJhc2UpCi17Ci0gICAgbV9iYXNlcy5hZGQoYmFzZSk7Ci19
Ci0KLXZvaWQgU3luY2hyb25pemFibGVQcm9wZXJ0aWVzOjpzeW5jaHJvbml6ZSgpCi17Ci0gICAg
QVNTRVJUKCFtX2Jhc2VzLmlzRW1wdHkoKSk7Ci0gICAgaWYgKG1fc2hvdWxkU3luY2hyb25pemUp
IHsKLSAgICAgICAgQmFzZVNldDo6aXRlcmF0b3IgaXQgPSBtX2Jhc2VzLmJlZ2luKCk7Ci0gICAg
ICAgIEJhc2VTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fYmFzZXMuZW5kKCk7Ci0KLSAgICAgICAgZm9y
ICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJh
c2UqIGJhc2UgPSAqaXQ7Ci0gICAgICAgICAgICBBU1NFUlQoYmFzZSk7Ci0gICAgICAgICAgICBi
YXNlLT5zeW5jaHJvbml6ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFN5bmNocm9u
aXphYmxlUHJvcGVydGllczo6c3RhcnRBbmltYXRpb24oKQotewotICAgIEFTU0VSVCghbV9iYXNl
cy5pc0VtcHR5KCkpOwotICAgIEJhc2VTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYXNlcy5iZWdpbigp
OwotICAgIEJhc2VTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fYmFzZXMuZW5kKCk7Ci0KLSAgICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKiBi
YXNlID0gKml0OwotICAgICAgICBBU1NFUlQoYmFzZSk7Ci0gICAgICAgIGJhc2UtPnN0YXJ0QW5p
bWF0aW9uKCk7Ci0gICAgfQotfQotCi12b2lkIFN5bmNocm9uaXphYmxlUHJvcGVydGllczo6c3Rv
cEFuaW1hdGlvbigpCi17Ci0gICAgQVNTRVJUKCFtX2Jhc2VzLmlzRW1wdHkoKSk7Ci0gICAgQmFz
ZVNldDo6aXRlcmF0b3IgaXQgPSBtX2Jhc2VzLmJlZ2luKCk7Ci0gICAgQmFzZVNldDo6aXRlcmF0
b3IgZW5kID0gbV9iYXNlcy5lbmQoKTsKLQotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqIGJhc2UgPSAqaXQ7Ci0gICAgICAgIEFT
U0VSVChiYXNlKTsKLSAgICAgICAgYmFzZS0+c3RvcEFuaW1hdGlvbigpOwotICAgIH0KLX0KLQot
U3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6OlN5bmNocm9uaXphYmxlUHJvcGVydHlD
b250cm9sbGVyKCkKLXsKLX0KLQotdm9pZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxl
cjo6cmVnaXN0ZXJQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUJhc2UqIGJhc2UpCi17Ci0gICAgLy8gJ2F0dHJOYW1lJyBpcyBhbWJpZ2lv
dXMuIEZvciBpbnN0YW5jZSBpbiBTVkdNYXJrZXJFbGVtZW50IGJvdGggJ29yaWVudFR5cGUnIC8g
J29yaWVudEFuZ2xlJwotICAgIC8vIFNWRyBET00gb2JqZWN0cyBhcmUgc3luY2hyb25pemVkIHdp
dGggdGhlICdvcmllbnQnIGF0dHJpYnV0ZS4gVGhpcyB3aHkgd2UgbmVlZCBhIEhhc2hTZXQuCi0g
ICAgUHJvcGVydHlNYXA6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChhdHRyTmFtZS5sb2NhbE5h
bWUoKSk7Ci0gICAgaWYgKGl0ID09IG1fbWFwLmVuZCgpKSB7Ci0gICAgICAgIFN5bmNocm9uaXph
YmxlUHJvcGVydGllcyBwcm9wZXJ0aWVzOwotICAgICAgICBwcm9wZXJ0aWVzLmFkZFByb3BlcnR5
KGJhc2UpOwotICAgICAgICBtX21hcC5zZXQoYXR0ck5hbWUubG9jYWxOYW1lKCksIHByb3BlcnRp
ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaXQtPnNlY29uZC5hZGRQcm9wZXJ0
eShiYXNlKTsKLX0KLQotdm9pZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c2V0
UHJvcGVydHlOZWVkc1N5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBQcm9wZXJ0eU1hcDo6aXRlcmF0b3IgaXRQcm9wID0gbV9tYXAuZmluZChhdHRy
TmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAgQVNTRVJUKGl0UHJvcCAhPSBtX21hcC5lbmQoKSk7Ci0K
LSAgICBpdFByb3AtPnNlY29uZC5zZXROZWVkc1N5bmNocm9uaXphdGlvbigpOwotfQotCi12b2lk
IFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBQcm9wZXJ0eU1hcDo6aXRlcmF0b3IgaXRQcm9wID0g
bV9tYXAuZmluZChuYW1lKTsKLSAgICBpZiAoaXRQcm9wID09IG1fbWFwLmVuZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpdFByb3AtPnNlY29uZC5zeW5jaHJvbml6ZSgpOwotfQotCi12b2lk
IFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzeW5jaHJvbml6ZUFsbFByb3BlcnRp
ZXMoKQotewotICAgIGlmIChtX21hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFByb3BlcnR5TWFwOjppdGVyYXRvciBpdFByb3AgPSBtX21hcC5iZWdpbigpOwotICAgIFByb3Bl
cnR5TWFwOjppdGVyYXRvciBlbmRQcm9wID0gbV9tYXAuZW5kKCk7Ci0KLSAgICBmb3IgKDsgaXRQ
cm9wICE9IGVuZFByb3A7ICsraXRQcm9wKQotICAgICAgICBpdFByb3AtPnNlY29uZC5zeW5jaHJv
bml6ZSgpOwotfQotCi12b2lkIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzdGFy
dEFuaW1hdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgUHJvcGVydHlNYXA6Oml0ZXJh
dG9yIGl0UHJvcCA9IG1fbWFwLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0UHJvcCA9PSBtX21hcC5l
bmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaXRQcm9wLT5zZWNvbmQuc3RhcnRBbmltYXRp
b24oKTsKLX0KLQotdm9pZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c3RvcEFu
aW1hdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgUHJvcGVydHlNYXA6Oml0ZXJhdG9y
IGl0UHJvcCA9IG1fbWFwLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0UHJvcCA9PSBtX21hcC5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaXRQcm9wLT5zZWNvbmQuc3RvcEFuaW1hdGlvbigp
OwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU3lu
Y2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oCShyZXZpc2lvbiA1Mzg2OSkKKysr
IFdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBT
eW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcl9oCi0jZGVmaW5lIFN5bmNocm9uaXphYmxl
UHJvcGVydHlDb250cm9sbGVyX2gKLQotI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU3RyaW5n
SGFzaC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2U7Ci0K
LWNsYXNzIFN5bmNocm9uaXphYmxlUHJvcGVydGllcyB7Ci1wdWJsaWM6Ci0gICAgU3luY2hyb25p
emFibGVQcm9wZXJ0aWVzKCkKLSAgICAgICAgOiBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNlKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE5lZWRzU3luY2hyb25pemF0aW9uKCkKLSAgICB7
Ci0gICAgICAgIG1fc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQg
YWRkUHJvcGVydHkoU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqKTsKLSAgICB2b2lkIHN5bmNocm9u
aXplKCk7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlvbigpOwotICAgIHZvaWQgc3RvcEFuaW1hdGlv
bigpOwotCi1wcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaFNldDxTVkdBbmltYXRlZFByb3BlcnR5
QmFzZSo+IEJhc2VTZXQ7Ci0KLSAgICBCYXNlU2V0IG1fYmFzZXM7Ci0gICAgYm9vbCBtX3Nob3Vs
ZFN5bmNocm9uaXplOwotfTsKLQotLy8gSGVscGVyIGNsYXNzIHVzZWQgZXhjbHVzaXZlbHkgYnkg
U1ZHRWxlbWVudCB0byBrZWVwIHRyYWNrIG9mIGFsbCBhbmltYXRhYmxlIHByb3BlcnRpZXMgd2l0
aGluIGEgU1ZHRWxlbWVudCwKLS8vIGFuZCB3aGV0ZXIgdGhleSBhcmUgc3VwcG9zZWQgdG8gYmUg
c3luY2hyb25pemVkIG9yIG5vdCAoZGVwZW5kaW5nIHdoZXRlciBBbmltYXRlZFByb3BlcnR5VGVh
ck9mZidzIGhhdmUgYmVlbiBjcmVhdGVkKQotY2xhc3MgU3luY2hyb25pemFibGVQcm9wZXJ0eUNv
bnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAgIHZvaWQgcmVnaXN0
ZXJQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2Uq
KTsKLSAgICB2b2lkIHNldFByb3BlcnR5TmVlZHNTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotCi0gICAgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgc3luY2hyb25pemVBbGxQcm9wZXJ0aWVzKCk7Ci0KLSAgICB2b2lkIHN0YXJ0
QW5pbWF0aW9uKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc3RvcEFuaW1hdGlvbihjb25zdCBT
dHJpbmcmKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudDsKLSAgICBT
eW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcigpOwotCi1wcml2YXRlOgotICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFN5bmNocm9uaXphYmxlUHJvcGVydGllcz4gUHJvcGVydHlNYXA7
Ci0KLSAgICBQcm9wZXJ0eU1hcCBtX21hcDsKLX07Ci0KLX07Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQotI2VuZGlmIC8vIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyX2gKSW5kZXg6
IFdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgJKHJldmlzaW9uIDUzODY5KQor
KysgV2ViQ29yZS9zdmcvU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE4MCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIFN5bmNocm9uaXphYmxl
VHlwZVdyYXBwZXJfaAotI2RlZmluZSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyX2gKLQotI2lm
IEVOQUJMRShTVkcpCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JlZFR5cGU+Ci0gICAgY2xhc3Mg
U3luY2hyb25pemFibGVUeXBlV3JhcHBlckJhc2UgOiBwdWJsaWMgTm9uY29weWFibGUgewotICAg
IHByb3RlY3RlZDoKLSAgICAgICAgU3luY2hyb25pemFibGVUeXBlV3JhcHBlckJhc2UoKTsKLQot
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBc3NpZ25hYmxlVHlwZT4KLSAgICAgICAgdm9pZCBh
c3NpZ24oQXNzaWduYWJsZVR5cGUgdHlwZSk7Ci0KLSAgICAgICAgYm9vbCBuZWVkc1N5bmNocm9u
aXphdGlvbigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFN5bmNocm9uaXplZCgpOwotCi0gICAg
cHJvdGVjdGVkOgotICAgICAgICBTdG9yZWRUeXBlIG1fdmFsdWU7Ci0gICAgICAgIGJvb2wgbV9u
ZWVkc1N5bmNocm9uaXphdGlvbjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Rv
cmVkVHlwZT4KLSAgICBjbGFzcyBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyIDogcHJpdmF0ZSBT
eW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyQmFzZTxTdG9yZWRUeXBlPiB7Ci0gICAgcHVibGljOgot
ICAgICAgICB0eXBlZGVmIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXJCYXNlPFN0b3JlZFR5cGU+
IEJhc2U7Ci0gICAgICAgIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIoKTsKLSAKLSAgICAgICAg
Ly8gIkZvcndhcmRpbmcgY29uc3RydWN0b3JzIiBmb3IgcHJpbWl0aXZlIHR5cGUgYXNzaWdubWVu
dCB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGZvciBleGFtcGUgU1ZHTGVuZ3RoCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPiBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyKGNvbnN0
IFQxJik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gU3luY2hy
b25pemFibGVUeXBlV3JhcHBlcihjb25zdCBUMSYsIGNvbnN0IFQyJik7Ci0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+IFN5bmNocm9uaXphYmxl
VHlwZVdyYXBwZXIoY29uc3QgVDEmLCBjb25zdCBUMiYsIGNvbnN0IFQzJik7Ci0KLSAgICAgICAg
U3luY2hyb25pemFibGVUeXBlV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IFN0b3JlZFR5cGUmKTsK
LSAgICAgICAgb3BlcmF0b3IgU3RvcmVkVHlwZSgpIGNvbnN0OwotCi0gICAgICAgIHVzaW5nIEJh
c2U6Om5lZWRzU3luY2hyb25pemF0aW9uOwotICAgICAgICB1c2luZyBCYXNlOjpzZXRTeW5jaHJv
bml6ZWQ7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB1c2luZyBCYXNlOjptX3ZhbHVlOwotICAg
IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRQb2ludGVyVHlwZT4KLSAgICBjbGFz
cyBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyPFJlZlB0cjxTdG9yZWRQb2ludGVyVHlwZT4gPiA6
IHByaXZhdGUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlckJhc2U8UmVmUHRyPFN0b3JlZFBvaW50
ZXJUeXBlPiA+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgU3luY2hyb25pemFibGVU
eXBlV3JhcHBlckJhc2U8UmVmUHRyPFN0b3JlZFBvaW50ZXJUeXBlPiA+IEJhc2U7Ci0gICAgICAg
IFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIoKTsKLSAgICAgICAgU3luY2hyb25pemFibGVUeXBl
V3JhcHBlcihjb25zdCBQYXNzUmVmUHRyPFN0b3JlZFBvaW50ZXJUeXBlPiYpOwotCi0gICAgICAg
IFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXImIG9wZXJhdG9yPShTdG9yZWRQb2ludGVyVHlwZSop
OwotICAgICAgICBvcGVyYXRvciBTdG9yZWRQb2ludGVyVHlwZSooKSBjb25zdDsKLQotICAgICAg
ICB1c2luZyBCYXNlOjpuZWVkc1N5bmNocm9uaXphdGlvbjsKLSAgICAgICAgdXNpbmcgQmFzZTo6
c2V0U3luY2hyb25pemVkOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdXNpbmcgQmFzZTo6bV92
YWx1ZTsKLSAgICB9OwotCi0gICAgLy8gU3luY2hyb25pemFibGVUeXBlV3JhcHBlckJhc2UgaW1w
bGVtZW50YXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPgotICAgIGlubGlu
ZSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyQmFzZTxTdG9yZWRUeXBlPjo6U3luY2hyb25pemFi
bGVUeXBlV3JhcHBlckJhc2UoKQotICAgICAgICA6IG1fdmFsdWUoKQotICAgICAgICAsIG1fbmVl
ZHNTeW5jaHJvbml6YXRpb24oZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFN0b3JlZFR5cGU+IHRlbXBsYXRlPHR5cGVuYW1lIEFzc2lnbmFibGVUeXBlPgotICAg
IGlubGluZSB2b2lkIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXJCYXNlPFN0b3JlZFR5cGU+Ojph
c3NpZ24oQXNzaWduYWJsZVR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIG1fdmFsdWUgPSB0eXBl
OwotICAgICAgICBtX25lZWRzU3luY2hyb25pemF0aW9uID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPgotICAgIGlubGluZSBib29sIFN5bmNocm9uaXph
YmxlVHlwZVdyYXBwZXJCYXNlPFN0b3JlZFR5cGU+OjpuZWVkc1N5bmNocm9uaXphdGlvbigpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9uZWVkc1N5bmNocm9uaXphdGlvbjsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPgotICAgIGlubGluZSB2b2lkIFN5
bmNocm9uaXphYmxlVHlwZVdyYXBwZXJCYXNlPFN0b3JlZFR5cGU+OjpzZXRTeW5jaHJvbml6ZWQo
KQotICAgIHsKLSAgICAgICAgbV9uZWVkc1N5bmNocm9uaXphdGlvbiA9IGZhbHNlOwotICAgIH0K
LQotICAgIC8vIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIgaW1wbGVtZW50YXRpb24gZm9yIHBy
aW1pdGl2ZSB0eXBlcwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JlZFR5cGU+Ci0gICAgaW5s
aW5lIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXI8U3RvcmVkVHlwZT46OlN5bmNocm9uaXphYmxl
VHlwZVdyYXBwZXIoKQotICAgICAgICA6IEJhc2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPiB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBpbmxp
bmUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlcjxTdG9yZWRUeXBlPjo6U3luY2hyb25pemFibGVU
eXBlV3JhcHBlcihjb25zdCBUMSYgYXJnMSkKLSAgICAgICAgOiBCYXNlKCkKLSAgICB7Ci0gICAg
ICAgIG1fdmFsdWUgPSBTdG9yZWRUeXBlKGFyZzEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFN0b3JlZFR5cGU+IHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAg
ICBpbmxpbmUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlcjxTdG9yZWRUeXBlPjo6U3luY2hyb25p
emFibGVUeXBlV3JhcHBlcihjb25zdCBUMSYgYXJnMSwgY29uc3QgVDImIGFyZzIpCi0gICAgICAg
IDogQmFzZSgpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0gU3RvcmVkVHlwZShhcmcxLCBhcmcy
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIGlubGluZSBTeW5jaHJv
bml6YWJsZVR5cGVXcmFwcGVyPFN0b3JlZFR5cGU+OjpTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVy
KGNvbnN0IFQxJiBhcmcxLCBjb25zdCBUMiYgYXJnMiwgY29uc3QgVDMmIGFyZzMpCi0gICAgICAg
IDogQmFzZSgpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0gU3RvcmVkVHlwZShhcmcxLCBhcmcy
LCBhcmczKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPgotICAg
IGlubGluZSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyPFN0b3JlZFR5cGU+JiBTeW5jaHJvbml6
YWJsZVR5cGVXcmFwcGVyPFN0b3JlZFR5cGU+OjpvcGVyYXRvcj0oY29uc3QgU3RvcmVkVHlwZSYg
b3RoZXIpCi0gICAgewotICAgICAgICBCYXNlOjphc3NpZ24ob3RoZXIpOwotICAgICAgICByZXR1
cm4gKCp0aGlzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRUeXBlPgot
ICAgIGlubGluZSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyPFN0b3JlZFR5cGU+OjpvcGVyYXRv
ciBTdG9yZWRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAg
IH0KLQotICAgIC8vIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIgaW1wbGVtZW50YXRpb24gZm9y
IHJlZmNvdW50ZWQgdHlwZXMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRQb2ludGVyVHlw
ZT4KLSAgICBpbmxpbmUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlcjxSZWZQdHI8U3RvcmVkUG9p
bnRlclR5cGU+ID46OlN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIoKQotICAgICAgICA6IEJhc2Uo
KQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yZWRQb2ludGVyVHlw
ZT4KLSAgICBpbmxpbmUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlcjxSZWZQdHI8U3RvcmVkUG9p
bnRlclR5cGU+ID46OlN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIoY29uc3QgUGFzc1JlZlB0cjxT
dG9yZWRQb2ludGVyVHlwZT4mIHR5cGUpCi0gICAgICAgIDogQmFzZSgpCi0gICAgewotICAgICAg
ICBCYXNlOjptX3ZhbHVlID0gdHlwZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBT
dG9yZWRQb2ludGVyVHlwZT4KLSAgICBpbmxpbmUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlcjxS
ZWZQdHI8U3RvcmVkUG9pbnRlclR5cGU+ID4mIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXI8UmVm
UHRyPFN0b3JlZFBvaW50ZXJUeXBlPiA+OjpvcGVyYXRvcj0oU3RvcmVkUG9pbnRlclR5cGUqIG90
aGVyKQotICAgIHsKLSAgICAgICAgQmFzZTo6YXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0dXJu
ICgqdGhpcyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmVkUG9pbnRlclR5
cGU+Ci0gICAgaW5saW5lIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXI8UmVmUHRyPFN0b3JlZFBv
aW50ZXJUeXBlPiA+OjpvcGVyYXRvciBTdG9yZWRQb2ludGVyVHlwZSooKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIEJhc2U6Om1fdmFsdWUuZ2V0KCk7Ci0gICAgfQotCi19OwotCi0jZW5k
aWYKLSNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvc3ZnYXR0cnMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvc3ZnYXR0cnMuaW4JKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcv
c3ZnYXR0cnMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw2IEBAIG5hbWVzcGFjZT0iU1ZH
IgogbmFtZXNwYWNlVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKIGd1YXJkRmFjdG9y
eVdpdGg9IkVOQUJMRShTVkcpIgogYXR0cnNOdWxsTmFtZXNwYWNlCi1leHBvcnRTdHJpbmdzCiAK
IGFjY2VudC1oZWlnaHQKIGFjY3VtdWxhdGUKSW5kZXg6IFdlYkNvcmUvc3ZnL3N2Z3RhZ3MuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvc3ZndGFncy5pbgkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3N2Zy9zdmd0YWdzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNiBAQAog
bmFtZXNwYWNlPSJTVkciCiBuYW1lc3BhY2VVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IgogZ3VhcmRGYWN0b3J5V2l0aD0iRU5BQkxFKFNWRykiCi1leHBvcnRTdHJpbmdzCiAgCiBhIGNy
ZWF0ZVdpdGhOZXcKICNpZiBFTkFCTEVfU1ZHX0ZPTlRTCkluZGV4OiBXZWJDb3JlL3N2Zy94bGlu
a2F0dHJzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL3hsaW5rYXR0cnMuaW4JKHJldmlz
aW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcveGxpbmthdHRycy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDUgQEAKIG5hbWVzcGFjZT0iWExpbmsiCiBuYW1lc3BhY2VVUkk9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiCi1leHBvcnRTdHJpbmdzCiAKIGFjdHVhdGUKIGFyY3JvbGUK
</data>
<flag name="review"
          id="29903"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47467</attachid>
            <date>2010-01-26 17:06:34 -0800</date>
            <delta_ts>2010-01-26 17:43:07 -0800</delta_ts>
            <desc>Patch v1 - Part 2/2 (boring changes to all SVG*Element files)</desc>
            <filename>SVGMemPatch-Mechanics.diff</filename>
            <type>text/plain</type>
            <size>190414</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZH
QUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2IEBAIFNWR0FFbGVtZW50
OjpTVkdBRWxlbWVudChjb25zdCBRdWFsaWZpZWQKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNW
R0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAs
IG1fdGFyZ2V0KHRoaXMsIFNWR05hbWVzOjp0YXJnZXRBdHRyKQotICAgICwgbV9ocmVmKHRoaXMs
IFhMaW5rTmFtZXM6OmhyZWZBdHRyKQotICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCiB7
CiB9CiAKQEAgLTk4LDYgKzk1LDI1IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY28KICAgICB9CiB9CiAKK3ZvaWQgU1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hyb25pemVUYXJnZXQoKTsK
KyAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVRhcmdl
dCgpOworICAgIGVsc2UgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplSHJlZigpOworICAgIGVsc2UgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAg
ICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKK30KKwogUmVuZGVyT2Jq
ZWN0KiBTVkdBRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihwYXJlbnQoKSkt
PmlzVGV4dENvbnRlbnQoKSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CiAKQEAgLTU5LDE1ICs2MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdB
RWxlbWVudCwgU1ZHTmFtZXM6OmFUYWdTdHJpbmcsIFNWR05hbWVzOjp0YXJnZXRBdHRyU3RyaW5n
LCBTdHJpbmcsIFRhcmdldCwgdGFyZ2V0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6dGFyZ2V0QXR0ciwgU3RyaW5nLCBUYXJnZXQsIHRh
cmdldCkKIAogICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0FFbGVtZW50LCBTVkdVUklSZWZlcmVuY2VJZGVudGlmaWVy
LCBYTGlua05hbWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBIcmVmLCBocmVmKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FFbGVtZW50LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQogCiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0FF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQUVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0Fs
dEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRh
Z05hbWUsIGRvYykKLSAgICAsIG1faHJlZih0aGlzLCBYTGlua05hbWVzOjpocmVmQXR0cikKIHsK
IH0KIApAQCAtNDMsNiArNDIsMTQgQEAgU1ZHQWx0R2x5cGhFbGVtZW50Ojp+U1ZHQWx0R2x5cGhF
bGVtZW50KAogewogfQogCit2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplSHJlZigpOworfQorCiB2b2lkIFNWR0Fs
dEdseXBoRWxlbWVudDo6c2V0R2x5cGhSZWYoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdBbHRHbHlwaEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNW
R0FsdEdseXBoRWxlbWVudCgpOwotICAgICAgICAgICAgICAgIAorCisgICAgICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogICAgICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSop
IGNvbnN0OwogCkBAIC00OSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHBy
aXZhdGU6ICAgIAogICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0FsdEdseXBoRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNl
SWRlbnRpZmllciwgWExpbmtOYW1lczo6aHJlZkF0dHJTdHJpbmcsIFN0cmluZywgSHJlZiwgaHJl
ZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbHRHbHlwaEVsZW1lbnQs
IFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw5ICsxNzAsOSBAQCB2
b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlCiAgICAgICAgIFNWR0VsZW1l
bnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCk7CiAgICAg
ICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmIChzaGFkb3dUcmVlRWxl
bWVudC0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KHNoYWRvd1RyZWVFbGVtZW50KS0+c2V0VHJh
bnNmb3JtKHRyYW5zZm9ybUxpc3QuZ2V0KCkpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihzaGFkb3dUcmVlRWxlbWVudCktPnNldFRyYW5z
Zm9ybUJhc2VWYWx1ZSh0cmFuc2Zvcm1MaXN0LmdldCgpKTsKICAgICAgICAgZWxzZSBpZiAoc2hh
ZG93VHJlZUVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKQotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8U1ZHVGV4dEVsZW1lbnQqPihzaGFkb3dUcmVlRWxlbWVudCktPnNldFRy
YW5zZm9ybSh0cmFuc2Zvcm1MaXN0LmdldCgpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNW
R1RleHRFbGVtZW50Kj4oc2hhZG93VHJlZUVsZW1lbnQpLT5zZXRUcmFuc2Zvcm1CYXNlVmFsdWUo
dHJhbnNmb3JtTGlzdC5nZXQoKSk7CiAgICAgICAgIGlmIChzaGFkb3dUcmVlRWxlbWVudC0+cmVu
ZGVyZXIoKSkKICAgICAgICAgICAgIHNoYWRvd1RyZWVFbGVtZW50LT5yZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpAQCAtNTEsNyArNTEsNiBAQCBTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmlt
YXRpb25FbGVtZW50CiAgICAgOiBTVkdTTUlMRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBT
VkdUZXN0cygpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkgCi0gICAgLCBt
X2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9uVmFsaWQoZmFsc2UpCiB7
CiB9CkBAIC01OSw3ICs1OCw3IEBAIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6On5TVkdBbmltYXRpb25FbGVtZW50KCkKIHsKIH0K
LSAgICAKKwogc3RhdGljIHZvaWQgcGFyc2VLZXlUaW1lcyhjb25zdCBTdHJpbmcmIHBhcnNlLCBW
ZWN0b3I8ZmxvYXQ+JiByZXN1bHQsIGJvb2wgdmVyaWZ5T3JkZXIpCiB7CiAgICAgcmVzdWx0LmNs
ZWFyKCk7CkBAIC0xNDEsNiArMTQwLDE0IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0
cmlidXRlQ2hhbmcKICAgICBTVkdTTUlMRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBw
cmVzZXJ2ZURlY2xzKTsKIH0KIAordm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1NNSUxF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKK30KKwogZmxvYXQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Z2V0U3RhcnRUaW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChpbnRlcnZhbEJl
Z2luKCkudmFsdWUoKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lv
biA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOSArNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0aW9uRWxlbWVudCgpOwotICAgICAgICAK
KwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSos
IGJvb2wgcHJlc2VydmVEZWNscyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICAvLyBTVkdBbmltYXRpb25F
bGVtZW50CiAgICAgICAgIGZsb2F0IGdldFN0YXJ0VGltZSgpIGNvbnN0OwpAQCAtMTA2LDkgKzEw
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdBbmltYXRpb25FbGVtZW50LCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9v
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCiAgICAgICAgIGJvb2wgbV9hbmltYXRpb25WYWxp
ZDsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysg
V2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEw
ICszNiw5IEBAIFNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3QKICAgICAs
IFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fY3godGhpcywgU1ZHTmFtZXM6OmN4QXR0ciwgTGVuZ3Ro
TW9kZVdpZHRoKQotICAgICwgbV9jeSh0aGlzLCBTVkdOYW1lczo6Y3lBdHRyLCBMZW5ndGhNb2Rl
SGVpZ2h0KQotICAgICwgbV9yKHRoaXMsIFNWR05hbWVzOjpyQXR0ciwgTGVuZ3RoTW9kZU90aGVy
KQotICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCisgICAgLCBtX2N4KExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1fY3koTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcihMZW5ndGhNb2Rl
T3RoZXIpCiB7CiB9CiAKQEAgLTg0LDYgKzgzLDI4IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1
ZSk7CiB9CiAKK3ZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZUN4KCk7CisgICAgICAgIHN5
bmNocm9uaXplQ3koKTsKKyAgICAgICAgc3luY2hyb25pemVSKCk7CisgICAgICAgIHN5bmNocm9u
aXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCisgICAgICAgIHN5bmNocm9u
aXplQ3goKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQorICAg
ICAgICBzeW5jaHJvbml6ZUN5KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnJBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVIoKTsKKyAgICBlbHNlIGlmIChTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Cit9CisKIFBhdGggU1ZHQ2ly
Y2xlRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFBhdGg6OmNyZWF0
ZUNpcmNsZShGbG9hdFBvaW50KGN4KCkudmFsdWUodGhpcyksIGN5KCkudmFsdWUodGhpcykpLCBy
KCkudmFsdWUodGhpcykpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gNTM4
NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIApAQCAtNDgsMTQg
KzQ5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1Jl
bGF0aXZlVmFsdWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmNpcmNsZVRh
Z1N0cmluZywgU1ZHTmFtZXM6OmN4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBDeCwgY3gpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdO
YW1lczo6Y2lyY2xlVGFnU3RyaW5nLCBTVkdOYW1lczo6Y3lBdHRyU3RyaW5nLCBTVkdMZW5ndGgs
IEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNs
ZUVsZW1lbnQsIFNWR05hbWVzOjpjaXJjbGVUYWdTdHJpbmcsIFNWR05hbWVzOjpyQXR0clN0cmlu
ZywgU1ZHTGVuZ3RoLCBSLCByKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIFNWR0xlbmd0aCwgQ3gsIGN4KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVz
OjpjeUF0dHIsIFNWR0xlbmd0aCwgQ3ksIGN5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpyQXR0ciwgU1ZHTGVuZ3RoLCBSLCBy
KQogCiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5n
LCBib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkK
KysrIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDggKzM4LDcgQEAgU1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQoYwog
ICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV9jbGlwUGF0aFVuaXRzKHRoaXMsIFNWR05hbWVz
OjpjbGlwUGF0aFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFD
RU9OVVNFKQotICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCisgICAgLCBtX2NsaXBQYXRo
VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogfQog
CkBAIC04MCw2ICs3OSwyMiBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhCiAgICAgICAgIG1fY2xpcHBlci0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIFNWR0NsaXBQ
YXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewor
ICAgICAgICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsKKyAgICAgICAgc3luY2hyb25pemVF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKQorICAgICAgICBz
eW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsKKyAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Cit9CisKIHZvaWQgU1ZHQ2xpcFBhdGhF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQ
YXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2
Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTggKzQzLDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHUmVz
b3VyY2UqIGNhbnZhc1Jlc291cmNlKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NsaXBQYXRoRWxl
bWVudCwgU1ZHTmFtZXM6OmNsaXBQYXRoVGFnU3RyaW5nLCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0
c0F0dHJTdHJpbmcsIGludCwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpj
bGlwUGF0aFVuaXRzQXR0ciwgaW50LCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzKQogCiAg
ICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZElkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJpbmcsIGJv
b2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCiAgICAgICAgIFJlZlB0cjxTVkdSZXNvdXJjZUNs
aXBwZXI+IG1fY2xpcHBlcjsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE3ICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNoYXIgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJZGVudGlmaWVyW10gPSAi
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQiOwotCiBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0Vs
ZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV90eXBlKHRoaXMsIFNWR05hbWVzOjp0eXBlQXR0
ciwgRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04pCi0gICAgLCBtX3RhYmxlVmFsdWVz
KHRoaXMsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIFNWR051bWJlckxpc3Q6OmNyZWF0ZShT
VkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSkKLSAgICAsIG1fc2xvcGUodGhpcywgU1ZHTmFtZXM6
OnNsb3BlQXR0ciwgMS4wZikKLSAgICAsIG1faW50ZXJjZXB0KHRoaXMsIFNWR05hbWVzOjppbnRl
cmNlcHRBdHRyKQotICAgICwgbV9hbXBsaXR1ZGUodGhpcywgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0
dHIsIDEuMGYpCi0gICAgLCBtX2V4cG9uZW50KHRoaXMsIFNWR05hbWVzOjpleHBvbmVudEF0dHIs
IDEuMGYpCi0gICAgLCBtX29mZnNldCh0aGlzLCBTVkdOYW1lczo6b2Zmc2V0QXR0cikKKyAgICAs
IG1fdHlwZShGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTikKKyAgICAsIG1fdGFibGVW
YWx1ZXMoU1ZHTnVtYmVyTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpKQor
ICAgICwgbV9zbG9wZSgxLjBmKQorICAgICwgbV9hbXBsaXR1ZGUoMS4wZikKKyAgICAsIG1fZXhw
b25lbnQoMS4wZikKIHsKIH0KIApAQCAtNTEsOCArNDcsNyBAQCBTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudDo6flNWCiB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7Ci0gICAgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpCi0gICAgeworICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiaWRlbnRpdHki
KQogICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVf
SURFTlRJVFkpOwogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAidGFibGUiKQpAQCAtODAsNiAr
NzUsMzcgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgICAg
ICBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
CisgICAgICAgIHN5bmNocm9uaXplVHlwZSgpOworICAgICAgICBzeW5jaHJvbml6ZVRhYmxlVmFs
dWVzKCk7CisgICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKKyAgICAgICAgc3luY2hyb25pemVJ
bnRlcmNlcHQoKTsKKyAgICAgICAgc3luY2hyb25pemVBbXBsaXR1ZGUoKTsKKyAgICAgICAgc3lu
Y2hyb25pemVFeHBvbmVudCgpOworICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0
cikKKyAgICAgICAgc3luY2hyb25pemVUeXBlKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0cikKKyAgICAgICAgc3luY2hyb25pemVUYWJsZVZhbHVl
cygpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzbG9wZUF0dHIpCisgICAg
ICAgIHN5bmNocm9uaXplU2xvcGUoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aW50ZXJjZXB0QXR0cikKKyAgICAgICAgc3luY2hyb25pemVJbnRlcmNlcHQoKTsKKyAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YW1wbGl0dWRlQXR0cikKKyAgICAgICAgc3lu
Y2hyb25pemVBbXBsaXR1ZGUoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZXhwb25lbnRBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUV4cG9uZW50KCk7CisgICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpCisgICAgICAgIHN5bmNocm9uaXpl
T2Zmc2V0KCk7Cit9CisKIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdAogewogICAgIENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZnVuYzsKQEAgLTEwMCw2ICsxMjYsNCBAQCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIFNWR0NvbXBvbmVudFRyCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9l
dAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwyNSArMjksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAg
ZXh0ZXJuIGNoYXIgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJZGVudGlmaWVy
W107Ci0KICAgICBjbGFzcyBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IHB1
YmxpYyBTVkdFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
IGF0dHIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgCiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElkZW50aWZp
ZXIsIFNWR05hbWVzOjp0eXBlQXR0clN0cmluZywgaW50LCBUeXBlLCB0eXBlKQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQsIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwg
U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0clN0cmluZywgU1ZHTnVtYmVyTGlzdCwgVGFibGVWYWx1
ZXMsIHRhYmxlVmFsdWVzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnNsb3BlQXR0clN0cmluZywgZmxv
YXQsIFNsb3BlLCBzbG9wZSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjppbnRlcmNlcHRBdHRyU3RyaW5n
LCBmbG9hdCwgSW50ZXJjZXB0LCBpbnRlcmNlcHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6YW1wbGl0
dWRlQXR0clN0cmluZywgZmxvYXQsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwgU1ZH
TmFtZXM6OmV4cG9uZW50QXR0clN0cmluZywgZmxvYXQsIEV4cG9uZW50LCBleHBvbmVudCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElkZW50
aWZpZXIsIFNWR05hbWVzOjpvZmZzZXRBdHRyU3RyaW5nLCBmbG9hdCwgT2Zmc2V0LCBvZmZzZXQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgaW50LCBUeXBlLCB0eXBlKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LCBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLCBTVkdOdW1iZXJMaXN0KiwgVGFi
bGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6c2xvcGVBdHRy
LCBmbG9hdCwgU2xvcGUsIHNsb3BlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6aW50ZXJjZXB0
QXR0ciwgZmxvYXQsIEludGVyY2VwdCwgaW50ZXJjZXB0KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1l
czo6YW1wbGl0dWRlQXR0ciwgZmxvYXQsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LCBTVkdOYW1lczo6ZXhwb25lbnRBdHRyLCBmbG9hdCwgRXhwb25lbnQsIGV4cG9uZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgZmxvYXQsIE9mZnNldCwgb2Zmc2V0
KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsOCBAQCBTVkdDdXJzb3JFbGVtZW50
OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBt
X3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3kodGhp
cywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwgbV9ocmVmKHRoaXMs
IFhMaW5rTmFtZXM6OmhyZWZBdHRyKQotICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCisg
ICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCiB7
CiB9CiAKQEAgLTk2LDYgKzk0LDI4IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmcKICAgICB9CiB9CiAKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7CisgICAgICAgIHN5bmNocm9uaXplWCgpOworICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Cisg
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQorICAgICAgICBzeW5j
aHJvbml6ZVkoKTsKKyAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7CisgICAgZWxzZSBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Cit9CisKIHZv
aWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0VsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwyMCArNDUsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjpj
dXJzb3JUYWdTdHJpbmcsIFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwg
U1ZHTmFtZXM6OmN1cnNvclRhZ1N0cmluZywgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQ3Vyc29yRWxl
bWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdM
ZW5ndGgsIFksIHkpCiAKICAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdVUklSZWZlcmVu
Y2VJZGVudGlmaWVyLCBYTGlua05hbWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBIcmVmLCBo
cmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0N1cnNvckVsZW1lbnQs
IFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKICAgICAgICAgLy8g
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZElkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJpbmcsIGJvb2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKIAogICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiBtX2NsaWVudHM7CiAg
ICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2
IEBAIFNWR0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rl
c3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCkKLSAgICAsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzLCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGZhbHNlKQogewogfQogCkBAIC01MCw2
ICs0OSwxNCBAQCBSZW5kZXJPYmplY3QqIFNWR0RlZnNFbGVtZW50OjpjcmVhdGVSZW5kCiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcih0aGlzKTsKIH0KIAor
dm9pZCBTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJ
KHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdEZWZzRWxlbWVudCwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHJTdHJpbmcsIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0RlZnNFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24g
NTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDExICszNiwxMCBAQCBTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1l
bnQoY29uCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2N4KHRoaXMsIFNWR05hbWVzOjpj
eEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1fY3kodGhpcywgU1ZHTmFtZXM6OmN5QXR0
ciwgTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcngodGhpcywgU1ZHTmFtZXM6OnJ4QXR0ciwg
TGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9yeSh0aGlzLCBTVkdOYW1lczo6cnlBdHRyLCBMZW5n
dGhNb2RlSGVpZ2h0KQotICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCisgICAgLCBtX2N4
KExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fY3koTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1f
cngoTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQogewogfSAg
ICAKIApAQCAtODksNiArODgsMzEgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbgogICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAor
dm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZUN4KCk7CisgICAgICAgIHN5bmNocm9uaXpl
Q3koKTsKKyAgICAgICAgc3luY2hyb25pemVSeCgpOworICAgICAgICBzeW5jaHJvbml6ZVJ5KCk7
CisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIp
CisgICAgICAgIHN5bmNocm9uaXplQ3goKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6Y3lBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUN5KCk7CisgICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKKyAgICAgICAgc3luY2hyb25pemVSeCgpOworICAg
IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCisgICAgICAgIHN5bmNocm9u
aXplUnkoKTsKKyAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Cit9CisKIFBhdGggU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBQYXRoOjpjcmVhdGVFbGxpcHNlKEZsb2F0UG9pbnQoY3go
KS52YWx1ZSh0aGlzKSwgY3koKS52YWx1ZSh0aGlzKSksCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgp
IGNvbnN0OwogCkBAIC00OCwxNSArNDksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVu
dCwgU1ZHTmFtZXM6OmVsbGlwc2VUYWdTdHJpbmcsIFNWR05hbWVzOjpjeEF0dHJTdHJpbmcsIFNW
R0xlbmd0aCwgQ3gsIGN4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjplbGxpcHNlVGFnU3RyaW5nLCBTVkdOYW1lczo6
Y3lBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6ZWxsaXBzZVRhZ1N0
cmluZywgU1ZHTmFtZXM6OnJ4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBSeCwgcngpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFt
ZXM6OmVsbGlwc2VUYWdTdHJpbmcsIFNWR05hbWVzOjpyeUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwg
UnksIHJ5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0VsbGlwc2VFbGVt
ZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWShTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwg
U1ZHTGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
RWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpyeEF0dHIsIFNWR0xlbmd0aCwgUngsIHJ4KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1l
czo6cnlBdHRyLCBTVkdMZW5ndGgsIFJ5LCByeSkKIAogICAgICAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdFbGxpcHNlRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJpbmcsIGJvb2wsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0Vs
bGlwc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJv
b2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2luMSh0aGlzLCBTVkdO
YW1lczo6aW5BdHRyKQotICAgICwgbV9pbjIodGhpcywgU1ZHTmFtZXM6OmluMkF0dHIpCi0gICAg
LCBtX21vZGUodGhpcywgU1ZHTmFtZXM6Om1vZGVBdHRyLCBGRUJMRU5EX01PREVfTk9STUFMKQor
ICAgICwgbV9tb2RlKEZFQkxFTkRfTU9ERV9OT1JNQUwpCiB7CiB9CiAKQEAgLTYyLDYgKzYwLDI1
IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyKTsKIH0KIAordm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hyb25pemVNb2RlKCk7
CisgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CisgICAgICAgIHN5bmNocm9uaXplSW4yKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1v
ZGVBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZU1vZGUoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUluMSgpOworICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAgICBzeW5jaHJvbml6
ZUluMigpOworfQorCiBib29sIFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGRUJsZW5kRWxlbWVudCgpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmZlQmxlbmRUYWdTdHJpbmcsIFNWR05hbWVzOjpp
bkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmZlQmxlbmRUYWdTdHJp
bmcsIFNWR05hbWVzOjppbjJBdHRyU3RyaW5nLCBTdHJpbmcsIEluMiwgaW4yKQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVz
OjpmZUJsZW5kVGFnU3RyaW5nLCBTVkdOYW1lczo6bW9kZUF0dHJTdHJpbmcsIGludCwgTW9kZSwg
bW9kZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUJsZW5kRWxlbWVu
dCwgU1ZHTmFtZXM6OmluQXR0ciwgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIFN0
cmluZywgSW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVC
bGVuZEVsZW1lbnQsIFNWR05hbWVzOjptb2RlQXR0ciwgaW50LCBNb2RlLCBtb2RlKQogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAg
ICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQot
ICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKLSAgICAsIG1fdHlwZSh0aGlzLCBT
VkdOYW1lczo6dHlwZUF0dHIsIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOKQotICAgICwgbV92
YWx1ZXModGhpcywgU1ZHTmFtZXM6OnZhbHVlc0F0dHIsIFNWR051bWJlckxpc3Q6OmNyZWF0ZShT
VkdOYW1lczo6dmFsdWVzQXR0cikpCisgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX1VO
S05PV04pCisgICAgLCBtX3ZhbHVlcyhTVkdOdW1iZXJMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnZh
bHVlc0F0dHIpKQogewogfQogCkBAIC02Myw2ICs2MiwyNSBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50OjpwYXJzZU1hcHBlCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7CisgICAgICAgIHN5bmNocm9uaXplVHlwZSgpOworICAgICAgICBzeW5jaHJv
bml6ZUluMSgpOworICAgICAgICBzeW5jaHJvbml6ZVZhbHVlcygpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikKKyAgICAg
ICAgc3luY2hyb25pemVUeXBlKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikKKyAgICAgICAgc3luY2hyb25pemVJbjEoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikKKyAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsK
K30KKwogYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0
ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVy
UmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIGJ1aWxk
KFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpm
ZUNvbG9yTWF0cml4VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIElu
MSwgaW4xKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpmZUNvbG9yTWF0cml4VGFnU3RyaW5nLCBTVkdOYW1l
czo6dHlwZUF0dHJTdHJpbmcsIGludCwgVHlwZSwgdHlwZSkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6ZmVD
b2xvck1hdHJpeFRhZ1N0cmluZywgU1ZHTmFtZXM6OnZhbHVlc0F0dHJTdHJpbmcsIFNWR051bWJl
ckxpc3QsIFZhbHVlcywgdmFsdWVzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwg
aW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6dHlwZUF0dHIsIGludCwgVHlwZSwgdHlwZSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6
OnZhbHVlc0F0dHIsIFNWR051bWJlckxpc3QqLCBWYWx1ZXMsIHZhbHVlcykKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0
dHIpCiB7CiB9CiAKQEAgLTU0LDYgKzUzLDE0IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQ6OnBhcnMKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAgc3luY2hy
b25pemVJbjEoKTsKK30KKwogYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVp
bGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJ
KHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQoKTsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmls
dGVyKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR05hbWVzOjpmZUNvbXBvbmVu
dFRyYW5zZmVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwg
aW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwgaW4xKQogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV9p
bjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKLSAgICAsIG1faW4yKHRoaXMsIFNWR05hbWVzOjpp
bjJBdHRyKQotICAgICwgbV9fb3BlcmF0b3IodGhpcywgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwg
RkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUikKLSAgICAsIG1fazEodGhpcywgU1ZHTmFtZXM6Omsx
QXR0cikKLSAgICAsIG1fazIodGhpcywgU1ZHTmFtZXM6OmsyQXR0cikKLSAgICAsIG1fazModGhp
cywgU1ZHTmFtZXM6OmszQXR0cikKLSAgICAsIG1fazQodGhpcywgU1ZHTmFtZXM6Oms0QXR0cikK
KyAgICAsIG1fX29wZXJhdG9yKEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpCiB7CiB9CiAKQEAg
LTYxLDggKzU1LDcgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQQog
ICAgICAgICAgICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKEZFQ09NUE9TSVRFX09QRVJBVE9SX1hP
Uik7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJhcml0aG1ldGljIikKICAgICAgICAgICAg
IHNldF9vcGVyYXRvckJhc2VWYWx1ZShGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDKTsK
LSAgICB9Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjppbkF0dHIpCisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0cikKICAgICAgICAg
c2V0SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmluMkF0dHIpCiAgICAgICAgIHNldEluMkJhc2VWYWx1ZSh2YWx1ZSk7CkBAIC03OCw2
ICs3MSwzNyBAQCB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAg
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJv
bml6ZV9vcGVyYXRvcigpOworICAgICAgICBzeW5jaHJvbml6ZUluMSgpOworICAgICAgICBzeW5j
aHJvbml6ZUluMigpOworICAgICAgICBzeW5jaHJvbml6ZUsxKCk7CisgICAgICAgIHN5bmNocm9u
aXplSzIoKTsKKyAgICAgICAgc3luY2hyb25pemVLMygpOworICAgICAgICBzeW5jaHJvbml6ZUs0
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6Om9wZXJhdG9yQXR0cikKKyAgICAgICAgc3luY2hyb25pemVfb3BlcmF0b3IoKTsKKyAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQorICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAg
ICAgICBzeW5jaHJvbml6ZUluMigpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjprMUF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSzEoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6azJBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUsyKCk7CisgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0cikKKyAgICAgICAgc3luY2hyb25pemVL
MygpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpCisgICAgICAg
IHN5bmNocm9uaXplSzQoKTsKK30KKwogYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxk
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE2ICszMywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNW
R0ZFQ29tcG9zaXRlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05h
bWVzOjpmZUNvbXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5n
LCBJbjEsIGluMSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
Q29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW4yQXR0clN0cmluZywgU3RyaW5nLCBJbjIsIGluMikKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29t
cG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyU3RyaW5nLCBpbnQsIF9vcGVy
YXRvciwgX29wZXJhdG9yKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcsIFNW
R05hbWVzOjprMUF0dHJTdHJpbmcsIGZsb2F0LCBLMSwgazEpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpmZUNv
bXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmsyQXR0clN0cmluZywgZmxvYXQsIEsyLCBrMikK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxl
bWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6azNBdHRyU3Ry
aW5nLCBmbG9hdCwgSzMsIGszKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcs
IFNWR05hbWVzOjprNEF0dHJTdHJpbmcsIGZsb2F0LCBLNCwgazQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRy
LCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIFN0cmluZywgSW4yLCBpbjIp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVDb21wb3NpdGVFbGVtZW50
LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBpbnQsIF9vcGVyYXRvciwgX29wZXJhdG9yKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZH
TmFtZXM6OmsxQXR0ciwgZmxvYXQsIEsxLCBrMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUWShTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMkF0dHIsIGZsb2F0LCBL
MiwgazIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVDb21wb3NpdGVF
bGVtZW50LCBTVkdOYW1lczo6azNBdHRyLCBmbG9hdCwgSzMsIGszKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6Oms0QXR0
ciwgZmxvYXQsIEs0LCBrNCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDggQEAgY2hhciBTVkdLZXJuZWxVbml0TGVuZ3Ro
WUlkZW50aWZpZXJbXSA9IAogCiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvYykKLSAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCi0gICAgLCBtX2Rp
ZmZ1c2VDb25zdGFudCh0aGlzLCBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgMS4wZikK
LSAgICAsIG1fc3VyZmFjZVNjYWxlKHRoaXMsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCAx
LjBmKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWCh0aGlzLCBTVkdOYW1lczo6a2VybmVsVW5p
dExlbmd0aEF0dHIpCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKHRoaXMsIFNWR05hbWVzOjpr
ZXJuZWxVbml0TGVuZ3RoQXR0cikKKyAgICAsIG1fZGlmZnVzZUNvbnN0YW50KDEuMGYpCisgICAg
LCBtX3N1cmZhY2VTY2FsZSgxLjBmKQogewogfQogCkBAIC03MSw2ICs2OCwzMSBAQCB2b2lkIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNCiAgICAgICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAK
K3ZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwor
ICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2FsZSgpOworICAgICAgICBzeW5jaHJvbml6ZURp
ZmZ1c2VDb25zdGFudCgpOworICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7
CisgICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFkoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQorICAgICAg
ICBzeW5jaHJvbml6ZUluMSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dXJmYWNlU2NhbGVBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2FsZSgpOworICAg
IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQorICAg
ICAgICBzeW5jaHJvbml6ZURpZmZ1c2VDb25zdGFudCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgeworICAgICAgICBzeW5jaHJvbml6
ZUtlcm5lbFVuaXRMZW5ndGhYKCk7CisgICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0
aFkoKTsKKyAgICB9Cit9CisKIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWls
ZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCShyZXZp
c2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIH5TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdT
dHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OmRpZmZ1
c2VDb25zdGFudEF0dHJTdHJpbmcsIGZsb2F0LCBEaWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25z
dGFudCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxpZ2h0aW5nVGFnU3RyaW5nLCBT
VkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0clN0cmluZywgZmxvYXQsIFN1cmZhY2VTY2FsZSwgc3Vy
ZmFjZVNjYWxlKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdTdHJp
bmcsIFNWR0tlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5n
dGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxp
Z2h0aW5nVGFnU3RyaW5nLCBTVkdLZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIsIGZsb2F0LCBL
ZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6aW5B
dHRyLCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0
dHIsIGZsb2F0LCBEaWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05h
bWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBmbG9hdCwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUp
CisJCURFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIFNWR0tl
cm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJu
ZWxVbml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxV
bml0TGVuZ3RoQXR0ciwgU1ZHS2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyLCBmbG9hdCwgS2Vy
bmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQogCiAgICAgICAgIFBhc3NSZWZQdHI8
TGlnaHRTb3VyY2U+IGZpbmRMaWdodHMoKSBjb25zdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDExICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2luMSh0aGlzLCBTVkdO
YW1lczo6aW5BdHRyKQotICAgICwgbV9pbjIodGhpcywgU1ZHTmFtZXM6OmluMkF0dHIpCi0gICAg
LCBtX3hDaGFubmVsU2VsZWN0b3IodGhpcywgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
LCBDSEFOTkVMX0EpCi0gICAgLCBtX3lDaGFubmVsU2VsZWN0b3IodGhpcywgU1ZHTmFtZXM6OnlD
aGFubmVsU2VsZWN0b3JBdHRyLCBDSEFOTkVMX0EpCi0gICAgLCBtX3NjYWxlKHRoaXMsIFNWR05h
bWVzOjpzY2FsZUF0dHIpCisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQorICAg
ICwgbV95Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKIHsKIH0KIApAQCAtNzIsNiArNjksMzEg
QEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNlTQogICAgICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQogCit2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hyb25p
emVYQ2hhbm5lbFNlbGVjdG9yKCk7CisgICAgICAgIHN5bmNocm9uaXplWUNoYW5uZWxTZWxlY3Rv
cigpOworICAgICAgICBzeW5jaHJvbml6ZUluMSgpOworICAgICAgICBzeW5jaHJvbml6ZUluMigp
OworICAgICAgICBzeW5jaHJvbml6ZVNjYWxlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyKQorICAg
ICAgICBzeW5jaHJvbml6ZVhDaGFubmVsU2VsZWN0b3IoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIpCisgICAgICAgIHN5bmNocm9uaXpl
WUNoYW5uZWxTZWxlY3RvcigpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmluMkF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSW4yKCk7CisgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikKKyAgICAgICAgc3luY2hyb25p
emVTY2FsZSgpOworfQorCiBib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQo
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNp
b24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0
cmluZyYpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBidWls
ZChTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LCBTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJT
dHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpmZURpc3BsYWNl
bWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluMkF0dHJTdHJpbmcsIFN0cmluZywgSW4yLCBp
bjIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZH
TmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyU3RyaW5nLCBpbnQsIFhDaGFubmVsU2VsZWN0b3Is
IHhDaGFubmVsU2VsZWN0b3IpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1h
cFRhZ1N0cmluZywgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyU3RyaW5nLCBpbnQsIFlD
aGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpm
ZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6OnNjYWxlQXR0clN0cmluZywgZmxv
YXQsIFNjYWxlLCBzY2FsZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIFN0cmluZywgSW4xLCBp
bjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgU3RyaW5nLCBJbjIsIGluMikKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNW
R05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgaW50LCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hh
bm5lbFNlbGVjdG9yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBpbnQs
IFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6c2Nh
bGVBdHRyLCBmbG9hdCwgU2NhbGUsIHNjYWxlKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2
aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw2IEBAIGNoYXIgU1ZHU3RkRGV2aWF0aW9uWUF0
dHJJZGVudGlmaWVyW10gPSAKIAogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2MpCi0gICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQotICAgICwgbV9zdGREZXZp
YXRpb25YKHRoaXMsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKQotICAgICwgbV9zdGREZXZp
YXRpb25ZKHRoaXMsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKQogewogfQogCkBAIC02NSw2
ICs2MiwyNCBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VNYXBwCiAgICAg
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5j
aHJvbml6ZVN0ZERldmlhdGlvblgoKTsKKyAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25Z
KCk7CisgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIpIHsKKyAgICAg
ICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7CisgICAgICAgIHN5bmNocm9uaXplU3RkRGV2
aWF0aW9uWSgpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikK
KyAgICAgICAgc3luY2hyb25pemVJbjEoKTsKK30KKwogYm9vbCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJ
KHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGZsb2F0IHN0ZERldmlhdGlvblgsIGZsb2F0
IHN0ZERldmlhdGlvblkpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgYnVp
bGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVz
OjpmZUdhdXNzaWFuQmx1clRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5n
LCBJbjEsIGluMSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnU3RyaW5nLCBT
VkdTdGREZXZpYXRpb25YQXR0cklkZW50aWZpZXIsIGZsb2F0LCBTdGREZXZpYXRpb25YLCBzdGRE
ZXZpYXRpb25YKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWdTdHJpbmcsIFNW
R1N0ZERldmlhdGlvbllBdHRySWRlbnRpZmllciwgZmxvYXQsIFN0ZERldmlhdGlvblksIHN0ZERl
dmlhdGlvblkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIFNWR1N0ZERldmlhdGlv
blhBdHRySWRlbnRpZmllciwgZmxvYXQsIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgU1ZHU3RkRGV2
aWF0aW9uWUF0dHJJZGVudGlmaWVyLCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9u
WSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsNiBAQCBTVkdGRUltYWdlRWxl
bWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQoY29uCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQogICAg
ICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQot
ICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0cikKLSAgICAsIG1faHJlZih0aGlzLCBYTGlua05hbWVzOjpocmVmQXR0cikKLSAg
ICAsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzLCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGZhbHNlKQogewogfQogCkBAIC05MCw2ICs4NywyNSBAQCB2
b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgfQogfQogCit2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsK
KyAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikKKyAgICAgICAgc3lu
Y2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CisgICAgZWxzZSBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7CisgICAgZWxzZSBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOworfQorCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6aW52YWxpZGF0ZVJlc291
cmNlc0luQW5jZXN0b3JDaGFpbigpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZp
c2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIH5TVkdGRUltYWdlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29u
c3Q7CkBAIC01MSwxNSArNTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKIAotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpmZUlt
YWdlVGFnU3RyaW5nLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHJTdHJpbmcsIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVJbWFnZUVsZW1l
bnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAogICAgICAg
ICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdVUklSZWZlcmVuY2VJZGVudGlmaWVyLCBYTGlua05h
bWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFSW1hZ2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0
ciwgU3RyaW5nLCBIcmVmLCBocmVmKQogCiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFSW1h
Z2VFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVJbWFnZUVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAogICAg
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAg
ICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX3RhcmdldEltYWdlOwpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2hhciBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXJbXSA9ICJT
VkdGRUxpZ2h0RWxlbWVudCI7Ci0KIFNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2F6aW11dGgodGhpcywgU1ZHTmFtZXM6OmF6
aW11dGhBdHRyKQotICAgICwgbV9lbGV2YXRpb24odGhpcywgU1ZHTmFtZXM6OmVsZXZhdGlvbkF0
dHIpCi0gICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyKQotICAgICwgbV95KHRoaXMsIFNW
R05hbWVzOjp5QXR0cikKLSAgICAsIG1feih0aGlzLCBTVkdOYW1lczo6ekF0dHIpCi0gICAgLCBt
X3BvaW50c0F0WCh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikKLSAgICAsIG1fcG9pbnRz
QXRZKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQotICAgICwgbV9wb2ludHNBdFoodGhp
cywgU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgLCBtX3NwZWN1bGFyRXhwb25lbnQodGhp
cywgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCAxLjBmKQotICAgICwgbV9saW1pdGlu
Z0NvbmVBbmdsZSh0aGlzLCBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKQorICAgICwg
bV9zcGVjdWxhckV4cG9uZW50KDEuMGYpCiB7CiB9CiAKQEAgLTc3LDggKzY2LDQ2IEBAIHZvaWQg
U1ZHRkVMaWdodEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgU1ZHRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7Cisg
ICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZUF6aW11dGgoKTsK
KyAgICAgICAgc3luY2hyb25pemVFbGV2YXRpb24oKTsKKyAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgICAgIHN5bmNocm9uaXplWSgpOworICAgICAgICBzeW5jaHJvbml6ZVooKTsKKyAgICAg
ICAgc3luY2hyb25pemVQb2ludHNBdFgoKTsKKyAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFko
KTsKKyAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFooKTsKKyAgICAgICAgc3luY2hyb25pemVT
cGVjdWxhckV4cG9uZW50KCk7CisgICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5nbGUo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6YXppbXV0aEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplQXppbXV0aCgpOworICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQorICAgICAgICBzeW5jaHJv
bml6ZUVsZXZhdGlvbigpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0
cikKKyAgICAgICAgc3luY2hyb25pemVYKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnlBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCisgICAgICAgIHN5bmNocm9uaXplWigpOworICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKQorICAgICAgICBzeW5j
aHJvbml6ZVBvaW50c0F0WCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpw
b2ludHNBdFlBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVBvaW50c0F0WSgpOworICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKQorICAgICAgICBzeW5jaHJv
bml6ZVBvaW50c0F0WigpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0cikKKyAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7
CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0
cikKKyAgICAgICAgc3luY2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOworfQorCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTGln
aHRFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBleHRlcm4gY2hhciBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXJbXTsK
LQogICAgIGNsYXNzIFNWR0ZFTGlnaHRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewogICAg
IHB1YmxpYzoKICAgICAgICAgU1ZHRkVMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CkBAIC0zOCwxOCArMzYsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJj
ZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR0ZFTGlnaHRF
bGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyU3RyaW5nLCBmbG9hdCwgQXpp
bXV0aCwgYXppbXV0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFTGlnaHRFbGVtZW50LCBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpl
bGV2YXRpb25BdHRyU3RyaW5nLCBmbG9hdCwgRWxldmF0aW9uLCBlbGV2YXRpb24pCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVM
aWdodEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6eEF0dHJTdHJpbmcsIGZsb2F0LCBYLCB4
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBm
bG9hdCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
TGlnaHRFbGVtZW50LCBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjp6QXR0
clN0cmluZywgZmxvYXQsIFosIHopCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVMaWdodEVsZW1lbnRJZGVudGlmaWVyLCBTVkdO
YW1lczo6cG9pbnRzQXRYQXR0clN0cmluZywgZmxvYXQsIFBvaW50c0F0WCwgcG9pbnRzQXRYKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQs
IFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHJTdHJp
bmcsIGZsb2F0LCBQb2ludHNBdFksIHBvaW50c0F0WSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdGRUxpZ2h0RWxlbWVudElkZW50
aWZpZXIsIFNWR05hbWVzOjpwb2ludHNBdFpBdHRyU3RyaW5nLCBmbG9hdCwgUG9pbnRzQXRaLCBw
b2ludHNBdFopCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxp
Z2h0RWxlbWVudCwgU1ZHRkVMaWdodEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6c3BlY3Vs
YXJFeHBvbmVudEF0dHJTdHJpbmcsIGZsb2F0LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4
cG9uZW50KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdo
dEVsZW1lbnQsIFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmxpbWl0aW5n
Q29uZUFuZ2xlQXR0clN0cmluZywgZmxvYXQsIExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0Nv
bmVBbmdsZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBmbG9hdCwgQXppbXV0aCwgYXppbXV0aCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFt
ZXM6OmVsZXZhdGlvbkF0dHIsIGZsb2F0LCBFbGV2YXRpb24sIGVsZXZhdGlvbikKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBmbG9hdCwgWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBmbG9hdCwgWSwgeSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnpBdHRy
LCBmbG9hdCwgWiwgeikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxp
Z2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIGZsb2F0LCBQb2ludHNBdFgsIHBv
aW50c0F0WCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIGZsb2F0LCBQb2ludHNBdFksIHBvaW50c0F0
WSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxlbWVudCwg
U1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsIGZsb2F0LCBQb2ludHNBdFosIHBvaW50c0F0WikKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBmbG9hdCwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3Vs
YXJFeHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUxpZ2h0
RWxlbWVudCwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwgZmxvYXQsIExpbWl0aW5n
Q29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykK
LSAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCiB7CiB9CiAKQEAgLTQ2LDYgKzQ1
LDE0IEBAIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpwYXJzZU1hcHBlZEEKICAgICAgICAg
U1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQoreworICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikKKyAgICAgICAgc3luY2hyb25pemVJbjEoKTsKK30KKwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCShy
ZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgflNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
TWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgU3Ry
aW5nLCBJbjEsIGluMSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTAgKzM0LDcgQEAgY2hhciBTVkdSYWRpdXNZQXR0cklkZW50aWZpZXJbXSA9ICJTVkdSYQog
CiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1f
aW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCi0gICAgLCBtX19vcGVyYXRvcih0aGlzLCBTVkdO
YW1lczo6b3BlcmF0b3JBdHRyLCBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCi0gICAgLCBt
X3JhZGl1c1godGhpcywgU1ZHTmFtZXM6OnJhZGl1c0F0dHIpCi0gICAgLCBtX3JhZGl1c1kodGhp
cywgU1ZHTmFtZXM6OnJhZGl1c0F0dHIpCisgICAgLCBtX19vcGVyYXRvcihGRU1PUlBIT0xPR1lf
T1BFUkFUT1JfRVJPREUpCiB7CiB9CiAKQEAgLTcwLDYgKzY3LDI4IEBAIHZvaWQgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6cGFyc2VNYXBwZWQKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOworICAgICAg
ICBzeW5jaHJvbml6ZUluMSgpOworICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1goKTsKKyAgICAg
ICAgc3luY2hyb25pemVSYWRpdXNZKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikKKyAgICAgICAgc3luY2hyb25p
emVfb3BlcmF0b3IoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
KQorICAgICAgICBzeW5jaHJvbml6ZUluMSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpyYWRpdXNBdHRyKSB7CisgICAgICAgIHN5bmNocm9uaXplUmFkaXVzWCgpOworICAg
ICAgICBzeW5jaHJvbml6ZVJhZGl1c1koKTsKKyAgICB9Cit9CisKIGJvb2wgU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
CShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzZXRSYWRpdXMoZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRl
ciopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWdTdHJp
bmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdO
YW1lczo6ZmVNb3JwaG9sb2d5VGFnU3RyaW5nLCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyU3RyaW5n
LCBpbnQsIF9vcGVyYXRvciwgX29wZXJhdG9yKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OmZlTW9ycGhvbG9n
eVRhZ1N0cmluZywgU1ZHUmFkaXVzWEF0dHJJZGVudGlmaWVyLCBmbG9hdCwgUmFkaXVzWCwgcmFk
aXVzWCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQsIFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWdTdHJpbmcsIFNWR1JhZGl1c1lB
dHRySWRlbnRpZmllciwgZmxvYXQsIFJhZGl1c1ksIHJhZGl1c1kpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0
ciwgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBpbnQsIF9vcGVy
YXRvciwgX29wZXJhdG9yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpyYWRpdXNBdHRy
LCBTVkdSYWRpdXNYQXR0cklkZW50aWZpZXIsIGZsb2F0LCBSYWRpdXNYLCByYWRpdXNYKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpyYWRpdXNBdHRyLCBTVkdSYWRpdXNZQXR0cklkZW50
aWZpZXIsIGZsb2F0LCBSYWRpdXNZLCByYWRpdXNZKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4
NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw5ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVPZmZzZXRFbGVt
ZW50OjpTVkdGRU9mZnNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0
YWdOYW1lLCBkb2MpCi0gICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQotICAgICwg
bV9keCh0aGlzLCBTVkdOYW1lczo6ZHhBdHRyKQotICAgICwgbV9keSh0aGlzLCBTVkdOYW1lczo6
ZHlBdHRyKQogewogfQogCkBAIC01NCw2ICs1MSwyNSBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRkVPZmZz
ZXRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUo
KSkgeworICAgICAgICBzeW5jaHJvbml6ZUR4KCk7CisgICAgICAgIHN5bmNocm9uaXplRHkoKTsK
KyAgICAgICAgc3luY2hyb25pemVJbjEoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUR4
KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikKKyAgICAgICAg
c3luY2hyb25pemVEeSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0
dHIpCisgICAgICAgIHN5bmNocm9uaXplSW4xKCk7Cit9CisKIGJvb2wgU1ZHRkVPZmZzZXRFbGVt
ZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiA1Mzg2
OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMiArMzMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5T
VkdGRU9mZnNldEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29s
IGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6
ZmVPZmZzZXRUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBp
bjEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVs
ZW1lbnQsIFNWR05hbWVzOjpmZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmR4QXR0clN0cmlu
ZywgZmxvYXQsIER4LCBkeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnU3RyaW5nLCBTVkdOYW1l
czo6ZHlBdHRyU3RyaW5nLCBmbG9hdCwgRHksIGR5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgU3RyaW5nLCBJ
bjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRU9mZnNldEVs
ZW1lbnQsIFNWR05hbWVzOjpkeEF0dHIsIGZsb2F0LCBEeCwgZHgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBm
bG9hdCwgRHksIGR5KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA1
Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2lu
MSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQotICAgICwgbV9zcGVjdWxhckNvbnN0YW50KHRoaXMs
IFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwgMS4wZikKLSAgICAsIG1fc3BlY3VsYXJF
eHBvbmVudCh0aGlzLCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIDEuMGYpCi0gICAg
LCBtX3N1cmZhY2VTY2FsZSh0aGlzLCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgMS4wZikK
LSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFgodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWSh0aGlzLCBTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIpCisgICAgLCBtX3NwZWN1bGFyQ29uc3RhbnQoMS4wZikKKyAgICAsIG1f
c3BlY3VsYXJFeHBvbmVudCgxLjBmKQorICAgICwgbV9zdXJmYWNlU2NhbGUoMS4wZikKIHsKIH0K
IApAQCAtNzAsNiArNjcsMzQgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpw
YXJzZQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
Cit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
CisgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CisgICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNj
YWxlKCk7CisgICAgICAgIHN5bmNocm9uaXplU3BlY3VsYXJDb25zdGFudCgpOworICAgICAgICBz
eW5jaHJvbml6ZVNwZWN1bGFyRXhwb25lbnQoKTsKKyAgICAgICAgc3luY2hyb25pemVLZXJuZWxV
bml0TGVuZ3RoWCgpOworICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikKKyAgICAgICAgc3luY2hyb25pemVJbjEoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikKKyAgICAgICAgc3luY2hyb25pemVTdXJmYWNl
U2NhbGUoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25z
dGFudEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplU3BlY3VsYXJDb25zdGFudCgpOworICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0cikKKyAgICAg
ICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7CisgICAgICAgIHN5bmNocm9uaXpl
S2VybmVsVW5pdExlbmd0aFgoKTsKKyAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3Ro
WSgpOworICAgIH0KK30KKwogUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cygpIGNvbnN0CiB7CiAgICAgZm9yIChOb2RlKiBuID0g
Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDIzICszMSwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgZXh0ZXJuIGNoYXIg
U1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyW107CiAgICAgZXh0ZXJuIGNoYXIgU1ZHS2Vy
bmVsVW5pdExlbmd0aFlJZGVudGlmaWVyW107CiAKLSAgICBjbGFzcyBTVkdDb2xvcjsKLSAgICAK
ICAgICBjbGFzcyBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogcHVibGljIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogICAgICAgICB2aXJ0dWFsIH5TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KCk7CiAgICAg
ICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNl
RmlsdGVyKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3Vs
YXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEs
IGluMSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcs
IFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0clN0cmluZywgZmxvYXQsIFNwZWN1bGFyQ29u
c3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVjdWxh
ckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHJTdHJpbmcs
IGZsb2F0LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwg
U1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OnN1cmZhY2VT
Y2FsZUF0dHJTdHJpbmcsIGZsb2F0LCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVu
aXRMZW5ndGhYSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJp
bmcsIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5n
dGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBTdHJpbmcs
IEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwgZmxvYXQs
IFNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnNw
ZWN1bGFyRXhwb25lbnRBdHRyLCBmbG9hdCwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBv
bmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgZmxvYXQsIFN1cmZhY2VT
Y2FsZSwgc3VyZmFjZVNjYWxlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01V
TFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpr
ZXJuZWxVbml0TGVuZ3RoQXR0ciwgU1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCBmbG9h
dCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgU1ZHS2VybmVsVW5pdExl
bmd0aFlJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5n
dGhZKQogCiAgICAgICAgIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGZpbmRMaWdodHMoKSBjb25z
dDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGRVRpbGVFbGVtZW50OjpT
VkdGRVRpbGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwg
ZG9jKQotICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKIHsKIH0KIApAQCAtNDks
NiArNDgsMTQgQEAgdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
KworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjppbkF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSW4xKCk7Cit9CisKIGJvb2wgU1ZHRkVUaWxl
RWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA1Mzg2
OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTAgKzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZH
RkVUaWxlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgYnVp
bGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6ZmVUaWxl
VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFVGlsZUVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIFN0cmluZywgSW4xLCBpbjEpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEyICszNCw5IEBAIGNoYXIgU1ZHQmFzZUZyZXF1ZW5jeVlJZGVudGlm
aWVyW10gPSAiU1YKIAogU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAs
IG1fYmFzZUZyZXF1ZW5jeVgodGhpcywgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyKQotICAg
ICwgbV9iYXNlRnJlcXVlbmN5WSh0aGlzLCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIpCi0g
ICAgLCBtX251bU9jdGF2ZXModGhpcywgU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCAxKQotICAg
ICwgbV9zZWVkKHRoaXMsIFNWR05hbWVzOjpzZWVkQXR0cikKLSAgICAsIG1fc3RpdGNoVGlsZXMo
dGhpcywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0gp
Ci0gICAgLCBtX3R5cGUodGhpcywgU1ZHTmFtZXM6OnR5cGVBdHRyLCBGRVRVUkJVTEVOQ0VfVFlQ
RV9UVVJCVUxFTkNFKQorICAgICwgbV9udW1PY3RhdmVzKDEpCisgICAgLCBtX3N0aXRjaFRpbGVz
KFNWR19TVElUQ0hUWVBFX05PU1RJVENIKQorICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBF
X1RVUkJVTEVOQ0UpCiB7CiB9CiAKQEAgLTc0LDYgKzcxLDMzIEBAIHZvaWQgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6cGFyc2VNYXBwZWQKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKKyAgICAgICAgc3luY2hy
b25pemVTdGl0Y2hUaWxlcygpOworICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lYKCk7
CisgICAgICAgIHN5bmNocm9uaXplQmFzZUZyZXF1ZW5jeVkoKTsKKyAgICAgICAgc3luY2hyb25p
emVTZWVkKCk7CisgICAgICAgIHN5bmNocm9uaXplTnVtT2N0YXZlcygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikKKyAg
ICAgICAgc3luY2hyb25pemVUeXBlKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnN0aXRjaFRpbGVzQXR0cikKKyAgICAgICAgc3luY2hyb25pemVTdGl0Y2hUaWxlcygpOwor
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0cikgewor
ICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lYKCk7CisgICAgICAgIHN5bmNocm9uaXpl
QmFzZUZyZXF1ZW5jeVkoKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
ZWVkQXR0cikKKyAgICAgICAgc3luY2hyb25pemVTZWVkKCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZU51bU9j
dGF2ZXMoKTsKK30KKwogYm9vbCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVUdXJidWxlbmNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8VHVyYnVsYW5jZVR5cGU+
KHR5cGUoKSksIGJhc2VGcmVxdWVuY3lYKCksIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
Kik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVy
Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmlu
ZywgU1ZHQmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyLCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVgsIGJh
c2VGcmVxdWVuY3lYKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZH
QmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyLCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVx
dWVuY3lZKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6
Om51bU9jdGF2ZXNBdHRyU3RyaW5nLCBsb25nLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnNlZWRBdHRyU3Ry
aW5nLCBmbG9hdCwgU2VlZCwgc2VlZCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdT
dHJpbmcsIFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHJTdHJpbmcsIGludCwgU3RpdGNoVGlsZXMs
IHN0aXRjaFRpbGVzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZH
TmFtZXM6OnR5cGVBdHRyU3RyaW5nLCBpbnQsIFR5cGUsIHR5cGUpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dCwgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBTVkdCYXNlRnJlcXVlbmN5WElkZW50aWZp
ZXIsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCwgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBTVkdCYXNlRnJlcXVlbmN5WUlkZW50
aWZpZXIsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6
Om51bU9jdGF2ZXNBdHRyLCBsb25nLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVz
OjpzZWVkQXR0ciwgZmxvYXQsIFNlZWQsIHNlZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVFkoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0
ciwgaW50LCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBp
bnQsIFR5cGUsIHR5cGUpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE2ICs0NywxMiBAQCBT
VkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdVUklSZWZl
cmVuY2UoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKQotICAgICwgbV9maWx0ZXJVbml0cyh0aGlzLCBTVkdOYW1lczo6ZmlsdGVyVW5p
dHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCi0g
ICAgLCBtX3ByaW1pdGl2ZVVuaXRzKHRoaXMsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIs
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKLSAgICAsIG1feCh0
aGlzLCBTVkdOYW1lczo6eEF0dHIsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQotICAgICwgbV95
KHRoaXMsIFNWR05hbWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKQotICAgICwg
bV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIxMjAl
IikKLSAgICAsIG1faGVpZ2h0KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBMZW5ndGhNb2Rl
SGVpZ2h0LCAiMTIwJSIpCi0gICAgLCBtX2ZpbHRlclJlc1godGhpcywgU1ZHTmFtZXM6OmZpbHRl
clJlc0F0dHIpCi0gICAgLCBtX2ZpbHRlclJlc1kodGhpcywgU1ZHTmFtZXM6OmZpbHRlclJlc0F0
dHIpCi0gICAgLCBtX2hyZWYodGhpcywgWExpbmtOYW1lczo6aHJlZkF0dHIpCi0gICAgLCBtX2V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRBdHRyLCBmYWxzZSkKKyAgICAsIG1fZmlsdGVyVW5pdHMoU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQorICAgICwgbV9wcmltaXRpdmVVbml0cyhT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCisgICAgLCBtX3goTGVu
Z3RoTW9kZVdpZHRoLCAiLTEwJSIpCisgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUi
KQorICAgICwgbV93aWR0aChMZW5ndGhNb2RlV2lkdGgsICIxMjAlIikKKyAgICAsIG1faGVpZ2h0
KExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeC95IGF0
dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2Yg
Ii0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0aC9oZWlnaHQg
YXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBv
ZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCkBAIC0xMDksNiArMTA1LDQ1IEBAIHZvaWQgU1ZHRmls
dGVyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK3ZvaWQgU1ZHRmlsdGVy
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgIHN5bmNocm9u
aXplWCgpOworICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAgICAgc3luY2hyb25pemVXaWR0
aCgpOworICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOworICAgICAgICBzeW5jaHJvbml6ZUZp
bHRlclVuaXRzKCk7CisgICAgICAgIHN5bmNocm9uaXplUHJpbWl0aXZlVW5pdHMoKTsKKyAgICAg
ICAgc3luY2hyb25pemVGaWx0ZXJSZXNYKCk7CisgICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVz
WSgpOworICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAg
ICAgICAgc3luY2hyb25pemVIcmVmKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVgoKTsK
KyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCisgICAgICAgIHN5bmNo
cm9uaXplWSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIp
CisgICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKKyAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKKyAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKQorICAgICAgICBz
eW5jaHJvbml6ZUZpbHRlclVuaXRzKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnByaW1pdGl2ZVVuaXRzQXR0cikKKyAgICAgICAgc3luY2hyb25pemVQcmltaXRpdmVVbml0
cygpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyKSB7
CisgICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOworICAgICAgICBzeW5jaHJvbml6ZUZp
bHRlclJlc1koKTsKKyAgICB9IGVsc2UgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAgICBlbHNlIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKK30KKwog
RmxvYXRSZWN0IFNWR0ZpbHRlckVsZW1lbnQ6OmZpbHRlckJvdW5kaW5nQm94KGNvbnN0IEZsb2F0
UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGZpbHRlckJC
b3g7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjUgKzUwLDI0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRGaWx0ZXJSZXModW5zaWdu
ZWQgbG9uZyBmaWx0ZXJSZXNYLCB1bnNpZ25lZCBsb25nIGZpbHRlclJlc1kpIGNvbnN0OwogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRl
clRhZ1N0cmluZywgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0clN0cmluZywgaW50LCBGaWx0ZXJV
bml0cywgZmlsdGVyVW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdOYW1lczo6
cHJpbWl0aXZlVW5pdHNBdHRyU3RyaW5nLCBpbnQsIFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVV
bml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJUYWdTdHJpbmcsIFNWR05hbWVzOjp4QXR0clN0cmluZywg
U1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHTmFtZXM6OnlB
dHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVGFnU3RyaW5nLCBT
VkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05h
bWVzOjpmaWx0ZXJUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIEhlaWdodCwgaGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHRmlsdGVy
UmVzWElkZW50aWZpZXIsIGxvbmcsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6
ZmlsdGVyVGFnU3RyaW5nLCBTVkdGaWx0ZXJSZXNZSWRlbnRpZmllciwgbG9uZywgRmlsdGVyUmVz
WSwgZmlsdGVyUmVzWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGaWx0
ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBpbnQsIEZpbHRlclVuaXRzLCBm
aWx0ZXJVbml0cykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGaWx0ZXJF
bGVtZW50LCBTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBpbnQsIFByaW1pdGl2ZVVuaXRz
LCBwcmltaXRpdmVVbml0cykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdG
aWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6eUF0
dHIsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShT
VkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGaWx0ZXJFbGVtZW50
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJF
bGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgU1ZHRmlsdGVyUmVzWElkZW50aWZpZXIs
IGxvbmcsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZp
bHRlclJlc0F0dHIsIFNWR0ZpbHRlclJlc1lJZGVudGlmaWVyLCBsb25nLCBGaWx0ZXJSZXNZLCBm
aWx0ZXJSZXNZKQogCiAgICAgICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNl
SWRlbnRpZmllciwgWExpbmtOYW1lczo6aHJlZkF0dHJTdHJpbmcsIFN0cmluZywgSHJlZiwgaHJl
ZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGaWx0ZXJFbGVtZW50LCBY
TGlua05hbWVzOjpocmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQogCiAgICAgICAgIC8vIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJ
ZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWShTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHUmVzb3VyY2VGaWx0ZXI+IG1f
ZmlsdGVyOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTUgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2hhciBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVySWRlbnRpZmllcltdID0gIlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIiOwotCiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQog
ICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3godGhpcywgU1ZH
TmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIwJSIpCi0gICAgLCBtX3kodGhpcywgU1ZH
TmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMCUiKQotICAgICwgbV93aWR0aCh0aGlz
LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKLSAgICAsIG1f
aGVpZ2h0KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAw
JSIpCi0gICAgLCBtX3Jlc3VsdCh0aGlzLCBTVkdOYW1lczo6cmVzdWx0QXR0cikKKyAgICAsIG1f
eChMZW5ndGhNb2RlV2lkdGgsICIwJSIpCisgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCwgIjAl
IikKKyAgICAsIG1fd2lkdGgoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAgLCBtX2hlaWdo
dChMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KQEAgLTY4LDYgKzY1LDMxIEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Cisg
ICAgICAgIHN5bmNocm9uaXplWCgpOworICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAgICAg
c3luY2hyb25pemVXaWR0aCgpOworICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOworICAgICAg
ICBzeW5jaHJvbml6ZVJlc3VsdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgc3luY2hyb25pemVYKCk7Cisg
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQorICAgICAgICBzeW5jaHJv
bml6ZVkoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQor
ICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7CisgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlc3VsdEF0dHIpCisgICAgICAgIHN5bmNocm9u
aXplUmVzdWx0KCk7Cit9CisKIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291cmNlRmls
dGVyLCBGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCkgY29uc3QKIHsKICAgICBBU1NFUlQoZmls
dGVyRWZmZWN0KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGV4dGVybiBjaGFyIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXJbXTsKLQogICAgIGNs
YXNzIFNWR1Jlc291cmNlRmlsdGVyOwogCiAgICAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQgewpAQCAtNDEsNiArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlckVm
ZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmly
dHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKikgPSAwOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTUwLDExICs0OSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKFNWR1Jlc291cmNlRmlsdGVyKiwgRmlsdGVyRWZmZWN0KikgY29u
c3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVyLCBTVkdOYW1lczo6eEF0dHJTdHJpbmcsIFNW
R0xlbmd0aCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllciwgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlc0lkZW50aWZpZXIsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0
aCwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVyLCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZywg
U1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllciwgU1ZHTmFtZXM6OnJlc3VsdEF0
dHJTdHJpbmcsIFN0cmluZywgUmVzdWx0LCByZXN1bHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1l
czo6eEF0dHIsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp5QXR0
ciwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OndpZHRoQXR0ciwg
U1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VFkoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6aGVpZ2h0
QXR0ciwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVz
OjpyZXN1bHRBdHRyLCBTdHJpbmcsIFJlc3VsdCwgcmVzdWx0KQogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5
KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAogU1ZHRm9udEVsZW1lbnQ6
OlNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2MpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykgCi0gICAgLCBtX2V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBmYWxzZSkKICAgICAsIG1faXNHbHlwaENhY2hlVmFsaWQoZmFsc2UpCiB7CiB9
CkBAIC00OSw2ICs0OCwxNCBAQCBTVkdGb250RWxlbWVudDo6flNWR0ZvbnRFbGVtZW50KCkKIHsK
IH0KIAordm9pZCBTVkdGb250RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KQorICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKK30KKwog
dm9pZCBTVkdGb250RWxlbWVudDo6aW52YWxpZGF0ZUdseXBoQ2FjaGUoKQogewogICAgIGlmICht
X2lzR2x5cGhDYWNoZVZhbGlkKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgJKHJldmlzaW9uIDUz
ODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR0ZvbnRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdG
b250RWxlbWVudCgpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfSAgICAKIAogICAgICAgICB2b2lk
IGludmFsaWRhdGVHbHlwaENhY2hlKCk7CkBAIC00OSw5ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvbnRFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRm9udEVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAogICAgICAgICB2b2lk
IGVuc3VyZUdseXBoQ2FjaGUoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMCBAQCBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjCiAgICAgLCBTVkdUZXN0cygp
CiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCi0gICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0g
ICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwg
bV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0gICAg
LCBtX2hlaWdodCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkK
LSAgICAsIG1faHJlZih0aGlzLCBYTGlua05hbWVzOjpocmVmQXR0cikKLSAgICAsIG1fZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzLCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIGZhbHNlKQorICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feShM
ZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aChMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBt
X2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0KQogewogfQogCkBAIC0xNTMsNiArMTUxLDM0IEBAIHZv
aWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnUKICAgICAgICAgcmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKK3ZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7
CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAg
c3luY2hyb25pemVYKCk7CisgICAgICAgIHN5bmNocm9uaXplWSgpOworICAgICAgICBzeW5jaHJv
bml6ZVdpZHRoKCk7CisgICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7CisgICAgICAgIHN5bmNo
cm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplWCgpOworICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp5QXR0cikKKyAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKKyAgICAgICAgc3luY2hyb25p
emVXaWR0aCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KQorICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOworICAgIGVsc2UgaWYgKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBz
eW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAgICBlbHNlIGlmIChTVkdV
UklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJv
bml6ZUhyZWYoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZvcmVpZ25PYmplY3QodGhpcyk7CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjMg
KzQyLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKICAgICAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWdTdHJpbmcsIFNWR05hbWVzOjp4QXR0clN0cmlu
ZywgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnU3Ry
aW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdO
YW1lczo6Zm9yZWlnbk9iamVjdFRhZ1N0cmluZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywg
U1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RU
YWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEhlaWdodCwg
aGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6
OnlBdHRyLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VFkoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFNWR0xlbmd0
aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgU1ZHTGVuZ3RoLCBIZWln
aHQsIGhlaWdodCkKIAogICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdVUklS
ZWZlcmVuY2VJZGVudGlmaWVyLCBYTGlua05hbWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBI
cmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQog
CiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0clN0
cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQCBTVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkCiAgICAgLCBTVkdU
ZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpCi0gICAgLCBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcywgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBmYWxzZSkKIHsKIH0KIApAQCAtNjYs
NiArNjUsMTQgQEAgdm9pZCBTVkdHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAg
ICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAordm9pZCBTVkdHRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
K3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSB8fCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Cit9CisKIHZvaWQgU1ZH
R0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVm
b3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRC
eVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSArNDIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0g
MCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAg
ICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0dFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHR0VsZW1lbnQs
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2hhciBTVkdHcmFkaWVudEVsZW1lbnRJZGVudGlmaWVyW10gPSAiU1ZHR3JhZGllbnRFbGVt
ZW50IjsKLQogU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1l
bnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKICAgICAsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV9zcHJlYWRNZXRob2QodGhpcywgU1ZHTmFt
ZXM6OnNwcmVhZE1ldGhvZEF0dHIpCi0gICAgLCBtX2dyYWRpZW50VW5pdHModGhpcywgU1ZHTmFt
ZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1gpCi0gICAgLCBtX2dyYWRpZW50VHJhbnNmb3JtKHRoaXMsIFNWR05hbWVzOjpn
cmFkaWVudFRyYW5zZm9ybUF0dHIsIFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6
Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSkKLSAgICAsIG1faHJlZih0aGlzLCBYTGlua05hbWVzOjpo
cmVmQXR0cikKLSAgICAsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzLCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGZhbHNlKQorICAgICwgbV9ncmFkaWVu
dFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKKyAg
ICAsIG1fZ3JhZGllbnRUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQogewogfQogCkBAIC0xMDEsNiArOTYsMzEgQEAgdm9p
ZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBtX3Jlc291cmNl
LT5pbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFVuaXRzKCk7
CisgICAgICAgIHN5bmNocm9uaXplR3JhZGllbnRUcmFuc2Zvcm0oKTsKKyAgICAgICAgc3luY2hy
b25pemVTcHJlYWRNZXRob2QoKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7CisgICAgICAgIHN5bmNocm9uaXplSHJlZigpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0
cikKKyAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFVuaXRzKCk7CisgICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikKKyAgICAgICAgc3luY2hy
b25pemVHcmFkaWVudFRyYW5zZm9ybSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpzcHJlYWRNZXRob2RBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVNwcmVhZE1ldGhvZCgp
OworICAgIGVsc2UgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKTsKKyAgICBlbHNlIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKK30KKwogdm9pZCBTVkdHcmFk
aWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsK
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBi
ZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgZXh0ZXJuIGNoYXIgU1ZHR3JhZGllbnRFbGVtZW50SWRlbnRp
ZmllcltdOwotCiAgICAgY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50IDogcHVibGljIFNWR1N0eWxl
ZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCB7CkBAIC00Miw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdl
ID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAg
ICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CkBAIC02MCwxNyArNTksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdQYWludFNlcnZlckdyYWRpZW50PiBtX3Jlc291cmNl
OwogIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50SWRlbnRpZmllciwgU1ZH
TmFtZXM6OnNwcmVhZE1ldGhvZEF0dHJTdHJpbmcsIGludCwgU3ByZWFkTWV0aG9kLCBzcHJlYWRN
ZXRob2QpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdHcmFkaWVu
dEVsZW1lbnQsIFNWR0dyYWRpZW50RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpncmFkaWVu
dFVuaXRzQXR0clN0cmluZywgaW50LCBHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBT
VkdHcmFkaWVudEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1B
dHRyU3RyaW5nLCBTVkdUcmFuc2Zvcm1MaXN0LCBHcmFkaWVudFRyYW5zZm9ybSwgZ3JhZGllbnRU
cmFuc2Zvcm0pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHR3JhZGllbnRF
bGVtZW50LCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgaW50LCBTcHJlYWRNZXRob2QsIHNw
cmVhZE1ldGhvZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdHcmFkaWVu
dEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgaW50LCBHcmFkaWVudFVuaXRz
LCBncmFkaWVudFVuaXRzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0dy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgU1ZHVHJhbnNm
b3JtTGlzdCosIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKIAogICAgICAg
ICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNlSWRlbnRpZmllciwgWExpbmtO
YW1lczo6aHJlZkF0dHJTdHJpbmcsIFN0cmluZywgSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWShTVkdHcmFkaWVudEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHR3Jh
ZGllbnRFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHR3JhZGll
bnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2ws
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxMCBAQCBTVkdJbWFnZUVsZW1lbnQ6OlNWR0lt
YWdlRWxlbWVudChjb25zdCBRCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQotICAgICwgbV94
KHRoaXMsIFNWR05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95KHRoaXMs
IFNWR05hbWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fd2lkdGgodGhpcywg
U1ZHTmFtZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9oZWlnaHQodGhp
cywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3ByZXNl
cnZlQXNwZWN0UmF0aW8odGhpcywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKQot
ICAgICwgbV9ocmVmKHRoaXMsIFhMaW5rTmFtZXM6OmhyZWZBdHRyKQotICAgICwgbV9leHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgZmFsc2UpCisgICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KExl
bmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
aGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCiB7CiB9
CkBAIC0xMDgsNiArMTA1LDM3IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2UKICAgICB9CiB9CiAKK3ZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgIHN5bmNocm9uaXplWCgpOworICAg
ICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOworICAgICAg
ICBzeW5jaHJvbml6ZUhlaWdodCgpOworICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0
UmF0aW8oKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7
CisgICAgICAgIHN5bmNocm9uaXplSHJlZigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgc3luY2hyb25pemVY
KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQorICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhB
dHRyKQorICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Cisg
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
KQorICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBlbHNlIGlm
IChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CisgICAg
ZWxzZSBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAg
ICAgICAgc3luY2hyb25pemVIcmVmKCk7Cit9CisKIGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpoYXNS
ZWxhdGl2ZVZhbHVlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICh4KCkuaXNSZWxhdGl2ZSgpIHx8
IHdpZHRoKCkuaXNSZWxhdGl2ZSgpIHx8CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNp
b24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtNjEsMTkgKzYyLDE3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlVmFsdWVzKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aW1hZ2VUYWdTdHJpbmcsIFNWR05hbWVzOjp4
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aW1hZ2VUYWdTdHJpbmcsIFNW
R05hbWVzOjp5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aW1hZ2VUYWdT
dHJpbmcsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRo
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50
LCBTVkdOYW1lczo6aW1hZ2VUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aW1hZ2VUYWdTdHJpbmcsIFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0clN0cmluZywgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwg
U1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0lt
YWdlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUWShTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBTVkdMZW5ndGgs
IEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0lt
YWdlRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
CiAgICAgICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdVUklSZWZlcmVuY2VJZGVudGlmaWVyLCBY
TGlua05hbWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBIcmVmLCBocmVmKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ltYWdlRWxlbWVudCwgWExpbmtOYW1lczo6aHJl
ZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKIAogICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJ
bWFnZUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJZGVudGlmaWVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdJbWFnZUVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAogICAg
ICAgICBTVkdJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogICAgIH07CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDEwIEBAIFNWR0xpbmVFbGVtZW50
OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xh
bmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1f
eDEodGhpcywgU1ZHTmFtZXM6OngxQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95MSh0
aGlzLCBTVkdOYW1lczo6eTFBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwgbV94Mih0aGlz
LCBTVkdOYW1lczo6eDJBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3kyKHRoaXMsIFNW
R05hbWVzOjp5MkF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX2V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBmYWxzZSkKKyAgICAsIG1feDEoTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95MShMZW5ndGhN
b2RlSGVpZ2h0KQorICAgICwgbV94MihMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kyKExlbmd0
aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTg1LDYgKzg0LDMxIEBAIHZvaWQgU1ZHTGluZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CiB9CiAKK3ZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0
dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hyb25pemVYMSgpOworICAgICAg
ICBzeW5jaHJvbml6ZVkxKCk7CisgICAgICAgIHN5bmNocm9uaXplWDIoKTsKKyAgICAgICAgc3lu
Y2hyb25pemVZMigpOworICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eDFBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVgxKCk7CisgICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKKyAgICAgICAgc3luY2hyb25pemVZMSgpOworICAg
IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4MkF0dHIpCisgICAgICAgIHN5bmNocm9u
aXplWDIoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKQorICAg
ICAgICBzeW5jaHJvbml6ZVkyKCk7CisgICAgZWxzZSBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworfQorCiBQYXRoIFNWR0xpbmVFbGVtZW50Ojp0
b1BhdGhEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gUGF0aDo6Y3JlYXRlTGluZShGbG9hdFBv
aW50KHgxKCkudmFsdWUodGhpcyksIHkxKCkudmFsdWUodGhpcykpLApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHTGluZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxl
bWVudC5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBj
b25zdDsKIApAQCAtNTIsMTUgKzUzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCBib29sIGhhc1JlbGF0aXZlVmFsdWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNW
R05hbWVzOjpsaW5lVGFnU3RyaW5nLCBTVkdOYW1lczo6eDFBdHRyU3RyaW5nLCBTVkdMZW5ndGgs
IFgxLCB4MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVF
bGVtZW50LCBTVkdOYW1lczo6bGluZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnkxQXR0clN0cmluZywg
U1ZHTGVuZ3RoLCBZMSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVUYWdTdHJpbmcsIFNWR05hbWVzOjp4MkF0
dHJTdHJpbmcsIFNWR0xlbmd0aCwgWDIsIHgyKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjpsaW5lVGFnU3RyaW5nLCBTVkdO
YW1lczo6eTJBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFkyLCB5MikKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgU1ZHTGVu
Z3RoLCBYMSwgeDEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTGluZUVs
ZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFNWR0xlbmd0aCwgWTEsIHkxKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDJBdHRyLCBT
VkdMZW5ndGgsIFgyLCB4MikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdM
aW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgU1ZHTGVuZ3RoLCBZMiwgeTIpCiAKICAgICAg
ICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWShTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05h
bWUsIGRvYykKLSAgICAsIG1feDEodGhpcywgU1ZHTmFtZXM6OngxQXR0ciwgTGVuZ3RoTW9kZVdp
ZHRoKQotICAgICwgbV95MSh0aGlzLCBTVkdOYW1lczo6eTFBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0
KQotICAgICwgbV94Mih0aGlzLCBTVkdOYW1lczo6eDJBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIx
MDAlIikKLSAgICAsIG1feTIodGhpcywgU1ZHTmFtZXM6OnkyQXR0ciwgTGVuZ3RoTW9kZUhlaWdo
dCkKKyAgICAsIG1feDEoTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95MShMZW5ndGhNb2RlSGVp
Z2h0KQorICAgICwgbV94MihMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKKyAgICAsIG1feTIoTGVu
Z3RoTW9kZUhlaWdodCkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeDIgYXR0cmlidXRlIGlzIG5v
dCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBz
cGVjaWZpZWQuCiB9CkBAIC03OCw2ICs3OCwyOCBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG1fcmVzb3VyY2UtPmludmFsaWRhdGUoKTsKIH0KIAor
dm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7CisgICAgICAgIHN5bmNocm9uaXplWDEoKTsKKyAgICAgICAgc3luY2hyb25pemVZMSgp
OworICAgICAgICBzeW5jaHJvbml6ZVgyKCk7CisgICAgICAgIHN5bmNocm9uaXplWTIoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDFB
dHRyKQorICAgICAgICBzeW5jaHJvbml6ZVgxKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnkxQXR0cikKKyAgICAgICAgc3luY2hyb25pemVZMSgpOworICAgIGVsc2UgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp4MkF0dHIpCisgICAgICAgIHN5bmNocm9uaXplWDIoKTsK
KyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKQorICAgICAgICBzeW5j
aHJvbml6ZVkyKCk7Cit9CisKIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdy
YWRpZW50KCkgY29uc3QKIHsKICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgYXR0cmlidXRl
cyA9IGNvbGxlY3RHcmFkaWVudFByb3BlcnRpZXMoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudCgpIGNvbnN0OwpAQCAtNDQsMTAg
KzQ1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzIGNvbGxlY3RHcmFkaWVudFByb3BlcnRpZXMoKSBjb25zdDsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQsIFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZ1N0cmluZywgU1ZHTmFtZXM6Ongx
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpsaW5lYXJH
cmFkaWVudFRhZ1N0cmluZywgU1ZHTmFtZXM6OnkxQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZMSwg
eTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZ1N0cmluZywgU1ZHTmFtZXM6
OngyQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYMiwgeDIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpsaW5l
YXJHcmFkaWVudFRhZ1N0cmluZywgU1ZHTmFtZXM6OnkyQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZ
MiwgeTIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBTVkdMZW5ndGgsIFgxLCB4MSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05h
bWVzOjp5MUF0dHIsIFNWR0xlbmd0aCwgWTEsIHkxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngyQXR0ciwgU1ZH
TGVuZ3RoLCBYMiwgeDIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRyLCBTVkdMZW5ndGgsIFkyLCB5MikK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNWR01QYXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFu
YW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRWxlbWVudChxbmFtZSwgZG9jKQotICAgICwg
bV9ocmVmKHRoaXMsIFhMaW5rTmFtZXM6OmhyZWZBdHRyKQotICAgICwgbV9leHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgZmFsc2UpCiB7CiB9CiAKQEAgLTQ3LDYgKzQ1LDIyIEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKTsKIH0KIAordm9pZCBTVkdNUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUo
KSkgeworICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAg
ICAgICAgc3luY2hyb25pemVIcmVmKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpCisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAg
IGVsc2UgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisg
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOworfQorCiBTVkdQYXRoRWxlbWVudCogU1ZHTVBhdGhF
bGVtZW50OjpwYXRoRWxlbWVudCgpCiB7CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZG9jdW1lbnQo
KS0+Z2V0RWxlbWVudEJ5SWQoZ2V0VGFyZ2V0KGhyZWYoKSkpOwpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHTVBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVt
ZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE3ICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgflNWR01QYXRoRWxlbWVudCgpOwogICAgICAgICAKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgICAgIAogICAgICAgICBTVkdQYXRoRWxlbWVudCogcGF0aEVsZW1lbnQoKTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNUGF0aEVsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZUlkZW50aWZpZXIsIFhMaW5rTmFtZXM6OmhyZWZBdHRyU3RyaW5nLCBTdHJpbmcsIEhyZWYs
IGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTVBhdGhFbGVtZW50
LCBYTGlua05hbWVzOjpocmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQogCiAgICAgICAgIC8v
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01QYXRoRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZElkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJpbmcsIGJvb2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR01QYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNiArNDIsMTIgQEAgU1ZHTWFy
a2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudChjb25zdAogICAgICwgU1ZHTGFuZ1NwYWNlKCkK
ICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHRml0VG9WaWV3
Qm94KCkKLSAgICAsIG1fcmVmWCh0aGlzLCBTVkdOYW1lczo6cmVmWEF0dHIsIExlbmd0aE1vZGVX
aWR0aCkKLSAgICAsIG1fcmVmWSh0aGlzLCBTVkdOYW1lczo6cmVmWUF0dHIsIExlbmd0aE1vZGVI
ZWlnaHQpCi0gICAgLCBtX21hcmtlcldpZHRoKHRoaXMsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0
dHIsIExlbmd0aE1vZGVXaWR0aCwgIjMiKQotICAgICwgbV9tYXJrZXJIZWlnaHQodGhpcywgU1ZH
TmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQsICIzIikgCi0gICAgLCBt
X21hcmtlclVuaXRzKHRoaXMsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsIFNWR19NQVJLRVJV
TklUU19TVFJPS0VXSURUSCkKLSAgICAsIG1fb3JpZW50VHlwZSh0aGlzLCBTVkdOYW1lczo6b3Jp
ZW50QXR0ciwgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUpCi0gICAgLCBtX29yaWVudEFuZ2xlKHRo
aXMsIFNWR05hbWVzOjpvcmllbnRBdHRyKQotICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2Up
Ci0gICAgLCBtX3ZpZXdCb3godGhpcywgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKQotICAgICwgbV9w
cmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
cikKKyAgICAsIG1fcmVmWChMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3JlZlkoTGVuZ3RoTW9k
ZUhlaWdodCkKKyAgICAsIG1fbWFya2VyV2lkdGgoTGVuZ3RoTW9kZVdpZHRoLCAiMyIpCisgICAg
LCBtX21hcmtlckhlaWdodChMZW5ndGhNb2RlSGVpZ2h0LCAiMyIpIAorICAgICwgbV9tYXJrZXJV
bml0cyhTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEgpCisgICAgLCBtX29yaWVudFR5cGUoU1ZH
X01BUktFUl9PUklFTlRfQU5HTEUpCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIG1hcmtlcldpZHRo
L21hcmtlckhlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICIzIiB3ZXJlIHNwZWNpZmllZC4KIH0KQEAgLTEyNCw2ICsxMjAsNDUg
QEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIH0KIH0KIAor
dm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAg
ICAgICAgc3luY2hyb25pemVNYXJrZXJVbml0cygpOworICAgICAgICBzeW5jaHJvbml6ZVJlZlgo
KTsKKyAgICAgICAgc3luY2hyb25pemVSZWZZKCk7CisgICAgICAgIHN5bmNocm9uaXplTWFya2Vy
V2lkdGgoKTsKKyAgICAgICAgc3luY2hyb25pemVNYXJrZXJIZWlnaHQoKTsKKyAgICAgICAgc3lu
Y2hyb25pemVPcmllbnRBbmdsZSgpOworICAgICAgICBzeW5jaHJvbml6ZU9yaWVudFR5cGUoKTsK
KyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CisgICAgICAg
IHN5bmNocm9uaXplVmlld0JveCgpOworICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0
UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6bWFya2VyVW5pdHNBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZU1hcmtlclVuaXRz
KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKQorICAgICAg
ICBzeW5jaHJvbml6ZVJlZlgoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cmVmWUF0dHIpCisgICAgICAgIHN5bmNocm9uaXplUmVmWSgpOworICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplTWFy
a2VyV2lkdGgoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFya2VySGVp
Z2h0QXR0cikKKyAgICAgICAgc3luY2hyb25pemVNYXJrZXJIZWlnaHQoKTsKKyAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgeworICAgICAgICBzeW5jaHJvbml6
ZU9yaWVudEFuZ2xlKCk7CisgICAgICAgIHN5bmNocm9uaXplT3JpZW50VHlwZSgpOworICAgIH0g
ZWxzZSBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OworICAgIGVsc2UgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKKyAgICAgICAgc3luY2hyb25pemVWaWV3Qm94KCk7CisgICAgICAgIHN5bmNocm9uaXpl
UHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgIH0KK30KKwogdm9pZCBTVkdNYXJrZXJFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5n
ZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5
bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdl
LCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NCwyOCArNjQsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoY29u
c3QgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclRhZ1N0
cmluZywgU1ZHTmFtZXM6OnJlZlhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFJlZlgsIHJlZlgpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBT
VkdOYW1lczo6bWFya2VyVGFnU3RyaW5nLCBTVkdOYW1lczo6cmVmWUF0dHJTdHJpbmcsIFNWR0xl
bmd0aCwgUmVmWSwgcmVmWSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcsIFNWR05hbWVzOjpt
YXJrZXJXaWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRo
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVu
dCwgU1ZHTmFtZXM6Om1hcmtlclRhZ1N0cmluZywgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHJT
dHJpbmcsIFNWR0xlbmd0aCwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
bWFya2VyVGFnU3RyaW5nLCBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyU3RyaW5nLCBpbnQsIE1h
cmtlclVuaXRzLCBtYXJrZXJVbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcsIFNWR09y
aWVudFR5cGVBdHRySWRlbnRpZmllciwgaW50LCBPcmllbnRUeXBlLCBvcmllbnRUeXBlKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZH
TmFtZXM6Om1hcmtlclRhZ1N0cmluZywgU1ZHT3JpZW50QW5nbGVBdHRySWRlbnRpZmllciwgU1ZH
QW5nbGUsIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWShTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFNWR0xlbmd0
aCwgUmVmWCwgcmVmWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNYXJr
ZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWUF0dHIsIFNWR0xlbmd0aCwgUmVmWSwgcmVmWSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1l
czo6bWFya2VyV2lkdGhBdHRyLCBTVkdMZW5ndGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNYXJrZXJFbGVtZW50LCBTVkdO
YW1lczo6bWFya2VySGVpZ2h0QXR0ciwgU1ZHTGVuZ3RoLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNYXJrZXJFbGVtZW50
LCBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBpbnQsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0
cykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBMRV9XUkFQUEVSUyhT
VkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6b3JpZW50QXR0ciwgU1ZHT3JpZW50VHlwZUF0dHJJ
ZGVudGlmaWVyLCBpbnQsIE9yaWVudFR5cGUsIG9yaWVudFR5cGUpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZH
TmFtZXM6Om9yaWVudEF0dHIsIFNWR09yaWVudEFuZ2xlQXR0cklkZW50aWZpZXIsIFNWR0FuZ2xl
LCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCiAKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
TWFya2VyRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJpbmcsIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR01hcmtl
ckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAog
ICAgICAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXIsIFNW
R05hbWVzOjp2aWV3Qm94QXR0clN0cmluZywgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwg
U1ZHRml0VG9WaWV3Qm94SWRlbnRpZmllciwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9B
dHRyU3RyaW5nLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgRmxvYXRSZWN0LCBWaWV3Qm94
LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR01hcmtlckVs
ZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKICAKICAg
ICAgICAgUmVmUHRyPFNWR1Jlc291cmNlTWFya2VyPiBtX21hcmtlcjsKICAgICB9OwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdN
YXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE0ICs1MywxMiBAQCBTVkdNYXNr
RWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAgICAg
LCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0g
ICAgLCBtX21hc2tVbml0cyh0aGlzLCBTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQotICAgICwgbV9tYXNrQ29udGVu
dFVuaXRzKHRoaXMsIFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVz
OjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQotICAgICwgbV94KHRoaXMsIFNWR05hbWVz
Ojp4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpCi0gICAgLCBtX3kodGhpcywgU1ZHTmFt
ZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpCi0gICAgLCBtX3dpZHRoKHRoaXMs
IFNWR05hbWVzOjp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKQotICAgICwgbV9o
ZWlnaHQodGhpcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAl
IikKLSAgICAsIG1faHJlZih0aGlzLCBYTGlua05hbWVzOjpocmVmQXR0cikKLSAgICAsIG1fZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzLCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIGZhbHNlKQorICAgICwgbV9tYXNrVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQorICAgICwgbV9tYXNrQ29udGVudFVuaXRzKFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKKyAgICAsIG1feChMZW5n
dGhNb2RlV2lkdGgsICItMTAlIikKKyAgICAsIG1feShMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIp
CisgICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKQorICAgICwgbV9oZWlnaHQo
TGVuZ3RoTW9kZUhlaWdodCwgIjEyMCUiKQogewogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0
cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAi
LTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KQEAgLTEyMiw2ICsxMjAsMzQgQEAgdm9pZCBTVkdNYXNr
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICAgICAgaXQtPnNlY29uZC0+aW52
YWxpZGF0ZSgpOwogfQogCit2b2lkIFNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hyb25pemVNYXNrVW5pdHMoKTsKKyAgICAgICAgc3lu
Y2hyb25pemVNYXNrQ29udGVudFVuaXRzKCk7CisgICAgICAgIHN5bmNocm9uaXplWCgpOworICAg
ICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7CisgICAgICAgIHN5bmNocm9uaXplSHJlZigpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyKQor
ICAgICAgICBzeW5jaHJvbml6ZU1hc2tVbml0cygpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0cikKKyAgICAgICAgc3luY2hyb25pemVNYXNr
Q29udGVudFVuaXRzKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQorICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUF0dHIpCisgICAgICAgIHN5bmNocm9uaXplWSgpOworICAgIGVsc2UgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAgICBlbHNlIGlm
IChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKK30KKwogdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2Us
IGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5
KQorKysgV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZsb2F0UmVjdCBtYXNrQm91
bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKQEAgLTU3LDIwICs1
OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NPd25QdHI8SW1hZ2VCdWZm
ZXI+IGRyYXdNYXNrZXJDb250ZW50KGNvbnN0IFJlbmRlck9iamVjdCosIEZsb2F0UmVjdCYgbWFz
a1JlY3QsIGJvb2wmIGVtcHR5TWFzaykgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjpt
YXNrVGFnU3RyaW5nLCBTVkdOYW1lczo6bWFza1VuaXRzQXR0clN0cmluZywgaW50LCBNYXNrVW5p
dHMsIG1hc2tVbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza1RhZ1N0cmluZywgU1ZHTmFtZXM6Om1hc2tDb250
ZW50VW5pdHNBdHRyU3RyaW5nLCBpbnQsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5p
dHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVu
dCwgU1ZHTmFtZXM6Om1hc2tUYWdTdHJpbmcsIFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVu
Z3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFz
a0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVGFnU3RyaW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcs
IFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza1RhZ1N0cmluZywgU1ZHTmFtZXM6OndpZHRo
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tUYWdTdHJp
bmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR01hc2tFbGVtZW50LCBTVkdO
YW1lczo6bWFza1VuaXRzQXR0ciwgaW50LCBNYXNrVW5pdHMsIG1hc2tVbml0cykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tD
b250ZW50VW5pdHNBdHRyLCBpbnQsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTWFza0VsZW1lbnQsIFNWR05h
bWVzOjp4QXR0ciwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFNWR0xlbmd0aCwgWSwgeSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNYXNrRWxlbWVudCwgU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBT
VkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogCiAgICAgICAgIC8vIFNWR1VSSVJlZmVyZW5jZQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNW
R1VSSVJlZmVyZW5jZUlkZW50aWZpZXIsIFhMaW5rTmFtZXM6OmhyZWZBdHRyU3RyaW5nLCBTdHJp
bmcsIEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTWFz
a0VsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKICAg
ICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUWShTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQogCiAgICAgICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0Kiwg
UmVmUHRyPFNWR1Jlc291cmNlTWFza2VyPiA+IG1fbWFza2VyOwogICAgIH07CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNiBAQCBTVkdQYXRoRWxlbWVu
dDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdM
YW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBt
X3BhdGhMZW5ndGgodGhpcywgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCAwLjBmKQotICAgICwg
bV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCiB7CiB9CiAKQEAgLTIwNiw2ICsyMDQsMjIgQEAgdm9p
ZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICByZW5kZXJlcigp
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAordm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6
ZVBhdGhMZW5ndGgoKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnBhdGhMZW5ndGhBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVBhdGhMZW5ndGgoKTsK
KyAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Cit9CisKIFNWR1BhdGhTZWdMaXN0KiBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3Qo
KSBjb25zdAogewogICAgIGlmICghbV9wYXRoU2VnTGlzdCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7
CiAKQEAgLTEwMCwxMiArMTAxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRl
OgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdQYXRoU2VnTGlzdD4gbV9wYXRoU2VnTGlzdDsK
IAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0aEVsZW1lbnQs
IFNWR05hbWVzOjpwYXRoVGFnU3RyaW5nLCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHJTdHJpbmcs
IGZsb2F0LCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIGZsb2F0
LCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQogCiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1Bh
dGhFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHUGF0aEVsZW1l
bnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTcgKzU1LDEzIEBAIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQ
YXR0ZXJuRWxlbWVudChjb24KICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCi0gICAgLCBtX3go
dGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3kodGhpcywg
U1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwgbV93aWR0aCh0aGlzLCBT
VkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX2hlaWdodCh0aGlz
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcGF0dGVy
blVuaXRzKHRoaXMsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCi0gICAgLCBtX3BhdHRlcm5Db250ZW50VW5p
dHModGhpcywgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCi0gICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0o
dGhpcywgU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0Ojpj
cmVhdGUoU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSkKLSAgICAsIG1faHJlZih0aGlz
LCBYTGlua05hbWVzOjpocmVmQXR0cikKLSAgICAsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCh0aGlzLCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGZhbHNlKQot
ICAgICwgbV92aWV3Qm94KHRoaXMsIFNWR05hbWVzOjp2aWV3Qm94QXR0cikKLSAgICAsIG1fcHJl
c2VydmVBc3BlY3RSYXRpbyh0aGlzLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIp
CisgICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQp
CisgICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX3BhdHRlcm5Vbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZ
UEVfT0JKRUNUQk9VTkRJTkdCT1gpCisgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQorICAgICwgbV9wYXR0ZXJuVHJh
bnNmb3JtKFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9y
bUF0dHIpKQogewogfQogCkBAIC0xMzgsNiArMTM0LDQ4IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICAgICAgbV9yZXNvdXJjZS0+aW52YWxpZGF0ZSgpOwog
fQogCit2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKKyAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsKKyAgICAgICAgc3luY2hyb25p
emVQYXR0ZXJuQ29udGVudFVuaXRzKCk7CisgICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRyYW5z
Zm9ybSgpOworICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgc3luY2hyb25pemVZKCk7
CisgICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKKyAgICAgICAgc3luY2hyb25pemVIZWlnaHQo
KTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CisgICAg
ICAgIHN5bmNocm9uaXplVmlld0JveCgpOworICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNw
ZWN0UmF0aW8oKTsKKyAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIp
CisgICAgICAgIHN5bmNocm9uaXplUGF0dGVyblVuaXRzKCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyKQorICAgICAgICBzeW5jaHJv
bml6ZVBhdHRlcm5Db250ZW50VW5pdHMoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpCisgICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRy
YW5zZm9ybSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAg
ICAgICAgc3luY2hyb25pemVYKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7CisgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAgIHN5bmNo
cm9uaXplSGVpZ2h0KCk7CisgICAgZWxzZSBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgIGVsc2UgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgc3luY2hyb25pemVWaWV3Qm94KCk7
CisgICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgIH0gZWxzZSBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAg
c3luY2hyb25pemVIcmVmKCk7Cit9CisKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBh
ZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hh
bmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZp
c2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDMxICs1MiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNo
YW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRl
ckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZShjb25zdCBSZW5k
ZXJPYmplY3QqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcs
IFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0
ZXJuVGFnU3RyaW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBT
VkdOYW1lczo6cGF0dGVyblRhZ1N0cmluZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZH
TGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcsIFNWR05h
bWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05h
bWVzOjpwYXR0ZXJuVGFnU3RyaW5nLCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0clN0cmluZywg
aW50LCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRhZ1N0
cmluZywgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyU3RyaW5nLCBpbnQsIFBhdHRl
cm5Db250ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5U
YWdTdHJpbmcsIFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0clN0cmluZywgU1ZHVHJhbnNm
b3JtTGlzdCwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRy
LCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6
d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUWShTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIFNW
R0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VFkoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBpbnQsIFBh
dHRlcm5Vbml0cywgcGF0dGVyblVuaXRzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIs
IGludCwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBh
dHRlcm5UcmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0KiwgUGF0dGVyblRyYW5zZm9ybSwg
cGF0dGVyblRyYW5zZm9ybSkKIAogICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdVUklS
ZWZlcmVuY2VJZGVudGlmaWVyLCBYTGlua05hbWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBI
cmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1BhdHRlcm5F
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQogCiAgICAg
ICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKIAogICAgICAgICAvLyBTVkdQYXR0ZXJuRWxlbWVudAotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R0ZpdFRvVmlld0JveElkZW50aWZpZXIsIFNWR05hbWVzOjp2aWV3Qm94QXR0clN0cmluZywgRmxv
YXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXIsIFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0clN0cmluZywgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyLCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKICAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuPiBtX3Jlc291cmNlOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvYykKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBt
X2N4KHRoaXMsIFNWR05hbWVzOjpjeEF0dHIsIExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0gICAg
LCBtX2N5KHRoaXMsIFNWR05hbWVzOjpjeUF0dHIsIExlbmd0aE1vZGVIZWlnaHQsICI1MCUiKQot
ICAgICwgbV9yKHRoaXMsIFNWR05hbWVzOjpyQXR0ciwgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIikK
LSAgICAsIG1fZngodGhpcywgU1ZHTmFtZXM6OmZ4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAg
ICwgbV9meSh0aGlzLCBTVkdOYW1lczo6ZnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwg
bV9jeChMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQorICAgICwgbV9jeShMZW5ndGhNb2RlSGVpZ2h0
LCAiNTAlIikKKyAgICAsIG1fcihMZW5ndGhNb2RlT3RoZXIsICI1MCUiKQorICAgICwgbV9meChM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2Z5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgLy8g
U3BlYzogSWYgdGhlIGN4L2N5L3IgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZl
Y3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmllZC4KIH0KQEAgLTg2LDYg
Kzg2LDMxIEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWIKICAgICAg
ICAgbV9yZXNvdXJjZS0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKK3sKKyAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgc3luY2hy
b25pemVDeCgpOworICAgICAgICBzeW5jaHJvbml6ZUN5KCk7CisgICAgICAgIHN5bmNocm9uaXpl
RngoKTsKKyAgICAgICAgc3luY2hyb25pemVGeSgpOworICAgICAgICBzeW5jaHJvbml6ZVIoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
Y3hBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUN4KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmN5QXR0cikKKyAgICAgICAgc3luY2hyb25pemVDeSgpOworICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpmeEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplRngo
KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnlBdHRyKQorICAgICAgICBz
eW5jaHJvbml6ZUZ5KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRy
KQorICAgICAgICBzeW5jaHJvbml6ZVIoKTsKK30KKwogdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6OmJ1aWxkR3JhZGllbnQoKSBjb25zdAogewogICAgIFJhZGlhbEdyYWRpZW50QXR0cmli
dXRlcyBhdHRyaWJ1dGVzID0gY29sbGVjdEdyYWRpZW50UHJvcGVydGllcygpOwpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KCkgY29u
c3Q7CkBAIC00NCwxMSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSYWRp
YWxHcmFkaWVudEF0dHJpYnV0ZXMgY29sbGVjdEdyYWRpZW50UHJvcGVydGllcygpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3RyaW5n
LCBTVkdOYW1lczo6Y3hBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEN4LCBjeCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6Y3lBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3Ry
aW5nLCBTVkdOYW1lczo6ckF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgUiwgcikKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6ZnhBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEZ4LCBmeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3Ry
aW5nLCBTVkdOYW1lczo6ZnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEZ5LCBmeSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05h
bWVzOjpjeEF0dHIsIFNWR0xlbmd0aCwgQ3gsIGN4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgU1ZH
TGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFNWR0xlbmd0aCwgUiwgcikKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQs
IFNWR05hbWVzOjpmeEF0dHIsIFNWR0xlbmd0aCwgRngsIGZ4KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRZKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0
ciwgU1ZHTGVuZ3RoLCBGeSwgZnkpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMiBAQCBT
VkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygp
CiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCi0gICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0g
ICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwg
bV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCi0gICAg
LCBtX2hlaWdodCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkK
LSAgICAsIG1fcngodGhpcywgU1ZHTmFtZXM6OnJ4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAg
ICwgbV9yeSh0aGlzLCBTVkdOYW1lczo6cnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwg
bV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCisgICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCkK
KyAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3J4KExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAtOTksNiArOTgs
MzcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICBy
ZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAordm9pZCBTVkdSZWN0RWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sK
KyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBz
eW5jaHJvbml6ZVgoKTsKKyAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgIHN5bmNocm9u
aXplV2lkdGgoKTsKKyAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKKyAgICAgICAgc3luY2hy
b25pemVSeCgpOworICAgICAgICBzeW5jaHJvbml6ZVJ5KCk7CisgICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgc3luY2hyb25pemVY
KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQorICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhB
dHRyKQorICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Cisg
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKKyAgICAgICAgc3luY2hy
b25pemVSeCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCisg
ICAgICAgIHN5bmNocm9uaXplUnkoKTsKKyAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Cit9CisKIFBhdGggU1ZHUmVjdEVsZW1lbnQ6
OnRvUGF0aERhdGEoKSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZWN0KHgoKS52YWx1ZSh0aGlz
KSwgeSgpLnZhbHVlKHRoaXMpLCB3aWR0aCgpLnZhbHVlKHRoaXMpLCBoZWlnaHQoKS52YWx1ZSh0
aGlzKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29y
ZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0
dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OwogCkBAIC00OCwxNyArNDksMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBj
b25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJlY3RUYWdTdHJpbmcsIFNWR05hbWVzOjp4
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyZWN0VGFnU3RyaW5nLCBTVkdO
YW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cmVjdFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TmFtZXM6OnJlY3RUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIEhlaWdodCwgaGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyZWN0VGFnU3RyaW5nLCBTVkdOYW1lczo6cnhB
dHRyU3RyaW5nLCBTVkdMZW5ndGgsIFJ4LCByeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cmVjdFRhZ1N0cmluZywgU1ZH
TmFtZXM6OnJ5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBSeSwgcnkpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgU1ZHTGVu
Z3RoLCBYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1JlY3RFbGVt
ZW50LCBTVkdOYW1lczo6eUF0dHIsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgU1ZH
TGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFko
U1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBTVkdMZW5ndGgsIEhlaWdodCwg
aGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1JlY3RFbGVtZW50
LCBTVkdOYW1lczo6cnhBdHRyLCBTVkdMZW5ndGgsIFJ4LCByeCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJ5QXR0ciwgU1ZHTGVu
Z3RoLCBSeSwgcnkpCiAKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyU3RyaW5nLCBib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMyAr
NjMsMTAgQEAgU1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaQogICAgICwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQog
ICAgICwgU1ZHWm9vbUFuZFBhbigpCi0gICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBM
ZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhN
b2RlSGVpZ2h0KQotICAgICwgbV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5n
dGhNb2RlV2lkdGgsICIxMDAlIikKLSAgICAsIG1faGVpZ2h0KHRoaXMsIFNWR05hbWVzOjpoZWln
aHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpIAotICAgICwgbV9leHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgZmFsc2UpCi0gICAgLCBtX3ZpZXdCb3godGhpcywgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKQot
ICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0cikKKyAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3koTGVuZ3Ro
TW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAg
LCBtX2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpIAogICAgICwgbV91c2VDdXJyZW50
VmlldyhmYWxzZSkKICAgICAsIG1fdGltZUNvbnRhaW5lcihTTUlMVGltZUNvbnRhaW5lcjo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9zY2FsZSgxKQpAQCAtMzEyLDYgKzMwOSwzNyBAQCB2b2lkIFNW
R1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoCiAgICAgICAgIHJlbmRlcmVyKCktPnNl
dE5lZWRzTGF5b3V0KHRydWUpOwogfQogCit2b2lkIFNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgc3lu
Y2hyb25pemVZKCk7CisgICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKKyAgICAgICAgc3luY2hy
b25pemVIZWlnaHQoKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7CisgICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOworICAgICAgICBzeW5jaHJvbml6
ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplWCgpOwor
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKKyAgICAgICAgc3luY2hy
b25pemVZKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikK
KyAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpoZWlnaHRBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOworICAgIGVs
c2UgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
KyAgICBlbHNlIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOworICAgICAgICBzeW5jaHJvbml6ZVBy
ZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICB9Cit9CisKIHVuc2lnbmVkIFNWR1NWR0VsZW1lbnQ6
OnN1c3BlbmRSZWRyYXcodW5zaWduZWQgLyogbWF4V2FpdE1pbGxpc2Vjb25kcyAqLykKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IG1lIChzZWUgYnVnIDExMjc1KQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdmlld0JveFRvVmlld1RyYW5zZm9ybShm
bG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCkBAIC0xMzQsMTkgKzEz
NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxh
dGl2ZVZhbHVlcygpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpzdmdUYWdTdHJpbmcs
IFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnN2Z1RhZ1N0
cmluZywgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6c3Zn
VGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFdpZHRoLCB3
aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1l
bnQsIFNWR05hbWVzOjpzdmdUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp5
QXR0ciwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFNWR0xlbmd0aCwgV2lkdGgsIHdp
ZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1NWR0VsZW1lbnQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogCiAgICAgICAg
IC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUWShTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCiAKICAgICAgICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdGaXRUb1ZpZXdCb3hJZGVu
dGlmaWVyLCBTVkdOYW1lczo6dmlld0JveEF0dHJTdHJpbmcsIEZsb2F0UmVjdCwgVmlld0JveCwg
dmlld0JveCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0Vs
ZW1lbnQsIFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXIsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0clN0cmluZywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWShTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIEZsb2F0UmVjdCwgVmll
d0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdTVkdF
bGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAgCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw2IEBAIFNWR1NjcmlwdEVs
ZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQoY29uc3QKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwg
ZG9jKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKQotICAgICwgbV9ocmVmKHRoaXMsIFhMaW5rTmFtZXM6OmhyZWZBdHRyKSAKLSAg
ICAsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzLCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGZhbHNlKQogICAgICwgbV9kYXRhKHRoaXMsIHRoaXMpCiB7
CiAgICAgbV9kYXRhLnNldENyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpOwpAQCAtODYs
NiArODQsMjIgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAg
IH0KIH0KIAordm9pZCBTVkdTY3JpcHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
KyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CisgICAgICAg
IHN5bmNocm9uaXplSHJlZigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQor
ICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKKyAgICBlbHNl
IGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAg
ICBzeW5jaHJvbml6ZUhyZWYoKTsKK30KKwogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29y
ZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBO
b2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSop
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAK
QEAgLTcxLDEyICs3MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1NjcmlwdEVsZW1lbnQsIFNWR1VSSVJlZmVyZW5jZUlkZW50aWZpZXIsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyU3RyaW5nLCBTdHJpbmcsIEhyZWYsIGhyZWYpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHU2NyaXB0RWxlbWVudCwgWExpbmtOYW1lczo6aHJl
ZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKIAogICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdT
Y3JpcHRFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHU2NyaXB0
RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgU2NyaXB0RWxlbWVudERhdGEgbV9kYXRhOwpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9w
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFn
TmFtZSwgZG9jKQotICAgICwgbV9vZmZzZXQodGhpcywgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIDAu
MGYpCisgICAgLCBtX29mZnNldCgwLjBmKQogewogfQogCkBAIC01NSw2ICs1NSwxNCBAQCB2b2lk
IFNWR1N0b3BFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR1N0b3BFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQor
eworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwor
CisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om9mZnNldEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7Cit9CisKIFJlbmRlck9i
amVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFkaWVu
dFN0b3AodGhpcyk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysg
V2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR1N0b3BFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdTdG9wRWxlbWVu
dCgpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dy
YWRpZW50U3RvcCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMzksNyArNDEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU3RvcEVsZW1lbnQsIFNWR05hbWVzOjpzdG9wVGFn
U3RyaW5nLCBTVkdOYW1lczo6b2Zmc2V0QXR0clN0cmluZywgZmxvYXQsIE9mZnNldCwgb2Zmc2V0
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1N0b3BFbGVtZW50LCBTVkdO
YW1lczo6b2Zmc2V0QXR0ciwgZmxvYXQsIE9mZnNldCwgb2Zmc2V0KQogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCShyZXZpc2lv
biA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMzIsNyArMzIsNiBAQCBTVkdTd2l0Y2hFbGVtZW50OjpTVkdTd2l0Y2hFbGVtZW50
KGNvbnN0CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBmYWxz
ZSkKIHsKIH0KIApAQCAtNTgsOCArNTcsMTQgQEAgUmVuZGVyT2JqZWN0KiBTVkdTd2l0Y2hFbGVt
ZW50OjpjcmVhdGVSZQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyKHRoaXMpOwogfQogCit2b2lkIFNWR1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwor
CisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwogfQogCi0vLyB2aW06dHM9NDpub2V0Ci0jZW5k
aWYgLy8gRU5BQkxFKFNWRykKK30KIAorI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
U3dpdGNoRWxlbWVudC5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Tm9kZSopIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1N3aXRjaEVsZW1lbnQsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBi
b29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWShTVkdTd2l0Y2hFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2Vi
Q29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zMiw5ICsz
Miw2IEBAIFNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1lbnQoY29uc3QKICAgICAsIFNW
R0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAs
IFNWR0ZpdFRvVmlld0JveCgpCi0gICAgLCBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhp
cywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBmYWxzZSkKLSAgICAs
IG1fdmlld0JveCh0aGlzLCBTVkdOYW1lczo6dmlld0JveEF0dHIpCi0gICAgLCBtX3ByZXNlcnZl
QXNwZWN0UmF0aW8odGhpcywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKQogewog
fQogCkBAIC01NCw4ICs1MSwzMSBAQCB2b2lkIFNWR1N5bWJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmliCiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKK3ZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7CisgICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgICAgICBz
eW5jaHJvbml6ZVZpZXdCb3goKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7CisgICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOworICAgICAgICBzeW5j
aHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpCisg
ICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94QXR0cikKKyAgICAgICAgc3luY2hyb25pemVWaWV3
Qm94KCk7CisgICAgZWxzZSBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOworICAgIGVsc2UgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgc3luY2hyb25pemVWaWV3Qm94KCk7CisgICAgICAg
IHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgIH0gCiB9CiAKLS8vIHZpbTp0
cz00Om5vZXQKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorfQogCisjZW5kaWYgLy8gRU5BQkxFKFNW
RykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29y
ZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNyArMzgsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdTeW1ib2xFbGVtZW50
KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1N5bWJvbEVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRJZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWShTVkdTeW1ib2xFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCiAgCiAgICAgICAgIC8vIFNWR0ZpdFRvVmlld0JveAotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU3ltYm9sRWxlbWVudCwgU1ZHRml0VG9W
aWV3Qm94SWRlbnRpZmllciwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyU3RyaW5nLCBGbG9hdFJlY3Qs
IFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdTeW1ib2xFbGVtZW50LCBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVyLCBTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHJTdHJpbmcsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0
ciwgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2Vy
dmVBc3BlY3RSYXRpbykgCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xOSw2ICsxOSw3IEBACiAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1RSZWZF
bGVtZW50LmgiCiAKQEAgLTMzLDcgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHVFJl
ZkVsZW1lbnQ6OlNWR1RSZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRv
YykKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBtX2hyZWYodGhpcywgWExpbmtOYW1l
czo6aHJlZkF0dHIpCiB7CiB9CiAKQEAgLTcyLDYgKzcyLDE0IEBAIHZvaWQgU1ZHVFJlZkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CiB9CiAKK3ZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKK30KKwogYm9vbCBTVkdUUmVmRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKIHsKICAg
ICBpZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBjaGlsZC0+aGFzVGFnTmFtZShTVkdOYW1lczo6
dHNwYW5UYWcpIHx8CkBAIC04Nyw2ICs5NSw0IEBAIFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1l
bnQ6OmNyZWF0ZVJlbmQKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKLQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25z
dDsKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHVw
ZGF0ZVJlZmVyZW5jZWRUZXh0KCk7CiAKICAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUUmVmRWxlbWVudCwgU1ZHVVJJ
UmVmZXJlbmNlSWRlbnRpZmllciwgWExpbmtOYW1lczo6aHJlZkF0dHJTdHJpbmcsIFN0cmluZywg
SHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdUUmVmRWxl
bWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5jcHAJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTYgKzQzLDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2hhciBTVkdUZXh0Q29udGVudEVsZW1lbnRJZGVudGlmaWVyW10gPSAi
U1ZHVGV4dENvbnRlbnRFbGVtZW50IjsKLQogU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0
Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZHVGVzdHMo
KQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKQotICAgICwgbV90ZXh0TGVuZ3RoKHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwg
TGVuZ3RoTW9kZU90aGVyKQotICAgICwgbV9sZW5ndGhBZGp1c3QodGhpcywgU1ZHTmFtZXM6Omxl
bmd0aEFkanVzdEF0dHIsIExFTkdUSEFESlVTVF9TUEFDSU5HKQotICAgICwgbV9leHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0ciwgZmFsc2UpCisgICAgLCBtX3RleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKQorICAgICwg
bV9sZW5ndGhBZGp1c3QoTEVOR1RIQURKVVNUX1NQQUNJTkcpCiB7CiB9CiAKQEAgLTUxNyw2ICs1
MTQsMjUgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgIH0K
IH0KIAordm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSkgeworICAgICAgICBzeW5jaHJvbml6ZUxlbmd0aEFkanVzdCgpOworICAgICAgICBzeW5j
aHJvbml6ZVRleHRMZW5ndGgoKTsKKyAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCisgICAgICAgIHN5bmNocm9uaXplTGVuZ3Ro
QWRqdXN0KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhB
dHRyKQorICAgICAgICBzeW5jaHJvbml6ZVRleHRMZW5ndGgoKTsKKyAgICBlbHNlIGlmIChTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Cit9CisKIGJvb2wg
U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewogICAgIHJldHVybiAoYXR0ck5hbWUubWF0Y2hlcyhTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0cikgfHwKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5o
CShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGV4dGVybiBjaGFyIFNWR1RleHRDb250ZW50RWxlbWVudElkZW50aWZpZXJbXTsKLQog
ICAgIGNsYXNzIFNWR0xlbmd0aDsKIAogICAgIGNsYXNzIFNWR1RleHRDb250ZW50RWxlbWVudCA6
IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LApAQCAtNjEsMTcgKzU5LDE2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZWxlY3RTdWJTdHJpbmcodW5zaWduZWQgY2hhcm51bSwg
dW5zaWduZWQgbmNoYXJzLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
ICAgICAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdU
ZXh0Q29udGVudEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudElkZW50aWZpZXIsIFNWR05h
bWVzOjp0ZXh0TGVuZ3RoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVu
Z3RoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRl
bnRFbGVtZW50LCBTVkdUZXh0Q29udGVudEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6bGVu
Z3RoQWRqdXN0QXR0clN0cmluZywgaW50LCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNW
R05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgU1ZHTGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3Ro
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1RleHRDb250ZW50RWxlbWVu
dCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhB
ZGp1c3QpCiAKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0clN0cmluZywgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpIAor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1RleHRDb250ZW50RWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lv
biA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTVkdUZXh0RWxlbWVudDo6
U1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwg
U1ZHVHJhbnNmb3JtYWJsZSgpCi0gICAgLCBtX3RyYW5zZm9ybSh0aGlzLCBTVkdOYW1lczo6dHJh
bnNmb3JtQXR0ciwgU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1B
dHRyKSkKKyAgICAsIG1fdHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZShTVkdOYW1l
czo6dHJhbnNmb3JtQXR0cikpCiB7CiB9CiAKQEAgLTEyMSw2ICsxMjEsMTQgQEAgdm9pZCBTVkdU
ZXh0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICByZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKIH0KIAordm9pZCBTVkdUZXh0RWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR1RyYW5zZm9ybWFibGU6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOworfQorCiB2
b2lkIFNWR1RleHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIs
IE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVs
dGEpCiB7CiAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRFbGVtZW50LCBTVkdOYW1lczo6dGV4dFRh
Z1N0cmluZywgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHJTdHJpbmcsIFNWR1RyYW5zZm9ybUxpc3Qs
IFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR1RleHRFbGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgU1ZHVHJhbnNmb3JtTGlz
dCosIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQogICAgICAgIAogICAgICAgIC8vIFVzZWQgYnkgPGFu
aW1hdGVNb3Rpb24+CiAgICAgICAgT3duUHRyPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBtX3N1cHBs
ZW1lbnRhbFRyYW5zZm9ybTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTVkdUZXh0
UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHVGV4dENvbnRlbnRFbGVtZW50KHRhZ05hbWUs
IGRvYykKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBtX3N0YXJ0T2Zmc2V0KHRoaXMs
IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIExlbmd0aE1vZGVPdGhlcikKLSAgICAsIG1fbWV0
aG9kKHRoaXMsIFNWR05hbWVzOjptZXRob2RBdHRyLCBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9B
TElHTikKLSAgICAsIG1fc3BhY2luZyh0aGlzLCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNWR19U
RVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCkKLSAgICAsIG1faHJlZih0aGlzLCBYTGlua05hbWVz
OjpocmVmQXR0cikKKyAgICAsIG1fc3RhcnRPZmZzZXQoTGVuZ3RoTW9kZU90aGVyKQorICAgICwg
bV9tZXRob2QoU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04pCisgICAgLCBtX3NwYWNpbmco
U1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUKQogewogfQogCkBAIC03MCw2ICs2OSwyOCBA
QCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyCiAgICAgfQogfQogCit2
b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKKyAgICAgICAgc3luY2hyb25pemVTdGFydE9mZnNldCgpOworICAgICAgICBzeW5jaHJvbml6
ZU1ldGhvZCgpOworICAgICAgICBzeW5jaHJvbml6ZVNwYWNpbmcoKTsKKyAgICAgICAgc3luY2hy
b25pemVIcmVmKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikKKyAgICAgICAgc3luY2hyb25pemVTdGFydE9m
ZnNldCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptZXRob2RBdHRyKQor
ICAgICAgICBzeW5jaHJvbml6ZU1ldGhvZCgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGFjaW5nQXR0cikKKyAgICAgICAgc3luY2hyb25pemVTcGFjaW5nKCk7CisgICAg
ZWxzZSBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAg
ICAgICAgc3luY2hyb25pemVIcmVmKCk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHVGV4dFBhdGhF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVGV4dFBhdGgodGhpcyk7CkBAIC0x
MDIsNSArMTIzLDMgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6Omluc2VydGVkSW50b0RvYwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE4ICs1NywxOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICAgICAgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05h
bWVzOjp0ZXh0UGF0aFRhZ1N0cmluZywgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0clN0cmluZywg
U1ZHTGVuZ3RoLCBTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjp0ZXh0UGF0
aFRhZ1N0cmluZywgU1ZHTmFtZXM6Om1ldGhvZEF0dHJTdHJpbmcsIGludCwgTWV0aG9kLCBtZXRo
b2QpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UGF0aEVs
ZW1lbnQsIFNWR05hbWVzOjp0ZXh0UGF0aFRhZ1N0cmluZywgU1ZHTmFtZXM6OnNwYWNpbmdBdHRy
U3RyaW5nLCBpbnQsIFNwYWNpbmcsIHNwYWNpbmcpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVFkoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBT
VkdMZW5ndGgsIFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUWShTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjptZXRob2RBdHRyLCBp
bnQsIE1ldGhvZCwgbWV0aG9kKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBpbnQsIFNwYWNpbmcsIHNw
YWNpbmcpCiAgICAgCiAgICAgICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdVUklSZWZlcmVu
Y2VJZGVudGlmaWVyLCBYTGlua05hbWVzOjpocmVmQXR0clN0cmluZywgU3RyaW5nLCBIcmVmLCBo
cmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1RleHRQYXRoRWxlbWVu
dCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2hhciBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SWRl
bnRpZmllcltdID0gIlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQiOwotCiBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQo
dGFnTmFtZSwgZG9jKQotICAgICwgbV94KHRoaXMsIFNWR05hbWVzOjp4QXR0ciwgU1ZHTGVuZ3Ro
TGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp4QXR0cikpCi0gICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6
OnlBdHRyLCBTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnlBdHRyKSkKLSAgICAsIG1f
ZHgodGhpcywgU1ZHTmFtZXM6OmR4QXR0ciwgU1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKFNWR05hbWVz
OjpkeEF0dHIpKQotICAgICwgbV9keSh0aGlzLCBTVkdOYW1lczo6ZHlBdHRyLCBTVkdMZW5ndGhM
aXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmR5QXR0cikpCi0gICAgLCBtX3JvdGF0ZSh0aGlzLCBTVkdO
YW1lczo6cm90YXRlQXR0ciwgU1ZHTnVtYmVyTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpyb3RhdGVB
dHRyKSkKKyAgICAsIG1feChTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnhBdHRyKSkK
KyAgICAsIG1feShTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnlBdHRyKSkKKyAgICAs
IG1fZHgoU1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpkeEF0dHIpKQorICAgICwgbV9k
eShTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmR5QXR0cikpCisgICAgLCBtX3JvdGF0
ZShTVkdOdW1iZXJMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpKQogewogfQogCkBA
IC03NCw2ICs3MiwzMSBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJp
CiAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCit2b2lkIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7CisgICAgICAgIHN5bmNocm9uaXplWCgpOworICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAg
ICAgICAgc3luY2hyb25pemVEeCgpOworICAgICAgICBzeW5jaHJvbml6ZUR5KCk7CisgICAgICAg
IHN5bmNocm9uaXplUm90YXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAg
ICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCisgICAgICAgIHN5bmNocm9u
aXplWSgpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIpCisgICAg
ICAgIHN5bmNocm9uaXplRHgoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZHlBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZUR5KCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCisgICAgICAgIHN5bmNocm9uaXplUm90YXRlKCk7Cit9
CisKIGJvb2wgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICByZXR1cm4gKGF0dHJOYW1lLm1hdGNo
ZXMoU1ZHTmFtZXM6OnhBdHRyKSB8fApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgZXh0ZXJuIGNoYXIgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dElkZW50aWZpZXJbXTsKLQogICAgIGNsYXNzIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgOiBw
dWJsaWMgU1ZHVGV4dENvbnRlbnRFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBA
IC0zNywxNSArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAKICAgICAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SWRl
bnRpZmllciwgU1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGhMaXN0LCBYLCB4KQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjp5QXR0
clN0cmluZywgU1ZHTGVuZ3RoTGlzdCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6ZHhBdHRyU3RyaW5nLCBTVkdMZW5ndGhMaXN0
LCBEeCwgZHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SWRlbnRpZmllciwg
U1ZHTmFtZXM6OmR5QXR0clN0cmluZywgU1ZHTGVuZ3RoTGlzdCwgRHksIGR5KQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpyb3RhdGVBdHRy
U3RyaW5nLCBTVkdOdW1iZXJMaXN0LCBSb3RhdGUsIHJvdGF0ZSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6eEF0
dHIsIFNWR0xlbmd0aExpc3QqLCBYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3Ro
TGlzdCosIFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgU1ZHTGVuZ3RoTGlzdCosIER4LCBk
eCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBTVkdMZW5ndGhMaXN0KiwgRHksIGR5KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R05hbWVzOjpyb3RhdGVBdHRyLCBTVkdOdW1iZXJMaXN0KiwgUm90YXRlLCByb3RhdGUpCiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDEyICs2MCwxMCBAQCBTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNv
bnN0IFF1YWxpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQotICAgICwgbV94KHRoaXMsIFNW
R05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95KHRoaXMsIFNWR05hbWVz
Ojp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fd2lkdGgodGhpcywgU1ZHTmFtZXM6
OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9oZWlnaHQodGhpcywgU1ZHTmFt
ZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX2hyZWYodGhpcywgWExp
bmtOYW1lczo6aHJlZkF0dHIpCi0gICAgLCBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhp
cywgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBmYWxzZSkKKyAgICAs
IG1feChMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAs
IG1fd2lkdGgoTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdo
dCkKICAgICAsIG1faXNQZW5kaW5nUmVzb3VyY2UoZmFsc2UpCiAgICAgLCBtX25lZWRzU2hhZG93
VHJlZVJlY3JlYXRpb24oZmFsc2UpCiB7CkBAIC0xNzYsNiArMTc0LDM0IEBAIHZvaWQgU1ZHVXNl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKICAgICB9CiB9CiAKK3ZvaWQgU1ZHVXNlRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
K3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAg
ICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgIHN5bmNo
cm9uaXplV2lkdGgoKTsKKyAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKKyAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CisgICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp4QXR0cikKKyAgICAgICAgc3luY2hyb25pemVYKCk7CisgICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQorICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQorICAgICAgICBzeW5jaHJv
bml6ZVdpZHRoKCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCisgICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7CisgICAgZWxzZSBpZiAoU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAg
IHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOworICAgIGVsc2UgaWYgKFNW
R1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOworfQorCiBzdGF0aWMgdm9pZCB1cGRhdGVDb250YWluZXJTaXplKFNWR1Vz
ZUVsZW1lbnQqIHVzZUVsZW1lbnQsIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2Up
CiB7CiAgICAgLy8gRGVwdGgtZmlyc3QgdXNlZCB0byB3cml0ZSB0aGUgbWV0aG9kIGluIGVhcmx5
IGV4aXQgc3R5bGUsIG5vIHBhcnRpY3VsYXIgb3RoZXIgcmVhc29uLgpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxl
Q2hhbmdlID0gTm9DaGFuZ2UpOwogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAtNzQsMTggKzc1LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnVzZVRhZ1N0cmluZywgU1ZHTmFt
ZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6dXNlVGFnU3RyaW5nLCBT
VkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp1c2VUYWdTdHJp
bmcsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZH
TmFtZXM6OnVzZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcsIFNWR0xlbmd0
aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
VXNlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBT
VkdMZW5ndGgsIFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHVXNl
RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAKICAgICAgICAgLy8gU1ZH
VVJJUmVmZXJlbmNlCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdV
c2VFbGVtZW50LCBTVkdVUklSZWZlcmVuY2VJZGVudGlmaWVyLCBYTGlua05hbWVzOjpocmVmQXR0
clN0cmluZywgU3RyaW5nLCBIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR1VzZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYs
IGhyZWYpCiAKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJp
bmcsIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIElu
c3RhbmNlIHRyZWUgaGFuZGxpbmcKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9u
IDUzODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw5ICszOCw2IEBAIFNWR1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBR
dWEKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHRml0VG9W
aWV3Qm94KCkKICAgICAsIFNWR1pvb21BbmRQYW4oKQotICAgICwgbV9leHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
ZmFsc2UpCi0gICAgLCBtX3ZpZXdCb3godGhpcywgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKQotICAg
ICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJh
dGlvQXR0cikKIHsKIH0KIApAQCAtNzAsNiArNjcsMjUgQEAgdm9pZCBTVkdWaWV3RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dAogICAgIH0KIH0KIAordm9pZCBTVkdWaWV3RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBT
VkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKKworICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOworICAgICAgICBzeW5jaHJvbml6ZVZpZXdCb3goKTsKKyAgICAg
ICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOworICAgIGVsc2UgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKKyAgICAgICAgc3luY2hyb25pemVWaWV3Qm94KCk7CisgICAgICAgIHN5bmNo
cm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgIH0KK30KKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkocmV2aXNpb24gNTM4NjkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHVmlld0VsZW1lbnQo
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICBTVkdTdHJpbmdMaXN0KiB2aWV3VGFyZ2V0KCkg
Y29uc3Q7CiAKQEAgLTQ2LDEzICs0NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdWaWV3RWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHJTdHJp
bmcsIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgCiAgICAgICAgIC8vIFNWR0ZpdFRvVmlld0Jv
eAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVmlld0VsZW1lbnQs
IFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXIsIFNWR05hbWVzOjp2aWV3Qm94QXR0clN0cmluZywg
RmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHVmlld0VsZW1lbnQsIFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXIsIFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0clN0cmluZywgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyLCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJh
dGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykKICAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHU3RyaW5nTGlz
dD4gbV92aWV3VGFyZ2V0OwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCShyZXZpc2lvbiA1
Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsOCArMzUsNiBAQCBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMoY29uc3QgU1ZHU1ZHRWxlCiAg
ICAgOiBTVkdGaXRUb1ZpZXdCb3goKQogICAgICwgU1ZHWm9vbUFuZFBhbigpCiAgICAgLCBtX2Nv
bnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQotICAgICwgbV92aWV3Qm94KHRoaXMsIFNWR05h
bWVzOjp2aWV3Qm94QXR0cikKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyh0aGlzLCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpCiAgICAgLCBtX3RyYW5zZm9ybShTVkdUcmFu
c2Zvcm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpKQogewogfQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdW
aWV3U3BlYy5oCShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDE0ICs1MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFN0cmluZyB2aWV3VGFyZ2V0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3VGFy
Z2V0U3RyaW5nOyB9CiAgICAgICAgIFNWR0VsZW1lbnQqIHZpZXdUYXJnZXQoKSBjb25zdDsKIAot
ICAgICAgICBjb25zdCBTVkdTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dEVsZW1lbnQ7IH0KKyAgICAgICAgU1ZHU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFNWR1NWR0VsZW1lbnQqPihtX2NvbnRl
eHRFbGVtZW50KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgU1ZHU1ZHRWxlbWVu
dCogbV9jb250ZXh0RWxlbWVudDsKIAogICAgICAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1ZpZXdTcGVjLCBTVkdGaXRUb1Zp
ZXdCb3hJZGVudGlmaWVyLCBTVkdOYW1lczo6dmlld0JveEF0dHJTdHJpbmcsIEZsb2F0UmVjdCwg
Vmlld0JveCwgdmlld0JveCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1ZpZXdTcGVjLCBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVyLCBTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHJTdHJpbmcsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkoU1ZHVmlld1NwZWMsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgRmxvYXRSZWN0
LCBWaWV3Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R1ZpZXdTcGVjLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4gbV90cmFuc2Zvcm07CiAg
ICAgICAgIFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7Cg==
</data>
<flag name="review"
          id="29904"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>